Benutzer:Ruscsi/Intel 8086

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Intel 8086

Intel 8086 mit 8 MHz im Keramik-Gehäuse
Produktion: seit Juni 1978
Produzenten:
Prozessortakt: 5 MHz bis 10 MHz
Befehlssatz: x86 der 1. Generation
Mikroarchitektur: 8086
Sockel: DIL-40

Der Intel 8086 (gesprochen „Achtzig-Sechsundachtzig“) ist Intels erster 16-Bit-Mikroprozessor. Er wurde am 8. Juni 1978 vorgestellt und ist der Stammvater einer CPU-Familie, die heute unter dem Namen x86-Familie bekannt ist. Obwohl die Ausführungsgeschwindigkeit des 8086 schon damals nicht als herausragend galt, wurde er für Intel zu einem großen Erfolg. Wie sein 1979 vorgestellter „kleiner“ Bruder, der 8088, fand der 8086 vorwiegend in IBM-PC-kompatiblen Rechnern Verwendung. Aber auch in der Vermittlungs-, Steuer- und Regelungstechnik war er beliebt, weshalb ihn beispielsweise auch die NASA im Space Shuttle einsetzte.

Geschichte des 8086

[Bearbeiten | Quelltext bearbeiten]

Befehlssatzarchitektur

[Bearbeiten | Quelltext bearbeiten]

Die Befehlssatzarchitektur des 8086 ist stark an die des 8080 und dessen Nachfolger 8085 angelehnt. Sie ist derart konzipiert, dass für den 8080 oder den 8085 geschriebener Assembler-Quelltext problemlos und zum großen Teil sogar automatisiert in 8086-Assembler-Quelltext umgewandelt werden kann. Auf eine Binärkompatiblität bei der Ausführung von 8080/85-Programmcode hat Intel hingegen verzichtet. Trotzdem hat jeder Befehl im Befehlssatz des 8080/85 auch sein Äquivalent im Befehlssatz des 8086.

Speichersegmentierung

[Bearbeiten | Quelltext bearbeiten]

Eine Besonderheit ist die Speichersegmentierung. Da es mit einem Arbeitsregister nur möglich ist, maximal 64 kiB Speicher zu adressieren, musste ein anderer Weg gefunden werden, um trotzdem den gesamten Speicher mit den 20 Adressleitungen adressieren zu können. Dazu wird der Speicher in Adressbereiche (Segmente) zu je 64 kiB Größe aufgeteilt, die in 16-Byte-Schritten im Speicher beginnen. Auf diese Weise ist es dem Chip möglich, bis zu ein MiB zu adressieren, wobei innerhalb jedes Segments mit 16-Bit-Adressen gearbeitet werden kann. Als Formel für den Zugriff auf eine physikalische Speicherstelle wurde folgender Zusammenhang festgelegt: Physikalische Adresse = Segmentregister * 16 + Offset. Mit den insgesamt vier Segmentregistern können vier Anfangsadressen gespeichert werden und somit gleichzeitig vier verschiedene Speicherbereiche von maximal 256 KiB adressiert werden.

Vorteil der Speichersegmentierung ist u. a. eine einfachere Portierbarkeit von 8-Bit-Programmen, Nachteil die umständliche Programmierung und die Beschränkung auf ein Megabyte; andere 16-Bit-Architekturen, wie etwa Motorolas 68000, erlaubten meist einen Adressraum von mindestens 16 MiB. Allerdings war 1 MiB damals für einen Mikrocomputer ohnehin viel mehr, als benötigt bzw. tatsächlich an Speicher verbaut wurde (der IBM-PC hatte zum Beispiel 64 kiB Speicher).

Die Register haben meist fest zugewiesene Funktionen. Zum Beispiel muss für eine Multiplikation der Multiplikant im Register AX abgelegt werden und danach der Multiplikationsbefehl mit dem Multiplikator als Argument aufgerufen werden. Das Ergebnis erhält man dann in den Registern DX und AX. Dadurch ist man häufig gezwungen, Werte auf den Stack oder in den Arbeitsspeicher zu sichern und von dort zu laden, da die Prozessorbefehle häufig vorgeben, welche Register gerade für Zwischenwerte genutzt werden können. Andere 16-Bit Prozessoren wie der Motorola 68000 erlauben dagegen, dass man für jede Operation die zu verwendenen Allzweck-Register auswählt und damit seltener Zwischenergebnise auf Stack und im Arbeitsspeicher sichern muss. Dies ist insofern ein Problem, als dass Zugriffe auf den Arbeitsspeicher im Gegensatz zu Registerzugriffen sehr langsam sind und Caches noch nicht unterstützt waren.

Dieses Register-Konzept vererbte der 8086 auf seinen Nachfolger 80286 und auf alle späteren, zur sog. x86-Familie zählenden Prozessoren (also auch Pentium 4 und die Intel-kompatiblen Prozessoren von AMD).

  • Max. adressierbarer Speicher: 1 MiB
  • Verarbeitungsbreite: 16 Bit
  • Datenbusbreits: 16 Bit
  • Adressbusbreite: 20 Bit
  • Anzahl der Befehle: ca. 100 im Format "[Präfix] Mnemonik [Operand 1][, Operand 2]"
  • 14 Register:
    • 4 vorwiegend universell verwendbare 16-Bit-Register, deren Lo- und Hi-Bytes sich separat ansprechen lassen. Die in Klammern angegebene Bezeichnung spiegelt die Funktion der einzelnen Register bei einer Reihe, vorwiegend komplexerer Befehle wider. Ihre Funktion bei diesen Befehlen ist vorgegeben und kann vom Programmierer nicht beliebig gewählt werden, weshalb die Register nicht immer so universell verwendbar sind, wie es zunächst den Anschein haben mag.
      • AX bzw. AH/AL - Akkumulator (Akku)
      • BX bzw. BH/BL - Basis-Register (Base)
      • CX bzw. CH/CL - Zähl-Register (Count)
      • DX bzw. DH/DL - Daten-Register (Data)
    • 2 16 Bit breite Zeiger-Register:
      • SP - Stackpointer
      • BP - Basepointer
    • 2 16 Bit breite Index-Register:
      • SI - Source Index
      • DI - Destination Index
    • 4 16 Bit breite Segment-Register:
    • Befehlszeiger IP - Instruction Pointer
    • Status-Register mit 9 Flags:
      • CF - Übertragflag (engl. carry flag)
      • PF - Paritätsflag (engl. parity flag)
      • AF - Hilfsübertragflag (engl. auxiliary carry flag)
      • ZF - Nullflag (engl. zero flag)
      • SF - Vorzeichenflag (engl. sign flag)
      • TF - Einzelschrittflag (engl. trap flag)
      • IF - Interrupt-Aktivierungs-Flag (engl. interrupt enable flag)
      • DF - Richtungsflag (engl. direction flag)
      • OF - Überlaufflag (engl. overflow flag)

Technische Daten

[Bearbeiten | Quelltext bearbeiten]
  • L1-Cache: nicht vorhanden
  • L2-Cache: nicht vorhanden
  • Bauform: DIL mit 40 Pins
  • Betriebsspannung (VCore): 5 Volt
  • Erscheinungsdatum: 1978
  • Fertigungstechnik: 3 µm
  • Die-Größe: 33 mm² bei 29.000 Transistoren
  • Taktraten:
    • 4,77 MHz (0,33 MIPS)
    • 8 MHz (0,66 MIPS)
    • 10 MHz (0,75 MIPS)