-
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 121–124 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.