Einführung in Computer Microsystems
Einführung in Computer Microsystems
Einführung in Computer Microsystems
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