DE102020131925A1 - Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit - Google Patents

Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit Download PDF

Info

Publication number
DE102020131925A1
DE102020131925A1 DE102020131925.8A DE102020131925A DE102020131925A1 DE 102020131925 A1 DE102020131925 A1 DE 102020131925A1 DE 102020131925 A DE102020131925 A DE 102020131925A DE 102020131925 A1 DE102020131925 A1 DE 102020131925A1
Authority
DE
Germany
Prior art keywords
floating point
circuit
precision
circuit arrangement
receive
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
DE102020131925.8A
Other languages
English (en)
Inventor
Roberto DiCecco
Joshua David Fender
Shane O'Connell
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 DE102020131925A1 publication Critical patent/DE102020131925A1/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/485Adding; Subtracting
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • 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)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

Es wird eine Schaltungsanordnung zur Zerlegung von Block-Gleitkommazahlen in Gleitkommazahlen geringerer Genauigkeit bereitgestellt. Die Schaltungsanordnung kann eine Speicherschaltung hoher Genauigkeit, die dazu konfiguriert ist, Gleitkommazahlen hoher Genauigkeit bereitzustellen, Eingangsselektoren, die dazu konfiguriert sind, die Gleitkommazahlen hoher Genauigkeit von der Speicherschaltung hoher Genauigkeit zu empfangen und entsprechende Gleitkomma-Komponenten geringerer Genauigkeit mit angepassten Exponenten zu erzeugen, und eine Block-Gleitkomma-Vektorschaltung geringerer Genauigkeit, die dazu konfiguriert ist, die verschiedenen Gleitkomma-Komponenten geringerer Genauigkeit, die durch die Eingangsselektoren erzeugt werden, zu kombinieren, enthalten. Die Gleitkomma-Komponenten geringerer Genauigkeit können räumlich oder über eine Vielzahl von Iterationen im Zeitverlauf verarbeitet werden.

Description

  • Hintergrund
  • Diese Erfindung betrifft allgemein integrierte Schaltungen und insbesondere programmierbare integrierte Schaltungen, die dazu konfiguriert sind, maschinelles Lernen zu unterstützen.
  • Programmierbare integrierte Schaltungen wie programmierbare Logikvorrichtungen (Programmable Logic Devices, PLDs) enthalten konfigurierbare Logikblöcke mit Nachschlagetabellen (Look-Up Tables, LUTs) und Addierer-basierter Logik, die so konzipiert sind, dass ein Benutzer die Schaltungsanordnung an seine speziellen Bedürfnisse anpassen kann. Herkömmliche PLDs, die zur Unterstützung von maschinellem Lernen und tiefem Lernen (Deep Learning) konfiguriert sind, können in der Regel nur mit einer festgelegten Genauigkeit arbeiten, was dazu führt, dass ein Schaltungskonzept mit der höchsten erforderlichen Genauigkeit gebaut werden muss, auch wenn die höchste Genauigkeit nur selten verwendet wird.
  • Eine Art und Weise, zwei unterschiedliche Genauigkeiten unterzubringen, besteht darin, einen ersten Konfigurations-Bitstream, der eine Genauigkeit unterstützt, und einen zweiten Konfigurations-Bitstream, der eine andere Genauigkeit unterstützt, zu kompilieren. Dieser Ansatz erfordert jedoch eine Neuprogrammierung der Vorrichtung während der Ausführung, um die Vorrichtung unter Verwendung eines unterschiedlichen Bitstreams neu zu konfigurieren, was eine erhebliche Latenzstrafe zur Folge hat. Ein anderer Ansatz involviert die Partitionierung eines Deep-Learning-Netzwerks über viele PLDs hinweg, von denen jede unter Verwendung eines unterschiedlichen Konfigurations-Bitstreams programmiert wird. Dieser zweite Ansatz erfordert jedoch einen erheblichen und potenziell redundanten Hardware-Overhead.
  • In diesem Zusammenhang entstehen die hierin beschriebenen Ausführungsformen.
  • Figurenliste
    • 1 ist ein Diagramm einer veranschaulichenden programmierbaren integrierten Schaltung gemäß einer Ausführungsform.
    • 2 ist ein Diagramm einer veranschaulichenden integrierten Schaltung, die lineare Operationsschaltungen hoher Genauigkeit gemäß einer Ausführungsform enthält.
    • 3 ist ein Diagramm einer veranschaulichenden Punktproduktschaltung gemäß einer Ausführungsform.
    • 4 ist ein Diagramm einer veranschaulichenden Gleitkomma-Zerlegungs-Punktprodukt-Schaltungsanordnung dynamischer Genauigkeit gemäß einer Ausführungsform.
    • 5 ist ein Diagramm einer veranschaulichenden Gleitkomma-Punktprodukt-Schaltung geringer Genauigkeit gemäß einer Ausführungsform.
    • 6 ist ein Diagramm einer veranschaulichenden Eingangsauswahlschaltung gemäß einer Ausführungsform.
    • 7 ist ein Diagramm einer veranschaulichenden Exponentenauswahlschaltung gemäß einer Ausführungsform.
    • 8 ist ein Diagramm einer veranschaulichenden Mantissenauswahlschaltung gemäß einer Ausführungsform.
    • 9 ist ein Diagramm einer veranschaulichenden Gleitkomma-Punktprodukt-Schaltungsanordnung, die eine Genauigkeitszerlegung im Zeitverlauf gemäß einer Ausführungsform implementiert.
    • 10 ist ein Diagramm einer veranschaulichenden Gleitkomma-Punktprodukt-Schaltungsanordnung, die eine räumliche Genauigkeitszerlegung gemäß einer Ausführungsform implementiert.
  • Detaillierte Beschreibung
  • Die vorliegenden Ausführungsformen beziehen sich auf eine Schaltungsanordnung, die in der Lage ist, Gleitkommazahlen (z. B. ,,Block”-Gleitkommazahlen) in Gleitkommazahlen relativ geringerer Genauigkeit mit angepassten Exponenten und Mantissen zu zerlegen. Die angepassten Exponenten und Mantissen werden dann entweder über mehrere Iterationen im Zeitverlauf verarbeitet oder räumlich parallel verarbeitet. Der Begriff „Block“-Gleitkomma bezieht sich auf arithmetische Operationen, die an einer Gruppe von Gleitkommazahlen, die denselben Exponentenwert aufweisen, durchgeführt werden. Gleitkommazahlen, die einen gemeinsamen Exponenten aufweisen, können einfach ohne Verschiebung addiert werden und stellen somit erhebliche Hardware-Einsparungen bereit.
  • Die integrierte Schaltungsanordnung kann Schaltungen zum dynamischen Auswählen, wie viele Genauigkeitsbits benötigt werden, um eine bestimmte Punktprodukt-Operation durchzuführen, enthalten. Die zerlegten Gleitkommazahlen können unter Verwendung einer Matrix-/Vektoreinheit geringer festgelegter Genauigkeit, wie einer Punktprodukt-Funktionseinheit geringer Genauigkeit, verarbeitet werden, um eine entsprechende Ausgabe hoher Genauigkeit zu erzeugen. Punktprodukt-Funktionseinheiten, die unter Verwendung von arithmetischen Bausteinen geringerer Genauigkeit implementiert werden, sind technisch vorteilhaft, da sie sich besser auf die Soft-Logik-Fabric innerhalb einer programmierbaren integrierten Schaltung abbilden lassen. Programmierbare integrierte Schaltungen, die auf diese Weise implementiert werden, um maschinelles Lernen wie Deep-Learning-Modelle zu unterstützen, besitzen einen verbesserten Durchsatz, dadurch dass sie die zerlegende Schaltungsanordnung verwenden, um sowohl Gleitkommaberechnungen hoher Genauigkeit als auch Gleitkommaberechnungen geringer Genauigkeit dynamisch zu unterstützen.
  • Der Fachmann wird erkennen, dass die vorliegenden beispielhaften Ausführungsformen ohne einige oder alle dieser spezifischen Details ausgeführt werden können. In anderen Fällen wurden bekannte Operationen nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.
  • Vor diesem Hintergrund ist 1 ein Diagramm einer programmierbaren integrierten Schaltung 10 (manchmal z. B. als programmierbare Logikvorrichtung, feldprogrammierbares Gate-Array oder „FPGA“ usw. bezeichnet). Wie in 1 gezeigt, kann die programmierbare Logikvorrichtung 10 ein zweidimensionales Array von Funktionsblöcken enthalten, einschließlich Logik-Array-Blöcke (LABs) 11 und anderer Funktionsblöcke, wie Direktzugriffsspeicher-Blöcke 13 (Random Access Memory blocks (RAM) blocks), und spezialisierte Verarbeitungsblöcke, wie Digitalsignalverarbeitungs-Blöcke 12 (Digital Signal Processing (DSP) blocks), die teilweise oder vollständig fest verdrahtet sind, um eine oder mehrere spezifische Aufgaben wie mathematische/arithmetische Operationen durchzuführen.
  • Funktionsblöcke wie LABs 11 können kleinere programmierbare Bereiche (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und benutzerspezifische Funktionen auf den Eingangssignalen ausführen, um Ausgangssignale zu produzieren. Die Vorrichtung 10 kann ferner eine programmierbare Routing-Fabric enthalten, das zum Verbinden der LABs 11 mit den RAM-Blöcken 13 und den DSP-Blöcken 12 verwendet wird. Die Kombination aus programmierbarer Logik und Routing-Fabric wird manchmal als „Soft“-Logik bezeichnet, während die DSP-Blöcke manchmal als „Hard“-Logik bezeichnet werden. Die Art der Hard-Logik auf der Vorrichtung 10 ist nicht auf DSP-Blöcke beschränkt und kann andere Arten von Hard-Logik umfassen. Addierer/Subtrahierer, Multiplizierer, Punktprodukt-Berechnungs-Schaltungen und andere arithmetische Schaltungen, die als Teil eines DSP-Blocks 12 ausgebildet sein können oder auch nicht, können manchmal zusammengefasst als arithmetische Logik bezeichnet werden.
  • Die programmierbare Logikvorrichtung 10 kann programmierbare Speicherelemente zum Konfigurieren der Soft-Logik beinhalten. In Speicherelemente können unter Verwendung von Eingabe-/Ausgabeelementen (EAEs) 16 Konfigurationsdaten (auch Programmierdaten genannt) geladen werden. Sobald diese geladen sind, stellen die Speicherelemente entsprechende statische Steuersignale, die den Betrieb eines oder mehrerer LABs 11, programmierbarer Routing-Fabrics und optional DSPs 12 oder RAMs 13 steuern, bereit. In einem typischen Szenario werden die Ausgänge der beladenen Speicherelemente an die Gatter von Metall-Oxid-Halbleiter-Transistoren (z. B. Passtransistoren) angelegt, um bestimmte Transistoren ein- oder auszuschalten und dadurch die Logik in dem Funktionsblock einschließlich der Routing-Pfade zu konfigurieren. Programmierbare Logikschaltungselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexern (z. B. Multiplexer, die zur Bildung von Routing-Pfaden in Verbindungsschaltungen verwendet werden), Nachschlagetabellen, Logik-Arrays, AND-, OR-, NAND- und NOR-Logikgatter, Durchlassgatter usw. Die Logikgatter und Multiplexer, die Teil der Soft-Logik sind, konfigurierbare Zustandsmaschinen oder jegliche allgemeine Logikkomponente, die keinen einzelnen dedizierten Zweck auf der Vorrichtung 10 haben, können zusammengefasst als „Zufallslogik“ bezeichnet werden.
  • Die Speicherelemente können jegliche geeigneten flüchtigen und/oder nichtflüchtigen Speicherstrukturen verwenden, wie Direktzugriffsspeicher(RAM)-Zellen, Fuses, Antifuses, programmierbare Nur-Lese-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, mechanische Speichervorrichtungen (z. B. einschließlich lokalisierter mechanischer Resonatoren), mechanisch betriebene RAM (Mechanically Operated, MORAM), programmierbare Metallisierungszellen (Programmable Metallization cells, PMCs), Conductive-Bridging-RAM (CBRAM), resistive Speicherelemente, Kombinationen dieser Strukturen usw. Da die Speicherelemente während der Programmierung mit Konfigurationsdaten beladen werden, werden die Speicherelemente manchmal als Konfigurationsspeicher, Konfigurations-RAM (Configuration RAM, GRAM), Konfigurationsspeicherelemente oder programmierbare Speicherelemente bezeichnet.
  • Zusätzlich kann die programmierbare Logikvorrichtung 10 Eingangs-/Ausgangselemente (EAEs) 16 verwenden, um Signale aus der Vorrichtung 10 zu bringen und um Signale von anderen Vorrichtungen zu empfangen. Die Eingangs-/Ausgangselemente 16 können parallele Eingangs-/Ausgangsschaltungsanordnungen, serielle Daten-Sendeempfänger-Schaltungsanordnungen, differentielle Empfänger- und Senderschaltungsanordnungen oder andere Schaltungsanordnungen enthalten, die zur Verbindung einer integrierten Schaltung mit einer anderen integrierten Schaltung verwendet werden. Wie gezeigt, können sich die Eingangs-/Ausgangselemente 16 um den Umfang des Chips herum befinden. Falls gewünscht, kann die programmierbare Logikvorrichtung Eingangs- /Ausgangselemente 16 aufweisen, die auf unterschiedliche Weise angeordnet sind.
  • Die Routing-Fabric (manchmal auch als programmierbare Verbindungsschaltungsanordnung bezeichnet) auf der PLD 10 kann in Form von vertikalen Routing-Kanälen 14 (d. h. Verbindungen, die entlang einer vertikalen Achse der PLD 10 ausgebildet sind) und horizontalen Routing-Kanälen 15 (d. h. Verbindungen, die entlang einer horizontalen Achse der PLD 10 ausgebildet sind) bereitgestellt werden, wobei jeder Routing-Kanal mindestens eine Spur zum Routen mindestens eines Drahtes enthält. Falls gewünscht, können die Routing-Drähte kürzer sein als die gesamte Länge des Routing-Kanals. Ein Draht der Länge L kann L Funktionsblöcke überspannen. Zum Beispiel kann ein Draht der Länge vier vier Funktionsblöcke überspannen. Drähte der Länge vier in einem horizontalen Routing-Kanal können als „H4“-Drähte bezeichnet werden, während Drähte der Länge vier in einem vertikalen Routing-Kanal als „V4“-Drähte bezeichnet werden können.
  • Darüber hinaus sollte es sich verstehen, dass die vorliegenden Ausführungsformen in einer beliebigen integrierten Schaltung implementiert werden können. 2 ist ein Diagramm eines veranschaulichenden Integrierte-Schaltung-Dies 200. Die integrierte Schaltung 200 kann beispielsweise ein programmierbarer integrierter Schaltkreis, wie die Vorrichtung 10 der 1, eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein anwendungsspezifisches Standardprodukt (ASSP), ein Mikrocontroller, ein Mikroprozessor usw. sein. Beispiele für programmierbare integrierte Schaltungen enthalten programmierbare Logikvorrichtungen (PLDs), feldprogrammierbare Gate-Arrays (FPGAs), programmierbare Arrays-Logik (PALs), programmierbare Logik-Arrays (PLAs), feldprogrammierbare Logik-Arrays (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellen-Arrays (LCAs) und komplexe programmierbare Logikvorrichtungen (CPLDs), um nur einige zu nennen.
  • Wie in 2 gezeigt, kann die integrierte Schaltung Schaltungen wie die Schaltungen 202 enthalten, die dazu konfiguriert sind, lineare Operationen hoher Genauigkeit durchzuführen. Vorrichtungskonfigurationen, in denen Gleitkomma-Punktprodukte berechnet werden, werden hierin manchmal als Beispiel beschrieben. Punktprodukt-Operationen können in Anwendungen des maschinellen Lernens, wie Deep-Learning-Netzwerken, weit verbreitet sein. Dies ist jedoch nur veranschaulichend. Falls gewünscht, können lineare Operationsschaltungen hoher Genauigkeit 202 auch verwendet werden, um andere lineare arithmetische Operationen durchzuführen, die Multiplikation, Division, Addition, Subtraktion und/oder andere Manipulationen von Zahlen erfordern, die in jeglicher Art von Maschinenlern-Neuronalnetzwerk erforderlich sind.
  • Der Begriff „hohe“ oder „höhere“ Genauigkeit kann sich auf Gleitkommaoperationen beziehen, die Mantissenbreiten involvieren, die gleich oder größer als 7, zwischen sieben und zehn, gleich oder größer als 10, zwischen 10 und 23, gleich oder größer als 23 usw. sind. Der Begriff „geringe“ oder „geringere“ Genauigkeit kann sich auf Gleitkommaoperationen beziehen, die Mantissenbreiten involvieren, die geringer als 10, zwischen 10 und 7, geringer als 7, 6 oder geringer, 5 oder geringer, 4 oder geringer, 3 oder geringer, 2 oder geringer usw. sind. Die Begriffe Mantissen-Bits, Bruchteil-Bits und Signifikanden-Bits können die gleiche Bedeutung haben und können austauschbar verwendet werden.
  • 3 ist ein Diagramm einer veranschaulichenden n-Element-Punktprodukt-Schaltung 300. Wie oben beschrieben, können die Operationen der Punktproduktschaltung 300 unter Verwendung der Schaltungen 202 der 2 durchgeführt werden. Wie in 3 gezeigt, kann die Punktproduktschaltung 300 n-Element-Eingangsvektoren i und w empfangen und einen ersten Multiplizierer 302 zum Berechnen des Produkts der Eingänge i1 und w1, einen zweiten Multiplizierer 302 zum Berechnen des Produkts der Eingänge i2 und w2, ..., und einen n-ten Multiplizierer 302 zum Berechnen der Produkte der Eingänge in und wn enthalten. Die Punktproduktschaltung 300 kann ferner eine separate Summierschaltung 304 zum Addieren der von den Multiplizierern 302 erzeugten n Produkte enthalten, um einen endgültigen Punktproduktausgang zu erzeugen. In dem Beispiel der 3 erfolgen die durch die Multiplizierer 302 durchgeführten Multiplikationen parallel und werden dann am Addierer 304 summiert. Neue Eingangsdaten können in jedem Taktzyklus empfangen werden, und neue Ausgangsdaten können in jedem Taktzyklus nach einer festgelegten Latenz erzeugt werden. In der Praxis müssen jedoch Punktproduktschaltungen nicht tatsächlich unter Verwendung von monolithischen Multiplizierern 302 und Addierern 304 auf diese Weise aufgebaut sein.
  • Das in 3 veranschaulichte Punktprodukt der Größe n kann mit folgendem Ausdruck dargestellt werden: Ausgang =   k = 1 n i k w k
    Figure DE102020131925A1_0001
  • Jeder Eingang ik und wk kann eine Gleitkommazahl „hoher“ Genauigkeit darstellen (z. B. eine IEEE-754-Gleitkommazahl halber Genauigkeit mit einem Vorzeichen-Bit, 5 Exponenten-Bits und 10 gespeicherten Mantissen- /Bruchteil-Bits (manchmal als „GK16“-Zahl bezeichnet), eine „BFLOAT16“-Zahl mit einem Vorzeichen-Bit, 8 Exponenten-Bits und 7 gespeicherten Mantissen-Bits, eine IEEE-754-Gleitkommazahl einfacher Genauigkeit mit einem Vorzeichen-Bit, 8 Exponenten-Bits und 23 gespeicherten Mantissen-Bits (manchmal auch als „GK32“-Zahl bezeichnet, oder andere Zahlen mit 7 oder mehr Genauigkeitsbits, 8 oder mehr Genauigkeitsbits, 9 oder mehr Genauigkeitsbits, 10 oder mehr Genauigkeitsbits, 16 oder mehr Genauigkeitsbits, 23 oder mehr Genauigkeitsbits, usw.
  • Gemäß einer Ausführungsform wird eine Schaltungsanordnung bereitgestellt, welche die Eingangssignale hoher Genauigkeit in zwei oder mehr Komponenten zerlegen kann. Als Beispiel kann der Eingang i im obigen Ausdruck (1) in eine obere (U) und eine untere (L) Komponente zerlegt werden, was den folgenden Ausdruck ergibt: Ausgang =   k = 1 n ( i k U + i k L ) w k
    Figure DE102020131925A1_0002
    wobei ikU die obere zerlegte Komponente darstellt und wobei ikL die untere zerlegte Komponente darstellt. Dieses Ergebnis kann wie folgt in zwei separate Punktprodukte der Größe n zerlegt werden: Ausgang =   k = 1 n i k U w k + k = 1 n i k L w k
    Figure DE102020131925A1_0003
  • Dieses Zerlegungsbeispiel ist lediglich veranschaulichend. Im Allgemeinen kann die Punktprodukt-Operation des Ausdrucks (1) in drei oder mehr kleinere Punktproduktgruppen, vier oder mehr kleinere Punktproduktgruppen oder irgendeine Anzahl kleinerer Punktproduktgruppen geringerer Genauigkeit zerlegt werden, indem der Eingang i und/oder der Eingang w abhängig von den Anforderungen der Anwendung in mehrere Komponenten „geringer“ Genauigkeit zerlegt werden (z. B. einen zerlegten Wert mit einem Vorzeichen-Bit, 4 Exponenten-Bits und 3 gespeicherten Signifikanden-Bits, einen zerlegten Wert mit weniger als 7 Signifikanden-Bits, einen zerlegten Wert mit weniger als 6 Signifikanden-Bits, einen zerlegten Wert mit weniger als 5 Signifikanden-Bits oder andere Signale mit weniger als 8 Genauigkeitsbits, mit weniger als 4 Genauigkeitsbits, mit weniger als 3 Genauigkeitsbits, mit weniger als 2 Genauigkeitsbits usw.) .
  • 4 ist ein Diagramm einer veranschaulichenden Gleitkomma-Zerlegungs-Punktprodukt-Schaltungsanordnung dynamischer Genauigkeit, wie der Schaltungsanordnung 400. Die Schaltungsanordnung 400 kann Teil der Schaltungen 202 der 2 sein und kann dazu konfiguriert sein, Punktprodukt-Arithmetik durch Zerlegen von Block-Gleitkommazahlen hoher Genauigkeit in entsprechende Komponenten geringer Genauigkeit durchzuführen. Wie in 4 gezeigt, kann die Gleitkomma-Zerlegungs-Punktprodukt-Schaltungsanordnung dynamischer Genauigkeit 400 eine Speicherschaltung hoher Genauigkeit 402 enthalten, die zum Speichern der Eingangsvektoren hoher Genauigkeit i und w konfiguriert ist. Im Beispiel der 4 kann jeder der Eingänge i und w unter Verwendung einer separaten Eingangszerlegungs-Auswahlschaltung zerlegt werden.
  • Die Schaltungsanordnung 400 kann einen ersten Eingangszerlegungsselektor 404-1 enthalten, der dazu konfiguriert ist, Eingänge [i1:in] zusammen mit dem zugehörigen Exponenten ei zu empfangen. Der Eingangsselektor 404-1 kann durch ein Auswahlsignal gesteuert werden, das durch eine Steuereinrichtung, wie die Genauigkeitssteuereinrichtung 408, erzeugt wird, und kann entsprechende Komponenten geringer Genauigkeit [i1' :in'] und einen angepassten Exponentenwert e1' ausgeben. Im Allgemeinen kann ik' irgendeine Bruchteil-Teilmenge oder irgendeinen Abschnitt von ik darstellen, solange ik' weniger Genauigkeitsbits als ik aufweist.
  • In ähnlicher Weise kann die Schaltungsanordnung 400 ferner einen zweiten Eingangszerlegungsselektor 404-2 enthalten, der dazu konfiguriert ist, Eingänge [w1:wn] zusammen mit dem zugehörigen Exponenten ew zu empfangen. Der Eingangsselektor 404-2 kann auch durch das von der Genauigkeitssteuereinrichtung 408 erzeugte Auswahlsignal gesteuert werden und kann entsprechende Komponenten geringer Genauigkeit [w1' :wn'] und einen angepassten Exponentenwert ew' ausgeben. Im Allgemeinen kann wk' irgendeine Bruchteil-Teilmenge oder irgendeinen Abschnitt von wk darstellen, solange wk' weniger Genauigkeitsbits als wk aufweist. Die Eingänge ik und wk können abhängig von der Anwendung die gleiche Bitbreite oder unterschiedliche Bitbreiten aufweisen. In ähnlicher Weise können die zerlegten Komponenten ik' und wk' abhängig von der Anwendung die gleiche Bitbreite oder unterschiedliche Bitbreiten aufweisen.
  • Die zerlegten Eingangskomponenten, die durch die Eingangsauswahlschaltungen 404 ausgegeben werden, können dann unter Verwendung einer Block-Gleitkomma-Matrix/Vektor-Einheit geringer Genauigkeit, wie der Schaltung 406, verarbeitet werden. Die Schaltung 406 kann beispielhaft als eine Gleitkomma-Punktprodukt-Funktionseinheit implementiert sein. Im Allgemeinen kann die Schaltung 406 irgendeine geeignete Matrix- oder Vektoreinheit sein, die verwendet werden kann, um mehrere Signalkomponenten geringer Genauigkeit zu einem einzigen Ausgangswert für eine lineare arithmetische Operation zu kombinieren.
  • Der Begriff „Block“-Gleitkomma kann sich hierin auf Gleitkomma-Arithmetik beziehen, die Zahlen mit demselben Exponentenwert involviert. Zum Beispiel würde eine Blockgröße von zwei bedeuten, dass der Eingangsselektor 404-1 i1 und i2 empfängt, die beide einen gemeinsamen Exponentenwert ei aufweisen. Als weiteres Beispiel würde eine Blockgröße von vier bedeuten, dass der Eingangsselektor 404-1 [i1:i4] empfangen würde, die alle einen gemeinsamen Exponentenwert ei aufweisen. Als noch ein weiteres Beispiel würde eine Blockgröße von 16 bedeuten, dass der Eingangsselektor 404-1 [i1:i16] empfangen würde, die alle einen gemeinsamen Exponentenwert ei aufweisen. Mit anderen Worten, die Blockgröße würde die Busbreiten für die Eingänge i und w diktieren, was auch die Breite des Punktprodukts bestimmen würde. Eine Blockgröße von eins stellt die Standard-Gleitkommadarstellung dar, bei der die Busbreite von i und w jeweils eins ist.
  • Das Beispiel der 4, in dem die beiden Eingänge i und w unter Verwendung von Eingangszerlegungsselektoren zerlegt werden, ist lediglich veranschaulichend. In einer weiteren geeigneten Anordnung können die Eingänge hoher Genauigkeit [i1:1n] der Block-Gleitkomma-Matrixschaltung 406 direkt als Eingänge zugeführt werden, während die Eingänge w unter Verwendung des Eingangsselektors 404-2 zerlegt werden. In noch einer weiteren geeigneten Anordnung können die Eingänge hoher Genauigkeit [w1:wn] der Block-Gleitkomma-Vektorschaltung 406 direkt als Eingänge zugeführt werden, während die Eingänge i unter Verwendung des Eingangsselektors 404-1 zerlegt werden. Mit anderen Worten, es kann nur eines der Eingangssignale i oder w zerlegt werden, oder es können beide Eingangssignale i und w zerlegt werden, abhängig von den Anforderungen der Anwendung.
  • 5 ist ein Diagramm der Schaltung 406, die als eine Gleitkomma-Punktprodukt-Funktionseinheit geringer Genauigkeit implementiert ist. Wie in 5 gezeigt, kann die Punktprodukt-Funktionseinheit 406 n Multiplizierschaltungen geringer Genauigkeit 502 zur Berechnung der Eingangsproduktpaare i1' *w1, i2'*w2' und in'*wn' enthalten. Die Anzahl der Multiplizierer 502 ist abhängig von der Gleitkommablockgröße. Die resultierenden Produkte, die durch die Multiplizierer 502 ausgegeben werden, können an einem Blockgröße:1-Addiererbaum 504 kombiniert werden, der die Produkte von den n Bussen effektiv summiert. Die angepassten Exponentenwerte e1' und ew' können unter Verwendung der Schaltung 506 addiert werden. Ganzzahlige arithmetische Signale, die vom Addiererbaum 504 ausgegeben werden, und die Exponentensumme, die von der Addiererschaltung 506 ausgegeben wird, können am Konverter 508 ankommen und dann in einen endgültigen Gleitkomma-Punktprodukt-Ausgangswert umgewandelt werden. Der von der Gleitkomma-Konverterschaltung 508 ausgegebene Punktproduktwert kann optional unter Verwendung der Akkumulatorschaltung 510 akkumuliert werden, die eine Addiererschaltung 512 und einen Ausgangsrückkopplungspfad 514 enthält.
  • 6 ist ein Diagramm einer veranschaulichenden Eingangsauswahlschaltung 404. Wie in 6 gezeigt, kann der Eingangsselektor 404 eine Exponentenauswahlschaltung, wie den Exponentenselektor 602, und eine oder mehrere Mantissenauswahlschaltungen, wie den Mantissenselektor 604-1, ..., 604-n, enthalten. Der Exponentenselektor 602 kann den Eingangsexponenten ei und das Auswahlsignal (z. B. das von der Steuerungseinrichtung 408 in 4 erzeugte Auswahlsignal) empfangen und einen angepassten Exponenten ei' und ein Unterlaufsignal ausgeben. Bei einem Unterlauf wird das Unterlaufsignal auf logisch „0“ gebracht, und der Ausgangsexponent e1' wird auf Null eingestellt. Wenn es keinen Unterlauf gibt, wird das Unterlaufsignal auf logisch „1“ gebracht, und ein angepasster Exponentenwert ungleich Null ei' wird durch den Selektor 602 erzeugt.
  • Jeder Mantissenselektor 604 kann eine Eingangsmantisse hoher Genauigkeit ik, das Auswahlsignal und das Unterlaufsignal, das vom Exponentenselektor 602 auf dem Pfad 608 ausgegeben wird, empfangen und eine zerlegte Komponente ik', die eine geringere Genauigkeit als der entsprechende Eingang ik aufweist, ausgeben. Mit anderen Worten, der Mantissenselektor wird verwendet, um auszuwählen, welcher Abschnitt des Signifikanden hoher Genauigkeit im aktuellen Zyklus ausgegeben werden soll. Zum Beispiel kann der Mantissenselektor 604-1 den Eingang hoher Genauigkeit i1 empfangen und den entsprechenden zerlegten Wert geringer Genauigkeit i1' ausgeben. In ähnlicher Weise kann der Mantissenselektor 604-n den Eingang hoher Genauigkeit in empfangen und die entsprechende zerlegte Komponente geringer Genauigkeit in' ausgeben. Ein bestimmter ausgewählter Ausgang kann optional unter Verwendung irgendwelcher verbleibender Signifikanden-Bits hoher Genauigkeit basierend auf dem Auswahlsignal gerundet werden.
  • Das Beispiel der 6, in dem der Eingangsselektor 404 dazu konfiguriert ist, Eingänge hoher Genauigkeit i zu zerlegen, ist lediglich veranschaulichend. Falls gewünscht, kann der Eingangsselektor 404 der in 6 gezeigten Art auch zur Zerlegung der Eingänge w oder anderer Eingangssignale hoher Genauigkeit implementiert werden.
  • 7 ist ein Diagramm, das eine geeignete Implementierung der Exponentenauswahlschaltung 602 zeigt. Wie in 7 gezeigt, kann der Exponentenselektor 602 Folgendes enthalten: eine Multiplizierschaltung 704, die dazu konfiguriert ist, das Produkt aus dem Auswahlsignal und einer Mantissenbreite geringer Genauigkeit (bezeichnet als „Mantisse_Breite“) zu berechnen, eine Subtraktionsschaltung 702, die dazu konfiguriert ist, die Differenz zwischen dem eingegebenen Exponentenwert e und dem vom Multiplizierer 704 ausgegebenen Produkt zu berechnen, eine Unterlauf-Vergleichsschaltung, wie den Unterlauf-Komparator 708, zum Bestimmen, ob der vom Subtrahierer 702 ausgegebene Differenzwert unterläuft, und einen Schaltkreis, wie die Multiplexschaltung 706, die einen ersten (0) Dateneingang, der dazu konfiguriert ist, den Differenzwert vom Subtrahierer 702 zu empfangen, einen zweiten (1) Dateneingang, der dazu konfiguriert ist, eine „0“ zu empfangen, einen Steuereingang, der dazu konfiguriert ist, das Unterlaufsignal vom Komparator 708 zu empfangen, und einen Ausgang, an dem ein angepasster Exponentenwert e' erzeugt wird, aufweist. Das Unterlaufsignal kann auch als Ausgang des Exponentenselektors 602 bereitgestellt werden. Der Wert Mantisse _Breite kann als die vorgegebene Breite des Signifikanden definiert werden, die von der Punktprodukt-Funktionseinheit unterstützt wird (z. B. die Breite geringer Genauigkeit der Schaltung 406 in 4 und 5). Auf diese Weise konfiguriert, ist der Exponentenselektor 602 dazu konfiguriert, einen neuen Exponenten e' für jeden Abschnitt geringer Genauigkeit der Eingangsmantisse zu erzeugen (wenn sich der Wert des Auswahlsignals ändert). Wie bereits oben beschrieben, wird der Ausgangsexponent e' im Falle eines Unterlaufs auf Null geleert (engl. flushed).
  • 8 ist ein Diagramm einer veranschaulichenden Mantissenauswahlschaltung 604, die verwendet wird, um auszuwählen, welcher Abschnitt der Eingangsmantisse hoher Genauigkeit an die Block-Gleitkomma-Vektoreinheit geringer Genauigkeit ausgegeben werden soll. Wie in 8 gezeigt, kann der Mantissenselektor 604 eine Anzahl von Teilschaltungen enthalten, die jeweils eine mögliche Mantisse geringer Genauigkeit verarbeiten. Die Bitbreite der Ausgangsmantisse geringer Genauigkeit i' wird durch die Mantissa _Breite eingestellt, wie oben in Verbindung mit 7 definiert.
  • Eine erste Teilschaltung kann einen ersten Multiplexer 802 aufweisen, der einen ersten (0) Dateneingang, der dazu konfiguriert ist, einen ersten Abschnitt des Eingangs-Signifikanden hoher Genauigkeit i zu empfangen, einen zweiten (1) Dateneingang, der dazu konfiguriert ist, eine Summe zu empfangen, die vom Addierer 804 produziert wird (der den Eingang i und „0“ addiert), einen Steuereingang, der dazu konfiguriert ist, ein Überlaufsignal zu empfangen, das von einem ersten Überlaufkomparator 806 ausgegeben wird (der bestimmt, ob der Ausgang des Addierers 804 übergelaufen ist), und einen entsprechenden Multiplexer-Ausgang mit einer Bitbreite, die durch Mantissa -Breite bestimmt wird, aufweist.
  • Jede der verbleibenden Teilschaltungen kann einen eigenen separaten Multiplexer 802 aufweisen, der einen ersten (0) Dateneingang, der dazu konfiguriert ist, einen jeweiligen Abschnitt des Eingangs-Signifikanden i zu empfangen, einen zweiten (1) Dateneingang, der dazu konfiguriert ist, eine Summe zu empfangen, die vom Addierer 804 produziert wird (der den jeweiligen Abschnitt von i und ein entsprechendes berechnetes Rundungsbit addiert), einen Steuereingang, der dazu konfiguriert ist, ein Überlaufsignal zu empfangen, das von dem zugehörigen Überlaufkomparator 806 ausgegeben wird (der bestimmt, ob der Ausgang des Addierers 804 in dieser Teilschaltung übergelaufen ist), und einen entsprechenden Multiplexer-Ausgang mit einer Bitbreite, die durch Mantissa_Breite eingestellt wird, aufweist.
  • Das Rundungsbit kann durch eine zugehörige Rundungslogikschaltung in dieser Teilschaltung erzeugt werden, die eine Komparatorschaltung 810 enthält, die bestimmt, ob (j-1) gleich einem „Auswahlbereich“ minus 1 ist. Der Begriff „Auswahlbereich“ kann als der maximale programmierte Bereich des Auswahlsignals (d. h. die gesamte mögliche Anzahl von Werten des Auswahlsignals) definiert werden. Wenn der Mantissenselektor zum Beispiel dazu konfiguriert ist, zwei Iterationen durchzuführen, dann ist der Auswahlbereich gleich zwei (d. h. das Auswahlsignal kann 0 oder 1 sein). Ein weiteres Beispiel: Wenn der Mantissenselektor dazu konfiguriert ist, nur eine Iteration durchzuführen, dann ist der Auswahlbereich gleich eins (d. h., das Auswahlsignal kann nur 0 sein).
  • Die Variable j kann dem Index eines bestimmten Abschnitts der Schaltung entsprechen. Wenn also der Mantissenselektor vier verschiedene Mantissenabschnitte produzieren kann, ist der Parameter j für jeden der Mantissenabschnitte gleich 1, 2, 3 oder 4. Wenn deshalb der Auswahlbereich und j beide gleich 1 sind, erzeugt der Komparator 810 ein hohes Ausgangssignal (da j-1 gleich dem Auswahlbereich minus 1 ist). Die Teilschaltung kann ferner ein logisches UND-Gatter 808 enthalten, das konfiguriert ist, das Ausgangssignal von dem Komparator 810 und die verbleibenden Bits des Signifikanden hoher Genauigkeit zu empfangen. Das logische UND-Gatter 808 kann ein bestätigtes Rundungsbit nur dann ausgeben, wenn der Ausgang des Komparators 810 hoch ist und wenn mindestens eines der Bits im empfangenen Mantissenabschnitt hoch ist. Andernfalls gibt das logische UND-Gatter 808 ein geringes Rundungsbit an den entsprechenden Addierer 804 in dieser Teilschaltung aus. Im obigen Beispiel, in dem Auswahlbereich und j beide gleich 1 sind, wird die Rundung für die erste Mantissenkomponente aktiviert, während die verbleibenden Komponenten (2, 3, 4) kein gerundetes Ergebnis produzieren.
  • Der Multiplexer-Ausgang jeder Teilschaltung kann an der Multiplexschaltung 820 empfangen werden, die abhängig von dem Wert des Auswahlsignals aus einem der optional gerundeten Mantissenabschnitte auswählt. Der Mantissenselektor 604 kann ferner einen Unterlaufmultiplexer 830 enthalten, der einen ersten (0) Dateneingang, der zum Empfangen eines Ausgangssignals vom Multiplexer 820 konfiguriert ist, einen zweiten (1) Dateneingang, der zum Empfangen einer logischen „0“ konfiguriert ist, einen Steuereingang, der zum Empfangen des Unterlaufsignals vom Exponentenselektor 602 konfiguriert ist (siehe z. B. 6), und einen Ausgang, an dem die Mantisse geringer Genauigkeit i' bereitgestellt wird, aufweist. Somit wird die Ausgangsmantisse i' im Falle eines Unterlaufs gleich Null sein.
  • Betrachten wir als Beispiel ein Szenario, in dem die ursprüngliche Mantisse hoher Genauigkeit, die in den Mantissenselektor eingegeben wird, die Bits M7M6M5M4M3M2M1M0 aufweist, die Genauigkeit der Punktprodukt-Funktionseinheit 4 Bits beträgt (d. h. Mantissa _Breite = 4) und der Auswahlbereich gleich 2 ist, weil die Anwendung alle 8 Genauigkeitsbits benötigt. Hier kann es zwei mögliche Zerlegungen geben. Da der Auswahlbereich gleich zwei ist, kann das Auswahlsignal nur 0 oder 1 sein. Wenn das Auswahlsignal gleich 0 ist, produziert der Mantissenselektor m7m6m5m4 (d. h. die 4 signifikantesten Bits). Wenn das Auswahlsignal gleich 1 ist, produziert der MantissenSelektor m3m2m1m0 (d. h. die 4 am wenigsten signifikanten Bits); hier findet keine Rundung statt, da es keine verbleibenden Mantissen-Bits gibt.
  • Betrachten wir als weiteres Beispiel ein unterschiedliches Szenario, in dem die ursprüngliche Mantisse hoher Genauigkeit, die in den Mantissenselektor eingegeben wird, die Bits M7M6M5M4M3M2M1M0 aufweist, die Genauigkeit der Punktprodukt-Funktionseinheit 4 Bits beträgt (d. h. Mantissa _Breite = 4), aber der Auswahlbereich auf 1 eingestellt ist, in der Annahme, dass die Anwendung 4 Genauigkeitsbits tolerieren kann oder nur 4 Genauigkeitsbits benötigt. Da der Auswahlbereich gleich eins ist, kann das Auswahlsignal nur 0 sein. Wenn das Auswahlsignal gleich 0 ist, erzeugt der Mantissenselektor m7m6mSm4 plus ein potenzielles Rundungsbit. Hier ist j-1 gleich dem Auswahlbereich minus 1, so dass das Rundungsbit nur dann hoch ist, wenn m3, m2, m1 oder m0 hoch sind.
  • Betrachten wir nun ein numerisches Beispiel, bei dem die Blockgröße 2 ist und die Genauigkeit der Punktprodukt-Funktionseinheit 4 Bit beträgt. Angenommen, die zwei Eingänge des Eingangsselektors sind: i 0 = 1001   0001   0110 i1 = 1110  0011   1000
    Figure DE102020131925A1_0004
    wobei ei gleich 12 ist. Wenn die Anwendung 4 Genauigkeitsbits tolerieren kann, dann würde der Auswahlbereich auf nur 1 eingestellt werden (d. h. das Auswahlsignal ist nur gleich 0), und der Ausgang des Eingangsselektors wäre gleich: i0' = 1001  +   1 Rundung = 1010 i1' = 1110  +   1 Rundung = 1111
    Figure DE102020131925A1_0005
    wobei ei gleich 12 ist und wobei das +1 die Rundung der verbleibenden Bits ist.
  • Wenn in dem obigen Beispiel die Anwendung nur 8 Genauigkeitsbits benötigt, würde der Auswahlbereich auf 2 eingestellt werden (d. h. das Auswahlsignal kann entweder 0 oder 1 sein). In diesem Szenario, wenn das Auswahlsignal gleich 0 ist, wäre der Ausgang des Eingangsselektors gleich: i0' = 1001 i1' = 1110
    Figure DE102020131925A1_0006
    wobei ei = 12. Das Rundungssignal wäre für diese Teilschaltung gering.
  • Wenn das Auswahlsignal gleich 1 ist, wäre der Ausgang des Eingangsselektors gleich: i0' = 0 001  +   1 Rundung = 0010 i1' = 0011  +   1 Rundung = 0100
    Figure DE102020131925A1_0007
    wobei ei = 12 ist und wobei das +1 die Rundung der verbleibenden Bits ist. Die letzte Teilschaltung sendet nie ein Ergebnis aus, da das Auswahlsignal in diesem Anwendungsfall immer nur auf 0 oder 1 eingestellt ist.
  • Wenn in dem obigen Beispiel die Anwendung alle 12 Genauigkeitsbits benötigt, würde der Auswahlbereich auf 3 eingestellt werden (d. h. das Auswahlsignal kann entweder 0, 1 oder 2 sein). In diesem Szenario, wenn das Auswahlsignal gleich 0 ist, wäre der Ausgang des Eingangsselektors gleich: i0' = 1001 i1' = 1110
    Figure DE102020131925A1_0008
    wobei ei = 12. Das Rundungssignal wäre für diese Teilschaltung gering.
  • Wenn das Auswahlsignal gleich 1 ist, wäre der Ausgang des Eingangsselektors gleich: i0' = 0 001 i1' = 00 11
    Figure DE102020131925A1_0009
    wobei ei = 8. Das Rundungssignal wäre auch für diese Teilschaltung gering.
  • Wenn das Auswahlsignal gleich 2 ist, wäre der Ausgang des Eingangsselektors gleich: i0' = 0 110 i1' = 1000
    Figure DE102020131925A1_0010
    wobei ei = 4. Für die letzte Teilschaltung gibt es keine Rundung, da keine verbleibenden Bits mehr vorhanden sind. Das oben beschriebene Rundungsschema dient lediglich der Veranschaulichung und soll den Schutzbereich der vorliegenden Ausführungsformen nicht einschränken. Falls gewünscht, können andere Rundungsschemata, wie etwa Runden auf die nächste gerade Zahl, Runden auf die nächste ungerade Zahl oder vielleicht keine Rundung, implementiert werden.
  • Die oben beschriebenen numerischen Beispiele veranschaulichen die Zerlegung im Zeitverlauf (manchmal auch als zeitliche oder zeitgemultiplexte Zerlegung bezeichnet). 9 ist ein übergeordnetes Blockdiagramm, das veranschaulicht, wie die Zerlegung im Zeitverlauf implementiert werden kann. Wie in 9 gezeigt, kann eine Steuerschaltung, wie etwa ein Genauigkeitszykluszähler 408', zur Ansteuerung des Auswahlsignals verwendet werden, das von Null bis zum Auswahlbereich minus Eins reichen kann. Der Zähler 408' gibt effektiv die Genauigkeit des Punktprodukts vor und kann so programmiert werden, dass unterschiedliche Genauigkeiten für unterschiedliche Punktprodukte möglich sind. Beispielhaft ergibt dann bei einer Matrixeinheit 406, die einen 4-Bit-Block-Gleitkomma-Signifikanden unterstützt, 1 Zyklus 4 Genauigkeitsbits, während 2 Zyklen 8 Genauigkeitsbits ergeben, und so weiter.
  • 10 veranschaulicht noch eine weitere potenzielle Realisierung, bei der mehrere Matrix- /Vektoreinheiten geringer Genauigkeit verwendet werden, um die verschiedenen Mantissenabschnitte parallel zu verarbeiten. Wie in 10 gezeigt, erhält jede Matrix-/Vektoreinheit eine unterschiedliche zerlegte Komponente der Zahl hoher Genauigkeit, woraufhin eine Reduktionsstufe 1002 folgt, um die Ergebnisse neu zu kombinieren. Zum Beispiel werden die Eingangsselektoren 404-1a, die einem Auswahlsignal von 0 zugehörig sind, unter Verwendung einer ersten Block-Gleitkomma-Vektoreinheit geringer Genauigkeit 406a verarbeitet, während die Eingangsselektoren 404-1b, die einem Auswahlsignal des Selektionsbereichs minus eins zugehörig sind, unter Verwendung einer weiteren Block-Gleitkomma-Vektoreinheit geringer Genauigkeit 406b verarbeitet werden. Diese Art der Signalzerlegung wird manchmal auch als „räumliche“ Zerlegung bezeichnet.
  • Im Allgemeinen können die oben in Bezug auf 1-10 beschriebenen Ausführungsformen auf jeden maschinellen Lernprozess angewendet werden, einschließlich, aber nicht beschränkt auf neuronale Netzwerke mit 5-10 Schichten, weniger als 5 Schichten, 10-100 Schichten, 100-1000 Schichten oder mehr als 1000 Schichten, oder sie können auf andere rechenintensive Algorithmen angewendet werden. Diese Ausführungsformen können optional als Teil eines Systems, wie eines Datenzentrums oder eines Datenverarbeitungssystems, zur Verarbeitung einer Vielzahl unterschiedlicher Anfragen (z. B. einer Datenverarbeitungsanfrage zur Durchführung von Verschlüsselung, Entschlüsselung, maschinellem Lernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbank-Suchranking, Bioinformatik, Identifizierung von Netzwerksicherheitsmustern, räumlicher Navigation oder anderen spezialisierten Aufgabe) implementiert werden. Als weitere Beispiele können diese Ausführungsformen auf ein Computernetzwerksystem, ein Datennetzwerksystem, ein digitales Signalverarbeitungssystem, ein Grafikverarbeitungssystem, ein Videoverarbeitungssystem, ein Computer-Vision-Verarbeitungssystem, eine zellulare Basisstation, ein Virtual-Reality- oder Augmented-Reality-System, eine Netzwerkfunktions-Virtualisierungsplattform, ein künstliches neuronales Netzwerk, ein autonomes Fahrsystem, eine Kombination von zumindest einigen dieser Systeme und/oder andere geeignete Arten von Computersystemen angewendet werden.
  • BEISPIELE:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine Schaltungsanordnung, umfassend: eine Speicherschaltung, die dazu konfiguriert ist, eine Gleitkommazahl mit einer ersten Genauigkeit auszugeben; eine Eingangsauswahlschaltung, die dazu konfiguriert ist, die Gleitkommazahl von der Speicherschaltung zu empfangen und die empfangene Gleitkommazahl in entsprechende zerlegte Komponenten zu zerlegen, die eine zweite Genauigkeit aufweisen, die geringer ist als die erste Genauigkeit; und eine Gleitkomma-Vektorschaltung, die dazu konfiguriert ist, die zerlegten Komponenten von der Eingangsauswahlschaltung zu empfangen.
  • Beispiel 2 ist die Schaltungsanordnung aus Beispiel 1, wobei die Speicherschaltung ferner optional dazu konfiguriert ist, eine zusätzliche, die erste Genauigkeit aufweisende Gleitkommazahl auszugeben, und wobei die Eingangsauswahlschaltung ferner optional dazu konfiguriert ist, die zusätzliche Gleitkommazahl von der Speicherschaltung zu empfangen und die zusätzliche Gleitkommazahl in entsprechende zerlegte, die zweite Genauigkeit aufweisende Komponenten zu zerlegen.
  • Beispiel 3 ist die Schaltungsanordnung aus Beispiel 2, wobei die Gleitkommazahl und die zusätzliche Gleitkommazahl optional denselben Exponentenwert aufweisen.
  • Beispiel 4 ist die Schaltungsanordnung aus einem der Beispiele 1-3, wobei die Speicherschaltung ferner optional dazu konfiguriert ist, eine zusätzliche Gleitkommazahl auszugeben, wobei die Schaltungsanordnung optional ferner umfasst: eine zusätzliche Eingangsauswahlschaltung, die dazu konfiguriert ist, die zusätzliche Gleitkommazahl von der Speicherschaltung zu empfangen und die zusätzliche Gleitkommazahl in entsprechende zerlegte Komponenten zu zerlegen.
  • Beispiel 5 ist die Schaltungsanordnung aus einem der Beispiel 1-4, wobei die Gleitkomma-Vektorschaltung optional eine Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
  • Beispiel 6 ist die Schaltungsanordnung aus einem der Beispiele 1-5, wobei die Gleitkomma-Vektorschaltung optional eine Block-Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
  • Beispiel 7 ist die Schaltungsanordnung aus einem der Beispiele 1-6, wobei die Gleitkomma-Vektorschaltung optional umfasst: eine Vielzahl von Multiplizierschaltungen; und einen Addiererbaum, der dazu konfiguriert ist, Signale von der Vielzahl der Multiplizierschaltungen zu empfangen.
  • Beispiel 8 ist die Schaltungsanordnung aus einem der Beispiele 1-7, die optional ferner umfasst: eine Genauigkeitssteuereinrichtung, die dazu konfiguriert ist, ein Auswahlsignal zu erzeugen, das der Eingangsauswahlschaltung zugeführt wird.
  • Beispiel 9 ist die Schaltungsanordnung aus Beispiel 8, wobei die Genauigkeitssteuereinrichtung optional einen Genauigkeitszykluszähler umfasst.
  • Beispiel 10 ist die Schaltungsanordnung aus Beispiel 8, wobei die Eingangsauswahlschaltung optional umfasst: eine Exponentenauswahlschaltung, die dazu konfiguriert ist, einen Exponenten der Gleitkommazahl zu empfangen und einen entsprechenden angepassten Exponenten auszugeben; und eine Mantissenauswahlschaltung, die dazu konfiguriert ist, die zerlegten, die zweite Genauigkeit aufweisenden Komponenten auszugeben.
  • Beispiel 11 ist die Schaltungsanordnung aus Beispiel 10, wobei die Exponentenauswahlschaltung optional umfasst: eine Subtraktionsschaltung, die dazu konfiguriert ist, eine Differenz zwischen dem empfangenen Exponenten und einer Zahl, die eine Funktion des Wertes des Auswahlsignals ist, zu berechnen.
  • Beispiel 12 ist die Schaltungsanordnung aus Beispiel 11, wobei die Exponentenauswahlschaltung optional ferner umfasst: einen Unterlaufkomparator; und einen Schaltkreis, der dazu konfiguriert ist, die berechnete Differenz von der Subtraktionsschaltung zu empfangen, ein Unterlaufsignal von dem Unterlaufkomparator zu empfangen und den angepassten Exponenten auszugeben.
  • Beispiel 13 ist die Schaltungsanordnung aus einem der Beispiele 10-12, wobei die Mantissenauswahlschaltung optional umfasst: eine Vielzahl von Teilschaltungen, von denen jede dazu konfiguriert ist, eine entsprechende Komponente der zerlegten Komponenten auszugeben.
  • Beispiel 14 ist die Schaltungsanordnung aus Beispiel 13, wobei mindestens eine der Vielzahl von Teilschaltungen optional umfasst: einen Addierer; Rundungslogik, die dazu konfiguriert ist, ein Rundungsbit an den Addierer auszugeben; einen Überlaufkomparator, der dazu konfiguriert ist, Signale von dem Addierer zu empfangen; und einen Multiplexer, der dazu konfiguriert ist, Signale von dem Addierer und dem Überlaufkomparator zu empfangen.
  • Beispiel 15 ist die Schaltungsanordnung aus einem der Beispiele 13-14, wobei die Mantissenauswahlschaltung ferner optional umfasst: eine Multiplexschaltung, die Dateneingänge aufweist, die dazu konfiguriert sind, die zerlegten Komponenten von der Vielzahl von Teilschaltungen zu empfangen, und einen Steuerungseingang, der dazu konfiguriert ist, das Auswahlsignal von der Genauigkeitssteuereinrichtung zu empfangen.
  • Beispiel 16 ist eine Schaltungsanordnung, die zur Unterstützung einer Anwendung betreibbar ist, umfassend: eine Schaltung, die dazu konfiguriert ist, Gleitkommazahlen bereitzustellen; und einen Eingangsselektor, der dazu konfiguriert ist, die Gleitkommazahlen in entsprechende Komponenten geringerer Genauigkeit zu zerlegen und ein Auswahlsignal zu empfangen, das einen ersten Auswahlbereich aufweist, wenn die Anwendung einen ersten Genauigkeitsbetrag verwendet, und einen zweiten Auswahlbereich, der sich von dem ersten Auswahlbereich unterscheidet, wenn die Anwendung einen zweiten Genauigkeitsbetrag verwendet, der sich von dem ersten Genauigkeitsbetrag unterscheidet.
  • Beispiel 17 ist die Schaltungsanordnung aus Beispiel 16, wobei die Komponenten geringerer Genauigkeit optional selektiv gerundet werden.
  • Beispiel 18 ist die Schaltungsanordnung aus einem der Beispiele 16-17, die optional ferner umfasst: eine Genauigkeitszykluszählerschaltung, die dazu konfiguriert ist, das Auswahlsignal zu erzeugen, um die Zerlegung im Zeitverlauf zu implementieren.
  • Beispiel 19 ist eine Schaltungsanordnung, die umfasst: eine erste Gruppe von Eingangsselektoren, die dazu konfiguriert sind, Gleitkommazahlen hoher Genauigkeit zu empfangen und entsprechende erste zerlegte Komponenten geringerer Genauigkeit zu erzeugen; eine erste Gleitkomma-Matrixschaltung geringerer Genauigkeit, die dazu konfiguriert ist, die ersten zerlegten Komponenten geringerer Genauigkeit von der ersten Gruppe von Eingangsselektoren zu empfangen; eine zweite Gruppe von Eingangselektoren, die dazu konfiguriert sind, die Gleitkommazahlen hoher Genauigkeit zu empfangen und entsprechende zweite zerlegte Komponenten geringerer Genauigkeit zu erzeugen; und eine zweite Gleitkomma-Matrixschaltung geringerer Genauigkeit, die dazu konfiguriert ist, die zweiten zerlegten Komponenten geringerer Genauigkeit von der zweiten Gruppe von Eingangsselektoren zu empfangen.
  • Beispiel 20 ist die Schaltungsanordnung aus Beispiel 19, die optional ferner umfasst: eine Reduktionsschaltung, die dazu konfiguriert ist, Signale zu kombinieren, die von der ersten und zweiten Gleitkomma-Matrixschaltung geringerer Genauigkeit erzeugt werden.
  • Zum Beispiel können alle optionalen Merkmale des oben beschriebenen Geräts auch in Bezug auf das hierin beschriebene Verfahren oder den hierin beschriebenen Prozess implementiert werden. Das Vorstehende ist lediglich eine Veranschaulichung der Prinzipien dieser Offenbarung und verschiedene Modifikationen können vom Fachmann vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in beliebiger Kombination implementiert werden.

Claims (25)

  1. Schaltungsanordnung, umfassend: eine Speicherschaltung, die dazu konfiguriert ist, eine eine erste Genauigkeit aufweisende Gleitkommazahl auszugeben; eine Eingangsauswahlschaltung, die dazu konfiguriert ist, die Gleitkommazahl von der Speicherschaltung zu empfangen und die empfangene Gleitkommazahl in entsprechende zerlegte Komponenten zu zerlegen, die eine zweite Genauigkeit aufweisen, die geringer ist als die erste Genauigkeit; und eine Gleitkomma-Vektorschaltung, die dazu konfiguriert ist, die zerlegten Komponenten von der Eingangsauswahlschaltung zu empfangen.
  2. Schaltungsanordnung nach Anspruch 1, wobei die Speicherschaltung ferner dazu konfiguriert ist, eine zusätzliche, die erste Genauigkeit aufweisende Gleitkommazahl auszugeben, und wobei die Eingangsauswahlschaltung ferner dazu konfiguriert ist, die zusätzliche Gleitkommazahl von der Speicherschaltung zu empfangen und die zusätzliche Gleitkommazahl in entsprechende zerlegte, die zweite Genauigkeit aufweisende Komponenten zu zerlegen.
  3. Schaltungsanordnung nach Anspruch 2, wobei die Gleitkommazahl und die zusätzliche Gleitkommazahl denselben Exponentenwert aufweisen.
  4. Schaltungsanordnung nach Anspruch 1, wobei die Speicherschaltung ferner dazu konfiguriert ist, eine zusätzliche Gleitkommazahl auszugeben, ferner umfassend: eine zusätzliche Eingangsauswahlschaltung, die dazu konfiguriert ist, die zusätzliche Gleitkommazahl von der Speicherschaltung zu empfangen und die zusätzliche Gleitkommazahl in entsprechende zerlegte Komponenten zu zerlegen.
  5. Schaltungsanordnung nach einem der Ansprüche 1-4, wobei die Gleitkomma-Vektorschaltung eine Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
  6. Schaltungsanordnung nach einem der Ansprüche 1-4, wobei die Gleitkomma-Vektorschaltung eine Block-Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
  7. Schaltungsanordnung nach einem der Ansprüche 1-6, wobei die Gleitkomma-Vektorschaltung umfasst: eine Vielzahl von Multiplizierschaltungen; und einen Addiererbaum, der dazu konfiguriert ist, Signale von der Vielzahl der Multiplizierschaltungen zu empfangen.
  8. Schaltungsanordnung nach einem der Ansprüche 1-7, ferner umfassend: eine Genauigkeitssteuereinrichtung, die dazu konfiguriert ist, ein Auswahlsignal zu erzeugen, das der Eingangsauswahlschaltung zugeführt wird.
  9. Schaltungsanordnung nach Anspruch 8, wobei die Genauigkeitssteuereinrichtung einen Genauigkeitszykluszähler umfasst.
  10. Schaltungsanordnung nach Anspruch 8, wobei die Eingangsauswahlschaltung umfasst: eine Exponentenauswahlschaltung, die dazu konfiguriert ist, einen Exponenten der Gleitkommazahl zu empfangen und einen entsprechenden angepassten Exponenten auszugeben; und eine Mantissenauswahlschaltung, die dazu konfiguriert ist, die zerlegten, die zweite Genauigkeit aufweisenden Komponenten auszugeben.
  11. Schaltungsanordnung nach Anspruch 10, wobei die Exponentenauswahlschaltung umfasst: eine Subtraktionsschaltung, die dazu konfiguriert ist, eine Differenz zwischen dem empfangenen Exponenten und einer Zahl, die eine Funktion des Wertes des Auswahlsignals ist, zu berechnen.
  12. Schaltungsanordnung nach Anspruch 11, wobei die Exponentenauswahlschaltung ferner umfasst: einen Unterlaufkomparator; und einen Schaltkreis, der dazu konfiguriert ist, die berechnete Differenz von der Subtraktionsschaltung zu empfangen, ein Unterlaufsignal von dem Unterlaufkomparator zu empfangen und den angepassten Exponenten auszugeben.
  13. Schaltungsanordnung nach einem der Ansprüche 10-12, wobei die Mantissenauswahlschaltung umfasst: eine Vielzahl von Teilschaltungen, von denen jede dazu konfiguriert ist, eine entsprechende Komponente der zerlegten Komponenten auszugeben.
  14. Schaltungsanordnung nach Anspruch 13, wobei mindestens eine der Vielzahl von Teilschaltungen umfasst: einen Addierer; Rundungslogik, die dazu konfiguriert ist, ein Rundungsbit an den Addierer auszugeben; einen Überlaufkomparator, der dazu konfiguriert ist, Signale von dem Addierer zu empfangen; und einen Multiplexer, der dazu konfiguriert ist, Signale von dem Addierer und dem Überlaufkomparator zu empfangen.
  15. Schaltungsanordnung nach einem der Ansprüche 13-14, wobei die Mantissenauswahlschaltung ferner umfasst: eine Multiplexschaltung, die Dateneingänge aufweist, die dazu konfiguriert sind, die zerlegten Komponenten von der Vielzahl von Teilschaltungen zu empfangen, und einen Steuerungseingang, der dazu konfiguriert ist, das Auswahlsignal von der Genauigkeitssteuereinrichtung zu empfangen.
  16. Schaltungsanordnung, die zur Unterstützung einer Anwendung betreibbar ist, umfassend: eine Schaltung, die dazu konfiguriert ist, Gleitkommazahlen bereitzustellen; und einen Eingangsselektor, der dazu konfiguriert ist, die Gleitkommazahlen in entsprechende Komponenten geringerer Genauigkeit zu zerlegen und ein Auswahlsignal zu empfangen, das einen ersten Auswahlbereich aufweist, wenn die Anwendung einen ersten Genauigkeitsbetrag verwendet, und einen zweiten Auswahlbereich, der sich von dem ersten Auswahlbereich unterscheidet, wenn die Anwendung einen zweiten Genauigkeitsbetrag verwendet, der sich von dem ersten Genauigkeitsbetrag unterscheidet.
  17. Schaltungsanordnung nach Anspruch 16, wobei die Komponenten geringerer Genauigkeit selektiv gerundet werden.
  18. Schaltungsanordnung nach einem der Ansprüche 16-17, ferner umfassend: eine Genauigkeitszykluszählerschaltung, die dazu konfiguriert ist, das Auswahlsignal zu erzeugen, um die Zerlegung im Zeitverlauf zu implementieren.
  19. Schaltungsanordnung, umfassend: eine erste Gruppe von Eingangsselektoren, die dazu konfiguriert sind, Gleitkommazahlen hoher Genauigkeit zu empfangen und entsprechende erste zerlegte Komponenten geringerer Genauigkeit zu erzeugen; eine erste Gleitkomma-Matrixschaltung geringerer Genauigkeit, die dazu konfiguriert ist, die ersten zerlegten Komponenten geringerer Genauigkeit von der ersten Gruppe von Eingangsselektoren zu empfangen; eine zweite Gruppe von Eingangselektoren, die dazu konfiguriert sind, die Gleitkommazahlen hoher Genauigkeit zu empfangen und entsprechende zweite zerlegte Komponenten geringerer Genauigkeit zu erzeugen; und eine zweite Gleitkomma-Matrixschaltung geringerer Genauigkeit, die dazu konfiguriert ist, die zweiten zerlegten Komponenten geringerer Genauigkeit von der zweiten Gruppe von Eingangsselektoren zu empfangen.
  20. Schaltungsanordnung nach Anspruch 19, ferner umfassend: eine Reduktionsschaltung, die dazu konfiguriert ist, Signale zu kombinieren, die von der ersten und zweiten Gleitkomma-Matrixschaltung geringerer Genauigkeit erzeugt werden.
  21. Schaltungsanordnung, umfassend: ein Speichermittel zum Ausgeben einer eine erste Genauigkeit aufweisenden Gleitkommazahl; ein Auswahlmittel zum Empfangen der Gleitkommazahl und zum Zerlegen der empfangenen Gleitkommazahl in entsprechende zerlegte Komponenten, die eine zweite Genauigkeit aufweisen, die geringer ist als die erste Genauigkeit; und ein Gleitkommamittel zum Empfangen der zerlegten Komponenten.
  22. Schaltungsanordnung nach Anspruch 21, wobei das Speichermittel ferner dazu konfiguriert ist, eine zusätzliche, die erste Genauigkeit aufweisende Gleitkommazahl auszugeben, und wobei das Auswahlmittel ferner dazu konfiguriert ist, die zusätzliche Gleitkommazahl von dem Speichermittel zu empfangen und die zusätzliche Gleitkommazahl in entsprechende zerlegte, die zweite Genauigkeit aufweisende Komponenten zu zerlegen.
  23. Schaltungsanordnung nach Anspruch 22, wobei die Gleitkommazahl und die zusätzliche Gleitkommazahl denselben Exponentenwert aufweisen.
  24. Schaltungsanordnung nach einem der Ansprüche 21-23, wobei das Gleitkommamittel eine Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
  25. Schaltungsanordnung nach einem der Ansprüche 21-23, wobei das Gleitkommamittel eine Block-Gleitkomma-Punktprodukt-Funktionseinheit umfasst.
DE102020131925.8A 2020-03-13 2020-12-02 Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit Pending DE102020131925A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/818,889 US20200218508A1 (en) 2020-03-13 2020-03-13 Floating-point decomposition circuitry with dynamic precision
US16/818,889 2020-03-13

Publications (1)

Publication Number Publication Date
DE102020131925A1 true DE102020131925A1 (de) 2021-09-16

Family

ID=71405098

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020131925.8A Pending DE102020131925A1 (de) 2020-03-13 2020-12-02 Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit

Country Status (3)

Country Link
US (2) US20200218508A1 (de)
CN (1) CN113391785A (de)
DE (1) DE102020131925A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220300254A1 (en) * 2021-03-22 2022-09-22 Rebellions Inc. Processing element, neural processing device including same, and method for calculating thereof
GB2621135A (en) * 2022-08-01 2024-02-07 Advanced Risc Mach Ltd Methods and systems employing enhanced block floating point numbers
GB2621136A (en) * 2022-08-01 2024-02-07 Advanced Risc Mach Ltd Floating point number decoder
CN117348839B (zh) * 2023-12-06 2024-02-13 西北工业大学 一种多精度低开销加法器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764556A (en) * 1995-07-18 1998-06-09 Advanced Micro Devices, Inc. Method and apparatus for performing floating point addition
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US8533246B2 (en) * 2008-12-12 2013-09-10 Intel Corporation Carry bucket-aware multiplication having bits with most significant bits set to zero
US10691413B2 (en) * 2018-05-04 2020-06-23 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors
US20190340499A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Quantization for dnn accelerators
US10853067B2 (en) * 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US11586883B2 (en) * 2018-12-14 2023-02-21 Microsoft Technology Licensing, Llc Residual quantization for neural networks
US11188303B2 (en) * 2019-10-02 2021-11-30 Facebook, Inc. Floating point multiply hardware using decomposed component numbers
CN112711738A (zh) * 2019-10-25 2021-04-27 安徽寒武纪信息科技有限公司 用于向量内积的计算装置、方法和集成电路芯片
CN116594589B (zh) * 2019-12-31 2024-03-26 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN115934030B (zh) * 2020-01-20 2024-01-16 华为技术有限公司 算数逻辑单元、浮点数乘法计算的方法及设备

Also Published As

Publication number Publication date
CN113391785A (zh) 2021-09-14
US20240126506A1 (en) 2024-04-18
US20200218508A1 (en) 2020-07-09

Similar Documents

Publication Publication Date Title
DE102020131925A1 (de) Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit
DE102018108431A1 (de) Mischgenauigkeitsgleitkommaarithmetik-schaltungsanordnung in spezialisierten verarbeitungsblöcken
DE102014015353B4 (de) Dynamikkompression
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
EP0123921B1 (de) Parallelverknüpfungsschaltung mit verkürztem Übertragsdurchlauf
DE102020120371A1 (de) Integrierte schaltungen mit modularen multiplikationsschaltkreisen
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE102019120838A1 (de) Dynamische Gleitkommabereichserweiterung
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE3700991A1 (de) Digitaler uebertragsvorgriffsaddierer
DE19839627A1 (de) Digitaler Signalprozessor
DE602004006841T2 (de) Elektronischer schaltkreis mit einem feld programmierbarer logischer zellen
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE112017004291T5 (de) Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation
DE3926876A1 (de) Schaltung und verfahren zur vorhersage eines sticky-bits bei der gleitpunktmultiplikation
DE112011104770B4 (de) Apparat und Verfahren zum gemeinsamen Vektoreinheit Benutzen
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE4444304A1 (de) Verfahren zum Erzeugen eines zusammengesetzten Videobildes
DE102004056738B3 (de) Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung
DE102017113594A1 (de) Computerimplementiertes Verfahren zur Simulation einer elektrischen Gesamtschaltung
EP1068580B1 (de) Verfahren zum vergleich elektrischer schaltungen
DE19644688A1 (de) Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2 APPROX )
EP3869380A1 (de) Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen