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
Links
- 238000012545 processing Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 102100038644 Four and a half LIM domains protein 2 Human genes 0.000 description 1
- 101001031714 Homo sapiens Four and a half LIM domains protein 2 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital 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/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/419—Read-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.
- 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.
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)
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)
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 |
-
1987
- 1987-07-20 US US07/075,483 patent/US4901233A/en not_active Expired - Fee Related
-
1988
- 1988-05-20 JP JP63122246A patent/JPH0668726B2/ja not_active Expired - Fee Related
- 1988-06-16 DE DE3851488T patent/DE3851488T2/de not_active Expired - Lifetime
- 1988-06-16 EP EP88109618A patent/EP0301220B1/de not_active Expired - Lifetime
- 1988-06-24 CA CA000570361A patent/CA1303225C/en not_active Expired - Lifetime
- 1988-06-30 BR BR8803228A patent/BR8803228A/pt not_active IP Right Cessation
- 1988-07-15 AU AU19075/88A patent/AU606180B2/en not_active Ceased
- 1988-07-19 AR AR88311454A patent/AR242863A1/es active
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 |