Intel 80386

Der 80386 ist ein x86-Prozessor mit 32-Bit-Architektur, die von Intel unter dem Markennamen i386 (anfangs iAPX 386) als Nachfolger des 80286 entwickelt und von 1985 bis September 2007 produziert wurde. Das 386er-Design wurde später von AMD in Lizenz gefertigt und die Prozessoren als Am386 verkauft; IBM lizenzierte den i386SX und entwickelte daraus den verbesserten IBM 386SLC. Mehrere Firmen entwickelten kompatible eigene Prozessoren, beispielsweise Chips & Technologies, Cyrix oder NexGen.

Geschichtliche Bedeutung 
Mit dem 80386 vollzog Intel auf der x86-Architektur, ursprünglich eine reine 16-Bit-Architektur, den Wechsel auf eine vollwertige 32-Bit-Architektur. Eingeführt als i386 wurde die 32-Bit-x86-Architektur von Intel retronym in „“, oder abgekürzt IA-32, umbenannt. Die Funktionen des i386 sind auch in allen Nachfolgemodellen bis zum Core i9 (Stand 2019) immer noch vorhanden und, gleichzeitig diente IA-32 auch anderen Herstellern als Vorlage für eigene x86-Prozessoren. Die Register dieser Prozessorfamilie sowie der Adressraum der Architektur sind 32 Bit breit. Auf der Grundlage der i386-Architektur und späteren Erweiterungen (allen voran SSE) baut auch die von AMD um die Jahrtausendwende entwickelte 64-Bit-Erweiterung „x86-64“ auf.

Der 80386 wird weiterhin für Steuerungsaufgaben (z. B. in Telefonvermittlungsanlagen) sowie in der Luft- und Raumfahrt eingesetzt. Der Grund liegt darin, dass seine Rechenleistung für diese Aufgaben vollkommen ausreicht und er als vollständig durchgetestet gilt – das heißt, dass er allen denkbaren Situationen schon ausgesetzt war und daher mit keiner existierenden oder kommenden Software noch ein unvorhergesehenes Verhalten zu erwarten ist. Ein weiterer Grund ist seine hohe Resistenz gegen Strahlung.

Die Entwicklung bei Intel leitete ab 1982 John Crawford.

Architektur

Varianten 
Es gab insgesamt vier Varianten dieser CPU, welche sich im Datenbus und im Einsatzzweck unterschieden. Die Produktion des i386EX als Embedded-Version des i386SX wurde erst im Jahr 2007 eingestellt.

Intel386SX
Eine Variante des 80386 ist der 80386SX. Er besitzt nur einen 16 Bit breiten externen Datenbus und einen 24 Bit breiten Adressbus, behält intern aber die 32-Bit-Mikroarchitektur des 80386 bei. Der 24 Bit breite Adressbus beschränkt den adressierbaren physischen Speicher des 386SX zwar auf 16 MiB; angesichts eines zu Beginn der 1990er Jahre im Heimbereich üblichen Speicherausbaus von zumeist maximal 4 MiB war das aber keine gravierende Einschränkung, zumal viele 386SX-Mainboards einen Speicherausbau von 16 MiB auch nicht erlaubten. Aus Sicht des Programmierers besteht praktisch abgesehen von der Speicherlimitierung kein Unterschied zwischen dem 386SX und dem „echten“ 80386, der zur Unterscheidung von seinem kleinen Bruder nach dessen Einführung in 80386DX umbenannt wurde. Aufgrund der verringerten Datenbusbreite und niedrigerer verfügbarer Taktfrequenzen erreicht der 386SX gegenüber dem 386DX nur eine deutlich geringere Ausführungsgeschwindigkeit.

Intel386SL
Der Intel386SL ist eine Version des i386SX für tragbare Computer. Mit ihm wurde der System Management Mode (SMM) eingeführt, der zu Stromsparzwecken die CPU in Tiefschlaf versetzen kann.

RapidCad
Der RapidCad war ein auf 486-Technik basierendes Upgrade für 386-Systeme. Der RapidCad bestand aus zwei Chips, dem RapidCad1 und dem RapidCad2, wobei ersterer die 80386-CPU und letzterer den 80387-Coprozessor ersetzte. Der RapidCad2 enthielt aber keineswegs die Elektronik des Coprozessors, sondern lediglich eine Logik zur Erzeugung externer Bussignale. Der eigentliche Coprozessor befand sich schon im RapidCad1 integriert.

Gegenüber einem i386-System mit i387-Coprozessor brachte der RapidCad – je nach Anwendung – eine moderate Leistungssteigerung von ungefähr 30 Prozent; an ein System mit 80486-Prozessor reichte die Leistung aber nicht heran. Neben dem hohen Preis sorgte unter anderem dieser Umstand dafür, dass der RapidCad keine weite Verbreitung erfuhr, weshalb die beiden Chips heute begehrte Sammlerobjekte sind.

Segmente 
Der 80386 kann direkt bis zu 4 GiB Hauptspeicher adressieren (386SX: 16 MiB). Der logische Adressraum beträgt 246 Byte = 64 TiB, welcher aber nur theoretisch vollständig nutzbar ist.
Der Prozessor verwendet dabei im Protected Mode die segmentierte Speicheradressierung mit 16 bit breiten Selektoren und – je nach Betriebsmodus – 16 oder 32 Bit breite Offsets.

Die Segmentierungseinheit unterstützt wie beim 80286 vier Privilegstufen, die für folgende Aufgaben vorgesehen sind:
 Ring 0 – für den Kernel und Gerätetreiber
 Ring 1 – für Treiber, die keinen unbeschränkten Hardwarezugriff benötigen (z. B. Dateisystemtreiber), nur selten genutzt
 Ring 2 – für Systemdienste
 Ring 3 – für die Ausführung von normalen Anwendungen

Nur wenige PC-Betriebssysteme haben diese vier Privilegienstufen genutzt. Meist werden (auch aufgrund der Kompatibilität zu anderen Prozessorarchitekturen, die nur zwei Privilegienstufen kennen) nur Ring 0 (für Kernel und (Basis-)Treiber) und Ring 3 (für allen übrigen Code) verwendet.

Bezüglich Sicherheit ist der Protected Mode dem flachen Adressiermodell, das sich nunmehr durchgesetzt hat, deutlich überlegen. Dennoch benutzen nahezu alle neueren PC-Betriebssysteme für Anwendungsprogramme ausschließlich das „Flat Memory“-Modell. Dieses vereinfacht die Programmierung und ist auf andere Prozessorarchitekturen übertragbar, die keine Segmentierungseinheit besitzen.

Hardwareseitig ist auch die parallele Nutzung von Segmentierung und Paging möglich. Dabei wird zuerst durch die Segmentierung die lineare Adresse berechnet und dann über das Paging in die physische Adresse umgesetzt. Ohne Paging entspricht die lineare Adresse der physischen Adresse.

Bei Verwendung eines sogenannten „Flat Memory“-Modells, bei dem Daten-, Code- und Stacksegment in einen linearen 4-GiB-Adressraum der Anwendungsprogramme eingeblendet werden, ist der Speicher innerhalb der Anwendungsprogramme über einfache 32-Bit-Offsets adressierbar. Damit wird der Speicherschutz, den die Segmentierungseinheit bietet, ausgehebelt. Im von AMD eingeführten  in 64-Bit-x86-Prozessoren wurde keine Erweiterung der Segmentierung vorgesehen, sodass bei x64 nur noch ein -Modell nutzbar ist.

Die Paging-Einheit ermöglicht nur einen relativ einfachen, seitenbasierten Speicherschutz. Inzwischen wird versucht, den mit dem -Modell verbundenen Sicherheitslücken durch neue Hardwareerweiterungen wie NX-Bit (ab dem Athlon 64) oder SMEP beizukommen.

Paging 
Zur Verwaltung dient nun eine zusätzliche Ebene, welche 4 KiB große Speicherseiten (englisch ) verwendet. Die Basisadressen aller Seiten werden in Seitentabellen (englisch ) verzeichnet. Diese werden in Seitenverzeichnissen (englisch ) zu 1024 Einträgen gespeichert. Ein Adressraum der Größe 4 GiB wird folglich in 1024 × 1024 Seiten zu 4 KiB aufgeteilt. So kann die lineare 32-Bit-Adresse in drei Bestandteile aufgeteilt werden:
 12 bit – Offset in der Speicherseite
 10 bit – Index auf Seitentabelle
 10 bit – Index auf Seitenverzeichnis

Auf der Seitenebene gibt es zwei Privilegstufen:
 Supervisor-Mode – für Betriebssystem und Treiber (Ring 0, 1 und 2)
 User-Mode – für Anwendungsprogramme (Ring 3)

In Klammern ist die Entsprechung der Segmentprivilegien angegeben.

Register 
Er hat acht 32-Bit-Register. Sieben dieser Register hatten zwar teilweise spezielle Verwendungszwecke im Zusammenhang mit verschiedenen Befehlen, konnten aber ansonsten frei zum Rechnen und allgemeinen Datenaustausch verwendet werden:

Daneben gibt es auch noch weitere Register zur Steuerung des Verhaltens der CPU:

Alle General-Purpose-Register, sowie EIP und EFLAGS, sind auf 32 Bit erweiterte (das E kommt vom englischen extended) Versionen entsprechender 16-Bit-Register der Vorgänger 8086 bis 80286.

Prozessor-Bugs

POPA/POPAD-Bug 
Dieser Fehler tritt bei allen 386ern auf. Wenn unmittelbar nach dem POPA- oder POPAD-Befehl ein Befehl folgt, bei dem eine Speicheradresse aus einem Basis- und Indexregister berechnet wird, ist der Wert im EAX-Register undefiniert. Wird als Basis- oder Indexregister beim Speicherzugriff EAX benutzt, bleibt der Prozessor hängen (nur POPA). Der Linux-Kernel führt beim Booten einen Test durch und gibt bei vorhandenem Fehler die Meldung  Checking for popad bug... Buggy.  aus, bootet anschließend aber weiter.

Überprüfung der Grenze des TSS 
Der Prozessor überprüft, ob die eingetragene Größe des Task Status Segments (TSS) groß genug ist. Die Ausnahme 10 wird immer dann ausgelöst, wenn das TSS kleiner als 101 Byte ist, sollte aber eigentlich schon bei kleiner als 103 Byte auslösen.

Modelldaten

i386DX 

 CPU-Cache: Cache befand sich zu diesen Zeiten auf dem Mainboard, CPUs selbst hatten keinen Cache.
 Mainboard-Cache: Üblich waren 64 KByte direkt-gemappter Cache bei CPUs ab 33 MHz Taktfrequenz.
 Bauform: PGA oder PQFP mit 132 Pins
 Betriebsspannung (VCore): 5 V
 Erscheinungsdatum: 17. Oktober 1985
 Fertigungstechnik: Erste Typen CHMOS III mit 1,5 µm, später CHMOS IV mit 1,0 µm
 Die-Größe: 104 mm² (ca. 10 mm × 10 mm, CHMOS III) und 39 mm² (6 mm × 6,5 mm, CHMOS IV)
 Transistoranzahl: 275.000
 Taktraten:
 12 MHz (erste Modelle des i386)
 16 MHz
 20 MHz
 25 MHz
 33 MHz
 Höher getaktete CPUs stammten von AMD und von Chips & Technologies.

i386SX 
 CPU-Cache: Cache befand sich zu diesen Zeiten auf dem Mainboard, CPU selbst hatten keinen Cache.
 Mainboard-Cache: Üblich waren 64 KByte direkt-gemappter Cache bei CPUs ab 33 MHz Taktfrequenz.
 Bauform: PQFP mit 100 Pins, PGA mit 88 Pins
 Betriebsspannung (VCore): 5 V
 Erscheinungsdatum: 16. Juni 1988
 Fertigungstechnik: CHMOS IV, 1,0 µm
 Die-Größe: 104 mm² bei 275.000 Transistoren
 Taktraten:
 16 MHz
 20 MHz
 25 MHz
 33 MHz

i386SL 

Version des i386SX für tragbare Computer. Mit ihm wurde der System Management Mode (SMM) eingeführt, der zu Stromsparzwecken die CPU in Tiefschlaf versetzen kann.

 CPU-Cache: Cache befand sich zu diesen Zeiten auf dem Mainboard, CPU selbst hatten keinen Cache.
 Mainboard-Cache: Üblich waren 16 bis 64 KByte direkt-gemappter Cache.
 Bauform: PGA mit ? Pins, PQFP mit 132 Pins
 Betriebsspannung (VCore): 5 V
 Erscheinungsdatum: 15. Oktober 1990
 Fertigungstechnik: 1,0 µm
 Die-Größe: ? mm² bei 855.000 Transistoren
 Taktraten:
 20 MHz
 25 MHz

RapidCAD-1 

 Anzahl Transistoren: 800.000
 Herstellungsprozess: 0,8 µm
 Cache: on-board, kein on-die-Cache
 Architektur: 80486-Technik mit 80386-Befehlssatz und -Pinout
 Coprozessor: Integriert
 Gehäuse: 132 Pin, PGA
 Leistungsaufnahme: 3,5 Watt
 Taktraten: 25 und 33 MHz

RapidCAD-2 

Der RapidCAD-2 ist ein PLA zur Erzeugung des FERR-Signals.

 Eingeführt: 1992
 Anzahl Transistoren: 275.000
 Herstellungsprozess: 0,8 µm
 Gehäuse: 68 Pin, PGA (für 387er-Sockel)
 Taktraten: 25 und 33 MHz

i376 

Der i376 ist ein Embedded-Prozessor auf Basis des i386SX und kann als Vorgänger des i386EX angesehen werden.
Er unterstützt keinen Real Mode und kein Paging.

 Datenbus: 16 Bit
 Adressbus: 24 bit
 Cache: nicht vorhanden
 Bauform: PQFP mit 100 Pins und PGA-88
 Betriebsspannung (VCore): 5 V
 Erscheinungsdatum: 16. Januar 1989
 Einstellung der Produktion: 15. Juni 2001
 Fertigungstechnik: CHMOS IV, 1,0 µm
 Die-Größe: ?
 unterstützte FPU: 80387SX
 Besonderheiten: bootet im Protected Mode (unterstützt keinen Real-Mode)
 Taktraten:
 16 MHz
 20 MHz

i386EX, i386EXTB und i386EXTC 

Embedded-Version des i386SX mit System- und Powermanagement.

 Funktionen
 zwei 82C59A Interrupt-Controller
 Timer, Counter (drei Kanäle)
 asynchrone SIO (zwei Kanäle)
 synchrone SIO (ein Kanal)
 Watchdog-Timer (Hardware/Software)
 PIO

 Datenbus: 16 Bit
 Adressbus: 26 Bit
 L1-Cache: nicht vorhanden
 externe FPU: i387SX oder i387SL
 Bauform: PQFP mit 132 Pins, SQFP mit 144 Pins und PGA mit 168 Pins
 Betriebsspannung (VCore): 2,7 V bis 5,5 V
 Erscheinungsdatum: 1994
 Fertigungstechnik: 0,8 µm
 Die-Größe: ? mm² bei ? Transistoren
 Taktraten:
 16 MHz – i386EX, bei 2,7 V bis 3,3 V
 20 MHz – i386EX, bei 3,0 V bis 3,6 V
 25 MHz – i386EX, bei 4,5 V bis 5,5 V
 20 MHz – i386EXTB, bei 2,7 V bis 3,6 V
 25 MHz – i386EXTB, bei 3,0 V bis 3,6 V
 25 MHz – i386EXTC, bei 4,5 V bis 5,5 V
 33 MHz – i386EXTC, bei 4,5 V bis 5,5 V

i386CXSA und i386SXSA (auch als i386SXTA) 

Embedded CPU mit transparentem Powermanagement-Modus, integrierter MMU und TTL-kompatiblen Eingängen (nur SXSA-Version).

 Datenbus: 16 Bit
 Adressbus: 26 Bit (24 Bit bei i386SXSA)
 CPU-Cache: nicht vorhanden
 externe FPU: i387SX oder i387SL
 Bauform: PQFP mit 100 Pins
 Betriebsspannung (VCore):
 4,5 V bis 5,5 V (25 und 33 MHz)
 4,75 V bis 5,25 V (40 MHz)
 Erscheinungsdatum:
 Fertigungstechnik: CHMOS V, 0,8 µm
 Die-Größe: ? mm² bei ? Transistoren
 Taktraten:
 25 MHz
 33 MHz
 40 MHz

i386CXSB 
Embedded CPU mit transparentem Powermanagement-Modus und integrierter MMU.

 Datenbus: 16 Bit
 Adressbus: 26 Bit
 CPU-Cache: nicht vorhanden
 externe FPU: i387SX oder i387SL
 Bauform: PQFP mit 100 Pins
 Betriebsspannung (VCore):
 3,0 V bei 16 MHz
 3,3 V bei 25 MHz
 Erscheinungsdatum:
 Fertigungstechnik: CHMOS V, 0,8 µm
 Die-Größe: ? mm² bei ? Transistoren
 Taktraten:
 16 MHz
 25 MHz

Andere Hersteller 

AMD
 Am386DX
 Am386SX

IBM
 386SLC

Siehe auch 
 Liste der Mikroprozessoren von Intel

Weblinks

Einzelnachweise 

80386
IBM