DE69435047T2 - Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung - Google Patents

Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung Download PDF

Info

Publication number
DE69435047T2
DE69435047T2 DE69435047T DE69435047T DE69435047T2 DE 69435047 T2 DE69435047 T2 DE 69435047T2 DE 69435047 T DE69435047 T DE 69435047T DE 69435047 T DE69435047 T DE 69435047T DE 69435047 T2 DE69435047 T2 DE 69435047T2
Authority
DE
Germany
Prior art keywords
bit
word
result
adder
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69435047T
Other languages
English (en)
Other versions
DE69435047D1 (de
Inventor
Ruby Bei-Loh Los Altos Hills Lee
John Paul Tyngsborough Beck
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69435047D1 publication Critical patent/DE69435047D1/de
Application granted granted Critical
Publication of DE69435047T2 publication Critical patent/DE69435047T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/508Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using carry look-ahead circuits
    • 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/544Methods 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 for evaluating functions by calculation
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49963Rounding to nearest

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

  • Erfindungsgebiet
  • Die vorliegende Erfindung betrifft Computer und insbesondere Arithmetikeinheiten, die darin verwendet werden.
  • Erfindungshintergrund
  • Computer umfassen normalerweise eine Arithmetik-Logikeinheit, die einen Addierer aufweist, der Zahlen mit einer maximalen Anzahl von Bits addiert. Addierer für Wörter von 32 und 64 Bit Länge sind in Mikroprozessoren und ähnlichem gebräuchlich. Während diese Addierer auch mit viel kleineren Wörtern arbeiten, ist die Mehrzahl der Logikschaltungen, die in dem Addierer enthalten sind, dabei untätig. Ein 64-Bit-Addierer kann beispielsweise verwendet werden, um zwei 8-Bit-Wörter zu addieren, in dem jedes der 8-Bit-Wörter in den niedrigstwertigen Abschnitt eines entsprechenden 64-Bit-Worts platziert wird, und dann die 64-Bit-Wörter addiert werden. Während der Addition sind die Logikschaltungen, die für das Addieren der 7 Bytes höherer Ordnung jedes der Wörter zuständig sind, effektiv untätig. Daher wird 7/8 der Kapazität des Addierers während dieser Operation verschwendet.
  • Berechnungen, die die Addition einer großen Zahl von Paaren von kleinen Wörtern umfassen, treten oft bei der Multimedia-Datenverarbeitung auf. Man betrachte beispielsweise das Problem der Addition von zwei Grauwertbildern, um ein Summenbild zu erzeugen. Die Pixel der Bilder werden üblicherweise als Ein-Byte-Integer gespeichert, die die Lichtstärke an einem entsprechenden Punkt in dem Bild repräsentieren. Da Speicherplatz immer teuer ist, werden die Pixel des Bildes üblicherweise in Wörter gepackt. Wenn die grundlegende Wortlänge des Computers 32 Bit beträgt, können die Pixel mit Vier pro Wort gepackt werden. Jedes der Bilder kann eine Million Pixel aufweisen. Daher schließt das Berechnen des Summenbildes das Addieren von zwei Pixeln aus den Komponentenbildern ein, um ein entsprechendes Pixel in dem Summenbild zu erzeugen. Wenn es in jedem der Bilder eine Million Pixel gibt, müssen eine Million solcher Additionen ausgeführt werden. Jede der Additionen erfordert das „Entpacken" von zwei Wörtern und daraufhin das Speichern des Ergebnisses in dem korrekten Byte eines Wortes in dem Summenbild.
  • Wenn die grundlegende Wortlänge des Computers 32 Bit beträgt, umfasst der Computer üblicherweise einen 32-Bit-Addierer. Während dieser Berechnungen wird 75% der Addier-Kapazität des Addierers untätig sein. Daher wird eine herkömmliche Arithmetik-Logikeinheit nicht optimal genutzt, wenn sie diese Art von Bildberechnung ausführt.
  • Die Verarbeitungszeiten, die in dieser Art von Operation auftreten, können übermäßig sein. Daher werden häufig spezielle parallele Computerarchitekturen eingesetzt, um die Zeit zwischen der Ausführung des Bild-Summieren-Befehls und dem Zeitpunkt, an dem das Summenbild vollendet ist, zu verringern. Da alle der Additionen voneinander unabhängig sind, können die Additionen parallel zueinander ohne Rücksicht auf die Reihenfolge ausgeführt werden. Ein Computer mit M Addierern kann im Prinzip ein Ergebnis in 1/M der Zeit bereitstellen, vorausgesetzt, dass die Verschiebung der Pixel vom Speicher zu den Addierern nicht zu einem Engpass wird. Es wäre daher vorteilhaft, eine Computerarchitektur anzugeben, bei der mehrere Additionen parallel zueinander ausgeführt werden können. Leider sind die Kosten, um diese zusätzlichen Addierer und die Hardware, die benötigt wird, um sie zu steuern, bereitzustellen, oft untragbar.
  • Man beachte auch, dass das Bildaddierproblem, das oben behandelt wurde, oft das Erzeugen eines Durchschnittsbildes umfasst. Ein Bild mit Pixeln, die durch den Durchschnitt der entsprechenden Pixel in den Komponentenbildern gebildet werden, ist äquivalent dazu, die oben erläuterten Pixel des Summenbildes zu erzeugen und dann die Intensität jedes der Summenbildpixel durch 2 zu teilen. Diese Art von Bildberechnung wird bevorzugt, da sie Überläufe verhindert. Wenn die zwei entsprechenden Pixel der Komponentenbilder Werte aufweisen, die größer als 128 sind, können die Summenbildpixel nicht als ein 8-Bit-Integer repräsentiert werden. Um dieses Problem zu vermeiden, wird das Durchschnittsbild verwendet, da die Durchschnittsbild-Pixel immer als Ein-Byte-Integer darstellbar sind, wenn die Komponentenbildpixel Ein-Byte-Integer waren.
  • Im allgemeinen besteht die Aufgabe der vorliegenden Erfindung darin, einen verbesserten Addierer anzugeben.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Addierer anzugeben, der mit einer hohen Effizienz arbeitet, wenn mehrere Additionen mit Wörtern, die kleiner als die Breite des Addierers sind, addiert werden.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Addierer anzugeben, der den Durchschnitt von zwei Zahlen in einem einzigen Maschinenzyklus erzeugen kann.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Addierer anzugeben, der geeignet ist, eine Mehrzahl von Durchschnittswerten von Paaren von Zahlen zu berechnen, die kleiner als die Breite des Addierers sind.
  • Diese und andere Ziele der vorliegenden Erfindung werden für den Fachmann aus der folgenden detaillierten Beschreibung der Erfindung und den beigefügten Zeichnungen offenbar werden.
  • Erfindungsabriss
  • Die vorliegende Erfindung wird in den angefügten Ansprüchen dargelegt.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Addierers nach der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm eines Abschnitts eines Addierers nach der vorliegenden Erfindung, der nur Additionen ausführt.
  • 3 ist ein Blockdiagramm eines Abschnitts eines Addierers nach der vorliegenden Erfindung.
  • 4 ist ein Blockdiagramm einer Multiplexer-Anordnung, die bei der Konstruktion von Ausführungen der vorliegenden Erfindung verwendet werden kann.
  • Detaillierte Beschreibung der Erfindung
  • Die vorliegende Erfindung ist ein verbesserter Addierer, der konfiguriert werden kann, um eine Mehrzahl von partiellen Wort-Additions- oder Mittelwertoperationen parallel auszuführen. Mit Bezug auf die 1 nimmt ein Addierer 10 nach der vorliegenden Erfindung zwei N-Bit-Operanden 12 und 14 an. Die Bits des ersten Operanden werden mit Xi für i = 1...N–1 bezeichnet, die Bits des zweiten Operanden werden mit Yi bezeichnet. Die Operanden werden üblicherweise in zwei der Register in dem Prozessor des Computers gespeichert. Die vorliegende Erfindung könnte jedoch mit Arten von Schaltungen implementiert werden, die nicht in Computer vorgesehen sind. Wenn er als herkömmlicher Addierer betrieben wird, erzeugt der Addierer 10 ein N-Bit-Ausgabewort 16 mit der zweierkomplementären Summe von X und Y und einem 1-Bit-Übertrag. Die Bits der Ausgabe 16 des Addierers 10 werden in der folgenden Erörterung mit Zi bezeichnet. Das Ergebnis der Addition wird üblicherweise wieder zurück in eines der CPU-Register gespeichert.
  • In der folgenden Erörterung werden die Bits in den verschiedenen Wörtern von dem niedrigstwertigen zu dem höchstwertigen Bit nummeriert. Das heißt, dass X0 das niedrigstwertige Bit des Operanden X ist und XN–1 das höchstwertige Bit des Operanden X ist. Die gleiche Übereinkunft wird für die Y- und die Z-Wörter verwendet.
  • Die vorliegende Erfindung erlaubt es, dass jeder der Operanden in eine Mehrzahl von Unterwörtern aufgeteilt wird. Der Einfachheit halber wird die vorliegende Erfindung zuerst mittels einer einzigen Aufteilung jedes der Operanden in partielle Operanden erläutert. In diesem Fall sind die ersten k Bits des X-Operanden, X0 bis Xk–1, die Bits des ersten partiellen Operanden 18 des X-Wortes, und die übrigen Bits, Xk–1 bis XN, sind die Bits des zweiten partiellen Operanden 17 des X-Wortes. Der Y-Operand wird ähnlich in partielle Wörter 19 und 20 aufgeteilt. Auf diese Art sind die Bits Z0 bis Zk–1 die Bits der Summe der partiellen Operanden 18 bzw. 20 und die Bits Zk bis ZN–1 sind die Bits der Summe der partiellen Operanden 17 bzw. 19. Diese beiden Ergebnisse werden in der folgenden Erörterung als partielle oder Unterwörter-Summen bezeichnet. Wie unten detaillierter erklärt wird, kann die vorliegende Erfindung auch verwendet werden, um den Durchschnittswert jedes der beiden partiellen Operanden zu berechnen. Wenn der Durchschnitt berechnet wird, sind die Bits Z0 bis Zk–1 die Bits des Durchschnitts der partiellen Operanden 18 bzw. 20 und die Bits Zk bis ZN–1 sind die Bits des Durchschnitts der partiellen Operanden 17 bzw. 19.
  • Die vorliegende Erfindung wird mittels eines Addierers erläutert, der aus Ein-Bit-Addierstufen konstruiert ist, die eine Schnellübertragungsarchitektur („ripple carry-Architektur”) verwenden, die auch als Übertragungsfortpflanzungsarchitektur („carrypropagate-Architektur") bekannt ist. Die Art, in der die Lehren der vorliegenden Erfindung mit anderen Addierer-Architekturen verwendet werden können, wird unten detaillierter behandelt. Man betrachte nun die 2, die ein Blockdiagramm eines Abschnitts eines Addierers 30 nach der vorliegenden Erfindung ist, der nur Additionen ausführt. Das heißt, dass der Addierer 30 keine Mittelwertbildungs-Operationen ausführt. Der Addierer 30 wird aus einem Array von Ein-Bit-Addierstufen konstruiert. Die vorliegende Erfindung unterscheidet sich von einem herkömmlichen Addierer darin, dass die Stufen entkoppelt werden können, um es zu ermöglichen, dass der Addierer parallele Additionen auf den partiellen Wörtern ausführt. Jeder Ein-Bit-Addierer addiert zwei Bits, eines von dem X-Operanden und eines von dem Y-Operanden, und ein Übertragsbit von der vorherigen Stufe des Addierers, das mit Ci für die i-te Stufe bezeichnet wird, um ein Summen-Bit und ein neues Übertragsbit zu erzeugen. Die zwei in der 2 gezeigten Stufen sind die Ein-Bit-Addierer, die verwendet werden, die höchstwertigen Bits der partiellen Operanden 18 und 20 und die niedrigstwertigen Bits der partiellen Operanden 17 und 19 zu addieren. Der Ein-Bit-Addierer 31 addiert beispielsweise die Bits Ck–2, Xk–1 und Vk–1, um ein Summen-Bit Sk–1 und ein Übertragsbit Ck–1 zu erzeugen. In der folgenden Erörterung der Stufe des Addierers, der die Bits Xp und Yp addiert, um ein Summenbit Sp zu erzeugen, wird in der folgenden Erörterung als die p-te Stufe des Addierers bezeichnet. Bei einem herkömmlichen Addierer, der Übertragsfortpflanzung verwendet, wird das Übertragsbit aus jeder der Stufen zu der nächsten Stufe weitergegeben, indem der Übertragsbit-Eingang jeder der Stufen mit dem Übertragsbit-Ausgang der in dem Array von Ein-Bit-Addierern vorhergehenden Stufe verbunden wird.
  • In der vorliegenden Erfindung wird das Übertragsbit von der Stufe unmittelbar vor der Grenze, die die zwei partiellen Operanden teilt, mit einer Blockierschaltung („blocking circuit") 33 verbunden. Wenn der Addierer 30 als ein herkömmlicher Addierer mit dem gesamten Inhalt der Register 12 und 14, die als einzelne Wörter behandelt werden, verwendet wird, verbindet die Blockierschaltung 33 den Übertragsausgang des Ein-Bit-Addierers 31 mit dem Übertragseingang des Ein-Bit-Addierers 32. Wenn der Addierer 30 verwendet wird, um zwei Additionen parallel zueinander mit einer partiellen Wortgrenze zwischen den Bits k und k–1 in jedem der Register auszuführen, hindert die Blockierschaltung 33 das Übertragsbit des Ein-Bit-Addierers 31 lediglich daran, den Übertragsausgang des Ein-Bit-Addierers 31 weiterzugeben. Dies wird in Antwort auf ein 1-Bit-Signal Mk erreicht. Die Art, in der die Bits Mk spezifiziert werden, wird unten detaillierter behandelt. Die Übertragsausgänge aller der anderen Ein-Bit-Addierer werden in der herkömmlichen Art mit den übrigen Stufen des Addierers 30 verbunden. Somit pflanzen sich die Übertragsbits in jedem der Abschnitte des Addierers 30, der mit einem bestimmten partiellen Operanden arbeitet, in der herkömmlichen Art aus. Die Summenbits aus jeder der Addierstufen werden mit den entsprechenden Bits der Ausgangsanschlüsse verbunden.
  • In herkömmlichen Addierern wird das Übertragsbit von dem Ein-Bit-Addierer, der mit dem höchstwertigen Bit der Operanden arbeitet, verwendet, um Überläufe zu detektieren. Wenn dieses Merkmal für jeden der Operanden implementiert werden soll, wird das Übertragsbit von den Additionen der höchstwertigen Bits jedes der partiellen Operanden mit einer geeigneten Überlaufschaltung verbunden. In einer Ausführung der vorliegenden Erfindung werden die Übertragsbits mit ODER verknüpft, und das resultierende Bit wird verwendet, um einen Überlauf zu detektieren. Dieses Bit kann verwendet werden, um einen Trap aufgrund des Überlaufs auszulösen, oder es kann mit dem Inhalt eines Ein-Bit-Addierers ODER-verknüpft werden. In dem zweiten Fall kann das Programm den Inhalt des Registers prüfen, um zu ermitteln, ob irgendeine Operation seit dem letzten Mal, an dem der Register geprüft wurde, zu einem Überlauf geführt hat.
  • Wenn keine Mittelwertbildungs-Berechnungen implementiert werden sollen, kann die vorliegende Erfindung aus einem herkömmlichen Addierer konstruiert werden, indem eine Blockierschaltung, wie etwa die Blockierschaltung 33, zwischen jedem Paar von Stufen vorgesehen ist, das die Grenze zwischen zwei partiellen Operanden umfassen kann. Wenn der X- und der Y-Eingang in eine beliebige Anzahl von partiellen Operanden von beliebiger Größe geteilt werden sollen, wird ein Blockierabschnitt zwischen jedem der Paare von Ein-Bit-Addierern vorgesehen. Die Blockierabschnitte werden durch eine Maske mit Mk Bits konfiguriert, die den Ort des höchstwertigen Bits jedes der partiellen Operanden angibt. Diese Maske wird in der folgenden Erörterung als die Grenzmaske bezeichnet. Die Bits der Maske können in einem Register in dem Addierer gespeichert werden oder können direkt aus der Anweisung erzeugt werden, die von der Anweisungs-Decodierschaltung des Prozessors, in dem der Addierer liegt, ausgeführt werden.
  • Die obige Ausführung der vorliegenden Erfindung führt Additionen der Operanden aus. Die Blockierschaltung 33 ersetzt das Übertragsbit durch 0 während einer Addition, bei der der Addierer in Unteraddierer mit einer Grenze bei der Blockierschaltung aufgeteilt ist. Wenn der Addierer auch für Subtraktionen des Zweierkomplements verwendet werden soll, bei denen der Addierer ebenso geteilt wird, muss das Übertragsbit gezwungen werden, 1 anstatt 0 zu betragen. Die Blockierschaltung 33, die in der 2 gezeigt ist, implementiert sowohl Additionen als auch Subtraktionen, indem sie einen Eingang F mit einem Wert von entweder „0" oder „1" bereitstellt. Wenn eine Grenze in der Blockierschaltung 33 aktiv ist, ist der Wert von F derjenige Wert, der der nächsten Stufe bereitgestellt wird. Wenn die Grenze inaktiv ist, überträgt die Blockierschaltung 33 lediglich das Übertragsbit, Ck–1, zu der nächsten Stufe.
  • Die oben beschriebenen Ausführungen der vorliegenden Erfindung führen keine Mittelwertbildungs-Berechnungen aus. Während diese Ausführungen wesentliche Verbesserungen gegenüber dem Stand der Technik bereitstellen, stellt die bevorzugte Ausführung der vorliegenden Erfindung zusätzliche Hardware bereit, die die Fähigkeit vorsieht, Durchschnitte zu berechnen. Die zusätzliche Hardware, die benötigt wird, um die Durchschnittsberechnungen auszuführen, wird nun behandelt. Der Durchschnitt zweier Operanden ist die Summe der zwei Operanden geteilt durch Zwei. Eine Division durch Zwei ist äquivalent dazu, die Summe der zwei Operanden nach rechts um ein Bit zu verschieben. Das niedrigstwertige Bit der Summe geht verloren. Das höchstwertige Bit des Durchschnitts ist die Übertragsausgabe des Ein-Bit-Addierers, der mit dem höchstwertigen Bit des partiellen Operanden arbeitet. Der Durchschnitt der partiellen Operanden 18 und 20 kann beispielsweise berechnet werden, in dem die Si zu den Zi–1 für i = 1,..., k–1 geleitet wird, So gelöscht wird, und Ck–1 zu Zk–1 geleitet wird.
  • Für irgendeine gegebene Division der Eingänge in die partiellen Operanden gibt es drei Arten von Stufen. Die Stufe, die die niedrigstwertigen Bits der partiellen Operanden addiert, löscht ihr Summenbit, wenn sie eine Durchschnittsberechnung ausführt. Diese Art von Stufe wird in der folgenden Erörterung als eine Niedrigstwertiges-Bit-Stufe bezeichnet. Die Stufe, die die höchstwertigen Bits eines partiellen Operanden addiert, muss das Übertragsbit, das dadurch erzeugt wird, zu dem höchstwertigen Bit des Ergebnisses leiten und ihr Summenbit zu dem zweit-höchstwertigen Bit des Ergebnis leiten, zusätzlich dazu, die Übertrags-Fortpflanzungskette zu brechen. Diese Art von Stufe wird in der folgenden Erörterung als eine Höchstwertiges-Bit-Stufe bezeichnet. Stufen, die Bits zwischen dem niedrigstwertigen und dem höchstwertigen Bit addieren, müssen ihre Summenbits zu einem Ort leiten, der eine Position rechts von der Position liegt, die verwendet wird, wenn die Stufe eine Addition ausführt. Das heißt, dass die i-te Stufe ihr Summenbit nach Zi–1 leitet. Diese Art von Stufe wird in der folgenden Erörterung als eine Inneres-Bit-Stufe bezeichnet.
  • Während Ausführungen, bei denen partielle Operandengrenzen, die an beliebigen Punkten in den Wörtern liegen, möglich sind, ist es im allgemeinen nützlicher, Grenzen nur an einigen wenigen Positionen bereitzustellen. Wenn beispielsweise der Addierer in einem Computer verwendet werden soll, der normalerweise 32-Bit-Wörter addiert, sind Grenzen, die die 4 Bytes solcher Wörter trennen, nützlicher, da die partiellen Operanden in einem solchen System üblicherweise ein oder zwei Bytes betragen. In diesem Fall muss jede der Addierstufen geeignet sein, in höchstens zwei der drei oben beschriebenen Rollen zu arbeiten. Die Stufe (N–1) muss nur als eine Höchstwertiges-Bit-Stufe dienen. Ähnlich muss die Stufe 0 nur als eine Niedrigstwertiges-Bit-Stufe dienen. Alle anderen Stufen müssen geeignet sein, als Inneres-Bit-Stufen zu arbeiten, wenn der Addierer für Additionen von ganzen Wörtern verwendet wird. Zusätzlich müssen diejenigen Stufen, die Höchstwertiges- oder Niedrigstwertiges-Bit-Stufen einer parallelen Addition oder Mittelwertbildung von Unterwörtern werden können, geeignet sein, in diese Konfigurationen zu schalten.
  • Die Unterschiede zwischen den Stufen liegen in der Art, in der Summensignale, Si, die von jeder der Stufen erzeugt werden, zu den Ausgabe-Bits, Zi, des Addierers geleitet werden, anstatt durch die Details davon, wie die Addierer-Stufen die Summenbits aus den Bits des X- und des Y-Registers erzeugen. Man betrachte nun die 3, die ein Blockdiagramm eines Abschnitts eines Addierers 100 nach der vorliegenden Erfindung ist. Der Addierer 100 wird aus einer Mehrzahl von 4-Bit-Addierabschnitten konstruiert, für die der Addier abschnitt 102 beispielhaft ist. Der Addierabschnitt 102 arbeitet mit Bits q bis q+3 des X- und des Y-Registers, um Summenbits Sq bis Sq+3 zu erzeugen. Jeder der Addierabschnitte ist funktional äquivalent zu 4 der oben beschriebenen Ein-Bit-Addierer, indem jeder Addierabschnitt 4 Bits von dem X-Register erhält, 4 Bits von dem Y-Register erhält und die entsprechenden vier Summenbits erzeugt. Zusätzlich erzeugt der Addierabschnitt 102 ein Übertragsbit Cq+3 und empfängt ein Übertragsbit Cq–1. Die Blockierschaltungen 110 und 112 sind auf jeder der Seiten des Addierabschnitts 102 gezeigt.
  • Der Addierer 100 erzeugt N Summenbits, Si, für i = 0 bis N–1. Wenn der Addierer 100 als ein Einzelner-Operand-Addierer verwendet wird, wird das i-te Summenbit, Si, zu dem i-ten Ausgabebit des Addierers, Zi, geleitet. Jede der Ausgangszeilen Zi ist mit einem Multiplexer verbunden. Beispielhafte Multiplexer werden in der 3 bei 121124 gezeigt. Die Multiplexer werden durch ein Mittelwertsignal A gesteuert. Wenn A falsch ist, wird Si mit Zi für i = 0 bis N–1 gekoppelt. Wenn A wahr ist, gibt es drei Möglichkeiten, wie oben mit Bezug auf die Arten von Stufen behandelt wurde. Diese Multiplexer, die mit Ausgangsleitungen verbunden sind, die nur innere Bits eines Ergebnisses sein können, verbinden Si+1 mit Zi. Die Multiplexer 122 und 123 sind Beispiele solcher Multiplexer.
  • Die zweite Art von Multiplexer sind diejenigen, die mit Ausgangsleitungen verbunden sind, die entweder ein inneres Bit oder ein höchstwertiges Bit eines Ergebnisses bilden können. Ein solcher Multiplexer ist bei 121 gezeigt. Diese Multiplexer werden als Höchstwertiges-Bit-Multiplexer bezeichnet. Ein Höchstwertiges-Bit-Multiplexer ist ein 3-zu-1-Multiplexer, der in Antwort auf A und das Maskenbit arbeitet, das ermittelt, ob der Multiplexer mit einem höchstwertigen Bit eines Ergebnisses verbunden ist. Wenn A falsch ist, so verbindet ein Höchstwertiges-Bit-Multiplexer Zi mit Si. Wenn A wahr ist und das Maskenbit ebenfalls wahr ist, so verbindet der Höchstwertiges-Bit-Multiplexer Zi mit Ci, wobei Ci das Übertragsbit ist, das von der Stufe, die Si erzeugt hat, erzeugt wird. Wenn A wahr ist und das Maskenbit falsch ist, so verbindet der Höchstwertiges-Bit-Multiplexer Zi mit Si+1 Man beachte, daß der Multiplexer, der mit ZN–1) verbunden ist, ein Höchstwertiges-Bit-Multiplexer ist, bei dem ein 2-zu-1-Multiplexer ausreicht, da dieser Multiplexer nie ein innerer Multiplexer sein kann.
  • Die dritte Art von Multiplexer sind diejenigen, die mit Ausgangsleitungen verbunden sind, die entweder ein internes Bit oder ein niedrigstwertiges Bit eines Ergebnisses sein können. Ein solcher Multiplexer wird bei 124 gezeigt. Diese werden als Niedrigstwertiges-Bit-Multiplexer bezeichnet. Wenn das Ergebnis der Mittelwertoperation abgeschnitten werden soll, d. h., dass das nach außen verschobene Bit bei der Ermittlung des Ergebnisses ignoriert werden soll, ist ein Niedrigstwertiges-Bit-Multiplexer das gleiche wie ein interner Multiplexer.
  • Während das Abschneiden als ein Verfahren verwendet werden kann, um das Ergebnis einer Integer-Division durch Verschiebung nach rechts zu runden, kann es unerwünschte Probleme hervorrufen, die von anderen Arten der Rundung verhindert werden können. Man betrachte den Fall, in dem ein Bild in der Größe verringert werden soll, indem angrenzende Pixel in dem Bild gemittelt werden. Das heißt, dass jede Gruppe von vier Pixeln durch ein Pixel mit einem Wert ersetzt wird, der gleich dem Durchschnitt der vier ersetzten Pixel ist. Das Bild wird durch einen I×I-Pixelarray repräsentiert. Die Pixelreduktion kann erreicht werden, indem die ungeraden und die geraden Zeilen in dem Array gemittelt werden, um einen I×I/2-Array zu erzeugen. Die ungeraden und geraden Spalten dieses Zwischenarrays werden dann gemittelt, um den endgültigen I/2×I/2-Array zu erzeugen. Wenn die verschiedenen Mittelwertbildungsoperation immer abrunden, wird das Ergebnisbild unterschiedliche statistische Eigenschaften als das Ursprungsbild aufweisen. Das Ergebnisbild wird beispielsweise eine niedrigere durchschnittliche Lichtstärke als das Ursprungsbild aufweisen. Es ist oft wichtig, dass diese Art von Artefakt vermieden wird. Die vorliegende Erfindung gibt ein Mittel an, um diese Art von verzerrter Rundung zu vermeiden.
  • In der bevorzugten Ausführung der vorliegenden Erfindung wird Ungerade-Rundung-Logik verwendet, um diese Verzerrung zu vermeiden. Bei Ungerade-Rundung-Systemen wird das Ergebnis auf den nächsten ungeraden Integer gerundet, wenn ein Abrundungsfehler durch die Rechtsverschiebung erzeugt wird. Wenn die Antwort vor dem Runden exakt ist, wird keine Änderung vorgenommen. Ein Abrundungsfehler tritt auf, wenn eine 1 von den Ergebnissen weg verschoben wird. Dies tritt auf, wenn das niedrigstwertige Bit vor dem Verschieben eine „1" ist. In diesem Fall wird das niedrigstwertige Bit des Ergebnisses auf eine „1" gesetzt. Wenn das weg verschobene Bit eine „0" ist, war das Ergebnis selbst nach der Verschiebung korrekt, und das niedrigstwertige Bit des Ergebnisses des Ergebnisses wird nicht verändert. Die vorliegende Erfindung verwendet Ungerade-Rundung, weil ein Ungerade-Rundung-System durch das Hinzufügen eines einzigen OR-Gatters 131 zu dem Multiplexer implementiert werden kann. Daher wählt bei einem Niedrigstwertiges-Bit-Multiplexer, bei dem urverzerrte Rundung verwendet wird, der Multiplexer das Signal (Si+1 OR Si), um es mit Zi zu verbinden, wenn A wahr ist und das Maskenbit anzeigt, dass der fragliche Multiplexer das niedrigstwertige Bit eines Ergebnisses ist. Wenn A falsch ist, wird Si mit Zi verbunden. Wenn A wahr ist und das Maskenbit anzeigt, dass die Ausgangsleitung mit einem internen Bit eines Ergebnisses verbunden wird, verbindet der Multiplexer Zi mit Si+1.
  • Man kann zeigen, dass der durchschnittliche Fehler, der mit dieser Form der Rundung erhalten wird, Null ist, vorausgesetzt die S-Werte sind gleich verteilt. Man beachte, dass ein Gerade-Rundung-System ebenfalls Verzerrung beim Runden verhindert. Bei einem Gerade-Rundung-System wird das Ergebnis auf den nächsten geraden Integer gerundet, wenn ein Abrundungsfehler auftritt und das Ergebnis vor dem Runden ungerade war. Die Hardware, die benötigt wird, um einen Gerade-Rundung-Plan zu implementieren, ist jedoch wesentlich komplexer.
  • Die oben beschriebenen Multiplexer setzen voraus, dass nur eine begrenzte Anzahl von möglichen partiellen Operandengrenzen implementiert werden. Wenn der Addierer jedoch beliebige Grenzen aufweisen soll, so muss der Multiplexer, der mit jeder der Ausgangsleitungen außer der 0-ten und der (N–1)-ten Stufe verbunden ist, fähig sein, jede der drei möglichen Multiplexerfunktionen auszuführen. Ein Blockdiagramm einer Multiplexer-Anordnung 200, die diese Funktionen vorsieht, ist in der 4 gezeigt. Die Multiplexer-Anordnung 200 wird aus einem 4-zu-1-Multiplexer 201 konstruiert. Es wird in der folgenden Erörterung angenommen, dass der Multiplexer mit der Ausgangsleitung Zq verbunden ist. Der Multiplexer 201 koppelt entweder Sq+i, Sq, Cq oder (Sq+1 OR Sq) mit Zq, abhängig von dem Zustand des Mittelwert-Signals und des Maskenbits. Da der Multiplexer 201 sowohl als ein Niedrigstwertiges-Bit-Multiplexer als auch als ein Höchstwertiges-Bit-Multiplexer korrekt arbeiten muss, muss es fähig sein, den Status sowohl von Mq als auch von Mq+1 zu ermitteln.
  • Zusätzlich zum Bereitstellen von paralleler Addition und Mittelwertbildung in einem Addierer mit einer Komplexität, die nur etwas größer als bei einem herkömmlichen Addierer ist, verbessert die vorliegende Erfindung auch die generelle Verarbeitungseffizienz vieler Arten von Berechnungen, bei denen die Daten am Beginn der Berechnungen in Wörter gepackt werden. Man betrachte das Bildgrößen-Verringerungsproblem, das oben behandelt wurde, wie es auf einem Computer mit einer 32-Bit-Wortlänge ausgeführt würde. Wenn jedes Pixel durch einen Ein-Byte-Integer repräsentiert wird, werden die Bilddaten üblicherweise in Wörter gepackt, um Speicherplatz zu sparen. Daher wird jede horizontale Linie in dem Bild durch I/4 32-Bit-Wörter repräsentiert. Um die Pixel einer Linie mit ungerader Nummer mit denen einer Linie mit gerader Nummer, die auf sie folgt, zu addieren, kann ein Wort der Linie mit ungerader Nummer, das 4 Pixel umfasst, in das X-Register eingegeben werden, und das entsprechende Wort aus der Linie mit gerader Nummer kann in das V-Register eingegeben werden. Der Inhalt des Z-Registers kann dann direkt im Speicher als ein gepacktes Wort der resultierenden Bildlinie gespeichert werden. Diese Operation kann ausgeführt werden, ohne dass die einzelnen Bytes entpackt und das Ergebnis wieder gepackt werden muss. Daher er laubt es die vorliegende Erfindung, dass 4 zu verarbeitende Pixel mit einer einzigen Additionsanweisung verarbeitet werden, und vermeidet die Packen- und Entpacken-Anweisungen, die bei herkömmlichen Addierern benötigt werden. Schließlich erzeugt die vorliegende Erfindung automatisch den Durchschnitt von zwei Pixeln, wodurch eine Verschiebungsoperation nach jeder Addition eliminiert wird.
  • Des weiteren ist die parallele Unterwort-Addierkonstruktion nicht komplexer als eine herkömmliche Volles-Wort-Addieranweisung. Bei einer herkömmlichen Volles-Wort-Addition gibt der Programmierer zwei Register mit den Operanden und ein drittes Register an, um das Ergebnis zu halten. Die vorliegende Erfindung benötigt ebenfalls nur die Angabe von drei Registern. Wenn nur wenige mögliche Konfigurationen des Addierers mit partiellen Operandenfeldern möglich sind, können diese Konfigurationen in der Addieranweisung eingeschlossen sein, und die Anweisungs-Decodierschaltungen können dann die entsprechenden Maskenbits erzeugen. Somit werden keine zusätzlichen Anweisung benötigt, um den Addierer einzurichten.
  • In der obigen Erörterung wurde angenommen, dass die Eingangs- und Ausgangswörter in Prozessorregistern gespeichert werden. Ausführungen der vorliegenden Erfindung, bei denen die Eingangs- und/oder Ausgangswerte zu Orten, die in den Addier- oder Mittelwertbildungsanweisungen spezifiziert werden, gesandt oder von ihnen empfangen werden, werden für den Fachmann offensichtlich sein. Die Addieranweisung kann beispielsweise eine Mehrzahl von Registern spezifizieren, um die Summen zu empfangen, wobei jede der Summen in die niedrigstwertigen Bits des Registers geladen werden. Ähnlich können die Ergebnisse direkt zu Orten, die sich von dem Register unterscheiden, z. B. dem Speicher oder anderen Funktionseinheiten, gesandt werden. Zusätzlich versteht es sich, dass die Operanden von anderen Funktionseinheiten oder aus dem Speicher kommen können.
  • Während die obigen Ausführungen mittels paralleler, partieller Unterwort-Mittelwertbildung beschrieben wurden, wird es für den Fachmann offensichtlich sein, dass die vorliegende Erfindung auch verwendet werden kann, um eine Mittelwertbildungsanweisung auf den gesamten Inhalt des X- und des Y-Wortes anzuwenden. Eine solche Ausführung bietet den Vorteil von zwei Operationen, d. h. Addition und Division durch Zwei, in einem Maschinenzyklus.
  • Die Ausführungen der vorliegenden Erfindung wurden mittels Addierern vom Übertragsfortpflanzungstyp beschrieben. In der bevorzugten Ausführung der vorliegenden Erfindung wird eine Parallelübertragungsarchitektur („carry-look-ahead-Architektur") verwendet, da sie kürzere Verzögerungen aufweist. Bei Parallelübertragungsaddierern erzeugen die Übertrags-Erzeugungsschaltungen ein Übertragungs- und ein Erzeugungssignal, die jedem der Bits des Addieres entsprechen. Diese Signale können in einer Art verwendet werden, die analog zu den Übertragsbits ist, die oben beschrieben wurden, um es zu erlauben, dass der Addierer in parallele Unterwort-Addierer aufgeteilt wird. Man betrachte den Fall, bei dem der Addierer so aufgeteilt werden soll, dass die Stufe k auf dem höchstwertigen Bit eines Unterwort-Ergebnisses operiert. Eine Blockierschaltung, wie etwa die Blockierschaltung 33, die in der 2 gezeigt ist, kann so in die Übertrags-Erzeugungslogik eingefügt werden, dass das Übertragungsbit und das Erzeugungsbit auf die geeigneten Werte gezwungen werden, abhängig von der Art von Operation, d. h. Addition oder Subtraktion, die gerade ausgeführt wird. Wenn der Addierer mit Wörtern verwendet wird, die nicht bei der Stufe k unterbrochen sind, ändert die Blockierschaltung die Werte des Übertragungsbits und des Erzeugungsbits, die der Stufe k entsprechen, nicht.
  • Während die obigen Ausführungen der vorliegenden Erfindung mittels Anweisungen als das Mittel, um die verschiedenen Operationen auszulösen, die von der vorliegenden Erfindung ausgeführt werden, beschrieben wurden, wird es für den Fachmann offensichtlich sein, dass die Operationen der vorliegenden Erfindung durch elektrische Signale ausgelöst werden können, die nicht durch Anweisungen eines gespeicherten Computerprogramms erzeugt werden. Daher soll der Begriff „Anweisung", wenn er in den Ansprüchen verwendet wird, auch Operationen umfassen, die von anderen Arten von Signalisierung ausgelöst werden. Des weiteren wird es für den Fachmann offensichtlich sein, dass die vorliegende Erfindung in Schaltungen verwendet werden kann, die nicht Teil eines Computers sind.
  • Während die obigen Ausführungen der vorliegenden Erfindung mittels Mittelwertbildung von Integer ohne Vorzeichen beschrieben wurden, wird es für den Fachmann offensichtlich sein, dass die Lehren der vorliegenden Erfindung auf Integer mit Vorzeichen angewandt werden können. In diesem Fall wird, anstatt das Übertragsbit von dem höchstwertigen Bit der Summe in das höchstwertige Bit des Ergebnisses zu verschieben, das zweite wie folgt ermittelt: Wenn die zwei Operanden das gleiche Vorzeichen aufweisen, so bildet das höchstwertige Bit des Ergebnisses wie vorher das Übertragsbit. Wenn die zwei Operanden unterschiedliche Vorzeichen aufweisen, so ist das höchstwertige Bit des Ergebnisses das höchstwertige Bit der Summe vor der Rechtsverschiebung. Das heißt, dass das höchstwertige Bit des Ergebnisses (Xp AND Yp) OR (Xp OR Yp) AND Cp–1 beträgt. In dem Fall eines Parallelübertragungsaddierers reduziert sich dieser Ausdruck zu Gp OR Pp AND Cp–1, wobei Gp und Pp die Erzeugungs- und Übertragungsbits, die dem höchstwertigen Bit entsprechen.
  • Verschiedene Modifikationen der vorliegenden Erfindung werden für den Fachmann aus der vorangegangenen Beschreibung und den beigefügten Zeichnungen offenbar sein. Daher soll die vorliegende Erfindung nur durch den Schutzumfang der folgenden Ansprüche begrenzt sein.

Claims (10)

  1. Vorrichtung (10, 30, 100) zum Verarbeiten des Inhalts eines X-Wortes (12), welches Bits Xi aufweist, und eines Y-Wortes (14), welches Bits Yi aufweist, zum Erzeugen eines Ergebniswortes, welches Bits Zi aufweist, wobei i = 0 bis N–1, wobei Z0 das niedrigstwertige Bit des Ergebniswortes (16) ist und ZN–1 das höchstwertige Bit des Ergebniswortes ist, wobei die Vorrichtung Mittel zum Aufteilen (33, 110, 112) der X-, der Y- und der Ergebnisworte in mehrere Unterworte (17, 18, 19, 20, 21, 22) aufweist, wobei jeweils ein Unterwort der Y- und der Ergebnisworte jeweils einem Unterwort der X-Worte entspricht; und Addiermittel (31, 32, 102, 121124) aufweist, welche abhängig von einem ersten Befehl (A = falsch) die Summe jedes X-Unterwortes und des entsprechenden Y-Unterwortes erzeugen, wobei das Ergebnis das entsprechende Unterwort des Ergebniswortes bestimmt, und abhängig von einem zweiten Befehl (A = wahr) die Summe geteilt durch Zwei jedes X-Unterwortes und des entsprechenden V-Unterwortes erzeugen, wobei das Ergebnis das entsprechende Unterwort des Ergebniswortes bestimmt, wobei die Addiermittel eine Vielzahl Addierabschnitte (102) aufweisen, wobei jeder Addierabschnitt (102) Multiplexer (121124) aufweist, die diesem zugeordnet sind, wobei die Multiplexer von dem ersten und dem zweiten Befehl (A) gesteuert werden, wobei die Multiplexer so konfiguriert sind, daß sie als ein Multiplexer des niedrigstwertigen Bits (124), ein Multiplexer der mittleren Bits (122, 123) oder ein Multiplexer des höchstwertigen Bits (121) arbeiten, wobei an jeder Unterwort-Grenze ein Multiplexer des höchstwertigen Bits (121) vorgesehen ist, um einen Übertrag der Summe zu dem entsprechenden Unterwort zurückzuverschieben.
  2. Vorrichtung nach Anspruch 1, wobei der Multiplexer des höchstwertigen Bits (121) abhängig von einem dritten Signal (Mq+4) so konfiguriert wird, daß er einen Übertrag, der von dem Addierabschnitt (102) erzeugt wird, zu dem entsprechenden Unterwort des Ergebniswortes führt.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei der Multiplexer des niedrigstwertigen Bits (124) abhängig von einem vierten Signal (Mq) so konfiguriert wird, daß er das niedrigstwertige Bit des entsprechenden Unterwortes des Ergebniswortes unterdrückt.
  4. Vorrichtung nach einem der vorangehenden Ansprüche, wobei die Vorrichtung Mittel zum Verarbeiten eines oder mehrerer Bits des X-Wortes und entsprechender Bits, die von dem Y-Wort abgeleitet werden, aufweist, sowie Mittel zum Erzeugen eines Erzeugungs-Bits und eines Fortpflanzungs-Bits, die jedem Bit des X-Wortes entsprechen, und wobei die Aufteilungsmittel Mittel zum Einstellen des Erzeugungs-Bits und des Fortpflanzungs-Bits auf solche Werte aufweist, die von der durchgeführten Verarbeitung bestimmt werden, wenn das Bit des X-Wortes das höchstwertige Bit eines Unterwortes ist.
  5. Vorrichtung nach einem der vorangehenden Ansprüche, wobei die Vorrichtung mehrere Addierstufen (31, 32, 102) aufweist, die in Reihe geschaltet sind, wobei jede Addierstufe Mittel zum Verarbeiten eines oder mehrerer Bits von dem X-Wort und entsprechender Bits, die von dem Y-Wort abgeleitet werden, aufweist sowie Mittel zum Fortpflanzen eines Übertrag-Bits der Addierstufe zu der nächsten Addierstufe in der Reihenschaltung, und wobei die Aufteilungsmittel Mittel (33, 110, 112) zum Einstellen des Übertrag-Bits auf einen Wert aufweisen, der durch die Verarbeitung bestimmt wird, die durchgeführt wird, wenn die Addierstufen Bits verschiedener Unterworte in dem X-Wort verarbeiten.
  6. Vorrichtung nach Anspruch 5, wobei die Addierstufen N Ergebnis-Bits Si, für i = 0 bis N–1 erzeugen, wobei Si aus der Verarbeitung von Xi abgeleitet wird, und wobei die Vorrichtung ferner N Multiplexer (121124) aufweist, wobei jeder Multiplexer ein Signal erzeugt, das eines der Ergebnis-Bits anzeigt, wobei jeweils ein Multiplexer für jedes Ergebnis-Bit Zp, für p = 0 bis N–1, vorgesehen wird, wobei die Multiplexer, welche Zi entsprechen, abhängig von dem ersten Befehl Sp mit Zp verbinden.
  7. Vorrichtung nach Anspruch 6, wobei die Multiplexer, welche Zp entsprechen, abhängig von dem ersten Befehl Zp mit Sp+1 verbinden, wenn Zp innerhalb eines der Unterwörter liegt und mit Zp verbinden, wenn Zp das höchstwertige Bit eines der Ergebnis-Unterwörter ist, wobei Zp ein Übertrag-Bit ist, das von der Addierstufe erzeugt wird, die das höchstwertige Bit des X-Unterwortes, welches dem Ergebnis-Unterwort entspricht, das Zp enthält, verarbeitet.
  8. Vorrichtung nach Anspruch 6 oder 7, wobei der Multiplexer (200), der Zp entspricht, ferner Mittel zum Verbinden von Zp mit (Sp+1 ODER Sp), wenn Zp das niedrigstwertige Bit eines der Ergebnis-Unterworte ist, aufweist.
  9. Vorrichtung nach Anspruch 5, 6 oder 7, mit Mitteln zum Erzeugen eines Übertrag-Bit, Cp, das jedem X-Bit entspricht, welches das höchstwertige Bit eines Unterwortes ist, und wobei der Multiplexer, der Zp entspricht, Zp mit Sp+1 abhängig von dem ersten Befehl verbindet, wenn Zp innerhalb eines der Unterworte liegt, und mit Cp verbindet, wenn Zp das höchstwertige Bit eines der Ergebnis-Unterworte ist, wobei Cp ein Übertrag-Bit ist, das von der Addierstufe erzeugt wird, welche das höchstwertige Bit des X-Unterwortes, welches dem Ergebnis-Unterwort entspricht, das Zp enthält, verarbeitet.
  10. Vorrichtung nach Anspruch 9, wobei der Multiplexer, der Zp entspricht, ferner Mittel zum Verbinden von Zp mit (Sp+1 ODER Sp), wenn Zp das niedrigstwertige Bit eines der Ergebnis-Unterworte ist, aufweist.
DE69435047T 1993-11-29 1994-08-02 Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung Expired - Fee Related DE69435047T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US158649 1993-11-29
US08/158,649 US5883824A (en) 1993-11-29 1993-11-29 Parallel adding and averaging circuit and method

Publications (2)

Publication Number Publication Date
DE69435047D1 DE69435047D1 (de) 2008-01-03
DE69435047T2 true DE69435047T2 (de) 2008-10-02

Family

ID=22569081

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69435047T Expired - Fee Related DE69435047T2 (de) 1993-11-29 1994-08-02 Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung

Country Status (4)

Country Link
US (1) US5883824A (de)
EP (1) EP0656582B1 (de)
JP (1) JP3729881B2 (de)
DE (1) DE69435047T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
EP0789870B1 (de) * 1995-09-01 2003-01-15 Philips Electronics North America Corporation Verfahren und vorrichtung für anpassbare operationen durch einen prozessor
US6003125A (en) * 1997-01-24 1999-12-14 Texas Instruments Incorporated High performance adder for multiple parallel add operations
US6408320B1 (en) * 1998-01-27 2002-06-18 Texas Instruments Incorporated Instruction set architecture with versatile adder carry control
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6211892B1 (en) * 1998-03-31 2001-04-03 Intel Corporation System and method for performing an intra-add operation
US6449629B1 (en) * 1999-05-12 2002-09-10 Agere Systems Guardian Corp. Three input split-adder
US6512523B1 (en) * 2000-03-27 2003-01-28 Intel Corporation Accurate averaging of elements using integer averaging
GB2362732B (en) * 2000-05-23 2004-08-04 Advanced Risc Mach Ltd Parallel processing of multiple data values within a data word
US6748411B1 (en) * 2000-11-20 2004-06-08 Agere Systems Inc. Hierarchical carry-select multiple-input split adder
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US7219118B2 (en) * 2001-11-06 2007-05-15 Broadcom Corporation SIMD addition circuit
US7558816B2 (en) * 2001-11-21 2009-07-07 Sun Microsystems, Inc. Methods and apparatus for performing pixel average operations
US7254599B2 (en) * 2002-05-30 2007-08-07 Sun Microsystems, Inc. Average code generation circuit
US7149768B2 (en) * 2002-10-15 2006-12-12 Ceva D.S.P. Ltd. 3-input arithmetic logic unit
JP4317738B2 (ja) * 2003-12-17 2009-08-19 富士通株式会社 平均値算出装置および平均値算出方法
US20090070400A1 (en) * 2007-09-12 2009-03-12 Technology Properties Limited Carry-select adder
US8036484B2 (en) * 2007-10-16 2011-10-11 Broadcom Corporation In-place averaging of packed pixel data
CN101803205B (zh) * 2008-08-15 2013-12-18 Lsi公司 近码字的ram列表解码
US9524572B2 (en) * 2010-11-23 2016-12-20 Microsoft Technology Licensing, Llc Parallel processing of pixel data
KR102072543B1 (ko) * 2013-01-28 2020-02-03 삼성전자 주식회사 복수 데이터 형식을 지원하는 가산기 및 그 가산기를 이용한 복수 데이터 형식의 가감 연산 지원 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3987291A (en) * 1975-05-01 1976-10-19 International Business Machines Corporation Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location
US4137568A (en) * 1977-04-11 1979-01-30 Pitney-Bowes, Inc. Circuit for establishing the average value of a number of input values
JPS59161731A (ja) * 1983-03-07 1984-09-12 Hitachi Ltd バレルシフタ
JPS6124331A (ja) * 1984-07-12 1986-02-03 Nec Corp アナログ−デイジタル変換器
US4707800A (en) * 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
DE3509762A1 (de) * 1985-03-19 1986-09-25 Battelle-Institut E.V., 6000 Frankfurt Schaltungsanordnung zur mittelwertbildung
JPS61239327A (ja) * 1985-04-16 1986-10-24 Nec Corp オ−バフロ−検出方式
US4914617A (en) * 1987-06-26 1990-04-03 International Business Machines Corporation High performance parallel binary byte adder
US5189636A (en) * 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US5047975A (en) * 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode

Also Published As

Publication number Publication date
US5883824A (en) 1999-03-16
JPH07210369A (ja) 1995-08-11
EP0656582A1 (de) 1995-06-07
EP0656582B1 (de) 2007-11-21
JP3729881B2 (ja) 2005-12-21
DE69435047D1 (de) 2008-01-03

Similar Documents

Publication Publication Date Title
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE3854321T2 (de) Populationszählung in Rechnersystemen.
DE69416283T2 (de) Überlaufsteuerung für arithmetische Operationen
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE102020120371A1 (de) Integrierte schaltungen mit modularen multiplikationsschaltkreisen
DE4302898C2 (de) Arithmetische Recheneinheit mit Akkumulierfunktion
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE60318494T2 (de) Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen
DE69326314T2 (de) Durchführung aritmetische Operationen auf Daten
DE69131267T2 (de) Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision
DE69731700T2 (de) Arithmetischer Schaltkreis und arithmetisches Verfahren
DE60021623T2 (de) Multiplizierer und verschiebungsanordnung mit benutzung von vorzeichenzifferzahlen darstellung
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
WO1997026603A1 (de) Prozessor zur bildverarbeitung
DE3888230T2 (de) Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung.
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE3852576T2 (de) Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen.
DE69500410T2 (de) Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren
DE10164416A1 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
DE2746355A1 (de) Einrichtung und verfahren zur wahlweisen multiplikation oder division zweier als binaerzahlen vorliegender operanden
DE3434777C2 (de)
DE19543544C2 (de) Einrichtung zur zweidimensionalen diskreten Echtzeit-Cosinustransformation
DE69324992T2 (de) Datenverarbeitungssystem und -verfahren zur Berechnung der Summe von Basis und Versatz
DE19635114A1 (de) Multiplizierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee