¿Qué rendimiento de minería podemos esperar aproximadamente de las extensiones Intel SHA de la próxima arquitectura de procesador Skylake?

Intel tiene programado lanzar su nueva microarquitectura x86 SkyLake en el tercer trimestre de 2015. Entre otras características interesantes, presentará extensiones SHA que permitirán la aceleración de hardware de la familia de algoritmos Secure Hash, incluido SHA256 como lo usa Bitcoin.

En términos de velocidad de procesamiento de SHA, es común saber que:

CPU <GPU <FPGA <ASIC

Pero, ¿dónde encajarán estas nuevas extensiones en esta fila? ¿Y cuántos órdenes de magnitud de diferencia de velocidad podemos esperar que tengan en comparación con las opciones de hardware anteriores?

¿Sería útil comparar la medida en que las extensiones AES existentes de Intel aceleran las funciones AES en comparación con AES solo de software?

EDITAR : después de leer más sobre este tipo de instrucciones de CPU de propósito especial, me doy cuenta de que lo más probable es que aceleren las cosas para que sean solo varias veces más rápido que la línea de base del software; no varios órdenes de magnitud más rápidos, como los ASIC, o incluso los FPGA. Aún así, la pregunta podría ser una referencia interesante, así que lo dejaré.

Respuestas (1)

Tratemos de hacer una estimación aproximada.

El artículo de Intel Intel SHA Extensions brinda algunos detalles sobre estas instrucciones, así como un código de muestra. La característica principal es la sha256rnds2instrucción, que realiza dos rondas de SHA256, de las 64 rondas que se necesitan para codificar un bloque de 64 bytes. Un encabezado de Bitcoin tiene una longitud de 80 bytes, por lo que son 2 bloques, y debido a que el algoritmo de minería es SHA256D, debemos hacerlo dos veces. Entonces, necesitamos ejecutar sha256rnds2128 veces para realizar un hash de Bitcoin.

No soy un experto en arquitecturas de CPU modernas, pero sospecho que una instrucción compleja como esta tomaría más de un ciclo de reloj; sin embargo, supongamos generosamente que no. Dado que cada ronda depende de los resultados de la anterior, es probable que estas rondas deban ejecutarse en serie (en cada núcleo), por lo que no se puede realizar mucha paralelización. Pero supongamos muy generosamente que hay recursos que se pueden compartir, de modo que la CPU pueda ejecutar dos sha256rnds2instrucciones por ciclo de reloj. Supongamos generosamente que todo el código auxiliar necesario para configurar sha256rnds2se puede canalizar y no requiere ciclos de reloj adicionales. Por lo tanto, se necesitan 64 ciclos de reloj para realizar un hash de Bitcoin.

Ahora, ¿qué tan rápido podemos hacer funcionar el reloj y, lo que es más importante, cuánta energía se usaría? Dado que el consumo de energía es primordial, supongamos que queremos usar una CPU móvil. El artículo de Wikipedia sobre Skylake sugiere que el modelo SKL-Y-1 tendrá 2 núcleos y una potencia de diseño térmico (TDP) de 4 W. Supongamos que el TDP representa el consumo de energía real para nuestra aplicación de minería y, además, despreciemos la potencia. consumo de todos los demás componentes de nuestra máquina (memoria, fuente de alimentación, etc). No hay información sobre las velocidades de reloj, pero los procesadores Core M actuales de Intel tienen una velocidad de reloj base de hasta 1,2 GHz, con "turbo" de hasta 2,9 GHz. Supongamos que este nuevo dispositivo Skylake podría funcionar a 3 GHz sostenidos.

Así que nuestra tasa de hash general es

 3x10^9 clocks/sec / 64 clocks/hash * 2 cores =  93.75 MHash/sec

Con un consumo de energía de 4 W, esto da una eficiencia de 23,4 MHash/J .

En comparación, según la comparación de hardware de minería de bitcoin.it , los mineros ASIC actuales pueden producir 1000-2000 MHash/J.

Conclusión:

Incluso bajo supuestos extremadamente optimistas sobre el rendimiento minero de los procesadores Skylake, los dispositivos ASIC modernos siguen siendo entre 40 y 80 veces más eficientes.

Debido al estado medio, solo necesita codificar 16 bytes en la primera invocación. Solo necesita codificar 32 bytes en la segunda invocación, porque está codificando el hash. Entonces solo necesitas sha256rnds2 64 veces. No es que importe, por supuesto.
@Nick: Buen punto. Trataré de editar cuando tenga la oportunidad.
Suponiendo que Intel utilice la implementación descrita en esta patente , el tiempo de instrucción es de 3 ciclos por ejecución de sha256rnds2.
Presumiblemente, las instrucciones SHA tendrán un rendimiento similar al de AESENC/AESDEC cuando aparezcan en un sucesor de Skylake ( actualmente solo en Goldmont , que es de baja potencia con una capacidad de ejecución fuera de servicio limitada). Agner Fog no incluye AESENC tiempos para Silvermont, desafortunadamente, a pesar de que es compatible con AES-NI ).
De todos modos, el AESENC de SKL tiene una latencia de 4c, canalizado a uno por rendimiento de 1c . Para aprovechar esto para una instrucción SHA con esos tiempos, simplemente trabaja en 4 hashes SHA en paralelo, por lo que mantiene cuatro sha256rnds2instrucciones en vuelo, con un cuello de botella en el rendimiento SHA en lugar de la latencia . Esto debería funcionar incluso en Goldmont, suponiendo que su sha256rnds2unidad de ejecución esté canalizada de manera similar. (Puede que no lo sea: las primeras CPU en implementar PCLMULUDQ usaron microcódigo, y no fue hasta Broadwell que bajó hasta 1 uop).
Con un código bien ajustado, probablemente pueda saturar port0 en un núcleo con un subproceso, por lo que el hiperprocesamiento no ayudará. (A menos que haya otras partes del código que también lleven tiempo y que puedan generar cuellos de botella en otra cosa). Por cierto, Goldmont TDP=10 W para el modelo de escritorio (2,0 - 2,5 GHz) o 6 W para el móvil con el mismo turbo máximo. Supongo que un bucle que hace hashes SHA256 no generará el calor máximo y podría funcionar con el turbo máximo mientras se mantiene por debajo de 6W. Entonces, ¿sus números podrían estar dentro de un factor de 2 más o menos, tal vez?
@PeterCordes: Gracias por la información. Mientras tanto, desde que escribí esto, la eficiencia de la minería ASIC ha mejorado en un factor de 5.