DE69802016T2 - Verfahren und Anordnung zur Durchführung ganzzahliger Divisionsoperationen mit einem modulo-arithmetischen Koprozessor - Google Patents

Verfahren und Anordnung zur Durchführung ganzzahliger Divisionsoperationen mit einem modulo-arithmetischen Koprozessor

Info

Publication number
DE69802016T2
DE69802016T2 DE69802016T DE69802016T DE69802016T2 DE 69802016 T2 DE69802016 T2 DE 69802016T2 DE 69802016 T DE69802016 T DE 69802016T DE 69802016 T DE69802016 T DE 69802016T DE 69802016 T2 DE69802016 T2 DE 69802016T2
Authority
DE
Germany
Prior art keywords
register
bits
output
input
quotient
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69802016T
Other languages
English (en)
Other versions
DE69802016D1 (de
Inventor
Bernard Plessier
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Application granted granted Critical
Publication of DE69802016D1 publication Critical patent/DE69802016D1/de
Publication of DE69802016T2 publication Critical patent/DE69802016T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/535Dividing only
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • Die Erfindung betrifft ein Verfahren zur Durchführung ganzzahliger Divisionsoperationen mit einem modulo-arithmetischen Koprozessor. Die modulo-arithmetischen Koprozessoren werden bei Verschlüsselungsschaltkreisen und/oder Entschlüsselungsschaltkreisen verwendet. Die Verwendung dieser Koprozessoren ermöglicht die erhebliche Beschleunigung von Verschlüsselungs- und/oder Entschlüsselungsoperationen durch Anwendung des Montgomery-Verfahrens. Derartige Systeme werden ausgiebig genutzt bei Chipkarten, die insbesondere auf dem RSA-Verfahren beruhen.
  • Der RSA-Code ist eine mathematische Codierung, bei der eine binäre Nachricht M mit n Bits wie eine ganze Zahl mit n Bits behandelt wird. Die Verschlüsselung und Entschlüsselung wird durch Modulo-Exponentierung bewirkt:
  • - Verschlüsselung: M' = Me mod N,
  • - Entschlüsselung: M = M'd mod N.
  • M' ist die verschlüsselte Nachricht, die n Bits lang ist. N ist eine ganze Zahl mit n Bits, so daß N = p · q gilt, wobei p und q zwei Primzahlen sind. Die Exponenten e und d sind zwei ganze Zahlen, für die (e d) mod »(N) = 1 gilt, wobei 1(N) = (p - 1) (q - 1). Eine solche Codierung erfordert daher zwei Schlüssel, einen für die Verschlüsselung, genannt öffentlicher Schlüssel (e und N), und einen anderen zur Entschlüsselung, genannt Geheimschlüssel (d und N).
  • Um den Geheimschlüssel aus dem öffentlichen Schlüssel ableiten zu können, braucht man nur die folgende Operation durchzuführen: d = (1 + K · Φ(N))/e, wobei K ein ganzzahliger Koeffizient ungleich Null ist. Die Sicherheit einer solchen Codierung beruht auf der Kompliziertheit der durchzuführenden Operationen. Um den Geheimschlüssel zu finden, muß N in Primzahlen zerlegt werden, was sehr viel mehr Zeit beansprucht, wenn die Zahlen p und q groß sind (in der Praxis haben p und q einige hundert Bits). Tatsächlich muß sukzessive die Teilbarkeit von N durch alle ganzen Zahlen mit 2 bis n/2 Bits geprüft werden.
  • Den Geheimschlüssel aus dem öffentlichen Schlüssel abzuleiten, ist dennoch unter der Bedingung möglich, daß man dafür mehrere hundert Jahre Zeit hat. Nichtsdestotrotz können bei verschiedenen Anwendungen des RSA-Verfahrens Änderungen der Schlüssel notwendig werden, die eine Berechnung der Schlüssel erforderlich machen. Solche Berechnungen machen Divisionen von großen Zahlen notwendig.
  • Bei den Chipkarten wird für die Verschlüsselungsschaltkreise eine Mikroprozessor- Koprozessor-Architektur benötigt. Der Mikroprozessor ist vom klassischen Typ mit 8 oder 16 Bits. Der Koprozessor ist ein modulo-arithmetischer Koprozessor, der speziell für Berechnungen von großen Zahlen ausgelegt ist. Es ist aus EP-A-0 601 907 ein modulo-arithmetischer Koprozessor mit einer seriellen Architektur bekannt, die speziell für Chipkarten ausgelegt ist. Dieser spezielle Koprozessor diente als Basis für zahlreiche Verbesserungen und insbesondere als Basis für WO-A-9725668.
  • Diese Anmeldung offenbart eine mögliche Realisierung einer ganzzahligen Division mit dem modulo-arithmetischen Koprozessor. Jedoch wird für die Ausführung der Division eine Invertierung von Bits bei Worten großer Länge beim Dividenden (Zähler) und beim Quotienten notwendig. Die Invertierung wird durch den Prozessor durchgeführt, der mit dem Koprozessor zusammenarbeitet, und erfordert einerseits viel Speicherplatz und andererseits eine erhebliche Rechenzeit.
  • Erfindungsgemäß wird die Lösung dieser Probleme des Standes der Technik angestrebt. Die Erfindung schafft einen neuen Divisionsschaltkreis, der in dem moduloarithmetischen Koprozessor integrierbar ist, der in EP-A-0 601 907 offenbart ist, bei dem eine interne Invertierung der Daten vorgesehen ist.
  • Ziel der Erfindung ist ein Verfahren für die Durchführung einer ganzzahligen Division in einem modulo-arithmetischen Koprozessor, wie es in Anspruch 1 definiert ist.
  • Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der abhängigen Ansprüche.
  • Ein weiterer Aspekt der Erfindung ist ein modulo-arithmetischer Koprozessor, wie er in Anspruch 8 definiert ist.
  • Vorzugsweise wird in dem Zähler-Register Bt-mal eine Verschiebung um Bt - 1 Bits vorgenommen, wobei sein Eingang mit seinem Ausgang verbunden ist und der Inhalt des Zähler-Registers Bit für Bit nach jeder der Verschiebungen um Bt - 1 Bits ausgegeben wird. Bei dem Quotienten-Register wird Bt-mal eine Verschiebung um Bt - 1 Bits vorgenommen, wobei bei der ersten Verschiebung ein Bit des Quotienten S eingegeben wird und der Ausgang des Quotienten-Registers verbunden wird mit dem Eingang des Quotienten-Registers während der Bt - 2 folgenden Verschiebungen.
  • In einer Ausführungsform empfangen die Zähler- und Quotienten-Register nacheinander jeweils Worte mit Bt Bits des Zählers A und die a - n + 1 Worte mit Bt Bits des Quotienten S, wobei jedes der Worte ein geringeres Gewicht als das vorher empfangene Wort hat. Bei einer anderen Ausführungsform empfangen mehrere Zähler- und Quotienten-Register mit Bt Bits jeweils ein Wort mit Bt Bits des Zählers A und des Quotienten S.
  • Vorzugsweise umfaßt der Koprozessor einen Zähler-Multiplexer und/oder einen Quotienten-Multiplexer, um den Ausgang des Zähler-Registers und/oder des Quotienten-Registers jeweils mit dem Eingang des Zähler-Registers und/oder des Quotienten-Registers zu verbinden, um die Ausgabereihenfolge von Bits in dem Zähler- Register und/oder Quotienten-Register durch Rotation des Inhalts des Zähler-Registers und/oder Quotienten-Registers umzudrehen.
  • Die Erfindung sowie weiter Besonderheiten und Vorteile ergeben sich aus der folgenden Beschreibung, die sich auf die beigefügten Zeichnungen bezieht.
  • Fig. 1 zeigt den Modulo-Koprozessor, erfindungsgemäß modifiziert.
  • Fig. 2 zeigt den erfindungsgemäßen Divisionsschaltkreis.
  • Fig. 3 zeigt ein für die Erfindung verbessertes Register.
  • Der Koprozessor 1 in Fig. 1 umfaßt:
  • - ein erstes bis viertes Register 2 bis 5, wobei die Register 2 bis 5 Schieberegister für das k-fache Verschieben von Bt Bits sind und jeweils einen seriellen Eingang und einen seriellen Ausgang umfassen;
  • - einen ersten bis vierten Multiplexer 6 bis 9 jeweils mit einem ersten bis vierten Eingang und einem Ausgang, wobei der Ausgang jedes des ersten bis vierten Multiplexers 6 bis 9 jeweils mit dem Eingang des ersten bis vierten Registers 2 bis 5 verbunden ist, der erste Eingang von jedem des ersten bis vierten Multiplexer 6 bis 9 jeweils mit dem Ausgang des ersten bis vierten Register 2 bis 5 verbunden ist, der zweite Eingang der Multiplexer 6 bis 9 eine logische "0" empfängt, der dritte Eingang der Multiplexer 6 bis 9 mit einem seriellen Eingangsanschluß Din verbunden ist;
  • - einen ersten und zweiten Subtraktionsschaltkreis 10 und 11 mit jeweils einem ersten und zweiten Eingang und einem Ausgang, wobei der erste Eingang des ersten und zweiten Subtraktionsschaltkreises 10 und 11 jeweils verbunden ist mit dem Ausgang des zweiten und dritten Registers 3 und 4;
  • - einen fünften und sechsten Multiplexer 12 und 13, die jeweils einen Ausgang sowie einen ersten und einen zweiten Eingang für Bits und einen Auswahleingang aufweisen, wobei der Ausgang des fünften und sechsten Multiplexers 12 und 13 jeweils mit dem zweiten Eingang des ersten und zweiten Subtraktionsschaltkreises 10 und 11 verbunden ist, der erste Eingang für Bits der Multiplexer 12 und 13 eine logische "0" empfängt;
  • - einen siebten Multiplexer 14 mit einem ersten und zweiten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des vierten Registers 5, der zweite Eingang eine logische "1" empfängt und der Ausgang mit den zweiten Eingängen für Bits von dem fünften und sechsten Multiplexer 12 und 13 verbunden ist;
  • - einen achten Multiplexer 15 mit einem ersten bis vierten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des ersten Subtraktionsschaltkreises 10, der zweite Eingang eine logische "1" empfängt und der dritte Eingang eine logische "0" empfängt;
  • - einen neunten Multiplexer 16 mit einem ersten bis fünften Eingang und einem Ausgang, wobei der erste Eingang mit dem Ausgang des achten Multiplexers 15 verbunden ist, der zweite Eingang mit dem Ausgang des ersten Registers 2 verbunden ist, der dritte Eingang eine logische "0" empfängt, der vierte Eingang mit dem Eingangsanschluß Din verbunden ist;
  • - ein fünftes Register 17 für das Verschieben von Bt Bits mit einem seriellen Eingang, einem seriellen Ausgang und einem parallelen Ausgang, wobei der serielle Eingang mit dem Ausgang des neunten Multiplexer 16 verbunden ist, der serielle Ausgang mit dem fünften Eingang des Multiplexers 16 und dem vierten Eingang des achten Multiplexers 16 verbunden ist;
  • - ein sechstes Register 18 für Bt Bits mit einem parallelen Eingang und einem parallelen Ausgang, wobei der parallele Eingang verbunden ist mit dem parallelen Ausgang des fünften Registers 17;
  • - einen ersten Multiplikationsschaltkreis 19 mit einem seriellen Eingang, einem parallelen Eingang und einem seriellen Ausgang, wobei der serielle Eingang mit dem Ausgang des achten Multiplexers 15 verbunden ist, der parallele Eingang mit dem parallelen Ausgang des sechsten Registers 18 verbunden ist;
  • - einen ersten Additionsschaltkreis 20 mit einem ersten und einem zweiten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des zweiten Subtraktionsschaltkreises 11, der zweite Eingang mit dem seriellen Ausgang des Multiplikationsschaltkreises 19 verbunden ist;
  • - einen zehnten Multiplexer 21 mit einem ersten bis dritten Eingang und einem Ausgang, wobei der erste Eingang mit dem Eingangsanschluß Din verbunden ist;
  • - ein siebtes Register 22 für das Verschieben von Bt Bits mit einem seriellen Eingang, einem seriellen Ausgang und einem parallelen Ausgang, wobei der serielle Eingang mit dem Ausgang des zehnten Multiplexers 21 verbunden ist, der serielle Ausgang mit dem zweiten Eingang des Multiplexers 21 verbunden ist;
  • - ein achtes Register 23 für das Verschieben von Bt Bits mit einem seriellen Eingang und einem parallelen Ausgang;
  • - einen elften Multiplexer 24 mit einem ersten und zweiten parallelen Eingang und einem parallelen Ausgang, wobei der erste parallele Eingang mit dem parallelen Ausgang des siebten Registers 22 verbunden ist, der zweite parallele Eingang mit dem parallelen Ausgang des achten Registers 23 verbunden ist;
  • - ein neuntes Register 25 für Bt Bits mit einem parallelen Eingang und einem parallelen Ausgang, wobei der parallele Eingang mit dem parallelen Ausgang des elften Multiplexers 24 verbunden ist;
  • - einen zweiten Multiplikationsschaltkreis 26 mit einem seriellen Eingang, einem parallelen Eingang und einem seriellen Ausgang, wobei der parallele Eingang verbunden ist mit dem parallelen Ausgang des neunten Registers 25, der serielle Ausgang verbunden ist mit dem seriellen Eingang des achten Registers 23;
  • - einen zwölften Multiplexer 27 mit einem ersten bis dritten Eingang und einem Ausgang, wobei der erste Eingang eine logische "0" empfängt, der zweite Eingang verbunden ist mit dem Ausgang des ersten Additionsschaltkreises 20, der Ausgang verbunden ist mit dem seriellen Eingang des zweiten Multiplikationsschaltkreises 26;
  • - einen ersten Verzögerungsschaltkreis 28 mit einem Eingang und einem Ausgang, wobei der Eingang mit dem Ausgang des ersten Additionsschaltkreises 20 verbunden ist;
  • - einen zweiten Additionsschaltkreis 29 mit einem ersten und einem zweiten Eingang, einem Ergebnisausgang und einem Überlaufausgang, wobei der erste Eingang mit dem seriellen Ausgang des zweiten Multiplikationsschaltkreises 26 verbunden ist, der zweite Eingang mit dem Ausgang des ersten Verzögerungsschaltkreises 28 verbunden ist;
  • - einen dreizehnten und einen vierzehnten Multiplexer 30 und 31 jeweils mit einem ersten und einem zweiten Eingang und einem Ausgang, wobei die ersten Eingänge der Multiplexer 30 und 31 mit dem Ausgang des achten Multiplexers 15 verbunden sind, der zweite Eingang des dreizehnten Multiplexers 30 mit dem Überlaufausgang des zweiten Additionsschaltkreises 29 verbunden ist, der zweite Eingang des vierzehnten Multiplexers 31 mit dem Ergebnisausgang des zweiten Additionsschaltkreises 29 verbunden ist;
  • - einen zweiten Verzögerungsschaltkreis 32 mit einem Eingang und einem Ausgangs, wobei der Eingang mit dem Ausgang des siebten Multiplexers 14 verbunden ist, der Ausgang mit dem dritten Eingang des zwölften Multiplexers 27 verbunden ist;
  • - einen dritten Verzögerungsschaltkreis 33 mit einem Eingang und einem Ausgang, wobei der Eingang mit dem Ausgang des zweiten Verzögerungsschaltkreises 32 verbunden ist;
  • - einen fünfzehnten Multiplexer 34 mit einem ersten und zweiten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des siebten Multiplexers 14, der zweite Eingang verbunden ist mit dem Ausgang des dritten Verzögerungsschaltkreises 33;
  • - einen dritten Subtraktionsschaltkreis 35 mit einem ersten und zweiten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des vierzehnten Multiplexers 31, der zweite Eingang verbunden ist mit dem Ausgang des fünfzehnten Multiplexers 34;
  • - einen Detektorschaltkreis 36, der zum Erfassen und Abspeichern von Überlaufwerten dient, wobei der Detektorschaltkreis 36 einen ersten und zweiten Eingang und einen ersten und zweiten Ausgang aufweist, der erste Eingang verbunden ist mit dem Ausgang des dreizehnten Multiplexers 30, der zweite Eingang verbunden ist mit dem Ausgang des dritten Subtraktionsschaltkreises 35, der erste Ausgang verbunden ist mit dem Auswahleingang des fünften Multiplexers 12 und dem dritten Eingang des zehnten Multiplexers 21, der zweite Ausgang verbunden ist mit dem Auswahleingang des sechsten Multiplexers 13;
  • - einen sechzehnten Multiplexer 37 mit einem ersten bis sechsten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des siebten Multiplexers 14, der zweite Eingang verbunden ist mit dem Ausgang des ersten Registers 2, der dritte Eingang verbunden ist mit dem Ausgang des achten Multiplexers 15, der vierte Eingang verbunden ist mit dem Ausgang des zweiten Subtraktionsschaltkreises 11, der fünfte Eingang verbunden ist mit dem seriellen Ausgang des fünften Registers 17, der sechste Eingang verbunden ist mit dem seriellen Ausgang des siebten Registers 22, der Ausgang verbunden ist mit einem Ausgangsanschluß Dout;
  • - einen siebzehnten Multiplexer 38 mit einem ersten bis dritten Eingang und einem Ausgang, wobei der erste Eingang verbunden ist mit dem Ausgang des sechzehnten Registers 37, der zweite Eingang verbunden ist mit dem ersten Ausgang des Detektorschaltkreises 36, der dritte Eingang verbunden ist mit dem Ausgang des vierzehnten Multiplexers 31, der Ausgang verbunden ist mit den vierten Eingängen des ersten bis vierten Multiplexers 6 bis 9.
  • Was die Umsetzung der verschiedenen Elemente des Koprozessors 1 sowie die Funktion dieses Koprozessors 1 in bezug auf die Modulo-Berechnungen betrifft, so wird der Fachmann auf die Anmeldungen EP-A-0 601 907, EP-A-0 712 070, EP-A-0 712 071, EP-A-0 712 072, EP-A-0 784 262, EP-A-0 785 503 verwiesen. Die Modifikationen des Koprozessors erfordern jedoch eine geringfügige Anpassung der Abfolge im Koprozessor in bezug auf den Stand der Technik, ändern jedoch nicht seine globale Funktion in bezug auf die modulo-arithmetischen Operationen.
  • Es sei wiederholt, daß k und Bt ganze Zahlen sind. Bt entspricht der Größe der Arbeitsbasis für die Umsetzung von Modulo-Operationen und beträgt 32 beim obengenannten Stand der Technik. Es sei ebenfalls wiederholt, daß die Daten in die Register geladen werden, wobei das Bit mit dem höchsten Gewicht auf der Seite des seriellen Eingangs und das Bit mit dem geringsten Gewicht auf der Seite des seriellen Ausgangs angeordnet ist.
  • Es sei darauf hingewiesen, daß die Modifikationen sich wesentlich auf den Pfad der Daten auswirken, so daß größere Kombinationen ermöglicht werden, und auf das Hinzufügen eines seriellen Ausgangs beim fünften und siebten Register 17 und 22.
  • Um die Funktion des Koprozessors 1 bei der Umsetzung einer ganzzahligen Division zu erläutern wird auf das Schema in Fig. 2 verwiesen, das den gleichen Koprozessor 1 vereinfacht darstellt. In diesem Schema in Fig. 2 sind nur die Elemente, Verbindungen und Eingänge der Multiplexer gezeigt, die für das Umsetzen einer ganzzahligen Division verwendet werden. Die Erläuterungen im folgenden sind dadurch leichter zu verstehen, wobei Bezug auf Fig. 2 genommen wird, aber auch auf Fig. 1. Der Fachmann kann aus den Erläuterungen die adäquate Abfolge im Schaltkreis ableiten, so daß die beschriebenen Operationen durchgeführt werden können.
  • Man betrachte die ganzzahlige Division A / N, die man auch schreiben kann als A = S · N + B, wobei das Zeichen "/" die ganzzahlige Division bezeichnet und A eine ganze Zahl mit a · Bt Bits ist, die dem Zähler entspricht, und N eine ganze Zahl ungleich Null mit n · Bt Bits ist und dem Nenner entspricht und S eine ganze Zahl mit s · Bt Bits ist, die dem Quotienten entspricht, und B eine ganze Zahl mit b Bt Bits ist und dem Rest entspricht. a, b, n und s sind ganze Zahlen und legen die Anzahl der Worte mit Bt Bits ungleich Null fest, die notwendig sind, um jeweils A, B, N und S zu codieren. Am Anfang einer Division sind A und N bekannt.
  • Bevor eine Division durchgeführt wird, bestimmt der mit dem Koprozessor zusammenhängende Prozessor die Größen der Zahlen A und N, um die Werte a und n festzulegen. Wenn a und n bekannt sind, genügt es a und n zu vergleichen. Wenn man a < n findet, erhält man das offensichtliche Ergebnis B = A und S = 0, ohne den Koprozessor 1 zu benötigen. Wenn a n, so berechnet man die Größen von B und S : b = n und s = a - n + 1. Man verwendet daher den Koprozessor 1, um die Division durchzuführen.
  • Man gehe zunächst davon aus, daß das erste bis vierte Register 2 bis 5 eine feste Größe von k · Bt Bits hat.
  • Man unterscheidet zuallererst einen Fall, bei dem a &le; k: das Verfahren zur Umsetzung der ganzzahligen Division umfaßt die folgenden Schritte:
  • E0: Initialisierungsschritt der Daten: Die Daten A und N werden jeweils in das erste und vierte Register 2 und 5 geladen, das Laden erfolgt in irgendeiner Reihenfolge über den Anschluß Din und den ersten und vierten Multiplexer 6 und 9. Initialisierung von B und S durch Laden von Nullen in das zweite Register 3 und 4 über den zweiten und dritten Multiplexer 7 und 8.
  • E1: Initialisierungsschritt des Verfahrens: Die a · Bt Verschiebungen nach rechts werden in dem ersten Register 2 durchgeführt, wobei das erste Register über seinen Ausgang mit seinem Eingang verbunden ist unter Zwischenschaltung des ersten Multiplexers 6. Während der a · Bt Verschiebungen wird das a-te Wort mit Bt Bits über den neunten Multiplexer 16 in das fünfte Register 17 übertragen. Dann werden Bt - 1 Verschiebungen nach rechts in dem fünften Register 17 durchgeführt. Man initialisiert den ersten und dritten Subtraktionsschaltkreis 10 und 35 und den Detektorschaltkreis 36. Der erste Ausgang des Detektorschaltkreises zeigt eine logische "0" an, um eine Orientierung des Ausgangs des fünften Multiplexers 12 zu seinem ersten Eingang zu bewirken. Der zweite Ausgang des Detektorschaltkreises muß während der gesamten Dauer der Berechnung auf "0" bleiben, damit der sechste Multiplexer 13 permanent seinen Ausgang mit seinem ersten Eingang verbindet.
  • Der siebte Multiplexer 14 verbindet seinen Ausgang mit seinem ersten Eingang. Der dreizehnte und vierzehnte Multiplexer 30 und 31 verbinden ihre ersten Eingänge mit ihren Ausgängen. Der fünfzehnte Multiplexer 34 verbindet seinen Ausgang mit seinem ersten Eingang.
  • E2: Durchführung der Division: Man führt gleichzeitig die Schritte SE1 bis SE6 durch, die im folgenden definiert werden:
  • SB1: Man verschiebt um (k - 2) · Bt Bits den Inhalt des ersten Registers 2 nach rechts, wobei sein Eingang über den ersten Multiplexer 6 mit seinem Ausgang verbunden ist.
  • SB2: Man führt Bt-mal die Schritte SB1 bis SB6 durch, die im folgenden definiert sind:
  • SB1: Man verschiebt um ein Bit nach rechts das zweite und vierte Register 3 und 5, indem der achte Multiplexer 15 so geschaltet wird, daß das Bit am Ausgang des achten Multiplexers 15 das Bit am seriellen Ausgang des fünften Registers 17 ist. Man schaltet den zweiten, sechzehnten und siebzehnten Multiplexer 7, 37 und 38 so, daß das Bit am Ausgang des achten Multiplexers 15 in das zweite Registers 3 geladen wird. Parallel subtrahiert man in dem dritten Subtraktionsschaltkreis 35 das Bit mit dem geringsten Gewicht von N von dem Bit, das von dem fünften Register 17 ausgegeben wird. Wenn der erste Ausgang des Detektorschaltkreises eine logische "0" anzeigt, so zieht man Null von dem Bit, das von dem zweiten Register 3 ausgegeben wird, in dem ersten Subtraktionsschaltkreis ab. Wenn der erste Ausgang des Detektorschaltkreises eine logische "1" anzeigt, so subtrahiert man in dem ersten Subtraktionsschaltkreis 10 das Bit mit dem geringsten Gewicht von N von dem Bit, das von dem zweiten Register 3 ausgegeben wird.
  • SB2: Man verschiebt das zweite und vierte Register 3 und 5 um k · Bt - 1 Bits nach rechts, indem der achte Multiplexer 15 so geschaltet wird, daß das Bit am Ausgang dieses achten Multiplexers 15 gleich dem Bit wird, das an dem Ausgang des ersten Subtraktionsschaltkreises 10 anliegt. Man schaltet den zweiten und siebzehnten Multiplexer 7 und 38, so daß das Bit am Ausgang des achten Multiplexers 15 bei jeder Verschiebung in das zweite Register 3 geladen wird. Bei jeder Verschiebung subtrahiert man in dem dritten Subtraktionsschaltkreis 35 die Bits von N, die von dem vierten Register 5 ausgegeben werden, von den Bits, die von dem fünften Register 17 ausgegeben werden. Wenn der erste Ausgang des Detektorschaltkreises eine logische "0" anzeigt, subtrahiert man in dem ersten Subtraktionsschaltkreis 10 die Nullen von den Bits, die von dem zweiten Register 3 ausgegeben werden. Wenn der erste Ausgang des Detektorschaltkreises eine logische "1" anzeigt, subtrahiert man in dem ersten Subtraktionsschaltkreis 10 die Bits von N, die von dem vierten Register 5 ausgegeben werden, von den Bits, die von dem zweiten Register 3 ausgegeben werden.
  • SB3: Man schaltet den achten Multiplexer 15, um eine logische "0" am Ausgang zu erhalten. Dann erfaßt man und speichert man in dem Detektorschaltkreis 36 den Überlauf am Ausgang des dritten Subtraktionsschaltkreises 35. Der Detektorschaltkreis 36 zeigt an seinem ersten Eingang eine logische "0" an, wenn es einen Überlauf am Ausgang des dritten Subtraktionsschaltkreises 35 gibt (dieses entspricht dem Inhalt des zweiten Registers unterhalb von N). Der Detektorschaltkreis zeigt an seinem ersten Eingang eine logische "1" an, wenn es keinen Überlauf am Ausgang des dritten Subtraktionsschaltkreises 35 gibt (dies entspricht dem Inhalt des zweiten Registers oberhalb von N).
  • SB4: Man verschiebt den Inhalt des siebten Registers 22 um ein Bit nach rechts, wobei der zehnte Multiplexer 21 das Bit an seinen Ausgang leitet, das von dem ersten Ausgang des Detektorschaltkreises 36 kommt.
  • SB5: Man verschiebt den Inhalt des siebten Registers 22 um Bt - 2 Bits nach rechts, wobei sein Eingang über den zweiten Multiplexer 21 mit seinem Ausgang verbunden ist.
  • SB6: Man verschiebt den Inhalt des fünften Registers 17 um Bt - 1 Bits nach rechts, wobei sein Eingang über den neunten Multiplexer 16 mit seinem Ausgang verbunden ist.
  • SB3: Man verschiebt den Inhalt des ersten und fünften Registers 2 und 17 um Bt Bits nach rechts, wobei der Eingang des ersten Registers 2 über den ersten Multiplexer 6 mit seinem Ausgang verbunden ist und der Eingang des fünften Registers 17 über den neunten Multiplexer 16 mit dem Ausgang des ersten Registers 2 verbunden ist.
  • SE4: Man verschiebt den Inhalt des fünften Registers 17 um Bt - 1 Bits nach rechts, wobei sein Eingang über den neunten Multiplexer 16 mit seinem Ausgang verbunden ist.
  • SE5: Man verschiebt den Inhalt des dritten und vierten Registers 4 und 22 um Bt Bits nach rechts, wobei der Eingang des dritten Registers 4 über den dritten, sechzehnten und siebzehnten Multiplexer 8, 37 und 38 mit dem Ausgang des siebten Registers 22 verbunden ist.
  • SE6: Man verschiebt den Inhalt des dritten Registers 4 um (k - 2) · Bt Bits nach rechts, dessen Eingang über den dritten Multiplexer 8 mit seinem Ausgang verbunden ist.
  • E3: Man initialisiert den Detektorschaltkreis 36, um den fünften Multiplexer 12 auf seinen ersten Eingang zu schalten.
  • E4: Man gibt den Rest B der Division aus, indem man den Inhalt des zweiten Registers 3 um b · Bt Bits nach rechts verschiebt, wobei der Ausgang des zweiten Registers 3 über den ersten Subtraktionsschaltkreis und den achten und sechzehnten Multiplexer 15 und 37 mit dem Ausgangsanschluß Dout verbunden ist.
  • E5: Man verschiebt den Inhalt des dritten Registers 4 um Bt Bits nach rechts, dessen Eingang über den dritten Multiplexer 8 mit seinem Ausgang verbunden ist.
  • E6: Man gibt den Quotienten S der Division aus, indem man den Inhalt des dritten Registers 4 um (a - n + 1) · Bt Bits verschiebt, wobei der Ausgang des dritten Registers 4 über den sechzehnten Multiplexer 37 mit dem Ausgangsanschluß verbunden ist.
  • Der Fachmann kann die unterschiedlichen Schritte in der genannten Reihenfolge durchführen. Es ist jedoch von Vorteil, um die Rechenzeit zu verringern, bestimmte Schritte zu überlagern: Die Schritte SE1 und SE2 können gleichzeitig ablaufen; der Schritt SB6 kann während der Schritte SB2 oder SB3 ablaufen; die Schritte SB4 und SB5 können während des Ablaufs der Schritte SB 1 bis SB3 durchgeführt werden, die der folgenden Iteration entsprechen; der Schritt SE3 kann während des Schrittes SE2 nach Durchführung des Schrittes SE 1 ablaufen; der Schritt SE4 kann während des Schrittes SE2 nach Ausführung des Schrittes SE3 ablaufen; der Schritt SE6 kann während des Schrittes SE2 der folgenden Iteration ablaufen; der Schritt Es kann während des Schrittes E4 ablaufen.
  • Darüber hinaus sind die Schritte E0, E3, E4 und E6 nicht obligatorisch: Die Daten können bereits in dem Koprozessor 1 vorhanden sein, und die Initialisierung von B und S in dem zweiten und dritten Register 3 und 4 kann während der ersten Iteration von E2 erfolgen, wodurch der Schritt E0 überflüssig wird; der Quotient S oder der Rest kann in dem Koprozessor unmittelbar nach der Realisierung der Division genutzt werden, wodurch die Schritte E3, E4 und E6 zur Ausgabe der Ergebnisse überflüssig werden.
  • Die Durchführung der Division, die der Realisierung der Schritte E1, E2 und Es entspricht (durch Überlagerung der Schritte), benötigt Bt · (a · (k · Bt + 4 + x) + k) - 1 Taktzyklen, wobei x eine Zahl von Taktzyklen zur Synchronisation ist, die für die Verwaltung des Koprozessors notwendig ist.
  • Verbesserungen dieses Verfahrens sind möglich. Es ist möglich, die Kapazität bei der Verarbeitung zu vergrößern, wie auch die Geschwindigkeit bei der Verarbeitung des Verfahrens, indem lediglich gewisse Parameter verändert werden. Bei dem oben definierten Verfahren stellt der Schritt E2 nämlich eine Schleife dar, in der die Schritte SE1 bis SE6 auf einmal wiederholt werden. Die ersten (n - 1) Iterationen dieser Schleife von Schritt E2 dienen lediglich zum Übertragen von n - 1 Worten hohen Gewichts von A in dem zweiten Register, da es offensichtlich ist, daß der Inhalt des zweiten Registers während dieser ersten n - 1 Iterationen kleiner als N ist. Eine Verbesserung besteht darin, die Schritte E0, E1 und E2 des Verfahrens jeweils durch die folgenden Schritte E0', E1' und E2' zu ersetzen:
  • E0': Initialisierungsschritt für Daten: Die n - 1 Worte hohen Gewichts des Zählers A werden als Worte niedrigen Gewichts in das zweite Register 3 geladen, die k - n + 1 Worte hohen Gewichts des zweiten Registers 3 werden mit logischen "0" aufgeladen, die a - n + 1 Worte geringen Gewichts des Zählers A werden in Worte geringen Gewichts des ersten Registers 2 geladen, und der Nenner N wird in das vierte Register 5 geladen, wobei das Laden in beliebiger Reihenfolge über den Anschluß Din und den ersten, zweiten und vierten Multiplexer 6, 7 und 9 erfolgt.
  • E1': Initialisierungsschritt des Verfahrens: Es werden (a - n + 1) · Bt Verschiebungen nach rechts in dem ersten Register 2 durchgeführt, wobei der Ausgang des ersten Registers über den ersten Multiplexer 6 an dessen Eingang zurückgeschleift wird. Während der (a - n + 1) · Bt Verschiebungen überträgt man das (a - n + 1)-te Wort von Bt Bits über den neunten Multiplexer 16 in das fünfte Register 17. Dann führt man Bt - 1 Verschiebungen nach rechts in dem fünften Register 17 aus. Man initialisiert den ersten und dritten Subtraktionsschaltkreis 10 und 35 und den Detektorschaltkreis 36. Der erste Ausgang des Detektorschaltkreises zeigt eine logische "0" an, um eine Orientierung des Ausgangs des fünften Multiplexers 12 zu seinem ersten Eingang zu bewirken. Der zweite Ausgang des Detektorschaltkreises muß während der gesamten Dauer der Berechnung auf "0" bleiben, damit bei dem sechsten Multiplexer 13 permanent sein Ausgang mit seinem ersten Eingang verbunden ist. Bei dem siebten Multiplexer 14 ist sein Ausgang mit seinem ersten Eingang verbunden. Bei dem dreizehnten und vierzehnten Multiplexer 30 und 31 sind ihre ersten Eingänge mit ihren Ausgängen verbunden. Bei dem fünfzehnten Multiplexer 34 ist sein Ausgang mit seinem ersten Eingang verbunden.
  • E2': Durchführung der Division: Man führt a - n + 1-mal die Schritte SE1 bis SE6 durch.
  • Die Schritte SE1 bis SE6 bleiben unverändert. Der Fachmann wird feststellen, daß man genauso gut die Initialisierung des dritten Registers 4 unterdrücken kann, die in bezug auf die Funktion des Divisionsverfahrens verzichtbar ist. Die Modifikationen in den Schritten E0' bis E2' erlauben es, die Divisionen von Zahlen A und N durchzuführen, soweit n &le; k und a &le; k + n - 1. Die Verarbeitungszeit für die Division (Schritte E1', E2' und Es) ist daher gleich Bt · ((a - n + 1) - (k · Bt + 4 + x) + k) - 1 Taktzyklen.
  • Um Zähler verarbeiten zu können, die größer als k - n + 1 sind, ist es möglich, sukzessive die a - n Worte von A direkt in das fünfte Register 17 zu laden. Die Schritte E0, E1 und E2 und SE3 können jeweils ersetzt werden durch die folgenden Schritte E0", E1", E2" und SE3":
  • E0": Initialisierungsschritt für Daten: die n - 1 Worte mit höchstem Gewicht des Zählers A werden in das zweite Register 3 als Worte geringsten Gewichts geladen, die k - n + 1 Worte hohen Gewichts des zweiten Registers 3 werden mit logischen "0" aufgeladen, das (a - n + 1)-te Wort des Zählers A wird in das fünfte Register 17 geladen, und der Nenner N wird in das vierte Register 5 geladen, wobei das Laden in beliebiger Reihenfolge über den Anschluß Din und den zweiten, vierten und neunten Multiplexer 7, 9 und 16 erfolgt.
  • E1": Initialisierungsschritt des Verfahrens: Man führt Bt - 1 Verschiebungen nach rechts in dem fünften Register 17 durch. Man initialisiert den ersten und dritten Subtraktionsschaltkreis 10 und 35 und den Detektorschaltkreis 36. Der erste Ausgang des Detektorschaltkreises zeigt eine logische "0" an, um eine Orientierung des Ausgangs des fünften Multiplexers 12 auf seinen ersten Eingang zu bewirken. Der zweite Detektorschaltkreis muß während der gesamten Berechnungsdauer auf "0" bleiben, damit bei dem sechsten Multiplexer 13 permanent sein Ausgang mit seinem ersten Eingang verbunden ist. Bei dem siebten Multiplexer 14 ist sein Ausgang mit seinem ersten Eingang verbunden. Bei dem dreizehnten und vierzehnten Multiplexer 30 und 31 sind ihre ersten Eingänge mit ihren Ausgängen verbunden. Bei dem fünfzehnten Multiplexer 34 ist sein Ausgang mit seinem ersten Eingang verbunden.
  • E2": Durchführung der Division: Man realisiert a - n + 1-mal die Schritte SE1, SE2, SE3" und SE4 bis SE6, wobei i ein Index zwischen 1 und a - n + 1 ist, der bei jeder Iteration des Schrittes E2" inkrementiert wird.
  • SE3": Man lädt das (a - n + 2 - i)-te Wort des Zählers A über den neunten Multiplexer 16 und den Eingangsanschluß Din in das fünfte Register 17.
  • Die Verarbeitungskapazität der Vorrichtung hängt also von der Größe des Nenners N und der Größe des Quotienten S ab. Um die Verarbeitungskapazität unabhängig von dem Quotienten S zu machen, kann man die Worte des Quotienten S je nach Berechnung ausgeben. Dazu unterdrückt man die Schritte SE1, E5 und E6 und ersetzt die Schritte SE5 und SE6 durch einen einzigen folgenden Schritt SE5":
  • SE5": Man verschiebt den Inhalt des siebten Registers 22 um Bt Bits nach rechts, wobei der Ausgang des siebten Registers 22 über den sechzehnten Multiplexer 37 mit dem Ausgangsanschluß verbunden ist.
  • Die Rechenzeit wird mit der externen Verwaltung des Zählers A und des Quotienten S zu Bt · ((a - n + 1) · (k · Bt + 3 + x) - 1) Taktzyklen.
  • Wie bereits in den unterschiedlichen obengenannten Patentanmeldungen erläutert, ist es möglich, Register mit variabler Größe zu nutzen, z. B. Register variabler Größe, die in Fig. 3 der Anmeldung EP-A-0 784 262 offenbart sind. Die Register variabler Größe ermöglichen es, erste bis vierte Register 2 bis 5 zu benutzen, deren Größe an die enthaltenen Daten angepaßt wird. Diese Register variabler Größe können kombiniert werden mit all den Schritten des genannten Verfahrens und allen genannten Verbesserungen. Es genügt dafür, den Faktor k durch a oder a - n + 1 überall zu ersetzen, wo man sich auf das erste Register 2 bezieht, oder k durch n zu ersetzen, überall dort, wo man sich auf das zweite und vierte Register 3 und 5 bezieht, oder k zu ersetzen durch a - n + 1, überall dort, wo m an sich auf das dritte Register 4 bezieht.
  • Die Verbesserung durch die Register variabler Größe macht sich bemerkbar über die Umsetzungszeiten von:
  • Bt · (a · (n · Bt + 5 + x) + 1 - n) - 1 Taktzyklen für das Basisverfahren;
  • Bt · (a - n + 1) · (n · Bt + 5 + x) - 1 Taktzyklen für das Verfahren, bei dem auf die Schritte E0', E1' und E2' zurückgegriffen wird, und
  • Bt · ((a - n + 1). (n · Bt + 3 + x) + 1) - 1 Taktzyklen für das Verfahren, bei dem auf die Schrille E0", E1", E2", SE3" und SE5" zurückgegriffen wird.
  • Fig. 3 zeigt ein Schieberegister variabler Größe, das speziell für das Umsetzen der Erfindung interessant ist. Das Schieberegister nach Fig. 3 kann als eines der ersten bis vierten Register 2 bis 5 verwendet werden.
  • So kann das erste Register 2 aus k Elementarregistern 39 bis 42 für die Verschiebung um Bt Bits zusammengesetzt werden, wobei bei jedem ein serieller Eingang und ein serieller Ausgang vorhanden ist und alle Eingänge der Elementarregister 39 bis 42 miteinander verbunden sind, um den Eingang des ersten Registers 2 zu bilden. Ein Ausgangsmultiplexer 43 hat k Eingänge und einen Ausgang, wobei jeder der Eingänge jeweils mit dem Ausgang jedes der Elementarregister 39 bis 42 verbunden ist und der Ausgang des Ausgangsmultiplexers 43 den Ausgang des ersten Registers 2 bildet.
  • Das erste Register 2 in Fig. 3 benötigt Steuersignale, die ihm anzeigen, welches der Elementarregister 39 bis 42 ausgewählt wurde, um eine Verschiebung nach rechts zu bewirken, wobei der Eingang des ausgewählten Elementarregisters aktiviert wird und/oder der Ausgang des ausgewählten Elementarregisters mit dem Ausgang des ersten Registers 2 verbunden wird. Das erste Register 2 erlaubt unabhängigen Zugriff auf jedes der Worte mit Bt Bits der Daten in dem ersten Register 2. Es ist darüber hinaus möglich, zwei Elementarregister 39 bis 42 gleichzeitig auszuwählen, indem der Eingang des einen aktiviert wird und der Ausgang des anderen mit dem Äusgang des ersten Registers 2 verbunden wird.
  • Das Register nach Fig. 3 hat den Vorteil, daß der Verbrauch des Koprozessors 1 verringert wird, wenn es bei jedem des ersten bis vierten Registers 2 bis 5 eingesetzt wird. Wenn man ein Wort um k · Bt Bits verschieben will, z. B. in dem zweiten Register 3, so hat man nämlich eine reale Verschiebung um höchstens zwei der Elementarregister 39 bis 42, was die Zahl der Verschiebungen in dem zweiten Register 3 um das k/2-fache verringert, womit auch der Verbrauch des zweiten Registers 3 um das k/2-fache verringert wird.
  • In dem Verfahren zur Division gemäß der Erfindung hat das Register nach Fig. 3 einen zusätzlichen Vorteil. Das erste und dritte Register 2 und 4 bringen es mit sich, daß ihr Inhalt als Worte mit k Bits ausgegeben und eingelesen wird, wobei das fünfte und siebte Register 17 und 22 dazu dienen, die Reihenfolge der Bits bei jedem der Worte mit Bt Bits umzudrehen, wobei durch die Verwendung des Registers nach Fig. 3 es vermieden werden kann, daß systematisch der Inhalt des ersten und dritten Registers verschoben werden muß. Darüber hinaus ist die Verwendung des fünften und siebten Registers 17 und 22 nicht mehr obligatorisch, da die Invertierung von Worten mit Bt Bits mit Hilfe von Elementarregistern 39 bis 42 des ersten und dritten Registers 2 und 4 durchgeführt werden kann (dazu ist eine zusätzliche Verbindung zwischen dem Ausgang des ersten Registers 2 und dem achten Multiplexer 15 notwendig).
  • Eine Ausführungsform besteht darin, das fünfte und siebte Register 17 und 22 zu verwenden, die in der Lage sind, Verschiebungen in beiden Richtungen durchzuführen, wobei der Eingang des fünften und siebten Registers 17 und 22 ein Eingang/Ausgang wird und die Invertierung der Bits ohne Rotation der Gesamtheit des Inhalts dieser Register erfolgt. Jedoch erfordert eine solche Lösung größere Anpassungen in bezug auf die Oberfläche des Chips, um ein äquivalentes Ergebnis zu erzielen.
  • Eine weitere Ausführungsform kann darin bestehen, das siebte Register 17 zu verwenden, ohne das erste Register 2 zu verwenden. Das Laden des Zählers A erfolgt also Wort für Wort während des Ablaufs einer Division. Der Vorteil einer solchen Vorrichtung besteht darin, daß man eine Division mit Schaltkreisen gemäß dem Stand der Technik durchführen kann, die nur drei Register mit k · Bt Bits aufweisen, ohne zusätzlich ein viertes Register mit k · Bt Bits hinzufügen zu müssen. Es ist von Vorteil bei einer solchen Ausführungsform, das sechste Register 18 in ein Schieberegister umzuwandeln, damit es die Rolle des siebten Registers 17 übernehmen kann bei der Invertierung von Bits, wobei das siebte Register 17 als Zwischenregister dient, um eine größere Flexibilität beim Laden der Daten zu gewinnen.
  • Weitere Ausführungsformen bei der Realisierung sind möglich, z. B. kann man verschiedene der obengenannten Ausführungsformen kombinieren.
  • Es ist ebenfalls möglich, daß der Fachmann die Bits des Quotienten S oder die Bits des Zählers nur einmal invertieren muß, so daß die Invertierungen der Bits in dem ersten und/oder fünften Register 2 und/oder 17 nicht durchgeführt werden müssen, wenn man einen bereits invertierten Zähler hat oder die Invertierungen von Bits in dem dritten und/oder siebten Register 4 und/oder 22 nicht notwendig sind, wenn man den Quotienten S in invertierter Form nutzen will.
  • Selbstverständlich wird der Fachmann als Arbeitsbasis Bt wählen und als erstes bis viertes Register 2 bis 5 Register beliebiger Größe einsetzen.

Claims (10)

1. Verfahren zum Durchführen einer ganzzahligen Division in einem moduloarithmetischen Koprozessor (1) für Modulo-Berechnungen nach dem Montgomery-Verfahren, wobei man einen Zähler A aus Worten mit Bt Bits durch einen Nenner N aus n Worten mit Bt Bits dividiert, um einen Quotienten S mit a - n + 1 Worten mit Bt Bits zu erhalten, dadurch gekennzeichnet, daß im Verlauf der Division wenigstens eines der Worte mit Bt Bits des Zählers A oder des Quotienten S Bit für Bit in ein Register (17, 22, 39 bis 42) für das Verschieben von Bt Bits geladen wird und das Wort in das Register (17, 22, 39 bis 42) in einer ersten Reihenfolge eingegeben wird und Bit für Bit von dem Register (17, 22, 39 bis 42) in umgekehrter Reihenfolge gegenüber der ersten Reihenfolge ausgegeben wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Wort ein Wort mit Bt Bits des Zählers A ist, daß das Register ein Zähler-Register ist (17, 39 bis 42), und daß das Zähler-Register (17, 39 bis 42) Bt-mal eine Verschiebung um Bt - 1 Bits durchführt, wobei sein Eingang mit seinem Ausgang verbunden ist, wobei der Inhalt des Zähler-Registers (17, 39 bis 42) Bit für Bit nach jeder der Verschiebungen um Bt - 1 Bits ausgegeben wird.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß das Zähler-Register (17) sukzessive Worte mit Bt Bits des Zählers A einliest, wobei jedes der Worte von geringem Gewicht als das vorher empfangene Wort ist.
4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß mehrere Zähler-Register (39 bis 42) von Bt Bits jeweils ein Wort von Bt Bits des Zählers A einlesen.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Wort ein Wort mit Bt Bits des Quotienten S ist, daß das Register ein Quotienten-Register (22, 39 bis 42) mit Bt Bits ist, und daß das Quotienten-Register (22, 39 bis 42) Bt- mal eine Verschiebung von Bt - 1 Bits durchführt, wobei die erste Verschiebung das Eingeben eines Bits des Quotienten S bewirkt und der Ausgang des Quotienten-Registers (22, 39 bis 42) mit dem Eingang des Quotienten-Registers (22, 39 bis 42) während der folgenden Bt - 2 Verschiebungen verbunden ist.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß das Quotienten-Register (22) sukzessive a - n + 1 Worte mit Bt Bits des Quotienten S einliest, wobei jedes der Worte ein niedriges Gewicht gegenüber dem vorher eingelesenen Wort hat.
7. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß mehrere Quotienten- Register (39 bis 42) mit Bt Bits jeweils ein Wort mit Bt Bits des Quotienten S einlesen.
8. Modulo-arithmetischer Koprozessor (1) zum Durchführen von Modulo-Berechnungen nach dem Montgomery-Verfahren mit einem Divisionsschaltkreis für das Durchführen einer ganzzahligen Division eines Zählers A mit a Worten mit Bt Bits durch einen Nenner N mit n Worten mit Bt Bits, um einen Quotienten S mit a - n + 1 Worten mit Bt Bits zu erhalten, dadurch gekennzeichnet, daß der Divisionsschaltkreis wenigstens ein Register (17, 22, 39 bis 42) für das Verschieben von Bt Bits umfaßt, der dazu ausgelegt ist, wenigstens eines der Worte des Zählers oder des Quotienten S zu enthalten, dort das Wort in einer ersten Reihenfolge einzulesen und es in einer gegenüber der ersten Reihenfolge invertierten Reihenfolge wieder auszugeben.
9. Koprozessor nach Anspruch 8, dadurch gekennzeichnet, daß das Schieberegister ein Zähler-Register (17, 39 bis 42) ist und daß der Koprozessor einen Zähler- Multiplexer (6, 16) für das Verbinden des Ausgangs des Zähler-Registers (17, 39 bis 42) mit dem Eingang des Zähler-Registers (17, 39 bis 42) umfaßt, um die Reihenfolge bei der Ausgabe der Bits in dem Zähler-Register (17, 39 bis 42) durch Rotation des Inhalts des Zähler-Registers (17, 39 bis 42) zu invertieren.
10. Modulo-arithmetischer Koprozessor (1) nach Anspruch 8, dadurch gekennzeichnet, daß das Register ein Quotienten-Register (22, 39 bis 42) ist; und daß der Koprozessor einen Quotienten-Multiplexer (8, 21) zum Verbinden des Ausgangs des Quotienten-Registers (22, 39 bis 42) mit dem Eingang des Quotienten-Registers (22, 39 bis 42) umfaßt, um die Reihenfolge beim Eingeben von Bits in das Quotienten-Register (22, 39 bis 42) durch Rotation des Inhalts des Quotienten-Registers (22, 39 bis 42) zu invertieren.
DE69802016T 1997-09-09 1998-08-26 Verfahren und Anordnung zur Durchführung ganzzahliger Divisionsoperationen mit einem modulo-arithmetischen Koprozessor Expired - Lifetime DE69802016T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9711342A FR2768245B1 (fr) 1997-09-09 1997-09-09 Procede de production d'une division entiere avec un coprocesseur d'arithmetique modulaire

Publications (2)

Publication Number Publication Date
DE69802016D1 DE69802016D1 (de) 2001-11-15
DE69802016T2 true DE69802016T2 (de) 2002-01-31

Family

ID=9511001

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69802016T Expired - Lifetime DE69802016T2 (de) 1997-09-09 1998-08-26 Verfahren und Anordnung zur Durchführung ganzzahliger Divisionsoperationen mit einem modulo-arithmetischen Koprozessor

Country Status (4)

Country Link
US (1) US6212538B1 (de)
EP (1) EP0902359B1 (de)
DE (1) DE69802016T2 (de)
FR (1) FR2768245B1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10219164A1 (de) * 2002-04-29 2003-11-20 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954772B2 (en) * 2000-08-28 2005-10-11 Sun Microsystems, Inc Method and apparatus for performing modular division

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2726666B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery
FR2741973B1 (fr) * 1995-12-04 1998-01-02 Sgs Thomson Microelectronics Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery
FR2743646B1 (fr) * 1996-01-12 1998-03-06 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10219164A1 (de) * 2002-04-29 2003-11-20 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten
DE10219164B4 (de) * 2002-04-29 2004-12-02 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten

Also Published As

Publication number Publication date
FR2768245B1 (fr) 1999-10-15
US6212538B1 (en) 2001-04-03
FR2768245A1 (fr) 1999-03-12
EP0902359B1 (de) 2001-02-28
EP0902359A1 (de) 1999-03-17
DE69802016D1 (de) 2001-11-15

Similar Documents

Publication Publication Date Title
DE69506675T2 (de) Verfahren zur Ausführung von modularen Reduktion nach der Montgomery-Methode
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE69716331T2 (de) Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
DE3875979T2 (de) Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten.
DE69811877T2 (de) ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert.
DE69330848T2 (de) Einrichtung und Verfahren zur digitalen Unterschrift
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE69130581T2 (de) Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode
DE69506674T2 (de) Verfahren zur Verwendung der modularen Multiplikation nach der Montgomery-Methode
DE60021623T2 (de) Multiplizierer und verschiebungsanordnung mit benutzung von vorzeichenzifferzahlen darstellung
DE102005010764A1 (de) Multipliziereinheit und zugehörige Operationseinheit und Akkumuliereinheit
DE3917059A1 (de) Cordic-anordnung zum multiplizieren von komplexen zahlen
DE69832026T2 (de) Arithmetische Einheit
EP1543408B1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE69500523T2 (de) Elektronische Schaltung zur Modularberechnung in einem endlichen Körper
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
DE69226110T2 (de) Recheneinheit zum Multiplizieren langer ganzer Zahlen Modul M und R.S.A-Wandler mit einer derartigen Multiplikationsanordnung
DE69424790T2 (de) Prozessor für schnelle Fourier-Transformation
DE69700018T2 (de) Koprozessor für moduläre Arithmetik mit einer schnellen Ausführung von nicht-modulären Operationen
DE69501581T2 (de) Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode
DE2758130A1 (de) Binaerer und dezimaler hochgeschwindigkeitsaddierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition