[go: up one dir, main page]

DE2234867A1 - Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme - Google Patents

Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme

Info

Publication number
DE2234867A1
DE2234867A1 DE2234867A DE2234867A DE2234867A1 DE 2234867 A1 DE2234867 A1 DE 2234867A1 DE 2234867 A DE2234867 A DE 2234867A DE 2234867 A DE2234867 A DE 2234867A DE 2234867 A1 DE2234867 A1 DE 2234867A1
Authority
DE
Germany
Prior art keywords
command
register
instruction
commands
blocking
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.)
Granted
Application number
DE2234867A
Other languages
English (en)
Other versions
DE2234867C2 (de
Inventor
Jun John Wenard Fennel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2234867A1 publication Critical patent/DE2234867A1/de
Application granted granted Critical
Publication of DE2234867C2 publication Critical patent/DE2234867C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Description

Aktenzeichen der Anmeld.: Docket WA 970 006
Anordnung in Datenverarbeitungsanlagen zum Steuern der Verarbeitung zweier voneinander unabhängiger Programme
Die Erfindung betrifft eine Anordnung in Datenverarbeitungsanlagen zum Steuern der Verarbeitung zweier voneinander unabhängiger Programme bei Datenverarbeitungsanlagen hoher Leistung. Bei solchen Anlagen sind viele spezielle Verfahren entwickelt worden, um die Verarbeitungsgeschwindigkeit von Befehlen zu erhöhen. Dazu hat man beispielsweise versucht, die Systernärchitektur zu optimalisieren. Ein Datenverarbeitungssystem dieser Art ist beispielsweise in der US-Patentschrift 3 400 371 dargestellt.
Ein anderer Weg, der in vielen fortschrittlichen Datenverarbeitungsanlagen beschritten wurde, besteht darin, die Speicherfunktion zwischen einem langsam arbeitenden Speicher hoher Kapazität und einem sehr schnell arbeitenden Speicher geringerer Kapazität aufzuteilen. Die Datenverarbeitungsanlage verarbeitet dabei normalerweise die in dem sehr schnell arbeitenden Speicher geringer Kapazität eingespeicherten Befehle, wo-
WA 970 006
309810/0630
durch die Verarbeitungsgeschwindigkeit für diese Befehle beträchtlich erhöht wird, da sich die benötigten Befehle sehr viel schneller aus dem Speicher entnehmen lassen, als in dem in der oben genannten Patentschrift beschriebenen System.
Andere Systeme sind über das oben beschriebene System mit zwei oder mehreren Speicherbereichen hinausgegangen und man hat Datenverarbeitungsanlagen entwickelt, die man allgemein als "Pipeline"-Zentraleinheiten bezeichnet. Diese Zentraleinheiten bearbeiten im allgemeinen die in dem sehr schnell arbeitenden Speicher geringer Kapazität eingespeicherten Informationen in der Weise, daß zu jedem gegebenen Zeitpunkt tatsächlich mehr als ein Befehl verarbeitet wird. In einer solchen Maschine kann beispielsweise ein Befehl innerhalb eines vorgegebenen Maschinenzyklus zum gleichen Zeitpunkt beendet sein in dem ein anderer Befehl noch nicht vollständig durchgeführt ist. Systeme dieser Art stellen dabei mit ihrer Arbeitsweise sicher, daß die Datenverarbeitungsanlage einen wesentlich höheren Wirkungsgrad erreicht, wenn innerhalb der Datenverarbeitungsanlage gleichzeitig mehr als ein Befehl einer vorgegebenen Befehlsfolge verarbeitet werden kann.
Obgleich sogenannte "Pipeline"-Datenverarbeitungseinheiten im Vergleich mit anderen Zentraleinheiten einen sehr hohen Wirkungsgrad haben, tritt doch bei diesen Pipeline-Datenverarbeitungseinheiten ein ihnen eigenes besonderes Problem auf, das die maximale Ausnutzung dieser Pipeline-Datenvetarbeitungseinheit nur mit Schwierigkeiten erzielen läßt. Es wurde beispielsweise festgestellt, daß eine solche Zentraleinheit, die gerade den Befehl einer einzigen Befehlsfolge verarbeitet, ihre Möglichkeiten zur Befehlsverarbeitung nicht vollständig ausnützt, wenn der schnell arbeitende Pufferspeicher von Zeit zu Zeit vom Hauptspeicher her auf den letzten Stand gebracht werden muß. Während dieser Zeitabschnitte hat die Verarbeitungseinheit nichts zu tun und v/artet auf den Befehl, der in den schnell
WA 970 006 309 8 10/063 0
arbeitenden Pufferspeicher eingespeichert werden soll. Außerdem treten dann in einer einzigen Befehlsfolge noch weitere Verarbeitungsengpässe auf, die zwangsläufig zur Folge haben, daß die Pipeline-Datenverarbeitungseinheit einen geringeren Wirkungsgrad aufweist als theoretisch möglich wäre. Beispielsweise bewirken verschiedene Verzweigungen oder Programmabhängigkeiten eine Unterbrechung in der Befehlsfolge und es mag nötig sein, einen Zielbefehl abzurufen. In solchen Situationen ist es nicht möglich, die Pipeline-Datenverarbeitungseinheit mit ihrer vollen Kapazität zu betreiben.
Im Hinblick auf das soeben für eine Datenverarbeitungseinheit dieser Art dargelegte Problem ist es im wesentlichen Aufgabe der Erfindung, eine Pipeline-Datenverarbeitungseinheit aufzubauen, die einen wesentlich höheren Wirkungsgrad aufweist, ohne dabei die Kosten der eigentlichen Maschine zu erhöhen. Vorzugsweise soll dabei die Pipeline-Datenverarbeitungseinheit so aufgebaut sein, daß sie zwei Befehlsfolgen oder Programme gleichzeitig verarbeiten kann, ohne daß sich eine merkliche Erhöhung der Kosten ergibt.
Diese der Erfindung zugrunde liegende Aufgabe wird durch eine neuartige Auswahlschaltung erreicht, mit deren Hilfe es möglich ist, Befehle aus zwei vollständig voneinander unabhängigen Befehlsfolgen zur Verarbeitung auszuwählen. Das Auswahlverfahren erfordert eine Analyse des in den voneinander unabhängigen Befehlsfolgen enthaltenen Befehls. Diese Analyse wird durchgeführt um zu bestimmen, ob die eine oder die andere Befehlsfolge gerade warten muß, bevor sie in der Datenverarbeitungseinheit verarbeitet werden kann, weil eine bestimmte Programmabhängigkeit gegeben ist oder weil ein vorhergehender Befehl in der gleichen Befehlsfolge Daten aus dem Hauptspeicher nach dem Pufferspeicher abgerufen hat, die noch nicht vollständig übertragen sind. Wenn eine der Befehlsfolgen im nächsten Zyklus in der Pipeline-Befehlseinheit nicht verarbeitet werden kann,
wa 970 ooc 3 0 9 810/ 06 3 0
dann werden die Befehle der anderen Befehlsfolgen in die Pipeline-Schaltung für nachfolgende Verarbeitung durchgelassen. Sollte es vorkommen, daß beide Befehlsfolgen "hängen", wird kein Befehl nach der Pipeline-Schaltung der Befehlseinheit durchgelassen und jede weitere Durchschaltung von Befehlen wird solange verzögert, bis die verschiedenen benötigten Verarbeitungsstufen für die eine oder die andere Befehlsfolge wieder zur Verfügung stehen. In vielen Fällen werden die beiden Befehlsfolgen für Programmabhängigkeiten frei sein, so daß ein Befehl von der einen oder der anderen Folge in die Pipeline-Verarbeitungseinheit durchgelassen werden könnte. Unter diesen Umständen erfordert der Auswahlalgorithmus, daß die Befehle von den beiden unabhängigen Befehlsfolgen geändert werden. Diese hier allgemein definierte Lösung wird in der erfindungsgemäßen Ausgestaltung in der Weise erreicht, durch Torschaltungen zur gesteuerten übertragung von Befehlen aus jeder beiden Befehlsfolgen nach einem Befehlsregister sowie durch mit dem I-Register verbundene Prüfschaltungen, die feststellen, ob die Zentraleinheit die im I-Register eingespeicherten Befehle verarbeiten kann, ferner durch mit dem I-Register verbundene Speichermittel und Blockierprüfschaltungen zur Bestimmung derjenigen Befehlsfolge, der der gerade im I-Register befindliche Befehl entnommen wurde, sowie durch einen auf die Blockierschaltungen und Speichermittel ansprechenden Signalgenerator, der die Eingangssteuersignale für die Torschaltungen liefert.
Vorzugsweise ist die Anordnung dabei so getroffen, daß das I-Register mit der Zentraleinheit in der Weise verbunden ist, daß die Verarbeitung des Befehls gleichzeitig mit der Blockierprüfung erfolgt und bei entsprechendem Prüfergebnis die Verarbeitung des gerade im I-Register liegenden Befehls zumindest zeitweilig gesperrt wird, wobei zur gemeinsamen Benutzung einer Zentraleinheit für Instruktionen zweier voneinander unabhängiger Befehlsfolgen zwei Befehls-Pufferspeicher vorge-
WA 970 006 309810/0630
sehen sind, die an jeweils einen Eingang der. Torschaltungen über Eingangsleitungen angeschlossen sind und wobei die mit dem I-Register verbundenen Torschaltungen an ihrem zweiten Eingang derart durch ein Steuersignal steuerbar sind, daß jeweils nur ein Befehlspufferspeicher Daten an das I-Register abgeben kann.
Vorteilhafterweise läuft das dabei benutzte Verfahren wie folgt ab:
1. Auswählen eines Befehls aus einer der beiden Befehlsfolgen;
2. Durchführen der Blockierprüfung für den ausgewählten Befehl, um festzustellen, ob diese durchführbar ist;
3. Verarbeiten des ausgewählten Befehls, während die Blockierprüfung gleichzeitig abläuft;
4. Sperren der weiteren Durchführung des ausgewählten Befehls, wenn eine Blockierbedingung festgestellt wird;
5. Verhindern der weiteren Auswahl von Befehlen aus der Befehlsfolge, bei der eine Blockierbedingung festgestellt wurde, solange diess Blockierbedingung besteht;
6. Abwechselnde Auswahl der Befehle aus den Befehlsfolgen, wenn keine Blockierbedingungen festgestellt werden.
Die Erfindung wird nunmehr anhand des Ausführungsbeispiels in Verbindung mit den beigefügten Zeichnungen näher beschrieben, dabei zeigt
Fig.l eine schematische Darstellung der vorliegenden Erfindung; .
Fig.2 Einzelheiten der Erfindung in einem Blockdiagramm;
Fig.3 ,Einzelheiten eines. Teils der Erfindung;
970 006 309810/0630
Fig.4 zusätzliche in Fig.3 noch nicht dargestellte logische Schaltungen eines anderen Teils der Erfindung;
Fig.5 eine Tabelle, die anzeigt, unter welcher Bedingung Befehle einer gegebenen Befehlsfolge im nächstfolgenden Zyklus nach dem I-Register durchgelassen werden und
Fig.6 die Taktimpulse für die verschiedenen in der Schaltung nach Fig.3 verwendeten Torschaltungen.
Wie bereits erwähnt, betrifft die Erfindung eine neuartige Anordnung, mit deren Hilfe eine Pipeline-Datenverarbeitungseinheit für Befehle aus zwei verschiedenen Befehlsfolgen zur Verfugung steht, wobei Verarbeitungsgeschwindigkeiten erzielt werden, die etwa doppelt so hoch sind als sie mit einer einzigen Pipeline-Datenverarbeitungseinheit erzielt werden könnten, die nur Befehle aus einer einzigen Befehlsfolge verarbeitet. Aus Fig.l erkennt man den Speicher 10, der mit der Znetraleinheit 12 verbunden ist. Der Speicher 10 kann von beliebiger Bauart sein, d.h. entweder ein Kernspeicher oder ein aus integrierten Halbleiterschaltungen bestehender Speicher. Die Zentraleinheit 12 ist eine Pipeline-Verarbeitungseinheit, die im vorliegenden Fall nicht näher besprochen werden soll, da diese Art von Zentraleinheiten vielfältig im Stand der Technik beschrieben worden sind.
Beispielsweise ist ein solches Pipeline-System in einem Aufsatz mit dem Titel "Schaltungsaufbau für schnell arbeitende Pipeline-Systeme" durch L.W.Cotten beschrieben, der in den Proceedings der Fall Joint Computer Conference, 1965, auf Seite 489 ff. veröffentlicht wurde. Ein anderer Aufsatz, der sich mit solchen Pipeline-Systemen befaßt, is't in einer Ab-
WA 970 006 309810/0630 BAD ORIGINAL
handlung mit dem Titel "Das IBM System 360 Modell 91, Gleit, Verarbeitungseinheit" beschrieben, der im Januar 1967 im IBM Journal of Research and Development, Band 11, Nr.1 auf Seite 34 zu finden ist.
In Fig.l ist die Zentraleinheit 12 über eine Datenleitung 18 mit zwei Befehlspufferspeichern 14 und 16 verbunden. Die Zentraleinheit 12 enthält Adressierschaltungen, mit deren Hilfe Befehle aus zwei verschiedenen Befehlsfolgen vom Speicher 10 über die Datenleitung 11 und Operanden für die Zentraleinheit 12 über die Datenleitung 11 abgerufen werden können. Die Zentraleinheit 12 ruft Befehle für die beiden verschiedenen Befehlsfolgen vom Speicher ab. Diese Befehle gelangen über die Datenleitung 18 an die Pufferspeicher 14 und 16. Die Zentraleinheit 12 läßt die Befehle in der Weise an die Datenleitung 18 durch, daß der Pufferspeicher 14 nur Befehle der einen Befehlsfolge und der Pufferspeicher 16 nur Befehle einer zweiten Befehlsfolge enthält. Jeder der Befehlspufferspeicher 14 und 16 liefert seine Befehle an andere Schaltungen innerhalb der Zentraleinheit 12 über unabhängige Datenleitungen. Beispielsweise ist der Pufferspeicher 14 mit der Zentraleinheit 12 über die Dätenleitung 20 verbunden, während der Befehlspufferspeicher 16 über die Datenleitung mit der Zentraleinheit 12 verbunden ist. Die Zentraleinheit 12 enthält außerdem spezielle Schaltungen, die sie veranlaßt, einen in dem einen Befehlspufferspeicher 14 oder in dem Be-■ fehlspufferspeicher 16 eingespeicherten Befehl im nächsten Verarbeitungszyklus zu verarbeiten. Diese-Auswahlschaltung innerhalb der Zentraleinheit stellt den eigentlichen Kern der Erfindung dar.
Diese Schaltungen werden in Fig.2 näher erläutert. Die Befehlsfolge A erreicht den Befehlspufferspeicher 28 über die Datenleitung 24 und die Befehlsfolge B erreicht den Befehlspufferspeicher 30 über die Datenleitung 26. Es ist nicht notwendig,
WA 970 OO6 309810/0630
daß die Befehlsfolgen das in Fig.2 gezeigte I-Register 36 über zwei getrennte Datenleitungen erreichen, da eine einzige Datenleitung gemeinsam von beiden Befehlsfolgen benutzt werden könnte. Die Darstellung, bei der die Daten in zwei unabhängigen Befehlsfolgen ankommen, wurde hier gewählt, um besonders darzulegen, daß die in der Verarbeitungsanlage zu verarbeitenden Befehle tatsächlich von zwei vollständig voneinander unabhängigen Befehlsfolgen stammen. Es muß weiter darauf hingewiesen werden, daß der Ursprung dieser unabhängigen Befehlsfolgen tatsächlich keine Funktion der vorliegenden Erfindung ist, obgleich ein getrennter Speicher an jede der Eingangsleitungen 24 und 26 angeschlossen sein kann. Jeder dieser Speicher würde durch normale Befehlsadressierschaltungen adressierbar sein, wie sie heute üblicherweise in Datenverarbeitungsanlagen benutzt werden und wären so ausgelegt, daß Befehle innerhalb unabhängiger Befehlsfolgen abgerufen werden könnten. Wenn dann die Befehle auf voneinander unabhängigen oder auf einer gemeinsamen Datenleitung zur Verfügung stehen, dann würden die Befehle nach den Befehlspufferspeichern 28 oder 30 durchgelassen.
Der Befehlspufferspeicher 28 dient lediglich der zeitweiligen Speicherung der Befehle einer Befehlsfolge A. Diese Bezeichnung ist rein willkürlich und dient lediglich der Klarstellung der Unterschiede zwischen den beiden Befehlsfolgen. Die im Befehlspufferspeicher 30 eingespeicherten Informationen sind die der Befehlsfolge B. Der Befehlspufferspeicher 28 entspricht dabei dem Pufferspeicher 14 (Fig.l), während Befehlspufferspeicher 30 dem Befehlspufferspeicher 16 in Fig.l entspricht. Jeder Befehlspufferspeicher 28 und 30 ist ein üblicher elektronischer Pufferspeicher oder ein Register, in dem Daten gespeichert werden können.
Der Befehlspufferspeicher 28 ist mit dem Registerbereich der Zentraleinheit über die Datenleitung 32 verbunden, während der
970 006 309810/0630
Befehlspufferspeicher 30 mit dem Registerbereich der Zentraleinheit über die Datenleitung 34 verbunden ist. Die Datenleitungen 32 und 34 gehen direkt nach dem I-Register 36. Das I-Register 36 erhält auch Statusinformationen aus der Zentraleinheit für die Befehlsfolge A auf der Datenleitung 38 und für die Befehlsfolge B auf der Datenleitung 40. Die folgenden mögen als Beispiele für Statusinformation, wie sie für jede Befehlsfolge benötigt wird, dienen. X-FeId gültig, Null, oder nicht benötigt; B-Feld gültig. Null, oder nicht benötigty Adressenregister für Einzelentnahme frei oder nicht benötigt? Adressenregister steht zur Verfügung für Speicherung oder für I-Einheit-Befehl oder für I-Einheit-Abruf oder wird nicht benötigt; EIN-Wort-Operand Pufferspeicher ist verfügbar oder wird nicht benötigt; Zwei-Wort-Operandenspeicher ist verfügbar oder wird nicht benötigt; Allzweckregister Lese-Priorität verfügbar oder nicht benötigt; Warteregister verfügbar, wenn keine Verzweigung verarbeitet wird bei Verzweigungsbefehl; vollständiger Befehl im I-Register; keine Blockier-Bedingung für das Programm.
Das Befehlsregister oder Instruktionsregister 36, kurz I-Register, enthält tatsächlich mehr als ein Register, da es auch noch bestimmte Funktionen ausführt und sollte eigentlich besser als Funktionsregister bezeichnet werden. Das I-Register 36 speichert nicht nur temporär die Befehle, die von den Befehlspufferspeichern kommen, sondern bestimmt auch, welcher der von den Befehlspufferspeichern kommenden Befehle vorübergehend in dem temporären Speicherbereich des I-Registers 36 eingespeichert werden soll, da immer zwei Befehle gleichzeitig über die Datenleitungen 32 und 34 an dem I-Register anliegen.
An dem I-Register 36 sind eine Anzahl von Schaltungsstufen angeschlossen, die innerhalb der gestrichelten· Linie 42 untergebracht sind. Diese Stufen sind in der gleichzeitig eingereichten Patentanmeldung mit dem Titel "Vorrichtung und Ver-
WA 970 006 309 810/06 30
fahren zur Seriendarstellung von Befehlen aus zwei unabhängigen Befehlsfolgeh" beschrieben, die ebenfalls von der Anmelderin der vorliegenden Anmeldung eingereicht wurde und das interne Aktenzeichen WA 971 002 trägt.
Die Schaltung des I-Registers 36 von Fig.2 ist im einzelnen in den Fign.3-6 dargestellt. Die vom Befehlspufferspeicher kommenden Daten der Befehlsfolge oder des Programms A liegen auf der Datenleitung 44. Die Datenleitung 44 (Fig.3) entspricht dabei der Datenleitung 32 (Fig.2). Die Eingangsdaten für das Programm B kommen vom Befehlspufferspeicher über die Datenleitung 46 an, die der Datenleitung 34 in Fig.2 entspricht. Die Datenleitung 44 liegt an einer Eingangsklemme einer Torschaltung 48, während die Datenleitung 46 an einer Eingangsklemme der Torschaltung 50 angeschlossen ist. Die Torschaltungen 48 und 50 stellen tatsächlich zwei mit zwei Eingängen versehene UND-Schaltungen dar, die mit den Eingangsleitungen für die entsprechenden Eingangsdaten verbunden sind. Der zweite Eingang der UND-Schaltung in der Torschaltung 48 ist an der Leitung 52 angeschlossen, die ein Signal ,führt, das die Durchschaltung der in den Befehlen des Programms A enthaltenen Daten nach dem !-Register bewirkt. Der zweite Eingang der UND-Schaltung in der Torschaltung 50 ist mit der Leitung 54 verbunden, die ein Signal führt, das die Durchschaltung der Daten vom Befehlspufferspeicher für das Programm B ermöglicht. Die auf den Leitungen 52 und 54 liegenden Signale sind sich gegenseitig ausschließende Signale, so daß jeweils nur ein in den beiden Befehlspufferspeichern enthaltener Befehl durch die Torschaltungen 48 oder 50 nach der Datenleitung 56 durchgelassen werden kann. Die Datenleitung 56 bildet die Eingangsleitung für das I-Register 58, das ein echtes Register für die zeitweilige Speicherung eines entweder aus der Datenfolge A oder aus der Datenfolge B stammenden Befehls ist. Der Einfachheit halber ist an dem I-Register 58 in Fig.3 keine Ausgangsleitung vorgesehen, die als über die Leitung 41 (Fig.2)
WA 970 006 3 0 9 810/0630
-limit den innerhalb der gestrichelten Linie 42 (Fig.2) eingezeichneten Schaltungen verbunden gedacht werden kann.
Es sei angenommen^ daß ein Befehl aus dem Programm A nach dem I-Register hindurchgelassen wurde. Die Arbeitsweise des I-Registers wird für diesen Fall beschrieben und die verschiedenen Verblockungen mit den übrigen Teilen der Pipeline-Zentraleinheit werden besprochen. Ferner wird der Algorithmus, der bestimmt, welcher Befehl während des nächstfolgenden Torzyklus nach dem I-Register 58 durchgelassen wird, im Zusammenhang mit einem Befehl aus der Befehlsfolge A, die ursprünglich im I-Register 58 eingespeichert ist, besprochen.
Die Funktion der in Fig.3 und 4 dargestellten Schaltung besteht darin, einen Befehl einer der beiden Datenfolgen zu entnehmen und mit der Verarbeitung dieses Befehls zu beginnen. Der Beginn der Verarbeitung erfordert verschiedene Berechnungen und Überprüfungen der Verfügbarkeit der verschiedenen Einrichtungen innerhalb der Pipeline-Zentraleinheit. Beispielsweise gibt es verschiedene Arten von.Befehlen, die in der Pipeline nicht verarbeitet werden können,während andere Befehle gerade verarbeitet werden. Wenn beispielsweise ein Verzweigungsbefehl für eine Befehlsfolge in der Pipeline verarbeitet wird, kann ein zweiter Verzweigungsbefehl derselben Befehlsfolge nicht verarbeitet werden, bis der erste Verzweigungsbefehl verarbeitet ist, da der zweite Verzweigungsbefehl tatsächlich in einem falschen Zweig des ersten Verzweigungsbefehls liegen kann. D.h., daß beim Ausführen eines Verzweigungsbefehls eine Pipeline-Zentraleinheit normalerweise einen Programmzweig dem das Programm folgen wird, annimmt und die Befehle für diese Befehlsfolge unter der Annahme dieses Verzweigungsergebnisses verarbeitet. Wenn die Verzweigung jedoch einan anderen Weg als den angenommenen Weg nimmt, dann sind die unter dieser Annahme verarbeiteten Befehle wertlos und die Ergebnisse sollten in dem Programm nicht verwendet werden. Ein anderes Problem be-
WA 97o 006 . 3 0 9 810/0630
steht darin, daß Befehle, die bereits in der Pipeline enthalten sind, den Inhalt der Allzweckregister ändern könnten die für die nachfolgenden Befehle benötigt werden. Somit kann also ein nachfolgender Befehl solange nicht verarbeitet werden, bis die vorangegangenen Befehle tatsächlich die von dem Programmierer gewünschten Änderungen im Inhalt des Allzweckregisters durchgeführt haben. Es ist daher Aufgabe der in Fig,3 gezeigten Schaltungen, die bei solcher gegenseitigen Verblockung auftretenden Probleme zu lösen und zu bestimmen, welche Befehlsfolge wegen einer solchen Verblockung zeitweise angehalten werden muß.
Ein vom I-Register 58 kommendes Ausgangssignal liegt auf der Datenleitung 62 und entspricht einem Teil des Inhalts des I-Registers 58, das für den Operationscode innerhalb eines gegebenen Befehls bestimmt ist« Für Befehle in dem für die Systemfamilie IBM System/360 verwendeten Datenformat würden die ersten acht Datenbits des I-Registers 58 auf der Datenleitung 62 auftreten. Die Datenleitung 62 ist mit der Decodier schaltung 64 verbunden, die jedesmal dann ein Ausgangssignal liefert, wenn der Operationscode des im I-Register 58 eingespeicherten Befehls ein SS-Befehl, ein Ausführ-Befehl oder ein Mehrfachspeicher-Befehl ist. Das Ausgangssignal der Decodierschaltung 64 liegt an einem der Eingänge der UND-Schaltung 66.
Der zweite Eingang der UND-Schaltung 66 erhält ein Signal von der Leitung 60. Wenn auf der Leitung 60 ein Signal mit dem binären Wert Eins liegt, so heißt das, daß die bistabile Kippstufe 68 durch ein Signal eingestellt wurde, das einen Befehl aus dem Befehlspufferspeicher für das Programm A durchgelassen hat. Der dritte Eingang der UND-Schaltung 66 ist ein Takteingang mit der Bezeichnung "Befehlszyklus Ende"·. Dieser Taktimpuls und seine relative zeitliche Lage zu anderen Taktimpulsen ist in Fig.6 gezeigt. Das Äusgangssignal der UND-Schal-
WA 970 006 309810/0630
tung 66 wird während der Taktperiode eine Eins sein, wenn die Decodierschaltung 64 die oben genannten Befehlsarten decodiert hat und die bistabile Kippschaltung 68 eingestellt ist. Wenn die UND-Schaltung 66 ein Ausgangssignal liefert, hat dies zur Folge, daß die SS-Verriegelungsschaltung 70 für das Programm A eingestellt wird. Die Wirkung der Einstellung dieser Verriegelungsschaltung wird noch später besprochen.
In Fig.3 sind noch weitere Decodierschaltungen 72, 74 und gezeigt. Diese Decodierschaltungen sind eingangsseitig an die Datenleitung 62und an die Leitung 60 angeschlossen. Auf der Datenleitung 62 liegt der Operationscodeder im I-Register 58 enthaltenen Information und jede der Decodierschaltungen ist so aufgebaut, daß sie bestimmte Arten von Befehlen, die im I-Register 58 eingespeichert sein können, decodiert. Die Leitung 60 ist deshalb vorgesehen, damit die Decodierschaltungen 72, 74 und 76 nur dann betätigt werden, wenn ein Befehl im I-Register 58 eingespeichert ist, der zu dem Programm A gehört. D.h. also, daß die Leitung 60 ein Entsperrsignal führt, das die Decodierschaltungen 72, 74 und 76 betriebsbereit macht.
Die Decodierschaltung 72 liefert immer dann ein Ausgangssignal, wenn ein Befehl der Befehlsfolge A im I-Register 58 eingespeichert ist, deren Operations code, einem Befehl entspricht, der ein X-FeId benutzt. Dieses X-FeId ist ein besonderes Feld innerhalb eines Befehls, wie er im IBM SYstem/360 verwendet wird. Das X-FeId enthält normalerweise eine Adresse eines Allzweckregisters I, das durch den im I-Register enthaltenen Befehl benutzt werden soll. Da der Inhalt dieses Registers korrekt sein muß, muß die Pipeline-Verarbeitungseinheit abgetastet werden, um festzustellen, ob ein gerade für das Programm A verarbeiteter Befehl den Inhalt dieses Allzweckregisters verändern wird, dessen Adresse in dem X-FeId des im I-Register 58 liegenden Befehls enthalten ist. Um diesen Ver-
WA 970 006 309 810/0630
gleich durchzuführen, wird das X-PeId des im I-Register 58 liegenden Befehls der" Datenleitung 80 zugeführt, die am Eingang einer Vergleichsschaltung 82 angeschlossen ist. Der zweite Eingang der Vergleichsschaltung 82 kommt von der Zentraleinheit selbst und führt Signale, die bestimmen, welche Allzweckregister zur Speicherung durch bereits in der Pipeline befindliche Befehle benutzt werden sollen. Wenn ein bereits in der Pipeline befindlicher Befehl zum Abspeichern im gleichen Allzweckregister dient, das durch das X-FeId auf der Datenleitung 8O angezeigt ist, dann liefert die Vergleichsschaltung 82 ein Ausgangssignal, das der UND-Schaltung 86 zugeführt wird. Die Decodierschaltung 72 liefert dann ebenfalls ein Ausgangssignal, das auch an der UND-Schaltung 86 liegt und dieses Ausgangssignal tritt immer dann auf, wenn im I-Register 58 ein Befehl mit einem X-FeId eingespeichert ist. Das Ausgangssignal der UND-Schaltung 86 stellt die Verriegelungsschaltung 88 für das Programm A ein. Dies bedeutet, daß eines der Allzweckregister für den Befehl der Befehlsfolge A, wie er augenblicklich im I-Register 58 liegt, durch einen bereits in der Pipeline liegenden Befehl geändert werden wird. D.h. aber, daß der im I-Register 58 liegende Befehl gesperrt werden muß und solange nicht durchgelassen werden kann, bis die Blockierung des Allzweckregisters aufgehoben ist. Diese Sperrung eines gerade innerhalb des I-Registers 58 liegenden Befehls wird erreicht, weil die Verriegelungsschaltung 88 für das Programm A mit ihrem Ausgang an einer ODER-Schaltung 90 angeschlossen ist. Das Ausgangssignal der ODER-Schaltung 90 ist dann Null, wenn irgendeiner der Eingänge aktiv ist, was anzeigt, daß eine der Verriegelungsschaltungen, die mit dem Eingang der ODER-Schaltung 9O verbunden sind, eingestellt ist. Ein Null-Ausgangssignal der ODER-Schaltung 90 zeigt an, daß der gerade im I-Register liegende Befehl blockiert werden muß und nicht nach den Q-Registern durchgelassen werden darf.
970 006 309810/0630
Die SS-Verriegelungsschaltung 70 für das Programm A wird also immer dann eingestellt, wenn ein SS-Befehl f ein Ausführ-Befehl oder ein Mehrfachspeicherbefehl im I-Register 58 eingespeichert ist. Die Verriegelungsschaltung 70 wird jedoch erst dann eingestellt, wenn der Taktimpuls für "Befehlszyklus Ende" auftritt, der gestattet, daß der gerade im Befehlsregister 58 liegende Befehl verarbeitet wird, andererseits aber das Arbeiten nachfolgender in der Befehlsfolge A liegender Befehle solange verhindert, bis ein Rückstellsignal der Verriegelungsschaltung 70 für das Programm A zugeführt wird. Das Signal für Befehlsende für das Programm A, das die Verriegelungsschaltung 70 zurückstellt, ist ein durch die Zentraleinheit nach Beendigung der Verarbeitung des Befehls erzeugtes Signal, welches die Einstellung der Verriegelungsschaltung 70 bewirkt hat. Es sei hier noch darauf hingewiesen, daß die Einstellung der Verriegelungsschaltung 70 für das Programm A bewirkt, daß ein Ausgangssignal an den Eingang der ODER-Schaltung 90 gelangt, die bewirkt, daß das Ausgangssignal der ODER-Schaltung 90 zu Null wird. Ein Null-Ausgangssignal der ODER-Schaltung 90 verhindert aber, wie noch gezeigt wird, die weitere Verarbeitung von Xefehlen im Programm A.
Die zweite Blockierung für die Allzweckregister betrifft Be- - fehle mit einem B-Feld. Die Decodierschaltung 74 liefert dann ein Ausgangssignal an die UND-Schaltung 98, wenn der Operationscode des gerade im Befehlsregister 58 befindlichen Befehls aus dem Programm A ein B-Feld aufweist. Das B-Feld des im I-Register 58 liegenden Befehls wird über die Datenleitung 92 der Vergleichsschaltung 94 zugeführt. Die Adressen der Allzweckregister, die durch bereits in der Pipeline-Zentraleinheit liegende Befehle geändert werden, werden über die Datenleitung 84 an die Vergleichsschaltung 94 übertragen. Wenn die Vergleichsschaltung 94 ein Ausgangssignal auf der Leitung 96 abgibt, dann bedeutet das das Vorhandensein eines Befehls in der Pipeline, der das durch die Adresse im B-Feld definierte Register ver-
wa 970 0O6 309810/0-8 30-
ändern wird. Dies bedeutet, daß der gerade im I-Register 58 liegende Befehl blockiert werden muß. Als Folge davon wird das auf der Leitung 96 liegende Signal der UND-Schaltung 98 zugeführt, deren Ausgangssignal die Verriegelungsschaltung 88 für das Programm A einstellen wird. Dies hat zur Folge, daß die Verarbeitung des im I-Register 58 liegenden Befehls solange blockiert wird, bis die Verriegelungsschaltung 88 für das Programm A zurückgestellt ist.Diese Rückstellung erfolgt durch ein Signal, das anzeigt, daß Information für das Programm A in das Allzweckregister eingeschrieben worden ist.
Wie zuvor besprochen, besteht eine andere unzulässige Bedingung darin, daß zwei Verzweigungen innerhalb der Pipeline zur selben Zeit durchgeführt werden. Am Ausgang der Decodierschaltung 76 tritt immer dann ein Ausgangssignal auf, wenn der im Befehlsregister 58 vom Programm A eingespeicherte Befehl ein Verzweigungsbefehl ist. Dieses Signal dient der Einstellung der Verriegelungsschaltung 100. Das Ausgangssignal der Verriegelungsschaltung 100 liegt an der UND-Schaltung 102. Der zweite Eingang der UND-Schaltung 102 ist ein Taktsignal, das dem Taktsignal Befehlszyklus-Ende in Fig.6 entspricht. Die UND-SchäLtung 102 liefert am Ende des Befehls zyklus für den im Befehlsregister 58 liegenden Befehl ein Ausgangssignal, das die Verriegelungsschaltung 104 für die Verzweigung einstellt. Das Ausgangssignal dieser Verriegelungsschaltung 104 liegt an der UND-Schaltung 106, die während des nächsten Taktzyklus für die Durchschaltung von Befehlen entsperrt wird. Dieser Taktimpuls wird durch eine ODER-Schaltung geliefert, der die Signale auf den Leitungen 52 und 54 zugeführt werden. Die UND-Schaltung 106 stellt damit die Verriegelungsschaltung 100 zurück.
Wenn der nächste Verzweigungsbefehl in der Decodierschaltung 7 6 decodiert wird, und wenn die vorhergehende Verzweigung noch nicht beendet ist, dann wird die Verriegelungsschaltung
WA 970 006 3 0 9 8 10/0630.
-'17 - ■
100 erneut eingestellt* Das Ausgangs signal dieser Veirriegelüngsschältung liegt an der UND-Schaltung 108 wie auch das Ausgangssignal der Verriegelungsschaltung 104* Zum Zeitpunkt des Taktsignals A liefert die UND-Schaltung 108 ein Ausgangssignal und stellt die VerriegelungssGhältüng llö für die zweite Verzweigung ein« Die VerriegelungssGhältüng HO kann nur eingestellt werden, wenn der Versuch unternommen wird, zwei Verzweigungen gleichzeitig in der Pipeline-Datenverarbeitungseinheit zu verarbeiten, eine Bedingung, die nicht zulässig ist. Die Einstellung der Verriegelungssehaltung llö für die zweite Verzweigung hat daher zur Folge* daß das Äusgangssignal der ODER-Schaltung 90 zu Null wird, was wiederum den im !-Register 58 liegenen Befehl blockiert» Weitere Befehle aus dem Programm A können solange nicht ausgeführt werden, bis der Verzweigungsbefehl in der Pipeline verarbeitet ist und ein Signal für die beendete Verzweigung über die Leitung 112 übertragen worden ist» Dieses Signal ist ein taktmäßig durchgeschaltetes Signal und steht in zeitlicher Beziehung mit den anderen in Fig.6 gezeigten Täktsignalen. Dieses das Ende der Verzweigung anzeigende Signal stellt die Verriegelungsstufen 100, 104 und 110 zurück»
Dieeben erwähnte Schaltung in Fig.3 dient dazu, drei bestimmte Arten von Verblockungen für eine bestimmte Art von Pipeline-Zentraleinheit durchzuführen. Man könnte natürlich auch noch andere Verblockungen darstellen, doch erscheint diese Beschreibung nicht unbedingt nötig, da sie sich auf ganz spezielle Pipeline-Zentraleinheiten beziehen würde» Die Bedeutung der bereits beschriebenen Verblockungen ist klar und für eine bestimmte Maschine vorgesehen, andere Verblökkungen, die die Verarbeitung von Befehlen in einem gegebenen Programm verhindern, sollten ebenfalls mit eingeschlossen werden» Das Auftreten solcher Verblockungen hat Eingangs"', signale an der ODER-Schaltung 90 zur Folge, wenn Sie sieh auf das Programm A beziehen. Für die hier beschriebene Aus-,.
m 970 006 3098 10/0630
führungsforiti der Erfindung sind einige mögliche Eingängssignale für die ODER-Schaltung 90 nicht dargestellt/ können aber durch den Fachmann leicht selbst angegeben werden» Wenn beispielsweise die in Fig.2 gezeigten Q-Register voll belegt sind und keinen weiteren Befehl aus dem Programm A aufnehmen können, dann könnte dieser Befehl die weitere Verarbeitung von Befehlen aus dem Programm A blockieren. Somit wird also ein Signal, das die volle Belegung eines Q-Registers aus dem Programm A anzeigt, ebenfalls als Eingangssignal der ODER-Schaltung 90 zugeführt werden. Eine andere Bedingung, die die Verarbeitung von Befehlen des Befehlspufferspeichers für das Programm Ä verhindern kann, ist die, daß der Befehlspufferspeicher keinen Befehl des Programms A enthält. Auch diese Bedingung sollte als Eingangssignal der ODER-Schaltung 90 zugeleitet werden. Eine weitere Bedingung, die ein Eingangssignal an der ODER-Schaltung zur Folge haben sollte, ist die, daß ein in der Pipeline befindlicher Befehl einen Zugriff zum. Hauptspeicher gemacht hat. Diese Bedingung erfordert, daß der Befehl der einen Zugriff zum Hauptspeicher zur Folge hatte, solange verzögert wird, bis der abzurufende Operand verfügbar ist. Somit müssen also weitere im gleichen Programm zu verarbeitende Befehle verzögert werden, da sie im Augenblick nicht verarbeitet werden können, da die Befehle der Reihe nach verarbeitet werden müssen und ein früherer Befehl noch auf Daten aus dem Hauptspeicher wartet.
Die Diskussion war bisher für die Schaltung nach Fig.3 auf Befehle aus dem Programm A beschränkt worden. Die ODER-Schaltung 114 in Fig*3 ist für das Programm B das Gegenstück zur ODER-Schaltung 90. Eine mit den für das Programm A vorgesehenen Schaltungen gleichartige Schaltüngsgruppe muß in der Schaltung nach Fig.3 ebenfalls vorgesehen sein, um die nötigen EingangsSignaIe an die ODER-Schaltung 114 zu liefern und um für das Programm B für im 1-Registef 58 liegende Befehle die gleichen Funktionen durchzuführen. Diese Schal-WA 970 006 3 0 9 8 1 0 / 0 S 3 0
223A867
tungen sind im wesentlichen mit denen für das Programm A in Fig.3 gezeigten Schaltungen identisch, mit der Ausnahme, daß die Durchlaßfunktion der Leitung 60 in Fig.3 in der Weise durchgeführt werden muß, daß für die, zur Behandlung der Verblockung für das Programm B notwendigen Schaltungen mit dem komplementären Signal zu dem auf der Leitung 60 liegenden Signal betrieben werden. Die von den ODER-Schaltungen 90 bzw. 114 abgegebenen Signale P bzw. P blockieren die Ver- ' arbeitung von Befehlen aus dem Programm A bzw. Programm B, . wenn diese Signale den binären Wert Null haben. Diese Signale bestimmen außerdem, welcher Befehl als nächster' von den Befehlspufferspeichern nach dem I-Register 58 durchgelassen werden sollen. . ■
Die Schaltung, die bestimmt, welcher Befehl als nächster an das I-Register durchgelassen wird, ist in Fig.4 gezeigt. Die erste Eingangsleitung in Fig.4 liefert den Status der I-Register-Verriegelungsschaltung auf der Leitung 116. Dieses Signal kommt von der bistabilen Kippschaltung"68 in Fig.3. Eine binäre Eins auf der Leitung 116 zeigt an, daß zuletzt ein Befehl aus dem Programm A nach dem I-Register durchgelassen wurde. Dieses Signal liegt als Eingangssignal an den UND-Schaltungen 124 und 132.
Aus der Tabelle in Fig.5 sieht man die verschiedenen Bedingungen die bestimmen, welcher Befehlspufferspeicher für den nächsten Torzyklus nach dem I-Register durchgeschaltet wird. Wenn-beispielsweise, wie in ZdIe 1 der Tabelle in Fig.5, der gerade im I-Register liegende Befehl aus dem Programm A stammt und die Signale P- und P einen binären Wert von Eins aufweisen, dann muß als nächstes ein Befehl aus dem Programm B ausgewählt werden. Die weiteren Zeilen der Tabelle zeigen unter verschiedenen Maschinenbedingungen die als nächste aus den derzeit im I-Register liegenden Befehlen auszuwählenden Befehle. Dies ist die Tabelle für die Schaltung nach Fig.4,
«97O006 309810/0630
Die verschiedenen Zeilen der Tabelle entsprechen dabei den Eingangsbedingungen für die UND-Schaltungen 124, 126, 128, 130, 132 und 134 in Fig.4.
Die ODER-Schaltung 136 wird durch die UND-Schaltungen 126, oder 132 angesteuert. Jede dieser UND-Schaltungen liefert immer dann ein Ausgangssignal, wenn der nächstfolgende Befehl aus dem Programm A durchgelassen werden sollte, wie dies in Fig.5 angedeutet worden ist. In gleicher Weise wird die ODER-Schaltung 138 durch die UND-Schaltungen 124, 128 und angesteuert, die jeweils dann' ein Ausgangssignal liefern, wenn die in Fig.5 angegebenen Bedingungen anzeigen, daß der nächste Befehl aus dem Programm B durchgelassen werden sollte.
Das Ausgangssignal der ODER-Schaltung 136 liegt an der UND-Schaltung 140. Das zweite Eingangssignal der UND-Schaltung 140 ist das auf Zeile 1 in Fig.6 gezeigte Signal "Durchschalten Befehl", das außerdem als Eingangssignal für die UND-Schaltung 142 dient. Das Ausgangssignal der UND-Schaltung 140 erzeugt ein Signal, das zum Durchschalten der Befehle vom Programm A nach dem I-Register dient und als Eingangssignal in Fig.3 an der Leitung 52 liegt. Das Ausgangssignal der Torschaltung 142 tritt nur dann auf, wenn an der ODER-Schaltung 138 eine Eingangsleitung erregt ist und das Torschaltungssignal eine Eins ist. Das Ausgangssignal der Torschaltung 142 dient der Durchschaltung der Befehle vom Programm B zum I-Register und' dient als Eingangssignal auf der Leitung 54 in Fig.3.
Zum gleichen Zeitpunkt, zu dem die Blockiertests mit dem im I-Register befindlichen Befehl durchgeführt werden, werden durch die Zentraleinheit an den im I-Register liegenden Befehlen auch noch andere Funktionen durchgeführt.
WA 970·006 3098 10/0630
In jeder Stufe der Pipeline wird der Befehl und zugehörige Steuerschaltungen in der verschiedensten Weise geprüft, -um festzustellen, ob der Befehl nach der nächsten Stufe weiterlaufen kann. Den einzelnen Stufen der Pipeline sind also verschiedene Kontrollfunktionen zugeordnet. Als Beispiel · dient der Zugriff zu den Allzweckregistern. Falls ein Befehl Zugriff zu diesen Registern benötigt, um eine Adresse zu berechnen, muß dies durchgeführt werden, solange der Befehl im I-Register liegt.
Diese Funktionen beziehen sich auf die Einstellung der ver-* schiedenen Register und Bedingungen innerhalb der Pipeline-Verarbeitungseinheit, so daß der Befehl, wenn er das Verarbeitungsregister erreicht, auch verarbeitet werden kann. Die mit dem im I-Register liegenden Befehl durchzuführenden Funktionen können jedoch blockiert werden, wenn für den entsprechenden im I-Register liegenden Befehl das Signal P
oder P den Binärwert Null aufweist.
Während der Befehl im I-Register 58 (Fig.3) liegt, wird eine teilweise Verarbeitung des Befehls gleichzeitig mit der Ver-* blockungsprüfung durchgeführt. Die dazu notwendige Information wird vom I-Register 58 über die Datenleitung 61 an die einzelnen Einrichtungen der Zentraleinheit übertragen. Diese Einheiten sprechen auf die vom I-Register 58 übertragenen Daten an und leiten unter Berücksichtigung der in dem Befehl angegebenen benötigten Allzweckregister die notwendige Adressenberechnung ein. Außerdem werden diejenigen Allzweckregister, die ausgelesen und deren Inhalt durch den im I-Re-^· gister 58 liegenden Befehl benutzt werden müssen, ausgelesen, solange der Befehl noch im I-Register 58 liegt. Mit anderen Worten, die ersten Stufen der Verarbeitung des im I-Register 58 liegenden Befehls werden bereits durchgeführt und werden unter der Annahme gemacht, daß keine Verblockung auftritt. Sollte jedoch eine Verblockung auftreten, dann werden die
970 006 3 0 9 810/0630
BAD ORIGINAL
Adressenberechnungen nicht benötigt und die aus dem Allzweckregister ausgelesenen Daten werden von der Zentraleinheit dann nicht beachtet, wenn ein Maschinenstatussignal von Null aus der ODER-Schaltung 90 oder der ODER-Schaltung 114 ankommt.
Wenn jedoch keine Verblockung auftritt, dann werden die einleitenden Tätigkeiten zur Berechnung der Adressen und zum Abrufen der Allzweckregister bereits durchgeführt sein und in der Zentraleinheit zur Verwendung für die, tatsächliche Verarbeitung der Daten aufgehoben, wie sie durch die Befehlsbezeichnung innerhalb des Operationscodes angegeben ist. Während der nächsten Befehlsdurchlaßperiode wird der im I-Register 58 liegende Befehl über die Datenleitung 59 nach den Q-Registern übertragen. Dieser Befehl wird dabei entsprechend dem in Fig. 5 definierten Algorithmus ausgewählt' werden.
970 006 309 810/063 0

Claims (5)

  1. P a t e η t a η s ρ r ü c h e
    Anordnung in Datenverarbeitungsanlagen zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen, gekennzeichnet durch Torschaltungen (48,50) zur gesteuerten übertragung von Befehlen aus jeder der beiden Befehlsfolgen (A, B) nach einem Befehlsregister (58) sowie durch mit dem I-Register, verbundene Prüfschaltungen (64,72,74,76; 82,.84,1OO etc. 90, 114), die feststellen, ob die Zentraleinheit die im I-Register eingespeicherten Befehle verarbeiten kann, ferner durch mit deirr I-Register (58) verbundene Speichermittel (42, Fig.2) und Blockierprüf schaltungen (70, 88, 110) zur Bestimmung derjenigen Befehlsfolge, der der gerade im I-Register befindliche Befehl entnommen wurde, sowie durch einen auf die Blockierschaltungen und Speichermittel ansprechenden Signalgenerator (Fig.4), der die Eingangssteuersignale für die Torschaltungen (48, 50) liefert.
  2. 2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß das I-Register mit der Zentraleinheit in der Weise verbunden ist, daß die Verarbeitung des Befehls gleichzeitig mit der Blockierprüfung erfolgt und bei entsprechendem Prüfergebnis die Verarbeitung des gerade im I-Register liegenden Befehls zumindest zeitweilig gesperrt wird.
    WA 970 006
    309810/0630
    223A867
  3. 3. Anordnung nach Anspruch 1 und 2, dadurch gekennzeichnet, daß zur gemeinsamen Benutzung einer Zentraleinheit für Befehle zweier voneinander unabhängiger Befehlsfolgen zwei Befehlspufferspeicher (28, 30, Fig.2) vorgesehen sind, die an jeweils einen Eingang der Torschaltungen (48, 50, Fig.3) über Eingangsleitungen (44, 46) angeschlossen sind und daß die mit dem I-Register (58) verbundenen Torschaltungen an ihrem zweiten Eingang derart durch ein Steuersignal steuerbar sind, daß jeweils nur ein Befehlspufferspeicher Daten an das I-Register abgeben kann.
  4. 4. Verfahren zum gemeinsamen Benutzen einer Zentraleinheit in einer Datenverarbeitungsanlage für die Verarbeitung von Befehlen zweier voneinander unabhängiger Befehlsfolgen, gekennzeichnet durch folgende Verfahrensschritte:
    1. Auswählen eines Befehls aus einer Befehlsfolge;
    2. Überprüfen dieses Befehls auf. Blockierbedingungen;
    3. Verarbeiten des ausgewählten Befehls;
    4. Blockieren der weiteren Verarbeitung dieses Befehls, wenn eine Blockierbedingung festgestellt ist;
  5. 5. Sperren der weiteren Auswahl von Befehlen aus der Befehlsfolge, bei der eine Blockierbedingung festgestellt wurde, bis diese nicht mehr besteht.
    5. Verfahren nach Anspruch 4, gekennzeichnet durch folgende Verfahrensschritte:
    1. Auswählen einer Befehls aus einer der beiden Befehlsfolgen;
    2. Durchführen der Blockierprüfung für den ausgewählten Befehl, um festzustellen, ob diese durchführbar ist;
    3. Verarbeiten des ausgewählten Befehls, während die Blockierprüfung gleichzeitig abläuft;
    4. Sperren der weiteren Durchführung des ausgewählten Befehls, wenn eine Blockierbedingung festgestellt
    »a 970 006 309810/0630
    wird j
    Verhindern der weiteren Auswahl von Befehlen aus der Befehlsfolge·., bei der eine Blockierbedingung festgestellt würde, solange diese Blockierbedingung besteht;
    Abwechselnde Auswahl der Befehle aus den Befehls1* folgen, wenn keine Blockierbedingungen festgestellt werden*
    309 810/0630
    WA 970 006
    Leerseite
DE2234867A 1971-08-31 1972-07-15 Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen Expired DE2234867C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US17649471A 1971-08-31 1971-08-31

Publications (2)

Publication Number Publication Date
DE2234867A1 true DE2234867A1 (de) 1973-03-08
DE2234867C2 DE2234867C2 (de) 1983-12-08

Family

ID=22644574

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2234867A Expired DE2234867C2 (de) 1971-08-31 1972-07-15 Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen

Country Status (5)

Country Link
US (1) US3728692A (de)
JP (1) JPS5418540B2 (de)
DE (1) DE2234867C2 (de)
FR (1) FR2198661A5 (de)
GB (1) GB1397310A (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1527289A (en) * 1976-08-17 1978-10-04 Int Computers Ltd Data processing systems
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
SE456051B (sv) * 1980-02-11 1988-08-29 Western Electric Co Digital processoranordning anordnad for pipeline-databehandlingsoperationer
JPS59231652A (ja) * 1983-06-13 1984-12-26 Hitachi Ltd メモリアクセス・オ−バラツプ検出方式
JPS60189851A (ja) * 1984-03-12 1985-09-27 Agency Of Ind Science & Technol 電界レンズ
US5226129A (en) * 1986-10-30 1993-07-06 Nec Corporation Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
US4969117A (en) * 1988-05-16 1990-11-06 Ardent Computer Corporation Chaining and hazard apparatus and method
US4935849A (en) * 1988-05-16 1990-06-19 Stardent Computer, Inc. Chaining and hazard apparatus and method
GB8817911D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
US6000026A (en) * 1992-06-22 1999-12-07 Texas Instrument Incorporated Multiple processor apparatus having a protocol processor intended for the execution of a collection of instructions in a reduced number of operations
US5619685A (en) * 1994-11-04 1997-04-08 Ball Corporation Run-time dynamically adaptive computer process for facilitating communication between computer programs
US5875294A (en) 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
JP3778573B2 (ja) * 1996-09-27 2006-05-24 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
EP0863462B8 (de) * 1997-03-04 2010-07-28 Panasonic Corporation Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2001664A1 (de) * 1969-01-15 1970-07-23 Ibm Anordnung und Verfahren zur Programmverzweigung in einem elektronischen Digitalrechner

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) * 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3548384A (en) * 1967-10-02 1970-12-15 Burroughs Corp Procedure entry for a data processor employing a stack
GB1246130A (en) * 1967-12-14 1971-09-15 Olivetti & Co Spa Stored programme electronic computer
US3573851A (en) * 1968-07-11 1971-04-06 Texas Instruments Inc Memory buffer for vector streaming
US3601812A (en) * 1969-01-22 1971-08-24 Rca Corp Memory system
JPS5317023A (en) * 1976-07-30 1978-02-16 Hitachi Ltd Color picture tube

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2001664A1 (de) * 1969-01-15 1970-07-23 Ibm Anordnung und Verfahren zur Programmverzweigung in einem elektronischen Digitalrechner

Also Published As

Publication number Publication date
US3728692A (en) 1973-04-17
JPS5418540B2 (de) 1979-07-09
FR2198661A5 (de) 1974-03-18
DE2234867C2 (de) 1983-12-08
GB1397310A (en) 1975-06-11
JPS4834448A (de) 1973-05-18

Similar Documents

Publication Publication Date Title
DE2234867A1 (de) Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE2714805C2 (de)
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE3424962C2 (de)
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE3638572C2 (de)
DE3789490T2 (de) Steuerungssystem für ein Vektorprozessor.
DE2758830A1 (de) Rechenvorrichtung
DE4207148A1 (de) Superscalar-prozessor
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE2036729A1 (de) Digital Datenverarbeiter
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE1549478B1 (de) Gleitkomma-Rechenwerk zur schnellen Addition oder Subtraktion binaerer Operanden
DE69714532T2 (de) Synchrone Halbleiterspeichervorrichtung mit Makrobefehlsspeichern und Ausführungsverfahren dafür
DE69500748T2 (de) Elektronischer Schaltkreis und Verfahren für die Verwendung mit einem Koprozessor
DE1115488B (de) Datenverarbeitungssystem
DE1805992C3 (de) Einrichtung zur Adressierung von Zwischenspeichern beim Sortieren/Mischen von vorsortierten Datenfolgen
DE3307194C2 (de)
DE2245284A1 (de) Datenverarbeitungsanlage
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE1499224C3 (de) Datenverarbeitungsanlage mit Kellerspeichereinrichtungen
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
DE2545751C2 (de) Ablaufsteuerung für eine Datenverarbeitungsanlage

Legal Events

Date Code Title Description
OD Request for examination
8126 Change of the secondary classification

Ipc: G06F 9/38

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee