-
Die
vorliegende Erfindung bezieht sich auf einen Prozessor mit einem
Umgehungsnetzwerk zum Liefern von Datenelementen an Ausführungseinheiten.
-
Bei
einem superskalierten Mikroprozessor werden Datenelemente in einem
Registersatz (Registerdatei) gespeichert, um zur Verwendung durch
Ausführungseinheiten,
welche Pipelines zugeordnete sind, verfügbar zu sein. Es kann vier
oder mehr Taktzyklen beanspruchen, bis ein von einer Ausführungseinheit
erzeugtes Datenelement in den Registersatz geschrieben und dann
aus dem Registersatz gelesen worden ist, um für die gleiche oder eine andere
Ausführungseinheit
verfügbar
zu sein. Die Verzögerung
bei der Verfügbarkeit
der Daten wird als Latenz bezeichnet. Jedoch kann es sein, daß die gleiche
oder eine andere Ausführungseinheit
das Datenelement benötigt,
bevor es verfügbar
ist, möglicherweise
sogar bei dem unmittelbar nachfolgenden Zyklus. Sofern das erforderliche
Datenelement nicht verfügbar
ist, kann es sein, daß die
Ausführungseinheit
untätig
ist oder auf andere Weise ineffektiv genutzt wird, während sie
auf das Datenelement wartet. Das Problem wird durch eine ansteigende
Anzahl von Pipelinestufen zusammen mit erhöhten Taktfrequenzen und Größen interner
Speicher verschlimmert.
-
Als
Teillösung
des Problems wurden Umgehungsnetzwerke benutzt, um Datenelemente
für mehrere Taktzyklen
zu halten. Die Inhalte des Umgehungsnetzwerks sind für die Ausführungseinheit
unmittelbarer verfügbar
als die Inhalte des Registersatzes, wodurch das Warten der Ausführungseinheit
verringert wird. Ein bekanntes einstufiges (d.h. einen Zwischenspeicher
pro Ausführungseinheit
enthaltendes) Umgehungsnetzwerk ist in
EP 0 543 415 A2 beschrieben.
Gemäß
1 enthält eine andere bekannte Umgehungseinheit
10 ein Array
von Schieberegister-Daten-Latches DL1, DL2, DL3 und DL4, die Datenelemente
von einer Ausführungseinheit
empfangen. Es gibt zugehörige
Schieberegister-Adreß-Latches
AL1, AL2, AL3 und AL4. Jedem Datenelement wird eine Adresse in dem
Registersatz zugewiesen. Die Adresse in dem Adreß-Latch AL1 ist die den Daten
in dem Daten-Latch DL1 zugewiesene Adresse. In gleicher Weise sind
die Adressen in den Adreß-Latches
AL2, AL3 und AL4 die den Daten in den Daten-Latches DL2, DL3 bzw.
DL4 zugewiesenen Adressen. Die Adressen in den Adreß-Latches
AL1, AL2, AL3 und AL4 werden als Zieladressen bezeichnet.
-
Unmittelbar
bevor ein Datenelement in das Daten-Latch DL1 geschrieben wird,
werden die Daten in dem DL3 in das DL4, die Daten in dem DL2 in
das DL3 und die Daten in dem DL1 in das DL2 geschoben. In gleicher
Weise wird die Adresse in dem AL3 in das AL4, die Adresse in dem
AL2 in das AL3 und die Adresse in dem AL1 in das AL2 geschoben.
Die den in das DL1 geschriebenen Daten zugewiesene Adresse wird
in das AL1 geschrieben. Das Verschieben (von AL3 zu AL4, AL2 zu
AL3 und AL1 zu AL2) kann bei jedem Taktzyklus auftreten.
-
Die
Datenelemente in den Daten-Latch-Speichern DL1, DL2, DL3 und DL4
werden über
jeweils eine Leitung bzw. Leitergruppe 16, 18, 20 und 22 an
die Eingänge
eines Multiplexers (MUX) 14 angelegt. Es ist klar, daß jeder
der Leiter 16, 18, 20 und 22 zahlreiche
parallele Leiter aufweist. Das spezielle Datenelement, das von dem
MUX 14 über
den Ausgang und Leiter 26 weitergeleitet wird, wird von
dem Zustand der Signale auf den Leitern 30, 32, 34 und 36 bestimmt.
Der Zustand der Signale auf den Leitern 30, 32, 34 und 36 wird
von Komparatoren 40, 42, 44 und 46 gesteuert.
-
Es
sei beispielsweise angenommen, daß ein Datenelement X im Datenlatch
DL2 enthalten ist, und daß den
Daten X eine Adresse 000110 zugewiesen ist. Entsprechend wird 000110
in dem Adreß-Latch
AL2 gespeichert. Da jedem Datenelement eine unterschiedliche Adresse
in dem Registersatz zugewiesen ist, enthalten die Adreß-Latch-Speicher
AL1, AL3 und AL4 nicht 000110. Wenn der Mikroprozessor-Einplaner
(-Scheduler) feststellt, daß die
Daten X über
die Leiter 26 zur Verfügung
gestellt werden sollen, wird der Wert 000110 als Quellenadresse auf
einen Leiter 48 geschrieben. Der Wert 000110 wird zu jedem
der Komparatoren 40, 42, 44 und 46 weitergeleitet,
wo er mit der jeweiligen Adresse in den Adreß-Latch-Speichern AL1, AL2,
AL3 und AL4 verglichen wird. Da der Inhalt des Adreß-Latch
AL2 mit dem Wert auf dem Leiter 48 übereinstimmt, wird ein Signal
auf dem Leiter 32 angelegt, während die Signale auf den Leitern 30, 34 und 36 weggenommen
bleiben. Dementsprechend leitet der MUX 14 die Daten X
aus dem Daten-Latch DL2 auf den Leitern 18 zu den Leitern 26 weiter.
-
Es
gibt jedoch signifikante Probleme bei der Verwendung von bekannten
Umgehungseinheiten, wie beispielsweise der Umgehungseinheit 10.
Zunächst
werden mit jedem Taktzyklus Daten und Adressen verschoben. Über die
Zeit verbraucht dies eine beträchtliche
Energiemenge.
-
Zweitens
benötigen
derartige Umgehungseinheiten eine relativ große Menge an Fläche (real
estate) des Mikroprozessors. Die Einfächerung (fan-in) an dem MUX 14 ist
wenigstens so groß wie
das Produkt der Anzahl von Daten-Latches und der Anzahl von Bits
pro Datenelement. Üblicherweise
ist die Anzahl von Daten-Latch-Speichern in einer Umgehungseinheit
wenigstens gleich der Anzahl von Zyklen der Schreib-Lese-Latenz.
Darüber
hinaus hält
die Umgehungseinheit 10 Datenelemente für nur eine einzige Ausführungseinheit.
Die Gesamtfläche
erhöht
sich mit der Anzahl von Ausführungseinheiten.
-
Es
ist Aufgabe der Erfindung, den Energieverbrauch eines Prozessors
zu senken, aber noch die Ausführungseinheiten
mit einem direkten Zugriff auf die Datenelemente zu versorgen.
-
Diese
Aufgabe wird erfindungsgemäß durch
einen Prozessor mit den Merkmalen des Anspruchs 1 gelöst.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
Erfindung läßt sich
vollständiger
aus der unten angegebenen detaillierten Beschreibung und aus den
begleitenden Zeichnungen von Ausführungsbeispielen der Erfindung
verstehen, welche jedoch nicht in einem die Erfindung auf die beschriebenen
speziellen Ausführungsbeispiele
einschränkenden
Sinne verstanden werden sollen, sondern nur der Erläuterung
und dem besseren Verständnis
dienen.
-
1 ist
ein schematisches Blockschaltbild einer bekannten Umgehungseinheit.
-
2 ist
ein schematisches Blockschaltbild, das die Verbindungen zwischen
einem Umgehungsnetzwerk gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung und einem Registersatz, einer Einplanereinheit
und Ausführungseinheiten
in einem Mikroprozessor zeigt.
-
3 ist
ein Blockschaltbild eines Abschnitts des Umgehungsnetzwerks gemäß 2.
-
4 ist
eine graphische Darstellung bestimmter Register in dem Registersatz
und dem Umgehungsnetzwerk gemäß 2.
-
5 ist
ein detailliertes Blockschaltbild der Komparatoren und Abschnitte
des Umgehungscache gemäß 3.
-
6 ist
ein Blockschaltbild eines vollständigeren
Abschnitts des Umgehungsnetzwerks gemäß 2.
-
7 ist
ein Blockschaltbild eines alternativen Ausführungsbeispiels eines Umgehungsnetzwerks.
-
Die
vorliegende Erfindung bezieht sich auf ein Umgehungsnetzwerk (Bypass-Netzwerk)
mit einem oder mehreren Umgehungscaches mit mehreren Ports (Multi-Port-Bypass-Cache).
In der folgenden Beschreibung werden zahlreiche spezielle Details
angegeben, die ein bevorzugt veranschaulichtes Ausführungsbeispiel
der Erfindung betreffen. Es ist jedoch klar, daß die Erfindung auch ohne diese
und mit abweichenden speziellen Details implementiert und ausgeführt werden
kann.
-
Gemäß 2 enthält ein Mikroprozessor 80 einen
Registersatz 84, der Register zum Halten von Daten zur
Verwendung durch Ausführungseinheiten
enthält.
Eine arithmetisch-logische Einheit (ALU) 0 und eine ALU 1 sind Beispiele
von Ausführungseinheiten.
Eine Ausführungseinheit 86 kann
eine ALU oder irgendeine andere Art einer Ausführungseinheit sein. Der Registersatz 84 kann
beispielsweise 64 Register von jeweils 38 Bits enthalten.
Die 38 Bits können
32 Bits Daten und 6 Flag-Bits
halten. Zur Vereinfachung können
die gesamten 38 Bits als Daten bezeichnet werden. Der Begriff Daten
wird in der vorliegenden Beschreibung in einem breiten Sinne verwendet.
Da 26 = 64 ist, können 6 Bits jedes der 64 Register
eindeutig identifizieren. Die Ausführungseinheit ALU 0 empfängt Daten
aus den Quellen-Ports 88 und 90. Die Ausführungseinheit
ALU 1 empfängt
Daten aus den Quellen-Ports 92 und 94. Die Ausführungseinheit 86 empfängt Daten
aus den Quellen-Ports 96 und 98. Dementsprechend
gibt es sechs Quellen-Ports bei dem veranschaulichten Ausführungsbeispiel.
Aus der Perspektive einer Einplanereinheit (Scheduler-Einheit) 120 ist
jeder der Ausführungseinheiten
ALU 0, ALU 1 und 86 ein Abfertigungsport zugeordnet.
-
Die
Ausführungseinheiten
ALU 0, ALU 1 und 86 enthalten Ausgänge, die mit den Leitern 114, 116 bzw. 118 verbunden
sind, auf welchen die Ergebnisse der Operationen zur Verfügung gestellt
werden. Ein Umgehungsnetzwerk 110 ist ein einfaches und
kompaktes Umgehungsnetzwerk, das relativ wenig Energie verbraucht
und einen direkten Zugriff auf Daten für mehrere Ausführungseinheiten
zur Verfügung
stellt. Das Umgehungsnetzwerk 110 hält die Ergebnisse (die ebenfalls
als Daten bezeichnet werden), die von den Ausführungseinheiten ALU 0, ALU
1 und 86 auf den Leitern 114, 116 und 118 zur
Verfügung
gestellt werden. Bei einem bevorzugten Ausführungsbeispiel kann ein Datenelement
in einem Taktzyklus vom Ausgang einer Ausführungseinheit in ein Register
im Umgehungsnetzwerk 110 gespeichert und aus dem Register
im Umgehungsnetzwerk 110 derselben oder einer anderen Ausführungseinheit
verfügbar
gemacht werden. (Eine Verzögerung
der Lesestufe gegenüber
dem Beginn der Schreibstufe kann verwendet werden, um dies in einem Taktzyklus
auszuführen.)
Die Daten, die in dem Umgehungsnetzwerk 110 gespeichert
werden, können
außerdem
in den Registersatz 84 gespeichert werden, obwohl dies
einen oder mehrere zusätzliche
Taktzyklen benötigt,
um die Speicherung der Daten in dem Registersatz 84 abzuschließen.
-
Die
Einplanereinheit 120 weist an, welche Datenelemente aus
dem Registersatz 84 und/oder dem Umgehungsnetzwerk 110 zu
einem vorgegebenen Zeitpunkt den Ausführungseinheiten ALU 0, ALU
1 und 86 zur Verfügung
gestellt werden sollen. Datenelemente aus dem Registersatz 84 werden über die
Leiter 104, den Quellen-Ports 88, 90, 92, 94, 96 und 98 zur
Verfügung
gestellt (sofern dies durch zugehörige Multiplexer ausgewählt wird).
Die Leiter 104 können
gleichzeitig sechs Datenelemente von N Bit Breite führen. Die
Einplanereinheit 120 stellt Quellenadressen über die
Leiter 124 dem Registersatz 84 und dem Umgehungsnetzwerk 110 zur
Verfügung.
Die Einplanereinheit 120 stellt sechs Quellenadressen pro
Zyklus, jeweils eine für
jeden Quellen-Port 88, 90, 92, 94, 96 und 98 zur
Verfügung.
Die Einplanereinheit 120 stellt darüber hinaus drei Zieladressen
pro Zyklus über
die Leiter 126 dem Umgehungsnetzwerk 110 zur Verfügung. Das
Umgehungsnetzwerk 110 leitet die Zieladressen über die
Leiter 146 an den Registersatz 84 weiter.
-
Die
Leiter 134 und 136 stellen Steuersignale an den
Registersatz 84 bzw. das Umgehungsnetzwerk 110 zur
Verfügung.
Die die Steuersignale und die implementierenden Schaltungen betreffenden
Details werden nicht angegeben, weil sie den Fachleuten gut bekannt
sind und weil, sofern sie zur Verfügung gestellt würden, sie
die Zeichnungen erheblich verwirren und die Erfindung verdunkeln.
Darüber
hinaus gibt es nicht nur einen Weg, derartige Steuersignale und
Schaltungen zu implementieren. Ferner sind verschiedene andere interne
Signale und implementierende Schaltungen, wie beispielsweise Lese-
und Schreibschaltungen, aus den gleichen Gründen nicht veranschaulicht.
Für alle
in dieser Offenbarung beschriebenen oder veranschaulichten Strukturen
können
beliebige von verschiedenen gut bekannten Einrichtungen des Entwurfs
und der Herstellung benutzt werden.
-
Gemäß den 2–6 werden
die Quellen- und Zieladressen wie folgt benutzt. Jedem Register
in dem Registersatz 84 wird eine Adresse zugewiesen (z.B.
0–63).
Wenn ein Datenelement in den Registersatz 84 geschrieben
werden soll, weist der Einplaner 120 ein spezielles Register
für das
hineinzuschreibende Datenelement zu. Aus einer anderen Perspektive
betrachtet, weist der Einplaner 120 eine Adresse für das Datenelement
zu. Wenn das Datenelement außerdem
in das Umgehungsnetzwerk 10 geschrieben wird, wird die gleiche
Adresse den Daten in sowohl dem Registersatz 84 als auch
dem Umgehungsnetzwerk 110 zugewiesen. (In einigen Fällen können Daten
aus einer Ausführungseinheit
erzeugt und ihnen eine Adresse zugewiesen werden, kurz bevor oder
nachdem sie in der Ausführungseinheit
erzeugt werden.) 4 veranschaulicht Register in
dem Registersatz 84, die 6-Bit-Binäradressen und zugehörige Dezimalwerte
einschließen.
Repräsentative
Daten X1, X2, X3, X4, X5, X6 und X7 (die jeweils 38 Bits breit sein
können)
sind in ausgewählten Registern
des Registersatzes 84 gespeichert. Beispielsweise wird
ein Datenelement X4 in das Register 011110 (dezimal 30)
und ein Datenelement X6 in das Register 110000 (dezimal 48)
geschrieben. Aus einer anderen Perspektive betrachtet, wird den
Daten X4 die Adresse 011110 und den Daten X6 die Adresse 110000
zugewiesen.
-
Gemäß den 2 und 6 enthält das Umgehungsnetzwerk 110 ein
inhaltsadressierbares Speicherarray (CAM) 128, einen assoziativen
Umgehungscache 130 mit mehreren Ports und eine umlaufende Schreibzeigereinheit 132.
Wie es in 6 gezeigt ist, enthält das Umgehungsnetzwerk 110 außerdem CAMs 178 und 202,
welche gleich dem CAM 128 sind; Mehr-Port-Umgehungscache-Speicher 180 und 204,
welche gleich dem Umgehungscache 130 sind; und umlaufende
Schreibzeigereinheiten 182 und 206, welche gleich der
umlaufenden Schreibzeigereinheit 132 sind. Der CAM 128 enthält die Register
A1, A2, A3 und A4, der CAM 178 die Adreßregister A5, A6, A7 und A8
und der CAM 202 die Adreßregister A9, A10, A11 und
A12. Der Umgehungscache 130 umfaßt die Datenregister D1, D2,
D3 und D4, der Umgehungscache 180 die Datenregister D5,
D6, D7 und D8 und der Umgehungscache 204 die Datenregister
D9, D10, D11 und D12. Der CAM 128 und der Umgehungscache 130 bilden
einen vollständig
assoziativen Cache. Der CAM 178 und der Umgehungscache
bilden einen vollständig
assoziativen Cache. Der CAM 202 und der Umgehungscache 204 bilden
einen vollständig
assoziativen Cache.
-
Gemäß den 2, 3 und 6 werden
Datenelemente aus den Leitungen 114 in die Datenregister
D1, D2, D3 und D4 geschrieben. Die Adreßregister A1, A2, A3 und A4
halten 6-Bit-Zieladressen
aus den Leitern 126, die den in den Datenregistern D1,
D2, D3 bzw. D4 gespeicherten Daten entsprechen. Für jedes gegebene
Datenelement auf den Leitern 114 hängt das jeweilige Datenregister
D1, D2, D3 und D4, in welches die Daten geschrieben werden, und
das spezielle Adreßregister
A1, A2, A3 und A4, in welches die zugehörige Zieladresse geschrieben
wird, von der Position eines Schreibzeigers in der umlaufenden Schreibzeigereinheit 132 ab.
-
Die
umlaufende Schreibzeigereinheit 132 enthält die Register
P1, P2, P3 und P4, welche vier Positionen darstellen, die einen
Schreibzeiger halten können.
Der Schreibzeiger befindet sich an einer der vier Positionen. Nach
jedem Schreiben wird der Schreibzeiger zu dem nächsten Register weitergeschoben.
Wenn beispielsweise der Schreibzeiger sich im Register P3 befindet,
wird nach einem Schreiben der Schreibzeiger zum Register P4 geschoben.
Nach dem nächsten
Schreiben wird der Schreibzeiger in das Register P1 geschoben usw.
Die Leiter 138A und 138B werden aktiviert, wenn
der Schreibzeiger sich im Register P1 befindet. Die Leiter 140A und 140B werden
aktiviert, wenn sich der Schreibzeiger im Register P2 befindet.
Die Leiter 142A und 142B werden aktiviert, wenn
sich der Schreibzeiger im Register P3 befindet. Die Leiter 144A und 144B werden aktiviert,
wenn sich der Schreibzeiger im Register P4 befindet.
-
4 veranschaulicht
die Beziehungen zwischen den Zieladressen des Registersatzes 84 und
den Daten in dem Registersatz 84 und den Zieladressen und
Daten im Umgehungsnetzwerk 110. Gemäß den 3 und 4 wird
den Daten X4 die Zieladresse 011110 zugewiesen. Dementsprechend
werden die Daten X4 an der Adresse 011110 in dem Registersatz 84 gespeichert.
Zu dem Zeitpunkt, zu dem die Daten X4 in den Umgehungscache 130 geschrieben
werden sollen, zeigt der Schreibzeiger der umlaufenden Schreibzeigereinheit 132 auf
das Adreßregister
A1 und das Datenregister D1. Entsprechend wird 011110 in das Adreßregister A1
geschrieben, und die Daten X4 werden in das Datenregister D1 geschrieben.
Bei dem nächsten
Schreibzyklus wird die Adresse 110000 in das Adreßregister
A2 und die Daten X6 werden in das Datenregister D2 geschrieben.
In dem Registersatz 84 sind die Daten X6 im Register 110000
gespeichert. Man beachte, daß in Abhängigkeit
von den Umständen
aufgrund der Zeitverzögerung
es sein kann, daß 4 keine
zeitliche Momentaufnahme darstellt.
-
Gemäß 6 werden
die Daten aus der Ausführungseinheit
ALU 1 auf den Leitern 116 den Datenregistern D5, D6, D7
und D8 und dem Registersatz 84 zur Verfügung gestellt. Zugehörige Zieladressen
werden über
die Leiter 126 den Adreßregistern A5, A6, A7 und A8
zur Verfügung
gestellt. Jedoch hängt
das spezielle Adreßregister
und das spezielle Datenregister, in welches die Zieladresse und
das Datenelement geschrieben werden, von der Position eines Schreibzeigers
in der umlaufenden Schreibzeigereinheit 182 zum Zeitpunkt des
Schreibens ab.
-
Daten
aus der Ausführungseinheit 86 werden
auf den Leitern 118 den Datenregistern D9, D10, D11 und
D12 und dem Registersatz 84 zur Verfügung gestellt. Zugehörige Zieladressen
werden über
die Leiter 126 den Adreßregistern A9, A10, A11 und
A12 zur Verfügung
gestellt. Jedoch hängen
das spezielle Adreßregister und
das spezielle Datenregister, in welche eine Zieladresse und das
Datenelement geschrieben werden, von der Position eines Schreibzeigers
in der umlaufenden Schreibzeigereinheit 206 zum Zeitpunkt
des Schreibens ab.
-
Adressen
bleiben in den Adreßregistern
und Daten bleiben in den Datenregistern in dem Umgehungsnetzwerk 110,
bis sie überschrieben
werden. Bei dem Ausführungsbeispiel
gemäß den 3 und 6 werden
die Daten bei jedem vierten Schreiben überschrieben. Wenn es fünf Adreßregister
pro CAM, fünf
Zeigerpositionen pro umlaufender Schreibzeigereinheit und fünf Datenregister
in jedem Umgehungscache gäbe, würden eine Adresse
und ein Datenelement nach jeweils fünf Schreiboperationen überschrieben
werden.
-
Bei
dem Ausführungsbeispiel
gemäß den 2 bis 6 wird
die Position eines Schreibzeigers anstelle der Adressen in den Adreßregistern
und der Daten in den Datenregistern verschoben. Beispielsweise bleibt
eine im Adreßregister
A1 gespeicherte Adresse in dem Adreßregister A1, bis sie überschrieben
wird sobald der Schreibzeiger nach vier Schreiboperationen zur Position
P1 zurückkehrt.
Der kumulative Effekt des Nicht-Verschiebens
schafft eine signifikante Reduktion der Takt-Belastung und des Stromverbrauchs.
-
Gemäß den 3 und 5 empfangen
die Komparatoren 160, 162, 164 und 166 des
CAM 128 jeweils sechs Quellenadressen auf sechs Gruppen
von Leitern (d.h. den Leitern 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6)
der Leiter 124. Vier Komparatoren im CAM 178 und
vier Komparatoren im CAM 202 empfangen ebenfalls die gleichen
sechs Quellenadressen auf den Leitern 124. Der Komparator
kann statisch oder dynamisch sein. Es kann bis zu sechs unterschiedlichen
Quellenadressen auf den Leitern 124 in einer beliebigen
Kombination geben. Zwei oder mehr Gruppen von Leitern könnten die
gleiche Quellenadresse leiten. Beispielsweise könnten die Leiter 124-1 und
die Leiter 124-3 jeweils die Quellenadresse 011110 führen. In
einem solchen Fall gibt es dann weniger als sechs unterschiedliche
Quellenadressen auf den Leitern 124.
-
Die
Komparatoren 160, 162, 164 und 166 empfangen
außerdem
die Zieladressen aus den Adreßregistern
A1, A2, A3 bzw. A4. Wie es in 5 dargestellt
ist, empfängt
der Komparator 160 die sechs Quellenadressen auf den Leitungen 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6.
Der Komparator 162 empfängt ebenfalls
die gleichen sechs Quellenadressen auf den Leitern 124-1, 124-2, 124-3, 124-4, 124-5 und 124-6. (Komparator 160 kann
als sechs Komparatoren angesehen werden). Die Zieladressen werden
den Komparatoren 160 und 162 aus den Registern
A1 und A2 über
die Leiter 168 bzw. 176 zur Verfügung gestellt.
Wenn eine Quellenadresse auf einem der Leiter 124 mit der
Zieladresse im Adreßregister
A1 übereinstimmt,
wird ein Signal (welches als ein Zeiger bezeichnet werden kann)
an einem zugehörigen
der Ausgänge 210-1, 210-2, 210-3, 210-4, 210-5 und 210-6,
welche die Ausgänge 210 des
Komparators 160 bilden, angelegt. Die Ausgänge 210-1, 210-2, 210-3, 210-4, 210-5 und 210-6 sind
mit den Leitern 150-1, 150-2, 150-3, 150-4, 150-5 bzw. 150-6 verbunden,
welche die Leiter 150 bilden. Wenn beispielsweise die Quellenadresse
auf den Leitern 124-1 011110 ist, so stimmt sie mit dem
Inhalt des Adreßregisters
A1 (siehe 4) überein, und es wird ein Signal vom
Ausgang 210-1 auf den Leitern 150-1 angelegt.
In gleicher Weise wird dann, wenn die Quellenadresse auf den Leitern 124-3 011110
ist, diese also ebenfalls mit den Inhalten des Adreßregisters
A1 übereinstimmt, ein
Signal vom Ausgang 210-3 auf dem Leiter 150-3 angelegt.
Die anderen Komparatoren sind von der gleichen Art wie der Komparator 160.
Beispielsweise weist der Komparator 162 die Ausgänge 212 auf.
Wenn die Leiter 124-5 die Quellenadresse 110000 aufweisen,
dann wird ein Signal aus dem Ausgang 212-5 auf den Leitern 152-5 angelegt,
weil das Adreßregister
A2 110000 enthält.
Signale auf den einzelnen der Leiter 154 und 156 werden
angelegt, wenn es eine Übereinstimmung
in den Komparatoren 164 bzw. 166 gibt.
-
Die
umlaufenden Schreibzeiger 132, 182 und 206 erzeugen
vollständig
dekodierte Schreibadressen. Die Komparatoren in den CAMs 128, 178 und 202 erzeugen
vollständig
dekodierte Leseadressen.
-
5 veranschaulicht
Details der Cache-Abschnitte 172 und 174 des Umgehungscache 130 gemäß 3.
Wie es in 5 veranschaulicht ist, enthält ein Cache-Abschnitt 172 Lese-Ports R1-1, R2-1,
R3-1, R4-1, R5-1 und R6-1. Der Lese-Port R1-1 wird aktiviert (d.h. leitet Daten
aus dem Datenregister D1 zu den Leitern 170-1 weiter),
wenn ein Signal auf dem Leiter 150-1 angelegt wird. Der
Lese-Port R2-1 wird aktiviert, wenn ein Signal auf dem Leiter 150-2 angelegt
wird, usw. Ein Cache-Abschnitt 174 enthält die Lese-Ports R1-2,
R2-2, R3-2, R4-2, R5-2 und R6-2. Der Lese-Port R1-2 wird aktiviert,
wenn ein Signal auf dem Leiter 152-1 angelegt wird. Der
Lese-Port R2-2 wird aktiviert, wenn ein Signal auf dem Leiter 152-2 angelegt wird, usw.
Es gibt einen Satz von sechs Lese-Ports R1, R2, R3, R4, R5 und R6
für jedes
der zwölf
Datenregister D1-D12. Die Leseports R1-1 und R1-2 sind zwei Beispiele
der zwölf
Lese-Ports R1. Die
Lese-Ports R2-1 und R2-2 sind zwei Beispiele der zwölf Lese-Ports
R2. Es gibt folglich 72 Lese-Ports bei dem Beispiel gemäß den 2 bis 6.
-
Sofern
er aktiviert ist, leitet ein Lese-Port Daten aus dem Datenregister
zu einem Leiter der Gruppen von Leitern 170 weiter. Beispielsweise
enthalten die Gruppen von Leitern 170 die Leiter 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 (die
jeweils N Bits breit sind, wobei N gleich 38 sein kann). Wenn beispielsweise
der Lese-Port R1-1 aktiviert wird, werden die Daten im Datenregister
D1 zu den Leitern 170-1 weitergeleitet. Wenn der Lese-Port
R3-1 aktiviert wird, werden die Daten in dem Register D1 auch zu
den Leitern 170-3 weitergeleitet. Es gibt jeweils einen
Lese-Port zwischen jedem Datenregister und jedem Quell-Port. Entsprechend
gibt es sechs Lese-Ports (R1, R2, R3, R4, R5 und R6) zwischen jedem
Datenregister (z.B. D1, D2, ... D12) und einem der Quellen-Ports 88, 90, 92, 94, 96 und 98.
-
Es
gibt sechs Gruppen von zwölf
Lese-Ports, die in einer verdrahteten ODER-Verknüpfung mit einer jeweiligen
von sechs Gruppen von Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 verbunden
sind. Einer der zwölf
Lese-Ports von jeder der sechs Gruppen wird zwischen einem der zwölf Datenregister
und einer der Gruppen von Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 eingekoppelt.
Beispielsweise wird eine erste Gruppe von zwölf Lese-Ports R1 (einschließlich R1-1
und R1-2, die in 5 gezeigt sind) mit den Leitern 170-1 in
einer verdrahteten ODER-Anordnung verbunden. Eine zweite Gruppe
von zwölf
Lese-Ports R2 (einschließlich
R2-1, R2-2, die in 5 gezeigt sind) sind mit den
Leitern 170-2 in einer verdrahteten ODER-Anordnung verbunden.
In gleicher Weise sind eine dritte, vierte, fünfte und sechste Gruppe von
zwölf Lese-Ports mit
den Leitern 170-3, 170-4, 170-5 bzw. 170-6 in
verdrahteten ODER-Anordnungen
verbunden. Da jedem Datenelement eine einzigartige Zieladresse zugewiesen
ist, gibt es jeweils nicht mehr als ein Adreßregister A1-A12 mit der gleichen
Zieladresse. Entsprechend ist nicht mehr als einer der zwölf Lese-Ports
in einer Gruppe zu einem Zeitpunkt aktiviert. Es gibt folglich keine
Konflikte auf irgendwelchen der Leiter 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6.
Daten aus einem beliebigen Datenregister D1-D12 können an
einen beliebigen der sechs Quellen-Ports 88–98 angelegt
werden.
-
Gemäß den 2, 5 und 6 sind
die MUXs 186, 188, 190, 192, 194 und 196 zwischen
den Leitern 170-1, 170-2, 170-3, 170-4, 170-5 und 170-6 (welche
die Leiter 170 bilden) und den Quellen-Ports 88, 90, 92, 94, 96 bzw. 98 angeordnet.
Die Leiter 104 umfassen sechs Gruppen von Leitern, um sechs
N Bit breite Datensignale zu führen.
Die MUXs 186–196 leiten
entweder das Datensignal aus einer der Gruppen von Leitern 104 oder
aus einer der Gruppen von Leitern 170 weiter. Wenn es eine Übereinstimmung
zwischen der Quellenadresse einer speziellen Gruppe von Leitern 124 und
einer in einem Adreßregister
in einem CAM gespeicherten Zieladresse gibt, leitet der zugehörige MUX
der MUXs 186-196 die Daten aus dem zugehörigen Datenregister über den
zugehörigen
Leiter 170 weiter. Anderenfalls leitet der MUX die Daten
aus der zugehörigen
Gruppe von Leitern der Leiter 104 aus dem Registersatz 84 weiter.
Wenn beispielsweise die Quellenadresse auf den Leitern 124-2 nicht
mit irgendeiner der Zieladressen in den Adreßregistern A1-A12 übereinstimmt,
leitet MUX 188 die Daten aus den zugehörigen Leitern der Leiter 104 statt
aus den Leitern 170-2 weiter.
-
Die
folgende Übersicht
faßt die
Beziehungen zwischen den Leitern 170, den Quellen-Ports,
MUXs und Ausführungseinheiten
zusammen.
-
-
Im
folgenden werden zusätzliche
Informationen gegeben, die das oben genannte Ausführungsbeispiel gemäß den 2–6 sowie
alternative Ausführungsbeispiele
der Erfindung betreffen. In jedem Fall sind es die Ansprüche, die
den Umfang der Erfindung bestimmen, und nicht die hier angegebenen
speziellen Details.
-
Die
Begrenzungen der Kästen
in den Figuren dienen der Veranschaulichung. Ein Bauelement muß keine
derartigen definierten Begrenzungen aufweisen. Die relative Größe der veranschaulichten
Komponenten dient der Erleichterung der Veranschaulichung und suggeriert
nicht tatsächliche
Größenverhältnisse.
-
Es
ist nicht erforderlich, daß jede
Ausführungseinheit
Daten der gleichen Bitbreite verarbeitet. Beispielsweise kann eine
Ausführungseinheit
an 32-Bit-Daten operieren, während
eine andere Ausführungseinheit
an 64-Bit-Daten oder 128-Bit-Daten
arbeitet. Die Daten können
von der Ausführungseinheit
in Stufen addiert oder gespeichert und in der vollen Breite bearbeitet
werden. Es braucht nicht die gleiche Anzahl von Lese-Ports für jedes
Datenregister zu geben.
-
Die
CAMs und Umgehungscaches können
eine beliebige Tiefe (d.h. Anzahl der Adreßregister und Datenregister)
aufweisen. Dementsprechend ist die Anzahl der Adreßregister
und der Datenregister nicht auf vier beschränkt, wie es in dem Ausführungsbeispiel
gemäß den 3 und 6 veranschaulicht
ist. Die Anzahl der Adreßregister
und Datenregister ist vorzugsweise wenigstens so groß wie die
Latenz (die Anzahl der Stufen in der Schleife oder der Zyklen, die
umgangen werden sollen). Auf diese Weise werden Daten nicht überschrieben,
bevor sie benötigt
werden. Die Adreß-
und Datenregister sind vorzugsweise Zellen eines Speichers mit wahlfreiem
Zugriff (RAM). Darüber
hinaus kann es mehr oder weniger als drei Ausführungseinheiten geben.
-
In
einem Mikroprozessor gibt es selbstverständlich zahlreiche Komponenten,
die nicht in den Figuren veranschaulicht oder hier beschrieben worden
sind. Die vorliegende Erfindung ist jedoch nicht auf die Verwendung
in einem Mikroprozessor eingeschränkt, sondern sie kann auch
in anderen Computern, wie beispielsweise einem Mikrocontroller oder
einer speziellen Hardware, die keine Software oder Firmware verwendet,
benutzt werden. Die Erfindung kann ggf. in Verbindung mit einer
Außerder-Reihe-Ausführung und
einer Registerumbenennung verwendet werden.
-
Die
vorliegende Erfindung erfordert nicht die Verwendung eines rotierenden
Schreibzeigers. Statt dessen kann eine andere Schreibzeigereinheit
verwendet werden. Verschiedene Zuweisungsvorgehensweisen können verwendet
werden. Beispielsweise kann eine Jüngst-benutzt-Vorgehensweise
(LRU; least recently used) oder eine Pseudo-LRU-Vorgehensweise verwendet
werden. Daten können
auch für
längere
Zeit als die Latenzdauer gehalten werden.
-
7 veranschaulicht
ein Umgehungsnetzwerk 250, welches gegenüber dem
Umgehungsnetzwerk 110 ein alternatives Ausführungsbeispiel
eines Umgehungsnetzwerks darstellt. Gemäß 7 enthält das Umgehungsnetzwerk 250 einen
CAM 254, der Adreßregister
A1-A12 enthält,
und einen Umgehungscache 256, der Datenregister D1-D12
enthält.
Die Datenregister D1-D12 können
Daten aus irgendeiner der Ausführungseinheiten
ALU 0, ALU 1 und 86 über
die Leiter 262, 264 und 266 empfangen.
Daten werden darüber
hinaus auf den Leitern 270 dem Registersatz 84 zur
Verfügung
gestellt. Zugehörige
Zieladressen werden den Adreßregistern
A1-A12 über
die Leiter 126 zur Verfügung
gestellt. Das spezielle Datenregister und das spezielle Adreßregister,
in die ein bestimmtes Datenelement und eine zugehörige Zieladresse
geschrieben werden, werden durch die Position eines Schreibzeigers
in einer umlaufenden Schreibzeigereinheit 258 kontrolliert.
Im Umgehungsnetzwerk 110 werden die Daten aus der Ausführungseinheit
ALU 0 nur zu den Datenregistern D1-D4 geschrieben. In gleicher Weise
werden die Daten aus der Ausführungseinheit
ALU 1 nur zu den Datenregistern D5-D9 geschrieben, etc. Im Gegensatz
dazu können
im Umgehungsnetzwerk 250 die Daten von irgendeiner der
Ausführungseinheiten
ALU 0, ALU 1 und 86 zu irgendeinem der Datenregister D1-D12
geschrieben werden. Zugehörige
Adressen werden zu irgendeinem der Adreßregister geschrieben. Aus
den Datenregistern D1-D12 gelesene Daten werden über die Leiter 274 den
Ausführungseinheiten
ALU 0, ALU 1 und 86 zur Verfügung gestellt. Das Umgehungsnetzwerk 250 kann
irgendeine von verschiedenen Zuweisungsvorgehensweisen (z.B. LRU
oder Pseudo-LRU,
um nur zwei zu benennen) verwenden.
-
Im
Unterschied zu 6 und 7 könnte ein
einzelner CAM und ein einzelner Umgehungscache in Verbindung mit
einer einzigen Ausführungseinheit
verwendet werden.
-
Vorzugsweise
werden die Zieladressen synchron in ein Adreßregister in jeden der CAMs 128, 178 und 202,
die Daten synchron in ein Datenregister in jeden der Umgehungscaches 130, 180 und 204 geschrieben und
die Daten synchron aus den Datenregistern in jedem der Umgehungscaches 130, 180 und 204 gelesen. Beispielsweise
kann der Zeitpunkt, zu welchem Daten in ein Datenregister des Umgehungscaches 230 geschrieben
werden, synchron zu dem Zeitpunkt sein, zu welchem zu dem Umgehungscache 180 geschrieben wird.
Alternativ kann das Schreiben und Lesen asynchron sein. Beispielsweise
kann der Zeitpunkt, zu welchem Daten in ein Datenregister des Umgehungscache 130 geschrieben
oder aus einem solchen Datenregister gelesen werden, unabhängig von
dem Zeitpunkt sein, zu dem Daten in ein Datenregister des Umgehungscache 180 geschrieben
oder aus ihm gelesen werden.
-
Obwohl
es stark bevorzugt wird, daß ein
Umgehungsnetzwerk in der Lage ist, innerhalb eines einzigen Taktzyklus
ein Datenelement in ein Register zu schreiben und das Datenelement aus
dem Register zu lesen, damit es für eine beliebige Ausführungseinheit
verfügbar
ist, ist dies nicht bei jedem Ausführungsbeispiel der Erfindung
erforderlich.
-
Es
kann eine Zwischenstruktur (wie beispielsweise einen Puffer) oder
Signale geben, die sich zwischen zwei veranschaulichten Strukturen
befinden. Außerdem
können
einige Leiter nicht durchgehend sein, wie dies veranschaulicht ist,
sondern statt dessen durch Zwischenstrukturen unterbrochen sein.
-
Die
Zieladresse kann dem Registersatz 84 direkt aus der Einplanereinheit 120 statt
aus dem Umgehungsnetzwerk 110 oder 250 zur Verfügung gestellt
werden. Die sechs Gruppen der N Bit breiten Daten können auf
einen einzigen N Bit breiten Satz von Leitern gemultiplext werden,
bevor sie das Umgehungsnetzwerk 110 verlassen. Obwohl eine
parallele Leitung der Daten bevorzugt wird, könnte diese in einem speziellen
Fall durch eine serielle Leitung ersetzt werden.
-
Rotierende
Schreibzeiger 132, 182 und 206 sind nicht
erforderlich, um vollständig
dekodierte Schreibadressen zu erzeugen. Die Komparatoren in den
CAMs 128, 178 und 202 sind nicht erforderlich,
um vollständig
dekodierte Leseadressen zu erzeugen. Die Umgehungscaches 130, 180 und 204 müssen nicht
vollständig assoziativ
sein.
-
Die
Ausgänge
der Komparatoren 160, 162 etc. können Signalempfangsleiter
(wie in 5) oder Mehrfachleiter aufweisen.
D.h., es könnte
mehr als einen Leiter zwischen jedem Ausgang und jedem Lese-Port
geben. Der Komparator 160 besteht vorzugsweise, aber nicht
notwendigerweise, aus sechs Komparatoren (um sechs Quellen-Ports
zu vergleichen).
-
Der
Begriff "verbunden" und darauf bezogene
Begriffe werden in einem funktionellen Sinn verwendet und sind nicht
notwendigerweise auf eine direkte Verbindung eingeschränkt. Beispielsweise
sind die Datenregister mit Quellen-Ports verbunden, obwohl sie dies
indirekt über
Leiter und MUXs sind.
-
Sofern
in der Beschreibung ausgesagt wird, daß eine Komponente enthalten
sein "kann", "könnte" oder "bevorzugt" wird, so bedeutet dies, daß die spezielle
Komponente nicht zwangsläufig
enthalten sein muß.