DE4217011C2 - Matrix-Multiplizierschaltung und Verfahren zum Multiplizieren von Matrizen unter Verwendung einer solchen Schaltung - Google Patents
Matrix-Multiplizierschaltung und Verfahren zum Multiplizieren von Matrizen unter Verwendung einer solchen SchaltungInfo
- Publication number
- DE4217011C2 DE4217011C2 DE4217011A DE4217011A DE4217011C2 DE 4217011 C2 DE4217011 C2 DE 4217011C2 DE 4217011 A DE4217011 A DE 4217011A DE 4217011 A DE4217011 A DE 4217011A DE 4217011 C2 DE4217011 C2 DE 4217011C2
- Authority
- DE
- Germany
- Prior art keywords
- elements
- matrix
- sequence
- register
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
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
-
- 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/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Discrete Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Description
Die vorliegende Erfindung betrifft eine
Matrixmultiplizierschaltung mit einer ersten Stufe zum
Multiplizieren einer ersten Matrix X mit den Elementen
xÿ, i = 1 . . . I, j = 1 . . . J mit einer zweiten Matrix C t mit den
Elementen ct jk, k = 1 . . . K, wobei die erste Stufe eine erste
Vielzahl von Pipeline-Schaltungen aufweist, die parallel
arbeiten und nacheinander die Elemente
einer Zwischenmatrix (Y = X C t) jeweils für einen
speziellen Wert von k abgeben. Die Erfindung betrifft ferner ein Verfahren
zum Multiplizieren von drei Matrizen unter Verwendung einer solchen Matrixmultiplizierschaltung.
Die diskrete Cosinus-Transformation (DCT) in zwei Dimensionen
ist wichtig zur Kompression von Videosignalen zur
Speicherung und zur Übertragung zu einem entfernten Ort.
Eine zweidimensionale diskrete Cosinus-Transformation aus
einer N×N-Eingangsdatenmatrix kann wie folgt definiert
werden:
Deren Inversion kann in entsprechender Weise definiert
werden als:
wobei
ist.
X (n₁n₂) ist die Eingangsdatenmatrix und Z (k₁,k₂) ist
die Matrix der Transformationskoeffizienten.
Die Gleichung (1a) kann in Matrixform als
Z = CXC t (2)
geschrieben werden, wobei Z die Cosinuskoeffizientenmatrix
und C t der transponierte Wert von C bedeuten.
In einer detaillierteren Weise kann Gleichung (2)
folgendermaßen geschrieben werden:
wobei
Es gibt somit drei N×N-Matrizen, die miteinander
multipliziert werden. Eine Matrix kann somit als Y = XC t
oder
die Matrix Z kann wie folgt geschrieben werden:
In einem 2×2-Beispiel reduziert sich die Gleichung (4)
zu
und die Gleichung (5) reduziert sich zu
In der US-Patentschrift 4 841 469 wird eine
Matrixmultiplizierschaltung offenbart, mit der zwei
Matrizen X und Y zu einer Produktmatrix multipliziert
werden können.
Außerdem sind aus dem Stand der Technik weitere
zahlreiche Vorschläge zum Verwirklichen der DCT
unterbreitet worden (siehe beispielsweise N. Ahmed, T.
Natarajan und K. Rao, Discrete Cosine Transform 1974 IEEE
Trans. on Comp. 90; M. Sung, T. Chen und A. Gottlieb,
VLSI, Implementation of 16×16 Discrete Cosine
Transform, IEEE Trans. on Cir. und Sys., April 1989, 610;
N. Chou und S. Lee, Fast Algorithm and Implementation
of a 2-D Discrete Cosine Transform, IEEE Trans. on Cir.
and Sys., März 1991, 297; H. Hou, A Fast Recursive
Algorithm for Computing the Discrete Cosine Transform,
IEEE Trans. on Cir. and Sys., Oktober 1987, 1455).
Diese weiteren Techniken des Standes der Technik besitzen
jedoch die folgenden Schwächen.
- 1. Wenn eine Zeilen-Spaltenauflösung durchgeführt wird, ist ein transponierter Speicher 2 erforderlich, der eine Lösung mit einem mit umfangreicher Pipeline-Technik verwirklichten Datenfluß (heavily pipe-lined data flow) unmöglich macht.
- 2. Wenn eine direkte Verwirklichung einer zweidimensionalen DCT durchgeführt wird, übersteigen die Kosten der für eine solche Verwirklichung erforderlichen Hardware den entsprechenden Nutzen.
- 3. Den meisten Lösungen fehlt eine Modularisation, so daß sich daher Ausführungsformen ergeben, die sowohl zeitraubend als auch unwirksam sind.
Der Erfindung liegt die Aufgabe zugrunde, eine Matrixmultiplizierschaltung
sowie ein Verfahren der jeweils angegebenen Art
zu schaffen, mit deren Hilfe eine Multiplikation von
drei Matrizen in Echtzeit durchgeführt werden kann.
Diese Aufgabe wird erfindungsgemäß gelöst durch
eine zweite Stufe zum Empfangen der Elemente yik, wenn
diese von der ersten Stufe abgegeben werden, und zum
Multiplizieren dieser Elemente mit einer dritten Matrix C
mit den Elementen cli, l = 1 . . . L, wobei die zweite Stufe
eine zweite Vielzahl von Pipeline-Schaltungen aufweist,
die parallel arbeiten und nacheinander die Produkte cli yik
jeweils für einen speziellen Wert k abgeben, sowie Mittel zum
wahlweisen Zwischenspeichern der Produkte cli yik für
spezielle Werte von l von der jeweils zugehörigen
Pipeline-Schaltung, so daß eine Zwischenspeichereinrichtung
die Elemente
der Produktmatrix Z = C X C t erzeugt.
Die Lösung hinsichtlich des Verfahrens ist im Patentanspruch 15
angegeben.
Die erste Stufe umfaßt eine Vielzahl von Prozeßelement-Pipelines
und eine Register-Pipeline. Jede Prozeßelement-Pipeline
umfaßt beispielsweise eine Reihe von bit-Multiplikations-Prozeßelementen.
Eine erste Sequenz von
Eingangssignalen, die die Matrixelemente xÿ von X in der
Reihenfolge x11, x12 . . . xlJ, x21, x22 . . . xj, . . ., xjj umfaßt,
wird in die Register-Pipeline eingeführt. Darin werden
die Matrixelemente von Register zu Register geshiftet.
Die Register-Pipeline gibt in aufeinanderfolgenden Zyklen
ein m-tes bit eines jeden Matrixelementes in der ersten
Sequenz zum entsprechenden m-ten bit-Multiplikationselement
einer jeden Prozessor-Pipeline ab,
wobei m ein Index von 1 bis zur Zahl der bits in den
Elementen xÿ ist. Als zweite Eingangssequenz empfängt
jede Prozessor-Pipeline separat I Wiederholungen der
Elemente einer speziellen Spalte (d. h. der Spalte k) von
C t, wobei I der Zahl der Zeilen in der X Matrix
entspricht. Mit anderen Worten, jede Verarbeitungsspalte
empfängt die Elemente von einer Spalte von C t, einmal
wiederholt für jede Zeile in der X Matrix. Diese
Matrixelemente werden entlang einer Prozessor-Pipeline
von Verarbeitungselement zu Verarbeitungselement geführt.
Die Matrixelemente werden eingegeben, und zwar ein
Element für jede Sequenz pro Zyklus. Jede Prozeßelement-Pipeline
errechnet nacheinander die Produkte
xÿ cjk für einen speziellen Wert von k. Somit entspricht
die Zahl der Prozeßelement-Pipelins k, und es gibt eine
Prozeßelement-Pipeline für jeden Wert des Index k, d. h.
eine Prozeßelement-Pipeline für jede Spalte von Elementen
in C.
Am Ende einer jeden Prozeßelement-Pipeline der ersten
Stufe befindet sich ein Prozeßelement, das einen
Zwischenspeicher zum Speichern jedes J Produkt-xÿ cjk-Ausganges
vom nächsten bis zum letzten Prozeßelement
innerhalb dieser Pipeline besitzt. Ein derartiges
Speicherschema ergibt die Elemente einer
Zwischenmatrix Y. Auf diese Weise addieren die Zwischen
speicher des letzten Prozeßelementes einer jeden Pipeline
die aus jeder Gruppe von Argumentenpaaren der Elemente einer
Zeile von X und einer Spalte von C t erzeugten Produkte.
Die Matrixmultiplizierschaltung besitzt ferner eine zweite
Stufe zum Multiplizieren einer dritten Matrix C, die die
Elemente cli, l = 1 . . . L umfaßt, mit der Zwischenmatrix Y,
die die Elemente yik umfaßt. Beispielsweise ist C eine
Matrix von Cosinuskoeffizienten. Dies ist jedoch nicht zwin
gend.
Die zweite Stufe umfaßt ferner eine Vielzahl von Prozeßele
ment-Pipelines, die jede eine Reihe von bit-Multiplikations-Prozeßelementen
aufweist, und eine Register-Pipeline. Eine
erste Sequenz, die die Matrixelemente cli von C in der
Reihenfolge c11, c21 . . . cL1, c12, c22 . . . cL2, . . . cLI umfaßt,
wird in die Register-Pipeline eingegeben. Die Register-Pipe
line shiftet die Eingangselemente von Register zu Register.
Die Register-Pipeline gibt in aufeinanderfolgenden Zyklen
ein p-tes bit eines jeden Matrixelementes der Eingangs
sequenz an das p-te bit-Multiplikations-Prozeßelement einer
jeden Prozeß-Pipeline ab, wobei p ein Index von 1 bis zur
Zahl der bits in den Elementen cli ist. Eine zweite Sequenz,
die separat den Prozeßelement-Pipelines zugeführt wird, um
faßt L Wiederholungen eines jeden Elementes yik einer
speziellen Spalte k der Matrix Y, wobei L der Zahl der Zei
len in der Matrix C entspricht. Mit anderen Worten, jede
Prozeßelement-Pipeline der zweiten Stufe empfängt jedes Ele
ment einer Spalte k von Y, einmal wiederholt, für jede Zeile
der C Matrix. Wiederum werden die Elemente so eingegeben,
daß ein Element von jeder Sequenz pro Takt eingegeben wird.
Jede Prozeßelement-Pipeline errechnet nacheinander die Pro
dukte cli yik für einen speziellen Wert von k. Wiederum ent
spricht die Zahl der Prozeßelement-Pipelines K, und es gibt
eine Prozeßelement-Pipeline für jeden Wert des Index k.
Am Ausgang einer jeden Prozeßelement-Pipeline der zweiten
Stufe befindet sich eine Schalteranordnung und ein zweiter
Zwischenspeicher zum wahlweisen Speichern der Produkte cli
yik, so daß der zweite Zwischenspeicher die Elemente der
Produktmatrix Z abgibt. Der zweite Zwischenspeicher
speichert wahlweise die Produkte derart, daß die folgende
Gleichung erfüllt wird:
Die Erfindung wird nachfolgend anhand von Ausführungsbei
spielen in Verbindung mit der Zeichnung im einzelnen erläu
tert. Es zeigt
Fig. 1 eine Matrixmultiplizierschaltung gemäß
der vorliegenden Erfindung;
Fig. 2 eine Modular-Matrixmultiplizierschaltung; die
Fig. 3, 4 und 5 Prozessorelemente für die Multiplizier
schaltung der Fig. 2;
Fig. 6 eine erste und zweite, an eine Zwischen
speichermatrix angeschlossene Schaltan
ordnung zur Verwendung in der Schaltung
der Fig. 2;
Fig. 6a eine detaillierte Ansicht einer S-BOX;
Fig. 6b eine detaillierte Ansicht einer D-BOX;
Fig. 7 ein Timing-Diagramm, das die Funktions
weise der Schaltung der Fig. 6 zeigt;
Fig. 8a ein Register, das in einer beispielhaften
Koeffizientenzuführschaltung verwendet
wird; die
Fig. 8b-8c beispielhafte Koeffizientenzuführschal
tungen;
Fig. 9 eine andere Ausführungsform der vorlie
genden Erfindung mit einer Übertragsad
dierstufe (carry save adder); und
Fig. 10 eine Übertragsaddierstufe.
Fig. 1 zeigt eine Matrixmultiplizierschaltung 10, die in
der Lage ist, eine 2×2-DCT zu verwirklichen. Die Matrixmul
tiplizierschaltung 10 besitzt zwei Stufen 12 und 14. Eine
DCT kann durch die Multiplikation Z = CXC t ausgeführt wer
den, wobei C eine Matrix von Transformationskoeffizienten,
C t der transponierte Wert von C und X eine Datenmatrix ist.
Die erste Stufe 12 führt die Multiplikation XC t durch, um
eine Zwischenmatrix Y zu erzeugen. Die zweite Stufe führt
die Multiplikation CY durch, um Z zu erzeugen. Die erste
Stufe 12 besitzt eine Spalte von Registern 20 und zwei Spal
ten von Prozeßelementen 16 und 18. Die beiden Prozeßelement
spalten 16, 18 sind identisch.
Jede Prozeßelementspalte 16, 18 besteht aus einer PE1-Ein
heit 16-1, 18-1, die an eine Vielzahl (d. h. zwei) von PE2-
Einheiten 16-2, 16-3 und 18-2, 18-3 angeschlossen ist. Eine
PE1- oder PE2-Einheit wird für jedes bit der in die
Registerspalte 20 eingeführten Datenelemente benötigt. Die
Gesamtzahl der PE1- und PE2-Einheiten pro Spalte entspricht
daher der Zahl der bits der in die Registerspalte eingeführ
ten Datenelemente. Obwohl die Schaltung der Fig. 1 jede
Spalte 16, 18 mit nur zwei PE2-Einheiten zeigt, kann die
Schaltung 10 auch so ausgebildet sein, daß sie jede belie
bige Zahl von PE2-Einheiten aufnimmt. Mit der letzten PE2-
Einheit der Spalten 16, 18 steht eine PE3-Einheit 16-4, 18-4
in Verbindung. Die erste Spalte 16 multipliziert die Ele
mente der Matrix X mit den Elementen der ersten Spalte der
Matrix X t. Die zweite Spalte 18 multipliziert die Elemente
der Matrix X mit den Elementen der zweiten Spalte in der
Matrix C t.
Es wird nunmehr die Funktionsweise einer Prozeßelementspalte
16 in Verbindung mit der Registerspalte 20 beschrieben. Da
die zweite Prozessorspalte 18 mit der ersten Spalte 16 iden
tisch ist, gilt die nachfolgende Erläuterung für beide Spal
ten. Die 2×2-Matrix X, die die Element x11, x12, x21, x22
aufweist, wird, ein Element nach dem anderen, an die Leitun
gen 20-1 der Registerspalte 20 gelegt. Gleichzeitig wird
eine Spalte der Matrix c t, die die Elemente ct 11, ct 21 um
faßt, an die Leitung 34-1 des ersten Prozeßelementes PE1 16-
1 der ersten Spalte 16 gelegt (ein Element nach dem ande
ren). Es versteht sich, daß die erste Spalte von C t für jede
Zeile von X in einer Matrixmultiplikation wiederholt werden
muß. Daher wird die erste Spalte von C t zweimal an die Lei
tung 34-1 gelegt.
Der erste Eingang an den Leitungen 20-1 ist x11 von der Da
tenmatrix X. Der erste Eingang an den Leitungen 34-1 ist das
Element ct 11 von der Matrix C t. Es wird erläutert, wie die
Spalte 16 das Produkt x11 ct 11 bildet. Die Bearbeitung von
ct 11 in P1 16-1 ist wie folgt: Eine an das erste bit der
Eingangsleitungen 20-1 angeschlossene Abzapfleitung 38-1
führt das erste bit des Elementes x11 der PE-1-Einheit der
Spalte 16 zu. Darin führt Leitung 38-1 das erste bit dem
Selektor-Steuereingang eines Multiplexers 36-1 zu. Dieser
Multiplexer 36-1 empfängt ferner das Element ct₁₁ an der
Leitung 34-1 als Dateneingang. Wenn das erste bit gesetzt
ist, d. h. einer logischen 1 entspricht, wird das an der Lei
tung 34-1 anstehende Element ct 11 ausgewählt. Wenn das erste
bit gelöscht ist, d. h. einer logischen 0 entspricht, wird
eine logische 0 gewählt. Das Ausgangssignal des Multiplexers
wird über die Leitung 28-1 an ein Register 24-1 gelegt, wo
es durch die abfallende Kante des Taktsignales gespeichert
werden kann. Dieser Wert bildet ein Teilprodukt der ersten
eingegebenen Elemente x11 und ct 11. Das erste Eingangsele
ment der ersten Spalte von C t ct 11 wird über die Leitung 32-
1 an ein Register 30-1 in der PE-1-Einheit der Spalte 16 ge
legt, wo es gespeichert wird. Die Bearbeitung von x11 und
ct 11 durch PE 16-1 ist damit beendet.
Zusätzlich wird durch die abfallende Kante des Taktes das
erste Eingangselement von X x11 über die Leitungen 20-1 dem
ersten Register 21-1 der Registerspalte 20 zugeführt, wo es
gespeichert wird. Beim nächsten Takt wird das zweite bit der
Größe x11 und ct 11 durch PE-2 16-2 bearbeitet. Mittlerweile
ist das nächste Paar von Eingängen ct 21 und x₁₂ von der PE-
1-Einheit 16-1 und der Registerspalte 20 bearbeitet worden.
Es wird nunmehr die Bearbeitung der Elemente x11 und ct 11 in
PE-2 erläutert. Eine Abzapfleitung 38-2 führt das zweite bit
von x11 dem Selektorsteuereingang des Multiplexers 36-2 der
PE-2-Einheit 16-2 zu. Mittlerweile ist das erste Spaltenele
ment ct 11 über die Leitung 34-2 einem Dateneingang des Mul
tiplexers 36-2 der PE2-Einheit 16-2 zugeführt worden. Wenn
das zweite bit von x11 (über die Leitung 38-2 zugeführt) ge
setzt ist, wird ct 11 vom Multiplexer 36-2 gewählt. Wenn das
zweite bit gelöscht ist, wird eine logische 0 gewählt. Das
Ausgangssignal des Multiplexers 36-2 wird über die 28-2 ei
nem Additions-Register 24-2 zugeführt, das darüber hinaus
das im Register 24-1 der PE1-Einheit 16-1 gespeicherte Teil
produkt über die Leitung 26-1 empfängt. Darin werden diese
beiden Werte addiert und gespeichert, um ein neues Teilpro
dukt zu errechnen. Die Daten des Multiplexers 36-2 dieser
PE2-Einheit 16-2 stellen jedoch eine Multiplikation mit dem
zweiten bit der Daten x11 dar. Der Ausgang des Multiplexers
36-2 muß daher zuerst relativ zum Teilprodukt des Registers
24-1 um ein bit nach links geshiftet werden, bevor die bei
den Ziffern addiert werden. Durch die abfallende Kante des
zweiten Taktes wird ein neues Teilprodukt im Additionsre
gister 24-2 gespeichert. Auch x11 wird über die Leitungen
20-2 der Registerspalte 20 in das Register 21-2 eingegeben
und dort gespeichert. In entsprechender Weise wird das Ele
ment ct 11 über die Leitung 32-2 einem Register 30-2 in der
PE2-Einheit 16-2 zugeführt, wo es gespeichert wird. Es ver
steht sich, daß das zweite Eingangsargumentpaar (x12, ct 21)
und sein erstes Teilprodukt in den Registern 21-1 der
Registerspalte 20 und den Registern 30-1 und 24-1 ge
speichert werden.
Beim nächsten Takt kann ein drittes Argumentpaar (x21, ct 11)
an den Leitungen 20-1 und 34-1 eingegeben werden, um durch
die PE1-Einheit 16-1 und die Registerspalte 20 bearbeitet zu
werden. Der Datenfluß des zweiten Argumentpaares (x12, ct 21)
setzt sich in der PE2-Einheit 16-2 und der Registerspalte 20
fort, wie vorstehend für das erste Argumentpaar (x11, ct 11)
erläutert. Die Datenbearbeitung des ersten Argumentpaares
wird dann in der nächsten PE2-Einheit 16-3 und Register
spalte 20 fortgesetzt. Eine Abzapfleitung 38-3 führt das
dritte bit des Eingangs x11 zum Selektorsteuereingang eines
Multiplexers 36-3 einer PE2-Einheit 16-3 einer dritten
Stufe. Als Dateneingang wird von diesem Multiplexer 36-3
auch das Element ct 11 über die Leitung 34-3 empfangen. Wenn
das dritte bit von x11 gesetzt wird, wird der Spalteneingang
ct 11 als Ausgang gewählt; wenn das dritte bit gelöscht ist,
wird eine logische 0 gewählt. Das Ausgangssignal wird über
die Leitung 28-3 einem zusätzlichen Register 24-3 zugeführt,
wo es um zwei bits nach links verschoben und mit dem Teil
produkt addiert wird, das vom Additionsregister 24-2 über
die Leitung 26-2 zugeführt wurde. Dieses Ergebnis wird durch
die abfallende Kante des dritten Taktes darin gespeichert.
Für Elemente der Matrix X mit mehr als drei bits können zu
sätzliche PE2-Einheiten in einer entsprechenden Weise wie
vorstehend beschrieben unter die PE2-Einheit 16-3 geschaltet
werden. In entsprechender Weise kann für jede zusätzliche
PE2-Einheit ein Register der Registerspalte 20 zugefügt wer
den, wie ebenfalls vorstehend erläutert wurde. In einem
solchen Fall läßt sich die Funktionsweise einer PE2-Einheit
auf einer m-ten Stufe, bei der m ein Index zwischen zwei
und der Zahl der bits im eingegebenen X-Matrixelement ist,
einfach beschreiben. Ein m-Test bit des X-Matrixelementes
(vom m-1-ten Register der Registerspalte 20) wird dem Multi
plexer der PE2-Einheit der m-ten Stufe als Wählsteuerein
gangssignal zugeführt. Wenn das bit gesetzt wird, wird der
entsprechende C t-Eingang (erhalten von einem Register der
PE2-Einheit der m-1-ten Stufe) gewählt. Wenn das bit ge
löscht ist, wird eine logische 0 gewählt. Das Ausgangssignal
dieses Multiplexers wird einem Additionsregister zugeführt,
wo es um m-1 bits nach links geshiftet und zu dem Teilpro
dukt der m-1-ten Stufe addiert wird, um ein neues Teilpro
dukt auszubilden.
Beim weiteren Betrieb der Prozeßelementspalte 16 kann das
Endprodukt des ersten Produktpaares (x11, ct 11) vom Addi
tionsregister 24-3 beim vierten Takt ausgegeben werden. Ge
mäß der allgemeinen Matrizenrechnung erzeugt die Summe der
durch Multiplikation der Elemente einer Zeile einer ersten
Matrix X mit den Elementen einer Spalte einer zweiten Matrix
C t erhaltenen Produkte ein Element der Zwischenmatrix Y =
XC t. Beispielsweise sind
y11 = x11ct 11 + x12ct 21 + Y21 =
x21ct 11 + x22ct 21.
Eine Überprüfung der Sequenz der Ein
gangsargumentpaare ergibt, daß das erste und zweite Produkt
der PE2-Einheit 16-3, d. h. x11ct 11, x12ct 21 addiert werden
kann, um y11 zu bilden, und daß das dritte und vierte Pro
dukt addiert werden können, um y21 zu erhalten. Hierfür kann
eine PE3-Einheit 16-4 am Boden der Prozeßelementspalte 16
vorgesehen sein.
Bei Takt vier wird das Produkt x11ct 11 über die Leitung 26-3
einem Zwischenspeicher 40 zugeführt. Der Zwischenspeicher
besitzt eine Rückkopplungsleitung 46, so daß bei Takt fünf
das erste Produkt x11ct 11 wieder in den Zwischenspeicher 40
eingeführt werden kann. Bei Takt fünf empfängt der Zwischen
speicher 40 als zweites Eingangssignal das zweite Produkt
x12ct 21 über die Leitung 26-3. Dies ist darauf zurückzu
führen, daß das zweite Produkt, das das erste Produkt um
eine Rechenstufe verzögert hat, eingeholt worden ist. Diese
beiden Produkte werden addiert und durch die abfallende
Kante des fünften Taktes im Zwischenspeicher 40 gespeichert.
Bei Takt sechs wird das dritte Produkt x21ct 11 über die Lei
tung 26-23 dem Zwischenspeicher 40 zugeführt. An diesem
Punkt ist es wünschenswert, den Inhalt des Zwischenspeichers
(nunmehr y11) zu entfernen. Somit wird y11 vom Zwischen
speicher 40 über eine Leitung 42 einem Register 44 zuge
führt. Vom Register 44 kann das Element y11 für bis zu zwei
Takte ausgegeben werden, an welchem Punkt das Element y21
berechnet und in das Register 44 eingegeben wird.
Somit kann die Prozeßelementspalte 16 die Elemente y11 und
y21 erzeugen, die die erste Spalte von Y bilden. Durch einen
entsprechenden Prozeß kann die Prozeßelementspalte 18 nach
einander die Elemente einer zweiten Spalte der Matrix C t
aufnehmen und die Elemente einer zweiten Spalte von Y, näm
lich y12 und y22, erzeugen. Es versteht sich, daß diese
Spalten von Prozeßelementen 16, 18 gleichzeitig laufen kön
nen. Um eine vollständige Parallelberechnung einer jeden
Spalte von Y auszuführen, muß die Matrixmultiplizierschal
tung 10 eine Prozeßelementspalte pro Spalte von Y besitzen.
Die Schaltung 10 der Fig. 1 erfüllt diese Anforderung für
eine Zwischenmatrix Y mit zwei Spalten. Beispielsweise kann
daher eine solche Schaltung zum Berechnen einer 2×2 DCT ver
wendet werden.
Die zweite Stufe 14 besitzt ebenfalls zwei Spalten von Pro
zeßelementen 22, 24 und eine Registerspalte 26. Wie bei den
Spalten 16 und 18 sind die Spalten 22 und 24 identisch. Die
Spalte 22 umfaßt eine PE1-Einheit 22-1, der zwei PE2-Einhei
ten 22-2 und 22-3 folgen. In entsprechender Weise besitzt
die Spalte 24 eine PE1-Einheit 24-1 und zwei PE2-Einheiten
24-2 und 24-3. Daher trifft eine Erläuterung der Spalte 22
ebenfalls für die Spalte 24 zu. Die Registerspalte 26
empfängt beispielsweise die Elemente der dritten Matrix C
auf den Leitungen 26-1 in der nachfolgenden Reihenfolge:
c11, c21, c12, c22. Die Spalte 22 empfängt beispielsweise
die Elemente der ersten Spalte von Y an der Leitung 50-1 in
wiederholter Weise in der nachfolgenden Reihenfolge: y11,
y11, y21, y21.
Die Funktionsweise einer Spalte 22 in Verbindung mit der
Registerspalte 26 wird nunmehr erläutert. Wenn man dort
anfängt, wo die Erläuterung der Spalte 16 beendet wurde,
nämlich bei Takt 6, so kann der Wert y11 vom Register 44
über die Leitung 48 abgegeben werden. Diese Leitung 48 ist
an die Eingangsleitung 50-1 der PE1-Einheit 22-1 der Spalte
22 angeschlossen. Die PE1-Einheit 22-1 ist mit der PE1-Ein
heit 16-1 der Spalte 16 identisch. Somit wird y11 als Daten
eingang über die Leitung 50-1 an einen Multiplexer 56-1 ge
legt. Die Registerspalte 26 ist ebenfalls mit der Register
spalte 20 der ersten Stufe 12 identisch. Somit kann das
erste Element c11 einer dritten Matrix C gleichzeitig über
die Leitungen 26-1 in ein erstes Register 27-1 eingegeben
werden. Eine Abzapfleitung 54-1 führt das erste bit des
ersten Elementes c11 zum Selektorsteuereingang eines Multi
plexers 56-1. Wenn das erste bit gesetzt wird, wird das Ele
ment y11 gewählt. Wenn das erste bit gelöscht ist, wird eine
logische 0 gewählt. Das Ausgangssignal des Multiplexers wird
über die Leitung 58-1 einem Register 62-1 zugeführt, wo es
gespeichert wird. Des weiteren wird y11 über die Leitung 52-
1 einem Register 60-1 zugeführt, wo es gespeichert wird. Die
Bearbeitung des ersten bits von c11 und y11 durch die PE1-
Einheit 22-1 ist nunmehr beendet.
Beim nächsten Takt kann ein zweites Argumentpaar (c21, y11)
in die Prozeßelementspalte 22 und die Registerspalte 26 ein
gegeben werden. Mittlerweile ist die Berechnung am ersten
Argumentpaar (c11, y11) in der PE2-Einheit 22-2 und der
Registerspalte 26 fortgesetzt worden. Wenn man wieder auf
das erste Argumentpaar (c11, y11) zurückkommt, so wird y11
vom Register 60-1 dem Dateneingang des Multiplexers 56-2 der
PE2-Einheit 22-2 über die Leitung 50-2 zugeführt. Das zweite
bit von c11 (nunmehr im Register 27-1 gespeichert) wird ab
gezapft und über die Leitung 54-2 dem Selektorsteuereingang
des Multiplexers 56-2 zugeführt. Wenn das zweite bit gesetzt
wird, werden die Daten y11 gewählt. Wenn das zweite bit ge
löscht wird, wird eine logische 0 gewählt. Das Ausgangs
signal des Multiplexers 56-2 wird über die Leitung 58-2
einem Additionsregister 62-2 zugeführt, das ebenfalls das
Teilprodukt des Registers 62-1 über die Leitung 64-1
empfängt. Das Ausgangssignal des Multiplexers 56-2 wird um
ein bit nach links geshiftet und zu dem vorherigen Teilpro
dukt addiert, um ein neues Teilprodukt herzustellen. Dieses
neue Teilprodukt wird dann im Additionsregister 62-2 ge
speichert. Die Daten y11 werden über die Leitung 52-2 einem
Register 60-2 zugeführt, wo sie gespeichert werden, und die
Daten c11 werden über Leitungen 26-2 einem Register 27-2 in
der Registerspalte 26 zugeführt, wo sie gespeichert werden.
Die Bearbeitung des zweiten bits von c11 und y11 durch die
PE2-Einheit 22-2 ist nunmehr beendet.
Beim nächsten Takt wird ein drittes Argumentpaar (c12, y21)
vorzugsweise in die Registerspalte 26 und die Prozeßelement
spalte 22 eingegeben, um durch die PE1-Einheit 22-1 bearbei
tet zu werden. Die Berechnung am ersten und zweiten Argu
mentpaar (c11, y11), (c21, y11) wird in der Registerspalte
26 und der PE2-Einheit 22-3 und PE2-Einheit 22-2 fortge
setzt. Wenn man mit der Erläuterung des ersten Argument
paares (c11, y11) fortfährt, so wird y11 vom Register 60-2
dem Dateneingang des Multiplexers 56-3 der PE2-Einheit 22-3
über die Leitung 50-3 zugeführt. Das dritte bit von c11
(nunmehr im Register 27-2 gespeichert) wird abgezapft und
über die Leitung 54-3 dem Selektorsteuereingang des Multi
plexers 56-3 zugeführt. Wenn das dritte bit gesetzt wird,
werden die Daten y11 gewählt. Wenn das dritte bit gelöscht
wird, wird eine logische 0 gewählt. Das Ausgangssignal des
Multiplexers 56-3 wird über die Leitung 58-3 einem Addi
tionsregister 62-3 zugeführt, das darüber hinaus das Teil
produkt des Registers 62-2 über die Leitung 64-2 empfängt.
Das Ausgangssignal des Multiplexers 56-3 wird um zwei bits
nach links geshiftet und zu dem vorherigen Teilprodukt
addiert, um ein Endprodukt zu erzeugen. Dieses Endprodukt
wird dann im Additionsregister 62-3 gespeichert.
Beim nächsten Takt wird das Produkt im Additionsregister
über die Leitung 64-3 einem Selektor 66-1 zugeführt. Der
Selektor 66-1 wählt alternativ einen der Zwischenspeicher
68-1, 68-2 über die Schalter 70-1, 70-2 zum Speichern der
Produkte, wie sie nacheinander an der Leitung 64-3 austre
ten, aus. Der Selektor 66-1 kann durch einen Takt gesteuert
werden, der vom Systemtakt abgeleitet wird, so daß jeder
Schalter 70-1, 70-2 folgerichtig abwechselnd geschlossen
wird.
Wenn man nunmehr zur Erläuterung der beiden Spalten 22, 24
zurückkehrt, so kann man feststellen, daß hintereinander von
jeder Spalte vier Produkte abgegeben werden, nämlich ein
Produkt pro Spalte pro Zyklus. Beispielsweise sind die
Selektoren 66-1 und 66-2 so geordnet, daß sie das erste und
dritte Produkt, das von jeder Spalte in den Registern 68-1,
68-3 abgegeben wird, speichern. Des weiteren speichern die
Selektoren 66-1, 66-2 das zweite und vierte Produkt in den
Registern 68-2, 68-4. Diese Ordnung dient dazu, Produkte
korrekt zwischenzuspeichern, um die Elemente von Z zu erzeu
gen. Beispielsweise empfangen die Registerspalte 26 und
erste Spalte 22 der zweiten Stufe nacheinander die folgenden
Paare: (c11, y11), (c21, y11), (c12, y21), c22, y21). Daher
wird der Wert z11 = c11y11 + c12y21 (d. h. die Summe des
ersten und dritten Produktes) im Zwischenspeicher 68-1 und
der Wert z21 = c21y11 + z22y21 (d. h. die Summe des zweiten
und vierten Produktes) im Zwischenspeicher 68-2 erzeugt. In
entsprechender Weise empfangen die Registerspalte 26 und die
zweite Spalte der zweiten Stufe 24 nacheinander die Argu
mentpaare (c11, y12), (c21, y12), (c12, y22), (c22, y22).
Die Werte z12 = c11y12 + c12y12 und z22 = c21y12 + c22y22
werden in den Zwischenspeichern 68-3 und 68-4, die der zwei
ten Spalte 24 zugeordnet sind, durch eine ungerade und
gerade Speicherselektion des Selektors 66-2 erzeugt. Um
diese Aufgabe zu lösen, besitzt der Selektor 66-2 zwei
Schalter 70-3 und 70-4, die in der gleichen Weise wie die
Schalter 70-1 und 70-2 wirken.
Es versteht sich, daß beide Zwischenspeicher 68-1, 69-3
gleichzeitig ihre ersten Produkte und ihre dritten Produkte
erhalten. Daher werden die Summen z11 und z12 gleichzeitig
berechnet und können gleichzeitig über die Leitungen 72-1
und 72-3 an die Schalter 74-1 und 74-3 abgegeben werden.
Diese Schalter 74-1, 74-3, die in entsprechender Weise wie
die Schalter 70-1 und 70-3 funktionieren, schließen den
Freigabeausgang für die Register 76-1 und 76-3. Die Register
76-1 und 76-3 sind tandemförmig über eine Leitung 80-1 ver
bunden, so daß beim nächsten Takt das Element z12 aus dem
Register 76-3 und in das Register 76-1 geshiftet wird.
Mittlerweile ist das im Register 76-1 gespeicherte Element
z11 an die Ausgangsleitung 78-1 gelegt worden.
Entsprechend den Registern 68-1, 68-3 führen die Register
68-2, 68-4 ihre Berechnungen gleichzeitig aus. Somit können
diese Register 68-2, 68-4 gleichzeitig die darin gespeicher
ten Elemente z21, z22 über die Leitungen 72-2, 72-4 und
Schalter 74-2, 74-4 den Tandem-Registern 76-2, 76-4
zuführen. Die Register 76-2 und 76-4 sind ebenfalls über
eine Leitung 80-2 miteinander verbunden, so daß beim
nächsten Takt das Element z22 aus dem Register 76-4 in das
Register 76-2 geshiftet werden kann. Des weiteren wird das
Element z21 vom Register 76-2 zur Ausgangsleitung 78-2
geshiftet. Somit führt die Schaltung 10 eine Multiplikation
mit drei Matrizen, beispielsweise eine 2×2 DCT, durch.
In Fig. 2 ist eine Modularschaltung 100 gezeigt, mit der
eine 8×8 DCT verwirklicht werden kann. Wie vorstehend erläu
tert, besitzt die Schaltung 100 eine erste Stufe 106 zum
Berechnen von X=XC t und eine zweite Stufe 108 zum Berechnen
von Z-CY. Die erste Stufe besitzt eine Registerspalte 102
mit einer Vielzahl von tandemförmig verbundenen Registern,
so daß Daten die Spalte 102 heruntersickern können, und zwar
ein Register pro Zyklus. Die erste Stufe besitzt ferner acht
Prozeßelementspalten 104-1 bis 104-8. Jede Prozeßelement
spalte 104-1 bis 104-8 weist eine PE1-Einheit am oberen Ende
der Spalte auf, die mit acht PE2-Einheiten tandemförmig ver
bunden ist. Eine PE1-Einheit 140 ist in Fig. 3 gezeigt. Sie
ist in jeglicher Hinsicht identisch mit den PE1-Einheiten
16-1, 18-1, 22-1, 24-1 der in Fig. 1 gezeigten Schaltung
10. Insbesondere umfaßt die PE1-Einheit der Fig. 3 einen
Multiplexer 144 mit einem Datenselektoreingang 135 und Da
teneingängen 142 und 143. Der Datenselektoreingang ist an
das erste bit des Eingangs zur Registerspalte 102-1 oder
110-1 angeschlossen. Die Matrixelemente von C t oder Y werden
an die Leitung 143 und eine logische 0 wird an die Leitung
142 gelegt. Das Ausgangssignal des Multiplexers wird über
die Leitung 139 dem Register 142 zugeführt, wo es einer
nachfolgenden Stufe auf der Leitung 149 zugeführt werden
kann. In entsprechender Weise werden die C t- oder Y-Matrix
elemente über die Leitung 137 einem Register 145 zugeführt,
wo sie auf der Leitung 147 abgegeben werden können.
Eine PE2-Einheit 146 ist in Fig. 4 gezeigt. Sie ist eben
falls mit den PE2-Einheiten 16-2, 16-3, 18-2, 18-3, 22-2,
22-3, 24-2, 24-3 der Fig. 1 identisch. Insbesondere umfaßt
die PE2-Einheit 146 der Fig. 4 einen Multiplexer 151 mit
einer C t oder Y-Matrixelementdateneingangsleitung 155, einer
Logiknulldateneingangsleitung 169 und einer Selektorsteuer
biteingangsleitung 159. Des weiteren wird das Ausgangssignal
des Multiplexers 151, das über die Leitung 171 zugeführt
wird, zu dem vorhergehenden Ergebnis, das über die Leitung
157 zugeführt wird, in einem Additionsregister 148 addiert.
Aus Klarheitsgründen ist das Additionsregister 148 in eine
Addier-Schaltung 150 abgeteilt, die über die Leitung 163 an
ein separates Register 152 mit einer Ausgangsleitung 165 an
geschlossen ist. Auch die C t- oder Y-Matrixelemente, die
über die Leitung 161 einem Register 153 zugeführt werden,
können danach auf der Leitung 167 abgegeben werden.
Schließlich besitzt jede Spalte eine PE3-Einheit an ihrem
Boden, die den Einheiten 16-4, 18-4 der Fig. 1 entspricht.
Eine PE3-Einheit 154 ist in Fig. 5 gezeigt. Wie bei dem
Additionsregister 148 der PE2-Einheit 146 in Fig. 4, ist
das Zwischenspeicherregister 156 der PE3-Einheit als sepa
rate Zwischenspeichereinheit 158 und Register 160 gezeigt.
Ein vorhergehendes Ergebnis, das auf der Leitung 173 dem
Zwischenspeicher 158 zugeführt wurde, wird auf der Leitung
175 abgegeben. Die Ergebnisse des Zwischenspeichers können
über die Leitung 175 einem Register 179 für eine nachfol
gende Ausgabe auf der Leitung 181 oder Rückführung über den
Weg 177 zum Register 160 geführt werden. Ein derart zurück
geführter Wert wird über die Leitung 183 an den Zwischen
speicher 158 gelegt, so daß er zu einem nachfolgenden Ein
gangsergebnis auf der Leitung 173 addiert werden kann.
Wie bei der 2×2-Matrixmultiplizierschaltung 110 der Fig. 1
entspricht die Gesamtzahl der PE1- und PE2-Einheiten der
Zahl der bits der X-Matrixelemente. Mit einer Gesamtzahl von
neun PE1- und PE2-Einheiten, die tandemförmig verbunden
sind, dient jede Spalte 104-1 bis 104-8 beispielsweise dazu,
die Multiplikation eines neun bit X-Matrixelementes zu ver
wirklichen. Das stimmt mit der Registerspalte 102 überein,
die acht Register besitzt. Mit anderen Worten, ein Register
ist in der Registerspalte 102 vorgesehen, um die X-Matrix
elemente für die Eingabe in jede PE2-Einheit einer jeden
Spalte 104-1 bis 104-8 zu speichern.
Wie bei der 2×2-Matrixmultiplizierschaltung 10 der Fig. 1
empfängt jedes Prozessorelement der Spalten 104-1 bis 104-8
zwei Eingangssignale. Die Elemente der ersten Datenmatrix X,
und zwar ein Element pro Zyklus, werden nacheinander der
Registerspalte 102 zugeführt, eines nach dem anderen, und
zwar in der folgenden Reihenfolge: x11, x12 . . ., x18, x21,
x22 . . ., x28 . . ., x88. Diese Matrixelemente werden dann von
Register zu Register geshiftet. Die Registerspalte gibt in
aufeinanderfolgenden Zyklen ein m-tes Bit von jedem Matrix
element von der Matrix X an das m-te Prozeßelement einer je
den Spalte 104-1 . . . 104-8 ab. Als zweite Sequenz empfängt
jede Prozessorelementspalte 104-1 bis 104-8 die Elemente von
einer Spalte der zweiten Matrix C t (ein Element pro Zyklus),
die einmal für jede Zeile von X (oder achtmal) wiederholt
werden. Beispielsweise empfängt die Spalte 104-4 die fol
gende Sequenz: ct 14 . . ., ct 84, ct 14 . . ., ct 84, ct 14 . . .,
ct 84, ct 14 . . ., ct 84, ct 14 . . ., ct 84, ct 14 . . ., ct 84, ct 14
. . ., ct 84. Diese Matrixelemente werden von Prozeßelement zu
Prozeßelement entlang der Spalte 104-4 geführt.
Jede Prozeßelementspalte 104-1 bis 104-8 gibt eine Spalte
von Elementen der Zwischenmatrix Y ab. Die tatsächliche Mul
tiplikation der Argumente entspricht der der Schaltung der
Fig. 1. Es kann jedoch festgehalten werden, daß zur
Berechnung jedes Elementes der Zwischenmatrix Y in den PE3-
Einheiten die Produkte von acht Eingangsargumentpaaren
addiert werden müssen. Das ist auf die Matrixmultiplika
tionsformel zurückzuführen, gemäß der jedes Element in
einer Zeile der ersten Matrix X mit einem entsprechenden
Element in einer Spalte der zweiten Matrix C t multipliziert
wird. Alle diese Produkte werden dann addiert, um ein Ele
ment in der Produktmatrix Y zu erzeugen. Es liegen damit
acht Elemente pro Zeile der ersten Matrix X und pro Spalte
der zweiten Matrix C t vor, die zu acht Produkten führen, die
addiert werden müssen, um jedes Element in der Matrix Y zu
erhalten.
Nachdem jedes Element der Zwischenmatrix Y berechnet worden
ist, wird es vorzugsweise während eines jeden der nächsten
acht Zyklen über die Leitungen 132-1 bis 132-8 an die zweite
Stufe 108 abgegeben. Beispielsweise gibt die Spalte 104-7
die folgende Sequenz, ein Element pro Zyklus, über die Lei
tung 132-7 ab: y17, y17, y17, y17, y17, y17, y17, y17, y27,
y27, y27, y27, y27, y27, y27, y27 . . ., y87.
Wie die zweite Stufe 24 der Fig. 1 besitzt die zweite Stufe
108 der Schaltung 100 ebenfalls eine Registerspalte 110 und
acht Prozeßelementspalten 124-1 bis 124-8, um eine 8×8-DCT
zu verwirklichen. Hier besitzt die Registerspalte 13
Register, um eine Multiplikation mit 14 bits zu verwirk
lichen. In Übereinstimmung mit der Registerspalte 110 weist
jede Prozeßelementspalte 124-1 bis 124-8 eine PE1-Einheit
und 13 PE2-Einheiten auf.
Wie bei der ersten Stufe empfängt jedes Prozeßelement der
Spalten 124-1 bis 124-8 zwei Multiplikationsargumente pro
Zyklus. Als erstes Multiplikationsargument empfängt jedes
Prozeßelement der Spalten 124-1 bis 124-8, ein Element pro
Zyklus, ein bit eines Elementes einer dritten Matrix C.
Hierzu wird die nachfolgende Sequenz, ein Element pro
Zyklus, in die Registerspalte 110 der zweiten Stufe eingege
ben: c11, c21 . . ., c81, c12, c22 . . ., c82 . . ., c88.
Daher wird bei aufeinanderfolgenden Zyklen das p-te bit ei
nes jeden Elementes von C einem p-ten Prozeßelement einer
jeden Spalte 124-1 bis 124-8 zugeführt. Als zweites Multi
plikationsargument empfängt jede Prozeßelementspalte 124-1
bis 124-8 gleichzeitig, und zwar ein Element nach dem ande
ren, die Elemente von einer Spalte der Zwischenmatrix Y.
Diese Elemente werden wiederholt von der PE3-Einheit der
Spalten 104-1 bis 104-8 der ersten Stufe 1106 über die Lei
tung 132-1 bis 132-8 direkt über der entsprechenden Spalte
124-1 bis 124-8 der zweiten Stufe 108 abgegeben. Wiederum
entspricht die tatsächliche Multiplikation der Argumente der
der Schaltung 10 der Fig. 1.
Die Endprodukte eines jeden eingegebenen Argumentpaares wer
den von der PE2-Einheit am unteren Ende einer jeden Spalte
124-1 bis 124-8 über die Leitungen 130-1 bis 130-8 abgege
ben. Wie bei der 2×2-Matrixmultiplizierschaltung 10 der Fig. 1
müssen diese Produkte abwechselnd zwischengespeichert
werden, um die Endprodukt-Matrixelemente von Z auszubilden.
Um ein Element in der ersten Reihe von Z zu berechnen, muß
das erste Produkt und jedes 18. Produkt danach, das auf ei
ner der Leitungen 130-1 bis 130-8 abgegeben wird, zwischen
gespeichert werden. In entsprechender Weise muß, um ein Ele
ment der zweiten Zeile von Z zu berechnen, das zweite Pro
dukt und jedes 18. Produkt danach, das auf einer der Leitun
gen 130-1 bis 130-8 abgegeben wird, zwischengespeichert wer
den. Es versteht sich, daß zum Berechnen von einem Element
in einer l-ten Zeile von Z (wobei l ein Index von 1 . . . 8
ist) das l-te Produkt und jedes 18. Produkt danach bis zum
LK-ten Produkt, das auf einer der Leitungen 130-1 bis 130-8
abgegeben wird, addiert werden müssen. Wie bei der Schaltung
10 der Fig. 1 entspricht die Spalte k des auf diese Weise
berechneten Elementes von Z der Spalte der zweiten Multipli
kationsargumente, die von der Unterprodukt-Matrix Y an die
spezielle Prozeßelementspalte 124-1 bis 124-8 abgegeben wur
den. Wenn beispielsweise die Prozeßelementspalte 124-3 auf
der Leitung 132-3 Unterprodukt-Matrixelemente von der Spalte
y13 . . . y83 empfängt, dann gibt diese Spalte auf der Leitung
130-3 Produkte ab, die addiert werden können, um die Ele
mente z13 . . . z83 zu berechnen.
Um die Produkte, so wie sie abgegeben werden, richtig
zwischenzuspeichern, ist die Schaltung 100 beispielsweise
mit einer S-BOX-Schaltanordnung 162 und einer Matrix von
Zwischenspeicheranordnungen 164 versehen. Des weiteren be
sitzt auch die Schaltung 100 eine D-BOX-Schaltanordnung 180
und einen seriellen Ausgangsspeicher 182 zum Abgeben der be
rechneten Z-Matrixelemente von der Schaltung 100. Diese Ele
mente sind in größeren Einzelheiten in Fig. 6 gezeigt. Fig. 6a
zeigt die S-BOX in größeren Einzelheiten, während 6b
die D-BOX in größeren Einzelheiten zeigt. Fig. 7 zeigt die
Timing-Signale für diese Komponenten.
In Verbindung mit den Fig. 6 und 6a wird nunmehr die
Funktionsweise der S-BOX-Anordnung 162 und der Zwischen
speicher 164-1-1 . . . 164-8-8 in größeren Einzelheiten be
schrieben. Die Zwischenspeichermatrix 164 umfaßt separate
Zwischenspeicher 164-1-1 . . . 164-8-8. Beispielsweise sind L
Zeilen und K Spalten von Zwischenspeichern vorgesehen, so
daß ein entsprechender Zwischenspeicher für jedes Element
von Z vorhanden ist. Bei der bevorzugten Ausführungsform der
Erfindung erscheinen die Produkte, die zum Berechnen eines
Elementes einer speziellen Spalte k von Z erforderlich sind,
nur auf einer entsprechenden k-ten Ausgangsleitung der Lei
tungen 130-1 . . . 130-8. Daher entspricht jede Spalte von
Zwischenspeichern, d. h. 164-1-1 . . . 164-8-1, einer der Aus
gangsleitungen 130-1 . . . 130-8, und die Zwischenspeicher von
einer Spalte, 164-1-3 . . . 164-8-3, empfangen nur Produkte
von einer Leitung 130-1 . . . 130-8. Wie in Fig. 7 gezeigt,
werden die Zyklen von 1 an gezählt, wenn eine erste Gruppe
von Produkten c11y11, c11, y12 . . . c11c18 entsprechend an
die Leitungen 130-1 bis 130-8 gelegt wird. Ein Impuls er
scheint auf einer Taktleitung 190-1, wodurch ein erster
Schalter 188-1 (Fig. 6a) in jeder S-BOX 186-1 bis 186-8
(Fig. 6) geschlossen wird, so daß der Datenfluß von den
Leitungen 130-1 bis 130-8 zu den ersten Zwischenspeichern
164-1-1 . . . 164-1-8 einer jeden Spalte, d. h. der ersten
Zeile von Zwischenspeichern, freigegeben wird. Beim zweiten
Takt wird eine zweite Gruppe von Produkten c21y11, c21y12
. . . c21y18 die zwischengespeichert werden muß, um Elemente
einer zweiten Zeile von Z zu erzeugen, an die Leitungen 130-
1 bis 130-8 gelegt. Ein Impuls erscheint auf der Taktleitung
190-2, wodurch der zweite Schalter 188-2 in jeder S-BOX 186-
1 bis 186-8 (siehe Fig. 7) geschlossen und der Datenfluß
von den Leitungen 130-1 bis 130-8 zu den Zwischenspeichern
der zweiten Zeile 164-2-1 . . . 164-2-8 freigegeben wird. Man
kann aus dem Timing-Diagramm der Fig. 7 extrapolieren, daß
jede Zeile von Zwischenspeichern abwechselnd bei den Zyklen
1 bis 8 ausgewählt wird, indem der geeignete Schalter 188-1,
188-2, 188-3, 188-4, 188-5, 188-6, 188-7 oder 188-8 einer
jeden S-BOX 186-1 . . . 186-8 geschlossen wird. Dieser Wählvor
gang wird jede acht Zyklen wiederholt. Somit führen die
Zwischenspeicher 164-1-1 . . . 164-8-8 wahlweise eine
Zwischenspeicherung der an den Leitungen 130-1 bis 130-8 an
stehenden Produkte durch, um die Elemente von Z gemäß der
vorher erläuterten Strategie zu erzeugen.
Zum abwechselnden Schließen der Schalter 188-1 bis 188-8 bei
unterschiedlichen Zyklen ist die Schaltung 100 der Fig. 2
mit einem Taktgenerator 184 versehen. Dieser Taktgenerator
184 liefert über eine Vielzahl von Taktleitungen 190 (mit
den Leitungen 190-1 bis 190-8) eine Sequenz von acht Impul
sen an jede S-BOX 186-1 . . . 186-8. Beim ersten Takt von Fig.
7 empfängt nur die Leitung 190-1 (Fig. 6a) einen Impuls,
der den ersten Schalter 188-1 einer jeden S-BOX 186-1 bis
186-8 schließt. Beim zweiten Takt empfängt nur die Leitung
190-2 (Fig. 6a) einen Impuls, der den zweiten Schalter 188-
2 einer jeden S-BOX 186-1 bis 186-8 schließt. Bei einem
Zyklus t empfängt die t MOD 8 Leitung der Taktleitung 190
einen Impuls, der den t MOD 8 Schalter einer jeden S-BOX
186-1 bis 186-8 schließt und die Datenübertragung der auf
den Leitungen 130-1 bis 130-8 erscheinenden Produkte zu den
Zwischenspeichern der t MOD 8 Zeile der Zwischenspeicher
matrix 164 freigibt.
Nach dem vorstehenden Verfahren werden von den auf den Lei
tungen 130-1 bis 130-8 erscheinenden Produkten das 1., 9.,
17., 25., 33., 41., 49. und 57. Produkt einer jeden Leitung
130-1 bis 130-8 in der ersten Zeile der Zwischenspeicher
164-1-1 . . . 164-1-8 der Speichermatrix 164 gespeichert. So
mit ist nach dem 57. Takt die an den Werten der ersten Zeile
der Zwischenspeicher 164-1-1 . . . 164-1-8 durchgeführte Be
rechnung beendet. Bei Takt 58, obwohl die verbleibenden Zei
len der Zwischenspeicher 164-2-1 . . . 164-2-8, 164-3-1 . . .
164-8-8 ihre Berechnungen nicht beendet haben, shiftet die
erste Reihe der Zwischenspeicher 164-1-1 . . . 164-1-8 vor
zugsweise die darin gespeicherten Elemente von Z (d. h. die
erste Zeile von Z, z11 . . . z18) zum seriellen Ausgangs
speicher 182. Der serielle Ausgangsspeicher 182 umfaßt 56
Register 202-1 bis 202-56, die tandemförmig verbunden sind,
so daß die in den Registern 202-1 bis 202-56 gespeicherten
Daten sich nach rechts um ein Register pro Takt in Richtung
auf die Ausgangsleitung 200 fortpflanzen. Somit können durch
Beschicken der Elemente in den seriellen Ausgangsspeicher
182 diese seriell von der Ausgangsleitung 200 abgegeben wer
den. Hierzu ist die Schaltung 100 der Fig. 2 mit einer D-
BOX-Anordnung 180 versehen, die eine D-BOX 196-1 bis 196-8
umfaßt.
In Fig. 6 in Verbindung mit Fig. 6b ist die Ausgabe der
Elemente von Z beschrieben. Entsprechend den S-BOXen 186-1
bis 186-8 besitzt jede D-BOX 196-1 bis 196-8 acht einzelne
Schalter 198-1 bis 198-8, wobei jeder Schalter durch Takt
leitungen 194 (mit den Leitungen 194-1 bis 194-8) getrennt
steuerbar ist. Jede D-BOX 186-1 bis 186-8 ist vorzugsweise
vorgesehen, um das Ausgangssignal des Zwischenspeichers von
einer Spalte der Zwischenspeichermatrix 164 zu leiten. Des
weiteren dient jeder Schalter 198-1 bis 198-8 (siehe Fig.
6b) vorzugsweise dazu, das Ausgangssignal eines Zwischen
speichers innerhalb einer speziellen Spalte der Zwischen
speichermatrix 164 zu leiten. Beim Takt 58 wird jedes Ele
ment vorzugsweise aus jedem Zwischenspeicher 164-1-1 . . .
164-1-8 der ersten Zeile der Zwischenspeichermatrix 164 vom
ersten Schalter 198-1 einer jeden D-BOX 196-1 bis 196-8 ent
fernt. Hierzu erzeugt der Taktgenerator 184 einen Impuls auf
der Leitung 194-1, um dadurch den Schalter 198-1 in jeder D-
BOX 196-1 bis 196-8 zu schließen. Das Element z11 wird vom
Zwischenspeicher 164-1-1 direkt zur Ausgangsleitung 200
durch die D-BOX 196-8 geleitet. Die anderen sieben Elemente
der Zwischenspeicher 164-1-2 . . . 164-1-8 werden in die am
weitesten rechts gelegenen sieben Register 202-1 bis 202-7
des seriellen Ausgangsspeichers 182 in der Reihenfolge z12
. . . z18 durch die D-BOXen 196-2 bis 196-8 eingegeben.
Bei Takt 58 beendet die zweite Zeile von Zwischenspeichern
164-2-1 . . . 164-2-8 ihre Berechung der zweiten Zeile von Ele
menten von Z z21 . . . z28. Somit kann bei Takt 59 die zweite
Zeile von Elementen von Z, nämlich z21 . . . z28, aus der
zweiten Zeile der Zwischenspeicher 164-2-1 . . . 164-2-8
herausgeshiftet und in die nächsten acht am weitesten rechts
gelegenen Register des seriellen Ausgangsspeichers 182 ein
gegeben werden. Hierzu erzeugt der Taktgenerator 184 einen
Impuls auf der Taktleitung 194-2, um auf diese Weise den
Schalter 198-2 einer jeden D-BOX 196-1 bis 196-8 zu
schließen. Die Elemente der zweiten Zeile von Zwischen
speichern 164-2-1 . . . 164-2-8 können somit in den seriellen
Ausgangsspeicher 182 eingegeben werden. Die Eingabe der
zweiten Zeile von Elementen 164-2-1 . . . 164-2-8 berück
sichtigt das Shiften der Elemente in den sieben am weitesten
rechts gelegenen Registern 202-1 bis 202-7 um ein Register
nach rechts. Somit wird an der abfallenden Kante des Taktes
59 z12 auf der Leitung 200 herausgeshiftet, und die Elemente
z13 . . . z18, z21 . . . z28 besetzen die 14 am weitesten rechts
gelegenen Register 202-1 bis 202-14 (in dieser Reihenfolge).
Dieser Vorgang kann mit den verbleibenden Zeilen der
Zwischenspeicher 164-3-1 . . . 164-3-8, 164-4-1 . . . 164-8-8
bei jedem der nächsten sechs Takte fortgesetzt werden. Somit
sind beim 65. Takt sämtliche 56 Register 202-1 bis 202-56
mit den Elementen der Zeilen 2 bis 8 der Produktmatrix Z ge
füllt.
Um den vorstehend beschriebenen Ausgabevorgang zu ordnen,
stellt der Taktgenerator 184 eine Vielzahl von Taktleitungen
194 zur Verfügung. Diese Leitungen 194-1 bis 194-8 empfangen
einen Impuls abwechselnd bei den Takten 58 bis 65. Nach Takt
65 werden die D-BOX-Taktleitungen 194 für mindestens 56
Takte unwirksam gemacht. Während dieser Periode shiftet der
serielle Ausgangsspeicher 182 die in seinen 56 Registern
202-1 bis 202-56 gespeicherten Elemente heraus. Somit werden
bei jedem Takt von 66 bis 121 die Elemente in den Registern
202-1 bis 202-56 nach rechts geshiftet, und zwar um ein
Register pro Zyklus, wobei das am weitesten rechts gelegene
Register 202-1 sein Element auf die Leitung 200 abgibt.
Wie in Fig. 2 dargestellt, kann die bevorzugte Ausführungs
form der Erfindung aufeinanderfolgende Durchläufe von Ein
gangsmatrizen realisieren. Nachdem die ersten beiden
Matrizen X und C t einer ersten Matrixmultiplikation in die
erste Stufe 106 eingegeben worden sind, kann ein zweites
Paar von Matrizen X′ und C′t, einer zweiten Matrixmultiplika
tion in die Schaltung 100 eingegeben werden. Die Bearbeitung
einer jeden Multiplikation ist die gleiche und wird hinter
einander durchgeführt. Beispielsweise können bei dem der
Eingabe der letzten Argumentpaare der Matrizen X und C t in
die Spalten 104-1 bis 104-8 folgenden Zyklus die ersten Ar
gumentpaare der Matrizen X′ und C t, in die Spalten 104-1 bis
104-8 eingegeben werden.
Es versteht sich, daß bei der Berechnung einer DCT im Gegen
satz zu einer willkürlichen Multiplikation mit drei Matrizen
zwei Matrizen, nämlich C und C t, fest sind. Die Elemente
dieser Matrizen können in einer Weise gespeichert werden,
die eine wirksame Eingabe in die Schaltung 100 unterstützt.
Die Schaltungen der Fig. 8a-8c zeigen eine wirksame Ein
richtung hierfür.
Fig. 8a zeigt ein typisches Register 206, das bei der
Konstruktion einer wirksamen Koeffizientenzuführeinrichtung
verwendet wird. Das Register umfaßt eine Vielzahl von D
Flip-Flops 208, die jeweils einen D-Eingang 210, Q-Ausgang
212 und eine Set-Klemme 214 sowie Reset-Klemme 216 aufwei
sen. Fig. 8b zeigt eine Anordnung 220 zur Zuführung von
Koeffizienten zur Registerspalte 110 der Schaltung 100 der
Fig. 2. Eine Vielzahl von 64 Registern 206-1, 206-2, 206-3
. . . 206-62, 206-63, 206-64, eines für jedes Element der
Matrix C, ist ringförmig miteinander verbunden. Der D-Ein
gang (nicht gezeigt) eines jeden Registers 206-1, 206-2,
206-3 . . . 206-62, 206-63, 206-64 ist an den Q-Ausgang (nicht
gezeigt) über Leitungen 218-2, 218-3 . . . 218-62, 218-63,
218-64 seines Nachbars unmittelbar zur rechten angeschlos
sen. Ferner ist der D-Eingang (nicht gezeigt) des am wei
testen rechts gelegenen Registers 206-64 über eine Leitung
218-1 an den Q (nicht gezeigt) des am weitesten links gele
genen Registers 206-1 angeschlossen. Somit drehen bei jedem
Takt die Elemente gegen den Uhrzeigersinn ein Register. Des
weiteren ist der Q-Ausgang eines Registers 206-1 zusätzlich
an die Eingangsleitung 110-1 der Registerspalte 110 ange
schlossen. Wenn die Elemente somit durch die Register 206-1
rotieren, werden sie in die Registerspalte 110 eingegeben.
Bei 64 Takten wird jedes der Elemente in die Registerspalte
110 eingegeben, und die Zuführschaltung 220 kehrt in ihren
ursprünglichen Zustand zurück.
Eine modifizierte Koeffizientenzuführschaltung kann in der
ersten Stufe 106 Verwendung finden, um die Elemente einer
jeden Spalte von C t jeder Prozeßelementspalte 104-1 bis 104-
8 zuzuführen. Wie in Fig. 8c gezeigt, besitzen Schaltungen
220-1, 220-2 . . . 220-8 jeweils acht Register 207-1 bis 207-
64, die wie vorher zu einem Ring miteinander verbunden sind.
Bei der bevorzugten Ausführungsform speichern diese Schal
tungen 220-1, 220-2 . . . 220-8 acht Elemente, die jeweils
achtmal pro DCT in jede Spalte 104-1 bis 104-8 eingegeben
werden können. Deren Funktionsweise entspricht sonst der der
vorher beschriebenen Schaltung 220.
Fig. 9 zeigt eine vergrößerte Matrixmultiplizierschaltung
230, die in der Lage ist, eine 2×2 DCT zu realisieren. Die
Schaltung entspricht in vieler Hinsicht der Schaltung 10 der
Fig. 1, wobei jedoch zwei Hauptunterschiede vorhanden sind.
Bei jeder PE2-Einheit 232-2, 232-3, 234-2, 234-3, 236-2,
236-3, 238-2, 238-3 einer jeden Prozeßelementspalte 232,
234, 236, 238 sind die Additionsregister durch "Carry save"-
Additionsregister 240-1, 240-2, 242-1, 242-2, 244-1, 244-2,
246-1, 246-2 ersetzt, die nachfolgend in größeren Einzelhei
ten erläutert werden. Ferner ist am unteren Ende einer jeden
der letzten PE2-Stufen 232-3, 234-3, 236-3, 238-3 ein
Additionsregister 248-1 bis 248-4 zwischen die Ausgangslei
tung 250-1 bis 250-4 der letzten PE2-Einheit 232-3, 234-3,
236-3, 238-3 und die Eingangsleitungen 252-1, 252-2 zur PE3-
Einheit 232-4, 234-4 oder die Eingangsleitung 252-3, 252-4 zu
den Selektoren 254-1, 254-2 eingebaut worden. Mit Ausnahme
dieser beiden Änderungen entspricht die Funktionsweise der
Schaltung 230 sonst der der Schaltung 10 der Fig. 1.
Anhand von Fig. 10 wird nunmehr die Funktionsweise der
Additionsschaltungen der "Carry save adder"-Register 240-1,
240-2, 242-1, 242-2, 244-1, 244-2, 246-1, 246-2 und der
zwischengefügten Additionsregister 248-1 bis 248-4 in
größeren Einzelheiten erläutert. Eine "Carry save adder"-
Schaltung 300 mit zwei "Carry save"-Additionsstufen 301-1
und 301-2 und einer letzten Additionsstufe 301-3 ist darge
stellt. Jede Stufe 301-1, 301-2, 301-3 entspricht der
Addierschaltung von einem "Carry save"-Register in jeder
PE2-Einheit einer Prozeßelementspalte. Beispielsweise ent
spricht in der Spalte 232 die Schaltung 301-1 dem "Carry
Saver adder"-Register 240-1, die Stufe 301-2 dem Register
240-2 und die Stufe 301-3 dem Additionsregister 248-1. Wie
in Fig. 10 gezeigt, sind die Stufen 301-1, 301-2, 301-3
direkt miteinander verbunden. Bei einer tatsächlichen Aus
führungsform wäre jedoch ein Register zwischen den Ausgängen
einer jeden Stufe 301-1, 301-2, 301-3 angeordnet.
Die Funktionsweise einer einzelnen Addierstufe 301-1 wird
nunmehr beschrieben. Die Addierstufe 301-1 umfaßt beispiels
weise drei Volladdierschaltungen 332-1, 334-1, 336-1. Daher
addieren sämtliche in Fig. 10 gezeigten Stufen 301-1, 301-
2, 301-3 beispielsweise jeweils Werte von vier bits. Es ver
steht sich jedoch, daß die Addition jeder beliebigen Zahl
von bits durchgeführt werden kann, indem mehrere Voll
addierer in entsprechender Weise miteinander verbunden wer
den.
Bei der ersten PE2-Einheit einer Spalte, d. h. 232-2, muß ein
bit-Produkt um ein bit nach links geshiftet und zu dem Pro
dukt der PE1-Einheit addiert werden. Das Produkt der PE1-
Einheit, hier als "B" bezeichnet, wird über die Leitungen
302 der Addierstufe 301-1 zugeführt. Der Wert B umfaßt vier
mit den Bezeichnungen b3b2b1b0 versehene bits, die an die
Leitungen 312-1, 310-1, 308-1, 306-1 gelegt werden. Das Pro
dukt der PE2-Einheit, hier als "B′" bezeichnet, wird über
die Leitungen 304- der Addierstufe 301-1 zugeführt. Der Wert
B′ umfaßt vier bits mit den Bezeichnungen b′3b′2b′1b′0, die
an die Leitungen 320-1, 318-1, 316-1, 314-1 gelegt werden.
Der dritte Eingang 322-1, 323-1, 326-1 eines jeden Voll
addierers 332-1, 334-1, 336-1 ist in dieser Stufe 301-1
geerdet. Alternativ dazu können in der ersten Addierstufe
301-1 Halbaddierer verwendet werden.
Die Summe und der Übertrag (carry) der beiden Werte B und B′
sind mit "S" und "C" gekennzeichnet und umfassen jeweils
fünf bits mit den Bezeichnungen s4s3s2s1s0 und drei bits mit
den Bezeichnungen c3c2c1. Die Eingänge der ersten Addier
stufe 301-1 geben eine Verschiebung oder einen Versatz des
Wertes B′ relativ zum Wert B nach links wieder, wie in Fig.
10 gezeigt. Somit bildet der b0-Eingang auf der Leitung 306-
1 das Summen-bit s0 niedrigster Ordnung. In entsprechender
Weise bildet der bit b′3-Eingang auf der Leitung 320-1 das
Summen-bit s4 höchster Ordnung. Die bits b1 und b′0 der Lei
tungen 308-1, 314-1 werden im Volladdierer 332-1 addiert, um
das Summen-bit s1 und Übertrags-bit c1 auf den Leitungen
306-2 und 322-2 zu erzeugen. Die bits b2 und b′1 der Leitun
gen 310-1, 316-1 werden im Volladdierer 334-1 addiert, um
das Summen-bit s2 und Übertrags-bit c2 auf den Leitungen
306-2 und 314-2 zu erzeugen. Schließlich werden die bits b3
und b2′ der Leitungen 312-1, 318-1 im Volladdierer 336-1
addiert, um das Summen-bit s3 und Übertrags-bit c3 auf den
Leitungen 310-2 und 326-2 zu erzeugen. Somit wird eine erste
"Carry save"-Addition von zwei Werten B und B′ in einer
ersten Addierstufe 301-1 durchgeführt.
Bei der nächsten Stufe 301-2 wird die Addition des als "B′′"
bezeichneten und bei einer zweiten PE2-Stufe erzeugten
Produktes, d. h. 232-3 (siehe Fig. 9), und des Ergebnisses
einer vorhergehenden PE2-Stufe, d. h. 232-2, durchgeführt.
Der Wert B′′, der auf der Leitung 304-2 erscheint, wird zu S
und C addiert, um eine neue Summe und einen neuen Übertrag
zu erzeugen, die als S′ und C′ bezeichnet werden. In Fig.
10 umfaßt B′′ vier bits mit den Bezeichnungen
b′′3b′′2b′′1b′′0, die auf den Leitungen 320-2, 318-2, 316-2,
314-2 erscheinen. Die Werte S′ und C′ umfassen jeweils fünf
bits mit den Bezeichnungen s′4s′3s′2s′1s′0 und drei bits mit
den Bezeichnungen c′3c′2c′1. Wegen der nachfolgenden Ver
schiebung von B′′ nach links bildet das auf der Leitung 306-
2 anstehende Signal s1 das unterste bit s′0 der zweiten
Summe, während b′′3 das bit s′4 höchster Ordnung bildet.
Die bits s2, c1 und b′′0
der Leitungen 308-2, 322-2, 314-2 werden im Volladdierer
332-2 addiert, um das Summen-bit s1′ und Übertrags-bit c′1
auf den Leitungen 306-3 und 322-3 zu erzeugen. Die bits s3,
c2 und b′′1 der Leitungen 310-2, 324-2, 316-2 werden im
Volladdierer 334-2 addiert, um das Summen-bit s′2 und Über
trags-bit c′2 auf den Leitungen 308-3 und 324-3 zu erzeugen.
Schließlich werden die bits s4, c3 und b′′2 der Leitungen
312-2, 326-2, 318-1 im Volladdierer 336-2 addiert, um das
Summen-bit s′3 und Übertrags-bit c′3 auf den Leitungen 310-3
und 316-3 zu erzeugen. Somit wird in einer zweiten Addier
stufe 301-2 eine erste "Carry save"-Addition von zwei Werten
BB′′ und eine durch die Größen S und C gekennzeichnete vorherige
Addition durchgeführt. Es versteht sich, daß weitere Addi
tionsstufen angehängt werden können, um Additionen mit mehr
Werten durchzuführen. Dies würde einer Addition von PE2-Ein
heiten zu den Spalten 232, 234, 236, 238 (siehe Fig. 9)
entsprechen.
Schließlich müssen nach der Durchführung der letzten bit-
Multiplikation in einer speziellen Spalte, d. h. 232 in Fig.
9, die Summen- und Übertragsgrößen S′ und C′ addiert werden.
Die Addierregister 248-1 bis 248-4 (siehe Fig. 9) umfassen
eine herkömmlich ausgebildete Addierschaltung zur Durch
führung einer derartigen Aufgabe. Wie in Fig. 10 gezeigt,
empfängt eine herkömmlich ausgebildete Addierstufe 301-3 die
Summe S′ und den Übertrag C′ und erzeugt eine aus sieben
bits bestehende Endsumme, die die bits
c′′3s′′3s′′2s′′1s′′0s′0s0 umfaßt. Die drei bits niedrigster
Ordnung s′′0s′0s0 benötigen keine Berechnungen und werden
auf den Leitungen 306-3, 306-2, 306-1 abgegeben. Die bits
c′1 und s′2 werden über die Leitungen 322-3, 308-3 (der
dritte Eingang 314-3 ist geerdet) einem Volladdierer 332-3
zugeführt, um ein Summen-bit s′′1 und Übertrags-bit c′′1 auf
den Leitungen 306-4, 322-4 zu erzeugen. Das bit c′′1 wird
zusammen mit den bits c′2 und s′3 über die Leitung 324-4,
324-3, 310-3 einem Volladdierer 334-3 zugeführt, um ein Sum
men-bit s′′2 und Übertrags-bit c′′2 auf den Leitungen 308-4,
324-4 zu erzeugen. Schließlich wird das bit c′′2 zusammen
mit den bits c′3 und s′4 über die Leitungen 324-4, 326-3,
312-3 einem Volladdierer 336-3 zugeführt, um ein Summen-bit
s′′3 und Übertrags-bit c′′3 auf den Leitungen 310-4, 326-4
zu erzeugen. Somit können unter Verwendung eines normalen
Additionsregisters die Summe S′ und der Übertrag C′ zur Er
zeugung einer Endsumme in einer abschließenden Additions
stufe 301-3 addiert werden.
Claims (15)
1. Matrixmultiplizierschaltung mit einer ersten
Stufe (12) zum Multiplizieren einer ersten Matrix X mit
den Elementen xÿ, i = 1 . . . I, j = 1 . . . J mit einer zweiten
Matrix C t mit den Elementen ct jk, k = 1 . . . K, wobei die erste
Stufe eine erste Vielzahl von Pipeline-Schaltungen
(16, 18) aufweist, die parallel arbeiten und nacheinander
die Elemente
einer Zwischenmatrix (Y = X C t) jeweils für einen
speziellen Wert von k abgeben,
gekennzeichnet durch
eine zweite Stufe (14) zum Empfangen der Elemente yik,
wenn diese von der ersten Stufe abgegeben werden, und
zum Multiplizieren dieser Elemente mit einer dritten
Matrix C mit den Elementen cli, l = 1 . . . L, wobei die zweite
Stufe (14) eine zweite Vielzahl von Pipeline-Schaltungen
(22, 24) aufweist, die parallel arbeiten und nacheinander
die Produkte cli yik jeweils für einen speziellen Wert k
abgeben;
sowie Mittel (66-1, 66-2, 68-1 . . . 4) zum wahlweisen
Zwischenspeichern der Produkte cli yik für spezielle Werte
von l von der jeweils zugehörigen Pipeline-Schaltung
(22, 24), so daß eine Zwischenspeichereinrichtung
(68-1, . . . 4) die Elemente
der Produktmatrix Z = C X C t erzeugt.
2. Matrixmultiplizierschaltung nach Anspruch 1,
dadurch gekennzeichnet, daß
- - die zweite Stufe (14) so gestaltet ist, daß die Elemente Yik von der ersten Stufe aus einer ersten Zwischenspeichereinrichtung (40, 44) abgegeben werden
- - daß die Mittel zum wahlweisen Zwischenspeichern der Produkte Cli Yik eine Wähleinrichtung (66-1, 66-2) und eine zweite Zwischenspeichereinrichtung (68-1, . . . 4) umfassen.
3. Matrixmultiplizierschaltung nach Anspruch 1 oder 2,
dadurch gekennzeichnet, daß jede
Pipeline-Schaltung der ersten Stufe (12) zum
Multiplizieren der Elemente (16, 18) einer ersten Sequenez
x₁₁, x₁₂ . . . x1J, x₂₁, x₂₂ . . . x2J, . . ., xI1 . . . xIJ mit den
Elementen einer zweiten Sequenz, die I Wiederholungen der
Sequenz ct 1k, ct 2k, . . ., ct Jk für einen speziellen Wert von k
umfaßt, die folgenden Bestandteile aufweist:
ein erstes Prozeßelement (16-1, 18-1), das gleichzeitig zwei Eingangssignale pro Zyklus empfängt, die das erste bit eines jeden Elementes der ersten Sequenz und jedes Element der zweiten Sequenz umfassen, und das die Produkte seiner Eingangssignale, eines pro Zyklus abgibt; eine Vielzahl von M-1 weiteren Prozeßelementen (16-2 . . . M, 18-2 . . . M), wobei M die Zahl der bits eines jeden Elementes der ersten Sequenz ist und das m-te Prozeßelement, wobei m = 2, . . ., M, zwei Eingangssignale pro Zyklus empfängt, die das m-te bit eines Elementes der ersten Sequenz und ein entsprechendes Element der zweiten Sequenz umfassen, und wobei das m-te Prozeßelement die Summe des Produktes seiner Eingangssignale und die Summe des m-1-ten Prozeßelementes abgibt.
ein erstes Prozeßelement (16-1, 18-1), das gleichzeitig zwei Eingangssignale pro Zyklus empfängt, die das erste bit eines jeden Elementes der ersten Sequenz und jedes Element der zweiten Sequenz umfassen, und das die Produkte seiner Eingangssignale, eines pro Zyklus abgibt; eine Vielzahl von M-1 weiteren Prozeßelementen (16-2 . . . M, 18-2 . . . M), wobei M die Zahl der bits eines jeden Elementes der ersten Sequenz ist und das m-te Prozeßelement, wobei m = 2, . . ., M, zwei Eingangssignale pro Zyklus empfängt, die das m-te bit eines Elementes der ersten Sequenz und ein entsprechendes Element der zweiten Sequenz umfassen, und wobei das m-te Prozeßelement die Summe des Produktes seiner Eingangssignale und die Summe des m-1-ten Prozeßelementes abgibt.
4. Matrixmultiplizierschaltung nach Anspruch 3,
dadurch gekennzeichnet, daß jedes der
ersten Prozeßelemente (16-1, 18-1) umfaßt:
ein Register (30-1) zum Speichern eines jeden Elementes der zweiten Sequenz;
einen Multiplexer (36-1), der das erste bit der Elemente der ersten Sequenz als Selektorsteuerungseingangssignal und die Elemente der zweiten Sequenz als Dateneingangssignal empfängt und der das Element der zweiten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein weiteres Register (24-1) zum Speichern des Ausgangssignales des Multiplexers (36-1).
ein Register (30-1) zum Speichern eines jeden Elementes der zweiten Sequenz;
einen Multiplexer (36-1), der das erste bit der Elemente der ersten Sequenz als Selektorsteuerungseingangssignal und die Elemente der zweiten Sequenz als Dateneingangssignal empfängt und der das Element der zweiten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein weiteres Register (24-1) zum Speichern des Ausgangssignales des Multiplexers (36-1).
5. Matrixmultiplizierschaltung nach Anspruch 3 oder 4,
dadurch gekennzeichnet, daß jedes der
M-1 weiteren Prozeßelemente (16-2 . . . M, 18-2 . . . M) umfaßt:
ein Register (30-2 . . . M) zum Speichern der Elemente der zweiten Sequenz;
einen Multiplexer (36-2 . . . M), wobei der Multiplexer des m-ten Prozeßelementes, m = 2, . . . M, das m-te bit der Elemente der ersten Sequenz als Selektorsteuereingangssignal und die Elemente der zweiten Sequenz vom zugehörigen Register (30-1 . . . M-1) des m-1-ten Prozessorelementes (16-1 . . . M-1, 18-1 . . . M-1) als Dateneingangssignal empfängt, wobei der Multiplexer das Element der zweiten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein Additionsregister (24-2 . . . M) zum Berechnen und Speichern der Summe des nach links um m-1 bits geshifteten Ausgangssignales des Multiplexers und des in dem entsprechenden Register (24-1 . . . M-1) der m-1-ten Stufe gespeicherten Wertes.
ein Register (30-2 . . . M) zum Speichern der Elemente der zweiten Sequenz;
einen Multiplexer (36-2 . . . M), wobei der Multiplexer des m-ten Prozeßelementes, m = 2, . . . M, das m-te bit der Elemente der ersten Sequenz als Selektorsteuereingangssignal und die Elemente der zweiten Sequenz vom zugehörigen Register (30-1 . . . M-1) des m-1-ten Prozessorelementes (16-1 . . . M-1, 18-1 . . . M-1) als Dateneingangssignal empfängt, wobei der Multiplexer das Element der zweiten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein Additionsregister (24-2 . . . M) zum Berechnen und Speichern der Summe des nach links um m-1 bits geshifteten Ausgangssignales des Multiplexers und des in dem entsprechenden Register (24-1 . . . M-1) der m-1-ten Stufe gespeicherten Wertes.
6. Matrixmultiplizierschaltung nach Anspruch 3,
dadurch gekennzeichnet, daß die erste
Stufe (12) zum Multiplizieren der ersten Matrix X mit der
zweiten Matrix C t des weiteren eine Vielzahl von Registern
(20) umfaßt, die tandemförmig geschaltet sind und die
erste Sequenz empfangen sowie das m-te bit eines jeden
Elementes bei aufeinanderfolgenden Zyklen dem
entsprechenden m-ten Prozeßelement einer jeden
Prozeßpipeline zuführen.
7. Matrixmultiplizierschaltung nach einem der Ansprüche
1 bis 6, dadurch gekennzeichnet, daß
jede Pipeline-Schaltung (22, 24) der zweiten Stufe (14)
zum Multiplizieren der Elemente einer dritten Sequenz c₁₁,
c₂₁ . . . cL1, c₁₂, c₂₂ . . ., cL2 . . ., c1I . . . cLI mit den Elementen
einer vierten Sequenz, die L Wiederholungen eines jeden
Elementes der Sequenz y1k, y2k . . ., yIk für einen
speziellen Wert von k umfaßt, die folgenden Bestandteile
aufweist:
ein erstes Prozeßelement (22-1, 24-1), das gleichzeitig zwei Eingangssignale pro Zyklus empfängt, die das erste bit eines jeden Elementes der dritten Sequenz und jedes Element der vierten Sequenz umfassen, wobei das erste Prozeßelement die Produkte seiner Eingangssignale abgibt, und zwar eines pro Zyklus;
eine Vielzahl von P-1 weiteren Prozeßelementen (22-2 . . . P, 24-2 . . . P), wobei P die Zahl der bits eines jeden Elementes der dritten Sequenz ist und das p-te Prozeßelement, wobei p = 2, . . ., P, zwei Eingangssignale pro Zyklus empfängt, die das p-te bit eines jeden Elementes der dritten Sequenz und ein entsprechendes Element der vierten Sequenz umfassen, und wobei das p-te Prozeßelement die Summe des Produktes der Eingangssignale und die Summe des p-1-ten Prozeßelementes abgibt.
ein erstes Prozeßelement (22-1, 24-1), das gleichzeitig zwei Eingangssignale pro Zyklus empfängt, die das erste bit eines jeden Elementes der dritten Sequenz und jedes Element der vierten Sequenz umfassen, wobei das erste Prozeßelement die Produkte seiner Eingangssignale abgibt, und zwar eines pro Zyklus;
eine Vielzahl von P-1 weiteren Prozeßelementen (22-2 . . . P, 24-2 . . . P), wobei P die Zahl der bits eines jeden Elementes der dritten Sequenz ist und das p-te Prozeßelement, wobei p = 2, . . ., P, zwei Eingangssignale pro Zyklus empfängt, die das p-te bit eines jeden Elementes der dritten Sequenz und ein entsprechendes Element der vierten Sequenz umfassen, und wobei das p-te Prozeßelement die Summe des Produktes der Eingangssignale und die Summe des p-1-ten Prozeßelementes abgibt.
8. Matrixmultiplizierschaltung nach Anspruch 7,
dadurch gekennzeichnet, daß jedes der
ersten Prozeßelemente (22-1, 24-1) die folgenden
Bestandteile umfaßt:
ein Register (60-1) zum Speichern eines jeden Elementes der vierten Sequenz;
einen Multiplexer (56-1), der das erste bit der Elemente der dritten Sequenz als Selektorsteuereingangssignal und die Elemente der vierten Sequenz als Dateneingangssignal empfängt und der das Element der vierten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und
ein weiteres Register (62-1) zum Speichern des Ausgangssignales des Multiplexers (56-1).
ein Register (60-1) zum Speichern eines jeden Elementes der vierten Sequenz;
einen Multiplexer (56-1), der das erste bit der Elemente der dritten Sequenz als Selektorsteuereingangssignal und die Elemente der vierten Sequenz als Dateneingangssignal empfängt und der das Element der vierten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und
ein weiteres Register (62-1) zum Speichern des Ausgangssignales des Multiplexers (56-1).
9. Matrixmultiplizierschaltung nach Anspruch 7 oder 8,
dadurch gekennzeichnet, daß jedes der
P-1 weiteren Prozeßelemente (22-2 . . . P, 24-2 . . . P) die
folgenden Bestandteile umfaßt:
ein Register (60-2 . . . P) zum Speichern der Elemente der vierten Sequenz;
einen Multiplexer (56-2 . . . P), wobei der Multiplexer des p-ten Prozeßelementes, p = 2, . . ., P, das p-te bit der Elemente der dritten Sequenz als Selektorsteuereingangssignal und die Elemente der vierten Sequenz vom zugehörigen Register (60-1 . . . P-1) des p-1-ten Prozessorelementes (22-1 . . . P-1; 24-1 . . . P-1) als Dateneingangssignal empfängt, wobei der Multiplexer das Element der vierten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein Additionsregister (62-2 . . . P) zum Berechnen und Speichern der Summe des Ausgangssignales des Multiplexers, um p-1 bits nach links geshiftet, und des in dem entsprechenden Register (62-1 . . . P-1) der p-1-ten Stufe gespeicherten Wertes.
ein Register (60-2 . . . P) zum Speichern der Elemente der vierten Sequenz;
einen Multiplexer (56-2 . . . P), wobei der Multiplexer des p-ten Prozeßelementes, p = 2, . . ., P, das p-te bit der Elemente der dritten Sequenz als Selektorsteuereingangssignal und die Elemente der vierten Sequenz vom zugehörigen Register (60-1 . . . P-1) des p-1-ten Prozessorelementes (22-1 . . . P-1; 24-1 . . . P-1) als Dateneingangssignal empfängt, wobei der Multiplexer das Element der vierten Sequenz auswählt, wenn das bit einer logischen 1 entspricht, und eine logische 0 auswählt, wenn das bit einer logischen 0 entspricht; und ein Additionsregister (62-2 . . . P) zum Berechnen und Speichern der Summe des Ausgangssignales des Multiplexers, um p-1 bits nach links geshiftet, und des in dem entsprechenden Register (62-1 . . . P-1) der p-1-ten Stufe gespeicherten Wertes.
10. Matrixmultiplizierschaltung nach Anspruch 7,
dadurch gekennzeichnet, daß die
zweite Stufe (14) zum Multiplizieren der Zwischenmatrix Y
mit der dritten Matrix C des weiteren eine Vielzahl von
tandemförmig geschalteten Registern (26) umfaßt, die die
dritte Sequenz empfangen und das p-te bit eines jeden
Elementes bei aufeinanderfolgenden Zyklen dem
entsprechenden p-ten Prozeßelement einer jeden
Prozeßpipeline zuführen.
11. Matrixmultiplizierschaltung nach einem der Ansprüche
1 bis 10, dadurch gekennzeichnet, daß
die Matrix C abgetastete Cosinuskoeffizienten umfaßt, die
Matrix C t die transponierte Matrix der abgetasteten
Cosinuskoeffizienten ist und die Matrix X zu
transformierende Daten umfaßt.
12. Matrixmultiplizierschaltung nach Anspruch 5,
dadurch gekennzeichnet, daß die
Additionsregister (24-2 . . . M) "Carrysave"-Addierschaltungen
umfassen.
13. Matrixmultiplizierschaltung nach Anspruch 9,
dadurch gekennzeichnet, daß die
Additionsregister (62-2 . . . P) "Carrysave"-Addierschaltungen
umfassen.
14. Matrixmultiplizierschaltung nach einem der Ansprüche
2 bis 13, dadurch gekennzeichnet, daß
die Wähl- und zweite Zwischenspeichereinrichtung umfaßt:
eine an jede der Pipeline-Schaltungen (22, 24) angeschlossene Selektoreinrichtung (66-1, 2) zum alternativen Leiten der Produktausgangssignale hiervon;
eine Vielzahl von Zwischenspeichern (68-1 . . . 4), und zwar einen für jede Zeile der Produktmatrix Z, die an jede Selektoreinrichtung angeschlossen sind, wobei die Selektoreinrichtung den t mod L-Zwischenspeicher der zugehörigen Vielzahl von Zwischenspeichern auswählt, um das t-te Ausgangsprodukt von der Pipeline-Schaltung zu empfangen, wobei t die Zahl des von der zugehörigen Pipeline-Schaltung an die Selektoreinrichtung abgegebenen Produktes ist.
eine an jede der Pipeline-Schaltungen (22, 24) angeschlossene Selektoreinrichtung (66-1, 2) zum alternativen Leiten der Produktausgangssignale hiervon;
eine Vielzahl von Zwischenspeichern (68-1 . . . 4), und zwar einen für jede Zeile der Produktmatrix Z, die an jede Selektoreinrichtung angeschlossen sind, wobei die Selektoreinrichtung den t mod L-Zwischenspeicher der zugehörigen Vielzahl von Zwischenspeichern auswählt, um das t-te Ausgangsprodukt von der Pipeline-Schaltung zu empfangen, wobei t die Zahl des von der zugehörigen Pipeline-Schaltung an die Selektoreinrichtung abgegebenen Produktes ist.
15. Verfahren zum Multiplizieren von drei Matrizen unter
Verwendung einer Matrixmultiplizierschaltung nach einem
der Ansprüche 1 bis 14, gekennzeichnet durch
die folgenden Schritte:
Multiplizieren einer ersten Matrix X mit den Elementen xÿ i = 1 . . . I, j = 1 . . . J mit einer zweiten Matrix C t mit den Elementen ct jk , k = 1 . . . K in einer ersten Multiplizierschaltungsstufe (12), wobei diese Stufe folgende Schritte ausführt:
sequentielles Erzeugen der Elemente einer Zwischenmatrix Y, wobei für einen speziellen Wert von k in einer ersten Vielzahl von Pipeline-Schaltungen (16, 18) in jeder Pipeline-Schaltung gleichzeitig die betreffenden Elemente gewonnen werden;
und Abgabe der vorher zwischengespeicherten Elemente yik, wie sie von der ersten Stufe erzeugt worden sind, an eine zweite Multiplizierschaltungsstufe (14) zum Multiplizieren der Elemente yik mit einer dritten Matrix C, die Elemente cli, l = 1 . . . L aufweist, wobei diese Stufe folgende Schritte ausführt:
Sequentielles Erzeugen der Produkte cliyik, wobei für einen speziellen Wert von k in einer zweiten Vielzahl von Pipeline-Schaltungen (22, 24) gleichzeitig die betreffenden Produkte gewonnen werden; und
wahlweises Zwischenspeichern der Produkte cliyik für spezielle Werte von l von der jeweils zugehörigen Pipeline-Schaltung (22, 24) in einer zugehörigen Wähl- und Zwischenspeichereinrichtung, über die die Elemente der Produktmatrix Z = C X C t erzeugt werden.
Multiplizieren einer ersten Matrix X mit den Elementen xÿ i = 1 . . . I, j = 1 . . . J mit einer zweiten Matrix C t mit den Elementen ct jk , k = 1 . . . K in einer ersten Multiplizierschaltungsstufe (12), wobei diese Stufe folgende Schritte ausführt:
sequentielles Erzeugen der Elemente einer Zwischenmatrix Y, wobei für einen speziellen Wert von k in einer ersten Vielzahl von Pipeline-Schaltungen (16, 18) in jeder Pipeline-Schaltung gleichzeitig die betreffenden Elemente gewonnen werden;
und Abgabe der vorher zwischengespeicherten Elemente yik, wie sie von der ersten Stufe erzeugt worden sind, an eine zweite Multiplizierschaltungsstufe (14) zum Multiplizieren der Elemente yik mit einer dritten Matrix C, die Elemente cli, l = 1 . . . L aufweist, wobei diese Stufe folgende Schritte ausführt:
Sequentielles Erzeugen der Produkte cliyik, wobei für einen speziellen Wert von k in einer zweiten Vielzahl von Pipeline-Schaltungen (22, 24) gleichzeitig die betreffenden Produkte gewonnen werden; und
wahlweises Zwischenspeichern der Produkte cliyik für spezielle Werte von l von der jeweils zugehörigen Pipeline-Schaltung (22, 24) in einer zugehörigen Wähl- und Zwischenspeichereinrichtung, über die die Elemente der Produktmatrix Z = C X C t erzeugt werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/836,075 US5204830A (en) | 1992-02-13 | 1992-02-13 | Fast pipelined matrix multiplier |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4217011A1 DE4217011A1 (de) | 1993-08-19 |
DE4217011C2 true DE4217011C2 (de) | 1997-07-17 |
Family
ID=25271175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4217011A Expired - Fee Related DE4217011C2 (de) | 1992-02-13 | 1992-05-22 | Matrix-Multiplizierschaltung und Verfahren zum Multiplizieren von Matrizen unter Verwendung einer solchen Schaltung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5204830A (de) |
JP (1) | JP2916056B2 (de) |
DE (1) | DE4217011C2 (de) |
NL (1) | NL9200899A (de) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336180B1 (en) | 1997-04-30 | 2002-01-01 | Canon Kabushiki Kaisha | Method, apparatus and system for managing virtual memory with virtual-physical mapping |
JP2647327B2 (ja) * | 1992-04-06 | 1997-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 大規模並列コンピューティング・システム装置 |
US5483475A (en) * | 1993-09-15 | 1996-01-09 | Industrial Technology Research Institute | Fast pipelined 2-D discrete cosine transform architecture |
US5481487A (en) * | 1994-01-28 | 1996-01-02 | Industrial Technology Research Institute | Transpose memory for DCT/IDCT circuit |
US5867414A (en) * | 1994-08-17 | 1999-02-02 | Industrial Technology Research Institute | Compact pipelined matrix multiplier utilizing encoding and shifting circuit configurations |
JPH0981541A (ja) * | 1995-09-12 | 1997-03-28 | Matsushita Electric Ind Co Ltd | 累算器 |
AUPO648397A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6674536B2 (en) | 1997-04-30 | 2004-01-06 | Canon Kabushiki Kaisha | Multi-instruction stream processor |
US6707463B1 (en) | 1997-04-30 | 2004-03-16 | Canon Kabushiki Kaisha | Data normalization technique |
US6507898B1 (en) | 1997-04-30 | 2003-01-14 | Canon Kabushiki Kaisha | Reconfigurable data cache controller |
US6414687B1 (en) | 1997-04-30 | 2002-07-02 | Canon Kabushiki Kaisha | Register setting-micro programming system |
AUPO647997A0 (en) * | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
US6032168A (en) * | 1997-08-15 | 2000-02-29 | Motorola, Inc. | Computer system to perform a filter operation using a logarithm and inverse-logarithm converter and methods thereof |
US6055556A (en) * | 1997-08-15 | 2000-04-25 | Motorola, Inc. | Apparatus and method for matrix multiplication |
JP5157484B2 (ja) * | 2008-01-30 | 2013-03-06 | ヤマハ株式会社 | 行列演算コプロセッサ |
JP6003744B2 (ja) * | 2013-03-22 | 2016-10-05 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
US9384168B2 (en) | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US10908879B2 (en) | 2018-03-02 | 2021-02-02 | Neuchips Corporation | Fast vector multiplication and accumulation circuit |
US11783163B2 (en) * | 2020-06-15 | 2023-10-10 | Arm Limited | Hardware accelerator for IM2COL operation |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4150434A (en) * | 1976-05-08 | 1979-04-17 | Tokyo Shibaura Electric Co., Ltd. | Matrix arithmetic apparatus |
US4553220A (en) * | 1983-05-19 | 1985-11-12 | Gti Corporation | Matrix multiplier with normalized output |
US4601006A (en) * | 1983-10-06 | 1986-07-15 | Research Corporation | Architecture for two dimensional fast fourier transform |
US4787057A (en) * | 1986-06-04 | 1988-11-22 | General Electric Company | Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements |
EP0305709B1 (de) * | 1987-09-01 | 1993-12-29 | Siemens Aktiengesellschaft | Matrix-Matrix-Multiplizierer |
US4884232A (en) * | 1987-12-14 | 1989-11-28 | General Dynamics Corp., Pomona Div. | Parallel processing circuits for high speed calculation of the dot product of large dimensional vectors |
JP2690932B2 (ja) * | 1988-03-18 | 1997-12-17 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびディシタル信号処理プロセッサシステム |
US5038312A (en) * | 1988-11-14 | 1991-08-06 | Nec Corporation | Data processing system capable of performing vector/matrix processing and arithmetic processing unit incorporated therein |
US4937776A (en) * | 1988-12-13 | 1990-06-26 | Nippon Sheet Glass Co., Ltd. | Matrix-vector multiplication apparatus |
-
1992
- 1992-02-13 US US07/836,075 patent/US5204830A/en not_active Expired - Lifetime
- 1992-05-21 NL NL9200899A patent/NL9200899A/nl not_active Application Discontinuation
- 1992-05-22 DE DE4217011A patent/DE4217011C2/de not_active Expired - Fee Related
- 1992-12-10 JP JP4330734A patent/JP2916056B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
NL9200899A (nl) | 1993-09-01 |
DE4217011A1 (de) | 1993-08-19 |
JPH07191966A (ja) | 1995-07-28 |
US5204830A (en) | 1993-04-20 |
JP2916056B2 (ja) | 1999-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4217011C2 (de) | Matrix-Multiplizierschaltung und Verfahren zum Multiplizieren von Matrizen unter Verwendung einer solchen Schaltung | |
DE3789116T2 (de) | Prozessor zur zweidimensionalen diskreten cosinustransformation. | |
DE3586201T2 (de) | Digitaler datenprozessor fuer matrix-vektor-multiplikation. | |
DE2640157C2 (de) | Verfahren und Anordnung zum redundanzvermindernden Codieren von Bildern | |
DE2625973C3 (de) | Verfahren und Anordnung zur redundanzvermindernden Transformation von Bildern | |
DE3875979T2 (de) | Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten. | |
DE3872424T2 (de) | Fernsehuebertragungssystem mit verwendung von transformationskodierung. | |
DE3750017T2 (de) | Prozessor für orthogonale Transformation. | |
DE3788010T2 (de) | Mehrstufiges Multiplizier- und Addiergerät für Digitalsignale. | |
DE202018101330U1 (de) | Transportieren von Matrizen neuronaler Netze in Hardware | |
DE68921847T2 (de) | Verfahren und Anordnung zur Filterung des Bilddarstellungssignals. | |
DE1549476B2 (de) | Anordnung zur ausfuehrung von divisionen | |
DE1474040B2 (de) | Einrichtung zur Bildung von Speicheradressen | |
DE69025182T2 (de) | Digitaler prozessor für zweierkomplementberechnungen | |
DE2338469A1 (de) | Programmierbares digitales datenverarbeitungsgeraet | |
DE2729912A1 (de) | Digitale signalverarbeitungsanordnung | |
DE2064606C3 (de) | Anordnung zur Echtzeitverarbeitung von elektrischen Signalen durch Anwendung der schnellen Fourier-Transformierten | |
DE19504089A1 (de) | Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren | |
EP0265555B1 (de) | Verfahren und Schaltungsanordnung zur Addition von Gleitkommazahlen | |
DE3909713C2 (de) | ||
DE4218769A1 (de) | Verfahren und Anordnung zum Bilden der Summe einer Kette von Produkten | |
DE1474039A1 (de) | Einrichtung zur Umwandlung von Schluesselwoertern in Speicheradressen | |
DE3634691A1 (de) | Differenzpulscodemodulator sowie dessen verwendung als demodulator | |
DE69209826T2 (de) | Schnelle Addierkette | |
DE68908202T2 (de) | Binärzahlmultiplizierer mit einer sehr grossen Bitzahl. |
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 |