DE102020113922A1 - Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen - Google Patents

Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen Download PDF

Info

Publication number
DE102020113922A1
DE102020113922A1 DE102020113922.5A DE102020113922A DE102020113922A1 DE 102020113922 A1 DE102020113922 A1 DE 102020113922A1 DE 102020113922 A DE102020113922 A DE 102020113922A DE 102020113922 A1 DE102020113922 A1 DE 102020113922A1
Authority
DE
Germany
Prior art keywords
adder
bits
output
segment
additional
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
DE102020113922.5A
Other languages
English (en)
Inventor
Martin Langhammer
Bogdan Pasca
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 DE102020113922A1 publication Critical patent/DE102020113922A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/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
    • 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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17732Macroblocks

Landscapes

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

Abstract

Eine integrierte Schaltung mit einem großen Multiplizierer ist bereitgestellt. Der Multiplizierer kann konfiguriert sein, große Eingabeoperanden mit Tausenden von Bits zu empfangen. Der Multiplizierer kann unter Verwendung eines Multipliziererzerlegungsschemas implementiert sein, das kursiv in mehrere Zerlegungsebenen geglättet ist, um einen Baum von Addierern aufzudecken. Die Addierer können in eine zusammengeführte Pipeline-Struktur zusammengefaltet sein, wobei Teilsummen von einer Ebene zu der nächsten weitergeleitet werden, während dazwischen liegende Präfix-Netze umgangen werden. Die letzte korrekte Summe wird erst später berechnet. In Übereinstimmung mit der Zerlegungstechnik werden die Teilsummen nacheinander halbiert, was es ermöglicht, dass die Präfix-Netze von einer Ebene zur nächsten kleiner sind. Das ermöglicht, dass alle Summen an ungefähr der gleichen Pipeline-Tiefe berechnet werden, was die Latenz ohne oder eingeschränkten Pipeline-Ausgleich wesentlich reduziert.

Description

  • Hintergrund
  • Dies bezieht sich allgemein auf integrierte Schaltungen wie z. B. im Feld programmierbare Gatter-Arrays (FPGAs). Insbesondere bezieht sich die vorliegende Offenbarung auf eine Addiererschaltungsanordnung, die konfiguriert ist, große Arithmetikoperationen auf einem FPGA auszuführen.
  • Integrierte Schaltungen führen zunehmend spezifisch angepasste Funktionen wie etwa eine Verschlüsselung aus, die für das tägliche Leben wesentlich geworden sind. Tatsächlich wird Verschlüsselung in einer Anzahl technischer Gebiete wie z. B. der Sicherheit finanzieller Transaktionen und vielen anderen Anwendungen zunehmend wertvoll. Verschlüsselung (wie auch viele andere Operationen, die auf einer integrierten Schaltung stattfinden können, wie z. B. spezielle Multiplikationsoperationen) kann eine zunehmend große Präzisionsarithmetik verwenden, die in einigen Fällen das Ausführen von Arithmetikoperationen beinhaltet, um Operanden, die eine große Genauigkeit aufweisen, aufzusummieren. In einigen Fällen kann beispielsweise die Genauigkeit der Operanden in der Größenordnung von Tausenden von Bits sein.
  • Herkömmlicherweise erfordern große Multiplizierer, die auf einem FPGA implementiert sind, sehr große Addierer. Um große Multiplikationen zu implementieren, werden häufig Zerlegungsalgorithmen wie z. B. das Karazuba- oder Toom-Cook-Verfahren zum Ausführen schneller Multiplikationen verwendet. Diese Zerlegungs-Methodiken erzeugen jedoch viele große Addierer, die in Reihe verbunden sind, die zu langen Latenzpfaden, einer hohen Anzahl von Logik-Betriebsmitteln und anspruchsvollen Routing-Anforderungen führen. Es ist in diesem Kontext, dass sich die hier beschriebenen Ausführungsformen anbieten.
  • Figurenliste
    • 1 ist ein Diagramm einer erläuternden integrierten Schaltung, die eine Multipliziererschaltungsanordnung in Übereinstimmung mit einer Ausführungsform enthält.
    • 2 ist ein Diagramm einer erläuternden programmierbaren integrierten Schaltung in Übereinstimmung mit einer Ausführungsform.
    • 3A und 3B sind Diagramm, die die Karazuba-Zerlegung darstellen.
    • 4 ist ein Blockdiagramm einer erläuternden Multipliziererschaltungsanordnung, die den Karazuba-Zerlegungsprozess implementiert, in Übereinstimmung mit einer Ausführungsform.
    • 5 ist ein Diagramm einer erläuternden Multipliziererschaltungsanordnung, die in vier Ebenen zerlegt ist, in Übereinstimmung mit einer Ausführungsform.
    • 6 ist ein Diagramm eines erläuternden rekursiven Addierer-Stapels, der sich durch die vier Ebenen der Zerlegung erstreckt, in Übereinstimmung mit einer Ausführungsform.
    • 7A ist ein Diagramm einer Addiererschaltung mit hoher Genauigkeit, die kleinere Segmentaddierer enthält, um Erzeugen- und Fortpflanzen-Signale gleichzeitig auszugeben.
    • 7B ist ein Diagramm mehrerer Addiererschaltungen mit hoher Genauigkeit des in 7A gezeigten Typs, die in einer Kette verbunden sind, um die Karazuba-Zerlegung zu implementieren.
    • 8 ist ein Diagramm einer erläuternden Multipliziererschaltungsanordnung, die eine Struktur mit zusammengeführten Addierern aufweist, wobei Addierer auf unterschiedlichen Ebenen in Pipelines geordnet sein können, um zum Reduzieren der Latenz beizutragen, in Übereinstimmung mit einer Ausführungsform.
    • 9 ist ein Diagramm einer erläuternden Multipliziererschaltungsanordnung, die einen Datenpfad zusammengeführter Addierer und einen separaten Datenpfad verketteter Addierer in Übereinstimmung mit einer Ausführungsform enthält.
    • 10 ist ein Diagramm, das die auf mehrere Ebenen erweiterte Struktur zusammengeführter Addierer in einer Karazuba-Zerlegung in Übereinstimmung mit einer Ausführungsform zeigt.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen beziehen sich auf eine integrierte Schaltung, die ein Multipliziererzerlegungsverfahren implementiert, das rekursiv geglättet ist, um eine Reihe von Addierern an unterschiedlichen Ebenen der Zerlegung aufzudecken. Die Addierer können in eine einzige Pipeline-Struktur zusammengefaltet oder zusammengeführt sein, wo Teilsummen zu aufeinanderfolgenden Ebenen weitergeleitet werden, bevor die korrekte Summe auf jeder Ebene (oder Stufe) berechnet wird. Die endgültige Summe wird nicht vor der letzten Stufe berechnet. Die Teilsummierungsoperationen können nacheinander auf jeder Ebene halbiert werden, und die Präfix-Netze sind von einer Ebene zur nächsten kleiner. Somit kann das Pipelining ebenfalls auf jeder Ebene reduziert werden.
  • Auf diese Weise konfiguriert können alle Teilsummen mit ungefähr derselben Pipeline-Tiefe berechnet werden. Als das Ergebnis können alle eingegebenen Bits dem geglätteten Multiplizierer zur gleichen Zeit zugeführt werden, ohne viel oder irgendeinen Pipeline-Ausgleich. Eine große Multipliziererschaltungsanordnung, die auf diese Weise auf einer programmierbaren integrierten Schaltung implementiert ist, wird viel weniger Logik- und Routing-Betriebsmittel verwenden, während sie die Latenz minimiert, was ermöglicht, dass sie mit ihren Gegenstücken mit anwendungsspezifischer Schaltung (ASIC) konkurrieren kann.
  • Es ist für Fachleute zu erkennen, dass die vorliegenden beispielhaften Ausführungsformen ohne einige dieser oder alle spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind bekannte Operationen nicht im Einzelnen beschrieben worden, um die vorliegenden Ausführungsformen nicht unnötigerweise zu verdecken.
  • Unter Berücksichtigung des Vorstehenden ist 1 ein Diagramm einer integrierten Schaltung 10, die konfiguriert ist, Arithmetikoperationen zu implementieren. Ein Konstrukteur möchte möglicherweise eine Funktionalität wie z. B. Arithmetikoperationen mit hoher Genauigkeit auf der integrierten Schaltungsvorrichtung 10 (z. B. einem im Feld programmierbaren Gatter-Array (FPGA) oder einer anwendungsspezifischen integrierten Schaltung (ASIC)) implementieren. Wie in 1 gezeigt ist, kann die integrierte Schaltung 10 eine „sehr große“ Multipliziererschaltungsanordnung wie z. B. den Multiplizierer 50 enthalten. In dem Beispiel von 1 kann der Multiplizierer 50 als ein sehr großer Multiplizierer bezeichnet sein, weil er konfiguriert ist, das Produkt von zwei Eingaben A und B, von denen jede 1000 Bits aufweist, zu berechnen.
  • Im Allgemeinen kann der sehr große Multiplizierer 50 verwendet werden, um Eingaben mit mehr als 50 Bits, wenigstens 100 Bits, Hunderten von Bits, 100-1000 Bits, wenigstens 1000 Bits, Tausenden von Bits, Zehntausenden von Bits, Hunderttausenden von Bits oder sogar Millionen von Bits zu kombinieren. Das Multiplizierernetz 50 kann auch verwendet werden, um mehr als zwei sehr große Zahlen zu multiplizieren (z. B. kann der Multiplizierer 50 verwendet werden, um mehr als zwei große Ganzzahlen, vier oder mehr große Ganzzahlen, acht oder mehr große Ganzzahlen, sechzehn oder mehr große Ganzzahlen usw. zu kombinieren).
  • Die integrierte Schaltung 10 könnte als eine programmierbare integrierte Schaltungsvorrichtung wie z. B. eine programmierbare Logikvorrichtung 10 von 2, implementiert sein, wo Arithmetik mit hoher Genauigkeit traditionell herausfordernd gewesen ist. Wie in 2 gezeigt ist, kann die programmierbare Logikvorrichtung 10 eine zweidimensionale Anordnung aus Funktionsblöcken enthalten, die Logik-Array-Blöcke (LABs) 11 und andere Funktionsblöcke enthalten, wie z. B. Direktzugriffsspeicher- (RAM-) Blöcke 13 und spezialisierte Verarbeitungsblöcke wie z. B. digitale Signalverarbeitungs- (DSP-) Blöcke 12, die teilweise oder vollständig fest verdrahtet sind, um eine oder mehrere spezifische Aufgaben wie z. B. Mathematik/Arithmetikoperationen auszuführen.
  • Funktionsblöcke wie z. B. LABs 110 können kleinere programmierbare Bereiche (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und spezifisch angepasste Funktionen auf den Eingangssignalen ausführen, um Ausgangssignale zu produzieren. Die Vorrichtung 10 kann ferner ein programmierbares Routing-Fabric enthalten, das verwendet wird, um LABs 11 mit RAM-Blöcken 13 und DSP-Blöcken 12 zusammenzuschalten. Die Kombination aus der programmierbaren Logik und dem Routing-Fabric wird manchmal als „Soft“-Logik bezeichnet, während die DSP-Blöcke manchmal als „Hard“-Logik bezeichnet werden. Der Typ der Hard-Logik auf der Vorrichtung 10 ist nicht auf DSP-Blöcke beschränkt und kann andere Typen von Hard-Logik enthalten.
  • Die programmierbare Logikvorrichtung 10 kann programmierbare Speicherelemente zum Konfigurieren der Soft-Logik enthalten. Speicherelemente können mit Konfigurationsdaten (auch als Programmierdaten bezeichnet) unter Verwendung von Eingabe/Ausgabe-Elementen (IOEs) 16 geladen werden. Sobald sie geladen sich, stellen die Speicherelemente entsprechende statische Steuersignale bereit, die den Betrieb für einen oder mehrere LABs 11, programmierbares Routing-Fabric und optional DSPs 12 oder RAMs 13 steuern. In einem typischen Szenario werden die Ausgaben der geladenen Speicherelemente an die Gates von Metalloxidhalbleitertransistoren (z. B.
  • Durchlasstransistoren) angelegt, um spezielle Transistoren an- und abzuschalten und dadurch die Logik in dem Funktionsblock, der die Routing-Pfaden enthält, zu konfigurieren. Programmierbare Logikschaltungselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexierern (z. B. Multiplexierern, die zum Bilden von Routing-Pfaden in Zusammenschaltungsschaltungen verwendet werden), Nachschlagetabellen, Logik-Arrays, AND-, OR-, NAND- und NOR-Logikgatter, Pass-Gates usw.
  • Die Speicherelemente können irgendwelche geeigneten flüchtigen und/oder nichtflüchtigen Speicherstrukturen verwenden, wie z. B. Direktzugriffsspeicher- (RAM-) Zellen, Fuses, Antifuses, programmierbare Festwertspeicher-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, mechanische Speichervorrichtungen (die z. B. lokalisierte mechanische Resonatoren enthalten), mechanisch betriebenen RAM (MORAM), programmierbare Metallisierungszellen (PMCs), RAM mit leitfähiger Überbrückung (CBRAM), resistive Speicherelemente, Kombinationen aus diesen Strukturen usw. Weil die Speicherelemente mit Konfigurationsdaten während des Programmierens geladen werden, sind die Speicherelemente manchmal als Konfigurationsspeicher, Konfigurations-RAM (CRAM) Konfigurationsspeicherelemente oder programmierbare Speicherelemente bezeichnet.
  • Zusätzlich kann die programmierbare Logikvorrichtung 10 Eingabe/Ausgabe-Elemente (IOEs) 16 verwenden, um Signale aus der Vorrichtung 10 zu treiben und Signale von anderen Vorrichtungen zu empfangen. Eingabe/Ausgabe-Elemente 16 können parallele Eingabe-Ausgabe-Schaltungsanordnung, serielle Datensender/empfänger-Schaltungsanordnung, differentielle Empfänger- und Sender-Schaltungsanordnung oder eine andere Schaltungsanordnung enthalten, die verwendet wird, um eine integrierte Schaltung mit einer weiteren integrierten Schaltung zu verbinden. Wie gezeigt können sich die Eingabe/Ausgabe-Elemente 16 in der Umgebung der Peripherie des Chips befinden. Falls gewünscht kann die programmierbare Logikvorrichtung Eingabe/Ausgabe-Elemente 16 aufweisen, die auf unterschiedliche Weisen angeordnet sind.
  • Das Routing-Fabric (manchmal als programmierbare Zusammenschaltungsschaltungsanordnung bezeichnet) auf der PLD 10 kann in der Form vertikaler Routing-Kanäle 14 (d. h. Zusammenschaltungen, die entlang einer vertikalen Achse des der PLD 100 gebildet sind) und horizontaler Routing-Kanäle 15 (d. h. Zusammenschaltungen, die entlang einer horizontalen Achse der PLD 10 gebildet sind) vorgesehen sein, wobei jeder Kanal wenigstens eine Leiterbahn enthält, um wenigstens eine Leitung zu routen. Falls gewünscht können die Routing-Leitungen kürzer sein als die Gesamtlänge des Routing-Kanals. Eine Leitung der Länge L kann L Funktionsblöcke überspannen. Beispielsweise kann eine Leitung der Länge vier vier Funktionsblöcke überspannen. Leitungen der Länge vier in einem horizontalen Routing-Kanal können als „H4“-Leitungen bezeichnet sein, während Leitungen der Länge vier in einem vertikalen Routing-Kanal als „V4“-Leitungen bezeichnet sein können.
  • Darüber hinaus ist zu verstehen, dass Ausführungsformen in irgendeiner integrierten Schaltung implementiert sein können. Falls gewünscht können die Funktionsblöcke einer solchen integrierten Schaltung in mehreren Ebenen oder Schichten angeordnet sein, in denen mehrere Funktionsblöcke zusammengeschaltet sind, um noch größere Blöcke zu bilden. Andere Vorrichtungsanordnungen können Funktionsblöcke verwenden, die nicht in Zeilen und Spalten angeordnet sind. Konfigurationen, in denen eine sehr große Multipliziererschaltungsanordnung 50 innerhalb einer programmierbaren Vorrichtung 10 gebildet ist, wie z. B. ein Baustein eines im Feld programmierbaren Gatter-Array (FPGA-Baustein), werden hier als ein Beispiel beschrieben, sind jedoch nicht dafür vorgesehen, den Schutzbereich der vorliegenden Ausführungsformen einzuschränken. Falls gewünscht kann die Multipliziererschaltungsanordnung 50 als Teil gebildet sein, das kein/e ASIC, zentrale Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), anwendungsspezifisches Standardprodukt (ASSP), Mikroprozessor, Mikrosteuereinheit oder andere geeignete Typen integrierter Schaltungen ist.
  • Wie in 1 gezeigt ist, kann das FPGA 10 einen oder mehrere große Multiplizierer 50 enthalten, die zunehmend für Verschlüsselungstechniken mit öffentlichem Schlüssel wie z. B. dem Rivest-Shamir-Adleman- (RSA-) Kryptographiealgorithmus benötigt werden. Ein populäres Verfahren zum Ausführen schneller Multiplikation ist das Karazuba-Rekursionszerlegungsverfahren. Obwohl sich Beispiele hier manchmal auf die klassische Karazuba-Methodik beziehen, gelten die Ausführungsformen hier allgemein für andere geeignete Variationen wie z. B. den Toom-Cook-Multipliziereralgorithmus oder den Schönhage-Strassen-Multipliziereralgorithmus, um nur einige zu nennen.
  • Die 3A und 3B sind Diagramme, die die Karazuba-Zerlegung zum Multiplizieren von A mit B darstellen, wobei A und B jeweils 2k- (d. h. 2000) Bit-Eingabeoperanden sind. Die Eingabe A wird in eine obere k-Bit-Hälfte AH und eine untere k-Bit-Hälfte AL aufgeteilt. Ähnlich wird B wird in eine obere k-Bit-Hälfte BH und eine untere k-Bit-Hälfte BL aufgeteilt. Somit kann A als (2^k*AH + AL) repräsentiert sein, während B als (2^k*BH + BL) repräsentiert sein kann. Als ein Ergebnis wird A*B anwachsen, so dass es gleich [2^(2k)*(AH*BH) + 2^k*(AH*BL + AL*BH) + (AL*BL)] ist, wobei der mittlere Term (AH*BL + AL*BH) als „X“ gekennzeichnet wird.
  • Die Schlüsselbeobachtung von Karazuba ist, dass der mittlere X-Term durch Multiplizieren der Summe der oberen und unteren Hälften für jeden Eingabeoperanden erzeugt werden kann (siehe z. B. 3B). Die Summe (AH+AL) kann als die Summe der oberen und unteren Hälften für die Eingabe A bezeichnet sein, während die Summe (BH+BL) als die Summe der oberen und unteren Hälften für die Eingabe B bezeichnet sein kann. Wie in 3B gezeigt ist, ist (AH+AL)*(BH+BL) gleich [(AH*BH) + X + (AL*BL)]. Mit Isolieren von X auf einer Seite der Gleich ist X gleich [(AH+AL)*(BH+BL) - (AH*BH) - (AL*BL)]. Das Produkt der oberen Hälften AH*BH kann als oberes Produkt PH bezeichnet sein; das Produkt der unteren Hälften AL*BL kann als unteres Produkt PL bezeichnet sein; und das Produkt der Summen der Hälften (AH+AL)*(BH+BL) kann das das mittlere Produkt der PM bezeichnet sein.
  • Normalerweise würde der Ausdruck von 3A vier k*k-Multiplizierer und einen 3k-Bit-Addierer erfordern. Durch Einsetzen des Ausdrucks X aus 3B in den Ausdruck von 3A werden jedoch nur drei Multiplizierer (zwei der Größe k*k und einer der Größe (k+1)*(k+1)) benötigt, da PH und PL, die benötigt werden, um X zu berechnen, auch in dem ursprünglichen Ausdruck in 3A benötigt werden und deshalb wiederverwendet werden können. Somit kann die Karazuba-Methodik dazu beitragen, die Anzahl von Multiplizierern, die benötigt werden, um das gewünschte Produkt zu berechnen, zu reduzieren.
  • 4 ist ein Blockdiagramm einer erläuternden Multipliziererschaltungsanordnung 400, die den Karazuba-Zerlegungsprozess implementiert. Die Eingaben A und B werden jeweils in die oberen Hälften AH bzw. BH und die unteren Hälften AL bzw. BL aufgeteilt. Die beiden oberen Hälften AH und BH werden unter Verwendung der Multipliziererschaltung 103 multipliziert, um das Produkt PH zu erzeugen, während die beiden unteren Hälften AL und BL unter Verwendung der Multipliziererschaltung 106 multipliziert werden, um das Produkt PL zu erzeugen. Die oberen und unteren Hälften von A (d. h. AH und AL) werden durch die Addiererschaltung 104 summiert, während die oberen und unteren Hälften von B (d. h. BH und BL) durch die Addiererschaltung 105 summiert werden. Die Multipliziererschaltung 107 kann dann das Produkt der Summe aus dem Addierer 104 und der Summe aus dem Addierer 105 berechnen, um das Produkt PM zu erzeugen. Die Ergebnisse der Multiplizierer 103 und 106 werden dann von der Ausgabe PM des Multiplizierers 107 unter Verwendung der Subtraktionsschaltung 108 subtrahiert, um X zu erzeugen (siehe 3B).
  • Die Ausgaben der Multiplizierer 103 und 106 können zu der geeigneten Bitposition verschoben werden (z. B. unter Verwendung von Verschiebeschaltungen 110 und 111) und in der Addiererschaltung 109 kombiniert werden. Die Schaltung 109 kann dann den Wert X zu diesem kombinierten Wert addieren. Die Reihenfolge der Post-Multiplizierer-Additionen in den Schaltungen 108 und 109 ist nicht wichtig, was es dem Konstrukteur erlaubt, die größeren Zahlen in einem Zerlegungsschema hoher Ordnung auf eine Weise zu kombinieren, die zur Hardware-Implementierung optimiert ist.
  • Das Karazuba-Multiplikationsschema kann rekursiv zerlegt werden. Mit anderen Worten kann jeder der Multiplizierer 103, 106 und 107 selbst unter Verwendung der gesamten Struktur des Multiplizierers 400 implementiert sein, und der Prozess kann für jede Ebene der Zerlegung, die gewünscht ist, iteriert werden. 5 ist ein Diagramm der erläuternden Multipliziererschaltungsanordnung 500 mit einer flachen (entrollten) Zerlegung von vier Ebenen. Wie in 5 gezeigt ist, unterteilt die erste Ebene der Zerlegung die Eingaben in drei logische Multipliziererpfade. Der linke Multipliziererpfad führt zu dem Multiplizierer 103 (siehe 4); der rechte Multipliziererpfad führt zu dem Multiplizierer 106; und der mittlere Multipliziererpfad führt zu dem Multiplizierer 107 über die Addierer 104 und 105. Unter der Annahme, dass die Eingaben A und B jeweils 2048 Bits breit sind, können die Addierer auf der ersten Ebene (oder der ersten Zerlegungsstufe) 1024-Bit-Addierer (mit ausgehendem Übertrag) sein, da die Addierer 104 und 105 nur halbe Abschnitte jeder Eingabe aufsummieren müssen.
  • Die Multiplizierer 103, 106, und 107 können ferner jeweils rekursiv in drei neue Zweige an jeder Ebene der Zerlegung zerlegt werden. Auf der zweiten Ebene der Zerlegung können insgesamt 9 Multipliziererpfade vorhanden sein; die Addierer 104' und 105', die dem Multiplizierer 103 und 106 entsprechen, können 512-Bit-Addierer sein (mit ausgehendem Übertrag), da die Eingaben an jeder aufeinanderfolgenden Ebene halbiert werden. Die Addierer 104' und 105', die dem Multiplizierer 107 entsprechen, werden 513 Bits breit sein (mit ausgehendem Übertrag), da die Eingaben für den Multiplizierer 107 1025 Bits breit sind, und die Zerlegung unterteilt diese in ein unteres 512-Bit-Stück und ein oberes 513-Bit-Stück. Weiter zu der dritten Ebene der Zerlegung können insgesamt 27 Multipliziererpfade vorhanden sein. Aus Gründen der Einfachheit legen wir fest, dass die Addierer 104''/105'' auf dieser Ebene 256 Bits, 257 Bits oder 258 Bits breit sein können. An der vierten Zerlegungsstufe können insgesamt 81 Multipliziererpfade vorhanden sein, und jeder Addierer 104'''/105''' an dieser Stufe kann 128 Bits, 129 Bits, 130 Bits oder 131 Bits breite Addierer sein. Alle Addierer 104'/105' in diesem Beispiel produzieren einen ausgehendem Übertrag. Die genaue Bit-Breite eines Addierers 104'/105' aus der Schaltung 500 kann aus der Eingabebreite der Operanden A und B (2048 in unserem Beispiel) geteilt durch 2^(Ebene) + alpha berechnet werden, wobei alpha die Gesamtzahl der Addierer, die oberhalb des betroffenen Addierers gefunden werden, repräsentieren kann. Beispielsweise werden die Addierer 104'/105', die auf dem Pfad 590, der den Multiplizierern 540 vorausgeht, gefunden werden, eine solche Größe aufweisen: (2048/2^4)+3 Bit = 131-Bit-Addierer (mit ausgehendem Übertrag). Dieses Beispiel, in dem die Multipliziererschaltungsanordnung 500 in vier Ebenen zerlegt ist, ist lediglich erläuternd. Falls gewünscht können mehr oder weniger Ebenen aus Zerlegungsstufen implementiert sein, wobei die letzte Stufe auf Stücken arbeitet, die effizient multipliziert werden können; das könnte der nativen Multiplizierergröße der Vorrichtung 10 entsprechen, kann jedoch auch Breiten entsprechen, für die andere effiziente handgemachte Implementierungen existieren können. Außerdem können die kleineren Addierer (z. B. 64-Bit-Addierer oder kleiner) unter Verwendung von Carry-Select- oder Ripple-Carry-Addierer implementiert sein, um die Routing-Komplexität zu reduzieren und die Latenz zu verbessern.
  • In dem Beispiel von 5 kann die Multipliziererschaltungsanordnung 500 81 Multiplizierer 540 enthalten, die separate Produkte für jeden der insgesamt 81 entrollten Multipliziererpfade berechnen. Die Multiplizierer 540 können jeweils unter Verwendung eines oder mehrerer DSP-Blöcke (siehe z. B. DSP-Block 12 in 2) innerhalb der Vorrichtung 10 effizient implementiert werden. Das Aufbauen großer Multiplizierer auf diese Weise ermöglicht Eingaben mit hoher Genauigkeit, während es die Anzahl von Blatt-Multipliziererschaltungen 540, die erforderlich sind, um die Gesamtmultiplikation zu implementieren, reduziert. Die Addierer oberhalb der Multiplizierer 540 folgen der sukzessiven rekursiven Zerlegung, während die Schaltungsanordnung 550 unterhalb der Multiplizierer 540 zum Ausführen der Addiererreduktion dient. Addiererreduktionen können unter Verwendung eines redundanten Formkomprimierungsschemas (z. B. ein redundantes 4:2- oder 3:2-Formaddiererkomprimierungsschema oder Verwenden verallgemeinerter Parallelzähler) oder unter Verwendung von Addiererbäumen mit hoher Genauigkeit, die in dem im Gemeinschaftsbesitz befindlichen US-Patentanmeldung Nr. 16/206,748 , eingereicht am 30. November 2019, die hier durch Bezugnahme mit aufgenommen ist, beschrieben ist, effizient implementiert werden.
  • In dem Beispiel von 5 ist die Anzahl der Addierer in jedem Multipliziererpfad irgendwo im Bereich von eins bis vier Addierer tief, während die Größe der Addierer auf jeder Ebene ungefähr halbiert ist, wie durch die Kreise abnehmender Größe gezeigt ist. Da die Addierer relativ groß sind (z. B. auf Eingaben mit mehr als 16 Bits, mehr als 32 Bits, mehr als 64 Bits usw. arbeiten), kann jeder einzelne Addierer eine relativ große Latenz zeigen. Als ein Ergebnis können die Multiplizierer 540, die der letzten Zerlegungsstufe folgen, ihre Eingaben zu unterschiedlichen Zeiten empfangen. Diese unausgewogene Latenz über die verschiedenen Zweige des Zerlegungsbaums ist eine Schaltungsineffizienz, die adressiert werden muss.
  • Immer noch mit Bezug auf 5 weist der Multipliziererpfad 590 nach unten in der Mitte vier Addierer auf, die in Reihe verbunden sind. Dieser rekursive Vierebenen-Addiererstapel ist auch in 6 dargestellt. Wie in 6 gezeigt ist, kann der Addierer 104 in der ersten Stufe, der Addierer 104' in der zweiten Stufe, der Addierer 104'' in der dritten Stufe und der Addierer 104''' in der vierten Stufe zum Berechnen der oberen und unteren Halbsummen für die Eingabe A dienen. Es wird auch eine weitere Kette von Addierern 105 zum Berechnen der oberen und unteren Halbsummen für die Eingabe B vorhanden sein.
    Wie vorstehend beschrieben kann dieser verkettete Addiererstapel mit mehr Stufen weiter zerlegt werden, so dass die Addierer auf der untersten Ebene bis zu einer 64-, 32- oder irgendeiner anderen Bitbreite herunter reduziert sein können, was zu einer effizienten Implementierung der Multiplizierer 540 führt.
  • Bei einer Überprüfung gibt es keinen offensichtlichen Weg, die in 6 gezeigte Addiererkette zu parallelisieren, da jeder Addiererknoten von dem vollständigen und endgültigen Wert des vorhergehenden Addiererknotens in der Kette abhängt. Jeder nachfolgende Addierer in dem Pfad 590 kann lange Latenzzeitspannen (z. B. bis zu 100 oder mehr Zyklen) aufweisen, wobei die Addiererstufe 104 mit der größten Eingabe oben den größten Einfluss auf die Latenz des gesamten Multiplizierers zeigt.
  • Eine Art zum Implementieren einer großen Addiererstufe wie z. B. den 128-Bit-Addierer 104''' in 6 ist in 7A dargestellt. 7A zeigt einen effizienten Addierer 700 mit hoher Genauigkeit, der zum Handhaben der Summierung großer Eingabeoperanden durch Zerlegen der Operanden in kleinere Segmente geeignet ist. In dem Beispiel von 7A empfängt der Addierer 700 zwei 128-Bit-Operanden A[128:1] und B[128:1], die jeweils in vier 32-Bit-Segmente (z. B. A[32:1], A[64:33], A[96:65] und A[128:97] bzw. B[32:1], B[64:33], B[96:65] und B[128:97]) aufgeteilt werden.
  • Der Addierer 700 kann einen ersten Segmentdecodierer 702-1, der konfiguriert ist, die ersten Eingabesegmente (d. h. A[31:1] und B[32:1]) zu empfangen, einen zweiten Segmentdecodierer 702-2, der konfiguriert ist, die zweiten Eingabesegmente (d. h. A[64:33] und B[64:33]) zu empfangen, und einen dritten Segmentdecodierer 702-3, der konfiguriert ist, die dritten Eingabesegmente (d. h. A[96:65] und B[96:65]) zu empfangen, enthalten. Jeder Segmentdecodierer 702 kann einen ersten Segmentaddierer 704a, der die ankommenden Eingabe-Bits summiert, während ein eingehendes Übertrag-Bit von ‚0‘ empfängt, und außerdem einen zweiten Segmentaddierer 704b, der die ankommenden Eingabe-Bits summiert, während er ein eingehendes Übertrag-Bit von ‚1‘ empfängt, enthalten.
  • Auf diese Weise konfiguriert stellt der Segmentaddierer 704a ein „Erzeugen“- (G-) Signal an seinem Übertragausgangsanschluss bereit, während der Segmentaddierer 704b ein „Fortpflanzen“- (P-) Signal an einem Übertragausgangsanschluss bereitstellt. Beispielsweise stellt der Segmentaddierer 704a in dem Decodierer 702-1 ein erstes Erzeugen-Signal G1 an seinem Übertragausgang bereit; der Segmentaddierer 704b in dem Decodierer 702-1 stellt ein erstes Fortpflanzen-Signal P1 an seinem Übertragausgang bereit; der Segmentaddierer 704a in dem Decodierer 702-2 stellt ein zweites Erzeugen-Signal G2 an seinem Übertragausgang bereit; der Segmentaddierer 704b in dem Decodierer 702-2 stellt ein zweites Fortpflanzen-Signal P2 an seinem Übertragausgang bereit; der Segmentaddierer 704a in dem Decodierer 702-3 stellt ein drittes Erzeugen-Signal G3 an seinem Übertragausgang bereit; und der Segmentaddierer 704b in dem Decodierer 702-3 stellt ein drittes Fortpflanzen-Signal P3 an seinem Übertragausgang bereit. Die Erzeugen- und Fortpflanzen-Signale, die aus den Segmentdecodierern 702 ausgegeben werden, können in einem Präfix-Netz 706 empfangen werden. Das Präfix-Netz 706 kann unter Verwendung einer Kogge-Stone-Topologie, einer Brent-Kung-Topologie, einer Sklansky-Topologie, einer Pipeline-Topologie und/oder irgendeiner anderen geeigneten Topologie implementiert sein. Ein Präfix-Netz kann eine baumartige Topologie aufweisen und kann deshalb manchmal als ein Präfix-Baum bezeichnet sein. In jedem Fall kann das Präfix-Netz 706 die Erzeugen- und Fortpflanzen-Signale von den Decodierern 706 als Eingaben empfangen und entsprechende Übertrag-Bits erzeugen.
  • Der Addierer 700 kann ferner die letzten Segmentaddierer 710 zum Berechnen der letzten korrekten Summen-Bits enthalten. Der Segmentaddierer 704a des Decodierers 702-1 kann eine Summenausgabe aufweisen, die zu den unteren Summenausgabe-Bits C[32:1] weitergeleitet werden können (möglicherweise verzögert unter Verwendung eines oder mehrerer Register 708), mit C=(A+B). Der Segmentaddierer 704a des Decodierers 702-2 kann eine Summenausgabe aufweisen, die unter Verwendung eines oder mehrerer Register 708 verzögert und dann mit dem Übertrag-Bit carry[32], das aus dem Präfix-Netz 706 ausgegeben wird, unter Verwendung des letzten Segmentaddierers 710-2 kombiniert werden kann, um die Summenausgabe-Bits C[64:33] zu erhalten. Indessen weist der Segmentaddierer 704a eines Decodierers 702-3 eine Summenausgabe auf, die unter Verwendung eines oder mehrerer Register 708 verzögert und dann mit dem Übertrag-Bit carry[64], das aus dem Präfix-Netz 706 ausgegeben wird, unter Verwendung des letzten Segmentaddierers 710-3 kombiniert werden kann, um die Summenausgabe-Bits C[96:65] zu erhalten. Schließlich können die Eingaben A[128:97] und B[128:97] aus dem oberen Segment unter Verwendung eines oder mehrerer Register 708 verzögert und an dem letzten Segmentaddierer 710-4 mit dem Übertrag-Bit carry[96], das aus dem Präfix-Netz 706 ausgegeben wird, kombiniert werden, um die Summenausgabe-Bits C[128:97] zu erhalten. Obwohl nur ein 128-Bit-Addierer 700 in 7A dargestellt ist, kann diese beispielhafte Addiererstruktur vergrößert werden, um bis zu Tausenden von Bits mit minimalem Anstieg der Latenz zu unterstützen (z. B. durch Einführen von mehr Segmenten und/oder breiteren Segmenten). Diese Addiererstruktur kann außerdem andere Techniken oder eine Kombination von Techniken zum Erhalten der endgültigen Summen-Bits verwenden. Diese enthalten, ohne jedoch darauf beschränkt zu sein: Multiplexierschaltungsanordnung zwischen Summen, die durch 704a und 704b produziert werden, Subtraktion des Übertrags von 704b usw.
  • 7B stellt eine Anordnung dar, die die Addiererstruktur von 7A verwendet, um die Karazuba-Zerlegung zu implementieren. Wie in 7B gezeigt ist, kann der Addierer 700 einen segmentierten 128-Bit-Addierer in einer ersten Zerlegungsstufe enthalten, der mit dem Addierer 700' verkettet ist, der einen segmentierten 65-Bit-Addierer in einer zweiten Zerlegungsstufe repräsentiert. Durch Halten der Segmentgröße konstant bei 32 Bits wird eine kleinere Anzahl von Segmenten in der zweiten Stufe benötigt (z. B. werden nur zwei Segmentdecodierer 702 in dem Addierer 700' benötigt, um das obere Halbergebnis und das untere Halbergebnis aus der vorhergehenden Stufe zu addieren). Das Problem mit diesem Typ der vertikal gestapelten Addiererstruktur von 7B ist, dass die zweite Addiererstufe auf das vollständige und endgültige Ergebnis aus der vorhergehenden Stufe warten muss, bevor sie das Berechnen ihrer aktuellen Summe starten kann. Als ein Ergebnis addieren sich die Latenzen jeder Addiererstufe ohne irgendeine Parallelität, was zu einer unannehmbar verlängerten Latenzzeitspanne für große Multiplizierer führt, wenn die Anzahl der Zerlegungsstufen erhöht wird.
  • In Übereinstimmung mit einer Ausführungsform ist eine Addiererschaltungsanordnung wie z. B. der Addierer 800 von 8 bereitgestellt, der eine zusammengeführte Addiererstruktur zeigt, in der die Segmentaddierer an einer gegebenen Zerlegungsebene nicht von der Ausgabe des Präfix-Netzes in dieser Ebene abhängig sind. Mit anderen Worten muss eine nachfolgende Addiererstufe nicht mehr auf das vollständige und endgültige Ergebnis aus der vorhergehenden Addiererstufe warten, was dazu beitragen kann, die Latenz der Addiererkette wesentlich zu reduzieren.
  • 8 stellt ein Beispiel eines 256-Bit-Addierers 800 unter der Annahme, dass jeder Eingabesegmentdecodierer 201 32 Bit breit ist, dar. Wie in 8 gezeigt ist, kann der Addierer 800 acht Eingabesegmentdecodierer 201 enthalten (z. B. die Decodierer 201-1, 201-2, 201-3, 201-4, 201-5, 201-6, 201-7 und 201-8). Jeder Segmentdecodierer 201 weist die gleiche duale Segmentaddiererstruktur auf, die in dem Beispiel der 7A und 7B gezeigt ist, und kann somit entsprechende Erzeugen- (G-) und Fortpflanzen- (P-) Signale ausgeben. Die Erzeugen- und Fortpflanzen-Signale, die von jedem Eingabesegmentdecodierer 201 erzeugt werden, werden durch das Präfix-Netz 210 empfangen. Es wird darauf hingewiesen, dass der Addierer 800 ferner letzte Segmentaddierer (siehe z. B. die Addierer 710 in 7A) enthalten kann, die mit dem Ausgang des Präfix-Netzes 210 gekoppelt sind, um die korrekten Summen-Bits für diese Stufe zu berechnen. Diese letzten Segmentaddierer sind tatsächlich innerhalb des Addierers 800 voreinstellt, sind jedoch aus der Darstellung von 8 weggelassen, um die vorliegenden Ausführungsformen nicht zu verdecken.
  • Der Addierer 800 kann ferner Zusatzsegmentaddierer 202 enthalten, die konfiguriert sind, die Summen aus den oberen und unteren Hälften, die direkt aus den Decodierern 201 ausgegeben werden, aufzuaddieren. Anderes als die letzten Segmentaddierer 710 in 7A erfordern die Zusatzsegmentaddierer 202 kein Übertrageingabesignal von dem zugeordneten Präfix-Netz 210, was somit ermöglicht, dass die Addierer 202 sofort mit dem Berechnen ihrer Ausgabe beginnen, unmittelbar nach dem der Decodierer 201 fertig ist (z. B. können der Addierer 704a innerhalb des Decodierers 201 und der Zusatzaddierer 202 effektiv in eine Addierer-Pipeline „zusammengeführt“ werden, die nicht darauf warten muss, bis die korrekte Summe aus den letzten Segmentaddierern 710 ausgegeben wird). Mit anderen Worten umgeht der Betrieb der Zusatzsegmentaddierers 202 das Präfix-Netz 210.
  • In dem Beispiel von 8 kann der Zusatzaddierer 202-1 konfiguriert sein, die unteren Halbsummen-Bits, die direkt aus dem Decodierer 201-1 ausgegeben werden, und die oberen Halbsummen-Bits, die direkt aus dem Decodierer 201-5 ausgegeben werden, zu kombinieren. Die Erzeugen- (G-) Bits, die diesen Segmenten zugeordnet sind, werden unter Verwendung eines entsprechenden 1-Bit-Addierers 203 (manchmal als Erzeugen-Bit-Addierer bezeichnet) aufsummiert. Die Summenausgabewerte jedes Addierers 203 und die Übertragausgabewerte des Addierers 202 können unter Verwendung eines weiteren Addierers 204 aufsummiert werden. Die Ausgabe der Addierers 204 fängt somit alle Überläufe aus einem Segment, die für die aktuelle Ebene akkumuliert sind, auf. Der Addierer 204 kann deshalb manchmal als ein Segmentüberlaufaddierer bezeichnet sein. Die verbleibenden Zusatzsegmentaddierer 202-2 und 202-3 können auch mit ihrem eigenen Erzeugen-Bit-Addierer 203 und Segmentüberlaufaddierer 204 ausgestattet sein. Schließlich ist der Segmentaddierer 202-4 nur mit dem Segmentüberlaufaddierer 204 ausgestattet, der das Erzeugen-Bit (G) aus 201-8 mit dem ausgehendem Übertrag aus 202-4 summiert.
  • Zum Wiederherstellen der korrekten Summe auf der untersten Ebene kann dann die akkumulierte Summe der Überläufe, die durch den Addierer 204 an irgendeinem Punkt ausgegeben werden, zu dem nächsten Segment derselben Ebene addiert werden (z. B. kann die Ausgabe des Addierers 204, der dem Zusatzaddierer 202-1 zugeordnet ist, mit der Summenausgabe des Addierers 202-2 unter Verwendung des Segmentdecodierers 205-2 kombiniert werden). Jeder Segmentdecodierer 205 zeigt die gleiche duale Segmentaddiererstruktur, die in dem Beispiel der 7A und 7B gezeigt ist, und kann somit entsprechende Erzeugen-(G-) und Fortpflanzen- (P-) Signale ausgeben. Die Ausgabe des Addierers 204, der dem Zusatzaddierer 202-2 zugeordnet ist, kann mit der Summenausgabe des Addierers 202-3 unter Verwendung des Segmentdecodierers 205-3 kombiniert werden. Ähnlich kann die Ausgabe des Addierers 204, der dem Zusatzaddierer 202-3 zugeordnet ist, mit der Summenausgabe des Addierers 202-4 unter Verwendung des Segmentdecodierers 205-4 kombiniert werden. Der Segmentdecodierer 205-1 kann nur die Summenausgabe aus dem Addierer 202-1 empfangen, ohne irgendeine zusätzliche Übertragüberlaufeingabe.
  • Die Addiererstruktur der zweiten Zerlegungsebene 800' ist ähnlich der ersten Ebene. Die Segmentdecodierer 205 können jeweils G- und P-Bis zu dem Präfix-Netz 212 ausgeben und können außerdem Summen-Bits zu den letzten Segmentaddierern 206 ausgeben, die auch Übertrag-Bits von dem Präfix-Addierer 212 empfangen. Die Reduktion der Anzahl von Segmentaddierern von einer Stufe zu der nächsten kann fortgesetzt werden, bis nur noch zwei Segmente verbleiben, und für so viele Stufen, wie für die Karazuba-Zerlegung erforderlich ist.
  • Damit die letzten Segmentaddierer 206 die korrekten Summen berechnen, müssen alle Informationen, die durch das Präfix-Netz 210 erzeugt werden, empfangen und in dem Präfix-Netz 212 verwendet werden, um sicherzustellen, dass alle potentiellen Übertragsignale zwischen den mittleren beiden Segmenten berücksichtigt werden (siehe z. B. den Präfix-Übertragsignalpfad 211 in 8). Das Präfix-Netz 212 kann halb so groß sein wie das Präfix-Netz 210 und kann eine geringere Logiktiefe als das Präfix-Netz 210 aufweisen. Beispielsweise kann die Addierer-BitPosition (n/2 + 1) einen möglichen eingehenden Übertrag aus der Addiererposition n/2 aufweisen. Es gibt verschiedene Arten, diese Übertrag-Informationen zwischen den aufeinanderfolgenden Präfix-Netzen zu berechnen. In einer geeigneten Anordnung kann die Präfix-Berechnung aus dem Präfix-Baum der vorhergehenden Stufe extrahiert und in den Präfix-Baum der aktuellen Stufe eingegeben werden, der ein Segment länger ist, um die Eingabe in das erste Segment der aktuellen Stufe aufzunehmen. In dem Beispiel von 8 sind wenigstens zwei Pipeline-Stufen innerhalb der aktuellen Stufe vorhanden (z. B. die Übertrag- und Überlauf-Addierer 202, 203 und 204, gefolgt von den Segmentdecodierern 205), was der vorhergehenden Stufe zwei Pipelines in dem Präfix-Netz 210 gibt, um das mittlere G/P-Paar zu produzieren.
  • In Übereinstimmung mit einer weiteren geeigneten Anordnung können alle Erzeugen/Fortpflanzen-Paare aus den Segmentaddierern der vorhergehenden Stufe zu der aktuellen Stufe weitergeleitet werden. In diesem Szenario wird der Präfix-Baum 212 so breit sein wie der Präfix-Baum 210. Das kann tolerierbar sein, da Präfix-Bäume relativ klein sind, häufig nur 5 % oder weniger der gesamten Kosten eines Addierers mit hoher Genauigkeit besetzen. Falls gewünscht kann eine Kombination dieser Techniken verwendet werden, um mehr Flexibilität bei der Verteilung von Pipelines über die Addierer-Konstruktion bereitzustellen.
  • Das Beispiel von 8, in dem die Addiererschaltungsanordnung 800 in acht 32-Bit-Segmente zur Zerlegung unterteilt ist, ist lediglich erläuternd und nicht dafür vorgesehen, den Schutzbereich der vorliegenden Ausführungsformen einzuschränken. Allgemein kann diese zusammengeführte Pipeline-Addiererstruktur des in 8 gezeigten Typs auf Addierer irgendeiner Bit-Breite erweitert werden, um zum Unterstützten von Multipliziererzerlegungsschemas auf Eingabeoperanden mit Hunderten oder Tausenden Bits beizutragen, wobei die Segmente weniger als 32 Bits, mehr als 32 Bits oder von irgendeiner Größe sein können.
  • 9 ist ein Diagramm einer erläuternden Multipliziererschaltungsanordnung, die einen Datenpfad zusammengeführter Addierer und einen separaten Datenpfad verketteter Addierer in Übereinstimmung mit einer Ausführungsform enthält. Der Datenpfad 902 zusammengeführter Addierer enthält die in 8 dargestellte zusammengeführte Addiererstruktur, wobei Eingabesegmentaddierer 201 Ausgänge aufweisen, die direkt in die Zusatzaddierer 202, Erzeugungs-Bit-Addierer 203 und Überlaufsegmentaddierer 204 einspeisen, ohne irgendeine Abhängigkeit von der Ausgabe des Präfix-Baums 210. Die entsprechenden Segmentdecodierer 205, die Signale aus den Zusatzaddierern 202 und den Segmentüberlaufaddierern 204 empfangen, hängen ebenfalls nicht von den Ausgaben des vorhergehenden Präfix-Baums 210 ab. Mit anderen Worten kann die zusammengeführte Addiererschaltungsanordnung 902 vollständig unabhängig von den Präfix-Baum-Netzen sein. Umgekehrt sind die Präfix-Netze auch im Wesentlichen unabhängig von der zusammengeführten Addiererstruktur, die aus den Zusatz- und zugeordneten Segmentaddierern besteht. Dieses Strukturmerkmal ermöglicht es, dass der Addiererpfad in einer Pipeline arbeitet, um seine Gesamtlatenz wesentlich zu reduzieren.
  • Der verkettete Addierdatenpfad 904, der Segmentaddierer wie z. B. die Addierer 710 von dem in 7A dargestellten Typ enthalten kann, arbeitet parallel mit der zusammengeführten Addiererstruktur von 8 zum Gebrauch beim Berechnen der korrekten Summen-Bits. Im Gegensatz zu der zusammengeführten Addiererstruktur 902 verwendet die verkettete Addiererstruktur 904 Übertrageingaben aus dem Präfix-Netz und muss deshalb darauf warten, dass das Präfix-Netz das Erzeugen der Übertragsignale beendet, bevor die korrekte Summe auf jeder Ebene berechnet werden kann.
  • 10 stellt dar, wie die zusammengeführte/Pipeline-Addiererstruktur auf mehrere Ebenen erweitert werden kann, bis die Anzahl letzter Segmentaddierer in den unteren Ebenen ausreichend klein ist. Wie bereit vorstehend beschrieben sind Ausgabesummenaddierer 710 (siehe 7A und 7B), die die verzögerten Eingabesegmentaddiererausgaben empfangen und die Überträge, die durch den Präfix-Baum erzeugt werden, addieren, auf jeder Ebene notwendig, sind jedoch aus 10 weggelassen, um das Verdecken der vorliegenden Ausführungsformen zu vermeiden. Wie in 9 gezeigt ist, kann die Pipeline des Präfix-Baums unabhängig von den Berechnungen der Pipeline zusammengeführter Addierer sein. Der Präfix-Baum für frühere Stufen kann tiefer in Pipelines sein als der Präfix-Baum in einer späteren Stufe, was teilweise auf die breitere Verteilung der unterschiedlichen Zusatzaddierer 202, Erzeugungs-Bit-Addierer 203 und Segmentüberlaufaddierer 204 in den früheren Stufen im Vergleich zu den späteren Stufen zurückzuführen ist.
  • Wie in 10 gezeigt ist, kann die zweite Ebene außerdem Zusatzsegmentaddierer 206-1 und 206-2 und zugeordnete Erzeugungs-Bit- und Überlaufaddierer 207 und 208 enthalten. Insbesondere kann der Zusatzaddierer 206-1 konfiguriert sein, die unteren Halbsummen-Bits, die direkt aus dem Decodierer 205-1 ausgegeben werden, und die oberen Halbsummen-Bits, die direkt aus dem Decodierer 205-3 ausgegeben werden, zu kombinieren. Es wird darauf hingewiesen, dass der Betrieb der Zusatzaddierer 206 immer noch das Präfix-Netz 212 umgeht (z. B. die zusätzlichen Addierer 206 besitzen keine Eingaben, die von den Übertragsignalen, die direkt durch den Präfix-Baum 212 ausgegeben werden, abhängen), was zum Reduzieren der Gesamtlatenz beiträgt. Die Erzeugen- (G-) Bits, die diesem Segment zugeordnet sind, werden dann unter Verwendung eines entsprechenden Erzeugen-Bit-Addierers 207 aufsummiert. Die Übertragausgabewerte jedes Addierers 207 und Addierers 206 können unter Verwendung eines weiteren Segmentüberlaufaddierers 208 aufsummiert werden. Ähnlich kann der Zusatzaddierer 206-2 konfiguriert sein, die unteren Halbsummen-Bits, die direkt aus dem Decodierer 205-2 ausgegeben werden, und die oberen Halbsummen-Bits, die direkt aus dem Decodierer 205-4 ausgegeben werden, zu kombinieren. Die Erzeugen- (G-) Bits, die diesem Segment zugeordnet sind, werden dann mit der Übertragausgabe des Addierers 206 unter Verwendung des Segmentüberlaufaddierers 208 aufsummiert.
  • Die akkumulierte Summe der Überläufe, die durch den Addierer 208 an irgendeinem Punkt ausgegeben wird, kann dann zu dem nächsten Segment derselben Ebene addiert werden. Beispielsweise kann die Ausgabe des Addierers 208, der dem Zusatzaddierer 206-1 zugeordnet ist, mit der Summenausgabe des Addierers 206-2 unter Verwendung des Segmentdecodierers 209-2 kombiniert werden. Jeder Segmentdecodierer 209 zeigt die gleiche duale Segmentaddiererstruktur wie sie in dem Beispiel von 7A und 7B gezeigt ist. Der Segmentdecodierer 209-1 kann nur die Summenausgabe aus dem Addierer 206-1 empfangen, ohne irgendeine zusätzliche Übertragüberlaufeingabe. Die Decodierer 209-1 und 209-2 geben G/P-Bits zu dem entsprechenden Präfix-Netz 214 aus. Das Präfix-Netz 214 kann ferner Übertragsignale aus dem vorhergehenden Präfix-Netz 212 über den Pfad 213 empfangen. Die Übertragsignale, die durch die Pfade 211 und 213 nach unten von einem Präfix-Baum zu dem nächsten zugeführt werden, werden verwendet, um die korrekten Summen an dem Ende der gesamten Addiererkette zu erhalten.
  • Zusätzlich zum Reduzieren der Gesamtlatenz gleicht die zusammengeführte Addierer-Pipeline-Struktur mit mehreren Ebenen der 8-10 die Latenzen über die aufeinanderfolgenden Addiererstufen aus, so dass die Ausgaben aus allen verschiedenen Addiererzweigen an den Blattmultiplizierereingängen ungefähr der gleichen Pipeline-Tiefe ankommen (siehe 5, wobei Teilsummen an den Multiplizierern 540 über ähnliche Pipeline-Tiefen zu im Wesentlichen derselben Zeit oder innerhalb zwei bis drei Taktzyklen, innerhalb fünf Taktzyklen, innerhalb 10 Taktzyklen, innerhalb 2-10 -Taktzyklen, innerhalb 15 Taktzyklen, innerhalb 20 Taktzyklen usw. ankommen). Das kann erreicht werden, da die verschiedenen Latenzen über jeden Addierzweig weitgehend durch die Latenz des obersten Präfix-Netzes der Zerlegung bestimmt oder begrenzt werden.
  • Obwohl die Verfahren der Operationen in einer spezifischen Reihenfolge beschrieben worden sind, ist zu verstehen, dass andere Operationen zwischen beschriebenen Operationen ausgeführt werden können, beschriebene Operationen angepasst werden können, so dass sie zu leicht unterschiedlichen Zeiten stattfinden, oder beschriebene Operationen in einem System verteilt sein können, das das Stattfinden der Verarbeitungsoperationen in verschiedenen Zeitabständen, die der Verarbeitung zugeordnet sind, ermöglicht, solange die Verarbeitung der übergreifenden Operationen auf eine gewünschte Weise ausgeführt wird.
  • Die Ausführungsformen sind bisher mit Bezug auf integrierte Schaltungen beschrieben worden. Die Verfahren und Einrichtungen, die hier beschrieben sind können in irgendeine geeignete Schaltung integriert werden. Beispielsweise können sie in zahlreiche Typen von Vorrichtungen integriert sein, wie z. B. programmierbare Logikvorrichtungen, anwendungsspezifische Standardprodukte (ASSPs) und anwendungsspezifische integrierte Schaltungen (ASICs), Mikrosteuereinheiten, Mikroprozessoren, zentrale Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs) usw. Beispiele für programmierbare Logikvorrichtungen enthalten Logik programmierbarer Arrays (PALs), programmierbare Logik-Arrays (PLAs), im Feld programmierbare Logik-Arrays (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellen-Arrays (LCAs), komplexe programmierbare Logikvorrichtungen (CPLDs) und im Feld programmierbare Gatter-Arrays (FPGAs), um nur einige zu nennen.
  • Die in einer oder mehreren Ausführungsformen hier beschriebene programmierbare Logikvorrichtung kann Teil eines Datenverarbeitungssystems sein, das eine oder mehrere aus den folgenden Komponenten enthält: einen Prozessor; Speicher; IO-Schaltungsanordnung; und Peripheriegeräte. Die Datenverarbeitung kann in einer großen Vielzahl von Anwendungen verwendet werden, wie z. B. Computer-Vernetzung, Daten-Vernetzung, Instrumentierung, Videoverarbeitung, digitale Signalverarbeitung oder irgendeiner geeigneten anderen Anwendung, in der der Vorteil der Verwendung programmierbar oder neu programmierbarer Logik wünschenswert ist. Die programmierbare Logikvorrichtung kann verwendet werden, um eine Vielzahl unterschiedlicher Logikfunktionen auszuführen. Beispielsweise kann die programmierbare Logikvorrichtung als ein Prozessor oder eine Steuereinheit konfiguriert sein, der/die in Kooperation mit einem Systemprozessor arbeitet. Die programmierbare Logikvorrichtung kann außerdem als ein Vermittler zum Vermitteln des Zugriffs auf ein gemeinsam verwendetes Betriebsmittel in dem Datenverarbeitungssystem verwendet werden. In noch einem weiteren Beispiel kann die programmierbare Logikvorrichtung als eine Schnittstelle zwischen einem Prozessor und einer der anderen Komponenten in dem System konfiguriert sein.
  • Beispiele:
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
    • Beispiel 1 ist eine integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die konfiguriert ist, Operanden, die in mehrere Segmente aufgeteilt sind, zu empfangen, wobei die Multipliziererschaltungsanordnung Folgendes umfasst: eine erste Segmentdecodiererschaltung, die konfiguriert ist, erste Erzeugen- und Fortpflanzen-Bits und erste Summen-Bits auszugeben; eine zweite Segmentdecodiererschaltung, die konfiguriert ist, zweite Erzeugen- und Fortpflanzen-Bits und zweite Summen-Bits auszugeben; ein Präfix-Netz, das konfiguriert ist, die ersten Erzeugen- und Fortpflanzen-Bits aus der ersten Segmentdecodiererschaltung zu empfangen und die zweiten Erzeugen- und Fortpflanzen-Bits aus der zweiten Segmentdecodiererschaltung zu empfangen; und eine Zusatzaddiererschaltung, die konfiguriert ist, die ersten Summen-Bits aus der ersten Segmentdecodiererschaltung zu empfangen und die zweiten Summen-Bits aus der zweiten Segmentdecodiererschaltung zu empfangen, wobei die Zusatzaddiererschaltung konfiguriert ist, entsprechende Ausgabe-Summen-Bits zu berechnen, ohne irgendwelche Signale aus dem Präfix-Netz zu empfangen, und wobei das Präfix-Netz konfiguriert ist, unabhängig von der Zusatzaddiererschaltung zu arbeiten.
    • Beispiel 2 ist die integrierte Schaltung von Beispiel 1, wobei die erste Segmentdecodiererschaltung optional Folgendes umfasst: einen ersten Segmentaddierer, der konfiguriert ist, das erste Erzeugen-Bit und die ersten Summen-Bits auszugeben; und einen zweiten Segmentaddierer, der konfiguriert ist, ein festgelegtes Übertrageingangssignal zu empfangen und das erste Fortpflanzen-Bit auszugeben.
    • Beispiel 3 ist die integrierte Schaltung eines der Beispiele 1-2, die optional ferner Folgendes umfasst: eine erste zusätzliche Addiererschaltung, die konfiguriert ist, das erste Erzeugen-Bit aus der ersten Segmentdecodiererschaltung und das zweite Erzeugen-Bit aus der zweiten Segmentdecodiererschaltung zu empfangen.
    • Beispiel 4 ist die integrierte Schaltung von Beispiel 3, die optional ferner Folgendes umfasst: eine zweite zusätzliche Addiererschaltung, die konfiguriert ist, ein Signal von der ersten zusätzlichen Addiererschaltung und ein Überlauf-Bit von der Zusatzaddiererschaltung zu empfangen.
    • Beispiel 5 ist die integrierte Schaltung von Beispiel 4, die optional ferner Folgendes umfasst: eine dritte Segmentdecodiererschaltung, die konfiguriert ist, die ausgegebenen Summen-Bits von der Zusatzaddiererschaltung zu empfangen; und eine vierte Segmentdecodiererschaltung, die konfiguriert ist, ein Ausgangssignal von der zweiten zusätzlichen Addiererschaltung zu empfangen.
    • Beispiel 6 ist die integrierte Schaltung von Beispiel 5, die optional ferner Folgendes umfasst: ein zusätzliches Präfix-Netz, das konfiguriert ist, Erzeugen- und Fortpflanzen-Bits aus der dritten Segmentdecodiererschaltung und der vierten Segmentdecodiererschaltung zu empfangen.
    • Beispiel 7 ist die integrierte Schaltung von Beispiel 6, wobei das zusätzliche Präfix-Netz optional ferner konfiguriert ist, ein Übertragsignal direkt von dem Präfix-Netz über einen Präfix-Übertragsignalpfad zu empfangen.
    • Beispiel 8 ist die integrierte Schaltung eines der Beispiel 6-7, die optional ferner Folgendes umfasst: eine letzte Addiererschaltung, die konfiguriert ist, Summen-Bits von der dritten Segmentdecodiererschaltung und ein Übertragsignal von dem zusätzlichen Präfix-Netz zu empfangen.
    • Beispiel 9 ist eine integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die Folgendes umfasst: ein erstes Präfix-Netz; ein zweites Präfix-Netz, das konfiguriert ist, Übertragsignale von dem ersten Präfix-Netz über einen Präfix-Übertragsignalpfad zu empfangen; und eine Decodiererschaltung, die konfiguriert ist, Erzeugen- und Fortpflanzen-Bits zu dem zweiten Präfix-Netz ohne Verwendung irgendwelcher Signale von dem ersten Präfix-Netz auszugeben.
    • Beispiel 10 ist die integrierte Schaltung von Beispiel 9, wobei die Decodiererschaltung optional Folgendes umfasst: einen ersten Segmentaddierer, der konfiguriert ist, das Erzeugen-Bit und Summen-Bits auszugeben; und einen zweiten Segmentaddierer, konfiguriert ist, ein festgelegtes Übertrageingangssignal zu empfangen und das Fortpflanzen-Bit auszugeben.
    • Beispiel 11 ist die integrierte Schaltung eines der Beispiele 9-10, wobei das zweite Präfix-Netz optional kleiner ist als das erste Präfix-Netz.
    • Beispiel 12 ist die integrierte Schaltung eines der Beispiel 9-11, die optional ferner Folgendes umfasst: eine erste zusätzliche Decodiererschaltung, die konfiguriert ist, erste Erzeugen- und Fortpflanzen-Bits zu dem ersten Präfix-Netz auszugeben; und eine zweite zusätzliche Decodiererschaltung, die konfiguriert ist, zweite Erzeugen- und Fortpflanzen-Bits zu dem ersten Präfix-Netz auszugeben.
    • Beispiel 13 ist die integrierte Schaltung von Beispiel 12, wobei die erste zusätzliche Decodiererschaltung optional ferner konfiguriert ist, erste Summen-Bits auszugeben, und wobei die zweite zusätzliche Decodiererschaltung optional ferner konfiguriert ist, zweite Summen-Bits auszugeben.
    • Beispiel 14 ist die integrierte Schaltung von Beispiel 13, die optional ferner Folgendes umfasst: einen Erzeugen-Bit-Addierer, der konfiguriert ist, das erste Erzeugen-Bit aus der ersten zusätzlichen Decodiererschaltung und das zweite Erzeugen-Bit aus der zweiten zusätzlichen Decodiererschaltung zu kombinieren.
    • Beispiel 15 ist die integrierte Schaltung von Beispiel 14, die optional ferner Folgendes umfasst: einen Zusatzaddierer, der konfiguriert ist, die ersten Summen-Bits aus der ersten zusätzlichen Decodiererschaltung und die zweiten Summen-Bits aus der zweiten zusätzlichen Decodiererschaltung zu kombinieren, wobei der Zusatzaddierer ferner konfiguriert ist, unabhängig von dem ersten und dem zweiten Präfix-Netz zu arbeiten.
    • Beispiel 16 ist die integrierte Schaltung von Beispiel 15, die optional ferner Folgendes umfasst: einen Überlaufaddierer, der konfiguriert ist, Bits, die aus dem Erzeugen-Bit-Addierer ausgegeben werden, und ein ausgehendes Übertrag-Bit, das aus dem Zusatzaddierer ausgegeben wird, zu kombinieren.
    • Beispiel 17 ist die integrierte Schaltung von Beispiel 16, die optional ferner Folgendes umfasst: eine dritte zusätzliche Decodiererschaltung, die konfiguriert ist, Erzeugen- und Fortpflanzen-Bits zu dem zweiten Präfix-Netz unter Verwendung von Signalen, die aus dem Überlaufaddierer ausgegeben werden, auszugeben.
    • Beispiel 18 ist die integrierte Schaltung eines der Beispiele 9-17, wobei die Multipliziererschaltungsanordnung optional ferner zusätzliche Präfix-Netze, die mit dem ersten und dem zweiten Präfix-Netz gekoppelt sind, umfasst.
    • Beispiel 19 ist eine integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die in mehrere Addiererstufen zerlegt ist, wobei die Multipliziererschaltungsanordnung mehrere Multipliziererschaltungen umfasst, die konfiguriert sind, Summensignale über einen Baum aus Pfaden zu empfangen, und wobei die Latenzen der Summensignale, die den Baum aus Pfaden durchlaufen, ausgewogen sind, so dass die Summensignale gleichzeitig oder innerhalb weniger Taktzyklen an den mehreren Multipliziererschaltungen ankommen.
    • Beispiel 20 ist die integrierte Schaltung von Beispiel 19, wobei die Multipliziererschaltungsanordnung optional unter Verwendung eines Karazuba-Multipliziererzerlegungsschemas zerlegt ist.
    • Beispiel 21 ist die integrierte Schaltung eines der Beispiele 19-20, wobei die Latenz jedes der Summensignale optional durch ein Präfix-Netz in einer obersten Addiererstufe in den mehreren Addiererstufen bestimmt wird.
    • Beispiel 22 ist die integrierte Schaltung eines der Beispiele 19-21, wobei die Multipliziererschaltungsanordnung optional in mehr als zwei Addiererstufen, von denen jede eine separate Präfix-Netzschaltung enthält, zerlegt ist.
  • Beispielsweise können alle optionalen Merkmale der vorstehend beschriebenen Einrichtung auch in Bezug auf das Verfahren oder den Prozess, das/der hier beschrieben ist, implementiert sein. Das Vorstehende ist lediglich erläuternd für die Prinzipien dieser Offenbarung, und verschiedene Modifikationen können durch Fachleute vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in irgendeiner Kombination implementiert werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/206748 [0025]

Claims (25)

  1. Integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die konfiguriert ist, Eingabeoperanden, die in mehrere Segmente aufgeteilt sind, zu empfangen, wobei die Multipliziererschaltungsanordnung Folgendes umfasst: eine erste Segmentdecodiererschaltung, die konfiguriert ist, erste Erzeugen- und Fortpflanzen-Bits und erste Summen-Bits auszugeben; eine zweite Segmentdecodiererschaltung, die konfiguriert ist, zweite Erzeugen- und Fortpflanzen-Bits und zweite Summen-Bits auszugeben; ein Präfix-Netz, das konfiguriert ist, die ersten Erzeugen- und Fortpflanzen-Bits aus der ersten Segmentdecodiererschaltung zu empfangen und die zweiten Erzeugen- und Fortpflanzen-Bits aus der zweiten Segmentdecodiererschaltung zu empfangen; und eine Zusatzaddiererschaltung, die konfiguriert ist, die ersten Summen-Bits aus der ersten Segmentdecodiererschaltung zu empfangen und die zweiten Summen-Bits aus der zweiten Segmentdecodiererschaltung zu empfangen, wobei die Zusatzaddiererschaltung konfiguriert ist, entsprechende Ausgabesummen-Bits zu berechnen, ohne irgendwelche Signale aus dem Präfix-Netz zu empfangen, und wobei das Präfix-Netz konfiguriert ist, unabhängig von der Zusatzaddiererschaltung zu arbeiten.
  2. Integrierte Schaltung nach Anspruch 1, wobei die erste Segmentdecodiererschaltung Folgendes umfasst: einen ersten Segmentaddierer, der konfiguriert ist, das erste Erzeugen-Bit und die ersten Summen-Bits auszugeben; und einen zweiten Segmentaddierer, der konfiguriert ist, ein festgelegtes Übertrageingangssignal zu empfangen und das erste Fortpflanzen-Bit auszugeben.
  3. Integrierte Schaltung nach einem der Ansprüche 1-2, die ferner Folgendes umfasst: eine erste zusätzliche Addiererschaltung, die konfiguriert ist, das erste Erzeugen-Bit aus der ersten Segmentdecodiererschaltung und das zweite Erzeugen-Bit aus der zweiten Segmentdecodiererschaltung zu empfangen.
  4. Integrierte Schaltung nach Anspruch 3, die ferner Folgendes umfasst: eine zweite zusätzliche Addiererschaltung, die konfiguriert ist, ein Signal aus der ersten zusätzlichen Addiererschaltung und ein Überlauf-Bit aus der Zusatzaddiererschaltung zu empfangen.
  5. Integrierte Schaltung nach Anspruch 4, die ferner Folgendes umfasst: eine dritte Segmentdecodiererschaltung, die konfiguriert ist, die ausgegebenen Summen-Bits aus der Zusatzaddiererschaltung zu empfangen; und eine vierte Segmentdecodiererschaltung, die konfiguriert ist, ein Ausgangssignal aus der zweiten zusätzlichen Addiererschaltung zu empfangen.
  6. Integrierte Schaltung nach Anspruch 5, die ferner Folgendes umfasst: ein zusätzliches Präfix-Netz, das konfiguriert ist, Erzeugen- und Fortpflanzen-Bits aus der dritten Segmentdecodiererschaltung und der vierten Segmentdecodiererschaltung zu empfangen.
  7. Integrierte Schaltung nach Anspruch 6, wobei das zusätzliche Präfix-Netz ferner konfiguriert ist, ein Übertragsignal direkt aus dem Präfix-Netz über einen Präfix-Übertragsignalpfad zu empfangen.
  8. Integrierte Schaltung nach einem der Ansprüche 6-7, die ferner Folgendes umfasst: eine letzte Addiererschaltung, die konfiguriert ist, Summen-Bits aus der dritten Segmentdecodiererschaltung und ein Übertragsignal aus dem zusätzlichen Präfix-Netz zu empfangen.
  9. Integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die Folgendes umfasst: ein erstes Präfix-Netz; ein zweites Präfix-Netz, das konfiguriert ist, Übertragsignale aus dem ersten Präfix-Netz über einen Präfix-Übertragsignalpfad zu empfangen; und eine Decodiererschaltung, die konfiguriert ist, Erzeugen- und Fortpflanzen-Bits zu dem zweiten Präfix-Netz ohne Verwendung irgendwelcher Signale aus dem ersten Präfix-Netz auszugeben.
  10. Integrierte Schaltung nach Anspruch 9, wobei die Decodiererschaltung Folgendes umfasst: einen ersten Segmentaddierer, der konfiguriert ist, das Erzeugen-Bit und die Summen-Bits auszugeben; und einen zweiten Segmentaddierer, der konfiguriert ist, ein festgelegtes Übertrageingangssignal zu empfangen und das Fortpflanzen-Bit auszugeben.
  11. Integrierte Schaltung nach einem der Ansprüche 9-10, wobei das zweite Präfix-Netz kleiner ist als das erste Präfix-Netz.
  12. Integrierte Schaltung nach einem der Ansprüche 9-11, die ferner Folgendes umfasst: eine erste zusätzliche Decodiererschaltung, die konfiguriert ist, erste Erzeugen- und Fortpflanzen-Bits zu dem ersten Präfix-Netz auszugeben; und eine zweite zusätzliche Decodiererschaltung, die konfiguriert ist, zweite Erzeugen- und Fortpflanzen-Bits zu dem ersten Präfix-Netz auszugeben.
  13. Integrierte Schaltung nach Anspruch 12, wobei die erste zusätzliche Decodiererschaltung ferner konfiguriert ist, erste Summen-Bits auszugeben, und wobei die zweite zusätzliche Decodiererschaltung ferner konfiguriert ist, zweite Summen-Bits auszugeben.
  14. Integrierte Schaltung nach Anspruch 13, die ferner Folgendes umfasst: einen Erzeugen-Bit-Addierer, der konfiguriert ist, das erste Erzeugen-Bit aus der ersten zusätzlichen Decodiererschaltung und das zweite Erzeugen-Bit aus der zweiten zusätzlichen Decodiererschaltung zu kombinieren.
  15. Integrierte Schaltung nach Anspruch 14, die ferner Folgendes umfasst: einen Zusatzaddierer, der konfiguriert ist, die ersten Summen-Bits aus der ersten zusätzlichen Decodiererschaltung und die zweiten Summen-Bits aus der zweiten zusätzlichen Decodiererschaltung zu kombinieren, wobei der Zusatzaddierer ferner konfiguriert ist, unabhängig von dem ersten und dem zweiten Präfix-Netz zu arbeiten.
  16. Integrierte Schaltung nach Anspruch 15, die ferner Folgendes umfasst: einen Überlaufaddierer, der konfiguriert ist, Bits, die aus dem Erzeugen-Bit-Addierer ausgegeben werden, und ein ausgehendes Übertrag-Bit, das aus dem Zusatzaddierer ausgegeben wird, zu kombinieren.
  17. Integrierte Schaltung nach Anspruch 16, die ferner Folgendes umfasst: eine dritte zusätzliche Decodiererschaltung, die konfiguriert ist, Erzeugen- und Fortpflanzen-Bits zu dem zweiten Präfix-Netz unter Verwendung von Signalen, die aus dem Überlaufaddierer ausgegeben werden, auszugeben.
  18. Integrierte Schaltung nach einem der Ansprüche 9-17, wobei die Multipliziererschaltungsanordnung ferner zusätzliche Präfix-Netze, die mit dem ersten und dem zweiten Präfix-Netz gekoppelt sind, umfasst.
  19. Integrierte Schaltung, die Folgendes umfasst: eine Multipliziererschaltungsanordnung, die in mehrere Addiererstufen zerlegt ist, wobei die Multipliziererschaltungsanordnung mehrere Multipliziererschaltungen umfasst, die konfiguriert sind, Summensignale über einen Baum aus Pfaden zu empfangen, und wobei die Latenzen der Summensignale, die den Baum aus Pfaden durchlaufen, ausgewogen sind, so dass die Summensignale gleichzeitig oder innerhalb weniger Taktzyklen an den mehreren Multipliziererschaltungen ankommen.
  20. Integrierte Schaltung nach Anspruch 19, wobei die Multipliziererschaltungsanordnung unter Verwendung eines Karazuba-Multipliziererzerlegungsschemas zerlegt sind.
  21. Integrierte Schaltung nach einem der Ansprüche 19-20, wobei die Latenz jedes der Summensignale primär durch ein Präfix-Netz in einer obersten Addiererstufe in den mehreren Addiererstufen bestimmt wird.
  22. Integrierte Schaltung nach einem der Ansprüche 19-21, wobei die Multipliziererschaltungsanordnung in mehr als zwei Addiererstufen, von denen jede eine separate Präfix-Netzschaltung enthält, zerlegt ist.
  23. Integrierte Schaltung nach Anspruch 19, wobei die Multipliziererschaltungsanordnung ferner Folgendes umfasst: ein erstes Präfix-Netz; ein zweites Präfix-Netz, das konfiguriert ist, Übertragsignale von dem ersten Präfix-Netz über einen Präfix-Übertragsignalpfad zu empfangen; und eine Decodiererschaltung, die konfiguriert ist, Erzeugen- und Fortpflanzen-Bits zu dem zweiten Präfix-Netz ohne Verwendung irgendwelcher Signale aus dem ersten Präfix-Netz auszugeben.
  24. Integrierte Schaltung nach Anspruch 23, wobei die Decodiererschaltung Folgendes umfasst: einen ersten Segmentaddierer, der konfiguriert ist, das Erzeugen-Bit und Summen-Bits auszugeben; und einen zweiten Segmentaddierer, der konfiguriert ist, ein festgelegtes Übertrageingangssignal zu empfangen und das Fortpflanzen-Bit auszugeben.
  25. Integrierte Schaltung nach einem der Ansprüche 23-24, wobei das zweite Präfix-Netz kleiner ist als das erste Präfix-Netz.
DE102020113922.5A 2019-06-24 2020-05-25 Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen Pending DE102020113922A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/450,555 2019-06-24
US16/450,555 US11301213B2 (en) 2019-06-24 2019-06-24 Reduced latency multiplier circuitry for very large numbers

Publications (1)

Publication Number Publication Date
DE102020113922A1 true DE102020113922A1 (de) 2020-12-24

Family

ID=68095988

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020113922.5A Pending DE102020113922A1 (de) 2019-06-24 2020-05-25 Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen

Country Status (2)

Country Link
US (1) US11301213B2 (de)
DE (1) DE102020113922A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
US11474786B2 (en) * 2020-01-31 2022-10-18 Qualcomm Incorporated Fast digital multiply-accumulate (MAC) by fast digital multiplication circuit
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
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
DE102022130488A1 (de) 2022-11-17 2024-05-23 Infineon Technologies Ag Verarbeitungsschaltung

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4549280A (en) 1982-12-20 1985-10-22 Sperry Corporation Apparatus for creating a multiplication pipeline of arbitrary size
US4958312A (en) 1987-11-09 1990-09-18 Lsi Logic Corporation Digital multiplier circuit and a digital multiplier-accumulator circuit which preloads and accumulates subresults
US5047974A (en) 1987-11-24 1991-09-10 Harris Corporation Cell based adder with tree structured carry, inverting logic and balanced loading
US5784305A (en) 1995-05-01 1998-07-21 Nec Corporation Multiply-adder unit
US5726927A (en) 1995-09-11 1998-03-10 Digital Equipment Corporation Multiply pipe round adder
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6529931B1 (en) 1999-04-14 2003-03-04 Agere Systems Inc. Prefix tree adder with efficient carry generation
US6539413B1 (en) * 2000-03-15 2003-03-25 Agere Systems Inc. Prefix tree adder with efficient sum generation
US7155473B2 (en) * 2000-07-21 2006-12-26 Utstarcom, Inc. High-speed parallel-prefix modulo 2n-1 adders
US7152089B2 (en) * 2003-05-05 2006-12-19 Sun Microsystems, Inc. Parallel prefix networks that make tradeoffs between logic levels, fanout and wiring racks
US7509368B2 (en) * 2005-05-09 2009-03-24 Intel Corporation Sparse tree adder circuit
US9870339B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
US11334318B2 (en) 2018-07-12 2022-05-17 Intel Corporation Prefix network-directed addition

Also Published As

Publication number Publication date
US20190310828A1 (en) 2019-10-10
US11301213B2 (en) 2022-04-12

Similar Documents

Publication Publication Date Title
DE102020113922A1 (de) Multipliziererschaltungsanordnung mit reduzierter latenz für sehr grosse zahlen
DE69838877T2 (de) Architektur eines schnellen regulären multiplizierers
DE69821408T2 (de) Multiplikationsverfahren und -vorrichtung
DE10085322B4 (de) Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
DE3631992C2 (de)
DE102020120371A1 (de) Integrierte schaltungen mit modularen multiplikationsschaltkreisen
DE3901995C2 (de)
DE2911096C2 (de)
DE3927009A1 (de) Addierschaltung
DE3700991A1 (de) Digitaler uebertragsvorgriffsaddierer
DE2018452A1 (de) Arithmetische Einrichtung
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE112017004291T5 (de) Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation
DE4101004A1 (de) Paralleler multiplizierer mit sprungfeld und modifiziertem wallac-baum
DE2758130A1 (de) Binaerer und dezimaler hochgeschwindigkeitsaddierer
DE2730918A1 (de) Anordnung zum multiplizieren von binaerzahlen
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
EP1677185B1 (de) Vorrichtung und Verfahren zum Umsetzen und Addiererschaltung
DE10219158A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
EP0257362A1 (de) Addierer
DE19644688B4 (de) Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2m)
DE2017132B2 (de) Binärer Parallel-Addierer
DE10106085B4 (de) Verfahren und Anordnung zur Finiten Feld Multiplikation
EP0489952B1 (de) Schaltungsanordnung zur digitalen Bit-seriellen Signalverarbeitung
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation