DE3851488T2 - Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. - Google Patents

Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.

Info

Publication number
DE3851488T2
DE3851488T2 DE3851488T DE3851488T DE3851488T2 DE 3851488 T2 DE3851488 T2 DE 3851488T2 DE 3851488 T DE3851488 T DE 3851488T DE 3851488 T DE3851488 T DE 3851488T DE 3851488 T2 DE3851488 T2 DE 3851488T2
Authority
DE
Germany
Prior art keywords
register
instruction
instructions
status
branch
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
DE3851488T
Other languages
English (en)
Other versions
DE3851488D1 (de
Inventor
John Stephen Liptay
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 DE3851488D1 publication Critical patent/DE3851488D1/de
Publication of DE3851488T2 publication Critical patent/DE3851488T2/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
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • 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
    • G06F9/384Register renaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Die Erfindung betrifft die Verwaltung von adressierbaren Registern im Zentralprozessor eines Rechners. Diese Erfindung betrifft insbesondere ein Steuer- und Überwachungssystem für ein Registerfeld zur Verarbeitung von Befehlen in Unordnung und zur Bereitstellung eines Wiederherstellungsverfahrens für Registerinhalte bei Verzweigungsbefehlen und Unterbrechungen. Ein derartiges System verlangt während der Abarbeitung einer Befehlsfolge sowohl die Erhaltung der alten Inhalte als auch der neuen Inhalte eines adressierbaren Registers. Adressierbare Register können Allgemeinregister und Gleitkommaregister enthalten, sind jedoch nicht darauf beschränkt. Es wird ein Ausführungsbeispiel der Erfindung gezeigt, das einen Computerprozessor betrifft, der der Architektur des IBM 370 Systems entspricht und eine Vielzahl von physischen Feldregistern besitzt, die die Funktion einer festen Anzahl adressierbarer Register besitzen.
  • Die Architektur eines typischen Computersystems erfordert die Einrichtung einer festen Anzahl adressierbarer Register, z. B. Allgemeinregister (GPRs, general purpose registers), die der Programmierer bei der Entwicklung von Programmen für das Gerät verwenden kann. Würde man die Zahl der in der Architektur verfügbaren GPRs ändern, nachdem das System bereitsteht, müßten wesentliche Programmteile umgeschrieben werden, damit die neue Zahl von GPRs eingesetzt werden kann.
  • Ebenso beruht der Aufbau von Computern und Computerprogrammen auf der Annahme, daß die Befehle des Computerprogramms vom Computer in der Reihenfolge ausgeführt werden, in der sie geschrieben und dem System zugeführt worden sind. Bei dem Bemühen, die Rechnerleistung zu verbessern, hat sich herausgestellt, daß Befehle zwar in logischer Reihenfolge dem System zugeführt werden müssen, damit sie der Reihe nach ausgeführt werden, es bei einigen Befehlen aber nicht erforderlich ist, daß sie auch physisch der Reihe nach ausgeführt werden, vorausgesetzt, daß gewisse Abhängigkeiten von anderen Befehlen nicht vorliegen. Falls zudem einige Befehle nicht in der Reihenfolge ausgeführt werden und diese Befehle Verzeigungsbefehle sind - wobei ein Verzweigungsbefehl dazu dient, die Reihenfolge der Befehle zu wählen -, muß möglicherweise das entsprechende Register wiederhergestellt werden, falls eine falsche Verzweigung gewählt wurde. In diesem Fall wird das System wieder in den Zustand an der Stelle versetzt, wo die Verzweigung erfolgte. Wenn Befehle nicht in der Reihenfolge ausgeführt werden, müssen bestehende bzw. alte Werte der vom Befehl betroffenen GPRs erhalten bleiben, und es muß dafür gesorgt sein, daß möglicherweise neue Werte für die betroffenen GPRs aufgenommen werden können. Nach Beendigung dazwischenliegender Befehle und der Abarbeitung von Verzweigungsbefehlen wird der Vorbehalt entfernt, d. h. der neue Wert wird zum bestehenden Wert der GPRs.
  • Bei den großen Prozessoren wurde viele Jahre lang Überlappungstechniken eingesetzt, bei denen sich gleichzeitig mehrere Befehle in verschiedenen Ausführungsstadien befinden. Mit der Verwendung dieser Technik ist stets die Notwendigkeit verbunden, eine Steuerlogik zu implementieren, die Abhängigkeiten zwischen Befehlen erkennt und in der Lage ist, den normalen überlappenden Betrieb so zu ändern, daß die gleichen Ergebnisse erhalten werden, wie sie durch das Architekturmodell "ein Befehl zu einem Zeitpunkt" beschrieben werden. Das Überlappen kann in vielen verschiedenen Formen geschehen, von denen jede eine individuellen Reihe von Steuerungsproblemen besitzt. Eine verbreitete Überlappungsform wird "Pipelining" (Fließbandverarbeitung) genannt. Stark vereinfacht ist bei einem im Pipelinesystem arbeitenden Gerät gesonderte Hardware für verschiedene Verarbeitungsstufen eines Befehls vorgesehen. Nachdem eine Stufe eines Befehls abgearbeitet ist, geht der Befehl zur nächsten Stufe über, und der folgende Befehl kann die soeben verlassene Stufe einnehmen. Bei einem derartigen Gerät werden die Befehle hinsichtlich all ihrer Verarbeitungsstufen in der Reihenfolge gehalten, wenn auch verschiedene Verarbeitungsstufen von verschiedenen Befehlen zur gleichen Zeit auftreten. Wenn die Steuereinheiten bei diesem Prozessor feststellen, daß ein anderer Befehl ein noch nicht erzeugtes Ergebnis benötigt, müssen sie einen Teil der Pipelineverarbeitung anhalten, bis das Ergebnis erzeugt und an die Stelle zurückgeleitet worden ist, wo es benötigt wird. Auch wenn diese Steuerlogik zeitweilig komplex sein kann, stellt die Tatsache, daß die Befehle in der Pipeline in der Reihenfolge gehalten werden, eine entscheidende Hilfe dar, um die Kontrolle über die Zusammenhänge zu behalten.
  • Eine komplexere Art der Überlappung tritt ein, wenn der Prozessor separate Ausführungseinheiten enthält. Diese Technik ist zwar weniger gebräuchlich, ist aber seit vielen Jahren bekannt und im Einsatz. Da unterschiedliche Befehle auch eine unterschiedlich lange Ausführungsdauer besitzen, und da die Abhängigkeiten zwischen den Befehlen veränderlich sind, ist es bei einem derartigen Prozessor nahezu unausweichlich, daß sich die Reihenfolge, in der die Befehle ausgeführt werden und ihre Ergebnisse erzeugen, von der Reihenfolge im Programm unterscheidet. Möchte man den logisch einwandfreien Betrieb eines solchen Prozessors aufrechterhalten, bedarf es eines komplexeren Steuerungsmechanismus als beim Pipelinesystem.
  • Nach dem Stand der Technik ist es bei mehreren Ausführungseinheiten jedoch nicht möglich, an beliebiger Stelle exakte Unterbrechungen vorzunehmen. Wenn beispielsweise ein Befehl einen Überlauf bewirkt, kann es zu dem Zeitpunkt, wo dies festgestellt wird, durchaus möglich sein, daß ein später im Programm stehender Befehl bereits ausgeführt ist und dessen Ergebnis bereits in einem Register oder im Hauptspeicher steht. Dadurch wird es unmöglich, eine Unterbrechung vorzunehmen und den Prozessorstatus so zu erhalten, daß alle früheren, jedoch keine nachfolgenden Befehle ausgeführt worden sind. Bei diesem Beispiel wird die Unterbrechung aufgrund des Überlaufs erst zu einem späteren Zeitpunkt nach seinem Auftreten festgestellt. Nach dem Stand der Technik sind andere ähnliche Situationen möglich.
  • Die Konstrukteure einiger älterer Geräte haben sich dazu entschieden, dieser Situation dadurch zu begegnen, daß es allen Befehlen, die sich in einem Ausführungszustand befinden, erlaubt wird, ihre Ausführung so gut wie möglich abzuschließen und dann eine "ungenaue" Unterbrechung vorzunehmen, die die Meldung ausgibt, daß vor kurzem bei einem Befehl ein Überlauf aufgetreten ist. Dies ist eine vernünftige Möglichkeit, mit Unterbrechungen durch Umstände wie Überlauf umzugehen, bei denen die Ergebnisse an den Programmierer zurückgegeben werden, der einen Programmfehler verbessert oder die Eingabedaten berichtigt und dann das Programm vom Anfang an neu startet. Dieses Vorgehen ist jedoch unbrauchbar bei Unterbrechungen wie Seitenfehlern, wo das Systemprogramm korrigierende Maßnahmen ergreift und dann die Ausführung an der Stelle der Unterbrechung wieder aufnimmt.
  • Der Anmelder besitzt Kenntnis von EP-A-0 061 586, wo zusätzliche Register vorgesehen sind, die jedem GPR zugeordnet werden sollen, wobei in diesen Registern mit Hilfe eines Zeigerwerts eine Umbenennung stattfindet. Diese Patentschrift löst jedoch nicht das Problem der genauen Wiederherstellung nach einer Unterbrechung oder nach einer fälschlicherweise vermuteten Verzweigung während der Ausführung außerhalb der Reihenfolge.
  • In dem Artikel "General Purpose Register Extension" im IBM Disclosure Bulletin vom August 1981 wird auf den Seiten 1404-1405 ein System vorgestellt, daß zwischen mehreren GPR-Gruppen umschaltet, um beim Wechseln der Unterprogramme nicht den Speicher benützen zu müssen. In einem weiteren Artikel im IBM Disclosure Bulletin vom Juni 1982 mit der Überschrift "Vector- Register Rename Mechanism" wird auf den Seiten 86-87 die Verwendung eines Pseudoregisters während der Befehlsausführung beschrieben. Nach Abschluß der Ausführung erhält das Register den Namen des Registers, das vom Befehl dazu bestimmt ist, Ergebnisse aufzunehmen. Während der Ausführung ist das Register transparent, was zusätzliche physische Register ermöglicht. Allerdings befaßt sich keiner dieser Artikel mit der Ausführung von Befehlen außerhalb der Reihenfolge.
  • In EP-A-0 106 670 wird ein Zentralprozessor in einem digitalen Datenverarbeitungssystem mit einer Vielzahl von Ausführungseinheiten beschrieben. Dieses System arbeitet im Pipelinebetrieb anstelle der aufwendigeren Verarbeitung außerhalb der Reihenfolge. Um im Fehlerfall mögliche Schwierigkeiten aufgrund der überlappenden Verarbeitung zu vermeiden, setzt das System einen Kollektor ein, der die Daten nach der Ausführung korrekt sammelt und einreiht.
  • Der Artikel "Use of A Second Set of General Purpose Registers to Allow Changing General-Purpose Registers During Conditional Branch Resolutions" im IBM Disclosure Bulletin vom August 1986 beschreibt auf den Seiten 991-993 einen Zweitsatz aus GPRs mit Eins-zu-eins-Entsprechung, der während der Entscheidung von bedingten Verzweigungen die ursprünglichen Registerinhalte aufnehmen und nötigenfalls den Systemstatus wiederherstellen soll. Bei den GPRs werden Flaggen zur Kennzeichnung des Bedingungsmodus verwendet, um den Status der Registers zu regeln bzw. um den ursprünglichen Inhalt der Register wiederherzustellen.
  • Die vorliegende Erfindung stellt ein Registerverwaltungssystem für die dem Prozessor eines Computers zugeordneten adressierbaren Register zur Verfügung. Das Registerverwaltungssystem sorgt für die Ausführung von Befehlen außerhalb der Reihenfolge und enthält Algorithmen, die nach einer falsch vorhergesagten Verzweigung oder einer Unterbrechung, bei der die Befehle nicht in der Reihenfolge vorliegen, wieder exakt den ursprünglichen Zustand herstellen.
  • Die vorliegende Erfindung setzt einen Zentralprozessor voraus, dessen Architektur eine feste Anzahl adressierbarer Register zur Nutzung für Programme vorsieht. Ein typisches System entspräche beispielsweise der Architektur des IBM System/370, und das vorgestellte Ausführungsbeispiel befaßt sich hauptsächlich mit den GPRs in dieser Architektur.
  • Die vorliegende Erfindung sieht ein Registerfeld (register array, RA) vor, das eine Vielzahl von Registern aufweist, die größer ist als die Zahl der durch die Architektur gegebenen Register. Die Zahl der tatsächlich zur Verfügung stehenden Register kann unterschiedlich sein, beispielsweise könnte sie doppelt so groß wie die Zahl der aufgrund der Architektur gegebenen Register sein.
  • Wenn ein Befehl in einem Computerprogramm die Verwendung eines adressierbaren Registers in der Architektur anfordert, wird ein Register im RA dazu bestimmt, die Funktion des adressierbaren Registers, z. B. eines GPRs im System/370, auszuüben. Der Befehl erhält auch eine Befehlskennungs- oder IID (Instruction Identifier)-Nummer. Dabei kann die kreisförmige Rotation von IIDs verwendet werden. Es ist eine Feldsteuerungsliste (array control list, ACL) vorgesehen, die für jedes Register im RA einen Eintrag enthält. Jede Position im ACL besitzt mehrere, die zugehörigen Register betreffende Statusfelder einschließlich eines Felds, das den Verfügbarkeitsstatus des Registers, die dem Register zugewiesene IID und den Namen des dem Register zugewiesenen GPRs anzeigt. Sobald ein Register im RA einmal als ein GPR gekennzeichnet ist, wird es aufgrund der Systemarchitektur vom Programm wie ein permanentes physisches Register mit der gleichen GPR-Nummer angesehen.
  • Das Registerverwaltungssystem enthält auch eine Decodierungsregisterzuordnungsliste (Decode Register Assignment List, DRAL) und ein oder mehrere Sicherungsregisterzuordnungslisten (Back Up Register Assignment List, BRAL), die mit dem RA verknüpft sind und einen Eintrag pro GPR besitzen. Jeder Eintrag in der DRAL enthält die Nummer der RA-Position, die dem zugehörigen GPR zugewiesen worden ist. Bei der Decodierung des jeweiligen Befehls werden die GPRs, die er anspricht, in der DRAL nachgeschlagen, um festzustellen, welche RA-Positionen den GPRs zugeordnet sind, die der Befehl betrifft. Da neue RA-Positionen zugeordnet werden, um Ergebnisse für GPRs aufzunehmen, werden die DRALs laufend mit den neuen Zuordnungen aktualisiert.
  • Zur DRAL gehören ein oder mehrere BRALs, die dazu dienen, den Status der DRAL an einer ganz bestimmten Stelle der Programmausführung einzufrieren und zu erhalten, damit die DRAL nötigenfalls wieder genau in den Status an dieser ganz bestimmten Stelle zurückversetzt werden kann. Wenn eine bedingte Verzweigung auftritt, wird die DRAL an dieser Stelle in die BRAL kopiert. Falls eine zweite bedingte Verzweigung vorkommt, wird die DRAL an dieser Stelle in die zweite BRAL kopiert - sofern es sie gibt
  • - bzw. andernfalls aufrechterhalten. Auf Wunsch lassen sich eine dritte BRAL oder sogar weitere BRALs vorsehen. Jede BRAL dient dazu, den Systemstatus zu einem bestimmten, festen Zeitpunkt zu konservieren, während das System die Verarbeitung fortsetzt. Die Zahl der vorgesehenen BRALs hängt von der Auffassung des Systemkonstrukteurs ab, bei wievielen möglichen Situationen es gleichzeitig maximal erforderlich ist, einen früheren Systemstatus wiederherzustellen, der möglicherweise gerade in Bearbeitung ist. Falls nicht genügend BRALs vorgesehen sind, wird die Ausführung so lange angehalten, bis eine Bedingung entschieden ist.
  • Die ACL und die DRAL arbeiten bei der Decodierung und Vollendung von Befehlen zusammen, um den Inhalt des RA gemäß dem in der Architektur vorgesehenen GPR zu verwalten, das vom Programm als Betriebsmittel angesehen wird. Wenn ein neuer Befehl decodiert wird, werden die von ihm angesprochenen Register in der DRAL nachgeschlagen, um die ihnen zugeordneten RA-Positionen herauszubekommen. Die Ausführungseinheiten verwenden dann nicht den Namen des GPRs, sondern die Adressen der RA-Positionen. Nachdem die RA-Zuordnung in der DRAL gefunden worden ist, erfolgt ein Zugriff auf die ACL, um den Status zu ermitteln, und diese Information wird an die Ausführungseinheit weitergeleitet.
  • Wenn ein Befehl abgeschlossen ist, wird seine IID von der Ausführungseinheit an die ACL geschickt, damit sie mit den IIDs im RA verglichen werden kann. Bei jeder RA-Position, die von der gleichen IID ein Ergebnis erhalten hat, werden die Steuerungsmarken geändert, um den vollendeten Status zu signalisieren.
  • Liegt eine bedingte Verzweigung vor, werden die Befehle in der angenommenen Verzweigungsrichtung decodiert. Für die Vollendung von Befehlen innerhalb der Reihenfolge ist es erforderlich, daß der Prozessor für keinen Befehl in einer angenommenen Verzweigung eine Vollendungssignal ausgibt, bevor die eingeschlagene Verzweigung entschieden ist. Für jede neu zugeordnete RA-Position wird das Steuerungsfeld des jeweiligen ACL-Eintrags gesetzt, nachdem die angenommene Verzweigung eingeschlagen ist, damit jede dieser Zuordnungen nötigenfalls gelöscht werden kann.
  • Das Wiederherstellungsverfahren nach einer falsch vermuteten Abzweigung betrifft alle Teile des Prozessors. Für den Prozeß der Registerverwaltung bedeutet dies, daß es notwendig ist, den GPR-Status wieder in den Status zurückzuversetzen, den er gehabt hätte, wenn die Decodierung beim Erreichen der Verzweigung angehalten worden wäre. Dieser Prozeß berücksichtigt, daß seit der Decodierung der Verzweigung der Status der GPR-Steuerung auf zweierlei Arten aktualisiert worden ist. Die eine Art gibt das Voranschreiten bis zur Vollendung und die tatsächliche Vollendung von Befehlen vor der Verzweigung wieder; die Auswirkungen dieser Aktualisierung müssen erhalten bleiben. Die zweite Art der Aktualisierung drückt die Decodierung und Ausführung von Befehlen nach einer Verzweigung aus; diese Aktualisierung muß aus dem GPR-Status gelöscht werden.
  • Da die DRAL (außer bei Unterbrechungen) nur bei der Decodierung von Befehlen aktualisiert und von deren Vollendung in keiner Weise betroffen wird, bliebe der Inhalt der DRAL unverändert, falls nach der Verzweigung keine Befehle decodiert worden sind. Daher muß der Status der DRAL wieder in den Status rückversetzt werden, den sie unmittelbar nach der Decodierung der Verzweigung besaß. Zu diesem Zweck werden die RA-Zuordnungen in den richtigen Status gebracht, indem die entsprechende BRAL, falls es mehr als eine gibt, in die DRAL geladen wird. Jedesmal wenn eine bedingte Verzweigung decodiert wird, wird der Inhalt der DRAL unmittelbar nach der Decodierung der Verzweigung in die BRAL geschrieben. Wenn die Vermutung hinsichtlich der Verzweigung entschieden ist, bleibt die BRAL entweder unberücksichtigt oder sie dient zur Wiederherstellung der DRAL.
  • Um zu verhindern, daß irgendwelche Befehle nach der Unterbrechungsstelle vollendet werden, ist eine Unterbrechungssteuerung vorgesehen. Eine Unterbrechung kann entweder die Vollendung oder die Unterdrückung des Befehls anfordern, der sie hervorgerufen hat. Frühere Befehle dürfen so weit vollendet werden, wie es die betreffende Unterbrechung erlaubt. Zu diesem Zeitpunkt ist der Status der DRAL nicht aktuell bzw. bedeutungslos, da sie Einträge enthält, die über die Unterbrechung hinausgehen. Die ACL enthält jedoch korrekte Informationen über alle Einträge im zugehörigen Status. Die ACL-Einträge von Befehlen nach der Unterbrechung werden gelöscht und in den vorhandenen Status rückversetzt. Die ACL dient dann dazu, der DRAL aktuelle Statuswerte zu liefern, um die Verarbeitung wieder aufzunehmen.
  • Zusammengefaßt handhabt das Registerverwaltungssystem der vorliegenden Erfindung außerhalb der Reihenfolge befindliche Befehle und Verzeigungsbefehle mit Hilfe eines RA und einem Steuerungssystem mit Doppelfunktion. Der erste Teil des Steuerungssystems, die DRAL, verwaltet Befehle im Hinblick auf die von der Architektur vorgesehenen GPRs. Der zweite Teil des Steuerungssystems, die ACL, verwaltet die tatsächlichen Inhalte des Registerfelds. Dadurch können ein Verzweigungszustand oder eine Unterbrechung sogar dann wieder hergestellt werden, wenn Befehle nicht der Reihenfolge nach ausgeführt werden.
  • Kurzbeschreibung der Abbildungen
  • Fig. 1A und 1B sind die linke bzw. rechte Hälfte der Abbildung eines Ausführungsbeispiels für ein Computersystem gemäß der vorliegenden Erfindung.
  • Fig. 2 ist eine detaillierte Darstellung des erfindungsgemäßen Registerverwaltungssystems im Ausführungsbeispiel aus Fig. 1.
  • Fig. 3 ist eine detaillierte Darstellung der in Fig. 2 gezeigten Feldsteuerungsliste (ACL).
  • Fig. 4 zeigt, wie die Einträge der in Fig. 3 gezeigten ACL im Feld angeordnet sind.
  • Die vorliegende Erfindung ist ein Registerverwaltungssystem für ein Computersystem, das aufgrund der Auslegung seines Aufbaus eine bestimmte Zahl adressierbarer Register, z. B. Allgemeinregister, besitzen muß, z. B. n Allgemeinregister. Es ist zur Ausführung der Funktionen der n Allgemeinregister mit einem Registerfeld (RA) mit in Registern ausgestattet, wobei m größer als n ist. Als Ausführungsbeispiel wird ein System beschrieben, das der bekannten Architektur des IBM System/370 mit 16 GPRs entspricht. Das RA gemäß der vorliegenden Erfindung sorgt für die dynamische Zuordnung bestimmter RA-Positionen, um die Funktionen der von der Architektur vorgesehenen Register auszuüben. Wenn die Funktion einer bestimmten Registerzuordnung vollendet ist, wird die Position im RA freigegeben und kann im weiteren Verlauf wieder demselben oder einem anderen GPR zugeordnet werden.
  • Das Registerverwaltungssystem der vorliegenden Erfindung hängt nicht von der Gesamtarchitektur des Computers ab und kann in vielen Umgebungen implementiert werden. Ein erfindungsgemäßes Computersystem 10, wie es in den Fig. 1A und 1B dargestellt ist, besitzt einen Hauptspeicher 12, an den ein Cachespeichersystem 14 angeschlossen ist. Das Cachespeichersystem 14 kann zwar auf beliebige geeignete Weise organisiert sein, ist jedoch in diesem Beispiel mit einem Befehlscache 16 und einem Datencache 18 dargestellt, die beide mit dem Hauptspeicher 12 verbunden sind und dazu dienen, getrennt Befehlsoperationen bzw. Datenoperationen zu verarbeiten. Auf dem Gebiet des Speicheraufbaus ist es bekannt, den Cachespeicher mit mehr als einer Ebene auszustatten, was Vorteile hinsichtlich Speichergeschwindigkeit und Speichergröße in einer kaskadenartigen Anordnung bietet, und dieser Speicheraufbau wäre, ohne hier dargestellt zu sein, auch mit der vorliegenden Erfindung vereinbar.
  • Die Befehle gelangen vom Befehlscache 16 über eine Befehlspuffereinheit 20 zu einer Befehlsregistereinheit 22. Zu Beispielszwecken hat die Befehlsregistereinheit 22 mehr als ein separates Befehlsregister, wobei es wünschenswert ist, zwei, drei oder vier dieser Befehlsregister zu haben.
  • Auf dem Gebiet der Computerentwicklung ist bekannt, daß ein System mehr als eine Universal-Ausführungseinheit besitzt. Die Universaleinheiten können beispielsweise entsprechend der auszuführenden Funktionsart, arithmetisch oder logisch, Skalar oder Vektor, Skalar oder Gleitkomma usw., ausgelegt werden. Da jede beliebige dieser Anordnungen von Universalausführungseinheiten Allgemeinregister benützt, läßt sich diese Erfindung hinsichtlich der Zahl, Funktionsanordnung und Auslegung der Universalausführungseinheiten eines Computers vielfältig variieren.
  • Zu Beispielszwecken ist das vorliegende System mit den Universalausführungseinheiten (general purpose execution unit, GPE) 1 und 2, die mit 24 bzw. 26 bezeichnet sind, dargestellt. Der Ausgang der Universaleinheit 24 ist mit einer Zwischenspeichereinheit 28 verbunden, deren Ausgang wiederum mit dem Datencache 18 verbunden ist. Die Universaleinheit 24 kann in Wirklichkeit eine einzelne Ausführungseinheit oder aus mehreren Einheiten zusammengesetzt sein und erzeugt gemäß diesem Ausführungsbeispiel Ergebnisse, die zum Zwischenspeicher 28 gelangen, in welchem sie so lange stehen bleiben, bis der Befehl abgeschlossen ist, und die dann im Speicher abgelegt werden können. Der Ausgang der Universaleinheit 26 ist mit einem erfindungsgemäßen Allgemeinregisterfeld (RA) 30 verbunden. Die GPE 26 verarbeitet Befehle, die Ergebnisse erzeugen, die nicht sofort gespeichert, sondern in Registern verfügbar sein müssen. Ein Befehlsstapel oder eine Befehlswarteschlange 31 dient dazu, Befehle von der Befehlsregistereinheit 22 aufzunehmen und ordnungsgemäß zur GPE 24 oder 26 zu leiten. Zusammen mit einem erfindungsgemäßen Einzel-RA und einem erfindungsgemäßen Registerverwaltungssystem können mehrere Ausführungseinheiten unterschiedlicher Art verwendet werden.
  • RA 30 enthält 32 dynamisch zuordnungsfähige echte Register, um die Funktionen von GPRs zu erfüllen, die die Architektur in diesem Ausführungsbeispiel der Erfindung vorsieht.
  • Das RA 30 wird über Statusinformationen gesteuert und liefert seinerseits über einen Steuerbus 34 Statusinformationen an das Registerverwaltungssystem (register management system, RMS) 32. Das RMS 32 ist mit mehreren anderen Systemen verbunden, um verschiedene Arten von Statusinformationen zu erhalten und zu erzeugen. Ein Unterbrechungssteuerelement 36 ist mit den Befehlsregistern 22, dem RMS 32 und dem RA 30 verbunden, damit mit den Unterbrechungen richtig umgegangen wird und damit die erforderliche Statusinformation erhalten bleibt.
  • Das RMS 32 ist mit der Befehlsregistereinheit 22 und den GPEs 24 und 26 verbunden, um Befehle von der Erteilung bis zur Ausführung zu verfolgen und den Eingabeoperanden und Ausgabeoperanden Register zuzuordnen.
  • Im Computer gemäß diesem Ausführungsbeispiel ist eine Befehlswarteschlange 50 so angeschlossen, daß sie Befehle von der Befehlsregistereinheit 22 erhalten kann, und sie hat einen Ausgang zum Befehls-Adreßberechnungselement (instruction address computation element, I-ACE) 52. Das I-ACE 52 ist ebenfalls so angeschlossen, daß es Eingaben direkt vom RA 30 bekommt, und es hat einen Ausgang, der an den Befehlscache 16 angeschlossen ist.
  • Die Befehlswarteschlange 50 ist mit dem RMS 32 verbunden, um Statusinformationen zu liefern.
  • Im Computer dieses Ausführungsbeispiels ist eine Adreßwarteschlange 60 angeschlossen, um eine Ausgabe von der Befehlsregistereinheit 22 zu empfangen. Der Ausgang der Adreßwarteschlange 60 ist mit einem Eingang des Daten-Adressenberechnungselements (data address computation element, D-ACE) 62 verbunden. Die andere Eingabe an das D-ACE 62 stammt vom RA 30. D-ACE 62 ist mit RMS 32 verbunden, um Statusinformationen zu liefern.
  • Der Ausgang von D-ACE 62 ist mit der Adressenabrufwarteschlange 64 verbunden, deren erster Ausgang wiederum mit einem Eingang des Datencache 18 verbunden ist, und deren zweiter Ausgang mit einem Eingang der Adreßablagewarteschlange 66 verbunden ist. Ein Ausgang der Adreßablagewarteschlange ist mit dem Datencache 18 verbunden, und sie besitzt eine Verbindung zum RMS 32, um Statusinformationen zu liefern.
  • Der Computer in diesem Ausführungsbeispiel hat eine Gleitkommaarithmetikeinheit 70, die auch an das RMS 32 angeschlossen ist, um Statusinformationen zu liefern. Weiter unten wird noch erklärt werden, daß es wichtig ist zu beachten, daß das RMS 32 mit Einheiten und Registern arbeiten kann, die nicht zum RA 30 gehören. Beispielsweise kann ein RMS mit mehr als einem Registerfeld arbeiten. Genauer gesagt, kann ein RMS zwei RAs steuern, an die wiederum mehrere Ausführungseinheiten des gleichen oder eines anderen Typs angeschlossen sein können.
  • Die Eingaben an die Gleitkommaeinheit (floatimg point unit, FPU) 70 stammen von einer Gleitkommabefehlwarteschlange 72 und von der Gleitkommadatenregistereinheit 74. Die Gleitkommabefehlwarteschlange 72 erhält ihre Eingaben vom Befehlsregister (I-REG) 22. Die Gleitkommadatenregistereinheit 74 erhält ihre Eingaben vom Datencache 18 und der FPU 70. Der Ausgang der Gleitkommaeinheit 70 ist mit der Zwischenspeichereinheit 76 verbunden, deren Ausgang an den Eingang des Datencache 18 angeschlossen ist.
  • Nun nehmen wir auf Fig. 2 Bezug, die Einzelheiten des Aufbaus des Registerverwaltungssystems 32 zeigt. Eine Decodierungsregisterzuordnungsliste (DRAL) 100 ist mit den eingehenden und dem ausgehenden Status- und Steuerleitungen verbunden. Die Logikeinheit 101 ist ebenfalls mit dem eingehenden und ausgehenden Status- und Steuerleitungen verbunden, um den Inhalt der DRAL zu überwachen und zu steuern. Die DRAL wird benützt, wenn Befehle decodiert werden, um GPR-Zuordnungen in RA-Zuordnungen zu übersetzen. Die DRAL kann auf unterschiedliche Art und Weise organisiert sein. Es kann zum Beispiel mehr als eine DRAL mit mehreren Kopien je DRAL geben, die pro GPR einen Eintrag enthält, welcher seinerseits die Nummer der Position im RA enthält, der zuletzt zugewiesen worden ist, einen Wert für dieses GPR zu empfangen. Bei der Decodierung der Befehle werden die jeweils angesprochenen GPRs in der DRAL nachgeschlagen, um festzustellen, welche PA-Positionen den GPRs zugeordnet sind, und wenn für die Aufnahme von Ergebnissen neue RA-Positionen zugeordnet werden, wird die DRAL aktualisiert, damit sie diese Zuordnungen widerspiegelt. Auf diese Weise wird jeder Befehl, der ein GPR benutzt, von der DRAL geleitet, um die RA-Position zu finden, die dem allerletzten Befehl, der dieses GPR anspricht, zugeordnet ist.
  • Die Sicherungsregisterzuordnungslisten 102, 104 und 106 sind so angeschlossen, daß sie an bestimmten Stellen des Betriebs den gesamten Inhalt der DRAL 100 erhalten. Normalerweise gibt es zu jeder DRAL mindestens eine BRAL im System. Das Registerverwaltungssystem könnte ohne BRALs arbeiten, wenn es dem System gestattet würde, auf die Auflösung einer Verzweigung zu warten. Die Verwendung von einer, zwei oder drei BRALs gestattet die Verarbeitung von einer, zwei bzw. drei bedingten Verzweigungen, ohne zu warten. Sie besitzt den gleichen Aufbau wie die DRAL und ist so mit ihr verbunden, daß in einem einzigen Taktzyklus der gesamte Inhalt der DRAL in die BRAL oder umgekehrt kopiert werden kann. Diese Übertragungen werden durch die Logikeinheit 101 gesteuert. Sie wird beispielsweise beim Auftreten einer bedingten Verzweigung verwendet, um den Inhalt der DRAL zu sichern, falls die Vermutung hinsichtlich der eingeschlagenen Verzeigung falsch ist.
  • Falls pro DRAL nur eine BRAL vorgesehen ist, kann normalerweise nur über eine bedingte Verzweigung hinaus decodiert werden. In dem Sonderfall, daß eine zweite bedingte Verzweigung auftritt, ohne daß dazwischen Befehle liegen, die GPRs verändern, kann auch über diese Verzweigung hinaus decodiert werden, da bei beiden Verzweigungen derselbe DRAL-Inhalt in der BRAL gesichert wird.
  • ES ist eine Feldsteuerungsliste (ACL) 110 angeschlossen, um vom RA und dem übrigen Computersystem Statusinformationen zu empfangen und Steuerungsinformationen zu senden. Die Logikeinheit 101 steuert den Inhalt der ACL 110 und koordiniert den Betrieb der LACL und der DRAL. Für jedes der RAS, die die GPRs unterstützen, gibt es ein ACL-Register, das die dieses RA betreffenden Statusinformationen aufnimmt. Für jede Registerposition im Feld gibt es einen Eintrag, der in diesem Ausführungsbeispiel jeweils aus 14 Bits besteht, die gemäß den Fig. 3 und 4 in fünf Felder aufgeteilt sind: CTL, ABC, IID, PRV und REG. CTL ist ein Steuerungsfeld, das den Gesamtstatus des RA-Eintrags festlegt. Es kann folgende Werte besitzen:
  • 00: VERFÜGBAR - Der RA-Eintrag wird nicht benutzt und kann nötigenfalls zugewiesen werden. Wenn CTL = "00" ist, haben die Felder ABC, IID, PRV und REG keine Bedeutung.
  • 01: ZUGEORDNET - Die RA-Position ist dem im Feld REG angegebenen GPR zugeordnet. Falls eine Unterbrechung vorgenommen werden würde und die aktuellen Befehle abgeschlossen sind, ist dies die RA-Position, der diesem GPR entspricht. Zu jedem Zeitpunkt ist jedem GPR jeweils nur eine RA-Position zugeordnet.
  • Wenn CTL = "01" ist, ist das Feld ABC "000", und die Felder IID und PRV haben keine Bedeutung.
  • 10: NOCH NICHT ENTSCHIEDEN UND NOCH NICHT GELADEN - Die RA-Position wurde zugeordnet, um das Ergebnis eines Befehls aufzunehmen, der noch nicht vollständig ausgeführt worden ist, und das Ergebnis des Befehls wurde noch nicht in diese RA-Position hineingeschrieben. Das Feld IID ist die IID, die dem Befehl zugeordnet worden ist, dessen Ergebnis diese RA-Position erhalten wird. Das Feld ABC ist ungleich Null, falls dieser Befehl bedingt ist, ansonsten "000". In den meisten Fällen enthält das Feld REG die Nummer des GPRs, für das die RA-Position ein Ergebnis erhalten wird, und das Feld PRV enthält die Nummer der RA-Position, die den alten Wert dieses GPRs enthält. Für den Sonderfall der Vergleichsbefehle, die kein GPR ändern, wird trotzdem eine RA-Position zugeordnet, das Feld REG ist bedeutungslos, und das Feld PRV enthält die Nummer dieser RA-Position.
  • 11: NOCH NICHT ENTSCHIEDEN UND GELADEN - Die RA-Position wurde zugeordnet, um das Ergebnis eines Befehls aufzunehmen, der noch nicht vollständig ausgeführt worden ist, wobei die RA-Position das Ergebnis bereits erhalten hat. Die Felder ABC, IID, PRV und REG besitzen dieselbe Bedeutung wie für CTL = "10", außer daß der Sonderfall der Vergleichsbefehle bei diesem Status nicht vorkommt.
  • Das Feld ABC dient zur Erkennung der RA-Positionen, die zu Befehlen gehören, die nach einer bedingten Verzweigung decodiert worden sind. Die Erfindung funktioniert auch ohne dieses Feld, da diese Information auch durch das Überprüfen der IIDs erhalten werden könnte. Das Feld ist in diesem Ausführungsbeispiel aber implementiert, da es wirtschaftlicher und schneller ist, wenn es ein Feld gibt, das dazu bestimmt ist, diese eine Information zu speichern, anstatt sie in regelmäßigen Abständen durch eine Überprüfung der IIDs zu ermitteln.
  • Im vorliegenden Fall, bei dem drei BRALs vorgesehen sind, so daß bis zu drei bedingte Verzweigungen vorkommen können, hat das Feld ABC drei Bits, die zu Beginn auf "000" gesetzt werden. Tritt eine erste Verzweigung auf, wird die erste BRAL mit dem Inhalt der DRAL geladen, und das Feld ABC wird in "100" geändert, um so das Laden der BRAL und das Vorliegen einer noch nicht entschiedenen Verzweigung anzuzeigen. Fall eine zweite Verzweigung vorkommt, bevor die erste Verzweigung entschieden ist, wird die zweite BRAL mit dem zu diesem Zeitpunkt aktuellen Inhalt der DRAL geladen, und das Feld ABC wird in "110" geändert. Falls nun eine dritte Verzweigung vorkommt und die ersten beiden Verzweigungen noch nicht entschieden sind, erhält die dritte BRAL den zu diesem Zeitpunkt aktuellen Inhalt der DRAL, und das Feld ABC wird in "111" geändert. Jedes Bit im Feld ABC ist unabhängig voneinander mit einer bestimmten BRAL verknüpft und zeigt an, daß die BRAL aktiv ist und den Inhalt einer bestimmten DRAL für eine noch nicht entschiedene Verzweigung enthält. Die Logikeinheit 101 steuert diese Funktionen.
  • Falls eine Verzweigung zugunsten einer bestimmten Richtung entschieden wird, wird der Inhalt der zugehörigen BRAL nicht mehr benötigt, und das entsprechende Bit im Feld ABC wird auf 0 gesetzt. Beim vorigen Beispiel müssen Verzweigungen nicht unbedingt in der Reihenfolge ihres Auftretens entschieden werden.
  • Bei einer ersten Verzweigung (ABC = "100") und einer zweiten Verzweigung (ABC = "110") kann es sein, daß die zweite Verzweigung zuerst entschieden wird und daß das Feld ABC einfach auf "100" zurückgesetzt wird. Wenn wie beim früheren Beispiel drei Verzweigungen der Reihe nach auftreten (ABC = "111") und die zweite Verzweigung zuerst entschieden wird, steht die zweite BRAL wieder zur Verfügung, und das Feld ABC wird auf "101" gesetzt. Das bedeutet zudem, daß eine BRAL wieder verfügbar wird, wenn eine weitere Verzweigung eintritt. Die Bits im Feld ABC können in jeder beliebigen Reihenfolge, die das Auftreten einer Verzweigung bzw. die Entscheidung in beliebiger Reihenfolge darstellt, gesetzt und rückgesetzt werden. Wenn also das Feld ABC "101" ist, kann eine neue Verzweigung vorkommen und das Bit B setzen, so daß das Feld ABC gleich "111" wird, obwohl dies nicht der Reihenfolge entspricht, in der die Verzweigungen aufgetreten sind.
  • Bei der Decodierung eines Befehls werden die GPRs, die er anspricht, in der DRAL nachgeschlagen, um festzustellen, welche RA-Positionen ihnen zugeordnet sind. Dies schließt sowohl die GPRs, die benutzt werden, als auch die GPRs, die geändert werden, ein. Falls der Befehl GPR-Werte verändert, werden RA-Positionen zur Aufnahme der neuen Werte zugewiesen, und die DRAL wird aktualisiert, so daß diese neuen RA-Positionen zu denjenigen werden, die zu diesen GPRs gehören. Die Zuordnungen der RA-Positionen werden dann anstelle der eigentlichen Zuordnungen der GPRs zur Ausführungslogik geleitet.
  • Falls angenommen wird, daß der Prozessor in der Lage ist, zwei Befehle gleichzeitig zu decodieren, dann bietet die DRAL die Möglichkeit, die Register R1, R1+1, x und B (beim System/370- Befehlsformat) für beide zu durchsuchen. Was die Architektur allgemein betrifft, kann ein Befehl einen Indexwert und einen Basiswert für GPRs anfordern, um für den nötigen Speicherzugriff zu sorgen. Das trifft für die meisten Befehle zu, und in Fällen, in denen dies nicht zutrifft, sind zur Decodierung mehrere Taktzyklen nötig. Ein Mehrfach-Ladebefehl kann bis zu 16 GPRs in der System/370-Architektur ansprechen. Nachdem jedes GPR in der DRAL aufgesucht worden ist, werden die so gefundenen RA-Positionen in der ACL nachgeschlagen, um zu ermitteln, ob die RA-Position geladen ist, und diese Information wird zusammen mit dem Befehl zur Ausführungseinheit geschickt. Die RA-Position wird als geladen angesehen, wenn-sie sich im Zustand ZUGEORDNET oder im Zustand NOCH NICHT ENTSCHIEDEN UND GELADEN befindet (CTL = "XI").
  • Der Prozessor bietet die Möglichkeit, pro Taktzyklus mindestens zwei neue RA-Positionen zuzuordnen. Beispielsweise können die GPRs in zwei Gruppen, einer geraden und einer ungeraden Gruppe, angeordnet werden, wobei es für jede GPR-Gruppe ein separates RA gibt. Dann könnten pro Taktzyklus vier GPRs zugeordnet werden, zwei aus jeder der beiden den zwei RAs entsprechenden GRP-Gruppen. Die Schaltung, die dies bewerkstelligt, prüft das Feld CTL in der ACL und wählt die erste RA-Position mit dem Status VERFÜGBAR (CTL = "00"). Ist eine RA-Position zugeordnet, erhält sie den Status ZUGEORDNET UND NOCH NICHT GELADEN (CTL = "10"), das Feld I wird mit der IID des Befehls besetzt, für den die Zuordnung gerade vorgenommen wird, das Feld REG wird mit der Nummer des GPRs besetzt, und das Feld PRV wird mit der Nummer der RA-Position besetzt, die zuvor diesem Register zugewiesen worden war (und durch Nachschlagen in der DRAL ermittelt worden war) es sei denn, es handelt sich um Vergleichsbefehle; in diesem Fall wird das Feld PRV so gesetzt, daß es auf diese RA-Position zeigt, die gerade zugewiesen wird. Der Grund dafür, daß eine RA-Position Vergleichsbefehlen zugeordnet wird, und der Grund für diese Funktionsweise werden später näher beschrieben.
  • Diese Art der Steuerung für das RA stellt einige Anforderungen an die Befehlsdecodierung.
  • 1. Obwohl die Fähigkeit, Register in der DRAL nachzuschlagen, den Anforderungen der Mehrzahl der Befehle entspricht, gibt es ein paar mit anders gelagerten Anforderungen. Diese Befehle benötigen zur Decodierung mehr als einen Taktzyklus. Einige dieser Befehle in der System/370-Architektur sind: MVCL, CLCL, AXR, SXR, LM, STM, EDMK und TRT.
  • 2. Die Fähigkeit, pro Taktzyklus in jedem Registersatz mehr als eine RA-Position zuzuordnen, ist in einigen Situationen von Bedeutung. Einige der Befehle in der System/370-Architektur, die mehr als ein einziges gerades/ungerades Allgemeinregisterpaar oder mehr als ein einziges Gleitkommaregister ändern können, sind: MVCL, CLCL, AXR, SXR und LM. Diese Befehle können nur dann in einem einzigen Taktzyklus decodiert werden, wenn in einem Taktzyklus genügend RA-Positionen zugewiesen werden können. Abgesehen von den Schwierigkeiten einiger einzelner Befehle, wird dadurch auch festgelegt, welche Befehle gleichzeitig decodiert werden können. Zwei Befehle, die zuviele Register innerhalb derselben Gruppe ändern, können nicht gleichzeitig decodiert werden.
  • 3. Damit die DRAL einwandfrei funktioniert, wenn ein Registereintrag zur Decodierzeit nachgeschlagen wird, muß die DRAL die Nummern von RA-Positionen enthalten, die dazu eingeteilt waren, das Ergebnis des letzten Befehls aufzunehmen, der dieses Register verändert hat. Dies ist kein Problem, sofern dieser Befehl nicht der unmittelbar vorhergehende Befehl ist und der Prozessor versucht, beide Befehle gleichzeitig zu decodieren. Dieser Situation wird dadurch begegnet, daß jedesmal, wenn ein Befehl ein Register verändert und der nächste Befehl dieses Register anspricht, der letztere Befehl nicht zum gleichen Zeitpunkt wie der erste Befehl decodiert werden darf.
  • Wenn ein Befehl abgeschlossen ist, wird dessen IID an die ACL geschickt. Die Logikeinheit 101 vergleicht diese IID mit allen IID-Feldern in der ACL, um festzustellen, welche RA-Positionen Ergebnisse von diesem Befehl erhalten haben. Dann wird für jede dieser so identifizierten RA-Positionen ein Signal erzeugt, das ihren Status von NOCH NICHT ENTSCHIEDEN UND GELADEN in ZUGEORDNET ändert (CTL wird von "11" in "01" geändert). Außerdem wird für jeden dieser RA-Positionen das Feld PRV untersucht, um festzustellen, welche RA-Positionen zur Verfügung gestellt werden müssen. Für jede RA-Position, auf die ein PRV-Feld zeigt, wird ein Signal erzeugt, das ihren Status von ZUGEORDNET auf VERFÜGBAR ändert (CTL wird von "01" zu "00" geändert).
  • Die gesamte Logik für diese Funktionen arbeitet parallel. Daher erhalten in einem Taktzyklus alle RA-Positionen, die alte Registerwerte des abgeschlossenen Befehls enthalten, den Status VERFÜGBAR, und alle RA-Positionen, die neue Werte enthalten, erhalten den Status ZUGEORDNET. Wenn Befehle normal beendet werden, wird die DRAL dadurch nicht beeinflußt.
  • Theoretisch wird eine Verzweigung als bedingte Verzweigung angesehen, wenn keine Aussage darüber getroffen werden kann, ob sie durch Untersuchung des Befehls selbst gewählt worden ist. Zu dieser Kategorie zählen die 370-Verzweigungen BC(M = /0 oder F und R2 = /0), BCT, BCTR(R2 = /0), BXLE und BXH. Jedesmal wenn eine dieser Verzweigungen decodiert wird, entscheidet das Element I darüber, ob die Verzweigung als vollzogen betrachtet werden soll oder nicht. Dann decodiert es Befehle und führt diese in der vermuteten Richtung aus, während der Prozessor entscheidet, ob die Verzweigung tatsächlich in diese Richtung erfolgt. Der Prozessor kann lediglich diese Befehle nicht abschließen, da sie logisch auf die Verzweigung folgen und erst nach dieser abgeschlossen werden können. Während dieser Zeitspanne ist das Feld ABC aller neuen RA-Positionen, die dazu ausgewählt sind, Registerwerte zu erhalten, für die Einträge in der zu dieser Verzweigung gehörenden BRAL auf "1" gesetzt. Zu einem späteren Zeitpunkt, wenn die Richtung der Verzweigung definitiv entschieden ist, ist es möglicherweise erforderlich, die gesamte Befehlsverarbeitung nach der Verzweigung rückgängig zu machen und mit der Verarbeitung von Befehlen in der anderen Richtung zu beginnen.
  • In der Praxis werden alle Verzweigungen, egal welcher Art, als bedingte Verzweigungen behandelt, da eine gemeinsame Tabelle der Verzweigungsvorgeschichte (branch history table, BHT) verwendet wird, um die Zieladresse des Verzweigungsbefehls zu identifizieren. Die Position der Zieladresse in der BHT bewirkt, daß der Befehl bedingt ist, zumindest so lange, bis die richtige Zieladresse ermittelt worden ist. Wenn die BHT zum ersten Mal eine Zieladresse identifiziert, wird erst später klar, ob diese Zieladresse richtig ist. Zum Zeitpunkt, an dem es sich erweist, daß die Zieladresse richtig ist, wird der bedingte Status der Verzweigung zurückgenommen.
  • Die Wiederherstellung der Verzweigung nach einer in die falsche Richtung durchgeführten Verzweigung beeinflußt sämtliche Teile des Prozessors. Für das Registerverwaltungssystem heißt das, daß der GPR-Status wieder in den Zustand rückgesetzt werden muß, den er hätte, wenn das Decodieren bei Erreichen der Verzweigung angehalten worden wäre. In der Zwischenzeit seit der Decodierung der Verzweigung wurde der Status der GPR-Steuerung auf zweierlei Arten aktualisiert. Die eine Art gibt das Voranschreiten der Vollendung und die tatsächliche Vollendung von Befehlen vor der Verzweigung wieder; die Auswirkungen dieser Aktualisierung müssen erhalten bleiben. Die zweite Art der Aktualisierung drückt die Decodierung und Ausführung von Befehlen nach einer Verzweigung aus; diese Aktualisierung muß aus dem GPR-Status gelöscht werden, da sie keine Gültigkeit bzw. Bedeutung besitzt.
  • Normalerweise wird die DRAL nur aktualisiert, wenn Befehle decodiert werden, und wird durch deren Abschluß in keiner Weise beeinflußt. Daher ändert sich der Inhalt der DRAL nicht, wenn nach einer Verzweigung keine Befehle decodiert werden. Bei einer Unterbrechung liegt eine andere Situation vor, die später extra beschrieben werden wird. Die DRAL muß also wieder in den Status zurückversetzt werden, den sie unmittelbar nach der Decodierung der Verzweigung hatte. Dies geschieht mit Hilfe der BRAL. Jedesmal wenn eine bedingte Verzweigung decodiert wird, wird der Inhalt der DRAL, den sie unmittelbar nach der Decodierung der Verzweigung hatte, zum Zeitpunkt, an dem das entsprechende Bit im Feld ABC auf "1" gesetzt ist, in die BRAL kopiert. Dort bleibt der Inhalt so lange gespeichert, bis festgestellt worden ist, ob die Vermutung hinsichtlich der Verzweigungsrichtung richtig oder falsch war, und wird dann entweder gelöscht oder in die DRAL zurückgeschrieben.
  • Nach einer falschen bedingten Verzweigung muß der richtige Status der ACL wiederhergestellt werden. Alle Einträge in der ACL, die nach dem Decodieren der bedingten Verzweigung vorgenommen wurden, werden daran erkannt, daß im Feld ABC das betreffende Bit, das für die BRAL der betreffenden Verzweigung benutzt wird, auf "1" gesetzt ist. Diese Einträge betreffen ausschließlich RA-Positionen, die zum Zeitpunkt der Decodierung der bedingten Verzweigung den Status VERFÜGBAR hatten oder die danach durch den Abschluß früherer Befehle den Status VERFÜGBAR erhielten und die dann wieder von irgendeinem Befehl nach der bedingten Verzweigung benutzt wurden. Keine dieser RA-Positionen kann weiter als bis zu einem der Zustände NOCH NICHT ENTSCHIEDEN fortgeschritten sein, da keiner der Befehle nach der bedingten Verzweigung abgeschlossen worden sein kann. Falls keine Befehle nach der bedingten Verzweigung decodiert worden sind, besitzen all diese RA-Positionen den Status VERFÜGBAR, und diesen Status sollten sie ja auch wieder bekommen.
  • Zu den RA-Positionen, bei denen das Feld ABC für die betreffende Verzweigung auf "0" gesetzt ist, zählen die RA-Positionen, die im Status ZUGEORDNET sind, und jene RA-Positionen, die zu noch ausstehenden Befehlen vor der bedingten Verzweigung gehören. Falls noch nicht über die Verzweigung hinaus decodiert worden ist, sollten diese Einträge ihren aktuellen Status behalten und daher in Ruhe gelassen werden. Daher besteht das Verfahren zur Wiederherstellung des richtigen Status der ACL nach einer falsch vorhergesagten bedingten Verzweigung darin, daß alle Einträge, bei denen in der betreffenden Bitposition für die Verzweigung ABC = "1" ist, den Status VERFÜGBAR (CTL = "00") erhalten. Stellt sich heraus, daß eine bedingte Verzweigung richtig vorausgesagt worden ist, werden alle Bits von ABC in der ACL für die betreffende Bitposition der Verzweigung auf "0" gesetzt.
  • Eine Verzweigung gilt dann als nicht bedingt, wenn eine Untersuchung zur Decodierzeit ergibt, daß sie vollzogen worden ist. Nicht-bedingte Verzweigungsbefehle verursachen keine Ungewißheit darüber, wie die Befehlsverarbeitung weitergehen soll, und werden daher von den Steuereinheiten der Registerverwaltung nicht beachtet. BAL und BALR sind 370-Befehle, die zu dieser Kategorie gehören und auch ein GPR ändern; daher werden sie genauso wie irgendein anderer Befehl behandelt, der ein Register ändert. Bei Geräten mit einem BHT kann es sein, daß es keine Befehle in dieser Kategorie gibt.
  • Unterbrechungen müssen etwas anders als andere Situationen behandelt werden. Sobald das Vorliegen einer Unterbrechung festgestellt wird, erhält das Unterbrechungssteuerelement 36 ein Signal. Dieses System arbeitet mit den Steuereinheiten für die Befehlsvollendung zusammen, um zu verhindern, daß irgendein Befehl nach dem Unterbrechungspunkt abgeschlossen wird. Der Ort der Unterbrechung liegt je nachdem, ob die Art der Unterbrechung die Unterdrückung oder die Vollendung des Befehls verlangt, entweder unmittelbar vor oder unmittelbar nach dem Befehl, der sie verursacht hat. Jene Befehle vor dem Ort der Unterbrechung dürfen abgeschlossen werden. An dieser Stelle spiegelt der Inhalt der DRAL Maßnahmen wider, die ergriffen worden wären, wenn eine gewisse Anzahl von Befehlen nach dem Befehl, der die Unterbrechung verursacht hat, ausgeführt worden wären.
  • Die ACL besitzt einen Status, bei dem alle RA-Positionen mit dem Status ZUGEORDNET diejenigen sind, die die richtigen Werte für die zugeordneten GPRs enthalten. Zudem kann die ACL eine Anzahl von RA-Positionen enthalten, die in einen der Zustände NOCH NICHT ENTSCHIEDEN sind. All diese gehören zu Befehlen hinter dem Ort der Unterbrechung, und der nächste Schritt besteht darin, daß all diese RA-Positionen wieder den Status VERFÜGBAR erhalten (falls CTL = "IX" ist, wird CTL gleich "00" gesetzt). Die ACL erhält den korrekten Status, und auch die DRAL muß einen entsprechenden Status bekommen.
  • Die DRAL wird während einer Zeitspanne von mehreren Taktzyklen gesetzt, indem ein Zähler schrittweise sämtliche GPR-Adressen durchläuft. Wenn er in jedem Taktzyklus einen neuen Wert durchläuft, wird der Wert mit jedem der ACL-Einträge verglichen. Diese Funktion führt die Logikeinheit 101 aus. Wenn das Feld REG mit dem Wert des Zählers übereinstimmt und die RA-Position den Status ZUGEORDNET (CTL = "01") besitzt, liegt eine Übereinstimmung vor. Da jedem GPR genau eine RA-Position zugeordnet sein muß, muß dieser Vergleichsvorgang pro Taktzyklus einen Vergleich mit genau einer RA-Position führen. Das Ergebnis dieser Vergleiche wird codiert, um die Nummer der RA-Position zu erzeugen, und diese Nummern der RA-Positionen werden an die DRAL geschickt und sequentiell in die DRAL-Einträge eingetragen. Am Ende dieses Vorgangs zeigt jeweils ein DRAL-Eintrag auf die RA-Position, die dem GPR zugeordnet ist, dem dieser Eintrag entspricht, und dies ist der korrekte Status der DRAL.
  • Die Wiederherstellung des korrekten Status der DRAL kann während des Auslagerns von Programmstatusworten (PSWs) geschehen, so daß der Unterbrechungsvorgang dadurch zeitlich nicht verlängert wird.

Claims (4)

1. Computersystem, bei dem die Ausführung von Befehlen in Unordnung vorgesehen ist und bei dem die Verarbeitung eines bedingten Verzweigungsbefehls auf der Grundlage einer vermuteten Verzweigungsrichtung vorgesehen ist, das Speichermittel (12) zum Speichern von Befehlen und Daten, Befehlsausführungsmittel (24, 26) zum Empfang von Befehlen und Daten und zum Erzeugen von Ergebnissen von Befehlen und Befehlsdecodier- und Registermittel (22) zum Empfang von Befehlen von den Speichermitteln (12) und zum Senden decodierter, auszuführender Befehle an die Befehlsausführungsmittel (24, 26) umfaßt, gekennzeichnet durch
ein Registerfeld (30), das m physische Register in einer Systemarchitektur mit n logischen Registern umfaßt, wobei in größer als n ist und das Registerfeld (30) so angeschlossen ist, daß es Informationen von den Speichermitteln (12) empfängt und an diese sendet,
eine Feldsteuerungsliste (110) zum Speichern von Informationen über den Registerstatus, wobei die Feldsteuerungsliste (110) m Einträge hat, wobei jeder Eintrag ein Registerstatus-Erkennungsfeld, das zu einem der m physischen Register im Registerfeld (30) gehört, und ein Befehlserkennungsfeld, das einen Befehl angibt, der das eine der m physischen Register adressiert, umfaßt,
eine Decodierungsregisterzuordnungsliste (100), die mit dem Registerfeld (30) verbunden ist, um den Zuordnungsstatus zu wahren, wobei diese Decodierungsregisterzuordnungsliste (100) n Positionen besitzt, wobei jede Position ein Zuordnungsstatus-Erkennungsfeld umfaßt, das zu einem der n logischen Register gehört,
wobei die Befehlsausführungsmittel (24, 26) so angeschlossen sind, daß sie Ausführungsstatussignale an die Feldsteuerungsliste (110) und an die Decodierungsregisterzuordnungsliste (100) liefern, und
eine Logikeinheit (101), die mit der Feldsteuerungsliste (110) und der Decodierungsregisterzuordnungsliste (100) verbunden ist, um:
im Einklang mit dem Registerstatus ein ausgewähltes der m physischen Register zuzuordnen, um Funktionen für ein erstes logisches Register auszuführen, das von einem Befehl adressiert wurde, der von den Befehlsdecodier- und Registermitteln (22) decodiert worden ist;
erste Daten, die das ausgewählte der m physischen Register bezeichnen, in das zum ersten logischen Register gehörende Zuordnungsstatus -Erkennungsfeld einzutragen; und
zweite Daten, die diesen Befehl bezeichnen, in das Befehlserkennungsfeld einzutragen.
2. System gemäß Anspruch 1, gekennzeichnet durch eine Sicherungsregisterzuordnungsliste (102, 104, 106), die mit der Decodierungsregisterzuordnungsliste (100) und den Befehlsdecodier- und Registermitteln (22) verbunden ist, um die ersten Daten nach dem Decodieren eines bedingten Verzweigungsbefehls von der Decodierungsregisterzuordnungsliste (100) zu erhalten und zu kopieren und um diese ersten Daten in die Decodierungsregisterzuordnungsliste (100) zurückzukopieren, wenn festgestellt wird, daß die vermutete Verzweigungsrichtung nicht richtig ist.
3. System gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Feldsteuerungsliste (110) für jedes Register ein Statusfeld (ABC) hat, das für jede Sicherungsregisterzuordnungsliste (102, 104, 106) ein Statusbit enthält, um anzuzeigen, ob der Inhalt des zugehörigen Registers von einem Zustand abhängt, der dazu geführt hat, daß der Inhalt der Decodierungsregisterzuordnungsliste (100) zu einem bestimmten Zeitpunkt in der Sicherungsregisterzuordnungsliste (102, 104, 106) gespeichert worden ist.
4. System gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Feldsteuerungsliste (110) und die Decodierungsregisterzuordnungsliste (100) zumindest für einige alte Werte von einigen der n logischen Register Befehlsstatussignale empfangen und Registerstatusinformationen pflegen, während Befehle in Unordnung und bedingte Verzweigungsbefehle die Ausführung vollenden und mit Hilfe mehrerer Positionen im Registerfeld neue Werte für zugehörige Positionen der n logischen Register liefern, und wobei die alten Werte für die zugehörigen Positionen der n logischen Register bis zu dem Zeitpunkt wiederhergestellt werden können, an dem diese neuen Positionen einem Abschluß des Ausführungsstatus zugeordnet werden.
DE3851488T 1987-07-20 1988-06-16 Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. Expired - Lifetime DE3851488T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/075,483 US4901233A (en) 1987-07-20 1987-07-20 Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries

Publications (2)

Publication Number Publication Date
DE3851488D1 DE3851488D1 (de) 1994-10-20
DE3851488T2 true DE3851488T2 (de) 1995-03-30

Family

ID=22126064

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3851488T Expired - Lifetime DE3851488T2 (de) 1987-07-20 1988-06-16 Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.

Country Status (8)

Country Link
US (1) US4901233A (de)
EP (1) EP0301220B1 (de)
JP (1) JPH0668726B2 (de)
AR (1) AR242863A1 (de)
AU (1) AU606180B2 (de)
BR (1) BR8803228A (de)
CA (1) CA1303225C (de)
DE (1) DE3851488T2 (de)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265220A (en) * 1986-12-23 1993-11-23 Nec Corporation Address control device for effectively controlling an address storing operation even when a request is subsequently cancelled
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5050067A (en) * 1987-08-20 1991-09-17 Davin Computer Corporation Multiple sliding register stacks in a computer
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
EP0495162A3 (en) * 1991-01-16 1994-05-18 Ibm Storage management
EP0510429A3 (en) * 1991-04-24 1993-12-01 Ibm Millicode register management system
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
EP0514763A3 (en) * 1991-05-20 1993-08-25 Motorola, Inc. A data processor having a logical register content-addressable memory
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5345567A (en) * 1991-06-10 1994-09-06 International Business Machines Corporation System and method for modifying program status word system mask, system access key, and address space code with overlap enabled
EP0518420A3 (en) * 1991-06-13 1994-08-10 Ibm Computer system for concurrent processing of multiple out-of-order instructions
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
DE69231762T2 (de) * 1991-07-08 2001-07-26 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5293613A (en) * 1991-08-29 1994-03-08 International Business Machines Corporation Recovery control register
EP0529303A3 (en) * 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
AU3424693A (en) * 1992-01-02 1993-07-28 Amdahl Corporation Software control of hardware interruptions
AU665368B2 (en) * 1992-02-27 1996-01-04 Samsung Electronics Co., Ltd. CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) * 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0663083B1 (de) * 1992-09-29 2000-12-20 Seiko Epson Corporation System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5446913A (en) * 1992-12-16 1995-08-29 International Business Machines Corporation Method and system for nonsequential execution of intermixed scalar and vector instructions in a data processing system utilizing a finish instruction array
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69320991T2 (de) 1992-12-31 1999-01-28 Seiko Epson Corp System und verfahren zur änderung der namen von registern
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
US5493669A (en) * 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
TW242673B (de) * 1993-08-18 1995-03-11 Ibm
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
JP3532975B2 (ja) * 1993-09-27 2004-05-31 株式会社ルネサステクノロジ マイクロコンピュータおよびそれを用いて命令を実行する方法
US5446912A (en) * 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
DE69408769T2 (de) * 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
EP0649084A1 (de) * 1993-10-18 1995-04-19 Cyrix Corporation Verzweigungsverarbeitung in Mikroprozessor
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5784589A (en) * 1993-10-18 1998-07-21 Cyrix Corporation Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
DE69425311T2 (de) * 1993-10-18 2001-03-15 Nat Semiconductor Corp Mikroprozessor mit spekulativer Befehlsausführung
US6073231A (en) * 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US5666507A (en) * 1993-12-29 1997-09-09 Unisys Corporation Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5826109A (en) * 1994-01-04 1998-10-20 Intel Corporation Method and apparatus for performing multiple load operations to the same memory location in a computer system
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US6047369A (en) * 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
US5742831A (en) * 1994-06-30 1998-04-21 Intel Corporation Methods and apparatus for maintaining cache coherency during copendency of load and store operations
US6205538B1 (en) 1994-08-24 2001-03-20 Sun Microsystems, Inc. Instruction result labeling in a counterflow pipeline processor
JPH09505922A (ja) * 1994-09-19 1997-06-10 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 多数のマイクロ制御器の演算を実行するマイクロ制御器システム
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5732005A (en) * 1995-02-10 1998-03-24 International Business Machines Corporation Single-precision, floating-point register array for floating-point units performing double-precision operations by emulation
EP0727736A3 (de) * 1995-02-14 1997-04-16 Hal Computer Systems Inc Verfahren und Vorrichtung zum effizienten Schreiben der Ergebnisse in Registern mit geändertem Namen
US5740414A (en) * 1995-02-14 1998-04-14 Hal Computer Systems, Inc. Method and apparatus for coordinating the use of physical registers in a microprocessor
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information
US5694587A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation Specialized millicode instructions for test PSW validity, load with access test, and character translation assist
US5680598A (en) * 1995-03-31 1997-10-21 International Business Machines Corporation Millicode extended memory addressing using operand access control register to control extended address concatenation
US5611062A (en) * 1995-03-31 1997-03-11 International Business Machines Corporation Specialized millicode instruction for string operations
US5694617A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US5673391A (en) * 1995-03-31 1997-09-30 International Business Machines Corporation Hardware retry trap for millicoded processor
US5713035A (en) * 1995-03-31 1998-01-27 International Business Machines Corporation Linking program access register number with millicode operand access
US5802359A (en) * 1995-03-31 1998-09-01 International Business Machines Corporation Mapping processor state into a millicode addressable processor state register 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
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5765215A (en) * 1995-08-25 1998-06-09 International Business Machines Corporation Method and system for efficient rename buffer deallocation within a processor
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US6043782A (en) * 1995-12-18 2000-03-28 Ppg Industries Ohio, Inc. Antenna connector arrangement
US5768556A (en) * 1995-12-22 1998-06-16 International Business Machines Corporation Method and apparatus for identifying dependencies within a register
US5754810A (en) * 1996-03-12 1998-05-19 International Business Machines Corporation Specialized millicode instruction for certain decimal operations
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
US5794024A (en) * 1996-03-25 1998-08-11 International Business Machines Corporation Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction
US5838943A (en) 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US5812813A (en) * 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
EP0863460B1 (de) * 1997-03-03 2005-08-24 International Business Machines Corporation Verwaltung von umbenannten Register in einem superskalaren Rechnersystem
US5898885A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native stack-based instruction within a computer system
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US5974535A (en) * 1997-05-09 1999-10-26 International Business Machines Corporation Method and system in data processing system of permitting concurrent processing of instructions of a particular type
US5956495A (en) * 1997-09-22 1999-09-21 International Business Machines Corporation Method and system for processing branch instructions during emulation in a data processing system
US6239800B1 (en) 1997-12-15 2001-05-29 International Business Machines Corporation Method and apparatus for leading a user through a software installation procedure via interaction with displayed graphs
US6047367A (en) * 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support
JP3564041B2 (ja) * 1998-01-20 2004-09-08 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム
US6052771A (en) * 1998-01-20 2000-04-18 International Business Machines Corporation Microprocessor with pipeline synchronization
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
SG81954A1 (en) * 1999-01-21 2001-07-24 Ibm Microprocessor with improved out of order support via register management with synchronization of multiple pipelines
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
US6898695B2 (en) * 2001-03-28 2005-05-24 Intel Corporation Use of a future file for data address calculations in a pipelined processor
US7349398B1 (en) 2001-12-31 2008-03-25 Redback Networks, Inc. Method and apparatus for out-of-order processing of packets
US7349399B1 (en) * 2002-09-20 2008-03-25 Redback Networks, Inc. Method and apparatus for out-of-order processing of packets using linked lists
US6973552B2 (en) * 2003-05-12 2005-12-06 International Business Machines Corporation System and method to handle page validation with out-of-order fetch
JP5917928B2 (ja) * 2012-01-31 2016-05-18 日本板硝子株式会社 シール部材付きウインドウガラス
JP6211823B2 (ja) * 2013-06-20 2017-10-11 日本板硝子株式会社 自動車用ウインドウガラス及びその製造方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
US4594660A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
JPS607540A (ja) * 1983-06-24 1985-01-16 Mitsubishi Electric Corp 割込制御回路
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
JPS6151243A (ja) * 1984-08-20 1986-03-13 Toshiba Corp レジスタ式演算処理装置
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
JPH081601B2 (ja) * 1984-12-07 1996-01-10 株式会社日立製作所 情報処理装置
JPH0754461B2 (ja) * 1985-02-08 1995-06-07 株式会社日立製作所 情報処理装置
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution

Also Published As

Publication number Publication date
AU606180B2 (en) 1991-01-31
EP0301220A2 (de) 1989-02-01
EP0301220B1 (de) 1994-09-14
BR8803228A (pt) 1989-02-08
EP0301220A3 (en) 1990-07-25
CA1303225C (en) 1992-06-09
JPH0668726B2 (ja) 1994-08-31
JPS6436336A (en) 1989-02-07
DE3851488D1 (de) 1994-10-20
AU1907588A (en) 1989-01-27
AR242863A1 (es) 1993-05-31
US4901233A (en) 1990-02-13

Similar Documents

Publication Publication Date Title
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE69308548T2 (de) Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
DE2714805C2 (de)
DE3687744T2 (de) Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE69305366T2 (de) System und verfahren zum kennzeichnen von befehlen zur steuerung der befehlsausführung
DE2722099C2 (de)
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE60006270T2 (de) Parallele prozessorarchitektur
DE3884101T2 (de) Abholung von Operanden in Unordnung.
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE3685913T2 (de) Vektorenverarbeitung.
DE3687298T2 (de) Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition