DE3400723A1 - Vektorprozessor - Google Patents
VektorprozessorInfo
- Publication number
- DE3400723A1 DE3400723A1 DE19843400723 DE3400723A DE3400723A1 DE 3400723 A1 DE3400723 A1 DE 3400723A1 DE 19843400723 DE19843400723 DE 19843400723 DE 3400723 A DE3400723 A DE 3400723A DE 3400723 A1 DE3400723 A1 DE 3400723A1
- Authority
- DE
- Germany
- Prior art keywords
- register
- address
- vector
- command
- instruction
- 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
Links
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
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)
- Complex Calculations (AREA)
Description
HITACHI, LTD., Tokyo Jap an
Die Erfindung betrifft einen Vektorprozessor, der mit hoher Geschwindigkeit die Verarbeitung von Vektoren, die mehr Elemente
aufweisen als sie in Vektorregistern speicherbar sind, durchführen kann.
In Figur 1 ist die Verarbeitung in einem bekannten Vektorprozessor,
der Vektorregister aufweist, dargestellt. Ziffer 1 bezeichnet einen Hauptspeicher, 7 eine Vektorregistereinheit
und Ziffer 8 eine Arithmetik- und Logikeinheit.
Zur Ausführung eines Ladebefehls werden Vektoren X und Y aus der Hauptspeichereinheit 1 geholt und einzeln jeweils in V;ektorregister
VRO und VR1 geladen. Danach werden zur Ausführung einer Vektoroperation die Inhalte des VRO und VR1 geholt und
der Arithmetik- und Logikeinheit 8 eingegeben, in dem die zugeordnete Operation ausgeführt wird. Das Verarbeitungsergebnis
wird in ein Vektorregister VR2 gespeichert. Mit einem Speicherbefehl wird der Inhalt des Vektorregisters
VR2 als ein Vektor Z in die Hauptspeichereinheit 1 eingespeichert. Der Buchstabe k soll hier die Anzahl der Elemente
680-318228475DE1/AtAl
eines zu verarbeitenden Vektors (die sogenannte "Vektorlänge") und der Buchstabe %■ die Anzahl der in einem einzigen Vektorregister
speicherbaren Vektorelemente (weiterhin als"Vektorregisterlänge" bezeichnet) angeben.
Die Vektorlänge k ist abhängig vom Programm sehr unterschiedlich
und kann im allgemeinen Werte von 1,0 bis 10.000 erreichen. Andererseits ist die Vektorregisterlänge Z durch die Hardware
eines zu verwirklichenden Prozessors begrenzt und reicht gegenwärtig von 64 bis 256.
Aus diesem Grund ist, falls k = I ist, die Ausführung eines
Vektorbefehls mit einer Vektoroperation möglich, wohingegen
im Falle k > Si geeignete Maßnahmen getroffen werden müssen.
Im folgenden werden zwei Maßnahmen betrachtet:
Beim ersten Verfahren wird die Verarbeitung softwaremäßig unterteil.t
und die jeweiligen zu verarbeitenden Teile getrennt von Hardwareeinheiten verarbeitet.
Das zweite Verfahren ist die direkte Verarbeitung durch Hardwareeinheiten , in dem die Vektordaten in Gruppen,
die jeweils höchstens £ Elemente aufweisen, unterteilt und
dann verarbeitet werden. Die £ Elemente werden im weiteren "Segmente" genannt. Bei diesem zweiten Verfahren wird demnach,
nachdem ein Segment von einer Vektorbefehlsfolge abgearbeitet ist, die Vektorbefehlsfolge erneut geholt und das nächste Segment
verarbeitet.
Dabei besitzt das zweite genannte Verfahren bezüglich der
Hardwaresteuerung den Vorteil, daß der Oberhang beschränkt bleibt und daß eine schnelle Verarbeitung möglich ist.
Eine wesentliche Aufgabe besteht beim zweiten genannten Verfahren in der Erhöhung der Verarbeitungsgeschwindigkeit
und zwar werden nach der Verarbeitung der Vektorbefehlsfolge für ein bestimmtes Segment (weiterhin "Verarbeitungsschleife
" genannt , wobei die "Schleife i" die Verarbeitungsschleife des i-ten Segments darstellen soll) Adressen
des für die folgende Verarbeitungsschleife verwendeten Segments
erzeugt.
Das zur Adressenfortschreibung verwendete Verfahren wird in
"PROCESSING VECTORS AS A PLURALITY OF SEGMENTS" (IBM Technical Disclosure Bulletin, Bd. 13, No. 12, Mai 1971) beschrieben.
Diese bekannte Schrift zeigt zwar das Verfahren, das die Adressen fortschreibt, jedoch keine Schaltung, die die Verarbeitung
in Pipelineweise mittels Vektorregistern, wie sie in Figur 1 dargestellt sind, ausführt.
Figur 2A stellt einen allgemeinen bekannten Schaltungsaufbau dar und Figur 2B den darin ablaufenden allgemeinen Verarbei-r
tungsfluß.
Für einen Zugriff (Laden und Speichern) zu einer Hauptspeichereinheit
1 werden die Ladeadressen (oder Speicheradressen) für die jeweiligen Vektorelemente nacheinander auf der Basis der
Kopfadresse (das ist die Adresse des ersten Elements und wird als "Basisadresse" bezeichnet) und des Adressintervalls zwischen
benachbarten Elementen (weiterhin als "Inkrementwert" bezeichnet) erzeugt, worauf aufgrund dieser Adressen zum Hauptspeicher zugegriffen
wird. Falls die Vektordaten in der Hauptspeichereinheit 1 lückenlos eingespeichert sind, nämlich in Form kontinuierlich
aufeinanderfolgenden Elementen, so ist die sogenannte "Adresskontinuität" gegeben, wohingegen bei den anderen
Fällen eine "Adressdiskontinuität" vorliegt. Mit der Annahme, daß der Inkrementwert in Byte-Adressen angegeben wird,
ergibt sich die Adresskontinuität beim Inkrementwert 8, falls die Breite der Vektordaten 8 Byte beträgt und gilt für den
Inkrementwert 4, falls die Vektordatenbreite 4 Byte ist. Dabei wird die Vektorregisterlänge zu 256 angenommen.
Zuallererst Wird die Basisadresse in ein Basisregister 105,
der Inkreraentwert in ein Inkrementregister 101 gesetzt und
ein Hochzählregister 102 auf Null rückgesetzt.
Gemäß der untenstehenden Erläuterung werden in ein Segmentbasisregister
109 die Adressen der Kopfelemente der Segmente, die«in der jeweiligen Schleifenverarbeitung zu verarbeiten
sind, gesetzt. Solche Adressen werden im folgenden "Segmentbasisadressen" genannt. Dazu wird der Adressversatz zwischen
der Adresse des Kopfelements der Vektordaten zu einer bestimmten Segmentbasisadresse "Segmentadressversatz" genannt.
Das Hochzählregister 102 hält die Kopfelementnummer während
jeder Ver'arbeitungsschleife.
Daher erhält man die Segmentbasisadresse aus der Addition des im Basisregister 105 stehenden Werts zum Produkt aus dem Wert
des Inkrementregisters 101 mit dem Inhalt des" Hochzählregisters 102. Zur Produktberechnung gibt es zwei Möglichkeiten
wie folgt:
Im ersten Fall liegt Adresskontinuität vor. Der Wert des Hochzählregisters
102 wird einem Linksschieberegister 104 eingegeben, in dem das 8-Byte-Datum um 3 Bit nach links verschoben
wird oder ein 4-Byte-Datum wird um 2 Bit nach links verschoben. Der sich ergebende Ausgangswert wird über einen Wähler 106
in ein Adressregister 107 gesetzt. Im zweiten Fall liegt Adressdiskontinuität vor. In diesem Fall wird das Produkt
aus dem Wert des Inkrementregisters 101 und dem Wert des Hochzählregisters 102 von einem Multiplizierer 103 berechnet und
das Ergebnis in das Adressregister 107 gesetzt.
In jedem Fall wird der Inhalt des Adressregisters 107 mit dem Inhalt des Basisregisters 105 im Addierer 108 addiert, wodurch
sich die Segmentbasisadresse ergibt. Ein Inkrementdekoder 100 erfaßt das Vorliegen der Adresskontinuität oder Adressdiskontinuität
und steuert den Wähler 106 abhängig vom Erfassungsergebnis .
Das Hochzählregister 102 muß um die Vektorregisterlänge für
die folgende Verarbeitungsschleife anwachsen. Wie Figur 2B beispielhaft zeigt, geschieht das Fortschreiben des Registers
102 beim letzten Befehl einer Befehlsfolge, die mit einem Ladebefehl beginnt und mit einem Speicherbefehl endet.
Da außerdem die Multiplikation im Muliplizierer 103 bei Adressdiskontinuität eine beträchtliche Zeit dauert, entsteht
das Problem, daß sich der Startzeitpunkt c des Ladebefehls der Schleife 2 verzögert.
Es ist bei der Verarbeitung wünschenswert, daß der Startzeitpunkt
c des Ladebefehls der Schleife 2 vor dem Startzeitpunkt b des Speicherbefehls der Schleife 1 in Figur 2 liegt. Das
heißt, daß eine Überlappung der Befehlsstartzeitpunkte aufeinanderfolgender Verarbeitungsschleifen erwünscht ist. Im
Stand der Technik wird das Hochzählregister 102 für die folgende Verarbeitungsschleife jedoch beim letzten Befehl der
vorangehenden Schleifenverarbeitung fortgeschrieben und die Adresse mittels des Werts des Hochzählregisters 102 nach der
zuvor beschriebenen Methode erzeugt, so daß eine sich überlappende Verarbeitung unmöglich war.
Es ist demnach Aufgabe der Erfindung, die oben beschriebenen Nachteile des Standes der Technik zu vermeiden und einen Vektorprozessor
anzugeben, der die zur Erzeugung der Adresse für die folgende Verarbeitungsschleife notwendige Zeitdauer verringert
und außerdem überlappende Startzeitpunkte für Befehle aufeinanderfolgender Verarbeitungsschleifen ermöglicht, wodurch
die Verarbeitungsgeschwindigkeit einer Vektoroperation erhöht werden kann.
Zur Lösung der obigen Aufgabe wird erfindungsgemäß zum Zeitpunkt
der Erzeugung der Segmentbasisadresse der vorangehenden Verarbeitungsschleife ein Segmentversatz für die folgende Verarbeitungsschleife
vorgezogen berechnet und in einem der
I'll ι " :"::.s. 4 ** UU
10-
Adressregister gehalten. Dadurch wird die zur Adresserzeugung nötige Zeitdauer verkürzt und ein Oberlappen der Verarbeifungsschleifen
ermöglicht. Dabei ist eine Überlappung der Verarbeitungsschleifen auch in dem Fall möglich,wo die
gleichen Adressregister bei verschiedenen Befehlen benutzt werden, indem (n + 1) Adressregistergruppen zur Verfügung
stehen und somit die Überlappung bei η aufeinanderfolgenden Verarbeitungsschleifen realisiert werden kann.
Die Erfindung wird im folgenden anhand der Zeichnung näher
beschrieben. Es zeigen:
Fig. 1 ein Anordnungsschema eines herkömmlichen Vektorprozessors
;
Fig. 2A ein Blockschaltbild eines Beispiels einer bekannten Vektoraus Ieseschaltung;
Fig. 2B ein Diagramm, das eine Befehlsablauffolge der in Figur 2A dargestellten Schaltung erläutert;
Fig. 3 ein Diagramm, das das Prinzip der Erfindung erläutert;
Fig. 4A
und 4B Diagramme, die Beispiele von Befehlsablauffolgen
gemäß der Erfindung bei verschiedenen Bedingungen erläutern;
Fig. 5 ein Blockschaltbild eines Ausführungsbeispiels der Erfindung;
Fig. 6 ein Detailschaltbild der wesentlichen Teile des in
Figur 5 dargestellten Vektorprozessors;
Fig. 7 ein Detailschaltbild einer in Figur 5 gezeigten
Befehls Steuereinheit;
Fig. 8A ein Zeitdiagramm der im Ausführungsbeispiel gemäß Figur 5 ausgeführten Operationen;
Fig. 8B ein Beispiel eines FORTRAN-Programms zur Erläuterung
des in Figur 8A gezeigten Zeitdiagramms-,
-11-
Fig. 8C ein Beispiel einer Vektorbefehlsfolge für den Ablauf des Programms in Figur 8B; und
Fig. 9 ein Zeitdiagramm der Operationen des in Figur 5 dargestellten Ausführungsbeispiels für eine von
Figur 8C verschiedene Vektorbefehlsfolge.
Bevor ein Ausführungsbeispiel genauer beschrieben wird, erfolgt eine Erläuterung des der Erfindung zugrundeliegenden Prinzips.
Figur 3 stellt den Prinzipaufbau der vorliegenden Erfindung dar. Ziffer 111 bezeichnet einen Addierer, 112 und 113 Adressregister,
114 einen Wähler, und die Ziffer 110 ein Links- ■ Schieberegister.
Die anderen Komponenten sind dieselben wie in Figur 2A. Jedoch sind in Figur 3 jeweils mehrere Inkrementregister 101, mehrere
Adressregister 112, 113 und mehrere Basisregister 105 enthalten.
Zuerst wird eine Basisadresse beispielsweise in Register 1 der
Basisregister 105 und ein Inkrementwert in Register 1 der Inkrementregister 101 gesetzt. Außerdem wird beispielsweise Register
1 der Adressregister 112 auf Null gesetzt. Nachstehend wird das zum Erzeugen einer Adresse verwendete Verfahren anhand
eines in Figur 2B dargestellten Ablaufs beschrieben.
Wenn der Ladebefehl einer Schleife 1 beginnt, wird der Wert des Registers 1 der Adressregister 112 dem Addierer 108 durch
den Wähler 114 eingegeben und zum Wert des Registers 1 der
Basisregister 105 addiert. Das Additionsergebnis wird in das Segmentbasisregister 109 gesetzt, dessen Wert einem nicht
dargestellten Speicheranforderer gesendet wird.
Parallel dazu wird der Wert des Registers \ der Inkrementregister
101 um 8 Bit mittels des Links-Schieberegisters 110 nach links geschoben und dadurch der Inkrementwert mit 256
multipliziert. Dieses Schiebeergebnis wird dem Addierer 111
eingegöbeh» Der andere Eingang des Addierers 111 erhält
den Wert des Registers 1 der Adressregister 112 durch den Wähler 114/ und das Additionsergebnis, nämlich ein Segmentadressversatz
wird in das Register 1 der Adressregister 113 gesetzt.
Auf diese Weise wird im Register 1 der Adressregister 113 vorgezogen der Segmentadressversatz für den Ladebefehl
einer folgenden Schleife bereitgestellt.
Danach wird mittels einer der Verarbeitungsprozedur des Ladebefehls
der Schleife 1, wie sie oben beschrieben wurde, gleichen Verarbeitungsprozedur die Adresse für den Speicherbefehl der
Schleife 1 erzeugt. Beispielsweise wird dazu Register Nr. 2 verwendet- Sobald der letzte Speicherbefehl der Schleife 1
gestartet wurde, kann der Ladebefehl der Schleife 2 starten. Dies geschieht, weil der Segmentadressversatz zum Ablauf des
Ladebefehls bereits im Register 1 der Adressregister 113 zur Verfügung steht. Der Segmentadressversatz wird mit dem Wert
des Registers 1 der Basisregister 105 durch den Addierer 108 addiert, woraus sich eine Segmentbasisadresse für den Ladebefehl
ergibt. Auf diese Weise wird der durch die Adressenerzeugung beim Übergang der Verarbeitungsschleife entstehende
Überhang verkürzt.
Sobald der Ladebefehl der Schleife 2 gestartet wurde, ist die Segmentbasisadresse für den Ladebefehl in der oben angeführten
Weise erhältlich und in das Segmentbasisregister 109 gesetzt, wonach es einem Anforderer zugesandt wird. Parallel
dazu wird der mit 256 multiplizierte Wert des Registers 1 der Inkrementregister 101 zum Wert des Registers 1 der Adressregister
113 genauso wie bei der Verarbeitung der Schleife 1 hinzuaddiert und das Additionsergebnis in das Register 1 der
Adressregister 112 gesetzt und damit der in Schleife 3 zu verwendende Wert bereitgestellt.
Weiterhin wird diese Verarbeitung in gleicher Weise für die nötigen Verarbeitungsschleifen wiederholt. Dabei werden die
-13-
Adressregister 112 und 113 jeweils abwechselnd verwendet.
Die Information oder Registernummer zur Steuerung wird von einer Befehlssteuereinheit zugesandt.
Falls bei den zuvor erwähnten Lade- und Speicherbefehlen die Inkrementwerte gleich sind, ist es zweckmäßig, gleiche
Registernummern, nämlich der Inkrementregister 101 und der Adressregister 112 und 113 in diesen Befehlen zuzuweisen.
Wenn die Register derselben Nummer auf diese Weise von verschiedenen Befehlen geteilt werden, kann die Zeitdauer zum
Setzen der Anfangswerte günstig verkürzt und die in ihrer Anzahl eingeschränkten Register wirksam ausgenutzt werden.
Auch wenn beispielsweise im oben genannten Speicherbefehl Register 1 der Inkrementregister 101 und der Adressregister
112 und 113 verwendet werden, ergibt sich daraus kein Problem.
Obwohl beim Speicherbefehl der Schleife 1 derselbe Wert wie
beim Ladebefehl der Schleife 1 in das Register 1 der Adressregister 113 gesetzt wird, ist dies nicht unbequem.
Die in den zwei Gruppen 112 und 113 angeordneten Adressregister sind für die Zuordnung der identischen Adressregisternummern
für verschiedene Befehle nötig. Falls nämlich keine identische Adressregisternummer zugeteilt wird, genügt eine Gruppe.
In den Figuren 4A und 4B ist der Verarbeitungsfluß für
Fälle dargestellt, wo sich die Befe-hlsstartzeitpunkte der
Verarbeitungsschleifen überlappen.
Die Figur 4A zeigt, daß der Startzeitpunkt e des Ladebefehls einer Schleife i + 2 dem Startzeitpunkt d des Ladebefehls
einer Schleife i + 1 vorangeht und daß der Startzeitpunkt b des Speicherbefehls einer Schleife i dem Startzeitpunkt e
des Ladebefehls der Schleife i + 2 vorangeht. Das heißt, daß die Überlappung der Startzeitpunkte der Befehle lediglich
für zwei benachbarte'Verarbeitungsschleifen bei Betrachtung
eines bestimmten Zeitpunkts auftritt. Figur 4B Zeigt, daß
der Startzeitpunkt g des Ladebefehls einer Verarbeitungsschleife i + 3 dem Startzeitpunkt d des Speicherbefehls der
Schleife i + 1 vorangeht und daß der Startzeitpunkt b des Speicherbefehls der Schleife i dem Startzeitpunkt g des
Ladebefehls der Schleife i + 3 vorangeht, so daß sich die Startzeitpunkte von drei aufeinanderfolgenden Verarbeitungsschleifen überlappen.
Um die überlappende Verarbeitung bei sich überlappenden '
Befehlsstartzeitpunkten durchzuführen und die Adressregister zwischen den verschiedenen Befehlen aufzuteilen,
genügen die in Figur 3 dargestellten zwei Gruppen der Adressregister 112 und 113 nicht und deshalb werden mehr Register
benötigt. In Figur 4A werden drei Gruppen und in Figur 4B vier Registergruppen benötigt.
Im allgemeinen sind für die Überlappung von η aufeinanderfolgenden
Verarbeitungsschleifen η + 1 Adressregistergruppen nötig. Wenn in diesem Sinne der Überlappungsgrad erhöht wird,
kann man die Auslastung einer Arithmetik-und Logikeinheit oder einer ähnlichen Einrichtung durch Vermeidung von Lücken
und damit den Verarbeitungswirkungsgrad erhöhen.
Figur 5 zeigt in Form eines Blockschaltbilds ein Aufbauschema eines Ausführungsbeispiels gemäß der Erfindung. Eine Hauptspeichereinheit
1 speichert Vektordaten, eine Speichersteuereinheit 2 staffelt das Auslesen der Vektordaten aus dem Hauptspeicher
1 und deren Einspeichern in den Hauptspeicher. 1; eine Befehlssteuereinheit 3 dekodiert Befehle und steuert den Betrieb
verschiedener Betriebsmittel (beispielsweise einer Arithmetik- und Logikeinheit, eines Speicheranforderers usw.);
eine Zugriffssteuereinheit 6 besteht aus Adressregistern 200,
zwei nur-Auslese-Anforderern 210, 220 (die jeweils mit "Anforderer
0" und "Anforderer 1" bezeichnet sind) und aus einem nur-Speicher-Anforderer 230 (mit "Anforderer 2" bezeichnet)j
* « «ft ■ mn
-15-
eine Vektorregistereinheit 7 besteht aus 8 Vektorregistern VRO-7 (Vektorregisterlänge: 256) ; und eine Arithmetik- und
Logikeinheit 8 besteht aus einem Multiplizierer 240 und einem Addierer 250.
Figur 6 zeigt ein Schaltbild eines in der Zugriffssteuereinheit 6 enthaltenen Adressgeneratorteils. Steuerschaltungen
211, 221 und 231 steuern Anfang und Ende von Operationen und bilden jeweils einen Teil der Anforderer 0, 1 und 2; Adressgeneratorschaltungen
212, 222 und 232 sind ebenfalls jeweils Teile der Anforderer 0, 1 und 2; die Komponenten mit den
Ziffern 300 -304 sind Register; Ziffer 305 gibt ein ODER-Glied an; die Ziffern 306 - 308 sind UND-Glieder; Ziffer 309
ist ein Vektorbasisregister VBR; die Ziffern 310 - 312 sind jeweils Vektoradressregister VAR, VARD und VARDD; Ziffer 313
gibt Vektorinkrementregister VIR an; Ziffer 314 gibt eine Links-Schiebeschaltung, Ziffer 315 einen Addierer, die Ziffern
316 - 318 Torschaltungen und die Ziffern 319 - 323 Wähler an. Die VBR 309, VAR 310, VARD 311, VARDD 312 und VIR 313 bestehen
jeweils aus acht Registern und die zweiten Register, beispielsweise das zweite Register der VBR 309, werden zur Abkürzung
durch die Ziffer 2 zum Beispiel "VBR2" benannt.
Die Adresse eines Vektors X(i) wird wie folgt erzeugt:
X(D VBRj + VARk
X(2) VBRj + VARk + VIRk
X(3) VBRj + VARk + VIRk *2
X(i) VBRj + VARk + VIRk * (i - 1)
Hier wird angenommen, daß die Nummern j und k der VBR und VAR durch einen Befehl zugeordnet werden und daß die Nummer der
VIR gleich der Nummer k der VAR ist.
Die Adresserzeugung wird von den Adressgeneratorschaltungen
212, 222 und 232 durchgeführt.
/ Ιό
Die in Figur 6 dargestellten VAR 310 und VARD 311 entsprechen
den Adressregistern 112 und 113 in Figur 3. Die
VARDD 312 sind zusätzlich vorgesehen, um die Überlappung zwischen zwei Verarbeitungsschleifen zu ermöglichen.
Figur 7 stellt ein Blockschaltbild der Befehlssteuereinheit
3 dar. Diese enthält: Torschaltungen 400, 4ü4 und 405, ein Befehlsregister 401, eine Befehlsdekodierschaltung 402, ein
Schleifenregister 403, eine Dekodierunterdrückungs-Detektorschaltung
406, ein Befehlsschlangenregister 407, ein Schleifenschlangenregister
408, eine Befehlstorschaltung 409, eine Betriebsmittelverwaltungsschaltung 410, einen Dekoder 411
und einen Wähler 412.
Ein geholter Befehl wird über die Torschaltung 400 in das Befehlsregister 401 der Befehlsdekodierschaltung 402 eingegeben.
Darin wird der Befehl dekodiert und die kennzeichnende Information (OP Code) des Befehls und die Information über
die jeweiligen Registernummern der VBR, VAR und Vektorregister, usw., dekodiert, die über die Torschaltung 404 der Befehlstorschaltung
409 übertragen werden. Die Befehlstorschaltung wird mit der dekodierten Befehlsinformation über die Torschaltung
404 von der Befehlsdekodierschaltung 402 und mit dekodierter Befehlsinformation, die im Befehlsschlangenregister
407 gespeichert ist, gespeist. Die Befehlstorschaltung 409 beurteilt aufgrund der von der Betriebsmittelverwaltungsschaltung
410 gelieferten Information über den Benutzungsstatus der Betriebsmittel, ob Befehle, die aus der dekodierten
Information gebildet werden, startfähig sind oder nicht. Liegen mehrere startfähige Befehle vor, wählt die Befehlstorschaltung
einen davon aus. Falls der direkt von der Befehlsdekodierschaltung
402 eingegebene Befehl nicht gestartet werden kann, wird die diesem zugeordnete dekodierte Information in einem
freien Bereich des Befehlsschlangenregisters 407 in eine Warteschlange
eingereiht. Wenn sowohl der im Befehlsschlangenregister 407 befindliche Befehl und der von der Befehlsdekodier-
-17-
schaltung 402 dekodierte Befehl startfähig sind, wird der im Befehlsschlangenregister 407 stehende Befehl vorzugsweise
gestartet. Wenn im Befehlsschlangenregister 407 mehrere
startfähige Befehle stehen, werden diese in der zeitlichen Reihenfolge, wie sie dekodiert wurden, nacheinander gestartet.
Die Betriebsmittelverwaltungsschaltung 410 verwaltet den Benutzungszustand der verschiedenen Betriebsmittel. Die
Betriebsmittel (wie der Speicheranforderer und die Arithmetik- und Logikeinheit), die zu dem von der Befehlstorschaltung
gestarteten Befehl gehören, werden von der Betriebsmittelverwaltungsschaltung 410 im "Gebrauchszustand" gehalten. Sobald
die Betriebsmittel Ende-Signal (beispielsweise /18 - &20
von den Speicheranforderern 0-2) abgeben, werden sie von der Betriebsmittelverwaltungsschaltung 420 im "Freizustand"
gehalten.
Auf diese Weise werden die startfähigen Befehle früher gestartet und die nichtstartfähigen in eine Warteschlange eingereiht,
bis sie startfähig werden. Beim vorliegenden Ausführungsbeispiel wird gemäß der Erfindung erneut Schleifeninformation
hinzugefügt. Dabei wird die Steuerung wie folgt betrieben:
Das Schleifenregister 403 besteht aus zwei Bit. Es wird einmalig vor dem Start der Verarbeitung eines Vektorbefehls
gesetzt. Die Befehlsdekodierschaltung 402 addiert zum Inhalt des Schleifenregisters 403 jedes Mal, wenn es einen am Ende
der Befehlsfolge stehenden END-Befehl dekodiert, eine 1 . Falls jedoch der Wert des Schleifenregisters 403 durch diesen Inkrementiervorgang
Null werden würde, wird er auf 1 gehalten. Die Werte 1, 2 und 3 des Schleifenregisters 403 entsprechen jeweils
den Adressregistern VAR, VARD und VARDD. Sobald der Lade- oder Speicherbefehl abläuft, werden aufgrund dieses
Werts die entsprechenden Adressregister ausgewählt. Die Schleifeninformation des Schleifenregisters 403 wird entweder
direkt synchron mit der von der Befehlsdekodierschaltung
402 ausgegebenen Information über die Torschaltung 405 dem Wähler 412 oder nach einmaligen Einreihen in die Warteschlange
im Schleifenschlangenregister 408 zugeführt.
In einem Fall, wo der von der Befehlstorschaltung 409 als
startfähig angesehene Befehl ein Lade- oder ein Speicherbefehl ist, wird die aus 2 Bit bestehende Schleifeninformatioft, die
diesem Befehl entspricht, vom Wähler 412 ausgewählt und danach vom Dekoder 411 dekodiert. Wenn die Schleifeninformation
1, 2 oder 3 ist, werden jeweils eine Leitung 12, 13 oder 14 "Eingeschaltet. ;
Im Falle der als startfähig angesehene Befehl der Ladebefehl oder der Speicherbefehl ist, überträgt die Befehlstorschaltung
409 die zu verwendenden Anforderer über Leitungen £lS - i 17.
Wenn der Anforderer 0, 1 oder 2 benutzt werden soll, erzeugt die Schaltung 409 ein Startsignal jeweils auf den Leitungen
ί 15, t16 oder £i7. Dazu liefert die Befehlstorschaltung
die Basisregisternummer und die Adressregisternummer der dekodierten
Information des ausgewählten Befehls jeweils auf den Leitungen Ji 10 und £11.
Ohne Frage muß von einer (nicht dargestellten) Schaltung eine Befehlsfolge für die Schleifenverarbeitung solange wiederholt
aus dem Hauptspeicher ausgelesen werden, bis sämtliche Daten in einer gewünschten Vektorlänge verarbeitet sind. Natürlich
ist auch eine (nicht gezeigte) Schaltung nötig, die aufgrund der Vektorlänge sowie der Vektorregisterlänge und der Anzahl
der bis dahin verarbeiteten Elemente die Notwendigkeit der Wiederholung des Befehlsauslesens entscheidet.
Im Blockschaltbild der Zugriffssteuereinheit 6 in Figur 6 sind
drei Gruppen von Adressregistern, nämlich VAR, VARD und VARDD vorgesehen. Aus diesem Grunde dürfen sich nur zwei aufeinanderfolgende
Schleifen überlappen und jede weitere Überlappung muß unterdrückt werden. Die dafür nötige Steuerung arbeitet
wie folgt:
Die Dekodierunterdrückungsdetektorschaltung 406 erhält die
Schleifeninformation vom Schleifenregister 403 und vom Schleifenschlangenregister
408 und erzeugt für die folgenden Fälle Unterdrückungssignale, die die Torschaltungen 400, 404 und
sperren und damit das Dekodieren neuer Befehle unterdrücken.
Fall 1: Der Wert des Schleifenregisters 403 ist "01" und der Wert "10" steht im Schleifenschlangenregister 408,
Fall 2: Der Wert des Schleifenregisters 403 ist "10" und im Schleifenschlangenregister 408 steht der Wert "11",
Fall 3: Der Wert des Schleifenregisters 403 ist "11" und im Schleifenschlangenregister 408 steht der Wert "01"
Die Unterdrückungssignale werden natürlich auch in einem Fall erzeugt, wo das Befehlsschlangenregister 407 voll ist. In
dieser Weise wird das Überlappen der Verarbeitungsschleifen durch die hinzugefügte Schleifeninformation gesteuert.
Figur 8 zeigt ein Beispiel einer Vektorverarbeitung unter Verwendung
des anhand der Figuren 5 bis 7 dargestellten Ausführungsbeispiels: Das Verarbeitungsbeispiel entspricht einer
Operation,bei der ein Vektor D(i) mit dem Produkt der Vektoren
B(i) und C(i) addiert wird, wobei das Ergebnis den Vektor A(i) ergibt, wie es in Figur 8B dargestellt ist. Die
Operation wird in Wirklichkeit zur Verarbeitung in eine Befehlsfolge aufgeteilt, wie es Figur 8C beispielshaft zeigt.
Nachfolgend werden die Verarbeitungsschritte anhand der in den Figuren 8A - 8C dargestellten Beispiele näher erläutert.
Mit Befehl 1 wird ein Vektor B aus dem Hauptspeicher 1 in das Vektorregister VRO geladen. Dieser Befehl erfordert folgende
Verarbeitungsschritte:
a) Holen der Vektordaten aus dem Hauptspeicher 1 aufgrund einer Segmentbasisadresse, die sich aus der Addition der
Inhalte der Register VAR1 und VBR1 ergibt; Und
b) Abspeichern der geholten Daten in das Vektorregister VRO.
Dabei wird angenommen, daß die Adressinformation für den Vekter
1 zuvor in die Register VBR1, VAR1 und VIR1 gespeichert
wurde. Ferner wird angenommen, daß die Register VIR dieselben Registernwnniern haben, wie sie den Registern VAR zugeteilt
wurden.
Durch die Dekodierung des Befehls 1 erzeugt die Befehlssteuereinheit
3 ein Startsignal, das der Steuerschaltung 211 des Anforderers β über die Signalleitung i15 anliegt. Gleichzeitig
liefert die Befehlssteuereinheit 3 dem Wähler 319 über die
Signalleitung I 10 VBR1 und den Wählern 320 - 323 über die Signalleitung
ι 11 VAR 1 und VIR1. Der Wähler 319 wählt VBR1
und der Wähler 323 wählt VIR1 und legt die gewählten Signale der Adressgeneratorschaltung 212 an. Die Wähler 320 - 322
wählen jeweils VAR1, VARD1 und VARDD1. Da jedoch die Befehlssteuereinheit 3 lediglich von den Leitungen Z 12 - ^ 14
zur Verarbeitung der Schleife 1 die Leitung £12 "Ein" schaltet,
erhält die Adressgeneratorschaltung 212 das VAR1-Signal über die Torschaltung 318. Aufgrund dieser Adressinformation erzeugt
die Adressgeneratorschaltung 212 die Adressen der jeweiligen
Elemente eines Vektors A aufeinanderfolgend für 256 Elemente synchron mit einem Takt und sendet diese der Speichersteuereinheit
2 zusammen mit einem Anforderungssignal, das von der Steuerschaltung 212 ausgeht.
Auf das Startsignal auf der Leitung L 15 hin, steuert die
Steuerschaltung 211 den Wähler 257 so, daß das Ausgangss.ignal des VBR1 in das Register 250 gesetzt wird und steuert den
Wähler 258 so, daß das Ausgangssignal des VAR1 in das Register 245 und daß das Ausgangssignal des VIR1 in das Register 252
gesetzt wird. Außerdem steuert die Steuerschaltung 211 den Wähler 259, der daraufhin zuerst eine Null einem Übertrags-Sicherstellungsaddierer
254 anlegt. Dieser Addierer 254 und ein Paralleladdierer 255 ermitteln die Adresse des ersten
Elements BU) des Vektors B und setzen dieses in ein Register
256. Danach setzt die Steuerschaltung 211 den Übertragsausgang C und den Summenausgang S des Übertrags-Sicherstellungsaddierer
254 jeweils über die Wähler 257 und 258 in die Register 250 bzw. 251. Dazu steuert die Steuerschaltung 211
den Wähler 259, der den Inkrementwert im Register 252 in den Addierer 254 eingibt. Als Ergebnis wird die Adresse des
folgenden Elements B(2) vom Paralleladdierer 255 ermittelt und in das Register 256 gesetzt. Im folgenden werden die
Adressen der Elemente B(3), ... B(256) in gleicher Weise aufeinanderfolgend synchron mit dem Takt ermittelt. Die Steuerschaltung
211 erzeugt eine Speicheranforderung und sendet diese der Speichersteuereinheit 2 synchron mit dem Setzen
einer Adresse in das Register 256.
Diese Steuerschaltung 211 empfängt von der Speichersteuereinheit 3 die Anzahl der zu verarbeitenden Elemente (in diesem
Beispiel 256) gleichzeitig mit dem Empfang des Startsignals und steuert die Anzahl der ausgegebenen Speicheranforderungen
aufgrund der empfangenen Elementzahl.
Zur gleichen Zeit, wo die VAR1 und VIR1-Signale der Adressgeneratorschaltung
212 zugesendet werden, wird das VAR1-Signal dem Addierer 315 eingegeben und das VIRI-Signal um 8 Bit mittels
des Links-Schieberegisters 314 verschoben (das bedeutet VIR1 * 256) und dann dem Addierer 315 eingegeben, der dann
beide Werte addiert. Das Additionsergebnis stellt einen Segmentadressversatz für die Verarbeitungsschleife 2 dar. Dieser
Segmetadressversatz wird in das VARDI gesetzt. Gleichzeitig wird ein Setzsignal für das VARD wie folgt erzeugt.
Das Startsignal, das über die Signalleitung L 15 ankommt, wird
in das Register 304 über das ODER-Glied 305 gesetzt und gleichzeitig das über die Signalleitung / 12 ankommende "Ein"-Signal
in das Register 303. Diese Signale werden dem UND-Glied 308 angelegt, dessen Ausgangssignal als Setzsignal für das VARD1
: : ηβψ Λ*
-ιι-
eine Signalleitung £ 21 übertragen wird. So wie die Registernummer für das VARD,wird die VAR-Nummer , di.c auf
4er Signalleitung t 11 liegt, durch das Re$ ifie? 3φ#,
sowie über eine Signalleitung I 24 übertragen. Auf 4ie.se
Weise wird der Segmentadressversatz zur Verwendung in der Verarbeitungsschleife 2 in das VARD1 vorher gesetzt.
Sobald ein Zyklus nach dem Start des Befehls 1 dtts Setzen
4«s VAW1 beendet ist, wird der nächste Befehl 2 gestartet.
Durch ien Befehl 3 wird ein Vektor C in das Vektorregister VR1 geladen.
Die B«fehlssteuereinheit 3 erzeugt ein Startsignal t»a4 sendet
dieses mittels der Signalleitung £ 16 der Steuerschaltung
des Anforierers 1. Gleichzeitig liefert SIex wie der Verarbeitung
des Befehls 1 VBR Nr. "2" über die Signalleitung £10, VAR und VIR Nr. "2" über die Leitung tU und ein "EinM~Signal
über die Leitung £12.
Gleichzeitig wird, wenn das VBR2, VAR2 und VIR2 der Adressgeneratorschaltung
2 22 übertragen wird, VAR2 und VIE? dem Addierer 315 zugesendet und das Additionsergebnis (VARI +
VIR1 * 256) in das Register VARD2 gesetzt.
Beim Start der Befehle 1 und 2 werden die Vektoren B1 und C
aufeinanderfolgend in aufsteigender Ordnung der Elemente
geholt und jeweils in die Vektorregister VRO und VR1 gesetzt. Nachdem die Daten angekommen sind, wird eine durch den Befehl 3
angewiesene Multiplikation aufeinanderfolgend durch den Multiplizierer
240 ausgeführt. Das Multiplikationsergebnis wird in das Vektorregister VR2 gespeichert.
Durch den Befehl 4 wird ein Vektor D aus der Hauptspeichereinheit 1 in das Vektorregister VR3 geladen. Da jedoch die
Nur-Hol-Anforderer 0 und 1 benutzt sind, muß die Operation
-23-
warten, bis einer der Anforderer frei ist. Während der Wartezeit
dekodiert die Befehlssteuereinheit 3 den folgenden Befehl. Da Befehl 5 das Vektorregister VR3 in dem das Operationsergebnis
des Befehls 4 gespeichert wird, verwendet, kann Befehl 5 nicht vor Befehl 4 gestartet werden. Da außerdem durch
Befehl 6 das Operationsergebnis von Befehl 5 in den Hauptspeicher gespeichert werden soll, kann dieser auch nicht gestartet
werden. Aus diesem Grunde wird die dekodierte Information der Befehle 4 bis 6 im Befehlsschlangenregister 407
(Figur 7) in eine Warteschlange eingereiht. Darauf wird der Endbefehl (Befehl 7) der in der Befehlsfolge als letzter steht,
dekodiert und entschieden, ob die folgende Verarbeitungsschleife nötig ist oder nicht. Da jedoch die Vektorregisterlänge 256
und die Vektorlänge 500 beträgt, ist die Verarbeitungsschleife 2 nötig. Deshalb werden die Befehle 1 und 2 der Schleife 2
ebenfalls dekodiert und in die Befehlswarteschlange eingereiht. Sobald der Anforderer 0 die Verarbeitung des Befehls 1 beendet
hat, erzeugt die Steuerschaltung 211 das Ende-Signal und überträgt dieses über die Leitung £ 18 zur Befehlssteuereinheit 3,
Die Befehlssteuereinheit 3 beurteilt nach Empfang dieses Endesignals die Möglichkeit Befehl 4 zu starten und überträgt diesen
Start dem Anforderer 0.
Das Startverfahren ist dabei dasselbe, wie beim Befehl 1. Die VBR3, VAR1 und VIR1 werden der Adressgeneratorschaltung 212
zugeführt. Gleichzeitig werden VAR1 und VIR1 dem Addierer 315 zugeführt und das Additionsergebnis (das ist VAR1 + VIR1 * 256)
in das Register VARD1 gesetzt.
Wenn wegen dem Ablauf des Befehls 4 der Vektor D geholt und in das Vektorregister VR3 gespeichert ist, wird Befehl 5 gestartet,
der die Addition des Inhalts der Register VR2 und VR3 durchführt. Inzwischen empfängt die Befehlssteuereinheit 3 das
Endsignal über die Leitung Jt 19 von der Steuerschaltung 221
und überträgt den Start des Befehls 1 der Schleife 2 dem Anforderer 1. Die VBR1, VARD1 und VIR1 werden der Adressgene-
ratorschaltung 222 übertragen und gleichzeitig VARD1 + VIR1 * 256 berechnet und in das VARDD1 gesetzt. In diesem
Fall schaltet die Signalleitung /13 "Ein", so daß «in Setzsignal dem Register VARDD über die Signalleitung / 22
anliegt.
Als nächstes wird, wenn die ersten Elemente der Register VR2 und VR3 vom Addierer 250 addiert wurden und das Ergebnis in
das Register VR4 abgespeichert ist, Befehl 6 gestartet.
Das Startsignal für Befehl 6 wird dem Anforderer 2 über die
Signalleitung £ 20 zugeführt. Die VBR4, VAR1 und VIR1 werden der Adressgeneratorschaltung 232 übertragen und gleichzeitig
VAR1 + VIR1 * 256 berechnet und in das Register VARDT gesetzt. Dabei geschieht der Start des Befehls 1 der Schleife 2 vor dem
Start des Befehls 6 der Schleife 1 . Die Erzeugung der Adresse wird korrekt ausgeführt, obwohl beide Operationen das Register
VAR teilen. Es wird insbesondere das Register VARD1 beim Start des Befehls 1 der Schleife 2 verwendet und ein Wert für
Schleife 3 in das VARDDI gesetzt (obwohl das vorliegende Verarbeitungsbeispiel
mit Schleife 2 endet, wird eine weitere Schleife 3 angenommen). Der Wert des VAR1 wird nicht fortgeschrieben
und der später zu startende Befehl 6 der Schleife 1 verwendet das VAR1 , so daß keine Widersprüchlichkeit entsteht.
Danach schreitet die Verarbeitung in derselben Weise fort. Befehl 2 der Schleife 2 wird nach dem Ende des Anforderer«
0 und Befehl 4 der Schleife 2 wird nach dem Ende des Anforderen
1 gestartet. Im Falle die Verarbeitungsschleife 3 folgt,
geschieht die Adressenwahl und das Setzen des Starts des Befehls 1 der Schleife 3 wie folgt:
Die VBR1, VARDD1 und VIR1 werden gewählt und der Adressgeneratorschaltung
212 übertragen. Gleichzeitig werden VARDD1 und VIRT dem Addierer 315 übertragen und das Additionsergebnis
(das ist VARDD1 + VIR1 * 256) in das Register VAR1 gesetzt.
-25-
Zu diesem Zeitpunkt schaltet die Signalleitung £ 14/"Ein" und
das Setzsignal wird dem Register VAR über die Signalleitung .1
übertragen.
Figur 9 stellt einen Verarbeitungsfluß für die gleiche Vektorverarbeitung
wie sie den Figuren 8A - 8C zugrundelag dar. Im Falle der Figur 9 ist jedoch die Annahme getroffen, daß die
Register VARDD in der Zugriffssteuereinheit 6 in Figur 6 fehlen. Wenn man den Verarbeitungsfluß in Figur 9 mit den Diagrammen
der Figuren 8A bis 8C vergleicht, ist deutlich zu bemerken, daß die Anforderer 0 und 1 nicht so wirkungsvoll verwendet
sind, weshalb der Verarbeitungswirkungsgrad verringert ist. Somit ist die Wirkung des Überlappens der Verarbeitungsschleifen
deutlich zu bemerken.
Gemäß der bisherigen Beschreibung wird erfindungsgemäß die
für die spätere Schleifenverarbeitung nötige Information während der gerade ablaufenden Verarbeitungsschleife bereitgestellt,
so daß die folgende Verarbeitungsschleife sofort nach Ende der gegenwärtigen Verarbeitungsschleife gestartet werden kann.
Darüberhinaus wird,sobald bei der gerade ablaufenden Verarbeitungsschleife
ein nichtstartfähiger Befehl und in der darauffolgenden Verarbeitungsschleife ein startfähiger Befehl vorhanden
sind, die folgende Verarbeitungsschleife gestartet , ohne auf das Ende der gegenwärtigen Verarbeitungsschleife zu warten.
Claims (6)
- Patentansprüchegekennzeichnet durch- einen Speicher (1), der Vektordaten speichert;- eine Ar ithmetik-und Logikeinheit (8), die Vektoroperationen mit den aus dem Speicher (1) geholten Vektordaten ausführt;- eine Befehlssteuereinheit (3), die wiederholt den Ablauf einer Vektorbefehlsfolge steuert;- eine Zähleinrichtung (403), die ermittelt, wie oft jeweilige Befehle der Vektorbefehlsfolge wiederholt werden;- mehrere Basisregister (105; 309), die jeweils eine Speicheradresse (eine Basisadresse) eines Kopfelements eines bestimmten Vektors speichern;- mehrere Vektoradressregistergruppen (112, 113; 310-312), deren i^-te Gruppe aus Adressregistern gebildet ist, die jeweils einen i-ten Segmentadressenregister-Versatz speichern, der eine Differenz zwischen einer Kopfelementadresse (Segmentbasisadresse) eines i-ten Segmentsvon der Basisadresse des Vektors angibt, wobei die Segmente sich aus der Einteilung eines bestimmten Vektors in Segmente, die jeweils aus Elementen einer vorgegebenen Länge bestehen, ergeben;- eine erste Wähleinrichtung (320 - 323), die, sobald ein Befehl der zum Speicher zugreift, ablaufen soll, das-680-318228475DE1/AtAljettige Adressregister wählt, das derjenigen Adressregistergruppe zugehört, die der Anzahl j der Wiederholungen, die die Ermittlungseinrichtung für den abzulaufenden Befehl ermittelt, entspricht und innerhalb der Gruppe eine Registernummer k hat, die vom Befehl zugeordnet wird;- einer zweiten Wähleinrichtung (319), die eines der mehreren Basisregister (309) wählt, das von dem abzulaufenden Befehl angegeben ist;- eine Addiereinrichtung (108, 254), die Inhalte des gewählten Adressregisters und des gewählten Basisregisters addiert und die Segmentbasisadresse des j-ten Segments ausgibt; und- eine Adressgeneratoreinrichtung (211, 221, 231; 212, 222, 232), die aufeinanderfolgend Adressen für die dem j-ten Segment zugehörigen Elemente auf der Basis der ausgegebenen Segmentbasisadresse für den Speicherzugriff generiert.
- 2. Vektorprozessor nach Anspruch 1,
gekennzeichnet durcheine Recheneinrichtung (110, 111; 314, 315), die für das folgende (j + 1)-te Segment eine Basisadresse abhängig vom Ausgang des Adressregisters, eines vom Befehl angegebenen Adressinkrements und einer Länge eines Vektorregisters (7) bei jedem Wählvorgang der ersten Wähleinrichtung-berechnet und die berechnete Basisadresse in das Adressregister der Gruppe (j + 1) und derselben Registernummer k wie die des gewählten Adressregisters einschreibt. - 3. Vektorprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß• ♦ ft »* ·— ο ™*die Zähleinrichtung (403) die Anzahl der Wiederholungen mit einem Modulus zählt, der gleich der Gesamtzahl η der Adressregistergruppen ist unddie Recheneinrichtung das Einschreiben mit der ersten Adressregistergruppe als die (n + 1)-te Adressregistergruppe durchführt, wenn j gleich η ist.
- 4. Vektorprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daßdie erste Wähleinrichtung die Cj -η χ -f)-te Adressregistergruppe als j-te Adressregistergruppe wählt, wenn die Anzahl j der Wiederholungen die Zahl η überschreitet unddie Berechnungseinrichtung das Einschreiben mit der Cj + 1 -η χ i)-ten Adressregistergruppe als die (j + 1)-te Adressregistergruppe durchführt, falls Cj + 1) die Zahl η überschreitet, wobei ί eine positive Ganzzahl ist.
- 5. Vektorprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,daß die Befehlssteuereinheit (3) aufweist:- einen Dekodierer (402), der aufeinanderfolgend Vektorbefehle dekodiert,- einen Dekodierunterdrückungsdetektor (406), der entscheidet, ob der dekodierte Befehl ablaufen kann oder nicht,- ein Befehlsschlangenregister C407), das dekodierte Information nicht ablauffähiger Befehle zusammen mit der Anzahl der Wiederholungen hält und- eine Einrichtung (400, 404, 405), die das Dekodieren der Befehle unterdrückt, und- eihe Befehlstorschaltung (409), die ermittelt, ob der nächste dekodierte Befehl oder der im Befehlsschlangenregister (407) wartende Befehl sobald der Start des vorangehenden Befehls beendet ist, starten darf und die Startfähigkeit entscheidet, wenn ein von dem zustartenden Befehl benötigtes Betriebsmittel benutzbar und kein Registerkonflikt zwischen dem zu startenden und im Befehlsschlangenregister befindlichen Befehl und dem zuvor dekodierten Befehl vorliegt.
- 6. Vektorprozessor nach Anspruch 5, ;dadurch gekennzeichnet,daß die Unterdrückungseinrichtung (400, 404, 405) das Dekodieren des Befehls unterdrückt, während der Befehl dessen Anzahl von Wiederholungen [*j ~ (n - 1 )1 (j = n) bezogen auf die Anzahl j der Wiederholungen des gerade zu dekodierenden Befehls ist, im Befehlsschlangenregister (407) liegt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP58002221A JPS59128670A (ja) | 1983-01-12 | 1983-01-12 | ベクトル処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3400723A1 true DE3400723A1 (de) | 1984-07-12 |
DE3400723C2 DE3400723C2 (de) | 1989-02-23 |
Family
ID=11523296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19843400723 Granted DE3400723A1 (de) | 1983-01-12 | 1984-01-11 | Vektorprozessor |
Country Status (4)
Country | Link |
---|---|
US (1) | US4677547A (de) |
JP (1) | JPS59128670A (de) |
DE (1) | DE3400723A1 (de) |
GB (1) | GB2133595B (de) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61173345A (ja) * | 1985-01-29 | 1986-08-05 | Hitachi Ltd | 計算機システム |
JPH0656594B2 (ja) * | 1985-05-07 | 1994-07-27 | 株式会社日立製作所 | ベクトルプロセツサ |
JP2564264B2 (ja) * | 1985-05-22 | 1996-12-18 | 株式会社日立製作所 | ベクトル処理方法及びベクトルプロセッサ |
US5226129A (en) * | 1986-10-30 | 1993-07-06 | Nec Corporation | Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address |
CA1281426C (en) * | 1987-03-04 | 1991-03-12 | Shingo Oota | Vector calculation circuit capable of rapidly carrying out vectorcalculation of three input vectors |
US5257394A (en) * | 1988-10-18 | 1993-10-26 | Japan Atomic Energy Research Institute | Logical expression processing pipeline using pushdown stacks for a vector computer |
JPH02109160A (ja) * | 1988-10-18 | 1990-04-20 | Japan Atom Energy Res Inst | ベクトル計算機用演算装置 |
US5261063A (en) * | 1990-12-07 | 1993-11-09 | Ibm Corp. | Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs |
JP2692384B2 (ja) * | 1990-12-29 | 1997-12-17 | 日本電気株式会社 | アドレス生成回路 |
US7447886B2 (en) * | 2002-04-22 | 2008-11-04 | Freescale Semiconductor, Inc. | System for expanded instruction encoding and method thereof |
US7299338B2 (en) * | 2002-12-04 | 2007-11-20 | Agere Systems Inc. | Vector indexed memory unit and method |
US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
US7315932B2 (en) | 2003-09-08 | 2008-01-01 | Moyer William C | Data processing system having instruction specifiers for SIMD register operands and method thereof |
US7107436B2 (en) * | 2003-09-08 | 2006-09-12 | Freescale Semiconductor, Inc. | Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
US20060155974A1 (en) * | 2005-01-07 | 2006-07-13 | Moyer William C | Data processing system having flexible instruction capability and selection mechanism |
US20140281369A1 (en) * | 2011-12-23 | 2014-09-18 | Ashish Jha | Apparatus and method for sliding window data gather |
US9424039B2 (en) * | 2014-07-09 | 2016-08-23 | Intel Corporation | Instruction for implementing vector loops of iterations having an iteration dependent condition |
US9910650B2 (en) * | 2014-09-25 | 2018-03-06 | Intel Corporation | Method and apparatus for approximating detection of overlaps between memory ranges |
CN114422394B (zh) * | 2022-01-19 | 2023-08-29 | 北京鼎兴达信息科技股份有限公司 | 一种业务地址使用率计算方法、系统以及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2753062A1 (de) * | 1976-12-13 | 1978-06-15 | Rca Corp | Einrichtung zur durchfuehrung programmierter befehle |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5148937A (en) * | 1974-10-25 | 1976-04-27 | Fujitsu Ltd | Kiokusochi niokeru junjoseigyohoshiki |
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US4240139A (en) * | 1977-09-22 | 1980-12-16 | Tokyo Shibaura Denki Kabushiki Kaisha | Address generating system |
FR2431732A1 (fr) * | 1978-07-19 | 1980-02-15 | Materiel Telephonique | Dispositif de conversion d'adresse virtuelle en adresse reelle |
JPS6055864B2 (ja) * | 1980-07-21 | 1985-12-06 | 株式会社日立製作所 | ベクトルプロセツサ |
US4541046A (en) * | 1981-03-25 | 1985-09-10 | Hitachi, Ltd. | Data processing system including scalar data processor and vector data processor |
US4525778A (en) * | 1982-05-25 | 1985-06-25 | Massachusetts Computer Corporation | Computer memory control |
-
1983
- 1983-01-12 JP JP58002221A patent/JPS59128670A/ja active Granted
-
1984
- 1984-01-10 GB GB08400556A patent/GB2133595B/en not_active Expired
- 1984-01-11 DE DE19843400723 patent/DE3400723A1/de active Granted
- 1984-01-12 US US06/570,244 patent/US4677547A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2753062A1 (de) * | 1976-12-13 | 1978-06-15 | Rca Corp | Einrichtung zur durchfuehrung programmierter befehle |
Non-Patent Citations (1)
Title |
---|
US-IBM Technical Disclosure Bulletin, Vol. 13, No. 12, Mai 1971, S. 3805 f. * |
Also Published As
Publication number | Publication date |
---|---|
GB8400556D0 (en) | 1984-02-15 |
GB2133595B (en) | 1986-10-15 |
US4677547A (en) | 1987-06-30 |
JPS59128670A (ja) | 1984-07-24 |
JPH0512750B2 (de) | 1993-02-18 |
GB2133595A (en) | 1984-07-25 |
DE3400723C2 (de) | 1989-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3400723A1 (de) | Vektorprozessor | |
DE3882772T2 (de) | Vektorprozessor angepasst zum Sortieren von Vektordaten. | |
DE3401995C2 (de) | ||
DE2934971C2 (de) | Nach dem Fließbandprinzip arbeitender Zentralprozessor | |
DE2354521C2 (de) | Verfahren und Einrichtung zum gleichzeitigen Zugriff zu verschiedenen Speichermoduln | |
DE3424962C2 (de) | ||
DE3752280T2 (de) | Mustergenerator | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
EP0048767A1 (de) | Prioritätsstufengesteuerte Unterbrechungseinrichtung | |
DE1956604B2 (de) | Datenverarbeitungsanlage | |
DE2457612A1 (de) | Mikroprogrammier-steuersystem | |
DE2722124A1 (de) | Anordnung zum feststellen des prioritaetsranges in einem dv-system | |
DE3121742A1 (de) | Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung | |
DE3043653A1 (de) | Datenverarbeitungsanlage | |
DE2548720C2 (de) | Mikroprogramm-Steuerwerk | |
DE69501581T2 (de) | Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode | |
DE3446957A1 (de) | Vektor-prozessor | |
DE3930313A1 (de) | Vektorprozessor | |
DE69031361T2 (de) | Taktsignalgeneratorsystem | |
DE2617485A1 (de) | Verfahren und schaltungsanordnung zur abarbeitung von mikrobefehlsfolgen in datenverarbeitungsanlagen | |
DE3447530A1 (de) | Vektorprozessor | |
DE68903280T2 (de) | Vektorschlange in computern mit vektorregister. | |
DE2745204A1 (de) | Mikroprogramm-leitwerk fuer eine datenverarbeitungsanlage | |
DE2165730A1 (de) | Rechensystem | |
DE69320147T2 (de) | Vorrichtung zur Bildkodierung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |