DE69623461T2 - Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem - Google Patents

Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem

Info

Publication number
DE69623461T2
DE69623461T2 DE69623461T DE69623461T DE69623461T2 DE 69623461 T2 DE69623461 T2 DE 69623461T2 DE 69623461 T DE69623461 T DE 69623461T DE 69623461 T DE69623461 T DE 69623461T DE 69623461 T2 DE69623461 T2 DE 69623461T2
Authority
DE
Germany
Prior art keywords
instructions
instruction
issue
order
sorters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69623461T
Other languages
English (en)
Other versions
DE69623461D1 (de
Inventor
Farnad Sajjadian
Sunil Savkar
C. Shebanow
W. Shen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE69623461D1 publication Critical patent/DE69623461D1/de
Application granted granted Critical
Publication of DE69623461T2 publication Critical patent/DE69623461T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

    Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zum Koordinieren der Ausgabe von Befehlen bei einem parallelen Befehlsverarbeitungssystem.
  • Hintergrund der Erfindung
  • Bei einem typischen skalaren Mikroprozessor werden Befehle auf eine serielle oder skalaren Weise ausgegeben und ausgeführt. Das bedeutet, dass Befehle durch den Mikroprozessor einzeln nacheinander in der Reihenfolge ausgegeben und ausgeführt werden, in welcher Befehle durch einen Programmzähler indiziert sind. Während dieses Verfahrens einer Ausführung effektiv ist, ist es in vielen Fällen nicht optimal, da viele Befehlssequenzen in einem Computerprogramm unabhängig von anderen Befehlssequenzen sind. In solchen Fällen können verschiedene Befehlssequenzen parallel ausgeführt werden, um die Leistungsfähigkeit zu optimieren. Neueste Techniken für eine parallele Ausführung von Befehlen enthalten eine Neubenennung von Registern, eine spekulative Ausführung und eine Ausführung außerhalb der Reihenfolge.
  • Eine Neubenennung bzw. Umbenennung von Registern ist eine Technik, die von Prozessoren verwendet wird, bei welchen der Prozessor dasselbe Architekturregister erneut auf ein anderes physikalisches Register abbildet, um ein Verzögern von Befehlsausgaben zu vermeiden. Diese Technik erfordert die Beibehaltung einer größeren Anzahl von physikalischen Registern, als es sonst architekturmäßig gerechtfertigt sein würde. Der Prozessor muss daher den Status der physikalischen Registerbetriebsmittel kontinuierlich überwachen, einschließlich dessen, wie viele der physikalischen Register zu einem gegebenen Zeitpunkt im Einsatz sind, zu welchen architekturmäßigen Registern die verschiedenen physikalischen Register abgebildet sind, und welche der physikalischen Register für einen Einsatz verfügbar sind. Zum Erreichen dieser Aufgabe unterhält der Prozessor eine Liste von physikalischen Registern ("Freiliste"), die nicht im Einsatz sind. Wenn ein Befehl ausgegeben wird, bildet der Prozessor das architekturmäßige Zielortregister erneut zu einem der Register auf der. Freiliste ab. Das ausgewählte physikalische Register wird dann von der Freiliste entfernt. Wann immer die umbenannten physikalischen Register nicht mehr benötigt werden, werden diese physikalischen Register als frei markiert, indem sie zum Freilistenpool hinzugefügt werden. Diese physikalischen Registerbetriebsmittel, die in der Freiliste fehlen, werden als "im Einsatz" befindlich oder auf andere Weise nicht verfügbar für den Prozessor für ein weiteres Abbilden angesehen. Wo das resultierende Register eines Befehls als Quellen-(Architektur-)Register für einen sequentiell folgenden Befehl zu verwenden ist, wird das Quellenregister zu einem umbenannten physikalischen Register von der Freiliste abgebildet. Damit der Prozessor das richtig zugeordnete physikalische Register verwendet, wird eine Umbenennungsabbildung bzw. -karte kontinuierlich vom Prozess unterhalten, der identifiziert, welche Architekturregister zu welchen physikalischen Registern abgebildet sind. Alle sequentiell folgenden Befehle, die sich auf ein Architekturregister eines sequentiell früheren Befehls beziehen, sollten das umbenannte physikalische Register verwenden.
  • In dem Fall, in welchem die Architekturregister umbenannt sind, muss eine Bereitstellung zum effizienten Herstellen des richtigen Zustands der Architekturregister existieren, wenn der Prozessor aufgrund eines falsch vorhergesagten Verzweigungsbefehls einen Backup zu einer Prüfstelle durchführt, oder wenn ein sequentiell späterer Befehl das Architekturregister vor der Erfassung einer Ausführungsausnahme aufgrund eines sequentiell früheren Befehls modifiziert.
  • Eine spekulative Ausführung ist eine Technik, die von Prozessoren verwendet wird, bei welcher der Prozessor eine nächste Verzweigungs-Solladresse für einen nächsten Befehl vorhersagt, wo es für Daten unvermeidbar ist, eine Bedingung für eine bedingte Verzweigung zu bewerten. Durch Verwenden einer spekulativen Ausführung werden Prozessorverzögerungen, die sonst beim Warten auf die zum Bewerten der Bedingung nötigen Daten auftreten würden, vermieden. Wann immer es eine falsche Vorhersage gibt, muss der Prozessor zu dem Zustand zurückgebracht werden, der vor dem Verzweigungsschritt existierte, und die richtige Verzweigung muss identifiziert werden, um mit einer Ausführung der richtigen Sequenz von Befehlen fortzufahren. Zum Wiedergewinnen des Zustands des Prozessors nach einer falschen Vorhersage wird eine Technik, die verwendet worden ist, Checkpointing bzw. Fixpunktierung genannt, wobei der Maschinenzustand nach jedem spekulativen Befehl gespeichert (oder fixpunktiert) wird.
  • Eine Ausführung außerhalb einer Reihenfolge ist eine Technik, die von Prozessoren verwendet wird, wobei der Prozessor mehrere Ausführungseinheiten enthält, die sequentiell ausgegebene Befehle sind, die aber eine Ausführung von Befehlen aufgrund sich ändernder Ausführungszeiten der Befehle nicht sequentiell beenden können. Es ist dieses Konzept eines parallelen Ausgebens und Ausführens von Befehlen außerhalb einer Sequenz, welches sowohl den Vorteil als auch die Schwierigkeiten, die zu parallelen Prozessoren gehören, unterstreicht.
  • Wie es oben diskutiert ist, verwenden verschiedene Techniken zum Ausgeben von mehreren Befehlen Vorhersagen (eine spekulative Ausführung, eine Registerumbenennung oder eine Ausführung außerhalb einer Reihenfolge) zum Bestimmen der richtigen Anzahl von Befehlen, die gleichzeitig auszugeben sind, und darauf folgend zum Holen aus einer vorhergesagten Stelle. Wenn die Vorhersage richtig ist, wird Zeit gespart; wenn nicht, dann werden die falschen Befehle geholt und es wäre nötig, dass sie weggeworfen, werden.
  • In einer superskalaren Maschine werden die Hol-, die Warteschlangen- und die Ausgabebefehle durch die Verwendung eines Ausgabefensters kompliziert, das größer als ein geholter und ausgegebener Befehl ist, und ein Verarbeiten von Programmen mit Verzweigungsbefehlen. Eine Verarbeitung wird weiterhin durch das Holen von Befehlen in einer physikalischen Reihenfolge kompliziert, was eine Befehlsrotation oder Reihenfolgenbildung für eine Ausgabe in einer Programmreihenfolge nötig macht. Eine Verarbeitung wird weiterhin durch Ausgeben von mehreren Befehlen aus einer Warteschlange im selben Zyklus kompliziert, in welchem bis zur selben Anzahl von Befehlen zum Ersetzen der im selben Zyklus auszugebenden Befehle die Warteschlange eingefügt werden muss. Daher gibt es bei parallelen Prozessoren eine Notwendigkeit zum Entwickeln eines effizienten Verfahrens und einer effizienten Vorrichtung zum Koordinieren der Ausgabe und der Ausführung von Befehlen, um falsche Vorhersagen und zugehörige Verluste an Zeit und an Betriebsmitteln zu vermeiden. Es gibt eine weitere Notwendigkeit für eine optimale Lösung zum Halten der Warteschlange von Befehlen vor dem Befehlsausführungsfluss, so dass Zyklen mit Blasen bzw. Bubbles bei einer Befehlsausgabe aufgrund der Unfähigkeit der Maschine, mit der Ausgabe von Befehlen in die Maschine Schritt zu halten, minimiert werden.
  • EP-A1-0605874 offenbart ein paralleles Befehlsverarbeitungssystem mit einer Vielzahl von Verarbeitungseinheiten, die parallel eine Vielzahl von Befehlen ausführen können. Eine Gruppe von vier Befehlen, die bereit zur Abfertigung zu den Verarbeitungseinheiten zur Ausführung sind, werden von einer Befehlswarteschlange in jeweilige Positionen in einen Befehlspuffer geladen. Wenn nur zwei der Befehle im Befehlspuffer dann abgefertigt werden, werden die übrigen zwei Befehle von den letzten zwei Positionen im Befehlspuffer zu den ersten zwei Positionen verschoben. Die letzten zwei Positionen des Befehlspuffers werden mit den nächsten zwei Befehlen in einer Befehlswarteschlange geladen.
  • DE-A1-4216905 offenbart ein paralleles Befehlsverarbeitungssystem mit einer Vielzahl von Verarbeitungseinheiten, die parallel eine Vielzahl von Befehlen ausführen können, die in einer Befehlsspeichereinrichtung gespeichert sind. Eine Holeinrichtung liest eine erste vorbestimmte Vielzahl von Befehlen aus der Befehlsspeichereinrichtung und speichert die geholten Befehle im ersten von zwei Schieberegistern in der Holeinrichtung. Die gespeicherten Befehle werden zu Befehlsregistern gesendet. Ein Befehlsdecodierer bestimmt, welche der Befehle in den Befehlsregistern verarbeitet werden können und sendet diese zu Verarbeitungseinheiten zur Ausführung. Der Befehlsdecodierer transferiert dann die in den Befehlsregistern gelassenen Befehle zurück zum ersten Schieberegister. Wenn einige der Befehlsregister leer waren (weil die Befehle in diesen Registern zu Verarbeitungseinheiten gesendet wurden), werden die zum ersten Schieberegister transferierten Befehle dann um eine Anzahl von Positionen entsprechend der Anzahl von leeren Befehlsregistern nach links verschoben. Eine zweite vorbestimmte Vielzahl von Befehlen wird durch die Holeinrichtung aus der Befehlsspeichereinrichtung gelesen und im zweiten Schieberegister in der Holeinrichtung gespeichert. Die Befehle im zweiten Schieberegister werden um eine Anzahl von Positionen gleich der Anzahl von nicht leeren Befehlsregistern nach rechts verschoben. Die Befehle in den zwei Schieberegistern werden dann zu den Befehlsregistern entsprechend ihrer Positionen in den Schieberegistern transferiert.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung schafft ein Verfahren und eine Vorrichtung gemäß den Ansprüchen 1 und 4.
  • Gemäß der vorliegenden Erfindung ist ein Verfahren und eine Vorrichtung zum parallelen Ausgeben von mehreren Befehlen durch ein Drehen von Befehlen in einer Ausgabereihenfolge aus einem Speicher spezifisch physikalisch geschaffen, um das Holen und das Ausgeben von Befehlen zu koordinieren, um dadurch Verzögerungen bei einer Verarbeitung zu vermeiden, die durch Datenprozessoren veranlasst werden kann, und zwar unter Verwendung von superskalaren Techniken.
  • Ein Datenverarbeitungssystem, das die vorliegende Erfindung verkörpert, enthält eine zentrale Verarbeitungseinheit, die Anfragen zu Daten- und Befehls-Caches sendet und Information davon empfängt. Eine Speichermanagementeinheit verbindet eine externe permanente Speichereinheit mit Daten- und Befehls- Caches, empfängt Anfragen von der zentralen Verarbeitungseinheit zum Zugreifen auf adressierbare Stellen in der Speichereinheit, greift auf die angefragten Adressen in der Speichereinheit zu und transferiert die angefragten Daten und Befehle zu einer Holeinheit innerhalb der zentralen Verarbeitungseinheit, in welcher die Befehle und Daten bearbeitet werden. Die Holeinheit enthält einen Rotations- und Abfertigungsblock zum Drehen geholter Befehle in eine Ausgabereihenfolge vor einem Ausgeben und zum Abfertigen ausgewählter Befehle. Der Rotations- und Abfertigungsblock enthält einen Mischer zum Mischen neu geholter Befehle mit zuvor geholten und nicht ausgegebenen Befehlen in einer physikalischen Speicherreihenfolge, eine Misch- und Rotationsvorrichtung zum Drehen der gemischten Befehle in eine Ausgabenreihenfolge, einen Befehls-Latch zum Halten der bezüglich der Ausgabe angeordneten Befehle vor einem Abfertigen und eine Entdrehvorrichtung zum Drehen nicht ausgegebener Befehle aus einer Ausgabereihenfolge zu der ursprungsspeicherspezifischen physikalischen Reihenfolge vor einem Mischen mit neu geholten Befehlen.
  • Zum unterbringen einer superskalaren Ausführung implementiert der Prozessor eine Pipeline zum Verarbeiten mehrerer Befehle, die ein Minimum einer Hol-, einer Ausgabe- und einer Ausführungsstufe enthält. Während des Holzyklus werden mehrere Befehle gleichzeitig aus einem Speicher in der Ursprungsspeicherreihenfolge geholt und in eine Ausgabereihenfolge gedreht. Während des nächsten Taktzyklus treten ausgewählte der zuvor geholten und gedrehten Befehle in den Ausgabezyklus ein, wird eine neue Gruppe von Befehlen in einer physikalischen Speicherreihenfolge geholt, werden die zuvor geholten und gedrehten Befehle, die nicht ausgegeben wurden, erneut in eine physikalische Speicherreihenfolge angeordnet und in einer physikalischen Speicherreihenfolge mit den neu geholten Befehlen gemischt; zusammen werden alle geholten und nicht ausgegebenen Befehle in eine Ausgabereihenfolge vor dem nächsten Ausgabezyklus gedreht, und so weiter, bis alle Befehle die Pipeline durchlaufen haben.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm eines Datenprozessors.
  • Fig. 2A ist ein Diagramm, das eine herkömmliche durch den Prozessor der Fig. 1 implementierte mehrstufige Pipeline für Festkommabefehle darstellt.
  • Fig. 2B ist ein Diagramm, das eine durch den Prozessor der Fig. 1 implementierte modifizierte siebenstufige und neunstufige Pipeline für jeweils Festkomma- und Ladebefehle darstellt.
  • Fig. 3 ist ein Blockdiagramm der Zentralprozessoreinheit (CPU) der Fig. 1.
  • Fig. 4 ist ein Blockdiagramm des Caches der Fig. 1.
  • Fig. 5 ist ein Blockdiagramm der Speichermanagementeinheit (MMU) der Fig. 1.
  • Fig. 6 ist ein Blockdiagramm einer Betriebsmittelverzögerungseinheit, die durch die Ausgabeeinheit der Fig. 3 verwendet wird.
  • Fig. 7 ist ein Blockdiagramm der Hol-, Verzweigungs- und Ausgabeeinheiten der Fig. 3.
  • Fig. 8 ist ein Blockdiagramm der Datenfluss- und Funktionseinheiten der Fig. 3.
  • Fig. 9 stellt einen symbolischen A-Ring von aktiven Befehlen dar, die durch die CPU der Fig. 3 verwendet werden, um den richtigen architekturmäßigen Zustand aufrechtzuerhalten.
  • Fig. 10 ist ein Blockdiagramm von Teilen einer Hol- und Ausgabeeinheit, die die Verarbeitung von Befehlen während des Holzyklus zeigen.
  • Fig. 11 ist ein Blockdiagramm einer Befehlsrotations- Logikschaltung, die durch den Decodier/Abfertigungs-Block der Fig. 10 verwendet wird, um geholte Befehle in eine Ausgabenreihenfolge zu drehen.
  • Fig. 12 ist ein Blockdiagramm einer Reihe von "n" Speicherelementen mit einer innerhalb des Decodier/Abfertigungs-Blocks der Fig. 10 gezeigten Rotationslogik.
  • Fig. 13 ist ein Zeitdiagramm für Befehle während des Holzyklus innerhalb des Decodier/Abfertigungs- Blocks der Fig. 10.
  • Fig. 14 ist ein verstärktes Blockdiagramm der Abfertigungsrotations-Logikschaltung der Fig. 11.
  • Fig. 15A zeigt eine Befehlseingabe und -ausgabe des Decodier/Abfertigungs-Blocks der Fig. 10.
  • Fig. 15B zeigt eine Befehlseingabe und -ausgabe eines alternativen Ausführungsbeispiels eines Decodier/Abfertigungs-Blocks.
  • Fig. 15C zeigt eine Befehlseingabe und -ausgabe eines weiteren Ausführungsbeispiels eines Decodier/Abfertigungs-Blocks.
  • Fig. 16 ist ein Blockdiagramm von Speicher- Speicherungseinheiten und Latches, das den Ablauf von Befehlen während Hol- und Ausgabezyklen zeigt.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiels
  • Unter Bezugnahme auf Fig. 1 ist dort ein Blockdiagramm eines herkömmlichen Prozessorsystems 100 gezeigt, das bei einem Prozessor 101 angebracht ist, wie beispielsweise dem R1- Prozessor, der auf einem Keramik-Multichipmodul (MCM) angebracht ist, in welchem die vorliegende Erfindung implementiert ist. Innerhalb des Prozessors 101 bildet ein superskalarer CPU-Chip 103 eine Schnittstelle mit Cache-Chips 105, 107, 109, 111 für zwei 64-Kbyte-Daten und zwei 64-Kbyte- Befehle durch Senden von Anfragen für einen Zugriff der Speicherung über 128-Bit-Adressenbusse 113, 115, 117, 119, Empfangen und Senden von Daten über 128-Bit-Datenbusse 121, 123 und Empfangen von Befehlen über 128-Bit-Befehlsbusse 125, 127. Im Prozessorsystem 100 verbindet eine Speichermanagementeinheit (MMU) 129 eine externe Permanentspeichereinheit 131, wie beispielsweise diejenigen, die kommerziell verfügbar sind, mit den Daten- und Befehls- Caches 105, 107, 109, 111, empfängt Anfragen zum Zugreifen auf adressierbare Stellen in der Speichereinheit 131 über 128-Bit-Adressenbusse 133, 135, 137, greift auf die angefragten Adressen in der Speichereinheit 131 über einen 128-Bit-Bus 139 zu und transferiert die angefragten Daten und Befehle über 128-Bit-Daten- und -Befehlsbusse 141, 143. Die MMU 129 kann zusätzlich eine Kommunikation zwischen dem Prozessor 101 und externen Vorrichtungen, wie beispielsweise einem Diagnoseprozessor 147 und Eingabe/Ausgabe-(I/O)- Vorrichtungen 149, managen. Durch Verwenden eines Mehrchipmoduls kann die CPU 103 große Caches und Busse mit hoher Bandbreite mit insgesamt 256 Bits für Adressen und 256 Bits für Daten verwenden. Ein Taktchip 145 liefert Taktsignale innerhalb des Prozessors 101 zum Steuern und Synchronisieren einer Kommunikation zwischen den jeweiligen Elementen innerhalb des Prozessors 101 und extern zu diesem. Der Prozessor 101 kann mit der 64-Bit-Befehlssatzarchitektur SPARC® V9 implementiert sein, und er erreicht eine maximale Befehlsausgaberate von vier Befehlen pro Taktzyklus durch Ausnutzen eines Parallelismus auf Befehlsebene mit Techniken einer superskalaren Befehlsausgabe, einer Registerumbenennung und einer Datenflussausführung.
  • Gemäß Fig. 2A ist eine herkömmliche vierstufige Pipeline 201 zum Verarbeiten von Befehlen derart gezeigt, dass sie Hol-, Ausgabe-, Ausführungs- und Beendigungsstufen 205, 207, 209, 211 enthält, und sie kann zum Verarbeiten von Festkommabefehlen verwendet werden. Zum Laden der Pipeline eines superskalaren vierstufigen Prozessors 101 kann ein erster Satz aus vier Befehlen während einer Befehlsstufe 213 geholt werden, kann ein zweiter Satz aus vier Befehlen während einer Befehlsstufe 215 geholt werden, die beginnt, nachdem die Holstufe 205 für einen Befehlszyklus 213 beendet ist, und so weiter, bis die Pipeline mit vier Sätzen von Befehlen vollständig geladen ist oder bis keine zusätzlichen Befehle bleiben, die auszuführen sind. Zur Verarbeitung jedes Ladebefehls enthält eine in Fig. 2B gezeigte herkömmliche sechsstufige Pipeline 203 Hol-, Ausgabe-, Adressenerzeugungs(ADDR GEN)-, Cache-Zugriffs-, Datenzurückbring- und Beendigungsstufen 205, 207, 203, 217, 219, 211. Die Pipeline 203 wird auf dieselbe Weise wie die Pipeline 201 gefüllt und vollständig geladen, wenn eine Gesamtheit von vier Sätzen aus sechs Befehlen in der Pipeline ist. Zum Unterbringen einer Ausführung außerhalb der Reihe implementiert der Prozessor 101 modifizierte Pipelines 221, 223 zum jeweiligen Verarbeiten von Festkomma- und Ladebefehlen, die Deaktivierungs-, Übertragungs- und Rückzugsstufen 225, 227, 229 enthalten. Während der Deaktivierungsstufe 225 wird ein Befehl deaktiviert, nachdem er eine Ausführung ohne Fehler beendet hat. Während der Übertragungsstufe 227 wird ein Befehl übertragen, wenn er deaktiviert worden ist und alle vorherigen Befehle deaktiviert worden sind. Während der Rückzugsstufe 229 wird ein Befehl zurückgezogen, wenn alle Maschinenbetriebsmittel, die durch den Befehl verbraucht sind, erneut beansprucht worden sind. Vor den Übertragungs- und Rückzugsstufen wird vom Prozessor 101 ausreichende Information zum Wiederherstellen des Maschinenzustands in dem Fall zurückgehalten, dass Ausführungsfehler oder falsche Vorhersagen für Verzweigungen erfasst werden.
  • Gemäß Fig. 3 ist ein Blockdiagramm der CPU 103 gezeigt, die eine Holeinheit 301 enthält. Während jedes Zyklus können vier Befehle durch die Holeinheit 301 über einen Befehlsbus 303 von primären Caches 109, 111 (Fig. 1), zwei Hervorholpuffern 305, die zwei Sechzehn-Befehlsleitungen halten können, oder einem sekundären vorcodierten Befehlscache 307 geholt und zur Aufgabeeinheit 309 weitergeleitet werden. Die Holeinheit 301 liefert geholte Befehle zur Ausgabeeinheit, die zum Abfertigen bzw. Abgeben von ihnen zu den Datenflusseinheiten reagiert. Zum Verbessern der Zykluszeit sind Befehle im primären Cache bereits teilweise decodiert oder neu codiert worden. Eine dynamische Verzweigungsvorhersage wird durch einen 1024-Eintrags-Verzweigungsvorgeschichtentabelle 311 geliefert, die 2-Bit-Sättigungszähler enthält, die zum Vorhersagen der Richtung von Verzweigungen verwendet werden. Zum Beschleunigen von Unterroutinen-Rücksprüngen, die indirekte Verzweigungsziele enthalte, wird eine Rücksprung- Vorhersagetabelle 313 zum Vorhersagen der Rücksprungadresse für eine Untergruppe bzw. einen Untersatz von Sprung- und Verbindungsbefehlen verwendet. Information von den Tabellen 311, 313 wird zu einer Verzweigungseinheit 315 geliefert, die wiederum Verzweigungs- und Rücksprung- Adressenvorhersageinformation zur Ausgabeeinheit 309 liefert. Verfügbare Maschinenbetriebsmittel und Ausgabebeschränkungen werden letztlich durch die Ausgabeeinheit 309 bestimmt. Befehle werden durch die Ausgabeeinheit 309 in der durch die Hohleinheit 301 geholten Reihenfolge ausgegeben, vorausgesetzt, dass Maschinenquellen bzw. -betriebsmittel verfügbar sind. Bestimmte Ausgabebeschränkungen können die Ausgaberate von Befehlen/Zyklus reduzieren. Die Ausgabeeinheit 309 löst statische Einschränkungen und irgendwelche dynamischen Beschränkungen für Befehle aus. Befehle werden dann decodiert und zu den Reservierungsstationen 317, 319, 321, 323 abgesetzt. Während der Ausgabestufe können vier Befehle spekulativ von der Ausgabeeinheit 309 zu vier Reservierungsstationen abgesetzt werden: Reservierungsstation 317, 319, 321, 323 für eine Festkommaeinheit (FXU), eine Gleitkommaeinheit (FPU), eine Adressenerzeugungseinheit. (AGEN) und eine Lade- Speichereinheit (LSU). Allgemein kann irgendeine Kombination aus vier Festkomma-, zwei Gleitkomma-, zwei Lade-Speicher- oder einem Verzweigungsbefehl in einem gegebenen Taktzyklus ausgegeben werden. Auf Registerdateien 325, 327, 329 wird im Ausgabezyklus zugegriffen und kann während des Ausgabezyklus umbenannt werden, um eine maximale Ausgabebandbreite beizubehalten. Die Ganzzahlen-Registerdatei unterstützt vier SPARC-Registerfenster. Gleitkomma-, Festkomma- und Zustands- bzw. Bedingungscode-Register 325, 327, 329 können umbenannt werden, um Daten-Störeffekte zu entfernen. Durch Umbenennen von Ebenen für nicht programmierte Programmsprünge kann in während der Ausgabestufe erfasste nicht programmierte Programmsprünge spekulativ eingetreten werden. Jedem abgefertigten bzw. abgesetzten Befehl ist eine eindeutige Sechs-Bit-Kennung zugeordnet, was ein Versehen mit einer Kennung von so vielen wie vierundsechzig ausstehenden Befehlen ermöglicht. Für einige Befehle, wie beispielsweise Verzweigungen, kann durch Nehmen eines "Schnappschusses" des Architekturzustands ein Fixpunkt festgelegt werden. Der Zustand des Prozessors 101 kann später zu einem ausgewählten Fixpunkt wieder hergestellt werden, wenn gefunden wird, dass eine spekulative Befehlssequenz aufgrund einer falschen Vorhersage einer Verzweigung oder einer Ausnahmebedingung unrichtig ausgegeben oder ausgeführt wird. Der Prozessor 101 lässt zu, dass für so viele wie für sechzehn Befehle ein Fixpunkt festgelegt wird, was sechzehn Ebenen von vorhergesagten Verzweigungsbefehlen zulässt.
  • Während der Abfertigungsstufe bzw. Absetzstufe wird ein Befehl in einem von vier Typen von Reservierungsstationen angeordnet - Festkomma, Gleitkomma, Adressenerzeugung, Laden/Speichern. Festkommabefehle können auch zur Adressenerzeugungs-Reservierungsstation gesendet werden. Wenn er einmal abgesetzt ist, wartet ein Befehl auf eine Auswahl zur Ausführung in einer der vier Reservierungsstationen. Eine Auswahl basiert einzig auf Datenflussprinzipien einer Operandenverfügbarkeit. Ein Befehl kann ausführen, wenn einmal die erforderlichen Operanden verfügbar sind, und als Ergebnis können Befehle außerhalb einer Reihenfolge ausführen und sind selbstplanend. Eine Gesamtheit von sieben Befehlen kann zur Ausführung in jedem Zyklus ausgewählt werden; die ersten Festkomma-, Adressenerzeugungs- und Laden/Speichern- Reservierungsstationen sind jeweils dazu fähig, zwei Befehle zur Ausführung zu initiieren, während die Gleitkomma- Reservierungsstation einen Befehl initiieren kann. Die Gleitkomma-Ausführungseinheiten weisen eine vierzyklische pipelinemäßige Multiplikations-Additions-(FMA-)Einheit 331 und eine Gleitkomma-Teilungs-(FDIV-)Einheit mit einem Eigentakt von sechzig Nanosekunden 333 auf. Die Ganzzahlen- Ausführungseinheiten enthalten eine Vierundsechzig-Bit- Multiplikations-(IMUL)-)Einheit 335, eine Vierundsechzig-Bit- Teilungs-(IDIV-)Einheit 337 und vier Arithmetik-Logik- Einheiten (ALÜl, ALU2, ALU3, ALU4) 339, 341, 343, 345 auf. Wenn keine Effekte aufgrund einer pipelinemäßigen Anordnung enthalten sind, kann eine Spitze von zehn Befehlen parallel ausgeführt werden. Die Lade/Speicher-Einheit (LSU) enthält zwei parallele Lade/Speicher-Pipeline-(LS PIPE1, LS PIPE2)- Einheiten 347, 349, die spekulative Ladungen zum Cache 105, 109 über einen Lade/Speicher-Bus 351 mit zugelassenen Ladungen, für die zugelassen ist, dass sie Speicherungen oder frühere Ladungen umgehen, senden können. Die LSU kann unter der Voraussetzung zwei unabhängige Vierundsechzig-Bit- Ladungen oder -Speicherungen während jedes Zyklus durchführen, dass sie zu unterschiedlichen Cache-Chips sind. Der Cache ist nicht blockierend, d. h. er kann nach einem Nichttreffer Zugriffe zu anderen Adressen handhaben.
  • Ganzzahlen-Multiplikations- und -Divisionseinheiten (MULDIV) 335, 337 führen alle Ganzzahlenmultiplikations-(außer einem Einzahlenmultiplikationsstufenbefehl) und -divisionsoperationen durch. Die MULDIV 335, 337 sind intern nicht pipelinemäßig aufgebaut und können nur einen Multiplikations- oder Divisionsbefehl gleichzeitig ausführen. Die MULDIV 335, 337 weisen einen Vierundsechzig-Bit- Multiplizierer und einen Vierundsechzig-Bit-Dividierer mit einem gemeinsamen Vierundsechzig-Bit- Übertragsausbreitungsaddierer auf.
  • Die Multiplikationseinheit 335 führt alle Zweiunddreißig-Bit- und Vierundsechzig-Bit-Multiplikationsbefehle mit Vorzeichen und ohne Vorzeichen aus. Zweiunddreißig-Bit-Multiplikationen mit Vorzeichen und ohne Vorzeichen werden in drei Zyklen beendet und die Vierundsechzig-Bit-Multiplikationen mit Vorzeichen und ohne Vorzeichen werden in 5 Zyklen beendet. Die Multiplikationseinheit 335 enthält einen Multipliziererbaum, der eine Vierundsechzig-mal-Sechzehn-Bit- Multiplikation in einem einzigen Taktzyklus in einer Übertragssicherungsform berechnen kann. Für Zweiunddreißig- Bit-Multiplikationen bildet die Multiplikationseinheit 335 eine Schleife über zwei Zyklen im Multipliziererbaum, um zwei Teilergebnisse in einer Übertragssicherungsform zu reduzieren, und nimmt einen weiteren Zyklus für den Vierundsechzig-Bit-Übertragsausbreitungsaddierer zum Erzeugen des Endergebnisses.
  • Die Divisionseinheit 337 implementiert einen Wurzel-Vier-SRT- Algorithmus und kann Vierundsechzig-Bit-Divisionen in 1 bis 39 Zyklen mit einer durchschnittlichen Latenzzeit von 17 Zyklen beenden.
  • Die Gleitkomma-Multiplikations-Additions-Einheit (FMA) 331 reagiert zum Ausführen aller Gleitkommaoperationen mit einfacher und doppelter Genauigkeit (mit Ausnahme für eine Gleitkommadivision), Gleitkomma-Bewegungsoperationen und spezifizierte Multiplikations/Additions/Subtraktions- Operationen. Die FMA 331 nutzt einen Ergebnisbus 809 gemeinsam mit der Gleitkomma-Divisions-(FDIV)-Einheit 333.
  • Die FMA 331 kann einen verschmolzenen Multiplikations- Additions-Befehl (z. B. A·B + C) implementieren. Eine "verschmolzene" Multiplikations-Additions-Operation bedeutet, dass nur ein Rundungsfehler bei der kombinierten Operation angetroffen wird. Die gesamte andere Gleitkommaarithmetik ist als spezieller Fall der verschmolzenen Multiplikation- Addition implementiert. Beispielsweise ist eine Subtraktion als eine verschmolzene Multiplikation-Addition mit dem Operanden "B" zu Eins gezwungen implementiert und mit dem Vorzeichen des Operanden "C" auf sein Komplement gesetzt. Die FMA 331 ist eine vierstufige vollständig pipelinemäßig aufgebaute Einheit und kann einen Gleitkommabefehl in jedem Zyklus annehmen.
  • Die erste Stufe in der FMA-Pipeline formatiert die eingegebenen Operanden, erzeugt die erste Hälfte des Teil- Multipliziererergebnisses in einer Übertragssicherungsform, berechnet eine Ausrichtungsverschiebungszahl für den Additionsoperanden und beendet die erste Hälfte der Additionsoperandenausrichtung zum Multipliziererprodukt. Die zweite Stufe in der FMA-Pipeline reduziert das Multipliziererergebnis auf zwei Teilprodukte in einer Übertragssicherungsform, addiert den "C"-Operanden zum Teilprodukt und beendet die erste Hälfte der Berechnung mit führender Null. Die dritte Stufe in der FMA-Pipeline beendet die Berechnung mit führender Null, summiert die zwei Teilprodukte und normalisiert das Ergebnis. Die vierte Stufe in der FMA-Pipeline bestimmt Ausnahmen und Spezialfälle, rundet das Ergebnis zur erforderlichen Genauigkeit und formatiert die Ausgabe.
  • Die Gleitkomma-Divisionseinheit (FDIV) 333 führt alle Gleitkomma-Divisionsbefehle aus. Die FDIV 333 ist ein funktioneller Block mit Eigentakt, der schnelle Vorladungsschaltungstechniken zum Berechnen von Quotientenziffern unter direkter Verwendung eines modifizierten Wurzel-Zwei-SRT-Algorithmus verwendet. Die FDIV 333 führt einen Gleitkomma-Divisionsbefehl zu einer Zeit aus. Die FDIV 333 kann als Kombinationsfeld angesehen werden, das fünfundfünfzig Stufen implementiert und ein Ergebnis nach etwa sechs Taktzyklen zurückbringt. Für die vorgeladenen Blöcke wird eine Schleife in einen Ring gebildet, und sie werden durch eine Eigentaktung gesteuert. Der eigengetaktete Ring berechnet die Quotientenmantisse in fünf Stufen. Fünf Stufen können ausgewählt werden, um den Ring bezüglich einer Auswertung bzw. Bewertung zu begrenzen (und nicht bezüglich einer Steuerung bzw. Regelung zu begrenzen). Der Ring ist ohne interne Latch-Schaltungen in den Stufen entwickelt. Jede der fünf Stufen wird zum Berechnen des nächsten Rests und eines Quotienten-Bits unter Verwendung des aktuellen Rests und einer Quotientenziffer verwendet. Durch Kopieren einiger kurzer Übertragsausbreitungsaddierer wird die Ausführungszeit reduziert, weil eine Ausführung von benachbarten Stufen überlagert werden kann. Jede Stufe weist vorgeladene Logikblöcke auf, die durch Beendigungsdetektoren gesteuert werden, die die Ausgabe von benachbarten Stufen überwachen. Während Daten um die Stufen im Ring mit Eigenzeitgabe fließen, werden die in jeder Stufe berechneten Quotientenbits in einem Schieberegister akkumuliert. Das schließliche Runden wird in einem zusätzlichen Taktzyklus durchgeführt, während sich der gesamte Ring für die nächste Operation wieder vorlädt.
  • Lade/Speicher-Einheiten (LSUs) 347, 349 bilden eine Schnittstelle mit den zwei nicht blockierenden Datencache-Chips 105, 107. Ein Cache-Bus 351 wird zwischen den Cache- Chips an vierundsechzig Grenzen verschachtelt. Die LSUs 347, 349 können sowohl kleinendende als auch großendende Formate unterstützen. Die LSUs 347, 349 unterstützen Moden von sowohl einem entspannten Speichermodell (RMO) als auch einer gesamten Speicherreihenfolgenbildung (TSO), die im SPARC-V9- Architekturhandbuch von Sun Microsystems definiert sind. Die LSUs 347, 349 reagieren auf eine Planung für sowohl Festkomma- als auch Gleitkomma-Lade/Speicher-Befehle und können bis zu zwei Anfragen in jedem Zyklus zum Cache 105, 107 durchführen. Eine Befehlsreihenfolge wird zum Beibehalten eines genauen Zustands verwendet und wird durch eine Gruppe von Protokollsignalen zwischen der CPU 103 und den Cache- Chips 105, 107 gemanagt. Die LSUs 347, 349 enthalten eine Reservierungsstation mit zwölf Einträgen. Im RMO-Mode wird zugelassen, dass Ladebefehle Speicherbefehle spekulativ umgehen. Eine dreistufige Pipeline wird zum Unterstützen von Teilungstransaktionen zwischen den LSUs 347, 349 und den Daten-Caches 105, 107 verwendet. Während der ersten Stufe werden eine Befehlsadresse, ein Operationscode, eine Seriennummer und Steuerbits, die für eine spekulative Ausführung verwendet werden, durch die LSU 347 (349) zum Daten-Cache 105 (107) gesendet. Während der zweiten Stufe werden Daten von einem Speicherbefehl von der LSU 347 (349) zum Daten-Cache 105 (107) gesendet, und die Seriennummer und das gültige Bit des Befehls, die im nächsten Zyklus beenden werden, werden vom Daten-Cache 105 (107) zur LSU 347 (349) gesendet. Während der dritten Stufe bringt der Daten-Cache 105(107) den Zustand bzw. Status und Ladedaten zurück. Bei einem Cache-Nichttreffer bringt der Daten-Cache 105 (107) die Daten während eines ungenutzten Pipeline-Schlitzes zurück oder er wird ein Signal aktivieren, das bis zu einem Pipeline-Schlitz für die Daten offen ist.
  • Wenn Befehle eine Ausführung beenden, werden Ergebnisse zu Reservierungsstationen rundgesendet, und eine Statusinformation wird zur Präzisionszustandseinheit (PSU) 353 geliefert. So viele wie neun Befehle können in einem Zyklus beenden. Die PSU 353 (und die Reservierungsstationen 317, 319, 321, 323) verwendet die Tag-Nummer jedes ausgegebenen Befehls zum Verfolgen von Befehlen. Die PSU 353 unterhält auch Fixpunkte, die für Befehle gemacht sind, die einen Architekturzustand und CPIs beeinflussen. Die PSU 353 verfolgt einen Fehler- und Beendigungszustand und übergibt Befehle in einer Reihenfolge und zieht sie zurück. In jedem Zyklus können acht Befehle übergeben werden und können vier Befehle zurückgezogen werden. Die PSU 353 bringt auch externe Unterbrechungen und Befehlsausnahmen in eine Reihenfolge.
  • In Fig. 4 ist ein Blockdiagramm des Caches 105, 107 gezeigt. Der Cache 105, 107 weist zwei Cache-Chips und eine Tagspeichereinheit 401 auf. Jeder Cache-Chip, enthält 64 Kbytes eines Datenspeichers, organisiert als zwei Datenbänke, die vier Gruppen von adressierbaren Registern enthalten. Auf die Tag-Speichereinheit 401 wird durch die CPU 103 zugegriffen, die Daten virtuell indiziert und mit einer Kennung bzw. einem Tag versieht, die im Cache 105, 107 gespeichert sind und von diesem transferiert werden. Für beide Daten-(und Befehls-)Caches 105, 107 (109, 111) ist eine 128-Byte-Cache- Leitung zwischen zwei Cache-Chips aufgeteilt, wobei jeder Cache-Chip 64 Bytes von Daten oder Befehlen empfängt. Jeder Cache-Chip kann zwei unabhängige Anfragen von der CPU 103 bedienen. Die CPU-Cache-Schnittstelle ist nicht blockierend, so dass die CPU 103 auf den Cache 105, 107 zugreifen kann, während eine Cache-Leitung erneut gefüllt oder geräumt wird. Eine Latenzzeit von einer Adressenerzeugung zu einer Datenanwendung umfasst drei Zyklen. Bänke 403, 405 und die MMU 129 sind über Stapelpuffer für ein erneutes Laden und ein Speichern 409, 411 verbunden. Zwei ausstehende Nichttreffer können durch jeden Cache-Chip bedient werden, der beim dritten Nichttreffer blockiert. Mehrere Nichttreffer zu denselben Cache-Leitungen werden als einzelner Nichttreffer verknüpft und gezählt.
  • In Fig. 5 ist ein Blockdiagramm der MMU 129 gezeigt. Die MMU 129 ist verantwortlich für ein Speichermanagement und eine Datenkohärenz, bildet eine Schnittstelle zu einem Speicher und I/O-Systemen über einen Datenpuffer 501 und eine Eingabe/Ausgabe-(I/O-)Steuereinheit 503 und behandelt einen Fehler über eine Fehlerbehandlungs- und -protokollierungseinheit 505. Die MMU 129 hat drei Ebenen bzw. Pegel von Adressenräumen. Einen virtuellen Adressen- (VA-)Raum für den Prozessor, einen logischen Adressen- (LA-)Raum für I/O-Vorrichtungen und den Diagnoseprozessor und einen physikalischen Adressenraum für einen Speicher. Diese hierarchischen Adressenräume liefern einen Mechanismus zum Managen des Adressenraums mit vierundsechzig Bits. Mehrere Adressenumsetzungspuffer sitzen innerhalb der MMU 129, um diese Mehrfachebenen-Adressenumsetzungen zu bedienen. Ein Betrachtungs-Adressumsetzungspuffer (VLB) 507 ist eine CAM- basierende, vollständig assoziative Tabelle mit 128 Einträgen, die für eine Umsetzung von einer virtuellen Adresse zu einer logischen Adresse verantwortlich ist. Ein Umsetzungs-Adressumsetzungspuffer (TLB) 509 ist eine vierwegige, satzassoziative Tabelle mit 1024 Einträgen, die für Umsetzungen von einer logischen Adresse zu einer realen Adresse (RA) verwendet wird. Eine Cache-Realadressentabelle (CRAT) 511 ist eine vierwegige satzassoziative Tabelle, die Realadressen-Tags speichert. Die CRAT 511 ist verantwortlich für eine Datenkohärenz zwischen Caches und Speichern über Cache-Steuerungs- und Befehlswarteschlangeneinheiten 513, 515.
  • Gemäß Fig. 6 kann eine Betriebsmittelverzögerungs- Blockschaltung 601 verwendet werden, um die Verzögerung von kritischen Zeitfarben von ausgegebenen Befehlen zu reduzieren. Der Betriebsmittelverzögerungsblock 601 verbindet eine Ausgabeeinheit 309 mit Reservierungsstationen 317, 319, 321, 323 und liefert einen Pfad, durch welchen Befehle (INST0, INST1, INST2, INST3) geführt werden können. Basierend auf einer Betriebsmittelverfügbarkeit und auf von den Befehlen decodierten Attributen erzeugen drei Ebenen von Übertragungsgattern 603, 605, 607 einen Verzögerungsvektor und verhindern eine bezüglich der Zeit falsche Befehlsausgabe. Eine Verzögerung in der Schaltung ist linear zu der Anzahl von Befehlen skaliert, die ausgegeben werden.
  • In Fig. 7 ist ein Blockdiagramm der Hol-, Verzweigungs- und Ausgabeeinheiten gezeigt. Die Holeinheit 301 bildet eine Schnittstelle zwischen den Befehlscaches außerhalb eines Chips 109, 111 und Verzweigungs- und Ausgabeeinheiten 315, 309. Die Holeinheit 301 holt bis zu 64-Byte-Leitungen vor dem aktuellen Programmzähler hervor, codiert Befehle in einem 4- Kilobyte-Direktabbildungs-Befehlscache 701 erneut und speichert sie, und leitet vier Sätze von Befehlen und Tags in jedem Zyklus zur Ausgabeeinheit 309 weiter. Eine Verzweigungsvorgeschichtentabelle 311 bildet alle 1024 Stellen des Befehlscaches 701 unter Verwendung eines dynamischen Zwei-Bit-Vorhersagealgorithmus für vorhergesagte Verzweigungen ab.
  • Ein Holen vom Cache auf dem Chip 701 bringt immer vier Befehle zur Ausgabeeinheit 309 (einen Treffer im Cache auf dem Chip) zurück, bis der Zugriff zum Ende der Leitung erfolgt; beispielsweise kann auf zwei Cache-Leitungen nicht gleichzeitig zugegriffen werden (ein Nichttreffer für einen Cache auf dem Chip). Ein Speichern (oder Schreiben) von Daten kann parallel zu einem Lesen vom Cache 701 erfolgen, und blockiert daher keine Lesezugriffe oder erzeugt keinen Nichttreffer. In dem Fall eines Nichttreffers aktiviert die Holeinheit 301 eine Hervorhol-Steuerlogik-Schnittstelle 703 basierend auf der Nichttreffer-Adresse. Die Hervorholschnittstelle 703 implementiert ein Teilungstransaktionsprotokoll und unterstützt eine Verbindung zu einem einzelnen Cache außerhalb des Chips mit einer Quadwortunterstützung, oder zwei Caches 109, 111, die zwei Befehlsworte und separate Statusinformation zuführen. Anfragen werden durch eine Teiladresse eindeutig identifiziert.
  • Externe Caches, wie beispielsweise die Caches 109, 111, bringen die Identifizierer einen Zyklus vor den Daten zurück, und diese werden zum Einstellen des Schreibens zu Hervorhol- Cache-Leitungen 705 verwendet. Von außerhalb des Chips geholte Befehle laufen durch eine Einheit für ein erneutes Codieren 707, die Steuertransferbefehle und illegale Befehle neu codiert. Die Einheit für ein erneutes Codieren 707 berechnet Teil-Zieladressen für Verzweigungen und Aufrufe, hängt vorn ein Steuerbit an und steuert ein berechnetes Ziel in einem ursprünglichen Befehl. Diese Technik resultiert in nur einem Zusatzbit für jeden Befehl und reduziert die Verzweigungszielberechnung auf ein einfaches Inkrementieren oder Dekrementieren der oberen Bits des Programmzählers (nicht gezeigt).
  • Nach einem erneuten Codieren werden Befehle zwischengespeichert und während des nächsten Taktzyklus in den Cache 701 geschrieben. Befehle können auch direkt zu andere Komponenten des Systems weitergeleitet werden, wie beispielsweise dem Hervorholpuffer 305.
  • Eine Paritätsfehlererfassung ist implementiert, und resultierende Fehler werden zusammen mit individuellen Befehlen weitergeleitet. Somit wird auf einem Paritätsfehler bei der Befehlsschnittstelle nur dann getroffen, wenn ein Versuch zum Ausgeben der fehlerhaften Daten gemacht wird.
  • Die Verzweigungsvorgeschichtentabelle 311 liefert acht Bits einer Verzweigungsvorgeschichteninformation, und zwar zwei Bits pro Befehl, und leitet sie zu Verzweigungs- und Ausgabeeinheiten 315, 309 weiter. Die Verzweigungsvorgeschichtentabelle 311 behandelt die Aktualisierung zu einer Zwei-Bit-Stelle in jedem Zyklus, in welchem eine Verzweigung ausgegeben wird. Zusammen mit Aktualisierungen bezüglich der Verzweigungsvorgeschichtentabelle 311 speichert eine Rücksprung-Vorhersagetabelle 313 die Verzweigungsvorhersagebits und eine Adresse der ausgegebenen Verzweigung. Bei einer Sicherung aufgrund einer falsch vorhergesagten Verzweigung liefert die Rücksprung- Vorhersagetabelle 313 einen Aktualisierungsmechanismus zum Modifizieren und Aktualisieren des ursprünglichen Zwei-Bit- Werts in der Verzweigungsvorgeschichtentabelle 311.
  • Die Verzweigungseinheit 315 ist verantwortlich für die Berechnung von Zielen für alle Verzweigungen und eine Untergruppe von Sprung- und Verbindungs-(JMPLS-)Befehlen. Die Verzweigungseinheit 315 unterhält den Architektur- Programmzähler (APC) und den Hol-Programmzähler (FPC). Der APC speichert die Adresse des Befehls des Programms, der ausgegeben wird. Der FPC speichert die nächste sequentielle Adresse für den nächsten Befehl, der zu holen ist. Auf den Befehlscache auf dem Chip 701, die Hervorholpuffer 305, die Verzweigungsvorgeschichtentabelle 311 und die externen Caches, wie beispielsweise die Caches 109, 111, wird unter Verwendung des FPC zugegriffen.
  • Zum Verfolgen einer Verarbeitung innerhalb eines spekulativen Prozessors mit vier Ausgaben, wie beispielsweise des Prozessors 103, sind fünf Zähler intern zur CPU 103 unterhalten: der APC, ein nächster APC(NAPC), ein Fixpunkt- PC(CPC), ein nächster PC für einen Fixpunkt(CNPC) und ein alternativer nächster PC(ANPC). Der APC und der ANPC zeigen auf die Adressen des ersten und des nächsten Befehls, die gegenwärtig durch die Ausgabeeinheit 309 ausgegeben werden. Der CPC und der CNPC, die in einem Fixpunkt-RAM (nicht gezeigt) gespeichert sind, sind Kopien des PC und des NPC und werden zum Beibehalten eines präzisen Zustands verwendet. Der ANPC speichert die Adresse eines ersten Befehls für einen alternativen Pfad von einem vorhergesagten Zweig und wird zur Wiedergewinnung von falschen Vorhersagen verwendet. Der APC wird basierend auf der Anzahl von Befehlen aktualisiert, die in jedem Zyklus ausgegeben werden. Der APC wird auch basierend auf Steuertransferbefehlen (CTI), falschen Vorhersagen, nicht programmierten Programmsprüngen und Ausnahmen aktualisiert.
  • Die Ausgabeeinheit 309 versucht, bis zu vier Befehlen von einem Befehlspuffer mit vier Einträgen (nicht gezeigt) in jedem Zyklus auszugeben. Auf Befehle wird vom Befehlscache auf dem Chip 701 in jedem Zyklus zugegriffen, und sie werden decodiert, um das Vorhandensein von CTI-Befehlen zu bestimmen. Wenn keine CTIs im Puffer oder in den Befehlen existieren, auf die vom Cache 701 zugegriffen wird, wird der FPC aktualisiert, um auf das Ende des Puffers zu zeigen. Wenn ein CTI im Ausgabefenster oder in den Befehlen, auf die vom Cache zugegriffen wird, existiert, werden die Vorhersagebits von der Verzweigungs-Vorgeschichtentabelle 311 verwendet, um die Richtung des CTI zu bestimmen. Der FPC wird dann bis zum Ende des Puffers oder bis zu einem Ziel des CTI aktualisiert. Die aktuelle Implementierung wird durch das Vorhandensein von Verzögerungsschlitzen und Bits für ein Lahmlegen, die zu Verzweigungen gehören, kompliziert.
  • Die Rücksprung-Vorhersagetabelle 313 unterstützt eine schnelle Vorhersage von ausgewählten Klassen von JMPLs, die für Unterroutinenrücksprünge (JUMPR) verwendet werden. Die Rücksprung-Vorhersagetabelle 313 enthält eine Gruppe aus vier Vierundsechzig-Bit-Registern, die ein Schatten für eine Gruppe von vier Architekturregistern sind. Jedes Mal, wenn ein CALL- oder ein JMPL_CALL-Befehl ausgegeben wird, wird die Rücksprungadresse in einem der vier Schattenregister gesichert. Die Rücksprung-Vorhersagetabelle 313 wird durch den aktuellen Fensterzeiger (CPW) gesteuert. Wenn auf einen JUMPR getroffen wird, wird auf die RPT basierend auf dem CWP zugegriffen, und die gesicherte Adresse wird zum Vorhersagen der Rücksprungstelle verwendet.
  • Während des Ausgabezyklus werden Quellenoperanden aus einer Registerdatei oder einem Datenweiterleitungsbus gelesen und zusammen mit zugehörigen physikalischen Registeradressen zur Ausführungseinheit gesendet. Eine Festkomma-Register- und -Dateieneinheit (FXRF) 327 hat zehn Lesetore und vier Schreibtore. Innerhalb der FXRF 327 speichern Registerdateien die übrigen Abbildungen, die ermöglichen, dass die Festkommaregister im selben Zyklus umbenannt und gelesen werden. Die Festkomma-Register- und -Dateieneinheit (FPRF) 325 ist gleich der FXRF, hat aber sechs Lesetore und drei Schreibtore.
  • Die Kombination aus den Reservierungsstationen mit einer Ausführungssteuerlogik wird Datenflusseinheit (DFU) genannt, welche zum Zuteilen von Einträgen in den Reservierungsstationen 317, 319, 321, 323 verantwortlich ist, und zur Zeitplanung von Befehlen zu den funktionellen Einheiten zur Ausführung. Jeder Reservierungsstationseintrag enthält eine Operationscodeinformation, Quellen/Zielort- Registernummern, Quellendaten, Seriennummer- und Fixpunktnummern-Felder. Die DFU überwacht die. Datenweiterleitungsbusse in Bezug auf Tag- und Ergebnisdaten. Im Fall einer Tag-Übereinstimmung werden die erforderlichen Daten in der geeigneten Reservierungsstation gespeichert, und ein zugehöriges Abhängigkeitsbit in der Reservierungsstation wird aktualisiert. Wenn einmal alle Abhängigkeitsbits eingestellt bzw. gesetzt sind, wird der Befehl zusammen mit seinen Quellendaten zu der geeigneten Funktionseinheit gesendet. Allgemein werden dann, wenn mehr als zwei Befehle in der Reservierungsstation zur Ausführung bereit sind, die zwei ältesten ausgewählt werden. Wenn es keine Befehle in der Reservierungsstation gibt und wenn die ausgegebenen Befehle alle erforderlichen Daten haben, dann können sie direkt zu den Funktionseinheiten abgesetzt werden.
  • Die DFU überwacht Ereignisse, wenn die Ausgabeeinheit 309 einen Befehl ausgibt, der über unausgelöste Verzweigungen hinausgeht, und kann den Befehl in einer gegebenen Reservierungsstation abtöten, die in dem vorhergesagten Pfad von Verzweigungsbefehlen sitzt. Die Reservierungsstationen 317, 319, 321, 323 verfolgen eine Fixpunktnummer für jeden Eintrag. Im Fall von falsch vorhergesagten Verzweigungen sendet die PSU 353 die Fixpunktnummer, die abgetötet werden sollte, zur DFU. Die DFU tötet dann alle Befehle ab, die mit der Fixpunktnummer übereinstimmen.
  • In Fig. 8 ist ein Blockdiagramm von Reservierungsstationen 317, 319, 321, 323 und Funktionseinheiten 331-337, 801- 807, 347, 349 der CPU 103 gezeigt. Die FX- Reservierungsstation (DFMFXU) plant Festkommabefehle für zwei Ganzzahlen-(FXU-)Einheiten 801, 803. Die DXMFXU 317 enthält eine Reservierungsstation mit acht Einträgen. Ganzzahlenmultiplikations- und -divisionseinheiten 335, 337 sind auch mit der DFMFXU verbunden. Der Grundalgorithmus zum Auswählen von Befehlen ist "am ältesten-bereit".
  • Die FP-Reservierungsstation (DFMFPU) 319 plant einen Befehl pro Zyklus für die Gleitkommaeinheit, die die Gleitkommamultiplikations-Additions-(FMA-) und Gleitkommadivisions-(FDIV-)Einheiten 331, 333 enthält. Die FDIV-Einheit 333 ist eine Gleitkommadivisionseinheit gemäß IEEE 754 mit Eigenzeitgabe.
  • Eine AGEN-Reservierungsstation (DFMAGEN) 321 plant eine Festkomma- und Lade/Speicher-Befehlsadressenerzeugung zu zwei Ganzzahlen-(AGEN/FXU-)Einheiten 805, 807. DFMAGEN ist gleich der DFMFXU, außer dass eine Adressenerzeugung von jüngeren Ladungen verzögert wird, wenn es eine aktive ältere Speicherung in der Reservierungsstation gibt.
  • Die LS-Reservierungsstation (DFMLSU) 323 plant Speicheroperationen einschließlich Ladungen, Speicherungen und atomischen Befehlen zu den externen Daten-Caches 105, 107 über Lade/Speicher-(LSPIPE1, LSPIPE2-)Einheiten 347, 349 und den Bus 351.
  • Die CPU 103 enthält vier bestimmte Funktionseinheiten (FX1-4) 801, 803, 805, 807 für Gleitkomma-Arithmetikberechnungen eines einzelnen Zyklus und Logik- und Schiebeoperationen. Zum Minimieren der Anzahl von Bussen nutzt FX1 801 die Operandenbusse und den Ergebnisbus 809 gemeinsam mit den Ganzzahlenmultiplikations- und -divisionseinheiten 335, 337. Alle Ziele für JMPL-Befehle werden in FX2 803 berechnet. Das Ergebnis von FX2 803 wird auch mit Rücksprungdaten von den privilegierten und Statusregistern des Prozessors 101 gemeinsam genutzt. FX3 805 und FX4 807 werden primär für Adressenberechnungen für Lade/Speicher-Befehle verwendet, können aber auch für Festkommaberechnungen verwendet werden. FX3 und FX4 unterstützen keine Schiebeoperationen. Addierer, die in den FX-Einheiten 801, 803, 805, 807 verwendet werden, können schnelle Übertragsausbreitungsaddierer mit vierundsechzig Bits sein. Festkommaeinheiten 801, 803, 805, 807 enthalten drei separate Operationseinheiten. Eine Additions/Subtraktions-Einheit führt alle Ganzzahlenadditions- und -subtraktionsbefehle plus Multiplikationsschrittbefehle aus. Eine Logikeinheit führt alle Logik-, Bewegungs- und einige Prozessorregisterlese- Operationen durch. Eine Schiebeeinheit ist verantwortlich für ein Ausführen aller Schiebeoperationen. Ganzzahlenmultiplikations- und -divisionseinheiten (MULDIV) 335, 337 nutzen die Operandenbusse und den Ergebnisbus 809 gemeinsam mit FX1 801 und verwenden FX1 für einen Zyklus beim Start und beim Ende eines Multiplikations- oder Divisionsbefehls.
  • In Fig. 9 ist ein symbolischer Ring von aktiven Befehlen (A- Ring) 901 gezeigt, der innerhalb des Prozessors 101 arbeitet. Der A-Ring stellt eine Beziehung zwischen den Befehlen dar, die während einer Verarbeitung durch den Prozessor 101 aufrechterhalten werden. Die Größe des A-Rings ist für vierundsechzig Befehle entsprechend einem Maximum von vierundsechzig Befehlen, die zu irgendeiner Zeit im Prozessor 101 aktiv sein können. Wie es früher angegeben ist, ist jedem ausgegebenen Befehl eine eindeutige Seriennummer zugeordnet. Wenn der Befehl ausgegeben wird, wird ein zugehöriger Eintrag im A-Ring gesetzt. Wenn ein Befehl ausführt, wird ein zugehöriges Bit gelöscht, wenn der Befehl ohne Fehler beendet. Vier Zeiger werden zum Verfolgen des Zustands eines Befehls verwendet. Ein Ausgabe-Seriennummer-Zeiger (ISN) zeigt auf die Seriennummer des letzten ausgegebenen Befehls. Ein Übergabe-Seriennummer-Zeiger (CSN) zeigt auf den letzten übergebenen Befehl. Ein Betriebsmittelneubeanspruchungszeiger (RRP) zeigt auf den letzten zurückgezogenen Befehl. Aktive Befehle sind in fünf Zustände kategorisiert - Ausgegeben (I), Wartend (W), Ausführend (E), Beendet (C), Übergeben (cm). Der Nichtspeicher-Übergabe-Seriennummer-Zeiger (NMCSN) wird zum aggressiven Planen von Lade/Speicher-Befehlen verwendet.
  • Zum Beibehalten eines präzisen Zustands verwendet der Prozessor 101 eine Fixpunktierung. Eine Fixpunktierung macht eine Kopie des Maschinenzustands, der in dem Fall von falsch vorhergesagten Verzweigungen oder Ausnahmen wiederhergestellt werden kann. Der Prozessor 101 unterstützt sechzehn Fixpunkte, was spekulative Ausgaben über sechzehn Verzweigungen zulässt. Fixpunkte werden für CTI-Befehle hergestellt oder dann, wenn ein nicht unbenannter Architekturzustand modifiziert wird. Fixpunkte werden auch zum Identifizieren des abzutötenden Befehls in der Ausführungseinheit verwendet, wenn einmal falsche Vorhersagen bezüglich einer Verzweigung aus Ausnahmen durch die PSU 353 erfasst worden sind.
  • Die CPU-Zwischenchip-Anschlussstifte bzw. -Pins und der Befehlscache auf dem Chip 701 werden durch eine Parität geschützt, die ein hohes Maß an Zuverlässigkeit für das System zur Verfügung stellt. Im Fall eines Paritätsfehlers wird Information zur PSU 353 gesendet, um die Ausgabe von neuen Befehlen zu stoppen und den Prozessorzustand wiederherzustellen, um auf den zugehörigen Fehlerbefehl zu zeigen. Im Fall, dass der Fehler keinem Befehl zugeordnet werden kann, wartet die Maschine auf einen Befehl zur Übergabe, und gibt dem Cache 701 dann drei Zyklen zum Beenden irgendwelcher unvollständiger Transaktionen. Die CPU 103 tritt dann in den Rücksetz-, Fehler-, Austest-Mode (RED) ein, wie es durch die SPARC-V9-Software definiert ist, und versucht, einen Maschinenzustand wiederherzustellen.
  • Ein über die gesamte CPU 103 abgesetzter Befehl ist formatiert, wie es nachfolgend gezeigt ist: Tabelle 1 Befehlsformat
  • Das Operationscodefeld (OPCODE) weist Bits [31 : 0] auf, die dieselben wie der Sparc-V9-Operationscode sind, außer dann, wenn der Befehl eine bedingte Verzweigung ist (V9 oder V8 Bcc, FBcc oder Brval), oder dann, wenn der Befehl ein CALL bzw. Aufruf ist. Das Format für diese Befehle wird kurz diskutiert werden. Das Steuerfeld (CNTL) weist ein Bit [32] auf, und wird in Zusammenhang mit bedingten Verzweigungen und CALL verwendet. Die Felder für ein erneutes Codieren (R1, R2) weisen Bits [33 : 34] auf und haben die folgende Codierung: Tabelle 2 Codierung für das Feld für ein erneutes Codieren
  • Nur IMATRIX ist mit dem Zwei-Bit-Feld für eine erneute Codierung beschäftigt. Der erste Wert für eine erneute Codierung zeigt einen illegalen Befehl an, wie es in der V9- Architektur spezifiziert ist. Der zweite Wert für eine erneute Codierung 01 zeigt einen legalen und gültigen Befehl an. Die letzten zwei codierten Werte werden für eine zukünftige Verwendung reserviert. Das obere Bit ist für alle Einheiten außer IPCG unsichtbar und wird für die Parität verwendet.
  • Für CALL-Befehle und Befehle für eine bedingte Verzweigung werden Verzweigungsversätze in ein Verzweigungszielsegment und das Cntl-Bit erneut codiert. Es gibt vier Formate von Verzweigungsversätzen in V9: sechzehn, neunzehn, zweiundzwanzig und dreißig Bits. Die Sechzehn-Bit-Form wird für eine Verzweigung am Registerwert (Brvl) verwendet. Die Neunzehn-Bit-Form wird für V9-Versionen von Bcc und FBcc (vorhergesagte Formen) verwendet. Die Zweiundzwanzig-Bit-Form wird für VS-Versionen von BCC und FBcc verwendet. Die Dreißig-Bit-Form wird für CALL bzw. einen Aufruf verwendet.
  • Alle Versätze sind mit Vorzeichen versehen bzw. bezeichnet (Zweier-Komplement). Der Versatz sollte um zwei Bits nach links verschoben und dann mit einem Vorzeichen auf vierundsechzig Bits erweitert werden, bevor er zum PC des Verzweigungsbefehls addiert wird.
  • Ein erneutes Codieren erfolgt durch ein Vor-Addieren des PC zum Versatz und ein darauf folgendes erneutes Codieren der Ausführung des höchsten Bits, das kein Vorzeichen ist. Das Bit, "das kein Vorzeichen ist", ist als das Bit genau unterhalb des Vorzeichenbits des Versatzes definiert. Beispielsweise werden für einen Zweiundzwanzig-Bit-Versatz Bits [20 : 0] der V9-Befehle zu Bits [22 : 2] des PC der Verzweigung addiert, was Sum[20 : 0] bildet. Die Ausführung dieser Operation wird "Übertrag" genannt. Ein Bit [21] der V9-Verzweigung ist das Vorzeichenbit. Für einen von einem Cache außerhalb des Bits geholten Befehl, wie beispielsweise dem Cache 109, 111, ersetzt Sum[20 : 0] das ursprüngliche Operationscodefeld [20 : 0], d. h. die aktuellen unteren 21 Bits des Ziels werden im (Eingabe/Ausgabe- oder I/O-)Cache auf dem Chip 701 gespeichert. Das Bit [21] und Cntl werden gemäß der folgenden Tabelle verglichen: Tabelle 3 Neucodierungsformat-Übertragsberechnung
  • Die Spalte, die mit "Bedeutung" bezeichnet ist, zeigt den Effekt an den obersten 41 Bits von PC (PC[63 : 23]) an: +0 bedeutet Addieren von nichts; "+1" bedeutet Addieren von Eins zu PC[63 : 23] und "-1" bedeutet Subtrahieren von Eins von PC[63 : 23]. Ein ähnlicher Prozess tritt für andere.
  • Breitenversätze auf. Ein Neucodieren eines Versatzes wird verwendet, um eine Verzweigungszielberechnung in R PC und R_IN zu beschleunigen. Keine anderen V9-Befehle werden neu codiert, die andere als die Verzweigungen sind. Schließlich werden nun 4 · 35 Bits einer Befehlsinformation während des HOL-Zyklus verteilt, und zwar eher als 4 · 42 Bits. Die Befehlsneucodierung kann in etwa 3 ns durchgeführt werden, was während der Pipelinestufe vor einem HOLEN eine Zykluszeit von 10 ns zulässt.
  • In Fig. 10 ist ein Blockdiagramm von HOL- und Ausgabeeinheiten 301, 309 der CPU 103 in Zusammenhang mit einem Holzyklus gezeigt. Während eines Befehlszugriffsteils des Holzyklus werden Befehle von entweder dem primären I/O- Cache 701 oder Hervorhol-Puffern 305 geholt und zur Multiplexeinheit 1001 geführt bzw. dirigiert. Während eines Transport/Verteilungs-Teils des Holzyklus werden geholte Befehle zum Decodier/Absetz-Block 1003 verteilt, der innerhalb der Ausgabeeinheit 309 angeordnet ist. Während eines Decodier/Rotations-Teils des Holzyklus werden Befehle innerhalb des Decodier/Rotations-Blocks 1003 decodiert und gedreht, wie es nachfolgend ausführlicher diskutiert wird. Während eines Einstell- und Zeitversatzteils des Holzyklus werden decodierte und gedrehte Befehle durch einen Befehlslatchblock 1005 innerhalb der Ausgabeeinheit 309 zwischengespeichert.
  • Bei einem Ausführungsbeispiel der CPU 103 sind drei Decodier- Absetz-Blöcke 1003 implementiert:
  • - IMX_DECODE - die IMATRIX und die BRU bedienend
  • - FX DECODE_DISPATCH
  • - fx_need_decode :2x - DFMFXU bedienend
  • - fx_op_decodie :2x - DFMFXU bedienend
  • - fxrf_type_decode :4x - FXRF bedienend
  • - fxrf_decode :4x - FXRF bedienend
  • - fx_slot_select_decode :1x - FX_DECODE_DISPATCH bedienend
  • - FP_DECODE_DISPATCH
  • - Isu_need_decode :2x - DFMLSU bedienend
  • - Isu_op_decode :2x - DFMLSU bedienend
  • - fxagen_need_decode :2x - DFMFXAGEN bedienend
  • - fxagen_op_decode :2x - DFMFXAGEN bedienend
  • - fp_need_decode :2x - DFMFPU bedienend
  • - fp_op_decode :2x - DFMFPU bedienend
  • - fprf_decode :4x - FPRF bedienend
  • - fp_slot_select_decode :1x - FP_DECODE_DISPATCH bedienend
  • Bei einem weiteren Ausführungsbeispiel der CPU 103 sind vier Decodier/Absetz-Blöcke 1003 implementiert:
  • - IMX_DECODE - IMATRIX- und R_IN-Einheiten bedienend
  • - BRU_DECODE - die Verzweigungseinheitsblöcke in R_PC bedienend
  • - FP_DECODE_DISPATCH - FPRF, LSAGEN, DFMFPU, DFMLSU bedienend
  • - FX_DECODE_DISPATCH - FXRF und DFMFXU bedienend
  • Transport- und Verteilungszeiten werden basierend auf der Entfernung zwischen den Befehls-Latchschaltungen und den beabsichtigten Zielorten von Befehlsdaten variieren. Eine Einstellzeit ist als -0,2 ns mit einem Takt-Zeitversatz von 0,3 ns angenähert worden. Jeder Decodier/Rotations-Block 1003 sollte nicht mehr als -4 ns für alle Befehlsdrehungen und
  • - decodierungen innerhalb eines gegebenen Zyklus zuteilen, um eine Zykluszeit von 10 ns zu erfüllen.
  • Bei einem Ausführungsbeispiel der CPU 103 können die folgenden Signale über den Chip logisch verteilt werden: Tabelle 4 Holzyklussignale
  • In Fig. 11 ist ein Blockdiagramm einer Befehlsrotations- Logikschaltung 1101 innerhalb einer Ausgabeeinheit 309 gezeigt, die zum richtigen Ausgeben von Befehlen in der Reihenfolge verwendet wird, die bei jeweiligen Zielort- Absetz/Decodier-Einheiten erforderlich ist. Vier Befehls- (INSTxx-)Signale werden optional gleichzeitig durch Decodierer 1103, 1105, 1107, 1109 decodiert. Nach der Decodieroperation werden Befehle in 2 : 1-Multiplexern (muxes) 1111, 1113, 1115, 1117 mit früher empfangenen Befehlen multiplext, die von der unteren Gruppe von 4 : 1-Muxes 1119, 1121, 1123, 1125 ausgegeben werden. Jedes Bit vom ISELECT [3 : 0]-Steuersignal wird zum Steuern von einem der 2 : 1-Muxes 1111, 1113, 1115, 1117 verwendet, z. B. das am wenigsten signifikante Bit des ISELECT-Signals steuert, das Multiplexen von auf INST00 basierenden Befehlen. Jedes Bit von ISELECT[nn] ist so definiert, dass "1" dem jeweiligen Multiplexer 1111-1117 signalisiert, INSTnn auszuwählen, und "0" eine Auswahl des früheren INSTnn bedeutet, welches von dem jeweiligen unteren 4 : 1-Multiplexer 1119-1125 ausgegeben wird.
  • Dieses Multiplexen wird an Signalen in einer physikalischen Speicherreihenfolge durchgeführt. Zum Ausgeben von Befehlen in einer PC-spezifischen Ausgabenreihenfolge werden die Befehle aus einer physikalischen Speicherreihenfolge gedreht. Die Befehlsbusse, die als INSTxx-Busse bezeichnet sind, identifizieren die physikalische Speicherreihenfolge jedes Busses. Das IROTATE-Vektorsignal zeigt die Anzahl von Adressen zum Drehen der INSTxx-Busse zum Entwickeln der PCspezifischen Ausgabenreihenfolge an. Eine Tabelle 5 listet die Drehung von Befehlen in Bezug auf das IROTATE-Signal in die Ausgabenreihenfolge und jeweilige Befehlsschlitze auf. Tabelle 5 IROTATE-Zustandsspezifikation
  • Die Befehlsdrehung in einer Ausgabenreihenfolge wird bei 4 : 1- Multiplexern 1127, 1129, 1131, 1133 gemäß dem IROTATE- Steuersignal durchgeführt, wie es in Tabelle 5 gezeigt ist. Das IROTATE-Signal wird aus dem dritten und dem vierten Bit eines Architektur-Programmzählers erzeugt.
  • Wenn sie einmal in einer Ausgabenreihenfolge angeordnet sind, werden die Befehle in Latch-Schaltungen bzw. Zwischenspeichern (Latchx oder Ausgabeschlitz x) 1135, 1137, 1139, 1141 zwischengespeichert. Die Ausgabe dieser Latch- Schaltungen werden während des Ausgabezyklus zur Logikschaltung in der jeweiligen Reservierungsstation 317-323 geführt. Zusätzlich wird die Ausgabe der Latch-Schaltungen zu 4 : 1-Multiplexern 1119-1125 geführt, um die Befehle unter Verwendung einer Kombination aus dem IROTATE-Signal vom vorherigen Taktzyklus, zwischengespeichert durch ein Inversrotations-(IROTATE-)Latch 1143, und einer Abbildungs- Logikschaltung von einer Ausgabenreihenfolge zu einer Reihenfolge eines physikalischen Speichers zu entdrehen. Jeder durch einen Wert des IROTATE-Signals spezifizierte Drehungszustand bzw. Rotationszustand hat eine eindeutige Korrespondenz zu einem anderen Drehungszustand, der die in einer Ausgabenreihenfolge angeordneten Befehle zu für einen physikalischen Speicher angeordneten Befehlen entdreht. Die Abbildungs-Logikschaltung entwickelt ein unROTATE-Signal basierend auf dem IROTATE-Signal des früheren Holzyklus, wie es in Tabelle 6 gezeigt ist, und führt das unROTATE-Signal zu jeweiligen Multiplexern 1119-1125 über Pfade zu, die vom Ausgang des IROTATE-Latchs 1143 anschließen. Das unROTATE- Signal befiehlt Multiplexern 1119-1125, die für eine Ausgabe angeordneten Befehle so zu drehen, dass die Ausgangsbefehle von den Multiplexern 1119-1125 für einen physikalischen Speicher angeordnet sind. Es wird auf die nachfolgende Tabelle Bezug genommen: Tabelle 6 Entdrehungs-Abbildungslogik
  • Zum Darstellen, wie eine Befehlsdrehung bei Befehls- Latchschaltungen durchgeführt wird, soll die folgende Codesequenz betrachtet werden:
  • PC = 0 i0
  • PC = 1 i1
  • PC = 2 i2
  • etc.
  • in Bezug auf Tabelle 7. Tabelle 7 Befehlssequenz
  • Während des Zyklus 6 zeigt die Tabelle 7, dass ein Ende einer Cache-Leitung erreicht wurde, was in einer Befehlsausgabeblase im Zyklus 7 resultiert, jn zeigt Befehlsworte entsprechend der vorherigen Cache-Leitung an.
  • Wie es aus einer Tabelle 8 erkannt werden kann, ist IROTATE gleich APC[3 : 2]. Tabelle 8 Wahrheitstabelle für IROTATE [1 : 0]
  • Der Wert des ISELECT[3 : 0]-Signals ist abhängig von Werten von ISSUE_VALID[3 : 0]- und APC[3 : 2]-Steuersignalen, wie es in Tabelle 9 gezeigt ist. Eine Wahrheitstabelle ist nachfolgend gezeigt: Tabelle 9 Wahrheitstabelle für ISELECT[3 : 0]
  • Zusätzliche Signale, die den Wert des ISELECT-Signals beeinflussen können, enthalten eine Cache- Leitungsunterbrechung und ein Beginnen von Maschinensynchronisationssignalen. Die Implementierung der Tabelle 9 kann optimiert werden, um Cache- Leitungsunterbrechungen zu handhaben, und sollte dann optimiert werden, wenn sie aus einer Maschinensynchronisation herauskommt, um Blockierungssituationen zu verhindern.
  • Eine Rotations-Logikschaltung 1101 (SREGnx4Ds) kann eine Schnittstellenspezifikation haben, wie sie in Tabelle aufgelistet ist. Tabelle 10 SREGnx4D-Schnittstellenspezifikation
  • Gemäß Fig. 12 weist jedes Speicherelement 1201 der Rotationsschaltung 1101 vier separate Flip-Flops A, B, C, D mit einer Rotationslogik auf. Die Ausgabe von den Flip-Flops A, B, C, D, 1203 entspricht Befehlsschlitzen in der CPU 103. Da die CPU 103 versucht, bis zu vier Befehlen pro Zyklus auszugeben und abzusetzen, müssen Befehlszwischenspeicherungen am Ende des HOL-Zyklus mit abgesetzten Befehlsworten aktualisiert werden. Die Rotationsschaltung 1101 lässt zu, dass die Befehls- Latchschaltung Befehlsbits von irgendeiner von acht möglichen Quellen (vier Speicherbits und vier neue Bits bei Dateneingaben) zu irgendeinem der vier Befehlsschlitze bewegt. Als Ergebnis weist dort, wo "n" gilt, jede SREGnx4D ein Minimum von nx4 Flip-Flops auf. Zusätzliche Flip-Flops sind zum Zwischenspeichern der Steuersignale erforderlich.
  • In Fig. 13 ist ein Zeitdiagramm 1301 für die Operation der Rotationsschaltung 1101 während eines einzigen Taktzyklus "tcyc" 1303 gezeigt. Ein Takt-(CLK-) Signal 1305 ist zusammen mit bezüglich einer Ausgabe angeordneten Ausgangsbefehls- (Q[n : 0][A : D])-Signalen 1307, bezüglich eines physikalischen Speichers angeordneten Eingangsbefehls-(D[n : 0][a : D])-Signal 1309 und IROTATE/ISELECT-Signalen 1311 gezeigt. Aus der Tabelle 11 liefert v "tcq" eine Anfangszeit, ab welcher gültige Befehle ausgegeben werden, liefert "tsu" eine Endzeit für einen Empfang von gültigen Befehlen und liefert "tcontrol" eine Endzeit für gültige Steuersignale. Tabelle 11 Zeittabelle für die SREGnx4D-Logikschaltung
  • In Fig. 14 ist ein Blockdiagramm eines Gleitkomma- (FP-)Decodier/Absetz-Blocks 1401 innerhalb der Ausgabeeinheit 309 und eine Verbindung zur Rotationsschaltung 1101 gezeigt. Ungleich der IMATRIX-, BRU-, Festkomma-Registerdateien- (FXRF-) und Gleitkomma-Registerdateien- (FPRF-)Decodier/Absetz-Blöcke erfordert der FP- Decodier/Absetz-Block 1401 (und gleichermaßen der FX- Decodier/Absetz-Block) nur Attribute von den ersten zwei Befehlen, die durch die Befehls-Latchschaltungen gehalten werden, welche möglicherweise zu der jeweiligen Reservierungsstation abgesetzt werden können, die einer Ausführungseinheit zugeordnet ist.
  • Attribute werden in Attributenregistern 1403 decodiert und gespeichert. Eine zusätzliche Stufe eines Multiplexens wird durch Multiplexer 1405, 1407 durchgeführt, bevor Befehlspakete während des AUSGABE-Zyklus abgesetzt werden. Vor einem Absetzen bzw. Abfertigen identifiziert eine Schlitz Auswahl-Logikschaltung 1409 die ersten zwei Befehle, die in dem Vier-Befehls-Ausgabefenster gehalten werden, welche vom richtigen Typ zum Absetzen zu der geeigneten Reservierungseinheit sind, die der Ausführungseinheit zugeordnet ist. Sowohl die Attributen- als auch Typen- (FPU_INST[3 : 0])-Bits von den Befehls-Latchschaltungen werden durch IROTATE- und ISELECT-Signalen gleich der früheren Diskussion gesteuert.
  • In den Fig. 15A-C sind Blockdiagramme von verschiedenen Rotations/Decodier-Systemen 1501 gezeigt. In einigen Fällen können Befehle, die während des Holzyklus verteilt und in der Rotationsschaltung (SREGnX4Ds) 1101 zwischengespeichert sind, veraltet werden. Beispielsweise werden während eines Zyklus i zwischengespeicherte Befehle basierend auf einer Zustandsinformation während des Zyklus i decodiert. Da Befehle im Zwischenspeicher bzw. in der Latch-Schaltung für mehrere Zyklen sitzen können, können die decodierten Befehlsattribute veraltet oder inkonsistent werden. Ein weiteres Beispiel einer Veraltetheit kann während einer Registerkennungsumwandlung von Architektur zu Logik (A2L) auftreten. Während eines Zyklus i enthält Zustandinformation CWP = 2. Eine Umwandlung wird basierend auf dem Wert von INSTxx im Zyklus i durchgeführt, und neue Registerkennungen bzw. - tags werden in die Befehls-Latch-Schaltung geschrieben. Zwei Befehle werden im Zyklus i + 1 ausgegeben, wenn sich CWP zu Eins ändert. Befehle werden in der Befehls-Latch-Schaltung vom vorherigen Zyklus bleiben, und die bleibenden bzw. übrigen (oder nicht verwendeten) zwei Befehle werden zum Schlitz0 gedreht. Diese Befehle sind nun veraltet, da sich CWP zu Eins geändert hat.
  • Zum Vermeiden des Problems der Veraltetheit kann eines der in Fig. 15B oder 15C gezeigten Ausführungsbeispiele verwendet werden. Ein Decodier/Absetz-System 1501 der Fig. 15B zeigt einen Befehlsdecodierblock 1503 der Befehls-Latch-Schaltung der Rotationsschaltung 1101 folgend. Da ein Decodieren in jedem Zyklus durchgeführt wird, gibt es kein Problem mit inkonsistenten oder veralteten Attributen. Dieses System kann eine Ausgabe von Befehlsattributen im AUSGABE-Zyklus verzögern. Ein alternatives System 1501 der Fig. 15B zeigt einen Rotations-Logikblock 1505 vor dem Befehlsdecodierblock 1503. Ein Decodieren erfolgt daher nach einer Drehung bzw. Rotation, was eine Neubewertung von Befehlsattributen in jedem Zyklus erzwingt. Zusätzlich betrachtet dieses System 1501 eine Modifikation der Logikschaltung (SREGnX4D) 1101, so dass ein Zwischenspeichern von nicht decodierten Befehlswerten in den SREGnX4D-Registers auftritt.
  • In Fig. 16 ist ein Blockdiagramm der Bewegung von Befehlen innerhalb des Prozessors 103 während Hol- und Ausgabezyklen gezeigt. In einer Mehrfachbefehls-Ausgabemaschine hängt das Fortschreiten der PC-Adresse von der Anzahl von ausgegebenen Befehlen ab. Beispielsweise gibt es in einer 4-Befehls- Ausgabemaschine vier Befehlszwischenspeicherungen oder Schlitze (Schlitz0, Schlitz1, Schlitz2 und Schlitz3) 1135, 1137, 1139, 1141. Diese Befehlsschlitze werden in einer Prioritätsreihenfolge ausgegeben, in welcher der Schlitz0 eine höhere Priorität als der Schlitz1, der Schlitz2 oder der Schlitz3 hat. Der Schlitz1 eine höhere Priorität als der Schlitz2 oder der Schlitz3 hat, und der Schlitz2 eine höhere Priorität als der Schlitz3 hat. Jedoch werden die aus dem Cache geholten Befehle nicht zu diesen Befehlsschlitzen in derselben Prioritätsreihenfolge geführt, die oben angegeben ist. Beispielsweise gibt es in einer Vier-Befehls- Ausgabemaschine vier Cache-Bänke (Bank0, Bank1, Bank2, Bank3) 1601, 1603, 1605, 1607. Wenn die PC-Adresse fortschreitet, hat das Fortschreiten eine der folgenden Möglichkeiten: +0, +1, +2, +3, +4, und auf die Auswahl einer gegebenen Adresse hin werden die Inhalte der Cache-Bänke auf dem Befehlsbus angeordnet. Wie es in Fig. 16 gezeigt ist, werden dann, wenn die PC-Adresse um +2 fortschreitet, die Inhalte der Adresse 02, 03, 04, 05 auf dem Befehlsbus angeordnet. Da die Adresse 02 in der Cache-Bank 2 1605 gefunden wird, wenn ein unrichtiger Befehl in den Befehlsschlitz2 angeordnet wird, wird ein in der Bank0 1601 gefundener Befehl E in den Schlitz0 1135 angeordnet, der eine höhere Priorität hat. Dies würde in einer unrichtigen Befehlsausgabe während des Ausgabezyklus resultieren. Daher erfordern die geholten Befehle vor dem Ausgabezyklus eine Drehung von einer Reihenfolge eines physikalischen Speichers in eine Ausgabenreihenfolge, so dass die geholten Befehle von den richtigen Befehlsschlitzen 1135-1141 ausgegeben. In der Tabelle 12 ist ein einfaches Verfahren zum Multiplexen vor Befehlen von einer Hol-Reihenfolge in eine Ausgabe- Reihenfolge gezeigt. Tabelle 12 Ausgegebene Befehle, PC-Adresse und Multiplexsteuerungen
  • Es ist folgendes zu beachten: Ox = ALTESx, NX = NEUESx
  • Ein Beispiel der Operation des Prozessors 103 mit einer Rotationsschaltung 1101 während der Hol- und Ausgabezyklen ist in den Tabellen 13 und 14 gezeigt. Tabelle 13 Beispiel für Cache-Bank
  • Die Tabelle 13 zeigt die Inhalte des in vier Bänken gespeicherten Caches 701 Tabelle 14 Beispiel für Holen/Drehen/Ausgaben
  • Gemäß der Tabelle 14 wird der PC anfangs bei der Adresse 00 ausgewählt, und somit sind die. Inhalte des Caches bei dieser Adresse 0, 1, 2, 3. Diese Befehle werden dann während des Holzyklus in einen Befehl Schlitz0, Schlitz1, Schlitz2, Schlitz3, zwischengespeichert. Die ersten zwei Befehle (0, 1) werden ausgegeben, was zulässt, dass der PC um zwei oder die Adresse 10 weitergeschaltet wird. Die CPU 103 liest Befehle vom Cache Bank 0, Bank 1, Bank 2, Bank 3, die jeweils die Befehle 4, 5, 2, 3 enthalten. Basierend auf dem ISELECT- Signal werden die Befehle 4, 5 durch Multiplexer 1111, 1113 multiplext, und die Befehle 2, 3 werden aus den Entdrehungs- Multiplexern 1123, 1125 ausgewählt. Das IROTATE-Signal dreht dann die Befehle in eine Ausgaben-Reihenfolge, d. h. 2, 3, 4, 5, so dass die Befehle jeweils in den Befehl Schlitz0, Schlitzl, Schlitz2, Schlitz3 zwischengespeichert werden. Ein Befehl (der Befehl 2) wird während des Ausgabezyklus ausgegeben. Somit schaltet der PC um Eins weiter. Basierend auf diesem PC liest die CPU 103 Befehle aus dem Cache, der jeweils die Befehle 4, 5, 6, 3 enthält. Basierend auf dem ISELECT-Signal wird INSTR06 durch den Multiplexer 1115 multiplext, und INSTR04, INSTR05, INSTR03 werden von entdrehten Multiplexern 1119, 1121, 1125 ausgewählt. Das IROTATE-Signal dreht dann Befehle in eine Ausgaben- Reihenfolge: 3, 4, 5, 6. Der Prozess dauert an, bis alle Befehle geholt und ausgegeben worden sind.

Claims (7)

1. Verfahren zum Koordinieren der Befehlsausgaben in einem parallelen Befehlsverarbeitungssystem mit einem parallelen Befehlsprozessor (101) mit einem adressierbaren Speicher (131, 109, 111, 305, 701), welcher einen Satz von sequentiell ausführbaren Befehlen beinhaltet, wobei das Verfahren die folgenden Schritte aufweist:
Gleichzeitiges Holen eines ersten Untersatzes von Befehlen aus dem adressierbaren Speicher;
Drehen (1127, 1129, 1131, 1133) des ersten Untersatzes der Befehle, erhalten in physikalischer Speicherreihenfolge, welche sich auf den adressierbaren Speicher bezieht, in eine Ausgabereihenfolge, wobei die Ausgabereihenfolge eine vorbestimmte Reihenfolge zum Durchführen des Befehlssatzes ist, und wobei der gedrehte erste Untersatz aus Befehlen als ausgabegeordnete Befehle bezeichnet werden; und
Verriegeln (1135, 1137, 1139, 1141) der ausgabegeordneten Befehle, bis ausgewählte der ausgabegeordneten Befehle ausgegeben werden.
2. Verfahren nach Anspruch 1, wobei das Holen und das Drehen in einem einzelnen Uhrzyklus vervollständigt werden.
3. Verfahren nach Anspruch 1 mit den folgenden Schritten:
Ausgeben einer ausgewählten Anzahl der ausgabegeordneten Befehle zur Ausführung;
Drehen (1119, 1121, 1123, 1125) einer verbleibenden Anzahl von nicht ausgegebenen Befehlen in physikalische Speicherreihenfolge;
gleichzeitiges Holen eines zweiten Satzes von multiplen Befehlen aus dem adressierbaren Speicher;
Mischen (1111, 1113, 1115, 1117) der nicht ausgegebenen Befehle, gedreht in physikalische Speicherreihenfolge, mit dem zweiten Befehlssatz;
wiederholtes Ordnen (1127, 1129, 1131, 1133) der gemischten Befehle in physikalische Speicherreihenfolge; und
Drehen der wiedergeordneten Befehle in Ausgabereihenfolge vor der Ausgabe zur Durchführung.
4. Paralleles Befehlsverarbeitungssystem zum Koordinieren der Ausgabe von Befehlen in einem parallelen Befehlsprozessor (111) mit einem adressierbaren Speicher (131, 109, 111, 305, 701) mit einem Satz von sequentiell ausführbaren Befehlen, wobei das System folgendes beinhaltet:
einen ersten Satz von Sortierern (1127, 1129, 1131, 1133), welche mit dem adressierbaren Speicher (131, 109, 111, 305, 701) verbunden sind und welche einen ersten Untersatz der Befehle in eine Ausgabereihenfolge drehen, die gleichzeitig geholt worden sind und in physikalischer Speicherreihenfolge erhalten worden sind, welche sich auf den adressierbaren Speicher (131, 109, 111, 305, 701) bezieht, wobei die Ausgabereihenfolge eine vorbestimmte, Reihenfolge zum Ausführen des Befehlssatzes ist, und wobei der erste Untersatz der Befehle als ausgabegeordnete Befehle bezeichnet wird/- und
einen Satz von Riegeln (1135, 1137, 1139, 1141), welche mit dem ersten Satz von Sortierern (1127, 1129, 1131, 1133) verbunden sind und die ausgabegeordneten Befehle halten, bis ausgewählte der ausgabegeordneten Befehle ausgegeben werden.
5. System nach Anspruch 4, mit
einem Satz von Mischern (1111, 1113, 1115, 1117), welche den adressierbaren Speicher (109, 111) mit dem ersten Satz von Sortierern (109, 111, 305, 701) verbinden und einen geholten Untersatz der Befehle erhalten; und
einem zweiten Satz von Sortierern (1119, 1121, 1123, 1125), welche die Riegel (1135, 1137, 1139, 1141) mit den Mischern (109, 111, 305, 701) verbinden und nicht ausgewählte Befehle, die von den Riegeln (1135, 1137, 1139, 1141) erhalten worden sind, in physikalische Speicherreihenfolge drehen; wobei nach der physikalischen Speicherordnung die nicht ausgewählten Befehle als adressgeordnete, nicht ausgewählte Befehle bezeichnet werden;
wobei der zweite Satz von Sortierern (1119, 1121, 1123, 1125) die adressgeordneten, nicht ausgewählten Befehle an die Mischer (1111, 1113, 1115, 1117) sendet, wobei die adressgeordneten, nicht ausgewählten Befehle und die geholten Befehle in physikalische Speicherreihenfolge gemischt werden;
wobei die Mischer (1111, 1113, 1115, 1117) die gemischten Befehle an den ersten Satz von Sortierern (1127, 1129, 1131, 1133) senden.
6. System nach Anspruch 5, wobei der Prozessor (101) Auswahlsignale (ISELECT) und Drehsignale (IROTATE) zur Verfügung stellt zum Auswählen von Befehlen, die mittels der Mischer (1111, 1113, 1115, 1117) bzw. der ersten Sortierer (1127, 1129, 1131, 1133) empfangen worden sind, wobei der adressierbare Speicher (701) in einen Satz von Bänken organisiert ist, wobei der Befehlssatz sequentiell in Ausführreihenfolge über die Bänke hinüber gespeichert ist, und wobei das System Folgendes beinhaltet:
Einen Satz von parallelen Speicherelementen (1103, 1105, 1107, 1109), welche den adressierbaren Speicher (701) mit den Mischern (1111, 1113, 1115, 1117) verbinden, die geholten Untersätze der Befehle von dem adressierbaren Speicher (701) holen und die geholten Untersätze der Befehle an die Mischer (1111, 1113, 1115, 1117) übergeben; wobei jedes der parallelen Speicherelemente (1103, 1105, 1107, 1109) einer der Bänke zugeordnet ist und einem entsprechenden der Mischer (1111, 1113, 1115, 1117); und
eine Nichtdreheinheit (1143), welche das Drehsignal (IROTATE) zum Entwickeln eines Nichtdrehsignals (IROTATE_Q/unROTATE) empfängt, um die Auswahl der Befehle mittels der ersten Sortierer (1127, 1129, 1131, 1133) umzukehren und um das Nichtdrehsignal (IROTATE_Q/unROTATE) an die zweiten Sortierer (1119, 1121, 1123, 1125) weiter zu liefern, um eine Auswahl von Befehlen zu befehlen, die mittels der zweiten Sortierer (1119, 1121, 1123, 1125) empfangen worden sind;
wobei jeder der Mischer (1111, 1113, 1115, 1117) einen Eingangsbefehl von einem entsprechenden der Speicherelemente (1103, 1105, 1107, 1109) empfängt und von einem der zweiten Sortierer (1119, 1121, 1123, 1125), wobei das Auswahlsignal (ISELECT) die Auswahl eines der erhaltenen Befehle zur Ausgabe an die ersten Sortierer (1127, 1129, 1131, 1133) befiehlt;
wobei jeder der ersten Sortierer (1127, 1129, 1131, 1133) Befehle von jedem der Mischer (1111, 1113, 1115, 1117) empfängt, wobei das Drehsignal (IROTATE) die Auswahl von einem der erhaltenen Befehle befiehlt, die an einen zugehörigen der Riegel (1135, 1137, 1139, 1141) ausgegeben werden;
wobei jeder der zweiten Sortierer (1119, 1121, 1123, 1125) Befehle von jedem der Riegel (1135, 1137, 1139, 1141) empfängt, wobei das Nichtdrehsignal (IROTATE_Q) die Auswahl von einem der empfangenen Befehle befiehlt, der an einen zugehörigen der Mischer (1111, 1113, 1115, 1117) ausgegeben wird.
7. System nach Anspruch 4, mit einem externen Speicher (131), welcher einen Satz von Befehlen beinhaltet, die eine vorbestimmte Ausführreihenfolge haben, in adressierbaren Speicherorten, wobei der Prozessor (101) mit dem externen Speicher (131) verbunden ist; und mit einer Eingabe/Ausgabe-Einrichtung (149), welche ebenfalls mit dem Prozessor (101) verbunden ist, und welche Informationen von dem Prozessor (101) empfängt und Informationen an den Prozessor (101) sendet; wobei der Prozessor (101) eine Ausgabeeinheit (309) beinhaltet, welche mit dem externen Speicher verbunden ist, welche Ausgabeeinheit (309) den ersten Platz von Sortierern (1127, 1129, 1131, 1133) und den Satz von Riegeln (1135, 1137, 1139, 1141) aufweist.
DE69623461T 1995-06-01 1996-05-31 Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem Expired - Lifetime DE69623461T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US45704995A 1995-06-01 1995-06-01
PCT/US1996/008255 WO1996038783A1 (en) 1995-06-01 1996-05-31 Method and apparatus for rotating active instructions in a parallel data processor

Publications (2)

Publication Number Publication Date
DE69623461D1 DE69623461D1 (de) 2002-10-10
DE69623461T2 true DE69623461T2 (de) 2003-07-24

Family

ID=23815247

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69623461T Expired - Lifetime DE69623461T2 (de) 1995-06-01 1996-05-31 Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem

Country Status (5)

Country Link
US (1) US5838940A (de)
EP (1) EP0829045B1 (de)
JP (1) JP3597540B2 (de)
DE (1) DE69623461T2 (de)
WO (1) WO1996038783A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049369A (ja) * 1996-08-07 1998-02-20 Ricoh Co Ltd データ処理装置
US6334213B1 (en) * 1998-01-20 2001-12-25 Preview Systems Merging of separate executable computer programs to form a single executable computer program
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6345286B1 (en) * 1998-10-30 2002-02-05 International Business Machines Corporation 6-to-3 carry-save adder
US6807624B1 (en) * 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
JP3554211B2 (ja) * 1998-12-17 2004-08-18 富士通株式会社 マイクロプログラムを用いた命令制御装置および方法
US6345351B1 (en) 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6665708B1 (en) 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6351802B1 (en) * 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US6785714B1 (en) * 2000-09-28 2004-08-31 Microsoft Corporation System and method for employing slot level locking of a cache
WO2003025929A1 (en) 2001-09-14 2003-03-27 Seagate Technology Plc Prioritizing commands in a data storage device
US7825935B1 (en) * 2001-11-30 2010-11-02 Nvidia Corporation System, method and computer program product for using textures as instructions for graphics processing
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
US8806505B1 (en) * 2008-06-30 2014-08-12 Bank Of America Corporation Service and project request processing within a business enterprise
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8635566B2 (en) * 2011-12-20 2014-01-21 Advanced Micro Devices, Inc. Parity error detection verification
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
US10372458B2 (en) * 2015-04-01 2019-08-06 Huawei Technologies Co., Ltd Method and apparatus for a self-clocked, event triggered superscalar processor
US9645637B2 (en) 2015-09-04 2017-05-09 International Business Machines Corporation Managing a free list of resources to decrease control complexity and reduce power consumption
US9977677B2 (en) 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
GB2572954B (en) * 2018-04-16 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for prefetching data items

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1183275A (en) * 1981-10-02 1985-02-26 Martin J. Schwartz Byte addressable memory for variable length instructions and data
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
EP0363176B1 (de) * 1988-10-07 1996-02-14 International Business Machines Corporation Prozessoren für wortorganisierte Daten
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JPH052484A (ja) * 1991-06-24 1993-01-08 Mitsubishi Electric Corp スーパースカラプロセツサ
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5564118A (en) * 1992-11-12 1996-10-08 Digital Equipment Corporation Past-history filtered branch prediction
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
US5519864A (en) * 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism

Also Published As

Publication number Publication date
WO1996038783A1 (en) 1996-12-05
EP0829045A1 (de) 1998-03-18
DE69623461D1 (de) 2002-10-10
US5838940A (en) 1998-11-17
JP3597540B2 (ja) 2004-12-08
EP0829045B1 (de) 2002-09-04
JP2001500641A (ja) 2001-01-16

Similar Documents

Publication Publication Date Title
DE69623461T2 (de) Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem
DE69230554T2 (de) Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
DE69508303T2 (de) Superskalarmikroprozessor mit einer Vorrichtung zur Namenänderung und Beförderung einer Operandenflagge und Verfahren zur Bearbeitung von RISC-ähnliche Funktionen in diesem Superskalarmikroprozessor
DE69231762T2 (de) Risc-prozessor mit dehnbarer architektur
DE69518362T2 (de) Wiedersynchronisierung eines Superskalarprozessors
DE69521647T2 (de) Datenstapel und Austauschbefehl
DE69232113T2 (de) Hochleistungsarchitektur für risc-mikroprozessor
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69607760T2 (de) Ungeordnete lade-/speicher-ausführungssteuerung
DE69504135T2 (de) Einrichtung zur Aktualisierung von Programmzählern
DE69408769T2 (de) Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
Sharangpani et al. Itanium processor microarchitecture
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69429061T2 (de) Superskalarmikroprozessoren
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
USH1291H (en) Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
DE69507975T2 (de) Verarbeitungssystem und -verfahren
DE102018006735A1 (de) Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array
US7603497B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
EP0437044A2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
US6643767B1 (en) Instruction scheduling system of a processor
US5826069A (en) Having write merge and data override capability for a superscalar processing device

Legal Events

Date Code Title Description
8364 No opposition during term of opposition