DE102019120838A1 - Dynamische Gleitkommabereichserweiterung - Google Patents

Dynamische Gleitkommabereichserweiterung Download PDF

Info

Publication number
DE102019120838A1
DE102019120838A1 DE102019120838.6A DE102019120838A DE102019120838A1 DE 102019120838 A1 DE102019120838 A1 DE 102019120838A1 DE 102019120838 A DE102019120838 A DE 102019120838A DE 102019120838 A1 DE102019120838 A1 DE 102019120838A1
Authority
DE
Germany
Prior art keywords
inputs
exponent
circuitry
scaled
scaling
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.)
Pending
Application number
DE102019120838.6A
Other languages
English (en)
Inventor
Bogdan Mihai Pasca
Martin Langhammer
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102019120838A1 publication Critical patent/DE102019120838A1/de
Pending legal-status Critical Current

Links

Images

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Logic Circuits (AREA)

Abstract

Die vorliegende Offenbarung bezieht sich allgemein auf Techniken zum Anpassen der Zahlendarstellung (z. B. des Formats) einer Variable vor und/oder nach dem Durchführen einer oder mehrerer arithmetischer Operationen auf der Variable. Insbesondere bezieht sich die vorliegende Offenbarung auf Skalieren des Bereichs einer Variable auf eine geeignete Darstellung basierend auf der verfügbaren Hardware (z. B. fest verdrahtete Logik) in einer integrierten Schaltungsvorrichtung. Beispielsweise kann ein Eingang in einem ersten Zahlenformat (z.B. bfloat16) auf ein zweites Zahlenformat (z.B. Gleitkomma mit halber Genauigkeit) skaliert werden, sodass eine Schaltungsanordnung, umgesetzt zum Empfangen von Eingängen im zweiten Zahlenformat, eine oder mehrere arithmetische Operationen auf dem Eingang durchführen kann. Ferner kann der durch die Schaltungsanordnung produzierte Ausgang zurück auf das erste Zahlenformat skaliert werden. Entsprechend können arithmetische Operationen, wie etwa ein Skalarprodukt, die in einem ersten Format durchgeführt werden, durch Skalieren der Eingänge in und/oder der Ausgänge von arithmetischen Operationen, die in einem anderen Zahlenformat durchgeführt werden, emuliert werden.

Description

  • STAND DER TECHNIK
  • Die vorliegende Offenbarung bezieht sich allgemein auf integrierte Schaltungen, wie etwa feldprogrammierbare Gate-Arrays (FPGAs). Insbesondere bezieht sich die vorliegende Offenbarung auf Techniken zum Anpassen (z. B. Skalieren) einer Variable vor und nach Verarbeitung, sodass Operationen, die auf der Variable in einem ersten Zahlenformat durchgeführt werden, unter Verwendung von Schaltungsanordnungselementen einer integrierten Schaltung (z. B. einer programmierbaren Logik eines FPGA) durch Operationen emuliert werden können, die in einem anderen Zahlenformat durchgeführt werden.
  • Dieser Abschnitt dient dazu, den Leser in verschiedene Aspekte des Gebiets einzuführen, die in Beziehung zu verschiedenen Aspekten der vorliegenden Offenbarung stehen können, die nachfolgend beschrieben und/oder beansprucht werden. Es wird davon ausgegangen, dass diese Diskussion hilfreich ist, indem sie für den Leser Hintergrundinformationen bereitstellt, um ein besseres Verständnis der verschiedenen Aspekte der vorliegenden Offenbarung zu erleichtern. Entsprechend versteht es sich, dass diese Aussagen in diesem Licht zu lesen sind, nicht als Übernahmen des Standes der Technik.
  • Integrierte Schaltungen können Variablen entsprechend einer Vielzahl von unterschiedlichen Formaten bereitstellen. Beispielsweise kann eine Variable im Gleitkommaformat mit einfacher Genauigkeit, im Gleitkommaformat mit halber Genauigkeit, im bfloat16-Format und/oder ähnlichem dargestellt werden. Jedes Format (z. B. Zahlendarstellung) kann verschiedene Vorteile im Hinblick auf Speichernutzung, die Genauigkeit von darstellbaren Werten, den Bereich von darstellbaren Werten und/oder ähnliches bereitstellen. In einigen Ausführungsformen kann die Anwendung, wie etwa die Operationen und/oder Verarbeitung, der Variable in der integrierten Schaltung ein geeignetes Format für die Variable vorgeben. Beispielsweise kann in Maschinenlernanwendungen der vergrößerte Bereich von Formaten wie etwa bfloat16 im Vergleich zum Bereich des Gleitkommaformats mit halber Genauigkeit vorteilhaft sein.
  • Allerdings können, in einigen Ausführungsformen, die Zahlenformate, die in der integrierten Schaltung dargestellt werden können, durch verfügbare Hardwareressourcen eingeschränkt sein.
  • Figurenliste
  • Verschiedene Aspekte dieser Offenbarung werden besser verständlich beim Lesen der folgenden detaillierten Beschreibung und Bezug nehmend auf die Zeichnungen, in denen:
    • 1 ein Blockdiagramm eines Systems zum Umsetzen einer Skalierungsschaltungsanordnung in Übereinstimmung mit einer Ausführungsform ist;
    • 2 ein Blockdiagramm einer integrierten Schaltung, in der eine Skalierungsschaltungsanordnung umgesetzt werden kann, in Übereinstimmung mit einer Ausführungsform ist;
    • 3 ein Blockdiagramm einer Digitalsignalverarbeitungs(DSP)-Schaltungsanordnung in Übereinstimmung mit einer Ausführungsform ist;
    • 4 ein Bereichsdiagramm einer Menge von Variablen, die in die DSP-Schaltungsanordnung eingegeben werden, in Übereinstimmung mit einer Ausführungsform ist;
    • 5 ein Blockdiagramm einer Emulationsschaltungsanordnung für arithmetische Operationen, die eine Skalierungsschaltungsanordnung umfasst, die kommunikativ mit der DSP-Schaltungsanordnung aus 3 gekoppelt ist, in Übereinstimmung mit einer Ausführungsform ist;
    • 6 ein Flussdiagramm eines Prozesses zum Anpassen der Darstellung (z. B. des Formats) einer Zahl vor und nach der Verarbeitung, in Übereinstimmung mit einer Ausführungsform ist;
    • 7 ein Flussdiagramm eines Prozesses zum Skalieren einer Menge von Eingängen von einem ersten Format auf ein zweites Format in Übereinstimmung mit einer Ausführungsform ist;
    • 8 ein Blockdiagramm einer Emulationsschaltungsanordnung für erweiterte arithmetische Operationen in Übereinstimmung mit einer Ausführungsform ist; und
    • 9 ein Blockdiagramm eines Datenverarbeitungssystems in Übereinstimmung mit einer Ausführungsform ist.
  • AUSFÜHRLICHE BESCHREIBUNG VON SPEZIELLEN AUSFÜHRUNGSFORMEN
  • Nachfolgend werden eine oder mehrere spezielle Ausführungsformen beschrieben. Im Bemühen, eine präzise Beschreibung dieser Ausführungsformen bereitzustellen, werden nicht alle Merkmale einer tatsächlichen Umsetzung in der Spezifikation beschrieben. Es versteht sich, dass bei der Entwicklung einer jeden solchen tatsächlichen Umsetzung, wie bei jedem technischen oder Konstruktionsprojekt, zahlreiche umsetzungsspezifische Entscheidungen getroffen werden können, um die spezifischen Ziele der Entwickler zu erreichen, wie etwa Konformität mit systembezogenen und geschäftsbezogenen Einschränkungen, die von einer Umsetzung zu einer anderen variieren können. Darüber hinaus versteht es sich, dass eine solche Entwicklungsarbeit komplex und zeitaufwändig sein kann, dennoch aber eine routinemäßige Beschäftigung mit Konstruktion, Fertigung und Herstellung für Durchschnittsfachleute wäre, den Vorteil dieser Offenbarung aufweisend.
  • Wie nachfolgend ausführlicher erörtert, beziehen sich Ausführungsformen der vorliegenden Offenbarung im Allgemeinen auf Anpassen der Zahlendarstellung (z. B. des Formats) einer Variable vor und/oder nach dem Durchführen einer oder mehrerer arithmetischer Operationen auf der Variable. Insbesondere bezieht sich die vorliegende Offenbarung auf Skalieren einer Variable auf eine geeignete Darstellung basierend auf der verfügbaren Hardware (z. B. fest verdrahtete Logik) in einer integrierten Schaltung.
  • Beispielsweise kann ein Eingang in einem ersten Zahlenformat (z. B. bfloat16) auf ein zweites Zahlenformat (z. B. Gleitkomma mit halber Genauigkeit) skaliert werden, sodass eine Digitalsignalverarbeitungs(DSP)-Schaltung, umgesetzt zum Empfangen von Eingängen im zweiten Zahlenformat, eine oder mehrere arithmetische Operationen auf dem Eingang durchführen kann. Ferner kann, in einigen Ausführungsformen, der durch die DSP-Schaltung in einem zweiten oder dritten Zahlenformat (z. B. Gleitkomma mit einfacher Genauigkeit) produzierte Ausgang zurück auf das erste Zahlenformat skaliert werden. Entsprechend können arithmetische Operationen, wie etwa ein Skalarprodukt, die in einem ersten Format durchgeführt werden, durch Skalieren der Eingänge in und/oder der Ausgänge von arithmetischen Operationen, die in einem zweiten Zahlenformat durchgeführt werden, emuliert werden.
  • Entsprechend kann eine integrierte Schaltung eine Vorskalierungsschaltungsanordnung, die kommunikativ mit einem Eingang einer DSP-Schaltungsanordnung gekoppelt ist, und/oder eine Nachskalierungsschaltungsanordnung, die kommunikativ mit einem Ausgang der DSP-Schaltungsanordnung gekoppelt ist, umfassen. Wie nachfolgend noch ausführlicher erörtert, kann die DSP-Schaltungsanordnung umgesetzt sein, um eine Multiplikationsoperation, wie etwa ein Skalarprodukt, auf einer Menge von Eingängen durchzuführen, die das zweite Zahlenformat aufweisen. Daher kann die Vorskalierungsschaltungsanordnung umgesetzt sein, um eine Menge von Eingängen von einem ersten Zahlenformat auf ein zweites Zahlenformat zu skalieren. Dazu kann die Vorskalierungsschaltungsanordnung die maximale Summe der Exponenten von Paaren von Eingängen bestimmen, die in der DSP-Schaltungsanordnung multipliziert werden können. Das heißt, beispielsweise, dass die Vorskalierungsschaltungsanordnung den maximalen Exponentenwert bestimmen kann, der aus dem Multiplizieren der zwei Eingänge miteinander resultieren würde. Um einen Überlauf an der DSP-Schaltungsanordnung zu verhindern, kann die Vorskalierungsschaltungsanordnung dann, zumindest teilweise basierend auf dem maximalen Exponentenwert, den Exponenten jedes dieser Menge von Eingängen auf einen geeigneten Bereich entsprechend dem zweiten Zahlenformat skalieren. Entsprechend können die Eingänge auf das zweite Format skaliert und zur DSP-Schaltungsanordnung geführt werden. Nachdem die DSP-Schaltungsanordnung eine oder mehrere arithmetische Operationen auf den skalierten Eingängen durchführt, kann die Nachskalierungsschaltungsanordnung den Ausgang der DSP-Schaltungsanordnung wieder zurück auf das erste Format skalieren. Insbesondere kann, zumindest teilweise basierend auf dem durch die Vorskalierungsschaltungsanordnung bestimmten maximalen Exponentenwert, wie auch dem ersten Format, der Exponent des Ausgangs auf einen Bereich entsprechend dem ersten Format skaliert werden. Während die arithmetischen Operationen in einem anderen Format durchgeführt wurden, emuliert so der skalierte Ausgang das Ergebnis des Durchführens der arithmetischen Operationen im ersten Zahlenformat.
  • Unter Berücksichtigung des Vorgenannten stellt 1 ein Blockdiagramm eines Systems 10 dar, das arithmetische Operationen umsetzen kann. Ein Konstrukteur möchte möglicherweise Funktionalität, wie etwa die Skalierungsoperationen dieser Offenbarung, auf einer integrierten Schaltungsvorrichtung 12 (wie etwa einem feldprogrammierbaren Gate-Array (FPGA) oder einer anwendungsspezifischen integrierten Schaltung (ASIC)) umsetzen. In einigen Fällen kann ein Konstrukteur ein umzusetzendes Programm auf hoher Ebene angeben, wie etwa ein OpenCL-Programm, was es dem Konstrukteur ermöglichen kann, effizienter und einfacher Programmieranweisungen bereitzustellen, um eine Menge von programmierbaren logischen Zellen für die integrierte Schaltungsvorrichtung 12 ohne spezifische Kenntnis der Hardwarebeschreibungssprachen auf niedriger Ebene (z. B. Verilog oder VHDL) auszulegen. Da beispielsweise OpenCL ziemlich ähnlich zu anderen höheren Programmiersprachen ist, wie etwa C++, können Konstrukteure einer programmierbaren Logik, die mit solchen Programmiersprachen vertraut sind, eine flachere Lernkurve haben als Konstrukteure, die nicht vertraute Hardwarebeschreibungssprachen auf niedriger Ebene erlernen müssen, um neue Funktionalitäten in der integrierten Schaltungsvorrichtung 12 umzusetzen.
  • Die Konstrukteure können ihre Konstruktionen auf hoher Ebene unter Verwendung von Konstruktionssoftware 14 umsetzen, wie etwa Versionen von Intel® Quartus® von INTEL CORPORATION. Die Konstruktionssoftware 14 kann einen Compiler 16 verwenden, um das Programm auf hoher Ebene in eine Beschreibung auf niedriger Ebene umzuwandeln. Der Compiler 16 kann maschinenlesbare Anweisungen, die repräsentativ für das Programm auf hoher Ebene sind, für einen Host 18 und die integrierte Schaltungsvorrichtung 12 bereitstellen. Der Host 18 kann ein Hostprogramm 22 empfangen, das durch die Kernel-Programme 20 umgesetzt werden kann. Um das Hostprogramm 22 umzusetzen, kann der Host 18 Anweisungen von dem Hostprogramm 22 an die integrierte Schaltungsvorrichtung 12 über eine Kommunikationsverbindung 24 kommunizieren, die, beispielsweise, eine Kommunikation mit direktem Speicherzugriff (DMA; Direct Memory Access) oder eine Expresskommunikation mit peripherer Komponentenverbindung (PCIe, Peripheral Component Interconnect express) sein kann. In einigen Ausführungsformen können die Kernel-Programme 20 und der Host 18 Auslegung von Skalierungsschaltungsanordnung 26 (z. B. kombinatorische Schaltungsanordnung) auf der integrierten Schaltungsvorrichtung 12 ermöglichen. Die Skalierungsschaltungsanordnung 26 kann eine Schaltungsanordnung und/oder andere Logikelemente umfassen und kann ausgelegt sein zum, beispielsweise, Skalieren einer Variable von einer ersten Zahlendarstellung auf eine zweite Zahlendarstellung.
  • Während sich die hier beschriebenen Techniken auf die Anwendung eines Programms auf hoher Ebene beziehen, kann der Konstrukteur, in einigen Ausführungsformen, die Konstruktionssoftware 14 verwenden, um ein Programm auf niedriger Ebene zu erzeugen und/oder anzugeben, wie etwa die oben beschriebenen niederen Hardwarebeschreibungssprachen. Ferner kann, in einigen Ausführungsformen, das System 10 ohne ein separates Hostprogramm 22 umgesetzt sein. Darüber hinaus können, in einigen Ausführungsformen, die hier beschriebenen Techniken in Schaltungsanordnungen als eine nicht programmierbare Schaltungskonstruktion umgesetzt sein. Daher sollen die hier beschriebenen Ausführungsformen veranschaulichend sein, und nicht einschränkend.
  • Jetzt zurückkehrend zu einer ausführlicheren Erörterung der integrierten Schaltungsvorrichtung 12 stellt 2 ein Beispiel der integrierten Schaltungsvorrichtung 12 als eine programmierbare Logikvorrichtung dar, wie etwa ein feldprogrammierbares Gate-Array (FPGA). Ferner versteht es sich, dass die integrierte Schaltungsvorrichtung 12 von jedem anderen Typ von programmierbarer Logikvorrichtung sein kann (z. B. eine anwendungsspezifische integrierte Schaltung und/oder ein anwendungsspezifisches Standardprodukt). Wie gezeigt, kann die integrierte Schaltungsvorrichtung 12 Eingang/Ausgang-Schaltungsvorrichtungen 42 zum Steuern von Signalen weg von der Vorrichtung und zum Empfangen von Signalen von anderen Vorrichtungen über Eingang/Ausgang-Kontakte 44 haben. Verbindungsressourcen 46, wie etwa globale und lokale vertikale und horizontale leitende Leitungen und Busse, können verwendet werden, um Signale auf der integrierten Schaltungsvorrichtung 12 weiterzuleiten. Zusätzlich können Verbindungsressourcen 46 feste Verbindungen (leitende Leitungen) und programmierbare Verbindungen (d. h. programmierbare Verbindungen zwischen jeweiligen festen Verbindungen) umfassen. Programmierbare Logik 48 kann kombinatorische und sequenzielle Logikschaltungsanordnungen umfassen. Beispielsweise kann programmierbare Logik 48 Nachschlagetabellen, Register und Multiplexer umfassen. In verschiedenen Ausführungsformen kann die programmierbare Logik 48 ausgeführt sein, um eine benutzerspezifische Logikfunktion durchzuführen. Die programmierbaren Verbindungen mit Verbindungsressourcen können als ein Teil der programmierbaren Logik 48 angesehen werden.
  • Programmierbare Logikvorrichtungen, wie etwa die integrierte Schaltungsvorrichtung 12, können programmierbare Elemente 50 mit der programmierbaren Logik 48 enthalten. Beispielsweise kann, wie oben erörtert, ein Konstrukteur (z. B. ein Kunde) die programmierbare Logik 48 programmieren (z. B. auslegen), um eine oder mehrere gewünschte Funktionen durchzuführen. Als Beispiel können einige programmierbare Logikvorrichtungen programmiert werden durch Auslegen ihrer programmierbaren Elemente 50 unter Verwendung von Maskenprogrammierungsanordnungen, was während der Halbleiterfertigung durchgeführt wird. Andere programmierbare Logikvorrichtungen werden ausgelegt, nachdem die Halbleiterfertigungsoperationen abgeschlossen wurden, wie etwa durch Verwendung elektrischer Programmierung oder Laserprogrammierung zum Programmieren ihrer programmierbaren Elemente 50. Im Allgemeinen können programmierbare Elemente 50 auf einer beliebigen programmierbaren Technologie basieren, wie etwa Sicherungen, Anti-Sicherungen, elektrisch programmierbare Nur-Lese-Speichertechnologie, Direktzugriffsspeicherzellen, maskenprogrammierte Elemente und so weiter.
  • Viele programmierbare Logikvorrichtungen werden elektrisch programmiert. Mit elektrischen Programmierungsanordnungen können die programmierbaren Elemente 50 aus einer oder mehreren Speicherzellen gebildet werden. Beispielsweise werden, während der Programmierung, unter Verwendung der Kontakte 44 und der Eingang/Ausgang-Schaltungsanordnung 42 Auslegungsdaten in die Speicherzellen geladen. In einer Ausführungsform können die Speicherzellen als Direktzugriffsspeicherzellen (RAM, Random-Access Memory) umgesetzt sein. Die Verwendung von Speicherzellen basierend auf RAM-Technologie, wie hier beschrieben, soll nur als Beispiel dienen. Ferner werden, da diese RAM-Zellen während der Programmierung mit Auslegungsdaten geladen werden, sie manchmal als Auslegungs-RAM-Zellen (CRAM, Configuration RAM) bezeichnet. Diese Speicherzellen können jede ein entsprechendes statisches Steuerungsausgangssignal bereitstellen, das den Zustand einer zugehörigen Logikkomponente in programmierbarer Logik 48 steuert. Beispielsweise können, in einigen Ausführungsformen, die Ausgangssignale an die Gatter von Metall-Oxid-Halbleiter(MOS)-Transistoren innerhalb der programmierbaren Logik 48 angelegt werden.
  • Jetzt Bezug nehmend auf 3 kann, in einigen Ausführungsformen, die integrierte Schaltungsvorrichtung 12 eine Digitalsignalverarbeitungs(DSP)-Schaltungsanordnung 60 umfassen, wie etwa eine Multiplizieren-Akkumulieren(MAC)-Schaltungsanordnung, einen DSP-Block, Arithmetikschaltungsanordnungen oder ein DSP-Slice (z. B. einen Teil eines DSP-Blocks), umgesetzt, um eine oder mehrere arithmetische Operationen (z. B. Skalarprodukt) auf einem Eingang durchzuführen. Darüber hinaus kann, in einigen Ausführungsformen, die DSP-Schaltungsanordnung 60 fest verdrahtete Logik (z. B. eine fest verdrahtete MAC-Schaltungsanordnung, einen fest verdrahteten DSP-Block, eine fest verdrahtete Arithmetikschaltungsanordnung, einen fest verdrahteten DSP-Slice und/oder ähnliches) umfassen, um die eine oder mehreren arithmetischen Operationen durchzuführen. Die eine oder mehreren arithmetischen Operationen können ein Ergebnis produzieren, das eine bestimmte Zahlendarstellung aufweist (z. B. Format und/oder Bereich). Ferner stimmt, in einigen Ausführungsformen, die Zahlendarstellung des Ergebnisses möglicherweise nicht mit der Zahlendarstellung des ursprünglichen Eingangs überein. Beispielsweise umfasst, in der dargestellten Ausführungsform, die DSP-Schaltungsanordnung 60 eine Eingangsschaltungsanordnung 62, umgesetzt zum Empfangen einer Anzahl von Gleitkommaeingängen mit halber Genauigkeit (z. B. FP16). Entsprechend umfasst jeder der Eingänge sechzehn Bits, wobei ein Bit ein Vorzeichenbit einer Zahl darstellt, fünf Bits einen Exponenten der Zahl darstellen und zehn Bits eine Mantisse (z. B. Bruchzahl) der Zahl darstellen. Ferner gibt, nach Bestimmen des Skalarprodukts der Eingänge, die DSP-Schaltungsanordnung 60 ein Gleitkommaergebnis mit einfacher Genauigkeit (z. B. SP) aus, das ein einzelnes Vorzeichenbit, ein 8-Bit-Exponentenfeld und ein 23-Bit-Mantissenfeld (z. B. insgesamt zweiunddreißig Bits) umfasst. Das dargestellte Format der Eingänge und Ausgänge soll allerdings nicht einschränkend sein. Tatsächlich können die Eingänge und Ausgänge jedes geeignete Format annehmen.
  • Um eine oder mehrere arithmetische Operationen auf einer Menge von Eingängen durchzuführen (um z. B. ein Skalarprodukt der Menge von Eingängen zu bestimmen), kann die DSP-Schaltungsanordnung 60 eine Anzahl von Multiplizierern 64 umfassen. Während die Eingangsschaltungsanordnung 62 Eingänge mit einer ersten Zahlendarstellung (z. B. Gleitkommaformat mit halber Genauigkeit) empfangen kann, können die Multiplizierer 64 eine Menge von Multiplikationsergebnissen in einem zweiten, internen Zahlenformat der DSP-Schaltungsanordnung 60, in 3 als FP16+++ bezeichnet, ausgeben. Um beispielsweise potenziellen Überlauf zu berücksichtigen, können die Multiplikationsergebnisse mit einem 1-Bit-Vorzeichenfeld, einem 8-Bit-Exponentenfeld und einem 10-Bit-Mantissenfeld formatiert werden. In anderen Ausführungsformen können die Multiplikationsergebnisse im Gleitkommaformat mit halber Genauigkeit bleiben oder können gemäß einem anderen geeigneten Zahlenformat (z. B. Gleitkomma mit einfacher Genauigkeit und/oder ähnliches) formatiert werden, was von dem Format der Menge von Eingängen in die DSP-Schaltungsanordnung 60 abhängen kann.
  • Die DSP-Schaltungsanordnung 60 kann ferner eine geeignete Anzahl von Addierern 66 (z. B. Gleitkommaaddierern) und/oder eine geeignete Anzahl von Stufen eines Addiererbaums 68 umfassen, um die Multiplikationsergebnisse zu summieren. Die Addierer 66 können umgesetzt sein, um die Multiplikationsergebnisse gemäß einem internen Zahlenformat der DSP-Schaltungsanordnung 60 zu summieren, was das gleiche oder ein anderes Format im Vergleich mit dem Format der Multiplikationsergebnisse sein kann. Ferner kann, in einigen Ausführungsformen, eine abschließende Summe von jedem der Multiplikationsergebnisse durch, beispielsweise, einen Addierer mit einfacher Genauigkeit 66A in der abschließenden Stufe des Addiererbaums 68 bestimmt werden. Entsprechend kann der Addierer mit einfacher Genauigkeit 66A ein 32-Bit-Ergebnis ausgeben, das ein 1-Bit-Vorzeichenfeld, ein 8-Bit-Exponentenfeld und ein 23-Bit-Mantissenfeld aufweist. Dazu können die 10-Bit-Bruchzahlfelder der Eingänge in den Addierer mit einfacher Genauigkeit 66A auf 23 Bits erweitert werden, bevor sie summiert werden. In anderen Ausführungsformen kann die abschließende Summe durch einen Addierer 66 bestimmt werden, der umgesetzt ist, um ein Ergebnis in einem anderen Zahlenformat (z. B. Gleitkomma mit halber Genauigkeit, FP16+++, eine erweiterte Genauigkeit und/oder ähnliches) zu produzieren, das von dem Format der Menge von Eingängen in die DSP-Schaltungsanordnung 60, dem Format, das ursprünglich zum Summieren der Multiplikationsergebnisse verwendet wurde, und/oder ähnlichem abhängen kann.
  • Allerdings werden, in einigen Ausführungsformen, Eingänge für die arithmetischen Operationen, die durch die DSP-Schaltungsanordnung 60 durchgeführt werden, möglicherweise nicht entsprechend dem an der Eingangsschaltungsanordnung 62 erwarteten Zahlenformat (z. B. Gleitkomma mit halber Genauigkeit) formatiert. Beispielsweise kann, in einigen Ausführungsformen, die Eingangsschaltungsanordnung 62 Eingänge empfangen, die ein 1-Bit-Vorzeichenfeld, ein 8-Bit-Exponentenfeld und ein 7-Bit-Bruchzahlfeld aufweisen (z.B. bfloat16). Entsprechend kann, in einigen Ausführungsformen, vor Empfangen eines Eingangs an der Eingangsschaltungsanordnung 62, der Eingang von einem Format auf ein anderes skaliert werden. Darüber hinaus kann es, in einigen Ausführungsformen, wünschenswert sein, einen Ausgang zu produzieren, dessen Format nicht dem Gleitkommaformat mit einfacher Genauigkeit entspricht (z. B. mit diesem übereinstimmt), das aus dem Addierer mit einfacher Genauigkeit 66A resultiert. Beispielsweise kann es, fortfahrend mit dem obigen Beispiel, wünschenswert sein, den Ausgang zurück auf bfloat16 zu skalieren in Fällen, bei denen die DSP-Schaltungsanordnung 60 einen Eingang im bfloat16-Format empfängt. Daher kann der Ausgang der DSP-Schaltungsanordnung 60 von einem Format auf ein anderes skaliert werden.
  • Während die dargestellte DSP-Schaltungsanordnung 60 umgesetzt ist, um ein Skalarprodukt zu bestimmen, kann die DSP-Schaltungsanordnung 60 umgesetzt sein, um eine beliebige geeignete Multiplikations-Akkumulations-Funktion und/oder andere arithmetische Operationen durchzuführen. Darüber hinaus kann das Format des Eingangs in, des Ausgangs von und beliebiger Zwischenwerte der DSP-Schaltungsanordnung 60 ein beliebiges geeignetes Zahlenformat sein. Entsprechend können bfloat16-Eingänge auf Gleitkomma mit halber Genauigkeit skaliert werden, Eingänge mit erweiterter Genauigkeit können auf Gleitkomma mit einfacher Genauigkeit skaliert werden, unter anderen Kombinationen. Daher sollen die hier beschriebenen Ausführungsformen veranschaulichend sein, und nicht einschränkend.
  • Um die Skalierung eines Eingangs in und/oder eines Ausgangs von der DSP-Schaltungsanordnung 60 besser zu veranschaulichen, stellt 4 ein Bereichsdiagramm 70 für eine Beispielmenge von Variablen (z. B. P0, P1, P2 und P3) dar, die in die DSP-Schaltungsanordnung 60 eingegeben werden. Das Bereichsdiagramm 70 stellt Änderungen an dem unbeeinflussten Bereich (z. B. Exponentenbereich) der Menge von Variablen dar, die aus Skalierung und/oder arithmetischen Operationen resultieren können. Beispielsweise kann ein erster Bereich 72A den Bereich von jeder der Menge von Variablen darstellen, die in die DSP-Schaltungsanordnung 60 eingegeben werden. Entsprechend kann sich der erste Bereich 72A von ‚-126‘ bis ‚127‘ für eine Menge von Variablen erstrecken, die alle gemäß bfloat16 formatiert sind. Insbesondere, wie nachfolgend noch ausführlicher beschrieben wird, kann, da Paare von entsprechenden Eingängen an den Multiplizierern 64 der DSP-Schaltungsanordnung 60 multipliziert werden können, jede aus der dargestellten Menge von Variablen den Bereich eines entsprechenden Produkts eines Paares von Variablen darstellen. Entsprechend kann die Menge von Variablen die Summe von entsprechenden Paaren von Exponenten darstellen.
  • Der zweite Bereich 72B kann den Bereich darstellen, den die Eingangsschaltungsanordnung 62 zu empfangen umgesetzt ist, wie etwa Gleitkomma mit halber Genauigkeit. Entsprechend kann sich, in einigen Ausführungsformen, der zweite Bereich 72B von ‚-14‘ bis ‚15‘ erstrecken. Ferner kann ein dritter Bereich 72C den Bereich der durch die Multiplizierer 64 ausgegebenen Produkte darstellen. Daher kann, da die Exponenten eines Paares von Eingängen in einen Multiplizierer 64 während einer Multiplikationsoperation summiert werden können, der dritte Bereich 72C das Doppelte des zweiten Bereichs 72A sein und kann ein zusätzliches Bit zur Berücksichtigung der Normalisierung umfassen. Daher kann sich, in einigen Ausführungsformen, der dritte Bereich 72B von ‚-28‘ bis ‚31‘ erstrecken. Ferner, da die DSP-Schaltungsanordnung 60 zwei Stufen der Addierer 66 im Addiererbaum 68 umfasst, umfasst das Bereichsdiagramm 70 zwei Addiererbereiche (z. B. einen vierten Bereich 72D und einen fünften Bereich 72E), die jeweils das Maximum des vorherigen Bereichs (z. B. des dritten Bereichs 72C bzw. des vierten Bereichs 72D) um ein Bit erweitern, um den Überlauf von der Additionsoperation zu berücksichtigen. Ferner umfasst das Bereichsdiagramm 70 einen ersten internen Bereich 74A, der dem Bereich einer ersten Ausführungsform eines internen Zahlenformats der DSP-Schaltungsanordnung 60 entsprechen kann, wie etwa FP16+++. Das Bereichsdiagramm 70 umfasst auch einen zweiten internen Bereich 74B, der den Bereich einer zweiten Ausführungsform eines internen Zahlenformats der DSP-Schaltungsanordnung 60 darstellen kann, wie etwa Gleitkomma mit halber Genauigkeit.
  • Wie nachfolgend noch ausführlicher erörtert, kann, in einigen Ausführungsformen, die Skalierung der Menge von Variablen, die in die Eingangsschaltungsanordnung 62 eingegeben werden, teilweise von dem internen Bereich (z. B. 74A oder 74B) der DSP-Schaltungsanordnung 60 abhängen. Um beispielsweise die Menge von Daten, die in der Menge von Variablen an der Eingangsschaltungsanordnung 62 gehalten werden (z. B. die Genauigkeit), zu maximieren und internen Überlauf innerhalb der DSP-Schaltungsanordnung 60 zu verhindern und/oder zu verringern, kann die Menge von Variablen teilweise basierend auf dem zweiten Bereich 72B und dem internen Bereich (z. B. 74A oder 74B) skaliert werden. Beispielsweise kann, in Ausführungsformen, bei denen der interne Bereich dem ersten internen Bereich 74A entspricht (z. B. Bereich für FP16+++), das durch die Menge von Variablen dargestellte maximale Produkt (z. B. P0) skaliert (z. B. vorskaliert) werden, bevor es in die Eingangsschaltungsanordnung 62 eingegeben wird, sodass der unbeeinflusste Exponent des entsprechenden skalierten Produkts (z. B. SP0) ‚30‘ ist. Entsprechend kann, in einigen Ausführungsformen, das Paar von Exponenten entsprechend dem maximalen Produkt (P0) jeweils auf einen unbeeinflussten Wert von ‚15‘ skaliert werden, der die Verwendung des zweiten Bereichs 72B zum Darstellen der einzelnen Exponenten in der Menge von Variablen maximieren kann. Darüber hinaus können die verbleibenden Exponenten der Variablen in der Menge von Variablen (z. B. P1, P2 und P3) entsprechend der gleichen Technik skaliert und/oder versetzt werden, um die verbleibenden skalierten Produkte (z. B. SP1, SP2 bzw. SP3) zu produzieren. Ferner können, da der interne Bereich dem ersten internen Bereich 74A entspricht, die nachfolgenden arithmetischen Operationen (z. B. Addition), die auf der Menge von skalierten Produkten in der DSP-Schaltungsanordnung 60 durchgeführt werden, keinen Überlauf (z. B. Verlust von Daten) verursachen. Entsprechend kann das durch die DSP-Schaltungsanordnung 60 produzierte Ergebnis (R) skaliert werden, um ein skaliertes Ergebnis (SR) innerhalb eines sechsten Bereichs 72F zu produzieren, der der gleiche wie der erste Bereich 72A sein kann, ohne Daten zu verlieren, die in der Menge von Variablen enthalten sind.
  • Allerdings kann, in Ausführungsformen, bei denen der interne Bereich dem zweiten internen Bereich 74B entspricht (z. B. Bereich für Gleitkomma mit halber Genauigkeit), beispielsweise, das durch die Menge von Variablen dargestellte maximale Produkt (z. B. P0) skaliert (z. B. vorskaliert) werden, bevor es in die Eingangsschaltungsanordnung 62 eingegeben wird, sodass der unbeeinflusste Exponent des entsprechenden skalierten Produkts (z.B. SP0) kleiner als ‚15‘ ist. Noch spezieller kann das maximale Produkt (z. B. P0) skaliert werden, wie nachfolgend noch ausführlicher beschrieben, sodass nachdem die zwei Stufen von Addition durch den Addiererbaum 68 umgesetzt wurden, der Exponent der abschließenden Summe (R') nicht den maximalen Wert des zweiten internen Bereichs 74B überschreitet (z. B. 15). Darüber hinaus können die verbleibenden Variablen in der Menge von Variablen (z. B. P1, P2 und P3) entsprechend der gleichen Technik skaliert und/oder versetzt werden, um die verbleibenden skalierten Produkte (z.B. SP1', SP2' bzw. SP3') zu produzieren. Allerdings, wie durch die Fläche 76 des Bereichsdiagramms 70 dargestellt, können Exponenten von Produkten kleiner als das maximale Produkt auf einen Bereich über den zweiten internen Bereich 74B hinaus skaliert werden, was zu einem Verlust von Daten (z. B. Unterschreitung) führen kann, bevor irgendeine Addition am Addiererbaum 68 berechnet wird. Entsprechend kann das Additionsergebnis (R'), das durch die DSP-Schaltungsanordnung 60 produziert wird, weniger genau sein als das Ergebnis (R), das in einer Ausführungsform mit dem ersten internen Bereich 74A produziert wurde. Daher kann Skalieren des Additionsergebnisses (R') zum Produzieren eines skalierten Additionsergebnisses (SR') ein weniger genaues Endergebnis als das skalierte Ergebnis (SR) produzieren. Ferner versteht es sich, dass die Skalierungstechnik und/oder Versätze, wie oben als in den Ausführungsformen mit dem zweiten internen Bereich 74B angewendet beschrieben, auf die Ausführungsformen mit dem ersten internen Bereich 74A angewendet werden können. Beispielsweise kann die Menge von Variablen auf einen Wert kleiner als ‚30‘ in einer Ausführungsform skaliert werden, in der der interne Bereich der erste interne Bereich 74 ist. Allerdings können solche Ausführungsformen weniger genaue skalierte Ergebnisse produzieren als die Skalierungstechnik und/oder die Versätze, die oben Bezug nehmend auf die Ausführungsformen mit dem ersten internen Bereich 74A beschrieben wurden.
  • Darüber hinaus, während die dargestellte Ausführungsform bestimmte Bereiche (z. B. 72A, 72B, 72C, 72D, 72E und 72F) und bestimmte interne Bereiche (z. B. 74A und 74B) darstellt, die jeweils bestimmten Zahlenformaten entsprechen, versteht es sich, dass beliebige geeignete Bereiche innerhalb der DSP-Schaltungsanordnung 60 angewendet werden können. Ferner kann ein beliebiger geeigneter Bereich auf den entsprechenden Bereich der Eingangsschaltungsanordnung 62 skaliert werden, und der Ausgang der DSP-Schaltungsanordnung 60 kann auf einen beliebigen geeigneten Bereich skaliert werden.
  • 5 stellt eine Ausführungsform einer Emulationsschaltungsanordnung für arithmetische Operationen 100 dar, die eine Skalierungsschaltungsanordnung 26 umfassen kann, die mit der DSP-Schaltungsanordnung 60 wirkgekoppelt ist. Die Skalierungsschaltungsanordnung 26 kann eine Vorskalierungsschaltungsanordnung 102 umfassen, die umgesetzt ist zum Anpassen des Formats einer Menge von Eingängen (z.B. A0, A1, A2, A3, B0, B1, B2 und B3), und kann eine Nachskalierungsschaltungsanordnung 104 umfassen, die umgesetzt ist zum Anpassen des Formats eines durch die DSP-Schaltungsanordnung 60 produzierten Ausgangs. Noch spezieller kann die Vorskalierungsschaltungsanordnung 102 den Bereich eines Eingangs in die DSP-Schaltungsanordnung 60 anpassen durch, beispielsweise, Skalieren des Exponenten des Eingangs von einer ersten Anzahl von Bits auf eine zweite Anzahl von Bits. Ferner kann die Nachskalierungsschaltungsanordnung 104 den Bereich des Ausgangs der DSP-Schaltungsanordnung 60 anpassen durch, beispielsweise, Skalieren des Exponenten des Ausgangs auf eine erste Anzahl von Bits (z. B. die ursprüngliche Anzahl von Bits des Eingangs).
  • Wie dargestellt, kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 eine Eingangsschaltungsanordnung 106 umfassen, die eine Menge von Eingängen empfängt, die alle ein erstes Zahlenformat aufweisen (z. B. bfloat16). Dazu kann, da die dargestellte Eingangsschaltungsanordnung 62 umgesetzt ist, um Eingänge im Gleitkommaformat mit halber Genauigkeit zu empfangen, die Vorskalierungsschaltungsanordnung 102 die Exponenten (z. B. eA0, eA1, eA2, eA3, eB0, eB1, eB2, eB3 und eB4) von jedem der Menge von Eingängen (z.B. A0, A1, A2, A3, B0, B1, B2 bzw. B3) skalieren. Noch spezieller kann die Vorskalierungsschaltungsanordnung 102 den Exponenten eines Eingangs der Menge von Eingängen von acht Bits auf fünf Bits skalieren, um Überlauf während der durch die DSP-Schaltungsanordnung 60 umgesetzten arithmetischen Operationen zu verhindern. Beispielsweise umfasst die DSP-Schaltungsanordnung 60 eine Multiplikationsoperation (z. B. durchgeführt durch die Multiplizierer 64), die effektiv die entsprechenden Exponenten eines Paares der multiplizierten Eingänge (z. B. A0 und AB, A1 und B1, A2 und B2 sowie A3 und B3) summiert. Entsprechend, um Überlauf zu verringern und/oder zu verhindern, kann jede der Summen der entsprechenden Exponenten eines Paares von multiplizierten Eingängen skaliert werden, um nicht den maximalen in dem an der Eingangsschaltungsanordnung 62 erwarteten Zahlenformat (z. B. Gleitkomma mit halber Genauigkeit) darstellbaren Bereich zu überschreiten. Daher kann die Eingangsschaltungsanordnung 106 die Paare von Exponenten entsprechend den an der DSP-Schaltungsanordnung 60 multiplizierten Eingängen (z. B. A0 und B0, A1 und B1, A2 und B2, A3 und B3) führen, die an einem jeweiligen Addierer 103 (z. B. 103A, 103B, 103C, 103D) zu summieren sind, der umgesetzt sein kann, um ganzzahlige Werte zu summieren.
  • Die Vorskalierungsschaltungsanordnung 102 kann dann einen maximalen Wert (z. B. M) der paarweisen Summen der Exponenten unter Verwendung, beispielsweise, einer Vergleichsschaltungsanordnung 107 bestimmen. In einigen Ausführungsformen kann, beispielsweise, die Vorskalierungsschaltungsanordnung 102 eine Menge von Subtraktoren 108 und/oder Vergleichern umfassen, die umgesetzt sind, um Differenzen zwischen Paaren der berechneten Summen der Exponenten zu bestimmen. Entsprechend kann, wie dargestellt, ein erster Subtraktor 108A die Summen, die aus den niedrigstwertigen Eingängen resultieren, subtrahieren (z. B. die Summe der Exponenten von A0 und B0 von der Summe der Exponenten von A1 und B1 subtrahieren), und ein zweiter Subtraktor 108B kann die Summen, die aus den höchstwertigen Eingängen resultieren, subtrahieren (z. B. die Summe der Exponenten von A2 und B2 von der Summe der Exponenten von A3 und B3 subtrahieren). Ferner kann ein Ausgang des ersten Subtraktors 108A in einen ersten Multiplexer 110A (Mux) führen, der zwischen der Summe der Exponenten der ersten Menge von Eingängen (z. B. A0 und B0) oder der Summe der Exponenten der zweiten Menge von Eingängen (z. B. A1 und B1) basierend auf dem Ausgang auswählen kann. Daher kann der erste Mux 110A die maximale Summe zwischen den zwei Summen unter Verwendung der durch den ersten Subtraktor 108A bereitgestellten Differenz auswählen. In ähnlicher Weise kann ein zweiter Mux 110B zwischen der Summe der Exponenten der dritten Menge von Eingängen (z. B. A2 und B2) und der Summe der Exponenten der vierten Menge von Eingängen (z. B. A3 und B3) unter Verwendung der durch den zweiten Subtraktor 108B bereitgestellten Differenz zwischen den zwei Summen auswählen. Entsprechend kann, zum Bestimmen der maximalen Summe zwischen den durch den ersten Mux 110A und den zweiten Mux 110B ausgewählten Summen, die Vorskalierungsschaltungsanordnung 102 einen dritten Subtraktor 108C umfassen, der mit einem dritten Mux 110C wirkgekoppelt ist. Der dritte Subtraktor 108C kann die Differenz zwischen den entsprechenden Summen, ausgegeben durch den ersten Mux 110A und den zweiten Mux 110B, bestimmen. Der dritte Mux 110C kann dann die Differenz als ein Auswahlsignal zum Auswählen zwischen den entsprechenden Summen, ausgegeben durch den ersten Mux 110A und den zweiten Mux 110B, verwenden. Dazu kann der dritte Mux 110C den maximalen Wert (M) der Summen des entsprechenden Paares von Exponenten auswählen.
  • Unter Verwendung des maximalen Wertes (M) kann die Vorskalierungsschaltungsanordnung 102 einen Versatzwert (W) bestimmen. Entsprechend kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 einen zusätzlichen Subtraktor 108C umfassen, der den maximalen Wert (M) und eine ganze Zahl (z. B. ‚60‘) als Eingänge empfangen kann. In einigen Ausführungsformen kann die ganze Zahl, die in den Subtraktor 108C geführt wird, von dem durch die Eingangsschaltungsanordnung 62 der DSP-Schaltungsanordnung 60 erwarteten Zahlenformat (z. B. Gleitkommaformat mit halber Genauigkeit) und/oder vom internen Zahlenformat der DSP-Schaltungsanordnung 60 (z. B. FP16+++), wie oben Bezug nehmend auf 4 beschrieben, abhängig sein.
  • Beispielsweise wird, in der dargestellten Ausführungsform, die Eingangsschaltungsanordnung 62 umgesetzt zum Empfangen von Zahlen im Gleitkommaformat mit halber Genauigkeit, und die Multiplizierer 64 werden umgesetzt zum Ausgeben von Produkten entsprechend dem FP16+++-Format. Im Gleitkommaformat mit halber Genauigkeit ist der maximale beeinflusste Exponentenwert ‚30‘ (z. B. ‚15‘, summiert mit einem Beeinflussungswert von ‚15‘), sodass der maximale Wert der Summe von zwei beeinflussten Exponenten ‚60‘ ist (z. B. (15 + 15) + (15 + 15)). In bfloat16 ist allerdings der maximale beeinflusste Exponentenwert ‚254‘ (z.B. ‚127‘, summiert mit einem Beeinflussungswert von ‚127‘), und der maximale beeinflusste Wert der Summe von zwei Exponenten ist ‚508‘ (z.B. (127 + 127) + (127 + 127)). Entsprechend kann, zum Anpassen der Exponentenwerte von Eingängen in bfloat16 und/oder einem anderen von Gleitkomma mit halber Genauigkeit verschiedenen Format die maximale Summe (M) von zwei beeinflussten Exponenten um eine ganze Zahl auf ‚60‘ herunterskaliert werden (z. B. die maximale beeinflusste Summe von zwei Exponenten im Gleitkomma mit halber Genauigkeit). In der dargestellten Ausführungsform kann in Fällen, in denen die Mantisse eines durch einen Multiplizierer 64 ausgegebenen Produkts größer als oder gleich ‚2‘ ist, das Produkt einen maximalen beeinflussten Exponentenwert größer als die maximale Summe (M) (z. B. ‚60‘) haben. Beispielsweise kann der beeinflusste Exponent des Produkts ‚61‘ sein, was einen Überlauf des Bereichs von Gleitkomma mit halber Genauigkeit darstellt. Da aber das interne Zahlenformat der dargestellten DSP-Schaltungsanordnung 60 FP16+++ ist, was einen vergrößerten Bereich im Vergleich mit Gleitkomma mit halber Genauigkeit aufweist, kann der Überlauf verringert und/oder beseitigt werden.
  • Andererseits kann, in einigen Ausführungsformen, wie etwa, wenn das interne Zahlenformat mit dem Zahlenformat der Eingangsschaltungsanordnung 62 übereinstimmt, die ganze Zahl entsprechend einer alternativen Technik bestimmt werden. Beispielsweise kann, zumindest in dem Fall, bei dem das Zahlenformat der Eingangsschaltungsanordnung 62 und das interne Zahlenformat Gleitkomma mit halber Genauigkeit sind, die ganze Zahl teilweise basierend auf der Anzahl der im Addiererbaum 68 enthaltenen Addiererstufen bestimmt werden. Als ein veranschaulichendes Beispiel kann die ganze Zahl basierend auf der folgenden Gleichung bestimmt werden: Ganze Zahl = Beeinflussung*3 1 Addiererstufen ,
    Figure DE102019120838A1_0001
    wobei der Begriff „Beeinflussung“ die Beeinflussung entsprechend dem Bereich des internen Zahlenformats darstellt und der Begriff „Addiererstufen“ die Anzahl von Addiererstufen im Addiererbaum 68 darstellt. Da jede Addiererstufe den Exponenten um ein einzelnes Bit erhöhen kann, kann Subtrahieren der Anzahl von Addiererstufen Überlauf des Bereichs des Exponenten verringern und/oder eliminieren. Entsprechend kann, für den Beeinflussungswert von 15, der der Beeinflussung von Gleitkomma mit halber Genauigkeit entspricht, und den dargestellten Addiererbaum 68, der zwei Addiererstufen umfasst, der Wert ‚42‘ (z. B. 15*3-1-2) ausgewählt werden, um einem Exponentenwert (z. B. einer in die DSP-Schaltungsanordnung 60 eingegebenen oder durch diese bestimmten Variable) die Möglichkeit zu geben, zu wachsen (z. B. bis ‚45‘). Ferner kann, während die ganze Zahl oben als teilweise basierend auf dem Bereich von Gleitkomma mit halber Genauigkeit und/oder basierend auf dem Bereich von sowohl Gleitkomma mit halber Genauigkeit als auch FP16+++ bestimmt beschrieben wurde, eine beliebige geeignete ganze Zahl für ein anderes Zahlenformat oder eine Kombination von Zahlenformaten eingesetzt werden, sodass Bereichsüberlauf in nachfolgenden Berechnungen abgeschwächt wird. Daher sollen Ausführungsformen veranschaulichend sein, und nicht einschränkend.
  • Um den geeigneten Versatzwert (W) zu bestimmen, kann der zusätzliche Subtraktor 108D die ganze Zahl von dem maximalen Wert der Summen (M) subtrahieren. Entsprechend kann, mit dem durch den zusätzlichen Subtraktor 108C erzeugten Versatzwert (W), die Vorskalierungsschaltungsanordnung 102 jede der Summen von Exponenten auf einen geeigneten Bereich herunterskalieren, entsprechend dem in die DSP-Schaltungsanordnung 60 eingegebenen Zahlenformat (z. B. Gleitkommaformat mit halber Genauigkeit) und/oder dem internen Zahlenformat der DSP-Schaltungsanordnung 60. Insbesondere kann die Vorskalierungsschaltungsanordnung 102 den Versatzwert (W) von jeder der Summen der Exponenten subtrahieren, sodass die maximale Summe (M) der Exponenten auf einen geeigneten Bereich herunterskaliert wird, was den Bereichsüberlauf in der DSP-Schaltungsanordnung 60 verringern und/oder eliminieren kann, wie oben erörtert. Beispielsweise können, mit dem dargestellten Fall des Skalierens von Summen auf Gleitkommaexponenten mit halber Genauigkeit (z. B. 5-Bit-Exponenten), die Summen der Exponenten auf einen maximalen Wert von ‚60‘ skaliert werden.
  • Beginnend bei den skalierten Summen der Exponenten kann die Vorskalierungsschaltungsanordnung 102 dann einen neuen entsprechenden Exponenten für jeden Eingang (z. B. A3, A2, A1, A0, B3, B2, B1 und B0) unter Verwendung einer Exponentenanpassungsschaltungsanordnung 112 berechnen. Insbesondere kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 jede der skalierten Summen der Exponenten von einem 10-Bit-Wert in zwei 5-Bit-Werte aufteilen, wie dargestellt. Zum Bestimmen eines neuen entsprechenden Exponenten für einen Eingang kann die Vorskalierungsschaltungsanordnung 102 bestimmen, ob eine skalierte Summe eines bestimmten Paares von Exponenten gerade oder ungerade ist. Wenn die skalierte Summe gerade ist, kann die Vorskalierungsschaltungsanordnung die neuen Exponenten von jedem des Paares von Eingängen (z. B. A0 und B0) durch Rechtsverschieben der skalierten Summe ausgeben (z. B. durch Teilen der skalierten Summe durch zwei). Entsprechend kann in dem Fall, dass die Summe der Exponenten dem maximalen Wert (M) entspricht, der nachfolgend auf ‚60‘ (z. B. eine gerade Zahl) skaliert wurde, die Vorskalierungsschaltungsanordnung 10230‘ als den neuen Exponenten von jedem des Paares der entsprechenden Eingänge produzieren. Wenn, andererseits, die skalierte Summe ungerade ist, kann einer der Exponenten des Paares durch Rechtsverschieben der skalierten Summe bestimmt werden, und der andere Exponent kann bestimmt werden, indem ‚1‘ zu der rechtsverschobenen skalierten Summe addiert wird. Wenn ferner der skalierte Exponent negativ ist, was, in einigen Fällen, anzeigt, dass zumindest einer der ursprünglichen Eingänge ‚0‘ war, kann die Vorskalierungsschaltungsanordnung 102 einen der neuen Exponenten des Paares von Eingängen zwingen, ‚0‘ zu sein. Darüber hinaus wird, da die neuen Exponenten ausgeglichen sind, der Exponentenbereich der Eingänge mit halber Genauigkeit maximiert.
  • Entsprechend kann, für einen ersten Eingang (z. B. A0) eines Paares von Eingängen, die Vorskalierungsschaltungsanordnung 102 einen Mux 110 umfassen, der den Wert der skalierten Exponentensumme, geteilt durch zwei (z. B. die Bits [5:1], um ein Bit rechtsverschoben) oder ‚0‘ ausgeben kann, abhängig von einem durch ein ODER-Gatter 113 (z.B. einem logischen ODER-Gatter) bereitgestellten Auswahlsignal. Das ODER-Gatter 113 kann eines oder mehrere der höchstwertigen Bits (MSBs) der skalierten Exponentensumme (z. B. [9:6]) empfangen und kann das logische ODER der Bits bestimmen. Entsprechend kann der Ausgang des ODER-Gatters 113 darstellen, ob die skalierte Exponentensumme negativ ist. Daher kann, wie oben beschrieben, der Mux 110 eine ‚0‘ oder die skalierte Exponentensumme, geteilt durch zwei, ausgeben, basierend darauf, ob die skalierte Exponentensumme negativ ist.
  • Ferner kann, für einen zweiten Eingang (z. B. B0) des Paares von Eingängen, die Vorskalierungsschaltungsanordnung 102 das erste Bit (z.B. [0]) der skalierten Exponentensumme zu einem ersten Eingang eines Addierers 103E (z. B. eines ganzzahligen Addierers) führen und kann die folgenden vier Bits (z. B. [5:1]) zu einem zweiten Eingang des Addierers 103E führen. Wenn die skalierte Exponentensumme gerade ist, hat das erste Bit einen Wert von ‚0‘. Entsprechend gibt der Addierer 103E die vier Bits ([5:1]) aus, die aus ihrer ursprünglichen Bitposition um ein Bit rechtsverschoben wurden. Daher, wie oben beschrieben, gibt der Addierer 103E den Wert der skalierten Exponentensumme, geteilt durch zwei, als einen neuen Exponenten für den zweiten Eingang (z. B. B0) des Paares von Eingängen aus. Wenn allerdings die skalierte Exponentensumme ungerade ist, hat das erste Bit einen Wert von ‚1‘. Entsprechend summiert der Addierer 103E das erste Bit mit den vier Bits ([5:1]), die aus ihrer ursprünglichen Bitposition um ein Bit rechtsverschoben wurden. Daher, wie oben beschrieben, gibt der Addierer 103E ‚1‘ addiert zum Wert der skalierten Exponentensumme, geteilt durch zwei, als einen neuen Exponenten für den zweiten Eingang (z. B. B0) des Paares von Eingängen aus.
  • Wie hier beschrieben, werden die Exponenten von Eingängen durch die Vorskalierungsschaltungsanordnung 102 skaliert. Zusätzlich kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 die Bruchzahl eines Eingangs anpassen. In einigen Ausführungsformen kann, beispielsweise, die Bruchzahl des Eingangs sich in der Größe unterscheiden, verglichen mit dem an der Eingangsschaltungsanordnung 62 erwarteten Bruchzahlformat. Entsprechend kann die Vorskalierungsschaltungsanordnung 102 und/oder eine zusätzliche Schaltungsanordnung und/oder Logik die Bruchzahl mit einer geeigneten Anzahl von Bits mit Nullen auffüllen oder eine geeignete Anzahl von Bits von der Bruchzahl abschneiden, bevor der skalierte Eingang an der Eingangsschaltungsanordnung 62 empfangen wird. Darüber hinaus kann für jeden der Eingänge die entsprechende Bruchzahl des Eingangs so geführt werden, dass sie gleichzeitig mit dem entsprechenden neuen Exponenten des Eingangs an der Eingangsschaltungsanordnung 62 verfügbar ist, wie durch die Leitung 114 (z.B. Verkabelung und/oder elektrische Verbindung) dargestellt.
  • Wie oben Bezug nehmend auf 3 erörtert, kann die DSP-Schaltungsanordnung 60 dann jeden der skalierten Eingänge an Eingangsschaltungsanordnung 62 empfangen und kann eine Anzahl von arithmetischen Operationen auf den Eingängen durchführen. Noch spezieller kann die DSP-Schaltungsanordnung 60 Skalarproduktoperationen auf jedem der Eingänge durchführen und kann ein Ergebnis im Gleitkommaformat mit einfacher Genauigkeit ausgeben. Daher kann die Nachskalierungsschaltungsanordnung 104 eine Schaltungsanordnung und/oder Logik umfassen, die geeignet ist, um das Ergebnis vom Gleitkommaformat mit einfacher Genauigkeit auf ein anderes Format zu skalieren, wie etwa auf das ursprüngliche Format der an der Eingangsschaltungsanordnung 106 empfangenen Eingänge (z. B. bfloat16). Noch spezieller kann die Nachskalierungsschaltungsanordnung 104 eine Schaltungsanordnung und/oder Logik umfassen, die geeignet ist, um den Bereich des Ergebnisses zurück auf den ursprünglichen Bereich von an der Eingangsschaltungsanordnung 106 empfangenen Eingängen zu skalieren (z. B. bfloat16). Entsprechend kann die Nachskalierungsschaltungsanordnung 104 den Exponenten des Ergebnisses (eSUM') zu einem ersten Eingang eines Addierers 103F führen. Ferner kann die Nachskalierungsschaltungsanordnung 104 einen Ergebnisversatzwert (Waus) zu einem zweiten Eingang des Addierers 66 führen. Um den Ergebnisversatzwert (Waus) zu bestimmen, kann die Nachskalierungsschaltungsanordnung 104 den maximalen Summenwert (M) zu einem Subtraktor 108 führen. Der Subtraktor kann eine ganze Zahl (z. B. ‚284‘) vom maximalen Summenwert (M) subtrahieren, um den Ergebnisversatzwert (Waus) zu erzeugen. Da das Ziel des Ergebnisversatzwerts (Waus) ist, den Exponenten des Ergebnisses wieder zurück auf den ursprünglichen Bereich der an der Eingangsschaltungsanordnung 106 empfangenen Eingänge zu skalieren, kann die ganze Zahl teilweise auf der Beeinflussung des ursprünglichen Eingangsformats, der in den Subtraktor 108D eingegebenen ganzen Zahl (z. B. der ganzen Zahl, die zum Abwärtsskalieren der Exponenten der Eingänge in die Eingangsschaltungsanordnung 106 verwendet wird), der Beeinflussung des Formats der an der Eingangsschaltungsanordnung 62 empfangenen Eingänge und/oder einer geeigneten Kombination daraus basieren. Beispielsweise kann, für die dargestellte Ausführungsform, das Doppelte der Beeinflussung des ursprünglichen Eingangsformats (z. B. 2*127 = 254) mit dem Doppelten der Beeinflussung des Formats der an der Eingangsschaltungsanordnung 62 (z.B. 2*15 = 30) empfangenen Eingänge summiert werden, subtrahiert von dem ganzzahligen Eingang in den Subtraktor 108D (z.B. 60), um einen ganzzahligen Wert von ‚284‘ zu produzieren (z. B. (2*127) + (60-(2*15)) = 284). Ferner kann in Ausführungsformen, bei denen ein unterschiedlicher ganzzahliger Wert am Subtraktor 108D angewendet wird, der von einem oder mehreren in der DSP-Schaltungsanordnung 60 umgesetzten Zahlenformaten abhängen kann, der auf den Subtraktor 108 der Nachskalierungsschaltungsanordnung 104 angewendete ganzzahlige Wert entsprechend angepasst werden. Beispielsweise kann in dem oben beschriebenen Beispiel, bei dem die auf den Subtraktor 108D angewendete ganze Zahl ‚42‘ ist, der ganzzahlige Wert von ‚266‘ (z. B. (2*127) + (42-(2*15)) = 266) zum Subtraktor 108 der Nachskalierungsschaltungsanordnung 104 geführt werden.
  • Obwohl nicht gezeigt, kann die Nachskalierungsschaltungsanordnung 104 zusätzlich Schaltungsanordnungen und/oder Logik zum Behandeln der Fälle umfassen, bei denen der Exponent des Ergebnisses (eSUM) ‚0‘ ist und/oder bei denen der Exponent (eSUM) der skalierten Summe (S) negativ oder größer als oder gleich einem durch das Ausgangsformat erlaubten maximalen Exponentenwert ist. Wenn der Exponent des Ergebnisses (eSUM') ‚0‘ ist, kann der Ergebnisversatzwert (Waus) auf ‚0‘ ausgeräumt werden, um den Wert des Exponenten (eSUM) der skalierten Summe (S) bei ‚0‘ zu halten. Entsprechend kann die Nachskalierungsschaltungsanordnung 104, beispielsweise, ein Logikgatter und/oder einen Multiplexer 110 umfassen, umgesetzt zum Bestimmen, ob der Exponent des Ergebnisses (eSUM') ‚0‘ ist, und zum Auswählen zwischen dem Ergebnisversatzwert (Waus) und ‚0‘ basierend auf der Bestimmung. Wenn der beeinflusste Exponent der skalierten Summe (eSUM) negativ ist, kann eine Schaltungsanordnung, wie etwa ein Multiplexer 110, ‚0‘ zum Exponenten der skalierten Summe (eSUM) führen. Ferner kann die Nachskalierungsschaltungsanordnung 104 eine Schaltungsanordnung und/oder Logik zum Behandeln des Falles umfassen, wenn der Exponent der skalierten Summe (eSUM) gleich dem maximalen Exponentenwert des Formats (z. B. Gleitkomma mit einfacher Genauigkeit) des Ausgangs der DSP-Schaltungsanordnung 60 ist oder diesen überschreitet. Wenn, beispielsweise, in der dargestellten Ausführungsform, der Exponent der skalierten Summe (eSUM) größer als oder gleich dem maximalen Exponentenwert von Gleitkomma mit einfacher Genauigkeit ist (z. B. ‚255‘), kann eine Schaltungsanordnung (nicht gezeigt), wie etwa ein Multiplexer 110, den Exponenten der skalierten Summe (eSUM) weiterleiten, um der Exponent (eSUM) der skalierten Summe zu sein, und kann den Wert der Bruchzahl der skalierten Summe (fSUM) auf Null ausräumen.
  • Ferner können, während die dargestellte Skalierungsschaltungsanordnung 26 geeignet ist, um das Format eines Eingangs in die DSP-Schaltungsanordnung 60 und das Format eines Ausgangs von der DSP-Schaltungsanordnung anzupassen, andere Ausführungsformen nur den Eingang oder den Ausgang skalieren. Darüber hinaus kann die Vorskalierungsschaltungsanordnung eine beliebige geeignete Schaltungsanordnung und/oder Logik zum Bestimmen des maximalen Werts (M) umfassen. Beispielsweise kann, zusätzlich oder alternativ zu der dargestellten Kombination von Subtraktoren 108 und Multiplexern 110, die Vorskalierungsschaltungsanordnung 102 unterschiedliche Schaltungsanordnungen und/oder Logik umfassen, wie etwa einen Vergleicher, umgesetzt zum Bestimmen des maximalen Werts (M). Ferner kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 umgesetzt sein, um einen Eingang aus einem von bfloatl6 verschiedenen Zahlenformat umzuwandeln, und/oder die Nachskalierungsschaltungsanordnung 104 kann umgesetzt sein, um einen Ausgang in das von bfloat16 verschiedene Zahlenformat umzuwandeln. Entsprechend können die ganzen Zahlen, die zum Bestimmen des Versatzwerts (W) und des Ergebnisversatzwerts (Waus) verwendet werden, angepasst werden. In einigen Ausführungsformen kann, beispielsweise, jede der ganzen Zahlen basierend auf einem Zahlenformat der Eingänge in die Vorskalierungsschaltungsanordnung und dem erwarteten Zahlenformat der an der DSP-Schaltungsanordnung 60 empfangenen Eingänge programmiert werden. Entsprechend können die ganzen Zahlen in einem programmierbaren Modusregister und/oder einem geeigneten Speicherort gespeichert werden und können basierend auf der Umsetzung der DSP-Schaltungsanordnung 60 und/oder dem Format der Eingänge in die Vorskalierungsschaltungsanordnung 102 aktualisiert werden. In jedem Fall sollen die hier beschriebenen Ausführungsformen veranschaulichend sein, und nicht einschränkend.
  • Jetzt Bezug nehmend auf 6 wird ein Beispiel eines Prozesses 140 zum Anpassen der Darstellung (z. B. Format) einer Zahl vor und nach der Verarbeitung dargestellt. Im Allgemeinen umfasst der Prozess 140 Skalieren einer Menge von ursprünglichen Eingängen in die DSP-Schaltungsanordnung 60 von einem ersten Format auf ein zweites Format (Prozessblock 142), Durchführen einer Operation auf den skalierten Eingängen (Prozessblock 144) und Skalieren eines durch die DSP-Schaltungsanordnung produzierten Ergebnisses auf das erste Format (Prozessblock 146).
  • Obwohl die folgende Beschreibung des Prozesses 140 in einer bestimmten Reihenfolge beschrieben wird, die eine bestimmte Ausführungsform darstellt, ist anzumerken, dass der Prozess 140 in jeder geeigneten Reihenfolge durchgeführt werden kann. Zusätzlich können Ausführungsformen des Prozesses 140 Prozessblöcke auslassen und/oder geeignete zusätzliche Prozessblöcke umfassen. Während der Prozess 140 als durch die Skalierungsschaltungsanordnung 26 (z. B. die Vorskalierungsschaltungsanordnung 102 und die Nachskalierungsschaltungsanordnung 104) und die DSP-Schaltungsanordnung 60 umgesetzt beschrieben wird, kann ein Teil des Prozesses 140 durch eine beliebige geeignete Schaltungsanordnung und/oder Logik umgesetzt werden. Beispielsweise kann, in einigen Ausführungsformen, der Prozess 140 zumindest teilweise durch Ausführen von Anweisungen umgesetzt werden, die in einem greifbaren, nicht-flüchtigen, computerlesbaren Medium, wie etwa einem Speicher, unter Verwendung von Verarbeitungsschaltungsanordnungen, wie etwa einem oder mehreren Prozessoren, gespeichert sind.
  • Wie dargestellt, kann, in einigen Ausführungsformen, der Prozess 140 beginnen durch Skalieren einer Menge von Eingängen in die DSP-Schaltungsanordnung 60 von einem ersten Format auf ein zweites Format (Prozessblock 142). Beispielsweise kann ein Eingang mit einem bfloat16-Gleitkommaformat (z. B. ein 1-Bit-Vorzeichenfeld, ein 8-Bit-Exponentenfeld und ein 7-Bit-Bruchzahlfeld) auf Gleitkommaformat mit halber Genauigkeit skaliert werden. Während der Beispieleingang als von bfloat16 auf halbe Genauigkeit skaliert beschrieben wird, kann ein beliebiges geeignetes Eingangsformat auf jedes geeignete andere Format skaliert werden. Beispielsweise kann der Eingang als einfache Genauigkeit, doppelte Genauigkeit oder ein benutzerspezifisches Zahlenformat, unter anderen Formaten, empfangen werden, und kann auf halbe Genauigkeit, bfloat16, ein anderes benutzerspezifisches Zahlenformat und/oder ähnliches skaliert werden.
  • Jetzt Bezug nehmend auf 7 wird ein Beispiel eines Prozesses 160 zum Skalieren der Menge von Eingängen von einem ersten Format auf ein zweites Format dargestellt. Im Allgemeinen umfasst der Prozess 160 Summieren der Exponenten für jedes Paar von entsprechenden ursprünglichen Eingängen (Prozessblock 162), Bestimmen eines maximalen Werts (M) der Summen (Prozessblock 164), Berechnen eines Versatzwerts (W) unter Verwendung des maximalen Werts (M) der Summen (Prozessblock 166), Anpassen der Summen unter Verwendung des Versatzwerts (W) (Prozessblock 168), Bestimmen eines entsprechenden neuen Exponenten für jeden ursprünglichen Eingang unter Verwendung der jeweiligen angepassten Summe (Prozessblock 170), und Bilden eines entsprechenden skalierten Eingangs im zweiten Format für jeden ursprünglichen Eingang unter Verwendung des jeweiligen neuen Exponenten (Prozessblock 172).
  • Obwohl die folgende Beschreibung des Prozesses 160 in einer bestimmten Reihenfolge beschrieben wird, die eine bestimmte Ausführungsform darstellt, ist anzumerken, dass der Prozess 160 in jeder geeigneten Reihenfolge durchgeführt werden kann. Zusätzlich können Ausführungsformen des Prozesses 160 Prozessblöcke auslassen und/oder geeignete zusätzliche Prozessblöcke umfassen. Während der Prozess 160 als durch die Vorskalierungsschaltungsanordnung 102 umgesetzt beschrieben wird, kann ein Teil des Prozesses 160 durch eine beliebige geeignete Schaltungsanordnung und/oder Logik umgesetzt werden. Beispielsweise kann, in einigen Ausführungsformen, der Prozess 160 zumindest teilweise durch Ausführen von Anweisungen umgesetzt werden, die in einem greifbaren, nicht-flüchtigen, computerlesbaren Medium, wie etwa einem Speicher, unter Verwendung von Verarbeitungsschaltungsanordnungen, wie etwa einem oder mehreren Prozessoren, gespeichert sind.
  • Wie dargestellt, kann, in einigen Ausführungsformen, der Prozess 160 beginnen durch Summieren der Exponenten von jedem Paar von ursprünglichen Eingängen (Prozessblock 162). Wie oben beschrieben, kann eine Menge von Addierern 103 in, beispielsweise, der Vorskalierungsschaltungsanordnung 102 Paare von Eingängen entsprechend den Skalarprodukteingangspaaren summieren. Beispielsweise kann die Menge von Addierern 103 die Exponenten eines ersten Eingangs (z. B. A0) und eines zweiten Eingangs (z. B. B0) summieren, die an der DSP-Schaltungsanordnung 60 miteinander multipliziert werden.
  • Der dargestellte Prozess 160 fährt dann mit Bestimmen eines maximalen Werts der Summen (M) der Exponenten von jedem Paar von Eingängen fort (Prozessblock 164). Um den maximalen Wert (M) unter den Summen der Exponenten zu bestimmen, können die Summen miteinander verglichen werden. Entsprechend kann, in einigen Ausführungsformen, ein Subtraktor 108 die Differenz zwischen einem Paar von Summen bestimmen. Das Vorzeichen der durch den Subtraktor 108 bestimmten Differenz kann dann verwendet werden, um die Summe auszuwählen, die einen höheren Wert aufweist, beispielsweise, einen Mux 110. Ferner kann eine beliebige geeignete Anzahl von Subtraktoren 108 und Multiplexern 110 in Reihe (z.B. sequenziell) und/oder parallel verwendet werden, um eine geeignete Anzahl von Vergleichen zum Bestimmen des maximalen Werts der Summen (M) durchzuführen. Zusätzlich oder alternativ können die Exponentensummen durch andere geeignete Logik und/oder Schaltungsanordnungen verglichen werden, um den maximalen Wert der Summen (M) zu identifizieren.
  • Der identifizierte maximale Wert der Summen (M) kann dann verwendet werden, um den Versatzwert (W) zu berechnen (Prozessblock 166). Der Versatzwert (W) kann verwendet werden, um die Summen von Exponenten basierend auf dem Bereich des durch die Eingangsschaltungsanordnung 62 der DSP-Schaltungsanordnung 60 erwarteten Zahlenformats (z. B. halbe Genauigkeit) und/oder dem internen Zahlenformat der DSP-Schaltungsanordnung 60 zu skalieren. Entsprechend kann, in einigen Ausführungsformen, der Versatzwert (W) durch Subtrahieren eines ganzzahligen Werts vom maximalen Wert (M) unter Verwendung eines Subtraktors 108D berechnet werden. Der ganzzahlige Wert kann die Summe der maximalen beeinflussten Exponentenwerte des Bereichs des Zahlenformats der Eingangsschaltungsanordnung 62 darstellen. Daher kann, um die Eingänge auf ein Gleitkommaformat mit halber Genauigkeit zu skalieren, ein ganzzahliger Wert von ‚60‘ (z. B. 30+30) verwendet werden. Zusätzlich oder alternativ kann der ganzzahlige Wert ausgewählt werden, um Bereichsüberlauf während Operationen, die in der DSP-Schaltungsanordnung 60 umgesetzt sind, zu verringern oder zu eliminieren.
  • Nach Berechnen des Versatzwerts (W) können die Summen der Exponenten der Paare von Eingängen unter Verwendung des Versatzwerts angepasst (z. B. skaliert) werden (Prozessblock 168). Noch spezieller kann der Versatzwert (W) von jeder der Summen der Exponenten der Paare von Eingängen subtrahiert werden. Als ein Ergebnis kann die Summe der Exponenten entsprechend dem maximalen Wert (M) der Summen auf einen geeigneten Bereich verringert werden, um Bereichsüberlauf in der DSP-Schaltungsanordnung 60 abzuschwächen. Beispielsweise kann in dem Fall, dass das zweite Format halbe Genauigkeit ist, die Summe von Exponenten entsprechend dem maximalen Wert (M) abwärts auf’60‘ angepasst werden.
  • Unter Verwendung einer jeweiligen angepassten Summe kann dann ein entsprechender neuer Exponent für jeden ursprünglichen Eingang bestimmt werden (Prozessblock 170). Für einen ersten Eingang und einen zweiten Eingang, wenn eine angepasste Summe der Exponenten des ersten Eingangs und des zweiten Eingangs gerade ist, können die neuen Exponenten von jedem aus dem ersten Eingang und dem zweiten Eingang durch Teilen der angepassten Summe durch zwei bestimmt werden. Entsprechend kann der angepasste Exponent des ersten Eingangs gleich dem angepassten Exponenten des zweiten Eingangs sein. Wenn andererseits die angepasste Summe ungerade ist, kann der angepasste Exponent des ersten Eingangs bestimmt werden, indem der Boden der angepassten Summe genommen wird, geteilt durch zwei, und der angepasste Exponent des zweiten Eingangs kann bestimmt werden, indem der Boden des angepassten Exponenten genommen wird, geteilt durch zwei, und danach ‚1‘ addiert wird. Ferner kann, wenn die angepasste Summe negativ ist (z. B. kleiner als ‚0‘), der erste Eingang auf’0‘ gezwungen werden.
  • Nach Bestimmen eines neuen Exponenten für jeden der ursprünglichen Eingänge kann eine Menge von skalierten Eingängen unter Verwendung der entsprechenden neuen Exponenten gebildet werden (Prozessblock 172). Noch spezieller können die jeweiligen verbleibenden Bits (z. B. Vorzeichenbit und/oder die Mantisse) jedes Eingangs mit dem entsprechenden neuen Exponenten zusammengeführt werden, um einen entsprechenden skalierten Eingang im zweiten Zahlenformat zu bilden. In einigen Ausführungsformen, wenn die Genauigkeit (z. B. Bitbreite) der Mantisse nicht mit der Genauigkeit des zweiten Zahlenformats übereinstimmt, kann die Mantisse, wie angemessen, abgeschnitten oder mit Nullen aufgefüllt werden. Beispielsweise kann Skalieren eines Eingangs von bfloat16 auf halbe Genauigkeit Auffüllen der Mantisse mit Nullen von sieben Bits bis zehn Bits beinhalten. Ferner kann durch Zusammenführen der verbleibenden Bits, wie etwa des Vorzeichenbits und der Mantisse, mit einem entsprechenden neuen Exponenten, das Format von jedem der skalierten Eingänge zum Eingeben in die DSP-Schaltungsanordnung 60 geeignet sein.
  • Jetzt zurückkehrend zu 6 fährt die dargestellte Ausführungsform des Prozesses 140 dann mit Durchführen einer Operation auf den skalierten Eingängen fort (Prozessblock 144). In einigen Ausführungsformen beinhaltet die Operation eine Skalarproduktoperation. Beispielsweise kann, nach Zusammenführen der verbleibenden Bits jedes Eingangs mit dem entsprechenden neuen Eingang im zweiten Zahlenformat, die Eingangsschaltungsanordnung 62 die skalierten Eingänge in die DSP-Schaltungsanordnung 60 führen, die ein Skalarprodukt unter Verwendung der skalierten Eingänge bestimmen kann.
  • Die auf den Eingängen durchgeführte Operation kann ein Ergebnis produzieren, das im zweiten Zahlenformat oder in einem dritten Zahlenformat, wie etwa einfache Genauigkeit, dargestellt werden kann. Um beispielsweise Überlauf zu verringern, der aus der Summierung von mehreren Operanden mit halber Genauigkeit resultiert, können, in einigen Ausführungsformen, ein oder mehrere Addierer mit einfacher Genauigkeit und/oder kombinatorische Schaltungsanordnungen mit einfacher Genauigkeit verwendet werden, um ein Ergebnis mit einfacher Genauigkeit zu produzieren. Entsprechend kann das Ergebnis der Operation auf das erste Format (z. B. das ursprüngliche Format der Eingänge) skaliert werden (Prozessblock 146). In einigen Ausführungsformen kann Skalieren des Ergebnisses auf das erste Format Skalieren des Bereichs des Ergebnisses zurück auf den ursprünglichen Bereich des ersten Formats umfassen. Entsprechend kann Skalieren des Ergebnisses Bestimmen eines Ergebnisversatzes (Waus) unter Verwendung des maximalen Werts (M) der Summen der Exponenten und einer ganzen Zahl beinhalten. Beispielsweise kann der Ergebnisversatz (Waus) durch Subtrahieren einer ganzen Zahl vom maximalen Wert (M) der Summen bestimmt werden. Die ganze Zahl kann basierend auf dem Format der Eingänge (z. B. dem ersten Format), dem an der Eingangsschaltungsanordnung 62 der DSP-Schaltungsanordnung 60 erwarteten Format (z. B. dem zweiten Format), dem internen Zahlenformat der DSP-Schaltungsanordnung 60 oder einer geeigneten Kombination daraus bestimmt und/oder programmiert werden. Wenn ferner der Exponent nicht null ist, kann der Ergebnisversatz (Waus) mit dem Exponenten des Ergebnisses summiert werden, um den Exponenten zu skalieren. Wenn der Exponent null ist, kann der Exponent mit null summiert werden und/oder kann eine Summierungsoperation umgehen, sodass der Exponent null bleibt. Entsprechend, während die Operation in einem anderen Format durchgeführt wird, kann das Format des Ausgangs von der DSP-Schaltungsanordnung 60 durch, beispielsweise, die Nachskalierungsschaltungsanordnung 104 an das Format der Eingänge angepasst werden. Das heißt, beispielsweise, dass die Zahlendarstellung der Eingänge vor und nach Verarbeitung angepasst werden kann, sodass Operationen, die im ersten Format durchgeführt werden, durch Operationen, die in einem anderen Format durchgeführt werden, emuliert werden können.
  • Jetzt Bezug nehmend auf 8 können, während die hier beschriebene DSP-Schaltungsanordnung 60 mit vier Multiplizierern 64 umgesetzt ist (z. B. umgesetzt zum Empfangen von bis zu acht unabhängigen Eingängen), die hier beschriebenen Techniken auf größere Multipliziererstrukturen (z. B. Skalarproduktstrukturen) angewendet werden, wie etwa die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180. Entsprechend kann, in einigen Ausführungsformen, die Vorskalierungsschaltungsanordnung 102 eine zusätzliche Eingangsschaltungsanordnung 106 umfassen. Ferner können, da die Vorskalierungsschaltungsanordnung 102 den maximalen Wert der Summen (M) von Paaren von Exponenten basierend auf jedem der Eingänge der Vorskalierungsschaltungsanordnung 102 bestimmen kann, die Summen der Paare von Exponenten entsprechend der zusätzlichen Eingangsschaltungsanordnung 106 verwendet werden, um den maximalen Wert der Summen (M) zu bestimmen.
  • Beispielsweise wird, in der dargestellten Ausführungsform aus 8, die Vorskalierungsschaltungsanordnung 102 umgesetzt, um zweiunddreißig Eingänge (z.B. zwei Vektoren (A und B) von sechzehn Eingängen) zu empfangen. Daher kann die Vorskalierungsschaltungsanordnung 102 den maximalen Wert (M) von sechzehn Summen von Paaren von Exponenten bestimmen. Wie oben beschrieben, kann die Vorskalierungsschaltungsanordnung 102 dann jeden der zweiunddreißig Eingänge unter Verwendung von zumindest einem Versatzwert (W) skalieren, der unter Verwendung des maximalen Werts (M) bestimmt wird.
  • Wie ferner dargestellt, können die skalierten Eingänge in Gruppen zu einer geeigneten Anzahl an DSP-Schaltungsanordnungen 60 geführt werden. Beispielsweise können die skalierten Eingänge in Gruppen von acht zu den DSP-Schaltungsanordnungen 60 mit einer Menge von vier Multiplizierern geführt werden. Zusätzlich oder alternativ können die DSP-Schaltungsanordnungen 60 mit einer größeren oder kleineren Anzahl an Multiplizierern 64 umgesetzt werden, was die Anzahl von Gruppen und/oder die Anzahl von in jeder Gruppe enthaltenen Eingängen, die zu den DSP-Schaltungsanordnungen 60 geführt werden, verändern kann. Jede DSP-Schaltungsanordnung 60 kann dann einen Teil des abschließenden Skalarprodukts bestimmen. Beispielsweise kann eine DSP-Schaltungsanordnung 60 ein erstes Produkt eines ersten Paares von Eingängen bestimmen, kann ein zweites Produkt eines zweiten Paares von Eingängen bestimmen und kann eine Summe des ersten Produkts und des zweiten Produkts ausgeben.
  • Um das abschließende Ergebnis des Skalarprodukts der Eingänge zu erzeugen, kann der Ausgang von jeder der DSP-Schaltungsanordnungen 60 summiert werden. Entsprechend kann, in einigen Ausführungsformen, die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 einen oder mehrere Addierer 66 umfassen, die in einem Addiererbaum 68 strukturiert sein können, umgesetzt zum Summieren der Ausgänge der DSP-Schaltungsanordnungen 60. Ferner können, da jede der DSP-Schaltungsanordnungen 60 einen Gleitkommaausgang mit einfacher Genauigkeit produzieren kann, die Addierer 66 umgesetzt sein, um Gleitkommaeingänge mit einfacher Genauigkeit zu addieren und eine Gleitkommasumme mit einfacher Genauigkeit zu produzieren. Entsprechend kann ein abschließendes Skalarprodukt, das aus der Summe von jedem der Ausgänge der DSP-Schaltungsanordnungen 60 resultiert, als eine Gleitkommazahl mit einfacher Genauigkeit formatiert werden.
  • Dazu kann die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 die Nachskalierungsschaltungsanordnung 104 zum Skalieren des abschließenden Skalarprodukts umfassen. Wie dargestellt, kann, beispielsweise, das abschließende Skalarprodukt von Gleitkommaformat mit einfacher Genauigkeit auf bfloat16 skaliert werden. Dazu kann die erweiterte Multipliziererstruktur einen Ergebnisversatzwert (Waus) zur Nachskalierungsschaltungsanordnung 104 führen. Wie oben beschrieben, kann die Nachskalierungsschaltungsanordnung 104 den Ergebnisversatzwert (Waus) verwenden, um den Exponenten des abschließenden Skalarprodukts zurück auf den ursprünglichen Bereich der Eingänge in die Vorskalierungsschaltungsanordnung 102 zu skalieren. Zum Bestimmen des Ergebnisversatzwerts (Waus) kann der an der Vorskalierungsschaltungsanordnung 102 bestimmte maximale Summenwert (M) zu einem Subtraktor 108 geführt werden. Der Subtraktor kann eine ganze Zahl (z. B. ‚284‘), die basierend auf dem ersten Format (z. B. bfloat16), dem zweiten Format (z. B. Gleitkomma mit halber Genauigkeit), einem internen Zahlenformat der DSP-Schaltungsanordnungen 60 (z. B. FP16+++) oder einer Kombination daraus bestimmt wird, vom maximalen Summenwert (M) subtrahieren, um den Ergebnisversatzwert (Waus) zu erzeugen.
  • Obwohl die dargestellte Ausführungsform der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 umgesetzt ist, um bfloat16-Eingänge zu empfangen, kann die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 umgesetzt sein, um ein beliebiges geeignetes Zahlenformat zu empfangen, wie etwa Gleitkomma mit halber Genauigkeit, Gleitkomma mit einfacher Genauigkeit und/oder ein Format mit erweiterter Genauigkeit. Ferner kann, wie oben beschrieben, die DSP-Schaltungsanordnung 60 umgesetzt sein, um ein beliebiges geeignetes Format zu empfangen. Entsprechend kann die Vorskalierungsschaltungsanordnung 102 der erweiterten Multipliziererstruktur umgesetzt sein, um das Format eines empfangenen Eingangs an das für die DSP-Schaltungsanordnung 60 geeignete Format anzupassen, wie etwa Gleitkomma mit halber Genauigkeit, Gleitkomma mit einfacher Genauigkeit und/oder ähnliches. Ferner kann die Nachskalierungsschaltungsanordnung 104 umgesetzt sein, um das abschließende Skalarprodukt an ein beliebiges Format entsprechend dem Format der durch die Vorskalierungsschaltungsanordnung 102 empfangenen Eingänge anzupassen. Daher sollen die hier beschriebenen Ausführungsformen veranschaulichend sein, und nicht einschränkend.
  • Darüber hinaus können, in einigen Ausführungsformen, die hier beschriebenen Techniken rekursiv umgesetzt sein. Beispielsweise kann, in einigen Ausführungsformen, der Addiererbaum 68 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 durch eine oder mehrere hierarchische Stufen von zusätzlichen Emulationsschaltungsanordnungen für arithmetische Operationen 100 und/oder zusätzlichen Emulationsschaltungsanordnungen für erweiterte arithmetische Operationen 180 ersetzt werden. Entsprechend können, anstatt die Ausgänge der DSP-Schaltungsanordnung 60 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 zu summieren, die Ausgänge skaliert und zu zusätzlichen Emulationsschaltungsanordnungen für arithmetische Operationen 100 geführt werden. Noch spezieller kann die Nachskalierungsschaltungsanordnung 104 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 jeden der Ausgänge der dargestellten DSP-Schaltungsanordnungen 60 an den ursprünglichen Bereich und/oder das Zahlenformat (z.B. bfloat16) der Eingänge in die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 anpassen, und die skalierten Ausgänge können zu der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 geführt werden. Die zusätzliche Emulationsschaltungsanordnung für arithmetische Operationen 100 kann, wie oben Bezug nehmend auf 5 beschrieben, eine Vorskalierungsschaltungsanordnung 102 umfassen, die geeignet ist, jeden der skalierten Ausgänge auf ein Zahlenformat (z. B. Gleitkomma mit halber Genauigkeit) zu skalieren, das für eine DSP-Schaltungsanordnung 60 der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 geeignet ist. Das für die DSP-Schaltungsanordnung 60 der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 geeignete Zahlenformat kann das gleiche oder ein anderes im Vergleich mit dem für die DSP-Schaltungsanordnung 60 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 geeigneten Zahlenformat sein.
  • Die DSP-Schaltungsanordnung 60 kann dann eine oder mehrere arithmetische Operationen auf den skalierten Ausgängen durchführen. Die eine oder mehreren arithmetischen Operationen können die gleichen oder unterschiedliche sein im Vergleich mit der einen oder den mehreren arithmetischen Operationen, die durch die DSP-Schaltungsanordnung 60 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 durchgeführt werden. Beispielsweise kann die DSP-Schaltungsanordnung 60 ein Skalarprodukt und/oder eine zusätzliche MAC-Operation berechnen. Darüber hinaus umfasst die hier beschriebene DSP-Schaltungsanordnung 60 acht unabhängige Eingänge. Entsprechend kann die Hälfte der Eingänge der DSP-Schaltungsanordnung 60 eingesetzt werden, um arithmetische Operationen auf den Eingängen der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 durchzuführen. Alternativ kann eine Ausführungsform der DSP-Schaltungsanordnung 60, umgesetzt mit vier unabhängigen Eingängen (z. B. Eingangsschaltungsanordnung 62), in der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 enthalten sein.
  • Die zusätzliche Emulationsschaltungsanordnung für arithmetische Operationen 100 kann, unter Verwendung der Nachskalierungsschaltungsanordnung 104, den Ausgang der DSP-Schaltungsanordnung 60 zurück auf das ursprüngliche Format (z. B. bfloat16) skalieren, das an der Vorskalierungsschaltungsanordnung 102 der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 empfangen wird. In einigen Ausführungsformen kann der skalierte Ausgang der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 das abschließende Ergebnis einer Reihe von einer oder mehreren rekursiven arithmetischen Operationen darstellen, die an einer oder mehreren Emulationsschaltungsanordnungen für arithmetische Operationen 100 und/oder einer Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 durchgeführt werden. Alternativ kann dann der skalierte Ausgang der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen in eine andere Schaltungsanordnung für arithmetische Operationen 100 einspeisen.
  • Ferner können, anstatt vor dem Führen der Ausgänge der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 die Ausgänge der DSP-Schaltungsanordnungen 60 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 auf das ursprüngliche Format der Eingänge in die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 (z.B. bfloat16) zu skalieren, die Ausgänge direkt zu der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 geführt werden. In solchen Fällen kann die zusätzliche Emulationsschaltungsanordnung für arithmetische Operationen 100 dann die Ausgänge vom, beispielsweise, Gleitkommaformat mit einfacher Genauigkeit auf ein Format (z. B. Gleitkomma mit halber Genauigkeit) skalieren, das für die DSP-Schaltungsanordnung 60 der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 geeignet ist. Ferner kann der Ausgang der DSP-Schaltungsanordnung 60 durch die Nachskalierungsschaltungsanordnung 104 der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 zurück auf das Format (z.B. Gleitkomma mit einfacher Genauigkeit) skaliert werden, das durch die DSP-Schaltungsanordnungen 60 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 ausgegeben wird. Entsprechend kann die Nachskalierungsschaltungsanordnung 104 der Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 den Ausgang der zusätzlichen Emulationsschaltungsanordnung für arithmetische Operationen 100 auf das Format der Eingänge in die Emulationsschaltungsanordnung für erweiterte arithmetische Operationen 180 skalieren (z. B. vom Gleitkommaformat mit einfacher Genauigkeit auf bfloat16).
  • Ferner kann die integrierte Schaltungsvorrichtung 12 ein Datenverarbeitungssystem oder eine Komponente eines solchen sein. Beispielsweise kann die integrierte Schaltungsvorrichtung 12 eine Komponente eines Datenverarbeitungssystems 200 sein, wie in 9 gezeigt. Das Datenverarbeitungssystem 200 kann einen Hostprozessor 202, eine Speicher- und/oder Datenspeicherschaltungsanordnung 204 und eine Netzwerkschnittstelle 206 umfassen. Das Datenverarbeitungssystem 200 kann mehr oder weniger Komponenten umfassen (z. B. elektronische Anzeige, Benutzerschnittstellenstrukturen, anwendungsspezifische integrierte Schaltungen (ASICs)). Der Hostprozessor 202 kann einen beliebigen geeigneten Prozessor umfassen, wie etwa einen INTEL® Xeon® Prozessor oder einen Prozessor mit reduzierten Anweisungen (z. B. einen Computer mit reduziertem Befehlssatz (RISC), einen ARM-Prozessor (Advanced RISC Machine)), der eine Datenverarbeitungsanforderung für das Datenverarbeitungssystem 200 verwalten kann (z. B. zum Durchführen von Verschlüsselung, Entschlüsselung, Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbanksuchranking, Bioinformatik, Netzwerksicherheitsmustererkennung, Raumnavigation oder ähnliches). Die Speicher- und/oder Datenspeicherschaltungsanordnungen 204 können Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), eine oder mehrere Festplatten, Flash-Speicher oder ähnliches umfassen. Die Speicher- und/oder Datenspeicherschaltungsanordnungen 204 können durch das Datenverarbeitungssystem 200 zu verarbeitende Daten halten. In einigen Fällen können die Speicher- und/oder Datenspeicherschaltungsanordnungen 204 auch Auslegungsprogramme (Bitströme) zum Programmieren der integrierten Schaltungsvorrichtung 12 speichern. Die Netzwerkschnittstelle 206 kann dem Datenverarbeitungssystem 200 ermöglichen, mit anderen elektronischen Vorrichtungen zu kommunizieren. Das Datenverarbeitungssystem 200 kann mehrere unterschiedliche Gehäuse umfassen oder kann in einem einzelnen Gehäuse auf einem einzelnen Gehäusesubstrat enthalten sein.
  • In einem Beispiel kann das Datenverarbeitungssystem 200 Teil eines Datencenters sein, das eine Vielzahl unterschiedlicher Anforderungen verarbeitet. Beispielsweise kann das Datenverarbeitungssystem 200 eine Datenverarbeitungsanforderung über die Netzwerkschnittstelle 206 zum Durchführen von Verschlüsselung, Entschlüsselung, Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbanksuchranking, Bioinformatik, Netzwerksicherheitsmustererkennung, Raumnavigation oder irgendeine andere spezielle Aufgabe empfangen. Der Hostprozessor 202 kann veranlassen, dass das programmierbare Logik-Fabric der integrierten Schaltungsvorrichtung 12 mit einem Addierer programmiert wird, der zum Umsetzen der angeforderten Aufgabe geeignet ist. Beispielsweise kann der Hostprozessor 202 anweisen, dass in der Speicher- und/oder Datenspeicherschaltungsanordnung 204 gespeicherte Auslegungsdaten (Bitstrom) in das programmierbare Logik-Fabric der integrierten Schaltungsvorrichtung 12 programmiert werden. Die Auslegungsdaten (Bitstrom) können eine Schaltungskonstruktion für eine Skalierungsschaltungsanordnung 26 darstellen, die in Übereinstimmung mit den hier beschriebenen Techniken auf die programmierbare Logik abgebildet werden können, um die Zahlendarstellung eines Eingangs in und/oder eines Ausgangs von fest verdrahteter Logik, wie etwa DSP-Schaltungsanordnung 60, anzupassen. Durch Anpassen der Zahlendarstellung eines Eingangs können arithmetische Operationen in einem ersten Format durch ein skaliertes Ergebnis von arithmetischen Operationen, die in einem zweiten Format durchgeführt werden, emuliert werden. Daher kann die integrierte Schaltungsvorrichtung 12 das Datenverarbeitungssystem 200 beim Durchführen der angeforderten Aufgabe unterstützen, selbst wenn die integrierte Schaltungsvorrichtung 12 keine Hardwareunterstützung für das Zahlenformat von einer oder mehreren Variablen (z. B. Eingängen) hat, die bei der Verarbeitung der angeforderten Aufgabe beteiligt sind.
  • Während die in der vorliegenden Offenbarung dargelegten Ausführungsformen empfänglich für verschiedene Modifikationen und alternative Formen sein können, wurden spezifische Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und hier ausführlich beschrieben. Beispielsweise kann eine beliebige geeignete Kombination der hier beschriebenen Ausführungsformen und/oder Techniken umgesetzt werden. Entsprechend versteht es sich, dass die Offenbarung nicht auf die bestimmten offenbarten Formen beschränkt sein soll. Die Offenbarung soll alle Modifikationen, Äquivalente und Alternativen abdecken, die im Geist und innerhalb des Schutzumfangs der Offenbarung liegen, wie durch die folgenden beigefügten Ansprüche definiert.
  • Die hier vorgestellten und beanspruchten Techniken werden referenziert und auf materielle Objekte und konkrete Beispiele praktischer Natur angewendet, die das vorliegende technische Gebiet nachweislich verbessern und, als solche, nicht abstrakt, nicht greifbar oder rein theoretisch sind. Ferner, wenn einer der am Ende dieser Spezifikation beigefügten Ansprüche ein oder mehrere Elemente enthält, die als „Mittel zum [Durchführen] [einer Funktion]...“ oder „Schritt zum [Durchführen] [einer Funktion]...“ bezeichnet sind, enthalten, sollen solche Elemente wie unter 35 U.S.C. 1 12(f) beschrieben interpretiert werden. Allerdings sollen bei beliebigen Ansprüchen, die Elemente umfassen, die in einer anderen Weise bezeichnet sind, solche Elemente nicht unter 35 U.S.C. 112(f) interpretiert werden.

Claims (25)

  1. Integrierte Schaltungsvorrichtung, die Folgendes umfasst: eine erste kombinatorische Schaltungsanordnung, wobei die erste kombinatorische Schaltungsanordnung eine erste Eingangsschaltungsanordnung umfasst, die ausgelegt ist zum Empfangen einer ersten Menge von Eingängen mit einem ersten Bereich, und wobei die erste kombinatorische Schaltungsanordnung ausgelegt ist zum Skalieren eines entsprechenden Exponenten von jedem der ersten Menge von Eingängen vom ersten Bereich auf einen zweiten Bereich, um eine erste Menge von skalierten Eingängen zu produzieren, wobei der zweite Bereich kleiner als der erste Bereich ist; eine erste Arithmetikschaltungsanordnung, die ausgelegt ist zum Durchführen einer oder mehrerer arithmetischer Operationen auf der ersten Menge von skalierten Eingängen und zum Produzieren eines Ausgangs mit einem dritten Bereich, wobei die erste Arithmetikschaltungsanordnung eine zweite Eingangsschaltungsanordnung umfasst, die kommunikativ mit der ersten kombinatorischen Schaltungsanordnung gekoppelt ist; und eine zweite kombinatorische Schaltungsanordnung, die kommunikativ mit der ersten Arithmetikschaltungsanordnung gekoppelt ist und ausgelegt ist zum Produzieren eines skalierten Ausgangs durch Skalieren des Ausgangs vom dritten Bereich auf den ersten Bereich.
  2. Integrierte Schaltungsvorrichtung nach Anspruch 1, wobei Skalieren des entsprechenden Exponenten von jedem der ersten Menge von Eingängen Folgendes umfasst: Bestimmen einer ersten Menge von Exponentensummen, wobei Bestimmen der ersten Menge von Exponentensummen Summieren, für jedes Paar von Eingängen der ersten Menge von Eingängen, eines ersten Exponenten eines entsprechenden ersten Eingangs des entsprechenden Paares und eines zweiten Exponenten eines entsprechenden zweiten Eingangs des entsprechenden Paares umfasst; und Skalieren des entsprechenden Exponenten von jedem der ersten Menge von Eingängen vom ersten Bereich auf den zweiten Bereich, zumindest teilweise basierend auf einer maximalen Exponentensumme der ersten Menge von Exponentensummen.
  3. Integrierte Schaltungsvorrichtung nach Anspruch 2, wobei die erste Arithmetikschaltungsanordnung einen Multiplizierer umfasst und wobei der entsprechende erste Eingang des entsprechenden Paares einem ersten Eingang in den Multiplizierer entspricht und der entsprechende zweite Eingang des entsprechenden Paares von Eingängen einem zweiten Eingang in den Multiplizierer entspricht.
  4. Integrierte Schaltungsvorrichtung nach einem der Ansprüche 1-3, wobei die eine oder mehreren arithmetischen Operationen ein Skalarprodukt umfassen.
  5. Integrierte Schaltungsvorrichtung nach Anspruch 1, wobei ein Zahlenformat von jedem der ersten Menge von Eingängen bfloat 16 umfasst.
  6. Integrierte Schaltungsvorrichtung nach einem der Ansprüche 1-4, die Folgendes umfasst: eine dritte kombinatorische Schaltungsanordnung, wobei die dritte kombinatorische Schaltungsanordnung eine dritte Eingangsschaltungsanordnung umfasst, die ausgelegt ist zum Empfangen einer zweiten Menge von Eingängen mit dem ersten Bereich, wobei die zweite Menge von Eingängen den skalierten Ausgang umfasst, und wobei die dritte kombinatorische Schaltungsanordnung ausgelegt ist zum Skalieren eines entsprechenden Exponenten von jedem der zweiten Menge von Eingängen vom ersten Bereich auf den zweiten Bereich, um eine zweite Menge von skalierten Eingängen zu produzieren; eine zweite Arithmetikschaltungsanordnung, die ausgelegt ist zum Durchführen einer oder mehrerer zusätzlicher arithmetischer Operationen auf der zweiten Menge von skalierten Eingängen und zum Produzieren eines zusätzlichen Ausgangs mit dem dritten Bereich, wobei die zweite Arithmetikschaltungsanordnung eine vierte Eingangsschaltungsanordnung umfasst, die kommunikativ mit der dritten kombinatorischen Schaltungsanordnung gekoppelt ist; und eine vierte kombinatorische Schaltungsanordnung, die kommunikativ mit der zweiten Arithmetikschaltungsanordnung gekoppelt ist und ausgelegt ist zum Skalieren des zusätzlichen Ausgangs vom dritten Bereich auf den ersten Bereich.
  7. Integrierte Schaltungsvorrichtung nach einem der Ansprüche 1-4, die Folgendes umfasst: eine dritte kombinatorische Schaltungsanordnung, wobei die dritte kombinatorische Schaltungsanordnung eine dritte Eingangsschaltungsanordnung umfasst, die ausgelegt ist zum Empfangen einer zweiten Menge von Eingängen mit einem vierten Bereich und ausgelegt ist zum Skalieren eines entsprechenden Exponenten von jedem der zweiten Menge von Eingängen vom vierten Bereich auf einen fünften Bereich, um eine zweite Menge von skalierten Eingängen zu produzieren; eine zweite Arithmetikschaltungsanordnung, die ausgelegt ist zum Durchführen einer oder mehrerer arithmetischer Operationen auf der zweiten Menge von skalierten Eingängen und zum Produzieren eines zusätzlichen Ausgangs mit dem ersten Bereich, wobei die erste Eingangsschaltungsanordnung kommunikativ mit der zweiten Arithmetikschaltungsanordnung gekoppelt ist, wobei die erste Menge von Eingängen den zusätzlichen Ausgang umfasst; und eine zweite kombinatorische Schaltungsanordnung, die kommunikativ mit der zweiten Arithmetikschaltungsanordnung gekoppelt ist und ausgelegt ist zum Produzieren eines zusätzlichen skalierten Ausgangs durch Skalieren des skalierten Ausgangs vom ersten Bereich auf den vierten Bereich.
  8. Integrierte Schaltungsvorrichtung nach Anspruch 1 oder 2, wobei die erste Arithmetikschaltungsanordnung einen Multiplizierer umfasst, der ausgelegt ist zum Durchführen zumindest einer der einen oder mehreren arithmetischen Operationen.
  9. Integrierte Schaltungsvorrichtung nach einem der Ansprüche 1-7, wobei: die erste Arithmetikschaltungsanordnung fest verdrahtete Logik umfasst.
  10. Integrierte Schaltungsvorrichtung nach Anspruch 1, wobei die integrierte Schaltungsvorrichtung ein feldprogrammierbares Gate-Array umfasst.
  11. Hardwareumgesetztes Verfahren, das Folgendes umfasst: Empfangen, an einer ersten Eingangsschaltungsanordnung, einer Menge von Eingängen mit einem ersten Zahlenformat, wobei das erste Zahlenformat einen ersten Bereich umfasst; Skalieren, unter Verwendung einer Vorskalierungsschaltungsanordnung, jedes der Menge von Eingängen vom ersten Zahlenformat auf ein zweites Zahlenformat, das vom ersten Zahlenformat verschieden ist, um eine Menge von skalierten Eingängen zu produzieren, wobei das zweite Zahlenformat einen zweiten Bereich umfasst, der kleiner als der erste Bereich ist; Empfangen, unter Verwendung einer fest verdrahteten Arithmetikschaltungsanordnung, der skalierten Menge von Eingängen entsprechend dem zweiten Zahlenformat; Durchführen, unter Verwendung der fest verdrahteten Arithmetikschaltungsanordnung, einer oder mehrerer arithmetischer Operationen auf der skalierten Menge von Eingängen zum Produzieren eines Ausgangs mit einem dritten Zahlenformat, wobei das dritte Zahlenformat einen dritten Bereich umfasst; und Skalieren, unter Verwendung einer Nachskalierungsschaltungsanordnung, des Ausgangs vom dritten Zahlenformat auf das erste Zahlenformat.
  12. Hardwareumgesetztes Verfahren nach Anspruch 11, wobei ein Exponent eines ersten Eingangs der Menge von skalierten Eingängen und ein Exponent eines zweiten skalierten Eingangs der Menge von skalierten Eingängen ausgeglichen werden.
  13. Hardwareumgesetztes Verfahren nach Anspruch 11, wobei Skalieren jedes der Menge von Eingängen Folgendes umfasst: Bestimmen einer Menge von Exponentensummen, wobei Bestimmen der Menge von Exponentensummen Summieren, für jedes Paar von Eingängen der Menge von Eingängen, eines ersten Exponenten eines entsprechenden ersten Eingangs eines entsprechenden Paares und eines zweiten Exponenten eines entsprechenden zweiten Eingangs des entsprechenden Paares umfasst; Bestimmen einer maximalen Exponentensumme der Menge von Exponentensummen; und Skalieren eines entsprechenden Exponenten von jedem der Menge von Eingängen aus dem ersten Bereich auf den zweiten Bereich, zumindest teilweise basierend auf der maximalen Exponentensumme der Menge von Exponentensummen.
  14. Hardwareumgesetztes Verfahren nach Anspruch 13, wobei Skalieren des entsprechenden Exponenten der ersten Menge von Eingängen zumindest teilweise basierend auf der maximalen Exponentensumme der Menge von Exponentensummen Folgendes umfasst: Bestimmen eines Versatzwerts zumindest teilweise basierend auf der maximalen Exponentensumme der Menge von Exponentensummen und eines maximalen beeinflussten Exponentenwerts des zweiten Zahlenformats; Subtrahieren des Versatzwerts von jeder der Menge von Exponentensummen zum Produzieren einer Menge von angepassten Exponentensummen; und Bestimmen eines entsprechenden skalierten Exponenten für jeden der Menge von Eingängen zumindest teilweise basierend auf einer entsprechenden angepassten Exponentensumme der Menge von angepassten Exponentensummen.
  15. Hardwareumgesetztes Verfahren nach Anspruch 14, wobei Bestimmen des entsprechenden skalierten Exponenten für den entsprechenden ersten Eingang des entsprechenden Paares Folgendes umfasst: Rechtsverschieben der angepassten Exponentensumme um ein oder mehrere Bits; und wobei Bestimmen des entsprechenden skalierten Exponenten für den entsprechenden zweiten Eingang des entsprechenden Paares von Eingängen Folgendes umfasst: Rechtsverschieben der angepassten Exponentensumme um ein oder mehrere Bits; und wenn die angepasste Exponentensumme ungerade ist: Summieren der verschobenen angepassten Exponentensumme mit einem niedrigstwertigen Bit der angepassten Exponentensumme.
  16. Hardwareumgesetztes Verfahren nach Anspruch 13, wobei Skalieren des Ausgangs vom dritten Zahlenformat auf das ersten Zahlenformat Folgendes umfasst: Bestimmen eines Versatzwerts zumindest teilweise basierend auf der maximalen Exponentensumme der Menge von Exponentensummen und eines maximalen beeinflussten Exponentenwerts des ersten Zahlenformats; und Summieren des Versatzwerts mit einem Exponenten des Ausgangs.
  17. Hardwareumgesetztes Verfahren nach Anspruch 11 oder 12, wobei Skalieren von jedem der Menge von Eingängen Skalieren eines entsprechenden Exponenten von jedem der Menge von Eingängen von einer ersten Anzahl von Bits auf eine zweite Anzahl von Bits umfasst.
  18. Hardwareumgesetztes Verfahren nach Anspruch 11, wobei Skalieren jedes der Menge von Eingängen vom ersten Zahlenformat auf das zweite Zahlenformat eines aus Abschneiden von einem oder mehreren Bits von einer entsprechenden Mantisse von jedem der Menge von Eingängen oder Auffüllen von einem oder mehreren Bits der entsprechenden Mantisse der Menge von Eingängen mit Null umfasst.
  19. Greifbares, nicht-flüchtiges, maschinenlesbares Medium, umfassend maschinenlesbare Anweisungen zum Aufbauen einer Addiererschaltungsanordnung, die, wenn durch einen oder mehrere Prozessoren ausgeführt, den einen oder die mehreren Prozessoren veranlassen zum: Auslegen einer ersten kombinatorischen Schaltungsanordnung, umfassend eine erste Eingangsschaltungsanordnung zum: Empfangen einer Menge von Eingängen mit einem ersten Bereich; Skalieren eines entsprechenden Exponenten jedes der Menge von Eingängen vom ersten Bereich auf einen zweiten Bereich zum Produzieren einer Menge von skalierten Eingängen, wobei der zweite Bereich kleiner als der erste Bereich ist; und Führen der Menge von skalierten Eingängen zu einer ersten Digitalsignalverarbeitungs(DSP)-Schaltungsanordnung, die ausgelegt ist zum Durchführen einer oder mehrerer arithmetischer Operationen auf der Menge von skalierten Eingängen und zum Produzieren eines Ausgangs mit einem dritten Bereich, wobei die erste DSP-Schaltungsanordnung eine zweite Eingangsschaltungsanordnung umfasst, die kommunikativ mit der ersten kombinatorischen Schaltungsanordnung gekoppelt ist; und Auslegen einer zweiten kombinatorischen Schaltungsanordnung, die kommunikativ mit der DSP-Schaltungsanordnung gekoppelt ist, zum Produzieren eines skalierten Ausgangs durch Skalieren des Ausgangs vom dritten Bereich auf den ersten Bereich.
  20. Greifbares, nicht-flüchtiges, maschinenlesbares Medium nach Anspruch 19, wobei Auslegen der zweiten kombinatorischen Schaltungsanordnung zum Produzieren des skalierten Ausgangs durch Skalieren des Ausgangs vom dritten Bereich auf den ersten Bereich Folgendes umfasst: Auslegen der zweiten kombinatorischen Schaltungsanordnung zum, wenn ein Wert eines Exponenten des Ausgangs nicht null ist: Summieren eines Versatzwerts mit dem Exponenten des Ausgangs; und Auslegen der zweiten kombinatorischen Schaltungsanordnung zum, wenn der Wert des Exponenten des Ausgangs null ist: Halten des Wertes des Exponenten bei null.
  21. Integrierte Schaltung, umfassend Mittel zum: Empfangen einer ersten Menge von Eingängen mit einem ersten Bereich; Skalieren eines entsprechenden Exponenten jedes der ersten Menge von Eingängen vom ersten Bereich auf einen zweiten Bereich zum Produzieren einer ersten Menge von skalierten Eingängen, wobei der zweite Bereich kleiner als der erste Bereich ist; Durchführen einer oder mehrerer arithmetischer Operationen auf der ersten Menge von skalierten Eingängen zum Produzieren eines Ausgangs mit einem dritten Bereich; und Skalieren des Ausgangs vom dritten Bereich auf den ersten Bereich.
  22. Integrierte Schaltung nach Anspruch 21, wobei Skalieren des entsprechenden Exponenten von jedem der ersten Menge von Eingängen Folgendes umfasst: Bestimmen einer ersten Menge von Exponentensummen durch Summen umfasst Summieren, für jedes Paar von Eingängen der ersten Menge von Eingängen, eines ersten Exponenten eines entsprechenden ersten Eingangs des entsprechenden Paares und eines zweiten Exponenten eines entsprechenden zweiten Eingangs des entsprechenden Paares; und Skalieren des entsprechenden Exponenten von jedem der ersten Menge von Eingängen aus dem ersten Bereich auf den zweiten Bereich, zumindest teilweise basierend auf einer maximalen Exponentensumme der ersten Menge von Exponentensummen.
  23. Integrierte Schaltung nach Anspruch 21 oder 22, umfassend Mittel zum: Empfangen einer zweiten Menge von Eingängen mit dem ersten Bereich, wobei die zweite Menge von Eingängen den skalierten Ausgang umfasst; Skalieren eines entsprechenden Exponenten jedes der zweiten Menge von Eingängen vom ersten Bereich auf den zweiten Bereich zum Produzieren einer zweiten Menge von skalierten Eingängen; Durchführen einer oder mehrerer zusätzlicher arithmetischer Operationen auf der zweiten Menge von skalierten Eingängen zum Produzieren eines zusätzlichen Ausgangs mit dem dritten Bereich; und Skalieren des zusätzlichen Ausgangs vom dritten Bereich auf den ersten Bereich.
  24. Integrierte Schaltung nach Anspruch 21 oder 22, umfassend Mittel zum: Empfangen einer zweiten Menge von Eingängen mit einem vierten Bereich; Skalieren eines entsprechenden Exponenten jedes der zweiten Menge von Eingängen vom vierten Bereich auf einen fünften Bereich zum Produzieren einer zweiten Menge von skalierten Eingängen; Durchführen einer oder mehrerer arithmetischer Operationen auf der zweiten Menge von skalierten Eingängen zum Produzieren eines zusätzlichen Ausgangs mit dem ersten Bereich, wobei die erste Menge von Eingängen den zusätzlichen Ausgang umfasst; und Produzieren eines zusätzlichen skalierten Ausgangs durch Skalieren des skalierten Ausgangs vom ersten Bereich auf den vierten Bereich.
  25. Integrierte Schaltungsvorrichtung nach einem der Ansprüche 21-24, wobei die eine oder mehreren arithmetischen Operationen ein Skalarprodukt umfassen.
DE102019120838.6A 2018-09-27 2019-08-01 Dynamische Gleitkommabereichserweiterung Pending DE102019120838A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/145,149 2018-09-27
US16/145,149 US11294626B2 (en) 2018-09-27 2018-09-27 Floating-point dynamic range expansion

Publications (1)

Publication Number Publication Date
DE102019120838A1 true DE102019120838A1 (de) 2020-04-02

Family

ID=65231062

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019120838.6A Pending DE102019120838A1 (de) 2018-09-27 2019-08-01 Dynamische Gleitkommabereichserweiterung

Country Status (3)

Country Link
US (2) US11294626B2 (de)
CN (1) CN110955406A (de)
DE (1) DE102019120838A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11366663B2 (en) * 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11954062B2 (en) 2019-03-15 2024-04-09 Intel Corporation Dynamic memory reconfiguration
SG11202107290QA (en) 2019-03-15 2021-09-29 Intel Corp Sparse optimizations for a matrix accelerator architecture
US20230076931A1 (en) * 2019-10-14 2023-03-09 Anhui Cambricon Information Technology Co., Ltd. Multiplier for floating-point operation, method, integrated circuit chip, and calculation device
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US20210319079A1 (en) * 2020-04-10 2021-10-14 Samsung Electronics Co., Ltd. Supporting floating point 16 (fp16) in dot product architecture
JP2022016795A (ja) * 2020-07-13 2022-01-25 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459681A (en) * 1993-12-20 1995-10-17 Motorola, Inc. Special functions arithmetic logic unit method and apparatus
US6978287B1 (en) * 2001-04-04 2005-12-20 Altera Corporation DSP processor architecture with write datapath word conditioning and analysis
ITTO20021081A1 (it) * 2002-12-13 2004-06-14 St Microelectronics Srl Procedimento e dispositivo per la moltiplicazione in virgola mobile, relativo prodotto informatico.
US7240184B2 (en) * 2004-11-10 2007-07-03 Nvidia Corporation Multipurpose functional unit with multiplication pipeline, addition pipeline, addition pipeline and logical test pipeline capable of performing integer multiply-add operations
JP4461135B2 (ja) * 2006-12-25 2010-05-12 富士通株式会社 演算回路及び演算方法並びに情報処理装置
US9053045B1 (en) * 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9489174B2 (en) * 2014-09-26 2016-11-08 Imagination Technologies Limited Rounding floating point numbers
TWI807539B (zh) * 2017-05-17 2023-07-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體

Also Published As

Publication number Publication date
US20190042193A1 (en) 2019-02-07
US20220222040A1 (en) 2022-07-14
US11294626B2 (en) 2022-04-05
CN110955406A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
DE102019120838A1 (de) Dynamische Gleitkommabereichserweiterung
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE112007001989B4 (de) Ausführung von Rundungsoperationen entsprechend einer Anweisung
DE102018108431A1 (de) Mischgenauigkeitsgleitkommaarithmetik-schaltungsanordnung in spezialisierten verarbeitungsblöcken
EP0875031A1 (de) Prozessor zur bildverarbeitung
DE102013018915A1 (de) Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen
DE102021121732A1 (de) Vektorprozessorarchitekturen
DE212007000102U1 (de) Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
DE102014100108A1 (de) Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur
DE102015114162A1 (de) Effiziente Interpolation
DE69434806T2 (de) Verfahren, System und Vorrichtung zum automatischen Entwurf einer Multiplikatorschaltung und durch die Durchführung dieses Verfahrens entworfene Multiplikatorschaltung
DE102022119386A1 (de) Verfahren und einrichtung zum durchführen einer dichten vorhersage unter verwendung von transformatorblöcken
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE19826252A1 (de) Verfahren zur digitalen Signalverarbeitung und Anordnung zur Durchführung des Verfahrens
DE102019134388A1 (de) Filteroptimierung zur verbesserung der rechnerischen effizienz von faltungsoperationen
DE2830334C2 (de)
DE4409834A1 (de) Multiplizierschaltung und Divisionsschaltung
DE3434777C2 (de)
DE2364865A1 (de) Erweitertes speicheradressenbildungssystem eines digitalen rechnersystems
DE102013212840B4 (de) Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
DE102022121151A1 (de) Engine für digitale Signalverarbeitung (DSP) basierend auf schneller Fourier-Transformation (FFT)
DE102018115219A1 (de) Systeme und Verfahren zur Abbildung von Reduktionsoperationen
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation
DE4001232C2 (de) Gleitkommaeinheit