DE69636861T2 - Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern - Google Patents

Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern Download PDF

Info

Publication number
DE69636861T2
DE69636861T2 DE69636861T DE69636861T DE69636861T2 DE 69636861 T2 DE69636861 T2 DE 69636861T2 DE 69636861 T DE69636861 T DE 69636861T DE 69636861 T DE69636861 T DE 69636861T DE 69636861 T2 DE69636861 T2 DE 69636861T2
Authority
DE
Germany
Prior art keywords
instruction
register
command
load
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69636861T
Other languages
English (en)
Other versions
DE69636861D1 (de
Inventor
James A. Austin Kahle
Albert J. Cedar Park Loper
Soummya Austin Mallick
Aubrey D. Round Rock Ogden
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69636861D1 publication Critical patent/DE69636861D1/de
Publication of DE69636861T2 publication Critical patent/DE69636861T2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

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)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf die Zuteilung von Ressourcen während der Befehlsausführung in einem Mikroprozessor und insbesondere auf die Zuteilung von Ressourcen in Mikroprozessoren, die eine Ladeoperation in mehrere Register unterstützen.
  • Mehrregister-Lade-/Speicherbefehle erfordern eine vollständige Serialisierung, da diese Befehle bis zu alle Mehrzweckregister (üblicherweise 32), die in einem Mikroprozessor vorhanden sind, ändern oder diese verwenden können. In der PowerPCTM-Reihe von Mikroprozessoren, die von der International Business Machines Corporation produziert wird, sind mehrfache Lade-/Speicherbefehle für ganze Zahlen eingerichtet, die Datenblöcke zu den und aus den Mehrzweckregistern (GPRs) des Mikroprozessors verschieben. Die zur Verfügung gestellten Mehrregisterbefehle sind die Befehle Lade-Mehrere-Wörter (lmw) und Speichere-Mehrere-Wörter (stmw).
  • Da solche Mehrregister-Lade-/Speicherbefehle bis zu alle Mehrzweckregister in dem System verändern oder verwenden können, wurden nach dem Stand der Technik spätere Befehle in der Befehlsabfolge im Befehlspufferspeicher gehalten, bis die Ausführung des Mehrregisterbefehls abgeschlossen war. Es wurde daher angenommen, dass Mehrregisterbefehle die vollständige Serialisierung dieser Befehle im Befehlsstrom erzwingen. Um eine derartige Serialisierung einzurichten, wurden den Mehrregisterbefehlen bisher alle der benötigten Mehrzweckregister zugeteilt, bis die Befehlsausführung abgeschlossen war. Ein solches System schränkt die Leistungsstärke wesentlich ein, indem es sie die Befehlsleitung aufhält, bis der Mehrregisterbefehl abgeschlossen ist.
  • Die US-Patentschrift 5 416 911 A beschreibt ein Verfahren zur Ausführung mehrerer Befehle in einem superskalaren Mikroprozessor einschließlich einem mehrfachen Ladebefehl.
  • Entsprechend stellt die Erfindung ein Verfahren nach Anspruch 1 und einen Mikroprozessor nach Anspruch 3 bereit.
  • Der oben beschriebene Ansatz erlaubt es, Ressourcen von den Mehrregisterbefehlen zu entbinden, indem diese Befehle so ausgeführt werden, dass die Ressourcen verfügbar werden, damit nachfolgende Befehle die Ausführung gleichzeitig mit dem ausführenden Mehrregisterbefehl beginnen können. Auf diese Weise erlaubt die frühe Freigabe von Ressourcen, die zu einer mehrfachen Lade-/Speicheroperation gehören, die gleichzeitige Ausführung weiterer Befehle. Dies verbessert die Leistungsfähigkeit eines Mikroprozessors mit superskalarem Aufbau wesentlich, indem Befehle, die mehrere Register verwenden, parallel mit nachfolgenden Befehlen ausgeführt werden können, die die Mehrzweckregister verwenden.
  • So kann in einer bevorzugten Ausführungsform ein mehrfacher Ladebefehl in einem superskalaren Mikroprozessor ausgeführt werden, indem der mehrfache Ladebefehl an eine Lade-/Speichereinheit ausgegeben wird. Die Lade-/Speichereinheit beginnt die Ausführung eines ausgegebenen mehrfachen Ladebefehls und dieser lädt Daten aus dem Speicher in eine Vielzahl von Registern. Es wird eine Tabelle geführt, die jedes Register aus der Vielzahl von Registern auflistet und angibt, wann vom ausführenden mehrfachen Ladebefehl Daten in jedes Register geladen wurden. Ein Befehl, der von Daten eines Quelloperanden abhängt, die von dem mehrfachen Ladebefehl in ein Register aus der Vielzahl von Registern geladen wurden, welches vom Befehl als Quellregister angegeben wird, wird ausgeführt, bevor die Ausführung des mehrfachen Ladebefehls abgeschlossen wird, nachdem die Tabelle die Daten des Quelloperanden als in das Quellregister geladen angibt.
  • Eine bevorzugte Ausführungsform der Erfindung wird nun lediglich beispielhaft anhand der folgenden Zeichnungen beschrieben:
  • 1 veranschaulicht ein Blockschaltbild eines Prozessors;
  • 2 zeigt ein Zeitschaubild der zur Verarbeitung eines mehrfachen Ladebefehls und anschließender Festkommabefehle erforderlichen Zyklen;
  • 3 zeigt ein Zeitschaubild der Zyklen, in denen ein mehrfacher Speicherbefehl und zwei Festkommabefehle im Mikroprozessor verarbeitet werden.
  • Mit Bezug auf die Figuren und insbesondere auf 1 ist mit der allgemeinen Bezeichnung 10 ein Blockschaltbild eines Prozessors zur Datenverarbeitung dargestellt. In der abgebildeten Ausführungsform umfasst der Prozessor 10 einen einzelnen superskalaren Mikroprozessor als integrierten Schaltkreis. Entsprechend beinhaltet der Prozessor 10, wie weiter unten ausgeführt wird, verschiedene Ausführungseinheiten, Register, Pufferspeicher, Speicher und andere funktionale Einheiten, die alle als integrierte Schaltungen ausgeführt sind. Der Prozessor 10 kann auch einen Mikroprozessor der PowerPCTM-Reihe von Prozessoren umfassen, die von der International Business Corporation herstellt wird und die gemäß Rechentechniken mit reduziertem Befehlssatz (RISC) betrieben wird.
  • Wie in 1 gezeigt ist, ist der Prozessor 10 mit dem Systembus 11 über eine Busschnittstelleneinheit (BIU) 12 innerhalb des Prozessors 10 verbunden. Die BIU 12 steuert die Datenübertragung zwischen dem Prozessor 10 und anderen Einheiten, die an den Systembus 11 angeschlossen sind, z.B. ein Hauptspeicher (nicht dargestellt). Der Prozessor 10, der Systembus 11 und andere an den Systembus 11 angeschlossene Einheiten bilden zusammen ein Host-Datenverarbeitungssystem. Die BIU 12 ist an den Befehls-Cachespeicher 14 und den Daten-Cachespeicher 16 innerhalb des Prozessors 10 angeschlossen. Der Hochgeschwindigkeits-Cachespeicher sowie der Befehls-Cachespeicher 14 und der Daten-Cachespeicher 16 ermöglichen es dem Prozessor 10, eine relativ schnelle Zugriffszeit zu einer Teilmenge von Daten oder Befehlen zu erreichen, die zuvor vom Hauptspeicher zum Hochgeschwindigkeits-Cachespeicher übertragen wurden, womit die Arbeitsgeschwindigkeit des Host-Datenverarbeitungssystems zunimmt. Der Befehls-Cachespeicher 14 ist weiterhin mit dem sequenziellen Abrufer 17 verbunden, der Befehle aus dem Befehls-Cachespeicher 14 während jedes Ausführungszyklus abruft. Der sequenzielle Abruf er 17 überträgt Verzweigungsbefehle zur Ausführung an die Verzweigungsverarbeitungs-Einheit (BPU) 18 und überträgt sequenzielle Befehle an die Befehlswarteschlange 19 zur vorübergehenden Speicherung, bevor sie von anderen Ausführungsschaltungen innerhalb von Prozessors 10 ausgeführt werden.
  • In der abgebildeten Ausführungsform umfassen die Ausführungsschaltungen von Prozessor 10 zusätzlich zur BPU 18 mehrere Ausführungseinheiten, darunter die Festkommaeinheit (FXU) 22, die Lade-/Speichereinheit (LSU) 28 und die Fließkommaeinheit (FPU) 30. Wie dem Computerfachmann bestens bekannt ist, führt jede der Ausführungseinheiten 22, 28 und 30 einen oder mehrere Befehle innerhalb einer bestimmten Klasse sequenzieller Befehle während jedes Prozessorzyklus aus. Z.B. führt die FXU 22 mathematische Festkomma-Operationen wie Addition, Subtraktion, UND-, ODER- und XOR-Operationen aus und verwendet dabei Quelloperanden, die aus festgelegten Mehrzweckregistern (GPRs) 32 oder Puffern zur GPR-Umbenennung 33 erhalten werden. Im Anschluss an die Ausführung eines Festkommabefehls gibt die FXU 22 die Datenergebnisse des Befehls an Puffer zur GPR-Umbenennung 33 aus, die vorübergehend Speicherplatz für die Ergebnisdaten zur Verfügung stellen, bis der Befehl mit der Übertragung der Ergebnisdaten von den Puffern zur GPR-Umbenennung 33 an eines oder mehrere GPRs 32 abgeschlossen wird. Umgekehrt führt die FPU 30 Fließkommaoperationen wie Fließkomma-Multiplikation und Fließkomma-Division an Quelloperanden durch, die von Fließkommaregistern (FPRs) 36 oder Puffern zur FPR-Umbenennung 37 erhalten werden. Die FPU 30 gibt Daten, die sich bei der Ausführung von Fließkommabefehlen ergeben, an ausgewählte Puffer zur FPR-Umbenennung 37 aus, die vorübergehend die Ergebnisdaten speichern bis die Befehle mit der Übertragung der Ergebnisdaten von den Puffern zur FPR-Umbenennung 37 an ausgewählte FPRs 36 abgeschlossen werden. Die LSU 28 führt Fließkomma- und Festkommabefehle aus, die entweder Daten aus dem Speicher (dies ist entweder der Daten-Cachespeicher 16 oder der Hauptspeicher) in ausgewählte GPRs 32 oder FPRs 36 laden oder Daten aus einem ausgewählten Register der GPRs 32, den Puffern zur GPR-Umbenennung, den FPRs 36 oder den Puffern zur FPR-Umbenennung 37 im Speicher ablegen.
  • Der Prozessor 10 verwendet sowohl die Fließband-Ausführung als auch die Durcheinander-Ausführung von Befehlen, um die Leistungsstärke seiner superskalaren Architektur weiter zu verbessern. Entsprechend können Befehle von der FXU 22, der LSU 28 und FPU 30 in beliebiger Reihenfolge ausgeführt werden, solange Datenabhängigkeiten überwacht werden. Außerdem werden Befehle von jeder der Einheiten FXU 22, LSU 28 und FPU 30 an einer Folge von Fließbandstationen verarbeitet. Bei Hochleistungsprozessoren wird typischerweise jeder Befehl an fünf verschiedenen Stationen in der Befehlsleitung, nämlich Abrufen, Decodieren/Ausgeben, Ausführen, Beenden und Abschließen, verarbeitet.
  • Während der Abrufphase ruft der sequenzielle Abrufer 17 einen oder mehrere Befehle ab, die zu einer oder mehreren Adressen aus dem Befehlscache-Speicher 14 gehören. Sequenzielle Befehle, die aus dem Befehlscache-Speicher 14 abgerufen wurden, werden vom sequenziellen Abrufer 17 innerhalb der Befehlswarteschlange 19 gespeichert. Abgerufene Verzweigungsbefehle werden aus dem Befehlsstrom entfernt und an die BPU 18 zur Ausführung weitergeleitet. Die BPU 18 umfasst einen Mechanismus zur Verzweigungsvorhersage, z.B. eine Tabelle zur Verzweigungshistorie, die es der BPU 18 erlaubt, nicht aufgelöste bedingte Verzweigungsbefehle spekulativ auszuführen, indem vorhergesagt wird, ob die Verzweigung eintritt.
  • Während der Decodierungs-/Ausgabephase decodiert die Ausgabeeinheit 20 einen oder mehrere Befehle aus der Befehlswarteschlange 19 und gibt diese an die entsprechenden Einheiten der Ausführungseinheiten 22, 28 und 30 aus. Ebenso während der Decodierungs-/Ausgabephase weist die Ausgabeeinheit 20 allen ausgegebenen Ergebnisdaten des Befehls einen Umbenennungspuffer innerhalb der Puffer zur GPR-Umbenennung 33 oder der Puffer zur FPR-Umbenennung 37 zu. Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung gibt der Prozessor 10 Befehle in Programmreihenfolge aus und verfolgt die Programmreihenfolge der ausgegebenen Befehle während der Durcheinander-Ausführung, indem eindeutige Befehlsbezeichner verwendet werden. Zusätzlich zu einem Befehlsbezeichner besitzt jeder Befehl in der Ausführungsleitung von Prozessor 10 ein rA- und ein rB-Kennzeichen, das die Quellen der A- und B-Operanden für den Befehl angibt, und ein rD-Kennzeichen, das einen Empfangspuffer zur Umbenennung innerhalb der GPR-Puffer zur Umbenennung 33 oder der FPR-Puffer zur Umbenennung 37 für die Ergebnisdaten des Befehls angibt.
  • Während der Ausführungsphase führen die Ausführungseinheiten 22, 28 und 30 opportunistisch Befehle aus, die sie von der Ausgabeeinheit 20 erhalten haben, falls Operanden und Ausführungsressourcen für die angegebenen Operationen verfügbar sind. Nachdem die Ausführung beendet ist, speichern die Ausführungseinheiten 22, 28 und 30 Ergebnisdaten abhängig vom Befehlstyp entweder in Puffern zur GPR-Umbenennung 33 oder in Puffern zur FPR-Umbenennung 37. Anschließend benachrichtigen die Ausführungseinheiten 22, 28 und 30 die Abschlusseinheit 40, bei welchen Befehlen die Ausführung beendet ist. Schließlich werden die Befehle von der Abschlusseinheit 40 in der Programmreihenfolge durch die Übertragung der Ergebnisdaten aus den Puffern zur GPR-Umbenennung 33 und den Puffern zur FPR-Umbenennung 37 an die GPRs 32 bzw. FPRs 36 abgeschlossen.
  • Der Prozessor 10 kann Mehrregister-Lade-/Speicherbefehle ausführen, die Lade- und Speichervorgänge in eine Vielzahl von Mehrzweckregistern aus dem und in den Speicher ausführen. Insbesondere in der bevorzugten Ausführungsform, die einen PowerPCTM-Mikroprozessor aufweist, führt der Mikroprozessor 10 einen mehrfachen Ladebefehl (lmw), der mehrere Wörter aus dem Speicher lädt, und einen mehrfachen Speicherbefehl (stmw), der mehrere Wörter im Speicher ablegt, aus.
  • Diese Mehrregisterbefehle werden vom sequenziellen Abrufer 17 aus dem Befehls-Cachespeicher 14 abgerufen und in die Befehlswarteschlange 19 geladen. Bei Ausgabe eines Mehrregisterbefehls durch die Ausgabeeinheit 20 beginnt die LSU 28 mit der Ausführung des Mehrregisterbefehls. Ebenso wird bei der Befehlsausgabe eine Anzahl von Registern in den GPRs 32, die im Mehrregisterbefehl bezeichnet sind, dem Befehl zugeteilt.
  • In der bevorzugten Ausführungsform erfordert die mehrfache Ladeanweisung, dass Ladevorgänge in bis zu 32 benachbarte Register, die mit bis zu 32 benachbarten Wörtern aus dem Speicher geladen werden, ausgeführt werden. Z.B. lädt der Befehl „lmw r3, r2, r1" die Register 3 bis 31 mit Daten, die im Speicher an der Stelle <r2 + r1> gefunden werden. In diesem Beispiel wird auf diese Weise zuerst ein Ladevorgang in das Register 3 (r3) ausgeführt. Die LSU 28 fährt anschließend mit dem Ladevorgang bei Register 4, Register 5 usw. fort, bis in alle Register bis zu einschließlich Register 31 Ladevorgänge ausgeführt wurden. An dieser Stelle ist die Ausführung des mehrfachen Ladebefehls beendet. Dies wird an die Abschlusseinheit 40 gemeldet, die den Befehl mit der Übergabe der Befehls an architektonische Registern in dem System abschließt.
  • In 2 ist ein Zeitschaubild der zur Verarbeitung des mehrfachen Ladebefehls und anschließender Festkommaoperationen erforderlichen Zyklen gezeigt. Der mehrfache Ladebefehl (Load Mult) wird vom Befehls-Cachespeicher 14 durch den sequenziellen Abrufer 17 im Zyklus 1 abgerufen (F). Der Befehl wird im Zyklus 2 decodiert (Dec) und von der Ausgabeeinheit 20 an die LSU 28 im Zyklus 3 ausgegeben (Disp). Die LSU 28 führt den mehrfachen Ladebefehl während der Zyklen 4 bis 7 aus (E), und der Befehl wird von der Abschlusseinheit 40 in Zyklus 8 abgeschlossen (C).
  • In diesem Beispiel werden Ladevorgänge in vier Mehrzweckregister ausgeführt. In einer bevorzugten Ausführungsform wäre der mehrfache Ladebefehl als lmw r28, r2, r1 formatiert. Dieser Befehl würde Ladevorgänge in die Register 28 bis 31 ausführen und, wie in 2 gezeigt ist, wird in den Zyklen 4 bis 7 je Systemtaktzyklus ein Ladevorgang in ein Register ausgeführt.
  • Nach dem Stand der Technik würden alle Festkommabefehle, die auf den mehrfachen Ladebefehl folgen, serialisiert werden, so dass diese nicht vor dem Ausführungsende des mehrfachen Ladebefehls abgerufen werden würden. Dies ermöglicht es, die Kohärenz der Operandendaten, die von nachfolgenden Festkommabefehlen verwendet werden, aufrecht zu erhalten. Deshalb konnten im Beispiel von 2 nach dem Stand der Technik bis Zyklus 9 keine nachfolgenden Festkommabefehle abgerufen werden.
  • Nach der vorliegenden Erfindung steht ein Entbindungsmechanismus zur Verfügung, der es erlaubt, im Befehls-Cachespeicher wartende Befehle vor Abschluss des mehrfachen Ladebefehls auszugeben. Wie in 2 ersichtlich ist, werden dem mehrfachen Ladebefehl vor Zyklus 4 die Register 28 bis 31 zugeteilt. Nachdem jedoch der Ladevorgang durch den mehrfachen Ladebefehls z.B. in Register 28 ausgeführt wurde, wird diese Ressource freigegeben, um ihren Inhalt für nachfolgende Befehle als Operandendaten verwendbar zu machen. Als Vorteil daraus können nachfolgende Festkommabefehle, die von den Ergebnissen des mehrfachen Ladebefehls abhängig sind, an andere funktionale Einheiten ausgegeben werden, bevor der mehrfache Ladebefehl abgeschlossen ist.
  • Der Prozessor 10 führt eine Anzeigetafel oder eine Tabelle für alle Mehrzweckregister (GPR) 32, die jedes Register auflistet und angibt, wann der mehrfache Ladebefehl einen Ladevorgang in das zugehörige Register ausgeführt hat. Die Ausgabeeinheit 20 greift zur Bestimmung, ob nachfolgende Befehle ausgegeben werden können, auf die Anzeigetafel zu. Wie in 2 gezeigt ist, wird beispielsweise betrachtet, wie ein mehrfacher Ladebefehl (Load Mult) gefolgt von einem ersten und zweiten Festkommabefehl (FX Inst 1 und FX Inst 2) verarbeitet wird, was in der anschließenden Befehlsfolge dargestellt ist:
    lmw r28, r2, r1
    add r2, r2, r28
    add r3, r3, r30
    (Anmerkung: die „adds" sind Festkommabefehle, um den Inhalt eines ersten Registers zum Inhalt eines zweiten Registers zu addieren und den Ergebnisoperanden im ersten Register zu speichern)
  • Wie in 2 gezeigt ist, kann FX Inst 1 ausgegeben werden, sobald das Register 28 von der Lade-/Speichereinheit für die Anzeigetafel freigegeben wird. In Zyklus 4 hat die Lade-/Speichereinheit den mehrfachen Ladebefehl für Register 28 ausgeführt, so dass dieses Register auf der Anzeigetafel freigegeben wird. Im unmittelbar folgenden Zyklus wird die Ausgabeeinheit 20 an die FXU 22 FX Inst 1 ausgeben, da die Daten des Quelloperanden für diesen Befehl nun in den Mehrzweckregistern zur Verfügung stehen. Dieser Befehl wird von der FXU 22 in Zyklus 6 ausgeführt, die Abschlusseinheit 40 schließt den Befehl aber bis Zyklus 9 nicht ab, um die Kohärenz der Registerdaten zu gewährleisten. Wie in 2 zu erkennen ist, wird FX Inst 2 in den Zyklen 3 und 4 abgerufen und decodiert. Jedoch gibt die Ausgabeeinheit 20 diesen Befehl an die FXU 22 nicht aus, bevor der mehrfache Ladebefehl im Zyklus 6 einen Ladevorgang in Register 30 ausgeführt hat und diesen in der Anzeigetafel eingetragen hat. Die Ausgabeeinheit 20 liest die Freigabe von Register 30 und gibt in Zyklus 7 den zweiten Festkommabefehl aus, den die FXU 22 in Zyklus 8 ausführt. Die Abschlusseinheit 40 schließt diesen Befehl bis Zyklus 10 nicht ab, da alle Festkommabefehle in der Programmreihenfolge abgeschlossen werden müssen.
  • Wie in diesem Beispiel gezeigt ist, gab es eine Verbesserung von bis zu acht Taktzyklen für die Ausgabe und Ausführung der nachfolgenden Festkommabefehle (einzeln portierten Registerspeicher und Cache-Speicher vorausgesetzt). Dies ist eine wesentliche Steigerung der Leistungsfähigkeit des Prozessors im Vergleich zu bisher. Tatsächlich konnte in bestimmten Beispielen eine Verbesserung von bis zu 32 Taktzyklen verwirklicht werden. Es ist klar, dass diese verbesserte Leistungsfähigkeit nur von der Tiefe des Abschlusspuffers in der Abschlusseinheit begrenzt wird, d.h. durch die Anzahl der Befehle, die sich vor Abschluss des mehrfachen Ladevorgangs in der Ausführungsleitung befinden können.
  • Die frühzeitige Freigabe von Ressourcen wird auch während der Ausführung eines mehrfachen Speicherbefehls erreicht, obwohl dies nicht als eine Ausführungsform der Erfindung betrachtet wird. Der mehrfache Speicherbefehl erfordert die Speicherung von bis zu 32 benachbarten Registern in bis zu 32 benachbarte Wortpositionen im Speicher. Beispielsweise speichert der mehrfache Speicherbefehl stmw r3, r2, r1 den Inhalt der Register 3 bis Register 31 im Speicher an der Stelle <r2 + r1>. Bei Ausgabe des mehrfachen Speicherbefehls können zusätzliche nachfolgende Festkommaoperationen bedingungslos an die anderen Festkomma-Ausführungseinheiten im Mikroprozessor ausgegeben werden. Wie vorher müssen diese Befehle in der Programmreihenfolge abgeschlossen werden, die Ausführung kann aber unmittelbar nach Ausgabe der Befehle beginnen.
  • Der mehrfache Speicherbefehl muss nicht mit nachfolgenden Festkommabefehlen serialisiert werden. Folglich muss der gesamte benachbarte Registersatz, der für den mehrfachen Speicherbefehl benötigt wird, nicht ausschließlich dem Befehl zugeteilt werden und kann stattdessen als Quelloperanden- Ressource für nachfolgende Befehle verwendet werden. Jedoch müssen alle Ergebnisse der nachfolgenden Befehlen in Puffern zur GPR-Umbenennung 33 gespeichert werden, bis der mehrfache Speicherbefehl abgeschlossen ist, um das Beschreiben noch nicht gespeicherter Register zu verhindern. Bei Abschluss des mehrfachen Speicherbefehls können die nachfolgenden Befehle mit der Übertragung der Ergebnisoperanden aus den Puffern zur GPR-Umbenennung 33 an ein architektonisches Register im GPR 32 abgeschlossen werden.
  • In 3 ist ein Zeitschaubild der Zyklen dargestellt, in denen ein mehrfacher Speicherbefehl (Store Mult) und zwei Festkommabefehle (FX Inst 3 und FX Inst 4) im Mikroprozessor verarbeitet werden. Als Beispiel wird die Verarbeitung folgender Befehlsfolge betrachtet:
    stmw r28, r2, r1
    add r2, r2, r28
    add r3, r3, r30
  • Wie in 3 zu sehen ist, wird der mehrfache Speicherbefehl abgerufen in Zyklus 1, in Zyklus 2 decodiert, ausgegeben in Zyklus 3, von der Lade-/Speichereinheit 28 ausgeführt in den Zyklen 4 bis 7 und abgeschlossen in Zyklus 8. FX Inst1 und FX Inst2 werden so bald wie möglich ausgegeben, nachdem der vorhergehende mehrfache Speicherbefehl in Zyklus 3 ausgegeben wurde. FX Inst 1 wird in Zyklus 4 ausgegeben und FX Inst 2 wird, da nur ein Befehl je Zyklus abgerufen werden kann, in Zyklus 5 ausgegeben. Diese Festkommabefehle können unmittelbar ausgeführt werden, wie es in Zyklus 5 und 6 geschieht, unabhängig vom Fortschritt der Ausführung des mehrfachen Speicherbefehls, da die zur Ausführung erforderlichen Operandendaten bereits in Register 28 und 30 vorliegen.
  • Tatsächlich legt die LSU 28 in Zyklus 6 die Daten aus dem Register 30 im Speicher ab, und die FXU 22 addiert die im Register 30 enthaltenen Operandendaten zu den im Register 3 vorhandenen Operandendaten. Die Ergebnisse der Festkommaoperationen 1 und 2 werden bis zu den Zyklen 9 bzw. 10 in Umbenennungspuffern 33 gehalten, wobei an diesem Zeitpunkt die Ergebnisoperanden in Register 2 bzw. 3 gespeichert werden. Wie bereits erklärt wurde, können diese Festkommabefehle nicht abgeschlossen werden, bevor der mehrfache Speicherbefehl abgeschlossen ist, um die Kohärenz der Ressourcen aufrecht zu erhalten.
  • Zusammenfassend betrachtet behandelt die vorliegende Erfindung das wesentliche Problem des mit serialisierten Lade- und Speichervorgängen verbundenen erhöhten Arbeitsaufwandes. Eine derartige Serialisierung von Operationen verlangt vollständig leere Mikroprozessor-Register vor Ausgabe der serialisierten Operation und erfordert die Zuteilung dieser Ressourcen an den serialisierten Befehl bis zum Abschluss. Nach der vorliegenden Erfindung nimmt die Leistungsfähigkeit des Mikroprozessors wesentlich zu, indem eine Serialisierung nicht verlangt wird und zusätzliche nachfolgende Befehle gleichzeitig mit mehrfachen Ladebefehlen ausgeführt werden können. Abhängig vom Abschlusspuffer des Mikroprozessor kann eine erhebliche Anzahl von weiteren Befehlen vom Mikroprozessor während der Ausführung von Mehrregisterbefehlen durchgeführt werden. Beispielsweise gibt es in der bevorzugten Ausführungsform mit einer Tiefe des Abschlusspuffers von fünf Registern ein Potenzial von bis zu vier zusätzlich abschließenden Befehlen ohne eine Verzögerung in der Befehlskette. Da bis zum Abschluss solcher mehrfachen Ladebefehle bis zu 36 Zyklen vergehen können, bringt dies eine wesentliche Zeitersparnis mit sich, die die Geschwindigkeit und Leistungsfähigkeit des Mikroprozessors verbessert.

Claims (3)

  1. Verfahren zur Ausführung von Mehrfachbefehlen in einem superskalaren Mikroprozessor (10), die wenigstens einen mehrfachen Ladebefehl enthalten, der Ladevorgänge in mehr als ein. Register aus einer Vielzahl von Registern (21, 32, 33) ausführt, wobei das Verfahren die folgenden Schritte umfasst: Ausgeben eines mehrfachen Ladebefehls an die Lade-/Speichereinheit (28), worin die Lade-/Speichereinheit mit der Ausführung eines ausgegebenen mehrfachen Ladebefehls beginnt und der mehrfache Ladebefehl Daten aus dem Speicher in eine Vielzahl von Registern (21, 32, 33) lädt; dadurch gekennzeichnet, dass eine Tabelle geführt wird, die jedes Register aus der Vielzahl von Registern auflistet und angibt, wann vom ausführenden mehrfachen Ladebefehl Daten in jedes Register geladen wurden; und Ausführen eines Befehls, der abhängig ist von Daten des Quelloperanden, welche von dem mehrfachen Ladebefehl in ein Register aus der Vielzahl von Registern geladen wurde, das vom Befehl als Quellregister ausgewiesen wird, bevor die Ausführung des mehrfachen Ladebefehls endet, wenn die Tabelle anzeigt, dass die Daten des Quelloperanden in das Quellregister geladen wurden.
  2. Verfahren aus Anspruch 1, worin der abhängige Befehl nicht endet bevor der mehrfache Ladebefehl ausgeführt worden ist.
  3. Superskalarer Mikroprozessor (10), der Mittel zur Ausführung aller Schritte des Verfahrens nach einem der vorherigen Verfahrensansprüche umfasst.
DE69636861T 1995-09-11 1996-08-29 Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern Expired - Lifetime DE69636861T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/526,343 US5694565A (en) 1995-09-11 1995-09-11 Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US526343 1995-09-11

Publications (2)

Publication Number Publication Date
DE69636861D1 DE69636861D1 (de) 2007-03-15
DE69636861T2 true DE69636861T2 (de) 2007-07-05

Family

ID=24096948

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69636861T Expired - Lifetime DE69636861T2 (de) 1995-09-11 1996-08-29 Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern

Country Status (5)

Country Link
US (2) US5694565A (de)
EP (1) EP0762270B1 (de)
JP (1) JP3096427B2 (de)
KR (1) KR100234646B1 (de)
DE (1) DE69636861T2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH096614A (ja) * 1995-06-21 1997-01-10 Sanyo Electric Co Ltd データ処理装置
US6006320A (en) * 1996-07-01 1999-12-21 Sun Microsystems, Inc. Processor architecture with independent OS resources
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US5913054A (en) * 1996-12-16 1999-06-15 International Business Machines Corporation Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US6006325A (en) * 1996-12-19 1999-12-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for instruction and data serialization in a computer processor
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6039765A (en) * 1997-12-15 2000-03-21 Motorola, Inc. Computer instruction which generates multiple results of different data types to improve software emulation
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
US6202130B1 (en) 1998-04-17 2001-03-13 Motorola, Inc. Data processing system for processing vector data and method therefor
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
GB0023697D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Register assignment in a processor
US6789187B2 (en) * 2000-12-15 2004-09-07 Intel Corporation Processor reset and instruction fetches
JP2004151915A (ja) * 2002-10-30 2004-05-27 Renesas Technology Corp データ処理装置
GB2402759B (en) * 2003-06-12 2005-12-21 Advanced Risc Mach Ltd Data processing apparatus and method for transferring data values between a register file and a memory
CA2434257A1 (en) * 2003-07-03 2005-01-03 Ibm Canada Limited - Ibm Canada Limitee Pairing of spills for parallel registers
US8078845B2 (en) * 2005-12-16 2011-12-13 Freescale Semiconductor, Inc. Device and method for processing instructions based on masked register group size information
JP2010500679A (ja) * 2006-10-27 2010-01-07 インテル・コーポレーション プロセッサ内のマルチスレッド間通信
US7600099B2 (en) * 2007-03-08 2009-10-06 International Business Machines Corporation System and method for predictive early allocation of stores in a microprocessor
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US7987343B2 (en) * 2008-03-19 2011-07-26 International Business Machines Corporation Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8082467B2 (en) * 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8464030B2 (en) 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US9201656B2 (en) * 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers
US8914616B2 (en) 2011-12-02 2014-12-16 Arm Limited Exchanging physical to logical register mapping for obfuscation purpose when instruction of no operational impact is executed
US20130173886A1 (en) * 2012-01-04 2013-07-04 Qualcomm Incorporated Processor with Hazard Tracking Employing Register Range Compares

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493020A (en) * 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
GB8817911D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5241636A (en) * 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
JPH0455986A (ja) * 1990-06-26 1992-02-24 Toshiba Corp 画像処理装置
JP2556182B2 (ja) * 1990-08-29 1996-11-20 三菱電機株式会社 デ−タ処理装置
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
EP0651321B1 (de) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
EP0686912B1 (de) * 1994-06-03 1998-12-16 Motorola, Inc. Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb

Also Published As

Publication number Publication date
EP0762270B1 (de) 2007-01-24
JPH09146770A (ja) 1997-06-06
US5694565A (en) 1997-12-02
KR970016945A (ko) 1997-04-28
US5867684A (en) 1999-02-02
JP3096427B2 (ja) 2000-10-10
KR100234646B1 (ko) 1999-12-15
EP0762270A2 (de) 1997-03-12
DE69636861D1 (de) 2007-03-15
EP0762270A3 (de) 2004-07-28

Similar Documents

Publication Publication Date Title
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE68927911T2 (de) Datenverarbeitungssystem
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE69607760T2 (de) Ungeordnete lade-/speicher-ausführungssteuerung
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE3685913T2 (de) Vektorenverarbeitung.
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE69321929T2 (de) Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)