HINTERGRUND DER ERFINDUNG
1. Gebiet der Erfindung
-
Diese Erfindung betrifft einen Datenprozessor und
insbesondere einen Datenprozessor, der parallele Operationen
durchführen kann.
2. Beschreibung des relevanten Standes der Technik
-
In den vergangenen Jahren hat sich die Digitaltechnik stark
entwickelt, und es werden Daten verschiedener Arten mit hoher
Geschwindigkeit unter Verwendung der Digitaltechnik
verarbeitet. Allerdings erfordert eine komplizierte Verarbeitung mit
hoher Geschwindigkeit eine Datenverarbeitung bei höherer
Geschwindigkeit. Zur Erfüllung dieses Erfordernisses wurden
verschiedene Technologien für einen
Hochgeschwindigkeitsbetrieb entwickelt und vorgeschlagen.
-
Eine der herkömmlichen typischen Technologien für einen
Hochgeschwindigkeitsbetrieb ist die Pipeline-Verarbeitung. Fig. 4
zeigt einen typischen Verarbeitungsablauf für die
Pipelineverarbeitung. Wie es in Fig. 4 gezeigt ist, ist bei der
Datenverarbeitung durch die Pipelineverarbeitung ein Prozessor
8 in eine Anzahl von Verarbeitungsstufen eingeteilt, wie eine
Befehlsabrufstufe 10, eine Befehlsdekodierstufe 12, eine
Operandenabrufstufe 14, eine Operationsausführungsstufe 16 und
eine Ergebnisspeicherungsstufe 18. Der Prozessor 8 kann eine
gleichzeitige Verarbeitung von fünf Befehlen durch Abwicklung
einer Folge separater Befehle oder Daten auf verschiedenen
Stufen durchführen. In jedem Zyklus des Arbeitstakts wird die
dem Befehl dem Befehl entsprechende Operation in jeder Stufe
durchgeführt.
-
Werden die Ausgaben des Prozessors 8 überwacht, wird ein
Befehl in einem Zyklus wie bei herkömmlichen Prozessoren
abgewickelt. Ein Zyklus des herkömmlichen Prozessors ist aber auf
die Zeit eingestellt, die zur vollständigen Abwicklung eines
Befehls erforderlich ist, während in dem Prozessor 8, bei dem
eine Pipelineverarbeitung angewendet wird, ein Zyklus auf die
Zeit eingestellt ist, die zur Durchführung der Operation an
jeder Stufe erforderlich ist. Infolgedessen kann der
Arbeitstakt des Prozessors 8, bei dem eine Pipelineverarbeitung
angewendet wird, verglichen mit dem herkömmlichen Prozessor
kurz eingestellt werden, oder wenn beide den gleichen
Arbeitstakt aufweisen, kann der Prozessor 8, bei dem eine
Pipelineverarbeitung angewendet wird, kompliziertere Operationen
bezüglich der Befehle durchführen.
-
Somit wird durch die Aufteilung des Prozessors in eine
Vielzahl von Verarbeitungsstufen die Arbeitsgeschwindigkeit in
der Theorie im wesentlichen proportional zur Anzahl der
Stufen verbessert. Tatsächlich werden bei Sprungbefehlen, usw.
in die Pipeline bereits eingelesene Befehle ungültig gemacht,
und ein neuer Befehl wird von dem Sprungziel gelesen. Daher
wird bei der Durchführung von Sprungbefehlen, usw. der
Pipelinestrom abgeschnitten. Eine zu lange Pipeline verursacht
eine Verlangsamung der Programmausführungsgeschwindigkeit.
Infolgedessen wird im allgemeinen oft eine Pipeline von
ungefähr vier bis sechs Stufen verwendet. Ein Supercomputer oder
dergleichen ist mit einer Anzahl von Pipelines für einen
Superskalierer ("super scaler"), usw. versehen.
-
Eine andere herkömmliche Technologie für einen
Hochgeschwindigkeitsbetrieb ist die Mehrprozessortechnologie. Anders als
die vorstehend beschriebene Pipelmetechnologie verwendet die
Mehrprozessortechnologie eine Vielzahl von Prozessoren. Fig.
5 zeigt die Mehrprozessortechnologie. Wie es in Fig. 5
gezeigt ist, ist eine Anzahl von Prozessoren 32 mit gemeinsamen
Registern 30 verbunden. Im allgemeinen wird den Prozessoren
32 der gleiche Befehl zugeführt, die dann eine
Datenverarbeitung für verschiedene Daten in den gemeinsamen Registern 30
durchführen. Somit kann die Arbeitsgeschwindigkeit
proportional zur Anzahl der Prozessoren ausgebildet werden, und es
kann eine Verbesserung der Datenverarbeitungsgeschwindigkeit
erwartet werden.
-
Ein in Informationsverarbeitungssystem, bei dem die
vorstehend beschriebene Pipelmetechnologie angewendet wird, ist
beispielsweise in der japanischen Patentoffenlegungsschrift
Nr. Hei 2-29825 beschrieben. Ein Beispiel der
Mehrprozessortechnologie unter Verwendung eines zentralen Prozessors und
von Koprozessoren ist in der japanischen
Patentoffenlegungsschrift Nr. Hei 2-32452 beschrieben. Die hierin beschriebene
Mehrprozessortechnologie ermöglicht es dem zentralen
Prozessor, die Ausführung der Koprozessoren zu überwachen.
-
Ein Parallelverarbeitungssystem mit einem Aufbau zum
Umschalten zwischen einer Parallelverarbeitung und
Seriellverarbeitung ist beispielsweise in der japanischen
Patentoffenlegungsschrift Nr. Hei 3-129433 beschrieben.
-
Eine andere Technologie zum Hochgeschwindigkeitsbetrieb
liefert einen Rechner mit reduzierten Befehlsvorrat (RISC). Ein
Beispiel eines derartigen RISC ist beispielsweise in der
japanischen Patentoffenlegungsschrift Nr. Sho 63-49843
beschrieben.
-
Die herkömmlichen Datenprozessoren sind wie vorstehend
beschrieben konfiguriert. Demnach wird zur Beschleunigung einer
Parallelverarbeitung des Superskalierers, usw. durch weitere
Verwendung der Pipelmetechnologie die Architektur der
Pipe
line, usw. äußerst kompliziert, wodurch Entwicklungsarbeiten
erhöht und die erzielte Produktion verschlechtert wird.
-
Andererseits muß bei der Softwareentwicklung der Betrieb der
Pipeline im Einzelnen zur Herstellung von Software verstanden
werden, die genau gesteuert werden kann.
-
Des weiteren erfordert eine Parallelverarbeitung in dem
vorstehend beschriebenen Mehrprozessorsystem die gleichen
(gemeinsamen) Betriebsmittel, auf die durch die Prozessoren
zugegriffen werden kann (bei dem vorstehend angeführten
Beispiel sind dies die gemeinsamen Register). Es ist auch eine
Kommunikation zwischen den Prozessoren erforderlich, um
gleichzeitige Zugriffe auf die gleichen Betriebsmittel durch
die Prozessoren oder einen Konflikt zwischen den Prozessoren
zu vermeiden. Somit muß bei einem System mit
Hochgeschwindigkeitsbetrieb unter Verwendung der Mehrprozessortechnologie
der Zwischenprozessor-Kommunikationszustand ausreichend
erfaßt sein, bevor eine Prozessorsteuerungssoftware entworfen
wird.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Der Erfindung liegt daher die Aufgabe zugrunde, einen
Datenprozessor auszugestalten, der parallele und serielle
Operationen umschalten kann, und eine Architektur aufweist, die
bezüglich der Herstellung und Entwicklung einfach ist, und
auch die Softwareentwicklung erleichtert.
-
Diese Aufgabe wird gemäß einem Ausführungsbeispiel der
Erfindung durch einen Datenprozessor gemäß Patentanspruch 1
gelöst.
-
Daher kann bei seriellen Operationen die
Hauptoperationseinheit Daten von/in alle Register lesen/schreiben, und bei
parallelen Operationen kann sie Daten von/in die dafür
dedi
zierten Register und die gemeinsamen Register
lesen/schreiben.
-
Wird ein serieller Operationsbefehl eingegeben, veranlaßt der
Steuerabschnitt lediglich die Hauptbetriebseinheit zur
Durchführung einer gegebenen Operation. Wird ein paralleler
Operationsbefehl eingegeben, veranlaßt er nicht nur die
Hauptoperationseinheit sondern auch andere Operationseinheiten zur
Durchführung einer gegebenen Operation.
-
Werden parallele Operationsbefehle ausgeführt, wird auf die
dedizierten Register nur durch die entsprechenden
Operationseinheiten zum Lesen/Schreiben von Daten zugegriffen. Werden
serielle Operationsbefehle ausgeführt, kann auf alle
dedizierten Register nur durch die Hauptoperationseinheit zum
Lesen/Schreiben von Daten zugegriffen werden.
KURZBESCHREIBUNG DER ZEICHNUNG
-
Fig. 1 und 2 zeigen Blockschaltbilder eines Prozessors gemäß
einem bevorzugten Ausführungsbeispiel der Erfindung.
-
Fig. 3 zeigt eine Darstellung darüber, auf welche ALU-
Register in parallelen und seriellen Modi des Prozessors
gemäß dem bevorzugten Ausführungsbeispiel zugegriffen wird.
-
Fig. 4 zeigt eine Darstellung eines typischen
Prozessoroperationsablaufs bei der herkömmlichen Pipelmetechnologie.
-
Fig. 5 zeigt ein Blockschaltbild der herkömmlichen
Mehrprozessortechnologie.
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
In der beiliegenden Zeichnung ist ein bevorzugtes
Ausführungsbeispiel der Erfindung gezeigt.
-
Die Fig. 1 und 2 zeigen Blockschaltbilder eines
Datenprozessors gemäß einem Ausführungsbeispiel der Erfindung. Wie es
in Fig. 1 gezeigt ist, ist der Datenprozessor gemäß dem
Ausführungsbeispiel eine Zentralverarbeitungseinheit (CPU) mit
einer ersten Arithmetik- und Logikeinheit (ALU) 40 und einer
zweiten ALU 42. Er umfaßt auch 12 Register 44-0 bis 44-11.
Ein Steuerabschnitt 46 steuert die erste und die zweite ALU
40 und 42 und die 12 Register 44-0 bis 44-11. Gemäß dem
Ausführungsbeispiel in die CPU eingegebene Befehle werden in
serielle und parallele Operationsbefehle eingeteilt.
-
Das Ausführungsbeispiel ist durch die Tatsache
charakterisiert, daß die seriellen Operationsbefehle nur durch die
erste ALU 40 ausgeführt werden, wobei zu dieser Zeit die zweite
ALU 42 angehalten ist. Andererseits werden die parallelen
Operationsbefehle durch die erste und die zweite ALU 40 und
42 parallel zur gleichen Zeit ausgeführt. Ob der eingegebene
Befehl ein serieller oder paralleler Operationsbefehl ist,
wird durch den Steuerabschnitt 46 bestimmt. Der
Steuerabschnitt 46 bestimmt, ob der eingegebene Befehl ein serieller
oder paralleler Operationsbefehl ist und steuert die
Operationen der ersten und der zweiten ALU im Ansprechen auf das
bestimmte Ergebnis.
-
In Fig. 1 ist ein Verarbeitungsschema bei der Ausführung
paralleler Operationsbefehle gezeigt (nachstehend wird dieser
Zustand als paralleler Modus bezeichnet). Wie es in Fig. 1
gezeigt ist, sind im parallelen Modus die Register 44-0 bis
44-3 mit der ersten und der zweiten ALU 40 und 42 verbunden.
Register 44-4 bis 44-7 sind nur mit der ersten ALU 40
verbunden. Register 44-8 bis 44-11 sind nur mit der zweiten ALU 42
verbunden.
-
Das Ausführungsbeispiel ist durch die Tatsache
charakterisiert, daß zwei Arten von Registergruppen in dem parallelen
Modus vorgesehen sind: eine sowohl mit der ersten als auch
der zweiten ALU verbundene gemeinsame Registergruppe und eine
nur mit einer der ALUs verbundene dedizierte Registergruppe.
Wie es in Fig. 1 gezeigt ist, sind in dem Ausführungsbeispiel
die Register 44-0 bis 44-3 gemeinsame Register, die Register
44-4 bis 44-7 sind für die erste ALU 40 dedizierte Register
und die Register 44-8 bis 44-11 sind für die zweite ALU 42
dedizierte Register. Im parallelen Modus wird auf die für die
zweite ALU dedizierten Register 44-8 bis 44-11 mit den
gleichen Nummern wie auf die Register 44-11 bis 44-7 bezug
genommen, die für die erste ALU dediziert sind. Zum Zeitpunkt der
Operation wird der gleiche Befehl der ersten und der zweiten
ALU 40 und 42 zugeführt, wodurch beispielsweise auf das
Register 44-8 immer zur gleichen Zeit wie auf das Register 44-4
bezug genommen wird, wie es nachstehend beschrieben ist.
-
In Fig. 2 ist ein Betriebsschema für die Ausführung serieller
Operationsbefehle gezeigt (nachstehend wird dieser Zustand
als serieller Modus bezeichnet).
-
Wie es in Fig. 2 gezeigt ist, sind in dem seriellen Modus
alle Register 44-0 bis 44-11 nur mit der ersten ALU 40
verbunden, und die zweite ALU 42 ist abgetrennt. Fig. 3 zeigt,
welche ALU in den beiden Modi auf die Register zugreifen kann.
-
Nachstehend sind ausführliche Operationen beschrieben, in
denen die Werte einer Matrix A mit den Werten einer Matrix B
zur Erzeugung einer Matrix C multipliziert werden. Es wird
angenommen, daß die Matrix B von einem Eingangs-
/Ausgangsanschluß (I/O-Anschluß) eingegeben wird, und daß die
Matrix C des Berechnungsergebnisses auch zu dem I/O-Anschluß
ausgegeben wird. Die Matrizen A, B und C sind wie folgt
gegeben:
-
Cx = {ax + by}
-
Cy = {cx + dy}
-
Ein Beispielprogramm zur Durchführung derartiger
Multiplikationen sieht folgendermaßen aus:
-
Die Ausführung dieses Programms wird zuerst im seriellen
Modus gestartet. Die Befehle in den Schritten (1) bis (4) laden
a in das Register 44-4 (R4), b in das Register 44-S (R5), c
in das Register 44-8 (R8) und d in das Register 44-9 (R9). In
der folgenden Beschreibung werden die Register 44 als R0 bis
R11 dargestellt. Der ldi-Befehl, der "Load immediate"
darstellt, ist ein serieller Operationsbefehl, der einen
gegebenen Wert direkt in ein gegebenes Register lädt. Schritt (5)
ist eine Marke, die den Beginn einer Schleife der
Operationssequenz darstellt, wie es nachstehend beschrieben ist.
-
Die Befehle in den Schritten (6) und (7) erhalten die Werte
der Matrix A von dem I/O-Anschluß und speichern sie in den
Registern R0 und R1. Die get-Befehle sind Eingabe-
/Ausgabebefehle zum Erhalten der Werte von dem I/O-Anschluß.
-
Somit werden a und b in den Registern gespeichert, die für
die erste ALU reserviert bzw. dediziert sind (R4 und R5), und
c und d werden in den Registern gespeichert, die für die
zweite ALU (R8 und R9) dediziert sind, und des weiteren
werden x und y der Matrix B in den gemeinsamen Registern R0 und
R1 gespeichert.
-
Dann werden tatsächliche Multiplikationen durchgeführt: ax
und by werden durch die erste ALU und cx und dy durch die
zweite ALU parallel ausgeführt.
-
Die Schritte (8) bis (10) stellen den Kern der
Multiplikationsoperation dar. Befehle, an die ein Index ".p" angehängt
ist, wie die in diesen drei Schritten verwendeten Befehle,
sind parallele Operationsbefehle. In den Schritten 1 bis 7
werden die Befehle durch die erste ALU ausgeführt. In den
Schritten 8 bis 11 werden die Befehle sowohl durch die erste
als auch die zweite ALU 40 und 42 ausgeführt.
-
In Schritt (8) multipliziert die erste ALU 40 den Wert des
Registers R0 und den Wert des Registers R4 und speichert das
Ergebnis im Register R6. Andererseits sind bei der zweiten
ALU 42 die Register R4 und R6 Register R8 und R10 im
seriellen Modus, wie es vorstehend beschrieben ist. Daher
multipliziert die zweite ALU 42 die Werte der Register R0 und R8 und
speichert das Ergebnis im Register R10. Somit führt die erste
ALU 40 a * x und die zweite ALU 42 c * x aus, und die
Ergebnisse werden jeweils in Registern R6 und R10 gespeichert.
Fmpy, das "Floating Multiply" darstellt, ist ein Gleitpunkt-
Multiplikationsbefehl.
-
Der Befehl in Schritt (9) ist auch ein paralleler
Operationsbefehl gleich dem in Schritt (8). Die erste ALU 40
multipli
ziert den Wert des Registers R1 und den Wert des Registers R5
und speichert das Ergebnis im Register R7. Andererseits sind
bei der zweiten ALU 42 die Register R5 und R7 die Register R9
und R11 im seriellen Modus, wie es vorstehend beschrieben
ist. Daher multipliziert die zweite ALU 42 die Werte der
Register R1 und R9 und speichert das Ergebnis im Register R11.
Somit führt die erste ALU 40 b * y und die zweite ALU 42 d *
y aus und die Ergebnisse werden jeweils in den Registern R7
und R11 gespeichert.
-
Nun sind a * x in dem Register R6, c * x im Register R10, b *
y im Register R7 und d * y im Register R11 gespeichert.
-
In Schritt 10 werden Additionen durchgeführt. Die erste und
die zweite ALU 40 und 42 führen die Addition parallel durch
den Paralleloperationsbefehl Fadd.p durch. Die erste ALU 40
addiert den Wert des Registers R7 und den Wert des Registers
R6 und speichert das Ergebnis im Register R4. In der zweiten
ALU 42 sind die Register R6, R7 und R4 in dem seriellen Modus
jeweils die Register R10, R11 und R8. Daher multipliziert die
zweite ALU 42 die Werte der Register R11 und R10 und
speichert das Ergebnis im Register R8. Somit führt die erste ALU
40 (a * x) + (b * y) und die zweite ALU 42 (c * x) + (d * y)
aus, und die Ergebnisse werden jeweils in den Registern R4
und R8 gespeichert. Der Paralleloperationsbefehl Fadd.p, der
"Floating Addition" darstellt, ist ein
Gleitpunktadditionsbefehl.
-
Somit sind die Elemente der Matrix C, Cx und Cy, die die
Multiplikationsergebnisse der Matrizen A und B darstellen, in
den Registern R4 und R8 gespeichert.
-
Die durch Durchführung der Operationen erhaltenen Ergebnisse
werden in den Schritten 11 und 12 zu dem I/O-Anschluß
ausgegeben. Der Wert des Registers R4, d. h. Cx (= (a * x) + (b * y))
wird in Schritt (11) und der Wert des Registers R8, d. h. Cy
(= (c * x) + (d * y)) in Schritt (12) ausgegeben. Die put-
Befehle sind im seriellen Modus ausgeführte Befehle zur
Ausgabe der Registerwerte zu dem I/O-Anschluß.
-
Der Befehl in Schritt (13) ist schließlich ein Sprungbefehl
zum Sprung zur Marke LOOP und zur Wiederholung der vorstehend
beschriebenen Operationsfolge.
-
Herkömmlicherweise erforderten parallele Operationen die
Ausbildung verschiedener Programme für jede Prozessoreinheit und
die Zufuhr von dedizierten Befehlen zu den
Prozessoreinheiten. Gemäß dem Ausführungsbeispiel ist allerdings eine
Prozessoreinheit mit einer Vielzahl von ALUs versehen, von denen
jede mit dedizierten Registern versehen ist, wodurch
Operationen bei verschiedenen Daten durchgeführt werden, während
den ALUs gemeinsame Befehle zugeführt werden. Daher sind die
Operationen in den Schritten (8) bis (10) äquivalent zu
folgenden Programmen für die erste und die zweite ALU 40 und 42:
-
Programm für erste ALU
-
Fmpy R6, R4, R0
-
Fmpy R7, R5, R1
-
Fadd R4, R6, R7
-
Programm für zweite ALU
-
Fmpy R10, R8, R0
-
Fmpy R11, R9, R1
-
Fadd R8, R10, R11
-
Somit würde das herkömmliche Mehrprozessorsystem die
Ausbildung separater Programme erfordern, jedoch werden gemäß dem
Ausführungsbeispiel parallele Operationen einfach durch die
Bereitstellung eines Programms ermöglicht.
-
Wie es vorstehend beschrieben ist, ist eine CPU gemäß dem
Ausführungsbeispiel vorgesehen, die die Modi einfach durch
Zufuhr paralleler und serieller Operationsbefehle automatisch
umschalten kann. Da jede ALU des weiteren mit dedizierten
Registern versehen ist, können die ALUs separate Operationen
bei verschiedenen Daten im parallelen Modus durchführen.
Daher kann die Kommunikationssteuerung zur Vermeidung eines
gleichzeitigen Zugriffs auf gemeinsame Register (Konflikt)
wie bei der herkömmlichen Mehrprozessortechnologie sehr
vereinfacht werden, und die Struktur der CPU wird einfach. Aus
diesen Gründen kann die CPU gemäß dem Ausführungsbeispiel
effiziente parallele Operationen durchführen und die
Programmentwicklung erleichtern.
-
Wie es vorstehend beschrieben ist, können gemäß dem
Datenprozessor der Erfindung effiziente parallele Operationen und
herkömmliche serielle Operationen sehr leicht umgeschaltet
werden, indem die dem Datenprozessor zugeführten Befehle
umgeschaltet werden. Da die parallelen Operationsbefehle die
Operationseinheiten zur Durchführung der gleichen Operationen
veranlassen, ermöglicht ein Programm die Durchführung
paralleler Operationen, wodurch parallele Operationen sehr leicht
ausgeführt werden.
-
Daher kann die CPU parallele Operationen sehr leicht ohne die
herkömmlich erforderliche komplizierte Entwicklung
durchführen.
-
Obwohl das Ausführungsbeispiel ein Beispiel darstellt, bei
dem die Erfindung bei der CPU angewendet wird, kann auch die
Anwendung der Erfindung bei einem DSP (digitalen
Signalprozessor) ähnliche Funktionen und Effekte erzeugen.
-
Obwohl die ALUs als Operationseinheiten gezeigt sind, wird
auch die Verwendung von Addierern als Operationseinheiten für
Anwendungen bevorzugt, bei denen lediglich
Additionsoperationen durchgeführt werden.