DE69500410T2 - Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren - Google Patents

Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren

Info

Publication number
DE69500410T2
DE69500410T2 DE69500410T DE69500410T DE69500410T2 DE 69500410 T2 DE69500410 T2 DE 69500410T2 DE 69500410 T DE69500410 T DE 69500410T DE 69500410 T DE69500410 T DE 69500410T DE 69500410 T2 DE69500410 T2 DE 69500410T2
Authority
DE
Germany
Prior art keywords
register
arithmetic
accumulator
product
carry
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
DE69500410T
Other languages
English (en)
Other versions
DE69500410D1 (de
Inventor
Joel Curtet
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.)
STMicroelectronics SA
Original Assignee
SGS Thomson Microelectronics SA
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 SGS Thomson Microelectronics SA filed Critical SGS Thomson Microelectronics SA
Application granted granted Critical
Publication of DE69500410D1 publication Critical patent/DE69500410D1/de
Publication of DE69500410T2 publication Critical patent/DE69500410T2/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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

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

Description

  • Die Erfindung betrifft eine logische und arithmetische Rechenvorrichtung und ein Steuerverfahren, die sich vor allem auf sämtliche Arithmetik- oder Signalverarbeitungs- Prozessoren beziehen. Sie ermöglichen, Berechnungen mit doppelter Genauigkeit und insbesondere Multiplikationen und Multiplikation-Akkumulationen mit doppelter Genauigkeit durchzuführen.
  • Berechnungen mit doppelter oder mehrfacher Genauigkeit durchzuführen bedeutet, daß mit Operanden gearbeitet wird, die breiter sind als der Datenbus, beispielsweise, daß mit 32 Bit- Operanden auf einem 16 Bit-Datenbus gearbeitet wird.
  • Zur Durchführung von Multiplikation-Akkumulationen werden ein Multiplizierer und eine logische und arithmetische Einheit eingesetzt. Der Multiplizierer führt die Multiplikation zweier Operanden durch und schreibt das Produkt in ein Register. Die arithmetische und logische Einheit fügt das Produkt dem in einem Akkumulationsregister enthaltenen Ergebnis hinzu.
  • Zur Durchführung von Multiplikationen mit doppelter Genauigkeit müssen dann, wenn der Multiplizierer am Eingang Operanden mit der Breite des Datenbusses akzeptiert, Elementarprodukte gebildet und diese addiert werden, um das Multiplikationsergebnis zu erhalten. Als Elementarprodukt wird ein Produkt bezeichnet, welches mit Operanden mit der Breite des Datenbusses gebildet wird. Bei einem 16 Bit-Datenbus werden für eine Multiplikation mit doppelter Genauigkeit über 32 Bit-Operanden, deren jeder aus einem 16 Bit-Wort mit hohem Gewicht und einem 16 Bit-Wort mit geringem Gewicht besteht, vier Elementarprodukte gebildet: das Produkt der beiden Worte mit geringem Gewicht, das Produkt der beiden Worte mit hohem Gewicht, sowie die beiden "Kreuz"-Produkte des Worts mit geringem Gewicht eines Operanden mit dem Wort mit hohem Gewicht des anderen Operanden. Die Elementarprodukte werden durch 2 mal 16 Bit ausgedrückt.
  • Eines der auftretenden Probleme besteht darin, die verschiedenen Elementarprodukte zu addieren, um das Endergebnis mit 2 mal 32 Bit zu erhalten und - für eine Multiplikation- Akkumula-tion-Operation - diese Elementarprodukte zu einem Zwischenergebnis zu addieren. Um die 32 Bit-Elementarprodukte richtig zu addieren, müssen diese lagerichtig im 64 Bit-Ergebnisfenster ausgerichtet werden. Hierzu wird gegebenenfalls das Zwischenergebnis verschoben und diesem das Elementarprodukt hinzugefügt. Demzufolge muß das Zwischenergebnis vor der Verschiebung festgehalten werden, um keine Bit im Ergebnis zu verlieren; dies zwingt dazu, unterschiedliche Zeiger im Speicher zu erzeugen. Wenn beispielsweise ein 16 Bit-Multiplizierer und ein 32 Bit-Addierer vorhanden sind, und wenn zwei 32 Bit-Zahlen x1x0 und y1y0 (in welchen x1, y1 das Wort mit hohem Gewicht und x0, y0 das Wort mit geringem Gewicht repräsentieren) multipliziert werden sollen und dieses Produkt in einem 32 Bit-Akkumulator akkumuliert werden soll: A = Ahigh + Alow (in welchem Ahigh die 16 Bit mit hohem Gewicht und Alow die 16 Bit mit geringem Gewicht repräsentieren), werden die nachfolgenden verschiedenen Operationen realisiert:
  • x0*y0 + A nach A
  • Alow nach m0
  • x1*y0 + A*2&supmin;¹&sup6; nach A
  • x0*y0 + A nach A
  • Alow nach m1
  • x1*y1 + A*2&supmin;¹&sup6; nach A
  • Da alle diese Additionen über den Akkumulator erfolgen und weil dieser letztgenannte immer nach rechts verschoben wird, wandern der Übertrag und das Vorzeichenbit von selbst in den Akkumulator.
  • Um Multiplikation-Akkumulation-Schleifen auszuführen, müssen die Speicherzonen m0 und mi und der Akkumulator A manipuliert werden, woraufhin das Ergebnis nicht mehr stimmig ist und sich zum Teil in m0 (16 Bit mit geringem Gewicht), zum Teil im Akkumulator (32 Bit mit hohem Gewicht) und zum Teil in m1 (mittlere 16 Bit) befindet. Hierdurch wird die Anzahl der erforderlichen Anweisungszyklen erhöht, welches sich als sehr störend erweisen kann.
  • Aus der unter der Nr. 0 173 383 veröffentlichten europäischen Patentanmeldung ist eine Schiebeeinrichtung bekannt, die am Eingang der arithmetischen und logischen Einheit angeordnet ist, um auf herkömmliche Art und Weise Verschiebeoperationen mit einfacher Genauigkeit durchzuführen. Darüber hinaus beschreibt diese Druckschrift eine Multiplikation einfacher Genauigkeit, die allein auf den hohen Gewichten der Operanden beruht.
  • Der Erfindung liegt daher die Aufgabe zugrunde, die Operationen mit doppelter oder - allgemeiner - mehrfacher Genauigkeit zu erleichtern und dabei vor allem die Speichermanipulationen zu vermeiden. Darüber hinaus soll die Erfindung auch die Anzahl der für derartige Operationen erforderlichen Anweisungszyklen reduzieren.
  • Erfindungsgemäß wird eine Schiebeeinrichtung an einem Eingang der arithmetischen und logischen Einheit eingesetzt. Um ein Kreuzprodukt nach Art von x0*y1 zu addieren, wird dieses Produkt der arithmetischen und logischen Einheit an deren Eingang mit der Schiebeeinrichtung zugeführt. Somit wird das Produkt und nicht das Komplement in dem Akkumulator ausgerichtet.
  • Die erfindungsgemäße Rechenvorrichtung umfaßt ferner zumindest zwei Akkumulatoren am Ausgang der arithmetischen und logischen Einheit, einen Multiplizierer und eine Steuereinheit, und ermöglicht die Ausführung von Anweisungen zur zweifachen Akkumulation eines durch den Multiplizierer berechneten Produkts: eine erste Akkumulation in einem ersten Akkumulator mit einer arithmetischen Rechtsverschiebung des Produkts und eine zweite Akkumulation in einem zweiten Akkumulator mit einer Linksverschiebung des Produkts.
  • Indem jedoch zwei Akkumulationen in zwei verschiedenen Akkumulatoren realisiert werden, geht die selbständige Weitergabe des Übertrags bei den Multiplikation-Akkumulation- Opera-ionen verloren.
  • Erfindungsgemäß sind Mittel vorgesehen zum Festhalten eines vorangehenden Übertrags und zum Weitergeben des generierten Übertrags durch die erste Akkumulation an die zweite Akkumulation.
  • Die erfindungsgemäße Rechenvorrichtung ist in Patentanspruch 1 definiert.
  • Das erfindungsgemäße Verfahren zur Anwendung einer Rechenvorrichtung zum Realisieren von Multiplikationen mit doppelter Genauigkeit ist in Patentanspruch 6 definiert.
  • Weitere Ausführungsformen sind in den abhängigen Patentansprüchen angegeben.
  • Weitere Eigenschaften und Vorteile der Erfindung ergeben sich aus der nachfolgenden beispielhaften, die Erfindung nicht beschränkenden Beschreibung unter Bezugnahme auf die Zeichnungen, in welchen
  • Fig. 1 einen Aufbau einer arithmetischen und logischen Rechenvorrichtung gemäß der Erfindung darstellt; und
  • Fig. 2 ein Organigramm der Operationen für eine Multiplikation-Akkumulation mit doppelter Genauigkeit in der arithmetischen und logischen Rechenvorrichtung gemäß der Erfindung darstellt.
  • Die in Fig. 1 dargestellte arithmetische und logische Rechenvorrichtung umfaßt eine Steuereinheit UC zum Steuern der unterschiedlichen Schaltungen der Rechenvorrichtung, insbesondere einer arithmetischen und logischen Einheit ALU und eines Multiplizierers MULT. Die Steuereinheit empfängt eine Anweisung INS, beispielsweise, von einem Befehlsbus IBUS (herkömm-liche Architektur der Signalverarbeitungsprozessoren, auch als "HARVARD"-Architektur bezeichnet). Sie liefert verschiedene Steuersignale (m0,...m4) in Abhängigkeit von dieser Anweisung.
  • Die arithmetische und logische Einheit ALU ist in der Lage, herkömmliche arithmetische und logische Anweisungen (Addition, Subtraktion, Exclusiv-Oder, Vergleich etc.) auszuführen. Sie umfaßt zumindest zwei Dateneingange E1 und E2. An zumindest einem Eingang, beispielsweise am Eingang E1 (Fig. 1), ist eine Schiebeeinrichtung BD vorgesehen. Bevorzugt handelt es sich um eine Ring-Schiebeeinrichtung, die arithmetische und logische Verschiebungen erlaubt. Die arithmetische und logische Einheit liefert ein Ergebnis an einem Ausgang OUT, der bevorzugt mit zumindest zwei als Akkumulatoren bezeichneten Ausgangsregistern A0 und A1 verbunden ist. Diese Akkumulatoren können auch Daten an den Eingängen E1 und E2 der arithmetischen und logischen Einheit bereitstellen.
  • Ein erstes Register C1 und ein zweites Register C2 sind dazu vorgesehen, den durch die arithmetische und logische Einheit berechneten Übertrag zu speichern und bereitzustellen. Eine Schaltung 1, die durch die Steuereinheit UC gesteuert wird, ermöglicht, dasjenige der beiden Register C1 oder C2 auszuwählen, welches den Übertrag für die laufende Operation speichert und bereitstellt. Denn zu Beginn der Berechnung liefert das ausgewählte Register den von ihm gespeicherten Übertrag an die arithmetische und logische Einheit. Am Ende der Berechnung speichert es den neuen Übertrag. Das standardmäßig ausgewählte Register ist das Register C1.
  • Bevorzugt umfaßt die Schaltung 1 einen Multiplexer/Demultiplexer, der zum einen das Übertragsignal der arithmetischen und logischen Einheit und zum anderen, auf einem ersten Weg, den Ausgang des Registers C2 und, auf einem zweiten Weg, den Ausgang des Registers empfängt. Das Steuersignal m2 aktiviert entsprechend seinem Zustand entweder den ersten oder den zweiten Weg.
  • Vorwiegend - und wie in Fig. 1 dargestellt - bilden das erste Register C1 und das zweite Register C2 ein erstes Bit und ein zweites Bit eines Zustandsregisters RC, welches mit der arithmetischen und logischen Einheit verbunden ist. Dieses Zustandsregister RC speichert oder liefert verschiedene Informationen (Übertrag, Vorzeichen, Kapazitätsüberschreitung, etc.), die durch die arithmetische und logische Einheit geliefert oder für die laufende Operation verwendet werden. Sodann werden die Register C1 und C2 mit den Bit des Zustandsregisters verbunden. Es ist ersichtlich, daß das Bit C1 das standardmäßige Übertragsbit ist und daß das bei der Vorrichtung gemäß der Erfindung vorgesehene Bit C2 nur zur Steuerung der Steuereinheit verwendet wird.
  • Die Rechenvorrichtung umfaßt auch einen Multiplizierer MULT. Es handelt sich hierbei bevorzugt um einen parallelen Multiplizierer, um über eine optimale Rechengeschwindigkeit zu verfügen. Es können jedoch entsprechend der Anwendung andere Architekturen gewählt werden (serieller oder parallel-serieller Multiplizierer). Der Multiplizierer umfaßt zwei Eingänge OP1 und OP2 für den Empfang der Operanden. Diese werden im vorliegenden Beispiel durch zwei Quellregister L und R bereitgestellt. Der Multiplizierer umfaßt ferner einen Eingang CO, der mit dem Ausgang einer Schaltung 2 zum Zuführen des Übertrags der (nicht dargestellten) Rechenstufe des Bit mit dem geringsten Gewicht des Produkts verbunden ist. Bevorzugt umfaßt die Schaltung 2 ein Logiktor ET bzw. UND, welches an Eingängen das Bit C1 und ein durch die Steuereinheit geliefertes binäres Steuersignal m4 empfängt.
  • Der Multiplizierer schreibt das Ergebnis der Multiplikation in ein Produktregister P.
  • In dem Beispiel gemäß Fig. 1 werden die Daten als n Bit angeboten, und ist die arithmetische und logische Einheit eine Einheit für doppelte Genauigkeit mit - im Beispiel - einer Erweiterung auf e Bit. Ein Datenbus DBUS ist dargestellt, durch welchen die Daten in die verschiedenen Datenregister: das Produktregister P, die Quellregister L und R oder die Akkumulatoren A0 und A1, geschrieben oder aus diesen gelesen werden. Dieser Datenbus mit einer Breite von n Bit ist mit einem nicht dargestellten Speicherraum verbunden.
  • Der Multiplikator verarbeitet die n Bit-Eingangsoperanden und schreibt ein Ergebnis in das Register P mit 2 mal n Bit. Das Register P ist in zwei n Bit-Unterregister P1 und P0 unterteilt, die getrennt über den Datenbus zugänglich sind. Das Unterregister P1 nimmt die n Bit mit hohem Gewicht des Produkts auf, während das Unterregister P0 die n Bit mit geringem Gewicht des Produkts aufnimmt.
  • Jedes der Quellregister L und R ist in zwei getrennt über den Datenbus zugängliche Unterregister unterteilt, ein Unterregister (L1, R1) für die n Bit mit hohem Gewicht, und ein Unterregister (L0, R0) für die n Bit mit geringem Gewicht.
  • Jeder der Akkumulatoren A0 und A1 ist in drei getrennt über den Datenbus zugängliche Unterregister unterteilt: ein erstes (A0E, A1E) für die e Erweiterungsbit, ein zweites (A0H, A1H) für die n Bit mit hohem Gewicht, und ein drittes (A0L, A1L) für die n Bit mit geringem Gewicht.
  • Die Eingänge E1 und E2 der arithmetischen und logischen Einheit sind ebenfalls in drei lokalen Bussen entsprechende Untergruppen unterteilt:
  • Einen ersten lokalen Bus EXT1, EXT2, der den Inhalt der die Erweitererungsbit (A0E, A1E) enthaltenden Unterregister empfangen kann;
  • einen zweiten lokalen Bus HIGH1, HIGH2, der den Inhalt der für die n Bit mit hohem Gewicht bestimmten Unterregister empfangen kann; und
  • einen dritten lokalen Bus LOW1, LOW2, der den Inhalt der für die n Bit mit geringem Gewicht bestimmten Unterregister empfangen kann.
  • In Fig. 1 sind nicht alle zwischen den lokalen Bussen der Eingänge E1 und E2 und den Unterregistern möglichen Verbindungen dargestellt, zum einen, um die Figur nicht zu überladen, zum anderen, weil sich diese Verbindungen von Architektur zu Architektur ändern. Andererseits ist, ebenfalls aus Gründen der Vereinfachung, ein einziger Datenbus DBUS dargestellt. Bestimmte Architekturen verwenden aber beispielsweise zwei Datenbusse, die jeweils mit einem anderen Speicherraum verbunden sind.
  • In Fig. 1 wurden nur diejenigen Verbindungen dargestellt, die zu den Operationen der Multiplikation oder der Multiplikation-Akkumulation gemäß einem Ausführungsbeispiel der Erfindung beitragen.
  • Für derartige Operationen wird der Inhalt des Registerprodukts P an den die Schiebeeinrichtung aufweisenden Eingang E1 der arithmetischen und logischen Einheit gelegt (P1 für die n Bit mit hohem Gewicht und P0 für die n Bit mit geringem Gewicht), und der eine (A0) oder der andere (A1) Akkumulator wird an den Eingang E2 der arithmetischen und logischen Einheit (AiE für die e Erweiterungsbit, AiH für die n Bit mit hohem Gewicht und AiL für die n Bit mit geringem Gewicht, mit i = 0 oder 1) gelegt.
  • Das Ausgang OUT der arithmetischen und logischen Einheit wird in denselben Akkumulator geschrieben wie der, der an dem Eingang E2 angelegt ist.
  • Auf eine Anweisung zur Akkumulation-Multiplikation gemäß der Erfindung hin legt die Steuereinheit den Inhalt des Produktregisters auf einen Eingang der arithmetischen und logischen Einheit, sendet ein Signal zur Berechnung der Akkumulation (m1) an die arithmetische und logische Einheit, und sendet ein Rechensignal zur Berechnung eines neuen Produkts (m3) an den Multiplizierer.
  • Erfindungsgemäß befiehlt auf den Empfang einer Anweisung INS zur zweifachen Akkumulation in dem Produktregister hin die Steuereinheit UC das Anlegen des Inhalts des Registers P an den Eingang E1 der arithmetischen und logischen Einheit mit der Schiebeeinrichtung und das Anlegen des Inhalts des ersten Akkumulators, beispielsweise A0, an den Eingang E2, und aktiviert ein Steuersignal (m2) für die Schaltung 1 zum Schutz des Übertragbits C1, damit der Übertrag in dem Bit C2 gespeichert oder in dieses eingelesen wird. Sodann initialisiert sie (Steuersignal m0) der Schiebeeinrichtung BD mit einer Verschiebung um n Bit nach links. In einem ersten Anweisungszyklus führt auf den Empfang einer Anweisung zur Akkumulationsberechnung über das Steuersignal m1 hin die arithmetische und logische Einheit ihre Berechnung durch, speichert das Ergebnis in dem ersten Akkumulator A0 und speichert den Übertrag in dem Bit C2. Die Steuereinheit initialisiert sodann die Schiebeeinrichtung mit einer arithmetischen Verschiebung um n Bit nach rechts und legt den Inhalt des zweiten Akkumulators A1 auf den Eingang E2 der arithmetischen und logischen Einheit. In einem zweiten Anweisungszyklus sendet sie eine zweite Anweisung m1 zur Akkumulation an die arithmetische und logische Einheit. Die arithmetische und logische Einheit addiert die beiden Eingänge zu dem Übertrag der vorangehenden, in dem Bit C2 gespeicherten Übertrag und akkumuliert das Ergebnis in dem Akkumulator C1.
  • Für eine Anweisung zur zweifachen Akkumulation des Produkt- und Multiplikationsregisters sendet im zweiten Zyklus die Steuereinheit parallel zu der Anweisung zur zweiten Akkumulation ein Berechnungs-Steuersignal m3 an den Multiplizierer. Das neue Produkt wird in dem Produktregister gespeichert. Am Ende des zweiten Anweisungszyklus deaktiviert die Steuereinheit das binäre Steuersignal M2 und reinitialisiert die Schiebeeinrichtung mit einer Verschiebung um den Betrag Null.
  • Wenn die Anweisung eine zweifache Akkumulation und eine Multiplikation mit Übertrag betrifft, aktiviert die Steuereinheit auch das Steuersignal m4 auf den Wert 1, um das Anlegen des Übertragbits C1 an den Eingang C0 des Multiplizierers freizugeben, und deaktiviert das binäre Signal m4 am Ende des zweiten Anweisungszyklus auf den Wert 0.
  • Die Rechenvorrichtung ermöglicht, auf sehr einfache Art und Weise Multiplikation- Akkumu-lationen mit doppelter Genauigeit durchzuführen, mit einem Ergebnis, welches vollkommen auf die beiden Akkumulatoren abgestimmt ist. Das Ergebnis der Multiplikation-Akkumulation wird für die geringen Gewichte in dem Akkumulator A0 und für die hohen Gewichte in dem Akkumulator A1 abgelegt. Mit der in Fig. 1 dargestellten Architektur, bei der die arithmetische und logische Einheit und die Akkumulatoren Erweiterungen aufweisen, ist der Erweiterungsabschnitt des Akkumulators A0 (A0E) nicht signifikant. Der Erweiterungsabschnitt des Akkumulators A1 (A1E) repräsentiert die eventuelle Erweiterung des Vorzeichens des Ergebnisses. Die Erfindung bezieht sich natürlich auch auf arithmetische und logische Einheiten ohne Erweiterung.
  • In Fig. 2 ist ein Organigramm einer Multiplikation-Akkumulation-Berechungsschleife mit einer Rechenvorrichtung gemäß der Erfindung dargestellt.
  • Die zu multiplizierenden Operanden werden in den Registern R und L abgelegt. In dem Beispiel gemäß Fig. 2 wurde n gleich 16 gewählt. Die Quellregister (R. L) und das Produktregister P sind infolgedessen Register mit 2 mal 16 Bit.
  • Vor dem Eintritt in die Multiplikation-Akkumulation-Berechnungsschleife muß zuerst ein erstes Produkt Pr1 berechnet werden, da das Prinzip der Erfindung darin besteht, das vorangehende Produkt zu akkumulieren und das nachfolgende Produkt zu berechnen.
  • Das Steuerverfahren beginnt demzufolge mit einer Ahweisung zum Berechnen des Produkts Pr1 der Worte R0, L0 mit geringem Gewicht der beiden ersten Operanden (MULT R0, L0). Der Multiplizierer wird aktiviert, und das Produkt wird in dem Register P abgelegt.
  • Sodann wird an dem Eintrittspunkt B in die Schleife eingetreten, welche durch eine Akkumulation-Multiplikation-Anweisung beginnt (MAC R1, L0, A0): in demselben Anweisungszyklus werden die Akkumulation des vorangehenden Produkts Pn = R0.L0 in dem Akkumulator A0 und ein erstes Kreuzprodukt Pr2, d.h. das Produkt eines Wortes mit hohem Gewicht eines Operanden, beispielsweise R1, mit dem Wort mit geringem Gewicht des anderen Operanden im Beispiel L0, berechnet. Die Akkumulation generiert einen in dem Bit C1 gespeicherten Übertrag (falls der Akkumulator A0 auf null initialisiert wurde, ist dieser Übertrag null).
  • Die nachfolgende Anweisung ist dann eine Anweisung zur zweifachen Akkumulation- Multipli-kation (DMAC R0, L1):
  • - im ersten Anweisungszyklus berechnet die arithmetische und logische Einheit eine erste Akkumulation des vorangehenden Produkts Pr2 mit einer Verschiebung um 16 Bit nach links mit dem Akkumulator A0. Die Akkumulation generiert einen Übertrag, der in dem Bit C2 gespeichert wird;
  • - im zweiten Anweisungszyklus berechnet die arithmetische und logische Einheit eine zweite Akkumulation des vorangehenden Produkts Pr2 mit einer arithmetischen Verschiebung um 16 Bit nach rechts mit dem Akkumulator A1 und mit dem in dem Bit C2 gespeicherten Übertrag C2. Gleichzeitig berechnet der Multiplizierer das zweite Kreuzprodukt Pr3, im Beispiel Pr3 = R0.L1.
  • Danach wird eine Anweisung zur zweifachen Akkumulation-Multiplikation mit Übertrag (DMAC R1, L1, Co) ausgeführt:
  • - in einer ersten Zyklusanweisung berechnet die arithmetische und logische Einheit eine erste Akkumulation des vorangehenden Produkts Pr3 mit einer Verschiebung um 16 Bit nach links mit dem Akkumulator A0. Die Akkumulation generiert einen Übertrag, der in dem Bit C2 gespeichert wird;
  • - im zweiten Anweisungszyklus berechnet die arithmetische und logische Einheit eine zweite Akkumulation des vorangehenden Produkts Pr3 mit einer arithmetischen Verschiebung um 16 Bit nach rechts mit dem Akkumulator A1 und mit dem in dem Bit C2 gespeicherten Übertrag C2. Gleichzeitig berechnet der Multiplizierer das Produkt Pr4 der Worte mit hohem Gewicht, indem das Übertragbit C1 an den Eingang des Multiplizierers gelegt wird: Pr4 = R1.L1 + C1. Die Quellregister R und L werden mit den nachfolgenden Operanden (R+, L+ geladen).
  • Schließlich wird eine einfache Akkumulation-Multiplikation-Anweisung (MAC R0, L0, A1) ausgeführt. Die arithmetische und logische Einheit berechnet die Akkumulation des vorangehenden Produkts Pr4 mit dem Akkumulator A1, und der Multiplizierer berechnet das Produkt Pr5 der Worte mit geringem Gewicht neuer Operanden Pr5 = R0.L0. Für die zweite Berechnungsschleife kann von B ausgegangen werden.
  • Das Steuerverfahren für die hier beschriebene Multiplikation-Akkumulation mit doppelter genauigkeit gilt für ganze oder gebrochene Zahlen mit Festkomma und Vorzeichen. Es wird angemerkt, daß die Multiplikation der Worte mit geringem Gewicht eine Multiplikation von Zahlen ohne Vorzeichen ist, wohingegen diejenige der Worte mit hohem Gewicht, der Zahlen mit Vorzeichen und der Kreuzprodukte Muliplikationen einer Zahl mit Vorzeichen mit einer Zahl ohne Vorzeichen sind; die Steuerung des in dem Multiplizierer MULT zu bildenden Produkttyps wird durch die Steuereinheit realisiert.
  • Zur Durchführung einer Multiplikation mit doppelter Genauigkeit ohne Akkumulation genügt es, anstelle der letzten Multiplikation-Akkumulation-Anweisung MAC, eine einfache Akkumulation über den Akkumulator A1 durchzuführen, wobei die Akkumulatoren A0 und A1 zu Beginn der Berechnung auf null initialisiert werden. Es wird angemerkt, daß es für eine Multiplikation mit doppelter Genauigkeit ohne Akkumulation nicht erforderlich ist, für die Berechnung des Produkts der Worte mit hohem Gewicht den Übertrag C1 dem Multiplizierer zuzuführen, weil das erste Produkt der Worte mit geringem Gewicht in diesem Fall mit einem auf null zurückgesetzten Akkumulator erfolgt, welches notwendigerweise einen Übertrag null impliziert.
  • Die erfindungsgemäße Rechenvorrichtung erlaubt demzufolge stark vereinfachte Multiplikationen oder Multiplikation-Akkumulationen mit doppelter Genauigkeit.
  • Auf allgemeine Art und Weise ermöglicht die an zumindest einem Eingang der arithmetischen und logischen Einheit angeordnete Schiebeeinrichtung Manipulationen der Daten, ohne daß der Inhalt der Akkumulatoren modifiziert werden muß: es erfolgt nicht mehr eine Abstimmung der Akkumulatoren, sondern eine Abstimmung der Daten. Dies bezieht sich natürlich auch auf die Additionen und Subtraktionen sowie auf sämtliche Bitmanipulationen.
  • Die erfindungsgemäße Vorrichtung zur arithmetischen und logischen Berechnung gemäß der Erfindung ist nicht auf die in Fig 1 dargestellte Architektur beschränkt. Es sind insbesondere andere Busarchitekturen möglich, und es können andere Register oder andere Recheneinheiten vorhanden sein. Die Arten und Weisen, auf welche die mit den Speicherräumen verbundenen Register gesteuert werden, sind nicht angegeben, werden jedoch gemäß den verschiedenen, im Stand der Technik offenbarten Möglichkeiten realisiert.

Claims (9)

1. Logische und arithmetische Rechenvorrichtung mit einer Steuereinheit (UC), umfassend einen Multiplizierer (MULT) mit einem Produktregister (P), dessen Ausgang einem Eingang mit einer Schiebeeinrichtung (BD) einer Arithmetik- und Logik-Einheit (ALU) mit zumindest zwei Ausgangs-Akkumulatoren (A0, A1) zuführbar ist, ein erstes Register (C1) und ein zweites Register (C2) zum Speichern und Weitergeben eines durch eine gegenwärtige Operation generierten Übertrags an eine nachfolgende Operation der Arithmetik- und Logikeinheit, dadurch gekennzeichnet, daß die Rechenvorrichtung zum Ermöglichen von Multiplikation-Akkumulationen von Operanden mit doppelter Genauigkeit eine erste Schaltung (1), die entweder das erste Register (C1) auswählt, um einen während einer ersten, über die Abschnitte der Operanden mit geringem Gewicht ausgeführten Berechnung generierten Übertrag zu speichern, oder das zweite Register (C2) auswählt, um die während der anderen Rechenzyklen generierten Überträge zu speichern, und eine zweite Schaltung, die das Anlegen des Inhalts des ersten Registers an einen Eingang (C0) des Multiplizierers erlaubt, um diesen Inhalt in dem über die Abschnitte der Operanden mit großem Gewicht ausgeführten Multiplikationszyklus zu integrieren, umfaßt.
2. Rechenvorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die erste Schaltung ein Multiplexeridemultiplexer mit zwei Wegen ist, von welchen ein erster mit dem ersten Register (C1) und ein zweiter mit dem zweiten Register (C2) verbunden ist, wobei die erste Schaltung ein Steuersignal (m2) von der Steuereinheit empfängt, um entwe der den ersten oder den zweiten Weg freizugeben.
3. Rechenvorrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die zweite Schaltung ein UND-Tor ist, weiches eingangsseitig ein binäres Steuersignal (m4) von der Steuereinheit (UC) und den Ausgang des ersten Registers (C1) empfängt, und dessen Ausgang an einen Eingang (C0) des Muitiplizierers geführt ist.
4. Logische und arithmetische Rechenvorrichtung nach einem der Anspruche 1 bis 3, dadurch gekennzeichnet, daß die Schiebeeinrichtung am Eingang der Arithmetik- und Logikeinheit eine Ring-Schiebeeinrichtung ist.
5. Rechenvorrichtung nach einem der Ansprüche 1 bis 4. dadurch gekennzeichnet, daß die Schiebeeinrichtung für jedes durch den Multiplizierer berechnete Kreuzprodukt (L0 x R1, R0 x L1) zunächst eine erste Ausrichtanweisung für den ersten Akkumulator empfängt. um die Addition des Inhalts des Produktregisters mit dem Inhalt des ersten Mckumulators und die Speicherung eines Übertrags in dem zweiten Register (C2) zu ermöglichen, und dann eine zweite Ausrichtanweisung für den zweiten Akkumulator empfängt. um die Addition des Inhalts des Produktregisters mit dem Inhalt des zweiten Akkumulators unter Berücksichtigung des in dem zweiten Register (C2) gespeicherten Übertrags zu ermöglichen.
6. Verfahren zur Verwendung einer logischen und arithmetischen Recheneinrichtung mit einer Steuereinheit (UC), umfassend einen Multiplizierer (MULT) mit einem Produktregister (P), dessen Ausgang einem Eingang mit einer Schiebeeinrichtung (BD) einer Arithmetik- und Logik-Einheit (ALU) mit zumindest zwei Ausgangs-Akkumulatoren (A0, A1) zuführbar ist, ein erstes Register (C1) und ein zweites Register (C2) zum Speichern und Weitergeben eines durch eine gegenwärtige Operation generierten Übertrags an eine nachfolgende Operation der Arithmetik- und Logikeinheit, dadurch gekennzeichnet, daß zum Ermöglichen von Multiplikation-Akkumulationen von Operanden mit doppelter Genauigkeit eine erste Schaltung (1) so gesteuert wird, daß sie entweder das erste Register (C1) auswählt, um einen während einer ersten, über die Abschnitte der Operanden mit geringem Gewicht ausgeführten Berechnung generierten Übertrag zu speichern, oder das zweite Register (C2) auswählt, um die während der anderen Rechenzyklen generierten Überträge zu speichern, und eine zweite Schaltung so gesteuert wird, daß sie den Inhalt des ersten Registers einem Eingang (C0) des Muitipiizierers zuführt, um diesen Inhalt in dem über die Abschnitte der Operanden mit großem Gewicht ausgeführten Multiplikationszyklus zu integrieren.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß die erste Schaltung ein Steuersignal (m2) von der Steuereinheit empfängt, welches entweder einen ersten, mit dem ersten Register (C1) eines Multiplexers/Demultiplexers verbundenen Signalpfad oder den zweiten, mit dem zweiten Register (C2) eines Multiplexers/Demultiplexers verbundenen Signalpfad freigibt.
8. Verfahren nach Anspruch 6 oder 7, dadurch gekennzeichnet daß eine Ring- Schiebeeinrichtung am Eingang der Arithmetik- und Logikeinheit verwendet wird.
9. Verfahren nach einem der Anspruche 6 bis 8, dadurch gekennzeichnet, daß die Schiebeeinrichtung für jedes durch den Multiplizierer berechnete Kreuzprodukt (L0 x R1, R0 x L1) zunächst eine erste Ausrichtanweisung für den ersten Akkumulator empfängt, um die Addition des Inhalts des Produktregisters mit dem Inhalt des ersten Akkumulators und die Speicherung eines Übertrags in dem zweiten Register (C2) zu ermöglichen, und dann eine zweite Ausrichtanweisung für den zweiten Akkumulator empfängt, um die Addition des Inhalts des Produktregisters mit dem Inhalt des zweiten Akkumulators unter Berücksichtigung des in dem zweiten Register (C2) gespeicherten Übertrags zu ermöglichen.
DE69500410T 1994-04-19 1995-04-18 Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren Expired - Fee Related DE69500410T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9404655A FR2718866B1 (fr) 1994-04-19 1994-04-19 Dispositif de calcul arithmétique et logique et procédé de commande.

Publications (2)

Publication Number Publication Date
DE69500410D1 DE69500410D1 (de) 1997-08-14
DE69500410T2 true DE69500410T2 (de) 1997-11-13

Family

ID=9462251

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69500410T Expired - Fee Related DE69500410T2 (de) 1994-04-19 1995-04-18 Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren

Country Status (5)

Country Link
US (1) US5657262A (de)
EP (1) EP0678807B1 (de)
JP (1) JP3476960B2 (de)
DE (1) DE69500410T2 (de)
FR (1) FR2718866B1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2745647B3 (fr) * 1996-03-01 1998-05-29 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement
US6128726A (en) * 1996-06-04 2000-10-03 Sigma Designs, Inc. Accurate high speed digital signal processor
DE69941287D1 (de) * 1998-01-21 2009-10-01 Panasonic Corp Verfahren und apparat für arithmetische operationen
FR2775368B1 (fr) * 1998-02-26 2000-04-14 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement
US6484194B1 (en) 1998-06-17 2002-11-19 Texas Instruments Incorporated Low cost multiplier block with chain capability
JP2000039995A (ja) * 1998-06-25 2000-02-08 Texas Instr Inc <Ti> 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
DE69920582T2 (de) * 1998-06-25 2005-09-08 Texas Instruments Inc., Dallas Verfahren zum Multiplizieren von Zahlen in Mehrwortkettendarstellung
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
JP3845009B2 (ja) * 2001-12-28 2006-11-15 富士通株式会社 積和演算装置、及び積和演算方法
US20050055394A1 (en) * 2003-09-10 2005-03-10 Worley John S. Method and system for high performance, multiple-precision multiply-and-add operation
WO2006083768A2 (en) * 2005-01-31 2006-08-10 Aamir Alam Farooqui Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
US7921148B2 (en) * 2006-08-09 2011-04-05 Infineon Technologies Ag Standard cell for arithmetic logic unit and chip card controller
US9104510B1 (en) * 2009-07-21 2015-08-11 Audience, Inc. Multi-function floating point unit
US11599334B2 (en) * 2020-06-09 2023-03-07 VeriSilicon Microelectronics Enhanced multiply accumulate device for neural networks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5994144A (ja) * 1982-11-22 1984-05-30 Toshiba Corp 乗算器
JPS6054070A (ja) * 1983-09-02 1985-03-28 Nec Corp 演算装置
EP0173383B1 (de) * 1984-08-14 1990-04-18 Telecommunications Radioelectriques Et Telephoniques T.R.T. Prozessor zur Verarbeitung von Daten verschiedener Darstellungsarten und geeignetes Multipliziergerät für einen solchen Prozessor
JPH07120272B2 (ja) * 1988-04-12 1995-12-20 日本電気株式会社 算術演算回路
JPH037083A (ja) * 1989-05-31 1991-01-14 Toshiba Corp 誘導電動機の制御方法
JPH0378083A (ja) * 1989-08-21 1991-04-03 Hitachi Ltd 倍精度演算方式及び積和演算装置
JPH05282133A (ja) * 1992-04-01 1993-10-29 Mitsubishi Electric Corp 演算方式
DE4218769A1 (de) * 1992-06-06 1993-12-09 Philips Patentverwaltung Verfahren und Anordnung zum Bilden der Summe einer Kette von Produkten
JPH06301710A (ja) * 1993-04-15 1994-10-28 Fujitsu Ltd 倍精度積和演算方法および装置

Also Published As

Publication number Publication date
JP3476960B2 (ja) 2003-12-10
EP0678807A1 (de) 1995-10-25
EP0678807B1 (de) 1997-07-09
FR2718866A1 (fr) 1995-10-20
FR2718866B1 (fr) 1996-05-15
JPH0850578A (ja) 1996-02-20
US5657262A (en) 1997-08-12
DE69500410D1 (de) 1997-08-14

Similar Documents

Publication Publication Date Title
DE2724125C2 (de)
DE69500410T2 (de) Arithmetische und logische Rechnungseinrichtung und Steuerungsverfahren
DE2755273C2 (de)
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE1942005B2 (de) Datenverarbeitungsanlage zur aufnahme und abgabe von digitalen daten und zur ausfuehrung von operationen an den daten
DE68924386T2 (de) Verfahren und Gerät zur Radix-2**n-Division mit überlappender Quotientenbitauswahl und gleichzeitiger Rundung und Korrektur des Quotienten.
DE2911096A1 (de) Multiplikations-akkumulatorschaltung
DE1179397B (de) Datenverarbeitende Maschine mit sich zeitlich ueberlappender Datenverarbeitung
DE2816711A1 (de) Divisionseinrichtung mit uebertrags- rettungsaddierwerk und nicht ausfuehrender vorausschau
DE2814078A1 (de) Addierschaltung mit zeitweiliger zwischenspeicherung des uebertrags
WO2005024542A2 (de) Digitale signalverarbeitungseinrichtung
DE2830334C2 (de)
DE2034841B2 (de) Matrixanordnung für Digital Rechenanlage
DE2746355A1 (de) Einrichtung und verfahren zur wahlweisen multiplikation oder division zweier als binaerzahlen vorliegender operanden
EP0265555B1 (de) Verfahren und Schaltungsanordnung zur Addition von Gleitkommazahlen
DE2245284A1 (de) Datenverarbeitungsanlage
DE1184122B (de) Addiervorrichtung
DE1499227C3 (de) Schaltungsanordnung für arithmetische und logische Grundoperationen
EP0629943B1 (de) Multiplizierer für reelle und komplexe Zahlen
DE4001232C2 (de) Gleitkommaeinheit
DE1549449A1 (de) Einrichtung zur Verarbeitung von Gleitkommazahlen
DE1549461C3 (de)

Legal Events

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