DE112018000138T5 - Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten skalaren Ergebnisses - Google Patents

Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten skalaren Ergebnisses Download PDF

Info

Publication number
DE112018000138T5
DE112018000138T5 DE112018000138.5T DE112018000138T DE112018000138T5 DE 112018000138 T5 DE112018000138 T5 DE 112018000138T5 DE 112018000138 T DE112018000138 T DE 112018000138T DE 112018000138 T5 DE112018000138 T5 DE 112018000138T5
Authority
DE
Germany
Prior art keywords
reconfigurable
unit
result
units
intermediate result
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.)
Granted
Application number
DE112018000138.5T
Other languages
English (en)
Other versions
DE112018000138B4 (de
Inventor
Cedric Lichtenau
Michael Klein
Nicol Hofmann
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018000138T5 publication Critical patent/DE112018000138T5/de
Application granted granted Critical
Publication of DE112018000138B4 publication Critical patent/DE112018000138B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

Eine Schaltung enthält rekonfigurierbare Einheiten, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der rekonfigurierbaren Einheiten wird mit einem zweiten Zwischenergebnis der zweiten rekonfigurierbaren Einheit der rekonfigurierbaren Einheiten ausgetauscht. Die erste rekonfigurierbare Einheit berechnet einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses. Die zweite rekonfigurierbare Einheit der rekonfigurierbaren Einheiten berechnet einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses.

Description

  • HINTERGRUND
  • Die Offenbarung bezieht sich im Allgemeinen auf eine Auslegung einer Prozessorarithmetik und insbesondere auf ein Verbinden von Ausführungseinheiten, um ein einzelnes breites skalares Ergebnis zu berechnen.
  • Bei modernen Chip-/Kernausgestaltungen ist es möglich, neu entstehende Arbeitslasten wie die kognitive Datenverarbeitung (cognitive computing) zu verarbeiten. Für diese derzeit aufkommenden Arbeitslasten ist jedoch eine enorme Rechenleistung mit unterschiedlichen Anforderungen je nach behandeltem Problem erforderlich, und die Berechnung variiert zwischen mathematischen Berechnungen mit außerordentlich geringer Genauigkeit und sehr hoher Genauigkeit. Die unterschiedlichen Anforderungen erschweren die moderne Chip-/Kernausgestaltung, wenn es darum geht, eine Universaleinheit zu entwickeln. Zu diesen Schwierigkeiten gehört, ein Gleichgewicht zwischen einigen wenigen Einheiten mit hoher Genauigkeit, die nicht den gewünschten Durchsatz mit geringerer Genauigkeit bereitstellen, und vielen Einheiten mit geringer Genauigkeit herzustellen, die einen hohen Software-Aufwand erforderlich machen, um komplexe Berechnungen mit hoher Genauigkeit durchzuführen.
  • KURZDARSTELLUNG
  • Gemäß einer oder mehreren Ausführungsformen wird eine Schaltung bereitgestellt. Die Schaltung weist eine Mehrzahl von rekonfigurierbaren Einheiten auf, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten wird mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht. Die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses. Die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses.
  • Gemäß einer oder mehreren Ausführungsformen wird ein System bereitgestellt. Das System weist einen Prozessor und einen Speicher auf. Der Prozessor weist eine Mehrzahl von rekonfigurierbaren Einheiten auf, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten wird mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht. Die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses. Die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten berechnet einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses.
  • Gemäß einer oder mehreren Ausführungsformen wird ein Verfahren bereitgestellt. Das Verfahren wird von einem Prozessor umgesetzt, der eine Mehrzahl von rekonfigurierbaren Einheiten aufweist, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen. Das Verfahren weist ein Austauschen eines ersten Zwischenergebnisses einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten auf. Das Verfahren weist ein Berechnen eines ersten Teils des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses durch die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten sowie ein Berechnen eines zweiten Teils des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses durch die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten auf.
  • Figurenliste
  • Der Gegenstand wird in den Ansprüchen am Ende der Beschreibung besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und andere Merkmale und Vorteile der Ausführungsformen hierin ergeben sich aus der nachfolgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen, in denen:
    • 1 ein System gemäß einer oder mehreren Ausführungsformen zeigt;
    • 2 ein Umsetzungsbeispiel eines Systems gemäß einer oder mehreren Ausführungsformen zeigt;
    • 3 einen Prozessablauf eines Systems gemäß einer oder mehreren Ausführungsformen zeigt;
    • 4 ein Umsetzungsbeispiel eines Systems gemäß einer oder mehreren Ausführungsformen zeigt; und
    • 5 ein System gemäß einer oder mehreren Ausführungsformen zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Allgemeinen handelt es sich bei der parallelen Datenverarbeitung um eine Art von Berechnung, bei der viele Berechnungen und/oder Prozesse gleichzeitig durchgeführt werden, um große Probleme zu lösen. Zu Beispielen für große Probleme gehören das Modellieren der Milchstraßengalaxie, das Aufbauen und Trainieren von Modellen für die kognitive Datenverarbeitung, das Durchführen von Berechnungen im Bereich der Krebsforschung, das Darstellen dreidimensionaler Aminationen usw. Bei der parallelen Datenverarbeitung werden große Probleme in kleinere Berechnungen unterteilt, die dann gleichzeitig gelöst werden können. Je nach Problem (und Algorithmus) ist eine Arithmetik mit niedriger oder hoher Genauigkeit oder eine Mischung aus beidem erforderlich. Es gibt mehrere unterschiedliche parallele Datenverarbeitungsformen (z.B. moderne Chip-/Kernausgestaltungen), die jeweils Nachteile aufweisen.
  • So ist beispielsweise eine moderne System-on-a-Chip-Ausgestaltung für große und kleine Kerne, die in einer mobilen Einheit verwendet wird, bei der Leistung wichtiger als die Siliciumfläche ist, für High-End-Serverchips nicht erschwinglich, bei denen die Fläche auch ein Thema ist, da Chips eine bestimmte physische Größe nicht überschreiten können. Ein moderner Kernchip mit hoher Genauigkeit, der mit Grafikverarbeitungseinheiten verbunden werden kann, um zahlreiche Kerne mit einer Arithmetik von niedriger Genauigkeit bereitzustellen, weist auch einen großen Leistungsnachteil in Bezug auf den relativen „Abstand“ (in Zyklen) und die Bandbreite zwischen diesen Kernen mit niedriger Genauigkeit und dem modernen Kernchip mit hoher Genauigkeit auf. Ein weiterer Ansatz für einen Kernchip mit hoher Leistung besteht darin, die Größe der Recheneinheit mit hoher Genauigkeit auf dem Kern zu minimieren, um so viele Kerne wie möglich aufzunehmen. Damit ist das Problem des Gleichgewichts zwischen der Rechenanforderung nach hoher Genauigkeit und niedriger Genauigkeit noch nicht grundlegend gelöst.
  • Kommen wir nun zu einem Überblick über die Aspekte der vorliegenden Erfindung, wobei die hierin offenbarten Ausführungsformen ein System, ein Verfahren und/oder ein Computerprogrammprodukt (hierin System) beinhalten können, das SIMD-Einheiten (SIMD = single instruction, multiple data = einzelne Anweisung, mehrere Daten) zusammenfasst, um eine einzelne komplexe Rechenoperation mit hoher Genauigkeit zu berechnen, indem Teilergebnisse zwischen den SIMD-Einheiten ausgetauscht werden. SIMD-Einheiten weisen mehrere Verarbeitungselemente auf, die dieselbe Operation an mehreren Datenpunkten gleichzeitig ausführen können. Zu den technischen Auswirkungen und Vorteilen des Systems gehört, einen Aufbau von hocheffizienten kleinen Blöcken mit geringer Genauigkeit für einen Scale-Out-Markt zu ermöglichen, während gleichzeitig die Fähigkeit erhalten bleibt, komplexe Arithmetik mit hoher Genauigkeit (Multiplikation-Addition mit hoher Genauigkeit) durchzuführen. Zu den technischen Auswirkungen und Vorteilen des Systems zählt die Möglichkeit, den sich daraus ergebenden Verschaltungsaufwand und/oder die Verzögerung durch die Parallelverarbeitung der SIMD-Einheiten zu begrenzen und auszublenden. Daher sind die hierin beschriebenen Ausführungsformen notwendigerweise in einem Prozessor des Systems verankert, um proaktive Operationen zum Lösen von Problemen durchzuführen, die speziell im Bereich der Auslegung der Prozessorarithmetik auftreten (z.B. beinhalten diese Probleme ein Gleichgewicht zwischen einigen wenigen Einheiten mit hoher Genauigkeit und zahlreichen Einheiten mit geringer Genauigkeit angesichts unterschiedlicher großer Anforderungen an die Rechengenauigkeit).
  • Mit Bezug nunmehr auf 1 fast ein System 100 n kleine x-Bit-Einheiten mit geringer Genauigkeit (SIMD-Einheiten 120.0 ... 120.n-1, wobei n eine ganze Zahl größer als null ist) zusammen, um eine einzelne komplexe Rechenoperation mit hoher Genauigkeit zu berechnen (z.B. bis zu n*x-Bits, wobei x eine ganze Zahl größer als null ist), indem Teilergebnisse zwischen den n kleinen x-Bit-Einheiten mit niedriger Genauigkeit ausgetauscht werden (siehe Pfeile 140). Das System 100 kann für arithmetische Multiplikationsoperationen und/oder Multiplikations-Additions-Operationen verwendet werden (d.h., durch diese Operationen mit einer Multiplikation unterscheidet sich das System 100 von einer einfachen Übertragweiterleitung (carry propagation) zwischen den SIMD-Einheiten).
  • Die SIMD-Einheiten 120.0 ... 120.n-1 sind zum Beispiel rekonfigurierbar, um mehrere Multiplikationen von x-Bit breiten Zahlen zu berechnen und 2*x-Bit-Ergebnisse zu addieren, um das zusammengefasste Ergebnis zu bilden. Bei dem zusammengefassten Ergebnis kann es sich um ein einzelnes breites komplexes skalares Ergebnis mit höherer Genauigkeit oder um einen Teil des einzelnen breiten komplexen skalaren Ergebnisses mit höherer Genauigkeit handeln. Es ist zu beachten, dass die Zusammenfassung der SIMD-Einheit 120.0 ... 120.n-1 die parallele (d.h. nicht sequenzielle) Berechnung des breiten Ergebnisses ermöglicht.
  • Weiterhin ist jede SIMD-Einheit 120.0 ... 120.n-1 rekonfigurierbar, um ein 2*x-Bit-Akkumulatorergebnis zu dem zusammengefassten Ergebnis zu addieren. Gemäß einer nichteinschränkenden Ausführungsform kann eine Gruppe von vier SIMD-Einheiten die Ausführung von komplexen Rechenoperation mit viermal einfacher Genauigkeit, zweimal zweifacher Genauigkeit und einmal vierfacher Genauigkeit bereitstellen, die eine Multiplikationsoperation aufweist, ohne darauf beschränkt zu sein.
  • Die SIMD-Einheiten 120 des Systems 100 können beispielsweise x-Bit-Einheiten aufweisen, die n x-Bit-Eingangsoperanden (siehe Pfeile 141) oder n*x-Bit-Eingangsoperanden (durch Block 150 dargestellt) empfangen. Die komplexe Rechenoperation wird von den SIMD-Einheiten 120 auf diesen Operanden durchgeführt.
  • Während der komplexen Rechenoperation tauscht jede der SIMD-Einheiten 120 die Zwischenergebnisse aus (siehe Pfeile 140). Wenn n gleich zwei ist, kann eine der SIMD-Einheiten 120 (z.B. SIMD-Einheit 120.0) in einer nichteinschränkenden Ausführungsform einen hochwertigen Teil (high order portion) der komplexen Rechenoperation durchführen, die zu einem ersten Zwischenergebnis führt, und eine andere SIMD-Einheit 120 (z.B. SIMD-Einheit 120.1) kann einen niedrigwertigen Teil (low order portion) der komplexen Rechenoperation durchführen, die zu einem zweiten Zwischenergebnis führt.
  • Die Teilergebnisse werden verwendet, um jeden Teil eines Endergebnisses 160 zu berechnen, bei dem es sich um ein skalares n*x-Bit-Ergebnis handeln kann (siehe Pfeile 151). Die SIMD-Einheit 120.0 kann weiterhin in der nichteinschränkenden Ausführungsform einen Teil des Zwischenergebnisses von der SIMD-Einheit 120.1 verwenden, um einen hochwertigen Teil des Endergebnisses 160 zu erzeugen. Die SIMD-Einheit 120.1 kann einen Teil des Zwischenergebnisses von der SIMD-Einheit 120.0 verwenden, um einen niedrigwertigen Teil des Endergebnisses 160 zu erzeugen. Die niedrigwertigen und hochwertigen Teile werden anschließend verknüpft (zusammengefasst), um das Endergebnis 160 zu erzeugen.
  • Mit Bezug nunmehr auf 2 wird ein Umsetzungsbeispiel des Systems 100 gemäß einer oder mehreren Ausführungsformen gezeigt. Das Umsetzungsbeispiel wird als ein System 200 gezeigt, das eine erste Recheneinheit 201 und eine zweite Recheneinheit 202 aufweist (z.B. binäre Gleitkomma-Recheneinheiten), die jeweils eine Multiplikations-Additions-Rechenschaltung aufweisen. Jede der Multiplikations-Additions-Rechenschaltungen der ersten und zweiten Recheneinheit 201 bzw. 202 weist die Multiplikatoren 205 und 206 (z.B. Summen- und Übertragmultiplikatoren), die ersten Addierer 213 und 214 (z.B. eingebundene Addierer), die zweiten Addierer 217 und 218, die Formatierer 221 und 222 (z.B. Normalisierer und Runder) sowie die Multiplexer 225 und 226 auf.
  • Gemäß einer nichteinschränken Ausführungsform wird nun mit Bezug auf einen Prozessablauf 300 von 3 ein Arbeitsablauf des Systems 200 beschrieben. Der Prozessablauf 300 beschreibt zwar Operationen aus Sicht der ersten Recheneinheit 201, doch ist zu beachten, dass ähnliche Operationen parallel in der zweiten Recheneinheit 202 durchgeführt werden.
  • Bei jeder der Datenelement-Rechenblöcke mit niedriger Genauigkeit (z.B. die Recheneinheiten 201 und 202) handelt es sich um einen Rechenblock mit niedriger Genauigkeit, der ein Ergebnis in einem der Datenelemente der SIMD (mehrere Datenelemente, einzelne Anweisung) berechnet. Die Zwischenergebnisse dieser Datenelement-Rechenblöcke mit niedriger Genauigkeit (z.B. Recheneinheiten 201 und 202) werden ausgetauscht und zusammengefasst, um ein Datenergebnis mit hoher Genauigkeit zu berechnen.
  • Der Prozessablauf 300 beginnt bei Block 305, wo das System 200 einen Satz Operanden in der ersten Recheneinheit 201 empfängt. Der Operandensatz kann mindestens drei Operanden A, B und C enthalten. In diesem Beispiel verwaltet die erste Recheneinheit 201 die hochwertigen Bits dieser drei Operanden A, B und C. Wie in 2 dargestellt, empfängt die erste Recheneinheit 201 AHOCH , BHOCH und CHOCH . Wenn jeder Operand A, B und C in einer nichteinschränken Ausführungsform aus 2x-Bits besteht (z.B. 128 Bits), werden die hochwertigen Bits gleichmäßig in x-Bits aufgeteilt (z.B. 64 Bits). Bei Block 310 multipliziert der Multiplikator 205 des Systems einen ersten Operanden (z.B. AHOCH ) bzw. einen zweiten Operanden (z.B. CHOCH ) des Operandensatzes, um ein Produkt zu bilden. Wie in 2 gezeigt, multipliziert der Multiplikator 205 AHOCH und CHOCH , was zu einem ersten 2x-Bit-Produkt (z.B. 128-Bit-Produkt) und einem zweiten 2x-Bit-Produkt führt.
  • Es ist anzumerken, dass das System 200 in einer nichteinschränkenden Ausführungsform das Produkt addieren kann (z.B. das erste und das zweite 2x-Bit-Produkt), um eine Summe zu bilden. Bei Block 320 hängt das System 200 „Null“-Bits an einen dritten Operanden (z.B. BHOCH ) des Operandensatzes an, um eine Übereinstimmung mit der Breite des Produkts zu erzielen (und einen erweiterten dritten Operanden zu bilden). Es ist anzumerken, dass die Anhängeoperation zu einer 2x-Bit-Zahl für die zweite Summe führt und dass die Anhängeoperation im ersten Addierer 213 stattfinden kann (z.B. drei Eingangs- und Ausgangsaddierer). Wie zum Beispiel in 2 gezeigt, addiert der erste Addierer 213 das erste und das zweite 2x-Bit-Produkt, um eine erste 2x-Bit-Summe zu bilden, und der erste Addierer 213 addiert BHOCH und „Null“-Bits, um eine zweite 2x-Bit-Summe zu bilden.
  • Bei Block 325 addiert das System 200 das Produkt und den erweiterten dritten Operanden, um ein Zwischenergebnis zu bilden. Es sei darauf hingewiesen, dass es sich bei dem Zwischenergebnis um eine 2x-Bit-Zahl handeln kann. Bei Block 330 tauscht das System 200 einen Teil des Zwischenergebnisses mit einer zweiten Recheneinheit 202 aus. Wie zum Beispiel in 2 gezeigt, addiert der zweite Addierer 213 die erste und die zweite 2x-Bit-Summe, um ein Zwischenergebnis zu bilden. Ein Teil des Zwischenergebnisses vom zweiten Addierer 213 wird der zweiten Recheneinheit 202 bereitgestellt. Zusätzlich wird ein Teil eines Zwischenergebnisses vom zweiten Addierer 214 der ersten Recheneinheit 201 bereitgestellt. Auf diese Art und Weise werden Teile jedes Zwischenergebnisses ausgetauscht. Es ist anzumerken, dass 2 die niedrigwertigen x-Bits (z.B. 64 L, RNIEDRIG ) des Zwischenergebnisses von der ersten binären Gleitkommaeinheit 201 zeigt, die mit den hochwertigen x-Bits (z.B. 64 H, RHOCH ) des Zwischenergebnisses von der zweiten binären Gleitkommaeinheit 202 ausgetauscht werden. Auf diese Weise werden Teilergebnisse (z.B. RHOCH und RNIEDRIG ) verwendet, um breite Ergebnisse für Multiplikation und/oder Multiplikation-Addition zu berechnen.
  • Bei Block 335 addiert das System 200 den Teil des Zwischenergebnisses und einen von der zweiten Recheneinheit empfangenen Teil eines Zwischenergebnisses, um einen Teil eines Endergebnisses zu erzeugen. Wie in 2 gezeigt, addiert der zweite Addierer 217 die hochwertigen 64 Bits (z.B. 64 H) des Zwischenergebnisses von der ersten binären Gleitkommaeinheit 201 und die hochwertigen 64 Bits (z.B. 64 H, RHOCH ) des Zwischenergebnisses von der zweiten binären Gleitkommaeinheit 202, um ein Endergebnis zu erzeugen. Der zweite Addierer 217 kann auch ein Übertragbit (z.B. CNIEDRIG ) vom zweiten Addierer 218 verwenden. Das Endergebnis wird anschließend vom Multiplexer 225 einem Multiplexing unterzogen, wobei der Formatierer 221 ein normalisiertes Zwischenergebnis ausgibt, um die hochwertigen Bits des Endergebnisses (z.B. RESHOCH ) zu erzeugen. Wie vorstehend festgestellt, werden ähnliche Operationen parallel in der zweiten Recheneinheit 202 durchgeführt, um niedrigwertige Bits des Endergebnisses (z.B. RESNIEDRIG ) zu erzeugen.
  • Mit Bezug nunmehr auf 4 wird ein Umsetzungsbeispiel des Systems 100 gemäß einer oder mehreren Ausführungsformen gezeigt. Das Umsetzungsbeispiel wird als ein System 400 gezeigt, das eine erste Recheneinheit 401 und eine zweite Recheneinheit 402 aufweist (z.B. binäre Gleitkomma-Recheneinheiten). Die erste und die zweite Recheneinheiten 401 bzw. 402 weisen jeweils die Multiplikatoren 405 und 406, die ersten Addierer 409 und 410, die zweiten Addierer 409 und 410, die Formatierer 421 und 422 sowie die Multiplexer 425 und 426 auf.
  • Im Rahmen einer beispielhaften Operation empfängt das System 400 einen Operandensatz in der ersten Recheneinheit 401 und in der zweiten Recheneinheit 402. Der Operandensatz kann eine Zahl 402 zusammen mit einem Operanden A 403a, Operanden B 403b, Operanden C 403c und Operanden D 403d enthalten. In diesem Beispiel verwaltet die erste Recheneinheit 401 die hochwertigen Bits der Zahl 402 und die zweite Recheneinheit 402 verwaltet die niedrigwertigen Bits der Zahl 402.
  • Wie in 4 gezeigt, werden Operand A 403a und Operand B 403b vom Multiplikator 405 des Systems 400 multipliziert, um ein erstes Produkt zu erzeugen. Operand C 403c und Operand D 403d werden vom Multiplikator 406 des Systems 400 multipliziert, um ein zweites Produkt zu erzeugen.
  • Das System 400 addiert das erste Produkt, um eine erste Summe zu erzeugen, die sich aus den hochwertigen Bits der Zahl 402 ergibt, an die „Null“-Bits angehängt werden. Das System 400 addiert weiterhin das zweite Produkt, um eine zweite Summe zu erzeugen, die sich aus den niedrigwertigen Bits der Zahl 402 ergibt, der „Null“-Bits vorangestellt werden.
  • Das System 400 verwendet den ersten Addierer 409, um die erste Summe und das erste Produkt zu addieren, um ein erstes Zwischenergebnis zu bilden. Das System 400 verwendet den ersten Addierer 410, um die zweite Summe und das zweite Produkt zu addieren, um ein zweites Zwischenergebnis zu bilden. Das erste und das zweite Zwischenergebnis werden jeweils so geteilt, dass Teile des ersten und des zweiten Zwischenergebnisses ausgetauscht und den zweiten Addierern 417 und 418 bereitgestellt werden. Ein niedrigwertiger Teil des ersten Zwischenergebnisses kann beispielsweise der zweiten binären Gleitkommaeinheit 402 bereitgestellt werden, während ein hochwertiger Teil des ersten Zwischenergebnisses dem zweiten Addierer 417 bereitgestellt werden kann. Ein hochwertiger Teil des zweiten Zwischenergebnisses kann der ersten binären Gleitkommaeinheit 401 bereitgestellt werden, während ein niedrigwertiger Teil des zweiten Zwischenergebnisses dem zweiten Addierer 418 bereitgestellt werden kann. Es ist anzumerken, dass das erste und zweite Zwischenergebnis den Formatierern 421 und 422 vollständig bereitgestellt werden kann.
  • Der zweite Addierer 418 addiert den niedrigwertigen Teil des ersten Zwischenergebnisses und den niedrigwertigen Teil des zweiten Zwischenergebnisses, um den niedrigwertigen Teil des Endergebnisses zu erzeugen. Das zweite Endergebnis wird anschließend vom Multiplexer 426 einem Multiplexing unterzogen, wobei der Formatierer 421 ein normalisiertes Zwischenergebnis ausgibt, um die niedrigwertigen Bits des zusammengefassten Endergebnisses 490 zu erzeugen. Der zweite Addierer 417 addiert den hochwertigen Teil des ersten Zwischenergebnisses, das Übertragbit des zweiten Zwischenergebnisses und den hochwertigen Teil des zweiten Zwischenergebnisses, um den hochwertigen Teil des Endergebnisses zu erzeugen. Das erste Endergebnis wird anschließend vom Multiplexer 425 einem Multiplexing unterzogen, wobei der Formatierer 421 ein normalisiertes Zwischenergebnis ausgibt, um die hochwertigen Bits eines zusammengefassten Endergebnisses 490 zu erzeugen.
  • 5 zeigt ein Beispiel eines Systems 500 gemäß einer oder mehreren Ausführungsformen. Das System 500 weist eine oder mehrere Zentraleinheiten (CPUs) 501a, 501b, 501c usw. auf (die zusammen oder einzeln allgemein als Prozessor(en) 501 bezeichnet werden). Die Prozessoren 501, die auch als Verarbeitungsschaltungen bezeichnet werden, sind über einen Systembus 502 mit dem Systemspeicher 503 und verschiedenen anderen Komponenten verbunden. Der Systemspeicher 503 kann einen Nur-Lese-Speicher (ROM) 504 und einen Direktzugriffsspeicher (RAM) 505 enthalten. Der ROM 504 ist mit dem Systembus 502 verbunden und kann ein grundlegendes Eingabe-/Ausgabesystem (BIOS) enthalten, das bestimmte Grundfunktionen des Systems 500 steuert. Bei dem RAM handelt es sich um einen Lese-Schreib-Speicher, der mit dem Systembus 502 verbunden ist, um von den Prozessoren 501 verwendet zu werden.
  • 5 zeigt weiterhin einen Eingabe-/Ausgabe(E/A)-Adapter 506 und einen Datenübertragungsadapter 507, der mit dem Systembus 502 verbunden ist. Bei dem E/A-Adapter 506 kann es sich um einen Small-Computer-System-Interface(SCSI)-Adapter handeln, der mit einer Festplatte 508 und/oder anderen ähnlichen Komponenten Daten austauscht. Der E/A-Adapter 506 und die Festplatte 508 werden hierin zusammen als Massenspeicher 510 bezeichnet. Im Massenspeicher 510 kann eine Software 511 zum Ausführen im System 500 gespeichert werden. Der Massenspeicher 510 stellt ein Beispiel eines physischen Speichermediums dar, das von den Prozessoren 501 gelesen werden kann, wobei die Software 511 als Anweisungen gespeichert ist, die von den Prozessoren 501 ausgeführt werden, um das System 500 zu veranlassen, in der wie hierin mit Bezug auf 3 beschriebenen Form zu funktionieren. Beispiele für ein Computerprogrammprodukt und die Ausführung dieser Anweisung werden hierin im Einzelnen beschrieben. Mit erneutem Bezug auf 5 verbindet ein Datenübertragungsadapter 507 den Systembus 502 mit einem Netzwerk 512, bei dem es sich um ein externes Netzwerk handeln kann, das das System 500 in die Lage versetzt, mit anderen Systemen dieser Art Daten auszutauschen. Eine Anzeige (z.B. ein Bildschirm, ein Anzeigemonitor) 515 ist über einen Anzeigenadapter 516 mit dem Systembus 502 verbunden, wobei der Anzeigenadapter eine Grafiksteuereinheit enthalten kann, um die Leistung grafikintensiver Anwendungen zu verbessern, sowie eine Videosteuereinheit. In einer Ausführungsform können die Adapter 506, 507 und 516 mit einem oder mehreren E/A-Bussen verbunden sein, die über eine Buszwischenbrücke (nicht dargestellt) mit dem Systembus 502 verbunden sind. Zu geeigneten E/A-Bussen zum Verbinden von Peripherieeinheiten wie Festplattensteuereinheiten, Netzwerkadaptern und Grafikadaptern gehören in der Regel gemeinsame Protokolle wie Peripheral Component Interconnect (PCI). Zusätzliche Eingabe-/Ausgabeeinheiten sind in der Darstellung über einen Schnittstellenadapter 520 und den Anzeigenadapter 516 mit dem Systembus 502 verbunden. Über den Schnittstellenadapter 520, der zum Beispiel einen Super-E/A-Chip enthalten kann, der mehrere Einheitenadapter in einer einzigen integrierten Schaltung integriert, können eine Tastatur, eine Maus, ein Lautsprecher usw. mit dem Systembus 502 verbunden sein.
  • Wie daher in 5 konfiguriert, beinhaltet das System 500 eine Verarbeitungsfähigkeit in Form der Prozessoren 501 sowie eine Speicherfähigkeit mit dem Systemspeicher 503 und dem Massenspeicher 510, Eingabemittel wie die Tastatur und die Maus sowie eine Ausgabefähigkeit mit dem Lautsprecher und der Anzeige 515. In einer Ausführungsform speichert ein Teil des Systemspeichers 503 und des Massenspeichers 510 gemeinsam ein Betriebssystem wie das Betriebssystem z/OS oder AIX der IBM Corporation, um die Funktionen der verschiedenen in 5 gezeigten Komponenten zu koordinieren.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jedem möglichen technischen Detaillierungsgrad der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o. ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hierin verwendete Terminologie dient lediglich dem Zweck des Beschreibens von bestimmten Ausführungsformen und soll die Erfindung nicht einschränken. Wie hierin verwendet, sollen die Singularformen „ein/eine/einer/eines“ und „der/die/das“ ebenfalls die Pluralformen umfassen, es sei denn, der Zusammenhang zeigt eindeutig etwas anderes auf. Es versteht sich ferner, dass die Ausdrücke „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die Beschreibungen der verschiedenen Ausführungsformen hierin wurden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder es Fachleuten zu ermöglichen, die hier beschriebenen Ausführungsformen zu verstehen.

Claims (20)

  1. Schaltung, die aufweist: eine Mehrzahl von rekonfigurierbaren Einheiten, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen, wobei ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht wird, wobei die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses berechnet, wobei die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses berechnet.
  2. Schaltung nach Anspruch 1, wobei jede rekonfigurierbare Einheit rekonfigurierbar ist, um ein Einzelergebnis zu berechnen.
  3. Schaltung nach Anspruch 1, wobei jede rekonfigurierbare Einheit eine rekonfigurierbare Recheneinheit mit niedriger Genauigkeit aufweist.
  4. Schaltung nach Anspruch 3, wobei jede rekonfigurierbare Einheit eine Multiplikations-Additions-Rechenschaltung aufweist.
  5. Schaltung nach Anspruch 4, wobei die Multiplikations-Additions-Rechenschaltung einen Multiplikator, einen ersten Addierer, einen Formatierer und einen zweiten Addierer aufweist.
  6. Schaltung nach Anspruch 1, wobei das Austauschen des ersten und zweiten Zwischenergebnisses ein Bereitstellen von x hochwertigen Bits von der ersten rekonfigurierbaren Einheit und x niedrigwertigen Bits von der zweiten rekonfigurierbaren Einheit aufweist.
  7. Schaltung nach Anspruch 1, wobei die Mehrzahl von rekonfigurierbaren Einheiten rekonfigurierbar ist, um mehrere Multiplikationen von x-Bit-Zahlen zu berechnen und 2*x-Bit-Ergebnisse zu addieren, um das zusammengefasste Ergebnis zu bilden.
  8. Schaltung nach Anspruch 7, wobei jede rekonfigurierbare Einheit rekonfigurierbar ist, um ein 2*x-Bit-Akkumulatorergebnis zu dem zusammengefassten Ergebnis zu addieren.
  9. Schaltung nach Anspruch 1, wobei eine Gruppe von vier rekonfigurierbaren Einheiten der Mehrzahl von rekonfigurierbaren Einheiten ein Ausführen von komplexen Rechenoperationen mit viermal einfacher Genauigkeit, zweimal zweifacher Genauigkeit und einmal vierfacher Genauigkeit bereitstellt, das eine Multiplikationsoperation und eine Additionsoperation aufweist.
  10. System, das einen Prozessor und einen Speicher aufweist, wobei der Prozessor aufweist: eine Mehrzahl von rekonfigurierbaren Einheiten, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen, wobei ein erstes Zwischenergebnis einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten ausgetauscht wird, wobei die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten einen ersten Teil des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses berechnet, wobei die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten einen zweiten Teil des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses berechnet.
  11. System nach Anspruch 10, wobei jede rekonfigurierbare Einheit rekonfigurierbar ist, um ein Einzelergebnis zu berechnen.
  12. System nach Anspruch 11, wobei jede rekonfigurierbare Einheit eine rekonfigurierbare Recheneinheit mit niedriger Genauigkeit aufweist.
  13. System nach Anspruch 12, wobei jede rekonfigurierbare Einheit eine Multiplikations-Additions-Rechenschaltung aufweist.
  14. System nach Anspruch 13, wobei die Multiplikations-Additions-Rechenschaltung einen Multiplikator, einen ersten Addierer, einen Formatierer und einen zweiten Addierer aufweist.
  15. System nach Anspruch 10, wobei das Austauschen des ersten und zweiten Zwischenergebnisses ein Bereitstellen von x hochwertigen Bits von der ersten rekonfigurierbaren Einheit und x niedrigwertigen Bits von der zweiten rekonfigurierbaren Einheit aufweist.
  16. System nach Anspruch 10, wobei die Mehrzahl von rekonfigurierbaren Einheiten rekonfigurierbar ist, um mehrere Multiplikationen von x-Bit-Zahlen zu berechnen und 2*x-Bit-Ergebnisse zu addieren, um das zusammengefasste Ergebnis zu bilden.
  17. System nach Anspruch 16, wobei jede rekonfigurierbare Einheit rekonfigurierbar ist, um ein 2*x-Bit-Akkumulatorergebnis zu dem zusammengefassten Ergebnis zu addieren.
  18. Verfahren, das von einem Prozessor umgesetzt wird, der eine Mehrzahl von rekonfigurierbaren Einheiten aufweist, die rekonfigurierbar sind, um ein zusammengefasstes Ergebnis zu berechnen, wobei das Verfahren aufweist: Austauschen eines ersten Zwischenergebnisses einer ersten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten mit einem zweiten Zwischenergebnis einer zweiten rekonfigurierbaren Einheit der Mehrzahl von rekonfigurierbaren Einheiten; Berechnen eines ersten Teils des zusammengefassten Ergebnisses mithilfe des zweiten Zwischenergebnisses durch die erste rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten; und Berechnen eines zweiten Teils des zusammengefassten Ergebnisses mithilfe des ersten Zwischenergebnisses durch die zweite rekonfigurierbare Einheit der Mehrzahl von rekonfigurierbaren Einheiten.
  19. Verfahren nach Anspruch 18, wobei jede rekonfigurierbare Einheit rekonfigurierbar ist, um ein Einzelergebnis zu berechnen.
  20. Verfahren nach Anspruch 19, wobei jede rekonfigurierbare Einheit eine rekonfigurierbare Recheneinheit mit niedriger Genauigkeit aufweist.
DE112018000138.5T 2017-01-23 2018-01-08 Schaltung, System und Verfahren zum Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten Skalaren Ergebnisses Active DE112018000138B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/412,429 2017-01-23
US15/412,429 US10275391B2 (en) 2017-01-23 2017-01-23 Combining of several execution units to compute a single wide scalar result
PCT/IB2018/050102 WO2018134694A1 (en) 2017-01-23 2018-01-08 Combining of several execution units to compute a single wide scalar result

Publications (2)

Publication Number Publication Date
DE112018000138T5 true DE112018000138T5 (de) 2019-07-11
DE112018000138B4 DE112018000138B4 (de) 2022-03-24

Family

ID=62906484

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018000138.5T Active DE112018000138B4 (de) 2017-01-23 2018-01-08 Schaltung, System und Verfahren zum Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten Skalaren Ergebnisses

Country Status (7)

Country Link
US (1) US10275391B2 (de)
JP (1) JP6979076B2 (de)
CN (1) CN110199255B (de)
DE (1) DE112018000138B4 (de)
GB (1) GB2573685B (de)
TW (1) TWI659360B (de)
WO (1) WO2018134694A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269651B2 (en) 2019-09-10 2022-03-08 International Business Machines Corporation Reusing adjacent SIMD unit for fast wide result generation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4612628A (en) * 1983-02-14 1986-09-16 Data General Corp. Floating-point unit constructed of identical modules
JPH0724811Y2 (ja) * 1988-12-15 1995-06-05 横河電機株式会社 デジタルフィルタ
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US7062526B1 (en) 2000-02-18 2006-06-13 Texas Instruments Incorporated Microprocessor with rounding multiply instructions
JP3542342B2 (ja) * 2001-09-14 2004-07-14 独立行政法人 科学技術振興機構 半導体演算装置
US8683184B1 (en) * 2004-11-15 2014-03-25 Nvidia Corporation Multi context execution on a video processor
CN100555212C (zh) * 2007-07-18 2009-10-28 中国科学院计算技术研究所 一种浮点乘加器及其乘法csa压缩树的进位校验装置
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8682639B2 (en) 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
FR2974645A1 (fr) * 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
JP6064435B2 (ja) 2012-08-21 2017-01-25 富士通株式会社 演算回路、演算処理装置、及び除算方法
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9189200B1 (en) * 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9256433B2 (en) 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
US9489197B2 (en) 2013-07-09 2016-11-08 Texas Instruments Incorporated Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems
RU2016134918A (ru) * 2014-03-27 2018-03-01 Интел Корпорейшн Логика обработки и способ диспетчеризации команд от многочисленных нитей
US9467279B2 (en) * 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US20160179470A1 (en) 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US20160188327A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused multiply-multiply instructions
CN105652660B (zh) * 2016-01-07 2018-11-30 北京北广科技股份有限公司 一种基于单片机的获取分频频率控制字的方法
US10007487B1 (en) * 2016-06-30 2018-06-26 Altera Corporation Double-precision floating-point operation

Also Published As

Publication number Publication date
GB2573685A (en) 2019-11-13
US20180210859A1 (en) 2018-07-26
GB2573685B (en) 2020-04-22
CN110199255A (zh) 2019-09-03
TWI659360B (zh) 2019-05-11
JP6979076B2 (ja) 2021-12-08
WO2018134694A1 (en) 2018-07-26
DE112018000138B4 (de) 2022-03-24
CN110199255B (zh) 2022-10-28
JP2020507154A (ja) 2020-03-05
US10275391B2 (en) 2019-04-30
TW201830236A (zh) 2018-08-16
GB201910346D0 (en) 2019-09-04

Similar Documents

Publication Publication Date Title
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE2900324C2 (de)
DE68924477T2 (de) Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition.
DE69428466T2 (de) Parallele Datenverarbeitung in einem Einzelprozessor
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE102008059371B9 (de) Funktionseinheit für verschmolzenes Multiplizieren und Addieren
DE69429342T2 (de) Vereinheitlicher gleitkommadatenpfad und ganzzahldatenpfad für einen risc-prozessor
DE69131458T2 (de) Hardware-Anordnung zur Addition und Subtraktion von Gleitkommazahlen
DE69712720T2 (de) Gerät zur schnellen Berechnung tranzedentaler Funktionen
DE68928376T2 (de) Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel
DE69131267T2 (de) Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision
DE102018130084A1 (de) Dynamische Quantisierung neuronaler Netzwerke
DE112018000140T5 (de) Verschmolzene Multiplikations-Additions-Gleitkommaoperationen auf 128 BIT breiten Operanden
DE102013018915A1 (de) Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen
DE68928058T2 (de) Gerät und verfahren zur prädiktion von gleitkommanormalisierung
DE102020113922A1 (de) Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen
DE112006003875T5 (de) Gleitkommaaddition für unterschiedliche Gleitkommaformate
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE112020003600T5 (de) Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung
DE112019001799T5 (de) Erweitertes formatieren von binären gleitkommazahlen mit geringerer genauigkeit
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE112018006540T5 (de) Dynamisches ersetzen eines aufrufs einer software-bibliothek durch einen aufruf eines beschleunigers
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE19718224A1 (de) Digitaler Neuroprozessor

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final