DE69325826T2 - Rechner mit einer Parallelverarbeitungsfähigkeit - Google Patents
Rechner mit einer ParallelverarbeitungsfähigkeitInfo
- Publication number
- DE69325826T2 DE69325826T2 DE69325826T DE69325826T DE69325826T2 DE 69325826 T2 DE69325826 T2 DE 69325826T2 DE 69325826 T DE69325826 T DE 69325826T DE 69325826 T DE69325826 T DE 69325826T DE 69325826 T2 DE69325826 T2 DE 69325826T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- word length
- instructions
- word
- executed
- 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 28
- 230000015654 memory Effects 0.000 claims description 68
- 238000001514 detection method Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 238000012546 transfer Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 28
- 101150084325 FRS1 gene Proteins 0.000 description 11
- 230000000694 effects Effects 0.000 description 11
- 150000001875 compounds Chemical class 0.000 description 10
- 238000000034 method Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 238000012986 modification Methods 0.000 description 10
- 102100021066 Fibroblast growth factor receptor substrate 2 Human genes 0.000 description 9
- 101000818410 Homo sapiens Fibroblast growth factor receptor substrate 2 Proteins 0.000 description 9
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000003786 synthesis reaction Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 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
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Die vorliegende Erfindung betrifft einen Computer, der in der Lage ist, Paralleloperationen durchzuführen, insbesondere einen Computer, der Paralelloperationsfunktionen mittels eines Superskalarsystems und eines VLIW-Systems durchführt, die auf nicht trennbare Art angeordnet sind.
- Die Computerarchitektur wurde jedes Jahr mit dem Fortschritt der Halbleitertechnologie weiterentwickelt. In den achtziger Jahren wurde anstelle eines CISC (Complex Instruction Set Computer = Computer mit erweitertem Befehlsvorrat) zur Verarbeitung von komplizierten Befehlen durch Verwendung von Mikrobefehlen über mehrere Zyklen ein RISC (Reduced Instruction Set Computer = Computer mit reduziertem Befehlsvorrat) zur Verarbeitung eines einfachen Befehls in einem Zyklus eingeführt.
- Als höhere Betriebssysteme wurden ein Superskalarsystem und ein VLIW (Very Long Instruction Word = sehr langes Befehlswort)-System vorgeschlagen.
- Das Superskalarsystem ist ein System zur Ermittlung eines Prioritätskonflikts zwischen Befehlen durch Hardware beim Ausführen eines Befehls und zur Ausführung von mehreren Befehlen in einem Maschinenzyklus, wenn kein Prioritätskonflikt ermittelt wird. Dieses System wurde in der japanischen Patentanmeldung Nr. 63-283673 (Stand der Technik 1) oder in der Veröffentlichung von J. Henessy und D. A. Patterson "Computer Architecture A Quantitative Approach" Morgan Kantmann Publishers, Inc. 1990, S. 318 (Stand der Technik 2) beschrieben.
- Das VLIW-System ist ein System, das einen langen Befehl verwendet, der ein Feld zur Steuerung der Operation von zwei oder mehreren Operationseinheiten aufweist. Obwohl der normale RISC-Prozessor eine Befehlslänge von 32 Bit aufweist, weist das VLIW-System eine Befehlslänge von 64, 128, 256 oder mehr Bit auf. Dieses System wurde in der oben erwähnten Veröffentlichung von J. Henessy und D. A. Patterson (Stand der Technik 2) beschrieben.
- Als eine Verbesserung des VLIW-Systems wurde ein Verfahren vorgeschlagen, bei dem ein Einwortbefehl und ein Dreiwortbefehl durch das VLIW-System untrennbar verarbeitet werden. Dieses Verfahren kann somit die Codegröße verbessern. Das Verfahren ist in Röbert Cohn et al. "Architecture and Compiler Tradeoffs a Long Instruction Word Microprocessor", Third International Conference on Architectural Support for Programming Languages and Operating Systems, 1989, S. 2-14 (Stand der Technik 3) beschrieben.
- Im nachfolgenden Text werden die Merkmale des Superskalarsystems und des VLIS-Systems beschrieben.
- Das Superskalarsystem verringert die Codegröße, weil es lediglich eine wirksame Operation auf Grund eines Befehls mit kurzer Wortlänge anzeigt, um eine einfache Operation darzustellen.
- Weiterhin, da kein zusätzlicher Befehl erforderlich ist, kann das Superskalarsystem eine Kompatibilität zwischen einem neuen und den vorhergehenden Modellen gewährleisten. Andererseits besteht der erste Nachteil des Superskalarsystems darin, daß es erforderlich ist, den Prioritätskonflikt unter parallel auszuführenden Operationen zu ermitteln. Wenn die Anzahl der parallel auszuführenden Operationen steigt, wird der erforderliche Umfang an Hardware zur Ermittlung des Prioritätskonflikts größer.
- Der zweite Nachteil dieses Systems besteht darin, daß eine komplizierte Prüfung des Prioritätskonflikts und der Warteschlangenbildung zwischen einem vor dem laufenden Zyklus ausgeführten Befehl und einem im laufenden Zyklus auszuführenden Befehl erforderlich sind. Wenn die Anzahl der parallel auszuführenden Operationen steigt, stehen mehrere Befehle im Prioritätskonflikt mit dem im laufenden Zyklus auszuführenden Befehl. Dadurch wird die Hardware zur Ermittlung des Prioritätskonfliktes und zur Warteschlangenbildung unter den Befehlen, die als der zweite Nachteil empfunden werden, komplizierter.
- Der dritte Nachteil des Superskalarsystems besteht darin, daß weniger Register zur Verfügung stehen, die durch einen Befehl bestimmt werden, weil die Befehlswortlänge kurz ist. Eine typische Anzahl der Register beträgt 16 bis 32. Wie in der Veröffentlichung von J. Henessy und D. A. Patterson, S. 325, beschrieben ist, ist es möglich, als Softwaremaßnahmen zur Erhöhung der Anzahl der parallel auszuführenden Operationen eine Schleifeneintragung oder eine Software-Pipeline zu verwenden. Die Anzahl der Register reicht jedoch nicht aus, um diese Einrichtung zu realisieren. Mit anderen Worten wird im Bereich der existierenden Register keine Optimierung erreicht.
- Als Abhilfe beschreibt die Lehre des Standes der Technik in E-21 bis 22 eine Einrichtung zum Verhindern des unmittelbaren Einflusses eines Ausführungsergebnisses auf den nächsten Befehl, um die Mängel bezüglich der Register zu eliminieren.
- Es wurde beschrieben, daß eine Superskalareinrichtung Daten aus einem Hauptspeicher in einen Cachespeicher durch Verwendung eines Befehls abrufen kann, der in der Veröffentlichung von David Callahan et al. "Software Prefetching" Fourth International Conference on Architecture Support for Programming Languages and Operating Systems, 1991, S. 40- 52 erläutert wird.
- Wie vorhin erwähnt wurde, tritt beim Superskalarsystem im Zusammenhang mit dem ersten und dem zweiten Nachteil, d. h., mit der komplizierten Prüfung des Prioritätskonflikts, das Problem auf, den Maschinenzyklus zu verbessern, wenn die Anzahl der parallel auszuführenden Befehle steigt. Dieses System ist somit nicht in der Lage, die Verarbeitungsgeschwindigkeit zu erhöhen.
- Im Zusammenhang mit dem VLIW-System sei erwähnt, daß sein erstes Merkmal in der Bestimmung von mehreren Operationen in einem einzigen Befehl auf Grund der langen Befehlswortlänge sowie in der Eliminierung der Notwendigkeit der Überprüfung eines Priotitätskonflikts unter den Operationen besteht, die beim Ausführen der Befehle durch Hardware parallel auszuführen sind.
- Ein zweites Merkmal besteht darin, daß das VLIW-System es ermöglicht, auf Grund der langen Befehlswortlänge mehrere Register zu bestimmen.
- Der erste Nachteil des VLIW-Systems besteht darin, daß es notwendigerweise eine effektive Operation auf sämtlichen Feldern nicht gewährleisten kann, so daß es eine größere Codegröße braucht.
- Ein zweiter Nachteil besteht darin, daß das System eine komplizierte Prüfung des Prioritätskonflikts und eine Bildung von Warteschlangen zwischen einem vor dem laufenden Zyklus ausgeführten Befehl und einem im laufenden Zyklus auszuführenden Befehl erfordert. Dies ist der gleiche Nachteil wie der zweite Nachteil des Superskalarsystems.
- Um diesen Nachteil zu eliminieren wurde in Andrew Wolf und John P. Shen "A Variable Instruction Stream Extension to the VLIW Architecture" Fourth International Conference on Architecture Support for Programming Languages and Operating Systems, 1991, S. 2-14 ein Verfahren zum vorläufigen Verhindern eines Prioritätskonflikts mittels eines Kompilierers ohne Verwendung von Hardware zwecks Ermittlung eines Prioritätskonflikts beschrieben.
- Als ein dritter Nachteil sei erwähnt, daß das VLIS-System nicht in der Lage ist, die Kompatibilität mit dem vorhergehenden Modell zu gewährleisten. Dies ist darauf zurückzuführen, daß das Superskalarsystem einen gewöhnlichen Einwortbefehl mittels Hardware ausführen kann, während das VLIS-System den Befehl neu belegen muß.
- Wie oben erwähnt wurde, wurde kein Computer zum Eliminieren der Nachteile des Superskalarsystems sowie des VLIW-Systems bei gleichzeitigem Aufrechterhalten der Merkmale dieser Systeme vorgeschlagen.
- Es ist Aufgabe der vorliegenden Erfindung einen Computer vorzuschlagen, der in der Lage ist, eine Operation mit dem Superskalarsystem sowie dem VLIW-System untrennbar auszuführen. Das bedeutet, daß der Computer mit einer höheren Verarbeitungsgeschwindigkeit arbeitet und und eine Aufwärtskompatibilität mit einem Computer gewährleistet, der einen gewöhnlichen Aufbau aufweist, der sich durch einen kürzeren Befehl zur Bestimmung einer einzigen Operation auszeichnet.
- Diese Aufgabe wird erfindungsgemäß dadurch gelöst, daß der Computer aufweist:
- Register, einen Speicher, einen Programmzähler, ein parallel arbeitendes Mittel zum Lesen eines oder mehrerer Befehle aus dem Speicher, die vom Programmzähler gekennzeichnet sind, und zum Ausführen einer Operation, die bezüglich der Register, des Speichers und des Programmzählers durch den Befehl gekennzeichnet ist;
- Mittel zur Bestimmung der Befehlswortlänge zum Bestimmen, ob der vom Programmzähler gekennzeichnete Befehl ein Befehl mit einer langen Wortlänge zum Kennzeichnen mehrerer Befehle, oder ein Befehl mit einer kurzen Wortlänge ist, und Prioritätskonflikt-Ermittlungs-Mittel zur Ermittlung eines Prioritätskonflikts unter Befehlen, die eine kurze Wortlänge aufweisen, nur wenn diese Befehle durch die Mittel zur Bestimmung der Befehlswortlänge als Befehle mit einer kurzen Wortlänge bestimmt sind.
- Gemäß einer Ausführung der Erfindung weist der Computer ein Register, einen Speicher und einen Programmzähler auf, um einen durch den Programmzähler gekennzeichneten und im Speicher gespeicherten Befehl zu lesen und die bezüglich des Registers, des Speichers und des Programmzählers gekennzeichnete Operation auszuführen, wobei der Befehl ein Befehl mit kurzer Wortlänge zum Kennzeichnen einer einzigen Operation oder ein Befehl mit langer Wortlänge zum Kennzeichnen von mehreren Operationen ist, und wobei der Computer weiterhin aufweist:
- Mittel zur Bestimmung, ob der durch den Programmzähler gekennzeichnete Befehl ein Befehl mit kurzer Wortlänge zum Kennzeichnen einer einzigen Operation oder ein Befehl mit langer Wortlänge zum Kennzeichnen von mehreren Operationen ist,
- Mittel zur Ermittlung eines Prioritätskonflikts unter den Befehlen mit kurzer Wortlänge, und
- Mittel zum Einschreiben des Befehls ins Register, wenn der durch die Mittel zur Bestimmung der Wortlänge bestimmte Befehl ein Befehl mit langer Wortlänge ist, oder zum Einschreiben des Befehls in ein vorgegebenes Register, wenn der durch die Mittel zur Bestimmung der Wortlänge bestimmte Befehl ein Befehl mit kurzer Wortlänge ist und wenn vom Prioritätskonflikt-Ermittlungsmittel kein Prioritätskonflikt ermittelt wird.
- Gemäß einer anderen Ausführung der Erfindung weist der Computer ein Register, einen Speicher und einen Programmzähler auf, um einen durch den Programmzähler gekennzeichneten Befehl aus dem Speicher zu lesen und eine bezüglich des Registers, des Speichers und des Programmzählers gekennzeichnete Operation auszuführen, wobei der Befehl ein Befehl mit kurzer Wortlänge zum Kennzeichnen einer einzigen Operation oder ein Befehl mit langer Wortlänge zum Kennzeichnen von mehreren Operationen ist, und wobei der Computer weiterhin aufweist:
- Mittel zur Bestimmung, ob der durch den Programmzähler gekennzeichnete Befehl ein Befehl mit kurzer Wortlänge oder ein Befehl mit langer Wortlänge ist,
- Mittel zur Ermittlung eines Prioritätskonflikts unter den Befehlen mit kurzer Wortlänge, wenn der Befehl als ein Befehl mit kurzer Wortlänge bestimmt ist, und
- Mittel zum Ausführen einer vorgegebenen Anzahl von Befehlen mit kurzer Wortlänge in einem Maschinenzyklus gemäß dem Inhalt der Mittel zur Ermittlung eines Prioritätskonflikts, wenn der Befehl als ein Befehl mit kurzer Wortlänge bestimmt ist, oder zum Ausführen einer vorgegebenen Anzahl von Befehlen mit langer Wortlänge in einem Maschinenzyklus, wenn der Befehl als ein Befehl mit langer Wortlänge bestimmt ist.
- Gemäß der Erfindung ist der Computer in der Lage, zwei oder mehr Befehle mit kurzer Wortlänge auszuführen, von denen jeder eine einzige Operation in einem Maschinenzyklus kennzeichnet, oder einen Befehl mit langer Wortlänge auszuführen, der mehrere parallel ablaufende Operationen kennzeichnet, um die Leistung des Computers zu erhöhen.
- Gemäß der Erfindung verwendet der Computer den Befehl mit langer Wortlänge nur dann, wenn mehrere Operationen parallel auszuführen sind, so daß ein Nulloperationsfeld im Befehl mit langer Wortlänge eliminiert wird und dadurch die Codegröße reduziert wird. Daraus resultiert eine Erhöhung des Wirkungsgrades des Hauptspeichers und des Cache- Speichers, wodurch die Verarbeitungsgeschwindigkeit erhöht wird.
- Gemäß einer Ausführung der Erfindung existiert unter mehreren, durch den Befehl mit langer Wortlänge gekennzeichneten Operationen kein Prioritätskonflikt. Es ist somit nicht erforderlich, den Prioritätskonflikt mittels Hardware zu ermitteln. Die Hardware muß lediglich den Prioritätskonflikt unter den Befehlen mit kurzer Wortlänge ermitteln, die im gleichen Zyklus ausgeführt werden. Gemäß der Erfindung kann die Anzahl der in einem Maschinenzyklus auszuführenden Befehlen mit kurzer Wortlänge kleiner als die Anzahl der durch den Befehl mit langer Wortlänge gekennzeichneten Operationen festgelegt werden, um einen Prioritätskonflikt unter den parallel auszuführenden Operationen leichter zu ermitteln, obwohl die Anzahl der in einem Maschinenzyklus auszuführenden Operationen dem Durchschnittswert entspricht.
- Gemäß einer anderen Ausführung der Erfindung ist der Computer in der Lage, eine Befehlsfolge mittels eines Kompilierers zu erzeugen, derart, daß ein Prioritätskonflikt zwischen dem Befehl mit langer Wortlänge und dem vorhergehenden Befehl verhindert wird. Somit ist es nicht erforderlich, den Prioritätskonflikt mittels Hardware zu ermitteln.
- Gemäß einer anderen Ausführung der Erfindung ist vorgesehen, daß beim Ausführen eines wirksamen Befehls mit langer Wortlänge nach dem Ausführen eines wirksamen Befehls mit kurzer Wortlänge sowie beim Ausführen eines wirksamen Befehls mit kurzer Wortlänge nach dem Ausführen eines wirksamen Befehls mit langer Wortlänge der Prioritätskonflikt zwischen beiden Befehlen durch Einfügen einer erforderlichen Anzahl von Nulloperationsbefehlen zwischen beide Befehle softwaremäßig gelöst werden kann. Die Hardware braucht lediglich den Prioritätskonflikt zwischen dem vor dem laufenden Zyklus ausgeführten Befehl mit kurzer Wortlänge und dem im laufenden Zyklus auszuführenden Befehl mit langer Wortlänge zu ermitteln. Gemäß der Erfindung wird deswegen durch Festlegen der Anzahl der in einem Maschinenzyklus auszuführenden Befehle mit kurzer Wortlänge, die kleiner ist als die Anzahl der im Befehl mit langer Wort- Länge gekennzeichneten Operationen, die Ermittlung des Prioritätskonflikts zwischen den vor dem laufenden Zyklus ausgeführten Befehlen und dem im laufenden Zyklus ausgeführten Befehl erleichtert, da die Anzahl der im laufenden Zyklus ausgeführten Operationen im Durchschnitt höher ist, obwohl die Anzahl der in einem Maschinenzyklus ausgeführten Operationen im Durchschnitt groß ist.
- Gemäß einer anderen Ausführung der Erfindung wird das Ausführungsergebnis des Befehls den Befehl beeinflussen, der nach dem nächsten Befehl erscheint, ohne daß das Ausführungsergebnis unmittelbar den nächsten Befehl beeinflusst. Nach der Ausführung des Befehls dient der Befehl, der bis zum Beeinflussen durch das Ausführungsergebnis auszuführen ist, dem Lesen eines Wertes aus dem Register, bevor er ein Wert ins Register einschreibt. Die Anzahl der von der Software behandelten Register wird somit wesentlich erhöht, so daß eine Optimierung der Software erfolgt, um die Anzahl der parallel auszuführenden Operationen zu erhöhen.
- Gemäß einer anderen Ausführung der Erfindung wird die Hardware zur Ermittlung des Prioritätskonflikts derart vereinfacht, daß eine Verbesserung des Maschinenzyklus zur Erhöhung der Verarbeitungsgeschwindigkeit erreicht werden kann.
- Gemäß einer anderen Ausführung der Erfindung wird der Befehl mit langer Wortlänge zum Kennzeichnen von mehreren Operationen zum Befehl mit kurzer Wortlänge, der eine gewöhnliche Struktur zum Kennzeichnen einer einzigen Operation aufweist, hinzuaddiert, um eine neue Struktur zu bilden. Da die neue Struktur die gewöhnliche Struktur enthält, wird die Aufwärtskompatibilität gewährleistet.
- Diese und andere Eigenschaften, Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden ausführlichen Beschreibung im Zusammenhang mit der beiliegenden Zeichnung näher erläutert. In der Zeichnung zeigt:
- Fig. 1 eine Gesamtdarstellung einer Befehlssteuereinheit;
- Fig. 2 eine Darstellung eines Registeraufbaus;
- Fig. 3 eine Tabelle zur Erklärung eines Befehlsformats;
- Fig. 4 eine Tabelle zur Erklärung der Funktion eines Einwortbefehls;
- Fig. 5 eine Tabelle zur Erklärung der Funktion eines Vierwortbefehls;
- Fig. 6 eine Darstellung zur Erklärung von Pipelinestufen;
- Fig. 7 eine Darstellung, die Pipelines zur Verarbeitung eines Einwortbefehls zeigt, wenn kein Prioritätskonflikt stattfindet;
- Fig. 8 eine Darstellung, die Pipelines zur Verarbeitung eines Einwortbefehls zeigt, wenn ein Prioritätskonflikt stattfindet;
- Fig. 9 eine Darstellung, die Pipelines zur Verarbeitung eines Vierwortbefehls zeigt;
- Fig. 10 eine Darstellung der Anordnung der Daten im Speicher;
- Fig. 11 eine Darstellung zur Erklärung, wie ein Vierwortbefehl verarbeitet wird;
- Fig. 12 eine Tabelle zur Erklärung eines Programms, das einen Vierwortbefehl verwendet;
- Fig. 13 ein Blockdiagramm, das eine Ausführung einer Befehlssteuereinheit zeigt;
- Fig. 14 ein Blockdiagramm, das eine Festkomma-Recheneinheit zeigt;
- Fig. 15 ein Blockdiagramm, das eine Gleitkomma- Recheneinheit zeigt;
- Fig. 16 ein Blockdiagramm, das eine Gleitkomma- Registeranordnung zeigt;
- Fig. 17 ein Blockdiagramm, das ein Gleitkomma-Register zeigt;
- Fig. 18 ein Schaltbild, das einen Einbitteil des Gleitkommaregisters zeigt;
- Fig. 19 ein Blockdiagramm, das ein Gleitkomma-Register zeigt;
- Fig. 20 eine Darstellung zur Erklärung der Funktion eines Schattenregisters;
- Fig. 21 eine Darstellung zur Erklärung der Funktion eines Schattenregisters;
- Fig. 22 eine Darstellung zur Erklärung der Funktion eines Schattenregisters;
- Fig. 23 eine Darstellung zur Erklärung der Funktion einer Modussteuerschaltung;
- Fig. 24 eine Tabelle zur Erklärung der Funktion einer Auslese-Steuerschaltung für das Register;
- Fig. 25 ein Blockdiagramm, das eine Schaltung zur Ermittlung eines Prioritätskonflikts zeigt;
- Fig. 26 ein Flußdiagramm, das einen Kompilierer zeigt;
- Fig. 27 ein Schaltbild, das Einzelheiten der Modussteuerschaltung zeigt;
- Fig. 28 ein Schaltbild, das Einzelheiten eines Daten-Cache- Speichers zeigt;
- Fig. 29 eine Darstellung der Pipelines, wenn ein Cache- Speicherfehler in der Lade-/Speicheroperation auftritt;
- Fig. 30 eine Darstellung, die eine andere Ausführung der Erfindung zeigt;
- Fig. 31 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 32 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 33 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 34 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 35 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 36 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 37 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 38 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 39 eine Darstellung der in Fig. 30 gezeigten Ausführung;
- Fig. 40 eine Darstellung der in Fig. 30 gezeigten Ausführung; und
- Fig. 41 eine ausführliche Darstellung der Fig. 1.
- Im nachfolgenden Text wird eine vorteilhafte Ausführung der Erfindung beschrieben. Die folgende Beschreibung läßt sich über eine für das Wesen der Erfindung wichtige Einzelheit aus.
- Fig. 1 ist ein Blockdiagramm, das das gesamte Computersystem gemäß der Ausführung der Erfindung zeigt. Wie gezeigt bezeichnet das Bezugszeichen 1200 einen Speicher. Das Bezugszeichen 1300 bezeichnet einen Befehls-Cache-Speicher. Das Bezugszeichen 1303 bezeichnet eine Befehlssteuereinheit. Das Bezugszeichen 160 bezeichnet eine Recheneinheit.
- Das Bezugszeichen 150 bezeichnet einen Bereich zur Bestimmung der Befehlslänge. Das Bezugszeichen 109 bezeichnet eine Einheit zur Ermittlung eines Prioritätskonflikts. Die Befehlssteuereinheit 1303 liest einen Befehl aus dem Befehls-Cache-Speicher mittels einer Schnittstelle 170 und dekodiert ihn zum Zweck der Steuerung der Recheneinheit 160 mittels der Schnittstelle 180. Die Recheneinheit 160 kann mehrere Operationen parallel verarbeiten. Der Computer gemäß der vorliegenden Erfindung weist einen Vierbytebefehl zum Kennzeichnen einer einzigen Operation und einen 16- Bytebefehl zum Kennzeichnen von mehreren Operationen. Im Befehls-Cache-Speicher 1300 sind die 16-Bytebefehle und die Vierbytebefehle in einer nicht trennbaren Art gespeichert, so daß ein Prioritätskonflikt zwischen den 16-Byte-Befehlen und den Vierbytebefehlen verhindert wird. Die Prioritätskonflikt-Ermittlungseinheit 109 dient der Ermittlung eines Prioritätskonfliktes nur unter den Vierbytebefehlen. Die Befehlssteuereinheit 1303 umfaßt den Bereich 150 zur Bestimmung der Befehlslänge sowie eine Auswahleinrichtung 110, so daß die Auswahleinrichtung 110 beim Ausführen eines 16-Bytebefehls ein Ausgangssignal der Prioritätskonflikt- Ermittlungseinheit 109 ignorieren kann, oder beim Ausführen des Vierbytebefehls eine parallel auszuführende Operation gemäß dem Ausgangssignal der Prioritätskonflikt- Ermittlungseinheit 109 auswählen kann. Die Auswahleinrichtung 110 decodiert die ausgewählte Operation und steuert die Recheneinheit 160 mittels der Schnittstelle 180. In der dargestellten Ausführung sind zwei Recheneinheiten vorgese hen. Es ist jedoch überflüssig zu erwähnen, daß zwei und mehr Recheneinheiten vorgesehen werden können.
- Die nachfolgende Beschreibung betrifft die Anordnung der Register und das Befehlsformat, die Pipelines und die Rechenzeitabstimmung. Schließlich werden Einzelheiten der in Fig. 1 gezeigten Gesamtanordnung diskutiert.
- Fig. 2 zeigt die Anordnung der Register. FR0 bis FR31 bezeichnen Gleitkommaregister mit einer 64-Bit-Länge. R0 bis R31 bezeichnen Festkommaregister mit einer 32-Bit-Länge. Zur Vereinfachung der Beschreibung wird angenommen, daß die Gleitkommadaten zum Erreichen einer doppelten Genauigkeit eine Länge von 64 Bit aufweisen. Eine Adresse wird alle 32 Bit weitergegeben.
- In der dargestellten Ausführung hat ein kurzes Wort eine Einwortlänge und ein langes Wort eine Vierwortlänge.
- Fig. 3 zeigt ein Befehlsformat. Ein Wort besteht aus 32 Bit. Ein Grundbefehl, ein Sprungbefehl und ein Lade- und Speicherbefehl sind Einwortbefehle. Ein Verbundbefehl ist ein Vierbytebefehl. Der Grundbefehl ist eine zwischen zwei Registern stattfindende Operation. Obwohl ein Befehl mit langer Wortlänge auf eine Länge von vier Byte festgelegt ist, kann er länger oder kürzer sein.
- Bei dieser Ausführung wird zur Vereinfachung der Beschreibung angenommen, daß der Vierwortbefehl vier aufeinanderfolgende Wörter belegt, die durch eine Vierwortgrenze begrenzt sind. Diese Annahme kann leicht geändert werden.
- Zunächst wird der Grundbefehl beschrieben. Wie in Fig. 3 gezeigt ist, bezeichnet das Feld OP den Typ eines Operationscodes. Die Felder S1 und S2 bezeichnen die Nummern von zwei Quellenregister. Das Feld T bezeichnet die Nummer eines Zielregisters. Das Feld CC bezeichnet ein Feld, das anzeigt, wie eine Marke gesetzt ist. Das bedeutet, daß eine durch OP bezeichnete Operation im Zusammenhang mit den Registern S1 und S2 ausgeführt wird, so daß das Ergebnis in das mit T bezeichnete Register eingeschrieben wird. Diese Einzelheit wird in Fig. 4 dargestellt.
- Nachfolgend wird ein Sprungbefehl beschrieben. Im Sprungbefehl wird ein Wert d zum Wert des Programmzählers PC hinzuaddiert.
- Nachfolgend wird ein Lade- und Speicherbefehl beschrieben. Das Feld F zeigt an, ob die Daten, die geladen oder gespeichert werden sollen, Gleitkommadaten oder Festkommadaten sind. Das Feld SIZE bezeichnet die Wortlänge der Daten, die gemäß Fig. 4 geladen oder gespeichert werden sollen. Für die Festkommadaten wird nur ein Wort definiert. Für die Gleitkommadaten werden zwei bis sechzehn Wörter definiert. Wie in Fig. 4 dargestellt wird, wird durch den Befehl FST FR(S1) in die Adresse R(S2) geschrieben. Wenn das Feld SIZE sechzehn Wörter enthält, werden FR(S1) bis FR(S1+7), beginnend mit der Adresse R(S2), in aufeinanderfolgende sechzehn Wörter geschrieben. Durch den Befehl FLD werden die Daten der Adressen R(S1)+R(S2) in FR(T) geschrieben. Wenn das Feld SIZE sechzehn Wörter enthält, werden die aufeinanderfolgenden sechzehn Wörter, beginnend mit R(S1)+R(S2), in FR(T) bis FR(T+7) geschrieben.
- Nachfolgend wird ein Vierwort-Verbundbefehl im Zusammenhang mit Fig. 3 und 5 beschrieben. Dieser Befehl erfüllt die Funktion, sieben Operationen zu kennzeichnen: einen Lade- und Speicherbefehl, gekennzeichnet durch die Felder I1, I2, IT, SIZE, F, eine Festkommaoperation, gekennzeichnet durch die Felder J1, J2, JT und J, eine erste Gleitkommaoperation, gekennzeichnet durch die Felder M1, M2 und MT, eine zweite Gleitkommaoperation, gekennzeichnet durch die Felder A1, A2, AT und A, eine dritte Gleitkommaoperation, gekennzeichnet durch die Felder N1, N2 und NT, eine vierte Gleitkommaoperation, gekennzeichnet durch die Felder B1, B2, BT und B, und eine Flußsteuerung, gekennzeichnet durch die Felder CC, d und N. Die Einzelheiten jedes Feldes sind in Fig. 5 dargestellt. Die erste und die dritte Gleitkommaoperation sind je eine Multiplikation und die zweite und die vierte Gleitkommaoperation sind je eine Addition oder je eine Subtraktion. Das Feld N kennzeichnet die Anzahl von Nulloperationszyklen, die nach diesem Befehl eingefügt werden sollen. Die Art seiner Verwendung wird später beschrieben werden.
- Nun wird die Festkommaoperation beschrieben. Wenn das Feld J... 1111 ist, wird eine normale Operation durchgeführt, wie in Fig. 5 gezeigt ist. Wenn das Feld J... 1111 ist, werden die Daten aus dem Speicher in den Cache-Speicher abgerufen. Das bedeutet, daß die Operation durchgeführt wird, um auf den Cache-Speicher mit den Adressen R(J1)+R(J2) zuzugreifen und die Daten aus dem Speicher in den Cache-Speicher zu übertragen, wenn die erforderlichen Daten nicht gefunden werden können.
- Bei einem Einwortbefehl beeinflusst das Ausführungsergebnis unmittelbar den nächsten Befehl. Bei einem Vierwortbefehl beeinflusst das Ausführungsergebnis den dritten Befehl. Die nachfolgende Beschreibung befaßt sich mit der Pipeline- Anordnung und dem Programm, die die Verwendung der beschriebenen Erfindung ermöglichen.
- Wie in Fig. 6 dargestellt ist, umfaßt die Pipeline- Anordnung fünf Stufen IF, D, E, F und S. In der Stufe IF wird der Befehl gelesen. In der Stufe D wird der Befehl decodiert. In der Stufe E werden das Lesen aus dem Register und eine Teiloperation ausgeführt. In der Stufe F wird eine Operation ausgeführt. In der Stufe S werden die restliche Operation und das Schreiben eines Befehls ins Register ausgeführt. Die Pipeline-Anordnung führt die Festkommaoperation und die Gleitkommaoperation aus.
- Fig. 7 zeigt einen Verarbeitungsablauf eines Einwortbefehls gemäß dieser Ausführung. Es wird ein Superskalarsystem zur Verarbeitung von zwei Befehlen in einem Maschinenzyklus vorgesehen. Wenn kein Prioritätskonflikt ermittelt wird, werden die Befehle 1 und 2, 3 und 4, 5 und 6 und 7 und 8 parallel ausgeführt. Dieses Superskalarsystem ist in der japanischen Patentanmeldung Nr. 63-283673 ausführlich beschrieben.
- Fig. 8 zeigt, wie der Befehl 3 das Ausführungsergebnis des Befehls 2 verarbeitet. Die Stufen E der Befehle 3 und 4 werden verlängert, bis die Stufe S des Befehls 2 beendet ist. Um die Aufgabe des Befehls zu erfüllen, den auszuführenden Befehl mit dem Ergebnis des vorhergehenden Befehls zu beeinflußen, wird der Prioritätskonflikt mittels der Hardware zur Ausführung der in Fig. 8 gezeigten Operation ermittelt.
- Fig. 9 zeigt die Art, wie der Vierwortbefehl verarbeitet wird. Der Vierwortbefehl wird einmal pro Maschinenzyklus verarbeitet. Durch das Ausführungsergebnis des Befehls 1 werden nicht nur die Befehle 2 und 3, sondern auch der Befehl 4 gemäß der vorhergehenden Beschreibung beeinflußt. Die Stufe S. auf der der Befehl 1 ins Register eingeschrieben wird, wurde vor der Stufe D beendet, auf der der Befehl 4 aus dem Register gelesen wird. Deswegen ist es nicht notwendig, den Prioritätskonflikt durch Hardware zu steuern, wie im Zusammenhang mit Fig. 8 beschrieben wurde. Bei dieser Ausführung sind drei Rechenstufen E, F und S vorgesehen. Wenn im allgemeinen die Anzahl der Befehle mit N bezeichnet wird, die vor dem Einschreiben des Ausführungsergebnisses auszuführen sind, und die Anzahl der Pipelines mit M bezeichnet wird, die die Beziehung N $ M-1 erfüllen, ist es nicht erforderlich, den Prioritätskonflikt durch Hardware zu steuern. Die Ausführung betrifft den Fall, bei dem N = 2 und M = 3 vorgegeben wurden.
- Es ist notwendig, zwei Vierwort-Nulloperationsbefehle zwischen einen Einwortbefehl und den nächsten wirksamen Vierwortbefehl anzuordnen. Ähnlich ist es auch notwendig, zwei Vierwort-Nulloperationsbefehle zwischen den wirksamen Vierwortbefehl und den nächsten Einwortbefehl anzuordnen.
- Im nachfolgenden Text wird im Zusammenhang mit den Fig. 10, 11 und 12 ein vorteilhaftes Programm zur Verarbeitung dieses Vierwortbefehls beschrieben. Es wird angenommen, daß die folgende Berechnung durchzuführen ist:
- A(i) = A(i) + C · B(i), i # i # 24,
- wobei
- C eine Konstante und A(i) und B(i) 64-Bit-Gleitkommadaten bedeuten, die auf die in Fig. 10 gezeigte Art im Speicher angordnet sind.
- Fig. 1 ist eine Darstellung zur Erklärung, welche Operation in jedem Zyklus der Berechnung von A(i) ausgeführt wird. In Fig. 11 zeigt die waagerechte Achse oder x-Achse die Zeit, deren Einheit durch einen Maschinenzyklus dargestellt wird. Die gezeigten Längskästchen bezeichnen drei Stufen E, F und S einer Recheneinheit, durch die die zu verarbeitenden Daten durchlaufen. Nachfolgend werden die folgenden Schritte (1) bis (10) beschrieben. Jede der vier Operationen wird nach einem Index i ausgeführt. Die Schritte (1) bis (10) dienen der Berechnung von A(9) bis A(12). Danach wird jeder Verarbeitungsschritt beschrieben. Es wird angenommen, daß die Konstante C im Register FR31 enthalten ist.
- (1) Laden A(1) bis A(4) nach FR4 bis FR7 und B(7) bis B(10) nach FR0 bis FR3.
- (2) Speichern FR0 · FR31 in FR8.
- (3) Speichern FR1 · FR31 in FR9.
- (4) Speichern FR4 + FR8 in FR12.
- (5) Speichern FR5 + FR9 in FR13.
- (6) Speichern FR2 · FR31 in FR10.
- (7) Speichern FR3 · FR31 in FR11.
- (8) Speichern FR6 + FR10 in FR14.
- (9) Speichern FR7 + FR11 in FR15.
- (10) Speichern FR12 bis FR15 in A(9) bis A(12).
- Für die in den Schritten (1) bis (10) dargestellte Operation wird angenommen, daß für einen Verarbeitungsablauf, wie im Zusammenhang mit Fig. 10 beschrieben wurde, drei Zyklen erforderlich sind. Die Beschreibung betraf die Abläufe A(9) bis A(12); ähnliche Abläufe werden jedoch mit A(13) bis A(16) sowie A(17) bis A(20) durchgeführt. Jede Recheneinheit wird in einem Zyklus aktiv. Die Abläufe A(13) bis A(16) und A(16) bis A(20) werden mit den Abläufen A(9) bis A(12) überlappt. Die Verarbeitung wird somit auf die in Fig. 11 gezeigte Art ausgeführt.
- Fig. 12 zeigt eine Vierwortbefehlsfolge zur Durchführung des in Fig. 11 dargestellten Ablaufs. Die Operationen A(1) bis A(24) können durch 22 Befehle 1 bis 22 gemäß Fig. 12 realisiert werden. Es werden siebzehn Register FR0 bis FR15 und FR31 verwendet. Fig. 10 zeigt, welche Daten durch die Befehle 1, 3, 5, 7, 11, 13 und 15 geladen und welche Daten durch die Befehle 12, 14, 16, 18, 22 und 22 gespeichert werden. Beim Ausführen des Befehls 3 werden Werte in die Register FR0 bis FR3 geschrieben, wobei das Ausführungsergebnis den Befehl 6 beeinflußt oder sich später auswirkt. Die durch den Befehl 1 geladenen Werte von FR0 bis FR3 können somit vom Befehl 4 verwendet werden. Wenn bei der Durchführung des Ablaufs gemäß Fig. 11 ein übliches System verwendet wird, bei dem das Ausführungsergebnis des Befehls 1 den Befehl 2 direkt beeinflußt, kann der Befehl 3 zum Schreiben der Werte in die Register FR0 bis FR3 nicht ausgeführt werden. Das bedeutet, daß neue Register, wie FR16 bis FR19 benötigt werden. Die Anzahl der verwendeten Register ist jedoch begrenzt. Die kritische Anzahl der Register erhöht unvorteilhaft die Anzahl der Verarbeitungszyklen. Das in Fig. 12 dargestellte Programm benötigt zum Ausführen der Operation lediglich siebzehn Register, da die verzögerte Schreiboperation ausgeführt wird, um durch das Ausführungsergebnis des laufenden Befehls den vierten Befehl zu beeinflußen.
- Durch die verzögerte Schreiboperation wird die Anzahl der verfügbaren Register erheblich erhöht, ohne daß es notwendig ist, die Anzahl der Felder des Operationscodes zur Bestimmung der Register zu erhöhen.
- In Fig. 12 bezeichnet das Zeichen "X" ein leeres Feld, weil keine zu verarbeitenden Daten existieren. Solche leeren Felder kommen oft zu Beginn der Verarbeitung in den Befehlen 1 bis 6 und am Ende der Verarbeitung in den Befehlen 17 bis 22 vor. Die Anzahl der leeren Felder kann jedoch durch Überlappen einer Reihe von Startabläufen mit der laufenden Reihe von Endabläufen verringert werden. Weiterhin ist es möglich, die Nulloperationsbefehle 2, 4, 21 zu entfernen, indem jedes Feld N der Befehle 1, 3 und 20 auf "01" gesetzt wird.
- Gemäß der Erfindung wird ein anderer spezieller Befehl zur Bestimmung des Registers verwendet, in welches das Ausführungsergebnis eingeschrieben wird. Somit können die Befehle 4 und 21 entfernt werden. Andererseits benötigt das System, das zur Bestimmung des Registers vorgesehen ist, in welches das Ausführungsergebnis eingeschrieben wird als Reaktion auf den Befehl, der im Augenblick der Schreiboperation ausgegeben wird, die Befehle 4 und 21, um die Register zu bestimmen, in die die Ausführungsergebnisse der Befehle 1 und 18 eingeschrieben werden. Das bedeutet, daß die Befehle 4 und 21 nicht entfernt werden dürfen.
- Wenn ein Einwortbefehl vor der Ausführung des in Fig. 12 dargestellten Programms ausgegeben wird, ist es notwendig, zwei Vierwort-Nulloperationsbefehle vor den in Fig. 12 gezeigten Befehl 1 einzufügen. Stattdesssen ist es notwendig, nur einen Vierwort-Nulloperationsbefehl einzufügen, dessen Feld N den Wert "01" enthält. Wenn ein Einwortbefehl nach der Ausführung des in Fig. 12 dargestellten Programms ausgegeben wird, wird das Feld N des in Fig. 12 gezeigten Befehls 22 bereits auf "10" gesetzt.
- Durch Verlängern des Befehls und durch Verwendung des Feldes N ist es möglich, die Codegröße zu verringern. Die Aufgabe des Einwortbefehls besteht darin, lediglich vier Operationen durch vier Wörter zu kennzeichnen, während die Aufgabe des Vierwortbefehls darin besteht, sieben Operationen durch vier Wörter, wie in Fig. 5 dargestellt wird, zu kennzeichnen.
- Nachfolgend wird die Erstellung eines Programms erklärt. Das Programm wird in einer Hochsprache, wie FORTRAN oder C, geschrieben und dann mittels eines Kompilierers in eine Befehlsfolge transformiert.
- Fig. 26 zeigt einen Verarbeitungsfluß des erfindungsgemäßen Kompilierers. Das in einer Hochsprache geschriebene Programm wird mittels einer lexikalischen Analyseeinheit, einer Syntax-Analyseeinheit, sowie einer Bedeutung- Analyseeinheit in einen Zwischencode umgewandelt. Der Zwischencode wird durch eine Optimierungseinheit optimiert und dann in einer Codeerzeugungseinheit in eine Befehlsfolge umgewandelt, wie in Fig. 3 dargestellt ist. Die Optimierungseinheit und die Codeerzeugungseinheit bilden eine Syntheseeinheit, die dier Merkmale der vorliegenden Erfindung trägt. Dies bedeutet, daß die Syntheseeinheit einen Parallelverarbeitungsabschnitt umfaßt, der eine derartige Befehlsfolge erzeugt, indem er so viele Operationen parallel verarbeitet, wie im Rahmen des Zwischencodes möglich ist. Dieser Parallelverarbeitungsabschnitt verwendet einen Vierwortbefehl, wenn die Anzahl der parallel auszuführenden Operationen groß ist, oder einen Einwortbefehl, wenn die Anzahl derartiger Operationen klein ist. Hierbei wird das Beurteilungskriterium, ob der verwendete Befehl ein Vierwort- oder ein Einwortbefehl ist, durch die Anzahl der parallel auszuführenden Operationen definiert. Die Anzahl der Operationen hängt vom System ab. Bei der Erstellung eines Programms kann diese Anzahl als Parameter für den Kompilierer angegeben werden. Die beschriebene Anordnung verringert die Codegröße, verbessert den Verwendungswirkungsgrad des Hauptspeichers sowie des Cache-Speichers und erhöht die Verarbeitungsgeschwindigkeit.
- Die nachfolgende Beschreibung betrifft ein anderes Merkmal der Syntheseeinheit, d. h., die Zuordnung der Register. Es ist erforderlich, den Vierwortbefehl zu betrachten, da das Ausführungsergebnis den vierten Befehl des laufenden Befehls beeinflußt. Zum Beispiel, da das Ausführungsergebnis des Befehls 1 zunächst den Befehl 4 beeinflusst, ist es aus wirtschaftlicher Sicht sinnvoll, den Befehlen 2 und 3 so viel Operationen wie möglich zuzuordnen. In dieser Zeit, wenn zwei oder mehr einzelne Befehle ausgeführt werden, dient eine Einheit zur Erzeugung von Nulloperationsbefehlen dazu, einen Nulloperationsbefehl einzufügen. Die Syntheseeinheit muß zwei Vierwort-Nulloperationsbefehle zwischen den wirksamen Vierwortbefehl und den nächsten Einwortbefehl einfügen.
- Im Gegensatz ist es erforderlich, zwei Vierwort- Nulloperationsbefehle zwischen den wirksamen Vierwortbefehl und den nächsten Einwortbefehl einzufügen. Hierbei kann der Nulloperationsbefehl durch Gestaltung des Feldes N auf die vorhin erwähnte Art eliminiert werden. Dies bedeutet, daß der Kompilierer gemäß dieser Ausführung zur Ermittlung eines Prioritätskonflikts unter langen Befehlen dient und durch Verwendung des Feldes N die Anzahl der Nulloperationszyklen festlegt, die nach der Ausführung des Befehls eingefügt werden sollen. Somit ist zur Ermittlung oder zur Verarbeitung eines Prioritätskonflikts unter langen Befehlen keine Hardware erforderlich.
- Die nachfolgende Beschreibung betrifft die Hardware zur Verarbeitung der oben beschriebenen Befehle gemäß einer Ausführung der Erfindung. Fig. 13 zeigt die Einzelheiten der in Fig. 1 dargestellten Gesamtanordnung. Das Bezugszeichen 1300 bezeichnet einen Befehls-Cache-Speicher. Das Bezugszeichen 1301 bezeichnet eine Steuereinheit des Befehls- Cache-Speichers. Das Bezugszeichen 1302 bezeichnet eine Verzweigungseinheit zur Steuerung eines Befehlsverarbeitungsflusses. Das Bezugszeichen 1303 bezeichnet eine Befehlssteuereinheit zur Decodierung eines Befehls. Das Bezugszeichen 1304 bezeichnet eine Festkomma-Recheneinheit. Das Bezugszeichen 1307 bezeichnet eine Gleitkomma- Recheneinheit. Das Bezugszeichen 1306 bezeichnet einen Daten-Cache-Speicher. Das Bezugszeichen 1305 bezeichnet eine Steuereinheit des Daten-Cache-Speichers. Das Bezugszeichen 1308 bezeichnet eine Speicher-Schnittstelleneinheit.
- Die Befehlssteuereinheit 1303 empfängt einen Befehl, der durch den Befehls-Cache-Speicher 1300 ausgeführt werden soll, über einen Bus 1310 und entschlüsselt ihn. Dann sendet die Einheit 1303 ein Steuersignal 1318 für die Festkomma-Recheneinheit 1304, ein Steuersignal 1314 für die Gleitkomma-Recheneinheit 1307, ein Steuersignal 1312 für die Verzweigungseinheit 1302. Weiterhin sendet die Einheit 1303 ein Modussignal 110 an die Verzweigungseinheit 1302 zur Steuerung eines Programmzählers 3500. Die Einheit 1303 empfängt eine Marke 1317 von der Festkomma-Recheneinheit 1304, und eine Marke 1315 von der Gleitkomma-Recheneinheit 1307.
- Die Festkomma-Recheneinheit 1304 sendet eine Operandenadresse 1319 an den Daten-Cache-Speicher 1306 und die Steuereinheit 1305 des Daten-Cache-Speichers. Die aus dem Daten-Cache-Speicher gelesenen Daten werden über den Datenbus 1320 an die Festkomma-Recheneinheit 1304 oder die Gleitkomma-Recheneinheit 1307 geschickt. Wenn im Daten-Cache- Speicher keine gewünschten Daten gefunden werden, gibt die Steuereinheit 1305 des Daten-Cache-Speichers ein Schnittstellensignal 1321 zur Aktivierung der Speicher- Schnittstelleneinheit 1308 aus, so daß sie Daten aus dem Hauptspeicher lesen kann. Die Steuereinheit 1305 steuert durch die Wirkung des Signals 1316 die Warteschlangenbildung für diese Operation zusammen mit der Befehlssteuereinheit 1316.
- Die Verzweigungseinheit sendet eine Adresse 1309 eines nächsten Befehls, der in den Befehls-Cache-Speicher 1300 und die Steuereinheit 1301 des Befehls-Cache-Speichers eingelesen werden soll. Wenn im Befehls-Cache-Speicher 1300 kein gewünschter Befehl gefunden wird, gibt die Steuereinheit 1301 des Befehls-Cache-Speichers ein Schnittstellensignal 1313 zur Aktivierung der Speicher- Schnittstelleneinheit 1308 aus, so daß sie den gewünschten Befehl aus dem Hauptspeicher lesen kann. Die Steuereinheit 1301 steuert durch die Wirkung des Signals 1311 die Warteschlangenbildung für diese Operation zusammen mit der Befehlssteuereinheit 1316.
- Eine Einzelheit der Festkomma-Recheneinheit 1304 ist in Fig. 14 gezeigt. Das Bezugszeichen 1400 bezeichnet eine Decodiereinrichtung. Das Bezugszeichen 1401 bezeichnet eine erste ALU (Recheneinheit). Das Bezugszeichen 1402 bezeichnet eine zweite ALU. Das Bezugszeichen 1403 bezeichnet eine Festkommaregisteranordnung. Die erste ALU empfängt Daten von der Festkommaregisteranordnung 1403 über Quellenbusse 1406 und 1407 und sendet das Ergebnis der Befehlsausführung zurück an die Festkommaregisteranordnung 1403 über einen Zielbus 1322. Die zweite ALU empfängt Daten von der Festkommaregisteranordnung 1403 über Quellenbusse 1408 und 1409 und sendet das Ergebnis der Befehlsausführung zurück an die Festkommaregisteranordnung 1403 über einen Zielbus 1319. Das Bezugszeichen 1317-2 bezeichnet einen Markenausgang der zweiten ALU. Die Bezugszeichen 1319 und 1322 bezeichnen Busse, die dem Daten-Cache-Speicher 1306 als eine Adresse zugeführt werden, wenn Lade- und Speicheroperationen und Abrufoperationen ausgeführt werden.
- Fig. 15 zeigt eine Einzelheit der in Fig. 13 dargestellten Gleitkomma-Recheneinheit 1307. Das Bezugszeichen 1501 bezeichnet eine Decodiereinrichtung. Das Bezugszeichen 1502 bezeichnet eine Gleitkommaregisteranordnung, Das Bezugszeichen 1503 bezeichnet einen ersten Multiplikator. Das Bezugszeichen 1504 bezeichnet einen zweiten Multiplikator. Das Bezugszeichen 1505 bezeichnet ein erstes Addierwerk.
- Das Bezugszeichen 1506 bezeichnet ein zweites Addierwerk. Die Gleitkommaregisteranordnung 1502 sendet Daten an den ersten Multiplikator 1503 über Quellenbusse 1517 und 1518, an den zweiten Multiplikator 1504 über Quellenbusse 1515 und 1516, an das erste Addierwerk 1505 über Quellenbusse 1513 und 1514, und an das zweite Addierwerk 1506 über Quellenbusse 1511 und 1512. Jedes Ausführungsergebnis wird an die Gleitkommaregisteranordnung über Zielbusse 1507, 1508, 1509 und 1510 zurückgemeldet, um dieses Ergebnis in die Gleitkommaregisteranordnung einzuschreiben.
- Das Bezugszeichen 1315-1 bezeichnet eine Marke des ersten Multiplikators 1503. Das Bezugszeichen 1315-2 bezeichnet eine Marke des zweiten Multiplikators 1504. Das Bezugszeichen 1315-3 bezeichnet eine Marke des ersten Addierwerkes 1505. Das Bezugszeichen 1315-4 bezeichnet eine Marke des zweiten Addierwerkes 1506.
- Fig. 16 zeigt eine Einzelheit der Gleitkommaregisteranordnung 1502. Die Bezugszeichen 1600 bis 1608 bezeichnen Gleitkommaregister. Die Bezugszeichen 1314-1 bis 11314-9 bezeichnen Steuersignale der Gleitkommaregister 1600 bis 1608. Das Bezugszeichen 1610 bezeichnet eine Lade- Buszuordnungseinrichtung. Das Bezugszeichen 1609 bezeichnet eine Speicher-Buszuordnungseinrichtung. Die Bezugszeichen 1611 bis 1618 bezeichnen Busse, die die Gleitkommaregister 1600 bis 1608 mit Speichern verbinden. Der Bus 1611 ist mit dem FR0 16 und 12 verbunden und der Bus 1612 ist mit den Registern FR1, 9, 17 und 25 verbunden. Das gleiche gilt für die Busse 1613, 1614, 1615, 1616 und 1617. Der Bus 1618 ist mit FR7, 15, 23 und 31 verbunden. Bei der Ausführung des Ladebefehls werden die über den Bus 1320 gesendeten Daten durch die Wirkung der Lade-Buszuordnungseinrichtung 1610 an einen der Busse 1611 bis 1618 weitergeleitet und dann in ein gewünschtes Register geschrieben. Bei der Ausführung des Speicherbefehls werden die Daten aus dem Register durch die Wirkung der Speicher-Buszuordnungseinrichtung 1609 auf die Busse 1611 bis 1618 gelesen und dann an eine gewünschte Stelle auf dem Bus 1320 ausgegeben.
- Fig. 17 zeigt eine erste Ausführung des in Fig. 16 dargestellten Gleitkommaregisters 1600. Die Bezugszeichen 1601 bis 1608 bezeichnen die gleichen Teile wie beim Register 1600. Wie in Fig. 17 dargestellt wird, besteht das Register 1600 aus einem Satz von 64-Bit-Registern. Die Bezugszeichen 1700 bis 1763 bezeichnen einzelne Ein-Bit-Register. Die Bezugszeichen 1511-00 bis 15180-00 bezeichnen Lesebusse des Registers 1700. Die Bezugszeichen 1507-00 bis 1518-00 bezeichnen Schreibbusse des Registers 1700. Das Bezugszeichen 1611-0 bezeichnet einen Lese- und Schreibbus des Registers 1700. Dementsprechend sieht auch die Busanordnung des Registers 1763 aus.
- Fig. 28 zeigt eine Einzelheit des in Fig. 13 dargestellten Daten-Cache-Speichers. Das Bezugszeichen 2801 bezeichnet ein Datenfeld zum Halten von Daten. Das Bezugszeichen 2800 bezeichnet ein Adressenfeld, das für eine Lade- und Speicheroperation verwendet wird. Das Bezugszeichen 2802 bezeichnet ein Adressenfeld für Datenabruf. Die Adressenfelder 2800 und 2802 enthalten die gleichen Daten. Bei der Ausführung des Lade- und Speicher-Einwortbefehls wird auf das Adressenfeld 2800 und das Datenfeld 2801 über die Busse 1319 und 1322 zugegriffen. Bei der Ausführung des Lade- und Speicher-Vierwortbefehls wird auf das Adressenfeld 2800 und das Datenfeld 2801 über den Bus 1322 zugegriffen. Der Zugriff auf das Adressenfeld 2802 zum Zweck des Abrufs erfolgt über den Bus 1319.
- Fig. 29 zeigt eine Pipelineanordnung für den Fall, wenn während der Lade- und Speicheroperation ein Fehler im Cache-Speicher auftritt. Während der Datenübertragung vom Speicher in den Cache-Speicher ist die Pipeline gesperrt. In Fig. 29 wird mit M ein Sperrzeitraum bezeichnet.
- Andererseits geschieht beim Ausführen einer Abrufoperation nichts, wenn das Adressenfeld 2802 getroffen ist. Wenn in einer Adresse ein Trefferfehler auftritt, wird der die Adresse enthaltende Block über einen Bus aus dem Speicher zum Adressenfeld 2801 übertragen. Während dieses Zeitraums ist die Pipeline gesperrt. Durch die Ausführung einer Abrufoperation vor einer Lade- und Speicheroperation, bei der eine Fehlermöglichkeit besteht, wird die Datenübertragung vom Speicher in den Cache-Speicher parallel zu einer anderen Operation ausgeführt. Daher ist es möglich, eine Verringerung der Leistung zu verhindern, die aus der gesperrten Pipeline resultiert.
- Fig. 18 zeigt die Schaltungsanordnung des in Fig. 17 dargestellten Registers 1700. Die Bezugszeichen 1816 und 1817 bezeichnen Inverter. Die Bezugszeichen 1802 bis 1815 bezeichnen getaktete Inverter. Wenn die Steuersignale 1314-1 bis 1314-8 ein hohes Niveau annehmen, geben die Register ihre Werte auf die Busse 1511-00 bis 1518-00 aus. Wenn die Signale 1314-1-10 bis 1314-1-14 ein hohes Niveau annehmen, werden die Werte auf den Bussen 1510-00 bis 1507-00 in die Register geschrieben. Wenn das Signal 1314-1-9 ein hohes Niveau annimmt, wird der Wert vom Register auf den Bus 1611-00 ausgegeben. Wenn das Signal 1314-1-10 ein hohes Niveau annimmt, wird der Wert auf dem Bus 1611-00 ins Register geschrieben. Das Signal 1800 entspricht einem separaten Leseanschluß und das Signal 1801 entspricht einem separaten Schreibanschluß. Die Art der Verwendung dieser Signale wird später beschrieben.
- Fig. 19 zeigt eine zweite Ausführung des in Fig. 16 dargestellten Gleitkommaregisters 1600. Die in Fig. 19 dargestellte Ausführung unterscheidet sich von der in Fig. 17 gezeigten Ausführung dadurch, daß erste Schattenregister 1900 bis 1963 und zweite Schattenregister 2000 bis 2063 hinzugefügt wurden. Das erste Schattenregister 1900 läßt das Signal 1800 durch, so daß es den im Register 1700 gespeicherten Wert lesen kann. Weiterhin läßt das Register 1900 das Signal 1964 durch, so daß es einen Wert an das zweite Schattenregister 2000 ausgeben kann. Das zweite Schattenregister 2000 gibt seinen Wert an das Register 1700 mittels des Signals 1801 aus. Dies bedeutet, daß die Register 1700 bis 1763, die ersten Schattenregister 1900 bis 1963 und die zweiten Schattenregister 2000 bis 2063 ein ringförmiges Schieberegister bilden. Ähnlich den Registern 1700 bis 1763 sind die ersten Schattenregister 1900 bis 1963 und die zweiten Schattenregister 2000 bis 2063 in der Lage, Daten über die Busse 1611-00 bis 1611-63 zu lesen und zu schreiben. Das Bezugszeichen 1314-1-15 bezeichnet ein Steuersignal der ersten Schattenregister 1900 bis 1963. Das Bezugszeichen 1314-1-16 bezeichnet ein Steuersignal der zweiten Schattenregister 2000 bis 2063.
- Die Aufgabe der Schattenregister besteht darin, beim Ausführen eines Vierwortbefehls einen Rücksprung von einer Unterbrechung zu ermöglichen. Die Art, wie die Schattenregister arbeiten, wird im Zusammenhang mit Fig. 20 bis 22 beschrieben. Die Stufe W' ist eine Stufe, auf der ein Wert aus dem Register in das erste Schattenregister FRS1 geschrieben wird. Die Stufe W" ist eine Stufe, auf der ein Wert aus dem Schattenregister FRS1 in das zweite Schattenregister FRS2 geschrieben wird.
- Fig. 20 zeigt die Funktionsweise eines Vierwortbefehls unter normalen Bedingungen, wenn keine Unterbrechung stattfindet. Die Darstellungen der Zeitabläufe FR, FRS1 und FRS2 zeigen die Befehle, nach denen einzelne Ausführungsergebnisse in den Registern gespeichert sind. Wie in Fig. 20 dargestellt ist, wird das Ausführungsergebnis unter normalen Bedingungen in einem Zyklus aus dem Register FR ins FRS1 und aus dem FRS1 ins FRS2 verschoben.
- Fig. 21 zeigt eine Operation, die ausgeführt wird, wenn zwischen den Befehlen 3 und 4 eine Unterbrechung stattfindet. Die Befehle 4, 5, 6, 7 werden anulliert. Nachdem eine Unterbrechung aufgetreten ist, stoppt jedes Register die Aktualisierung eines Wertes. Das Register FR hält das Ergebnis der Ausführung des Befehls 3. Das Register FRS1 hält das Ergebnis der Ausführung des Befehls 2. Das Register FRS2 hält das Ergebnis der Ausführung des Befehls 1. Im Programmzähler wird ein Unterbrechungsvektor eingestellt. Das mit dem Unterbrechungsvektor beginnende Unterbrechungsverarbeitungsprogramm sichert die Werte von FR, FRS1 und FRS2 im Speicher.
- Fig. 22 ist eine Darstellung zur Erklärung einer Rücksprungoperation aus der Unterbrechungsverarbeitung. Auf der Endstufe des Unterbrechungsverarbeitungsprogramms springt das Ausführungsergebnis des Befehls 1, wie in Fig. 22 gezeigt wird, zum FR zurück. Das Ausführungsergebnis des Befehls 2 springt zum FR2 zurück. Das Ausführungsergebnis des Befehls 3 springt zum FR1 zurück. Auf der Stufe E des Befehls 4 zum Lesen der Daten aus dem Register kann das Ausführungsergebnis des Befehls 1 betrachtet werden. Nach der Beendigung der Stufe E des Befehls 4 werden der Wert von FR ins FRS1 kopiert, der Wert vom FRS1 ins FRS2 kopiert und der Wert von FRS2 ins FR kopiert. Als Ergebnis kann auf der Stufe E des Befehls 5 das Ausführungsergebnis des Befehls 2 betrachtet werden. Nach der Beendigung der Stufe E des Befehls 5 zum Lesen der Daten aus dem Register, auf der Stufe E des Befehls 6 zum Lesen der Daten aus dem Register wird das Ausführungsergebnis des Befehls 3 durch eine ähnliche Operation sichtbar gemacht. Der nachfolgende Ablauf entspricht dem normalen Ablauf. Das bedeutet, daß immer, wenn ein Befehl ausgeführt wird, der Wert vom FR ins FRS1 und der Wert vom FRS1 ins FRS2 kopiert werden. Der Wert von FRS2 wird abgelegt.
- Wie oben erwähnt wurde, sind die Schattenregister vorgesehen, um eine Unterbrechung beim Ausführen einer verzögerten Schreiboperation zu empfangen und auf die ursprüngliche Stufe zurückzukommen. Durch Fehlen der Schattenregister wird lediglich eine Sicherung des Ausführungsergebnisses des Befehls 3 ermöglicht, wie in Fig. 21 dargestellt wird. Dies bedeutet, daß der Befehl 4 keine Funktion zur Darstellung des Ausführungsergebnisses des Befehls 1 erfüllt, wenn er von der Unterbrechung auf die ursprüngliche Stufe zurückkommt, wie in Fig. 22 dargestellt wird. Dies ist darauf zurückzuführen, daß die Befehle 2 und 3 die Werte in dasselbe Register wie der Befehl 1 schreiben können. In dem in Fig. 12 gezeigten Programm schreibt z. B. der Befehl 3 die Daten in dasselbe Register wie der Befehl 1.
- Die Vergrößerung der Hardware, die auf das Hinzufügen der Schattenregister zurückzuführen ist, wird später beschrieben werden. Die Größe des Registers ist im wesentlichen proportional der Anzahl der Anschlüsse. Wie aus dem Vergleich zwischen den Fig. 17 und 19 ersichtlich ist, beträgt die Anzahl der Anschlüsse des Schattenregisters drei, wobei der Wert viel kleiner ist als die Anzahl der Anschlüsse des Registers, d. h., 13. Die Vergrößerung der Hardware, die auf das Hinzufügen der Schattenregister zurückzuführen ist, ist somit unbedeutend.
- Fig. 41 zeigt eine Ausführung der in Fig. 13 dargestellten Befehlssteuereinheit 1303. Das Bezugszeichen 150 bezeichnet eine Einheit zur Bestimmung der Befehlswortlänge. Das Bezugszeichen 101 bezeichnet ein erstes Befehlsregister. Das Bezugszeichen 102 bezeichnet ein zweites Befehlsregister. Das Bezugszeichen 103 bezeichnet ein drittes Befehlsregister. Das Bezugszeichen 104 bezeichnet ein viertes Befehlsregister. Das Bezugszeichen 4100 bezeichnet ein Modusregister. Das Bezugszeichen 100 bezeichnet eine Modussteuerschaltung. Das Bezugszeichen 105 bezeichnet eine Registerlese-Steuerschaltung. Das Bezugszeichen 106 bezeichnet eine Registerschreib-Steuerschaltung. Das Bezugszeichen 107 bezeichnet eine Funktionssteuerschaltung. Das Bezugszeichen 108 bezeichnet eine Pipelinesteuerschaltung. Das Bezugszeichen 109 bezeichnet eine Schaltung zur Ermittlung eines Prioritätskonfliktes.
- Es wird angenommen, daß ein Vierwortbefehl derart angeordnet ist, daß er die Grenze zwischen den benachbarten Vierwortbefehlen nicht überschreitet, und daß ein Einwortbefehl beim Auftreten aller zwei Wörter gleichzeitig ausgeführt wird, die durch eine Zweiwortgrenze begrenzt sind. Bei dieser Ausführung wird die Bestimmung der Befehlswortlänge durch Betrachtung des linksäußeren Bits eines Befehlscodes, d. h., dessen Signals 1310-1-1 (C000) nach Fig. 41 durchgeführt.
- Fig. 27 zeigt eine Einzelheit der Modussteuerschaltung 100. In Fig. 27 bezeichnet das Bezugszeichen 2700 eine Steuerschaltung. Das Bezugszeichen 2701 bezeichnet ein Register zum Halten eines N-Feldes 1310-4-1. Das Bezugszeichen 2702 bezeichnet eine Rückwärtszähleinrichtung. Das. Bezugszeichen 2703 bezeichnet einen Komparator. Der Komparator 2703 sendet ein Steuersignal VALID (2704) an die Steuerschaltung. Der Wert des N-Feldes im Register 2701 wird in jedem Zyklus durch die Rückwärtszähleinrichtung 2702 um eine Eins verringert. Wenn das Feld N den Wert 00 erreicht, wird das Signal VALID bestätigt. Das Signal VALID kennzeichnet ein Einfügen eines nicht ausführbaren Zyklus, wenn es negiert wird, und ein Ausführen eines Befehls, wenn es bestätigt wird.
- Die Steuerschaltung 2700 dient der Überprüfung eines Ausgangs 116 der Schaltung zur Ermittlung eines Prioritätskonflikts (BUB), eines niedrigen 32-sten Bits der Befehlsadresse 1309-1 (CA30), des Bits 1310-1-1 (C000), das anzeigt, ob der Befehl aus vier Wörtern im Operationscode besteht, und des Signals 2704 (VALID). Dann wählt die Steuerschaltung den laufenden Modus aus fünf Modi. Wie in Fig. 23 dargestellt ist, setzt die Steuerschaltung einen Operationscode ins erste bis vierte Befehlsregister und gibt das Signal 110 zur Erhöhung des Zählerstandes des Programmzählers aus.
- Das Signal 110, das den Modus anzeigt, auf den sich der laufende Zyklus bezieht, wird durch das Modusregister 4100 gesperrt. Das Modusregister 4100 dient dazu, ein Signal 130 der Registerlese-Steuerschaltung 105, der Registerschreib- Steuerschaltung 106, der Funktionssteuerschaltung 107, der Pipelinesteuerschaltung 108 und der Schaltung 109 zur Ermittlung des Prioritätskonflikts zuzuführen. Wie in Fig. 23 gezeigt wird, bezeichnen C0 bis C3 vier Wörter, die innerhalb der Vierwortgrenzen, beginnend mit der niedrigen Adresse wie C0, C1, C2, C3, angeordnet sind. Wie in Fig. 3 dargestellt ist, kann anhand des linksäußeren Bits C000 von C0 bestimmt werden, ob der Befehl ein Einwortbefehl oder ein Vierwortbefehl ist. Ein Einwortbefehlsmodus 1 ist ein Modus, in dem zwei links angeordnete Befehle (C0, C1) innerhalb der Vierwortgrenzen ausgeführt werden. In diesem Modus werden C0 ins erste Befehlsregister, C1 ins zweite Befehlsregister gesetzt und der Zählerstand des Programmzählers wird um +2 erhöht. Ein Einwortbefehlsmodus 2 ist ein Modus, in dem zwei rechts angeordnete Befehle (C2, C3) innerhalb der Vierwortgrenzen ausgeführt werden. In diesem Modus werden C2 ins erste Befehlsregister, C3 ins zweite Befehlsregister gesetzt und der Zählerstand des Programmzählers PC wird um +2 erhöht. Das bedeutet, daß beim Ausführen eines Einwortbefehls das erste und das zweite Befehlsregister aktiviert werden, während das dritte und das vierte Befehlsregister inaktiv sind. Ein Vierwortbefehlsmodus ist ein Modus, in dem ein Vierwortbefehl (C0, C1, C2, C3) ausgeführt wird. In diesem Modus werden C0 bis C3 in das erste bis vierte Befehlsregister gesetzt und der Zählerstand des Programmzählers PC wird um +4 erhöht. Ein Prioritätskonfliktmodus erscheint, wenn die Schaltung 109 zur Ermittlung eines Prioritätstkonflikts einen Prioritätstkonflikt ermittelt. Das erste bis vierte Befehlsregister sowie das Modusregister 4100 halten den Wert des vorhergehenden Zyklus. Weiterhin wird in diesem Modus keine Aktualisierung des Programmzählers durchgeführt. Ein Nulloperationsbefehlmodus erscheint, wenn ein Einfügen eines Nulloperationsbefehls (NOP) in den laufenden Zyklus mittels Hardware durch ein Feld N angezeigt wird, das einen vor dem laufenden Zyklus ausgeführten Vierwortbefehl enthält. Der Nulloperationsbefehl wird ins Befehlsregister gesetzt und der Programmzähler wird nicht aktualisiert. Infolgedessen wird ein Nulloperationszyklus eingefügt.
- Beim Ausführen eines Vierwortbefehls werden zum Ausführen von C0 oder C2 die erste ALU 1401 (s. Fig. 14), der erste Multiplikator 1503 (s. Fig. 15) und das erste Addierwerk 1505 (s. Fig. 15) verwendet, während zum Ausführen von C1 oder C3 die zweite ALU 1402 (s. Fig. 14), der zweite Multiplikator 1504 (s. Fig. 15) und das zweite Addierwerk 1506 (s. Fig. 15) verwendet werden. Beim Ausführen eines Vierwortbefehls werden die Adressenberechnung für eine Lade- und Speicheroperation in der ersten ALU 1401 (s. Fig. 14), die Festkommaoperation in der zweiten ALU 1401 (s. Fig. 14), die erste Gleitkommaoperation im ersten Multiplikator 1503 (s. Fig. 15); die zweite Gleitkommaoperation im ersten Addierwerk 1505 (s. Fig. 15), die dritte Gleitkommaoperation im zweiten Multiplikator 1504 (s. Fig. 15) und die vierte Gleitkommaoperation im zweiten Addierwerk 1506 (s. Fig. 15) ausgeführt.
- Die in Fig. 41 dargestellten Registerlese-Steuerschaltung 105, die Registerschreib-Steuerschaltung 106 und die Funktionssteuerschaltung 107 dienen zum Erzeugen eines Steuersignals 1318 der Festkommarecheneinheit 1304 (s. Fig. 13) durch Verwendung des von der Modussteuerschaltung ausgegebenen Modusbestimmungssignals 110 und der Werte des ersten bis vierten Befehlsregisters gemäß der vorhegehenden Regeln zur Zuordnung der Recheneinheit. Eine weitere Einzelheit der Registerlese-Steuerschaltung wird in Fig. 24 dargestellt, die zeigt, welches Feld zur Bestimmung des Registereingangs verwendet wird, der zwei Eingängen von jeder der sechs Recheneinheiten zugeordnet wird. Die Abkürzungen der Felder werden in den Spalten der in Fig. 3 dargestellten Verbundbefehlen aufgeführt. Die Vierwortbefehle J1 und A1 sind am Platz des Einwortbefehls S1 und die Vierwortbefehle J2 und A2 sind am Platz des Einwortbefehls S2 angeordnet. Durch Verwendung dieser Platzanordnung wird die in Fig. 24 gezeigte Feldbestimmung anhand der J1, J2, A1 und A2 beim Ausführen eines Einwortbefehls beschrieben. Dies dient zum Unterscheiden von C0 von C1.
- Die nachfolgende Beschreibung bezieht sich auf die Schaltung 109 zur Ermittlung eines Prioritätskonflikts, die in Fig. 41 dargestellt ist. Wie im Zusammenhang mit Fig. 7 bis 9 erläutert wurde, ist diese Ausführung zur Ermittlung eines Prioritätskonflikts zwischen Vierwortbefehlen nicht erforderlich. Da sämtliche Recheneinheiten zum Ausführen eines Einwortbefehls zweifach vorhanden sind, findet zwischen zwei parallel auszuführenden Einwortbefehlen in der Recheneinheit kein Prioritätskonflikt statt. Zur Vereinfachung der Beschreibung wird angenommen, daß kein Register- Prioritätskonflikt stattfindet. Die Erweiterung dieser Ausführung auf einen Register-Prioritätskonflikt wird auf die Art erleichtert, die in der japanischen Patentanmeldung Nr. 63-283673 beschrieben ist. Wie oben erwähnt wurde, ist es erforderlich, zwei Nulloperations-Vierwortbefehle zwischen einen wirksamen Vierwortbefehl und den nächsten Einwortbefehl anzuordnen. Zwischen dem Vierwortbefehl und dem Einwortbefehl findet somit kein Prioritätskonflikt statt. Das bedeutet, daß die Schaltung zur Ermittlung eines Prioritätskonflikts lediglich den Einwortbefehl des laufenden Zyklus und den Einwortbefehl ermitteln muß, der vor dem Zyklus ausgeführt wurde. Durch die Steuerung mittels der Modussteuerschaltung 100 wird ein Einwortbefehl lediglich in das erste und das zweite Befehlsregister 101 und 102 gesetzt. Die Schaltung 109 zur Ermittlung eines Prioritätskonflikts muß lediglich das erste und das zweite Befehlsregister 101 und 102 überwachen. Das bedeutet, daß die Schaltung 109 weder das dritte noch das vierte Befehlsregister 103 und 104 zu überwachen braucht.
- Fig. 25 ist ein Blockdiagramm, daß eine Ausführung der Schaltung 109 zur Ermittlung eines Prioritätskonflikts darstellt. Die Bezugszeichen 2501 bis 2504 bezeichnen Register. Das Bezugszeichen 2505 bezeichnet eine Maskenschaltung. Die Bezugszeichen 2506 bis 2521 bezeichnen Komparatoren. Unter der Annahme, daß die Befehle 7 und 8 in Fig. 7 laufende Befehle sind, wird angenommen, daß ein Prioritätskonflikt unter den Befehlen 3 bis 6 zu ermitteln ist. Die Stufe E der Befehle 7 und 8 folgt auf die Stufe S der Befehle 1 und 2. Infolgedessen findet zwischen den Befehlen 1, 2 und 7, 8 kein Prioritätskonflikt statt. Wie in Fig. 25 dargestellt ist, enthält das Register 2501 die Nummer des Registers, die durch den Befehl 5 eingeschrieben wird, das Register 2503 die Nummer des Registers, die durch den Befehl 6 eingeschrieben wird, das Register 2502 die Nummer des Registers, die durch den Befehl 3 eingeschrieben wird, und das Register 2504 die Nummer des Registers, die durch den Befehl 4 eingeschrieben wird. Die vier Register und die Nummern der vier Register, die aus den Befehlen 7 und 8 ausgelesen würden, werden durch sechzehn Komparatoren 2506 bis 2521 verglichen. Als Ergebnis wird das Vergleichsergebnis an die Maskenschaltung 2505 geschickt. Die Maskenschaltung 2502 prüft den Ausgang 130 der Modussteuerschaltung 100 und den Ausgangs 115 der Pipelinesteuerschaltung 108, um zu bestimmen, ob ein Treffersignal des Komparators wirksam ist oder nicht. Wenn es der Fall ist, wird das den Prioritätskonflikt anzeigende Signal 116 bestätigt. Das bedeutet, daß selbst wenn der Komparatorausgang eine Übereinstimmung der Register anzeigt, das Signal 116 negiert wird, wenn der Befehl anulliert wird. Wenn das Modussignal 130 einen Vierwortmodus anzeigt, negiert die Maskenschaltung 2505 das Signal 116.
- Der nachfolgende Text betrifft die Pipelinesteuerschaltung 108. Die Pipelinesteuerschaltung 108 gibt das Modussignal 130, ein Kennzeichnungssignal 1317 der in Fig. 13 gezeigten Festkommarecheneinheit 1304 sowie ein Kennzeichnungssignal 1315 der in Fig. 13 gezeigten Gleitkommarecheneinheit 1307 aus. Weiter gibt die Schaltung 108 ein Steuersignal 1312 der in Fig. 13 gezeigten Verzweigungseinheit 1302 auf Grund der Zusammenwirkung der Schnittstelle 1316 mit der Daten- Cache-Speicher-Steuereinheit gemäß Fig. 13 und der Schnittstelle 1311 mit der Befehls-Cache-Speicher-Steuereinheit gemäß Fig. 13 zum Zweck der Steuerung der Verzweigungsein heit aus. Das bedeutet, wenn ein wirksamer Verzweigungsbefehl zur Schaltung 108 kommt, dient die Schaltung 108 zur Bedienung der Verzweigungseinheit 1302. Zu einem anderen Zeitpunkt dient die Schaltung 108 mittels Verwendung des Modussignals 110 zur Steuerung des Programmzählers, der in der Verzweigungseinheit nach Fig. 23 enthalten ist. Die Pipelinesteuerschaltung dient außerdem zur Ausgabe des Signals 115 an die Registerlese-Steuerschaltung 105, die Registerschreib-Steuerschaltung 106, die Funktionssteuerschaltung 107 und die Schaltung 109 zur Ermittlung des Prioritätskonflikts zum Zweck der Steuerung des Pipelinezustands. Das bedeutet, daß wenn beim Zugriff auf den Befehls-Cache-Speicher oder den Daten-Cache-Speicher ein Fehler auftritt; wie in Fig. 29 gezeigt wird, die Pipeline gesperrt wird.
- Nachfolgend wird eine erste Modifikation der vorhergehenden Ausführung beschrieben. Die vorhergehende Ausführung ist vorgesehen, um mit dem Ausführungsergebnis des Vierwortbefehls den laufenden (ersten) Befehl bis vierten Befehl zu beeinflussen, um die Notwendigkeit der Schaltung zur Ermittlung des Prioritätskonflikts unter den Vierwortbefehlen zu eliminieren. Um eine ähnliche Wirkung zu erreichen kann die Ausführung derart gestaltet werden, daß sich das Ausführungsergebnis des Vierwortbefehls auf den nächsten Befehl auswirkt, daß aber der Prioritätskonflikt unter den Vierwortbefehlen durch Verwendung eines Kompilierers verhindert wird. In Wirklichkeit bedeutet das, daß wenn ein Vierwortbefehl Daten in ein Register schreibt, die nächsten zwei Vierwortbefehle keine Daten aus diesem Register lesen. Bei dieser Ausführung geht der Effekt der erheblichen Erhöhung der Zahl der Register gemäß der ersten Ausführung verloren; sie braucht jedoch keine in Fig. 19 dargestellten Schattenregister.
- Weiterhin wird eine zweite Modifikation der vorhergehenden Ausführung beschrieben. Bei der in Fig. 3 dargestellten Ausführung ist in einem Befehl ein Bit vorgesehen, das an zeigt, ob der Befehl ein Einwort- oder ein Vierwortbefehl ist. Stattdessen ist im Computer eine Flagge (flag), die anzeigt, ob der Befehl ein Einwort- oder ein Vierwortbefehl ist, derart vorgesehen, daß sie durch den Befehl gesteuert wird. Diese Anordnung erfordert zwar einen Befehl zur Steuerung der Flagge, braucht aber vorzugsweise die Wortlänge in jedem Befehl lediglich durch einmaliges Umschalten der Flagge nicht zu kennzeichnen.
- Eine dritte Modifikation dieser Ausführung wird im Zusammenhang mit Fig. 30 bis 32 beschrieben. Ähnlich Fig. 30 ist diese Modifikation zur Erhöhung der Anzahl der Gleitkommaregister von 32 auf 128 vorgesehen. Fig. 31 zeigt ein Befehlsformat und Fig. 32 einen Befehl. Die Gleitkommaregister FR0 bis 31 können sowohl von Grundbefehlen als auch von Verbundbefehlen verwendet werden. FR32 bis FR127 sind Register, die nur von Verbundbefehlen verwendet werden können. Jedes der Felder zur Bestimmung der Register 11, IT, M1, MT, A1, AT, N1, NT, B1 und BT enthält, wie in Fig. 32 dargestellt ist, sieben Bits, wobei diese Anzahl höher ist als bei der vorhergehenden Ausführung. Diese Modifikation ist vorgesehen, um eine Seite des Quellenregisters mit dem Zielregister in Übereinstimmung zu bringen, um den gesamten Befehl in vier Wörtern unterzubringen. Wenn es nicht erwünscht ist, kann die Wortlänge verlängert werden. Diese Modifikation ist dafür vorgesehen, den Verbundbefehl zum Grundbefehl hinzuzu- addieren, so daß durch den Verbundbefehl mehr Register verarbeitet werden können, als die, die durch den Grundbefehl verwendet werden. Dadurch kann die Anzahl der verwendbaren Register erhöht werden. Durch diese Modifikation wird ermöglicht, daß auf FR0 bis FR31 sowohl der Grundbefehl als auch der Verbundbefehl zugreifen können. Statt dessen ist es möglich, unabhängig 32 Register für den Grundbefehl und 128 Register für den Verbundbefehl vorzusehen.
- Wie in Fig. 32 dargestellt wird, ist die Modifikation weiterhin dafür vorgesehen, die Anzahl der Wörter zu bestim men, die beim Abruf von Daten aus dem Speicher in den Cache-Speicher mittels des Feldes JT abgerufen werden sollen. Mit dieser Anordnung kann ein Befehl eine gleichzeitige Übertragung mehrerer Blöcke bewirken. Dadurch wird die Ausnutzung des Systems verbessert.
- Außerdem wird eine vierte Modifikation der vorhergehenden Ausführung im Zusammenhang mit Fig. 33 und 34 beschrieben. Der Unterschied der vierten Modifikation besteht darin, daß der Datenabruf nicht von den Festkommarechenfeldern wie J1, J2 und JT, sondern lediglich von einem Einbitfeld P ausgeführt wird. Wenn P = 1, wird der Block abgerufen, der dem Block folgt, der die Adresse enthält, die bei der Lade- und Speicheroperation verwendet wird. Diese Operation ist in der Lage, das für den Abruf erforderliche Feld aufrechtzuerhalten und den Vorteil der parallelen Bestimmung von drei Operationen, nämlich einer Lade- und Speicheroperation, einer Festkommaoperation und einer Abrufoperation zu bieten.
- Fig. 35 ist ein Blockdiagramm zur Erklärung einer anderen Ausführung. In Fig. 35 bezeichnet das Bezugszeichen 3500 einen Programmzähler. Das Bezugszeichen 3501 bezeichnet einen Speicher zum Speichern von Befehlen. Das Bezugszeichen 3502 bezeichnet eine Maskenumschaltschaltung. Die Bezugszeichen 3503 bis 3506 bezeichnen M Befehlsregister, von denen jedes eine Länge von n Byte aufweist. Das Bezugszeichen 3507 bezeichnet eine Decodiereinrichtung. Die Bezugszeichen 3508 und 3509 bezeichnen L (L$1) Recheneinheiten. Das Bezugszeichen 150 bezeichnet eine Einheit zur Bestimmung der Befehlslänge. Das Bezugszeichen 109 bezeichnet eine Schaltung zur Ermittlung eines Prioritätskonflikts. Das Bezugszeichen 100 bezeichnet eine Modussteuerschaltung. Das Bezugszeichen 4100 bezeichnet ein Modusregister. Der Programmzähler 3500 gibt eine Befehlsadresse 3513 an den Speicher 3501 aus, um Befehle zu speichern. Im Speicher 3501 werden Befehle mit einer Länge von n Byte und Befehle mit einer Länge von n · M Byte nicht trennbar gespeichert. Der Speicher 3501 gibt mehrere Befehle an die Maskenumschalt schaltung 3502 aus, die den Befehl enthalten, der durch die Befehlsadresse 3513 bestimmt wird. Wenn der Befehl n Byte aufweist, schreibt die Maskenumschaltschaltung 3502 den Befehl in mindestens eines von N (1#N< ) Befehlsregistern 3503 bis 3504 innerhalb der M Befehlsregister. Wenn der Befehl n · M Byte aufweist, schreibt die Maskenumschaltschaltung 3502 den Befehl in die Befehlsregister 3503 bis 3506. Die Decodiereinrichtung 3507 entschlüsselt die Befehle 3519 bis 3522 aus den Befehlsregistern 3503 bis 3506 und steuert eine Recheneinheit durch Verwendung der Steuersignale 3523 und 3524. Die Einheit 150 zur Bestimmung der Befehlslänge betrachtet zumindest einen Teil des Befehls 3514 und gibt an die Modussteuerschaltung 100 ein Signal 3526 aus, das die Befehlslänge anzeigt. Die Schaltung 109 zur Ermittlung des Prioritätskonflikts prüft die Befehlsregister 3503 bis 3504 und gibt an die Modussteuerschaltung 100 ein Signal 116 aus, das die Anwesenheit oder die Abwesenheit eines Prioritätskonflikts zwischen n-Byte-Befehlen anzeigt. Die Modussteuerschaltung bestimmt den laufenden Modus in Abhängigkeit von der Befehlslänge, dem Auftreten eines Prioritätskonflikts und dem Zählerstand des Programmzählers und gibt ein Steuersignal 110 zur Steuerung des Programmzählers, der Maskensteuerschaltung und der Decodiereinrichtung aus.
- Nachfolgend wird die Übereinstimmung zwischen dieser Ausführung und den in Fig. 1 bis 29 und 41 dargestellten Ausführungen beschrieben. Die in Fig. 1 bis 29 dargestellte Ausführung wurde unter der Annahme gestaltet, daß n = 4, M = 4, N = 2 und L = 2 und daß die Recheneinheit aus der Festkommarecheneinheit und der Gleitkommarecheneinheit besteht. Weiterhin entspricht die in Fig. 29 gezeigte Maskenumschaltschaltung einer Auswahleinrichtung zum Erzeugen von Befehlen, die in das erste bis vierte Befehlsregister 101 bis 104 eingeschrieben werden, und einer Maske, die durch einen NOP bedient wird. Die in Fig. 35 dargestellte Einheit 150 zur Bestimmung der Befehlslänge entspricht der Einheit 150 zur Bestimmung der Befehlslänge gemäß Fig. 41. Die in Fig. 35 dargestellte Modussteuerschaltung 100 ent spricht der Modussteuerschaltung 100 gemäß Fig. 41.
- Die in Fig. 3, 5, 10, 11 und 12 gezeigten Ausführungen haben den Nachteil, daß die Datenbelegung im Speicher begrenzt ist. Durch die in Fig. 36 bis 40 dargestellte Ausführung wird dieser Nachteil eliminiert. Der Verbundbefehl dieser Ausführung ist in der Lage, zwei Speicheroperationen, wie Laden und Speichern, in einem Befehl auszuführen. Bezüglich der Hardware weist der Cache-Speicher zwei Anschlüsse auf bzw. greift auf den Speicher zweimal in einem Maschinenzyklus zu. Fig. 39 und 40 zeigen ein Programm zum Lösen des gleichen Problems, das in Fig. 11 und 12 dargestellt ist.
- Die vorhin beschriebenen Ausführungen sind bei einem Computer vorgesehen, der sowohl mit Befehlen mit langer Wortlänge als auch mit Befehlen mit kurzer Wortlänge arbeitet, um mit dem Ausführungsergebnis eines Befehls mit langer Wortlänge jeden beliebigen späteren Befehl zu beeinflussen oder um einem Befehl mit langer Wortlänge zu ermöglichen, eine Anzahl von Nulloperationsbefehlen, die dem nächsten Befehl folgen, zu bestimmen. Oder wird der Befehl mit langer Wortlänge dazu verwendet, ein erstes Feld zur Übertragung von Daten von dem Speicher oder dem Cache-Speicher ins Register und ein zweites Feld zur Übertragung von Daten vom Speicher in den Cache-Speicher zur Verfügung zu stellen. Diese Einrichtungen werden bei einem VLIW-Computer verwendet, der lediglich mit Befehlen mit langer Wortlänge arbeitet.
- Wie oben erwähnt wurde, verwendet diese Ausführung einen Vierwortbefehl zur Bestimmung von sieben Operationen mit vier Wörtern. Die Ermittlung eines Prioritätskonflikts wird durch 4 · 4 = 16 Komparatoren durchgeführt. Um einen Prioritätskonflikt unter Vierwortbefehlen durch Verwendung von Hardware zu ermitteln ist es erforderlich, sechs Schreibregister für Operationen mit der Ausnahme von einer Verzweigungsoperation des vorhergehenden Zyklus und sechs Schreibregister für Operationen des vor dem vorhergehenden Zyklus laufenden Zyklus und zur Ermittlung eines Prioritätskonflikts unter zwölf Leseregistern des laufenden Zyklus vorzusehen. Es sind daher insgesamt (6 + 6) · 12 = 144 Komparatoren erforderlich. Andererseits hat diese Ausführung den Vorteil, daß sie nur 16/144 der Hardware braucht.
- Gemäß dieser Ausführung kennzeichnet ein Befehl mit kurzer Wortlänge, der in einem Maschinenzyklus ausgeführt wird, zwei Operationen, während ein Vierwortbefehl sieben Operationen kennzeichnet. Die Schaltung zur Ermittlung eines Prioritätskonflikts für zwei Operationen führt parallel maximal sieben Operationen aus.
- Durch die Erfindung wird die Anzahl der parallel auszuführenden Operationen und somit die Leistung erhöht.
- Ein anderer Effekt der Erfindung ist die Verringerung der Codegröße. Daraus resultiert eine Erhöhung der Trefferquote des Code-Cache-Speichers, wodurch die Leistung erhöht wird. Ein anderer Effekt der Erfindung ist die Vereinfachung der Ermittlung eines Prioritätskonflikts unter den parallel auszuführenden Operationen mittels Hardware. Dieser Effekt trägt zur Verkürzung des Maschinenzyklus, zur Verringerung des Hardwareumfangs und zur Kostenreduzierung bei. Dieser Effekt wirkt sich insbesondere bei einer großen Anzahl von Operationen aus, die durch einen langen Befehl bestimmt werden.
- Ein anderer Effekt dieser Erfindung ist die Vereinfachung der Ermittlung eines Prioritätskonflikts oder der Warteschlangenbildung zwischen den Befehlen, die vor dem laufenden Zyklus ausgeführt werden, und dem Befehl, der im laufenden Zyklus ausgeführt wird. Dieser Effekt trägt wesentlich zur Verkürzung des Maschinenzyklus, zur Verringerung des Hardwareumfangs und zur Kostenreduzierung bei.
- Ein anderer Effekt dieser Erfindung besteht in der wesentlichen Erhöhung der Anzahl der Register durch Verwendung von Software sowie in der Optimierung der Software, um die Anzahl der parallel auszuführenden Operationen zu vergrößern, wodurch die Leistung erhöht wird.
- Ein anderer Effekt der Erfindung liegt darin, daß sie die Aufwärtskompatibilität mit dem üblichen Aufbau aufrechterhält.
Claims (15)
1. Computer, der aufweist:
Register (FR0 bis FR31, R0 bis R31);
einen Speicher (1200)
einen Programmzähler (3500);
ein parallelarbeitendes Mittel zum Lesen eines oder
mehrerer Befehle aus dem Speicher (1200), die vom
Programmzähler (3500) gekennzeichnet sind, und zum
Ausführen einer Operation, die bezüglich der Register
(FR0 bis FR31, R0 bis R31), des Speichers (1200) und
des Programmzählers (3500) durch den Befehl
gekennzeichnet ist;
Mittel (150) zur Ermittlung der Befehlswortlänge zum
Ermitteln, ob der vom Programmzähler (3500)
gekennzeichnete Befehl ein Befehl mit einer langen Wortlänge
zum Kennzeichnen mehrerer Operationen, oder ein Befehl
mit einer kurzen Wortlänge ist;
Prioritätskonflikt-Ermittlungs-Mittel (109) zur
Ermittlung eines Prioritätskonflikts unter Befehlen, die
eine kurze Wortlänge aufweisen, nur wenn diese Befehle
durch die Mittel (150) zur Ermittlung der
Befehlswortlänge als Befehle mit einer kurzen Wortlänge
gekennzeichnet sind.
2. Computer nach Anspruch 1, dadurch gekennzeichnet, daß
Bedienungsmittel (160) vorgesehen sind, zum Ausführen
einer vorgegebenen Anzahl von Befehlen mit einer
kurzen Wortlänge in einem Maschinenzyklus gemäß dem
Inhalt der Prioritätskonflikt-Ermittlungs-Mittel
(109), wenn der Befehl als ein Befehl mit einer kurzen
Wortlänge erkannt wird, oder zum Ausführen einer
vorgegebenen Anzahl von Befehlen mit einer langen
Wortlänge in einem Maschinenzyklus, wenn der Befehl als
ein Befehl mit einer langen Wortlänge erkannt wird.
3. Computer nach Anspruch 1 oder 2, dadurch
gekennzeichnet, daß Befehlsauswahlmittel (110) vorgesehen sind,
zum Einschreiben des Befehls in das Register (3503,
3504, 3505, 3506), wenn der vom Programmzähler (3500)
gekennzeichnete Befehl als ein Befehl mit einer langen
Wortlänge erkannt wird, und zum Einschreiben des
Befehls in ein vorgegebenes Register, wenn der vom
Programmzähler gekennzeichnete Befehl als ein Befehl mit
einer kurzen Wortlänge erkannt wird und wenn vom
Ermittlungsmittel kein Prioritätskonflikt ermittelt
wird.
4. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß wenn die Anzahl der parallel
auszuführenden Operationen groß ist, der Befehl ein Befehl mit
einer langen Wortlänge ist und wenn die Anzahl der
parallel auszuführenden Operationen klein ist, der
Befehl ein Befehl mit einer kurzen Wortlänge ist.
5. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß zum Umschalten zwischen einem Befehl mit
einer langen Wortlänge und einem Befehl mit einer
kurzen Wortlänge ein Kompilierer (Übersetzungsprogramm)
verwendet wird.
6. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß die im Befehl mit einer langen Wortlänge
bestimmte Anzahl der Operationen größer ist als die
Anzahl der Befehle mit einer kurzen Wortlänge, die in
einem Maschinenzyklus verarbeitet werden.
7. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß mittels eines Kompilierers eine
Befehlsfolge erzeugt wird, derart, daß ein Konflikt
zwischen dem aktuellen Befehl mit einer langen Wortlänge
und dem vorhergehenden Befehl mit einer langen
Wortlänge verhindert wird, wobei die Verarbeitung auf
Grund des Ausgangs des Kompilierers durchgeführt wird.
8. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß zwischen den auszuführehden Befehl mit
einer langen Wortlänge und den auszuführenden Befehl
mit einer kurzen Wortlänge eine vorgegebene Anzahl von
Nicht-Operations-Befehlen eingefügt wird, wenn der
auszuführende Befehl mit einer langen Wortlänge nach
dem auszuführenden Befehl mit einer kurzen Wortlänge
ausgeführt wird und wenn der auszuführende Befehl mit
einer kurzen Wortlänge nach dem auszuführenden Befehl
mit einer langen Wortlänge ausgeführt wird.
9, Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß der Befehl mit einer langen Wortlänge
eine Funktion ausübt, die eine Anzahl der Nicht-
Operations-Befehle bestimmt, die dem nächsten Befehl
folgen.
10. Computer nach Anspruch 1, 2 oder 3, dadurch
gekennzeichnet, daß das ausgeführte Ergebnis des Befehls mit
einer langen Wortlänge auf einen Befehl übertragen
wird, der auf irgendeiner nachfolgenden Position steht
oder irgendeiner nachfolgenden Position nachfolgt.
11. Computer nach Anspruch 10, dadurch gekennzeichnet, daß
wenn angenommen wird, daß N die vorgegebene Anzahl der
Befehle bedeutet; die bis zu dem Befehl eingefügt
wurden, auf den das ausgeführte Ergebnis übertragen
wurde, und M die Anzahl von Pipelinestufen bedeutet, das
Verhältnis N > M realisiert wird.
12. Computer nach Anspruch 10, dadurch gekennzeichnet, daß
Speichermittel zum Speichern des vorhergehenden
Inhalts der Register (FR0 bis FR31, R0 bis R31) für
einen konstanten Zyklus vorgesehen sind.
13. Computer nach einem der Ansprüche 1 bis 12, dadurch
gekennzeichnet, daß Mittel (160) vorgesehen sind, zum
Ausführen einer Anzahl von Befehlen in einem
Maschinenzyklus, wenn der Befehl als ein Befehl mit einer
kurzen Wortlänge erkannt wird, oder zum Ausführen
eines Befehls in einem Maschinenzyklus, wenn der Befehl
als ein Befehl mit einer langen Wortlänge erkannt
wird.
14. Computer nach einem der Ansprüche 1 bis 13, dadurch
gekennzeichnet, daß Mittel (160) vorgesehen sind, zum
Ausführen eines Befehls in einem Maschinenzyklus, wenn
der Befehl als ein Befehl mit einer langen Wortlänge
erkannt wird, oder zum Ausführen einer Anzahl der
Befehle nach dem Lösen des Prioritätskonflikts, wenn der
Befehl als ein Befehl mit einer kurzen Wortlänge
erkannt wird, oder zum Ausführen einer Anzahl von
Befeh
len, wenn der Befehl als ein Befehl mit einer kurzen
Wortlänge erkannt wird und vom Prioritätskonflikt-
Ermittlungs-Mittels (109) ein Konflikt ermittelt wird.
15. Computer nach einem der Ansprüche 1 bis 13, dadurch
gekennzeichnet, daß der von der parallel ausführenden
Funktion gelesene Befehl
ein erstes Feld zum Anzeigen einer Datenübertragung
aus dem Speicher (1200) oder dem Cache-Speicher (1300)
in das Register; und
ein zweites Feld zum Anzeigen einer Datenübertragung
aus dem Speicher (1200) in den Cache-Speicher
aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2992 | 1992-01-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69325826D1 DE69325826D1 (de) | 1999-09-09 |
DE69325826T2 true DE69325826T2 (de) | 2000-02-24 |
Family
ID=11462943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69325826T Expired - Fee Related DE69325826T2 (de) | 1992-01-06 | 1993-01-05 | Rechner mit einer Parallelverarbeitungsfähigkeit |
Country Status (4)
Country | Link |
---|---|
US (1) | US5680637A (de) |
EP (2) | EP0855647A1 (de) |
KR (2) | KR100259738B1 (de) |
DE (1) | DE69325826T2 (de) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0741356A1 (de) * | 1995-05-05 | 1996-11-06 | Rockwell International Corporation | Cachearchitektur mit einer Datenvorladeeinheit |
US5966514A (en) * | 1995-05-31 | 1999-10-12 | Matsushita Electric Industrial Co., Ltd. | Microprocessor for supporting reduction of program codes in size |
US5774737A (en) * | 1995-10-13 | 1998-06-30 | Matsushita Electric Industrial Co., Ltd. | Variable word length very long instruction word instruction processor with word length register or instruction number register |
JP3717212B2 (ja) | 1995-10-27 | 2005-11-16 | 株式会社日立製作所 | 情報処理装置及び情報処理ユニット |
JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
JP2806359B2 (ja) * | 1996-04-30 | 1998-09-30 | 日本電気株式会社 | 命令処理方法及び命令処理装置 |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
JP3790607B2 (ja) | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
EP1050809A1 (de) | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Befehlsabhängigkeit in einem Rechner |
EP1050798A1 (de) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Decodierung von Adressbefehlen |
DE69938621D1 (de) | 1999-05-03 | 2008-06-12 | St Microelectronics Sa | Befehlausgabe in einem Rechner |
US7263567B1 (en) | 2000-09-25 | 2007-08-28 | Intel Corporation | Method and apparatus for lowering the die temperature of a microprocessor and maintaining the temperature below the die burn out |
JP4542722B2 (ja) * | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
US7076636B1 (en) * | 2001-10-05 | 2006-07-11 | Emc Corporation | Data storage system having an improved memory circuit board configured to run scripts |
TWI580674B (zh) | 2012-02-29 | 2017-05-01 | Meiji Seika Pharma Co Ltd | Contains novel biosilide derivatives for pest control |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US5136691A (en) * | 1988-01-20 | 1992-08-04 | Advanced Micro Devices, Inc. | Methods and apparatus for caching interlock variables in an integrated cache memory |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
JPH0452741A (ja) * | 1990-06-14 | 1992-02-20 | Toshiba Corp | キャッシュメモリ装置 |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
-
1993
- 1993-01-05 EP EP98103921A patent/EP0855647A1/de not_active Withdrawn
- 1993-01-05 EP EP93100067A patent/EP0551090B1/de not_active Expired - Lifetime
- 1993-01-05 DE DE69325826T patent/DE69325826T2/de not_active Expired - Fee Related
- 1993-01-06 KR KR1019930000074A patent/KR100259738B1/ko not_active IP Right Cessation
-
1996
- 1996-02-13 US US08/599,856 patent/US5680637A/en not_active Expired - Lifetime
-
1997
- 1997-12-30 KR KR1019970078359A patent/KR100277386B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR100277386B1 (ko) | 2001-01-15 |
EP0551090A3 (en) | 1994-09-07 |
KR930016896A (ko) | 1993-08-30 |
US5680637A (en) | 1997-10-21 |
EP0551090B1 (de) | 1999-08-04 |
EP0551090A2 (de) | 1993-07-14 |
DE69325826D1 (de) | 1999-09-09 |
EP0855647A1 (de) | 1998-07-29 |
KR100259738B1 (ko) | 2000-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69325826T2 (de) | Rechner mit einer Parallelverarbeitungsfähigkeit | |
DE68928340T2 (de) | Fliessband-Datenprozessor | |
DE69311330T2 (de) | Befehlsablauffolgeplanung von einem risc-superskalarprozessor | |
DE69329778T2 (de) | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69904189T2 (de) | Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE69024068T2 (de) | Verfahren und Datenverarbeitungseinheit zur Pipeline- Verarbeitung von Register- und Registeränderungs- Spezifizierern in dem gleichen Befehl | |
DE68927855T2 (de) | Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor | |
DE69724771T2 (de) | Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE69227604T2 (de) | Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum | |
DE3750625T2 (de) | Datenverarbeitungssystem mit zwei Ausführungseinheiten. | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69230057T2 (de) | Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE69327637T2 (de) | Superskalar-Computersystem | |
DE4206062C2 (de) | Pipelineverarbeitung von Instruktionen | |
DE69132675T2 (de) | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter | |
DE69017178T2 (de) | Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung. | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE69736105T2 (de) | Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |