DE3586201T2 - Digitaler datenprozessor fuer matrix-vektor-multiplikation. - Google Patents
Digitaler datenprozessor fuer matrix-vektor-multiplikation.Info
- Publication number
- DE3586201T2 DE3586201T2 DE8585308310T DE3586201T DE3586201T2 DE 3586201 T2 DE3586201 T2 DE 3586201T2 DE 8585308310 T DE8585308310 T DE 8585308310T DE 3586201 T DE3586201 T DE 3586201T DE 3586201 T2 DE3586201 T2 DE 3586201T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- input
- cell
- array
- bits
- 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/525—Multiplying only in serial-serial fashion, i.e. both operands being entered serially
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung betrifft einen digitalen Datenprozessor zur Matrix-Vektor-Multiplikation. Mehr im einzelnen bezieht sich die Erfindung auf eine systolische Anordnung von Bitstufen-Verarbeitungszellen, die sowohl für Parallelbetrieb als auch für Seriellbetrieb angeordnet sind. Die Erfindung erstreckt sich auch auf zusammengesetzte Prozessoren in Form von Kombinationen von Prozessoren nach der Erfindung mit anderen Einrichtungen, wobei diese für die Durchführung komplexerer Berechnungen ausgelegt sind.
- Systolische Anordnungen von Bitstufen-Verarbeitungszellen sind bekannt. Die veröffentlichte britische Patentanmeldung Nr. 2 106 287 A (Ref. 1, entsprechend EP-A-0 073 116) beschreibt zweidimensionale Anordnungen von Bitstufen-verknüpften Volladdierern zur Ausführung folgender Berechnungen:
- 1) Vektor-Vektor oder Zahl-Zahl-Multiplikation,
- 2) Matrix-Vektor-Multiplikation
- 3) Korrelation, und
- 4) Konvolution
- Die britische Patentanmeldung Nr. 83 26 690, eingereicht am 5. Oktober 1983 (Ref. 2, entsprechend EP-A- 0 144 123) bezieht sich auf systolische Anordnungen ähnlich denjenigen nach Ref. 1, die aber für eine verbesserte Ausnutzung der Verarbeitungskapazität der Anordnung ausgelegt sind.
- Die Ref. 1 und 2 zeigen die grundsätzlichen Eigenschaften systolischer Anordnungen logischer Zellen. Eine solche Anordnung weist verhältnismäßig einfache logische Zellen auf, die jeweils nur mit benachbarten Zellen und Taktgebermitteln verbunden sind. Bitstufen-Eingangsdaten passieren von Zelle zu Zelle durch die Anordnung, und Kumulativsummen-Ausgangs- Bits gehen von den betreffenden Ausgangszellen aus, die normalerweise sich an einem Rand der Anordnung befinden. Die Ausgangsbits ergeben sich aus logischen Operationen, die kaskadenartig durch die Anordnung hindurch erfolgen. Die Dateneingangszeitsteuerung, die Zellenlogikfunktion, das interne Anordnungsverbindungsschema und die Taktsignalsteuerung in Kombination miteinander geben die Form der von der Anordnung durchgeführten Berechnung vor. Außer den Taktgebermitteln ist keine externe Steuereinrichtung bzw. kein Computerprogramm erforderlich.
- Die Einrichtung nach Ref. 1 hat den Nachteil, daß keine volle Zellenausnutzung erreicht wird. Bei jedem Verarbeitungszyklus berechnet die Hälfte der Zellen oder mehr Nullterme, d. h. sie laufen eigentlich leer. Ref. 2 bietet einen Behelf durch Verwendung eines Akkumulators am Anordnungsausgang, der für ein Summieren nicht gleichzeitig berechneter Anordnungsausgangsbeiträge zu individuellen Bits jedes Berechnungsterms ausgelegt ist. Dies ergibt eine Verbesserung des Zellenausnutzungsgrades um einen Faktor 2. Darüber hinaus kann die Effizienz weiter dadurch verbessert werden, daß ein ziemlich komplexes Dateneingangsschema angewendet wird, bei welchem Daten in benachbarten Zellenreihenpaaren der Anordnung in alternierenden Taktzyklen verschoben werden.
- Der Prozessor nach Ref. 2 ist so ausgeiegt, daß er Beschränkungen der Wortlänge von an der relevanten Berechnung beteiligten Terme vermeidet. Er kann beispielsweise eine Matrix-Vektor-Multiplikation durchführen, bei welcher sowohl der Vektor als auch die Matrix-Koeffizienten eine beliebige Bitlänge haben können. Dies wird dadurch erkauft, daß er vergleichsweise komplex ist. Jedoch gibt es eine Anzahl von Berechnungen, bei welchen es lediglich notwendig ist, Eingangsdatenwörter mit +1, -1, oder 0 zu multiplizieren, und das Vermeiden irgendwelcher Beschränkungen der Berechnungstermlänge ist nicht unbedingt notwendig.
- Das Dokument G.E.C. Journal of Research, Band 2, Nr. 1, 1984, Seiten 52 bis 55, Rugby, GB, R.B. Urquhart u.a. mit dem Titel "Efficient bit-level systolic arrays or inner product computation" schlägt vor, daß stationäre Koeffizienten in einer verknüpften Volladdiereranordnung mit einer Anordnungsausgang-Akkumulatorkette eine Effizienz von 100 % ergibt. Das Berechnen ist jedoch nicht angesprochen.
- Es ist Aufgabe der vorliegenden Erfindung, einen digitalen Datenprozessor zu schaffen, der für die Multiplikation eines Vektors mit einer Matrix mit Koeffizienten +1, -1, oder 0 geeignet ist, wobei der Prozessor von im Vergleich zum Stand der Technik vereinfachten Aufbau ist.
- Die vorliegende Erfindung beinhaltet einen digitalen Datenprozessor zum Multiplizieren eines Eingangsvektors mit Mehrbit-Koeffizienten mit einer Matrix mit den Koeffizienten +1, -1, und 0 zum Erhalt eines Produktvektors, wobei der Prozessor aufweist:
- a) eine Anordnung von Verarbeitungszellen, die jeweils so angeordnet sind, daß sie taktgesteuert eine arithmetische Zweierkomplement-Operation durchführen, welche umfaßt:
- i) Empfang von Übertrags-, Kumulativsummen- und Dateneingangsbits,
- ii) Erzeugen von Übertrags- und Kumulativsummenbits entsprechend der Addition der Eingangsübertrags- und- Kumulativsummenbits zu einem ein Datenbit umfassenden Produkt, und
- iii) Ausgabe des Datenbits und der erzeugten Übertrags- und Kumulativsummenbits,
- b) Verbindungsleitungen, welche jede Zelle mit ihren Reihen - und Spaltennachbarzellen verbinden und Pfade zur Reihenweitergabe von Vektor-Koeffizienten-Bits und zur spaltenabwärtsweisen kaskadenartigen Kumulativsummenerzeugung herstellt,
- c) Dateneingabemittel zur taktgesteuerten Eingabe von Vektor- Koeffizienten in entsprechende Reihen, und
- d) Taktmittel zur zyklischen Aktivierung der Zellen und Dateneingabemittel zur Herstellung zyklischer Biteingabe und Zellenoperation im Sinne einer spaltenabwärts erfolgenden kaskadenartigen Kumulativsummenerzeugung,
- dadurch gekennzeichnet, daß jede Zelle einem entsprechenden Multiplikativ-Matrix-Koeffizienten zugeordnet ist, der in der Anordnung entsprechend dem Transponenten der Multiplikantenmatrix gelegen ist, daß die Zellenoperation eine Übertragsbit-Rezirkulation und Produktbildung unter Einbeziehung einer Multiplikation des Dateneingangsbits mit dem entsprechenden Zellenkoeffizienten umfaßt die Dateneingabemittel für eine Vektoreingabe in die Zellen der ersten Spalte in wortparalleler, bitserieller und zeitversetzter Weise ausgelegt sind, um Produktvektor-Wörter zu erzeugen, die bitseriell von entsprechenden Zellen der letzten Reihe in Form von Kumulativsummenbits ausgegeben werden, die in zugeordneten Anordnungsspalten abwärts kaskadenartig akkumuliert sind, und daß jede Zelle für eine Voreinstellung von Übertragsbits für Berechnungen des niedrigstsignifikanten Bits auf 1 oder 0 ausgelegt ist, je nachdem, ob der jeder Zelle zugeordnete Matrix- Koeffizient -1 ist oder nicht.
- Der Prozessor nach der Erfindung bietet eine Anzahl von Vorteilen über bekannte Matrix-Vektor-Multiplizierer. Er erfordert nur einen Eingangswortstrom, während der Stand der Technik nach den Ref. 1 und 2 zwei sich gegensinnig fortpflanzende Eingangsströme anwendet. Jede Verarbeitungszelle ist bei jedem Taktaktivierungszyklus betriebsfähig, und zwischen Eingangs- und Ausgangsbits eingestreute Leer- oder Null-Bits, wie beim Stand der Technik vorhanden sind, sind unnötig. Außerdem sind komplexe Dateneingangs- und Ausgangsakkumulierungsanordnungen wie in Ref. 2 nicht erforderlich, und ein 100-%iger Zellenausnutzungsgrad ist ohne dieselben erreichbar. Der Prozessor nach der Erfindung ist auf Matrizen von Koeffizienten +1, -1 oder 0 beschränkt, aber ist in diesem Zusammenhang in hohem Maße effizient und viel einfacher aufgebaut als bekannte Einrichtungen. Außerdem haben Matrizen dieser Art sehr wichtige Anwendungen, beispielsweise in der diskreten Berechnung der Fourier-Transformation (DFT), wie noch beschrieben wird.
- Der Prozessor nach der Erfindung kann Zellen umfassen, die für eine Aufnahme von Eingangkennzeichenbits synchron mit Vektoreingangbits angeordnet sind, wobei das Kennzeichenbit anzeigt, ob das betreffende Eingangsbit ein niedrigstsignifikantes Bit (lsb) ist oder nicht; jede Zelle gibt für lsb-Berechnungen Übergangseingangsbits von 1 oder 0 vor, je nachdem, ob der betreffende Zellenkoeffizient -1 ist oder nicht. Dies ergibt eine besonders zweckmäßige Weise der Durchführung einer Zweierkomplement-Arithmetik. Die Zellen können auch so angeordnet sein, daß sie zwei zusätzliche Eingangsbits empfangen, die einen Anordnungsausgangs-Multiplikatorkoeffizienten von +1, -1 oder 0 anzeigen. Der Prozessor kann zum Multiplizieren eines Vektors mit einer zusammengesetzten Matrix ausgelegt sein, die aus ersten und zweiten Untermatrizen mit Koeffizienten +1, -1 und 0 aufgebaut sind. Bei dieser Ausführungsform umfaßt der Prozessor eine Anordnung von Unteranordnungsprozessoren, die jeweils zum Multiplizieren der ersten Untermatrix und einem entsprechenden Anordnungskoeffizienten ausgelegt ist, der aus einem zweiten Untermatrixkoeffizienten besteht, wobei die Unteranordnungen in der Anordnung in Positionen entsprechend dem Transponenten von Koeffizienten der zweiten Untermatrix angeordnet sind.
- In einer bevorzugten Ausführungsform umfaßt der Prozessor eine Anordnung mit N Reihen und M Spalten, wobei die Anordnungsspaltenausgänge mit entsprechenden Kanälen eines M-Kanal-Serienbitmultiplizierers verbunden sind und der Multipliziererausgang als Eingang mindestens einer zweiten Anordnung mit M Reihen und N Spalten geschaltet ist, die aber ansonsten äquivalent zu der N x M-Anordnung ist. Dies ergibt einen Verarbeitungskanal zur Durchführung einer Transformation. Der Prozessor kann zwei solche Verarbeitungskanäle zur Verarbeitung reeller und imaginärer Teile von Vektorwörtern haben, wobei die Serienbitmultiplizierer Ausgangsquerverbindungen zwischen Verarbeitungskanälen zur Durchführung der Multiplikation mit imaginären Koeffizienten haben. Damit die Erfindung vollständig verstanden werden kann, werden nunmehr Ausführungsbeispiele unter Bezugnahme auf die anliegenden Zeichnungen lediglich beispielsweise beschrieben, in welchen zeigen:
- Fig. 1a und 1b schematische Darstellungen eines Prozessors nach der Erfindung im ersten und vierten Arbeitszyklus,
- Fig. 2 eine bei dem Prozessor nach den Fig. 1a und 1b verwendete Verarbeitungszelle,
- Fig. 3 Signalspeicheranordnungen zum Zeitversatz von Prozessoreingangsdaten, Rückversatz von Ausgangsdaten und Zuführen von lsb-Kennzeichen,
- Fig. 4 einen Serienbitmultiplizierer zum Multiplizieren des Prozessorausgangsignals,
- Fig. 5 einen Prozessor nach der Erfindung in Auslegung zur Durchführung eines Winograd-Fourier Transformationsalgorithmus,
- Fig. 6 eine Verarbeitungszelle in Auslegung zur Multiplizierung des Prozessorausgangssignals mit einem weiteren Koeffizienten, und
- Fig. 7 einen Prozessor nach der Erfindung, der als Anordnung von Unterprozessoren bzw. Unteranordnungen aufgebaut ist.
- In den Fig. 1a und 1b, in denen gleiche Elemente jeweils gleich bezeichnet sind, ist eine Matrix-Vektor-Multiplikationsanordnung 10 aus Bitstufen-Verarbeitungszellen 12 im ersten und vierten Operationszyklus dargestellt. Die Zellen 12 sind schematisch als Rechtecke dargestellt. Die Anordnung 10 hat drei Reihen und vier Spalten, d. h. es handelt sich um eine 3 x 4-Anordnung, die 12 Zellen umfaßt. Jede Zellenbezugszahl 12 weist ein entsprechendes Paar von Tiefzahlen auf, die die jeweilige Reihen- und Spaltenposition eingeben; die Zelle 12ij ist also die i-te-Zelle in der j-ten Reihe, wobei i = 0 bis 3 und j = 0 bis 2. Jede Zelle 12ij ist einem entsprechenden Koeffizienten Aij zum Multiplizieren von Eingangsdatenbits zugeordnet, wobei Aij = +1, oder 0. Entsprechend Ref. 2 werden Dateneingang und Resultaterzeugung nachstehend unter Bezugnahme auf ein Datenparallelogramm 14, das ein sogenanntes Schutzband 16 enthält, und auf ein Resultatparallelogramm 18 beschrieben. Die Parallelogramme 14 und 18 bewegen sich nach rechts bzw. abwärts, wie durch Pfeile 19 und 20 angedeutet, und zwar mit gleicher Geschwindigkeit von einer Zelle pro Taktzyklus.
- Nunmehr wird auch auf Fig. 2 Bezug genommen, in welcher eine Bitstufen-Verarbeitungs- bzw. -Logikzelle 12 mehr im einzelnen gezeigt ist. Die Zelle 12 weist x, x' bzw. Dateneingangs - und Ausgangsleitungen 22 und 24, c, c' bzw. eine Übertragsrezirkulationsleitung 26 und y, y' bzw. Kumulativsummeneingangs- und -Ausgangsleitungen 28 und 30 auf. Das Vorhandensein bzw. Fehlen einer Haupthochzahl zu x, c usw. bedeutet ein Zellenausgangs- bzw. -Eingangsbit. Außerdem sind Eingangs- und Ausgangskennzeichenleitungen 32 und 34 für Niedrigstsignifikanzbits lsb, lsb' vorgesehen. Die Leitungen 22, 26, 28 und 32 enthalten Signalspeicher 40, 42, 44 bzw. 46 zur Verzögerung um einen Taktzyklus.
- Die Logikfunktion jeder Zelle 12 ist gegeben durch:
- x 'E x (1.1)
- lsb' E lsb (1.2)
- y' E y D R (1.3)
- c' E (y D) + (y R) + (D R) (1.4)
- wobei alle Terme in den den Ausdrücken (1.1) bis (1.4) Ein-Bit-Mengen sind, R = x, oder 0 für Aij = +1, -1 bzw. 0, und D gleich dem lsb-Eingangskennzeichenwert ist, wenn Aij = -1, und ansonsten gleich dem mit dem lsb-Eingangskennzeichenkomplement AND-verknüpften Übertragseingangswert, d. h. D = (lsb (Aij = -1) + ( c)).
- Jede Zelle 12ij bildet ein Produkt Aij x in dem (1 + i + j + k)-ten Zyklus der Anordnungsoperation. Hierbei ist x das k-te Bit des j-ten Eingangsdatenworts xj, wie noch beschrieben wird. Das Produkt Aijx wird zu dem früheren Eingangs- Kumulativsummenbit Y auf der Leitung 28 und zum Übertragsbit c auf der Leitung 26 addiert. Das Ergebnis wird zum neuen Ausgangs-Kumulativsummenbit y' zur benachbarten Zelle unmittelbar darunter. Die Eingangs-lsb-Kennzeichenbits und x - (oder x )-Bits werden zur rechts benachbarten Zelle weitergegeben. Ein neues Übertragsbit c' wird erzeugt und durch den Signalspeicher 42 zur Addition mit dem nachfolgenden Produkt von Aijx +1, das im nächsten Zyklus gebildet wird, rezirkuliert.
- Die Bildung der Produkte Aijx erfolgt geradewegs, wenn Aij entweder +1 oder 0 ist, aber in komplexerer Weise, wenn Aij = -1. Das letztere erfordert die Komplementbildung zu Bits und das Addieren von 1 zum lsb. Demgemäß wird, wenn Aij = -1, das ankommende x zur Bildung von Aijx komplementiert. Außerdem wird, wenn Aij = -1 und das lsb-Eingangskennzeichen war, d. h. 1 ist, 1 als Eingangsübertragsbit c zu Aijx addiert. Das lsb-Eingangskennzeichen hat den Wert 1 nur, wenn ein lsb x als Eingang zur betreffenden Zelle 12ij vorliegt und dieser Wert in Synchronismus mit der lsb-Verschiebung von Zelle zu Zelle durch die Anordnung 10 hindurch weitergegeben wird.
- Jeder der Signalspeicher 40, 42, 44 und 46 weist in Reihe geschaltete erste und zweite Halbspeicher auf, die durch entsprechende Phasen eines zweiphasigen nicht überlappenden Taktes gesteuert werden. Beim ersten Phasensignal wird ein gespeichertes Bit aus der Verarbeitungszelle 12 herausgetaktet. Das entsprechende Ausgangsbit passiert zum ersten Halbspeicher einer benachbarten Zelle oder, im Falle eines Übertragsrezirkulationsspeichers 42, in seinen eigenen ersten Halbspeicher. Beim zweiten Phasensignal wird jedes Bit vom ersten zum zweiten Halbspeicher weitergetaktet und ist nun bereit für den nächsten Verarbeitungszyklus. Diese Taktsteuerungsanordnung ist auf dem Fachgebiet bekannt und wird nicht im einzelnen beschrieben. Eine vollständigere Beschreibung findet sich u. a. in Ref. 1.
- Die Anordnung 10 arbeitet folgendermaßen. Jede Zelle 12 erhält Eingangsbits von oben und von links und liefert Ausgangsbits nach unten und nach rechts. Die Zellen 12&sub0;&sub0; bis 12&sub0;&sub2; in der linken Spalte der Anordnung 10 empfangen x- und lsb-Kennzeicheneingangsbits von (nicht gezeigten) Dateneingabemitteln. Die Zellen 12&sub0;&sub0; bis 12&sub3;&sub0; der oberen Reihe empfangen y-Eingangsbits, die für die meisten Berechnungen ständig auf 0 gesetzt sind. Diese Bits könnten natürlich erforderlichenfalls anfänglich auf Nicht-Null-Werte gesetzt werden. Die Zellen 12&sub3;&sub0; bis 12&sub3;&sub2; der rechten Spalte haben unverbundene Daten- und lsb'-Kennzeichenausgangsleitungen 24 und 34. Die Zellen 12&sub0;&sub2; bis 12&sub3;&sub2; der unteren Reihe haben Kumälativsummen- bzw. y'-Ausgangsleitungen, die aus der Anordnung 10 herausführen und entsprechende Bits eines Berechnungsergebnisses erzeugen. Abweichend vom Vorhergehenden erfolgen alle Verbindungen von jeder Zelle nur zu ihren unmittelbaren Nachbarn. Dies ist in Fig. 1 schematisch durch die Darstellung der Anordnung mit mit den Nachbarzellen jeweils gemeinsamen Zellenrechteckgrenzen angedeutet. Dementsprechend empfängt eine allgemeine Zelle 12ij lsb/x- und y-Eingangsbits von Zellen 12(i-1)j bzw. 12i(j-1) und liefert Ausgangsbits lsb'/x' und y' zu Zellen 12(i+1)j bzw. 12i(j+1).
- Die 3 x 4 Zellenanordnung 10 ist zur Durchführung folgender Berechnung ausgelegt:
- wobei A eine 4 x 3 Matrix mit Koeffizienten Aij von +1 oder 0 ist, i = 0 bis 3 und j = 0 bis 2, jeder Koeffizient einer betreffenden Zelle 12ij zugeordnet ist, wie durch die Transposition der Indizes i und j in Aji angezeigt ist, die Matrix A tatsächlich die Transponente der Anordnungskoeffizienten Aji ist, ein Vektor mit drei Koeffizienten oder Binärwörtern X&sub0;, X&sub1;, und X&sub2; von jeweils drei Bits ist, wobei das Wort Xa die Bits x ist und b = 0 bis 2, und ein Produktvektor mit vier Koeffizienten oder Binärwörtern Y&sub0; bis Y&sub3; von jeweils sechs Bits ist, wobei das Wort Ya die Bits y hat und b = 0 bis 3.
- Die durch das Parallelogramm 14 angezeigten Daten bilden den Eingang zur Anordnung 10 in wortparalleler, bitserieller, lsb- führender Weise, d. h. das Wort Xa (a = 0 bis 2) mit Bits x (b = 0 bis 2) ist Eingangssignal von der linken lsb- führenden zur a-ten Reihe von Zellen 12 der Anordnung 10, nämlich Zellen 120a bis 123a. Das Eingangssignal von Xa führt das Eingangssignal von Xa+1 durch einen Zellenverarbeitungszyklus oder ein Bit, d. h. x ist Eingangssignal für die a-te Reihe einen Zyklus früher als das Eingangssignal xba+1 zur (a + 1) -ten Reihe. Dies wird als Bit-gestaffeltes oder zeitversetztes Eingangssignal bezeichnet. Die Zeitstaffelung abwärts durch die Anordnung 10 ist kumulativ, wie durch die schrägen Seiten des Datenparallelogramms 14 angedeutet ist. Die Dateneingangszeitstaffelung wird bewirkt, um eine korrekte Zeitsteuerung der Anordnungsoperation zu erhalten, wie noch beschrieben wird. Jedes Bit xab bewegt sich pro Zyklus der Anordnungsoperation durch eine Zelle; dies ist in den Fig. 1 und 2 durch die Parallelogramme 14 und 18 dargestellt, die sich mit einer Zelle pro Zyklus nach rechts bzw. nach abwärts durch die Anordnung 10 bewegen.
- Damit die Anordnung 10 die Berechnung nach Gleichung (2) durchführen kann, ist es notwendig, Produktvektorkoeffizienten der Form Yi zu berechnen, die durch die Wortstufensummierung gegeben sind: wobei n = 2 für die drei (3) Koeffizienten von Y
- Darüberhinaus, muß jedes Bit von Xj in Gleichung 3 mit Aij multipliziert werden. Das b-te Bit y von Yi ist gegeben durch: Übertragsbit von der (b-1)-ten Bitsummierung oder von der Zweierkomplementbildung (4)
- Fig. 1a entspricht dem ersten Zyklus der Anordnungsoperation, in welcher die führende bzw. obere rechte Spitze des Datenparallelogramms 14 in die Zelle 12&sub0;&sub0; eingetreten ist. Dies entspricht dem Eingangssignal auf Leitung 22 (siehe Fig. 2) des lsb x von X&sub0; in die Zelle 12&sub0;&sub0;, die außerdem ein lsb- Eingangskennzeichen bzw. eine logische 1 auf der Leitung 32 erhält.
- In dem in Fig. 1b gezeigten vierten Zyklus der Anordnungsoperation haben sich das Parallelogramm 14 und das begleitende Schutzband 16 im Vergleich zu Fig. 1a um drei Zellen 12 nach rechts bewegt. Das Resultatparallelogramm 18 hat sich um drei Zellen abwärts bewegt, so daß seine unterste Spitze sich nun unterhalb der Anordnung 10 befindet. Dies entspricht einem Ausgangssignal y der Anordnung 10. Die Daten- und Resultatparallelogramme 14 und 18 erfassen nun alle Zellen 12 außer den Zellen 12&sub2;&sub2;, 12&sub3;&sub1; und 12&sub3;&sub2; unten rechts. Dies illustriert die Anordnungsoperation. Die die Anordnung überlappenden Parallelogrammbereiche entsprechen den laufenden Zellenrechenvorgängen. Die oberhalb und links der Anordnung befindlichen Parallelogrammbereiche entsprechen zukünftigen Rechnungsvorgängen, und die unterhalb und rechts der Anordnung befindlichen Bereiche zurückliegenden Rechenvorgängen.
- Beim zweiten Taktzyklus empfängt die Zelle 12&sub0;&sub1; ein Kumulativsummeneingangsbit, bestehend aus dem nullten Bit von (A&sub0;&sub0;x + Übertragsbit) von der Zelle 12&sub0;&sub0; oben und dem lsb x von X&sub1; von links. Das Kumulativsummen- bzw. y-Ausgangssignal der Zelle 12&sub0;&sub1; ist das nullte Bit von (A&sub0;&sub0;x + A&sub0;&sub1;x + Übertragsbit). Ein Übertragsbit rezirkuliert über den Übertragsdatenspeicher 42&sub0;&sub1; zur Adition zu einer Summierung durch die Zelle 12&sub0;&sub1; im dritten Taktzyklus. In ähnlicher Weise produziert die Zelle 12&sub0;&sub2; das nullte Bit von (A&sub0;&sub0;x + A&sub0;&sub1;x + A&sub0;&sub2;x + Übertragsbit) als Kumulativsummenausgangssignal nach dem dritten Taktzyklus, welches ein Ausgangssignal aus der Anordnung 10 bildet. Durch Vergleich mit Gleichung 4 ist dieses Ausgangssignal das nullte Bit bzw. lsb von Y&sub0;, y . Demgemäß ist gezeigt, daß die ersten drei Zyklen der Anordnungsoperation y als Ausgangssignal der Zelle 12&sub0;&sub2; erzeugen.
- Um nun auf die zweite Spalte mit den Zellen 12&sub1;&sub0;, 12&sub1;&sub1; und 12&sub1;&sub2; zu kommen, diese empfangen Eingangssignale x , x und x beim zweiten, dritten und vierten Zyklus der Anordnungsoperation. Dies erzeugt nach dem vierten Zyklus in einer der für die erste Zellenspalte beschriebenen Weise ähnlichen Weise als Ausgangssignal das nullte Bit von A1&sub0;x + A&sub1;&sub1;x + A&sub1;&sub2;x + Übertragsbit. Das lsb von Y&sub1;, y , wird demgemäß erzeugt. Im allgemeinen Fall ist das lsb y des n-ten Produktvektorkoeffizienten Yi das Ausgangssignal der Zelle 12&sub1;&sub2; nach (i + 3) Operationszyklen. Man sieht, daß die Übertragsbits in den beschriebenen Ausdrücken nur von Aij = -1 herrühren, da y nicht von Übertragsbits aus Bitberechnungen niedrigerer Ordnung hervorgehen kann.
- Beim zweiten, dritten und vierten Zyklus der Anordnungsoperation empfangen die Zellen 12&sub0;&sub0;, 12&sub0;&sub1; und 12&sub0;&sub2; der ersten Spalte als Eingangssignal jeweils ein zweites lsb x , x bzw. x . Die Zelle 12&sub0;&sub0; erzeugt ein Kumulativsummenausgangssignal (A&sub0;&sub0;x + Übertragsbit), wobei der Übertrag von der vorhergehenden Berechnung von A&sub0;&sub0;x&sub0; herrührt, und rezirkuliert ein weiteres Übertragsbit. Die Zelle 12&sub0;&sub1; erzeugt nachfolgend als Ausgangssignal das zweite lsb von (A&sub0;&sub0;x + A&sub0;&sub1;x + Übertragsbit), wobei der Übertrag von der vorhergehenden Berechnung von (A&sub0;&sub0;x + A&sub0;&sub1;x ) herrührt. Dann erzeugt die Zelle 12&sub0;&sub2; das zweite lsb von (A&sub0;&sub0;x + A&sub0;&sub1;x + A&sub0;&sub2;x + Übertragsbit), wobei der Übertrag von der vorhergehenden Berechnung von (A&sub0;&sub0;x + A&sub0;&sub1;x + A&sub0;&sub2;x ) herrührt. Das Ausgangssignal der Zelle 12&sub0;&sub2; nach dem vierten Zyklus ist das zweite lsb y des nullten Produktvektorkoeffizienten Y&sub0;. Das Ausdehnen dieser Analyse wie zuvor zeigt, daß das Bit der b- ten Signifikanz y des i-ten Produktkoeffizienten Yi nach (i + b + 3) Operationszyklen aus der Zelle 12i2 hervorgeht, entsprechend Gleichung 4. Daraus ergibt sich implizit, daß Produktvektorkoeffizienten yi von der Anordnung 10 in bitserieller, wortparalleler, bitgestaffelter Weise hervorgehen, mit jeweils einem Zyklus Verzögerung zwischen der Ausgabe sowohl benachbarter Bits eines Koeffizienten als auch Bits gleicher Signifikanz benachbarter Wörter. Die Ausgangszeitsteuerung kann aus den schrägen oberen und unteren Seiten des Resultatparallelogramms 18 gefolgert werden. Die Anordnung 10 führt demgemäß die Berechnung
- nach Gleichung 2 aus.
- Aus der vorhergehenden Analyse ist ersichtlich, daß die Zeitstaffelung bzw. der Zeitversatz, der dem Eingangsvektor aufgeprägt ist, eine Akkumulierung von Termen zellenspaltenabwärts in aufeinanderfolgenden Zyklen ermöglicht. Das Produkt- oder Resultatparallelogramm 18 verschiebt sich tatsächlich um eine Zelle pro Zyklus abwärts durch die Anordnung 10, und Produktkoeffizienten treten unter lsb-Führung aus der Anordnung aus. Übertragsbits bleiben in den betreffenden Zellen, so daß sie sich tatsächlich in dem sich abwärts bewegenden Resultatparallelogramm 18 aufwärts fortpflanzen und damit Bits höherer Ordnung von Produktwörtern entstehen lassen. Es ist zu sehen, daß die Parallelogramme 14 und 18 keine physische Signifikanz haben, aber eine graphische Hilfe zum Verständnis der Anordnungsoperation geben.
- Die Funktion des Schutzbandes 16 ist folgende. In einer digitalen Arithmetikschaltung muß berücksichtigt werden, daß Ausgangsterme eine größere Bitlänge als Eingangsdaten haben können. In dem vorliegenden Fall ergibt sich jedes Ausgangswort bzw. jeder Produktmatrixkoeffizient yi aus der Summe von Produkten von Drei-Bit-Wörtern mit drei Koeffizienten, welche jeweils das Äquivalent von zwei Bits haben. Es kann gezeigt werden, daß die maximale Bitlänge eines Produktkoeffizienten Yi unter diesen Umständen sechs Bits beträgt. Die letzten drei Bits ergeben sich aus Übertragsbits von Berechnungen niedrigerer Ordnung. Das Schutzband 16 erzeugt drei Bits, welche das betreffende höchstsignifikante bzw. Vorzeichenbit reproduzieren, das jedem Datenwort Xj in der Anordnung 10 folgt, so daß die Eingangswortlänge auf das Maximum hiervon für Yi verlängert wird. Dies ermöglicht eine Vervollständigung der Berechnung aller Bits des Produktvektors , bevor irgend ein weiterer Vektor als Eingangssignal für eine nachfolgende Berechnung erscheint. Die Verwendung von Schutzbändern ist im einzelnen in Ref. 2 beschrieben.
- Nun wird auf Fig. 3 Bezug genommen, in welcher eine Anordnung von Signalspeichern 50 und 52 zum Zeitversatz von Anordnungseingangsdaten und zum Rückversatz von Ausgangsprodukttermen dargestellt ist. Die j-te Reihe der Anordnung 10 empfängt als Eingangssignal Datenbits über j Signalspeicher 50 (j = 0, 1 oder 2), von denen jeder eine Verzögerung von einem Verarbeitungszyklus bewirkt. Das Ausgangssignal der i-ten Spalte der Anordnung 10 wird über (3-i) Signalspeicher 52 (i = 0, 1, 2 oder 3) zugeführt. Die Speicher 50 und 52 sind denjenigen äquivalent, die mit Bezug auf Fig. 2 beschrieben wurden, und werden durch den gleichen zweiphasigen Takt gesteuert.
- Die Speicher 50 und 52 erzeugen einen Eingangszeitversatz und einen Ausgangsrückversatz, wie durch die Dreiecke 54 und 56 angedeutet ist. Man sieht, daß die Rückversatzverzögerung von (3-i) Taktzyklen, die dem Ausgangssignal der i-ten Spalte aufgeprägt wird, das Ausgangssignal der lsb y bis y in Synchronismus mit demjenigen von y bringt, und daß das gleiche auf die Bits höherer Ordnung zutrifft. Im allgemeinen erfordert eine N x M Anordnung von Zellen j Datenspeicher in Serie mit dem Eingang der j-ten Reihe und (M-i -1) Datenspeicher in Reihe mit dem Ausgang der i-ten Spalte, wobei j = 0 bis (N-1) und i = 0 bis (M-1).
- Fig. 3 zeigt auch ein zweckmäßiges Mittel zur Zuführung eines lsb-Kennzeichens zu allen Zellen der linken Spalte der Anordnung 10. Der lsb-Eingang der Zelle 12&sub0;&sub0; ist über einen Speicher 58 mit dem lsb-Eingang der Zelle 12&sub0;&sub1; verbunden, der seinerseits über einen weiteren Speicher 60 mit dem lsb- Eingang der Zelle 12&sub0;&sub2; verbunden ist. Der lsb-Ausgang der Anordnung verläuft über einen Speicher 62. Die Speicher 58, 60 und 62 sind äquivalent den Speichern 50 und 52. Ein lsb- Eingangskennzeichen zur Zelle 12&sub0;&sub0; bildet demgemäß ein Eingangssignal für die Zelle 12&sub0;&sub1; einen Zyklus später und zur Zelle 12&sub0;&sub2; zwei Zyklen später, und ist drei Zyklen später Ausgangssignal der Anordnung 10. Mit dieser Anordnung ist es nur notwendig, die Eingabe eines lsb zur oberen linken Zelle 12&sub0;&sub0; zu kennzeichnen.
- Während die Beschreibung zu den Fig. 1, 2 und 3 sich auf eine 3 x 4 Anordnung von Zellen bezieht, ist es klar, daß durch Vergrößerung der Zellenanzahl eine Anordnung beliebiger Größe aufgebaut werden kann. Allgemein kann eine N x M Anordnung aus NM Zellen 12 aufgebaut werden, um einen Vektor von N Koeffizienten mittels einer M x N Matrix zur Bildung eines Produktvektors von M Koeffizienten zu multiplizieren.
- Nunmehr wird auf Fig. 4 Bezug genommen, in welcher ein bitserieller Multiplizierer 70 zur Verwendung u. a. In Verbindung mit einer Anordnung wie beispielsweise der Anordnung 10 dargestellt ist. Der Multiplizierer 70 weist drei in Reihe geschaltete äquivalente Abschnitte 72&sub0;, 72&sub1; und 72&sub2; zur Multiplikation von Eingangsbinärzahlen mit dem niedrigst-, dem zweit- bzw. dem höchstsignifikanten Bit (lsb, ssb bzw. msb) einer Drei-Bit-Zahl auf. Jeder Multipliziererabschnitt 72 weist einen Multiplikanden- bzw. A-Eingang 74 auf, der über erste und zweite Signalspeicher 76 und 78 mit einem Ausgang 80 verbunden ist. In der Zeichnung sind Zusätze n = 0, 1 oder 2 zu Bezugszeichen 72, 74 etc. angefügt, um den Multipliziererabschnitt zu indentifizieren, zu welchem das betreffende Bezugszeichen gehört. In der folgenden Beschreibung ist der Zusatz angegeben, wenn auf ein besonderes Bezugszeichen Bezug genommen wird, jedoch weggelassen, wenn alle gleichartigen Bezugszeichen gemeint sind. Jeder Abschnitt weist außerdem einen Multiplikatorkoeffizienten- oder B-Eingang 82 auf, der mit einem ersten Anschluß 84 eines Zweiwegeschalters 86 verbunden ist, der seinerseits über einen Signalspeicher 86 mit einem B-Ausgang 90 verbunden ist. Eine Leitung 92 verbindet den Ausgang des Signalspeichers 88 mit einem zweiten Anschluß 94 des Schalters 86. Die Position des Schalters 86 wird durch das Signal auf einer Koeffizientenladeleitung 96 gesteuert, wie durch einen gestrichelten Leitungspfeil 98 angedeutet ist.
- Koeffizientenladesignale 1 und 0 sind mit dem Schalter 86 über Anschlüsse 84 bzw. 94 verbunden. Die Ausgangssignale der Signalspeicher 78 und 88 werden zu einem AND-Glied 100 zugeführt. Der Ausgang des AND-Glieds 100 wird zu einem Ein-Bit- Volladdierer 102 entweder direkt oder über einen Inverter 104 zugeführt, je nach der Stellung eines Zweiwegeschalters 106. Die Schalterposition wird durch ein Kennzeichensignal gesteuert, wie durch einen gestrichelten Leitungspfeil 108 angedeutet ist. Der Inverter 104 wird eingeschaltet, wenn das Kennzeichensignal 1 ist.
- Jeder Multipliziererabschnitt 72 weist einen Teilproduktsummen-(PPS)-Eingang 110 und einen lsb-Kennzeicheneingang 112 auf. Der PPS-Eingang 110 ist mit einem ersten Anschluß 114 eines Zweiwegeschalters 116 verbunden, der seinerseits als Eingang zu einem Signalspeicher 118 geschaltet ist. Der Ausgang des Signalspeichers 118 ist sowohl mit einem zweiten Anschluß 120 des Schalters 116 verbunden wie auch als Summeneingang Si zum Volladdierer 102 geschaltet. Der Schalter 116 ist über seinen ersten oder zweiten Anschluß 114 oder 120 angeschaltet, je nachdem, ob am Eingang 112 das lsb-Eingangskennzeichen 0 oder 1 ist. Die Steuerung der Position des Schalters 116 ist durch einen gestrichelten Leitungspfeil 121 angedeutet. Ein Übertragseingang bzw. Ci zum Volladierer 102 ist über einen Signalspeicher 124 mit einem Schalter 122 verbunden. Der Schalter 122 verbindet den Signalspeicher 124 entweder mit einem ersten Anschluß 126, der ein Kennzeichensignal erzeugt, oder mit einem zweiten Anschluß 128, der mit dem Übertragsausgang C&sub0; des Addierers 102 verbunden ist. Die Position des Schalters 122 wird, wie durch den gestrichelten Leitungspfeil 130 angedeutet ist, durch das lsb-Kennzeichensignal vom Eingang 112 nach Verzögerung durch einen Signalspeicher 132 gesteuert. Die lsb-Kennzeichenwerte 1 und 0 verbinden die Schalteranschlüsse 126 bzw. 128 mit dem Signalspeicher 124. Das lsb-Kennzeichensignal gelangt über einen zweiten Signalspeicher 134 zu einem Kennzeichenausgang 136. Jeder Abschnitt 72 weist einen Koeffizientenladeausgang 138 und einen PPS-Ausgang 140 auf, wobei der letztere mit dem S&sub0;- bzw. Summenausgang des Addierers 102 verbunden ist.
- Der Drei-Bit-Multiplizierer 70 arbeitet folgendermaßen. Er ist so ausgelegt, daß er einen "Schiebe-und-Addier-" Algorithmus durchführt, wie er von R. F. Lyon in "Two's Complement Pipeline Multipliers", IEEE Transactions on Communications, April 1976, S. 418 - 425 (Ref.3) vorgeschlagen ist. Ref. 3 beschreibt die Prozedur in arithmetischen Logiktermen zum Multiplizieren eines Paars von Zweierkomplement-Binärzahlen miteinander. Da die Theorie aus Ref. 3 ersichtlich ist, wird nur das grundsätzliche Verfahren angegeben. Die Regeln für die Multiplikation eines Paars von Zweierkomplementzahlen sind folgende:
- (1) der Multiplikand wird mit dem Multiplikator multipliziert, um ein entsprechendes Teilprodukt zur Summierung zu bilden;
- (2) jedes Teilprodukt wird auf ein entsprechendes msb-Vorzeichen erweitert, das in seiner Signifikanz um ein Bit größer als dasjenige ist, das durch Multiplizieren der msbs von Multiplikand und Multiplikator erzeugt wird, d. h. jedes Teilprodukt-Vorzeichenbit wird reproduziert;
- (3) das größte bzw. höchstsignifikante Teilprodukt (mspp) wird Einer-komplementiert;
- (4) zu dem mspp wird 1 addiert;
- (5) die Teilprodukte werden summiert;
- (6) Bits von niedrigerer Signifikanz als das lsb des mspp werden ignoriert, und
- (7) das Übertragsbit der Summierung der Teilprodukt-msbs wird ignoriert.
- Die obigen Regeln 1 bis 7 werden von dem Multiplizierer 70 wie folgt ausgeführt. Ein Drei-Bit-Multiplikatorkoeffizient wird in msb-führender Weise seriell in den B-Eingang 82&sub0; geladen. Das Signal auf der Koeffizientenladeleitung 96 wird auf 1 gesetzt, so daß die Zweiwegeschalter 86&sub0; bis 86&sub2; (wie nicht dargestellt) mit den betreffenden ersten Anschlüssen 84&sub0; bis 84&sub2; verbunden werden. Alle in Fig. 4 dargestellten Signalspeicher, wie beispielsweise die Signalspeicher 88&sub0; bis 88&sub2;, erzeugen eine Verzögerung um einen Taktzyklus. Die Signalspeicher werden, wie schon für die Anordnung 10 beschrieben, durch ein Zweiphasen-Taktsystem gesteuert. Die Betätigung dieses Taktes für drei Taktzyklen bringt das lsb, ssb und msb des Multiplikators in den Signalspeicher 88&sub0;, 88&sub1; bzw. 88&sub2; Das Signal auf der Koeffizientenladeleitung 96 wird dann auf 0 gesetzt, wodurch die Schalter 86&sub0; bis 86&sub2; auf die betreffenden zweiten Anschlüsse 94&sub0; bis 94&sub2; geschaltet werden. Die Betätigung des Systemtaktes zirkuliert anschließend jedes Multiplikatorbit bei jedem Taktzyklus über die Leitung 94 durch den betreffenden Signalspeicher 88 und versorgt so das relevante AND-Glied 100 wiederholt mit einem entsprechenden Multiplikatoreingangsbit.
- Der Multiplizierer 70 wird gemäß obiger Regel 3 durch Anlegen von Kennzeichensignalen 0, 0 bzw. 1 an die Schalter 106&sub0;, 106&sub1; und 106&sub2; voreingestellt. Dies schaltet lediglich den Inverter 104&sub2; zu, während die Inverter 104&sub0; und 104&sub1; abgetrennt bleiben. Dies entspricht der Inversion bzw. einer Komplementbildung des größten Teilprodukts, da der Multipliziererabschnitt 72&sub2; mit dem zuvor darin geladenen Multiplikator-msb multipliziert. Regel 4 wird ausgeführt, indem ständige Kennzeichensignale 0, 0 bzw. 1 auf die ersten Schalteranschlüsse 126&sub0;, 126&sub1; und 126&sub2; gelegt werden. Dies erzeugt ein Ci von 1 zum msb-Multipliziererabschnitt 72&sub2;, wenn das lsb-Kennzeichenausgangssignal des Signalspeichers 132&sub2; den Wert 0 hat. Alle Bitwerte in Signalspeichern, Addierern und AND- Gliedern sind anfänglich 0, und der Multiplizierer 70 ist betriebsbereit.
- Ein Mehrbit-Multiplikand wird bei führendem lsb bitseriell mit einem Bit pro Taktzyklus zum A-Eingang 74&sub0; eingegeben. Der PPS-Eingang 114&sub0; ist ständig auf 0 gesetzt. In Synchronismus mit dem lsb-Eingangssignal beim ersten Taktzyklus wird ein lsb-Kennzeichenwert 1 bei 112&sub0; eingegeben. Diese Bits werden bei 76&sub0; bzw. 132&sub0; gespeichert. Das lsb-Kennzeichen verbindet den Schalter 116&sub0; mit seinem zweiten Anschluß 120&sub0;, um die nachfolgende Rezirkulation des bei 118&sub0; gespeicherten Bits (anfänglich 0) und seines Eingangssignals als Si zum Addierer 102&sub0; zu bewirken. Das Ausgangssignal des AND-Glieds 100 und der bei 124&sub0; und 118&sub0; gespeicherten Bits sind zur Zeit t = 0 alle 0. Si, Ci und die Multiplikationsergebniseingänge zum Addierer 102&sub0; sind dann beim ersten Taktzyklus alle 0, und S&sub0; und C&sub0; für diesen Addierer sind ebenfalls 0.
- Beim zweiten Taktzyklus passiert das Multiplikanden-lsb zum Signalspeicher 78&sub0;. Der lsb-Kennzeichenwert 1 gelangt zum Signalspeicher 134&sub0;, der den Schalter 122&sub0; auf seinen ersten Anschluß 126&sub0; schaltet und so ein 0-Eingangsignalspeicher zum Signalspeicher 124&sub0; erzeugt. Der lsb-Kennzeichenwert am Eingang 112 hat auf 0 gewechselt und wird bei 132&sub0; gespeichert. Der Schalter 116&sub0; ist demgemäß auf seinem ersten Anschluß 114&sub0; geschaltet worden. Dadurch wird der PPS-Eingang 114&sub0; (ständig 0) mit dem Signalspeicher 118&sub0; verbunden, der den Wert 0 speichert. Wie beim ersten Taktzyklus sind alle Eingänge und Ausgänge des Addierers 102&sub0; auch 0. Der zweite Taktzyklus bewirkt auch die Eingabe des zweiten lsb oder ssb des Multiplikanden bei 74&sub0; und dessen Laden in den Signalspeicher 76&sub0;.
- Beim dritten Taktzyklus wird das Multiplikanden-lsb aus dem Speicher 78&sub0; herausgetaktet und gelangt zum Speicher 76&sub1; des zweiten Abschnitts, während es ein Eingangssignal zum AND- Glied 100&sub0; bildet. Der über eine Leitung 92&sub0; zum Speicher 88&sub0; rezirkulierte Wert 1 erzeugt ein zweites Eingangsbit für das AND-Glied. Das am Ausgang des AND-Glieds 100&sub0; gebildete Produkt gelangt direkt zum Addierer 102&sub0; unter Umgehung des Inverters 104&sub0; Der Addierer empfängt ein Summeneingangssignal Si das aus dem PPS-Eingangssignal bei 110&sub0; (ständig 0) besteht, das beim vorhergehenden Taktzyklus bei 118&sub0; gespeichert wurde. Ein Übertragseingangssignal Ci wird ebenfalls gleich dem beim vorhergehenden Zyklus bei 124&sub0; gespeicherten empfangen; d. h. C1 beim Taktzyklus 3 ist gleich wie C&sub0; = 0 beim Taktzyklus 2, wenn der lsb-Kennzeichenwert 1 den Schalter 122&sub0; auf seinem zweiten Anschluß 128&sub0; geschaltet hat. Da Si = PPS bei 110&sub0; = 0, Ci = C&sub0; = 0 beim Zyklus 2, ist das Ausgangssignal S&sub0; des Addierers 102&sub0; beim Zyklus 3 das Produkt des Multiplikanden-lsb und des 72&sub0;-Abschnitts-Multiplikatorbits 1, und C&sub0; = 0.
- Der dritte Taktzyklus bewirkt also die Aufgabe des Multiplikanden-ssb aus dem Speicher 76&sub0; zur Speicherung bei 78&sub0;, und das Multiplikanden-tsb (drittletztsignifikantes Bit) wird vom Speicher 76&sub0; empfangen. Jedes Multiplikandenbit und jeder lsb-Kennzeichenwert wird durch zwei Signalspeicher pro Multipliziererabschnitt 72 verzögert, während der Speicher 124 eine Verzögerung von Ci um einen Zyklus bewirkt. Dies stellt sicher, daß ein Übertragsbit stets einem Produktbit einen Zyklus später hinzuaddiert wird und demgemäß in seiner Bitsignifikanz eine Stufe höher steht. Jedoch wird ein Multiplikanden-lsb-Produkt aus einem früheren Zyklus mit einem 0- Übertragsbit zusammengefaßt. Hiergegen muß Regel 4 angewendet werden, und dies wird durch Setzen des Übertragskennzeichens auf 1 am ersten Schalteranschluß 126&sub2; im höchstsignifikanten Multipliziererabschnitt 72&sub2; bewerkstelligt. Übertragskennzeichen sind an den ersten Schalteranschlüssen 126&sub0; und 126&sub1; jeweils 0. Demgemäß wird zu dem Produkt des höchstsignifikanten Multiplikatorbits mit dem Multiplikanden-lsb auf Grund eines lsb-Kennzeichens von 1 am Schalter 122&sub2; einen Zyklus früher 1 addiert. Produkte von Multiplikatorbits niedrigerer Signifikanz mit dem Multiplikanden-lsb werden zu Ci-Werten hinzuaddiert, die durch 0-Übertragskennzeichen bereitgestellt werden. Dies erfüllt auch Regel 7, da in einer Reihe von multiplizierten Zahlen das lsb-Kennzeichen jeder Zahl das Übertragsbit aus der vorhergehenden Berechnung zur Bereitstellung des jeweiligen Ci übersteuert.
- Die Durchführung der Regeln 3, 4 und 7 wurde erwähnt. Die Durchführung der Regeln 1 bis 5 - Teilproduktbildung und Summierung - ergibt sich aus der vorhergehenden Beschreibung. Die Regeln 2 und 4 werden mittels der Kombinationen von Schalter 116 und Speicher 118 wie folgt ausgeführt: Der Speicher 118 enthält bei irgendeinem Taktzyklus entweder erstens den Inhalt des vorhergehenden Zyklus oder zweitens das PPS- Eingangssignal bei 114 des vorhergehenden Zyklus, je nachdem, ob das lsb-Kennzeichen am Eingang 112 des vorhergehenden Zyklus 1 oder 0 war. Die zweite Alternative bezieht sich auf die normale Teilproduktberechnung. Die erste Alternative entspricht jedoch einer Vorzeichenausdehnung eines Teilprodukts durch Replizieren seines msb. Darüberhinaus ist eine nach Bedarf wiederholte Replizierung vorgesehen, da ein lsb-Kennzeichen zwei Taktzyklen braucht, um eine Zelle vom Eingang 112 zum Ausgang 136 zu durchqueren, ein Teilprodukt von 114 nach 140 aber nur einen Taktzyklus. Demgemäß würde ein beispielsweise im Multiplikatorabschnitt 72&sub1; durch msb-Replikation vorzeichenerweitertes Teilprodukt die richtige Zeitlage haben, um im Abschnitt 72&sub2; ein zweites Vorzeichenerweiterungsbit zu erhalten. Dies erfüllt Regel 2.
- Des weiteren, zusätzlich zur Vorzeichenbit-Replikation, bedeutet die Verbindung des Schalters 116 mit dem zweiten Anschluß 120 während eines Zyklus, daß das gegenwärtige Teilprodukteingangsbit bei 110 verloren ist. Dieses Bit ist das lsb des nachfolgenden Teilprodukts, so daß sein Verlust die Regel 6 erfüllt.
- Es ist ersichtlich, daß der Multiplizierer 70 einen Multiplikanden beliebiger Bitlänge multipliziert. Darüberhinaus können Multiplikatoren beliebiger Bitlänge durch Einsatz einer entsprechenden Anzahl von Multipliziererabschnitten 72 verwendet werden.
- Damit die Tätigkeit des Multiplizierers 70 besser verständlich ist, gibt Tafel 1 Werte der Parameter Ain, Lin LSBin, Pin, Sie, Ci, S&sub0; und C&sub0; für zehn aufeinanderfolgende Arbeitszyklen an. Lin ist das Eingangsbit zu jedem Signalspeicher 118 von jedem Schalter 116, und Pin ist das Produktbit an jedem Schalter 106, das dem Addierer 102 eingegeben wird. Die anderen Parameter sind wie oben definiert und in Fig. 4 gezeigt. Tafel 1 zeigt den Multiplizierer 70 bei der Berechnung aufeinanderfolgender Zweierkomplementprodukte (1) 1100 x 101, (2) 1110 x 101 und (3) 00 x 101; das Produkt (1) ist dezimal -4 x -3, und das Resultat 0011 bzw. +12 wird durch die Werte von S&sub0; im Abschnitt 72&sub2; bei den Zyklen 6 bis 10 gegeben. Die Resultate der Produkte (2) und (3) (nicht dargestellt) würden durch S&sub0; im Abschnitt 72&sub2; bei den Zyklen 11 bis 14 bzw. 15 bis 18 gegeben.
- Nunmehr wird auf Fig. 5 Bezug genommen, in welcher ein weiterer Prozessor 150 nach der Erfindung dargestellt ist, der für die Durchführung des Winograd-Fourier-Transformationsalgorithmus (WFTA) ausgelegt ist. Der Prozessor 150 umfaßt zwei N x M Anordnungen 152 und 154 zusammen mit zwei M x N Anordnungen 156 und 158, wobei N> M ist. Jede der Anordnungen 152 bis 158 ist ähnlich der Anordnung 10.
- Bitserielle Multiplizierer 160 und 162 empfangen jeweils M Ausgangsprodukte von den Anordnungen 152 und 154 und multiplizieren sie mit einer Gruppe gespeicherter Koeffizienten zur Erzeugung von M Eingangssignalen zu den Anordnungen 156 und 158. Die Multiplizierer 160 und 162 haben M Kanäle 164&sub0; bis 164M-1 bzw. 166&sub0; bis 166M-1, von denen jeweils nur die zwei ersten und der letzte Kanal dargestellt sind. Die entsprechenden Multiplikatorkoeffizienten in jedem der Kanäle 164 bzw. 166 können entweder reell oder imaginär, jedoch nicht komplex sein. Alle Koeffizienten sind auf gleiche Länge gebracht, um die Durchgangszeitsteuerung beizubehalten. Die Kanäle 164&sub0;, 164M-1 , 166&sub0; und 166M-1 enthalten beim vorliegenden Beispiel reelle Koeffizienten und die Kanäle 164&sub1; und 166&sub1; imaginäre Koeffizienten. Jeder der Kanäle 164 und 166 ist ein bitserieller Multiplizierer ähnlich demjenigen nach Fig. 4, wobei jedoch die Anzahl der Multipliziererabschnitte gleich der Anzahl von Koeffizientenbits ist.
- Die Anordnungen 152 und 156 bilden zusammen mit dem Multiplizierer 160 einen sogenannten reellen Verarbeitungskanal, angedeutet durch die gestrichelte Linie 170, zur Erzeugung reeller Ausgangskoeffizienten. In ähnlicher Weise bilden die Anordnungen 154 und 158 mit dem Multiplizierer 162 einen imaginären Verarbeitungskanal, angedeutet durch die gestrichelte Linie 172. Wie durch die Pfeile 174&sub0;, 174M-1, und 176&sub0; 176M-1 angedeutet ist, erzeugen reelle Multiplikatorkoeffizienten Produktausgangssignale, die im gleichen reellen oder imaginären Verarbeitungkanal 170 bzw. 172 verbleiben. Schrägpfeile 174&sub1; und 176&sub1; stellen eine Multiplikation mit imaginären Koeffizienten und entsprechenden Transfer von Produkten zwischen den Kanälen dar. N entsprechende Datenworteingänge werden den Anordnungen 152 und 154 über entsprechende zeitversetzende Signalspeicheranordnungen zugeführt, die durch Dreiecke 180 und 182 angedeutet sind. N entsprechende Produktwortausgänge passieren bitseriell von den Anordnungen 156 und 158 zu Rückversatz-Signalspeicheranordnungen, die durch umgekehrte Dreiecke 184 und 186 angedeutet sind. Die Signalspeicheranordnungen 180 bis 186 sind ähnlich denjenigen, die mit Bezug auf Fig. 3 beschrieben wurden, mit der Ausnahme, daß ein Maximum von (N-1) versetzende Speicher und (M-1) rückversetzende Speicher vorgesehen sind.
- Die Anordnung nach Fig. 5 führt den WFTA folgendermaßen durch. Dieser Fourier-Transformationsalgorithmus wird von S. Winograd in "On Computing the Discrete Fourier Transform", Mathematics and Computation, 1978, 32, S. 175 - 199 (Ref. 4) beschrieben. Er stellt eine diskrete Fourier-Transformation (DFT), ausgedrückt durch (Y&sub0;, Y&sub1;,....YN-1) einer Folge von N komplexen Datenpunkten (y&sub0;, y&sub1;,.... yN-1) her, die geschrieben werden kann in der Form:
- wobei:
- der Vektor von N Koeffizienten Y&sub0; bis YN-1 ist,
- der Vektor von N Koeffizienten oder Datenpunkten y&sub0; bis YN-1 ist,
- A eine M x N Matrix ist,
- C eine N x M Matrix ist,
- B ein vorberechnetes Produkt ist, ausgedrückt als eine Gruppe M festen Koeffizienten, von denen jeder entweder real oder imaginär, aber nicht komplex ist.
- Die Durchführung des WFTA unter Anwendung numerischer Techniken besteht in folgenden Schritten:
- (1) Multiplizieren des Vektors aus N komplexen Eingangsdatenwerten mit einer M x N Matrix A nur mit den Koeffizienten +1, -1 oder 0, was M komplexe erste Produktwerte ergibt;
- (2) Multiplizieren jedes Produkts aus (1) mit einem entsprechenden Koeffizienten, der entweder reell oder imaginär ist, zur Bildung von M komplexen zweiten Produktwerten;
- (3) Multiplizieren der zweiten Produkte aus (2) mit einer N x M Matrix C mit den Koeffizienten +1, -1 oder 0, um dritte Produkte zu ergeben, die aus N komplexen Ausgangstermen bestehen, welche die DFT ergeben.
- Jedes Datenwort bzw. jeder Koeffizient von wird in reelle und imaginäre Teile zur Verarbeitung im reellen bzw. imaginären Kanal 170 bzw. 172 aufgeteilt. Jeder Wortteil ist in Synchronismus und lsb-führend Eingangssignal zur Speicheranordnung 180 bzw. 182 (je nachdem), welche den notwendigen Zeitversatz erzeugt, wie mit Bezug auf Fig. 3 beschrieben wurde. Die zeitversetzten Daten werden dann in der Anordnung 152 und 154 mit der A-Matrix multipliziert, wie vorstehend mit Bezug auf Fig. 1 beschrieben wurde. Erste Produktterme bilden Ausgänge der Anordnungen 152 und 154 in wortparallelem, bitseriellem, lsb-führendem Format, wobei der Datenversatz beibehalten wird. Produktwortbits und Kennzeichenwerte, welche die lsb-Position anzeigen, werden von den Zellen der unteren Anordnungsreihe (Zellen 12&sub0;&sub2; bis 12&sub3;&sub2; in Fig. 1) zu den entsprechenden Kanälen 164&sub0; bis 164M-1 bzw. 166&sub0; bis 166M-1 des Multiplizierers 160 bzw. 162 weitergegeben, je nachdem. Jede Anordnungsspalte ist dem gemäß einem entsprechendem Multipliziererkanal zugeordnet.
- Jeder Multipliziererkanal multipliziert den betreffenden bitseriellen Erstproduktstrom-Eingang mit einem vorgeladenen Koeffizienten, wie mit Bezug auf Fig. 4 beschrieben wurde. Wenn einem Kanal des einen oder anderen Multiplizierers ein imaginärer Multiplikatorkoeffizient zugeordnet ist, wird sein Ausgangssignal, wie vorstehend beschrieben, quer zu dem benachbarten Verarbeitungskanal zugeführt. Im übrigen verbleiben die Multipliziererkanalprodukte im gleichen Verarbeitungskanal. In jedem Fall wird der Zweitproduktausgang vom i- ten Kanal des Multiplizierers 160 bzw. 162 zur i-ten Spalte der Anordnung 156 bzw. 158 zugeführt, je nachdem. Beide i-ten Kanäle der beiden Multiplizierer sind gleichermaßen mit der relevanten Anordnung für alle i = 0 bis M-1 gekuppelt, d. h. entweder beide oder keiner der i-ten Multipliziererkanäle sind mit einem benachbarten Verarbeitungskanal querverbunden.
- Ausgangsproduktbits lsb-Kennzeichenwerte gelangen zu den Anordnungen 156 und 158, die reele bzw. imaginäre Kanalproduktwörter mit der C-Matrix multiplizieren, wie vorstehend für die Matrix A beschrieben wurde. Die Ausgänge der Anordnungen 156 und 158 werden in den Speicheranordnungen 184 bzw. 186 rückversetzt. Dies erzeugt N dritte Produktterme für jede Anordnung in bitserieller und lsb-führender Weise und in Synchronismus. Demgemäß erzeugen die Ausgänge der Speicheranordnungen 184 bzw. 186 die reellen und imaginären Teile der DFT bzw. Y&sub0; bis YN-1, wobei die Werte Yi aus den i-ten Reihen der Anordnungen 156 und 158 hervorgehen.
- Während Fig. 5 sich auf eine zweikanalige Einrichtung bezieht, besteht eine alternative Möglichkeit in der Anordnung eines einzigen Kanals zur Verarbeitung aller reellen Daten mit allen reellen Multiplikatorkoeffizienten. Eine solche Einrichtung kann eine Cosinus-Transformation, beispielsweise zum Komprimieren von Fernsehsignalen, durchführen. Wie gesagt worden ist, können Matrix-Vektor-Multipliziereranordnungen beliebiger Größe lediglich durch Anwendung einer rechteckigen Anordnung mit der entsprechenden Anzahl von Zellen aufgebaut werden. Jedoch ist Standardisierung ein wichtiger Gesichtspunkt bei der Auslegung integrierter Schaltkreise. Es ist wünschenswert, möglichst wenige Standardkomponenten zu haben. Insbesondere wäre es wertvoll, große Anordnungen aus standardmäßigen kleinen Anordnungen in Form von integrierten Schaltkreisen oder Chips aufbauen zu können. Dies wird nunmehr beschrieben.
- Es ist eine Eigenschaft des WFTA (sei Ref. 4), daß längere Transformationen aus einer Gruppe von Algorithmen für kürzere Transformationen erzeugt werden können. Wenn WFTAs für N&sub1; und N&sub2; Datenpunkte gegeben sind, wobei N&sub1; und N&sub2; relativ groß sind, hat ein WFTA von N&sub1;N&sub2; Punkten die Form:
- worin ein Kronecker-Produkt darstellt und die Tiefzahlen 1 bzw. 2 zu A, B bzw. C die Zuordnung zum N&sub1;- bzw. N&sub2;-Punktalgorithmus anzeigt.
- Gleichung 6 hat die gleiche Form wie Gleichung 5, mit der Ausnahme, daß:
- 1) A ersetzt ist durch (A&sub2; A&sub1;),
- 2) B ersetzt ist durch (B&sub2; B&sub1;), und
- 3) C ersetzt ist durch (C&sub2; C&sub1;)
- Der Ersatz von B erfordert lediglich eine größere Multiplikatorkoeffizientengruppe, d. h. M&sub1;M&sub2; anstelle von M Koeffizienten.
- Der Ersatz von A und C erzeugt eine (M&sub1;M&sub2; x N&sub1;N&sub2;) Matrix bzw. eine (N&sub1;N&sub2; x M&sub1;M&sub2;) Matrix. Beispielsweise ist das Kronecker- Produkt E F von zwei Matritzen E und F mit Koeffizienten (i = 0 bis N&sub1;-1, j = 0 bis M&sub1;-1), fij (i = 0 bis N&sub2;-1, j = 0 bis M&sub2;-1), mit E als innersten Faktor, eine Matrix K, die gegeben ist durch:
- Aus Gleichung 7 ist ersichtlich, daß K durch Replizieren der innersten Faktormatrix E erzeugt wird, wobei sie in jedem Fall mit dem entsprechenden Koeffizienten fij multipliziert wird und in K plaziert wird, wie durch die Indizes i und j von fij angedeutet ist. Dementsprechend können mit Transformationen bzw. Matrizen und Multiplikatorkoeffizienten für N&sub1; und N&sub2; Punkte eine Transformation für N&sub1;N&sub2; Punkte konstruiert werden. In jedem Fall haben die A- und C-Matritzen beide Koeffizienten von +1, -1 oder 0 oder können auf diese Form modifiziert werden.
- Die 3 x 4 Anordnung 10 nach Fig. 1 (entsprechend der 4 x 3 Matrix A) kann repliziert werden, um Unteranordnungen zum Zwecke der Schaffung eines größeren Matrix-Vektor-Multiplizierers herzustellen. Die resultierende Anordnung von Unteranordnungen würde der Transponenten von K in Gleichung 7 entsprechen. Jedoch ist es notwendig, dafür zu sorgen, daß jede verschachtelte oder replizierte Unteranordnung mit dem geeigneten Koeffizienten multipliziert wird, um in jedem Fall das Äquivalent von fijE zu bilden. Dies kann zweckmäßigerweise durch eine Modifizierung jeder in Fig. 6 gezeigten Zelle erreicht werden. Es ist eine Zelle 200 dargestellt, die alle Merkmale der Zelle 12 in Fig. 2 und zusätzlich zwei weitere Ein-Bit-Eingänge 201 und 202 von oben aufweist. Diese Eingänge 201 und 202 sind mit Bits (u,v) voreingestellt, welche den Koeffizienten 0, 1 oder -1 darstellen, mit welchem das Unteranordnungsausgangssignal zu multiplizieren ist. Die Koeffizienten 0, 1 und -1 werden durch Werte (0,0), (0,1) bzw. (1,0) von (u,v) dargestellt. Der Zellenmultiplikatorkoeffizent wird dann A*ij wobei A*ij = Aij (u,v). Die Zellenoperation ist dann äquivalent derjenigen, wie zuvor mit A*ij beschrieben, was Aij ersetzt, und da sowohl A*ij als auch Aij die Werte +1, -1 oder 0 haben, entspricht dies lediglich einer Koeffizientenumordnung.
- Eine Anordnung von Zellen 200 eignet sich zur Verwendung als Aufbaublock oder Unteranordnung zur Herstellung großer Matrix-Vektor-Multiplizierer für Fourier-Transformations- Berechnungen, wie zuvor angedeutet. Jedoch ist anzumerken, daß die Eingabe zu einer Anordnung solcher Unteranordnungen nicht so geradewegs wie für eine Anordnung 10 erfolgt. Eine mehrdimensionale Abbildung von Daten- und Resultatwörtern ist erforderlich in einer Weise, die für die Eingangs- und Ausgangssequenzen unterschiedlich ist. Die Abbildungen werden paarweise ausgeführt, wobei ein geeignetes Paar eine lexikographische Abbildung und eine Chinesisches Resttheorem-Abbildung ist. Formen von Abbildungen sind von C. S. Burrus in IEEE Trans. 1977, ASSP-25, S. 239-242, diskutiert. Der Effekt einer solchen Abbildung liegt darin, ein erstes Schema für die Eingabe von Datenwörtern in die Anordnung der Unteranordnungen und ein zweites Schema zu schaffen, das anzeigt, wie Resultatwörter im Anordnungsausgang angeordnet sind. Die Anordnung 10 wurde für die Eingabe eines Datenworts Xj zur Reihe j und die Ausgabe von Yi aus der Spalte i ausgelegt. Das Abbildungserfornis ändert dies jedoch.
- Für eine 12 x 12 Anordnung von 3 x 4 Unteranordnungen ergibt eine lexikographische Abbildung für den Eingang zur Anordnung Reihen 0 bis 11, X&sub0;, X&sub3;, X&sub6;, X&sub9;, X&sub4;, X&sub7;, X&sub1;&sub0;, X&sub1;, X&sub8;, X&sub1;&sub1;, X&sub2; und X&sub5;. Das Chinesische Resttheorem gibt das Ausgangsschema Y&sub0;, Y&sub9;, Y&sub6;, Y&sub3;, Y&sub4;, Y&sub1;, Y&sub1;&sub0;, Y&sub7;, Y&sub8;, Y&sub5;, Y&sub2;, Y&sub1;&sub1; für Wortausgänge aus den Anordnungsspalten 0 bis 11. Die Umordnung dieser Eingangs/Ausgangsschemen dafür, daß Wörter X&sub0; bis X&sub1;&sub1; und Y&sub0; bis Y&sub1;&sub1; parallel erscheinen, erfordert lediglich eine Umordnung der Leitungen zu und von den Versatz- und Rückversatzspeichern.
- Nunmehr wird auf Fig. 7 Bezug genommen, in welcher eine 12 x 12 Matrix-Vektor-Multipliziereranordnung 210 gezeigt ist, die aus neun 4 x 4 bzw. A&sub4; Unteranordnungen 212&sub0;&sub0; bis 212&sub3;&sub3; aufgebaut ist. Eine Datenversatzanordnung 214 ist durch drei dreieckige Datenspeicheranordnungen 216&sub1; bis 216&sub2; und drei weitere A&sub4; Unteranordnungen 212&sub1; bis 212&sub3; hergestellt. Der Datendurchsatz ist durch horizontale Pfeile, die beispielsweise 218, angedeutet und die Kommunikation von berechneten Resultaten abwärts und aus der Anordnung 210 heraus ist durch vertikale Pfeile, wie beispielsweise 220 angedeutet.
- Die A&sub4; Unteranordnungen 212 führen jeweils eine Vektor-Multiplikation mit einer 4 x 4 Matrix &sub4; aus, die für eine Vier- Punkt-DFT geeignet ist, wobei das Transponentenhochzeichen anzeigt, daß die Matrix &sub4; Koeffizienten aufweist, die mit Bezug auf die Multiplikatorkoeffizienten jeder Unteranordnung transponiert sind. &sub4; ist in Ref. 4 gegeben durch:
- Gleichung 8 ergibt die Zellenkoeffizientpositionen in A&sub4; durch Transposition:
- Ref. 4 ergibt außerdem &sub3; eine 3 x 3 Matrix für eine drei Punkt-DFT:
- Das Transponieren von Gleichung 8 ergibt die Positionierung der A&sub3; Koeffizienten:
- Wie in Gleichung 6 angedeutet ist, wird die Produktmatrix &sub1;&sub2; durch Replizieren der Matrix &sub4;und Multiplizieren jeder Replikation mit und Plazieren gemäß einem entsprechenden Koeffizienten von &sub3;. Die resultierende Unteranordnung A&sub1;&sub2; ist die Transponente von &sub1;&sub2; und ist durch Replizieren von A&sub4; mit positionierenden und multiplikativen Koeffizienten aus Gleichung 9 gegeben. Es ist ersichtlich, daß die Anordnung 210 in dieser Weise aufgebaut ist. Multiplikative Koeffizienten werden durch (u,v) Zelleneingänge ausgeführt, wie oben beschrieben.
- Die dreieckigen Speicheranordnungen 216&sub1; bis 216&sub3; sind äquvivalent denjenigen, wie sie mit Bezug auf Fig. 5 beschrieben wurden. Die A&sub4;-Anordnungen 212&sub1; bis 212&sub3; erzeugen die notwendigen zusätzlichen Verzögerungen zwischen den Eingängen zu aufeinanderfolgenden Reihen von Unteranordnungen. Die Multiplikation mit 0 oder dem (u, v) Eingang von (0,0) zusammen mit 0 verbundenen Unternordnungs-Kummulativsummeneigängen macht eine Unteranordnung äquivalent einer Anordnung von Signalspeichern, wobei ein Signalspeicher pro Zelle für den Transfer von Eingangsdatenbits nach rechts vorhanden ist.
- Dies könnte natürlich als Anordnung von Signalspeichern an Stelle von Verarbeitungszellen sowohl in der Zeitversatzschaltung als auch in der Anordnung 210 realisiert werden. Jedoch würde dies eine unnötige dritte Einrichtung erfordern, wo hingegen die Ausführungsform nach Fig. 7 mit nur zwei Einrichtungsformen realisiert ist.
- Für die Zwecke von Fig. 7 sei angenommen, daß jede A&sub4;- Unteranordnung 212&sub0;&sub0; bis 212&sub3;&sub3; eine Kette von lsb-Kennzeichenspeichern (nicht dargestellt) umfaßt, die äquivalent den Speichern 58 in Fig. 3 sind. Ein lsb-Kennzeicheneingang 222 ist zur oberen linken Unteranordnung 212&sub0;&sub0; vorgesehen, und es sind Verbindungen 224 und 226 für den Weitertransfer des Kennzeichens entlang der linken Spalte der Anordnung 210 abwärts vorgesehen. Jede Unteranordnung 212ij gibt das lsb-Kennzeichen nach rechts zur benachbarten Unteranordnung 212(i+1)j weiter, wie beispielsweise durch die lsb- Kennzeichenverbindung 228 zwischen den Unteranordnungen 212&sub0;&sub1; und 212&sub0;&sub2; dargestellt ist. Es ist jedoch unnötig, lsb- Kennzeichenausgänge zwischen Unteranordnungsreihen für Unteranordnungen in der mittleren und rechten Spalte der Anordnung 210 anzuschließen. Wie beispielsweise bei 230 angedeutet ist, bleiben solche Ausgänge unverbunden. Tafel 1: Aufeinanderfolgende Logikwerte an Punkten im bitseriellen Multiplizierer über zehn Arbeitszyklen Beispiel sukzessiver Produktbildung Produkt (1): gefolgt von Produkt (2): gefolgt von Produkt (3): Multiplikand 101 ist bei 86&sub0;, 86&sub1; und 86&sub2; vorgespeichert Zykl. Nr. Sektion
- Anmerkungen:
- a) Lin ist das Eingangsbit zum Speicher 118 vom Schalter 116.
- b) Pin ist das Produktbit am Schalter 106 als Eingang zum Addierer vom AND-Glied 100 direkt oder gegebenenfalls über Inverter 104.
- c) Das Resultat von Produkt 1, 0011 (= +12 mit lsb und zweitem lsb gekürzt) wird als S&sub0; im Abschnitt 722 bei den Zyklen 6, 7, 8, und 9 erzeugt.
- d) Die Resultate der Produkte 2 und 3 (nicht dargestellt) würden als S&sub0; im Abschnitt 72&sub2; in den Zyklen 11 bis 14 bzw. 15 bis 18 erzeugt.
Claims (6)
1. Digitaler Datenprozessor zum Multiplizieren eines
Eingangsvektors mit Mehrbit-Koeffizienten mit einer Matrix ( )
mit den Koeffizienten +1, -1 und 0 zum Erhalt eines
Produktvektors, wobei der Prozessor aufweist:
a) eine Anordnung (10) von Verarbeitungszellen (12) , die
jeweils so angeordnet sind, daß sie taktgesteuert eine
arithmetische Zweier-Komplement-Operation durchführen, welche
umfaßt:
i) Empfang von Übertrags-, Kumulativsummen- und
Dateneingangsbits,
ii) Erzeugen von Übertrags- und Kumulativsummenbits
entsprechend der Addition der Eingangsübertrags- und
-Kumulativsummenbits zu einem ein Datenbit umfassenden
Produkt, und
iii) Ausgabe des Datenbits und der erzeugten Übertrags-
und Kumulativsummenbits,
b) Verbindungsleitungen (22, 24, 28, 30, 32, 34), welche jede
Zelle (12) mit ihren Reihen- und Spaltennachbarzellen
verbinden und Pfade zur Reihenweitergabe von
Vektorkoeffizientenbits und zur spaltenabwärtsweisen kaskadenartigen
Kumulativsummenerzeugung herstellt,
c) Dateneingabemittel (54) zur taktgesteuerten Eingabe von
Vektorkoeffizienten in entsprechende Reihen, und
d) Taktmittel zur zyklischen Aktivierung der Zellen (12) und
Dateneingabemittel (54) zur Herstellung zyklischer Biteingabe
und Zellenoperation im Sinne einer spaltenabwärts erfolgenden
kaskadenartigen Kumulativsummenerzeugung,
dadurch gekennzeichnet, daß jede Zelle (12ij) einem
entsprechenden Multiplikativ-Matrixkoeffizienten ( jj)
zugeordnet ist, der in der Anordnung (10) entsprechend dem
Transponenten (A) der Multiplikantenmatrix ( ) gelegen ist,
daß die Zellenoperation eine Übertragsbit-Rezirkulation und
Produktbildung unter Einbeziehung einer Multiplikation des
Dateneingangsbits mit dem entsprechenden
Zellenkoeffizienten (Aij) umfaßt, die Dateneingabemittel (54) fur eine
Vektoreingabe in die Zellen (12&sub0;&sub0; bis 12&sub0;&sub2;) der ersten Spalte in
wortparalleler, bitserieller und zeitversetzter Weise
ausgelegt sind, um Produktvektorwörter zu erzeugen, die bitseriell
von entsprechenden Zellen (12&sub0;&sub2; bis 12&sub3;&sub2;) der letzten Reihe
in Form von Kumulativsummenbits ausgegeben werden, die in
zugeordneten Anordnungsspalten (z.B. A&sub0;&sub0; bis A&sub0;&sub2;) abwärts
kaskadenartig akkumuliert sind, und dar jede Zelle (12ij) für
eine Voreinstellung von Übertragsbits für Berechnungen des
niedrigstsignifikaten Bits (lsb) auf 1 oder 0 ausgelegt ist,
jenachdem, ob der jener Zelle zugeordnete
Matrixkoeffizient (Ajj) -1 ist oder nicht.
2. Digitaler Datenprozessor nach Anspruch 1, dadurch
gekennzeichnet, daß jede Zelle für die Aufnahme eines
entsprechenden Eingabeanze igeb its synchron mit jedem Vektoreingabebit
ausgelegt ist, wobei das Anzeigebit anzeigt, ob das
entsprechende Eingabebit ein niedrigstsignifikantes Bit ist, und
daß jede Zelle (12) für eine Substitution eines
voreingestellten Übertragsbits für ein rezirkuliertes Übertragsbit in
Abhängigkeit von einem Niedrigstsignifikanz-Anzeigebit
ausgelegt ist.
3. Digitaler Datenprozessor nach Anspruch 2, dadurch
gekennzeichnet, daß die Zellen (200) für eine Aufnahme zweier
zusätzlicher Eingabebits, welche einen Anordnungsausgangs-
Multiplikatorkoeffizienten von +1, -1 oder 0 anzeigen, und
für eine Erzeugung eines Anordnungsausgangssignals ausgelegt
sind, das gleich dem Produktvektor multipliziert mit jenem
Koeffizienten ist.
4. Digitale Datenprozessoradnung (210, Fig. 7) zur
Multiplikation eines Vektors mit einer zusammengesetzten Matrix,
welche das Produkt einer ersten Matrix ( &sub4;) und einer zweiten
Matrix ( &sub3;) darstellt, die jeweils die Koeffizienten +1, -1,
0 haben, dadurch gekennzeichnet, daß
die Prozessoradnordnung (210) eine Anordnung von
Unteranordnungsprozessoren (212) umfaßt, die jeweils gemäß einem
Prozessor nach einem der Ansprüche 1 bis 3 ausgebildldet sind,
a) Zwischenverbindungsleitungen (218, 220) die Zellenreihen
und Zellenspalten benachbarter Unteranordnungsprozessoren
(212) zur Bildung von Reihen und Spalten der
Prozessoranordnung (210) zur Weitergabe von Datenbits und zur Akkumulation
von Summenbits miteinander verbinden,
b) Anzeigeleitungen (224, 226, 228) zur Weitergabe von
Anzeigebits zwischen benachbarten
Unteranordnungsprozessoren (212) Vorgesehen sind, und
c) jeder Unteranordnungsprozessor (212ij) für ein
Multiplizieren mit der ersten Matrix ( &sub4;) und auch mit einem
entsprechenden Multiplikatorkoeffizienten (Aij) ausgelegt ist,
der gleich +1, -1 oder 0 ist und einen Koeffizienten der
zweiten Matrix ( &sub3;) darstellt, wobei die
Multiplikatorkoeffizienten (z.B Aij) den entsprechenden
Unteranordnungsprozessoren (212&sub0;&sub0; bis 212&sub2;&sub2;) zugeordnet sind, die in der
Anordnung (210) entsprechend dem Transponenten (A&sub3;) der
zweiten Matrix ( &sub3;) positioniert sind.
5. Digitale Datenprozessoradnordnung (150, Fig. 5) zur
Durchführung einer Kosinustransformation, die zwei digitale
Datenprozessoren nach einem der Ansprüche 1 bis 3 umfaßt,
gekennzeichnet durch:
a) eine erste Zellenanordnung (152) mit N Reihen und M
Spalten,
b) Verbindungen der Anordnungsspalten mit entsprechenden
Kanälen (z.B. 164&sub0;) eines M-Kanal-Multiplizierers (160),
wobei jeder Kanal (z.B. 146&sub0;) dafür ausgelegt ist, ein
bitserielles Eingangssignal zu empfangen, dieses mit einem
Koeffizienten zu multiplizieren und dadurch ein bitserielles
Ausgangssignal zu erzeugen,
c) eine zweite Zellenanordnung (156) mit M Reihen und N
Spalten, die aber im übrigen äquivalent zur vor genannten
Zellenanordnung (158) ist, und
d) Verbindungen (z.B. 174&sub0;) zur Verbindung mindestens einiger
Multipliziererkanalausgänge mit entsprechenden
Reiheneingängen der zweiten Zellenanordnung (156).
6. Digitale Datenprozessoranordnung (150, Fig. 5) zur
Ausführung der Winograd-Fourier-Transformation unter Verwendung von
vier digitalen Datenprozessoren nach einem der Ansprüche 1
bis 3, gekennzeichnet durch:
a) eine erste Eingabezellenanordnung (152) mit N Reihen und M
Spalten und mit ersten zugeordneten
Dateneingabemitteln (180)
b) eine zweite Eingabezellenanordnung (154) und zweiten
zugeordneten Dateneingabemitteln (182) gleicher Form wie
diejenigen der ersten Eingabezellenanordnung (152),
c) erste und zweite Ausgabezellenanordnungen (156, 158) mit M
Reihen und N Spalten und im übrigen in zu den
Eingabezellenanordnungen (152, 154) äquivalenter Form, und
d) erste und zweite M-Kanal-Multiplizierer (160, 162), wobei
jeder Kanal (164&sub0;, 166&sub0;) dafür ausgelegt ist, ein
bitserielles Ausgangssignal durch Multiplizieren eines
bitseriellen Eingangssignals mit einem Koeffizienten zu
erzeugen, der entweder real oder imaginär, aber nicht beides ist,
wobei
i) die ersten und zweiten Elngabeanordnungen (152, 154)
so geschaltet sind, daß sie Eingangssignale an die
ersten und zweiten M-Kanal-Multiplizierer (160, 162)
zuführen und jede Anordnungsspalte mit einem
entsprechenden Kanal (z.B. 164&sub0;) gekoppelt ist,
ii) die Ausgangssignale der Kanäle (z.B. 164&sub0;, 166&sub0;) der
ersten und zweiten M-Kanal-Multiplizierer (160, 162)
realen Koeffizienten zugeordnet sind, die mit Eingängen
der ersten und zweiten Ausgabezellenanordnungen (156,
158) verbunden sind und
iii) die Ausgangssignale von Kanälen (z.B. 174&sub0;, 176&sub0;)
der ersten und zweiten M-Kanal-Multiplizierer (160, 162)
imaginären Koeffizienten zugeordnet sind, die mit
Eingängen der zweiten bzw. ersten
Ausgabezellenanordnung (158, 156) verbunden sind.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB848431925A GB8431925D0 (en) | 1984-12-18 | 1984-12-18 | Digital data processor |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE3586201D1 DE3586201D1 (de) | 1992-07-16 |
| DE3586201T2 true DE3586201T2 (de) | 1993-02-11 |
Family
ID=10571359
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE8585308310T Expired - Fee Related DE3586201T2 (de) | 1984-12-18 | 1985-11-14 | Digitaler datenprozessor fuer matrix-vektor-multiplikation. |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US4777614A (de) |
| EP (1) | EP0186958B1 (de) |
| JP (1) | JPS61145683A (de) |
| CA (1) | CA1241756A (de) |
| DE (1) | DE3586201T2 (de) |
| GB (2) | GB8431925D0 (de) |
Families Citing this family (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| US4829585A (en) * | 1987-05-04 | 1989-05-09 | Polaroid Corporation | Electronic image processing circuit |
| US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
| JP2690932B2 (ja) * | 1988-03-18 | 1997-12-17 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびディシタル信号処理プロセッサシステム |
| US4933639A (en) * | 1989-02-13 | 1990-06-12 | The Board Of Regents, The University Of Texas System | Axis translator for magnetic resonance imaging |
| GB8910960D0 (en) * | 1989-05-12 | 1989-06-28 | Secr Defence | Digital processor for two's complement computations |
| US5243551A (en) * | 1989-05-17 | 1993-09-07 | The Secretary Of State For Defence In Her Britannic Majesty's Government Of The United Kingdom Of Great Britain And Northern Ireland | Processor suitable for recursive computations |
| FR2663138B1 (fr) * | 1990-06-08 | 1992-09-11 | France Etat | Procede et circuit de traitement de signaux numeriques representatifs de vecteurs ou tuples de meme dimension et leur application a des ensembles de cardinalite et a des vecteurs ou tuples de dimensions quelconques. |
| DE69329260T2 (de) * | 1992-06-25 | 2001-02-22 | Canon K.K., Tokio/Tokyo | Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern |
| JP3203454B2 (ja) * | 1993-08-26 | 2001-08-27 | 日本プレシジョン・サーキッツ株式会社 | 乗算器 |
| US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
| US6023742A (en) * | 1996-07-18 | 2000-02-08 | University Of Washington | Reconfigurable computing architecture for providing pipelined data paths |
| DE19717970B4 (de) * | 1997-04-28 | 2006-11-09 | Systemonic Ag | Schaltungsanordnung einer digitalen Baugruppe zur Multiplikation und Addition von Binärzahlen |
| IL145245A0 (en) * | 2001-09-03 | 2002-06-30 | Jtc 2000 Dev Delaware Inc | System and method including vector-matrix multiplication |
| IL150133A0 (en) * | 2001-09-03 | 2004-02-19 | Lenslet Ltd | Multi-user detection |
| FI111592B (fi) * | 2001-09-06 | 2003-08-15 | Oulun Yliopisto | Menetelmä ja laite peräkkäisten kuvien koodaamiseksi |
| US7120658B2 (en) * | 2002-05-14 | 2006-10-10 | Nash James G | Digital systolic array architecture and method for computing the discrete Fourier transform |
| US7321915B2 (en) * | 2002-10-29 | 2008-01-22 | Broadcom Corporation | Method and apparatus for efficient matrix multiplication in a direct sequence CDMA system |
| JP2007336164A (ja) * | 2006-06-14 | 2007-12-27 | Mitsubishi Electric Corp | Dbf信号処理装置およびdbf信号処理方法 |
| US8473540B1 (en) | 2009-09-01 | 2013-06-25 | Xilinx, Inc. | Decoder and process therefor |
| US8473539B1 (en) | 2009-09-01 | 2013-06-25 | Xilinx, Inc. | Modified givens rotation for matrices with complex numbers |
| US8510364B1 (en) | 2009-09-01 | 2013-08-13 | Xilinx, Inc. | Systolic array for matrix triangularization and back-substitution |
| US8417758B1 (en) | 2009-09-01 | 2013-04-09 | Xilinx, Inc. | Left and right matrix multiplication using a systolic array |
| US8416841B1 (en) * | 2009-11-23 | 2013-04-09 | Xilinx, Inc. | Multiple-input multiple-output (MIMO) decoding with subcarrier grouping |
| US8620984B2 (en) * | 2009-11-23 | 2013-12-31 | Xilinx, Inc. | Minimum mean square error processing |
| US20110153702A1 (en) * | 2009-12-23 | 2011-06-23 | Starhill Philip M | Multiplication of a vector by a product of elementary matrices |
| US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
| US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
| US8406334B1 (en) | 2010-06-11 | 2013-03-26 | Xilinx, Inc. | Overflow resistant, fixed precision, bit optimized systolic array for QR decomposition and MIMO decoding |
| US8443031B1 (en) | 2010-07-19 | 2013-05-14 | Xilinx, Inc. | Systolic array for cholesky decomposition |
| US8577951B1 (en) * | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
| US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
| US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
| US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
| US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
| US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
| US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
| US9384168B2 (en) | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
| US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
| US10241972B2 (en) | 2017-03-16 | 2019-03-26 | International Business Machines Corporation | Matrix multiplication on a systolic array |
| DE102018112260A1 (de) * | 2018-05-22 | 2019-11-28 | Saint-Gobain Isover G+H Ag | Wärmedämmelement, Bauwerkskonstruktion sowie Verfahren zur Vermeidung von Feuchteschäden an einem Bauwerk |
| CN117828253B (zh) * | 2023-12-07 | 2024-09-03 | 中山大学 | 一种多比特矩阵向量乘法计算单元、阵列及其工作方法 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE3279288D1 (en) * | 1981-08-18 | 1989-01-19 | Nat Res Dev | Integrated data processing circuits |
| US4533993A (en) * | 1981-08-18 | 1985-08-06 | National Research Development Corp. | Multiple processing cell digital data processor |
| US4493048A (en) * | 1982-02-26 | 1985-01-08 | Carnegie-Mellon University | Systolic array apparatuses for matrix computations |
| GB2144245B (en) * | 1983-07-28 | 1987-07-29 | Secr Defence | A digital data processor for matrix/matrix multiplication |
| GB8326690D0 (en) * | 1983-10-05 | 1983-11-09 | Secr Defence | Digital data processor |
| US4698751A (en) * | 1984-07-13 | 1987-10-06 | Ford Aerospace & Communications Corporation | Systolic array for solving cyclic loop dependent algorithms |
-
1984
- 1984-12-18 GB GB848431925A patent/GB8431925D0/en active Pending
-
1985
- 1985-11-14 DE DE8585308310T patent/DE3586201T2/de not_active Expired - Fee Related
- 1985-11-14 EP EP85308310A patent/EP0186958B1/de not_active Expired
- 1985-11-22 US US06/800,691 patent/US4777614A/en not_active Expired - Fee Related
- 1985-11-29 CA CA000496520A patent/CA1241756A/en not_active Expired
- 1985-12-05 GB GB08530034A patent/GB2168509B/en not_active Expired
- 1985-12-18 JP JP60285388A patent/JPS61145683A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0572621B2 (de) | 1993-10-12 |
| CA1241756A (en) | 1988-09-06 |
| US4777614A (en) | 1988-10-11 |
| JPS61145683A (ja) | 1986-07-03 |
| GB2168509B (en) | 1988-04-27 |
| EP0186958B1 (de) | 1992-06-10 |
| DE3586201D1 (de) | 1992-07-16 |
| GB2168509A (en) | 1986-06-18 |
| EP0186958A2 (de) | 1986-07-09 |
| EP0186958A3 (en) | 1988-01-07 |
| GB8431925D0 (en) | 1985-01-30 |
| GB8530034D0 (en) | 1986-01-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3586201T2 (de) | Digitaler datenprozessor fuer matrix-vektor-multiplikation. | |
| DE19835216B4 (de) | Prozessor und Verfahren zur parallelen Datenverarbeitung | |
| DE3750017T2 (de) | Prozessor für orthogonale Transformation. | |
| DE69834942T2 (de) | Vorrichtung zum Multiplizieren | |
| DE3854818T2 (de) | Transformationsverarbeitungsschaltung | |
| DE60318494T2 (de) | Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen | |
| DE3854035T2 (de) | Nichtperiodisches Abbildungsverfahren zum verbesserten Zweierpotenzzugriff für ineinandergreifende Einrichtungen. | |
| DE69520974T2 (de) | Eine integrierte Halbleiterschaltung | |
| DE69230897T2 (de) | Diskreter/invers-diskreter Cosinus-Transformationsprozessor und Datenverarbeitungsverfahren | |
| DE68926783T2 (de) | Paralleler datenprozessor | |
| DE69130652T2 (de) | Digitaler paralleler Hochgeschwindigkeitsmultiplizierer | |
| DE2718849C2 (de) | Datenverarbeitungsanlage für Datenelemente einer Matrix aus M Speichermoduln und mit p Prozessoren | |
| EP0123921B1 (de) | Parallelverknüpfungsschaltung mit verkürztem Übertragsdurchlauf | |
| DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
| DE68927611T2 (de) | Digitales neuronales Netwerk | |
| DE69129723T2 (de) | Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor | |
| DE3036747C2 (de) | Binäre Multiplikationszellenschaltung als integrierte MOS-Schaltung | |
| DE2913327C2 (de) | Matrix-Multiplizierer | |
| DE102019126719A1 (de) | Energieeffiziente Speichersysteme und Verfahren | |
| DE69025182T2 (de) | Digitaler prozessor für zweierkomplementberechnungen | |
| DE4036455C1 (de) | ||
| DE19504089A1 (de) | Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren | |
| DE112017004291T5 (de) | Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation | |
| DE4345029C2 (de) | Schaltkreis für diskrete Kosinustransformation | |
| DE68925303T2 (de) | Zellenstapel für Serien-Architektur mit variabler Ziffernbreite |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |