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
Application number
DE4302495A
Other languages
English (en)
Other versions
DE4302495C2 (de
Inventor
Edward T Grochowski
Kenneth Shoemaker
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4302495A1 publication Critical patent/DE4302495A1/de
Application granted granted Critical
Publication of DE4302495C2 publication Critical patent/DE4302495C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent 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.
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.
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.
DE4302495A 1992-02-06 1993-01-29 Einrichtung und Verfahren zum Bestimmen der Länge eines Befehls in einem sequentiellen Befehlsstrom Expired - Lifetime DE4302495C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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