DE69430838T2 - Schaltung und Verfahren zur parallelen Verschiebung und Addition - Google Patents
Schaltung und Verfahren zur parallelen Verschiebung und AdditionInfo
- Publication number
- DE69430838T2 DE69430838T2 DE69430838T DE69430838T DE69430838T2 DE 69430838 T2 DE69430838 T2 DE 69430838T2 DE 69430838 T DE69430838 T DE 69430838T DE 69430838 T DE69430838 T DE 69430838T DE 69430838 T2 DE69430838 T2 DE 69430838T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- word
- adder
- bits
- subword
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 230000001902 propagating effect Effects 0.000 claims 1
- 238000007792 addition Methods 0.000 description 28
- 230000000295 complement effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/527—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
- G06F7/5272—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; 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/508—Adding; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic 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/575—Basic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49963—Rounding to nearest
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung bezieht sich auf Computer, insbesondere arithmetische Einheiten zur Nutzung hierin
- Computer umfassen normalerweise eine arithmetische Logikeinheit (ALU - "arithmetic)logic unit"), die einen Addierer aufweist, welcher Zahlen einiger maximaler Bitanzahlen addiert. Addierer für Wörter der Länge 32 oder 64 Bit sind in Mikroprozessoren oder dergleichen üblich. Diese Addierer arbeiten auch für viel kleinere Wörter. Wenn sie dies tun, ist die Mehrzahl der von dem Addierer umfaßten Logikschaltungen unbelegt. Beispielsweise kann ein 64 Bit-Addierer genutzt werden, um zwei 8 Bit-Wörter mit Hilfe des Anordnens jedes 8 Bit- Worts in dem niederwärtigsten Teil eines entsprechenden 64 Bit-Worts und des anschließenden Addierens der 64 Bit-Wörter zu addieren. Während der Addition ist die Logikschaltung, welche sich mit dem Addieren der sieben höherwertigen Bits jedes Worts beschäftigt, effektiv unbelegt. Folglich wird ein 7-/8-tel der Kapazität des Addierers während dieser Operation nicht genutzt.
- Berechnungen, die Operationen mit einer großen Anzahl kleiner Wörter einschließen, treten häufig bei Multimedia-Datenverarbeitung auf. Bilder werden normalerweise als Anordnungen von Bildpunkten bzw. Pixeln repräsentiert, in welchen jeder Bildpunkt durch ein Wort repräsentiert ist, welches wesentlich kleiner als eine maximale Wortgröße der arithmetischen Logikeinheit ist. Ein Grauskalen-Bild wird typischerweise durch eine Anordnung eines Bytes ganzer Zahlen repräsentiert, die die Lichtintensität in entsprechenden Bereichen des Bildes repräsentieren. In ähnlicher Weise werden Tonaufzeichnungen typischerweise durch Anordnungen von 1 oder 2 Byte ganzer Zahlen repräsentiert, die die Intensität der Tonaufzeichnung als eine Funktion der Zeit repräsentieren. Folglich nutzt die Multimedia-Datenverarbeitung typischerweise die Rechenkapazität der arithmetischen Logikeinheit, welche in dem typischen Allzweckcomputer integriert ist, nicht vollständig.
- Zusätzlich zu der nicht vollständigen Nutzung der Kapazität der ALU führt diese Art von Datenverarbeitung zu weiteren Ineffizienzen, die sich aus der Notwendigkeit ergeben, die Daten vor ihrem Verarbeiten in der ALU zu verdichten und zu entpacken. Beispielsweise sind die Bildpunkte des Bildes typischerweise in Wörter verdichtet, weil Speicherraum stets sehr gefragt ist. Wenn die Basiswortgröße in dem Computer 32 Bit beträgt, können vier der Bildpunkte eines Grauskalen-Bildes pro Wort gepackt werden. Es sei eine Operation betrachtet, die für jeden Bildpunkt in dem Bild ausgeführt werden muß. Zusätzlich zu der Zeit, die zum Ausführen der Operation benötigt wird, muß das Programm auch die Bildpunktinformation vor jeder Berechnung entpacken und das Ergebnis packen. Diese Verdichtungs- und Entpack- Operationen vermindern die Betriebseffizienz weiter.
- Die in Multimedia-Operationen angetroffene Berechnungszeit kann sehr groß sein. Folglich werden oft spezielle Parallelcomputer-Architekturen angewendet, um die Zeit zwischen der Ausführung des Summenbild-Befehls und der Zeit zu vermindern, zu der das Summenbild beendet ist. Multimedia-Verarbeitungsoperationen, die für einen Bildpunkt oder eine Tonprobe ausgeführt werden, sind oft unabhängig von den für andere Bildpunkte oder andere Tonproben ausgeführten Operationen. Folglich können die Operationen parallel ohne Rücksicht auf die Reihenfolge ausgeführt werden. Ein Computer mit M Addierern kann im Prinzip ein Ergebnis in der Zeit 1/M liefern, wenn die Bewegung der Bildpunkte zwischen dem Speicher und den Addierern nicht limitierend wird. Folglich wäre es vorteilhaft, eine Computer- Architektur zu haben, in welcher mehrere Additionen parallel ausgeführt werden können. Leider verhindern die Kosten für das Bereitstellen dieser zusätzlichen ALU's und der zum Steuern benötigten Hardware dieses oft.
- Eine Klasse von Berechnungen, die oft über eine große Datenfolge ausgeführt wird, ist die Multiplikation mit einem Binärbruch. Eine solche Berechnung ist bei Filteroperationen und bei Datenkompressions- und Datendekompressionsoperationen üblich. In diesen Fällen wird mit einer Konstante multipliziert.
- John R. Mick, "A powerful new achitecture for a 32-bit bit-slice microprocessor" in WESCON 86/Konferenz-Band, Vol. 30, No. 27/3, S. 1-5, offenbart eine arithmetische Einheit zum Erzeugen der Summe eines ersten Worts dividiert durch 2m und eines zweiten Worts, das heißt eine bekannte "Addier- und Verschieber"-Einheit, welche mehrere Additionen jedoch nicht parallel ausführen kann.
- JP-A-59-43442 offenbart eine arithmetische Einheit zum Implementieren einer "Addier- und Verschiebe"-Operation, wobei die verschobenen Bits über eine Multiplexerschaltung an einen Addierer geliefert werden. Diese Referenz erlaubt ebenfalls nicht eine parallele Ausführung mehrerer Additionen.
- US-A-3,987,297 offenbart einen bekannten parallelen Digitaladdierer mit einstellbaren Grenzmechanismen zum Unterteilen des Addierers in mehrere unabhängige Betriebszonen. Diese Referenz beschreibt jedoch nicht das Teilen eines der Operanden durch 2m vor der Additionsoperation.
- Aufgabe der Erfindung ist es, eine verbesserte ALU anzugeben.
- Es ist weiterhin Aufgabe der Erfindung, eine ALU anzugeben, die mit hoher Effizienz arbeitet, wenn Mehrfachoperationen verarbeitet werden, die Wärter einschließen, welche kleiner als die Breite der ALU sind.
- Weiterhin ist es Aufgabe der Erfindung, eine ALU anzugeben, die für eine Berechnung mehrerer Multiplikationen angepaßt ist, welche einen binären Bruch einschließen.
- Die Erfindung gibt eine Vorrichtung mit den Merkmalen nach Anspruch 1 an.
- Diese und andere Aufgaben der Erfindung ergeben sich für den Fachmann aus der folgenden detailierten Beschreibung der Erfindung und der zugehörigen Zeichnung.
- Die Erfindung ist eine arithmetische Logikeinheit zum Betreiben auf den Inhalten eines X- Worts mit Bits Xi und eines Y-Worts mit Bits Yi zum Erzeugen eines Ergebnisworts mit Bits Zi , wobei i=0 bis N-1. Das X-Wort und das Y-Wort können in Unterwörter geteilt sein. 4 ist das niedrigstwertige Bit eines der Unterwörter. ZN-1 ist das höchstwertige Bit eines der Unterwörter. Die arithmetische Logikeinheit reagiert auf ein Maskenwort zum Partitionieren des X-, des Y- und des Ergebnisworts in mehrere Unterwörter, wobei jedem Unterwort des X- Worts ein Unterwort des Y-Worts und ein Unterwort des Ergebnisworts entspricht. Die Erfindung erzeugt die Summe jedes X-Unterworts dividiert durch 2m und des entsprechenden Y- Unterworts, um ein Ergebnis zu erzeugen, welches in dem entsprechenden Unterwort des Ergebnisworts gespeichert wird. m ist eine nichtnegative ganze Zahl.
- Eine Ausführungsform der Erfindung wird aus N-Einzelbitaddierern konstruiert, die in einer Rangfolgesequenz verbunden sind. Jede Einzelbit-Addiererstufe empfängt ein erstes Bitsignal von dem X-Wort und ein zweites Bitsignal von dem Y-Wort, wobei der i-te Einzelbitaddierer in der Sequenz mit dem Bit Yi in dem Y-Register verbunden ist. Jeder Einzelbitaddierer empfängt darüber hinaus ein Übertrageingangssignal. Jeder Einzelbitaddierer addiert das erste und das zweite Bitsignal und das Übertrageingangssignal zum Erzeugen eines Summensignals und eines Übertragausgangssignals, wobei das Summensignal mit Hilfe des Einzelbitaddierers erzeugt wird, welcher mit Yi verbunden ist, um das Bitsignal Zi zu liefern. Das Übertragsausgangssignal des Einzelbitaddierers, der mit Yi verbunden ist, wird auf den Übertrageingang in dem Einzelbitaddierer gegeben, der mit Yi+1 für i=0 bis N-1 verbunden ist. Die Logikeinheit umfaßt weiterhin N Multiplexer, wobei ein Multiplexer mit jeder Addiererstufe verbunden ist und auf ein Signal reagiert, welches m spezifiziert. Der mit der p-ten Addiererstufe verbundene Multiplexer verbindet diese Stufe mit Xp+m, wenn sich Xp, und Xp+m in demselben Unterwort des Y-Worts befinden. Die Verbindungen für die verbleibenden Bits werden dadurch bestimmt, ob jedes der X-Unterwörter eine vorzeichenbehaftete oder eine nicht vorzeichenbehaftete ganze Zahl repräsentiert oder nicht. Wenn die X-Unterwörter vorzeichenbehaftete ganze Zahlen repräsenterien, werden die verbleibenden Bits mit dem höchstwertigen Bit des betreffenden X-Unterworts verbunden. Wenn dieses nicht der Fall ist, werden die verbleibenden Bits auf "0" verbunden.
- Die Erfindung wird im folgenden anhand von Ausführungsbeispielen unter Bezugnahme auf eine Zeichnung näher erläutert. Hierbei zeigen:
- Fig. 1 die Art, in welcher eine erfindungsgemäße ALU in Beziehung zu den Inhalten von zwei Registern arbeitet;
- Fig. 2 ein Blockdiagramm eines Teils einer erfindungsgemäßen ALU, welche in zwei Unteroperanden aufgeteilt werden kann und auch eine Rechtsverschiebung um einen Platz in dem X-Operanden vor der Addition ausführen kann; und
- Fig. 3 ein Blockdiagramm einer Multiplexeranordnung, die ungerades Runden des niedrigstwertigen Bits eines Ergebnisses implementiert.
- Die Erfindung basiert auf zwei Beobachtungen. Erstens ist eine Multiplikation mit einer Konstante, die aus einem binären Bruch besteht, äquivalent zu mehreren Additionen, welche eine Rechtsverschiebung einschließen, die für einen der Summanden ausgeführt wird. Es sei das Produkt eines binären Bruchs f und einer Zahl r betrachtet. Wenn die Bits von f bi (i=0 bis B- 1) sind, kann das Produkt p wie folgt geschrieben werden:
- p = bi*r
- Dieses erlaubt eine Zerlegung des Produkts in mehrere Summierungen, die in der folgenden Form geschrieben werden können:
- x + x/2k (2)
- wobei k eine positive ganze Zahl und x eine ganze Zahl sind, die entweder r oder das Ergebnis einer früheren Operation in einer Zerlegung dieser Art ist. Beispielsweise kann das r-fache der binären Zahl 1.101 wie folgt geschrieben werden:
- P = r + r/2 + r/8
- Diese Operation kann in zwei Operationen ausgeführt werden, beispielsweise
- x = r + r/2
- und
- p = x + r/8
- Wenn der binäre Bruch eine Konstante ist, kann der Compiler die geeigneten Instruktionen zum Zerlegen der Multiplikation in die benötigten Operationen erzeugen. Jede dieser Operationen kann in einem Ausdruck als eine Summe von zwei Operanden geschrieben werden, wobei einer der Operanden der Inhalt eines um m Bits nach rechts verschobenen Registers ist. Folglich wäre es vorteilhaft, eine ALU zu haben, die eine Instruktion der Form "Verschieben nach rechts um m und Addieren" implementiert.
- Die zweite Beobachtung bezieht sich auf eine einfache Hardware-Modifikation, die es einem ansonsten herkömmlichen Addierer erlaubt, mehrere kleine Operanden in einem einzelnen Maschinenzyklus zu addieren. Im Prinzip kann der Addierer in mehrere Teile unterteilt werden, wobei jeder Teil für Wörter mit einer Größe arbeitet, die kleiner als die ganze Breite des Addierers ist. Die Summe der Bits in jedem Teil muß kleiner oder gleich der Breite des Addierers sein. In jedem Maschinenzyklus können mehrere Additionsoperationen für diese kleineren Wörter ausgeführt werden. Darüber hinaus kann der Addierer als ein herkömmlicher Addierer genutzt werden.
- Die bevorzugte Ausführungsform der Erfindung liefert einen Addierer, der in nur einige der möglichen Wortkombinationen unterteilt werden kann, obwohl Ausführungsformen der Erfindung möglich sind, bei denen die Breite der ALU in Wörter beliebiger Größe unterteilt ist. Beispielsweise wird ein 32 Bit-Addierer vorzugsweise in Teile unterteilt, die das Addieren von Wörtern erlauben, die 1 oder 2 Bits lang sind. Um die folgende Diskussion zu vereinfachen, wird angenommen, daß die ALU in der Hälfte unterteilt ist. In diesem Fall können pro Maschinenzyklus zwei Halbwortzusätze oder ein Gesamtwortzusatz ausgeführt werden.
- Gemäß Fig. 1 akzeptiert eine erfindungsgemäße ALU 10 zwei N Bitoperanden 12 und 14. Diese Bits des ersten Operanden werden mit Xi für i=0 bis N-1 bezeichnet, die Bits des zweiten Operanden werden mit Yi bezeichnet. Die Operanden werden typischerweise in zwei der Register der CPU des Computers gespeichert. Wenn die ALU 10 mit voller Breite betrieben wird, erzeugt sie ein m-Bit-Ausgang 16 mit der 2er-Komplementsumme von X, die um m Bits nach rechts verschoben ist, und Y. Die Bits des Ausgangs der ALU 10 werden in der folgenden Diskussion mit Zi bezeichnet. Das Ergebnis der Addition wird typischerweise in eines der Register der CPU zurückgespeichert.
- In der folgenden Diskussion werden die Bits in den verschiedenen Wörtern von den niedrigstwertigen zu den höchstwertigen beziffert. Das heißt, X&sub0; ist das niedrigstwertige Bit des Operanden IX und XNI ist das höchstwertige Bit des X-Operanden. Dieselbe Konvention wird für die X- und die Z-Wörter benutzt.
- Die Erfindung ermöglicht es, daß jeder Operand in mehrere Unterwörter unterteilt wird. Zur Vereinfachung wird die Erfindung zuerst in Verbindung mit einer Einzeldivision jedes Operanden in Teiloperanden erklärt. In diesem Fall sind die ersten q Bits des X-Operanden, X&sub0; bis Xq-1, die Bits des ersten Teiloperanden 18 des X-Worts. Die verbleibenden Bits Xq bis XN-1 sind die Bits des zweiten Teiloperanden 17 des X-Worts. Der Y-Operand ist in ähnlicher Weise in Teilwörter 19 und 20 unterteilt. In dieser Betriebsart sind die Bits Z&sub0; bis Zq die Bits der Summe des Teiloperanden 18 verschoben um m Bits und des Teiloperanden 20, und die Bits Zq bis ZN-1 sind die Bits der Summe des Teiloperanden 17 verschoben um m Bits und des Teiloperanden 19.
- Aus praktischen Gründen ist m typischerweise auf eine ganze Zahl kleiner oder gleich vier begrenzt. Eine herkömmliche ALU umfaßt eine Vorrichtung zum Erzeugen des 2er-Komplements des Y-Operanden vor der Addition. Wie weiter unten im Detail erläutert wird, umfaßt die Erfindung einen neuen Schieber, der auf dem X-Operanden vor der Addition arbeitet. Um sicherzustellen, daß die Einführung dieses Schiebers nicht die Leistung der ALU verschlechtert, dürfen die der Verschiebeoperation inhärenten Verzögerungen nicht größer als die sein, die für den Y-Operanden beim Passieren der 2er-Komplement-Hardware auftreten. In der Praxis begrenzt dieses m auf die oben genannten Werte.
- Bei der bevorzugten Ausführungsform der Erfindung sind die Teiloperanden vorzeichenbehaftete ganze Zahlen. Im Fall eines Überlaufs oder eines Unterlaufs werden die Ergebnisse an maximale bzw. minimale Werte für vorzeichenbehaftete ganze Zahlen der in Rede stehenden Länge gebunden. Wenn beispielsweise N = 32 und eine Halbwortverschiebung (das heißt 16 Bit) und eine Addieroperation implementiert sind, würde das Ergebnis im Hexadezimalformat bei 7FFF bzw. 8000 festgelegt sein.
- Um die folgende Diskussion zu vereinfachen, wird die Erfindung zunächst unter Bezugnahme auf eine ALU erläutert, die eine Verschiebung nach rechts um einen Platz des X-Operanden und anschließend eine Addition der verschobenen Operanden zu den entsprechenden Y- Operanden ausführt. Um die Diskussion weiter zu vereinfachen, wird angenommen, daß die ALU aus mehreren Einzelbitaddierern konstruiert ist, welche Übertragausbreitung während der Addition nutzen. Fig. 2 ist ein Blockdiagramm eines Teils einer erfindungsgemäßen ALU 30, welche in zwei Unteroperanden unterteilt werden kann und auch eine Rechtsverschiebung um einen Platz der X-Operanden vor der Addition ausführen kann. Die Grenze zwischen den zwei Teiloperanden erscheint auf der Bitposition k der ALU 30. Dieses bedeutet, daß das Bit k das höchstwertige Bit einer Folge an Unteroperanden und daß das Bit k+1 das niedrigstwertige Bit der anderen Folge an Unteroperanden ist. Die Additionssektion der ALU 30 ist aus einer Anordnung von einem Bit-Addiererstufen in einer Art ähnlich zu der herkömmlicher Übertragausbreitungs-Addierer konstruiert. Beispielhafte Einzelbitaddierer sind in 31-35 gezeigt. Bei der Erfindung können die Stufen entkoppelt sein, um es der ALU zu erlauben, parallele Additionen in den Teilwörtern auszuführen. Jeder Einzelbitaddierer addiert zwei Bits, eines von dem X-Operanden und eines von dem Y-Operanden abgeleitet, und einen Übertragbit von der vorhergehenden Stufe in dem Addierer, die mit Ci-1 für die i-te Stufe bezeichnet ist, um ein Summenbit und ein neues Übertrag-Bit zu erzeugen. Die mit 33 und 32 gezeigten zwei Stufen sind Einzelbitaddierer, die zum Addieren der höchstwertigen Bits der Teiloperanden 80 und 20 bzw. der niedrigstwertigen Bits der Teiloperanden 17 und 19 genutzt werden. Der Einzelbitaddierer 33 addiert beispielsweise Bits Ck-1, Xk und Yk, um ein Summenbit Sk und ein Übertrag-Bit Ck zu erzeugen. In der folgenden Diskussion wird die Stufe des Addierers, welche auf Yp agiert, als die p-te Stufe des Addierers bezeichnet. Bei einem herkömmlichen Addierer breitet sich das Übertrag-Bit jeder Stufe zu der nächsten Stufe mit Hilfe einer Verbindung des Übertragbit-Eingangs jeder Stufe mit dem Übertragbit- Ausgang der vorhergehenden Stufe in der Anordnung von Einzelbitaddierern aus.
- Bei der Erfindung wird das Übertrag-Bit von der Stufe, die sich unmittelbar vor der Grenztrennung der zwei Teiloperanden befindet, mit einer Sperrschaltung 37 verbunden. Wenn die ALU 30 als ein herkömmlicher Addierer genutzt wird, der beim Betrieb die gesamten Inhalte der Register 12 und 14 als einzelne Wörter behandelt, verbindet die Sperrschaltung 37 den Übertragausgang des Einzelbitaddierers 33 mit dem Übertrageingang des Einzelbitaddierers 32. Wenn die ALU 30 genutzt wird, um zwei Additionen parallel mit der Teilwortgrenze zwischen den Bits k und k+1 in jedem Register auszuführen, zwingt die Sperrschaltung 37 das Übertragbit des Einzelbitaddierers 33 bei der Addition 0 zu sein. Dieses wird mittels eines Grenzsignals Mk gesteuert. Die Übertragausgänge aller Einzelbitaddierer werden in den verbleibenden Stufen der ALU 30 in herkömmlicher Weise verbunden. Folglich breiten sich Übertragbits in herkömmlicher Weise innerhalb jeder Sektion der ALU aus, die einen speziellen Teiloperanden bearbeitet. Die Summenbits für jede Addiererstufe werden mit entsprechenden Bits des Ausgangsanschlusses verbunden, welcher mit Zk bezeichnet ist.
- Bei der obigen Beschreibung der ALU 30 wurde angenommen, daß Additionen der Operanden stattfinden. Die Sperrschaltung 37 ersetzt das Übertragbit mit 0 während einer Addition, in welcher dei Addierer in zwei Unteraddierer mit einer Grenze bei der Sperrschaltung unterteilt ist. Wenn der Addierer auch eine 2er-Komplement-Substraktion nutzt, in welcher der Addierer ähnlich unterteilt ist, muß das Übertragbit nicht auf 0 sondern auf 1 gezwungen werden. Die Sperrschaltung 37 nach Fig. 2 implementiert sowohl Additionen als auch Subtraktionen, in dem ein Eingang F mit einem Wert von "0" oder "1" vorgesehen ist. Wenn eine Grenze an der Sperrschaltung 37 aktiv ist, ist der Wert von F der Wert, welcher der nächsten Stufe präsentiert wird. Wenn die Grenze inaktiv ist, überträgt die Sperrschaltung 37 lediglich das Übertragbit Ck an die nächste Stufe.
- Bei herkömmlichen Addierern wird von dem höchstwertigen Bit der Operanden und dem niedrigstwertigen Bit des Ergebnisses ein vorzeichenbehaftetes Überlaufsignal erzeugt. Ein Überlauf ohne Vorzeichen wird von dem Übertragbit des Addierers des höchstwertigen Bits berechnet, der auf dem höchstwertigen Bit der Operanden arbeitet. Wenn dieses Merkmal für jeden Teiloperanden implementiert wird, wird das Überlaufsignal der Addition jedes Teiloperanden an eine geeignete Überlaufschaltung gekoppelt. Bei einer Ausführungsform der Erfindung werden die Überlaufsignale zusammen auf ODER-Bausteine gegeben, und das Ergebnissignal wird zum Erfassen eines Überlaufs genutzt. Dieses Bit kann zum Triggern einer Fangvorrichtung genutzt werden, oder es kann über ODER-Bausteine mit den Inhalten eines einzelnen Bitregisters zusammengebracht werden. Im letzten Fall kann das Programm die Inhalte des Registers prüfen, um festzustellen, ob irgendeine Operation seit dem das Register letztmalig geprüft wurde zu einem Überlauf geführt hat.
- Wie oben beschrieben, ist die ALU 30 konstruiert, um die Inhalte des X-Registers vor der Addition um eine Position nach Rechts zu schieben. Dieses wird als Reaktion auf ein Signal m durch einen 2-zu-1-Multiplexers ausgeführt, der die Bits der X-Operanden auf die geeigneten Einzelbitaddiererstufen gibt. Beispielhafte Multiplexer sind in 41-45 in Fig. 2 gezeigt. Wenn ein Multiplexersteuersignal wahr ist, ist X, mit dem Einzelbitaddierer für die Stufe (p- 1) verbunden. Wenn der Steuereingang falsch ist, ist das Bit mit Stufe p verbunden.
- Wenn die ALU vorzeichenbehaftete ganze Zahlen bearbeitet, muß das höchstwertige Bit jedes Operanden auf seiner Position nachgebildet als auch auf seine neue Position kopiert werden, weil diese Bit das Vorzeichenbit ist. Folglich müssen die Multiplexer an der Grenze der zwei Unterwörter von Multiplexern verschieden sein, die mit den X-Bits verbunden sind, welche nur im inneren eines Teiloperanten sein können. Multiplexer 43 ist ein solcher Multiplexer. Der Multiplexer 43 verbindet Xk mit Stufe k, wenn m wahr ist und das X-Register ist unterteilt, so daß die Stufe Xk das höchstwertige Bit eines Operanden ist. Wenn das X-Register nicht derart unterteilt ist, d. h. Mk ist falsch, verhält sich der Multiplexer 43 in der selben Art und Weise wie die anderen Multiplexer.
- Bei der bevorzugten Ausführungsform der Erfindung wird der Ort der Stufe an der Grenze der Operanden mit Hilfe einer Maske spezifiziert, deren Bits mit Mp bezeichnet werden. Die Bits Mp spezifizieren den Ort des höchstwertigen Bits jedes Teiloperanden. Diese Maske wird in der folgenden Diskussion als die Grenzmaske bezeichnet. Die Bits der Maske können in einem Register der ALU gespeichert sein oder direkt aus der Instruktion erzeugt werden, die von der Instruktions-Dekodierschaltung des Prozessors ausgeführt werden, in welchem der Addierer angeordnet ist.
- Für den Fachmann ergibt sich, daß die Lehre der Erfindung auf eine Vielzahl Addiererkonfigurationen angewendet werden kann, obwohl die oben genannten Ausführungsformen der Erfindung in Verbindung mit einem Addierer beschreiben sind, der aus Einzelbitaddierern konstruiert ist, welche Übertragausbreitung nutzen. Jede Addiererkonfiguration, in welcher der Addierer in Unteraddierer so unterteilt werden kann, daß das höchstwertige Bit jedes möglichen Unteroperanden an einer Grenze eines Unteraddierers angeordnet ist, kann zum Ausführen der Erfindung konfiguriert werden. Der Addierer wird mittels der Einführung einer Schaltung verändert, die den Übertrag von dem Unteraddierer unterbricht, wenn der Addierer an dem in Rede stehenden Unteraddierer unterteilt ist.
- Bei der bevorzugten Ausführungsform der Erfindung wird eine Vorher-Übertragarchitektur genutzt, weil sie kleinere Verzögerungen aufweist. In einem Vorher-Übertragaddierer ("carry look ahead adder") erzeugt die Übertragerzeugungsschaltung ein Ausbreitungs- und ein Erzeugungssignal entsprechend jedem Bit des Addierers. Diese Signale können in analoger Weise zu den oben beschriebenen Übertragbits genutzt werden, um ein Aufteilen des Addierers in parallele Unterwortaddierer zu ermöglichen. Es sei der Fall betrachtet, daß der Addierer so unterteilt ist, daß die Stufe k auf dem höchstwertigen Bit des Unterwortergebnisses arbeitet. Eine Sperrschaltung, beispielsweise die Sperrschaltung 37 nach Fig. 2 kann in die Übertragerzeugungslogik so eingefügt werden, daß das Ausbreitungsbit und das Erzeugungsbit in Abhängigkeit von der ausgeführten Operation, d. h. Addition oder Subtraktion, auf die entsprechenden Werte gezwungen werden. Wenn der Addierer auf Wörtern genutzt wird, die nicht bei Stufe k unterbrochen sind, verändert die Sperrschaltung die Werte des Ausbreitungs- und des Erzeugungsbits nicht entsprechend Stufe k.
- Die Ausführungsform der Erfindung nach Fig. 2 ist konstruiert, um die X-Operanden nur um einen Platz nach rechts zu verschieben. Es ergibt sich aus der Diskussion jedoch, daß die selben Prinzipien genutzt werden können, um eine ALU zu schaffen, die die X-Operanden um eine beliebige Größe m ≤ u verschieben kann. In diesem Fall würden die als 41-45 gezeigten 2-zu-1-Multiplexer durch (u+1)-zu-1-Multiplexer ersetzt werden. Das Signal m muß in der Lage sein zu spezifizieren, welche der (u+1) möglichen Verschiebepositionen spezifiziert ist. Wenn die Stufe p des Addierers nur auf einem inneren Bit eines Operanden arbeiten kann, verbindet der hieran gekoppelte Multiplexer-Stufe p mit Xp+m. Wenn Stufe p jedoch innerhalb von m Stufen einer potentiellen Unterwortgrenze ist, muß der mit der Stufe p in Verbindung stehende Multiplexer die Maskenbits als auch das Verschiebesignal m untersuchen. Es sei der Fall betrachtet, daß die Maskenbits anzeigen, daß in der Stufe k eine Grenze aktiv ist, d. h. Xk ist das höchstwertige Bit eines Unterworts. Dann muß der der Stufe p zugeordnete Multiplexer Xk zu dem Addierer der Stufe p kopieren wenn (k-m) ≤ p ≤ k gilt. Es wird darauf hingewiesen, daß Xk mit einem der Eingänge jedes der in Rede stehenden Multiplexer verbunden wird.
- Jede Eingangsverbindung, die eine mögliche Operandengrenze kreuzt, muß ein Gatter umfassen, beispielsweise das Gatter 49 nach Fig. 2. Dieses Gatter blockiert die Ausbreitung des Datenbits über die Grenze, wenn die Grenze aktiv ist. Diese bedeutet, daß in dem Fall, daß die Addiererstufe p mit der Eingangsleitung Xq verbunden ist, diese Verbindung ein Gatter umfassen muß, welches die Verbindung unterbricht, wenn Mk für irgendein k von q bis p-1 wahr ist.
- Wenn X immer eine ganze Zahl ohne Vorzeichen ist, sind die Sperrgatter notwendig, wie Gatter 49. Der Multiplexer 43 kann jedoch aus einem Multiplexer konstruiert sein, der der gleiche wie die anderen Multiplexer ist (d. h. 41, 42, 44 und 45). Wenn X eine vorzeichenbehaftete Zahl ist, dann müssen u-Bits von M in den Multiplexer 43 eingegeben werden, so daß dieser von den anderen Multiplexern verschieden wird. In diesem Fall kann auf die Sperrgatter, beispielsweise Gatter 49 verzichtet werden, weil ihre Betriebsart die Gatter überflüssig macht.
- Die Verschiebeoperation nach rechts kann zu einem Aufrundungsfehler führen. Der Aufrundungsfehler tritt auf, wenn eine 1 aus dem X-Unterwort geschoben wird. Die oben beschriebenen Ausführungsformen der Erfindung runden das Ergebnis mittels Abbruch. Während ein Abbruch beim Runden des Ergebnisses einer Division durch eine ganze Zahl genutzt werden kann, kann es ungewünschte Probleme verursachen, die mit Hilfe anderer Formen des Rundens vermieden werden können. Beispielsweise führt Abbruch zu Fehlern in dem Fall, bei dem die Division auf eine Sammlung von Wörtern angewendet wird, und der Mittelwert der Sammlung ist von Bedeutung. Abbruchrunden führt zu einer Verschiebung des Mittelwerts, weil alle Vierte auf die nächstkleinere ganze Zahl gerundet werden.
- Bei der bevorzugten Ausführungsform der Erfindung wird eine Logik für ungerades Runden genutzt, um diese Art systematischer Abweichung zu verhindern. In Systemen zum ungeraden Runden wird das Ergebnis auf die nächste ungerade Zahl gerundet, wenn durch die Rechtsverschiebung ein Aufrundungsfehler erzeugt wird. Wenn die Antwort vor dem Runden exakt ist, wird keine Änderung vorgenommen. Ein Aufrundungsfehler tritt immer dann auf, wenn eine 1 aus dem Ergebnis verschoben wird. Dieses tritt auf, wenn m niedrigstwertige Bits vor dem Verschieben wenigstens eine "1" aufweisen. m ist hier die Anzahl der verschobenen Bits. In einem System zum ungeraden Runden wird das niedrigstwertige Bit des Erlebnisses auf eine "1" gesetzt, wenn eine "1" aus dem Wort geschoben wurde. Wenn alle herausgeschobenen Bits "0" sind, dann war das Ergebnis auch nach dem Verschieben exakt und das niedrigstwertige Bit des Ergebnisses wird nicht geändert.
- Ein ungerades Rundungssystem kann in die Erfindung dadurch integriert werden, daß der mit der Stufe p verbundene Multiplexer durch eine Multiplexeranordnung gemäß 200 in Fig. 3 ersetzt wird, wenn die Stufe p entweder auf einem internen Bit eines Unterworts oder dem niedrigstwertigen Bit eines Unterworts arbeitet. Die Anordnung umfaßt einen (2u+1)-zu-1- Multiplexer 202, der von einem Rundungssignal, einem Verschiebesignal m und dem Maskenbits M gesteuert wird. Die Eingänge des Multiplexers 202 können in zwei Gruppen unterteilt werden. Eine Gruppe 221 wird genutzt, wenn die Stufe p auf dem niedrigstwertigen Unterwort arbeitet, und das Rundungssignal R zeigt an, daß Runden ausgeführt wird in diesem Fall ist die Stufe p mit einem Signal verbunden, welches durch Auswählen des m-ten Eingangs der Gruppe 221 den Wert (Xp ODER Xp+1 ODER ... Hp+m) hat. Der m-te Eingang der Gruppe 221 ist mit einer ODER-Schaltung verbunden, welche Eingänge Xp bis Xp+m aufweist. Beispielhafte ODER-Schaltungen sind als 205-207 gezeigt. Wenn kein Runden ausgeführt wird, dann ist die Stufe p mit dem m-ten Eingang einer Gruppe 220 verbunden. In dieser Betriebsart verhält sich die Multiplexer-Anordnung in der gleichen Weise wie die anderen an die Stufen gekoppelten (u+1)-zu-1-Multiplexer, die nur auf internen Bits von Unterwörtern arbeiten können.
- Es kann gezeigt werden, daß der mittlere Fehler, welcher mit dieser Form des Rundens erhalten wird, Null ist, wenn die niedrigstwertigen (m+1)-Bits vorn X vor dem Verschieben einheitlich verteilt werden. Es wird darauf hingewiesen, daß ein System zum geraden Runden beim Runden ebenfalls systematische Abweichungen verhindert. In einem System zum geraden Runden wird das Ergebnis auf die nächste gerade ganze Zahl gerundet, wenn ein Aufrundungsfehler auftritt, und das Ergebnis vor dem Runden ist ungerade. Die zum Implementieren eines geraden Rundungsschemas benötigte Hardware ist jedoch wesentlich komplexer als die oben beschriebene. Folglich wird ein System zum ungeraden Runden bevorzugt.
- Es ergibt sich für den Fachmann, daß Ausführungsformen, in denen die Grenzen und/oder die Anzahl an Unterwörtern von den oben beschriebenen abweichen, mittels der Nutzung der obigen Lehre implementiert werden können, obwohl die oben beschriebenen Ausführungsformen der Erfindung entweder für Vollwortoperationen oder parallele Operationen von zwei Halbwörtern angegeben wurden. Die einzige Begrenzung der Anzahl von Unteroperanden besteht darin, daß die Summe der Bits in den Unteroperanden nicht größer als die Breite der ALU sein darf, die in der Vollbreite-Betriebsart arbeitet. In ähnlicher Weise können die Unteroperanden-Grenzen im Prinzip zwischen beliebigen zwei Bits in der ALU mit Hilfe des Setzens des entsprechenden Maskenbits gesetzt werden.
- Es ergibt sich für den Fachmann, daß die Erfindung auch die Differenz jedes Unterworts in dem X-Wort dividiert durch 2m und des entsprechenden Unterworts in dem X-Wort liefern kann, obwohl die oben beschriebenen Ausführungsformen der Erfindung in Verbindung mit dem Berechnen der Summe jedes Unterworts in dem X-Unterwort dividiert durch 2 m und des entsprechenden Unterworts in dem Y-Wort beschreiben wurden. Wie oben beschrieben, liefern die meisten ALUs Schaltungstechnik zum Ersetzen des Y-Eingangs durch das 2er- Komplement hiervon. Folglich können die in Frage stehenden Differenzen mittels dieser herkömmlichen Schaltungstechnik auf den Y-Operanden berechnet werden.
- Es ergibt sich für den Fachmann, daß die Erfindung auch Vorteile liefert, wenn sie für nicht unterteilte Datenwörter ausgeführt wird, obwohl die Erfindung in Verbindung mit einer ALU beschrieben wurde, die unterteilbar ist. In diesem Fall ermöglicht die Erfindung das Ausführen einer Division und einer Addition in einem einzelnen Maschinenzyklus als Reaktion auf eine Einzelinstruktion.
- Es ergibt sich für den Fachmann, daß die Operationen der Erfindung mit Hilfe elektrischer Signale getriggert werden können, die nicht mittels Instruktionen eines gespeicherten Computerprogramms erzeugt werden, obwohl die oben genannten Ausführungsformen der Erfindung in Verbindung mit Instruktionen als Mittel zum Triggern der von der Erfindung ausgeführten verschiedenen Operationen beschrieben wurde. Folglich umfaßt der Ausdruck "Instruktion", wenn er in den Ansprüchen genutzt wird, auch Operationen, die von anderen Formen der Signalgebung getriggert werden. Weiterhin ergibt sich für den Fachmann, daß die Erfindung in Schaltungstechnik genutzt werden kann, die nicht Teil eines Computers ist.
- Verschiedene Modifikationen der Erfindung ergeben sich für den Fachmann aus der vorhergehenden Beschreibung und der zugehörigen Zeichnung. Dementsprechend wird die Erfindung allein durch den Bereich der folgenden Ansprüche definiert.
Claims (6)
1. Vorrichtung zum Verarbeiten der Inhalte eines X-Worts mit Bits Xi und eines Y-Worts
mit Bits Yi zum Erzeugen eines Ergebnisworts mit Bits Zi, wobei I = 0 bis Id - 1, Z&sub0;
das niedrigstwertige Bit und ZN-1 das höchstwertige Bit sind, die Vorrichtung
aufweisend:
Mittel (10; 30) zum getrennten Partitionieren des X-, , des Y- und des Ergebnisworts in
mehrere Unterwörter (17, 18, 19, 20, 21, 22), wobei jedem Unterwort des X-Worts
(12) ein Unterwort des Y-Worts und ein Unterwort des Ergebnisworts (14, 16)
entspricht; und
Mittel (10; 30), die mit einem ersten Befehl ansprechbar sind, zum Erzeugen der
Summe jedes X-Unterworts (17, 18) dividiert durch 2m und des entsprechenden Y-
Unterworts (19, 20), wobei das Ergebnis hiervon das entsprechende Unterwort (21,
22) des Ergebnisworts (16) bestimmt und wobei m eine von 0 verschiedene ganze Zahl
ist,
wobei die Mittel zum Erzeugen der Summe 0-te bis [N-1]-te Einzelbitaddierer (31-35)
und entsprechende 0-te bis [N-1]-te [u+1] - bis -1-Multiplexer (41-45) umfassen,
wobei jeder Einzelbitaddierer das von dem entsprechenden Multiplexer gelieferte Bit und
das entsprechende Bit des Y-Worts (14) addiert, wobei u ≥ m,
wobei Eingänge des p-ten Multiplexers mit Bits Xp bis Xp+u des X-Worts (12)
verbunden sind und der p-te Multiplexer Bit Xp+m ausgibt, und
wobei die Mittel zum gezielten Aufteilen eine Sperrschaltung (37) zum gezielten
Verhindern des Ausbreitens eines in einem Addierer von einem der Unterwörter erzeugten
Übertragbits zu einem Addierer eines anderen der Unterwörter und zum gezielten
Sperren der Ausbreitung von Bits Xi eines der Unterwörter zu den Multiplexern
umfassen, die den Addierern eines anderen der Unterwörter entsprechen.
2. Vorrichtung nach Anspruch 1, gekennzeichnet durch Mittel (30), die mit Hilfe eines
zweiten Befehls ansprechbar sind, zum Erzeugen der Differenz jedes Unterworts in
dem X-Wort dividiert durch 2m und des entsprechenden Unterworts in dem Y-Wort,
wobei das Ergebnis hiervon das entsprechende Unterwort des Ergebnisworts (21, 22)
bestimmt.
3. Vorrichtung nach Anspruch 1 oder 2, gekennzeichnet durch Mittel (202) zum Runden
des Ergebnisses der Division jedes Unterworts des X-Worts auf die nächst höhere
ungerade ganze Zahl, wenn die Division durch 2m zu einem Abrundungsfehler führt.
4. Vorrichtung nach Anspruch 1, 2 oder 3, die Einzelbitaddierer (31-35) aufweisend:
mehrere Y-Eingabemittel, wobei jedes Y-Eingabemittel ein von dem Y-Wort
abgeleitetes Bit empfängt, und wobei die Y-Eingangsmittel das von Yp abgeleitete Bit
empfangen, welches das p-te Y-Eingangsmittel ist, wobei. p das Produkt eines Binäranteils
und einer Anzahl ist;
mehrere X-Eingabemittel, wobei jedes X-Eingabemittel ein von dem X-Wort
abgeleitetes Bit empfängt, eines der X-Eingabemittel existiert, das jedem der Y-
Eingabemittel entspricht, und das dem p-ten Y-Eingabemittel entsprechende X-
Eingabemittel das p-te X-Eingabemittel ist; und
wobei mehrere der Einzelbitaddierer-Addierstufen (31-35) in Reihe verbunden sind,
jede Addierstufe Mittel zum Addieren eines oder mehrerer Bits; die von dem X-
Eingabemittel empfangen werden, und der von den Y-Eingabemittel empfangenen
entsprechenden Bits sowie Mittel zum Ausbreiten eines Übertragbits von der
Addierstufe zu der nächsten Addierstufe in der Reihenverbindung umfaßt, wobei die Yp
verarbeitende Addierstufe die p-te der Addierstufen ist und wobei die Aufteilmittel Mittel
zum Zwingen (37) des Übertragbits auf einen Wert umfassen, der durch den Betrieb
bestimmt wird, welcher ausgeführt wird, wenn die Addierstufen mit Bits
verschiedener Unterwörter des X-Worts arbeiten.
5. Vorrichtung nach Anspruch 4, gekennzeichnet durch Mittel (200) zum Erzeugen eines
Signals mit dem Wert (Xp OR Xp+1 OR ... Xp+m) und zum Verbinden des Signals mit
der p-ten Addierstufe, wenn Xp das niedrigstwertige Bit eines der Unterwörter ist.
6. Vorrichtung nach Anspruch 4 oder 5, wobei die Aufteilmittel weiterhin Mittel (37)
zum Erzeugen eines Signals umfassen, das anzeigt, daß eines der Übertragbits eine "1"
vor dem Übertragbit war, welches auf den vorbestimmten Wert gezwungen wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/158,646 US5390135A (en) | 1993-11-29 | 1993-11-29 | Parallel shift and add circuit and method |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69430838D1 DE69430838D1 (de) | 2002-07-25 |
DE69430838T2 true DE69430838T2 (de) | 2002-12-05 |
Family
ID=22569068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69430838T Expired - Fee Related DE69430838T2 (de) | 1993-11-29 | 1994-08-02 | Schaltung und Verfahren zur parallelen Verschiebung und Addition |
Country Status (4)
Country | Link |
---|---|
US (1) | US5390135A (de) |
EP (1) | EP0655677B1 (de) |
JP (1) | JP3573808B2 (de) |
DE (1) | DE69430838T2 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102023208612A1 (de) * | 2023-09-06 | 2025-03-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum fehlertoleranten Betrieb einer Verarbeitungseinheit und einer Ver-arbeitungsanordnung, Schaltungsanordnung und Recheneinheit |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016538A (en) * | 1993-11-30 | 2000-01-18 | Texas Instruments Incorporated | Method, apparatus and system forming the sum of data in plural equal sections of a single data word |
US6116768A (en) * | 1993-11-30 | 2000-09-12 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator |
JP3428741B2 (ja) * | 1994-02-14 | 2003-07-22 | 松下電器産業株式会社 | 演算装置とアドレス発生装置及びプログラム制御装置 |
US6275834B1 (en) | 1994-12-01 | 2001-08-14 | Intel Corporation | Apparatus for performing packed shift operations |
US6738793B2 (en) * | 1994-12-01 | 2004-05-18 | Intel Corporation | Processor capable of executing packed shift operations |
AU4464596A (en) | 1994-12-02 | 1996-06-19 | Intel Corporation | Microprocessor with packing operation of composite operands |
US6381690B1 (en) * | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
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 |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
CN1153129C (zh) * | 1995-09-01 | 2004-06-09 | 菲利浦电子北美公司 | 用于处理器定制操作的设备 |
US5815421A (en) * | 1995-12-18 | 1998-09-29 | Intel Corporation | Method for transposing a two-dimensional array |
US5907842A (en) * | 1995-12-20 | 1999-05-25 | Intel Corporation | Method of sorting numbers to obtain maxima/minima values with ordering |
JP3356613B2 (ja) * | 1996-02-14 | 2002-12-16 | 日本電気株式会社 | 加算方法および加算器 |
US6092094A (en) * | 1996-04-17 | 2000-07-18 | Advanced Micro Devices, Inc. | Execute unit configured to selectably interpret an operand as multiple operands or as a single operand |
US5841683A (en) * | 1996-09-20 | 1998-11-24 | International Business Machines Corporation | Least significant bit and guard bit extractor |
GB2317466B (en) * | 1996-09-23 | 2000-11-08 | Advanced Risc Mach Ltd | Data processing condition code flags |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6418529B1 (en) | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6211892B1 (en) * | 1998-03-31 | 2001-04-03 | Intel Corporation | System and method for performing an intra-add operation |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
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 |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6539061B1 (en) * | 1998-09-16 | 2003-03-25 | Texas Instruments Incorporated | Efficient method for decompressing difference coded signals |
TW514822B (en) * | 1999-05-06 | 2002-12-21 | Ind Tech Res Inst | Low power consumption mathematic apparatus and method |
US6449629B1 (en) * | 1999-05-12 | 2002-09-10 | Agere Systems Guardian Corp. | Three input split-adder |
JP2002063025A (ja) * | 2000-08-18 | 2002-02-28 | Fujitsu Ltd | 可変長データ処理用プロセッサ |
US7039906B1 (en) | 2000-09-29 | 2006-05-02 | International Business Machines Corporation | Compiler for enabling multiple signed independent data elements per register |
US6834337B1 (en) | 2000-09-29 | 2004-12-21 | International Business Machines Corporation | System and method for enabling multiple signed independent data elements per register |
GB0024312D0 (en) * | 2000-10-04 | 2000-11-15 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
US6748411B1 (en) * | 2000-11-20 | 2004-06-08 | Agere Systems Inc. | Hierarchical carry-select multiple-input split adder |
US6959316B2 (en) * | 2001-02-01 | 2005-10-25 | Nokia Mobile Phones Limited | Dynamically configurable processor |
US7155601B2 (en) * | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
US20030037085A1 (en) * | 2001-08-20 | 2003-02-20 | Sandbote Sam B. | Field processing unit |
US7739319B2 (en) * | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
US7624138B2 (en) | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US7631025B2 (en) * | 2001-10-29 | 2009-12-08 | Intel Corporation | Method and apparatus for rearranging data between multiple registers |
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7685212B2 (en) * | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
US7725521B2 (en) * | 2001-10-29 | 2010-05-25 | Intel Corporation | Method and apparatus for computing matrix transformations |
US7219118B2 (en) * | 2001-11-06 | 2007-05-15 | Broadcom Corporation | SIMD addition circuit |
US20030140076A1 (en) * | 2002-01-22 | 2003-07-24 | International Business Machines Corporation | Interleaved arithmetic logic units |
US7236207B2 (en) * | 2002-01-22 | 2007-06-26 | Broadcom Corporation | System and method of transmission and reception of progressive content with isolated fields for conversion to interlaced display |
US7047383B2 (en) * | 2002-07-11 | 2006-05-16 | Intel Corporation | Byte swap operation for a 64 bit operand |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
US7272804B2 (en) * | 2004-10-14 | 2007-09-18 | Broadcom Corporation | Generation of RTL to carry out parallel arithmetic operations |
US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
EP2181504A4 (de) * | 2008-08-15 | 2010-07-28 | Lsi Corp | Rom-listen-decodierung von nah-codewörtern |
US8825727B2 (en) * | 2012-03-15 | 2014-09-02 | International Business Machines Corporation | Software-hardware adder |
Family Cites Families (8)
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 |
JPS5943442A (ja) * | 1982-09-02 | 1984-03-10 | Matsushita Electric Ind Co Ltd | デイジタル乗算器 |
US4707800A (en) * | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
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 |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
EP0511971A4 (en) * | 1990-11-09 | 1993-08-11 | Adaptive Solutions, Inc. | Unbiased bit disposal apparatus and method |
-
1993
- 1993-11-29 US US08/158,646 patent/US5390135A/en not_active Expired - Lifetime
-
1994
- 1994-08-02 EP EP94112052A patent/EP0655677B1/de not_active Expired - Lifetime
- 1994-08-02 DE DE69430838T patent/DE69430838T2/de not_active Expired - Fee Related
- 1994-11-28 JP JP31760994A patent/JP3573808B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102023208612A1 (de) * | 2023-09-06 | 2025-03-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum fehlertoleranten Betrieb einer Verarbeitungseinheit und einer Ver-arbeitungsanordnung, Schaltungsanordnung und Recheneinheit |
Also Published As
Publication number | Publication date |
---|---|
JPH07200261A (ja) | 1995-08-04 |
DE69430838D1 (de) | 2002-07-25 |
US5390135A (en) | 1995-02-14 |
JP3573808B2 (ja) | 2004-10-06 |
EP0655677A1 (de) | 1995-05-31 |
EP0655677B1 (de) | 2002-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE69811877T2 (de) | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. | |
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE69435047T2 (de) | Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung | |
DE68924477T2 (de) | Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition. | |
DE69326314T2 (de) | Durchführung aritmetische Operationen auf Daten | |
DE2724125C2 (de) | ||
DE69430516T2 (de) | Arithmetisch-logische Einheit mit drei Eingängen, die die Summe einer ersten und einer zweiten booleschen Kombination berechnet | |
DE2900324C2 (de) | ||
DE69430510T2 (de) | Arithmetik-Logikschaltung mit drei Eingängen | |
DE69428466T2 (de) | Parallele Datenverarbeitung in einem Einzelprozessor | |
DE69416283T2 (de) | Überlaufsteuerung für arithmetische Operationen | |
EP0875031B1 (de) | Prozessor zur bildverarbeitung | |
DE69519449T2 (de) | Raumzeigersdatenpfad | |
DE69419697T2 (de) | Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits | |
DE60018078T2 (de) | Einstellung von bedingungswerten in einem rechner | |
DE60210494T2 (de) | Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung | |
DE69720922T2 (de) | Prozessor mit verbessertem Rundungsprozess | |
DE3486457T2 (de) | Integrierter Einchip-Prozessor für die Verarbeitung von digitalen Signalen entweder in einem schnellen oder einem langsamen Betrieb | |
DE69129723T2 (de) | Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor | |
DE3306084A1 (de) | Rechnerarchitektur zur gleitkomma -addition | |
DE4403917C2 (de) | Vorrichtung zum Berechnen einer Bit-Besetzungszählung | |
DE19983870B4 (de) | Berechnung impliziter Datentypbits für Simd-Operationen | |
DE3888230T2 (de) | Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung. | |
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |