Pinbelegung des 8086 im Maximum- und Minimum-ModusDie eines Siemens SAB 8086 (SAB 8086-2-C)
DerIntel 8086, später auchiAPX 86, ist ein16-Bit-Mikroprozessor vonIntel. Der 1978 entwickelte Prozessor wurde zum Urvater der80x86-Familie. Das Design basierte auf Intels 8-Bit-Prozessoren8080 und8085; derBefehlssatz war so konzipiert, dassAssembler-Quelltext für den 8080/8085 leicht automatisch in gültigen 8086-Quelltext umgewandelt werden konnte. Eine direkteKompatibilität, also die Möglichkeit, die 8080-Programme auch ohne Neuassemblierung ablaufen zu lassen, bestand aber nicht. Wie dem 8080 fehlten dem 8086 einige wesentliche Bausteine wieInterrupt- undDMA-Controller, die als externe Chips dazukamen. Der 8086 unterstützt auch keineGleitkomma-Operationen, kann jedoch von Haus aus mit einemIntel 8087-Koprozessor zusammenarbeiten, der dann die Gleitkomma-Berechnungen ausführt. DerIntel-8089-Koprozessor bietet erweiterteI/O-Funktionen und dient unter anderem alsDMA-Controller. Später erschien die Version8088 mit einem auf 8 Bit reduzierten externen Befehls- und Datenbus, der intern jedoch genau wie der 8086 mit 16-Bit arbeitet und daher voll kompatibel ist.
Eine Besonderheit ist dieSpeichersegmentierung. Mit einem 16-Bit-Adressregister ist es nur möglich, maximal 64 KB Speicher zu adressieren. Um trotzdem mehr möglichen Speicher adressieren zu können, gab Intel dem Prozessor 20 Adressleitungen für 220 Adressen (max. 1 MBArbeitsspeicher). Um eine Adresse zu speichern, werden zwei Register verwendet: ein Segment- und ein Offsetregister. Die Adresse einer physikalischen Speicherstelle berechnet der Prozessor automatisch, indem er die Segmentadresse × 16 nimmt und die Offsetadresse addiert. So entstehen im Speicher 65.536 um 16 Byte versetzte Adressbereiche (Segmente) zu je 64 KB Größe. Auf diese Weise kann der Chip 1 MB adressieren, wobei innerhalb jedes Segments mit 16-Bit-Adressen gearbeitet werden kann. Da es nur 20 Adressleitungen gibt, erscheinen die untersten 64 KB (-16 Byte) noch einmal „gespiegelt“ am oberen Ende des Adressraums (da es bei der Adressrechnung zu einemÜberlauf kommt).
Wenn beispielsweise das Segmentregister die Adresse 1234hex und das Offset-Register die Adresse 5678hex enthält, was meist als1234:5678 geschrieben wird, dann wird im Speicher auf die Adresse 1234hex × 10hex + 5678hex = 12340hex + 5678hex = 179B8hex zugegriffen.
Vorteil der Speichersegmentierung ist unter anderem eine einfachere Portierbarkeit von Programmen, die nur mit 16-Bit-Adressen arbeiten, und eine höhereCode-Dichte, Nachteil die umständliche Programmierung und die Beschränkung auf ein Megabyte; andere 16-Bit-Architekturen erlaubten meist einen Adressraum von mindestens 16 MB. Allerdings war 1 MB Ende der 1970er Jahre für einenMikrocomputer ohnehin viel mehr, als benötigt oder tatsächlich an Speicher eingebaut wurde, auch wegen der hohen Preise fürRAM (derIBM PC hatte zum Beispiel zunächst je nach Variante nur maximal 64 KB Speicher,Heimcomputer aus der gleichen Zeit meist noch deutlich weniger).
Verglichen mit anderen 16-Bit-Prozessoren hat der 8086 nur eine geringe Anzahl an Registern. Für viele Operationen ist oft nur ein bestimmtes Register verwendbar – der 8086 ist damit ein erweiterterAkkumulatorrechner, als Allzweck-Register stehen meist nur vier zur Verfügung.Eine oft genutzte fest einem Register zugewiesene Funktion ist die (Ganzzahl-)Multiplikation: Der Multiplikand muss 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. Durch diese feste Registerbindung ist man häufig gezwungen, Werte auf denStack oder in den Arbeitsspeicher zu sichern und von dort zu laden, da die Prozessorbefehle häufig vorgeben, welche Register gerade für die Zwischenwerte genutzt werden können. Andere 16-Bit-Prozessoren erlauben dagegen, dass man für jede Operation die zu verwendenden Allzweck-Register auswählt und damit seltener Zwischenergebnisse auf dem Stack und im Arbeitsspeicher sichern muss (Registermaschine); auch hatten diese Architekturen meist 16 oder mehr Register, während der 8086 (abzüglich der erwähnten Segmentregister) nur vier halbwegs allgemeine und vier speziellere Register unterstützte. Dies ist insofern ein Problem, da Zugriffe auf den Arbeitsspeicher im Vergleich zu Registerzugriffen sehr langsam sind.
Dieses Register-Konzept vererbte der 8086 auf seinen Nachfolger80286 und auf alle späteren, zur sog.x86-Familie zählenden Prozessoren, jedoch wurde die Zahl der Register im neuenx64-Modus der aktuellen Prozessoren immerhin verdoppelt, zusätzlich sind die Register der aktuellen x86-Generation 64 Bit „breit“.
Der 8086 (und auch der 8088) kann in einemMinimum- und einemMaximum-Modus betrieben werden. Die Wahl erfolgt über den MN/MX-Pin 33. Wird er auf 0 V (Low) geschaltet, so arbeitet der 8086/88 im Maximum-Modus, bei +5 V (High) im Minimum-Modus. Im Minimum-Modus können kompakte einfache Schaltungen realisiert werden; die erforderlichen Steuerleitungen stellt der Prozessor selbst zur Verfügung. Der Maximum-Modus ist in erster Linie für den Multiprozessorbetrieb bzw. für die Arbeit mit den Koprozessoren8087 und8089 vorgesehen.
Der Takt für den 8086 wird über Pin 19 zugeführt, dieser Takt muss ein 1:2-Tastverhältnis haben. Dieser wird vom Oszillator-Chip8284, an den ein Quarz mit der dreifachen Taktfrequenz[1] anzuschließen ist, generiert. Wird der Prozessor imMaximum-Modus betrieben – was meistens der Fall ist –, werden die erforderlichen SteuerleitungenWR, M/IO, DT/R,DEN, ALE undINTA nicht bereitgestellt, sondern müssen durch den Bus-Controller8288 bereitgestellt werden. Ist der Prozessor Teil eines Multiprozessorsystems, ist zusätzlich der Bus-Arbiter8289 erforderlich. Ferner ist zur Abtrennung der Adressen aus dem gemultiplexten Adress-/Datenbus einLatch erforderlich, zum Beispiel der8282. Für die ausreichende Ansteuerung der gesamten Bussysteme wie auch im Multiprozessorbetrieb benötigt manbidirektionale Treiber, zum Beispiel den8286.
Der kompatible, aber mit 8 Bit Datenbus-Busbreite ca. 25 bis 30 % langsamere8088, der wenig später auf den Markt kam, wurde vor allem imIBM PC und dessenNachbauten eingesetzt. Einige Hersteller verwendeten aber auch den 8086, darunterOlivetti im Modell M 24. Seine größte Verbreitung erhielt der Prozessor in dem von dem englischen ComputerherstellerAmstrad erfolgreich vertriebenen PC-ClonePC1512 undPC1640. In Deutschland wurden diese Rechner von derSchneider Computer Division unter eigenen Namen vermarktet. Der 8086 kam aber auch z. B. bei einem der erstenTabletcomputer, demGRiDPad und bei derRaumsondeCassini-Huygens zum Einsatz.
DieNASA durchsuchte immer wieder den Restbestände-Markt nach einer bestimmten, damals bereits lange nicht mehr hergestellten Spezialversion des 8086, um das Shuttleprogramm durchführen zu können.[2][3] Diese Version des 8086 ist besonders unempfindlich gegen elektromagnetische Strahlung und wurde nicht nur vom Militär, sondern auch von Herstellern von medizinischen Geräten verwendet.
Der 8086 wurde von verschiedenen Herstellern in Lizenz und in verschiedenenChipgehäusen gefertigt. In der damaligen UdSSR wurde mit Hilfe desReverse Engineering eine eigene nicht lizenzierte Version (Klon) entwickelt, dieК1810-Reihe[4].
8086-Nachbau KR1810VM86 (kyrillisch КP1810ВМ86) der K1810-Reihe aus der damaligen UdSSR
Außer pin- und funktionsgleichen Nachbauten (vor allem die inCMOS-Technologie hergestelltenNEC V20 und V30) sowie der günstigeren, „abgespeckten“ Variante 8088, wurden in Konkurrenzprodukten zum IBM PC gerne derMotorola-68000-Prozessor verwendet, selten derZilog Z8000, selten derNational Semiconductor NS16032. (Sowohl Motorola 68000 als auch NS16032 sind jedoch 32-Bit-Prozessoren.)
↑William J. Broad:For Old Parts, NASA Boldly Goes . . . on eBay. In:The New York Times. 12. Mai 2002,ISSN0362-4331,S.24 (englisch,nytimes.com [abgerufen am 24. Oktober 2009]).
↑СЕРИИ К1810. (PDF; 565 kB) In: inis.iaea.org. International Atomic Energy Agency: International Nuclear Information System, abgerufen am 14. März 2021 (russisch).
↑Harris Corporation (Hrsg.):CMOS Digital Data Book. 1984, Kapitel 3: „CMOS 80C86 Family“ (englisch,bitsavers.org [PDF;35,7MB; abgerufen am 14. März 2021]).