Intel iAPX 432
Der Intel iAPX 432 war Intels erster 32-Bit-Mikroprozessor. Er wurde 1981 als Set bestehend aus drei Integrierten Schaltkreisen eingeführt und war als das grundlegende Intel-Design für die 1980er Jahre geplant. Fortschrittliche Funktionen wie Präemptives Multitasking und das Speichermanagement waren in der Hardware implementiert, daher nannte man das Design auch den „Micromainframe“.
Die Datenstruktur-Unterstützung des Prozessors erlaubte es, moderne Betriebssysteme mit viel weniger Programmcode als bei gewöhnlichen CPUs zu implementieren – der 432 erledigte stattdessen einen Großteil der Arbeit intern in der Hardware. Im Vergleich zu anderen Prozessoren war die Chipstruktur extrem komplex. Intels Ingenieuren gelang es mit der damaligen Halbleitertechnik nicht, das Konzept in eine effiziente Implementierung umzusetzen. Die CPU war sehr langsam und teuer, und Intels Pläne, die x86-Architektur durch die iAPX 432 zu ersetzen, endeten in einem wirtschaftlichen Desaster.
Die Abkürzung iAPX stand für intel Advanced Processor architecture, wobei das X vom griechischen Buchstaben Chi kam; wenn man „APX“ an sich als griechische Schrift deutet (Alpha, Rho, Chi), dann steht es selbst für architecture.
Geschichte
Entwicklung
Das 432er-Projekt begann 1975 als i8800 und sollte sich in die bestehenden Produktlinien 8008 und 8080 einreihen. Das Design war von Anfang an als reines 32-Bit-Design geplant. Es sollte wesentlich leistungsfähiger und komplexer als die bisherigen Intel-Prozessoren sein und lag noch weit jenseits der Fähigkeiten der damaligen Prozesstechnologie. Die CPU musste daher in mehrere Chips aufgeteilt werden.
Der Hauptprozessor (General Data Processor, GDP) bestand aus zwei Chips. Ein Chip (der 43201) holte und dekodierte die Befehle, der zweite (43202) führte sie aus. Optional stand mit dem 43203 Interface-Prozessor (IP) auch ein I/O-Controller zur Verfügung. Insgesamt bestand das Drei-Chip-Gespann aus 250.000 Transistoren und war damit eines der umfangreichsten Designs seiner Zeit. So bestand beispielsweise der Motorola 68000 aus etwa 68.000 Transistoren, davon ein Drittel für den Mikrocode.
1983 führte Intel zwei zusätzliche Chips für die iAPX 432 Interconnect Architecture ein, die 43204 Bus Interface Unit (BIU) und die 43205 Memory Control Unit (MCU). Mit ihnen wurden Multiprozessorsysteme mit bis zu 63 Knoten möglich.
Die Fehler des Projekts
Mehrere Designeigenschaften sorgten dafür, dass der iAPX 432 viel langsamer war, als er hätte sein können. Die Zwei-Chip-Umsetzung des GDP begrenzte diesen auf die Geschwindigkeit der Verdrahtung auf dem Mainboard. Dies war allerdings weniger ein Problem. Weitaus ernster war der Mangel an Caches und Registern. Auch der Befehlssatz bremste die Leistung, weil anstatt der sonst üblichen, auf Wortgrenzen liegenden (word-aligned) Instruktionen fester Länge, auf Bit-Grenzen liegende (bit-aligned) Instruktionen variabler Länge verwendet wurden. Die Dekodierung der Instruktionen wurde dadurch komplex und langsam. Die BIU sollte fehlertolerante Systeme unterstützen, was einen merklichen Overhead auf dem Bus mit sich brachte. 40 Prozent der Zeit verbrachte der Bus mit Wartezyklen.
Untersuchungen nach Ende des Projekts ergaben, dass das größte Problem wohl im Compiler lag, der in allen Fällen allgemeine und langsame Befehle verwendete, statt einfache und schnelle Befehle zumindest dort zu benutzen, wo dies sinnvoll gewesen wäre. Der iAPX 432 kannte beispielsweise einen sehr teuren intermodularen Prozeduraufrufsbefehl, den der Compiler für alle Aufrufe verwendete. Die viel schnelleren Sprungbefehle ignorierte er. Ein weiterer sehr langsamer Aufruf war enter_environment, mit dem der Speicherschutz eingerichtet wurde. Der Compiler rief ihn für jede einzelne Variable im System auf, obwohl die weitaus meisten in einem existierenden Environment liefen und nicht geprüft werden mussten. Um die Situation noch schlimmer zu machen, wurde grundsätzlich Call-by-Value und nicht Call-by-Reference verwendet, was in vielen Fällen riesige Speicherkopien erforderlich machte.
Nachwirkungen
Aus dem Fehlschlag iAPX 432 wurde die Lehre gezogen, dass die Unterstützung von Objekten auf CPU-Ebene zu einem komplexen Design führt, das unweigerlich langsam läuft. Seit Erscheinen des iAPX 432 hat niemand mehr ein ähnliches Design auf die Beine gestellt. Tatsächlich sieht es aber so aus, als ob die Unterstützung von Objektorientierung überhaupt nicht das Problem war. Der iAPX 432 litt unter Problemen, die jedes Chip-Design langsam gemacht hätten.
Intel hatte große Mengen an Zeit und Geld in die Entwicklung und das Marketing des 432 investiert, hatte ein fähiges Team darauf angesetzt und zögerte, das Team nach diesem Fehlschlag einfach aufzugeben. Unter Führung des neuen Chefdesigners Glenford Myers sollte der Hauptprozessor neu entwickelt und dann im Rahmen eines Joint Ventures mit Siemens gebaut werden. Aus diesem Projekt entstand später die CPU-Serie i960, die sich lange Zeit großer Beliebtheit im Embedded-Markt erfreute. 1990 gab das zuständige Team den i960 ab und begann mit der Entwicklung des bis in die heutigen Tage erfolgreichen P6-Kerns, der 1995 im Pentium Pro debütierte und später – in weiterentwickelter Form – als Pentium M verkauft wurde. Auch die Core-2-Mikroarchitektur, auf die Intel nach Problemen mit der NetBurst-Architektur zurückkam, basiert auf dem P6-Kern.
Literatur
- Josef Koller: 16 Bit Microcomputer, 1. Auflage, Hofacker Verlag, München 1981, ISBN 3-921682-80-0, S. 371–372.