DE3752287T2 - Registerzuweisung in einer Informationsverarbeitungsvorrichtung - Google Patents

Registerzuweisung in einer Informationsverarbeitungsvorrichtung

Info

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
Application number
DE3752287T
Other languages
English (en)
Other versions
DE3752287D1 (de
Inventor
Yugo Kashiwagi
Keiichi Kurakazu
Tohru Nojiri
Keisuke Toyama
Tan Watanabe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE3752287D1 publication Critical patent/DE3752287D1/de
Publication of DE3752287T2 publication Critical patent/DE3752287T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

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

    Hintergrund der Erfindung:
  • 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.
  • Zusammenfassung der Erfindung:
  • 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.
  • Kurzbeschreibung der Zeichnungen:
  • 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.
DE3752287T 1986-04-14 1987-04-14 Registerzuweisung in einer Informationsverarbeitungsvorrichtung Expired - Fee Related DE3752287T2 (de)

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)

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

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

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