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 Schaltung

Info

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
Application number
DE4217011A
Other languages
English (en)
Other versions
DE4217011A1 (de
Inventor
Jinn-Shyan Wang
Jinn-Nan Kao
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial Technology Research Institute ITRI
Original Assignee
Industrial Technology Research Institute ITRI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Publication of DE4217011A1 publication Critical patent/DE4217011A1/de
Application granted granted Critical
Publication of DE4217011C2 publication Critical patent/DE4217011C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete 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 Ct, 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.
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).
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.
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.
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).
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.
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.
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.
DE4217011A 1992-02-13 1992-05-22 Matrix-Multiplizierschaltung und Verfahren zum Multiplizieren von Matrizen unter Verwendung einer solchen Schaltung Expired - Fee Related DE4217011C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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