DE102005010764A1 - Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit - Google Patents

Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit Download PDF

Info

Publication number
DE102005010764A1
DE102005010764A1 DE200510010764 DE102005010764A DE102005010764A1 DE 102005010764 A1 DE102005010764 A1 DE 102005010764A1 DE 200510010764 DE200510010764 DE 200510010764 DE 102005010764 A DE102005010764 A DE 102005010764A DE 102005010764 A1 DE102005010764 A1 DE 102005010764A1
Authority
DE
Germany
Prior art keywords
bit
modulus
unit according
further characterized
multiplier
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.)
Withdrawn
Application number
DE200510010764
Other languages
English (en)
Inventor
Hee-Kwan Son
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102005010764A1 publication Critical patent/DE102005010764A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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/728Methods 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 using Montgomery reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Die Erfindung bezieht sich auf eine Multipliziereinheit, insbesondere eine solche zur Durchführung einer Multiplizieroperation vom Montgomery-Typ, auf eine Operationseinheit mit einer solchen Multipliziereinheit sowie auf eine zugehörige Akkumuliereinheit.
Erfindungsgemäß umfasst die Multipliziereinheit einen Modulusproduktgenerator (120) zum Auswählen eines Wertes aus mehreren möglichen n-Bit-Moduluswerten -M, 0, M, 2M und einem Vorherzeilenresultat SI als ein Modulusprodukt, einen Partialproduktgenerator (130) zum Auswählen eines Multiplikanden aus möglichen Multiplikandenzahlen -2A, -A, 0, +A und +2A als ein Partialprodukt sowie eine Akkumulatoreinheit (150) zum Stapeln des ausgewählten Modulusprodukts und des ausgewählten Partialprodukts.
Verwendung z. B. in Kryptographiesystemen zur Verschlüsselung von zu übertragenden Daten.

Description

  • Die Erfindung bezieht sich auf eine Multipliziereinheit, insbesondere eine solche zur Durchführung einer Multiplizieroperation vom Montgomery-Typ, auf eine Operationseinheit mit einer solchen Multipliziereinheit sowie auf eine zugehörige Akkumuliereinheit. Derartige Funktionseinheiten werden z. B. allgemein in Kryptographiesystemen zur Datenverschlüsselung eingesetzt.
  • In Informationskommunikationsumgebungen mit Austausch unterschiedlicher Daten über Computernetzwerke und in anderen drahtgebundenen oder drahtlosen Kommunikationsanwendungen, wie Mobilkommunikation, werden Kryptographiesysteme oder kurz Kryptosysteme als zunehmend notwendig zur Sicherstellung einer gewünschten Datensicherung angesehen. So ist es z. B. für elektronische Rechnungsführungssysteme und Identifikationssysteme erforderlich, dass sie mit einer ausreichenden Datensicherheit ausgerüstet sind, wozu Verschlüsselungs- und Entschlüsselungstechnologien benutzt werden. Die hierzu eingesetzten kryptographischen Techniken werden allgemein in solche, die einen geheimen Schlüssel, auch symmetrischer Schlüssel, privater Schlüssel oder gemeinsamer Schlüssel bezeichnet, verwenden, und solche unterteilt, die einen öffentlichen Schlüssel verwenden, auch asymmetrischer Schlüssel bezeichnet.
  • Typische gebräuchliche Kryptosysteme bzw. Kryptographiealgorithmen sind z. B. der sogenannte DES(Data Encryption System)-Algorithmus, das vor allem in der ehemaligen UDSSR benutzte sogenannte GOST (Government Standard)-Kryptosystem und der unter der Bezeichnung IDEA (Internal Data Encryption Algorithm) z. B. in der Schweiz geläufige Verschlüsselungsalgorithmus. Für Kryptosysteme mit geheimem Schlüssel ist es von Vorteil, einen zusätzlichen Kanal für Sicherheitszwecke zur Verfügung zu haben, da sich die Informationsaustauschpartner den gleichen geheimen Schlüssel teilen müssen. Derartige Kryptosysteme vom Typ mit geheimem Schlüssel benötigen daher typischerweise eine Verfügbarkeit und Verwaltung vieler geheimer Schlüssel durch einen jeweiligen Systemnutzer, damit er Informationen mit vielen anderen Systemnutzern kommunizieren kann.
  • Kryptosysteme vom Typ mit öffentlichem Schlüssel benutzen voneinander verschiedene Chiffrier- und Dechiffrierschlüssel, was es schwierig macht, einen zugehörigen Schlüssel durch einen Systemnutzer zu detektieren, selbst wenn dieser einen der beiden Schlüssel kennt. In Kryptosystemen dieses Typs mit öffentlichem Schlüssel wird Information mittels eines geheimen Schlüssels und/oder eines öffentlichen Schlüssels chiffriert bzw. dechiffriert, d. h. Information wird z. B. unter Verwendung eines privaten Schlüssels chiffriert und unter Verwendung eines öffentlichen Schlüssels dechiffriert oder umgekehrt. Dieser Kryptosystemtyp ist hinsichtlich Schlüsselverwaltung sehr bequem, da es keinen Bedarf an einem zusätzlichen Kanal zur gemeinsamen Nutzung von Schlüsseln gibt und dennoch verglichen mit dem Kryptosystemtyp mit geheimem Schlüssel eine im allgemeinen bessere Datensicherheit erreicht werden kann. Dem Kryptosystemtyp mit öffentlichem Schlüssel wird jedoch eine begrenzte Kapazität zur Verarbeitung von Daten mit hoher Geschwindigkeit nachgesagt, da zwei verschiedene Schlüssel erzeugt werden müssen und komplexe mathematische Operationen auszuführen sind, um Information unter Verwendung der beiden verschiedenen Schlüssel wiederzugewinnen.
  • Es ist ein weiterentwickelter Kryptographiesystemtyp bekannt, der einen sogenannten Montgomery-Algorithmus benutzt, der Vorteile bei der Implementierung eines Kryptographiealgorithmus mit öffentlichem Schlüssel sowohl für Systemausführungen in Hardware als auch für Systemausführungen in Software bietet. Ein Kryptosystem mit Montgomery-Algorithmus ist in der Lage, eine modulare Zahlenoperation, die in Hardware schwierig zu implementieren ist, in eine Schiebeoperation einer vereinfachten Multiplikation und Addition zu transformieren. Der Montgomery-Algorithmus verwendet einen Operandentransformationsprozess vor und nach einem einzelnen Multiplikationsschritt. Daher ist ein Kryptosystem auf Montgomery-Basis, wenngleich es in einem einzelnen Multiplikationsfeld langsamer als andere Modularmultiplikationssysteme sein mag, für Anwendungen mit laufenden iterativen Multiplikationsoperationen in der Lage, kryptographische Operationen schneller als andere herkömmliche Kryptographiealgorithmen auf Basis eines öffentlichen Schlüssels auszuführen, da kein Operandentransformationsschritt in jedem Prozesszyklus benötigt wird.
  • Eine Vorgehensweise zur Steigerung der Prozessgeschwindigkeit bei der Multiplikation besteht darin, die Radixzahl zu erhöhen. Mit steigendem Radixwert nimmt die Iterationszahl an Akkumulationsvorgängen in einem gegebenen Multiplikationsprozess um einen entsprechenden Betrag ab. Eine Erhöhung der Radixzahl kann jedoch aufgrund zusätzlicher Prozessschritte zu einem komplexeren Akkumulationszykfus und dadurch zu einer Verlängerung der Prozessdauer führen. Während beispielsweise ein Betriebsalgorithmus mit Radix 2 ziemlich problemlos in Hardware implementiert werden kann, ist die Iterationszahl an Akkumulationszyklen doppelt so groß wie diejenige eines Betriebsalgorithmus mit Radix 4. Umgekehrt benötigt der Radix-4-Betriebsalgorithmus für jeden Iterationszyklus eine längere Prozesszeit und eine komplexere Hardwarearchitektur im Vergleich zu den Hardwareanforderungen für den Radix-2-Betriebsalgorithmus.
  • Der Erfindung liegt als technisches Problem die Bereitstellung einer Multipliziereinheit, einer diese enthaltenden Operationseinheit und einer zugehörigen Akkumuliereinheit zugrunde, mit denen sich die oben erwähnten Schwierigkeiten des Standes der Technik, insbesondere hinsichtlich Durchführung von Montgomery-Multiplikationsoperationen, wenigstens teilweise beheben lassen.
  • Die Erfindung löst dieses Problem durch die Bereitstellung einer Multipliziereinheit mit den Merkmalen des Anspruchs 1, 3 oder 21, einer Operationseinheit mit den Merkmalen des Anspruchs 23 oder 26 und einer Ackumuliereinheit mit den Merkmalen des Anspruchs 49.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Vorteilhafte Ausführungsformen der Erfindung sind in den Zeichnungen dargestellt und werden nachfolgend beschrieben. Hierbei zeigen:
  • 1 eine schematische Darstellung einer Struktur einer Operationsmatrix zur Durchführung einer Vierfachgenauigkeitsoperation,
  • 2 eine Sequenzdarstellung einer Einheitsmultiplikationsoperation mit der Vierfachgenauigkeit von 1,
  • 3 ein schematisches Blockdiagramm eines z. B. zur Ausführung der Operationsmatrix von 1 geeigneten Kryptographiesystems mit Montgomery-Multiplizierer,
  • 4 ein schematisches Blockdiagramm eines Datenpfades eines für das System von 3 verwendbaren Montgomery-Multiplizierers,
  • 5 ein schematisches Blockdiagramm einer Speicherschnittstelle für einen in 3 verwendeten Montgomery-Multiplizierer,
  • 6 eine Wahrheitstabelle mit Signalen, die von einem Multiplexer in der Speicherschnittstelle von 5 in Abhängigkeit von einem Steuersignal ausgewählt werden,
  • 7 eine Wahrheitstabelle mit Signalen, die von einem weiteren Multiplexer in der Speicherschnittstelle von 5 in Abhängigkeit von einem weiteren Steuersignal ausgewählt werden,
  • 8 mit Teilbildern 8A, 8B und 8C schematische Blockdiagramme zur Veranschaulichung einer funktionellen Struktur für den Montgomery-Multiplizierer von 3,
  • 9 ein Schaltbild eines exemplarischen Ausführungsbeispiels eines Registers für den Montgomery-Multiplizierer gemäß 8,
  • 10 ein schematisches Blockdiagramm der Struktur eines Moduluserzeugungsgenerators zur Erzeugung eines Modulusproduktwertes im Montgomery-Multiplizierer von 8,
  • 11 eine Wahrheitstabelle zur Veranschaulichung einer Anordnung von Codes durch einen Montgomery-Rekorders für den Montgomery-Multiplizierer von 8,
  • 12 ein Blockdiagramm eines Registers zur Speicherung eines Multiplizierwertes für den Montgomery-Multiplizierer von 8,
  • 13 ein Blockdiagramm einer exemplarischen Realisierung eines Partialproduktgenerators 130 für den Montgomery-Multiplizierer von 8,
  • 14 eine Wahrheitstabelle zur Veranschaulichung einer Anordnung von Codes eines Booth-Rekorders für den Montgomery-Multiplizierer von 8,
  • 15 ein Blockschaltbild eines exemplarischen Beispiels eines Akkumulators für den Montgomery-Multiplizierer von 8,
  • 16 ein Blockschaltbild des Akkumulators entsprechend 15 mit für einen bestimmten Betriebszustand geltender Anordnung von Signalen, die zugehörigen Komprimierern zugeführt werden,
  • 17 ein Blockdiagramm entsprechend 16 für einen bestimmten anderen Betriebszustand,
  • 18 ein Blockschaltbild einer exemplarischen Realisierung eines 4:2-Komprimierers für den Akkumulator von 15,
  • 19 ein Blockdiagramm der Konfiguration eines Schieberegisters für den Montgomery-Multiplizierer von 8,
  • 20 ein Blockdiagramm der Konfiguration eines weiteren Schieberegisters für den Montgomery-Multiplizierer von 8,
  • 21 ein Blockdiagramm der Konfiguration eines Schieberegisters zur Speicherung einer Summe des Akkumulators von 15,
  • 22 ein Blockdiagramm einer Schaltung zur Erzeugung von Partialprodukt-Iterationsdaten für den Montgomery-Rekorder von 11,
  • 23 ein Blockschaltbild eines Übertragpropagationsaddierer (CPA)-Operationsblocks für den Montgomery-Multiplizierer von 8,
  • 24 ein Blockdiagramm zur Veranschaulichung eines CPA-Betriebsvorgangs in Bezug auf den Akkumulator und den CPA-Operationsblock des Montgomery-Multiplizierers von 8,
  • 25 eine Wahrheitstabelle zur Veranschaulichung einer Anordnung von logischen Beziehungen für gegebene Eingabe-/Ausgabesignale des Booth-Rekorders von 14 und
  • 26 eine Wahrheitstabelle zur Veranschaulichung einer Anordnung von logischen Beziehungen für gegebene Eingabe-/Ausgabesignale des Montgomery-Rekorders von 11.
  • Angesichts der oben erläuterten Schwierigkeiten bei herkömmlichen Kryptosystemen ist es wünschenswert, eine Kryptosystemarchitektur zu entwerfen, die eine erhöhte Prozessgeschwindigkeit für modulare Operationen bietet, ohne die Systemhardware zu vergrößern oder komplexer zu machen. Andererseits ist es mit verbesserten Funktionsmöglichkeiten, wie sie von Computersystemen bereitgestellt werden, eventuell erforderlich, einen kryptographischen Schlüssel größer zu wählen, um die gewünschte Sicherheit eines Kryptosystems zu gewährleisten. Die Länge eines gegebenen kryptographischen Schlüssels kann auf Wunsch in Abhängigkeit von der gegebenen Anwendung variieren. Wünschenswert ist daher ein Kryptosystem, das an verschiedene Anwendungsumgebungen mit unterschiedlichen Längen der gegebenen kryptographischen Schlüssel adaptierbar ist.
  • Wie nachfolgend detaillierter beschrieben, führt die Erfindung in exemplarischen Ausführungsformen einen skalierbaren Montgomery-Modularmultiplizierer ein, der eine Mehrfachgenauigkeit unterstützt. Die Erfindung ermöglicht in exemplarischen Ausführungsformen eine Multiplikationsoperation mit einer Mehrfachgenauigkeit unter Verwendung eines weniger komplexen Montgomery-Multiplizierers. Außerdem kann der exemplarische Multiplizierer basierend auf einem geeigneten Steuersignal wahlweise eine normale Multiplikationsoperation oder die Montgomery-Multiplikation ausführen.
  • In entsprechenden Ausführungsformen ist die Erfindung auf einen Montgomery-Multiplikationsalgorithmus basierend auf einer Radix-4-Operationslogik anwendbar, im folgenden auch verschachtelter Radix-4-Montgomery-Multiplikationsalgorithmus bzw. R4IMM bezeichnet. In nachfolgend beschriebenen, exemplarischen Ausführungsformen der Erfindung ist das vorgeschlagene Logikoperationssystem des Multiplizierers für Computersysteme und Kommunikationsnetzwerke anwendbar, die Kryptographiealgorithmen vom Typ mit öffentlichem Schlüssel benutzen, wobei z. B. eine Implementierung in tragbaren integrierten Schaltkreis (IC)-Karten bzw. Smartcards etc. möglich ist. Nachstehend wird bei der Beschreibung des R4IMM-Algorithmus auf folgende Parameter Bezug genommen:
    M repräsentiert einen Moduluswert und ist eine positive, ungerade ganze Zahl größer als 2;
    M' ist eine ganze Zahl, die der Gleichung (–M·M') mod 4 = 1 genügt;
    A repräsentiert einen Multiplikandenwert und ist eine ganze Zahl, die der Ungleichung 0 ≤ A < M genügt,
    B bezeichnet einen Multiplizierwert und ist eine ganze Zahl, welche der Ungleichung 0 ≤ B < M genügt. Hierbei lässt sich B auch Schreiben als
    Figure 00090001
    , bI∈{0, 1, 2, 3}, mit bI als einem aus zwei Bit bestehenden Einheitsmultiplikanden;
    o ist ein Parameter, der einen Operand repräsentiert und eine gegebene Länge des Multiplikanden, des Multiplizierwertes und des Modulus bezeichnet;
    c ist ein Parameter, der eine Stücklänge, d. h. die Länge eines Stücks bzw. einer Einheit an Bits oder Bytes etc., bezeichnet, wenn eine Einheitsmultiplikationsoperation ausgeführt wird, wobei er eine in der Systemhardware vorhandene Datenpfadbreite repräsentiert;
    w ist ein Parameter, der eine Wortlänge repräsentiert, d. h. eine Datenbusbreite in einem Speicher; und
    d ist ein Parameter, der eine Ziffernlänge einer Radix repräsentiert. Wenn ein Kryptosystem beispielsweise einen Radix-4-Multiplizierer mit einer Datenbusbreite von 32 Bit genutzt, beträgt die Wortlänge w = 32, während in einem Radix-4-Multiplizierer die Ziffernlänge d = 2 ist.
  • Ein für die Erfindung verwendbarer, grundlegender R4IMM-Algorithmus lässt sich wie folgt darstellen:
    S0:=0
    for I:=0 to (n/2 – 1)
    qI:=(((SI + bIA) mod 4)·M') mod 4
    SI+1:=(SI + bIA + qIM)/4
    endfor
    if(SN ≥ M)SN:=SN – M
  • Im obigen R4IMM-Basisalgorithmus bezeichnet der Parameter I einen Ziffernindex bzw. die Anzahl an Iterationsoperationen. Der Quotient qI bezeichnet die Anzahl von zu "00" zu addierendem M, um die zwei niedrigstwertigen Bits (LSB) von SI + bI + qIM zu erhalten. In einem Restzahlensystem (RNS), in welchem eine Zahl, die durch Addieren eines ganzzahligen Vielfachen des Modulus M zu einer bestimmten Zahl gleich dieser ursprünglichen Zahl ist, ist das Modulusprodukt qIM als ein ganzzahliges Vielfaches des Moduluswertes M gleich der ursprünglichen Zahl. Zudem ist, selbst wenn die zwei LSB „00" von SI + bI + qIM durch den Radixwert 4 dividiert werden, d. h. um zwei Bits nach rechts geschoben werden, diese Information nicht verloren, da deren höchstwertige Bits (MSB) behalten werden.
  • Zur Implementierung des R4IMM-Algorithmus auf einem Hardwaresystem werden ein Partialproduktwert PPI und ein Modulusproduktwert MMI gewonnen. Da der Einheitsmultiplikand bI und der Quotient qI jeweils zwei Bits lang sind, können das Partialprodukt PPI und das Modulusprodukt MMI unter Verwendung von vier möglichen Werten erzeugt werden, wie in der nachstehenden Gleichung 1 dargestellt, wobei bI∈{0, 1, 2, 4} und qI∊{0, 1, 2, 3}. bIA = PPI∈{0, A, 2A, 3A} qIA = MMI∈{0, M, 2M, 3M} (1)
  • Wenn das Partialprodukt PPI und das Modulusprodukt MMI gemäß Gleichung 1 festgelegt werden, ist jedoch eine Operation zum Erhalten einer Summe eines um ein Bit verschobenen Wertes von A oder M und des ursprünglichen Wertes, d. h. A oder M, auszuführen, um 3A bzw. 3M zu berechnen. In einem Beispiel kann hierzu ein unabhängiger Addierer benutzt werden, oder die Werte 3A bzw. 3M werden im voraus berechnet und für den späteren Gebrauch abgespeichert. Die Berechnung von 3A und 3M kann aber die herkömmliche Hardwarearchitektur belasten und eine Ursache für verringertes Betriebsleistungsvermögen darstellen, da das System hinsichtlich Zeit- und Platzverbrauch auf die Berechnung der Werte 3A und 3M auszulegen ist. Die Erfindung konfiguriert entsprechende Ausführungsformen dahingehend, diese Hardwarebelastung zu reduzieren und dabei das Berechnungsleistungsvermögen für die Erzeugung des Partialproduktwertes PPI und des Modulusproduktwertes MMI zu steigern. Diese Verringerung der Hardwarebelastung bei gesteigerter Verarbeitungsfähigkeit wird durch Verwendung zweier unterschiedlicher Typen von Aufzeichnungsanordnungen und/oder Aufzeichnungsmethoden möglich.
  • Des weiteren kann ein erfindungsgemäßer Multiplizierer zu einem gegebenen Zeitpunkt eine Multiplikationsoperation mit einer Anzahl c von Bits ausführen und in der Lage sein, eine Multiplikationsoperation mit n-Bit, wobei n ein ganzzahliges Vielfaches von c ist, unter Verwendung von iterativen Operationszyklen auszuführen. Dazu kann ein entsprechender R4IMM-Algorithmus mit Mehrfachgenauigkeit wie folgt konfiguriert werden:
    Figure 00110001
    Figure 00120001
  • In diesem Algorithmus bezeichnet die Funktion do_ini( ) eine Funktion zum Akkumulieren einer Zahlstückeinheit, wie eines Stücks von Bits oder Bytes oder von einem Wort, die an der gleichen Stelle mit einer momentanen Spalte und einem Momentanwert in dem Akkumulator positioniert ist, von dem in der vorherigen Zeile bestimmten Operationsresultat S. Mit anderen Worten modifiziert die Funktion do_ini( ) einen Anfangswert eines Akkumulators des Multiplizierers zu Beginn einer gegebenen Spaltenschleife. Diese Modifikationsprozedur wird deshalb ausgeführt, weil der erfindungsgemäße Montgomery-Multiplizierer darauf ausgelegt ist, auf eine gegebene Operation mit Mehrfachgenauigkeit adaptiert werden zu können.
  • Die Funktion do_acc( ) bezeichnet eine Funktion zum Akkumulieren zweier Vektoren des Partialproduktes PP und des Modulusproduktes MM, die in jedem Zyklus erzeugt werden, im Akkumulator. Da der erfindungsgemäß verwendete Akkumulator in der Architektur eines oder mehrerer Übertragbehaltaddierer (CSA) implementiert sein kann, kann ein resultierender Wert der Addition in geteilter Weise in jedem von ei nem Übertragvektor, einem Summenvektor und einem Niedrigwert-Vektor repräsentiert werden, von denen jeder in einem dem entsprechenden Vektor zugeordneten Register gespeichert wird.
  • Die Funktion do_cpa( ) bezeichnet eine Additionsoperation mit einem Übertragswert, einem Summenwert und einem niedrigeren Wert. Dies kann unter Verwendung eines Übertragpropagationsaddierers implementiert werden, in welchem die Werte als ein akkumuliertes Resultat in einem letzten Schritt jeder Zeile erhalten werden.
  • 1 veranschaulicht eine Struktur einer Operationsmatrix zum Ausführen einer Vierfachgenauigkeitsoperation. Wie aus 1 ersichtlich, werden für eine Vierfachgenauigkeitsoperation der Multiplikand A, der Multiplizierwert B und der Modulus M jeweils in vier Stücke bzw. Teile unterteilt, repräsentiert durch A = {A3A2A1A0}, B = {B3B2B1B0} und M = {M3M2M1M0}. In einem Multiplizierer mit einer Länge von c-Bit eines solchen Stücks kann eine Multiplikationsoperation sequentiell in einer Einheit dieses Teils ausgeführt werden, wie A0·B0,A1·B0,A2·B0,A3·B0 etc., wobei das Endresultat der Multiplikationsoperation gespeichert wird.
  • 2 veranschaulicht eine Sequenz einer Einheitsmultiplikationsoperation mit der Vierfachgenauigkeit gemäß 1. In exemplarischen Ausführungsformen der Erfindung repräsentieren die Parameter A3, A2, A1, A0, B3, B2, B1 und B0 Stücklängen, und die Operationssätze A0·B0,A1·B0,A2·B0,A3·B0 etc. können als Einheitsmultiplikationsoperationen oder Einheitsmultiplikationsboxen bezeichnet werden. Jede Operation für den Multiplikand A und den Multiplizierwert B kann durch einen Akkumulator einer Übertragbehaltaddier(CSA)-Schleife ausgeführt werden und eine Übertragpropagationsaddier(CPA)-Schleife zum Summieren dreier resultierender Werte, d. h. eines Übertrags, einer Summe und eines niedrigeren Werts, im Akkumulator umfassen, um einen Einzelwert nach Abschluss der letzten Einheitsmultiplikationsoperation jeder Zeile zu erzeugen. 2 veranschaulicht somit die Sequenz von Einheitsmultiplikationsoperationen mit der Vierfachgenauigkeit gemäß 1.
  • 3 zeigt ein Kryptographiesystem 1 gemäß der Erfindung mit einem Montgomery-Multiplizierer 10, einer Host-Einheit 20, einem Speicherzugriffsarbitrierer 30 und einem Speicher 40. Die Host-Einheit 20 umfasst eine periphere Schnittstelle 21 für Kommunikationen mit peripheren Einheiten, wie dem Montgomery-Multiplizierer 10 und Eingabe/Ausgabeeinheiten, sowie eine Speicherschnittstelle 22 zur Kommunikation mit dem Speicher 40.
  • Der Multiplizierer 10 umfasst eine Host-Schnittstelle 11 zur Kommunikation mit der Host-Einheit 20 sowie eine Speicherschnittstelle zur Kommunikation mit dem Speicher 40. Die Kommunikationsbedingungen zwischen dem Multiplizierer 10, der Host-Einheit 20 und dem Speicher 40 können beispielsweise durch den Speicherzugriffsarbitrierer 30 reguliert werden. Die Host-Schnittstelle 11 beinhaltet ein Spezialfunktionsregister (SFR) 13. Der Multiplizierer 10 kann zudem eine nicht gezeigte Steuereinheit umfassen, um bestimmte Steuersignale zu erzeugen, die im folgenden detaillierter als FORCE_RI[2:0], SEL_RDO[1:0], FORCE_PP[1:0], FORCE_MM[1:0], USE_X_REG, SEL_CPA_IN[2:0], IS_1ST_CPA_WORD, IS_ODD_PREC, UDP_SIGN_S, UPD_MS1B_S, SFT_BI_PISO, SFT_QI_PISO, STO_BR_ROW und SHIFT_ACC bezeichnet und erläutert sind.
  • Die Host-Einheit 20 speichert die Operanden, d. h. den Multiplikand A, den Multiplizierwert B und den Modulus M, im Speicher 40 und instruiert die Ausführung eines Aufzeichnungsbetriebsmodus durch Senden eines Betriebsstartbefehls zum SFR 13. Der Multiplizierer 10 informiert die Host-Einheit 20 von einem Operationsende durch Aufzeichnen der Operationsendinformation im SFR 13 nach Speicherung des resultierenden Werts S für eine gegebene Operation in einem Feld des Speichers 40.
  • Das Feld, in welchem der resultierende Wert S gespeichert wird, kann durch die Host-Einheit 20 festgelegt werden. Das SFR 13 kann zudem ein Vorzeichenbit speichern, wie weiter unten detaillierter erläutert.
  • Der Speicher 40 kann in Segmente mit einer Größe gemäß einer gegebenen Speicherkapazität unterteilt sein. Die Eingabewerte und resultierenden Werte zum Speichern im jeweiligen Segment werden durch die Host-Einheit 20 festgelegt, wobei jedem Segment ein Index zugeordnet ist. Wenn daher ein nach einem Zyklus erhaltenes Resultat einer Multiplikationsoperation für die nächste Multiplikationsoperation als ein Eingangswert verwendet wird, z. B. im Fall einer Exponentialoperation, wie sie in einem kryptographischen System mit öffentlichem Schlüssel, wie einem RSA-System, verwendet wird, kann die nächste Multiplikationsoperation schon nach Wechseln nur eines Index des Segments für Eingabe- und Ausgabewerte ausgeführt werden, d. h. ohne Migration von Daten. Dies kann zur Steigerung des Systemleistungsvermögens vorteilhaft sein.
  • 4 zeigt einen erfindungsgemäßen Montgomery-Multiplizierer, speziell bezüglich Anordnung von Daten, die dem Montgomery-Multiplizierer 10 von 3 zugeführt bzw. von diesem abgegeben werden.
  • 5 veranschaulicht detaillierter eine vorteilhafte Realisierung für die Speicherschnittstelle 12 des Montgomery-Multiplizierers gemäß 3. Demgemäß umfasst die Speicherschnittstelle 12 in diesem Fall Multiplexer 12_1 und 12_3 sowie Register 12_2 und 12_4.
  • 6 zeigt eine Wahrheitstabelle zur Veranschaulichung von Signalen, die durch den Multiplexer 12_1 in der Speicherschnittstelle 12 in Abhängigkeit von einem Steuersignal FORCE_RI[2:0] ausgewählt werden, während 7 eine Wahrheitstabelle zur Veranschaulichung von durch den Multiplexer 12_3 in der Speicherschnittstelle 12 in Abhängigkeit von einem Steuersignal SEL_RDO[1:0] ausgewählten Signalen zeigt. Der Multiplexer 12_1 gibt eines der Eingangssignale in Reaktion auf das Steuersignal FORCE_RI[2:0] ab. Wie aus 6 ersichtlich, wird ein vom Multiplexer 12_1 und vom Register 12_2 abgegebenes Datensignal REG_DI[31:0] einem speziell in 5 gezeigten Datenpfad 100 für den Montgomery-Multiplizierer 10 zugeführt, wie weiter unten detaillierter erläutert. Der Multiplexer 12_3 gibt eines seiner Eingangssignale in Reaktion auf einen Zustand des Steuersignals SEL_RDO[1:0] ab. Wie aus 4 ersichtlich, wird ein vom Multiplexer 12_3 und dem Register 12_4 abgegebenes Datensignal RAM_DO[31:0] im Speicher 40 abgelegt.
  • 8 veranschaulicht mit ihren Teilbildern 8A, 8B und 8C eine funktionale Struktur eines erfindungsgemäßen Montgomery-Multiplizierers, der Modulusregister 102 und 103 zur Speicherung des Modulus M, Multiplikandenregister 104 und 105 zur Speicherung des Multiplikanden A, ein Multiplizierwertregister 106 zur Speicherung des Multiplizierwerts B, ein Vorherwertregister 101 zur Speicherung eines resultierenden Wertes SI einer jeweils vorhergehenden Zeile, einen Montgomery-Recorder 110, einen Booth-Rekorder 140, einen Mehrfachmodulusgenerator 120 zur Erzeugung eines Modulusprodukts MM, einen Partialproduktgenerator 130 zur Erzeugung eines Partialprodukts PP, einen Akkumulator 150 zur Durchführung einer Montgomery-Multiplikationsoperation und einen CPA-Block 160 zum Summieren dreier resultierender Werte, d. h. eines Übertrags, einer Summe und eines niedrigeren Wertes, im Akkumulator 150 umfasst.
  • Die Länge jedes in den Registern 101 bis 105 gespeicherten Operanden beträgt (c + w/2) + 1. Jedes Register kann aus einem PIPO(Parallel-in-parallel-out)-Register bestehen und durch Teilung eines 1-Bit-Flipflops und einer Anzahl von 2·(c/w) + 1 Subregistern gesteuert werden. Die Länge der Subregister beträgt z. B. w/2.
  • 9 zeigt eine detaillierte Schaltkreiskonfiguration einer exemplarischen Realisierung des Registers 105 zur Speicherung des Multiplikandenwertes A gemäß der Erfindung. Die Register 101 bis 104 können ebenfalls diesen Aufbau haben. Wie aus 9 ersichtlich, ist in diesem Beispiel das Register 105 für den Fall c = 256 und w = 32 konfiguriert und umfasst siebzehn Subregister 200 bis 216 sowie ein Vorzeichenregister 220. Alternativ kann das jeweilige Register 101 bis 105 auch weniger oder mehr als siebzehn Subregister haben, je nach Anwendungsfall.
  • Für den gezeigten Fall c = 256 und w = 32 kann jedes der Subregister 200 bis 216 z. B. sechzehn Bit groß sein, was ein halbes Wort repräsentiert, während die Größe des Vorzeichenregisters 220 ein Bit beträgt. Die geradzahligen Subregister 200, 202, ..., 216 empfangen sechzehn niedrigere Bits REG_DI[15:0] an Daten, d. h. eines 32-Bit-Wortes, die von der Speicherschnittstelle 12 zugeführt werden, während die ungeradzahligen Subregister 201, 203, ..., 215 die sechzehn höheren Bits REG_DI[31:16] der von der Speicherschnittstelle 12 zugeführten 32-Bit-Daten empfangen.
  • In ihrer ursprünglichen Form ist die Bitlänge n des Operanden ein ganzzahliges Vielfaches der Stückbitlänge c, wobei zum Operanden ein Vorzeichenbit hinzugeführt wird, da diesbezüglich die Booth- und Montgomery-Aufnahmefunktionen bereitgestellt werden. Dies ergibt eine Bitlänge c' für jeden im Datenpfad 100 des Montgomery-Multiplizierers benutzten Operanden von c' = c + k, wobei der minimale Wert von k gleich 1 ist. Der Parameter c' kann als eine erweiterte Stückbitlänge bezeichnet werden und stellt einen Parameter dar, der die Bitlänge eines erweiterten Zahlstücks repräsentiert. In der Praxis sind verfügbare Werte von k bezüglich den Datenübertragungsraten insbesondere w, w/2 und w/4, wenn Eingabedaten aus dem Speicher 40 ausgelesen werden und die Datenbusbreite w = 32 zu Datenübertragungsraten eines Worts, eines halben Worts und eines viertel Worts mit 32 Bit, 16 Bit bzw. 8 Bit führt.
  • Ein kleinerer Wert von k verringert die Anzahl an Iterationszyklen für die Einheitsmultiplikationsoperation, d. h. die CSA-Operation in 1, und reduziert damit die Größe der zugehörigen Hardware zur Implementierung der Iterationszyklen. Dies kann zur Realisierung einer höheren Rechnerleistung mit reduzierter Schaltungsgröße und/oder eines verringerten Leistungsverbrauchs von Vorteil sein.
  • Dementsprechend kann eine vereinfachte Hardwarearchitektur realisiert werden, wenn k = w/2 oder k = w/4 statt k = w bzw. k = w/2 gewählt wird. In einem erfindungsgemäßen Ausführungsbeispiel wird k = w/2 gesetzt, was mit einer Stückbitlänge c = 256, einer Wortlänge w = 32 und damit k = 32/2 = 16 zu einer erweiterten Stückbitlänge c' von c' = 272 Bit führt, da c' = c + k. Das Vorzeichenbit SIGN_S, das im SFR 13 abgelegt ist, kann über die Speicherschnittstelle 12 im Vorzeichenregister 220 gespeichert werden.
  • Jedes Subregister führt einen selektiven Datenladevorgang in Reaktion auf ein torgesteuertes Taktsignal oder ein Ladefreigabesteuersignal aus. Dementsprechend besteht ein vom Register 105 ausgegebener Multiplikant AX_PIPO_REG[272:0] aus 273 Bit, d. h. den 272 Bit der erweiterten Stückbitlänge und dem einen Vorzeichenbit SIGN_S. Die Register 101 bis 104 entsprechen diesbezüglich in ihrer Struktur dem Register 105. Wie aus 8B ersichtlich, werden den Registern 101 bis 105 die Daten REG_DI[31:0] zugeführt. Wie in 5 gezeigt, werden die Daten REG_DI[31:0] z. B. durch Kombinieren von Wortlängendaten RAM_DI[32:0], die der Speicherschnittstelle 12 vom Speicher 40 zugeführt werden, mit den Vorzeichenbits SIGN_A, SIGN_B und SIGN_S und dem zweithöchsten Bit MS1B_S des zuvor resultierenden Wertes erzeugt. Wie aus der Wahrheitstabelle von 6 ersichtlich, legt ein Steuersignal FORCE_RI[2:0] fest, wann und wie diese Kombination zur Gewinnung der Daten REG_DI[31:0] erzeugt wird.
  • Das Vorherwertregister 101 wird dazu benutzt, einen resultierenden Wert der vorherigen Zeile, d. h. SI, einer Berechnung für eine laufende Zeile zuzuführen. In 8B ist dieser Wert mit SI_PIPO_REG[272:0] bezeichnet.
  • Die beiden Modulusregister 102 und 103 werden zur Zuführung von Moduluswerten M, in 8B mit MY_PIPO_REG[272:0] und MX_PIPO_REG[272:0] bezeichnet, zu dem Mehrfachmodulusregister 120 benutzt, und die zwei Multiplikandenregister 104 und 105 werden zur Zuführung von Multiplikandenwerten A, die in 8B mit AY_PIPO_REG[272:0] und AX_PIPO_REG[272:0] bezeichnet sind, zum Partialproduktgenerator 130 verwendet. Der Grund für die Verwendung von jeweils zwei Registern zur Speicherung sowohl des oder der Multiplikandenwerte A als auch des oder der Moduluswerte M besteht darin, die Prozessgeschwindigkeiten für die Verarbeitung von A und M zu steigern. Beispielsweise wird von den beiden Registern 104 und 105 für den Multiplikand A das eine Register zum Speichern eines Multiplikandenwertes A eingesetzt, der für eine momentane Einheitsmultiplikationsoperation im Datenpfad 100 des Montgomery-Multiplizierers verwendet wird, während das andere Register einen Multiplikandenwert A speichert, der für die nächste Einheitsmultiplikationsoperation zu verwenden ist. In gleicher Weise speichert von den beiden Registern 102 und 103 für den Modulus M das eine Register einen Moduluswert M, der für eine laufende Einheitsmultiplikationsoperation im Montgomery-Multiplizierer 10 verwendet wird, während das andere Register einen Moduluswert M speichert, der für die nächste Einheitsmultiplikationsoperation zu verwenden ist. Dadurch ist es möglich, die nächste Einheitsmultiplikationsoperation ohne Verzögerung zum Lesen der Multiplikanden- und Moduluswerte aus dem Speicher nach Abschluss einer laufenden Einheitsmultiplikationsoperation zu starten.
  • Der Multiplizierer 10 gewinnt durch iterative Prozesszyklen eine Montgomery-Multiplikationslösung. Der Montgomery-Rekorder 110 und der Modulusproduktgenerator 120 werden dazu verwendet, das Modulusprodukt MMI auszuwählen. Bei der Auswahl des Modulusprodukts MMI empfängt der Montgomery-Rekorder iterative Daten vom Akkumulator 150. Die iterativen Daten SPPI[1:0] werden im gezeigten Ausführungsbeispiel basierend auf einer Summe ACC_S_REGI[1:0], einem Übertrag ACC_C_REGI[1:0], einem niedrigeren Wert ACC_L_REGI[2:0] und einem Partialprodukt PPI[1:0], die alle im Akkumulator 150 gespeichert sind, sowie auf einem Schiebesteuersignal SHIFT_ACC erzeugt, das als Rückkopplungseingabe des Akkumulators 150 fungiert. Die iterativen Daten SPPI[1:0] können erfindungsgemäß eine variable Bitlänge bzw. Größe haben, beispielsweise mehr als zwei Bit.
  • 10 veranschaulicht ein exemplarisches Ausführungsbeispiel der Erfindung bezüglich der Struktur des Modulusproduktgenerators 120 zur Erzeugung des Modulusprodukts MMI. Der Modulusproduktgenerator 120 umfasst in diesem Beispiel Multiplexer 301, 302, 303 und ein UND-Gatter 304. Der Multiplexer 301 gibt einen von den beiden Moduluswerten MY_PIPO_REG[272:0] und MX_PIPO_REG[272:0], die von den Modulusregistern 102 und 103 zugeführt werden, in Reaktion auf ein Registerauswahlsignal USE_X_REG ab.
  • Der Multiplexer 303 gibt einen vorherigen Wert SI_PIPO_REG[272:0], M, 2M oder –M in Reaktion auf ein Modulusproduktauswahlsignal SEL_MM[1:0] ab. Der Wert 2M kann durch Schieben des Werts M, der vom Multiplexer 302 abgegeben wird, um ein Bit nach links und Einfügen einer „0" an der LSB-Position erhalten werden. Der Wert –M kann durch Bitinversion des vom Multiplexer 302 abgegebenen Werts M erhalten werden.
  • Das UND-Gatter 304 verknüpft ein Modulusproduktfreigabesignal EN_MM vom Montgomery-Rekorder 110 gemäß 8A mit einer Ausgabe des Multiplexer 303, um das Modulusprodukt MMI abzugeben. Das Modulusprodukt MMI kann z. B. aus c + w/2 + 2 Bit bestehen, beispielsweise aus 274 Bit, wenn c = 256 und w = 16 ist. Das Modulusproduktfreigabesignal EN_MM kann zum Festlegen des Modulusprodukts MMI auf „0" benutzt werden. Das Modulusprodukt MMI wird, wie in 8B gezeigt, dem Akkumulator 150 zugeführt.
  • 11 veranschaulicht in einer Wahrheitstabelle eine Anordnung von Codes im Montgomery-Rekorder 110 gemäß der Erfindung. 11 zeigt den Fall von drei Eingabebits M[1] und SPPI[1:0] für den Montgomery-Rekorder 110, alternativ kann aber jede beliebige Anzahl von gewünschten Eingabe- und Ausgabebits vorgesehen sein.
  • Wie oben erwähnt, umfasst das Modulusprodukt MMI in einem typischen Radix-4-System die Werte 0, M, 2M und 3M. Um 3M zu erhalten, wird typischerweise ein zusätzlicher Addierer oder ein Speicherelement zum Addieren von 2M zu M benötigt. Der Additionsvorgang des Addierers und/oder Speicherelements trägt zur Hardwaregröße und/oder Berechnungsverzögerung bei, was die Berechnungsgeschwindigkeit und den Leistungsbedarf beeinflusst. Das Codierschema von 11 benutzt Bitinversion und Bitverschiebung, um das Modulusprodukt MMI ohne zusätzlichen Addierer oder zusätzliches Speicherelement zu gewinnen. Der Montgomery-Rekorder 110 empfängt hierzu das zweite LSB M[1] des Modulus M und die zwei LSBs von SPPI, d. h. SPPI[1:0], und gibt das Modulusproduktauswahlsignal SEL_MM[1:0], das Modulusproduktfreigabesignal EN_MM und ein Vorzeichenumkehrsignal NEG_MM ab, das eine Vorzeichenumkehr anzeigt, d. h. ob eine Bitinversion benutzt wird, um –M zu erhalten.
  • In einer weiteren Ausführungsform der Erfindung kann eine ähnliche Vorgehensweise zur Reduzierung der Hardwaregröße, zur Steigerung der Berechnungsgeschwindigkeit und/oder zur Verringerung des Leistungsverbrauchs für den Partialproduktgenerator 130 und den Booth- bzw. Zellenrekorder 140 verwendet werden, wie sie in den 13 bzw. 14 veranschaulicht ist. Allgemein empfängt der Multiplizierer 100 das Modulusprodukt MMI und das Partialprodukt PPI über den Akkumulator 150 und führt dann eine Modulo-Multiplikation in iterativen Operationszyklen durch. Die 13 und 14 werden weiter unten detaillierter erläutert.
  • 12 veranschaulicht die erfindungsgemäße Speicherung des Multiplizierwerts B im Register 106, wobei der Multiplizierwert B aus dem Speicher 40 empfangen wird. Das Multiplizierwertregister 106 schiebt ein höheres Bit BR der LSBs B1 und B0 und des niedrigeren LSBs des vorherigen Zyklus des Multiplizierwerts B in jedem Zyklus um eine Stelle nach rechts, mit Ausnahme des Zyklus zur Korrektur eines Anfangswertes des Akkumulators 150. Wie in 12 gezeigt, umfasst das Multiplizierwertregister 106 hierzu ein Schieberegister 401, Multiplexer 402 und 405 sowie Flipflops 403 und 404.
  • Das Schieberegister 401 kann mit einer der Wortlänge w = 32 entsprechenden Bitlänge konfiguriert sein und in Reaktion auf ein Schiebeauswahlsignal SFT_BI_PISO betrieben werden. Es empfängt immer dann ein neues Multiplizierwertdatenwort über REG_DI[31:0] der Speicherschnittstelle 12, wenn das Schiebeauswahlsignal SFT_BI_PISO auf logisch „0" ist, während es das empfangene Wort um zwei Bit nach rechts schiebt, wenn das Schiebeauswahlsignal SFT_BI_PISO auf logisch „1" ist. Die beiden LSBs B1 und B0 des Schieberegisters 401 werden zum Zellenrecorder 140 abgegeben.
  • Ein Signal STO_BR_ROW dient dazu, das zweite LSB B1 zu speichern, das im letzten Zyklus der Einheitsmultiplikationsoperation als niedrig benutzt worden ist, d. h. wenn das Schiebeauswahlsignal SFT_BI_PISO auf logisch „0" ist. Der Multiplexer 402 wählt selektiv einen im Flipflop 403 gespeicherten Wert oder das zweite LSB B1 des Schieberegisters 401 aus. Das Flipflop 403 speichert eine Ausgabe des Multiplexers 402, und das Flipflop 404 speichert das zweite LSB B1 des Schieberegisters 401. Ein Signal USE_BR_ROW dient dazu, das Auswählen des Wertes BR_ROW des Flipflops 403 als das Bit BR im zweiten Zyklus zu steuern, d. h. dem nächsten Zyklus nach dem Zyklus zur Korrektur eines Anfangswertes des Akkumulators 150. Das Bit BR wird vom Zellenrecorder 140 zugeführt.
  • Der Zellenrekorder 140 und der Partialproduktselektor 130 dienen dazu, die Werte des Partialprodukts PPI, 0, A, A, 2A und 2A auszuwählen, um sie dem Akkumulator 150 zuzuführen. Wie aus den 8A bis 8C ersichtlich, empfängt der Zeilenrekorder 140 die Bits B1, B0 und BR des Multiplizierwerts B vom Register 106 und führt dem Partialproduktgenerator 130 das Partialproduktauswahlsignal SEL_PP[1:0], das Partialproduktfreigabesignal EN_PP und das Partialproduktvorzeichenumkehrsignal NEG_PP zu.
  • 13 veranschaulicht eine exemplarische Schaltungsrealisierung des Partialproduktgenerators 130 gemäß der Erfindung. Der Partialproduktgenerator 130 umfasst in diesem Beispiel Multiplexer 501, 502, 503 und ein UND-Gatter 504. Der Multiplexer 501 gibt einen gegebenen Multiplikandenwert A, d. h. A[272:0], unter den von den Registern 104 und 105 zugeführten Multiplikanden AY_PIPO_REG[272:0] und AX_PIPO_REG[272:0] in Reaktion auf das Registerauswahlsignal USE_X_REG ab.
  • Der Multiplexer 503 gibt einen aus 2A, A, 2A und A in Reaktion auf das vom Zellenrekorder 140 zugeführte Modulusproduktauswahlsignal SEL_PP[1:0] ausgewählten Multiplikandenwert ab. Der Wert 2A wird durch Schieben des Werts A, der vom Multiplexer 501 abgegeben wird, um ein Bit nach links und Einfügen einer „1" an dessen niedrigstwertiger Bitposition erhalten. Der Wert 2A wird durch Schieben des Wertes A, der vom Multiplexer 501 abgegeben wird, um ein Bit nach links und Einfügen einer „0" an dessen LSB-Position erhalten.
  • Das UND-Gatter 504 gibt das Partialprodukt PPI durch logisches Verknüpfen des Partialproduktfreigabesignals EN_PP des Zellenrekorders 140 und einer Ausgabe des Multiplexers 503 ab. Das Partialproduktfreigabesignal EN_PP dient dazu, als Partialprodukt PPI eine „0" zu erzeugen. Die Größe des Partialprodukts PPI beträgt z. B. c + w/2 + 2 Bit, d. h. 274 Bit im Fall c = 256 und w = 32. Das Partialprodukt PPI wird dem Ackumulator 150 zugeführt.
  • 14 zeigt in einer Wahrheitstabelle eine Anordnung von Codes im Zellenrekorder 140 gemäß der Erfindung. Während im Beispiel von 14 drei Eingabebits B1, B0 und BR für den Zellenrekorder 140 dargestellt sind, kann in alternativen Ausführungsformen auch jede andere Anzahl von gewünschten Eingaben und Ausgaben benutzt werden.
  • Wie wiederum aus den 8A bis 8C ersichtlich, wird das vom Modulusproduktgenerator 120 erzeugte Modulusprodukt MMI[273:0] und das vom Partialproduktgenerator 130 erzeugte Partialprodukt PPI[273:0] dem Akkumulator 150 zugeführt.
  • 15 veranschaulicht eine exemplarische Realisierung gemäß der Erfindung für den Akkumulator 150 mit seriell verbundenen 4:2-Komprimierern 610 bis 617 entsprechend der Anzahl von c' = c + w/2 + 5 Bit. Wie vorstehend in Verbindung mit den 10 und 13 erwähnt, beträgt die Bitlänge des Modulusprodukts MMI und des Partialprodukts PPI jeweils c + w/2 + 2 Bit.
  • Der Akkumulator 150 speichert in geteilter Weise ein Operationsresultat in einem Summenregister 620, einem Übertragregister 603 bzw. einem Niederwertregister 650. Das Summenregister 620 besteht zum Beispiel aus Flipflops entsprechend einer Anzahl von c + w/2 + 3 Bit. Das Übertragregister 630 besteht z. B. aus Flipflops entsprechend einer Anzahl von c + w/2 + 4 Bit. Das Niederwertregister 650 beseht z. B. aus drei Flipflops. Der in 8B gezeigte CPA-Block 160 empfängt niedrigere c + 1 Bits ACC_S_REG[c:0] und ACC_C_REG[c:0] von Ausgaben des Summenregisters 620 und des Übertragregisters 630 sowie das höchstwertige Bit ACC_L_REG[2] von Ausgabebits des Niederwertregisters 650. Außerdem werden, wie in 8C gezeigt, die beiden LSBs ACC_L_REG[2:0] des Niederwertregisters 650 einem SPP-Generator 170 zugeführt.
  • In diesem Ausführungsbeispiel umfassen Eingaben in den Akkumulator 150 das Modulusprodukt MMI, das Partialprodukt PPI, das Modulusproduktinversionssignal NEG_MM, das Partialproduktinversionssignal NEG_PP und das Schiebesteuersignal SHIFT_ACC für eine Rückkopplungseingabe des Akkumulators 150. Der exemplarische Akkumulator 150 von 15 kann in CSA-Architektur ausgelegt sein, was eine Leistungsbeeinträchtigung aufgrund einer Übertragpropagationsverzögerung vermeidet. Jeder Komprimierer 610 bis 617 kann z. B. aus vier Eingängen und zwei Ausgängen bestehen, d. h. ein 4:2-Komprimierer sein, wie erwähnt.
  • 18 veranschaulicht eine exemplarische schaltungstechnische Realisierung für die 4:2-Komprimierer anhand des Komprimierers 612 mit einer Mehrzahl von Eingängen. Eingabewerte des Komprimierers 612 tragen einen Schleifenindex I, Ausgabewerte einen Schleifenindex I + 1.
  • Für dieses Beispiel beinhaltet der Komprimierer 612 zwei Volladdierer 701 und 702. Der erste Volladdierer 701 empfängt CI, PI und PPI und gibt einen ersten Volladdiererübertrag C0 und eine erste Volladdierersumme S0 ab. Der erste Volladdiererübertrag C0 wird als ein Ausgabeübertrag CN abgegeben, der eine Eingabe CP des Komprimierers der nächsthöheren Bitposition k + 1 bildet, der den dem Komprimierer 612 benachbarten Komprimierer zwischen den Komprimierern 612 und 613 in 15 darstellt. Der zweite Volladdierer 702 empfängt die erste Volladdierersumme S0, das Modulusprodukt MMI und einen Übertrag CP des um eine Bitposition niedrigeren Komprimierers, d. h. des Komprimierers 611, und gibt einen zweiten Volladdiererübertrag C0 und eine zweite Volladdierersumme S0 ab. Der zweite Volladdiererübertrag wird als nächstes Übertragbit CI+1 abgegeben, welches als Übertrag CI benutzt wird, der dem um eine Bitposition niedrigeren Komprimierer 611 zugeführt wird. Die zweite Volladdierersumme SO wird als eine Summe SI benutzt, die dem um zwei Bitpositionen niedrigeren Komprimierer zugeführt wird. Der Niedrigstbitpositionskomprimierer, d. h. der Komprimierer 610, empfängt das Partialproduktinversionssignal NEG_PP als eine Eingabe des Übertrags CP.
  • Die nachstehende Gleichung 2 repräsentiert die Beziehung zwischen Eingabe und Ausgabe des 4:2-Komprimierers 612: 2CN + 2CI+1 + SI+1 = CP + CI + SI + PPI + MMI (2)
  • Wieder bezugnehmend auf 15 empfängt der Volladdierer 640 eine vom ersten Komprimierer 610 abgegebene Summe SI[0], das niedrigste Bit MMI[0] des Modulusprodukts und das Modulusproduktinversionssignal NEG_MM. Der Volladdierer 641 empfängt eine Summenbitausgabe vom zweiten Komprimierer 611, eine Übertragbitausgabe vom ersten Komprimierer 610 und eine Übertragbitausgabe vom Volladdierer 640. Die Summe des Volladdierers 640 sowie die Summe und der Über trag des Volladdierers 641 werden im Niederwertregister 650 gespeichert.
  • Der Akkumulator 150 akkumuliert ein zu einer laufenden Einheitsmultiplikationsoperation gehöriges Resultat aus Resultaten für die vorherige Zeile im ersten Zyklus der Einheitsmultiplikationsoperation. Eine solche Prozedur wird als Anfangswertkorrekturzyklus bezeichnet, für den die Multiplexer 600 bis 609 vorgesehen sind.
  • Ein Eingabeanschluss eines Komprimierers ist mit zwei Multiplexern gekoppelt. Beispielsweise sind zwei Multiplexer 600 und 601 mit dem ersten Komprimierer 610 entsprechend den LSBs MMI[0] und PPI[0] des Modulusprodukts bzw. des Partialprodukts gekoppelt. Der Multiplexer 600 empfängt ein Summenbit ACC_S_REG[0] als eine erste Eingabe und einen Niedrigwert ACC_L_REG[0] als eine zweite Eingabe, die ihm von seinem um zwei Bitpositionen höheren Komprimierer zugeführt werden. Der Multiplexer 601 empfängt ein Summenbit ACC_S_REG[0] als eine erste Eingabe und einen Niedrigwert ACC_L_REG[2] als eine zweite Eingabe, die ihm von seinem um eine Bitposition höheren Komprimierer zugeführt werden.
  • Beim zweiten Komprimierer 611 empfängt der Multiplexer 602 ein Summenbit ACC_S_REG[1] als eine erste Eingabe und einen Niedrigwert ACC_L_REG[1] als eine zweite Eingabe, die ihm von seinem um zwei Bitpositionen höheren Komprimierer zugeführt werden. Der Multiplexer 603 empfängt ein Summenbit ACC_S_REG[1] als eine erste Eingabe und einen Niedrigwert ACC_L_REG[2] als eine zweite Eingabe, die ihm von seinem um eine Bitposition höheren Komprimierer 612 zugeführt werden.
  • Beim dritten Komprimierer 612 empfängt der Multiplexer 604 ein Summenbit ACC_S_REG[2] seines um zwei Bitpositionen höheren Kompri mierers als eine erste Eingabe und ein Summenbit ACC_S_REG[0] des mit ihm gekoppelten Komprimierers 612 als eine zweite Eingabe. Der Multiplexer 605 empfängt ein Übertragbit ACC_C_REG[2] seines um eine Bitposition höheren Komprimierers als eine erste Eingabe und ein Übertragbit ACC_C_REG[0] seines um eine Bitposition niedrigeren Komprimierers, d. h. des Komprimierers 611, als eine zweite Eingabe.
  • Die jeweiligen, mit einem des dritten bis letzten Komprimierers 612 bis 617 gekoppelten, ersten und zweiten Multiplexer können von jeweils gleichem Aufbau sein. Jedoch ist die erste Eingabe des mit dem höchsten Komprimierer 612 gekoppelten Multiplexers 608 ein Summenbit des mit ihm selbst verbundenen Komprimierers 617, während die erste Eingabe des zweiten Multiplexers 609 ein Übertragbit des mit ihm selbst verbundenen Komprimierers 617 ist. Die erste Eingabe des ersten Multiplexers 606, der mit dem Kompressor 616 gekoppelt ist, der unterhalb der höchsten Bitposition angeordnet ist, ist ein Summenbit seines um ein Bit höheren Komprimierers 617. Die Modulus- und Partialprodukte PPI und MMI, die den vier höheren Komprimierern 617 bis 614 von der höchsten Bitposition aus gesehen zugeführt werden, sind jeweils gleich, speziell die MSBs von MMI und PPI.
  • 16 veranschaulicht eine Anordnung von Signalen, die den Komprimierern zugeführt werden, wenn sich das Schiebesignal SHIFT_ACC auf logisch „1" befindet. Das Schiebesignal SHIFT_ACC ist während eines Zyklus unmittelbar nach dem Anfangswertkorrekturzyklus des Ackumulators auf logisch „0", ansonsten während der übrigen Zyklen auf logisch „1". Wenn das Schiebesignal SHIFT_ACC auf logisch „1" ist, geben die ersten und zweiten Multiplexer 600, 602, ..., 608 bzw. 601, 603, ..., 609 ihr erstes Eingangssignal als Ausgabesignal ab, siehe 16.
  • Für alle Zyklen mit Ausnahme des Anfangswertkorrekturzyklus des Ackumulators 150 wird eine Summe SO[1:0] abgegeben, die im Nieder wertregister 650 gespeichert ist. Überträge, Summen und Niedrigwerte, die von den Komprimierern 612 bis 617 zugeführt werden, werden im Übertragregister 630, im Summenregister 620 bzw. im Niederwertregister 650 gespeichert und zu Rückkopplungsschleifen der Komprimierer 610 bis 617 im nächsten Zyklus geleitet. Da die Partialprodukte und Mehrfachmodulusprodukte, die im nächsten Zyklus zu akkumulieren sind, um zwei Bit höher als diejenigen des vorherigen Zyklus sind, müssen sie mit Rückkopplung zu Bitpositionen zugeführt werden, die um zwei Bit niedriger als die betreffende vorherige Speicherposition sind.
  • 17 veranschaulicht eine Anordnung von Signalen, die den Komprimierern zugeführt werden, wenn das Schiebesignal SHIFT_ACC auf logisch „0" liegt. In diesem Fall geben die ersten und zweiten Multiplexer 600, 602, ..., 608 bzw. 601, 603, ..., 609 ihr zweites Eingangssignal als Ausgangssignal ab, siehe 17.
  • Während des Anfangswertkorrekturzyklus führt der Akkumulator 150 für jede Box einen Vorgang zur Korrektur des Anfangswerts des Akkumulators 150 durch Akkumulieren eines Wertes, der einem in einer gegebenen Bitposition im Register gespeicherten Wert entspricht, unter den resultierenden Werten der vorherigen Zeile aus. Dabei können die im Summenregister 620, im Übertragregister 630 und im Niederwertregister 650 gespeicherten Werte in die Rückkopplungsschleife als Eingaben für den Akkumulator 150 ohne Änderung von Bitpositionen eingespeist werden.
  • Wie oben beschrieben, ist das Partialprodukt PPI = {–2A, –A, 0, +2A} und das Modulusprodukt MMI = {SI, –M, 0, +M, +2M}. Für den Anfangswertkorrekturzyklus des Akkumulators 150 werden 0 und SI als das Partialprodukt PPI bzw. das Modulusprodukt MMI ausgewählt. Für alle restlichen Zyklen nach dem Anfangswertkorrekturzyklus des Akkumulators 150 werden die Partialprodukte PPI und Modulusprodukte MMI in Ab hängigkeit vom Kodierschema ausgewählt, wie es in den Wahrheitstabellen der 11 und 14 veranschaulicht ist.
  • Die Werte –A und –M können bei Auswahl als das Partialprodukt bzw. Modulusprodukt durch Bitinversion erhalten werden. Die Werte +2A und +2M können jeweils durch Schieben von A bzw. M um je ein Bit nach links erhalten werden, während der Wert –2A durch Bitinversion nach Schieben von A um ein Bit nach links erhalten werden kann. Die Resultate, die für das Partialprodukt und das Modulusprodukt durch Linksverschiebungs- und Bitumkehroperationen erhalten werden, können als Einserkomplementzahlen bezeichnet werden. Der Multiplizierer 10 gemäß der Erfindung kann z. B. für einen Betrieb unter Verwendung eines Systems von Zweierkomplementzahlen konfiguriert sein, wobei die Zweierkomplementzahl identisch zu der Zahl ist, die durch Addieren von 1 zur Einserkomplementzahl erhalten wird. Das Partialproduktinversionssignal NEG_PP und das Modulusproduktinversionssignal NEG_MM können dazu benutzt werden, die Einserkomplementzahlen –A, –2A und –M als deren Zweierkomplementzahlen zu repräsentieren. Mit anderen Worten wird das Partialproduktinversionssignal NEG_PP gleich „1", wenn das Partialprodukt PP gleich –A oder –2A ist, während es gleich „0" wird, wenn das Partialprodukt PP gleich 0, +A oder +2A ist. Das Modulusproduktinversionssignal NEG_MM wird auf „1" gesetzt, wenn das Modulusprodukt MMI gleich –M ist, und auf „0" gesetzt, wenn das Modulusprodukt MMI gleich SI, 0, +M oder +2M ist.
  • Der erfindungsgemäße Montgomery-Multiplizierer kann in Form einer Operationsmatrix gemäß 1 konfiguriert sein, um eine Mehrfachgenauigkeitsoperation auszuführen. Außerdem können interne Daten des exemplarischen Montgomery-Multiplizierers durch optimierte Bitlängen ohne Datenüberläufe repräsentiert werden, wodurch verhindert wird, dass ihnen unnötig viele Bits zugewiesen werden. Aus der nachfolgenden mathematischen Analyse ergeben sich exemplarische Bereiche für resultierende Werte von Operationen für jede Zeile in der Operationsmatrix, was die Anzahl an Bits bestimmt, die zum Repräsentieren der Operationsresultate für jede Zeile erforderlich sind. Von den Zeilen der Operationsmatrix in 1 verwenden alle mit Ausnahme der letzten Zeile den Multiplikanden A, den Multiplizierwert B und den Modulus M wie folgt: M:2n–1 ≤ M ⦟ 2n – 1 A: –M < A ⦟ +M B: –2c+w/2–1 ≤ B ⦟ 2c+w/2–1 (3)
  • Ein von der ersten Zeile, siehe ROW_0 in 1, erzeugtes Zwischenresultat S0 ist durch folgende Gleichung 4 gegeben:
    Figure 00310001
  • In Gleichung 4 bezeichnet R eine Konstante von 2c + w/2. Da der gezeigte, exemplarische Montgomery-Multiplizierer mit einer Radix-4-Architektur ausgelegt ist, verarbeitet er in jedem Zyklus zwei Bits des Multiplizierwerts B, und der in jedem Zyklus benutzte Wert von Q ist einer aus {–1, 0, +1, +2}. Somit sind der maximale und minimale Wert für Q in einer gegebenen Reihe durch folgende Gleichung 5 gegeben:
    Figure 00310002
  • Mit der obigen Bedingung ergibt sich folgende Gleichung 6 für den maximalen und minimalen Wert des Zwischenresultats S0:
    Figure 00320001
  • Da der Modulus M aus n-Bits besteht, ist die Anzahl an Bits, die zum Repräsentieren einer Zahl innerhalb der oben beschriebenen Grenze benötigt werden, gleich n + 2, einschließlich eines Vorzeichenbits.
  • Ein von der zweiten Zeile, siehe ROW_1 in 1, erhaltenes Zwischenresultat S1 wird aus dem vorherigen Zwischenresultat So der ersten Zeile erhalten, und zwar gemäß folgender Gleichung 7:
    Figure 00320002
  • Der maximale und minimale Wert von S1 ergibt sich dann durch folgende Gleichung 8:
    Figure 00320003
  • Die Anzahl an Bits zum Repräsentieren der Zahl im durch die obige Gleichung 8 festgelegten Bereich beträgt folglich n + 2. In gleicher Weise kann auch ein Zwischenresultat S2 der dritten Zeile, siehe ROW_2 in 1, durch n + 2 Bit repräsentiert werden.
  • Andernfalls kann ein resultierender Wert für eine Einfachgenauigkeit, bei der genau ein Satz eines Resultats und eine Zeile für die letzte Zeile der Mehrfachgenauigkeit existiert, durch n + 1 Bit einschließlich eines Vorzeichenbits repräsentiert werden. Diese Eigenschaft kann anhand der unten stehenden Prozedur nachgeprüft werden.
  • Die Bereiche des Multiplikanden A, des Multiplizierwerts B und des Modulus M können durch folgende Anordnung gemäß Gleichung 9 festgelegt werden: M: 2n–1+1 ≤ M < 2n–1 : 2cp–1+1 ≤ M < 2cp–1 A: –M ≤ A < +M B: –M ≤ B < +M (9)
  • Das Endresultat S ergibt sich dann durch folgende Gleichung 10:
    Figure 00330001
  • In Gleichung 10 bezeichnet der Parameter R eine Konstante gleich 2(c+w/2)p. Der maximale und minimale Wert von Q in Gleichung 10 ist durch folgende Gleichung 11 definiert:
    Figure 00340001
  • Somit werden der maximale und minimale Wert des Endresultats S durch folgende Gleichung 12 erhalten:
    Figure 00340002
  • Die Anzahl an Bits, um die Zahlen im Bereich der obigen Bedingungen zu repräsentieren, beträgt n + 1.
  • Wie oben angegeben, kann in dem Mehrfachgenauigkeits-Operationsschema ein Datenüberlauf über den Bereich von +M hinaus für die Zwischenresultate verursacht werden, die von den anderen Zeilen festgelegt werden, siehe die internen Zeilen ROW_0 bis ROW_2 in 1, die Zwischenresultate für die letzte Zeile, d. h. ROW_3 in 1, sind jedoch so konditioniert, dass sie nahe am Maximalwert liegen. Eine solche Bedingung korrespondiert mit einem für jeden Zyklus ausgewählten Wert von Q, der fast gleich +2 um die höhere Bitposition herum ist, und mit einem Vorzeichen des Multiplikanden A, das identisch zu einem Stückvorzeichen des Multiplizierwerts B ist, der in der entsprechenden internen Zeile benutzt wird.
  • Ein Operationsergebnis für jede Zeile wird durch n + 2 Bit repräsentiert. Da jedoch n ein ganzzahliges Vielfaches von w ist und der Speicher 40 als ganzzahliges Vielfaches von w bemessen ist, ist die Speicherung der beiden zusätzlichen Bits im Speicher 40 nicht effizient. Daher werden in entsprechenden Ausführungsformen der Erfindung n niedrigere Bits der n + 2 Bits im Speicher 40 abgelegt und die restlichen zwei Bits, d. h. das Vorzeichenbit, welches das höchstwertige Bit (MSB) darstellt, und das zweithöchste Bit, auch zweites MSB bezeichnet, werden im internen Register, siehe SFR 13 in 3, des Montgomery-Multiplizierers 10 abgelegt. Die zwei höheren Bits werden auch als SIGN_S und MS1B_S bezeichnet.
  • Nach Abschluss des Operationsprozesses bis zur letzten Zeile haben das Vorzeichenbit SIGN_S und das zweithöchste Bis MS1B_S den gleichen Wert. Nach Abschluss des Operationsprozesses für die internen Zeilen kann jedoch das zweithöchste Bit gleich „1" sein, während das Vorzeichenbit gleich „0" ist.
  • Der Datenpfad 100 des erfindungsgemäßen Montgomery-Multiplizierers weist im gezeigten Beispiel zudem Schieberegister 106, 115, 116 und 180 auf. Die akzeptierte Bitlänge in jedem dieser Schieberegister 106, 115, 116, 180 ist w, und diese Bits können in jedem Register pro Zyklus um zwei Bit nach rechts verschoben werden. Die Register 106 und 115 sind z. B. Schieberegister mit paralleler Eingabe und serieller Ausgabe, während die Register 116 und 180 Schieberegister mit serieller Eingabe und paralleler Ausgabe sind.
  • Das Modulusprodukt MMI, das in jedem Zyklus erzeugt wird, wird dem vorherigen Resultat SI nur im Anfangswertkorrekturzyklus des Akkumulators 150 zugewiesen. Das in jedem Zyklus erzeugte Modulusprodukt MMI kann durch den Wert qIM für die übrigen Zyklen gewählt werden, wie durch die Wahrheitstabelle von 11 bestimmt, wobei qI ein Element der Menge {–1, 0, 1, 2} ist.
  • Für die in 1 gezeigten Zeilen können die ersten Einheitsmultiplikationsoperationen CSA.0.0, CSA1.0, CSA2.0 und CSA3.0, nachfolgend auch als „Gen-Q-Box" bezeichnet, mit der Berechnung von qI ausgeführt werden. Der ermittelte qI-Wert wird im Speicher 40 gespeichert, um ihn in Einheitsmultiplikationsoperationen der gleichen Zeile zu verwenden. Der Montgomery-Rekorder 110 gemäß den 8A bis 8C erzeugt einen Wert QO[1:0] mit Vorzeichen von zwei Bit für alle Zyklen mit Ausnahme des Anfangswertkorrekturzyklus des Akkumulators 150 für die ersten Einheitsmultiplikationsoperationen Gen-Q-Box jeder Zeile, wonach die Werte QO[1:0] im Schieberegister 116 gespeichert werden.
  • 19 veranschaulicht eine detaillierte Konfiguration des Schieberegisters 116, d. h. von QO_SIPO_REG[15:0]. Das Schieberegister 116 bewegt Datenbits pro Zyklus um zwei Bit nach rechts und speichert den vom Montgomery-Rekorder 110 zugeführten Wert QO[1:0] an den höheren 2-Bit-Positionen. Das Schieberegister 116 transferiert seine Daten, d. h. QO_SIPO_REG[31:0], immer dann zum Speicher 40, wenn ihm neue Wortlängendaten zugeführt werden.
  • 20 veranschaulicht eine detaillierte Konfiguration des Schieberegisters 115, d. h. von QI_PISO_REG[15:0]. Der im Speicher 40 gespeicherte Wert QO wird in Einheiten der Wortlänge w zum Schieberegister 115 übertragen. Die niedrigeren Werte QI[1:0] des Schieberegisters 115 werden dem Montgomery-Rekorder 110 zugeführt. Das Schieberegister 115 empfängt neue Daten vom Speicher 40 in Reaktion auf ein Taktsignal, wenn das Schiebesteuersignal SFT_QI_PISO gleich „0" ist, während es seine Daten um zwei Bit nach rechts schiebt, wenn das Schiebesteuersignal SFT_QI_PISO gleich „1" ist.
  • Für alle übrigen Einheitsmultiplikationsoperationen CSA0.1 bis CSA0.3, CSA1.1 bis CSA1.3, CSA2.1 bis CSA2.3 sowie CSA3.1 bis CSA3.3, nachfolgend auch als „Gen-S-Box" bezeichnet, mit Ausnahme der ersten Einheitsmultiplikationsoperationen Gen-Q-Box für jede Zeile werden 2-Bit-Multiplikationsresultate SO[1:0], die eine Summe des Akkumulators 150 repräsentieren, für jeden Zyklus mit Ausnahme des Anfangswertkorrekturzyklus des Akkumulators 150 erzeugt. Die Werte SO[1:0] werden sequentiell im Schieberegister 180 gespeichert.
  • 21 veranschaulicht eine detaillierte Konfiguration des Schieberegisters 180 zum Speichern einer Summe SO[1:0] des Akkumulators 150. Das Schieberegister 180 bewegt seine Daten in Reaktion auf ein Taktsignal pro Zyklus um zwei Bit nach rechts und speichert die Werte SO[1:0] des Akkumulators 150 an den höheren 2-Bit-Positionen. Das Schieberegister 180 überträgt seine Daten SO_SIPO_REG[31:0] zum Speicher 40 immer dann, wenn ihm neue Wortlängendaten zugeführt werden.
  • 22 veranschaulicht eine vorteilhafte Realisierung einer SPP-Erzeugungsschaltung 170 zur Erzeugung von im Montgomery-Rekorder 110 genutzten iterativen Partialproduktdaten SPPI[1:0]. Diese Daten SPPI[1:0] werden basierend auf einer im Akkumulator 150 gespeicherten Summe, den beiden LSBs ACC_S_REG[1:0] der Summenregister 620 und ACC_C_REG[1:0] der Übertragregister 630, dem Wert ACC_L_REG[2:0] des Niederwertregisters 650, den zwei LSBs PPI[1:0] des Partialprodukts und dem Schiebesteuersignal SHIFT_ACC für die Rückkopplungseingabe des Akkumulators 150 bestimmt. Die Werte ACC_S_REG[1:0], ACC_C_REG[1:0] und ACC_L_REG[2:0] werden von einem 2-Bit-Addierer 801 summiert. Der Summenwert vom 2-Bit-Addierer 801 wird durch einen 2-Bit-Addierer 802 mit PPI[1:0] summiert. Ein 2-Bit-Addierer 803 summiert PPI[1:0] mit ACC_L_REG[1:0]. Ein Multiplexer 804 wählt die Ausgabe des Addierers 802 aus, wenn das Schie besteuersignal SHIFT_ACC auf logisch „0" liegt, während er die iterativen Partialproduktdaten SPPI[1:0] durch Auswählen der Ausgabe des Addierers 803 abgibt, wenn das Schiebesteuersignal SHIFT_ACC auf logisch „1" liegt. Wie oben beschrieben, werden die iterativen Partialproduktdaten SPPI[1:0] dem Montgomery-Rekorder 110 zugeführt. Es gibt in den exemplarischen Ausführungsformen der Erfindung keine Begrenzung für die Größe bzw. Bitlänge. Beispielsweise können die iterativen Partialproduktdaten SPPI ebenso wie andere Elemente erfindungsgemäßer Ausführungsbeispiele mehr als zwei Bit umfassen.
  • 23 veranschaulicht eine vorteilhafte Schaltungskonfiguration für einen Übertragpropagationsaddierer(CPA)-Operationsblock 160 gemäß der Erfindung für den Fall c = 256 und w = 32. Im CPA-Operationsblock 160 können CPA0, CPA1, CPA2 und CPA3, wie in 1 gezeigt, sequentiell betrieben werden. Ein Multiplexer 901 empfängt niedrige Werte ACC_C_REG[255:0] als eine Stücklänge von in einem Übertragregister 630 des Akkumulators 150 gespeicherten Übertragbits. Ein Multiplexer 902 empfängt eine Summe S[255:0], die in einem Summenregister 620 des Akkumulators 150 gespeichert ist. Die Multiplexer 901 und 902 wählen sequentiell 32 Bit angefangen beim LSB aus 256 Eingabebits in Reaktion auf ein Eingabeauswahlsignal SEL_CPA_IN[2:0] aus. Ausgaben der Multiplexer 901 und 902 werden in einem jeweiligen Register 903 bzw. 904 gespeichert. Das Eingabeauswahlsignal SEL_CPA_IN[2:0] kann von „0000" bis „1111" variieren. Somit ist der CPA-Block 160 in der Lage, eine Operation für 256 Bit mittels Durchführen von acht iterativen CPA-Zyklen in Einheiten von 32 Bit zu verarbeiten.
  • Ein Übertragpropagationsaddierer 905 addiert eine Übertrageingabe C_IN eines Multiplexers 920 zu Werten CPA_A_REG[31:0] und CPA_B_REG[31:0], die in den Registern 903 und 904 gespeichert sind. Nach Abschluss einer Übertragbehaltaddier(CSA)-Operation für jede Zeile ergibt sich ein resultierender Wert des Akkumulators 150 zu ACC_S_REG[256:0] + ACC_C_REG[256:0] + ACC_L_REG[2], der im Speicher 40 nach Umwandeln in eine einzelne Zahl durch Summieren mittels der CPA-Operation gespeichert wird. Daher hat die Übertrageingabe C_IN im ersten Zyklus der CPA-Operation, d. h. SEL_CPA_IN[2:0] = „000", den Wert ACC_L_REG[2], während die Übertrageingabe C_IN ansonsten in den übrigen Zyklen, d. h. von SEL_CPA_IN[2:0] = „001" bis SEL_CPA_IN[2:0] = „111 ", eine Übertragausgabe C_OUT des vorherigen Operationszyklus darstellt. Die Übertragausgabe C_OUT vom Übertragpropagationsaddierer 905 wird in einem Register 906 gespeichert. Ein neues Vorzeichenbit SIGN_S für einen resultierenden Wert einer Zeile wird mittels Durchführen einer XOR-Operation mit einer Übertragausgabe C_OUT, die nach Addieren des Übertrags ACC_C_REG[255:0] zur Summe ACC_S_REG[255:0] über iterative Operationen im CPA-Block 160 erzeugt wird, sowie ACC_C_REG[256] und ACC_S_REG[256] erhalten. Das Vorzeichenbit SIGN_S kann sich auf den neu berechneten Wert unter der Steuerung eines Signals UPD_SIGN_S ändern. Dieses Steuersignal UPD_SIGN_S veranlasst das zweithöchste Bit MS1B_S, sich in den neu berechneten Wert zu ändern.
  • 24 veranschaulicht eine Eigenschaft, wonach im Akkumulator 150 eine obere Worthälfte eines gegebenen Wortes beibehalten wird, während von der letzten CSA-Operation jeder Zeile in einem geradzahligen Mehrfachgenauigkeitsmodus zu einer CPA-Operation übergegangen wird. In diesem Fall eines geradzahligen Mehrfachgenauigkeitsmodus, z. B. eines Modus mit doppelter oder vierfacher Genauigkeit, wird das letzte halbe Wort, d. h. sechzehn Bit im Fall von w = 32, von Ausgabebits des Akkumulators 150 im Register 180 gehalten und nicht zum Speicher 40 übertragen, wenn von der letzten CSA-Operation für jede Zeile zur CPA-Operation übergegangen wird. Ein derartiger Effekt ist in 24 illustriert. Wie daraus ersichtlich, wiederholt der Multiplizierer im Fall des Vierfachgenauigkeitsmodus den CSA-Einheitsoperationszyklus vier Mal.
  • Die Datenlänge jeder Einheitsmultiplikationsoperation ist dann durch folgende Gleichung 13 bestimmt, mit c = 256 und w = 32: c' = c + w/2 = (c/w)·w + w/2 = (256/32)·32 + 32/2 = 8·32 + 16 = 272 (13)
  • Eine Ausgabe des letzten halben Worts, d. h. der letzten sechzehn Bit, durch die zweite Einheitsoperation CSA1, die mit dem ersten halben Wort der dritten Einheitsoperation CSA2 kombiniert bzw. vereinigt wird, bildet dann ein vollständiges Wort. Das vollständige Wort wird im Speicher 40 abgelegt. Andernfalls wird eine Ausgabe des letzten halben Wortes durch die vierte Einheitsoperation CSA3 im Register 180 gehalten und nicht zum Speicher 40 transferiert, da es keinen Einheitsoperationsblock mehr gibt. Um die im Register 180 verbliebenen Halbwortdaten während der CPA-Operation zwangsweise in den Speicher 40 zu versetzen, sind zugehörige Steuersignale IS_1ST_CPA_WORD und IS_ODD_PREC vorgesehen.
  • Wieder bezugnehmend auf 23 bilden im geradzahligen Genauigkeitsmodus, d. h. IS_ODD_PREC = „0", die sechzehn niedrigeren Bits als ein vom Übertragpropagationsaddierer 905 im ersten Zyklus, d. h. IS_1ST_CPA_WORD = „1 ", der CPA-Operation abgegebenes Resultat zusammen mit den im Register 180 gespeicherten, sechzehn höheren Bits SO_SIPO_REG[31:16] ein vollständiges Wort mit 32 Bit. Das vollständige Wort wird im Register 925 gespeichert. Die höheren sechzehn Bit eines vom Übertragpropagationsaddierer 905 ausgegebenen Resultats werden im Register 922 gespeichert.
  • In den restlichen Zyklen werden die niedrigeren sechzehn Bit der Ausgabebits des Übertragpropagationsaddierers 905 im Register 925 gespeichert und mit den sechzehn höheren Bits vereinigt, die im vorherigen Zyklus im Register 922 gespeichert worden sind. Somit werden die Daten des Registers 925 in jedem Zyklus im Speicher 40 abgelegt.
  • 25 veranschaulicht in einer Wahrheitstabelle eine Anordnung von logischen Beziehungen für gegebene Eingabe-/Ausgabesignale des Zellenrekorders 140. Wie oben in Verbindung mit 14 erläutert, kann der Zellenrekorder 140 aus kombinatorischen Logikschaltkreisen aufgebaut sein. Logische Beziehungen zwischen Eingabe- und Ausgabesignalen des Zellenrekorders 140 können wie in 25 gezeigt ausgelegt sein.
  • Gemäß 25 sind A[1] und A[0] die zwei LSBs des in einer laufenden Einheitsmultiplikationsoperation verwendeten Multiplikanden A. Die zwei LSBs von –A sind daher {A[1] xor A[0], A[0]}, und die zwei LSBs von +2A und –2A sind {A[0],0}.
  • Wenn ein Zwangspartialproduktsteuersignal FORCE_PP[1:0] gleich „11" ist, wird der Wert des Partialprodukts PPI durch die Multiplizierwerte B1, B0 und BR festgelegt. In den anderen Fällen wird, wenn das Zwangspartialproduktsteuersignal FORCE_PP[1:0] gleich „01 ", „10" bzw. „00" ist, das Partialprodukt PPI zwangsweise auf +A, –A bzw. 0 festgelegt.
  • Im Anfangswertkorrekturzyklus des Akkumulators 150 für jede Einheitsmultiplikationsoperation von 1 wird der resultierende Wert SI der vorherigen Zeile in den Akkumulator „gestapelt". Damit dies geschieht, wird das Partialprodukt PPI zu „0" gewählt, und für das Modulusprodukt MMI wird der resultierende Wert SI der vorherigen Zeile gewählt. Im Anfangswertkorrekturzyklus des Akkumulators 150 wird das Zwangspartialproduktauswahlsignal FORCE_PP[1:0] auf „11" gesetzt, um den Wert des Partialprodukts PPI zwangsweise auf „0" zu setzen.
  • Beim erfindungsgemäßen Montgomery-Multiplizierer 10 kann ein Resultat einer modularen Exponentiation als eine Montgomery-Restzahl „XR mod M" repräsentiert werden. Das gewünschte Resultat ist jedoch eine normale Restzahl „X mod M". Dementsprechend wird das Zwangsparti alproduktsteuersignal FORCE_PP[1:0] dazu benutzt, die Montgomery-Restzahl in die normale Restzahl zu transformieren. Beispielsweise ist es möglich, die normale Restzahl mittels Durchführen der Montgomery-Multiplikation und Setzen des Multiplizierwertes B auf „+1" sowie des Multiplikanden A auf einen resultierenden Wert der Montgomery-Multiplikation zu erhalten. Um dies zu bewerkstelligen, wird das Zwangspartialproduktsteuersignal FORCE_PP[1:0] nur während des ersten Zyklus nach dem Anfangswertkorrekturzyklus in jeder Einheitsoperation für die erste Zeile der Operationsmatrix auf „01" gesetzt, was dazu führt, dass das Partialprodukt PPI gleich +A ist. In allen übrigen Zyklen wird das Zwangspartialproduktsteuersignal FORCE_PP[1:0] auf „11" gesetzt, so dass das Partialprodukt PPI zwangsweise den Wert 0 annimmt.
  • Die Eingaben B1, B0 und BR für den Booth-Rekorder 140 werden vom Multiplizierregister 106 zugeführt. Wie aus 8C ersichtlich, wird die Eingabe A[1:0] aus AX_PIPO_REG[1:0] und AY_PIPO_REG[1:0] ausgewählt. Die Eingabe SEL_PP_D[1:0] ist eine verzögerte Version des Auswahlsignals SEL_PP, wobei die Verzögerung auf einen Zwischenspeicher FF1 einer Verzögerungsschaltung 141 zurückgeht, die auch als ein Pipelineregister bezeichnet wird, wie in 8B gezeigt. Das Partialproduktfreigabesignal EN_PP und die Ausgabe SEL_PP[1:0] des Zellenrecorders 140 werden dem Partialproduktgenerator 130 zugeführt. Das Partialproduktinversionssignal NEG_PP wird dem Akkumulator 150 zugeführt, und das Partialprodukt PPI[1:0] wird vom Zellenrekorder 140 an den SPP-Generator 170 abgegeben, wie in 22 gezeigt.
  • 26 veranschaulicht in einer Wahrheitstabelle eine Anordnung von logischen Beziehungen für gegebene Eingabe-/Ausgabesignale des Montgomery-Rekorders 110, der ebenfalls aus kombinatorischen Logikschaltungen aufgebaut sein kann. Exemplarische Logikbeziehungen zwischen neuen Eingabe- und Ausgabesignalen des Montgomery-Rekorders 110 sind in 26 angegeben, wobei ein Codierschema für qI, d. h. QI[1:0] und QO[1:0], summarisch durch folgende Gleichung 14 dargestellt werden kann. MM = 0 → qI = "00" MM = +M → qI = "01" MM = –M → qI = "10" MM = +2M → qI = "11" (14)
  • In 26 repräsentiert M1 den zweitniedrigsten Wert des Modulus M. Wenn das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] gleich „11" ist, ist der Wert des Modulusprodukts MMI durch die iterativen Partialproduktdaten SPP[1:0] und M1 bestimmt. Das Modulusprodukt MMI kann jedoch zwangsweise als der resultierende Wert SI der vorherigen Zeile gewählt werden, wenn das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] gleich „10" ist. Das Modulusprodukt MMI wird als ein durch QI[1:0] gewählter Wert erzeugt, wenn das Signal FORCE_MM[1:0] gleich „01" ist.
  • Für alle Multiplikationsoperationen der Operationsmatrix wird der Wert des Modulusprodukts MMI mit dem resultierenden Wert SI der vorherigen Zeile im Anfangswertkorrekturzyklus des Akkumulators 150 gewählt. Da es erforderlich ist, das Modulusprodukt MMI zu wählen, das an die iterativen Partialproduktdaten SPP[1:0] und M1 in der ersten Operation, d. h. der Gen-Q-Box, für jede Zeile der Operationsmatrix anpassbar ist, wird das Zwangsmodulusproduktsteuersignal FORC_MM[1:0] für alle übrigen Zyklen abgesehen vom Anfangswertkorrekturzyklus des Akkumulators 150 auf „00" gesetzt. Während des Anfangswertkorrekturzyklus wird qI berechnet und dann als QO[1:0] zwecks Speicherung im Speicher 40 über das Register 116 abgegeben.
  • In den übrigen Einheitsoperationen, d. h. der Gen-S-Box, mit Ausnahme der ersten Einheitsoperation, d. h. der Gen-Q-Box, für jede Zeile der Operationsmatrix wird das Modulusprodukt MMI durch erneutes Verwenden von qI, d. h. dem Eingangssignal QI[1:0], ausgewählt, das während der ersten Einheitsoperation Gen-Q-Box im Speicher 40 gespeichert wurde. Das Eingabesignal QI[1:0] kann dadurch erneut verwendet werden, dass das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] auf "01" gesetzt wird.
  • Der erfindungsgemäße Multiplizierer-Datenpfad 100 ist in der Lage, zusätzlich zur Montgomery-Multiplikationsoperation eine normale Multiplikationsoperation zu unterstützen. Für die normale Multiplikationsoperation kann ebenfalls das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] verwendet werden. Da eine normale Multiplikation jedoch keinen Modulus verwendet, gibt es kein Modulusprodukt MMI. Daher wird das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] nur während des Anfangswertkorrekturzyklus des Akkumulators 150 für jede Einheitsoperation auf "10" gesetzt, was das Modulusprodukt MMI auf den resultierenden Wert SI der vorherigen Zeile setzt. Während der übrigen Zyklen wird das Zwangsmodulusproduktsteuersignal FORCE_MM[1:0] auf "00" gesetzt, um dadurch das Modulusprodukt MMI zwangsweise auf 0 festzulegen.
  • Wieder bezugnehmend auf 8A werden die in den Montomery-Rekorder 110 eingegebenen, iterativen Partialproduktdaten SPP[1:0] vom Spannungspegel-Generator 170 zugeführt. M1 wird in der ersten Einheitsoperation, d. h. der Gen-Q-Box, benutzt und unter dem zweiten LSB der Moduluswerte M, die im Register 102 gespeichert sind, und dem zweiten LSB ausgewählt, das im Register 103 gespeichert ist. Des weiteren ist QI[1:0] gleich den zwei LSBs, die im Register 115 gespeichert sind. Die Eingabe SEL_MM_D[1:0] wird gegenüber DEL_MM[1:0] über das Flipflop 111 um einen Zyklus verzögert. Die Ausgabe QO[1:0] des Montgomery-Rekorders 110 wird dem Register 116 zugeführt. Das Modulusproduktauswahlsignal SEL_MM[1:0] und das Modulusproduktfreigabesignal EN_MM werden dem Modulusproduktgenerator 120 zugeführt. Das Modulusproduktinversionssignal NEG_MM wird dem Ackumulator 150 zugeführt.
  • Wiederum bezugnehmend auf 8B kann ein Störimpulsentferner 114 vorgesehen sein, um den Leistungsverbrauch durch Beseitigen von Störimpulsen zu reduzieren, die in den Ausgangssignalen SEL_MM[1:0], EN_MM und NEG_MM entstehen können. Der Störimpulsentferner 114 kann aus Zwischenspeichern oder Flipflops bestehen und mit einem Takt oder einem inversen Takt betrieben werden, der in einem anderen Register oder Flipflop im Montgomery-Multiplizierer 10 benutzt wird. Die Verwendung des Störimpulsentferners 114 kann anwendungsspezifisch sein. Wenn eine Anwendung eine höhere Betriebsgeschwindigkeit eher benötigt als einen reduzierten Leistungsverbrauch, ist es möglich, einen Versatz eines kritischen Pfades durch Weglassen des Störimpulsentferners 114 im Montgomery-Multiplizierer 10 zu verkürzen.
  • Das Pipelineregister 141 dient dazu, eine Betriebsfrequenz mittels Zweistufen-Pipelineregistern zu erhöhen. Das Multiplizierwertregister 106 und der Zellenrekorder 140 können um einen Zyklus früher als die anderen Blöcke betrieben werden. Ein Steuersignal USE_X_REG kann gemeinsam die folgenden Schaltkreiskomponenten steuern: Den Multiplexer 142 zum Auswählen des Eingabesignals A[1:0] für den Zellenrekorder 140, den Modulusproduktgenerator 120, den Partialproduktgenerator 130, den Multiplexer 113 und das Flipflop 112 zum Auswählen des dem Montgomery-Rekorder 110 zuzuführenden Signals M1. Hierbei verwendet aufgrund des Pipelinebetriebs nur der Mulitplexer 142, der das Eingabesignal A[1:0] des Zellenrekorders 149 auswählt, direkt das Steuersignal USE_X_REG, während die anderen Schaltkreise 120, 130, 112 und 113 ein gegenüber dem Steuersignal USE_X_REG um einen Zyklus verzögertes Signal aufnehmen, wie in 8B gezeigt.
  • Wie oben beschrieben, sind erfindungsgemäße Ausführungsformen in der Lage, einen Mehrfachgenauigkeits-Multiplizierbetrieb unter Verwendung eines skalierbaren Montgomery-Multiplizierers bereitzustellen. Der Multiplizierer kann darauf ausgelegt sein, sowohl eine normale Multiplikationsoperation als auch eine Montgomery-Multiplikationsoperation auszuführen. Der exemplarische Montgomery-Multiplizierer kann so konfiguriert sein, dass er unter Verwendung des Zwangsmodulusproduktsteuersignals FORCE_MM[1:0] eine Montgomery-Restzahl in eine normale Restzahl transformiert.

Claims (58)

  1. Multipliziereinheit, insbesondere vom Montgomery-Typ, gekennzeichnet durch – einen Modulusproduktgenerator (120) zum Auswählen einer von mehreren möglichen n-Bit-Moduluszahlen –M, 0, M, 2M und eines Vorherzeilenresultats SI als ein Modulusprodukt, – einen Partialproduktgenerator (130) zum Auswählen eines Multiplikanden aus mehreren möglichen Multiplikanden –2A, –A, 0, +A und +2A als ein Partialprodukt und – einen Akkumulator (150) zum Stapeln des ausgewählten Modulusprodukts und des ausgewählten Partialprodukts.
  2. Multipliziereinheit, insbesondere vom Montgomery-Typ, gekennzeichnet durch – einen Modulusproduktgenerator (120) zum Auswählen eines Modulusprodukts aus einer Mehrzahl von wählbaren n-Bit-Moduluszahlen (M), wobei eine gegebene Moduluszahl (M) aus einem momentan zugeführten erweiterten Stück von Bits unter den n-Bit-Moduluszahlen gebildet ist, – einen Partialproduktgenerator (130) zum Auswählen eines Multiplikanden aus einer Mehrzahl von wählbaren n-Bit-Multiplikanden (A) als ein Partialprodukt, wobei ein gegebener Multiplikand (A) aus einem momentan zugeführten, erweiterten Stück von Bits unter den n-Bit-Multiplikanden gebildet ist, und – einen Akkumulator (150) zum Akkumulieren des ausgewählten Modulusprodukts und des ausgewählten Partialprodukts zur Erzeugung eines Multiplikationsresultats.
  3. Multipliziereinheit, insbesondere vom Montgomery-Typ, dadurch gekennzeichnet, dass sie zur wahlweisen Durchführung einer Montgomery-Multiplikationsoperation und einer normalen Multiplikationsoperation basierend auf einem logischen Zustand eines ihr zugeführten Steuersignals eingerichtet ist.
  4. Multipliziereinheit nach Anspruch 1 oder 3, weiter dadurch gekennzeichnet, dass eine Moduluszahl (M) aus einem momentan zugeführten, erweiterten Stück von mehreren verschiedenen Bits von n-Bit-Moduluszahlen gebildet ist und ein Multiplikand (A) aus einem momentan zugeführten, erweiterten Stück von Bits unter mehreren verschiedenen n-Bit-Multiplikanden gebildet ist.
  5. Multipliziereinheit nach Anspruch 4, weiter dadurch gekennzeichnet, dass das Vorherzeilenresultat von Bits gebildet ist, die mit den momentan zugeführten, erweiterten Stücken des Multiplikanden und der Moduluszahl unter Multiplikationsresultaten einer vorherigen Zeile des Akkumulators korrespondieren.
  6. Multipliziereinheit nach Anspruch 4 oder 5, weiter dadurch gekennzeichnet, dass der Modulusproduktgenerator das Vorherzeilenresultat als das Modulusprodukt in einem Anfangswertkorrekturzyklus des Akkumulators auswählt.
  7. Multipliziereinheit nach Anspruch 6, weiter dadurch gekennzeichnet, dass der Partialproduktgenerator das Partialprodukt im Anfangswertkorrekturzyklus des Akkumulators auf "0" setzt.
  8. Multipliziereinheit nach Anspruch 6 oder 7, weiter dadurch gekennzeichnet, dass der Anfangswertkorrekturzyklus einen ersten Zyklus einer Einheitsmultiplikationsoperation repräsentiert, welche die momentanen erweiterten Eingabestückbits des n-Bit-Multiplikanden und der n-Bit-Moduluszahl benutzt.
  9. Multipliziereinheit nach einem der Ansprüche 1 bis 8, weiter dadurch gekennzeichnet, dass eine Moduluszahl –M durch Invertieren einer Moduluszahl M erhalten wird.
  10. Multipliziereinheit nach einem der Ansprüche 1 bis 9, weiter dadurch gekennzeichnet, dass eine Moduluszahl 2M durch Bitstellenverschiebung einer Moduluszahl M erhalten wird.
  11. Multipliziereinheit nach einem der Ansprüche 4 bis 10, weiter gekennzeichnet durch – ein Modulusregister zum Speichern momentaner Eingabebits der n-Bit-Moduluszahl (M), – ein Multiplikandenregister zum Speichern momentaner Eingabebits des n-Bit-Multiplikanden (A) und – ein Multiplizierregister zum Speichern momentaner Eingabebits einer n-Bit-Multiplizierzahl (B).
  12. Multipliziereinheit nach Anspruch 11, weiter dadurch gekennzeichnet, dass das Modulusregister und das Multiplikandenregister jeweils als Register mit c' + 1 Bit ausgelegt sind, wobei c' eine positive ganze Zahl kleiner oder gleich n ist, die eine erweiterte Stückbitlänge der n-Bit-Multiplikandenzahl und/oder der n-Bit-Moduluszahl repräsentiert.
  13. Multipliziereinheit nach Anspruch 11 oder 12, weiter dadurch gekennzeichnet, dass das Modulusregister mehrere Subregister mit jeweils einer Größe von einem halben Wort sowie ein 1-Bit-Vorzeichenregister aufweist.
  14. Multipliziereinheit nach einem der Ansprüche 11 bis 13, weiter dadurch gekennzeichnet, dass das Multiplikandenregister mehrere Subregister mit jeweils einer Größe von einem halben Wort sowie ein 1-Bit-Vorzeichenregister aufweist.
  15. Multipliziereinheit nach Anspruch 13 oder 14, weiter gekennzeichnet durch einen Speicherschnittstellenblock zum Speichern von Wortlängendaten, wobei die Subregister des Modulusregisters und/oder des Multiplikandenregisters geradzahlige Subregister und ungeradzahlige Subregister umfassen, von denen die geradzahligen Subregister dazu dienen, niederwertige Halbworte der vom Speicherschnittstellenblock zugeführten Wortlängendaten zu speichern, und die ungeradzahligen Subregister dazu dienen, höhenwertige Halbworte der vom Speicherschnittstellenblock zugeführten Wortlängendaten zu speichern.
  16. Multipliziereinheit nach einem der Ansprüche 1 bis 15, weiter gekennzeichnet durch ein Schieberegister zum Speichern von Eingabebits einer n-Bit-Multiplizierzahl als eine Wortlänge w, die gleich oder kleiner als eine Stücklänge c ist, die kleiner oder gleich n ist, wobei die Daten um zwei Bits verschoben werden.
  17. Multipliziereinheit nach einem der Ansprüche 11 bis 16, weiter dadurch gekennzeichnet, dass der Partialproduktgenerator ein Partialproduktauswahlsignal aus drei Bits (B0, B1, BR) der momentanen Eingabebits der n-Bit-Multiplizierzahl erzeugt und eines der Eingabebits A, 2A, –A und –2A des n-Bit-Multiplikanden als das Partialprodukt auswählt.
  18. Multipliziereinheit nach Anspruch 17, weiter dadurch gekennzeichnet, dass der Multiplikand 2A durch Stellenverschiebung des Multiplikanden A erhalten wird.
  19. Multipliziereinheit nach Anspruch 17 oder 18, weiter dadurch gekennzeichnet, dass der Multiplikand –A durch Invertieren des Multiplikanden A erhalten wird.
  20. Multipliziereinheit nach einem der Ansprüche 17 bis 19, weiter dadurch gekennzeichnet, dass der Multiplikand –2A durch Invertierung und Stellenverschiebung des Multiplikanden A erhalten wird.
  21. Multipliziereinheit, insbesondere vom Montgomery-Typ, gekennzeichnet durch – eine Operationsmatrix mit einer Anzahl n/c von Zeilen, wobei n und c positive ganze Zahlen sind und jede Zeile mit Montgomery-Einheitsmultiplikationsoperationen, die iterativ n/c Mal ausgeführt werden, und einer Übertragpropagationsaddieroperation verknüpft ist, – einen Akkumulator (150) mit einer Übertragbehaltaddierstruktur zur Durchführung der iterativen Einheitsmultiplikationsoperationen und – einen zusätzlichen Übertragpropagationsaddierer (160) zur Durchführung der Übertragpropagationsaddieroperation.
  22. Multipliziereinheit nach Anspruch 21, weiter dadurch gekennzeichnet, dass eine Montgomery-Multiplizieroperation abgeschlossen ist, wenn die Einheitsmultiplikationsoperationen und die Übertragpropagationsaddieroperation für die n/c Zeilen der Operationsmatrix durchgeführt worden sind.
  23. Operationseinheit mit – einem Speicher (40), – einer Host-Einheit (20) zur Speicherung eines Multiplikanden (A), eines Multiplizierwerts (B) und einer Moduluszahl (M) im Speicher, gekennzeichnet durch – eine Multipliziereinheit nach einem der Ansprüche 1 bis 22 zur Durchführung einer Montgomery-Multiplikationsoperation mit dem gespeicherten Multiplikanden (A), dem gespeicherten Multiplizierwert (B) und der gespeicherten Moduluszahl (M) unter der Steuerung der Host-Einheit und zur Speicherung eines Resultates der Montgomery-Multiplikationsoperation im Speicher (40).
  24. Operationseinheit nach Anspruch 23, weiter dadurch gekennzeichnet, dass – der Modulusproduktgenerator das vorherige Zeilenresultat SI und einen Teil der n-bit-Moduluszahl M aus dem Speicher liest, um einen der Werte SI, –M, 0, M und 2M als das Modulusprodukt auszuwählen, und – der Partialproduktgenerator einen Teil des n-Bit-Multiplikanden A liest, um einen der Werte –2A, –A, 0, +A und +2A als das Partialprodukt auszuwählen.
  25. Operationseinheit nach Anspruch 23 oder 24, weiter dadurch gekennzeichnet, dass die Multipliziereinheit die Montgomery-Multiplikationsoperation iterativ ausführt, bis der Multiplikand, der Multiplizierwert und der Moduluswert aus dem Speicher ausgelesen werden.
  26. Operationseinheit, insbesondere nach einem der Ansprüche 23 bis 25, gekennzeichnet durch einen Multiplizierer zur sequentiellen Durchführung von Einheitsmultiplikationsoperationen (n/c)·(n/c) Mal für einen n-Bit-Multiplikanden bestehend aus n/c Bitstücken, eine n-Bit-Multiplizierzahl bestehend aus n/c Bitstücken, eine n-Bit-Moduluszahl bestehend aus n/c Bitstücken sowie erweiterte Stücke der Multiplizierzahl und der Moduluszahl, wobei n und c positive ganze Zahlen mit n > c sind.
  27. Operationseinheit nach Anspruch 26, weiter dadurch gekennzeichnet, dass die Multipliziereinheit eine solche nach einem der Ansprüche 1 bis 22 ist.
  28. Operationseinheit nach Anspruch 26 oder 27, weiter dadurch gekennzeichnet, dass die Multipliziereinheit Einheitsmultiplikationsoperationen für mehrere Zeilen ausführt, um Multiplikationsresultate am Ende jeder Zeile zu erzeugen, wobei die Multiplikationsresultate für alle Zeilen mit Ausnahme der letzten Zeile eine Bitlänge von n + 2 Bit haben.
  29. Operationseinheit nach Anspruch 28, weiter dadurch gekennzeichnet, dass das Multiplikationsresultat für die letzte Zeile eine Bitlänge von n + 1 Bit hat.
  30. Operationseinheit nach einem der Ansprüche 23 bis 29, weiter dadurch gekennzeichnet, dass der Multiplikand, die Multiplizierzahl und/oder die Moduluszahl eine Bitlänge von n haben und n ein ganzzahliges Vielfaches einer Stückbitlänge c ist.
  31. Operationseinheit nach Anspruch 30, weiter dadurch gekennzeichnet, dass die Multipliziereinheit den Multiplikanden, die Multiplizierzahl und die Moduluszahl in einem jeweiligen Zyklus einer Einheitsmultiplikationsoperation mit einer Anzahl c' von Bits verarbeitet, wobei c' eine Bitlänge eines erweiterten Bitstücks des Multiplikanden, der Multiplizierzahl und der Moduluszahl bezeichnet, mit c' = c + k, wobei k eine ganze Zahl ist.
  32. Operationseinheit nach Anspruch 31, weiter dadurch gekennzeichnet, dass ein Datenpfad (100) in der Multipliziereinheit entsprechend der erweiterten Bitstücklänge c' bemessen ist.
  33. Operationseinheit nach einem der Ansprüche 23 bis 32, weiter dadurch gekennzeichnet, dass die Multipliziereinheit den Multiplizierwert vom Speicher als einen Block von w Bits liest, die in einem Register gespeichert sind, das mit einer Länge von w Bit bemessen ist, wobei w eine Wortlänge repräsentiert, den im w-Bit-Register gespeicherten Multiplizierwert sequentiell mit jeweils d Bits verarbeitet, wobei d eine Radixlänge repräsentiert, und die nächsten w Bits des Multiplizierwerts nach Verarbeiten der im w-Bit-Register gespeicherten w Bits aus dem Speicher liest.
  34. Operationseinheit nach einem der Ansprüche 23 bis 33, weiter dadurch gekennzeichnet, dass die Multipliziereinheit eine Steuereinheit aufweist, die ein Zwangspartialproduktsteuersignal erzeugt.
  35. Operationseinheit nach Anspruch 34, weiter dadurch gekennzeichnet, dass der Partialproduktgenerator, wenn das Zwangspartialproduktsteuersignal einen ersten Wert annimmt, ein Partialproduktauswahlsignal und ein Partialproduktfreigabesignal von drei Bits (B0, B1, BR) der momentanen Eingabebits der Multipliziereinheit erzeugt und einen der Werte A, 2A, –A, –2A und 0 als das Partialprodukt basierend auf den Eingabebits des Multiplikanden A auswählt.
  36. Operationseinheit nach Anspruch 34 oder 35, weiter dadurch gekennzeichnet, dass der Partialproduktgenerator, wenn das Zwangspartialproduktsteuersignal einen zweiten Wert annimmt, den Multiplikanden A als das Partialprodukt auswählt, um eine normale Restzahl zu erhalten.
  37. Operationseinheit nach einem der Ansprüche 34 bis 36, weiter dadurch gekennzeichnet, dass der Partialproduktgenerator, wenn das Zwangspartialproduktsteuersignal einen dritten Wert annimmt, den Wert –A als das Partialprodukt basierend auf den Multiplikanden A auswählt.
  38. Operationseinheit nach einem der Ansprüche 34 bis 37, weiter dadurch gekennzeichnet, dass das Zwangspartialproduktsteuersignal in einem Anfangswertkorrekturzyklus des Akkumulators einen vierten Wert annimmt und der Partialproduktgenerator in diesem Fall "0" als das Partialprodukt auswählt.
  39. Operationseinheit nach einem der Ansprüche 23 bis 38, weiter dadurch gekennzeichnet, dass die Multipliziereinheit iterative Partialproduktdaten (SPPI) in Reaktion auf Übertragwerte, Summenwerte und Niedrigwerte, die im Akkumulator gespeichert sind, sowie in Reaktion auf das Partialprodukt und auf ein Schiebesteuersignal als Rückkopplungseingabe des Akkumulators erzeugt.
  40. Operationseinheit nach einem der Ansprüche 23 bis 39, weiter dadurch gekennzeichnet, dass die Multipliziereinheit eine Steuereinheit zur Erzeugung eines Zwangsmodulusproduktsteuersignals aufweist.
  41. Operationseinheit nach Anspruch 40, weiter dadurch gekennzeichnet, dass der Modulusproduktgenerator, wenn das Zwangsmodulusproduktsteuersignal einen ersten Wert annimmt, ein Modulusproduktauswahlsignal zum Auswählen einer der Werte –M, 0, M und 2M aus den iterativen Partialproduktdaten (SPPI) und ei nes zweitniedrigsten Stellenwertes des Moduluswertes (M) erzeugt.
  42. Operationseinheit nach Anspruch 40 oder 41, weiter dadurch gekennzeichnet, dass das Zwangsmodulusproduktsteuersignal in einem Anfangswertkorrekturzyklus des Akkumulators einen zweiten Wert annimmt.
  43. Operationseinheit nach Anspruch 42, weiter dadurch gekennzeichnet, dass der Modulusproduktgenerator, wenn das Zwangsmodulusproduktsteuersignal den zweiten Wert annimmt, ein vorheriges Zeilenresultat als das Modulusprodukt auswählt.
  44. Operationseinheit nach einem der Ansprüche 40 bis 43, weiter dadurch gekennzeichnet, dass das Modulusproduktauswahlsignal unter Bezugnahme auf einen Wert QI erzeugt wird, wenn das Zwangsmodulusproduktsteuersignal einen dritten Wert annimmt.
  45. Operationseinheit nach einem der Ansprüche 42 bis 44, weiter dadurch gekennzeichnet, dass das Zwangsmodulusproduktsteuersignal in den übrigen Zyklen mit Ausnahme des Anfangswertkorrekturzyklus einen vierten Wert annimmt.
  46. Operationseinheit nach einem der Ansprüche 23 bis 45, weiter dadurch gekennzeichnet, dass der Multiplikand, der Multiplizierwert und der Moduluswert in einer Länge von jeweils c' Bits für die Einheitsmultiplikationsoperation benutzt werden, die (n/c)·(n/c) Mal für alle Operationszyklen ausgeführt wird, wobei die Multipliziereinheit iterativ den n-Bit-Multiplikanden und die n-Bit-Moduluszahl aus dem Speicher auf einer w-Bit-Basis liest, jeweils die w Bits in einem c'-Bit-Register speichert, das in c'-Bit-Länge bemessen ist, und jeweils die c' Bits des c'-Bit-Registers insgesamt verarbeitet.
  47. Operationseinheit nach einem der Ansprüche 23 bis 46, weiter dadurch gekennzeichnet, dass das Modulusregister und das Multiplikandenregister Bits mit einer erweiterten momentanen Eingabestücklänge c' speichern und jeweils eine Mehrzahl von Subregistern sowie ein 1-Bit-Vorzeichenregister zum selektiven Laden eines neuen Wertes in Reaktion auf ein Taktsignal oder ein Ladefreigabesignal aufweisen.
  48. Operationseinheit nach einem der Ansprüche 23 bis 47, weiter dadurch gekennzeichnet, dass das Multiplizierwertregister Bits mit einer momentanen Eingabewortlänge w des Multiplizierwerts speichert und in einer entsprechenden Bitlänge ausgelegt ist und in Reaktion auf ein Taktsignal oder ein Steuersignal Daten um eine oder mehrere Stellen nach rechts verschiebt oder einen neuen Wert lädt.
  49. Akkumulatoreinheit, insbesondere für eine Multipliziereinheit nach einem der Ansprüche 1 bis 22, gekennzeichnet durch – eine Mehrzahl von Komprimierern (610 bis 617), die zum Betrieb in einem Übertragbehaltaddiermodus ausgelegt sind und jeweils ein Modulusprodukt, ein Partialprodukt, einen ersten Wert und einen zweiten Wert empfangen und eine zugehörige nächste Summe, einen zugehörigen nächsten Übertrag und einen zugehörigen nächsten, niedrigeren Wert erzeugen, – ein Summenregister zum Empfangen der jeweiligen nächsten Summe von je einem der Komprimierer, um eine entsprechende aktualisierte momentane Summe abzugeben, – ein Übertragregister zum Empfangen des zugehörigen nächsten Übertrags vom jeweiligen Komprimierer, um einen entsprechenden aktualisierten, momentanen Übertrag abzugeben, und – ein Niederwertregister zum Empfangen des zugehörigen nächsten niedrigeren Wertes vom jeweiligen Komprimierer, um einen entsprechenden aktualisierten, momentanen niedrigeren Wert abzugeben.
  50. Akkumulatoreinheit nach Anspruch 49, weiter dadurch gekennzeichnet, dass der jeweilige Komprimierer die nächste Summe, den nächsten Übertrag und den nächsten niedrigeren Wert als den ersten und den zweiten Wert in einem Zyklus nach einem Anfangswertkorrekturzyklus der Akkumulatoreinheit empfängt.
  51. Akkumulatoreinheit nach Anspruch 50, weiter dadurch gekennzeichnet, dass der jeweilige Komprimierer eine Summe von einem um zwei Bitpositionen höheren Komprimierer und einen Übertrag von einem um eine Bitposition höheren Komprimierer als den ersten und den zweiten Wert in allen Betriebszyklen mit Ausnahme des Zyklus nach dem Anfangswertkorrekturzyklus der Akkumulatoreinheitempfängt.
  52. Akkumulatoreinheit nach einem der Ansprüche 49 bis 51, weiter dadurch gekennzeichnet, dass – eine Summe vom bitstellenmäßig niedrigsten Komprimierer einem ersten Volladdierer zugeführt wird, – ein Übertrag des niedrigsten Komprimierers, eine Summe eines zweitniedrigsten Komprimierers und ein Übertrag des ersten Volladdierers einem zweiten Volladdierer zugeführt werden und – die Summe des ersten Volladdierers sowie ein Übertrag und eine Summe des zweiten Volladdierers den nächsten niedrigeren Wert repräsentieren.
  53. Akkumulatoreinheit nach einem der Ansprüche 50 bis 52, weiter gekennzeichnet durch eine Mehrzahl von Multiplexern, welche den ersten und den zweiten Wert in Reaktion auf ein Signal auswählen, das einen Zyklus nach dem Anfangswertkorrekturzyklus der Akkumulatoreinheit bezeichnet.
  54. Akkumulatoreinheit nach einem der Ansprüche 49 bis 53, weiter dadurch gekennzeichnet, dass das Modulusprodukt aus einer n-Bit-Moduluszahl und das Partialprodukt aus einem n-Bit-Multiplikanden und einem n-Bit-Multiplizierwert erzeugt werden, wobei das Partialprodukt und das Modulusprodukt jeweils eine Länge von c + k + 2 = c' + 2 Bit haben, mit k als einem ganzzahligen Vielfachen von acht, c als einer Stückbitlänge, c' als einer Bitlänge eines erweiterten Zahlenbitstücks und n als einem ganzzahligen Vielfachen von c.
  55. Akkumulatoreinheit nach Anspruch 54, weiter dadurch gekennzeichnet, dass mindestens eine Anzahl von c + k + 5 = c' + 5 Komprimierer vorgesehen sind, die seriell verschaltet sind.
  56. Akkumulatoreinheit nach einem der Ansprüche 49 bis 55, weiter dadurch gekennzeichnet, dass der jeweilige Komprimierer ein 4:2-Komprimierer ist.
  57. Akkumulatoreinheit nach einem der Ansprüche 49 bis 56, weiter dadurch gekennzeichnet, dass der jeweilige Komprimierer zwei Volladdierer umfasst.
  58. Akkumulatoreinheit nach einem der Ansprüche 49 bis 57, weiter dadurch gekennzeichnet, dass ein niedrigster der mehreren Komprimierer ein invertiertes Signal des Partialprodukts oder ein invertiertes Signal des Modulusprodukts empfängt.
DE200510010764 2004-03-02 2005-03-02 Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit Withdrawn DE102005010764A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020040013855A KR20050088506A (ko) 2004-03-02 2004-03-02 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
KR10-2004-0013855 2004-03-02

Publications (1)

Publication Number Publication Date
DE102005010764A1 true DE102005010764A1 (de) 2005-09-29

Family

ID=34909984

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510010764 Withdrawn DE102005010764A1 (de) 2004-03-02 2005-03-02 Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit

Country Status (6)

Country Link
US (1) US7805478B2 (de)
JP (1) JP4870932B2 (de)
KR (1) KR20050088506A (de)
CN (1) CN1702613A (de)
DE (1) DE102005010764A1 (de)
FR (1) FR2867579B1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130101557A1 (en) * 2009-12-31 2013-04-25 Industry-University Cooperation Foundation Hanyang University Recombinant Adenovirus Having Anti-Angiogenesis Activity

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100458031B1 (ko) * 2003-03-14 2004-11-26 삼성전자주식회사 몽고메리 유형의 모듈라 곱셈 장치 및 방법
US8073892B2 (en) * 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
DE102007014808A1 (de) * 2007-03-28 2008-10-02 Texas Instruments Deutschland Gmbh Multiplizier- und Multiplizier- und Addiereinheit
CA2701855C (en) * 2007-11-02 2016-10-11 Certicom Corp. Signed montgomery arithmetic
KR100946256B1 (ko) * 2007-12-26 2010-03-08 대구대학교 산학협력단 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
KR101590322B1 (ko) * 2009-05-15 2016-02-19 삼성전자주식회사 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
KR20110105555A (ko) * 2010-03-19 2011-09-27 삼성전자주식회사 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
KR101929984B1 (ko) * 2012-05-17 2018-12-18 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
KR101925868B1 (ko) 2012-05-17 2018-12-06 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
CN103645883A (zh) * 2013-12-18 2014-03-19 四川卫士通信息安全平台技术有限公司 基于fpga的高基模乘器
US9535656B2 (en) * 2014-03-14 2017-01-03 International Business Machines Corporation Pipelined modular reduction and division
KR102132261B1 (ko) * 2014-03-31 2020-08-06 삼성전자주식회사 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기
CN103970504B (zh) * 2014-05-07 2017-03-29 广东顺德中山大学卡内基梅隆大学国际联合研究院 在ecc中实现位数自适应模乘运算的方法及模乘运算器
CN104090737B (zh) * 2014-07-04 2017-04-05 东南大学 一种改进型部分并行架构乘法器及其处理方法
KR102338863B1 (ko) 2015-09-09 2021-12-13 삼성전자주식회사 연산을 제어하기 위한 장치 및 방법
IL244842A0 (en) * 2016-03-30 2016-07-31 Winbond Electronics Corp Efficient non-modular multiplexing is protected against side-channel attacks
CN106528046B (zh) * 2016-11-02 2019-06-07 上海集成电路研发中心有限公司 长位宽时序累加乘法器
KR102594656B1 (ko) * 2016-11-25 2023-10-26 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
CN108241481B (zh) * 2016-12-26 2022-08-23 航天信息股份有限公司 一种适用于rsa算法的部分求余乘法器设备
CN108242994B (zh) * 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
CN108564169B (zh) * 2017-04-11 2020-07-14 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
RU2653263C1 (ru) * 2017-07-24 2018-05-07 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Арифметико-логическое устройство для умножения чисел по модулю
CN109857368B (zh) * 2018-12-20 2022-07-26 上海大学 一种位数众多、可分组、可重构的多值电子运算器及方法
CN109669670B (zh) * 2018-12-26 2020-09-22 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
JP7290178B2 (ja) * 2020-01-20 2023-06-13 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム
WO2021196096A1 (zh) * 2020-04-01 2021-10-07 华为技术有限公司 一种多模融合乘法器
CN112328962B (zh) * 2020-11-27 2021-12-31 深圳致星科技有限公司 矩阵运算优化方法、装置、设备和可读存储介质
CN112506468B (zh) * 2020-12-09 2023-04-28 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
CN113032845B (zh) * 2021-03-31 2022-02-11 郑州信大捷安信息技术股份有限公司 一种用于资源受限芯片的EdDSA签名实现方法和装置
CN113296733A (zh) * 2021-04-25 2021-08-24 阿里巴巴新加坡控股有限公司 数据处理方法以及装置
TWI802095B (zh) 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0294476A1 (de) 1986-12-30 1988-12-14 Hughes Aircraft Company N-bit-summenübertragsakkumulator
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
KR100257124B1 (ko) 1997-05-16 2000-05-15 문상재 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법
US6356636B1 (en) * 1998-07-22 2002-03-12 Motorola, Inc. Circuit and method for fast modular multiplication
GB2352309B (en) * 1999-07-21 2004-02-11 Advanced Risc Mach Ltd A system and method for performing modular multiplication
JP2002236581A (ja) * 2001-02-08 2002-08-23 Matsushita Electric Ind Co Ltd 演算回路、演算方法、及びプログラム記録媒体
FR2822260A1 (fr) 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
US20020172355A1 (en) * 2001-04-04 2002-11-21 Chih-Chung Lu High-performance booth-encoded montgomery module
JP2003216411A (ja) * 2002-01-23 2003-07-31 Sony Corp 多倍長演算処理装置およびicデバイス
JP2003216034A (ja) * 2002-01-23 2003-07-30 Ail Kk べき乗剰余演算器
JP2004258141A (ja) * 2003-02-24 2004-09-16 Fujitsu Ltd モンゴメリ乗算剰余の多倍長演算のための演算装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130101557A1 (en) * 2009-12-31 2013-04-25 Industry-University Cooperation Foundation Hanyang University Recombinant Adenovirus Having Anti-Angiogenesis Activity

Also Published As

Publication number Publication date
US7805478B2 (en) 2010-09-28
JP4870932B2 (ja) 2012-02-08
FR2867579A1 (fr) 2005-09-16
FR2867579B1 (fr) 2008-04-18
KR20050088506A (ko) 2005-09-07
JP2005250481A (ja) 2005-09-15
US20050198093A1 (en) 2005-09-08
CN1702613A (zh) 2005-11-30

Similar Documents

Publication Publication Date Title
DE102005010764A1 (de) Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit
DE60105788T2 (de) AES Verschlüsselungsschaltung
DE69632978T2 (de) Multi-Operand-Addierer, der Parallelzähler benutzt
DE60318494T2 (de) Verfahren, einrichtung und system zur durchführung von kalkulationsoperationen
EP0239749B1 (de) Kryptographie-Verfahren und Kryptographie-Prozessor zur Durchführung des Verfahrens
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
US8793300B2 (en) Montgomery multiplication circuit
DE60021623T2 (de) Multiplizierer und verschiebungsanordnung mit benutzung von vorzeichenzifferzahlen darstellung
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
US4891781A (en) Modulo arithmetic processor chip
US8959134B2 (en) Montgomery multiplication method
DE212007000102U1 (de) Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
US6061706A (en) Systolic linear-array modular multiplier with pipeline processing elements
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
GB2287331A (en) Electronic multiplying and adding apparatus.
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
US20090089350A1 (en) Modular reduction operator
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE10260660B3 (de) Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
Katti et al. Low complexity multiplication in a finite field using ring representation
DE60316342T2 (de) Multiplizierer mit nachschlagetabellen
Hilscher et al. Discrete optimal control: second order optimality conditions
Lee et al. Area-Delay Efficient Digit-Serial Multiplier Based on $ k $-Partitioning Scheme Combined With TMVP Block Recombination Approach
US11829731B2 (en) Modular multiplication circuit and corresponding modular multiplication method
KR100632928B1 (ko) 모듈라 곱셈장치

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8172 Supplementary division/partition in:

Ref document number: 102005063456

Country of ref document: DE

Kind code of ref document: P

Q171 Divided out to:

Ref document number: 102005063456

Country of ref document: DE

Kind code of ref document: P

R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee