DE3716229C2 - Mikroprozessorchip mit einem Stapelrahmen-Cache - Google Patents

Mikroprozessorchip mit einem Stapelrahmen-Cache

Info

Publication number
DE3716229C2
DE3716229C2 DE3716229A DE3716229A DE3716229C2 DE 3716229 C2 DE3716229 C2 DE 3716229C2 DE 3716229 A DE3716229 A DE 3716229A DE 3716229 A DE3716229 A DE 3716229A DE 3716229 C2 DE3716229 C2 DE 3716229C2
Authority
DE
Germany
Prior art keywords
register
frame
instruction
registers
main memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3716229A
Other languages
English (en)
Other versions
DE3716229A1 (de
Inventor
Glenford J Meyers
Konrad Lai
Michael T Imel
Glenn Hinton
Robert Riches
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE3716229A1 publication Critical patent/DE3716229A1/de
Application granted granted Critical
Publication of DE3716229C2 publication Critical patent/DE3716229C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Die Erfindung bezieht sich auf einen Datenprozessor nach dem Oberbegriff des Anspruchs 1.
Bei der Abarbeitung von Prozessen verwenden Mikroprozessoren interne Register, die spezielle, den Prozessen zugeordnete Daten speichern. Bei einem Wechsel des Prozesses (Aufruf von Prozeduren und Rückkehr) werden Registerinhalte in einen Stapel im RAM gesichert. US-PS 4,435,780 beschreibt ein Mikroprozessorsystem, bei dem für verschiedene Prozesse separate Stapelbereiche verwendet werden.
Rasche Fortschritte in der VLSI-Technologie und in den Konstruktionstechniken haben dazu geführt, daß sich Mikrocomputer nach Leistung und Kompliziertheit einem Super- Minicomputer nähern. Wenn Prozessoren schneller werden, nimmt der Verkehr zwischen dem Prozessor und einem Chip- externen Hauptspeicher zu, was zu einem Leistungsengpaß führt. Bei früheren Systemen wurde dieser Engpaß dadurch entschärft, daß man einen lokalen On-Chip-Speicher (genannt ein Cache bzw. Notizblockspeicher) zur Speicherung häufig verwendeter Speicherdaten benutzte. Wenn sich vom Prozessor benötigte Daten im Cache befinden, so wird ein externer Speicherzugriff überflüssig, da die Daten direkt aus dem Cache abgerufen werden können. Weitere Verringerungen im Speicherverkehr könnten erreicht werden, wenn man das Cache- Design zur Aufnahme von Befehlsabrufen erweitern würde. Wenn beispielsweise Informationen, die sich auf Aufruf- und Rückkehrbefehle (CALL und RETURN) beziehen, lokal auf dem Chip verfügbar wären, so könnten Aufruf- und Rückkehrbefehle ohne Bezug auf den externen Speicher ausgeführt werden. Der sich ergebende verringerte Speicherbusverkehr würde auch die Wahrscheinlichkeit dafür verringern, daß ein Lade- und Speicherbefehl auf die Verfügbarkeit des Speicherbus zu warten hätte.
Der Einrichtung liegt daher die Aufgabe zugrunde, eine Einrichtung zur Minimierung der Hauptspeicherzugriffe zur Verfügung zu stellen, die während des Ausführens von Aufruf/ Rückkehr-Befehlen auftreten.
Diese Aufgabe wird erfindungsgemäß durch einen Daten­ prozessor mit den Merkmalen des Anspruchs 1 gelöst.
Die Erfindung sieht eine Vielzahl von globalen Registern auf dem Datenprozessorchip vor. Eines der globalen Register ist ein Rahmenzeigerregister, das den aktuellen Rahmenzeiger enthält. Die restlichen der globalen Register stehen für einen laufenden Prozeß als Arbeitsspeicher zur Verfügung. Ein Stapelrahmen-Cache-Mechanismus ist vorgesehen, der aus einem Registersatz-Pool mit mehreren Registersätzen besteht, wobei jeder Registersatz aus einer Anzahl von lokalen Registern besteht. Wenn ein Aufrufbefehl decodiert wird, wird ein Registersatz aus dem Registersatz-Pool der auf­ gerufenen Prozedur zugeordnet und das Rahmenzeigerregister initialisiert. Wenn ein Rückkehrbefehl decodiert wird, wird der Registersatz für eine Zuordnung zu einer von einem nachfolgenden Aufrufbefehl aufgerufenen anderen Prozedur freigegeben. Wenn der Registersatz-Pool erschöpft ist, werden die Inhalte eines einer vorhergehenden Prozedur zugeordneten Registersatzes im Hauptspeicher gespeichert, und dieser Registersatz wird der laufenden Prozedur zugeordnet. Die lokalen Register eines einer Prozedur zugeordneten Registersatzes enthalten Programmverbindungsinformationen einschließlich eines Zeigers zum vorhergehenden Rahmen und eines Befehlszeigers, wodurch es möglich wird, daß die meisten Aufruf- und Rückkehrbefehle ohne die Notwendigkeit von Referenzen zu einem externen Speicher ausgeführt werden können.
Die Erfindung hat den Vorteil, daß sie die beim Über­ schreiten von Subroutinengrenzen durchzuführenden Sicherungen und Umspeicherungen von Registern beträchtlich reduziert.
Die Erfindung hat außerdem den Vorteil, daß wegen der Abbildung der lokalen Registersätze in die Stapelrahmen die Verkettungsinformationen, welche normalerweise in Stapelrahmen erscheinen (z. B. Zeiger auf vorhergehenden Rahmen, gesicherter Befehlszeiger), in den lokalen Registern enthalten sind. Dies bedeutet, daß sich die meisten Aufruf- und Rückkehrbefehle ohne Referenzen auf einen externen Speicher ausführen lassen.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert. In der Zeichnung zeigt:
Fig. 1 ein Funktionsblockdiagramm, das die Haupt­ komponenten des Mikroprozessors darstellt, in welchem die Erfindung verwirklicht ist;
Fig. 2 ein Blockdiagramm einer Ausführungsumgebung bei der Ausführung eines Befehls mit dem in Fig. 1 gezeigten System;
Fig. 3 ein Schaubild der Stapelrahmenstruktur innerhalb des aktuellen Linearadreßraums der in Fig. 2 gezeigten Ausführungsumgebung;
Fig. 4 ein Diagramm der Aufrufstapelstruktur innerhalb des aktuellen Linearadreßraums der Ausführungsumgebung gemäß Fig. 2; und
Fig. 5 das Abbilden (mapping) der Registergruppen des Mikroprozessors in den Stapel des Programms im Speicher.
Im folgenden wird auf Fig. 1 Bezug genommen. Der Mikro­ prozessor ist in sieben Haupteinheiten logisch unterteilt: Die Be­ fehlsabrufeinheit 10, den Befehldecodierer 12, den Mikro­ befehlssequenzer bzw. -sortierer 14, einen Übersetzungs-Nach­ schlage-Puffer 18, eine Gleitkommaeinheit 22, den Lokalbus- Sequenzer 20 und die Ausführungseinheit für ganze Zahlen (Integer Execution Unit IEU) 24. Verbindungswege zwischen allen diesen Einheiten werden gebildet durch einen 32-Bit-Datenbus, einen 29-Bit-Mikrobefehlsbus 26 und ein Mikrobefehls-Gültig- Signal 28. Der Mikrobefehlsbus steuert und synchronisiert die Aktivität der autonomen Einheiten. Jede der Einheiten wird weiter unten kurz beschrieben.
Der Befehlsdecodierer (ID) decodiert und steuert die Befehls­ ausführung (Macrocode). Der ID decodiert Befehle, führt Operanden­ adressierung und -abruf aus, verarbeitet Verzweigungsbefehle (d. h. Befehlszeigermanipulation) und gibt entweder Ausfüh­ rungsmikrobefehle (für einfache Befehle) aus oder startet Mikroprogrammabläufe (für komplexe Befehle).
Die Befehlsabrufeinheit (IFU) ruft Befehle aus dem Speicher zur Verwendung durch den ID ab und speichert solche Befehle zwischen. Die IFU hält außerdem sechs Befehlszeiger (instruction pointers) aufrecht, welche Befehle durch die Pipeline verfolgen. Die IFU speichert die zuletzt benutzten Befehlsblöcke zwischen und hält den Befehlsdecodierer mit einem Befehlsstrom versorgt. Sie enthält auch die Befehlszeiger (instruction pointers) und die Operandenreduktionslogik, die vom ID gesteuert wird.
Der Mikrobefehlssequenzer (MIS) ordnet Mikrocodeströme zur Handhabung einer Chipinitialisierung, von Makrobefehlen, die zum direkten Verarbeiten zu komplex sind, und Ausnahme- und Unterbrechungsbedingungen.
Der MIS enthält einen 3K×42-Bit-Mikrocode ROM und eine ordnende Logik für Mikrocodeströme. Die Funktionen, welche der MIS ausführt, umfassen: Holen bzw. Abrufen des nächsten Mikro­ befehls, Mikroprogrammabzweigung, die Verarbeitung von Ausnahme­ bedingungen, die Aufrechterhaltung einer Auswertetafel über die Registerdatei und in Verbindung mit dem ID die Bestimmung von Makrobefehlsgrenzen und die Verfolgung von Ereignissen.
Die Ganzzahl-Ausführungseinheit (IEU) führt die meisten der von dem ID und MIS ausgegebenen Mikrobefehle aus. Sie enthält die für den Programmierer sichtbaren Register, die Arbeitsregister (scratch registers), die vom Mikrocode verwendet werden, die ALU, Trommelverschieber und die zur Ausführung ihrer Befehle benötigte Logik. Die IEU enthält einhundertzwölf 32- Bit-Register, eine 32-Bit-ALU und einen 32-Bit-Trommelverschieber. Sie bildet einen ALU-Beipaßweg, der die Ausführung von ALU-Operationen mit der Frequenz von Eins pro Zyklus ge­ stattet. Sie enthält außerdem eine Einzelport-Registerdatei, die in einem Zyklus zweimal zugreifbar ist, so daß das Ergebnis aus der vorhergehenden Operation in demselben Zyklus gespeichert werden kann, wenn ein neuer Operand für die aktuelle Operation abgerufen wird.
Die Gleitkommaeinheit (FPU) enthält die zur Durchführung der Gleitkommaoperationen (floating point operations) und zum ganzzahligen Multiplizieren und Dividieren benötigte Logik. Die FPU enthält vier Gleitkommaregister, einige Zwischenregister und ein 68-Bit-Schieberregister, das bis zu 16 Bits in jeder Richtung verschieben kann, einen 69-Bit-Mantissenaddierer, einen Signifikantes-Bit-Finder, einen Mantissen-ROM, zwei interne 68-Bit-Datenwege und einen getrennten Exponenten- Datenweg, der einen eigenen 16-Bit-Addierer und Register enthält. Sie führt ganzzahlige Multiplikations- und Divisions- und alle Gleitkommaoperationen einschließlich der cordischen Algorithmen für die transzendenten Befehle aus.
Der Übersetzungs-Nachschlage-Puffer (TLB, Translation Lookaside Buffer) führt die zum Implementieren virtueller Speichermechanismen benötigte Adreßübersetzung aus. Der TLB führt die Adreßübersetzung und den Speicherschutz unter Verwendung einer Assoziativtabelle von Speicherdeskriptoren und Seitentabellen­ einträgen aus. Er enthält einen 48-Eintrag-Adressen-Cache, einen 6-Bit-Adreßaddierer und Speicherschutz-Prüfhardware. Jeder Eintrag im Adreßcache enthält 27 CAM-Bits und 38 RAM-Bits. Der TLB unterstützt einige Adreßübersetzungsmechanismen, um dem Benutzer die Möglichkeit zu geben, die Art des Speicherschutzes aus verschiedenen konventionellen Mechanismen (Seitenwechsel oder Segmentierung) auszuwählen.
Der Lokalbus-Sequenzer ordnet externe Buszugriffe in einer Pipeline an. Der Lokalbus-Sequenzer enthält die Schnittstellen­ hardware zum externen lokalen Bus, verwaltet das Busprotokoll und beobachtet externe Ereignisse (z. B. Unterbrechungen, Initiali­ sierung bzw. Anlauf). Er enthält einen abgehenden 33 Bit breiten Adreß- und Daten-FIFO, einen eingehenden 33-Bit-Daten-FIFO und einen Sequenzer. Der abgehende FIFO ermöglicht es, bis zu drei Anforderungen im Lokalbus-Sequenzer in eine Warteschlange einzureihen, so daß der Rest des Prozessors mit der Ausführung fortfahren kann, unabhängig von der Speicherzugriffswartezeit. Die Eingabe-FIFO-Puffer lesen Daten, die aus einem externen Speicher zurückkehren, bis ein freier Zyklus zum Übertragen der Daten zu ihrem Bestimmungsort verfügbar ist.
Eine Mehrzahl von globalen Registern 21 ist vorgesehen. Eines der globalen Register ist ein Rahmenzeigerregister, das den aktuellen Rahmenzeiger enthält, und der Rest der globalen Register steht für einen aktuellen Prozeß als Universalregister zur Verfügung. Ein Register-(Stapelrahmen-)Cache 23 enthält einen Registersatz-Pool aus einer Vielzahl von Registersätzen, von denen jede aus einer Anzahl von lokalen Registern besteht. Wenn ein Aufrufbefehl (CALL) decodiert wird, wird ein Regi­ stersatz aus dem Registersatz-Pool der aufgerufenen Prozedur zugeordnet, und das Rahmenzeigerregister wird initialisiert. Wenn ein Rückkehrbefehl (RETURN) decodiert wird, wird der Regi­ stersatz für die Zuordnung zu einer anderen, von einem nach­ folgenden Aufrufbefehl aufgerufenen Prozedur freigegeben. Wenn der Registersatz-Pool erschöpft ist, werden die Inhalte eines einer vorhergehenden Prozedur zugeordneten Registersatzes im Hauptspeicher sichergestellt und dieser Registersatz der laufenden Prozedur zugeordnet. Die lokalen Register eines einer Prozedur zugeordneten Register­ satzes enthalten Verknüpfungsinformationen einschließlich eines Zeigers auf den vorhergehenden Rahmen und eines Befehls­ zeigers, so daß sie die Ausführung der meisten Aufruf- und Rückkehrbefehle ohne Bedarf an Bezugnahmen auf einen externen Speicher ermöglichen.
Befehlssatz
Ein Prozeß sieht einen flachen linearen Adreßraum, adressiert mit 32-Bit-Ordinalen, aus dem er Daten, Befehle und Stapelraum zuweist. Ein Rufbefehl erzeugt einen neuen Stapelrahmen (Aktivierungsatz) auf einem sequentiell zugeordneten Stapel.
Der Befehlssatz des Mikroprozessors ist ähnlich aufgebaut wie diejenigen von RISC (reduzierter Befehlssatz-Computer-)Maschinen. Alle Befehle haben eine Länge von 32 Bits und müssen an Wortgrenzen ausgerichtet sein, und nur Lade-, Speichere- und Verzweige-Befehle greifen auf den Speicher zu (alle anderen greifen auf Register zu).
Im folgenden wird auf Fig. 2 Bezug genommen, welche die Um­ gebung bei der Ausführung zeigt. Die Ausführungsumgebung besteht aus einem 2**32 Byte Linearadreßraum 30 und sechsunddreißig Registern. Von den sechsunddreißig Registern sind sechzehn 32-Bit- Globalregister 32, sechzehn sind 32-Bit-Lokalregister 34 und die restlichen vier sind 80-Bit-Gleitkommaregister 36. Die Lokalregister sind einem als Stapelrahmencache bekannten Mechanismus zugeordnet. Wenn eine Prozedur aufgerufen wird, werden die Lokalregister eines neuen Satzes aus einem Registerpool auf dem Chip zugeordnet, und von einer Prozedurrückkehr werden sie frei gemacht. Das beschriebene Ausführungs­ beispiel der Erfindung sieht vier Sätze 64 von lokalen Registern auf dem Chip vor, jedoch ist diese Zahl für den Programmierer unsichtbar.
Das Registermodell besteht aus 16 globalen Registern und 4 Gleitkommaregistern, die über die Prozedurgrenzen erhalten werden, und Mehrfachsätzen von 16 lokalen (oder Rahmen-)Registern, die in jeden Stapelrahmen assoziativ abgebildet (mapped) werden.
Zu jedem Zeitpunkt kann ein Befehl sechsunddreißig dieser Register wie folgt adressieren:
Registertyp
Registername
Globales Register|G0 . . . G15
Gleitkommaregister FP0 . . . FP13
(Gleitkommaoperand) @ Lokales Register L0 . . . L15
Zu jedem Zeitpunkt kann man zweiunddreißig 32-Bit-Register und vier 80-Bit-Gleitkommaregister adressieren (die 32 Register können auch zum Halten von Gleitkommawerten verwendet werden). Von den 32 Registern sind 16 globale Register und 16 lokale Register. Der Unterschied liegt darin, daß die 16 globalen Register unbeeinträchtigt sind, wenn Prozedurgrenzen überquert werden (d. h. sie verhalten sich ähnlich "normalen" Registern in anderen Prozessoren); lokale Register werden von Aufruf- und Rückkehrbefehlen beeinflußt.
Wenn ein Rufbefehl ausgeführt wird, ordnet der Prozessor der aufgerufenen Prozedur einen neuen Satz von 16 lokalen Registern aus einem On-Chip-Pool von vier Registersätzen zu. Wenn der Vier-Satz-Pool des Prozessors erschöpft ist, ordnet der Prozessor automatisch einen Registersatz neu zu, indem ein einer früheren Prozedur zugeordneter Satz genommen und dessen Inhalt im Speicher sichergestellt wird. Der Inhalt des Registersatzes der früheren Prozedur wird in den ersten 16 Worten des Stapel­ rahmens dieser Prozedur im Speicher sichergestellt. Aus diesem Grunde wird der Mechanismus als Stapelrahmencache bezeichnet. Der Rückkehrbefehl setzt den aktuellen lokalen Registersatz frei (zur Verwendung durch einen nachfolgenden Ruf oder Aufruf).
Es gibt sechzehn globale Register 32, die einem Prozeß zu­ geordnet sind. Sie werden im Prozeßsteuerblock sichergestellt, wenn der Prozeß nicht ausgeführt wird. Globale Register werden nicht in den Prozeßsteuerblock assoziativ abgebildet.
Von den sechzehn 32-Bit-Registern enthält G15 den aktuellen Rahmenzeiger (FP - frame pointer) und G0 . . . G14 sind Vielzweckregister. Der FP enthält die lineare Adresse (Zeiger) in die aktuelle Ausführungs­ umgebung für den aktuellen (obersten) Stapelrahmen. Da Stapelrahmen auf 64-Byte-Grenzen ausgerichtet sind, werden die sechs Bits niedriger Ordnung von FP ignoriert und stets als Null interpretiert. Dieses Register wird auf Ruf initialisiert und auf Rückantwort (returns) erneuert.
Eine Referenz auf ein Register als ein Operand, der größer als 32 Bits ist, verwendet die Register mit aufeinanderfolgend höheren Registernummern.
Gleitkommaregister
Es gibt vier Gleitkommaregister (34), die einem Prozeß zu­ geordnet sind. Sie werden in dem Prozeßsteuerblock sichergestellt, wenn der Prozeß nicht ausgeführt wird. Gleitkommaregister sind nicht assoziativ in den Prozeßsteuerblock abgebildet.
Gleitkommazahlen werden im erweiterten Realformat in den Gleitkommaregistern gespeichert. Auf Gleitkommaregister wird nur als auf Operanden von Gleitkommabefehlen zugegriffen (jedoch können solche Befehle auch die lokalen und globalen 32-Bit-Register benutzen).
Arithmetische Steuerung
Die arithmetischen Steuerungen 36 dienen zur Steuerung der arithmetischen und Fehlereigenschaften (faulting properties) der numerischen Befehle sowie zur Speicherung der Bedingungscodes. Wenn ein Prozeß suspendiert wird, werden die arithmetischen Steuerinformationen im Prozeßsteuerblock sichergestellt.
Befehlszeiger
Der Befehlszeiger 38 ist eine lineare Adresse (Zeiger) in den aktuellen linearen Adreßraum auf das erste Byte des aktuellen Befehls. Da Befehle an Wort-(4-Byte-)Grenzen beginnen müssen, werden die beiden niedrigen Bits des IP ignoriert und als Null unterstellt.
Lokale (oder Rahmen-)Register
Im folgenden wird auf Fig. 3 Bezug genommen. Register L0 . . . L15, die lokalen Register, bezeichnen nicht Register der konventionellen Art; sie bezeichnen die ersten sechzehn Worte des aktuellen bzw. laufenden Rahmens. Daher wird Register L0 in Linearadresse FP+0 bis FP+3, Register Li in Linearadresse FP+4i bis FP+4i+3 abgebildet usw.
Ein Cache aus mehreren Stapelrahmen wird vorgesehen. Es gibt mehrere Bänke von Hochgeschwindigkeitsregistern, eine Bank pro Prozeduraktivierung. Das Programm braucht Register nicht explizit sicherzustellen und wiederzugewinnen.
Stapelrahmen
Der Stapelrahmen, gezeigt in Fig. 3, ist ein zusammenhängender Abschnitt des aktuellen linearen Adreßraums, der Daten in stapelähnlicher Weise enthält. Es gibt einen Stapelrahmen pro aktivierter Prozedur, der lokale Variable, Parameter und Ver­ kettungsinformationen enthält. Eine Aufrufoperation eignet sich einen neuen Stapelrahmen an. Eine Rückkehroperation gibt ihn frei. Wenn ein neuer Rahmen angenommen wird, wird er auf einer 64-Byte-Grenze ausgerichtet.
Die Felder im Stapelrahmen gemäß Fig. 3 sind wie folgt definiert:
Auffüllungsgebiet. Dieses Gebiet 42 wird zum Ausrichten des FP auf die nächste 64-Byte-Grenze benutzt. Die Größe dieses Gebiets ändert sich von 0 bis 63 Bytes. Wenn eine Aufrufoperation durchgeführt wird, wird ein Auffüllungsgebiet hinzugefügt, um den SP des Rufers auf die nächste 64-Byte-Grenze zur Bildung des FP für diesen Rahmen aufzurunden. Wenn der SP des Rufers bereits ausgerichtet ist, fehlt das Auffüllgebiet.
Rahmenstatus (L0). Der Rahmenstatus 42 zeichnet die dem Rahmen nach einem Aufruf zugeordnete Information auf, damit sie bei einer Rückkehr aus dem Rahmen benutzt werden. Die Felder eines Rahmenstatus sind wie folgt definiert:
Überwachungsfreigabe T (Bit 0). In einem Organisationspro­ grammaufruf registriert dieses Bit das Überwachungsaktivierungsbit zum Zeitpunkt des Aufrufs. Bei der Rückkehr wird dieses Bit zum Wiedergewinnen des Überwachungsaktivierungsbits des Aufrufers in dem Prozeß verwendet, wenn der Ausführungsmodus des Rückkehrrahmens Organisationsprogramm ist.
Rückkehrstatus, RRR (Bits 1-3). Dieses 3-Bit-Feld registriert den bei der Erzeugung dieses Rahmens verwendeten Aufrufmechanismus und dient zur Auswahl des Rückkehrmechanismus, der bei der Rückkehr benutzt wird. Die Codierungen dieses Feldes sind wie folgt:
000 Lokal
001 Organisationsprogramm bzw. Überwachung
010 Unterbrechung
011 Nicht-Subsystem-Fehler
100 Subsystem
101 Reserviert
110 Ruhe/Gestoppte Unterbrechung
111 Reserviert
Rückkehrvorüberwachung R (Bit 4). Wenn das Rückkehrvorüber­ wachungsbit bei einer Rückkehr aus einem Rahmen 1 ist, erscheint ein Rückkehrvorüberwachungsereignis (bei Aktivierung), bevor eine Aktionsassoziation mit der Rückkehroperation durchgeführt wird. Dieses Bit wird bei einem Aufruf auf Null initialisiert.
Vorhergehender Rahmenzeiger PFP (Bit 6-31). Eine Linear­ adresse 42 zum ersten Byte des vorherigen Rahmens. Da Rahmen auf 64-Byte-Grenzen ausgerichtet sind, werden nur die am höchsten bewerteten 26-Bits des FP sichergestellt. Wenn der Rückkehrstatus einen Subsystemtransfer anzeigt, enthält dieses Feld die am höchsten bewerteten 26 Bits der Linearadresse des obersten (letzten) Rahmens im Aufrufstapel vor dem Aufruf. Anderenfalls ist der oberste Rahmen der Aufrufrahmen.
Während eines Aufrufs werden die unteren fünf Bits des Rahmen­ status wie folgt initialisiert:
T ist der Wert des oben definierten Überwachungsbits. "-" zeigt ein reserviertes Bit an, während "x" ein unbeachtliches Bit angibt.
Bei allen Rücksprüngen (returns) werden die Bits wie folgt interpretiert:
Stapelzeiger SP (L1). Eine lineare Adresse 44 zum ersten freien Byte des Stapels, d. h. die Adresse des letzten Bytes im Stapel+Eins. SP wird durch die Aufrufoperation initialisiert, auf FP plus 64 hinzuweisen.
Rückkehr (Rücksprung)-Befehlszeiger RIP (L2). Wenn eine Auf­ rufoperation an einem neuen Rahmen durchgeführt wird, wird der Rückkehr- bzw. Rücksprung-IP 46 hier sichergestellt. Wenn der Prozeß suspendiert ist, wird der Befehlszeiger des nächsten Befehls hier gespeichert. Er enthält eine 32-Bitlinearadresse, zu der die Steuerung nach Rückkehr zu diesem Rahmen zurückkehrt.
Ein Prozeßaufruf stellt den IP in einem Register des aktuellen Rahmens sicher. Da Implizitprozeduraufrufe auftreten können (aufgrund von Fehlern und Unterbrechungen), verwenden Programme dieses Register nicht für andere Zwecke.
Der Stapel wächst (Fig. 4) von niedrigen Adressen zu hohen Adressen.
Fig. 5 zeigt die Abbildung der Mikroprozessor-Registersätze in die Programmstapel im Speicher.
Die Seite oder ein einfaches Objekt, in die die ersten 64 Bytes eines Rahmens abgebildet werden, müssen von lokaler Lebensdauer sein. Die Lebensdauer (liefetime) der Seite oder eines einfachen Objekts wird während eines Aufrufs geprüft. Diese Beschränkung ist notwendig, um eine effiziente Manipulation von AD′s in den lokalen Registern sicherzustellen.
Lineare Adreßraumstruktur
Wie in Fig. 2 gezeigt ist, definiert jede Ausführungsumgebung einen 32-Bit-Linearadreßraum. Der Linearadreßraum ist in vier Zonen unterteilt. Die ersten drei Zonen einer Ausführungsumgebung sind für den aktuellen Prozeß spezifisch (d. h. definiert durch den Prozeß-Steuerblock). Die Zusammensetzung der Prozeß- spezifischen Zonen kann durch einen Subsystemaufruf/Rücksprung geändert werden. Die vierte Zone einer Ausführungsumgebung (execution environment) wird von allen Prozessen geteilt (d. h. definiert vom Prozessor-Steuerblock). Beschränkungen dergestalt, wo Befehle, Stapelrahmen oder Daten im Linear­ adreßraum angeordnet sind, gibt es nicht.
Lokaler Prozedurmechanismus
Eine Prozedur beginnt an einer beliebigen Wortadresse in einem Linearadreßraum. Prozeduraufrufe und Rücksprünge verwenden einen Stapel im Linearadreßraum.
Befehle
Aufruf
Aufruf-erweitert.
Die Befehle Aufruf und Aufruf-erweitert rufen die Prozedur an der angegebenen Adresse auf. Aufruf spezifiziert die Prozedur als IP plus einer 24-Bit-Verschiebung. Aufruf-erweitert spezi­ fiziert die Prozedur unter Verwendung einer generellen speicher­ wirksamen Adresse. Aufruf-erweitert enthält auch einen Operanden, der im neuen Rahmen AP wird.
Ein neuer Stapelrahmen wird während der Aufrufoperation zu­ geordnet und der Steuerfluß wird zu den spezifizierten Prozeduren übertragen. Die Ausführungsumgebung bleibt ungeändert.
Rückkehr bzw. Rücksprung
Der Rückkehrbefehl überträgt die Steuerung zurück zu der Adreß­ umgebung der aufrufenden Prozedur und gibt den Stapelrahmen der aufgerufenen Prozedur frei. Die Befehlsausführung wird an dem von dem RIP im Rahmen der aufrufenden Prozedur bezeichneten Befehl fortgesetzt.
Modifiziere-AC
Setze-Adresse-um
Modifiziere-AC wird zum Lesen oder Modifizieren der aktuellen arithmetischen Steuerungen verwendet. Da die Bereichs-AD′s nicht direkt zugreifbar sind, kann der Setze-Adresse-um-Befehl zum Umsetzen einer Linearadresse in eine virtuelle Adresse verwendet werden.
Prozeßmanagement
Ein Softwareprozeß oder eine Task wird von einem Prozeß- Steuerblock dargestellt. Zwei Mittel sind für die Steuerung der Prozeßvermittlung bzw. -schaltung (process switching) vorgesehen. Eines ist über zwei Befehle (Sichere-Prozeß und Wiederaufnahme-des-Prozesses), die es einem Betriebssystem ermöglicht, Prozesse explizit umzuschalten. Ein anderes ist eine Prozeßdispositions- und Abfertigungsfunktion auf Prioritätsbasis, die in den Prozessor eingebaut ist. Unter Verwendung des zuletzt genannten Mechanismus wählt der Prozessor automatisch Prozesse aus einer Warteschlage im Speicher aus.
Der Prozessor verfolgt die kumulative Ausführungszeit jedes Prozesses und liefert auch ein optimales Zeitscheibenmanagement. Bei letzterem erzeugt der Prozessor einen Fehler oder reiht den Prozeß in die Schlange von verfügbaren Prozessen ein und wählt einen anderen Prozeß aus, wenn ein Prozeß länger als eine vorgegebene Zeit läuft.
Wenn eine automatische Prozeßauswahl verwendet wird, ist ein Satz von Zwischenprozeß-Kommunikationsbefehlen vorgesehen, die den normalerweise in Software- Betriebssystem-Kernels vorgesehenen Dienstleistungen ähnlich sind. Sie unterstützen die Nachrichtenverbindung unter Prozessen.
Überwachung und ICE-Unterstützung
Software-Austestung und -Überwachung geschieht mittels eines Überwachungssteuerungsregisters, das Bestand jedes Prozesses ist. Die Überwachungssteuerungen ermöglichen die Ermittlung irgendeiner Kombination der folgenden Ereignisse:
Befehlsausführung (d. h. Einzelschritte)
Ausführung eines genommenen Verzweigungsbefehls
Ausführung eines Aufrufbefehls
Ausführung eines Rücksprungbefehls
Feststellung, daß der nächste Befehl ein Rücksprungbefehl ist
Ausführung eines Organisationsprogramm- oder Subsystemaufrufs
Unterbrechungspunkt (Hardware-Unterbrechungspunkt oder Ausführung eines Unterbrechungspunktbefehls)
Wenn ein Überwachungsereignis festgestellt wird, erzeugt der Prozessor einen Überwachungsfehler, um eine Steuerung an einen Software-Austester oder Monitor zu geben. Der Prozessor enthält zwei Befehlsunterbrechungspunktregister, in die ein Austester die Adressen von zwei Befehlen eingeben kann.
Externer Bus
Der Bus des Mikroprozessors ist ein 32-Bit-Multiplex-Bus mit Burst-Übertragungsfähigkeit. Der Burst-Übertragungsmechanismus (der die Übertragung mehrerer Worte in aufeinanderfolgenden Zyklen ermöglicht), läßt den Bus der Definition eines Multiplex-Bus gerecht werden. Bündelübertragungen können für 1, 2, 3 oder 4 Worte stattfinden. Während des Adreßzyklus gibt der Prozessor die Zahl von Worten in der Anforderung in den beiden Adreßbits niedriger Ordnung an. Wenn der Prozessor beispielsweise vier Worte zu lesen wünscht, ist die Busoperation so lange nicht beendet, bis vier READY′s aufgenommen sind. Bündelübertragungsoperationen werden häufig von dem Prozessor für Befehlscache-Auffüllungen, Stapelrahmen-Cache-Sicherstellungen und -Erneuerungen, Multiwortaufladungen und Speicherungen, Stringoperationen od. dgl. verwendet.
Der Mikroprozessor arbeitet stark zeitverschachtelt. Es gibt normalerweise fünf Befehle in verschiedenen Ausführungsstufen in der Pipeline zu jedem Augenblick. In einem vorgegebenen Zyklus wird der Befehlshinweis auf Befehl n+4 berechnet, Befehl n+3 wird aus dem Befehlshinweis gelesen, Befehl n+2 wird decodiert und an den Mikrobefehlsbus ausgegeben, Befehl n+1 wird ausgeführt, und das Ergebnis des Befehls n wird in die Registerdatei gespeichert.

Claims (3)

1. In integrierter Schaltungstechnik auf einem Chip ge­ fertigter Datenprozessor mit einer Befehlsausführungseinheit (24),
wobei der Datenprozessor über einen Hauptspeicherbus mit einem externen Hauptspeicher koppelbar ist, wobei in dem Hauptspeicher Programmbefehle eines ersten Prozesses und Programmbefehle eines zweiten Prozesses gespeichert werden können, wobei die Befehle des ersten Prozesses wenigstens einen Aufruf-Befehl zum Aufrufen des zweiten Prozesses enthalten,
wobei der Datenprozessor wenigstens einen Registersatz aufweist, dessen Inhalte in einem Rahmen eines als Stapelspeicher organisierten Hauptspeicherbereichs gesichert werden können,
dadurch gekennzeichnet,
daß der Datenprozessor eine Mehrzahl globaler Register (21; G0-G15) aufweist, wobei eines (G15) der globalen Register ein Rahmenzeigerregister ist, das einen Rahmenzeiger enthält, welcher auf einen einem auf dem Prozessor ablaufenden aktuellen Prozeß entsprechenden aktuellen Rahmen zeigt, und wobei die restlichen globalen Register für den aktuellen Prozeß verfügbare allgemeine Register sind;
daß der Datenprozessor einen Stapelrahmen-Cache-Speicher (23) mit einem aus einer Mehrzahl von Registersätzen gebildeten Registersatz-Pool aufweist, wobei jeder Registersatz aus einer Anzahl lokaler Register (L0-L15) besteht;
daß Adreßübersetzungsmittel (18, 24) mit dem Stapelrahmen- Cache-Speicher (23) zum Abbilden der lokalen Register auf entsprechende Rahmen im Adreßraum des Hauptspeichers verbunden sind;
daß die lokalen Register (L0-L15) jedes Registersatzes Speicherplatz zum Speichern von Verknüpfungsinformationen aufweisen, wobei die Verknüpfungsinformationen einen Vorher­ gehender-Rahmen-Zeiger (PFP; 42; L0), welcher die Adresse des Hauptspeicherplatzes des letzten zuvor aktivierten Rahmens enthält, und einen Rückkehrbefehlszeiger (RIP; 46; L2) einschließen, welcher den Befehlszeiger des nächstfolgenden Befehls in dem Befehlsstrom des Prozesses enthält, der den Rahmen erschaffen hat, mit welchem der Registersatz korrespondiert;
daß ein interner Bus in dem Datenprozessor den Stapelrahmen- Cache-Speicher (23), die globalen Register (21) und die Befehlsausführungseinheit (24) miteinander verbindet, wobei die globalen Register (21) und die lokalen Register des Stapelrahmen-Cache-Speichers (23) über den internen Bus mittels in der Befehlsausführungseinheit (24) ausgeführter Mikrobefehle adressierbar sind;
daß ein Befehlsdecodierer (12) mit der Befehlsausführungs­ einheit (24) verbunden ist; und
daß eine Steuereinrichtung (14) mit dem Befehlsdecodierer (12) gekoppelt ist und bei einer Decodierung eines Aufruf-Befehls des ersten Prozesses durch den Befehlsdecodierer (12) derart aktiviert wird, daß sie dem zweiten Prozeß einen zweiten Registersatz der lokalen Register aus dem Registersatz-Pool in dem Stapelrahmen-Cache-Speicher (23) zuweist und daß sie einen aktuellen Rahmenzeiger, welcher auf den zweiten Registersatz zeigt, in das Rahmen­ zeigerregister (G15) einsetzt,
wobei die Steuereinrichtung (14) Mittel zum Übertragen der Inhalte eines früher zugewiesenen Registersatzes, der zuvor einen früher aktivierten Prozeß zugewiesen wurde, über den Hauptspeicherbus zum Hauptspeicher und Mittel zum Neuzuweisen des früher zugewiesenen Registersatzes zum aktuellen Prozeß durch Einsetzen des auf den früher zugewiesenen Registersatzes hinzeigenden Rahmenzeigers in das Rahmenzeiger­ register (G15) aufweist.
2. Datenprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Steuereinrichtung (14) eine Einrichtung aufweist, die beim Decodieren eines Rückkehrbefehls in dem Befehlsstrom des zweiten Prozesses derart aktiviert wird, daß sie die Inhalte des dem zweiten Prozeß zugewiesenen zweiten Registersatzes aus dem Registersatz-Pool über den Hauptspeicherbus zu dem Hauptspeicher überträgt und dem in dem zweiten Registersatz gespeicherten vorhergehenden Rahmenzeiger in das Rahmenzeigerregister (G15) einsetzt, wobei der in dem zweiten Registersatz gespeicherte vorhergehende Rahmenzeiger auf den ersten der Registersätze hinzeigt.
3. Datenprozessor nach Anspruch 1, dadurch gekennzeichnet, daß der vorhergehende Rahmenzeiger Bits enthält, die eine lineare Adresse des ersten Bytes des vorhergehenden Rahmens enthalten.
DE3716229A 1986-05-16 1987-05-14 Mikroprozessorchip mit einem Stapelrahmen-Cache Expired - Fee Related DE3716229C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/863,878 US4811208A (en) 1986-05-16 1986-05-16 Stack frame cache on a microprocessor chip

Publications (2)

Publication Number Publication Date
DE3716229A1 DE3716229A1 (de) 1987-11-19
DE3716229C2 true DE3716229C2 (de) 1996-08-14

Family

ID=25341994

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3716229A Expired - Fee Related DE3716229C2 (de) 1986-05-16 1987-05-14 Mikroprozessorchip mit einem Stapelrahmen-Cache

Country Status (9)

Country Link
US (1) US4811208A (de)
JP (1) JP2612168B2 (de)
KR (1) KR870011524A (de)
CN (1) CN1009592B (de)
DE (1) DE3716229C2 (de)
FR (1) FR2598835B1 (de)
GB (1) GB2190521B (de)
HK (1) HK57590A (de)
SG (1) SG34990G (de)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043870A (en) * 1982-02-24 1991-08-27 At&T Bell Laboratories Computer with automatic mapping of memory contents into machine registers during program execution
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS63259727A (ja) * 1987-04-17 1988-10-26 Hitachi Ltd コプロセツサのインタ−フエイス方式
JP2982875B2 (ja) * 1987-12-28 1999-11-29 株式会社日立製作所 スレーブ制御装置
ATE109910T1 (de) * 1988-01-20 1994-08-15 Advanced Micro Devices Inc Organisation eines integrierten cachespeichers zur flexiblen anwendung zur unterstützung von multiprozessor-operationen.
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
US5101344A (en) * 1988-01-28 1992-03-31 Motorola, Inc. Data processor having split level control store
US5220669A (en) * 1988-02-10 1993-06-15 International Business Machines Corporation Linkage mechanism for program isolation
US4905188A (en) * 1988-02-22 1990-02-27 International Business Machines Corporation Functional cache memory chip architecture for improved cache access
US5210874A (en) * 1988-03-22 1993-05-11 Digital Equipment Corporation Cross-domain call system in a capability based digital data processing system
GB2254714B (en) * 1988-03-22 1992-12-23 Digital Equipment Corp Cross-domain call system in a capability based digital data processing system
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5185694A (en) * 1989-06-26 1993-02-09 Motorola, Inc. Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
JPH0353328A (ja) * 1989-07-20 1991-03-07 Hitachi Ltd レジスタ退避回復方法ならびに処理装置
US5179681A (en) * 1989-11-16 1993-01-12 Sun Microsystems, Inc. Method and apparatus for current window cache with switchable address and out cache registers
GB2239334B (en) * 1989-12-22 1994-07-06 Intel Corp Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
US5075848A (en) * 1989-12-22 1991-12-24 Intel Corporation Object lifetime control in an object-oriented memory protection mechanism
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5157777A (en) * 1989-12-22 1992-10-20 Intel Corporation Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
US5093917A (en) * 1990-01-17 1992-03-03 Ag Communication Systems Corporation Method for passing data parameters between a calling program and a called subroutine in a command analysis table of a computer stored data base system
DE69130233T2 (de) * 1990-03-15 1999-05-20 Sun Microsystems Inc Verfahren und gerät um ein sperrungscache einzusetzen
US5179682A (en) * 1990-05-15 1993-01-12 Sun Microsystems, Inc. Method and apparatus for improved current window cache with switchable address in, out, and local cache registers
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
DE69231762T2 (de) * 1991-07-08 2001-07-26 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JPH0831041B2 (ja) * 1991-09-06 1996-03-27 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラム条件処理方法およびコンピュータ・システム
US5448707A (en) * 1991-10-29 1995-09-05 Intel Corporation Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) * 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5491793A (en) * 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
DE69320991T2 (de) 1992-12-31 1999-01-28 Seiko Epson Corp System und verfahren zur änderung der namen von registern
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
US5893148A (en) * 1994-03-03 1999-04-06 International Business Machines Corporation System and method for allocating cache memory storage space
US6151661A (en) * 1994-03-03 2000-11-21 International Business Machines Corporation Cache memory storage space management system and method
EP0676691A3 (de) * 1994-04-06 1996-12-11 Hewlett Packard Co Vorrichtung zur Registersicherstellung und Umspeicherung in einem digitalen Rechner.
US5636362A (en) * 1994-09-28 1997-06-03 Intel Corporation Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority
US5564111A (en) * 1994-09-30 1996-10-08 Intel Corporation Method and apparatus for implementing a non-blocking translation lookaside buffer
US5532947A (en) * 1995-01-25 1996-07-02 International Business Machines Corporation Combined decoder/adder circuit which provides improved access speed to a cache
ATE241170T1 (de) * 1995-10-06 2003-06-15 Patriot Scient Corp Architektur für einen risc-mikroprozessor
JP3801643B2 (ja) * 1996-01-24 2006-07-26 サン・マイクロシステムズ・インコーポレイテッド スタックを用いる演算マシンのための命令フォールディング処理
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
US6289418B1 (en) 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US6167488A (en) * 1997-03-31 2000-12-26 Sun Microsystems, Inc. Stack caching circuit with overflow/underflow unit
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
US6092152A (en) * 1997-06-23 2000-07-18 Sun Microsystems, Inc. Method for stack-caching method frames
US6067602A (en) * 1997-06-23 2000-05-23 Sun Microsystems, Inc. Multi-stack-caching memory architecture
US6058457A (en) * 1997-06-23 2000-05-02 Sun Microsystems, Inc. Method for storing method frames in multiple stacks
US5930158A (en) * 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
US6275903B1 (en) 1998-04-22 2001-08-14 Sun Microsystems, Inc. Stack cache miss handling
US6170050B1 (en) 1998-04-22 2001-01-02 Sun Microsystems, Inc. Length decoder for variable length data
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
US6237086B1 (en) 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
WO2003054699A2 (de) * 2001-12-21 2003-07-03 Micronas Gmbh Verfahren und vorrichtung zum verwalten von ressourcen für eine rechnereinrichtung
JP4837247B2 (ja) * 2003-09-24 2011-12-14 パナソニック株式会社 プロセッサ
US9323571B2 (en) * 2004-02-06 2016-04-26 Intel Corporation Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7840845B2 (en) * 2005-02-18 2010-11-23 Intel Corporation Method and system for setting a breakpoint
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
JP4617210B2 (ja) * 2005-07-13 2011-01-19 日立ビアメカニクス株式会社 描画装置及びそれを搭載した露光装置
US8429634B2 (en) * 2006-07-26 2013-04-23 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit
JP2008065734A (ja) * 2006-09-11 2008-03-21 Meidensha Corp レジスタファイルの書き込み/読み出し方式
CN101216756B (zh) * 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法
US9501285B2 (en) * 2010-05-27 2016-11-22 International Business Machines Corporation Register allocation to threads
KR20200077287A (ko) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1426273A (en) * 1973-04-13 1976-02-25 Int Computers Ltd Data processing
JPS5474651A (en) * 1977-11-28 1979-06-14 Toshiba Corp Stack control system
JPS5576448A (en) * 1978-12-05 1980-06-09 Nippon Telegr & Teleph Corp <Ntt> Multi-group register control system
JPS57143643A (en) * 1981-03-03 1982-09-04 Toshiba Corp Data processing device
JPS57162031A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Address stack control system
US4435780A (en) * 1981-06-16 1984-03-06 International Business Machines Corporation Separate stack areas for plural processes
JPS5814253A (ja) * 1981-07-17 1983-01-27 Nec Corp 中央処理装置の割込方式
JPS5843043A (ja) * 1981-09-08 1983-03-12 Oki Electric Ind Co Ltd デ−タ処理装置の呼び出し命令方式
US4516203A (en) * 1981-09-11 1985-05-07 Data General Corporation Improved apparatus for encaching data whose value does not change during execution of an instruction sequence
US4445173A (en) * 1981-09-11 1984-04-24 Data General Corporation Improved system for saving and restoring state in call and return operations
EP0075632A1 (de) * 1981-09-30 1983-04-06 BURROUGHS CORPORATION (a Michigan corporation) Mikroprogrammiertes digitales Datenverarbeitungssystem mit Aufgabensteuerung auf der Mikroinstruktionsstufe
EP0075633B1 (de) * 1981-09-30 1987-09-09 Unisys Corporation Registerzuordnungsanordnung
JPS5875250A (ja) * 1981-10-29 1983-05-06 Toshiba Corp デジタル情報処理装置
US4530049A (en) * 1982-02-11 1985-07-16 At&T Bell Laboratories Stack cache with fixed size stack frames
CA1187200A (en) * 1982-02-24 1985-05-14 David R. Ditzel Computer with automatic mapping of memory contents into machine registers
US4652996A (en) * 1982-09-27 1987-03-24 Data General Corporation Encachment apparatus using multiple frames and responding to a key to obtain data therefrom
JPS616747A (ja) * 1984-06-21 1986-01-13 Matsushita Electric Ind Co Ltd メモリ装置

Also Published As

Publication number Publication date
HK57590A (en) 1990-08-10
JP2612168B2 (ja) 1997-05-21
CN1009592B (zh) 1990-09-12
GB2190521A (en) 1987-11-18
SG34990G (en) 1990-09-07
US4811208A (en) 1989-03-07
GB2190521B (en) 1990-01-10
FR2598835B1 (fr) 1993-09-03
GB8628175D0 (en) 1986-12-31
KR870011524A (ko) 1987-12-24
DE3716229A1 (de) 1987-11-19
CN87100507A (zh) 1987-11-25
FR2598835A1 (fr) 1987-11-20
JPS62286128A (ja) 1987-12-12

Similar Documents

Publication Publication Date Title
DE3716229C2 (de) Mikroprozessorchip mit einem Stapelrahmen-Cache
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE3850181T2 (de) Logische Betriebsmittelaufteilung für ein Datenverarbeitungssystem.
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE60006270T2 (de) Parallele prozessorarchitektur
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE69127726T2 (de) Kombinierte Warteschlange für Entwertungen und Rücklaufdaten in einem Multiprozessorsystem
DE3280446T2 (de) Digitales Datenverarbeitungssystem.
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE3587039T2 (de) Computer mit virtuellem maschinenmodus und mehrfachen schutzringen.
DE3586359T2 (de) System und verfahren zum durchfuehren von ein-/ausgabeoperationen fuer ein virtuelles system.
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE2517276A1 (de) Datenverarbeitungssystem
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE68921775T2 (de) Prozessorssimulation.
DE3127349C2 (de)
DE112006000807B4 (de) Verwaltung von Sequenzer-Adressen
DE69433124T2 (de) Befehlsspeicher mit assoziativem Kreuzschienenschalter
DE69127936T2 (de) Busprotokoll für Prozessor mit write-back cache
DE3685913T2 (de) Vektorenverarbeitung.
DE69023568T2 (de) Cache-Speicheranordnung.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE2629266A1 (de) Ein/ausgabe-system
DE60316774T2 (de) Verkettung von mehrfadenprozessorkernen zur bearbeitung von datenpaketen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 9/34

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee