DE19781995C2 - Prozessor mit einer Wiederhol-Architektur - Google Patents
Prozessor mit einer Wiederhol-ArchitekturInfo
- 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
Links
- 230000003252 repetitive effect Effects 0.000 title claims description 6
- 238000000034 method Methods 0.000 claims description 12
- 239000013598 vector Substances 0.000 claims description 8
- 230000003111 delayed effect Effects 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 16
- 238000003860 storage Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005034 decoration Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 210000004072 lung Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation 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)
- 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.
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.
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.
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.
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.
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ß.
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.
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.
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.
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.
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.
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.
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 |
---|---|---|---|
DE19781995A Expired - Fee Related DE19781995C2 (de) | 1996-11-13 | 1997-10-14 | Prozessor mit einer Wiederhol-Architektur |
DE19781995T Pending DE19781995T1 (de) | 1996-11-13 | 1997-10-14 | Prozessor mit einer Wiederhol-Architektur |
Family Applications After (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) | DE19781995C2 (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)
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 |
US6665792B1 (en) * | 1996-11-13 | 2003-12-16 | Intel Corporation | Interface to a memory system for a processor having a replay system |
US6256745B1 (en) | 1998-06-05 | 2001-07-03 | Intel Corporation | Processor having execution core sections operating at different clock rates |
US6385715B1 (en) | 1996-11-13 | 2002-05-07 | Intel Corporation | Multi-threading for a processor utilizing a replay queue |
US6163838A (en) * | 1996-11-13 | 2000-12-19 | Intel Corporation | Computer processor with a replay system |
US6212626B1 (en) * | 1996-11-13 | 2001-04-03 | Intel Corporation | Computer processor having a checker |
US6735688B1 (en) * | 1996-11-13 | 2004-05-11 | Intel Corporation | Processor having replay architecture with fast and slow replay paths |
US7200737B1 (en) | 1996-11-13 | 2007-04-03 | Intel Corporation | Processor with a replay system that includes a replay queue for improved throughput |
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 |
KR100508320B1 (ko) * | 2000-02-14 | 2005-08-17 | 인텔 코오퍼레이션 | 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서 |
US6880069B1 (en) * | 2000-06-30 | 2005-04-12 | Intel Corporation | Replay instruction morphing |
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 |
US6981129B1 (en) * | 2000-11-02 | 2005-12-27 | Intel Corporation | Breaking replay dependency loops in a processor using a rescheduled replay queue |
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 |
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 |
US7278136B2 (en) * | 2002-07-09 | 2007-10-02 | University Of Massachusetts | Reducing processor energy consumption using compile-time information |
US6970985B2 (en) | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
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 |
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 |
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 |
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)
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)
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 |
-
1996
- 1996-11-13 US US08/746,547 patent/US5966544A/en not_active Expired - Lifetime
-
1997
- 1997-10-14 GB GB9902049A patent/GB2333384B/en not_active Expired - Fee Related
- 1997-10-14 AU AU48185/97A patent/AU4818597A/en not_active Abandoned
- 1997-10-14 DE DE19781995A patent/DE19781995C2/de not_active Expired - Fee Related
- 1997-10-14 WO PCT/US1997/018462 patent/WO1998021684A2/en active Application Filing
- 1997-10-14 DE DE19781995T patent/DE19781995T1/de active Pending
- 1997-10-27 ZA ZA979601A patent/ZA979601B/xx unknown
- 1997-11-03 TW TW086116266A patent/TW432294B/zh not_active IP Right Cessation
- 1997-11-14 AR ARP970105324A patent/AR008321A1/es unknown
-
2000
- 2000-01-19 HK HK00100340A patent/HK1023192A1/xx not_active IP Right Cessation
- 2000-01-19 HK HK02101302.9A patent/HK1041531B/zh not_active IP Right Cessation
Patent Citations (2)
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 |
---|---|
US5966544A (en) | 1999-10-12 |
AR008321A1 (es) | 1999-12-29 |
DE19781995T1 (de) | 1999-08-12 |
TW432294B (en) | 2001-05-01 |
GB9902049D0 (en) | 1999-03-17 |
GB2333384B (en) | 2001-12-05 |
HK1023192A1 (en) | 2000-09-01 |
ZA979601B (en) | 1999-04-28 |
HK1041531A1 (en) | 2002-07-12 |
HK1041531B (zh) | 2003-02-28 |
AU4818597A (en) | 1998-06-03 |
GB2333384A (en) | 1999-07-21 |
WO1998021684A3 (en) | 2001-07-12 |
WO1998021684A2 (en) | 1998-05-22 |
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 | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
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 | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
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 | |
DE69805275T2 (de) | Verfahren und Anordnung zur Reduzierung von Störungen in einer Verzweigungsgeschichtstabelle eines Mikroprozessors | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE60038693T2 (de) | Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor | |
DE69607760T2 (de) | Ungeordnete lade-/speicher-ausführungssteuerung | |
DE19983860B4 (de) | Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage | |
DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
DE10304447B4 (de) | Verfahren zur Handhabung von Datenfehlern in einem Prozessor mit Pipeline und derartiger Prozessor | |
DE69327517T2 (de) | Pipeline-Rechner mit Anzeigetafel | |
DE112005002403T5 (de) | Prozessor-Pipeline mit konstantem Durchsatz | |
DE69623461T2 (de) | Koordination von befehlsausgabe in einem parallelen befehlsverarbeitungssystem | |
DE102015002383A1 (de) | Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline | |
DE69429612T2 (de) | Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE69633474T2 (de) | Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen |
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 |