DE69900127T2 - Verbessertes Verfahren zur Ausführung ganzzahliger Division - Google Patents
Verbessertes Verfahren zur Ausführung ganzzahliger DivisionInfo
- Publication number
- DE69900127T2 DE69900127T2 DE69900127T DE69900127T DE69900127T2 DE 69900127 T2 DE69900127 T2 DE 69900127T2 DE 69900127 T DE69900127 T DE 69900127T DE 69900127 T DE69900127 T DE 69900127T DE 69900127 T2 DE69900127 T2 DE 69900127T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- subtraction
- circuit
- bits
- word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 28
- 206010033307 Overweight Diseases 0.000 claims description 39
- 238000012360 testing method Methods 0.000 claims description 26
- 230000000295 complement effect Effects 0.000 claims description 7
- 230000003111 delayed effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 11
- 101100317273 Caenorhabditis elegans ddl-1 gene Proteins 0.000 description 1
- 101100540711 Caenorhabditis elegans ddl-2 gene Proteins 0.000 description 1
- 101100428830 Caenorhabditis elegans mml-1 gene Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Die Erfindung betrifft ein Verfahren zur Durchführung einer ganzzahligen Division, das in einem Coprozessor mit modularer Arithmetik angewendet wird. Sie findet eine Anwendung zum Beispiel bei der Geheimverschlüsselung, wenn man eine Codierung vom RSA-Typ nutzt, die eine modulare Arithmetik verwendet.
- Wie in der internationalen Anmeldung WO-A-9725668 beschrieben, sind bereits Coprozessoren mit modularer Arithmetik bekannt, die es ermöglichen, modulare Potenzrechnungen durchzuführen, wobei diese Art Vorgang es ermöglicht, binäre Nachrichten zur verschlüsseln und zu entschlüsseln, die gemäß einer RSA-Codierung codiert sind. Ein solcher Coprozessor, der zum Beispiel in der europäischen Patentanmeldung 0 601 907 beschrieben ist, erlaubt keine Durchführung ganzzahliger Divisionen. Die Verwendung einer RSA-Codierung erfordert aber die Durchführung solcher Divisionen. Man muß also einen Prozessor verwenden, um diese Divisionen durchzuführen, was die Rechendauer verlängert und die Verwendung eines großen Programm- und Datenspeichers erfordert.
- Die Anmeldung WO-A-9725668 schlägt vor, den Coprozessor so zu verändern, daß mit ihm, also ohne Verwendung eines Prozessors, ganzzahlige Division möglich sind.
- Die vorliegende Anmeldung betrifft eine Verbesserung des in der oben erwähnten Anmeldung beschriebenen Divisionsverfahrens derart, daß die Rechenzeit verringert wird, die zur Durchführung einer ganzzahligen Division notwendig ist.
- Das erfindungsgemäße Verfahren ist in Anspruch 1 definiert. Eine Variante ist in Anspruch 2 genauer dargelegt.
- Somit betrifft die Erfindung ein Verfahren zur Durchführung, in einem Coprozessor, einer ganzzahligen Division einer ersten Größe M, die in Form von m Wörtern M(m-1) ... M(1)M(0) mit je L Bits binär codiert vorliegt, durch eine zweite Größe D, die in Form von d Wörtern (D(d-1)... D(1) D(0) mit je L Bits binär codiert vorliegt, wobei m, L und d ganze Zahlen sind und d < m, wobei das mit Q bezeichnete Ergebnis in Form von q Wörtern Q(q-1)Q(q-2)... Q(1)Q(0) mit L Bits codiert erzeugt wird, mit q = m - d + 1 und Q(q - 1) = 00... 00 oder 00... 01.
- Das Verfahren weist auf:
- - das Komplement der Größe M zu einem Wort hoher Gewichtung M(m), das aus L Nullen besteht,
- - die m-d+1-malige Durchführung einer Iterations-Rechenschleife, die enthält:
- - die Erzeugung einer ersten Zwischengröße Q(q-1-j), wobei j ein von 0 bis q- 1 variierender Index ist, der in Form von L Bits binär codiert vorliegt, wobei die ganzzahlige Division der zwei Wörter höchster Gewichtung der ersten Größe M durch das Wort höchster Gewichtung der zweiten Größe D durchgeführt wird,
- - die Erzeugung einer zweiten Zwischengröße Z(m-j), die in Form von 2·L Bits binär codiert vorliegt, um zu prüfen, ob die erste Zwischengröße Q(q-1- j) höher ist als ein gesuchter Wert eines der Wörter des Ergebnisses Q, oder ob sie einem gesuchten Wert eines dieser Wörter entspricht; und
- - im ersten Fall, Dekrementierung der ersten Zwischengröße um eine Einheit und Wiederholung des vorhergehenden Schritts, oder
- - im zweiten Fall, Durchführung der Multiplikation der zweiten Größe D mit der ersten Zwischengröße Q(q-1-j), um eine dritte Zwischengröße B zu bilden, die in Form von d+1 Wörtern mit je L Bits binär codiert ist, und Erzeugung von d neuen Wörtern hoher Gewichtung M(m-j-1)... M(M-j-d) der ersten Größe, unter Verwendung einer Subtraktion der dritten Zwischengröße B von den d+1 Wörtern ungleich Null höchster Gewichtung der ersten Größe, mit Ausnahme bei der ersten Iteration, bei der das Wort M(m) und die d Wörter höchster Gewichtung der ersten Größe M berücksichtigt werden; und wenn das Ergebnis der Subtraktion negativ ist: Dekrementierung um eine Einheit der ersten Zwischengröße und Veränderung der d neuen Wörter hoher Gewichtung, die durch Addition der zweiten Größe zu diesen Wörtern erzeugt wird.
- Das Verfahren enthält die folgenden Schritte:
- E1 - Laden des Worts M(m-1) in ein erstes Register, wobei das Bit hoher Gewichtung dieses Worts sich am Ausgang dieses ersten Registers befindet; Laden von L Nullen, entsprechend einem Wort M(m), in ein zweites Register; Laden von L Nullen in ein drittes Register; Laden des Worts D(d-1) in ein viertes Register, wobei das Bit geringster Gewichtung dieses Worts sich am Ausgang dieses vierten Registers befindet;
- - q Wiederholungen der folgenden Schritte, wobei j ein von 0 bis q-1 variierender Index ist:
- E2 - ganzzahlige Division des Inhalts des zweiten und des ersten Registers durch den Inhalt des vierten Registers, und Speicherung der L Bits geringer Gewichtung des Ergebnisses, bezeichnet mit Q(q-1-j), im ersten Register und in fünften und sechsten Registern;
- E3 - Laden des Worts D(d-2) in das zweite Register, wobei das Bit geringer Gewichtung dieses Worts sich am Ausgang des zweiten Registers befindet; Laden der Wörter M(m-1-j) und M(m-j) in Serie in das dritte Register, wobei die Bits geringer Gewichtung zum Ausgang dieses dritten Registers gerichtet sind; Laden des Worts M(m-2-j) in ein siebtes Register, wobei das Bit geringer Gewichtung dieses Worts zum Ausgang des siebten Registers gerichtet ist;
- E4 - Verschiebung der Inhalte des zweiten und des vierten Registers zu Serieneingängen einer ersten und einer zweiten Multiplikationsschaltung und der Inhalte des dritten und des siebten Registers, mit Rückschleifen der Ausgänge dieser Register zu ihren Eingängen; Multiplikation von D(d-2) mit Q(q-1- j) in der ersten Multiplikationsschaltung; Multiplikation von D(d-1) mit Q(q- 1 j) in der zweiten Multiplikationsschaltung; Subtraktion von M(m-j) M(m-j- 1) von D(d-1)·Q(q-1-j) in einer ersten Subtraktionsschaltung; Subtraktion von M(m-2-j) von der Größe, die von der ersten Subtraktionsschaltung erzeugt wird, in einer zweiten Subtraktionsschaltung, wobei das Wort M(m-2- j) in einer Verzögerungszelle verzögert wurde; Subtraktion der von der zweiten Subtraktionsschaltung erzeugten Größe von D(d-2)·Q(q-1-j) in einer dritten Subtraktionsschaltung; Test des Ergebnisses der letzten Subtraktion in einer Testschaltung;
- E5 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 positiv ist, Verschiebung des Inhalts des ersten Registers; Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer Gewichtung auf Eins und von L-1 Bits hoher Gewichtung auf Null, von der Größe Q(q-1-j), die ursprünglich im ersten Register vorhanden ist, wobei die Subtraktion in einer vierten Subtraktionsschaltung erfolgt, und Speichern der von der vierten Subtraktionsschaltung erzeugten Größe im ersten Register; Wiederholung des vorhergehenden Schritts E4;
- E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist, Laden der Wörter M(m-j)... M(m-d-j) in das dritte Register und der Größe D in das vierte Register; Verschiebung des Inhalts des dritten und des vierten Registers, mit Rückschleifen des Ausgangs des vierten Registers zu seinem Eingang, um D(d-1) in diesem Register beizubehalten; Multiplikation der Größe D mit der Größe Q(q-1-j) in der zweiten Multiplikationsschaltung; Subtraktion des von der zweiten Multiplikationsschaltung erzeugten Ergebnisses von den vom dritten Register gelieferten Bits in der ersten Subtraktionsschaltung und Test des Ergebnisses; wenn das von der ersten Subtraktionsschaltung gelieferte Ergebnis negativ ist: Addition der Größe D, die vom vierten Register geliefert wird, zu dem von der ersten Subtraktionsschaltung erzeugten Ergebnis in einer Additionsschaltung, und Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer Gewichtung auf Eins und L-1 Bits hoher Gewichtung auf Null, von der Größe Q(q-1-j), die ursprünglich im ersten Register vorhanden ist, wobei die Subtraktion in der vierten Subtraktionsschaltung erfolgt, und Speicherung der von der vierten Subtraktionsschaltung erzeugten Größe im ersten Register; Speicherung der beiden letzten Wörter des von der ersten Subtraktionsschaltung, oder ggf. der Additionsschaltung, erzeugten Ergebnisses mit der Bezeichnung M(m-1-j)... M(m-d-j) im zweiten und im ersten Register, wobei die Größen Q(q-1-j) und M(m-3-j).. M(m- d-j) aus dem Coprozessor zum Zweck der Speicherung entnommen werden und die Größen M(m-3-j)... M(m-d-j) die Größen M(m-3-j)... M(m-d-j) entsprechender Gewichtung in der Größe M ersetzen, wobei die Bits geringer Gewichtung der Wörter M(m-1-j) und M(m-2-j) zu den Ausgängen des zweiten und des ersten Registers gerichtet sind; Laden von L Nullen in das dritte Register.
- Gemäß einem weiteren Aspekt der Erfindung werden die Schritte E1, E3 und E6 folgendermaßen geändert:
- E1 - Laden der Größe M und von L Nullen in ein drittes Register; Laden des Worts M(m-1) in ein erstes Register, wobei das Wort hoher Gewichtung dieses Worts am Ausgang dieses ersten Registers vorliegt; Laden von L Nullen, entsprechend einem Wort M(m), in ein zweites Register; Laden der Größe D in ein viertes Register, wobei das Bit geringster Gewichtung des Worts D(d- 1) sich am Ausgang dieses vierten Registers befindet:
- E3 - Laden des Worts D(d-2) in das zweite Register, wobei das Bit geringer Gewichtung dieses Worts sich am Ausgang des zweiten Registers befindet; Laden des Worts M(m-2-j) in ein siebtes Register, wobei das Bit geringer Gewichtung dieses Worts zum Ausgang dieses Registers ausgerichtet ist;
- E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist, Verschieben des Inhalts des dritten und des vierten Registers; Multiplikation der Größe D mit der Größe Q(q-1-j) in der zweiten Multiplikationsschaltung; Subtraktion des von der zweiten Multiplikationsschaltung erzeugten Ergebnisses von den vom dritten Register gelieferten Bits in der ersten Subtraktionsschaltung; wenn das von der ersten Subtraktionsschaltung erzeugte Ergebnis negativ ist: Addition der Größe D, die vom vierten Register geliefert wird, zum Ergebnis, das von der ersten Subtraktionsschaltung erzeugt wird, in der Additionsschaltung - und Subtraktion einer Größe mit L Bits, die von einem Bit geringer Gewichtung auf Eins und von L-1 Bits hoher Gewichtung auf Null gebildet wird, von der Größe Q(q-1-j), die ursprünglich im ersten Register vorhanden ist, wobei die Subtraktion in der vierten Subtraktionsschaltung erfolgt, und Speicherung des Ergebnisses dieser letzten Subtraktion im ersten Register; Speicherung der beiden letzten Wörter des von der ersten Subtraktionsschaltung oder ggf. der Additionsschaltung erzeugten Ergebnisses mit der Bezeichnung M(m-1-j)... M(m-d-j) im dritten, zweiten und ersten Register, wobei die Größen M(m-3-j)... M(m-d-j) im dritten Register gespeichert werden und die Größen M(m-3-j)... M(m-d-j) entsprechender Gewichtung in der Größe M ersetzen, wobei die Bits geringer Gewichtung der Wörter M(m-1-j) und M(m-2-j) zu den Ausgängen des zweiten und des ersten Registers ausgerichtet sind; Laden der L Nullen in das dritte Register.
- Gemäß einer Ausführungsform enthält der Schritt E2 die folgenden Unter-Schritte:
- E21 - Initialisierung der Testschaltung, der dritten und einer fünften Subtraktionsschaltung auf Null;
- E22 - Verschiebung eines Bits des dritten und des vierten Registers, wobei das dritte Register als Bit hoher Gewichtung das Bit hoher Gewichtung des zweiten Registers wiedergewinnt, wobei der Ausgang des vierten Registers mit seinem Eingang verbunden ist; Subtraktion in der dritten Subtraktionsschaltung des Bits hoher Gewichtung des zweiten Registers vom Bit geringer Gewichtung des vierten Registers, wobei die fünfte Subtraktionsschaltung eine Subtraktion des Bits geringer Gewichtung des dritten Registers mit Null durchführt;
- E23 - Verschiebung von 2·L-1 Bits des dritten und des vierten Registers, wobei der Ausgang des vierten Registers mit seinem Eingang verbunden ist, der Eingang des dritten Registers mit dem Ausgang der fünften Subtraktionsschaltung verbunden ist; Subtraktion der 2·L-1 Bits aus dem dritten Register von Null in der fünften Subtraktionsschaltung; Subtraktion des aus der fünften Subtraktionsschaltung kommenden Ergebnisses von den Bits des vierten Registers;
- E24 - Speicherung des letzten Übertrags der dritten Subtraktionsschaltung in der Testschaltung und Erzeugung einer binären Größe, die dem Komplement des gespeicherten Übertrags entspricht, am Ausgang dieser Testschaltung;
- E25 - Verschiebung eines Bits des ersten und des zweiten Registers, wobei das Bit hoher Gewichtung des ersten Registers als Bit geringer Gewichtung des zweiten Registers geladen wird, wobei die in der Testschaltung gespeicherte binäre Größe als Bit geringer Gewichtung in das erste Register geladen wird:
- E26 - Initialisierung der dritten und des fünften Subtraktionsschaltung;
- E27 -2·L-1-malige Wiederholung der Schritte E2 bis E6, wobei die fünfte Subtraktionsschaltung eine Subtraktion des Inhalts des dritten Registers von Null durchführt, wenn der vorher gespeicherte Übertrag gleich Eins ist, oder die fünfte Subtraktionsschaltung eine Subtraktion des Inhalts des dritten Registers vom Inhalt des vierten Registers durchführt, falls der vorher gespeicherte Übertrag gleich Null ist.
- Weitere Vorteile und Besonderheiten gehen aus der nachfolgenden Beschreibung eines Ausführungsbeispiels der Erfindung anhand der beiliegenden Zeichnungen hervor, in denen:
- Fig. 1 einen Coprozessor mit modularer Arithmetik gemäß dem Stand der Technik zeigt,
- Fig. 2 eine Divisionsschaltung gemäß dem Stand der Technik zeigt,
- Fig. 3 einen zur Herstellung einer Divisionsschaltung veränderten Coprozessor mit modularer Arithmetik gemäß dem Stand der Technik zeigt,
- Fig. 4 den Coprozessor der Fig. 3 darstellt, der so verändert ist, daß die Erfindung durchgeführt werden kann,
- Fig. 5 ein erstes Ausführungsbeispiel eines Registers variabler Größe zeigt, und
- Fig. 6 ein zweites Ausführungsbeispiel eines Registers variabler Größe zeigt.
- Fig. 1 zeigt einen Coprozessor mit modularer Arithmetik. Diese Figur entspricht der Fig. 1 der Anmeldung WO-A-9725668 und wird von Seite 6, Zeile 1 bis Seite 7, Zeile 7 der Anmeldung WO-A-9625668 beschrieben.
- Fig. 2 zeigt schematisch eine Divisionsschaltung, die ausgehend von Elementen des in Fig. 1 dargestellten Coprozessors hergestellt wird. Fig. 2 entspricht Fig. 2 der Anmeldung WO-A-9725668 und wird von Seite 7, Zeile 8 bis Seite 9, Zeile 13 der Anmeldung WO-A-9725668 beschrieben.
- Fig. 3 zeigt schematisch den Coprozessor aus Fig. 1, vervollständigt durch Elemente, die es ermöglichen, eine ganzzahlige Division durchzuführen. Diese Fig. 3 entspricht Fig. 3 der Anmeldung WO-A-9725668 und wird von Seite 13, Zeile 24 bis Seite 15, Zeile 9 der Anmeldung WO-A-9725668 beschrieben. Hauptsächlich weist die in Fig. 3 dargestellte Schaltung komplementär zu den Elementen der Schaltung in Fig. 1 ein Register 40 und zusätzliche Multiplexer 41 und 42 auf.
- Die Anmeldung WO-A-9725668 beschreibt ein Rechenverfahren für eine ganzzahlige Division, die die Schaltung der Fig. 2 verwendet, wobei das Verfahren von Seite 9, Zeile 14 bis Seite 11, Zeile 5 der Anmeldung WO-A-9725668 beschrieben wird.
- Angenommen, man möchte die ganzzahlige Division einer Zahl M, codiert mit m Bits (wobei m eine ganze Zahl ist), durch eine Zahl D, codiert mit d Bits, durchführen, wobei das Ergebnis Q mit q = m-d+1 Bits codiert ist.
- Das beschriebene Verfahren zur Anwendung des obigen Algorithmus mit d = n, n eine ganze Zahl, m = 2·n und q = n ist das folgende:
- - Laden der Größe M in die Register 40 und 10 mit n Bits, wobei das Register 40 die n Bits geringer Gewichtung von M und das Register 10 die n Bits hoher Gewichtung von M enthält, wobei in jedem dieser Register 40 und 10 das Bit höchster Gewichtung zum Ausgang hin und das Bit geringster Gewichtung zum Eingang hin liegt,
- - Initialisierung des Registers 11 mit n Bits mit Nullen,
- - Laden der Zahl D in das Register 12 mit n Bits, wobei das Bit geringster Gewichtung zum Ausgang und das Bit höchster Gewichtung zum Eingang hin liegt,
- - Initialisierung der Testschaltung 35, um die Verbindung des zweiten Eingangs der Subtraktionsschaltung 28 mit einer logischen Null durchzuführen,
- - Initialisierung der Subtraktionsschaltungen 28 und 29 auf Null,
- - Verschiebung eines Bits der Register 11 und 12, wobei das Register 11 als Bit hoher Gewichtung das Bit hoher Gewichtung des Registers 10 wiedergewinnt, wobei der Ausgang des Registers 12 mit seinem Eingang verbunden ist,
- - Subtraktion in der Subtraktionsschaltung 29 des Bits hoher Gewichtung des Registers 10 vom Bit geringer Gewichtung des Registers 12, und Subtraktion in der Subtraktionsschaltung 28 des Bits geringer Gewichtung des Registers 11 von Null,
- - Verschiebung von (n-1) Bits der Register 11 und 12, wobei der Ausgang des Registers 12 mit seinem Eingang und der Eingang des Registers 11 mit dem Ausgang der Subtraktionsschaltung 28 verbunden ist,
- - Subtraktion der (n-1) vom Register 11 kommenden Bits von Null in der Subtraktionsschaltung 28,
- - Subtraktion in der Subtraktionsschaltung 29 der aus der Subtraktionsschaltung 28 kommenden, resultierenden Bits von den aus dem Register 12 kommenden Bits,
- - Speicherung einer binären Größe, die dem Komplement des letzten Übertrags der Subtraktionsschaltung 29 in der Testschaltung 35 entspricht, und Erzeugung der binären Größe am Ausgang dieser Testschaltung 35,
- - Verschiebung eines Bits der Register 40 und 10, wobei das Bit hoher Gewichtung des Registers 40 als Bit geringer Gewichtung des Registers 10 geladen wird, wobei die in der Testschaltung 35 gespeicherte binäre Größe als Bit geringer Gewichtung in das Register 40 geladen wird,
- - Initialisierung der Subtraktionsschaltungen 28 und 29,
- - (2·n-1)-malige Wiederholung der Schritte 2 bis 6, wobei die Subtraktionsschaltung 28 eine Subtraktion des Inhalts des Registers 11 durchführt von:
- - Null, wenn die gespeicherte binäre Größe gleich Null ist,
- - dem Inhalt des Registers 12, wenn diese Größe gleich Eins ist.
- Das Ergebnis Q wird in den Registern 40 und 10 gespeichert. Man kann es von da an durch eine Verschiebung von 2·n Bits aus dem Inhalt der Register 40 und 10 entnehmen, wobei der Ausgang des Registers 40 mit dem Eingang des Registers 10 verbunden ist und das Bit hoher Gewichtung des Ergebnisses zuerst kommt. Der Rest der Division ist im Register 11 vorhanden.
- Das verwendete Verfahren kann verschiedene Veränderungen erfahren, die von Seite 11, Zeile 6 bis Seite 13, Zeile 23 der Anmeldung WO-A-9725668 beschrieben sind.
- Dieses Verfahren ermöglicht es, die Division in 2n² + 9n Taktzyklen durchzuführen, wie es auf Seite 12, Zeile 29 der Anmeldung WO-A-9725668 angegeben ist.
- Weiter wird in der Druckschrift "The art of computer programming, Vol. 2, Seminumerical algorithms" ISBN 0-201-03822-6, nachfolgend D2 genannt, eine andere Durchführungsmethode einer ganzzahligen Division für Zahlen mit einer Basis b beschrieben, wobei b eine ganze Zahl größer 2 ist.
- Es war die Absicht des Erfinders, das oben beschriebene Verfahren so zu ändern, daß die Rechenzeit verkürzt wird. Hierzu schlägt er vor, anders vorzugehen, indem Unter-Einheiten der Bits des Ergebnisses Q berechnet werden. Man unterdrückt so die Suche der Bits des Ergebnisses Q durch eine Division Bit für Bit, da diese Suche zu einer Rechenzeit proportional zu n² führt, wie oben erwähnt.
- Im erfindungsgemäßen Verfahren wird das Ergebnis Q durch Pakete von L Bits erzeugt, mit L eine ganze Zahl größer als I. Genauer gesagt, führt man zuerst eine Schätzung der Pakete von L Bits des Ergebnisses Q durch, Schätzung, die ggf. nachgebessert wird. Dann führt man eine Multiplikation des Divisors mit den Paketen von L Bits des Ergebnisses durch, und man führt einen Vergleich und eine Subtraktion durch.
- Es sei angenommen, das die Operanden M und D mit m · L und d · L Bits codiert vorliegen, wobei m, d und L ganze Zahlen sind (ggf. könnte man die Größen M und D mit logischen Nullen vervollständigen, um dieser Bedingung gerecht zu werden). Man erhält ein Ergebnis Q, das mit (m-d) · L + 1 Bits codiert vorliegt.
- Es sei:
- M = MmL-1, MmL-2 ... M&sub1; M&sub0; = M(m-1) M(m-2)... M(1) M0), mit M(0), ... M(m- 1) Unter-Größen mit L Bits,
- D = DdL-1 DdL-2 ... D&sub1; D&sub0; = D(d-1) D(d-2)... D(1) D(0), mit D(0), ... D(d-1) Unter-Größen mit L Bits, und
- Q = M/D = Q(m-d)L ... Q&sub1; Q&sub0; = Q(q-1) Q(q-2) ... Q(1) Q(0), mit Q(0), ... Q(q-1) Unter-Größen mit L Bits, q = m - d + 1 und Q(q-1) = 00 ... 00 oder 00 ... 01.
- Um das Ergebnis Q zu berechnen, implementiert man den folgenden Algorithmus:
- M'(m) = M(m), wobei M(m) aus L Nullen gebildet wird, für j variierend von 0 bis (q-1):
- Schritt 1: X(m-j) = M'(m-j) · 2L + M(m-j-1), mit X(j) codiert mit 2 · L Bits,
- Schritt 2: Q(q-1-j) = X(m-j)/D(d-1), mit Q(q-1-j) codiert mit L Bits,
- Schritt 3: Z(m-j) = [Q(q-1-j) · D(d-2)] - [X(m-j) - Q(q-1 j) · D(d-1) + M(m-2-j)], wobei Z(m-j) mit 2 · L Bits codiert ist,
- wenn Z(m-j) > 0, dann
- Q(q-1-j) = Q(q-1-j) - 00... 01 und neue Berechnung von Z(m-j)
- sonst
- M(m-1 j)... M(m-j-d) = A - B, wobei A und B mit (d+1) · L Bits codiert sind, mit
- A = M'(m j) M(m-j-1)... M(m-j-d)
- B = Q(q-1 J) · D
- wenn A - B < 0, dann
- Q(q-1-j) = Q(q-1-j) - 00... 01
- M(m j-1)... M(m-j-d) = M(m j-1)... M(m-j-d) + D
- J = j+1.
- Das Ergebnis der ganzzahligen Division wird erhalten, indem durchgeführt wird:
- - das Komplement der ersten Größe M zu einem Wort hoher Gewichtung M(m) gebildet aus L Nullen,
- - m-d+1 maliges Durchlaufen einer Rechen-Iterationsschleife (indiziert mit j, wobei j von 0 bis (q-1) variiert), die enthält:
- - die Erzeugung einer ersten Zwischengröße Q(q-1-j), wobei j ein Index ist, der von 0 bis q-1 variiert und binär codiert mit L Bits vorliegt, indem die ganzzahlige Division der beiden Wörter höchster Gewichtung der ersten Größe durch das Wort höchster Gewichtung der zweiten Größe D durchgeführt wird, die Erzeugung einer zweiten Zwischengröße Z(m-j), die mit 2·L Bits binär codiert vorliegt, um zu prüfen, ob die erste Zwischengröße Q(q-1-j) höher ist als ein gesuchter Wert eines der Wörter des Ergebnisses Q, oder ob sie einem gesuchten Wert eines dieser Wörter entspricht, und
- - im ersten Fall, Dekrementierung der ersten Zwischengröße Q(q-1-j) um eine Einheit und Wiederholung des vorhergehenden Schritts, oder
- - im zweiten Fall, Durchführung der Multiplikation der zweiten Größe D mit der ersten Zwischengröße Q(q-1-j) um eine dritte Zwischengröße B zu bilden, die in Form von d+1 Wörtern mit L Bits binär codiert ist, und Erzeugung von d neuen Wörtern hoher Gewichtung M(m-j-1)... M(m-j-d) der ersten Größe, indem eine Subtraktion der dritten Zwischengröße B von den d+1 Wörtern ungleich Null der höchsten Gewichtungen der ersten Größe durchgeführt wird, außer bei der ersten Iteration, bei der man das Wort M(m) und die d Wörter höchster Gewichtung der ersten Größe M berücksichtigt, wenn das Ergebnis der letzten Subtraktion negativ ist: Dekrementierung der ersten Zwischengröße Q(q-1-j) um eine Einheit und Änderung der d erzeugten neuen Wörter hoher Gewichtung M(m-j-1)... M(m-j-d) durch Addition der zweiten Größe D zu diesen erzeugten d Wörtern.
- Um das obige Verfahren anzuwenden, wird die in Fig. 4 dargestellte Schaltung verwendet, unter der Annahme, daß man über Register 10, 11, 12 und 40 variabler Größe verfügt, was es ermöglicht, binäre Größen unterschiedlicher Größe in dem gleichen Register zu speichern.
- Fig. 5 zeigt ein erstes Ausführungsbeispiel eines Registers variabler Größe. Zum Beispiel betrachtet man das Register 11. Gemäß der Ausführungsform der Fig. 5 wird das Register 11 von Unterregistern 110, 111 und 112 gebildet, die in Serie angeordnet sind. Der Ausgang des Multiplexers 14 ist mit dem Eingang des Unterregisters 110 und ersten Eingängen von Multiplexern 60 und 61 verbunden. Diese Multiplexer 60 und 61 haben zweite Eingänge, die je mit den Ausgängen der Unterregister 110 bzw. 111 verbunden sind, und Ausgänge, die je mit den Eingängen der Unterregister 111 bzw. 112 verbunden sind. So kann die Größe des Registers 11 je nach dem Auswahlbefehl der Multiplexer 60 und 61 variieren.
- Fig. 6 stellt ein zweites Ausführungsbeispiel eines Registers variabler Größe dar. Zum Beispiel betrachtet man das Register 11. Gemäß der Ausführungsform der Fig. 6 wird das Register 11 von Unterregistern 113, 114 und 115 gebildet, die parallel angeordnet sind. Der Ausgang des Multiplexers 14 ist mit dem Eingang eines Demultiplexers 62 verbunden. Dieser Demultiplexer enthält drei Ausgänge, die mit den Eingängen der Unterregister verbunden sind. Die Ausgänge der Unterregister sind mit drei Eingängen eines Multiplexers 63 verbunden, von dem ein Ausgang den Ausgang des Registers 11 bildet. Die Größe des Registers 11 kann gemäß dem Auswahlbefehl des Demultiplexers und des Multiplexers variieren.
- Es ist anzumerken, daß in den in den Fig. 5 und 6 dargestellten Beispielen, wenn man bei einer Berechnung eine Anzahl von Unterregistern kleiner als die maximale Anzahl von Unterregistern verwendet, die nicht genutzten Unterregister verwendet werden können, um Größen zu speichern, die zum Beispiel bei einem späteren Rechenvorgang verwendet werden können.
- Neben den verschiedenen Elementen der Fig. 3 der vorliegenden Anmeldung enthält die in Fig. 4 dargestellte Schaltung ein Register 43 mit L Bits mit Eingang und Serienausgang, drei Subtraktionsschaltungen 44, 45 und 46, die zwei Eingänge und einen Serienausgang aufweisen, eine Verzögerungszelle 47 der Größe L mit einem Eingang und einem Serienausgang, acht Multiplexer 48, 49, 50, 51, 53, 54, 55 und 57, die zwei Eingänge und einen Ausgang aufweisen, und eine Additionsschaltung 56, die zwei Serieneingänge und einen Serienausgang aufweist.
- Ein erster Eingang des Multiplexers 53 ist mit einem zusätzlichen Eingang 52 der Schaltung verbunden, und sein Ausgang ist mit dem Eingang des Registers 43 verbunden. Der zweite Eingang des Multiplexers 53 ist mit dem Ausgang des Registers 43 verbunden, was es ermöglicht, den Eingang dieses Registers mit seinem Ausgang zu verbinden. Der Ausgang des Registers 43 ist mit dem Eingang der Verzögerungszelle 47 verbunden.
- Der Multiplexer 24 ist verändert und weist drei Eingänge anstelle von zwei Eingängen auf. Sein dritter Eingang ist mit dem Ausgang des Registers 40 verbunden. Dadurch ist es möglich, vom Register 40 kommende Bits in das Register 16 zu laden.
- Der Ausgang des Registers 40 ist weiter mit einem der Eingänge des Multiplexers 48 verbunden. Der andere Eingang dieses Multiplexers 48 ist mit einem Eingang der Schaltung verbunden, die eine binäre Größe J0 empfangen kann, und sein Ausgang ist mit dem Serieneingang des Registers 17 verbunden. Man kann so in das Register 17 Bits laden, die vom Ausgang des Registers 40 geliefert werden.
- Ein erster Eingang der Subtraktionsschaltung 44 ist mit dem Ausgang der Multiplikationsschaltung 20 über einen dritten Ausgang des Demultiplexers 39 verbunden. Der zweite Eingang der Schaltung 44 ist mit dem Ausgang des Registers 11 verbunden.
- Ein erster Eingang der Subtraktionsschaltung 45 ist mit dem Ausgang der Subtraktionsschaltung 44 verbunden. Ihr zweiter Eingang ist mit dem Ausgang des Multiplexers 55 verbunden. Der erste Eingang dieses Multiplexers 55 ist mit dem Ausgang der Verzögerungszelle 47 verbunden, und sein zweiter Eingang empfängt eine logische Null.
- Ein erster Eingang des Multiplexers 49 ist mit dem Ausgang der Subtraktionsschaltung 45 verbunden. Sein zweiter Eingang ist mit dem Ausgang der Additionsschaltung 31 und sein Ausgang ist mit dem ersten Eingang der Subtraktionsschaltung 29 und einem ersten Eingang der Additionsschaltung 56 verbunden. Der zweite Eingang der Additionsschaltung 56 ist mit dem Ausgang des Multiplexers 38 verbunden. Man kann so den Inhalt des Registers 12 an den zweiten Eingang der Additionsschaltung 56 liefern. Der Ausgang der Additionsschaltung 56 ist mit einem ersten Eingang des Multiplexers 57 verbunden. Der zweite Eingang dieses Multiplexers ist mit dem Ausgang des Multiplexers 49 und sein Ausgang ist mit den Eingängen der Register 10, 11 und 12 über die Multiplexer 13, 14 und 15 verbunden. Man kann so an die Register 10, 11 und/oder 12 entweder vom Multiplexer 49 gelieferte Größen, oder Größen liefern, die durch Addition des Inhalts des Registers 12 zu den vom Multiplexer 49 gelieferten Größen erhalten werden.
- Ein erster Eingang des Multiplexers 50 ist mit dem Ausgang der Multiplikationsschaltung 19 verbunden. Sein zweiter Eingang ist mit dem Ausgang der Verzögerungszelle 33 und sein Ausgang ist mit dem zweiten Eingang der Subtraktionsschaltung 29 verbunden.
- Ein erster Eingang des Multiplexers 51 ist mit dem Ausgang des Multiplexers 38 verbunden. Sein zweiter Eingang ist mit dem Ausgang der Verzögerungszelle 32 und sein Ausgang ist mit dem Multiplexer 26 und der Zelle 33 verbunden (anstelle des Ausgangs der Zelle 32, wie es bei den Schaltungen der Fig. 1 und 3 der Fall ist).
- Der Multiplexer 51 ermöglicht es, den Inhalt des Registers 12 an den Serieneingang der Multiplikationsschaltung 20 zu liefern, wobei verhindert wird, daß dieser Inhalt in der Zelle 32 verzögert wird.
- Ein erster Eingang der Subtraktionsschaltung 46 ist mit dem Ausgang des Registers 40 verbunden. Ihr zweiter Eingang ist mit dem Ausgang des Multiplexers 54 verbunden, der an seinen Eingängen eine logische 1 und eine logische 0 empfängt. Der Multiplexer 41 weist einen dritten Eingang auf, der mit dem Ausgang der Subtraktionsschaltung 46 verbunden ist, so daß man den Ausgang dieses Registers mit seinem Eingang verbinden kann.
- Es ist anzumerken, daß die Schaltung der Fig. 3 anders verändert werden kann, um das erfindungsgemäße Verfahren anzuwenden, da das angegebene Beispiel nur darstellend gemeint ist. Es ist jedoch festzustellen, daß die Anordnung der neuen Elemente, wie beschrieben, es ermöglicht, alle Operationen durchzuführen, die vorher mit der Schaltung der Fig. 3 durchgeführt werden konnten. Hierzu genügt es, in geeigneter Weise die Eingänge und Ausgänge der Multiplexer und des Demultiplexers auszuwählen. Diese Besonderheit wird nicht eingehender erklärt, da sie für den Fachmann offensichtlich ist.
- Das erfindungsgemäße Verfahren führt in einem Coprozessor eine ganzzahlige Division einer ersten Größe M, die in Form von m Wörtern M(m-1)... M((1) M(0) mit L Bits binär codiert vorliegt, durch eine zweite Größe D durch, die in Form von d Wörtern D(d-1)..., D(1) D(0) mit L Bits binär codiert vorliegt, wobei m, L und d ganzen Zahlen sind und d < m, wobei das mit Q bezeichnete Ergebnis in Form von q Wörtern Q(q-1) Q(q-2)... Q(1) Q(0) mit L Bits codiert vorliegt, mit q = m - d + 1 und Q(q-1) = 00... 00 oder 00... 01. Ein Anwendungsbeispiel des erfindungsgemäßen Verfahrens enthält die folgenden Schritte E1 bis E6:
- E1 - Laden des Worts M(m-1) in ein erstes Register (40), wobei das Bit hoher Gewichtung dieses Worts sich am Ausgang dieses ersten Registers (40) befindet; Laden von L Nullen, entsprechend einem Wort M(m), in ein zweites Register (10); Laden von L Nullen in ein drittes Register (11); Laden des Worts D(d-1) in ein viertes Register (12), wobei das Bit geringster Gewichtung dieses Worts sich am Ausgang dieses vierten Registers (12) befindet; und
- q-malige Wiederholung der folgenden Schritte E2 bis E6, wobei j ein von 0 bis q-1 variierender Index ist:
- E2 - ganzzahlige Division der beiden Wörter höchster Gewichtung der ersten Größe M, die im zweiten und im ersten Register (10, 40) enthalten sind, durch das Wort höchster Gewichtung der zweiten Größe D, das Inhalt des vierten Registers (12) ist, und Speicherung der L Bits geringer Gewichtung des Ergebnisses der ganzzahligen Division, entsprechend einer ersten Zwischengröße Q(q-1-j), im ersten Register 40 und in fünften und sechsten Registern (16, 17);
- E3 - Laden des Worts D(d-2) in ein zweites Register (10), wobei das Bit geringer Gewichtung dieses Worts sich am Ausgang des zweiten Registers (10) befindet; und Laden der Wörter M(m-1-j) und M(m-j) in Serie in das dritte Register (11), wobei die Bits geringer Gewichtung zum Ausgang dieses dritten Registers gerichtet sind; Laden des Worts M(m-2-j) in ein siebtes Register (43), wobei das Bit geringer Gewichtung dieses Worts zum Ausgang des siebten Registers gerichtet ist;
- E4 - · Verschiebung der Inhalte des zweiten und des vierten Registers (10, 12) zu Serieneingängen einer ersten und einer zweiten Multiplikationsschaltung (19, 20) und der Inhalte des dritten und des siebten Registers (11, 43), mit Rückschleifen der Ausgänge dieser Register zu ihren Eingängen;
- · Multiplikation von D(d-2) mit Q(q-1-j) in der ersten Multiplikationsschaltung (19);
- · Multiplikation von D(d-1) mit Q(q-1-j) in der zweiten Multiplikationsschaltung (20);
- · Subtraktion von M(m-j) M(m-j-1) von D(d-1) · Q(q-1-j) in einer ersten Subtraktionsschaltung (44);
- · Subtraktion von M(m-2-j) von der Größe, die von der ersten Subtraktionsschaltung (44) erzeugt wurde, in einer zweiten Subtraktionsschaltung (45), wobei das Wort M(m-2-j) in einer Verzögerungszelle (47) verzögert wurde;
- · Subtraktion der von der zweiten Subtraktionsschaltung (45) erzeugten Größe von D(d-2) · Q(q-1) in einer dritten Subtraktionsschaltung (29), wobei das Ergebnis der Subtraktion eine zweite binäre Zwischengröße Z(m-j) codiert mit 2 · L Bits ist; und
- · Test der zweiten Zwischengröße Z(m-j), Ergebnis der letzten Subtraktion, in einer Testschaltung (35), um zu erfahren, ob die erste Zwischengröße Q(q-1-j) größer ist als ein gesuchter Wert eines der Wörter des Ergebnisses Q oder ob sie einem gesuchten Wert eines dieser Wörter entspricht;
- E5 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 positiv ist:
- · Dekrementierung der ersten Zwischengröße Q(q-1-j) um eine Einheit durch Verschiebung des Inhalts des ersten Registers (40); Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer Gewichtung auf Eins und L-1 Bits hoher Gewichtung auf Null, von der ersten Zwischengröße Q(q-1-j), die ursprünglich im ersten Register (40) vorhanden ist, wobei die Subtraktion in einer vierten Subtraktionsschaltung (46) erfolgt; und Speicherung der von der vierten Subtraktionsschaltung (46) erzeugten Größe im ersten Register (40); und
- · Wiederholung des vorhergehenden Schritts E4;
- E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist:
- · Laden der Wörter M(m-j)... M(m-d-j) in das dritte Register (11) und der Größe D in das vierte Register (12);
- · Verschiebung des Inhalts des dritten und des vierten Registers (11, 12) mit Rückschleifen des Ausgangs des vierten Registers (12) zu seinem Eingang, um D(d-1) in diesem Register beizubehalten;
- · Multiplikation der Größe D mit der Größe Q(q-1-j) in der zweiten Multiplikationsschaltung (20), um eine dritte Zwischengröße B zu erhalten, die in Farm von d-1 Wörtern mit L Bits codiert vorliegt;
- · Subtraktion, in der ersten Subtraktionsschaltung (44), der dritten Zwischengröße B, die von der zweiten Multiplikationsschaltung (20) erzeugt wird, von den d+1 Wörtern höchster Gewichtung der ersten Größe M, die vom dritten Register (11) geliefert werden, außer bei der ersten Iteration, bei der man das Wort M(m) und die d Wörter höchster Gewichtung der ersten Größe M berücksichtigt; und Test des Ergebnisses der Subtraktion;
- · wenn das von der ersten Subtraktionsschaltung (44) gelieferte Ergebnis negativ ist:
- - Addition der Größe D, geliefert vom vierten Register (12), zum Ergebnis, das von der ersten Subtraktionsschaltung (44) erzeugt wird, in einer Additionsschaltung (56),
- - Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer Gewichtung auf Eins und aus L-1 Bits hoher Gewichtung auf Null, von der Größe Q(q-1-j), die ursprünglich im ersten Register (40) vorhanden ist, wobei die Subtraktion in der vierten Subtraktionsschaltung (46) erfolgt, und
- - Speicherung der von der vierten Subtraktionsschaltung (46) erzeugten Größe im ersten Register (40);
- · Erzeugung von d neuen Wörtern hoher Gewichtung M(m-1-j)... M(m-d-j) der ersten Größe M, die das von der ersten Subtraktionsschaltung (44) oder ggf. von der Additionsschaltung (56) erzeugte Ergebnis sind;
- · Speicherung der beiden letzten neuen Wörter hoher Gewichtung M(m-1-j) M(m-2-j) von M im zweiten und im ersten Register (10, 40), wobei die Bits geringer Gewichtung der Wörter M(m-1-j) und M(m-2-j) zu den Ausgängen des zweiten und des ersten Registers (10, 40) gerichtet sind, wobei die Größen Q(q-1-j) und M(m-3-j)... M(m-d-j) zur Speicherung aus dem Coprozessor entnommen werden;
- · Laden von L Nullen in das dritte Register (11).
- Beim Schritt E2 kann man folgendermaßen analog zu dem Verfahren vorgehen, das in der Anmeldung WO-A-9725668 beschrieben ist, indem man die ganzzahlige Division einer Größe mit 2·L Bits durch eine Größe mit L Bits berücksichtigt:
- E21 - Initialisierung der Testschaltung 35 und der Subtraktionsschaltungen 28 und 29 auf Null;
- E22 - Verschiebung eines Bits der Register 11 und 12, wobei das Register 11 als Bit hoher Gewichtung das Bit hoher Gewichtung des Registers 10 über den Multiplexer 14 wiedergewinnt, wobei der Ausgang des Registers 12 mit seinem Eingang über den Multiplexer 15 verbunden ist; Subtraktion in der Subtraktionsschaltung 29 des Bits hoher Gewichtung des Registers 10 vom Bit geringer Gewichtung des Registers 12, wobei die Subtraktionsschaltung 28 eine Subtraktion des Bits geringer Gewichtung des Registers 11 von Null durchführt;
- E23 - Verschiebung von 2·L-1 Bits der Register 11 und 12, wobei der Ausgang des Registers 12 mit seinem Eingang über den Multiplexer 15 verbunden ist, wobei der Eingang des dritten Registers 11 mit dem Ausgang der Subtraktionsschaltung 28 über den Multiplexer 14 verbunden ist; Subtraktion der 2·L-1 Bits aus dem Register 11 von Null in der Subtraktionsschaltung 28; Subtraktion des Ergebnisses aus der Subtraktionsschaltung 28 von den Bits des Registers 12;
- E24 - Speicherung des letzten Übertrags der Subtraktionsschaltung 29 in der Testschaltung 35 und Erzeugung am Ausgang dieser Testschaltung einer binären Größe, die dem Komplement des gespeicherten Übertrags entspricht;
- E25 - Verschiebung eines Bits der Register 40 und 10, wobei das Bit hoher Gewichtung des Registers 40 als Bit geringer Gewichtung des Registers 10 geladen wird, wobei die in der Testschaltung 35 gespeicherte binäre Größe als Bit geringer Gewichtung in das Register 40 geladen wird;
- E26 - Initialisierung der Subtraktionsschaltungen 28 und 29;
- E27 - 2·L-1-malige Wiederholung der Schritte E2 bis E6, wobei die Subtraktionsschaltung 28 eine Subtraktion des Inhalts des Registers 11 von Null durchführt, wenn der vorher gespeicherte Übertrag gleich Eins ist, oder die Subtraktionsschaltung 28 eine Subtraktion des Inhalts des Registers 11 vom Inhalt des Registers 12 durchführt, wenn der vorher gespeicherte Übertrag gleich Null ist.
- Es wird zum Beispiel angenommen, daß M mit 2·n Bits und D mit n Bits vorliegt, mit n = 512, und daß man die Größen in Wörter mit L = 32 Bits subdividiert. Man hat dann m = 32 und d = 16, daher q = 17.
- Gemäß der bisherigen Technik erhält man das Ergebnis in 2 · n² + 9 · n Taktzyklen, d. h. in 528 896 Taktzyklen.
- Mit dem neuen Verfahren kann die Anzahl von notwendigen Taktzyklen folgendermaßen genähert werden, indem man berücksichtigt, daß
- - man die Register parallel lädt, wenn dies möglich ist,
- - man keine abundante Rechnung nach dem Schritt E4 durchführen muß, und
- - man die einigen einzelnen Taktzyklen vernachlässigt, die für die Initialisierungen der verschiedenen Rechenschaltungen notwendig sind:
- - der Schritt E1 benötigt L Taktzyklen.
- - der Schritt E2 benötigt (m-d+1)·(2·L²+6·L) Taktzyklen,
- - der Schritt E3 benötigt (m-d+1)·(2·L+1) Taktzyklen,
- - der Schritt E4 benötigt (m-d+1)·(2·L) Taktzyklen,
- - der Schritt E6 benötigt (m-d+1)·(2·(d+1)·L+L) Taktzyklen.
- Dies führt in der folgenden Formel zu einem Näherungsgesamtwert von:
- (m-d+1)·(2·L²+13·L+2·d·L+1)+L.
- Im dargestellten Beispiel beträgt die Anzahl notwendiger Taktzyklen also ungefähr 59 345, d. h. neun mal weniger als mit dem bisherigen Verfahren.
- Es ist anzumerken, daß die mögliche Wiederholung des Schritts E4 nach dem Schritt E5, die oben vernachlässigt wurde, die Rechenzeit nicht bemerkenswert verlängert. Wenn man zum Beispiel annimmt, daß man den Schritt E4 systematisch wiederholen muß, beträgt die Anzahl von zusätzlichen Taktzyklen etwa 1650, was gering ist im Vergleich mit dem Gewinn, den die Erfindung in bezug auf das Verfahren gemäß dem Stand der Technik einbringt.
- Außerdem ist anzumerken, daß man das beschriebene Verfahren so ändern kann, daß die Anzahl von mit der Außenumgebung des Coprozessors notwendigen Austauschvorgängen verringert wird, indem Register variabler Größe verwendet werden, wie sie zum Beispiel in den Fig. 5 und 6 dargestellt sind. Ein Merkmal, das man nämlich im allgemeinen von einem Coprozessor erwartet, ist es, Operationen mit einer Betriebsfrequenz durchführen zu können, die wesentlich höher liegt als die der Elemente, denen er zugeordnet ist (Prozessor, Speicher,..). Wenn der Coprozessor Datenaustauschvorgänge mit den Elementen, denen er zugeordnet ist, durchführen muß, muß er es natürlich mit einer Frequenz tun, die mit der Betriebsfrequenz dieser Elemente kompatibel ist, d. h. mit einer niedrigeren Frequenz. Man sollte also die Anzahl von Austauschvorgängen zwischen dem Coprozessor und seiner Umgebung minimieren.
- Bei Verwendung von Registern variabler Größe, die aus Unterregistern bestehen, von denen ein Teil zum Speichern von Größen verwendet werden kann, die genutzt werden sollen, kann man die Anzahl von notwendigen Austauschvorgängen verringern, indem man einige der Schritte des erfindungsgemäßen Verfahrens wie nachfolgend angegeben abändert:
- E1 - Laden der Größe M und von L Nullen in das Register 11 über den Multiplexer 14; Laden des Worts M(m-1) in das Register 40 über das Register 41, wobei das Bit hoher Gewichtung dieses Worts sich am Ausgang dieses Registers 40 befindet; Laden von L Nullen, entsprechend einem Wort M(m), in das Register 10 über den Multiplexer 13; Laden der Größe D in das Register 12 über den Multiplexer 15, wobei das Bit geringster Gewichtung des Worts D(d-1) sich am Ausgang dieses Registers 12 befindet;
- E3 - Übertragung der Inhalte der Register 16 und 17 in die Register 21 bzw. 22; Laden des Worts D(d-2) in das Register 10 über den Multiplexer 13, wobei das Bit geringer Gewichtung dieses Worts sich am Ausgang des Registers 10 befindet; Laden des Worts M(m-2-j) in das Register 43, wobei das Bit geringer Gewichtung dieses Worts zum Ausgang hin gerichtet ist;
- E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist, Verschiebung des Inhalts der Register 11 und 12; Multiplikation der Größe D mit der Größe Q(q-1-j) in der Multiplikationsschaltung 20; Subtraktion des von der Multiplikationsschaltung 20 erzeugten Ergebnisses von den vom Register 11 gelieferten Bits in der Subtraktionsschaltung 44; Speicherung der beiden letzten Wörter des von der Subtraktionsschaltung 44 erzeugten Ergebnisses mit der Bezeichnung M(m-1-j)... M(m-d-j) in den Registern 11, 10 und 40 (man wählt dann den zweiten Eingang des Multiplexers 55, so daß die Subtraktionsschaltung 45 transparent ist), wobei die Größen M(m-3-j)... M(m-d-j) im Register 11 gespeichert werden und die Größen M(m-3-j)... M(m-d-j) entsprechender Gewichtung in der Größe M ersetzen, wobei die Bits geringer Gewichtung der Wörter M(m-1-j) und M(m-2-j) zu den Ausgängen der Register 10 und 40 gerichtet sind; wenn das von der Subtraktionsschaltung 44 erzeugte Ergebnis negativ ist: Addition der Größe D, die vom Register 12 geliefert wird, zum von der Subtraktionsschaltung 44 erzeugten Ergebnis in der Additionsschaltung 56 - und Subtraktion einer Größe mit L Bits, geliefert vom Multiplexer 54 und gebildet aus einem Bit geringer Gewichtung auf Eins und aus L-1 Bits hoher Gewichtung auf Null, von der Größe Q(q-1-j), die ursprünglich im Register 40 vorhanden ist, wobei die Subtraktion in der Subtraktionsschaltung 46 erfolgt, und Speicherung des Ergebnisses im Register 40; Laden von L Nullen in das Register 11.
- Selbstverständlich werden die notwendigen Änderungen im Coprozessor durchgeführt. So sieht man zusätzliche Verbindungen zwischen den Ausgängen der Register 11 und 12 und den Multiplexern vor, die den Zugriff zu den Registern 10, 40 und 43 ermöglichen, um eine Übertragung der in den Registern 11 und 12 enthaltenen Größen zu diesen anderen Registern zu ermöglichen. Hierzu kann man dedizierte Verbindungen vorsehen, und folglich Multiplexer verwenden, die einen zusätzlichen Eingang haben, oder aber vorhandene Verbindungen nutzen, die vom Multiplexer 49 und/oder der Testschaltung 35 kommen.
Claims (3)
1. Verfahren zur Durchführung, in einem Coprozessor, einer ganzzahligen
Division einer ersten Größe M, die in Form von m Wörtern M(m-1)... M(1) M(0) mit L
Bits binär codiert vorliegt, durch eine zweite Größe D, die in Form von d Wörtern
D(d-1)... D(1) D(0) mit L Bits binär codiert vorliegt, wobei m, L und d ganzen
Zahlen sind und d < m, wobei das mit Q bezeichnete Ergebnis in Form von q
Wörtern Q(q-1) Q(q-2)... Q(1) Q(0) mit L Bits codiert vorliegt, mit q = m - d + 1 und
Q(q-1) = 00... 00 oder 00... 01, wobei das Verfahren dadurch gekennzeichnet ist,
daß es die folgenden Schritte aufweist:
E1 - Laden des Worts M(m-1) in ein erstes Register (40), wobei das Bit hoher
Gewichtung dieses Worts sich am Ausgang dieses ersten Registers (40)
befindet; Laden von L Nullen, die einem Wort M(m) entsprechen, in ein
zweites Register (10); Laden von L Nullen in ein drittes Register (11); Laden des
Worts D(d-1) in ein viertes Register (12), wobei das Bit geringster
Gewichtung dieses Worts sich am Ausgang dieses vierten Registers (12) befindet;
und
q-malige Wiederholung der folgenden Schritte E2 bis E6, wobei j ein von 0
bis q-1 variierender Index ist:
E2 - ganzzahlige Division der beiden Wörter höchster Gewichtungen der ersten
Größe M, die im zweiten und im ersten Register (10, 40) enthalten sind,
durch das Wort höchster Gewichtung der zweiten Größe D, das Inhalt des
vierten Registers (12) ist, und Speicherung der L Bits geringer Gewichtung
des Ergebnisses der ganzzahligen Division, entsprechend einer ersten
Zwischengröße Q(q-1-j), im ersten Register 40 und in fünften und sechsten
Registern (16, 17);
E3 - Laden des Worts D(d-2) in ein zweites Register (10), wobei das Bit geringer
Gewichtung dieses Worts sich am Ausgang des zweiten Registers (10)
befindet; und Laden der Wörter M(m-1-j) und M(m-j) in Serie in das dritte
Register (11), wobei die Bits geringer Gewichtung zum Ausgang dieses dritten
Registers gerichtet sind; Laden des Worts M(m-2-j) in ein siebtes Register
(43), wobei das Bit geringer Gewichtung dieses Worts zum Ausgang des
siebten Registers gerichtet ist;
E4 - · Verschiebung der Inhalte des zweiten und des vierten Registers (10, 12)
zu Serieneingängen einer ersten und einer zweiten Multiplikationsschaltung
(19, 20) und der Inhalte des dritten und des siebten Registers (11,
43), mit Rückschleifen der Ausgänge dieser Register zu ihren Eingängen;
· Multiplikation von D(d-2) mit Q(q-1-j) in der ersten
Multiplikationsschaltung (19);
· Multiplikation von D(d-1) mit Q(q-1-j) in der zweiten
Multiplikationsschaltung (20);
· Subtraktion von M(m-j) M(m-j-I) von D(d-1) · Q(q-1 j) in einer ersten
Subtraktionsschaltung (44);
· Subtraktion von M(m-2-j) von der Größe, die von der ersten
Subtraktionsschaltung (44) erzeugt wurde, in einer zweiten Subtraktionsschaltung (45),
wobei das Wort M(m-2-j) in einer Verzögerungszelle (47) verzögert
wurde;
· Subtraktion der von der zweiten Subtraktionsschaltung (45) erzeugten
Größe von D(d-2) · Q(q-1) in einer dritten Subtraktionsschaltung (29),
wobei das Ergebnis der Subtraktion eine zweite binäre Zwischengröße
Z(m j) ist, die mit 2 · L Bits codiert vorliegt; und
· Test der zweiten Zwischengröße Z(m-j), Ergebnis der letzten Subtraktion,
in einer Testschaltung (35), um zu erfahren, ob die erste Zwischengröße
Q(q-1-j) größer ist als ein gesuchter Wert eines der Wörter des
Ergebnisses Q oder ob sie einem gesuchten Wert eines dieser Wörter entspricht;
E5 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 positiv ist:
· Dekrementierung der ersten Zwischengröße Q(q-1-j) um eine Einheit
durch Verschiebung des Inhalts des ersten Registers (40); Subtraktion
einer Größe von L Bits, gebildet aus einem Bit geringer Gewichtung auf
Eins und L-1 Bits hoher Gewichtung auf Null, von der ersten
Zwischengröße Q(q-1-j), die ursprünglich im ersten Register (40) vorhanden ist,
wobei die Subtraktion in einer vierten Subtraktionsschaltung (46) erfolgt;
und Speicherung der von der vierten Subtraktionsschaltung (46) erzeugten
Größe im ersten Register (40); und
· Wiederholung des vorhergehenden Schritts E4;
E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist:
· Laden der Wörter M(m-j)... M(m-d-j) in das dritte Register (11) und der
Größe D in das vierte Register (12);
· Verschiebung des Inhalts des dritten und des vierten Registers (11, 12) mit
Rückschleifen des Ausgangs des vierten Registers (12) zu seinem
Eingang, um D(d-1) in diesem Register beizubehalten;
· Multiplikation der Größe D mit der Größe Q(q-1-j) in der zweiten
Multiplikationsschaltung (20), um eine dritte Zwischengröße B zu erhalten, die
in Form von d-1 Wörtern mit L Bits codiert ist;
· Subtraktion, in der ersten Subtraktionsschaltung (44), der dritten
Zwischengröße B, die von der zweiten Multiplikationsschaltung (20) erzeugt
wird, von den d+1 Wörtern höchster Gewichtung der ersten Größe M, die
vom dritten Register (11) geliefert werden, außer bei der ersten Iteration,
bei der man das Wort M(m) und die d Wörter höchster Gewichtung der
ersten Größe M berücksichtigt; und Test des Ergebnisses der Subtraktion;
· wenn das von der ersten Subtraktionsschaltung (44) gelieferte Ergebnis
negativ ist:
- Addition der Größe D, geliefert vom vierten Register (12), zum
Ergebnis, das von der ersten Subtraktionsschaltung (44) erzeugt wird, in einer
Additionsschaltung (56),
- Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer
Gewichtung auf Eins und aus L-1 Bits hoher Gewichtung auf Null, von
der Größe Q(q-1-j), die ursprünglich im ersten Register (40) vorhanden
ist, wobei die Subtraktion in der vierten Subtraktionsschaltung (46)
erfolgt, und
- Speicherung der von der vierten Subtraktionsschaltung (46) erzeugten
Größe im ersten Register (40);
· Erzeugung von n neuen Wörtern hoher Gewichtung M(m-1-j)... M(m-d-j)
der ersten Größe M, die das von der ersten Subtraktionsschaltung (44)
oder ggf. von der Additionsschaltung (56) erzeugte Ergebnis sind;
· Speicherung der beiden letzten neuen Wörter hoher Gewichtung M(m-1-j)
M(m-2-j) von M im zweiten und im ersten Register (10, 40), wobei die
Bits geringer Gewichtung der Wörter M(m-1-j) und M(m-2-j) zu den
Ausgängen des zweiten und des ersten Registers (10, 40) gerichtet sind,
wobei die Größen Q(q-1-j) und M(m-3-j)... M(m-d-j) zur Speicherung aus
dem Coprozessor entnommen werden;
· Laden von L Nullen in das dritte Register (11).
2. Verfahren nach Anspruch 1, bei dem die Schritte E1, E3 und E6
folgendermaßen verändert werden:
E1 - Laden der Größe M und von L Nullen in ein drittes Register (11); Laden des
Worts M(m-1) in ein erstes Register (40), wobei das Bit hoher Gewichtung
dieses Worts sich am Ausgang dieses ersten Registers (40) befindet; Laden
von L Nullen, entsprechend einem Wort M(m), in ein zweites Register (10);
Laden der Größe D in ein viertes Register (12), wobei das Bit geringster
Gewichtung des Worts D(d-1) sich am Ausgang dieses vierten Registers (12)
befindet;
E3 - Laden des Worts D(d-2) in das zweite Register (10), wobei das Bit geringer
Gewichtung dieses Worts sich am Ausgang des zweiten Registers (10) befindet; Laden des Worts M(m-2-j) in ein siebtes Register (43), wobei das Bit
geringer Gewichtung dieses Worts zum Ausgang dieses Registers gerichtet ist;
E6 - wenn das Ergebnis der letzten Subtraktion des Schritts E4 negativ ist:
· Verschiebung des Inhalts des dritten und des vierten Registers (11, 12);
· Multiplikation der Größe D mit der Größe Q(q-1-j) in der zweiten
Multiplikationsschaltung (20);
· Subtraktion des von der zweiten Multiplikationsschaltung (20) erzeugten
Ergebnisses von den vom dritten Register (11) gelieferten Bits in der
ersten Subtraktionsschaltung (44);
· wenn das von der ersten Subtraktionsschaltung (44) gelieferte Ergebnis
negativ ist:
- Addition der Größe D, geliefert vom vierten Register (12), zum
Ergebnis, das von der ersten Subtraktionsschaltung (44) erzeugt wird, in der
Additionsschaltung (56),
- Subtraktion einer Größe mit L Bits, gebildet aus einem Bit geringer
Gewichtung auf Eins und aus L-1 Bits hoher Gewichtung auf Null, von
der Größe Q(q-1-j), die ursprünglich im ersten Register (40) vorhanden
ist, wobei die Subtraktion in der vierten Subtraktionsschaltung (46)
erfolgt, und
- Speicherung des Ergebnisses dieser letzten Subtraktion im ersten
Register (40);
· Speicherung der beiden letzten Wörter des von der ersten
Subtraktionsschaltung (44) oder ggf. der Additionsschaltung (56) erzeugten
Ergebnisses mit der Bezeichnung M(m-1-j)... M(m-2-j) im dritten, zweiten und
ersten Register (11, 10, 40), wobei die Größen M(m-3-j)... M(m-d-j) im
dritten Register (11) gespeichert werden und die Größen M(m-3-j)...
M(m-d-j) entsprechender Gewichtung in der Größe M ersetzen, wobei die
Bits geringer Gewichtung der Wörter M(m-1-i) und M(m-2-j) zu den
Ausgängen des zweiten und des ersten Registers (10, 40) gerichtet sind;
· Laden von L Nullen in das dritte Register (11).
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Schritt E2 die
folgenden Unter-Schritte aufweist:
E21 - Initialisierung der Testschaltung (35) und der Subtraktionsschaltungen
(29, 28) auf Null;
E22 - Verschiebung eines Bits des dritten und des vierten Registers (11, 12),
wobei das dritte Register (11) als Bit hoher Gewichtung das Bit hoher
Gewichtung des zweiten Registers (10) wiedergewinnt, wobei der
Ausgang des vierten Registers (12) mit seinem Eingang verbunden ist;
Subtraktion, in der dritten Subtraktionsschaltung (29), des Bits hoher
Gewichtung des zweiten Registers (10) vom Bit geringer Gewichtung
des vierten Registers (12), wobei die fünfte Subtraktionsschaltung (28)
eine Subtraktion des Bits geringer Gewichtung des dritten Registers
(11) von Null durchführt;
E23 - Verschiebung von 2·L-1 Bits des dritten und des vierten Registers (11,
12), wobei der Ausgang des vierten Registers (12) mit seinem Eingang
verbunden ist, wobei der Eingang des dritten Registers (11) mit dem
Ausgang der fünften Subtraktionsschaltung (28) verbunden ist;
Subtraktion der 2·L-1 Bits aus dem dritten Register (11) von Null in der
fünften Subtraktionsschaltung (28); Subtraktion des Ergebnisses aus der
fünften Subtraktionsschaltung (28) von den Bits des vierten Registers
(12);
E24 - Speicherung des letzten Übertrags der dritten Subtraktionsschaltung
(29) in der Testschaltung (35) und Erzeugung, am Ausgang dieser
Testschaltung, einer binären Größe, die dem Komplement des gespeicherten
Übertrags entspricht;
E25 - Verschiebung eines Bits des ersten und zweiten des Registers (40, 10),
wobei das Bit hoher Gewichtung des ersten Registers (40) als Bit
geringer Gewichtung des zweiten Registers (10) geladen wird, wobei die
in der Testschaltung (35) gespeicherte binäre Größe als Bit geringer
Gewichtung in das erste Register (40) geladen wird;
E26 - Initialisierung der dritten und der fünften Subtraktionsschaltung (28,
29);
E27 - 2·L-i-malige Wiederholung der Schritte E2 bis E6, wobei die fünfte
Subtraktionsschaltung (28) eine Subtraktion des Inhalts des dritten
Registers (11) von Null durchführt, wenn der vorher gespeicherte Übertrag
gleich Eins ist, oder die fünfte Subtraktionsschaltung (28) eine
Subtraktion des Inhalts des dritten Registers (11) vom Inhalt des vierten
Registers (12) durchführt, wenn der vorher gespeicherte Übertrag
gleich Null ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9804273A FR2777098B1 (fr) | 1998-04-02 | 1998-04-02 | Procede de realisation ameliore d'une division entiere |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69900127D1 DE69900127D1 (de) | 2001-07-05 |
DE69900127T2 true DE69900127T2 (de) | 2001-09-13 |
Family
ID=9524919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69900127T Expired - Lifetime DE69900127T2 (de) | 1998-04-02 | 1999-03-23 | Verbessertes Verfahren zur Ausführung ganzzahliger Division |
Country Status (4)
Country | Link |
---|---|
US (1) | US6470372B1 (de) |
EP (1) | EP0947913B1 (de) |
DE (1) | DE69900127T2 (de) |
FR (1) | FR2777098B1 (de) |
Cited By (1)
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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4712247B2 (ja) * | 2001-08-31 | 2011-06-29 | 富士通セミコンダクター株式会社 | 整数除算または整数剰余算を含むアプリケーションプログラム向けのマイクロプロセッサの開発システム |
US20080250032A1 (en) * | 2007-04-04 | 2008-10-09 | International Business Machines Corporation | Method and system for efficiently saving and retrieving values of a large number of resource variables using a small repository |
RU2559771C2 (ru) * | 2013-10-30 | 2015-08-10 | Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Северо-Кавказский федеральный университет" | Устройство для основного деления модулярных чисел |
RU2559772C2 (ru) * | 2013-11-06 | 2015-08-10 | Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Северо-Кавказский федеральный университет" | Устройство для основного деления модулярных чисел в формате системы остаточных классов |
RU2661797C1 (ru) * | 2017-06-13 | 2018-07-19 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Вычислительное устройство |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL97413A (en) * | 1991-03-04 | 1995-06-29 | Fortress U & T 2000 Ltd | Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands |
FR2743646B1 (fr) * | 1996-01-12 | 1998-03-06 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere |
FR2745647B3 (fr) * | 1996-03-01 | 1998-05-29 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement |
-
1998
- 1998-04-02 FR FR9804273A patent/FR2777098B1/fr not_active Expired - Fee Related
-
1999
- 1999-03-23 DE DE69900127T patent/DE69900127T2/de not_active Expired - Lifetime
- 1999-03-23 EP EP99470010A patent/EP0947913B1/de not_active Expired - Lifetime
- 1999-03-31 US US09/282,370 patent/US6470372B1/en not_active Expired - Lifetime
Cited By (2)
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 |
---|---|
EP0947913B1 (de) | 2001-05-30 |
EP0947913A1 (de) | 1999-10-06 |
FR2777098A1 (fr) | 1999-10-08 |
FR2777098B1 (fr) | 2001-04-13 |
US6470372B1 (en) | 2002-10-22 |
DE69900127D1 (de) | 2001-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69330848T2 (de) | Einrichtung und Verfahren zur digitalen Unterschrift | |
DE69506675T2 (de) | Verfahren zur Ausführung von modularen Reduktion nach der Montgomery-Methode | |
DE69703085T2 (de) | Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen | |
DE3854321T2 (de) | Populationszählung in Rechnersystemen. | |
DE69811877T2 (de) | ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert. | |
DE69506674T2 (de) | Verfahren zur Verwendung der modularen Multiplikation nach der Montgomery-Methode | |
DE60314584T2 (de) | Maskierung von in einem Restklassensystem zerlegten bzw. faktorisierten Daten | |
DE69130581T2 (de) | Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode | |
DE3650335T2 (de) | Rechenverfahren und -gerät für endlichfeldmultiplikation. | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE69826963T2 (de) | Gerät für die modulare Inversion zur Sicherung von Information | |
DE102010048485A1 (de) | Textureinheit zur Universalberechnung | |
DE102020105536A1 (de) | Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen | |
DE102007054316A1 (de) | Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem | |
DE10260655B3 (de) | Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung | |
DE10357661B4 (de) | Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren | |
DE69226110T2 (de) | Recheneinheit zum Multiplizieren langer ganzer Zahlen Modul M und R.S.A-Wandler mit einer derartigen Multiplikationsanordnung | |
DE69501581T2 (de) | Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode | |
DE69424790T2 (de) | Prozessor für schnelle Fourier-Transformation | |
DE102007056104A1 (de) | Verfahren und Vorrichtung zur Multiplikation von Binäroperanden | |
DE69900127T2 (de) | Verbessertes Verfahren zur Ausführung ganzzahliger Division | |
DE68927398T2 (de) | Digitale Divisionsschaltung mit einem N/2-Bit-Subtrahierer für N-Subtraktionen | |
DE10164416A1 (de) | Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens | |
DE10219158A1 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
DE3447634C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |