Intel iAPX 432 - Intel iAPX 432

Intel iAPX 432
Intel-Logo (1968).svg
Logo der Intel Corporation, 1968–2006
Allgemeine Information
Gestartet Ende 1981
Abgesetzt ca. 1985
Gängige Hersteller
Performance
max. CPU- Taktrate 5 MHz bis 8 MHz

Der iAPX 432 ( Intel Advanced Performance Architecture ) ist eine eingestellte Computerarchitektur, die 1981 eingeführt wurde. Es war Intels erstes 32-Bit- Prozessordesign . Der Hauptprozessor der Architektur, der allgemeine Datenprozessor , ist aufgrund technischer Beschränkungen als ein Satz von zwei separaten integrierten Schaltkreisen implementiert. Obwohl einige frühe 8086-, 80186- und 80286-basierte Systeme und Handbücher aus Marketinggründen auch das iAPX- Präfix verwendeten, sind die iAPX 432- und die 8086-Prozessorlinien völlig separate Designs mit völlig unterschiedlichen Befehlssätzen.

Das Projekt begann 1975 als 8800 (nach dem 8008 und dem 8080 ) und sollte Intels Hauptdesign für die 1980er Jahre sein. Im Gegensatz zum 8086 , der im folgenden Jahr als Nachfolger des 8080 entworfen wurde, war der iAPX 432 eine radikale Abkehr von Intels früheren Designs, die für eine andere Marktnische gedacht waren und völlig unabhängig von den 8080- oder x86- Produktlinien waren.

Das iAPX 432-Projekt gilt für Intel als kommerzieller Misserfolg und wurde 1986 eingestellt.

Beschreibung

Der iAPX 432 wurde als "Micromainframe" bezeichnet, der vollständig in Hochsprachen programmiert werden sollte. Die Befehlssatzarchitektur war ebenfalls völlig neu und eine deutliche Abkehr von Intels früheren 8008- und 8080- Prozessoren, da das Programmiermodell iAPX 432 eine Stapelmaschine ohne sichtbare Allzweckregister ist . Es unterstützt objektorientierte Programmierung , Garbage Collection und Multitasking sowie konventionelleres Speichermanagement direkt in Hardware und Microcode . Direkte Unterstützung für verschiedene Datenstrukturen auch moderne ermöglichen sollten Betriebssysteme weit weniger Programm implementiert werden unter Verwendung von Code als für gewöhnliche Prozessoren. Intel iMAX 432 ist ein eingestelltes Betriebssystem für den 432, das vollständig in Ada geschrieben wurde , und Ada war auch die beabsichtigte primäre Sprache für die Anwendungsprogrammierung. In einigen Aspekten kann sie als eine Computerarchitektur auf hoher Ebene betrachtet werden .

Diese Eigenschaften und Merkmale führten zu einem Hardware- und Mikrocode-Design, das komplexer war als die meisten Prozessoren der damaligen Zeit, insbesondere Mikroprozessoren. Interne und externe Busse sind jedoch (meistens) nicht breiter als 16-Bit , und genau wie bei anderen 32-Bit-Mikroprozessoren der Ära (wie dem 68000 oder dem 32016 ) werden 32-Bit-Rechenbefehle von einem 16 . implementiert -bit ALU, über Zufallslogik und Mikrocode oder andere Arten von sequentieller Logik . Der gegenüber dem 8080 vergrößerte Adressraum des iAPX 432 war auch durch die Tatsache begrenzt, dass die lineare Adressierung von Daten immer noch nur 16-Bit-Offsets verwenden konnte, ähnlich wie bei Intels ersten 8086- basierten Designs, einschließlich des zeitgenössischen 80286 (das neue 32-Bit-Segment). Offsets der 80386- Architektur wurde 1984 öffentlich ausführlich beschrieben).

Mit der damaligen Halbleitertechnologie waren die Ingenieure von Intel nicht in der Lage, das Design in eine sehr effiziente erste Implementierung umzusetzen. Zusammen mit der fehlenden Optimierung in einem verfrühten Ada- Compiler trug dies zu eher langsamen, aber teuren Computersystemen bei, die typische Benchmarks mit etwa 1/4 der Geschwindigkeit des neuen 80286- Chips bei derselben Taktfrequenz (Anfang 1982) durchführten. Diese anfängliche Leistungslücke zur eher flachen und preisgünstigen 8086- Reihe war wohl der Hauptgrund dafür, dass Intels Plan, letztere (später bekannt als x86 ) durch den iAPX 432 zu ersetzen, scheiterte. Obwohl die Ingenieure Wege sahen, ein Design der nächsten Generation zu verbessern, wurde die iAPX 432- Funktionsarchitektur nun eher als ein Implementierungsaufwand betrachtet und nicht als die vereinfachende Unterstützung, die sie sein sollte.

Ursprünglich für Taktfrequenzen von bis zu 10 MHz ausgelegt, wurden die tatsächlich verkauften Geräte für maximale Taktraten von 4 MHz, 5 MHz, 7 MHz und 8 MHz mit einer Spitzenleistung von 2 Millionen Befehlen pro Sekunde bei 8 MHz spezifiziert.

Geschichte

Entwicklung

Das 432-Projekt von Intel begann 1976, ein Jahr nach der Fertigstellung des 8-Bit- Intel 8080 und ein Jahr vor dem Start des 16-Bit- 8086- Projekts. Das 432-Projekt wurde ursprünglich als 8800 bezeichnet , als der nächste Schritt über die bestehenden Intel 8008- und 8080- Mikroprozessoren hinaus. Dies wurde ein sehr großer Schritt. Die Befehlssätze dieser 8-Bit-Prozessoren waren für typische Algol- ähnliche kompilierte Sprachen nicht sehr gut geeignet . Das Hauptproblem waren jedoch ihre kleinen nativen Adressierungsbereiche, nur 16K für 8008 und 64K für 8080, viel zu klein für viele komplexe Softwaresysteme ohne irgendeine Art von Bankumschaltung , Speichersegmentierung oder ähnlichem Mechanismus (der in den 8086 eingebaut war). , ein paar Jahre später). Intel wollte nun aus wenigen LSI-Chips ein ausgeklügeltes Komplettsystem bauen, das funktional den besten 32-Bit-Minicomputern und Großrechnern ebenbürtig oder besser war, die ganze Gehäuse mit älteren Chips erfordern. Dieses System würde Multiprozessoren, modulare Erweiterung, Fehlertoleranz, fortgeschrittene Betriebssysteme, fortgeschrittene Programmiersprachen, sehr große Anwendungen, höchste Zuverlässigkeit und höchste Sicherheit unterstützen. Seine Architektur würde die Bedürfnisse der Intel-Kunden für ein Jahrzehnt erfüllen.

Das iAPX 432-Entwicklungsteam wurde von Bill Lattin geleitet, mit Justin Rattner als Lead Engineer (obwohl eine Quelle sagt, dass Fred Pollack der Lead Engineer war). (Rattner wurde später CTO von Intel.) Anfangs arbeitete das Team von Santa Clara aus, aber im März 1977 zogen Lattin und sein Team von 17 Ingenieuren an Intels neuen Standort in Portland um. Pollack spezialisierte sich später auf Superskalarität und wurde der führende Architekt des i686-Chips Intel Pentium Pro .

Es war schnell klar, dass es mehrere Jahre und viele Ingenieure dauern würde, dies alles zu entwerfen. Und es würde ebenfalls mehrere Jahre dauern, bis das Mooresche Gesetz weiter vorangetrieben wurde , bevor eine verbesserte Chipherstellung all dies in ein paar dichte Chips packen könnte. Intel benötigte unterdessen dringend ein einfacheres Zwischenprodukt, um der unmittelbaren Konkurrenz von Motorola , Zilog und National Semiconductor zu begegnen . Also startete Intel ein überstürztes Projekt, um den 8086 als eine risikoarme inkrementelle Weiterentwicklung des 8080 zu entwickeln, wobei ein separates Designteam eingesetzt wurde. Der Massenmarkt 8086 wurde 1978 ausgeliefert.

Der 8086 wurde so konzipiert, dass er mit dem 8080 abwärtskompatibel ist, in dem Sinne, dass die 8080- Assemblersprache mit einem speziellen Assembler auf die 8086-Architektur abgebildet werden konnte . Vorhandener 8080-Assembly- Quellcode (wenn auch kein ausführbarer Code ) wurde dadurch zu einem gewissen Grad aufwärtskompatibel mit dem neuen 8086 gemacht. Im Gegensatz dazu hatte der 432 keine Softwarekompatibilitäts- oder Migrationsanforderungen. Die Architekten hatten die völlige Freiheit, ein neuartiges Design von Grund auf neu zu erstellen, wobei sie die Techniken verwendeten, die ihrer Meinung nach für große Systeme und Software am besten geeignet waren. Sie wandten modische Informatikkonzepte von Universitäten an, insbesondere Fähigkeitsmaschinen , objektorientierte Programmierung, High-Level-CISC-Maschinen, Ada und dicht codierte Anweisungen. Dieser ambitionierte Mix aus neuartigen Features machte den Chip größer und komplexer. Die Komplexität des Chips begrenzte die Taktrate und verlängerte den Designzeitplan.

Der Kern des Designs – der Hauptprozessor – wurde als General Data Processor ( GDP ) bezeichnet und als zwei integrierte Schaltkreise aufgebaut : einer (der 43201) zum Abrufen und Decodieren von Anweisungen, der andere (der 43202) zum Ausführen dieser. Die meisten Systeme würden auch den 43203 - Interface - Prozessor ( IP ) , die als betriebene Kanal - Controller für die I / O , und einen angeschlossenen Prozessor ( AP ), die einen herkömmlichen Intel 8086 , die „Rechenleistung in den I / O - Subsystem“ vorgesehen.

Dies waren einige der größten Designs der Ära. Das Zwei-Chip-BIP hatte eine kombinierte Anzahl von ungefähr 97.000  Transistoren, während das Einzelchip-IP ungefähr 49.000 hatte. Zum Vergleich: Das Motorola 68000 (eingeführt 1979) hatte ungefähr 40.000 Transistoren.

1983 veröffentlichte Intel zwei zusätzliche integrierte Schaltkreise für die iAPX 432 Interconnect Architecture: die 43204 Bus Interface Unit ( BIU ) und die 43205 Memory Control Unit ( MCU ). Diese Chips ermöglichten nahezu leimlose Multiprozessorsysteme mit bis zu 63 Knoten.

Die Misserfolge des Projekts

Einige der innovativen Funktionen des iAPX 432 waren der guten Leistung abträglich. In vielen Fällen hatte der iAPX 432 einen deutlich langsameren Befehlsdurchsatz als herkömmliche Mikroprozessoren der damaligen Zeit, wie der National Semiconductor 32016 , Motorola 68010 und Intel 80286 . Ein Problem war, dass die Zwei-Chip-Implementierung des GDP es auf die Geschwindigkeit der elektrischen Verkabelung des Motherboards beschränkte. Ein größeres Problem war, dass die Fähigkeitsarchitektur große assoziative Caches benötigte, um effizient zu laufen, aber die Chips hatten dafür keinen Platz mehr. Der Befehlssatz verwendete auch bit-ausgerichtete Befehle variabler Länge anstelle der üblichen halbfesten Byte- oder wortausgerichteten Formate, die in den meisten Computerdesigns verwendet werden. Die Befehlsdecodierung war daher komplexer als bei anderen Designs. Obwohl dies die Leistung an sich nicht beeinträchtigte, wurden zusätzliche Transistoren (hauptsächlich für einen großen Barrel-Shifter ) in einem Design verwendet, dem bereits Platz fehlte, und Transistoren für Caches, breitere Busse und andere leistungsorientierte Funktionen. Darüber hinaus wurde die BIU für die Unterstützung fehlertoleranter Systeme konzipiert, wobei bis zu 40 % der Buszeit in Wartezuständen gehalten wurden .

Ein weiteres großes Problem war sein unausgereifter und nicht abgestimmter Ada- Compiler . Es verwendete in jedem Fall teure objektorientierte Anweisungen anstelle der schnelleren skalaren Anweisungen, wo dies sinnvoll gewesen wäre. Zum Beispiel enthielt der iAPX 432 einen sehr teuren Intermodul- Prozeduraufrufbefehl , den der Compiler für alle Aufrufe verwendete, obwohl es viel schnellere Verzweigungs- und Linkbefehle gab. Ein weiterer sehr langsamer Aufruf war enter_environment, der den Speicherschutz einrichtete. Der Compiler führte dies für jede einzelne Variable im System aus, auch wenn Variablen in einer bestehenden Umgebung verwendet wurden und nicht überprüft werden mussten. Erschwerend kommt hinzu, dass Daten, die an und von Prozeduren übergeben wurden, immer per Wertrückgabe und nicht als Referenz übergeben wurden. Beim Ausführen des Dhrystone- Benchmarks dauerte die Parameterübergabe zehnmal länger als bei allen anderen Berechnungen zusammen.

Laut der New York Times "lief der i432 5 bis 10 Mal langsamer als sein Konkurrent, das Motorola 68000".

Impact und ähnliche Designs

Der iAPX 432 war eines der ersten Systeme, das den neuen IEEE-754- Standard für Gleitkomma-Arithmetik implementierte .

Ein Ergebnis des Scheiterns des 432 war, dass Mikroprozessor-Designer zu dem Schluss kamen, dass die Objektunterstützung im Chip zu einem komplexen Design führt, das ausnahmslos langsam läuft, und das 432 wurde von Befürwortern von RISC- Designs oft als Gegenbeispiel zitiert . Einige sind jedoch der Meinung, dass die OO-Unterstützung nicht das Hauptproblem des 432 war und dass die oben erwähnten Implementierungsmängel (insbesondere im Compiler) jedes CPU-Design verlangsamt hätten. Seit dem iAPX 432 gab es nur einen weiteren Versuch eines ähnlichen Designs, den Rekursiv- Prozessor, obwohl die Prozessunterstützung des INMOS Transputer ähnlich war – und sehr schnell.

Intel hatte viel Zeit, Geld und Gedanken in den 432 investiert , hatte ein kompetentes Team, das sich ihm widmete, und war nicht bereit, ihn nach seinem Scheitern auf dem Markt vollständig aufzugeben. Ein neuer Architekt – Glenford Myers – wurde beauftragt, eine völlig neue Architektur und Implementierung für den Core-Prozessor zu entwickeln, die in einem gemeinsamen Intel / Siemens- Projekt (später BiiN ) gebaut werden sollte, was zu den Prozessoren der i960- Serie führte. Die i960 RISC-Untergruppe wurde eine Zeit lang auf dem Markt für eingebettete Prozessoren populär, aber der High-End-960MC und der Tagged-Memory-960MX wurden nur für militärische Anwendungen vermarktet.

Laut der New York Times war die Zusammenarbeit von Intel mit HP beim Merced-Prozessor (später bekannt als Itanium) der Comeback-Versuch des Unternehmens für den High-End-Markt.

Die Architektur

Die iAPX 432-Befehle haben eine variable Länge zwischen 6 und 321 Bit. Ungewöhnlicherweise sind sie nicht byte-aligned, dh sie können ungerade Bitzahlen enthalten und ohne Rücksicht auf Bytegrenzen direkt aufeinander folgen.

Objektorientierter Speicher und Fähigkeiten

Der iAPX 432 bietet Hardware- und Mikrocode-Unterstützung für objektorientierte Programmierung und fähigkeitsbasierte Adressierung . Das System verwendet segmentierten Speicher mit bis zu 2 24 Segmenten von jeweils bis zu 64  KB , wodurch ein virtueller Gesamtadressraum von 2 40 Byte bereitgestellt wird . Der physikalische Adressraum beträgt 2 24 Byte (16  MB ).

Programme sind nicht in der Lage, Daten oder Anweisungen nach Adresse zu referenzieren; stattdessen müssen sie ein Segment und einen Offset innerhalb des Segments angeben. Auf Segmente wird durch Zugriffsdeskriptoren (ADs) verwiesen , die einen Index in die Systemobjekttabelle und einen Satz von Rechten ( Fähigkeiten ) bereitstellen, die Zugriffe auf dieses Segment regeln. Segmente können "Zugriffssegmente" sein, die nur Zugriffsdeskriptoren enthalten können, oder "Datensegmente", die keine ADs enthalten können. Die Hardware und der Mikrocode erzwingen die Unterscheidung zwischen Daten- und Zugriffssegmenten starr und erlauben es der Software nicht, Daten als Zugriffsdeskriptoren zu behandeln oder umgekehrt.

Systemdefinierte Objekte bestehen entweder aus einem einzelnen Zugriffssegment oder einem Zugriffssegment und einem Datensegment. Systemdefinierte Segmente enthalten Daten oder Zugriffsdeskriptoren für systemdefinierte Daten an bestimmten Offsets, obwohl das Betriebssystem oder die Benutzersoftware diese mit zusätzlichen Daten erweitern kann. Jedes Systemobjekt hat ein Typfeld, das durch Mikrocode überprüft wird, so dass ein Port-Objekt nicht verwendet werden kann, wo ein Trägerobjekt benötigt wird. Benutzerprogramme können neue Objekttypen definieren, die durch die Verwendung von Typkontrollobjekten (TCOs) den vollen Nutzen aus der Hardwaretypprüfung ziehen .

In Release 1 der iAPX 432-Architektur bestand ein systemdefiniertes Objekt typischerweise aus einem Zugangssegment und optional (je nach Objekttyp) einem Datensegment, das durch einen Zugangsdeskriptor an einem festen Versatz innerhalb des Zugangssegments spezifiziert wird.

Ab Release 3 der Architektur wurden zur Performancesteigerung Zugangs- und Datensegmente zu Einzelsegmenten bis 128 kB zusammengefasst, aufgeteilt in einen Zugangsteil und einen Datenteil von jeweils 0–64 KB. Dies reduzierte die Anzahl der Objekttabellen-Suchvorgänge drastisch und verdoppelte den maximalen virtuellen Adressraum.

Die iAPX432 erkennt vierzehn Arten von vordefinierten Systemobjekte :

  • Anweisungsobjekt enthält ausführbare Anweisungen
  • Domänenobjekt stellt ein Programmmodul dar und enthält Verweise auf Unterprogramme und Daten
  • Kontextobjekt repräsentiert den Kontext eines Prozesses in Ausführung
  • type-definition object repräsentiert einen softwaredefinierten Objekttyp
  • type-control-Objekt repräsentiert typspezifische Privilegien
  • Die Objekttabelle identifiziert die Sammlung aktiver Objektdeskriptoren des Systems
  • Speicherressourcenobjekt stellt einen freien Speicherpool dar
  • physisches Speicherobjekt identifiziert freie Speicherblöcke im Speicher
  • Speicheranspruchsobjekt begrenzt den Speicher, der von allen zugeordneten Speicherressourcenobjekten zugewiesen werden kann
  • Prozessobjekt identifiziert einen laufenden Prozess
  • Port-Objekt repräsentiert einen Port und eine Nachrichtenwarteschlange für die Interprozesskommunikation
  • Carrier Carrier transportieren Nachrichten von und zu Häfen
  • Prozessor enthält Statusinformationen für einen Prozessor im System
  • Das Prozessor-Kommunikationsobjekt wird für die Kommunikation zwischen den Prozessoren verwendet

Müllabfuhr

Software, die auf dem 432 ausgeführt wird, muss nicht mehr benötigte Objekte nicht explizit freigeben. Stattdessen implementiert der Mikrocode einen Teil des Markierungsteils von Edsger Dijkstras fliegendem parallelen Garbage-Collection- Algorithmus (einem Mark-and-Sweep- Stil-Kollektor). Die Einträge in der Systemobjekttabelle enthalten die Bits, die verwendet werden, um jedes Objekt je nach Bedarf als weiß, schwarz oder grau zu markieren. Das Betriebssystem iMAX 432 enthält den Softwareteil des Garbage Collectors.

Anweisungsformat

Ausführbare Anweisungen sind in einem System-"Anweisungsobjekt" enthalten. Da Befehle bit-ausgerichtet sind, ermöglicht eine 16-Bit-Bitverschiebung in das Befehlsobjekt, dass das Objekt bis zu 8192 Bytes an Befehlen (65.536 Bits) enthält.

Anweisungen bestehen aus einem Operator , der aus einer Klasse und einem Opcode besteht , und null bis drei Operandenreferenzen . "Die Felder sind so organisiert, dass sie dem Prozessor Informationen in der für die Decodierung erforderlichen Reihenfolge präsentieren". Häufiger verwendete Operatoren werden mit weniger Bits codiert. Die Anweisung beginnt mit dem 4 oder 6 - Bit - Klassenfeld, das die Anzahl der Operanden angibt, die genannte Reihenfolge der Instruktion, und die Länge jeden Operanden. Daran schließt sich optional ein 0 bis 4 Bit Formatfeld an , das die Operanden beschreibt (wenn keine Operanden vorhanden sind, ist das Format nicht vorhanden). Dann kommen null bis drei Operanden, wie durch das Format beschrieben. Der Befehl wird durch den 0 bis 5-Bit-Opcode abgeschlossen, falls vorhanden (einige Klassen enthalten nur einen Befehl und haben daher keinen Opcode). "Das Format-Feld erlaubt es dem Programmierer, das GDP als Null-, Ein-, Zwei- oder Drei-Adressen-Architektur zu erscheinen." Das Formatfeld zeigt an, dass ein Operand eine Datenreferenz ist oder das oberste oder nächstoberste Element des Operandenstapels ist.

Siehe auch

  • iAPX , für den iAPX-Namen

Anmerkungen

Verweise

Externe Links