DE102020105536A1 - Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen - Google Patents

Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen Download PDF

Info

Publication number
DE102020105536A1
DE102020105536A1 DE102020105536.6A DE102020105536A DE102020105536A1 DE 102020105536 A1 DE102020105536 A1 DE 102020105536A1 DE 102020105536 A DE102020105536 A DE 102020105536A DE 102020105536 A1 DE102020105536 A1 DE 102020105536A1
Authority
DE
Germany
Prior art keywords
floating point
blocks
format
adder
point format
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
DE102020105536.6A
Other languages
English (en)
Inventor
Martin Langhammer
Sergey Gribok
Gregg Baeckler
Bogdan Pasca
Andrei Hagiescu
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 DE102020105536A1 publication Critical patent/DE102020105536A1/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Nonlinear Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

Eine programmierbare Vorrichtung kann ausgelegt sein, Trainingsvorgänge für maschinelles Lernen unter Verwendung von Matrixmultiplikationsverschaltung zu unterstützen, die auf einer systolischen Anordnung implementiert ist. Die systolische Anordnung enthält eine Anordnung von Verarbeitungselementen, von denen jedes eine Hybrid-Gleitkomma-Skalarprodukt-Verschaltung enthält. Die Hybrid-Skalarprodukt-Verschaltung weist einen harten Datenpfad, der digitale Signalverarbeitungsblöcke (DSP-Blöcke) verwendet, die in einem Gleitkomma-Modus arbeiten, und einen harten/weichen Datenpfad, der digitale DSP-Blöcke verwendet, die in einem Festkomma-Modus arbeiten, der zusammen mit Universal-Softlogik betrieben wird, auf. Der harte/weiche Datenpfad enthält 2-Element-Skalarproduktschaltkreise, die einen Addierbaum speisen. Ergebnisse vom harten Datenpfad werden mit dem Addierbaum unter Verwendung von Formatumwandlungs- und Normalisierungsverschaltung kombiniert. Eingaben in die Hybrid-Skalarprodukt-Verschaltung können im BFLOAT16-Format sein. Der harte Datenpfad kann im Format mit einfacher Genauigkeit sein. Der harte/weiche Datenpfad verwendet ein maßgeschneidertes Format, das BFLOAT16 ähnlich, aber von diesem verschieden ist.

Description

  • Diese Anmeldung beansprucht den Vorteil der vorläufigen Patentanmeldung Nr. 62/824,797, angemeldet am 27. März 2019, die hierdurch hierin unter Bezugnahme in ihrer Gesamtheit aufgenommen ist.
  • Stand der Technik
  • Diese Erfindung betrifft allgemein integrierte Schaltkreise und insbesondere programmierbare integrierte Schaltkreise, die ausgelegt sind, maschinelles Lernen zu unterstützen.
  • Programmierbare integrierte Schaltkreise, wie programmierbare Logikvorrichtungen (PLDs), enthalten eine konfigurierbare Logikverschaltung mit Nachschlagetabellen (LUTs) und Logik auf Addiererbasis, die ausgelegt ist, einem Benutzer zu ermöglichen, die Verschaltung an die bestimmten Anforderungen des Benutzers anzupassen. Zusätzlich zu dieser konfigurierbaren Logik enthalten PLDs auch programmierbare Zwischenverbindungs- oder Leitverschaltung, die verwendet wird, um die Eingänge und Ausgänge der konfigurierbaren Logikblöcke zu verbinden. Die Kombination dieser programmierbaren Logik- und Leitverschaltung wird als „Softlogik“ bezeichnet.
  • Abgesehen von Softlogik können PLDs auch spezialisierte Verarbeitungsblöcke enthalten, die bestimmte vordefinierte Logikfunktionen implementieren und deshalb nicht vom Benutzer konfiguriert werden können. Derartige spezialisierte Verarbeitungsblöcke können eine Konzentration von Verschaltung auf einer PLD enthalten, die teilweise oder vollständig festverdrahtet wurde, um eine oder mehrere bestimmte Aufgaben durchzuführen, wie eine logische oder eine mathematische Operation. Ein besonders nützlicher Typ von spezialisiertem Verarbeitungsblock, der auf PLDs bereitgestellt wurde, ist ein digitaler Signalverarbeitungsblock (DSP-Block). Ein herkömmlicher DSP-Block enthält zwei 18-mal-18-Multiplikatoren, die mit einer anderen internen Verschaltung kombiniert werden können, um einen größeren 27-mal-27-Multiplikator zu bilden. Der 27-mal-27-Multiplikator wird als Teil eines IEEE-754-Gleitkomma-Multiplikators mit einfacher Genauigkeit verwendet, der 24 Bits an Genauigkeit erfordert.
  • Neueste Entwicklungen bei künstlicher Intelligenz, wie Fortschritte bei maschinellem Lernen und mehrschichtigem Lernen involvieren Training und Inferenz, die eine viel höhere Multiplikationsdichte erforderlich machten. Im Gegensatz zur Inferenz, die relativ einfachere Mathematik und einen relativ einfacheren Datenfluss verwendet, involviert maschinelles Lerntraining große komplexe Matrixmultiplikationen, die Zugriff auf externen Arbeitsspeicher erfordern. Der Zugriff auf externen Arbeitsspeicher ist jedoch durch eine externe Arbeitsspeicherbandbreite und Einschränkungen bei der internen Bandbreitenverwaltung eingeschränkt. Eine Verwendung herkömmlicher Gleitkomma-Multiplikatoren zur Unterstützung komplexer Trainingsoperationen auf PLDs kann unzureichend sein. Eine Verwendung von zu viel Softlogik in Verbindung mit den herkömmlichen Gleitkomma-Multiplikatoren zur Unterstützung von Training tendiert auch dazu, Probleme bei Angleichung und abschließender Taktgebung zu erzeugen.
  • In diesem Zusammenhang ergeben sich die hierin beschriebenen Ausführungsformen.
  • Figurenliste
    • 1 ist ein Diagramm eines veranschaulichenden programmierbaren integrierten Schaltkreises nach einer Ausführungsform.
    • 2 ist ein Diagramm einer veranschaulichenden Trainingsverschaltung für maschinelles Lernen nach einer Ausführungsform.
    • 3 ist ein Diagramm eines Verarbeitungselements einer systolischen Anordnung nach einer Ausführungsform.
    • 4 ist ein Diagramm, das eine veranschaulichende Matrixzuordnung zu einer Anordnung von Verarbeitungselementen nach einer Ausführungsform zeigt.
    • 5A ist ein Diagramm eines veranschaulichenden Hybrid-Gleitkomma-16-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform.
    • 5B ist ein Diagramm eines veranschaulichenden 2-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform.
    • 6A ist ein Diagramm eines klassischen Gleitkomma-Multiplikators.
    • 6B ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Multiplikators innerhalb des in 5B gezeigten 2-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform.
    • 7A ist ein Diagramm eines klassischen Gleitkomma-Addierers.
    • 7B ist ein Diagramm eines veranschaulichenden Gleitkomma-Addierers innerhalb des in 5B gezeigten 2-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform.
    • 7C ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Addierers in einer ersten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung von 5A nach einer Ausführungsform.
    • 7D ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Addierers in einer zweiten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung von 5A nach einer Ausführungsform.
    • 7E ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Addierers in einer dritten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung von 5A nach einer Ausführungsform.
    • 8 ist ein Diagramm eines veranschaulichenden Gleitkomma-Formatumwandlungsschaltkreises innerhalb des in 5A gezeigten Hybrid-Gleitkomma-Skalarprodukt-Schaltkreises nach einer Ausführungsform.
    • 9 ist ein Diagramm eines veranschaulichenden Normalisierungsschaltkreises innerhalb der in 5A gezeigten Hybrid-Gleitkomma-Skalarprodukt-Verschaltung nach einer Ausführungsform.
    • 10A ist ein Diagramm einer veranschaulichenden Barrel-Verschiebungseinheit.
    • 10B und 10C sind Diagramme von veranschaulichenden Barrel-Verschiebungsschaltkreisen auf Grundlage von Übertragsketten nach einigen Ausführungsformen.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen betreffen einen programmierbaren integrierten Schaltkreis und insbesondere Verschaltung auf einem programmierbaren integrierten Schaltkreis zur effizienten Unterstützung von maschinellem Lerntraining. Es ist für Fachleute ersichtlich, dass die vorliegenden Ausführungsbeispiele ohne einige oder alle dieser spezifischen Details ausgeführt werden können. In anderen Fällen wurden wohlbekannte Vorgänge nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.
  • Eine veranschaulichende Ausführungsform eines integrierten Schaltkreises wie einer programmierbaren Logikvorrichtung (PLD) 100 ist in 1 gezeigt. Wie in 1 gezeigt, kann die programmierbare Logikvorrichtung 100 eine zweidimensionale Anordnung von funktionalen Blöcken enthalten, einschließlich von Logikanordnungsblöcken (LABs) 110 und andere funktionale Blöcke, wie Arbeitsspeicherblöcke mit wahlfreiem Zugriff (RAM-Blöcke) 130 und spezialisierte Verarbeitungsblöcke wie spezialisierte Verarbeitungsblöcke (SPB) 120, die teilweise oder gänzlich festverdrahtet sind, um eine oder mehrere bestimmte Aufgaben durchzuführen, wie mathematische/arithmetische Operationen. Funktionale Blöcke wie die LABs 110 können kleinere programmierbare Bereiche (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und benutzerdefinierte Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen. Die Vorrichtung 100 kann ferner programmierbare Routing-Fabric enthalten, die verwendet wird, um die LABs 110 mit den RAM-Blöcken 130 und den spezialisierten Verarbeitungsblöcken 120 (die manchmal als digitale Signalverarbeitungs- oder DSP-Blöcke bezeichnet werden) zu verbinden. Die Kombination der programmierbaren Logik und der Routing-Fabric wird manchmal als „Softlogik“ bezeichnet, wohingegen die DSP-Blöcke manchmal als „harte“ Logik bezeichnet werden (d. h. Schaltkreisblöcke, die unabhängig von der Softlogik arbeiten können und nicht auf dieser beruhen). Im Allgemeinen kann die Vorrichtung 100 auch andere Arten von harter Logikverschaltung enthalten.
  • Die programmierbare Logikvorrichtung 100 (z. B. ein feldprogrammierbares Gatearray oder „FPGA“) kann programmierbare Arbeitsspeicherelemente zum Konfigurieren der Softlogik beinhalten. In die Arbeitsspeicherelemente können unter Verwendung von Eingabe-Ausgabe-Elementen (EAEs) 102 Konfigurationsdaten (auch Programmierdaten genannt) geladen werden. Nach dem Laden stellen die Arbeitsspeicherelemente entsprechende statische Steuersignale bereit, die die Operation eines oder mehrerer LABs 110, der programmierbaren Routing-Fabric und optional der SPBs 120 oder RAMs 130 steuern. In einem typischen Szenario werden die Ausgaben der geladenen Arbeitsspeicherelemente an die Gatter von Metall-Oxid-Halbleitertransistoren (z. B. Durchgangstransistoren) angelegt, um bestimmte Transistoren ein- oder auszuschalten und dadurch die Logik im funktionalen Block einschließlich der Leitungspfade zu konfigurieren. Programmierbare Logikschaltkreiselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexern (z. B. Multiplexer, die zum Bilden von Leitungspfaden in Zwischenverbindungsschaltkreisen verwendet werden), Nachschlagetabellen, Logikanordnungen, AND-, OR-, NAND- und NOR-Logikgatter, Durchgangsgatter usw.
  • Die Arbeitsspeicherelemente können beliebige geeignete flüchtige und/oder nichtflüchtige Arbeitsspeicherstrukturen wie Direktzugriffsarbeitsspeicher(RAM)-Zellen, Sicherungen, Antisicherungen, programmierbare Direktzugriffsarbeitsspeicher-Zellen, maskenprogrammierte und laserprogrammierte Strukturen, mechanische Arbeitsspeichervorrichtungen (z. B. einschließlich lokalisierter mechanischer Resonatoren), mechanisch betriebenen RAM (MORAM), programmierbare Metallisierungszellen (PMCs), leitend überbrückenden RAM (CBRAM), Kombinationen dieser Strukturen usw. verwenden. Da Konfigurationsdaten während der Programmierung in die Arbeitsspeicherelemente geladen werden, werden die Arbeitsspeicherelemente manchmal als Konfigurationsarbeitsspeicher, Konfigurations-RAM (CRAM), Konfigurationsarbeitsspeicherelemente oder programmierbare Arbeitsspeicherelemente bezeichnet.
  • Darüber hinaus kann die programmierbare Logikvorrichtung 100 Eingabe/Ausgabe-Elemente (EAEs) 102 zum Steuern von Signalen von der Vorrichtung 100 weg und zum Empfangen von Signalen von anderen Vorrichtungen aufweisen. Die Eingabe/Ausgabe-Elemente 102 können parallele Eingabe/Ausgabe-Verschaltung, serielle Daten-Sende-Empfänger-Verschaltung, differenzielle Empfänger- und Sender-Verschaltung oder eine andere Verschaltung enthalten, die verwendet wird, um einen integrierten Schaltkreis mit einem anderen integrierten Schaltkreis zu verbinden. Wie gezeigt können die Eingabe/Ausgabe-Elemente 102 um die Peripherie des Chips angeordnet sein. Falls gewünscht, kann die programmierbare Logikvorrichtung die Eingabe/Ausgabe-Elemente 102 auf unterschiedliche Weisen angeordnet aufweisen. Beispielsweise können die Eingabe/Ausgabe-Elemente 102 einen oder mehrere Spalten von Eingabe/Ausgabe-Elementen bilden, die irgendwo auf der programmierbaren Logikvorrichtung angeordnet sein können (z. B. gleichmäßig über die Breite des PLD verteilt). Falls gewünscht, können die Eingabe/Ausgabe-Elemente 102 eine oder mehrere Zeilen von Eingabe/Ausgabe-Elementen bilden (z. B. über die Höhe der PLD verteilt). Alternativ können Eingabe/Ausgabe-Elemente 102 Inseln mit Eingabe/Ausgabe-Elementen bilden, die über die Oberfläche der PLD verteilt sein können oder in ausgewählten Bereichen angehäuft sein können.
  • Die Routing-Fabric (manchmal als programmierbare Zwischenverbindungsverschaltung bezeichnet) auf der PLD 100 kann in Form von vertikalen Leitkanälen 140 (d. h. Zwischenverbindungen, die entlang einer vertikalen Achse der PLD 100 gebildet sind) und horizontalen Leitkanälen 150 (d. h. Zwischenverbindungen, die entlang einer horizontalen Achse der PLD 100 gebildet sind) vorgesehen sein, wobei jeder Leitkanal mindestens eine Spur enthält, um mindestens eine Leitung zu leiten. Falls gewünscht, können Leitdrähte kürzer als die gesamte Länge des Leitkanals sein. Ein Draht der Länge L kann L funktionale Blöcke umspannen. Ein Draht der Länge vier kann beispielsweise vier funktionale Blöcke umspannen. Drähte der Länge vier in einem horizontalen Routingkanal können als „H4“-Drähte bezeichnet werden, wohingegen Drähte der Länge vier in einem vertikalen Routingkanal als „V4“-Drähte bezeichnet werden.
  • Ferner sollte verstanden werden, dass die vorliegenden Ausführungsformen in einem beliebigen integrierten Schaltkreis implementiert werden können. Falls gewünscht, können die funktionalen Blöcke eines derartigen integrierten Schaltkreises in mehr Ebenen oder Schichten angeordnet sein, in denen mehrere funktionale Blöcke miteinander verbunden sind, um noch größere Blöcke zu bilden. Andere Vorrichtungsanordnungen können funktionale Blöcke verwenden, die nicht in Zeilen und Spalten angeordnet sind.
  • Die programmierbare Vorrichtung 100 kann verwendet werden, um ein Training von neuronalen Netzwerken zu unterstützen. Das Training neuronaler Netzwerke wie mehrschichtiger Perzeptronen (MLP) ist ein rechenintensiver Prozess, der wiederholte Vorwärts- und Rückwärtsoperationen involviert, die dichte Matrixmultiplikationen enthalten. Aufgrund der numerischen Eigenschaften der Trainingsdaten, wie der Anforderung, sehr kleine Zahlen zu unterstützen, sind oft Gleitkommadarstellungen erforderlich. Als Ergebnis ist die Gesamttrainingsleistung eines neuronalen MLP-Netzwerks durch den Gleitkomma-Gesamtdurchsatz und auch durch die Arbeitsspeicherbandbreite der zugrunde liegenden Architektur beschränkt.
  • Vorrichtungskonfigurationen, in dem das FPGA 100 verwendet wird, um ein neuronales MLP-Netzwerk zu unterstützen, werden manchmal hierin als ein Beispiel beschrieben. Dies ist jedoch nur illustrativ. Im Allgemeinen können die Architektur und zugehörigen Techniken, die hierin beschrieben sind, die die Fähigkeit der Vorrichtung 100 verbessern, um ein MLP-Training durchzuführen, auf andere Arten von Training und maschinellen Lernprozessen angewandt werden.
  • Nun genauer ins Detail gehend, ist ein mehrschichtiges Wahrnehmen ein neuronales Netzwerk mit mehreren Schichten, die jeweils durch eine Gewichtsmatrix gekennzeichnet sind. Jede Schicht verwendet eine nichtlineare Aktivierungsfunktion (z. B. lineare Rectifier-Einheiten oder „ReLU“) und deren Umkehrung. Das Netzwerk propagiert Aktivierungsdaten, die in Bündel gruppiert sind, durch alle Schichten und der Lernprozess bestimmt die erforderlichen Gewichtsänderungen für jede Schicht. Über mehrere Iterationen der Berechnung erlernt das Netzwerk Gewichtsmatrizen, die gegenüber einer Zielfunktion empfindlich sind.
  • Das Training eines derartigen Netzwerks kann zwei Durchgänge involvieren: (1) einen Vorwärtsdurchgang, wobei jede aufeinanderfolgende Schicht eine Matrixmultiplikation unter Verwendung der aktuellen Gewichtsmatrix und der Ausgabe der vorangehenden Schicht durchführt, die die Aktivierungsfunktion durchlaufen hat; und (2) einen Rückwärtsdurchgang, der den Gradienten der Aktivierungsdaten berechnet und die Änderungen ermittelt, die auf die Gewichtsmatrix angewandt werden müssen. Die Gewichtaktualisierungsrichtlinie kann auf einem stochastischen Gradientenverfahren (SGD) beruhen, als ein Beispiel. Darüber hinaus wird auch ein Verzerrungs-Vektor zusammen mit der Gewichtsmatrix erlernt.
  • Der zum Speichern aller Gewichts- und Aktivierungsmatrizen für mehrere Schichten erforderliche Arbeitsspeicher überschreitet wahrscheinlich die chipinterne Speicherkapazität, die auf einem FPGA verfügbar ist. Alle Matrizen können deshalb in einem zeilenweisen Format in einer externen Arbeitsspeichervorrichtung, wie einem chipexternen dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) der Datenrate 4 (DDR4), gespeichert sein, der separat an einem FPGA angebracht ist. Der externe DDR-Arbeitsspeicher ist üblicherweise beim sequenziellen Lesen von Daten viel effizienter (d. h., das Durchlaufen einer Matrixrichtung funktioniert gut, aber das Durchlaufen einer anderen Richtung nicht). Die Daten sollten auf eine derartige Weise umsortiert werden, dass große Folgen fortlaufender Adressen, die in Bündel gruppiert werden können, gemeinsam abgerufen werden können. Eine angemessene DDR-Arbeitsspeicherbandbreite kann dabei helfen, eine Maximalleistung beizubehalten.
  • 2 ist ein Diagramm einer veranschaulichenden Trainingsarchitektur für maschinelles Lernen 200 nach einer Ausführungsform. Wie in 2 gezeigt, kann die Trainingsverschaltung 200 eine 3-stufige Pipeline enthalten, die in einen chipexternen Arbeitsspeicher 210 (z. B. DDR-Arbeitsspeicher) liest und schreibt, der über eine Ringtopologie verbunden ist. Die erste Pipelinestufe kann einen ersten Matrixladeschaltkreis 202 (z. B. einen Schaltkreis, der ausgelegt ist, Matrix „A“ zu laden) und einen zweiten Matrixladeschaltkreis 204 (z. B. einen Schaltkreis, der ausgelegt ist, Matrix „B“ zu laden) enthalten. Die zweite Pipelinestufe kann eine Matrixmultiplikationsverschaltung 206 enthalten, die unter Verwendung einer systolischen Anordnung (als ein Beispiel) implementiert ist. Die dritte Pipelinestufe kann einen Speicherschaltkreis 208 enthalten, der ausgelegt ist, eine resultierende Matrix „C“ in den chipexternen Arbeitsspeicher 210 zu laden.
  • Die Ladeschaltkreise 202 und 204 können optional Transponierungs- und Aktivierungsfunktionen innerhalb der Pipeline einbinden, um Arbeitsspeicherverkehr zu reduzieren. Diese Operationen können die Multiplikationseingaben und Ausgaben inline wandeln, entweder vor oder nach der Multiplikation bei Block 206. Ein stochastisches Gradientenverfahren kann gleichzeitig bei Schaltkreis 212 durchgeführt werden. Falls gewünscht, können bestimmte Operationen selektiv umgangen werden, um ein Konfigurieren der Pipeline für unterschiedliche Trainingsablauf-Gleichungen zu ermöglichen. Mit einer derartigen Konfiguration kann jede Pipelinestufe eine Matrixkachel unter Verwendung eines Doppelpufferschemas bearbeiten, um die Ergebnisse an die nächste Pipelinestufe weiterzuleiten. Die Pipeline wird durch Erteilen von Operationen an mehreren Matrixkacheln durch die Pipeline besetzt gehalten.
  • Wie oben beschrieben, kann eine Matrixmultiplikation unter Verwendung von systolischen Anordnungen unterstützt werden. Systolische Anordnungen zur Matrixmultiplikation enthalten Verarbeitungselemente (PEs) und Steuerlogik zum Koordinieren der PEs. 3 ist ein Diagramm eines Verarbeitungselements 300 einer systolischen Anordnung nach einer Ausführungsform. Wie in 3 gezeigt, wird Matrix A unter Verwendung eines Zeileneinspeiseschaltkreises 302 in eine bestimmte Zeile von PEs geladen, wohingegen Matrix B unter Verwendung eines Spalteneinspeiseschaltkreises 304 in eine bestimmte Spalte von PEs geladen wird. Das Verarbeitungselement 300 kann eine Hybrid-Gleitkomma-Skalarprodukt-Verschaltung 310 und auch einen lokalen Akkumulationsspeicherschaltkreis 312 (z. B. ein Akkumulationsverschieberegister) zum temporären Halten von Zwischenergebnissen enthalten. Akkumulierte Daten können selektiv über einen Multiplexer 314 zurück als Eingaben in die Skalarprodukt-Verschaltung 310 gespeist werden (siehe akkumulierte Eingabedaten ACC). Das Verarbeitungselement 300 in der bestimmten Zeile und der bestimmten Spalte kann ausgelegt sein, um an die Berechnung der Elemente, die es berechnet, über eine Schnittstelle anzukoppeln, um die Übertragungslatenz des Skalarprodukts zu berücksichtigen.
  • Mit einer derartigen Anordnung können alle PEs in der gleichen Zeile oder Spalte der systolischen Anordnung den gleichen Operanden gemeinsam nutzen. Ein chipweites Verteilungsnetz kann verwendet werden, um allen PEs in der systolischen Anordnung Daten bereitzustellen. Der Zeileneinspeiseschaltkreis 302 für Matrix A kann Daten empfangen, die vom A-Ladeschaltkreis 202 von 2 ausgehen, wohingegen der Spalteneinspeiseschaltkreis 304 für Matrix B Daten empfangen kann, die vom B-Ladeschaltkreis 204 ausgehen. Die „hybride“ Natur der Gleitkomma-Skalarprodukt-Verschaltung 310 stammt aus der Nutzung von sowohl harten Gleitkomma-Multiplikatoren (z. B. unter Verwendung von DSP-Blöcken) und weichen Gleitkomma-Multiplikatoren. Die Latenz durch den weichen Gleitkomma-Multiplikator-Abschnitt ist größer als die Latenz durch den harten Gleitkomma-Multiplikator-Abschnitt.
  • Dieses Ungleichgewicht von Ankunftszeiten ist schematisch durch die L-förmige Skizze der Verschaltung 310 dargestellt, wobei erlaubt wird, dass die unteren Elemente, die den weichen Multiplikatoreingaben entsprechen, früher eintreffen und wobei die oberen Elemente, die den harten Multiplikatoreingaben entsprechen, verzögert werden müssen, um das Planungsungleichgewicht zu berücksichtigen. Um die Anzahl an Registern zu minimieren, die in das Verarbeitungselement 300 eingefügt werden müssen, ist die Eingabeverzögerung neben der Einspeiseverschaltung (z. B. unter Verwendung von Verzögerungsregistern 303 am Ausgang der Einspeisung 302 und unter Verwendung von Verzögerungsregistern 305 am Ausgang der Einspeisung 304) implementiert und entlang des Datenbusses bewahrt, indem sichergestellt wird, dass identische Verzögerungsinkremente zu allen Buspfaden addiert werden. Um sicherzustellen, dass beide Skalarproduktoperanden gleichzeitig eintreffen, sollten die von den Registern 303 entlang jeder Zeile eingeführten und die von den Registern 305 entlang jeder Spalte eingeführten Verzögerungen abgeglichen werden.
  • 4 ist ein Diagramm, das eine veranschaulichende Matrixzuweisung zu einer systolischen Anordnung zeigt. Wie in 4 gezeigt, muss die Speicherkapazität der Einspeisung eine Kachel der Bündelbreite unterbringen. Dies ist erforderlich, um die kleinste Einheit von chipexternem DDR-Arbeitsspeicherzugriff unterzubringen, die die Arbeitsspeicherbandbreite effizient nutzen würde. Ein Bündel kann mehrere Arbeitsspeicherwörter sein (z. B. 32 Bytes, 64 Bytes, 128 Bytes, 256 Bytes, 512 Bytes, 1024 Bytes usw.).
  • Die Einspeisungsarbeitsspeicher sollten mit Datenwörtern befüllt werden, die mit der Ausrichtung der Skalarproduktoperanden übereinstimmen, was das parallele Fünftel aller Eingabeoperanden in jedem Taktzyklus ermöglicht. Ein Doppelpufferschema kann eingesetzt werden, wobei eine Kachel geladen wird (ein Prozess, der für jede Matrix Tausende von Zyklen dauern kann), während die vorher geladene Kachel am Zeilen- oder Spaltenbus übermittelt wird. Durch Anpassen der Anzahl der Zeilen und Spalten kann das Ausmaß der Datenwiederverwendung modifiziert werden, und die Zeit, die zum Laden einer neuen Matrixkachel in die Einspeisungsschaltkreise benötigt wird, und die Zeit, die zum Erteilen aller Zeilen- und Spaltenpermutationen in der PE-Anordnung benötigt wird, können ausgeglichen werden.
  • Das IEEE-754-32-Bit-Gleitkommaformat mit einfacher Genauigkeit wurde herkömmlicherweise für Skalarprodukt-Datenpfade verwendet. Das Format mit einfacher Genauigkeit weist ein Vorzeichenbit, acht Exponentenbits und 23 Drei-Mantissenbits (mit einem impliziten führenden Bit, um insgesamt eine Mantissengenauigkeit von 24 zu bilden) auf. Neue Forschungen scheinen jedoch darauf hinzuweisen, dass ein Gleitkommaformat mit niedrigerer Bitbreite aufgrund seiner reduzierten Arbeitsspeicherbandbreitenanforderungen ein geeigneterer Kandidat zum Implementieren von Skalarprodukten wäre, solange der Reduktionsbaum in einfacher Genauigkeit implementiert ist. Beispielsweise könnte ein 16-Bit-Format (manchmal als „BFLOAT16“ bezeichnet) mit einem Vorzeichenbit, acht Exponentenbits (d. h. wE = 8) und sieben Mantissenbits (d. h. wF = 7) könnte verwendet werden. Die reduzierten 16-Bit-Operanden in BFLOAT16 ermöglichen eine mögliche 2x Arbeitsspeicherbandbreitenverbesserung.
  • Herkömmliche FPGA-Designs sind jedoch stark für Arithmetik mit einfacher Genauigkeit (SP) optimiert. Beispielsweise bilden Skalarprodukt-Schaltkreisblöcke mit einfacher Genauigkeit direkt auf DSP-Blöcke ab, die mit Nennfrequenzen laufen. Deshalb ist das Erhalten einer höheren Dichte als SP-Skalarprodukt für ein BFLOAT16+SP-Skalarprodukt eine Herausforderung. Erstens erfordert die Implementierung von BFLOAT16-Multiplikatoren eine Kombination von DSP-Blöcken und adaptiven Logikmodulen (ALM) innerhalb der LABs 110 (1). Um eine bessere Skalarproduktdichte als durch eine alleinige Verwendung von DSP-Blöcken zu erhalten, ist eine maßgeschneiderte Gleitkomma-Pipelinearchitektur vorgesehen.
  • Nach einer Ausführungsform ist eine Hybrid-Gleitkomma-Skalarprodukt-Verschaltung 310, die sowohl harte DSP-Blöcke als auch maßgeschneiderte Multiplikatorblöcke einsetzt, in 5A gezeigt. Diese beispielhafte Hybrid-Skalarprodukt-Architektur 310 ist ausgelegt, ein 16-Element-Skalarprodukt zu implementieren. Wie in 5A gezeigt, kann die Verschaltung 310 Eingabeoperanden Ai, Bi empfangen, de beide im BFLOAT16-Format sind, wobei i einen Index von 0 bis 15 repräsentiert. Die Akkumulatoreingabe (ACC-Eingabe) ganz rechts kann im Format mit einfacher Genauigkeit sein.
  • Die ersten 12 Gruppen von Eingabeoperanden werden in sechs maßgeschneiderte 2-Element-Skalarproduktschaltkreise 500 eingespeist. Jeder Schaltkreis 500 kann ausgelegt sein, eine Summe von zwei Produkten zu generieren, und wird manchmal hierin als ein „Dot2“-Schaltkreis bezeichnet. Im Beispiel von 5A kann der Schaltkreis 500-1 ausgelegt sein, um (A0*B0 + A1*B1) zu berechnen; Schaltkreis 500-2 kann ausgelegt sein, um (A2*B2 + A3*B3) zu berechnen; Schaltkreis 500-3 kann ausgelegt sein, um (A4*B4 + A5*B5) zu berechnen; .. . ; und Schaltkreis 500-6 kann ausgelegt sein, um (A10*B10 + A11*B11) zu berechnen. Ein Beispiel eines individuellen Dot2-Schaltkreises 500-1 ist in 5B gezeigt. Wie in 5B gezeigt, enthält der Dot2-Schaltkreis 500-1 einen ersten Multiplikator 560 zum Berechnen von A0*B0, einen zweiten Multiplikator 560 zum Berechnen von A1*B1 und einen Addierer zum Summieren der Ergebnisse der zwei Multiplikatoren 560. Wieder auf 5A Bezug nehmend können die Ausgaben von den verschiedenen Dot2-Schaltkreisen 500 in einen Addierbaum eingespeist werden, der eine erste Stufe von Addierern 510-1, 510-2, 510-3, eine zweite Stufe von Addierern 520-1 und 520-2 und eine dritte Addierstufe 530 enthalten kann.
  • Ein DSP-Block innerhalb eines FPGA kann entweder in einem Gleitkomma-Modus oder einem Festkomma-Modus betrieben werden. Im Festkomma-Modus kann der DSP-Block so ausgelegt sein, dass zwei 18x18-Multiplikatoren unabhängig arbeiten oder in einen größeren 27x27-Multiplikator konfiguriert sind. Die „Hybrid“-Bezeichnung von Architektur 310 ist aufgrund der Nutzung von sowohl eines „harten“ Datenpfads (wobei z. B. die DSP-Blöcke, die den höheren Eingaben A,B[12:15] ausgelegt sind, im Gleitkomma-Modus zu arbeiten) und eines „weichen“ Datenpfads (wobei z. B. die DSP-Blöcke, die den unteren Eingaben A,B[0:11] entsprechen, ausgelegt sind, im Gleitkomma-Modus zu arbeiten, um auf die zwei 18x18-Multiplikatoren 502 unabhängig zuzugreifen).
  • Wie in 5A gezeigt, kann einer der zwei 18x18-Multiplikatoren 502 vom Schaltkreis 500-1 verwendet werden, wohingegen der zweite der zwei 18x18-Multiplikatoren vom Schaltkreis 500-2 verwendet werden kann. Jeder 18x18-Multiplikator kann ferner verwendet werden, um zwei kleinere 8x8-Multiplikationen zu unterstützen, die von den Multiplikatoren 560 durchgeführt werden (siehe z. B. 5B). Aus der Perspektive der Ressourcennutzung verwendet jeder Dot2-Schaltkreis 500 einen halben DSP-Block und etwas Universal-Softlogik, die verschiedene Operationen wie Exponentenaddition, Exponentendifferenz, ganzzahlige Addition, Ausrichtungsverschiebung usw. enthalten kann. Ein einziger 18x18-Multiplikator kann nur zwei 6x6-Multiplikationen nativ unterstützen, sodass zusätzliche Softlogik benötigt wird, um zwei 8x8-Multiplikationen für BFLOAT16 zu unterstützen. Deshalb kann auch jeder Dot2-Schaltkreis 500 als ein „Hybrid“-Schaltkreis angesehen werden, da er einen DSP-Block im Festkomma-Modus mit Softlogik verwendet, um die Unterstützung auf BFLOAT16 zu erweitern. Der Abschnitt 590-1 der Verschaltung 310, der die Dot2-Schaltkreise enthält, entspricht deshalb einem harten und einem weichen Datenpfad, wohingegen der Abschnitt 590-2 von Verschaltung 310, der die im Gleitkomma-Modus arbeitenden DSP-Blöcke enthält, deshalb dem harten Datenpfad entsprechen kann.
  • Die nächsten zwei Gruppen von Eingabeoperanden A,B[12:13] können parallel unter Verwendung zweier DSP-Blöcke 120-1 und 120-2 berechnet werden, die im Gleitkomma-Modus konfiguriert sind. Die Umwandlung vom BFLOAT16-Eingabeformat in das Gleitkommaformat mit einfacher Genauigkeit kann durch Auffüllung der 7-Bit-Mantisse von BFLOAT16 mit Nullen erfolgen. Die Ausgabe des DSP-Blocks 120-1 kann über den Umwandlungsschaltkreis 512 in den Addierbaum zusammengeführt werden und das Ergebnis in der endgültigen Stufe des Addierbaums kann in ein IEEE-754-ähnliches Format normalisiert werden. Die verbleibenden Eingabeoperanden können unter Verwendung der DSP-Blöcke 120-3 und 120-4 berechnet werden, die ebenfalls im Gleitkomma-Modus konfiguriert sind. Die Blöcke 120-3 und 120-4 können kollektiv (A14*B14 + (A15*B15 + ACC)) berechnen. Der Addierschaltkreis mit einfacher Genauigkeit 190 innerhalb des DSP-Blocks 120-2 kann verwendet werden, um die endgültige Addition zwischen dem normalisierten Ergebnis vom Addierbaum und der Ausgabe der Blöcke 120-3 berechnen, um die endgültige Ausgabe (A0*B0 + A1*B1 + A2*B2 + ... + A14*B14 + A15*B15 + ACC) zu berechnen.
  • Die Kennzeichnung am linken Rand von 5A veranschaulicht, wann die mit den unterschiedlichen Elementen assoziierten Eingaben zur Ankunft geplant werden sollten. Die Eingaben A,B[0:13] können so geplant werden, dass sie parallel bei Zyklus Nr. 1 ankommen. Die Eingaben A,B[14:15] sollten jedoch verzögert werden, sodass sie später nach Zyklus Nr. 14 ankommen. Dieses Ungleichgewicht bei der Eingabenplanung führt wiederum zur L-förmigen logischen Darstellung von 3.
  • 6A ist ein Diagramm eines klassischen Gleitkomma-Multiplikators 600. Die Multiplikatorblöcke 180 innerhalb der DSP-Blöcke 120 in 5A können optional unter Verwendung dieser klassischen Multiplikatorarchitektur implementiert werden. Der Multiplikator 600 ist ausgelegt, eine erste Gleitkomma-Eingabe X mit einem Vorzeichenbit Sx, einem Exponenten Ex und einer Mantisse Mx und eine zweite Gleitkomma-Eingabe Y mit einem Vorzeichenbit Sy, einem Exponenten Ey und einer Mantisse My zu empfangen. Die Exponenten Ex und Ez weisen die gleiche Exponentenbreite wE auf. Die Mantissen Mx und Mz weisen eine Genauigkeit auf, die gleich (1+wF) ist, falls das implizierte führende Einserbit vor dem Radixpunkt berücksichtigt wird.
  • Der Multiplikator 600 enthält ein logisches XOR-Gatter 610, das die Vorzeichenbits Sx und Sz empfängt und ein entsprechendes Ausgabevorzeichenbit Sp für das resultierende Produkt generiert. Der Multiplikator 600 enthält ferner einen Mantissenmultiplikatorblock 630, einen Mantissennormalisierungsblock 632, einen Mantissen-Sticky-Bit-Block 634, einen Rundungsbitberechnungsblock 636, einen Mantissenrundungsblock 638 und einen Mantissenaktualisierungsblock 640 zum Handhaben der Mantisse des resultierenden Produkts. Der Mantissenmultiplikatorblock 630 multipliziert Mx mit My, um ein Mantissenprodukt zu erhalten, das bis zu (2+2*wF) Bits aufweist.
  • Block 632 empfängt die höchsten (2+wF+1) Bits des Mantissenprodukts und normalisiert diesen Wert auf das Intervall [1,2) durch Prüfen des höchstwertigen Bits (MSB) des Mantissenprodukts. Falls das MSB gleich „1“ ist, dann führt der Block 632 eine Verschiebung nach rechts um 1 Position durch. Dieses MSB-Bit wird auch an den Exponentenaktualisierungsblock 622 weitergeleitet. Das während der Verschiebung nach rechts um 1 Position herausgeschobene Bit wird zusammen mit den zwei niedrigstwertigen Bits (LSB) des normalisierten Mantissenprodukts an den Rnd-Block 636 weitergeleitet.
  • Block 634 berechnet Sticky Bits aus den untersten (wF-1) Bits des Mantissenprodukts. Das Sticky Bit ist das Ergebnis eines logischen ORs aller dieser unteren Bits. Falls deshalb irgendwelche der (wF-1) Bits hoch sind, dann ist die Ausgabe des Sticky-Bit-Blocks 634 gleich „1“. Der Rnd-Block 636 empfängt einen teilweisen Sticky-Wert vom Block 634 und den herausgeschobenen Wert von Block 632, um im Produkt einen endgültigen Sticky-Wert zu bilden. Die zusätzlichen von Block 632 weitergeleiteten zwei LSBs repräsentieren die Mantissen-LSB (d. h. T) und ein Rundungsbit (R). Bits T, R und der endgültige Sticky-Wert werden verwendet, um gemeinsam ein 1-Bit-„Rnd“-Signal zu erzeugen, das beim Rundungsblock 638 zum LSB der normalisierten Mantisse addiert wird. Der Rundungsblock 638 besteht aus einem ganzzahligen Addierer zum Addieren des von Block 636 berechneten Rnd-Werts zur normalisierten Mantisse. Dieser Addierer weist wF Bits auf und erzeugt ein Übertragssignal, das an den Exponentenaktualisierungsblock 622 übermittelt wird.
  • Der Mantissenaktualisierungsblock 640 empfängt die Überlauf- und Unterlauf-Signale von Block 624 und leert die Mantisse auf null, falls entweder ein Überlauf oder ein Unterlauf aufgetreten ist. Dies ist erforderlich, da IEEE 754 bestimmte Codierungen für unendlich und null aufweist. Der resultierende endgültige Mantissenwert Mp weist (1+wF) Bits auf.
  • Der Multiplikator 600 enthält ferner einen Exponentenadditionsschaltkreis 620 zum Summieren der Exponenten Ex und Ey. Block 622 erhöht die Summe der Exponenten schrittweise, wenn (i) das Produkt des Mantissenprodukts größer oder gleich zwei ist oder (ii) wenn die resultierende Mantisse nach dem Runden größer oder gleich zwei ist. Block 624 prüft, dass der endgültige Exponent innerhalb der erlaubten Grenzen liegt. Für einfache Genauigkeit und BFLOAT16 ist der maximale Exponent gleich 127, während der minimale Exponent gleich -126 ist, da beide Formate 8 Exponentenbits verwenden. Falls der Exponentenwert größer als 127 ist, dann sollte der Multiplikator unendlich zurückgeben (d. h. durch Zurückgeben eines Strings aus wE Einsen „11111111“). Falls der Exponentenwert kleiner als -126 ist, dann sollte der Multiplikator null zurückgeben (d. h. durch Zurückgeben eines Strings aus wE Nullen „00000000“).
  • Auf diese Weise konfiguriert führt der Multiplikator 600 eine Mantissenmultiplikation (bei Block 630), eine 1-Bit-Normalisierung (bei Block 632), eine Rundung (unter Verwendung der Blöcke 634, 636 und 638) und einen Überlauf/Unterlauf gefolgt von einer Ausnahmebehandlung durch.
  • 6B ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Multiplikators 560 innerhalb des in 5B gezeigten 2-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform. Wie in 6B gezeigt, kann der Multiplikator 560 nur ein logisches XOR-Gatter 650 zum Berechnen des Vorzeichenbits, einen Exponentenaddierschaltkreis 652, einen Mantissenmultiplikationsschaltkreis 654 (der unter Verwendung nur eines 18x18-Multiplikators innerhalb eines DSP-Blocks implementiert werden kann) und einen Bittrunkierungsschaltkreis 656 enthalten.
  • Im Gegensatz zum klassischen Multiplikator, der in 6A gezeigt ist, überspringt der maßgeschneiderte Multiplikator 560 die Normalisierungsphase (aber erfordert ein zusätzliches Überlaufschutzbit) und überspringt die Rundungsphase (aber erfordert ein zusätzliches Mantissenbit). Alle (2+2wF) Bits, was das zusätzliche Mantissenbit enthält, werden dann in den Trunkierungsblock 656 eingespeist. Der Trunkierungsblock 656 trunkiert oder verwirft danach alle über die (2+w) höchstwertigen Bits hinausgehenden Bits. Der Parameter „w“ kann gleich 8 (als Beispiel) oder irgendeinen anderen Wert gesetzt werden (w kann z. B. gleich 6, 7, 9, 10, 5-12, 4-16 oder irgendeinen anderen geeigneten ganzzahligen Wert gesetzt werden), der angepasst werden kann, um Ressource gegen Genauigkeit auszugleichen. Der Multiplikator 560 überspringt auch den Überlauf/Unterlauf und die Ausnahmebehandlung durch Erweitern des Exponenten um 2 Bits, um ein Vorzeichenbit und ein Überlaufschutzbit aufzunehmen (z. B. wird der endgültige Exponent (2+wE) Bits aufweisen).
  • Im Vergleich zum Multiplikator 600 von 6A, bietet der Multiplikator 560 von 6B wesentliche Flächen- und Energieeinsparungen, während er eine vergleichbare Genauigkeit für die Gesamt-Skalarproduktverschaltung bietet, was der zugrunde liegenden Computerfunktionalität beim Unterstützen von maschinellen Lernprozessen eine greifbare Verbesserung bietet.
  • 7A ist ein Diagramm eines klassischen Gleitkomma-Addierers 700. Die Addierblöcke 190 innerhalb der DSP-Blöcke 120 in 5A können optional unter Verwendung dieser klassischen Addierarchitektur implementiert werden. Der Addierer 700 ist ausgelegt, eine erste Gleitkomma-Eingabe X mit einem Vorzeichenbit Sx, einem Exponenten Ex und einer Mantisse Mx und eine zweite Gleitkomma-Eingabe Y mit einem Vorzeichenbit Sy, einem Exponenten Ey und einer Mantisse My zu empfangen. Die Exponenten Ex und Ez weisen die gleiche Exponentenbreite wE auf. Die Mantissen Mx und Mz weisen eine Genauigkeit auf, die gleich (1+wF) ist, falls das implizierte führende Einserbit vor dem Radixpunkt berücksichtigt wird.
  • Der Addierer 700 enthält einen Multiplexer 702, ein logisches XOR-Gatter 704, einen Exponentendifferenzblock 706, einen Mantissenaustauschblock 708, einen Zweierkomplementblock 710, einen Absolutbetragsblock (ABS-Block) 712, eine Ausrichtungsverschiebungseinheit 714, einen ganzzahligen Addierblock 716, einen Vorzeichen-Betrag-Umwandlungsblock 718, einen Zähler für führende Nullen 720, eine Normalisierungsverschiebungseinheit 722, einen Rundungsblock 724, einen Exponentenaktualisierungsblock 726 und einen Vorzeichenblock 728. Das logische XOR-Gatter 704 berechnet einfach das exklusive OR von Sx und Sy.
  • Block 706 berechnet die Differenz von Ex minus Ey. Der Multiplexer 702 gibt das Maximum der zwei Exponenten Ex und Ey aus. Die Auswahlleitung des Multiplexers 702 wird vom Vorzeichenbit (d. h. dem MSB) der Differenz von (Ex-Ey) angesteuert, die von Block 706 berechnet wird. Falls die Differenz negativ ist (d. h., falls das Vorzeichenbit von Ex-Ey „1“ ist), dann leitet der Multiplexer 702 Ey weiter; andernfalls gibt er Ex aus.
  • Der Mantissenaustauschblock 708 tauscht die Mantissen selektiv aus, abhängig davon, ob die durch Block 706 berechnete Differenz negativ ist (d. h., ein Austausch ist erforderlich, falls Ex kleiner als Ey ist). Der Mantissenwert, der dem kleineren Exponenten entspricht, wird unter Verwendung von Block 710 in das Zweierkomplement umgewandelt, falls die Ausgabe des XOR-Blocks 704 hoch ist (d. h., falls die Vorzeichen von X und Y verschieden sind). Block 712 berechnet den Absolutbetrag der Exponentendifferenz. Falls die Exponentendifferenz beispielsweise gleich -2 ist, dann muss die dem kleineren Exponenten entsprechende Mantisse unter Verwendung der Ausrichtungsverschiebungseinheit 714 um zwei Bitpositionen in Bezug auf die dem größeren Exponenten entsprechende Mantisse verschoben werden.
  • Die dem größeren Exponenten entsprechende Mantisse und die dem kleineren Exponenten entsprechende Mantisse werden dann nach der Ausrichtung durch die Verschiebungseinheit 714 durch den ganzzahligen Addierer 716 zusammen summiert. Die Ausgabe des Addierers 716 wird dann unter Verwendung des Blocks 718 in ein Vorzeichen-Betrag-Format umgewandelt. Der Zähler für führende Nullen 720 ermittelt die Anzahl der führenden Nullen um umgewandelten Vorzeichen-Betrag-Wert. Die Normalisierungsverschiebungseinheit 722 normalisiert dann den Vorzeichen-Betrag-Wert durch Verschieben dieses Werts auf Grundlage der Anzahl von führenden Nullen, die vom Zähler 720 ermittelt wurde, nach links. Diese normalisierte Mantisse kann dann von Block 724 gerundet werden, um die endgültige Mantisse der Summe (Ms) auszugeben.
  • Der Vorzeichenblock 728 kann das endgültige Vorzeichenbit der Summe (Ss) auf Grundlage von Sx, Sy, der Ausgabe des XOR-Gatters 704, der Exponentendifferenz und auch der Ausgabe des ganzzahligen Addierers 716 ausgeben. Der Exponentenaktualisierungsblock 726 empfängt den größeren Exponentenwert von Block 702, den Zählerwert der führenden Nullen von Block 720 und auch das Übertragsbit vom Rundungsblock 724. Falls der Übertrag des Rundungsblocks 724 eine „1“ ist, dann wird der bei Block 726 vom Multiplexer 702 empfangene größere Exponent um eins erhöht. Andernfalls, falls der Zähler für führende Nullen „0“ ist (was anzeigt, dass die Summe der zwei Mantissen größer oder gleich zwei ist), dann wird der empfangene Exponent um eins verringert. Falls der Zähler für führende Nullen „1“ ist, dann wird der empfangene Exponent nicht aktualisiert. Falls der Zähler für führende Nullen c ist, wobei c größer als eins ist, dann wird der Wert (c-1) vom empfangenen Exponenten subtrahiert, um den endgültigen Exponenten Es zu generieren. Der Überlauf-/Unterlauf-Block, der die Grenzen des Exponenten prüft, ist der Einfachheit halber in 7A weggelassen.
  • 7B ist ein Diagramm eines veranschaulichenden maßgeschneiderten Gleitkomma-Addierers 562 innerhalb des in 5B gezeigten 2-Element-Skalarprodukt-Schaltkreises nach einer Ausführungsform. Der Gleitkomma-Addierer 562 kann deshalb manchmal als der Skalar-2-Addierer bezeichnet werden. Wie in 7B gezeigt, kann der Addierer 562 nur einen Multiplexer 730, einen Exponentendifferenzschaltkreis 732, einen Mantissenaustauschschaltkreis 734, einen ersten Zweierkomplementschaltkreis 736-1, einen zweiten Zweierkomplementschaltkreis 736-2, einen Absolutbetragsschaltkreis (ABS-Schaltkreis) 738, einen Ausrichtungsverschiebungsschaltkreis 740, einen ganzzahligen Addierer 742 und einen Trunkierungsschaltkreis 744 enthalten.
  • Im Gegensatz zum klassischen Addierer, der in 7A gezeigt ist, empfängt der maßgeschneiderte Addierer 562 Produkte in einem maßgeschneiderten Format vom Multiplikator 560, der in 6B gezeigt it. Wie oben in Verbindung mit 6B beschrieben, kann jedes der eintreffenden Produktsignale ein 1-Bit-Vorzeichenfeld, ein Exponentenfeld, das durch (2+wE) Bits repräsentiert ist, und ein nicht normalisiertes Mantissenfeld aufweisen, das (2+w) Bits erfordert. Der Addierer 562 ist in dem Sinn „maßgeschneidert“, dass er an diesem nicht standardmäßigen Eingabeformat operiert.
  • Die Schaltkreise 736-1 und 736-2 wandeln die nicht normalisierten Mantissen in ihre Zweierkomplementäquivalente um. Nach der Ausrichtung durch die Verschiebungseinheit 740 wird die Festkommasumme der zwei Mantissen bei Block 742 berechnet. Die rechte Verschiebungseinheit 740 ist weniger aufwendig im Vergleich zur Ausrichtungsverschiebungseinheit 714 für den Schaltkreis 700, da sie die üblicherweise zur Rundung erforderlichen Sticky Bits nicht berechnen muss. Der Schritt der Rundung auf das Nächste wird ebenfalls übersprungen und ist durch den Trunkierungsblock 744 ersetzt, der den Mantissenabschnitt auf wA Bits trunkiert und alle Bits über die wA Positionen zur Rechten des Radixpunkts hinaus verwirft. Der anpassbare Parameter wA legt deshalb die Position der Trunkierung fest. Der Parameter „wA“ kann gleich 8 (als Beispiel) oder irgendeinen anderen Wert gesetzt werden (wA kann z. B. gleich 6, 7, 9, 10, 5-12, 4-16 oder irgendeinen anderen geeigneten ganzzahligen Wert gesetzt werden), der angepasst werden kann, um Ressourcennutzung gegen Genauigkeit auszugleichen. Der Addierer 562 selbst kann Signale in noch einem weiteren maßgeschneiderten Format ausgeben, das aus einem Exponentenfeld Es mit (2+wE) Bits und einem Mantissenfeld Ms mit (4+wA) Bits besteht. Die resultierende Mantisse Ms ist im Zweierkomplementformat, deshalb ist kein zusätzliches Vorzeichenbit am Ausgang des Addierers 562 erforderlich.
  • Im Vergleich zum Addierer 700 von 7A, bietet der maßgeschneiderte Addierer 562 von 7B wesentliche Flächen- und Energieeinsparungen, während er eine vergleichbare Genauigkeit für die Gesamt-Skalarproduktverschaltung bietet, was der zugrunde liegenden Computerfunktionalität beim Unterstützen von maschinellen Lernprozessen eine greifbare Verbesserung bietet. Der maßgeschneiderte Addierer 562 stellt diese Verbesserungen durch direktes Ausgeben des Exponenten der Summe ohne einen Exponentenaktualisierungsschaltkreis, durch Generieren der Mantisse der Summe ohne einen Vorzeichen-Betrag-Wandler, ohne einen Zähler für führende Nullen, ohne eine Normalisierungsverschiebungseinheit und ohne einen Rundungsschaltkreis bereit. 7C, 7D und 7E veranschaulichen geeignete Implementierungen für die maßgeschneiderten Gleitkomma-Addierer im Addierbaum (siehe z. B. die Addierer 510, 520 und 530 in 5A). Die Addierer im Addierbaum sind in dem Sinn „maßgeschneidert“, dass sie ausgelegt sind, Eingaben mit dem maßgeschneiderten numerischen Format zu empfangen, das vom Addierer 562 von 7B ausgegeben wird.
  • 7C ist ein Diagramm des maßgeschneiderten Gleitkomma-Addierers 510 in der ersten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung 310 (siehe z. B. die Addierer 510-1, 510-2 und 510-3 in 5A). Wie in 7C gezeigt, kann der Addierer 510 einen Multiplexer 750 (mit einer ähnlichen Struktur und Funkion wie der Multiplexer 730 von 7B), einen Exponentendifferenzschaltkreis 752 (mit einer ähnlichen Struktur und Funktion wie Block 732), einen Mantissenaustauschschaltkreis 754 (mit einer ähnlichen Struktur und Funktion wie Block 734), einen Absolutbetragsschaltkreis 756 (mit einer ähnlichen Struktur und Funktion wie Block 738), einen Ausrichtungsverschiebungsschaltkreis 758 (mit einer ähnlichen Struktur und Funktion wie Block 740), einen ganzzahligen Addierer 760 (der dem Addierblock 742 entspricht) und einen Trunkierungsschaltkreis 762 (der Block 744 entspricht) enthalten.
  • Im Vergleich zum Dot2-Addierer 562 ist der Addierer 510 weniger komplex, da die Umwandlung aus dem Vorzeichen-Betrag in das Zweierkomplement nicht länger erforderlich ist (d. h., der Addierer 562 enthält keine Zweierkomplementumwandler). Es ist anzumerken, dass die Ausgabe des ganzzahligen Addierers 760 5 Bits vor dem Radixpunkt aufweist, mit dem zusätzlichen MSB, um einen Überlauf zu verhindern. Nach der Trunkierung bei Block 762 weist die resultierende Mantisse (5+wA+1) Bits auf, mit einem weiteren zusätzlichen LSB, um optional die Genauigkeit mit der Trunkierung zu verbessern. Anders ausgedrückt kann sich die Mantissenbreite auf der ersten Addierebene um zwei Bits erhöhen.
  • 7D ist ein Diagramm des maßgeschneiderten Gleitkomma-Addierers 520 in der zweiten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung 310 (siehe z. B. die Addierer 520-1 und 520-2 in 5A). Der Addierer 520 weist eine im Wesentlichen ähnliche Struktur wie der Addierer 510 auf, abgesehen davon, dass der Mantissenaustauschschaltkreis 754' und die Mantissenausrichtungsverschiebungseinheit 758' nun an (5+wA+1) Bits operieren. Die Ausgabe des ganzzahligen Addierers 760' weist nun 6 Bits vor dem Radixpunkt auf, mit dem weiteren zusätzlichen MSB, um einen Überlauf zu verhindern. Nach der Trunkierung bei Block 762' weist die resultierende Mantisse (6+wA+2) Bits auf, mit einem weiteren zusätzlichen LSB, um optional die Genauigkeit mit der Trunkierung zu verbessern. Anders ausgedrückt kann sich die Mantissenbreite auf der zweiten Addierebene um zwei weitere Bits erhöhen.
  • 7E ist ein Diagramm des maßgeschneiderten Gleitkomma-Addierers 530 in der dritten Addierstufe der Hybrid-Gleitkomma-Skalarprodukt-Verschaltung 310 (siehe z. B. den Addierer 530 in 5A). Der Addierer 530 weist eine im Wesentlichen ähnliche Struktur wie die Addierer 510 und 520 auf, abgesehen davon, dass der Mantissenaustauschschaltkreis 754'' und die Mantissenausrichtungsverschiebungseinheit 758'' nun an (6+wA+2) Bits operieren. Die Ausgabe des ganzzahligen Addierers 760'' weist nun 7 Bits vor dem Radixpunkt auf, mit dem zusätzlichen MSB, um einen Überlauf zu verhindern. Nach der Trunkierung bei Block 762'' weist die resultierende Mantisse (7+wA+3) Bits auf, mit einem weiteren zusätzlichen LSB, um optional die Genauigkeit mit der Trunkierung zu verbessern. Anders ausgedrückt kann sich die Mantissenbreite auf der dritten Addierebene um noch zwei weitere Bits erhöhen.
  • Wieder kurz auf 5A Bezug nehmend, ist die Ausgabe des DSP-Blocks 120-1 im Format mit einfacher Genauigkeit und muss unter Verwendung des Umwandlungsschaltkreises 512 in das maßgeschneiderte Format umgewandelt werden, bevor sie mit Addierer 520-2 auf der zweiten Ebene des Addierbaums zusammengeführt wird.
  • 8 ist ein Diagramm, das eine geeignete Implementierung eines derartigen Gleitkomma-Formatumwandlers 512 zeigt. Wie in 8 gezeigt, kann der Umwandlungsschaltkreis 512 einen Exponentensubtraktionsschaltkreis 802, einen Schaltkreis 804 zum Umwandeln der Eingabemantisse mit einer Breite von (1+wF) Bits in ihr Zweierkomplementäquivalent mit einer Breite von (2+wF) Bits und einen Bitauswahlschaltkreis 806 zum Auswählen nur der oberen (5+wA+1) Bits aus der Ausgabe von Block 804 enthalten. Die verbleibenden Bits rechts der (wA+1) Mantissenbits können durch Trunkierung verworfen werden oder können optional auf das nächste gerundet werden (z. B. durch Addieren von „1“ zum Bit unmittelbar rechts vom (wA+1) Bit und nachfolgender Trunkierung des Ergebnisses). Der Schaltkreis 806, der eine Trunkierung oder Rundung ausführt, wird manchmal als ein Bitreduktionsschaltkreis bezeichnet. Die resultierende umgewandelte Mantisse Mc weist 5 Bits links vom Radixpunkt und (wA+1) rechts vom Radixpunkt auf.
  • Die Mantisse mit einfacher Genauigkeit muss nach links ausgerichtet werden, da das maßgeschneiderte Format am Eingang der zweiten Addierebene 4 Bits links vom Radixpunkt erfordert. Dies wird durch Verschieben der Mantisse um 3 Bitpositionen nach links erreicht, während sichergestellt wird, dass mehr Mantissenbits behalten werden können, um die Genauigkeit zu optimieren. Um diese Verschiebung zu kompensieren, kann der Exponentensubtraktionsblock 802 ausgelegt sein, 3 vom Eingabeexponentenwert zu subtrahieren, wobei die umgewandelte Exponentenausgabe Ec (2+wE) aufweist. Das Format am Ausgang des Wandlers ist (2+wE) Exponentenbits und (5+wA+1) Mantissenbits, was mit dem numerischen Format übereinstimmt, das vom Addierer 510 in der ersten Addierstufe ausgegeben wird und von Addierer 520 in der zweiten Addierstufe empfangen wird.
  • Wieder kurz auf 5A Bezug nehmend, ist die Ausgabe der dritten Addierstufe 530 im maßgeschneiderten Format mit (7+wA+3) Mantissenbits (siehe 7E) und muss deshalb unter Verwendung des Normalisierungsschaltkreises 540 normalisiert werden, bevor sie bei Addierer 190 des DSP-Blocks 120-2 mit einem weiteren Wert einfacher Genauigkeit kombiniert wird. 9 ist ein Diagramm eines Normalisierungsschaltkreises 540 nach einer Ausführungsform. Wie in 9 gezeigt kann der Normalisierungsschaltkreis 540 mindestens einen Vorzeichen-Betrag-Umwandlungsblock 902, einen Zähler für führende Nullen 904, eine Normalisierungsverschiebungseinheit 908, einen Exponentenaktualisierungsblock 906, einen Exponenten-Überlauf/Unterlauf-Behandlungsblock 910 und einen Mantissen-Überlauf/Unterlauf-Behandlungs- und Rechts-Nullauffüllungsblock 912 enthalten.
  • Da das IEEE-754-Format mit einfacher Genauigkeit eine Vorzeichen-Betrag-Darstellung für die Mantisse anwendet, kann der Block 902 ausgelegt sein, die eingehende Mantisse mit (7+wA+3) Bits in das Vorzeichen-Betrag-Format umzuwandeln. Der Zähler 904 kann ausgelegt sein, die Anzahl der führenden Nullen in der umgewandelten Mantisse zu identifizieren. Die Normalisierungsverschiebungseinheit 908 kann dann den umgewandelten Vorzeichen-Betrag-Wert auf Grundlage der vom Zähler 904 ermittelten Anzahl von führenden Nullen verschieben. Block 906 kann ausgelegt sein, den Exponenten durch Erhöhen von Ex um (6-c) zu aktualisieren, wobei „c“ die vom Zähler 904 identifizierte Anzahl von führenden Nullen angibt.
  • Block 910 prüft, dass der aktualisierte Exponent innerhalb der erlaubten Grenzen liegt. Für einfache Genauigkeit und BFLOAT16 ist der maximale Exponent gleich 127, während der minimale Exponent gleich -126 ist, da beide Formate 8 Exponentenbits verwenden. Falls der aktualisierte Exponentenwert größer als 127 ist, dann sollte der Normalisierungsschaltkreis 540 unendlich zurückgeben. Falls der aktualisierte Exponentenwert kleiner als -126 ist, dann sollte der Normalisierungsschaltkreis 540 null zurückgeben. Die Überlauf/Unterlauf-Informationen können dann an Block 912 weitergeleitet werden, um die Mantissen alle auf null zu leeren, falls entweder ein Überlauf oder ein Unterlauf eintritt. Block 912 kann auch eine Auffüllung mit Nullen rechts handhaben, um insgesamt 23 Mantissenbits für einfache Genauigkeit zu berücksichtigen.
  • Einige der aufwendigeren Komponenten in Bezug auf eine ALM-Ressourcennutzung in der Hybrid-Skalarprodukt-Verschaltung 310 sind die Ausrichtungsverschiebungseinheiten, wie der Ausrichtungsverschiebungsblock 740 im Gleitkomma-Addierer des in 7B gezeigten Typs, die Ausrichtungsverschiebungseinheit 758 in der ersten Addierstufe des in 7C gezeigten Typs, die Ausrichtungsverschiebungseinheit 758' in der zweiten Addierstufe des in 7D gezeigten Typs, die Ausrichtungsverschiebungseinheit 758'' in der dritten Addierstufe des in 7E gezeigten Typs und die Normalisierungsverschiebungseinheit 908 im Normalisierungsschaltkreis 540 des in 9 gezeigten Typs. Deshalb ist eine effiziente Implementierung dieser Verschiebungseinheiten zum Optimieren der Effizienz des gesamten maschinellen Lernsystems wesentlich.
  • 10A ist ein Diagramm einer herkömmlichen Barrel-Verschiebungseinheit 1000 zum Verschieben von Bits nach links. Wie in 10A gezeigt, empfängt die Barrel-Verschiebungseinheit 1000 eine 8-Bit-Eingabe A[0:7] und Steuerbits S[0:1] zum Steuern des Ausmaßes der durchgeführten Verschiebung. Die Barrel-Verschiebungseinheit 1000 enthält: einen ersten 4:1-Multiplexer 1002-0, der A0 an seinem „0“-Eingang empfängt, während die restlichen Eingänge „0“ empfangen; einen zweiten 4:1-Multiplexer 1002-1, der A1 an seinem „0“-Eingang, A0 an seinem „1“-Eingang und Nullen an den restlichen Eingängen empfängt; einen dritten 4:1-Multiplexer 1002-2, der A2 an seinem „0“-Eingang, A1 an seinem „1“-Eingang, A0 an seinem „2“-Eingang und Nullen an seinem „3“-Eingang empfängt; einen vierten 4:1-Multiplexer 1002-3, der A3 an seinem „0“-Eingang, A2 an seinem „1“-Eingang, A1 an seinem „2“-Eingang und A0 an seinem „3“-Eingang empfängt; einen fünften 4:1-Multiplexer 1002-4, der A4 an seinem „0“-Eingang, A3 an seinem „1“-Eingang, A2 an seinem „2“-Eingang und A1 an seinem „3“-Eingang empfängt; einen sechsten 4:1-Multiplexer 1002-5, der A5 an seinem „0“-Eingang, A4 an seinem „1“-Eingang, A3 an seinem „2“-Eingang und A2 an seinem „3“-Eingang empfängt; einen siebten 4:1-Multiplexer 1002-6, der A6 an seinem „0“-Eingang, A5 an seinem „1“-Eingang, A4 an seinem „2“-Eingang und A3 an seinem „3“-Eingang empfängt; und einen achten 4:1-Multiplexer 1002-7, der A7 an seinem „0“-Eingang, A6 an seinem „1“-Eingang, A5 an seinem „2“-Eingang und A4 an seinem „3“-Eingang empfängt.
  • Die Multiplexer 1002-0, 1002-1, 1002-2, 1002-3, 1002-4, 1002-5, 1002-6 und 1002-7 werden verwendet, um Z[0:7] zu generieren, was die verschobene Ausgabe repräsentiert. In dieser Anordnung würde jeder auf einem FPGA implementierte 4:1-Multiplexer 1002 eine Verwendung eines 6-Eingangs-Nachschlagetabelle-Schaltkreises (LUT-Schaltkreises) erfordern. Als Ergebnis erfordert eine herkömmliche Implementierung einer Barrel-Verschiebungseinheit mit N Datenbits und zwei Steuerbits mindestens N 6-Eingangs-LUTs.
  • Nach einer anderen geeigneten Ausführungsform ist eine Barrel-Verschiebungseinheit auf Übertragskettenbasis 1010 in 10B gezeigt. Im Gegensatz zur herkömmlichen Barrel-Verschiebungseinheit von 10 (die eine kombinatorische Struktur verwendet, die auf 4:1-Multiplexern beruht), verwendet die Verschiebungseinheit auf Übertragskettenbasis 1010 eine Reihe von Arithmetikzellen 1012. Die Verwendung einer Architektur auf Arithmetikbasis anstatt einer kombinatorischen Struktur führt insgesamt zu einer kleineren Verschiebungsstruktur, die weniger Drähte verwendet, wodurch Fläche, Energie, Kosten und Leistung verbessert werden.
  • Wie in 10B gezeigt, kann die Barrel-Verschiebungseinheit auf Übertragskettenbasis 1010 ausgelegt sein, eine 8-Bit-Eingabe A[0:7] und Steuerbits S[0:1] zum Steuern des Ausmaßes der durchgeführten Verschiebung zu empfangen. Das Beispiel von 10B, in dem die Verschiebungseinheit 1010 nur acht Eingabe-Abers und zwei Steuerbits empfängt, ist nur veranschaulichend und soll den Geltungsbereich der vorliegenden Ausführungsformen nicht einschränken. Auf Wunsch kann die Verschiebungsarchitektur auf Übertragskettenbasis von 10B auf Verschiebungseinheiten einer beliebigen geeigneten Größe angewandt werden.
  • Die Verschiebungseinheit 1010 kann Arithmetikzellen 1012-0, 1012-1, 1012-2, 1012-3, 1012-4, 1012-5, 1012-6 und 1012-7 enthalten. Jede Arithmetikzelle 1012 mit Index k empfängt beide Steuerbits S[0:1] und zwei Datenbits A[k] und A[k-2], die in einer Bitdistanz beabstandet sind. Jede Arithmetikzelle 1012 kann eine erste 4-Eingangs-LUT 1020 und eine zweite 4-Eingangs-LUT 1022 enthalten, von denen jede vier Eingangsanschlüsse a, b, c, d aufweist. Die erste 4-Eingangs-LUT 1020 kann ausgelegt sein, (!a&!b&c OR !a&b&d) zu berechnen, wobei „!“ die „Nicht“-Funktion repräsentiert. Die zweite 4-Eingangs-LUT 1022 kann ausgelegt sein, (a&!b&c OR a&b&d) zu berechnen.
  • Jede Arithmetikzelle 1012 kann ferner ein logisches XOR-Gatter 1024 mit einem ersten Eingang, der einen Übertrag von der vorangehenden Arithmetikzelle in der Kette empfängt (die erste Arithmetik empfängt z. B. einen Übertrags-Eingang von „0“), einem zweiten Eingang, der die Ausgabe der LUT 1020 empfängt, und einem Ausgang enthalten, an dem ein entsprechendes verschobenes Ausgabebit generiert wird. Jede Arithmetikzelle 1012 kann auch einen einfachen 2:1-Multiplexer 1026 mit einem ersten (0) Eingang, der die Ausgabe der LUT 1022 empfängt, einem zweiten (1) Eingang, der den Übertrag von der vorangehenden Arithmetikzelle empfängt, und einem Ausgang enthalten, an dem ein entsprechender Übertrag in die nachfolgende Arithmetikzelle in der Kette eingespeist wird.
  • Die Eingangsverbindungen jeder Arithmetikzelle 1012 sind im Detail in 10B veranschaulicht. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in sowohl der ersten Arithmetikzelle 1012-0 als auch der zweiten Arithmetikzelle 1012-1 können ausgelegt sein, Eingabebits S0, S1, A0 bzw. 0 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der dritten Arithmetikzelle 1012-2 können ausgelegt sein, Eingabebits S0, S1, A2 bzw. A0 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der vierten Arithmetikzelle 1012-3 können ausgelegt sein, Eingabebits S0, S1, A3 bzw. A1 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der fünften Arithmetikzelle 1012-4 können ausgelegt sein, Eingabebits S0, S1, A4 bzw. A2 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der sechsten Arithmetikzelle 1012-5 können ausgelegt sein, Eingabebits S0, S1, A5 bzw. A3 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der siebten Arithmetikzelle 1012-6 können ausgelegt sein, Eingabebits S0, S1, A6 bzw. A4 zu empfangen. Die Eingangsanschlüsse a, b, c und d der LUTs 1020 und 1022 in der achten Arithmetikzelle 1012-7 können ausgelegt sein, Eingabebits S0, S1, A7 bzw. A5 zu empfangen.
  • Mit dieser Anordnung kann jede Arithmetikzelle 1012 ausgelegt sein, die folgende Operation durchzuführen. Falls S[0:1] gleich „00“ ist, dann ist Z = A[k] und der Übertrag ist null. Falls S[0:1] gleich „01“ ist, dann ist Z = A[k-2] und der Übertrag ist null. In keinem dieser Fälle wird die Übertragskette aktiviert und die empfangenen Eingabedaten werden direkt an den Ausgang der gleichen Arithmetikzelle geleitet.
  • Falls S[0:1] gleich „10“ ist, dann ist Z gleich dem empfangenen Übertrags-Eingang und A[k] wird an den Übertrag geleitet. Falls S[0:1] gleich „11“ ist, dann ist Z wiederum gleich dem empfangenen Übertrags-Eingang und A[k-2] wird an den Übertrag geleitet. In beiden dieser Fälle werden die Ausgabedaten dieser Arithmetikzelle von der vorangehenden benachbarten Zelle geleitet und die Übertragskette wird aktiviert, um die empfangene Dateneingabe an die nächste nachfolgende Zelle in der Kette zu leiten.
  • Im Vergleich zur Implementierung von 10A, die N Instanzen von 6-Eingangs-LUTs verwendet, verwendet die Architektur von 10B 16 oder 2N 4-Eingangs-LUTs. Eine 6-Eingangs-LUT ist jedoch in der Größe 4x größer als eine 4-Eingangs-LUT. Als Ergebnis ist die Verschiebungseinheitskonfiguration von 10B (und 10C) die Hälfte der Fläche als die herkömmliche Barrel-Verschiebungseinheit, was Kosten und Energie reduziert.
  • In der Anordnung von 10B sind die logischen XOR-Gatter 1024 und die 2:1-Multiplexer 1026 in jeder Arithmetikzelle 1020 in Reihe verbunden und bilden die Übertragskette 1030. 10C veranschaulicht eine weitere geeignete Anordnung, die der Architektur von 10B ähnlich ist, aber die Übertragskette 1060 ist unter Verwendung von Addierern 1050 implementiert, die in einer Kette verbunden sind. Der erste Addierer 1050 in der Kette empfängt auch einen Übertrags-Eingang von „0“. Die Barrel-Verschiebungseinheit auf Addiererkettenbasis von 10B kann im Vergleich zur herkömmlichen Barrel-Verschiebungseinheit von 10A ebenfalls wesentliche Flächen- und Kosteneinsparungen bieten. Die verbesserten Verschiebungsschaltkreise von 10B und 10C sind nicht auf eine Verwendung bei Verschaltungen zum maschinellen Lerntraining beschränkt. Falls gewünscht, können Verschiebungseinheiten auf Übertragskettenbasis in einem beliebigen Typ von arithmetischem oder Rechensystem enthalten sein.
  • Beispiele:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist ein integrierter Schaltkreis, umfassend: erste digitale Signalverarbeitungsblöcke (DSP-Blöcke), die ausgelegt sind, in einem Gleitkomma-Modus zu arbeiten; zweite digitale Signalverarbeitungsblöcke (DSP-Blöcke), die ausgelegt sind, in einem Festkomma-Modus zu arbeiten, der vom Gleitkomma-Modus verschieden ist; und einen Addierer, der ausgelegt ist, ein erstes Signal von den ersten DSP-Blöcken, die im Gleitkomma-Modus arbeiten, und ein zweites Signal von den zweiten DSP-Blöcken, die im Festkomma-Modus arbeiten, zu empfangen.
  • Beispiel 2 ist der integrierte Schaltkreis von Beispiel 1, wobei die ersten DSP-Blöcke optional Teil eines harten Datenpfads sind und wobei die zweiten DSP-Blöcke optional Teil eines harten und weichen Datenpfads sind.
  • Beispiel 3 ist der integrierte Schaltkreis eines der Beispiele 1-2, wobei die ersten und die zweiten DSP-Blöcke optional ausgelegt sind, Eingangssignale eines ersten Gleitkommaformats zu empfangen, und wobei die ersten DSP-Blöcke optional ausgelegt sind, Signale in einem zweiten Gleitkommaformat auszugeben, das vom ersten Gleitkommaformat verschieden ist.
  • Beispiel 4 ist der integrierte Schaltkreis von Beispiel 3, wobei das erste Gleitkommaformat optional ein BFLOAT16-Format mit einem Vorzeichenbit, acht Exponentenbits und maximal sieben Mantissenbits ist.
  • Beispiel 5 ist der integrierte Schaltkreis eines der Beispiele 3-4, wobei das zweite Gleitkommaformat optional ein Format mit einfacher Genauigkeit mit einem Vorzeichenbit, acht Exponentenbits und dreiundzwanzig Mantissenbits ist.
  • Beispiel 6 ist der integrierte Schaltkreis eines der Beispiele 3-5, wobei die zweiten DSP-Blöcke optional ausgelegt sind, Signale in einem dritten Gleitkommaformat auszugeben, das vom ersten und vom zweiten Gleitkommaformat verschieden ist.
  • Beispiel 7 ist der integrierte Schaltkreis von Beispiel 6, wobei das dritte Gleitkommaformat optional mehr Exponentenbits als das erste Gleikommaformat aufweist.
  • Beispiel 8 ist der integrierte Schaltkreis eines der Beispiele 6-7, wobei das dritte Gleitkommaformat optional eine anpassbare Anzahl an Mantissenbits aufweist, die das Ausmaß der Trunkierung für das dritte Gleitkommaformat bestimmt.
  • Beispiel 9 ist der integrierte Schaltkreis eines der Beispiele 6-8, der optional ferner einen Formatumwandlungsschaltkreis umfasst, der ausgelegt ist, Signale vom zweiten Gleitkommaformat in das dritte Gleitkommaformat umzuwandeln.
  • Beispiel 10 ist der integrierte Schaltkreis eines der Beispiele 6-9, wobei die zweiten DSP-Blöcke optional auf Softlogik beruhen, um ein Ausgeben der Signale im dritten Gleitkommaformat zu unterstützen.
  • Beispiel 11 ist der integrierte Schaltkreis von Beispiel 10, der optional ferner erste Addierschaltkreise umfasst, die ausgelegt sind, die Signale von den zweiten DSP-Blöcken zu empfangen und Signale in einem vierten Gleitkommaformat auszugeben, das vom dritten Gleitkommaformat verschieden ist.
  • Beispiel 12 ist der integrierte Schaltkreis von Beispiel 11, der optional ferner einen Addierbaum umfasst, der ausgelegt ist, Signale von den ersten Addierschaltkreisen zu empfangen.
  • Beispiel 13 ist der integrierte Schaltkreis von Beispiel 12, wobei der Addierbaum optional eine erste Addierstufe umfasst, die ausgelegt ist, Signale in einem fünften Gleitkommaformat auszugeben, das vom vierten Gleitkommaformat verschieden ist.
  • Beispiel 14 ist der integrierte Schaltkreis von Beispiel 13, wobei der Addierbaum optional eine zweite Addierstufe umfasst, die ausgelegt ist, Signale in einem sechsten Gleitkommaformat auszugeben, das vom fünften Gleitkommaformat verschieden ist.
  • Beispiel 15 ist der integrierte Schaltkreis von Beispiel 14, wobei der Addierbaum optional eine dritte Addierstufe umfasst, die ausgelegt ist, Signale in einem siebten Gleitkommaformat auszugeben, das vom sechsten Gleitkommaformat verschieden ist.
  • Beispiel 16 ist der integrierte Schaltkreis von Beispiel 15, der optional ferner einen Normalisierungsschaltkreis umfasst, der ausgelegt ist, Signale vom Addierbaum zu empfangen und Signale vom siebten Gleitkommaformat in das zweite Gleitkommaformat umzuwandeln.
  • Beispiel 17 ist eine Hybrid-Gleitkommaarithmetik-Verschaltung, umfassend: einen ersten Abschnitt, der nur harte Schaltkreisblöcke enthält; einen zweiten Abschnitt, der sowohl harte als auch weiche Schaltkreise enthält; und einen Addierer im ersten Abschnitt, wobei der Addierer ausgelegt ist, ein erstes Signal vom ersten Abschnitt zu empfangen und ein zweites Signal vom zweiten Abschnitt zu empfangen.
  • Beispiel 18 ist die Hybrid-Gleitkommaarithmetik-Verschaltung von Beispiel 17, wobei die harten Schaltkreisblöcke im ersten Abschnitt optional erste digitale Signalverarbeitungsblöcke (DSP-Blöcke) umfassen, die in einem Gleitkomma-Modus arbeiten, und wobei die harten Schaltkreisblöcke im zweiten Abschnitt optional digitalsignalverarbeitende zweite digitale Signalverarbeitungsblöcke (DSP-Blöcke) umfassen, die in einem Festkomma-Modus arbeiten, der vom Gleitkomma-Modus verschieden ist.
  • Beispiel 19 ist die Hybrid-Gleitkommaarithmetik-Verschaltung eines der Beispiele 17-18, wobei der zweite Abschnitt optional ausgelegt ist, Eingangssignale von einem Einspeisungsschaltkreis zu empfangen, und wobei der erste Abschnitt optional ausgelegt ist, Eingangssignale über eine Vielzahl von Eingangsverzögerungsregistern vom Einspeisungsschaltkreis zu empfangen, um ein Latenzungleichgewicht zwischen dem ersten und dem zweiten Abschnitt zu berücksichtigen.
  • Beispiel 20 ist eine Hybrid-Gleitkomma-Skalarprodukt-Verschaltung, umfassend: einen harten Datenpfad, der digitale Signalverarbeitungsblöcke (DSP-Blöcke) enthält, die in einem Gleitkomma-Modus konfiguriert sind; einen harten und weichen Datenpfad, der Softlogik und digitale Signalverarbeitungsblöcke (DSP-Blöcke) enthält, die in einem Festkomma-Modus konfiguriert sind; einen Addierer, der ausgelegt ist, Signale vom harten Datenpfad und vom harten und weichen Datenpfad zu empfangen; und einen Akkumulationsspeicherschaltkreis, der ausgelegt ist, Signale vom Addierer zu empfangen, wobei ein zusätzlicher Addierer im harten Datenpfad ausgelegt ist, ein Akkumulationssignal über einen Rückkopplungspfad vom Akkumulationsspeicher zu empfangen.
  • Beispiel 21 ist eine Verschaltung, umfassend: einen Zwei-Element-Skalarproduktschaltkreis, der ausgelegt ist, eine erste, zweite, dritte und vierte Eingabe zu empfangen, um ein erstes Zwischenprodukt aus der ersten und der zweiten Eingabe zu generieren, ein zweites Zwischenprodukt aus der dritten und der vierten Eingabe zu generieren und eine Summe des ersten und des zweiten Zwischenprodukts zu berechnen, wobei der Zwei-Element-Skalarproduktschaltkreis einen ersten Multiplikator, der das erste Zwischenprodukt generiert, und einen zweiten Multiplikator umfasst, der das zweite Zwischenprodukt generiert, und wobei der erste Multiplikator umfasst: einen Exponentenaddierschaltkreis, der ausgelegt ist, den Exponenten der ersten Eingabe und den Exponenten der zweiten Eingabe zu addieren, wobei der Exponentenaddierschaltkreis ausgelegt ist, den Exponenten des ersten Zwischenprodukts direkt zu generieren.
  • Beispiel 22 ist die Verschaltung von Beispiel 21, wobei der erste Multiplikator optional den Exponenten des ersten Zwischenprodukts ohne einen Exponentenaktualisierungsschaltkreis direkt generiert.
  • Beispiel 23 ist die Verschaltung eines der Beispiele 21-22, wobei der erste Multiplikator optional den Exponenten des ersten Zwischenprodukts ohne einen Überlauf- und Überlaufprüfschaltkreis direkt generiert.
  • Beispiel 24 ist die Verschaltung eines der Beispiele 21-23, wobei der erste Multiplikator optional ferner umfasst: einen Mantissenmultiplikationsschaltkreis, der ausgelegt ist, die Mantisse der ersten Eingabe und die Mantisse der zweiten Eingabe zu multiplizieren; und einen Bittrunkierungsschaltkreis, der ausgelegt ist, Signale direkt vom Mantissenmultiplikationsschaltkreis zu empfangen und die Mantisse des ersten Zwischenprodukts direkt zu generieren.
  • Beispiel 25 ist die Verschaltung von Beispiel 24, wobei der Bittrunkierungsschaltkreis optional ausgelegt ist, ein anpassbares Ausmaß an Mantissentrunkierung durchzuführen, um Ressourcennutzung mit Genauigkeit auszugleichen.
  • Beispiel 26 ist die Verschaltung eines der Beispiele 24-25, wobei der erste Multiplikator optional die Mantisse des ersten Zwischenprodukts ohne einen Normalisierungsschaltkreis direkt generiert.
  • Beispiel 27 ist die Verschaltung eines der Beispiele 24-26, wobei der erste Multiplikator optional die Mantisse des ersten Zwischenprodukts ohne einen Rundungsschaltkreis direkt generiert.
  • Beispiel 28 ist die Verschaltung eines der Beispiele 21-27, wobei der Zwei-Element-Skalarproduktschaltkreis optional ferner einen Addierschaltkreis enthält, der ausgelegt ist, die Summe des ersten und des zweiten Zwischenprodukts zu berechnen, und wobei der Addierschaltkreis optional umfasst: einen Exponentenmultiplexschaltkreis, der ausgelegt ist, entweder den Exponenten des ersten Zwischenprodukts oder den Exponenten des zweiten Zwischenprodukts auszuwählen, wobei der Exponentenmultiplexschaltkreis ferner ausgelegt ist, den Exponenten der Summe direkt zu generieren.
  • Beispiel 29 ist die Verschaltung von Beispiel 28, wobei der Addierschaltkreis optional den Exponenten der Summe ohne einen Exponentenaktualisierungsschaltkreis direkt ausgibt.
  • Beispiel 30 ist die Verschaltung eines der Beispiele 28-29, wobei der Addierschaltkreis optional ferner umfasst: einen Mantissenaustauschschaltkreis mit einem ersten Ausgang und einem zweiten Ausgang; einen ersten Zweierkomplement-Umwandlungsschaltkreis, der ausgelegt ist, einen ersten Mantissenwert vom ersten Ausgang des Mantissenaustauschschalkreises zu empfangen; und einen zweiten Zweierkomplement-Umwandlungsschaltkreis, der ausgelegt ist, einen zweiten Mantissenwert vom zweiten Ausgang des Mantissenaustauschschalkreises zu empfangen.
  • Beispiel 31 ist die Verschaltung eines der Beispiele 28-30, wobei der Addierschaltkreis optional die Mantisse der Summe ohne einen Vorzeichen-Betrag-Wandler generiert.
  • Beispiel 32 ist die Verschaltung eines der Beispiele 28-31, wobei der Addierschaltkreis optional die Mantisse der Summe ohne einen Zähler für führende Nullen und ohne eine Normalisierungsverschiebungseinheit generiert.
  • Beispiel 33 ist die Verschaltung eines der Beispiele 28-32, wobei der Addierschaltkreis optional die Mantisse der Summe ohne einen Rundungsschaltkreis generiert.
  • Beispiel 34 ist die Verschaltung eines der Beispiele 28-33, wobei der Addierschaltkreis optional ferner umfasst: einen Ganzzahladdierer; und einen Bittrunkierungsschaltkreis, der ausgelegt ist, Signale vom Ganzzahladdierer zu empfangen und die Mantisse er Summe direkt auszugeben.
  • Beispiel 35 ist die Verschaltung eines der Beispiele 21-34, optional ferner umfassend: zusätzliche Zwei-Element-Skalarproduktschaltkreise; und einen Addierbaum, der ausgelegt ist, Summensignale vom Zwei-Element-Skalarproduktschaltkreis und den zusätzlichen Zwei-Element-Skalarproduktschaltkreisen zu empfangen, wobei der Addierbaum einen Addierer einer ersten Stufe umfasst, der enthält: einen Mantissenaustauschschaltkreis; und eine Ausrichtungsverschiebungseinheit, die ein Signal vom Mantissenaustauschschaltkreis direkt empfängt.
  • Beispiel 36 ist die Verschaltung von Beispiel 35, wobei der Addierbaum ferner optional einen Addierer einer zweiten Stufe umfasst, der die gleiche Struktur wie der Addierer der ersten Stufe aufweist, aber ausgelegt ist, Signale mit einer größeren Mantisse als der Addierer der ersten Stufe zu generieren.
  • Beispiel 37 ist eine Verschaltung, umfassend: eine Vielzahl von Skalarproduktschaltkreisen, die ausgelegt sind, Summensignale auszugeben; einen Addierbaum, der ausgelegt ist, die Summensignale von der Vielzahl von Skalarproduktschaltkreisen zu empfangen; einen digitalen Signalverarbeitungsblock (DSP-Block), der ausgelegt ist, ein zusätzliches Summensignal in einem bestimmten Gleitkommaformat auszugeben; und einen Gleitkommaformat-Umwandlungsschaltkreis, der ausgelegt ist, das zusätzliche Summensignal von einem bestimmten Gleitkommaformat in ein anderes Gleitkommaformat des Addierbaums umzuwandeln.
  • Beispiel 38 ist die Verschaltung von Beispiel 37, wobei der Gleitkommaformat-Umwandlungsschaltkreis optional umfasst: einen Exponentensubtraktionsschaltkreis, der ausgelegt ist, eine vorbestimmte ganze Zahl vom Exponenten des zusätzlichen Summensignals zu subtrahieren; einen Zweierkomplement-Umwandlungsschaltkreis, der ausgelegt ist, die Mantisse des zusätzlichen Summensignals zu empfangen; und einen Bitreduktionsschaltkreis, der ausgelegt ist, Signale vom Zweierkomplement-Umwandlungsschaltkreis zu empfangen und einen umgewandelten Mantissenwert direkt an den Addierbaum auszugeben.
  • Beispiel 39 ist eine Verschaltung, umfassend: eine Vielzahl von Skalarproduktschaltkreisen, die ausgelegt sind, Summensignale auszugeben; einen Addierbaum, der ausgelegt ist, die Summensignale von der Vielzahl von Skalarproduktschaltkreisen zu empfangen; und einen Normalisierungsschaltkreis, der ausgelegt ist, ein Ausgangssignal vom Addierbaum zu empfangen und das Ausgangssignal von einem ersten Gleitkommaformat in ein zweites Gleitkommaformat umzuwandeln, das vom ersten Gleitkommaformat verschieden ist.
  • Beispiel 40 ist die Verschaltung von Beispiel 39, wobei der Normalisierungsschaltkreis optional ferner umfasst: einen Vorzeichen-Betrag-Wandler, der ausgelegt ist, die Mantisse des Ausgangssignals zu empfangen; einen Zähler für führende Nullen, der an den Vorzeichen-Betrag-Wandler gekoppelt ist; eine Normalisierungsverschiebungseinheit, die vom Zähler für führende Nullen gesteuert wird; und einen Nullauffüllungsschaltkreis, der ausgelegt ist, Signale von der Normalisierungsverschiebungseinheit zu empfangen.
  • Beispiel 41 ist eine Verschaltung, umfassend: eine Vielzahl von Skalarproduktschaltkreisen, die ausgelegt sind, Summensignale auszugeben; und einen Addierbaum, der ausgelegt ist, die Summensignale von der Vielzahl von Skalarproduktschaltkreisen zu empfangen, und wobei der Addierbaum Verschiebungsschaltkreise auf Übertragskettenbasis umfasst.
  • Beispiel 42 ist die Verschaltung von Beispiel 41, wobei die Vielzahl von Skalarproduktschaltkreisen optional ausgelegt ist, Eingaben mit einem ersten Gleitkommaformat zu empfangen.
  • Beispiel 43 ist die Verschaltung von Beispiel 42, wobei das erste Gleitkommaformat optional ein BFLOAT16-Format mit einem Vorzeichenbit, acht Exponentenbits und sieben Mantissenbits ist.
  • Beispiel 44 ist die Verschaltung eines der Beispiele 42-43, wobei die Ausgabesummensignale optional ein zweites Gleitkommaformat aufweisen, das vom ersten Gleitkommaformat verschieden ist.
  • Beispiel 45 ist die Verschaltung von Beispiel 44, wobei das zweite Gleitkommaformat optional mehr Exponentenbits als das erste Gleikommaformat aufweist.
  • Beispiel 46 ist die Verschaltung eines der Beispiele 44-45, wobei das zweite Gleitkommaformat optional eine anpassbare Anzahl an Mantissenbits aufweist, die das Ausmaß der Trunkierung für das zweite Gleitkommaformat bestimmt.
  • Beispiel 47 ist die Verschaltung eines der Beispiele 41-46, wobei mindestens einer der Schaltkreise auf Übertragskettenbasis optional eine Reihe von Arithmetikzellen umfasst, die in einer Kette verbunden sind.
  • Beispiel 48 ist die Verschaltung von Beispiel 47, wobei mindestens eine Arithmetikzelle in der Reihe optional umfasst: eine erste Nachschlagetabelle, die ausgelegt ist, eine erste Funktion bereitzustellen; und eine zweite Nachschlagetabelle, die ausgelegt ist, eine zweite Funktion bereitzustellen, die von der ersten Funktion verschieden ist.
  • Beispiel 49 ist die Verschaltung von Beispiel 48, wobei die erste und die zweite Nachschlagetabelle optional ausgelegt sind, die gleichen Eingangssignale zu empfangen.
  • Beispiel 50 ist die Verschaltung eines der Beispiele 48-49, wobei die mindestens eine Arithmetikzelle optional ferner ein Logikgatter umfasst, das ausgelegt ist, Signale von der ersten Nachschlagetabelle zu empfangen.
  • Beispiel 51 ist die Verschaltung von Beispiel 50, wobei das Logikgatter optional ein logisches XOR-Gatter umfasst.
  • Beispiel 52 ist die Verschaltung eines der Beispiele 50-51, wobei die mindestens eine Arithmetikzelle optional ferner einen Multiplexingschaltkreis umfasst, der ausgelegt ist, Signale von der zweiten Nachschlagetabelle zu empfangen, und wobei der Multiplexingschaltkreis optional durch die von der ersten Nachschlagetabelle ausgegebenen Signale gesteuert wird.
  • Beispiel 53 ist die Verschaltung eines der Beispiele 48-52, wobei die mindestens eine Arithmetikzelle optional ferner einen Addierer umfasst, der ausgelegt ist, Signale von der ersten Nachschlagetabelle zu empfangen.
  • Beispiel 54 ist die Verschaltung von Beispiel 53, wobei der Addierer optional an mindestens eine andere Arithmetikzelle in der Kette gekoppelt ist.
  • Beispiel 55 ist ein Verschiebungsschaltkreis, umfassend: eine erste Arithmetikzelle; und eine zweite Arithmetikzelle, die in einer Kette an die erste Arithmetikzelle gekoppelt ist, wobei die erste und die zweite Arithmetikzelle eine Übertragskette enthalten, die verschobene Ausgabebits generiert.
  • Beispiel 56 ist der Verschiebungsschaltkreis von Beispiel 55, wobei die erste Arithmetikzelle optional ausgelegt ist, ein erstes Eingabebit und ein Steuerbit zu empfangen, und wobei die zweite Arithmetikzelle optional ausgelegt ist, ein zweites Eingabebit und das Steuerbit zu empfangen.
  • Beispiel 57 ist der Verschiebungsschaltkreis eines der Beispiele 55-56, wobei die erste und die zweite Arithmetikzelle optional identische Strukturen aufweisen.
  • Beispiel 58 ist der Verschiebungsschaltkreis eines der Beispiele 55-57, wobei die Übertragskette optional eine Vielzahl von in Reihe verbundenen Logikgattern und Multiplexingschaltkreisen aufweist.
  • Beispiel 59 ist der Verschiebungsschaltkreis eines der Beispiele 55-58, wobei die Übertragskette optional eine Vielzahl von in Reihe verbundenen Addierern umfasst.
  • Beispiel 60 ist ein Bitverschiebungsschaltkreis, umfassend: erste Vier-Eingabe-Nachschlagetabellen, die ausgelegt sind, Eingangssignale zu empfangen und eine erste Funktion auf die Eingangssignale anzuwenden; zweite Vier-Eingabe-Nachschlagetabellen, die ausgelegt sind, die Eingangssignale zu empfangen und eine zweite, von der ersten Funktion verschiedene Funktion auf die Eingangssignale anzuwenden; und eine Übertragskette, die ausgelegt ist, Signale zu empfangen, die von den ersten und den zweiten Vier-Eingabe-Nachschlagetabellen ausgegeben wurden, und eine verschobene Version der Eingangssignale zu generieren.
  • Beispielsweise können alle optionalen Merkmale der oben beschriebenen Einrichtung in Bezug auf das hierin beschriebene Verfahren oder den hierin beschriebenen Prozess implementiert werden. Das Vorstehende ist lediglich veranschaulichend für die Prinzipien dieser Offenbarung und verschiedene Modifikationen können von Fachleuten vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in beliebiger Kombination implementiert werden.

Claims (20)

  1. Integrierter Schaltkreis, umfassend: erste digitale Signalverarbeitungsblöcke (DSP-Blöcke), die dazu ausgelegt sind, in einem Gleitkomma-Modus zu arbeiten; zweite digitale Signalverarbeitungsblöcke (DSP-Blöcke), die dazu ausgelegt sind, in einem Festkomma-Modus zu arbeiten, der vom Gleitkomma-Modus verschieden ist; und einen Addierer, der dazu ausgelegt ist, ein erstes Signal von den ersten DSP-Blöcken, die im Gleitkomma-Modus arbeiten, und ein zweites Signal von den zweiten DSP-Blöcken, die im Festkomma-Modus arbeiten, zu empfangen.
  2. Integrierter Schaltkreis nach Anspruch 1, wobei die ersten DSP-Blöcke Teil eines harten Datenpfads sind und wobei die zweiten DSP-Blöcke Teil eines harten und weichen Datenpfads sind.
  3. Integrierter Schaltkreis nach einem der Ansprüche 1-2, wobei die ersten und die zweiten DSP-Blöcke ausgelegt sind, Eingangssignale eines ersten Gleitkommaformats zu empfangen, und wobei die ersten DSP-Blöcke ausgelegt sind, Signale in einem zweiten Gleitkommaformat auszugeben, das vom ersten Gleitkommaformat verschieden ist.
  4. Integrierter Schaltkreis nach Anspruch 3, wobei das erste Gleitkommaformat ein BFLOAT16-Format mit einem Vorzeichenbit, acht Exponentenbits und maximal sieben Mantissenbits ist.
  5. Integrierter Schaltkreis nach einem der Ansprüche 3-4, wobei das zweite Gleitkommaformat ein Format mit einfacher Genauigkeit mit einem Vorzeichenbit, acht Exponentenbits und dreiundzwanzig Mantissenbits ist.
  6. Integrierter Schaltkreis nach einem der Ansprüche 3-5, wobei die zweiten DSP-Blöcke ausgelegt sind, Signale in einem dritten Gleitkommaformat auszugeben, das vom ersten und vom zweiten Gleitkommaformat verschieden ist.
  7. Integrierter Schaltkreis nach Anspruch 6, wobei das dritte Gleitkommaformat mehr Exponentenbits als das erste Gleikommaformat aufweist.
  8. Integrierter Schaltkreis nach einem der Ansprüche 6-7, wobei das dritte Gleitkommaformat eine anpassbare Anzahl an Mantissenbits aufweist, die das Ausmaß der Trunkierung für das dritte Gleitkommaformat bestimmt.
  9. Integrierter Schaltkreis nach einem der Ansprüche 6-8, der ferner einen Formatumwandlungsschaltkreis umfasst, der ausgelegt ist, Signale vom zweiten Gleitkommaformat in das dritte Gleitkommaformat umzuwandeln.
  10. Integrierter Schaltkreis nach einem der Ansprüche 6-9, wobei die zweiten DSP-Blöcke auf Softlogik beruhen, um ein Ausgeben der Signale im dritten Gleitkommaformat zu unterstützen.
  11. Integrierter Schaltkreis nach Anspruch 10, der ferner erste Addierschaltkreise umfasst, die ausgelegt sind, die Signale von den zweiten DSP-Blöcken zu empfangen und Signale in einem vierten Gleitkommaformat auszugeben, das vom dritten Gleitkommaformat verschieden ist.
  12. Integrierter Schaltkreis nach Anspruch 11, der ferner einen Addierbaum umfasst, der ausgelegt ist, Signale von den ersten Addierschaltkreisen zu empfangen.
  13. Integrierter Schaltkreis nach Anspruch 12, wobei der Addierbaum eine erste Addierstufe umfasst, die ausgelegt ist, Signale in einem fünften Gleitkommaformat auszugeben, das vom vierten Gleitkommaformat verschieden ist.
  14. Integrierter Schaltkreis nach Anspruch 13, wobei der Addierbaum eine zweite Addierstufe umfasst, die ausgelegt ist, Signale in einem sechsten Gleitkommaformat auszugeben, das vom fünften Gleitkommaformat verschieden ist.
  15. Integrierter Schaltkreis nach Anspruch 14, wobei der Addierbaum eine dritte Addierstufe umfasst, die ausgelegt ist, Signale in einem siebten Gleitkommaformat auszugeben, das vom sechsten Gleitkommaformat verschieden ist.
  16. Integrierter Schaltkreis nach Anspruch 15, der ferner einen Normalisierungsschaltkreis umfasst, der ausgelegt ist, Signale vom Addierbaum zu empfangen und Signale vom siebten Gleitkommaformat in das zweite Gleitkommaformat umzuwandeln.
  17. Hybrid-Gleitkommaarithmetik-Verschaltung, umfassend: einen ersten Abschnitt, der nur harte Schaltkreisblöcke enthält; einen zweiten Abschnitt, der sowohl harte als auch weiche Schaltkreise enthält; und einen Addierer im ersten Abschnitt, wobei der Addierer ausgelegt ist, ein erstes Signal vom ersten Abschnitt zu empfangen und ein zweites Signal vom zweiten Abschnitt zu empfangen.
  18. Hybrid-Gleitkommaarithmetik-Verschaltung nach Anspruch 17, wobei die harten Schaltkreisblöcke im ersten Abschnitt erste digitale Signalverarbeitungsblöcke (DSP-Blöcke) umfassen, die in einem Gleitkomma-Modus arbeiten, und wobei die harten Schaltkreisblöcke im zweiten Abschnitt digitale Signalverarbeitung zweite digitale Signalverarbeitungsblöcke (DSP-Blöcke) umfassen, die in einem Festkomma-Modus arbeiten, der vom Gleitkomma-Modus verschieden ist.
  19. Hybrid-Gleitkommaarithmetik-Verschaltung nach einem der Ansprüche 17-18, wobei der zweite Abschnitt ausgelegt ist, Eingangssignale von einem Einspeisungsschaltkreis zu empfangen, und wobei der erste Abschnitt ausgelegt ist, Eingangssignale über eine Vielzahl von Eingangsverzögerungsregistern vom Einspeisungsschaltkreis zu empfangen, um ein Latenzungleichgewicht zwischen dem ersten und dem zweiten Abschnitt zu berücksichtigen.
  20. Hybrid-Gleitkomma-Skalarprodukt-Verschaltung, umfassend: einen harten Datenpfad, der digitale Signalverarbeitungsblöcke (DSP-Blöcke) enthält, die in einem Gleitkomma-Modus konfiguriert sind; einen harten und weichen Datenpfad, der Softlogik und digitale Signalverarbeitungsblöcke (DSP-Blöcke) enthält, die in einem Festkomma-Modus konfiguriert sind; einen Addierer, der ausgelegt ist, Signale vom harten Datenpfad und vom harten und weichen Datenpfad zu empfangen; und einen Akkumulationsspeicherschaltkreis, der ausgelegt ist, Signale vom Addierer zu empfangen, wobei ein zusätzlicher Addierer im harten Datenpfad ausgelegt ist, ein Akkumulationssignal über einen Rückkopplungspfad vom Akkumulationsspeicher zu empfangen.
DE102020105536.6A 2019-03-27 2020-03-02 Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen Pending DE102020105536A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962824797P 2019-03-27 2019-03-27
US62/824,797 2019-03-27
US16/585,857 US11210063B2 (en) 2019-03-27 2019-09-27 Machine learning training architecture for programmable devices
US16/585,857 2019-09-27

Publications (1)

Publication Number Publication Date
DE102020105536A1 true DE102020105536A1 (de) 2020-10-01

Family

ID=69162426

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020105536.6A Pending DE102020105536A1 (de) 2019-03-27 2020-03-02 Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen

Country Status (3)

Country Link
US (2) US11210063B2 (de)
CN (1) CN111753993A (de)
DE (1) DE102020105536A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992329B (zh) * 2017-07-20 2021-05-11 上海寒武纪信息科技有限公司 一种计算方法及相关产品
KR20220038694A (ko) * 2019-07-03 2022-03-29 후아시아 제너럴 프로세서 테크놀러지스 인크. 가속기 회로의 조작을 위한 명령어
US11275560B2 (en) * 2020-02-19 2022-03-15 Meta Platforms, Inc. Hardware for floating-point arithmetic in multiple formats
US20220075595A1 (en) * 2020-09-08 2022-03-10 International Business Machines Corporation Floating point computation for hybrid formats
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
US20220129320A1 (en) * 2021-11-05 2022-04-28 Debabrata Mohapatra Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924455B1 (en) 2011-02-25 2014-12-30 Xilinx, Inc. Multiplication of matrices using systolic arrays
US9747110B2 (en) * 2015-05-20 2017-08-29 Altera Corporation Pipelined cascaded digital signal processing structures and methods
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10970042B2 (en) * 2017-11-20 2021-04-06 Intel Corporation Integrated circuits with machine learning extensions
US10776078B1 (en) * 2018-09-23 2020-09-15 Groq, Inc. Multimodal multiplier systems and methods

Also Published As

Publication number Publication date
US11210063B2 (en) 2021-12-28
US20200026494A1 (en) 2020-01-23
CN111753993A (zh) 2020-10-09
US20220107783A1 (en) 2022-04-07

Similar Documents

Publication Publication Date Title
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE69832985T2 (de) Multiplizier-Akkumulatorschaltungen
DE19839627B4 (de) Digitaler Signalprozessor
DE3854321T2 (de) Populationszählung in Rechnersystemen.
DE69731700T2 (de) Arithmetischer Schaltkreis und arithmetisches Verfahren
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE212007000102U1 (de) Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
DE1956209C3 (de) Multipliziervorrichtung
DE1549584C3 (de) Datenverarbeitungsanlage
DE3700991A1 (de) Digitaler uebertragsvorgriffsaddierer
DE68924386T2 (de) Verfahren und Gerät zur Radix-2**n-Division mit überlappender Quotientenbitauswahl und gleichzeitiger Rundung und Korrektur des Quotienten.
DE2018452A1 (de) Arithmetische Einrichtung
DE602004006841T2 (de) Elektronischer schaltkreis mit einem feld programmierbarer logischer zellen
DE112017004291T5 (de) Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation
DE69025182T2 (de) Digitaler prozessor für zweierkomplementberechnungen
DE2758130A1 (de) Binaerer und dezimaler hochgeschwindigkeitsaddierer
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE3020767A1 (de) Schaltungsanordnung zur multiplikation zweier ganzer zahlen
DE3447634C2 (de)
DE4409834A1 (de) Multiplizierschaltung und Divisionsschaltung
DE69032391T2 (de) Mehrere Bit umkodierender Multiplizierer
EP0257362A1 (de) Addierer
DE19708024A1 (de) Logische Verknüpfungsschaltung und Parallelübertragsaddierer
DE3933172A1 (de) Akkumulator fuer komplexe zahlen