De camino a la cima: Magma y Grasshopper en Elbrus

Recientemente, han aparecido más y más artículos sobre el rendimiento de los procesadores rusos Elbrus en diversas tareas. El tema de la criptografía aún permanece detrás de escena, aunque en diferentes momentos hubo referencias a las altas capacidades de Elbrus (algunos GOST son 9 veces mejores en Elbrus-4C que en Intel Core i7-2600), luego a la mala optimización del compilador y , en consecuencia, la velocidad extremadamente baja de los algoritmos implementados (¿Grasshopper es 100 veces más lento que en Intel?). Propongo finalmente descubrir qué puede hacer Elbrus, usando el ejemplo de dos algoritmos de cifrado simétrico GOST.





Para que el artículo no sea demasiado extenso, asumiremos que el lector tiene una idea general de las arquitecturas de procesador, incluido Elbrus. Si no es así, el sitio web del desarrollador (empresa MCST) tiene una excelente guía de programación y un libro sobre arquitectura en general. Fue con estos materiales que comenzó mi relación con Elbrus. También noto que los procesadores modernos tienen muchos mecanismos y características diferentes, por lo que en el artículo solo tocaré aquellos que, en mi opinión, son importantes en la implementación de los algoritmos seleccionados.





Lo que la arquitectura de Elbrus tiene para ofrecer

6 (- ), . 5 (SIMD) 128- .





: 200 (64-) . SIMD , , . , 5 128-.





. — APB (Array Prefetch Buffer). , -.





, . , , , , , , .





, x86-64, . : , x86-64 , , , ARM-. , , SIMD , . , , .





, , , . , , ECB, CTR, MGM. AES, x86-64 . , ( ) . , .





: , — .









-





-









L1d





L1i





L2





L3





-4





E2Kv3





4





0.75





4 x 64





4 x 128





4 x 2









-1+





E2Kv4





1





0.985





1 x 64





1 x 128





1 x 2









-8





E2Kv4





8





1.2





8 x 64





8 x 128





8 x 512





16





-8





E2Kv5





8





1.55





8 x 64





8 x 128





8 x 512





16





-23





E2Kv6





2





2





2 x 64





2 x 128





2 x 2









-16





E2Kv6





16





2





16 x 64





16 x 128





8 x 1





32





x86-64 AVX AVX2. 3 . , .





. , , 3 4 6 64- , 5 — 4 128- .





. , x86-64, . , , (, , ). : , . intrinsic .





ECB. ( ) , , . , . — 1 . , . . , . :





















-4





116 /





137 /





5.2 /





-1+





151 /





179 /





5.2 /





-8





185 /





220 /





5.2 /





-8





402 /





520 /





2.8 /





-23





669 /





670 /





2.8 /





-16





671 /





672 /





2.8 /





8 E2Kv3/E2Kv4 16 E2Kv5/E2Kv6. ( 6) APB . 6 APB , . , .





Intel Core i3-7100 @ 3.9 . AVX — 458 /, 8.1 /; AVX2 — 1030 /, 3.6 /. Intel ( !) x86-64 AVX 1.5 ( 3 4 ), x86-64 AVX2 — 1.3 ( 5 ).





, . , S, , SIMD-, "" LS ( ) 64 ( LS ).





x86-64 AVX- ( 128- , 128 ). Scale-Index-Base-Displacement ( ), Scale 16, — 8. L1d (64 ) 4 , ( , x86-64 2 ).





, , . 5 __v2di (. e2kintrin.h ), , 128-.





, . , , . - .





, :





















-4





52 /





69 /





10.4 /





-1+





63 /





90 /





10.4 /





-8





80 /





110 /





10.4 /





-8





95 /





150 /





9.9 /





-23





170 /





171 /





11 /





-16





171 /





172 /





11 /





( ) Intel Core i7-6700 @ 4 — 170/, 22.4 /. , 2 .





: 3 . , , .





:





















-4





78 /





83 /





8.6 /





-1+





102 /





108 /





8.7 /





-8





126 /





133 /





8.6 /





-8





248 /





291 /





5.1 /





-23





453 /





454 /





4.2 /





-16





454 /





455 /





4.2 /





Intel Core i7-6700 @ 4 : 360 /, 10.6 /. , E2Kv3 E2Kv4 , - , x86-64 . 5 128- 2 .





E2Kv6 i7-6700 , ECB . i7-6700 « », , ECB : — Intel Core i7-9700K @ 4.7 — 411 /, 10.9 /. , 2.5 .





, , - .





, , 5 : . .





, . , : Intel/AMD . , , .





, .





P.S.

. , . , .





A pesar de que para obtener los resultados descritos logré tratar con Elbrus sobre la base de información y documentación abiertas para el compilador, quiero expresar mi gratitud al personal de MCST, en particular a Alexander Trush, por las respuestas. a las preguntas que he hecho periódicamente y, por supuesto, por brindar acceso remoto a nuevos procesadores.








All Articles