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
Application number
DE69811877T
Other languages
English (en)
Other versions
DE69811877D1 (de
Inventor
Robert Gallant
Aleksandar Jurisic
J. Lambert
V. Vadekar
A. Vanstone
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.)
Certicom Corp
Original Assignee
Certicom 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=10810977&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69811877(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Certicom Corp filed Critical Certicom Corp
Publication of DE69811877D1 publication Critical patent/DE69811877D1/de
Application granted granted Critical
Publication of DE69811877T2 publication Critical patent/DE69811877T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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
    • G06F7/725Finite 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

    Hintergrund der Erfindung
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Detaillierte Beschreibung einer bevorzugten Ausführungsform
  • 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.
  • Multiplikation
  • 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.
  • Addition
  • 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
  • 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
  • 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.
  • Ganzzahl-Arithmetik
  • 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.
DE69811877T 1997-04-18 1998-04-20 ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. Expired - Lifetime DE69811877T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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