DE3716229A1 - Mikroprozessorchip mit einem stapelrahmen-cache - Google Patents
Mikroprozessorchip mit einem stapelrahmen-cacheInfo
- Publication number
- DE3716229A1 DE3716229A1 DE19873716229 DE3716229A DE3716229A1 DE 3716229 A1 DE3716229 A1 DE 3716229A1 DE 19873716229 DE19873716229 DE 19873716229 DE 3716229 A DE3716229 A DE 3716229A DE 3716229 A1 DE3716229 A1 DE 3716229A1
- Authority
- DE
- Germany
- Prior art keywords
- frame
- register
- registers
- return
- call
- 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.)
- Granted
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
Description
Die Erfindung bezieht sich auf ein Datenverarbeitungssystem
und insbesondere auf einen mit einem Hauptspeicher verbindbaren
Datenprozessor, der ein Stapelrahmen-Cache (stack frame
cache) und eine Steuereinrichtung hierfür enthält.
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 eine externe Speicher-Bezugsadresse ü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 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
dadurch ergebende verringerte Speicherbusverkehr würde auch
die Wahrscheinlichkeit dafür verringern, daß ein Lade- oder
Speicherbefehl auf die Verfügbarkeit des Speicherbus zu warten
hätte.
Der Erfindung liegt daher die Aufgabe zugrunde, eine Einrichtung
zur Minimierung der Hauptspeicher-Bezugnahmen zur Verfügung
zu stellen, die während des Ausführens von Aufruf/Rückkehr-
Befehlen auftreten.
Diese Aufgabe wird erfindungsgemäß durch die Merkmale des
Anspruchs 1 gelöst. Die Erfindung sieht also eine Vielzahl von
globalen Registern auf dem Mikroprozessorchip vor. Eines der
globalen Register ist ein Rahmen-Hinweisadressenregister, das
den aktuellen Rahmenhinweis (frame pointer) enthält. Die restlichen
der globalen Register stehen für einen laufenden Prozeß
als Arbeitsregister zur Verfügung. Ein Stapelrahmen-Cachemechanismus
ist vorgesehen, der aus einem Registergruppenpool mit
einer Vielzahl von Registergruppen besteht, wobei jede Registergruppe
aus einer Anzahl von lokalen Registern auf dem Chip
besteht. Wenn ein Ruf- bzw. Aufrufbefehl decodiert wird, wird
ein Registersatz bzw. eine Registergruppe aus dem Registersatz-
bzw. -gruppenpool der aufgerufenen Prozedur zugeordnet
und das Rahmenhinweisregister initialisiert. Wenn ein Rückkehr-
bzw. Rückantwortbefehl decodiert wird, wird die Registergruppe
für eine Zuordnung zu einer von einem nachfolgenden
Aufrufbefehl aufgerufenen anderen Prozedur freigegeben. Wenn
der Registergruppenpool verarmt ist, werden die Inhalte einer
einem vorhergehenden Vorgang zugeordneten Registergruppe im
Hauptspeicher gesichert, und diese Registergruppe wird dem
laufenden Vorgang zugeordnet.
Gemäß einem Aspekt der Erfindung enthalten die lokalen Register
einer einem Vorgang zugeordneten Registergruppe Programmverbindungsinformationen
einschließlich einer Hinweisadresse
zum vorhergehenden Rahmen und einen Befehlshinweis, wodurch es
möglich wird, daß die meisten Aufruf- und Rückkehrbefehle ohne
die Notwendigkeit von Hinweisen bzw. Referenzen auf einen
externen Speicher ausgeführt werden können.
Die Erfindung hat den Vorteil, daß sie die beim Kreuzen von
Subroutinegrenzen durchzuführenden Sicherstellungen und Umspeicherungen
von Registern beträchtlich reduziert.
Die Erfindung hat außerdem den Vorteil, daß wegen der Abbildung
der lokalen Registergruppen in die Stapelrahmen die Verkettungsinformation,
welche normalerweise in Stapelrahmen
auftritt (z. B. Hinweis auf vorhergehenden Rahmen, Zwischenspeicher-
bzw. Sicherstellungsinformationshinweis), in den
lokalen Registern behalten wird. Dies bedeutet, daß sich die
meisten Aufruf- und Rückkehrbefehle ohne Referenzen auf einen
externen Speicher ausführen lassen.
Im folgenden wird die Erfindung anhand eines in der Zeichnung
dargestellten Ausführungsbeispiels näher erläutert. in der
Zeichnung zeigen:
Fig. 1 ein Funktionsblockdiagramm, das jede der
Hauptkomponenten 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 Mikroprozessor
ist in sieben Haupteinheiten logisch unterteilt: Die Befehlsabrufeinheit
10, den Befehlsdecodierer 12, den Mikrobefehlssequenzer
bzw. -sortierer 14, einen Übersetzungs-Nebengriffpuffer
18, eine Gleitpunkteinheit 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 Befehlsausführung
(macrocode). Der ID decodiert Befehle, führt Operandenadressierung
und Abruf aus, verarbeitet Zweigbefehle
(d.h. Befehlshinweismanipulation) und gibt entweder Ausführungsmikrobefehle
(für einfache Befehle) aus oder startet
Mikroprogrammflüsse (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 Befehlshinweise (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 Befehlshinweise
(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 Mikrobefehls,
Mikroprogrammabzweigung, die Verarbeitung von Ausnahmebedingungen,
die Aufrechterhaltung einer Auswertetafel auf
der 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 gestattet.
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 Gleitpunkteinheit (FPU) enthält die zur Durchführung der
Gleitpunktoperationen (floating point operations) und zum
ganzzahligen Multiplizieren und Dividieren benötigte Logik.
Die FPU enthält vier Gleitpunktregister, einige Zwischenregister
und einen 68-Bit-Verschieber, der 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 Gleitpunktoperationen einschließlich der cordischen
Algorithmen für die transzendenten Befehle aus.
Der Übersetzungs-Nebengriffspuffer (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
Eingaben aus. Er enthält einen 48-Eingabeadressencache, einen
6-Bit-Adreßaddierer und Speicherschutz-Prüfhardware. Jede
Eingabe 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 kanalisiert und ordnet externe Buszugriffe.
Der Lokalbus-Sequenzer enthält die Schnittstellenhardware
zum externen lokalen Bus, leitet das Busprotokoll und
beobachtet externe Ereignisse (z. B. Unterbrechungen, Initialisierung
bzw. Anlauf). Er enthält einen abgehenden 33-Bit
breiten Adreß- und Daten FIFO (Silospeicher), 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 Rahmenhinweisregister, das den
aktuellen Rahmenhinweis enthält, und der Rest der globalen
Register steh für einen aktuellen Prozeß als Universalregister
zur Verfügung. Ein Register (Stapelrahmen) Cache 23 enthält
einen Registergruppenpool aus einer Vielzahl von Registergruppen,
von denen jede aus einer Anzahl von lokalen Registern
besteht. Wenn ein Aufrufbefehl decodiert wird, wird eine Registergruppe
aus dem Registergruppenpool dem aufgerufenen Vorgang
zugeordnet, und das Rahmenhinweisregister wird initialisiert.
Wenn ein Rückkehrbefehl decodiert wird, wird die Registergruppe
für die Zuordnung zu einem anderen, von einem nachfolgenden
Aufrufbefehl aufgerufenen Prozeß freigegeben. Wenn
der Registergruppenpool erschöpft ist, werden die Inhalte
einer einem vorhergehenden Vorgang zugeordneten Registergruppe
im Hauptspeicher sichergestellt und diese Registergruppe dem
laufenden Vorgang bzw. einer Prozedur oder Prozeß zugeordnet.
Die lokalen Register einer einem Vorgang zugeordneten Registergruppe
enthalten Verknüpfungsinformationen einschließlich
eines Hinweises auf den vorhergehenden Rahmen und einen Befehlshinweis,
so daß sie die Ausführung der meisten Aufruf-
und Rückkehrbefehle ohne Bedarf an Bezugnahmen auf einen externen
Speicher ermöglichen.
Ein Prozeß bzw. Vorgang sieht einen flachen linearen Adreßraum,
adressiert mit 32-Bit-Ordinalen, aus denen er Daten,
Befehle und Stapelraum zuordnet. Ein Rufbefehl erzeugt einen
neuen Stapelrahmen (Aktivierungssatz) 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 sie laden, speichern und
verzweigen Befehlsreferenzspeicher (alle anderen Referenzregister).
Im folgenden wird auf Fig. 2 Bezug genommen, welche die Umgebung
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 16 32-Bit
Globalregister 32, sechzehn sind 32-Bit-Lokalregister 34 und
die restlichen vier sind 80-Bit-Gleitpunktregister 36. Die
Lokalregister sind einem als Stapelrahmencache bekannten Mechanismus
zugeordnet. Wenn ein Vorgang aufgerufen wird, werden
die Lokalregister eines neuen Satzes oder einer neuen Gruppe
aus einem Registerpool auf dem Chip zugeordnet und von einer
Prozedurrückkehr befreit. Das beschriebene Ausführungsbeispiel
der Erfindung sieht vier Gruppen 64 von lokalen Registern auf
dem Chip vor, jedoch ist diese Zahl für den Programmierer
transparent.
Das Registermodell besteht aus 16 globalen Registern und 4
Gleitpunktregistern, 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:
RegistertypRegistername
Globales RegisterG0 . . . . . . G 15
GleitpunktregisterFP0 . . . . . FP13
(Gleitpunktoperand)
Lokales RegisterL0 . . . . . . L15
Lokales RegisterL0 . . . . . . L15
Zu jedem Zeitpunkt kann man zweiunddreißig 32-Bit-Register und
vier 80-Bit-Gleitpunktregister adressieren (die 32 Register
können auch zum Halten von Gleitpunktwerten 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 bzw. eine Registergruppe
neu zu. indem ein einer früheren Prozedur zugeordneter
Satz genommen und dessen Inhalt im Speicher sichergestellt
wird. Der Inhalt des Registersatzes bzw. der Registergruppe
der früheren Prozedur wird in den ersten 16 Worten des Stapelrahmens
dieser Prozedur im Speicher sichergestellt. Aus diesem
Grunde wird der Mechanismus als Stapelrahmencache bezeichnet.
Der Rückkehrbefehl setzt die aktuelle lokale Registergruppe
frei (zur Verwendung durch einen nachfolgenden Ruf oder Aufruf).
Es gibt sechzehn globale Register 32, die einem Prozeß zugeordnet
sind. Sie werden im Prozeßsteuerblock sichergestellt,
wenn der Prozeß nicht ausführt wird. Globale Register werden
nicht in den Prozesteuerblock assoziativ abgebildet.
Von den sechzehn 32-Bit-Registern enthält G15 den aktuellen
Rahmenhinweis (FP) und G0 . . . G14 sind Vielzweckregister. Der FP
enthält die lineare Adresse (Hinweis) in die aktuelle Ausführungsumgebung
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 Gleitpunktregister (34), die einem Prozeß zugeordnet
sind. Sie werden in dem Prozeßsteuerblock sichergestellt,
wenn der Prozeß nicht ausgeführt wird. Gleitpunktregister
sind nicht assoziativ in den Prozeßsteuerblock abgebildet.
Gleitpunktzahlen werden im erweiterten Realformat in den
Gleitpunktregistern gespeichert. Auf Gleitpunktregister wird
nur als auf Operanden von Gleitpunktbefehlen zugegriffen (jedoch
können solche Befehle auch die 32-Bit-lokalen und globalen
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 Befehlshinweis 38 ist eine lineare Adresse (Hinweisadresse
- pointer) 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 bzw. Puffer 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 benachbarter
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 Verkettungsinformationen
enthält. Eine Aufrufoperation nimmt
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:
Überwachungsaktivierung T (Bit 0). In einem Organisationsprogrammaufruf
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
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überwachungsbit
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 Rahmenhinweis PFP (Bit 6-31). Eine Linearadresse
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 Rahmenstatus
wie folgt initialisiert:
0 000- --Lokaler Aufruf oder Organisationsprogrammaufruf aus dem Organisationsprogrammzustand
0 001T --Organisationsprogrammaufruf aus
Benutzermodus
0 010- --Unterbrechungsaufruf
0 011- --Nichtsubsystem-Fehleraufruf
0 100- --Subsystemaufruf
0 110- --Unterbrechungsaufruf von Ruhe oder
angehaltenem Zustand
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:
1 xxxx --Erzeuge eine Rückkehrvorüberwachung
0 000x --Führe einen lokalen Rücksprung oder
eine lokale Rückkehr durch 0 001T --Im Organisationsprogrammodus führe
einen Organisationsprogramm
(SUPERVISOR) Rücksprung durch. Das
T-Bit wird dem Überwachungsaktivierungsbit in den Prozeßsteuerungen zugeordnet, und das Ausführungsmodusbit wird auf den Benutzer gesetzt. Anderenfalls wird ein lokaler Rücksprung bzw. eine lokale Rückkehr durchgeführt. 0 010x --Führe einen Unterbrechungssprung
durch 0 011x --Führe einen Fehlerrücksprung durch 0 100x --Führe einen Subsystemrücksprung
durch 0 101x --Operation. Rücksprungfehler 0 110x --Führe einen Ruhe/Stop-Unterbrechung- Rücksprung durch 0 111x --Operation. Rücksprungfehler
eine lokale Rückkehr durch 0 001T --Im Organisationsprogrammodus führe
einen Organisationsprogramm
(SUPERVISOR) Rücksprung durch. Das
T-Bit wird dem Überwachungsaktivierungsbit in den Prozeßsteuerungen zugeordnet, und das Ausführungsmodusbit wird auf den Benutzer gesetzt. Anderenfalls wird ein lokaler Rücksprung bzw. eine lokale Rückkehr durchgeführt. 0 010x --Führe einen Unterbrechungssprung
durch 0 011x --Führe einen Fehlerrücksprung durch 0 100x --Führe einen Subsystemrücksprung
durch 0 101x --Operation. Rücksprungfehler 0 110x --Führe einen Ruhe/Stop-Unterbrechung- Rücksprung durch 0 111x --Operation. Rücksprungfehler
Stapelhinweis SP (L1). Eine lineare Adresse 44 zum ersten
freien Byte des Stapels, d. h. die Adresse des letzten Byte im
Stapel + Eins. SP wird durch die Aufrufoperation initialisiert,
auf FP plus 64 hinzuweisen.
Rückkehr (Rücksprung)-Befehlshinweis RIP (L2). Wenn eine Aufrufoperation
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 Befehlshinweis 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-Registergruppen
bzw. -sätze in den Programmstapeln 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 (lifetime) 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 Linearadreß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.
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 spezifiziert
die Prozedur unter Verwendung einer generellen speicherwirksamen
Adresse. Aufruf-erweitert enthält auch einen
Operanden, der im neuen Rahmen AP wird.
Ein neuer Stapelrahmen wird während der Aufrufoperation zugeordnet
und der Steuerfluß wird zu den spezifizierten Prozeduren
übertragen. Die Ausführungsumgebung bleibt ungeändert.
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.
Ein Softwareprozeß oder eine Aufgabe 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 (Sicherstellungsprozeß
und Wiederaufnahmeprozeß), die es einem Betriebssystem ermöglichen,
Prozesse explizitid 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 Warteschlange 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 abläuft.
Wenn eine automatische Prozeßauswahl verwendet wird, ist ein
Satz oder eine Gruppe 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 Sprungbefehls
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
Fixpunkt (Hardware-Fixpunkt oder Ausführung eines Stoppbefehls)
Befehlsausführung (d. h. Einzelschritte)
Ausführung eines genommenen Sprungbefehls
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
Fixpunkt (Hardware-Fixpunkt oder Ausführung eines Stoppbefehls)
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 Befehlsfixpunktregister, in die ein Austester die
Adressen der beiden Befehle eingeben kann.
Der Bus des Mikroprozessors ist ein 32-Bit-Multiplex-Bus mit
Bündel-Übertragungsfähigkeit. Der Bündel-Ü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
solange 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 o. 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 Befehlscache 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 (7)
1. Mit einem Hauptspeicher verbindbarer Datenprozessor, der
einen Stapelrahmen-Cache und einen diesem zugeordneten Steuermechanismus
aufweist, gekennzeichnet durch:
mehrere globale Register, von denen eines ein Rahmenhinweisregister mit einem aktuellen Rahmenzeiger ist, der auf einen aktuellen Rahmen hinweist und von denen der Rest als Universalregister für einen aktuellen Prozeß zur Verfügung steht;
ein Registersatzpool aus mehreren Registersätzen, von denen jeder aus einer Anzahl von lokalen Registern besteht;
erste Steuermittel, die beim Decodieren eines Aufrufbefehls aktiviert werden, um einer aufgerufenen Prozedur einen Registersatz aus lokalen Registern aus dem Registersatzpool zuzuordnen und eines der Rahmenhinweisregister zur Erzeugung eines aktuellen Rahmens zu initialisieren; und
zweite Steuermittel die beim Decodieren eines Rückkehrbefehls zur Freigabe des Registersatzes für die Zuordnung zu einem von einem nachfolgenden Aufrufbefehl aufgerufenen anderen Vorgang bzw. einer anderen Prozedur aktivierbar sind.
mehrere globale Register, von denen eines ein Rahmenhinweisregister mit einem aktuellen Rahmenzeiger ist, der auf einen aktuellen Rahmen hinweist und von denen der Rest als Universalregister für einen aktuellen Prozeß zur Verfügung steht;
ein Registersatzpool aus mehreren Registersätzen, von denen jeder aus einer Anzahl von lokalen Registern besteht;
erste Steuermittel, die beim Decodieren eines Aufrufbefehls aktiviert werden, um einer aufgerufenen Prozedur einen Registersatz aus lokalen Registern aus dem Registersatzpool zuzuordnen und eines der Rahmenhinweisregister zur Erzeugung eines aktuellen Rahmens zu initialisieren; und
zweite Steuermittel die beim Decodieren eines Rückkehrbefehls zur Freigabe des Registersatzes für die Zuordnung zu einem von einem nachfolgenden Aufrufbefehl aufgerufenen anderen Vorgang bzw. einer anderen Prozedur aktivierbar sind.
2. Datenprozessor nach Anspruch 1, dadurch gekennzeichnet,
daß die ersten Steuermittel bei Erschöpfung des Registersatzpools
wirksame Mittel enthalten, die den Inhalt eines einer
vorhergehenden Prozedur zugeordneten Registersatzes im Hauptspeicher
sicherstellen und den Registersatz der laufenden bzw.
aktuellen Prozedur zuordnen.
3. Datenprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die ersten Steuermittel Rückkehrstatusbits zum
Registrieren des bei der Erzeugung des Rahmens benutzten Aufrufmechanismus
und zur Auswahl des bei der Rückkehr zu benutzenden
Rückkehrmechanismus aufweisen.
4. Datenprozessor nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß die lokalen Register in einem einer Prozedur
zugeordneten Registersatz Verkettungsinformationen mit
einem Hinweis auf den vorhergehenden Rahmen und einen Befehlshinweis
enthalten.
5. Datenprozessor nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß die lokalen Register in einem einer Prozedur
zugeordneten Registersatz einen Stapelrahmen mit Rahmenstatusbits
zum Registrieren der dem Rahmen nach einem Aufruf
zugeordneten Information zur Verwendung bei einem Rücksprung
aus dem Rahmen enthalten, wobei die Information Rückkehrstatusbits
zum Registrieren des bei der Erzeugung des Rahmens
verwendeten Aufrufmechanismus und zum Auswählen des bei der
Rückkehr zu verwendenden Rückkehrmechanismus enthält.
6. Datenprozessor nach einem der Ansprüche 1 bis 5, dadurch
gekennzeichnet, daß die lokalen Register in einem einer Prozedur
zugeordneten Registersatz einen Stapelrahmen mit Hinweisbits
auf den vorhergehenden Rahmen enthalten, wobei die Hinweisbits
eine Linearadresse zu den ersten Byte des vorhergehenden
Rahmens aufweisen.
7. Datenprozessor nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß die lokalen Register in einem einer Prozedur
zugeordneten Registersatz einen Stapelrahmen mit einem
Rückkehrbefehlshinweisfeld enthält zur Speicherung des Rückkehrbefehlshinweises
bei der Bedingung, daß eine Aufrufoperation
an einem neuen Rahmen durchgeführt wird, und zur Speicherung
des Befehlshinweises auf den nächsten Befehl bei der
Bedingung, daß der Prozeß suspendiert ist, wobei das Feld eine
Linearadresse ist, zu der die Steuerung nach einer Rückkehr zu
diesem Rahmen zurückkehrt.
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 true DE3716229A1 (de) | 1987-11-19 |
DE3716229C2 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 | 株式会社日立製作所 | スレーブ制御装置 |
US5136691A (en) * | 1988-01-20 | 1992-08-04 | Advanced Micro Devices, Inc. | Methods and apparatus for caching interlock variables in an integrated cache memory |
DE68917326T2 (de) * | 1988-01-20 | 1995-03-02 | Advanced Micro Devices Inc | Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen. |
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 |
US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
US5226166A (en) * | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
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 |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
ATE200357T1 (de) | 1991-07-08 | 2001-04-15 | Seiko Epson Corp | Risc-prozessor mit dehnbarer architektur |
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 |
WO1993020505A2 (en) * | 1992-03-31 | 1993-10-14 | Seiko Epson Corporation | Superscalar risc instruction scheduling |
JP3637920B2 (ja) * | 1992-05-01 | 2005-04-13 | セイコーエプソン株式会社 | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 |
US5491793A (en) * | 1992-07-31 | 1996-02-13 | Fujitsu Limited | Debug support in a processor chip |
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 |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp | System und Verfahren zur Änderung der Namen von Registern |
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 |
WO1997015001A2 (en) * | 1995-10-06 | 1997-04-24 | Patriot Scientific Corporation | Risc microprocessor architecture |
KR100529416B1 (ko) * | 1996-01-24 | 2006-01-27 | 선 마이크로시스템즈 인코퍼레이티드 | 스택기반컴퓨터를위한명령폴딩방법및장치 |
US6038643A (en) * | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
DE69734399D1 (de) | 1996-01-24 | 2006-03-02 | Sun Microsystems Inc | Verfahren und vorrichtung zur stapel-cachespeicherung |
US6167488A (en) * | 1997-03-31 | 2000-12-26 | Sun Microsystems, Inc. | Stack caching circuit with overflow/underflow unit |
US6289418B1 (en) | 1997-03-31 | 2001-09-11 | Sun Microsystems, Inc. | Address pipelined stack caching method |
US6131144A (en) * | 1997-04-01 | 2000-10-10 | Sun Microsystems, Inc. | Stack caching method with overflow/underflow control using pointers |
US6058457A (en) * | 1997-06-23 | 2000-05-02 | Sun Microsystems, Inc. | Method for storing method frames in multiple stacks |
US6138210A (en) * | 1997-06-23 | 2000-10-24 | Sun Microsystems, Inc. | Multi-stack memory architecture |
US6067602A (en) * | 1997-06-23 | 2000-05-23 | Sun Microsystems, Inc. | Multi-stack-caching memory architecture |
US6092152A (en) * | 1997-06-23 | 2000-07-18 | Sun Microsystems, Inc. | Method for stack-caching method frames |
US5930158A (en) * | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
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 |
US6170050B1 (en) | 1998-04-22 | 2001-01-02 | Sun Microsystems, Inc. | Length decoder for variable length data |
US6275903B1 (en) | 1998-04-22 | 2001-08-14 | Sun Microsystems, Inc. | Stack cache miss handling |
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 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2416846A1 (de) * | 1973-04-13 | 1974-10-17 | Int Computers Ltd | Datenverarbeitungseinrichtung |
US4435780A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Separate stack areas for plural processes |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JPS5814253A (ja) * | 1981-07-17 | 1983-01-27 | Nec Corp | 中央処理装置の割込方式 |
JPS5843043A (ja) * | 1981-09-08 | 1983-03-12 | Oki Electric Ind Co Ltd | デ−タ処理装置の呼び出し命令方式 |
US4445173A (en) * | 1981-09-11 | 1984-04-24 | Data General Corporation | Improved system for saving and restoring state in call and return operations |
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 |
WO1983001318A1 (en) * | 1981-09-30 | 1983-04-14 | Burroughs Corp | Microprogrammed digital data processing system employing tasking at a microinstruction level |
DE3176431D1 (en) * | 1981-09-30 | 1987-10-15 | Unisys Corp | Register allocation apparatus |
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
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2416846A1 (de) * | 1973-04-13 | 1974-10-17 | Int Computers Ltd | Datenverarbeitungseinrichtung |
US4435780A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Separate stack areas for plural processes |
Also Published As
Publication number | Publication date |
---|---|
US4811208A (en) | 1989-03-07 |
JPS62286128A (ja) | 1987-12-12 |
CN87100507A (zh) | 1987-11-25 |
JP2612168B2 (ja) | 1997-05-21 |
GB2190521B (en) | 1990-01-10 |
DE3716229C2 (de) | 1996-08-14 |
SG34990G (en) | 1990-09-07 |
GB8628175D0 (en) | 1986-12-31 |
FR2598835A1 (fr) | 1987-11-20 |
KR870011524A (ko) | 1987-12-24 |
FR2598835B1 (fr) | 1993-09-03 |
HK57590A (en) | 1990-08-10 |
CN1009592B (zh) | 1990-09-12 |
GB2190521A (en) | 1987-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3716229C2 (de) | Mikroprozessorchip mit einem Stapelrahmen-Cache | |
DE2855106C2 (de) | Einrichtung zur Durchführung von bedingten Verzweigungen | |
DE69133257T2 (de) | Vorrichtung und verfahren zur schnellen paketvermittlung | |
DE2722099C2 (de) | ||
DE10085363B4 (de) | Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor | |
EP0333123B1 (de) | Modular strukturiertes ISDN-Kommunikationssystem | |
DE60006270T2 (de) | Parallele prozessorarchitektur | |
DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
DE2224537C2 (de) | Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor | |
DE602004012106T2 (de) | Multikanal-DMA mit gemeinsamem FIFO-Puffer | |
DE2054835C2 (de) | Steuereinrichtung in einem Prozessor einer Mehrprozessor-Datenverarbeitungsanlage | |
DE60015395T2 (de) | Speicher, der zwischen verarbeitenden threads geteilt ist | |
DE3607889C2 (de) | ||
DE69431998T2 (de) | Superskalare Rechnerarchitektur mit Softwarescheduling | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE60030767T2 (de) | Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor | |
US4435752A (en) | Allocation of rotating memory device storage locations | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE2837852C2 (de) | Prozessor zum gleichzeitigen Ermitteln und Bereitstellen zweier Adressen von Befehls- und/oder Datenwortregistern eines bereichsweise adressierbaren Hauptspeichers | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE2719295A1 (de) | Programmsteuerung | |
DE2517276A1 (de) | Datenverarbeitungssystem | |
DE3741850A1 (de) | Ausfuehrungseinheit fuer einen i/o-prozessor | |
DE102008022080A1 (de) | Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren | |
EP0010185B1 (de) | Virtuell-Adressiervorrichtung für einen Computer |
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 |