DE3716229A1 - Mikroprozessorchip mit einem stapelrahmen-cache - Google Patents

Mikroprozessorchip mit einem stapelrahmen-cache

Info

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
Application number
DE19873716229
Other languages
English (en)
Other versions
DE3716229C2 (de
Inventor
Glenford J Meyers
Konrad Lai
Michael T Imel
Glenn Hinton
Robert Riches
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE3716229A1 publication Critical patent/DE3716229A1/de
Application granted granted Critical
Publication of DE3716229C2 publication Critical patent/DE3716229C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data

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.
Befehlssatz
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
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.
Gleitpunktregister
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).
Arithmetische Steuerung
Die arithmetischen Steuerungen 36 dienen zur Steuerung der arithmetischen und Fehlereigenschaften (faulting properties) der numerischen Befehle sowie zur Speicherung der Bedingungscodes. Wenn ein Prozeß suspendiert wird, werden die arithmetischen Steuerinformationen im Prozeßsteuerblock sichergestellt.
Befehlshinweis
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.
Lokale (oder Rahmen-) Register
Im folgenden wird auf Fig. 3 Bezug genommen. Register L0 . . . L15, die lokalen Register, bezeichnen nicht Register der konventionellen Art; sie bezeichnen die ersten sechzehn Worte des aktuellen bzw. laufenden Rahmens. Daher wird Register L0 in Linearadresse FP + 0 bis FP + 3, Register Li in Linearadresse FP + 4i bis FP + 4i + 3 abgebildet usw.
Ein Cache 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.
Stapelrahmen
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
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
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.
Lineare Adreßraumstruktur
Wie in Fig. 2 gezeigt ist, definiert jede Ausführungsumgebung einen 32-Bit-Linearadreßraum. Der Linearadreßraum ist in vier Zonen unterteilt. Die ersten drei Zonen einer Ausführungsumgebung sind für den aktuellen Prozeß spezifisch (d. h. definiert durch den Prozeß-Steuerblock). Die Zusammensetzung der Prozeßspezifischen Zonen kann durch einen Subsystemaufruf/Rücksprung geändert werden. Die vierte Zone einer Ausführungsumgebung (execution environment) wird von allen Prozessen geteilt (d. h. definiert vom Prozessor-Steuerblock). Beschränkungen dergestalt, wo Befehle, Stapelrahmen oder Daten im Linearadreßraum angeordnet sind, gibt es nicht.
Lokaler Prozedurmechanismus
Eine Prozedur beginnt an einer beliebigen Wortadresse in einem Linearadreßraum. Prozeduraufrufe und Rücksprünge verwenden einen Stapel im Linearadreßraum.
Befehle
Aufruf
Aufruf-erweitert.
Die Befehle Aufruf und Aufruf-erweitert rufen die Prozedur an der angegebenen Adresse auf. Aufruf spezifiziert die Prozedur als IP plus einer 24-Bit-Verschiebung. Aufruf-erweitert 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.
Rückkehr bzw. Rücksprung
Der Rückkehrbefehl überträgt die Steuerung zurück zu der Adreßumgebung der aufrufenden Prozedur und gibt den Stapelrahmen der aufgerufenen Prozedur frei. Die Befehlsausführung wird an dem von dem RIP im Rahmen der aufrufenden Prozedur bezeichneten Befehl fortgesetzt.
Modifiziere-AC
Setze-Adresse-um
Modifiziere-AC wird zum Lesen oder Modifizieren der aktuellen arithmetischen Steuerungen verwendet. Da die Bereichs AD's nicht direkt zugreifbar sind, kann der Setze-Adresse-um-Befehl zum Umsetzen einer Linearadresse in eine virtuelle Adresse verwendet werden.
Prozeßmanagement
Ein Softwareprozeß oder eine 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.
Überwachung und ICE-Unterstützung
Software-Austestung und -Überwachung geschieht mittels eines Überwachungssteuerungsregisters, das Bestand jedes Prozesses ist. Die Überwachungssteuerungen ermöglichen die Ermittlung irgendeiner Kombination der folgenden Ereignisse:
Befehlsausführung (d. h. Einzelschritte)
Ausführung eines genommenen 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.
Externer Bus
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.
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.
DE3716229A 1986-05-16 1987-05-14 Mikroprozessorchip mit einem Stapelrahmen-Cache Expired - Fee Related DE3716229C2 (de)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
DE3716229A1 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043870A (en) * 1982-02-24 1991-08-27 At&T Bell Laboratories Computer with automatic mapping of memory contents into machine registers during program execution
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS63259727A (ja) * 1987-04-17 1988-10-26 Hitachi Ltd コプロセツサのインタ−フエイス方式
JP2982875B2 (ja) * 1987-12-28 1999-11-29 株式会社日立製作所 スレーブ制御装置
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 メモリ装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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