DE69811877T2 - ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. - Google Patents
ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert.Info
- Publication number
- DE69811877T2 DE69811877T2 DE69811877T DE69811877T DE69811877T2 DE 69811877 T2 DE69811877 T2 DE 69811877T2 DE 69811877 T DE69811877 T DE 69811877T DE 69811877 T DE69811877 T DE 69811877T DE 69811877 T2 DE69811877 T2 DE 69811877T2
- Authority
- DE
- Germany
- Prior art keywords
- arithmetic
- register
- finite field
- registers
- bit
- 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.)
- Expired - Lifetime
Links
- 239000013598 vector Substances 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims 4
- 238000010168 coupling process Methods 0.000 claims 4
- 238000005859 coupling reaction Methods 0.000 claims 4
- 230000003247 decreasing effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 33
- 238000007792 addition Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 10
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 1
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 1
- 210000004460 N cell Anatomy 0.000 description 1
- 210000003888 boundary cell Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Error Detection And Correction (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
Description
- Eliptische Kurven (EC) Kryptographie über einem finiten Feld (endlichem Körper) erfordert arithmetische Operationen aus Addition, Mulitplikation, Quadrieren und Invertierung. Zusätzlich sind auch Subtraktionsoperationen erforderlich, wenn das Feld nicht die Charakteristik Zwei besitzt. Modulare arithmetische Operationen sind auch erforderlich, beispielsweise bei der Berechnung von Signaturen, jedoch sind diese Operationen weniger häufig erforderlich als finite Feldoperationen. EC Kryptographie als Beispiel erfordert die vollständige Ergänzung aus modularen und finite Feldoperationen, Addition, Subtraktion, Multiplikation und Invertierung.
- Feldgrößen für Kryptographie tendieren dazu, relativ groß zu sein, erfordernd schnelle, ausgesuchte Prozessoren, um die arithmetischen Operationen in akzeptabler Zeit auszuführen. Folglich gab es zahlreiche Implementierungen von entweder schnellen modular arithmetischen Prozessoren oder ausgesuchten Prozessoren zur Durchführung arithmetischer Operationen in F&sub2;n. Der Gebrauch von Spezialaufgaben-Prozessoren oder ausgesuchten Prozessoren ist in der Technik gut bekannt. Diese Prozessoren sind in der Regel "termed" Koprozessoren, und werden normalerweise in einem Host-Computersystem verwendet, wobei Anweisungen und Steuerung dem Koprozessor von einem Hauptprozessor vermittelt werden.
- Üblicherweise war RSA das Verschlüsselungssystem der Wahl, jedoch mit dem Aufkommen von besserer und sicherer EC Kryptographie wird die Notwendigkeit für Prozessoren, die ausschließlich modulare Potenzierung durchführen, weniger erforderlich. Jedoch, während sich Nutzer im Übergang von RSA Kryptographie zu EC Kryptographie befinden, gibt es eine Notwendigkeit für einen Arithmetikprozessor, der beide dieser Betriebsarten unterstützt, mit keinem oder wenig Nachteil in Leistung und Kosten. US Patent 5,268,854 lehrt einen Mikroprozessor, aufweisend eine Ganzzahl-Verarbeitungseinheit und eine Gleitkomma- Verarbeitungseinheit, gekoppelt mit einem Register-File.
- Es ist Aufgabe der Erfindung, einen Prozessor bereitzustellen, der finite Feldarithmetik und Ganzzahlarithmetik kombiniert und zur Bereitstellung der für EC Kryptographie erforderlichen Operationen und Modularpotenzierung wie z. B. für RSA Kryptographie erforderlich ist.
- Es ist eine weitere Aufgabe der Erfindung, ein Design für einen arithmetischen Prozessor bereitzustellen, das auf unterschiedliche Feld- oder Registergrößen skaliert werden kann.
- Eine noch weitere Aufgabe der Erfindung ist es, einen arithmetischen Prozessor bereitzustellen, der mit unterschiedlichen Feldgrößen benutzt werden kann.
- Eine noch weitere Aufgabe der Erfindung ist es, einen arithmetischen Prozessor bereitzustellen, der geeignet ist skaliert zu werden, um eine Steigerung der Geschwindigkeit bereitzustellen, bei der Durchführung von Mehrfachabfolgeoperationen durch gleichzeitige Ausführung mehrerer Schritte in der Abfolge.
- Gemäß der Erfindung wird ein arithmetischer Prozessor zur Verfügung gestellt, wie im unabhängigen Patentanspruch 1 definiert.
- Weitere Ausführungsformen der Erfindung sind in den angefügten, abhängigen Patentansprüchen spezifiziert.
- Ausführungsformen der Erfindung werden nun beispielhaft mit Bezug auf die beiliegenden Zeichnungen beschrieben, in welchen:
- Fig. 1 ein Blockdiagramm einer Arithmetik-Prozessorarchitektur zur Durchführung von finite- Feldarithmetik und Ganzzahl-Arithmetik ist;
- Fig. 2 ein blockschematisches Diagramm der in Fig. 1 dargestellten arithmetischen Logikeinheit (ALU) ist;
- Fig. 3 ein Blockdiagramm einer alternativen Ausführungsform einer Arithmetik- Prozessarchitektur zur Durchführung von finite-Feldarithmetik und Ganzzahl-Arithmetik ist;
- Fig. 4 ein blockschematisches Diagramm der in Fig. 3 gezeigten ALU ist;
- Fig. 5(a), (b) und (c) sind Blockdiagramme einer Ausführungsform einer Bit-Scheibe der in Fig. 2 gezeigten ALU;
- Fig. 6 ein Schaltkreisdiagramm eines finite-Feldmultiplizierers der in Fig. 5 gezeigten Bit- Scheibe ist;
- Fig. 7 ein Blockdiagramm eines arithmetischen Invertierers ist;
- Fig. 8 ein Schaltkreisdiagramm eines kombinierten finite-Feld/Ganzzahlmultiplizierers ist;
- Fig. 9 ein blockschematisches Diagramm ist, zeigend eine Ausführungsform einer Multi-Bit ALU nach Fig. 1; und
- Fig. 10 ein Schaltkreisdiagramm des Multi-Bit-finite-Feldmultiplizierer nach Fig. 9.
- Bezug nehmend auf Fig. 1, wird im Allgemeinen eine Ausführungsform eines arithmetischen Prozessors mit dem Bezugszeichen 1 bezeichnet. Wie es leicht zu verstehen ist, kann es neben einem allgemeinen Aufgaben dienenden Prozessor in einem integrierten Computersystem benutzt werden, wobei Daten zwischen dem Computersystem und dem Arithmetikprozessor ausgetauscht werden. Der Arithmetikprozesor umfasst eine Gruppe von Allgemein-Aufgaben-Registern (GP) 2, benennend einen Register-File (der als Zwischenspeicher benutzt werden kann für EC Punkt- Additionen, Punkt- Verdopplungen etc.), welche mit einer arithmetischen Logikeinheit (ALU) 4 kommunizieren, über Dateneingabe- oder Operanden-Busse 6. Die ALU 4 beinhaltet gemeinsam verwendete finite Feld-/ und Ganzzahl-Arithmetik-Schaltkreise. Ein Datenausgabe- oder Ergebnis- Bus 14 ist bereitgestellt von der ALU 4 zu dem Register-File 2 zum Schreiben von in der ALU 4 durchgeführten Berechnungsergebnissen in den Register-File 2.
- Rechenoperationen der ALU 4 werden über mikro-programmierte in einem Steuerungsbereich 8 des Arithmetik-Prozessors 1 liegende Anweisungen gesteuert. Eine Modus-Auswahl-Steuerung 10 ist bereitgestellt, um zwischen entweder Finite-Feld-Berechnungen oder modularen Ganzzahl- Berechnungen auszuwählen. Eine Feldgrößen-Steuerung 12 ist ebenfalls bereitgestellt, um die ALU 4 zu initialisieren, um verschiedene Operanden-Vektor-Größen aufzunehmen. Somit führt die Steuereinheit 8 unter anderem die folgenden Aufgaben durch: stellt der ALU 4 den passenden Arithmetik-Modus und -Operation zur Verfügung, koordiniert den Datenzugriff zwischen Register-File 2 und der ALU 4; und stellt der ALU 4 die zu benutzende passende Feldgröße zur Verfügung.
- Die Allgemein-Aufgaben-Register sind ausgewählt, um eine Breite zu haben, die groß genug ist, um zumindest die größten voraussehbaren F&sub2;n EC Verschlüsselungssysteme handzuhaben. Die Register können miteinander kombiniert werden, um größere für Ganzzahl-Modular-Arithmetik geforderte Längen zu unterstützen. Beispielsweise, falls ein einzelnes Register in dem Register-File 2 512 Bit breit ist, dann können vier Register benutzt werden, um einen Speicher für eine einzelne 2048-bit RSA Größe bereitzustellen. Die GP-Register werden mit einem Datenblock geladen, z. B. kann eine 2048-bit-Berechnung in Blöcken ausgeführt werden und dann wieder zu dem Ergebnis in voller Breite zusammengesetzt werden. Üblicherweise wird der Arithmetik-Prozessor 1 in einem vorhandenen Host-Computersystem verwendet und die Steuereinheit 8 erhält Steuersignale von dem Host-System und übermittelt Daten zu dem Host-Datenbus über eine geeignete Host-Bus-Schnittstelle. Details einer solchen Schnittstelle sind dem Fachmann gut bekannt und werden nicht weiter diskutiert.
- Nun zu Fig. 2 gehend, die ALU 4 umfasst mehrere Spezialaufgabenregister 16, kombinatorische Logik- und Arithmetik-Schaltkreise enthalten in einer Mehrzahl von Unter-ALU's 18, die mit einem oder mehreren Bits arbeiten, eingegeben von Datenbussen 28 zu jeder der Unter-ALU's von den Spezialaufgabenregistern; Ausgabe- Datenbusse 30 zu den Spezialaufgabenregistern 16 von den Unter-ALU's 18 und ihrer eigenen Steuereinheit 20. Die Steuereinheit 20 führt unter anderem die folgenden Aufgaben durch: Führt die ALU 4 der Reihe nach durch Schritte in einer Berechnungsoperation hindurch; überwacht Steuerbits von den Spezialaufgabenregistern 16; und implementiert einen Zähler in ihren eigenen Steuerregistern 22, um die Größe eines verwendeten Feldes zu bestimmen, ein Merkmal, das dem Prozessor 1 erlaubt, für verschiedene Feldgrößen benutzt zu werden, ohne die Hardware des Prozessors umdesignen zu müssen. Um diese Funktionen bereitzustellen, werden die Steuerbits 26 der Spezialaufgabenregister 16 der Steuereinheit 20 als Steuerbiteingaben 24 zur Verfügung gestellt. Die Spezialaufgabenregister 16 sind alle individuell adressierbar. Die Steuereinheit 20 steuert auch die Dateneingabe über die Eingabebusse 6 von und zu dem Registerfile zu den Unter-ALU's 18 oder den Spezialaufgabenregistern 16. Diese Unter-ALU's können zur gleichen Zeit auf einzelnen Bits oder mehreren Bits operieren. Jede dieser Komponenten wird weiter unten detaillierter beschrieben.
- Bezug nehmend auf Fig. 3 wird im Allgemeinen mit Bezugszeichen 1' eine alternative Ausführungsform eines Arithmetikprozessors dargestellt. In dieser Ausführungsform wird eine separate finite Feldeinheit 34 und eine Ganzzahl-Modular-Arithmetikeinheit 36 zur Verfügung gestellt. Dieser Prozessor beinhaltet auch einen Registerfile 2', Dateneingabebusse 6', Datenausgabebusse 14' und eine Steuereinheit 8', jedoch werden separate Steuersignale 13a und 13b von der Steuereinheit 8' zu den jeweiligen ALU's 34 bzw. 36 zur Verfügung gestellt.
- Bezug nehmend auf Fig. 4, werden die ALU's 34 und 36 von Fig. 3 genauer gezeigt. Jede der ALU's 34 und 36 beinhaltet ihre eigenen jeweiligen Spezialaufgabenregister 16'a und 16'b und Steuereinheiten 20'a und 20'b. Jede der ALU's 34 und 36 enthält ihre eigenen Unter-ALU's 18'a bzw. 18'b. Somit ist ersichtlich, dass in dieser Ausführungsform Spezialaufgabenregister 16'a und 16'b und Arithmetik und Steuerschaltkreise nicht gemeinsam genutzt werden. Eine oder mehrere der Unter-ALU's 18'a führen gemeinsam die Funktionen Links/Rechts-Verschiebung, XOR- Verschiebung durch und eine oder mehrere der Unter-ALU's 18'b führen gemeinsam die Funktion der Ganzzahladdition und Ganzzahlsubtraktion durch, mit der Option Übertrag-Behalten- Techniken (Carry save techniques) oder Übertrag-Ausbreitung (carry propagation) zu benutzen.
- Rückbeziehend auf Fig. 2, führen die Unter-ALU's 18 die folgenden logischen Funktionen auf von den Spezialaufgabenregistern 16 bereitgestellten Operanden durch: XOR; Links/Rechts- Verschiebung, XOR-Verschiebung, Ganzzahl-Addition und Ganzzahl-Subtraktion. Diese Funktionen können in einer Unter-ALU 18 oder über mehrere Unter-ALU's hinweg enthalten sein. Durch Bereitstellung mehrerer Unter-ALU's 18 ist der Prozessor in der Lage, mehrere Operationen gleichzeitig durchzuführen (z. B. für finite Feldinvertierung).
- Nun zu Fig. 5 gehend, wird eine in Fig. 2 gezeigter Bit-Scheibe 41 der ALU 4 in größerem Detail gezeigt. In der folgenden Diskussion werden wir auf die Zusammenschaltung von Zellen jeweiliger Spezialaufgaben-Register in Verbindung mit dem ihnen zugeordneten Logikschaltkreis als eine Bit-Scheibe 41 Bezug nehmen. Der Logikschaltkreis, enthalten in einer Bit-Scheibe, ist im Allgemeinen schematisch dargestellt durch eine der in Fig. 2 gezeigten Unter-ALU'S 18. Es ist dann beabsichtigt, dass die Konfiguration einer Bit-Scheibe für ein N-Bit-Register N mal wiederholt werden kann. Zur Klarheit definieren wir weiterhin N als die Anzahl von Zellen in einem Register und wir nehmen Bezug auf individuelle Zellen in einem Register als zum Beispiel Ai mit 0 ≤ i ≤ N - 1 und wobei AN-1 die äußerst linke Zelle eines Spezialaufgaben-Registers ist. Die Inhalte eines Registers werden mit Kleinbuchstaben bezeichnet, zum Beispiel wird ein Bit-Vektor A der Längen von a&sub0; ... an-1 nummerierte Bits haben mit a&sub0; als LSB. Es wird ebenfalls angemerkt, dass, obwohl den Spezialaufgaben-Registern spezifische Namen gegeben wurden, diese Register andere Funktionen übernehmen können, abhängig von den ausgeführten arithmetischen Operationen, wie unten beschrieben wird.
- In Fig. 5, beinhalten die Spezialaufgabenregister 16: ein Paar Operanden-Register A 42 und B 44, zum Halten z. B. den Multiplikanten bzw. den Multiplikator, in einer Multiplikations- Operation; ein Akkumulator-Register C 46; ein Modulus Register, M 48; und ein Übertrag- Erweiterungs-Register Cext 50 (verwendet in Ganzzahl-Arithmetik). Jedes der Register hat N Zellen zur Bereithaltung der jeweiligen binären Ziffern von darin geladenen Bit-Vektoren. Bevorzugt sind die Register Schieberegister. Eine Unter-ALU 18, gezeigt in Fig. 2, kann erfüllt sein durch den Schaltkreis von Block 52 in Fig. 5 und in einer unten zu beschreibenden Art.
- Funktionsweise der ALU 4 kann am besten verstanden werden durch Bezugnahme auf eine spezifische arithmetische Operation wie finite Feld Multiplikation. Betrachtet das Produkt C von zwei Elementen a und b, wo a und b Bit-Vektoren sind und wobei b von der Form sein wird b = (b&sub0; ... bn-1) in Polynom-Basis-Darstellung und a wird von der Form sein a = (a&sub0; ... an-1) in Polynom- Basis-Darstellung. Ein Modulus Bit-Vektor m hat die Form m = (m&sub0; ... mn). Es ist zu beachten, dass das Mudulus Register ein Bit mehr hat als die Anzahl der Bits, die benötigt werden, um den Modulus darzustellen. Alternativerweise, da das am meisten signifikante Bit mn Eins beträgt, könnte dieses Bit impliziert sein und m dargestellt sein durch (m&sub0; ... mn-1). In F&sub2;n kann die Multiplikation ausgeführt werden als eine Reihe von Schritten, die klarer hervorgehoben wird durch den folgenden Pseudo-Code:
- C = 0{C&submin;&sub1; = 0}
- For i from n - 1 to 0 do
- For j from n - 1 to 0 do {cj = cj-1 + biai + cn-1mj}
- Bei Durchführung der Multiplikation werden Teilprodukte des Multiplikanten und jedes Bits von bi des Multiplikators gebildet, ausgehend von dem am meist signifikanten Bit (MSB) zu dem geringst signifikanten Bit (LSB). Die Teilprodukte werden reduziert um den Modulus, wenn das MSB des vorhergehenden Teilproduktes gesetzt ist.
- Multiplikation kann ausgeführt werden durch sequentielles Nutzen eines 1 · N Multiplikators, in welchem Fall die innere, "for" Schleifen des vorhergehenden Pseudocodes paralell durchgeführt wird. Das Modulus Register M wird geladen mit dem Modulus Bit-Vektor m, entledigt von seinem meist signifikanten Bit mn, so dass jede Zelle eine jeweilige der binären Ziffern mi enthält. In der gezeigten Implementierung sind die Bits mi von links nach rechts angeordnet, wobei das MSB des Vektors das äußerst linke Bit ist, z. B. enthält die Zelle Mn-1 Bit mn-1. Falls N ≠ n ist Bit Mn-1 immer noch in MN-1 gespeichert, das heißt die Daten sind links justiert. Die Schieberegister A und B werden geladen mit den Finite-Feld-Elementen-Bit-Vektoren a bzw. b, so dass jede der Zelle eine der binären Ziffern ai oder bi enthält. Die Finite-Feld-Elemente a und b sind links justiert gespeichert in ihren jeweiligen Registern, so dass das oberste Bit des Multiplikatorregisters b immer an dem linken Grenzzellen-Bit verfügbar ist, z. B. (an-1, an-2, ... a&sub0;) und (bn-1, bn-2, ... b&sub0;). Falls die Länge der Vektoren a und b geringer als die Längen der Register sind, werden die verbleibenden Zellen mit Nullen aufgefüllt. Das Obige wird im Allgemeinen von der in Fig. 2 gezeigten Steuereinheit 20 durchgeführt. Andere Anordnungen für sequentielle Multiplikationen sind möglich (wie sequentielles Reduzieren des Multiplikanten), aber solche Anordnungen erlauben keine flexiblen Feldgrößen zusammen mit festen Steuerbitpositionen. Bit-Anordnen vom LSB zum MSB ist ebenfalls möglich mit entsprechenden Änderungen in dem Multiplikations- Algorithmus.
- Eine Bit-Scheibe 41 der ALU 4 zur Durchführung von Multiplikation in einem finiten Feld wird nun beschrieben. Die Bit-Scheibe 41 beinhaltet erste und zweite steuerbare Addierer 54 bwz. 56, von deren jeder eine XOR-Funktion hat. Die oberste Zelle BN-1 des Registers B stellt ein Additions-Steuer-Signal bn-1 57 dem ersten Addierer 54 zu. Eingaben 58 und 60 zu dem ersten Addierer 54 werden von einer Registerzelle A; und Akkumulatorzelle Ci abgeleitet. Eine Ausgabe 62 von deme ersten Addierer 54 ist verbunden mit einer Eingabe des zweiten Addierers 56 zusammen mit einer Eingabe 64 von der Modulus-Registerzelle Mi. Der Addierer 54 führt die Operation Ausgabe 62 = Eingabe 60 + (Eingabe 58 und Kontrollsignal 57) durch, detaillierter gezeigt in Fig. 5 (b).
- Die Ausgabe des zweiten Addierers 56 ist dann verbunden mit der Akkumulatorzelle Ci. Ein zweites Additions-Kontroll-Signal 66 ist von der obersten Zelle CN-1 des Akkumulators C 46 abgeleitet. Man kann sehen, dass dieses Signal die modulare Reduktion des Teilproduktes in dem Akkumulator C durch den Modulus Vektor m durchführt, wenn das oberste Bit CN-1 von C gesetzt ist. Der Addierer 56 führt die Operation Ausgabe = Eingabe 62 + (Eingabe 64 und Kontrollsignal 66) durch wie in Fig. 5(c) genauer dargestellt. Das B Register ist ein getaktetes Schieberegister. Ein Takt-Signal CLK1 68, das durch die Steuereinheit 20 zur Verfügung gestellt werden kann, bedingt, dass die Inhalte dieses Registers nach links verschoben werden für jedes berechnete Teilprodukt.
- Bezug nehmend auf Fig. 6, ist durch das Bezugszeichen 70, eine detaillierte Schaltungsimplementierung der Bit-Scheibe 41 von Fig. 5 für finite-Feld-Multiplikation bezeichnet. Bezug nehmend auf Bit-Scheibe i, 70 der Fig. 6, (nur 3 Bit-Scheiben sind zum Zwecke der Erläuterung in Fig. 6 gezeigt), ist die Zelle ai über ein UND-Gatter 72 UND- verknüpft mit dem Addier-Kontrollsignal bn-1. Die Ausgabe 74 des UND-Gatters 72 ist verbunden mit einer Eingabe des XOR Gatters 76 zusammen mit einer Eingabe 78 von der angrenzenden Zelle Cj-1 des Akkumulators C. Auf diese Art durchführend die Berechnung des Ausdrucks "cj-1 + biai". Der Ausdruck "cn-1mj" ist durchgeführt durch eine UND-Verknüpfung des Signals cn 80 mit mi 82 verwendend ein UND-Gatter 84. Die Ausgabe 86 des UND-Gatters 84 ist verbunden mit der Eingabe eines XOR-Gatters 84, zusammen mit der Ausgabe 88 des XOR-Gatters 76. Die Ausgabe 90 des XOR-Gatters 84 ist verbunden mit der Zelle Ci 92. Auf diese Art ausführend den Ausdruck "cj = cj-1 + biai + cn-1mj". Mit diesem generellen sequentiellen Multiplizierer wird das Produkt von zwei n-Bit finiten Feldelementen in n-Takt-Zyklen produziert. Bevorzugt stellt ein synchroner Zähler Steuerung der Anzahl von Iterationen zur Verfügung, der in einer Steiereinheit 20 enthalten sein kann. Die vorangehende Beschreibung gilt für Ganzzahl-Modular-Multiplikation, wenn Addierer 54 eine Bit-Scheibe eines Ganzzahl-Adddierers ist und Addierer 56 eine Bit- Scheibe eines Ganzzahl Subtrahierers ist, so wie später beschrieben werden wird.
- Obwohl der Schaltkreis mit Bezugnahme auf Multiplikation in dem Finiten Feld F&sub2;n beschrieben werden, können andere Rechenoperationen mit Leichtigkeit durchgeführt werden. Finite-Feld- Addition hat einen Vorteil gegenüber Ganzzahl-Arithmetik, in dem keine Überträge erzeugt werden. Die Berechnung einer Finite-Feld-Summe erfordert nur, dass ein XOR-Gatter an jeder in Frage kommender Zelle der Register eingefügt wird, da Addition von zwei Elementen a und b in einem finiten Feld einfach a XOR b ist. Somit, wieder Bezug nehmend auf Fig. 5, ist eine Eingabe 100 dem ersten Addierer 54 von Zelle Bi zugeführt, und der zweite Addierer 56 wird für Reduktion verwendet. Die Ausgabe von Addierer 54 ist dann direkt in Zelle Ci geschrieben. Nachdem die Operanden in die Register a und b befördert wurden, kann die Addition in einem einzelnen Taktzyklus durchgeführt werden. Es ist ebenfalls möglich, den Rechenvorgang in der ALU durchzuführen und das Ergebnis wird zurückgeschrieben in ein Allgemein-Register in dem Register-File. Für Ganzzahl-Addition ist der Addierer 54 eine Bit-Scheibe eines Ganzzahl- Addierers und das Ergebnis muss auf Modular-Überschuss geprüft werden. Falls dieser Zustand entsteht, wird Addierer 56, der eine Bit-Scheibe eines Ganzzahl-Subtrahierers ist, verwendet, um das Ergebnis zu reduzieren.
- Quadrieren einer Zahl kann in der selben Zeit wie Multiplizieren von zwei verschiedenen Zahlen durchgeführt werden. Quadrieren auf einer Polynom-Basis kann in einem einzelnen Taktzyklus durchgeführt werden, falls die spezifische Irreduzible zusammen mit der Quadrierungs- Entwicklung explizit drahtgebunden ist. Als Alternative kann Quadrieren durch Multiplikation von identischen Eingaben durchgeführt werden.
- Invertierung von Finite-Feld-Elementen in F&sub2;n kann durchgeführt werden durch Verwendung des erweiterten Euklidischen Algorithmus und Verwendung vier der Spezialaufgaben-Register mit zusätzlicher Steuerlogik. Dies wird in 2n Zyklen beendet, falls das Verschieben gleichzeitig mit den Additionen erfolgt (was leicht durch eine drahtgebundene Verbindung der Ausgaben der Additionen mit der nächsten Registerzelle durchführbar ist).
- Die in der Invertierung verwendeten Register sind A, B, M und C. Aus Zweckmäßigkeit sind diese Register in Fig. 7 schematisch gezeigt, wobei ihnen die folgenden Beschriftungen zugewiesen sind: M : UL; C : LL; A : UR; und B : LR. Nochmals der Rechenvorgang kann auf eine Bit-Scheibe 110 Bezug nehmend beschrieben werden.
- Die Operanden in einer Invertierung sind im Allgemeinen: Ein zu invertierendes Element g, ein nicht reduzierbares Polynom f oder Modulus m (später beschrieben); ein Bit-Vektor "0" und ein Bit-Vektor "1". Das UL-Register 116 wird mit f oder m geladen. Das LL-Register 118 wird mit g geladen, das UR-Register 112 wird mit '0' geladen und das LR-Register 114 wird mit '1' geladen. Für die UR- und LR-Register 112 bzw. 114 sind Zellen URi und LRi mit einer XOR-Verknüpfung durch ein XOR-Gatter 120 verbunden, um eine Ausgabe 122 zu erzeugen. Ein Steuer signal 124 bestimmt, ob eine von drei möglichen Eingaben in die Zellen URi und ULi geschrieben wird. Die Eingaben sind entweder eine Links- oder Rechts-Verschiebung von angrenzenden Zellen oder die Ausgabe 122. Das Steuersignal B bestimmt aus der unten zu beschreibenden Zustandstabelle. Für die UL- oder LL-Register 116 bzw. 118 sind Zellen ULi und LLi mit einer XOR-Verknüpfung durch XOR-Gatter 126 verbunden, um eine Ausgabe 128 zu erzeugen. Ein Steuersignal 130 bestimmt, ob eine von zwei möglichen Eingaben in die Zellen ULi und LL&sub1; geschrieben wird. Die Eingaben sind entweder eine Linksverschiebung von der angrenzenden Zelle (i - 1) oder die Ausgabe 128. Wiederum wird das Steuersignal 130 bestimmt aus der unten zu beschreibenden Zustandstabelle.
- Falls wir annehmen, dass die Steuergrößen ku = mal die Länge des UL-Registers und k&sub1; - mal die Länge des LL-Registers haben. Dann Δ = ku - k&sub1;. Die Werte ku und k&sub1; sind vorzugsweise in synchronen Countdown-Zählern implementiert, und Δ ist vorzugsweise mit einem synchronen Hoch-/Runter-Zähler implementiert. Zählerregister ku, k&sub1; und Δ sind ebenfalls bereitgestellt. Die UL- und LL-Register sind Links-Schieberegister, während die UR und LR Register beides sind: Links- und Rechtsschieberegister.
- Weiterhin für die Zählerregister ist Δ mit 0 geladen, ist ku mit n initialisiert. Ein Steuerbit- Signalspeicher stellt eine Umschalte-Funktion bereit, wobei eine '1' ein Hochzählen bestimmt und eine '0' ein Runterzählen bestimmt. Die U/D-Steuerung (Up/Down-Steuerung) ist anfangs auf '1' gesetzt. Dann hat eine Abfolgesteuereinheit enthalten in der Steuereinheit zur Durchführung der Invertierung in der ALU die folgenden Ausgaben:
- deckl ... erniedrige k&sub1; kl
- decku ... erniedrige ku ku
- decDelta ... erniedrige.D.
- incDelta ... erhöhe. D.
- toggle ... Umschalten Hoch/Runter (UP/DOWN)
- lsUL ... Linksverschiebung oberes linkes Register
- lsLL ... Linksverschiebung unteres linkes Register
- lsUR ... Linksverschiebung oberes rechtes Register
- lsLR ... Linksverschiebung unteres rechtes Register
- rsUR ... Rechtssverschiebung oberes rechtes Register
- rsLR ... Rechtssverschiebung unteres rechtes Register
- outLR ... Ausgabe unteres rechtes Register
- outUR ... Ausgabe oberes rechtes Register
- dadd-lsLL ... Runter XOR und Linksverschiebung unteres linkes Register
- uadd-lsUL ... Hoch XOR und Linksverschiebung oberes linkes Register
- Eine Zustandstabelle umreißend die Aktion des Invertierers folgt, worin Mu und C&sub1; das obere Bit der Register UL bzw. LL sind und worin Mu und C&sub1; den derzeitigen Status bestimmen. Wenn eine Aktion auf den Registern und Zählern ausgeführt wird, welche den Invertierer in einen neuen Zustand versetzt. Der Prozess wird wiederholt, bis entweder ku oder k&sub1; Null sind und eines der rechten Register RL oder RU g&supmin;¹ enthält, das andere wird den Modulus selbst enthalten, welcher erneut in das Register m zur Verwendung in nachfolgenden Multiplikationen oder Inversionsoperationen geschrieben werden kann.
- Die extreme Ähnlichkeit der Polynom- und Ganzzahl-Darstellungen erlaubt das gemeinsame Nutzen von Hardware in der ALU. Für Addition, ist die Ganzzahl-Arithmetik nur durch das Erfordernis für Überträge verkompliziert. Die Ganzzahl-Arithmetikoperationen der ALU sind beispielhaft am besten veranschaulicht durch Anwendung einer Multiplikations-Operation.
- Multiplikation in Z ist veranschaulicht durch Bezugnahme auf die folgende Abfoge von Schritten dargestellt in Pseudo-Code, worin wie schon früher, a und b miteinander zu multipilierende Bit- Vektoren sind und c das Produkt of a und b ist, und worin c = (c&sub0;, c&sub1;, ... cn-1).
- C = 0
- M = 0
- For i from 0 to n - 1 do
- Cext.←.C
- For j from 0 to n - 1 do
- Cj = (bi(aj) + mj + cj)mod2
- Mj+i = (bj(aj) + mj + cj)/2
- und wobei
- Cext.←.C: For j from n - 1 to 0 do
- cj-1 = cj
- cj-1ext = cjext
- Analog, kann dies dazu verwendet werden, ganze Zahlen modulo p zu invertieren, falls die XOR's durch Subtrahierer ersetzt werden und das m Register mit dem primären geladen wird. Als eine Verbesserung können Übertrag-Behalte-Techniken angewandt werden, um Übertrag-Ausbreitung zu verzögern.
- Es kann beobachtet werden, dass Bit-Scheiben 70 für finite Feldmultiplikation veranschaulicht in der Ausführungsform von Fig. 6 modifiziert werden können, um Multiplikation von Ganzzahl- Darstellungen einzuschließen. Es ist ebenfalls anzumerken, dass für Ganzzahl Multiplikation, die Register mit den Bit-Vektoren in umgekehrter Reihenfolge als von der von F&sub2;m geladen werden. z. B. enthält die äußerst linke Zelle eines Registers das LSB des Bit-Vektors. In Ganzzahl- Multiplikation ist es notwendig, Überträge zwischen aufeinanderfolgenden Teilprodukten durchzuführen, weiterhin da die Teilprodukte nicht durch einen Modulus reduziert werden, müssen die Überträge von der Addition von aufeinanderfolgenden Teilprodukten zur Verfügung gestellt werden. Somit wird das Akkumulator-Register C erweitert umd ein neues Register Cext 49 wird zur Verfügung gestellt wie in Fig. 5 gezeigt. Bevor jedes Teilprodukt gebildet wird, wird das unterste Bit des Akkumulators C (Zelle CM) in das oberste Bit des erweiterten Registers Cext (Zelle Cext&sub1;) verschoben und dann werden beide der Akkumulator C und Cext in Richtung des LSB um ein Bit verschoben. Das Endergebnis ist in C und Cext erhalten, worin Cext die Bits niederer Ordnung des Produktes enthält. Dies wird durch die oben erwähnte Operation Cext ← C dargestellt.
- Nun Bezug nehmend auf Fig. 8 ist eine Bit-Scheibe 170 gezeigt und welche ähnlich der Bit- Scheibe 70 von Fig. 6 ist. Dementsprechend werden die zur Beschreibung der Fig. 6 verwendeten Bezugszeichen benutzt zur Kennzeichnung gleicher Komponenten mit einem hinzugefügten Präfix 100; z. B. wird das Bezugszeichen 70 zu 170. Die Anordnung von Fig. 8 unterscheidet sich von Fig. 6 in zweierlei wichtigen Hinsichten; das Modulusregister m wird als Übertrag-Register verwendet und ein Modus-Auswahlsignal Z/F&sub2;m 171 ist bereitgestellt.
- Nun werden die Ausdrücke cj = cj-1 + biai + cn-1mj ausgeführt wie zuvor für die Finite-Feld- Multiplikation mit dem Produkt von dem Steuersignal bm und den Inhalten der Registerzelle Ai, ausgeführt durch UND-Gatter 172. Die Ausgabe 174 des UND-Gatters 172 ist durch das XOR- Gatter 176 mit den Inhalten der Registerzelle Cj-1 mit einer XOR-Verknüpfung verbunden, um einen Ausgabeausdruck Cj-1 + bi(ai) bezeichnet mit Bezugszeichen 158 zu erzeugen. Dieses Ausgabesignal ist verbunden über eine XOR-Verknüpfung unter Verwendung des XOR-Gatters 184 mit dem Ausdruck "cn-1(mj)" bezeichnet mit dem Bezugszeichen 185, abgeleitet von dem UND-Gatter 160, um den Ausdruck cj zu erzeugen. Außerdem wird ein Überträg-Ausdruck mi erzeugt, aus der Summe der jeweiligen Produkte "biai, cj-1" 162 und "(cj-1 + biaimj)" 163 und in die Zelle mi 182 geschrieben. Die Produkt-Ausdrücke 162 und 163 werden durch die UND-Gatter 164 bzw. 166 ausgeführt. Die Summe der Ausdrücke 162 und 163 wird durch das ODER-Gatter 167 gebildet.
- Das Modus-Auswahl-Signal Z 171 ist mit einem logischen ODER mit dem Übertrag-Eingangs- Signal cn 180 verknüpft und ist auch mit einem logischen UND 168 mit Taktsignal 169 verknüpft. Somit wird durch Setzen Z = 0 finite Feld-Arithmetik durchgeführt und durch Setzen Z = 1 wird Ganzzahl-Arithmetik durchgeführt.
- Somit sind die notwendigen Änderungen, um den vorher in Fig. 6 gegebenen finite Feld Multiplizierer in einen kombinierten finite Feld/Ganzzahl-Multiplizierer umzuwandeln in Fig. 8 gezeigt. Beachte, dass das Ausgabe-Register C erweitert ist, um die Bits niederer Ordnung der Multiplikation aufzunehmen. Da Berechnungen in Z ohne einen Modulus durchgeführt werden, wird das Modulus-Register M nichtverwendet, um Teilprodukte zu reduzieren, sondern als ein Halter der Überträge. Das Steuersignal Z/F&sub2;M 171 macht den Ganzzahl-Multiplikations-Schaltkreis tauglich für die ALU.
- Ein letzte Übertrag-Ausbreitung kann zur Verfügung gestellt werden durch eine "Manchester ripple chain", möglicherweise durch einen Bit-Überspring-Mechanismus aus einer oder zwei Schichten, infolge der langen Registerlänge. Es ist ebenfalls möglich, für weitere n Zyklen zu takten, den Carry-Save-Addierern erlauben, die Überträge vollständig zusammenzuführen.
- Zweier-Komplent-Subtraktion kann in dem Übertrag-Ausbreitungs-Addierer durchgeführt werden, vorausgesetzt, dass eine Eingabe unter Vorbehalt ergänzt werden kann an ihrem Eingang, dass ein "scharfer" Übertrag - EIN an dem LSB des Addierers gemacht ist.
- Beim Multiplizieren ist der durchlaufende Übertrag nicht tolerierbar, sogar wenn durch ein Bit- Positionsüberspringen verbessert, aber diese Übertrag-Ausbreitung kann fast vollständig entfernt werden durch Verwendung eines Carry-Save-Addierer, welcher eine redundante Darstellung des Teilproduktes bereitstellt, welche nur aufgelöst wird, wenn die Multiplikation vollständig ist.
- In einer weiteren Ausführungsform kann die ALU 4 geändert sein, wie in Fig. 9 gezeigt, um eine lineare Steigerung der Rechengeschwindigkeit zu erzielen. Dies wird erreicht durch gleichzeitige Verarbeitung aufeinander folgender Bits von den Spezial-Aufgaben-Registern 16' und Implementieren zusätzlicher Schaltkreise angedeutet durch die modifizierten Unter-ALU's 190, um die inkrementellen Additionen wie schematisch in Fig. 9 veranschaulicht zu verarbeiten. Die Verarbeitung mehrerer Bits führt dann zu einer linearen Steigerung der Geschwindigkeit. Z. B. wo eine Berechnung sequentiell durchgeführt wird, können zwei oder mehr Schritte in der Abfolge gleichzeitig durchgeführt werden. In diesem Falle wird die Steuereinheit 20' zwei oder mehr Steuerbits 194 von dem Spezial-Aufgabenregistern 16' verarbeiten und die Eingaben 192 zu der Steuereinheit sind in Fig. 9 als Mehrfach-Bit-Linien angezeigt.
- In Fig. 10 ist ein Schaltungsdiagramm eines Multiplizierers zur gleichzeitigen Verarbeitung von zwei Bits für Finite Felder gezeigt. In dieser Ausführung haben die Bit-Scheiben 200 die doppelte Anzahl an XOR-Gattern 210, durchführend zwei Ausdrücke der Addition, die Schaltung nimmt zwei Bits der Multiplikatoren und fügt dazu zwei angrenzende Verschiebungen der Multiplikanten ai und ai-1, und reduziert mit zwei angrenzenden Verschiebungen des Modulus Mi und Mi-1. Dies hat den Effekt der gleichzeitigen Erzeugung zweier aufeinanderfolgender Teilprodukte mit Modulusreduktion, somit die Gesamtrechenzeit halbierend.
- Es ist zu bemerken, dass die obersten Bits der Spezial-Aufgaben-Register als Steuerbits für die Steuereinheiten 20 oder 20' benutzt werden. Dies hat den Vorteil, dass wenn Operanden in die Register geladen werden, sie links ausgerichtet sind; somit wird die Steuerung immer von einer festen Bitposition erzielt. Jedoch können auch andere Bits als Steuerbits verwendet werden, z. B. die untersten Bits: aber dies kann außerdem die Komplexität der Hardware erhöhen.
- Nochmals, Mehrfach-Bit-Arbeitsweise ermöglicht potentiell verbesserte lineare Steigerung der Rechengeschwindigkeit, da solche Optionen wie Booth- (oder modifizierte-Booth-) Recoding ermöglicht wird.
- Es wird angenommen, dass die ALU auch fähig ist, einfache arithmetische Operationen auf Allgemein-Registern durchzuführen. Eine Alternative ist es, alle Arithmetik von internen Registern der ALU durchgeführt zu bekommen, mit den Allgemein-Aufgaben-Registern nur fähig, diese Register zu lesen und zu beschreiben.
- Die Funktionalität der ALU wird Ganzzahl-Addition beinhalten, anwendend irgendein Übertrag- Aushreitungs-Verfahren, wie durchlaufende Übertrag oder die Kombination von Bit- Positionsüberspringen-Addition und Übertrag-Vervollständigung.
- Die ALU wird auch einfache XOR-Funktionalität zur Verwendung in Finite-Feld-Addition bereitstellen. Da die Ganzzahl- und Finite-Feld-Darstellungen (Bit-Reihenfolge) umgekehrt sind, ist es vorteilhaft, einen Bit-Umkehr-Mechanismus bereitzustellen, zur Verwendung in Feld-zu- Ganzzahl und Ganzzahl-zu-Feld Umwandlungen. Die obersten Plätze von zwei Schieberegistern sind verbunden, um diese Möglichkeit in n Taktzyklen zur Verfügung zu stellen, wobei n die Länge der arithmetischen Operanden ist.
- Die hier angegebene allgemeine Architektur hat das Potential, nicht nur den Register-File gemeinsam zu nutzen zwischen EC und Modular-Exponential-Arithmetik, sondern auch die Spezial-Aufgaben-Register und selbst kombinatorische Logik gemeinsam zu nutzen, obendrein zu gemeinsam genutzten Steuerregistern.
- Während die Erfindung in Verbindung mit einer speziellen Ausführungsform davon und einer speziellen Verwendung beschrieben wurde, werden dem Fachmann - ohne sich von dem Wesen der Erfindung zu entfernen - mehrere Abänderungen hiervon sich auftun. Zum Beispiel ist zu beachten, dass in den beschriebenen Ausführungsformen, Bezug auf spezielle Logikschaltkreise genommen wurde, jedoch können äquivalente Schaltkreise benutzt werden, z. B. durch Verwendung "de Morgans" - Regel oder falls invertierte Logik implementiert ist, dann können komplementäre Schaltkreise verwendet werden. Obendrein, wenn Bezug genommen wird auf die Orientierung der Register und Bit Vektoren, z. B. links, rechts, oben, unten, sind andere Anordnungen dieser Richtungen ebenfalls impliziert.
Claims (24)
1. Arithmetikprozessor (1) aufweisend:
(a) eine arithmetische Logikeinheit (4) mit zwei arithmetischen Schaltkreisen zur Durchführung
einer Gruppe von zugeordneten arithmetischen Operationen, die arithmetische Logikeinheit (4)
hat einen Operanden-Eingabedatenbus (6) zur Entgegennahme von Operandendaten und einen
Ergebnis-Ausgabedatenbus (14), um die Ergebnisse der arithmetischen Operationen
zurückzugeben;
(b) einen Registerfile (2), der an den Operandendatenbus (6) und den Ergebnisdatenbus (12)
gekoppelt ist und
(c) eine Steuereinheit (8), gekoppelt an die arithmetische Logikeinheit (4) ALU und den
Registerfile,
dadurch gekennzeichnet, dass einer der arithmetischen Schaltkreise finite Feld-Operationen
durchführt über das finite Feld F&sub2;n und dass die andere der arithmetischen Einheiten modulare
Ganzzahloperationen durchführt, dass die Steuereinheit eine der finiten Element-Operationen
oder der Ganzzahlarithmetischen Operationen auswählt, in Reaktion auf ein Zustandssteuersignal
(10) und den Datenzugang zwischen dem Registerfile (2) und der arithmetischen Logikeinheit (4)
steuert und dass der Registerfile (2) von beiden arithmetischen Schaltkreise gemeinsam genutz
ist.
2. Arithmetischer Prozessor nach Anspruch 1, wobei der Registerfile (2) Allgemein-Aufgabe-
Register aufweist und die arithmetische Logikeinheit (4) eine Verfahrens-Bitweite aufweist, die
größer ist als die Operandenbus (6) -Datenbitweite.
3. Arithmetischer Prozessor nach Anspruch 1, wobei die Steuereinheit (8) mit Anweisungen zur
Steuerung einer ausgewählten arithmetischen Operation der arithmetischen Logikeinheit
programmiert ist.
4. Arithmetischer Prozessor nach Anspruch 1, wobei der Operandenbus (6) eine Bitweite
aufweist, die gleich ist einer Verfahrensbitweite der arithmetischen Logikeinheit (4) und der
Ergebnisdatenbus (14) - Bitweite.
5. Arithmetischer Prozessor nach Anspruch 4, wobei der Operandendatenbus erste und zweite
Operandenbusse (6, 6') aufweist zur Kopplung erster bzw. zweiter Operanden mit der
arithmetischen Logikeinheit (4).
6. Arithmetischer Prozessor nach Anspruch 5, wobei die Allgemein-Aufgabe-Register einzeln
adressierbar sind durch die Steuereinheit (8), wobei weiter die Daten in Vielfachregistern
kombiniert werden können zur Berechnung durch die arithmetische Logikeinheit (4) in
Feldgrößen größer als die Verfahrens-Bitweite der arithmetischen Logikeinheit (4).
7. Arithmetischer Prozessor nach Anspruch 1, wobei die Steuereinheit (8) ein
Feldgrößensteuerungssignal (12) ausgibt, wodurch die arithmetische Logikeinheit (4) in
verschiedenen Feldgrößen betrieben werden kann.
8. Arithmetischer Prozessor nach Anspruch 1, wobei die arithmetische Logikeinheit eine
Mehrzahl von Registern (20) für spezielle Aufgaben aufweist zur Aufnahme von Operanden, die
in den arithmetischen Operationen von dem Registerfile (6) zu benutzen sind, eine Mehrzahl von
arithmetischen Logik-Untereinheiten (18), die kombinatorische und logische Schaltkreiselemente
aufweisen, welche ein oder mehrere Bits des Spezialaufgabenregisters (20) und eine Abfolge-
Steuereinheit koppeln, antwortend auf Steuerungsinformationen, die von der Steuereinheit
empfangen werden, wobei diese Abfolge-Steuereinheit und der enthaltene Zähler und
Erfassungsschaltkreisanordnung gekuppelt ist mit den Spezialaufgaben-Registern und der
Mehrzahl von arithmetischen Logik-Untereinheiten, zur Steuerung von Operationen derer, um
eine Abfolge von Schritten zu bestimmen, die in einer arithmetischen Operation durchgeführt
werden müssen.
9. Arithmetischer Prozessor nach Anspruch 8, wobei die arithmetische Logikeinheit bestimmt ist
zur Durchführung der arithmetischen Operationen von finiten Feld-Multiplikationen, Quadrieren,
Addition, Substraktion und Inversion.
10. arithmetischer Prozessor nach Anspruch 8, wobei die arithmetischen Logik-Untereinheiten
bestimmt sind zur Durchführung von XOR (ausschließliches Oder), Verschiebung, Verschiebung-
XOR, additions- und substraktionslogischen Operationen.
11. Arithmetischer Prozessor nach Anspruch 1, wobei der finite Feldarithmetische Schaltkreis
aufweist: einen finite Feld-Multiplizier-Schaltkreis mit einer Vielzahl von
Spezialaufgabenregistern einschließlich eines A-Registers und eines B-Registers zur Aufnahme
erster bzw. zweiter Operanden-Bitvektoren, ein M-Register zur Aufnahme eines
Modulusbitvektors und einen Akkumulator zum Enthalten eines finite Feld-Produktes der
Operanden; eine Logik-Schaltkreisanordnung, welche Verbindungen von jeweiligen Zellen des A-
und B-Registers zu Zellen des Akkumulators herstellt und eine Abfolge-Steuerungseinheit, die
betrieblich verbunden ist mit den Registern und der Logik-Schaltkreisanordnung zur
Implementierung einer Abfolge von Schritten zur Ableitung des finite Feld-Produktes.
12. Arithmetischer Prozessor nach Anspruch 11, wobei die Abfolge von Schritten aufweist:
Berechnen von Teilprodukten von Inhalten des A-Registers mit aufeinander folgenden Bits des
B-Registers, Abspeichern der Teilprodukte in dem Akkumulator, Untersuchung eines Bits des
Teilproduktes; Vermindern des Teilproduktes durch den Modulus wenn das untersuchte Bit
gesetzt ist und Wiederholen der Schritte für nachfolgende Bits des B-Registers.
13. Arithmetischer Prozessor nach Anspruch 12, einschließend Speichern der Operandenvektoren
links jusitiert in dem A-Register bzw. dem B-Register, und das Testbit, abgeleitet von dem am
meisten links befindlichen Bit des Registers.
14. Arithmetischer Prozessor nach Anspruch 12, wobei das B-Register ein Schiebe-Register ist.
15. Arithmetischer Prozessor nach Anspruch 14, wobei die Logik-Schaltkreisanordnung eine
Mehrzahl von steuerbaren Additions-Einheiten aufweist, jeweils gekuppelt mit entsprechenden
Registerzellen, jeweils aufweisend einen ersten steuerbaren Zuzähler, der Eingabewerte besitzt
abgeleitet von der Registerzelie Ai und der Akkumulator-Zelle Ci und antwortend auf ein erstes
Zuzähl-Steuersignal, abgeleitet von der Zelle BN-1 des Registers B zur Herstellung eines ersten
Zuzähl-Ausgangssignals; eine zweiten steuerbaren Zuzähler, der Eingangswerte aufweist
abgeleitet von den Modulus-Registerzellen Mi und dem Zuzähl-Ausgangssignal und antwortend
auf ein zweites Zuzähl-Steuersignal, abgeleitet von der Zelle CN-1 des Akkumulators zur
Erzeugung eines Ausgangssignals, das mit der Akkumulatorzelle Ci gekoppelt ist.
16. Arithmetischer Prozessor nach Anspruch 1 S. aufweisend einen finite Feld-Zuzählschaltkreis.
17. Arithmetischer Prozessor nach Anspruch 16, wobei der finite Feld-Zuzähler Mittel aufweist
zur Kopplung eines Eingangswertes, abgeleitet von der Zelle Bi des Registers B zu jedem der
ersten Zuzähler; und Mittel zur Kopplung des Ausgangswertes des zweiten Zuzählers zu der
Zelle Ci und wobei die Abfolge-Steuereinheit antwortet auf ein finite-Feld-Zuzähl-Steuersignal,
wobei die finite Feld-Addition in einem einzigen Taktzyklus durchgeführt wird.
18. Arithmetischer Prozessor nach Anspruch 1, wobei der finite-Feldarithmetikschaltkreis einen
finite-Feld-Invertierschaltkreis aufweist.
19. Arithmetischer Prozessor nach Anspruch 18, wobei der finite-Feld-Invertierschaltkreis
aufweist: eine Mehrzahl von Spezialaufgaben-Registern einschließlich eines A-Registers und
eines B-Registers zur Aufnahme erster bzw. zweiter Operandenbitvektoren, ein M-Register zur
Aufnahme eines Modulusbitvektors und einen Akkumulator zum Enthalten eines finite-Feld-
Produktes der Operanden.
20. Arithmetischer Prozessor nach Anspruch 1, wobei die arithmetische Steuereinheit aufweist:
einen finite-Feld-Multiplizierschaltkreis, einen finite-Feld-Invertierschaltkreis, eine Mehrzahl von
Spezialaufgaben-Registern, eine Logik-Schaltkreisanordnung, die Verbindungen zwischen
jeweiligen Zellen der Spezialaufgaben-Register herstellt und eine Abfolge-Steuereinheit, die
operativ verbunden ist mit den Registern und der Logik-Schaltkreisanordnung zur Ausführung
einer Abfolge von Schritten, um ein finites Feldprodukt oder eine finite Feldinvertierung zu
berechnen und wobei die Spezialaufgabenregister gemeinsam genutzt sind von dem finite-Feld-
Multiplizierer und dem finite-Feld-Invertierschaltkreis.
21. Arithmetischer Prozessor nach Anspruch 20, wobei der finite-Feld-Invertierschaltkreis einen
erweiterten Euklidischen Algorithmus ausführt.
22. Arithmetischer Prozessor nach Anspruch 11, aufweisend einen arithmetischen Ganzzahl-
Muliplikationsschaltkreis.
23. Arithmetischer Prozessor nach Anspruch 12, wobei die arithmetische Ganzzahlmuliplikation
ausgeführt ist durch Laden des M-Registers mit einem Übertrag in Antwort auf das
Modusauswahlsignal.
24. Arithmetischer Prozessor nach Anspruch 1, zur Verwendung in einem kryptografischen
System.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9707861.2A GB9707861D0 (en) | 1997-04-18 | 1997-04-18 | Arithmetic processor |
PCT/CA1998/000467 WO1998048345A1 (en) | 1997-04-18 | 1998-04-20 | Arithmetic processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69811877D1 DE69811877D1 (de) | 2003-04-10 |
DE69811877T2 true DE69811877T2 (de) | 2003-12-18 |
Family
ID=10810977
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69811877T Expired - Lifetime DE69811877T2 (de) | 1997-04-18 | 1998-04-20 | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. |
DE69841492T Expired - Lifetime DE69841492D1 (de) | 1997-04-18 | 1998-04-20 | Arithmetischer Prozessor geeignet für verschiedenen endlichen Feldgrösse. |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69841492T Expired - Lifetime DE69841492D1 (de) | 1997-04-18 | 1998-04-20 | Arithmetischer Prozessor geeignet für verschiedenen endlichen Feldgrösse. |
Country Status (8)
Country | Link |
---|---|
US (5) | US6266717B1 (de) |
EP (2) | EP0976027B1 (de) |
JP (4) | JP2001520775A (de) |
AU (1) | AU7329198A (de) |
CA (1) | CA2286647C (de) |
DE (2) | DE69811877T2 (de) |
GB (1) | GB9707861D0 (de) |
WO (1) | WO1998048345A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424504B2 (en) | 1997-04-18 | 2008-09-09 | Certicom Corp. | Arithmetic processor for accomodating different field sizes |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7483935B2 (en) * | 1995-08-16 | 2009-01-27 | Microunity Systems Engineering, Inc. | System and method to implement a matrix multiply unit of a broadband processor |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6366940B1 (en) * | 1998-03-02 | 2002-04-02 | Matsushita Electric Industrial Co., Ltd. | High-speed modular multiplication apparatus achieved in small circuit |
US6199087B1 (en) * | 1998-06-25 | 2001-03-06 | Hewlett-Packard Company | Apparatus and method for efficient arithmetic in finite fields through alternative representation |
TW421756B (en) * | 1998-10-01 | 2001-02-11 | Wei Shiue Wen | Arithmetic operation circuit of finite field GF(2<m>) |
US6397241B1 (en) * | 1998-12-18 | 2002-05-28 | Motorola, Inc. | Multiplier cell and method of computing |
AU3286399A (en) * | 1998-12-18 | 2000-07-12 | Motorola, Inc. | Circuit and method of cryptographic multiplication |
FR2788616B1 (fr) * | 1999-01-15 | 2001-04-20 | St Microelectronics Sa | Circuit de multiplication dans un corps de galois |
US7277540B1 (en) * | 1999-01-20 | 2007-10-02 | Kabushiki Kaisha Toshiba | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography |
JP4484002B2 (ja) * | 1999-10-04 | 2010-06-16 | ネッツエスアイ東洋株式会社 | 演算プロセッサ |
US6701336B1 (en) * | 1999-11-12 | 2004-03-02 | Maxtor Corporation | Shared galois field multiplier |
KR100848412B1 (ko) * | 2000-05-15 | 2008-07-28 | 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 | 정수연산필드의 범위를 확장하는 장치 및 방법 |
US8176108B2 (en) * | 2000-06-20 | 2012-05-08 | International Business Machines Corporation | Method, apparatus and computer program product for network design and analysis |
US7069287B2 (en) * | 2000-09-19 | 2006-06-27 | Worcester Polytechnic Institute | Method for efficient computation of odd characteristic extension fields |
DE10061997A1 (de) * | 2000-12-13 | 2002-07-18 | Infineon Technologies Ag | Kryptographieprozessor |
FR2818847A1 (fr) * | 2000-12-26 | 2002-06-28 | St Microelectronics Sa | Circuit logique a polarite variable |
US7599981B2 (en) * | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US7181484B2 (en) | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US7711763B2 (en) * | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7607165B2 (en) * | 2001-03-09 | 2009-10-20 | The Athena Group, Inc. | Method and apparatus for multiplication and/or modular reduction processing |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
WO2003040911A2 (fr) * | 2001-06-13 | 2003-05-15 | Zencod S.A. | Carte d'acceleration de traitement cryptographique |
KR20030003435A (ko) * | 2001-06-30 | 2003-01-10 | 주식회사 시큐리티테크놀로지스 | 암호시스템에 사용하기 위한 최적의 역원을 구하기 위한방법 및 장치 |
WO2003021423A2 (en) * | 2001-09-04 | 2003-03-13 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
US7206410B2 (en) * | 2001-10-10 | 2007-04-17 | Stmicroelectronics S.R.L. | Circuit for the inner or scalar product computation in Galois fields |
US6766345B2 (en) | 2001-11-30 | 2004-07-20 | Analog Devices, Inc. | Galois field multiplier system |
US7177891B2 (en) * | 2002-10-09 | 2007-02-13 | Analog Devices, Inc. | Compact Galois field multiplier engine |
US7269615B2 (en) * | 2001-12-18 | 2007-09-11 | Analog Devices, Inc. | Reconfigurable input Galois field linear transformer system |
US7283628B2 (en) | 2001-11-30 | 2007-10-16 | Analog Devices, Inc. | Programmable data encryption engine |
US7082452B2 (en) * | 2001-11-30 | 2006-07-25 | Analog Devices, Inc. | Galois field multiply/multiply-add/multiply accumulate |
US7895253B2 (en) * | 2001-11-30 | 2011-02-22 | Analog Devices, Inc. | Compound Galois field engine and Galois field divider and square root engine and method |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
DE10164416A1 (de) * | 2001-12-29 | 2003-07-10 | Philips Intellectual Property | Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens |
CA2369537C (en) * | 2001-12-31 | 2013-07-23 | Certicom Corp. | Method and apparatus for performing finite field calculations |
US7000090B2 (en) * | 2002-01-21 | 2006-02-14 | Analog Devices, Inc. | Center focused single instruction multiple data (SIMD) array system |
US6941446B2 (en) * | 2002-01-21 | 2005-09-06 | Analog Devices, Inc. | Single instruction multiple data array cell |
US6865661B2 (en) | 2002-01-21 | 2005-03-08 | Analog Devices, Inc. | Reconfigurable single instruction multiple data array |
JP2003244128A (ja) * | 2002-02-21 | 2003-08-29 | Hitachi Ltd | 暗号復号通信用半導体装置および記録再生機器 |
US7343389B2 (en) * | 2002-05-02 | 2008-03-11 | Intel Corporation | Apparatus and method for SIMD modular multiplication |
JP2004078053A (ja) | 2002-08-22 | 2004-03-11 | Sony Corp | 暗号化装置 |
US7243292B1 (en) * | 2002-10-17 | 2007-07-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Error correction using finite fields of odd characteristics on binary hardware |
US7197527B2 (en) * | 2002-10-17 | 2007-03-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient arithmetic in finite fields of odd characteristic on binary hardware |
US7028247B2 (en) * | 2002-12-25 | 2006-04-11 | Faraday Technology Corp. | Error correction code circuit with reduced hardware complexity |
US7139787B2 (en) * | 2003-01-30 | 2006-11-21 | Sun Microsystems, Inc. | Multiply execution unit for performing integer and XOR multiplication |
US7693928B2 (en) * | 2003-04-08 | 2010-04-06 | Analog Devices, Inc. | Galois field linear transformer trellis system |
CN100530157C (zh) * | 2003-04-08 | 2009-08-19 | 阿纳洛格装置公司 | 伽罗瓦域线性变换器格栅系统 |
US7139900B2 (en) * | 2003-06-23 | 2006-11-21 | Intel Corporation | Data packet arithmetic logic devices and methods |
US8194855B2 (en) * | 2003-06-30 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for implementing processor instructions for accelerating public-key cryptography |
US7634666B2 (en) * | 2003-08-15 | 2009-12-15 | Cityu Research Limited | Crypto-engine for cryptographic processing of data |
US7421076B2 (en) * | 2003-09-17 | 2008-09-02 | Analog Devices, Inc. | Advanced encryption standard (AES) engine with real time S-box generation |
US7171544B2 (en) * | 2003-12-15 | 2007-01-30 | International Business Machines Corporation | Run-time parallelization of loops in computer programs by access patterns |
KR100574965B1 (ko) * | 2004-01-19 | 2006-05-02 | 삼성전자주식회사 | 유한체 곱셈기 |
DE102004013484B3 (de) * | 2004-03-18 | 2005-08-11 | Infineon Technologies Ag | Rechenwerk |
WO2005114802A2 (en) * | 2004-05-11 | 2005-12-01 | North Dakota State University | Optimal signed-digit recoding for elliptic curve cryptography |
US7512647B2 (en) * | 2004-11-22 | 2009-03-31 | Analog Devices, Inc. | Condensed Galois field computing system |
JP2006195563A (ja) * | 2005-01-11 | 2006-07-27 | Renesas Technology Corp | 演算処理装置 |
CA2592875C (en) * | 2005-01-18 | 2016-09-06 | Certicom Corp. | Accelerated verification of digital signatures and public keys |
DE102005028662B4 (de) * | 2005-03-04 | 2022-06-02 | Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik | Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie |
US7728744B2 (en) * | 2005-10-26 | 2010-06-01 | Analog Devices, Inc. | Variable length decoder system and method |
US8024551B2 (en) * | 2005-10-26 | 2011-09-20 | Analog Devices, Inc. | Pipelined digital signal processor |
US8285972B2 (en) * | 2005-10-26 | 2012-10-09 | Analog Devices, Inc. | Lookup table addressing system and method |
US7634596B2 (en) * | 2006-06-02 | 2009-12-15 | Microchip Technology Incorporated | Dynamic peripheral function remapping to external input-output connections of an integrated circuit device |
US7664915B2 (en) * | 2006-12-19 | 2010-02-16 | Intel Corporation | High performance raid-6 system architecture with pattern matching |
DE102007007699A1 (de) * | 2007-02-09 | 2008-08-14 | IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik | Reduktion von Seiten-Kanal-Informationen durch interagierende Krypto-Blocks |
US8271570B2 (en) * | 2007-06-30 | 2012-09-18 | Intel Corporation | Unified integer/galois field (2m) multiplier architecture for elliptic-curve crytpography |
US7929707B1 (en) * | 2007-09-06 | 2011-04-19 | Elcomsoft Co. Ltd. | Use of graphics processors as parallel math co-processors for password recovery |
US8301990B2 (en) * | 2007-09-27 | 2012-10-30 | Analog Devices, Inc. | Programmable compute unit with internal register and bit FIFO for executing Viterbi code |
CA2701855C (en) * | 2007-11-02 | 2016-10-11 | Certicom Corp. | Signed montgomery arithmetic |
US8359479B2 (en) * | 2008-07-17 | 2013-01-22 | Lsi Corporation | High performance arithmetic logic unit (ALU) for cryptographic applications with built-in countermeasures against side channel attacks |
CN101478785B (zh) * | 2009-01-21 | 2010-08-04 | 华为技术有限公司 | 资源池管理系统及信号处理方法 |
US9747105B2 (en) | 2009-12-17 | 2017-08-29 | Intel Corporation | Method and apparatus for performing a shift and exclusive or operation in a single instruction |
US8626811B2 (en) | 2010-04-30 | 2014-01-07 | Certicom Corp. | Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine |
US9965387B1 (en) * | 2010-07-09 | 2018-05-08 | Cypress Semiconductor Corporation | Memory devices having embedded hardware acceleration and corresponding methods |
WO2012159191A1 (en) | 2011-05-20 | 2012-11-29 | Research In Motion Limited | Verifying passwords on a mobile device |
WO2012159192A1 (en) | 2011-05-26 | 2012-11-29 | Certicom Corp. | Randomness for encryption operations |
EP2718844B1 (de) | 2011-06-06 | 2019-08-07 | Certicom Corp. | Quadrierung von finiten binärfeldelementen |
CN102981801B (zh) * | 2012-11-07 | 2015-10-28 | 迈普通信技术股份有限公司 | 一种本地总线数据位宽的转换方法及装置 |
US9619207B1 (en) * | 2014-10-27 | 2017-04-11 | Altera Corporation | Circuitry and methods for implementing Galois-field reduction |
US11010166B2 (en) | 2016-03-31 | 2021-05-18 | Intel Corporation | Arithmetic logic unit with normal and accelerated performance modes using differing numbers of computational circuits |
CN109710308B (zh) * | 2017-10-25 | 2023-03-31 | 阿里巴巴集团控股有限公司 | 任务的处理方法、装置和系统 |
DE102022214429A1 (de) | 2022-12-29 | 2024-07-04 | Robert Bosch Gesellschaft mit beschränkter Haftung | Die Rechenvorrichtung zum Überprüfen eines Softwareschlüssels |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4216531A (en) * | 1978-11-17 | 1980-08-05 | Control Data Corporation | Finite field multiplier |
JPS60120439A (ja) * | 1983-12-05 | 1985-06-27 | Nec Corp | 演算処理装置 |
DE3587670T2 (de) * | 1984-01-21 | 1994-06-23 | Sony Corp | Verfahren und schaltung zur dekodierung von fehlercode-daten. |
DE3631992A1 (de) † | 1986-03-05 | 1987-11-05 | Holger Sedlak | Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens |
JPS6382513A (ja) | 1986-09-26 | 1988-04-13 | Toshiba Corp | バレルシフタ |
FR2605818B1 (fr) | 1986-10-27 | 1992-09-18 | Thomson Csf | Codeur-decodeur algebrique de codes en blocs reed solomon et bch, applicable aux telecommunications numeriques |
US5268584A (en) | 1988-11-28 | 1993-12-07 | The United States Of America As Represented By The Department Of Energy | Strong liquid-crystalline polymeric compositions |
US5077793A (en) | 1989-09-29 | 1991-12-31 | The Boeing Company | Residue number encryption and decryption system |
US5268854A (en) * | 1990-11-13 | 1993-12-07 | Kabushiki Kaisha Toshiba | Microprocessor with a function for three-dimensional graphic processing |
JP3406914B2 (ja) | 1991-09-05 | 2003-05-19 | キヤノン株式会社 | 演算装置及びこれを備えた暗号化装置、復号装置 |
EP0502712B1 (de) | 1991-03-05 | 2000-05-31 | Canon Kabushiki Kaisha | Rechengerät und Verfahren zum Verschlüsseln/Entschlüsseln von Kommunikationsdaten unter Verwendung desselben |
US5235614A (en) * | 1991-03-13 | 1993-08-10 | Motorola, Inc. | Method and apparatus for accommodating a variable number of communication channels in a spread spectrum communication system |
KR940001147B1 (ko) | 1991-03-20 | 1994-02-14 | 삼성전자 주식회사 | 부분체 GF(2^m/2)을 이용한 GF(2^m)상의 연산방법 및 장치 |
JP2693651B2 (ja) * | 1991-04-30 | 1997-12-24 | 株式会社東芝 | 並列プロセッサー |
WO1994015423A1 (en) | 1992-12-22 | 1994-07-07 | Telstra Corporation Limited | A cryptographic method |
JPH06268530A (ja) | 1993-03-16 | 1994-09-22 | Hitachi Ltd | 誤りパターン演算回路 |
DE69428627T2 (de) * | 1993-06-10 | 2002-08-08 | Koninklijke Philips Electronics N.V., Eindhoven | Dekodierer für Wörter variabler Länge mit hohem Durchfluss und Vorrichtung mit einem solchen Dekodierer |
US5497423A (en) | 1993-06-18 | 1996-03-05 | Matsushita Electric Industrial Co., Ltd. | Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication |
US5555516A (en) | 1993-11-04 | 1996-09-10 | Cirrus Logic, Inc. | Multipurpose error correction calculation circuit |
EP0727066A4 (de) * | 1993-11-04 | 1997-01-15 | Cirrus Logic Inc | Begrenzte feldinversionsschaltung |
JPH07175664A (ja) * | 1993-12-16 | 1995-07-14 | Dainippon Printing Co Ltd | コンパイラ装置 |
US5459681A (en) * | 1993-12-20 | 1995-10-17 | Motorola, Inc. | Special functions arithmetic logic unit method and apparatus |
JP3702475B2 (ja) | 1994-07-25 | 2005-10-05 | ソニー株式会社 | 回路自動生成装置 |
US5577069A (en) * | 1994-08-02 | 1996-11-19 | National Semiconductor Corporation | Signalling method and structure suitable for out-of-band information transfer in communication network |
FR2723455B1 (fr) * | 1994-08-05 | 1996-10-31 | Sgs Thomson Microelectronics | Circuit d'inversion d'elements d'un corps de galois |
GB9506574D0 (en) | 1995-03-30 | 1995-05-17 | Cryptech Systems Inc | Multiple bit multiplier |
US5627855A (en) * | 1995-05-25 | 1997-05-06 | Golden Bridge Technology, Inc. | Programmable two-part matched filter for spread spectrum |
US5778009A (en) * | 1995-06-14 | 1998-07-07 | Quantum Corporation | Dedicated ALU architecture for 10-bit Reed-Solomon error correction module |
US5737424A (en) | 1996-06-04 | 1998-04-07 | Software Security, Inc. | Method and system for secure distribution of protected data using elliptic curve systems |
JP2846860B2 (ja) * | 1996-10-01 | 1999-01-13 | ユニデン株式会社 | スペクトル拡散通信方式を用いた送信機、受信機、通信システム及び通信方法 |
GB9627069D0 (en) * | 1996-12-30 | 1997-02-19 | Certicom Corp | A method and apparatus for finite field multiplication |
GB9707861D0 (en) | 1997-04-18 | 1997-06-04 | Certicom Corp | Arithmetic processor |
US5854759A (en) * | 1997-05-05 | 1998-12-29 | Rsa Data Security, Inc. | Methods and apparatus for efficient finite field basis conversion |
US6199086B1 (en) | 1997-12-24 | 2001-03-06 | Motorola, Inc. | Circuit and method for decompressing compressed elliptic curve points |
US6003057A (en) | 1997-12-24 | 1999-12-14 | Motorola, Inc. | Galois field arithmetic logic unit circuit |
US5982895A (en) | 1997-12-24 | 1999-11-09 | Motorola, Inc. | Finite field inverse circuit for use in an elliptic curve processor |
US6009450A (en) * | 1997-12-24 | 1999-12-28 | Motorola, Inc. | Finite field inverse circuit |
US5999959A (en) * | 1998-02-18 | 1999-12-07 | Quantum Corporation | Galois field multiplier |
US6088800A (en) | 1998-02-27 | 2000-07-11 | Mosaid Technologies, Incorporated | Encryption processor with shared memory interconnect |
-
1997
- 1997-04-18 GB GBGB9707861.2A patent/GB9707861D0/en active Pending
- 1997-12-24 US US08/997,964 patent/US6266717B1/en not_active Expired - Lifetime
- 1997-12-24 US US08/997,960 patent/US6230179B1/en not_active Expired - Lifetime
-
1998
- 1998-04-20 EP EP98920431A patent/EP0976027B1/de not_active Expired - Lifetime
- 1998-04-20 CA CA2286647A patent/CA2286647C/en not_active Expired - Lifetime
- 1998-04-20 EP EP02027872.7A patent/EP1293891B2/de not_active Expired - Lifetime
- 1998-04-20 DE DE69811877T patent/DE69811877T2/de not_active Expired - Lifetime
- 1998-04-20 DE DE69841492T patent/DE69841492D1/de not_active Expired - Lifetime
- 1998-04-20 JP JP54461898A patent/JP2001520775A/ja not_active Withdrawn
- 1998-04-20 AU AU73291/98A patent/AU7329198A/en not_active Abandoned
- 1998-04-20 WO PCT/CA1998/000467 patent/WO1998048345A1/en active IP Right Grant
-
1999
- 1999-10-14 US US09/418,217 patent/US6349318B1/en not_active Expired - Lifetime
-
2001
- 2001-12-21 US US10/023,934 patent/US6735611B2/en not_active Expired - Lifetime
-
2004
- 2004-05-04 US US10/837,749 patent/US7424504B2/en not_active Expired - Fee Related
-
2007
- 2007-09-19 JP JP2007243107A patent/JP4980834B2/ja not_active Expired - Lifetime
-
2011
- 2011-03-07 JP JP2011049610A patent/JP2011134346A/ja not_active Withdrawn
-
2014
- 2014-07-07 JP JP2014139376A patent/JP5866128B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424504B2 (en) | 1997-04-18 | 2008-09-09 | Certicom Corp. | Arithmetic processor for accomodating different field sizes |
Also Published As
Publication number | Publication date |
---|---|
GB9707861D0 (en) | 1997-06-04 |
CA2286647C (en) | 2015-01-13 |
CA2286647A1 (en) | 1998-10-29 |
US6735611B2 (en) | 2004-05-11 |
AU7329198A (en) | 1998-11-13 |
JP4980834B2 (ja) | 2012-07-18 |
US20020136402A1 (en) | 2002-09-26 |
JP5866128B2 (ja) | 2016-02-17 |
WO1998048345A1 (en) | 1998-10-29 |
EP1293891B8 (de) | 2010-04-14 |
EP1293891B1 (de) | 2010-02-03 |
EP0976027A1 (de) | 2000-02-02 |
US6349318B1 (en) | 2002-02-19 |
EP1293891A3 (de) | 2004-09-08 |
JP2008059595A (ja) | 2008-03-13 |
JP2001520775A (ja) | 2001-10-30 |
US6266717B1 (en) | 2001-07-24 |
EP0976027B1 (de) | 2003-03-05 |
DE69811877D1 (de) | 2003-04-10 |
US6230179B1 (en) | 2001-05-08 |
JP2011134346A (ja) | 2011-07-07 |
US20050044124A1 (en) | 2005-02-24 |
DE69841492D1 (de) | 2010-03-25 |
EP1293891A2 (de) | 2003-03-19 |
EP1293891B2 (de) | 2017-04-12 |
US7424504B2 (en) | 2008-09-09 |
JP2014219994A (ja) | 2014-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69811877T2 (de) | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE60318494T2 (de) | Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen | |
DE68927966T2 (de) | Prozessor für Gleitkommazahlen und ganze Zahlen mit Dividier- und Quadratwurzelfunktionen | |
DE2724125C2 (de) | ||
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE69330848T2 (de) | Einrichtung und Verfahren zur digitalen Unterschrift | |
DE69419697T2 (de) | Arithmetisch-logische Einheit mit mehreren unabhängigen Abschnitten und ein Register zur Speicherung der Statusbits | |
DE69430510T2 (de) | Arithmetik-Logikschaltung mit drei Eingängen | |
DE69328070T2 (de) | Maske zum Auswählen von Kompenenten in einem Verbundoperand | |
DE3306084C2 (de) | ||
DE69428499T2 (de) | Bedingtes Speicherladen von einem Registerpaar | |
DE69435047T2 (de) | Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung | |
DE69519449T2 (de) | Raumzeigersdatenpfad | |
DE69429342T2 (de) | Vereinheitlicher gleitkommadatenpfad und ganzzahldatenpfad für einen risc-prozessor | |
DE69834942T2 (de) | Vorrichtung zum Multiplizieren | |
DE60215835T2 (de) | Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit | |
DE69129723T2 (de) | Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE102005010764A1 (de) | Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit | |
DE68924386T2 (de) | Verfahren und Gerät zur Radix-2**n-Division mit überlappender Quotientenbitauswahl und gleichzeitiger Rundung und Korrektur des Quotienten. | |
DE1549477B1 (de) | Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden | |
CH644461A5 (de) | Digitale multipliziereinrichtung. | |
DE102007014808A1 (de) | Multiplizier- und Multiplizier- und Addiereinheit | |
DE69227348T2 (de) | DIVIDIERSCHALTUNG FüR GLEITKOMMAZAHLEN |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: MERH-IP MATIAS ERNY REICHL HOFFMANN, 80336 MUENCHE |