DE68926183T2 - Ergebnisverfügbarkeit einer Rechensequenz - Google Patents
Ergebnisverfügbarkeit einer RechensequenzInfo
- Publication number
- DE68926183T2 DE68926183T2 DE1989626183 DE68926183T DE68926183T2 DE 68926183 T2 DE68926183 T2 DE 68926183T2 DE 1989626183 DE1989626183 DE 1989626183 DE 68926183 T DE68926183 T DE 68926183T DE 68926183 T2 DE68926183 T2 DE 68926183T2
- Authority
- DE
- Germany
- Prior art keywords
- operation sequence
- results
- operations
- sequence
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 18
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000007792 addition Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000015654 memory Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 4
- 230000001934 delay Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
- Die vorliegende Erfindung betrifft die Verfügbarkeit des Ergebnisses einer Rechensequenz in Verarbeitungssystemen wie z.B. in einem arithmetischen Fließkommagerät, das während der Fließkommaberechnungen gleichzeitig Eingangs/Ausgangsoperationen vorsieht, um die sonst bemerkten großen örtlichen Speicherprobleme zu erleichtern.
- Herkömmlicherweise rechnen Computer mit Ganzzahlenarithmetik. Das heißt, Computer führen Additionen und Subtraktionen binärer Ganzzahlen durch, die als Bits (Binary Digits) dargestellt werden. Aber auch Fließkomma-Arithmetik läßt sich auf Computern durchführen. Fließkomma-Arithmetikparameter beinhalten sowohl eine Mantisse als auch einen Exponenten. Die Verfahren zur Durchführung von Fließkomma-Arithmetik sind anders und viel komplexer, als die Durchführung von Ganzzahlenarithmetik. Wegen dieser Komplexität weisen viele Computer Spezialhardware auf, um arithmetische Eließkommaoperationen durchzuführen. Diese Hardware wird im allgemeinen als Fließkommaeinheit bezeichnet, und ist getrennt von der Zentraleinheit (CPU) vorgesehen.
- Jn der IBM RT PC Workstation ist eine Fließkommaeinheit über einen Bus an die CPU angeschlossen. Die CPU schickt beim Ausführen der Fließkommaanweisungen ihre Befehle über den Bus zur Fließkommaeinheit (Floating Point Unit - FPU), damit diese die Befehle ausführt, und fährt mit der Ausführung ihrer CPU-internen Anweisungen fort, während die FPU ihre arithmetischen Operationen ausführt.
- Bei wissenschaftlichen und technischen Anwendungen ist die Fließkomma-Vektorarithmetik bedeutsam. Es besteht daher eine Bedingung, daß die FPU in der Lage sein muß, Vektor-Fließkommaarithmetik effizient auszuführen. EP 0,169,030 beschreibt eine Datenverarbeitungsschaltung zum Berechnen entweder einer Gesamtsumme oder eines Gesamtprodukts aus einer Vielzahl von Vektordaten. Eine arithmetische Einheit errechnet nacheinander Summen, um Zwischenergebnisse zu erzeugen, die in Registern abgespeichert werden. Diese Zwischenergebnisse werden durch die arithmetische Einheit zur Fließbandverarbeitung zurückgeschickt, um zu einem Endergebnis zu kommen, das z.B. die Gesamtsumme darstellt.
- Auf herkömmliche Weise sind Vektorprozesse gekennzeichnet durch größeren örtlichen Speicherbedarf zum Speichern großer Vektordatenbänke, die es dem Vektorprozessor ermöglichen, Operationen durchzuführen, ohne über eine Schnittstelle auf einen Systemprozessor zurückgreifen zu müssen. In dieser Konfiguration ist die Buswartezeit zwischen dem Systemprozessor und dem Vektorprozessor nicht kritisch, weil das Verhältnis der Vektorverarbeitungsausführung zur Vektor- Eingabe/Ausgabe-(E/A)-Zeit groß ist.
- Größere örtliche Speicher können jedoch kostspielig sein. Die vorliegende Erfindung versucht eine andere Lösung für dieses Dilemma durch Vorsehen der Möglichkeit der gleichzeitigen Durchführung von Arithmetikoperationen und E/A-Operationen.
- Die vorliegende Erfindung sieht ein Datenverarbeitungssystem und -verfahren vor, wie sie in den beiliegenden Ansprüchen 1 bzw. 7 definiert sind.
- Weitere Ausführungsformen der vorliegenden Erfindung sind in den abhängigen Ansprüchen spezifiziert.
- Wie hier nachstehend beispielhaft geoffenbart ist, werden die Berechnungsergebnisse der Operationssequenzen in Registern abgespeichert. Die Register enthalten auch die Parameter für die jeweils nächste Operationssequenz. Den Registern zugewiesen ist entweder das Abspeichern eines Ergebnisses oder eines Parameters, und die Registerzuweisung wird während der ganzen Berechnungsreihe beibehalten. Die Berechnung der Operationssequenzergebnisse wird in Vektorarithmetikanwendungen ausgeführt. Die Vektorarithmetikanwendungen werden im Fließbandverfahren durchgeführt. Die aktuelle Vektorarithmetik beinhaltet Multiplikations- und Additionsoperationen. Während der Durchführung dieser Operationen werden die Register, die die Ergebnisse der früheren Operationen speichern, gelesen. Auch während der Durchführung der laufenden arithmetischen Operationen, werden die Operanden für die nächsten arithmetischen Operation zu diesen Registern geschickt. Da verschiedene arithmetische Operationen in Fließbandform und Eingabe/Ausgaberationen gleichzeitig mit jeder dieser Fließbandoperationen durchgeführt werden, steigert sich die Schnelligkeit, mit der die arithmetischen Eingabe/ Ausgabeoperationen durchgeführt werden, beträchtlich.
- Jetzt soll die vorliegende Erfindung beispielhaft noch näher beschrieben werden unter Bezugnahme auf deren Ausführungsformen sowie, als Kontrast, auf Beispiele auf dem Stand der Technik, und wie in den begleitenden Zeichnungen illustriert wird, in denen
- Fig. 1 A ein Softwareflußdiagrainm ist, das eine Nicht- Vektor arithmetische Berechnung auf dem Stand der Technik zeigt;
- Fig. 1B illustriert die Computeranweisungen zur Durchführung der arithmetischen Operation der Fig. 1A;
- Fig. 2 ist ein Ablaufsteuerungsblockdiagramm, das den Betrieb eines Computers bei der Durchführung der arithmetischen Operation gemäß Fig. 1A auf dem Stand der Technik zeigt;
- Fig. 3 ist ein Blockschaltbild einer Form einer Fließkommaeinheit der vorliegenden Erfindung, die an einen Systemprozessor angeschlossen ist;
- Fig. 4 ist ein Ablaufsteuerungsblockdiagramm, das den gleichzeitigen Betrieb der Fließkommaeinheit zeigt;
- Fig. 5A ist ein Softwareflußdiagramm, das die gleichzeitigen arithmetischen Vektoroperationen zeigt;
- Fig. 5B illustriert die Computeranweisungen zur Durchführung der Prozeduren in Fig. 5A;
- Fig. 6 ist ein Diagramm, das die Register während der Durchführung der Operationen zeigt, die in Fig. 5A illustriert sind;
- Fig. 7A und 7B sind Ablaufsteuerungsdiagramme, die die Durchführung gleichzeitiger Operationen und das Auftreten einer gegenseitigen Verriegelung zeigen; und
- Fig. 8 ist ein Ablaufsteuerungsdiagramm für die Fließkommaeinheit, das die gleichzeitigen Lese-, Additions- und Multiplikationsoperationen zeigt.
- Fig. 1A zeigt eine einfache Schleife zum Durchführen einer Fließkomma-Arithmetikoperation auf dem Stand der Technik. In Schritt 10 wird der Schleifenzähler auf 1 gesetzt. In Schritt 12 wird Y(I) gleich Y(I) plus X(I)*K gesetzt. In Schritt 14 wird der Schleifenzähler I inkrementiert. In Schritt 16 wird eine Entscheidung getroffen, ob I kleiner als ein Parameter N ist, der die Anzahl der Schleifenberechnungen angibt, oder nicht. Wenn der Zähler I kleiner als N ist, springt der Prozeß zu Schritt 12 zurück. Wenn nicht, steigt der Prozeß aus der Schleife aus.
- Die aktuellen ausgeführten Computeroperationen werden als Computeranweisungen in Fig. 1B gezeigt. Als erstes wird die Konstante K in Register Null (R0) gespeichert. Als nächstes wird die Fließkomma-Multiplikationsoperation ausgeführt, wobei X(I) in Register Eins (R1) gelegt wird, R1 mit R0 multipliziert und das Ergebnis in R1 gespeichert wird. Die Fließkommaaddition wird durchgeführt durch Legen von Y(I) in Register Zwei (R2), Addieren von R2 zu R1, und Legen des Ergebnisses nach R2. Schließlich wird das Ergebnis der Operation gelesen durch Abspeichern des Inhalts von R2 nach Y(I)
- Fig. 2 illustriert ein Ablaufblockdiagramm nach dem herkömmlichen Stand der Technik wobei die Multiplikationsoperation 20 ausgeführt wird, gefolgt von der Additionsoperation 22 in der Leseoperation 24, der Schleifenzähler I wird inkrementiert und die nächste Multiplikationsoperation 26, Additionsoperation 28 und Leseoperation 30 wird ebenfalls ausgeführt.
- Somit wird jede dieser Operationen in Übereinstimmung mit ihrem Schleifenzähler ausgeführt. D.h. alle Operationen, die vom gleichen Parameter (I) abhängen, werden der Reihe nach ausgeführt und die jeweils nächsten Operanden (I+1) werden erst dann benutzt, wenn der vorherige Satz Operationen abgearbeitet ist. Mit anderen Worten, es gibt kein Vermischen oder Überlappen von Operationen zwischen der Operationssequenz 1 und der Operationssequenz I+1.
- Fig. 3 zeigt in Blockschaltbildform ein Datenverarbeitungssystem einschließlich einer Fließkommaeinheit 101, verbunden über einen Bus 54 mit einem DMA-Controller 53, der seinerseits über einen Bus 51 mit dem Systemprozessor 50 und dem Systenspeicher 52 verbunden ist. Die Fließkommaeinheit 101 besteht aus einer E/A Steuereinheit 60 die Informationen zwischen dem Systemprozessor 50, dem Systemspeicher 52 und der Fließkommaeinheit 101 über den Systembus 54 überträgt. Diese Daten aus der E/A-Steuereinheit 60 werden über den Bus 62 an Registerdateien 58 und die Fließkomma-Arithmetik- Logikeinheit (ALU) 64 und die Fließkomma-Multiplikationseinheit 74 geschickt. Die ALU 64 führt alle Fließkomma-, Ganzzahlen- und logischen Operationen durch abgesehen von Fließkomma-Multiplikationsoperationen. Die ALU 64 ist so konfiguriert, daß sie bis zu vier Operationen in Fließbandverarbeitung behandeln kann. Mit anderen Worten, in diesen Fließband-Modus werden, unter der Annahme einer ausreichenden Eingabearbeitsrate, vier Operationen gleichzeitig bearbeitet und erzeugen in jedem Zyklus ein Ergebnis. Die Ablaufsteuerung wird vom Oszillator 6 über die Leitung 8 wahrgenommen.
- Die Multipliziereinheit 74 führt alle Fließkommamultiplikationen durch und kann so im Fließbandbetrieb arbeiten, daß sie bis zu zwei Operationen in doppelter Genauigkeit oder vier Operationen in einfacher Genauigkeit gleichzeitig durchführt. Im Einfachgenauigkeitsmodus liefert der Multiplikator 74 in jedem Zyklus ein Resultat. Im Doppelgenauigkeitsmodus wird alle vier Zyklen ein Resultat geliefert. Die ALU 64 legt einen Ausgang auf den Bus 66 zu einem Gatterelement 68. Auf gleiche Weise legt der Multiplikator 74 das Ergebnis auf den Bus 76 zu einem Gatterelement 80. Die Gatterelemente 68 und 80 sind wie gezeigt an den Bus 62 angeschlossen. Die Registerdatei 58 wird benutzt zum Speichern sowohl der Operandenparameter als auch der Resultatparameter.
- Der Mikrocodeabschnitt 98 und der Sortiererabschnitt 100 steuern die Operation der Fließkommaeinheit 101. Der Sortierer 100 liefert eine Adresse zum Zugriff auf die Mikrocodeeinheit 98. Der Sortierer 100 ist verbunden mit der Befehlsdecodiereinheit 90, die ihre Befehle über einen Bus 54 vom Systemprozessor 50 erhält. Diese Befehle werden in der Befehlsdecodiereinheit 90 decodiert und über den Bus 92 durch das Gate 94 an den Bus 96 und zum Sortierer 100 geleitet, um einen spezifischen Abschnitt des Mikrocodes zur Ausführung auszuwählen. Die einzelnen Bits im Mikrocode werden benutzt zum Steuern der E/A-Einheit 60 über einen Bus 86, der ALU 64 über einen Bus 81, und des Multiplizierers 74 über einen Bus 82. Die Befehlsdecodiereinheit 90 trennt bei Eingang der Befehle vom Systembus 54 die Befehle in zwei Kategorien. Die erste Kategorie gilt für sequentielle Befehle, die in einer spezifischen Reihenfolge ausgeführt werden müssen. Die zweite Kategorie gilt für gleichzeitige Befehle, die gleichzeitig ausgeführt werden können, das heißt, daß die gleichzeitigen Befehle die Ausführung der aufeinanderfolgenden Befehle, die gerade bearbeitet werden, überlappen können.
- Fig. 4 ist ein Ablaufsteuerungsblockdiagramm, das den Betrieb der Anordnung der Fig. 3 bei der Ausführung multipler arithmetischer Sequenzen (ähnlich der in Fig. 1A) im Parallelbetrieb zeigt. Im einzelnen werden die Multikationsoperation 110 und die Additionsoperation 112 nacheinander ausgeführt. Als nächstes werden die Multiplikationsoperation 114 und die Additionsoperation 118 parallel mit der Leseoperation 116 ausgeführt. Diese Parallelbetriebssequenz fährt fort bis die letzte Multiplikations- und Additionsoperation abgeschlossen ist und die letzte Leseoperation 132 ausgeführt wird. In der bevorzugten Ausführungsform illustriert jeder Block die Berechnung einer Vektoroperation, die vier gesonderte arithmetischer Operationen beinhaltet. Die Abschnitte 111, 113 und 115 in Klammern zeigen eine Operationsschleife, die wiederholt wird, bis die letzten Vektormultiplikations- und -additionsoperationen abgeschlossen sind. Auf diese Weise liefert in dieser bevorzugten Ausführungsform die Leseoperation 132 vier Ergebnisse.
- In dieser bevorzugten Ausführungsform wird der Vektorparallelprozeß im Flußdiagramm der Fig. 5A dargestellt. In Schritt 150 wird der Matrixindex 1 initialisiert. J, das die Anzahl der Elemente in der Matrix angibt, an denen die Berechnung durchgeführt werden muß, wird fertiginitialisiert. Die Konstante K wird in einem Register gespeichert und die ersten vier Multiplikations- und Additionsoperationen werden ausgeführt. Mit anderen Worten, die Vektoroperationen führen vier sich überlappende Multiplikations- und Additionsoperationen durch, wobei die ersten vier Elemente von X mit der Konstanten K multipliziert und dann zu den ersten vier Elementen der Matrix Y addiert werden. Die Ergebnisse jeder dieser vier Operationen wird dann in dem entsprechenden Register abgelegt. Im Schritt 152 wird der Matrixindex um vier inkrementiert, so daß die Berechnungen der nächsten vier Elemente von X und Y vorgenommen werden können. J wird um vier dekrementiert, weil die Berechnung mit vier Elementen von X und Y abgeschlossen wurde. In Schritt 154, wenn die Anzahl der noch übrigen Elemente kleiner als vier ist, springt der Prozeß zu Schritt 156. Wenn nicht, springt der Prozeß zu Schritt 156.
- In Schritt 156 werden vier Multiplikationsoperationen und vier Additionsoperationen nacheinander ausgeführt. Jede der vier Operationen wird in Fließbandbearbeitung parallel zum Lesen der Ergebnisse der vorangehenden Operation ausgeführt. In Schritt 158 werden die Zähler für I und J inkrementiert wie gezeigt. In Schritt 160, wenn J kleiner als 4 ist, geht der Prozeß auf Schritt 174 über. Wenn nicht, geht der Prozeß auf Schritt 162 über, um die arithmetische Vektoroperation im Parallelbetrieb mit der Leseoperation auszuführen. In Schritt 164 werden I und J inkrementiert wie gezeigt. Der Entscheidungsschritt 166 ist ähnlich dem Entscheidungsschritt 160. Wieder werden in Schritt 168 die Leseoperationen parallel zur Vektorarithmetik ausgeführt. In Schritt 170 werden I und J inkrementiert und im Entscheidungsschritt 172 springt der Prozeß entweder in Schleife zu Schritt 156 zurück, oder steigt zu Schritt 174 aus wie gezeigt. In Schritt 174 werden die Ergebnisse der vorhergehenden Operationen gelesen. In Schritt 176 wird jede noch übrige Operation (übrig heißt, der Schleifenzähler zeigt unter 4) seriell durchgeführt. Während der Schleife in Fig. 5A wiederholen sich die Schritte 162, 166, 168, 170 und 172 und könnten reduziert werden, die Erweiterung wurde in der bevorzugten Ausführungsform vorgesehen, um die Schleifenverzweigungen zu reduzieren und somit die Ausführung zu beschleunigen.
- In Fig. 5B sind in Schritt 150 Computerbefehle dargestellt, die Konstante K wird in Register zweiunddreißig (R32) gelegt. Die Vektormultiplikations- und Vektoradditionsoperationen werden unter Verwendung der gezeigten Register durchgeführt, wie dargestellt wird. Auf gleiche Weise beinhalten die Schritte 156, 162 und 168 Befehle wie angegeben. Als letztes beinhaltet Schritt 174 das Lesen der als letzte ausgeführten Vektormultiplikations- und -additionsoperationen.
- Fig. 6 illustriert den Datenfluß in die und aus den Registern sechzehn bis zweiunddreißig (R16-R32) während der Vektorarithmetik- und Leseoperationen. Zunächst wird die Konstante K in R32 gespeichert (Beispiel 200). Im Registersatz 202 werden die vier X-Werte in R16 - R19 gespeichert und das Ergebnis der Berechnung X mal K wird in R20 - R23 gespeichert. In Beispiel 204 werden die Original-Y-Werte in R24 - R27 und die neu berechneten Y-Werte in R28 - R31 gespeichert. In Beispiel 206 werden die nächsten vier X-Werte in R16 - R19 gespeichert und das Ergebnis der ersten Multiplikation der Konstanten und die nächsten X-Werte werden in R20 - R23 gespeichert. Hier ist anzumerken, daß R24 - R27 noch immer die Ergebnisse der vorhergehenden Sequenz beinhaltet. In Beispiel 208 werden die Inhalte von R28 - R31, enthaltend die Y-Parameter, gelesen, mit anderen Worten, sie werden aus der Registerdatei 58 (Fig. 3) auf den Systembus 54 gelegt. Das geschieht parallel zur zweiten Multiplikationsoperation, die als Beispiel 206 illustriert wird. Dann wird die zweite Vektoradditionsoperation durchgeführt und führt dazu, daß die alten Y-Werte, die in R24 - R27 gespeichert sind, zur Berechnung der neuen Y-Werte benutzt werden, die in R28 - R31 gespeichert werden. Die Beispiele 208 und 210 zeigen auch eine Hardware-Verriegelungsvorrichtung, die vorgesehen ist, um das Speichern der neuen Daten in R28 - R31 zu verhindern, bis das Auslesen der vorangehenden Daten aus diesen Registern abgeschlossen ist.
- Fig. 7A und 7B illustrieren Ablaufsteuerungsdiagramme für die parallel ablaufenden Operationen und die Operationen mit einer Verriegelung. In Fig. 7A repräsentiert die Zeile 220 die Zeitintervalle, während denen der N-te Sequenzbefehl 220A und der N+l-te Sequenzbefehl 220B auftreten. Diese Wellenform wird über die Leitung 86 vom Sortierer 100 an die E/A-Steuereinheit 60 gegeben. Während des Anlaufens der Befehlsausführung 220A erhält der Sortierer 100 ein Flag und Daten von der Befehlsdecodiereinheit 90. Die geeigneten Daten werden über den Bus 62 aus der Registerdatei 58 an die ALU 64 und die Multipliziereinheit 74 geschickt. Die Zyklen auf Bus 62, die von der ALU 64 und der Multiplikationseinheit 74 nicht benutzt werden, sind als Wellenform 221 dargestellt. Die Zyklen 221A bis 221F stellen Buszyklen (für den Bus 62) dar, die während der Ausführung des Befehls N nicht erforderlich sind. Diese Zyklen stehen der E/A-Steuereinheit 60 über die Leitung 86 vom Sortierer 100 her zur Verfügung. In diesem Beispiel greift die E/A-Steuereinheit 60 während der Zeiten 222A bis 222D auf die Registerdatei 58 zu, um die Parallel-Leseoperationen für die Anweisung N-1 während der Zyklen 2218 bis 221E auszuführen. In diesem Fall läuft die Parallel-Leseanweisung für den Befehlsgeber N-1 nach der Ausführung der sequentiellen Instruktion an, aber sie wird während der Ausführung des Befehlsgebers N abgeschlossen. Da die Parallel-Leseoperationen, angezeigt durch Wellenform 224, vor dem Ende der sequentiellen Befehls-N-Ausführung abschließt, kann die Ausführung der nächsten sequentiellen Anweisung N+1 beginnen, wie gezeigt wird.
- Fig. 7B zeigt einen gegenteiligen Fall. In diesem Fall wird der N-te sequentielle Befehl 226A ausgeführt wie vorher, mit dern Unterschied, daß nur drei unbenutzte Buszyklen 227A bis 227C zur Verfügung stehen, wie an der Wellenform 227 gezeigt wird. Im diesem Beispiel läuft die E/A-Steuereinheit 60 mit dern ersten Parallel-Leseoperationstakt 228A an (Wellenform 228). Da aber vier Buszyklen erforderlich sind und nur zwei Parallel-Leseoperationen, 228A und 228B abgeschlossen werden können bevor die Ausführung des Befehls N (226A) abgeschlossen ist, müssen die übrigen zwei Operationen 228C und 228D nach Abschluß der Durchführung des Befehls N ausgeführt werden (Zeit 226B). Zu diesem Zeitpunkt sind alle Buszyklen frei (Periode 227D), und die E/A-Steuereinheit 60 verzögert oder verriegelt das Anlaufen der Ausführung des nächsten Befehls N+1 durch Beanspruchen der Wellenform 230A über den Bus 89 zur Befehlsdecodiereinheit 92, damit verhindert wird, daß die nächsten Befehlsdaten und Flag-Informationen an den Sortierer 100 geschickt werden. Zum Zeitpunkt 230B verläßt die E/A-Steuereinheit 60 den Bus 62 und der nächste sequentielle Befehl N+1 beginnt mit der Ausführung (226D). Diese gegenseitige Verriegelung ist notwendig, weil der unabhängige Befehl N+1 die gleichen Register (siehe Fig. 6) benutzt wie der Parallel-Lesebefehl. Wenn diese Verriegelung nicht vorhanden wäre, wäre es möglich, daß die neuen Daten in das R24- 31 gelegt werden, bevor das vorherige Ergebnis vom System ausgelesen würde, was einen Datenverlust bewirken würde.
- Fig. 8 ist ein Ablaufsteuerungsdiagramm, das den Betrieb der Schleife in Fig. 5 (während der ersten, zweiten und dritten Phase der Schleife) zeigt. Zum Zeitpunkt 252 wird eine Multiplikationsoperation ausgeführt. Diese läuft zum Zeitpunkt 250 an und endet zum Zeitpunkt 254, wie gezeigt. Konsekutiv wird zum Zeitpunkt 256 die Additionsoperation ausgeführt, die mit Zeitpunkt 262 endet. Hier ist anzumerken, daß die Multiplikationsoperation 274 den Abschluß der Additionsoperation durch Anlaufen bei Zeitpunkt 270 überlappt Parallel zur Ausführung der Multiplikationsoperation 252 und dem Warteschlangeneinschub der Additionsoperation 260 wird die Leseoperation 266 durchgeführt. Diese Leseoperationen lesen das Ergebnis einer der vorhergehenden Multiplizier- und Additionsoperationen in R28 - R31. Das Parallel-Lesen wird ausgeführt in der Art und Weise, wie für jede nächste konsekutive Multiplikations/Additionsberechnung gezeigt wird. Hier muß man verstehen, daß jede der Multiplikations- und Additionsoperationen, die in Fig. 8 gezeigt werden, die Vektormultiplikations- und -additionsoperationen sind, einschließlich vier einzelne Multiplikationsoperationen, die im Fließbandbetrieb ausgeführt werden, konsekutiv mit den vier arithmetischen Vektoradditionsoperationen, die im Fließbandbetrieb ausgeführt werden. Somit legt jede Leseoperation den Inhalt der vier Register auf den Systembus 54 (Fig. 3).
- Vorgesehen ist auch, daß die E/A-Einheit 60 sowohl die Leseals auch die Schreiboperationen in die Registerdatei 58 parallel zu den Additionsoperationen in ALU 64 und die Multiplikationsoperationen in der Multiplikationseinheit 74 vornehmen kann. Das wäre möglich durch Benutzten eines beidseitig verbundenen Zugriffsspeichers und Legen der Operandenparaneter in die Registerdatei 58 auf ähnliche Weise wie die oben definierten Parallel-Leseoperationen, während durch den zweiten Eingang auf Schreibinformationen zugegriffen wird.
Claims (11)
1. Ein Datenverarbeitungssystem zur Durchführung einer Reihe
von Operationssequenzen, wobei das
Datenverarbeitungssystem einen Satz Register (58), eine zweckmäßige
Logikeinheit (64, 74) und ein Steuermittel (60, 90, 98, 100)
zur Eingabe von Daten und zum Lesen von Daten aus dem
Registersatz (58) beinhaltet, wobei die zweckmäßige
Logikeinheit (64, 74) so eingerichtet ist, daß sie
Ergebnisse konsekutiv für jede Operationssequenz der Reihe
berechnet, und die Ergebnisse jeder Operationssequenz im
Registersatz (58) abspeichert; das
Datenverarbeitungssystem an einen Systembus (54) anschließbar ist, und jede
aufgerufene Operationssequenz die gleiche logische Form
aufweist, wobei das System dadurch gekennzeichnet ist,
jedem Register im Satz (58) entweder Parameter für eine
Operationssequenz, Zwischenresultate der Operationen in
der Sequenz, oder ein Operationssequenz-Endergebnis zum
Abspeichern zugewiesen wird;
der Registersatz (58) so eingerichtet ist, daß die
Parameter und Ergebnisse einer augenblicklichen
Operationssequenz die in den Registern abgespeicherten Parameter
und Ergebnisse einer vorhergehenden Operationssequenz
ersetzen;
das Steuermittel (60, 90, 98, 100) so eingerichtet ist,
daß während der Berechnung der Ergebnisse einer
augenblicklichen Operationssequenz das Steuermittel (60, 90,
98,
100) eine E/A-Operation durchführt, durch die die
Endergebnisse einer vorhergehenden Operationssequenz aus
den ihnen zugeordneten Registern ausgelesen und auf den
Systembus (54) gelegt werden.
2. Ein System gemäß Anspruch 1, ferner dadurch
gekennzeichnet, daß das Steuermittel (60) so ausgelegt ist, daß es
während der Berechnung der Ergebnisse für die derzeitige
Operationssequenz Parameter für die nächste
Operationssequenz in den zugewiesenen Registern des Satzes (58)
abspeichert.
3. Ein System gemäß Anspruch 1 oder 2, in dem jede
Operationssequenz eine Vielzahl von arithmetischen Operationen
beinhaltet, die für die Operationssequenzen dieser Reihe
identisch sind.
4. Ein System gemäß einem beliebigen der Ansprüche 1 bis 3,
in dem die zweckmäßige Logikeinheit (64, 74) Mittel zur
Fließbandberechnung dieser Ergebnisse für eine Vielzahl
von Operationen in der Operationssequenz beinhaltet.
5. Ein System gemäß einem beliebigen vorstehenden Anspruch,
in dem das Steuermittel (60) Mittel beinhaltet, die
verhindern, daß die zweckmäßige Logikeinheit (64, 74) zum
Abspeichern der Endergebnisse der augenblicklichen
Operationssequenz auf das Register zugreifen kann, bevor die
Endergebnisse aus der vorhergehenden Operationssequenz
gelesen sind.
6. Ein System gemäß einem beliebigen vorstehenden Anspruch
in der Form einer Funktionsarithmetikeinheit, die von
einem NC-Prozessor abhängig ist oder abhängig gemacht
werden kann.
7. Ein Verfahren zur Durchführung einer Reihe von
Operationssequenzen in einem Datenverarbeitungssystem, das an
einen Systembus (54) angeschlossen ist und einen
Registersatz (58) und eine zweckmäßige Logikeinheit (64, 74)
aufweist, wobei jede aufgerufene Operationssequenz die
gleiche logische Form aufweist, und wobei dieses
Verfahren die folgenden Schritte umfaßt:
Anwenden der zweckmäßigen Logikeinheit (64, 74) zur
konsekutiven Berechnung der Ergebnisse für jede der
Operationssequenzen der Reihe;
Abspeichern der Ergebnisse aus jeder Operationssequenz im
Registersatz (58);
wobei das Verfahren durch die folgenden Schritte
gekennzeichnet ist:
Anweisen jedes Registers im Satz (58), entweder Parameter
für eine Operationssequenz, Zwischenresultate der
Operationen in der Sequenz, oder ein
Operationssequenz-Endergebnis abzuspeichern;
Einrichten des Registersatzes (58) so, daß die Parameter
und Ergebnisse einer augenblicklichen Operationssequenz
die in den Registern abgespeicherten Parameter und
Ergebnisse einer vorhergehenden Operationssequenz ersetzen;
Durchführen einer E/A-Operation während der Berechnung
der Ergebnisse einer augenblicklich ablaufenden
Operationssequenz, durch die die Endergebnisse einer
vorhergehenden Operation aus den ihnen zugewiesenen Registern
ausgelesen und auf den Systembus (56) gelegt werden.
8. Ein Verfahren gemäß Anspruch 7, das ferner den Schritt
des Abspeicherns von Parametern für eine nächste
Operationssequenz in den zugewiesenen Registern des Satzes
(58) während der Berechnung der Ergebnisse für die
augenblicklich ablaufende Operationssequenz umfaßt.
9. Ein Verfahren gemäß Anspruch 7 oder 8, in dem jede
Operationssequenz eine Vielzahl von arithmetischen Operationen
umfaßt, die für die Operationssequenzen der Reihe
identisch sind, und jedes Operationsergebnis im
Abspeicherschritt während der Berechnung der Sequenz in einem
einmaligen Register abgespeichert wird.
10. Ein Verfahren gemäß einem beliebigen der Ansprüche 7 bis
9, in dem der Schritt des Berechnens der Ergebnisse die
Fließbandberechnung dieser Ergebnisse für eine Vielzahl
von Operationen in der Operationssequenz beinhaltet.
11. Ein Verfahren gemäß einem beliebigen der Ansprüche 7 bis
10, in dem der Schritt des Lesens den Schritt beinhaltet,
wonach verhindert wird, daß die zweckmäßige Logikeinheit
(64, 74) auf das Register zum Abspeichern des
Endergebnisses der augenblicklichen Operationssequenz zugreift,
bevor die Endergebnisse der vorangehenden
Operationssequenz gelesen sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21138788A | 1988-06-23 | 1988-06-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68926183D1 DE68926183D1 (de) | 1996-05-15 |
DE68926183T2 true DE68926183T2 (de) | 1996-10-10 |
Family
ID=22786730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1989626183 Expired - Fee Related DE68926183T2 (de) | 1988-06-23 | 1989-05-09 | Ergebnisverfügbarkeit einer Rechensequenz |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0348030B1 (de) |
JP (1) | JP2654451B2 (de) |
DE (1) | DE68926183T2 (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5438669A (en) * | 1991-11-20 | 1995-08-01 | Hitachi, Ltd. | Data processor with improved loop handling utilizing improved register allocation |
EP0623874A1 (de) * | 1993-05-03 | 1994-11-09 | International Business Machines Corporation | Verfahren zur Ausführung von Befehlen in einer Schleife |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPS57134774A (en) * | 1981-02-13 | 1982-08-20 | Hitachi Ltd | Vector operating device |
JPS57166649A (en) * | 1981-03-30 | 1982-10-14 | Ibm | Data processing system |
JPS58129552A (ja) * | 1982-01-28 | 1983-08-02 | Hitachi Ltd | 演算処理装置 |
JPH0650512B2 (ja) * | 1984-07-11 | 1994-06-29 | 日本電気株式会社 | デ−タ処理装置 |
US4745547A (en) * | 1985-06-17 | 1988-05-17 | International Business Machines Corp. | Vector processing |
-
1989
- 1989-05-09 EP EP19890304658 patent/EP0348030B1/de not_active Expired - Lifetime
- 1989-05-09 DE DE1989626183 patent/DE68926183T2/de not_active Expired - Fee Related
- 1989-06-20 JP JP1155974A patent/JP2654451B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0348030A3 (de) | 1993-02-24 |
DE68926183D1 (de) | 1996-05-15 |
EP0348030B1 (de) | 1996-04-10 |
EP0348030A2 (de) | 1989-12-27 |
JPH02255916A (ja) | 1990-10-16 |
JP2654451B2 (ja) | 1997-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE3587591T2 (de) | Mikroprozessor für Forth-ähnliche Sprache. | |
DE69811877T2 (de) | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE3210816C2 (de) | ||
DE69703085T2 (de) | Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE68927371T2 (de) | Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE3587277T2 (de) | System fuer die umgehungssteuerung beim pipelinebetrieb eines computers. | |
US5068819A (en) | Floating point apparatus with concurrent input/output operations | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE2040558A1 (de) | Datenverarbeitendes System mit Mikroprogrammen | |
DE2735814A1 (de) | Datenverarbeitungseinrichtung | |
DE1524162A1 (de) | Einrichtung zur parallel-simultanen Verarbeitung zusammengehoeriger Gruppen von Daten | |
DE3400723C2 (de) | ||
DE69230626T2 (de) | Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen | |
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE69322566T2 (de) | Datenprozessor | |
DE4430195B4 (de) | Verfahren zur Auswertung von Booleschen Ausdrücken | |
DE69837138T2 (de) | Unterbrechbare mehrfache Ausfuehrungseinheitverarbeitung waehrend mehrfacher Zuweisung von Register verwendenden Operationen | |
DE3688806T2 (de) | Instruktionsprozessor. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |