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é.
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 sha256rnds2
instrucció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 sha256rnds2
128 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 sha256rnds2
instrucciones por ciclo de reloj. Supongamos generosamente que todo el código auxiliar necesario para configurar sha256rnds2
se 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.
Nick ODell
Nate Eldredge
Marca
sha256rnds2
.pedro cordes
pedro cordes
sha256rnds2
instrucciones 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 susha256rnds2
unidad 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).pedro cordes
Nate Eldredge