<div dir="ltr">Hi Trevor,<div><br></div><div><div>Sandy2x takes 156076 Haswell cycles for X25519 shared-secret </div><div>computation. This is very close to the Ivy Bridge cycles. Note that, </div><div>however, the non-vectorized implementation from the Ed25519 </div><div>paper performs much better on Haswell than on Ivy Bridge: </div><div>161648 cycles versus 182708 cycles.</div><div><br></div><div>Armando Faz-Hernández and Julio López have a Latincrypt paper </div><div>this year about an X25519 implementation targeting for Haswell. </div><div>They claim 1565xx Haswell cycles for shared-secret computation. </div><div>They use a 4-way vectorized multiplier to perform 2 field </div><div>multiplications/squarings at the same time. I think a better </div><div>approach would be to find 4 independent multiplications/squarings </div><div>in the formula and vectorize across them, but I haven't tried.</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Best regards,<br clear="all"><div><div><span><span style="color:rgb(192,192,192)">Tung Chou</span></span></div></div>
<br><div class="gmail_quote">On Tue, Sep 29, 2015 at 10:29 PM, Trevor Perrin <span dir="ltr"><<a href="mailto:trevp@trevp.net" target="_blank">trevp@trevp.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Tung Chou's "Sandy2x" code for 25519 on Sandy Bridge and Ivy Bridge is<br>
around 10-20% faster than other implementations:<br>
<br>
<a href="https://eprint.iacr.org/2015/943" rel="noreferrer" target="_blank">https://eprint.iacr.org/2015/943</a><br>
<br>
Speedup is attributed to using the 2-way 32x32->64 vectorized<br>
multiplier (vpmuludq) instead of the 64x64->128 serialized multiplier.<br>
<br>
The paper doesn't say whether this strategy also pays off on Haswell<br>
(which seems to be lagging in 25519 performance?):<br>
<br>
<a href="https://docs.google.com/spreadsheets/d/1SO3NGX-EgIZ1slw9uExb5FoeFy5TVkuA2lEutP6roYI/edit#gid=0" rel="noreferrer" target="_blank">https://docs.google.com/spreadsheets/d/1SO3NGX-EgIZ1slw9uExb5FoeFy5TVkuA2lEutP6roYI/edit#gid=0</a><br>
<br>
<br>
Trevor<br>
_______________________________________________<br>
Curves mailing list<br>
<a href="mailto:Curves@moderncrypto.org" target="_blank">Curves@moderncrypto.org</a><br>
<a href="https://moderncrypto.org/mailman/listinfo/curves" rel="noreferrer" target="_blank">https://moderncrypto.org/mailman/listinfo/curves</a><br>
</blockquote></div><br></div></div>