¿Los nuevos conjuntos de instrucciones que se encuentran en la arquitectura Haswell de Intel hacen alguna diferencia en las operaciones criptográficas?

7

La arquitectura Haswell de Intel tiene soporte para varias Instrucciones de manipulación de bits . En las propias palabras de Intel,

  

Las instrucciones de manipulación de bits son útiles para bases de datos comprimidas, hash, aritmética de gran número y una variedad de códigos de propósito general.

¿Las nuevas instrucciones encontradas en el procesador Haswell hacen alguna diferencia en las velocidades de cálculo de las funciones criptográficas actuales o pendientes que se están utilizando?

    
pregunta Ayrx 02.05.2013 - 17:54
fuente

2 respuestas

10

La mayoría de estas operaciones son "triviales": reemplazan combinaciones de dos o tres códigos de operación existentes. Por ejemplo, el tipo de instrucción BLSR es, como se especifica en la página a la que te vinculas, equivalente a una resta seguida de un AND a nivel de bits. Esto ya se podría hacer. Las operaciones adicionales no dañan, y los compiladores se beneficiarán de ellas, y, sin duda, algunas funciones criptográficas obtendrán algunos ciclos mediante el uso de algunos de estos códigos de operación, pero no hay un resultado innovador que esperar.

Entre las instrucciones, las más interesantes son las de conteo ( LZCNT , TZCNT ) porque contar el número de ceros iniciales o finales en un registro de N bits ha costado O (log N) cuando se utilizan códigos de operación "clásicos". Estas operaciones tienen algún uso en algunos casos de esquina de cálculos en enteros grandes. En particular, creo que esto ayudará a GCD binario , que se utiliza para calcular divisiones en campos finitos: un paso importante En cálculos sobre curvas elípticas. En este momento, la división en campos finitos es tan costosa (en comparación con la multiplicación) que vale la pena usar coordenadas proyectivas para calcular cosas en las curvas elípticas: esto implica aproximadamente diez veces más operaciones, pero evita muchas divisiones, por lo que se suma a las ganancias netas. Una implementación rápida de GCD binario podría cambiar esa imagen un poco. Para más usos de las operaciones de conteo, consulte esta página de Wikipedia .

Lo que realmente puede impulsar las cosas no son las nuevas instrucciones, sino los registros más grandes. AVX2 ofrece registros de 256 bits; eso es espacio suficiente para calcular ocho SHA-256 en paralelo, al igual que SSE2 permite cuatro paralelo SHA-256. El software de descifrado de contraseñas se beneficiará de esto ... (aunque GPU son posiblemente mejores). Se está trabajando para definir modos de hash de árbol para convertir una función hash dada en un sistema que se beneficia del paralelismo; p.ej. consulte este artículo (de Keccak, también conocido como SHA-3, diseñadores). NIST ha expresado su voluntad de definir algún estándar al respecto.

Por supuesto, todavía se necesita algún escenario particular para beneficiarse de tales ganancias de CPU. En la mayoría de los usos de hash (o cifrado o lo que sea), la criptografía no es el cuello de botella; I / O es. Cuando hash archivos, no puedes hacerlo más rápido de lo que puedes leerlos desde el disco.

    
respondido por el Tom Leek 02.05.2013 - 19:04
fuente
1

Creo que la nueva instrucción MULX ayudará un poco, ya que ofrece 3 operandos. Esto podría eliminar algunos MOV s y acelerar los bucles apretados.

El siguiente procesador Intel Broadwell ofrecerá ADCX y ADOX para habilitar dos bucles independientes ADD . Esto ha sido diseñado específicamente con criptografía en mente, consulte enlace

Por supuesto, todo esto no es innovador, pero puede resultar en, por ejemplo, una aceleración del factor dos, tal vez menos.

    
respondido por el cxxl 29.06.2013 - 16:35
fuente

Lea otras preguntas en las etiquetas