DE102018108431A1 - MIXING ACCURACY COMPROMISE METHOD CIRCUIT ARRANGEMENT IN SPECIALIZED PROCESSING BLOCKS - Google Patents

MIXING ACCURACY COMPROMISE METHOD CIRCUIT ARRANGEMENT IN SPECIALIZED PROCESSING BLOCKS Download PDF

Info

Publication number
DE102018108431A1
DE102018108431A1 DE102018108431.5A DE102018108431A DE102018108431A1 DE 102018108431 A1 DE102018108431 A1 DE 102018108431A1 DE 102018108431 A DE102018108431 A DE 102018108431A DE 102018108431 A1 DE102018108431 A1 DE 102018108431A1
Authority
DE
Germany
Prior art keywords
floating
specialized processing
floating point
circuit
processing block
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
DE102018108431.5A
Other languages
German (de)
Inventor
Martin Langhammer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018108431A1 publication Critical patent/DE102018108431A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Nonlinear Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

Die vorliegenden Ausführungsformen beziehen sich auf integrierte Schaltungen mit einer Schaltungsanordnung, die Mischgenauigkeitsgleitkommaarithmetikoperationen effizient ausführt. Eine solche Schaltungsanordnung kann in spezialisierten Verarbeitungsblöcken implementiert sein. Die spezialisierten Verarbeitungsblöcke können eine konfigurierbare Verbindungsschaltungsanordnung beinhalten, um eine Vielzahl verschiedener Nutzungsmodi zu unterstützen. Beispielsweise können die spezialisierten Verarbeitungsblöcke auf Wunsch Festkomma-Addition, Gleitkomma-Addition, Festkomma-Multiplikation, Gleitkomma-Multiplikation, die Summe zweier Multiplikationen in einer ersten Gleitkommagenauigkeit, mit oder ohne Umwandlung in eine zweite Gleitkommagenauigkeit, und letztere gefolgt von einer anschließenden Addition in der zweiten Gleitkommagenauigkeit, implementieren, um nur einige zu nennen. Bei einigen Ausführungsformen können zwei oder mehr spezialisierte Verarbeitungsblöcke in einer Kaskadenkette angeordnet sein und zusammen komplexere Operationen, wie beispielsweise ein rekursives Skalarprodukt zweier Vektoren von Gleitkommazahlen mit einer ersten Gleitkommagenauigkeit und die Ausgabe des Skalarprodukts in einer zweiten Gleitkommagenauigkeit ausführen.The present embodiments relate to integrated circuits having a circuit that efficiently executes composite precision floating point arithmetic operations. Such circuitry may be implemented in specialized processing blocks. The specialized processing blocks may include configurable interconnect circuitry to support a variety of different usage modes. For example, the specialized processing blocks may optionally include fixed point addition, floating point addition, fixed point multiplication, floating point multiplication, the sum of two multiplications in a first floating point precision, with or without conversion to a second floating point precision, and the latter followed by a subsequent addition in the second floating point inaccuracy, to implement just to name a few. In some embodiments, two or more specialized processing blocks may be arranged in a cascade chain and together perform more complex operations, such as a recursive dot product of two floating-point vectors with a first floating-point precision and the output of the dot product in a second floating point precision.

Description

Gebiet der TechnikField of engineering

Die vorliegenden Ausführungsformen beziehen sich auf integrierte Schaltungen und insbesondere auf eine Mischgenauigkeitsgleitkommaarithmetik-Schaltungsanordnung in spezialisierten Verarbeitungsblöcken in einer integrierten Schaltung.The present embodiments relate to integrated circuits, and more particularly to mixed precision floating point arithmetic circuitry in specialized processing blocks in an integrated circuit.

Hintergrundbackground

Mit zunehmender Komplexität von Anwendungen werden immer häufiger spezialisierte Verarbeitungsblöcke in integrierte Schaltungen aufgenommen. Solche spezialisierten Verarbeitungsblöcke können teilweise oder vollständig festverdrahtet sein, um eine oder mehrere spezifische Aufgaben, wie beispielsweise eine logische oder eine mathematische Operation, auszuführen. Ein spezialisierter Verarbeitungsblock kann auch eine oder mehrere spezialisierte Strukturen, wie beispielsweise ein Array konfigurierbarer Speicherelemente, enthalten.As applications become more complex, specialized processing blocks are increasingly being incorporated into integrated circuits. Such specialized processing blocks may be partially or fully hardwired to perform one or more specific tasks, such as a logical or mathematical operation. A specialized processing block may also include one or more specialized structures, such as an array of configurable storage elements.

Beispiele für Strukturen, die häufig in solchen spezialisierten Verarbeitungsblöcken implementiert sind, beinhalten: Multiplizierer, Addierer, Akkumulatoren, arithmetisch-logische Einheiten (Arithmetic Logic Units, ALUs), Barrel-Shifter, verschiedene Speicherelemente oder Speicherschaltungen, wie beispielsweise First-In-First-Out-(FIFO-) Schaltungen, Last-In-First-Out- (LIFO-) Schaltungen, Serial-In-Parallel-Out- (SIPO-) Schieberegisterschaltungen, Parallel-In-Serial-Out- (PISO-) Schieberegisterschaltungen, Random-Access-Memory- (RAM-) Schaltungen, Read-Only-Memory- (ROM-) Schaltungen, Content-Addressable-Memory (CAM-) Schaltungen und -Registerdateien, logische AND-, logische NAND-, logische OR-, logische NOR-Arrays usw. oder Kombinationen derselben.Examples of structures that are often implemented in such specialized processing blocks include: multipliers, adders, accumulators, arithmetic logic units (ALUs), barrel shifters, various memory elements or memory circuits, such as first-in-first Out (FIFO) circuits, Last In First Out (LIFO) circuits, Serial In Parallel Out (SIPO) shift register circuits, Parallel In Serial Out (PISO) shift register circuits, Random access memory (RAM) circuits, read only memory (ROM) circuits, content addressable memory (CAM) circuits and register files, logical AND, logical NAND, logical OR, logical NOR arrays etc. or combinations thereof.

Ein besonders nützlicher Typ eines spezialisierten Verarbeitungsblocks, der bisweilen auch als ein digitaler Signalverarbeitungsblock (Digital Signal Processing Block, DSP Block) bezeichnet wird, kann zur Verarbeitung digitaler Signale, wie beispielsweise Videosignale, Audiosignale usw., genutzt werden. Solche Blöcke werden häufig auch als Multiplizier-Akkumulier- (Multiply-Accumulate-, MAC-) Blöcke bezeichnet, da sie Strukturen zum Ausführen von Multiplikationsoperationen und Summen und/oder Akkumulationen von Multiplikationsoperationen beinhalten.One particularly useful type of specialized processing block, sometimes referred to as a Digital Signal Processing Block (DSP Block), can be used to process digital signals such as video signals, audio signals, and so forth. Such blocks are often referred to as multiply-accumulate (MAC) blocks because they include structures for performing multiplication operations and sums and / or accumulations of multiplication operations.

Integrierte Schaltungen, wie beispielsweise programmierbare integrierte Schaltungen, beinhalten oft spezialisierte Verarbeitungsblöcke. Jeder dieser spezialisierten Verarbeitungsblöcke beinhaltet Multiplizierer, Addierer und Register sowie programmierbare Verbinder (z. B. Multiplexer), welche die unterschiedliche Konfiguration der verschiedenen Komponenten des Blocks ermöglichen.Integrated circuits, such as programmable integrated circuits, often include specialized processing blocks. Each of these specialized processing blocks includes multipliers, adders, and registers, as well as programmable connectors (eg, multiplexers) that enable the different configuration of the various components of the block.

Üblicherweise waren die arithmetischen Operatoren (Addierer und Multiplizierer) in solchen spezialisierten Verarbeitungsblöcken bislang Festkomma-Operatoren. Wenn Gleitkomma-Operatoren benötigt würden, so würden sie außerhalb des spezialisierten Verarbeitungsblocks anhand einer programmierbaren Mehrzwecklogik der Vorrichtung oder anhand einer Kombination der Festkomma-Operatoren innerhalb des spezialisierten Verarbeitungsblocks mit zusätzlicher Logik in der programmierbaren Mehrzwecklogik erstellt.Traditionally, the arithmetic operators (adders and multipliers) in such specialized processing blocks have heretofore been fixed-point operators. If floating-point operators were needed, they would be created outside of the specialized processing block by means of programmable general purpose logic of the device or by a combination of the fixed-point operators within the specialized processing block with additional logic in the multipurpose programmable logic.

Figurenlistelist of figures

Es zeigen:

  • 1 ein Diagramm einer exemplarischen integrierten Schaltung, wie beispielsweise einer programmierbaren integrierten Schaltung, nach einigen Ausführungsformen;
  • 2 ein Diagramm eines exemplarischen spezialisierten Verarbeitungsblocks zum Ausführen von Mischgenauigkeitsgleitkommaoperationen nach einigen Ausführungsformen;
  • 3 ein Diagramm zweier exemplarischer spezialisierter Verarbeitungsblöcke, die in einer Kaskadenkette angeordnet sind und zusammen eine erste Stufe einer rekursiven Skalarproduktoperation ausführen, nach einigen Ausführungsformen;
  • 4 ein Diagramm zweier exemplarischer spezialisierter Verarbeitungsblöcke, die in einer Kaskadenkette angeordnet sind und zusammen eine erste Stufe einer rekursiven Skalarproduktoperation und einer Akkumulationsoperation ausführen, nach einigen Ausführungsformen;
  • 5 ein Diagramm von sechs exemplarischen spezialisierten Verarbeitungsblöcken, die in einer Kaskadenkette angeordnet sind und ein Skalarprodukt zweier Vektoren von Gleitkommazahlen erzeugen, nach einigen Ausführungsformen;
  • 6 ein Diagramm von vier exemplarischen spezialisierten Verarbeitungsblöcken, die in einer Kaskadenkette angeordnet sind und ein rekursives Skalarprodukt zweier Vektoren von Gleitkommazahlen und eine Akkumulation des Ergebnisses ausführen, nach einigen Ausführungsformen;
  • 7 ein Ablaufdiagramm exemplarischer Operationen zum Betreiben einer integrierten Schaltung, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt, nach einigen Ausführungsformen;
  • 8 eine Querschnittsansicht eines magnetischen Datenspeichermediums, das mit einem Satz maschinenausführbarer Anweisungen zum Konfigurieren einer integrierten Schaltung zum Erzeugen eines Skalarprodukts eines ersten und eines zweiten Vektors codiert ist, nach einigen Ausführungsformen;
  • 9 eine Querschnittsansicht eines optisch lesbaren Datenspeichermediums, das mit einem Satz maschinenausführbarer Anweisungen zum Konfigurieren einer integrierten Schaltung zum Erzeugen eines Skalarprodukts eines ersten und eines zweiten Vektors codiert ist, nach einigen Ausführungsformen.
Show it:
  • 1 a diagram of an exemplary integrated circuit, such as a programmable integrated circuit, according to some embodiments;
  • 2 5 is a diagram of an exemplary specialized processing block for performing compound precision floating point operations, in accordance with some embodiments;
  • 3 Figure 4 is a diagram of two exemplary specialized processing blocks arranged in a cascade chain and together performing a first stage of recursive dot product operation, according to some embodiments;
  • 4 3 is a diagram of two exemplary specialized processing blocks arranged in a cascade chain and together performing a first stage of a recursive dot product operation and an accumulation operation, according to some embodiments;
  • 5 5 is a diagram of six exemplary specialized processing blocks arranged in a cascade chain that produce a scalar product of two floating point vector vectors, according to some embodiments;
  • 6 4 is a diagram of four exemplary specialized processing blocks arranged in a cascade chain that execute a recursive dot product of two floating-point vector vectors and an accumulation of the result, according to some embodiments;
  • 7 5 is a flowchart of exemplary operations for operating an integrated circuit that generates a scalar product of a first and a second vector, according to some embodiments;
  • 8th a cross-sectional view of a magnetic data storage medium encoded with a set of machine-executable instructions for configuring an integrated circuit to produce a scalar product of a first and a second vector, according to some embodiments;
  • 9 12 is a cross-sectional view of an optically readable data storage medium encoded with a set of machine-executable instructions for configuring an integrated circuit to produce a scalar product of a first and a second vector, according to some embodiments.

Ausführliche BeschreibungDetailed description

Die vorliegenden, hier dargelegten Ausführungsformen beziehen sich auf integrierte Schaltungen und insbesondere auf eine Mischgenauigkeitsgleitkommaarithmetik-Schaltungsanordnung in spezialisierten Verarbeitungsblöcken in einer integrierten Schaltung.The present embodiments set forth herein relate to integrated circuits, and more particularly to mixed precision floating point arithmetic circuitry in specialized processing blocks in an integrated circuit.

Gleitkommazahlen sind bei der Darstellung reeller Zahlen in wissenschaftlicher Schreibweise in Rechensystemen üblich und dazu gestaltet, eine große numerische Bandbreite und verschiedene Genauigkeitsanforderungen abzudecken. Die am 29. August 2008 veröffentlichte Norm IEEE 754 bzw. Norm ANSI/IEEE 754-2008 wird üblicherweise für Gleitkommazahlen verwendet. Eine Gleitkommazahl beinhaltet drei verschiedene Teile: ein Vorzeichen, eine Mantisse, die bisweilen auch als Signifikant bezeichnet wird, und einen Exponenten. Jeder dieser Teile kann durch eine Binärzahl dargestellt werden und im Format der Norm IEEE 754 in Abhängigkeit von der Genauigkeit verschiedene Bitgrößen aufweisen. Eine Gleitkommazahl mit einfacher Genauigkeit kann beispielsweise 32 Bits erfordern, die wie folgt verteilt sind: ein Vorzeichenbit (Bit 31), acht Exponentenbits (Bits [30:23]) und 23 Mantissenbits (Bits [22:0]). Eine Gleitkommazahl mit doppelter Genauigkeit kann 64 Bits erfordern und ein Vorzeichenbit (Bit 63), 11 Exponentenbits (Bits [62:52]) und 52 Mantissenbits (Bits [51:0]) beinhalten. Eine Gleitkommazahl mit halber Genauigkeit kann 16 Bits erfordern und ein Vorzeichenbit (Bit 15), 5 Exponentenbits (Bits [14:10]) und 10 Mantissenbits (Bits [9:0]) beinhalten.Floating-point numbers are commonplace in representing real numbers in scientific notation in computing systems and are designed to cover a large numerical bandwidth and various accuracy requirements. The on 29th of August 2008 published standard IEEE 754 or standard ANSI / IEEE 754 - 2008 is commonly used for floating-point numbers. A floating-point number includes three distinct parts: a sign, a mantissa, sometimes referred to as a signifier, and an exponent. Each of these parts can be represented by a binary number and in the format of the IEEE standard 754 have different bit sizes depending on the accuracy. For example, a single-precision floating-point number may require 32 bits, which are distributed as follows: a sign bit (bits 31 ), eight exponent bits (bits [30:23]) and 23 mantissa bits (bits [22: 0]). A double-precision floating-point number may require 64 bits and a sign bit (bits 63 ), 11 exponent bits (bits [62:52]) and 52 mantissa bits (bits [51: 0]). A half-precision floating-point number may require 16 bits and a sign bit (bits 15 ), 5 exponent bits (bits [14:10]) and 10 mantissa bits (bits [9: 0]).

Nach der Norm IEEE 754 kann eine Mantisse auch zusätzliche Bits aufweisen. Eine Mantisse mit zusätzlichen Bits wird bisweilen auch als eine erweiterte Mantisse bezeichnet. Eine erweiterte Mantisse mit einfacher Genauigkeit kann beispielsweise fünf zusätzliche Bits aufweisen (d. h. eine erweiterte Mantisse mit einfacher Genauigkeit kann aus 28 Bits statt aus 23 Bits bestehen). Die rechts vom niedrigstwertigen Bit (Least Significant Bit, LSB) hinzugefügten letzten drei Bits stellen ein Round-, ein Guard- und ein Sticky-Bit dar.According to the IEEE standard 754 For example, a mantissa may also have additional bits. A mantissa with extra bits is sometimes referred to as an extended mantissa. For example, an extended single-precision mantissa may have five extra bits (ie, a single-precision extended mantissa may consist of 28 bits instead of 23 bits). The last three bits added to the right of the Least Significant Bit (LSB) represent a round, a guard, and a sticky bit.

Round- und Guard-Bits können zusätzliche Genauigkeit beim Ausführen arithmetischer Operationen bereitstellen. Beispielsweise kann das Dividieren einer Mantisse mit einer „1“ in der niedrigstwertigen Bitposition durch zwei dazu führen, dass das Round-Bit „1“ wird. Eine zusätzliche Division durch zwei kann dazu führen, dass das Guard-Bit „1“ wird. Auf diese Weise ermöglichen das Round- und das Guard-Bit die Darstellung von Zahlen, die kleiner sind, als eine Mantisse ohne diese zusätzlichen Bits in der Lage wäre, exakt darzustellen. Das Sticky-Bit kann jegliche Bits der Wertigkeit „1“ aufzeichnen, die durch Ausführen einer logischen OR-Operation mit dem Round- und dem Guard-Bit jenseits der Genauigkeit der Mantisse verschoben werden.Round and guard bits can provide additional accuracy in performing arithmetic operations. For example, dividing a mantissa by a "1" in the least significant bit position by two may result in the round bit becoming "1". An additional division by two can cause the guard bit to become "1". In this way, the Round and Guard bits allow for the representation of numbers that are smaller than a mantissa without these extra bits would be able to accurately represent. The sticky bit can record any bits of significance "1" which are shifted by performing a logical OR operation with the round and guard bits beyond the precision of the mantissa.

Zwei Bits können, wenn dies gewünscht ist, jenseits der Position des höchstwertigen Bits (Most Significant Bit, MSB) hinzugefügt werden und jeglichen durch eine Gleitkommaarithmetikoperation erzeugten Überlauf absorbieren.If desired, two bits may be added beyond the Most Significant Bit (MSB) position and absorb any overflow generated by a floating point arithmetic operation.

Das Vorzeichen einer Gleitkommazahl nach der Norm IEEE 754 wird anhand eines einzelnen Bits dargestellt, wobei eine Null eine positive Zahl bezeichnet und eine Eins eine negative Zahl bezeichnet.The sign of a floating-point number according to the IEEE standard 754 is represented by a single bit, where a zero denotes a positive number and a one denotes a negative number.

Der Exponent einer Gleitkommazahl ist vorzugsweise eine vorzeichenlose Binärzahl, die beim Format mit einfacher Genauigkeit im Bereich von 0 bis 255 liegt. Um eine sehr kleine Zahl darzustellen, müssen negative Exponenten verwendet werden. So weist der Exponent vorzugsweise einen negativen Bias auf. Bei Gleitkommazahlen mit einfacher Genauigkeit ist der Bias vorzugsweise -127. Beispielsweise stellt ein Wert von 140 für den Exponenten tatsächlich (140 - 127) = 13 dar, und ein Wert von 100 stellt (100 - 127) = -27 dar. Bei Gleitkommazahlen mit doppelter und halber Genauigkeit ist der Exponenten-Bias vorzugsweise -1023 bzw. -15.The exponent of a floating-point number is preferably an unsigned binary number ranging from 0 to 255 in the single precision format. To represent a very small number, negative exponents must be used. Thus, the exponent preferably has a negative bias. For single-precision floating-point numbers, the bias is preferably -127. For example, a value of 140 for the exponent actually ( 140 - 127 ) = 13, and a value of 100 represents ( 100 - 127 ) = -27. For double and half precision floating-point numbers, the exponent bias is preferably -1023 and -15, respectively.

Wie vorstehend erörtert, ist nach der Norm IEEE 754 die Mantisse eine normalisierte Zahl (d. h. sie weist keine führenden Nullen auf und stellt die Genauigkeitskomponente einer Gleitkommazahl dar). Da die Mantisse im Binärformat gespeichert wird, kann das führende Bit entweder eine 0 oder eine 1 sein, wobei es bei einer normalisierten Zahl stets eine 1 sein wird. Somit braucht in einem System, in dem Zahlen immer normalisiert sind, das führende Bit nicht gespeichert zu werden und kann impliziert werden, was der Mantisse effektiv ein zusätzliches Genauigkeitsbit verleiht.As discussed above, according to the IEEE standard 754 the mantissa is a normalized number (ie it does not have leading zeros and represents the precision component of a floating-point number). Since the mantissa is stored in binary format, the leading bit may be either a 0 or a 1, and for a normalized number, it will always be a 1. Thus, in a system in which numbers are always normalized, the leading bit need not be stored and can be implied, effectively conferring an additional precision bit to the mantissa.

Spezialisierte Verarbeitungsblöcke, die arithmetische Operationen ausführen, beinhalten häufig eine Mehrzahl von Multiplizierern, Addierern, Registern und programmierbaren Verbindern (z. B. Multiplexern), die es ermöglichen, dass die verschiedenen Komponenten des spezialisierten Verarbeitungsblocks auf unterschiedliche Weise gestaltet sind. Üblicherweise waren die arithmetischen Operatoren in solchen spezialisierten Verarbeitungsblöcken bislang Festkomma-Operatoren.Specialized processing blocks that perform arithmetic operations often involve a plurality of multipliers, adders, registers, and programmable connectors (eg, multiplexers) that enable the various components of the specialized processing block to be designed in different ways. Traditionally, the arithmetic operators in such specialized processing blocks have heretofore been fixed-point operators.

Wenn Gleitkomma-Operatoren benötigt würden, so würden sie außerhalb des spezialisierten Verarbeitungsblocks (z. B. anhand einer zusätzlichen Logik in der integrierten Schaltung oder anhand einer Kombination der Festkomma-Operatoren innerhalb des spezialisierten Verarbeitungsblocks mit zusätzlicher Logik in der integrierten Schaltung) erstellt.If floating-point operators were needed, they would be created outside of the specialized processing block (eg, by additional logic in the integrated circuit or by a combination of the fixed-point operators within the specialized processing block with additional logic in the integrated circuit).

Mit zunehmender Komplexität von Anwendungen werden jedoch immer häufiger Gleitkomma-Operatoren verwendet. Zudem können verschiedene Anwendungen unterschiedliche Genauigkeitsanforderungen aufweisen. So können zum Beispiel einige Anwendungen die Verwendung von Gleitkommaarithmetikoperatoren mit doppelter Genauigkeit erfordern, während für andere Anwendungen die Verwendung von Gleitkommaarithmetikoperatoren mit halber Genauigkeit ausreichend ist. Folglich ist es wünschenswert, einen spezialisierten Verarbeitungsblock bereitzustellen, der dazu anpassbar ist, Gleitkommaoperationen mit unterschiedlichen Genauigkeiten (z. B. nach der Norm IEEE 754 Gleitkommaoperationen mit halber Genauigkeit und/oder Gleitkommaoperationen mit einfacher Genauigkeit und/oder Gleitkommaoperationen mit doppelter Genauigkeit und/oder Gleitkommaoperationen mit vierfacher Genauigkeit und/oder Gleitkommaoperationen mit achtfacher Genauigkeit) effizient zu implementieren.However, as applications become more complex, floating-point operators are increasingly used. In addition, different applications may have different accuracy requirements. For example, some applications may require the use of double precision floating point arithmetic operators, while for other applications the use of half precision floating point arithmetic operators is sufficient. Consequently, it is desirable to provide a specialized processing block that is adaptable to floating point operations with different accuracies (eg, according to the IEEE standard 754 To efficiently implement half-precision and / or single-precision floating-point operations and / or double-precision floating-point operations and / or quad-precision floating-point operations and / or eight-precision floating-point operations).

Der Fachmann wird erkennen, dass die vorliegenden beispielhaften Ausführungsformen ohne einige oder alle dieser spezifischen Details praktizierbar sind. In anderen Fällen wurde auf eine ausführliche Beschreibung bekannter Operationen verzichtet, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.Those skilled in the art will recognize that the present exemplary embodiments may be practiced without some or all of these specific details. In other instances, a detailed description of known operations has been omitted so as not to unnecessarily obscure the present embodiments.

1 zeigt ein Diagramm einer exemplarischen integrierten Schaltung, beispielsweise einer programmierbaren integrierten Schaltung 100, nach einigen Ausführungsformen. 1 shows a diagram of an exemplary integrated circuit, such as a programmable integrated circuit 100 , according to some embodiments.

Die programmierbare integrierte Schaltung 100 kann eine Ein-/Ausgangsschaltungsanordnung 102 zum Treiben von Signalen aus der programmierbaren integrierten Schaltung 100 heraus und zum Empfangen von Signalen von anderen Vorrichtungen aufweisen. Die Ein-/Ausgangsschaltungsanordnung 102 kann eine herkömmliche Ein-/Ausgangsschaltungsanordnung, eine serielle Datentransceiver-Schaltungsanordnung, eine differenzielle Empfänger-/Sender-Schaltungsanordnung oder eine andere, zum Verbinden einer integrierten Schaltung mit einer anderen integrierten Schaltung genutzte Schaltungsanordnung beinhalten.The programmable integrated circuit 100 may be an input / output circuitry 102 for driving signals from the programmable integrated circuit 100 out and receive signals from other devices. The input / output circuitry 102 may include conventional input / output circuitry, serial data transceiver circuitry, differential receiver / transmitter circuitry, or other circuitry used to connect one integrated circuit to another integrated circuit.

Wie gezeigt, kann die Ein-/Ausgangsschaltungsanordnung 102 um die Peripherie der programmierbaren integrierten Schaltung 100 herum angeordnet sein. Auf Wunsch kann die programmierbare integrierte Schaltung 100 eine anderweitig angeordnete Ein-/Ausgangsschaltungsanordnung 102 aufweisen. Beispielsweise kann die Ein-/Ausgangsschaltungsanordnung 102 eine oder mehrere Ein-/Ausgangsschaltungsanordnungsspalten ausbilden, die sich irgendwo auf der programmierbaren integrierten Schaltung (z. B. gleichmäßig über die Breite der programmierbaren integrierten Schaltung verteilt) befinden können. Auf Wunsch kann die Ein-/Ausgangsschaltungsanordnung 102 eine oder mehrere Reihen von Ein-/Ausgangselementen ausbilden (z. B. über die Höhe der programmierbaren integrierten Schaltung verteilt). Alternativ kann die Ein-/Ausgangsschaltungsanordnung 102 Inseln von Ein-/Ausgangselementen ausbilden, die über die Fläche der programmierbaren integrierten Schaltung verteilt oder in ausgewählten Bereichen gebündelt sein können.As shown, the input / output circuitry 102 may be around the periphery of the programmable integrated circuit 100 be arranged around. On request, the programmable integrated circuit 100 have an otherwise arranged input / output circuitry 102. For example, the input / output circuitry 102 form one or more input / output circuit arrays that may be located anywhere on the programmable integrated circuit (eg, evenly distributed across the width of the programmable integrated circuit). If desired, the input / output circuitry 102 may form one or more rows of input / output elements (eg, distributed over the height of the programmable integrated circuit). Alternatively, the input / output circuitry 102 Form islands of input / output elements that may be distributed over the area of the programmable integrated circuit or bundled in selected areas.

Vertikale Verbindungsressourcen 140 und horizontale Verbindungsressourcen 150, wie beispielsweise globale und lokale vertikale und horizontale leitfähige Leitungen und Busse, können genutzt werden, um Signale auf der programmierbaren integrierten Schaltung 100 weiterzuleiten. Die vertikalen und horizontalen Verbindungsressourcen 140 und 150 beinhalten leitfähige Leitungen und programmierbare Verbindungen zwischen jeweiligen leitfähigen Leitungen und werden daher bisweilen als programmierbare Interkonnektoren, konfigurierbare Verbindungen oder konfigurierbare Verbindungsschaltungsanordnung bezeichnet.Vertical connection resources 140 and horizontal connection resources 150 , such as global and local vertical and horizontal conductive lines and buses, can be used to send signals to the programmable integrated circuit 100 forward. The vertical and horizontal connection resources 140 and 150 include conductive lines and programmable connections between respective conductive lines and are therefore sometimes referred to as programmable interconnects, configurable connections or configurable interconnect circuitry.

Programmierbare Logikbereiche können programmierbare Komponenten, wie beispielsweise eine digitale Signalverarbeitungsschaltungsanordnung 120 und eine Speicherschaltungsanordnung 130, die beide in spezialisierten Blöcken organisiert sein können, oder eine andere kombinatorische und sequenzielle Logikschaltungsanordnung, die in Logik-Array-Blöcken 110 organisiert ist, beinhalten. Die programmierbaren Logikbereiche können dazu gestaltet sein, eine kundenspezifische Logikfunktion auszuführen. Auf Wunsch können die digitale Signalverarbeitungsschaltungsanordnung 120 und die Speicherschaltungsanordnung 130 eine begrenzte Konfigurierbarkeit aufweisen. Bei einigen Ausführungsformen kann der programmierbare Logikbereich zusätzliche spezialisierte Blöcke, wie beispielsweise eine programmierbare Phasenregelschleifenschaltungsanordnung, eine programmierbare Verzögerungsregelschleifenschaltungsanordnung, oder andere spezialisierte Blöcke mit begrenzter Konfigurierbarkeit beinhalten.Programmable logic areas may include programmable components, such as digital signal processing circuitry 120 and a memory circuitry 130 , which may both be organized in specialized blocks, or other combinatorial and sequential logic circuitry used in logic array blocks 110 is organized. The programmable logic areas may be configured to perform a custom logic function. If desired, the digital signal processing circuitry 120 and the memory circuitry 130 have limited configurability. In some embodiments, the programmable logic area may include additional specialized blocks, such as a programmable logic array Phase locked loop circuitry, programmable delay locked loop circuitry, or other specialized blocks with limited configurability.

Bei einigen Ausführungsformen kann die digitale Signalverarbeitungsschaltungsanordnung 120 anpassbar sein, um Gleitkommaoperationen mit unterschiedlichen Genauigkeiten effizient zu implementieren. Beispielsweise kann die digitale Signalverarbeitungsschaltungsanordnung 120 Gleitkommaoperationen mit halber Genauigkeit und/oder Gleitkommaoperationen mit einfacher Genauigkeit und/oder Gleitkommaoperationen mit doppelter Genauigkeit und/oder Gleitkommaoperationen mit vierfacher Genauigkeit usw. implementieren.In some embodiments, the digital signal processing circuitry 120 be adaptable to efficiently implement floating point operations with different accuracies. For example, the digital signal processing circuitry 120 Implement half-precision floating-point operations and / or single-precision floating-point operations and / or double-precision floating-point operations and / or quad-precision floating-point operations.

Bei einigen Ausführungsformen können mehrere Blöcke der digitalen Signalverarbeitungsschaltungsanordnung 120 in einer Kaskadenkette angeordnet sein, und zwei oder mehr Blöcke in der Kaskadenkette der digitalen Signalverarbeitungsschaltungsanordnung 120 können zusammen ein Skalarprodukt zweier Vektoren implementieren.In some embodiments, multiple blocks of the digital signal processing circuitry 120 in a cascade chain, and two or more blocks in the cascade chain of the digital signal processing circuitry 120 Together they can implement a scalar product of two vectors.

Beispielsweise kann jeder Block der digitalen Signalverarbeitungsschaltungsanordnung 120 eine oder mehrere Multiplikationsoperationen, die jede ein jeweiliges Produkt durch Multiplizieren eines Tupels eines der beiden Vektoren mit einem Tupel des anderen der beiden Vektoren erzeugen, implementieren. Auf Wunsch kann ein erster Block der digitalen Signalverarbeitungsschaltungsanordnung 120 eine Summe der jeweiligen, durch den ersten Block erzeugten Produkte erzeugen und die Summe an einem Kaskadenausgang, der bisweilen auch als ein Ketten-OUT, Kaskadenausgangsanschluss, Kettenausgangsanschluss oder Kaskadenkettenausgang bezeichnet wird, bereitstellen.For example, each block of the digital signal processing circuitry 120 implementing one or more multiplication operations each producing a respective product by multiplying a tuple of one of the two vectors by a tuple of the other of the two vectors. If desired, a first block of the digital signal processing circuitry 120 provide a sum of the respective products generated by the first block and provide the sum at a cascade output, which is sometimes referred to as a chain OUT, cascade output port, chain output port or cascade chain output.

Ein zweiter Block der digitalen Signalverarbeitungsschaltungsanordnung 120 kann die Summe vom ersten Block über eine Kaskaden- oder Kettenverbindung an einem Kaskadeneingang, der bisweilen auch als ein Kaskaden-IN, Kaskadeneingangsanschluss, Ketteneingangsanschluss oder Kaskadenketteneingang bezeichnet wird, empfangen.A second block of digital signal processing circuitry 120 For example, the sum of the first block may be received via a cascade or chain connection at a cascade input, sometimes referred to as a cascade IN, cascade input port, chain input port, or cascade input.

Der zweite Block kann eine Summe der jeweiligen, durch den zweiten Block erzeugten Produkte und der am Kaskadeneingang empfangenen Summe erzeugen und die erzeugte Summe an einem Kaskadenausgang zum weiteren Verarbeiten in einem zusätzlichen Block der digitalen Signalverarbeitungsschaltungsanordnung 120 bereitstellen, sofern dies gewünscht ist.The second block may generate a sum of the respective products generated by the second block and the sum received at the cascade input and the generated sum at a cascade output for further processing in an additional block of the digital signal processing circuitry 120 provide, if desired.

Die programmierbare integrierte Schaltung 100 kann programmierbare Speicherelemente beinhalten. Diese Speicherelemente können anhand der Ein-/Ausgangsschaltungsanordnung 102 mit Konfigurationsdaten (bisweilen auch als Programmierungsdaten bezeichnet) geladen werden. Nach dem Laden stellen die Speicherelemente jedes ein entsprechendes statisches Steuersignal bereit, das die Operation einer zugeordneten Logikkomponente in einem programmierbaren Logikbereich steuert. Bei einem typischen Szenario sind die Ausgänge der geladenen Speicherelemente an die Gatter von Transistoren im programmierbaren Logikbereich gelegt, um bestimmte Transistoren ein- oder auszuschalten und dadurch die Logik und die Routingpfade im programmierbaren Logikbereich zu konfigurieren. Die auf diese Weise steuerbaren programmierbaren Logikschaltungselemente beinhalten Teile von Multiplexern (z. B. Multiplexer, die zum Ausbilden von Routingpfaden in programmierbaren Interkonnektoren genutzt werden), Lookup-Tabellen, Logik-Arrays, XOR-, AND-, OR-, NAND- und NOR-Logikgatter, Pass-Gatter, Inverter usw.The programmable integrated circuit 100 may include programmable memory elements. These memory elements may be loaded with configuration data (sometimes also referred to as programming data) from the input / output circuitry 102. After loading, the memory elements each provide a corresponding static control signal that controls the operation of an associated logic component in a programmable logic area. In a typical scenario, the outputs of the charged memory elements are applied to the gates of transistors in the programmable logic area to turn certain transistors on or off, thereby configuring the logic and routing paths in the programmable logic area. The programmable logic circuit elements controllable in this manner include portions of multiplexers (eg, multiplexers used to form routing paths in programmable interconnects), lookup tables, logic arrays, XOR, AND, OR, NAND, and NOR logic gate, pass gate, inverter etc.

Speicherelemente können jegliche geeignete flüchtige und/oder nichtflüchtige Speicherstrukturen, wie beispielsweise Random-Access-Memory- (RAM-) Zellen, Sicherungen, Anti-Sicherungen, programmierbare Read-Only-Memory-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, Kombinationen dieser Strukturen usw., nutzen. Da die Speicherelemente während des Programmierens mit Konfigurationsdaten geladen werden, werden die Speicherelemente bisweilen bezeichnet als Konfigurationsspeicher, Konfigurations-RAM oder programmierbare Speicherelemente bezeichnet.Memory elements may be any suitable volatile and / or non-volatile memory structures, such as random access memory (RAM) cells, fuses, anti-fuses, programmable read only memory cells, mask programmed and laser programmed structures, combinations of these structures, etc. , use. Since the memory elements are loaded with configuration data during programming, the memory elements are sometimes referred to as configuration memory, configuration RAM or programmable memory elements.

Die Schaltungsanordnung der programmierbaren integrierten Schaltung 100 kann anhand einer jeglichen geeigneten Architektur organisiert sein. Als ein Beispiel kann die Logik der programmierbaren integrierten Schaltung 100 in einer Reihe von Zeilen und Spalten größerer programmierbarer Logikbereiche, von denen jeder mehrere kleinere Logikbereiche enthält, organisiert sein.The circuit arrangement of the programmable integrated circuit 100 can be organized by any suitable architecture. As an example, the logic of the programmable integrated circuit 100 be organized in a series of rows and columns of larger programmable logic areas, each containing several smaller logic areas.

Die kleineren Bereiche können beispielsweise Logikbereiche sein, die bisweilen als Logikelemente (LEs) bezeichnet werden, und jeder eine Lookup-Tabelle, ein oder mehrere Register und eine programmierbare Multiplexerschaltungsanordnung enthalten. Die kleineren Bereiche können beispielsweise auch Logikbereiche sein, die bisweilen als adaptive Logikmodule (ALMs) oder Slices bezeichnet werden. Jeder Logikbereich kann ein Paar Addierer, ein Paar zugeordneter Register, Schieberegister und eine oder mehr Lookup-Tabellen oder einen anderen Block geteilter kombinatorischer Logik (d. h. Ressourcen von einem Paar LEs, die in diesem Kontext bisweilen als adaptive Logikelemente (ALEs) bezeichnet werden), beinhalten. Die größeren Bereiche können beispielsweise Logik-Array-Blöcke (LABs) oder konfigurierbare Logikblöcke (CLBs), die mehrere Logikelemente oder mehrere ALMs oder mehrere Slices enthalten, sein.The smaller areas may be, for example, logic areas, sometimes referred to as logic elements (LEs), each containing a lookup table, one or more registers, and programmable multiplexer circuitry. For example, the smaller areas may also be logic areas, sometimes referred to as adaptive logic modules (ALMs) or slices. Each logical region may include a pair of adders, a pair of associated registers, shift registers, and one or more look-up tables or another block of shared combinatorial logic (ie, resources of a pair LEs, sometimes referred to herein as adaptive logic elements (ALEs)); include. The larger areas can be, for example, logic array blocks (LABs) or configurable logic blocks (CLBs) containing multiple logic elements or multiple ALMs or multiple slices.

Während des Programmierens der Vorrichtung werden in die programmierbare integrierte Schaltung 100 Konfigurationsdaten geladen, welche die programmierbaren Logikbereiche so konfigurieren, dass ihre Logikressourcen gewünschte Logikfunktionen ausführen.While programming the device into the programmable integrated circuit 100 Loading configuration data that configures the programmable logic areas so that their logic resources perform desired logic functions.

Eine exemplarische Ausführungsform eines spezialisierten Verarbeitungsblocks 200, die anpassbar ist, um Mischgenauigkeitsgleitkommaarithmetikoperationen effizient zu implementieren, ist in 2 gezeigt. Um die Diskussion zu vereinfachen, wird bei dieser logischen Darstellung auf Implementierungsdetails, wie beispielsweise Register, und einige programmierbare Routing-Funktionen, wie beispielsweise Multiplexer und Routen, die es ermöglichen können, dass der Ausgang einer bestimmten Struktur um verschiedene Komponenten herum oder direkt aus dem spezialisierten Verarbeitungsblock heraus weitergeleitet wird, verzichtet. Außerdem können einige der gezeigten Elemente in einer tatsächlichen Ausführungsform mehr als einmal implementiert sein. So kann beispielsweise der Multiplizierer 202 tatsächlich zwei oder mehr Multiplizierer darstellen.An exemplary embodiment of a specialized processing block 200 , which is adaptable to efficiently implement mixed-precision floating-point arithmetic operations, is disclosed in U.S.P. 2 shown. To simplify the discussion, this logical presentation will refer to implementation details, such as registers, and some programmable routing functions, such as multiplexers and routes, that may allow the output of a particular structure to or around different components specialized processing block is passed out, omitted. In addition, some of the elements shown may be implemented more than once in an actual embodiment. For example, the multiplier 202 actually represent two or more multipliers.

Wie gezeigt, kann der spezialisierte Verarbeitungsblock 200 die Eingangsanschlüsse 271, 273, 275, 277 und 279, den Ausgangsanschluss 280, den Ketten-IN-Anschluss 262, der bisweilen auch als Kaskaden-IN-Anschluss oder Kaskadeneingang bezeichnet wird, den Ketten-OUT-Anschluss 263, der bisweilen auch als Kaskaden-OUT-Anschluss oder Kaskadenausgang bezeichnet wird, die Multiplexer 230, 231, 232 und 235, die Multipliziererstufe 205, die Addiererschaltungen 203 und 204, die Register 213, 214, 215, 216, 217, 218, 219, 220, 221, 222 und 223 sowie die Umwandlungsfunktionsschaltung 250 beinhalten. Die Multipliziererstufe 205 kann die Multipliziererschaltungen 201 und 202 beinhalten.As shown, the specialized processing block 200 the input terminals 271 . 273 . 275 . 277 and 279 , the output terminal 280 , the chain IN connector 262 sometimes referred to as a cascade IN or cascade input, the chain OUT connector 263 sometimes also referred to as cascade OUT or cascade output, the multiplexers 230 . 231 . 232 and 235 , the multiplier stage 205 , the adder circuits 203 and 204 , the registers 213 . 214 . 215 . 216 . 217 . 218 . 219 . 220 . 221 . 222 and 223 and the conversion function circuit 250 include. The multiplier stage 205 can the multiplier circuits 201 and 202 include.

Der spezialisierte Verarbeitungsblock 200 kann Ausgangssignale am Ausgangsanschluss 280 erzeugen und Eingangssignale an den Eingangsanschlüssen 271, 273, 275, 277 und 279 empfangen. Auf Wunsch kann der spezialisierte Verarbeitungsblock 200 in einer Kaskadenkette mit anderen spezialisierten Verarbeitungsblöcken (z. B. in einer Zeile oder einer Spalte) angeordnet sein und am Ketten-IN-Anschluss 262 über eine direkte Kaskadenschaltung zusätzliche Eingangssignale von einem benachbarten spezialisierten Verarbeitungsblock empfangen und am Ketten-OUT-Anschluss 263 über eine andere direkte Kaskadenschaltung zusätzliche Ausgangssignale einem anderen benachbarten spezialisierten Verarbeitungsblock bereitstellen.The specialized processing block 200 can output signals at the output terminal 280 generate and input signals to the input terminals 271 . 273 . 275 . 277 and 279 receive. On request, the specialized processing block 200 in a cascade chain with other specialized processing blocks (e.g., in a row or column) and at the chain IN port 262 receive, via a direct cascade connection, additional input signals from a neighboring specialized processing block and at the chain OUT port 263 provide additional output signals to another adjacent specialized processing block via another direct cascade connection.

Bei einigen Ausführungsformen können die Addiererschaltung 203 und die Multipliziererstufe 205 mit den Multipliziererschaltungen 201 und 202 auf Gleitkommazahlen einer ersten Gleitkommagenauigkeit (z. B. nach der Norm IEEE 754 halber Genauigkeit, einfacher Genauigkeit, doppelter Genauigkeit, vierfacher Genauigkeit oder achtfacher Genauigkeit) operieren, und die Addiererschaltung 204 kann auf Gleitkommazahlen einer zweiten Gleitkommagenauigkeit (z. B. nach der Norm IEEE 754 halber Genauigkeit, einfacher Genauigkeit, doppelter Genauigkeit, vierfacher Genauigkeit oder achtfacher Genauigkeit) operieren. Auf Wunsch kann sich die zweite Gleitkommagenauigkeit von der ersten Gleitkommagenauigkeit unterscheiden.In some embodiments, the adder circuit 203 and the multiplier stage 205 with the multiplier circuits 201 and 202 on floating-point numbers of a first floating-point precision (eg according to the standard IEEE 754 half accuracy, single precision, double precision, fourfold accuracy or eightfold accuracy), and the adder circuit 204 may refer to floating-point numbers of a second floating-point precision (eg, according to the IEEE standard 754 half accuracy, single precision, double precision, fourfold accuracy or eightfold accuracy). If desired, the second floating point precision may differ from the first floating point precision.

Beispielsweise kann die zweite Gleitkommagenauigkeit eine höhere Genauigkeit als die erste Gleitkommagenauigkeit sein. Beispielsweise kann nach der Norm IEEE 754 die zweite Gleitkommagenauigkeit einfacher Genauigkeit, doppelter Genauigkeit, vierfacher Genauigkeit oder achtfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit halber Genauigkeit ist; kann die zweite Gleitkommagenauigkeit doppelter Genauigkeit, vierfacher Genauigkeit oder achtfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit einfacher Genauigkeit ist; kann die zweite Gleitkommagenauigkeit vierfacher Genauigkeit oder achtfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit doppelter Genauigkeit ist; oder kann die zweite Gleitkommagenauigkeit achtfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit vierfacher Genauigkeit ist.For example, the second floating point precision may be more accurate than the first floating point precision. For example, according to the IEEE standard 754 the second floating-point precision of single precision, double precision, quadruple accuracy or eightfold accuracy, if the first floating-point precision is half accuracy; may be the second floating point precision of double precision, fourfold accuracy or eightfold accuracy if the first floating point precision is single precision; For example, the second floating point precision may be quadruple precision or eightfold accuracy if the first floating point precision is double precision; or the second floating point precision may be eightfold accuracy if the first floating point precision is quadruple accuracy.

Als ein weiteres Beispiel kann die zweite Gleitkommagenauigkeit eine niedrigere Genauigkeit als die erste Gleitkommagenauigkeit sein. Beispielsweise kann nach der Norm IEEE 754 die zweite Gleitkommagenauigkeit halber Genauigkeit, einfacher Genauigkeit, doppelter Genauigkeit oder vierfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit achtfacher Genauigkeit ist; kann die zweite Gleitkommagenauigkeit halber Genauigkeit, einfacher Genauigkeit oder doppelter Genauigkeit sein, wenn die erste Gleitkommagenauigkeit vierfacher Genauigkeit ist; kann die zweite Gleitkommagenauigkeit halber Genauigkeit oder einfacher Genauigkeit sein, wenn die erste Gleitkommagenauigkeit doppelter Genauigkeit ist; oder kann die zweite Gleitkommagenauigkeit halber Genauigkeit sein, wenn die erste Gleitkommagenauigkeit einfacher Genauigkeit ist.As another example, the second floating point precision may be a lower accuracy than the first floating point accuracy. For example, according to the IEEE standard 754 the second floating point precision is half accuracy, single precision, double precision, or quadruple accuracy if the first floating point precision is eightfold accuracy; For example, if the first floating point precision is quadruple precision, the second floating point precision may be half accuracy, single precision, or double precision; the second floating point precision may be half accuracy or single precision if the first floating point precision is double precision; or may be the second floating point precision of half accuracy if the first floating point precision is single precision.

Bei einigen Ausführungsformen, kann die Umwandlungsfunktionsschaltung 250 den Ausgang der Addiererschaltung 203 von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit konvertieren. Beispielsweise kann der Ausgang der Addiererschaltung 203 eine Gleitkommazahl mit halber Genauigkeit sein, und die Umwandlungsfunktionsschaltung kann die Produktsumme in eine Gleitkommazahl mit einfacher Genauigkeit konvertieren. Als ein weiteres Beispiel kann der Ausgang der Addiererschaltung 203 eine Gleitkommazahl mit doppelter Genauigkeit sein, und die Umwandlungsfunktionsschaltung 250 kann die Produktsumme in eine Gleitkommazahl mit einfacher Genauigkeit konvertieren.In some embodiments, the conversion function circuit may 250 the output of the adder circuit 203 from the first floating point inaccuracy to the second floating point inaccuracy. For example, the output of the adder circuit 203 be a half-precision floating-point number, and the Conversion function circuitry can convert the product sum into a single precision floating point number. As another example, the output of the adder circuit 203 be a double precision floating point number, and the conversion function circuit 250 can convert the product total to a single-precision floating-point number.

Um eine Gleitzahl von einer ersten Gleitkommagenauigkeit in eine zweite Gleitkommagenauigkeit, die höher als die erste Gleitkommagenauigkeit ist, zu konvertieren, was bisweilen auch als Aufwärtskonvertierung bezeichnet wird, kann die Umwandlungsfunktionsschaltung 250 die Bitanzahl der Mantisse und die Bitanzahl des Exponenten erhöhen und den Bias des Exponenten entsprechend anpassen. Um beispielsweise eine Gleitkommazahl mit halber Genauigkeit in eine Gleitkommazahl mit einfacher Genauigkeit zu konvertieren, kann die Umwandlungsfunktionsschaltung 250 die Größe der Mantisse von 10 Bits auf 23 Bits erhöhen (z. B. durch Hinzufügen von 13 Nullen rechts von der Position des niedrigstwertigen Bits (Least Significant Bit, LSB)) und die Größe des Exponenten von 5 Bits auf 8 Bits erhöhen (z. B. durch Hinzufügen von 3 Nullen links von der Position des höchstwertigen Bits (Most Significant Bit, MSB)). Die Umwandlungsfunktionsschaltung 250 kann den Bias des Exponenten durch Addieren von 112 zum Gleitkommaexponenten mit halber Genauigkeit anpassen.To convert a glide ratio from a first floating-point inaccuracy to a second floating-point inaccuracy that is higher than the first floating-point inaccuracy, which is sometimes referred to as upconversion, the transform function circuit may 250 increase the number of bits of the mantissa and the number of bits of the exponent and adjust the bias of the exponent accordingly. For example, to convert a half-precision floating-point number to a single-precision floating-point number, the conversion function circuit may 250 increase the size of the mantissa from 10 bits to 23 bits (eg by adding 13 zeros to the right of the least significant bit (LSB) position) and increase the exponent size from 5 bits to 8 bits (e.g. B. by adding 3 zeros to the left of the Most Significant Bit (MSB) position). The conversion function circuit 250 can adjust the bias of the exponent by adding 112 to the floating point exponent with half accuracy.

Um eine Gleitkommazahl von einer ersten Gleitkommagenauigkeit in eine zweite Gleitkommagenauigkeit, die niedriger als die erste Gleitkommagenauigkeit ist, zu konvertieren, was bisweilen auch als eine Abwärtskonvertierung bezeichnet wird, kann die Umwandlungsfunktionsschaltung 250 die Bitanzahl der Mantisse senken (z. B. durch Runden), den Bias des Exponenten entsprechend anpassen und die Bitanzahl des Exponenten senken.To convert a floating-point number from a first floating-point inaccuracy to a second floating-point inaccuracy that is lower than the first floating-point inaccuracy, which is sometimes referred to as a down-conversion, the conversion function circuit may 250 lower the number of bits of the mantissa (eg by rounding), adjust the exponent's bias accordingly, and decrease the exponent's bit count.

Auf Wunsch kann die Umwandlungsfunktionsschaltung 250 die Konvertierung von Sonderfällen beinhalten (z. B. kann die erste Gleitkommagenauigkeitszahl denormalisiert, null, unendlich oder keine Zahl (Not a Number bzw. NaN) sein). Als ein Beispiel kann eine denormalisierte erste Gleitkommagenauigkeitszahl in eine Null konvertiert werden, was bisweilen auch als Denormals-Are-Zero (DAZ) bezeichnet wird. Als ein weiteres Beispiel können bei der Abwärtskonvertierung Null, eine denormale Zahl oder zu große Zahl eines Exponentenunterlaufs zu Null konvertiert werden, und Unendlich oder ein Exponentenüberlauf können zu Unendlich konvertiert werden.On request, the conversion function circuit 250 include the conversion of special cases (eg, the first floating-point inaccuracy number may be denormalized, zero, infinite or no number (Not a Number or NaN)). As an example, a denormalized first floating-point inaccuracy number may be converted to zero, sometimes referred to as Denormal Are-Zero (DAZ). As another example, in downconversion, zero, a denormal number, or too large an exponent underflow number may be converted to zero, and infinity or exponent overflow may be converted to infinity.

Die konfigurierbare Verbindungsschaltungsanordnung im spezialisierten Verarbeitungsblock 200 kann Signale zwischen den Eingangsanschlüssen 271, 273, 275, 277 und 279, dem Ausgangsanschluss 280, dem Ketten-IN-Anschluss 262, dem Ketten-OUT-Anschluss 263, den Multipliziererschaltungen 201 und 202, den Addiererschaltungen 203 und 204, den Registern 213, 214, 215, 216, 217, 218, 219, 220, 221, 222 und 223 sowie der Umwandlungsfunktionsschaltung 250 weiterleiten.The configurable interconnect circuitry in the specialized processing block 200 can signals between the input terminals 271 . 273 . 275 . 277 and 279 , the output terminal 280 , the chain IN connector 262 , the chain OUT connector 263 , the multiplier circuits 201 and 202 , the adder circuits 203 and 204 , the registers 213 . 214 . 215 . 216 . 217 . 218 . 219 . 220 . 221 . 222 and 223 and the conversion function circuit 250 hand off.

Wie gezeigt, kann die konfigurierbare Verbindungsschaltungsanordnung die Multiplexer 230, 231, 232 und 235 sowie Verbindungen, die bisweilen als Routing-Spuren bezeichnet werden, beinhalten. Die konfigurierbare Verbindungsschaltungsanordnung kann genutzt werden, um einige der Komponenten des spezialisierten Verarbeitungsblocks 200 zu überbrücken. Beispielsweise kann der Multiplexer 231 zwischen dem Ausgang der Umwandlungsfunktionsschaltung 250 und dem Ausgang der Multipliziererstufe 205 wählen und dabei die Register 218 und 219 sowie die Addiererschaltung 203 überbrücken. Ebenso kann der Multiplexer 235 zwischen dem Ausgang des Registers 223 und dem Ausgang der Addiererschaltung 203 wählen und dabei einen Überbrückungspfad ermöglichen, der die Umwandlungsfunktionsschaltung 250, den Multiplexer 231, das Register 221, die Addiererschaltung 204 und das Register 223 überbrückt.As shown, the configurable interconnect circuitry may be the multiplexers 230 . 231 . 232 and 235 and links, sometimes referred to as routing lanes. The configurable interconnect circuitry may be used to configure some of the components of the specialized processing block 200 to bridge. For example, the multiplexer 231 between the output of the conversion function circuit 250 and the output of the multiplier stage 205 choose the registers 218 and 219 and the adder circuit 203 bridged. Likewise, the multiplexer 235 between the output of the register 223 and the output of the adder circuit 203 while allowing a bypass path containing the conversion function circuit 250 , the multiplexer 231 , the registry 221 , the adder circuit 204 and the register 223 bridged.

Auf Wunsch kann die konfigurierbare Verbindungsschaltungsanordnung zusätzliche Multiplexer beinhalten, um die Flexibilität des Verbindens der verschiedenen Komponenten des spezialisierten Verarbeitungsblocks 200 zu erhöhen und zusätzliche Überbrückungspfade zuzulassen. Beispielsweise können zusätzliche Multiplexer vor den Registern 218 und 219 einen Überbrückungspfad um die Multipliziererstufe 205 herum ermöglichen, zusätzliche Multiplexer hinter einem Register (z. B. Register 218, 219, 220, usw.) können einen Überbrückungspfad um das jeweilige Register herum ermöglichen usw.If desired, the configurable interconnect circuitry may include additional multiplexers to provide the flexibility of interconnecting the various components of the specialized processing block 200 increase and allow for additional bridging paths. For example, additional multiplexers may be in front of the registers 218 and 219 a bridging path around the multiplier stage 205 allow additional multiplexers behind a register (e.g., registers 218 . 219 . 220 , etc.) can provide a bridging path around the respective register, etc.

Steuersignale können die durch die Multiplexer 230, 231, 232 und 235 ausgeführte Auswahl steuern. Die Steuersignale können durch logische Schaltungen, welche die Auswahl der jeweiligen Multiplexer dynamisch steuern, erzeugt werden und/oder in Speicherschaltungen gespeichert sein. Die logischen Schaltungen und/oder Speicherschaltungen können sich innerhalb des spezialisierten Verarbeitungsblocks 200 befinden. Auf Wunsch können sich einige oder alle der logischen Schaltungen und/oder Speicherschaltungen außerhalb des spezialisierten Verarbeitungsblocks 200 befinden, und die Steuersignale können den jeweiligen Multiplexern durch zusätzliche Eingangsanschlüsse bereitgestellt werden.Control signals can be through the multiplexers 230 . 231 . 232 and 235 control selected selection. The control signals may be generated by logic circuits which dynamically control the selection of the respective multiplexers and / or stored in memory circuits. The logic circuits and / or memory circuits may be within the specialized processing block 200 are located. If desired, some or all of the logic circuits and / or memory circuits may be external to the specialized processing block 200 and the control signals may be provided to the respective multiplexers through additional input terminals.

Die Steuersignale können einzeln für jeden Multiplexer oder in Gruppen für mehrere Multiplexer gespeichert werden. Die Speicherschaltungen können die Steuersignale während der Konfiguration oder Rekonfiguration des spezialisierten Verarbeitungsblocks 200 laden. Bei einigen Ausführungsformen können die Speicherschaltungen programmierbare Speicherelemente einer integrierten Schaltung (z. B. der programmierbaren integrierten Schaltung 100 aus 1) sein.The control signals may be stored individually for each multiplexer or in groups for multiple multiplexers. The memory circuits may receive the control signals during the Configuration or reconfiguration of the specialized processing block 200 load. In some embodiments, the memory circuits may include programmable memory elements of an integrated circuit (eg, the programmable integrated circuit 100 out 1 ) be.

Der Multiplexer 230 kann zwischen dem Weiterleiten von Ausgängen der Umwandlungsfunktionsschaltung 250 und der Register 220 und 223 zum Kaskadenausgang 263 wählen. Der Multiplexer 231 kann zwischen dem Weiterleiten von Ausgängen der Multipliziererstufe 205, der Umwandlungsfunktionsschaltung 250 und des Registers 220 zum Register 221 wählen. Der Multiplexer 232 kann zwischen dem Weiterleiten des Ausgangs des Registers 220 und eines Signals vom Kaskadeneingang 262 zum Register 222 wählen. Der Multiplexer 235 kann zwischen dem Weiterleiten der Ausgänge der Umwandlungsfunktionsschaltung 250 und des Registers 223 zum Ausgangsanschluss 280 wählen.The multiplexer 230 may be between the forwarding of outputs of the conversion function circuit 250 and the register 220 and 223 to the cascade exit 263 choose. The multiplexer 231 may be between forwarding outputs of the multiplier stage 205 , the conversion function circuit 250 and the register 220 to the register 221 choose. The multiplexer 232 may be between forwarding the output of the register 220 and a signal from the cascade input 262 to the register 222 choose. The multiplexer 235 may be between forwarding the outputs of the conversion function circuit 250 and the register 223 to the output terminal 280 choose.

In der logischen Darstellung aus 2 kann der spezialisierte Verarbeitungsblock 200 eine Festkommaaddition, eine Gleitkommaaddition, eine Festkommamultiplikation, eine Gleitkommamultiplikation, eine Summe zweier Multiplikationen in einer ersten Gleitkommagenauigkeit, mit oder ohne Umwandlung in eine zweite Gleitkommagenauigkeit, und Letztere gefolgt von einer anschließenden Addition in der zweiten Gleitkommagenauigkeit, implementieren, wenn dies gewünscht ist, usw.In the logical representation 2 can be the specialized processing block 200 a fixed point addition, a floating point addition, a fixed point multiplication, a floating point multiplication, a sum of two multiplications in a first floating point precision, with or without conversion to a second floating point precision, and the latter followed by a subsequent addition in the second floating point precision implement, if desired, etc ,

Betrachten wir nun das Szenario, bei dem der spezialisierte Verarbeitungsblock 200 die Eingangssignale A, B, C, D und E an den Eingangsanschlüssen 271, 273, 275, 277 bzw. 279 und das Ketten-IN-Signal CHAIN_IN am Kaskadeneingang 262 empfängt. Nehmen wir ferner an, dass die Eingangssignale A, B, C und D Signale sind, die Gleitkommazahlen einer ersten Gleitkommagenauigkeit (z. B. halber Genauigkeit, einfacher Genauigkeit, doppelter Genauigkeit oder vierfacher Genauigkeit nach der Norm IEEE 754) codieren, und dass das Eingangssignal E und das Ketten-IN-Signal CHAIN_IN Signale sind, die Gleitkommazahlen einer zweiten Gleitkommagenauigkeit, die eine höhere Genauigkeit als die erste Gleitkommagenauigkeit ist, (z. B. einfacher Genauigkeit, wenn die erste Gleitkommagenauigkeit halber Genauigkeit ist, doppelter Genauigkeit, wenn die erste Gleitkommagenauigkeit einfacher Genauigkeit ist, vierfacher Genauigkeit, wenn die erste Gleitkommagenauigkeit doppelter Genauigkeit ist, oder achtfacher Genauigkeit, wenn die erste Gleitkommagenauigkeit vierfacher Genauigkeit ist, nach der Norm IEEE 754) codieren.Now consider the scenario where the specialized processing block 200 the input signals A, B, C, D and E at the input terminals 271 . 273 . 275 . 277 respectively. 279 and the chain IN signal CHAIN_IN at the cascade input 262 receives. Further assume that the input signals A, B, C and D are signals that are floating-point numbers of a first floating-point precision (eg, half accuracy, single precision, double precision, or quadruple accuracy according to the IEEE standard 754 ) and that the input signal E and the string IN signal are CHAIN_IN signals that are floating point numbers of a second floating point precision that is more accurate than the first floating point precision (eg, single precision if the first floating point precision is half accuracy) double precision when the first floating point precision is single precision, quadruple accuracy when the first double precision precision floating point precision, or eightfold accuracy when the first floating point precision is quadruple accuracy according to the IEEE standard 754 ) code.

Bei diesem Szenario kann die Multipliziererstufe 205 das Produkt von A und B (d. h. A*B) in der Multipliziererschaltung 201 und das Produkt von C und D (d. h. C*D) in der Multipliziererschaltung 202 berechnen. Die Produkte können in den Registern 218 bzw. 219 gespeichert werden, wenn dies gewünscht ist. Die Addiererschaltung 203 kann die Summe der Produkte erzeugen (d. h. A*B+C*D).In this scenario, the multiplier stage 205 the product of A and B (ie A * B) in the multiplier circuit 201 and the product of C and D (ie, C * D) in the multiplier circuit 202 to calculate. The products can be in the registers 218 respectively. 219 saved, if desired. The adder circuit 203 can produce the sum of the products (ie A * B + C * D).

Bei einigen Ausführungsformen, kann die Umwandlungsfunktionsschaltung 250 die Produktsumme von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit konvertieren. Beispielsweise kann die Produktsumme eine Gleitkommazahl mit halber Genauigkeit sein, und die Umwandlungsfunktionsschaltung kann die Produktsumme in eine Gleitkommazahl mit einfacher Genauigkeit konvertieren. Als ein weiteres Beispiel kann die Produktsumme eine Gleitkommazahl mit doppelter Genauigkeit sein, und Umwandlungsfunktionsschaltung 250 kann die Produktsumme in eine Gleitkommazahl mit einfacher Genauigkeit konvertieren.In some embodiments, the conversion function circuit may 250 Convert the product's total from the first floating-point precision to the second floating-point precision. For example, the product sum may be a half-precision floating point number, and the conversion function circuit may convert the product sum to a single precision floating point number. As another example, the product sum may be a double precision floating point number and conversion function circuitry 250 can convert the product total to a single-precision floating-point number.

Eine konfigurierbare Verbindungsschaltungsanordnung kann den Ausgang der Umwandlungsfunktionsschaltung 250 im Multiplexer 231 und das CHAIN_IN-Signal am Kaskadeneingang 262 im Multiplexer 232 auswählen und damit die konvertierte Produktsumme vom Ausgang der Umwandlungsfunktionsschaltung 250 zur Addiererschaltung 204 leiten und das CHAIN_IN-Signal vom Kaskadeneingang 262 zur Addiererschaltung 204 leiten.Configurable interconnect circuitry may control the output of the transform function circuit 250 in the multiplexer 231 and the CHAIN_IN signal at the cascade input 262 in the multiplexer 232 and thus the converted product sum from the output of the conversion function circuit 250 to the adder circuit 204 and the CHAIN_IN signal from the cascade input 262 to the adder circuit 204 conduct.

Auf Wunsch kann die Addiererschaltung 204 die Produktsumme zum CHAIN_IN-Signal addieren, um ein weiteres Summensignal zu erzeugen. Der Multiplexer 235 der konfigurierbaren Verbindungsschaltungsanordnung kann zwischen der Produktsumme von der Addiererschaltung 203 und dem weiteren Summensignal von der Addiererschaltung 204 auswählen. Die konfigurierbare Verbindungsschaltungsanordnung kann durch Auswählen des Ausgangs der Addiererschaltung 203 im Multiplexer 235 die Produktsumme zum Ausgang 280 leiten. Alternativ kann die konfigurierbare Verbindungsschaltung durch Auswählen des Ausgangs der Addiererschaltung 204 im Multiplexer 235 die weitere Summe zum Ausgang 280 leiten.If desired, the adder circuit 204 add the product sum to the CHAIN_IN signal to generate another sum signal. The multiplexer 235 The configurable interconnect circuitry may be between the sum of products from the adder circuit 203 and the further sum signal from the adder circuit 204 choose. The configurable connection circuitry may be selected by selecting the output of the adder circuit 203 in the multiplexer 235 the product sum to the exit 280 conduct. Alternatively, the configurable connection circuit may be selected by selecting the output of the adder circuit 204 in the multiplexer 235 the further sum to the exit 280 conduct.

Bei einigen Ausführungsformen kann der spezialisierte Verarbeitungsblock 200 zusätzliche Eigenschaften implementieren. Beispielsweise kann der spezialisierte Verarbeitungsblock 200 einen Pfad vom Ausgang des Registers 223 zu einem zusätzlichen Eingang des Multiplexers 231 oder zu einem zusätzlichen Eingang des Multiplexers 232 beinhalten und dadurch die Implementierung einer Akkumulationsoperation ermöglichen, wenn dies gewünscht ist.In some embodiments, the specialized processing block 200 implement additional properties. For example, the specialized processing block 200 a path from the output of the register 223 to an additional input of the multiplexer 231 or to an additional input of the multiplexer 232 and thereby allow the implementation of an accumulation operation, if desired.

Basierend auf der Konfiguration der konfigurierbaren Verbindungsschaltungsanordnung kann der spezialisierte Verarbeitungsblock 200 verschiedene arithmetische Operationen implementieren, wie vorstehend beschrieben wurde. 3 ist ein Diagramm der beiden exemplarischen spezialisierten Verarbeitungsblöcke 300A und 300B, die in einer Kaskadenkette angeordnet sind und zusammen eine erste Stufe einer rekursiven Skalarproduktoperation ausführen, nach einigen Ausführungsformen.Based on the configuration of the configurable interconnect circuitry, the specialized processing block 200 Implement various arithmetic operations, such as has been described above. 3 Figure 12 is a diagram of the two exemplary specialized processing blocks 300A and 300B which are arranged in a cascade chain and together execute a first stage of recursive dot product operation, according to some embodiments.

Auf Wunsch kann der spezialisierte Verarbeitungsblock 200 aus 2 jeden der spezialisierten Verarbeitungsblöcke 300A und 300B implementieren. Um die Diskussion zu vereinfachen, wird bei der logischen Darstellung aus 3 auf Implementierungsdetails der spezialisierten Verarbeitungsblöcke 300A und 300B, wie beispielsweise Register, und einige programmierbare Routing-Funktionen, wie beispielsweise Multiplexer, verzichtet.On request, the specialized processing block 200 out 2 each of the specialized processing blocks 300A and 300B to implement. To simplify the discussion, look at the logical representation 3 on implementation details of the specialized processing blocks 300A and 300B such as registers, and some programmable routing functions, such as multiplexers, omitted.

Wie gezeigt, können die spezialisierten Verarbeitungsblöcke 300A und 300B beide die Eingänge 371, 373, 375 und 377, den Ausgang 380, die Umwandlungsfunktionsschaltung 350, die Multipliziererschaltungen 301 und 302 sowie die Addiererschaltungen 303 und 304 beinhalten. Eine Kaskadenschaltung kann einen Kaskadenausgang des spezialisierten Verarbeitungsblocks 300B mit einem Kaskadeneingang des spezialisierten Verarbeitungsblocks 300A koppeln.As shown, the specialized processing blocks 300A and 300B both the entrances 371 . 373 . 375 and 377 , the exit 380 , the conversion function circuit 350 , the multiplier circuits 301 and 302 and the adder circuits 303 and 304 include. A cascade connection may be a cascade output of the specialized processing block 300B with a cascade input of the specialized processing block 300A couple.

Bei einigen Ausführungsformen können die Multipliziererschaltungen 301 und 302 sowie die Addiererschaltung 303 auf Gleitkommazahlen einer ersten Gleitkommagenauigkeit operieren, kann die Addiererschaltung 304 auf Gleitkommazahlen einer zweiten Gleitkommagenauigkeit operieren und kann die Umwandlungsfunktionsschaltung 350, die in einer gleichen Weise wie die Umwandlungsfunktionsschaltung 250 aus 2 operieren kann, mit dem Ausgang der Addiererschaltung 303 gekoppelt sein, um den Ausgang der Addiererschaltung 303 von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit zu konvertieren.In some embodiments, the multiplier circuits 301 and 302 and the adder circuit 303 operate on floating point numbers of a first floating point inaccuracy, the adder circuit 304 to floating point numbers of a second floating point inaccuracy and can operate the conversion function circuit 350 in a same way as the conversion function circuit 250 out 2 can operate with the output of the adder circuit 303 be coupled to the output of the adder circuit 303 from the first floating point inaccuracy to the second floating point inaccuracy.

Betrachten wir das Szenario, in dem die spezialisierten Verarbeitungsblöcke 300A und 300B zusammen ein Skalarprodukt eines ersten Vektors Y mit den Tupeln A, C, E und G (d. h. Y = (A,C,E,G)T) und eines zweiten Vektors Z mit den Tupeln B, D, F und H (d. h. Z = (B,D,F,H)T) erzeugen. Nehmen wir ferner an, dass die Tupel der Vektoren Y und Z eine erste Gleitkommagenauigkeit aufweisen (z. B. nach der Norm IEEE 754 halbe Genauigkeit, einfache Genauigkeit, doppelte Genauigkeit oder vierfache Genauigkeit).Consider the scenario in which the specialized processing blocks 300A and 300B together a scalar product of a first vector Y with the tuples A, C, E and G (ie Y = (A, C, E, G) T) and a second vector Z with the tuples B, D, F and H (ie Z = (B, D, F, H) T). Assume further that the tuples of the vectors Y and Z have a first floating-point precision (eg according to the IEEE standard 754 half accuracy, single precision, double precision or quadruple accuracy).

Bei diesem Szenario können der spezialisierte Verarbeitungsblock 300A zwei Tupel aus sowohl dem Vektor Y als auch Z (z. B. die Tupel A und C aus dem Vektor Y und die Tupel B und D aus dem Vektor Z) und der spezialisierte Verarbeitungsblock 300B die anderen beiden Tupel aus sowohl dem Vektor Y als auch Z (z. B. die Tupel E und G aus dem Vektor Y und die Tupel F und H aus dem Vektor Z) an den Eingängen 371, 375, 373 bzw. 377 empfangen.In this scenario, the specialized processing block 300A two tuples from both the vector Y and Z (eg, the tuples A and C from the vector Y and the tuples B and D from the vector Z) and the specialized processing block 300B the other two tuples from both the vector Y and Z (eg, the tuples E and G from the vector Y and the tuples F and H from the vector Z) at the inputs 371 . 375 . 373 respectively. 377 receive.

Die Multipliziererschaltungen 301 und 302, die Addiererschaltung 303 und die Umwandlungsfunktionsschaltung 350 des spezialisierten Verarbeitungsblocks 300B können ein erstes Teilergebnis mit einer zweiten Gleitkommagenauigkeit, die eine höhere Genauigkeit als die erste Gleitkommagenauigkeit aufweist (z. B. nach der Norm IEEE 754 einfacher Genauigkeit, doppelter Genauigkeit, vierfacher Genauigkeit, achtfacher Genauigkeit), basierend auf einer ersten quaternären Reduktion der an den Eingängen 371, 373, 375 und 377 empfangenen Tupel der Vektoren Y und Z erzeugen. Beispielsweise können im spezialisierten Verarbeitungsblock 300B die Multipliziererschaltung 301 das Produkt E*F, die Multipliziererschaltung 302 das Produkt G*H und die Addiererschaltung 303 die Produktsumme E*F+G*H erzeugen. Die Umwandlungsfunktionsschaltung 350 im spezialisierten Verarbeitungsblock 300B kann die Produktsumme E*F+G*H von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit konvertieren, wie vorstehend dargelegt, und damit das erste Teilergebnis erzeugen.The multiplier circuits 301 and 302 , the adder circuit 303 and the conversion function circuit 350 the specialized processing block 300B may have a first partial result with a second floating-point precision that has a higher accuracy than the first floating-point accuracy (eg according to the IEEE standard 754 single precision, double precision, fourfold accuracy, eightfold accuracy) based on a first quaternary reduction of the inputs 371 . 373 . 375 and 377 receive received tuples of vectors Y and Z. For example, in the specialized processing block 300B the multiplier circuit 301 the product E * F, the multiplier circuit 302 the product G * H and the adder circuit 303 Generate the product sum E * F + G * H. The conversion function circuit 350 in the specialized processing block 300B For example, the product sum E * F + G * H may be converted from the first floating point inaccuracy into the second floating point inaccuracy, as set forth above, thereby producing the first partial result.

Ebenso können die Multipliziererschaltungen 301 und 302, die Addiererschaltung 303 und die Umwandlungsfunktionsschaltung 350 des spezialisierten Verarbeitungsblocks 300A ein zweites Teilergebnis mit der zweiten Gleitkommagenauigkeit basierend auf einer zweiten quaternären Reduktion der an den Eingängen 371, 373, 375 und 377 empfangenen Tupel der Vektoren Y und Z erzeugen. Beispielsweise können im spezialisierten Verarbeitungsblock 300A die Multipliziererschaltung 301 das Produkt A*B, die Multipliziererschaltung 302 das Produkt C*D und die Addiererschaltung 303 die Produktsumme A*B+C*D erzeugen. Die Umwandlungsfunktionsschaltung 350 im spezialisierten Verarbeitungsblock 300A kann die Produktsumme A*B+C*D von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit konvertieren, wie vorstehend dargelegt, und damit das zweite Teilergebnis erzeugen.Likewise, the multiplier circuits 301 and 302 , the adder circuit 303 and the conversion function circuit 350 the specialized processing block 300A a second partial result with the second floating point precision based on a second quaternary reduction of the inputs 371 . 373 . 375 and 377 receive received tuples of vectors Y and Z. For example, in the specialized processing block 300A the multiplier circuit 301 the product A * B, the multiplier circuit 302 the product C * D and the adder circuit 303 Generate the product sum A * B + C * D. The conversion function circuit 350 in the specialized processing block 300A For example, the product sum A * B + C * D may be converted from the first floating point inaccuracy to the second floating point inaccuracy, as set forth above, thereby producing the second partial result.

Die konfigurierbare Verbindungsschaltungsanordnung in den spezialisierten Verarbeitungsblöcken 300A und 300B kann das erste Teilergebnis von der Umwandlungsfunktionsschaltung 350 im spezialisierten Verarbeitungsblock 300B über die Kaskadenschaltung zur Addiererschaltung 304 im zweiten spezialisierten Verarbeitungsblock 300A und das zweite Teilergebnis von der Umwandlungsfunktionsschaltung 350 zur Addiererschaltung 304 im spezialisierten Verarbeitungsblock 300A weiterleiten.The configurable interconnect circuitry in the specialized processing blocks 300A and 300B may be the first partial result of the conversion function circuit 350 in the specialized processing block 300B via the cascade connection to the adder circuit 304 in the second specialized processing block 300A and the second partial result from the conversion function circuit 350 to the adder circuit 304 in the specialized processing block 300A hand off.

Die Addiererschaltung 304 des spezialisierten Verarbeitungsblocks 300A kann das Skalarprodukt der Vektoren Y und Z (d. h. Y*Z = A*B+C*D+E*F+G*H) durch Ausführen einer binären Reduktion (d. h. einer Addition) des ersten und des zweiten Teilergebnisses erzeugen und das Skalarprodukt als Signal J am Ausgang 380 des spezialisierten Verarbeitungsblocks 300A bereitstellen.The adder circuit 304 the specialized processing block 300A can the scalar product of the vectors Y and Z (ie Y * Z = A * B + C * D + E * F + G * H) by performing a binary reduction (ie, addition) of the first and second part results, and generating the dot product as signal J at the output 380 the specialized processing block 300A provide.

4 ist ein Diagramm zweier exemplarischer spezialisierter Verarbeitungsblöcke, die in einer Kaskadenkette angeordnet sind und zusammen eine erste Stufe einer rekursiven Skalarproduktoperation und einer Akkumulationsoperation ausführen, nach einigen Ausführungsformen. 4 FIG. 12 is a diagram of two exemplary specialized processing blocks arranged in a cascade chain and together performing a first stage of a recursive dot product operation and an accumulation operation, according to some embodiments.

Auf Wunsch kann der spezialisierte Verarbeitungsblock 200 aus 2 jeden der spezialisierten Verarbeitungsblöcke 400A und 400B implementieren. Um die Diskussion zu vereinfachen, wird bei der logischen Darstellung aus 4 auf Implementierungsdetails der spezialisierten Verarbeitungsblöcke 400A und 400B, wie beispielsweise Register, und einige programmierbare Routing-Funktionen, wie beispielsweise Multiplexer, verzichtet.On request, the specialized processing block 200 out 2 each of the specialized processing blocks 400A and 400B to implement. To simplify the discussion, look at the logical representation 4 on implementation details of the specialized processing blocks 400A and 400B such as registers, and some programmable routing functions, such as multiplexers, omitted.

Wie gezeigt, können die spezialisierten Verarbeitungsblöcke 400A und 400B beide die Eingänge 471, 473, 475 und 477, den Ausgang 480, die Umwandlungsfunktionsschaltung 450, die Multipliziererschaltungen 401 und 402 sowie die Addierschaltungen 403 und 404 beinhalten. Der spezialisierte Verarbeitungsblock 400B kann ferner den Eingang 479 und das Register 405, das zwischen den Ausgang der Addiererschaltung 404 und den Ausgang 480 und einen Eingang der Addiererschaltung 404 gekoppelt ist, beinhalten. Eine Kaskadenschaltung kann einen Kaskadenausgang des spezialisierten Verarbeitungsblocks 400B mit einem Kaskadeneingang des spezialisierten Verarbeitungsblocks 400A koppeln.As shown, the specialized processing blocks 400A and 400B both the entrances 471 . 473 . 475 and 477 , the exit 480 , the conversion function circuit 450 , the multiplier circuits 401 and 402 and the adder circuits 403 and 404 include. The specialized processing block 400B may also be the entrance 479 and the register 405 between the output of the adder circuit 404 and the exit 480 and an input of the adder circuit 404 is coupled. A cascade connection may be a cascade output of the specialized processing block 400B with a cascade input of the specialized processing block 400A couple.

Die spezialisierten Verarbeitungsblöcke 400A und 400B können zusammen das Skalarprodukt der Vektoren Y und Z implementieren, wie in 3 beschrieben. Auf Wunsch kann der spezialisierte Verarbeitungsblock 400B zusätzlich eine Akkumulationsoperation des am Eingang 479 empfangenen Signals I implementieren. Beispielsweise kann das Signal I eine Gleitkommazahl einer anderen Gleitkommagenauigkeit als die Signale A, B, C, D, E, F, G oder H codieren. Die Addiererschaltung 404 des spezialisierten Verarbeitungsblocks 400B kann das im Register 405 gespeicherte Signal (z. B. Null bei Reset) zu dem am Eingang 479 empfangenen Signal addieren. Das Register 405 kann die durch die Addiererschaltung 404 erzeugte Summe speichern, und die Addiererschaltung 404 kann die gespeicherte Summe zu dem am Eingang 479 empfangenen Signal addieren und damit eine Akkumulationsoperation implementieren.The specialized processing blocks 400A and 400B Together, they can implement the dot product of vectors Y and Z, as in 3 described. On request, the specialized processing block 400B additionally an accumulation operation of the input 479 implement received signal I. For example, signal I may encode a floating point number of floating point inaccuracy other than A, B, C, D, E, F, G, or H signals. The adder circuit 404 the specialized processing block 400B can that be in the register 405 stored signal (eg zero at reset) to the input 479 add the received signal. The registry 405 may be determined by the adder circuit 404 store generated sum, and the adder circuit 404 can save the stored sum to the one at the entrance 479 add the received signal and thus implement an accumulation operation.

Durch Nutzung der beiden spezialisierten Verarbeitungsblöcke 300A und 300B aus 3 als Bausteine benachbarter spezialisierter Verarbeitungsblöcke kann ein rekursiver Baum zum Erzeugen eines Skalarprodukts zweier Vektoren aufgebaut werden. 5 ist ein Diagramm von sechs exemplarischen spezialisierten Verarbeitungsblöcken, die in einer Kaskadenkette angeordnet sind und ein Skalarprodukt zweier Vektoren von Gleitkommazahlen erzeugen, nach einigen Ausführungsformen.By using the two specialized processing blocks 300A and 300B out 3 As building blocks of neighboring specialized processing blocks, a recursive tree can be constructed for generating a scalar product of two vectors. 5 FIG. 12 is a diagram of six exemplary specialized processing blocks arranged in a cascade chain and generating a scalar product of two floating point vectors, according to some embodiments.

Auf Wunsch kann der spezialisierte Verarbeitungsblock 200 aus 2 jeden der spezialisierten Verarbeitungsblöcke 500A, 500B, 500C, 500D, 500E und 500F implementieren. Um die Diskussion zu vereinfachen, wird bei der logischen Darstellung aus 5 auf Implementierungsdetails der spezialisierten Verarbeitungsblöcke 500A, 500B, 500C, 500D, 500E und 500F, wie beispielsweise Register, und einige programmierbare Routing-Funktionen, wie beispielsweise Multiplexer, verzichtet.On request, the specialized processing block 200 out 2 each of the specialized processing blocks 500A . 500B . 500C . 500D . 500E and 500F to implement. To simplify the discussion, look at the logical representation 5 on implementation details of the specialized processing blocks 500A . 500B . 500C . 500D . 500E and 500F such as registers, and some programmable routing functions, such as multiplexers, omitted.

Wie gezeigt, können die spezialisierten Verarbeitungsblöcke 500A - 500F (d. h. 500A, 500B, 500C, 500D, 500E und 500F) jeweils die Eingänge 571, 573, 575 und 577, den Ausgang 580, die Umwandlungsfunktionsschaltung 550, die Multipliziererschaltungen 501 und 502 sowie die Addiererschaltungen 503 und 504 beinhalten. Die spezialisierten Verarbeitungsblöcke 500B, 500C, 500D und 500E können ferner den Eingang 579 beinhalten. Eine Kaskadenschaltung kann einen Kaskadenausgang der spezialisierten Verarbeitungsblöcke 500F, 500E, 500D, 500C und 500B mit einem Kaskadeneingang der spezialisierten Verarbeitungsblöcke 500E, 500D, 500C, 500B bzw. 500A koppeln.As shown, the specialized processing blocks 500A - 500F (ie 500A, 500B, 500C, 500D, 500E and 500F) respectively the inputs 571 . 573 . 575 and 577 , the exit 580 , the conversion function circuit 550 , the multiplier circuits 501 and 502 and the adder circuits 503 and 504 include. The specialized processing blocks 500B . 500C . 500D and 500E can also use the entrance 579 include. A cascade connection may be a cascade output of the specialized processing blocks 500F . 500E . 500D . 500C and 500B with a cascade input of the specialized processing blocks 500E . 500D . 500C . 500B respectively. 500A couple.

Betrachten wir nun das Szenario, in dem die spezialisierten Verarbeitungsblöcke 500A - 500F zusammen das Skalarprodukt des Vektors Y mit den Tupeln A, C, E, G, I, K, M, O, Q, S, U, W (d. h. Y = (A,C,E,G, I,K,M,0,Q,S,U,W) ^T) und des Vektors Z mit den Tupeln B, D, F, H, J, L, N, P, R, T, V und X (d. h. Z = (B, D, F, H, J, L, N, P, R, T, V, X)^T) implementieren. Nehmen wir ferner an, dass die Tupel der Vektoren Y und Z eine erste Gleitkommagenauigkeit (z. B. nach der Norm IEEE 754 halbe Genauigkeit, einfache Genauigkeit, doppelte Genauigkeit oder vierfache Genauigkeit) aufweisen.Now consider the scenario in which the specialized processing blocks 500A - 500F together the scalar product of the vector Y with the tuples A, C, E, G, I, K, M, O, Q, S, U, W (ie Y = (A, C, E, G, I, K, M , 0, Q, S, U, W) ^ T) and the vector Z with the tuples B, D, F, H, J, L, N, P, R, T, V and X (ie Z = (B , D, F, H, J, L, N, P, R, T, V, X) ^ T). Assume further that the tuples of the vectors Y and Z have a first floating-point precision (eg according to the standard IEEE 754 half accuracy, single precision, double precision or quadruple accuracy).

Bei diesem Szenario kann der spezialisierte Verarbeitungsblock 500A zwei Tupel aus sowohl dem Vektor Y als auch Z (z. B. die Tupel A und C aus dem Vektor Y und die Tupel B und D aus dem Vektor Z) an den Eingängen 571, 573, 575 bzw. 577 empfangen. Ebenso können die spezialisierten Verarbeitungsblöcke 500B - 500F jeder zwei Tupel aus sowohl dem Vektor Y als auch Z an den Eingängen 571, 573, 575 bzw. 577 empfangen (z. B. 500B empfängt die Tupel E und G aus dem Vektor Y und die Tupel F und H aus dem Vektor Z, 500C empfängt I, J, K und L, 500D empfängt M, N, O, P, 500E empfängt Q, R, S, T und 500F empfängt U, V, W und X).In this scenario, the specialized processing block 500A two tuples from both the vector Y and Z (eg, the tuples A and C from the vector Y and the tuples B and D from the vector Z) at the inputs 571 . 573 . 575 respectively. 577 receive. Likewise, the specialized processing blocks 500B - 500F every two tuples from both the vector Y and Z at the entrances 571 . 573 . 575 respectively. 577 500B receives the tuples E and G from the vector Y and the tuples F and H from the vector Z, 500C receives I, J, K and L, 500D receives M, N, O, P, 500E receives Q, R, S, T and 500F receives U, V, W and X).

Jedes Paar spezialisierter Verarbeitungsblöcke kann die erste Stufe einer rekursiven Skalarproduktoperation implementieren, wie in 3 gezeigt, indem er ein Teilergebnis basierend auf einer quaternären Reduktion der an den Eingängen 571, 573, 575 und 577 empfangenen Tupel der Vektoren Y und Z anhand der Multipliziererschaltungen 501 und 502, der Addiererschaltung 503 und der Umwandlungsfunktionsschaltung 550 erzeugt, worauf eine binäre Reduktion des im aktuellen spezialisierten Verarbeitungsblock erzeugten Teilergebnisses und des in einem benachbarten spezialisierten Verarbeitungsblock erzeugten Teilergebnisses folgt.Each pair of specialized processing blocks may implement the first stage of a recursive dot product operation, as in FIG 3 shown by a partial result based on a quaternary reduction of the inputs 571 . 573 . 575 and 577 received tuples of vectors Y and Z based on the multiplier circuits 501 and 502 , the adder circuit 503 and the conversion function circuit 550 followed by a binary reduction of the partial result produced in the current specialized processing block and the partial result generated in a neighboring specialized processing block.

Beispielsweise können die Multipliziererschaltungen 501 und 502, die Addiererschaltung 503 und die Umwandlungsfunktionsschaltung 550 des spezialisierten Verarbeitungsblocks 500B die von der ersten Gleitkommagenauigkeit in eine zweite Gleitkommagenauigkeit, die eine höhere Gleitkommagenauigkeit aufweist, wie vorstehend dargelegt, konvertierte Produktsumme E*F+G*H erzeugen und damit ein Teilergebnis erzeugen. Ebenso können die Multipliziererschaltungen 501 und 502, die Addiererschaltung 503 und die Umwandlungsfunktionsschaltung 550 des spezialisierten Verarbeitungsblocks 500A die von der ersten Gleitkommagenauigkeit in die zweite Gleitkommagenauigkeit konvertierte Produktsumme A*B+C*D erzeugen und damit ein weiteres Teilergebnis erzeugen.For example, the multiplier circuits 501 and 502 , the adder circuit 503 and the conversion function circuit 550 the specialized processing block 500B which converts the first floating point inaccuracy to a second floating point inaccuracy, which has a higher floating point inaccuracy, as set forth above, converted product sum E * F + G * H and thus produces a partial result. Likewise, the multiplier circuits 501 and 502 , the adder circuit 503 and the conversion function circuit 550 the specialized processing block 500A generate the product sum A * B + C * D converted from the first floating point inaccuracy to the second floating point inaccuracy and thus generate another partial result.

Die konfigurierbare Verbindungsschaltungsanordnung in den spezialisierten Verarbeitungsblöcken 500A und 500B kann die beiden Teilergebnisse an die Addiererschaltung 504 im spezialisierten Verarbeitungsblock 500A weiterleiten.The configurable interconnect circuitry in the specialized processing blocks 500A and 500B can the two partial results to the adder circuit 504 in the specialized processing block 500A hand off.

Die Addiererschaltung 504 des spezialisierten Verarbeitungsblocks 500A kann das erste Stufenergebnis des Skalarprodukts der Vektoren Y und Z (d. h. A*B+C*D+E*F+G*H) durch Ausführen einer binären Reduktion (d. h. einer Addition) der beiden Teilergebnisse (d. h. A*B+C*D und E*F+G*H) erzeugen und das erste Stufenergebnis des Skalarprodukts am Ausgang 580 des spezialisierten Verarbeitungsblocks 500 bereitstellen. Ebenso können die spezialisierten Verarbeitungsblöcke 500C und 500D das erste Stufenergebnis I*J+K*L+M*N+O*P und die spezialisierten Verarbeitungsblöcke 500E und 500F das erste Stufenergebnis Q*R+S*T+U*V+W*X erzeugen.The adder circuit 504 the specialized processing block 500A the first step result of the scalar product of the vectors Y and Z (ie A * B + C * D + E * F + G * H) can be obtained by performing a binary reduction (ie addition) of the two partial results (ie A * B + C * D and E * F + G * H) and the first step result of the dot product at the output 580 the specialized processing block 500 provide. Likewise, the specialized processing blocks 500C and 500D the first step result I * J + K * L + M * N + O * P and the specialized processing blocks 500E and 500F generate the first step result Q * R + S * T + U * V + W * X.

Durch Nutzung der Bausteine benachbarter spezialisierter Verarbeitungsblöcke (d. h. 500A und 500B, 500C und 500D sowie 500E und 500F) kann ein rekursiver Baum aufgebaut werden. Beispielsweise können die ersten Stufenergebnisse des Skalarprodukts der Vektoren Y und Z (d. h. die Ausgänge der spezialisierten Verarbeitungsblöcke 500A, 500C und 500E) über Routing-Ressourcen, die sich außerhalb der spezialisierten Verarbeitungsblöcke 500A - 500F befinden (z. B. anhand der vertikalen Verbindungsressourcen 140 und der horizontalen Verbindungsressourcen 150 der programmierbaren integrierten Schaltung 100 aus 1) an die Eingänge 579 der spezialisierten Verarbeitungsblöcke 500B, 500C bzw. 500E weitergeleitet werden.By utilizing the building blocks of neighboring specialized processing blocks (ie, 500A and 500B, 500C and 500D, and 500E and 500F), a recursive tree can be constructed. For example, the first stage results of the dot product of the vectors Y and Z (ie, the outputs of the specialized processing blocks 500A . 500C and 500E ) have routing resources that are outside the specialized processing blocks 500A - 500F located (for example, using the vertical connection resources 140 and the horizontal connection resources 150 the programmable integrated circuit 100 out 1 ) to the inputs 579 the specialized processing blocks 500B . 500C respectively. 500E to get redirected.

Wie gezeigt, kann die konfigurierbare Verbindungsschaltungsanordnung in den spezialisierten Verarbeitungsblöcken 500B und 500C das erste Stufenergebnis I*J+K*L+M*N+O*P vom Eingang 579 des spezialisierten Verarbeitungsblocks 500C über eine Kaskadenschaltung an die Addiererschaltung 504 des spezialisierten Verarbeitungsblocks 500B und das erste Stufenergebnis A*B+C*D+E*F+G*H vom Eingang 579 an die Addiererschaltung 504 des spezialisierten Verarbeitungsblocks 500B weiterleiten. Der spezialisierte Verarbeitungsblock 500B kann den Addierer 504 nutzen, um das zweite Stufenergebnis (d. h. A*B+C*D+E*F+G*H+I*J+K*L+M*N+O*P) zu erzeugen, und das zweite Stufenergebnis am Ausgang 580 bereitstellen.As shown, the configurable interconnect circuitry in the specialized processing blocks 500B and 500C the first step result I * J + K * L + M * N + O * P from the input 579 the specialized processing block 500C via a cascade connection to the adder circuit 504 the specialized processing block 500B and the first step result A * B + C * D + E * F + G * H from the input 579 to the adder circuit 504 the specialized processing block 500B hand off. The specialized processing block 500B can the adder 504 to produce the second step result (ie A * B + C * D + E * F + G * H + I * J + K * L + M * N + O * P) and the second step result at the output 580 provide.

Das zweite Stufenergebnis kann über Routing-Ressourcen, die sich außerhalb der spezialisierten Verarbeitungsblöcke 500A - 500F befinden, an den Eingang 579 des spezialisierten Verarbeitungsblocks 500D und von dort an den Addierer 504 des spezialisierten Verarbeitungsblocks 500D weitergeleitet werden. Die konfigurierbare Verbindungsschaltungsanordnung in den spezialisierten Verarbeitungsblöcken 500D und 500D kann das erste Stufenergebnis Q*R+S*T+U*V+W*X vom Eingang 579 des spezialisierten Verarbeitungsblocks 500E über eine Kaskadenschaltung an die Addiererschaltung 504 des spezialisierten Verarbeitungsblocks 500D weiterleiten. Der spezialisierte Verarbeitungsblock 500D kann den Addierer 504 nutzen, um das finale Skalarproduktergebnis (d. h. A*B+C*D+E*F+G*H+I*J+K*L+M*N+O*P+Q*R+S*T+U*V+W*X) in einer dritten Stufe zu erzeugen, und das finale Skalarprodukt am Ausgang 580 bereitstellen.The second stage result may have routing resources that are outside of the specialized processing blocks 500A - 500F located at the entrance 579 the specialized processing block 500D and from there to the adder 504 the specialized processing block 500D to get redirected. The configurable interconnect circuitry in the specialized processing blocks 500D and 500D can the first step result Q * R + S * T + U * V + W * X from the input 579 the specialized processing block 500E via a cascade connection to the adder circuit 504 the specialized processing block 500D hand off. The specialized processing block 500D can the adder 504 use the final scalar product result (ie A * B + C * D + E * F + G * H + I * J + K * L + M * N + O * P + Q * R + S * T + U * V + W * X) in a third stage, and the final scalar product at the output 580 provide.

Auf Wunsch kann auf einer jeglichen Stufe des in 5 beschriebenen rekursiven Baums Register-Pipelining ausgeführt werden (z. B. um das Routing zu vereinfachen und/oder die Geschwindigkeit zu verbessern). Da die Addierer der auf die erste Stufe folgenden Stufen (d. h. die Addierer 504 der spezialisierten Verarbeitungsblöcke 500B und 500D) absolut unabhängig vom Addierer der ersten Stufe (und voneinander) sind, können die Addierer nachfolgender Stufen in einem jeglichen der spezialisierten Verarbeitungsblöcke 500B, 500D oder 500F, in denen der Addierer 504 in der ersten Stufe der Skalarproduktberechnung ungenutzt ist, angeordnet werden. Dies kann beispielsweise in späteren Stufen, wo die Längen von Stufe zu Stufe länger sein können, hilfreich sein.Upon request, at any stage of the in 5 described recursive tree register pipelining (eg, to simplify routing and / or improve the speed). Since the adders of the stages following the first stage (ie the adders 504 the specialized processing blocks 500B and 500D ) are absolutely independent of the first stage adder (and each other), the adders of subsequent stages in any one of the specialized processing blocks 500B . 500D or 500F in which the adder 504 is unused in the first stage of scalar product computation. This can be done, for example, in later stages where the Lengths from one step to another can be helpful.

Auf die Addiererschaltung 504 des spezialisierten Verarbeitungsblocks 500F kann verzichtet werden, da ein Skalarprodukt zweier Vektoren mit N-Tupeln in jedem Vektor N Multipliziererschaltungen und (N-1) Addiererschaltungen erfordert. Alternativ kann die N-te Addiererschaltung 504 unabhängig für andere Zwecke genutzt werden.On the adder circuit 504 the specialized processing block 500F can be omitted since a scalar product of two vectors with N-tuples in each vector requires N multiplier circuits and (N-1) adder circuits. Alternatively, the Nth adder circuit 504 be used independently for other purposes.

6 ist ein Diagramm von vier exemplarischen spezialisierten Verarbeitungsblöcken 600A - 600D (d. h. 600A, 600B, 600C und 600D), die in einer Kaskadenkette angeordnet sind und ein rekursives Skalarprodukt zweier Vektoren von Gleitkommazahlen und eine Akkumulation des Ergebnisses ausführen, nach einigen Ausführungsformen. 6 is a diagram of four exemplary specialized processing blocks 600A - 600D (ie, 600A, 600B, 600C, and 600D) arranged in a cascade chain and executing a recursive dot product of two floating-point vector vectors and accumulating the result, according to some embodiments.

Auf Wunsch kann der spezialisierte Verarbeitungsblock 200 aus 2 jeden der spezialisierten Verarbeitungsblöcke 600A - 600D implementieren. Um die Diskussion zu vereinfachen, wird bei der logischen Darstellung aus 6 auf Implementierungsdetails der spezialisierten Verarbeitungsblöcke 600A - 600D, wie beispielsweise Register, und einige programmierbare Routing-Funktionen, wie beispielsweise Multiplexer, verzichtet.On request, the specialized processing block 200 out 2 each of the specialized processing blocks 600A - 600D to implement. To simplify the discussion, look at the logical representation 6 on implementation details of the specialized processing blocks 600A - 600D such as registers, and some programmable routing functions, such as multiplexers, omitted.

Wie gezeigt, können die spezialisierten Verarbeitungsblöcke 600A - 600D jeder die Eingänge 671, 673, 675 und 677, den Ausgang 680, die Umwandlungsfunktionsschaltung 650, die Multipliziererschaltungen 601 und 602 sowie die Addiererschaltungen 603 und 604 beinhalten. Die spezialisierten Verarbeitungsblöcke 600B, 600C und 600D können ferner den Eingang 679 beinhalten, und der spezialisierte Verarbeitungsblock 600D kann das Register 605 beinhalten, das einen Akkumulator mit der Addiererschaltung 604 implementieren kann. Eine Kaskadenschaltung kann einen Kaskadenausgang der spezialisierten Verarbeitungsblöcke 600D, 600C und 600B mit einem Kaskadeneingang der spezialisierten Verarbeitungsblöcke 600C, 600B bzw. 600A koppeln.As shown, the specialized processing blocks 600A - 600D everyone the inputs 671 . 673 . 675 and 677 , the exit 680 , the conversion function circuit 650 , the multiplier circuits 601 and 602 and the adder circuits 603 and 604 include. The specialized processing blocks 600B . 600C and 600D can also use the entrance 679 include, and the specialized processing block 600D can the register 605 including an accumulator having the adder circuit 604 can implement. A cascade connection may be a cascade output of the specialized processing blocks 600D . 600C and 600B with a cascade input of the specialized processing blocks 600C . 600B respectively. 600A couple.

Als ein Beispiel können die spezialisierten Verarbeitungsblöcke 600A - 600D die ersten zwei Stufen der in 5 gezeigten rekursiven Skalarprodukterzeugung implementieren. Anders ausgedrückt, können die spezialisierten Verarbeitungsblöcke 600A - 600D das Skalarprodukt Y*Z = A*B+C*D+E*F+G*H+I*J+K*L+M*N+O*P des Vektors Ymit den Tupeln A, C, E, G, I, K, M und O (d. h. Y = (A,C,E,G,I,K,M,O)^T) und des Vektors Z mit den Tupeln B, D, F, H, J, L, N und P (d. h. Z = (B,D,F,H,J,L,N,P)^T) erzeugen und das Skalarprodukt am Ausgang 680 des spezialisierten Verarbeitungsblocks 600B bereitstellen.As an example, the specialized processing blocks 600A - 600D the first two stages of in 5 implement recursive dot product generation. In other words, the specialized processing blocks 600A - 600D the dot product Y * Z = A * B + C * D + E * F + G * H + I * J + K * L + M * N + O * P of the vector Y with the tuples A, C, E, G, I, K, M and O (ie Y = (A, C, E, G, I, K, M, O) ^ T) and the vector Z with the tuples B, D, F, H, J, L N and P (ie Z = (B, D, F, H, J, L, N, P) ^ T) and produce the dot product at the output 680 the specialized processing block 600B provide.

Auf Wunsch kann das Skalarprodukt über Routing-Ressourcen, die sich außerhalb der spezialisierten Verarbeitungsblöcke 600A - 600D befinden, an den Eingang 679 der spezialisierten Verarbeitungsblöcke 600D und von dort an den Addierer 604 des spezialisierten Verarbeitungsblocks 600D weitergeleitet werden. Die Addiererschaltung 604 des spezialisierten Verarbeitungsblocks 600D kann das im Register 605 gespeicherte Signal (z. B. Null bei Reset) zu dem am Eingang 679 empfangenen Signal addieren. Das Register 605 kann die durch die Addiererschaltung 604 erzeugte Summe speichern, und die Addiererschaltung 604 kann die gespeicherte Summe zu dem am Eingang 679 empfangenen Signal addieren und damit eine Akkumulationsoperation des Skalarprodukts implementieren.Upon request, the dot product may have routing resources that are outside of the specialized processing blocks 600A - 600D located at the entrance 679 the specialized processing blocks 600D and from there to the adder 604 the specialized processing block 600D to get redirected. The adder circuit 604 the specialized processing block 600D can that be in the register 605 stored signal (eg zero at reset) to the input 679 add the received signal. The registry 605 may be determined by the adder circuit 604 store generated sum, and the adder circuit 604 can save the stored sum to the one at the entrance 679 add together received signal and thus implement an accumulation operation of the scalar product.

7 ist ein Ablaufdiagramm, das exemplarische Operationen zum Betreiben einer integrierten Schaltung zeigt, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt, nach einigen Ausführungsformen. 7 FIG. 10 is a flowchart showing exemplary operations for operating an integrated circuit that generates a scalar product of a first and a second vector, according to some embodiments.

Während der Operation 710 kann die integrierte Schaltung mit einem ersten spezialisierten Verarbeitungsblock ein erstes Teilergebnis einer ersten Gleitkommagenauigkeit erzeugen. Als ein Beispiel kann eine integrierte Schaltung, wie beispielsweise die programmierbare integrierte Schaltung 100 aus 1, die spezialisierten Verarbeitungsblöcke 300A und 300B aus 3 beinhalten; und der spezialisierte Verarbeitungsblock 300B kann die Produktsumme E*F+G*H als ein erstes Teilergebnis mit einer ersten Gleitkommagenauigkeit (z. B. ein Gleitkommazahlenformat mit einfacher Genauigkeit) erzeugen.During the operation 710 For example, the integrated circuit may generate a first partial result of a first floating-point precision with a first specialized processing block. As an example, an integrated circuit such as the programmable integrated circuit 100 out 1 , the specialized processing blocks 300A and 300B out 3 include; and the specialized processing block 300B can produce the product sum E * F + G * H as a first partial result with a first floating point precision (eg, a single precision floating point format).

Während der Operation 720 kann die integrierte Schaltung das erste Teilergebnis an einem Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks bereitstellen. Beispielsweise kann der spezialisierte Verarbeitungsblock 300B aus 3 das erste Teilergebnis (d. h. die Produktsumme E*F+G*H) am Kaskadenausgang bereitstellen.During the operation 720 For example, the integrated circuit may provide the first partial result to a cascade output of the first specialized processing block. For example, the specialized processing block 300B out 3 provide the first partial result (ie the product sum E * F + G * H) at the cascade output.

Während der Operation 730 kann die integrierte Schaltung das erste Teilergebnis über eine Kaskadenschaltung vom Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks an einem Kaskadeneingang eines zweiten spezialisierten Verarbeitungsblocks empfangen. Beispielsweise kann der spezialisierte Verarbeitungsblock 300A aus 3 die Produktsumme E*F+G*H über die Kaskadenschaltung am Kaskadeneingang vom spezialisierten Verarbeitungsblock 300B empfangen.During the operation 730 The integrated circuit may receive the first partial result via a cascade connection from the cascade output of the first specialized processing block at a cascade input of a second specialized processing block. For example, the specialized processing block 300A out 3 the product sum E * F + G * H via the cascade connection at the cascade input from the specialized processing block 300B receive.

Während der Operation 740 kann die integrierte Schaltung ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor im zweiten spezialisierten Verarbeitungsblock erzeugen. Beispielsweise kann der spezialisierte Verarbeitungsblock 300A aus 3 die Tupel A und C aus einem Vektor Y und die Tupel B und D aus einem Vektor Z empfangen. Auf Wunsch können die Tupel A, B, C und D eine zweite Gleitkommagenauigkeit (z. B. ein Gleitkommazahlenformat mit halber Genauigkeit) aufweisen. Der spezialisierte Verarbeitungsblock 300A kann die Multipliziererschaltungen 301 und 302 sowie die Addiererschaltung 303 mit einer anschließenden Konvertierung in die erste Gleitkommagenauigkeit in der Umwandlungsfunktionsschaltung 350 nutzen, um die Produktsumme A*B+C*D als ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit (z. B. ein Gleitkommazahlenformat mit einfacher Genauigkeit) zu erzeugen.During the operation 740 For example, the integrated circuit may provide a second partial result with the first floating point inaccuracy based on a quaternary reduction of two tuples with one generate second floating point inaccuracy from both the first and second vectors in the second specialized processing block. For example, the specialized processing block 300A out 3 receive the tuples A and C from a vector Y and the tuples B and D from a vector Z. If desired, tuples A, B, C, and D may have a second floating point precision (eg, a half-precision floating point format). The specialized processing block 300A can the multiplier circuits 301 and 302 and the adder circuit 303 with a subsequent conversion to the first floating point inaccuracy in the conversion function circuit 350 to produce the product sum A * B + C * D as a second partial result with the first floating-point precision (for example, a single-precision floating-point number format).

Während der Operation 750 kann die integrierte Schaltung das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses im zweiten spezialisierten Verarbeitungsblock erzeugen. Beispielsweise kann die Addiererschaltung 304 im spezialisierten Verarbeitungsblock 300A aus 3 das Skalarprodukt durch Addieren des ersten Teilprodukts (d. h. E*F+G*H) zum ersten Teilprodukt (d. h. A*B+C*D) erzeugen und damit das Skalarprodukt des Vektors Y mit den Tupeln A, C, E und G und des Vektors Z mit den Tupeln B, D, F und H erzeugen.During the operation 750 For example, the integrated circuit may generate the dot product by performing a binary reduction of the first and second part results in the second specialized processing block. For example, the adder circuit 304 in the specialized processing block 300A out 3 generate the scalar product by adding the first partial product (ie, E * F + G * H) to the first partial product (ie, A * B + C * D), thereby generating the dot product of the vector Y with the tuples A, C, E, and G, and Create vector Z with the tuples B, D, F and H.

Ein maschinenlesbares Medium kann Anweisungen zum Ausführen eines Verfahrens (z. B. Anweisungen zum Konfigurieren einer integrierten Schaltung zum Erzeugen eines Skalarprodukts eines ersten und eines zweiten Vektors, wie durch das Verfahren aus 7 beschrieben) auf einer integrierten Schaltung nach einigen Ausführungsformen codieren. Ein geeigneter Computer oder eine ähnliche Vorrichtung können diese Anweisungen ausführen und so das Verfahren in der integrierten Schaltung implementieren. Beispielsweise kann ein Personalcomputer mit einer Schnittstelle ausgestattet sein, mit der die integrierte Schaltung verbunden sein kann, und geeignete Softwaretools und/oder ein Benutzer kann mithilfe des Personalcomputers das Verfahren über die Schnittstelle in die integrierte Schaltung programmieren.A machine-readable medium may include instructions for carrying out a method (eg, instructions for configuring an integrated circuit to generate a dot product of a first and a second vector, as determined by the method 7 described) on an integrated circuit according to some embodiments. A suitable computer or similar device may execute these instructions to implement the method in the integrated circuit. For example, a personal computer may be provided with an interface to which the integrated circuit may be connected, and appropriate software tools and / or a user may program the method via the interface into the integrated circuit using the personal computer.

Bei einigen Ausführungsformen können die Anweisungen zum Ausführen des Verfahrens durch andere Anweisungen, die auf demselben oder einem zusätzlichen maschinenlesbaren Medium codiert sind, erzeugt werden. Anders ausgedrückt, kann ein erster Satz von Anweisungen (z. B. ein C-Sprache-Compiler oder ein Werkzeug zur Entwurfsautomatisierung elektronischer Systeme (Electronic Design Automation, EDA), der auf einem Computer oder einer ähnlichen Vorrichtung ausgeführt wird, einen zweiten Satz von Anweisungen (z. B. Assembler-Code oder eine Bitfolge zum Programmieren einer konfigurierbaren Schaltungsanordnung) erzeugen, wobei der zweite Satz von Anweisungen das Verfahren beinhaltet, das auf einer integrierten Schaltung (z. B. auf einem Mikroprozessor oder einer programmierbaren integrierten Schaltungsvorrichtung, wie beispielsweise der programmierbaren integrierten Schaltung 100 aus 1) ausgeführt wird.In some embodiments, the instructions for carrying out the method may be generated by other instructions encoded on the same or an additional machine-readable medium. In other words, a first set of instructions (eg, a C-language compiler or an Electronic Design Automation (EDA) tool executing on a computer or similar device may include a second set of Generate instructions (eg, assembler code or a bit string for programming a configurable circuit arrangement), the second set of instructions including the method described on an integrated circuit (eg, on a microprocessor or a programmable integrated circuit device such as a microprocessor) for example, the programmable integrated circuit 100 out 1 ) is performed.

Ein maschinenlesbares Medium kann eine jegliche Art von Vorrichtung oder Technologie beinhalten, welche die Speicherung von Anweisungen ermöglicht, einschließlich Halbleiterspeicher, der flüchtig (z. B. Dynamic-Random-Access-Memory (DRAM), Static-Random-Access-Memory (SRAM) usw.) oder nichtflüchtig (z. B. programmierbare Read-Only-Memory (PROM), Flash-Memory usw.) sein kann, magnetischer Speichervorrichtungen, optischer Speichervorrichtungen oder einer Kombination derselben.A machine-readable medium may include any type of device or technology that enables storage of instructions, including semiconductor memory that may be volatile (eg, Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM) ), etc.) or non-volatile (e.g., programmable read only memory (PROM), flash memory, etc.), magnetic storage devices, optical storage devices, or a combination thereof.

8 zeigt einen Querschnitt eines magnetischen Datenspeichermediums 800, das mit einem maschinenausführbaren Programm codiert werden kann, das durch Systeme, wie beispielsweise den vorgenannten Personalcomputer oder andere Computer oder ähnliche Vorrichtung, ausgeführt werden kann. Das Medium 800 kann eine Diskette oder eine Festplatte oder ein Magnetband sein, mit einem geeigneten Substrat 810, das herkömmlich sein kann, und einer geeigneten Beschichtung 820, die herkömmlich sein kann, auf einer oder beiden Seiten, die magnetische Bereiche enthalten, deren Polung oder Ausrichtung magnetisch geändert werden können. Außer im Falle eines Magnetbands kann das Medium 800 auch eine Öffnung zum Aufnehmen der Spindel einer Festplatte oder anderen Datenspeichervorrichtung aufweisen. 8th shows a cross section of a magnetic data storage medium 800 , which may be encoded with a machine executable program that may be executed by systems such as the aforementioned personal computer or other computer or similar device. The medium 800 may be a floppy disk or a hard disk or a magnetic tape with a suitable substrate 810 , which may be conventional, and a suitable coating 820 , which may be conventional, on one or both sides containing magnetic areas whose polarity or orientation can be magnetically changed. Except in the case of a magnetic tape, the medium 800 also have an opening for receiving the spindle of a hard disk or other data storage device.

Die magnetischen Bereiche der Beschichtung 820 des Mediums 800 können so gepolt oder ausgerichtet sein, dass sie in einer Weise, die herkömmlich sein kann, ein maschinenausführbares Programm codieren, das durch ein Programmiersystem ausgeführt wird, beispielsweise durch einen Personalcomputer oder einen anderen Computer oder ein ähnliches System mit einem Steckplatz oder einem peripheren Anschluss, in den die zu konfigurierende integrierte Schaltung zum Zweck des Konfigurierens geeigneter Abschnitte der integrierten Schaltung, einschließlich ihrer gegebenenfalls vorhandenen spezialisierten Verarbeitungsblöcke, nach einigen Ausführungsformen eingeführt werden kann.The magnetic areas of the coating 820 of the medium 800 may be poled or oriented to encode, in a manner that may be conventional, a machine executable program executed by a programming system, such as a personal computer or other computer, or a similar system having a slot or peripheral port, into which the integrated circuit to be configured may be inserted for the purpose of configuring appropriate portions of the integrated circuit, including its optional specialized processing blocks, according to some embodiments.

9 zeigt einen Querschnitt eines optisch lesbaren Datenspeichermediums 900, das mit einem vorgenannten maschinenausführbaren Programm codiert werden kann, um durch Systeme, wie beispielsweise den vorgenannten Personalcomputer, oder andere Computer oder ähnliche Vorrichtung ausgeführt zu werden. Das Medium 900 kann eine Blu-ray Disc (BD), ein herkömmlicher Compact Disc Read-Only-Memory (CD-ROM) oder ein Digital Versatile Disc- (DVD-, bisweilen auch als Digital Video Disc- bezeichnet) Read-Only-Memory oder ein jegliches wiederbeschreibbares Medium, wie beispielsweise eine CD R, CD RW, DVD R, DVD RW, DVD+R, DVD+RW oder DVD-RAM oder eine Magneto-Optical Disc, die optisch lesbar und magneto-optisch wiederbeschreibbar ist, sein. Das Medium 900 kann ein geeignetes Substrat 910 und eine geeignete Beschichtung 920, die sich üblicherweise auf einer oder beiden Seiten des Substrats 910 befindet, aufweisen. 9 shows a cross section of an optically readable data storage medium 900 , which can be coded with an aforementioned machine-executable program, by systems such as the aforementioned Personal computer, or other computer or similar device to be executed. The medium 900 can be a Blu-ray Disc (BD), a conventional Compact Disc Read Only Memory (CD-ROM) or a Digital Versatile Disc (DVD, sometimes referred to as Digital Video Disc) read-only memory or any rewritable medium such as a CD R, CD RW, DVD R, DVD RW, DVD + R, DVD + RW or DVD-RAM or a magneto-optical disc that is optically readable and magneto-optically rewritable. The medium 900 can be a suitable substrate 910 and a suitable coating 920 usually on one or both sides of the substrate 910 is located.

Im Fall eines CD-basierten oder DVD-basierten Mediums ist die Beschichtung 920, wie hinlänglich bekannt ist, reflektierend und wird mit einer Mehrzahl von Pits 930, die auf einer oder mehreren Schichten angeordnet sind, geprägt, um das maschinenausführbare Programm zu codieren. Die Anordnung von Pits wird durch Reflektieren von Laserlicht an der Oberfläche der Beschichtung 920 gelesen. Oben auf der Beschichtung 920 kann eine Schutzbeschichtung 940 bereitgestellt sein.In the case of a CD-based or DVD-based medium, the coating is 920 As is well known, reflective and comes with a plurality of pits 930 stacked on one or more layers embossed to code the machine executable program. The arrangement of pits is made by reflecting laser light on the surface of the coating 920 read. On top of the coating 920 can be a protective coating 940 be provided.

Im Falle der Magneto-Optical Disc weist die Beschichtung 920, wie hinlänglich bekannt ist, keine Pits 930 auf, sondern eine Mehrzahl von Magnetbereichen, deren Polarität oder Ausrichtung magnetisch geändert werden kann, wenn sie über eine bestimmte Temperatur hinaus erhitzt werden, beispielsweise durch einen Laser. Die Ausrichtung der Bereiche kann durch Messen der Polarisierung von an der Beschichtung 920 reflektiertem Laserlicht gemessen werden. Die Anordnung der Bereiche kann das Programm, wie vorstehend beschrieben, codieren.In the case of Magneto-Optical Disc rejects the coating 920 as is well known, no pits 930 but a plurality of magnetic regions whose polarity or orientation can be magnetically changed when heated above a certain temperature, for example by a laser. Alignment of the regions can be achieved by measuring the polarization of the coating 920 be measured reflected laser light. The arrangement of the areas may code the program as described above.

Das Verfahren und das Gerät, die hier beschrieben sind, können in jegliche geeignete Schaltungen oder Schaltungssysteme integriert sein. Beispielsweise können das Verfahren und das Gerät in verschiedene Arten von Vorrichtungen, wie beispielsweise Mikroprozessoren oder andere integrierte Schaltungen, integriert sein. Beispielhafte integrierte Schaltungen beinhalten programmierbare Array-Logik (Programmable Array Logic, PAL), programmierbare Logik-Arrays (Programmable Logic Arrays, PLAs), umfeldprogrammierbare Logik-Arrays (Field Programmable Logic Arrays, FPGAs), elektronisch programmierbare Logik-Vorrichtungen (Electrically Programmable Logic Devices, EPLDs), elektrisch löschbare programmierbare Logik-Vorrichtungen (Electrically Erasable Programmable Logic Devices, EEPLDs), Logic-Cell-Arrays (LCAs), umfeldprogrammierbare Gatter-Arrays (Field Programmable Gate Arrays, FPGAs), grobgranulierte rekonfigurierbare Architekturen (Coarse-Grained Reconfigurable Architectures, CGRAs), digitale Signalverarbeitungsschaltungen (DSP), anwendungsspezifische Standardprodukte (Application Specific Standard Products, ASSPs), anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), um nur einige zu nennen.The method and apparatus described herein may be incorporated into any suitable circuitry or circuit systems. For example, the method and apparatus may be integrated into various types of devices, such as microprocessors or other integrated circuits. Exemplary integrated circuits include programmable array logic (PAL), programmable logic arrays (PLAs), field programmable logic arrays (FPGAs), electronically programmable logic devices (Electrically Programmable Logic Devices, EPLDs), electrically erasable programmable logic devices (EEPLDs), logic cell arrays (LCAs), field programmable gate arrays (FPGAs), coarse granular reconfigurable architectures (coarse-grained Reconfigurable Architectures, CGRAs), Digital Signal Processing Circuits (DSP), Application Specific Standard Products (ASSPs), Application Specific Integrated Circuits (ASICs), to name just a few.

Die hier beschriebene integrierte Schaltung kann Teil eines Datenverarbeitungssystems sein, das eine oder mehrere der folgenden Komponenten beinhaltet: einen Prozessor; Speicher; I/O-Schaltungsanordnung und Peripheriegeräte. Das Datenverarbeitungssystem ist in einer breiten Vielzahl von Anwendungen verwendbar, beispielsweise in der Computervernetzung, Datenvernetzung, Instrumentierung, Videoverarbeitung, digitalen Signalverarbeitung oder einer jeglichen anderen Anwendung, bei welcher der Vorteil der Verwendung einer Schaltungsanordnung, die Mischgenauigkeitsgleitkommaarithmetikoperationen effizient ausführt, wünschenswert ist.The integrated circuit described herein may be part of a data processing system that includes one or more of the following components: a processor; Storage; I / O circuitry and peripherals. The data processing system is useful in a wide variety of applications, such as computer networking, data networking, instrumentation, video processing, digital signal processing, or any other application in which the benefit of using circuitry that efficiently executes composite precision floating point arithmetic operations is desirable.

Die integrierte Schaltung kann dazu gestaltet sein, eine Vielzahl verschiedener Logikfunktionen auszuführen. Beispielsweise kann die integrierte Schaltung als ein Prozessor oder Controller konfiguriert sein, der mit einem Systemprozessor zusammenarbeitet. Die integrierte Schaltung kann auch als ein Vermittler zum Vermitteln des Zugangs zu einer gemeinsam genutzten Ressource im Datenverarbeitungssystem genutzt werden. Bei noch einem anderen Beispiel kann die integrierte Schaltung als eine Schnittstelle zwischen einem Prozessor und einer der anderen Komponenten im System konfiguriert sein. Bei einer Ausführungsform kann die integrierte Schaltung eine aus den im Besitz des Abtretungsempfängers stehenden Familien von Vorrichtungen sein.The integrated circuit may be configured to perform a variety of different logic functions. For example, the integrated circuit may be configured as a processor or controller that cooperates with a system processor. The integrated circuit may also be used as an intermediary to provide access to a shared resource in the data processing system. In yet another example, the integrated circuit may be configured as an interface between a processor and one of the other components in the system. In one embodiment, the integrated circuit may be one of the families of devices owned by the assignee.

Wenngleich die Verfahrensoperationen in einer bestimmten Reihenfolge beschrieben wurden, versteht sich, dass zwischen beschriebenen Operationen andere Operationen ausgeführt werden können, beschriebene Operationen so angepasst werden können, dass sie zu geringfügig anderen Zeiten stattfinden, oder beschriebene Operationen in einem System verteilt sein können, welches das Stattfinden der Verarbeitungsoperationen in verschiedenen, mit der Verarbeitung verbundenen Abständen ermöglicht.Although the method operations have been described in a particular order, it should be understood that other operations may be performed between described operations, described operations may be adapted to occur at slightly different times, or described operations may be distributed in a system which includes the Performing the processing operations in different, associated with the processing intervals allows.

Das Vorstehende steht lediglich exemplarisch für die Prinzipien der Ausführungsformen, und vom Fachmann können zahlreiche Modifikationen vorgenommen werden, ohne vom Umfang und Wesen der hier offenbarten Ausführungsformen abzuweichen. Die vorstehenden Ausführungsformen können einzeln oder in einer jeglichen Kombination implementiert sein.The foregoing is merely exemplary of the principles of the embodiments, and numerous modifications can be made by those skilled in the art without departing from the scope and spirit of the embodiments disclosed herein. The above embodiments may be implemented individually or in any combination.

Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.The following examples relate to further embodiments.

Beispiel 1 ist eine integrierte Schaltung, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt und Folgendes beinhaltet: einen ersten spezialisierten Verarbeitungsblock, der ein erstes Teilergebnis einer ersten Gleitkommagenauigkeit bereitstellt, und einen zweiten spezialisierten Verarbeitungsblock, der das erste Teilergebnis über eine Kaskadenschaltung vom ersten spezialisierten Verarbeitungsblock empfängt und eine erste Gleitkommaarithmetikoperator-Schaltungsanordnung, die ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor erzeugt, und eine zweite Gleitkommaarithmetikoperator-Schaltungsanordnung, die das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses erzeugt, beinhaltet. Example 1 is an integrated circuit that generates a scalar product of a first and a second vector and includes: a first specialized processing block that provides a first partial result of a first floating-point inaccuracy, and a second specialized processing block that cascades the first partial result from the first and a first floating point arithmetic operator circuit which generates a second partial result with the first floating point precision based on a quaternary reduction of two tuples with a second floating point precision from both the first and second vectors, and a second floating point arithmetic operator circuit which generates the scalar product by generating a binary reduction of the first and second part results.

Beispiel 2 beinhaltet den Gegenstand des Beispiels 1, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner eine erste Multipliziererschaltung, die ein erstes Produkt basierend auf einem ersten Tupel der beiden Tupel aus dem ersten Vektor und einem ersten Tupel der beiden Tupel aus dem zweiten Vektor erzeugt, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist, und eine zweite Multipliziererschaltung, die ein zweites Produkt basierend auf einem zweiten Tupel der beiden Tupel aus dem ersten Vektor und einem zweiten Tupel der beiden Tupel aus dem zweiten Vektor erzeugt, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist, beinhaltet.Example 2 includes the subject matter of the example 1 wherein the first floating point arithmetic operator circuitry further generates a first multiplier circuit that generates a first product based on a first tuple of the two tuples from the first vector and a first tuple of the two tuples from the second vector, the first product having the second floating point precision, and a second multiplier circuit that generates a second product based on a second tuple of the two tuples from the first vector and a second tuple of the two tuples from the second vector, the second product having the second floating point precision.

Beispiel 3 beinhaltet den Gegenstand des Beispiels 2, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner eine Addiererschaltung beinhaltet, die eine Summe des ersten und des zweiten Produkts erzeugt, wobei die Summe die zweite Gleitkommagenauigkeit aufweist.Example 3 includes the subject matter of the example 2 wherein the first floating point arithmetic operator circuitry further includes an adder circuit that generates a sum of the first and second products, the sum having the second floating point precision.

Beispiel 4 beinhaltet den Gegenstand des Beispiels 3, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner eine Umwandlungsfunktionsschaltung beinhaltet, welche die Summe von der Addiererschaltung empfängt und das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit erzeugt.Example 4 includes the subject matter of the example 3 wherein the first floating point arithmetic operator circuitry further includes a conversion function circuit that receives the sum from the adder circuit and generates the second partial result by converting the sum of the second floating point inaccuracy into the first floating point inaccuracy.

Beispiel 5 beinhaltet den Gegenstand des Beispiels 4, wobei die Umwandlungsfunktionsschaltung die Exponentengröße der Summe von der zweiten auf die erste Gleitkommagenauigkeit erhöht.Example 5 includes the subject of the example 4 wherein the conversion function circuit increases the exponent size of the sum from the second to the first floating point precision.

Beispiel 6 beinhaltet den Gegenstand eines der Beispiele 4 oder 5, wobei die Umwandlungsfunktionsschaltung den Bias des Exponenten der Summe vom Bias der zweiten Gleitkommagenauigkeit auf den Bias der zweiten Gleitkommagenauigkeit anpasst.Example 6 includes the subject matter of any of Examples 4 or 5, wherein the conversion function circuit adjusts the bias of the exponent of the sum of the bias of the second floating-point precision to the bias of the second floating-point accuracy.

Beispiel 7 beinhaltet den Gegenstand eines der Beispiele 4 - 6, wobei der zweite spezialisierte Verarbeitungsblock ferner einen Ausgangsanschluss, der mit der zweiten Gleitkommaarithmetikoperator-Schaltungsanordnung gekoppelt ist, und einen Überbrückungspfad zwischen der Addiererschaltung und dem Ausgangsanschluss beinhaltet, wobei der Überbrückungspfad die Umwandlungsfunktionsschaltung und die zweite Gleitkommaarithmetikoperator-Schaltungsanordnung überbrückt.Example 7 includes the subject matter of one of Examples 4-6, wherein the second specialized processing block further includes an output port coupled to the second floating point arithmetic operator circuitry and a bypass path between the adder circuit and the output port, the bypass path comprising the conversion function circuit and the second Floating-point arithmetic operator circuitry bypasses.

Beispiel 8 beinhaltet den Gegenstand nach einem der Beispiele 1 - 7, wobei die zweite Gleitkommaarithmetikoperator-Schaltungsanordnung ferner eine Addiererschaltung beinhaltet, die das Skalarprodukt durch Addieren des ersten und des zweiten Teilergebnisses erzeugt.Example 8 includes the subject matter of any of Examples 1-7, wherein the second floating point arithmetic operator circuitry further includes an adder circuit that generates the scalar product by adding the first and second subtotals.

Beispiel 9 ist ein Verfahren zum Betreiben einer integrierten Schaltung, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt und Folgendes beinhaltet: Erzeugen eines ersten Teilergebnisses einer ersten Gleitkommagenauigkeit mit einem ersten spezialisierten Verarbeitungsblock, Bereitstellen des ersten Teilergebnisses an einem Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks, Empfangen des ersten Teilergebnisses über eine Kaskadenschaltung vom Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks an einem Kaskadeneingang eines zweiten spezialisierten Verarbeitungsblocks, Erzeugen eines zweiten Teilergebnisses mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor im zweiten spezialisierten Verarbeitungsblock und Erzeugen des Skalarprodukts durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses im zweiten spezialisierten Verarbeitungsblock.Example 9 is a method of operating an integrated circuit that generates a scalar product of a first and a second vector and includes: generating a first partial result of a first floating-point inaccuracy with a first specialized processing block, providing the first partial result at a cascade output of the first specialized processing block; Receiving a first partial result via a cascade connection from the cascade output of the first specialized processing block at a cascade input of a second specialized processing block, generating a second partial result with the first floating point precision based on a quaternary reduction of two tuples with a second floating point precision from both the first and second vectors in FIG second specialized processing block and generating the dot product by performing a binary reduction of the first and second partial results s in the second specialized processing block.

Beispiel 10 beinhaltet den Gegenstand des Beispiels 9, wobei das Erzeugen des zweiten Teilergebnisses ferner das Verwenden einer ersten Multipliziererschaltung zum Erzeugen eines ersten Produkts basierend auf einem ersten Tupel der beiden Tupel aus dem ersten Vektor und einem ersten Tupel der beiden Tupel aus dem zweiten Vektor, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist, und das Verwenden einer zweiten Multipliziererschaltung zum Erzeugen eines zweiten Produkts basierend auf einem zweiten Tupel der beiden Tupel aus dem ersten Vektor und einem zweiten Tupel der beiden Tupel aus dem zweiten Vektor, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist, beinhaltet.Example 10 includes the subject matter of the example 9 wherein generating the second partial result further comprises using a first multiplier circuit to generate a first product based on a first tuple of the two tuples from the first vector and a first tuple of the two tuples from the second vector, the first product having the second floating point precision and using a second multiplier circuit to generate a second product based on a second tuple of the two tuples from the first vector and a second tuple of the two tuples from the second vector, the second product having the second floating point precision.

Beispiel 11 beinhaltet den Gegenstand des Beispiels 10 und ferner das Verwenden einer Addiererschaltung zum Erzeugen einer Summe des ersten und des zweiten Produkts, wobei die Summe die zweite Gleitkommagenauigkeit aufweist. Example 11 includes the subject of the example 10 and further using an adder circuit to generate a sum of the first and second products, the sum having the second floating point precision.

Beispiel 12 beinhaltet den Gegenstand des Beispiels 11 und ferner das Verwenden einer Umwandlungsfunktionsschaltung, welche die Summe von der Addiererschaltung empfängt und das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit erzeugt.Example 12 includes the subject of the example 11 and further using a conversion function circuit that receives the sum from the adder circuit and generates the second partial result by converting the sum of the second floating-point inaccuracy to the first floating-point precision.

Beispiel 13 beinhaltet den Gegenstand des Beispiels 12 und ferner das Erhöhen der Exponentengröße der Summe von der zweiten auf die erste Gleitkommagenauigkeit mit der Umwandlungsfunktionsschaltung.Example 13 includes the subject matter of the example 12 and further increasing the exponent size of the sum of the second to the first floating point inaccuracy with the conversion function circuit.

Beispiel 14 beinhaltet den Gegenstand eines der Beispiele 12 oder 13 und ferner das Anpassen des Bias des Exponenten der Summe vom Bias der zweiten Gleitkommagenauigkeit an den Bias der zweiten Gleitkommagenauigkeit mit der Umwandlungsfunktionsschaltung.Example 14 includes the subject matter of any of Examples 12 or 13, and further adjusting the bias of the exponent of the sum of the second floating-point inaccuracy bias to the bias of the second floating-point inaccuracy with the conversion function circuit.

Beispiel 15 beinhaltet den Gegenstand eines der Beispiele 12 - 14 und ferner das Überbrücken der Umwandlungsfunktionsschaltung auf einem Überbrückungspfad, der die Addiererschaltung mit einem Ausgangsanschluss des zweiten spezialisierten Verarbeitungsblocks koppelt.Example 15 includes the subject matter of any of Examples 12-14 and further comprising bypassing the conversion function circuit on a bypass path that couples the adder circuit to an output terminal of the second specialized processing block.

Beispiel 16 ist ein nichttransitorisches maschinenlesbares Speichermedium, das mit Anweisungen zum Konfigurieren einer integrierten Schaltungsvorrichtung codiert ist, um ein Skalarprodukt eines ersten und eines zweiten Vektors zu erzeugen, wobei die integrierte Schaltungsvorrichtung einen ersten und einen zweiten spezialisierten Verarbeitungsblock beinhaltet, die durch eine Kaskadenschaltung gekoppelt sind, wobei der erste und der zweite spezialisierte Verarbeitungsblock jeder eine erste und eine zweite Gleitkommaarithmetikoperator-Schaltungsanordnung und eine konfigurierbare Verbindungsschaltungsanordnung beinhalten, wobei die Anweisungen Folgendes einschließen: Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock, um ein erstes Teilergebnis mit einer ersten Gleitkommagenauigkeit basierend auf einer ersten quaternären Reduktion erster zwei Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor zu erzeugen, Anweisungen zum Konfigurieren der konfigurierbaren Verbindungsschaltungsanordnung im ersten und zweiten spezialisierten Verarbeitungsblock, um das erste Teilergebnis von der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock über die Kaskadenschaltung zur zweiten Arithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock weiterzuleiten, Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock, um ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit basierend auf einer zweiten quaternären Reduktion zweiter zwei Tupel mit der zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor zu erzeugen, und Anweisungen zum Konfigurieren der zweiten Gleitkommaarithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock, um das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses zu erzeugen.Example 16 is a non-transitory machine-readable storage medium encoded with instructions for configuring an integrated circuit device to produce a scalar product of a first and a second vector, the integrated circuit device including first and second specialized processing blocks coupled by a cascade connection wherein the first and second specialized processing blocks each include first and second floating point arithmetic operator circuitry and configurable interconnect circuitry, the instructions including instructions for configuring the first floating point arithmetic operator circuitry in the first specialized processing block to provide a first partial result with a first Floating point inaccuracy based on a first quaternary reduction of the first two tuples with a second floating point inaccuracy from both the he to generate the first partial result from the first floating point arithmetic operator circuitry in the first specialized processing block through the cascade circuit to the second arithmetic operator circuitry in the second specialized processing block, Instructions for configuring the first floating point arithmetic operator circuitry in the second specialized processing block to produce a second partial result with the first floating point precision based on a second quaternary reduction of the second two tuples with the second floating point inaccuracy from both the first and second vectors, and instructions for configuring the second floating point arithmetic operator circuitry in the second specialized processing block to obtain the scalar product du To produce a binary reduction of the first and second partial results.

Beispiel 17 beinhaltet den Gegenstand des Beispiels 16 und ferner Anweisungen zum Erzeugen der Anweisungen aus Beispiel 16.Example 17 includes the subject matter of the example 16 and further instructions for generating the instructions of Example 16.

Beispiel 18 beinhaltet den Gegenstand eines der Beispiele 16 oder 17, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Folgendes beinhalten: Anweisungen zum Konfigurieren einer ersten Multipliziererschaltung, um ein erstes Produkt basierend auf einem ersten Tupel der ersten zwei Tupel aus dem ersten Vektor und einem ersten Tupel der ersten zwei Tupel aus dem zweiten Vektor zu erzeugen, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist, und Anweisungen zum Konfigurieren einer zweiten Multipliziererschaltung, um ein zweites Produkt basierend auf einem zweiten Tupel der ersten zwei Tupel aus dem ersten Vektor und einem zweiten Tupel der ersten zwei Tupel aus dem zweiten Vektor zu erzeugen, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist.Example 18 includes the subject matter of any of Examples 16 or 17, wherein the instructions for configuring the first floating-point arithmetic operator circuitry in the first specialized processing block further include instructions for configuring a first multiplier circuit to produce a first product based on a first tuple of the first two tuplets from the first vector and a first tuple of the first two tuples from the second vector, the first product having the second floating point precision, and instructions for configuring a second multiplier circuit to produce a second product based on a second tuple of the first two tuples generate the first vector and a second tuple of the first two tuples from the second vector, the second product having the second floating point precision.

Beispiel 19 beinhaltet den Gegenstand des Beispiels 18, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Anweisungen zum Konfigurieren einer Addiererschaltung beinhalten, um eine Summe des ersten und des zweiten Produkts zu erzeugen, wobei die Summe die zweite Gleitkommagenauigkeit aufweist.Example 19 includes the subject of the example 18 wherein the instructions for configuring the first floating point arithmetic operator circuitry in the first specialized processing block further include instructions for configuring an adder circuit to produce a sum of the first and second products, the sum having the second floating point precision.

Beispiel 20 beinhaltet den Gegenstand des Beispiels 19, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Anweisungen zum Konfigurieren einer Umwandlungsfunktionsschaltung beinhalten, um das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit zu erzeugen.Example 20 includes the subject of the example 19 wherein the instructions for configuring the first floating point arithmetic operator circuitry in the first specialized processing block further include instructions for configuring a conversion function circuit to generate the second partial result by converting the sum of the second floating point precision to the first floating point precision.

Beispiel 21 beinhaltet den Gegenstand des Beispiels 20 und ferner Anweisungen zum Erhöhen der Exponentengröße der Summe von der zweiten auf die erste Gleitkommagenauigkeit. Example 21 includes the subject of the example 20 and further instructions for increasing the exponent size of the sum of the second to the first floating point inaccuracy.

Beispiel 22 beinhaltet den Gegenstand eines der Beispiele 20 oder 21 und ferner Anweisungen zum Anpassen des Bias des Exponenten der Summe vom Bias der zweiten Gleitkommagenauigkeit auf den Bias der ersten Gleitkommagenauigkeit.Example 22 includes the subject matter of any of Examples 20 or 21, and further instructions for adjusting the bias of the exponent of the sum of the bias of the second floating-point inaccuracy to the bias of the first floating-point inaccuracy.

Beispiel 23 beinhaltet den Gegenstand des Beispiels 19, wobei die Anweisungen zum Konfigurieren der zweiten Gleitkommaarithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock, um das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses zu erzeugen, ferner Anweisungen zum Addieren des ersten und des zweiten Teilergebnisses beinhalten.Example 23 includes the subject matter of the example 19 wherein the instructions for configuring the second floating-point arithmetic operator circuitry in the second specialized processing block to generate the dot product by performing a binary reduction of the first and second part results further include instructions for adding the first and second part results.

Beispiel 24 ist eine integrierte Schaltung zum Erzeugen eines Skalarprodukts eines ersten und eines zweiten Vektors, einschließlich eines ersten spezialisierten Verarbeitungsblocks zum Bereitstellen eines ersten Teilergebnisses einer ersten Gleitkommagenauigkeit und eines zweiten spezialisierten Verarbeitungsblocks, der das erste Teilergebnis über eine Kaskadenschaltung vom ersten spezialisierten Verarbeitungsblock empfängt und erste Mittel zum Erzeugen eines zweiten Teilergebnisses mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor und zweite Mittel zum Erzeugen des Skalarprodukts durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses beinhaltet.Example 24 is an integrated circuit for generating a scalar product of a first and a second vector, including a first specialized processing block for providing a first partial result of a first floating point precision and a second specialized processing block receiving the first partial result from the first specialized processing block via a cascade connection and first Means for generating a second partial result having the first floating point inaccuracy based on a quaternary reduction of two tuples with a second floating point precision from both the first and second vectors and second means for generating the dot product by performing a binary reduction of the first and second partial results.

Beispiel 25 beinhaltet den Gegenstand des Beispiels 24 und ferner eine Speicherschaltung zum Speichern zumindest eines Tupels des ersten Vektors.Example 25 includes the subject of the example 24 and further a memory circuit for storing at least one tuple of the first vector.

Beispiel 26 beinhaltet den Gegenstand des Beispiels 25, wobei die Speicherschaltung ausgewählt ist aus der Gruppe, bestehend aus einer First-In First-Out-Schaltung, einer Last-In First-Out-Schaltung, einer Serial-In-Parallel-Out-Schieberegisterschaltung, einer Random-Access-Memory-Schaltung, einer Read-Only-Memory-Schaltung, einer Content-Addressable-Memory-Schaltung und einer Registerdatei.Example 26 includes the subject of the example 25 wherein the memory circuit is selected from the group consisting of a first-in first-out circuit, a last-in first-out circuit, a serial-in-parallel-out shift register circuit, a random access memory Circuit, a read-only memory circuit, a content-addressable memory circuit and a register file.

Beispiel 27 beinhaltet den Gegenstand eines der Beispiele 24 oder 25 und ferner eine konfigurierbare Verbindungsschaltungsanordnung, die Verbindungsressourcen zum Weiterleiten des ersten und zweiten Vektors zum ersten und zweiten spezialisierten Verarbeitungsblock beinhaltet.Example 27 includes the subject matter of any of Examples 24 or 25, and further comprising configurable connection circuitry that includes connection resources for forwarding the first and second vectors to the first and second specialized processing blocks.

Beispiel 28 beinhaltet den Gegenstand des Beispiels 27, wobei die Verbindungsressourcen außerhalb des ersten und des zweiten spezialisierten Verarbeitungsblocks ferner vertikale Verbindungsressourcen und horizontale Verbindungsressourcen beinhalten.Example 28 includes the subject matter of the example 27 wherein the connection resources outside the first and second specialized processing blocks further include vertical connection resources and horizontal connection resources.

Beispiel 29 beinhaltet den Gegenstand des Beispiels 28 und ferner eine Mehrzahl leitfähiger Leitungen.Example 29 includes the subject matter of the example 28 and further a plurality of conductive lines.

Beispiel 30 beinhaltet den Gegenstand des Beispiels 29 und ferner eine programmierbare Verbindung zwischen einer ersten leitfähigen Leitung der Mehrzahl leitfähiger Leitungen und einer zweiten leitfähigen Leitung der Mehrzahl leitfähiger Leitungen.Example 30 includes the subject of the example 29 and a programmable connection between a first conductive line of the plurality of conductive lines and a second conductive line of the plurality of conductive lines.

Beispiel 31 beinhaltet den Gegenstand eines der Beispiele 28 - 30, wobei die vertikalen und horizontalen Verbindungsressourcen Signale auf der integrierten Schaltung weiterleiten.Example 31 includes the subject matter of any of Examples 28-30, wherein the vertical and horizontal connection resources pass signals on the integrated circuit.

Beispiel 32 beinhaltet den Gegenstand des Beispiels 27, wobei die konfigurierbare Verbindungsschaltungsanordnung ferner eine Mehrzahl von Multiplexern beinhaltet.Example 32 includes the subject of the example 27 The configurable interconnect circuitry further includes a plurality of multiplexers.

Beispiel 33 beinhaltet den Gegenstand des Beispiels 32 und ferner einen Multiplexer aus der Mehrzahl von Multiplexern, der zwischen einem ersten Ausgang einer Umwandlungsfunktionsschaltung und einem zweiten Ausgang einer Multipliziererstufe wählt.Example 33 includes the subject of the example 32 and a multiplexer of the plurality of multiplexers that selects between a first output of a conversion function circuit and a second output of a multiplier stage.

Beispiel 34 beinhaltet den Gegenstand eines der Beispiele 24, 25 oder 27 und ferner einen programmierbaren Logikbereich.Example 34 includes the subject matter of any of Examples 24, 25, or 27 and further includes a programmable logic area.

Beispiel 35 beinhaltet den Gegenstand des Beispiels 34, wobei der programmierbare Logikbereich ferner eine Mehrzahl von Logikblöcken beinhaltet, die ausgewählt sind aus der Gruppe, bestehend aus Logik-Array-Blöcken und konfigurierbaren Logikblöcken.Example 35 includes the subject of the example 34 wherein the programmable logic area further includes a plurality of logic blocks selected from the group consisting of logic array blocks and configurable logic blocks.

Beispiel 36 beinhaltet den Gegenstand des Beispiels 35, wobei zumindest ein Logikblock aus der Mehrzahl von Logikblöcken ferner eine Mehrzahl von Logikblockkomponenten beinhaltet.Example 36 includes the subject of the example 35 wherein at least one logic block of the plurality of logic blocks further includes a plurality of logic block components.

Beispiel 37 beinhaltet den Gegenstand des Beispiels 36, wobei zumindest eine Logikblockkomponente aus der Mehrzahl von Logikblockkomponenten ausgewählt ist aus der Gruppe, bestehend aus einer Lookup-Tabellenschaltung, einem Register, einer Slice, einem zusätzlichen Addierer und einem Schieberegister.Example 37 includes the subject of the example 36 wherein at least one logic block component of the plurality of logic block components is selected from the group consisting of a lookup table circuit, a register, a slice, an additional adder, and a shift register.

Die oben beschriebenen Ausführungsformen sind zu Zwecken der Veranschaulichung und nicht der Begrenzung dargelegt, und die vorliegende Erfindung wird ausschließlich durch die folgenden Ansprüche begrenzt.The embodiments described above are presented for purposes of illustration and not of limitation, and the present invention is limited only by the following claims.

Claims (21)

Beansprucht wird:Claimed is: Integrierte Schaltung, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt, umfassend: einen ersten spezialisierten Verarbeitungsblock, der ein erstes Teilergebnis einer ersten Gleitkommagenauigkeit bereitstellt; und einen zweiten spezialisierten Verarbeitungsblock, der das erste Teilergebnis über eine Kaskadenschaltung vom ersten spezialisierten Verarbeitungsblock empfängt und Folgendes umfasst: eine erste Gleitkommaarithmetikoperator-Schaltungsanordnung, die ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor erzeugt, und eine zweite Gleitkommaarithmetikoperator-Schaltungsanordnung, die das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses erzeugt.An integrated circuit generating a scalar product of a first and a second vector, comprising: a first specialized processing block providing a first partial result of a first floating point inaccuracy; and a second specialized processing block that receives the first partial result via a cascade connection from the first specialized processing block and comprises: a first floating-point arithmetic operator circuit which generates a second partial result with the first floating-point precision based on a quaternary reduction of two tuples with a second floating-point accuracy from each of the first and second vectors, and a second floating point arithmetic operator circuit that generates the dot product by performing a binary reduction of the first and second part results. Integrierte Schaltung nach Anspruch 1, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner Folgendes umfasst: eine erste Multipliziererschaltung, die ein erstes Produkt basierend auf einem ersten Tupel der beiden Tupel aus dem ersten Vektor und einem ersten Tupel der beiden Tupel aus dem zweiten Vektor erzeugt, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist; und eine zweite Multipliziererschaltung, die ein zweites Produkt basierend auf einem zweiten Tupel der beiden Tupel aus dem ersten Vektor und einem zweiten Tupel der beiden Tupel aus dem zweiten Vektor erzeugt, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist.Integrated circuit after Claim 1 wherein the first floating point arithmetic operator circuitry further comprises: a first multiplier circuit that generates a first product based on a first tuple of the two tuples from the first vector and a first tuple of the two tuples from the second vector, wherein the first product is the second one Has floating point inaccuracy; and a second multiplier circuit that generates a second product based on a second tuple of the two tuples from the first vector and a second tuple of the two tuples from the second vector, the second product having the second floating point precision. Integrierte Schaltung nach Anspruch 2, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner Folgendes umfasst: eine Addiererschaltung, die eine Summe des ersten und des zweiten Produkts erzeugt, wobei die Summe die zweite Gleitkommagenauigkeit aufweist.Integrated circuit after Claim 2 wherein the first floating point arithmetic operator circuitry further comprises: an adder circuit that generates a sum of the first and second products, the sum having the second floating point precision. Integrierte Schaltung nach Anspruch 3, wobei die erste Gleitkommaarithmetikoperator-Schaltungsanordnung ferner Folgendes umfasst: eine Umwandlungsfunktionsschaltung, welche die Summe von der Addiererschaltung empfängt und das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit erzeugt.Integrated circuit after Claim 3 wherein the first floating point arithmetic operator circuitry further comprises: a conversion function circuit that receives the sum from the adder circuit and generates the second partial result by converting the sum of the second floating point inaccuracy to the first floating point precision. Integrierte Schaltung nach Anspruch 4, wobei die Umwandlungsfunktionsschaltung die Exponentengröße der Summe von der zweiten auf die erste Gleitkommagenauigkeit erhöht.Integrated circuit after Claim 4 wherein the conversion function circuit increases the exponent size of the sum from the second to the first floating point precision. Integrierte Schaltung nach Anspruch 4, wobei die Umwandlungsfunktionsschaltung den Bias des Exponenten der Summe vom Bias der zweiten Gleitkommagenauigkeit auf den Bias der zweiten Gleitkommagenauigkeit anpasst.Integrated circuit after Claim 4 wherein the conversion function circuit adjusts the bias of the exponent of the sum of the bias of the second floating-point inaccuracy to the bias of the second floating-point accuracy. Integrierte Schaltung nach Anspruch 4, wobei der zweite spezialisierte Verarbeitungsblock ferner Folgendes umfasst: einen Ausgangsanschluss, der mit der zweiten Gleitkommaarithmetikoperator-Schaltungsanordnung gekoppelt ist; und einen Überbrückungspfad zwischen der Addiererschaltung und dem Ausgangsanschluss, wobei der Überbrückungspfad die Umwandlungsfunktionsschaltung und die zweite Gleitkommaarithmetikoperator-Schaltungsanordnung überbrückt.Integrated circuit after Claim 4 wherein the second specialized processing block further comprises: an output port coupled to the second floating point arithmetic operator circuitry; and a bypass path between the adder circuit and the output terminal, the bypass path bypassing the conversion function circuit and the second floating point arithmetic operator circuitry. Integrierte Schaltung nach Anspruch 1, wobei die zweite Gleitkommaarithmetikoperator-Schaltungsanordnung ferner Folgendes umfasst: eine Addiererschaltung, die das Skalarprodukt durch Addieren des ersten und des zweiten Teilergebnisses erzeugt.Integrated circuit after Claim 1 wherein the second floating point arithmetic operator circuitry further comprises: an adder circuit that generates the scalar product by adding the first and second subtotals. Verfahren zum Betreiben einer integrierten Schaltung, die ein Skalarprodukt eines ersten und eines zweiten Vektors erzeugt, umfassend: Erzeugen eines ersten Teilergebnisses einer ersten Gleitkommagenauigkeit mit einem ersten spezialisierten Verarbeitungsblock; Bereitstellen des ersten Teilergebnisses an einem Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks; Empfangen des ersten Teilergebnisses über eine Kaskadenschaltung vom Kaskadenausgang des ersten spezialisierten Verarbeitungsblocks an einem Kaskadeneingang eines zweiten spezialisierten Verarbeitungsblocks; Erzeugen eines zweiten Teilergebnisses mit der ersten Gleitkommagenauigkeit basierend auf einer quaternären Reduktion zweier Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor im zweiten spezialisierten Verarbeitungsblock; und Erzeugen des Skalarprodukts durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses im zweiten spezialisierten Verarbeitungsblock.A method of operating an integrated circuit that generates a scalar product of a first and a second vector, comprising: Generating a first partial result of a first floating point precision with a first specialized processing block; Providing the first partial result to a cascade output of the first specialized processing block; Receiving the first partial result via a cascade connection from the cascade output of the first specialized processing block at a cascade input of a second specialized processing block; Generating a second partial result with the first floating point precision based on a quaternary reduction of two tuples with a second floating point precision from both the first and second vectors in the second specialized processing block; and Generating the dot product by performing a binary reduction of the first and second part results in the second specialized processing block. Verfahren nach Anspruch 9, wobei das Erzeugen des zweiten Teilergebnisses ferner Folgendes umfasst: Verwenden einer ersten Multipliziererschaltung, um ein erstes Produkt basierend auf einem ersten Tupel der beiden Tupel aus dem ersten Vektor und einem ersten Tupel der beiden Tupel aus dem zweiten Vektor zu erzeugen, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist; und Verwenden einer zweiten Multipliziererschaltung, um ein zweites Produkt basierend auf einem zweiten Tupel der beiden Tupel aus dem ersten Vektor und einem zweiten Tupel der beiden Tupel aus dem zweiten Vektor zu erzeugen, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist.Method according to Claim 9 wherein generating the second partial result further comprises: using a first multiplier circuit to generate a first product based on a first tuple to generate the two tuples from the first vector and a first tuple of the two tuples from the second vector, the first product having the second floating point inaccuracy; and using a second multiplier circuit to generate a second product based on a second tuple of the two tuples from the first vector and a second tuple of the two tuples from the second vector, the second product having the second floating point precision. Verfahren nach Anspruch 10, ferner umfassend: Verwenden einer Addiererschaltung, um eine Summe des ersten und des zweiten Produkts zu erzeugen, wobei die Summe die zweite Gleitkommagenauigkeit aufweist.Method according to Claim 10 , further comprising: using an adder circuit to generate a sum of the first and second products, the sum having the second floating point precision. Verfahren nach Anspruch 11, ferner umfassend: Verwenden einer Umwandlungsfunktionsschaltung, welche die Summe von der Addiererschaltung empfängt und das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit erzeugt. Method according to Claim 11 further comprising: using a conversion function circuit which receives the sum from the adder circuit and generates the second partial result by converting the sum of the second floating-point inaccuracy to the first floating-point precision. Verfahren nach Anspruch 12, ferner umfassend: Erhöhen der Exponentengröße der Summe von der zweiten auf die erste Gleitkommagenauigkeit mit der Umwandlungsfunktionsschaltung.Method according to Claim 12 , further comprising: increasing the exponent size of the sum from the second to the first floating point inaccuracy with the conversion function circuit. Verfahren nach Anspruch 12, ferner umfassend: Anpassen des Bias des Exponenten der Summe vom Bias der zweiten Gleitkommagenauigkeit auf den Bias der zweiten Gleitkommagenauigkeit mit der Umwandlungsfunktionsschaltung.Method according to Claim 12 , further comprising: adjusting the bias of the exponent of the sum of the bias of the second floating-point precision on the bias of the second floating-point precision with the conversion function circuit. Verfahren nach Anspruch 12, ferner umfassend: Überbrücken der Umwandlungsfunktionsschaltung auf einem Überbrückungspfad, der die Addiererschaltung mit einem Ausgangsanschluss des zweiten spezialisierten Verarbeitungsblocks koppelt.Method according to Claim 12 , further comprising: bypassing the conversion function circuit on a bypass path that couples the adder circuit to an output terminal of the second specialized processing block. Nichttransitorisches maschinenlesbares Speichermedium, das mit Anweisungen zum Konfigurieren einer integrierten Schaltung konfiguriert ist, um ein Skalarprodukt eines ersten und eines zweiten Vektors zu erzeugen, wobei die integrierte Schaltung einen ersten und einen zweiten spezialisierten Verarbeitungsblock beinhaltet, die durch eine Kaskadenschaltung gekoppelt sind, wobei der erste und der zweite spezialisierte Verarbeitungsblock jeweils eine erste und eine zweite Gleitkommaarithmetikoperator-Schaltungsanordnung und eine konfigurierbare Verbindungsschaltungsanordnung umfassen, wobei die Anweisungen Folgendes umfassen: Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock, um ein erstes Teilergebnis mit einer ersten Gleitkommagenauigkeit basierend auf einer ersten quaternären Reduktion erster zwei Tupel mit einer zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor zu erzeugen; Anweisungen zum Konfigurieren der konfigurierbaren Verbindungsschaltungsanordnung im ersten und im zweiten spezialisierten Verarbeitungsblock, um das erste Teilergebnis von der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock über die Kaskadenschaltung zur zweiten Arithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock weiterzuleiten; Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock, um ein zweites Teilergebnis mit der ersten Gleitkommagenauigkeit basierend auf einer zweiten quaternären Reduktion zweiter zwei Tupel mit der zweiten Gleitkommagenauigkeit aus sowohl dem ersten als auch dem zweiten Vektor zu erzeugen; und Anweisungen zum Konfigurieren der zweiten Gleitkommaarithmetikoperator-Schaltungsanordnung im zweiten spezialisierten Verarbeitungsblock, um das Skalarprodukt durch Ausführen einer binären Reduktion des ersten und des zweiten Teilergebnisses zu erzeugen.A non-transitory machine-readable storage medium configured with instructions for configuring an integrated circuit to produce a scalar product of a first and a second vector, the integrated circuit including first and second specialized processing blocks coupled by a cascade connection, the first one and the second specialized processing block comprises respective first and second floating point arithmetic operator circuitry and configurable interconnect circuitry, the instructions comprising: Instructions for configuring the first floating point arithmetic operator circuitry in the first specialized processing block to produce a first partial result having a first floating point precision based on a first quaternary reduction of the first two tuples with a second floating point precision from both the first and second vectors; Instructions for configuring the configurable interconnect circuitry in the first and second specialized processing blocks to pass the first partial result from the first floating point arithmetic operator circuitry in the first specialized processing block through the cascade circuit to the second arithmetic operator circuitry in the second specialized processing block; Instructions for configuring the first floating-point arithmetic operator circuitry in the second specialized processing block to produce a second partial result with the first floating-point precision based on a second quaternary reduction of the second two-tuples with the second floating-point precision from both the first and second vectors; and Instructions for configuring the second floating point arithmetic operator circuitry in the second specialized processing block to generate the dot product by performing a binary reduction of the first and second part results. Nichttransitorisches maschinenlesbares Speichermedium nach Anspruch 16, ferner umfassend: Anweisungen zum Erzeugen der Anweisungen nach Anspruch 16.Non-transitory machine-readable storage medium according to Claim 16 , further comprising: instructions for generating the instructions Claim 16 , Nichttransitorisches maschinenlesbares Speichermedium nach Anspruch 16, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Folgendes umfassen: Anweisungen zum Konfigurieren einer ersten Multipliziererschaltung, um ein erstes Produkt basierend auf einem ersten Tupel der ersten zwei Tupel aus dem ersten Vektor und einem ersten Tupel der ersten zwei Tupel aus dem zweiten Vektor zu erzeugen, wobei das erste Produkt die zweite Gleitkommagenauigkeit aufweist; und Anweisungen zum Konfigurieren einer zweiten Multipliziererschaltung, um ein zweites Produkt basierend auf einem zweiten Tupel der ersten zwei Tupel aus dem ersten Vektor und einem zweiten Tupel der ersten zwei Tupel aus dem zweiten Vektor zu erzeugen, wobei das zweite Produkt die zweite Gleitkommagenauigkeit aufweist.Non-transitory machine-readable storage medium according to Claim 16 wherein the instructions for configuring the first floating-point arithmetic operator circuitry in the first specialized processing block further include instructions for configuring a first multiplier circuit to generate a first product based on a first tuple of the first two tuples from the first vector and a first tuple of the first two Generate tuples from the second vector, the first product having the second floating point inaccuracy; and instructions for configuring a second multiplier circuit to generate a second product based on a second tuple of the first two tuples from the first vector and a second tuple of the first two tuples from the second vector, the second product having the second floating point precision. Nichttransitorisches maschinenlesbares Speichermedium nach Anspruch 18, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Folgendes umfassen: Anweisungen zum Konfigurieren einer Addiererschaltung, um eine Summe des ersten und des zweiten Produkts zu erzeugen, wobei die Summe die zweite Gleitkommagenauigkeit aufweist.Non-transitory machine-readable storage medium according to Claim 18 , where the Instructions for configuring the first floating point arithmetic operator circuitry in the first specialized processing block further include: instructions for configuring an adder circuit to produce a sum of the first and second products, the sum having the second floating point precision. Nichttransitorisches maschinenlesbares Speichermedium nach Anspruch 19, wobei die Anweisungen zum Konfigurieren der ersten Gleitkommaarithmetikoperator-Schaltungsanordnung im ersten spezialisierten Verarbeitungsblock ferner Folgendes umfassen: Anweisungen zum Konfigurieren einer Umwandlungsfunktionsschaltung, um das zweite Teilergebnis durch Konvertieren der Summe von der zweiten Gleitkommagenauigkeit in die erste Gleitkommagenauigkeit zu erzeugen.Non-transitory machine-readable storage medium according to Claim 19 wherein the instructions for configuring the first floating-point arithmetic operator circuitry in the first specialized processing block further include instructions for configuring a conversion function circuit to generate the second partial result by converting the sum of the second floating-point inaccuracy to the first floating-point precision.
DE102018108431.5A 2017-04-12 2018-04-10 MIXING ACCURACY COMPROMISE METHOD CIRCUIT ARRANGEMENT IN SPECIALIZED PROCESSING BLOCKS Pending DE102018108431A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/485,248 US10175944B2 (en) 2017-04-12 2017-04-12 Mixed-precision floating-point arithmetic circuitry in specialized processing blocks
US15/485,248 2017-04-12

Publications (1)

Publication Number Publication Date
DE102018108431A1 true DE102018108431A1 (en) 2018-10-18

Family

ID=63679210

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018108431.5A Pending DE102018108431A1 (en) 2017-04-12 2018-04-10 MIXING ACCURACY COMPROMISE METHOD CIRCUIT ARRANGEMENT IN SPECIALIZED PROCESSING BLOCKS

Country Status (3)

Country Link
US (2) US10175944B2 (en)
CN (1) CN108694038A (en)
DE (1) DE102018108431A1 (en)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568223B2 (en) * 2017-04-14 2023-01-31 Semiconductor Energy Laboratory Co., Ltd. Neural network circuit
US11062202B2 (en) * 2018-07-25 2021-07-13 Cerebras Systems Inc. Numerical representation for neural networks
WO2020046642A1 (en) 2018-08-31 2020-03-05 Flex Logix Technologies, Inc. Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array
CN109634558B (en) * 2018-12-12 2020-01-14 上海燧原科技有限公司 Programmable mixed precision arithmetic unit
US10963219B2 (en) * 2019-02-06 2021-03-30 International Business Machines Corporation Hybrid floating point representation for deep learning acceleration
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
CN110069240B (en) * 2019-04-30 2021-09-03 北京探境科技有限公司 Fixed point and floating point data calculation method and device
GB2581542A (en) * 2019-07-19 2020-08-26 Imagination Tech Ltd Apparatus and method for processing floating-point numbers
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
CN115934030B (en) * 2020-01-20 2024-01-16 华为技术有限公司 Arithmetic logic unit, method and equipment for floating point number multiplication
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
JP7391774B2 (en) 2020-06-11 2023-12-05 株式会社東芝 Arithmetic processing device, information processing device, and arithmetic processing method
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
US20220206801A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions
CN113010148B (en) * 2021-02-09 2022-11-11 南方科技大学 Fixed-point multiply-add operation unit and method suitable for mixed precision neural network
CN112527239B (en) * 2021-02-10 2021-05-07 北京微核芯科技有限公司 Floating point data processing method and device
CN112817559B (en) * 2021-02-25 2022-09-13 上海壁仞智能科技有限公司 Computing device and method for floating point number computation
EP4231134A1 (en) * 2022-02-17 2023-08-23 Imagination Technologies Limited Method and system for calculating dot products
GB2615773B (en) * 2022-02-17 2024-02-14 Imagination Tech Ltd Method and system for calculating dot products
GB2615774A (en) * 2022-02-17 2023-08-23 Imagination Tech Ltd Method and system for calculating dot products

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825400A (en) * 1986-01-13 1989-04-25 General Electric Company Floating point accumulator circuit
US6081821A (en) * 1993-08-05 2000-06-27 The Mitre Corporation Pipelined, high-precision fast fourier transform processor
US5630160A (en) * 1995-03-08 1997-05-13 Texas Instruments Incorporated Floating point exponent compare using repeated two bit compare cell
US6247036B1 (en) * 1996-01-22 2001-06-12 Infinite Technology Corp. Processor with reconfigurable arithmetic data path
US6163791A (en) * 1998-02-02 2000-12-19 International Business Machines Corporation High accuracy estimates of elementary functions
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US8301681B1 (en) * 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US7912887B2 (en) * 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
US8051123B1 (en) * 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
US9164728B1 (en) 2012-05-15 2015-10-20 Altera Corporation Ternary DSP block
US9207908B1 (en) 2013-01-29 2015-12-08 Altera Corporation Digital signal processing blocks with embedded arithmetic circuits

Also Published As

Publication number Publication date
US10175944B2 (en) 2019-01-08
US10521194B2 (en) 2019-12-31
US20190196786A1 (en) 2019-06-27
CN108694038A (en) 2018-10-23
US20180300105A1 (en) 2018-10-18

Similar Documents

Publication Publication Date Title
DE102018108431A1 (en) MIXING ACCURACY COMPROMISE METHOD CIRCUIT ARRANGEMENT IN SPECIALIZED PROCESSING BLOCKS
DE112017004287T5 (en) DENORMALIZATION IN A MULTI-FREQUENCY SLIDING COMBINATION CIRCUIT ARRANGEMENT
US10318241B2 (en) Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
DE102020113922A1 (en) MULTIPLE CIRCUIT ARRANGEMENT WITH REDUCED LATENCY FOR VERY LARGE NUMBERS
US10613831B2 (en) Methods and apparatus for performing product series operations in multiplier accumulator blocks
DE69832985T2 (en) Multiply-accumulator circuits
Clarke et al. Spectral transforms for large Boolean functions with applications to technology mapping
DE10085322B4 (en) Circuit arrangement, method and data processing device for performing a one-cycle addition or subtraction and a comparison in arithmetic redundant form
DE212007000102U1 (en) Reconfigurable array processor for floating-point operations
DE102020120371A1 (en) INTEGRATED CIRCUITS WITH MODULAR MULTIPLICATION CIRCUITS
DE19540102A1 (en) Floating point arithmetic unit with logic for a fourfold precision arithmetic
DE102019120838A1 (en) Dynamic floating point range expansion
DE2658248C2 (en)
CN109643226A (en) Variable precision floating-point adder and subtracter
DE112018000140T5 (en) Merged multiply-add floating point operations on 128 bit wide operands
DE102020131925A1 (en) GLEITKOMMA DISASSEMBLY CIRCUIT ARRANGEMENT DYNAMIC ACCURACY
US10489116B1 (en) Programmable integrated circuits with multiplexer and register pipelining circuitry
US8543634B1 (en) Specialized processing block for programmable integrated circuit device
WO2009062496A1 (en) Reconfigurable floating-point and bit level data processing unit
DE3434777C2 (en)
DE60316342T2 (en) MULTIPLIER WITH ADDENDUM TABLES
DE102013212840B4 (en) Model calculation unit and control unit for calculating a data-based function model with data in various number formats
EP0130397B1 (en) Digital computing apparatus
EP0489952B1 (en) Circuit device for digital bit-serial signal processing
DE10206830B4 (en) Method and arrangement for merging data from parallel data paths