Diskussion:Tornjak und Intel 8086: Unterschied zwischen den Seiten
Zeile 1: | Zeile 1: | ||
{{Infobox Mikroprozessor |
|||
__FORCETOC__<!--nützt eher, und kann nicht schaden |
|||
|Name = Intel 8086 |
|||
-->{{ #iferror: {{ #ifexpr: {{SEITENGRÖSSE:{{FULLPAGENAME}}|R}} > 150000 | <span style="display:none">[[Vorlage:Diskussionsseite/Wartung/Archivierung notwendig]]</span>}}}}{{ #ifeq: {{NAMESPACE}} | {{SUBJECTSPACE}} | <span style="display:none">[[Vorlage:Diskussionsseite/Wartung/Falscher Namensraum]]</span>}}<div id="VorlageDiskussionsseite" style="margin-bottom:3pt; padding:0;"> |
|||
|Bild = KL Intel D8086.jpg |
|||
{| {{Bausteindesign3}} |
|||
|Untertitel = Intel D8086 |
|||
|-valign="top" |
|||
|Produktionsbeginn = 1978 |
|||
| {{ |
|||
|Produktionsende = 1990er |
|||
#if: |
|||
|minimal = 5 |
|||
| {{{Zweck}}} |
|||
|maximal = 10 |
|||
| Diese Diskussionsseite dient dazu, Verbesserungen {{#switch:{{SUBJECTSPACE}} |
|||
|minimal-Einheit = MHz |
|||
|{{ns: 0}} = am Artikel |
|||
|maximal-Einheit = MHz |
|||
|{{ns: 4}} = an der Projektseite |
|||
|FSB-minimal = |
|||
|{{ns: 6}} = am der Datei |
|||
|FSB-maximal = |
|||
|{{ns: 8}} = an der Systemnachricht |
|||
|größe-von = |
|||
|{{ns: 10}} = an der Vorlage |
|||
|größe-bis = |
|||
|{{ns: 12}} = an der Hilfeseite |
|||
|Produzent1 = [[Intel Corporation|Intel]] |
|||
|{{ns: 14}} = an der Kategorie |
|||
|Produzent2 = [[AMD]] |
|||
|{{ns:100}} = an der Portalseite |
|||
|Produzent3 = [[NEC Corporation|NEC]] |
|||
|#default = an der Seite}} [[:{{SUBJECTPAGENAME}}|{{PAGENAME}}]] zu besprechen. '''Persönliche Betrachtungen zum {{#ifeq:{{SUBJECTSPACE}}|{{ns:0}}|Artikelthema|Thema}} gehören nicht hierher.'''}} |
|||
|Produzent4 = Harris (Intersil) |
|||
{| align="center" style="background:transparent;" |
|||
|Produzent5 = Siemens AG |
|||
|[[Datei:Quill-Nuvola.svg|35px| |alt=]] |
|||
|Produzent6 = Fujitsu |
|||
|<span style="white-space:nowrap;text-align:center;">{{AddNewSection|Text='''Klicke hier, um ein neues Diskussionsthema zu beginnen.'''}}</span><p>'''[[Hilfe:Signatur|Unterschreibe]]''' deinen Beitrag bitte mit <code style="font-size:114%;"><nowiki>--~~~~</nowiki></code>. |
|||
|Produzent7 = OKI |
|||
|} |
|||
|Produzent8 = Texas Instruments |
|||
| style="width:30%; border-left:1px solid #aaa; font-size:88%; padding-left:0.5em;" | |
|||
|Produzent9 = Matsushita |
|||
*[[Wikipedia:Diskussionsseiten|Diskussionsregeln]] |
|||
|Produzent10 = Mitsubishi |
|||
*[[Hilfe:Diskussionsseiten|Nutzungshinweise]] |
|||
|Kern1 = |
|||
*[[Wikipedia:Wikiquette|Sei sachlich und freundlich]] |
|||
|Kern2 = |
|||
*[[Wikipedia:Keine persönlichen Angriffe|Greife niemanden persönlich an]] |
|||
|Sockel1 = 40-pin DIP |
|||
*[[Wikipedia:Geh von guten Absichten aus|Gehe von guten Absichten aus]] |
|||
|Sockel2 = |
|||
{{ #ifeq: {{NAMESPACE}} | {{ns: 3}} | {{ #ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | |
|||
|Befehlssatz = 16Bit [[X86-Prozessor|x86]] |
|||
{{!-}} |
|||
|Mikroarchitektur = |
|||
{{!}} class="hintergrundfarbe7" align="center" colspan="2" {{!}} Für Benutzerseiten anstatt dieses Bausteins bitte {{[[Vorlage:Benutzerdiskussionsseite|Benutzerdiskussionsseite]]}} benutzen!<span style="display:none">[[Vorlage:Diskussionsseite/Wartung/Falscher Namensraum]]</span> |
|||
|next = Intel 80286 |
|||
}} }} |
|||
|prev = Intel 8085 |
|||
|} |
|||
}} |
|||
</div> |
|||
[[Datei:KL USSR KP1810BM86.jpg|right|miniatur|8086-Nachbau KP1810BM86 aus der damaligen UdSSR]] |
|||
Quelle |
|||
[[Datei:Wyprowadzenie mikroprocesora 8086.JPG|rechts|miniatur|Pinbelegung des 8086 im Maximum- und Minimum-Modus]] |
|||
erstellt am 11.1.2005 unter Zuhilfename eines Artikels der Zeitschrift '''Hunderevue''' Ausgabe 10/2003 Seite 6 bis 9 |
|||
Der '''Intel 8086''' ist ein [[16-Bit]]-[[Mikroprozessor]] von [[Intel]]. Entwickelt 1978, wurde er zum Urvater der [[X86-Prozessor|80x86-Familie]]. Das Design basierte auf Intels 8-Bit-CPUs [[Intel 8080|8080]] und [[Intel 8085|8085]], der [[Befehlssatz]] war so konzipiert, dass [[Assembler (Informatik)|Assembler]]-[[Quellcode]] für den 8080/8085 leicht automatisch in gültigen 8086-Quellcode umgewandelt werden konnte. Eine direkte [[Kompatibilität (Technik)|Kompatibilitä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 wie [[Interrupt]]- und [[Direct Memory Access|DMA]]-Controller, die als externe Chips dazukamen. Der 8086 unterstützt auch keine [[Gleitkomma]]-Operationen, kann jedoch von Haus aus mit einem [[Intel 8087]]-[[Koprozessor]] zusammenarbeiten, der dann die Gleitkomma-Berechnungen ausführt. Der [[Intel 8089]]-Koprozessor bietet erweiterte I/O-Funktionen und dient u. a. als [[Direct Memory Access|DMA-Controller]]. |
|||
Der 8086 war eine der langsamsten unter den 16-Bit-CPUs, die Ende der 1970er Jahre auf den Markt kamen. |
|||
--[[Benutzer:Caronna|Caronna]] 14:31, 11. Jan 2005 (CET) |
|||
== |
== Speichersegmentierung == |
||
Eine Besonderheit ist die [[Speichersegment]]ierung. Da es mit einem 16-Bit-Adressregister nur möglich ist, maximal 64 [[Kilobyte|kB]] Speicher zu adressieren, musste ein Weg gefunden werden, um trotzdem mehr möglichen Speicher adressieren zu können; Intel gab dem Prozessor 20 Adressleitungen für 2<sup>20</sup> Adressen (maximal 1 [[Megabyte]] [[Arbeitsspeicher]]). Zur Adressierung wird der Speicher in 65.536 überlappende Adressbereiche (Segmente) zu je 64 KB Größe aufgeteilt. Auf diese Weise ist es dem Chip möglich, bis zu 1 [[Speicherkapazität|MB]] 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, ebenfalls je 16 Bit großen Segmentregistern können Segmente an jeder 16-Byte-Grenze beginnen. |
|||
Wenn beispielsweise das Segmentregister die Adresse 1234<sub>hex</sub> und das Offset-Register die Adresse 5678<sub>hex</sub> enthält, was meist als ''1234:5678'' geschrieben wird, dann erfolgt der eigentliche Speicherzugriff auf die Adresse 1234<sub>hex</sub> × 10<sub>hex</sub> + 5678<sub>hex</sub> = 12340<sub>hex</sub> + 5678<sub>hex</sub> = 179B8<sub>hex</sub>. |
|||
In Artikeln zu FCI-Hunderassen werden Herkunft und/oder Patronat kommentarlos dem Standard entnommen ([[P:HLL|Leitlinien]], Punkt B.2.4). Diskussionen zur Sinnhaftigkeit dieser Regelung können auf der [[P:RH|Redaktionsseite]] geführt werden, Diskussionen an dieser Stelle sind zwecklose Zeitverschwendung. Metadiskussionen zu ex-jugoslawischen Partikularinteressen sind in Diskussionsforen besser aufgehoben. Ansonsten siehe auch [[WP:DISK]]. Gruss, --[[Benutzer:Cú Faoil|Cú Faoil]] <sup>[[WP:RM|RM]]-[[P:RH|RH]] </sup> 18:27, 23. Feb. 2010 (CET) |
|||
Vorteil der Speichersegmentierung ist u. a. eine einfachere Portierbarkeit von 8-Bit-Programmen und eine höhere [[Code-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 einen [[Mikrocomputer]] ohnehin viel mehr, als benötigt bzw. tatsächlich an Speicher verbaut wurde, auch aufgrund der hohen Preise für [[Random-Access Memory|RAM]] (der [[IBM-PC]] hatte zum Beispiel zunächst je nach Variante nur maximal 64 KB Speicher, [[Heimcomputer]] aus der gleichen Zeit meist noch deutlich weniger). |
|||
<!-- |
|||
Caronna, warum zum Henker schluckst Du denselben Trollköder immer und immer wieder?! Hör bitte endlich auf, diesen ganzen exjugoslawischen POV-Krieg zu füttern! Danke & Gruss, --[[Benutzer:Cú Faoil|Cú Faoil]] <sup>[[WP:RM|RM]]-[[P:RH|RH]] </sup> 18:43, 15. Apr. 2010 (CEST) |
|||
--> |
|||
== Register == |
|||
ich hab mal ne frage |
|||
Verglichen mit anderen 16-Bit-Prozessoren hat der 8086 nur eine kleine Anzahl an Registern. Für viele Operationen ist oft nur ein bestimmtes Register verwendbar – der 8086 ist damit ein erweiterter [[Akkumulatorrechner]], als Allzweck-Register stehen meist nur vier zur Verfügung. |
|||
ist der Tornjak wirklich 70 cm hoch? |
|||
Fest zu einem Register zugewiesene Funktion ist zum Beispiel 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 den [[Stapelspeicher|Stack]] 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 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, als dass Zugriffe auf den Arbeitsspeicher im Vergleich zu Registerzugriffen sehr langsam sind. <!-- und [[Cache]]s noch nicht unterstützt waren. // damals waren CPU und Ram noch synchron getaktet, d. h. ob ein Cache etwas genützt hätte ist fraglich. --> |
|||
ab welchem alter sind sie voll ausgewachsen? |
|||
wo in Deutschland kann man sich einen Tornjak Welpen besorgen/kaufen? --[[Spezial:Beiträge/92.225.32.23|92.225.32.23]] 17:19, 26. Apr. 2010 (CEST) |
|||
Dieses Register-Konzept vererbte der 8086 auf seinen Nachfolger [[Intel 80286|80286]] und auf alle späteren, zur sog. ''x86-Familie'' zählenden Prozessoren, jedoch wurde die Zahl der Register im neuen [[X86-Prozessor|x64]]-Modus der aktuellen Prozessoren immerhin verdoppelt, zusätzlich sind die Register der aktuellen x86-Generation 64 Bit „breit“. |
|||
== Betriebsarten == |
|||
Der 8086 (und auch der 8088) kann in einem ''Minimum-'' und einem ''Maximummodus'' betrieben werden. Die Wahl erfolgt über den MN/{{overline|MX}}-Pin 33. Wird er auf 0 V (Low) geschaltet, so arbeitet der 8086/88 im Maximummodus, bei +5 V (High) im Minimummodus. Im Minimummodus können kompakte einfache Schaltungen realisiert werden; die erforderlichen Steuerleitungen stellt der Prozessor selbst zur Verfügung. Der Maximummodus ist in erster Linie für den Multiprozessorbetrieb bzw. für die Arbeit mit den Koprozessoren [[Intel 8087|8087]] und [[Intel 8089|8089]] vorgesehen. |
|||
== Hilfsbausteine == |
|||
Der 8086 verfügt über keinen internen Oszillator. Der erforderliche Takt wird daher extern vom Oszillator-Chip [[Intel 8284|8284]] generiert. Wird der Prozessor im ''Maximummodus'' betrieben – was meistens der Fall ist –, werden die erforderlichen Steuerleitungen {{overline|WR}}, M/{{overline|IO}}, DT/{{overline|R}}, {{overline|DEN}}, ALE und {{overline|INTA}} nicht bereitgestellt, sondern müssen durch den Bus-Controller [[Intel 8288|8288]] bereitgestellt werden. Ist der Prozessor Teil eines Multiprozessorsystems, ist zusätzlich der Bus-Arbiter [[Intel 8289|8289]] erforderlich. Ferner ist zur Abtrennung der Adressen aus dem gemultiplexten Adress-/Datenbus ein [[Latch]] erforderlich, z. B. der [[Intel 8282|8282]]. Für die ausreichende Ansteuerung der gesamten Bussysteme wie auch im Multiprozessorbetrieb benötigt man [[bidirektional]]e Treiber, z. B. den [[Intel 8286|8286]]. |
|||
== Einsatz == |
|||
Wie sein ''kleiner Bruder'' [[Intel 8088|8088]], der wenig später auf den Markt kam, wurde der 8086 vor allem im [[IBM-PC]] und dessen [[IBM-PC-kompatible Computer|Nachbauten]] eingesetzt. Seine größte Verbreitung erhielt der Prozessor in dem von dem englischen Computerhersteller [[Amstrad]] erfolgreich vertriebenen PC-Clone [[PC1512]] und [[PC-1640]]. In Deutschland wurden diese Rechner von der Firma [[Schneider]] vermarktet. |
|||
Ein weiteres Einsatzgebiet war das [[Space Shuttle]]. Die [[NASA]] 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.<ref>[http://heise.de/-59066 Heise Online: NASA sucht im Internet nach uralten Chips]</ref><ref>[http://www.nytimes.com/2002/05/12/technology/ebusiness/12NASA.html NY Times: For Old Parts, NASA Boldly Goes . . . on eBay]</ref> 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. |
|||
== Architektur == |
|||
* Max. adressierbarer Speicher: 1 [[Byte|MB]] |
|||
* [[Verarbeitungsbreite]]: 16 Bit |
|||
* Datenbus: 16 Bit |
|||
* Adressbus: 20 Bit |
|||
* Befehle: ca. 100 im Format „[Präfix] [[Maschinensprache|Mnemonik]] [Operand 1][, Operand 2]“ ([…] nicht immer nötig) |
|||
* 14 [[Register (Computer)|Register]]: |
|||
** 4 allgemeine 16-Bit-Register (ansprechbar auch als Low- oder High-Teil zu je 8-Bit): |
|||
*** AX – Akkumulator |
|||
*** BX – Basis-Register |
|||
*** CX – Count-Register |
|||
*** DX – Daten-Register |
|||
** 2 16-Bit-Pointer-Register: |
|||
*** SP – Stackpointer |
|||
*** BP – Basepointer |
|||
** 2 16-Bit-Index-Register: |
|||
*** SI – Source Index |
|||
*** DI – Destination Index |
|||
** 4 16-Bit-Segment-Register: |
|||
*** CS – [[Codesegment]] |
|||
*** DS – [[Datensegment]] |
|||
*** SS – Stacksegment |
|||
*** ES – Extrasegment |
|||
** 16-Bit-Befehlszeiger IP – Instruction Pointer |
|||
** 16-Bit-Status-Register mit 9 [[Flag (Informatik)|Flags]]: |
|||
*** CF – [[Übertragflag]] (engl. ''carry flag'') |
|||
*** PF – [[Paritätsbit|Paritätsflag]] (engl. ''parity flag'') |
|||
*** AF – [[Hilfsübertragsflag]] (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 == |
|||
* L1-Cache: nicht vorhanden |
|||
* L2-Cache: nicht vorhanden |
|||
* Anzahl der Transistoren: 29.000 |
|||
* Bauform: [[Dual in-line package|DIL]] mit 40 Pins |
|||
* Betriebsspannung (VCore): 5 Volt |
|||
* Erscheinungsdatum: 1978 |
|||
* Fertigungstechnik: 3 µm |
|||
* [[Die (Halbleitertechnik)|Die-Größe]]: 33 mm<sup>2</sup> bei 29.000 Transistoren |
|||
* Taktraten: |
|||
** 8086: 4,77 MHz (0,33 [[Instruktionen pro Sekunde|MIPS]]) |
|||
** 8086-2: 8 MHz (0,66 MIPS) |
|||
** 8086-1: 10 MHz (0,75 MIPS) |
|||
== Wesentliche Konkurrenten == |
|||
Neben Pin- und Funktions-gleichen Nachbauten (v. a. die in [[CMOS]]-Technologie hergestellten [[NEC V20|NEC V20 und V30]]) sowie der günstigeren, „abgespeckten“ Variante 8088, wurden in Konkurrenzprodukten zum IBM PC gerne der [[Motorola 68000]]-Prozessor verwendet, selten der [[Zilog Z8000]], selten der [[NS320xx|National Semiconductor NS16032]]. (Sowohl Motorola 68000 als auch NS16032 sind jedoch 32-Bit-Prozessoren.) |
|||
== Peripheriebausteine == |
|||
* [[Intel 8282]]/[[Intel 8283|8283]]: 8-Bit-Latch |
|||
* [[Intel 8284]]: Taktgeber |
|||
* [[Intel 8286]]/[[Intel 8287|8287]]: bidirektionaler 8-Bit-Treiber |
|||
* [[Intel 8288]]: Bus-Controller |
|||
* [[Intel 8289]]: Bus-Arbiter |
|||
== Siehe auch == |
|||
* [[Liste der Mikroprozessoren von Intel]] |
|||
* [[Liste von Mikroprozessoren]] |
|||
== Literatur / Datenblätter == |
|||
* Intel: [http://matthieu.benoit.free.fr/cross/data_sheets/8086_family_Users_Manual.pdf The 8086 Family User's Manual] (PDF; 9,7 MB), Oktober 1979 |
|||
* Josef Koller: ''16 Bit Microcomputer'', 1. Auflage, Hofacker Verlag, München 1981, ISBN 3-921682-80-0. |
|||
* NEC Electronics (Europe) GmbH, 1982 Catalog, S. 435–446. |
|||
* [http://datasheets.chipdb.org/Intel/x86/808x/datashts/8086/231455-006.pdf Datenblatt Intel 8086] (PDF-Datei; 380 KB) |
|||
* [http://datasheets.chipdb.org/Intel/x86/808x/datashts/8086/27105805.pdf Datenblatt Intel 80C86] (PDF-Datei; 277 KB) |
|||
== Weblinks == |
|||
{{Commonscat}} |
|||
{{Wikibooks|Assembler-Programmierung für x86-Prozessoren|Assembler-Programmierung für x86-Prozessoren}} |
|||
* [http://www.cpu-galaxy.at/CPU/Intel%20CPU/8080%20-%208086/Intel%208086%20section.htm Intel 8086 – Sammler-Webseite mit vielen Bildern] |
|||
* [http://www.pearson.ch/download/media/9783827320148_SP.pdf PC-Hardwarebuch – Aufbau, Funktionsweise, Programmierung; Kapitel 3 (8086)] (PDF; 4,9 MB) |
|||
* [http://www.i8086.de/asm/8086-88-asm.html i8086.de 8086/88-Assembler-Befehlsreferenz] |
|||
== Einzelnachweise == |
|||
<references/> |
|||
{{Navigationsleiste Intel-Mikroarchitekturen}} |
|||
{{Navigationsleiste Intel-Prozessoren}} |
|||
[[Kategorie:Intel-Prozessor|8086]] |
Version vom 5. Juli 2013, 15:01 Uhr
<< Intel 8086 >> | |
---|---|
![]() Intel D8086 | |
Produktion: | 1978 bis 1990er |
Produzenten: | |
Prozessortakt: | 5 MHz bis 10 MHz |
Befehlssatz: | 16Bit x86 |
Sockel: | 40-pin DIP |

Der Intel 8086 ist ein 16-Bit-Mikroprozessor von Intel. Entwickelt 1978, wurde er zum Urvater der 80x86-Familie. Das Design basierte auf Intels 8-Bit-CPUs 8080 und 8085, der Befehlssatz war so konzipiert, dass Assembler-Quellcode für den 8080/8085 leicht automatisch in gültigen 8086-Quellcode umgewandelt werden konnte. Eine direkte Kompatibilitä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 wie Interrupt- und DMA-Controller, die als externe Chips dazukamen. Der 8086 unterstützt auch keine Gleitkomma-Operationen, kann jedoch von Haus aus mit einem Intel 8087-Koprozessor zusammenarbeiten, der dann die Gleitkomma-Berechnungen ausführt. Der Intel 8089-Koprozessor bietet erweiterte I/O-Funktionen und dient u. a. als DMA-Controller.
Der 8086 war eine der langsamsten unter den 16-Bit-CPUs, die Ende der 1970er Jahre auf den Markt kamen.
Speichersegmentierung
Eine Besonderheit ist die Speichersegmentierung. Da es mit einem 16-Bit-Adressregister nur möglich ist, maximal 64 kB Speicher zu adressieren, musste ein Weg gefunden werden, um trotzdem mehr möglichen Speicher adressieren zu können; Intel gab dem Prozessor 20 Adressleitungen für 220 Adressen (maximal 1 Megabyte Arbeitsspeicher). Zur Adressierung wird der Speicher in 65.536 überlappende Adressbereiche (Segmente) zu je 64 KB Größe aufgeteilt. Auf diese Weise ist es dem Chip möglich, bis zu 1 MB 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, ebenfalls je 16 Bit großen Segmentregistern können Segmente an jeder 16-Byte-Grenze beginnen.
Wenn beispielsweise das Segmentregister die Adresse 1234hex und das Offset-Register die Adresse 5678hex enthält, was meist als 1234:5678 geschrieben wird, dann erfolgt der eigentliche Speicherzugriff auf die Adresse 1234hex × 10hex + 5678hex = 12340hex + 5678hex = 179B8hex.
Vorteil der Speichersegmentierung ist u. a. eine einfachere Portierbarkeit von 8-Bit-Programmen und eine höhere Code-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 einen Mikrocomputer ohnehin viel mehr, als benötigt bzw. tatsächlich an Speicher verbaut wurde, auch aufgrund der hohen Preise für RAM (der IBM-PC hatte zum Beispiel zunächst je nach Variante nur maximal 64 KB Speicher, Heimcomputer aus der gleichen Zeit meist noch deutlich weniger).
Register
Verglichen mit anderen 16-Bit-Prozessoren hat der 8086 nur eine kleine Anzahl an Registern. Für viele Operationen ist oft nur ein bestimmtes Register verwendbar – der 8086 ist damit ein erweiterter Akkumulatorrechner, als Allzweck-Register stehen meist nur vier zur Verfügung. Fest zu einem Register zugewiesene Funktion ist zum Beispiel 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 den Stack 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 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, als dass Zugriffe auf den Arbeitsspeicher im Vergleich zu Registerzugriffen sehr langsam sind.
Dieses Register-Konzept vererbte der 8086 auf seinen Nachfolger 80286 und auf alle späteren, zur sog. x86-Familie zählenden Prozessoren, jedoch wurde die Zahl der Register im neuen x64-Modus der aktuellen Prozessoren immerhin verdoppelt, zusätzlich sind die Register der aktuellen x86-Generation 64 Bit „breit“.
Betriebsarten
Der 8086 (und auch der 8088) kann in einem Minimum- und einem Maximummodus betrieben werden. Die Wahl erfolgt über den MN/MX-Pin 33. Wird er auf 0 V (Low) geschaltet, so arbeitet der 8086/88 im Maximummodus, bei +5 V (High) im Minimummodus. Im Minimummodus können kompakte einfache Schaltungen realisiert werden; die erforderlichen Steuerleitungen stellt der Prozessor selbst zur Verfügung. Der Maximummodus ist in erster Linie für den Multiprozessorbetrieb bzw. für die Arbeit mit den Koprozessoren 8087 und 8089 vorgesehen.
Hilfsbausteine
Der 8086 verfügt über keinen internen Oszillator. Der erforderliche Takt wird daher extern vom Oszillator-Chip 8284 generiert. Wird der Prozessor im Maximummodus betrieben – was meistens der Fall ist –, werden die erforderlichen Steuerleitungen WR, M/IO, DT/R, DEN, ALE und INTA nicht bereitgestellt, sondern müssen durch den Bus-Controller 8288 bereitgestellt werden. Ist der Prozessor Teil eines Multiprozessorsystems, ist zusätzlich der Bus-Arbiter 8289 erforderlich. Ferner ist zur Abtrennung der Adressen aus dem gemultiplexten Adress-/Datenbus ein Latch erforderlich, z. B. der 8282. Für die ausreichende Ansteuerung der gesamten Bussysteme wie auch im Multiprozessorbetrieb benötigt man bidirektionale Treiber, z. B. den 8286.
Einsatz
Wie sein kleiner Bruder 8088, der wenig später auf den Markt kam, wurde der 8086 vor allem im IBM-PC und dessen Nachbauten eingesetzt. Seine größte Verbreitung erhielt der Prozessor in dem von dem englischen Computerhersteller Amstrad erfolgreich vertriebenen PC-Clone PC1512 und PC-1640. In Deutschland wurden diese Rechner von der Firma Schneider vermarktet.
Ein weiteres Einsatzgebiet war das Space Shuttle. Die NASA 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.[1][2] 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.
Architektur
- Max. adressierbarer Speicher: 1 MB
- Verarbeitungsbreite: 16 Bit
- Datenbus: 16 Bit
- Adressbus: 20 Bit
- Befehle: ca. 100 im Format „[Präfix] Mnemonik [Operand 1][, Operand 2]“ ([…] nicht immer nötig)
- 14 Register:
- 4 allgemeine 16-Bit-Register (ansprechbar auch als Low- oder High-Teil zu je 8-Bit):
- AX – Akkumulator
- BX – Basis-Register
- CX – Count-Register
- DX – Daten-Register
- 2 16-Bit-Pointer-Register:
- SP – Stackpointer
- BP – Basepointer
- 2 16-Bit-Index-Register:
- SI – Source Index
- DI – Destination Index
- 4 16-Bit-Segment-Register:
- CS – Codesegment
- DS – Datensegment
- SS – Stacksegment
- ES – Extrasegment
- 16-Bit-Befehlszeiger IP – Instruction Pointer
- 16-Bit-Status-Register mit 9 Flags:
- CF – Übertragflag (engl. carry flag)
- PF – Paritätsflag (engl. parity flag)
- AF – Hilfsübertragsflag (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)
- 4 allgemeine 16-Bit-Register (ansprechbar auch als Low- oder High-Teil zu je 8-Bit):
Technische Daten
- L1-Cache: nicht vorhanden
- L2-Cache: nicht vorhanden
- Anzahl der Transistoren: 29.000
- Bauform: DIL mit 40 Pins
- Betriebsspannung (VCore): 5 Volt
- Erscheinungsdatum: 1978
- Fertigungstechnik: 3 µm
- Die-Größe: 33 mm2 bei 29.000 Transistoren
- Taktraten:
- 8086: 4,77 MHz (0,33 MIPS)
- 8086-2: 8 MHz (0,66 MIPS)
- 8086-1: 10 MHz (0,75 MIPS)
Wesentliche Konkurrenten
Neben Pin- und Funktions-gleichen Nachbauten (v. a. die in CMOS-Technologie hergestellten NEC V20 und V30) sowie der günstigeren, „abgespeckten“ Variante 8088, wurden in Konkurrenzprodukten zum IBM PC gerne der Motorola 68000-Prozessor verwendet, selten der Zilog Z8000, selten der National Semiconductor NS16032. (Sowohl Motorola 68000 als auch NS16032 sind jedoch 32-Bit-Prozessoren.)
Peripheriebausteine
- Intel 8282/8283: 8-Bit-Latch
- Intel 8284: Taktgeber
- Intel 8286/8287: bidirektionaler 8-Bit-Treiber
- Intel 8288: Bus-Controller
- Intel 8289: Bus-Arbiter
Siehe auch
Literatur / Datenblätter
- Intel: The 8086 Family User's Manual (PDF; 9,7 MB), Oktober 1979
- Josef Koller: 16 Bit Microcomputer, 1. Auflage, Hofacker Verlag, München 1981, ISBN 3-921682-80-0.
- NEC Electronics (Europe) GmbH, 1982 Catalog, S. 435–446.
- Datenblatt Intel 8086 (PDF-Datei; 380 KB)
- Datenblatt Intel 80C86 (PDF-Datei; 277 KB)
Weblinks
- Intel 8086 – Sammler-Webseite mit vielen Bildern
- PC-Hardwarebuch – Aufbau, Funktionsweise, Programmierung; Kapitel 3 (8086) (PDF; 4,9 MB)
- i8086.de 8086/88-Assembler-Befehlsreferenz