DE4302495A1 - - Google Patents
Info
- Publication number
- DE4302495A1 DE4302495A1 DE4302495A DE4302495A DE4302495A1 DE 4302495 A1 DE4302495 A1 DE 4302495A1 DE 4302495 A DE4302495 A DE 4302495A DE 4302495 A DE4302495 A DE 4302495A DE 4302495 A1 DE4302495 A1 DE 4302495A1
- Authority
- DE
- Germany
- Prior art keywords
- command
- instruction
- length
- bits
- bit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000004069 differentiation Effects 0.000 claims abstract description 4
- 230000015654 memory Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 25
- 239000013598 vector Substances 0.000 description 31
- 238000004364 calculation method Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000002123 temporal effect 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung betrifft ein Computersystem, insbesondere ein
Verfahren und eine Einrichtung zum Schaffen einer Ende-Bit-
Marke, die es einem superskalaren Computer gestattet, aus einem
Befehlsstrom gleichzeitig ein Paar von längenvariablen Befehlen
zu verarbeiten.
Man ist ständig bestrebt, schneller arbeitende Computer
herzustellen. Eine Möglichkeit hierzu bietet ein Computer, der
Befehle schneller verarbeitet. Üblicherweise verarbeitet ein
Computerprozessor die Befehle eines beliebigen Prozesses in se
quentieller Reihenfolge, d. h. einen nach dem anderen. Folglich
muß ein Befehl 1 verarbeitet oder zumindest mit seiner Verar
beitung begonnen sein (der Befehl in die Pipeline eingegeben
sein), bevor ein Befehl 2 gestartet werden kann. Wenn jedoch
ein Computer zwei oder mehrere Befehle gleichzeitig abarbeiten
kann, so ist er in der Lage, die Befehle insgesamt schneller zu
verarbeiten. Dies kann durch die Schaffung eines Zentralprozes
sors realisiert werden, der mehr als einen Verarbeitungspfad
aufweist, und bei welchem die Befehle in den Verarbeitungspfa
den gleichzeitig abgearbeitet werden. Ein Computer, der einen
Prozessor mit zwei oder mehr Verarbeitungspfaden aufweist, wel
che zum gleichzeitigen Verarbeiten der gleichen Art von seriell
abgearbeiteten Maschinenbefehlen in der Lage ist, wird super
skalarer Computer genannt.
Ein bei der Konstruktion jedes neuen Computers auftretendes
Problem ist, daß ein solcher Computer - um kommerziell erfolg
reich und für die Anwender von Interesse zu sein - eine Basis
von Anwendungsprogrammen aufweisen muß, welche bei seiner Ein
führung auf ihm abarbeitbar sind. Um diese Programme zur Verfü
gung zu stellen, ist es am ökonomischsten, den neuen Computer
so zu konstruieren, daß er mit den für frühere Computer oder
Computerfamilien entworfenen Anwendungsprogrammen betrieben
werden kann. Ein Beispiel für diese Konstruktionsweise sind die
Computer, die die durch die Firma Intel Corporation hergestell
ten Mikroprozessoren der Reihe der Mikroprozessoren 8086, 8088,
80186, 80286, 386 und i486 verwenden (im folgenden als die In
tel-Mikroprozessoren bezeichnet).
Ein Problem beim Entwurf jedes neuen Prozessors, der unter
Verwendung von Software für ältere Computer funktionieren soll,
ist, daß die neue Maschine in der Lage sein muß, die Befehle
dieser Software zu verstehen und zu verarbeiten. Die in den In
tel-Mikroprozessoren verwendeten Befehle variieren in ihrer
Länge von einem Byte bis zu 15 Bytes. Diese Befehle sind in den
für die Intel-Mikroprozessoren vorhandenen Programmen angeord
net, um in typischer sequentieller Reihenfolge behandelt zu
werden.
Ein Weg zur Erhöhung der Geschwindigkeit von Computern ist
das Pipelining, d. h. eine zeitliche Verschachtelung der Be
fehle. Anstatt jeden Befehl bis zu seinem Abschluß zu bearbei
ten und dann den nächsten Befehl zu beginnen, überlappen sich
die Stufen der Ausführung eines Befehls, so daß kein Teil des
Prozessors leer läuft, während eine andere Stufe ausgeführt
wird. Die die Intel-Mikroprozessoren verwendenden Computer ver
schachteln die Befehle zeitlich so, daß jede Stufe jedes Be
fehls in einer Taktperiode verarbeitet wird. Im allgemeinen er
fordert dies, daß ein Befehl von dort, wo er gespeichert ist,
herangeholt wird, daß er decodiert wird, dann ausgeführt und
schließlich die Ergebnisse der Ausführung zum Speichern für
eine spätere Verwendung zurückgeschrieben werden. Die Schal
tungsanordnung ist so konstruiert, daß die verschiedenen Stufen
jeweils eine Taktperiode erfordern. Verschiedene Abschnitte des
Prozessors führen während jeder Taktperiode jede der Stufen in
der Pipeline an aufeinanderfolgenden Befehlen aus. Folglich
holt während einer ersten Taktperiode ein Abschnitt des Com
puters einen Befehl aus dem Speicher im voraus heran und rich
tet ihn so aus, daß er zum Decodieren bereit ist. Während einer
zweiten Taktperiode holt dieser Abschnitt des Computers den
nächsten Befehl aus dem Speicher heran und richtet ihn so aus,
daß er zum Decodieren in der dritten Taktperiode bereit ist.
Ein Decodierabschnitt des Prozessors führt die Decodierung des
herangeholten ersten Befehls während der zweiten Taktperiode
aus. Der Decodierabschnitt führt die Decodierung des herange
holten zweiten Befehls während der dritten Taktperiode aus.
Durch ein Pipelining der Befehle wird die gesamte Arbeitsge
schwindigkeit signifikant erhöht.
Die Befehle werden über den Bus oder aus einem Cache-Spei
cher als ein Strom von Bytes geliefert, in welchem kein Befehl
von irgendeinem anderen differenzierbar ist. In einem Prozeß
erscheinen (im allgemeinen) die Befehle in einer aufeinander
folgenden Ordnung. Um die Computergeschwindigkeit aufrechtzuer
halten, müssen die Befehle aus den Quellen in einer Taktperiode
herangeholt werden. Dies bedeutet, daß das Ende des ersten Be
fehls, dessen Länge unbekannt ist, in einer Taktperiode be
stimmt werden muß, so daß der nächste Befehl während der näch
sten Taktperiode ausgewählt werden kann. Um die Länge eines zu
einer beliebigen Zeit verarbeiteten Befehls zu bestimmen, deco
dierten frühere Intel-Mikroprozessoren zuerst den Befehl, um
seinen Inhalt festzustellen. Wenn dies ausgeführt worden war,
wurde die Länge des Befehls verarbeitet, und der Startpunkt für
den nächsten Befehl in der Sequenz war bekannt und konnte zur
Vor-Heranhol-Einheit zurückgekoppelt werden. Dies erzwang das
Decodieren der Befehle in sämtlichen früheren Computern auf der
Grundlage der Intel-Mikroprozessoren, die seriell betrieben
wurden.
Da eine superskalare Maschine zumindest zwei Befehle
gleichzeitig verarbeiten muß, muß sie zwei Befehle gleichzeitig
decodieren. Um jedoch den Beginn eines zweiten Befehls aus dem
verfügbaren Befehlsstrom auszuwählen, muß bekannt sein, wo ein
erster Befehl endet. Doch nur durch Decodieren kann die Ma
schine die Länge des ersten Befehls, und folglich den Beginn
des zweiten Befehls erfahren. Der gesamte Zweck des superskala
ren Computers, nämlich zwei Befehle zur gleichen Zeit zu verar
beiten, ist vereitelt, wenn die Verarbeitung des zweiten Be
fehls das Decodieren des ersten Befehls abwarten muß, bevor sie
beginnen kann.
Folglich ist es eine Aufgabe der Erfindung, eine Anordnung
zur Verfügung zu stellen, die es einem superskalaren Computer
gestattet, gleichzeitig zwei Befehle unbekannter Länge zu ver
arbeiten, welche in einer Sequenz ohne eine Differenzierung
zwischen den Befehlen zur Verfügung gestellt werden. Diese An
ordnung soll auch die Länge von Befehlen bestimmen, die von dem
superskalaren Computer verarbeitet werden, ohne daß die Befehle
zur Ausführung dieser Bestimmung jedesmal decodiert werden müs
sen.
Zur Lösung dieser Aufgabe sieht die Erfindung eine Einrich
tung mit den Merkmalen des Anspruchs 1 bzw. ein Verfahren mit
den Merkmalen des Anspruchs 8 vor.
Vorteilhafte Aus- und Weiterbildungen der Erfindung sind in
den Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand von in der Zeichnung
dargestellten Ausführungsbeispielen näher beschrieben. In der
Zeichnung zeigen:
Fig. 1 ein Blockdiagramm einer Anordnung nach der Erfindung
zum gleichzeitigen Verarbeiten von zwei Befehlen;
Fig. 2 eine detailliertere Beschreibung eines ersten Ab
schnittes der Anordnung gemäß Fig. 1;
Fig. 3 eine detailliertere Beschreibung eines zweiten Ab
schnittes der Anordnung gemäß Fig. 1;
Fig. 4 eine Veranschaulichung der Bit-Positionen innerhalb
verschiedener Elemente der Anordnung gemäß Fig. 1
während des Betriebs;
Fig. 5 ein Ablaufdiagramm zur Veranschaulichung eines nach
der Erfindung ausgeführten Verfahrens; und
Fig. 6A-C Details der Schaltungsanordnung zum Implementie
ren der in Fig. 3 gezeigten Anordnung.
Einige Abschnitte der folgenden Figurenbeschreibung sind in
Form von symbolischen Darstellungen von Operationen an Daten
bits innerhalb eines Computerspeichers dargestellt. Diese Be
schreibungen und Darstellungen sind die durch Fachleute auf dem
Gebiet der Datenverarbeitung verwendeten Mittel, um am effek
tivsten anderen Fachleuten das Wesen ihrer Arbeit mitzuteilen.
Diese Operationen erfordern physikalische Manipulationen von
physikalischen Größen. Gewöhnlich, aber nicht notwendigerweise
nehmen diese Größen die Form elektrischer oder magnetischer Si
gnale an, die gespeichert, übertragen, kombiniert, verglichen
oder auf andere Weise manipuliert werden können. Prinzipiell
aus Gründen der allgemeinen Verwendung hat es sich mit der Zeit
als vorteilhaft erwiesen, diese Signale als Bits, Werte, Ele
mente, Symbole, Zeichen, Terme, Nummern o. ä. zu bezeichnen. Es
sei jedoch daran erinnert, daß all diese und ähnliche Ausdrücke
geeigneten physikalischen Größen zugeordnet sein sollen und nur
geeignete, für diese Größen verwendete Bezeichnungen sind.
Darüberhinaus werden die ausgeführten Manipulationen oft
mals mit Ausdrücken, wie beispielsweise Addieren oder Verglei
chen bezeichnet, welche im allgemeinen geistigen, durch einen
Menschen ausgeführten Operationen zugeordnet werden. In den
meisten Fällen jeder der hier beschriebenen Operationen, welche
einen Teil der Erfindung bilden, ist eine solche Fähigkeit ei
nes menschlichen Bedieners weder notwendig noch erwünscht; die
Operationen sind Maschinenoperationen. In sämtlichen Fällen
sollte der Unterschied zwischen den Verfahrensoperationen beim
Betrieb eines Computers und dem Verfahren der Berechnung selbst
berücksichtigt werden. Die Erfindung bezieht sich auf ein Ver
fahren und eine Einrichtung für den Betrieb eines Computers bei
der Verarbeitung elektrischer oder anderer (z. B. mechanischer,
chemischer) physikalischer Signale, um andere gewünschte physi
kalische Signale zu erzeugen.
Im folgenden wird auf Fig. 1 Bezug genommen, in der ein
Blockdiagramm einer Anordnung 10 zum Ausführen der Erfindung
gezeigt ist. Die Anordnung 10 enthält einen Cache-Speicher 12
zum Speichern der zuletzt verwendeten Befehle. Typischerweise
wird ein solcher Cache-Speicher durch einen Zentralprozessor
verwendet, um einen schnellen Zugriff auf Informationen ohne
die Notwendigkeit des Zugriffs auf den Hauptspeicher zu ermög
lichen. Bei der Schaltungsanordnung, mit welcher die Erfindung
arbeitet, ist der Cache-Speicher 12 die übliche Quelle der
durch den Zentralprozessor verwendeten Befehle, obwohl einige
Befehle über den Systembus aus dem Hauptspeicher und Vor-Heran
hol-Pufferspeichern ankommen. Da die Quelle der Informationen
keinen Einfluß auf die Darlegung der Erfindung hat, ist nur der
Cache-Speicher 12, als Quelle in Fig. 1 gezeigt. In einem bevor
zugten Ausführungsbeispiel der Erfindung enthält der Cache-
Speicher 8 KBit Speicher, der in Zeilen von jeweils 256 Bits
Breite angeordnet ist. Eine Gesamtzahl von 256 Zeilen stellt
eine ausreichende Speichermenge für diese Menge von Befehlsda
ten zur Verfügung. Die Details des verwendeten speziellen Ca
che-Speichers 12 sind für diese Erfindung nicht relevant und
werden folglich in dieser Beschreibung nicht ausführlich erläu
tert.
Zusätzlich zu dem zum Speichern von Befehlen verwendeten
Cache-Speicher 12 verwendet die Anordnung einen Ende-Bit-Cache-
Speicher 14. Der Ende-Bit-Cache-Speicher 14 wird verwendet, um
Bits zu speichern, welche das Ende jedes Bytes von in dem Ca
che-Speicher 12 gespeicherten Befehlsdaten zu kennzeichnen. Im
bevorzugten Ausführungsbeispiel der Erfindung ist in dem Cache-
Speicher 14 ein einzelnes Bit gespeichert, das das Ende eines
Bytes eines in dem Cache-Speicher 12 gespeicherten Befehls
kennzeichnet. Ein Beispiel des Musters der in dem Befehls-Ca
che-Speicher 12 und dem Ende-Bit-Cache-Speicher 14 gespeicher
ten Informationen ist in Fig. 4 gezeigt und wird anschließend
detaillierter erörtert. Der Cache-Speicher 14 des bevorzugten
Ausführungsbeispiels enthält die gleiche Anzahl von Zeilen
(256) wie der Cache-Speicher 12, aber jede Zeile des Cache-
Speichers 14 ist nur 32 Bit breit, da nur 32 Byte in einer 256-
Bit-Zeile des Cache-Speichers 12 gespeichert werden können. Es
ist möglich, in einem speziellen Computer Ende-Bits zu verwen
den, welche eine andere Länge als die eines Bytes eines Spei
chers anzeigen (beispielsweise ein Halbwort), wenn die andere
Länge ein geeigneteres Maß für den speziellen Prozessor ist.
Jede Zeile des Befehls-Cache-Speichers 12 und die zugeord
nete Zeile des Ende-Bit-Cache-Speichers 14 teilen sich die
gleichen Tag-Bits, so daß die zugeordneten Zeilen beider Spei
cher bei einem Zugriff gemeinsam von einem Treffer oder von ei
nem Fehlversuch betroffen sind. Die in dem Cache-Speicher 14
gespeicherten Ende-Bits werden verwendet, um das Ende jedes in
dem Cache-Speicher 12 sequentiell gespeicherten Befehls zu
kennzeichnen, so daß eine Bestimmung der Länge jedes verarbei
teten Befehls ausgeführt werden kann, bevor der Befehl deco
diert wird. Auf diese Weise kann die Arbeitsrate eines super
skalaren Computers aufrechterhalten werden, obwohl Befehle va
riierender Länge ohne irgendeine Anzeige ihrer Länge bis zu ih
rer Decodierung sequentiell in durch den Prozessor abgearbeiten
Programmen erscheinen.
Die spezielle Zeile des Cache-Speichers 12, auf die wegen
eines durch den Zentralprozessor zu verwendenden Befehls zuge
griffen wurde, wird an einen Rotierer 15 und die zugeordnete
Zeile von Bits aus dem Cache-Speicher 14 an einen Rotierer 16
geliefert. D.h., wenn auf die dritte Zeile des Cache-Speichers
12 wegen eines bestimmten Befehls zugegriffen wird, dann wird
auch auf die dritte Zeile des Cache-Speichers 14 auf die den in
der zugegriffenen Zeile des Cache-Speichers 12 gespeicherten
Befehlen zugeordneten Ende-Bits zugegriffen. Die Mittel zum Zu
greifen auf die Cache-Speicher sind bekannt und für die Erfin
dung nicht relevant und werden folglich in der vorliegenden Be
schreibung nicht näher erörtert. Es hält sich folglich für jede
Zeile von Befehlscodes in dem Cache-Speicher 12 eine Zeile von
Ende-Bits in dem Cache-Speicher 14 auf; und für jede aus dem
Cache-Speicher 12 durch den Rotierer 15 übertragene Code-Zeile
wird eine in dem Cache-Speicher 14 gespeicherte Zeile von Ende-
Bits durch den Rotierer 16 übertragen.
Der Wert eines zuvor herangeholten Befehlszählers wird an
jeden der Rotierer 15 und 16 geliefert, um den Beginn des er
sten der beiden zu verarbeitenden Befehle auszuwählen und um
den Anfang dieses ersten Befehls für eine Verarbeitung geeignet
auszurichten. In ähnlicher Weise wählt der Wert des Befehlszäh
lers das anfängliche Ende-Bit für den zu verarbeitenden Befehl
aus und gleicht es ab. Dieser Befehlszählerwert wird aus der
Berechnung der kombinierten Länge der letzten beiden verarbei
teten Befehle gewönnen. Die Details einer Schaltung zur Erzeu
gung der Werte eines Vor-Heranhol-Befehlszählers sind in der
U.S.-Patentanmeldung mit dem Titel "Rotators in Length Calcula
tion" von E. Grochowski u. a. beschrieben.
Ein Rotierer, welcher zum Ausführen der Zwecke des Rotie
rers 15 verwendet werden kann, ist im Detail in der U.S.-Pa
tentanmeldung mit dem Titel "Two Stage Window Multiplexers for
Deriving Variable Length Instructions from a Stream Of Instruc
tions" von E. Grochowski beschrieben. Diese Patentanmeldung be
schreibt außerdem detailliert bekannte Rotierer, welche für die
Rotierer 16 und 20 der vorliegenden Erfindung verwendet werden
können. Der grundlegende Zweck der Rotierer 15 und 20 ist, eine
Sequenz von Bytes zu gewinnen, die lang genug ist, um die ver
arbeiteten Befehle zu enthalten und um diese Befehle so abglei
chen zu können, daß der Beginn eines bestimmten zuerst zu ver
arbeitenden Befehls in dem folgenden Verarbeitungskanal ist.
Der Rotierer 16 führt die gleiche Rotation bei den das Ende je
des Bytes in der zugeordneten Zeile kennzeichnenden Bits aus.
Die ausgewählte Befehlszeile mit dem verarbeiteten und geeignet
ausgerichteten Befehl wird von dem Rotierer 15 zu einem U-Pipe
line-Befehlscode-Flip-Flop 18 zur Verarbeitung übertragen. Die
U-Pipeline ist eine von zwei Verarbeitungskanälen, die in dem
die Erfindung verwendenden superskalaren Computer verwendet
werden. Der zweite Verarbeitungskanal ist als V-Pipeline be
zeichnet. Der nach dem durch die U-Pipeline verarbeiteten Be
fehl nächstfolgende Befehl wird an den V-Pipeline-Kanal in der
folgenden Weise geliefert. Die Ende-Bits des Ende-Bit-Cache 14,
die sich auf die von dem Rotierer 15 zu der U-Pipeline übertra
genen Zeile von Befehlen beziehen, werden an eine Prioritäts
schaltung 19 übertragen und durch den Rotierer 16 ausgerichtet.
Wenn folglich eine Zeile von Befehlen, die an dem Beginn eines
ersten 4-Byte-Befehls ausgerichtet ist, zu dem U-Pipeline-Flip-
Flop 18 übertragen worden ist, werden die Ende-Bits ausgerich
tet mit dem Beginn des ersten der vier Bits, die sich auf den
4-Byte-Befehl beziehen, zu der Prioritätsschaltung 19 übertra
gen.
Die Prioritätsschaltung 19 wählt dann das erste Ende-Bit
aus, welches auf Eins gesetzt ist. Um diese Operation auszufüh
ren, kann die Prioritätsschaltung eine Reihe von UND-Gattern
enthalten, jeweils eines für jedes der Ende-Bits, die durch den
Rotierer 16 übertragen werden. Wenn jedes der aufeinanderfol
genden UND-Gatter mit einer Eingabe von einer der aufeinander
folgenden Bitpositionen der ausgerichteten Zeile von Ende-Bits
beliefert wird, dann können die eine Eins als ein Ende-Bit emp
fangenden Gatter zum Übertragen eines 1-Werts veranlaßt werden.
Das erste dieser Ende-Bits wird ausgewählt, indem die UND-Gat
ter als andere Eingangssignale das invertierte Eingangssignal
von jedem nachfolgenden Ende-Bit in der Sequenz erhalten. Folg
lich überträgt nur das erste einem Ende-Bit vom Wert 1 zugeord
nete UND-Gatter einen Wert von 1. Das spezielle UND-Gatter der
Prioritätsschaltung 19, das einen Wert 1 erzeugt, zeigt die
Länge des Befehls in Bytes und das Ende des durch die U-Pipe
line verarbeiteten Befehls an. Folglich zeigt dieser erste Wert
von 1, wo der erste Befehl endet und der zweite beginnt und
kann verwendet werden, um die Befehle zur Verarbeitung zu tei
len. Eine Prioritätsschaltung, wie sie beschrieben wurde, ist
in Fig. 2 dargestellt. Wie zu sehen sein wird, ist in der
Schaltung 19 gemäß Fig. 2 der Ausgang 0 von der höchsten Prio
rität, während der Ausgang 3 die niedrigste Priorität dar
stellt.
Die durch die Prioritätsschaltung 19 erzeugten Ergebnisse
werden dann verwendet, um einen dritten Rotierer 20 zu veran
lassen, den durch den Rotierer 15 gelieferten Befehlsstrom zu
rotieren, so daß das erste Byte des nächstfolgenden Befehls zur
Verarbeitung durch den V-Pipeline-Kanal ausgerichtet wird. Die
ser ausgerichtete Befehlsstrom wird zu einem V-Pipeline-Flip-
Flop 22 übertragen, so daß der Befehl, welcher ausgerichtet
ist, in der gleichen Zeit verarbeitet werden kann, in der der
vorangegangene Befehl durch den U-Pipeline-Kanal verarbeitet
wird. Vom U-Pipeline-Flip-Flop 18 wird der U-Pipeline-Befehl zu
einem U-Pipeline-Decodierer 24 übertragen, wo er zur weiteren
Verwendung decodiert wird. Von dem V-Pipeline-Flip-Flop 22 wird
der V-Pipeline-Befehl zu einem V-Pipeline-Decodierer 25 über
tragen, wo er zur weiteren Verwendung decodiert wird. Von die
sem Punkt an schreiten die Befehle durch getrennte Verarbei
tungskanäle in einer Weise voran, welche nicht Gegenstand die
ser Beschreibung ist.
Jedoch wird die Länge des Befehls in dem U-Pipeline-Deco
dierer 24 bestimmt, wenn der Befehl decodiert wird, und zu ei
nem Komparator 27 übertragen. Die Einrichtung zum Ausführen
dieser Bestimmung ist detailliert in der oben genannten U.S.-
Patentanmeldung mit dem Titel "Rotators in Length Calculation"
beschrieben. Der Komparator 27 empfängt außerdem von der Prio
ritätsschaltung 19 über ein Ende-Bit-Flip-Flop 28 eine Anzeige
der Länge, die bestimmt wurde durch die Prioritätsschaltung 19
beim Auswählen des ersten auf Eins gesetzten verfügbaren Ende-
Bits in der Sequenz von ausgerichteten Bits aus dem Rotierer
16. Wie oben ausgeführt wurde, zeigte das spezielle UND-Gatter
der Prioritätsschaltung 19, das einen Wert 1 erzeugte, die
Länge des Befehls in Bytes an. Diese Längen werden verglichen.
Wenn die überprüften Längen differieren, wird das Ergebnis des
Vergleichs zu einem Ende-Bit-Generator 30 als Aufforderung zur
Aktualisierung des speziellen Ende-Bits übertragen.
Der Ende-Bit-Generator 30 empfängt ein zweites Eingangssi
gnal vom Befehlszähler, wie es auch an die Rotierer 15 und 16
geliefert wird, und speichert diesen Wert. Der Ende-Bit-Genera
tor weiß somit, wo der durch die U-Pipeline verarbeitete Befehl
beginnt. Außerdem empfängt der Generator den Längenwert aus dem
Decodierer 24, so daß er die korrekte Länge des Befehls kennt.
Folglich hat der Ende-Bit-Generator 30 die erforderlichen In
formationen über den Befehl, für welchen die Ende-Bits in dem
Cache-Speicher 14 korrigiert werden müssen. Die Korrektur der
Ende-Bits in dem Cache-Speicher 14 wird dann während einer Zeit
ausgeführt, welche unkritisch für die Verarbeitung der Daten
ist.
Fig. 3 stellt eine Ende-Bit-Korrekturschaltung 30 im Detail
dar. Die Schaltung 30 empfängt einen 6-Bit-Binärwert, der den
Befehlszähler für den zu verarbeitenden Befehl der U-Pipeline
anzeigt. Dieser Wert wird durch einen Decodierer 32 decodiert
und zu einem Maskenvektorgenerator 33 als ein sequentieller 64-
Bit-Vektor übertragen, in welchem nur die Bitposition des Be
fehlszählers auf eine Eins gesetzt ist. Der 6-Bit-Wert des Be
fehlszählers wird außerdem zu einem Addierer 34 übertragen,
welcher einen binären 4-Bit-Wert empfängt, der die Länge des
durch die Prioritäts-Schaltung 19 erzeugten Befehls anzeigt.
Diese Werte werden addiert, um einen Wert zur Verfügung zu
stellen, welcher auf das Ende des ersten Befehls zeigt und wel
cher an einen zweiten Decodierer 35 gesendet wird. Der Decodie
rer 35 erzeugt einen zweiten 64-Bit-Vektor, der eine Eins an
der Position des korrekten Ende-Bits für den ersten Befehl hat.
Der durch den Decodierer 35 erzeugte 64-Bit-Vektor wird in
einer Latch-Schaltung 37 gespeichert. Der Vektor wird außerdem
als zweites Eingangssignal an den Maskenvektorgenerator 33 ge
sendet. Der Maskenvektorgenerator 33 erzeugt einen 64-Bit-Vek
tor, der als Maske zum Korrigieren der Ende-Bits verwendet wer
den soll. Diese Maske speichert Nullen, beginnend mit der Bitpo
sition, welche das Byte anzeigt, auf welches der Befehlszähler
zeigt, und fortgesetzt bis zu der Bitposition, die das Byte an
zeigt, vor dem der Befehl endet. Sämtliche anderen Bits sind
auf Eins gesetzt. Dieses Ergebnis ist in dem Diagramm in Fig.
6A gezeigt.
Der Maskenvektorgenerator 33 kann durch 64 Stufen implemen
tiert werden, von welchen eine in Fig. 6B dargestellt ist. Jede
Stufe 50 empfängt ein Eingangssignal, welches eine der Bitposi
tionen in dem durch den Decodierer 32 erzeugten Vektor anzeigt,
ein zweites Eingangssignal, welches die gleiche Bitposition des
durch den Decodierer 35 erzeugten Vektors anzeigt, und das Aus
gangssignal der Stufe, die die Bits von den Vektoren in der
Bitposition unmittelbar vor dieser Bitposition empfängt (die
Stufe unmittelbar rechts davon). Die erste Stufe empfängt das
Ausgangssignal der letzten Stufe 50 in der Sequenz. Wie man
sieht, empfängt das UND-Gatter 52 den Wert des Bits an einer
bestimmten Position aus dem durch den Decodierer 35 erzeugten
Vektor und den invertierten Wert des Bits an der gleichen Posi
tion in dem durch den Decodierer 32 erzeugten Vektor. Folglich
erzeugt das UND-Gatter 52 eine Eins nur an der Bitposition, an
welcher das Bit des Vektors aus dem Decodierer 35 einen Wert
Eins hat. Diese Eins wird durch ein ODER-Gatter 54 zum Ausgang
der Stufe 50 übertragen. Ein zweites UND-Gatter 56 empfängt in
vertierte Eingangswerte einer bestimmten Bitposition von jedem
der durch die Decodierer 32 und 35 erzeugten Vektoren und das
Ausgangssignal der vorhergehenden Stufe 50. Das UND-Gatter 56
erzeugt einen Ausgabewert von Eins in einer Bitposition, an der
die beiden Vektoren die Werte Null enthalten und wo die voran
gegangene Stufe einen Wert Eins erzeugte. Es erzeugt einen Aus
gangswert von Null an jeder Bitposition, an welcher die beiden
Vektoren die Werte Null halten und die vorhergehende Stufe
einen Wert Null erzeugte. Das Gatter 56 erzeugt ebenfalls einen
Ausgangswert von Null, wo die Bits der beiden Vektoren aus den
Dedodierern differieren. Die durch das Gatter 56 erzeugten
Eins-Werte werden ebenfalls durch das ODER-Gatter 54 zu den
Ausgängen der Stufe übertragen.
Folglich ist zu sehen, daß beginnend mit der Stufe, an wel
cher der Befehlszählervektor aus dem Decodierer 32 einen Wert
Eins hält, das Ausgangssignal des Maskenvektorgenerators 33
einen Wert Null hat. Eine Ausgabe von Null wird an jeder nach
folgenden Stufe erzeugt bis zu der Stufe, an welcher der Vektor
aus dem Decodierer 35, der das Ende des Befehls anzeigt, eine
Eins ist. Diese Stufe und alle nachfolgenden Stufen sowie um
laufend alle Stufen vom Beginn der Maske bis zu der Stufe 50
unmittelbar vor der Stufe 50, welche den Beginn des Befehls
markiert, erzeugen Werte von 1.
Dieser Masken-Bit-Vektor wird in einer Latch-Schaltung 39
zwischengespeichert. Der Maskenvektorgenerator 33 zeigt außer
dem an, ob der Befehl umläuft und zwei Cache-Zeilen überspannt,
so daß er zwei Cache-Schreiboperationen zum Ausführen der Kor
rektur erfordert. Dies kann festgestellt werden, indem bestimmt
wird, ob das vom Decodierer 35 gelieferte korrekte Ende-Bit dem
Befehlszähler-Bit in der Sequenz der Bits vorangeht. In Fig. 6C
ist außerdem eine Schaltung 60 dargestellt, welche dieses Er
gebnis erzeugt. Die Schaltung 60 enthält ein Zählerpaar 60 und
61, welches die Bitpositionen bis zu der Eins in jedem Vektor
zählt, und einen Komparator 63 zum Feststellen, ob der Vektor
aus dem Decodierer oder jener aus dem Decodierer 35 größer ist.
Jedes Bit der Maske in der Latch-Schaltung 39 wird bei den
UND-Gattern 41 mit jedem der Bits aus der in dem Ende-Bit-Cache
14 gespeicherten alten Zeile UND-verkoppelt. Da die Maske Ein
sen in sämtlichen Positionen mit Ausnahme jener Bits, die den
Befehl von seinem Beginn bis zu seinem vorletzten Byte definie
ren, enthält, wird jedes Bit der alten Ende-Bit-Cache-Zeile re
produziert mit Ausnahme der Bits, die den Befehl bis zu seinem
vorletzten Byte anzeigen. Jedes der Bits des durch jedes der
UND-Gatter 41 erzeugten Bit-Vektors wird dann durch eine Reihe
von ODER-Gattern 42 ODER-verkoppelt, wobei der Bitvektor in der
Latch-Schaltung 37 gehalten wird. Da dieser Vektor eine Eins
nur in der Bitposition enthält, die das korrekte letzte Byte
des ersten Befehls anzeigt, hat der aus dem ODER-Gatter 42 re
sultierende Bitvektor an allen Bitpositionen der alten Cache-
Zeile entsprechende Einsen oder Nullen mit Ausnahme der Bits,
die die Bytes des ersten Befehls anzeigen. Sämtliche Bits, die
die Bytes des ersten Befehls vom Beginn bis zum vorletzten Byte
anzeigen, sind gleich Null, während das letzte Bit eine Eins
ist. Dieser Bitvektor kann dann eingeschrieben werden, um die
alte Zeile in dem Ende-Bit-Cache 14 zu ersetzen. Sofern erfor
derlich, kann die Operation für eine zweite Cache-Zeile wieder
holt werden, wenn der Befehl zwei Cache-Zeilen überspannt.
Wenn der Vergleich durch die Vergleichsschaltung 27 gemäß
Fig. 2 ausgeführt wird und ein ungültiges Ergebnis gewonnen
wird (die Längen ungleich sind), wird das ungültige Ergebnis
außerdem zum V-Pipeline-Kanal gesendet, um die Verarbeitung des
zweiten der beiden Befehle durch den V-Pipeline-Kanal zu sper
ren. Auf diese Weise wird der unkorrekt in dem Rotierer 20 aus
gerichtete Befehl einfach verworfen, während die Verarbeitung
des Befehls im U-Pipeline-Kanal in der normalen Weise fortge
setzt wird. Es sei angemerkt, daß der neue Befehlszähler durch
Addieren der korrekten Längen für jeden durch den U-Pipeline-
und den V-Pipeline-Kanal verarbeiteten Befehl gewonnen wird.
Wenn der V-Pipeline-Kanal infolge eines für den Befehl in dem
U-Pipeline-Kanal unkorrekt gesetzten Ende-Bits gesperrt wird,
enthält der neue Befehlszähler nur die Länge des ersten Be
fehls. Folglich wird der abgebrochene Befehl der nächste durch
den U-Pipeline-Kanal abzuarbeitende Befehl.
Um ein anfängliches Ende-Bit für jeden in den Cache-Spei
cher 12 gespeicherten Befehl zu erhalten, wird jedes Ende-Bit
jedes Bytes eines neuen Befehls auf Eins gesetzt, wenn der Be
fehl in den Cache-Speicher 12 eingesetzt wird. Für den Fachmann
ist es klar, daß somit jeder Einzelbytebefehl, wenn er das er
ste Mal in den Cache-Speicher 12 plaziert wird, ein korrekt ge
setztes Ende-Bit aufweist, das anzeigt, daß er ein 1-Byte-Be
fehl ist. Jedoch sind bei sämtlichen Befehlen, die länger als
ein Byte sind, die Ende-Bits sämtlicher Bytes gesetzt, was zu
einer unkorrekten Anzeige der Länge des Befehls führt. Folglich
ist, wenn auf einen in dem Cache-Speicher 12 gespeicherten Be
fehl das erste Mal zugegriffen wird, seine Länge unkorrekt, es
sei denn, er ist ein 1-Byte-Befehl. Folglich wird bei jedem Be
fehl mit einer Länge von mehr als einem Byte sein Ende-Bit kor
rigiert, wenn auf ihn das erste Mal zugegriffen wird, so daß
das korrekte Ende-Bit anschließend angezeigt wird. Es wurde ge
funden, daß beim Zugreifen von in dem Cache-Speicher 12 gespei
cherten Befehlen eine Trefferrate von ungefähr 95% erreicht
wurde, da während irgendeiner Periode, in welcher die Befehle
verwendet werden, im allgemeinen die gleichen Befehle immer
wieder benutzt werden. Da die Ende-Bits beim ersten Zugriff auf
einen Befehl, nachdem er in den Cache-Speicher 12 versetzt wor
den ist, korrekt gesetzt werden, sind die meisten Zugriffe des
Cache-Speichers 12 zweite oder spätere Zugriffe. Folglich be
wirkt die Notwendigkeit zur Korrektur des Ende-Bits beim ersten
Zugriff eine sehr geringe Verzögerung innerhalb des Systems.
Fig. 4 ist ein Beispiel der in den einander zugeordneten
Zeilen des Befehls-Cache-Speichers 12 und des Ende-Bit-Cache 14
enthaltenen Informationen. Wie zu sehen ist, beginnt ein erster
Befehl beim Byte 02, was durch den Vor-Heranhol-Zeiger bzw. Be
fehlszähler als 02 (hex) angezeigt wird. Dieser erste Befehl
ist in den Bytes 02 bis 06 gespeichert. Das Ende des ersten Be
fehls im Byte 06 ist durch eine binäre Eins im Bit 06 des Ende-
Bit-Cache angezeigt. Der Befehlscode des ersten Befehls und der
aktuelle Befehl sind in der Figur angezeigt. Der Befehlscode
des zweiten Befehls beginnt beim Byte 07 der Befehls-Cache-
Zeile und setzt sich fort, bis die nächste binäre Eins in dem
Ende-Bit-Cache 14 an der zum Byte 0C in dem Befehls-Cache 12
äquivalenten Position auftritt. Der Befehlscode für den zweiten
Befehl und der decodierte Befehl sind in der Figur gezeigt. Die
Ende-Bits des ersten Befehls und die Position des nächsten
Heranhol-Zeigers sind ebenfalls in der Figur gezeigt.
Fig. 5 listet der Reihe nach die Schritte der Operation zum
Ausführen der Erfindung auf. Jeder dieser Schritte wurde oben
detailliert erörtert. An den Stellen, an denen zwei Schritte in
dem gleichen Kasten der Figur plaziert sind, werden diese
Schritte parallel innerhalb der gleichen Taktperiode ausge
führt.
Im Rahmen des Erfindungsgedankens sind zahlreiche Modifika
tionen und Abänderungen möglich. Beispielsweise ist es klar,
daß obwohl das bevorzugte Ausführungsbeispiel der Erfindung
einen separaten Cache-Speicher zum Speichern der den Bytes je
des Befehls zugeordneten Ende-Bits verwendet wird, diese Ende-
Bits ebenso gut in dem Cache-Speicher 12 gespeichert werden
können, indem die Länge des Cache-Speichers 12 erweitert wird,
um zwischen jedem Byte der Befehlsdaten Raum für diese Bits zu
schaffen.
Claims (14)
1. Einrichtung zum Bestimmen der Länge eines von einem Com
putersystem zu verarbeitenden Befehls, wobei die Befehle in der
Länge variieren und sequentiell in einem Befehlsstrom ohne Dif
ferenzierung erscheinen,
gekennzeichnet durch:
Mittel (14), welche ein Ende-Bit für jede vorgegebene Länge eines Befehls zur Verfügung stellen, um anzuzeigen, daß der Be fehl an diesem Punkt seiner Länge endet;
Mittel (27, 30) zum Setzen des Ende-Bits an derjenigen vor gegebenen Länge des Befehls, welche das aktuelle Ende des Be fehls ist;
einen ersten Kanal (18, 24) zum Verarbeiten eines ersten Befehls in einer Sequenz;
einen zweiten Kanal (22, 25) zum Verarbeiten eines dem er sten Befehl unmittelbar folgenden Befehls; und
Mittel (16, 19, 28), zum Betrachten der Ende-Bits eines durch den ersten Kanal verarbeiteten Befehls und zum Bestimmen des Endpunkts dieses Befehls und des Beginns des nächsten Be fehls aus dem Befehlsstrom.
Mittel (14), welche ein Ende-Bit für jede vorgegebene Länge eines Befehls zur Verfügung stellen, um anzuzeigen, daß der Be fehl an diesem Punkt seiner Länge endet;
Mittel (27, 30) zum Setzen des Ende-Bits an derjenigen vor gegebenen Länge des Befehls, welche das aktuelle Ende des Be fehls ist;
einen ersten Kanal (18, 24) zum Verarbeiten eines ersten Befehls in einer Sequenz;
einen zweiten Kanal (22, 25) zum Verarbeiten eines dem er sten Befehl unmittelbar folgenden Befehls; und
Mittel (16, 19, 28), zum Betrachten der Ende-Bits eines durch den ersten Kanal verarbeiteten Befehls und zum Bestimmen des Endpunkts dieses Befehls und des Beginns des nächsten Be fehls aus dem Befehlsstrom.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß
die das Ende-Bit zur Verfügung stellenden Mittel einen ersten
Cache-Speicher (14) zum Speichern von Ende-Bits und einen Be
fehls-Cache-Speicher (12) zum Speichern der zu verarbeitenden
Befehle, welchen die Ende-Bits in dem ersten Cache-Speicher
(14) zugeordnet sind, aufweisen.
3. Einrichtung nach Anspruch 1 oder 2, dadurch gekennzeich
net, daß ferner Mittel (20) vorgesehen sind, die auf den von
den Betrachtungsmitteln (16, 19) bestimmten Beginn des nächsten
Befehls aus dem Befehlsstrom antworten, um einen nächsten Be
fehl zur Verarbeitung durch den zweiten Kanal (22, 25) zur Ver
fügung zu stellen.
4. Einrichtung nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß die Mittel zum Setzen des Ende-Bits Mittel
(24) zum Bestimmen der Länge eines Befehls nach dessen Decodie
rung, Mittel (27) zum Vergleichen der aktuellen Länge mit der
von den Betrachtungsmitteln (16, 19, 28) gelieferten Länge und
Mittel (30) zum Rücksetzen eines Ende-Bits, das nicht die aktu
elle Länge eines Befehls repräsentiert, aufweisen.
5. Einrichtung nach Anspruch 4, dadurch gekennzeichnet, daß
die Betrachtungsmittel (16, 19, 28) Rotationsmittel (16) zum
Ausrichten der Ende-Bits eines Befehlsstroms mit dem ersten
Byte eines zu verarbeitenden Befehls und Mittel (19) zum Aus
wählen des ersten auf Eins gesetzten Ende-Bits aus den ausge
richteten Bits aufweisen.
6. Einrichtung nach Anspruch 5, dadurch gekennzeichnet, daß
die Rotationsmittel (16) auf einen Befehlszeiger ansprechen, um
die Ende-Bits auszurichten.
7. Einrichtung nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß die vorgegebene Länge des Befehls ein Byte
ist.
8. Verfahren zum Bestimmen der Länge eines von einem Com
putersystem zu verarbeitenden Befehls, bei dem die Befehle in
der Länge variieren und sequentiell in einem Befehlsstrom ohne
Differenzierung erscheinen,
dadurch gekennzeichnet,
daß für jede vorgegebene Länge eines Befehls ein Ende-Bit zur Verfügung gestellt wird, um anzuzeigen, daß der Befehl an diesem Punkt in seiner Länge endet,
daß das Ende-Bit an einer vorgegebenen Länge des Befehls, welche das aktuelle Ende des Befehls ist, gesetzt wird,
daß ein erster Befehl in einer Sequenz mit Hilfe eines er sten Verarbeitungskanals verarbeitet wird,
daß ein dem ersten Befehl unmittelbar folgender Befehl mit Hilfe eines zweiten Verarbeitungskanals verarbeitet wird, und
daß die Ende-Bits eines durch den ersten Kanal zu verarbei tenden Befehls betrachtet werden, um den Endpunkt dieses Be fehls und den Beginn des nächsten Befehls aus dem Befehlsstrom zu bestimmen.
daß für jede vorgegebene Länge eines Befehls ein Ende-Bit zur Verfügung gestellt wird, um anzuzeigen, daß der Befehl an diesem Punkt in seiner Länge endet,
daß das Ende-Bit an einer vorgegebenen Länge des Befehls, welche das aktuelle Ende des Befehls ist, gesetzt wird,
daß ein erster Befehl in einer Sequenz mit Hilfe eines er sten Verarbeitungskanals verarbeitet wird,
daß ein dem ersten Befehl unmittelbar folgender Befehl mit Hilfe eines zweiten Verarbeitungskanals verarbeitet wird, und
daß die Ende-Bits eines durch den ersten Kanal zu verarbei tenden Befehls betrachtet werden, um den Endpunkt dieses Be fehls und den Beginn des nächsten Befehls aus dem Befehlsstrom zu bestimmen.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
die Ende-Bits durch Speichern in einem Cache-Speicher zur Ver
fügung gestellt werden, wobei jedes der Ende-Bits eine spe
zielle Länge eines Befehls anzeigt, der in einem Cache-Speicher
zum Speichern von zu verarbeitenden Befehlen gespeichert wird
und dem die Ende-Bits in dem ersten Cache-Speicher zugeordnet
sind.
10. Verfahren nach Anspruch 8 oder 9, dadurch gekennzeich
net, daß ferner in Abhängigkeit von der Bestimmung des Beginns
des nächsten Befehls aus dem Befehlsstrom ein nächster Befehl
zur Verarbeitung durch den zweiten Kanal zur Verfügung gestellt
wird.
11. Verfahren nach einem der Ansprüche 8 bis 10, dadurch
gekennzeichnet, daß zum Setzen des Ende-Bits die Länge eines
Befehls nach seiner Decodierung bestimmt, die aktuelle Länge
mit der beim Schritt des Betrachtens der Ende-Bits zur Verfü
gung gestellten Länge verglichen und ein Ende-Bit zurückgesetzt
wird, welches nicht der aktuellen Länge des Befehls entspricht.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß
beim Betrachten der Ende-Bits die Ende-Bits eines Befehlsstroms
mit dem ersten Byte eines zu verarbeitenden Befehls ausgerich
tet und aus den ausgerichteten Ende-Bits das erste auf Eins ge
setzte Ende-Bit ausgewählt wird.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß
die Ende-Bits in Abhängigkeit von einem Befehlszeiger ausge
richtet werden.
14. Verfahren nach einem der Ansprüche 8 bis 13, dadurch
gekennzeichnet, daß als vorgegebene Länge des Befehls ein Byte
verwendet wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83194292A | 1992-02-06 | 1992-02-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4302495A1 true DE4302495A1 (de) | 1993-08-12 |
DE4302495C2 DE4302495C2 (de) | 1998-08-20 |
Family
ID=25260256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4302495A Expired - Lifetime DE4302495C2 (de) | 1992-02-06 | 1993-01-29 | Einrichtung und Verfahren zum Bestimmen der Länge eines Befehls in einem sequentiellen Befehlsstrom |
Country Status (6)
Country | Link |
---|---|
US (2) | US5450605A (de) |
JP (1) | JPH06236268A (de) |
DE (1) | DE4302495C2 (de) |
GB (1) | GB2263987B (de) |
HK (1) | HK127696A (de) |
SG (1) | SG45269A1 (de) |
Families Citing this family (198)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
US5630082A (en) * | 1993-10-29 | 1997-05-13 | Advanced Micro Devices, Inc. | Apparatus and method for instruction queue scanning |
DE69427265T2 (de) | 1993-10-29 | 2002-05-02 | Advanced Micro Devices, Inc. | Superskalarbefehlsdekoder |
EP0651324B1 (de) * | 1993-10-29 | 2006-03-22 | Advanced Micro Devices, Inc. | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
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 |
US5600806A (en) * | 1994-03-01 | 1997-02-04 | Intel Corporation | Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer |
US5758116A (en) * | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
US5819057A (en) * | 1995-01-25 | 1998-10-06 | Advanced Micro Devices, Inc. | Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
US6006324A (en) * | 1995-01-25 | 1999-12-21 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US5903741A (en) * | 1995-01-25 | 1999-05-11 | Advanced Micro Devices, Inc. | Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions |
US5832249A (en) * | 1995-01-25 | 1998-11-03 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
US5758114A (en) * | 1995-04-12 | 1998-05-26 | Advanced Micro Devices, Inc. | High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor |
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5764946A (en) * | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5991869A (en) * | 1995-04-12 | 1999-11-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a high speed instruction alignment unit |
US5802588A (en) * | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5832297A (en) * | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
US5819059A (en) * | 1995-04-12 | 1998-10-06 | Advanced Micro Devices, Inc. | Predecode unit adapted for variable byte-length instruction set processors and method of operating the same |
US5822558A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
US5900012A (en) * | 1995-05-10 | 1999-05-04 | Advanced Micro Devices, Inc. | Storage device having varying access times and a superscalar microprocessor employing the same |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US5822778A (en) * | 1995-06-07 | 1998-10-13 | Advanced Micro Devices, Inc. | Microprocessor and method of using a segment override prefix instruction field to expand the register file |
US5875315A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Parallel and scalable instruction scanning unit |
US5680578A (en) * | 1995-06-07 | 1997-10-21 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify expanded functionality and a computer system employing same |
US5761712A (en) * | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5878255A (en) * | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US6604190B1 (en) | 1995-06-07 | 2003-08-05 | Advanced Micro Devices, Inc. | Data address prediction structure and a method for operating the same |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US5859991A (en) * | 1995-06-07 | 1999-01-12 | Advanced Micro Devices, Inc. | Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method |
US5768574A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor |
US5860104A (en) * | 1995-08-31 | 1999-01-12 | Advanced Micro Devices, Inc. | Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates |
US5854921A (en) * | 1995-08-31 | 1998-12-29 | Advanced Micro Devices, Inc. | Stride-based data address prediction structure |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US5987561A (en) * | 1995-08-31 | 1999-11-16 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle |
US5893146A (en) * | 1995-08-31 | 1999-04-06 | Advanced Micro Design, Inc. | Cache structure having a reduced tag comparison to enable data transfer from said cache |
US5752069A (en) * | 1995-08-31 | 1998-05-12 | Advanced Micro Devices, Inc. | Superscalar microprocessor employing away prediction structure |
US5845323A (en) * | 1995-08-31 | 1998-12-01 | Advanced Micro Devices, Inc. | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time |
US5826071A (en) * | 1995-08-31 | 1998-10-20 | Advanced Micro Devices, Inc. | Parallel mask decoder and method for generating said mask |
US5794063A (en) * | 1996-01-26 | 1998-08-11 | Advanced Micro Devices, Inc. | Instruction decoder including emulation using indirect specifiers |
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
US5920713A (en) * | 1995-10-06 | 1999-07-06 | Advanced Micro Devices, Inc. | Instruction decoder including two-way emulation code branching |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US6093213A (en) * | 1995-10-06 | 2000-07-25 | Advanced Micro Devices, Inc. | Flexible implementation of a system management mode (SMM) in a processor |
US5926642A (en) * | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5872947A (en) * | 1995-10-24 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions |
US5881278A (en) * | 1995-10-30 | 1999-03-09 | Advanced Micro Devices, Inc. | Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch |
US5933618A (en) * | 1995-10-30 | 1999-08-03 | Advanced Micro Devices, Inc. | Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction |
US5892936A (en) * | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5903910A (en) * | 1995-11-20 | 1999-05-11 | Advanced Micro Devices, Inc. | Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline |
US5787474A (en) * | 1995-11-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline |
US5835744A (en) * | 1995-11-20 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor configured to swap operands in order to minimize dependency checking logic |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5809272A (en) * | 1995-11-29 | 1998-09-15 | Exponential Technology Inc. | Early instruction-length pre-decode of variable-length instructions in a superscalar processor |
US5864707A (en) | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US5740392A (en) * | 1995-12-27 | 1998-04-14 | Intel Corporation | Method and apparatus for fast decoding of 00H and OFH mapped instructions |
US5819080A (en) * | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
US5822559A (en) * | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) * | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5687110A (en) * | 1996-02-20 | 1997-11-11 | Advanced Micro Devices, Inc. | Array having an update circuit for updating a storage location with a value stored in another storage location |
US5787266A (en) * | 1996-02-20 | 1998-07-28 | Advanced Micro Devices, Inc. | Apparatus and method for accessing special registers without serialization |
US5848287A (en) | 1996-02-20 | 1998-12-08 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches |
US5813033A (en) * | 1996-03-08 | 1998-09-22 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache |
US5790821A (en) * | 1996-03-08 | 1998-08-04 | Advanced Micro Devices, Inc. | Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor |
US5752259A (en) * | 1996-03-26 | 1998-05-12 | Advanced Micro Devices, Inc. | Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache |
US5838943A (en) * | 1996-03-26 | 1998-11-17 | Advanced Micro Devices, Inc. | Apparatus for speculatively storing and restoring data to a cache memory |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
US6085302A (en) * | 1996-04-17 | 2000-07-04 | Advanced Micro Devices, Inc. | Microprocessor having address generation units for efficient generation of memory operation addresses |
EP0896700A1 (de) * | 1996-05-01 | 1999-02-17 | Advanced Micro Devices, Inc. | Superskalarer mikroprozessor mit hochleistungseinheit zur befehlsausrichtung |
US5968165A (en) * | 1996-05-08 | 1999-10-19 | Microunity Systems Engineering, Inc. | System and method for minimizing the size of operands |
US5835511A (en) * | 1996-05-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Method and mechanism for checking integrity of byte enable signals |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US5918056A (en) * | 1996-05-17 | 1999-06-29 | Advanced Micro Devices, Inc. | Segmentation suspend mode for real-time interrupt support |
US5748978A (en) * | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
US5845099A (en) * | 1996-06-28 | 1998-12-01 | Intel Corporation | Length detecting unit for parallel processing of variable sequential instructions |
EP0912923A1 (de) * | 1996-07-16 | 1999-05-06 | Advanced Micro Devices, Inc. | Verfahren und vorrichtung zur vordekodierung von befehlen mit variabler bytelänge in einem superskalaren prozessor |
WO1998002799A1 (en) * | 1996-07-16 | 1998-01-22 | Advanced Micro Devices, Inc. | A parallel and scalable instruction scanning unit |
JP2000515275A (ja) * | 1996-07-16 | 2000-11-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ |
US5867680A (en) * | 1996-07-24 | 1999-02-02 | Advanced Micro Devices, Inc. | Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions |
US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
US5903740A (en) * | 1996-07-24 | 1999-05-11 | Advanced Micro Devices, Inc. | Apparatus and method for retiring instructions in excess of the number of accessible write ports |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
US5900013A (en) * | 1996-07-26 | 1999-05-04 | Advanced Micro Devices, Inc. | Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries |
US5872943A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Devices, Inc. | Apparatus for aligning instructions using predecoded shift amounts |
US5941980A (en) * | 1996-08-05 | 1999-08-24 | Industrial Technology Research Institute | Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system |
US5765016A (en) * | 1996-09-12 | 1998-06-09 | Advanced Micro Devices, Inc. | Reorder buffer configured to store both speculative and committed register states |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US5794028A (en) * | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5870579A (en) * | 1996-11-18 | 1999-02-09 | Advanced Micro Devices, Inc. | Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception |
US5920710A (en) * | 1996-11-18 | 1999-07-06 | Advanced Micro Devices, Inc. | Apparatus and method for modifying status bits in a reorder buffer with a large speculative state |
US5954816A (en) * | 1996-11-19 | 1999-09-21 | Advanced Micro Devices, Inc. | Branch selector prediction |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
US5995749A (en) | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US6175906B1 (en) | 1996-12-06 | 2001-01-16 | Advanced Micro Devices, Inc. | Mechanism for fast revalidation of virtual tags |
US5881305A (en) * | 1996-12-13 | 1999-03-09 | Advanced Micro Devices, Inc. | Register rename stack for a microprocessor |
US5870580A (en) * | 1996-12-13 | 1999-02-09 | Advanced Micro Devices, Inc. | Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies |
US5983321A (en) * | 1997-03-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache |
US5862065A (en) * | 1997-02-13 | 1999-01-19 | Advanced Micro Devices, Inc. | Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer |
US5768555A (en) * | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US6141740A (en) * | 1997-03-03 | 2000-10-31 | Advanced Micro Devices, Inc. | Apparatus and method for microcode patching for generating a next address |
US6233672B1 (en) | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US5852727A (en) * | 1997-03-10 | 1998-12-22 | Advanced Micro Devices, Inc. | Instruction scanning unit for locating instructions via parallel scanning of start and end byte information |
US5850532A (en) * | 1997-03-10 | 1998-12-15 | Advanced Micro Devices, Inc. | Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched |
US5968163A (en) * | 1997-03-10 | 1999-10-19 | Advanced Micro Devices, Inc. | Microcode scan unit for scanning microcode instructions using predecode data |
US5859992A (en) * | 1997-03-12 | 1999-01-12 | Advanced Micro Devices, Inc. | Instruction alignment using a dispatch list and a latch list |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US5887185A (en) * | 1997-03-19 | 1999-03-23 | Advanced Micro Devices, Inc. | Interface for coupling a floating point unit to a reorder buffer |
US5859998A (en) * | 1997-03-19 | 1999-01-12 | Advanced Micro Devices, Inc. | Hierarchical microcode implementation of floating point instructions for a microprocessor |
US5828873A (en) * | 1997-03-19 | 1998-10-27 | Advanced Micro Devices, Inc. | Assembly queue for a floating point unit |
US5930492A (en) * | 1997-03-19 | 1999-07-27 | Advanced Micro Devices, Inc. | Rapid pipeline control using a control word and a steering word |
US5987235A (en) * | 1997-04-04 | 1999-11-16 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions |
US5901076A (en) * | 1997-04-16 | 1999-05-04 | Advanced Micro Designs, Inc. | Ripple carry shifter in a floating point arithmetic unit of a microprocessor |
US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
US5845101A (en) * | 1997-05-13 | 1998-12-01 | Advanced Micro Devices, Inc. | Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache |
US6122729A (en) * | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US5872946A (en) * | 1997-06-11 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch |
US6009511A (en) * | 1997-06-11 | 1999-12-28 | Advanced Micro Devices, Inc. | Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers |
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US5940602A (en) * | 1997-06-11 | 1999-08-17 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US5983337A (en) * | 1997-06-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US5933629A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for detecting microbranches early |
US6012125A (en) * | 1997-06-20 | 2000-01-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions |
US5978901A (en) * | 1997-08-21 | 1999-11-02 | Advanced Micro Devices, Inc. | Floating point and multimedia unit with data type reclassification capability |
US6101577A (en) * | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
US5931943A (en) * | 1997-10-21 | 1999-08-03 | Advanced Micro Devices, Inc. | Floating point NaN comparison |
US6032252A (en) * | 1997-10-28 | 2000-02-29 | Advanced Micro Devices, Inc. | Apparatus and method for efficient loop control in a superscalar microprocessor |
US5974542A (en) * | 1997-10-30 | 1999-10-26 | Advanced Micro Devices, Inc. | Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication |
US6230259B1 (en) | 1997-10-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Transparent extended state save |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6167506A (en) | 1997-11-17 | 2000-12-26 | Advanced Micro Devices, Inc. | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6134649A (en) * | 1997-11-17 | 2000-10-17 | Advanced Micro Devices, Inc. | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction |
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6516395B1 (en) | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US6079003A (en) | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US5974432A (en) * | 1997-12-05 | 1999-10-26 | Advanced Micro Devices, Inc. | On-the-fly one-hot encoding of leading zero count |
US5870578A (en) * | 1997-12-09 | 1999-02-09 | Advanced Micro Devices, Inc. | Workload balancing in a microprocessor for reduced instruction dispatch stalling |
US6016545A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor |
US6157986A (en) * | 1997-12-16 | 2000-12-05 | Advanced Micro Devices, Inc. | Fast linear tag validation unit for use in microprocessor |
US6016533A (en) * | 1997-12-16 | 2000-01-18 | Advanced Micro Devices, Inc. | Way prediction logic for cache array |
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6041405A (en) * | 1997-12-18 | 2000-03-21 | Advanced Micro Devices, Inc. | Instruction length prediction using an instruction length pattern detector |
US6112296A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Floating point stack manipulation using a register map and speculative top of stack values |
US6018798A (en) * | 1997-12-18 | 2000-01-25 | Advanced Micro Devices, Inc. | Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
US6061786A (en) * | 1998-04-23 | 2000-05-09 | Advanced Micro Devices, Inc. | Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction |
US6175908B1 (en) | 1998-04-30 | 2001-01-16 | Advanced Micro Devices, Inc. | Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte |
US6141745A (en) * | 1998-04-30 | 2000-10-31 | Advanced Micro Devices, Inc. | Functional bit identifying a prefix byte via a particular state regardless of type of instruction |
US6119223A (en) * | 1998-07-31 | 2000-09-12 | Advanced Micro Devices, Inc. | Map unit having rapid misprediction recovery |
US6122656A (en) * | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6230262B1 (en) | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
US6308257B1 (en) * | 1999-04-20 | 2001-10-23 | Intel Corporation | Method and apparatus for generating boundary markers for an instruction stream including variable-length instructions |
US6647490B2 (en) | 1999-10-14 | 2003-11-11 | Advanced Micro Devices, Inc. | Training line predictor for branch targets |
US6636959B1 (en) | 1999-10-14 | 2003-10-21 | Advanced Micro Devices, Inc. | Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition |
WO2001027749A1 (en) * | 1999-10-14 | 2001-04-19 | Advanced Micro Devices, Inc. | Apparatus and method for caching alignment information |
US6546478B1 (en) | 1999-10-14 | 2003-04-08 | Advanced Micro Devices, Inc. | Line predictor entry with location pointers and control information for corresponding instructions in a cache line |
US6438664B1 (en) | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
US6442707B1 (en) | 1999-10-29 | 2002-08-27 | Advanced Micro Devices, Inc. | Alternate fault handler |
US6701424B1 (en) * | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6732234B1 (en) | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
US6848024B1 (en) | 2000-08-07 | 2005-01-25 | Broadcom Corporation | Programmably disabling one or more cache entries |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6981132B2 (en) | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US7028164B2 (en) * | 2000-12-29 | 2006-04-11 | Stmicroelectronics, Inc. | Instruction fetch apparatus for wide issue processors and method of operation |
US6738792B1 (en) | 2001-03-09 | 2004-05-18 | Advanced Micro Devices, Inc. | Parallel mask generator |
US6748495B2 (en) | 2001-05-15 | 2004-06-08 | Broadcom Corporation | Random generator |
US7266587B2 (en) | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US7401328B2 (en) * | 2003-12-18 | 2008-07-15 | Lsi Corporation | Software-implemented grouping techniques for use in a superscalar data processing system |
US7620797B2 (en) * | 2006-11-01 | 2009-11-17 | Apple Inc. | Instructions for efficiently accessing unaligned vectors |
US7624251B2 (en) * | 2006-11-01 | 2009-11-24 | Apple Inc. | Instructions for efficiently accessing unaligned partial vectors |
US20080240227A1 (en) * | 2007-03-30 | 2008-10-02 | Wan Wade K | Bitstream processing using marker codes with offset values |
US7676659B2 (en) * | 2007-04-04 | 2010-03-09 | Qualcomm Incorporated | System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding |
US8589661B2 (en) * | 2010-12-07 | 2013-11-19 | Advanced Micro Devices, Inc. | Odd and even start bit vectors |
US9778932B2 (en) * | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US10311191B2 (en) | 2017-01-26 | 2019-06-04 | Advanced Micro Devices, Inc. | Memory including side-car arrays with irregular sized entries |
CN112540795A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
US11204768B2 (en) * | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4424563A (en) * | 1980-09-05 | 1984-01-03 | Hewlett-Packard Company | Data processor including a multiple word processing method and device |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4670890A (en) * | 1983-03-04 | 1987-06-02 | Research Corporation | Method of and/or apparatus for encoding and decoding sequential information in data handling systems |
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
US5202972A (en) * | 1988-12-29 | 1993-04-13 | International Business Machines Corporation | Store buffer apparatus in a multiprocessor system |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5167026A (en) * | 1989-02-03 | 1992-11-24 | Digital Equipment Corporation | Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers |
US5072449A (en) * | 1989-12-21 | 1991-12-10 | Stratacom, Inc. | Packet framing using cyclic redundancy checking |
EP0453229B1 (de) * | 1990-04-17 | 1997-06-18 | Matsushita Electric Industrial Co., Ltd. | Verfahren zur Übertragung von Kodes mit variabler Länge |
-
1993
- 1993-01-14 SG SG1996002495A patent/SG45269A1/en unknown
- 1993-01-14 GB GB9300726A patent/GB2263987B/en not_active Expired - Lifetime
- 1993-01-28 US US08/010,360 patent/US5450605A/en not_active Expired - Lifetime
- 1993-01-29 DE DE4302495A patent/DE4302495C2/de not_active Expired - Lifetime
- 1993-02-08 JP JP5041783A patent/JPH06236268A/ja active Pending
-
1994
- 1994-09-06 US US08/301,313 patent/US5586276A/en not_active Expired - Lifetime
-
1996
- 1996-07-18 HK HK127696A patent/HK127696A/xx not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530050A (en) * | 1981-08-26 | 1985-07-16 | Hitachi, Ltd. | Central processing unit for executing instructions of variable length having end information for operand specifiers |
Non-Patent Citations (1)
Title |
---|
US-Z: IEEE Transactions on Computers, Vol. C-33, No. 11, Nov. 1984, S. 1013-1022 * |
Also Published As
Publication number | Publication date |
---|---|
US5586276A (en) | 1996-12-17 |
US5450605A (en) | 1995-09-12 |
HK127696A (en) | 1996-07-26 |
SG45269A1 (en) | 1998-01-16 |
JPH06236268A (ja) | 1994-08-23 |
DE4302495C2 (de) | 1998-08-20 |
GB9300726D0 (en) | 1993-03-03 |
GB2263987B (en) | 1996-03-06 |
GB2263987A (en) | 1993-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4302495C2 (de) | Einrichtung und Verfahren zum Bestimmen der Länge eines Befehls in einem sequentiellen Befehlsstrom | |
DE2234867C2 (de) | Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE2714805C2 (de) | ||
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass | |
DE69624158T2 (de) | Superskalarer Prozessor mit mehreren Registerblöcken und Erzeugung von spekulativen Antwortadressen | |
DE3882772T2 (de) | Vektorprozessor angepasst zum Sortieren von Vektordaten. | |
DE2723523A1 (de) | Kompression und dekompression von gespeicherten digitaldaten | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE3400723C2 (de) | ||
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3900248C2 (de) | Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens | |
DE2248296A1 (de) | Programmsteuereinrichtung | |
DE69130414T2 (de) | Prozessor und Verfahren zur parallelen Verarbeitung | |
DE2556617C2 (de) | Schiebe- und Rotierschaltung | |
DE69130233T2 (de) | Verfahren und gerät um ein sperrungscache einzusetzen | |
DE3043653A1 (de) | Datenverarbeitungsanlage | |
DE2518588A1 (de) | Verfahren zur ueberwachung der folgerichtigkeit von codesignalgruppen in einrichtungen der nachrichtentechnik | |
DE1200578B (de) | Datenverarbeitungssystem | |
DE3751287T2 (de) | Während einer Instruktionsausführung eine Unterbrechungsanforderung empfangender Mikroprogrammkontrolleur. | |
DE3307194C2 (de) | ||
DE69031361T2 (de) | Taktsignalgeneratorsystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
R071 | Expiry of right | ||
R071 | Expiry of right |