[go: up one dir, main page]

DE69506623T2 - Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb - Google Patents

Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb

Info

Publication number
DE69506623T2
DE69506623T2 DE69506623T DE69506623T DE69506623T2 DE 69506623 T2 DE69506623 T2 DE 69506623T2 DE 69506623 T DE69506623 T DE 69506623T DE 69506623 T DE69506623 T DE 69506623T DE 69506623 T2 DE69506623 T2 DE 69506623T2
Authority
DE
Germany
Prior art keywords
load
unit
instruction
data
store
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69506623T
Other languages
English (en)
Other versions
DE69506623D1 (de
Inventor
David P. Austin Texas 78758 Burgess
Marvin A. Austin Texas 78727 Denman
Milton M. Jr. Austin Texas 78722 Hood
Mark A. Dallas Texas 75234 Kearney
Lavanya Palo Alto California 94301 Kling
Graham R. No. 1222 Austin Texas 78759 Murphy
Seungyoon Peter Austin Texas 78759 Song
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of DE69506623D1 publication Critical patent/DE69506623D1/de
Publication of DE69506623T2 publication Critical patent/DE69506623T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)

Description

    Gegenstand der Erfindung
  • Die vorliegende Erfindung betrifft grundsätzlich digitale Computersysteme und insbesondere Lade- und Speicherbefehle.
  • Hintergrund der Erfindung und Stand der Technik
  • Alle Datenprozessoren bzw. datenverarbeitenden Computer führen einige Befehle aus, bei denen diese die Ergebnisse von deren internen Berechnungen zu dem Rest des Datenverarbeitungssystems bewegen, von denen diese ein Teil sind und umgekehrt. Die Ergebnisse dieser Berechnungen können zu einem externen Speichersystem zur Speicherung und späterer Benutzung, zu einer Bildröhre (im folgenden CRT von Cathode Ray Tube) zur Anzeige für einen menschlichen Benutzer oder zu einem Netzwerk zur Transmission zu einem anderen Datenverarbeitungssystem bewegt werden. Diese Befehle werden oft als "Speicher-" oder "Schreibe" Befehle bezeichnet. Umgekehrt können Daten von einem externen Speichersystem oder von einer Eingabe-/Ausgabeeinrichtung ("I/O"), wie beispielsweise eine Tastatur zu dem Datenverarbeitungssystem, bewegt werden, wo diese verarbeitet werden. Diese Befehle werden häufig als "Lade" oder "Lese" Befehle bezeichnet.
  • Es existiert eine große Vielfalt von Lade-/Speicher-Befehlen, selbst innerhalb einer bestimmten Computerarchitektur. Eine Auswahl von Lade- /Speicher-Befehlen entspannt die Bürde, die auf dem Softwareprogrammierer lastet. Diese unterschiedlichen Befehle unterscheiden sich von einander durch die Anzahl der transferierten Daten, durch die Berechnung der Adresse der Datenquelle oder des Datenziels, durch das Format der Daten usw. Eine Art der Lade-/Speicher-Befehle ist ein "Lade-Mehrfach" oder "Speicher-Mehrfach" Befehl. Diese beiden Befehle laden den Inhalt einer Serie von sequentiellen Speicherstellen in eine Serie von sequentiellen internen Registern oder umgekehrt während einiger Prozessor-Takt-Zyklen. Die Anzahl der Speicherstellen, die Startadresse der Speicheradresse und die Startadresse des internen Registers, werden durch das Befehlsformat und deren Operanden bestimmt.
  • Ein Lade-/Speicher-Mehrfach-Befehl ist für die Implementation in einem Datenprozessor mit mehreren Befehlsausführungs-Einheiten (Pipelines) ein schwieriger Befehl. Bestimmte Datenprozessoren, insbesondere Computer mit reduziertem Befehlssatz ("RISC") und einige Computer mit komplexem Befehlssatz ("CISC") überlappen die Befehlsverarbeitung, um die Leistung zu erhöhen. Diese Strategie wird oft durch einen Lade- /Speicher-Mehrfach-Befehl zu Fall gebracht. Beispielsweise kann ein einfacher Lade-Mehrfach-Befehl jedes interne Register aktualisieren. Sämtliche nachfolgenden Befehle in dem Befehlsstrom müssen solange verzögert werden bis die relevanten Daten verfügbar sind. Umgekehrt kann ein einfacher Speicher-Mehrfach-Befehl jedes interne Register ausgeben. Dieser Befehl muß verzögert werden bis die Daten verfügbar sind. In der Zwischenzeit muß der Speicher-Mehrfach-Befehl in einer Art internen Warteschlange gepuffert bzw. zwischengespeichert werden. Diese Strategie schließt dabei die Benutzung dieser Ressourcen durch andere Befehle aus. In "Overlapped Execution with Load Multiple and Store Multiple", IBM Technical Disclosure Bulletin, Feb. 1991, US, vol. 33, Nr. 9, S. 41-42, wird ein Weg zum Überlappen der Ausführung von Lade- Mehrfach- und Speicher-Mehrfach-Befehlen mit anderen Nicht-Speicher Arbeitsweisen beschrieben.
  • Zusammenfassung der Erfindung
  • Gemäß der vorliegenden Erfindung wird ein Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und ein Verfahren beschrieben, die Nachteile der bekannten Datenprozessoren und Schemata erheblich eliminieren. Der offenbarte Datenprozessor weist eine Vielzahl von architektonischen Registern, einen Umbennenungspuffer, eine Ladeeinheit und eine Sequenzereinheit, die miteinander verbunden sind, auf. Der Umbenennungspuffer umfaßt eine Vielzahl von Einträgen zum Zwischenspeichern bzw. Puffern eines unterschiedlichen Ergebnisses aus einer Vielzahl von Ergebnissen zu oder von einem unterschiedlichen Befehl aus einer Vielzahl von Befehlen. Die Ladeeinheit fordert für jedes Ladebefehlsmarkierungspaar, das zu diesem gesendet wird, Daten, die durch eine Adresse aus dem Speichersystem indiziert sind, an. Die Ladeeinheit puffert auch die Daten in einen der Vielzahl von Einträgen des Umbennenungspuffers, wie durch die Markierung innerhalb des Ladebefehlsmarkierungspaars spezifiziert ist. Die Sequenzereinheit empfängt einen Lade-Mehrtach-Befehl, der N*W Bytes anfordert, wobei N und W ganze Zahlen sind, wobei N größer als 1 ist und wobei jede der Vielzahl von architektonischen Register W Bytes groß ist. Die Sequenzereinheit sendet dann N Ladebefehlsmarkierungspaare zur Ladeinheit ab.
  • Das offenbarte Verfahren umfaßt die Schritte von, während einer ersten Zeit bzw. eines ersten Males, Empfangen eines Lade-Mehrfach-Befehls in einer Sequenzereinheit, und, während N nachfolgenden Zeiten bzw. Malen Absenden von N LadeBefehlsmarkierungspaaren zu einer Ladeeinheit und Speichern eines unterschiedlichen Eintrags aus einer Vielzahl von Einträgen eines Umbenennungspuffers zu einem unterschiedlichen Register aus einer Vielzahl von architektonischen Registern. Der Lade- Mehrfach-Befehl fordert N*W Bytes Daten an, wobei N und W ganze Zahlen sind, wobei N größer als 1 ist und wobei jedes der Vielzahl von architektonischen Registern W Bytes groß ist. Die Ladeeinheit fordert für jedes Ladebefehlsmarkierungspaar, das zu diesem abgesendet wurde, W Bytes Daten, die durch eine Adresse von einem Speichersystem indiziert sind, an. Die Ladeeinheit puffert ferner W Bytes Daten in einer der Vielzahl von Einträgen des Umbenennungpuffers. Die Markierung des Ladebefehlsmarkierungspaars identifiziert den bestimmten mit Index versehenen bzw. indizierten Eintrag.
  • Kurze Beschreibung der Zeichnungen
  • Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung in Verbindung mit den beigefügten Figuren, bei denen entsprechende Bezugsziffern zu entsprechenden und korrespondierenden Teilen Bezug nehmen, besser verständlich, wobei:
  • Fig. 1 ein Blockdiagramm eines Datenprozessors, der gemäß der vorliegenden Erfindung konstruiert ist, darstellt;
  • Fig. 2 ein Ablaufdiagramm für die Ausführung eines Befehls durch den Datenprozessor, der in Fig. 1 dargestellt ist, zeigt;
  • Fig. 3 ein Blockdiagramm der Lade-/Speichereinheit 28, die in Fig. 1 dargestellt ist, darstellt; und
  • Fig. 4 ein Zustands-Übergangsdiagramm darstellt, das die möglichen Zustände illustriert, in denen jeder Eintrag der Speicherwarteschlange, die in Fig. 3 dargestellt ist, sein kann.
  • Detaillierte Beschreibung eines bevorzugten Ausführungsbeispiels
  • Fig. 1 stellt ein Blockdiagramm eines Datenprozessors 10, der gemäß der vorliegenden Erfindung konstruiert ist, dar. Der Datenprozessor 10 implementiert den PowerPC-Architektur-Befehlssatz. Der PowerPC- Architektur-Befehlssatz beinhaltet Lade-/Speicher-Mehrfach- und Lade- /Speicher-Zeichenketten (string)-Befehle. Der Datenprozessor 10 bestimmt die Existenz dieser Befehle während dieser einen Befehlsstrom ausführt und diese Befehle in eine Sequenz von individuellen Lade- oder individuellen Speicher-Befehlen "ent- oder aufrollt" ("unrolls") oder bricht. Wenn beispielsweise der Datenprozessor 10 einen Speicher-Mehrfach- Befehl begegnet, der den Inhalt von sechzehn sequentiellen internen Registern zu sechzehn sequentiellen Speicherstellen ausgibt, dann sendet der Datenprozessor 10 sechzehn einfache Register-Speicher-Befehle ab. Diese Strategie ermöglicht es dem Datenprozessor 10 dessen Umbenennungsmethodik für Lade-/Speicher-Mehrfach-Befehle zu benutzen. Außerdem kann der Datenprozessor 10 andere Befehle nach einem Lade-/Speicher-Mehrfach-Befehfabsenden.
  • Unter weiterer Bezugnahme auf Fig. 1 wird eine Bus-Schnittstellen-Einheit (im folgenden BIU genannt) 12 dargestellt, die den Datenfluß zwischen dem Datenprozessor 10 und dem Rest eines Datenverarbeitungssystems (das nicht dargestellt ist) steuert. BIU ist mit einem Befehlscache 14 und mit einem Datencache 16 verbunden. Der Befehlscache 14 liefert einen Befehlsstrom zu einer Sequenzereinheit 18. Die Sequenzereinheit 18 schickt individuelle Befehle zu einer geeigneten Ausführungseinheit ab. Der Datenprozessor 10 umfaßt eine Verzweigungseinheit 20, eine Festkomma-Ausführungseinheit A 22, eine Festkomma-Ausführungseinheit B 24, eine Komplex-Festkomma-Ausführungseinheit 26, eine Lade- /Speicher-Ausführungseinheit 28 und eine Gleitkomma-Ausführungseinheit 30. Die Festkomma-Ausführungseinheit A 22, die Festkomma- Ausführungseinheit B 24, die Komplex-Festkomma-Ausführungseinheit 26 und die Lade-/Speicher-Ausführungseinheit 28 lesen und schreiben deren Ergebnisse zu einer universal architektonischen Registerdatei 32 (die als GPRs dargestellt ist und im folgenden GPR-Datei genannt wird) und zu einem ersten Umbenennungspuffer 34. Der erste Umbenennungspuffer 34 wird untenstehend in Verbindung mit den Fig. 3 und 4 beschrieben. Die Gleitkomma Ausführungseinheit 26 und die Lade-/Speicher- Ausführungseinheit 28 lesen und schreiben deren Ergebnisse zu einer Gleitkomma-Architektonischen-Registerdatei 36 (die als FPRs dargestellt ist und im folgenden FPR-Datei genannt wird) und zu einem zweiten Umbenennungspuffer 38.
  • Der Betrieb des Datenprozessors 10 ohne die offenbarte Erfindung ist im Stand der Technik bekannt. Grundsätzlich bestimmt die Verzweigungseinheit 20, welche Sequenz der programmierten Befehle bei den gegebenen Inhalten der bestimmten Datenregister und der Befehle selbst angemessen ist. Der Befehlscache 14 stellt diese Sequenz von programmierten Befehlen dem Sequenzer 18 zur Verfügung. Sofern der Befehlscache 14 die benötigen Befehle nicht beinhaltet, dann wird dieser sich diese von einem Hauptspeichersystem, das extern zu dem Datenprozessor 10 angeordnet ist (und nicht dargestellt ist), holen.
  • Die Sequenzereinheit 18 sendet die individuellen Befehle der Sequenz von programmierten Befehlen zu den verschiedenen Ausführungseinheiten 20, 22, 24, 26, 28 und 30 ab. Die Sequenzereinheit 18 reserviert ferner einen Eintrag entweder in den Umbenennungspuffer 34 oder 38, in denen das Ergebnis, sofern vorhanden, von jedem Befehl temporär gespeichert wird. Beide Umbennungspuffer sind sogenannte First-in-first-out ("FIFO") Warteschleifen.
  • Jede der Ausführungseinheiten führt eine oder mehrere Befehle einer bestimmten Klasse von Befehlen aus. Die bestimmte Klasse von Befehlen jeder Ausführungseinheit ist durch den Namen der Ausführungseinheit indiziert. Beispielsweise führen die Festkomma-Ausführungseinheiten A und B einfache mathematische Arbeitsvorgänge auf Operanden aus, die in Fließkomma-Notation dargestellt sind, wie beispielsweise Addition, Substraktion, die Operation eines logischen UND (im folgenden ANDing) genannt, die Verknüpfung eines logischen ODER (im folgenden ORing genannt) und die Verknüpfung eines logischen Exklusiven ODER (im folgenden XORing genannt). Die Komplex-Festkomma-Ausführungseinheit 26 führt komplexere mathematische Operationen auf Operanden aus, die in Festkomma-Notation dargestellt sind, wie beispielsweise die Multiplikation und die Division. Die Gleitkomma-Ausführungseinheit 30 führt mathematische Operationen mit Operanden durch, die in Gleitkomma- Notation dargestellt sind, wie beispielsweise die Multiplikation und die Division.
  • Die Festkomma-Ausführungseinheiten A und B und die Komplex- Festkomma-Einheit 26 retournieren die Ergebnisse von deren Operationen zu bestimmten Einträgen im ersten Umbenennungspuffer 34. Der erste Umbenennungspuffer 34 aktualisiert periodisch einen Eingang der GPR- Datei 32 mit einem Eingang von dem ersten Umbenennungspuffer 34, wenn sämtliche Befehle, die dem Befehl, der das Ergebnis generiert hat, vorangehen, deren GPR-Einträge aktualisiert haben. Diese Sequenzereinheit 18 unterstützt einen Umstellungspuffer 39, um dieses Aktualisieren zu koordinieren. Der Umstellungspuffer 39 ist eine FIFO- Warteschlange, die einen Teil des programmierten Befehlsstromes in dessen originären Reihenfolge speichert. Die Sequenzereinheit 18 wartet, bis der älteste Befehl im Umstellungspuffer 39 beendet ist. Dann aktualisiert die Sequenzereinheit 18 das architektonische Register mit dem Ergebnis, daß der Eintrag des Umbennungspuffers, der für diesen Befehl zur Verfügung gestellt wird, gespeichert ist. Die Sequenzereinheit 18 hebt w auch den Eintrag des Befehls im Umstellungspuffer 39 auf, um Platz für spätere Befehle zu machen. Sowohl der erste Umbennungspuffer 34 als auch die GPR-Datei 32 können Operanden zu den Festkomma- Ausführungseinheiten A und B und zu der Komplex-Festkomma-Einheit 26 liefern.
  • Die Gleitkomma-Ausführungseinheit 30 retourniert die Ergebnisse von deren Operationen zu bezeichneten Einträgen im zweiten Umbennungspuffer 38. Der zweite Umbennungspuffer 38 aktualisiert periodisch einen Eintrag der FPR-Datei 36 mit einem Eintrag im zweiten Umbennungspuffer 38, wenn alle Befehle, die dem Befehl, der das Ergebnis erzeugt, vorangehen, deren FPR-Dateieinträge aktualisiert haben. Diese Sequenzereinheit 18 koordiniert auch dieses Aktualisieren. Sowohl der zweite Umbennungspuffer 38 als auch die FPR-Datei 36 stellen der Gleitkomma-Ausführungseinheit 30 Operanden zur Vertilgung.
  • Die Lade-/Speicher-Einheit liest Daten, die in der GPR-Datei 32 oder der FPR-Datei 36 gespeichert sind, bei der Vervollständigungszeit und schreibt die ausgewählten Daten zum Datencache 16. Diese Daten können auch zu einem externen Speichersystem (das nicht dargestellt ist) in Abhängigkeit der Betriebscharakteristiken des Datenprozessors 10, die nicht für die offenbarte Erfindung relevant sind, geschrieben werden. Umgekehrt liest die Lade-/Speicher-Einheit 28 Daten, die im Datencache 16 gespeichert sind und schreibt die gelesenen Daten zu dem ersten Umbennungspuffer 34 oder dem zweiten Umbennungspuffer 38. Sofern der Datencache 16 nicht die benötigten Daten enthält, dann wird er diese von dem Hauptspeichersystem, das extern zum Datenprozessor 10 ist, über BIU 12 holen. Die Lade-/Speicher-Einheit 28 wird unten in Verbindung mit den Fig. 3 und 4 beschrieben.
  • Die Arbeitsweise des Datenprozessors 10 gemäß der offenbarten Erfindung wird unten in Verbindung mit den Fig. 2 bis 4 beschrieben. Grundsätzlich ist der Datenprozessor 10 ein Computer mit reduziertem Befehlssatz ("RISC"). Der Datenprozessor 10 erreicht eine hohe Leistung durch Trennen jedes Befehls in eine Sequenz von kleineren Schritten, wobei jeder dieser Schritte zeitlich mit Schritten anderer Befehle überlappen kann. Diese Durchführungsstrategie ist als Überlappung bzw. Fließbandverarbeitung oder "Pipe Lining" bekannt.
  • Fig. 2 stellt ein Ablaufdiagramm eines Befehls, der durch den Datenprozessor 10, der in Fig. 1 dargestellt ist, ausgeführt wird, dar. In dem dargestellten Ausführungsbeispiel wird jeder Befehl in fünf diskrete Schritte getrennt: Abrufen, Decodieren, Abfertigen, Ausführen und Vervollständigen.
  • In der Stufe des Abrufens holt ein Speicher-Management-Schaltkreis (der nicht dargestellt ist) innerhalb des Befehlscache 14 eine oder mehrere Befehle, die mit einer Speicheradresse beginnen, die in dem vorherigen Taktzyklus durch die Sequenzereinheit 18 oder durch die Verzweigungseinheit 20 identifiziert sind.
  • In der Stufe des Decodierens werden die Befehle durch die Sequenzereinheit 18 in eine Anzahl von Kontrollsignalen decodiert, um diese anschließenden Stufen zu benutzen. Während dieser Stufe bestimmt die Sequenzereinheit 18, daß ein Lade-/Speicher-Mehrfachbefehl existiert.
  • In der Stufe des Abfertigens leitet die Sequenzereinheit 18 jeden Befehl zu der geeigneten Ausführungseinheit, nachdem bestimmt wurde, daß keine unzulässigen Daten oder Ressourceabhängigkeiten existieren, und nach Reservierung einer Eintragungs des Umbennungspuffers für das Ergebnis des Befehls. Die Abfertigungsstufe ist auch für das Liefern von Operandeninformationen für die abgesendeten Befehle oder, sofern einer oder mehrere Operanden noch nicht verfügbar sind, zum Senden einer Markierung, die den Eintrag des Umbennungspuffers, zu dem der Operand geschrieben werden soll, identifiziert, verantwortlich. Jede der Ausführungseinheiten speichert deren bestimmte Befehle in einer Reservierungsstation, bis sie sämtliche notwendigen Operandeninformationen zur Ausführung des Befehls erhält. Die Sequenzereinheit 18 bricht bzw. unterteilt den einfachen Lade-Speicher- Mehrfachbefehl in eine Serie von einfachen Lade-/Speicherbefehlen. Die Sequenzereinheit 18 reserviert einen Eintrag im Umbennungspuffer für jeden der einfachen Ladebefehle. Jeder einfache Ladebefehl wird dessen Daten anfänglich zu diesem bestimmten Eintrag schreiben. Später wird die Sequenzereinheit 18 diese Daten zu dem entsprechenden architektonischen Register kopieren. Ein anschließender Befehl, der den Inhalt eines der architektonischen Register benötigt, wird die Markierung, die den Eintrag des Umbennungspuffers, in dem die Daten gepuffert werden, empfangen. Diese Strategie beschleunigt die Abfertigung des anschließenden Befehls. Auf ähnlich Weise schickt die Sequenzereinheit 18 eine Umbennungspuffermarkierung mit jedem der einfachen Speicherbefehle ab. Diese Markierung identifiziert, wo die gespeicherten Daten zuerst gefunden werden können.
  • In der Stufe des Ausführens empfängt jede bestimmte Ausführungseinheit alle (oder einige) der notwendigen Operandeninformationen und kann daher die Ausführung von deren programmiertem Befehl beginnen. Ergebnisse, sofern diese vorliegen, werden entweder zum ersten Umbennungspuffer 34 oder zum zweiten Umbennungspuffer 38 entsprechend für ganzzahlige Ergebnisse und Gleitkomma-Ergebnisse retourniert. Die Lade-/Speicher-Einheit 28 berechnet die effektive Adresse der gewünschten Speicherstelle gemäß der Operanden der Lade- /Speicherbefehle und deren Formate. Die Lade-/Speicher-Einheit 28 kann den Befehl in eine Lade- oder Speicher-Warteschlange (Fig. 3) bewegen. Der Datencache 16 beginnt auch, die berechnete effektive Adresse in eine reale Adresse zu übersetzen. Der Datenprozessor 10 benutzt intern eine effektive Adresse, um jede mögliche Speicherstelle zu indizieren, und eine reale Adresse extern, um jede mögliche Speicherstelle zu indizieren. Der Datenprozessor 10 bewahrt eine Tabelle von Adreßübersetzungen (die nicht dargestellt ist), um von einem Format in das andere Format zu konvertieren.
  • Ein Speicherbefehl kann einen oder mehrere zusätzliche Ausführungsstufen benötigen. Wenn es dem Speicherbefehl nicht möglich ist, sofort auf den Datencache 16 zuzugreifen, dann verbleibt der Speicherbefehl in dem Speicherpuffer, wie unten beschrieben.
  • In der Stufe des Vervollständigens aktualisiert die Sequenzereinheit 18 die architektonischen Registerdateien mit dem Ergebnis eines bestimmten Befehls, der in einem Umbennungspuffer gespeichert ist, nachdem jeder dem bestimmten Befehl vorangehende Befehl derart die architektonische Registerdatei aktualisiert hat. Ein Befehl ist der älteste Befehl in dem Umstellungspuffer 39, sofern dieses Kriterium erreicht ist. Die Vervollständigungsstufe aktualisiert auch alle anderen architektonischen Stufen in der Maschine, nachdem jeder dem bestimmten Befehl vorangehende Befehl so die architektonische Stufe aktualisiert hat. Speicherbefehle werden dem Datencache 16 präsentiert, wenn alle Befehle, die diesem vorangehen, vervollständigt wurden.
  • Grundsätzlich benötigt jede Befehlsstufe einen Maschinentaktzyklus. Wie auch immer, benötigen einige Befehle, wie beispielsweise Komplex- Festkomma-Befehle mehr als einen Taktzyklus, um ausgeführt zu werden. Aus diesem Grunde kann eine Verzögerung zwischen den Ausführungs- und Vervollständigungsstufen eines bestimmten Befehls aufgrund des Zeitbereichs, den vorherige Befehle zur Ausführung benötigten, vorhanden sein.
  • Fig. 3 stellt ein Blockdiagramm einer Lade-/Speicher-Einheit 28, die in Fig. 1 dargestellt ist, dar. Die Lade-/Speicher-Einheit 28 hat eine Reservierungsstation 40, die verschiedene Informationen über jeden Lade- /Speicherbefehl speichert. Die Reservierungsstation 40 empfängt entweder einen Speicherbefehl oder einen Ladebefehl von der Sequenzereinheit 18, zwei Operanden, A und B, und eine Umbennungsmarkierung. Die Umbennungsmarkierung identifiziert das Ziel in einem der Umbennungspuffer der geladenen Daten, sofern vorhanden. Ein Multiplexer ("MUX") 41 gibt einen von zwei Eingängen zur Reservierungsstation 40 als Operand A aus. Ein Multiplexer 43 gibt einen von zwei Eingängen zur Reservierungsstation 40 als Operand B aus. Die Multiplexer 41 und 43 empfangen jeder einen Eingang von den Ergebnisbussen, die mit der GPR-Datei 32 und dem ersten Umbennungspuffer 34 verbunden sind. Die Reservierungsstation 40 übermittelt zwei Operanden und den Befehl jeweils zu einem Addierer 42 und zu einem Signalspeicher 44 (der im folgenden Latch genannt wird). Der Addierer 42 berechnet eine effektive Adresse der Quelle/des Ziels jedes Lade-/Speicherbefehls durch mathematisches Summieren der zwei Operanden. Der Ausgang des Addierers 42 wird durch einen Latch 46 aufgeschaltet bzw. eingeklingt und wird dem Datencache 16 und dem zweiten Eingang des Multiplexers 41 zugeordnet. Die Latches 44 und 46 werden durch ein globales periodisches Taktsignal (das nicht dargestellt ist) getaktet. Der zweite Eingang des Multiplexers 43 empfängt den Ausgang eines Eins-zu-Vier- Generators 45. Der Eins-zu-Vier-Generator 45 empfängt Steuerinformationen von der Sequenzereinheit 18, die mit "CONTROL" bezeichnet ist, welche diese benutzt, um auszuwählen, welche Eingänge des Multiplexers 41 und 41 der Reservierungsstation ausgegeben werden.
  • Der Befehl und die effektive Adresse, die durch die Latches 44 und 46 aufgeschaltet sind, werden einer Speicherwarteschlange 48 und einer Ladewarteschlange 50 zugeordnet. Eine Steuerlogikeinheit 52 wählt aus, welche der zwei Warteschlangen die Daten aufschaltet, und zwar in Abhängigkeit der Klasse von Befehlen. Die Steuerlogikeinheit 52 empfängt den Befehlsoperationscode von der Reservierungsstation 40, um diese Wegsteuerung zu vereinfachen. Die Steuerlogikeinheit 52 empfängt auch verschiedene Steuersignale von dem Datencache 16 und von der Sequenzereinheit 18. Die Steuerlogikeinheit 52 steuert, welche von drei Eingängen ein Multiplexer 54 dem Datencache 16 ausgibt. Der Multiplexer 54 empfängt eine Adresse von dem Latch 46, von der Speicherwarteschlange 48 und von der Ladewarteschlange 50. Der Betrieb der Steuerlogikeinheit 52 ist unten beschrieben.
  • Der Betrieb des Datenprozessors 10 in bezug auf Lade- und Speicherfunktionen wird unten in zwei Teilen beschrieben. Diese zwei Teile folgen grundsätzlich dem Fluß eines Lade- oder eines Speicherbefehls durch den Datenprozessor 10. Als erstes wird das "Abrollen" bzw. in Teile Unterteilen eines Lade-/Speicher-Mehrfachbefehls in eine Serie von einfachen Lade-/Speicherbefehlen beschrieben. Als zweites wird das Puffern jedes einfachen Lade-/Speicherbefehls in eine Ladewarteschlange 50 oder eine Speicherwarteschlange 48 beschrieben.
  • ABROLLEN BZW. IN STÜCKE TEILEN EINES LADE-/SPEICHER- MEHRFACHBEFEHLS
  • Der Datenprozessor 10 ist eine Implementation der PowerPC-Architektur. Der PowerPC-Architektur-Befehlssatz definiert drei Typen von komplexen Arten von sowohl Lade- als auch Speicherbefehlen: (1) Mehrfachwort, (2) unmittelbares Zeichenfolgenwort und (3) mit Index versehenes Zeichenfolgenwort.
  • Lade-Mehrfachwort "Imw RT.D(RA)"
  • Der Lade-Mehrfachwort-Befehl lädt den Inhalt von N aufeinanderfolgenden Worten (32 Bits pro Wort) in N aufeinanderfolgende Register der GPR- Datei 32, wobei N eine ganze Zahl ist, die gleich (32-RT) ist. Durch Konvention sind die 32 Register der GPR-Datei 32 zwischen 0 und 31 bezeichnet. Jedes Register der GPR-Datei 32 ist vier Bytes oder ein Wort weit. Die durch den Lademehrfachbefehl gelesenen Daten beginnen bei der Speicheradresse, die durch die Summe des Registers A (Operand A) und des Feldes D (Operand B) spezifiziert ist. Die Daten werden eine Sequenz von Registern, die mit dem Register, das durch RT spezifiziert ist, beginnen, geladen.
  • Die Sequenzereinheit 18 decodiert einen Lade-Mehrfachwort-Befehl und sendet (32-RT) einfache Ladebefehle zur Lade-/Speichereinheit 28 ab. Die Sequenzereinheit 18 inkrementiert die Zielregisterzahl (RT) der Ladedaten mit eins für jeden folgenden Ladebefehl. Dieses Ziel wird ein einem Umbenennungspuffer 34 gespeichert, um die spätere Zuordnung der Daten zu dem geeigneten architektonischen Register zu erleichtern. Die Sequenzereinheit 18 teilt jedem der (32-RT) Befehlen einen unterschiedlichen Umbennungseintrag und einen unterschiedlichen Umstellungspuffereintrag zu.
  • Die Sequenzereinheit 18 macht ein Steuersignal zu dem Eins-von-Vier- Generator 45 geltend, das indiziert, daß ein bestimmter abgesendeter Befehl ein Lade-Mehrfachwort-Befehl ist. Anfänglich veranlaßt der Eins-zu- Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit den Ergebnisbussen verbunden sind, auszugeben. Auf jeden der nachfolgenden (31-N) Ladebefehle veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit dem Addierer 42 und dem Eins-zu-Vier-Generator 45 verbunden sind, auszugeben. Der Eins-zu- Vier-Generator 45 gibt auch die Zahl Vier zu dem Multiplexer 45 aus. Funktionell veranlaßt die Ausgabe der Zahl Vier, die zu der vorherigen effektiven Adresse addiert wird, die Lade-/Speicher-Einheit 28, das nächste ausgerichtete Wort aus dem Datencache 16 oder von einem externen Speichersystem anzufordern.
  • Die Steuerlogikeinheit 52 schreibt jeden Ladebefehl zu dem unterschiedlichen Umbennungspuffereintrag, der durch die Sequenzereinheit 18 spezifiziert wurde, zurück. Diese Strategie ermöglicht es den nachfolgenden Befehlen, auf Daten für deren Berechnungen vor der Aktualisierung des Ladebefehls des architektonischen Registers zuzugreifen, "Datenvorausschickung". Jedem Ladebefehl ist der Zugriff auf das Datencache 16 "spekulativ" erlaubt, sobald dieser abgesendet wurde. Sofern notwendig, ist ein "nicht spekulativer" Zugriff auf das externe Speichersystem erlaubt, wenn deren Umstellungspuffer-Eintrag 39 der älteste Eintrag ist.
  • Speicher-Mehrfachwort "stmw RS.D(RA)"
  • Der Speicher-Mehrfachwort-Befehl speichert den Inhalt von N nachfolgenden Registern der GPR-Datei 32 in den Inhalt von N nachfolgenden Speicherwörtern, wobei N eine ganze Zahl ist, die gleich (32-RS) ist. Der Speicher-Mehrfachwort-Befehl beginnt bei der Speicheradresse, die durch die Summe des Register RA (Operand A) und des Feldes D (Operand B) spezifiziert ist. Die Daten werden in die Sequenz von Registern, beginnend mit dem Register, das durch RS spezifiziert ist, geladen.
  • Die Sequenzereinheit 18 decodiert einen Speicher-Mehrfachwort-Befehl und sendet (32-RS) einfache Speicherbefehle zur Lade-/Speicher-Einheit 28 ab. Die Sequenzereinheit 18 inkrementiert die Quellenregisterzahl (RS) der Speicherdaten mit eins für jeden folgenden Speicherbefehl. Die Sequenzereinheit 18 stellt die Daten (RS anfänglich) von dem Register zur Lade-/Speicher-Einheit 28 zur Verfügung, wenn der Speicherbefehl der älteste Befehl im Datenprozessor 10 ist (siehe nachfolgende Beschreibung).
  • Die Sequenzereinheit 18 macht ein Steuersignal zum Eins-zu-Vier- Generator 45 geltend, das indiziert, daß ein bestimmter abgesendeter Befehl ein Speicher-Mehrfachwort-Befehl ist. Anfänglich veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit den Ergebnisbussen verbunden sind, auszugeben. Bei jedem der folgenden (31-N) Speicherbefehlen veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit dem Addierer 42 und dem Eins-zu-Vier-Generator 45 verbunden sind, auszugeben. Der Eins-zu- Vier-Generator 45 gibt auch die Zahl Vier dem Multiplexer 45 aus. Funktionell veranlaßt die Ausgabe der Zahl Vier, die der vorherigen effektiven Adresse addiert wurde, die Lade-/Speicher-Einheit 28, das nächste Wort im Datencache 16 oder in dem externen Speichersystem mit einem Index zu versehen.
  • Jedem Speicherbefehl ist der Zugriff auf den Datencache 16 und das externe Speichersystem (nicht spekulativ) nur dann erlaubt, wenn der Eintrag des Umstellungspuffers 39 der älteste Eintrag ist.
  • Lade-unmittelbares-Zeichenfolgenwort "Iswi RT.RA.NB"
  • Der Lade-unmittelbares-Zeichenfolgewort-Befehl lädt den Inhalt von NB aufeinanderfolgenden Speicherbytes in (NB/4, aufgerundet auf die nächste ganze Zahl) aufeinanderfolgenden Registern der GPR-Datei 32. Der Lade- unmittelbares-Zeichenfolgenwort-Befehl beginnt bei der Speicherbyteadresse, die durch den Inhalt des Registers RA spezifiziert ist und bei dem Register, das durch RT spezifiziert ist. Hierbei existiert kein "B effektiver Adressenoperand" in diesem Befehl.
  • Die Sequenzereinheit 18 decodiert einen Lade-unmittelbares- Zeichenfolgenwort-Befehl und sendet (NB/4, aufgerundet auf die nächste ganze Zahl) einfache Ladebefehle zur Lade-/Speicher-Einheit 28 ab. Die Sequenzereinheit 18 inkrementiert das Zielregister der Ladedaten mit eins für jeden nachfolgenden Ladebefehl. Das Zielregister kann sich vom Register 31 zum Register 0 in Abhängigkeit der Werte von NB und RT "herumwickeln". Ansonsten ist der Betrieb der Sequenzereinheit 18 in diesem Fall ähnlich zu dem Betrieb in einem Lade-Mehrfachwort-Befehl.
  • Sequenzereinheit 18 macht ein Steuersignal zum Eins-zu-Vier-Generator 45 geltend, das indiziert, daß ein bestimmter abgesendeter Befehl ein Lade-unmittelbares-Zeichenfolgenwort-Befehl ist. Anfänglich veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit den Ergebnisbussen verbunden sind, auszugeben. Jeder Lade- unmittelbares-Zeichenfolgenwort-Befehl ist entweder ausgerichtet oder nicht ausgerichtet. Die zwei am wenigstens signifikanten Bits des ersten Bytes in einem ausgerichteten Lade-unmittelbares-Zeichenfolgenwort- Befehl sind null. Die zwei am wenigstens signifikanten Bits der ersten Bytes in einem nicht ausgerichteten Lade-unmittelbares- Zeichenfolgenwort-Befehl sind nicht beide null. Die Ladespeichereinheit 28 funktioniert unterschiedlich für ausgerichtete und nicht ausgerichtete Lade- unmittelbares-Zeichenfolgenwort-Befehle.
  • In einem ausgerichteten Lade-unmittelbares-Zeichenfoigenwort-Befehl erzeugt die Steuerlogikeinheit 52 (NB/4, aufgerundet auf die nächsthöhere ganze Zahl) Zugriffe zum Datencache 16. Diese Operation ist ähnlich zu dem oben beschriebenen Lade-Mehrfachwort-Befehl.
  • Bei einem nicht ausgerichteten Lade-unmittelbares-Zeichenfolgenwort- Befehl verursacht die Lade-/Speicher-Einheit 28 (NB/4+1, aufgerundet auf die nächste ganze Zahl) Zugriffe zum Datencache 16. Diese Strategie stellt sicher, daß ein Rückschreibevorgang zu dem Umbenennungspuffer 34 für jedes modifizierte Register existiert. Ansonsten wären zwei Cachezugriffe notwendig, um drei architektonische Register zu aktualisieren. Anfänglich bestimmt die Steuerlogikeinheit 52, daß ein unmittelbarer Zeichenfolgenwort-Befehl nicht ausgerichtet ist. Der Eins-zu-Vier- Generator 45 veranlaßt die Multiplexer 41 und 43, die Eingänge, die mit dem Ergebnisbus verbunden sind, auszugeben. Bei jedem der nachfolgenden Ladebefehle veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit dem Addierer 42 und dem Eins-zu-Vier-Generator 45 verbunden sind, auszugeben. Während des zweiten Ladebefehls gibt der Eins-zu-Vier-Generator 45 eine der Zahlen eins bis vier zum Multiplexer 45 aus, der das ausgerichtete Wort sofort nach dem Byte, das durch RA spezifiziert ist, mit einem Index versieht. Die Lade-/Speicher-Einheit 28 kann die neuen Daten des ersten Registers zu dem geeigneten Eintrag des Umbennungspuffers 34 schreiben, nachdem zwei Ladebefehle vervollständigt wurden. Puffer, die im Schaltkreis nicht dargestellt sind, vollziehen eine Fehlausrichtung Daten, solange bis vier aufeinanderfolgende Bytes in einen einzigen Eintrag des Umbennungspuffers 34 geladen werden können. Danach gibt der Eins-zu- Vier-Generator die Zahl Vier aus. Die Lade-/Speicher-Einheit 28 kann sämtliche nachfolgenden neuen Daten des Registers zu dem geeigneten Eintrag des Umbennungspuffers 34 nach jedem nachfolgenden Ladebefehl schreiben. Schließlich werden die letzten beiden Ladebefehle durch die Steuerlogikeinheit 52 modifiziert. Der vorletzte Befehl benötigt lediglich ein Byte. Der letzte Ladebefehl fordert die restlichen Bytes (bis zu drei) an, die notwendig sind, um den Lade-unmittelbares-Zeichenfolgenwort-Befehl zu vervollständigen. Ansonsten ist der Betrieb der Sequenzereinheit 18 an diese Stelle ähnlich zu dem Betrieb in einem Lade-Mehrtachwort-Befehl.
  • Speicher-unmittelbares-Zeichenfolgenwort "stswi RS.RA.NB"
  • Der Speicher-unmittelbares-Zeichenfolgenwort-Befehl speichert den Inhalt von (NB/4, aufgerundet auf den nächste ganze Zahl) aufeinanderfolgenden Register der GPR-Datei 32 in den Inhalt von NB aufeinanderfolgenden Speicherbytes. Der Speicher-unmittelbares-Zeichenfolgenwort-Befehl beginnt bei der Speicheradresse, die durch den Inhalt des Registers RA spezifiziert ist und bei dem Register, das durch RS spezifiziert ist. In diesem Befehl existiert kein "B effektiver Adressenoperand".
  • Die Sequenzereinheit 18 decodiert einen Speicher-unmittelbares- Zeichenfolgenwort-Befehl und sendet (NB/4, aufgerundet auf die nächste ganze Zahl) einfache Speicherbefehle zur Lade-/Speicher-Einheit 28 ab.
  • Die Sequenzereinheit 18 inkrementiert das Quellenregister der Speicherdaten mit eins für jeden nachfolgenden Speicherbefehl. Die Sequenzereinheit 18 stellt die Daten (RS anfänglich) von diesen Registern zur Lade-/Speicher-Einheit 28 zur Verfügung, wenn der Speicherbefehl der älteste Befehl im Datenprozessor 10 ist (siehe nachfolgende Beschreibung). Ansonsten ist der Betrieb der Sequenzereinheit 18 hier ähnlich zu dem Betrieb in einem Speicher-Mehrfachwort-Befehl.
  • Sequenzereinheit 18 macht ein Steuersignal zum Eins-zu-Vier-Generator 45 geltend, der indiziert, daß ein bestimmter abgesendeter Befehl ein Speicher-unmittelbares-Zeichenfolgenwort-Befehl ist. Jeder Speicher- unmittelbares-Zeichenfolgenwort-Befehl ist entweder ausgerichtet oder nicht ausgerichtet. Die zwei letzten signifikanten Bits des ersten Bytes in einem ausgerichteten Speicher-unmittelbares-Zeichenfolgenwort-Befehl ist null. Die zwei am wenigsten signifikanten Bits des ersten Bytes in einem nicht ausgerichteten Speicher-unmittelbares-Zeichenfolgenwort-Befehl sind nicht beide null. Die Lade-/Speicher-Einheit 28 funktioniert unterschiedlich für ausgerichtete und nicht ausgerichtete Speicher-unmittelbares- Zeichenfolgenwort-Befehle.
  • In einem ausgerichteten Speicher-unmittelbares-Zeichenfolgenwort-Befehl vollzieht die Lade-/Speicher-Einheit 28 (NB/4, aufgerundet auf die nächste ganze Zahl) Zugriffe auf den Datencache 16. Dieser Betrieb ist ähnlich zu dem Speicher-Mehrfachwort-Befehl, der oben dargestellt wurde.
  • In einem nicht ausgerichteten Speicher-unmittelbares-Zeichenfolgenwort- Befehl vollzieht die Lade-/Speicher-Einheit 28 (2*NB/4+1, aufgerundet auf die nächste ganze Zahl) Zugriffe auf den Datencache 16. Die Lade- /Speicher-Einheit 28 generiert ein Paar von Zugriffen auf den Datencache 16 für sämtliche bis auf den letzten Speicherbefehl, der zu diesem abgesandt wurde, und einen einfachen Zugriff für den letzten Speicherbefehl. Anfänglich veranlaßt der Eins-zu-Vier-Generator 45 die Multiplexer 41 und 43, die Eingänge, die mit dem Ergebnisbus verbunden sind, auszugeben. Die Lade-/Speicher-Einheit 28 schreibt nur die Bytes, die durch den Befehl programmiert wurden, zum Datencache 16. Die Steuerlogikeinheit 52 wiederholt den gleichen Speicherbefehl, um einen wortausgerichteten Zugriff zu vervollständigen. Der Eins-zu-Vier-Generator 45 inkrementiert die Adresse des zweiten Befehls zu dem nächsten ausgerichteten Wort. In diesem Fall schreibt die Lade-/Speicher-Einheit 28 die Zahl der Bytes, die notwendig sind, um Vier zu vervollständigen, wenn diese kombiniert mit dem vorangehenden Zugriff auf den Datencache 16 ist. Eins-zu-Vier-Generator und die Steuerlogik 52 setzen dieses Verfahren des Aufsplittens von jedem Zugriff auf nicht ausgerichtete Wörter in zwei Hälften fort, und zwar bis zum letzten Befehl. Dann ist es für die Steuerlogikeinheit 52 notwendig, nur noch einen einfachen Zugriff auf den Datencache 16 zu vollziehen.
  • Lade- mit Index versehenes Zeichenfolgenwort "Iswx RT.RA.RB"
  • Der Lade- mit Index versehene Zeichenfolgenwort-Befehl lädt den Inhalt von M aufeinanderfolgenden Speicherbytes in (M/4, aufgerundet auf die nächste ganze Zahl) aufeinanderfolgenden Register der GPR-Datei 32. M ist ein Feld in einem Spezialzweckregister (das nicht dargestellt ist). Der Lade- mit Index versehene Zeichenfolgenwort-Befehl beginnt bei der Speicherbyteadresse, die durch die Summe des Inhalts des Registers RA und des Registers RB spezifiziert ist, und bei dem Register, das durch RT spezifiziert ist. Ansonsten ist der Lade- mit Index versehene Zeichenfolgenwort-Befehl ähnlich zu dem Lade-unmittelbares- Zeichenfolgenwort-Befehl.
  • Speicher- mit Index versehenes Zeichenfolgenwort "stswx RS.RA.RB"
  • Der Speicher- mit Index versehene Zeichenfolgenwort-Befehl speichert den Inhalt von (M/4, aufgerundet auf die nächste ganze Zahl) aufeinanderfolgenden Registern der GPR-Datei 32 in den Inhalt von M aufeinanderfolgenden Speicherbytes. M ist ein Feld in einem Spezialzweckregister. Der Speicher- mit Index versehene Zeichenfolgenwort-Befehl beginnt bei der Speicheradresse, die durch die Summe des Inhalts des Registers RA und des Registers RB spezifiziert ist, und bei dem Register, das durch RS spezifiziert ist. Ansonsten ist der Speicher- mit Index versehenes Zeichenfolgenwort-Befehl ähnlich zu dem Speicher- unmittelbares-Zeichenfolgenwort-Befehl.
  • PUFFERN VON EINFACHEM LADE-/SPEICHERBEFEHL
  • Die Sequenzereinheit 18 stellt der Lade-/Speicher-Einheit 28 einen Lade- oder einen Speicherbefehl während der Abfertigungsstufe des Befehls zur Verfügung. Die Reservierungsstation 40 schaltet den Befehl und einen aus (a) entweder Operanden A oder eine Markierung, die das Ziel im Unbenennungspuffer 34 oder im Umbenennungspuffer 38 des Operanden A identifiziert, wenn eine andere Ausführungseinheit es vervollständigt und (b) Operand B oder eine Markierung, die das Ziel im Umbenennungspuffer 34 oder im Umbenennungspuffer 38 des Operanden B identifiziert, wenn eine andere Ausführungseinheit es vervollständigt. Die Reservierungsstation 40 wartet, bis beide Operanden zur Verfügung stehen.
  • Die Ausführungsphase des Lade-/Speicherbefehls beginnt, wenn beide Operanden zur Vertilgung stehen. Der Addierer 42 berechnet die effektive Adresse der Quelle/des Ziels. Die Latches 44 und 46 schalten den Befehl und die Adresse des Befehls auf, welches der Reservierungsstation 40 ermöglicht, einen anderen Befehl zu akzeptieren.
  • Die Sequenzereinheit 18 macht ein Steuersignal zur Steuerlogikeinheit 52 geltend, wenn sie alle dem Lade- oder dem Speicherbefehl vorangehenden Befehle beendet hat. Diese Aktion kann eine sofortige Vervollständigung des Befehls hervorrufen oder nicht, je nachdem, wie der Inhalt des Datencache 16, der Speicherwarteschlange 28 und der Ladewarteschlange 50 ist. Ein Befehl ist vervollständigt, wenn dieser keine Ausnahme mehr generieren kann. Diese Planungs- bzw. Tabellenstrategie verhindert die Möglichkeit, einen Lade- oder Speicherbefehl rückgängig zu machen, wenn ein vorheriger Befehl eine Ausnahme hervorgerufen hat. Die Sequenzereinheit 18 stellt auch die durch den Befehl zu speichernden Daten der Speicherwarteschlange 48 zu dieser Zeit zur Verfügung, wenn der Befehl ein Speicherbefehl ist.
  • Andere Teile des Datenprozessors 10 führen Funktionen aus, die zum Lade-/Speicherbefehl in Bezug stehen. Der Datencache 16 übersetzt die effektive Adresse, die durch den Addierer 42 generiert wurde, in eine reale Adresse und bestimmt, ob diese die Daten enthält, die mit dem Lade- oder Speicherbefehl in Verbindung stehen. Sofern der Datencache 16 die effekte Adresse übersetzen kann, dann retourniert es die reale Adresse zur Lade-/Speicher-Einheit 28. Sofern der Datencache 16 nicht die effektive Adresse übersetzen kann, dann greift er auf spezialisierte Adressenübersetzungstabellen im Speichersystem (das nicht dargestellt ist) zu. Später wird der Datencache 16 ein Unterbrechungssignal (Interrupt- Signal) erzeugen, wenn dieser Zugriff beendet ist und er die Übersetzung zur Verfügung stellen kann. Die Steuerlogikeinheit 52 wird dann die übersetzte Adresse in dem Eintrag speichern, der mit dem nicht übersetzen Lade- oder Speicherbefehl assoziiert ist. Gleichzeitig bestimmt der Datencache 16, ob es die Daten enthält, die durch die reale Adresse indiziert sind. Sofern der Datencache 16 die Daten enthält, die durch einen Ladebefehl angefordert wurden, dann retourniert der Datencache 16 die Daten zu der Lade-/Speicher-Einheit 28 während des folgenden Taktzyklus. Der Datencache 16 modifiziert nicht dessen Speicher, solange die Sequenzereinheit 18 indiziert, daß der Speicherbefehl der älteste Befehl im Datenprozessor 10 ist. Sofern der Datencache 16 nicht die Daten enthält, die durch die reale Adresse indiziert sind, dann wird er sie von dem Speichersystem über BIU 12 anfordern, und zwar nachdem die Steuerlogikeinheit 52 indiziert, daß der Befehl, der die Daten anfordert, der älteste Befehl im Datenprozessor 10 ist.
  • Die Steuerlogikeinheit 52 sendet Auswahlbefehle von der Speicherwarteschlange 48 und der Ladewarteschlange 50 zum Datencache 16 über den Multiplexer 54. Beide Warteschlangen sind Firstin-first-out ("FIFO") Warteschlangen. Die Steuerlogikeinheit 52 behält verschiedene Pointer, um zu identifizieren, welcher Eintrag in jeder Warteschlange den nächsten Befehl erhalten sollte und welcher Eintrag dem Datencache 16 präsentiert werden kann. Wie oben dargestellt, präsentiert die Steuerlogikeinheit 52 eine Ladebefehlsadresse dem Datencache 16, sofern sowohl der Lade- als auch der Speicherbefehl zur gleichen Zeit geeignet sind. Die Steuerlogikeinheit 52 kann einen Speicherbefehl zum Datencache 16 "präsentieren" (oder das Speichersystem mit den Befehlsdaten aktualisieren), sobald die folgenden Taktzyklen, in denen die Speicherwarteschlange 48 den Befehl unter gewissen Umständen aufschaltet: (1) Sofern die verschiedenen Pointer indizieren, daß der Befehl der nächste Befehl ist, der so zu präsentieren ist, (2) sofern der Datencache 16 die Adresse des Befehls in dem vorherigen Taktzyklus übersetzen konnte und (3) sofern der Datencache 16 bestimmt, daß er die mit Index versehenen Daten beinhaltet. Ansonsten verzögert die Steuerlogikeinheit 52 die Präsentation des Speicherbefehls zum Datencache 16 für wenigstens einen zusätzlichen Taktzyklus. In beiden Fällen puffert die Steuerlogikeinheit 52 den Befehl in dem nächstmöglichen Eintrag in der Speicherwarteschlange 48. Die Steuerlogikeinheit 52 präsentiert einen Ladebefehl zum Datencache 16, sobald der Addierer 42 die effektive Adresse des Befehls berechnet. Sofern der Datencache 16 die Adresse des Befehls übersetzen kann und sofern der Datencache 16 die mit Index versehenen Daten aufweist, dann wird der Ladebefehl als vollständig ausgeführt angesehen. Ansonsten puffert die Steuerlogikeinheit 52 den Ladebefehl im nächsten zur Verfügung stehenden Eintrag in der Ladewarteschlange 50.
  • Unter weiterer Bezugnahme auf Fig. 3 puffert die Steuerlogikeinheit 52 Speicherbefehle in der Speicherwarteschlange 48. Die Speicherwarteschlange 48 ist eine statische Speicherstruktur mit wahlfreiem Zugriff ("SRAM") mit sechs Einträgen. Jeder der sechs Einträge beinhaltet 183 Bits: 70 Bits, die einen Teil des Speicherbefehloperationscodes speichert und Datenattribute, 67 Bits, die die reale Adresse des Speicherbefehls speichern, und ein Zulässigkeits-Bit, das ein zulässiges reales Adressenfeld indiziert. Die Steuerlogikeinheit 52 bewahrt vier Pointer für die Speicherwarteschlange 48: Einen Pointer ÄLTESTER FEHLER, einen Pointer NÄCHSTER ZUGRIFF, einen Pointer VERVOLLSTÄNDIGUNG und einen Pointer ABFERTIGUNG. Wie aus der folgenden Beschreibung klarer werden wird, ist der Pointer ÄLTESTER FEHLER immer hinter oder gleichauf dem Pointer NÄCHSTER ZUGRIFF, der Pointer NÄCHSTER ZUGRIFF ist immer oder gleichauf dem Pointer VERVOLLSTÄNDIGUNG, und der Pointer VERVOLLSTÄNDIGUNG ist immer hinter oder gleichauf dem Pointer ABFERTIGUNG. Anfänglich indizieren alle vier Pointer den gleichen Eintrag in der Speicherwarteschlange 48.
  • Die Steuerlogikeinheit 52 puffen jeden neuen Speicherbefehl in dem Eintrag, der durch den Pointer ABFERTIGUNG mit Index versehen ist. Die Steuerlogikeinheit 52 speichert die übersetzten Adressen des Befehls in dem gleichen realen Adressenfeld des Eintrags, wenn der Datencache 16 diese zur Verfügung stellt. Die Steuerlogikeinheit 52 inkrementiert den Pointer ABFERTIGUNG mit eins oder schaltet diesen entsprechend fort, wenn dieser die reale Adresse empfängt.
  • Wie oben dargestellt, macht die Sequenzereinheit 18 ein Steuersignal geltend und stellt die Speicherdaten zur Verfügung, was indiziert, daß die Lade-/Speicher-Einheit 28 einen Speicherbefehl vervollständigen kann. Die Steuerlogikeinheit 52 puffen die Speicherdaten in dem Datenfeld des Eintrags, der durch den Pointer VERVOLLSTÄNDIGUNG spezifiziert ist. Die Steuerlogikeinheit 52 inkrementiert auch den Pointer VERVOLLSTÄNDIGUNG mit eins, wenn sie die gespeicherten Daten empfängt.
  • Die Steuerlogikeinheit 52 stellt dem Datencache 16 die reale Adresse und die Speicherdaten des Befehls, der durch den Pointer NÄCHSTER ZUGRIFF indiziert ist, zur Verfügung, wenn sie keine Ladebefehle mit höherer Priorität hat. Die Steuerlogikeinheit 52 inkrementiert den Pointer NÄCHSTER ZUGRIFF mit eins. Sofern der Zugriff erfolgreich ist, modifiziert der Datencache den Inhalt der geeigneten Speicherstelle und Steuerlogikeinheit 52 macht das Zulässigkeits-Bit des Eintrags ungültig.
  • Sofern der Zugriff nicht erfolgreich ist, muß die Lade-/Speicher-Einheit 28 auf den Datencache und das BIU 12 warten, um die Daten von dem externen Speichersystem zu erhalten. Das Datencache 16 macht ein Steuersignal geltend, wenn es gültige Daten von dem externen Speichersystem empfängt. Die Steuerlogikeinheit 52 präsentiert dann erneut die Adresse, die durch den Pointer ÄLTESTER FEHLER indiziert ist, dem Datencache 16. Es sollte verstanden werden, daß die Steuerlogikeinheit 52 fortfährt, den Speicherbefehl, der durch den Pointer NÄCHSTER ZUGRIFF indiziert ist, dem Datencache 16 nach einem Fehler zu präsentieren. Diese aufeinanderfolgenden Präsentationen können im Datencache 16 "treffen" oder nicht.
  • Schließlich inkrementiert die Steuerlogikeinheit 52 den Pointer LETZTER FEHLER zu dem nächsten gültigen Eintrag oder zu dem Pointer ABFERTIGUNG, sofern keine anderen gültigen Einträge vorliegen, wenn der Eintrag, der derzeit durch den derzeitigen Eintrag indiziert ist, ungültig wird.
  • Die Steuereinheit 52 puffen Ladebefehle in die Ladewaneschleife 50. Die Ladewaneschleife 50 ist eine SRAM-Struktur mit vier Einträgen. Jeder der vier Einträge beinhaltet 65 Bits: 32 Bits zum Speichern eines Teils des Operationscodes des Ladebefehls und von Datenattributen, 32 Bits zum Speichern von der realen Adresse des Ladebefehls und ein Zulässigkeits- Bit, das ein gültiges reales Adressenfeld indiziert. Die Steuerlogikeinheit 52 hält für die Ladewaneschleife 50 zwei Pointer aufrecht: Einen Pointer KOPF und einen SCHWANZ. Wie aus der folgenden Beschreibung klar wird, ist der Pointer KOPF immer hinter oder gleichauf zu dem Pointer SCHWANZ. Anfänglich indizieren beide Pointer den gleichen Eintrag in der Ladewarteschleife 50.
  • Die Lade-/Speicher-Einheit 28 sendet jeden Ladebefehl direkt zum Datencache 16, nachdem der Addierer 42 die effektive Adresse des Ladebefehls erzeugt hat. Diese Ablaufsteuerung reflektiert die Priorität von Ladebefehlen relativ zu Speicherbefehlen. Sofern es dem Datencache 16 möglich ist, die effektive Adresse in eine reale Adresse zu übersetzen, und sofern der Datencache 16 die angeforderten Daten beinhaltet, dann sendet der Datencache 16 die Daten zu dem Umbenennungspuffer 34 oder 38. Sofern es dem Datencache 16 nicht möglich, die Adresse zu übersetzen, dann wartet der Ladebefehl in den Latches 44 und 46, bis der Datencache 16 die Adresse derart übersetzen kann. Sofern der Datencache 16 die Daten nicht enthält, speichert die Steuerlogikeinheit 52 den Ladebefehl in dem Eintrag, der durch den Pointer SCHWANZ mit Index versehen ist. In dem dargestellten Ausführungsbeispiel fordert der Datencache 16 nicht den Ladebefehl von dem externen Speichersystem an, bis die Sequenzereinheit 18 indiziert, daß alle dem Ladebefehl vorangehenden Befehle deren Ergebnisse zu den verschiedenen architektonischen Registern des Datenprozessors 10 zurückgeschrieben haben. Diese Strategie verhindert spekulative Datenladeoperationen zu externen Speichersystemen. Die Steuerlogikeinheit 52 inkrementiert den Pointer SCHWANZ mit eins, wenn diese die reale Adresse empfängt. Die Steuerlogikeinheit 52 setzt auch das Zulässigkeits-Bit des Eintrags, was ein gültiges reales Adressenfeld indiziert.
  • Wie oben beschrieben, macht die Sequenzereinheit 18 ein Steuersignal geltend, das indiziert, daß die Lade-/Speichereinheit 28 einen Ladebefehl vervollständigen kann. Die Steuerlogikeinheit 52 sendet die reale Adresse des Ladebefehls, die durch den Pointer KOPF indiziert ist, zum Datencache 16. Sofern es dem Datencache 16 möglich ist, die angeforderten Daten zur Verfügung zu stellen, dann sendet der Datencache 16 die Daten zu den Ergebnisbussen über die Lade-/Speicher- Einheit 28, die Steuerlogikeinheit 52 inkrementiert den Pointer KOPF mit eins, und die Steuerlogikeinheit 52 löscht das Zulässigkeits-Bit des Befehls. Sofern es dem Datencache 16 nicht möglich ist, die angeforderten Daten zur Verfügung zu stellen, dann muß die Lade-/Speicher-Einheit 28 darauf warten, daß der Datencache 16 und BIU 12 die Daten von dem externen Speichersystem wieder aufgefunden haben. Der Datencache 16 sendet die empfangenen Daten direkt zu dem geeigneten Ergebnisbus über die Lade-/Speicher-Einheit 28 und macht ein Steuersignal zur Steuerlogikeinheit 52 geltend. Die Steuerlogikeinheit 52 inkrementiert dann den Pointer KOPF.
  • Fig. 4 stellt ein Zustandsübergangsdiagramm dar, das die möglichen Zustände, in denen jeder Eintrag der Speicherwarteschlange 48, die in Fig. 3 dargestellt ist, sein kann, illustriert. Jeder der sechs Einträge in der Speicherwarteschlange 48 kann in einem und nur einem der fünf dargestellten Zustände sein: UNGÜLTIG, BEENDET, VERVOLLSTÄNDIGT, VERSUCHT oder TREFFER-UNTER-FEHLER. Die bestimmten Werte der vier Speicherpointer, ÄLTESTER FEHLER, NÄCHSTER ZUGRIFF, VERVOLLSTÄNDIGUNG und ABFERTIGUNG, das Zulässigkeits-Bit jedes Eintrags und der Betrieb des Datenprozessors 10 bestimmen, in welchem Zustand der Eintrag ist.
  • Jeder der sechs Einträge in der Speicherwarteschlange 48 ist anfänglich in einem UNGÜLTIG-Zustand. Jeder Eintrag zwischen dem Pointer ÄLTESTER FEHLER bis zu und beinhaltend den Pointer ABFERTIGUNG ist in dem Zustand UNGÜLTIG. Eventuell fertigt die Sequenzereinheit 18 genug Speicherbefehle zur Lade-/Speicher-Einheit 28 ab, um den Pointer ABFERTIGUNG zu veranlassen, den bestimmten Eintrag mit einem Index zu versehen. Die Steuerlogikeinheit 52 puffert dann den nächsten Speicherbefehl, der zur Lade-/Speicher-Einheit 18 in dem Eintrag abgefertigt wurde. Der Datencache 16 übersetzt die effektive Adresse des bestimmten Eintrags in eine reale Adresse und sendet diese Adresse zur Lade- /Speicher-Einheit 28. Die Steuerlogikeinheit 52 setzt das Zulässigkeits-Bit des bestimmten Eintrags bei Empfang der übersetzten Adresse. Dieser Zustand des bestimmten Eintrags geht dann von dem UNGÜLTIG-Zustand in den BEENDET-Zustand. Der bestimmte Eintrag verbleibt in diesem Zustand, bis die Sequenzereinheit 18 indiziert, daß der Speicherbefehl, der in dem Eintrag gespeichert ist, der älteste Befehl im Datenprozessor 10 ist. Jeder Eintrag zwischen dem Pointer ABFERTIGUNG bis zu und beinhaltend den Pointer VERVOLLSTÄNDIGUNG ist in dem Zustand BEENDET.
  • Eventuell signalisiert die Sequenzereinheit 18 der Steuerlogikeinheit 52, daß der Speicherbefehl, der in dem Eintrag, der durch den Pointer VERVOLLSTÄNDIGUNG indiziert ist, der älteste Befehl im Datenprozessor 10 ist. An diesem Punkt hat jeder dem Speicherbefehl in dem Programmablauf vorangehende Befehl das geeignete architektonische Register aktualisiert oder, sofern keine Aktualisierung notwendig ist, einen Punkt in dem Betrieb erreicht, nach dem dieser keine Ausnahme erzeugen kann. Es ist nun sicher, Daten zu dem externen Speichersystem zu schreiben ohne die Angst, den Speicherbefehl rückgängig machen zu müssen. Der Zustand dieses bestimmten Eintrags geht von dem Zustand BEENDET zu dem Zustand VERVOLLSTÄNDIGT über. Jeder Eintrag zwischen dem Pointer VERVOLLSTÄNDIGUNG bis zu und beinhaltend den Pointer NÄCHSTER ZUGRIFF ist in dem Zustand VERVOLLSTÄNDIGT.
  • Die Steuerlogikeinheit 52 präsentiert ein Speicheradreß-Datenpaar dem Datencache 16, wenn der Pointer NÄCHSTER ZUGRIFF den Eintrag indiziert, der das Speicheradreß-Datenpaar aufweist, und wenn keine Operationen mit höherer Priorität vorliegen. An diesem Punkt geht der bestimmte Eintrag in den Zustand VERSUCHT. Der Zustand des Eintrags kann zu dem Zustand VERVOLLSTÄNDIGT zurückgehen, wenn der Datencache 16 das Steuersignal ERNEUTER VERSUCH anfordert. Der Datencache 16 fordert das Steuersignal ERNEUTER VERSUCH an, wenn es diesem nicht möglich ist, Speicherbefehle zu bedienen, beispielsweise wenn der Datencache 16 Daten von BIU 12 empfängt, der Datencache 16 spezielle Adressenübersetzungstabellen anfordert usw.. Jeder Eintrag, dessen Zulässigkeits-Bit gesetzt ist, zwischen Pointer NÄCHSTER ZUGRIFF bis zu und beinhaltend den Pointer ÄLTESTER FEHLER ist in dem Zustand VERSUCHT.
  • Es existieren zwei mögliche Ergebnisse, nachdem die Steuerlogikeinheit 52 ein Speicheradreßdatenpaar dem Datencache 16 präsentiert hat. Datencache 16 enthält entweder die Daten, was einen "Treffer" bedeutet, oder enthält die Daten nicht, was einen "Fehler" bedeutet.
  • In dem Datencachetrefferfall geht der Eintrag entweder in den Zustand TREFFER-UNTER-FEHLER oder den Zustand UNGÜLTIG. Der Eintrag geht in den Zustand TREFFER-UNTER-FEHLER über, wenn der Pointer ÄLTESTER FEHLER diesen nicht als den ältesten gültigen Speicherbefehl identifiziert. Andersherum geht der Eintrag in den Zustand UNGÜLTIG über, wenn der ÄLTESTE FEHLER diesen als den ältesten gültigen Speicherbefehl identifiziert. In beiden löscht die Steuerlogikeinheit 52 das Zulässigkeits-Bit des Eintrags. Jeder Eintrag zwischen dem Pointer VERVOLLSTÄNDIGUNG bis zu dem Pointer ÄLTESTER FEHLER, dessen Zulässigkeits-Bit gelöscht wurde, ist in dem Zustand TREFFER-UNTER- FEHLER.
  • In dem Datencachefehlerfall verbleibt der bestimmte Eintrag, der das präsentierte Speicheradreßdatenpaar beinhaltet, in dem Zustand VERSUCHT.
  • Ein bestimmter Eintrag verbleibt in dem Zustand TREFFER-UNTER- FEHLER, solange der Pointer ÄLTESTER FEHLER diesen nicht als den ältesten gültigen Speicherbefehl identifiziert. Der Eintrag geht zu dem Zustand UNGÜLTIG über, wenn der Pointer ÄLTESTER FEHLER diesen als den ältesten gültigen Speicherbefehl identifiziert.
  • Obwohl die vorliegende Erfindung mit Bezugnahme auf spezielle Ausführungsbeispiele beschrieben wurde, werden weitere Modifikationen und Verbesserungen dem Fachmann klar sein. Beispielsweise kann die offenbarte Erfindung in Datenprozessoren inkorporiert werden, die traditionell als komplexe Befehlssatzcomputer oder CISC-Maschinen klassifiziert sind. Außerdem können bestimmte funktionelle Einheiten in bestimmten Ausführungsbeispielen vernachlässigt werden oder in anderen Bereichen von Datenprozessoren 10 relokalisiert werden. Es sollte insofern verstanden werden, daß die Erfindung alle derartigen Modifikationen, die nicht den Bereich der Erfindung verlassen, wie in den folgenden Ansprüchen definiert ist, erreichen, beinhaltet.

Claims (10)

1. Datenprozessor (10) mit einer Ausführungseinheit zur Durchführung von Ladebefehlen, wobei der Datenprozessor die folgenden Merkmale umfaßt:
eine Vielzahl von architektonischen Registern (32);
einen Umbenennungspuffer (34), der mit der Vielzahl von architektonischen Registern verbunden ist, wobei der Umbenennungspuffer eine Vielzahl von Einträgen aufweist, wobei jeder der Vielzahl von Einträgen ein unterschiedliches Ergebnis aus einer Vielzahl von Ergebnissen zu oder von einem unterschiedlichen Befehl aus einer Vielzahl von Befehlen puffert;
eine Ladeinheit (28), die mit dem Umbenennungspuffer verbunden ist, wobei für jedes Ladebefehlsmarkierungspaar, das zu dieser gesendet wird, die Ladeeinheit Daten von einem Speichersystem, die durch eine Adresse indiziert sind, anfordert und die Daten in eine der Vielzahl von Einträgen des Umbenennungspuffers, die durch eine Markierung indiziert sind, puffert, wobei das Ladebefehlsmarkierungspaar die Markierung, die eine der Vielzahl von Einträgen des Umbenennungspuffers identifiziert, umfaßt; und
eine Sequenzereinheit (18), die mit der Ladeeinheit verbunden ist, wobei die Sequenzereinheit einen Lade-Mehrfach-Befehl empfängt, wobei der Lade-Mehrfach-Befehl N*W Bytes anfordert, wobei N und W ganze Zahlen sind und N größer als 1 ist und wobei jedes der Vielzahl von architektonischen Registern eine Größe von W Bytes hat, wobei die Sequenzereinheit N Ladebefehlsmarkierungspaare zur Ladeeinheit sendet.
2. Datenprozessor (10) nach Anspruch 1, dadurch gekennzeichnet, daß die Sequenzereinheit (18) eine Adresse zur Ladeeinheit sendet, und wobei die Ladeeinheit außerdem eine Adressen-Berechnungs-Einrichtung (41, 42, 43, 45) aufweist, die (N-1) Adressen von (N-1) der N Ladebefehlsmarkierungspaare erzeugt.
3. Datenprozessor (10) nach Anspruch 2, dadurch gekennzeichnet, daß die Adressen-Berechnungs-Einrichtung die folgenden Merkmale umfaßt:
einen Addierer (42) zum Summieren eines Ausgangs eines ersten Multiplexers und eines Ausgangs eines zweiten Multiplexers;
einen ersten Multiplexer (43) zum abwechselnden Ausgeben entweder eines ersten Feldes von jedem der N Ladebefehlsmarkierungspaare oder der Zahl W;
einen zweiten Multiplexer (41) zum abwechselnden Ausgeben entweder eines zweiten Feldes von jedem der N Ladebefehlsmarkierungspaare oder eines Ausgangs des Addierers; und
eine Steuerschaltungsanordnung (45) zum Auswählen der Eingänge des ersten und zweiten Multiplexers.
4. Datenprozessor (10) nach Anspruch 3, wobei die Sequenzereinheit (18) außerdem einen Umordnungspuffer (39) umfaßt, der eine Sequenz der gesendeten Befehle speichert und wobei die Sequenzereinheit eine der Vielzahl von Einträgen des Umbenennungpuffers zu einem der Vielzahl von architektonischen Registern als Antwort auf die Sequenz kopiert.
5. Datenprozessor (10) nach Anspruch 4, dadurch gekennzeichnet, daß für jeden Speicherbefehl, der zur Ladeeinheit (28) gesendet wird, die Ladeeinheit Daten speichert, die durch die Adresse zu dem Speichersystem indiziert sind, und wobei die Sequenzereinheit (18) einen Speicher-Mehrfach-Befehl empfängt, wobei der Speicher-Mehrfach-Befehl M*W Bytes speichert, wobei M eine ganze Zahl größer als 1 ist und wobei die Sequenzereinheit M Speicherbefehle zur Ladeeinheit sendet.
6. Verfahren zum Betrieb eines Datenprozessors (10) mit einer Ausführungseinheit zum Ausführen von Ladebefehlen, wobei das Verfahren die folgenden Verfahrensschritte umfaßt:
während einer ersten Zeit
Empfangen eines Lade-Mehrfach-Befehls in einer Sequenzereinheit (18), wobei der Lade-Mehrfach-Befehl N*W Bytes Daten anfordert, wobei N und W ganze Zahlen sind und wobei N größer als 1 ist und wobei jedes Register aus einer Vielzahl von architektonischen Registern eine Größe von W Bytes aufweist;
während N nachfolgenden Zeiten,
als erstes Absenden von N Ladebefehlsmarkierungspaaren zu einer Ladeeinheit (28), wobei jedes der N Ladebefehlsmarkierungspaaren eine Markierung umfaßt, die einen Eintrag aus einer Vielzahl von Einträgen eines Umbenennungspuffers (34) identifiziert, wobei für jedes Ladebefehlsmarkierungspaar, das zu dieser gesendet wird, die Ladeeinheit W Bytes Daten, die mit einer Adresse von einem Speichersystem indiziert sind, anfordert und die W Bytes Daten in einem Eintrag der Vielzahl von Einträgen des Umbenennungspuffers, der durch die Markierung des Ladebefehlsmarkierungspaars indiziert ist, puffert; und
Speichern eines unterschiedlichen Eintrags der Vielzahl von Einträgen des Umbenennungspuffers (32) zu einem unterschiedlichen Register der Vielzahl von architektonischen Registern.
7. Verfahren nach Anspruch 6, wobei dieses außerdem die folgenden Verfahrensschritte umfaßt:
während einer zweiten Zeit,
Empfangen eines Speicher-Mehrfach-Befehls in der Sequenzereinheit (18), wobei der Speicher-Mehrfach-Befehl M*W Bytes Daten speichert, wobei M eine ganze Zahl größer als 1 ist; und
während M nachfolgenden Zeiten,
zweites Absenden von M Speicherbefehlen zur Ladeeinheit (28), wobei die Ladeeinheit für jeden Speicherbefehl, der zu dieser gesendet wurde, W Bytes Daten, die durch eine Adresse zu dem Speichersystem indiziert sind, speichert.
8. Verfahren nach Anspruch 7, wobei dieses außerdem die folgenden Schritte umfaßt:
während der zweiten bis zum M-ten Mal der M nachfolgenden Zeiten, Berechnen der Adresse in der Ladeeinheit (28).
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß der Schritt des Speicherns außerdem den Schritt des Speichers eines unterschiedlichen Eintrages der Vielzahl von Einträgen des Umbenennungspuffers (34) zu einem unterschiedlichen Register der Vielzahl von architektonischen Registern (32) als Antwort auf eine Sequenz von Befehlen, die in einem Umordnungspuffer gespeichert sind, umfaßt.
10. Verfahren nach Anspruch 9, wobei der Schritt des ersten Absendens den Schritt des Absendens von N Ladebefehlsmarkierungspaaren zur Ladeeinheit (28) umfaßt, wobei die Ladeeinheit Daten, die durch die Adresse von einem Speichersystem indiziert sind, das auf dem gleichen Halbleitersubstrat wie der Datenprozessor hergestellt ist, anfordert.
DE69506623T 1994-06-03 1995-05-29 Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb Expired - Fee Related DE69506623T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US25527194A 1994-06-03 1994-06-03

Publications (2)

Publication Number Publication Date
DE69506623D1 DE69506623D1 (de) 1999-01-28
DE69506623T2 true DE69506623T2 (de) 1999-07-22

Family

ID=22967591

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69506623T Expired - Fee Related DE69506623T2 (de) 1994-06-03 1995-05-29 Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb

Country Status (6)

Country Link
US (1) US5664215A (de)
EP (1) EP0686912B1 (de)
JP (1) JPH09120360A (de)
KR (1) KR960001989A (de)
CN (1) CN1144934A (de)
DE (1) DE69506623T2 (de)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5822602A (en) * 1996-07-23 1998-10-13 S3 Incorporated Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
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
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6192461B1 (en) * 1998-01-30 2001-02-20 International Business Machines Corporation Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
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
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6301654B1 (en) * 1998-12-16 2001-10-09 International Business Machines Corporation System and method for permitting out-of-order execution of load and store instructions
US6349382B1 (en) * 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
EP1050797A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics S.A. Befehlausführung in einem Rechnersystem
US6629233B1 (en) * 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US6791564B1 (en) 2000-05-05 2004-09-14 Ipfirst, Llc Mechanism for clipping RGB value during integer transfer
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
US6868491B1 (en) 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
GB0023697D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Register assignment in a processor
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
US6988109B2 (en) * 2000-12-06 2006-01-17 Io Informatics, Inc. System, method, software architecture, and business model for an intelligent object based information technology platform
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー
US7266811B2 (en) * 2001-09-05 2007-09-04 Conexant Systems, Inc. Methods, systems, and computer program products for translating machine code associated with a first processor for execution on a second processor
US7315934B2 (en) * 2002-03-06 2008-01-01 Matsushita Electric Industrial Co., Ltd. Data processor and program for processing a data matrix
US20050015542A1 (en) * 2003-07-15 2005-01-20 Gateway, Inc. Multiple write storage device
US8144156B1 (en) * 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US8745627B2 (en) * 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
US7434032B1 (en) * 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
JP5019022B2 (ja) * 2006-03-20 2012-09-05 日本電気株式会社 データロード方法及びデータ処理装置
GB2442499B (en) * 2006-10-03 2011-02-16 Advanced Risc Mach Ltd Register renaming in a data processing system
CN100576169C (zh) * 2007-07-11 2009-12-30 凌阳科技股份有限公司 一种执行指令的方法及系统
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
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
EP2508982B1 (de) * 2011-04-07 2016-03-30 VIA Technologies, Inc. Steuerregister-Mapping in einem heterogenen-Befehlsatzarchitektur Prozessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
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
US20140310500A1 (en) * 2013-04-11 2014-10-16 Advanced Micro Devices, Inc. Page cross misalign buffer
JP6344022B2 (ja) * 2014-04-08 2018-06-20 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9733909B2 (en) * 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
CN105117202B (zh) * 2015-09-25 2018-11-27 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) * 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11113056B2 (en) * 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4287561A (en) * 1978-03-16 1981-09-01 International Business Machines Corporation Address formulation interlock mechanism
JPH02190930A (ja) * 1988-12-29 1990-07-26 Internatl Business Mach Corp <Ibm> ソフトウエア命令実行装置
EP0495162A3 (en) * 1991-01-16 1994-05-18 Ibm Storage management
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction

Also Published As

Publication number Publication date
EP0686912A2 (de) 1995-12-13
CN1144934A (zh) 1997-03-12
EP0686912B1 (de) 1998-12-16
US5664215A (en) 1997-09-02
KR960001989A (ko) 1996-01-26
JPH09120360A (ja) 1997-05-06
DE69506623D1 (de) 1999-01-28
EP0686912A3 (de) 1997-03-12

Similar Documents

Publication Publication Date Title
DE69506623T2 (de) Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE69904479T2 (de) Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69232113T2 (de) Hochleistungsarchitektur für risc-mikroprozessor
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE69230554T2 (de) Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69329778T2 (de) System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69327637T2 (de) Superskalar-Computersystem
DE69429061T2 (de) Superskalarmikroprozessoren
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69028138T2 (de) Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE69227465T2 (de) Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen.
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE69901910T2 (de) Verfahren und gerät zur rechnung von indirekten verzweigungszieladressen
DE69408769T2 (de) Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee