Home Computer x86 Prozessoren Site Map counter

Der 80386

In einer losen Reihe will ich die Hardwareentwicklung der x86 Architektur bis zum Pentium 4 nachvollziehen. Danach wird es für den Autor relativ schwer, weil zum einen Intel seine Produktpalette sehr stark erweiterte, zum anderen die Firma die Entwicklungszyklen aufspaltete in einen Teil, in dem man die Architektur erweitert und einem in dem man mehr Transistoren unterbringt, also die Herstellungstechnologie ändert. Dadurch gibt es nicht mehr eine "Generation" mit definierten Eigenschaften mehr.

Der 386 den es heute geht, ist wohl sicherlich der wichtigste Schritt in der Entwicklung der x86 Reihe gewesen, denn er führte die 32 Bit Architektur ein, die heute noch Basis für Windows und andere Betriebssysteme ist, auch wenn seit 2005 die erweiterte 64 Bit Architektur (x64) zur Verfügung steht und sie inzwischen (2014) die 32 Bit Architektur bei den Neuinstallationen abgelöst hat, da die x86 Architektur auf 4 Gigabyte direkt adressierbaren Arbeitsspeicher beschränkt ist.

Der 80386 hat mehrere Bezeichnungen. Anfangs wurde er als iAPX386 abgekündigt. Zu diesem Zeitpunkt wollte Intel dieses neue Namensschema in den frühen Achtzigern einführen (Intel Advanced Performance Architecture). Er hieß, als er 1985 erschien, aber "80386". Im Sprachgebrauch wurde das allgemein auf "Dreisechsundachzig" verkürzt und Intel folgte dem, als sie ab 1988 Versionen produzierten, die sich in der Architektur unterschieden. Zuerst eine Version mit nur 16 Bit breitem Datenbus, der "386SX" (der bisherige 80386 mit 32 Bit Datenbus wurde dann in 386DX  umbenannt). Es folgten weitere Versionen, die vor allem für Embedded Anwendungen bestimmt waren und zusätzliche Peripheriebausteine integriert hatten. IBM hatte die Lizenz zum Nachbau und schuf eine eigene Version den 386 SLC. AMD hatte das Recht für den Nachbau und baute ihn unter AM386 nach. Cyrix und Chips und Technologies schufen befehlskompatible Versionen basierend auf den Spezifikationen, die ebenfalls als 386 vertrieben wurden.

Architektur

Intel 386DXEs gab eine Reihe von wesentlichen Änderungen bei der Architektur des 386. Die wesentlichen Änderungen betrafen drei Bereiche:

Die 32 Bit Architektur. Die wohl wichtigste Neuerung war die dass nun der Prozessor intern ein voller 32 Bitter war. Intel holte hier auf, denn andere Chips wie die NS 16000/32000 und Motorola MC 68000 Serie waren von Anfang an intern 32 bittig ausgelegt, schleiften aber nur einen Teil der Adresssignale nach außen und reduzierten den Datenbus bei den früheren Versionen auf 16 Bit. Intel änderte die Architektur aber nicht fundamental. So war ein Merkmal der 80x86 Serie, dass sie im Vergleich zu anderen Architekturen sehr wenige Allzweckregister hatte, es gab nur vier. Andere Architekturen hatten zwischen 8 und 28 allgemein nutzbare Register. Die Registerzahl wurde um zwei erhöht, leider jedoch bei den Segmentregistern, die nun um ein FS und GS Register erweitert wurden (wo Programme ja schon das ES Register kaum nutzten). Sie wurden auf 32 Bit verbreiteter und erhielt ein "E" als Prefix (EAX, EDS etc...). Verbessert wurde die Adressierung vorher waren viele Adressierungsarten nur mit dem BX oder DX Register möglich, nun waren alle gleichberechtigt. Es wurden übrigens nicht alle Register des 16-Bit-Modes in den 32 Bit Mode übernommen, sondern nur 8:

Auch hatte die 80386 sehr wenige Instruktionen für die Adressierung, verglichen mit anderen CPU, vor allem dem NS32032 dessen Befehlssatz jede Adressierung mit jeder Operation zuließ. Der Code wurde noch etwas länger da man die zusätzlichen Instruktionen mit freien Opcodes dekodieren musste und dabei natürlich auf Prefixbytes ausweichen musste. Im Mittel benötigte sie 4 Takte für einen Befehl.

Die CPU war mit einer Geschwindigkeit von 3-4 Millionen Instruktionen bei der 16 MHz Version jetzt in einer Region angekommen, die man damals "mittlere Datentechnik" nannte. Solche Geschwindigkeiten hatten auch Minicomputer. Auf diesen lief aber nicht ein Betriebssystem wie DOS, das einen Anwender kannte. Stattdessen fand man dort Betriebssysteme wie UNIX-Derivate oder VMS, die einen Multiuser oder zumindest Multitasking Betrieb ermöglichten (Multitask = mehrere Programme gleichzeitig aktiv) für diese Betriebssysteme gab es beim 386 eigene Maschinenbefehle für die Verwaltung von Tasks, wie ein Befehl der einen Task Switch einleitete und dabei alle Register sicherte und es wurden für das Betriebssystem Datenstrukturen definiert, für die Speicher bereitgestellt werden musste. Damit war der Abkehr von DOS vorbereitet.

386 aufbauIntern gab nun sechs Funktionseinheiten, zwei mehr als bei dem 80286. Dies waren:

Wie man sieht, hatten alleine zwei Einheiten mit Speicherberechnungen und Speicherschutzmechanismen zu tun. Über alle Einheiten hinweg hatte die 80386 eine sechsstufige Pipeline. 

Integriert waren auch DMA-Kontroller, der es erlaubte das Speicherkarten oder Diskcontroller auf den Speicher zugreifen konnten, ohne die CPU zu unterbrechen und eine MMU, die nötig war um den physikalischen Speicher in den virtuellen Speicher zu mappen. Dies wurde beim praktischen Einsatz als Vorteil gegenüber anderen zu dieser Zeit erschienen Mikroprozessoren wie der 68030 und dem NS 32032 angesehen.

Modi

DieDer 8086 hatte als Adressierungsmöglichkeit für den Speicher den Real Mode (so hieß er aber erst seit dem 80286) mit 1 MByte Adressraum, maximal 64 KByte in einem Stück adressierbar. Beim 80826 kam der Protected Mode dazu, der 16 MByte linear adressieren konnte und Schutzmechanismen für Speicher sowie Zugriffsebenen (wichtig für Betriebssysteme die so vor Veränderungen durch Anwendungsprogramme) einführte. Bei  80386 kam der virtuelle 86 Modus hinzu. Er konnte vom Protected Mode aus aufgerufen werden, erlaubte dann das Ausführen eines Programmes im Real Mode und das Betriebssystem konnte schnell zwischen Protected Mode und Real Mode umschalten. Dieses Modell wurde zum Erfolg für Windows, denn es ermöglichte bei Windows 95 DOS Programme in einer eigenen abgeschotteten Umgebung neben Windows Programmen auszuführen. Es war sogar mehr als ein  Programm zur gleichen Zeit ausführbar, jedes mit einem Adressraum von 1 MByte. Mit dem Virtual 8086 Mode reagierte Intel auf die Kritik am 80286 bei dem es keine Möglichkeit gab den Protected Mode zu verlassen. Damit konnte die CPU Software sowohl für den 8086, wie auch 80286 und 80385 parallel ausführen.

Speicher

Der 80386 adressierte durchgängig 4 Gigabyte Speicher (2^32 Bits). Das war ein gewaltiger Sprung vom 80286. Vom 8080 zum 8086 und 8086 zum 80286 stieg der Speicher jeweils um das 16-Fache - das wurde durch die Verdoppelung der Speicherkapazität alle 2 Jahre innerhalb von 8 Jahren "aufgebraucht" in dem Sinne, das der üppige Adressbereich kleiner als die normale Bestückung von PCs war. Der 8086 erschien 1978, sein 1 MB Speicher war 1985 Standard Ausführung bei neuen PC. Der 80286 erschien 1982, und als der 80386 erschien, waren 16 MB noch von keinem PC erreicht, er war aber der Standardspeicherausbau 1996. Die 4 Gigabyte des 80386 waren 256-mal mehr als die 16 MByte die der 80286 ansprechen konnte. Es sollte bis 2008/9 dauern, bis ein neu gekaufter PC so Speicher hatte. Das war also zukunftsweisend.

Neu war aber auch das Konzept des virtuellen Speichers. Das Grundkonzept ist von anderen Architekturen schon bekannt. Es wurde zuerst 1960 vom ATLAS 1 Computer implementiert. die berühmte VAX 11/780 hatte ihren Namen von dem Virtuellen Speicherunterstützung (das V im Namen). Der Grundgedanke ist sehr einfach: Der Programmierer sieht einen sehr großen linearen Speicher. Dieser ist viel größer als im Rechner eingebaute Speicher. Beim 80386 sind es 2^46 Byte = 64 TByte. Ein Programm kann dadurch größer als der verfügbare Speicher sein und auch Daten können verarbeitet werden die nicht in den Arbeitsspeicher passen würden. Wird nun im Prozessor auf eine Adresse zugegriffen, die nicht im realen Speicher vorhanden ist, so alarmiert der Prozessor das Betriebssystem, das daraufhin diesen Teil von einer Festplatte lädt und vielleicht dafür einen anderen Teil, der dem weichen muss, auf die Festplatte sicherte. Das ist bis heute Standard bei jedem Betriebssystem auf einem PC, egal ob es Windows, Linux oder MacOS ist. Bei Windows wird z.B. eine Datei im Hauptverzeichnis angelegt die pagefile.sys heißt, sie ist je nach Einstellungen bis zu doppelt so groß wie er verbaute Hauptspeicher. So kann ein Betriebssystem Programme aktiv halten die größer als der Hauptspeicher sind.

Zur Unterstützung dieses Mechanismus hatte die CPU einen kleinen Cache für die TLB (Translation lookaside Buffer), das waren Listen, die angaben welche Adresse im Hauptspeicher wo im virtuellen Speicher abgebildet wurde. die 32 Einträge umfassten die 32 am häufigsten vorkommenden Zugriffe. Da jeder Eintrag eine Seite (Page) von 4 KByte Größe umfasste konnte man so 128 KByte intern ab cachte. Das entsprach 98-99% aller Zugriffe. Darüber hinaus musste dann das Betriebssystem solche TLB im Speicher anlegen und selbst verwalten. Der Nutzen ist dass man mehr Speicher nutzen kann als tatsächlich verbaut ist. Speicher auf Festplatten war als der 80386 erschien 400-mal billiger als RAM Bausteine (heute sind Festplatten rund 200-mal billiger und SSD aus Flash-Bausteinen rund 10-mal billiger).  Der Nachteil ist, dass das Auslagern und Einlagern von de Festplatte viel Zeit auffrisst und die Programme ausbremst,

Windows nutzte diese Technologie erst ab der Version Windows 96, die zehn Jahre nach dem 80386 erschien.

Externer Cache

Aufbau 2Der 80386 hatte keinen Cache auf dem Chip (wohl aber einige Nachbauten, wie der Cyrix 486 mit einem 1 KByte großen Cache oder IBM SLC mit einem 8 KByte groß0en Cache). er unterstützte aber einen externen Cache. Intel reagierte damit auf eine Problematik die sich seit der fast zeitgleichen Einführung von dynamischem RAM und Prozessoren Anfang der siebziger Jahre verstärkte. Das dynamische RAM (DRAM) war der billigste Speicher und der Standard bei allen Computersystemen. Die Zugriffszeit des DRAM sank aber nur langsam, während die Taktraten der Prozessoren rapide ansteigen. Intels 8080 hatte 1974 einen Takt von 2 MHz, Intels 80386 sollte elf Jahre später mit 16 MHz erscheinen - eine Steigerung der Taktrate um den Faktor 8. Dem folgten die DRAM aber nicht in dem Maße, schon bei den schnellen Versionen des 80286 mit 10 MHz und mehr mussten diese Wartezyklen einlegen, weil der Speicherzugriff langsamer als die Taktfrequenz war. Ein Wartezyklus war ein Taktimpuls, dieser dauerte bei 16 MHz 62,5 ns.  Die damals verfügbaren 256 KBit Bausteine 41256 mit Zugriffszeiten von 150 und 200 ns hatten Zykluszeiten von 220 und 260 ns. Ein 16 MHz 80386 benötigte aber für die volle Transferrate von 32 MByte/s eine Zykluszeit von 125 ns. So waren zwei bis drei Wartezyklen nötig, was die CPU ausbremste.

Die Lösung für dieses Problem war nicht neu: wie alle Technologien, die Intel im Laufe der Zeit implementierte, hatte man sie schon vor langer Zeit für die Großrechner erfunden. In diesem Falle für das IBM System 360 bei der die schnelleren Versionen einen Cache einführten. Ein Cache ist ein schneller Speicher, der eine Kopie der Daten und des Codes enthält, der gerade bearbeitet wird. Da der Code sehr lokal ist, also meist dieselben Routinen mehrmals ausgeführt werden und bei PC-Programmen meist auch die Daten lokal sind, beschleunigt dies die Ausführung erheblich.

Beim 80386 war der Cache auf dem Motherboard untergebracht und bestand aus schnellen DRAM. Intel bot einen Cache Controller an, der zusammen mit dem 80386 den externen Cache verwaltete. Dazu wurden meist 32 oder 64 KByte in SRAM Bausteinen plus einem Baustein für die Tabellen welche Daten gecatcht sind, vor dem Speicher angebracht. Griff die CPU auf den Speicher zu so, suchte der Cachecontroller in einer Tabelle der gemappten Adressen nach, ob sich diese im Cache befand, wenn ja gab er die Daten aus dem Cache zurück (Hit), ansonsten holte er sie vom Hauptspeicher und speicherte sie in einem freien Block ab. Typisch wurden 4 oder 8 Byte auf einmal vom Speicher geholt, (Länger einer sogenannten Cacheline), da man meist die nächsten Bytes noch benötigte. Gleichzeitig übergab der Cache dem 80386 die Daten.

Ein externer Cache von 32 bis 64 KByte Größe konnte gegenüber DRAM die Performance um 38 bis 42% steigern, das lag schon nahe an der Geschwindigkeitssteigerung, als wenn der gesamte Speicher aus SRAM (ohne Wartezyklen) bestanden hätte (47%). Das Nachfolgemodell 80486 sollte dann schon den Cache auf der CPU integrieren um die Geschwindigkeit zu steigern. Der 80386 unterstützte nur einen "unified" Cache, das bedeutet, er unterschied nicht zwischen Daten und Code. Man machte diese Entscheidung, weil alte MS-DOS Versionen selbstmodifizierenden Code im Betriebssystem einsetzten. Das erlaubte keine Trennung in Code- und Datencache (üblicherweise wird auf den Codeteil nur lesend zugegriffen, man muss für diesen also den bei einem Cache relativ aufwendigen Schreibzugriff nicht implementieren). 

Damit ein 80386 einen externen Cache nutzen konnte hatte man den Zugriff auf den Speicher verändert. Es war ein Adress-Data Zyklus von zwei Zyklen. Das bedeutete das im ersten Zyklus die Adresse angelegt wurde, das gab dem Cachecontroller Zeit (nicht viel, einen Takt, das sind 62,5 ns bei 16 MHz Ausführung) zu ermitteln ob sich die Daten im Cache befanden und im zweiten Zyklus wurde erst die Datenanforderung geschickt, die dann aus dem Cache oder Speicher bedient wurde (bei letzterem Lauerte der Zugriff dann meist länger).

Geschichtliche Bedeutung

Obwohl auf der Architektur des 80386 bis heute Windows basiert (auch Windows 8.1 wird in einer "32-Bit Variante" angeboten. Sie nutzt größtenteils den Befehlssatz des 80386, Linux strich auch erst 2013 die Unterstützung für den 80386 aus dem Kernel), war es sein Schicksal, dass er in der Zeit, in der er in dem Großteil der verkauften Computer steckte (etwa 1989-1993) die meisten Programme die er ausführte, noch DOS Programme waren. Erst gegen Ende der Einsatzzeit, 1993 erschien Windows 3.11 das einen 80386 Prozessor erforderte.

Intel hatte wenig Erfolg diesen Prozessor außerhalb IBM kompatibler Rechner in anderen Architekturen zu verbreiten. Viele Workstations setzten auf die MC68000 Serie, ebenso Amiga und Atari ST. Auch die Macintoshs blieben bei dieser Reihe. Später kamen als Konkurrenten die RISC-Prozessoren SPRAC und MIPS dazu, die bei Workstations aber auch Spielkonsolen eingesetzt wurden. Dank des immer weiter steigenden Marktanteils der IBM-kompatiblen PC war dies jedoch verschmerzbar. Später erschien die 386EX Variante für Embedded Systeme, also Rechner von denen der Benutzer nichts mitbekommt, weil sie z.B. in der Elektronik von Autos stecken. Dazu wurden weitere Peripheriebausteine integriert. Sie basierten zumeist auf der SX Architektur, bei der maximal 64 MByte RAM für solche System ausreichend waren. Diese Version fertigte Intel noch bis 2007.

Intel stellte den 80386 am 17. Oktober 1985 vor. Erheblich schneller als bei den vorherigen Generationen, ein Jahr nach der Veröffentlichung, erschienen mit dem Compaq Deskpro 386 und dem Rain die ersten Rechner mit 386 Prozessor. Es dauerte aber recht lange bis die Rechner im Preis sanken, langsamer als bei der Vorgängergeneration. Dadurch blieben Rechner mit dem 80386 der Oberklasse vorbehalten. Der Compaq Deskpro 386 kostete beim Einstand rund 21.000 DM, ein AT-Kompatibler Rechner zur gleichen Zeit nur 5.000 - 9.000 DM. Mit DOS hatte man auch außer der Geschwindigkeit keinen Vorteil und Windows war damals nicht mehr als ein DOS Aufsatz. UNIX Derivate wie XENIX, die das volle Potential ausnutzten, konnten sich auf PCs damals nicht durchsetzen. Linus Thorvalds programmierte Linux auf einem Rechner mit einem 386 Prozessor

Um den Umsatz anzukurbeln, veröffentlichte Intel 1988 eine Version mit einem auf 16 Bit reduzierten Datenbus und einem maximalen Adressbereich von 16 MByte. Er konnte auch mit den schon billigen Mainboards mit AT-Peripherie betrieben werden. Intel lancierte auch erstmals in der Unternehmensgeschichte eine groß angelegte Werbekampagne, die sich an den Endverbraucher und nicht an Hersteller oder Programmierer wendete: "3 ist mehr als 2", damit wurde suggeriert Rechner mit dem neuen 386 Prozessor, der die Bezeichnung "386SX" erhielt (der schon eingeführte wurde in 386DX umbenannt), seien besser als Computer mit dem 286-Prozessor. In der Praxis wurde der Prozessor durch den halbierten Datenbus so ausgebremst, dass er nicht viel schneller als einer mit einem 286 Prozessor war, auch der Speicherausbau war nicht größer. Er verhalf dem 386 aber zum Durchbruch auf dem Markt.

Anders als beim 8086 und 80286 gab es keine von Intel autorisierten OEM-Hersteller, also Hersteller von Nachbauten. Bei diesen hatte IBM auf die Vergabe von Lizenzen bestanden. AMD hatte jedoch durch ein Lizenzaustauschabkommen das Recht den Prozessor zu fertigen. Intel konnte dies durch Prozesse bis 1991 verhindern. Danach sicherte sich AMD jedoch einen größeren Marktanteil, vor allem als die Firma auch eine 40 MHz Version vorstellte. Intel hatte bei 33 MHz aufgehört, als mit dem 486 die nächste Generation vermarktet wurde. Diese Rechner waren nicht viel langsamer als ein 486-25 aber erheblich preiswerter.

Andere Firmen entwickelten zum 386 kompatible Prozessoren. IBM hatte eine Lizenz erhalten und brauchte auf ihrem 386 SLC einen 8 KByte großen Cache unter, der den Prozessor beschleunigte, setzte ihn aber nur in eigenen Computern ein, wodurch die Marktbedeutung klein blieb. Chips & Technologies brachten eine kompatible CPU, die Super-386 die dank zweier Pipelines schneller war. Cyrix stellte einen Zwitter die Cy486 vor, die einige Features des 80486 (wie ein Cache, aber nur 1 KByte groß) und eine Teilemenge der 486 Befehle, Hatte aber keinen Coprozessor. Sie hatten aber die Pinbelegung der 386DX und 386SX Prozessoren und konnten so in bestehende preiswerte Boards integriert werden. Beide Prozessoren kamen erst 1992 auf den Markt, also drei Jahre nachdem Intel schon die nächste Generation vorgestellt hatte, das war zu spät um noch nennenswerte Marktanteile zu erkämpfen, zumal im nächsten Jahr Intel Overclockversionen der 486 CPU vorstellte, die rasch Taktgeschwindigkeiten von 50, 66 und 100 MHz erreichte. Das späte Erscheinen war dem Aufwand geschuldet, eine neue CPU zu entwickeln. Dies konnte natürlich erst geschehen, nachdem Intel den 80386 auf den Markt gebrachte hatte.

Technische Daten
Erschienen: 17.10.1985
Transistoren: 275.000
Technologie 1,5 µm CHMOS später 1,0 µm CHMOS
Taktfrequenzen: 12,16,20,25,33 40 MHz
Recheneinheiten Ganz/Fließkomma 1 / 0
Geschwindigkeit Ganzzahlen 17,5 Dhrystones bei 40 MHz
Geschwindigkeit Fließkommazahlen 5,68 Whetstones bei 40 MHz (mit 387 Koprozessor)
Geschwindigkeit: 3 - 9,6 MIPS
Spannung: 5 V
Gehäuse: PGA / PQFP mit 132 / 100 Pins (DX/SX)
Speicher: 4 GByte physikalisch, 64 TByte virtuell
16 MByte physikalisch (SX)
64 MByte physikalisch (EX)
Datenbus: 32 Bit breit (DX), 16 Bit breit (SX,EX)
Vorgänger: 80286
Nachfolger: 80486

Links:

http://bitsavers.informatik.uni-stuttgart.de/pdf/intel/_dataBooks/1986_80386_Hardware_Reference_Manual.pdf

http://datasheets.chipdb.org/Intel/x86/386/manuals/27248501.PDF

http://microsym.com/editor/assets/386intel.pdf

Artikel erstellt am 5.7.2014, Artikel zuletzt geändert: 17.12.2104

Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.

Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.

Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.

Mehr über das Buch auf dieser eigenen Seite.

Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.


© des Textes: Bernd Leitenberger. Jede Veröffentlichung dieses Textes im Ganzen oder in Auszügen darf nur mit Zustimmung des Urhebers erfolgen.
Sitemap Kontakt Impressum / Datenschutz Neues Hier werben / advertisment here Buchshop Bücher vom Autor Top 99