Perspektiven

Intel ist derzeit mit der Neuentwicklung mehrerer Chips beschäftigt. Z.B. Mit einem Chip, der intern als PS5C bezeichnet wird. Dieser Baustein basiert auf dem Pentium-Prozessor, wird jedoch um Multimediabefehle erweitert. Zu den Multimedia Extensions (mmx) gehören Instruktionen, die Vektor- und Matrixoperationen beschleunigen. Diese für die Videoverarbeitung nötigen Befehle werden noch mit herkömmlichen Instruktionsfolgen nachgebildet. Intel verspricht einen besonderen Leistungsschub für die Software-MPEG-Dekodierung.

Auch an eine schnelle Verarbeitung von Multiply-Accumulate-Befehlen wird gedacht. Diese Operationen sind das Leibgericht der digitalen Signalprozessoren (DSP) und ermöglichen eine Vielzahl von Anwendungen wie Audiobearbeitung, Effekte und Signalfilterung. Der neue Chip soll rund 100 Dollar mehr kosten als ein vergleichbarer Pentium-Prozessor.

Für den Standard-Pentium wird es die erwartete Erhöhung der Taktfrequenz geben. Seit Ende 1996 läuft der 200er vom Band; der ursprünglieb geplante 180er-Pentium wurde nicht produziert.

Eine weitere Entwicklung läuft unter dem Codenamen Klamath. Dieser Prozessor soll als Derivat des Pentium Pro auf den Markt kommen; er soll ebenfalls um Multimedia-Instruktionen erweitert sein. Möglicherweise wird der Chip auch eine verbesserte 16-Bit-Architektur enthalten. Die erste Version des Klamath soll mit 200 Megahertz getaktet sein und auf einem 0,35-p-Prozeß basieren. Spätere Versionen sollen mit 300 Megahertz laufen. Ein Detail des Pentium Pro wird Klamath allerdings fehlen: Der integrierte und derzeit kostenintensive Level-2-Cache wird nicht mehr eingebaut.

Verschoben hat sich hingegen die Einführung des P7, der unter dem Codenamen Merced entwickelt wird. Laut "Microprocessor Report" soll der Chip nicht vor Mitte 1998 das Licht des Verkaufsraums erblicken. Mit diesem Chip will Intel auch eine neue 64-Bit-Code-Basis einfuhren, die der Chipgigant zusammen mit Hewlett-Packard entwickelt. Unter dem Stichwort VLIW (Very Large Insiruction Word) werden alle Befehle in eine konstante, teilweise parallele Form kodiert. Dadurch soll besonders die Dekodierung der Instruktionen vereinfacht werden.

Speichertest

Der Prozessor der Zukunft wird immer mehr Komponenten eines Computers enthalten.

Entwicklungen anderer Hersteller

Auch bei Cyrix sind die Entwickler fleißig am Werk. Der jüngste Vorstoß geht in Richtung Integration. Unter dem Kürzel VSA (Virtual System Architecture) werden mehrere neue Chips entwickelt. Auf Basis des 6x86 wollen die Texaner unter dem Codenamen M2 eine erweiterte Version des Chips bis Anfang 1997 herausbringen. Auch hier stehen die Multimediafähigkeiten im Vordergrund: Der Chip soll eine Soundkarte per Software nachbilden können und die Fähigkeit eines Softwaremodems enthalten.

Lediglich einige externe Bauelemente sind noch nötig, um die Digital-Analog-Wandlung und die Datenpumpe des Modems zu implementieren. Auf der anderen Seite wird der M2 ebenfalls die Unterstützung für Video erhalten, und man denkt, ebenso wie Intel, an Software-MPEG-Dekodierung (MPEG-2) sowie Videokonferenzen.

Erst 1998 soll der M3 herauskommen. Dieser Prozessor wird als Gegenstück zu Intels P7 mit Eigenschaften wie einer 64-Bit-Architektur aufwerten. Ob Cyrix auf den VLIW-Zug zur Vereinheitlichung aufspringt, ist zweifelhaft. Cyrix will für den Prozessor der siebten Generation in jedem Fall an dem X86kompatiblen Befehlssatz festhalten.

In eine andere VSA-Richtung zielt der Vorstoß des Cyrix 5gx86. Dieses System vereint neben dem 5x86-Prozessor den Grafikchip und die Multimedia-Einheiten in zwei Plastikgehäusen. Pfiffigerweise basiert die GX-Entwicklung auf einer Unified Memory Architecture (UMA).

Hierbei wird ein Teil des Hauptspeichers beim Booten für den integrierten Grafikchip reserviert und dient fortan als Bildspeicher. Die Wavetables für die Soundkarte sind ebenso in einem Teil des Hauptspeichers abgelegt. Günstig ist die UMA, weil immer nur der Teil des Speichers belegt ist, der wirklich gebraucht wird. Dieses Konzept, prädestiniert für Notebooks, könnte auch im Low-End-Desktop-Markt für Bewegung sorgen.

Funktion der 6x86

Die 6x86-CPU hat fünf Funktionseinheiten (units):

- Integer-Einheit,

- Cache-Einheit,

- Memory-Management-Einheit,

- Fließkommaeinheit,

- Bus-Interface-Einheit.

Die Integer-Einheit ist wie beim Pentium multiskalar ausgeführt mit zwei fünfstufigen Pipelines X und Y. Die beiden Pipelinestufen 'Instruction Decode ID' und 'Address Calculation AC' sind nochmals in zwei Unterstufen aufgeteilt, die mit doppeltem Takt betrieben werden (Superpipelining). Die erste Pipeline-Stufe 'lnstruction Fetch IF' holt für beide Pipes gemeinsam den Befehlscode (16Bytes pro Takt). Gleichzeitig wird bereits hier geprüft, ob ein Sprungbefehl im Code enthalten ist.

Bei unbedingten Sprüngen holt der Prozessor den nächsten Code von der Sprungadresse. Für die Vorhersage von bedingten Sprüngen benutzt er einen 'Branch Target Buffer, BTB', der 256 Zieladressen speichert und der sich in 'History Bits' die letzten Sprungrichtungen merkt. Um aber auch bei einer falschen Vorhersage nicht zu viel Zeit zu verlieren, prefetcht der 6x86 vorsichtshalber auch von der nichtvorhergesagten Adresse. Rücksprünge aus Unterprogrammen behandelt der 6x86 gesondert über einen achtstufigen Return-Stack.

Der 6x86-Prozessor wartet aber nicht so wie der Pentium, bis die Sprungbedingung später in der Exekutionsstufe der Pipeline bestimmt wird (was bei einer länger dauernden Berechnung wie DIV schon mal 41 Takte betragen kann), sondern er dekodiert in fester Zuversicht auf seine Vorhersagefähigkeit den vermuteten Code und führt ihn in der zweiten Pipeline schon mal spekulativ aus - sofern dieser nicht untrennbar von dem Ergebnis des vorangehenden Befehls abhängig ist. Dabei kann er natürlich wieder auf Verzweigungen stoßen. Bis zu vier Verzweigungsebenen tief vermag der Prozessor zu spekulieren. Schreiboperationen speichert er dabei zwischen (vierstufiger Schreibpuffer) und verwirft sie bei falschen Vorhersagen.

Für den Pentium gilt generell, daß die Pipelines synchron arbeiten. Ist zum Beispiel Pipeline Y fertig, während X noch an einem Befehl arbeitet, so dreht Y die ganze Zeit über Däumchen, bis auch X fertig ist. Anders beim 6x86, hier bemüht sich Y, nachfolgende Befehle auch außerhalb der sequentiellen Reihenfolge (Out of order Execution) auzuführen. So kann sich eine andere als vorgesehene Reihenfolge beim Lesen und Schreiben ergeben (Weak Ordering), was in Ausnahmefällen (Memory Mapped I/0) unerwünscht ist. Daher kann man das Weak Ordering für bestimmte Adreßbereiche abschalten.

Der Pentium bemüht sich auch nicht, einfache Abhängigkeiten aufeinanderfolgender Befehle zu entkoppeln. Vielmehr bürdet er diese Last dem Compiler auf; Programme müssen also speziell für ihn neu kompiliert werden, will man überhaupt größeren Nutzen aus der Superskalarität des Prozessors ziehen. Cyrix hat demgegenüber viel Energie aufgewendet, um Abhängigkeiten zwischen den Befehlen aufzulösen. Hauptmittel dafür ist das Register-Renaming. Statt acht der 6x86 32 physische Register, die sich beliebig, auf die acht logischen x86-Register mappen lassen (nur damit ist auch spekulative Exekution möglich). Ein Beispiel:

MOV bx,ax

ADD ax,cx

Hier liegt eine sogenannte Write after Read Dependency vor, die man durch Register-Renaming leicht dadurch entfernen kann, indem man AX als Ziel im zweiten Befehl auf ein anderes physisches Register mappt.

Caches

Der 6x86 hat wie der Pentium zwei Caches, sie sind aber anders aufgeteilt. Der 16 Kbyte große Unified Cache (sowohl für Code als auch für Daten) ist vierfach assoziativ und von beiden Pipelines gleichzeitig ansprechbar (dual por-ted). Ein unified Cache von 16 KByte ist (und damit schneller) als zwei getrennte Caches für Code und Daten von je acht Kbyte, wie sie der Pentium besitzt. Dafür gibt es hier das Problem, daß sich Code und Daten dauernd gegenseitig aus dem Cache werfen können (das gefürchtete Thrashing). Um das zu vermeiden, hat Cyrix dem 6x86 zusätzlich noch einen 256 Byte kleinen vollassoziativen Instruktions-Cache spendiert.

Schließlich unterscheidet sich auch die Speicherverwaltung erheblich vom Pentium. So hat der 6x86 einen abschaltbaren Cache für Page-Directory-Tabellen (das sind Verzeichnisse über die Speicheraufteilung in Seiten). Der Cache zahlt sich vor allem unter Multitasking-Systemen bei häufig wechselnder Speicherverteilung aus. Der Zwischenspeicher für die Page-Einträge (Transition Lookastide Buffer) ist mit 128 Plätzen etwas größer als beim Pentium, der zwei TLBs mit insgesamt 96 Einträgen aufweist. Zusätzlich hat der 6x86 aber noch einen achtstufigen 'Victim Buffer', das ist eine Art Papierkorb für aus dem TLB verdrängte Einträge. Diese werden nicht gleich gelöscht, sondern noch vorrätig gehalten, wodurch man ähnlich wie beim Instruktion,-Cache zeitfressendes Trashing vermeidet.

Anders als beim Pentium kann der 6x86 auch mit flexiblen Page-Größen umgehen. Aufeinderfolgende Pages lassen sich so zu einem Eintrag zusammenfassen, was zum Teil erhebliche Zeiteinsparungen mit sich bringen könnte - so denn das Betriebssystem dieses Feature nutzen würde. Der Pentium bietet nur die Auswahl zwischen 4-Kbyte und 4-Mbyte-Pages.

Fünfeinhalb Millionen Transistoren sitzen auf dem kleinen Siliziumplättchen, das den Pentium Pro ausmacht. Die Arbeitsweise des neuen Prozessors bezeichnet Hersteller Intel als Dynamic Execution".

Mit allerlei Tricks hatte es Intel geschafft, vom 286er- über den 386er- und 486er-Prozessor bis zum Pentium jede neue Prozessorgeneration deutlich schneller zu machen als die vorangegangene. Aus dem Pentium-Prozessor werden die Entwickler mit einer weiteren Erhöhung des Arbeitstakts noch einmal eine etwas höhere Leistung herauspressen können, doch dann ist das Ende der Fahnenstange erreicht: Die alte Architektur gibt nicht mehr her.

Mit dem neuen Prozessor Pentium Pro, der in der Entwicklungsphase noch P6 hieß, hat Intel deshalb in vieler Hinsieht ganz von vorne angefangen. Das Aussehen des Prozessors, in dessen rechteckigem Gehäuse zwei Siliziumchips (sogenannte Dies) eingebaut sind, und das ebenfalls völlig veränderte Erscheinungsbild der Hauptplatinen in den Computern der jüngsten Generation sind nur die augenfälligsten Kennzeichen.

Auch der Umstand, daß in den Schaltkreisen des Chips jetzt drei parallele Pipelines für eine zügigere Bearbeitung der Befehle sorgen, sagt nicht alles. Tatsache ist, daß dieser Prozessor die Programme vollkommen anders abarbeitet als alle seine Vorgänger.

Vereinfacht ausgedruckt zerlegt der Pentium Pro alle Anweisungen, die er bekommt, in kleinere Häppchen. Diese wiederum bearbeitet er nicht der Reihe nach, sondern versucht, eine Reihenfolge zu finden, mit der die Befehle am schnellsten abgeschlossen werden können. Um so operieren zu können, ist keine neue Software erforderlich. Der Pentiurn Pro kann mit dem bisherigen Befehlssatz für die Intel-Prozessoren umgehen und ist da kompatibel zu vorhandener Software.

Allerdings verpatzen viele der Klimmzüge, die dem 486er und dem Pentium noch einen Tick mehr an Performance entlocken konnten, dem neuen Spitzensportler die Kür. Was bei den älteren Chips noch elegant für einen flüssigeren Ablauf sorgte, bringt den Pentium Pro immer wieder ins Stocken. Er verschluckt sich förmlich an den kleinen Häppchen, die die "Dynamic Execution" eigentlich wie am Fließband bearbeiten müßte, um auf das vorgesehene Tempo zu kommen.

Die ersten Rechner mit dem PentiumPro-Prozessor zeigen, wie weit das führt: Mit Applikationen unter Windows sind sie sogar etwas langsamer als vergleichbar ausgestattete Pentium-PC.

Der Pentium Pro braucht vor allem in 32 Bit geschriebene Programme. Auch das Betriebssystem darf nicht bremsen: Ein richtiges 32-Bit-System wie Windows NT sollte auf dem Rechner schon installiert sein. Wie dann die Post abgeht, konnten bereits die ersten Tests von CHIP demonstrieren. Die schnellsten bislang getesteten PC kommen von Siemens-Nixdorf und IBM. Bei einem Prozessortakt von 150 Megahertz sind sie mehr als doppelt so schnell wie ein zum Vergleich herangezogener Pentium mit 120 MHz.

Um diesen Leistungssprung zu verstehen, muß man schon in die Bits und Bytes gehen.

Beginnen wir mit dem nach außen hin auffälligsten Merkmal, dem im Prozessorgehäuse integrierten Second-Level-Cache (L2-Cache). Er dient als schneller Zwischenspeicher für mehrfach benötigte Daten. Als zweites Die neben dem Prozessorchip ergänzt er dessen 5,5 Millionen Transistoren - fast doppelt so viele wie beim Pentium - um weitere 15,5 Millionen Transistoren. Das gilt für die 256-Kilobyte-Variante des Prozessors, die jetzt auf dem Markt ist. Die für Server vorgesehene 512-Kilobyte-Version wird die Anzahl der internen Speicherelemente noch verdoppeln. Da die Strukturen des Cache sehr gleichförmig sind, kann er im Silizium sehr dicht gepackt werden. Das Cache-Die ist daher etwas kleiner als die CPU.

Aufgabe eines Cache ist es, Verzögerungen zu vermeiden, die beim Zugriff auf den Arbeitsspeicher (RAM) entstehen. Typische Zugriffszeiten für die Memory-Chips liegen zwischen 60 und 80 Nanosekunden. Für einen schnellen Prozessor ist das bei weitem zu langsam.

Bei einem Takt von 150 Megahertz startet er etwa alle sieben Nanosekunden einen neuen Arbeitszyklus. Damit der Prozessor nun nicht allzu viele Warteschleifen einlegen muß, werden die am häufigsten benötigten Befehle und Daten im Cache zwischengespeichert, auf den der Prozessor schnell zugreifen kann. Seit dem 486-Prozessor ist der Primärcache (L1-Cache) im Prozessor integriert.

Die räumliche Nähe zur CPU, dem Kern des Prozessors, ermöglicht es im Pentium Pro, daß nun auch Daten zwischen der Zentraleinheit und dem L2-Cache mit der vollen Prozessorgeschwindigkeit ausgetauscht werden können. Bei den ersten Pentium Pro sind das 150 Megahertz.

CPU und L2-Cache kommunizieren über eine 64 Bit breite Verbindung. Außerdem ist dieser Cache so gestaltet, daß er nicht blockiert. Der Prozessor wird durch Aktionen im Cache weder angehalten, noch können sich Transaktionen auf dem Prozessorbus verzögern.

Wenn beispielsweise angeforderte Daten im Cache nicht gefunden werden, also der Status "Miss" auftritt, führt der Prozessor sofort andere Instruktionen aus. Gleichzeitig wird versucht, die im Cache nicht vorhandenen Daten über den Speicherbus von außen heranzubringen. Auch die Verbindung zum externen

Systemspeicher ist ein 64-Bit-Bus. Der Prozessor hingegen ist ein reiner 32-BitProzessor. Die jetzt begonnenen Instruktionen können wieder zu einem CacheMiss führen und weitere Aktionen auf dem Bus nach sich ziehen. Bis zu vier solche ausstehenden Transaktionen kann der Pentium Pro unterstützen.

Bei 486- und Pentium-PC ist es üblich, den L2-Cache in Form von separaten Bausteinen auf das Motherboard zu setzen. Daß der im Prozessorgehäuse integrierte Zwischenspeicher nicht nur Platz spart, sondern auch deutlich schneller ist, beweist ein simpler Test von CHIP. Hier wurde mit verschiedenen, großen Datenblöcken gearbeitet, um nacheinander den 16 Kilobyte großen Primärcache (L1-Cache) in der CPU, den L2-Cache und schließlich den Arbeitsspeicher (RAM) ins Spiel zu bringen.

Mit einfachen Low-Level-Routinen zeigt sich dabei, daß der Austausch mit dem Ll-Cache beim Pentium Pro etwas schneller abläuft als beim Pentium. Wenn die Testdateien mit 1 Megabyte so groß sind, daß sie nicht mehr im 256 Kilobyte großen Cache bereitgehalten werden können, geht die Geschwindigkeit bei beiden Systemen gleichermaßen in die Knie. Interessant ist der Bereich dazwischen. Da kann der Pentium Pro um ein Mehrfaches schneller auf den Zwischenspeicher zugreifen als der alte Pentium. Ausgetestet wurde dies auf dem Pentium-Pro-Rechner von Siemens-Nixdorf (150 MHz) und einem Pentium (120 MHz) (siehe Diagramm).

"Dynamic Execution" ist ein von Intel geprägter Begriff. Dahinter verbirgt sich im wesentlichen die Kombination dreier Techniken, die im Pentium-Pro-Prozessor angewandt werden, um der Software Beine zu machen:

Um die Dynamic Execution zu verwirklichen, mußte Intel neue Lösungen finden, da die Leistungen des Pentium sonst nicht zu übertreffen gewesen wären. Die Pipeline-Architektur des Pentium besteht aus fünf Stufen, beim Pentium Pro wurden daraus 14 Stufen. Intel hat tief in die RISC-Trickkiste gegriffen (RISC = Reduced Instruction Set Computer). Kann der Pentium bereits zwei Instruktionen pro Taktzyklus bearbeiten er ist damit Intels erster superskalarer Prozessor -, so schafft der Pentium Pro in drei parallelen Pipelines bis zu drei Instruktionen pro Takt.

Speichertest

"Superpipelined" ist ein anderes Zauberwort der modernen Prozessortechnologie. Es bezeichnet die Abarbeitung eines Befehls in noch mehr und noch kleineren Abschnitten. Die Arbeitsweise einer Pipeline kann man sich wie ein Fließband vorstellen. Beim Pentium Pro sind damit höhere Taktfrequenzen möglich.

Die lineare Bearbeitung aller eingehenden Befehle mit den klassischen "Fetch-" und "Execute"-Phasen ist beim Pentium Pro durch einen sogenannten "lnstruction Pool" ersetzt. Hier stellt der Prozessor den Plan für die Bearbeitung der Befehle auf. In diesem Pool könnten beispielsweise vier Befehle sein, von denen der erste nicht sofort ausgeführt werden kann, weil benötigte Daten nicht im Cache vorhanden sind und erst aus dem Arbeitsspeicher geholt werden müssen. Ist die zweite Instruktion von der ersten abhängig, muß eine traditionelle CPU erst einmal warten. Der Pentium Pro hingegen kann vorsorglich und spekulativ schon mal die Befehle drei und vier bearbeiten, wenn dazu nicht die vorherigen Resultate erforderlich sind. Die Ergebnisse werden wieder in den Instruction Pool zurückgeführt und warten dort auf die weitere Bearbeitung in der richtigen Reihenfolge.

Sprungvorhersage Spekulative Ausführung

Ein Cache-Miss benötigt viele interne Takte. Der Pentium-Pro sucht in dieser Zeit etwa 20 bis 30 Instruktionen vor dem Programmzähler ab. Darunter befinden sich im Durchschnitt fünf Verzweigungen, die richtig vorhergesagt werden wollen, um die Geschwindigkeitsvorteile nicht wieder zu verschenken. Ein Nachteil des superskalaren Konzeptes ist, daß falsche Vorhersagen enorme Zeitverluste mit sich bringen können. Alle bereits begonnenen Instruktionen müssen dann unter Umständen storniert werden.

Das Blockschaltbild auf der nächsten Seite erläutert die Arbeitsweise des Pentium-Pro-Prozessors. Beginn ist die Instruction Fetch Unit (IFU), die den sogenannten I-Cache enthält. Aus diesem Speicher holt sich die CPU bei Bedarf schnell ihre Instruktionen ab. Wo die benötigten Informationen zu besorgen sind, weiß die IFU vom Branch Target Buffer (BTB), dessen Aufgabe es ist, Verzweigungen vorauszusagen. Er bedient sich dazu relativ komplizierter Algorithmen und kommt auf eine Trefferquote von über 90 Prozent.

Der I-Cache greift sich jeweils eine Cache-Zeile und übergibt dem Decoder 16 Bytes, die "aligned", also auf Wortgrenzen ausgerichtet sind. Da sich der Programmcode bei den Instruktionen der Intel-Architektur oft in der Mitte oder am Ende einer Cache-Zeile verzweigt, werden immer zwei Zeilen gelesen.

Die Aufgabe des Instruction Decoders (ID) ist es nun, die Instruktionen für die weitere Bearbeitung in kleinere Häppchen zu zerlegen, sogenannte Micro-Ops konventiert.

Komplexer Instruktionen benötigen eigenen Mikrocode (MIS = Microcode Instruction Sequencer). Dieser Mirkocode ist allerdings nur ein Satz programmierter Sequenzen normaler Micro-Ops. In jedem Taktzyklus werden von drei separaten Decodern (D0, D1, D2) drei Micro-Ops generiert, weshalb der Pentium Pro auch als superskalarer Prozessor dritten grades bezeichnet wird. Ähnliche Techniken benutzen auch AMD mit dem angekündigten K5-Prozessor sowie Nexgen beim Nx586.

Die Micro-Ops werden der Register Alias Table (RAT) übergeben, wo logische Registerreferenzen in physikalische Pentium-Pro-Registerreferenzen umgewandelt werden. Die Intel-Architektur verfügt über einen relativ kleinen Registersatz. Das ist hinderlich, wenn Instruktionen "out-of-order" bearbeitet werden; in diesem Fall treten unnötige Wartezeiten auf, bevor ein Register wieder benutzt werden kann.

Den Micro-Ops werden noch Statusinformationen angehängt, ehe sie im Reorder Buffer (ROB) abgelegt werden, der den Instruction Pool darstellt. Hier sind sie so aufgereiht, daß am Ende der Befehlsausführung wieder die richtige Reihenfolge hergestellt werden kann und die Semantik des Programms stimmt.

Von der RAT gelangen die Micro-Ops außerdem in die Reservation Station (RS), von wo aus sie an die ausfahrenden Einheiten (EUs = Execution Units) des Prozessors geschickt werden können. Voraussetzung ist, daß durch den Status signalisiert wird, daß eine Micro-Op alle ihre Operanden hat und daß die für die betreffenden Micro-Ops zuständige EU verfügbare Ressourcen besitzt.

Über fünf Schnittstellen greifen die EUs auf die Reservation Station zu. An Port 0 hängen vor allem die verschiedenen Gleitkommaeinheiten. Sie sind dort konzentriert, weil sie als gemeinsames Merkmal einen breiteren Datenpfad brauchen. Für einen Gleitkommawert müssen 86 Bits vorgesehen werden. Port 1 wird von der Integereinheit und einer Sprungeinheit gebildet. Die Ports 2, 3 und 4 dienen dem Speicherzugriff. Das Ergebnis der Ausführung gelangt wiederum sowohl in die RS als auch in den ROB. Damit ist gewährleistet, daß nachfolgende Operationen auf aktuelle Daten zugreifen können.

Die Spitzenrate des Pentium Pro liegt bei der Bearbeitung von fünf Micro-Ops pro Takt, also jeweils einer Micro-Op an einem Port. Der Durchschnitt liegt typischerweise bei drei Micro-Ops pro Takt. Die Micro-Ops werden gemäß den Datenflußanforderungen und nach der Verfügbarkeit von ausfahrenden Einheiten weitergegeben - unabhängig von der ursprünglichen Reihenfolge im Programm.

Zum Abschluß prüft die Retire-Einheit ebenfalls den Status der Micro-Ops im Instruction Pool. Sie sucht nach Micro-Ops, die bereits ausgeführt worden sind und aus dem Pool entfernt werden können. Sobald sie herausgeholt sind, wird wie bei den ursprünglichen Instruktionen der Intel-Architektur das Originalziel geschrieben. Danach stellt die Retire-Einheit die ursprüngliche Programmreihenfolge wieder her. Das muß sie auch beim Auftreten von Interrupts, Traps, Faults, Breakpoints und falschen Voraussagen tun.

Das meiste, was zu einem bestimmten Zeitpunkt im Pentium Pro vonstatten geht, ist reine Spekulation. Erst ganz am Schluß können die ursprünglich auf Verdacht erzeugten Daten übernommen und ins Retirement File Register (RFR) geschrieben werden. Die Retirement-Einheit kann bis zu drei Micro-Ops pro Takt übernehmen.

Input und Output sehen beim Pentium Pro grundsätzlich nicht anders aus als beim 486er. Daß der neue Prozessor intern ganz anders arbeitet, braucht den Anwender nicht unbedingt zu kümmern. Er kann ihn einfach als Black Box betrachten. Zweifel kommen erst auf, wenn das technische Meisterstück die falsche Software bekommt und damit hinter den gesetzten Erwartungen zurückbleibt.

Die Fähigkeit zur Out-of-Order-Execution, die den Prozessor ständig mit Arbeit versorgt, ist einer der Schlüssel zur Geschwindigkeit des Pentium Pro. In einigen Fällen gelingt es aber nicht, Befehle außer der Reihe zu bearbeiten. Solche Instruktionen bringen das Superpipeline-Design des Pentium Pro ins Stocken. Der Prozessor muß alle anderen Operationen anhalten und unter Umständen neu beginnen, um zunächst eine spezielle Anweisung abzuarbeiten.

Zum Beispiel kann das Lesen eines kompletten Registers die Befehlsverarbeitung stoppen, wenn die entsprechende Anweisung unmittelbar einer Write-Instruktion für ein Segment dieses Registers folgt. Genau das ist der Fall, wenn zunächst 8 Bit eines 16-Bit-Registers geschrieben werden. Assembler-Programmierer benutzen bisweilen partielle Register wie AL, um 1-Byte-Werte zu Speichern. Fatal ist es, wenn dann im Programm direkt die Anweisung folgt AX zu lesen, das 16-Bit-Superset dieses Registers. Diese Programmiermethoden stammen noch aus den Tagen des 286ers und von DOS, wo der Adreßraum stets nur 64 Kilobyte groß war.

Solche partiellen Register kommen in einem 16-Bit-Programmcode zwar nicht unbedingt häufig vor, doch wenn sie auftreten, sorgen sie für beträchtliche Verzögerungen. Der Prozessor kann für sieben oder mehr Taktzyklen in den Wartezustand versetzt werden. Während dieser Zeit hätte er vielleicht schon 20 weitere x86-Befehle ausfahren können.

Compiler sind grundsätzlich in der Lage, dieses Problem zu minimieren, häufiger sind partiell genutzte Register aber in Assembler-Codes. Windows 3.1 und auch Teile von Windows 95 enthalten solchen handgeschriebenen Assembler. Das ist ein Grund dafür, daß auch 32-Bit-Anwendungen unter Windows 95 den Pentium Pro nicht voll ausnutzen. Read-Befehle ganzer Register nach Write-Anweisungen für 8- oder 16-Bit-Register können im 32-Bit-Code zwar die gleichen Probleme verursacben, sind jedoch ungleich seltener. Intel hat den Pentium Pro von Beginn an für 32-Bit-Software optimiert.

Probleme können in 16-Bit-Programmen auch I/0-Befehle und Operationen in den Steuerregistern bereiten. Auch sie kann der Pentium Pro nicht aus dem Pool heraus in einer beliebigen Reihenfolge bearbeiten. Wenn der Prozessor auf solche Instruktionen stößt, muß er alle noch ausstehenden Befehle abschließen und kann zunächst keine neuen mehr beginnen. Bildlich gesprochen: Die Pipeline wird geleert.

Befehlesmix im Vergleich

Bei 32-Bit-Software ist die Verwaltung des Speichers in der Regel weniger aufwendig als bei 16-Bit-Programmen, da als Adreßraum bis zu 4 Gigabyte Speicher genutzt werden können. Der Hauptprozessor wird dadurch entlastet und darf sich auf rechenintensive Operationen konzentrieren. Vergleicht man einen Satz von Windows-3.1-Applikationen (16 Bit) mit 32-Bit-Applikationen unter Windows 95, so erkennt man, daß der Anteil an Speichermanagementbefehlen gesunken ist. Dadurch werden in der gleichen Zeit mehr Rechenoperationen möglich (siehe Diagramm).

Als Betriebssysteme der ersten Wahl sieht Intel für den Pentium Pro in diesem und im nächsten Jahr Windows NT und Unix an. Wenn mit Windows 3. oder Windows 95 gearbeitet werden soll , wird nach wie vor ein Pentium-Prozessor - empfohlen. Erst 1997 steht auch Windows 95 für den Pentium Pro auf dem Zeitplan. Bis dahin sollen noch schnellere PentiumPro-Prozessoren und genügend 32-BitApplikationen zur Verfügung stehen.

Der neue Prozessor bringt auch ein anderes Busdesign in die Computer. Der Pentium-Pro-Bus bietet die Möglichkeit, weitere Prozessoren oder High-Speed-I/O-Zugänge direkt anzubinden. Der Prozessor-Bus darf nicht mit dem PCI-Bus verwechselt werden. Dieser ist seinerseits durch eine schnelle Schnittstelle, die PCI-Bridge, an den Prozessor-Bus gekoppelt.

Rund 150 Kontaktstifte des Prozessors verbinden Datenleitungen, die sich grob in Request und Response unterteilen lassen. Ein Request (Anforderung von Daten) benötigt zwei Taktzyklen. Im ersten werden Angaben wie Adresse, Speichertyp und ähnliches gemacht, im zweiten kommen eine spezielle Kennung und Steueranweisungen hinzu.

Verschiedene Requests und Responses können gleichzeitig auf dem Bus liegen. Der Prozessor kann mehrere Requests an den Speicher schicken, ohne jedesmal auf eine Antwort warten zu müssen. Wird die angeforderte Information gefunden, wird vom Speicher ein Request an den Prozessor geschickt. Auch wenn diese Antwort länger auf sich warten läßt, werden die Transaktionen auf dem Bus dadurch nicht gebremst.

Ohne zusätzliche Logikbausteine können vier Pentium-Pro-Prozessoren in einer Multiprozessor-Maschine direkt an den Prozessor-Bus angeschlossen werden. jeder einzelne Prozessor verfügt intern über die nötige Logik, um Datenkohärenz zu gewährleisten. Weitere Gruppen von Prozessoren lassen sich über eine Cluster-Bridge an den Prozessor-Bus anschließen.

Um gleichzeitig verschiedene Zugriffe auf den Bus zu ermöglichen, ohne daß elektrische Probleme auftreten, hat Intel sich von der traditionellen TTL (Transistor-Transistor-Logik) verabschiedet, die in den vergangenen Jahren zur Signalverarbeitung in PC diente. Der Pentium Pro benutzt statt dessen GTL+, eine Erweiterung der bislang nur bei Großrechnern eingesetzten Gunning Tranceiver Logic.

GTL+ kommt mit kleineren Spannungsabständen zwischen den verschiedenen logischen Zuständen zurecht, was Operationen bei höheren Taktfrequenzen ermöglicht.

Die Arbeitsweise des Prozessors wird auch durch einen Blick auf das schematische Diagramm der Pipeline deutlich, das den fließbandartiqen Umgang mit den Micro-Ops, den MikrobefehIen des Pentium Pro, Illustr,iert. In der Pipeline dieses Prozessors lassen sich 14 Stufen voneinan der unterscheiden.

Die Pipline

Die Pipeline besteht aus drei getrennten Teilen, die mehr oder weniger unabhängig voneinander sind. Eine 14-stufige Pipeline an einem Stück hätte einen gravierenden Nachteil - Sie könnte nicht schneller sein als ihre langsamste Stufe.

Durch die weitere Unterteilunq der ursprüngiich fünfstufigen Pipellne des 486ers und , des Pentium hat jede einzelne Stufe weniger Arbeit zu leisten. Die Folge ist, daß die Stufen der Pipeline (oder die Stationen des Fließbands) schneller absolviert werden können. Damit sind auch höhere Taktraten möglich. Bei gleichem Fabrikationsprozeß kann die Taktrate des Pentium Pro etwa um ein Drittel höher sein als jene des Pentium.

Der lnstruction Pointer (IP) am Anfang ist der aus dem Blockschaltbild bekannte Branch

Target Buffer, der im Befehisspeicher (1-Cache) die nächsten Anweisungen sucht. In den folgenden zweieinhalb Taktzyklen Wird auf den 1-Cache zugegriffen, weitere zweleinhalb Takte kostet das Decodieren, bei dem die Micro-Ops gebildet werden. Dann kommt die Umbenennung der Register. Die letzte Stufe, das Schreiben in die Reservation Station, überlappt üblicherweise mit mindestens einer Stufe im nächsten Pipelinesegment.

Wenn in einem 16-Bit-Programm Befehle auftauchen, die der Pentium Pro nicht "out-oforder" bearbeiten kann, müssen Operationen in diesen unteren Stufen der Pipeline unter Umständen gelöscht und anschließend von neuem angefangen werden.