Instruction Set Architecture
aus Wikipedia, der freien Enzyklopädie
Eine Instruction Set Architecture (ISA) bezeichnet eine Menge von Eigenschaften eines Mikroprozessors, eine Maschinensprache und regelt deren Anwendung. Ein Mikroprozessor implementiert eine ISA, wenn er alle im Sinne der Regeln der ISA gültigen Programme ausführen kann. Zur ISA gehört sowohl eine binäre Spezifikation des Aufbaus der Instruktionen als auch eine Assemblersprache, die diesen Instruktionen Mnemonics zuweist und die Register benennt. Da eine ISA eine formale Definition ist, auf die sich Programmierer und Implementierer (Chiphersteller) einigen, muss sie nicht mit Hilfe eines Prozessors implementiert sein, sondern kann, wenn sie sich an die Regeln hält, auch in Software implementiert sein. Dann spricht man von einer Emulation. Es kann auch Software für einen Prozessor geschrieben werden, der noch gar nicht gebaut wurde, wenn die ISA schon definiert ist. So wurden große Teile der IA-64-Unterstützung in Linux programmiert, bevor der erste Itanium die Fabrik verließ. Es existierte in diesem Fall vor dem ersten Prozessor eine Emulationssoftware, mit der der IA-64-Linux-Kernel auf existierenden Prozessoren ausgeführt werden konnte. Somit war Linux bei Erscheinen des Itanium sofort oder sehr bald auf diesem lauffähig.
Die erste ISA war die IBM 360, die von Prozessoren unterschiedlichster Geschwindigkeit und Komplexität implementiert wurde und noch heute wird.
Inhaltsverzeichnis |
[Bearbeiten] Eigenschaften
- Typ
- allgemeine Bitbreite
- allgemeine Eigenschaften
- instruction set
- Registeranzahl
- Adressbreite und Speicheraddressierung
- Interrupts
- der Rest
[Bearbeiten] Typ
Zu den Typen gehören (in chronologischer Reihenfolge):
[Bearbeiten] Allgemeine Bitbreite
Die allgemeine Bitbreite äußert sich in der Bitbreite der Register, der Breite des Addressbusses u. a. und legt verschiedene Größen fest, zum Beispiel die Größe effektiv darstellbarer Ganzzahlen oder die Speichergröße.
Beispiele:
[Bearbeiten] Allgemeine Eigenschaften
Die allgemeinen Eigenschaften sagen aus, ob der Prozessor einen Stack, ob er verschiedene Privilegienstufen oder virtuelle Speicheraddressierung unterstützt oder welche Addressierungsarten für den Speicher existieren, ob der Befehlssatz orthogonal ist und ob der Prozessor Fließkommazahlen verarbeiten kann. Multitasking und Speicherschutz (zur Durchsetzung des Privilegienmodells) seien noch erwähnt.
[Bearbeiten] Instruction Set
Ein zentraler Bestandteil der ISA ist die Beschreibung der einzelnen Instruktionen, dazu gehört:
- binäre Kodierung
- Anwendbarkeit von Operationen auf die verschiedenen Register
- Nebeneffekte und Abhängigkeiten (z. B. vom Privilegienmodell)
- Assemblersprache (Namen von Operationen oder Registern)
Die Instruktionen werden meistens gruppiert:
- arithmetische Operationen
- Kontrollflussoperationen
- Vergleichs- und Testoperationen
- Stackoperationen
- Speicherzugriff, IO-Zugriff
- privilegierte Operationen
[Bearbeiten] Registeranzahl
Die Registeranzahl und Benennung der Register ist ein wichtiger Bestandteil der ISA, da man diese immer benutzt, wenn man ein Programm schreibt. Es gibt praktisch immer allgemein nutzbare Register (general purpose Register) von denen einige zusätzliche Aufgaben erledigen (Akkumulator für spezielle mathematische Operationen, Indexregister für spezielle Addressierung) und spezielle oder Kontrollregister, die nur mit einer begrenzten Menge von Operationen bearbeitet werden können.
[Bearbeiten] Speicheradressierung
Die Addressbreite ist nicht immer gleich der allgemeinen Bitbreite, eigentlich eher selten. Zum Beispiel hatten Prozessoren der 6502-Familie einen 16 bit breiten Addressbus (+8 bit), x86-Prozessoren einen 20 bit breiten Addressbus (+4 bit), IA32-Prozessoren 32 bit, IA32-Prozessoren mit PAE 36 bit (+4 bit) und aktuelle IA-64-Prozessoren 40 bit (-24 bit im Vergleich zur allgemeinen Bitbreite). Nicht direkt zur Speicheraddressierung gehörig, aber mit ihr verwandt ist die IO-Addressierung, die entweder mit dem Speicher überlagert ist oder einen eigenen Adressbereich hat.
[Bearbeiten] Interrupts und Exceptions
Asynchrone Unterbrechungen spielen eine wichtige Rolle vor allem für den Systementwickler.
[Bearbeiten] Der Rest
Eine Vielzahl von Prozessoreigenschaften werden bei der Anwendungsentwicklung nicht benötigt, oder funktionieren in den meisten Fällen ohne Manipulation seitens des Programmierers und zählen eher zu den Beigaben, zum Beispiel Debug-Register, Timing-Register oder die Verwaltung der Caches.
[Bearbeiten] Nicht zur ISA gehört
- die Mikroarchitektur, also der interne Aufbau des Prozessors
- Pipeline (-länge, -aufbau)
- Schattenregister, die vom Prozessor intern verwendet werden
- Peripherie (DMA, Bussystem, Arbeitsspeicher) und BIOS