DE3687724T2 - Digitalprozessorsteuerung. - Google Patents
Digitalprozessorsteuerung.Info
- Publication number
- DE3687724T2 DE3687724T2 DE8686306268T DE3687724T DE3687724T2 DE 3687724 T2 DE3687724 T2 DE 3687724T2 DE 8686306268 T DE8686306268 T DE 8686306268T DE 3687724 T DE3687724 T DE 3687724T DE 3687724 T2 DE3687724 T2 DE 3687724T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- file
- address
- instruction
- addresses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Executing Machine-Instructions (AREA)
- Exchange Systems With Centralized Control (AREA)
- Saccharide Compounds (AREA)
- Magnetically Actuated Valves (AREA)
- Storage Device Security (AREA)
Description
- Die vorliegende Erfindung betrifft Speicherelemente digitaler Computer und insbesondere eine Hochgeschwindigkeits-Allzweckregisterdatei zur Verwendung mit einem Computer mit reduziertem Befehlssatz, die ein leichtes Leiten von Parametern zwischen Vorgängen und einen mehrere Aufgaben unterstützenden Schutzmechanismus vorsieht.
- Computer mit reduziertem Befehlssatz (RISC) nutzen den Vorteil der Verwendung einer Gruppe von Hochgeschwindigkeits-Allzweckregistern zum Speichern von häufig verwendeten Daten in Verbindung mit einem Hauptspeicher mit geringerer Geschwindigkeit zum Speichern von weniger häufig verwendeten Daten. Laufzeituntersuchungen von Programmen zeigen, daß die bei Vorgängen am häufigsten verwendeten Daten üblicherweise einfache Nicht-Bereichsvariablen sind, und daß bei einem Vorgang nicht mehr als zweiunddreißig solcher Variablen verwendet werden. Die Berkeley RISC-Maschinen RISC I und RISC II, die Stanford MIPS-Maschine und das IBM-Gerät 801 sind für RISC-Architekturen repräsentativ.
- Während der Ausführungszeit wird, bei jedem Einsetzen bzw. bei jeder Rückkehr aus einem Vorgang in einer höheren Programmiersprache (HLL), beim Zuordnen und beim Aufheben der Zuordnung von Aktivierungsaufzeichnungen verwendet. Die Aktivierungsaufzeichnung weist Bereiche für eingehende Parameter (Variablen), rein lokale Variablen und ausgehende Parameter (Variablen) auf. Der den ausgehenden Parametern einer Aktivierungsaufzeichnung eines Vorgangs zugeordnete Bereich kann mit dem den eingehenden Parametern einer anderen Aktivierungsaufzeichnung zugeordneten Bereich überlappt werden, so daß Parameterwerte wirksam zwischen den Vorgängen übertragen werden können.
- Ein Compiler für eine HLL ordnet Datenreferenzen innerhalb eines Vorgangs derart an, daß die meisten Referenzen zur Verbesserung der Leistung auf die Hochgeschwindigkeitsregister bezogen sind. Maschinen mit RISC-Architektur enthalten eine Gruppe von Hochgeschwindigkeitsregistern, welche die Zahl der zum Speichern häufig gebrauchter Daten innerhalb eines beliebigen Vorgangs, zum Beispiel zweiunddreißig Register, übersteigt. Die Berkeley RISC-Maschinen ordnen eine festgelegte Zahl von Registern einem Vorgang zu ("Fenster"). Da diese Zahl im allgemeinen höher ist als die von tatsächlich von einem Vorgang erforderte Zahl, ist eine Verschwendung von Registern unvermeidbar.
- Der Aufsatz "Reduced Instruction Set Computer Architectures for VLSI" von Manolis G. H. Katevenis (ACM Doctoral Dissertation Award 1984), veröffentlicht von MIT Press, offenbart ein Prozessorsteuersystem mit einer Registerdatei, bei dem eine Zahl von aufeinanderfolgenden Registern eines "Fensters" von vorbestimmter Größe einer Reihe von auszuführenden Vorgängen zugeordnet wird.
- Im Idealfall sollte nur die tatsächlich von einem Vorgang erforderte Zahl von Registern diesem zugeordnet werden und die über die erforderliche Menge hinausgehenden Register könnten zum Speichern von Variablen zur Übertragung zwischen Vorgängen und für andere Aufgaben verwendet werden.
- Gemäß der beanspruchten Erfindung schafft der zu beschreibende Befehlsprozessor eine Hochgeschwindigkeitsregisterdatei, bei der einem Vorgang nur die von diesem erforderte Zahl von Registern zugeordnet wird. Register, die über die für einen bestimmten Vorgang erforderliche Zahl von Registern hinausgehen, können zum Speichern von Variablen für andere Vorgänge oder Aufgaben verwendet werden. Eine Übertragung zwischen mehreren Vorgängen kann über Variablen erfolgen, die in einer Gruppe von sogenannten "globalen" Registern enthalten sind, während für einen bestimmten Vorgang erforderliche Variablen in einer Gruppe von sogenannten "lokalen" Registern gespeichert sind, wobei jede Gruppe ihren eigenen Adressierungsbereich aufweist.
- Parameter können von einem Abrufvorgang über einen Stapelmechanismus zu einem abgerufenen Vorgang weitergeleitet werden. Zugriffe auf lokale Register erfolgen in bezug zu einem Stapelzeigerwert, der in einem Register gespeichert ist. Der Inhalt des Stapelzeigerregisters kann derart eingestellt werden, daß die Gruppen der von einem Abrufvorgang und der von einem abgerufenen Vorgang verwendeten Register einander überlappen und eine Übertragung zwischen diesen über die gemeinsamen Register erfolgt.
- Ein Registerschutzmechanismus unterstützt eine Multitasking-Betriebsart, bei der jede Aufgabe ihre Unversehrtheit gegenüber in anderen Aufgaben auftretenden unerwünschten Veränderungen bewahrt. Der Schutzmechanismus verhindert den Zugriff auf bestimmte Register innerhalb der Hochgeschwindigkeitsregisterdatei während der Durchführung eines bestimmten Vorgangs oder einer Aufgabe. Die Registerdatei ist in eine Anzahl von "Blöcken" zusammenhängender Register unterteilt. Ein Schutzregister enthält ein binäres Wort, in dem jede Bitposition derart einstellbar ist, daß sie einen Zugriff auf den der bestimmten Bitposition entsprechenden Block entweder erlaubt oder verhindert. Ein Versuch eines Befehls auf ein Register innerhalb eines geschützten Blockes zuzugreifen, verursacht einen "Fehler" in der Maschine und es wird eine geeignete Maßnahme zur Behebung desselben ausgeführt. Dementsprechend können Variablen für mehrere Aufgaben in separaten Blöcken innerhalb des Registers gespeichert werden, wobei die Variablen für jede Aufgabe vor einem Zugriff durch andere Aufgaben geschützt sind.
- Fig. 1 ist ein Blockschaltbild eines Befehlsprozessors mit einer erfindungsgemäßen Registerdatei.
- Fig. 2 zeigt die Verwendung eines Stapelzeigers bei der Zuordnung von lokalen Registern in der erfindungsgemäßen Datei; und
- Fig. 3 zeigt das in Zusammenhang mit der erfindungsgemäßen Registerdatei verwendete Schutzregister.
- Die erfindungsgemäße Registerdatei ist am besten in Zusammenhang mit der Fig. 1 verständlich, welche ein Blockschaltbild des Steuerabschnitts eines in einem Computer mit reduziertem Befehlssatz (RISC) verwendeten Befehlsprozessors 10. Obwohl die Registerdatei im folgenden in Zusammenhang mit dem Prozessor 10 beschrieben wird, geschieht dies lediglich zu Illustrationszwecken und die zahlreichen verschiedenen Vorteile der Registerdatei sind in einem weiten Bereich von Anwendungen nutzbar, wie für den Fachmann ersichtlich.
- Wie in Fig. 1 dargestellt, weist der Prozessor 10 ein Befehlsregister 12 auf, das den Prozessorbefehl in binärer Form speichert, der aus einem nicht dargestellten Cache-Speicher abgerufen wurde. Die meisten Prozessorbefehle geben zwei Operanden, welche die beiden Quellen der zu verarbeitenden Daten sind, und einen dritten Operanden an, der das Ziel angibt, an dem der sich ergebende Wert zu speichern ist. Normalerweise befinden sich diese Operanden in Registern, die in der erfindungsgemäßen Registerdatei 14 angeordnet sind. Bei dem bevorzugten Ausführungsbeispiel enthält die Datei 120 sogenannte "globale" Register zum Speichern von einfachen Nichtbereichsvariablen, die mehreren Vorgängen gemeinsam sind, und 120 sogenannte "lokale" Register zum Speichern einfacher Variablen und Parameter, die in einem einzelnen Vorgang verwendet werden. Die Registerdatei 14 dient dem Speichern von häufig verwendeten Daten, wie im folgenden beschrieben.
- Obwohl er als außerhalb der Registerdatei 14 liegend dargestellt ist, weist der Prozessor 10 ein Stapelzeigerregister (SP) 16, das innerhalb der Datei 14 als Register Nummer 3 angeordnet ist, und ein Indirektzeigerregister (IP) 18 auf, das als Register Nummer 2 vorgesehen ist. Die Registerdatei 14 weist als Register Nummer 1 ferner ein Register auf, das, wenn es in einem Befehl angesprochen wird, den Zugriff auf das in der Datei 14 enthaltene lokale Register bewirkt, dessen Adresse an den Bitpositionen 2-8 des IP-Registers 18 gespeichert ist. Als Register Nummer 0 ist ein Register in der Datei 14 vorgesehen, das, wenn es angesprochen wird, den Zugriff auf das globale Register in der Datei 14 bewirkt, dessen Adresse an den Bitpositionen 2-8 des IP-Registers bewirkt. Signale, die die Operandenabschnitte der in dem Befehlsregister 12 gespeicherten Befehle repräsentieren, werden zu einem von drei Summierern mit zwei Eingängen geleitet; ein erster Summierer 20 empfängt an einem erstes Eingang ein Signal, das den ersten Operanden des in dem Register 12 gespeicherten Befehls repräsentiert, und Signale, die den Inhalt des SP-Registers 16 repräsentieren, werden über ein UND- Gatter 22 zu einem zweiten Eingang des Summierers 20 geleitet. Das UND-Gatter 22 empfängt ferner ein Signal, das dem höchstwertigen Bit (MSB) des ersten Operanden des in dem Register 12 gespeicherten Befehls entspricht.
- Ein zweiter Summierer 24 und ein dritter Summierer 28 empfangen an einem ersten Eingang Signale, die jeweils den zweiten und den dritten Operanden des in dem Register 12 gespeicherten Befehls repräsentieren, und Signale, die den Inhalt des SP-Registers 16 repräsentieren, werden über die UND-Gatter 26 bzw. 30 zu einem zweiten Eingang des Summierers 24 bzw. 28 geleitet. Das UND- Gatter 26 und das UND-Gatter 30 empfangen ferner ein Signal, das dem msb des zweiten bzw. des dritten Operanden des in dem Register 12 gespeicherten Befehls entspricht.
- An einem Ausgang der Summierer 20 und 24 erzeugte Signale werden zu einem ersten bzw. zweiten Adressenleseeingang (READ-ADDR) der Registerdatei 14 sowie zu einem ersten bzw. zweiten Eingang einer Dekodierschaltung 32 geleitet. Signale, die an einem Ausgang des Summierers 28 erzeugt werden, werden zu einem Adressenschreibeingang (WRITE-ADDR) der Registerdatei 14 sowie zu einem dritten Eingang der Dekodierschaltung 32 geleitet.
- Ein Schutzregister 34 enthält Informationen, die angeben, auf welches unter bestimmten Registern i der Registerdatei 14 der in dem Register 12 gespeicherte Befehl zugreifen kann, wie im folgenden in Verbindung mit Mol-%3 beschrieben werden wird. Signale, die diese Schutzinformationen repräsentieren, werden zu einer kombinatorischen Auswählschaltung 36 geleitet, die ferner von der Dekodierschaltung 32 erzeugte Signale empfängt. Die Auswählschaltung 36 erzeugt an einem Ausgang ein Signal, das einen Versuch des Befehls im Register 12 anzeigt, auf ein bestimmtes Register in der Datei 14 zuzugreifen, das gemäß dem Inhalt des Schutzregisters 34 geschützt ist. In diesem Fall würde ein Computer-"Fehler" erkannt und geeignete Maßnahmen würden ergriffen. Auf diese Weise wird ein schnelles Wechseln von einer Aufgabe zu einer anderen in einer Multitasking-Betriebsart erleichtert, so daß Variablen für jede Aufgabe durch die Fähigkeit, den Zugriff auf bestimmte Register in der Datei 14 durch das Spezifizieren eines bestimmten Bitmusters in dem Schutzregister 34, vor einem Zugriff durch eine andere Aufgabe geschützt sind, wie im folgenden in Verbindung mit Fig. 3 beschrieben.
- Die Operation des SP-Registers 16 und des IP-Registers 18 läßt sich am besten in Verbindung mit der nachfolgenden Tabelle I beschreiben. Die Prozessorsteuerung 10 erlaubt vier Arten des Adressierens von Registern in der Datei 14 und diese werden von dem in der ersten Spalte der Tabelle I gezeigten Wert n bestimmt, wie durch die Operanden des im Register 12 gespeicherten Befehls angegeben. TABELLE I REGISTERDATEIADRESSIERMODI Registerspezifikation n Register Globales Register Lokales Register Globales Register
- Ein Befehl mit dem Operanden n, 2< =n< =127, bezieht sich auf das "globale" Register in der Datei 14, das an der Adresse n in der Datei 14 angeordnet ist. Da das msb in der binären Acht-Bit-Repräsentation von n in diesem Fall 0 ist, empfängt der Summierer 20, 24 bzw. 28 eine Gruppe von 0 von dem UND-Gatter 22, 26 bzw. 30 und entsprechend werden Signale, welche den von dem Operanden des im Register 12 gespeicherten Befehls empfangenen Wert n repräsentieren, ohne Veränderung am Ausgang des Summierers 20, 24 bzw. 28 erzeugt. IN Übereinstimmung mit der Zeile drei der Tabelle I wird das globale Register n in der Datei 14 zum Lesen oder Schreiben verwendet, wenn die von dem Summierer 20, 24 bzw. 28 erzeugten Signale zum ersten oder zweiten READ-ADRR-Eingang der Datei 14 oder dem WRITE-ADDR-Eingang der Datei 14 zugeführt werden.
- Ein Befehl mit einem Operanden n, 128< =n< =255 weist eine binäre Acht-Bit-Wiedergabe auf, bei der das msb 1 ist, und das UND-Gatter 22, 26 oder 30 geben jeweils Signale, die dem Inhalt des SP-Registers 16 entsprechen, an den zweiten Eingang des Summierers 20, 24 bzw. 28 weiter. Entsprechend werden die Signale, welche den von dem Operanden des im Register 12 gespeicherten Befehls empfangenen Wert n repräsentieren, im Summierer 20, 24 oder 28 um den im SP-Register 16 enthaltenen Wert erhöht. In Übereinstimmung mit der vierten Zeile der Tabelle I sind die Bezugnahmen auf "lokale" Register in der Datei 14 abhängig von dem Inhalt des SP-Registers 16. Daher ist der Zugriff auf lokale Register derart einstellbar, daß die Gruppe zusammenhängender Register der Datei 14, die von einem Vorgang benutzt werden, diejenigen überlappen kann, die von einem anderen Vorgang benutzt werden, wie im folgenden in Verbindung mit Fig. 2 beschrieben.
- Indem durch den in dem Register 12 gespeicherten Befehl ein Registerwert n von 0 angegeben ist, wird, in Übereinstimmung mit der Zeile eins der Tabelle I, das globale Register in der Datei 14 angesprochen, dessen Adresse an den Bitpositionen 2-8 des IP-Registers 18 gespeichert ist. Durch das Angeben eines Wertes 1 für n wird, in Übereinstimmung mit der Zeile zwei der Tabelle I, das lokale Register in der Datei 14 angesprochen, dessen Adresse an den Bitpositionen 2-8 des IP-Registers 18 gespeichert ist. Der Mechanismus, durch welchen dieser "indirekte" Adressiermodus implementiert wird, ist dem Fachmann bekannt und wird hierin nicht beschrieben.
- Die Gruppe der lokalen Register in der Datei 14, die von zwei verschachtelten Vorgängen A und B verwendet werden, wird im folgenden unter Bezugnahme auf Fig. 2 beschrieben. Beim Eintreten in den Vorgang A, wird der Inhalt des SP-Registers 16 derart eingestellt, daß er auf ein bestimmtes lokales Register zeigt. Bei dem in Fig. 2 dargestellten Vorgang A sind die Register 100, 102, 104 und 106 Variablen zugeordnet, die rein lokal für den Vorgang A sind. Beim Eintritt in den Vorgang B wird der Inhalt des SP-Registers 16 derart eingestellt, daß er auf das lokale Register 108 zeigt. Die lokalen Register 108. 110 und 112 wurden jedoch dem Vorgang A für Variablen zugeordnet, die dem Vorgang A und dem Vorgang B gemeinsam sind. Daher erfolgt eine Übertragung zwischen diesen Vorgängen über die lokalen Register 108, 110 und 112. Die lokalen Register 114, 116, . . ., 130 sind für Variablen vorgesehen, die rein lokal für den Vorgang B sind, obwohl, wenn ein Vorgang C aus dem Vorgang B abgerufen würde, eine mit 130 endende Gruppe der letztgenannten Register zur Übertragung zwischen den Vorgängen B und C verwendet werden könnte, indem der Inhalt des SP-Registers 16 derart eingestellt wird, daß er auf ein lokales Register 1 , . . ., 130 zeigt.
- Zusätzlich zu der in Fig. 2 dargestellten Übertragung zwischen zwei Vorgängen kann eine Übertragung zwischen mehreren Vorgängen über Variablen stattfinden, die in dem "globalen" Registerabschnitt der Datei 14 gespeichert sind, d. h., diejenigen Register in der Datei 14 mit den Adressen 2 bis 127.
- Die erfindungsgemäße Registerdatei 14 wird vorzugsweise in Verbindung mit einem Schutzmechanismus verwendet, der durch das in Fig. 3 dargestellte Schutzregister 34 gebildet wird. Bei dem bevorzugten Ausführungsbeispiel besteht die Registerdatei 14 aus 256 Registern, die in 16 Blöcke von jeweils 16 zusammenhängenden Registern gebildet sind. Das Schutzregister 34 weist ein 16-Bit- Register auf, das in der Lage ist, einen binären 16-Bit- Wert zu speichern, der, zum Beispiel durch eine binäre 1, angibt, daß der Zugriff auf einen bestimmten Block nicht gestattet ist. Ein exemplarisches Kodierverfahren ist in Fig. 3 dargestellt, bei dem das msb, Position 15, des Registers 34 dem Registerblock entspricht, der in der Datei 14 Adressen von 0 bis 15, einschließlich, aufweist, wobei die Position 14 dem Registerblock mit den Adressen 16 bis 31 entspricht, usw.
- Während des Dekodierens des in dem Register 12 gespeicherten Befehls wird die effektive Adresse der Operanden zur Dekodierschaltung 32 geleitet und die Auswählschaltung 36 vergleicht die Adressen der Operanden und die vom Inhalt des Registers 34 angegebenen verbotenen Register. Die Auswählschaltung 36 erzeugt ein Schutzverletzungssignal beim Erkennen eines Versuchs, auf ein verbotenes Register in der Datei 14 zuzugreifen, und es wird ein "Fehler" erzeugt, der die Verarbeitung des Befehls durch den Prozessor 10 unterbricht, so daß eine korrigierende Maßnahme getroffen werden kann.
- Auf diese Weise können Variablen für mehrere Aufgaben gleichzeitig in der Registerdatei 14 in verschiedenen Blöcken gespeichert werden, und die Variablen jeder Aufgabe sind vor einem Zugriff durch andere Aufgaben geschützt.
Claims (10)
1. Digitalprozessorsteuerungsvorrichtung (10) in einem
Computer mit reduziertem Befehlssatz, die zum Bewirken
der Ausführung einer Anzahl von Vorgängen, die jeweils
eine Anzahl von Befehlen beinhalten, welche jeweils die
Speicherplatzadresse einer Anzahl von Operanden und
wahlweise die Zieladresse des Befehlsergebnis
beinhalten, vorgesehen ist, mit:
- einer Registerdateieinrichtung (14), die zum Speichern
einer Vielzahl von Operanden oder Ergebnissen von
Befehlen an jeweiligen Adressen ausgebildet ist;
- einer Zeigereinrichtung (16), die zum Liefern von
Signalen während der Laufzeit, welche jeweilige
Speicherplatzadressen in der Dateieinrichtung
repräsentieren, ausgebildet ist;
- einer Befehlseinrichtung (12), die zum Liefern von
Signalen während der Laufzeit, welche
Dateieinrichtungsspeicherplatzadressen von Operanden und, wahlweise, von
Zielen repräsentieren, die jeweils einem der Befehle
eines Vorgangs zugeordnet sind, ausgebildet ist;
- einer Adresseneinrichtung, die auf die
Speicherplatzadressensignale und die Befehlssignale reagiert, um
Adressensignale zu erzeugen, welche die Adressen der
Operanden und, wahlweise, eines Ziels eines jeden dieser
Befehle in der Dateieinrichtung repräsentieren;
- wobei die Dateieinrichtung auf die Adressensignale hin
die Operanden aus liest und, wahlweise, ein Ergebnis an
den entsprechenden Adressen einschreibt; dadurch
gekennzeichnet, daß:
- jedem Vorgang eine dynamisch zugewiesene Zahl von
aufeinanderfolgenden Registern in der Dateieinrichtung
(14) zugeordnet sein kann, während einige einem Vorgang
zugeordnete Register einem zweiten Vorgang gemeinsam
sein können, dessen Operanden oder Ergebnisse denjenigen
des einen Vorgangs in der Dateieinrichtung benachbart
sind; und die Befehlssignale Speicherplatzadressen in
bezug auf die Speicherplatzadressen in der
Dateieinrichtung ausdrücken;
- die Dateieinrichtung (14) einen ersten Satz (2-127)
aufeinanderfolgender Register zum Speichern von
Operanden und, wahlweise, von Ergebnissen, die allen Vorgängen
global sind, und einen zweiten Satz (128-255)
aufeinanderfolgender Register zum Speichern von Operanden und,
wahlweise, von Ergebnissen, aufweist, die für bestimmte
Vorgänge spezifisch oder lokal sind; und
- die Adresseneinrichtung auf das
Speicherplatzadressensignal und einen vorbestimmten Teil der
Befehlssignale reagierende Logikeinrichtungen (22, 26, 30), um
festzustellen, ob ein Operand eines Befehls lokal oder
global ist, und auf die Logikeinrichtungen und die
Befehlssignale reagierende Summiereinrichtungen (20, 24,
28) aufweist, um das Adressenspeicherplatzsignal zu dem
Befehlssignal zu addieren, damit die Registeradresse für
den Operanden oder das Ergebnis nur dann erhalten wird,
wenn der Operand oder das Ergebnis für einen Vorgang
lokal ist.
2. Digitalprozessorsteuerungsvorrichtung nach Anspruch
1, dadurch gekennzeichnet, daß die Dateieinrichtung (14)
ein ausgewähltes Register (34) aufweist, das zum
Speichern der Identitäten von ausgewählten Adressen, die
nicht von Befehlen adressiert werden dürfen, ausgebildet
ist, und eine Einrichtung (32, 36) zum Erkennen eines
Versuchs eines Befehls eine der ausgewählten Adressen zu
adressieren vorgesehen ist, um ein
Schutzverletzungssignal zu liefern.
3. Digitalprozessorsteuerungsvorrichtung nach Anspruch
2, dadurch gekennzeichnet, daß die Register in der
Dateieinrichtung (14) in eine vorbestimmte Anzahl von
Blöcken unterteilt sind, wobei jeder Block eine
vorbestimmte Anzahl von aufeinanderfolgenden Registern
enthält, und jede Bit-Position des ausgewählten Registers
(34) einem vorbestimmten Registerblock entspricht.
4. Digitalprozessorsteuerungsvorrichtung nach einem der
vorhergehenden Ansprüche, dadurch gekennzeichnet, daß
die Dateieinrichtung (14) ein erstes vorbestimmtes
Register (18) aufweist, das durch Speichern der Adresse
eines Registers in der Dateieinrichtung als indirekter
Zeiger dient.
5. Digitalprozessorsteuerungsvorrichtung nach Anspruch
4, sofern auf Anspruch 2 zurückbezogen, dadurch
gekennzeichnet, daß die Dateieinrichtung (14) ein zweites
vorbestimmtes Register ("0") aufweist, dessen
Adressierung durch einen Befehl Zugriff auf ein globales
Register bewirkt, dessen Adresse in dem ersten vorbestimmten
Register gespeichert ist.
6. Digitalprozessorsteuerungsvorrichtung nach Anspruch
4 oder 5, sofern auf Anspruch 2 zurückbezogen, dadurch
gekennzeichnet, daß die Dateieinrichtung (14) ein
zweites vorbestimmtes Register ("1") aufweist, dessen
Adressierung durch einen Befehl Zugriff auf ein lokales
Register bewirkt, dessen Adresse in dem ersten vorbestimmten
Register gespeichert ist.
7. Verfahren zur Laufzeit-Speicherzuweisung bei einem
Computer mit reduziertem Befehlssatz, zum Bewirken der
Ausführung einer Anzahl von Vorgängen, welche jeweils
die Speicherplatzadresse einer Anzahl von Operanden und,
wahlweise, die Zieladresse des Befehlsergebnis
beinhalten, mit einer Steuerungsvorrichtung (10), mit:
- einer Registerdateieinrichtung (14) zum Speichern
einer Vielzahl von Operanden oder Ergebnissen von
Befehlen an jeweiligen Adressen;
- einer Zeigereinrichtung (16) zum Liefern von Signalen
während der Laufzeit, welche jeweilige
Speicherplatzadressen in der Dateieinrichtung repräsentieren;
- einer Befehlseinrichtung (12) zum Liefern von Signalen
während der Laufzeit, welche jeweilige
Speicherplatzadressen in der Dateieinrichtung von Operanden und,
wahlweise, von Zielen repräsentieren, die einem
jeweiligen der Befehle eines Vorgangs zugeordnet sind;
- einer Adresseneinrichtung, die auf die
Speicherplatzadressensignale und die Befehlssignale reagiert, um
Adressensignale zu erzeugen, welche die Adressen der
Operanden und, wahlweise, eines Ziels eines jeden dieser
Befehle in der Dateieinrichtung repräsentieren;
- wobei die Dateieinrichtung auf die Adressensignale hin
die Operanden ausliest und, wahlweise, ein Ergebnis an
den entsprechenden Adressen einschreibt; gekennzeichnet
durch:
a) das Setzen der Zeigereinrichtung, um die
Speicherplatzadresse des ersten Registers in der
Dateieinrichtung anzuzeigen, das einem ersten Vorgang zugeordnet
ist;
b) das dynamische Berechnen der Speicherplatzadresse
jedes nachfolgenden Registers des Vorgangs in bezug auf
die Adresse des ersten Registers; und
c) das Rücksetzen der Zeigereinrichtung, um die
Speicherplatzadresse des ersten Registers eines weiteren
Vorgangs anzuzeigen, und das Wiederholen des Schritts b)
für diesen weiteren Vorgang, wobei vom Benutzer gewählte
überlappende und gemeinsame Befehlsspeicherplatzadressen
zwischen dem ersten und weiteren Vorgängen vorhanden
sind.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß die Dateieinrichtung in eine vorbestimmte Anzahl von
Blöcken unterteilt ist, wobei jeder Block eine
vorbestimmte Anzahl von aufeinanderfolgenden Registern
enthält, ferner gekennzeichnet durch:
d) das Bestimmen eines oder mehrerer Blöcke als Blöcke
mit gesperrtem Zugriff;
e) Abbrechen der Ausführung eines Befehls mit einem
Operanden, der eine nach dem Schritt b) berechnete
Speicherplatzadresse innerhalb eines der Blöcke mit
gesperrtem Zugriff aufweist.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet,
daß die Steuervorrichtung in der Lage ist, mehrere
Aufgaben zu steuern, ferner gekennzeichnet durch:
f) Bestimmen sich gegenseitig ausschließender Blöcke als
Blöcke mit gesperrten Zugriff für jede dieser Aufgaben.
10. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß
die Dateiregistereinrichtung einen ersten Satz
aufeinanderfolgender Register und einen zweiten Satz
aufeinanderfolgender Register aufweist, wobei die Adressen des
ersten und des zweiten Satzes von Registern ein
vorbestimmtes numerisches Verhältnis zueinander aufweisen,
und daß die Berechnung nach Schritt b) eine
Speicherplatzadresse innerhalb des zweiten Satzes unter
Bezugnahme auf dieses Verhältnis betrifft.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/771,311 US4777588A (en) | 1985-08-30 | 1985-08-30 | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE3687724D1 DE3687724D1 (de) | 1993-03-25 |
| DE3687724T2 true DE3687724T2 (de) | 1993-07-22 |
Family
ID=25091411
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE8686306268T Expired - Lifetime DE3687724T2 (de) | 1985-08-30 | 1986-08-14 | Digitalprozessorsteuerung. |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US4777588A (de) |
| EP (1) | EP0213843B1 (de) |
| JP (1) | JP2678183B2 (de) |
| AT (1) | ATE85713T1 (de) |
| DE (1) | DE3687724T2 (de) |
Families Citing this family (40)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
| US5293594A (en) * | 1986-05-24 | 1994-03-08 | Hitachi, Ltd. | Data processing system having a plurality of register groups and a logical or circuit for addressing one register of one of the register groups |
| US4853849A (en) * | 1986-12-17 | 1989-08-01 | Intel Corporation | Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction |
| DE3726192A1 (de) * | 1987-08-06 | 1989-02-16 | Otto Mueller | Stacksteuerung |
| US5513353A (en) * | 1987-09-30 | 1996-04-30 | Kabushiki Kaisha Toshiba | Cache control system which permanently inhibits local but not global parameter data writes to main memory |
| JPH01263728A (ja) * | 1988-04-14 | 1989-10-20 | Sharp Corp | 相対指示可能なレジスタ群を備えたマイクロプロセッサ |
| JP3034873B2 (ja) * | 1988-07-01 | 2000-04-17 | 株式会社日立製作所 | 情報処理装置 |
| US5321823A (en) * | 1988-07-20 | 1994-06-14 | Digital Equipment Corporation | Digital processor with bit mask for counting registers for fast register saves |
| US5159680A (en) * | 1988-07-28 | 1992-10-27 | Sun Microsystems, Inc. | Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register |
| US5083263A (en) * | 1988-07-28 | 1992-01-21 | Sun Microsystems, Inc. | BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer |
| JPH0630063B2 (ja) * | 1989-02-17 | 1994-04-20 | 株式会社東芝 | マイクロプロセッサ |
| JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
| JPH0353328A (ja) * | 1989-07-20 | 1991-03-07 | Hitachi Ltd | レジスタ退避回復方法ならびに処理装置 |
| JP2991242B2 (ja) * | 1989-10-12 | 1999-12-20 | テキサス インスツルメンツ インコーポレーテッド | マルチプロセッサコンピュータシステム使用方法 |
| US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
| US5522072A (en) * | 1990-09-04 | 1996-05-28 | At&T Corp. | Arrangement for efficiently transferring program execution between subprograms |
| US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
| US5696957A (en) * | 1991-05-17 | 1997-12-09 | Ricoh Company, Ltd | Integrated circuit comprising a central processing unit for executing a plurality of programs |
| US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
| US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| DE69311330T2 (de) | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
| EP0638183B1 (de) | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
| JP3531166B2 (ja) | 1992-12-31 | 2004-05-24 | セイコーエプソン株式会社 | レジスタ・リネーミングのシステム及び方法 |
| 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 |
| GB2278698B (en) * | 1993-05-05 | 1997-09-03 | Hewlett Packard Co | Multi-ported data storage device with improved cell stability |
| JP3676411B2 (ja) * | 1994-01-21 | 2005-07-27 | サン・マイクロシステムズ・インコーポレイテッド | レジスタファイル装置及びレジスタファイルアクセス方法 |
| EP0676691A3 (de) * | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Vorrichtung zur Registersicherstellung und Umspeicherung in einem digitalen Rechner. |
| US5655132A (en) * | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
| US6086632A (en) * | 1996-10-31 | 2000-07-11 | Nec Corporation | Register optimizing compiler using commutative operations |
| US7114056B2 (en) | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
| US7117342B2 (en) | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
| US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
| JP2000353092A (ja) * | 1999-06-09 | 2000-12-19 | Nec Corp | 情報処理装置及びそのレジスタファイル切替方法 |
| JP2002182927A (ja) * | 2000-12-13 | 2002-06-28 | Hitachi Ltd | 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi |
| US20020099872A1 (en) * | 2001-01-19 | 2002-07-25 | Vinodha Ramasamy | Allocating registers for use in programming code modification |
| JP3763518B2 (ja) * | 2001-05-29 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、そのコンパイル方法およびプログラム |
| US7207032B1 (en) * | 2003-03-28 | 2007-04-17 | Applied Micro Circuits Corporation | Expanding a software program by insertion of statements |
| US7185329B1 (en) * | 2003-03-28 | 2007-02-27 | Applied Micro Circuits Corporation | Use of different color sequences for variables of different sizes and different semantics |
| US10839877B1 (en) * | 2019-04-23 | 2020-11-17 | Nxp Usa, Inc. | Register protection circuit for hardware IP modules |
| US12299451B2 (en) * | 2022-08-26 | 2025-05-13 | Texas Instruments Incorporated | Securing registers across security zones |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3461433A (en) * | 1967-01-27 | 1969-08-12 | Sperry Rand Corp | Relative addressing system for memories |
| US4037214A (en) * | 1976-04-30 | 1977-07-19 | International Business Machines Corporation | Key register controlled accessing system |
| JPS53142843A (en) * | 1977-05-19 | 1978-12-12 | Toshiba Corp | Data processor |
| JPS57103198A (en) * | 1980-12-19 | 1982-06-26 | Fujitsu Ltd | Storage protection system |
| JPS6073762A (ja) * | 1983-09-29 | 1985-04-25 | Fujitsu Ltd | 記憶保護方式 |
| JPS6140650A (ja) * | 1984-08-02 | 1986-02-26 | Nec Corp | マイクロコンピユ−タ |
-
1985
- 1985-08-30 US US06/771,311 patent/US4777588A/en not_active Expired - Lifetime
-
1986
- 1986-08-14 AT AT86306268T patent/ATE85713T1/de not_active IP Right Cessation
- 1986-08-14 DE DE8686306268T patent/DE3687724T2/de not_active Expired - Lifetime
- 1986-08-14 EP EP86306268A patent/EP0213843B1/de not_active Expired - Lifetime
- 1986-08-28 JP JP61203568A patent/JP2678183B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US4777588A (en) | 1988-10-11 |
| JPS6252637A (ja) | 1987-03-07 |
| EP0213843A3 (en) | 1989-03-29 |
| EP0213843A2 (de) | 1987-03-11 |
| JP2678183B2 (ja) | 1997-11-17 |
| EP0213843B1 (de) | 1993-02-10 |
| DE3687724D1 (de) | 1993-03-25 |
| ATE85713T1 (de) | 1993-02-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3687724T2 (de) | Digitalprozessorsteuerung. | |
| DE3785897T2 (de) | Steuervorrichtung zum vorabruf von befehlen. | |
| DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
| DE3151745C2 (de) | ||
| DE2735814C2 (de) | Nach dem Pipelineprinzip arbeitende Datenverarbeitungseinrichtung | |
| DE68928213T2 (de) | Inhaltadressierte Speicherzellenanordnung | |
| DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
| DE2417795C2 (de) | Datenverarbeitungsanlage | |
| DE60224774T2 (de) | Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit | |
| DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
| DE2718551C3 (de) | Adressenumsetzer | |
| DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
| DE2746505A1 (de) | Dv-system mit einer einrichtung zum adressieren in einem festwertspeicher abgelegter mikroprogramme | |
| DE69231237T2 (de) | Datenverarbeitungsvorrichtung | |
| DE2758829A1 (de) | Multiprozessor-datenverarbeitungssystem | |
| DE3043653A1 (de) | Datenverarbeitungsanlage | |
| DE2426874A1 (de) | Verfahren und schaltungsanordnung zur bestimmung der adressenart eines befehls | |
| DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
| DE2134816A1 (de) | Einrichtung zur adressenuebersetzung | |
| DE3689217T2 (de) | Datenverarbeitungseinrichtung mit einer Schaltung zur Prüfung der Adressgrenzen in einem virtuellen Speicher. | |
| DE69618831T2 (de) | ECC-geschützte Speicherorganisation mit Lese-Änderungs-Schreib-Pipelinezugriff | |
| DE68925376T2 (de) | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas | |
| DE2906685C2 (de) | ||
| DE3688973T2 (de) | Verarbeitungssystem in Pipelinestruktur und Mikroprozessor mit einem derartigen System. | |
| DE3855066T2 (de) | Operationsvorrichtung zur Verarbeitung von Daten willkürlicher Länge |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition |