DE19526008C2 - Befehlsvorholeinheit für einen Computer - Google Patents
Befehlsvorholeinheit für einen ComputerInfo
- Publication number
- DE19526008C2 DE19526008C2 DE19526008A DE19526008A DE19526008C2 DE 19526008 C2 DE19526008 C2 DE 19526008C2 DE 19526008 A DE19526008 A DE 19526008A DE 19526008 A DE19526008 A DE 19526008A DE 19526008 C2 DE19526008 C2 DE 19526008C2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- address
- command
- storing
- 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
- 230000015654 memory Effects 0.000 claims description 53
- 238000011144 upstream manufacturing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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, look ahead
- G06F9/3802—Instruction 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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, look ahead
- G06F9/3818—Decoding for concurrent 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, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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, 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
Description
Die vorliegende Erfindung bezieht sich auf eine Befehlsvor
holeinheit für einen Computer, der Befehle in einer Pipe
lineverarbeitung ausführt.
Hochleistungscomputer verwenden typischerweise ein Befehls-
Layout, das codiert ist. Bei Computern mit sehr großem Be
fehlswort (VLIW = Very-Large-Instruction-Word) sind zum Bei
spiel mehrere Befehle innerhalb eines Befehlswortes codiert.
Wenn ein Befehlswort decodiert wird, werden unterschiedliche
Befehle, die gleichzeitig in einer Pipeline ausgeführt wer
den, erhalten. Für den Fall, daß das Befehls-Layout eines
Hochleistungscomputers lang ist, wird Speicherplatz für die
Befehle eingespart, wenn die Befehle nicht decodiert werden,
bis die Befehle ausgegeben werden. Dieser Ansatz erfordert
jedoch einen zusätzlichen Taktzyklus oder eine zusätzliche
Pipelinestufe, um die Befehle zu decodieren, nachdem sie aus
dem Befehls-Cache-Speicher ausgegeben wurden. Ein weiterer
Ansatz besteht darin, die Befehle nur für die späteren Stu
fen in der Speicherhierarchie zu decodieren. Befehle, die in
einem sekundären Cache-Speicher gespeichert sind, liegen
nämlich in codierter Form vor, würden aber decodiert, bevor
sie in einem primären Cache-Speicher gespeichert werden.
Das Problem ist bei Computern größer, die einen Befehl mit
variabler Länge verwenden, jedoch gleichzeitig mehrere Ope
rationen ausgeben. In diesem Fall erfordert, sogar wenn ein
zusätzlicher Taktzyklus oder eine zusätzliche Pipelinestufe
zum Decodieren vermieden wird, die Bestimmung des nächsten
auszugebenden Befehls einen zusätzlichen Zyklus oder eine
zusätzliche Stufe in der Pipeline. Der nächste Befehl könnte
ein Zielbefehl eines Verzweigungsbefehls oder eine sequen
tielle Adresse sein. Die sequentielle Adresse kann sich sel
bst verändern, abhängig davon, wieviele Operationen durch
den vorhergehenden Befehl ausgegeben sind.
Die US-A-4,853,889 betrifft eine Anordnung und ein Verfahren
zum Beschleunigen der Verarbeitung von Verzweigungsbefehlen
in einem Computer, bei der eine Befehlshohleinheit jedem Be
fehl ein Adreßfeld für den nächsten Befehl (Nächster-Be
fehl-Adreßfeld) hinzufügt und dieses über einen Befehls-
Cache-Speicher an eine Befehlsausführungseinheit ausgibt.
Ein Befehl wird an den Cache-Speicher weitergeleitet, nach
dem das Nächste-Adresse-Feld durch die Befehlshohleinheit
bestimmt wurde. Der Befehl und das Nächste-Adresse-Feld
werden gleichzeitig an den Befehls-Cache-Speicher und an
einer Adresse gespeichert. Das Nächste-Adresse-Feld wird
durch die Ausführungseinheit verwendet, um den nächsten in
dem Cache-Speicher bereitstehenden Befehl auf der Grundlage
des Nächste-Adresse-Feldes zu adressieren. Das Nächste-
Adresse-Feld wird gleichzeitig mit dem Befehl ausgelesen.
Ausgehend von diesem Stand der Technik liegt der vorliegen
den Erfindung die Aufgabe zugrunde, eine Befehlsvorholein
heit zu schaffen, die die Adresse für einen nächsten Befehl
bestimmt, ohne einen zusätzlichen Taktzyklus beim Pipeline-
Betrieb verwenden zu müssen.
Diese Aufgabe wird durch eine Befehlsvorholeinheit für einen
Computer gemäß Anspruch 1 gelöst.
Allgemein gesprochen bezieht sich die Erfindung auf eine Be
fehlsvorholeinheit mit einem Befehls-Cache-Speicher, der
Speicherzellen für Befehlsdaten von Speicherzellen für eine
Sequenzsteuerung trennt, um es zu ermöglichen, daß eine nä
chste Befehlsadresse in einer Holstufe eines derzeitigen Be
fehls erzeugt wird. Die Erfindung vermeidet die Notwendig
keit einer zusätzlichen Stufe in der Pipeline, um die näch
ste Befehlsadresse zu bestimmen.
Gemäß einem Ausführungsbeispiel schließt die Befehlsvorhol
einheit einen Vorhol-Puffer zum vorübergehenden Speichern
eines codierten Befehls, einen Befehlsdecodierer zum Deco
dieren des codierten Befehls, der in dem Vorhol-Puffer ge
speichert ist, um zumindest einen decodierten Befehl und
zugehörige Flußsteuerungsdaten zu erzeugen, einen Tag-Puffer
zum vorübergehenden Speichern einer Befehlsadresse, die dem
codierten Befehl entspricht, und einen Befehls-Cache-Spei
cher ein.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer Befehlsvorholeinheit gemäß
der Erfindung;
Fig. 2 ein Blockdiagramm eines Ausführungsbeispiels des
Befehls-Cache-Speichers gemäß der Erfindung;
Fig. 3 ein Zeitverlaufsdiagramm für die vorliegende Erfin
dung;
Fig. 4 ein Blockdiagramm eines Ausführungsbeispiels einer
Einheit zum Bestimmen des nächsten Programmzähl
werts gemäß der Erfindung; und
Fig. 5 ein weiteres Ausführungsbeispiel der Einheit zur
Bestimmung des nächsten Programmzählwerts gemäß der
Erfindung.
Fig. 1 ist ein Blockdiagramm einer Befehlsvorholeinheit 2
gemäß der Erfindung. Der Gesamtbetrieb der Befehlsvorholein
heit 2 besteht darin, einen Befehl zusammen mit seinem zuge
ordneten Tag zu empfangen und die Befehle (Operationen)
einer oder mehreren Funktionaleinheiten eines Verarbeitungs
systems zuzuführen. Die Funktionaleinheiten führen dann die
Befehle aus.
Die Befehlsvorholeinheit 2 schließt einen Vorhol-Puffer 4
ein, der einen Befehl aus einem Befehlsstrom empfängt und
den Befehl in dem Vorhol-Puffer 4 speichert. Die empfangenen
Befehle sind codiert, weil sie tatsächlich Befehlswörter
sind, die (auf eine codierte Art) eine variable Anzahl von
Befehlen darstellen. Jeder codierte Befehl könnte zum Bei
spiel in zwei bis vier Befehle decodiert werden. Die Be
fehlsvorholeinheit 2 schließt ebenfalls einen Tag-Puffer 6
ein, der ein Tag speichert, das dem Befehl entspricht, der
in dem Vorhol-Puffer 4 gespeichert ist. Der Befehl und das
Tag, das durch die Befehlsvorholeinheit 2 empfangen wurden,
können zum Beispiel von einem Cache-Speicher niedrigerer
Ordnung oder von einem Haupt-Speicher kommen. In jedem Fall
führt der Tag-Puffer 6 ein gespeichertes Tag einem Multi
plexer 7 zu, und der Vorhol-Puffer 7 führt den Befehl oder
die Befehle, die in dem Vorhol-Puffer 4 gespeichert sind,
einem Befehlsdecodierer 8 zu. Der Befehlsdecodierer 8 ist
wirksam, um die Befehle zu decodieren, bevor sie in einen
primären Befehls-Cache-Speicher 10 geladen werden. Die de
codierten Befehle werden dann von dem Befehls-Cache-Speicher
10 einem Befehls-Puffer 12 und weiter den verschiedenen
Funktionaleinheiten des Verarbeitungssystems zugeführt.
Der Ausgang des Multiplexers 7 führt dem Befehls-Cache-Spei
cher 10 ebenfalls eine Adresse zu. Die an den Befehls-
Cache-Speicher 10 zugeführte Adresse ist entweder ein Tag,
das in dem Tag-Puffer 6 gespeichert ist, oder eine nächste
Adresse, die durch eine Schaltung 13 zum Bestimmen einer
nächsten Adresse bestimmt wurde. Die Schaltung 13 zum Be
stimmen der nächsten Adresse empfängt Sequenzsteuerungsin
formationen von dem Befehls-Cache-Speicher 10 und verwendet
diese Informationen in Verbindung mit einer derzeitigen Ad
resse, um die nächste Adresse zu bestimmen. Die Sequenz
steuerungsinformationen können zum Beispiel anzeigen, daß
der derzeitige Befehl eine Verzweigungsoperation, von der
vorhergesagt ist, daß sie durchgeführt wird oder nicht
durchgeführt wird, ein Wortbefehl, durch den zwei Befehle
gleichzeitig ausgegeben werden, oder ein Wortbefehl ist,
durch den drei Befehle gleichzeitig ausgegeben werden.
Obwohl die Erfindung codierte Befehle verwendet, um die
Codedichte zu erhöhen, werden die Befehle decodiert, bevor
sie in den primären Befehls-Cache-Speicher 10 geschrieben
werden. Da die Befehle vor ihrer Speicherung in den Be
fehls-Cache-Speicher 10 decodiert werden, ist ein extra
Taktzyklus oder eine zusätzliche Pipelinestufe nicht erfor
derlich, um die Befehle vor ihrer Ausführung zu decodieren.
Dies ist vorteilhaft, da der zusätzliche Taktzyklus oder die
zusätzliche Pipelinestufe den Mehraufwand bei Verzweigungs
befehlen im Falle einer fehlerhaften Voraussage erhöhen
würde. Durch Speichern der Befehle in einem komprimierten
oder codierten Format, während diese auf einer Diskette, in
einem Haupt-Speicher oder in einem Cache-Speicher niedri
gerer Ordnung sind, wird der Speicherplatz in den Speichern
auf den niedrigeren Ebenen (zum Beispiel Cache-Speicher der
zweiten Ebene, Haupt-Speicher) reduziert, wohingegen jedoch
der primäre Befehls-Cache-Speicher 10 relativ klein gehalten
wird. Dieser Ansatz reduziert ebenfalls die Länge der Aus
führungspipeline, da die Befehlsdecodierung nicht benötigt
wird, wenn die Befehle ausgegeben werden.
Ferner ermöglicht es die Erfindung, wie es nachfolgend be
schrieben wird, daß eine nächste Adresse in einer Hol-Stufe
eines derzeitigen Befehls erzeugt wird. Dieses Merkmal ist
sehr vorteilhaft, da es die Notwendigkeit einer zusätzlichen
Stufe in der Pipeline des Computersystems, das die Befehle
ausführt, ausschließt, die ansonsten erforderlich wäre, um
die nächste Befehlsadresse zu bestimmen.
Fig. 2 ist ein Blockdiagramm eines Ausführungsbeispiels des
Befehls-Cache-Speichers 10. Der Befehls-Cache-Speicher 10
ist vollständig assoziativ und schließt eine erste Spei
cherregion 14, eine zweite Speicherregion 16 und eine dritte
Speicherregion 18 ein. Diese drei Speicherregionen sind ge
trennte Speicherregionen auf einem einzelnen Chip, die durch
eine vertikale Partitionierung eines Halbleiterspeichers ge
bildet sein können.
Die zweite Speicherregion 16 ist genauer gesagt eine Spei
cher- und Vergleiche-Region. Alternativ kann die zweite
Speicherregion 16 an eine Vergleicherschaltung (nicht dar
gestellt) gekoppelt sein. Die erste Speicherregion 14 spei
chert die Befehle selbst in ihrer decodierten Form. Die
zweite Speicherregion 16 speichert ein Adresstag, das dem
entsprechenden decodierten Befehl, der in der ersten Spei
cherregion 14 gespeichert ist, zugeordnet ist. Die dritte
Speicherregion 18 speichert Sequenzsteuerungsdaten, die sich
auf den zugeordneten Adresstag und Befehl beziehen. Das
heißt, daß jeder Eintrag in der ersten Speicherregion 14
einen entsprechenden Eintrag in der zweiten Speicherregion
16 und in der dritten Speicherregion 18 hat. Bevorzugter
weise sind die erste und die dritte Speicherregion 14 und 18
Speicher mit wahlfreiem Zugriff (RAM), und die zweite Spei
cherregion 16 (einschließlich der Vergleicherschaltung) ist
ein inhaltsadressierbarer Speicher (CAM = Content-Addres
sable-Memory).
Der Betrieb des Befehls-Cache-Speichers, der in Fig. 2 dar
gestellt ist, ist wie folgt. Die zweite Speicherregion 16
empfängt die Adresse für den nächsten Befehl. Diese Adresse
wird mit den gespeicherten Adresstags für jeden der Einträge
innerhalb der zweiten Speicherregion 16 verglichen. Wenn
eine Übereinstimmung gefunden wird, wird die zugeordnete
Übereinstimmungsleitung (ML) 20 für den bestimmten Eintrag
auf einen hohen Zustand getrieben und in dem Latch 21 zwi
schengespeichert. Die Latch 21 treiben dann ihrerseits ge
trennt Wortleitungen (WL) 22 und 22' über Puffer 23. Obwohl
die Wortleitungen 22 und 22' beide durch dieselbe Überein
stimmungsleitung 20 getrieben sind, sind sie voneinander ge
trennt. Dementsprechend werden sich die kapazitive und die
resistive Last, die auf der Wortleitung 22 auftritt, von der
kapazitiven und resistiven Last, die auf der Wortleitung 22'
auftritt, unterscheiden. Durch den Entwurf ist die kapaziti
ve und die resistive Last, die auf der Wortleitung 22' auf
tritt, erheblich kleiner als diejenige, die auf der Wortlei
tung 22 auftritt, da die dritte Speicherstufe 18 lediglich
einige wenige Bits speichert, wohingegen die erste Speicher
region 14 einen gesamten Befehl speichert, der typischer
weise zumindest 32 Bit lang ist. Beispielsweise kann jeder
Eintrag in der dritten Speicherregion 18 acht Bits spei
chern, während jeder Eintrag in der ersten Speicherregion 14
256 Bits speichern kann.
In jedem Fall werden, sobald die Wortleitungen 22 und 22'
auf ihren hohen Zustand getrieben sind, bestimmte Bitlei
tungen ihrerseits in einen hohen Zustand getrieben, abhängig
von den gespeicherten Bits an dem bestimmten zu lesenden
Eintrag. Insbesondere die erste Speicherregion 14 schließt
Bitleitungen 24 (BL1, BL2,..., BLn) ein, und die dritte
Speicherregion 18 schließt Bitleitungen 28 (BL1,..., BLi,
wobei i kleiner ist als n) ein. Die Daten, die aus der er
sten Speicherregion 14 über die Bitleitungen 24 gelesen wer
den, sind ein decodierter Befehl, der in einem Befehlspuffer
26 gespeichert ist. Der decodierte Befehl wird danach von
dem Befehls-Puffer 26 einer Ausführungspipeline zugeführt,
wo der Befehl ausgeführt wird.
Beim nächsten Taktzyklus muß die Befehlsvorholeinheit 2 den
nächsten durch die Ausführungspipeline auszuführenden Befehl
dem Befehls-Puffer 26 bereitstellen. Wird dem Decodieren
eine eigene Stufe in der Ausführungspipeline zugeordnet,
kann der nächste Befehl leicht bestimmt werden, wird aber um
einen Zyklus zu spät sein. Wenn die Pipeline jedoch keine
Decodierungsstufe verwendet, kann die Bestimmung des näch
sten auszuführenden Befehls schwierig sein. Die normaler
weise sequentielle Ausgabe von Befehlen kann sich zum Bei
spiel in einer Sequenz aus zahlreichen Gründen ändern, näm
lich aufgrund von Verzweigungen oder aufgrund von Befehlen
mit variabler Länge. Um die nächste Befehlsadresse rechtzei
tig für den nächsten Taktzyklus bereitzustellen, muß die
nächste Befehlsadresse der zweiten Speicherregion 16 unmit
telbar vor dem Beginn dieses nachfolgenden Zyklus zugeführt
werden.
Herkömmlicherweise würden die Sequenzsteuerungsdaten in der
ersten Speicherregion 14 zusammen mit den Befehlsdaten ge
speichert. Dies verhindert jedoch, daß die nächste Adresse
mit dem Beginn des nächsten Zyklus bestimmt wird. Als ein
Ergebnis würde es herkömmlicherweise einen vollständigen zu
sätzlichen Zyklus dauern, um die nächste Adresse zu berech
nen. Die Verbesserung, die durch die vorliegende Erfindung
geschaffen wird, besteht darin, daß die Sequenzsteuerungs
daten nun von den Befehlsdaten getrennt sind und in einer
getrennten Speicherregion derart enthalten sind, daß die Se
quenzsteuerungsdaten schneller als die Befehlsdaten gelesen
werden können. Folglich berechnet eine Einheit 30 zum Be
stimmen des nächsten Programmzählwertes (PC = Programm
Counter) die nächste Befehlsadresse und führt diese der
zweiten Speicherregion 16 über Datenleitungen 32 innerhalb
des derzeitigen Zyklus zu. Daher ist die Erfindung wirksam,
um eine nächste Befehlsadresse während der Holstufe der
Pipelineverarbeitung eines derzeitigen Befehls zu bestimmen.
Fig. 3 ist ein Zeitverlaufsdiagramm der Operationen des Be
fehls-Cache-Speichers 10, das in Fig. 2 gezeigt ist. Das
Verarbeitungssystem führt die Operationen oder Befehle in
Übereinstimmung mit einem Zeitverlaufstakt (CLK) aus. Wie es
dargestellt ist, hat der Zeitverlaufstakt eine Periode P.
Bei Hochleistungscomputern, wie zum Beispiel Workstations,
ist die Periode P derzeitig zum Beispiel etwa 4 Nanosekunden
lang. Während einer ersten Hälfte des Zeitverlaufstaktzyklus
erfolgt die Adressbeurteilung in der zweiten Speicherregion
16 (CAM), und der RAM-Speicher in der ersten und der dritten
Speicherregion 14 und 18 wird vorgeladen. Während der zwei
ten Hälfte des Zeitverlauftaktzyklus wird das RAM der ersten
und der dritten Speicherregion 14 und 18 gelesen, und die
zweite Speicherregion 16 wird vorgeladen.
Die zweite Hälfte des Zeitverlauftaktzyklus wird nun detail
lierter beschrieben, um den Betrieb und die Vorteile der
vorliegenden Erfindung darzustellen. Die Wortleitung (WL-Da
ten) für die erste Speicherregion 14 wird aktiv oder hoch
während der zweiten Hälfte des Zeitverlauftaktzyklus, wie
dies dargestellt ist. Im Gegensatz dazu wird die Wortleitung
(WL-Br, Sz) für die dritte Speicherregion 18 in der zweiten
Hälfte des Zeitverlauftaktzyklus, jedoch vor dem Übergang
der Wortleitung (WL-Daten) für die erste Speicherregion 14
(in dem Beispielsfall etwa eine Nanosekunde früher) hoch
oder aktiv, wie dies dargestellt ist. Die Bitleitungen 24
und 28 der ersten und der dritten Speicherregion 14, 18, ob
wohl sie in Fig. 3 nicht dargestellt sind, stabilisieren
sich etwa 0,5 Nanosekunden nachdem die entsprechende Wort
leitung einen hohen Zustand angenommen hat oder aktiv wurde.
Danach erfassen die Erfassungsverstärker (S/A) für die erste
und die dritte Speicherregion 14, 18 die Datenwerte der Bit
leitungen 24 und erfassen die Sequenzsteuerungsdaten auf den
Bitleitungen 28. Wie es jedoch in Fig. 3 gezeigt ist, haben
sich die Sequenzsteuerungsdaten, die aus der dritten Spei
cherregion 18 ausgelesen wurden, stabilisiert und sind be
reit, um unmittelbar vor denjenigen aus der ersten Speicher
region 14 (etwa eine Nanosekunde früher) ausgelesen zu wer
den. Innerhalb dieses Fensters mit einer Nanosekunde Breite
ist die schnelle Hardwareschaltung innerhalb der Einheit 30
zum Bestimmen des nächsten PC (PC = Programm Counter, Pro
grammzählwert) fähig, die nächste Adresse derart zu berech
nen, daß bei der ansteigenden Flanke des nächsten Halbtakt
zyklus nicht nur die Befehlsdaten, die von den Bitleitungen
24 gelesen wurden, in dem Befehls-Puffer 26 gespeichert wer
den, sondern daß ebenfalls die nächste Adresse in einem Puf
fer für die nächste Adresse gespeichert werden. Folglich ist
zu Beginn des nächsten Taktzyklus die Adresse für den näch
sten Befehl verfügbar und wird dem Befehls-Cache-Speicher 10
zur Adressbeurteilung zugeführt.
Fig. 4 ist ein Blockdiagramm eines ersten Ausführungsbei
spiels der Einheit 30 zur Bestimmung des nächsten PC. Die
Einheit 30 zur Bestimmung des nächsten PC schließt bei die
sem Ausführungsbeispiel einen Auswähler 34 und einen Puffer
36 für den nächsten PC ein. Der Auswähler 34 empfängt ver
schiedene vorbestimmte Adressen an seinen Dateneingängen.
Diese Adressen schließen sequentielle Adressen (C + 1, C + 2,
und C + 4), eine Unterbrechungsadresse (INT), eine Zieladresse
(TGT) und eine Fehlvoraussageadresse ein. Die sequentiellen
Adressen C + 1, C + 2, und C + 4 entsprechen jeweils der derzei
tigen Adresse (C), die um Eins erhöht wurde, der derzeitigen
Adresse (C), die um Zwei erhöht wurde und der derzeitigen
Adresse (C), die um Vier erhöht wurde.
Bei diesem Ausführungsbeispiel sind mehrere sequentielle
Adressen dargestellt, da Hochleistungscomputersysteme im
allgemeinen einzelne Befehle oder mehrere Befehle in einem
Taktzyklus ausgeben können. Hier ist angenommen, daß das
Computersystem entweder einen einzelnen Befehl oder zwei
oder vier Befehle gleichzeitig ausgeben kann. Die Unterbre
chungsadresse (INT) wird zugeführt, so daß im Fall einer Un
terbrechung die Steuerung zu der Unterbrechungsadresse wei
terlaufen würde. Die Zieladresse (TGT) ist einer Verzwei
gungsoperation zugeordnet, und die Fehlvoraussageadresse ist
einem vorhergehenden Verzweigungsbefehl zugeordnet, von dem
angenommen wurde, daß er durchgeführt oder nicht durchge
führt wird, wenn tatsächlich das Gegenteil benötigt wurde.
Der Auswähler 34 wählt eine dieser Adressen auf der Grund
lage von zahlreichen Steuerungsleitungen aus. Die Steuer
ungsleitungen, die bei diesem Ausführungsbeispiel gezeigt
sind, sind ein Vorhersagebit (P), ein Unterbrechungsbit (I),
ein oder mehrere Größenbits (Sz) und eins oder mehrere Ver
zweigungsbits (Br). Wenn das Verzweigungsbit (Br) nicht ge
setzt ist, wird der Auswähler 34 eine der sequentiellen
Adressen auf der Grundlage des einen oder der mehreren
Größenbits (Sz) auswählen. Wenn das Unterbrechungsbit ge
setzt ist, wird der Auswähler 34 die Unterbrechungsadresse
(INT) auswählen. Wenn das Verzweigungsbit (Br) gesetzt ist,
wird der Auswähler 34 die Zieladresse (TGT) auswählen, wenn
das Vorhersagebit (P) ebenfalls gesetzt ist; ansonsten wählt
er eine der sequentiellen Adressen aus. Das Vorhersagebit
(P) kann statisch durch einen Compiler oder dynamisch durch
eine Verzweigungsvorhersageschaltung bestimmt werden. Wenn
eine statische Vorhersage verwendet wird, kann das Vorher
sagebit (P) innerhalb der Sequenzsteuerungsdaten einge
schlossen sein. Die Fehlvorhersageadresse wird durch den
Auswähler 34 ausgewählt, wenn ein Befehl, der immer noch in
der Pipeline ist, als die vorhergesagte Verzweigungsadresse
ausgewählt wurde und später als fehlerhaft bestimmt wurde.
In jedem Fall wird, welche Auswahl durch den Auswähler 34
auch immer getroffen wurde, die ausgewählte Adresse für die
nächste Befehlsadresse in dem Puffer 36 für den nächsten PC
gespeichert.
Fig. 5 ist ein zweites Ausführungsbeispiel der Einheit 30
zur Bestimmung des nächsten PC. Bei diesem Ausführungsbei
spiel empfängt ein Multiplexer 38 eine sequentielle Adresse
40 (SEQ), eine Zieladresse 42 (TGT), eine Unterbrechungsad
resse 44 (INT) und eine Fehlvorhersageadresse 46 (MIS). Der
Multiplexer 38 wählt eine dieser Eingangsadressen auf der
Grundlage der Steuerungssignale aus. Die Steuerungssignale
sind ein Unterbrechungssignal (I) und eine Verzweigung mit
Vorhersagesignal (Br & P). Bei dem beispielhaften Fall
schließt die Verzweigung mit Vorhersagesignal ein Verzwei
gungsbit und ein Vorhersagebit ein. Das Verzweigungsbit (Br)
gibt an, ob der derzeitige Befehl ein Verzweigungsbefehl
ist. Das Vorhersagebit (P) zeigt an, ob vorausgesagt wurde
oder nicht, daß die Verzweigung durchgeführt wird. Die se
quentielle Adresse 40 wird dem Multiplexer 38 über eine Ad
ditionsschaltung 48 zugeführt, die zu der derzeitigen Ad
resse einen inkrementalen Wert hinzufügt, der durch einen
Multiplexer 50 zugeführt wird. Der Multiplexer 50 wählt den
inkrementalen Wert auf der Grundlage der Größe (Sz) des der
zeitigen Befehls (wenn er decodiert ist) aus. Der inkremen
tale Betrag kann zum Beispiel 1, 2 oder 4 sein.
Die Fehlvorhersageadresse 46 wird durch eine andere Adress
pipeline 52 zugeführt, die einen Programmzählwert (PC) für
jede der Pipelinestufen (zum Beispiel FDREW) in einer
First-In-First-Out Art speichert (First-In-First-Out = der
zuerst gespeicherte Wert wird als erster wieder ausgelesen).
Die Adressen werden in die alternative Befehlsadresspipeline
52 über einen Multiplexer 54 eingegeben, der die sequentiel
le Adresse 40 oder die Zieladresse 42 auf der Grundlage der
selben Steuerungssignale (I, Br & P), wie sie durch den Multi
plexer 38 verwendet wird, auswählt. Der Ausgang des Multi
plexers 38 ist die Adresse für den nächsten Befehl, die als
nächster PC bekannt ist. Diese Adresse wird ebenfalls der
Befehlsadresspipeline 56 zugeführt, die die derzeitige
Adresse für jede der Stufen der Ausführungspipeline spei
chert.
Obwohl die Erfindung anhand eines Computersystems beschrie
ben wurde, das Befehle mit variabler Länge verwendet, ist
die Erfindung gleichermaßen auf den vereinfachten Fall an
wendbar, bei dem die Befehle eine feste Länge aufweisen, so
daß die nächste sequentielle Adresse statisch bekannt ist,
oder auf den vereinfachten Fall, in dem keine Vordecodierung
notwendig ist. In beiden Fällen würde die Einheit 30 zur Be
stimmung des nächsten PC, die in Fig. 4 gezeigt ist, ledig
lich eine einzelne sequentielle Adresse (anstelle von unter
schiedlichen sequentiellen Adressen) enthalten, und das eine
oder die mehreren Größenbits (Sz) wären nicht länger notwen
dig.
Es kann ebenfalls bevorzugt sein, zwei oder mehr Befehls-
Cache-Speicher-Einheiten bereitzustellen. Das Verhalten
würde verbessert werden, weil die Cache-Speicher einzeln
kleiner sind und daher schneller. Ferner kann in dem Fall
von zwei Befehls-Cache-Speichern der andere Cache-Speicher
früher ausgelesen werden, während ein Befehl von einem der
Befehls-Cache-Speicher ausgegeben wird. Mit zwei Befehls-
Cache-Speichern und decodierten Befehlen werden für ein ge
gebenes Befehlswort einige der decodierten Befehle in dem
ersten Cache-Speicher und die restlichen decodierten Befehle
in dem zweiten Cache-Speicher gespeichert. In dem Fall, in
dem die zwei Befehls-Cache-Speicher codierte Befehle oder
Befehle mit fester Länge speichern, könnte ein Cache-Spei
cher gerade Adressen speichern, und der andere Cache-Spei
cher könnte ungerade Adressen speichern.
Claims (4)
1. Befehlsvorholeinheit (2) für einen Computer, der Befehle
in einer Pipelineverarbeitung ausführt, mit
einem Befehls-Cache-Speicher (10), der einen ersten Ab schnitt (14) zum Speichern von Befehlen, einen zweiten Abschnitt (16) zum Speichern von Adresstags, und einen dritten Abschnitt (18), um Sequenzsteuerungsdaten ge trennt von den Befehlen in dem ersten Abschnitt (14) zu speichern, wobei der zweite Abschnitt (16) zum Speichern der Adresstags zwei getrennte Schnittstellen (21, 23) zum Treiben von ersten Wortleitungen (22) in dem ersten Abschnitt (14) zum Speichern der Befehle und zum Treiben von zweiten Wortleitungen (22') in dem dritten Abschnitt (18) zum Speichern der Sequenzsteuerungsdaten aufweist, wobei die zweiten Wortleitungen (22') kürzer sind, als die ersten Wortleitungen (22); und
einer Schaltung (30) zum Bestimmen der nächsten Befehls adresse abhängig von den Sequenzsteuerungsdaten;
wobei in einem ersten Taktteilzyklus eine Adreßbeurtei lung in dem zweiten Abschnitt (16) des Befehls-Cache- Speichers (10) erfolgt;
wobei in einem zweiten Taktteilzyklus der erste und der dritte Abschnitt (14, 18) des Befehls-Cache-Speichers (10) ausgelesen werden (Fig. 3).
einem Befehls-Cache-Speicher (10), der einen ersten Ab schnitt (14) zum Speichern von Befehlen, einen zweiten Abschnitt (16) zum Speichern von Adresstags, und einen dritten Abschnitt (18), um Sequenzsteuerungsdaten ge trennt von den Befehlen in dem ersten Abschnitt (14) zu speichern, wobei der zweite Abschnitt (16) zum Speichern der Adresstags zwei getrennte Schnittstellen (21, 23) zum Treiben von ersten Wortleitungen (22) in dem ersten Abschnitt (14) zum Speichern der Befehle und zum Treiben von zweiten Wortleitungen (22') in dem dritten Abschnitt (18) zum Speichern der Sequenzsteuerungsdaten aufweist, wobei die zweiten Wortleitungen (22') kürzer sind, als die ersten Wortleitungen (22); und
einer Schaltung (30) zum Bestimmen der nächsten Befehls adresse abhängig von den Sequenzsteuerungsdaten;
wobei in einem ersten Taktteilzyklus eine Adreßbeurtei lung in dem zweiten Abschnitt (16) des Befehls-Cache- Speichers (10) erfolgt;
wobei in einem zweiten Taktteilzyklus der erste und der dritte Abschnitt (14, 18) des Befehls-Cache-Speichers (10) ausgelesen werden (Fig. 3).
2. Befehlsvorholeinheit nach Anspruch 1, mit
einem Vorhol-Puffer (4) zum vorübergehenden Speichern eines Befehls;
einem Befehlsdecodierer (8) zum Decodieren der Befehle, die in dem Vorhol-Puffer (4) gespeichert sind, um zu mindest einen decodierten Befehl und zugeordnete Se quenzsteuerungsdaten zu erzeugen; und
einem Tag-Puffer (6) zum vorübergehenden Speichern einer Befehlsadresse, die dem Befehl entspricht;
wobei der Vorhol-Puffer (4), der Befehlsdecodierer (8) und der Tag-Puffer (6) dem Befehls-Cache-Speicher (10) vorgeschaltet sind.
einem Vorhol-Puffer (4) zum vorübergehenden Speichern eines Befehls;
einem Befehlsdecodierer (8) zum Decodieren der Befehle, die in dem Vorhol-Puffer (4) gespeichert sind, um zu mindest einen decodierten Befehl und zugeordnete Se quenzsteuerungsdaten zu erzeugen; und
einem Tag-Puffer (6) zum vorübergehenden Speichern einer Befehlsadresse, die dem Befehl entspricht;
wobei der Vorhol-Puffer (4), der Befehlsdecodierer (8) und der Tag-Puffer (6) dem Befehls-Cache-Speicher (10) vorgeschaltet sind.
3. Befehlsvorholeinheit nach Anspruch 1 oder 2, bei der die
Schaltung (30) zum Bestimmen der nächsten Befehlsadresse
eine Auswahleinrichtung (34) zum Auswählen entweder
einer sequenziellen Adresse (C + 1, C + 2, C + 4) oder einer
Zieladresse (INT, TGT) umfaßt.
4. Befehlsvorholeinheit nach einem der Ansprüche 1 bis 3,
bei der der Befehls-Cache-Speicher in mehrere Befehls-
Cache-Speicher-Einheiten aufgeteilt ist, die im Inter
leaving-Modus betrieben werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29917494A | 1994-08-31 | 1994-08-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19526008A1 DE19526008A1 (de) | 1996-03-07 |
DE19526008C2 true DE19526008C2 (de) | 1998-09-10 |
Family
ID=23153614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19526008A Expired - Fee Related DE19526008C2 (de) | 1994-08-31 | 1995-07-17 | Befehlsvorholeinheit für einen Computer |
Country Status (4)
Country | Link |
---|---|
US (1) | US5933850A (de) |
JP (1) | JP3641031B2 (de) |
DE (1) | DE19526008C2 (de) |
GB (1) | GB2293670A (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp | Befehlscachespeicher mit Kreuzschienenschalter |
US6286081B1 (en) * | 1998-05-19 | 2001-09-04 | Advanced Micro Devices, Inc. | Mechanism for ensuring data coherency during sequential readings of portions of data that changes with time |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6223254B1 (en) | 1998-12-04 | 2001-04-24 | Stmicroelectronics, Inc. | Parcel cache |
US6351802B1 (en) | 1999-12-03 | 2002-02-26 | Intel Corporation | Method and apparatus for constructing a pre-scheduled instruction cache |
US6745322B1 (en) * | 2000-02-18 | 2004-06-01 | Hewlett-Packard Development Company, Lp. | Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition |
DE10120522A1 (de) * | 2001-04-26 | 2002-11-07 | Infineon Technologies Ag | Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte |
US6976156B1 (en) * | 2001-10-26 | 2005-12-13 | Lsi Logic Corporation | Pipeline stall reduction in wide issue processor by providing mispredict PC queue and staging registers to track branch instructions in pipeline |
US6920550B2 (en) * | 2001-11-15 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | System and method for decoding and executing program binaries |
KR101076815B1 (ko) | 2004-05-29 | 2011-10-25 | 삼성전자주식회사 | 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7827355B1 (en) * | 2004-07-08 | 2010-11-02 | Globalfoundries Inc. | Data processor having a cache with efficient storage of predecode information, cache, and method |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
US20070083711A1 (en) * | 2005-10-07 | 2007-04-12 | International Business Machines Corporation | Reconfiguring caches to support metadata for polymorphism |
US7840786B2 (en) * | 2007-04-16 | 2010-11-23 | Advanced Micro Devices, Inc. | Techniques for storing instructions and related information in a memory hierarchy |
JP2011181000A (ja) * | 2010-03-03 | 2011-09-15 | Toshiba Corp | コントローラ、半導体記憶装置および半導体記憶装置の制御方法 |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4853889A (en) * | 1986-09-03 | 1989-08-01 | American Telephone And Telegraph Company, At&T Bell Laboratories | Arrangement and method for speeding the operation of branch instructions |
EP0375864A2 (de) * | 1988-12-29 | 1990-07-04 | International Business Machines Corporation | Cache-Speicherumgehung |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3938097A (en) * | 1974-04-01 | 1976-02-10 | Xerox Corporation | Memory and buffer arrangement for digital computers |
DE3068498D1 (en) * | 1979-05-09 | 1984-08-16 | Int Computers Ltd | Hierarchical data storage system |
US4506322A (en) * | 1982-02-22 | 1985-03-19 | Texas Instruments Incorporated | Read/write memory cell for microcomputer |
US4646233A (en) * | 1984-06-20 | 1987-02-24 | Weatherford James R | Physical cache unit for computer |
ZA856662B (en) * | 1984-08-31 | 1987-05-27 | Raychem Corp | Heat stable polymeric gelloids |
US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
US4783736A (en) * | 1985-07-22 | 1988-11-08 | Alliant Computer Systems Corporation | Digital computer with multisection cache |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
GB2210479B (en) * | 1987-10-02 | 1992-06-17 | Sun Microsystems Inc | Alias address support. |
US5027270A (en) * | 1988-10-11 | 1991-06-25 | Mips Computer Systems, Inc. | Processor controlled interface with instruction streaming |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5293592A (en) * | 1989-04-07 | 1994-03-08 | Intel Corporatino | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline |
JPH0314025A (ja) * | 1989-06-13 | 1991-01-22 | Nec Corp | 命令実行制御方式 |
JPH0740247B2 (ja) * | 1989-06-20 | 1995-05-01 | 松下電器産業株式会社 | キャッシュメモリ装置 |
JP2505887B2 (ja) * | 1989-07-14 | 1996-06-12 | 富士通株式会社 | 命令処理システム |
US5214765A (en) * | 1989-08-31 | 1993-05-25 | Sun Microsystems, Inc. | Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JP2879607B2 (ja) * | 1990-03-15 | 1999-04-05 | サン・マイクロシステムズ・インコーポレーテッド | 機能停止キャッシュを提供する装置と方法 |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
JP3144794B2 (ja) * | 1990-11-09 | 2001-03-12 | 株式会社日立製作所 | マルチプロセッサシステム |
DE69231011T2 (de) * | 1991-02-08 | 2000-09-28 | Fujitsu Ltd | Cachespeicher zur Verarbeitung von Befehlsdaten und Datenprozessor mit demselben |
US5479641A (en) * | 1993-03-24 | 1995-12-26 | Intel Corporation | Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
-
1995
- 1995-06-29 GB GB9513273A patent/GB2293670A/en not_active Withdrawn
- 1995-07-17 DE DE19526008A patent/DE19526008C2/de not_active Expired - Fee Related
- 1995-08-29 JP JP24537095A patent/JP3641031B2/ja not_active Expired - Fee Related
-
1997
- 1997-04-21 US US08/843,795 patent/US5933850A/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4853889A (en) * | 1986-09-03 | 1989-08-01 | American Telephone And Telegraph Company, At&T Bell Laboratories | Arrangement and method for speeding the operation of branch instructions |
EP0375864A2 (de) * | 1988-12-29 | 1990-07-04 | International Business Machines Corporation | Cache-Speicherumgehung |
Also Published As
Publication number | Publication date |
---|---|
JP3641031B2 (ja) | 2005-04-20 |
GB9513273D0 (en) | 1995-09-06 |
JPH08320786A (ja) | 1996-12-03 |
GB2293670A (en) | 1996-04-03 |
US5933850A (en) | 1999-08-03 |
DE19526008A1 (de) | 1996-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19526008C2 (de) | Befehlsvorholeinheit für einen Computer | |
DE4222776C2 (de) | Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen | |
DE2234867C2 (de) | Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen | |
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE19983330B4 (de) | Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor | |
DE4305442C2 (de) | Verfahren und Vorrichtung zum Erzeugen eines Testvektors | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE4237417C2 (de) | Datenverarbeitungssystem | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
EP0097725B1 (de) | Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen | |
DE2555963A1 (de) | Einrichtung zur funktionsmodifizierung | |
DE60006021T2 (de) | VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren | |
DE2364408B2 (de) | Schaltungsanordnung zur Adressierung der Speicherplätze eines aus mehreren Chips bestehenden Speichers | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE102004013676A1 (de) | Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE19824289C2 (de) | Pipelineverarbeitungsmaschine | |
DE2426874A1 (de) | Verfahren und schaltungsanordnung zur bestimmung der adressenart eines befehls | |
DE10306051A1 (de) | Kernparallele Ausführung mit unterschiedlichen Optimierungscharakteristika, um den dynamischen Ausführungsweg zu verringern | |
DE3307194C2 (de) | ||
EP1079307B1 (de) | Verfahren zum Betrieb eines Speichersystems sowie Speichersystem | |
DE2617485A1 (de) | Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen | |
DE2906685A1 (de) | Instruktionsdecodierer | |
DE3344340C2 (de) | Datenverarbeitungsanordnung zum Durchführen von Mikrobefehlen | |
DE4222275A1 (de) | Parallelprozessor und betriebsverfahren eines solchen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |