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.