DE19781995C2 - Prozessor mit einer Wiederhol-Architektur - Google Patents

Prozessor mit einer Wiederhol-Architektur

Info

Publication number
DE19781995C2
DE19781995C2 DE19781995A DE19781995A DE19781995C2 DE 19781995 C2 DE19781995 C2 DE 19781995C2 DE 19781995 A DE19781995 A DE 19781995A DE 19781995 A DE19781995 A DE 19781995A DE 19781995 C2 DE19781995 C2 DE 19781995C2
Authority
DE
Germany
Prior art keywords
command
execution
data
core
instructions
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 - Fee Related
Application number
DE19781995A
Other languages
English (en)
Other versions
DE19781995T1 (de
Inventor
David J Sager
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE19781995C2 publication Critical patent/DE19781995C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3824Operand accessing
    • G06F9/383Operand 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Die vorliegende Erfindung betrifft einen Mikroprozessor nach dem Oberbegriff des Patentanspruchs 1 bzw. ein Verfah­ ren zum Ausführen von Befehlen in einem Mikroprozessor mit einer Wiederhol-Architektur zum Erleichtern von daten-speku­ lierenden Operationen.
Fig. 1 veranschaulicht einen Mikroprozessor 100 aus dem Stand der Technik. Der Mikroprozessor enthält einen I/O- Ring, welcher bei einer ersten Taktfrequenz betrieben wird, und einen Ausführungskern, welcher bei einer zweiten Takt­ frequenz arbeitet. Beispielsweise kann der Intel-486DX2 sei­ nen I/O-Ring bei 33 MHz und seinen Ausführungskern bei 66 MHz bei einem 2 : 1-Verhältnis (1/2-Bus), der Intel DX4 seinen I/O-Ring bei 25 MHz und seinen Ausführungskern bei 75 MHz bei einem 3 : 1-Verhältnis (1/3-Bus) und der Intel-Pentium®- OverDrive®-Prozessor seinen I/O-Ring bei 33 MHz und seinen Ausführungskern bei 22,5 MHz bei einem 2,5 : 1-Verhältnis (5/2-Bus) betreiben.
Ein anderer Mikroprozessor ist aus der US-Patentschrift 5,421,021 bekannt. Dieser Mikroprozessor arbeitet nur bei einer Taktfrequenz.
Eine Unterscheidung kann getroffen werden zwischen "I/O- Operationen" und "Ausführungsoperationen". Beispielsweise führt beim DX2 der I/O-Ring I/O-Operationen aus, wie bei­ spielsweise das Puffern, Bus-Treiben, Empfangen, Paritäts­ überprüfen oder andere Operationen, die der Kommunikation mit der chip-externen Welt zugeordnet sind, während der Aus­ führungskern Ausführungsoperationen durchführt, wie bei­ spielsweise Addition, Multiplikation, Adreßerzeugung, Vergleiche, Rotation und Verschieben, sowie andere "verarbeitende" Bearbeitungen.
Der Prozessor 100 kann wahlweise einen Taktvervielfacher enthalten. In diesem Fall kann der Prozessor automatisch die Geschwindigkeit seines Ausführungskerns nach einem externen, langsameren Takt einstellen, der seinem I/O-Ring zur Verfü­ gung gestellt wird. Dies kann die Anzahl der erforderlichen Pins verringern. Alternativ kann der Prozessor einen Takt­ teiler enthalten, wobei in diesem Falle der Prozessor die I/O-Ringgeschwindigkeit in Abhängigkeit von einem externen Takt, der dem Ausführungskern zur Verfügung gestellt wird, einstellt.
Diese Taktvervielfachungs- und Taktteilerfunktionen sind für die Zwecke dieser Erfindung gleich, so daß der Begriff "Takt-Vervielfacher/Teiler" hier verwendet wird, um entweder einen Vervielfacher oder einen Teiler zu bezeichnen. Der fachmännische Leser versteht, wie externe Takte ausgewählt und zur Verfügung gestellt und davon ausgehend vervielfacht oder geteilt werden. Deshalb werden spezielle Taktvertei­ lungsnetzwerke und die Details der Taktvervielfachung und -teilung nicht ausdrücklich veranschaulicht. Darüber hinaus ist es nicht erforderlich, daß die Taktvervielfacher/Teiler- Einheiten auf ganzzahlige Vielfache des Taktes eingeschränkt sind; sie können auch beispielsweise eine 2 : 5-Taktung aus­ führen. Schließlich brauchen die Taktvervielfacher/Teiler- Einheiten auch überhaupt nicht auf ein festes Verhältnis der Bustaktung eingeschränkt zu sein, sondern können bei einigen Ausführungsbeispielen flexibel asynchron und/oder program­ mierbar sein, wie beispielsweise beim Vorsehen eines P/Q- Taktschemas.
Das Grundmotiv für eine derartige Erhöhung von Taktfre­ quenzen ist die Reduktion der Befehlsverzögerung. Die Aus­ führungsverzögerung eines Befehls kann als diejenige Zeit definiert werden, die von dem Zeitpunkt, zu dem die Eingabe­ operanden des Befehls für seine Ausführung bereitstehen müs­ sen, bis zu dem Zeitpunkt vergeht, zu dem sein Ergebnis bereitsteht, so daß es von einem weiteren Befehl verwendet werden kann. Es sei unterstellt, daß ein Teil eines Pro­ gramms eine Sequenz von N Befehlen I1, I2, I3 . . . ., IN ent­ hält. Ferner sei angenommen, daß IN+1 als Teil seiner Einga­ ben das Ergebnis der In für sämtliche n von 1 bis N - 1 erfor­ dert. Dieser Teil des Programms kann darüber hinaus belie­ bige weitere Befehle enthalten. Dann kann man sehen, daß dieses Programm nicht in einer kürzeren Zeit als T = L1 + L2 + L3 + . . . + LN ausgeführt werden kann, wobei Ln die Ver­ zögerung des Befehls In für n von 1 bis N ist. Selbst dann, wenn der Prozessor in der Lage ist, eine sehr große Anzahl von Befehlen parallel auszuführen, bleibt T tatsächlich eine untere Grenze für die Zeit zum Ausführen dieses Teils des Programms. Um dieses Programm schneller auszuführen, ist es äußerst wichtig, die Verzögerungen der Befehle zu verkürzen.
Man kann den gleichen Sachverhalt von einem geringfügig anderen Standpunkt aus betrachten. Es sei definiert, daß ein Befehl In "im Fluge" (in Bearbeitung) von dem Zeitpunkt an ist, zu dem er fordert, daß seine Eingabeoperanden bereit­ stehen, bis zu dem Zeitpunkt, zu dem sein Ergebnis bereit­ steht, um von einem weiteren Befehl verwendet zu werden. Ein Befehl In ist folglich in Bearbeitung für eine Zeitdauer Ln = An . C, wobei An die oben definierte Verzögerung von In, diesmal aber in Zyklen ausgedrückt, ist. C ist die Zyklus­ zeit. Ein Programm führe N Befehle, wie oben ausgeführt, aus und benötige M "Zyklen" oder Zeiteinheiten, dies zu tun. Von jedem Standpunkt aus gesehen, ist es sehr wichtig, die Aus­ führungsverzögerung soweit wie möglich zu verringern.
Die durchschnittliche Verzögerung kann in üblicher Weise definiert werden als
1/N . (L1 + L2 + L3 + . . . LN) = C/N . (A1 + A2 + A3 + . . . + AN) . fj sei die Anzahl von Befehlen, die sich während eines Zyklus j in Bearbeitung befinden. Dann kann man die Parallelität P als die durchschnittliche Anzahl der für das Programm in Bear­ beitung befindlichen Befehlen bzw. als 1/M . (f1 + f2 + f3 + . . . fM) definieren.
Man beachte, daß f1 + f2 + f3 + . . . fM = A1 + A2 + A3 + . . . AN ist. Beide Seiten dieser Gleichung stellen Wege zum Zählen der Anzahl von Zyklen dar, in welchen Befehle in Bearbeitung sind, wobei dann, wenn in einem gegebenen Zyklus x Befehle in Bearbeitung sind, dieser Zyklus als x Zyklen zählt.
Jetzt sei die "durchschnittliche Bandbreite" B als die Gesamtzahl N von ausgeführten Befehlen geteilt durch die benötigte Zeit M . C definiert bzw., mit anderen Worten, als B = N/(M . C) definiert.
Man kann leicht sehen, daß P = L . B ist. In dieser Formel ist L die Durchschnittsverzögerung für ein Programm, B ist seine durchschnittliche Bandbreite und P seine durchschnitt­ liche Parallelität. Man beachte, daß B aussagt, wie schnell das Programm ausgeführt wird. Es wird in Befehlen pro Sekunde gemessen. Wenn das Programm N Befehle hat, werden N/B Sekunden benötigt, um es auszuführen. Der Zweck eines schnelleren Prozessors besteht genau in dem Ziel, ein höhe­ res B zu erreichen.
Man beachte jetzt, daß ein Erhöhen von B entweder eine Erhöhung der Parallelität B oder eine Absenkung der durch­ schnittlichen Verzögerung L erfordert. Es ist gut bekannt, daß die Parallelität B, die ohne weiteres für ein Programm ausgenutzt werden kann, begrenzt ist. Während es zutrifft, daß bestimmte Klassen von Programmen eine große ausnutzbare Parallelität haben, ist bei einer großen Klasse von wichti­ gen Programmen P auf eine ziemlich kleine Zahl begrenzt.
Einen Nachteil bei bekannten Prozessoren besteht darin, daß ihr gesamter Ausführungskern darauf beschränkt ist, bei der gleichen Taktgeschwindigkeit zu arbeiten. Dies schränkt einige Komponenten innerhalb des Kerns in der Art eines "schwächsten Gliedes" oder "langsamsten Pfades" ein.
In den 60er und 70er Jahren gab es zentrale Verarbei­ tungseinheiten, in welchen ein Multiplizier- oder Dividier- Co-Prozessor bei einer Frequenz getaktet wurde, die höher war als die der anderen Schaltungen in der zentralen Verar­ beitungseinheit. Diese zentralen Verarbeitungseinheiten waren aus diskreten Bauelementen und nicht aus integrierten Schaltungen oder monolithischen Mikroprozessoren aufgebaut. Aufgrund ihrer Konstruktion als Co-Prozessoren und/oder des Umstandes, daß sie nicht mit dem Hauptprozessor integriert waren, können diese Einheiten nicht als "Sub-Kerne" angese­ hen werden.
Ein anderes Merkmal einiger bekannter Prozessoren ist die Fähigkeit, eine "spekulative Ausführung" durchzuführen. Dies ist auch als "Steuerspekulation" bekannt, weil der Pro­ zessor abschätzt, welchen Weg die Steuerung (Verzweigung) der Befehle gehen wird. Einige Prozessoren führen ein speku­ latives Heranholen und andere, wie beispielsweise der Intel- Pentium-Pro-Prozessor, außerdem eine spekulative Ausführung aus. Die Steuerung spekulierende Prozessoren umfassen Mecha­ nismen zum Wiederherstellen aus fehlvorhergesagten Verzwei­ gungen, um die Programm- und Datenintegrität so aufrechtzu­ erhalten, als ob keine Spekulation stattfinden würde.
Fig. 2 veranschaulicht eine herkömmliche Datenhierar­ chie. Eine Massenspeichereinrichtung, wie beispielsweise eine Festplatte, speichert die Programme und Daten (zusammen als "Daten" bezeichnet), welche dem (nicht gezeigten) Compu­ tersystem zur Verfügung stehen. Eine Untermenge dieser Daten wird in den Speicher, wie beispielsweise einen DRAM, für einen schnelleren Zugriff geladen. Eine Untermenge des DRAM- Inhalts kann in einem Cache-Speicher gehalten werden. Der Cache-Speicher kann selbst hierarchisch sein und einen sekundären (L2-Cache-Speicher) und dahinter einen primären (L1-Cache-Speicher) umfassen, welcher eine Untermenge der Daten aus dem L2 enthält. Schließlich enthalten die physi­ schen Register des Prozessors die kleinste Untermenge der Daten. Wie es gut bekannt ist, können verschiedene Algorith­ men verwendet werden, um zu bestimmen, welche Daten in wel­ chen Ebenen dieser Gesamthierarchie gespeichert sind. Grund­ sätzlich kann man sagen, daß je kürzer die Zeit zurückliegt, zu der ein Datum verwendet worden ist, oder je wahrscheinli­ cher es ist, daß ein Datum bald benötigt wird, desto näher wird es an dem Prozessor gehalten.
Das Vorhandensein bzw. Fehlen gültiger Daten an ver­ schiedenen Punkten der hierarchischen Speicherstruktur hat Auswirkungen auf einen weiteren Nachteil bekannter Prozesso­ ren, die die Steuerung spekulierende Prozessoren einschlie­ ßen. Die verschiedenen Komponenten innerhalb ihres Ausfüh­ rungskerns sind so konstruiert, daß sie nicht eine "Datenspekulation" ausführen können, bei welcher ein Prozes­ sor abschätzt, welche Werte Daten haben werden (oder genau­ er, bei welcher der Prozessor annimmt, daß gegenwärtig ver­ fügbare Datenwerte richtig und identisch denjenigen Werten sind, die sich schließlich ergeben werden, und diese Werte als Eingaben für eine oder mehrere Operationen verwendet), im Unterschied zu einer Abschätzung, welchen Wegverzweigun­ gen genommen werden. Die Datenspekulation kann ein Spekulie­ ren dahingehend umfassen, daß Daten, die gegenwärtig in einem Cache-Speicher verfügbar sind, identisch den wahren Werten sind, die jene Daten haben sollten, oder daß gegen­ wärtig am Ausgang einer Ausführungseinheit verfügbare Daten identisch den wahren Werten sind, die sich ergeben werden, wenn die Ausführungseinheit ihre Operation abschließt, oder dergleichen.
Wie die Wiederherstellungsmechanismen der die Steuerung spekulierenden Prozessoren müssen auch datenspekulierende Prozessoren Mechanismen zum Wiederherstellen aus einer fal­ schen Annahme, daß Datenwerte richtig gewesen sind, aufwei­ sen, um die Programm- und Datenintegrität so zu bewahren, als ob keine Datenspekulation stattfinden würde. Die Daten­ spekulation wird durch das hierarchische Speichersystem kom­ plizierter gemacht, insbesondere wenn es mit einer Mikroar­ chitektur gekoppelt ist, welche verschiedene Taktfrequenzen in verschiedenen Abschnitten der Ausführungsumgebung verwen­ det.
Es ist gut bekannt, daß jeder Prozessor an die Ausfüh­ rung von Befehlen seiner speziellen "Architektur" angepaßt ist. Mit anderen Worten, jeder Prozessor führt einen spezi­ ellen Befehlssatz aus, welcher in einer speziellen Maschi­ nensprache kodiert ist. Einige Prozessoren, wie beispiels­ weise der Pentium-Pro-Prozessor dekodieren diese "Makrobefehle" in "Mikrobefehle" oder "µops", welche als Ma­ schinensprache der Mikroarchitektur gedacht werden können und welche direkt von den Ausführungseinheiten des Prozes­ sors ausgeführt werden. Es ist darüber hinaus bekannt, daß andere Prozessoren, wie beispielsweise die RISC-Prozessoren, direkt ihre Makrobefehle ausführen können, ohne diese in Mi­ krobefehle zu untersetzen. Für die Zwecke der vorliegenden Erfindung soll der Begriff "Befehl" einen beliebigen bzw. sämtliche dieser Fälle abdecken.
Aufgabe der Erfindung ist es, die spekulative Verwendung von Daten in einem schnellen Ausführungskern zu ermöglichen, wenn die Überprüfung der Daten außerhalb des schnellen Da­ tenkerns erst nach der Ausführung abgeschlossen wird.
Diese Aufgabe wird erfindungsgemäß durch einen Mikropro­ zessor mit den Merkmalen des Patentanspruchs 1 bzw. ein Ver­ fahren mit den Merkmalen des Patentanspruchs 15 gelöst.
Die vorliegende Erfindung ist ein Mikroprozessor mit ei­ ner Wiederhol-Architektur mit einem Ausführungskern zum Durchführen einer Datenspekulation beim Ausführen eines Be­ fehls, einer Verzögerungseinheit zum Herstellen einer Kopie des Befehls und zum Halten der Kopie solange, wie der Befehl zum Ausführen benötigt, und einem Überprüfer zum Bestimmen, ob die Datenspekulation falsch war. Sofern die Datenspekula­ tion falsch war, wird die Kopie des Befehls aus der Verzöge­ rungseinheit über einen Puffer zurück zum Ausführungskern für eine Neuausführung gesendet. Ein mit dem Eingang des Ausführungskerns gekoppelter Multiplexer wählt zur Ausfüh­ rung entweder einen ursprünglichen Befehl aus einem Befehls- Cache-Speicher, einen zu wiederholenden Befehl aus der Ver­ zögerungseinheit oder einen erzeugten Befehl aus verschiede­ nen anderen Einheiten, wie beispielsweise den TLB- oder Tag- Einheiten, nach einem Prioritätsschema aus.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
KURZBESCHREIBUNG DER ZEICHNUNGEN
Fig. 1 ist eine Blockdarstellung, die einen bekannten Prozessor veranschaulicht, der einen I/O-Ring und einen Aus­ führungskern aufweist, die bei unterschiedlichen Taktge­ schwindigkeiten arbeiten.
Fig. 2 demonstriert eine hierarchische Speicherstruktur, wie sie im Stand der Technik gut bekannt ist.
Fig. 3 ist eine Blockdarstellung, die den erfindungsge­ mäßen Prozessor veranschaulicht und die eine Mehrzahl von Ausführungskernabschnitten zeigt, die jeweils ihre eigene Taktfrequenz haben.
Fig. 4 ist eine Blockdarstellung, die eine Ausführungs­ form veranschaulicht, bei welcher der Prozessor gemäß Fig. 3 noch einen weiteren Sub-Kern mit seiner eigenen Taktfrequenz enthält.
Fig. 5 ist eine Blockdarstellung, die eine abweichende Ausführungsform veranschaulicht, bei welcher der Sub-Kern nicht innen hineingesetzt ist, wie es in Fig. 4 gezeigt wurde.
Fig. 6 ist eine Blockdarstellung, die eine Aufteilung des Ausführungskerns veranschaulicht.
Fig. 7 ist ein Blockschaltbild, das ein Ausführungsbei­ spiel der Wiederhol-Architektur gemäß der vorliegenden Erfindung veranschaulicht, welche die Datenspekulation gestattet.
Fig. 8 veranschaulicht ein Ausführungsbeispiel der Über­ prüfereinheit der Wiederhol-Architektur.
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
Fig. 3 veranschaulicht den Hochgeschwindigkeits-Sub-Kern 205 des Prozessors 200 gemäß der vorliegenden Erfindung. Der Hochgeschwindigkeits-Sub-Kern enthält die meisten verzöge­ rungsintoleranten Abschnitte der speziellen Architektur und/oder Mikroarchitektur, die von dem Prozessor benutzt wird. Beispielsweise können bei einem Intel-Architektur-Pro­ zessor bestimmte arithmetische und logische Funktionen eben­ so wie ein Daten-Cache-Zugriff diejenigen Operationen sein, die eine Ausführungsverzögerung am wenigsten verzeihen.
Andere Funktionen, welche nicht derart empfindlich gegenüber einer Ausführungsverzögerung sind, können in einem verzögerungstoleranteren Ausführungskerns 210 enthalten sein. Beispielsweise kann bei einem Intel-Architektur-Pro­ zessor die Ausführung von selten ausgeführten Befehlen, wie beispielsweise transzendenten Funktionen, an den langsameren Teil des Kerns delegiert werden.
Der Prozessor 200 kommuniziert mit dem (nicht gezeigten) Rest des Systems über den I/O-Ring 215. Sofern der I/O-Ring bei einer anderen Taktfrequenz arbeitet als der verzöge­ rungstolerante Ausführungskern, kann der Prozessor eine Takt-Vervielfacher/Teiler-Einheit 220 enthalten, welche eine Taktteilung oder -vervielfachung auf irgendeine geeignete Weise und mit einer herkömmlichen Einrichtung zur Verfügung stellt. Da der verzögerungsintolerante Ausführungs-Sub-Kern 205 bei einer höheren Frequenz als der Rest des verzögerung­ stoleranten Ausführungskerns 210 arbeitet, kann es einen Mechanismus 225 zum Liefern einer unterschiedlichen Taktfre­ quenz an den verzögerungsintoleranten Ausführungs-Sub-Kern 205 geben. Bei einer Ausführungsform ist dies eine Takt-Ver­ vielfacher/Teiler-Einheit 225.
Fig. 4 veranschaulicht eine Verfeinerung der in Fig. 3 gezeigten Erfindung. Der Prozessor 250 gemäß Fig. 4 umfaßt den I/O-Ring 215, die Takt-Vervielfacher/Teiler-Einheit 220 und den verzögerungstoleranten Ausführungskerns 210. Jedoch enthält dieser verbesserte Prozessor 250 anstelle des ein­ heitlichen Sub-Kerns (205) und der Takt-Vervielfacher/Tei­ ler-Einheit (225) gemäß Fig. 3 einen verzögerungsintoleran­ ten Ausführungs-Sub-Kern 255 und einen noch verzögerungs­ kritischeren Ausführungs-Sub-Kern 260 mit ihren jeweiligen Takt-Vervielfacher/Teiler-Einheiten 265 bzw. 270.
Dem fachkundigen Lehrer ist es klar, daß dies eine Ver­ anschaulichung einer Hierarchie von Sub-Kernen ist, von denen jeder diejenigen Einheiten enthält, welche mindestens so schnell wie die jeweilige Sub-Kern-Ebene betrieben werden müssen. Der fachkundige Leser wird ferner erkennen, daß die Auswahl, welche Einheiten wie tief in die Hierarchie hinein­ gehen müssen, gemäß den verschiedenen Konstruktionsrandbe­ dingungen getroffen wird, wie beispielsweise der Chip-Flä­ che, der Taktversatzempfindlichkeit, der bis zum Ausgabeda­ tum des Datenbandes verbleibenden Konstruktionszeit und der­ gleichen. Bei einer Ausführungsform kann ein Intel-Architek­ tur-Prozessor nur seine üblichsten Ganzzahl-ALU-Funktionen und Speicherabschnitte seines Daten-Cache in seinem inner­ sten Sub-Kern enthalten. Bei einer Ausführungsform kann der innerste Sub-Kern darüber hinaus die Registerdatei enthal­ ten; obwohl aus Gründen, die diejenigen oben in Verbindung mit Fig. 2 genannten umfassen, es technisch nicht erforder­ lich ist, daß die Registerdatei bei der höchsten Taktfre­ quenz betrieben wird, kann ihre Konstruktion vereinfacht werden, indem sie in einen weiter innen angeordneten Sub- Kern, der streng erforderlich ist, eingeschlossen wird. Beispielsweise kann es effektiver sein, eine Registerdatei doppelt so schnell mit halb so viel Ports herzustellen, als umgekehrt.
Im Betrieb führt der Prozessor eine I/O-Operation am I/O-Ring und bei der I/O-Taktfrequenz aus, um ein Datenele­ ment einzubringen, das gegenwärtig nicht im Prozessor ver­ fügbar ist. Dann kann der verzögerungstolerante Ausführungs­ kern eine Ausführungsoperation an dem Datenelement durchfüh­ ren, um ein erstes Ergebnis zu erzeugen. Dann kann der ver­ zögerungsintolerante Ausführungs-Sub-Kern eine Ausführungs­ operation an dem ersten Ergebnis durchführen, um ein zweites Ergebnis zu erzeugen. Dann kann es sein, daß der verzöge­ rungskritische Ausführungs-Sub-Kern eine dritte Ausführungs­ operation an dem zweiten Ergebnis durchführt, um ein drittes Ergebnis zu erzeugen. Fachleute auf diesem Gebiet verstehen, daß der Fluß der Ausführung nicht notwendigerweise in der strengen Reihenfolge der Hierarchie der Ausführungs-Sub- Kerne durchgeführt werden muß. Beispielsweise kann das neu eingelesene Datenelement sofort zu dem innersten Kern weitergehen und das Ergebnis könnte von dort zu irgendeinem Kern-Abschnitt oder sogar zurück zu dem I/O-Ring zum Rück­ schreiben gehen.
Fig. 5 zeigt ein Ausführungsbeispiel, welches sich ge­ ringfügig von dem gemäß Fig. 4 unterscheidet. Der Prozessor 280 enthält den I/O-Ring 215, die Ausführungskerne 210, 255, 206 und die Takt-Vervielfacher/Teiler-Einheiten 220, 265, 270. Jedoch ist bei diesem Ausführungsbeispiel der verzöge­ rungskritische Ausführungs-Sub-Kern 260 nicht in den verzö­ gerungsintoleranten Ausführungs-Kern 255 hineingesetzt. Bei dieser Ausführungsform führen die Takt-Vervielfacher/Teiler- Einheiten 265 und 270 unterschiedliche Verhältnisse der Ver­ vielfachung durch, um ihren jeweiligen Kernen zu ermögli­ chen, bei unterschiedlichen Geschwindigkeiten zu laufen.
Bei einer weiteren (nicht gezeigten) geringfügig abwei­ chenden Ausführungsform könnten beide dieser Kerne über eine Taktschnittstelle direkt mit dem I/O-Ring oder der externen Umgebung verbunden sein. Bei einer solchen Ausführungsform könnten die Takt-Vervielfacher/Teiler-Einheiten nicht erfor­ derlich sein, sofern separate Taktsignale von außen dem Pro­ zessor zur Verfügung gestellt werden.
Es sei angemerkt, daß die unterschiedlichen Geschwindig­ keiten, bei welchen die verschiedenen Ebenen von Sub-Kernen betrieben werden, Betriebsgeschwindigkeiten sind. Beispiels­ weise bei dem Pentium-Prozessor ist es bekannt, daß be­ stimmte Einheiten heruntergeschaltet werden können, wenn sie nicht in Benutzung sind, indem ihr Takt reduziert oder ange­ halten wird; in diesem Falle läßt der Prozessor den überwie­ genden Teil seines Kerns bei 66 MHz laufen, während ein Sub- Kern, wie beispielsweise die FPU, sich bei im wesentlichen 0 MHz befindet. Während die vorliegende Erfindung in Kombina­ tion mit einer solchen Herunterschalt- oder Taktdrosselungstechnik verwendet werden kann, ist sie nicht auf derartige Fälle beschränkt.
Fachleuten auf dem Gebiet ist es klar, daß nicht-ganz­ zahlige Verhältnissen an beliebigen der Schnittstellen ange­ wendet werden können, und daß die Kombinationen von Taktver­ hältnissen zwischen den verschiedenen Ringen nahezu unbe­ grenzt sind und daß unterschiedliche Grundfrequenzen an dem I/O-Ring verwendet werden könnten. Es ist außerdem möglich, daß die Taktvervielfachungfaktoren über der Zeit nicht kon­ stant bleiben. Beispielsweise kann bei einigen Ausführungs­ formen die Taktvervielfachung, die auf den innersten Sub- Kern angewendet wird, hinauf und hinunter eingestellt wer­ den, beispielsweise zwischen dem Einfachen und dem Dreifa­ chen oder dem Doppelten und Null oder dergleichen, wenn die höhere Frequenz (und wenn folglich der höhere Energiever­ brauch und die höhere Wärmeerzeugung) nicht erforderlich sind. Darüber hinaus kann der Prozessor einer Taktdrosselung oder einem Taktstop insgesamt oder zum Teil unterworfen wer­ den. Oder es ist möglich, daß der I/O-Takt keine konstante Frequenz hat, in welchem Falle die anderen Takte entweder proportional eingestellt werden, oder irgendeine Art eines adaptiven P/Q-Taktschemas implementieren, um ihren gewünsch­ ten Leistungspegel zu halten.
Fig. 6 veranschaulicht einige weitere Details über ein Ausführungsbeispiels des Inhalts des verzögerungskritischen Ausführungs-Sub-Kerns 260 gemäß Fig. 4. (Sie kann außerdem als Veranschaulichung des Inhalts des Sub-Kerns 205 gemäß Fig. 3 oder des Sub-Kerns 255 gemäß Fig. 4 verstanden wer­ den.) Der verzögerungstolerante Ausführungskern 210 enthält Komponenten, welche nicht verzögerungsempfindlich, sondern welche nur von einem Grad des Durchsatzes abhängig sind. In diesem Sinne können die verzögerungstoleranten Komponenten als "Rohrleitung" gedacht werden, deren Aufgabe einfach darin besteht, einen gewissen "Gallonen-pro-Minute"-Durchsatz zur Verfügung zu stellen, wobei ein "dickes Rohr" eben­ so gut ist wie ein "schneller Durchfluß".
Beispielsweise können bei einigen Architekturen die Her­ anhol- und Dekodiereinheiten hinsichtlich der Ausführungs­ verzögerung nicht so fürchterlich anspruchsvoll sein und können somit in den verzögerungstoleranten Kern 210 anstelle des verzögerungsintoleranten Sub-Kerns 205, 255, 260 hinein­ versetzt werden. In ähnlicher Weise kann es sein, daß die Mikrocode- und Registerdatei nicht in dem Sub-Kern enthalten sein muß. Bei einigen Architekturen (oder Mikroarchitektu­ ren) sind die verzögerungsempfindlichsten Stücke die arith­ metisch/logischen Funktionen und der Cache. Bei der in Fig. 6 gezeigten Ausführungsform wird nur eine Untermenge der arithmetischen/logischen Funktionen als ausreichend verzöge­ rungsempfindlich angesehen, so daß es gerechtfertigt ist, sie in den Sub-Kern hineinzubringen, wie es durch die kriti­ sche ALU 300 veranschaulicht ist.
Bei einigen Ausführungsbeispielen umfassen die kriti­ schen ALU-Funktionen Addierer, Subtrahierer und logische Einheiten zum Ausführen von UND, ODER oder dergleichen. Bei einigen Ausführungsbeispielen, welche eine Index-Regi­ steradressierung verwenden, wie beispielsweise die Intel-Ar­ chitektur, umfassen die kritischen ALU-Funktionen darüber hinaus einen kleinen speziellen Verschieber zum Ausführen der Adreßerzeugung durch Skalieren des Indexregisters. Bei einigen Ausführungsbeispielen kann sich die Registerdatei in dem verzögerungskritischen Ausführungskern aus Gründen eines bequemen Entwurfs aufhalten; je schneller der Kernabschnitt ist, in der sich die Registerdatei aufhält, desto weniger Ports benötigt die Registerdatei.
Die Funktionen, welche grundsätzlich verzögerungsemp­ findlicher sind als die "Rohrleitung", sind diejenigen Abschnitte, welche von einer rekursiven Natur sind, oder diejenigen, welche eine Abhängigkeitskette enthalten. Die Ausführung ist ein wesentliches Beispiel dieses Konzepts; die Ausführung neigt dazu, rekursiv zu sein oder Schleifen aufzuweisen und enthält sowohl falsche als auch wahre Daten­ abhängigkeiten sowohl zwischen als auch innerhalb von Schleifen.
Der gegenwärtige Stand der Technik bei dem Hochlei­ stungsscomputerentwurf (z. B. der Pentium-Pro-Prozessor) nutzt bereits den größten Teil des ohne weiteres nutzbaren Parallelismus in einer großen Klasse von wichtigen Niedrig- P-Programmen aus. Es wird außergewöhnlich schwierig oder sogar praktisch unmöglich, P für diese Programme beträcht­ lich zu erhöhen. In diesem Fall gibt es keine Alternative zur Reduktion der durchschnittlichen Verzögerung, sofern es erwünscht ist, einen Prozessor zu bauen, der diese Programme schneller abarbeitet.
Andererseits gibt es bestimmte andere Funktionen, wie beispielsweise die Befehlsdekodierung oder die Registerumbe­ nennung. Während es wesentlich ist, daß diese Funktionen ausgeführt werden, hat der Stand der Technik es fertigge­ bracht, daß die abgelaufene Zeit zum Ausführen dieser Funk­ tionen nur dann einen Einfluß auf die Leistungsfähigkeit hat, wenn eine Verzweigung falsch vorhergesagt worden ist. Eine Verzweigung wird typischerweise im Durchschnitt einmal bei fünfzig Befehlen falsch vorhergesagt. Somit führt eine Nanosekunde mehr beim Dekodieren oder Registerumbenennen zu einen Äquivalent von 1/50 Nanosekunden Erhöhung der durch­ schnittlichen Befehlsausführungsverzögerung, während eine Nanosekunden Erhöhung der zum Ausführen eines Befehls benö­ tigten Zeit die durchschnittliche Befehlsverzögerung um eine Nanosekunde erhöht. Man kann schlußfolgern, daß die Zeit, die beispielsweise benötigt wird, um Befehle zu dekodieren oder Register umzubenennen, signifikant weniger kritisch als diejenige Zeit ist, die zum Ausführen von Befehlen benötigt wird.
Es gibt noch weitere Funktionen, die in einem Prozessor ausgeführt werden müssen. Viele dieser Funktionen werden in noch höherem Maße anteilmäßig verteilt als das Dekodieren und die Registerumbenennung. Bei diesen Funktionen kann es sein, daß eine Erhöhung von einer Nanosekunde der zu ihrer Ausführung benötigten Zeit noch weniger als 1/50 Nanosekunde zur durchschnittlichen Ausführungsverzögerung hinzufügt. Man kann schlußfolgern, daß die Zeit, die zum Ausführen dieser Funktionen benötigt wird, noch weniger kritisch ist.
Wie gezeigt ist, können die anderen ALU-Funktionen 305 an den weniger schnellen Kern 210 relegiert werden. Darüber hinaus muß bei dem in Fig. 6 gezeigten Ausführungsbeispiel nur eine Untermenge des Cache-Speichers sich in dem Sub-Kern aufhalten. Wie veranschaulicht, befindet sich nur der Daten­ speicherabschnitt 310 des Cache-Speichers innerhalb des Sub- Kerns, während die Treffer/Fehlversuch-Logik und die Tags sich in dem langsameren Kern 210 befinden. Dies widerspricht den herkömmlichen Kenntnissen, welche davon ausgehen, daß das Treffer/Fehlversuch-Signal zum gleichen Zeitpunkt wie die Daten benötigt wird. Ein jüngeres Papier besagt, daß das Treffer/Fehlversuch-Signal der begrenzende Faktor der Cache- Geschwindigkeit ist (Austin, Todd M, "Streamlining Data Cache Access with Fast Address Calculation", Dionisios N. Pneumatikatos, Giandinar S. Sohi, Proceedings of the 22nd Annual International Symposium on Computer Architecture, 18. bis 24. Juni 1995, Sitzung 8, Nr. 1, Seite 5). Unglückli­ cherweise ist die Treffer/Fehlversuch-Bestimmung schwieriger und zeitaufwendiger als die einfache Sache des Lesens von Dateninhalten aus Cache-Speicherplätzen.
Darüber hinaus kann der (nicht gezeigte) Befehls-Cache- Speicher vollständig in dem Kern 210 enthalten sein, so daß der Cache 310 nur Daten speichert. Der Befehls-Cache (I- Cache) wird spekulativ zugegriffen. Es ist die Sache der Verzweigungsvorhersage, vorherzusagen, wohin der Ablauf des Programms gehen wird, und auf den I-Cache wird auf der Grundlage dieser Vorhersage zugegriffen. Heutzutage übli­ cherweise verwendete Verzweigungsvorhersageverfahren können den Programmablauf vorhersagen, ohne jemals die Befehle in dem I-Cache gesehen zu haben. Wenn ein solches Verfahren verwendet wird, dann ist der I-Cache nicht verzögerungsemp­ findlich und wird mehr bandbreitenbeschränkt als verzöge­ rungsbeschränkt und kann zu einem Abschnitt des Ausführungs­ kerns mit einer niedrigeren Taktfrequenz relegiert werden.
Die Verzweigungsvorhersage selbst könnte verzögerungs­ empfindlich sein, so daß sie ein guter Kandidat für eine schnellere Zykluszeit in einem der inneren Sub-Kern- Abschnitte wäre.
Auf den ersten Blick könnte man denken, daß der innerste Sub-Kern 205, 255 oder 260 gemäß Fig. 6 folglich die Daten halten würde, welche an der Spitze der Speicherhierarchie gemäß Fig. 2 gespeichert sind, d. h. diejenigen Daten, wel­ che in den Registern gespeichert sind. Jedoch braucht, wie es in Fig. 6 veranschaulicht ist, die Registerdatei nicht im Sub-Kern enthalten zu sein, sondern kann stattdessen in dem weniger schnellen Abschnitt des Kerns 210 gehalten werden. Bei der Ausführungsform gemäß den Fig. 3 oder 4 kann die Registerdatei in irgendeinem der Kernabschnitte 205, 210, 255, 260 gespeichert sein, wie es dem speziellen gewähltem Ausführungsbeispiel paßt. Wie es in Fig. 6 gezeigt ist, besteht der Grund dafür, daß die Registerdatei nicht innerhalb des innersten Kerns enthalten sein muß, darin, daß die Daten, welche sich aus den in der kritischen ALU 300 ausgeführten Operationen ergeben, auf einem Umgehungsbus 315 verfügbar sind, sobald sie berechnet worden sind. Durch geeigneten Betrieb der Multiplexer (in irgendeiner herkömmlichen Art und Weise) können diese Daten für die kritische ALU 300 im nächsten Taktzyklus des Sub-Kerns verfügbar gemacht werden, viel eher, als sie in die Registerdatei geschrieben und dann aus ihr gelesen werden könnten.
In ähnlicher Weise brauchen dann, wenn eine Datenspeku­ lation gestattet ist, d. h. dann, wenn der kritischen ALU gestattet wird, Berechnungen an Operanden auszuführen, wel­ che noch nicht als gültig bekannt sind, Abschnitte des Da­ ten-Cache-Speichers nicht innerhalb des innersten Sub-Kerns enthalten zu sein. Bei dieser Ausführungsform hält der Da­ ten-Cache 310 nur die aktuellen Daten, während die Tref­ fer/Fehlversuch-Logik und die Cache-Tags sich in einem lang­ sameren Abschnitt 210 des Kerns aufhalten. Bei dieser Aus­ führungsform werden die Daten aus dem Daten-Cache 310 über einen inneren Bus 320 zur Verfügung gestellt und in die kri­ tische ALU hineingemultiplext, und die kritische ALU führt Operationen durch, wobei sie annimmt, daß diese Daten gültig sind.
Einige Taktzyklen später kann es sein, daß die Tref­ fer/Fehlversuch-Logik oder die Tag-Logik in dem äußeren Kern signalisiert, daß die spekulierten Daten tatsächlich ungül­ tig sind. In diesem Falle muß eine Einrichtung vorgesehen sein, um den Zustand vor den spekulativen Operationen, wel­ che ausgeführt worden sind, wiederherzustellen. Dies umfaßt nicht nur die speziellen Operationen, welche die falschen spekulierten Daten als Eingabeoperanden verwendeten, sondern darüber hinaus irgendwelche nachfolgenden Operationen, wel­ che die Ausgaben jener spezifischen Operationen als Eingaben verwendeten. Darüber hinaus können die fälschlich erzeugten Ausgaben nachfolgend verwendet worden sein, um Verzweigungs­ bedingungen zu bestimmen, wenn beispielsweise die fälschlich erzeugten Daten als Verzweigungsadresse oder Verzweigungsbe­ dingung verwendet wurden. Sofern der Prozessor eine Steuerspekulation ausführt, kann es darüber hinaus Fehler auch bei diesen Operationen gegeben haben.
Die vorliegende Erfindung schafft einen Wiederholungsme­ chanismus zum Regenerieren aus einer Datenspekulation an Daten, welche sich schließlich als inkorrekt erwiesen haben. Bei einer Ausführungsform kann sich der Wiederholungsmecha­ nismus außerhalb des innersten Kerns aufhalten, da er nicht so sehr verzögerungskritisch ist. Während die Wiederhol- Architektur in Verbindung mit einer Mehrfachtaktgeschwindig­ keits-Ausführungsmaschine beschrieben wird, welche eine Datenspekulation ausführt, ist es klar, daß die Wiederhol- Architektur bei einer großen Vielzahl von Architekturen und Mikroarchitekturen verwendet werden kann, die solche ein­ schließen, welche eine Datenspekulation ausführen und sol­ che, welche dies nicht tun, solche, welche eine Steuerspeku­ lation ausführen, solche, welche dies nicht tun, solche, welche eine Ausführung in der Reihenfolge ausführen und sol­ che, welche eine Außer-der-Reihe-Ausführung durchführen, usw.
Fig. 7 veranschaulicht eine Implementierung einer sol­ chen Wiederhol-Architektur, wobei sie allgemein den Daten­ fluß der Architektur zeigt. Zunächst wird ein Befehl in den Befehls-Cache-Speicher herangeholt. Aus dem Befehls-Cache gelangt der Befehl zu einem Umbenenner, wie beispielsweise eine Register-Alias-Tabelle. Bei ausgeklügelten Mikroarchi­ tekturen, welche eine Datenspekulation und/oder Steuerspeku­ lation gestatten, ist es in hohem Maße erwünscht, die wirk­ liche Maschine von den speziellen Registern, die durch den Befehl angezeigt werden, zu entkoppeln. Dies ist insbeson­ dere bei einer Architektur der Fall, welcher registerarm ist, wie beispielsweise die Intel-Architektur. Umbenenner sind gut bekannt und die Details der Umbenenner sind nicht besonders relevant für ein Verständnis der vorliegenden Erfindung. Ein beliebiger herkömmlicher Umbenenner reicht aus. Es ist wünschenswert, daß es sich um einen Einzel-Wert- und Einzel-Zuweisungs-Umbenenner handelt, so daß jedes Auf­ treten eines gegebenen Befehls in ein unterschiedliches Register schreibt, obwohl der Befehl das gleiche Register spezifiziert. Der Umbenenner stellt einen separaten Spei­ cherplatz für jeden unterschiedlichen Wert, den jedes logi­ sches Register annehmen kann, zur Verfügung, so daß kein derartiger Wert eines beliebigen logischen Registers über eine wohldefinierte Zeitdauer vorzeitig (d. h. bevor das Programm diesen Wert abgehandelt hat) verlorengeht.
Von dem Umbenenner gelangt der Befehl zu einem optiona­ len Einplaner (Scheduler), wie beispielsweise einer Reser­ vierungsstation, wo die Befehle umgeordnet werden, um die Ausführungseffizienz zu verbessern. Der Einplaner ist in der Lage zu erfassen, wenn es nicht gestattet ist, weitere Befehle auszugeben. Beispielsweise kann es sein, daß keine verfügbaren Ausführungs-Slots vorhanden sind, in welche ein nächster Befehl ausgegeben werden könnte. Oder es könnte sein, daß eine ändere Einheit aus irgendeinem Grund den Ein­ planer vorübergehend sperrt. Bei einigen Ausführungsbeispie­ len kann sich der Einplaner in dem verzögerungskritischen Ausführungskern befinden, sofern der spezielle Einplanalgo­ rithmus nur eine einzige Verzögerungserzeugung pro Zyklus einplanen kann und folglich an die Verzögerung der kriti­ schen ALU-Funktionen gebunden ist.
Aus dem Umbenenner oder dem optionalen Einplaner gelangt der Befehl (indirekt über einen Multiplexer, der unten beschrieben werden soll) in den Ausführungskern 205, 210, 255, 260, wo er ausgeführt wird. Nach oder gleichzeitig mit seiner Ausführung wird eine dem Befehl zugeordnete Adresse an den Übersetzungsnachschlagepuffer (TLB) und eine Cache- Tag-Nachschlagelogik (TAG) gesendet. Diese Adresse kann bei­ spielsweise die (physikalische oder logische) Adresse eines Datenoperanden sein, welchen der Befehl erfordert. Aus der TLB- und der TAG-Logik werden die angesprochene physikali­ sche Adresse und die in dem zugegriffenen Cache-Speicher­ platz dargestellte physikalische Adresse zu der Tref­ fer/Fehlversuch-Logik weitergeleitet, welche bestimmt, ob der zugegriffene Cache-Speicherplatz tatsächlich die gewünschten Daten enthält.
Bei einer Ausführungsform gibt die Ausführungslogik dann, wenn der ausgeführte Befehl den Speicher liest, die höchste Priorität dem Erzeugen möglicherweise nur eines Abschnitts der Adresse, der aber ausreicht, um die Daten in dem Hochgeschwindigkeits-Daten-Cache nachzuschlagen. Bei dieser Ausführungsform wird die partielle Adresse mit der höchsten Priorität benutzt, um Daten aus dem Daten-Cache zu gewinnen, und es wird nur mit einer sekundären Priorität eine vollständige virtuelle Adresse, bzw. im Falle der Intel-Architektur, eine vollständige lineare Adresse, erzeugt und an die TLB- und Cache-TAG-Nachschlagelogik gesendet.
Weil die kritischen ALU-Funktionen und der Daten-Cache sich in dem innersten Sub-Kern, oder zumindest in einem Abschnitt des Prozessors, welcher bei einer höheren Taktrate als die TLB- und TAG-Logik und die Treffer/Fehlversuch-Logik läuft, befinden, werden einige Daten bereits aus dem Daten- Cache gewonnen sein und der Prozessor wird bereits den Befehl, welcher diese Daten benötigte, spekulativ ausgeführt haben, wobei der Prozessor angenommen hat, daß die erlangten Daten richtig gewesen sind, und der Prozessor wird wahr­ scheinlich auch zusätzliche Befehle unter Verwendung der Daten und der Ergebnisse des ersten spekulativ ausgeführten Befehls ausgeführt haben.
Folglich umfaßt die Wiederhol-Architektur eine Überprü­ fereinheit, welche die Ausgaben der Treffer/Fehlversuch- Logik empfängt. Sofern ein Fehlversuch angezeigt wird, bewirkt der Überprüfer eine "Wiederholung" des verletzenden Befehls und beliebiger Befehle, welche von ihm abhingen oder welche infolge der fehlerhaften Datenspekulation auf andere Weise falsch waren. Als der Befehl aus der Reservierungssta­ tion an den Ausführungskern übergeben wurde, wurde eine Kopie von ihm an eine Verzögerungseinheit weitergeleitet, welche eine Verzögerung zur Verfügung stellt, welche mit derjenigen Zeit übereinstimmt, die der Befehl benötigt, um durch den Ausführungskern, TLB/TAG- und Treffer/Fehlversuch- Einheiten hindurchzugelangen, so daß die Kopie bei dem Über­ prüfer zu etwa dem gleichen Zeitpunkt eintrifft, zu dem die Treffer/Fehlversuch-Logik dem Überprüfer mitteilt, daß die Datenspekulation falsch war. Bei einen Ausführungsbeispiel benötigt dies etwa 10 bis 12 Takte des inneren Kerns. In Fig. 7 ist die Verzögerungseinheit als außerhalb des Über­ prüfers befindlich gezeigt. Bei anderen Ausführungsbeispie­ len kann die Verzögerungseinheit als Teil der Überprüfers eingeschlossen sein. Bei einigen Ausführungsbeispielen kann sich der Überprüfer innerhalb des verzögerungskritischen Ausführungskerns befinden, sofern der Überprüfungsalgorith­ mus an die kritische ALU-Geschwindigkeit gebunden ist.
Wenn der Überprüfer feststellt, daß die Datenspekulation falsch war, sendet der Überprüfer die Kopie des Befehls für eine "Wiederholung" an den Anfang zurück. Der Überprüfer leitet die Kopie des Befehls an eine Puffereinheit weiter. Als unabhängiges Ereignis kann es geschehen, daß die TLB/TAG-Einheit den Puffer darüber informiert, daß der TLB/TAG einen erzeugten Befehl in den aktuellen Zyklus ein­ fügt. Diese Information wird von dem Puffer benötigt, damit der Puffer weiß, daß er keinen weiteren Befehl in den glei­ chen Zyklus erneut einsetzen soll. Sowohl der TLB/TAG als auch der Puffer informieren darüber hinaus den Einplaner, wenn sie Befehle einfügen, so daß der Einplaner weiß, daß er keinen Befehl in demselben Zyklus absenden kann. Diese Steuersignale sind nicht gezeigt, werden aber von Fachleuten auf diesem Gebiet verstanden.
Die Puffereinheit stellt ein Latch-Speichern des kopier­ ten Befehls zur Verfügung, so daß vermieden wird, daß er verlorengeht, sofern er nicht sofort behandelt werden kann. Bei einigen Ausführungsbeispielen können Bedingungen auftre­ ten, unter welchen es nicht möglich ist, die wiederholten Befehle sofort neu einzufügen. Unter diesen Bedingungen hält der Puffer sie, möglicherweise eine große Anzahl von ihnen, bis sie neu eingefügt werden können. Eine derartige Bedin­ gung kann sein, daß es irgendwelche höher priorisierten Funktionen gibt, die die Ausführung beanspruchen könnten, wie beispielsweise dann, wenn die TLB/TAG-Einheit einen erzeugten Befehl, wie oben erwähnt, einfügen muß. Bei eini­ gen anderen Ausführungsbeispielen kann der Puffer nicht erforderlich sein.
Oben wurde erwähnt, daß die Ausgaben des Einplaners dem Ausführungskern indirekt, über einen Multiplexer, zur Verfü­ gung gestellt werden. Die Funktion dieses Multiplexers besteht darin, unter verschiedenen möglichen Quellen von Befehlen, die zur Ausführung gesendet werden, auszuwählen. Die erste Quelle ist selbstverständlich der Einplaner in dem Falle, wenn es sich um einen ursprünglichen Befehl handelt, welcher zur Ausführung gesendet wird. Die zweite Quelle ist die Puffereinheit in dem Falle, wenn es sich um eine Kopie eines Befehls handelt, welcher zur wiederholten Ausführung gesendet wird. Als dritte Quelle ist die TLB/TAG-Einheit veranschaulicht; diese gestattet es der Architektur, "vorgetäuschte Befehle" herzustellen und sie in den Befehls­ strom einzufügen. Beispielsweise kann es für die TLB-Logik oder die TAG-Logik erforderlich sein, daß eine andere Ein­ heit irgendwelche Arbeit für sie ausführt, wie beispielswei­ se das Lesen irgendwelcher Daten aus dem Daten-Cache, wie es erforderlich sein kann, um diese Daten zwangszuräumen oder zum Neuauffüllen des TLB oder zu anderen Zwecken und sie kann dies ausführen, indem sie Befehle erzeugt, welche nicht aus dem wirklichen Befehlsstrom herrühren, und diese Befehle dann wieder an dem Multiplexereingang des Ausführungskerns einfügt.
Das Multiplexersteuerschema kann bei einem Ausführungs­ beispiel ein Prioritätsschema umfassen, bei dem ein Wieder­ holungsbefehl eine höhere Priorität hat als ein ursprüngli­ cher Befehl. Dies ist vorteilhaft, weil ein Wiederholungsbe­ fehl wahrscheinlich älter als der ursprüngliche Befehl in dem ursprünglichen Makrobefehlsfluß ist und ein "blockie­ render" Befehl sein kann, wenn es eine wahre Datenabhängig­ keit gibt.
Es ist wünschenswert, einen wiederholten Befehl so schnell wie möglich zu beenden. Solange es ungelöste Befehle gibt, die zur Wiederholung zurückgesendet worden sind, gibt es bei neuen Befehlen, die abgefertigt werden, eine ziemlich hohe Wahrscheinlichkeit, von irgendetwas Unaufgelöstem abhängig zu sein und folglich bloß zu der Liste der zu wie­ derholenden Befehle hinzugefügt zu werden. Sobald es erfor­ derlich ist, einen Befehl zu wiederholen, neigt dieser eine Befehl dazu, eine lange Kette von Befehlen zu erzeugen, die ihm dabei nachfolgen. Der Prozessor kann schnell in einen Modus gelangen, in dem die meisten Befehle zwei oder dreimal ausgeführt werden, und ein solcher Modus kann für eine gewisse Dauer bestehen bleiben. Folglich ist die Auflösung von wiederholten Befehlen dem Einführen neuer Befehle weit­ aus vorzuziehen.
Jeder neue Befehl, der eingeführt wird, während es zu wiederholende Dinge gibt, ist ein Risiko. Es gibt eine gewisse Wahrscheinlichkeit, daß der neue Befehl unabhängig ist und eine gewisse Arbeit erledigt wird. Andererseits gibt es eine bestimmte Wahrscheinlichkeit, daß der neue Befehl abhängig ist und ebenfalls wiederholt werden muß. Im schlimmsten Fall kann es eine Anzahl von nachfolgenden Befehlen geben, die von dem neuen Befehl abhängig sind, und sämtliche dieser Befehle müssen ebenfalls wiederholt werden; wohingegen dann, wenn die Maschine gewartet hätte, bis die Wiederholungen aufgelöst wurden, sämtliche dieser Befehle nicht zweimal ausgeführt werden mußten.
Bei einer Ausführungsform haben die erzeugten Befehle eine höhere Priorität als die wiederholten Befehle. Dies ist vorteilhaft, weil diese erzeugten Befehle für kritisch wich­ tige und Zeitsensitive Operationen verwendet werden können. Eine derartig sensitive Operation ist beispielsweise eine Zwangsräumung. Nach einem Cache-Fehlversuch kommen neue Daten aus dem L1-Cache. Wenn die Daten eintreffen, müssen sie in den Daten-Cache (L0) so schnell wie möglich gebracht werden. Sofern dies ausgeführt ist, wird das wiederholte Laden gerade die neuen Daten antreffen und jetzt erfolgreich sein. Selbst wenn die Daten beim Heranbringen der Daten nur einen Zyklus zu spät kommen, wird das wiederholte Laden erneut zu früh durchlaufen und muß erneut wiederholt werden. Unglücklicherweise erhält der Daten-Cache-Speicherplatz, in den der Prozessor die Daten hineinbringen will, jetzt die eine und einzige Kopie irgendwelcher Daten, die einige Zeit früher dort hineingeschrieben wurden. Mit anderen Worten, der Speicherplatz ist "dirty" (modifiziert). Es ist erfor­ derlich, die modifizierten Daten hinauszulesen, um sie zu sichern, bevor die neuen Daten eintreffen und an ihre Stelle geschrieben werden. Dieses Auslesen der alten Daten wird "Zwangsräumen" der Daten genannt. Bei einigen Ausführungs­ beispielen gibt es gerade genug Zeit, um die Zwangsräumung abzuschließen, bevor das Schreiben der neuen Daten an ihre Stelle gestartet wird. Die Zwangsräumung wird mit einem oder mehreren erzeugten Befehlen ausgeführt. Wenn sie für nur einen Zyklus aufgehalten werden, so tritt diese Zwangsräu­ mung nicht zeitgerecht auf, um das oben beschriebene Problem zu vermeiden, und folglich muß ihnen die höchste Priorität gegeben werden.
Die Wiederhol-Architektur kann darüber hinaus verwendet werden, um dem Prozessor zu gestatten, praktisch "steckenzubleiben", ohne tatsächlich den Ausführungskern zu verlangsamen oder eine Taktdrosselung oder dergleichen durchzuführen. Es gibt einige Umstände, unter denen es erforderlich wäre, das Front-End und/oder den Ausführungs­ kern anzuhalten, um ein Verlieren der Ergebnisse von Befeh­ len oder andere derartige Probleme zu vermeiden. Ein Bei­ spiel tritt auf, wenn dem Back-End des Prozessors vorüberge­ hend die Ressourcen ausgehen, wie beispielsweise die verfüg­ baren Register, in welche Ausführungsergebnisse geschrieben werden sollen. Andere Beispiele umfassen die Fälle, wenn der externe Bus blockiert ist, wenn ein Cache-Speicher einer oberen Ebene besetzt ist und von einem anderen Prozessor eine Snoop-Operation erfährt, wenn ein Laden oder Speichern eine Seitengrenze überquert, wenn eine Ausnahme auftritt oder dergleichen.
Unter solchen Umständen kann anstelle des Anhaltens des Front-End oder des Drosselns des Ausführungskerns die Wie­ derhol-Architektur sehr einfach verwendet werden, um sämtli­ che Befehle, deren Ergebnisse andernfalls verlorengingen, zur Wiederholung in dem Kreislauf zurückzusenden. Der Aus­ führungskern bleibt bei voller Geschwindigkeit im Betrieb und es sind keine zusätzlichen Pfade erforderlich, um den Front-End anzuhalten, außer den ohnehin Vorhandenen, die dem Multiplexer gestatten, Wiederholungsbefehlen die Priorität gegenüber ursprünglichen Befehlen zu geben.
Es können auch andere dem Anhalten ähnliche Verwendungen der Wiederhol-Architektur vorkommen. Es sei beispielsweise angenommen, daß ein Speicheradressierbefehl einen Fehlversuch in dem TLB erzeugt. Statt die lineare Adresse zu sichern, um sie nach dem Erlangen des richtigen Eintrags in dem TLB zu bearbeiten, kann der Prozessor sie einfach fallen lassen, und anfordern, daß der Speicheradressierbe­ fehl wiederholt werden soll. Bei einem anderem Beispiel kann es sein, daß der Seiten-Fehlversuch-Behandler (nicht gezeigt) besetzt ist. In diesem Fall erinnert sich der Pro­ zessor noch nicht einmal daran, daß er einen Seiten-Wechsel unternehmen muß, sondern findet dies wiederum erneut heraus, wenn die Speicheradresse wiederholt zurückkommt.
Die meisten Fälle des Ausgehens der Ressourcen treten auf, wenn es einen Cache-Fehlversuch gibt. Es könnte sehr gut sein, daß kein Füllpuffer übrig ist, so daß die Maschine noch nicht einmal ein L1-Nachschlagen anfordern könnte. Oder der L1 kann besetzt sein. Wenn ein Cache-Fehlversuch auf­ tritt, könnte die Maschine Daten aus einem Cache-Speicher einer höheren Ebene nachfragen und sie könnte auch einfach die ganze Angelegenheit vergessen und überhaupt nichts tun, um die Situation zu lösen. In beiden Fällen wird der Ladebe­ fehl (oder der Speicheradressierbefehl) wiederholt. Im Unterschied zu einer herkömmlicheren Architektur braucht sich die vorliegende Erfindung nicht an diesen Befehl im Speichersubsystem zu erinnern und sich um ihn zu kümmern. Der Prozessor wird etwas für die Lösung tun, sofern er Res­ sourcen dafür hat. Sofern er die nicht hat, wird er über­ haupt nichts tun, sich noch nicht einmal erinnern, daß ein solcher Befehl von dem Speichersubsystem zu sehen war. Das Speichersubsystem selbst wird niemals irgend etwas für die­ ses Auftreten dieses Befehls tun. Wenn der Befehl erneut ausgeführt wird, dann wird wieder alles neu betrachtet. Im Falle eines Speicheradressierbefehls hat der Befehl seine lineare Adresse an das Speichersubsystem geliefert und es möchte Nichts zurück haben. Bei einer herkömmlicheren Lösung könnte man sagen, daß dieser Befehl erledigt ist und irgend­ welche folgenden Probleme sind Speichersubsystemprobleme, in welchem Falle das Speichersubsystem dann Informationen über die Speicheradresse speichern muß, bis es die Ressourcen erlangt, um sich darum zu kümmern. Die vorliegende Lösung besteht darin, daß das Speicheradressieren wiederholt wird und sich das Speichersubsystem überhaupt nicht daran erin­ nern muß. Hierbei ist es ein wenig klarer, daß der Prozessor die Speicheradresse insbesondere wegen der Unfähigkeit zu ihrer Behandlung im Speichersubsystem wiederholt.
Bei einer Ausführungsform werden dann, wenn ein Befehl wiederholt wird, sämtliche abhängigen Befehle ebenfalls wie­ derholt. Dies kann all jene umfassen, welche eine Ausgabe des wiederholten Befehls als Eingabe verwenden, all jene, welche hinter Steuerflußverzweigungen liegen, welche in Abhängigkeit von dem wiederholten Befehle eingeschlagen wur­ den, usw.
Der Prozessor wiederholt keine Befehle, nur weil sie von einem wiederholten Befehl steuerflußabhängig sind. Der Weg (Thread) der Steuerung wurde vorhergesagt. Der Prozessor folgt stets einem vorhergesagten Weg der Steuerung und weiß niemals während der Ausführung, ob er den richtigen Weg geht oder nicht. Wenn eine Verzweigung eine mangelhafte Eingabe enthält, wird der Verzweigungsbefehl selbst wiederholt. Dies beruht darauf, daß der Prozessor nicht zuverlässig aus der Verzweigung bestimmen kann, ob der vorhergesagte Weg der Steuerung richtig ist oder nicht, da die Eingabedaten an die Verzweigung nicht gültig waren. Keine weiteren Befehle wer­ den wiederholt, nur weil die Verzweigung mangelhafte Daten enthielt. Schließlich - möglicherweise nach vielen Wiederho­ lungen - wird die Verzweigung richtig ausgeführt. Zu diesem Zeitpunkt führt sie aus, was grundsätzlich alle Verzweigun­ gen ausführen: Sie berichtet, ob die vorhergesagte, für diese Richtung eingeschlagene Verzweigung richtig war oder nicht. Wenn sie richtig vorhergesagt war, geht alles seinen normalen Weg weiter. Wenn sie nicht richtig vorhergesagt war, dann gibt es einfach eine Verzweigungsfehlvorhersage; die Tatsache, daß diese Verzweigung irgendwie oft wiederholt worden war, macht keinen Unterschied. Eine falsch vorherge­ sagte Verzweigung kann nicht einfach mit einer Wiederholung repariert werden. Eine Wiederholung kann nur exakt die glei­ chen Befehle ausführen. Wenn eine Verzweigung falsch vorher­ gesagt war, hat der Prozessor wahrscheinlich viele falsche Befehle ausgeführt und muß tatsächlich irgendwelche voll­ ständig anderen Befehle ausführen.
Um dies zusammenzufassen: Ein Befehl wird wiederholt, weil entweder 1) der Befehl selbst aus irgendeinem Grund nicht richtig verarbeitet worden ist, oder wenn 2) die Ein­ gabedaten, die dieser Befehl verwendet, nicht als richtig bekannt sind. Daten sind als richtig bekannt, wenn sie von einem Befehl erzeugt worden sind, der selbst richtig verar­ beitet wurde und bei dem sämtliche Eingabedaten als richtig bekannt waren. Bei dieser Definition werden Verzweigungen nicht als Befehle angesehen, die irgendwas mit dem Steuerab­ lauf zu tun haben, sondern als Befehle, die Daten behandeln, welche einfach interessante Dinge an den Front-End des Pro­ zessors berichten, aber nicht irgendwelche Ausgabedaten er­ zeugen, die durch irgendeinen anderen Befehl verwendet wer­ den können. Somit kann die Richtigkeit irgendeinen anderen Befehls nichts mit ihnen zu tun haben. Die Richtigkeit des Steuerablaufs wird von einer höheren Autorität behandelt und liegt nicht in der Sphäre der reinen Ausführung und Wieder­ holung.
Fig. 8 veranschaulicht mehr über die Überprüfereinheit. Wiederum wird ein Befehl wiederholt, wenn 1) er nicht rich­ tig verarbeitet worden ist oder wenn 2) er Eingabedaten ver­ wendet hat, die nicht als richtig bekannt sind. Diese zwei Bedingungen geben eine gute Aufteilung für die Erörterung des Betriebs der Überprüfereinheit. Die erste Bedingung hängt von allem ab, daß für den Befehl ausgeführt werden muß. Beliebigen Bestandteilen des Prozessors, die irgendetwas tun müssen, um den Befehl richtig auszuführen, ist es gestattet, "Mist zu bauen" und dem Überprüfer dann zu signa­ lisieren, daß sie die Sache "vermasselt haben". Die erste Bedingung spricht demzufolge über Signale, die potentiell von vielen Orten her in den Überprüfer kommen und die besa­ gen: "Ich habe diesen Befehl vermasselt".
Bei einigen Ausführungsbeispielen ist der häufigste "Patzer" der Ausfall des Daten-Cache-Speichers beim Liefern des richtigen Ergebnisses für ein Laden. Dies wird durch die Treffer/Fehlversuch-Logik signalisiert. Ein weiterer häufi­ ger "Patzer" ist der Ausfall der richtigen Verarbeitung ei­ ner Speicheradresse; dies würde typischerweise sich aus ei­ nem TLB-Fehler bei einer Speicheradresse ergeben, es kann aber auch andere Ursachen geben. Bei einigen Ausführungsbei­ spielen kann es sein, daß der L1-Cache Daten liefert (welche möglicherweise in den L0-Cache gehen und von Befehlen ver­ wendet werden), die einen ECC-Fehler enthalten. Dies würde schnell signalisiert und dann korrigiert werden, wenn es die Zeit gestattet.
In einigen ziemlich seltenen Fällen kann es sein, daß der Addierer zwei Zahlen nicht richtig addieren kann. Dies wird durch die Flag-Logik signalisiert, welche die Addierer kontrolliert. Bei einigen weiteren seltenen Fällen scheitert die Logikeinheit daran, die richtige Antwort zu erhalten, wenn sie eine UND-, XOR- oder eine andere einfache logische Operation ausführt. Dies wird ebenfalls von der Flag-Logik signalisiert. Bei einigen Ausführungsbeispielen kann es sein, daß die Gleitkommaeinheit die ganze Zeit nicht die richtige Antwort erhält, in welchem Fall sie signalisiert, wenn sie eine Gleitkommaoperation "vermasselt" hat. Grund­ sätzlich könnte man diesen Mechanismus für viele Arten von Fehlern verwenden. Er könnte für algorithmische Fehler oder selbst für Hardware-Fehler (Schaltungsfehler) verwendet wer­ den. Unabhängig von der Ursache können immer dann, wenn der Prozessor nicht exakt das tut, was er tun soll, und dieser Fehler erfaßt wird, die verschiedenen Einheiten des Prozes­ sors eine Wiederholung anfordern, indem sie dies dem Über­ prüfer signalisieren.
Die zweite, Wiederholungen verursachende Bedingung, näm­ lich ob Daten als richtig bekannt sind, liegt vollständig in der Verantwortlichkeit des Überprüfers selbst. Der Überprü­ fer enthält die offizielle Liste darüber, welche Daten als richtig bekannt sind. Diese wird manchmal als "Anzeigeta­ fel" bezeichnet. Es liegt in der Verantwortung des Überprü­ fers, sämtliche Eingabedaten für jedes Auftreten einer Befehlsausführung zu betrachten und zu bestimmen, ob sämtli­ che der Eingabedaten als richtig bekannt sind oder nicht. Es liegt ferner in der Verantwortlichkeit des Überprüfers, dies alles für jede Befehlsausführungsinstanz zusammenzurechnen, um zu bestimmen, ob das von der Befehlsausführungsinstanz erzeugte Ergebnis folglich als "richtig bekannt" angesehen werden kann. Wenn das Ergebnis eines Befehls als "als richtig bekannt" angesehen wird, so wird dies auf der Anzeigetafel vermerkt, so daß der Prozessor jetzt neue, als richtig bekannte Daten hat, die als Eingabe für weitere Befehle dienen können.
Fig. 8 veranschaulicht einen beispielhaften Überprüfer, welcher beim Ausführen der Architektur gemäß der vorliegen­ den Erfindung verwendet werden kann. Da die Details des Überprüfers nicht erforderlich sind, um die Erfindung zu verstehen, wird ein vereinfachter Überprüfer veranschau­ licht, um die Anforderungen an einen Überprüfer zu zeigen, die ausreichend sind, damit das Wiederholungssystem richtig arbeitet.
Bei diesem Ausführungsbeispiel wird ein Befehl pro Zyklus verarbeitet. Nachdem ein Befehl ausgeführt worden ist, wird er dem Überprüfer durch die Signale OP1, OP1V, OP2, OP2V, DST und einen Verzögerungsvektor, welcher dem Mikrobefehl auf der Basis des Befehlscodes durch den Deko­ dierer zugewiesen wurde, repräsentiert. Die Signale OP1V und OP2V zeigen an, ob der Befehl einen ersten Operanden bzw. einen zweiten Operanden enthält. Die Signale OP1 und OP2 identifizieren das physikalische Quellregister des ersten bzw. des zweiten Operanden und werden an den Leseadreß-Ports RA1 und RA2 der Anzeigetafel empfangen. Das Signal DST iden­ tifiziert das physikalische Zielregister, in das das Ergeb­ nis des Befehls geschrieben wurde.
Der Verzögerungsvektor weist mit Ausnahme einer 1 in einer Position überall Nullen auf. Die Position der 1 bezeichnet die Verzögerung dieses Befehls. Die Verzögerung eines Befehls ergibt sich daraus, wie viele Zyklen vergehen, nachdem der Befehl seine Ausführung beginnt, bevor ein wei­ terer Befehl seine Ergebnisse verwenden kann. Die Anzeigeta­ fel weist ein Bit Speicherplatz für jedes physikalische Re­ gister in der Maschine auf. Das Bit ist 0, sofern von dem Register nicht bekannt ist, ob es richtige Daten enthält, und es ist 1, sofern von dem Register bekannt ist, daß es richtige Daten enthält.
Der Registerumbenenner, der oben beschrieben wurde, weist diese Register zu. Zu dem Zeitpunkt, zu dem ein physi­ kalisches Register zugewiesen wird, um das Ergebnis eines Befehls zu halten, sendet der Umbenenner die Registernummer an den Überprüfer in Form eines Mehrbit-Signals CLEAR. Die Anzeigetafel setzt dasjenige Anzeigetafel-Bit auf 0, welches von CLEAR adressiert wird.
Der eine oder die beiden Registeroperanden für den gera­ de überprüften Befehl (wie sie von OP1 und OP2 angezeigt werden) werden in der Anzeigetafel nachgeschlagen, um zu sehen, ob sie als richtig bekannt sind, und die Ergebnisse werden als Anzeigetafelwerte SV1 bzw. SV2 ausgegeben. Ein UND-Gatter 350 empfängt den ersten Anzeigetafelwert SV1 und das erste Operand-Gültig-Signal OP1V. Ein weiteres UND-Gat­ ter 355 empfängt in ähnlicher Weise die Signale SV2 und OP2V für den zweiten Operanden. Die Operand-Gültig-Signale OP1V und OP2V bewirken, daß die Anzeigetafelwerte ignoriert wer­ den, sofern der Befehl aktuell nicht die jeweiligen Operan­ den erfordert.
Die Ausgangssignale der UND-Gatter werden dem NOR-Gatter 360 zusammen mit einem externen Wiederholungsanforderungssi­ gnal zur Verfügung gestellt. Das Ausgangssignal des NOR-Gat­ ters wird falsch, wenn entweder ein Operand durch den Befehl angefordert und nicht als richtig bekannt ist oder wenn das externe Wiederholungs-Anforderungssignal angelegt wird. Andernfalls ist das Ausgangssignal wahr. Das Ausgangssignal des NOR-Gatters 360 ist das Überprüferausgangssignal BEFEHL OK. Sofern es wahr ist, wurde der Befehl richtig abgeschlos­ sen und ist bereit, für das Retirement in Betracht gezogen zu werden. Wenn es falsch ist, muß der Befehl wiederholt werden.
Eine Verzögerungsleitung empfängt die Informationen des Zielregisteridentifizierers DST und des Überprüferausgangs­ signals BEFEHL OK für den gerade überprüften Befehl. Die einfache Verzögerungsleitung ist aus Registern (Einzelzyklusverzögerung) und Multiplexern aufgebaut gezeigt. Es ist klar, daß jedes Register und jeder Multiple­ xer Mehrbit-Einrichtungen sind bzw. mehrere Einzelbitein­ richtungen darstellen. Fachleute auf diesem Gebiet werden verstehen, daß zahlreiche andere Arten von Verzögerungslei­ tungen und folglich unterschiedliche Formate von Verzöge­ rungsvektoren verwendet werden können. Die Informationen DST und BEFEHL OK werden in einen Platz der Verzögerungsleitung eingefügt, der durch den Wert des Verzögerungsvektors bestimmt wird. Diese Informationen werden um die erforderli­ che Anzahl von Zyklen gemäß dem Verzögerungsvektor verzögert, und dann werden sie an den Schreib-Port WP der Anzei­ getafel angelegt. Das dem Zielregister DST für den Befehl entsprechende Anzeigetafelbit wird dann gemäß dem Wert von BEFEHL OK geschrieben. Ein Wert von 1 zeigt an, daß der Befehl nicht wiederholt werden mußte, und ein Wert von 0 zeigt an, daß der Befehl wiederholt werden mußte, was bedeu­ tet, daß seine Ergebnisdaten nicht als richtig bekannt sind.
Bei diesem Design wurde angenommen, daß kein Befehl das physikalische Register Null als wirkliches Ziel oder wirkli­ che Quelle aufweist. Sofern es in irgendeinem Zyklus keinen gültigen Befehl gibt, wird der Verzögerungsvektor für diesen Zyklus nur Nullen aufweisen. Dies führt im Endeffekt zu einer Eingabe des physikalischen Registers Null mit der längstmöglichen Verzögerung in die Verzögerungsleitung, was unschädlich ist. In ähnlicher Weise spezifiziert ein Befehl, der kein wirkliches Zielregister aufweist, einen Verzöge­ rungsvektor von ausschließlich Nullen. Es wird ferner ange­ nommen, daß beim Einschalten diese Einheiten für mehrere Zyklen laufen, ohne daß gültige Befehle eintreffen, so daß die Verzögerungsleitung mit Nullen gefüllt wird, bevor der erste wirkliche Befehl einem Zielregister zugewiesen worden ist, und somit, bevor das zugehörige Bit in der Anzeigetafel gelöscht worden ist. Die Anzeigetafel erfordert keine zu­ sätzliche Initialisierung.
Potentiell überprüft dieser Überprüfer einen Befehl pro Zyklus (es sind aber selbstverständlich andere Ausführungs­ beispiele denkbar). Der Zyklus, in welchem ein Befehl über­ prüft wird, beginnt eine feste vorgegebene Anzahl von Zyklen nach dem Zeitpunkt, zu dem dieser Befehl seine Ausführung begann und die Daten eingefangen hat, die er für seine Ope­ randen verwendete. Diese Anzahl von Zyklen ist ausreichend, um dem Signal EXTERNE WIEDERHOLUNGSANFORDERUNG für den Befehl zu gestatten, am Überprüfer einzutreffen, um mit den anderen Informationen über den Befehl verarbeitet zu werden.
Das Signal EXTERNE WIEDERHOLUNGSANFORDERUNG entsteht aus der ODER-Operation von sämtlichen Signalen aus sämtlichen Teilen der Maschine, die Wiederholungsanforderungen erzeugen, die anzeigen, daß der Befehl nicht richtig verarbeitet worden ist. Beispielsweise kann es anzeigen, daß aus dem Daten- Cache-Speicher zurückgegebene Daten aus irgendeinem einer Vielzahl von Gründen, von denen ein Cache-Fehlversuch ein gutes Beispiel ist, nicht richtig gewesen sind.
Es ist für den fachmännischen Leser klar, daß die oben beschriebene spezielle Aufteilung nur der Veranschaulichung dient. Obwohl es vorgeschlagen wurde, daß bestimmte Merkmale in den äußeren Kern 210 relegiert werden können, kann es beispielsweise wünschenswert sein, daß sich bestimmte dieser Merkmale in einem mittleren Abschnitt des Kerns, wie bei­ spielsweise in dem verzögerungsintoleranten Kern 255 gemäß Fig. 4, zwischen dem äußersten Kern 210 und dem innersten Kern 260, aufhalten können. Es ist ebenfalls klar, daß die Erfindung, obwohl sie unter Bezugnahme auf die Intel-Archi­ tektur-Prozessoren beschrieben worden ist, bei einer belie­ bigen Anzahl von alternativen Architekturen, die jeweils eine große Vielzahl von Mikroarchitekturen umfassen, ver­ wendbar ist.

Claims (18)

1. Mikroprozessor mit
einem Ausführungskern (Fig. 7: 205, 255, 260) zum Aus­ führen von Befehlen,
einer Verzögerungseinheit (VERZ.) zum Halten einer Kopie der Befehle für wenigstens einen Taktzyklus,
einem Befehls-Cache-Speicher (I-CACHE) zum Speichern und Liefern von Befehlen, und
einem mit dem Befehls-Cache-Speicher zum Empfangen der Befehle gekoppelten Multiplexer (MUX), dessen Ausgang mit einem Eingang des Ausführungskerns gekoppelt ist, um die Be­ fehle dem Ausführungskern zur Ausführung bereitzustellen,
dadurch gekennzeichnet,
daß der Mikroprozessor eine Wiederhol-Architektur auf­ weist,
daß der Ausführungskern (205, 255, 260) eine Datenspeku­ lation bei der Befehlsausführung durchführt,
daß mit dem Ausführungskern ein Überprüfer gekoppelt ist, der feststellt, ob eine bei einem ausgeführten Befehl durchgeführte Datenspekulation fehlerhaft war, und der mit der Verzögerungseinheit gekoppelt ist, um die Kopie des Be­ fehls zurück an den Ausführungskern für eine wiederholte Ausführung zu senden, sofern die Datenspekulation fehlerhaft war, und
daß ein Eingang des Multiplexers mit dem Überprüfer ge­ koppelt ist, um die Kopie des zu wiederholenden Befehls zu empfangen, wobei der Multiplexer entweder einen nachfolgen­ den Befehl oder die Kopie des zu wiederholenden Befehls an den Ausführungskern zur Ausführung bereitstellt.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeich­ net, daß die Verzögerungseinheit zwischen dem Ausgang des Multiplexers und einem Eingang des Überprüfers eingekoppelt ist, um die Kopie des gehaltenen Befehls eine vorgegebene Anzahl von Taktzyklen später bereitzustellen, wobei die vor­ gegebene Anzahl von Taktzyklen etwa der Zeitverzögerung des Befehls durch den Ausführungskern hindurch entspricht.
3. Mikroprozessor nach Anspruch 2, dadurch gekennzeich­ net, daß der Multiplexer den ursprünglichen Befehlen aus dem Befehls-Cache-Speicher eine erste Priorität und den zu wie­ derholenden Befehlen aus dem Überprüfer eine zweite Priori­ tät zuweist, wobei die zweite Priorität höher als die erste Priorität ist.
4. Mikroprozessor nach Anspruch 1 bis 2, dadurch gekenn­ zeichnet, daß mit dem Multiplexer eine Einrichtung zum Sen­ den von erzeugten Befehlen, die sich nicht in dem Befehls­ fluß aus dem Befehls-Cache-Speicher befinden, an den Ausfüh­ rungskern zur Ausführung gekoppelt ist.
5. Mikroprozessor nach Anspruch 4, dadurch gekennzeich­ net, daß der Multiplexer den ursprünglichen Befehlen aus dem Befehls-Cache-Speicher eine geringe Priorität, den zu wie­ derholenden Befehlen aus dem Überprüfer eine mittlere Prio­ rität und den erzeugten Befehlen eine höchste Priorität zu­ weist.
6. Mikroprozessor nach einem der Ansprüche 1 bis 5, da­ durch gekennzeichnet,
daß ein erster Abschnitt bei einer ersten Taktfrequenz arbeitet und den Ausführungskern und eine Mehrzahl von Regi­ stern enthält, und
daß ein zweiter Abschnitt bei einer zweiten, niedrigeren Taktfrequenz arbeitet und den Überprüfer enthält.
7. Mikroprozessor nach Anspruch 6, dadurch gekennzeich­ net, daß in dem zweiten Abschnitt ein Umbenenner angeordnet ist, wobei der Umbenenner eine Registerzuweisungstabelle aufweist.
8. Mikroprozessor nach einem der Ansprüche 1 bis 7, da­ durch gekennzeichnet, daß der Überprüfer aufweist:
eine Anzeigetafel zum Verfolgen, welche einer Mehrzahl von Registern Inhalte aufweisen, welche als richtig bekannt sind,
eine Verzögerungsleitung, die einen Verzögerungsvektor empfangen kann, der anzeigt, wieviele Taktzyklen nach dem Beginn der Ausführung eines Befehls ein nachfolgender Befehl ein Ergebnis des Befehls verwenden kann, und
eine mit der Anzeigetafel und der Verzögerungsleitung gekoppelte Logikschaltung zum Anzeigen, ob der ausgeführte Befehl richtig abgeschlossen worden ist oder ob der Befehl wiederholt werden muß.
9. Mikroprozessor nach einem der Ansprüche 1 bis 8, ge­ kennzeichnet durch:
einem mit dem Befehls-Cache-Speicher gekoppelten Umbe­ nenner zum Modifizieren der ursprünglichen Befehlen, um in den ursprünglichen Befehlen identifizierte Register umzube­ nennen, und
einen mit dem Umbenenner gekoppelten Einplaner zum Ab­ fertigen der Befehle zur Ausführung,
wobei der Multiplexer einen mit dem Einplaner gekoppel­ ten ersten Eingang zum Empfangen der abgefertigten ursprüng­ lichen Befehle aufweist.
10. Mikroprozessor nach einem der Ansprüche 1 bis 9, da­ durch gekennzeichnet, daß der Ausführungskern eine ALU und einen Daten-Cache-Speicher enthält, wobei der Ausführungs­ kern eine Datenspekulation an den Daten derart ausführt, daß spekulativ die Anwesenheit der Daten in dem Daten-Cache- Speicher angenommen wird.
11. Mikroprozessor nach einem der Ansprüche 1 bis 10, gekennzeichnet durch:
eine mit dem Ausführungskern gekoppelte TLB/Tag-Logik zum Ausführen einer Übersetzungsnachschlageoperation und Tag-Vergleichsoperation an den ausführten Befehlen, und
eine mit der TLB/Tag-Logik gekoppelte Treffer/Fehlver­ such-Logik zum Erfassen, ob Datenoperanden der Befehle in dem Daten-Cache-Speicher vorhanden sind oder nicht,
wobei der Überprüfer mit der Treffer/Fehlversuch-Logik gekoppelt ist, um zu bestimmen, ob die Datenspekulation feh­ lerhaft war.
12. Mikroprozessor nach Anspruch 11, dadurch gekenn­ zeichnet, daß die Verzögerungseinheit eine Kopie eines gege­ benen Befehls an den Überprüfer im wesentlichen zu dem Zeit­ punkt bereitstellt, zu dem die Treffer/Fehlversuch-Logik dem Überprüfer mitteilt, ob die spekulativen Daten in dem Daten- Cache-Speicher nicht vorhanden oder nicht gültig sind, wobei der Überprüfer eine Wiederholung des gegebenen Befehls ver­ anlaßt, indem er die Kopie über den Multiplexer zurück zum Ausführungskern weiterleitet.
13. Mikroprozessor nach Anspruch 11 oder 12, dadurch ge­ kennzeichnet,
daß die TLB/Tag-Logik mit einem dritten Eingang des Mul­ tiplexers gekoppelt ist und der Erzeugung von Befehlen dient, die nicht aus dem Befehls-Cache-Speicher herrühren und die keine zu wiederholenden Befehle sind, und
daß der Multiplexer den erzeugten Befehlen die höchste Priorität zuweist.
14. Mikroprozessor nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet, daß zwischen dem Überprüfer und dem Eingang des Multiplexers eine Puffereinheit vorgesehen ist, um die Kopie des zu wiederholenden Befehls für wenigstens einen Taktzyklus zwischenzuspeichern.
15. Verfahren zum Ausführen von Befehlen in einem Mikro­ prozessor, wobei
Befehle aus einem Befehls-Cache-Speicher einem Ausfüh­ rungskern zur Verfügung gestellt werden,
die Befehle in dem Ausführungskern ausgeführt werden, wobei eine Datenspekulation durchgeführt wird,
während der Ausführung eines Befehls eine Kopie des Be­ fehls gehalten wird,
ein mit dem Ausführungskern gekoppelter Überprüfer be­ stimmt, ob die Datenspekulation fehlerhaft war, und
die gehaltene Kopie für eine erneute Ausführung zurück an den Ausführungskern gesendet wird, sofern der Überprüfer feststellt, daß die Datenspekulation fehlerhaft war.
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß die Kopie in einer Verzögerungseinheit gehalten wird, deren Eingang mit dem Befehls-Cache-Speicher gekoppelt wird und deren Ausgang unter Steuerung des Überprüfers mit dem Eingang des Verzögerungskerns gekoppelt wird, sofern der Überprüfer feststellt, daß die Datenspekulation fehlerhaft war.
17. Verfahren nach Anspruch 16, dadurch gekennzeichnet,
daß die Befehle aus dem Befehls-Cache-Speicher über ei­ nen ersten Eingang einem Multiplexer zur Verfügung gestellt werden,
daß die während der Ausführung eines Befehls gehaltene Kopie des Befehls verzögert einem zweiten Eingang des Multi­ plexers zur Verfügung gestellt wird, und
daß der Multiplexer einen der Eingänge auswählt und den dort zur Verfügung gestellten Befehl dem Ausführungskern zur Verfügung stellt.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß die an den Eingängen des Multiplexers zur Verfügung ge­ stellten Befehle nach einer Priorität ausgewählt werden, wobei den verzögerten Kopien der Befehle eine höhere Priorität gegeben wird als den aus dem Befehls-Cache-Speicher zur Ver­ fügung gestellten Befehlen.
DE19781995A 1996-11-13 1997-10-14 Prozessor mit einer Wiederhol-Architektur Expired - Fee Related DE19781995C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/746,547 US5966544A (en) 1996-11-13 1996-11-13 Data speculatable processor having reply architecture
PCT/US1997/018462 WO1998021684A2 (en) 1996-11-13 1997-10-14 Processor having replay architecture

Publications (1)

Publication Number Publication Date
DE19781995C2 true DE19781995C2 (de) 2002-01-03

Family

ID=25001320

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19781995T Pending DE19781995T1 (de) 1996-11-13 1997-10-14 Prozessor mit einer Wiederhol-Architektur
DE19781995A Expired - Fee Related DE19781995C2 (de) 1996-11-13 1997-10-14 Prozessor mit einer Wiederhol-Architektur

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE19781995T Pending DE19781995T1 (de) 1996-11-13 1997-10-14 Prozessor mit einer Wiederhol-Architektur

Country Status (9)

Country Link
US (1) US5966544A (de)
AR (1) AR008321A1 (de)
AU (1) AU4818597A (de)
DE (2) DE19781995T1 (de)
GB (1) GB2333384B (de)
HK (2) HK1023192A1 (de)
TW (1) TW432294B (de)
WO (1) WO1998021684A2 (de)
ZA (1) ZA979601B (de)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631454B1 (en) 1996-11-13 2003-10-07 Intel Corporation Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US6735688B1 (en) * 1996-11-13 2004-05-11 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6256745B1 (en) 1998-06-05 2001-07-03 Intel Corporation Processor having execution core sections operating at different clock rates
US6212626B1 (en) * 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US7200737B1 (en) 1996-11-13 2007-04-03 Intel Corporation Processor with a replay system that includes a replay queue for improved throughput
US6385715B1 (en) 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US6772324B2 (en) 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6205542B1 (en) * 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6094717A (en) * 1998-07-31 2000-07-25 Intel Corp. Computer processor with a replay system having a plurality of checkers
US20010032307A1 (en) * 1998-12-30 2001-10-18 Joseph Rohlman Micro-instruction queue for a microprocessor instruction pipeline
US6304955B1 (en) * 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
JP2000330785A (ja) * 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法
SE9904685D0 (sv) * 1999-12-17 1999-12-17 Switchcore Ab A programmable packet decoder
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system
US6643767B1 (en) * 2000-01-27 2003-11-04 Kabushiki Kaisha Toshiba Instruction scheduling system of a processor
WO2001061480A1 (en) * 2000-02-14 2001-08-23 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6880069B1 (en) * 2000-06-30 2005-04-12 Intel Corporation Replay instruction morphing
US6981129B1 (en) * 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
SE0004913D0 (sv) * 2000-12-29 2000-12-29 Ericsson Telefon Ab L M Processor
SE0102564D0 (sv) 2001-07-19 2001-07-19 Ericsson Telefon Ab L M Arrangement and method in computor system
US7203817B2 (en) * 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7114059B2 (en) 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US6952764B2 (en) * 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US7069424B2 (en) * 2002-01-02 2006-06-27 Intel Corporation Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality
US6925550B2 (en) * 2002-01-02 2005-08-02 Intel Corporation Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection
US6799257B2 (en) * 2002-02-21 2004-09-28 Intel Corporation Method and apparatus to control memory accesses
US7120780B2 (en) * 2002-03-04 2006-10-10 International Business Machines Corporation Method of renaming registers in register file and microprocessor thereof
US20040078558A1 (en) * 2002-03-25 2004-04-22 Sprangle Eric A. Method and apparatus to process instructions in a processor
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US6934865B2 (en) * 2002-07-09 2005-08-23 University Of Massachusetts Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US6986010B2 (en) * 2002-12-13 2006-01-10 Intel Corporation Cache lock mechanism with speculative allocation
US7325228B1 (en) 2003-04-30 2008-01-29 Hewlett-Packard Development Company, L.P. Data speculation across a procedure call using an advanced load address table
US7103880B1 (en) 2003-04-30 2006-09-05 Hewlett-Packard Development Company, L.P. Floating-point data speculation across a procedure call using an advanced load address table
US7266673B2 (en) * 2003-05-02 2007-09-04 Advanced Micro Devices, Inc. Speculation pointers to identify data-speculative operations in microprocessor
US7363470B2 (en) * 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7165167B2 (en) * 2003-06-10 2007-01-16 Advanced Micro Devices, Inc. Load store unit with replay mechanism
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP2007026392A (ja) * 2005-07-21 2007-02-01 Toshiba Corp マイクロプロセッサ
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20090183035A1 (en) * 2008-01-10 2009-07-16 Butler Michael G Processor including hybrid redundancy for logic error protection
US7865770B2 (en) * 2008-01-10 2011-01-04 Advanced Micro Devices, Inc. Processor including efficient signature generation for logic error protection
US11106466B2 (en) 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5309561A (en) * 1990-09-28 1994-05-03 Tandem Computers Incorporated Synchronous processor unit with interconnected, separately clocked processor sections which are automatically synchronized for data transfer operations
US5421021A (en) * 1989-01-18 1995-05-30 Intel Corporation Circuit including a latching unit for holding instructions during execution for re-execution following exception handling

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5153848A (en) * 1988-06-17 1992-10-06 Bipolar Integrated Technology, Inc. Floating point processor with internal free-running clock
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421021A (en) * 1989-01-18 1995-05-30 Intel Corporation Circuit including a latching unit for holding instructions during execution for re-execution following exception handling
US5309561A (en) * 1990-09-28 1994-05-03 Tandem Computers Incorporated Synchronous processor unit with interconnected, separately clocked processor sections which are automatically synchronized for data transfer operations

Also Published As

Publication number Publication date
AU4818597A (en) 1998-06-03
GB2333384B (en) 2001-12-05
HK1023192A1 (en) 2000-09-01
WO1998021684A3 (en) 2001-07-12
AR008321A1 (es) 1999-12-29
GB9902049D0 (en) 1999-03-17
GB2333384A (en) 1999-07-21
HK1041531B (zh) 2003-02-28
ZA979601B (en) 1999-04-28
DE19781995T1 (de) 1999-08-12
WO1998021684A2 (en) 1998-05-22
TW432294B (en) 2001-05-01
US5966544A (en) 1999-10-12
HK1041531A1 (en) 2002-07-12

Similar Documents

Publication Publication Date Title
DE19781995C2 (de) Prozessor mit einer Wiederhol-Architektur
DE19983330B4 (de) Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE112005002403B4 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE69829693T2 (de) Prozessor mit mehrfachprogrammzählern und ablaufverfolgungspuffern ausserhalb einer ausführungspipeline
DE10304447B4 (de) Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE19782106B4 (de) Daten-Cache mit Datenspeicherung und Tag-Logik bei unterschiedlichen Takten
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE60206555T2 (de) Fehlererkennung von Austauschdaten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 9/30

8607 Notification of search results after publication
D2 Grant after examination
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110502