DE60318494T2 - Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen - Google Patents

Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen Download PDF

Info

Publication number
DE60318494T2
DE60318494T2 DE60318494T DE60318494T DE60318494T2 DE 60318494 T2 DE60318494 T2 DE 60318494T2 DE 60318494 T DE60318494 T DE 60318494T DE 60318494 T DE60318494 T DE 60318494T DE 60318494 T2 DE60318494 T2 DE 60318494T2
Authority
DE
Germany
Prior art keywords
output
data
data interface
pipeline stage
operations
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 - Lifetime
Application number
DE60318494T
Other languages
English (en)
Other versions
DE60318494D1 (de
Inventor
David Guevorkian
Aki Launiainen
Petri Liuha
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.)
Nokia Oyj
Original Assignee
Nokia Oyj
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 Nokia Oyj filed Critical Nokia Oyj
Application granted granted Critical
Publication of DE60318494D1 publication Critical patent/DE60318494D1/de
Publication of DE60318494T2 publication Critical patent/DE60318494T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3868Bypass control, i.e. possibility to transfer an operand unchanged to the output

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Fishing Rods (AREA)
  • Preliminary Treatment Of Fibers (AREA)
  • Forklifts And Lifting Vehicles (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft ein Verfahren zum Ausführen von Rechenoperationen unter Verwendung einer Pipeline-Rechenvorrichtung, die eine Gruppe von mindestens zwei Pipeline-Stufen umfasst, wobei die Pipeline-Stufen mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen, wobei bei diesem Verfahren Daten zum Ausführen von Rechenoperationen in die Vorrichtung eingegeben werden. Die Erfindung betrifft außerdem ein System zum Ausführen von Rechenoperationen in einer Pipeline-Rechenvorrichtung, die eine Gruppe von mindestens zwei Pipeline-Stufen umfasst, wobei die Pipeline-Stufen mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen. Die Erfindung betrifft ferner eine Vorrichtung zum Ausführen von Rechenoperationen in einer Pipeline-Rechenvorrichtung, die eine Gruppe von mindestens zwei Pipeline-Stufen umfasst, wobei die Pipeline-Stufen mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen. Die Erfindung betrifft ferner ein drahtloses Endgerät, das eine Vorrichtung zum Ausführen von Rechenoperationen in einer Pipeline-Rechenvorrichtung enthält, die eine Gruppe von mindestens zwei Pipeline-Stufen umfasst, wobei die Pipeline-Stufen mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen. Die Erfindung betrifft außerdem einen Computer, der eine Vorrichtung zum Ausführen von Rechenoperationen in einer Pipeline-Rechenvorrichtung enthält, die eine Gruppe von mindestens zwei Pipeline-Stufen umfasst, wobei die Pipeline-Stufen mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen.
  • Allgemeiner Stand der Technik
  • Es gibt viele Anwendungen, bei welchen Multiplikation, Multiplizier-Akkumulier-(Multiply-Accumulate, MAC) und andere Rechenoperationen benötigt werden. Als ein nicht einschränkendes Beispiel sind viele Signalverarbeitungsanwendungen, wie etwa Anwendungen der digitalen Signalfilterung, Video-/Bildverarbeitungs-Anwendungen usw. Anwendungen, bei welchen Echtzeit-Multiplikations- und MAC-Operationen implementiert sind. Auch andere Anwendungen, bei welchen Vektor- und/oder Matrixoperationen benötigt werden, benutzen Multiplikationsoperationen. Multiplikationsoperationen sind normalerweise als Operationen der Summation und bitweisen Verschiebung implementiert. Solche Multiplikationsoperationen sind ressourcenaufwendige Aufgaben, da eine Multiplikationsoperation zwischen zwei Operanden viele Summations- und Verschiebungsoperationen erfordert, um das Multiplikationsergebnis zu berechnen.
  • Spezifisch für Video-/Bildverarbeitungsalgorithmen ist die gewaltige Menge an Berechnungen, welche in Echtzeit implementiert werden müssen. Daher war die Hochgeschwindigkeitsleistung die Triebkraft bei der Entwicklung paralleler spezialisierter Strukturen (Beschleuniger) für verschiedene Video-/Bildverarbeitungsalgorithmen oder Teilaufgaben. Ein Video-/Bildverarbeitungssystem nach dem Stand der Technik beinhaltet mehrere solche Beschleuniger (z. B. Summe der absoluten Differenzen (SAD), Cosinustransformation usw.), die jeweils aus einer großen Menge von Hardwareelementen zusammengesetzt sind. Mit den sich entwickelnden Mobilkommunikationssystemen sind jedoch der Hardwarebereich, welcher die Kosten des Systems beeinflusst, und der Strom-/Energieverbrauch ebenso wichtige Eigenschaften wie die Hochgeschwindigkeitsleistung. Ein Weg zur Erfüllung aller dieser Kriterien ist die weitere Modernisierung von digitalen Signalprozessoren (Digital Signal Processor, DSP) und die Verringerung der Anzahl spezialisierter Beschleuniger. Obwohl einige Verbesserungen auf diesem Gebiet existieren, genügen die entwickelten Systeme noch nicht immer den Anforderungen bezüglich Hochgeschwindigkeitsleistung und Energieverbrauch.
  • In Tabelle 1 sind einige grundlegende arithmetische Muster zusammengefasst, zusammen mit Beispielen von Video-/Bildverarbeitungsalgorithmen, wo diese Muster häufig implementiert sind. Die Operationen, die in diesen Mustern auftreten, sind sehr elementar und sehr bekannt. Eine sehr umfangreiche Literatur ist ihren Implementierungen gewidmet. Hier sollen zwei spezifische Aspekte hervorgehoben werden, welche diese Operationen im Kontext der Video-/Bildverarbeitung betreffen. Erstens sind die Operanden von Operationen meist ganze Zahlen (Integers) mit mittlerer Genauigkeit (8 bis 16 Bit). Zweitens verwenden die meisten der Algorithmen in hohem Maße parallele Operationen. In manchen Fällen verwenden diese parallelen Operationen gemeinsam dieselben Operanden. Zum Beispiel wird bei einer skalaren Quantisierung dieselbe Zahl mit vielen Pixeln des Bildes multipliziert, in einem Matrix-Vektor-Produkt werden verschiedene Zeilen der Matrix mit demselben Eingangsvektor multipliziert, bei einer Filterung mit endlicher Impulsantwort (Finite Impulse Response, FIR) werden dieselben Koeffizienten bei einer Anzahl von MAC-Operationen verwendet, usw.
  • Tabelle 1.
    Figure 00040001
  • Figure 00050001
  • Die Architekturen nach dem Stand der Technik für Video- und Bildverarbeitung und andere Signalverarbeitungsaufgaben beruhen gewöhnlich auf herkömmlichen Multiplikatorstrukturen. Es wurden viele Multiplikationsverfahren und sehr vielfältige Vorrichtungen zur Implementierung von Multiplikations- und/oder Multiplizier-Akkumulier-Operationen entwickelt. Im Folgenden werden nur Multiplikationsverfahren und allgemeine Multiplikatorstrukturen für den Fall, dass beide Operanden (der Multiplikand und der Multiplikator) unbekannt sind, Multiplikation von zwei vorzeichenbehafteten Festkomma-Integers, die in Zweierkomplement-Arithmetik dargestellt sind, und die so genannten Radix-T-Verfahren betrachtet.
  • Die Zweierkomplement-Darstellung des n-Bit-(einschließlich des Vorzeichens) Multiplikators a wird mit a ~ = an-1an-2...a1a0 bezeichnet, und die Zweierkomplement-Darstellung des m-Bit-(einschließlich des Vorzeichens) Multiplikanden x wird mit x ~ = xm-1xm-2...x1x0 bezeichnet. Die Beziehung zwischen a und a ~ (und eine ähnliche Beziehung zwischen x und x ~) ist folgende:
    Figure 00060001
  • Bei einem Radix-T Parallelmultiplikationsverfahren wird das Zweierkomplement y ~ = ym+n-1ym+n-2...y1y0 des Produktes y = a·x gemäß der Formel
    Figure 00060002
    in den folgenden zwei Hauptschritten erhalten:
  • Schritt 1. Erzeugung von Teilprodukten (Partial Products, PP) Ar·x, r = 0, ..., nradix-T–1, derart, dass Gleichung (2) gilt.
  • Schritt 2. Paralleles Aufsummieren sämtlicher Teilprodukte, wobei zuvor das r-te Teilprodukt Ar·x, r = 0, ..., nradix-T – 1 um rtradix-T Positionen nach links verschoben wird.
  • Eine Radix-T MAC-Einheit arbeitet auf eine ähnliche Weise, mit dem Unterschied, dass in Schritt 2 eine andere Zahl (akkumulierender Term) zusammen mit Teilprodukten addiert wird.
  • Der Schritt 1 wird nun näher betrachtet. In Abhängigkeit davon, wie die Zahlen Ar·x, r = 0, ..., nradix-T – 1 definiert sind und erhalten wurden, können unterschiedliche Multiplikationsverfahren abgeleitet werden. Die Wahl der Zahlen Ar·x, r = 0, ..., nradix-T – 1 wiederum wird in Wirklichkeit durch die Darstellung des Multiplikanden a diktiert. Das einfachste Multiplikationsverfahren ist ein Radix-2-Verfahren, welches die Zweierkomplement-Darstellung von a verwendet, die in der linken Gleichung von (1) gegeben ist. In diesem Falle wird das Zweierkomplement des Produkts erhalten als:
    Figure 00070001
    das heißt, nradix-2 = n, und die Teilprodukte Ar·x, r = 0, ..., n – 1 sind definiert durch Ar = ar für r = 0, ..., n – 2 und An-1 = –an–1 für r = n – 1. Diese Teilprodukte können gewöhnlich gebildet werden (und werden gewöhnlich gebildet), indem eine Anordnung von UND-Gattern mit 2 Eingängen zwischen jedem Zweierkomplement-Bit des Multiplikanden a ~ und des Multiplikators x ~ verwendet wird. Der Wert von Ar·x, r = 0, ..., n – 1 wird mit 2r multipliziert (d. h. um r Positionen nach links verschoben), bevor er im zweiten Schritt akkumuliert wird. Es ist anzumerken, dass bei diesem Verfahren das Teilprodukt An-1·x, welches manchmal auch ein Korrekturfaktor genannt wird, anders behandelt wird als die anderen Teilprodukte.
  • Die ungleichförmige Natur der Teilprodukte wird bei einem anderen Radix-2-Multiplikationsverfahren, das auf Booth-Umcodierung der Zweierkomplement-Bits a ~ des Multiplikators in redundante Signed-Digit-Zahlen beruht, vermieden. Das Produkt kann nun dargestellt werden als:
    Figure 00080001
  • Das heißt, es ist nradix-2 = n wie zuvor, doch die Teilprodukte Ar·x, r = 0, ..., n – 1 sind nun alle definiert durch Ar = –αr + αr-1. Ähnlich wie bei dem vorhergehenden Verfahren wird der Wert von Ar·x, r = 0, ..., n – 1 mit 2r multipliziert, bevor er im zweiten Schritt addiert wird. In diesem Schema werden die Teilprodukte aus 0, ±x ausgewählt. Zwei von diesen Werten (0 und x) stehen unmittelbar zur Verfügung, während das Finden von –x das Invertieren der Bits von x ~ und das Addieren von eins erfordert. Normalerweise wird die Addition von eins in Schritt 2 durchgeführt, wo die Teilprodukte addiert werden.
  • Bei einem Radix-2-Multiplikationsverfahren sind insgesamt nradix-2 = n Teilprodukte zu addieren, unabhängig davon, ob das Booth-umcodierte oder nicht umcodierte Verfahren angewendet wird. Um die Anzahl der Teilprodukte und demzufolge die Verzögerung der zweiten Stufe (Aufsummieren von Teilprodukten) zu verringern, wurde das auf dem modifizierten Booth-Algorithmus (Modified Booth Algorithm, MBA) beruhende Radix-4-Verfahren entwickelt. Der MBA ist eines der populärsten Multiplikationsverfahren und wird gegenwärtig umfassend untersucht und optimiert.
  • Um die untenstehenden Formeln zu vereinfachen, wird in allen Fällen, in denen ein Term wie n/k auftritt, dass n ein ganzzahliges Vielfaches von k ist. Dies ist eine gültige Annahme, da eine Zweierkomplement-Zahl durch eine beliebige Anzahl von Bits ergänzt werden kann (indem das höchstwertige Bit wiederholt wird).
  • Beim MBA wird das Zweierkomplement des Produkts erhalten als die Summe
    Figure 00090001
    von nradix-4 = n/2 Teilprodukten, wobei der Wert von Ar ∈ {–2, –1, 0, 1, 2}, r = 0, 1, ..., n/2 – 1, entsprechend den drei aufeinander folgenden Bits a2r+1, a2r, a2r-1(a–1 = 0) der Zweierkomplement-Darstellung des Multiplikators a ~ gewählt wird. Das Teilprodukt Arx, r = 0, 1, ..., n/2 – 1, wird mit 22r multipliziert (d. h. hardwaremäßig um 2r Positionen nach links verschoben), bevor es in Schritt 2 addiert wird.
  • Es ist auch möglich, höhere Radizes als 2 bei nicht umcodierten Multiplikationsverfahren zu verwenden, um die Anzahl der Teilprodukte zu verringern. Zum Beispiel werden bei einem Radix-4 nicht umcodierten Multiplikationsverfahren die Teilprodukte Arx, Ar ∈ {0, 1, 2, 3}, r = 0, 1, ..., n/2 – 1 entsprechend zwei aufeinander folgenden Bits a2r+1, a2r des Multiplikators gewählt. Bei diesem Verfahren gibt es nradix-4 = n/2 Teilprodukte. Das potentielle Teilprodukt 2x kann erzeugt werden, indem das potentielle Teilprodukt x einmal nach links verschoben wird. Das ungerade Teilprodukt 3x erfordert eine zusätzliche Addition von x. Falls auch Multiplikationen von negativen Zahlen verwendet werden, muss die Vorzeichenerweiterung verwendet werden, bei welcher das höchstwertige Bit (d. h. das Vorzeichenbit) jedes Teilproduktes so viele Male kopiert wird, wie es notwendig ist, um die erforderliche Bitlänge zu erreichen.
  • Beim Radix-8 nicht umcodierten Multiplikationsverfahren werden die Teilprodukte Ar ∈ {0, 1, 2, 3, 4, 5, 6, 7}, r = 0, 1, ..., n/3 – 1, entsprechend drei aufeinander folgenden Bits des Multiplikators gewählt. Die Liste potentieller Teilprodukte ist 0, x, 2x, 3x, ..., 7x, welche alle verfügbar werden, indem drei unabhängige Additionen/Subtraktionen implementiert werden, um 3x = x + 2x, 5x = x + 4x, 7x = 8x – x zu erhalten. Das potentielle Teilprodukt 6x kann gebildet werden, indem das potentielle Teilprodukt 3x um eine Position nach links verschoben wird. Für die Fälle höherer Radizes (>= 16) gibt es jedoch einige potentielle Teilprodukte (z. B. 11x und 13x), welche nicht in einer Addition/Subtraktion erhalten werden können.
  • 1 zeigt eine allgemeine Vorrichtung 101 zur Durchführung des modifizierten Booth-Algorithmus. Es sind n/2 Booth-Codierungs-Decodierungs-Reihen vorhanden, wobei jede Reihe aus einem Booth-Encoder 102 und m + 1 Booth-Decodern 103 besteht, welche in Gruppen von je zweien zusammengefasst werden können. Jeder Booth-Encoder 102 analysiert drei aufeinander folgende Bits des Zweierkomplements des Multiplikators a ~, mit einer Überlappung von einem Bit, und gibt q Signale an die entsprechende Reihe von Decodern 103 aus. Bei einigen neueren Konstruktionen nach dem Stand der Technik ist der Wert von q = 3. Entsprechend diesen q Signalen bilden die Decoderreihen die Teilprodukte (Arx) ∈ {0, ±x, ±2x}, welche die Bits x ~ des Multiplikanden an ihren Eingängen haben. Die nichtnegativen Vielfachen von x sind unmittelbar verfügbar, da 2x durch eine festverdrahtete Verschiebung gebildet wird. Die negativen Vielfachen von x werden gebildet, indem die Bits der entsprechenden positiven Vielfachen von x invertiert werden und danach 1 addiert wird, was gewöhnlich in Schritt 2 ausgeführt wird. Zum Beispiel beschreibt die US-Patentschrift 6,173,304 ein solches System, das die Booth-Encoder und -Decoder implementiert. Bei dem Radix-2-Verfahren können die Teilprodukte leichter gefunden werden als bei dem modifizierten Booth-Algorithmus, doch die Anzahl der Teilprodukte wird auf n/2 verringert, wenn der modifizierte Booth-Algorithmus angewendet wird, was zu erheblichen Vorteilen im Hinblick auf Geschwindigkeitsverhalten, Fläche und Energieverbrauch führt.
  • Um die Anzahl der Teilprodukte noch weiter zu verringern, wurde die Booth-Codierung ferner zu einer Multibit-(frei wählbar Radix-7)Umcodierung erweitert. Die allgemeine Gleichung für das Produkt ist nun gegeben als:
    Figure 00120001
  • Das heißt, es gibt nradix-T = n/t Teilprodukte (T = 2t), und jedes Teilprodukt wird entsprechend t + 1 aufeinander folgenden Bits des Multiplikators a ~ aus der Liste potentieller Teilprodukte Ax gewählt, wobei A in einem Bereich zwischen –2t-1 und 2t-1 liegt. Jedes potentielle Teilprodukt kann relativ leicht durch Addition von zwei (für T = 8, 16) oder mehr (für T > 16) Zweierpotenzvielfachen von x und möglicherweise Inversion der Bits, gefolgt von einer Addition von 1 (in Schritt 2) gebildet werden. Zum Beispiel ist im Falle einer Radix-8-Umcodierung die Liste potentieller Teilprodukte 0, ±x, ±2x, ±3x, ±4x. Sämtliche nichtnegativen Vielfachen aus dieser Liste sind unmittelbar verfügbar, mit Ausnahme von 3x, welches in einer Addition erhalten werden kann: 3x = x + 2x. Negative Vielfache können wie zuvor durch das Verfahren "Invertieren und 1 addieren" erhalten werden. Im Falle einer Radix-16-Umcodierung ist die Liste potentieller Teilprodukte 0, ±x, ±2x, ±3x, ..., ±8x, welche alle verfügbar werden, indem drei unabhängige Additionen/Subtraktionen implementiert werden, um 3x = x + 2x, 5x = x + 4x, 7x = –x + 8x zu erhalten. Das potentielle Teilprodukt 6x kann gebildet werden, indem das potentielle Teilprodukt 3x um eine Position nach links verschoben wird. Für die Fälle höherer Radizes gibt es jedoch einige potentielle Teilprodukte (z. B. 11x und 13x), welche nicht in einer Addition/Subtraktion erhalten werden können.
  • 2 zeigt die allgemeine Struktur 201 von dem Stand der Technik entsprechenden Radix-T (T ≥ 8) Multibit Booth-umcodierten und Radix-T (T ≥ 4) neuen nicht umcodierten ("Radix-höher-als-vier") Multiplikatoren. Diese Struktur besteht aus einer Anordnung von Addierern 202 zum Berechnen der Liste von potentiellen Teilprodukten, einem Auswahlblock 203 zum Auswählen von n/t Teilprodukten entsprechend den Multiplikatorbits und einem Summationsblock 204 zum Aufsummieren der ausgewählten Teilprodukte. Der Endaddierer 205 bildet das Produkt y ~ aus den Termen Summe S und Übertrag C, die von dem Summationsblock 204 erzeugt werden.
  • Die Anordnung von Addierern eines typischen, dem Stand der Technik entsprechenden "Radix-höher-als-vier"-Multiplikators besteht aus s Addierern/Subtrahierern, wobei s die Anzahl der ungeraden positiven Vielfachen von x ist, die in der Liste potentieller Teilprodukte enthalten sind (s = 1 in den Fällen von T = 8 Boothumcodierter und T = 4 nicht umcodierter Multiplikatoren, und s = 3 in den Fällen von T = 16 Booth-umcodierter oder T = 8 nicht umcodierter Multiplikatoren, usw.). Gewöhnlich werden schnelle Carry-Look-Ahead-(CLA-)Addierer (Paralleladdierer mit Übertragsvorausberechnung) verwendet, da das Bilden der Liste potentieller Teilprodukte ein recht zeitaufwendiger Teil solcher Multiplikatoren ist. In einer Patentschrift US-5,875,125 wurde ein spezieller x + 2x Addierer vorgeschlagen, welcher in Radix-8-Multiplikatoren verwendet werden kann. Es ist anzumerken, dass auch gemischte Radix-4/8-Multiplikatoren vorgeschlagen worden sind, zum Beispiel in der US-Patentschrift Nr. 4,965,762 , welche jedoch hauptsächlich für iterative (nicht parallele) Multiplikatoren verwendet werden, wo die Teilprodukte seriell erzeugt und akkumuliert werden. Die US-Patentschrift Nr. 5,646,877 beschreibt eine Multiplikator-Struktur, bei der sämtliche potentiellen Teilprodukte für ein beliebiges Radix als Summen oder Differenzen von verschobenen Versionen von 3x und von x innerhalb der Anordnung von Addierern erhalten werden, welche aus einem x + 2x Addierer zum Erzeugen von 3x, zwei Shiftern (Verschiebern) und einem Addierer/Subtrahierer besteht.
  • Der Auswahlblock eines typischen, dem Stand der Technik entsprechenden "Radix-höher-als-vier"-Multiplikators besteht aus n/t Radix-T Booth-Encodern und einer gleichen Anzahl von Decoderreihen. Jeder Encoder analysiert das entsprechende (t + 1)-Tupel des Multiplikators und gibt mehrere Steuersignale aus, gemäß welchen die entsprechenden Teilprodukte von den Decoderreihen gebildet werden. Anmerkungen dazu, wie die Radix-4 Booth-Encoder und Decoder zu höheren Radizes erweitert werden können, sind zum Beispiel in einer Patentschrift US-6,240,438 dargelegt.
  • Im Folgenden wird das Aufsummieren der Teilprodukte, d. h. der Schritt 2, eingehender betrachtet. Die meisten der parallelen Multiplikator-/MAC-Einheit-Strukturen verwenden Summationsblöcke, die aus einer Kompressionsanordnung bestehen, gefolgt von einem schnellen Addierer (Endaddierer) zum Aufsummieren der Teilprodukte, die in Schritt 1 gebildet wurden (siehe 1 und 2). Die Kompressionsanordnung reduziert die nradix-T Teilproduktreihen auf zwei Reihen, die den Termen Summe S und Übertrag C entsprechen, welche mit dem Endaddierer addiert werden. Die Kompressionsanordnung besteht gewöhnlich entweder aus Voll- und Halbaddierern (einem Carry-Save-Adder-Baum oder einem Wallace-Baum) oder 4:2 Kompressoren. Der Endaddierer ist gewöhnlich ein schneller Carry-Look-Ahead-Addierer, welcher entsprechend den Verzögerungen unterschiedlicher Bits von der Kompressionsanordnung sorgfältig ausgelegt ist.
  • Es ist anzumerken, dass, wenn ein Booth-Umcodierungsschema benutzt wird, dann infolge der Ausführung der Addition von eins in Schritt 2 anstatt in Schritt 1 jede Teilprodukt-Reihe von einem Ein-Bit-Wert begleitet wird, welcher null ist, wenn das Teilprodukt ein nichtnegatives Vielfaches des Multiplikanden ist, und andernfalls eins ist. Daher ist in Wirklichkeit die Anzahl der Reihen 2nradix-T. Auch wenn diese Ein-Bit-Werte mit Teilprodukt-Reihen auf eine solche Weise vereinigt werden können, dass die Anzahl der Reihen wieder nradix-T oder vielleicht nradix-T + 1 ist, ist der Preis dafür jedoch, dass sich die Länge der Teilprodukt-Reihen vergrößert (um ein Bit) und diese unregelmäßig werden. In einem nicht umcodierten Schema gibt es höchstens einen zusätzlichen Ein-Bit-Wert, so dass einfachere Kompressionsanordnungen entworfen werden können.
  • Ein anderes Problem, das mit dem Summationsblock in einem Booth-umcodierten Multiplikator zusammenhängt, ist, wie Vorzeichenerweiterungen zu handhaben sind, da die Teilprodukt-Reihen relativ zueinander verschoben werden, bevor sie addiert werden.
  • Bei einer geradlinigen Implementierung müsste jedes Teilprodukt (nach dem Verschieben) zu einer (n + m)-Bit- Zahl erweitert worden sein, was eine sehr unwirtschaftliche Vorgehensweise ist. Es wurden spezielle Vorzeichenerweiterungs-Verfahren und -Schaltungen entwickelt, um in jeder Reihe die Anzahl der vorzeichenerweiterten Bits auf zwei zu reduzieren. Im Falle von nicht umcodierten Multiplikatoren können Vorzeichenerweiterungen einfacher gehandhabt werden, ohne zusätzliche Vorzeichenbits, da alle Teilprodukte, eventuell mit Ausnahme von einem, dasselbe Vorzeichen haben.
  • Es gibt prinzipiell zwei Wege, um existierende Multiplikatorstrukturen zu MAC-Einheiten zu erweitern, wie in 3a und 3b dargestellt. Im ersten Falle (3a) werden die zwei Ausgänge (die Terme Summe S und Übertrag C) der Kompressionsanordnung 301 zu ihren Eingängen rückgeführt, so dass die aktuellen Teilproduktwerte mit den zwei Summanden des aktuellen Akkumulationswertes akkumuliert werden. Die endgültigen Terme Summe S und Übertrag C werden dann in dem Endaddierer 302 addiert. Im zweiten Falle (3b) werden diese Ausgänge in eine andere Kompressionsanordnung 303 eingespeist, deren Ausgänge zu ihrem Eingang (dem der zweiten Kompressionsanordnung 303) rückgeführt werden. Nun werden die Terme Summe S und Übertrag C des aktuellen Produktes zu dem aktuellen Akkumulationswert akkumuliert, bis zum letzten Zyklus, wenn die endgültigen Terme Summe S und Übertrag C in dem Endaddierer 302 addiert werden. Die Tiefe (und daher die Gesamtverzögerung) der gesamten Kompressionsanordnung kann im ersten Falle kleiner sein, während die Breite und daher die Fläche und der Energieverbrauch im zweiten Falle kleiner sein können.
  • Als eine Zusammenfassung zu Multiplikatoren mit hohem Radix ist anzumerken, dass, je höher das Radix ist, die Komplexität des Schrittes 1 (Erzeugen der Teilprodukte) desto höher ist, jedoch die Komplexität des Schrittes 2 (Aufsummieren der Teilprodukte) desto geringer ist. Die "Radix-höher-als-vier"-Multiplikationsverfahren haben keine Verbreitung gefunden, vielleicht aufgrund der Notwendigkeit, über recht zeit- und platzaufwendige Teilprodukt-Generatoren zu verfügen, welche sowohl die Anordnung von Addierern als auch den Auswahlblock einschließen. Gewöhnlich wird der Radix-4-MBA als das beste parallele Multiplikationsverfahren nach dem Stand der Technik betrachtet, und er wird in vielen industriellen Multiplikatoren angewendet.
  • In Verbindung mit Rechenoperationen kann ein Verfahren angewendet werden, welches Pipeline-Prinzip (Pipelining) genannt wird. Dabei umfasst eine Vorrichtung, welche das Pipeline-Prinzip nutzt, zwei oder mehr Pipeline-Stufen. Jede Pipeline-Stufe ist dazu bestimmt, einen gewissen Teil oder Teile von Rechenoperationen (d. h. Teiloperationen) auszuführen. Gemäß dem Stand der Technik stehen die Rechenoperationen der Pipeline-Stufen miteinander im Zusammenhang, derart, dass jede Pipeline-Stufe eine oder mehrere Teiloperationen der auszuführenden Rechenoperation ausführt und der Ausgang der letzten Pipeline-Stufe des Ergebnis der Rechenoperation liefert. In einer solchen Vorrichtung arbeiten verschiedene Pipeline-Stufen nacheinander; dabei beginnt die nächste Pipeline-Stufe die Berechnung der Teiloperation, nachdem die vorhergehende Pipeline-Stufe die Berechnung ihrer Teiloperation beendet hat. Falls Pipeline-Stufen schlecht abgeglichen sind (d. h. manche Stufen wesentlich schneller sind als andere), bedeutet dies, dass alle Pipeline-Stufen außer einer die meiste Zeit warten oder sich im Ruhezustand befinden. Ferner sind alle Pipeline-Stufen für eine bestimmte Aufgabe reserviert (Berechnung einer bestimmten Teiloperation), und sie können nicht verwendet werden, um andere Rechenoperationen auszuführen.
  • Im Folgenden werden einige Merkmale eines Multiplikators bzw. einer MAC-Einheit vorgestellt, welche vom Standpunkt der Video- und Bildverarbeitung aus wünschenswert sind, jedoch bei Lösungen nach dem Stand der Technik nicht vorhanden oder schwach sind. Zuerst wird das populärste Radix-4 Booth-umcodierte Multiplikator-/MAC-Verfahren betrachtet. Ein allgemeiner Nachteil dieses Verfahrens ist, dass es mehr Energie verbraucht als Verfahren mit höherem Radix. Ein anderer allgemeiner Nachteil ist, dass, obwohl die Anzahl der Teilprodukte auf die Hälfte verringert ist, verglichen mit einer Radix-2-Multiplikation, sie bei Verwendung höherer Radizes noch weiter verringert werden könnte. Das heißt, die Komplexität dieses Verfahrens ist hauptsächlich in Schritt 2 konzentriert (Aufsummieren von Teilprodukten). Bei Anwendung des Pipeline-Prinzips auf eine Radix-4 Booth-umcodierte Multiplikator-/MAC-Struktur wird gewöhnlich der Teilprodukt-Erzeugungsblock als die erste Pipeline-Stufe betrachtet, welche jedoch mit den anderen Pipeline-Stufen schlecht abgeglichen ist (d. h. schneller ist als diese).
  • Betrachtet man die "Radix-höher-als-vier" Boothumcodierten Multiplikatoren, so wurde nachgewiesen, dass verschiedene Realisierungen dieser Multiplikatoren, wenn sie zur Implementierung nur der Multiplikationsoperation in Betracht gezogen werden, vergleichbare Leistungseigenschaften haben wie die Radix-4-Multiplikatoren, was die Kriterien Fläche und Zeit anbelangt, während sie diesen hinsichtlich des Energieverbrauches überlegen sind. Der Hauptnachteil der "Radix-höher-als-vier"-Verfahren ist die Notwendigkeit, über eine Anordnung von Addierern am Teilprodukt-Erzeugungsblock zu verfügen.
  • Wenn man Booth-umcodierte "Radix-höher-als-vier"-Multiplikatoren mit nicht umcodierten vergleicht, haben die erstgenannten einen Nachteil, der mit der Notwendigkeit einer Handhabung der negativen Vielfachen des Multiplikanden sowie der Vorzeichenerweiterungen zusammenhängt. Andererseits bedingt ein Radix-T nicht umcodierter Multiplikator dieselbe Anzahl von Addierern im Teilprodukt-Erzeugungsblock, wie der Radix-(2T) Boothumcodierte. Und was noch wichtiger ist, "Radix-höher-alsacht" nicht umcodierte Multiplikatoren benötigen eine mehr als einstufige Addition, um potentielle Teilprodukte zu erzeugen, während bei dem Booth-umcodierten Zugang dies für "Radix-höher-als-sechzehn" Multiplikatoren gilt. Diese Gründe bewirken, dass beide Typen von Multiplikatoren unter unterschiedlichen Umständen des Entwurfs von Nutzen sind.
  • Das Dokument "A Single-Chip 16-bit 25-ns Real-Time Video/Image Signal Processor" offenbart einen Einchip-16-Bit-25-ns–Echtzeit-Video/Bild-Signalprozessor zur Verwendung bei der Echtzeit-Bewegungsbild-Codierung während einer Übertragung mit niedriger Bitrate für TV- Konferenzsysteme. Der Chip weist außerdem eine siebenstufige Pipeline-Arithmetikeinheit (Pipeline Arithmetic Unit, PAU) für die Video-/Datenverarbeitung auf. Die Pipeline-Stufe führt eine Mindestabstandsberechnung für die Vektorquantisierung und Bewegungskompensation aus, und eine Reihe von Multiplizier-Akkumulier-Berechnungen für die Trans formationsberechnung und FIR-Filterung.
  • Die erste Stufe der PAU enthält zwei 16-Bit-Shifter für die Skalierung der Eingangs-Videosignaldaten. Die zweite Stufe ist eine 16-Bit-Arithmetik-Logik-Einheit (Arithmetic Logic Unit, ALU), welche die Absolutwertberechnung einer Subtraktion von zwei Daten in einem Anweisungszyklus beinhaltet. Die dritte und vierte Stufe sind für einen 16-Bit-mal-16-Bit-Multiplikator bestimmt, der den Booth-Algorithmus anwendet. Die fünfte Stufe ist ein 20-Bit-Akkumulator und ein Normierer. Die sechste Stufe ist ein 16-Bit-Barrel-Shifter (Ausgangsschieberegister) für die Skalierung verarbeiteter Daten. Die siebente Stufe ist ein Maximal- und Minimalwert-Detektor.
  • Die PAU kann verschiedene Bewegungsvektor-Signalprozesse durch Änderung der Verbindungen zwischen den Funktionsblöcken ausführen. Die Verbindungen sind mikroprogrammierbar, d. h. durch Ändern des Mikroprogramms können verschiedene Auswahlen zwischen den Funktionsblöcken bewirkt werden.
  • Parallele Architekturen nach dem Stand der Technik sind so gestaltet, dass sie mehrere unabhängige Multiplikatoren, die mit Addierern kombiniert sind, oder mehrere unabhängige MAC-Einheiten verwenden. Es ist außerdem üblich, dass mehrere spezifische Schaltungen für arithmetische Operationen unterschiedlicher Art vorhanden sind. Multiplikatoren mit hohem Radix weisen jedoch Blöcke (Pipeline-Stufen) auf, welche für andere Operationen wie etwa Additionen/Subtraktionen, Akkumulationen usw. wiederverwendet werden können. Es ist außerdem anzumerken, dass es in der Matrix-Vektor-Arithmetik, insbesondere derjenigen, die bei der Video-/Bildverarbeitung angewendet wird, viele Situationen gibt, in denen ein Multiplikand mit mehreren Multiplikatoren zu multiplizieren ist, was bedeutet, dass potentielle Teilprodukte des Multiplikanden bei allen diesen Multiplikationen hätten wiederverwendet werden können, wenn Multiplikationsverfahren mit hohem Radix angewendet würden. Außerdem gibt es, wie oben erwähnt, viele Situationen, in denen Pipeline-Stufen nach dem Stand der Technik schlecht abgeglichen sind und daher die Leistung der Vorrichtung beeinträchtigen.
  • Aufgaben und Kurzdarstellung der Erfindung
  • Ein Ziel der vorliegenden Erfindung ist es, eine verbesserte Rechenstruktur und ein verbessertes Rechenverfahren zum Ausführen von Rechenoperationen mit einer konfigurierbaren Struktur zu implementieren. Die multifunktionalen/konfigurierbaren Architekturen können mittels einer Menge von Steuersignalen zu mehreren unterschiedlichen Strukturen konfiguriert werden. Die Strukturen der vorliegenden Erfindung können auf vorteilhafte Weise als eine VLSI-Architektur implementiert werden.
  • Es existieren verschiedene Ausführungsform der vorliegenden Erfindung, von denen einige weiter unten in dieser Beschreibung ausführlicher erläutert werden.
  • Die erste Ausführungsform benutzt eine parallele Multiplikatorstruktur in Matrix-Vektor-Arithmetik und ist gleichzeitig flexibel, was die Möglichkeit gibt, sie für kleinere Aufgaben zu konfigurieren.
  • Die Struktur der ersten Ausführungsform der Erfindung stellt eine Struktur dar, welche als eine Vorrichtung realisiert werden kann, die konfiguriert werden kann, um eine Liste von Operationen zu implementieren, darunter: (a) mehrere Multiplikationen; (b) mehrere MAC-Operationen; (c) mehrere Additionen/Subtraktionen mit unterschiedlicher Genauigkeit (Bitbreite); und/oder (d) parallele Akkumulation.
  • Bei der zweiten Ausführungsform wird eine Speichereinheit verwendet, in welchen die potentiellen Teilprodukte gespeichert werden können und in denjenigen Fällen wiederverwendet werden können, in denen derselbe Multiplikand mit einer Anzahl von Multiplikatoren zu multiplizieren ist. Nicht einschränkende Beispiele solcher Operationen sind Matrix-Vektor-Multiplikation, FIR-Filterung usw. Auf diese Weise wird nur die erste von der Anzahl von Multiplikationen, die denselben Multiplikanden haben, vollständig implementiert, während die anderen nur teilweise implementiert werden, wodurch der am meisten ressourcenaufwendige Teil der Berechnung der potentiellen Teilprodukte vermieden wird. Wenn zum Beispiel eine Matrix mit einem Vektor multipliziert wird, werden vollständige Multiplikationen nur für die Berechnung der ersten Komponente des Ausgangsvektors implementiert, während die restlichen Multiplikationen für die Berechnung der anderen Komponenten des Ausgangsvektors nur teilweise implementiert werden. Beim Implementieren von FIR-Filterung werden vollständige Multiplikationen nur einmal implementiert, wenn das erste Ausgangs-Sample berechnet wird; die restlichen Multiplikationen für die Berechnung der anderen Ausgangs-Samples werden dagegen unvollständig implementiert.
  • Die dritte Ausführungsform ist eine Kombination der parallelen Multiplikatorstruktur und einer Beschleuniger-Struktur vom Typ Summe der absoluten Differenzen (SAD) für die Video- und Bildverarbeitung (MAVIP). Die Struktur ist eine multifunktionale Architektur, in dem Sinne, dass sie mittels einer Menge von Steuersignalen zu unterschiedlichen Architekturen konfiguriert werden kann.
  • Genauer, das Verfahren gemäß der vorliegenden Erfindung ist in erster Linie dadurch gekennzeichnet, dass eine selektive Datenverarbeitung in der Rechenvorrichtung durchgeführt wird, wobei zwischen mindestens einer besagten Eingabedatenschnittstelle und mindestens einer Ausgabedatenschnittstelle eine Auswahl vorgenommen wird, um die mindestens eine Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zu verbinden, um Daten zwischen der mindestens einen Eingabedatenschnittstelle und der mindestens einen Ausgabedatenschnittstelle zu routen und um Daten entsprechend der Auswahl zu verarbeiten. Das System gemäß der vorliegenden Erfindung ist in erster Linie dadurch gekennzeichnet, dass das System ferner mindestens einen Schalter zum Ausführen einer selektiven Datenverarbeitung aufweist, wobei der mindestens eine Schalter mindestens einen Steuereingang zum Verbinden der mindestens einen Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zum Routen von Daten zwischen den verbundenen Datenschnittstellen und zum Verarbeiten von Daten entsprechend der Auswahl umfasst. Die Vorrichtung gemäß der vorliegenden Erfindung ist in erster Linie dadurch gekennzeichnet, dass die Vorrichtung ferner mindestens einen Schalter zum Ausführen einer selektiven Datenverarbeitung aufweist, wobei der mindestens eine Schalter mindestens einen Steuereingang zum Verbinden der mindestens einen Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zum Routen von Daten zwischen den verbundenen Datenschnittstellen und zum Verarbeiten von Daten entsprechend der Auswahl umfasst. Das drahtlose Endgerät gemäß der vorliegenden Erfindung ist in erster Linie dadurch gekennzeichnet, dass das drahtlose Endgerät ferner mindestens einen Schalter zum Ausführen einer selektiven Datenverarbeitung aufweist, wobei der mindestens eine Schalter mindestens einen Steuereingang zum Verbinden der mindestens einen Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zum Routen von Daten zwischen den verbundenen Datenschnittstellen und zum Verarbeiten von Daten entsprechend der Auswahl umfasst. Der Computer gemäß der vorliegenden Erfindung ist in erster Linie dadurch gekennzeichnet, dass der Computer ferner mindestens einen Schalter zum Ausführen einer selektiven Datenverarbeitung aufweist, wobei der mindestens eine Schalter mindestens einen Steuereingang zum Verbinden der mindestens einen Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zum Routen von Daten zwischen den verbundenen Datenschnittstellen und zum Verarbeiten von Daten entsprechend der Auswahl umfasst.
  • Die vorliegende Erfindung weist im Vergleich zu Lösungen nach dem Stand der Technik bemerkenswerte Vorteile auf. Es kann eine VLSI-Architektur entwickelt werden, die für eine effiziente Implementierung einer großen Vielfalt arithmetischer Muster geeignet ist, die bei Signalverarbeitungsanwendungen wie etwa Video-/Bildverarbeitungsalgorithmen häufig implementiert werden. Durch Anwendung eines Verfahrens gemäß der Erfindung können die Multiplikationsoperationen im Kontext von Video-/Bildverarbeitung schneller und mit weniger Energie ausgeführt werden als bei Verfahren und Vorrichtungen nach dem Stand der Technik. Die Erfindung ist insbesondere für das Implementieren mehrerer Multiplikationen/MACS gut geeignet, und für das Implementieren mehrerer Multiplikationen/MACs mit einem gemeinsam verwendeten Operanden (gemeinsam verwendeten Multiplikanden). Eine beträchtliche Verringerung des Energieverbrauchs kann aufgrund der Möglichkeit erreicht werden, die verschiedenen Pipeline-Stufen auf einen Energiesparmodus einzustellen, wenn sie nicht benötigt werden, und/oder verschiedene Pipeline-Stufen zu verwenden, um verschiedene Rechenoperationen im Wesentlichen gleichzeitig auszuführen. Eine Hochgeschwindigkeitsleistung (hoher Durchsatz) ist auf die Nutzung des Pipeline-Prinzips mit einer flexiblen Möglichkeit des Ausgleichens der Verzögerungen verschiedener Pipeline-Stufen und der Verkürzung der Periode der Gesamtstruktur auf die Verzögerung des schnellsten Blockes zurückzuführen. Eine Erhöhung des Durchsatzes wird mit einer minimalen Vergrößerung der Fläche und ohne Vergrößerung der Breite des Ein-/Ausgabebusses, verglichen mit einem einzelnen, nach dem Pipeline-Prinzip arbeitenden Multiplikator nach dem Stand der Technik (Radix-4 oder höher), erreicht.
  • Die konfigurierbare Struktur macht es möglich, dieselbe Vorrichtung für verschiedene Operationen wiederzuverwenden. Außerdem können Operationen mit unterschiedlicher Bitgenauigkeit der Eingangsargumente implementiert werden, z. B. acht parallele 8-Bit-Additionen oder vier parallele 16-Bit-Additionen.
  • Wesentliche Zeit- und Strom-/Energieeinsparungen werden dadurch erzielt, dass der kostenaufwendigste Teil, die Berechnung der potentiellen Teilprodukte, aus den meisten der Multiplikationsoperationen entfernt wird.
  • Ein weiterer Vorteil einer vorteilhaften Ausführungsform der vorliegenden Erfindung ist, dass es nicht notwendig ist, die erste Pipeline-Stufe der Architektur, d. h. die Anordnungen von Addierern zum Berechnen potentieller Teilprodukte, mit anderen Stufen abzugleichen, da sie sich während der meisten Zyklen außerhalb des kritischen Pfades befindet.
  • Das Einführen der Speichereinheit ermöglicht auch, die erste Pipeline-Stufe für eine andere Aufgabe parallel mit den anderen Stufen zu benutzen, das heißt, gleichzeitig mit dem Implementieren einer auf Multiplikation beruhenden Operation können parallele Additions-/Subtraktionsoperationen (mit variierenden Genauigkeit) für eine andere Aufgabe implementiert werden.
  • Aufgrund der Multifunktionalität kann eine vorteilhafte Ausführungsform der vorliegenden Erfindung verschiedene Hardware-Beschleuniger ersetzen, die auf gewisse Signalverarbeitungs-Operationen, zum Beispiel Video-/Bildverarbeitungsoperationen, spezialisiert sind.
  • Kurzbeschreibung der Zeichnungen
  • Im Folgenden wird die vorliegende Erfindung unter Bezugnahme auf die beigefügten Zeichnungen ausführlicher beschrieben, wobei:
  • 1 eine typische Struktur von Radix-4 Boothumcodierten Multiplikatoren zeigt,
  • 2 eine allgemeine Struktur von Radix-T Boothumcodierten (T ≥ 8) oder nicht umcodierten (T ≥ 4) Multiplikatoren zeigt,
  • 3a eine Ausführungsform des Summationsblockes innerhalb einer parallelen Radix-T MAC-Einheit-Struktur zeigt, in welcher der Summationsblock als eine gemeinsame Kompressionsanordnung für n/t ausgewählte Teilprodukte und für die Rückführung des Summen- und des Übertrag-Terms implementiert ist,
  • 3b eine andere Ausführungsform des Summationsblockes innerhalb einer parallelen Radix-T MAC-Einheit-Struktur zeigt, in welcher der Summationsblock als eine geteilte Kompressionsanordnung implementiert ist,
  • 4a eine allgemeine Struktur einer Architektur "Summe der absoluten Differenzen" zeigt, in welcher die DS-Einheit als ein Subtrahierer arbeitet, gefolgt von XOR-Gliedern (EXKLUSIV-ODER-Gliedern),
  • 4b eine allgemeine Struktur der DS-Einheit zeigt,
  • 5 ein Beispiel der Architektur "Summe der absoluten Differenzen" zeigt, in welcher p = 1, s = 8, n = 8,
  • 6 die allgemein Struktur der konfigurierbaren Vorrichtung gemäß der vorliegenden Erfindung für mehrere Multiplikationen/MAC-Operationen als ein vereinfachtes Blockschaltbild zeigt,
  • 7 eine vorteilhafte Ausführungsform der konfigurierbaren Vorrichtung von 6 zeigt,
  • 8 die allgemein Struktur der Vorrichtung gemäß der vorliegenden Erfindung für Matrix-Vektor-Operationen als ein vereinfachtes Blockschaltbild zeigt,
  • 9 eine vorteilhafte Ausführungsform der Architektur gemäß der vorliegenden Erfindung für Matrix-Vektor-Arithmetik von zwei gleichzeitigen (13×13)-Bit-Multiplizier-Akkumulier-Operationen zeigt,
  • 10a einen Registerspeicher mit einer Adressiereinheit zeigt, die in einem Zyklusmodus mod P arbeitet,
  • 10b einen Schieberegisterspeicher mit einer Zyklusmodus mod P Rückkopplungsschleife zeigt,
  • 11 eine allgemeine Struktur einer multifunktionalen Architektur für Video- und Bildverarbeitung gemäß der vorliegenden Erfindung zeigt,
  • 12a eine beispielhafte Realisierung der AA/DAS-Einheit zeigt,
  • 12b eine andere beispielhafte Realisierung der AA/DAS-Einheit zeigt,
  • 13 eine beispielhafte Realisierung einer multifunktionalen Architektur für Video- und Bildverarbeitung zeigt, die durch Vereinheitlichung der SAD-Struktur von 5 und der Architektur für Matrix-Vektor-Arithmetik von 9 erhalten wurde, und
  • 14 eine Vorrichtung gemäß einer vorteilhaften Ausführungsform der Erfindung als ein vereinfachtes Blockschaltbild zeigt.
  • Ausführliche Beschreibung der Erfindung
  • Im Folgenden wird die erste vorteilhafte Ausführungsform der vorliegenden Erfindung ausführlicher beschrieben. Die allgemeine Struktur der ersten Ausführungsform der Vorrichtung gemäß der vorliegenden Erfindung ist in 6 dargestellt. Die Vorrichtung 1 ist in eine Menge von verschiedenen Pipeline-Stufen P1 bis P4 unterteilt. Bei dieser Ausführungsform umfasst die Vorrichtung 1 vier Pipeline-Stufen, doch es ist offensichtlich, dass innerhalb des Rahmens der vorliegenden Erfindung die Anzahl der Pipeline-Stufen von vier verschieden sein kann.
  • Die Vorrichtung gemäß der ersten vorteilhaften Ausführungsform der vorliegenden Erfindung umfasst eine Vielzahl (Bank) von Multiplikatoren/MAC-Einheiten. Die allgemeine Struktur der Vielzahl von Bänken von Radix-T Booth-umcodierten (T = 8,16) oder nicht umcodierten (T = 4,8) Multiplikatoren ist in 6 schematisch dargestellt. Die vorteilhafte Ausführungsform der Struktur für eine Bank von Multiplikatoren/MAC-Einheiten kann allgemein als eine Pipeline-Vorrichtung beschrieben werden, wobei die erste Pipeline-Stufe P1 aus mehreren, z. B. p, Anordnungen von s Addierern (AAs) 2 besteht und alle Anordnungen von s Addierern 2 dieselben Eingangsleitungen 6 gemeinsam haben. Die zweite Pipeline-Stufe P2 besteht aus mehreren, z. B. q, Auswahlblöcken (SBs) 3, die dritte Stufe P3 besteht aus mehreren, z. B. u, Kompressionsanordnungen (CAs) 4, und die vierte Pipeline-Stufe P4 wird von mehreren, z. B. v, Carry-Look-Ahead-Endaddierern (CLAs) 5 gebildet. Die Basis-Funktionsblöcke (AAs, SBs, CAs und CLAs) können in Wirklichkeit dieselben sein wie diejenigen, die in den Multiplikatoren und/oder MAC-Einheiten des entsprechenden Typs nach dem Stand der Technik verwendet werden können. Eines der charakteristischen Merkmale der Vorrichtung gemäß der vorliegenden Erfindung ist, dass sie Auswahlmittel aufweist, um den (die) Signalweg(e), die sich innerhalb der Vorrichtung befinden, umzulenken, und um außerdem ein Ausgangssignal aus einer Menge von internen Signalen auszuwählen. Die Auswahlmittel wählen den Eingang mindestens einer Pipeline-Stufe unter mindestens zwei Alternativen aus. Bei einer vorteilhaften Ausführungsform werden mindestens einige der Basisblöcke der Struktur nach dem Stand der Technik durch mehr als einen Basisblock ersetzt. Die Funktionsweise der Vorrichtung hängt von verschiedenen Parametern (p, q, u und v) ab, durch deren geeignete Auswahl die Vorrichtung mit gut abgeglichenen Pipeline-Stufen konstruiert werden kann. Blöcke innerhalb einer Pipeline-Stufe arbeiten vorzugsweise auf eine zeitlich verschachtelte Art und Weise, derart, dass Durchsätze der Pipeline-Stufen verändert werden können, um sie annähernd aneinander anzugleichen und um die gewünschte Arbeitsschrittdauer zu erreichen.
  • Das Prinzip des zeitlich verschachtelten Betriebs mehrerer Funktionsblöcke wird im Weiteren kurz erläutert. Es werde angenommen, dass ein Funktionsblock FB in einer Pipeline-Stufe eines größeren Systems verwendet werden soll, und angenommen, dass er eine geschätzte Verzögerung von DFB ≈ pTdes hat (jedoch DFB ≤ PTdes), wobei pTdes die gewünschte Arbeitsschrittdauer des Systems ist. Dann kann, um zu bewirken, dass die Pipeline-Stufe P1, ..., P4 mit dem Durchsatz arbeitet, welcher der Dauer eines Schrittes entspricht, der serielle Funktionsblock durch eine Vielzahl FB1, FB2, ..., FBw von w Funktionsblöcken ersetzt werden, welche Pipeline-Register (Latches) R1, ..., Rw an ihren Eingängen und einen w:i Multiplexer 602, 603, 604, 605 an ihren Ausgängen aufweisen. Der Parameter w hängt von der jeweiligen Pipeline-Stufe ab. Für die erste Pipeline-Stufe P1 entspricht der Parameter w dem Parameter p, d. h. es sind p Pipeline-Register R1, ..., Rp vorhanden, und der Multiplexer 602 der ersten Pipeline-Stufe wählt einen der p Eingänge als seinen Ausgang. Für die zweite Pipeline-Stufe P2 entspricht der Parameter w dem Parameter q, d. h. es sind q Pipeline-Register R1, ..., Rq vorhanden, und der Multiplexer 603 der zweiten Pipeline-Stufe P2 wählt einen der q Eingänge als seinen Ausgang. Für die dritte Pipeline-Stufe P3 entspricht der Parameter w dem Parameter u, d. h. es sind u Pipeline-Register R1, ..., Ru vorhanden, und der Multiplexer 604 der dritten Pipeline-Stufe P3 umfasst zwei Multiplexer (nicht dargestellt), von denen jeder einen der u Eingänge als seinen Ausgang wählt. Für die vierte Pipeline-Stufe P4 entspricht der Parameter w dem Parameter v, d. h. es sind v Pipeline-Register R1, ..., R, vorhanden, und der Multiplexer 605 der vierten Pipeline-Stufe P4 wählt einen der v Eingänge als seinen Ausgang 414. Der gemeinsame Eingang der Pipeline-Stufen P1, P2, P3, P4 ist mit jedem der w Pipeline-Register R1, ..., Rw verbunden. Jedoch ist jedes dieser Register nur bei einem von jeweils w Arbeitsschritten geöffnet, mit einem zeitlichen Versatz von einem Arbeitsschritt. Auf diese Weise wird in jedem Arbeitsschritt der Eingang I in Wirklichkeit mit dem Eingang nur eines Funktionsblockes verbunden, während die anderen Verbindungen inaktiv sind, da die Eingangsregister aller anderen Funktionsblöcke innerhalb der jeweiligen Vielzahl, welche die betrachtete Pipeline-Stufe bildet, für das Schreiben geschlossen sind. Das Register R1 am Eingang des ersten Funktionsblockes FB1 ist während des ersten von jeweils w Arbeitsschritten geöffnet, das Register R2 am Eingang des zweiten Funktionsblockes FB2 ist während des zweiten von jeweils w Arbeitsschritten geöffnet, usw. Allgemein ist im Arbeitsschritt t = 1, 2, ..., K der Eingang I in Wirklichkeit mit dem Eingang nur von FBf verbunden, wobei f = (t – 1)mod w + 1. Daher wird der Eingang I räumlich gemeinsam genutzt, jedoch zeitlich aufgeteilt unter den Funktionsblöcken FB1, ..., FBw, der betrachteten Pipeline-Stufe. Während des Betriebs des Systems tritt im Arbeitsschritt t = 1, 2, ..., K ein Sample Xt des Eingangsdatenstroms der betreffenden Stufe in den Funktionsblock FBf ein, f = (t – 1)mod w + 1, welcher auf dieser Stufe initiiert wird. Nachdem der FBf seinen Betrieb über Xt am Ende des Arbeitsschrittes t + w – 1, t = 1, 2, ..., K, beendet, leitet der w:1-Multiplexer 602, 603, 604, 605 an den Ausgängen der Funktionsblöcke im nächsten Arbeitsschritt t + w, t = 1, 2, ..., K, die in FBf erhaltenen Ergebnisse zum Ausgang der Stufe weiter. Aus diesem Grunde arbeitet der Multiplexer 602, 603, 604, 605 in einem Zyklusmodus mod w.
  • Durch Ersetzen jedes Funktionsblockes einer Multiplikator-/MAC-Einheit-Struktur nach dem Stand der Technik durch mehrere ähnliche Funktionsblöcke und durch Anwendung des Prinzips des zeitlich verschachtelten Betriebs kann ein besserer Abgleich der Pipeline-Stufen im Hinblick auf eine vorgegebene Arbeitsschrittdauer durch geeignete Wahl der Anzahlen der Blöcke innerhalb jeder Pipeline-Stufe (das heißt der Parameter p, q, u und v) erreicht werden. Unter der Annahme, dass die Verzögerungen der vier Pipeline-Stufen innerhalb einer Multiplikator-/MAC-Einheit-Struktur nach dem Stand der Technik DAA, DSB, bzw. DCA sind und der gewünschte Durchsatz des Systems Ndes Multiplikationen/MAC- Operationen pro Sekunde beträgt, dann wird für die gewünschte Arbeitsschrittdauer ein Wert von Tdes Sekunden gewählt, so dass Tdes ≤ 1/N des ist, und für die erwähnten Entwurfsparameter werden die Werte p = ⎾DAA/Tdes⏋, q = [DSB/Tdes⎾, u = ⎾CA/Tdes⏋ und ⎾TDCLA/Tdes⏋ gewählt, wobei die Schreibweise ⎾x⏋ das Aufrunden auf den nächsten ganzzahligen Wert bedeutet.
  • Die Konfigurierbarkeit der Struktur gemäß der ersten vorteilhaften Ausführungsform der vorliegenden Erfindung wird erreicht, indem ein oder mehrere Auswahlmittel, z. B. Multiplexer 15, 16, 17, an den Eingängen der ersten P1, dritten P3 und der vierten Pipeline-Stufe P4 eingefügt werden. Die Multiplexer 15, 16, 17 sind vorteilhafterweise 2:1-Multiplexer. Sie werden durch Signale c1, c2 bzw. c3 gesteuert. Die Struktur umfasst außerdem einen Ausgangsselektor 20, welcher von dem ersten Steuersignal c1 und einer ODER-Kombination des zweiten c2 und des dritten Steuersignals c3 (d. h. c2 v c3) gesteuert wird. Der Ausgangsselektor 20 wählt die Daten vom Ausgang der ersten P1 oder von der letzten Pipeline-Stufe P4, die mit dem Ausgangsbus 14 der Struktur verbunden werden sollen. Die ersten Eingänge der Multiplexer 15, 16, 17 sind mit entsprechenden Leitungen des Eingangsbusses 6 der Struktur verbunden, und die zweiten Eingänge der Multiplexer 15, 16, 17 sind so angeschlossen, dass, wenn die zweiten Eingänge aktiviert sind, die Struktur als eine Multiplikations-/MAC-Operations-Vorrichtung arbeitet. Daher sind für unterschiedliche Mengen von Steuersignalen c1, c2 und c3 unterschiedliche Konfigurationen der Struktur möglich. Die Abhängigkeit der Konfiguration von diesen Signalen ist folgende.
  • Wenn sämtliche Steuersignale c1, c2, c3 auf den logischen Zustand 1 gesetzt sind, d. h. c1 = c2 = c3 = 1, verhält sich die Struktur wie eine Multiplikations-/MAC-Operations-Vorrichtung. In einer Situation, in welcher sich das erste Steuersignal c1 im logischen Zustand 0 befindet und die anderen zwei Steuersignale c2, c3 sich im logischen Zustand 1 befinden, d. h. c1 = 0; c2 = c3 = 1, verhält sich die Struktur wie eine Anordnung von sp Addierern/Subtrahierern. Nur die erste Pipeline-Stufe P1 (d. h. die Anordnung von Addierern 2) ist aktiviert, während sich die anderen im Ruhezustand befinden. Die dritte Alternative ist, dass das erste Steuersignal c1 auf den logischen Zustand 1 gesetzt ist, während das zweite c2 und das dritte Steuersignal c3 auf den logischen Zustand 0 gesetzt sind (c1 = 1; c2 = 0; c3 = 0). Dies bedeutet, dass sich die Struktur wie ein Akkumulator verhält. Nur Kompressionsanordnungen 4 und die Endaddierer 5 arbeiten, während die Anordnungen von Addierern und die Auswahlblöcke sich im Ruhezustand befinden. Bei der vierten Alternative sind das erste c1 und das zweite Steuersignal c2 beide auf den logischen Zustand 1 gesetzt, und das dritte Steuersignal c3 ist auf den logischen Zustand 0 gesetzt (c1 = c2 = 1; c3 = 0). In dieser Situation verhält sich die Struktur wie ein Addierer mit einer weiten Genauigkeit. Bei einer weiteren Alternative, bei der c1 = c2 = c3 = 0 ist, verhält sich die Struktur gleichzeitig wie eine Anordnung von sp Addierern/Subtrahierern und wie ein Akkumulator. Es ist offensichtlich, dass die oben erwähnten Auswahlmittel 16, 17, 20 sowie die Abhängigkeit der Struktur/Betriebsweisen von den Zuständen der Steuersignale c1, c2, c3 nur eine mögliche Alternative sind, doch es können auch andere Alternativen im Rahmen der vorliegenden Erfindung angewendet werden. Dies gilt auch für andere Steuersignale, welche später in dieser Beschreibung beschrieben werden.
  • In der Struktur von 6 sind zwei weitere Steuersignale c4 und c5 vorhanden, welche Multifunktionalität zu der Struktur hinzufügen, ohne sie umzukonfigurieren. Das vierte Steuersignal c4 aktiviert (falls z. B. c4 = 1) oder deaktiviert (falls z. B. c4 = 0) Rückkopplungsschleifen zwischen Ausgängen und Eingängen von Kompressionsanordnungen 4 innerhalb der dritten Pipeline-Stufe P3. Daher funktioniert die Struktur als ein Multiplikator, falls c1 = c2 = c3 = 1, c4 = 0, und sie funktioniert als eine MAC-Einheit, falls c1 = c2 = c3 = c4 = 1. Das fünfte Steuersignal c5 (welches ein 1-, 2- oder 3-Bit-Signal sein kann) steuert die Genauigkeit der Addierer/Subtrahierer innerhalb der ersten Pipeline-Stufe P1, indem es Carry-Propagation (Übertragsfortpflanzung) zwischen Blöcken von Volladdierern 5 ermöglicht (entsprechendes Bit von c5 ist z. B. logische 1) oder stoppt (entsprechendes Bit von c5 ist z. B. logische 0). Auf diese Weise können die mehreren Anordnungen von Addierern, die sp Addierer/Subtrahierer für m-Bit-Eingänge enthalten, auch als eine Vielzahl von 2sp Addierern/Subtrahierern für (m/2)-Bit-Eingänge oder als eine Vielzahl von 4sp Addierern/Subtrahierern für (m/4)-Bit-Eingänge arbeiten, usw. Es ist außerdem möglich, dass die Auswahlblöcke 3, die Kompressionsanordnungen 4 und die Endaddierer 5 geringfügig modifiziert werden können und steuerbar mittels eines Steuersignals gemacht werden können, das auch die Implementierung von Multiplikations- /MAC-Operationen unterschiedlicher Genauigkeit ermöglicht.
  • Ein Beispiel der nicht umcodierten Radix-8 Multiplikatorstruktur vom Typ 1 gemäß der ersten vorteilhaften Ausführungsform der vorliegenden Erfindung ist in 7 dargestellt. Dieses Beispiel entspricht dem Fall, in dem m = 13 (Genauigkeit des Multiplikanden), n = 13 (Genauigkeit des Multiplikators) und p = q = u = v = 1 ist. Es sind insgesamt acht 8-Bit-Addierer/Subtrahierer innerhalb der ersten Pipeline-Stufe P1 vorhanden, welche in Abhängigkeit von dem fünften Steuersignal c5 zu vier 16-Bit-Addierern/Subtrahierern konfiguriert werden können. In Abhängigkeit von dem vierten Steuersignal c4 kann die Kompressionsanordnung der dritten Pipeline-Stufe P3 in diesem Beispiel so konfiguriert werden, dass sie entweder insgesamt sieben Eingänge hat, von welchen zwei in Wirklichkeit Rückkopplungen von ihren Ausgängen sind (falls z. B. c4 = 1), oder dass sie nur fünf Eingänge (X, Y, Y1, Y2, Y3) hat, ohne eine Rückkopplung (falls z. B. c4 = 0). Das vierte Steuersignal c4 kann im letzteren Falle mit einem internen Takt der Kompressionsanordnung (nicht dargestellt) kombiniert werden, um diejenigen Volladdierer anzuhalten (zu sperren), welche nicht benötigt werden. Der Eingangsbus 6 wird verwendet, um entweder den Multiplikanden (das erste Steuersignal c1 ist z. B. logische 1) oder die Addenden (das erste Steuersignal c1 ist z. B. logische 0) einzugeben.
  • Architekturen für Matrix-Vektor-Arithmetik
  • Im Folgenden werden die vorteilhaften Ausführungsformen der Multiplikator-/MAC-Einheit-Strukturen gemäß der vorliegenden Erfindung verwendet, um Matrix-Vektor-Operationen auszuführen, wie etwa eine Multiplikation eines Skalars mit einem Vektor oder mit einer Matrix, eine Multiplikation einer Matrix mit einem Vektor (und somit eine Multiplikation einer Matrix mit einer Matrix, eine Berechnung einer inversen Matrix, Farbumwandlungen, schnelle orthogonale Transformationen, z. B. FFT, schnelle DCT usw.) und eine Faltung oder FIR-Filterung, und somit Filterbank-Implementierungen und insbesondere Implementierungen diskreter Wavelet-Transformationen. Diesen Operationen ist gemeinsam, dass ein Multiplikand x mit einer Anzahl von Multiplikatoren ai, i = l, ..., K, multipliziert wird. Andererseits besteht ein wesentliches Merkmal der Multiplikationsverfahren mit hohem Radix darin, dass eine signifikante Komplexität vom zweiten Schritt (Aufsummieren von Teilprodukten) zum ersten Schritt (Bilden von Teilprodukten) bewegt wird. Je höher das Radix ist, desto mehr Komplexität ist zu bewegen.
  • Die Grundidee dieser vorteilhaften Anwendung ist es, potentielle Teilprodukte des gemeinsamen Multiplikanden x nur einmal zu berechnen, wenn er mit dem ersten Multiplikator a1 multipliziert wird, und dann diese potentiellen Teilprodukte wiederzuverwenden, wenn x mit den restlichen Multiplikatoren ai, i = 2, ..., K, multipliziert wird. Auf diese Weise wird dann nur eine von K Multiplikationen vollständig ausgeführt, während K-1 Multiplikationen unvollständig ausgeführt werden, ohne dass der komplizierteste Teil des Multiplikationsverfahrens "mit hohem Radix höher als vier" (das heißt die Berechnung der potentiellen Teilprodukte) ausgeführt wird. Es ist klar, dass dann erhebliche Einsparungen an Zeit und beim Strom-/Energieverbrauch erzielt werden.
  • Entsprechend dieser Idee kann die allgemeine Struktur der vorgeschlagenen Architektur für Matrix-Vektor-Arithmetik aus der Struktur der Multiplikator-/MAC-Einheit der ersten vorteilhaften Ausführungsform der vorliegenden Erfindung abgeleitet werden. Dies wird erreicht, indem ein Speicher 21 integriert wird, wie in 8 dargestellt. Es ist ein sechstes Steuersignal c6 vorhanden, entsprechend dem der Speicher 21 für Schreiben entweder geöffnet ist (wenn das sechste Steuersignal c6 z. B. auf logische 0 (Low) gesetzt ist) oder geschlossen ist (wenn das sechste Steuersignal c6 z. B. auf logische 1 (High) gesetzt ist). Wenn der Speicher 21 auf "für Schreiben geöffnet" gesetzt ist, können die potentiellen Teilprodukte vom Ausgang der mehreren Anordnungen von Addierern 2 im Speicher 21 gespeichert werden. Dasselbe Signal c6 kann verwendet werden, um den 2:1-Multiplexer 22 zu steuern. Der erste Eingang das Multiplexers 22 ist mit dem Ausgang der mehreren Anordnungen von Addierern 2 verbunden, und der zweite Eingang des Multiplexers 22 ist mit dem Ausgang des Speichers 21 verbunden. Daher werden die potentiellen Teilprodukte dem Eingang der mehreren Auswahlblöcke 3 entweder direkt vom Ausgang der mehreren Anordnungen von Addierern 2 zugeführt (wenn das sechste Steuersignal c6 z. B. auf logische 0 gesetzt ist), oder vom Speicher 21 (wenn das sechste Steuersignal c6 z. B. auf logische 1 gesetzt ist).
  • 9 zeigt eine beispielhafte Struktur für Matrix-Vektor-Arithmetik für den Fall, in dem zwei (13×13)-Bit-Multiplizier-Akkumulier-Operationen gleichzeitig ausgeführt werden können. Die Struktur umfasst zwei separate Auswahlblöcke 3a, 3b, die durch die Bits von zwei verschiedenen Multiplikatoren gesteuert werden. Entweder die potentiellen Teilprodukte desselben Multiplikanden (falls c2 = c3) oder potentielle Teilprodukte von verschiedenen Multiplikanden (falls c2 ≠ c3) können ausgewählt werden, um in die Auswahlblöcke 3a, 3b eingegeben zu werden. Die Ausgänge der zwei Auswahlblöcke werden in zwei verschiedene Kompressionsanordnungen eingegeben, die 31-Bit-Rückkopplungen aufweisen (b = 32 ist in diesem Falle die maximale Bitgenauigkeit für das endgültige akkumulierte Ergebnis). Die Ausgänge Summe S und Übertrag C dieser Kompressionsanordnungen können entweder innerhalb der (4×31)-Eingänge-Kompressionsanordnung kombiniert werden, gefolgt von einem Endaddierer, um einen Akkumulationsterm zu bilden, oder sie können paarweise addiert werden, um zwei Akkumulationsterme zu bilden. Auf diese Weise arbeiten auf der Akkumulationsstufe zwei separate Kompressionsanordnungen, die jeweils eine geringere Tiefe und demzufolge eine kürzere Rückkopplungsschleife aufweisen. Danach werden die zwei Paare von Summen- und Übertrag-Termen entweder separat (paarweise) in zwei CPAs addiert, oder sie werden gemeinsam im dritten Summationsblock addiert. Im ersten Fall werden die Ergebnisse von zwei separaten Operationen (z. B. zwei Ausgangskomponenten bei einer Matrix-Vektor-Multiplikation) gleichzeitig erhalten. Im zweiten Fall wird die Berechnung einer komplexen Operation in zwei kleinere aufgespalten, und danach werden die Ergebnisse kombiniert.
  • Eigentlich kann jeder beliebige Lese-Schreib-Speicher in der vorgeschlagenen Struktur für Matrix-Vektor-Arithmetik verwendet werden. Zwei empfohlene Speichertypen sind in 10a und 10b dargestellt. Der in 10a dargestellte Speichertyp entspricht dem Fall eines Registerspeichers mit R Registern der Länge L, wobei L genügend groß ist, um potentielle Teilprodukte für einen Multiplikanden in einem Register zu speichern: L ≥ (m + t)s, wobei m die Bitgenauigkeit des Multiplikanden ist, t log T, T das Radix des angewendeten Multiplikationsverfahrens ist und s die Anzahl der Addierer/Subtrahierer innerhalb jeder Anordnung von Addierern ist. Die Adressiereinheit dieses Speichertyps sollte in der Lage sein, entsprechend einem in einem Zyklusmodus mod P für eine beliebige positive ganze Zahl P ≤ R Adressen zu generieren. Dies bedeutet, dass im Arbeitsschritt t = 1, 2, ... die Adressiereinheit a(t) = (t – 1) mod P als den aktuellen Adresswert generiert. Danach wird der Wert des potentiellen Teilproduktes auf der Eingangsleitung in das Register a(t), a(t) ∈ {0, 1, ..., R – 1} geschrieben, wenn das sechste Steuersignal c6 Low ist (in den Speicher), oder der Inhalt des Registers a(t), a(t) ∈ {0, 1, ..., R – 1}, d. h. früher gespeicherte Werte potentieller Teilprodukte, wird in die Ausgangsleitung geschrieben, wenn das sechste Steuersignal c6 High ist (aus dem Speicher).
  • Der zweite Speichertyp, der in 10b dargestellt ist, arbeitet in einer ähnlichen Weise mit einem mod P Zyklus, ist jedoch als ein Schieberegister mit steuerbarer Rückkopplung organisiert. In jedem Arbeitsschritt werden Daten aus der p-ten Registereinheit, p = 0, ..., P – 2, zur (p + 1)-ten Registereinheit bewegt, wenn die Letztere nicht angehalten (gesperrt) ist. Es sind Rückkopplungsleitungen von jeder der Registereinheiten vorhanden. Alle Rückkopplungsleitungen werden in einen (R + 1):1-Multiplexer eingespeist, der auch die Eingangsleitung als einen weiteren Eingang hat (zum Speicher). Der Multiplexer wird von einem (log R)-Bit-Signal gesteuert, dessen Wert auf c6P gesetzt wird, so dass entweder Daten von der Eingangsleitung (falls c6 = 0) oder von der Rückkopplungsschleife, welche vom Ausgang des (P – 1)-ten Registers kommt (falls c6 = 1), in das 0-te Register geschrieben werden. Der Ausgang vom Speicher wird immer aus dem 0-ten Register entnommen.
  • Im Folgenden wird die Ausführung von drei Operationen, die bei der Video- und Bildbearbeitung häufig implementiert werden, ausführlicher betrachtet. Es ist anzumerken, dass dies nur beispielhafte Implementierungen nur für spezielle Operationen sind, dass die vorliegende Erfindung jedoch nicht allein auf diese Operationen beschränkt ist, und auch nicht genau auf die vorgestellten Verfahren. Alle anderen Operationen, welche eine Multiplikation eines gemeinsamen Multiplikanden mit einer Anzahl von Multiplikatoren umfassen, können in ähnlicher Weise mittels der erfindungsgemäßen Architektur für Matrix-Vektor-Arithmetik ausgeführt werden. Außerdem können andere, ähnliche Algorithmen für die betrachteten Operationen entwickelt werden.
  • Zuerst wird die Ausführung der Operation der Multiplikation eines Skalars mit einem Vektor xa betrachtet, welche der offensichtlichste Fall ist, in dem ein gemeinsamer Multiplikand (Skalar) x mit einer großen Anzahl von Multiplikatoren ai, i = 1, ..., K, den Komponenten des Vektors a, zu multiplizieren ist. Im ersten Schritt, wenn die Multiplikation des gemeinsamen Multiplikanden mit dem ersten Multiplikator a1 implementiert wird, wird das sechste Steuersignal c6 auf Low gesetzt, so dass potentielle Teilprodukte von x direkt von den Anordnungen von Addierern 2 der ersten Pipeline-Stufe P1 zu den mehreren Auswahlblöcken 3 der zweiten Pipeline-Stufe P2 durchlaufen und gleichzeitig in den Speicher 21 geschrieben werden. Der Speicher 21 ist so eingestellt, dass er gemäß einem mod 1 Modus arbeitet, und alle seine Register mit Ausnahme des 0-ten sind angehalten (gesperrt). Alle Anordnungen von Addierern 2a der ersten Pipeline-Stufe mit Ausnahme der ersten werden ebenfalls angehalten, wenn eine Multiplikation nur eines Skalars mit einem oder mit mehreren Vektoren zu implementieren ist. Ab dem zweiten Arbeitsschritt wird das sechste Steuersignal c6 auf High gesetzt, so dass der Speicher 21 für Schreiben geschlossen ist, und potentielle Teilprodukte von x, welche nach dem ersten Schritt in den Speicher geschrieben worden sind, werden aus dem Speicher 21 über den zweiten Eingang des entsprechenden 2:1-Multiplexers 22 zu den Auswahlblöcken 3 abgerufen. Gleichzeitig werden alle Anordnungen von Addierern 2 (einschließlich der ersten) entweder angehalten (gesperrt) oder zu einer anderen Aufgabe umgeschaltet. Daher werden Zeitersparnisse infolge der Verkürzung des kritischen Pfades der Multiplikationsoperation durch das Entfernen des kostenaufwendigsten Teils, nämlich der Berechnung potentieller Teilprodukte, erzielt. Es werden wesentliche Einsparungen beim Strom- und Energieverbrauch erzielt, da die erste Pipeline-Stufe während K – 1 von K Arbeitsschritten angehalten oder auf eine andere Aufgabe umgeschaltet ist. Ein anderer Vorteil ist, dass bei diesem Berechnungsschema die erste Pipeline-Stufe P1 nicht mit anderen Pipeline-Stufen P2 bis P4 abgeglichen werden muss, da sie während K – 1 von K Arbeitsschritten nicht im kritischen Pfad enthalten ist. Ein weiterer Vorteil ist, dass der Multiplikand x nur einmal aus dem externen Speicher (nicht dargestellt) abgerufen wird, während er bei einer herkömmlichen Implementierung K mal abgerufen werden müsste.
  • Die zweite Operation, welche hier betrachtet werden soll, ist die Matrix-Vektor-Multiplikation s = Ax oder, in äquivalenter Schreibweise,
    Figure 00440001
  • Diese Operation ist ein Teil vieler Algorithmen der linearen Algebra und der Video-/Bildverarbeitung, wie etwa der Multiplikation einer Matrix mit einer anderen, der Berechnung einer inversen Matrix, von Bild-Farbraumumwandlungen, schnellen orthogonalen Transformationen (z. B. FFT, schnelle DCT usw.), geometrischen Manipulationen, Flankenerkennung und anderen. Die Matrix-Vektor-Multiplikation könnte als mehrere Vektor-Vektor-Multiplikationen betrachtet werden, und so könnte sie mit einer MAC-Einheit oder mit einer Bank von diesen implementiert werden. Es ist jedoch anzumerken, dass jede Komponente (Multiplikand) xj, j = 1, ..., P, des Eingangsvektors x mit K Multiplikatoren multipliziert wird, den Komponenten der j-ten Spalte der Matrix A. Die Benutzung des Speichers 21 innerhalb der Struktur für Matrix-Vektor-Arithmetik gemäß dieser Ausführungsform der vorliegenden Erfindung ermöglicht, potentielle Teilprodukte nur einmal für jede Komponente xj, j = 1, ..., P, des Eingangsvektors x zu berechnen. Die potentiellen Teilprodukte werden dann im Speicher 21 gespeichert, vorausgesetzt, dass dieser ausreichend viele Register enthält (d. h. P ≤ R).
  • Wie aus der Graphentheorie bekannt ist, drückt der oben erwähnte kritische Pfad die längste Route von einem Anfangsknoten zu einem Endknoten aus. Angewendet auf die vorliegende Erfindung drückt der kritische Pfad die längste Route vom Beginn des Berechnungsprozesses bis zum Ende des Berechnungsprozesses in dem Pipeline-System aus. Die Länge des kritischen Pfades beschreibt die Zeit, welche die Ausführung der Rechenoperation erfordert. Durch Anwendung einer Analyse des kritischen Pfades ist es möglich, solche Teile des Systems zu finden, welche die Länge des kritischen Pfades beeinflussen. Wenn solche Teile gefunden werden, können sie analysiert werden, um zu ermitteln, ob irgendwelche Möglichkeiten existieren, die Länge dieser Teile zu verkürzen. Dementsprechend ist es normalerweise weder notwendig noch nützlich zu versuchen, solche Teile zu verkürzen, welche nicht zum kritischen Weg gehören.
  • Um die Multiplikation einer (K×P)-Matrix mit einem Vektor zu initialisieren, wird die Struktur gemäß einer vorteilhaften Ausführungsform der vorliegenden Erfindung konfiguriert, indem geeignete Werte für die Steuersignale wie folgt eingestellt werden. Der Speicher 21 wird so eingestellt, dass er nach einem mod P Modus arbeitet und die Register des Speichers von P bis R angehalten werden. Die Kompressionsanordnung 4 der Architektur wird so eingestellt, dass sie als ein Akkumulator arbeitet, indem das fünfte Steuersignal c5 auf High gesetzt wird. Das sechste Steuersignal c6 wird am Anfang auf Low gesetzt, während potentielle Teilprodukte für jede Komponente xj, j = 1, ..., P, in P Arbeitsschritten t = p + 1, ..., p + P gebildet werden, wobei p Schritte die Verzögerung der ersten Pipeline-Stufe ist, welche gleich der Anzahl der Anordnungen von Addierern in ihr ist. Während dieser Arbeitsschritte werden potentielle Teilprodukte für eine Komponente xj, j = 1, ..., P, direkt von den Anordnungen von Addierern 2 der ersten Pipeline-Stufe P1 über den Multiplexer 22 zu den mehreren Auswahlblöcken 3 der zweiten Pipeline-Stufe P2 übermittelt, und sie werden gleichzeitig in den Speicher 21 geschrieben. Dadurch wird die Multiplikation der ersten Zeile der Matrix A mit dem Eingangsvektor x implementiert, und im Wesentlichen gleichzeitig werden potentielle Teilprodukte für jede Komponente xj, j = 1, ..., P, in aufeinander folgenden Registern gespeichert. Nach dem Arbeitsschritt p + P wird das Steuersignal c6 auf High gesetzt, so dass der Speicher 21 für Schreiben geschlossen ist, und potentielle Teilprodukte für x3, j = 1, ..., P, werden aus dem Speicher 21 über den zweiten Eingang des 2:1-Multiplexers zyklisch zum Eingang der mehreren Auswahlblöcke 3 abgerufen. Außerdem wird das fünfte Steuersignal c5 für einen Schritt auf Low gesetzt, um eine neue Akkumulation neu zu starten. Dies wird K–1 Male wiederholt, bis sämtliche Zeilen der Matrix A mit dem Eingangsvektor x multipliziert worden sind. Ab dem Arbeitsschritt p + P werden alle Anordnungen von Addierern 2 (einschließlich des ersten) entweder angehalten oder auf eine andere Aufgabe umgeschaltet. Demzufolge werden nur P von PK Multiplikationen vollständig implementiert, während P(K – 1) von ihnen teilweise implementiert werden, ohne den ersten, kompliziertesten Schritt. Ähnlich wie im Falle der Operation der Multiplikation eines Skalars mit einem Vektor führt dies zu beträchtlichen Einsparungen an Zeit und beim Strom-/Energieverbrauch.
  • Im Folgenden wird die Implementierung einer Faltung oder FIR-Filterung mittels der Struktur gemäß der vorliegenden Erfindung eingehender betrachtet. Die auszuführende Operation ist
    Figure 00470001
    wobei gewöhnlich P << K ist. Es sind zwei Strategien möglich, um FIR-Filterung mittels der Struktur gemäß der vorliegenden Erfindung für Matrix-Vektor-Arithmetik zu implementieren.
  • Gemäß der ersten Strategie wird die FIR-Filterung als eine Multiplikation der P-Diagonalmatrix (oder P-Bandmatrix) A mit dem Eingangsvektor betrachtet, an welchen P Komponenten xi, i = –P + 1, ..., 0, angehängt sind, die negativen Indizes entsprechen, und welcher um P Positionen nach unten verschoben ist. Unter Berücksichtigung dessen, dass die Matrix A dünn besetzt ist (sie weist nur auf P Diagonalen von null verschiedene Elemente auf), wird die obige allgemeine Strategie für Matrix-Vektor-Multiplikation für den Fall einer FIR-Filterung geringfügig modifiziert. Die i-te Zeile, i = 1, ..., K, der Matrix A hat nur P von null verschiedene Elemente, die Filterkoeffizienten aj, j = 1, ..., P, in den Spalten i, i + 1, ..., i + P – 1. Bei dieser Ausführungsform werden die potentiellen Teilprodukte nicht für alle Komponenten des Eingangsvektors gleichzeitig in dem Speicher gespeichert, sondern es werden potentielle Teilprodukte nur für P Komponenten gleichzeitig gespeichert. Nach jeweils P Arbeitsschritten wird eine neue Menge von potentiellen Teilprodukten für das aktuelle Eingangssample innerhalb der mehreren Anordnungen von Addierern berechnet, und diese ersetzt die Menge von potentiellen Teilprodukten, welche P Arbeitsschritte zuvor in dem Speicher gespeichert wurde. Dies wird erreicht, indem das sechste Steuersignal c6 alle P Arbeitsschritte auf Low gesetzt wird. Daher können die mehreren Anordnungen von Addierern 2 nicht vollständig angehalten werden, doch sie können P mal langsamer arbeiten als bei einer Implementierung ohne das Speichern von potentiellen Teilprodukten. Nur P + K von PK Multiplikationen werden vollständig implementiert, während die anderen nur teilweise implementiert werden.
  • Gemäß der zweiten Strategie zur Implementierung einer FIR-Filterung werden potentielle Teilprodukte für die P Filterkoeffizienten im Speicher 21 gespeichert, während das erste Ausgangssample berechnet wird. Diese potentiellen Teilprodukte werden dann zyklisch aus dem Speicher 21 abgerufen, wenn die anderen K – 1 Ausgangssamples berechnet werden. Dies bedeutet, dass nur P von PK Multiplikationen vollständig implementiert werden, während die anderen nur teilweise implementiert werden. Alle Anordnungen von Addieren 2 können angehalten oder auf eine andere Aufgabe umgeschaltet werden, sobald potentielle Teilprodukte für sämtliche Filterkoeffizienten im Speicher 21 gespeichert sind. Daher ist die zweite Strategie sogar noch vorteilhafter als die erste. Diese Strategie ist jedoch nur möglich, wenn die Addierer/Subtrahierer 2 der ersten Pipeline-Stufe P1 eine ausreichende Genauigkeit haben, um potentielle Teilprodukte für die Filterkoeffizienten zu berechnen.
  • Multifunktionale Architekturen für Video-/Bildverarbeitung
  • Die Struktur der vorliegenden Erfindung kann auf vorteilhafte Weise als eine multifunktionale Architektur für Video-/Bildverarbeitung (Multifunctional Architecture for Video/Image Processing, MAVIP) implementiert werden. 11 zeigt eine vorteilhafte Ausführungsform der Videoverarbeitungsstruktur gemäß der vorliegenden Erfindung. Diese Struktur beruht auf den oben beschriebenen Ausführungsformen, und sie verwendet eine so genannte Architektur vom Typ Summe der absoluten Differenzen (SAD) 24. Die allgemeine Struktur der SAD-Architektur ist in 4a dargestellt. Sie besteht aus einer Vielzahl von p Anordnungen von so genannten Differenzenvorzeichen-(Difference-Sign, DS-)Einheiten 25, die auf eine zeitlich verschachtelte Art und Weise arbeiten, einer Kompressionsanordnung 4 mit einer Rückkopplung und einem Endaddierer 5, gefolgt von einer Minimumauswerteeinheit (M) 26, welche bei einem Bewegungsschätzungs-Prozess (beruhend auf SAD) benötigt wird, jedoch für die SAD-Berechnung selbst nicht benötigt wird. Jede Anordnung von DS-Einheiten 25 (DS-Anordnung oder kurz DAS) besteht aus s DS-Einheiten 27 (4b), von denen jede im Wesentlichen ein 8-Bit-Subtrahierer ist, gefolgt von XOR-Gliedern (EXKLUSIV-ODER-Gliedern) 28 zwischen dem Vorzeichenbit und dem Rest der Differenzbits. Der Eingang der Kompressionsanordnung wird von s 1-Bit-Zahlen (den Vorzeichendaten), s n-Bit-Zahlen (Differenzdaten, meist n = 8) und zwei (n + logK – 1)-Bit- Rückkopplungen (meist K = 256) gebildet. Der Endaddierer kann eine Genauigkeit von (n + logK) Bits haben. Ein Beispiel der SAD-Architektur, die aus 8 DS-Einheiten (Subtrahierern) besteht und dem Fall p = 1, s = 8, n = 8 und K = 256 besteht, ist in 5 dargestellt.
  • Vergleicht man die SAD-Struktur in 4a mit den Multiplikator-basierten Strukturen in 6 oder 8 und insbesondere ein Beispiel in 5 mit den Strukturen in 7 oder 9, so ist festzustellen, dass es wesentliche Ähnlichkeiten zwischen diesen zwei Typen von Strukturen gibt. Beide diese Typen von Strukturen bestehen im Wesentlichen aus dem Block, der mehrere Addierer oder Subtrahierer 4, 27 enthält (gefolgt von XOR-Gliedern im Falle des SAD), dem Datenrouting-Block, welcher im Falle von Multiplikator-basierten Strukturen der Auswahlblock 3 ist und im Falle des SAD aus direkten Verbindungen besteht, und dem Summationsblock, der aus der Kompressionsanordnung 4 und dem Endaddierer 5 besteht. Diese Ähnlichkeit kann genutzt werden, um diese zwei Typen von Strukturen zu vereinheitlichen und sie zu einer umkonfigurierbaren Architektur zu kombinieren, welche unter Verwendung von wenigen Steuersignalen zu der einen oder anderen von diesen zwei Strukturen konfiguriert werden kann. Auf diese Weise kann eine weitere Multifunktionalität der Architektur mit einem minimalen zusätzlichen Aufwand in Form einer einfachen Logik, die von den wenigen Signalen gesteuert wird, erreicht werden.
  • Es gibt mehrere Alternativen, um die SAD-Struktur mit den Multiplikator-basierten Strukturen zu kombinieren. 1 stellt eine dieser Alternativen für die allgemeine Struktur der multifunktionalen Architektur für Video- /Bildverarbeitung dar. Diese Architektur ist durch einfache Modifikationen in jedem Block der grundlegenden Multiplikator-basierten Struktur abgeleitet. In diesem Falle ist die Grundstruktur die Architektur für Matrix-Vektor-Arithmetik von 8. 13 zeigt eine beispielhafte Realisierung einer multifunktionalen Architektur für Video-/Bildverarbeitung, die von der Architektur für Matrix-Vektor-Arithmetik von 9 abgeleitet wurde.
  • Bei einer Realisierung beinhaltet die multifunktionale Architektur für Video-/Bildverarbeitung Anordnungen von Addierern 2, welche in Abhängigkeit vom ersten Steuersignal c1 und vom fünften Steuersignal c5 entweder zu Addierern/Subtrahierern oder zu DS-Einheiten konfiguriert werden können und deshalb mit AA/DSA bezeichnet sind.
  • Eine mögliche Realisierung einer AA/DSA-Einheit im allgemeinen Fall ist in 12a schematisch dargestellt. Ein Beispiel einer vollständigen Anordnung von AA/DSA-Einheiten für den Fall von m = 16, r = 2 ist in 12b dargestellt. Jeder m-Bit-Addierer/Subtrahierer der Anordnung besteht aus r aufeinander folgenden (m/r)-Bit-Addierern/Subtrahierern, gefolgt von XOR-Gliedern. Die XOR-Glieder sind nur im Falle c1 c 5 = 1 aktiv, das heißt im Falle (c1, c5) = (1, 0), wenn die Architektur als die SAD-Architektur arbeitet. Andererseits ist die Carry-Propagation zwischen r aufeinander folgenden (m/r)-Bit-Addierern/Subtrahierern nur gewährleistet, wenn c5 = 0 ist. Die Kombination des ersten Steuersignals c1 und des fünften Steuersignals c5 wird auch verwendet, um zu steuern, ob unterschiedliche Eingänge (c1c5 = 0) (Addenden oder SAD-Operanden) oder ein Eingang (c1c5 = 1) (Multiplikand) der Anordnung zugeführt werden. Ob eine Addition oder Subtraktion implementiert wird, wird durch das Signal cin gesteuert, welches von dem Multiplikationsverfahren und von der Position des betrachteten m-Bit-Addierers/Subtrahierers innerhalb der A/DSA-Einheit abhängt. Zum Beispiel ist cin bei einem nicht umcodierten Radix-8-Multiplikationsverfahren mit m = 16, r = 2 gegeben entweder als cin = cs oder als
    Figure 00520001
    in Abhängigkeit von der Position des Addierers (siehe 12b), wobei cs = 0 bedeutet, dass Additionen, und cs = 0 bedeutet, dass Subtraktionen in den Fällen C1 = 0 implementiert werden. Daher kann in Abhängigkeit von den Steuersignalen c1 und c5 die AA/DSA-Einheit so konfiguriert werden, dass sie in verschiedenen Betriebsarten wie folgt arbeitet:
    (c1, c5) Betriebsart des AA/DSA Eingang Ausgang Zielverwendung
    (0, 0) rs parallele (m/r)-Bit-Additionen/Subtraktionen rs (m/r)-Bit-Paare (xi, yi), i = 1, ..., r rs (m/r + 1)-Bit-Summen ci = xi + yi Paralleler Addierer/Subtrahierer
    (0, 1) s parallele m-Bit-Additionen/ Subtraktionen rs (m/r)Bit-Paare (xi, yi), i = 1, ..., r rs (m/r + 1)-Bit-Differenzen ci = xi – yi
    (1, 0) rs (m/r)-Bit parallele Subtraktionen, danach XOR-Glieder rs (m/r)-Bit-Paare (x1,37.0, i = 1, ..., r rs (m/r)-Bit-Differenzdaten und rs 1-Bit-Daten Erste Stufe (mehrere DS-Einheiten) der SAD-Architektur
    (1, 1) s Additionen oder Subtraktionen entsprechend dem Radix-T-Algorithmus Ein (mt)-Bit-Multiplikand x (t = log T) s m-Bit-TeilProdukte und rs 1-Bit-Nullen Erste Stufe (AA) eines Radix-T-Multiplikators
  • Bei der betrachteten Ausführungsform der MAVIP in 11 ist ein Datenrouting-Block zwischen dem Block von AA/DSA-Einheiten und dem Block von Kompressionsanordnungen vorhanden, welcher nun von denselben Signalen c1 und c5 gesteuert wird wie die AA/DSA-Einheiten. Das Taktsignal (nicht dargestellt) für die Auswahlblöcke wird mit dem Signal c1 durch ein UND-Gatter kombiniert, so dass die Auswahlblöcke angehalten werden, wenn c1 = 0 ist. Die Architektur arbeitet in diesem Falle als eine parallele Anordnung von Addierern/Subtrahierern. In Abhängigkeit vom Steuersignal c5 wird der Datenrouting-Block entweder zu direkten Verbindungen konfiguriert wie innerhalb der SAD-Architektur (falls c5 = 0), welche direkt die r (m/r)-Bit-Differenzdaten und r 1-Bit-Daten von den Ausgängen von AA/DSA-Einheiten zu dem Block von Kompressionsanordnungen senden, oder er arbeitet als ein Standard-Auswahlblock innerhalb der entsprechenden Multiplikatorstruktur (falls c5 = 1), welcher die s m-Bit-Teilprodukte entweder von dem Block von AA/DSA-Einheiten oder vom Speicher zu dem Block von Kompressionsanordnungen sendet. Dies wird erreicht, indem ein Datenvereinheitlicher-/Multiplexer-Block 23 eingefügt wird, welcher die Daten aus der entsprechenden Leitung auswählt. Der Datenvereinheitlicher-/Multiplexer-Block 23 wählte den Ausgang des Blockes von AA/DSA-Einheiten, falls c5 = 0, oder den Ausgang des Auswahlblockes, falls c5 = 1, und wandelt den Datentyp in denjenigen um, der für die Kompressionsanordnung 4 geeignet ist. Zum Beispiel besteht der Eingang der Kompressionsanordnung in dem Beispiel von 13 aus zwei Gruppen, die jeweils aus fünf 25-Bit-Zahlen und zwei 31-Bit-Rückkopplungsschleifen bestehen. Die Menge der Eingänge innerhalb jeder Gruppe entspricht der Menge von Teilprodukten bei dem Multiplikationsverfahren nach Verschiebungen. Daher führt der Vereinheitlicher-/Multiplikator-Block 23 keinerlei Umwandlungen der Teilprodukte durch, sondern implementiert lediglich die entsprechenden Verschiebungen und sendet die zwei Mengen von Teilprodukten zu dem Block von Kompressionsanordnungen, falls c5 = 1. Wenn jedoch SAD implementiert ist (c5 = 0), wandelt der Vereinheitlicher-/Multiplikator-Block 23 die acht 8-Bit- und acht 1-Bit-Differenz- und Vorzeichendaten um, bevor er sie zu dem Block von Kompressionsanordnungen sendet. Die acht 1-Bit-Daten werden innerhalb einer kleinen Kompressionsanordnung zu zwei 2-Bit-Zahlen komprimiert und danach durch Nullen ergänzt (auf der Seite der höchstwertigen Bits (MSB)), so dass sie zu 25-Bit-Zahlen werden. Auch die acht 8-Bit-Zahlen werden durch Nullen ergänzt, so dass sie zu 25-Bit-Zahlen werden. Die resultierenden zehn 25-Bit-Zahlen werden dann zu jeweils fünf Zahlen gruppiert.
  • Innerhalb der Architektur von 11 sind im Vergleich zu der Architektur für Matrix-Vektor-Arithmetik von 8 Modifikationen der Summationsblöcke 4 erforderlich, um die Architektur in Abhängigkeit von den Signalen c1 und c5 konfigurierbar zu machen. Zuallererst wird der Summationsblock 4 angehalten, falls (c1, c2) = (0, 1) ist, so dass die Architektur in diesem Falle als ein paralleler Addierer/Subtrahierer arbeitet. Falls jedoch (c1, c2) = (0, 0) ist, arbeitet der Summationsblock 4 als ein Akkumulator, der Daten direkt von dem Eingangsbus 6 erhält, so dass die Architektur in Wirklichkeit in zwei Teile aufgeteilt ist, von denen der erste Teil als eine parallele Anordnung von Addierern/Subtrahierern arbeitet und der zweite Teil als ein Akkumulator arbeitet. Falls (c1, c2) = (1, 1) und c5 = 0 ist, wird der Summationsblock 4 zu demjenigen für die SAD-Architektur konfiguriert, der in jedem Arbeitsschritt die rs (m/r)-Bit-Differenzdaten und rs 1-Bit-Daten von dem Block von AA/DSA-Einheiten aufnimmt und akkumuliert, die zuvor von dem Datenvereinheitlicher-/Multiplexer-Block 23 umgewandelt wurden. Im Falle (c1, c2) = (1, 1) und c5 = 1 wird der Summationsblock 4 zu demjenigen für die grundlegende Multiplikator-basierte Struktur konfiguriert (d. h. zu dem Summationsblock der Architektur für Matrix-Vektor-Arithmetik von 8), welcher in jedem Arbeitsschritt s m-Bit-Teilprodukte aufnimmt und aufsummiert oder die Teilprodukte mit echten Verschiebungen akkumuliert, die innerhalb des Datenvereinheitlicher-/Multiplexer-Blockes implementiert sind. Es gibt viele Möglichkeiten, einen solchen umkonfigurierbaren Summationsblock zu entwerfen. Das Beispiel von 13 verwendet zwei Summationsblöcke (Kompressionsanordnungen), gefolgt von dem dritten Summationsblock (dem Endaddierer) wie in dem Beispiel von 9.
  • 12b zeigt ein Beispiel des umkonfigurierbaren Blockes von Addierern oder DS-Einheiten, das dem Fall von acht 8-Bit- oder vier 16-Bit-Addierern entspricht. Dieser Block implementiert verschiedene Funktionen in Abhängigkeit von drei Steuersignalen c1, c5 und cs, wie in Tabelle 2 angegeben. Tabelle 2
    (c1, c5 cs) Betriebsart des Blockes Eingang Ausgang Zielverwendung
    (0, 0, 0) 8 parallele 8-Bit-Additionen 8 8-Bit-Paare (xi, yi), wobei xi und yi für den Addierer i = 1, ... 8 von Eingangsleitungen A(8(i – 1):8i – 1) bzw. B(8(i – 1):8i – 1) genommen werden 8 9-Bit-Summen/Differenzen ci = xi + yi/xi – yi, wobei die 8 Summen/Differenzbits an Ausgangsleitungen 2i – 1 gebildet werden und die Vorzeichenbits an Ausgangsleitungen 2i gebildet werden. Paralleler Addierer/Subtrahierer mit unterschiedlicher Genauigkeit
    (0, 0, 1) 8 parallele 8-Bit-Subtraktionen
    (0, 1, 0) 4 parallele 16-Bit-Additionen 4 16-Bit-Paare (xi, yi), wobei xi und yi, i = 1, ..., 4, dem Paar von Addierern 2i – 1 und 2i von Eingangsleitungen A(16(i – 1):16i – 1) und B(16(i – 1):16i – 1) zugeführt werden. 4 17-BitSummen/Differenzen ci = xi + yi, wobei die 4 Gruppen von 16 Summen-/Differenzbits jeweils an kombinierten Ausgangsleitungen (1, 3), (5, 7), (9, 11) und (13, 15) gebildet werden. Die Vorzeichenbits, die diesen kombinierten Leitungen entsprechen, werden an Ausgangsleitungen 4, 8, 12 bzw. 16 gebildet.
    (0, 1, 1) 4 parallele 16-Bit-Subtraktionen
    (1, 0, 0) Dies ist keine gültige Kombination von Steuersignalen.
    (1, 0, 1) 8 parallele 8-Bit-DS-Operationen (Subtraktionen, gefolgt von XOR-Gliedern) 8 8-Bit-Paare (xi, yi), wobei xi und yi für den Addierer i = 1, ..., 8 von Eingangs-leitungen A(8(i – 1):8i – 1) bzw. B(8 (i – 1):8i – 1) genommen werden. 8 8-Bit-Differenzdaten auf den Leitungen 2i – 1 und 8 1-Bit-Vorzeichendaten auf den Leitungen 2i, i = 1, ..., 8. Erste Stufe (mehrere DS-Einheiten) der SAD-Architektur
    (1, 1, 0) Dies ist keine gültige Kombination von Steuersignalen.
    (1, 1, 1) 2 16-Bit-Additionen und 2 16-Bit-Subtraktionen Die Konstante C(16) von einem Register, das mit den 2 8-Bit-UND-Gattern verbunden ist, und der 16-Bit-Multiplikand x (vorzeichenerweitert von einem 13-Bit-Wert), welcher als auf den 0, ..., 15 Bit-Leitungen des Busses A verfügbar angenommen wird. 4 16-Bit-PPs (mit 15-Bit-Werten). Die kombinierten Leitungen (1, 3) enthalten C(16)-x, die Leitungen (5, 7) enthalten 3x, die Leitungen (9, 11) enthalten 5x und die Leitungen (13, 15) enthalten 7x. Erste Stufe (AA) des Radix-8 nicht umcodierten Multiplikators.
  • Im Folgenden werden die Datenpfade beschrieben, die den einzelnen gültigen Kombinationen der Steuersignale entsprechen.
  • Zuerst wird die Funktionsweise der Multiplexer erläutert. Die Betriebsarten der Multiplexer M1 an den Eingängen der Eingangs-Latches werden so gesteuert, dass, falls der Steuereingang (d. h. c1c5) High-Pegel hat, der Multiplexer den ersten Eingang (den oberen Eingang in 12b) zu seinem Ausgang weiterleitet. Falls dagegen der Steuereingang Low-Pegel hat, leitet der Multiplexer den zweiten Eingang (den unteren Eingang in 12b) zu seinem Ausgang weiter. Die Betriebsarten der Multiplexer M2 zwischen den Addierern werden so gesteuert, dass, wenn der Steuereingang (d. h. c5) High-Pegel hat, der Multiplexer den ersten Eingang (den am weitesten rechts befindlichen Eingang in 12b) zu seinem Ausgang weiterleitet. Dagegen leitet, wenn der Steuereingang Low-Pegel hat, der Multiplexer den zweiten Eingang (den am weitesten links befindlichen Eingang in 12b) zu seinem Ausgang weiter.
  • In den ersten beiden Fällen, c1, c5, cs = 0, 0, 0 und c1, c5, cs = 0, 0, 1, arbeitet der Block als eine parallele Anordnung von acht 8-Bit-Addierern/Subtrahierern, da c5 = 0 zur Folge hat, dass das Carry-In zu jedem Addierer (einschließlich derjenigen mit geraden Nummern) das Signal cs ist, das heißt, es ist keine Carry-Propagation zwischen Paaren von 8-Bit-Addierern vorhanden, in Abhängigkeit von welcher entweder Additionen oder Subtraktionen implementiert werden. Da c1c5 = 0 ist, ist das Carry-In zu jedem 8-Bit-Addierer (einschließlich derjenigen mit geraden Nummern und derjenigen mit Carry-In
    Figure 00610001
    das Signal cs
    Figure 00610002
    Ob Additionen oder Subtraktionen implementiert werden, wird daher durch das Signal cs definiert, welches nicht nur das Carry-In zu jedem Addierer ist, sondern auch der zweite Eingang zu XOR-Gliedern an den Eingängen von Addierern ist (der Eingang ist invertiert, falls cs = 1). Da c5 = 0 und folglich c1c5 = 0 ist, leiten die Multiplexer am Eingang der Pipeline-Latches (kleine leere Rechtecke in 12b) die oberen Eingänge zu diesen Latches weiter. Und die oberen Eingänge von Multiplexern sind mit den Eingangsleitungen der Busse A und B verbunden, so dass acht 8-Bit-Paare gebildet werden, entsprechend Tabelle 2. Es ist außerdem anzumerken, dass die XOR-Glieder an den Ausgängen von Addierern nun inaktiv sind, da c1 = 0, und folglich der zweite Eingang eines XOR-Gliedes seinen Ausgang nicht beeinflusst.
  • In Fällen, in denen c1, c5, cs = 0, 1, 0 und c1, c5, cs = 0, 1, 1 ist, arbeitet der Block als eine parallele Anordnung von vier 16-Bit-Addierern/Subtrahierern, da c5 = 1 zur Folge hat, dass die Carry-Outs von den Addierern mit ungeraden Nummern zu den Carry-Ins von denjenigen mit geraden Nummern übertragen werden. Ob Additionen oder Subtraktionen implementiert werden, wird erneut durch das Signal cs definiert. Da erneut c1c5 = 0 ist, leiten die Multiplexer am Eingang der Pipeline-Latches R (kleine leere Rechtecke in 12b) die oberen Eingänge zu diesen Latches weiter, was dem Eingangsschema von Tabelle 2 entspricht. Die XOR-Glieder am Ausgang sind erneut inaktiv.
  • Im Falle c1, c5, cs = 1, 0, 1 arbeitet der Block als eine parallele Anordnung von 8 DS-(Differenz-Vorzeichen-)Einheiten. Das Eingangsschema und das Carry-Propagation-Schema sind exakt dieselben wie im Falle 1; da jedoch c9 = 1 ist, werden nur Subtraktionen implementiert. Außerdem sind, da jetzt (und nur jetzt) c1 c 5 = 1 ist, die XOR-Glieder am Ausgang aktiv. Dies bedeutet, dass die Differenzbits (gebildet an den 8-Bit-Leitungen) invertiert werden, falls das Carry-Out des entsprechenden 8-Bit-Addierers High-Pegel hat (das heißt, falls der obere Eingang dieses Addierers kleiner als der untere ist).
  • Im Falle c1, c5, cs = 1, 1, 1 arbeitet der Block als vier 16-Bit-Addierer/Subtrahierer der ersten Stufe des Radix-8 nicht umcodierten Multiplikators: c5 = 1 bewirkt, dass das Paar von 8-Bit-Addierern als ein 16-Bit-Addierer/Subtrahierer arbeitet. Die Addierer-Paare (1, 2) und (7, 8) arbeiten als 16-Bit-Subtrahierer (da cs = 1), und die Addierer-Paare (3, 4) und (5, 6) arbeiten als 16-Bit-Addierer (da
    Figure 00620001
    Außerdem leiten, da jetzt (und nur jetzt) c1c5 = 1 ist, die Multiplexer am Eingang ihre unteren Eingänge zu den Pipeline-Latches weiter. Der Subtrahierer, der von dem Addierer-Paar (1, 2) gebildet wird, empfängt die Konstante C(16) (in einem Register gespeichert) an seinem ersten Eingang und den 16-Bit-Multiplikanden x (vorzeichenerweitert von einem 13-Bit-Wert) an seinem zweiten Eingang. Es wird angenommen, dass der Multiplikand x auf den 0, ..., 15 Bit-Leitungen des Busses A zur Verfügung steht. Der Addierer des Paares (3, 4) empfängt 2x (geschobenes x) an seinem ersten Eingang und x an seinem zweiten Eingang. Das Addierer-Paar (5, 6) empfängt 4x und x an seinem ersten bzw. zweiten Eingang. Schließlich empfängt der Subtrahierer des Paares (7, 8) 8x und x an seinem ersten bzw. zweiten Eingang. Es ist außerdem zu erwähnen, dass die XOR-Glieder an den Ausgängen der Addierer in diesem Falle inaktiv sind.
  • 13 zeigt eine vorteilhafte Ausführungsform der multifunktionalen Architektur für Video-/Bildverarbeitung, die von der Architektur für Matrix-Vektor-Arithmetik von 9 für den Fall eines (n = m = 13)-Bit-Multiplikanden und Multiplikators abgeleitet ist. Die Architektur bei dieser Realisierung besteht aus einer umkonfigurierbaren Anordnung von acht 8-Bit- oder vier 16-Bit-Addierern/Subtrahierern 2 (siehe 12b), einer Speichereinheit 21 zum Speichern der Ergebnisse von den Addierern/Subtrahierern 2, einem konfigurierbaren Datenrouting-Block 3, einem Summationsblock 4, welcher auch als zwei separate Summations-/Akkumulationsblöcke arbeiten kann, und einem Ausgangsmultiplexer 20, welcher den richtigen Ausgang auswählt. Die Architektur wird von sieben Steuersignalen c1, ..., c7 gesteuert. Das Taktsignal (nicht dargestellt) der Architektur wird mit den Signalen c1 und c2 durch UND-Gatter kombiniert, um in Abhängigkeit von der implementierten Funktionsweise einige Blöcke der Architektur anzuhalten (zu sperren). Zum Beispiel sind nur die Anordnung von Addierern/Subtrahierern und der Ausgangsmultiplexer funktionsfähig, wenn (c1, c2) = (0, 1) ist. In diesem Falle arbeitet die Architektur einfach als eine parallele Anordnung von Addierern/Subtrahierern. Wenn c1 = 1 ist, sind alle Blöcke funktionsfähig, jedoch der Datenrouting-Block ist entweder zu direkten Verbindungen für die SAD-Implementierung konfiguriert, oder zu dem Datenrouting-Block der Multiplikator basierten Struktur, in Abhängigkeit davon, ob c5 = 0 oder c5 = 1 ist. Außerdem arbeiten in Abhängigkeit von c5 unterschiedliche Teile der Kompressionsanordnung. Auf diese Weise wird die Architektur in Abhängigkeit von dem Signal c5 entweder zu der SAD-Architektur konfiguriert (falls c1 = 1 und c5 = 0), oder zu einer Multiplikatorbasierten Struktur (falls c1 = 1 und c5 = 1). Wenn c1 = c5 = 1 ist, wird die Multiplikator-basierte Struktur wiederum in Abhängigkeit von den Signalen C3, ..., c7 zu einer ihrer möglichen Konfigurationen umkonfiguriert, ähnlich wie weiter oben in dieser Beschreibung erläutert.
  • Außerdem kann der Summationsblock zu zwei separaten solchen konfiguriert werden (falls c6 = 1), was die Möglichkeit gibt, ein Paar von Multiplikationen auf einmal zu implementieren, oder zu einem einzigen (falls c6 = 0) zum schnelleren Akkumulieren einer größeren Anzahl von Teilergebnissen.
  • In Tabelle 3 sind einige Operationen aufgelistet, welche auf der beispielhaften Realisierung der MAVIP von 13 implementiert werden können, zusammen mit der entsprechenden Wahl der Steuersignale c1, ..., c7. Tabelle 3
    Operation Steuersignale C1 C2 C3 C4 C5 C6 C7
    Parallele 8-Bit-Additionen/Subtraktionen 0 x x x 0 1 1
    SAS 1x x x 0 0 1
    Paar von 13-Bit-Multiplikationen 1 x 0 0 1 1 0
    13-Bit Skalarprodukt Vektor-Vektor (k×1) mit (1×k) (k < 65) 1 0 0 1 1 0 1 (kein Speicher verwendet)
    13-Bit Skalarprodukt Vektor-Vektor (k×1) mit (1×k) (k < 65) 11 1 1 1 0 0 (Speicher verwendet)
    13-Bit Produkt Matrix-Vektor (p×k) mit (k×1) (k < 65) 1 c2 c3 1 1 0 0 c2 = c3 = 0 während der ersten (k/2) Zyklen und c2 = c3 = 1 danach
    FIR-Filterung mit k Taps (Abgriffen) des Signals der Länge p. 1 c2 c3 1 1 0 0 c2 = c3 = 0 während der ersten (k/2) Zyklen und c2 = c3 = 1 danach
  • Es gibt viele Alternativen für die Implementierung der oben beschriebenen Ausführungsformen der Erfindung, da eine Reihe von verschiedenen Erweiterungen verschiedener Typen von Multiplikator-/MAC-Einheit-Strukturen angewendet werden kann. Außerdem führt eine unterschiedliche Wahl von Entwurfsparametern in jeder Struktur zu verschiedenen Alternativen.
  • Die vorteilhaften Ausführungsformen der vorliegenden Erfindung können zum Beispiel als (fest oder lose miteinander verbundene) selbstständige Geräte angewendet werden. Eine alternative Implementierung der Erfindung kann eine Funktionseinheit innerhalb eines Prozessors eines Systems sein. Diese Art von Anordnung kann eine Multiplikationseinheit innerhalb des Prozessors ersetzen.
  • Dabei gibt es wiederum viele Alternativen, wie dies geschehen kann. Eine von ihnen kann eine Implementierung sein, bei welcher nur ein Teil einer der verschiedenen Ausführungsformen, welcher die mehreren Anordnungen von Addierern (die erste Pipeline-Stufe P1) nicht enthält und welcher keinen Speicher 21 enthält, als eine Funktionseinheit innerhalb des Prozessors verwendet wird. Die Addierer/Subtrahierer des Prozessors übernehmen dann die Rolle der mehreren Anordnungen von Addierern, während die Register die Rolle des Speichers übernehmen, der in der Struktur für Matrix-Vektor-Operationen verwendet wird.
  • Zum Beispiel enthält Texas Instruments TMS320C64x DSP acht Funktionseinheiten, von denen sechs als 64-Bit-Addierer/Subtrahierer arbeiten können, von denen jeder in der Lage ist, entweder als zwei 32-Bit- oder als vier 16-Bit- oder als acht 8-Bit-Addierer/Subtrahierer zu arbeiten. Das Gerät enthält außerdem 128 64-Bit-Register, von denen jedes in ähnlicher Weise entweder als zwei 32-Bit- oder als vier 16-Bit- oder als acht 8-Bit-Register verwendet werden kann. Angenommen, eine andere Funktionseinheit (Functional Unit, FU) ähnlich der von 5, jedoch ohne die Anordnung von Addierern, wird in den Prozessor eingefügt. Dann könnte diese Funktionseinheit, bestehend aus mehreren Auswahlblöcken, mehreren Kompressionsanordnungen und mehreren schnellen Endaddierern, für eine Multiplikation und auf Multiplikation basierende Operationen in den folgenden zwei Zyklen verwendet werden (eine Multiplikation auf dem existierenden TMS320C64x Multiplikator erfordert ebenfalls zwei Zyklen). Im ersten Zyklus berechnen Addierer/Subtrahierer die potentiellen Teilprodukte des Multiplikanden x und speichern die Ergebnisse in Registern. Im nächsten Schritt wird mit der betrachteten Funktionseinheit die richtige Menge der Teilprodukte ausgewählt und aufsummiert. In solchen Fällen, in denen der Multiplikand x wiederverwendet wird, braucht der erste Zyklus nur einmal ausgeführt zu werden, wenn die erste Multiplikation implementiert wird, bei der x beteiligt ist, während er bei den nachfolgenden Multiplikationen mit x weggelassen werden kann, was zu wesentlichen Einsparungen an Zeit und beim Energieverbrauch führt. Außerdem werden, wenn FIR-Filterung (Faltung) mit einer angemessen kleinen Anzahl von Koeffizienten implementiert wird, Addierer/Subtrahierer des TMS320C64x nur in einigen (vielleicht einem) Zyklen zu Beginn verwendet, um die potentiellen Teilprodukte für die Filterkoeffizienten zu berechnen und sie in Registern zu speichern. Danach werden die restlichen Berechnungen mit der Funktionseinheit gemäß der Erfindung ausgeführt, und der Lade-/Speichereinheit wird die Möglichkeit gegeben, die Addierer/Subtrahierer für andere Zwecke zu verwenden (oder sie anzuhalten, um Energie zu sparen). Bei der gegenwärtigen Implementierung der FIR-Filterung auf dem TMS320C64x würden alle Funktionseinheiten einschließlich des Multiplikators und der Addierer/Subtrahierer mit dieser Aufgabe beschäftigt sein.
  • Eine weitere Alternative ist die Möglichkeit des Implementierens der vorteilhaften Strukturen der Erfindung für verschiedene Bitgenauigkeiten. Zum Beispiel ist es möglich, Multiplikatoren/MAC-Einheiten zu implementieren, welche entweder eine nxm-Multiplikation, zwei (n/2)xm- oder nx(m/2)-Multiplikationen oder vier (n/2)×(m/2)-Multiplikationen in einem Arbeitsschritt ausführen.
  • 14 zeigt eine Vorrichtung 29 gemäß einer vorteilhaften Ausführungsform der vorliegenden Erfindung. Sie umfasst eine Steuereinheit 30 zur Steuerung der Operationen der Vorrichtung 29. Die Vorrichtung umfasst außerdem einen digitalen Signalprozessor 31 zur Ausführung von Signalverarbeitungsaufgaben oder einen Mikroprozessor zur Ausführung von Steuerungsaufgaben. Einige der Signalverarbeitungsaufgaben, insbesondere mit der Videosignalverarbeitung zusammenhängende Aufgaben, werden jedoch in einer Video-/Bildverarbeitungseinheit 32 gemäß einer vorteilhaften Ausführungsform der vorliegenden Erfindung ausgeführt, welche eine separate Einheit oder innerhalb des digitalen Signalprozessors 31 implementiert sein kann. Die Benutzerschnittstelle 33 der Vorrichtung umfasst Anzeigemittel 34, Audiomittel 35, eine Tastatur 36 und z. B. eine Videokamera 37. Die Vorrichtung 29 umfasst Kommunikationsmittel 38, die an sich bekannt sind, wie etwa Mobilkommunikationsmittel, um mit einem Kommunikationsnetz (nicht dargestellt) zu kommunizieren und um Informationen mit einer anderen Vorrichtung (nicht dargestellt) auszutauschen. Die Speichermittel 39 werden verwendet, um Daten und Programme verschiedener Art, wie etwa Betriebsbefehle für die Steuereinheit 30, und die potentiellen Teilprodukte zu speichern.
  • Die vorliegende Erfindung ist nicht allein auf die oben beschriebenen Ausführungsformen beschränkt, sondern sie kann innerhalb des Schutzbereiches der beigefügten Ansprüche modifiziert werden.

Claims (29)

  1. Verfahren zum Ausführen von Multiplikationsoperationen unter Verwendung mindestens einer ersten Pipeline-Stufe und einer zweiten Pipeline-Stufe einer Pipeline-Rechenvorrichtung, wobei die erste und die zweite Pipeline-Stufe jeweils mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen, wobei bei diesem Verfahren Daten zum Ausführen von Rechenoperationen in die Vorrichtung eingegeben werden, dadurch gekennzeichnet, dass in der Rechenvorrichtung eine selektive Datenverarbeitung durchgeführt wird, wobei das Verfahren umfasst: – Auswählen zwischen mindestens einer Eingabedatenschnittstelle und mindestens einer Ausgabedatenschnittstelle, um die mindestens eine Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zu verbinden, um Daten zwischen der mindestens einen Eingabedatenschnittstelle und der mindestens einen Ausgabedatenschnittstelle zu routen und um Daten entsprechend der Auswahl zu verarbeiten.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass untersucht wird, für welche Pipeline-Stufe die Eingabedaten vorgesehen sind, wobei eine Auswahl auf der Basis dieser Untersuchung getroffen wird, um die Eingabedaten der Vorrichtung mit der Datenschnittstelle der vorgesehenen Pipeline-Stufe zu verbinden.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass eine der Datenschnittstellen einen Ausgang der Rechenvorrichtung umfasst und dass ein Berechnungsergebnis einer Pipeline-Stufe ausgewählt wird, um als ein Ausgang der Rechenvorrichtung zur Verfügung gestellt zu werden, wobei der Ausgang dieser einen Pipeline-Stufe mit der einen Datenschnittstelle der Rechenvorrichtung verbunden ist, welche den Ausgang der Rechenvorrichtung umfasst.
  4. Verfahren nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, dass die Rechenoperationen in mindestens zwei Pipeline-Stufen (P1, ..., P4) ausgeführt werden, wobei die Rechenoperationen in mindestens zwei Teiloperationen aufgeteilt werden, und dadurch, dass die mindestens zwei Teiloperationen in verschiedenen Pipeline-Stufen ausgeführt werden.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass die Rechenoperationen mindestens teilweise auf eine zeitlich verschachtelte Weise ausgeführt werden, indem mindestens eine Teiloperation in partielle Teiloperationen aufgeteilt wird und indem jede partielle Teiloperation zu einem anderen Zeitpunkt eingeleitet wird.
  6. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass eine Eingabe in eine Pipeline-Stufe (P1, P2, P3, P4) aus mindestens einer ersten Datenschnittstelle und einer zweiten Datenschnittstelle ausgewählt wird, wobei die erste Datenschnittstelle die Datenschnittstelle zur Ausgabe von Daten der vorhergehenden Pipeline-Stufe der besagten Pipeline-Stufe ist und die zweite Datenschnittstelle eine andere Datenschnittstelle zur Ausgabe von Daten der Datenschnittstellen der Rechenvorrichtung ist.
  7. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass Ausgabewerte von mindestens einer Pipeline-Stufe (P1, P2, P3, P4) gespeichert werden.
  8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass es in Verbindung mit der Verarbeitung von Videoinformationen verwendet wird.
  9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass eine Multiplikationsoperation und eine andere Multiplikationsoperation nach einem Pipeline-Prinzip ausgeführt werden, bei welchem die andere Multiplikationsoperation gestartet wird, bevor die eine Multiplikationsoperation beendet ist, wobei die Multiplikationsoperationen in mindestens eine erste und eine zweite Teiloperation aufgeteilt werden, wobei die erste und die zweite Teiloperation jeweils in einer Pipeline-Stufe ausgeführt werden, und dass mindestens eine der Teiloperationen parallel in einer Pipeline ausgeführt wird, wobei eine Teiloperation für die zweite Multiplikationsoperation gestartet wird, bevor die entsprechende Teiloperation für die erste Multiplikationsoperation beendet ist.
  10. System zum Ausführen von Rechenoperationen, das eine Pipeline-Rechenvorrichtung nach einem der Ansprüche 17 bis 25 umfasst.
  11. System nach Anspruch 10, dadurch gekennzeichnet, dass es einen Selektor zum Untersuchen, für welche Pipeline-Stufe die Eingabedaten vorgesehen sind, enthält, wobei dafür gesorgt wird, dass eine Auswahl auf der Basis der Untersuchung getroffen wird, um die Eingabedaten der Vorrichtung mit der Datenschnittstelle der vorgesehenen Pipeline-Stufe zu verbinden.
  12. System nach Anspruch 10 oder 11, dadurch gekennzeichnet, dass eine der Datenschnittstellen einen Ausgang der Rechenvorrichtung umfasst und dass das System einen Ausgabeschalter umfasst, um ein Berechnungsergebnis einer Pipeline-Stufe als einen Ausgang der Rechenvorrichtung zur Verfügung zu stellen, indem der Ausgang dieser einen Pipeline-Stufe mit dem Ausgang der Rechenvorrichtung verbunden wird.
  13. System nach Anspruch 10, 11 oder 12, dadurch gekennzeichnet, dass es Eingangs-Latches (R1, ..., Rp) zum Aufteilen mindestens einer Rechenoperation in Teiloperationen und Einleiten jeder Teiloperation zu einem anderen Zeitpunkt umfasst.
  14. System nach einem der Ansprüche 10 bis 13, dadurch gekennzeichnet, dass es Schalter zwischen Pipeline-Stufen zum Verbinden einer Eingabedatenschnittstelle einer Pipeline-Stufe (P1, P2, P3, P4) mit entweder einer ersten Ausgabedatenschnittstelle oder einer zweiten Ausgabedatenschnittstelle aufweist, wobei die erste Ausgabedatenschnittstelle der Ausgang der vorhergehenden Pipeline-Stufe der besagten Pipeline-Stufe ist.
  15. System nach einem der Ansprüche 10 bis 14, dadurch gekennzeichnet, dass es Speicher (21) zum Speichern von Ausgabewerten einer Pipeline-Stufe (P1, P2, P3, P4) aufweist.
  16. System nach einem der Ansprüche 10 bis 15, dadurch gekennzeichnet, dass es eine Anzeigevorrichtung (34, 37) zum Präsentieren von Videoinformationen und/oder eine Videokamera zum Eingeben von Videoinformationen in das System umfasst.
  17. Vorrichtung zum Ausführen von Multiplikationsoperationen nach einem Pipeline-Prinzip, wobei die Vorrichtung mindestens eine erste Pipeline-Stufe und eine zweite Pipeline-Stufe umfasst, wobei die erste und die zweite Pipeline-Stufe jeweils verwendet werden, um Multiplikationsoperationen auszuführen, und mindestens eine Datenschnittstelle zur Eingabe von Daten und mindestens eine Datenschnittstelle zur Ausgabe von Daten aufweisen, dadurch gekennzeichnet, dass die Vorrichtung umfasst: – mindestens einen Schalter (2, 3, 4, 5) zum Ausführen einer selektiven Datenverarbeitung zwischen mindestens einer Eingabedatenschnittstelle und mindestens einer Ausgabedatenschnittstelle, wobei der mindestens eine Schalter mindestens einen Steuereingang zum Verbinden der mindestens einen Eingabedatenschnittstelle mit der mindestens einen Ausgabedatenschnittstelle zum Routen von Daten zwischen den verbundenen Datenschnittstellen und zum Verarbeiten von Daten entsprechend der Auswahl umfasst.
  18. Vorrichtung nach Anspruch 17, dadurch gekennzeichnet, dass sie einen Selektor zum Verbinden der Eingabedaten der Vorrichtung mit der Datenschnittstelle der Pipeline-Stufe, für welche die Eingabedaten vorgesehen sind, aufweist.
  19. Vorrichtung nach Anspruch 17 oder 18, dadurch gekennzeichnet, dass sie einen Ausgang umfasst, und einen Ausgangsschalter zum Bereitstellen eines Berechnungsergebnisses einer Pipeline-Stufe als einen Ausgang der Rechenvorrichtung durch Verbinden des Ausgangs der einen Pipeline-Stufe mit dem Ausgang der Vorrichtung.
  20. Vorrichtung nach Anspruch 17, 18 oder 19, dadurch gekennzeichnet, dass sie Eingangs-Latches (R1, ..., Rp) zum Aufteilen mindestens einer Rechenoperation in Teiloperationen und Einleiten jeder Teiloperation zu einem anderen Zeitpunkt umfasst.
  21. Vorrichtung nach einem der Ansprüche 17 bis 20, dadurch gekennzeichnet, dass sie Schalter zwischen Pipeline-Stufen zum Verbinden einer Eingabedatenschnittstelle einer Pipeline-Stufe (P1, P2, P3, P4) mit entweder einer ersten Ausgabedatenschnittstelle oder einer zweiten Ausgabedatenschnittstelle aufweist, wobei die erste Ausgabedatenschnittstelle der Ausgang der vorhergehenden Pipeline-Stufe der besagten Pipeline-Stufe ist.
  22. Vorrichtung nach einem der Ansprüche 17 bis 21, dadurch gekennzeichnet, dass sie Speicher (21) zum Speichern von Ausgabewerten einer Pipeline-Stufe (P1, P2, P3, P4) aufweist.
  23. Vorrichtung nach einem der Ansprüche 17 bis 22, dadurch gekennzeichnet, dass sie eine Videoverarbeitungsvorrichtung ist.
  24. Vorrichtung nach einem der Ansprüche 17 bis 22, dadurch gekennzeichnet, dass sie einen Sender und Empfänger (38) für Mobilkommunikation umfasst.
  25. Vorrichtung nach einem der Ansprüche 17 bis 22, dadurch gekennzeichnet, dass sie eine integrierte Schaltung ist.
  26. Drahtloses Endgerät, welches die Vorrichtung zum Ausführen von Rechenoperationen nach einem der Ansprüche 17 bis 25 umfasst.
  27. Computer, welcher eine Vorrichtung zum Ausführen von Rechenoperationen nach einem der Ansprüche 17 bis 25 aufweist.
  28. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass mindestens eine Pipeline-Stufe mindestens zwei ähnliche Recheneinheiten, die parallelgeschaltet sind, umfasst, die jeweils einen Ausgang aufweisen, wobei bei dem Verfahren einer der Ausgänge der mindestens zwei Recheneinheiten als der Ausgang der Pipeline-Stufe ausgewählt wird, wenn eine Teiloperation beendet ist, wobei der Ausgang dieser Teiloperation mindestens eine der Teiloperationen parallel in einer Pipeline ausführt, was das Starten einer Teiloperation für die zweite Multiplikationsoperation, bevor die entsprechende Teiloperation für die erste Multiplikationsoperation beendet ist, umfasst.
  29. Vorrichtung nach einem der Ansprüche 17 bis 25, dadurch gekennzeichnet, dass mindestens eine Pipeline-Stufe mindestens zwei ähnliche Recheneinheiten, die parallelgeschaltet sind, umfasst, die jeweils einen Ausgang aufweisen, und dass die Vorrichtung ferner mindestens einen Schalter (2, 3, 4, 5) zum Auswählen eines der Ausgänge der mindestens zwei Recheneinheiten als den Ausgang der Pipeline-Stufe aufweist.
DE60318494T 2002-11-06 2003-11-05 Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen Expired - Lifetime DE60318494T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FI20021983A FI118654B (fi) 2002-11-06 2002-11-06 Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
FI20021983 2002-11-06
PCT/FI2003/000819 WO2004042599A1 (en) 2002-11-06 2003-11-05 Method and a system for performing calculation operations and a device

Publications (2)

Publication Number Publication Date
DE60318494D1 DE60318494D1 (de) 2008-02-14
DE60318494T2 true DE60318494T2 (de) 2009-01-15

Family

ID=8564892

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60318494T Expired - Lifetime DE60318494T2 (de) 2002-11-06 2003-11-05 Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen

Country Status (10)

Country Link
US (1) US7774400B2 (de)
EP (1) EP1576493B1 (de)
KR (1) KR100715770B1 (de)
CN (1) CN100530168C (de)
AT (1) ATE382901T1 (de)
AU (1) AU2003276291A1 (de)
DE (1) DE60318494T2 (de)
FI (1) FI118654B (de)
TW (1) TWI266233B (de)
WO (1) WO2004042599A1 (de)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856201B1 (en) 2004-11-10 2014-10-07 Altera Corporation Mixed-mode multiplier using hard and soft logic circuitry
DE102005011374B3 (de) * 2005-03-11 2006-07-13 Infineon Technologies Ag Sicheres und schnelles Rechenwerk für Addiereschaltungen von Kryptographieprozessoren
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US20080225939A1 (en) * 2007-03-15 2008-09-18 Jiun-In Guo Multifunctional video encoding circuit system
KR20080085423A (ko) * 2007-03-20 2008-09-24 엘지전자 주식회사 Bma 연산기 및 이를 이용한 인코더
US20090063609A1 (en) * 2007-06-08 2009-03-05 Honkai Tam Static 4:2 Compressor with Fast Sum and Carryout
US7958180B2 (en) * 2007-07-05 2011-06-07 International Business Machines Corporation Multiplier engine
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
WO2011044398A2 (en) * 2009-10-07 2011-04-14 Qsigma, Inc. Computer for amdahl-compliant algorithms like matrix inversion
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
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
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
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
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9588765B2 (en) * 2014-09-26 2017-03-07 Intel Corporation Instruction and logic for multiplier selectors for merging math functions
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US9846623B2 (en) 2015-08-20 2017-12-19 Qsigma, Inc. Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems
CN107315718B (zh) * 2016-04-26 2020-08-21 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN111857822B (zh) * 2016-08-05 2024-04-05 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
US20180113840A1 (en) * 2016-10-25 2018-04-26 Wisconsin Alumni Research Foundation Matrix Processor with Localized Memory
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
EP3480710A1 (de) * 2017-11-03 2019-05-08 Nokia Technologies Oy Computerarchitekturen und anweisungen zur multiplikation
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
WO2021102382A1 (en) * 2019-11-20 2021-05-27 Mentium Technologies Inc. Data processing system configured for separated computations for positive and negative data
US20210150413A1 (en) 2019-11-20 2021-05-20 Mentium Technologies Inc. Data processing system configured for separated computations for positive and negative data
CN113395551A (zh) * 2021-07-20 2021-09-14 珠海极海半导体有限公司 处理器、npu芯片和电子设备
CN115138208B (zh) * 2022-09-06 2022-11-25 山东超华环保智能装备有限公司 数据处理器及包含该处理器的一种废气智能处理系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8718488D0 (en) * 1987-08-05 1987-09-09 British Petroleum Co Plc Chemical process
US5204828A (en) * 1989-02-10 1993-04-20 Intel Corporation Bus apparatus having hold registers for parallel processing in a microprocessor
US4965762A (en) 1989-09-15 1990-10-23 Motorola Inc. Mixed size radix recoded multiplier
US5299320A (en) * 1990-09-03 1994-03-29 Matsushita Electric Industrial Co., Ltd. Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline
US5420815A (en) * 1991-10-29 1995-05-30 Advanced Micro Devices, Inc. Digital multiplication and accumulation system
US5220525A (en) 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
JP3140187B2 (ja) * 1992-07-23 2001-03-05 アイシン・エィ・ダブリュ株式会社 車両用経路誘導装置
JP3546437B2 (ja) * 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5646877A (en) 1995-05-25 1997-07-08 Texas Instruments Incorporated High radix multiplier architecture
JPH09305401A (ja) * 1996-05-13 1997-11-28 Mitsubishi Electric Corp コンピュータ及びコンパイラ
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
JP3678512B2 (ja) 1996-08-29 2005-08-03 富士通株式会社 乗算回路、該乗算回路を構成する加算回路、該乗算回路の部分積ビット圧縮方法、および、該乗算回路を適用した大規模半導体集積回路
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US5875125A (en) 1997-07-07 1999-02-23 International Business Machines Corporation X+2X adder with multi-bit generate/propagate circuit
US6175911B1 (en) 1998-08-21 2001-01-16 Advanced Micro Devices, Inc. Method and apparatus for concurrently executing multiplication and iterative operations
WO2000031658A1 (fr) * 1998-11-26 2000-06-02 Matsushita Electric Industrial Co., Ltd. Processeur et dispositif de traitement d'image
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置

Also Published As

Publication number Publication date
KR100715770B1 (ko) 2007-05-08
CN1735880A (zh) 2006-02-15
TW200414023A (en) 2004-08-01
US20040148321A1 (en) 2004-07-29
EP1576493A1 (de) 2005-09-21
AU2003276291A1 (en) 2004-06-07
FI118654B (fi) 2008-01-31
FI20021983A0 (fi) 2002-11-06
US7774400B2 (en) 2010-08-10
DE60318494D1 (de) 2008-02-14
ATE382901T1 (de) 2008-01-15
WO2004042599A1 (en) 2004-05-21
TWI266233B (en) 2006-11-11
FI20021983A (fi) 2004-07-16
CN100530168C (zh) 2009-08-19
KR20050065672A (ko) 2005-06-29
EP1576493B1 (de) 2008-01-02

Similar Documents

Publication Publication Date Title
DE60318494T2 (de) Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen
DE60313215T2 (de) Verfahren und system zur durchf hrung von kalkulationsoperationenund einrichtung
DE3875979T2 (de) Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten.
DE69429342T2 (de) Vereinheitlicher gleitkommadatenpfad und ganzzahldatenpfad für einen risc-prozessor
DE60116742T2 (de) Digitaler signalprozessor mit gekoppelten multiplizier-addier einheiten
DE69632978T2 (de) Multi-Operand-Addierer, der Parallelzähler benutzt
DE69328070T2 (de) Maske zum Auswählen von Kompenenten in einem Verbundoperand
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69716331T2 (de) Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE69624578T2 (de) Multiplixier-addierungsvorrichtung für gepackte daten
DE102007014808A1 (de) Multiplizier- und Multiplizier- und Addiereinheit
DE102006025673A1 (de) Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE69009067T2 (de) Verfahren zur herstellung von digitalsignalprozessoren unter verwendung eines programmierten kompilators.
DE102007056104A1 (de) Verfahren und Vorrichtung zur Multiplikation von Binäroperanden
DE10357661B4 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE69521431T2 (de) System und verfahren zur durchführung einer inversen diskreten kosinustransformation
DE102006025713B4 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE69032391T2 (de) Mehrere Bit umkodierender Multiplizierer
DE60316342T2 (de) Multiplizierer mit nachschlagetabellen
DE102006025677A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE69601619T2 (de) Verfahren zum Erzeugen eines Fehlerkorrekturparameters bezüglich der Verwendung von modularen Operationen nach der Montgomery-Methode
US7334011B2 (en) Method and system for performing a multiplication operation and a device
Song et al. A generalized methodology for low-error and area-time efficient fixed-width Booth multipliers

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition