-
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 ≤ 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 ≤ k und a ≤ 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.