DE3716229C2 - Mikroprozessorchip mit einem Stapelrahmen-Cache - Google Patents
Mikroprozessorchip mit einem Stapelrahmen-CacheInfo
- 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
Links
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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/451—Stack 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.
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.
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).
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.
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.
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.
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
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.
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.
Eine Prozedur beginnt an einer beliebigen Wortadresse in einem
Linearadreßraum. Prozeduraufrufe und Rücksprünge verwenden
einen Stapel im Linearadreßraum.
Aufruf
Aufruf-erweitert.
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
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.
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.
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)
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.
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.
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.
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)
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)
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 | メモリ装置 |
-
1986
- 1986-05-16 US US06/863,878 patent/US4811208A/en not_active Expired - Lifetime
- 1986-11-25 GB GB8628175A patent/GB2190521B/en not_active Expired - Lifetime
- 1986-12-31 FR FR868618432A patent/FR2598835B1/fr not_active Expired - Lifetime
-
1987
- 1987-01-21 KR KR870000472A patent/KR870011524A/ko not_active Application Discontinuation
- 1987-01-26 CN CN87100507A patent/CN1009592B/zh not_active Expired
- 1987-05-14 DE DE3716229A patent/DE3716229C2/de not_active Expired - Fee Related
- 1987-05-15 JP JP62118731A patent/JP2612168B2/ja not_active Expired - Lifetime
-
1990
- 1990-05-18 SG SG34990A patent/SG34990G/en unknown
- 1990-08-02 HK HK575/90A patent/HK57590A/xx not_active IP Right Cessation
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 |