08.03.2014 Aufrufe

Einführung in Computer Microsystems

Einführung in Computer Microsystems

Einführung in Computer Microsystems

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Formel berechnenDas RAM ist mit folgenden Werten <strong>in</strong>itialisiert:<br />

ram(i) Wert Bedeutung<br />

0 011BC3 16 Modul m<br />

1 005923 16 a<br />

2 000FEE 16 b<br />

3 00AFFE 16 c<br />

4 0092D3 16 R 2<br />

5 000001 16 Konstante 1<br />

6 000000 16 Frei zur Verwendung (tmp)<br />

Berechnen Sie mit Hilfe der Additions- und Montgomery-Multiplikations-Komponente die Formel (a + b) 2 c = r.<br />

Überlegen Sie wie <strong>in</strong> welcher Reihenfolge Sie die Operationen ausführen und wann Sie wie die Operanden <strong>in</strong> den Montgomery-<br />

Raum überführen und wieder zurück transformieren. Ihre Lösung sollte so wenig Operationen wie möglich enthalten! Erweitern<br />

Sie die Testbench dementsprechend, um obige Formel zu berechnen.<br />

E<strong>in</strong>e effiziente Lösung ist:<br />

a) Addition: tmp = a + b<br />

b) Montgomery-Multiplikation: b = MM tmp, R 2 (Transformation von a + b <strong>in</strong> den Montgomery-Raum (a + b)R)<br />

c) Montgomery-Multiplikation: a = MM (b, b) ((a + b) 2 im Montgomery-Raum ((a + b) 2 )R)<br />

d) Montgomery-Multiplikation: tmp = MM (a, c) (Berechnung Endergebnis (a + b) 2 c <strong>in</strong>klusive Rücktransformation aus<br />

dem Montgomery-Raum)<br />

Das Endergebnis ist 00002A 16 = 42 10 . Dies lässt sich mit Hilfe von nur 1 Addition und 3 Montgomery-Multiplikationen<br />

berechnen:<br />

...<br />

burst(OP_ADD , a_addr , b_addr , tmp_addr);<br />

burst(OP_MULT , tmp_addr , r2_addr , b_addr);<br />

burst(OP_MULT , b_addr , b_addr , a_addr);<br />

burst(OP_MULT , a_addr , c_addr , tmp_addr);<br />

... oder auch mit ...<br />

nonburst(OP_ADD , a_addr , b_addr , tmp_addr);<br />

nonburst(OP_MULT , tmp_addr , r2_addr , b_addr);<br />

nonburst(OP_MULT , b_addr , b_addr , a_addr);<br />

nonburst(OP_MULT , a_addr , c_addr , tmp_addr);<br />

...<br />

H. Gregor Molter molter@iss.tu-darmstadt.de (06151) 16-6692 – Alexander Biedermann biedermann@iss.tu-darmstadt.de (06151) 16-6710 4

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!