Intel 8086

Intel 8086
Intel C8086.jpg
Ein seltener Intel C8086-Prozessor im lila Keramik-Dip-Paket mit Seitenblasenstiften
Allgemeine Information
Gestartet 1978
Abgesetzt 1998[1]
Gemeinsame Hersteller (en)
Leistung
Max. Zentralprozessor Taktfrequenz 5 MHz bis 10 MHz
Datenbreite 16 Bit
Adressbreite 20 Bit
Architektur und Klassifizierung
Technologieknoten 3 µm
Befehlssatz x86-16
Physikalische Spezifikationen
Transistoren
  • 29.000
Co-Prozessor Intel 8087, Intel 8089
Pakete)
Steckdosen)
Produkte, Modelle, Varianten
Variante (en)
Geschichte
Vorgänger Intel 8085
Nachfolger 80186 und 80286 (beide wurden Anfang 1982 eingeführt)

Das 8086[2] (auch genannt IAPX 86)[3] ist ein 16-Bit Mikroprozessor Chip entworfen von Intel Zwischen Anfang 1976 und 8. Juni 1978, als es veröffentlicht wurde. Das Intel 8088, veröffentlicht am 1. Juli 1979,,[4] ist ein leicht modifizierter Chip mit einem externen 8-Bit Datenbus (Ermöglichen der Verwendung billiger und weniger Unterstützung ICs),[Anmerkung 1] und ist bemerkenswert wie der im Original verwendete Prozessor IBM PC Entwurf.

Der 8086 führte zu dem x86 Architektur, die schließlich Intels erfolgreichste Verarbeitungslinie wurde. Am 5. Juni 2018 veröffentlichte Intel eine CPU in limitierter Auflage zum 40. Jahrestag des Intel 8086 namens The the the Intel Core i7-8086k.[4]

ChIP 8086 wird zur Verarbeitung von Daten in Telekommunikationsinformationen erstellt, die für den Benutzer verarbeitet werden

Geschichte

Hintergrund

1972 startete Intel die 8008, der erste 8-Bit-Mikroprozessor.[Anmerkung 2] Es implementierte ein Befehlssatz entworfen von DataPoint Corporation mit programmierbar CRT -Terminals In Anbetracht, was sich auch als ziemlich allgemein erwies. Das Gerät benötigte mehrere zusätzliche ICs Um einen funktionalen Computer zu produzieren, teilweise aufgrund des Verpackens in einem kleinen 18-poligen "Speicherpaket", das die Verwendung eines separaten Adressbusses ausschloss (Intel war in erster Linie ein Dram Hersteller zu dieser Zeit).

Zwei Jahre später startete Intel die 8080,[Notiz 3] Die neue 40-polige Anwendung DIL -Pakete ursprünglich entwickelt für Taschenrechner ICs, um einen separaten Adressbus zu aktivieren. Es hat einen erweiterten Befehlssatz, nämlich Quellenkompatibel (nicht binär kompatibel) mit dem 8008[5] und schließt auch einige ein 16-Bit Anweisungen, um die Programmierung zu erleichtern. Das Gerät 8080 wurde schließlich durch die ersetzt Erschöpfung-basierend 8085 (1977), das mit einer einzigen Netzteil von +5 V anstelle der drei verschiedenen Betriebsspannungen früherer Chips ausreichte.[Anmerkung 4] Andere bekannte 8-Bit-Mikroprozessoren, die in diesen Jahren entstanden sind Motorola 6800 (1974), Allgemeines Instrument PIC16X (1975), MOS -Technologie 6502 (1975), Zilog Z80 (1976) und Motorola 6809 (1978).

Das erste X86 -Design

Intel 8086 CPU -Stempelbild

Das 8086 -Projekt begann im Mai 1976 und war ursprünglich als vorübergehender Ersatz für die ehrgeizige und verzögerte IAPX 432 Projekt. Es war ein Versuch, die Aufmerksamkeit von den weniger delayierten 16-Bit zu lenken und 32-Bit Prozessoren anderer Hersteller - Motorola, Zilog, und Nationaler Halbleiter.

Während der 8086 ein 16-Bit-Mikroprozessor war, verwendete er dasselbe Mikroarchitektur als 8-Bit-Mikroprozessoren von Intel (8008, 8080 und 8085). Dies erlaubte Montagesprache Programme in 8-Bit zu nahtlos migrieren.[6] Neue Anweisungen und Funktionen-wie z. B. signierte Ganzzahlen, Basis+Offset-Adressierung und Selbstverpackungsvorgänge-wurden hinzugefügt. Anweisungen wurden hinzugefügt, um die Kompilierung der Quellcode von der Zusammenstellung von Quellcode von zu unterstützen verschachtelte Funktionen in dem Algol-Familie von Sprachen, einschließlich Pascal und Pl/m. Nach Angaben des Hauptarchitekten Stephen P. MorseDies war ein Ergebnis eines softwarezentrierten Ansatzes. Andere Verbesserungen enthalten Mikrocode Anweisungen für die Anweisungen zum Multiplikations- und Teilen von Montagesprachen. Auch Designer erwarteten Coprozessoren, wie zum Beispiel 8087 und 8089Daher wurde die Busstruktur flexibel ausgelegt.

Die erste Überarbeitung des Unterrichtssatzes und der hochrangigen Architektur war nach etwa drei Monaten fertig.[Anmerkung 5] Und da fast keine CAD -Werkzeuge verwendet wurden, arbeiteten vier Ingenieure und 12 Layout -Leute gleichzeitig am Chip.[Anmerkung 6] Der 8086 dauerte etwas mehr als zwei Jahre von der Idee zum Arbeitsprodukt, was 1976 bis 1978 für ein komplexes Design als ziemlich schnell angesehen wurde.

Der 8086 wurde sequenziert[Anmerkung 7] unter Verwendung einer Mischung aus zufällige Logik[7] und Mikrocode und wurde unter Verwendung von NMOS-Schaltkreisen von Depletion-Last mit ca. 20.000 aktiv implementiert Transistoren (29.000 zählen alle Rom und PLA Standorte). Es wurde bald in einen neuen raffinierten NMOS -Herstellungsprozess bezeichnet, der genannt wurde Hmos (für Hochleistungs -MOS), die Intel ursprünglich für die Herstellung von Fast entwickelt hat statischer Widder Produkte.[Anmerkung 8] Es folgten HMOS-II, HMOS-III-Versionen und schließlich eine vollständige statische CMOs Version für batteriebetriebene Geräte, hergestellt mit Intel's Chmos Prozesse.[Anmerkung 9] Der ursprüngliche Chip maß 33 mm² und die minimale Merkmalsgröße betrug 3,2 μm.

Die Architektur wurde durch definiert von Stephen P. Morse Mit etwas Hilfe von Bruce Ravenel (dem Architekten des 8087) bei der Verfeinerung der endgültigen Überarbeitungen. Der Logikdesigner Jim McKevitt und John Bayliss waren die führenden Ingenieure des Entwicklungsteams auf Hardware-Ebene auf[Anmerkung 10] und Bill Pohlman, der Manager des Projekts. Das Erbe des 8086 ist im grundlegenden Anweisungssatz der heutigen Personalcomputer und Server. Der 8086 verlieh auch seine letzten zwei Ziffern später erweiterten Versionen des Designs, wie die Intel 286 und die Intel 386, alle, die schließlich als die bekannt wurden x86 Familie. (Eine weitere Referenz ist, dass die PCI -Anbieter -ID Für Intel -Geräte ist 8086h.))

Einzelheiten

Die 8086 -Pin -Zuordnungen im Min- und Max -Modus

Busse und Betrieb

Alle internen Register sowie interne und externe Datenbusse sind 16 Bits breit, was die Identität "16-Bit-Mikroprozessor" der 8086 fest etabliert hat. Ein 20-Bit-externer Adressbus bietet einen 1Mb physischer Adressraum (220 = 1.048,576 x 1 Byte). Dieser Adressraum wird mittels des internen Speichers "Segmentierung" behandelt. Der Datenbus ist Multiplexed Mit dem Adressbus, um alle Steuerungsleitungen in einen Standard-40-Pin zu passen Dual-in-Line-Paket. Es bietet einen 16-Bit-E/A-Adressbus, der 64 unterstütztKB von separatem E/A -Raum. Der maximale lineare Adressraum ist auf 64 kb begrenzt, nur weil interne Adress-/Indexregister nur 16 Bit sind. Die Programmierung über 64 KB -Speichergrenzen beinhaltet die Anpassung der Segmentregister (siehe unten). Diese Schwierigkeit gab es bis zur 80386 Architektur wurde breitere (32-Bit-) Register eingeführt (die Speicherverwaltungshardware in der 80286 Hat diesbezüglich nicht geholfen, da seine Register immer noch nur 16 Bit breit sind).

Hardwaremodi von 8086

Einige der Kontrollstifte, die wesentliche Signale für alle externen Operationen tragen, haben mehr als eine Funktion, je nachdem, ob das Gerät in betrieben wird in Mindest oder Max Modus. Der erstere Modus ist für kleine Einzelprozessorsysteme bestimmt, während letzteres für mittlere oder große Systeme mit mehr als einem Prozessor (einer Art Multiprozessor-Modus) bestimmt ist. Der maximale Modus ist erforderlich, wenn ein Coprozessor 8087 oder 8089 verwendet wird. Die Spannung an Pin 33 (mn/Mx) bestimmt den Modus. Durch Ändern des Standes von Pin 33 ändert sich die Funktion bestimmter anderer Stifte, von denen die meisten damit zu tun haben, wie die CPU mit dem (lokalen) Bus umgeht.[Anmerkung 11] Der Modus ist normalerweise in der Schaltung fest verdrahtet und kann daher nicht durch Software geändert werden. Die Funktionsweise dieser Modi werden in Bezug auf Timing -Diagramme in Intel -Datenblättern und Handbüchern beschrieben. Im Mindestmodus werden alle Steuersignale vom 8086 selbst generiert.

Register und Anweisung

Intel 8086 Register
19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (Bitposition)
Hauptregister
  AH Al AXT (primärer Akkumulator)
0 0 0 0 0 BH Bl BX (Basis, Akkumulator)
  CH Cl CX (Zähler, Akkumulator)
  Dh Dl Dx (Akkumulator, erweiterte ACC)
Indexregister
0 0 0 0 0 Si SOurce INDEX
0 0 0 0 0 Di DEstination INDEX
0 0 0 0 0 Bp Base Pointer
0 0 0 0 0 Sp SHeftzwecke Pointer
Programm zähler
0 0 0 0 0 IP INstruktion Pointer
Segmentregister
CS 0 0 0 0 0 COde SEgment
Ds 0 0 0 0 0 Dan einer SEgment
Es 0 0 0 0 0 Extra SEgment
Ss 0 0 0 0 0 SHeftzwecke SEgment
Statusregister
  - - - - O D I T S Z - A - P - C Flaggen

Der 8086 hat acht mehr oder weniger allgemeine 16-Bit Register (einschließlich der Stapelzeiger ohne den Anweisungszeiger, das Flaggenregister und die Segmentregister). Vier von ihnen, AX, BX, CX, DX, können auch als doppelt so viele 8-Bit-Register (siehe Abbildung) zugänglich sein, während die anderen vier, Si, di, BP, sp nur 16-Bit sind.

Aufgrund einer kompakten Kodierung, die von 8-Bit-Prozessoren inspiriert wurde, sind die meisten Anweisungen ein Anweisungen oder zweiadressengeschäfte, was bedeutet, dass das Ergebnis in einem der Operanden gespeichert wird. Höchstens einer der Operanden kann im Speicher sein, aber dieser Speicheroperand kann auch der sein Ziel, während der andere Operand, die Quelle, Kann beides sein registrieren oder sofort. Ein einzelner Speicherort kann auch häufig als beide verwendet werden Quelle und Ziel was unter anderem weiter zu a beiträgt Codedichte Vergleichbar mit (und oft besser als) die meisten Acht-Bit-Maschinen zu dieser Zeit.

Der Grad der Allgemeinheit der meisten Register ist viel größer als im 8080 oder 8085. 8086 Register waren jedoch spezialisierter als bei den meisten Zeitgenössischen Minicomputer und werden auch implizit von einigen Anweisungen verwendet. Dies ist zwar für den Assembly-Programmierer vollkommen sinnvoll, was die Registerzuweisung für Compiler komplizierter ist als orthogonaler 16-Bit- und 32-Bit-Prozessoren der Zeit wie der PDP-11, Vax, 68000, 32016usw. andererseits regelmäßiger als die eher minimalistischen, aber allgegenwärtigen 8-Bit-Mikroprozessoren wie die 6502, 6800, 6809, 8085, MCS-48, 8051und andere moderne Akkumulator-basierte Maschinen ist es erheblich einfacher, eine effiziente Konstruktion zu konstruieren Code Generator Für die 8086 Architektur.

Ein weiterer Faktor hierfür ist, dass der 8086 auch einige neue Anweisungen (nicht in 8080 und 8085 vorhanden) eingeführt hat, um Stack-basierte Programmiersprachen wie Pascal und Stapel-basierte Programmiersprachen besser zu unterstützen Pl/m; Einige der nützlicheren Anweisungen sind Mem-op, und ret Größedie "Pascal" unterstützen Konvention anrufen"direkt. (mehrere andere, wie z. sofort drängen und Eintretenwurden in den nachfolgenden Prozessoren 80186, 80286 und 80386 hinzugefügt.)

Ein 64 kb (ein Segment) Stapel In Richtung niedrigerer Adressen wachsen wird in unterstützt Hardware-; 16-Bit-Wörter werden auf den Stapel gedrückt, und auf die Oberseite des Stapels wird von SS: SP vermerkt. Es gibt 256Interrupts, die sowohl von Hardware als auch von Software aufgerufen werden können. Die Interrupts können kaskaden und mit dem Stapel das Speichern des Stapels Rückgabeadressen.

Der 8086 hat 64 K 8-Bit (oder alternativ 32 K 16-Bit-Wort) E/O -Port Platz.

Flaggen

Der 8086 hat einen 16-Bit Flaggenregister. Neun dieser Bedingungscode -Flags sind aktiv und geben den aktuellen Status des Prozessors an: Fahne tragen (Vgl.), Paritätsflagge (Pf),, Auxiliary Carry Flag (Af), Zero flag (ZF), Zeichenflagge (Sf), Fallenflagge (Tf), Interrupt -Flagge (WENN), Richtungsflagge (Df) und Überlaufflagge (VON). Auch als Statuswort bezeichnet, lautet das Layout des Flagsregisters wie folgt:[8]

Bisschen 15-12 11 10 9 8 7 6 5 4 3 2 1 0
Flagge   VON Df WENN Tf Sf Zf   Af   Pf   Vgl

Segmentierung

Es gibt auch vier 16-Bit Segment Register (siehe Abbildung), die den 8086 erlauben Zentralprozessor zugreifen Megabyte in ungewöhnlicher Weise des Gedächtnisses. Anstatt das Segmentregister mit dem Adressregister zu verkettet, wie in den meisten Prozessoren, deren Adressraum ihre Registergröße überschreitet, verschiebt das 8086 das 16-Bit-Segment nur noch vier Bit ) und erzeugt daher eine 20-Bit-externe (oder effektive oder physische) Adresse aus dem 32-Bit-Segment: Offset-Paar. Infolgedessen kann jede externe Adresse durch 2 bezeichnet werden12 = 4096 Verschiedenes Segment: Offsetpaare.

  0110 1000 1000 01110000 SegmentAnwesend 16 Bit, 4 Bits übrig (oder multipliziert mit 0x10)
+ 0011 0100 1010 1001 OffsetAnwesend 16 Bit
                          
  0110 1011 1101 0001 1001 AdresseAnwesend 20 Bit

Obwohl viele Programmierer als kompliziert und umständlich angesehen werden, hat dieses Schema auch Vorteile. Ein kleines Programm (weniger als 64 kb) kann ab einem festen Versatz (z. B. 0000) in seinem eigenen Segment geladen werden, um die Notwendigkeit zu vermeiden Verlegung, mit höchstens 15 Bytes von Ausrichtungsabfällen.

Compiler für die 8086 -Familie unterstützen normalerweise zwei Arten von Arten von Zeiger, nahe und weit. Nahe Zeiger sind 16-Bit-Offsets, die implizit mit dem Code- oder Datensegment des Programms verbunden sind und können daher nur innerhalb von Teilen eines Programms verwendet werden, das klein genug ist, um in ein Segment zu passen. FAR-Zeiger sind 32-Bit-Segment: Offsetpaare, die auf 20-Bit-externe Adressen auflösen. Einige Compiler unterstützen auch riesig Zeiger, die wie weitaus Zeiger sind, außer dem Zeigerarithmetik Auf einem riesigen Zeiger behandelt es ihn als einen linearen 20-Bit-Zeiger, während Zeiger an einem Fernzeiger Arithmetik umschlingt Innerhalb seines 16-Bit-Versatzes ohne den Teil der Adresse zu berühren.

Um die Notwendigkeit zu vermeiden, anzugeben nahe und weit Auf zahlreichen Zeigern, Datenstrukturen und Funktionen unterstützen Compiler auch "Speichermodelle", die Standardzeigergrößen angeben. Das sehr klein (max 64k), klein (max 128k), kompakt (Daten> 64K), Mittel (Code> 64K), groß (Code, Daten> 64K) und riesig (einzelne Arrays> 64K) Modelle decken praktische Kombinationen von nah, fern und riesigen Zeiger auf Code und Daten ab. Das sehr klein Modell bedeutet, dass Code und Daten in einem einzigen Segment genutzt werden, genau wie in den meisten 8-Bit-basierten Prozessoren und können zum Erstellen verwendet werden .com Dateien zum Beispiel. Vorkompilierte Bibliotheken sind häufig in mehreren Versionen erhältlich, die für verschiedene Speichermodelle zusammengestellt wurden.

Nach Morse et al.,.[9] Die Designer haben tatsächlich mit einer 8-Bit-Verschiebung (anstelle von 4-Bit) nachgedacht, um einen physischen Adressraum von 16 MB zu schaffen. Da dies die Segmente jedoch gezwungen hätte, an 256 Byte-Grenzen zu beginnen, und 1 MB für einen Mikroprozessor um 1976 als sehr groß angesehen wurde, wurde die Idee abgewiesen. Außerdem gab es für die zusätzlichen vier Adressbusstifte nicht genügend Stifte für ein kostengünstiges 40-polige Paket.

Grundsätzlich der Adressraum der X86 -Serie könnte wurden in späteren Prozessoren erweitert, indem der Schaltwert erhöht wurde, solange die Anwendungen ihre Segmente aus dem Betriebssystem erhielten und keine Annahmen über die Äquivalenz verschiedener Segments machten: Offsetpaare.[Anmerkung 12] In der Praxis war die Verwendung von "riesigen" Zeigern und ähnlichen Mechanismen weit verbreitet, und die flache 32-Bit-Adressierung ermöglichte mit den 32-Bit-Versatzregistern im 80386 schließlich den begrenzten Adressierungsbereich allgemeiner.

Der Anweisungsstrom wird als Wörter aus dem Speicher abgerufen und vom Prozessor nach Bedarf intern auf die Byte -Ebene angesprochen. Ein Anweisungsstrom -Warteschlangenmechanismus ermöglicht es, bis zu 6 Bytes des Befehlsstroms in die Warteschlange zu stellen, während sie auf Dekodierung und Ausführung warten. Die Warteschlange fungiert als FIFO-Puffer (Erst-in-First-Out-Out-Out), aus dem die Ausführungseinheit (EU) Anweisungsbytes nach Bedarf extrahiert. Immer wenn in der Warteschlange für mindestens zwei Bytes Platz vorhanden ist, versucht die BIU einen Wort, der Speicherzyklus abreißt. Wenn die Warteschlange leer ist (z. B. nach einer Zweiganweisung), wird das erste Byte in die Warteschlange sofort der EU zur Verfügung.[10]

Ältere Software portieren

Kleine Programme könnten die Segmentierung ignorieren und einfach eine 16-Bit-Adressierung verwenden. Dies erlaubt 8 Bit Software, die leicht auf den 8086 portiert werden kann. Die Autoren der meisten DOS Implementierungen nutzten dies durch die Bereitstellung einer Programmierschnittstelle Sehr ähnlich zu CP/m sowie einbezogen die einfachen .com Ausführbares Dateiformat, identisch mit CP/M. Dies war wichtig, als die 8086 und MS-DOS neu waren, da viele bestehende CP/M (und andere) Anwendungen schnell zur Verfügung gestellt werden konnten, was die Akzeptanz der neuen Plattform erheblich erleichtert.

Beispielcode

Folgende 8086/8088 Assembler Der Quellcode ist für eine Unterroutine mit dem Namen _memcpy Das kopiert einen Block von Datenbytes einer bestimmten Größe von einem Ort zum anderen. Der Datenblock wird jeweils ein Byte kopiert, und die Datenbewegungs- und Looping-Logik verwendet 16-Bit-Vorgänge.

                      0000: 1000 0000: 1000 0000: 1000 55 0000: 1001 89 E5 0000: 1003 06 0000: 1004 8B 4E 06 0000: 1007 E3 11 0000: 1009 8b 76 04 0000: 100c 8b 7e 02 0000: 100f 1e 0000: 1010 1010 07 07 07 07 07 07 07.07.07 07.07.1010 07.07.1010 07.07.07. 0000: 1011 8a 04 0000: 1013 88 05 0000: 1015 46 0000: 1016 47 0000: 1017 49 0000: 1018 75 F7 0000: 101a 07 0000: 101b 5d 0000: 101c 29 C0 0000: 101e C3 0000: 101f
; _memcpy (dst, src, len) ; Kopieren Sie einen Speicherblock von einem Ort zum anderen. ; ; Eingabestapelparameter ; [BP+6] = len, Anzahl der zu kopierenden Bytes ; [BP+4] = SRC, Adresse des Quelldatenblocks ; [BP+2] = DST, Adresse des Zieldatenblocks ; ; Return -Register ; Ax = null  Org 1000h  ; Beginnen Sie bei 0000: 1000h _memcpy  Proc  drücken  bp  ; Richten Sie den Anrufrahmen ein  MOV  bp,sp  drücken  es  ; Rette es  MOV  CX, [bp+6]  ; Setzen Sie CX = len  JCXZ  erledigt  ; Wenn Len = 0 zurückkehren  MOV  Si, [bp+4]  ; Setzen Sie Si = src  MOV  di, [bp+2]  ; Setzen Sie di = dst  drücken  ds  ; Setzen Sie es = ds  Pop  es Schleife  MOV  al, [Si]  ; Laden Sie AL von [SRC]  MOV  [di],al  ; Speichern Sie Al in [DST]  Inc.  Si  ; Src erhöhen  Inc.  di  ; Inkrementierung DST  dez  CX  ; Dekremente Len  Jnz  Schleife  ; Wiederholen Sie die Schleife erledigt  Pop  es  ; Restaurieren eS  Pop  bp  ; Stellen Sie den vorherigen Anrufrahmen wieder her  Sub  Axt,Axt  ; Setzen Sie AX = 0  ret  ; Zurückkehren  Ende Proc 

Der obige Code verwendet das BP -Register (Basiszeiger), um a zu etablieren Rahmen aufrufen, ein Bereich auf dem Stapel, der alle Parameter und lokalen Variablen für die Ausführung der Unterroutine enthält. Diese Art von Konvention anrufen Unterstützung wieder eingetreten und rekursiv Code und wird seit den späten 1950er Jahren von den meisten Algol-ähnlichen Sprachen verwendet.

Die obige Routine ist eine ziemlich umständliche Methode, um Datenblöcke zu kopieren. Der 8086 enthält dedizierte Anweisungen zum Kopieren von Byt -Zeichenfolgen. Diese Anweisungen gehen davon aus, dass die Quelldaten bei DS: SI gespeichert sind, die Zieldaten bei ES: DI gespeichert sind und dass die Anzahl der zu kopierten Elemente in CX gespeichert ist. Die obige Routine erfordert, dass die Quelle und der Zielblock im selben Segment liegen, daher wird DS in ES kopiert. Der Schleifenabschnitt des oben genannten kann ersetzt werden durch:

0000: 1011 FC 0000: 1012 F3 0000: 1013 A4
  Cld  ; Kopieren Sie in höhere Adressen Schleife  Rep  ; Wiederholen Sie bis cx = 0  MOVSB  ; Bewegen Sie den Datenblock 

Dies kopiert den Datenblock von einem Byte nach dem anderen. Das Rep Anweisungen verursachen die folgenden MOVSB Um zu wiederholen, bis CX Null ist, erhöhen Sie SI und DI automatisch und verringern CX, wenn es sich wiederholt. Alternativ die MOVSW Die Anweisung kann verwendet werden, um 16-Bit-Wörter (Doppelbytes) gleichzeitig zu kopieren (in diesem Fall zählt CX die Anzahl der kopierten Wörter anstelle der Anzahl der Bytes). Die meisten Abgeordneten erkennen die richtig erkennen Rep Anweisungen bei Verwendung als Inline-Präfix für die MOVSB Anweisung wie in Rep Movsb.

Diese Routine funktioniert bei unterbrochener Richtlinie, da der Programmzähler weiterhin auf die verweist Rep Anweisung, bis die Blockkopie abgeschlossen ist. Die Kopie wird daher von dort fortgesetzt, wo sie aufgehört hat, wenn die Interrupt -Service -Routine die Kontrolle zurückgibt.

Leistung

Vereinfachtes Blockdiagramm über Intel 8088 (eine Variante von 8086); 1 = Haupt- und Indexregister; 2 = Segmentregister und IP; 3 = Adressaddierer; 4 = interner Adressbus; 5 = Anweisungswarteschlange; 6 = Steuereinheit (sehr vereinfacht!); 7 = Busschnittstelle; 8 = interne Datenbut; 9 = Alu; 10/11/12 = externe Adresse/Daten/Steuerbus.

Obwohl teilweise von anderen Designoptionen in diesem speziellen Chip beschattet, die, die Multiplexed Adresse und Datenbusse Leistung leicht begrenzen; Transfers von 16-Bit- oder 8-Bit-Größen werden in einem Vier-Glock-Speicherzugriffszyklus durchgeführt, der bei 16-Bit schneller ist, wenn auch bei 8-Bit-Mengen langsamer, im Vergleich zu vielen zeitgenössischen 8-Bit-Basis-CPUs. Da die Anweisungen von eins bis sechs Bytes variieren, werden Abruf und Ausführung erfolgen gleichzeitig und in getrennte Einheiten entkoppelt (wie es in den heutigen x86 -Prozessoren bleibt): die BUS -Schnittstelleneinheit füttert den Befehlsstrom zum Anweisungsstrom Ausführungseinheit durch eine 6-Byte Pipelining), beschleunigen Vorgänge auf Register und unmittelbar, während Speicheroperationen langsamer wurden (vier Jahre später wurde dieses Leistungsproblem mit dem behoben 80186 und 80286). Die vollständige (statt teilweise) 16-Bit-Architektur mit einer vollständigen Breite Alu bedeutete, dass 16-Bit-arithmetische Anweisungen jetzt mit einem einzelnen Alu-Zyklus (anstelle von zwei über interne Trage wie in 8080 und 8085) durchgeführt werden konnten, was diese Anweisungen erheblich beschleunigte. Kombiniert mit Orthogonalisierungen von Operationen versus Operand Typen und Adressierungsmodisowie andere Verbesserungen machte dies den Leistungsgewinn über den 8080 oder 8085 ziemlich bedeutend, obwohl die älteren Chips schneller sein können (siehe unten).

Ausführungszeiten für typische Anweisungen (in Taktzyklen)[11]
Anweisung Register registrieren sofort registrieren Register-Memory Speicherregister Speichermedizin
MOV 2 4 8+ea 9+ea 10+ea
Alu 3 4 9+ea, 16+ea, 17+ea
springen registrieren ≥ 11; Etikett ≥ 15; Zustand, Etikett ≥ 16
Ganzzahl multiplizieren 70 ~ 160 (je nach Operanden Daten sowie Größe) einschließlich Jeder EA
Ganzzahl teilt 80 ~ 190 (je nach Operanden Daten sowie Größe) einschließlich Jeder EA
  • EA = Zeit, um eine effektive Adresse im Bereich von 5 bis 12 Zyklen zu berechnen.
  • Die Zeitpunkte sind am besten Fall, abhängig vom Vorab -Status, der Anweisungsausrichtung und anderer Faktoren.

Wie aus diesen Tabellen hervorgeht, waren Operationen auf Registern und Unmittelbar schnell (zwischen 2 und 4 Zyklen), während die Anweisungen und Sprünge von Speicher und Operand ziemlich langsam waren; Sprünge dauerten mehr Zyklen als auf dem einfachen 8080 und 8085und der 8088 (im IBM PC verwendet) wurde zusätzlich durch den schmaleren Bus behindert. Die Gründe, warum die meisten Speicheranweisungen langsam waren, waren dreifach:

  • Lose gekoppelte Abruf- und Ausführungseinheiten sind effizient für den Vorgang der Anweisungen, jedoch nicht für Sprünge und zufällige Datenzugriff (ohne spezielle Maßnahmen).
  • Es wurde kein dedizierter Adressberechnungsaddierer gewährt; Die Mikrocode -Routinen mussten dafür das Haupt -ALU verwenden (obwohl es eine engagierte gab Segment + Offset Addierer).
  • Die Adresse und Datenbusse waren Multiplexedeinen etwas längeren Buszyklus (33 ~ 50%) als in typischen modernen 8-Bit-Prozessoren.

Die Leistung des Speicherzugriffs wurde jedoch mit Intel die nächste Generation von 8086 -Familien -CPUs drastisch verbessert. Das 80186 und 80286 Beide hatten dedizierte Adressberechnungshardware, sparen viele Zyklen, und der 80286 hatte auch separate (nicht-multiplexe) Adressadresse und Datenbusse.

Schwimmender Punkt

Der 8086/8088 könnte mit einem mathematischen Koprozessor angeschlossen werden, um Hardware/Mikrocode-basierte hinzuzufügen Schwimmpunkt Leistung. Das Intel 8087 war der Standard-Mathematik-Koprozessor für den 8086 und 8088, der auf 80-Bit-Zahlen arbeitete. Hersteller mögen Cyrix (8087-kompatibel) und Weitek (nicht 8087-kompatibel) kam schließlich auf Hochleistungs-Schwimmkoprozessoren, die mit dem 8087 konkurrierten.

Chipversionen

Die Taktfrequenz war ursprünglich auf 5 MHz begrenzt.[Anmerkung 13] Aber die letzten Versionen in Hmos wurden für 10 MHz angegeben. HMOS-III und CMOs Versionen wurden lange hergestellt (mindestens eine Weile bis in die 1990er Jahre) für eingebettete Systeme, obwohl sein Nachfolger der 80186/80188 (Dazu gehören einige On-Chip-Peripheriegeräte), ist für den eingebetteten Gebrauch beliebter.

Der 80C86, die CMOS -Version des 8086, wurde in der verwendet GRiDPad, Toshiba T1200, HP 110und schließlich die 1998–1999 Mondprospektor.

Für die Verpackung war der Intel 8086 sowohl in Keramik- als auch in Plastik -Dip -Paketen erhältlich.

Eine Keramik -D8086 -Variante
Eine Plastik -P8086 -Variante

Liste der Intel 8086

Modellnummer Frequenz Technologie Temperaturbereich Paket Datum der Veröffentlichung Preis (USD)[List2 1]
8086 5 MHz[12] Hmos 0 ° C bis 70 ° C[13] 8. Juni 1978[14] $ 86.65[15]
8086-1 10 MHz HMOS II Kommerziell
8086-2 8 MHz[12] HMOS II Kommerziell Januar/Februar 1980[16] $ 200[16][17]
8086-4 4 MHz[12] Hmos Kommerziell $ 72.50[List2 2][18]
I8086 5 MHz Hmos Industrie –40 ° C bis +85 ° C[13] Mai/Juni 1980[13] $ 173.25[13]
M8086 5 MHz Hmos Militärische Grad –55 ° C bis +125 ° C[19]
80C86[20] CMOs 44 Pin PLCC[LIST2 3][21]
  1. ^ In Menge von 100.
  2. ^ Der Preis reduziert um 21% von USD 99,00 $, keine Informationen im Mengenwert aufgelistet.
  3. ^ Probenahme Q4 1985

Derivate und Klone

Kompatibel - und in vielen Fällen verbessert - wurden von den Versionen hergestellt von Fujitsu,[22] Harris/Intersil, Oki, Siemens, Texas Instrumente, NEC, Mitsubishi, und AMD. Zum Beispiel die NEC V20 und NEC V30 Das Paar war mit dem 8088 und 8086 hardwarekompatibel Um sowohl den Anweisungssatz als auch die Verarbeitungsgeschwindigkeit zu verbessern, ohne dass Hersteller ihre Designs ändern müssen. Solche relativ einfachen und niedrigen 8086-kompatiblen Prozessoren in CMOs werden in eingebetteten Systemen immer noch verwendet.

Die Elektronikindustrie der Sovietunion war in der Lage, den 8086 durch zu replizieren beide Industriespionage und Reverse Engineering. Der resultierende Chip, K1810VM86war binär und pinkompatibel mit dem 8086.

i8086 und i8088 waren jeweils die Kerne der sowjetischen PC-kompatiblen EC1831- und EC1832-Desktops. (EC1831 ist die EC -Identifizierung von Izot 1036C und EC1832 ist die EC -Identifizierung von Izot 1037c, die in Bulgarien entwickelt und hergestellt wurde. . Der EC1831 war der erste PC-kompatible Computer mit dynamischer Busgrößen (US Pat. Nr. 4,831.514). Später wurden einige der EC1831-Prinzipien in PS/2 (US-Pat. Nr. 5.548.786) und einigen anderen Maschinen (UK Patentanmeldung, Veröffentlichung Nr. GB-A-2111325, veröffentlicht am 28. Juni 1989) übernommen.

Sowjetischer Klon K1810VM86
Oki M80C86a QFP-56
NEC μPD8086D-2 (8 MHz) ab dem Jahr 1984, Woche 19 Japan (Klon von Intel D8086-2)

Unterstützen Sie Chips

  • Intel 8237: DMA -Controller (Direct Memory Access Access)
  • Intel 8251: Universal Synchron/Asynchronous Receiver/Sender bei 19,2 kbit/s
  • Intel 8253: programmierbarer Intervall-Timer, 3x 16-Bit max 10 MHz
  • Intel 8255: programmierbare periphere Schnittstelle, 3x 8-Bit-E/A-Stifte, die für die Druckerverbindung verwendet werden usw.
  • Intel 8259: programmierbarer Interrupt -Controller
  • Intel 8279: Tastatur/Anzeigecontroller, scannt eine Tastaturmatrix und Anzeigematrix wie 7-seg
  • Intel 8282/8283: 8-Bit-Verriegelung
  • Intel 8284: Uhrengenerator
  • Intel 8286/8287: Bidirektional 8-Bit-Fahrer. 1980 waren beide Intel i8286/i8287 (Industrial Grade) -Version für 16,25 US -Dollar in Mengen von 100 erhältlich.[13]
  • Intel 8288: Buscontroller
  • Intel 8289: Bus Arbiter
  • NEC µPD765 oder Intel 8272A: Floppy Controller[23]

Mikrocomputer mit dem 8086

  • Der Intel Multibus-kompatibel Single-Board-Computer ISBC 86/12 wurde 1978 bekannt gegeben.[24]
  • Das Xerox Notetaker war einer der frühesten tragbarer Computer Entwürfe im Jahr 1978 und verwendeten drei 8086 Chips (als CPU, Grafikprozessor und E/A -Prozessor), aber nie in die kommerzielle Produktion eingetreten.
  • Seattle Computerprodukte versendet S-100 Bus Basierend 8086 Systeme (SCP200B) Bereits im November 1979.
  • Der Norweger Mycron 2000, eingeführt 1980.
  • Einer der einflussreichsten Mikrocomputer von allen, die IBM PCbenutzte die Intel 8088, eine Version des 8086 mit einem 8-Bit Datenbus (wie oben erwähnt).
  • Der Erste Compaq Deskpro Verwendet einen 8086, der bei 7,16 MHz ausgeführt wurde, war jedoch mit Add-In-Karten kompatibel, die für den 4,77 MHz ausgelegt sind IBM PC XT und könnte die CPU auf die niedrigere Geschwindigkeit umschalten (die auch in einem Speicherbusspuffer umgeschaltet wurde, um den langsameren Zugriff des 8088 zu simulieren), um Probleme mit der Software -Timing zu vermeiden.
  • Ein 8 MHz 8086-2 wurde in der verwendet AT & T 6300 PC (gebaut von Olivettiund weltweit unter mehreren Marken und Modellnummern bekannt) ein IBM PC-kompatibler Desktop-Mikrocomputer. Der M24 / PC 6300 verfügt IBM PC bei, aber unterschiedlich in den Entwurfsdetails und physikalisch inkompatibel) und alle Systemperipheriegeräte einschließlich des Onboard-Videosystems genießen auch 16-Bit-Datenübertragungen. Der spätere Olivetti M24SP zeigte einen 8086-2 mit maximal 10 MHz.
  • Das IBM PS/2 Die Modelle 25 und 30 wurden mit einem 8 MHz 8086 gebaut.
  • Das Amstrad PC1512, PC1640, PC2086, PC3086 und PC5086 verwendeten 8086 CPUs bei 8 MHz.
  • Das NEC PC-9801.
  • Das Tandy 1000 SL-Serie- und RL-Maschinen, die 9,47 MHz 8086 CPUs verwendet haben.
  • Das IBM DisplayWriter Textverarbeitungsmaschine[25] und der wang professionelle Computer, hergestellt von Wang Laboratorienauch die 8086.
  • NASA Verwendete ursprüngliche 8086-CPUs für Geräte zur bodengestützten Wartung der Space Shuttle Discovery Bis zum Ende des Space Shuttle -Programms im Jahr 2011. Diese Entscheidung wurde getroffen, um zu verhindern Software -Regression Dies kann sich aus dem Upgrade oder dem Umschalten auf unvollkommene Klone ergeben.[26]
  • Kaman -Prozess- und Flächenstrahlungsmonitore[27]

Siehe auch

Anmerkungen

  1. ^ Weniger TTL -Puffer, Riegel, Multiplexer (obwohl die Menge an TTL Logik war nicht drastisch reduziert). Es ermöglicht auch die Verwendung von billigen 8080-Familien-ICs, wo der 8254 CTC, 8255 PIO und 8259 PIC wurden im IBM PC -Design verwendet. Darüber hinaus wird das Layout von PCB einfacher und Boards billiger sowie weniger (1- oder 4-Bit-Breite) Dram-Chips.
  2. ^ Verwenden von Verbesserungslast PMOS -Logik (erfordert 14VTTL -Kompatibilität durch vCC bei +5 V und vDd bei –9 V).
  3. ^ Verwendung nicht gesättigter Verbesserung NMOS -Logik (fordert eine höhere Gate-Spannung für die Lasttransistoren-Tore).
  4. ^ Ermöglicht mit der NMOS-Logik der Depletion-Last (der 8085 wurde später unter Verwendung der HMOS-Verarbeitung wie dem 8086 erstellt).
  5. ^ Rev.0 des Unterrichtssatzes und der Architektur war laut Morse in etwa drei Monaten fertig.
  6. ^ Verwendung Rubylith, Light Boards, Herrscher, elektrische Radiergummis und a Digitalisierer (Laut Jenny Hernandez, Mitglied des 8086 -Designteams, in einer Erklärung auf Intels Webseite zum 25. Geburtstag).
  7. ^ 8086 verwendete weniger Mikrocode als viele Konstruktionen vieler Wettbewerber, wie das MC68000 und andere
  8. ^ Schnelle statische Widder in der MOS -Technologie (so schnell wie bipolare Rams) waren in diesem Zeitraum ein wichtiges Produkt für Intel.
  9. ^ CHMOS ist der Name von Intel für CMOS -Schaltkreise, die mit Verarbeitungsschritten hergestellt werden, die sehr ähnlich sind Hmos.
  10. ^ Andere Mitglieder des Designteams waren Peter A.Stoll und Jenny Hernandez.
  11. ^ Der IBM PC und PC/XT verwenden einen Intel 8088, der im maximalen Modus ausgeführt wird, wodurch die CPU mit einem optionalen 8087 -Coprozessor funktioniert, der in der Mathematik -Coprozessor -Socket auf dem PC- oder PC/XT -Mainboard installiert ist. (Der PC und PC/XT erfordern möglicherweise aus anderen Gründen einen maximalen Modus, z. B. um den DMA -Controller zu unterstützen.)
  12. ^ Einige 80186 -Klone änderten den Schaltwert, wurden jedoch in Desktop -Computern jedoch nie häufig verwendet.
  13. ^ (IBM PC verwendet 4,77 MHz, 4/3 Der Standard -NTSC Farbausbruch Frequenz)

Verweise

  1. ^ CPU -Geschichte - Das CPU -Museum - Lebenszyklus der CPU.
  2. ^ "Mikroprozessor Hall of Fame". Intel. Archiviert von das Original Am 2007-07-06. Abgerufen 2007-08-11.
  3. ^ IAPX 286 Programmer Referenz (PDF). Intel. 1983. p. 1-1.
  4. ^ a b "Alles Gute zum Geburtstag, 8086: Intel Core I7-8086K der 8. Generation der 8. Generation liefert Top Gaming-Erlebnis". Intel.
  5. ^ "8080 Familie". CPU -Welt.
  6. ^ Scanlon, Leo J. (1988). 8086/8088/80286 Assemblersprache. Brady Books. p.12. ISBN 978-0-13-246919-7. […] Das 8086 ist softwarekompatibel mit dem 8080 auf der montagesprachigen Ebene. […]
  7. ^ Geiger, Randall L.; Allen, Phillip E.; Strader, Noel R. (1990). "Zufällige Logik gegen strukturierte Logikformen". VLSI -Designtechniken für analoge und digitale Schaltungen. McGraw-Hill. p. 779. ISBN 0-07-023253-9. - Abbildung der Verwendung von "zufälliger" Beschreibung der CPU -Kontrolllogik
  8. ^ Intel Corporation (1983). IAPX 86, 88, 186 und 188 Benutzerhandbuch: Programmiererreferenz. S. 3–5. ISBN 978-0835930352. OCLC 11091251.
  9. ^ Morse, Stephen P.; Ravenel, Bruce W; Mazor, Stanley; Pohlman, William B. (Oktober 1980). "Intel -Mikroprozessoren: 8008 bis 8086". IEEE -Computer. 13 (10): 42–60. doi:10.1109/mc.1980.1653375. S2CID 206445851.
  10. ^ "8086 16-Bit-HMOS-Prozessor-Datenblatt" (PDF). Intel. Abgerufen 26. November 2021.
  11. ^ Microsoft Macro Assembler 5.0 Referenzhandbuch. Microsoft Corporation. 1987. Timings und Codierungen in diesem Handbuch werden mit Genehmigung von Intel verwendet und stammen aus den folgenden Veröffentlichungen: Intel Corporation. IAPX 86, 88, 186 und 188 Benutzerhandbuch, Programmiererreferenz, Santa Clara, Kalifornien 1986. (Ähnlich für IAPX 286, 80386, 80387.)
  12. ^ a b c Das 8086 -Familienbenutzerhandbuch. Intel Corporation. Oktober 1979. p. B-1. OCLC 65699372.
  13. ^ a b c d e Intel Corporation (Mai - Juni 1980). "8086 für das industrielle Umfeld verfügbar". Intel Vorschau (Sonderausgabe: 16-Bit-Lösungen): 29.
  14. ^ "Intel® Microprozessor Schnellreferenzhandbuch - Jahr". www.intel.com.
  15. ^ Intel Corporation (Mai - Juni 1980). "Die 8086 -Familie: Konzepte und Realitäten". Intel Vorschau (Sonderausgabe: 16-Bit-Lösungen): 19.
  16. ^ a b Intel Corporation (Januar - Februar 1980). "Neue Produkte: Schneller 8086 bietet 60% mehr Leistung". Intel Vorschau: 22.
  17. ^ Intel Corporation (Mai - Juni 1980). "Neue 8086 -Familienprodukte steigern die Prozessorleistung um 50 Prozent". Intel Vorschau (Sonderausgabe: 16-Bit-Lösungen): 17.
  18. ^ Intel Corporation (Mai - Juni 1979). "Mikrocomputerkomponenten: Neue Preissenkungen und Produktionsverbesserungen machen den beliebten 8086 -Mikroprozessor noch attraktiver." Intel Vorschau: 11.
  19. ^ Intel Corporation (August 1981). Intel IAPX86, 88 Benutzerhandbuch. p. B-25. ISBN 0835930165. OCLC 8459750.
  20. ^ Intel Corporation, "Newsbit: Intel Lizenzen Oki über CMOS -Version mehrerer Produkte", Solutions, Juli/August 1984, Seite 1.
  21. ^ Ashborn, Jim; "Advanced Packaging: Ein bisschen geht einen langen Weg", Intel Corporation, Solutions, Januar/Februar 1986, Seite 2
  22. ^ Intel Corporation, "Newsbits: Second Source News", Solutions, Januar/Februar 1985, Seite 1
  23. ^ "Die Floppy Controller Evolution | OS/2 Museum". 2011-05-26. Abgerufen 2016-05-12. Im ursprünglichen IBM PC (1981) und PC/XT (1983) befand sich die FDC physisch auf einer separaten Diskettenadapterkarte. Das FDC selbst war ein NEC µPD765A oder ein kompatibler Teil wie der Intel 8272A.
  24. ^ "Intel fügt 16-Bit-Single-Board hinzu". Computerwelt. Vol. Xii, nein. 50. 11. Dezember 1978. p. 86. ISSN 0010-4841.
  25. ^ Zachmann, Mark (23. August 1982). "Fehler im IBM -Personalcomputer frustrieren Kritiker". InfoWorld. Vol. 4, nein. 33. S. 57–58. ISSN 0199-6649. Der IBM DisplayWriter ist merklich teurer als andere industrielle Mikros, die den 8086 verwenden.
  26. ^ "Für alte Teile geht die NASA mutig ... bei eBay". New York Times. 12. Mai 2002.
  27. ^ Kaman Tech. Handbuch

Externe Links