¿Qué determina el rendimiento de SHA256 en diferentes tipos de hardware?

Sé que las respuestas a muchas preguntas aquí abordan brevemente este punto, pero me gustaría obtener una respuesta consolidada que realmente toque las diferencias clave entre los diferentes tipos de hardware que permiten que SHA256 funcione mejor, en lugar del menos relacionado. tangentes otras preguntas discutir. Si bien mi preocupación inmediata es Bitcoin, sé que algunas otras criptomonedas usan algoritmos diferentes, así que siéntete libre de hacer referencia a ellas si te ayudan a expresar tu punto.

  • ¿Por qué el algoritmo hash de Bitcoin, SHA256, funciona mejor en diferentes tipos de hardware? ¿Qué hace que un ASIC/FPGA sea capaz de calcular más H/s que una GPU, una GPU que una CPU, etc.?

  • ¿Qué es "la complejidad de los núcleos"? ¿Es esta una referencia a la cantidad de núcleos o a la complejidad real del troquel? En ambos casos, ¿por qué esto no es un factor en el rendimiento de SHA256? Haciendo referencia a la respuesta de David Perry aquí :

Es importante tener en cuenta, por cierto, que lo único que no le dará más hashes por segundo es la complejidad de los núcleos. Esta es la razón por la que Nvidia puede ser una gran tarjeta para juegos, pero apestan para la minería: los juegos hacen un mejor uso de las nuevas instrucciones exóticas que SHA256.

  • ¿Se puede optimizar SHA256 para que funcione mejor por arquitectura? ¿Se pueden realizar optimizaciones en el proceso de doble hash?

Respuestas (2)

El desempeño de la minería puede verse como compuesto por dos factores. Uno es el total de recursos disponibles. El otro es qué fracción de esos recursos puede aplicar de manera útil a la minería.

Los ASIC y FPGA sobresalen en la minería porque puede usar efectivamente una fracción muy alta de sus recursos disponibles para la minería. Las CPU son terribles en la minería porque una gran fracción de sus recursos son inútiles para la minería: están optimizadas para el acceso a la memoria, la toma de decisiones, las matemáticas de coma flotante y muchas otras cosas que no ayudan en absoluto con la minería.

La "complejidad de los núcleos" se refiere a cuán sofisticadas son las operaciones que pueden realizar los núcleos. Esto no ayuda con la minería, que solo requiere operaciones muy simples y, por lo tanto, solo aumenta la fracción de los recursos disponibles que no puede usar para la minería.

SHA256 se puede optimizar en gran medida para cada arquitectura. En los primeros días de la minería, hubo una gran "carrera armamentista" para microoptimizar la minería para varias arquitecturas.

Si se me permite, y esto podría estar un poco fuera de lugar, pero es la idea correcta.

Continuando con la respuesta del Sr. Scwartz.

Otro papel importante en H/s es OpenCL y CUDA. Cada uno proporciona un medio de comunicación/un protocolo entre fabricantes para que diferentes hardware puedan interactuar más fácilmente. Entonces, como dijo Schwartz, debe utilizar la potencia informática (recursos) del chip para que sea útil. OpenCL y CUDA permiten que el software utilice muchas piezas de hardware diferentes a la vez. Por lo tanto, algunos de los pasos para realizar la minería se pueden realizar en la CPU, mientras que otros se realizan en la GPU. Gracias a OpenCL, puede llamar fácilmente a una función y utilizará los recursos que tiene disponibles. (No digo que OpenCL tenga una función doHash() sino más bien algo similar a if(elegantWork) useCPU; else if(bruteWork) useGPU;)

También la arquitectura del lenguaje de máquina de las computadoras jugaría un papel importante. El ISC (Instruction Set Computer) es una computadora con un conjunto definido de instrucciones que su procesador puede realizar. Así que hay muchos tipos. RISC, ARM, etc. (No sé muchos de ellos o hay muchas diferencias) Pero algunos tienen instrucciones que son útiles para la minería y algunos tienen otras que no lo son. Hay circuitos en algunos chips que intentan adivinar el futuro, por lo que si ve que va a ejecutar una declaración de bifurcación, podría intentar avanzar en cada rama y luego, una vez que sepa, descartará todas las demás y continuará en la rama correcta. . Bueno, puede que no haya necesidad de eso en el hash, por lo que la parte del chip no nos sirve si queremos hacer hash.

Los ASIC's y FPGA's son chips (Circuitos Integrados) que están diseñados específicamente para la minería. Solo tienen circuitos que necesitan triturar, y muchos de ellos, y desechar el resto de las cosas regulares. Es por eso que un ASIC solo es bueno para hash si esa es su aplicación (solo "sabe" cómo hash). FPGA es una matriz de compuertas programables en campo, es un conjunto de compuertas multipropósito (circuitos) en un chip que se puede programar para realizar una tarea específica (como hashing), pero aún tiene otras cosas que no son útiles; el resto está ahí para que pueda ser de propósito general. (La gente escribe software para que utilice bien los recursos, HardwareDescriptionLanguage HDL describe circuitos físicos y solía escribir código que programará FPGA; por lo tanto, si obtiene un FPGA y desea extraerlo,

Por lo tanto, el rendimiento de cualquier chip puede determinarse por las instrucciones que puede procesar, qué tan bien puede procesar esas instrucciones y qué tan eficiente es (si le importa). Dado que hay una miríada de problemas únicos en el mundo, eso significa que tratamos de crear una miríada de circuitos integrados únicos con una miríada de habilidades.