Programm zähler

Frontplatte eines IBM 701 Der Computer wurde 1952 eingeführt. Lichter in der Mitte zeigen den Inhalt verschiedener Register an. Das Anweisungszähler ist unten links.

Das Programm zähler (PC), allgemein als die genannt Anweisungszeiger (IP) in Intel x86 und Itanium Mikroprozessorenund manchmal das genannt Anweisungsadressenregister (Iar),[1] das Anweisungszähler,[2] oder nur ein Teil des Anweisungssequenzers,[3] ist ein Prozessorregister das gibt an, wo a Computer ist in seinem Programm Reihenfolge.[NB 1]

Normalerweise wird der PC nach dem Abrufen eines erhöht Anweisungund hält die Speicheradresse von ("Punkte zu ") die nächste Anweisung, die ausgeführt wird.[4][NB 2]

Prozessoren holen normalerweise Anweisungen nacheinander aus dem Speicher, aber jedoch Kontrollübertragung Anweisungen ändern die Sequenz, indem Sie einen neuen Wert in den PC platzieren. Diese beinhalten Geäst (manchmal als Sprünge genannt), Subroutine Anrufe und kehrt zurück. Eine Übertragung, die von der Wahrheit einer Behauptung abhängig ist, ermöglicht es dem Computer, unter verschiedenen Bedingungen eine andere Sequenz zu folgen.

Ein Zweig sieht vor, dass der nächste Anweisungen von anderer Stelle im Speicher abgerufen wird. Ein Unterroutine -Aufruf ist nicht nur Zweige, sondern auch den vorhergehenden Inhalt des PC irgendwo. Eine Rückgabe ruft den gespeicherten Inhalt des PC ab und legt ihn wieder in den PC, wobei die sequentielle Ausführung mit dem Anweisungen nach dem Unterroutine -Aufruf wieder aufgenommen wird.

Hardware -Implementierung

In einem einfachen Zentrale Verarbeitungseinheit (CPU), der PC ist a digitaler Zähler (Dies ist der Ursprung des Begriffs "Programmzähler"), der möglicherweise eine von mehreren Hardware ist Register. Das Anweisungszyklus[6] beginnt mit a bringen, in dem die CPU den Wert des PCs auf die platziert Adressbus um es an den Speicher zu senden. Der Speicher antwortet, indem er den Inhalt dieses Speicherorts an die Speicherstelle sendet Datenbus. (Dies ist das Computerprotokollcomputer Modell, in dem ein einzelner Speicherplatz sowohl ausführbare Anweisungen als auch normale Daten enthält.[7]) Nach dem Abruf fährt die CPU nach fort Hinrichtungeinige Maßnahmen ergreifen, die auf dem von ihnen erhaltenen Speicherinhalt basieren. Zu einem bestimmten Zeitpunkt in diesem Zyklus wird der PC so geändert, dass der nächste ausgeführte Befehl eine andere ist (normalerweise inkrementiert, sodass der nächste Befehl diejenige ist, die an der Speicheradresse unmittelbar nach dem letzten Speicherort der aktuellen Anweisung beginnt. .

Wie bei anderen Prozessorregistern kann der PC eine Bank von Binärriegel sein, die jeweils ein Bit des Werts des PCs darstellt.[8] Die Anzahl der Bits (die Breite des PC) bezieht sich auf die Prozessorarchitektur. Beispielsweise kann eine 32-Bit-CPU 32 Bit verwenden, um 2 angehen zu können32 Speichereinheiten. Bei einigen Prozessoren hängt die Breite des Programmzählers stattdessen vom adressierbaren Speicher ab. Zum Beispiel einige AVR -Controller Haben Sie einen PC, der sich nach 12 Bit umsetzt.[9]

Wenn der PC ein binärer Zähler ist, kann er erhöhen, wenn ein Impuls auf den Zähleingang angewendet wird, oder die CPU kann einen anderen Wert berechnen und ihn durch einen Impuls in den Lasteingang laden.[10]

Um den aktuellen Befehl zu identifizieren, kann der PC mit anderen Registern kombiniert werden, die a identifizieren Segment oder Seite. Dieser Ansatz ermöglicht einen PC mit weniger Bits, indem angenommen wird, dass die meisten interessierenden Speichereinheiten in der aktuellen Umgebung liegen.

Konsequenzen in der Maschinenarchitektur

Die Verwendung eines PCs, bei dem normalerweise Inkremente davon ausgegangen sind, dass ein Computer eine normalerweise lineare Folge von Anweisungen ausführt. Ein solcher PC ist zentral für die Von Neumann Architektur. So schreiben Programmierer ein sequentielles Steuerfluss Selbst für Algorithmen, die nicht sequentiell sein müssen. Das resultierende “Von Neumann EngpassFührte zu einer Erforschung des parallelen Computers,[11] einschließlich Nicht-vor-Neumann oder Datenfluss Modelle, die keinen PC verwendeten; Anstatt beispielsweise sequentielle Schritte anzugeben Funktion und der Programmierer auf niedriger Ebene könnte dies mithilfe dieser angeben Kombinationslogik.

Diese Forschung führte auch dazu, dass konventionelle, PC-basierte CPUs schneller laufen, einschließlich:

  • Pipelining, in denen verschiedene Hardware in der CPU gleichzeitig verschiedene Phasen mehrerer Anweisungen ausführt.
  • Das Sehr langes Unterrichtswort (VLIW) Architektur, wobei ein einzelner Anweisungen mehrere Effekte erzielen kann.
  • Techniken, die vorhergesagt werden müssen Ausführende Ausführung und erstellen Sie nachfolgende Anweisungen für die Ausführung außerhalb der regulären Sequenz.

Konsequenzen bei der Programmierung auf hoher Ebene

Moderne Programmiersprachen auf hoher Ebene folgen nach wie vor dem sequentiellen Modell, und tatsächlich ist eine gemeinsame Möglichkeit, Programmierfehler zu identifizieren, mit einer „Verfahrensausführung“, bei der der Finger des Programmierers den Ausführungspunkt als PC identifiziert. Die hochrangige Sprache ist im Wesentlichen die Maschinensprache einer virtuellen Maschine,[12] zu komplex, um als Hardware gebaut zu werden, aber stattdessen emuliert oder interpretiert durch Software.

Neue Programmiermodelle transzendieren jedoch die sequentielle Exezutionsprogrammierung:

  • Beim Schreiben a Multi-Threaded Programm, der Programmierer kann jeden Thread als eine Abfolge von Anweisungen schreiben, ohne den Zeitpunkt einer Anweisung in Bezug auf Anweisungen in anderen Threads anzugeben.
  • Im ereignisgesteuerte ProgrammierungDer Programmierer kann Anweisungssequenzen schreiben, auf die sie antworten, um darauf zu antworten Veranstaltungen ohne eine Gesamtsequenz für das Programm anzugeben.
  • Im Datenflow -ProgrammierungDer Programmierer kann jeden Abschnitt eines Computers schreiben Pipeline ohne den Zeitpunkt im Verhältnis zu anderen Abschnitten anzugeben.

Symbol

Anbieter verwenden verschiedene Zeichen, um den Programmzähler in zu symbolisieren Montagesprache Programme. Während die Verwendung eines "$" -Charakters in der Vorgänge in der Verbreitung ist Intel, Zilog, Texas Instrumente, Toshiba, NEC, Siemens und AMD Prozessordokumentation, Motorola, Rockwell Semiconductor, Mikrochip -Technologie und Hitachi Verwenden Sie stattdessen einen "*" -Scharakter,[9] wohingegen SGS-Thomson-Mikroelektronik Verwendet "PC".[9]

Siehe auch

Anmerkungen

  1. ^ Für moderne Prozessoren ist das Konzept "wo es in seiner Reihenfolge ist" zu simpel wie Parallelität auf Befehlsebene und Ausführende Ausführung kann auftreten.
  2. ^ In einem Prozessor, bei dem die Inkrementierung dem Abruf vorausgeht, zeigt der PC auf die aktuelle Anweisung, die ausgeführt wird. In einigen Prozessoren weist der PC ein gewisses Entfernung über die aktuelle Anweisung hinaus. zum Beispiel in der ARM7Der Wert des PCs, der für den Programmierer sichtbar ist Verspätungsschlitz.[5]

Verweise

  1. ^ Mead, Schnitzer; Conway, Lynn (1980). Einführung in VLSI -Systeme. Lesen, USA: Addison-Wesley. ISBN 0-201-04358-0.
  2. ^ Betriebsprinzipien, Typ 701 und zugehörige Ausrüstung (PDF). IBM. 1953.
  3. ^ Harry Katzan (1971), Computerorganisation und das System/370, Van Nostrand Reinhold Company, New York, USA, LCCCN 72-153191
  4. ^ Silberschatz, Abraham; Gagne, Greg; Galvin, Peter B. (April 2018). Betriebssystemkonzepte. Vereinigte Staaten: Wiley. S. 27, G-29. ISBN 978-1-119-32091-3.
  5. ^ "Arm Developer Suite, Assembler Guide. Version 1.2". Arm Limited. 2001. Abgerufen 2019-10-18.
  6. ^ John L. Hennessy und David A. Patterson (1990), Computerarchitektur: Ein quantitativer Ansatz, Morgan Kaufmann Publishers, Palo Alto, USA, ISBN1-55860-069-8
  7. ^ B. Randall (1982), Die Ursprünge digitaler Computer, Springer-Verlag, Berlin, D.
  8. ^ C. Gordon Bell und Allen Newell (1971), Computerstrukturen: Lesungen und Beispiele, McGraw-Hill Book Company, New York, USA
  9. ^ a b c Arnold, Alfred (2020) [1996, 1989]. "E. Vordefinierte Symbole". Makro -Assembler als - Benutzerhandbuch. V1.42. Übersetzt von Arnold, Alfred; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. p. Tabelle E.3: Vordefinierte Symbole - Teil 3. Archiviert vom Original am 2020-02-28. Abgerufen 2020-02-28. 3.2.12. WrapMode […] Wie wird davon ausgegangen, dass der Programmschalter des Prozessors nicht über die gesamte Länge von 16 Bits von der Architektur verfügt, sondern eine Länge, die genau ausreicht, um das interne ROM anzusprechen. Zum Beispiel im Fall der AT90S8515Dies bedeutet 12 Bit, entsprechend 4 KWords oder 8 kByte. Diese Annahme ermöglicht relative Zweige vom Beginn des ROM bis zum Ende und umgekehrt, was zu einem Fehler außerhalb der Branch bei der Verwendung strenger Arithmetik führen würde. Hier arbeiten sie, weil die Trageteile, die sich aus der Zieladressberechnung ergeben, verworfen werden. […] Im Falle der oben genannten AT90S8515 ist diese Option sogar erforderlich, da dies die einzige Möglichkeit ist, einen direkten Sprung durch den vollständigen Adressraum durchzuführen […]
  10. ^ Walker, B. S. (1967). Einführung in den Computertechnik. London, Vereinigtes Königreich: Presse der Universität von London. ISBN 0-340-06831-0.
  11. ^ F. B. Chambers, D. A. Duce und G. P. Jones (1984), Verteiltes Computer, Akademische Presse, Orlando, USA, ISBN0-12-167350-2
  12. ^ Douglas Hofstadter (1980), Gödel, Escher, Bach: Ein ewiges goldenes Geflecht, Penguin -Bücher, Harmondsworth, Großbritannien, ISBN0-14-005579-7