Anweisung ausführen - Execute instruction

In einer Computerbefehlssatzarchitektur (ISA) ist ein Ausführungsbefehl ein Maschinensprachbefehl, der Daten als Maschinenbefehl behandelt und ausführt.

Es kann als vierter Modus der Befehlssequenzierung nach der gewöhnlichen sequenziellen Ausführung , Verzweigung und Unterbrechung angesehen werden . Da es sich um eine Anweisung handelt, die auf anderen Anweisungen wie der Wiederholungsanweisung operiert , wurde sie auch als Meta-Anweisung klassifiziert.

Computermodelle

Viele Computerfamilien, die in den 1950er und 1960er Jahren eingeführt wurden, enthalten Ausführungsbefehle : die IBM 709 und IBM 7090 ( Op-Code-Mnemonik : XEC ), die IBM 7030 Stretch ( EX , EXIC ), die PDP-1 / -4 / -9 / -15 ( XCT ), das UNIVAC 1100/2200 ( EXRI ), das CDC 924 ( XEC ), das PDP-6 / -10 ( XCT ), das IBM System/360 ( EX ), das GE-600 / Honeywell 6000 ( XEC , XED ), das SDS-9xx ( EXU ).

Weniger Designs der 1970er Jahre enthalten Ausführungsanweisungen . 1970 wurde für den PDP-11 ein Ausführungsbefehl vorgeschlagen , aber nie für ihn oder seinen Nachfolger, den VAX, implementiert . Architekturen mit einem Ausführungsbefehl umfassen: den Nuclear Data 812 Minicomputer (1971) ( XCT ), den HP 3000 (1972) ( XEQ ) und den Texas Instruments TI-990 (1975) und seine Mikroprozessorversion, den TMS9900 (1976) ( X ).

Moderne Befehlssätze enthalten keine Ausführungsbefehle , da sie Pipelining , Prefetching und andere Optimierungen stören .

Semantik

Der auszuführende Befehl, der Zielbefehl, kann sich in einem Register befinden oder aus dem Speicher geholt werden. Einige Architekturen erlauben, dass der Zielbefehl selbst ein Ausführungsbefehl ist ; andere nicht.

Der Zielbefehl wird ausgeführt, als ob er an der Speicherstelle des Ausführungsbefehls wäre . Handelt es sich beispielsweise um eine Unterprogrammaufrufanweisung, wird die Ausführung an die Unterroutine übergeben, wobei die Rückkehrstelle die Stelle nach der Ausführungsanweisung ist . Einige Architekturen implementieren jedoch Varianten des Ausführungsbefehls , die Verzweigungen verhindern.

Das System/360 unterstützt Zielanweisungen mit variabler Länge. Es unterstützt auch das Ändern des Zielbefehls vor der Ausführung. Der Zielbefehl muss auf einem geraden Byte beginnen .

Die Serie GE-600 unterstützt die Ausführung von Sequenzen mit zwei Befehlen, die auf Doppelwort ausgerichtet sein müssen .

Einige Architekturen unterstützen einen Ausführungsbefehl , der in einem anderen Schutz- und Adressverlagerungsmodus arbeitet . Zum Beispiel unterstützt das Paging-Gerät ITS PDP-10 einen privilegierten XCTR - Befehl " execute relocated ", der es ermöglicht, Speicherlese- und -schreibvorgänge oder beides zu verwenden, um die Benutzermodus-Seitenzuordnungen zu verwenden. Ebenso unterstützt die KL10- Variante des PDP-10 den privilegierten Befehl PXCT 'vorhergehender Kontext XCT'.

Die Ausführungsanweisung kann mehrere Probleme verursachen, wenn eine Ausführungsanweisung auf eine andere verweist und so weiter:

  • der Prozessor kann für mehrere Taktzyklen unterbrechungsfrei sein, wenn der Ausführungsbefehl nicht mitten in der Ausführung unterbrochen werden kann;
  • auf ähnliche Weise kann der Prozessor in eine Endlosschleife gehen, wenn die Folge von Ausführungsbefehlen zirkulär und nicht unterbrechbar ist;
  • Wenn sich die Ausführungsanweisungen auf verschiedenen Auslagerungsseiten befinden , müssen alle Seiten ausgetauscht werden, damit die Anweisung abgeschlossen wird, was zu einem Thrashing führen kann .

Ähnliche Probleme treten bei indirekten Adressierungsmodi mit mehreren Ebenen auf .

Anwendungen

Die Ausführungsanweisung hat mehrere Anwendungen:

  • Funktion als Einzelbefehl - Subroutine , die ein vollständiges Unterprogramm aufrufen kann , falls erforderlich.
  • Späte Bindung
    • Implementierung von Call by Name und anderen Thunks .
    • Eine Tabelle von Ausführungszielen kann für die dynamische Verteilung der Methoden oder virtuellen Funktionen eines Objekts oder einer Klasse verwendet werden , insbesondere wenn die Methode oder Funktion oft als einzelner Befehl implementiert werden kann.
    • Ein Ausführungsziel kann einen Hook zum Hinzufügen von Funktionen oder zum Debuggen enthalten; es wird normalerweise als NOP initialisiert, das dynamisch überschrieben werden kann.
    • Ein Ausführungsziel kann zwischen einer schnellen Version einer Operation und einer vollständig verfolgten Version wechseln.
  • Verfolgung, Überwachung und Emulation
    • Dies kann einen Pseudo- Programmzähler beibehalten , wobei der normale Programmzähler unverändert bleibt.
  • Ausführen von dynamisch generiertem Code, insbesondere wenn der Speicherschutz verhindert , dass ausführbarer Code beschreibbar ist.
  • Emulieren von selbstmodifizierendem Code, insbesondere wenn er wiedereintretend oder schreibgeschützt sein muss .
  • Im IBM System/360 kann der Ausführungsbefehl die Bits 8-15 des Zielbefehls modifizieren, wodurch ein Befehl mit einem festen Argument (zB ein Längenfeld) effektiv in einen Befehl mit einem variablen Argument umgewandelt wird.

Anmerkungen

  1. ^ a b c d e f g h Brooks, FP (März 1960). „Die Ausführungsoperationen – ein vierter Modus der Befehlssequenzierung“. Mitteilungen des ACM . 3 (3): 168–170. doi : 10.1145/367149.367168 .
  2. ^ Rossman, George E. (Dezember 1975). "Ein Studiengang in Computer-Hardware-Architektur". IEEE-Computer . 8 (12): 44–63. doi : 10.1109/CM.1975.218835 ., P. 50
  3. ^ Referenzhandbuch, IBM 7090 Datenverarbeitungssystem (PDF) . IBM . März 1962. p. 36.
  4. ^ Referenzhandbuch, 7030 Datenverarbeitungssystem (PDF) . IBM . August 1961. p. 50.
  5. ^ Handbuch zum programmierten Datenprozessor-1 (PDF) . Digital Equipment Corporation . 1961. p. 14.
  6. ^ Supnik, Bob. "Architekturentwicklung in den 18b-Computern von DEC" (PDF) . P. 8 (Seitenzahlen nicht gezeigt).
  7. ^ Univac 1107 Zentralcomputer (PDF) . November 1961. p. 12-1.
  8. ^ Steuerdaten 924 Computer-Referenzhandbuch (PDF) . Oktober 1962. p. 2-41.
  9. ^ a b IBM System/360 Funktionsprinzipien (PDF) . IBM . 1964. p. 65. A22-6821-0.
  10. ^ a b GE-635 Systemhandbuch (PDF) . General Electric Computerabteilung. Juli 1964. p. A-5.
  11. ^ SDS 92-Computer . Wissenschaftliche Datensysteme . Juni 1965. p. 2-6.
  12. ^ SDS 940 Betriebstheorie (PDF) . Wissenschaftliche Datensysteme . März 1967. p. 2-12. SDB-98-01-26A.
  13. ^ a b van de Goor, Ad (21. September 1970). "Die Ausführungsanweisung" (PDF) . PDP-11/40 Technisches Memorandum 18.
  14. ^ a b PDP11-Prozessorhandbuch: PDP11/04/34a/44/60/60 (PDF) . Digital Equipment Corporation . 1979.
  15. ^ VAX MACRO und Bedienungsanleitung Referenzhandbuch (PDF) . Compaq Computer Corporation . April 2001. AA-PS6GD-TE.
  16. ^ Grundlagen der Programmierung des Computers ND812 (PDF) . Nuclear Data, Inc. 1971. p. 4-4.
  17. ^ HP 3000-Computersystem: Referenzhandbuch für den Maschinenbefehlssatz (PDF) . Hewlett-Packard . 1980. p. 2-31.
  18. ^ 990 Systemhandbuch für die Computerfamilie (PDF) . Texas-Instrumente . P. 3-28.
  19. ^ TMS 9900 Mikroprozessor-Datenhandbuch (PDF) . Texas-Instrumente . Dezember 1976. p. 24.
  20. ^ Holloway, J. (20. Februar 1970). "Hardware Memo 2 - PDP-10 Paging-Gerät" (PDF) . MIT-KI-Labor . P. 11.
  21. ^ DECsystem-10, DECSYSTEM-20-Prozessor-Referenzhandbuch (PDF) . Digital Equipment Corporation . Juni 1982. p. 2-63. AA-H391A-TK, AD-H391A-T1.
  22. ^ Gabriel, Richard P. (August 1985). Leistung und Bewertung von Lisp-Systemen (PDF) . P. 32. ISBN 9780262070935.
  23. ^ Pitman, Kent M. "PUR" . Das überarbeitete Maclisp-Handbuch, Sunday Morning Edition .
  24. ^ Mond, David A. (April 1974). Maclisp-Referenzhandbuch (PDF) . Revision 0. p. 181.