DE3752287T2 - Registerzuweisung in einer Informationsverarbeitungsvorrichtung - Google Patents
Registerzuweisung in einer InformationsverarbeitungsvorrichtungInfo
- Publication number
- DE3752287T2 DE3752287T2 DE3752287T DE3752287T DE3752287T2 DE 3752287 T2 DE3752287 T2 DE 3752287T2 DE 3752287 T DE3752287 T DE 3752287T DE 3752287 T DE3752287 T DE 3752287T DE 3752287 T2 DE3752287 T2 DE 3752287T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- bank
- registers
- instruction
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000010365 information processing Effects 0.000 title description 23
- 230000008859 change Effects 0.000 claims description 14
- 239000004065 semiconductor Substances 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 101000864318 Homo sapiens Binder of sperm protein homolog 1 Proteins 0.000 description 2
- 102100025744 Mothers against decapentaplegic homolog 1 Human genes 0.000 description 2
- 101100009272 Mus musculus Dennd4b gene Proteins 0.000 description 2
- 241000153282 Theope Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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/30138—Extension of register space, e.g. register cache
-
- 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/30105—Register structure
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- 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
-
- 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
-
- 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
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 Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Description
- Die vorliegende Erfindung betrifft eine Informationsverarbeitungsvorrichtung, insbesondere eine Informationsverarbeitungsvorrichtung mit einem Organisationsverfahren und einem Zugriffsverfahren für Register, die für den Fall geeignet sind, daß die Zugriffszeiten für die Register viel kürzer sind als die Zugriffszeit für einen Hauptspeicher.
- Für ein Computersystem mit einer großen Anzahl von Registern wurde zum Beispiel in D. A. Patterson und C. H. Sequin: A VLSI RISC, Computer, Sept. 1982, IEEE (Seiten 8 bis 21) ein Verfahren zum Zuweisen der einzelnen Register diskutiert, das allgemein in der Form eines RISC-I-Mikroprozessors (im folgenden "RISC I" abgekürzt) realisiert wurde.
- Im RISC I gibt es Bänke mit 32 logischen Registern, die durch Befehle zugeordnet werden können, und es gibt insgesamt 138 physikalische Register. Wenn L&sub0;, L&sub1;,.. und L&sub3;&sub1; die logischen Register bezeichnen, die durch Befehle zugewiesen werden, und R&sub0;, R&sub1;, ... und R&sub1;&sub3;&sub7; die physikalischen Register, entsprechen die Register L&sub0;, L&sub1;, ... und L&sub9; immer den Registern R&sub0;, R&sub1;, ... und R&sub9;. Bei der Initialisierung werden die Register L&sub1;&sub0;, L&sub1;&sub1;, ... und L&sub3;&sub1; in Entsprechung zu den Registern R&sub1;&sub1;&sub6;, R&sub1;&sub1;&sub7;, ... und R&sub1;&sub3;&sub7; gehalten. Nach dem Aufruf des ersten Unterprogramms werden sie jedoch in Entsprechung zu den Registern R&sub1;&sub0;&sub0;, R&sub1;&sub0;&sub1;, ... und R&sub1;&sub2;&sub1; gebracht und nach dem Aufruf eines Unterprogramms direkt unterhalb der Ebene des ersten Unterprogramms in Entsprechung zu den Registern R&sub8;&sub4;, R&sub8;&sub5;, ... und R&sub1;&sub0;&sub5;. Auf diese Weise wird die Entsprechung der Register in Übereinstimmung mit der Verschachtelungsebene des Unterprogrammaufrufes um 16 Register nach unten oder vorne verschoben. Bei der Rückkehr von einem Unterprogramm wird die Entsprechung um 16 Register nach oben oder zurück gebracht. Vor dem Unterprogrammaufruf bezeichnen die logischen Register L&sub2;&sub6;, L&sub2;&sub7;, ... und L&sub3;&sub1; die gleichen physikalischen Register wie die, die den Registern L&sub1;&sub0;, L&sub1;&sub1;, ... und L&sub1;&sub5; nach dem Unterprogrammaufruf entsprechen.
- Auf diese Weise werden in Übereinstimmung mit den Verschachtelungsebenen der Unterprogrammaufrufe verschieden Teilregistersätze verwendet mit der Absicht, die "Speicher"- und "Umspeicher"-Operationen der Register zu verringern. Wenn die Anzahl der Verschachtelungsebenen der Unterprogrammaufrufe groß wird und die physikalischen Register aufgebraucht sind, tritt eine Unterbrechung auf.
- Mit diesem Stand der Technik sind folgende Probleme verbunden: (a) Ein verwendeter Registerbereich wird nur dann um eine feste Größe nach oben oder unten (vor oder zurück) verschoben, wenn ein Unterprogramm aufgerufen wird oder davon zurückgekehrt wird, und es wird überhaupt nicht in Betracht gezogen, eine Registerposition in einer Anpassung an die Eigenschaften eines Programms oder an eine Programmform zu ändern, so daß die Register nicht effektiv ausgenutzt werden. (b) Es muß eine große Anzahl von physikalischen Registern gesichert und umgespeichert werden, wenn sich eine Aufgabe ändert, und eine Vergrößerung der Anzahl der physikalischen Register führt nicht zu einer Erhöhung der Geschwindigkeit. (c) Wenn die physikalischen Register aufgebraucht sind, werden Registerspeicheroperationen usw. durch eine Interrupthandhabungsroutine ausgeführt, was eine lange Verarbeitungszeit zur Folge hat.
- Dabei stellt Punkt (b) ein Problem dahingehend dar, daß die Technologie der hochdichten Integration bei LSI's nicht voll ausgenutzt wird.
- Aufgabe der vorliegenden Erfindung ist es, die obigen Probleme zu vermeiden und eine Informationsverarbeitungsvor richtung zu schaffen, bei der die Speicher- und Umspeicheroperationen für Register mit Bezug zu Unterprogrammen und Aufgabenwechseln bei einer erhöhten Anzahl von physikalischen Registern verringert werden können, wodurch sich die Registerzuweisung beim Erstellen eines Programms vereinfacht und die Verarbeitungsgeschwindigkeit erhöht.
- Die erfindungsgemäße Informationsverarbeitungsvorrichtung ist im Patentanspruch 1 angegeben.
- Es werden nun die grundlegende Konzepte der vorliegenden Erfindung beschrieben.
- Der Wert eines Bereichsregisters wird in Übereinstimmung mit der Verwendung der Register zu jedem Zeitpunkt bei der Verarbeitung durch einen Computer durch die Software vorgegeben. Im allgemeinen ist eine Anzahl von Bereichsregistern vorgesehen, obwohl auch nur ein einziges Bereichsregister vorhanden sein kann. Das Registerfeld jedes einzelnen Befehls umfaßt einen Bereichsregisterteil, der das zu verwendende Bereichsregister angibt, und einen Registerverschiebungsteil, der innerhalb des angegebenen Bereichs eine relative Registeradresse bezeichnet. Das Bereichsregister wird manchmal durch ein spezielles Register realisiert und in anderen Fällen durch ein Register eines bestimmten Bereichs (im folgenden "bestimmtes Register" genannt) in einem Registerblock mit allgemeinen Registern. Bei der Verwendung eines speziellen Registers sind Befehle für das Laden und Speichern des Wertes des Registers vorgesehen. Im Gegensatz dazu gibt es bei der Verwendung des bestimmten Registers keine Zuordnung des Bereichsregisters entsprechend dem bestimmten Bereich, und die Adresse des zu verwendenden Bereichsregisters wird nur durch die Registerverschiebung zugewiesen.
- Als Mechanismus zum Zusammensetzen einer Registeradresse aus dem Wert des zugeordneten Bereichsregisters und dem Registerverschiebungswert wird manchmal ein Addierer zum arithmetischen Addieren beider Werte verwendet und manchmal eine ODER-Schaltung hoher Geschwindigkeit.
- Für die Bestimmung des einem einzelnen Register folgenden Registers und des vorhergehenden Registers sind die Register in der Form einer Ringes angeordnet, wodurch das Vorschieben und Zurückziehen einer zu benutzenden Registerposition gleich behandelt werden kann.
- Um Störungen in Programmen zu vermeiden, bei denen in jedem Programm Register fixiert werden, und um eine effiziente Verwendung der Register sowie eine Vereinfachung der Registerzuweisung zu erhalten, sind Registerbänke jeweils aus einer bestimmten Anzahl von Registern derart vorgesehen, daß jede verwendete Registerbank durch den Wert für das Bereichsregister bestimmt werden kann.
- Um die Speicher- und Umspeicherprozesse für die Register bei Unterprogrammaufrufen und Aufgabenwechseln gering zu halten, ist der Registerblock in eine Anzahl von Registerbereichen (Registerbänken) aufgeteilt, die weiter in eine Ringbank aus einer Anzahl von Bänken, die eine zu verwendende Bankposition mit dem Aufruf und der Rückkehr von bzw. zu einem Unterprogramm vor- und zurückschieben, und eine Anzahl von globalen Bänken aufgeteilt sind, deren Zuordnung sich mit der Aufgabenänderung ändern kann, wobei Banksteuerbefehle zum Steuern der Verwendung davon und Banksteuerzeiger dafür vorgesehen sind.
- Wenn eine Ringbank vorgesehen ist, in der Bänke mit jeweils l&sub0; Registern in m Bänke gruppiert sind und wobei ein Satz von globalen Bänken aus n Bänken besteht, bestehen die jeweiligen globalen Bänke aus l&sub1;, l&sub2;, ... ln Register, wobei die Register mit den Nummern l&sub0; · m + l&sub1; + l&sub2; + ... + ln als Ganzes vorliegen. In diesem Fall kann die maximale Anzahl von Registern l&sub0;, l&sub1;, l&sub2;, ... und ln durch den Registerverschiebungsteil des Befehls zugewiesen werden. Jede Bank der Ringbank wird in einer Form verwendet, die dem entsprechenden einen der in Verschachtelungsebenen verschachtelten Unterprogrammaufrufe zugeordnet ist, während jede globale Bank in einer Form verwendet wird, die der entsprechenden einen der Aufgaben zugeordnet ist, die asynchron ausgeführt werden. Das heißt, daß bezüglich der Ringbank, wenn sich die Verschachtelungsebene des Unterprogrammaufrufs um eins vertieft, eine Bank an der nächsten Position der ringförmigen Positionen als die gegenwärtige Bank verwendet wird und die Bank, die bis dahin als gegenwärtige Bank verwendet wurde, zur vorhergehenden Bank wird. Wenn sich die Verschachtelungsebene durch die Rückkehr von einem Unterprogramm um eins erhöht, geht die ringförmige Position um eins zurück, um die vorhergehende Bank wird als gegenwärtige Bank verwendet und die Bank an der der ringförmigen Positionen vorhergehenden Position ist die neue vorhergehende Bank. Die Zuordnung der globalen Bank kann sich bei einer Aufgabenänderung ändern, beim Aufruf und bei der Rückkehr von und zu einem Unterprogramm innerhalb der gleichen Aufgabe wird die Zuweisung jedoch nicht geändert und der Inhalt nicht automatisch gespeichert und umgespeichert. Eine der globalen Bänke wird von einer Systemaufgabe fest zur Handhabung von Interrupten und dergleichen verwendet, diese globale Bank wird "Systembank" genannt.
- Informationen, die lokal in einem einzigen Unterprogramm verwendet werden, werden gewöhnlich in die Ringbank eingegeben, während globale Informationen, die über die Aufteilung von Unterprogrammaufrufen festgehalten werden, und vorübergehende Informationen, die zum Zeitpunkt eines Unterprogrammaufrufs nicht zu speichern und umzuspeichern sind, in die globale Bank eingegeben werden. Wenn Informationen, die zu einem Unterprogramm einer niedrigeren Ebene zu geben sind, im Register einer gegenwärtigen Bank gehalten werden, kann das aufgerufene Unterprogramm sich darauf als das Register einer vorhergehenden Bank beziehen. Wenn Informationen, die als Funktionswert oder dergleichen von einem aufgerufenen Unterprogramm zu einem Unterprogramm einer höheren Ebene zu geben sind, im Register einer vorhergehenden Bank gehalten werden, kann nach der Rückkehr das als das Register einer gegenwärtigen Bank bezeichnet werden.
- Als Banksteuerzeiger sind ein gegenwärtiger Bankzeiger zum Festhalten der Position einer gegenwärtig im Gebrauch befindlichen Bank, ein vorhergehender Bankzeiger zum Festhalten der Position einer vorhergehenden Bank und ein globaler Bankzeiger zum Festhalten der Position einer globalen Bank vorgesehen, und außerdem gibt ein gültiger Bankzeiger die Grenzen von gültigen Informationseinheiten an und ein Bankstapelzeiger die Speicherstelle einer Ringbank.
- Als Banksteuerbefehle sind ein Ringbankvorschubbefehl und ein Ringbankrückziehbefehl, die das Vorschieben und Zurückziehen einer Ringbank, das automatische Speichern von gültigen Informationen unmittelbar vor deren Zerstörung und das automatische Umspeichern von gespeicherten Informationen unmittelbar vor einem Bezug dazu steuern, ein Bankstatusladebefehl und ein Bankstatusspeicherbefehl, die die Zuweisung einer gobalen Bank ausführen und das Einstellen von Ringbanksteuerinformationen sowie die Zuordnung eines Ringbankspeicherbereichs, und ein Blocktransferbefehl vorgesehen, der Bankinhalte kollektiv überträgt.
- Damit es möglich ist, das Register unter den Registern einer gegenwärtigen Bank zu bezeichnen, das seinen Inhalt zum Zeitpunkt eines späteren Ringbankvorschubs oder Rückzugs halten soll, ist ein Anzeigevektor vorgesehen, dessen Bit i 1 ist, wenn das Register i dem entspricht, und das 0 ist, wenn nicht, und der Vektor wird im bestimmten Register der gegenwärtigen Bank festgehalten.
- Als Befehlsschema können die Registerfelder von nahezu allen Befehlen die Register der globalen Bänke angeben, so daß ein Programm erstellt werden kann, das nur gobale Bänke benutzt.
- Es ist außerdem ein globaler Bankmodus, in dem die Register der Ringbank so behandelt werden wie die der globalen Bank, wodurch es möglich wird, die Anzahl der Bänke der globalen Bank zu erhöhen, und ein Ringbankmodus vorgesehen, wobei zwischen dem Ringbankmodus und dem globalen Bankmodus durch ein Programm umgeschaltet werden kann.
- Um Sicherungsoperationen der Ringbank bei Aufgabenänderungen zu vermeiden oder zu verringern, ist eine Anzahl von Ringbänken vorgesehen, und jeder aus einer Anzahl von Aufgaben werden eine Ringbank und eine globale Bank zugewiesen. Die Aufgaben mit den ihnen so zugewiesenen Bänken können geändert werden, ohne daß sowohl für die Ringbank als auch die globale Bank Speicher- und Umspeicherprozesse erforderlich sind.
- Wenn die Position eines Registers als Registeradresse mit einer Binärzahl ausgedrückt wird, wobei die Anzahl der Register in jedem Registerbereich eine Potenz von 2 ist und wobei der Wert eines Bereichsregisters ein ganzzahliges Vielfaches der Potenz von 2 ist, kann die Position des tatsächliche verwendeten Registers auf der Basis des Wertes des Bereichsregisters und eines im Registerverschiebungsteil angegebenen Werts durch eine ODER-Schaltung erzeugt werden, wodurch sich die Verarbeitungsgeschwindigkeit erhöht. Wenn die Registerpositionen durch Binärzahlen von 0 bis 2p - 1 ausgedrückt werden, können das auf ein Register mit der Registeradresse i folgende Register und das diesem vorhergehende Register leicht berechnet werden als die Register mit den Registeradressen mod(i + 1, 2p) bzw. mod(i - 1, 2p). Wenn in einer Ringbank, die aus einer Gruppierung von 2r Registerbänken hervorgeht, von denen jede aus 2q Registern besteht, der Wert des Banksteuerzeigers auf eine ganze Zahl so groß wie 2q eingestellt wird, können die folgende und die vorhergehende Bank einer Bank, die mit der Adresse i · 2q beginnt, leicht als die Bänke mit den Registeradressen mod((i + 1) · 2q, 2p+q) bzw. mod((i - 1) · 2q, 2p+q) berechnet werden.
- Wenn die Zahl der Register in den einzelnen globalen Bänken eines globalen Banksatzes identisch auf eine feste Zahl l&sub1; gesetzt wird, wobei die Zahl der Bänke der jeweiligen Ringbänke identisch ist mit einer festen Zahl m und wobei die Zahl der Register in den jeweiligen Bänken der Ringbank gleich einer festen Zahl l&sub0; ist, kann ein Programm laufen, ob nun eine globale Bank oder eine Ringbank gewählt ist.
- Durch das Einbauen des Registerblocks und des Registerzugriffsmechanismusses in einen Halbleiterchip wie einem Rechenwerk läßt sich die Häufigkeit des Übertragens von Informationen zwischen dem Halbleiterchip und dessen Umgebung stark verringern, und es wird eine Erhöhung der Verarbeitungsgeschwindigkeit erhalten.
- Bei der erfindungsgemäßen Informationsverarbeitungsvorrichtung wird der Wert eines Bereichsregisters in einem Teil eingestellt, der der Ausführung eines Befehls mit der Verwendung von allgemeinen Registern vorhergeht, wie etwa im Kopfteil eines Programms oder Unterprogramms. Wenn entsprechend der zu behandelnden Art von Informationen ein zu verwendender Registerbereich geändert wird, können für die verschiedenen Arten von Informationen verschiedene Bereichsregister verwendet werden. Wenn bei einem Befehl mit einem Bereichsregisterteil i und einem Registerverschiebungsteil d der Wert des Bereichsregisters i gleich Ai ist, wird die Adresse des Registers, das bei dem Befehl tatsächlich verwendet wird, zu Ai + d. Beim Zusammensetzen einer Registeradresse mit einer ODER-Schaltung auf der Basis des Wertes des Bereichsregisters und eines Registerverschiebungswertes wird ein Programm so aufgebaut, daß der Registerverschiebungswert auf einen numerischen Wert begrenzt ist, der mit höchstens l' Bit ausgedrückt werden kann, wobei l' eine Zahl bezeichnet, die kleiner ist als die Bitlänge des Registerverschiebungsteils, und daß der Wert des Bereichsregisters auf einen numerischen Wert beschränkt ist, dessen untere l' Bits 0 sind. Der in der ODER-Schaltung zusammengesetzte Wert wird dann gleich dem in einem Addierer zusammenaddierten Wert, so daß keine Fehlfunktion auftritt.
- Der Wert des Bereichsregisters kann zu jedem beliebigen Zeitpunkt festgesetzt werden, ohne auf den Kopfteil des Unterprogramms usw. festgelegt zu sein. Wenn das Programm läuft, kann daher die Zuordnung der verwendeten Register nach dem Willen des Programmierers gemäß dem Gebrauch der Register in der Vergangenheit und dem in der Zukunft erforderlichen Gebrauch der Register geändert werden.
- Fig. 1 ist ein Blockschaltbild einer ersten Ausführungsform der erfindungsgemäßen Informationsverarbeitungsvorrichtung;
- Fig. 2(a) bis 2(e) sind Formatdiagramme der wesentlichen Teile von Befehlen für die erfindungsgemäße Informationsverarbeitungsvorrichtung;
- Fig. 3 ist ein Anordnungsdiagramm der wesentlichen Teile einer Informationsverarbeitungsvorrichtung, die eine zweite Ausführungsform der Erfindung darstellt;
- Fig. 4 ist ein Anordnungsdiagramm der wesentlichen Teile einer dritten Ausführungsform der vorliegenden Erfindung;
- Fig. 5 ist eine Diagramm für den Aufbau eines Registerblocks in der Fig. 4;
- Fig. 6 ist ein Diagramm des Registerbezeichnungsteils eines Befehls bei einer vierten Ausführungsform der vorliegenden Erfindung;
- Fig. 7 ist eine Diagramm für das Format eines Bankstatussteuerbefehls in der Fig. 6;
- Fig. 8 ist ein Diagramm zur genauen Erläuterung des Speicherns und Umspeicherns einer Registerbank bei der vorliegenden Erfindung;
- Fig. 9 ist ein Anordnungsdiagramm der wesentlichen Teile einer fünften Ausführungsform der vorliegenden Erfindung; und
- Fig. 10 ist ein Diagramm für den Fall, daß der Befehlsprozessor der Fig. 4 auf einem einzigen Halbleiterchip untergebracht ist.
- Genaue Beschreibung der bevorzugten Ausführungsformen:
- Es werden nun Ausführungsformen der Erfindung anhand der Zeichnungen genauer beschrieben.
- Zuerst wird ein Beispiel für ein Verfahren der Verwendung von Registerbänken bei der erfindungsgemäßen Informationsverarbeitungsvorrichtung erläutert, wobei l die Anzahl der von dem Registerverschiebungsteil eines Befehls für die Informationsverarbeitungsvorrichtung angegebene Anzahl von Registern, m die Anzahl der Bänke einer Ringbank und n die Anzahl der Bänke einer globalen Bank ist.
- Beim Starten eines Programms wird ein Bankstatusladebefehl verwendet, um den Wert eines gegenwärtigen Bankzeigers auf 0, den eines vorhergehenden Bankzeigers auf l(m - 1), den eines globalen Bankzeigers auf eine dem Programm zugeordnete Bankadresse, den eines gültigen Bankzeigers auf l(m - 1) und den eines Bankstapelzeigers auf eine Stelle zu setzen, die in dem Programm als Bankspeicherbereich verwendet wird.
- Beim Aufruf eines Unterprogramms werden Informationseinheiten, die als Argumente zu dem Unterprogramm zu liefern sind, in die Register einer gegenwärtigen Bank eingegeben, und in den jeweiligen Registern der gegenwärtigen Bank wird ein Speicherindikatorvektor gesetzt, woraufhin die Befehlsfolge für das Unterprogramm ausgeführt wird. Wenn die Anzahl der Argumente zu groß ist, um sie in den Registern der gegenwärtigen Bank unterzubringen, wird der überfließende Teil durch einen Speicher zugeliefert.
- In dem aufgerufenen Unterprogramm wird zuerst ein Ringbankvorschubbefehl ausgeführt. Bei dem Befehl wird der Wert des gegenwärtigen Bankzeigers vor dem Aufruf als der neue Wert des vorhergehenden Bankzeigers genommen, und die direkt folgende Bankadresse wird bezüglich der ringförmigen Adressen (eine Bankadresse i + l, wenn der Wert i des gegenwärtigen Bankzeigers vor dem Aufruf kleiner ist als l(m - 1), und eine Bankadresse 0, wenn er l(m - 1) ist) als der neue Wert des gegenwärtigen Bankzeigers gesetzt. Bei dieser Gele genheit sichert der neue vorhergehende Bankzeiger den Inhalt eines Registerblocks, der von einem Speicherindikatorvektor unter den Bänken bezeichnet wird, die von einem gültigen Bankzeiger angegeben werden, an einer Stelle, die von einem Bankstapelzeiger angegeben wird, und der Wert des gültigen Bankzeigers wird hinsichtlich der ringförmigen Adressen zu der nächsten Bankadresse vorgeschoben, und der Wert des Bankstapelzeigers wird gemäß der Mange an gespeicherten Daten vorgeschoben. Es erfolgt keine Banksicherung durch den Ringbankvorschubbefehl, es sei denn, der neue Wert des vorhergehenden Bankzeigers erreicht den gültigen Bankzeiger.
- Wenn die als Argumente zugeführten Informationseinheiten im Unterprogramm verwendet werden, erzeugt das Programm einen Befehl zum Bezug auf den Inhalt eines Registers in der vorhergehenden Bank. Die Informationen in einem gegenwärtigen Register, das von dem Wert i des Registerverschiebungsteils auf der Aufrufseite angegeben wird, können als der Inhalt des vorherigen Registers bezeichnet werden, das von dem Wert i des Registerverschiebungsteils auf der Aufrufseite angegeben wird. Die Informationen in einer globalen Bank auf der Aufrufseite können auf der Aufrufseite so verwendet werden wie sie sind.
- Bei der Rückkehr von einem Unterprogramm werden zuerst die zu der Aufrufseite zurückzugebenden Informationen, etwa ein Funktionswert, erforderlichenfalls in das vorherige Register eingegeben. Danach wird ein Ringbankrückziehbefehl ausgeführt. Dieser Befehl dient dazu, den Wert eines vorherigen Bankzeigers vor der Rückkehr auf den Wert eines neuen gegenwärtigen Bankzeigers zu setzen und dazu, die vorhergehende ringförmige Adresse (i - l, wenn die Adresse i des neuen vorhergehenden Bankzeigers größer ist als 0, und l(m - 1), wenn sie 0 ist) auf den neuen Wert des vorhergehenden Bankzeigers zu setzen. Bei dieser Gelegenheit wird, wenn der neue Wert des gegenwärtigen Bankzeigers gleich dem des gültigen Bankzeigers wird, der Inhalt des Bankspeicherbereiches, der von dem vorhergehenden Bankzeiger angezeigt wird, übertragen, um dadurch den Inhalt umzuspeichern, während der neue Wert des vorhergehenden Bankzeigers auf den des gültigen Bankzeigers gesetzt wird und ein Bankstapelzeiger gemäß dem Ausmaß der Übertragung zurückgezogen wird. Der Speicherindikatorvektor, der das Register bezeichnet, zu dem der Inhalt zu übertragen ist, ist im Kopfteil der Daten enthalten, die vom Bankspeicherbereich übertragen werden.
- Wenn eine Ausnahme wie ein Interrupt aufgetreten ist, wird die Befehlausführungsadresse zu diesem Zeitpunkt mittels des Stapelzeigers der Systembank in einen Stapel gedrückt, und danach beginnt das Verarbeitungssystem mit der Verarbeitung des Ausnahmeverarbeitungsprogramms entsprechend der Art der Ausnahme. Bei dem Ausnahmeverarbeitungsprogramm werden die Werte des gegenwärtigen Bankzeigers, des vorhergehenden Bankzeigers und des Bankstapelzeigers beim Auftreten der Ausnahme durch einen Bankstatusspeicherbefehl gespeichert, woraufhin Werte, die bei dem Ausnahmeverarbeitungsprogramm zu verwenden sind, durch einen Bankstatusladebefehl in den Zeigern gesetzt werden.
- Bei Aufgabenänderungen, die von einer Software wie dem Betriebssystem oder dergleichen bewirkt werden, werden die Werte des gegenwärtigen Bankzeigers, des vorhergehenden Bankzeigers, des globalen Bankzeigers, des gültigen Bankzeigers und des Bankstapelzeigers für die laufende Aufgabe entsprechend dem Bankstatusspeicherbefehl gespeichert und danach die Werte für die Zeiger für die nächste Aufgabe durch den Bankstatusladebefehl gesetzt. Dabei wird, wenn eine Ringbank auch bei einer anderen Aufgabe verwendet wird, der Inhalt der Ringbank durch einen Blockübertragungsbefehl gesichert und umgespeichert.
- Auf diese Weise werden bei einem Unterprogrammaufruf nur selten Register gesichert und umgespeichert, wodurch sich eine erhöhte Verarbeitungsgeschwindigkeit erreichen läßt.
- Es ist auch möglich, ein Programm laufen zu lassen, bei dem nur globale Bänke und keine Ringbänke verwendet werden. Wenn ein solches Programm als Aufgabe läuft, sind keine Sicherungs- und Umspeicherprozesse für die Ringbänke erforderlich. Wenn einer solchen Aufgabe die globalen Bänke so zugeordnet sind, daß es keine Überschneidungen mit anderen Aufgaben gibt, sind überhaupt keine Sicherungen und Umspeicherungen von Registern erforderlich. Wenn ein Interruptverarbeitungsprogramm oder dergleichen in einer solchen Form aufgebaut ist, ist die Verarbeitungsgeschwindigkeit sehr hoch. Eine große Anzahl von solchen Aufgaben kann durch die Anwendung eines globalen Bankmodusses verarbeitet werden, bei dem die Ringbank gleichermaßen wie globale Bänke behandelt werden.
- Auch bei einer Verwendung der Ringbank braucht bei einem kleinen Unterprogramm, das nur wenige Register benötigt, nicht immer der Ringbankvorschubbefehl im Kopfteil davon und der Ringbankrückziehbefehl im Endteil davon vorgesehen zu sein, sondern diese Befehle können weggelassen werden, um einen schnellen Unterprogrammaufruf zu erreichen. Bei einer Aufgabe, die weder die globale Bank noch die Ringbank mit einer anderen Aufgabe teilt; werden sowohl der Inhalt der globalen Bank als auch der der Ringbank ohne jede Änderung festgehalten, auch wenn sich die Aufgabe ändert. Wenn die Aufgabe erneut gestartet wird, kann daher die Verarbeitung sofort wieder am Unterbrechungspunkt beginnen.
- Die Fig. 1 ist eine Darstellung der Anordnung der wesentlichen Teile einer Informationsverarbeitungsvorrichtung bei der ersten Ausführungsform der vorliegenden Erfindung.
- Die Hauptbestandteile der ersten Ausführungsform der Informationsverarbeitungsvorrichtung sind ein Befehlsprozessor 1 und ein Hauptspeicher 2. Der Befehlsprozessor 1 umfaßt einen Registerblock 3 mit einer großen Anzahl von Betriebsregistern R&sub0;, R&sub1;, R&sub2;, ... und RN, ein Rechenwerk 4, einen Registerzugriffsmechanismus 5, einen Hauptspeicherzugriffsmecha nismus 6 und einen Befehlsdecoder 10. Der Hauptspeicheradressenraum des Hauptspeichers 2 und der Registeradressenraum des Registerblocks 3 sind separate Adressenräume. Bei der vorliegenden Ausführungsform werden die Registeradressen ausgedrückt durch binäre ganze Zahlen mit L Bit, 0, 1, 2, ... und 2L - 1, und N = 2L - 1. Im Registerzugriffsmechanismus 5 gibt es eine Bereichsregisterauswahlschaltung 20, einen Registerbereichszeiger 22, eine ODER-Schaltung 30 zum Zusammensetzen einer Registeradresse und eine Registerauswahlschaltung 31 und im Hauptspeicherzugriffsmechanismus 6 ein Übertragungsregister 41 und ein Hauptspeicheradressenregister 42.
- Der Befehlsdecoder 10 extrahiert Befehle aus einer Befehlsfolge, die direkt von einem Benutzer als Befehlsfolge für die Informationsverarbeitungsvorrichtung eingegeben wird, oder aus einer von einem Sprachprozessor erzeugten Befehlsfolge, in vorgegebener Reihenfolge aus dem Hauptspeicher 2, und er unterwirft jeden einzelnen Befehl der Verarbeitung, die den Regeln für den jeweiligen Bestandteil des Befehls entspricht. Ein typischer Befehl umfaßt einen Operationscodeteil 11, der die Art der Operation angibt, einen Registerbezeichnungsteil 12 und einen Hauptspeicherbezeichnungsteil 15. Der Registerbezeichnungsteil 12 umfaßt einen Bereichsregisterteil 13 und einen Registerverschiebungsteil 14 mit einer Länge von l Bit. Wenn i den Wert des Bereichsregisterteils 13 eines bestimmten Befehls bezeichnet, wird der Wert i zur Bereichsregisterauswahlschaltung 20 des Registerzugriffsmechanismusses 5 gegeben, und die R&sub1; Register 21 im Registerblock 3 werden als Berechsregister ausgewählt. Wenn bi den Inhalt der R&sub1; Register 21 bezeichnet, wird der Wert bi zum Registerbereichszeiger 22 gegeben. Da die Bitlänge des Registerverschiebungsteils 14 mit l angegeben wurde, wird die Registerauswahlschaltung 31 mit der logischen Summe beliefert, die durch Eingeben des Inhalts des Teils 24 mit den unteren l Bit der Registeradresse mit L Bit und den des Registerverschiebungsteils 14 in die ODER-Schaltung 30 erhalten wird. Außer dem werden die oberen (L - l) Bit der Registeradresse als der Wert selbst in den Teil 23 der oberen (L - l) Bit des Registerbereichszeigers 22 gegeben.
- Wenn der Wert des Bereichsregisters 21 durch bi ausgedrückt wird und eine Binärzahl, deren untere l Bit 0 sind, vorab eingestellt wird, wird die Registeradresse, die von der obigen ODER-Schaltung 30 zusammengesezt wird, gleich der arithmetischen Summe bi + d aus dem Wert bi und dem Wert d des Registerverschiebungsteils 14. Die unteren l Bit des Inhalts des Bereichsregisters 21 brauchen nicht immer auf 0 gesetzt zu werden.
- Wenn l' eine Zahl bezeichnet, die gleich oder kleiner als die Bitlänge l des Registerverschiebungsteils 14 ist, ist der Inhalt eines bestimmten Bereichsregisters eine Zahl, deren untere l' Bits 0 sind. Bei einem Befehl, bei dem die Adresse des Bereichsregisters im Bereichsregisterteil 13 verwendet wird, wird, wenn der Wert des Registerverschiebungsteils auf Zahlen begrenzt ist, die mit l' Bit ausgedrückt werden können, die Nummer des Registers, die von der obigen ODER-Schaltung 30 zusammengesetzt wird, gleich einem Wert, der aus der arithmetischen Summe der Werte des Bereichsregisters und des Registerverschiebungsteils erhalten wird. Welcher Wert als die Zahl l' zum Begrenzen des in den Registerverschiebungsteil 14 einzugebenden Wertes genommen wird, kann durch Software ausgewählt werden. Der Wert l' kann daher in Abhängigkeit vom Bereichsregistet variiert werden. Er kann darüberhinaus auch für ein Bereichsregister in Abhängigkeit von der Zeit der Benutzung variiert werden.
- Wenn auf die obige Weise aus dem Wert bi für das Bereichsregister 21, das durch einen bestimmten Befehl ausgewählt wird, und dem Wert d des Registerverschiebungsteils 14 die Registernummer bi + d zusammengesetzt wird und zu der Registerauswahlschaltung 31 gegeben wird, wird das Register (Rbi+d) 32 der Registeradresse bi als das bei diesem Befehl zu verwendende Register ausgewählt. Wenn der Inhalt des Ope rationscodeteils 11 des Befehls einen Befehl anzeigt, dessen Operand der Inhalt des ausgewählten Registers ist, wird der Inhalt des Registers Rbi+d zur ALU 4 gegeben und der Operand ausgeführt. Wenn andererseits der Inhalt des Operationscodeteils 11 einen Befehl bezeichnet, dessen Ergebnisregister das ausgewählte Register ist, wird das Ergebnis aus der ALU 4 in das Register Rbi+d gegeben. Wenn der Inhalt des Operationscodeteils 11 ein Ladebefehl ist, wird der Inhalt der Hauptspeicheradresse, die vom Hauptspeicherbezeichnungsteil 15 angegeben wird, in das Register Rbi+d gegeben, und wenn er einen Speicherbefehl anzeigt, wird der Inhalt des Registers Rbi+d im Hauptspeicher unter der Adresse gespeichert, die vom Hauptspeicherbezeichnungsteil 15 angegeben wird. Das Übertragungsregister 41 im Hauptspeicherzugriffsmechanismus 6 ist ein Register zum vorübergehenden Festhalten von Informationen, die zwischen dem Hauptspeicher 2 und dem Befehlsprozessor 1 übertragen werden, während das Hauptspeicheradressenregister 42 ein Register zum vorübergehenden Festhalten der Adresse des Hauptspeichers 2 ist, die zu diesem Zeitpunkt ausgewählt ist.
- Bei dieser Ausführungsform wird bei einem Befehl, bei dem der Inhalt des Bereichsregisterteils 13 Null ist, der Inhalt d des Registerverschiebungsteils 14 ohne jede Veränderung zur Registerauswahlschaltung 31 gegeben, und das Register, dessen Registeradresse d ist, wird als das Register zur Verwendung bei diesem Befehl ausgewählt. Das heißt, daß der Registerbereich, dessen Registeradresse mit 0 beginnt, als der bestimmte Registerbereich für das Bereichsregister verwendet wird. Es ist demgemäß möglich, mittels des Befehls mit einem Bereichsregisterteil 13, der 0 ist, den Wert des Bereichsregisters anzugeben.
- Die Fig. 2(a) bis 2(e) sind Formatdiagramme für Befehle für die erfindungsgemäße Informationsverarbeitungsvorrichtung. Sie zeigen verschiedene Befehlsformen mit einem Operationscode sowie einer Registeradresse und die Bezeich nung einer Hauptspeicheradresse bei jedem Befehl für die Informationsverarbeitungsvorrichtung. Neben den in der Zeichnung gezeigten Teilen sind Bestandteile der Befehle ein Teil, der zusätzliche Informationen anzeigt, ein Teil, der eine zu verwendende Konstante angibt, usw.
- Die Fig. 2(a) zeigt das Format eines Befehls mit einem Operationscodeteil 101, einem Registerbezeichnungsteil 102 und einem Hautpspeicherbezeichnungsteil 103. Es gibt einen Bereichsregisterteil 105 und einen Registerverschiebungsteil 106 im Registerbezeichnungsteil 102, und das zu verwendende Register wird auf die gleiche Weise wie in der Fig. 1 gezeigt ausgewählt. Im Hauptspeicherbezeichnungsteil 103 gibt es einen Registerbezeichnungsteil 104 für die Bezeichnung eines Basisregisters und einen Hauptspeicherverschiebungsteil 109 für die Bezeichnung einer relativen Adresse für den Wert des Basisregisters. Bei diesem Befehl läßt sich die Registeradresse b des zu verwendenden Registers auf die obige Weise auf der Basis eines Bereichsregisterteils 107 und eines Registerverschiebungsteils 108 finden, und B + D, das durch Addieren des Inhalts B des Registers Rb dieser Adresse und des Wertes D des Hauptspeicherverschiebungsteils 109 erhalten wird, wird zu der bei dem Befehl zu verwendenden Adresse des Hauptspeichers.
- Die Fig. 2(b) zeigt einen Befehl, dessen Hauptspeicherbezeichnungsteil 112 einen Registerbezeichnungsteil 113 zur Bezeichnung eines Basisregisters, einen Registerbezeichnungsteil 114 zur Bezeichnung eines Indexregisters und einen Hauptspeicherverschiebungsteil 121 umfaßt. Bei diesem Befehl wird das als Basisregister zu verwendende Register Rb auf die vorstehende Weise auf der Basis eines Bereichsregisterteils 117 und eines Registerverschiebungsteils 118 einerseits und eines Registerverschiebungsteils 118 andererseits gefunden, während das als Indexregister zu verwendende Register Rx auf die vorstehende Weise auf der Basis eines Bereichsregisterteils 119 und eines Registerverschiebungsteils 120 anderer seits gefunden wird, und wobei die Adresse, die aus der arithmetischen Summe der drei, des Inhalts des Basisregisters Rb, des Inhalts des Indexregisters Rx und des Wertes des Hauptspeicherverschiebungsteils 12 erhalten wird, als die bei diesem Befehl zu verwendende Adresse des Hauptspeichers 2 genommen wird.
- Die Fig. 2(c) zeigt das Format eines Befehls, bei dem zwei Register verwendet werden. Bei dem Befehl wird zur Angabe der Adresse des ersten Registers die auf der Basis des Bereichsregisterteils 124 und des Registerverscheibungsteils 125 eines Registerverschiebungsteils 122 auf obige Weise erhaltene Registeradresse bestimmt, während die auf die vorstehenden Weise auf der Basis des Bereichsregisterteils 126 und des Registerverschiebungsteils 127 des anderen Registerbezeichnungsteils 123 bestimmte Registeradresse dazu verwendet wird, die Adresse des zweiten Registers anzugeben. Die Verarbeitung erfolgt unter Verwendung des ersten und des zweiten Registers.
- Die Fig. 2(d) zeigt einen Befehl, nach dem im Falle der Verwendung eines Spezialregisterbereichs als Bereichsregister der Wert des Spezialbereichsregisters im Hauptspeicher gespeichert wird. Dieser Befehl beinhaltet einen Spezialregisterteil 130 zur Bezeichnung der Adresse des Spezialbereichsregisters und einen Hauptspeicherbezeichungsteil 131.
- Die Fig. 2(e) zeigt einen Befehl, bei dem ein Spezialbereichsregister und ein Allzweckregister verwendet wird. Der Befehl beinhaltet einen Spezialregisterteil 133 und einen Allzweckregisterteil 134, und die Register werden auf die vorstehende Weise mittels eines Bereichregisterteils 135 und eines Registerverschiebungsteils 136 ausgewählt.
- Die Fig. 3 zeigt die Anordnung der wesentlichen Teile einer Informationsverarbeitungsvorrichtung nach einer zweiten Ausführungsform der vorliegenden Erfindung. Bei dieser Ausführungsform ist ein Bereichsregisterblock 207, der aus einem Satz von Spezialbereichsregistern besteht, in einem Be fehlsprozessor 201 getrennt von einem allgemeinen Registerblock 203 angeordnet. Der allgemeine Registerblock 203 besteht aus allgemeinen Registern R&sub0;, R&sub1;, ... und RN, während der Bereichsregisterblock 207 aus Bereichsregistern Q&sub0;, Q&sub1;, ... und QK besteht. Wenn der Inhalt i eines Bereichsregisterteils 213 im Registerbezeichnungsteil 212 eines Befehls an eine Bereichsregisterauswahlschaltung 220 in einem Registerzugriffsmechanismus 205 gegeben wird, wird der Inhalt bi des Bereichsregisters (Qi) 221 im Bereichsregisterblock 207 zu einem Registerbereichszeiger 222 gesendet. Dieser Inhalt. bi des Bereichsregisters Qi und der Inhalt d des Registerverschiebungsteils 214 des Befehls werden in einem Registeradressenrechner 230 addiert, und der Summenwert bi + d wird zu einer Registerauswahlschaltung 231 gegeben. Im Ergebnis wird das Register (Rbi+d) 232 als das Register, das bei diesem Befehl zu verwenden ist, aus dem allgemeinen Registerblock 203 ausgewählt. Die anderen Teile wie eine ALU 204 und ein Hauptspeicherzugriffsmechanismus 206 sind die gleichen wie bei der ersten Ausführungsform, die anhand der Fig. 1 beschrieben wurde.
- Die Fig. 4 zeigt die Anordnung der wesentlichen Teile einer Informationsverarbeitungsvorrichtung nach einer dritten Ausführungsform der vorliegenden Erfindung. Die Hauptteile der Informationsverarbeitungsvorrichtung dieser Ausführungsform sind ein Befehlsprozessor 301 und ein Hauptspeicher 302. Der Befehlsprozessor 301 umfaßt einen Operationsregisterblock 303, eine ALU 306, einen Bereichsregisterblock 310, einen Registerzugriffsmechanismus 320, einen Hauptspeicherzugriffsmechanismus 330, einen Befehlsdecoder 340 und einen Bankstapelzeiger (BSP) 324. Der Operationsregisterblock 303 umfaßt eine Ringbank 304 und einen globalen Banksatz 305. Der Bereichsregisterblock 310 umfaßt vier Bereichsregister, das heißt, einen vorhergehenden Bankzeiger (PBNR) 311, einen gegenwärtigen Bankzeiger (CBNR) 312, einen gültigen Bankzeiger (VBNR) 313 und einen globalen Bankzeiger (GBNR) 314. Um den Inhalt der Ringbank 304 festzuhalten, sind im Hauptspeicher 302 der Bankstapelzeiger (BSP) 324 und ein Bankstapel 325 vorgesehen. Es gibt des weiteren ein Bankmoderegister (BMR) 323, das den Bankverwendungscode angibt. In der Fig. 4 stellen gestrichelte Linien die Zeiger für die Bereichsregister und den Bankstapelzeiger dar.
- Die Fig. 5(a) und 5(b) zeigen die Anordnung der Registerblöcke in der Fig. 4. Wie in der Fig. 5 (a) gezeigt, besteht die Ringbank 304 aus m Bänken RB&sub0;, RB&sub1;, RB&sub2;, ... und RBm-1, von denen jede aus l Registern R&sub0;', R&sub1;', R&sub2;', ... und Rl-1 besteht. Bei dem Bezugszeichen 351 bezeichnet hier RBx die gewünschte der Bänke und das Bezugszeichen 352 den Registerblock in der Bank.
- Wie in der Fig. 5(b) gezeigt, besteht der globale Banksatz 305 aus n globalen Bänken GB&sub0;, GB&sub1;, GB&sub2;, ... und GBn 1, von denen jede aus k Registern R&sub0;', R&sub1;', R&sub2;', ... und Rk-1' besteht. Bei dem Bezugszeichen 353 bezeichnet hier GBy die gewünschte der Bänke und das Bezugszeichen 354 den Registerblock in der Bank.
- Bei dieser dritten Ausführungsform der Informationsverarbeitungsvorrichtung kann die Anzahl m der Bänke der Ringbank 304 und die Anzahl n der Bänke des globalen Banksatzes 305 während des Betriebs der Informationsverarbeitungsvorrichtung geändert werden. Das heißt, daß es Befehle zum Ändern der Anzahl m der Bänke der Ringbank 304 auf z. B. 0, 4 und 8 und zum Ändern der Anzahl n der Bänke des globalen Banksatzes 305 auf z. B. 2, 4, 8 und 16 gibt. Wenn die Anzahl der Bänke der Ringbank 304 größer ist als 1, wird dies "Ringbankmodus" genannt, während, wenn die Anzahl der Bänke der Ringbank 304 0 ist und nur die Bänke des globalen Banksatzes verwendet werden können, dies der "globale Bankmodus" genannt wird. Dar Status der Vorrichtung bezüglich der Anzahl von Bänken der Ringbank 304 und der Anzahl von Bänken des globalen Banksatzes 305 wird durch das Bankmodusregister 323 angegeben. Wie später noch beschrieben wird, gibt es Befehle, die den Inhalt der Steuerregister festlegen und mit denen der Bankmodus geändert werden kann, woraufhin sich das Bankmodusregister 323 so verändert, daß der Bankmodus zum Zeitpunkt der Änderung angegeben wird.
- In der folgenden Beschreibung wird zuerst der Betrieb im Ringbankmodus beschrieben und dann der Betrieb im globalen Bankmodus.
- Die Fig. 6 zeigt den Registerbezeichnungsteil eines Befehls bei der vierten Ausführungsform der vorliegenden Erfindung. Viele der Befehle für diese Informationsverarbeitungsvorrichtung weisen neben einen Operationscodeteil 416 den Registerbezeichnungsteil 417 auf, wie es in der Fig. 6 gezeigt ist. Der Registerbezeichnungsteil 417 umfaßt einen Bereichsregisterteil 418 zur Angabe der globalen Bank, der gegenwärtigen Bank oder der vorhergehenden Bank, in der sich das Register befindet, das bei dem Befehl zu verwenden ist, und einen Registerverschiebungsteil 419 für die Angabe einer relativen Adresse in der Bank. Im Registerverschiebungsteil 419 ist eine Zahl von 0 bis (l - 1) angegeben. Bei manchen Befehlen ist das zu verwendende Register als eines der globalen Bank, der gegenwärtigen Bank oder der vorhergehenden Bank fixiert. Dabei wird manchmal der Bereichsregisterteil 418 bei der Angabe im Befehl weggelassen.
- Bei einem Befehl, bei dem der Inhalt des Registerverschiebungsteils 419 eine ganze Zahl i von 0 bis. (l - 1) ist, wird das Register i in der Bank, die vom globalen Bankzeiger 314 der Fig. 4 angezeigt wird, verwendet, wenn der Bereichsregisterteil 418 die globale Bank bezeichnet; wenn der Bereichsregisterteil 418 die gegenwärtige Bank bezeichnet, wird das Register i in der Bank verwendet, die vom gegenwärtigen Registerzeiger 312 angegeben wird; und wenn der Bereichsregisterteil 418 die vorhergehende Bank bezeichnet, wird das Register i in der Bank verwendet, die vom vorhergehenden Bankzeiger 311 angegeben wird.
- Im Ringbankmodus, in dem die Anzahl der Register der Ringbank größer als 1 ist, müssen die Werte der Banksteuerzeiger wie der gegenwärtige Bankzeiger initialisiert werden. Dazu wird ein Bankstatusladebefehl BSL oder ein Steuerregisterladebefehl MTCR verwendet.
- Die Fig. 7 zeigt ein Format für den Bankstatussteuerbefehl. Wie in der Fig. 7 gezeigt, weist der Bankstatusladebefehl 421 einen Operandbezeichnungsteil 422 auf. Bei dessen Benutzung werden fünf Felder 423, 424, 425, 426 und 427 im Speicher vorgesehen. Das Feld 423 enthält die Banknummer für den globalen Bankzeiger 314, das Feld 424 die Banknummer für den vorhergehenden Bankzeiger 311, das Feld 425 die Banknummer für den gegenwärtigen Bankzeiger 312, das Feld 426 Informationen für den gültigen Bankzeiger 313 und das Feld 427 die Stelle für den Bankstapelzeiger 324. Die Kopfposition der Reihe von Feldern wird vom Operandbezeichnungsteil 422 angegeben. Wenn der Bankstatusladebefehl 421 ausgeführt wird, werden die Werte der Banksteuerregister gemäß der obigen Entsprechung auf die Werte der Felder 423 bis 427 gesetzt. Wenn ein Bankstatusspeicherbefehl ausgeführt wird, werden die fünf Zeiger zum Zeitpunkt der Ausführung an Speicherstellen gespeichert, die vom Operandbezeichungsteil 422 des Befehls angegeben werden, wie es bei den Bezugszeichen 423, 424, 425, 426 und 427 der Fig. 7 gezeigt ist.
- Die Fig. 8 ist ein Diagramm zur Erläuterung der Speicherungs- und Umspeicherungsvorgänge einer Registerbank bei der vorliegenden Erfindung.
- Als Befehle beim Aufruf eines Unterprogramms gibt es neben dem Aufrufbefehl und dem Rückkehrbefehl einen Ringbankvorschubbefehl und einen Ringbankrückziehbefehl. Beim Unterprogrammaufruf werden die als Argument abzugebenden Informationen in das Register einer gegenwärtigen Bank eingegeben, während Informationen, die Speicheranzeigevektor genannt werden und die beim Bezugszeichen 429 in der Fig. 8 gezeigt sind, in das 0-te Register 440 der gegenwärtigen Bank 439 eingegeben werden, d. h. in eine Bank, die vom gegenwärtigen Bankzeiger 312 angezeigt wird. Der Speicheranzeigevektor 429 ist eine Information mit einer Länge von l Bit, wobei l die Anzahl von Registern in jeder Bank angibt. Wenn i eine ganze Zahl zwischen 0 und (l - 1) ist, ist der Wert des i-ten Bits bi beim Bezugszeichen 433 im Speicheranzeigevektor 429 gleich "1", wenn der Inhalt des i-ten Registers R&sub1; beim Bezugszeichen 443 in der gegenwärtigen Bank 439 zu sichern ist, und der Wert ist "0", wenn der Inhalt nicht zu sichern ist. Das 0-te Bit b&sub0; beim Bezugszeichen 430 ist immer auf "1" gesetzt. Wenn der Aufrufbefehl ausgeführt wird, nachdem der Speicheranzeigevektor im 0-ten Register R&sub0; 440 der gegenwärtigen Bank gesetzt wurde, wird eine Adresse nächst dem Befehl in einem Stapel für einen Unterprogrammbezug gestapelt, und es wird mit der Ausführung der Befehlsfolge für das bezeichnete Unterprogramm begonnen.
- Am Beginn der Befehlsfolge für das Unterprogramm wird der Ringbankvorschubbefehl ausgeführt. Wenn der Ringbankvorschubbefehl ausgeführt wird, verschieben sich die Werte des gegenwärtigen Bankzeiger (CBNR) 312 und des vorhergehenden Banzeiger (PBNR) 311 der Fig. 4 nach vorn und, falls erforderlich, ändern sich auch die Werte des gültigen Bankzeigers (VBNR) 313 und des Bankstapelzeigers (BSP) 324. Im folgenden werden die Funktionen des Ringbankvorschubbefehls mit den Symbolen CBNR&sub1;, PBNR&sub1;, VBNR&sub1; und BSP&sub1;, die die Werte der vier Zeiger vor der Ausführung des Ringbankvorschubbefehls angeben, und mit den Symbolen CBNR&sub2;, PBNR&sub2;, VBNR&sub2; und BSP&sub2; erläutert, die die Werte der vier Zeiger nach der Ausführung des Ringbankvorschubbefehls angeben. Bei der Ausführung des Ringbankvorschubbefehls werden zuerst der Wert CBNR&sub1;, der die gegenwärtige Bank vor der Ausführung dieses Befehls angibt, als der Wert PBNR&sub2; des vorhergehenden Bankzeiger nach der Ausführung des Befehls gesetzt, und der Wert des gegenwärtigen Bankzeigers wird auf einen Wert mod(CBNR&sub1; + 1, m) erneuert. Hier bezeichnet mod(a, b) dem Rest, der beim Teilen der ganzen Zahl a durch die ganze Zahl b erhalten wird, und m gibt die Anzahl der Register in einer Bank an. Wenn CBNR&sub1; = VBNR&sub1; ist, das heißt wenn der Wert des gegenwärtigen Bankzeiger vor dem Erneuern gleich dem des gültigen Bankzeigers vor dem Erneuern ist, dann wird von den Registern der Bank, die durch den Wert CBNR&sub2; des gegenwärtigen Bankzeiger nach dem Erneuern angegeben wird, der Inhalt des Registers, das von dem Speicheranzeigevektor im 0-ten Register der angezeigten Bank angegeben wird, selektiv an einer Stelle gesichert, die vom Bankstapelzeiger BSP&sub1; angegeben wird.
- Anhand der Fig. 8 wird der Mechanismus dieser Banksicherung erläutert. In der Bank 439, die nach dem Erneuern vom gegenwärtigen Bankzeiger CBNR&sub2; angegeben wird, gibt es l Register; das 0-te Register R&sub0; 440, das erste Register R&sub1; 441, das zweite Register R&sub2; 442, ... und das (l - 1)-te Register Rl-1 444. Auch gibt es im Speicheranzeigevektor 429 l Bit; das 0-te Bit b&sub0; 430, das erste Bit b&sub1; 431, das zweite Bit b&sub2; 432, ... und das (l - 1)-te Bit bl-1 434. Wenn für 0 ≤ i ≤ l - 1 der Inhalt des i-ten Registers 443 zu sichern ist, wird das i-te Bit bi 433 des Speicheranzeigevektors vorher auf "1" gesetzt, und wenn der Inhalt nicht zu sichern ist, wird das Bit bi auf "0" gesetzt. Dieser Speicheranzeigevektor 429 wird im 0-ten Register R&sub0; 440 der Bank 439 gespeichert. Wenn der Wert CBNR&sub1; des gegenwärtigen Bankzeigers vor dem Erneuern, das heißt der Wert PBNR&sub2; des vorhergehenden Bankzeigers nach dem Erneuern gleich dem Wert VBNR&sub1; des gültigen Bankzeigers vor dem Erneuern ist, wird der Speicheranzeigevektor 429, der im 0-ten Register R&sub0; 440 der neuen gegenwärtigen Bank 439 gespeichert ist, die vom Wert CBNR&sub2; des gegenwärtigen Bankzeigers nach dem Erneuern angezeigt wird, in der Richtung vom Bit bl-1 434 zum Bit b&sub0; 430 abgesucht. Wenn das Bit bi für 0 ≤ i ≤ (l - 1) gleich "1" ist, wird der Wert des Bankstapelzeigers (BSP) 324 um den Wert eines Registers nach vorne geschoben, und der mahlt des Registers R&sub1; wird an der Stelle gespeichert, die vom neuen Wert des Bankstapelzeigers im Bank stapel 325 angegeben wird. Wenn das Bit bi gleich "0" ist, wird der Bankstapelzeiger 324 nicht vorgeschoben, und es erfolgt auch kein Speichern des Registers R&sub1;. Der Wert des Bankstapelzeigers 324 zu dem Zeitpunkt, an dem der Speicheranzeigevektor 429 abgesucht wurde, während i zu l - 1, l - 2, ..., 2, 1 und 0 verändert wurde und die erforderlichen Registerspeicheroperationen wiederholt wurden, ist der Wert BSP&sub2;, der durch den Ringbankvorschubbefehl erneuert wurde. Da das 0-te Bit b&sub0; des Speicheranzeigevektors immer auf "1" gesetzt ist, wird der Wert des Register R&sub0; der gesicherten Bank an einer Stelle gespeichert, die vom Bankstapelzeiger nach dem Erneuern angezeigt wird, das heißt durch den obersten Teil des Bankstapels 325:
- Wenn diese Banksicherungsoperation beendet ist, wird der neue Wert VBNR&sub2; des gültigen Bankzeigers 313 auf der Basis des Wertes VBNR&sub1; vor dem Erneuern auf VBNR&sub2; mod(CBNR&sub1; + 1, m) gesetzt.
- Wenn der Wert PBNR&sub2; des vorhergehenden Bankzeigers nach dem Erneuern nicht gleich dem Wert VBNR&sub1; des gültigen Bankzeigers vor dem Erneuern ist, werden diese Banksicherungsoperationen nicht ausgeführt, und die Werte des Bankstapelzeigers 324 und des gültigen Bankzeigers 313 ändern sich nicht.
- Dies sind die Funktionen, die vom Ringbankvorschubbefehl ausgeführt werden.
- Bei der Rückkehr vom Unterprogramm wird gegebenenfalls ein Funktionswert oder dergleichen, der zur Aufrufseite zurückzugeben ist, in das Register der gegenwärtigen Bank eingegeben und danach der Ringbankrückziehbefehl ausgeführt, gefolgt von der Ausführung des Rückkehrbefehles. Wenn der Ringbankrückziehbefehl ausgeführt wird, werden die Werte des gegenwärtigen Bankzeigers CBNR 312 und des vorhergehenden Bankzeigers PBNR 311 zurückgesetzt und gegebenenfalls die Werte des gültigen Bankzeigers VBNR 313 und des Bankstapelzeigers BSP 324 geändert. Im folgenden werden die Funktionen des Ringbankrückziehbefehles unter Verwendung der Symbole CBNR&sub3;, PBNR&sub3;, VBNR&sub3; und BSP&sub3;, die die Werte der vier Zeiger vor der Ausführung dieses Befehles angeben, und der Symbole CBNR&sub4;, PBNR&sub4;, VBNR&sub4; und BSP&sub4; erläutert, die die Werte der vier Zeiger nach der Ausführung des Befehls angeben.
- Bei der Ausführung des Ringbankrückziehbefehls wird zuerst der Wert PBNR&sub3; des vorhergehenden Bankzeigers 311 vor dem Erneuern als der neue Wert CBNR&sub4; des gegenwärtigen Bankzeigers 312 eingestellt und der Wert des vorhergehenden Bankzeigers so erneuert, daß PBNR&sub4; = mod(PBNR&sub3; - 1, m) ist. Wenn der Wert CBNR&sub4; des gegenwärtigen Bankzeigers nach dem Erneuern der gleiche ist wie der Wert VBNR&sub3; des gültigen Bankzeigers 313 nach dem Erneuern, wird der Inhalt der Bank, die vom Wert PBNR&sub4; des vorhergehenden Bankzeigers nach dem Erneuern angegeben wird, selektiv anhand der Informationen umgespeichert, die vom Bankstapelzeiger 324 im Bankstapel 325 angezeigt werden.
- Anhand der Fig. 8 wird nun der Mechanismus der Bankwiederherstellung beschrieben. Zuerst wird der Inhalt des obersten Teils des Bankstapels 325, der durch den Wert BSP&sub3; des Bankstapelzeigers 324 vor dem Erneuern angegeben wird, in das 0-te Register R&sub0; der Bank eingegeben, die durch den Wert PBNR&sub4; des vorhergehenden Bankzeigers 311 nach dem Erneuern angegeben wird, und der Wert des Bankstapelzeigers 324 wird um ein Register zurückgesetzt. Im obersten Teil des Bankstapelzeigers 325 wurde zum Zeitpunkt des Unterprogrammaufrufs der Speicheranzeigevektor gesichert. Mit den obigen Operationen wird daher der Speicherindikator 429 in das Register R&sub0; 440 gegeben. Daraufhin wird der Inhalt des Sicherungsanzeigevektors 429 in der Richtung vom Bit b&sub1; 431 zum Bit bl-1 434 abgesucht. Wenn der Wert des Bits bi 433 für 1 ≤ i ≤ l - 1 gleich "1" ist, werden die Daten an der Stelle, die vom neuen Wert des Bankstapelzeigers 324 im Bankstapel 325 angezeigt wird, zum Register Ri 443 übertragen, und der Wert des Bankstapelzeigers 324 wird um ein Register zurückgesetzt. Wenn der Wert des Bits bi "0" ist, erfolgt keine Übertragung des Registers R&sub1; 443, und es wird auch der Bankstapelzeiger 324 nicht zurückgezogen. Der Wert des Bankstapelzeigers 324, der als das Ergebnis des Wiederholens dieser Operationen (l - 1)- mal erhalten wird, wobei i die Werte 1, 2, 3, ... und l - 1 durchläuft, ist der Wert BSP&sub4; nach dem Erneuern durch den Ringbankrückziehbefehl. Danach wird der Wert des gültigen Bankzeigers 313 um eins zurückgesetzt, das heißt es wird VBNR&sub4; = mod(VBNR&sub3; - 1, m) gebildet. Dieser Wert ist der gleiche wie der Wert des vorhergehenden Bankzeigers nach dem Erneuern.
- Wenn der Wert CBNR&sub4; des gegenwärtigen Bankzeigers nach dem Erneuern nicht gleich dem Wert VBNR&sub3; des gültigen Bankzeigers vor dem Erneuern ist, wird diese Bankumspeicheroperation nicht ausgeführt, und die Werte des Bankstapelzeigers 324 und des gültigen Bankzeigers 313 werden auch nicht verändert.
- Dies sind die Funktionen des Ringbankrückziehbefehls.
- Beim Rückkehrbefehl wird eine Rückkehradresse aus dem Unterprogramm-Bezugsstapel genommen, und es wird mit der Ausführung des Befehls begonnen, der an der Stelle liegt, die von der Rückkehradresse angegeben wird.
- Bei Aufgabenwechseln ist es manchmal erforderlich, die Inhalte der Ringbank kollektiv zu sichern und umzuspeichern. Dazu sind als Blockübertragungsbefehle ein Bankblockspeicherbefehl und ein Bankblockladebefehl vorgesehen.
- Bei dem Bankblockspeicherbefehl werden die Inhalte der Bänke von der einer Bank, die vom gültigen Bankzeiger VBNR angegeben wird, nächsten Bank bis zu einer Bank, die vom gegenwärtigen Bankzeiger CBNR angegeben wird, durch die gleichen Prozesse wie bei der Banksicherungsoperation des Ringbankvorschubbefehls im Bankstapel gespeichert. Diese Operation wird im folgenden erläutert.
- Wenn der Bankblockspeicherbefehl ausgeführt wird, wird zuerst geprüft, ob der Wert VBNR des gültigen Bankzei gers 313 gleich dem Wert CBNR des gegenwärtigen Bankzeigers 312 ist. Wenn die Werte nicht gleich sind, wird der Inhalt der einer Bank, die vom Wert VBNR angezeigt wird, das heißt der Bank, die durch mod(VBNR + 1, m) angezeigt wird, nächsten Bank durch die gleiche Operation im Bankstapel gespeichert, die als Banksicherungsoperation bei der Beschreibung des Ringbankvorschubbefehls erläutert wurde. Im Ergebnis wird der Wert BSP des Bankstapelzeigers 324 vorgeschoben, und der Wert VBNR des gültigen Bankzeigers 313 schiebt sich zur nächsten Bank vor. Für den neuen Wert VBNR wird geprüft, ob er gleich dem Wert CBNR des gegenwärtigen Bankzeigers ist oder nicht. Wenn er nicht gleich ist, wird die obige Banksicherungsoperation wiederholt. Wenn der Wert des gegenwärtigen Bankzeigers gleich dem des gegenwärtigen Bankzeigers wird oder wenn er von Anfang an gleich ist, wird die Ausführung des Bankblockspeicherbefehls beendet, ohne die Banksicherungsoperation auszuführen.
- Der Bankblockladebefehl ist ein Befehl, mit dem die Inhalte der vorhergehenden Bank und der gegenwärtigen Bank, die mit dem Bankblockspeicherbefehl gespeichert wurden, an die jeweiligen Bänke ausgegeben werden. Bei der Ausführung dieses Befehls haben der gültige Bankzeiger und der gegenwäertige Bankzeiger den gleichen Wert. Wenn der Bankblockladebefehl ausgeführt wird, wird die gleiche Bankumspeicheroperation ausgeführt, wie sie bei der Beschreibung der Funktionen des Ringbank-Bankrückziehbefehls angegeben wurde, um zuerst den Inhalt der Bank wiederherzustellen, die vom gegenwärtigen Bankzeiger 312 angezeigt wird, und um dann den Inhalt der Bank wiederherzustellen, die vom vorhergehenden Bankzeiger 311 angegeben wird. Im Ergebnis wird der Wert des gültigen Bankkzeigers zu dem des vorhergehenden Bankzeigers.
- Als Befehle zum Ändern des Bankstatusses gibt es einen Steuerregisterladebefehl MTCR und einen Steuerregisterspeicherbefehl MFCR, die die Steuerinformationen ändern, die den Status der Ringbank oder der globalen Bank anzeigen und die ebenfalls verwendet werden können. Mit diesen beiden Befehlen ist es möglich, die Werte des gegenwärtigen Bankzeigers 312, des vorhergehenden Bankzeigers 311, des gültigen Bankzeigers 313, des globalen Bankzeigers 314, des Bankstapelzeigers 324 und des Bankmodusregisters 323 der Fig. 4 einzeln anzugeben und sich einzeln darauf zu beziehen. Wenn der Inhalt des Bankmodusregisters 323 geändert wird, läßt sich die Anzahl der Bänke der Ringbank und die Anzahl der Bänke des globalen Banksatzes verändern. Wenn die Anzahl der Bänke der Ringbank auf Null gesetzt wird, wird der globale Bankmodus ausgebildet, in dem alle Bänke als globale Bänke verwendet werden können. Das heißt, daß im globalen Bankmodus Bänke, die im anderen Modus als Ringbank verwendet wurden, als globale Bänke verwendet werden können. Bei einem Befehl, der im globalen Bankmodus ausgeführt wird, kann der Adressenmmodusteil davon nicht eine vorhergehende Bank oder eine gegenwärtige Bank bezeichnen. Auch können im globalen Bankmodus der Ringbankvorschubbefehl und der Ringbankrückziehbefehl nicht verwendet werden.
- Die Fig. 9 zeigt die Anordnung der wesentlichen Teile einer Informatiorisverarbeitungsvorrichtung, die ein viertes ausführbares Beispiel auf der Basis der Konstruktion der Fig. 4 darstellt. Bei diesem Beispiel besteht ein Registerblock 503 in einem Befehlsprozessor 501 aus n globalen Bänken GB&sub0; 510, GB&sub1; 511, ... und GBn-1 513 und n Ringbänken R&sub0; 520, R&sub1; 521, ... Rn-1 523. Jede der globalen Bänke GB&sub0;, GB&sub1;, ... GBn-1 besteht aus k' Registern, wie es in der Fig. 5(b) gezeigt ist. Wie in der Fig. 5(a) gezeigt, besteht jede der Ringbänke R&sub0;, R&sub1;, ... Rn-1 aus m Bänken, von denen jede l Register umfaßt.
- Bei der Ausführungsform der Fig. 9 sind den Programmen, die asynchron ausgeführt werden, jeweils eine globale Bank und eine Ringbank zugeordnet. Auf diese Weise wird die Belastung durch das Sichern und Umladen der Registerblöcke bei Aufgabenwechseln verringert.
- Die Fig. 10 zeigt ein Beispiel, bei dem für das ausführbare Beispiel der Fig. 4 der Befehlsprozessor auf einem einzigen Halbleiterchip ausgeführt ist. Dieses Beispiel ist in einer Form ausgeführt, bei der der Halbleiterchip einen arithmetischen Registerblock 610, einen Registerzugriffsmechanismus 620, eine ALU 630, einen Hauptspeicherzugriffsmechanismus 640, einen Befehlsdecoder 650 und Steuerschaltungen dafür umfaßt.
- Auf diese Weise wird bei der vorliegenden Ausführungsform die Anzahl der Register, die zugeordnet werden können, durch die Anzahl der Bit eines Bereichsregisters bestimmt, die größer ist als die Anzahl der Bit im Registerbezeichnungsteil eines Befehlsregisters. Es kann daher auch dann eine sehr große Anzahl von Registern verwendet werden, wenn der Registerbezeichnungsteil jedes einzelnen Befehls kurz ist. Darüberhinaus kann durch Ausnutzen der Tatsache, daß eine große Anzahl von Registern verwendet werden kann, der Registerblock in einem oder in mehreren Stapeln benutzt werden. Auch in einem Fall, bei dem ein Registerblock eine sehr große Kapazität aufweist, kann daher ein Unterprogrammaufruf oder ein Aufgabenwechsel ausgeführt werden, ohne Register zu sichern und umzuspeichern oder durch Sichern und Umspeichern einer nur kleinen Anzahl von Bereichsregistern, und es ist ohne übermäßige Belastung eine schnelle Verarbeitung mit einer großen Anzahl schneller Register möglich. Besonders bei der dritten Ausführungsform ist beim Aufruf eines Unterprogramms und bei der Rückkehr davon kein Sichern und Umspeichern von Registern erforderlich, wenn nicht der gegenwärtige Bankzeiger über den gültigen Bankzeiger hinaus vorgeschoben wird und wenn der vorhergehende Bankzeiger nicht über den gültigen Bankzeiger hinaus zurückgezogen wird, so daß sich die Geschwindigkeit beim Bezug auf das Unterprogramm erhöht. Außerdem ist es möglich, asynchron ausgeführten Programmen verschiedene globale Bänke zuzuordnen und ein Programm zu erstellen, das eine bestimmte globale Bank benutzt, zum Bei spiel bei Programmen, die nur eine kleine Anzahl von Registern benötigen. In einem solchen Fall kann daher das Ersetzen von Registern beim Wechseln der Programme entfallen, und die Geschwindigeit des Programmwechsels, etwa bei einem Aufgabenwechsel, erhöht sich. Beim Bezug zu einem Unterprogramm können Argumente und Funktionswerte ohne Kopieren durch Register geliefert werden, wenn eine bis dahin gegenwärtige Bank dann als die nächste vorhergehende Bank betrachtet wird, so daß sich die Schnelligkeit des Bezugs zum Unterprogramm erhöht. Auch wenn die Ringbank gesichert und umgespeichert werden muß, wird ein Sicherungsanzeigeregister in jeder Bank der Ringbank gehalten, wodurch nur die wirklich erforderlichen Register gesichert und umgespeichert werden. Die Verarbeitungsgeschwindigkeit erhöht sich dadurch.
- Beim Stand der Technik ergab sich das Dilemma, daß sich die Belastung durch Registerspeicher- und Umspeichervorgänge bei Unterprogrammaufrufen und Aufgabenwechseln mit dem Asnteigen der Anzahl von physikalischen Registern erhöht. Bei der vorliegenden Ausführungsform dagegen verringert eine Vergrößerung der Anzahl der Register die Häufigkeit des Sicherns und Umspeicherns, so daß sich die Belastung dabei verringert. Im globalen Bankmodus kann die Vorrichtung auch ohne Sicherung und Umspeichern betrieben werden, so daß viele Aufgaben vorgesehen werden können, zwischen denen schnell umgeschaltet werden kann.
- Wenn wie bei der vierten Ausführungsform eine Anzahl von Ringbänken vorgesehen wird, kann auch bei einer Verwendung der Ringbänke das Sichern und Umspeichern von Registern bei Aufgabenwechseln entfallen, und es können schnelle Aufgabenwechsel ausgeführt werden.
- Wie beschrieben können bei der vorliegenden Erfindung die bei einzelnen Befehlen zu verwendenden Register beim Ablaufen des Programms bestimmt werden und nicht schon beim Erstellen des Programms. Es ist daher jederzeit eine optimale Registerzuordnung unter Berücksichtigung der vorherigen Ver wendung der Register und dem Erfordernis nach Registern zu diesem Zeitpunkt möglich. Auch ist die Anzahl der Register, die angegeben werden können, durch die Anzahl von Bit des Bereichsregisters bestimmt, die größer ist als die Anzahl von Bit im Registerbezeichnungsteil eines Befehls, so daß auch dann, wenn der der Registerbezeichnungsteil jedes einzelen Befehls kurz ist, eine sehr große Anzahl von Registern verwendet werden kann.
Claims (11)
1. Prozessoreinrichtung mit
einem Hauptspeicher (2; 302) zur Speicherung von Daten
und Befehlen mit einem Operationscodeabschnitt, wobei einige
dieser Befehle einen Registerzuweisungsabschnitt (12)
und/oder einen Hauptspeicherzuweisungsabschnitt (15)
enthalten, und wobei die Befehle eine Vielzahl von Programmen
bilden, von denen zumindest eines mehrere Unterprogramme
enthält,
einer ersten Einheit (10; 340) zum Decodieren von
Befehlen,
einer Vielzahl von diesen Programmen zugeordneten
Registern (3), wobei eine erste Gruppe (305) dieser Register zur
Ausführung der Vielzahl von Programmen bestimmt ist, und
wobei zumindest eine zweite Gruppe (304) dieser Register aus
mehreren Mehrfachregisterbereichen besteht, von denen jeder
selektiv den Unterprogrammen zugeordnet ist,
einer zweiten Einheit (5) zum Spezifizieren der Vielzahl
von Registern durch den Inhalt eines Auswahlregisters (31),
das durch ein bestimmtes Feld eines
Registerzuweisungsabschnitts eines decodierten Befehls und eines
Verschiebungsabschnitts (14) der decodierten Befehle spezifiziert ist, und
mit einer Prozessoreinheit (1; 301) zur Verarbeitung der
Befehle gemäß deren Operationscode sowie dem Inhalt des
Registerzuweisungsabschnitts und zur Verarbeitung von Daten aus
dem Hauptspeicher, wenn der Befehl einen
Hauptspeicherzuweisungsabschnitt enthält,
dadurch gekennzeichnet, daß
die erste Gruppe der Vielzahl von Registern mehrere
Untergruppen (353) enthält, die jeweils dem entsprechenden
Programm aus der Vielzahl von Programmen zugeordnet sind, daß
die zweite Gruppe der Vielzahl von Registern in
Mehrfachregisterbereiche unterteilt ist, die selektiv Unterprogrammen
zugeordnet sind, die ihrerseits zu einem der Programme gehören,
wobei die Anzahl der zweiten Gruppen kleiner oder gleich der
Anzahl der Untergruppen in der ersten Gruppe der Vielzahl von
Registern ist, und daß
verschiedene, den jeweiligen Untergruppen in der ersten
Registergruppe zugeordnete Programme asynchron abgearbeitet
werden können, ohne Speicher-/Umspeicheroperationen für die
Untergruppen von Registern zu benötigen.
2. Prozessoreinrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß die zweite Registergruppe adressierbare,
fortfolgend in einer ringförmigen Blockkonfiguration (304)
angeordnete Register aufweist.
3. Prozessoreinrichtung nach Anspruch 1, gekennzeichnet
durch
eine Anzeigeeinheit zur Anzeige einer Anzahl der
Untergruppen in der ersten Registergruppe und einer Anzahl von
Mehrfachregisterbereichen der zweiten Registergruppe,
wobei bestimmte Befehle Operationscodes besitzen, die
anzeigen, daß der Zustand der Anzeigeeinheit zu ändern ist,
um die Anzahl der Mehrfachregisterbereiche der zweiten
Registergruppe zu ändern, und wobei
die Verarbeitungseinheit Mittel enthält, die auf die
bestimmten Befehle zur Änderung des Zustands der Anzeigeeinheit
ansprechen.
4. Prozessoreinrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß die erste Einheit zum Decodieren von Befehlen,
die Vielzahl von Registern und die Prozessoreinheit auf einem
einzigen Halbleiterchip in Form eines Mikroprozessors
implementiert sind.
5. Prozessoreinrichtung nach Anspruch 1, gekennzeichnet
durch eine Vielzahl von Zuweisungseinheiten für
Mehrfachregisterbereiche, die jeweils Informationen zur Zuweisung eines
bestimmten Mehrfachregisterbereichs speichern, wobei das
Umschalten zwischen den Mehrfachregisterbereichen durch Auswahl
der entsprechenden Zuweisungseinheit für die
Mehrfachregisterbereiche vorgenommen werden kann.
6. Prozessoreinrichtung nach Anspruch 5, dadurch
gekennzeichnet, daß die Verarbeitungseinheit Mittel enthält, die
auf den Operationscode bestimmter Befehle ansprechen, um in
jede Zuweisungseinheit für die Mehrfachregisterbereiche
Informationen von bestimmten Befehlen zur Zuweisung eines
Mehrfachregisterbereichs einzuschreiben.
7. Prozessoreinrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß
das Auswahlregister (314) Informationen speichert, die
einen einem Unterprogramm zugewiesenen
Mehrfachregisterbereich anzeigen, wobei deren Inhalt durch den Operationscode
der von der ersten Einheit decodierten Befehle gesteuert
wird, und wobei eines der Register in dem durch das
Auswahlregister angezeigten Registerbereich durch den
Registerzuweisungsabschnitt spezifiziert ist, und
wobei die Operationscodes einiger Befehle Operationen
anzeigen, mit denen der Inhalt des Auswahlregisters erhöht
oder zurückgesetzt wird, ein Unterprogramm von einem
laufenden Unterprogramm aufgerufen wird oder das laufende
Unterprogramm zum vorhergehenden Unterprogramm zurückkehrt.
8. Prozessoreinrichtung nach Anspruch 7, gekennzeichnet
durch ein Register zur Informationsspeicherung, das eine der
Untergruppen der ersten Registergruppen anzeigt.
9. Prozessoreinrichtung nach Anspruch 8, gekennzeichnet
durch ein Register zur Informationsspeicherung, das einen
Mehrfachregisterbereich anzeigt, der hinter demjenigen durch
das Auswahlregister bezeichneten Mehrfachregisterbereich
liegt.
10. Prozessoreinrichtung nach Anspruch 7, dadurch
gekennzeichnet, daß die zweite Einheit Mittel enthält zur
Ausführung einer OR-Operation zwischen den im Auswahlregister
gespeicherten Informationen und einem durch den
Registerzuweisungsabschnitt des Befehls spezifizierten Verschiebungswert,
um eine Registeranzeige zu erhalten, die einen oberen
Abschnitt aufweist, der einem oberen Abschnitt der in dem
Auswahlregister gespeicherten Informationen entspricht, und die
einen unteren Abschnitt aufweist, der durch eine OR-Operation
zwischen einem unteren Abschnitt der in dem Auswahlregister
gespeicherten Informationen und dem Verschiebungswert
gebildet ist.
11. Prozessoreinrichtung nach Anspruch 10, dadurch
gekennzeichnet, daß
eine oder mehrere signifikante Bitpositionen des unteren
Abschnitts der in dem Auswahlregister gespeicherten
Informationen den Wert Null hat, wenn entsprechende Bitpositionen
des Verschiebungsabschnitts der Befehle
Registerzuweisungsinformationen enthalten, und daß
eine oder mehrere signifikante Bitpositionen des
Auswahlregisters Informationen zur Bestimmung von
Mehrfachregisterbereichen enthalten,
wobei die Anzahl der die Mehrfachregisterbereiche
bildenden Register entsprechend der in dem Auswahlregister
gespeicherten Informationen und dem durch den
Registerzuweisungsabschnitt des Befehls spezifizierten Verschiebungswert
selektiv variiert werden kann.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61085442A JP2545789B2 (ja) | 1986-04-14 | 1986-04-14 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3752287D1 DE3752287D1 (de) | 1999-09-02 |
DE3752287T2 true DE3752287T2 (de) | 2000-03-23 |
Family
ID=13858982
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3789122T Expired - Fee Related DE3789122T2 (de) | 1986-04-14 | 1987-04-14 | Datenverarbeitungsvorrichtung. |
DE3752287T Expired - Fee Related DE3752287T2 (de) | 1986-04-14 | 1987-04-14 | Registerzuweisung in einer Informationsverarbeitungsvorrichtung |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3789122T Expired - Fee Related DE3789122T2 (de) | 1986-04-14 | 1987-04-14 | Datenverarbeitungsvorrichtung. |
Country Status (5)
Country | Link |
---|---|
US (4) | US5214786A (de) |
EP (2) | EP0241909B1 (de) |
JP (1) | JP2545789B2 (de) |
KR (1) | KR900005285B1 (de) |
DE (2) | DE3789122T2 (de) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
US5117487A (en) * | 1988-08-26 | 1992-05-26 | Kabushiki Kaisha Toshiba | Method for accessing microprocessor and microinstruction control type microprocessor including pointer register |
JPH02143329A (ja) * | 1988-11-25 | 1990-06-01 | Toshiba Corp | プロセッサシステム |
KR930007185B1 (ko) * | 1989-01-13 | 1993-07-31 | 가부시키가이샤 도시바 | 레지스터뱅크회로 |
JPH02187825A (ja) * | 1989-01-13 | 1990-07-24 | Mitsubishi Electric Corp | コンピュータ |
JPH0630063B2 (ja) * | 1989-02-17 | 1994-04-20 | 株式会社東芝 | マイクロプロセッサ |
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 |
US5305446A (en) | 1990-09-28 | 1994-04-19 | Texas Instruments Incorporated | Processing devices with improved addressing capabilities, systems and methods |
JPH04242433A (ja) * | 1991-01-17 | 1992-08-31 | Nec Corp | マイクロプロセッサ |
JP2668456B2 (ja) * | 1991-01-22 | 1997-10-27 | 三菱電機株式会社 | ビット検索回路及びそれを備えたデータ処理装置 |
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 |
US5524250A (en) * | 1991-08-23 | 1996-06-04 | Silicon Graphics, Inc. | Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers |
US5557766A (en) * | 1991-10-21 | 1996-09-17 | Kabushiki Kaisha Toshiba | High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank |
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 |
US5438669A (en) * | 1991-11-20 | 1995-08-01 | Hitachi, Ltd. | Data processor with improved loop handling utilizing improved register allocation |
EP0636256B1 (de) | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
DE69308548T2 (de) | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
EP0569969B1 (de) * | 1992-05-12 | 1998-03-04 | Nec Corporation | Mikrocomputer mit Befehlsspeicher für Befehle zum Auslesen interner Bedingungen |
US5640582A (en) * | 1992-05-21 | 1997-06-17 | Intel Corporation | Register stacking in a computer system |
EP1107111A3 (de) | 1992-12-31 | 2002-02-06 | Seiko Epson Corporation | System und Verfahren zur Änderung der Namen von Registern |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
JP3433471B2 (ja) * | 1993-05-27 | 2003-08-04 | ソニー株式会社 | 光ディスク装置における信号処理方法 |
US5535405A (en) * | 1993-12-23 | 1996-07-09 | Unisys Corporation | Microsequencer bus controller system |
WO1995032466A1 (en) * | 1994-05-19 | 1995-11-30 | Vlsi Technology, Inc. | Flexible register mapping scheme |
US5655132A (en) * | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
US5896528A (en) * | 1995-03-03 | 1999-04-20 | Fujitsu Limited | Superscalar processor with multiple register windows and speculative return address generation |
US5774745A (en) * | 1995-03-31 | 1998-06-30 | Cirrus Logic, Inc. | Method and apparatus for writing and reading entries in an event status queue of a host memory |
JP2798121B2 (ja) * | 1995-08-04 | 1998-09-17 | 日本電気株式会社 | データ処理装置 |
JP2889845B2 (ja) * | 1995-09-22 | 1999-05-10 | 松下電器産業株式会社 | 情報処理装置 |
US5812823A (en) * | 1996-01-02 | 1998-09-22 | International Business Machines Corporation | Method and system for performing an emulation context save and restore that is transparent to the operating system |
EP0976034B1 (de) | 1996-01-24 | 2005-10-19 | Sun Microsystems, Inc. | Verfahren und vorrichtung zur stapel-cachespeicherung |
JPH1011352A (ja) * | 1996-06-19 | 1998-01-16 | Hitachi Ltd | データ処理装置およびそのレジスタアドレス変換方法 |
US5854939A (en) * | 1996-11-07 | 1998-12-29 | Atmel Corporation | Eight-bit microcontroller having a risc architecture |
US5809327A (en) * | 1997-03-27 | 1998-09-15 | Atmel Corporation | Eight-bit microcontroller having a risc architecture |
JPH1139169A (ja) * | 1997-07-18 | 1999-02-12 | Toshiba Corp | コンパイル方法,コンパイラ,例外ハンドラ及びプログラム記憶媒体 |
US6128728A (en) | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US6219783B1 (en) | 1998-04-21 | 2001-04-17 | Idea Corporation | Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor |
US6314510B1 (en) | 1999-04-14 | 2001-11-06 | Sun Microsystems, Inc. | Microprocessor with reduced context switching overhead and corresponding method |
JP2001344127A (ja) * | 2000-05-31 | 2001-12-14 | Hitachi Ltd | システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法 |
JP2002073330A (ja) * | 2000-08-28 | 2002-03-12 | Mitsubishi Electric Corp | データ処理装置 |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
JP3763518B2 (ja) * | 2001-05-29 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、そのコンパイル方法およびプログラム |
US6826681B2 (en) * | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7107439B2 (en) * | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
US7230935B2 (en) * | 2002-10-24 | 2007-06-12 | Widefi, Inc. | Physical layer repeater with selective use of higher layer functions based on network operating conditions |
US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
US7103754B2 (en) * | 2003-03-28 | 2006-09-05 | International Business Machines Corporation | Computer instructions for having extended signed displacement fields for finding instruction operands |
US7020747B2 (en) * | 2003-03-31 | 2006-03-28 | Intel Corporation | Dual-stack memory architecture and compiling method |
US9454490B2 (en) | 2003-05-12 | 2016-09-27 | International Business Machines Corporation | Invalidating a range of two or more translation table entries and instruction therefore |
US7530067B2 (en) * | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7356710B2 (en) * | 2003-05-12 | 2008-04-08 | International Business Machines Corporation | Security message authentication control instruction |
US7339592B2 (en) * | 2004-07-13 | 2008-03-04 | Nvidia Corporation | Simulating multiported memories using lower port count memories |
US8364934B2 (en) * | 2006-07-11 | 2013-01-29 | Freescale Semiconductor, Inc. | Microprocessor and method for register addressing therein |
US7966474B2 (en) * | 2008-02-25 | 2011-06-21 | International Business Machines Corporation | System, method and computer program product for translating storage elements |
US7971041B2 (en) * | 2008-05-29 | 2011-06-28 | Advanced Micro Devices, Inc. | Method and system for register management |
US9182984B2 (en) | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
US10867031B2 (en) | 2015-07-23 | 2020-12-15 | Apple Inc. | Marking valid return targets |
KR20180080463A (ko) * | 2017-01-04 | 2018-07-12 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
US20230051855A1 (en) * | 2021-08-13 | 2023-02-16 | Infineon Technologies Ag | Call and return instructions for configurable register context save and restore |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1281167A (en) * | 1969-01-02 | 1972-07-12 | Plessey Telecomm Res Ltd | Improvements relating to data processing systems |
US3794980A (en) * | 1971-04-21 | 1974-02-26 | Cogar Corp | Apparatus and method for controlling sequential execution of instructions and nesting of subroutines in a data processor |
US3781810A (en) * | 1972-04-26 | 1973-12-25 | Bell Telephone Labor Inc | Scheme for saving and restoring register contents in a data processor |
FR2230258A5 (de) * | 1973-05-16 | 1974-12-13 | Honeywell Bull Soc Ind | |
FR2253425A5 (de) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US3972029A (en) * | 1974-12-24 | 1976-07-27 | Honeywell Information Systems, Inc. | Concurrent microprocessing control method and apparatus |
US4079448A (en) * | 1975-04-07 | 1978-03-14 | Compagnie Honeywell Bull | Apparatus for synchronizing tasks on peripheral devices |
JPS53142841A (en) * | 1977-05-19 | 1978-12-12 | Toshiba Corp | Data processor |
DE2846495C2 (de) * | 1977-10-25 | 1993-10-21 | Digital Equipment Corp | Zentraleinheit |
US4173782A (en) * | 1978-01-03 | 1979-11-06 | International Business Machines Corporation | Return and link mechanism |
US4388685A (en) * | 1978-08-04 | 1983-06-14 | Digital Equipment Corporation | Central processor with apparatus for extended virtual addressing |
JPS5576448A (en) * | 1978-12-05 | 1980-06-09 | Nippon Telegr & Teleph Corp <Ntt> | Multi-group register control system |
US4323963A (en) * | 1979-07-13 | 1982-04-06 | Rca Corporation | Hardware interpretive mode microprocessor |
JPS5616248A (en) * | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
US4320456A (en) * | 1980-01-18 | 1982-03-16 | International Business Machines Corporation | Control apparatus for virtual address translation unit |
JPS6017130B2 (ja) * | 1980-06-06 | 1985-05-01 | 日本電気株式会社 | アドレス制御装置 |
KR860001434B1 (ko) * | 1980-11-21 | 1986-09-24 | 후지쑤 가부시끼가이샤 | 데이타 처리시 스템 |
US4499535A (en) * | 1981-05-22 | 1985-02-12 | Data General Corporation | Digital computer system having descriptors for variable length addressing for a plurality of instruction dialects |
US4399507A (en) * | 1981-06-30 | 1983-08-16 | Ibm Corporation | Instruction address stack in the data memory of an instruction-pipelined processor |
US4450522A (en) * | 1981-09-11 | 1984-05-22 | Data General Corporation | Apparatus for deriving addresses of data using displacements from base addresses which change only on call and return |
US4445173A (en) * | 1981-09-11 | 1984-04-24 | Data General Corporation | Improved system for saving and restoring state in call and return operations |
US4428045A (en) * | 1981-09-11 | 1984-01-24 | Data General Corporation | Apparatus for specifying and resolving addresses of operands in a digital data processing system |
JPS59105152A (ja) * | 1982-12-07 | 1984-06-18 | Fujitsu Ltd | 複数レジスタの一括ストア方式 |
US4613935A (en) * | 1983-02-02 | 1986-09-23 | Couleur John F | Method and apparatus for pipe line processing with a single arithmetic logic unit |
US4611278A (en) * | 1983-04-01 | 1986-09-09 | Honeywell Information Systems Inc. | Wraparound buffer for repetitive decimal numeric operations |
JPS6054049A (ja) * | 1983-09-02 | 1985-03-28 | Hitachi Ltd | デ−タ処理装置におけるサブル−チンリンク制御方式 |
DE3587643T2 (de) * | 1984-03-02 | 1994-03-24 | Nippon Electric Co | Informationsverarbeitungseinheit mit Unterbrechungsfunktion. |
US4652993A (en) * | 1984-04-02 | 1987-03-24 | Sperry Corporation | Multiple output port memory storage module |
US4633434A (en) * | 1984-04-02 | 1986-12-30 | Sperry Corporation | High performance storage unit |
US4600986A (en) * | 1984-04-02 | 1986-07-15 | Sperry Corporation | Pipelined split stack with high performance interleaved decode |
US4674032A (en) * | 1984-04-02 | 1987-06-16 | Unisys Corporation | High-performance pipelined stack with over-write protection |
US4680701A (en) * | 1984-04-11 | 1987-07-14 | Texas Instruments Incorporated | Asynchronous high speed processor having high speed memories with domino circuits contained therein |
US4989137A (en) * | 1984-07-12 | 1991-01-29 | Texas Instruments Incorporated | Computer memory system |
JPS6151243A (ja) * | 1984-08-20 | 1986-03-13 | Toshiba Corp | レジスタ式演算処理装置 |
US4761733A (en) * | 1985-03-11 | 1988-08-02 | Celerity Computing | Direct-execution microprogrammable microprocessor system |
US4779187A (en) * | 1985-04-10 | 1988-10-18 | Microsoft Corporation | Method and operating system for executing programs in a multi-mode microprocessor |
US4704679A (en) * | 1985-06-11 | 1987-11-03 | Burroughs Corporation | Addressing environment storage for accessing a stack-oriented memory |
US4740893A (en) * | 1985-08-07 | 1988-04-26 | International Business Machines Corp. | Method for reducing the time for switching between programs |
US4777588A (en) * | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
JPS6298434A (ja) * | 1985-10-25 | 1987-05-07 | Hitachi Ltd | デ−タ処理システム |
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
US4811208A (en) * | 1986-05-16 | 1989-03-07 | Intel Corporation | Stack frame cache on a microprocessor chip |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
JPS63245529A (ja) * | 1987-03-31 | 1988-10-12 | Toshiba Corp | レジスタ退避復元装置 |
US4829422A (en) * | 1987-04-02 | 1989-05-09 | Stellar Computer, Inc. | Control of multiple processors executing in parallel regions |
-
1986
- 1986-04-14 JP JP61085442A patent/JP2545789B2/ja not_active Expired - Lifetime
-
1987
- 1987-04-09 KR KR1019870003382A patent/KR900005285B1/ko not_active IP Right Cessation
- 1987-04-13 US US07/037,843 patent/US5214786A/en not_active Expired - Lifetime
- 1987-04-14 DE DE3789122T patent/DE3789122T2/de not_active Expired - Fee Related
- 1987-04-14 EP EP87105507A patent/EP0241909B1/de not_active Expired - Lifetime
- 1987-04-14 EP EP92110395A patent/EP0517282B1/de not_active Expired - Lifetime
- 1987-04-14 DE DE3752287T patent/DE3752287T2/de not_active Expired - Fee Related
-
1992
- 1992-09-17 US US07/945,930 patent/US5307502A/en not_active Expired - Lifetime
-
1994
- 1994-01-21 US US08/183,830 patent/US5450610A/en not_active Expired - Lifetime
-
1995
- 1995-06-02 US US08/459,965 patent/US5517664A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0241909A3 (en) | 1990-03-28 |
DE3789122D1 (de) | 1994-03-31 |
US5450610A (en) | 1995-09-12 |
EP0517282B1 (de) | 1999-07-28 |
US5307502A (en) | 1994-04-26 |
DE3752287D1 (de) | 1999-09-02 |
EP0241909B1 (de) | 1994-02-23 |
EP0241909A2 (de) | 1987-10-21 |
KR900005285B1 (ko) | 1990-07-27 |
KR870010445A (ko) | 1987-11-30 |
JP2545789B2 (ja) | 1996-10-23 |
US5214786A (en) | 1993-05-25 |
JPS62242243A (ja) | 1987-10-22 |
EP0517282A1 (de) | 1992-12-09 |
US5517664A (en) | 1996-05-14 |
DE3789122T2 (de) | 1994-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3752287T2 (de) | Registerzuweisung in einer Informationsverarbeitungsvorrichtung | |
DE2724125C2 (de) | ||
DE3587277T2 (de) | System fuer die umgehungssteuerung beim pipelinebetrieb eines computers. | |
DE2515696C2 (de) | Datenverarbeitungssystem | |
DE68928213T2 (de) | Inhaltadressierte Speicherzellenanordnung | |
DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE2813128C2 (de) | Steuereinrichtung für Mikroprogrammspeicher | |
DE1181461B (de) | Adressenaddierwerk einer programm-gesteuerten Rechenmaschine | |
DE1178623C2 (de) | Programmgesteuerte datenverarbeitende Maschine | |
DE2331589A1 (de) | Datenverarbeitungsanordnung | |
DE2547488C2 (de) | Mikroprogrammierte Datenverarbeitungsanlage | |
DE3306084A1 (de) | Rechnerarchitektur zur gleitkomma -addition | |
DE2735814A1 (de) | Datenverarbeitungseinrichtung | |
DE1179397B (de) | Datenverarbeitende Maschine mit sich zeitlich ueberlappender Datenverarbeitung | |
DE1549531A1 (de) | Digitale Rechenanlage | |
DE1190706B (de) | In zwei abwechselnden Zyklen arbeitende programmgesteuerte elektronische digitale Rechenmaschine | |
DE2221442A1 (de) | Assoziativspeicher | |
DE2425574C2 (de) | Schaltungsanordnung zur Aus- bzw. Eingabe eines Zeichens aus dem bzw. in den wortorganisierten Speicher einer datenverarbeitenden Anlage | |
DE19628039B4 (de) | Speicheradressen-Steuerschaltung | |
DE1774421B1 (de) | Mehrprogramm datenverarbeitungsanlage | |
DE1296429B (de) | Datenbearbeitungsanlage | |
DE1499286B2 (de) | Datenbearbeitungsanlage | |
DE1184122B (de) | Addiervorrichtung | |
DE2750126A1 (de) | Datenverarbeitungssystem mit einem zwischenpufferspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |