DE2224537A1 - Einrichtung und verfahren zur instruktionsselektion - Google Patents

Einrichtung und verfahren zur instruktionsselektion

Info

Publication number
DE2224537A1
DE2224537A1 DE2224537A DE2224537A DE2224537A1 DE 2224537 A1 DE2224537 A1 DE 2224537A1 DE 2224537 A DE2224537 A DE 2224537A DE 2224537 A DE2224537 A DE 2224537A DE 2224537 A1 DE2224537 A1 DE 2224537A1
Authority
DE
Germany
Prior art keywords
instruction
processing unit
register
buffer
processing
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
DE2224537A
Other languages
English (en)
Other versions
DE2224537C2 (de
Inventor
Joseph Orazio Celtruda
William Russell Crosthwait
John Goodell Earle
Jun John Wenard Fennel
Roy Francis Henderson
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 DE2224537A1 publication Critical patent/DE2224537A1/de
Application granted granted Critical
Publication of DE2224537C2 publication Critical patent/DE2224537C2/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/3802Instruction prefetching
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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

Amtliches Aktenzeichen:
Neuanme!dung
Aktenzeichen der Anmelderin: WA 971 002
Einrichtung und Verfahren zur Instruktionsselektion
Die Erfindung betrifft eine Einrichtung in einem elektronischen Datenverarbeitungssystem mit einem Hauptspeicher und einer Instruktionsverarbeitungseinrichtung zur Instruktionsselektion und ein Verfahren zu deren Betrieb.
Auf dem Gebiet der Hochgeschwindigkeits-Digitalrechenanlagen wurden bisher mehrere Techniken für die Verbesserung der Instruktionsverarbeitung innerhalb eines elektronischen Datenrechners entwickelt. Ein Mittel hierfür besteht in der Optimierung der Systemarchitektur/ wie sie beispielsweise in der US-Patentschrift 3 400 371 ausführlich beschrieben ist.
Ein weiteres Mittel für die genannte Geschwindigkeitsverbesserung betrifft eine Architekturänderung, nach der die traditionelle Speicherfunktion auf zwei unterschiedliche Arten von Speicherelementen verteilt ist: einen langsamen Großraumspeicher und einen sehr schnellen Speicher mit nur geringer Speicherkapazität. In einem solchen Datenverarbeitungssystem versucht die Steuereinheit, alle Instruktionen zu verarbeiten, indem sie Daten verwendet, die sich innerhalb des Hochgeschwindigkeitsspeichers mit der geringen Speicherkapazität befinden. Da die Geschwindigkeit dieses Speichers sehr hoch ausgelegt und mit der Verarbeitungsgeschwindigkeit des Systems vergleichbar ist, können Instruktionen, die Daten aus diesem Speicher benötigen, mit sehr hoher Geschwindigkeit verarbeitet werden, wobei
309810/0597
allerdings vorausgesetzt ist, daß sich diese Daten bereits in diesem Hochgeschwindigkeitsspeicher (mit der geringen Kapazität) befinden. Wenn die Daten in diesem Hochgeschwindigkeitsspeicher nicht verfügbar sind, muß zunächst erst wieder ein Datenblock vom Hauptspeicher abgerufen und zu dem Hochgeschwindigkeitsspeicher übertragen werden. Bei einer geeigneten Programmierung können die Blockabrufe vom langsamen Großraumspeicher (Hauptspeicher) zu dem Hochgeschwindigkeitsspeicher mit geringer Speicherkapazität (z.B. Pufferspeicher) bis auf ein geringes Maß verringert werden, so daß die Gesamtverarbeitungszeit eines solches Systems, im Vergleich zu einem konventionellen System, das im allgemeinen einen einzigen, relativ langsamen Speicher verwendet, effizienter ist.
Ein weiteres Mittel zur Verbesserung der Verarbeitungsgeschwindigkeit von Datenrechnern kann darin bestehen, die Instruktionen in einer Pipeline-Verarbeitungseinheit zu verarbeiten. Diese Verarbeitungseinheiten können viele Instruktionen mit sehr großer Geschwindigkeit verarbeiten, da ihre interne Organisation so ausgelegt ist, daß sie die Zahl der Instruktionen, die in einer bestimmten Zeitperiode verarbeitet werden können, optimiert. Eine Pipeline-Verarbeitungseinheit verarbeitet bestimmte Operationen bezüglich mehrerer verschiedener Instruktionen gleichzeitig. So kann beispielsweise eine Instruktion eine Operation bezüglich zweier Operanden erfordern, die sich innerhalb des Speichers befinden. Diese Operanden können vom Hauptspeicher während der gleichen Zeit abgerufen werden, in der eine zweite Instruktion zur Bestimmung ihres Typs sowie ihrer Datenerfordernisse decodiert wird. Auch eine dritte Instruktion kann sich noch ihrer Vervollständigung nähern, wobei sich dieses alles im gleichen Maschinenzyklus abspielt.
Obwohl eine Pipeline-Verarbeitungseinheit im Vergleich zu anderen Datenverarbeitungseinheiten in hohem Maße effizient ist, existiert ein inherentes Problem, das eine maximale Verwendung ihrer Daten-
WA971OO2 309810/0597
verarbeitungsfähigkeiten verhindert. Als Folge von Programmabhängigkeiten kann auch eine Pipeline-Verarbeitungseinheit in einen Wartezustand versetzt werden, während Daten vom Speicher abgerufen werden. Während dieser Warteperioden kann auch eine Pipeline-Verarbeitungseinheit nicht alle verfügbaren Verarbeitungsfähigkeiten ausnutzen. Verzweigungsinstruktionen bieten hierbei eine andere Form eines Engpasses innerhalb eines normalen Programms und sie haben eine beträchtliche Wirkung auf die Verarbeitungsfähigkeiten einer Pipeline-Verarbeitungseinheit.
Aus den vorstehend genannten Nachteilen bekannter digitaler Datenverarbeitungssysteme leitet sich die Aufgabe der Erfindung ab, deren primäres Ziel es ist, eine Pipeline-Verarbeitungseinheit anzugeben, deren Wirkungsgrad dem bekannter Pipeline-Verarbeitungseinheiten überlegen ist.
Eine weitere Aufgabe .der Erfindung besteht darin, diese Wirkungsgradverbesserung ohne eine nennenswerte Erhöhung des Schaltkreisaufwandes zu erreichen.
Zu den Aufgaben der Erfindung zählt ferner, eine Pipeline-Verarbeitungseinheit anzugeben, die in der Lage ist, mindestens zwei voneinander unabhängige Instruktionsströme gleichzeitig zu verarbeiten und die Simultanität der Operation ohne wesentliche Kostensteigerung zu realisieren.
Für eine Einrichtung in einem elektronischen Datenverarbeitungssystem mit einem Hauptspeicher und einer Instruktionsverarbeitungseinrichtung zur Instruktionsselektion besteht die Erfindung darin, daß mindestens ein erster und zweiter Instruktionspuffer für die Zwischenspeicherung mindestens einer Instruktion in jedem Puffer, wobei jeder Instruktionspuffer einem von mindestens zwei voneinander unabhängigen Instruktionsströmen fest zugeordnet ist, vorgesehen ist und daß eine Wählschaltung mit den mindestens zwei Instruktionspuffern verbunden ist und die nächste von den in einem
309810/0597
WA 9 71 002
der mindestens zwei Instruktionspuffer gespeicherten Instruktionen für die Verarbeitung durch die Verarbeitungseinheit auswählt, indem sie mit ihrem Durchschaltnetzwerk die ausgewählte Instruktion zur Verarbeitungseinheit überträgt.
Für ein Verfahren zum Betrieb dieser Einrichtung besteht die Erfindung in der Durchführung der folgenden Verarbeitungsschritte:
1. Abfrage der Verfügbarkeit von Verarbeitungsmitteln in der Verarbeitungseinheit für die nächste Instruktion in jedem der unabhängigen Instruktionsströme,
2. Erzeugung einer Verfügbarkeitsangabe für jede Instruktion, für die Verarbeitungsmittel für deren spezifische Verarbeitung gerade vorhanden sind und
3. Sperrung oder übertragung einer Instruktion zur Verarbeitungseinheit, in Abhängigkeit von einer Verfügbarkeitsangabe.
Weitere Merkmale, vorteilhafte Ausgestaltungen und Weiterbildungen des Gegenstandes der Erfindung sind den Unteransprüchen zu entnehmen .
Die Beseitigung der Nachteile des bekannten Standes der Technik durch die Erfindung bringt eine Reihe von Vorteilen mit sich. Diese Vorteile beziehen sich auf die Geschwindigkeitsverbesserung von Pipeline-Verarbeitungseinheiten, bei denen, wenn zwei unabhängige Instruktionsströme zugrundegelegt werden, eine kombinierte Verarbeitungsgeschwindigkeit erzielt wird, die annähernd der doppelten Datenverarbeitungsgeschwindigkeit einer ähnlichen Pipeline-Verarbeitungseinheit entspricht, die für die Verarbeitung von Instruktionen eines einzigen Instruktionsstromes ausgelegt wurde, wobei sich ein weiterer Vorteil daraus ergibt, daß die Verarbeitungsgeschwindigkeit nur mit verhältnismäßig geringem Mehraufwand erreicht wird. Der Vorteil liegt also in einer
30981 0/0597
WA 9 71 Oü?
wesentlich effektiveren Verwendung der Verarbeitungsmittel in einer Multi-Verarbeitungseinheit.
Im folgend wird die Erfindung anhand der Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockschaltbild des Gesamtsystems, in dem
die Erfindung verwirklicht ist,
Fig. 2 das Blockschaltbild eines Ausführungsbeispiels
der Erfindung, einschließlich der Gesamtstruktur der Schaltkreise des Systems für die Mischung von Instruktionen aus zwei unabhängigen Instruktionsströmen in eine Pipeline-Verarbeitungseinheit,
Fign. 3A, 3B Ablaufdiagramme für die Vordecodierungsfunktion
und
Fign. 4A, 4B ein Blockschaltbild der Schaltungsanordnung, die
notwendig ist, um Torsteuersignale zu erzeugen, die die Vordecodierungsfunktion vervollständigen.
Das Blockschaltbild in Fig. 1 zeigt in schematischer Form ein elektronisches Datenverarbeitungssystem, in dem die Erfindung verwirklicht ist. Dieses Datenverarbeitungssystem besitzt einen Speicher 10, der mit der Verarbeitungseinheit 12 verbunden ist. Dieser Speicher 10 kann beispielsweise ein Kernspeicher sein, wie es beispielsweise aus vielen vorhandenen Datenverarbeitungseinrichtungen bekannt ist. Es kann aber auch einen beliebigen anderen Aufbau für eine Hochgeschwindigkeitsspeicherung besitzen, beispielsweise nach Art eines monolithischen Speichers oder nach Art eines direkt adressierbaren Großraumspeichers. Die Verarbeitungseinheit 12 besteht aus einer Datenverarbeitungseinheit, die fähig ist, Instruktionen in Maschinensprache zu interpretieren und auszuführen, die dieser über die Datensammelleitung 22 zugeführt werden.
30 9 8 10/0597
WA 9 71 002
Eine derartige Verarbeitungseinheit kann beispielsweise ein Datenrechner des IBM System/360 sein, in dem die Modifizierungen der vorliegenden Erfindung realisiert sind. Diese Modifizierungen beeinflussen die Instruktionsregisterfunktion innerhalb einer solchen Maschine.
Die Instruktionsregisterfunktion des in Fig. 1 dargestellten Systems verwendet zwei Instruktionspuffer 14 und 16. Der Instruktionspuffer 14 ist ein Standardinstruktionspuffer, wie er in jeder Maschine, beispielsweise des IBM System/36O gefunden werden kann, in der der Instruktionsstrom (I-Strom) aus einer Serie von Maschinenspracheninstruktionen besteht, die einem einzelnen speziellen Programm entsprechen. Der zweite Instruktionspuffer 16, der ebenfalls in Fig. 1 dargestellt ist, enthält Maschinenspracheinstruktionen von einem zweiten unabhängigen Instruktionsstrom. In der Verarbeitungseinheit 12 sind spezielle Schaltkreise für den Abruf von Instruktionen zweier unabhängiger Instruktionsströme vom Speicher 10 vorgesehen. Die hierfür vorgesehenen Schaltkreise müssen jedoch sicherstellen, daß die Instruktionen von jedem unabhängigen Instruktionsstrom nur zu dem Instruktionspuffer übertragen werden, der diesem Instruktionsstrom zugeordnet ist.
Die Selektionsschaltung, im folgendem kurz mit Wählschaltung 18 bezeichnet, ist, wie Fig. 1 zeigt, mit den Instruktionspuffern 14 und 16 verbunden. Die Funktion der Wählschaltung 18 besteht darin, eine Maschinenspracheinstruktion von entweder dem Instruktionspuffer 14 oder dem Instruktionspuffer 16 auszuwählen und die ausgewählte Instruktion über die Datensammelleitung 22 zu der Verarbeitungseinheit 12 zu übertragen.
Die Fig. 1 zeigt ferner eine Datensammelleitung, die eine Verbindung zwischen der Verarbeitungseinheit 12 und der Wählschaltung 18 darstellt. Der Zweck der Datensammelleitung 20 ist die Informationsübertragung von der Verarbeitungseinheit 12 zu der Wählschaltung 18. Die Information, die über diesen Weg zu der Wählschaltung 18 übertragen wird, bezieht sich auf die Verfügbarkeit von Verarbei-
WA 971 002 3098 10/0597
tungsmitteln innerhalb der Verarbeitungseinheit 12. In seiner einfachsten Ausführungsform überträgt das in Fig. 1 dargestellte System über die Datensammelleitung 20 nur solche Information zu der Wählschaltung 18, die angibt, daß die Verarbeitungseinheit eine Instruktion vollständig verarbeitet hat und bereit ist, eine andere Instruktion zu empfangen. Die vorliegende Erfindung ist jedoch vorteilhafter bei Systemen, in denen die Verarbeitungseinheit 12 nach Art der Pipeline-Verarbeitungseinheiten aufgebaut ist. Bei einer Pipeline-Verarbeitungseinheit können mehr als eine Instruktion zu einem bestimmten Zeitpunkt ausgeführt werden. Eine solche Verarbeitungseinheit kann als eine Pipeline gedacht werden, in der Instruktionen und Daten an einem Ende während eines Maschinenzyklus eintreten und während des gleichen Maschinenzyklus die Ergebnisse der vorher in die Verarbeitungseinheit eingetretenen Instruktionen austreten. Ferner wird während der gleichen Zykluszeit die Verarbeitung in der Pipeline-Verarbeitungseinheit bezüglich anderer Instruktionen vorgenommen, die während früherer Zyklen in die Pipeline-Verarbeitungseinheit eintraten, aber noch nicht vollständig ausgeführt wurden.
Bei einem nach Fig. 1 gekennzeichneten System, bei dem die Verarbeitungseinheit 12 eine Pipeline-Verarbeitungseinheit ist, wird die Kommunikation zwischen der Wählschaltung 18 und der Verarbeitungseinheit 12 längs der Datensammelleitung 20 komplizierter, als es bei der vorher erläuterten Ausführungsform der Fall war. In normalen Programmen existieren oft Datenabhängigkeiten zwischen zwei aufeinanderfolgenden Instruktionen. D.h., daß die Antwort, die von einer Instruktion erzeugt wird, als Eingangsdaten für eine nachfolgende Instruktion erforderlich ist. Solche Abhängigkeiten können als Sperre bezeichnet werden, die per Definition die Maschine daran hindert, weitere Operationen einzuleiten, bis die im Gange befindliche Operation vollständig beendet ist. Bei einer Pipeline-Verarbeitungseinheit ist es notwendig, daß die erste Instruktion vollständig verarbeitet wird, bevor einer zweiten Instruktion im gleichen Datenstrom gestattet werden kann, in die Verarbeitungseinheit einzutreten.
309810/0^97
WA 9 71 002 JUyö (U/Uoy /
Daher ist die Wählschaltung 18 erforderlich, um festzulegen, welche Instruktion von den beiden Instruktionen in den Instruktionspuffern 14 und 16 längs der Datensamme1leitung 22 zu der Verarbeitungseinheit 12 während eines beliebigen Instruktionszyklus übertragen werden kann.
Da eine Pipeline-Verarbeitungseinheit an sich eine sehr komplizierte Datenverarbeitungseinheit darstellt, erfordert der Entwurf eines Systems mit Pipeline-Verarbeitungsfähigkeiten für die gleichzeitige Verarbeitung von Instruktionen zweier verschiedener Instruktionsströme auch spezielle komplizierte Schaltkreisstrukturen, um die Puffer- und Selektionsfunktion, die in Fig. 1 schematisch dargestellt sind, zu inplementieren. Flg. 2 zeigt nun in ausführlicherer Weise die erforderlichen Schaltungen für die Durchführung der Instruktionsverschachtelungsfunktion, die notwendig ist, um für die beiden Instruktionsströme eine gemeinsame Pipeline-Verarbeitungeeinheit zu benutzen.
In Flg. 2 sind die beiden Instruktionspuffer A und B mit 40 und 42 bezeichnet. Diese Puffer entsprechen an sich konkreten Registern, in denen mindestens eine Instruktion von zwei verschiedenen Instruktionsströmen gepuffert, d.h. zwischengespeichert werden kann. Die Maschinenspracheninstruktion des Instruktionsstromes A wird im Instruktionspuffer 40 und, ähnlich, die Maschinenspracheninstruktion für den Instruktionsstrom B im Puffer 42 gepuffert. An den Instruktionspuffer 40 und 42 sind, obwohl sie nicht dargestellt sind, bestimmte Schaltkreise angeschlossen, die sicherstellen, daß Instruktionen vom Hauptspeicher, so wie sie erforderlich sind, abgerufen werden, so daß jeder Instruktionspuffer stets eine Instruktion für jeden unabhängigen Instruktionsstrom für die Verarbeitung enthält.
An jeden Instruktionspuffer in Fig. 2 ist ein Vordecodierer A oder B angeschlossen, der mit 44 oder 46 bezeichnet ist. Die Vordecodierungsfunktion ist eine solche Funktion, die die
WA 971 002 309810/0597
Instruktionstype untersucht, die im angeschlossenen Instruktionspuffer gespeichert ist und bestimmt, ob diese Instruktion erfolg- reich ausgeführt werden könnte, wenn sie zu dem Instruktionsregister 48 übertragen werden würde.
Zum besseren Verständnis der Vordecodierungsfunktion dienen die Fign. 3A und 3B, die ein Ablaufdiagramm der Vordecodierungsfunktion zeigen. Die erste Funktion jeder Vordecodierungeinheit dient zur Prüfung, ob die Q-Register für einen gegebenen Instruktionsstrom noch voll von vorher geprüften und teilweise verarbeiteten Instruktionen ist. Die Q-Register sind in Fig. 2 dargestellt und werden später noch erläutert werden. Wenn festgestellt wird, daß die Q-Register für einen gegebenen Instruktionsstrom noch voll sind, dann kann.keinen weiteren Instruktionen dieses Instruktionsstromes die übertragung von entweder dem Instruktionspuffer, 40 oder 42 in das Instruktionsregister 48, kurz I-Register genannt, in Fig. 2 gestattet werden.
Die zweite Prüfung, die von jeder Vordecodierungsfunktion vorgenommen werden muß, ist festzustellen, ob die Adressensperren für die Allzweckregister aufgehoben wurden. Diese Prüfung bezieht sich auf die Programmdatenabhängigkeit, die auf den X- und B-Feldern beruht, die bei den Adressenrechnungen verwendet werden. D.h., ob die Adressenrechnung einer Instruktion von Daten abhängt, die von einer vorangehenden Instruktion generiert werden. Wenn dieses der Fall ist, dann darf einer nachfolgenden Instruktion solange nicht gestattet werden, in die Pipeline-Verarbeitung einzutreten, bis die vorhergehende Instruktion den Inhalt des Allzweckregisters modifiziert hat, das von der nachfolgenden Instruktion benutzt wird. Wenn die Adressensperren (X-, B-Sperren) de» Allzweckregisters (GPR-nicht dargestellt) noch nicht aufgehoben wurden, kann auch eine Instruktion noch nicht von dem Instruktionspuffer in das I-Register durchgeschaltet werden.
Eine dritte Prüfung, die von der Vordecodierungsfunktion durchgeführt werden muß, bezieht sich auf Datenabrufe vom Hauptspeicher
WA 971 002 309 8 10/0597
durch vorangegangene Instruktionen. Da eine Pipeline-Verarbeitungseinheit normalerweise eine sehr schnelle Datenverarbeitungseinheit ist, im Vergleich zu der Geschwindigkeit des Speichers, kann eine Instruktion, die Daten vom Hauptspeicher benötigt, eine Verzögerung in der Verarbeitung von Instruktionen in diesem Instruktionestrom verursachen. Bei einer variablen Feldlängeninstruktion (VFL), ist es im allgemeinen die Fall, daß sie eine ganze Reihe von Datenabrufen benötigt. Daher muß die Vordecodierungsfunktion bestimmen, ob zuvor eine VFL-Instruktion injiziert wurde. Wenn dieses für einen gegebenen Instruktionsstrom der Fall ist, dann muß die nächste Instruktion in diesem Instruktionsstrom untersucht werden um festzustellen, ob sie einen Speicheroperanden benötigt. Ein Speicheroperand besteht aus Daten, die im Hauptspeicher untergebracht sind. Wenn die Instruktionen keinen Speicheroperanden erfordert, dann wird die dritte Prüfung der Vordecodierungsfunktion erfüllt sein und die nächste Instruktion in diesem Datenstrom für die Durchschaltung in das I-Register verfügbar sein, wobei allerdings vorausgesetzt ist, daß auch alle übrigen Prüfungen erfolgreich waren. Wenn jedoch eine Instruktion in dem gegebenen Instruktionsstrom einen Speicheroperanden benötigt und eine vorangegangene Instruktion eine VFL-Instruktion war, die noch nicht vollständig ausgeführt wurde, dann erfordert die dritte Prüfung eine weitere Untersuchung in der Richtung, ob mehr als ein Datenabruf für die vorher herausgegebene VFL-Instruktion noch aussteht. Der Grund für diese dritte Prüfung ist der Versuch, sicherzustellen, daß Hauptspeieherabrufe für einen gegebenen Instruktionsstrom in einer Folge behandelt werden, da das Abrufen verschiedener Datenwörter aus einer Folge dazu tendiert, die Verarbeitung eines gegebenen Instruktionsstromes zu verlangsamen.
Die vierte Prüfung, die mittels der Vordecodierung durchgeführt wird, bezieht sich darauf, ob ein gegebener Instruktionsstrom sich im Bedingungsmodus befindet. Der Bedingungsmodus, wobei Modus als Betriebsart zu verstehen ist, wird durch das Vorhanden-
309810/0597
sein einer Verzweigungs- oder einer Ausführungsinstruktion angegeben. Wenn entweder eine Verzweigungs- oder Ausführungsinstruktion im Instruktionsstrom festgestellt wird, dann wird das Bedingungsmodus-Register für den gegebenen Instruktionsstrom gesetzt. Ist dieses Bedingungsmodus-Register für einen Instruktionsstrom gesetzt, können für diesen speziellen Instruktionsstrom keine Verzweigungs- oder Ausführungsinstruktionen mehr ausgeführt werden, bis die vorher iniziierte Verzweigungs- oder Ausführungsinstruktion vollständig erledigt ist.
Jede der vorstehend genannten vier Prüfungen muß für jeden der beiden voneinander unabhängigen Instruktionsströme durchgeführt werden. In Situationen, in denen eine der vier Prüfungen für jeden der beiden Instruktionsströme mißlingt,wird keine Instruktion von den Instruktionspuffern während eines gegebenen Zyklus zu dem I-Register übertragen. Während des nächsten Vordecodierungszyklus wird die gleiche Prüfung wieder durchgeführt, so daß es dann möglich ist, daß eine Instruktion danach von dem Instruktionspuffer in das !-Register Übertragen wird, da die Bedingungen für jede der soweit erläuterten vier Prüfungen dynamisch sind und diese Bedingungen sich ändern können, in Abhängigkeit von den Zustandsänderungen der Pipeline-Verarbeitungseinheit für einen gegebenen Instruktionsstrom.
Es ist auch möglich, daß die vier Prüfungen für den einen Instruktionsstrom gelingen, während sie für den zweiten bei einer oder mehreren der Prüfungen mißlingt. In dieser Situation werden die Instruktionen des Instruktionsstromes, bei dem die vier Prüfungen erfolgreich verliefen, von dem Instruktionspuffer in das I-Register durchgeschaltet. Wenn die Instruktionen für die beiden unabhängigen Instruktionsströme die vier genannten Prüfungen erfolgreich durchlaufen, muß eine zusätzliche Prüfung durchgeführt werden. Diese zusätzliche Prüfung ist in dem Ab lauf diagramm in Fig. 3B dargestellt. Dieses symbolisiert den Sachverhalt, daß alle vier Prüfungen erfolgreich von den beiden Instruktionsströmen A und B durchlaufen würden.
309810/Q597
WA 9 71 002
Ob zwar vorstehend besonders vier Prüflingen erwähnt wurden, können auch mehr oder weniger Prüfungen durchgeführt werden. Die Anzahl und die Art der Prüfungen ist eine Frage der Schaltkreisstruktur der Pipeline-Verarbeitungseinheit und ihrer Verarbeitungsmittel. Je größer die Anzahl der Operationen ist, die unabhängig durchgeführt werden können, umso mehr unabhängige Prüfungen müssen durchgeführt werden, wobei auch die Umkehrung Gültigkeit besitzt. Unabhängig davon, welche Prüfungen durchgeführt werden, ist jedoch der Zweck zu bestimmen, ob eine Instruktion verarbeitet werden wird, wenn sie in das I-Register (der ersten Position der Instruktionen in der Pipeline-Verarbeitungseinheit) durchgeschaltet wird. Alle derartigen notwendigen Prüfungen müssen im Vordecodierungsbereich durchgeführt werden.
Wenn die ersten vier Prüfungen für beide Ströme erfolgreich durchgeführt wurden, wird die erste gemeinsame Prüfung bezüglich beider Instruktionsströme durchgeführt, das ist eine Prüfung, die sich auf den Bedingungsmodus bezieht. Wenn ein Instruktionsstrom sich im Bedingungsmodus befindet und der andere nicht, dann wird die Instruktion aus demjenigen Instruktionsstrom, der sich nicht im Bedingungemodus befindet, vom Instruktionspuffer zu dem I-Register durchgeschaltet.
Sind aber beide Instruktionsströme im Bedingungsmodus, dann muß eine weitere Prüfung durchgeführt werden, die bestimmt, welcher Instruktionsstrom eine Instruktion aufwies, die im vorhergehenden Zyklus in das I-Register durchgeschaltet wurde. Wenn der Instruktionsstrom A eine vorhergehende Instruktion besaß, die im vorhergehenden Zyklus in das I-Register durchgeschaltet wurde und beide Instruktionsströme sich im Bedingungsmodus befinden, dann wird die nächste Instruktion, die zu dem I-Register übertragen wird, dem Instruktionsstrom B entnommen. Diese Art der Durchschaltung oder übertragung stellt einen alternierenden Algorithmus dar, der Instruktionen erfordert, die zwischen beiden Instruktionsströmen in Fällen abwechseln, in denen alle anderen Prüfungen
WA971OO2 309810/0597
mißlingen, um die Entscheidung zu treffen, welche Instruktion als nächste in das I-Register übertragen werden soll.
Das Ablaufdiagramm in Fig. 3B zeigt, daß wenn beide Instruktionsströme sich nicht im Bedingungsmodus befinden, die nächste Prüfung sich auf die Bestimmung bezieht, ob die nächste Instruktion in jedem Instruktionsstrom entweder eine Verzweigungs- oder AusführungsInstruktion ist. Wenn alle vorausgegangenen Prüfungen bezüglich der Auswahl der nächsten Instruktion mißlangen, wird derjenige Instruktionsstrom, der eine Verzweigungs- oder Ausführungsinstruktion enthielt, derjenige Instruktionsstrom sein, aus dem eine Instruktion vom Instruktionspuffer in das I-Register übertragen wird. Wo beide Instruktionsströme wieder Verzweigungs- oder AusführungsInstruktionen aufweisen, die in dem jeweiligen Instruktionspuffer warten, wird ein alternierender Algorithmus angewendet.
In denjenigen Fällen, in denen alle anderen Prüfungen versagten, um festzusetzen, welcher Instruktionsstrom seine Instruktion vom Instruktionspuffer in das I-Register überträgt, wird ein alternierender Algorithmus verwendet. Der alternierende Algorithmus dient prinzipiell dazu, sicherzustellen, daß kein Instruktionsstrom die Verarbeitungseinheit monopolisieren kann, so daß er überhaupt Instruktionen aus dem anderen Instruktionsstrom gegen eine Verarbeitung sperren kann.
Fig. 4A zeigt eine logische Schaltkreisstruktur als Blockschaltbild, die in der Vordecodierung verwendet wird. Das UND-Tor 100 dient zur Durchführung der ersten Prüfung, die die Vordecodierung bezüglich des Instruktionsstroms A vornimmt. Das UND-Tor 100 erfordert 3 Eingangssignale. Das erste Signal ist eine Anzeige dafür, ob es das Q-Register A mit dem Bezugszeichen in Fig. 2 voll ist. Es wird später noch gezeigt, daß alle Instruktionen des Instruktionsstroms A durch das Q-Register A hindurchlaufen. Der zweite Signaleingang für das UND-Tor 100 in Fig. 4A ist ein Signal, das angibt, ob das Ql-Register 54
WA 971 002 309810/0597
222A537
voll ist. Der dritte Eingang liefert eine Angabe darüber, ob das Q2-Register 56 ebenfalls voll ist. In der Situation, in der ein positives Signal an jedem der Eingänge des UND-Tores 100 auftritt, liefert der Ausgang dieses UND-Tores 100 ein negatives Signal. Wenn ein positives Signal an jedem der Eingänge angibt, daß das zugeordnete Q-Register voll ist, gibt das negative Ausgangssignal des UND-Tores 100 an, daß alle Q-Register des entsprechenden Instruktionsstromes voll sind und daß die Prüfung Nummer 1 nicht erfolgreich verlief. Daher wird ein negatives Signal am Ausgang Nummer 1 in Fig. 4A erzeugt, das als Eingangssignal Nummer 1 zu dem ODER-Tor 102 in Fig. 4B übertragen wird. Das Ausgangssignal dieses ODER-Tores 102 ist positiv, wenn ein Signal an einem seiner vier Eingänge negativ ist. Ein positives Ausgangssignal des ODER-Tores 102 dient zur Angabe, daß der Inhalt des Instruktionspuffers A nicht in das I-Register übertragen werden sollte.
Die zweite Prüfung, die für jeden der Instruktionsströme in der Vordecodierung durchgeführt wird, ist die Prüfung auf Sperrung der Allzweckregister (X, B-Feld) (in den Fign. 1 und 2 nicht dargestellt). Bei dieser besonderen Prüfung wird der Inhalt der Allzweckregister, der schon von früher in der Pipeline ausgeführten Instruktionen eingespeichert wurde, mit dem Inhalt des Allzweckregisters verglichen, daß für die Adressierung durch Instruktionen verwendet wird, die laufend in dem Instruktionspuffer enthalten sind. Diese Prüfung wird mit Hilfe des Exklusiv-ODER-Tores 104 realisiert. Die X- und B-Felder der Instruktion des Instruktionsstromes A treten in der Darstellung nach Fig. 4A in das Exklusiv-ODER-Tor 104 ein. Diese Felder dienen für die Adreßrechnungen des Allzweckregisters, das durch die Ausführung der sich gerade im Instruktionspuffer A befindlichen Instruktion verändert werden wird. Die noch ausstehende Information der Allzweckregister von den Q-Registern sind ebenfalls in der Phase dargestellt, in der sie in das Exklusiv-ODER-Tor 1.04 einlaufen. Diese Bits repräsentieren die Adresse der Allzweckregister für den Instruktionsstrom A, der von
WA 971 002 309810/0597
Instruktionen verändert wird, die sich bereits in der Pipeline befinden. Wenn ein exaktes Vergleichsergebnis zwischen den Allzweckregisteradressen, die in der Instruktion im Instruktionspuffer enthalten sind und der Adresse des Allzweckregisters, das von einer schon initialisierten Instruktion verändert wird, dann sollte die Instruktion im Instruktionspuffer für denjenigen Instruktionsstrom, der diese Bedingung aufweist, nicht ausgeführt werden. Diese Bedingung kann durch das genaue Vergleichsergebnis zwischen diesen Adressen und durch ein negatives Ausgangssignal des Exklusiv-ODER-Tores 104 angegeben werden. Dieses negative Signal wird weiter zu dem ODER-Tor 102 in Fig. 4B übertragen und dient zur Erzeugung eines Signals, das die Durchschaltung der Instruktionen vom Instruktionspuffer A in das I-Register verhindert. Diese Prüfung ist notwendig, um sicherzustellen, daß die Instruktion, die sich im Instruktionspuffer befindet, die korrekten Daten im Allzweckregister benutzt, die von der Instruktion verwendet werden. Dieses wird dadurch erreicht, daß sichergestellt wird, daß alle DatenVeränderungen in diesem Allzweckregister abgeschlossen sind, bevor die Instruktion im Instruktionspuffer iniziiert wird.
Die dritte Prüfung in der Vordecodierung wird mit einem Flip-Flop 106 und einem UND-Tor 108 durchgeführt. Das Ausgangssignal des Flip-Flop 106 ist positiv, wenn es eingestellt wurde, so daß es anzeigt, daß der Instruktionsstrom A bereits eine VFL-Instruktion (Instruktion mit variabler Feldlänge) iniziiert hat. Das UND-Tor 108 arbeitet auf die gleiche Weise wie das UND-Tor 100, so daß es ein negatives Signal erzeugt, wenn die entsprechenden Eingangsbedingungen erfüllt sind. Dieses ist der Fall, wenn für den Instruktionsstrom A eine VFL-Instruktion iniziiert wurde, daß diese Instruktion Operanden besitzt, die nicht innerhalb Doppelwortgrenzen liegen und daß die nächste Instruktion des Instruktionsstromes A einen Speicheroperanden benötigt. Wenn alle diese Bedingungen erfüllt sind, dann verläuft die Prüfung Nummer 3 nicht erfolgreich und das Ausgangssignal des UND-Tores 108 ist negativ, so daß es die Durchschaltung des Inhaltes des
WA 97! 002 309810/0597
222A537
- 16 Instruktionspuffers A in das I-Register verhindert.
Die Prüfung Nummer 4 wird mit Hilfe des Flip-Flops 110 und des ÜND-Tores 112 durchgeführt. Der Flip-Flop ilO wird eingestellt, wenn der Instruktionsstrom A eine VerzweigungsInstruktion feststellt, d.h., daß sich der Instruktionsstrom A im Bedingungsmodus befindet. Das Ausgangssignal des Flip-Flop 110 ist positiv, wenn dieser Flip-Flop eingestellt ist. Durch die Decodierung des Instruktionscodes der Instruktion in dem Puffer A kann ein Signal erzeugt werden, das zu dem UND-Tor 112 gelangt, das angibt, ob die im Instruktionspuffer A befindliche Instruktion eine Verzweigungsinstruktion ist. Wenn sich der Instruktionsstrom A im Bedingungsmodus befindet und die nächste Instruktion in dem Instruktionspuffer A eine Verzweigungsinstruktion ist, dann verläuft die Prüfung Nummer 4 nicht erfolgreich und es erscheint ein negatives Signal am Ausgang des UND-Tores 112. Dieses Signal wird ebenfalls zu dem ODER-Tor 102 in Fig. 4B übertragen und erzeugt dort ein Signal, das die Durchschaltung der im Puffer A befindlichen Instruktion in das I-Register verhindert.
Die in Fig. 4B dargestellte Schaltung ist prinzipiell so entworfen worden, daß sie die ersten vier Prüfbedingungen für den Instruktionsstrom A behandeln kann. Für den Instruktionsstrom B muß daher eine identische logische Struktur und es müssen die'angegebenen entsprechenden Eingangssignale vorliegen. In der Fig. 4B sind die Eingänge für die vier Prüfungen des Instruktionsstroms B mit Nummer I1, 21, 31 und 41 bezeichnet. Diese Eingänge beziehen sich auf das ODER-Tor 114, dessen Ausgangssignal positiv ist, wenn irgendeiner der Eingänge ein negatives Signal führt. Darüber hinaus wird immer wenn das Ausgangssignal des ODER-Tores 114 positiv ist, die Instruktion, die sich im Instruktionspuffer B befindet, nicht in das I-Register übertragen.
Der Rest der Schaltung in Fig. 4B besitzt ferner die gleichen
WA9710O2 309810/0597
logischen Merkmale der UND- und ODER-Tore, die bereits in Zusammenhang mit Fig. 4A erläutert wurden. Darüber hinaus sind in der linken Seite von Fig. 4B bestimmte zusätzliche Rückwirkungseingänge von der Pipeline-Verarbeitungseinheit dargestellt. Die Signale an diesen Eingängen sind immer dann positiv, wenn die an jeder Eingangsleitung angegebene Bedingung erfüllt ist. Die Schaltung nach Fig. 4B erzeugt am Ausgang des ODER-Tores 116 ein Signal, das den Inhalt des Instruktionspuffers B in das I-Register durchschaltet und zwar gemäß allen Prüfungen, die in den Ablaufdiagrammen in den Fign. 3A und 3B erläutert wurden. Das gleiche trifft zu für den Ausgang des ODER-Tores 118, der ein Signal für die Durchschaltung der Instruktion im Instruktionspuffer A in das I-Register erzeugt.
Wie Fig. 2 zeigt, empfängt das I-Register 48 (Instruktions-Register) Informationen von beiden Vordecodierern 44 und 46. Tatsächlich erzeugen die Vordecodierer Signale für die Durchschaltung der in den beiden Instruktionspuffern 40 und 42 gepufferten Information.
Die Funktion des I-Registers besteht in der Einleitung der Ausführungsphase für die von einem Vordecodierer ausgewählte Instruktion. Das I-Register 48 kann daher als die erste Position in einer Pipeline-Verarbeitungseinheit betrachtet werden, durch die eine Instruktion laufen muß, wenn sie ausgeführt werden soll.
Wenn die sich in dem I-Register befindliche Instruktion eine Adressenrechnung benötigt, dann wird der notwendige Zugriff zu einem Allzweckregister für die Instruktion im I-Register vorgenommen. Bevor jedoch die Adressenrechnung durchgeführt wird, müssen die Verfügbarkeit eines Adressenregisters und der Operandenpuffer sichergestellt und diese Mittel der Instruktionsoperation zugeteilt werden. Zusätzlich zu der Mittelzuteilung wird die Instruktion, während sie sich in dem I-Register befindet, auf Gültigkeit geprüft und ferner werden die Adressenfelder der Allzweckregister geprüft, um zu bestimmen, ob sie die durch den besonderen Operationscode der Instruktion diktierten Restriktionen erfüllen. Wenn
309810/0597
WA 971 002
eine Ausnahme festgestellt wird, wird der betreffende Instruktionsstrom unterbrochen und eine ungültige Instruktion angezeigt. Die oben erwähnten Prüfungen erfolgen durch externe Schaltkreise, die in den beiliegenden Figuren nicht dargestellt sind, die aber direkt an das I-Register angeschlossen sind. Diese Prüfungen werden durch Schaltkreise durchgeführt, die im wesentlichen den gleichen Aufbau besitzen wie die Prüfschaltungen in den bekannten Maschinen des IBM System/360.
Wenn die Prüfungen in dem I-Register 48 beendet sind, gelangt die Instruktion in die Q-Register 54, 56, 50 und 52. Die Q-Register dienen als Zwischenpuffer für die Instruktionen der verschiedenen Instruktionsströme und als Kurzzeitspeicherplätze für diese Instruktionen für die Zeit, während der die Pipeline-Verarbeitungseinheit für die Verarbeitung der Instruktion fertig gemacht wird. Wenn die Instruktionen des I-Register 48 verlassen, können sie zu drei Speicherplätzen gelangen: Ql-Register 54, Q-Register A 50 und Q-Register B 52. Wenn die Instruktion eine Instruktion des Instruktionsstroms A ist, kann diese Instruktion nur zu dem Ql-Register 54 oder dem Q-Register A 50 gehen, während eine Instruktion aus dem Instruktionsstrom B entweder zu dem Ql-Register 54 oder dem Q-Register B 52 gelangen kann. In jedem Falle muß jede Instruktion des Instruktionsstromes A mindestens eine Zykluszeit im Q-Register A 50 zubringen, während jede Instruktion des Instruktionsstroms B mindestens eine Zykluszeit im Q-Register B 52 verbringen muß.
Wenn sich eine Instruktion im Q-Register A 50 beispielsweise befindet, wird die Instruktion einer Allzweckregister-Gültigkeitsprüfung unterworfen, eine Prüfung, die durch geführt wird, um sicherzustellen, ob die Verarbeitungseinheit Operanden vom Speicher sucht, die für die Verarbeitung der Instruktion notwendig sind. Eine ähnliche Prüfung wird gleichzeitig bezüglich des Q-Registers B 52 für jede Instruktion durchgeführt, die sich in ihm befindet. Wenn diese Prüfungen vorüber sind, wird die Instruktion während des nächsten Zyklus in ein I-Register über-
971 002 309810/0597
- 19 übertragen, die jedem Q-Register zugeordnet ist.
Unter bestimmten Umständen verlaufen die Prüfungen In dem Q-Register für einen bestimmten Instruktionsstrom ungünstig. Daher wird beispielsweise der sich im Q-Register A 50 befindlichen Instruktion eine übertragung in das E*-Register A 58 nicht erlaubt. Dieses bedeutet, daß, wenn das I-Register 48 eine Instruktion vom Instruktionsstrom A enthielte, die Instruktion vom I-Register 48 zu dem Ql-Register 54 übertragen würde, da das Q-Register A eine Instruktion enthielte, die noch nicht verarbeitet worden wäre. Wenn gleichzeitig eine Instruktion im Ql-Register 54 enthalten wäre, würde diese Instruktion zu dem Q2-Register 56 Übertragen. Wenn die Instruktion im Ql-Register eine Instruktion des Instruktionsstroms B wäre, dann würde diese vom Ql-Register 54 zu dem Q-Register B 52 übertragen, wenn das Q-Register B 52 leer wäre.
Die Register 54 und 56 dienen als Zwischenpuffer zwischen dem I-Register 48 und dem Q-Register A 50 und dem Q-Register B 52. Die Durchschaltesammelleitungen, die in Fig. 2 dargestellt sind, zeigen, daß die Ql-Register 54 und Q2-Register 56 mit dem Q-Register A 50 oder Q-Register B 52 verbunden werden können. Diese Durchschaltung kann jedoch nur erfolgen, wenn entweder das Q-Register A 50 oder das Q-Register B 52 leer sind und die Instruktion, die vom Ql-Register 54 oder dem Q2-Register 56 her übertragen wird, zu dem entsprechenden Instruktionsstrom gehört. Die Durchschaltungseinrichtung ist ferner so ausgebaut, daß die Instruktionen in einem gegebenen Instruktionsstrom nicht außerhalb ihrer Reihenfolge verarbeitet werden. Obwohl die Durchschaltungseinrichtung nicht dargestellt ist, sind ihre Funktionen so deutlich beschrieben, daß der Fachmann die Steuerung für den Betrieb der Q-Register ohne weiteres entwerfen kann.
Wenn eine Instruktion das Ε-Register (Ausführung) erreicht, werden nur noch ein paar Prüfungen durchgeführt, bevor die Instruktion von der Pipeline-Verarbeitungseinheit 62 verarbeitet wird.
971 Ü02 3098 10/0597
Wenn eine Instruktion, die einen Speicheroperanden benötigt, in das Ε-Register übertragen wird, wird eine Prüfung durchgeführt, um sicherzustellen, daß der Operand auch verfügbar ist. Wenn diese Prüfung nicht erfolgreich verläuft, dann ist die Pipeline-Verarbeitungseinheit nicht in der Lage, diese Daten abzurufen und die Verarbeitung dieses Instruktionsstroms muß so lange zurückgestellt werden, bis der Speicherabruf erfolgreich beendet ist. Wenn die Prüfung dagegen anzeigt, daß der Speicheroperand verfügbar ist, dann wird dieser in die Arbeitsregister der Pipeline-Verarbeitungseinheit übertragen. Zusätzlich werden alle Allzweckregisterzugriffe durchgeführt, während sich die Instruktion im Ε-Register befindet. Wenn diese Prüfungen und Operationen beendet sind, ist die Instruktion für eine sofortige Verarbeitung in der Pipeline-Verarbeitungseinheit 62 bereit. Unter besonderen Umständen kann eine Instruktion, die sich im Ε-Register A 58 und im Ε-Register B 60 befindet, gleichzeitig von der Pipeline-Verarbeitungseinheit verarbeitet werden, wenn dort genügend Parallelkapazität für diese Verarbeitung vorhanden ist. Diese Parallelkapazität ist eine Entwurfsfrage der betreffenden Pipeline-Verarbeitungseinheit und wird hier nicht als Teil der Erfindung behandelt. Unter normalen-Umständen jedoch werden die Instruktionen, die in den E-Registern 58 und 60 fertig für die Verarbeitung vorliegen, wechselweise verarbeitet. Nur unter Bedingungen, in denen die Instruktion im Ε-Register diese Prüfungen nicht erfolgreich besteht, werden zwei oder mehr Instruktionen aus einem einzigen Ε-Register in aufeinanderfolgenden Maschinenzyklen von der Pipeline-Verarbeitungseinheit 62 verarbeitet.
WA 971 002 309810/0597

Claims (5)

  1. - 21 -
    PATENTANSPRÜCHE -
    Einrichtung in einem elektronischen Datenverarbeitungssystem mit einem Hauptspeicher und einer Instruktionsverarbeitungseinrichtung zur Instruktionsselektion, dadurch gekennzeichnet, daß mindestens ein erster (14; Fig. 1) und zweiter (16) Instruktionspuffer für die Zwischenspeicherung mindestens einer Instruktion in jedem Puffer, wobei jeder Instruktionspuffer einem von mindestens zwei voneinander unabhängigen Instruktionsströmen (A oder B) fest zugeordnet ist, vorgesehen ist und daß eine Wählschaltung (18) mit den mindestens zwei Instruktionspuffern verbunden ist und die nächste von den in einem der mindestens zwei Instruktionspuffer gespeicherten Instruktionen für die Verarbeitung durch die Verarbeitungseinheit (12) auswählt, indem die mit ihrem . Durchschaltenetzwerk (22) die ausgewählte Instruktion zur Verarbeitungseinheit überträgt.
  2. 2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Wählschaltung mit einem Eingangsnetzwerk (20; Fig. 1) mit der Verarbeitungseinheit (12) verbunden ist, in dem Prüfkreise* (Fign. 4A, B) vorgesehen sind, die die Verfügbarkeit vöii Verarbeitungsmitteln in der Verarbeitungseinheit prüfen und daß die Wählschaltung davon abhängig die nächste auszuführende Instruktion aus einem entsprechenden Instruktionspuffer (14, 16) auswählt.
  3. 3. Einrichtung nach Anspruch 1 und/oder 2, dadurch gekennzeichnet, daß mindestens zwei Prüfeinrichtungen (45, 46; Fig. 2) vorgesehen sind, die jeweils zur Abfrage der Verfügbarkeit der Verarbeitungsmittel einerseits mit der Verarbeitungseinheit (62) und andererseits mit einem Instruktionspuffer (40 oder 42) zur Bestimmung verbunden sind, ob für die im angeschlossenen Instruktionspuffer befindliche Instruktion' die Verarbeitungsmittel für die Verarbeitung dieser Instruktion geeignet sind, wobei an den Ausgängen (auf 102,
    WA 971 002 309810/0597
    114, 116, 118; Fig. 4B) Signale erzeugt werden, die die Verfügbarkeit von Verarbeitungsinittels für die Instruktion im angeschlossenen Instruktionspuffer angeben und daß das Durchschaltenetzwerk (64) in Abhängigkeit von diesen Signalen nur eine Instruktion von den Instruktionen in den Instruktionspuffern zur Verarbeitungseinheit überträgt.
  4. 4. Verfahren zum Betrieb einer Einrichtung nach einem oder mehreren der Ansprüche 1 bis 3, gekennzeichnet durch folgende Verfahrensschritte:
    1. Abfrage der Verfügbarkeit von Verarbeitungsmitteln in der Verarbeitungseinheit für die nächste Instruktion in jedem der unabhängigen Instruktionsströme,
    2. Erzeugung einer Verfügbarkeitsangabe für jede Instruktion über die Verarbeitungsmittel, die für deren spezifische Verarbeitung gerade vorhanden sind und
    3. Sperrung oder Übertragung einer Instruktion zur. Verarbeitungseinheit in Abhängigkeit von einer Verfügbarkeitsangabe.
  5. 5. Verfahren nach Anspruch 4, gekennzeichnet durch folgende Verfahrensschritte für den Betrieb des Durchschaltenetzwerks:
    1. Sperrung der übertragung jeder Instruktion, für die keine Verfügbarkeitsanzeige vorliegt, vom Instruktionspuffer zur Verarbeitungseinheit,
    2. Übertragung der Instruktion, für die eine Verfügbarkeitsangabe vorliegt, wenn nur eine Prüfeinrichtung ein solches Signal erzeugt,
    3. übertragung einer Verzweigungs- oder AusführungsInstruktion, wenn beide Prüfschaltungen eine Verfügbarkeitsangabe erzeugen,
    4. abwechselnde übertragung der Instruktionen aus allen Instruktionspuffern, wenn keine der genannten Entscheidungen über die nächste zu übertragende Instruktion getroffen werden kann,
    WA 971 002 30,9810/0597
    O "3
    übertraung der Instruktion desjenigen Instruktionsstroms, der Im unmittelbar vorhergehenden Zyklus nicht übertragen wurde und
    Wiederholung der vorstehend genannten Operationen, bis alle Instruktionen in jedem-unabhängigen Instruktionsstrom zu der Verarbeitungseinheit übertragen wurden.
    97! 002 309810/0597
    Leerseite
DE2224537A 1971-08-31 1972-05-19 Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor Expired DE2224537C2 (de)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
DE2224537A1 true DE2224537A1 (de) 1973-03-08
DE2224537C2 DE2224537C2 (de) 1985-01-17

Family

ID=22644580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2224537A Expired DE2224537C2 (de) 1971-08-31 1972-05-19 Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor

Country Status (7)

Country Link
US (1) US3771138A (de)
JP (1) JPS5317023B2 (de)
CA (1) CA954227A (de)
DE (1) DE2224537C2 (de)
FR (1) FR2151801A5 (de)
GB (1) GB1378565A (de)
IT (1) IT951839B (de)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001787A (en) * 1972-07-17 1977-01-04 International Business Machines Corporation Data processor for pattern recognition and the like
US3959777A (en) * 1972-07-17 1976-05-25 International Business Machines Corporation Data processor for pattern recognition and the like
JPS5039437A (de) * 1973-08-10 1975-04-11
US3875391A (en) * 1973-11-02 1975-04-01 Raytheon Co Pipeline signal processor
JPS5745684Y2 (de) * 1974-05-20 1982-10-08
US4062058A (en) * 1976-02-13 1977-12-06 The United States Of America As Represented By The Secretary Of The Navy Next address subprocessor
SE435429B (sv) * 1977-04-26 1984-09-24 Ericsson Telefon Ab L M Anordning for att mot utgaende informationsflodesgrenar forgrena ett inkommande "pipeline"-informationsflode
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4236204A (en) * 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4320453A (en) * 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
JPS5585956A (en) * 1978-12-21 1980-06-28 Hitachi Ltd Information processor
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
US4439827A (en) * 1981-12-28 1984-03-27 Raytheon Company Dual fetch microsequencer
DE3241357A1 (de) * 1982-11-09 1984-05-10 Siemens AG, 1000 Berlin und 8000 München Vorrichtung zur mikrobefehls-bereitstellung fuer mindestens zwei unabhaengig arbeitende funktionseinheiten in einem integrierten, mikroprogrammierten elektronischen baustein und verfahren zu ihrem betrieb
US5093775A (en) * 1983-11-07 1992-03-03 Digital Equipment Corporation Microcode control system for digital data processing system
DE3419602A1 (de) * 1984-05-25 1985-11-28 Philips Patentverwaltung Gmbh, 2000 Hamburg Schaltungsanordnung zur verringerung der verzerrungen bei einem fm-quadraturdemodulator
US4631662A (en) * 1984-07-05 1986-12-23 The United States Of America As Represented By The Secretary Of The Navy Scanning alarm electronic processor
JPH0776917B2 (ja) * 1984-12-29 1995-08-16 ソニー株式会社 マイクロコンピユ−タ
JPH07107783B2 (ja) * 1985-05-30 1995-11-15 ソニー株式会社 エラ−情報チエツク装置
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4773041A (en) * 1986-06-02 1988-09-20 Unisys Corporation System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor
JPH0760388B2 (ja) * 1987-06-09 1995-06-28 三菱電機株式会社 パイプライン制御回路
GB8817912D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
JPH0770961B2 (ja) * 1988-08-12 1995-07-31 日本電気株式会社 マイクロコンピュータ
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
JPH02306341A (ja) * 1989-02-03 1990-12-19 Nec Corp マイクロプロセッサ
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
EP1526446A3 (de) * 1991-07-08 2007-04-04 Seiko Epson Corporation RISC-Prozessor mit erweiterbarer Architektur
EP0547240B1 (de) * 1991-07-08 2000-01-12 Seiko Epson Corporation Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
WO1993019416A1 (en) * 1992-03-25 1993-09-30 Zilog, Inc. Fast instruction decoding in a pipeline processor
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
EP0636256B1 (de) 1992-03-31 1997-06-04 Seiko Epson Corporation Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0638183B1 (de) 1992-05-01 1997-03-05 Seiko Epson Corporation Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100248903B1 (ko) 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5925125A (en) * 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5481743A (en) * 1993-09-30 1996-01-02 Apple Computer, Inc. Minimal instruction set computer architecture and multiple instruction issue method
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US5928355A (en) * 1997-06-27 1999-07-27 Sun Microsystems Incorporated Apparatus for reducing instruction issue stage stalls through use of a staging register
US5918034A (en) * 1997-06-27 1999-06-29 Sun Microsystems, Inc. Method for decoupling pipeline stages
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
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
US6044460A (en) * 1998-01-16 2000-03-28 Lsi Logic Corporation System and method for PC-relative address generation in a microprocessor with a pipeline architecture
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
US6263424B1 (en) * 1998-08-03 2001-07-17 Rise Technology Company Execution of data dependent arithmetic instructions in multi-pipeline processors
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7051329B1 (en) * 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7139898B1 (en) 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2015971A1 (de) * 1969-04-03 1970-10-15 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Datenverarbeitungssystem zur Verarbeitung eines Stromes mehrfacher Operanden

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2015971A1 (de) * 1969-04-03 1970-10-15 International Business Machines Corp., Armonk, N.Y. (V.St.A.) Datenverarbeitungssystem zur Verarbeitung eines Stromes mehrfacher Operanden

Also Published As

Publication number Publication date
JPS5317023B2 (de) 1978-06-05
US3771138A (en) 1973-11-06
GB1378565A (en) 1974-12-27
FR2151801A5 (de) 1973-04-20
CA954227A (en) 1974-09-03
DE2224537C2 (de) 1985-01-17
JPS4834447A (de) 1973-05-18
IT951839B (it) 1973-07-10

Similar Documents

Publication Publication Date Title
DE2224537A1 (de) Einrichtung und verfahren zur instruktionsselektion
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE2430127C2 (de) Einrichtung zur Steuerung des Speicherzugriffs konkurrierender Benutzer
DE2714805C2 (de)
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE3650156T2 (de) Auf regeln basiertes datenwiederauffindverfahren und anordnung.
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE3687724T2 (de) Digitalprozessorsteuerung.
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE3788492T2 (de) Vorrichtung und Verfahren zur Verbesserung des Cachezugriffdurchflusses in Pipelineprozessoren.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE3689389T2 (de) Datenverarbeitungsprozessor.
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE69324967T2 (de) Cache-Speicherfehlgriffvorhersageverfahren und -vorrichtung für einen nach Seiten organisierten Hauptspeicher in einem Datenverarbeitungssystem
DE1524898C3 (de) Datenspeicher mit direktem mehrdimensionalen Zugriff zur gleichzeitigen Entnahme mehrerer Wörter
DE2906685C2 (de)
DE2617485A1 (de) Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen
DE3105115C2 (de)
DE2759120C2 (de)

Legal Events

Date Code Title Description
OD Request for examination
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee