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.
Odpowiedzi:
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!).
źródło
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.
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.
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.
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.
źródło
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ś.
źródło