DE1901343B2 - Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen - Google Patents
Datenverarbeitungsanlage zur Ausführung von MateirenrechnungenInfo
- Publication number
- DE1901343B2 DE1901343B2 DE19691901343 DE1901343A DE1901343B2 DE 1901343 B2 DE1901343 B2 DE 1901343B2 DE 19691901343 DE19691901343 DE 19691901343 DE 1901343 A DE1901343 A DE 1901343A DE 1901343 B2 DE1901343 B2 DE 1901343B2
- Authority
- DE
- Germany
- Prior art keywords
- data
- registers
- units
- matrix
- shift
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
Die Erfindung betrifft eine Datenverarbeitungsanlage
zur Ausführung von Matrizenrechnungen mit mehreren Verarbeitungseinheiten und an diese angeschlossenen
Speichereinheiten sowie mit Koppelregistern, über die die Verarbeitungseinheiten Daten-Wörter
von den zugeordneten Speichereinheiten empfangen, und worin aus je r-Bits bestehende Datenwörter
in mehrere Speichereinheiten verteilt gespeichert sind und worin Mittel zur Umsetzung dieser
Datenwörter in eine bestimmte Speichereinheit, von der aus die Verarbeitung in der zugeordneten Verarbeitungseinheit
erfolgt, vorgesehen sind.
Ein Problem moderner Datenverarbeitung besteht darin, die Verarbeitungszeit für große Datenmengen
zu reduzieren. Wenn z.B. eine Gruppe von Zahlen mit einer anderen Gruppe von Zahlen zu multiplizieren
ist, erfordert jede Multiplikationsoperation zwischen zwei Zahlen der Gruppen eine bestimmte
Zeit. Wenn daher die Gruppen aus sehr vielen Zahlenwerten bestehen, ist ein großer Zeitaufwand not-
wendig, um die Multiplikation der Gruppen auszuführen. Derartige Schwierigkeiten ergeben sich
besonders bei Matrizenrechnungen. Die einzelnen Werte einer Matrix, von denen jeder als Datenwort
aufgefaßt werden kann, sind zeilenweise in einem Speicher mit wahlfreiem Zugriff gespeichert. Der
Zugriff zu den Wörtern einer derartigen Zeile ist insofern beschränkt, als zu einer bestimmten Zeit
jeweils nur ein Wort der Zeile dem Speicher entnommen werden kann. Ein gleichzeitiger Zugriff zu
gleich geordneten, d. h. einer Kolonne der Matrix angehörenden Wörtern verschiedener Zeilen ist nur
dann möglich, wenn jede Zeile in einer separaten Speichereinheit gespeichert ist. Zur Bildung des Produktes
von zwei Matrizen, von denen jede die Dimension R aufweist, ist eine Summe von R3- Multiplikationen
notwendig, die in aufeinanderfolgenden Schritten ausgeführt werden müssen. Der hierfür
benötigte hohe Zeitaufwand kann verringert werden, wenn es gelingt, eine Anzahl dieser Multiplikationen
unter Verwendung mehrerer Verarbeitungseinheiten parallel auszuführen. Für eine derartige parallele
Multiplikation ist es jedoch wesentlich, daß für die Matrixelemente sowohl zeilenweise als auch spaltenweise
ein paralleler Zugriff besteht. Es ist daher notwendig, daß die ursprünglich zeilenweise gespeicherten
Wörter einer der beiden Matrizen in Spaltenform umgesetzt werden, und zwar in einer solchen Weise,
daß die Wörter der Zeile dieser Matrix und die Datenwörter einer zugeordneten Spalte der anderen
Matrix der gleichen Verarbeitungseinheit zur Verfügung stehen, wobei ein Zugriff zu einem Spaltenwort
und einem umgesetzten Zeilenwort für alle Verarbeitungseinheiten parallel möglich sein muß.
Zur Ausführung derartiger Umsetzungsoperationen sind verschiedene Anordnungen bekanntgeworden
(USA.-Patent 3 258 584 und 3 217 317). Bei diesen Anordnungen geschieht die Umsetzung in der jeweiligen
Speichereinheit durch Verwendung von Magnetkernspeichermatrizen mit einer besonders gefädelten
Leitungsführung für die Treib- und Leseleitungen. Die Herstellung derartiger Speicher-Umsetzer-Matrizen
ist wegen der umfangreichen Fädelarbeit relativ aufwendig. Nachteilig ist auch, daß in
einer Datenverarbeitungsanlage, die universell anwendbar sein soll, wegen der Ausführungsmöglichkeit
von Matrizenrechenoperationen an Stelle oder neben den herkömmlichen Speichereinheiten die Speicher
mit Umsetzerverdrahtung vorgesehen werden müssen.
Natürlich kann die Datenumsetzung auch durch ein entsprechendes Umsetzerprogramm vorgenommen
werden. Ein solches Programm erfordert aber eine sehr hohe Anzahl Speicher-Datenentnahme- und
Wiedereinschreibzyklen, wodurch der in der Parallelverarbeitung enthaltene Zeitvorteil teilweise wieder
verlorengeht.
Die Aufgabe vorliegender Erfindung besteht darin, eine für Parallel- bzw. Mehrfachverarbeitung geeignete
Datenverarbeitungsanlage anzugeben, bei der die oben erläuterten Datenumsetzungen bei Matrizenrechnungen
ohne Verwendung von SpezialSpeichern und mit einem relativ geringen Einrichtungs- und
Zeitaufwand ausgeführt werden können. Erfindungsgemäß geschieht dies dadurch, daß zwischen den
Speichereinheiten und den Verarbeitungseinheiten r Schieberegister vorgesehen sind, von denen jedes
den Stufen gleicher Stellenordnung in den Koppelregistern zugeordnet ist, und daß eine Verschiebesteuereinheit
vorgesehen ist, die nach Übernahme mehrerer Wörter von den Speicher- oder den Verarbeitungseinheiten
in die Schieberegister diese parallel zur Ausführung einer vorbestimmten Anzahl Stellenverschiebungen
steuert.
Durch aufeinanderfolgende Entnahme-Verschiebe- und Wiedereinschreibzyklen können so die verteilt
gespeicherten Datenwörter um so viele Speichereinheiten versetzt werden, bis die gewünschte kolonnenförmige
Datenwortformation erreicht ist. Da die Entnahmen, Verschiebeoperationen und das Wiedereinschreiben
für alle Speichereinheiten parallel erfolgt, ist nur ein geringer Zeitaufwand zur Ausführung der
Umsetzungsoperation notwendig.
Verschiedene vorteilhafte Ausgestaltungen der Erfindung sind aus den Ansprüchen zu ersehen. Nachfolgend
ist ein Ausführüngsbeispiel der Erfindung an Hand einer Zeichnung dargestellt. Die Zeichnung
zeigt ein vereinfachtes Blockschaltbild einer entsprechend den Prinzipien der Erfindung ausgebildeten
Datenverarbeitungsanlage.
Die in der Figur dargestellte Einrichtung umfaßt drei Speichereinheiten Ml, Ml und M3 sowie drei
Verarbeitungseinheiten Pl, Pl und P 3. Die Prinzipien der Erfindung sind jedoch nicht auf diese Zahl
von Speicher- und Verarbeitungseinheiten beschränkt. Vielmehr ergibt sich diese Zahl daraus, daß zum
Zwecke der einfachen Erläuterung eine 3 χ 3-Matrix gewählt wurde, um die Umsetzung einer Reihe von
Worten, die in drei Speichereinheiten gespeichert sind, in eine Kolonne, die in einer einzelnen Speichereinheit
gespeichert ist, zu demonstrieren. Jedes Wort in den Speichereinheiten ist 8 Bit lang, so daß acht
Schieberegister zur Ausführung der Umsetzungsoperation benötigt werden. Jede Speichereinheit Ml,
Ml und M3 ist mit einem Datenregister DR1, DRl
und DR 3 verbunden. Die erste signifikante Bitstelle des Registers DPvI ist mit einer Stufe Tl eines ersten
Schieberegisters SR1 verbunden. Die erste signifikante
Bitstelle des Registers DRl ist mit der Stufe Tl des Schieberegisters SR1 verbunden, und die erste signifikante
Bitstelle des Registers DP 3 ist mit der Stufe Γ3
des Schieberegisters SPv 1 verbunden. In ähnlicher
Weise sind alle entsprechenden zweiten signifikanten Bitstellen der Datenregister DR1, DR1 und DPv 3
mit den entsprechenden Stufen Tl, Tl und T3
eines Schieberegisters 5Pv 2 verbunden usw., bis zu
einem achten Schieberegister SR 8, dessen Stufen jeweils mit den achten signifikanten Bitstellen der
Datenregister DR1, DRl und DR3 verbunden sind.
Die drei Verarbeitungseinheiten Pl, P 2 und P 3 sind konventionelle Datenverarbeitungseinheiten, die
zur Ausführung von Multiplikationen, Divisionen, Additionen und Subtraktionen sowie verschiedener
anderer Operationen in der Lage sind. Jede der Verarbeitungseinheiten Pl, P2 und P3 besitzt ein Datenregister
PDR1, PDRl und PDR3, und jedes dieser
Datenregister ist ebenso wie die Datenregister DR1,
Di? 2 usw. in der Lage, Gruppen von 8 Datenbits zu speichern. Jedes der Datenregister PDR1, PDRl und
PDR 3 ist mit den Schieberegistern SR1 bis SR 8 in
der gleichen Weise verbunden, wie es zuvor für die Datenregister DRl, DRl, DR3 der Speichereinheiten
Ml, M2 und M3 beschrieben worden ist. Jede der
Verarbeitungseinheiten Pl bis P 3 besitzt zwei Indexregister X und Y, wobei die Indexregister X1, Y1 die
Indexregister der Verarbeitungseinheit Pl, die Indexregister X2 und Y2 die Indexregister der Verarbeitseinheit
P 2 und die Indexregister X3 und Y3 die
Indexregister der Verarbeitungseinheit P 3 sind. Eine Schiebesteuereinheit SCU liefert gleichzeitig Schiebeimpulse
zu allen Schieberegister SR als Reaktion auf . ein Steuersignal auf der Schiebeleitung SL. Mit der
Schiebesteuereinheit SCU ist ein Zähler m verbunden, der zur Schiebesteuereinheit SCU Signale liefert, die
bestimmen, um wie viele Positionen der Inhalt eines jeden der Schieberegister Si? 1 bis Si? 8 nach links
verschoben werden soll.
Jede der Speichereinheiten Ml, M2 und M3 ist
mit Datenworten geladen, deren Adressen als r + 0, r + 1 ... r + 8, p+0, p + 1 ... p+1 bezeichnet
sind, worin r und ρ eine willkürlich gewählte Basis- oder Startadresse für die Datenworte in den Speichereinheiten
sind.
Bevor nun erläutert wird, wie die Schieberegister SR zur Ausführung einer Matrixumsetzung verwendet
werden, soll zur Erleichterung des Verständnisses der Erfindung die Art und Weise erläutert werden, in
welcher das Produkt einer Matrix A und einer Matrix B gebildet wird. Entsprechend der Regel für
die Matrizenmultiplikation gilt:
45
Es soll angenommen werden, daß die Matrix A aus 3x3 Worten und die Matrix B ebenfalls aus
3x3 Worten besteht. Die Matrix C stellt das Resultat
der Multiplikation dar. Der Index »i« ist den Zeilen der Worte und der Index »j« ist den Spalten
zugeordnet.
Matrix A
j=ij=2j=:
Matrix B
Matrix C
an | «12 | «13 |
«21 | «22 | «23 |
«31 | «32 | «33 |
C1I | C12 | C13 |
C21 | C22 | C23 |
C3. | C32 | C33 |
55
60
Wenn die Matrix C gebildet wird, ergeben sich neun Produkte C11 bis C33:
C13 — «1A3 + «12^23 + «13^33
C21 = a2lbu + a22b21 + a23b31
C22 = a21bl2 + a22b22 + a23b32
C23 = a21b13 + a22b23 + a23b33
C31 = a31Z?n + a32b21 + a33b3i
C32 = O3A2 + «32^22 + «33^32
C33 = α31ί>13 + a32b23 + α33ί>33
Wie aus der Figur ersichtlich ist, sind die Worte bn,
b\2 ■ ■ ■ b33 der Matrix B in den drei Speichereinheiten
Ml, M2 und M3 auf den Adressen r + O, r + 1,
;· + 2 ... r + 8 gespeichert, worin r eine willkürlich gewählte Basisadresse ist. Die Datenworte der
Matrix A sind in den Speichereinheiten Ml, M2 und M3 auf den Adressen p + 0, p + l,p + 2...p + 8
gespeichert, worin ρ eine willkürlich gewählte Basisadresse ist. Da ein Produkt, wie beispielsweise C11,
gleich O1Ai + «12^21 + «13^31 ist>
ist es zur Ausnutzung
der Möglichkeiten der Vielfachverarbeitung erwünscht, daß die erste Verarbeitungseinheit P1
alle ihre Informationen oder Daten von der ersten Speichereinheit Ml, die zweite Verarbeitungseinheit
P 2 alle ihre Daten von der zweiten Speichereinheit M 2 und in gleicher Weise die dritte Verarbeitungseinheit
alle ihre Daten von der Speichereinheit M 3 empfängt, so daß alle Verarbeitungseinheiten Pl, P2 und P3
die Daten gleichzeitig verarbeiten können, um ein Produkt, wie beispielsweise C11, C12, C12... C33 zu
bilden. Es ist ersichtlich, daß ohne Umsetzung der Matrix A das Produkt C11 nicht durch Vielfachverarbeitung
gebildet werden kann, da die Worte in den Positionen p + 0, p + 1 ...p + 8 auf die Speichereinheiten
nicht so verteilt sind, daß die Worte an und bu in der ersten Speichereinheit, a12 und b21 in
der zweiten Speichereinheit sowie a13 und i>31 in der
dritten Speichereinheit gespeichert sind. Die in der Matrix A enthaltene und in den verschiedenen Speichereinheiten
gespeicherte Information muß daher umgesetzt werden, um die obengenannte Vielfachverarbeitung
zu gestatten. Zur Ausführung der Umsetzung von Matrix A wird der folgende Algorithmus
verwendet:
1. Zähler m wird auf O gestellt (m = O).
2. Ein nicht dargestellter Programmzähler k wird
auf η gestellt (k = η); η = Rang der Matrix.
3. Die Indexregister Ywerden wie folgt eingestellt:
Y1 =0, Y2= (n + 1), Y3 =2 (n + 1).
4. Die Indexregister X werden wie folgt eingestellt: Z1=O, X2= (n + 1), X3 = 2 (n + 1).
5. Lesen von <p + X1) mod n2;
<p + x2)modn2;
<p + X3) mod η2.
6. Verschieben um m-Stellen nach links.
Schreiben von <q + ^1) mod η2; (q + y2) mod η2; <.q + y3y mod η2.
Schreiben von <q + ^1) mod η2; (q + y2) mod η2; <.q + y3y mod η2.
Inkrementieren von m um 1.
Inkrementieren von Y um n.
Dekrementieren von X um n.
Dekrementieren von k um 1. ^
Inkrementieren von Y um n.
Dekrementieren von X um n.
Dekrementieren von k um 1. ^
Zurückkehren zu Schritt 5, wenn k> 0 und wiederholen.
Cn = «iAi
C12 = anbl2
C12 = anbl2
«12^21
al2b22
al2b22
ai3b
i3b32
In diesem Algorithmus ist k ein Programmzähler, der in den Verarbeitungseinheiten P1, P2, P3 enthalten,
in der Figur jedoch nicht dargestellt ist. Es handelt sich dabei um einen Zähler, der in konven-
tioneller Weise die Programmschritte zählt und eine Anzeige über den Stand der Verarbeitung liefert.
Der Ausdruck mod n2 stellt eine Abkürzung für »modulo 9« dar, indem der Rang η der Matrix im
gewählten Beispiel 3 ist. In einer Folge der Ziffern 0, 1, 2, 3,4, 5, 6,7,8, wie sie in dem Ausdruck »modulo 9«
enthalten ist, sind die Ziffern —9,9,18 äquivalent zu 0;
-8,10,19 äquivalent zu 1; -7,11, 20 äquivalent zu 2
usw.
Um eine Matrixumsetzung zu bewirken, wird der Zähler m auf 0 gestellt, während der nicht dargestellte
Zähler k auf den Wert 3 eingestellt wird, da der Rang η der Matrix 3 ist. Des weiteren werden die
Indexregister Y1 und X1 der Verarbeitungseinheit P1
auf 0 gestellt, die Indexregister Y2 und X2 der Verarbeitungseinheit
Pl auf (n + 1), d.h. 4, und die Indexregister Y3 und X3 der Verarbeitungseinheit P 3
jeweils auf den Wert 2 (n +1), d. h. 8, eingestellt.
Der Schritt 5 des Algorithmus besteht in einem gleichzeitigen Lesen der Worte, die auf den Adressen
<p + X1) mod 9, <p + X2) mod 9 und
<p + X3) mod 9 gespeichert sind, und in einer Eingabe dieser Worte in
die entsprechenden Schieberegister SRI, SR2 ... SR8.
Da X1 = 0, X2 = 4 und X3 = 8, lauten die betreffenden
Adressen: ρ + 0, ρ + 4 und ρ + 8. Die auf diesen Adressen gespeicherten Daten sind die Werte an,
a22 und a23 der Matrix A. Der Schritt 6 verlangt, daß
der Inhalt der Schieberegister SR um w-Stellen nach
links verschoben wird. Da jedoch m = 0, findet keine Verschiebung statt.
Im Schritt 7 wird der Inhalt der Schieberegister SR über die Datenregister DR1, DRl und DR3 zurück
in die Speichereinheiten geschrieben, und zwar auf die Adressen (q + F1) mod n2, (q + Y2) mod n2 und
<<Z +T3) mod n\ Da Y1=O, Y2 = 4 und Y3 = 8,
haben die Werte an, a22 und a23 die neuen Adressen
q+0, q+4 und q + 8, worin q eine von ρ abweichende willkürlich gewählte Basisadresse in den Speichereinheiten
Ml, Ml und M3 ist.
In den folgenden Schritten 8 bis 12 des Algorithmus wird m auf 1 gesetzt, Y wird um 3 erhöht, X um 3 verringert,
und k wird .um 1 verringert, so daß sein
neuer Inhalt 2 ist. Da k> 0 ist, werden die Speichereinheiten Ml, Ml und M3 gelesen entsprechend
dem Schritt 5 des Algorithmus. In Schritt 5 werden daher die neu eingestellten Zustände
<p — 3) mod 9, <p + 1) mod 9 und <p + 5>
mod 9 gelesen. Da <p — 3) mod 9 = <p + .6>, wird der Inhalt der Adressen
<p + 6), ζρ +1) und
<p + 5) in die Schieberegister SR eingegeben. Es handelt sich dabei um die Worte a31,
a12 und a23. Da m = 1, bewirkt die Schiebesteuereinheit
SCU eine Verschiebung des Inhalts aller Schieberegister um eine Stelle nach links. Die neuen
Adressen der verschobenen Worte sind (q + 3) mod 9,
<<2 + 7>mod9 und (q +11) mod 9, wobei die
letztere = (q + 2) ist. Die neuen Adressen für die
Worte a12, a23 und a31 sind daher (q + 3), (q + 7)
und {q + 2).
Nach dem zweiten Schreibschritt ergeben sich folgende Zustände: m = 2, Y wurde um 3 erhöht und
enthält nun den Wert + 6, X wurde um 3 verringert und enthält nun den Wert — 6 und k = 1. Da k>
0 ist, erfolgt eine Rückkehr zu Schritt 5 des Algorithmus, wo die auf den Adressen
<p — 6) mod 9, <p — 2) mod 9
und <p + 2) mod 9 gespeicherten Worte in die Schieberegister SRI, SR 2... SR 8 eingelesen werden. Da
<p-6>mod9 = <p + 3> und <p-2>
mod9 = <p+7>, werden entsprechend den Adressen ρ + 3, ρ + 7 und
ρ+ 2 die Worte U21, a32 und a13 gelesen und in die
Schieberegister gebracht sowie um zwei Stellen nach links verschoben.
In Übereinstimmung mit Schritt 7 haben die um zwei Stellen verschobenen Worte die folgenden neuen
Adressen: ^q1 + 6) mod 9, <^ +10) mod 9 ξξ {q +1
> und <<h +14) mod 9 = ^q1 + 5). Die neuen Adressen
für a13, a21 und a32 sind dementsprechend q + 6, q + 1
und q + 5. Da der Schritt 11 des Algorithmus für k den Wert 0 ergibt, ist die Umsetzung der Matrix A
beendet. Durch einen Vergleich der p-Adressen mit den ^-Adressen ist ersichtlich, daß jede Wortzeile,
deren Werte zuvor über die drei Speichereinheiten M1,
Ml und M 3 verteilt gespeichert waren, nun in eine Kolonne umgesetzt worden ist, die in einer einzelnen
Speichereinheit enthalten ist.
Die Umsetzung einer Matrix des Ranges 3 erfolgt somit in der aus der nachstehenden Darstellung
ersichtlichen Weise:
p+0
q + 0
p+4
q + 4
p + 8
m=0
q + 3 q + 1 q + 2
Lesen von
Verschieben
Schreiben nach
Verschieben
Schreiben nach
Lesen von
Stellenverschiebung (1)
Schreiben nach
Lesen von
Lesen von
Stellenverschiebung (2)
Schreiben nach q + 6 q + l q + 5
Zur Ausführung der parallelen Multiplikation mit den nach beendeter Umsetzung nun in der neuen
Ordnung gespeicherten Worten kann ein herkömmlicher Algorithmus Verwendung finden. Zum Beispiel
kann die parallele Multiplikation in folgenden Schritten durch paralleles Multiplizieren der in einer jeden
der Speichereinheiten Ml, Ml und M3 gespeicherten
Werte mit anschließender Akkumulation der Resultate ausgeführt werden:
Schritt I
r+0 X q + 0 |
r+4 X q + 4 |
r + 8 X «Ϊ + 8 |
r + 3
X q + 3 |
r + 1
X |
r + 2 X q + 2 |
r + 6
X q + 6 |
r + 1 X .«■+1 |
■ r + 5
X q + 5 |
s+0 s+4 s+8. worin m = 0, X = 0 und Y = 0, 3 und 6
Da das Matrizenprodukt C11 = anbn + a12b2l
+ a13b31, ist ersichtlich, daß alle Werte des Produktes
C11 in der Speichereinheit Ml gespeichert sind
und auch das Resultat in der Speichereinheit M1
gespeichert wird, z. B. auf der Adresse s + 0, wobei s eine willkürlich gewählte Basisadresse ist. Ebenso
enthält die Speichereinheit Ml alle Werte für das Matrizenprodukt C22, und das Produkt selbst ist in
der gleichen Speichereinheit auf der Adresse s + 4 gespeichert. In der gleichen Weise sind alle Werte
für das Produkt C33 in der Speichereinheit M 3 enthalten,
und das Produkt selbst ist auf der Adresse s + 8 gespeichert. Um die Produkte C21, C32 und C13 zu
bilden, muß der Inhalt der umgesetzten Matrix A' um eine Position nach links verschoben werden, so
daß die Spalten der Wörter gleichzeitig für die Verarbeitungseinheiten Pl, Pl und P3 verfügbar sind.
Die erforderlichen Verschiebungen sind aus der nachstehenden Darstellung ersichtlich:
20
s + 3 s+7 s+ 2 worin m = l, X = 3, Y = 0,3, 6
35
40
45
Durch diese einzelnen Verschiebungen der umgesetzten Matrix A' werden die Produkte C21, C32
und c13 gebildet, indem alle Werte für C21 sich in der
Speichereinheit Ml, alle Werte für C32 der Speichereinheit
Ml und alle Werte für C13 in der Speichereinheit
M 3 enthalten sind.
Wenn m = 2, X = 6 und Y = 0, 3 und 6, werden durch Verschiebung der umgesetzten Matrix Λ' um
zwei Speichereinheiten nach links alle zur Bildung des Produktes C31 benötigten Werte in die Speichereinheit
Ml, alle zur Bildung des Produktes C12 benötigten Werte in die Speichereinheit M1 und alle
zur Bildung des Produktes C23 benötigten Werte in die Speichereinheit M 3 gebracht, so daß die Verarbeitungseinheiten
Pl, Pl und P3 parallel Multiplikationen und Additionen mit den Werten aus den.
Speichereinheiten Ml, M2 und M3 zur Bildung der
Produkte C31, C12 und C23 ausführen können. Die
Resultatmatrix C wird auf den Adressen s + 0, s + 1 ...s+ 8 der Speichereinheiten M1, Ml und M 3
gespeichert. Wie bereits erwähnt, wurde die relativ kleine 3 χ 3-Matrix gewählt, um die Beschreibung
des erfindungsgemäßen Ausführungsbeispiels zu vereinfachen. Es ist offensichtlich, daß durch einfache
Änderung der Programmschritte der Rang der zu verarbeitenden Matrizen und die Zahl der Speicherund Verarbeitungseinheiten erheblich erhöht werden
kann. Die Verbindung der Datenregister DR mit den Schieberegistern Si? ist in diesen Fällen die
gleiche, wie sie oben beschrieben wurde. Alle gleichstelligen Bits der Datenregister sind mit einem
Schieberegister verbunden, ein separates Schieberegister wird für jede Bitstelle eines Speicherwortes
verwendet, und jedes Schieberegister hat so viele Stellen, wie Speichereinheiten vorhanden sind. Die
erfindungsgemäße Anordnung kann sowohl zur Umsetzung von Wortkolonnen, die über separate Speichereinheiten verteilt gespeichert sind, in eine einzelne
Wortreihe in einer Speichereinheit als auch zur Umsetzung von Wortreihen, die in separaten Speichereinheiten
enthalten sind, in eine einzelne Wortkolonne in einer Speichereinheit verwendet werden.
Die Erfindung ist besonders dort anwendbar, wo große Matrizen zu multiplizieren sind, da die Geschwindigkeit
derartiger Multiplikationen durch Anwendung der Prinzipien vorliegender Erfindung stark
erhöht wird. Allgemein gesprochen ist die Geschwindigkeit der Verarbeitung einer Matrix vom Range η
durch konventionelle Speicherzugriffe in der Größenordnung von n3 + n2, während die Erfindung
eine Geschwindigkeit in der Größenordnung von 2n2 + 2n + Ktsr ermöglicht, worin tsr die Schaltzeit
des Schieberegisters und K eine Konstante sind. Für große Werte von η ist die Zeiteinsparung beträchtlich.
In der erfindungsgemäßen Anordnung können gewöhnliche Speichereinheiten mit wahlfreiem Zugriff
verwendet werden, ohne daß eine Änderung ihres Schaltungsaufbaues zur Erreichung der höheren Multiplikationsgeschwindigkeit
nötig wäre. Die höhere Geschwindigkeit geht auf Kosten der Schieberegister, deren Aufwand im Vergleich zu den bekannten Anordnungen zur Matrizenumsetzung vernachlässigbar
klein ist. *
Der Typ der verwendeten Speichereinheiten Ml, Ml, M3, der Schieberegister SR, der Datenregister
DR sowie der Verarbeitungseinheiten Pl, Pl und P3 ist für die Ausübung vorliegender Erfindung
unwesentlich. Die verschiedenen logischen Schaltungen, Lese-Schreibschaltungen und Zähler des dargestellten
Ausführungsbeispiels sind bekannter Art, wie sie beispielsweise im USA.-Patent 3 258 584 oder
3 106 698 dargestellt sind.
Claims (10)
- Patentansprüche: ■ ,■ 1. Datenverarbeitungsanlage zur Ausführung von Matrizenrechnungen mit mehreren Verarbeitungseinheiten und an diese angeschlossenen Spei- ·· chereinheiten sowie mit Koppelregistern, über die die Verarbeitungseinheiten von den zugeordneten Speichereinheiten Datenwörter empfangen und worin aus je r-Bits bestehende Datenwörter in mehrere Speichereinheiten verteilt gespeichert und Mittel vorgesehen sind zur Umsetzung dieser Datenwörter in eine bestimmte Speichereinheit, von der aus die Verarbeitung in der zugeordneten Verarbeitungseinheit erfolgt, dadurch gekennzeichnet, daß zwischen den Speichereinheiten (Ml, Ml, M3) und den Verarbeitungseinheiten (Pl, Pl, P3) r Schieberegister (SJR) vorgesehen sind, von denen jedes den Stufen gleicher009537/298Stellenordnung in den Koppelregistern (DRl, DR 2, DR3) zugeordnet ist, und daß eine Verschiebesteuereinheit (SCU) vorgesehen ist, die nach Übernahme mehrerer Wörter von den Speicher- oder Verarbeitungseinheiten in die Schieberegister diese parallel zur Ausführung einer vorbestimmten Anzahl Stellen verschiebungen steuert.
- 2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet, daß jede Speichereinheit (Ml, Ml, MS) ein r-stufiges Koppelregister (DR) aufweist, das jede Stufe dieses Registers mit einem bestimmten der Schieberegister (SR) verbunden ist, daß die Stufen jedes Schieberegisters den Stufen gleicher Stellenordnung in den Datenregistern der verschiedenen Speichereinheiten zugeordnet sind und daß die Reihenfolge dieser Zuordnung einer Gruppenordnung entspricht, in der zusammengehörige Datenwörter in den Speichereinheiten verteilt gespeichert sind.
- 3. Datenverarbeitungsanlage nach Anspruch 1 20: und 2, dadurch gekennzeichnet, daß jede Verarbeitungseinheit (Pl, P 2, P 3) ein r-stufiges Datenregister (PDR) aufweist, daß jede Stufe dieses Registers mit einem bestimmten der Schieberegister (SR) verbunden ist und daß die Stufen jedes Schieberegisters den Stufen gleicher Stellenordnung in den Datenregistern der verschiedenen Verarbeitungseinheiten zugeordnet ist.
- 4. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Datenregister (DR und PDR) und die Schieberegister (SK) eine gleichzeitige Aufnahme bzw. Abgabe aller Bits eines Datenwortes gestatten.
- 5. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Schieberegister (SR) eine Schiebetaktzeit aufweisen, die klein ist im Verhältnis zur Dauer eines Speicherzyklus der einen wahlfreien Zugriff gestattenden Speichereinheiten (Ml, Ml, M3).
- 6. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die Schieberegister (SR) mit einer Ausgangs-Eingangs-Rückkopplung versehen sind.
- 7. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Verschiebe-Steuereinheit (SCU) einen Zähler (m) aufweist, dessen Zählstand die Stellenverschiebungen bestimmt und mit jedem Speicheroder Verarbeitungszyklus um einen konstanten Wert verändert wird.
- 8. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die über mehrere Speichereinheiten verteilt gespeicherten Datenworte Datengruppen angehören, die die Zeilen einer Datenmatrix darstellen, und daß zur Umsetzung dieser Zeilen in Datenwortkolonnen, von denen jede in einer individuellen Speichereinheit (Ml, Ml, M3) enthalten sein soll, in aufeinanderfolgenden Entnahme-Verschiebe- und Wiedereinschreibzyklen zuerst die um eine Speichereinheit, danach die um zwei Speichereinheiten usw. zu versetzenden Datenwörter parallel aus den betreffenden Speichereinheiten ausgelesen und in die Schieberegister übertragen werden und nach jeder dieser Übertragungen unter Steuerung des bis zum Range der Matrix fortschaltbaren Zählers (m) jeweils die betreffende Verschiebung und anschließend eine Rückspeicherung der verschobenen Datenwörter in Kolonnenform in die Speichereinheiten erfolgt.
- 9. Datenverarbeitungsanlage nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die über mehrere Speichereinheiten verteilt gespeicherten Datenwörter den Zeilen von zwei miteinander zu multiplizierenden Datenmatrizen (A, B) angehören, daß zur gleichzeitigen Bildung der Datenwörter der Resultatmatrix (C) durch die Verarbeitungseinheiten jede Zeile der einen Matrix (^4) in eine dieser Zeile zugeordnete Speichereinheit in Spaltenform durch aufeinanderfolgende Entnahme-Verschiebe- und Wiedereinschreibzyklen umgesetzt wird und daß die Zahl der nach jeder Entnahme in den Schieberegistern (SR) auszuführenden Verschiebungen durch den bis zum Range der Matrix fortschaltbaren Zähler (m) gesteuert wird.
- 10. Datenverarbeitungsanlage nach Anspruch 8 oder 9, dadurch gekennzeichnet, daß jede der Verarbeitungseinheiten zwei Indexregister (X, Y) aufweist, von denen das eine den Adressen der aus der zugeordneten Speichereinheit zu entnehmenden Matrixzeilen-Datenwörter und das andere den Adressen der in Spaltenform wieder einzuschreibenden Matrixzeilen-Datenwörter zugeordnet ist, daß am Beginn der Umsetzung die Indexregister (X 1,Yl) der ersten Verarbeitungseinheit (Pl) auf 0, die Indexregister (X 1, Y 2) der zweiten Verarbeitungseinheit (P 2) auf π + 1, die der dritten Verarbeitungseinheit (P3) auf 2(n + 1) usw. eingestellt werden, wobei η der Rang der Matrix ist, und daß nach jedem Entnahme-Verschiebe- und Wiedereinschreibzyklus die dem Wiedereinschreiben zugeordneten Indexregister (Y) in ihrem Inhalt um η erhöht und die der Entnahme zugeordneten Indexregister (X) in ihrem Inhalt um η verringert werden.Hierzu 1 Blatt Zeichnungen
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US69776768A | 1968-01-15 | 1968-01-15 |
Publications (3)
Publication Number | Publication Date |
---|---|
DE1901343A1 DE1901343A1 (de) | 1969-08-14 |
DE1901343B2 true DE1901343B2 (de) | 1970-09-10 |
DE1901343C3 DE1901343C3 (de) | 1974-02-07 |
Family
ID=24802454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1901343A Expired DE1901343C3 (de) | 1968-01-15 | 1969-01-11 | Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen |
Country Status (5)
Country | Link |
---|---|
US (1) | US3535694A (de) |
DE (1) | DE1901343C3 (de) |
FR (1) | FR1601993A (de) |
GB (1) | GB1209999A (de) |
NL (1) | NL6900001A (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2718849A1 (de) * | 1976-05-03 | 1977-11-10 | Burroughs Corp | Rechenspeicher mit mehrdimensionalem, parallelem zugriff |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3633173A (en) * | 1970-03-16 | 1972-01-04 | Hughes Aircraft Co | Digital scan converter |
US3794984A (en) * | 1971-10-14 | 1974-02-26 | Raytheon Co | Array processor for digital computers |
US3763365A (en) * | 1972-01-21 | 1973-10-02 | Evans & Sutherland Computer Co | Computer graphics matrix multiplier |
US3760368A (en) * | 1972-04-21 | 1973-09-18 | Ibm | Vector information shifting array |
CA986625A (en) * | 1972-07-12 | 1976-03-30 | Kenneth E. Batcher | Solid state associative processor organization |
US3936806A (en) * | 1972-07-12 | 1976-02-03 | Goodyear Aerospace Corporation | Solid state associative processor organization |
JPS512302A (en) * | 1974-06-24 | 1976-01-09 | Fujitsu Ltd | Johotensohoshiki |
US4136383A (en) * | 1974-10-01 | 1979-01-23 | Nippon Telegraph And Telephone Public Corporation | Microprogrammed, multipurpose processor having controllable execution speed |
GB1513586A (en) * | 1975-11-21 | 1978-06-07 | Ferranti Ltd | Data processing |
US4179747A (en) * | 1976-12-14 | 1979-12-18 | Pitney-Bowes, Inc. | Mailing system |
US4122534A (en) * | 1977-06-17 | 1978-10-24 | Northern Telecom Limited | Parallel bidirectional shifter |
US4223391A (en) * | 1977-10-31 | 1980-09-16 | Burroughs Corporation | Parallel access alignment network with barrel switch implementation for d-ordered vector elements |
US4291374A (en) * | 1978-07-24 | 1981-09-22 | Pitney Bowes Inc. | Mailing system |
US4302818A (en) * | 1979-07-10 | 1981-11-24 | Texas Instruments Incorporated | Micro-vector processor |
US4293920A (en) * | 1979-09-04 | 1981-10-06 | Merola Pasquale A | Two-dimensional transform processor |
US4288858A (en) * | 1979-10-01 | 1981-09-08 | General Electric Company | Inverse two-dimensional transform processor |
US4506345A (en) * | 1982-07-02 | 1985-03-19 | Honeywell Information Systems Inc. | Data alignment circuit |
DE3434046A1 (de) * | 1984-09-17 | 1986-03-27 | Siemens AG, 1000 Berlin und 8000 München | Parallelrechner |
US4672613A (en) * | 1985-11-01 | 1987-06-09 | Cipher Data Products, Inc. | System for transferring digital data between a host device and a recording medium |
EP0321493A4 (en) * | 1986-08-22 | 1991-11-21 | Commonwealth Scientific And Industrial Research Organisation | A content-addressable memory system |
FR2617621B1 (fr) * | 1987-07-03 | 1989-12-01 | Thomson Semiconducteurs | Memoire de transposition pour circuit de traitement de donnees |
US5673321A (en) * | 1995-06-29 | 1997-09-30 | Hewlett-Packard Company | Efficient selection and mixing of multiple sub-word items packed into two or more computer words |
GB2338094B (en) * | 1998-05-27 | 2003-05-28 | Advanced Risc Mach Ltd | Vector register addressing |
US6282634B1 (en) | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
EP1546863B1 (de) * | 2002-09-24 | 2010-01-20 | Interdigital Technology Corporation | Rechnerisch effiziente mathematische maschine |
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US8341362B2 (en) * | 2008-04-02 | 2012-12-25 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3243786A (en) * | 1960-12-16 | 1966-03-29 | Thompson Ramo Wooldridge Inc | Associative memory cell selecting means |
US3277449A (en) * | 1961-12-12 | 1966-10-04 | Shooman William | Orthogonal computer |
US3411139A (en) * | 1965-11-26 | 1968-11-12 | Burroughs Corp | Modular multi-computing data processing system |
-
1968
- 1968-01-15 US US697767A patent/US3535694A/en not_active Expired - Lifetime
- 1968-12-16 FR FR1601993D patent/FR1601993A/fr not_active Expired
- 1968-12-17 GB GB59925/68A patent/GB1209999A/en not_active Expired
-
1969
- 1969-01-02 NL NL6900001A patent/NL6900001A/xx unknown
- 1969-01-11 DE DE1901343A patent/DE1901343C3/de not_active Expired
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2718849A1 (de) * | 1976-05-03 | 1977-11-10 | Burroughs Corp | Rechenspeicher mit mehrdimensionalem, parallelem zugriff |
Also Published As
Publication number | Publication date |
---|---|
GB1209999A (en) | 1970-10-28 |
DE1901343A1 (de) | 1969-08-14 |
DE1901343C3 (de) | 1974-02-07 |
NL6900001A (de) | 1969-07-17 |
US3535694A (en) | 1970-10-20 |
FR1601993A (de) | 1970-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE1901343C3 (de) | Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen | |
DE2008663C3 (de) | Datenspeicher- und Datenspeicheransteuerschaltung | |
DE2145120A1 (de) | Digitales Datenverarbeitungsgerat | |
DE3132225C2 (de) | Einrichtung für die Adressierung gespeicherter Ergebniswerte bei einer schnellen Hadamard-Transformation | |
DE2055784A1 (de) | Datenverarbeitungssystem | |
DE2819571A1 (de) | Datenverarbeitungsanlage mit mehreren prozessoren | |
DE1956604B2 (de) | Datenverarbeitungsanlage | |
DE2432559B2 (de) | ||
DE2331589A1 (de) | Datenverarbeitungsanordnung | |
DE4019135A1 (de) | Serieller speicher auf ram-basis mit parallelem voraus-lesen | |
DE2230103A1 (de) | Adressiereinrichtung fuer einen speicher | |
DE3928902A1 (de) | Halbleiterspeicher und verfahren zum betreiben desselben | |
DE3327379A1 (de) | Einrichtung und verfahren zum umordnen von datensaetzen | |
DE2364254B2 (de) | Schaltungsanordnung fuer datenverarbeitende geraete | |
DE2854782C2 (de) | Datenverarbeitungssystem und Verfahren zum Ersetzen eines Datenblocks in einem Schnellspeicher | |
DE2310631B2 (de) | Speicherhierarchie fur ein Datenverarbeitungssystem | |
DE1449544A1 (de) | Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk | |
DE2146982A1 (de) | Programmierbare digitale Filtereinrichtung | |
DE2221442A1 (de) | Assoziativspeicher | |
DE2054941C2 (de) | Anordnung zur Auswahl von Datensätzen | |
DE3501903A1 (de) | Im pipelinebetrieb arbeitende datenverarbeitungseinrichtung | |
DE2121490A1 (de) | Orthogonaler Datenspeicher | |
DE2459476C3 (de) | ||
DE69333792T2 (de) | Halbleiteranordnung | |
DE2459476A1 (de) | Schaltungsanordnung fuer nichtzyklische datenpermutationen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C3 | Grant after two publication steps (3rd publication) | ||
E77 | Valid patent as to the heymanns-index 1977 | ||
8339 | Ceased/non-payment of the annual fee |