Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Befehlssatz

Der Befehlssatz, auch Instruktionssatz (englisch instruction set), eines Prozessors ist in der Rechnerarchitektur die Menge der Maschinenbefehle, die ein …

Inhalt5 Abschnitte
  1. 1. Grundidee
  2. 2. Wichtige Eigenschaften
  3. 3. Aufbau von Befehlen
  4. 4. Arten von Befehlen
  5. 5. Befehlssatzarchitekturen

Grundidee

Der Befehlssatz, auch Instruktionssatz genannt, ist in der Rechnerarchitektur die Menge aller Maschinenbefehle, die ein bestimmter Prozessor ausführen kann. Er legt also fest, welche grundlegenden Aktionen ein Prozessor direkt versteht, etwa Daten laden, rechnen, speichern oder im Programm springen. Je nach Prozessor kann der Umfang stark variieren, zum Beispiel zwischen 33 und über 500 Befehlen.

CISC-Prozessoren haben tendenziell größere Befehlssätze als RISC-Prozessoren. Auch neuere Prozessoren besitzen meist umfangreichere Befehlssätze als ältere. In erweitertem Sinn bezeichnet „Befehlssatz“ den Befehlsvorrat eines Prozessors.

Wichtige Eigenschaften

Ein Befehlssatz heißt orthogonal, wenn jeder Befehl auch jede Adressierungsart des Prozessors verwenden kann. Eine Adressierungsart beschreibt, wie ein Prozessor mithilfe von Adressangaben, Offsets und Registerinhalten die effektive Adresse von Operanden berechnet. Operanden sind die Werte oder Speicherstellen, mit denen ein Maschinenbefehl arbeitet.

Ein Befehlssatz heißt symmetrisch, wenn alle Datentypen und Adressierungsarten eines Befehls nicht nur für seine Quelloperanden, sondern auch für seine Zieloperanden erlaubt sind. Datentypen eines Prozessors sind dabei alle Typen, die unmittelbar durch Maschinenbefehle bearbeitet werden können, also ohne softwaremäßige Emulation.

Aufbau von Befehlen

Die einzelnen Befehle eines Befehlssatzes sind Datenworte. Sie enthalten meist einen Opcode und einen oder mehrere Operanden. Der Opcode gibt an, welcher Befehl gemeint ist; die Operanden geben an, womit der Befehl arbeitet. Struktur und Format dieser Angaben sind je Befehlstyp einheitlich festgelegt.

Die Breite der verwendeten Befehlsworte kann je nach Prozessortyp deutlich unterschiedlich sein. Sie kann auch größer sein als die gewöhnlicher Speicherworte, also größer als die Datenbusbreite des Prozessors. Dann müssen Befehle durch mehrere Speicherzugriffe aus dem Speicher in den Prozessor geladen werden.

Eine typische Form ist die Zwei-Operanden-Befehlsform, sie ist aber nicht die einzige. Manche Prozessoren erlauben höchstens einen Operanden. Dann müssen Befehle, die eigentlich auf zwei Größen wirken, als zweiten Operanden implizit ein internes Register verwenden, zum Beispiel den Akkumulator. Andere Prozessoren erlauben bis zu drei Operanden. Drei-Operanden-Befehle unterscheiden Quelle, verknüpften Wert und Ziel des Ergebnisses, sodass die Quelle nicht überschrieben werden muss.

Ein Beispiel ist eine MIPS32-Instruktionskodierung für die Addition addi: Eine Binärzahl als Immediate value wird mit dem Wert im Register Addr2 addiert, und das Ergebnis wird im Register Addr1 gespeichert. Immediate bedeutet, dass ein Wert bereits in der Instruktion enthalten ist und nicht erst aus einer Speicheradresse geladen werden muss.

Arten von Befehlen

Der Befehlssatz eines Mikroprozessors besteht grob aus mehreren Arten von Befehlen. Transferbefehle bewegen Daten innerhalb des Systems. Quelle und Ziel können Speicherstellen oder Prozessorregister sein. Die Daten werden dabei typischerweise nicht verändert, sondern nur kopiert; sie bleiben also am Quellort erhalten. Je nach Befehl und Prozessortyp können einzelne Bytes oder mehrere Bytes auf einmal transportiert werden. Typische Befehlsnamen gehen auf englische Wörter wie move, load, store oder transfer zurück.

Befehle zur Datenmanipulation verändern Inhalte von Speicherzellen. Beispiele sind shift und convert. Arithmetische und logische Befehle führen Rechen- oder Logikoperationen aus, zum Beispiel Zählen, Addieren oder eine UND-Verknüpfung. Der Hauptoperand ist oft ein Prozessorregister, in vielen Fällen der Akkumulator, aber das ist nicht zwingend. Typische Befehlsnamen sind englische Kürzel wie ADD oder AND.

Ein-/Ausgabebefehle dienen zum Lesen und Schreiben von Daten über Peripheriegeräte. Peripheriegeräte sind die Verbindungen zur Außenwelt des Computers. Sprungbefehle, auch Befehle zur Programmkontrolle oder Programmsteuerung genannt, verändern den Programmablauf. Sie ermöglichen Verzweigungen, Schleifen, Reaktionen auf verschiedene Zahlenwerte und den Aufruf von Unterprogrammen, also Subroutinen. Man unterscheidet unbedingte Sprünge und bedingte Sprünge. Bedingte Sprünge hängen typischerweise vom Zustand bestimmter Bits im Prozessor-Zustandsregister ab. Typische Befehlsnamen beruhen auf jump oder branch.

Stack-Befehle legen Daten auf den Stack oder holen sie von dort zurück. Der Stack ist ein Stapelspeicher. Befehle zum Ablegen heißen meist push, Befehle zum Zurückholen pop oder pull. Dabei wird das Stackpointer-Register automatisch aktualisiert. Viele CPUs besitzen allerdings keine Stack-Befehle.

Kombinierte Befehle setzen sich aus elementaren Aktionen anderer Befehlsarten zusammen. Beim Aufruf einer Subroutine wird zum Beispiel meist ein Sprung ausgeführt und zugleich die bisherige Programmadresse als Rücksprungziel auf dem Stack gespeichert. Manche Prozessoren unterstützen Zählschleifen durch Befehle, die einen Zähler erhöhen oder verringern und bei Erreichen einer Grenze, etwa einem Unterlauf beim Herabzählen auf Null, einen bedingten Rücksprung ausführen. Solche kombinierten Befehle sind besonders typisch für CISC-Prozessoren.

Befehlssatzarchitekturen

Wenn man eine Familie von Prozessoren mit ähnlichem Befehlssatz zusammenfasst, spricht man von einer Befehlssatzarchitektur, auf Englisch Instruction Set Architecture, kurz ISA. Eine ISA beschreibt also nicht nur einen einzelnen Prozessor, sondern eine gemeinsame Befehlsgrundlage für mehrere verwandte Prozessoren.

Verbreitete Befehlssatzarchitekturen sind IA-32, IA-64, ARM, Power und PowerPC beziehungsweise die PAPR-Spezifikation, SPARC und RISC-V. IA-32 ist die 32-Bit-ISA der ursprünglichen 16-bittigen x86-Architektur; auch die 64-Bit-Erweiterung x64 wird IA-32 zugeordnet. IA-64 bezeichnet die Itanium-Architektur und ist nicht mit x64 zu verwechseln.

Weiterlesen

Imperativ (Modus) „Um Neun bist du wieder zu Hause!“ · „In Zukunft wendest du dich bitte direkt an mich!“ · Alternativ: „In Zukunft wirst du dich direkt an mich wenden!“ (Futur I). Mikroprozessor Ein Mikroprozessor (µP oder uP) ist ein als integrierter Schaltkreis (IC) ausgeführter Computerprozessor. Typische Beispiele von Mikroprozessoren sind die … Rechnerarchitektur Zu den bekanntesten Architekturen für Computer bzw. deren zentralen Recheneinheiten, oder Prozessoren, zählen die Harvard-Architektur und die Von-Neumann- … Adressierung (Rechnerarchitektur) Adressierung ist in der Programmierung das Festlegen, auf welche Operanden (z. B. Datenfelder) sich ein Maschinenbefehl bezieht. Die Operanden können auf … Datentyp Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebraischen Strukturen. Mit der weiteren Konkretisierung der … Opcode Ein spezielles Programm, der Assembler, erzeugt Maschinencode, indem es im Wesentlichen die Mnemonics durch ihre jeweiligen Opcodes ersetzt. Die meisten … Konjunktion (Logik) Gelesen wird die Konjunktion zweier Aussagen A, B meist als „A und B“. In der klassischen Logik ist die Konjunktion zweier Aussagen „A und B“ genau dann wahr, … Peripheriegerät Peripheriegeräte dienen der Ein- und Ausgabe von Daten oder Befehlen in die Zentraleinheit. Sie erbringen eine „Dienstleistung“ für den Benutzer, diese kann … Schleife (Programmierung) Eine Schleife (auch „Wiederholung“ oder englisch loop) ist eine Kontrollstruktur in Programmiersprachen. Sie wiederholt einen Anweisungs-Block – den … Stapelspeicher Abstrakter Datentyp. Bearbeiten. Bei der Implementierung eines Stapelspeichers als abstrakter Datentyp in einer einfach verketteten Liste wird der Zeiger auf … X64 In der Informatik ist x64 eine 64-Bit-Befehlssatzarchitektur, die auf der x86-Architektur basiert und bei PCs seit 2003 Verbreitung findet. ARM-Architektur Der wesentliche Unterschied des ARM9 gegenüber dem ARM7 ist je ein getrennter Bus für Instruktionen und Daten (Harvard-Architektur). Meist werden diese an …