Fünf marktverfügbare 32-Bit-Prozessoren im Systemvergleich, Teil 1:

Der Stand der Dinge oder der Kampf der Giganten

20.12.1985

Erst knapp 15 Jahre ist die Mikroprozessortechnik nun alt. Sie hat Entwicklungen in Gang gesetzt, die zu Beginn niemand vermuten konnte. Während die Taktfrequenzen eine wahre Inflation über sich ergehen lassen müssen, werden die Chips immer komplexer; immer mehr Funktionen lassen sich auf einem solchen Kristallplättchen integrieren. Analog dazu wachsen die Anwendungsmöglichkeiten: Die heutigen Chips der

32-Bit-Generation steuern Roboter und ermöglichen bei Computern bisher unerreichte Leistungsfähigkeit. Der erste Teil des vorliegenden Berichts gibt einen Überblick über die eher herkömmlich konzipierten Typen 80386, 32332 und MC 68020. Den etwas exotischeren Entwürfen T 414 von Inmas und "Clipper" von Fairchild widmet sich der zweite Teil in der nächsten Ausgabe.

Vor nicht allzu vielen Jahren erblickte mit dem 4004 der erste Mikroprozessor das Licht der Welt. Konzipiert für eine elektronische Ladenkasse, schien seine Verwendung begrenzt auf wenige Applikationen in der Elektronik. Trotzdem wurde diese 4-Bit-CPU damals mit staunenden Augen betrachtet und stellte an vielen Hardware-Entwicklerstammtischen ein prominentes Gesprächsthema dar.

Mit dem 8008 wurde bereits kurze Zeit später der erste

8-Bit-Prozessor vorgestellt, der über den schwindelerregenden Adreßbereich von 64 KB verfügte. Zwar waren sich viele Fachleute darüber im klaren, daß sie die Möglichkeiten dieses neuen Bauelementes noch keineswegs in voller Tragweite erfaßt hatten, doch an eine derart stürmische Entwicklung, wie sie tatsächlich dann stattfand, dachte so recht eigentlich niemand. Aber von da an ging es Schlag auf Schlag: Mit Prozessoren wie dem 8080 von Intel, dem 6800 von Motorola oder dem Rockwell 6502 ging die Entwicklung hinsichtlich der Applikationen für die Wunderzwerge eindeutig in Richtung Datenverarbeitung. Mikroprozessoren, die diese Tendenz negierten, indem sie in ihrer Architektur nicht die erforderlichen Vorrichtungen realisierten, konnten sich am Markt nicht durchsetzen. Beispiele dafür sind der 2650 von Valvo oder der SC/MP von National Semiconductor.

Grenzen der 8-Bit-Technik sind erreicht

Es dauerte allerdings nicht lange, bis sich gewisse Grenzen der 8-Bit-Technik abzeichneten, denn der Appetit der Systementwickler war gewachsen und verlangte nach komfortableren Betriebssystemen, mehr Speicher, höherem Durchsatz. Hatte der Instruktionssatz bisher den Erfordernissen relativ einfacher Steuerungsaufgaben oder von Homecomputern genügt, so forderte der Trend zu Hochsprachen einen erweiterten Befehlsvorrat, komplexere Adressierungsarten und die Unterstützung von entsprechenden Datentypen. Dies war die Geburtsstunde der 16-Bit-Prozessore.

Texas Instruments leistete hier mit dem TMS 9900 Pionierarbeit. Der Prozessor mit seinem speicherorientierten Workspace-Konzept konnte sich jedoch nicht so recht durchsetzen: Die damals verfügbaren RAM-Bausteine waren noch zu langsam. Das Rennen machte der Intel 8086, der mit seinen diversen Varianten noch heute den sogenannten Industriestandard darstellt. Aber die Anforderungen wuchsen weiter, ebenso wie die Fähigkeiten der Halbleiterhersteller, immer komplexere Strukturen auf einem Chip zu integrieren.

Analog dazu wurden die Rechnerarchitekturen verfeinert, und auch die Software mußte immer weitergehenden Ansprüchen hinsichtlich Leistungsfähigkeit und Komfort genügen. So markiert denn gegenwärtig die 32-Bit-Technik den Stand der Dinge. Die Schlagwörter heißen heute Multitasking-Fähigkeiten, virtuelle Speicheradressierung, noch weiter gehende Unterstützung von Hochsprachen (HLL = High Level Language), zum Beispiel C, Modula-2 oder Lisp, Mehrbenutzer-Betriebssysteme wie Unix, Parallelisierung der Abläufe und immer höhere Taktfrequenzen. Diese Dinge benötigen die Systementwickler für ihre Zukunftsprojekte Künstliche Intelligenz, Robotersteuerungen, rechenintensive Simulationen im CAD-Bereich, für die kommunikationsintensive Netzwerk-Büroumgebung etc.

Der Systementwickler, der Ausschau hält nach einem geeigneten 32-Bit-Prozessor, wird nicht lange suchen müssen. Die Auswahl käuflicher Typen ist noch sehr begrenzt. Das soll nicht heißen, daß die Entscheidung für einen bestimmten Typ dadurch zum Kinderspiel würde. Zu neu ist für viele Entwickler die Materie, zu komplex sind die Strukturen von Anforderungen und Prozessorleistung.

Sechs verschiedene 32-Bit-Prozensoren werden derzeit angeboten. Dies sind der 68020 von Motorola und der 80386 von Intel. National Semiconductor bietet die Typen 32032 und 32332 an. Da der zweite eine Weiterentwicklung des 32032 - dar stellt, kann im Rahmen des vorliegenden Berichts auf die Beschreibung des ersten Typs verzichtet werden. Der 32-Bit-Transputer T414 des britischen Herstellers Inmos erfüllt hingegen zweifellos alle Voraussetzungen für die Aufnahme in diese Kategorie. Allerdings, soviel vorweg, weicht er in seiner Konzeption ganz erheblich von den vorher aufgezählten

"Mainstream"-Modellen ab. Ein Systemvergleich ist damit nur bedingt möglich.

Historischer Kompromiß-der 80386

Die geschichtliche Entwicklung der Mikroprozessoren von

8-Bit-über 16-Bit- zu 32-Bit-Systemen wird am deutlichsten beim 80386, dessen Programmiermodell die Abbildung 1 zeigt. Auffallend ist die Ähnlichkeit mit früheren Prozessoren aus Hause Intel. So enthält der 80386 den kompletten Registersatz seiner Vorgänger bis hinunter zum 8080. Daraus resultiert die Aufwärtskompatibilität für die auf diesen Prozessoren basierende Software.

Diese Kompatibilität existiert auf Objektcode-Ebene, das heißt, daß die fragliche Software auf dem iAPX 386 läuft, ohne daß ein neuer Compilerlauf erforderlich ist. Intel führt das denn auch als gewichtiges Argument für sein Produkt an. Hält man sich den wertmäßigen Umfang dieser Software vor Augen und bedenkt man, daß Prozessoren dieser Reihe den IBM-"Industriestandard" so erfolgreich gemacht haben, so wird klar, daß das Argument nicht eben von Pappe ist.

Dem Konzept inhärent sind jedoch auch eine Reihe Beschränkungen. Gerade in seiner Kompatibilität liegt auch seine Schwäche, denn sein Instruktionssatz ist eine Obermenge desjenigen seiner 8- und 16-Bit-Ahnen, und da diese Familien einen jeweils sehr unterschiedlichen Stand der Technik repräsentieren, sind Kompromisse in der Struktur der Instruktionen, der Adressierungsarten und der Verwendbarkeit der Regi(...)er unumgänglich.

So können 8-Bit-Operanden lediglich in den Registern EAX, EBX, ECX und EDX behandelt werden. Anstatt, wie das bei den anderen Prozessoren üblich und sinnvoll ist, innerhalb einer Instruktion den Registernamen zusammen mit einer Operandenlänge zu spezifizieren, muß der Programmierer unterschiedliche Namen für die Verwendung der 8-, 16- und 32-Bit-Abschnitte eines Registers benutzen. Speicher-Speicher-Adressierung ist nicht möglich, allerdings nach Meinung von Intel auch nur bei Stringverarbeitung von Interesse .

Kompromisse beim Befehlssatz

Der Befehlssatz wird gegenwärtig noch als "confidential" behandelt; trotzdem wurden einige Einzelheiten bekannt. So enthält er auch Instruktionen, die direkt HLLs (High Level Languages = Hochsprachen) unterstützen. Beispielsweise verfügt der Prozessor über Multiplikations- und Divisionsinstruktionen. Zwei 32-Bit-Zahlen werden in zwei Mikrosekunden multipliziert. Weiter enthält der Instruktionssatz Bit-Manipulationsbefehle, wie Bit-String-Instruktionen, die Bitfelder bis vier Gigabit bearbeiten können. Von besonderer Bedeutung sind derartige Instruktionen für den Einsatz in Steuer- und Automatisierungsanwendungen und für Bitmapped Grafik. Die Möglichkeit, gleichzeitig mit vier Speicherbereichen zu arbeiten, unterstützt das Programmieren in C. Für Taskwechsel in

Multitasking-Umgebungen existiert eine Instruktion, die innerhalb von 17 Mikrosekunden den Status der alten Tasks abspeichert, den Status des neuen lädt und die Verarbeitung fortführt.

Als einziger Prozessor in diesem Überblick verfügt der 80386 über eine eingebaute MMU (Memory Management Unit). Diese erlaubt eine vielseitige virtuelle Speicherverwaltung. Der 80386 ist auch der einzige Prozessor, dessen virtueller Adreßraum größer ist als der physikalische. Erreicht wird dies durch einen 46 Bit breiten Zeiger, der sich aus einem 16-Bit-Segment-Selektor, von dem allerdings nur 14 Bit relevant sind, und einem 32-Bit-Segment-Offset zusammensetzt. Damit umfaßt der virtuelle Adreßraum 64 Terabyte.

Sowohl die traditionelle Segmentierung als auch Paging werden unterstützt. Kritiker wenden ein, daß Intel damit lediglich die Nachteile beider Systeme auf sich vereinigt. Mit der variablen Segmentgröße, die im Extremfall den gesamten physikalischen Adreßraum von vier Gigabyte umfaßt, läßt sich die in manchen Fällen lästige Segmentierung jedoch praktisch ausschalten. Dabei sind bis zu 16 383 verschiedene Segmente unterschiedlicher Größe zulässig. Die Module können von mehreren Tasks gemeinsam benutzt oder getrennt bearbeitet werden. Beim Paging teilt die MMU den Speicher in Blöcke fester Größe (beim 80386 vier Kilobyte) auf, wodurch ein einheitlicher Vorgang entsteht, der den Algorithmus für das Vertauschen des Speicherinhalts vereinfacht. Dieses Verfahren kann in Fällen, in denen Segmente sehr groß sein müßten, die Verwaltung des physikalischen Speichers beschleunigen. Beschleunigt wird der Speicherzugriff auch über einen Assoziativ-Cache in der MMU, der die 32 zuletzt benutzten linearen Adressen mit den dazugehörigen physikalischen verknüpft.

Die Intel-Architektur ermöglicht die Implementierung von physikalischen transparenten Caches. Diese bieten gegenüber logischen und nichtransparenten Caches Vorteile; zum Beispiel entfällt das

"Stale-Data-Problem", das Problem nicht korrekt aufdatierter Speicherinhalte.

Für einen Speicherzugriff benötigt der 80386 zwei Taktzyklen. Bei einer Clockfrequenz von 16 Megahertz laufen somit 32 Megabytes pro Sekunde über den Bus, dessen Format - 8, 16 oder 32 Bit - den Erfordernissen dynamisch angepaßt werden kann, eine Fähigkeit, die übrigens alle beschriebenen Prozessoren aufweisen. Zur Beschleunigung der Verarbeitung wurde auf dem Chip eine sechsstufige

Instruction-Pipeline implementiert, deren Inhalt teilweise parallel abgearbeitet wird.

Ein wichtiges Feature des 80386 stellt die von Intel als "virtueller Modus" bezeichnete Fähigkeit dar, ein 8086-Programm als Task in einer Multitasking-Umgebung auszuführen. Dabei kann das Umschalten zwischen dem "real mode" und dem "protected mode" nur über einen Hardware-Reset erfolgen. Einige Befehle des virtuellen 8086, wie zum Beipiel solche für Datenein- und -ausgabe oder zur Anforderung von Betriebssystemdiensten müssen allerdings durch Software-Routinen emuliert werden.

Besonders viel Aufwand hat Intel in den Speicherschutz gesteckt. Gegenüber den sonst bei Prozessoren dieser Leistungsklasse üblichen zwei Zugriffsebenen gibt es deren vier. Die Systemprogrammierung dürfte

dadurch allerdings nicht erleichtert werden. Eine hübsche kleine Aufmerksamkeit der Chipkonstrukteure für Programmentwickler sind die eingebauten vier Debugging-Register. Mit deren Hilfe können sowohl die üblichen Instruktions- als auch Daten-Breakpoints gesetzt werden, welche bei Zugriff auf eine bestimmte Speicherstelle einen Trap und somit eine Programmunterbrechung auslösen.

Orthogonalität als System: der NS 32332

Von vornherein als 32-Bit-System konzipiert wurde der 32332 von National Semiconductor. Seine Architektur wurde nahezu unverändert vom 32032 übernommen. Die Änderungen, die zu einer Performancesteigerung um den Faktor 2,5 bis 3 geführt haben, sind für den Programmierer nicht erkennbar. Verfeinerungen in der Halbleitertechnik lassen jetzt eine maximale Taktfrequenz von 15 Megahertz zu. Das Mikroprogramm wurde zur Geschwindigkeitserhöhung optimiert. Hinzugefügt wurde eine zweite schnelle ALU, die ausschließlich der Adreßberechnung dient, und ein Barrel-Shifter für die Beschleunigung von Multiplikationen. Die Instruction-Queue wuchs auf 20 Bytes.

Der 32332 führt im Gegensatz zu seinen Konkurrenten von Motorola und Intel ein reines Prefetching aus, das heißt, die in der Queue stehenden Instruktionen werden nacheinander decodiert und bearbeitet, während bei den anderen Prozessoren gleichzeitig drei Vorgänge ablaufen: Instruktion decodieren, Steuersignale erzeugen und ausführen. Durch die schnelle Adreß-Alu sind jedoch zumindest für die Adreßberechnung keine zusätzlichen Taktzyklen erforderlich. Mit dieser Anordnung will Natsemi einem Nachteil des Pipelining abhelfen: Eine Instruction-Queue, so der Hersteller, kann im Gegensatz zu einer Pipeline auch dann arbeiten, wenn sie nicht vollständig gefüllt ist, sondern ihre Buszugriffe dann vornehmen, wenn der Bus geringer belastet ist. Dadurch und durch den dann möglichen Zugriff im schnellen Burst-Mode wird ein Gewinn an Flexibilität erzielt.

Abbildung 2 zeigt das Programmiermodell des Prozessors. Wie für Kenner unschwer ersichtlich, hat offensichtlich die VAX von DEC die Architektur des 32332 inspiriert. Der augenfälligste Unterschied besteht in der Implementierung von nur acht Allzweckregistern gegenüber zwölf bei der VAX. Diese General-Purpose-Register können sowohl Daten als auch Adressen aufnehmen. Die Wortlänge läßt sich als 8, 16 oder 32 Bit definieren, und zwar für alle diese Register. Überhaupt wurde bei der Konzeption Wert darauf gelegt, die Symmetrie und Orthogonalität des Befehlssatzes so weit wie möglich gehen zu lassen. Das bedeutet, daß sich alle Register mit allen Adressierungsarten für alle Instruktionen verwenden lassen. Dies erleichtert die Programmierung besonders in Assembler beträchtlich, außerdem ermöglicht es die Optimierung von Compilern hinsichtlich der Dichte des abgesetzten Codes.

Einige Beschränkungen

Soweit ersichtlich, kommt von allen hier besprochenen Prozessoren der 32332 diesem Ideal am nächsten, denn sogar bei seinem nächsten Rivalen, dem 68020 von Motorola, gibt es mehr Restriktionen bezüglich der Adressierungsarten. Einige Beschränkungen gibt es allerdings auch beim 32332. Für die indirekte Adressierung lassen sich nur die Register Frame-Pointer, Stack-Pointer und Stastic-Base verwenden. Dem 32332 fehlt ein dritter Stack-Pointer, der von Fachleuten als wesentlich für Anwendungen in Echtzeit-Multitasking-Betriebssystemen erachtet wird. Wie auch der Konkurrent von Motorola (nicht aber der 80386) erlaubt der 32332 die relative Adressierung im Zusammenhang mit dem Programmzähler. So laßt sich ein positionsunabhängiger Code erzeugen. Im Gegensatz zu Motorola gibt es bei National Semiconductor die

Adressierungsarten Auto-Inkrement/ -Dekrement lediglich im Top-of-Stack-Adreßmodus; auch Move-String- und Move-Block-Operationen besitzen diese Funktionen. Ansonsten sind die Inkrement- beziehungsweise Dekrement-Funktionen mit einem "Quick-Add"- respektive "Quick-Subtract"-Befehl zu implementieren. Im Zusammenhang mit der Unterstützung von Hochsprachen besitzt der Prozessor Instruktionen zum Aufruf von Prozeduren und zur Behandlung strukturierter Datentypen wie Arrays und Records. Auch Adressierungsarten wie Scaled-indexing oder Speicherrelativ dienen diesem Zweck.

Der Instruktionssatz weist eigene Anweisungen für die Durchführung von Taktwechseln ebenso auf wie für die Unterstützung von Modulen. Von allen untersuchten Prozessoren besitzt der 68020 die meisten Adressierungsarten, insgesamt 18. Außerdem ermöglicht der Prozessor skalierte Indexierung für das Handling von Arrays.

Bei Verwendung einer MMU ist eine virtuelle Speicherverwaltung möglich, und je nachdem, welcher Baustein eingesetzt wird, findet Segmentierung oder Paging statt. Die für Paging verwendete PMMU MC 68851 enthält einen Adreß-Übersetzungs-Cache ähnlich dem 80386. Wie der Prozessor von Natsemi unterstützt auch derjenige von Motorola unmittelbar zwei Zugriffsebenen. Bis zu acht Speicherschutzebenen lassen sich aufbauen, wenn eine MMU die Verwaltung übernimmt.

Der Prozessor erlaubt bei voller Taktfrequenz von 15 Megahertz den Zugriff auf einen Cache ohne Wartezyklen. Um die Datenrate auf dem gemultiplexten Bus weiter zu erhöhen, verfügt er über eine sogenannte Burst-Betriebsart, die einen Speicherzugriff in nur zwei Taktzyklen ermöglicht. Bei Verwendung einer MMU benötigt der Prozessor vier Taktzyklen für einen Datenzugriff. Zum Vergleich: Der Motorola benötigt fünf Zyklen. Gegenüber der VAX-Architektur hinzugefügt wurde das MOD-Register, welches der unmittelbaren Hardware-Unterstützung von modularer Programmierung dient. Dieses Register enthält die Basisadresse eines Module-Desscriptor-Table. Ein Modulaufruf addiert den respektiven Offset für das aufgerufene Modul hinzu, und die sich so ergebende effektive Adresse enthält dann den Module-Descriptor. Diese Vorrichtung soll Linkzeiten wesentlich verkürzen. Entsprechend den Anforderungen des in dieser Leistungsklasse stark verbreiteten Betriebssystems Unix unterstützt der Prozessor zwei Zugriffsberechtigungsebenen, nämlich BS- und User-Level.

Die vielseitige Familie: Motorola 88020

Der 68020 übernimmt die Architektur des bekannten 68000 weitgehend unverändert (Abbildung 3). Auch hier hat die VAX bei der Konzeption Pate gestanden, ebenso wie übrigens auch die IBM /370. Je acht allgemein verwendbare Daten- und Adreßregister sind vorhanden. Die Datenregister können Bits, Bytes, Worte (16 Bit) und "Langworte" (32 Bit) behandeln. Zusätzlich lassen sich Bitfelder mit 1 bis 32 Bit sowie

64-Bit-Vierfachworte als Operanden verwenden. Die Register A0 bis A7 fungieren normalerweise ebenso wie die drei Stack-Pointer als Software-Pointer oder Basisadreßregister. Daher sind einige Instruktionen, wie zum Beispiel Multiplikation, mit diesen Registern nicht durchführbar. Alle Register lassen sich als Indexregister mit einer Länge von 16 oder 32 Bit verwenden. Im "Supervisor Supplement" befinden sich je ein Steuer- und Adreßregister für das auf dem Chip befindliche Instruktions-Cache mit einer Kapazität von 256 Bytes. Im Gegensatz zu dem Cache des 80386, der ausschließlich für die Adreßberechnung in der MMU verwendet werden kann, handelt es sich hier um einen Auszug aus dem Arbeitsspeicher. In diesem Fall ist zur Erzielung einer angemessenen Trefferquote ein wesentlich größeres Fassungsvermögen erforderlich. Einer Motorola-Untersuchung zufolge liegt bei der vorliegenden Kapazität die Trefferrate lediglich bei 20 bis 30 Prozent. Trotzdem gibt der Hersteller die dadurch erzielte Durchsatzsteigerung mit rund 30 Prozent an. Benötigt eine im Cache enthaltene Instruktion einen Operanden aus dem globalen Speicher, so erfolgt über den (asynchronen) Bus ein gleichzeitiger Zugriff auf letzteren; es sind also keine zusätzlichen Taktzyklen erforderlich. Instruktionen aus dem Cache oder dem globalen Speicher werden zunächst in eine dreistufige Pipeline geladen. Ist diese gefüllt, findet simultan die Decodierung, Erzeugung des Steuercodes und Ausführung statt.

wird fortgesetzt