[go: up one dir, main page]

DE69430838T2 - Schaltung und Verfahren zur parallelen Verschiebung und Addition - Google Patents

Schaltung und Verfahren zur parallelen Verschiebung und Addition

Info

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
Application number
DE69430838T
Other languages
English (en)
Other versions
DE69430838D1 (de
Inventor
Joel David Lamb
Ruby Bei-Loh Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69430838D1 publication Critical patent/DE69430838D1/de
Application granted granted Critical
Publication of DE69430838T2 publication Critical patent/DE69430838T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/508Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using carry look-ahead circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49963Rounding to nearest

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • 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.
DE69430838T 1993-11-29 1994-08-02 Schaltung und Verfahren zur parallelen Verschiebung und Addition Expired - Fee Related DE69430838T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3987291A (en) * 1975-05-01 1976-10-19 International Business Machines Corporation Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location
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

Cited By (1)

* Cited by examiner, † Cited by third party
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