Damit der BIOS-Code eine Rolle spielt, muss er vom Prozessor ausgewertet werden. Der Prozessor selbst muss jedoch arbeiten, um tatsächlich Zugriff auf den BIOS-Code zu erhalten, da die CPU nur Anweisungen ausführt, die gegeben werden, muss etwas die Anweisungen an die CPU weitergeben (da ich mir keine Möglichkeit vorstellen kann, Anweisungen einfach zu geben " Flow "vom BIOS zur CPU ohne dazwischen).
Wo sind die Anweisungen zum Laden des BIOS und zum Übergeben der Steuerung gespeichert, und wer übergibt diese Anweisungen an die CPU, damit die CPU sie ausführen kann?
computer-architecture
cpu
Dmitry
quelle
quelle
Antworten:
1. (Eine Zusammenfassung der Antwort-in-Kommentare von Jukka)
Der Startcode wird im ROM (nichtflüchtiger Speicher) unter einer festen Adresse X gespeichert.
Wenn Sie das "Reset" -Signal in der CPU aktivieren, initialisiert die CPU ihre Register auf bestimmte fest codierte Werte. Der Befehlszeiger ist eines dieser Register, die auf bestimmte fest codierte Werte initialisiert werden. Im Wesentlichen wählt der CPU-Hersteller diese fest codierte Adresse X aus. Wenn Sie also Ihre CPU zurücksetzen, wird der Befehlszeiger auf dieselbe feste Adresse X zurückgesetzt. Die CPU beginnt wie gewohnt mit der Ausführung von Befehlen: Rufen Sie den nächsten Befehl von Adresse X ab , dekodieren, ausführen usw.
Wer dann einen kompletten Computer zusammenstellt, muss sicherstellen, dass an Adresse X etwas Nützliches vorhanden ist (z. B. ein ROM-Speicherchip mit aussagekräftigem Startcode).
2. Ausarbeitung
Die CPU hat eine sehr einfache Arbeitsweise, die als FETCH-EXECUTE-Zyklus bekannt ist:
(a) FETCH : Es geht in den Speicher und bringt den Befehl, der sich an der Adresse [PC] befindet. (PC ist ein Name eines internen CPU-Registers; er enthält die Adresse des Befehls, den wir als nächstes ausführen müssen.)←
(b) Ausführen : Der PC führt die Anweisung aus, die er gerade aus dem Speicher abgerufen hat.
(c) PC PC + 1. (*) (d) Gehen Sie zurück zu (a).
Diese Fetch-Execute-Schleife wird unabhängig vom ausgeführten Programm ständig ausgeführt. Insbesondere wenn die CPU hochfährt (z. B. wenn ihre Leistung von 0 auf Vcc steigt), beginnt die CPU einfach, die obige Schleife auszuführen.
Der Anfangswert des PCs hängt von der jeweiligen CPU ab. Es kann sein, dass die CPU mit PC = 0 aufwacht, oder dass PC = 0xFFF0 (wie es bei der X86-Familie von Intel der Fall ist) oder mit einem anderen Wert PC = . Wenn Sie die Reset-Taste drücken oder das und wieder , stellt die CPU den Anfangswert des PCs wieder her und die CPU beginnt mit der Ausführung des Programms, das sich im Speicher unter der Adresse , über den Abruf -ausführen Schleife.PCinit PCinit PCinit
Jetzt muss der Computerdesigner sicherstellen, dass sich das BIOS unter der Adresse im Speicher befindet . Das BIOS befindet sich normalerweise in einem nichtflüchtigen Speicher, sodass unter dieser Adresse immer ein Programm ausgeführt werden kann, auch wenn Sie nur das Gerät aus- und wieder einschalten (dies löscht den RAM, aber nicht das BIOS. Es ist schwieriger zu löschen / ändern das BIOS, obwohl möglich und passiert, zB wenn Ihr Gerät seine "Firmware" aktualisiert).PCinit
(*) Beim Vorrücken des PCs um +1 wird davon ausgegangen , dass jeder Befehl 1 Adresse des Speicherplatzes belegt. Das ist selten der Fall. In realen Systemen können wir hier PC + 4 (wie im 32b MIPS) oder PC + x (mit was von der Anweisung selbst abhängt) wie in der X86-Familie sehen. usw.
quelle