ECC optimization on Sandy Bridge
The cost of cofactor h = 1 Daan Sprenkels hello@dsprenkels.com
Radboud University Nijmegen
1 April 2019
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 1 / 30
ECC optimization on Sandy Bridge The cost of cofactor h = 1 Daan - - PowerPoint PPT Presentation
ECC optimization on Sandy Bridge The cost of cofactor h = 1 Daan Sprenkels hello@dsprenkels.com Radboud University Nijmegen 1 April 2019 Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 1 / 30 Outline Introduction
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 1 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 2 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 2 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 3 / 30
−4 −2 2 4 x −4 −2 2 4 y
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 3 / 30
−4 −2 2 4 x −4 −2 2 4 y P Q −R R
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 3 / 30
−4 −2 2 4 x −4 −2 2 4 y P −R R
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 3 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 4 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 4 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 4 / 30
1 2 3 4 5 6 7 8 9 10 11 x −5 −4 −3 −2 −1 1 2 3 4 5 y
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 5 / 30
1 2 3 4 5 6 7 8 9 10 11 x −5 −4 −3 −2 −1 1 2 3 4 5 y P Q −R R
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 5 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 6 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 6 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 6 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 7 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 7 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 8 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 8 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 8 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 8 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 9 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 10 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 10 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 10 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 10 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 10 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 11 / 30
?
?
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 11 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 12 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 13 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 13 / 30
?
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 13 / 30
?
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 13 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 14 / 30
(highlight added by me) Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 14 / 30
?
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 15 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 16 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 17 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 18 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 18 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 19 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 19 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 20 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 21 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 21 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 21 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 21 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 21 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 22 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 22 / 30
i+j=k figi + i+j=k+12
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 22 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 23 / 30
dbl_generic x y z x3 31 y3 27 z3 34 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 32 33
⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ₉ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ₂₀
Legend add subtract triple multiply by small constant multiply square
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 24 / 30
dbl_4x (3M + 4c) extra carry operation x y z x3 31 y3 27 z3 32 14 13 12 15 5 2 34 8 ⟦-b/2⟧ 3 17 16 ⟦-3⟧ 18 ⟦2b⟧ 6 24 23 ⟦3⟧ 1 28 26 30 9 = -a₉/2 19 25 22 25 29a 4 11 10 7 ⟦-6⟧ 34 33 29b ⟦8⟧ 11 22 21 ⟦-3⟧ 20 = -a₂₀
Legend add subtract triple multiply by small constant multiply square
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 24 / 30
add_generic x1 y1 z1 x2 y2 z2 x3 40 y3 38 z3 43 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42
⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧
Legend add subtract triple multiply by small constant multiply
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 25 / 30
add_4x (3M and 4c) extra carry after operation x1 y1 z1 x2 y2 z2 x3 40 y3 38 z3 43 1 2 3 16 14 15 19 25 18 6 4 5 11 9 10 36 33 32 27b 26b ⟦3⟧ 31 30 ⟦3⟧ 37 23 24 35 13 39 8 41 42 34 29 22 21 ⟦3⟧ 20 28 27a 26a ⟦3⟧ 7 12 17
Legend add subtract triple multiply by small constant multiply
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 25 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 26 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 26 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 26 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 27 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 28 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 28 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 29 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 29 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 30 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 31 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 32 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 33 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 34 / 30
w − 1 down to 0 do
i = 0 then
i ]P
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 35 / 30
w − 1 down to 0 do
i > 0 then
i ]P
i < 0 then
i ]P
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 36 / 30
i < 0 then
i
i
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 37 / 30
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 38 / 30
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 ? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+ 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 39 / 30
3
2
1
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 40 / 30
4
3
2
1
Daan Sprenkels ECC optimization on Sandy Bridge 1 April 2019 41 / 30