DE3650602T2 - Datenverarbeitungssystem - Google Patents
DatenverarbeitungssystemInfo
- Publication number
- DE3650602T2 DE3650602T2 DE3650602T DE3650602T DE3650602T2 DE 3650602 T2 DE3650602 T2 DE 3650602T2 DE 3650602 T DE3650602 T DE 3650602T DE 3650602 T DE3650602 T DE 3650602T DE 3650602 T2 DE3650602 T2 DE 3650602T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- instruction
- task
- memory
- task number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 33
- 230000015654 memory Effects 0.000 claims description 216
- 238000000034 method Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 238000012790 confirmation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 48
- 238000013519 translation Methods 0.000 description 22
- 229920000747 poly(lactic acid) Polymers 0.000 description 17
- 230000006870 function Effects 0.000 description 14
- 238000001514 detection method Methods 0.000 description 12
- 230000008707 rearrangement Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf ein Datenverarbeitungssystem gemäß dem Oberbegriff des Anspruchs 1. Ein solches Datenverarbeitungssystem ist aus der US-A-4 352 157 bekannt.
- Die in letzter Zeit weiterentwickelte Mikrominiaturisierungstechnik auf dem Gebiet der Halbleiterbausteine, insbesondere der MOS-(Metall-Oxid-Halbleiter)-Bausteine, hat verbesserte Funktionen und Leistungen von Mikrocomputern ermöglicht. Um die Komplexität von Logikschaltungen zu vermeiden, die aus der erhöhten Schaltungsintegration resultiert, ist die Erstellung einer integrierten Schaltung mit einer regelmäßig strukturierten Logikschaltung zum Hauptverfahren geworden. Eine Vorgehensweise ist das Mikroprogrammsteuerungssystem. Ein mikroprogrammgesteuertes Datenverarbeitungssystem wird in allgemeinen unter Verwendung eines Anweisungsdecodierers aufgebaut, der die Mikroprogramm-ROM-Adresse eines Anweisungswortes erzeugt. Dieses System benötigt jedoch einen großen Hardwareaufwand für den Anweisungsdecodierer, wobei in der japanischen ungeprüften Patentveröffentlichung Nr. 57-203141 ein Mikroprogrammsteuerungssystem vorgeschlagen wird, das diesem Problem durch Beseitigung des Anweisungsdecodierers begegnet. Dieses System setzt jedoch das Anweisungswort direkt anstelle der Mikroprogramm-ROM-Adreßinformation, weshalb die Anweisungswortlänge von 8 Bits auf 16 Bits und gleichzeitig die Länge der Mikroprogramm-ROM- Adresse auf 32 Bits zunimmt, was ungünstigerweise zu einem erweiterten Mikroprogramm-ROM-Adreßdecodierer führt.
- Ein weiteres Hardwareschema zur Steigerung der Leistung eines Mikrocomputers ist das Universalregistersystem, bei dem ein Mikrocomputer mit vielen Registern ausgestattet ist, so daß verschiedene Operationen zwischen den Registern stattfinden, wobei eine Hochgeschwindigkeitsverarbeitung erreicht werden soll. Wenn jedoch das Programm eine häufige Task-Umschaltung enthält, wie z. B. bei Prozeduraufrufen/-rücksprüngen, müssen die Inhalte der Universalregister häufig bei jedem Umschalten auf den Stapel (ein First-In-Last-Out-Speicher) gesichert und von diesem wiedergewonnen werden. Die für die Sicherungs- und Wiedergewinnungsoperationen erforderliche Zeit erhöht die Gesamtverarbeitungszeit, wodurch die Beschleunigung der Verarbeitung beeinträchtigt werden kann. Die für die Sicherungs- und Wiedergewinnungsoperationen erforderliche Zeitspanne ist für ein System mit einer großen Anzahl von Universalregistern sehr groß.
- Als eine Einrichtung zum Überwinden des Problems ist das Mehrfachregistersatzsystem bekannt, bei dem mehrere Registersätze vorgesehen sind und durch Umschalten für jede Task ein Registersatz verwendet wird, wie in IEEE MICRO, Bd. 2, Nr. 4, S. 13, November 1982, beschrieben ist. Dieses System ermöglicht die Vermeidung von Operationen zum Sichern der Registerinhalte bei jedem Prozeduraufruf und zum Wiedergewinnen der ursprünglichen Parameter bei jedem Prozedurrücksprung. Außerdem erfordert dieses System keine Parametertransaktion zwischen den Prozeduren, wodurch eine Hochgeschwindigkeits-Registersicherungs/-Wiederherstellungsverarbeitung erreicht werden kann. Andererseits wird jedoch von Anwendungsprogrammen mit einer Prozedurschachtelung von relativ kleiner Tiefe nur ein kleiner Teil der vielen Registersätze verwendet, wodurch sich eine ineffiziente Ausnutzung der Hardwarebetriebsmittel ergibt. Da außerdem die Anzahl der für die Parametertransaktion zwischen den Prozeduren verwendeten Register und die Anzahl der Register ohne Verbindung zwischen den Prozeduren fest sind, wird z. B. die Verarbeitung einer Prozedur, die eine sehr große Anzahl von Registern des letzteren Typs erfordert, gezwungen, anstelle der fehlenden Register einen Speicherbereich zu verwenden, selbst wenn viele Register des ersteren Typs unbenutzt bleiben. Somit weist dieses System ebenfalls das Problem der ineffizienten Ausnutzung der Hardwarebetriebsmittel auf.
- Die GB-A-1 233 270 zeigt ferner einen Digitalcomputer, der dazu dient, mehrere Programme gleichzeitig auszuführen, wobei die temporären Register, in denen die während der Ausführung des Programms verwendeten und erzeugten Daten gehalten werden, nur aus Speicherstellen im Hauptspeicher bestehen, wobei jedem Programm ein Satz von Speicherstellen zugewiesen ist.
- Es ist eine Aufgabe dieser Erfindung, ein Datenverarbeitungssystem mit verbesserten Funktionen und verbesserter Leistung sowie ein vielseitiges und flexibles Datenverarbeitungssystem des Typs mit Mehrfachregistersatz-System zu schaffen, das fähig ist, die Anzahl der Register zum Speichern von Parametern, die gemeinsam von mehreren Prozeduren verwendet werden, und die Anzahl der Register zum Speichern von Daten, die für jede Prozedur spezifisch sind, willkürlich festzulegen.
- Diese Aufgabe wird gemäß den Merkmalen des unabhängigen Anspruchs gelöst. Die abhängigen Ansprüche zeigen vorteilhafte Ausführungsformen der Erfindung.
- Das Datenverarbeitungssystem ist vom Typ eines Anweisungsdecodierungssystems, bei dem ein aus dem Hauptspeicher gelesenes Anweisungswort (Maschinenwort) in ein Zwischenmaschinenanweisungswort im orthogonalen Format umgeordnet wird, das für die Decodierungshardwarebauein heit geeignet ist, woraufhin das Zwischenmaschinenwort decodiert wird. Ein Anweisungswort im orthogonalen Format ist hier als ein Anweisungswort definiert, das Informationsbits enthält, die Operandenspezifizierer zum Identifizieren eines Operationscodes, der die auszuführende Operation spezifiziert, und von Speicherstellen im Hauptspeicher, die die Operanden enthalten, darstellen. In einem Datenverarbeitungssystem hängen die Bitpositionen für den Operationscode und die Operandenspezifizierer von der jeweiligen Anweisung ab, so daß die Informationen über die Operation und die Operanden im beschränkten Anweisungswort mit weniger Redundanz enthalten ist. Im herkömmlichen System wurde dieser Typ von Anweisung decodiert oder für die Mikroprogramm-ROM-Adreßerzeugung verwendet, weshalb das System mit einer aufwendigen Adreßerzeugungshardware für die Decodierer und dergleichen ausgerüstet werden mußte.
- Das System führt die Anweisungsdecodierung aus, indem es anfangs ein Anweisungswort in ein Anweisungswort des orthogonalen Formats umsetzt, das zur Decodierung geeignet ist, wobei die Tatsache beachtet wird, daß die Bitanordnung des Anweisungsworts, die nicht orthogonal ist, nicht vollständig zufällig ist, sondern gewissen Regeln folgt, wobei die Übersetzung der nicht orthogonalen Anweisungswörter in orthogonale Anweisungswörter relativ einfach ist und die Decodierungshardware und die ROM- Kapazität verringert werden können, wenn die Mikroprogramm-ROM-Adresse durch Decodieren eines orthogonalen Anweisungswortes erzeugt wird.
- Das System enthält getrennt für jedes Anweisungsformat Decodierer zum Umordnen von Anweisungswörtern in Zwischenmaschinenwörter, so daß die Decodierung der Zwischenmaschinenwörter für jedes Anweisungsformat gemeinsam stattfindet, mit dem Ziel, daß die Anweisungswörter unterschiedlicher Formate oder unterschiedlicher Wortlängen verarbeitet werden können.
- Mit der vorangegangenen Anordnung kann das neuartige System Anweisungswörter mit unterschiedlichen Formaten handhaben, ohne die Hardwareanordnung innerhalb des Prozessors zu modifizieren oder zu ergänzen, mit Ausnahme des Anweisungswortspeichers und der Übersetzungseinheit, die die Anweisungswörter für die Decodierung in Zwischenmaschinenwörter umordnet, wobei die für die Anweisungsdecodierung verwendete Hardwareanordnung auf 1/5 bis 1/10 des entsprechenden Gegenstücks des herkömmlichen Anweisungsdecodierersystems reduziert werden kann.
- Das System kann Anweisungswörter mit wenigstens zwei Anweisungsformaten verarbeiten.
- Mit dem Ziel einer effizienten Ausnutzung der Universalregister ist das neuartige System mit anweisungsgesteuerten Registern und einem Speicher versehen, die einen Registersatz entsprechend den Inhalten der Register anordnen können, so daß die Registersätze für die Prozeduren in Abhängigkeit von den Registerinhalten im Speicher angeordnet werden. Die Anzahl der im Speicher vorhandenen Registersätze hängt vom jeweiligen Prozeß ab, wobei die Register effizient genutzt werden. Der übrige Bereich des Speichers, in dem keine Registersätze angeordnet sind, kann als Teil des Hauptspeichers verwendet werden, wodurch die Hardwarebetriebsmittel effizient ausgenutzt werden können.
- Im physikalischen Sinne wird ein einzelnes Register verwendet, um Daten zu setzen, die von mehreren Tasks beim Übertragen von Parametern zwischen den Prozeduren gemeinsam verwendet werden, um den Bedarf einer Datenübertragung zwischen den Registern zu beseitigen, wenn die Prozedur gewechselt wird, wodurch der Organisationsaufwand der Datenverarbeitung verringert und die Verarbeitungsgeschwindigkeit des Datenverarbeitungssystems gesteigert wird.
- Im neuartigen System ist lediglich das Umschalten der Registersätze beim Umschalten der Tasks, das durch Auftreten von Unterbrechungsereignissen verursacht wird, erforderlich, wodurch der Bedarf für eine Datensicherung und -wiederherstellung in/aus dem Hauptspeicher oder dergleichen beseitigt wird, weshalb die Tasks schnell umgeschaltet werden können und die Verarbeitungsgeschwindigkeit gesteigert werden kann.
- Die Fähigkeit zum willkürlichen Setzen gemeinsamer Adreßbereiche für Tasks durch die Anweisung beseitigt die Leerlaufzeit, die für die Parametertransaktion aufgewendet wird, wodurch die Verarbeitungsgeschwindigkeit gesteigert werden kann. Das Zuweisen eines Registerlokalbereichs in beliebiger Größe für jede Prozedur erhöht den Spielraum für die Wahl der Register, wodurch die Software vereinfacht werden kann. Die Anzahl der Tasks kann durch die Anweisung gesetzt werden, wobei ein System konstruiert werden kann, das für die Anwendung des Benutzers am besten geeignet ist. Die von den Tasks unbenutzten Registerbereiche können als Hauptspeicherbereich verwendet werden, wodurch eine Funktion geschaffen wird, die einem Ein-Chip-Mikrocomputer mit einem On-Chip-RAM-Bereich ähnelt, und die Möglichkeit geschaffen wird, ein Benutzersystem flexibel zu konstruieren.
- Wie oben beschrieben worden ist, verbessert die vorliegende Erfindung die Decodierungsfunktion für die Anweisungen beim Lesen des Mikroprogramm-ROMS ohne Erhöhung des Hardwareaufwands. Die Erfindung kann ein Datenverarbeitungssystem mit hoher Leistung und verbesserten Funktionen schaffen, ohne die Hardwareanordnung erheblich zu vergrößern, indem die Hardwarebetriebsmittel effizient genutzt werden, während das Universalregistersystem verwendet wird.
- Diese und weitere Aufgaben und Vorteile der vorliegenden Erfindung werden deutlich bei Bezugnahme auf die folgende Beschreibung und die beigefügten Zeichnungen, in welchen:
- Fig. 1 ein Blockschaltbild ist, das den Prozessor in einem Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 2 ein Blockschaltbild ist, das den Mikrocomputer zeigt, der durch Anwendung des neuartigen Datenverarbeitungssystems auf einem einzigen Halbleitersubstrat ausgebildet ist;
- Fig. 3 ein Blockschaltbild ist, das die Anordnung der Anweisungswortspeicher/Übersetzungseinheit, der Mikroprogrammspeicher/Steuerungseinheit, der Decodierereinheit und der Operationseinheit zeigt, die in dem in Fig. 1 gezeigten Prozessor enthalten sind;
- Fig. 4 ein Satz von Schaubildern ist, der Beispiele des Anweisungsformats zeigt;
- Fig. 5 ein Blockschaltbild ist, das eine weitere Ausführungsform der Anweisungswortspeicher/Übersetzungseinheit in dem in Fig. 1 gezeigten Prozessor zeigt;
- Fig. 6 ein Blockschaltbild ist, das die Anweisungswortspeicher/Übersetzungseinheit in dem in Fig. 1 gezeigten Prozessor zeigt;
- Fig. 7 ein Blockschaltbild der aus der Fig. 6 abgeleite ten Anweisungswortspeicher/Übersetzungseinheit ist;
- Fig. 8 ein Blockschaltbild ist, das die Funktionen der Anweisungswortspeicher/Übersetzungseinheit der Fig. 3 getrennt zeigt;
- Fig. 9 ein Blockschaltbild ist, das die in Fig. 8 gezeigte Anweisungswortspeicher/Übersetzungseinheit zeigt;
- Fig. 10 ein Zeitablaufdiagramm ist, das die Signale in verschiedenen Abschnitten der in Fig. 9 gezeigten Anweisungswortspeicher/Übersetzungseinheit zeigt;
- Fig. 11 ein Blockschaltbild ist, das die Anweisungswortspeichereinrichtung der Fig. 9 genauer zeigt;
- Fig. 12 ein schematisches Schaubild der in Fig. 11 gezeigten Steuerungsschaltung ist;
- Fig. 13 ein Blockschaltbild ist, das die Anweisungswortspeichereinrichtung der Fig. 9 zeigt;
- Fig. 14 ein Schaubild ist, das den Steuerungszustand der Daten-Eingang/Ausgang-Steuerung auf der First-In-First- Out-Basis für die Anweisungswortspeichereinrichtung der Fig. 13 zeigt;
- Fig. 15 ein schematisches Schaubild des Speichers zum vorübergehenden Speichern von Anweisungsworten in der Anweisungswortspeichereinrichtung der Fig. 11 ist;
- Fig. 16 ein schematisches Schaubild der Steuerungsschaltung zum Steuern des Eingangs/Ausgangs des in Fig. 15 gezeigten Speichers ist;
- Fig. 17 ein Blockschaltbild ist, das die Steuerungsschaltung in der Anweisungswortspeichereinrichtung der Fig. 11 zeigt, die in dem Fall, in dem die Daten im temporären Anweisungswortspeicher in Halbwortlänge gehandhabt werden, den Kopf der Daten immer auf das höchstwertige Bit setzt;
- Fig. 18 ein schematisches Schaubild ist, das einen Teil des Flip-Flops der Fig. 17 zeigt;
- Fig. 19 ein Zeitablaufdiagramm ist, das die Operation des in Fig. 18 gezeigten Flip-Flops zeigt;
- Fig. 20 ein schematisches Schaubild ist, das die Codereferenzeinrichtung, die Codeumordnungsinformations-Speichereinrichtung und die Umordnungseinrichtung der Fig. 8 und 9 zeigt;
- Fig. 21 ein schematisches Schaubild ist, das die Umordnungseinrichtung der Fig. 20 zeigt;
- Fig. 22 ein schematisches Schaubild der Codereferenzeinrichtung in Fig. 8 zeigt, die unter Verwendung von Lese/Schreib-Speicherzellen aufgebaut ist, so daß ihre Inhalte dynamisch übersetzt werden können;
- Fig. 23 ein schematisches Schaubild ist, das ein Beispiel der Speicherzelle der Fig. 22 zeigt;
- Fig. 24 ein Blockschaltbild ist, das den Teil des Prozessors der Fig. 1 zeigt, der das Mehrfachregistersystem gemäß der Erfindung betrifft;
- Fig. 25 ein Blockschaltbild des Tasknummer-Spezifizierungsabschnitts in der Anordnung der Fig. 24 ist;
- Fig. 26 ein Blockschaltbild des Adreßerzeugungsabschnitts in der Anordnung der Fig. 24 ist;
- Fig. 27 ein Satz von Schaubildern ist, der verwendet wird, um die Überlappungszustände der Universalregister zu erläutern;
- Fig. 28 ein weiteres Diagramm ist, das verwendet wird, um die Überlappungszustände der Universalregister zu erläutern;
- Fig. 29 ein Blockschaltbild des Komparators im Adreßerzeugungsabschnitt der Fig. 26 ist;
- Fig. 30 ein Flußdiagramm ist, das den Ermittlungsprozeß zeigt, der von der Bereichsermittlungsschaltung der Fig. 26 ausgeführt wird;
- Fig. 31 ein Schaubild ist, das verwendet wird, um die physikalische Adreßerzeugungsprozedur für die Hauptspeicheradreßerzeugungsschaltung der Fig. 26 zu erläutern;
- Fig. 32 ein Blockschaltbild ist, das die Beziehung zwischen dem Hauptspeicher und dem Off-Chip-Hauptspeicher zeigt;
- Fig. 33 ein Blockschaltbild der Taskgrenzen-Ermittlungsschaltung ist;
- Fig. 34 ein Blockschaltbild ist, das eine Ausführungsform der Mikroprogrammspeicher/Steuerungseinheit in der Anordnung der Fig. 1 zeigt;
- Fig. 35 ein schematisches Schaubild ist, das eine Ausführungsform des Mikroprogrammadreßregisters, des Adreßdecodierers, des Mikroanweisungsspeichers und des Mikroanweisungsregisters zeigt;
- Fig. 36 ein Zeitablaufdiagramm ist, das die Signale in verschiedenen Abschnitten der in Fig. 35 gezeigten Anordnung zeigt;
- Fig. 37 ein Zeitablaufdiagramm ist, das die Signale für den Fall zeigt, in dem die Mikroprogrammspeicher/Steuerungseinheit ohne Aussetzen des Basistaktes angehalten ist;
- Fig. 38 ein Blockschaltbild ist, das den Operationssteuerungsdecodierer innerhalb der in Fig. 1 gezeigten Decodierereinheit zeigt;
- Fig. 39 ein schematisches Schaubild ist, das eine Ausführungsform des Decodierersteuerungszwischenspeichers, der ersten und zweiten Registersteuerungsdecodierer und der in Fig. 38 gezeigten Verzögerungsschaltung zeigt;
- Fig. 40 ein Zeitablaufdiagramm ist, das die Signale des ersten Registersteuerungsdecodierers zeigt;
- Fig. 41 ein Blockschaltbild ist, das eine Ausführungsform der in Fig. 1 gezeigten Operationseinheit zeigt;
- Fig. 42, 43 und 44 schematische Schaubilder der in Fig. 41 gezeigten Funktionsblöcke sind;
- Fig. 45 ein Blockschaltbild ist, das eine Ausführungsform des Prozessors zeigt, der einen Hauptspeicher enthält, der wenigstens zum Lesen genutzt wird;
- Fig. 46 ein Blockschaltbild ist, das eine Ausführungsform des Prozessors zeigt, mit der die Anzahl der Speicherzugriffszyklen verändert werden kann; und
- Fig. 47 ein Zeitablaufdiagramm ist, das die Operationen des in Fig. 46 gezeigten Prozessors mit jeweils verschiedener Anzahl von Speicherzugriffszyklen zeigt.
- Fig. 2 zeigt eine Ausführungsform dieser Erfindung, die auf einen Mikrocomputer 10 angewendet wird, der auf einem einzelnen Halbleitersubstrat aufgebaut ist. Die Anordnung enthält eine Zentraleinheit 101 als Kern, einen Hauptspeicher 102, eine Peripherieschaltung 103 mit einer Zeitgeberfunktion und einer Eingabe/Ausgabe-Funktion, eine DMA-Steuervorrichtung 104 (DMA steht für "Direct Memory Access" und bedeutet Speicherdirektzugriff) sowie einen Adreßübersetzer 105. Im folgenden wird in Verbindung mit den Fig. 1 und 3 ein Prozessorabschnitt 20 genauer beschrieben, der in Fig. 2 von der gestrichelten Linie umschlossen ist.
- Fig. 1 zeigt eine Ausführungsform des Prozessorabschnitts 20, die eine Anweisungswortspeicher/Übersetzungseinheit 201, eine Mikroprogrammspeicher/Steuerungseinheit 202, die einen Mikroprogramm-ROM (Nur-Lese-Speicher) als Hauptelement enthält, eine Decodierereinheit 203, eine Operationseinheit 204, eine Busschnittstelleneinheit 205, einen ersten Hauptspeicher 206, der zum Lesen und Schreiben genutzt wird, einen zweiten Speicher 207, der nur zum Lesen genutzt wird, einen Adressen-Eingang/Ausgang-Puffer 2082, einen Daten-Eingang/Ausgang-Puffer 2083, einen Takt- und Stromversorgungspuffer 2084 sowie einen Eingang/Ausgang-Puffer 2081 für Signale mit Ausnahme des Adressen/Daten-Takts und der Stromversorgung, die vom Prozessorabschnitt 20 zu/von den anderen Funktionsblöcken 103, 104 und 105 in Fig. 2 gesendet oder empfangen werden, enthält.
- Im folgenden wird mit Bezug auf Fig. 1 die Prozessoroperation vom Holen der Anweisung bis zur Anweisungsausführung beschrieben.
- Die Inhalte des Programm-(Anweisungs)-Holregisters (Anweisungsadreßregisters) in der Busschnittstelleneinheit 205 werden über den Bus 212 in die Hauptspeicher 206 und 207 im Prozessor 20 und gleichzeitig in den Adressen- Eingang/Ausgang-Puffer 2082 eingelesen, so daß die Inhalte über den Bus 222 vom Prozessor 20 nach außen gesendet werden. Ein Anweisungswort wird aus dem ersten Hauptspeicher 206 oder dem zweiten Hauptspeicher 207 gelesen, indem es durch den obenerwähnten Eingang auf dem Bus 213 adressiert wird oder ein Anweisungswort auf dem Bus 223 über den Daten-Eingang/Ausgang-Puffer 2083 auf dem Bus 213 eingelesen wird. Die Informationen auf dem Bus 213 werden in die Anweisungswortspeicher/Übersetzungseinheit 201 eingegeben.
- Das von der Anweisungsspeicher/Übersetzungseinheit 201 empfangene Anweisungswort wird in dieser gehalten und gleichzeitig zu einer Information decodiert, die an die Mikroprogrammspeicher/Steuerungseinheit 202 gesendet wird.
- Die Mikroprogrammspeicher/Steuerungseinheit 202 empfängt die von der Anweisungswortspeicher/Übersetzungseinheit 201 über den Bus 231 zur Verfügung gestellte Information und sendet diese als Mikroanweisungskette über den Bus 232.
- Die Mikroanweisung von der Mikroprogrammspeicher/Steuerungseinheit 201 wird über den Bus 232 an die Decodierereinheit 203 gesendet, die die Mikroanweisung in Signale 233, die die Operationseinheit 204 direkt steuern, und in Signale 234 decodiert, die die Busschnittstelleneinheit 205 direkt steuern.
- Die Operationseinheit 204 implementiert die durch die Signale 233 spezifizierten Datenoperationen. Die Busschnittstelleneinheit 205 führt die Zeitablaufsteuerung für die Datenübertragung innerhalb des Prozessors 20 oder zwischen den Prozessor 20 und anderen Funktionsblöcken unter Verwendung des Busses 211, des Eingang/Ausgang- Puffers 2081, des Busses 221 sowie der Signalleitungen 235 und 236 aus.
- Der Takt und die Stromversorgungsspannung, die an den Puffer 2084 angelegt werden, werden unter Verwendung einer Signalleitung 214 auf die Einheiten verteilt.
- Fig. 3 zeigt ein Beispiel der Anordnung der Anweisungswortspeicher/Übersetzungseinheit 201, der Mikroprogrammspeicher/Steuerungseinheit 202, der Decodierereinheit 203 und der Operationseinheit 204. Das über den Bus 213 zur Anweisungswortspeicher/Übersetzungseinheit 201 übertragene Anweisungswort wird vorübergehend im Anweisungswortspeicher 301 gehalten und anschließend zur ersten Anweisungsdecodierungseinrichtung, d. h. zum Anweisungsdecodierer 302, übertragen. Fig. 4 zeigt typische Anweisungsformate der in den Anweisungsspeicher 301 eingelesenen Anweisungswörter.
- Eine Anweisung dieses Typs implementiert eine Operation zwischen einem ersten Operanden, der durch den ersten Operandencode spezifiziert ist, und einem zweiten Operanden, der durch den zweiten Operandencode spezifiziert ist, und speichert das Ergebnis am Ort des zweiten Operanden. Der Typ der im Operationscode spezifizierten Operation bezeichnet eine der arithmetischen oder logischen Operationen.
- Eine Anweisung dieses Typs veranlaßt den Programmablauf, zu der Programmadresse zu verzweigen, die von einem Operanden angegeben wird, der durch den ersten Operandencode spezifiziert ist, wenn die im Operationscode gegebene Verzweigungsbedingung erfüllt ist. Wenn die Verzweigungsbedingung nicht erfüllt ist, veranlaßt die Anweisung den Programmablauf, mit dem nächsten Anweisungswort fortzufahren.
- Eine Anweisung dieses Typs prüft den Wert einer durch die Bitnummer, d. h. durch einen ersten Operanden, spezifizierten Bitposition in dem durch den zweiten Operandencode spezifizierten zweiten Operanden und speichert den Bitwert. Anschließend implementiert die Anweisung eine der Operationen (Löschen, Setzen, Andern, Prüfen), die durch den Bitoperationstyp im Operandencode für das spezifizierte Bit angegeben ist, und speichert das Ergebnis in der entsprechenden Bitposition des zweiten Operanden, falls erforderlich.
- Aufgrund der Beschränkung der Wortlänge einer Anweisung infolge der Formatierung der beabsichtigten Funktionen in einer beschränkten Wortlänge entsprechend einer bestimmten Regel sind die in (1), (2) und (3) klassifizierten Anweisungen unter Preisgabe der Orthogonalität systematisiert.
- Die in Fig. 3 gezeigte Ausführungsform nutzt den Anweisungsdecodierer 302, um die aus dem Anweisungswortspeicher 301 gelesenen Anweisungswörter zu decodieren, so daß die Informationen verschiedener Arten, die für die Anweisungsausführung erforderlich sind, in Anweisungen umgesetzt werden, die ein vollständig orthogonales Codierungssystem aufweisen (diese werden im folgenden mit "Zwischenmaschinenwörter" bezeichnet). Jedes Zwischenmaschinenwort besitzt einen Operationscode zum Spezifizieren der auszuführenden Operation sowie Informationsbits, die bestimmte Operandenspezifizierercodes darstellen, welche den Ort im Hauptspeicher identifizieren, in dem der Operand enthalten ist.
- Das Zwischenmaschinenwort wird im Speicher 303 gespeichert und anschließend in die Mikroprogrammspeicher/Steuerungseinheit 202 und die zweite Anweisungsdecodierungseinrichtung, d. h. in die Decodierereinheit 203, eingegeben. Einige der Zwischenmaschinenwörter enthalten wenigstens einen Operandenspezifizierer, wobei die Information, ob der durch den Operandenspezifizierer angegebene Operand ein Quellenoperand oder ein Zieloperand ist, vollständig im Operationscode angegeben ist. Von den Informationen, die den Operationscode und den Operandenspezifizierer darstellen, sind Informationen verschiedener Arten über das Zwischenmaschinenwort, mit Ausnahme der Informationen 3031, die von der Mikroprogrammspeicher/Steuerungseinheit 202 decodiert werden müssen, in einer Eins-zu-Eins-Entsprechung für die Decodierer 2031, 2032, 2033, 2034 und 2035 in der Decodierereinheit 203 enthalten, die durch die Mikroanweisung 232 gesteuert werden kann (siehe Fig. 3). Die von diesen Decodierern in der Decodierereinheit 203 erzeugten Steuersignale 233 steuern die Operationseinheit 204 so, daß diese eine beabsichtigte Operation ausführt, die durch das Zwischenmaschinenwort angegeben ist.
- Fig. 5 zeigt eine weitere Ausführungsform der Anweisungswortspeicher/Übersetzungseinheit, in der zwei Anweisungsdecodierer zum Decodieren einer in der Anweisungsspeichereinrichtung 301 gehaltenen Anweisung in ein Zwischenmaschinenwort enthalten sind. In dem Fall, in dem der die Benutzerprogramme speichernde Hauptspeicher Anweisungswörter speichert, die in zwei unterschiedlichen Arten von Anweisungssystemen A und B, d. h. in unterschiedlichen Anweisungsprozessen (Anweisungsfunktionen) für denselben binären Anweisungscode, ausgedrückt sind, ist das System mit einem Anweisungsdecodierer 302 zum Decodieren von Anweisungen im Anweisungssystem A und einem Anweisungsdecodierer 502 zum Decodieren von Anweisungen im Anweisungssystem B versehen. Die vom Anweisungsdecodierer 302 erzeugten Informationen werden über den Bus 3021 zum Multiplexierer 503 gesendet. Auf ähnliche Weise werden die vom Anweisungsdecodierer 502 erzeugten Informationen über den Bus 5021 zum Multiplexierer 503 gesendet. Der Multiplexierer 503 wählt auf der Grundlage der Inhalte des Flip-Flops 504 einen der Busse 3021 und 5021 aus und speichert die ausgewählten Inhalte im Speicher 303. Wenn in diesem Fall die im Anweisungscode des Anweisungssystems A und im Anweisungscode des Anweisungssystems B ausgedrückten Anweisungen den gleichen Prozeß aufweisen, obwohl sich ihre binären Codes unterscheiden, erzeugen die zwei Anweisungsdecodierer 302 und 502 genau das gleiche Zwischenmaschinenwort. Das heißt, wenn die Anweisungswörter unterschiedlicher Anweisungssysteme die gleiche Anweisungsfunktion aufweisen, besitzen sie die gleiche im Speicher 303 gespeicherte Information, wobei ein Großteil der Hardware 500 im Prozessor 20, die durch das Zwischenmaschinenwort gesteuert wird (die Hardware im Prozessor 20 ausschließlich der Anweisungsspeicher/Übersetzungseinheit 201 der Fig. 2), verwendet und gemeinsam durch die Anweisungswörter unterschiedlicher Anweisungssysteme gesteuert werden kann.
- Das Flip-Flop 504 wird auf den vorgegebenen Signalpegel gesetzt, der am Anschluß 505 empfangen und von der Steuerungsschaltung 506 erfaßt wird, wenn der Prozessor 20 zurückgesetzt wird. Der Anschluß 505 verwendet das niedrigstwertige Bit des Adreßbusses.
- Fig. 6 zeigt eine weitere Ausführungsform der Anweisungswortspeicher/Übersetzungseinheit 201, in der die Anweisungswörter über den Bus 213 in den Anweisungsspeicher 301 eingelesen werden, wobei die vom Anweisungsdecodierer 302 und vom Anweisungsdecodierer 502 erzeugten und in dem in Fig. 5 gezeigten Speicher 303 gespeicherten Zwischenmaschinenwörter gemeinsam im Hauptspeicher 600 gespeichert werden. Der Hauptspeicher speichert Anweisungscodes von zwei Anweisungssystemen, wobei ein Typ von Codes über den Anweisungsspeicher 301 in den Anweisungsdecodierer 302 eingegeben, vom Decodierer 302 in Zwischenmaschinenwörter übersetzt, über den Bus 3021 in den Multiplexierer 603 eingegeben, vom Multiplexierer 603 ausgewählt und im Speicher 303 gespeichert wird, während ein weiterer Typ von Codes über den Anweisungsspeicher 601 und den Bus 6011 in den Multiplexierer 603 eingegeben, von diesem ausgewählt und im Speicher 303 gespeichert wird. Der Multiplexierer 603 wählt in Abhängigkeit von den Inhalten des Flip-Flops 604 eine der Informationen auf dem Bus 3021 und dem Bus 6011 aus. Die im Hauptspeicher 600 gespeicherten Anweisungswörter besitzen die Definition der Anweisung, die den Multiplexierer 603 umschalten kann, wobei durch Ausführen der Anweisung das Flip-Flop 604 über die Steuerleitung 6041 gesteuert werden kann. Das Flip-Flop 604 kann gesteuert werden, indem der am Anschluß 605 empfangene Signalpegel von der Steuerungsschaltung 606 detektiert wird, wie in Fig. 7 gezeigt ist. Der Multiplexierer 603 und der Speicher 303 dienen zum Steuern der Inhalte des Anweisungsspeichers 601 in Byte- Einheiten (8 Bits), was den Anweisungen, die den Anweisungsspeicher 601 nicht benötigen, ermöglicht, in den Multiplexierer 603 Informationen mit der gleichen Wortlänge einzugeben wie vom Bus 213.
- Fig. 8 ist ein Blockschaltbild, das die Funktionen der in Fig. 3 gezeigten Anweisungsspeicher/Übersetzungseinheit 201 getrennt zeigt. Die Funktionen der Blöcke sind folgende.
- Dies ist ein Pufferspeicher zum vorübergehenden Halten eines aus dem Hauptspeicher über den Bus 213 ausgelesenen Anweisungsworts. Ein Anweisungswort wird im voraus aus dem Hauptspeicher gelesen, um eine Hochgeschwindigkeits- Pipeline-Verarbeitung zu ermöglichen.
- Die Anordnung des Operationscodes und des Operandencodes ist in Abhängigkeit vom jeweiligen Anweisungswort unterschiedlich. Daher wird ein aus der Anweisungsspeichereinrichtung 301 über den Bus 3011 gelesenes Anweisungswort mit dem Codemuster zusammengestellt, das in der Codezusammenstellungseinrichtung 802 definiert worden ist, so daß eine Übereinstimmung detektiert wird.
- Die Codeumordnungsinformation zum Übersetzen eines Anweisungsworts in ein Zwischenmaschinenwort mit orthogonalem Anweisungsformat ist in dieser Speichereinrichtung definiert und gespeichert. Die definierte Umordnungsinformation wird als Antwort auf das Signal 8021 von der Codezusammenstellungseinrichtung 802 über den Bus 8031 aus der Speichereinrichtung gelesen.
- Um einen über den Bus 3011 eingegebenen Anweisungscode in ein Zwischenmaschinenwort mit orthogonalem Anweisungsformat zu übersetzen, wird entsprechend der Information auf dem Bus 8031 eine Umordnung des Anweisungscodes durchgeführt. Nach der Übersetzung sind im Zwischenmaschinenwort der Operationscode zum Spezifizieren der auszuführenden Operation und der Operandenspezifizierer zum Identifizieren der den Operanden enthaltenden Speicherstelle in getrennten Bitpositionen angeordnet. Einige Anweisungen, mit Ausnahme derjenigen, die keine Operanden erfordern, enthalten wenigstens einen Operandenspezifizierer.
- Fig. 9 zeigt eine Ausführungsform der in Fig. 8 gezeigten Anweisungsspeicher/Übersetzungseinheit, die eine Anweisungsspeichereinrichtung 301, die hauptsächlich aus einem First-In-First-Out-Speicher 901 (im folgenden einfach mit "FIFO"-Speicher bezeichnet) und dessen Steuerungsschaltung 911 besteht, eine Codezusammenstellungseinrichtung 802 und eine Codeumordnungsinformationseinrichtung 803, die im wesentlichen aus programmierbaren Logikmatrizen (im folgenden einfach mit "PLA" bezeichnet) besteht, sowie eine Umordnungseinrichtung 804 enthält, die im wesentlichen aus einer Schaltmatrix besteht, die z. B. Metall-Oxid-Halbleiter-Transistoren (im folgenden einfach mit "MOS"-Transistoren bezeichnet) verwendet. Fig. 10 zeigt die Zeitbeziehung der Signale a bis j in Fig. 9 zusammen mit den Basistakten φ&sub1; und φ&sub2;.
- Zu Beginn wird ein aus dem Hauptspeicher gelesenes Anweisungswort über den Bus a in den Datenpuffer b eingegeben und zwischengespeichert. Die zwischengespeicherten Daten werden über den Bus 213 synchron mit dem Basistakt φ&sub2; zum FIFO-Speicher 901 übertragen. Zu diesem Zeitpunkt steuert die Steuerungsschaltung 911 das Schreiben der Daten auf dem Bus 213 über die Signalleitung 9110 in den FIFO- Speicher. Gleichzeitig wird eine auszuführende Anweisung aus dem FIFO-Speicher 901 auf den Bus c gelesen und im FIFO-Puffer 921 zwischengespeichert. Die Codezusammenstellungseinrichtung 802 und die Codeumordnungsinformations-Speichereinrichtung 803 werden von dynamischen PLAs 902 und 903 gebildet, die mit Ausnahme der Vorladeschaltung und des Treibers ausschließlich aus NMOS-Transistoren aufgebaut sind. Zu diesem Zweck sind ein Eingangszwischenspeicher 912 und ein Ausgangszwischenspeicher 913 und 914 hinzugefügt. In Fig. 10 ist der Zeitablauf der Signale nach der Eingabe des Signals d in den Zwischenspeicher 912 bis zur Bestimmung des Ausgangs h des Zwischenspeichers 913 und des Ausgangs i des Zwischenspeichers 914 gezeigt. Das Signal h ist der Anweisungscode vor der Umordnung, während das Signal i die umgeordnete Information ist. Die Umordnungseinrichtung 804 erzeugt ein Signal j, in dem es das Signal h in Abhängigkeit vom Signal i umordnet.
- Fig. 11 zeigt die Anweisungsspeichereinrichtung der Fig. 9 genauer. Der FIFO-Speicher 901 wird von einem Single-Port-Schreiblesespeicher gebildet (der im folgenden einfach "RAM" genannt wird). Die Datenleitungen 1100 werden während der Periode des Basistaktes φ&sub1; von der Vorladeschaltung aufgeladen, wobei sie während der Periode des Basistaktes φ&sub2; die Daten führen. Zur Verstärkung der ausgelesenen Daten sind Leseverstärker vorgesehen. Die Steuerungsschaltung 911 enthält einen Schreibzeiger (in Fig. 11 mit WP bezeichnet) zum Spezifizieren der Schreibstelle beim Schreiben eines Anweisungswortes von Bus 213 in den FIFO-Speicher 901, einen Lesezeiger (in Fig. 11 mit RP bezeichnet) zum Spezifizieren der Lesestelle beim Auslesen eines Anweisungswortes aus dem FIFO- Speicher 901 sowie +1-Addierer zum Inkrementieren der Zeiger.
- Fig. 12 ist ein Logikschaltbild, das die in Fig. 11 gezeigte Steuerungsschaltung 911 genauer zeigt. Die Figur zeigt eine Ausführungsform des Falls, in dem der FIFO- Speicher 901 eine Kapazität von acht Wörtern (ein Wort besitzt dieselbe Wortlänge wie der Bus 213) besitzt, d. h. alle Schreibzeiger und Lesezeiger umfassen drei Bits. Ein Bus 9111 dient zum Übertragen der Inhalte der Schreibzeiger und der Lesezeiger. Beide Zeiger können durch das
- -Signal zurückgesetzt werden, das aktiv wird, wenn der FIFO-Speicher 901 durch die Rücksetzoperation für den Prozessor 20 gelöscht wird oder wenn eine im voraus geholte Anweisung im FIFO-Speicher aufgrund der Ausführung einer Verzweigungsanweisung ungültig wird. Das Signal 1200 ist das Signal, das anzeigt, daß im FIFO- Speicher 901 kein Speicherraum zum Holen einer Anweisung aus dem Hauptspeicher verfügbar ist, d. h. der FIFO- Speicher 901 ist mit einem im voraus geholten Anweisungswort gefüllt und es ist physikalisch kein Raum frei. Das Signal 1201 ist das Signal, das anzeigt, daß im FIFO- Speicher 901 ein Speicherraum von acht Wörtern zum Holen von Anweisungen aus dem Hauptspeicher vorhanden ist, d. h. es befindet sich kein im voraus geholtes Anweisungswort im FIFO-Speicher 901. Das Signal 1202 ist das Inkrementierungssignal für den Schreibzeiger, während das Signal 1203 das Inkrementierungssignal für den Lesezeiger ist, das Signal 1204 das Signal ist, das den Wert des Schreibzeigers auf den Bus 9111 ausgibt, und das Signal 1205 das Signal ist, das den Wert des Lesezeigers auf den Bus 9111 ausgibt.
- Fig. 13 zeigt eine weitere Ausführungsform der Anweisungsspeichereinrichtung 301 der Fig. 9, in der der FIFO- Speicher 901 durch die PLA gesteuert wird. Die Anordnung implementiert gleichzeitig die Steuerung zum Holen eines Anweisungsworts aus dem Hauptspeicher über den 32-Bit-Bus in den FIFO-Speicher und die Steuerung zum Übertragen der Inhalte des FIFO-Speichers zum Anweisungsdecodierer in 16-Bit-Wortlänge. Die PLA, die die Daten-Eingabe/Ausgabe in den bzw. aus dem FIFO-Speicher steuert, erfüllt das in Fig. 14 gezeigte FIFO-Steuerungszustandsdiagramm. Die PLA 1300 verändert ihren Zustand im Bereich von 10 Zuständen S&sub1; bis S&sub1;&sub0; wie in Fig. 14 gezeigt ist, und nimmt ausgehend von irgendeinem Zustand den Zustand S&sub1; an, wenn sie das FIFO-Rücksetzsignal empfängt. Die Zustände S&sub1; und S&sub6; zeigen, daß der FIFO-Speicher 1301 leer ist (in Fig. 14 mit E gezeigt), d. h. es ist noch kein Anweisungswort in den FIFO-Speicher geholt worden. Die Zustände S&sub3;, S&sub5;, S&sub8; und S&sub1;&sub0; zeigen, daß der FIFO-Speicher voll ist (in Fig. 14 mit F gezeigt) und daß im FIFO-Speicher 1301 kein Raum zum Holen eines neuen Anweisungsworts vorhanden ist. Der Zustand der PLA (S&sub1; bis S&sub1;&sub0;) ist im Zustandsspeicher 1302 gespeichert, der vom Signal 13002 geprüft wird, wenn die PLA 1300 einen neuen Zustand annimmt.
- Fig. 15 zeigt eine weitere Ausführungsform des in Fig. 11 gezeigten FIFO-Speichers 901, in der der FIFO-Speicher 901 zum Lesen und Schreiben durch Vorsehen einer Eingangsdatenwortlänge (Anzahl der Bits des Busses 213) gleich der doppelten Ausgangsdatenwortlänge gesteuert wird. Die Anordnung enthält zwei Wortleitungen (15001 und 15002) für die Lese/Schreib-Steuerung der Speicherzellen 1110.
- Fig. 16 ist ein genaues Logikschaltbild der Steuerungsschaltung 1510 zum Steuern der Eingang/Ausgang-Operation des in Fig. 15 gezeigten FIFO-Speichers 1500. Im Vergleich zur Fig. 12 ist ein Merkmal dieser Anordnung das Vorhandensein von zwei Lesezeigern (RPH und RPL), die die Handhabung der Daten im FIFO-Speicher sowohl in Halbwortlänge als auch in Vollwortlänge erlauben.
- Fig. 17 zeigt ein Beispiel der Anordnung der Steuerungsschaltung, die bei der Handhabung der Daten im FIFO- Speicher 1500 in Halbwortlänge den Kopf der Daten immer auf das höchstwertige Bit setzt. Zu Beginn wird das Flip- Flop 1700 durch das Signal 17001 zu dem Zeitpunkt zurückgesetzt, zu dem der FIFO-Speicher 1500 und die Steuerungsschaltung 1510 zurückgesetzt werden (Zustand 0). Anschließend wählt das Flip-Flop 1700 den Zwischenspeicher 1702 als das Ausgabeziel. In dem Fall, in dem die Daten im FIFO-Speicher 1500 in Haibwortlänge gehandhabt werden, wird das Flip-Flop 1700 durch das Signal 17002 gesetzt (Zustand 1). Zu diesem Zeitpunkt wählt das Flip- Flop den Zwischenspeicher 1701 als Ausgabeziel. In dem Fall, in dem die Daten im FIFO-Speicher 1500 in Halbwortlänge gehandhabt werden, wird das Flip-Flop 1700 durch das Signal 17002 zurückgesetzt (Zustand 0). Durch Wiederholen dieser Operationen kann der Kopf der Daten bekanntgegeben werden.
- Fig. 18 zeigt einen Teil des in Fig. 17 gezeigten Flip- Flops genauer, während Fig. 19 dessen Operation in einem Zeitablaufdiagramm zeigt.
- Fig. 20 zeigt eine Ausführungsform der in den Fig. 8 und 9 gezeigten Codezusammenstellungseinrichtung 802, der Codeumordnungsinformations-Speichereinrichtung 803 und der Umordnungseinrichtung 804. Die Signalleitungen d, e, f, g, h, i und j entsprechen den Signalen, die in Fig. 9 mit denselben Bezugszeichen bezeichnet sind, wobei deren Zeitbeziehung in Fig. 10 gezeigt ist. Die Codezusammenstellungseinrichtung 802 wird von einer dynamischen PLA des UND-Types gebildet, während die Codeumordnungsinformations-Speichereinrichtung 803 von einer dynamischen PLA des ODER-Types gebildet wird. Die Umordnungseinrichtung 804 besteht aus n-Kanal-MOS-Transistoren, wie in der Figur gezeigt ist. Das herausragendste Merkmal der Anordnung ist, daß sie statt die Signale, die in die Mikroprogrammspeicher/Steuerungseinheit 202 und die Decodierereinheit 203 einzugeben sind, d. h. die im Speicher 303 zu speichernden Informationen j, zu erzeugen, in dem sie ein Anweisungswort (Signalleitung d) decodiert, um einen neuen Binärcode (identisch mit der Information j) zu bilden, der sich vollständig vom Anweisungswort unterscheidet, die Information j unter Verwendung eines Teils des Binärcodes erzeugt, der das Anweisungswort darstellt, oder erneut den Code vollständig umordnet. Ein weiteres Merkmal ist, daß für die Umordnung des Binärcodes eines Anweisungsworts die Umordnungsinformationen so definiert sind, daß Anweisungswörter mit genau derselben Prozedur des Anordnungsformats in die gleiche Anordnung fallen, selbst wenn deren Codes vollständig verschieden sind. Diese Ausführungsform verwirklicht die Funktion des herkömmlichen Anweisungsdecodierers zum Erzeugen der in die Mikroprogrammspeicher/Steuerungseinheit einzugebenden Mikroprogrammadresse aus dem Anweisungswort, wobei eine Hardwarestruktur mit 1/5 bis 1/10 der Größe im Vergleich zum herkömmlichen Decodierer verwendet wird.
- Fig. 21 zeigt eine weitere Ausführungsform der Umordnungseinrichtung 804, die sich von der Ausführungsform der Fig. 20 dadurch unterscheidet, daß die Information j in Abhängigkeit vom Ausgang der ODER-Matrix der PLA (der Codeumordnungsinformations-Speichereinrichtung 803) willkürlich spezifiziert werden kann. Die Ausführungsform der Fig. 20 erzeugt die Information j durch Umordnen eines Teils oder des gesamten Anweisungscodes, während die neue Ausführungsform einen Code als Information j unabhängig vom Anweisungscode erzeugen kann. Das heißt, die Information j mit einem willkürlichen Codemuster kann für einen beliebigen Binärcode erhalten werden, der ein Anweisungswort ausdrückt, indem lediglich die Inhalte der Codeumordnungsinformations-Speichereinrichtung 803 geändert werden.
- Fig. 22 zeigt eine Ausführungsform der Codezusammenstellungseinrichtung 802 der Fig. 8, die unter Verwendung von Speicherzellen aufgebaut ist, auf die zum Lesen und Schreiben zugegriffen werden kann, so daß deren Inhalte dynamisch übertragen werden können. Die Informationen zum Zusammenstellen der Anweisungscodes werden über den Bus 22001 wortweise sequentiell in den Speicherzellen 2210 definiert. Nachdem alle Bits der Speicherzellen 2210 definiert worden sind, wird ein Anweisungswort, das zusammengestellt werden soll, über den Bus d auf die Datenleitungen 22101 ausgegeben. Die Speicherzellen 2210 vergleichen die definierten Daten mit den Daten auf den Datenleitungen 22101 und legt die Signalleitungen mit nicht übereinstimmenden Ergebnissen auf Niedrigpegel. Wenn für alle Bits eines Wortes konsistente Ergebnisse erreicht werden, verharren die Signalleitungen 22102 auf Hochpegel. Wenigstens eine der Signalleitungen 22102 für die Feststellung einer Übereinstimmung wird verwendet, um die Codeumordnungsinformations-Speichereinrichtung 803 in der nächsten Stufe anzutreiben.
- Fig. 23 zeigt ein Beispiel der Speicherzelle 2210 der Fig. 22 genauer. Die Speicherzelle 2210 wird mit Daten beschrieben, indem sie über die Signalleitung W gesteuert wird. Die Datenleitungen D und besitzen entgegengesetzte Polaritäten, wobei während des Vorladezyklus beide Leitungen auf Hochpegel gehalten werden. Zu diesem Zeitpunkt wird die Signalleitung C auf Niedrigpegel gesetzt, weshalb die Vorladeoperation für die Codeumordnungsinformations-Speichereinrichtung 803 erwünscht ist.
- Fig. 24 zeigt einen Teil des in Fig. 1 gezeigten Prozessors, der zum Mehrfachregistersystem paßt. In dieser Anordnung ist die Busschnittstelleneinheit 205 der Fig. 1 in eine Busschnittstelleneinheit 2101 und eine weitere Busschnittstelleneinheit 2102 aufgeteilt, während die Anweisungswortübersetzungseinheit 201, die Mikroprogrammspeicher/Steuerungseinheit 202 und die Decodierereinheit 203 als einheitliche Steuerungseinheit 2000 gezeigt sind. Die Bus-Eingang/Ausgang-Einheiten 2081, 2082 und 2083 der Fig. 1 sind als eine Bus-Eingang/Ausgang-Einheit 2103 gezeigt. Die Busschnittstelleneinheit 2101 enthält einen Adreßgenerator 2104, einen Tasknummerspezifizierer 2105, einen Taskanzahlspeicher 2106, einen Basisadreßspezifizierer 2107 sowie eine Taskgrenzenerfassungsschaltung 2108, die jeweils von der Steuerungseinheit 2000 gesteuert werden. Von diesen Funktionsblöcken sind die Busschnittstelleneinheit 2102, der Adreßgenerator 2104, der Taskanzahlspeicher 2106 und der Basisadreßspezifizierer 2107 mit dem D-Bus 1a und dem A-Bus 1b verbunden, während der Hauptspeicher 102, die Operationseinheit 204 und der Tasknummerspezifizierer 2105 mit dem D-Bus 1a verbunden sind. Die Steuerungseinheit 2000 erzeugt das Steuersignal 1c für die Operationseinheit 204, das Steuersignal 1d für die Busschnittstelleneinheit 2102, das Steuersignal 1e und die Registerspezifizierungsinformation 1g, die im Signal 1f von der Busschnittstelleneinheit zum Adreßgenerator 2104 enthalten ist, das Steuersignal 1h für den Tasknummerspezifizierer 2105, das Steuersignal 1i für den Taskanzahlspeicher 2106 sowie das Steuersignal j für den Basisadreßspezifizierer 2107. Der Tasknummerspezifizierer 2105 dient zum Empfangen des Ereigniseintrittssignals 1k als Antwort auf eine Unterbrechungsanforderung von einer (nicht gezeigten) Peripherieeinheit und des Ereigniseintrittsignals 1l zum Zeitpunkt des Prozeduraufrufs /Rücksprungs. Die Operationseinheit 204 ist über einen Datenübertragungsbus 1m mit der Busschnittstelleneinheit 2102 verbunden. Das Signal ln führt die Tasknummer, die im Tasknummerspezifizierer 2105 erhalten wird, während das Signal 1p die physikalische Adreßinformation führt, die vom Adreßgenerator 2104 an den Hauptspeicher 102 ausgegeben wird.
- Im folgenden wird kurz die Operation des Prozessors 20 beschrieben, der die vorangegangenen Funktionsblöcke enthält. Ein aus dem Hauptspeicher außerhalb des Prozessors 20 gelesenes Anweisungswort wird über den D-Bus 1a in die Busschnittstelleneinheit 2102 eingegeben. Das Anweisungswort wird ferner in einigen Fällen als Signal 1f zur Steuerungseinheit 2000 übertragen. Die Steuerungseinheit 2000 decodiert das eingegebene Anweisungswort und sendet, wenn dieses eine Anweisung ist, die ein Register verwendet, eine Registerspezifizierungsinformation, die im Registerspezifizierungsfeld im Anweisungswort enthalten ist, zum Adreßgenerator 2104 und das Steuersignal 1c zur Operationseinheit 204.
- Der Tasknummerspezifizierer 2105 antwortet auf das Ereigniseintrittssignal 1k oder 1l, das als Antwort auf eine externe Unterbrechungsanforderung oder auf die Ausführung einer internen Unterroutinenunterbrechung entsteht, um entsprechend dem Ereignis eine Task auszuwählen, und gibt gleichzeitig entsprechend der später beschriebenen Prozedur eine Tasknumitter zum Identifizieren eines der Task zugeordneten Registersatzes an den spezifizierten Adreßgenerator 2104 aus. Der Adreßgenerator 2104 erzeugt gemäß der später beschriebenen Prozedur aus der Tasknummer in und der Registerspezifizierungsinformation 1g eine physikalische Adresse, die sich auf den Hauptspeicher 102 bezieht, und sendet diese zum Hauptspeicher 102. Der Hauptspeicher 102 liest die Inhalte der Stelle, die der gegebenen physikalischen Adresse zugeordnet ist, und sendet sie über den D-Bus 1a. Die Operationseinheit 204 nimmt als Antwort auf das Steuersignal 1c die Daten auf dem D-Bus 1a an und implementiert die spezifizierte Operation. Nach der Operation werden die resultierenden Daten über den D-Bus 1a ausgegeben und in den von der Anweisung spezifizierten Speicher geschrieben.
- Wenn während der Ausführung einer Task ein Ereigniseintrittssignal 1k oder 1l mit einer höheren Priorität als die Task auftritt, gibt der Tasknummerspezifizierer 2105 mit dem Signal 1q eine Taskwechselanforderung aus, wobei die Steuerungseinheit 2000 verschiedene Daten, wie z. B. die zur ausgeführten Task passende Tasknummer über den D- Bus 1a auf dem Stapel im Hauptspeicher speichert. Die = Steuerungseinheit 2000 implementiert ferner die Steuerung so, daß sie die Umgebung modifiziert, um diese auf die Task des Ereignisses mit höherer Priorität einzurichten. Auf die gleiche Weise wie im vorangegangenen Fall gibt der Tasknummerspezifizierer 2105 eine Tasknummer aus, die einen der neuen Task zugeordneten Registersatz identifiziert. Auf diese Weise wird jedesmal dann, wenn ein Ereigniseintrittssignal 1k oder 1l angelegt worden ist, dessen Priorität mit derjenigen der aktuellen Task verglichen, wobei die Task gewechselt wird, wenn das letztere Ereignis eine höhere Priorität besitzt. Wenn die Tasknummer in die Anzahl der im Taskanzahlspeicher 2106 vorhandenen Tasks 1r überschritten hat, wird dies von der Taskgrenzenerfassungsschaltung 2108 detektiert und durch das Signal 1s der Steuerungseinheit angezeigt, so daß die Steuerungseinheit einen im voraus festgelegten Prozeß ausführt.
- Fig. 25 zeigt die genaue Anordnung des Tasknummerspezifizierers 2105, der eine erste Flip-Flop-Gruppe 2111 und eine zweite Flip-Flop-Gruppe 2112 für die zeitliche Steuerung des Ereigniseintrittssignals 1k, eine Prioritätsarbitrationsschaltung 2113 zum Prüfen der Prioritäten der Ereignisse, ein Tasknummerregister 2114 zum Halten der Tasknummer, einen Addierer/Subtrahierer 2115 zum Inkrementieren oder Dekrementieren der Inhalte des Tasknummerregisters 2114 um 1 in Abhängigkeit vom Wert 1h-3, der Teil des Steuersignals ih ist, sowie einen Tasknummerzwischenspeicher 2116 zum vorübergehenden Halten der Tasknummer enthält.
- Im folgenden wird mit Bezug auf Fig. 25 die Operation der obigen Anordnung beschrieben. Die asynchron zu den Basistakten φ&sub1; und φ&sub2; in den Prozessor 20 eingegebenen Ereigniseintrittssignale 1k werden von der ersten Flip-Flop- Gruppe 2111 abgetastet und durch die zweite Flip-Flop- Gruppe 2112 mit dem Basistakt φ&sub2; synchronisiert. Die synchronisierten Ereignissignale werden an die Prioritätsarbitrationsschaltung 2113 weitergeleitet, wobei ein Ereignissignal, dessen Priorität höher eingestuft wird als die aktuelle Task, die Ausgabe des Ereigniseintritterfassungssignals 1q an die Steuerungseinheit 2000 veranlaßt. Die Steuerungseinheit 2000 gibt als Antwort auf dieses Signal ein Steuersignal 1h aus, um die Tasknummer im Tasknummerregister 2114, die bis zum Eintreten des Ereignisses wirksam war, durch die neue Tasknummer zu ersetzen. Im Fall des Auftretens eines Prozeduraufrufs/Rücksprungs oder dergleichen während der Taskprozeßausführung gibt die Steuerungseinheit 2000 ein Signal 1l aus, so daß die Task sofort gewechselt wird.
- Es ist zu beachten, daß das Tasknummerregister 2114 mit dem D-Bus 1a verbunden ist, mit dem Ziel, der Anweisung zu ermöglichen, auf das Tasknummerregister 2114 zum Lesen oder Prüfen der Inhalte zuzugreifen. Wenn in dieser Ausführungsform die Anweisung zum Prüfen der Inhalte des Tasknummerregisters 2114 ausgeführt worden ist, wird die vom Tasknummerregister 2114 angegebene Tasknummer unmittelbar vor Ausführung der Anweisung, d. h. die Tasknummer vor der Prüfung, auf dem Stapel gespeichert, wobei der Stapelzeiger in dem durch die geprüfte Tasknummer nach der Ausführung der Anweisung spezifizierten Registersatz verwendet wird. Um die vorherige Tasknummer, die gespeichert worden ist, wiederzugewinnen, ist eine Anweisung vorgesehen, die die Inhalte des Stapels, die vom Stapelzeiger in dem durch die aktuelle Tasknummer spezifizierten Registersatz angegeben werden, ausliest und in das Tasknummerregister 2114 einsetzt.
- Fig. 26 zeigt die Anordnung des Adreßgenerators 2104 genauer. Der Adreßgenerator 2104 dient zum Erzeugen einer physikalischen Adreßinformation für den Hauptspeicher 2107 auf der Grundlage der Tasknummer in und der Registerspezifizierungsinformation 1g und enthält ein globales Basisregister 2121, ein lokales Basisregister 2122, einen Komparator 2123, eine Bereichsbestimmungsschaltung 2124 sowie eine Erzeugungsschaltung 2125 für die physikalische RAM-Adresse. Auf das globale Basisregister 2121 und das lokale Basisregister 2122 kann von der Anweisung zugegriffen werden, um die Inhalte zu prüfen. Der Komparator 2123 vergleicht die Inhalte 3a des globalen Basisregisters 2121 und die in der Registerzuweisungsinformation 1g enthaltene Registernummer und vergleicht ferner die Inhalte 3b des lokalen Basisregisters 2122 mit der Registernummer in ig. Die Ergebnisse des Vergleichs werden als Signale G bzw. L an die Bereichsbestimmungsschaltung 2124 weitergeleitet. Die Bereichsbestimmungsschaltung 2124 ermittelt in Abhängigkeit von den Signalen G und L entweder den globalen Bereich, den lokalen gemeinsamen Bereich oder den lokalen Bankbereich und erzeugt eine Information in Form eines Steuersignals 3c, die erforderlich ist, um die physikalische Adresse des Hauptspeichers 102 zu erzeugen. Die Erzeugungsschaltung 2125 für die physikalische RAM-Adresse erzeugt in Abhängigkeit von den Steuersignalen 3c und 1e die physikalische Adresse des On-Chip-RAM aus der Tasknummer in und der in der Registerspezifizierungsinformation 1g enthaltenen Registernummer. In dieser Ausführungsform besitzt der Hauptspeicher 102 eine Kapazität von 1152 Bytes, jeweils 64 Bytes für jede Task. Dementsprechend können für jede Task 16 32-Bit-Register zur Verfügung gestellt werden.
- Im folgenden ist beispielhaft die Operation aller Funktionsblöcke des Adreßgenerators 2104 beschrieben.
- Wenn das globale Basisregister 2121 13411 enthält und das lokale Basisregister 2122 "4" enthält, werden die Register für die Task #2n+1 in einen globalen Bereich, einen lokalen gemeinsamen Bereich und einen lokalen Bankbereich zusammengefaßt, wie in Fig. 27(a) gezeigt ist. Diese Bereiche enthalten folgende Register.
- (i) Globaler Bereich: R0-R3
- (ii) Lokaler gemeinsamer Bereich: R16-R12
- (iii) Lokaler Bankbereich: R4-R11
- Wenn das globale Basisregister 2121 "4" enthält und das lokale Basisregister 2122 "4" enthält, werden die Register für die Task #2n+2 wie im Fall (1) in drei Bereichen zusammengefaßt. Diese Bereiche enthalten folgende Register.
- (i) Globaler Bereich: R0-R3
- (ii) Lokaler gemeinsamer Bereich: R4-R7
- (iii) Lokaler Bankbereich: R8-R15
- Unter der Annahme einer Taskumschaltung von Task #1 auf Task #2, die für den obigen Fall (2) der Taskumschaltung von einer ungeraden zu einer geraden Tasknummer relevant ist, findet folgende Operation statt.
- Wenn die Register R0-R3 für Task #2 spezifiziert sind, wird auf R0-R3 für Task #0 zugegriffen.
- Wenn die Register R4-R7 für Task #2 spezifiziert sind, wird auf R4-R7 für Task #1 zugegriffen.
- Wenn die Register R4-R7 für Task #2 spezifiziert sind, wird auf R4-R7 für die aktuelle Task #2 zugegriffen.
- Diese Zugriffsoperationen sind in Fig. 28 gezeigt. Wenn in irgendeiner Task ein Register im globalen Bereich spezifiziert wird, wird auf ein entsprechendes Register für Task #0 zugegriffen. Wenn ein Register im lokalen gemeinsamen Bereich spezifiziert wird, wird auf ein entsprechendes Register für die vorangegangene Task zugegriffen. Wenn ein Register im lokalen Bankbereich spezifiziert wird, wird auf ein entsprechendes Register für die aktuelle Task zugegriffen.
- Wenn beabsichtigt ist, zwischen den Tasks Parameter auszutauschen, ist es somit nur erforderlich, die Inhalte des globalen Basisregisters 2121 und des lokalen Basisregisters 2122 im voraus zu spezifizieren, während eine wirkliche Parameterübertragung zwischen den Tasks nicht erforderlich ist, wodurch eine Hochgeschwindigkeits- Taskumschaltung ermöglicht wird.
- Fig. 29 zeigt die Anordnung des Komparators 2123 genauer. Der Komparator 2123 enthält eine Vergleichsschaltung 2131, die einen globalen Bereich identifizieren kann, sowie eine Vergleichsschaltung 2132, die einen lokalen Bankbereich identifizieren kann. Die Vergleichsschaltung 2131 vergleicht die in der Registerspezifizierungsinformation 1g enthaltene Registernummer A mit dem globalen Basiswert B, der der Ausgang 3a des globalen Basisregisters 2121 ist, und erzeugt ein Ausgangssignal G mit einem logischen Pegel "1" wenn A kleiner ist als B, oder erzeugt andernfalls einen "0"-Ausgang. Die Vergleichsschaltung 2132 enthält eine Vergleichsschaltung 2133, die einen lokalen Bankbereich identifizieren kann, wenn eine Umschaltung von einer ungeradzahligen Task auf eine geradzahlige Task durchgeführt wurde, sowie eine Vergleichsschaltung, die einen lokalen Bankbereich identifizieren kann, wenn eine Umschaltung von einer geradzahligen Task auf eine ungeradzahlige Task durchgeführt wurde, wobei beide Schaltungen ihre Ausgänge 6a und 6b auf dem logischen Pegel "1" halten, wenn die Registernummer A zum lokalen Bankbereich gehört. Ein Multiplexierer 2136 wählt einen der Ausgänge 6a und 6b aus, um in Abhängigkeit vom Ausgang 6 des Flip-Flops 2135, das durch das Signal 1e von der Steuerungseinheit 2000 gesteuert wird, ein Signal L zu erzeugen.
- Fig. 30 zeigt den von der Bereichsbestimmungsschaltung 2124 ausgeführten Prozeß.
- Zu Beginn wird die Relevanz des globalen Bereichs auf der Grundlage des Werts des Signals G geprüft.
- (i) Bestätigendes Testergebnis: Die Schaltung erkennt den Bereich als den globalen Bereich und gibt ein Signal 7a aus, das anzeigt, daß die physikalische Adresse des Hauptspeichers 102 unter Verwendung der globalen Tasknummer und der Registernummer erzeugt wird.
- (ii) Negatives Testergebnis: Die Schaltung erkennt den Bereich nicht als den globalen Bereich und fährt mit dem nächsten Entscheidungsschritt fort. In diesem Schritt prüft die Schaltung auf der Grundlage des Werts des Signals L, ob der Bereich der lokale Bankbereich oder der lokale gemeinsame Bereich ist.
- (iii) Bestätigendes Testergebnis: Die Schaltung erkennt den Bereich als den lokalen Bankbereich und gibt ein Signal 7c aus, das anzeigt, daß die physikalische Adresse des Hauptspeichers 102 unter Verwendung der aktuellen Tasknummer und der Registernummer erzeugt wird.
- (iv) Negatives Testergebnis: Die Schaltung erkennt den Bereich als den lokalen gemeinsamen Bereich und gibt ein Signal 7b aus, das anzeigt, daß die physikalische Adresse des Hauptspeichers 102 unter Verwendung der vorangegangenen Tasknummer und der Registernummer erzeugt wird.
- Diese Signale 7a, 7b und 7c, die als Ergebnis des obenerwähnten Entscheidungsprozesses erzeugt werden, werden als Signal 3c an die Erzeugungsschaltung 2125 für die physikalische RAM-Adresse weitergeleitet.
- Fig. 31 zeigt die Prozedur der Erzeugung der physikalischen Adresse mittels der Hauptspeicheradreßerzeugungsschaltung 2125. In dieser Ausführungsform besitzt der Hauptspeicher 102 eine Kapazität von 1152 Bytes, weshalb die physikalische Adresse von 0 bis 1151 reicht. Im folgenden wird die Operation für den Fall von 16 im Hauptspeicher 102 vorhandenen Tasks beschrieben. In diesem Fall sind die vier niedrigstwertigen Bits der Tasknummer in, die vom Tasknummerspezifizierer 2105 erzeugt wird, wirksam, um die Tasknummer anzugeben. Die physikalische Adresse wird gemäß der folgenden Prozedur erzeugt.
- Der Adreßgenerator empfängt eine Tasknummer (t3 t2 t1 t0)&sub2;, die auf der Registernummer (r3 r2 r1 r0)&sub2;, die in der Registerspezifizierungsinformation 1g enthalten ist, und dem Signal 3c basiert, das von der Bereichsbestimmungsschaltung 2124 erzeugt wird.
- Die Tasknummer wird komplementiert, um T1=( 3 2 1 0)&sub2; zu erhalten.
- T1 wird nach links geschoben, wobei in das niedrigstwertige Bit eine "0" eingegeben wird. Die Schiebeoperation wird sechsmal wiederholt, um T2=( 3 2 1 0 0 0 0 0 0 0)&sub2; zu erhalten.
- Die Registernummer wird nach links verschoben, wobei in das niedrigstwertige Bit eine "0" eingegeben wird. Die Schiebeoperation wird zweimal wiederholt, um R1=(r3 r2 r1 r0 0 0)&sub2; zu erhalten
- T2 wird zu R1 addiert, um A1=(t3 t2 t1 t0 r3 r2 r1 r0 0 0)&sub2; zu erhalten.
- Der Offset-Wert (080)&sub1;&sub6; wird zu A1 addiert, um das Ergebnis A2 zu erhalten. Zum Beispiel erzeugt die Tasknummer (0000)&sub2; das Ergebnis A2 = (1 0 0 0 1 r3 r2 r1 r0 0 0)&sub2;. Der Offset-Wert zu diesem Zeitpunkt wird einzigartig aus der gesamten Kapazität des Hauptspeichers 102 ermittelt und nimmt für einen Hauptspeicher von 1152 Byte den obenerwähnten Wert an.
- Auf den Hauptspeicher 102 wird zugegriffen, indem die neun höchstwertigen Bits "1 0 0 1 r3 r2 r1 r0" von A2 als die neun höchstwertigen Bits der Adresse eingesetzt werden. Das heißt, es wird gleichzeitig auf vier Bytes zugegriffen. Diese Operation ergibt sich aus der Annahme von 32-Bit-Registern und ist auf diese Ausführungsform beschränkt.
- Fig. 32 zeigt die Beziehung zwischen dem Off-Chip-Hauptspeicher 2142 und dem On-Chip-Hauptspeicher 102 auf der Grundlage der Inhalte des Hauptspeicherbasisregisters 2141, das im Basisadreßspezifizierer 2107 enthalten ist. Auf das Hauptspeicherbasisregister 2142 kann von der Anweisung zugegriffen werden, um die Inhalte willkürlich zu setzen. Wenn im Hauptspeicherbasisregister 2142 eine Arbitrierungsadresse des Off-Chip-Hauptspeichers 2142 gesetzt ist, wird dem On-Chip-Hauptspeicher 102 ein Adreßraum zugewiesen, der von dieser Adresse bis 1152 reicht. Wenn somit die Adresse des von der Busschnittstelleneinheit 2102 spezifizierten Speichers im obenerwähnten Adreßraum enthalten ist, greift der Prozessor 20 auf den Hauptspeicher 102 zu. Das heißt, die Steuerung ist so beschaffen, daß der Hauptspeicher 102 im Prozessor 20 an einer willkürlichen Stelle des Off-Chip-Hauptspeichers 2142 angeordnet wird, indem lediglich die Inhalte des Hauptspeicherbasisregisters 2141 verändert werden. Diese Ausführungsform ist mit einer Adreßerfassungseinrichtung versehen, um den Registerbereich im Hauptspeicher 102 und andere Bereiche zu löschen, so daß auf den Bereich, der für den Taskprozeß für die Registersätze verwendet wird, nicht als Speicherbereich zugegriffen wird.
- Fig. 33 zeigt die Anordnung der Taskgrenzenerfassungsschaltung 2108. Die Tasknummer in wird mit der Anzahl der Tasks 1r verglichen, die im Taskanzahlspeicher 2106 gesetzt ist, wobei dann, wenn die Tasknummer in die Anzahl der Tasks 1r überschritten hat, dies der Unterbrechungsvektorerzeugungsschaltung 2143 in der Steuerungseinheit 2000 mit dem Signal is angezeigt wird, welche dann einen im voraus festgelegten Ausnahmeprozeß aus führt. In dieser Ausführungsform kann von der Anweisung zum Prüfen auf den Taskanzahlspeicher 2106 zugegriffen werden, wobei der Speicherinhalt wie folgt die Anzahl der Tasks angibt.
- (i) 0: zwei Tasks
- (ii) 1: vier Tasks
- (iii) 2: acht Tasks
- (iv) 3: sechzehn Tasks
- Dementsprechend beträgt für den Taskanzahlspeicherinhalt N die maximale Tasknummer 2N+1. Es ist eine Maximalwerterzeugungsschaltung 2144 zum Berechnen von 2N+1 aus N vorgesehen, jedoch ist das Vorsehen dieser Schaltung 2144 auf diese Ausführungsform beschränkt.
- Fig. 34 zeigt eine Ausführungsform der Mikroprogrammspeicher/Steuerungseinheit 202. Ein Teil der im Mikroprogrammadreßregister 2403 zu setzenden Mikroprogrammadresse wird von der Auswahlvorrichtung 2402 ausgewählt. Das gewählte Signal 2402a wird mit dem Signal 2406e zusammengeführt, das Teil des Ausgangs vom Mikroanweisungsregister 2406 ist, wobei das Ergebnis im Mikroprogrammadreßregister 2403 gehalten wird. Der Ausgang des Mikroprogrammadreßregisters 2403 wird zum Adreßdecodierer 2404 weitergeleitet und gleichzeitig durch den +1-Addierer 2408 addiert, wobei das resultierende Signal 2408a in die Auswahleinrichtung 2402 eingegeben wird. Der Adreßdecodierer 2404 decodiert die Mikroprogrammadresse und sendet das Ergebnis zum Mikroanweisungsspeicher 2405. Der Mikroanweisungsspeicher 2405 liest eine spezifizierte Mikroanweisung aus und setzt diese in das Mikroanweisungsregister 2406 ein. Das Mikroanweisungsregister 2406 erzeugt drei Hauptausgänge, die das Signal 2406a, welches das Signal zum Steuern der Decodierereinheit 203 und der Operationseinheit 204 ist, das Signal 2406b, welches das Signal zum Spezifizieren einer Verzweigungszieladresse ist, wenn das Mikroprogramm verzweigt, und das Signal 2406c enthält, welches das Signal zum Steuern der nächsten Adresse des Mikroprogramms ist. Eine Steuerungsschaltung 2407 antwortet auf das Signal 2406c, um ein Signal 2407a zum Steuern der Auswahleinrichtung 2402 und ein Signal 2407b zum Steuern des Stapels 2409, der zum Sichern der Mikroprogrammadresse verwendet wird, zu erzeugen.
- Fig. 35(a) zeigt eine Ausführungsform des Mikroprogrammadreßregisters 2403, des Adreßdecodierers 2404, des Mikroanweisungsspeichers 2405 und des Mikroanweisungsregisters 2406, die in Fig. 34 gezeigt sind. Jedes Bit des Mikroprogrammadreßregisters 2403 wird von einem Flip-Flop 3502 gebildet, wie z. B. in Fig. 35(b) gezeigt ist. Der Adreßdecodierer 2404 wird von einer dynamischen PLA des UND-Typs gebildet, während der Mikroanweisungsspeicher 2405 von einer dynamischen PLA des ODER-Typs gebildet wird. Das Mikroanweisungsregister 2406 wird von einem dynamischen Zwischenspeicher gebildet.
- Fig. 36 zeigt die zeitliche Beziehung der Signale gemeinsam mit den Basistakten φ&sub1; und φ&sub2;. Wie aus Fig. 36 deutlich wird, ist eine Taktperiode erforderlich, nachdem der Ausgang 2403a des Mikroprogrammadreßregisters 2403 gesetzt worden ist, um den Ausgang des Mikroanweisungsregisters 2406 zu erhalten.
- Fig. 37 zeigt die Zeitbeziehung der Signale, wenn die Mikroprogrammspeicher/Steuerungseinheit 202 angehalten ist, ohne die Basistakte φ&sub1; und φ&sub2; auszusetzen. Das Signal 24A ist das Signal zum Anhalten der Mikroprogrammspeicher/Steuerungseinheit 202, wobei das Signal bei Hochpegel das Mikroprogrammadreßregister 2403 veranlaßt, unverändert zu verharren, und das Mikroanweisungsregister 2406 veranlaßt, für alle Bits einen Niedrigpegelausgang zu erzeugen. Durch Zuweisen dieses Spezialwerts (alle Bits auf Niedrigpegel) des Mikroanweisungsregisters an eine "Leerlauf"-Anweisung für das Anwendungssystem kann die Mikroprogrammspeicher/Steuerungseinheit 202 scheinbar angehalten werden. Das Beispiel der Fig. 37 zeigt die Zeitbeziehung für den Fall, in dem ein Anhalten für eine Taktperiode (in der Figur durch Nop gezeigt) zwischen dem Zyklus der Mikroanweisung 2 (in der Figur mit µIR2 gezeigt) und dem Zyklus der Mikroanweisung 3 (in der Figur mit µIR3 gezeigt) angeordnet ist.
- Fig. 38 zeigt die Anordnung des Operationssteuerungsdecodierers 2030 in der Decodierereinheit 203. Der Decodierer 2030 enthält einen Decodierersteuerungszwischenspeicher 2800, einen ersten Registersteuerungsdecodierer 2810, einen zweiten Registersteuerungsdecodierer 2820, einen Operationsschaltungssteuerungsdecodierer 2840 sowie Verzögerungsschaltungen 2830 und 2850. Der erste Registersteuerungsdecodierer 2810 spezifiziert das Quellenregister, das die zu verarbeitenden Daten enthält, während der zweite Registersteuerungsdecodierer 2820 das Zielregister spezifiziert, in dem das Operationsergebnis gespeichert wird, und der Operationsschaltungsteuerungsdecodierer 2840 den Typ der Operation (Addition, Subtraktion, logische Summe, logisches Produkt, exklusive logische Summe) spezifiziert. Es ist eine Taktperiode erforderlich, nachdem ein Quellenregister gelesen worden ist, bis das Ergebnis der Operation erhalten wird, weshalb das Signal 2801 durch die Verzögerungsschaltung 2830 um eine Taktperiode verzögert wird. Aufgrund der unterschiedlichen Zeitsteuerung der Verwendung der Ausgangssignale 2841 und 2842 vom Operationsschaltungssteuerungsdecodierer 2840 wird das Signal 2842 durch die Verzögerungsschaltung 2850 verzögert.
- Fig. 39 zeigt eine Ausführungsform des Decodierersteuerungszwischenspeichers 2800, des ersten Registersteuerungsdecodierers 2810, des zweiten Registersteuerungsdecodierers 2820 und der Verzögerungsschaltung 2830, die in Fig. 38 gezeigt sind. Das herausragendste Merkmal dieser Ausführungsform ist, daß die ersten und zweiten Registersteuerungsdecodierer 2810 und 2820 von dynamischen PLAs des UND-Typs gebildet werden, deren Ausgangsleitungen 2812 unter Verwendung von p-Kanal-MOS-Transistoren vorgeladen werden, wobei ein spezieller Pegel (in dieser Ausführungsform der Hochpegel) der Signale 2812, der während der Vorladeperiode ausgegeben wird, als der unselektierte Zustand für den Eingang/Ausgang des Registers definiert ist, wobei nur die Signalleitungen 2812, die der PLA-Logik entsprechen, nach der Vorladeperiode entladen werden, und wobei die Register-Eingang/Ausgang- Leitungen 2813 die Registerauswahlstufe bilden.
- Fig. 40 zeigt die Zeitbeziehung der Signale des ersten Registersteuerungsdecodierers 2810 zu den Basistakten. Es ist eine Taktperiode erforderlich, nachdem der Ausgang 2801 der Decodierersteuerungseinheit 2800 gesetzt worden ist, bis die Registerinhalte mittels des Registerlesesteuersignals 2811 ausgelesen werden. Diese Ausführungsform kann mittels einer Hardware realisiert werden, die ungefähr nur ein Drittel der statischen PLA-Struktur umfaßt. Nur ausgewählte Signalleitungen 2812 führen Entladeströme, was den Leistungsverbrauch reduziert, wobei die Schaltung im Registerzugriffszeitablauf vergleichbar zum herkömmlichen statischen Decodierer betrieben wird. Wenn die logische Summe für die Ausgangsleitungen der PLA benötigt wird, kann sie durch die verdrahtete ODER-Konfiguration für die Ausgangsleitungen erhalten werden.
- Fig. 41 zeigt beispielhaft die Anordnung der Operationseinheit 204. Die Einheit 204 enthält ein temporäres Register 3100 zum Halten von Daten, ein Statusregister 3110 zum Halten des Zustands des Operationsergebnisses, eine Operationsschaltung 3120, einen Quellenzwischenspeicher 3130 zum vorübergehenden Halten von zu verarbeitenden Daten, eine Schiebeschaltung 3140, die das Operationsergebnis um ein Bit nach rechts oder nach links schiebt, einen Zielzwischenspeicher 3150 zum vorübergehenden Halten des Operationsergebnisses, ein Lesedatenregister 3160 zum vorübergehenden Halten der vom Bus 213 gelesenen Daten sowie ein Schreibdatenregister 3170 zum vorübergehenden Halten von über den Bus 213 gesendeten Daten.
- Zu Beginn wird ein Teil der Operationsdaten über den Bus 31A in den Quellenzwischenspeicher 3130 eingegeben. Die Inhalte des Quellenzwischenspeichers 3130 und des Lesedatenregisters 3160 werden in die Operationsschaltung 3120 eingegeben, die eine auf der Signalleitung 2823 spezifizierte Operation implementiert. Das Ergebnis der Operation wird vorübergehend im Zielzwischenspeicher 3150 gehalten und anschließend über den Bus 318 an ein durch das Signal 2813 spezifiziertes Register weitergeleitet. Die als Ergebnis der Operation erzeugten Signale, die das Vorzeichen des Ergebnisses, das Ergebnis von Null, das Auftreten eines Übertrags (Borgens) und das Auftreten eines Überlaufs anzeigen, werden über die Signalleitungen 31C in die Statussteuerungsschaltung 3180 eingegeben, woraufhin die Zustände der Signale, die durch das Signal 2803 spezifiziert sind, welches Teil einer Mikroanweisung ist, im Statusregister 3110 gespeichert werden.
- Die Fig. 42, 43 und 44 sind schematische Schaubilder, die ein Beispiel der in Fig. 41 gezeigten Funktionsblöcke zeigen. Die Busse 31A und 31B werden während einer Hochpegelperiode des Basistaktes φ&sub1; vorgeladen, während sie in einer Hochpegelperiode des Basistakts φ&sub2; Daten übertragen.
- Jedes Bit des temporären Registers 3100, z. B. das niedrigstwertige Bit, ist aus einem mit dem Bus 31B-0 verbundenen Schreibgatter 3101-0, einem Treibergatter 3103-0, einem Rückführungsgatter 3102-0 sowie einem mit dem Bus 31A-0 verbundenen Lesegatter 3104-0 aufgebaut. Das temporäre Register wird beschrieben, indem das Steuersignal 3200a auf Hochpegel gesetzt wird, so daß die Daten auf dem Schreibbus 31B-0 über das Schreibgatter 3101-0 geleitet werden, und wird ausgelesen, indem das Steuersignal 3200b auf Hochpegel gesetzt wird, so daß der Ausgang des Treibergatters 3103-0 über das Lesegatter 3104-0 auf den Lesebus 31A-0 geleitet wird.
- Die Statussteuerungsschaltung 3180 wird von einer PLA gebildet, die die Mikroanweisung 2803 und die Statusinformation 31C, die das Operationsergebnis wiederspiegelt, empfängt und das in das Statusregister geschriebene Setzsignal 3281 und die zu schreibenden Daten 3282 erzeugt. Das Statusregister 3110 ist dem temporären Register 3100 ähnlich, besitzt jedoch ein zusätzliches Eingangsgatter 3110-0, wie für das niedrigstwertige Bit gezeigt ist. Es ist zu beachten, daß die Schreiboperation der Daten 3282 über das Gatter 3110-0 während der Vorladeperiode für die Busse 31A und 31B in der Operationseinheit 204 stattfindet.
- Dies ist ein dynamischer Zwischenspeicher zum vorübergehenden Halten von Operationsdaten und kann in Abhängigkeit vom Steuersignal 2813 Daten in einer invertierten Version empfangen.
- Die Schaltung implementiert die Additionsoperation, die logische Summenoperation, die logische Produktoperation und die exklusive logische Summenoperationen in Abhängigkeit von den Steuersignalen auf den drei Steuerleitungen 3321.
- Die Schaltung verschiebt Daten in Abhängigkeit von den Zuständen der Signalleitungen 3341 um ein Bit nach rechts oder nach links. Ein Hochpegelzustand der Signalleitung 3341R bewirkt ein Verschieben nach rechts, während ein Hochpegelzustand der Signalleitung 3341L ein Verschieben nach links bewirkt.
- Dies ist ein dynamischer Zwischenspeicher zum vorübergehenden Halten des Ausgangs der Schiebeschaltung 3114 und ist die einzige Quelle von Daten für den Bus 318.
- Das Lesedatenregister 3160 hält die Daten auf dem Datenbus 213 und überträgt diese zu einem Eingang der Operationsschaltung 3120 oder auf den Bus 31A. Das Schreibdatenregister 3170 hält die über den Bus 213 zu sendenden Daten und empfängt die Daten auf dem Bus 318, der das Operationsergebnis führt.
- Fig. 44 zeigt die Anordnung für den Fall, indem der Bus 213 16 Bits besitzt und das Lesedatenregister 3160 und das Schreibdatenregister 3170 jeweils 32 Bits besitzen. Die Steuersignale 236a, 236b, 236c und 236d zum Steuern des Eingangs/Ausgangs für den Bus 213 wirken auf die beiden obengenannten Register, so daß deren 16 hochwertige Bits und deren 16 niedrigwertige Bits unabhängig gesteuert werden.
- Fig. 45 zeigt eine Ausführungsform des Prozessors 20, der einen Hauptspeicher 3500 enthält, auf den wenigstens zum Lesen zugegriffen werden kann. Wenn der Prozessor 20 zurückgesetzt wird, erfaßt eine Pegelerfassungs /Speicherschaltung 3531 den Pegel am Anschluß 3530 und speichert diesen. In folgenden wird die Operation des Prozessors 20 für die folgenden zwei Fälle beschrieben.
- Die Inhalte des Speicheradreßregisters 1 (in Fig. 45 mit MAR1 gezeigt) werden über den Bus 212 und den Puffer 3520 zum Anschluß 3521 weitergeleitet. Der Multiplexierer 2 (in der Figur mit MPX2 gezeigt) 3550 selektiert die Inhalte auf dem Bus 212 und leitet die ausgewählten Inhalte zum Hauptspeicher 3500 weiter. In dem Fall, in dem der Wert auf dem Bus 212 die Adresse des Hauptspeichers außerhalb des Prozessors 20 angibt, wählt der Puffer 3510 die auf dem Bus 213 empfangenen Daten am Anschluß 3511. In einem weiteren Fall, in dem der Bus 212 die Adresse des Hauptspeichers innerhalb des Prozessors 20 angibt, selektiert der Puffer 3510 die Daten auf dem Bus 3501. Der Puffer 3510 wird vom Ausgang 3561 des Decodieres 3560 gesteuert, der unterscheidet, ob die vom Bus 3212 geführte Adresse auf den Hauptspeicher 3500 im Prozessor 20 zeigt. Der Ausgang 3512 des Puffers 3510 wird vom Multiplexierer 1 (in der Figur mit MPX1 gezeigt) 3540 ausgewählt und zur Anweisungsspeichereinrichtung 301 gesendet.
- Die Inhalte des Anweisungsadreßregisters (IAR) werden in das Speicheradreßregister 1 (MAR1) eingesetzt, um den Hauptspeicher auszulesen.
- Die Inhalte des Datenadreßregisters (DAR) werden in das Speicheradreßregister 1 (MAR1) eingesetzt, um den Hauptspeicher zu beschreiben oder auszulesen. Zu diesem Zeitpunkt enthält das Datenadreßregister (DAR) die effektive Adresse, die von der Operationseinheit 204 berechnet worden ist.
- Die Inhalte des Anweisungsadreßregisters (IAR) werden im Speicheradreßregister 2 (MAR2) gesetzt und über den Bus 3502 zum Multiplexierer (MPX2) 3550 übertragen. Der Multiplexierer 2 (MPX2) selektiert die Inhalte des Busses 3502 und leitet den selektierten Inhalt zum Hauptspeicher 3500 weiter. Der Ausgang des Hauptspeichers 3500 wird über den Bus 3501, der vom Multiplexierer 1 (MPX1) ausgewählt worden ist, zur Anweisungsspeichereinrichtung 301 übertragen und in diese eingegeben.
- Die effektive Adresse, die von der Operationseinheit 204 berechnet worden ist und im Datenadreßregister (DAR) gehalten wird, wird zum Speicheradreßregister 1 (MAR1) übertragen und über den Bus 212 zum Puffer 3520 übertragen. Die Inhalte des Puffers 3520 werden über den Anschluß 3521 an den Hauptspeicher außerhalb des Prozessors 20 weitergeleitet. Die zu lesenden oder zu schreibenden Daten werden über den Anschluß 3511 und den Bus 213 zwischen der Operationseinheit 204 im Prozessor 20 und dem Hauptspeicher außerhalb des Prozessors 20 oder dem Hauptspeicher in Verbindung mit den Bus 213 innerhalb des Prozessors 20 übertragen. Das heißt, wenn die Pegelerfassungs/Speicherschaltung 3531 einen Hochpegelausgang 3522 erzeugt, findet ein Holen einer Anweisung aus dem Hauptspeicher 3500 innerhalb des Prozessors 20 statt, während ein Lesen/Schreiben von Daten mit einem anderen Hauptspeicher als dem Hauptspeicher 3500 durchgeführt wird. Diese konkurrierende Operation zum Holen der Anweisung und zum Lesen/Schreiben von Daten ist das Merkmal dieser Ausführungsform, das die Anweisungsverarbeitungszeit reduziert.
- Fig. 46 zeigt eine Ausführungsform des Prozessors 20, der mit veränderlichen Speicherzugriffszyklen (Anweisungs- Holzyklus, Datenlesezyklus und Datenschreibzyklus) betrieben wird. Die Länge der Speicherzugriffszyklen verändert sich in Abhängigkeit von den Inhalten des Registers 3600, auf das von der Anweisung zum Lesen oder zum Schreiben zugegriffen werden kann.
- Fig. 47 zeigt beispielhaft die Speicherzugriffszyklen, die durch die Werte des Registers 3600 bestimmt werden. Die in Fig. 47(a) gezeigten Inhalte "0" führen zum schnellsten Speicherzugriff. Durch Konstruieren der Mirkoprogrammspeicher/Steuerungseinheit 202 derart, daß sie für diesen Fall geeignet ist, oder durch Anhalten der Operation für eine Taktperiode durch Ausgeben eines Signals 24A von der Speicherzugriffssteuerungsschaltung an die Mikroprogrammspeicher/Steuerungseinheit 202 für den Fall eines Registerinhalts "1" kann ein 3-Zyklus- Speicherzugriff verwirklicht werden. Das heißt, gemäß dieser Ausführungsform kann der Zugriffszyklus des in Verbindung mit dem Prozessor 20 verwendeten Hauptspeichers verändert werden, indem das Register, das die Anweisung verwendet, gesetzt wird, wodurch das System an die Veränderung des Zugriffszyklus angepaßt werden kann, die sich aus der Veränderung des verwendeten Hauptspeichers ergibt, ohne zusätzliche Steuerschaltungen außerhalb des Prozessors 20 hinzuzufügen.
- Obwohl bestimmte Ausführungsformen der Erfindung gezeigt und beschrieben worden sind, ist für Fachleute offensichtlich, daß verschiedene Änderungen und Abwandlungen vorgenommen werden können, ohne von der vorliegenden Erfindung in ihrem weitesten Sinne abzuweichen.
Claims (8)
1. Datenverarbeitungssystem des Typs mit
Mehrfachregistersatz-System, das einen Hauptspeicher (2142) zum
Speichern von Anweisungen und Operanden enthält und so
beschaffen ist, daß es als Antwort auf die Anweisungen
eine Datenverarbeitung ausführt,
wobei das System umfaßt:
eine Tasknummerspezifizierungseinrichtung (2105)
zum Spezifizieren einer Tasknummer (in), die einen
beliebigen von mehreren Registersätzen identifiziert;
eine Taskanzahlspeichereinrichtung (2106) zum
Speichern der Gesamtzahl der Tasks;
einen Lese/Schreib-RAM-Speicher (102), der den
gesamten Hauptspeicher (2142) oder einen Teil desselben
bildet und eine Kapazität besitzt, die größer ist als
eine Speicherkapazität, die zum Bilden der Registersätze
in der von der Taskanzahlspeichereinrichtung (2106)
spezifizierten Anzahl erforderlich ist; und
eine Adreßerzeugungseinrichtung (2104), die mit
dem Hauptspeicher verbunden ist so beschaffen ist, daß
sie aus der in einem Anweisungswort enthaltenen
Registerspezifizierungsinformation (1g) und auf der Grundlage der
Tasknummer eine physikalische Adresse des Speichers
erzeugt; wobei
das System so arbeitet, daß es auf eine
Speicherstelle zugreift, die durch eine von der
Adreßerzeugungseinrichtung (2104) erzeugte physikalische Adresse
angegeben wird, wenn die Anweisung eine Anweisung mit Zugriff
auf ein Register ist,
dadurch gekennzeichnet, daß
auf den Speicher aufgrund einer Bestätigung
zugegriffen wird, daß die von der
Tasknummerspezifizierungseinrichtung (2105) spezifizierte Tasknummer eine
Gesamtanzahl von Tasks, die in der
Taskanzahlspeichereinrichtung (2106) gespeichert ist, nicht überschreitet,
die Registersätze im Schreib/Lese-Speicher
angeordnet sind,
eine Einrichtung vorgesehen ist, um die erzeugte
Anzahl von Registersätzen veränderlich zu machen, indem
in die Taskzahlspeichereinrichtung geschrieben wird, und
eine Einrichtung (2121, 2122) vorgesehen ist, um
für jede Task die Anzahl der Register zum Speichern von
Daten, die für die Task spezifisch ist, zu spezifizieren.
2. Datenverarbeitungssystem nach Anspruch 1,
dadurch gekennzeichnet, daß
eine Einrichtung vorgesehen ist, um Register zum
Speichern von Parametern zu definieren, die üblicherweise
in Prozeduren verwendet werden.
3. Datenverarbeitungssystem nach Anspruch 1, in dem
die Taskanzahlspeichereinrichtung (2106) einen Speicher
enthält, der von einem Anweisungswort adressiert werden
kann, wobei in den Speicher durch Ausführen des
Anweisungswortes geschrieben werden kann.
4. Datenverarbeitungssystem nach Anspruch 1, in dem
die Tasknummerspezifizierungseinrichtung (2105) ein
Tasknummerspezifizierungsregister (2114) enthält, auf das
von einem Anweisungswort zugegriffen werden kann und in
das durch Ausführen der Anweisung geschrieben werden
kann, wobei das System Taskprozesse implementiert, indem
es die Inhalte des Tasknummerspezifizierungsregisters
jedesmal dann, wenn eine Taskumschaltungsanforderung
auftritt, mit einer konstanten Nummer vergleicht.
5. Datenverarbeitungssystem nach Anspruch 1, das
ferner eine Adressierungseinrichtung (2125) enthält, die
eine willkürliche physikalische Adreßstelle des
Hauptspeichers (2142) angeben kann, wobei das System auf einen
im voraus bestimmten entsprechenden Abschnitt des
Speichers zugreift, wenn auf einen kontinuierlichen
Speicherbereich des Hauptspeichers (102) von einer ersten
physikalischen Adresse bis zu einer zweiten physikalischen
Adresse, die sich von der ersten physikalischen Adresse
unterscheidet, die beide von der
Adreßspezifizierungseinrichtung angegeben werden, zugegriffen wird.
6. Datenverarbeitungssystem nach Anspruch 1, das
ferner eine Erfassungseinrichtung (2108) enthält, die
erfaßt, daß eine von der
Tasknummerspezifizierungseinrichtung spezifizierte Tasknummer eine Gesamtzahl von
Tasks, die von der in der Taskanzahlspeichereinrichtung
(2106) gespeicherten Information angegeben wird,
überschritten hat.
7. Datenverarbeitungssystem nach Anspruch 1, in dem
die Adreßerzeugungseinrichtung (2104) umfaßt:
ein erstes beschreibbares Register (2121, 2122),
das von einem Anweisungswort spezifiziert werden kann;
und
eine Identifizierungseinrichtung (2123, 2124),
die eine Serie von Registern identifizieren kann, die von
einer Registernummer bis zu einer weiteren Registernummer
numeriert sind, die beide in einem Registersatz gesetzt
sind, wobei das erste Register Inhalte besitzt, die eine
der zwei Registernummern spezifizieren können, und wobei
das System auf ein Register mit einer entsprechenden
Registernummer in einem Registersatz zugreift, die von
einer Tasknummer angegeben wird, die unabhängig von einer
aktuellen Tasknummer bestimmt worden ist, wenn eine
Anweisung während der Ausführung einer Task ein Register
spezifiziert hat, das in der Serie von Registern
enthalten ist.
8. Datenverarbeitungssystem nach Anspruch 1, in dem
die Adreßerzeugungseinrichtung (2104) umfaßt:
ein erstes beschreibbares Register (2121, 2122),
das von einem Anweisungswort spezifiziert werden kann;
und
eine Identifizierungseinrichtung (2123, 2124),
die eine Serie von Registern identifizieren kann, die von
einer Registernummer bis zu einer weiteren Registernummer
numeriert sind, die beide in einem Registersatz gesetzt
sind, wobei das erste Register Inhalte besitzt, die eine
der zwei Registernummern spezifizieren können, und wobei
das System auf ein Register mit einer entsprechenden
Registernummer in einem Registersatz zugreift, die von
einer Tasknummer angegeben wird, die einer aktuellen
Tasknummer unmittelbar vorausgeht, wenn während der
Ausführung einer Task, die wenigstens einem Taskwechsel
folgt, von einer Anweisung auf ein Register zugegriffen
worden ist, das in der Serie von Registern enthalten ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP60072646A JPH0658629B2 (ja) | 1985-04-08 | 1985-04-08 | データ処理装置 |
JP60177542A JPH0724025B2 (ja) | 1985-08-14 | 1985-08-14 | マルチレジスタセツト方式のマイクロコンピユ−タ |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3650602D1 DE3650602D1 (de) | 1997-04-03 |
DE3650602T2 true DE3650602T2 (de) | 1997-06-12 |
Family
ID=26413782
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3689595T Expired - Fee Related DE3689595T2 (de) | 1985-04-08 | 1986-04-08 | Datenverarbeitungssystem. |
DE3650602T Expired - Fee Related DE3650602T2 (de) | 1985-04-08 | 1986-04-08 | Datenverarbeitungssystem |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3689595T Expired - Fee Related DE3689595T2 (de) | 1985-04-08 | 1986-04-08 | Datenverarbeitungssystem. |
Country Status (4)
Country | Link |
---|---|
US (1) | US5455955A (de) |
EP (2) | EP0199173B1 (de) |
KR (1) | KR900003591B1 (de) |
DE (2) | DE3689595T2 (de) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6349945A (ja) * | 1986-08-20 | 1988-03-02 | Nec Corp | デ−タ処理装置のプロセス・ロ−ルイン方式 |
US5307464A (en) * | 1989-12-07 | 1994-04-26 | Hitachi, Ltd. | Microprocessor and method for setting up its peripheral functions |
JP2725546B2 (ja) * | 1992-12-07 | 1998-03-11 | 株式会社日立製作所 | デ−タ処理装置 |
JP3097981B2 (ja) * | 1993-07-16 | 2000-10-10 | 株式会社日立製作所 | データ処理装置 |
US5729723A (en) * | 1992-11-16 | 1998-03-17 | Hitachi, Ltd. | Data processing unit |
JP3339132B2 (ja) * | 1993-09-14 | 2002-10-28 | ソニー株式会社 | 中央処理装置 |
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
GB2290395B (en) * | 1994-06-10 | 1997-05-28 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
IL110181A (en) * | 1994-06-30 | 1998-02-08 | Softchip Israel Ltd | Install microprocessor and peripherals |
US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
US5740406A (en) * | 1995-05-15 | 1998-04-14 | Nvidia Corporation | Method and apparatus for providing fifo buffer input to an input/output device used in a computer system |
US6532531B1 (en) | 1996-01-24 | 2003-03-11 | Sun Microsystems, Inc. | Method frame storage using multiple memory circuits |
EP0976029A2 (de) * | 1996-01-24 | 2000-02-02 | Sun Microsystems, Inc. | Prozessor zur ausführung von befehlssätze die entweder über einem netzwerk, oder von einem lokalen speicher empfangen sind |
US5867681A (en) * | 1996-05-23 | 1999-02-02 | Lsi Logic Corporation | Microprocessor having register dependent immediate decompression |
US5896519A (en) * | 1996-06-10 | 1999-04-20 | Lsi Logic Corporation | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions |
US5794010A (en) * | 1996-06-10 | 1998-08-11 | Lsi Logic Corporation | Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor |
US5925124A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Dynamic conversion between different instruction codes by recombination of instruction elements |
EP0862111B1 (de) * | 1997-02-27 | 2010-07-21 | International Business Machines Corporation | Dynamische Übersetzung zwischen verschiedenen Befehlskodes durch Wiederzusammensetzung von Befehlselementen |
JPH113225A (ja) * | 1997-06-13 | 1999-01-06 | Nec Corp | 情報処理装置 |
US5958038A (en) * | 1997-11-07 | 1999-09-28 | S3 Incorporated | Computer processor with two addressable memories and two stream registers and method of data streaming of ALU operation |
US6708268B1 (en) * | 1999-03-26 | 2004-03-16 | Microchip Technology Incorporated | Microcontroller instruction set |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US6633969B1 (en) | 2000-08-11 | 2003-10-14 | Lsi Logic Corporation | Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions |
GB2367915B (en) | 2000-10-09 | 2002-11-13 | Siroyan Ltd | Instruction sets for processors |
US7707389B2 (en) | 2003-10-31 | 2010-04-27 | Mips Technologies, Inc. | Multi-ISA instruction fetch unit for a processor, and applications thereof |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1543371A (fr) * | 1967-09-05 | 1968-10-25 | Ibm France | Dispositions relatives au bloc de travail d'un calculateur |
US3736567A (en) * | 1971-09-08 | 1973-05-29 | Bunker Ramo | Program sequence control |
IT1042852B (it) * | 1974-09-30 | 1980-01-30 | Siemens Ag | Disposizione di circuiti logici integrata e programmabile |
US4217638A (en) * | 1977-05-19 | 1980-08-12 | Tokyo Shibaura Electric Co., Ltd. | Data-processing apparatus and method |
GB2002553A (en) * | 1977-08-10 | 1979-02-21 | Itek Corp | High speed, real-time computer emulator |
JPS5616248A (en) * | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
DE2937777C2 (de) * | 1979-09-19 | 1982-04-08 | Ibm Deutschland Gmbh, 7000 Stuttgart | Steuereinrichtung in einer elektronischen Datenverarbeitungsanlage zur Programmunterbrechung und für die Durchführung erzwungener Operationen |
US4354228A (en) * | 1979-12-20 | 1982-10-12 | International Business Machines Corporation | Flexible processor on a single semiconductor substrate using a plurality of arrays |
CA1126406A (en) * | 1980-03-31 | 1982-06-22 | Northern Telecom Limited | Sequence control circuit for a computer |
JPS5775335A (en) * | 1980-10-27 | 1982-05-11 | Hitachi Ltd | Data processor |
US4445170A (en) * | 1981-03-19 | 1984-04-24 | Zilog, Inc. | Computer segmented memory management technique wherein two expandable memory portions are contained within a single segment |
JPS58116571A (ja) * | 1981-12-29 | 1983-07-11 | 富士通株式会社 | マイクロコンピユ−タに於ける命令暗号化方式及びその実施に使用されるマイクロコンピユ−タ |
US4594661A (en) * | 1982-02-22 | 1986-06-10 | International Business Machines Corp. | Microword control system utilizing multiplexed programmable logic arrays |
US4583193A (en) * | 1982-02-22 | 1986-04-15 | International Business Machines Corp. | Integrated circuit mechanism for coupling multiple programmable logic arrays to a common bus |
US4484268A (en) * | 1982-02-22 | 1984-11-20 | Thoma Nandor G | Apparatus and method for decoding an operation code using a plurality of multiplexed programmable logic arrays |
US5043870A (en) * | 1982-02-24 | 1991-08-27 | At&T Bell Laboratories | Computer with automatic mapping of memory contents into machine registers during program execution |
DE3376893D1 (en) * | 1982-10-18 | 1988-07-07 | Nec Corp | Information processing apparatus and its instruction control system |
JPS59501684A (ja) * | 1982-10-22 | 1984-10-04 | インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン | 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像 |
US4713750A (en) * | 1983-03-31 | 1987-12-15 | Fairchild Camera & Instrument Corporation | Microprocessor with compact mapped programmable logic array |
US4680701A (en) * | 1984-04-11 | 1987-07-14 | Texas Instruments Incorporated | Asynchronous high speed processor having high speed memories with domino circuits contained therein |
US4825363A (en) * | 1984-12-05 | 1989-04-25 | Honeywell Inc. | Apparatus for modifying microinstructions of a microprogrammed processor |
-
1986
- 1986-04-08 DE DE3689595T patent/DE3689595T2/de not_active Expired - Fee Related
- 1986-04-08 KR KR1019860002654A patent/KR900003591B1/ko not_active IP Right Cessation
- 1986-04-08 EP EP86104747A patent/EP0199173B1/de not_active Expired - Lifetime
- 1986-04-08 DE DE3650602T patent/DE3650602T2/de not_active Expired - Fee Related
- 1986-04-08 EP EP91120043A patent/EP0476722B1/de not_active Expired - Lifetime
-
1992
- 1992-09-28 US US07/951,772 patent/US5455955A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0199173A2 (de) | 1986-10-29 |
DE3689595D1 (de) | 1994-03-17 |
DE3689595T2 (de) | 1994-05-19 |
EP0476722A3 (en) | 1992-09-09 |
EP0476722A2 (de) | 1992-03-25 |
EP0199173B1 (de) | 1994-02-02 |
KR860008500A (ko) | 1986-11-15 |
EP0199173A3 (en) | 1989-10-25 |
KR900003591B1 (ko) | 1990-05-26 |
DE3650602D1 (de) | 1997-04-03 |
US5455955A (en) | 1995-10-03 |
EP0476722B1 (de) | 1997-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3650602T2 (de) | Datenverarbeitungssystem | |
DE69233412T2 (de) | Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen | |
DE2903349C2 (de) | Prozessor und Verfahren zur Datenverarbeitung | |
DE69126166T2 (de) | Programmierbare Steuerungsvorrichtung | |
DE68929215T2 (de) | Datenprozessor | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE2716369C2 (de) | ||
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE69625256T2 (de) | Mikrorechner | |
DE3382708T2 (de) | Ablauffolgeplanung für gleichzeitig existente Prozesse in einem Mikrocomputersystem. | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE69627807T2 (de) | Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation | |
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE69130723T2 (de) | Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten | |
DE3688824T2 (de) | Datenverarbeitungssystem. | |
DE2944419C2 (de) | ||
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE69322283T2 (de) | Hoch schnelligkeit speicher programmierbar steuerung | |
DE2948668A1 (de) | Puffereinheit | |
DE2542740A1 (de) | Mikroprogramm-datenverarbeitungsverfahren und geraet zur ausfuehrung des verfahrens |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |