W jaki sposób procesor „wie”, co oznaczają różne polecenia?
Myślę o poleceniach na poziomie zestawu, takich jak MOV, PUSH, CALL itp.
cpu
computer-architecture
cpu-architecture
Simon Verbeke
źródło
źródło
Odpowiedzi:
Gdy komputer interpretuje instrukcje na poziomie zespołu , instrukcje te są zamieniane na ich binarne odpowiedniki do odczytania przez CPU. Gdy CPU wykonuje instrukcje, interpretuje część instrukcji kodu operacyjnego na pojedyncze „mikroprogramy”, zawierające ich ekwiwalenty mikrokodu . Tak więc wiadomo, że pełna instrukcja montażu składa się z kodu operacyjnego i wszelkich powiązanych z nim danych, jeśli jest to wymagane (np. Nazwy rejestrów, adresy pamięci).
Instrukcje mikrokodu są niezwykle niskie (a nie bardziej montażowe) i kontrolują rzeczywiste sygnały cyfrowe, które kontrolują przepływ logiki w mikroprocesorze. Na przykład jedna instrukcja mikrokodu może zaktualizować flagę rejestru kodu stanu o nową wartość lub połączyć rejestr procesora z jedną z jednostek ALU . Możliwe są bardziej złożone zadania, ale pokazuje to ogólne pojęcie o tym, do czego służy mikrokod.
Ogólny przepływ od kompilacji do wykonania jest następujący. Instrukcje montażu są złożone (zamienione na ich binarne odpowiedniki 0 i 1 lub odtąd sygnały logiczne). Te sygnały logiczne są z kolei interpretowane przez CPU i zamieniane w więcej sygnałów logicznych niskiego poziomu, które kierują przepływem CPU do wykonania określonej instrukcji. Może to zająć jeden lub więcej cykli zegara, w zależności od architektury i konstrukcji procesora (większość podręczników procesora mówi, ile cykli zajmuje wykonanie określonej instrukcji, na przykład tej ).
Wszystko to odbywa się za pomocą zaprogramowanego na stałe mikrokodu (fizycznie osadzonego w procesorze w jakiejś pamięci ROM , ustawionego podczas produkcji), który kieruje przepływ przez rzeczywiste bramki logiczne niskiego poziomu . Zapewnia to interfejs między abstrakcyjnymi instrukcjami montażu a fizyczną logiką elektryczną w procesorze.
Podsumowując, instrukcje procesora są składane i ładowane przez procesor. Następnie procesor użyje tych instrukcji, aby wyszukać mikroprogram (w postaci mikrokodu) odpowiadający tej konkretnej instrukcji, czyli to, co „faktycznie” wykonuje instrukcję. Po wykonaniu mikrokodów dla konkretnej instrukcji (które mogą zająć jeden lub więcej cykli zegara), procesor wykonuje mikrokod w celu pobrania następnej instrukcji i cykl się powtarza.
źródło
Procesor tak naprawdę „nie wie”, jakie są polecenia. Polecenia są po prostu wzorcami binarnymi, które powodują, że procesor robi to, co interpretujemy.
Na przykład operacja ADD-R1-do-R2 spowoduje, że wartości rejestrów 1 i 2 osiągną ALU (jednostkę arytmetyczną i logiczną), sprawi, że ALU użyje wyjścia sumatora zamiast różnych innych rzeczy i spowoduje wyjście ALU w celu zastąpienia wartości w rejestrze 2. Istnieją proste układy logiczne do osiągnięcia wszystkich tych rzeczy ( multiplekser , sumator , licznik , ...), chociaż prawdziwe procesory używają bardzo skomplikowanych optymalizacji.
To trochę tak, jakbyś pytał, skąd samochód wie, żeby zwolnić po naciśnięciu hamulca. Samochód nie wie, pedał hamulca po prostu pośrednio kontroluje siłę docisku twardych klocków do kół.
źródło
http://en.wikipedia.org/wiki/Assembler_language
Innymi słowy, kiedy „montujesz” swój program asemblera, instrukcje takie jak
MOV AL, 61h
są konwertowane na liczby, które CPU przypisują specjalne znaczenie, a następnie działają odpowiednio.
źródło
Sugerowane czytanie:
Zapoznaj się także z notatkami z CS152: Architektura i inżynieria komputerowa na UC Berkeley, kurs, w którym studenci wdrażają procesor.
Jeśli szukasz w Google „procesora domowego”, znajdziesz wiele gadżetów.
źródło
Na skrajnie najniższym poziomie wszystko, co procesor może zrobić, to dodać. Z dodawania może odejmować, pomnażać i dzielić (ponieważ są to tylko dodawanie w inny sposób). CPU wykorzystuje to do przenoszenia danych w pamięci poprzez zastosowanie dodatków do adresów pamięci.
Pamiętaj jednak, że jest to najniższy możliwy poziom. Procesor faktycznie „rozumie” niektóre polecenia w postaci mikrokodu. Zobacz odpowiedź Przełom, jest bardzo dobrze napisana.
źródło
Odpowiedziałem na to pod adresem programmers.stackexchange.com, zobacz Jak działają komputery? gdzie krótko omówiłem wszystko, od podstaw, o tym, jak komputery podchodzą do interpretacji instrukcji do poruszających się elektronów.
źródło