DE102020120371A1 - Integrierte schaltungen mit modularen multiplikationsschaltkreisen - Google Patents

Integrierte schaltungen mit modularen multiplikationsschaltkreisen Download PDF

Info

Publication number
DE102020120371A1
DE102020120371A1 DE102020120371.3A DE102020120371A DE102020120371A1 DE 102020120371 A1 DE102020120371 A1 DE 102020120371A1 DE 102020120371 A DE102020120371 A DE 102020120371A DE 102020120371 A1 DE102020120371 A1 DE 102020120371A1
Authority
DE
Germany
Prior art keywords
difference
value
estimated
integrated circuit
product
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
DE102020120371.3A
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 DE102020120371A1 publication Critical patent/DE102020120371A1/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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Error Detection And Correction (AREA)

Abstract

Es kann eine integrierte Schaltung mit einer modularen Multiplikationsschaltung bereitgestellt werden. Die modulare Multiplikationsschaltung kann einen Eingangsmultiplizierer zum Berechnen des Produkts zweier Eingangssignale, abgeschnittene Multiplizierer zum Berechnen eines anderen Produkts auf der Basis eines Modulwerts und des Produkts und eine Subtraktionsschaltung zum Berechnen einer Differenz zwischen den zwei Produkten umfassen. Eine Fehlerkorrekturschaltung kann die Differenz zum Nachschlagen eines geschätzten Quotientenwerts und zum Heraussubtrahieren eines ganzzahligen Vielfachen des Modulwerts aus der Differenz in einem einzigen Schritt verwenden, wobei das ganzzahlige Vielfache gleich dem geschätzten Quotientenwert ist. Eine End-Justierungsstufe kann verwendet werden, um einen etwaigen verbleibenden Rest-Schätzungsfehler zu entfernen.

Description

  • Hintergrund
  • Die vorliegende Erfindung betrifft allgemein integrierte Schaltungen und insbesondere programmierbare integrierte Schaltungen, die dafür ausgelegt sind, modulare Potenzierung zu unterstützen.
  • Integrierte Schaltungen, die zur Implementierung von intelligenten Netzwerkschnittstellensteuerungen (NIC) zur Verbindung einer Datenverarbeitungsvorrichtung mit einem Netzwerk verwendet werden, umfassen oft Schaltkreise zur Implementierung von Datenverschlüsselungsmethoden, wie etwa des Verschlüsselungsalgorithmus von Rivest-Shamir-Adleman (RSA). Solche Verschlüsselungsschaltkreise müssen viele modulare Potenzierungsoperationen ausführen, die auf vielen modularen Multiplikationen aufgebaut sind. Der Algorithmus von Barrett ist ein übliches Verfahren zum Ausführen einer modularen Multiplizieroperation. Der Algorithmus von Barrett erfordert jedoch eine genaue Schätzung des Moduls, was wiederum genaue Versuchsmultiplikationen oder komplexe Vorberechnungen erfordert. Die Versuchsmultiplikationen/Vorberechnungen sind sowohl im Hinblick auf Fläche als auch Energie kostspielig, insbesondere für Eingangswortgrößen mit hunderten oder tausenden Bit.
  • Innerhalb dieses Kontexts entstehen die hier beschriebenen Ausführungsformen.
  • Figurenliste
    • 1 ist eine Darstellung einer beispielhaften integrierten Schaltung, die Verschlüsselungsschaltkreise umfasst, gemäß einer Ausführungsform.
    • 2 ist eine Darstellung einer beispielhaften modularen Multiplikationsschaltung gemäß einer Ausführungsform.
    • 3 ist eine Darstellung einer geeigneten Implementierung einer Reduktionsschaltung innerhalb einer modularen Multiplikationsschaltung.
    • 4 ist eine Darstellung einer modularen Multiplikationsschaltung, die unter Verwendung von partiellen/abgeschnittenen Multiplizierern implementiert wird.
    • 5A und 5B sind Darstellungen, die zeigen, wie spärliche Multiplikationen implementiert werden können, indem Partialprodukte summiert werden, gemäß einer Ausführungsform.
    • 6 ist eine Darstellung einer beispielhaften modularen Multiplikationsschaltung, die eine Einzelschritt-Fehlerkorrekturschaltung umfasst, gemäß einer Ausführungsform.
    • 7 ist eine Darstellung einer beispielhaften Geschätzter-Quotient-Nachschlagetabelle für einen einzelnen Wert des Moduls M gemäß einer Ausführungsform.
    • 8 ist eine Darstellung einer beispielhaften Geschätzter-Quotient-Nachschlagetabelle für mehrere Werte des Moduls M gemäß einer Ausführungsform.
    • 9 ist ein Flussdiagramm von beispielhaften Schritten zum Betrieb der in Verbindung mit 6-8 beschriebenen Schaltkreise gemäß einer Ausführungsform.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen betreffen eine integrierte Schaltung, die dafür ausgelegt ist, modulare Multiplikationen zu implementieren. Eine modulare Multiplizierschaltung kann eine Eingangsmultiplikationsschaltung zum Berechnen des Produkts zweier Eingaben und eine Reduktionsschaltung, die das Produkt und eine Moduleingabe empfängt, umfassen. Die Reduktionsschaltung kann dafür ausgelegt sein, unter Verwendung von Partialmultiplizierern mit großen LSB-Fehlern (niedrigstwertiges Bit) eine anfängliche Schätzung zu berechnen. Durch Beobachten nur eines kleinen MSB-Bereichs (höchstwertiges Bit) nachfolgender Versuchssubtraktionen kann dann eine nachfolgende Konversionsschätzung erfolgen, um auf den korrekten Wert zu konvergieren. Kleine Versuchssubtraktionen sind um Größenordnungen kleiner als Versuchsmultiplikationen, was Fläche sparen und den Energieverbrauch reduzieren kann.
  • Für Fachleute ist erkennbar, dass die vorliegenden beispielhaften Ausführungsformen ohne einige oder alle dieser spezifischen Einzelheiten praktiziert werden können. In anderen Fällen wurden wohlbekannte Operationen nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötigerweise zu verschleiern.
  • 1 ist eine Darstellung eines beispielhaften integrierten Schaltungschips 10, der Verschlüsselungsschaltkreise umfasst. Die integrierte Schaltungsvorrichtung 10 kann zum Beispiel eine CPU (Zentralverarbeitungseinheit), eine programmierbare integrierte Schaltung, eine GPU (Grafikverarbeitungseinheit), ein ASIC (anwendungsspezifische integrierte Schaltung), ein ASSP (anwendungsspezifisches Standardprodukt), ein Mikrocontroller, ein Mikroprozessor usw. sein. Beispiele für programmierbare integrierte Schaltungen wären PLD (programmierbare Logikvorrichtungen), FPGA (Field Programmable Gate Arrays), PAL (programmierbare Arrays-Logik), PLA (programmierbare Logikarrays), FPLA (Field Programmable Logic Arrays), EPLD (Electrically Programmable Logic Devices), EEPLD (Electrically Erasable Programmable Logic Devices), LCA (logische Zellenarrays) und CPLD (komplexe programmierbare Logikvorrichtungen), um nur einige wenige zu nennen.
  • Wie in 1 gezeigt, kann die integrierte Schaltung Verschlüsselungsschaltkreise umfassen, wie etwa Verschlüsselungsschaltkreise 12. Die Verschlüsselungsschaltkreise 12 können verwendet werden, um Daten in der Vorrichtung 10 zu verschlüsseln und/oder zu entschlüsseln. Die Verschlüsselungsschaltkreise 12 können verwendet werden, um Verschlüsselungsmethoden zu implementieren, wie etwa den RSA-Verschlüsselungsalgorithmus (Rivest-Shamir-Adleman), den AES-Algorithmus (Advanced Encryption Standard), den Blowfish-Verschlüsselungsalgorithmus, den Twofish-Verschlüsselungsalgorithmus, den Triple-DES-Algorithmus (Data Encryption Standard), den IDEA-Algorithmus (International Data Encryption Algorithm), SHA (Secure Hash Algorithm) und/oder andere Datenverschlüsselungsverfahren.
  • Die verschiedenen obigen Verschlüsselungsprozesse beruhen auf modularen Potenzierungsoperationen, die auf modularen Multiplikationen aufgebaut werden können. Somit können die Verschlüsselungsschaltkreise 12 eine oder mehrere modulare Multiplikationsschaltungen 14 umfassen, die dafür ausgelegt sind, modulare Multiplikation zu implementieren. Obwohl in dem Beispiel von 1 nur eine repräsentative modulare Multiplikationsschaltung 14 gezeigt ist, können die Verschlüsselungsschaltkreise 14 im Allgemeinen eine beliebige geeignete Anzahl modularer Multiplikationsschaltungen umfassen.
  • 2 ist eine Darstellung einer beispielhaften modularen Multiplikationsschaltung 14 gemäß einer Ausführungsform. Wie in 2 gezeigt, kann die modulare Multiplikationsschaltung 14 einen zum Empfangen eines ersten Eingangssignals A ausgelegten ersten Eingangsport, einen zum Empfangen eines zweiten Eingangssignals B ausgelegten zweiten Eingangsport und einen zum Empfangen eines Modulwerts M ausgelegten dritten Eingangsport aufweisen. Die Eingangssignale A, B und M können jeweils k Bit aufweisen, wobei k im Bereich von 1-10, 10-100, 100-1000, 1000+, 2000+, 5000+ oder einer beliebigen geeigneten ganzen Zahl liegen könnte.
  • Die modulare Multiplikationsschaltung 14 kann ferner eine Breiteingangs-Multiplikationsschaltung 202 umfassen, die dafür ausgelegt ist, A und B zu multiplizieren, um das entsprechende Produkt N zu berechnen. Das Produkt N kann 2k Bit breit sein. Der Eingangsmultiplikationsschaltung 202 kann eine modulare Reduktionsschaltung 204 folgen. Es können eine oder mehrere zusätzliche Multiplikationen (effektiv) in der modularen Reduktionsschaltung 204 ausgeführt werden, um ein Endergebnis R zu erhalten, wobei R = N   m o d   M
    Figure DE102020120371A1_0001
    ist, wobei N gleich A*B ist und wobei R auch ein k-Bit-Ergebnis ist, das kleiner als M ist. Das Endergebnis R wird manchmal auch als der „Rest“ der modulo-Operation bezeichnet.
  • Eine Art der Implementierung der modularen Reduktion in der Schaltung 204 ist Verwendung des Reduktionsverfahrens von Barrett. Die Reduktionsmethode von Barrett erhält das letztendliche R-Ergebnis durch Subtrahieren eines ganzzahligen Vielfachen von M von N. Das ganzzahlige Vielfache wird über Multiplizieren von N mit dem Inversen des Modulwerts und dann Abrunden dieses Ergebnisses auf die nächste ganze Zahl erhalten. 3 ist eine Darstellung einer geeigneten Implementierung einer modularen Multiplikationsschaltung 300, die dafür ausgelegt ist, die Reduktion von Barrett zu implementieren.
  • Wie in 3 gezeigt, umfasst die Schaltung 300 einen Breiteingangs-Multiplizierer 302, der dafür ausgelegt ist, k-Bit-Eingangssignale A und B zu empfangen und ein entsprechendes 2k-Bit-Produkt N auszugeben, wobei N gleich A*B ist. Die übrigen Schaltungskomponenten gehören als Teil der modularen Reduktionsschaltung, wie durch den Teil 304 gezeigt.
  • Eine erste Schaltung 312 ist dafür ausgelegt, eine invertierte Version von M (oder „IM“) durch Dividieren von 2^(2k) durch M und dann Abrunden durch Nehmen des Grundwerts des Ergebnisses zu berechnen. Das invertierte Modul IM hat (k+1) Bit. Eine zweite Schaltung 310 ist dafür ausgelegt, effektiv die k unteren Bit von N abzuwerfen, indem N durch 2^k dividiert und dann die Grundwertoperation verwendet wird, um alle fraktionalen Bit abzuwerfen. Diese Operation kann durch ein Rechtsschieben der k Bitpositionen implementiert werden, während alle Bit, die herausgeschoben werden, ignoriert werden.
  • Eine erste Reduktionsmultipliziererschaltung 314 ist dafür ausgelegt, die Ausgabe der Schaltung 310 mit dem durch die Schaltung 312 erzeugten invertierten Modul IM zu multiplizieren, um einen Wert U zu erhalten, der (2k+1) Bit aufweist. Eine dritte Schaltung 316 ist dafür ausgelegt, effektiv die k unteren Bit von U abzuwerfen, indem U durch 2^k dividiert und dann die Grundwertoperation verwendet wird, um alle fraktionalen Bit abzuwerfen. Diese Operation kann durch ein Rechtsschieben der k Bitpositionen implementiert werden, während alle Bit, die herausgeschoben werden, ignoriert werden. Die Ausgabe der Schaltung 316 ist gleich dem Wert E, der auch (k+1) ganzzahlige Bit aufweist. Der Wert E liegt innerhalb von 1 Einheit der Anzahl von Malen, wie oft M in N passt, und kann eine Unterschätzung sein. Eine zweite Reduktionsmultipliziererschaltung 318 ist dafür ausgelegt, E mit dem Modulwert M zu multiplizieren, um einen entsprechenden Wert P zu erzeugen, der (2k+1) Bit aufweist.
  • Eine vierte Schaltung 320 ist dafür ausgelegt, die oberen k Bit von N (z.B. durch Berechnen von N mod 2^(k+2)) abzuwerfen, während eine fünfte Schaltung 322 dafür ausgelegt ist, die oberen k+1 Bit von P (z.B. durch Berechnen von P mod 2^(k+2)) abzuwerfen. Eine Subtraktionsschaltung 324 ist dafür ausgelegt, die Differenz der von den Schaltungen 320 und 322 empfangenen Werte zu berechnen, um T zu erzeugen (d.h. T ist gleich N minus P). Der Wert P repräsentiert ein ganzzahliges Vielfaches von M, wobei T dem tatsächlichen Modul M nahe sein sollte. Wenn T kleiner als M ist, ist das Endergebnis R gleich T. Wenn T größer oder gleich M ist, wird R gleich T minus M sein (d.h. es ist eine weitere Subtraktion am Ende erforderlich).
  • Das folgende numerische Beispiel hilft dabei, die Funktionsweise der Schaltung 300 zu veranschaulichen. Man betrachte zum Beispiel ein Szenario mit k=8, A=174 (d.h. „10101110“ im Binärformat), B=201 (d.h. „11001001“ binär) und M=205 (d.h. „11001101“). Der Eingangsmultiplizierer 302 wird dann durch Berechnen von A*B ein Produkt N ausgeben, das gleich 34974 (oder „1000100010011110“ binär) sein wird.
  • Der Kehrwert von M (d.h. 1/M) ist gleich „0.0000000100111111101100000001001 ...“, und die (k+1) oder 9 Bit des Kehrwerts, die als IM gespeichert werden, beginnen am 8. fraktionalen Bit (siehe die obige hervorgehobene Bitkette). Anders ausgedrückt, wird 2^(2k) dividiert durch M der obige Kehrwert sein, um k Bitpositionen nach links verschoben, um „100111111.101100000001001 ...“ zu ergeben. Die fraktionalen Bit rechts des binären Radexpunkts werden durch die Grundwertfunktion abgeworfen, und der resultierende IM-Wert wird gleich „100111111“ in binär oder 319 im Dezimalformat sein.
  • Die Schaltung 310 berechnet grundwert(N/2^k), was in diesem Beispiel gleich „10001000“ ist. Der Reduktionsmultiplizierer 314 berechnet U durch Multiplizieren des Ergebnisses der Schaltung 310 mit IM. Somit wird U gleich „10001000“, multipliziert mit „100111111“ sein, was gleich „1010100101111000“ in binär oder 43384 dezimal ist. Die Schaltung 316 erzeugt E durch berechnen von grundwert(U/2^k), was in diesem Beispiel gleich „010101001“ in binär oder 169 dezimal ist.
  • Der Reduktionsmultiplizierer 318 berechnet P durch Multiplizieren von E und M, was in diesem Fall 34645 ergibt. Als letztes berechnet die Subtraktionsschaltung 324 T durch Subtrahieren von P von N, was gleich (34974 minus 34645) oder 329 ist. Diese Subtraktionsoperation muss nicht die gesamte Länge 2*k von N überspannen, da man weiß, dass T größer oder gleich null und kleiner als 2*M ist. Anders ausgedrückt, kann die Subtraktion nur an den unteren (k+1) Bit von N und P ausgeführt werden, während die übrigen oberen Bit ignoriert werden. Da T von 329 größer als M gleich 205 ist, wird hier eine weitere Subtraktion benötigt, so dass der letztendliche Restwert R gleich (329-205) oder 124 ist.
  • In der Anordnung von 3 erfordert die Berechnung von N=A*B in dem Eingangsmultiplizierer 302 einen vollen Ausgangsvektor. Die Berechnung von U in dem ersten Reduktionsmultiplizierer 314 ergibt (2k+1) Bit, aber nur die oberen (k+1) Bit werden für den Wert E benutzt. Ähnlich ergibt die Berechnung von P in dem zweiten Multiplizierer 318 (2k+1) Bit, aber nur die unteren (k+1) Bit werden zur Berechnung von T in der Subtraktionsschaltung 324 benutzt. In beiden diesen Fällen kann ein „partieller“ oder „abgeschnittener“ Multiplizierer den Multiplizierer 314 und/oder den Multiplizierer 318 ersetzen, um Hardwarekosten drastisch zu verringern, während der Energieverbrauch minimiert wird. Ein partieller oder abgeschnittener Multiplizierer ist ein Multiplizierer, der nur einen Teil des vollen resultierenden Produkts berechnet.
  • 4 ist eine Darstellung einer modularen Multiplikationsschaltung 300', die unter Verwendung von partiellen/abgeschnittenen Multiplizierern implementiert wird. Wie in 4 gezeigt, wird der erste Reduktionsmultiplizierer 314' als ein abgeschnittener Multiplizierer implementiert, der nur partiell die oberen (k+2) Bit berechnet und deshalb direkt einen Wert E' ausgibt (während die übrigen LSB-Bit nicht einmal berechnet werden). Der Wert E' repräsentiert eine ungefähre Anzahl von Malen, wie oft M in N passt. Der zweite Reduktionsmultiplizierer 318' wird als ein abgeschnittener Multiplizierer implementiert, der nur partiell die unteren (k+2) Bit berechnet und einen Wert P' ausgibt (während die übrigen MSB-Bit nicht einmal berechnet werden).
  • Aggressives Abschneiden der Reduktionsmultiplizierer auf diese Weise kann dabei helfen, die Hardwarekomplexität der modularen Multiplikationsschaltung 300' zu verringern, geht aber das Risiko ein, einen Mehrbitfehler in den LSB der abgeschnittenen Multiplizierer zu erzeugen. Anders ausgedrückt, ist es möglich, dass das in der abgeschnittenen Anordnung von 4 erzeugte E' weniger genau als das in der nicht abgeschnittenen Anordnung von 3 erzeugte E ist (d.h. kann E' mehrere ganze Zahlen danebenliegen), was zu einer Differenz T' führt, die mehr als einmal von M entfernt sein könnte (d.h. T' kann größer als 2M sein). Als Ergebnis kann mehr als eine iterative Subtraktion in der letztendlichen Verfeinerungsstufe 326 (siehe unten in 3) notwendig sein, um die letztendliche Restausgabe R zu erzeugen. Iterieren durch mehrere Subtraktionen kann kostspielig sein und würde die Komplexität der letztendlichen Verfeinerungsstufe 326 vergrößern. Außerdem können große K-Bit-Subtraktionen im Hinblick auf Fläche und Latenz sehr kostspielig sein. In einigen Szenarien kann die Gesamtzunahme im Addierer der Addierer-Übertragskette, die in der komplexen Verfeinerungsstufe 326 erforderlich ist, sogar größer sein als die Flächenabnahme in den partiellen Multiplizierern.
  • Eine andere Technik zum Verringern der Kosten der Reduktionsmultiplizierer besteht darin, sicherzustellen, dass der Modulwert M sorgfältig gewählt wird, so dass sowohl M als auch seine Inverse „spärlich“ sind. In der Regel weist der Modulwert M für beliebte Verschlüsselungsalgorithmen eine führende Eins auf, ist ungerade und wird oft als spärlich betrachtet.
  • Man betrachte zum Beispiel ein Szenario, in dem M ein 256-Bit-Wert ist, der im Hexadezimalformat gleich
    „fffffffeffffffffffffffffffffffffffffffff00000000fffffffffff fffff“ ist. Obwohl dies anfänglich nicht spärlich erscheint, können die langen Läufe von Einsen mit einer Addition und einer Subtraktion ersetzt werden. Zum Beispiel ist sieben („0111“) gleich acht minus eins („1000“ minus „0001“) . Ein Polynom, das zur Implementierung des obigen 256-Bit-Werts M verwendet werden kann, ist somit [2^(256)*x + 2^(224)*x + 2^(96)*x + 2^(64)*x - x]. Die Inverse dieses Polynoms ist
    „0x1.000000010000000100000001000000010000000
    2000000020000000200000003“, was auch sehr spärlich ist.
  • 5A und 5B sind Darstellungen, wie spärliche Multiplikationen durch Summieren von partiellen Produkten implementiert werden können. 5A zeigt, wie der abgeschnittene Reduktionsmultiplizierer 314', der ein spärliches IM empfängt, nur den oberen MSB-Teil 504 der verschiedenen verschobenen Instanzen von IM berechnen und miteinander summieren muss (während der untere LSB-Teil 502 komplett ignoriert wird). Ähnlich zeigt 5B, wie der abgeschnittene Reduktionsmultiplizierer 318', der ein spärliches M empfängt, nur den unteren LSB-Teil 508 der verschiedenen verschobenen Instanzen von M berechnen und miteinander summieren muss (während der obere MSB-Teil 506 komplett ignoriert wird). Die Addition der verschiedenen verschobenen Werte kann unter Verwendung eines Übertrags-Propagationsaddierers, eines Übertrags-Abspeicheraddierers, einer Kombination verschiedener Addiererarchitekturen oder anderer geeigneter Addiererstrukturen implementiert werden.
  • Gemäß einer Ausführungsform wird eine modulare Multiplikationsschaltung 600 bereitgestellt, die eine einschrittige Fehlerkorrekturschaltung umfasst, die die möglichen Fehler, die sich aus Multipliziererabschneidung ergeben, in einem einzigen Schritt entfernt (siehe z.B. 6). Wie in 6 gezeigt, kann die Schaltung 600 einen Breiteingangs-Multiplizierer 602 umfassen, der dafür ausgelegt ist, k-Bit-Eingangssignale A und B zu empfangen und ein entsprechendes 2k-Bit-Produkt N auszugeben, wobei N gleich A*B ist. Die übrigen Schaltungskomponenten können als Teil der modularen Reduktionsschaltung angehören, wie durch den Teil 680 gezeigt.
  • Eine erste Schaltung 612 kann dafür ausgelegt sein, den invertierten Wert IM durch Dividieren von 2^(2k) durch M und dann Nehmen des Grundwerts zu berechnen. Das invertierte Modul IM kann (k+1) Bit aufweisen. Eine zweite Schaltung 610 kann dafür ausgelegt sein, effektiv die k unteren Bit von N abzuwerfen, indem N durch 2^k dividiert und das Ergebnis dann grundgewertet wird, um alle fraktionalen Bit abzuwerfen. Diese Operation kann durch ein Rechtsverschieben von k Bit implementiert werden, während alle Bit, die herausgeschoben werden, ignoriert werden.
  • Der erste Reduktionsmultiplizierer 614 kann eine abgeschnittene/partielle Multipliziererschaltung sein, die nur partiell die oberen (k+2) Bit berechnet und den Wert E' ausgibt. Der Wert E' repräsentiert eine ungefähre Anzahl von Malen, wie oft M in N passen könnte. Der zweite Reduktionsmultiplizierer 618 kann eine abgeschnittene/partielle Multipliziererschaltung sein, die nur partiell die unteren (k+2) Bit berechnet und einen Wert P' ausgibt. Die Subtraktionsschaltung 624 kann dafür ausgelegt sein, die Differenz T' durch Subtrahieren von P' von dem Produkt N zu erzeugen.
  • Wie oben in Verbindung mit dem Beispiel von 4 beschrieben, ist der Nutzen abgeschnittener Multiplizierer, dass das geschätzte Vielfache E' mehrere ganze Zahlen danebenliegen kann. Unter der Annahme, dass der Fehler bei T' mehrere ganzzahlige Vielfache des Modulwerts M beträgt, kann die Gesamtdifferenz T' gleich (Y*M + R) sein, wobei R kleiner als M ist. Wenn Y gleich eins ist, liegt T' somit zwischen M und (2*M-1). Wenn in einem anderen Beispiel Y gleich zwei ist, beträgt T' von 2*M bis (3*M-1). In noch einem Beispiel liegt, wenn Y gleich drei ist, T' dann in dem Bereich von 3*M bis (4*M-1) und so weiter. Deshalb besteht keine Überlappung zwischen Fehlern.
  • Die Schaltkreise 650 signalabwärts der Substraktionsschaltung 624 berechnen (T' minus Y*M) in einem einzigen Schritt, um ein Versuchsergebnis R' zu erhalten. Die Schaltkreise 650 werden deshalb manchmal als eine einschrittige Fehlerkorrekturschaltung bezeichnet. Eine End-Justierungsstufe 662 kann höchstens eine End-Subtraktionsoperation ausführen, um den End-Restwert R auszugeben.
  • Um den Fehlerbereich zu bestimmen, können die oberen MSB von T' verwendet werden, um eine Geschätzter-Quotient-Nachschlagetabelle 652 nachzuschlagen, um einen geschätzten Quotienten Y zu bestimmen (der manchmal auch als „Fehlervielfaches“ bezeichnet wird). Zum Beispiel könnten nur die oberen acht Bit von T' verwendet werden, um die Tabelle 652 mit einer relativ kleinen Chance von Fehlvorhersage nachzuschlagen. Jeder potentielle Restfehler kann mit einer einzigen Addition (z.B. zur Implementierung von Subtraktion in Zweierkomplementform) in der End-Justierungsstufe 662 aufgelöst werden. Dieses Beispiel, in dem die oberen 8 MSB von T' zum Nachschlagen der Tabelle 652 verwendet werden, ist lediglich eine Veranschaulichung. Falls erwünscht, können die oberen 4 Bit von T' verwendet, die oberen 5 Bit von T' verwendet, die oberen 6 Bit von T' verwendet oder eine andere geeignete Teilmenge von T' verwendet werden, um die Tabelle 652 nachzuschlagen.
  • Das geschätzte Vielfache Y kann kleiner als das tatsächliche Vielfache von M sein, aber niemals mehr. Die Korrekturschaltung 650 kann deshalb eine Versuchssubtraktion von (T' - Y*M) durchführen, die in Addition redundanter Form durchgeführt werden kann, statt einen tatsächlichen Multiplizierer zu erfordern. Unter der Annahme, dass Y 0-6 sein kann, kann die Versuchssubtraktion durch ein erstes Verschieben von M um 0, 1 oder 2 Bit und durch ein zweites Verschieben von M um 0 oder 1 Bit erzielt werden (da ein Maximalwert von 6 höchstens zwei hohe Bit erfordert). Eine oder beide Verschiebungen können optional ausgenullt werden, wie etwa wenn Y=0 ist.
  • In dem Beispiel von 6 wird die erste Verschiebung unter Verwendung der Auswahlschaltung 654-1 implementiert. Wenn der „0“-Eingang der Schaltung 654-1 ausgewählt wird, wird eine nichtverschobene Version von M durchgelassen. Wenn der „1“-Eingang der Schaltung 654-1 ausgewählt wird, kann M, verschoben um ein Bit nach links, durchgeroutet werden. Wenn der „2“-Eingang der Schaltung 654-1 ausgewählt wird, kann M, verschoben um zwei Bit nach links, durchgeroutet werden. Ähnlich wird die zweite Verschiebung unter Verwendung der Auswahlschaltung 654-2 implementiert. Die Negationskomponente 655-1 implementiert eine Einerkomplement-Konversion für die erste Auswahlschaltung 654-1, während die Negationskomponente 655-2 eine Einerkomplement-Konversion für die zweite Auswahlschaltung 654-2 implementiert.
  • Zusammen mit einer 3:2-Addiererkompressorschaltung 656 und einem Übertrags-Propagationsaddierer (CPA) 658, der mehrere Übertrags-Eingänge von „1“ über dem Pfad 660 zur Implementierung der vollen Zweierkomplement-Subtraktion empfangen kann, kann der Addierer 658 ein vorletztes oder Versuchs-Restergebnis R' erzeugen, das gleich (T'- Y*M) ist. Die Anzahl der Übertrags-Eingänge, die benötigt wird, kann von der Anzahl aktiver Schaltungen 654 abhängen. Das Produkt Y*M wird manchmal als ein geschätztes ganzzahliges Vielfaches des Modulwerts M bezeichnet. Berechnen von R' auf diese Weise zur Entfernung des geschätzten ganzzahligen Vielfachenbetrags Y*M in einem einzigen Schritt unter Verwendung von Tabellennachschlag von Y und Addition redundanter Form zur Imitierung eines Multiplizierens kann Verwendung der modularen Multiplikationsschaltung 600 mit abgeschnittenen Multiplizierern erlauben, ohne dass man sich über die Möglichkeit Sorgen machen muss, am Ende des Reduktionsprozesses mehrere Iterationen großer Subtraktionen durchführen zu müssen, wodurch die Größe verringert wird, während die maximale Leistungsfähigkeit der insgesamten Verschlüsselungsschaltkreise verbessert wird.
  • Es besteht eine kleine Chance, dass das Einzelschritt-Versuchs-Subtraktionsergebnis R' immer noch M enthält, wobei in diesem Fall die End-Justierungsstufe 662 eine einzige Subtraktion durchführt. Als Alternative kann die gesamte Pipeline für einen Zyklus angehalten werden, um es dem CPA 658 zu erlauben, eine weitere Subtraktion durchzuführen, wodurch das Bilden der End-Justierungsstufe 662 überflüssig wird. Die Anhalte-Steuerlogik ist in 6 nicht gezeigt, um die vorliegenden Ausführungsformen nicht zu verschleiern. Unter der Annahme, dass Y auf einen kleinen Wert begrenzt ist (z.B. wenn Y kleiner als 10 ist), ist die Wahrscheinlichkeit einer Fehlvorhersage, wo die End-Justierung nötig ist, sehr klein. In solchen Szenarien kann Anhalten der Pipeline in mehreren tausend Operationen nur einmal erforderlich sein, was bezüglich Leistungsfähigkeitsauswirkung im Gegensatz zu Flächenersparnis einen guten Kompromiss gewährleistet. Gegebenenfalls könnten zusätzliche Schiebe-/Auswahlschaltungen 654 und ein breiterer Kompressor 656 verwendet werden, wenn erwartet wird, dass Y einen größeren Wert größer als sechs, größer als acht, größer als 10, größer als 20 usw. hat.
  • 7 ist eine Darstellung einer beispielhaften Geschätzter-Quotient-Nachschlagetabelle 700 für einen einzigen Wert des Moduls M. In dem Beispiel von 7 bleibt der Modulwert M fest bei 205, und die Tabelle 700 listet den geschätzten Quotientenwert Y als Funktion von T' in verschiedenen Bereichen unter Annahme einer 8-Bit-Eingabe auf. Die verschiedenen Bereiche sind auf den Umstand zurückzuführen, dass die Tabelle nur die oberen 6 MSB von T' eingibt. Spalte 702 repräsentiert mögliche Y-Werte, wenn die übrigen LSB von T' alle Nullen sind. Die Werte in Spalte 702 können deshalb durch Berechnen des Grundwerts des kleinsten Werts von T' in diesem Bereich (z.B. des ersten T'-Werts in jeder Zeile), dividiert durch M, erzeugt werden. Spalte 704 repräsentiert mögliche Y-Werte, wenn die übrigen LSB von T' alle Einsen sind. Die Werte in Spalte 704 können deshalb durch Berechnen des Grundwerts des größten Werts von T' in diesem Bereich (z.B. des zweiten T'-Werts in jeder Zeile), dividiert durch M, erzeugt werden. Der letztendliche geschätzte Quotient (oder das geschätzte Vielfache) Y kann vorsichtig gleich dem Minimum der zwei entsprechenden Werte in Spalte 702 und 704 gesetzt werden.
  • Wie in 7 gezeigt, ist Y für T'-Werte im Bereich von [0, 223] ungültig. Zeile 708 in Tabelle 700 ist die erste Zeile, die einen Wert Y von 1 ausgibt. Zeile 710 ist die erste Zeile, bei der der entsprechende Wert in Spalte 704 zu 2 wechselt (da der Grundwert von 415/205 sich auf 2 abrundet). Y bleibt jedoch immer noch bei 1, da der kleinere der zwei Spaltenwerte verwendet wird. Zeile 711 ist die erste Zeile, bei der beide Werte in Spalte 702 und 704 gleich 2 sind. Folglich wird Y nun gleich 2 sein.
  • In diesem 8-Bit-Beispiel kann Y theoretisch bis zu einem Wert von 9 heraufkommen. In der Praxis kann jedoch, wenn bekannt ist, dass Y auf einen Maximalwert von 6 begrenzt ist, der Teil 716 in der Nachschlagetabelle gespeichert werden, aber unbenutzt bleiben. Wie oben in Verbindung mit 6 beschrieben, kann ein Max-Y-Wert von 6 Implementierung eines Multiplizierens über Addition redundanter Form unter Verwendung von nur zwei Schiebeschaltungen erlauben.
  • In 7 ist der maximale Schätzungsfehler (d.h. die maximale Differenz zwischen den Werten in Spalte 702 und 704 in jeder Zeile) gleich 1. Diese Instanzen sind in mindestens Zeile 710, 712 und 714 dargestellt, wobei die Werte in Spalte 702 und 704 sich um höchstens eins unterscheiden. In diesen konkreten Situationen muss die End-Justierungsstufe 662 (siehe 6) möglicherweise eine zusätzliche Subtraktion von M anwenden, um die End-Restausgabe R zu erhalten.
  • Wenn sich der Modulwert M selten oder äußerst wenig häufig ändert, kann die Geschätzter-Quotient-Nachschlagetabelle immer dann, wenn neue Werte benötigt werden, aus einer externen Quelle nachgeladen werden. Während modularen Potenzierungsoperationen, bei denen jede Potenzierung tausende modulare Multiplikationen durchführen kann, ändert sich der Wert von M nur zwischen sukzessiven modularen Potenzierungen. Verglichen mit der Komplexität modularer Potenzierung ist Neuberechnung der Geschätzter-Quotient-Nachschlagetabelle für ein neues M relativ unkompliziert.
  • Bei einer anderen geeigneten Anordnung könnte sich der Modulwert M häufiger ändern. Wenn sich zum Beispiel M in jedem Zyklus ändert, kann die Geschätzter-Quotient-Tabelle durch Aufnahme von Bereichen für M generischer gemacht werden. Der sich dynamisch ändernde Wert M kann der Nachschlagetabelle 652 über den Pfad 690 (siehe z.B. 6) zugeführt werden. 8 ist eine Darstellung einer beispielhaften Geschätzter-Quotient-Nachschlagetabelle 800 für mehrere Werte des Moduls. In dem Beispiel von 8 listet Tabelle 800 den geschätzten Quotientenwert Y als Funktion sowohl von M als auch von T' in verschiedenen Bereichen unter der Annahme einer 8-Bit-Eingabe auf. Die verschiedenen Bereiche von M sind auf den Umstand zurückzuführen, dass die Tabelle nur die oberen 3 Bit von M eingibt, während die verschiedenen Bereiche an T' auf den Umstand zurückzuführen sind, dass die Tabelle nur die oberen 6 MSB von T' eingibt.
  • Spalte 802 repräsentiert die kleinsten (bestenfalls) möglichen Y-Werte, die berechnet werden, indem der untere Bereich von T' genommen wird, dies durch den oberen Bereich von M dividiert wird und dann das Ergebnis gegrundwertet wird, um auf die nächste ganze Zahl abzurunden. Spalte 804 repräsentiert die maximalen (im ungünstigsten Fall) möglichen Y-Werte, die berechnet werden, indem der obere Wert von T' genommen wird, dies durch den unteren Bereich von M dividiert wird und dann das Ergebnis gegrundwertet wird, um auf die nächste ganze Zahl abzurunden. Das letztendliche geschätzte Vielfache Y kann vorsichtig gleich dem Minimum der zwei entsprechenden Werte in Spalte 802 und 804 gesetzt werden.
  • Wie in 8 gezeigt, kann Y für niedrige Werte von M und T' ungültig sein. Zeile 810 in Tabelle 800 ist die erste Zeile, die einen Wert Y von 1 ausgibt. Zeile 812 ist die erste Zeile, die einen Wert Y von 2 ausgibt, und so weiter. In diesem 8-Bit-Beispiel kann Y theoretisch bis zu einem Wert von 9 heraufkommen. In 8 ist der maximale Schätzungsfehler (d.h. die maximale Differenz zwischen den Werten in Spalte 802 und 804 in jeder Zeile) gleich 3. Zum Beispiel zeigen die Zeilen 814 Fälle, in denen der Schätzungsfehler gleich 1 (z.B. 3 minus 2) ist; die Zeilen 816 zeigen Fälle, in denen der Schätzungsfehler gleich 2 (z.B. 7 minus 5) ist; und die Zeilen 818 zeigen Fälle, bei denen der Schätzungsfehler gleich 3 (z.B. 13 minus 10) ist. In diesen konkreten Situationen ist es möglich, dass die End-Justierungsstufe 662 (siehe 6) bis zu drei zusätzliche Subtraktionen von M anwenden muss, um die End-Restausgabe R zu erhalten.
  • 9 ist ein Flussdiagramm beispielhafter Schritte zum Betrieb der in Verbindung mit 6-8 beschriebenen Schaltkreise. In Schritt 902 kann der Eingangsmultiplizierer 602 verwendet werden, um Eingangssignale A und B zu multiplizieren, um ein entsprechendes Produkt N zu erhalten. In Schritt 904 können die abgeschnittenen/partiellen Multiplizierer 614 und 618 verwendet werden, um auf der Basis von N und des Eingangsmodulwerts M P' zu berechnen.
  • In Schritt 906 kann die Subtraktionsschaltung 624 verwendet werden, um P' von dem Produkt N zu subtrahieren, um die Differenz T' zu erhalten. In Schritt 908 kann ein Teil der MSB von T' verwendet werden, um einen geschätzten Quotientenwert Y aus einer vorbestimmten Nachschlagetabelle zu identifizieren. Diese Nachschlagetabelle kann zeitlich im Voraus berechnet und zum schnellen Abruf auf der integrierten Schaltungsvorrichtung gespeichert werden. Auf der Basis des aus der Nachschlagetabelle abgerufenen Werts von Y kann die Fehlerkorrekturschaltung 650 eine einschrittige Fehlerkorrektur durch Subtrahieren von M*Y von T' durchführen (z.B. durch Durchführen von Subtraktion redundanter Form nur unter Verwendung von Schiebe- und Addieroperationen ohne Verwendung irgendwelcher Multiplizierschaltungen) .
  • In Schritt 912 kann die End-Justierungsstufe 662 optional verwendet werden, um einen etwaigen Restfehler zu entfernen (z.B. um einen etwaigen verbleibenden Schätzungsfehler zu entfernen, wenn R' immer noch größer oder gleich M ist. Die obere Schranke für die Anzahl von Subtraktionen, die in der End-Justierungsstufe benötigt werden, ist bekannt, da die Nachschlagetabelle den maximal möglichen Schätzungsfehler zeigen kann.
  • Obwohl die Verfahren von Operationen in einer spezifischen Reihenfolge beschrieben werden, versteht sich, dass zwischen beschriebenen Operationen andere Operationen ausgeführt werden können, beschriebene Operationen justiert werden können, so dass sie zu etwas verschiedenen Zeitpunkten auftreten, oder beschriebene Operationen in einem System verteilt werden können, das das Auftreten der Verarbeitungsoperationen in verschiedenen Intervallen erlaubt, die der Verarbeitung zugeordnet sind, solange die Verarbeitung der überlagerten Operationen auf eine gewünschte Weise ausgeführt wird.
  • Die Schaltungstechniken und Betriebsverfahren, die oben zur Verbesserung einer modularen Multiplikationsschaltung beschrieben werden, die die Reduktionsmethode von Barrett verwendet, ist lediglich beispielhaft und soll die vorliegenden Ausführungsformen nicht begrenzen. Gegebenenfalls können diese Techniken und Verfahren auch auf den Reduktionsalgorithmus von Montgomery, den klassischen modularen Reduktionsalgorithmus, den Algorithmus des GCD (größten gemeinsamen Nenners) von Lehmer und andere geeignete arithmetische modulare Reduktionsprozesse angewandt werden.
  • Beispiele:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine integrierte Schaltung, umfassend: einen zum Empfangen eines ersten Eingangssignals ausgelegten ersten Eingangsport; einen zum Empfangen eines zweiten Eingangssignals ausgelegten zweiten Eingangsport; einen zum Empfangen eines Modulwerts ausgelegten dritten Eingangsport; einen Eingangsmultiplizierer, ausgelegt zum Multiplizieren des ersten Eingangssignals mit dem zweiten Eingangssignal, um ein entsprechendes erstes Produkt zu erzeugen; mehrere Reduktionsmultiplizierer, ausgelegt zum Erzeugen eines zweiten Produkts unter Verwendung des ersten Produkts und des Modulwerts; eine Subtraktionsschaltung, ausgelegt zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und eine Fehlerkorrekturschaltung, ausgelegt zum Entfernen eines geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz in einem einzigen Schritt.
  • Beispiel 2 ist die integrierte Schaltung nach Beispiel 1, wobei die mehreren Reduktionsmultiplizierer optional einen ersten abgeschnittenen Multiplizierer umfassen, der nur partiell eine Anzahl von höchstwertigen Bit (MSB) berechnet.
  • Beispiel 3 ist die integrierte Schaltung nach Beispiel 2, wobei die mehreren Reduktionsmultiplizierer ferner optional einen zweiten abgeschnittenen Multiplizierer umfassen, der nur partiell eine Anzahl von niedrigstwertigen Bit (LSB) berechnet.
  • Beispiel 4 ist die integrierte Schaltung nach einem der Beispiele 2-3, wobei der erste abgeschnittene Multiplizierer optional einen ersten Eingangsanschluss aufweist, der dafür ausgelegt ist, nur obere Bit des ersten Produkts zu empfangen.
  • Beispiel 5 ist die integrierte Schaltung nach Beispiel 4, wobei der zweite abgeschnittene Multiplizierer optional einen zweiten Eingangsanschluss aufweist, der dafür ausgelegt ist, eine invertierte Version des Modulwerts zu empfangen.
  • Beispiel 6 ist die integrierte Schaltung nach einem der Beispiele 1-5, wobei die Fehlerkorrekturschaltung optional dafür ausgelegt ist, die Differenz zum Erhalten eines geschätzten Quotientenwerts aus einer Nachlagetabelle zu verwenden.
  • Beispiel 7 ist die integrierte Schaltung nach Beispiel 6, wobei die Fehlerkorrekturschaltung ferner optional dafür ausgelegt ist, nur obere Bit der Differenz zu verwenden, um den geschätzten Quotientenwert aus der Nachschlagetabelle zu erhalten.
  • Beispiel 8 ist die integrierte Schaltung nach einem der Beispiele 6-7, wobei die Nachschlagetabelle optional eine Funktion nur eines einzigen Modulwerts ist.
  • Beispiel 9 ist die integrierte Schaltung nach einem der Beispiele 6-7, wobei die Nachschlagetabelle optional eine Funktion mehrerer verschiedener Modulwerte ist.
  • Beispiel 10 ist die integrierte Schaltung nach einem der Beispiele 6-9, wobei das geschätzte ganzzahlige Vielfache des Modulwerts optional gleich dem Modulwert mal dem aus der Nachschlagetabelle erhaltenen geschätzten Quotientenwert ist.
  • Beispiel 11 ist die integrierte Schaltung nach Beispiel 10, wobei die Fehlerkorrekturschaltung optional dafür ausgelegt ist, das geschätzte ganzzahlige Vielfache des Modulwerts ohne eine Multipliziererschaltung zu berechnen.
  • Beispiel 12 ist die integrierte Schaltung nach Beispiel 11, wobei die Fehlerkorrekturschaltung ferner optional ausgelegt ist zum Berechnen des geschätzten ganzzahligen Vielfachen unter Verwendung von Redundante-Form-Addition.
  • Beispiel 13 ist die integrierte Schaltung nach einem der Beispiele 10-12, wobei die Fehlerkorrekturschaltung ferner optional zusätzliche Schaltungen zum selektiven Verschieben des Modulwerts auf der Basis des geschätzten Quotientenwerts umfasst.
  • Beispiel 14 ist die integrierte Schaltung nach Beispiel 13, wobei die Fehlerkorrekturschaltung ferner optional eine Kompressorschaltung umfasst, die dafür ausgelegt ist, die Differenz von der Subtraktionsschaltung zu empfangen und Signale von den zusätzlichen Schaltungen zu empfangen.
  • Beispiel 15 ist die integrierte Schaltung nach Beispiel 14, wobei die Fehlerkorrekturschaltung ferner optional einen Addierer umfasst, der dafür ausgelegt ist, Signale von der Kompressorschaltung und ein Übertrags-Eingangssignal zu empfangen und einen entsprechenden Versuchsrestwert zu erzeugen.
  • Beispiel 16 ist die integrierte Schaltung nach Beispiel 15, die ferner optional eine End-Justierungsstufe zum selektiven Subtrahieren eines oder mehrerer Modulwerte von dem Versuchsrestwert umfasst.
  • Beispiel 17 ist ein Verfahren zum Betrieb einer integrierten Schaltung, wobei das Verfahren Folgendes umfasst: mit einem ersten Multiplizierer ein erstes und zweites Eingangssignal empfangen und durch Multiplizieren des ersten Eingangssignals mit dem zweiten Eingangssignal ein erstes Produkt berechnen; mit einem zweiten Multiplizierer einen Modulwert empfangen und auf der Basis des empfangenen Modulwerts und des ersten Produkts ein zweites Produkt berechnen; mit einer Subtraktionsschaltung eine Differenz zwischen dem ersten und zweiten Produkt berechnen; und mit einer Fehlerkorrekturschaltung ein geschätztes ganzzahliges Vielfaches des Modulwerts von der Differenz in einem einzigen Schritt subtrahieren.
  • Beispiel 18 ist das Verfahren nach Beispiel 17, ferner optional umfassend: Verwenden nur einer Teilmenge von Bit in der Differenz zum Nachschlagen eines geschätzten Vielfachenwerts aus einer vorbestimmten Nachschlagetabelle in der Fehlerkorrekturschaltung; und Berechnen des geschätzten ganzzahligen Vielfachen unter Verwendung des geschätzten Vielfachenwerts.
  • Beispiel 19 ist das Verfahren nach einem der Beispiele 17-18, ferner optional umfassend: Anhalten der Fehlerkorrekturschaltung zur Entfernung eines Restfehlers nach dem Subtrahieren des geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz.
  • Beispiel 20 ist eine modulare Multiplikationsschaltung, umfassend: einen Eingangsmultiplizierer, ausgelegt zum Berechnen eines ersten Produkts durch Multiplizieren eines ersten Eingangssignals mit einem zweiten Eingangssignal; einen abgeschnittenen Multiplizierer, ausgelegt zum Berechnen eines zweiten Produkts auf der Basis eines Eingangsmodulwerts und des ersten Produkts; eine Subtraktionsschaltung, ausgelegt zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und eine Fehlerkorrekturschaltung, ausgelegt zum Empfangen der Differenz von der Subtraktionsschaltung, zum Berechnen eines geschätzten Fehlervielfachen unter Verwendung der empfangenen Differenz und zum Erzeugen eines entsprechenden Versuchs-Restausgangswerts durch Subtrahieren des geschätzten Fehlervielfachen von der Differenz.
  • Zum Beispiel können alle optionalen Merkmale der oben beschriebenen Vorrichtung auch mit Bezug auf das hier beschriebene Verfahren oder den hier beschriebenen Prozess implementiert werden. Das Obige veranschaulicht lediglich die Prinzipien der vorliegenden Offenbarung, und Fachleute können verschiedene Modifikationen vornehmen. Die obigen Ausführungsformen können einzeln oder in beliebiger Kombination implementiert werden.

Claims (25)

  1. Integrierte Schaltung, umfassend: einen zum Empfangen eines ersten Eingangssignals ausgelegten ersten Eingangsport; einen zum Empfangen eines zweiten Eingangssignals ausgelegten zweiten Eingangsport; einen zum Empfangen eines Modulwerts ausgelegten dritten Eingangsport; einen Eingangsmultiplizierer, ausgelegt zum Multiplizieren des ersten Eingangssignals mit dem zweiten Eingangssignal, um ein entsprechendes erstes Produkt zu erzeugen; mehrere Reduktionsmultiplizierer, ausgelegt zum Erzeugen eines zweiten Produkts unter Verwendung des ersten Produkts und des Modulwerts; eine Subtraktionsschaltung, ausgelegt zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und eine Fehlerkorrekturschaltung, ausgelegt zum Entfernen eines geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz in einem einzigen Schritt.
  2. Integrierte Schaltung nach Anspruch 1, wobei die mehreren Reduktionsmultiplizierer einen ersten abgeschnittenen Multiplizierer umfassen, der nur partiell eine Anzahl von höchstwertigen Bit (MSB) berechnet.
  3. Integrierte Schaltung nach Anspruch 2, wobei die mehreren Reduktionsmultiplizierer ferner einen zweiten abgeschnittenen Multiplizierer umfassen, der nur partiell eine Anzahl von niedrigstwertigen Bit (LSB) berechnet.
  4. Integrierte Schaltung nach einem der Ansprüche 2-3, wobei der erste abgeschnittene Multiplizierer einen ersten Eingangsanschluss aufweist, der dafür ausgelegt ist, nur obere Bit des ersten Produkts zu empfangen.
  5. Integrierte Schaltung nach Anspruch 4, wobei der zweite abgeschnittene Multiplizierer einen zweiten Eingangsanschluss aufweist, der dafür ausgelegt ist, eine invertierte Version des Modulwerts zu empfangen.
  6. Integrierte Schaltung nach einem der Ansprüche 1-5, wobei die Fehlerkorrekturschaltung dafür ausgelegt ist, die Differenz zum Erhalten eines geschätzten Quotientenwerts aus einer Nachlagetabelle zu verwenden.
  7. Integrierte Schaltung nach Anspruch 6, wobei die Fehlerkorrekturschaltung ferner dafür ausgelegt ist, nur obere Bit der Differenz zu verwenden, um den geschätzten Quotientenwert aus der Nachschlagetabelle zu erhalten.
  8. Integrierte Schaltung nach einem der Ansprüche 6-7, wobei die Nachschlagetabelle eine Funktion nur eines einzigen Modulwerts ist.
  9. Integrierte Schaltung nach einem der Ansprüche 6-7, wobei die Nachschlagetabelle eine Funktion mehrerer verschiedener Modulwerte ist.
  10. Integrierte Schaltung nach einem der Ansprüche 6-9, wobei das geschätzte ganzzahlige Vielfache des Modulwerts gleich dem Modulwert mal dem aus der Nachschlagetabelle erhaltenen geschätzten Quotientenwert ist.
  11. Integrierte Schaltung nach Anspruch 10, wobei die Fehlerkorrekturschaltung dafür ausgelegt ist, das geschätzte ganzzahlige Vielfache des Modulwerts ohne eine Multipliziererschaltung zu berechnen.
  12. Integrierte Schaltung nach Anspruch 11, wobei die Fehlerkorrekturschaltung ferner ausgelegt ist zum Berechnen des geschätzten ganzzahligen Vielfachen unter Verwendung von Redundante-Form-Addition.
  13. Integrierte Schaltung nach einem der Ansprüche 10-12, wobei die Fehlerkorrekturschaltung ferner zusätzliche Schaltungen zum selektiven Verschieben des Modulwerts auf der Basis des geschätzten Quotientenwerts umfasst.
  14. Integrierte Schaltung nach Anspruch 13, wobei die Fehlerkorrekturschaltung ferner eine Kompressorschaltung umfasst, die dafür ausgelegt ist, die Differenz von der Subtraktionsschaltung zu empfangen und Signale von den zusätzlichen Schaltungen zu empfangen.
  15. Integrierte Schaltung nach Anspruch 14, wobei die Fehlerkorrekturschaltung ferner einen Addierer umfasst, der dafür ausgelegt ist, Signale von der Kompressorschaltung und ein Übertrags-Eingangssignal zu empfangen und einen entsprechenden Versuchsrestwert zu erzeugen.
  16. Integrierte Schaltung nach Anspruch 15, die ferner eine End-Justierungsstufe zum selektiven Subtrahieren eines oder mehrerer Modulwerte von dem Versuchsrestwert umfasst.
  17. Verfahren zum Betrieb einer integrierten Schaltung, wobei das Verfahren Folgendes umfasst: mit einem ersten Multiplizierer ein erstes und zweites Eingangssignal empfangen und durch Multiplizieren des ersten Eingangssignals mit dem zweiten Eingangssignal ein erstes Produkt berechnen; mit einem zweiten Multiplizierer einen Modulwert empfangen und auf der Basis des empfangenen Modulwerts und des ersten Produkts ein zweites Produkt berechnen; mit einer Subtraktionsschaltung eine Differenz zwischen dem ersten und zweiten Produkt berechnen; und mit einer Fehlerkorrekturschaltung ein geschätztes ganzzahliges Vielfaches des Modulwerts von der Differenz in einem einzigen Schritt subtrahieren.
  18. Verfahren nach Anspruch 17, ferner umfassend: Verwenden nur einer Teilmenge von Bit in der Differenz zum Nachschlagen eines geschätzten Vielfachenwerts aus einer vorbestimmten Nachschlagetabelle in der Fehlerkorrekturschaltung; und Berechnen des geschätzten ganzzahligen Vielfachen unter Verwendung des geschätzten Vielfachenwerts.
  19. Verfahren nach einem der Ansprüche 17-18, ferner umfassend: Anhalten der Fehlerkorrekturschaltung zur Entfernung eines Restfehlers nach dem Subtrahieren des geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz.
  20. Modulare Multiplikationsschaltung, umfassend: einen Eingangsmultiplizierer, ausgelegt zum Berechnen eines ersten Produkts durch Multiplizieren eines ersten Eingangssignals mit einem zweiten Eingangssignal; einen abgeschnittenen Multiplizierer, ausgelegt zum Berechnen eines zweiten Produkts auf der Basis eines Eingangsmodulwerts und des ersten Produkts; eine Subtraktionsschaltung, ausgelegt zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und eine Fehlerkorrekturschaltung, ausgelegt zum Empfangen der Differenz von der Subtraktionsschaltung, zum Berechnen eines geschätzten Fehlervielfachen unter Verwendung der empfangenen Differenz und zum Erzeugen eines entsprechenden Versuchs-Restausgangswerts durch Subtrahieren des geschätzten Fehlervielfachen von der Differenz.
  21. Schaltkreise, umfassend: Mittel zum Berechnen eines ersten Produkts durch Multiplizieren eines ersten Eingangssignals mit einem zweiten Eingangssignal; Mittel zum Berechnen eines zweiten Produkts auf der Basis eines Eingangsmodulwerts und des ersten Produkts; Mittel zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und Mittel zum Empfangen der Differenz, Berechnen eines geschätzten Fehlervielfachen unter Verwendung der empfangenen Differenz und Erzeugen eines entsprechenden Versuchs-Restausgangswerts durch Subtrahieren des geschätzten Fehlervielfachen von der Differenz.
  22. Integrierte Schaltung, umfassend: Mittel zum Empfangen eines ersten und zweiten Eingangssignals und Berechnen eines ersten Produkts durch Multiplizieren des ersten Eingangssignals mit dem zweiten Eingangssignal; Mittel zum Empfangen eines Modulwerts und Berechnen eines zweiten Produkts auf der Basis des empfangenen Modulwerts und des ersten Produkts; Mittel zum Berechnen einer Differenz zwischen dem ersten und zweiten Produkt; und Mittel zum Subtrahieren eines geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz in einem einzigen Schritt.
  23. Integrierte Schaltung nach Anspruch 22, ferner umfassend: Mittel zum Verwenden nur einer Teilmenge von Bit in der Differenz zum Nachschlagen eines geschätzten Vielfachenwerts aus einer vorbestimmten Nachschlagetabelle in der Fehlerkorrekturschaltung;.
  24. Integrierte Schaltung nach Anspruch 23, ferner umfassend: Mittel zum Berechnen des geschätzten ganzzahligen Vielfachen unter Verwendung des geschätzten Vielfachenwerts.
  25. Integrierte Schaltung nach einem der Ansprüche 22-24, ferner umfassend: Mittel zum Anhalten der Fehlerkorrekturschaltung zur Entfernung eines Restfehlers nach dem Subtrahieren des geschätzten ganzzahligen Vielfachen des Modulwerts von der Differenz.
DE102020120371.3A 2019-09-10 2020-08-03 Integrierte schaltungen mit modularen multiplikationsschaltkreisen Pending DE102020120371A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/566,059 US11249726B2 (en) 2019-09-10 2019-09-10 Integrated circuits with modular multiplication circuitry
US16/566,059 2019-09-10

Publications (1)

Publication Number Publication Date
DE102020120371A1 true DE102020120371A1 (de) 2021-03-11

Family

ID=69055242

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020120371.3A Pending DE102020120371A1 (de) 2019-09-10 2020-08-03 Integrierte schaltungen mit modularen multiplikationsschaltkreisen

Country Status (2)

Country Link
US (1) US11249726B2 (de)
DE (1) DE102020120371A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10693469B2 (en) 2018-08-31 2020-06-23 Flex Logic 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
US12015428B2 (en) 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, 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
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
WO2022020164A1 (en) 2020-07-22 2022-01-27 Flex Logix Technologies, Inc. Mac processing pipelines having programmable granularity, and methods of operating same
CN111901110B (zh) * 2020-08-06 2023-05-23 中电科网络安全科技股份有限公司 白盒化模幂结果获取方法、装置、设备及存储介质
US11496297B1 (en) * 2021-06-10 2022-11-08 Pqsecure Technologies, Llc Low footprint resource sharing hardware architecture for CRYSTALS-Dilithium and CRYSTALS-Kyber
TWI802095B (zh) * 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法
CN115202616A (zh) * 2022-06-24 2022-10-18 上海途擎微电子有限公司 模乘器、安全芯片、电子设备及加密方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274707A (en) 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US6282290B1 (en) 1997-03-28 2001-08-28 Mykotronx, Inc. High speed modular exponentiator
FR2800478B1 (fr) 1999-10-28 2001-11-30 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique
US7185039B2 (en) 2003-05-19 2007-02-27 Lsi Logic Corporation Multiplier for modular exponentiation
JP4626148B2 (ja) 2004-01-07 2011-02-02 株式会社日立製作所 復号または署名作成におけるべき乗剰余算の計算方法
US7961877B2 (en) 2006-12-14 2011-06-14 Intel Corporation Factoring based modular exponentiation
FR2977952A1 (fr) 2011-07-13 2013-01-18 St Microelectronics Rousset Protection d'un calcul d'exponentiation modulaire par multiplication par une quantite aleatoire
EP3903300A4 (de) * 2019-02-19 2022-09-07 Massachusetts Institute Of Technology Konfigurierbarer gitter-kryptografieprozessor für das quantensichere internet der dinge und zugehörige verfahren

Also Published As

Publication number Publication date
US20200004506A1 (en) 2020-01-02
US11249726B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
DE102020120371A1 (de) Integrierte schaltungen mit modularen multiplikationsschaltkreisen
DE3854321T2 (de) Populationszählung in Rechnersystemen.
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69716331T2 (de) Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
DE69032966T2 (de) Verfahren und Gerät zur Ausführung von Divisionen mit Hilfe eines Multiplizierers rechteckigen Seitenverhältnisses
DE69032891T2 (de) Verfahren und Gerät zur Ausführung mathematischer Funktionen mit Hilfe polynomialer Annäherung und eines Multiplizierers rechteckigen Seitenverhältnisses
DE102020102453A1 (de) Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
EP1360579B1 (de) Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE69424329T2 (de) 4:2-Addierer und diesen verwendende Multiplizierschaltung
DE112007001319T5 (de) Multiplizieren zweier Zahlen
EP2771782A1 (de) Effiziente primzahlprüfung
DE102005041102A1 (de) Verfahren zur Skalarmultiplikation von Punkten auf einer elliptischen Kurve
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10357661B4 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
EP1543408A1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE10260660B3 (de) Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
DE60316342T2 (de) Multiplizierer mit nachschlagetabellen
DE69030169T2 (de) Hochleistungsaddierer mit Carry-Vorhersage
DE10164416A1 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
DE10111987A1 (de) Verfahren und Vorrichtung zum modularen Multiplizieren
DE102006025677B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE3815390C2 (de) Vorwärtsdifferenzbildungsanordnung zum Erzeugen von Kurven auf einer grafischen Anzeigeeinrichtung und Verfahren zum Erzeugen von Pixelkoordinaten zum Darstellen solcher Kurven auf einer Anzeigeeinrichtung
DE69230520T2 (de) Verfahren und Anordung zur Erzeugung von Summeinformation-/Rundungskontrolle-Signal