Skąd pierwsze mikroprocesory znały znaczenie kodów binarnych?

0

Zadawałem sobie to pytanie od ponad roku i właśnie postanowiłem zadać pytanie tutaj. Nie wiem, czy to właściwe miejsce, czy nie.

O ile wiem mikroprocesory to zbiór tranzystorów, ale nie rozumiem niektórych rzeczy na ich temat: w jaki sposób wynalazca mikroprocesorów (a może komputerów) napisał pierwszy kod i zaprogramował swój układ scalony? Podczas tworzenia pierwszego nie było innych komputerów.

Inną rzeczą, której nie rozumiem, jest to, w jaki sposób układ scalony - zwłaszcza pierwszy układ scalony, który był właściwie zbiorem tranzystorów - wie, co oznaczają te kody? Jak IC rozumie, co zrobić, gdy instrukcja mówi 1 lub 0, a może 111011010101?

Dzięki.

bertieb
źródło
Witamy w SuperUser. To jest bardzo szerokie pytanie - na SU lubimy trzymać się konkretnych pytań, które mają konkretne odpowiedzi. Wygląda na to, że chcesz przeczytać historię komputerów. To ogromny temat! Spróbuj zacząć od przeczytania historii artykułów komputerowych na Wikipedii .
Andi Mohr,
Istnieje sprzęt, który konwertuje kody binarne na rzeczywiste instrukcje. Sprzęt, o którym mówię, jest w zasadzie ogromnym multiplekserem (zobacz, jak działa ten układ scalony). W rzeczywistości zdarza się, że właściwa instrukcja jest dekodowana, a następnie wykonywana jest operacja. „CPU” sprawia, że ​​tak się dzieje.
Ramhound,

Odpowiedzi:

0

Kiedy piszesz kod binarny, jest on zasadniczo wprowadzany sekwencyjnie do procesora, aby wykonać część x lub y lub z.

Kod binarny nie jest stały na różnych komputerach, dlatego nie możesz uruchamiać programów X-Box na PS / 3. Podobnie jak oprogramowanie, procesory są aktualizowane przy jednoczesnym zachowaniu zgodności z poprzednimi wersjami: właśnie dlatego masz intel 286/386/486 / Pentiums itp.

Nie należy zakładać, że kod binarny jest interpretowany bitowo. Na przykład jedna maszyna, na której pracowałem, miała zestaw kodów, takich jak 1ab „kopiuj rejestr od a do b”. Napisziłbyś do niej pasek rozruchowy w określonej pamięci, a następnie wykonałeś skok systemu. Wszystkie są kodami 8-bitowymi, a nie 1-bitowymi.

Teoretycznie więc kod operacyjny jest elektronicznym kodem przełączającym dla układu: otwiera i zamyka różne ścieżki, a zawartość przepływa od A do B. Inne są przerwaniami, co każe komputerowi zrobić wszystko, co jest do zrobienia (trochę jak Go!).

wendy.krieger
źródło
Dzięki za twoją odpowiedź. Czy masz na myśli, że te kody binarne również muszą być interpretowane? Więc piszemy kody w językach programowania wysokiego poziomu, a następnie te poziomy wyższe są tłumaczone na kody binarne, a kody binarne są tłumaczone na instrukcje, które mówią, kiedy i która brama powinna być otwarta dla przepływu napięcia? I jak otrzymałem z komentarza @Ramhound, istnieje ogromny multiplekser, który dostaje 01 i otwiera lub zamyka niektóre bramy! Ale nie rozumiem, w jaki sposób te układy scalone rozumieją nas, chociaż istnieją tylko niektóre tranzystory i inne rzeczy, których nie powinno być w stanie zrozumieć.
Na najbardziej podstawowym poziomie możesz wykonywać rzeczy takie jak arytmetyka za pomocą logiki binarnej (i, lub nie), a także przechowywać i przywoływać. Wszystko jest zbudowane warstwowo. Pierwszym „komputerom”, które były w zasadzie układami scalonymi, podano każdą instrukcję, jak poruszać bitami, aby wykonać najbardziej trywialne zadania. Każda kolejna generacja zawiera elementy składowe, aby umożliwić wykonywanie zadań na wyższym poziomie w oparciu o predefiniowane mniejsze zadania.
fixer1234,
0

O ile wiem Mikroprocesory to zbiór tranzystorów

Tranzystory te mogą być zorganizowane w bramki logiczne , np. NAND, NOR i bramki inwerterowe.
Bramki te można następnie wykorzystać do budowy rejestrów i obwodów logicznych.
Jednym z tych obwodów w CPU jest blok funkcjonalny zwany dekoderem instrukcji .
To ten dekoder instrukcji, który tłumaczy każdy kod maszynowy (tak zwany kod binarny) na sygnały do ​​wykonania rzeczywistego wykonania tego kodu operacyjnego.

Jak wynalazca mikroprocesorów (a może komputerów) napisał pierwszy kod i zaprogramował swój układ scalony?

Dlaczego masz pytanie dotyczące „mikroprocesorów”?
Mikroprocesory są jedynie podzbiorem kilku rodzajów cyfrowych procesorów komputerowych. Cyfrowe komputery elektroniczne istnieją od kilku dekad przed powstaniem pierwszego mikroprocesora.

Kluczem do koncepcji współczesnego komputera jest pamięć do przechowywania (a) programu w postaci kodu maszynowego i (b) danych. (Dogodnie ignoruję komputery HLL.) Najgorszym scenariuszem byłoby użycie panelu przedniego do ręcznego wprowadzenia kodu maszynowego do pamięci lub użycie zaprogramowanej pamięci, np. PROM lub EPROM.

Inną rzeczą, której nie rozumiem, jest to, w jaki sposób układ scalony (szczególnie pierwszy układ scalony, który był właściwie zbiorem tranzystorów) wie, co oznaczają te kody?

Układ scalony to po prostu „układ scalony”. Obwód ten może być przeznaczony zarówno do zastosowań analogowych, jak i cyfrowych (lub nawet sygnałów mieszanych). IC (inaczej „układ”) i mikroprocesor nie są synonimami. Mikroprocesor to cyfrowy układ scalony (aka logiczny). Ale nie każdy układ scalony jest mikroprocesorem.

Jak IC rozumie, co zrobić, gdy instrukcja mówi 1 lub 0, a może 111011010101?

Zakładając, że pytasz o procesor, to dekoder instrukcji wykonuje tę funkcję. Istnieją dwie podstawowe techniki implementacji tej funkcjonalności: użycie przewodowego lub mikroprogramowania.
Zauważ, że mikroprogramowanie nie ma nic wspólnego z mikroprocesorami. Wczesne mikroprocesory były podłączone na stałe (i nie miały mikroprogramowania). Wczesne mikroprogramowane komputery były komputerami typu mainframe, takimi jak IBM S / 360.

trociny
źródło
0

Szybka odpowiedź brzmi: projektanci procesora najpierw projektują zestaw instrukcji (znaczenie różnych kodów instrukcji, obsługiwane operandy i sposób ich określania itp.), A następnie budują procesor, łącząc bramki logiczne, tak aby zaimplementować ten zestaw instrukcji.

Gdyby podłączili go inaczej, zestaw instrukcji byłby inny.

Mikroprogramowane procesory: przynajmniej niektóre rodzaje pamięci (istnieje kilka możliwości) w ramach wzajemnych połączeń, które określają, jaki jest zestaw instrukcji. Tak więc zmieniając zawartość tej pamięci („mikrokodu”), można zmienić zestaw instrukcji. Powiedziałem „co najmniej” - może się znacznie bardziej skomplikować.

Jeśli chcesz dowiedzieć się więcej, sugeruję zacząć od środka: Naucz się języka asemblera dla niektórych maszyn. Najlepiej nie x86 / x64, ponieważ jest to bardzo skomplikowane. Wybrałbym ARM, jeśli chcesz czegoś, którego język asemblera jest stosunkowo łatwy do nauczenia, a także odpowiedni do aktualnej technologii.

Następnie, jeśli chcesz dowiedzieć się więcej, dowiedz się o obwodach logicznych: AND, OR, NOT, NAND, NOR; następnie obwody sekwencyjne, zaczynając od przerzutników itp.

Kiedy zaczniesz myśleć o tym, jak zbudować pełnoprawny procesor, a nawet coś bardzo prostego, jak PDP-8, z tych części pomyślisz: „stary, to ogromne i skomplikowane”. Cóż, jest ogromny. Ale to nie jest tak skomplikowane, jak mogłoby się początkowo wydawać. Złożoność składa się głównie z warstw: gdy zrozumiesz niską warstwę, nie musisz się już martwić o jej szczegóły, tylko o to, co robi. Widoczna jest także złożoność powtórzeń. Sumator 32-bitowy ma około 16 razy więcej bramek niż sumator 2-bitowy. Ale jeśli rozumiesz 2-bitowy sumator, możesz zrozumieć wersję 32-bitową. To tylko więcej tego, co już widziałeś.

Jamie Hanrahan
źródło