Что определяет производительность SHA256 на разных типах оборудования?

Я знаю, что ответы на многие вопросы здесь кратко касаются этого момента, но я хотел бы получить сводный ответ, который действительно затрагивает ключевые различия между различными типами оборудования, что позволяет SHA256 работать лучше, а не менее связанным касательные другие вопросы обсудим. Хотя меня больше всего интересует биткойн, я знаю, что некоторые другие криптовалюты используют другие алгоритмы, поэтому не стесняйтесь ссылаться на них, если это поможет вам понять вашу точку зрения.

  • Почему алгоритм хеширования биткойнов SHA256 лучше работает на разных типах оборудования? Что делает ASIC/FPGA способными вычислять больше H/s, чем GPU, GPU, чем CPU и т. д.?

  • Что такое «сложность ядер»? Это ссылка на количество ядер или на фактическую сложность кристалла? В обоих случаях, почему это не влияет на производительность SHA256? Ссылаясь на ответ Дэвида Перри здесь :

Кстати, важно отметить, что единственное, что не даст вам больше хэшей в секунду, — это сложность ядер. Вот почему Nvidia может делать отличные карты для игровых целей, но они не годятся для майнинга — игры лучше используют экзотические новые инструкции, чем SHA256.

  • Можно ли вообще оптимизировать SHA256 для повышения производительности в зависимости от архитектуры? Можно ли оптимизировать процесс двойного хеширования?

Ответы (2)

Производительность майнинга можно рассматривать как состоящую из двух факторов. Один из них — это общие доступные ресурсы. Другой — какую часть этих ресурсов вы можете с пользой использовать для майнинга.

ASIC и FPGA превосходны в майнинге, потому что вы можете эффективно использовать очень большую часть их доступных ресурсов для майнинга. Процессоры ужасны в майнинге, потому что огромная часть их ресурсов бесполезна для майнинга — они оптимизированы для доступа к памяти, принятия решений, математики с плавающей запятой и многих других вещей, которые вообще не помогают в майнинге.

«Сложность ядер» относится к тому, насколько сложны операции, которые могут выполнять ядра. Это не помогает при майнинге, который требует очень простых операций и, таким образом, просто увеличивает долю доступных ресурсов, которые вы не можете использовать для майнинга.

SHA256 можно сильно оптимизировать для любой архитектуры. На заре майнинга шла огромная «гонка вооружений» по микрооптимизации майнинга для различных архитектур.

Если позволите, и это может быть немного не так, но это правильная идея.

Продолжая с ответом г-на Шварца.

Еще одна важная роль в H/s — OpenCL и CUDA. Каждый из них предоставляет средство связи/протокол между производителями, чтобы различное оборудование могло легче взаимодействовать. Итак, как сказал Шварц, вам нужно использовать вычислительную мощность (ресурсы) чипа, чтобы он был полезен. OpenCL и CUDA позволяют программному обеспечению одновременно использовать множество различных аппаратных частей. Таким образом, некоторые шаги по майнингу могут выполняться на процессоре, а другие — на графическом процессоре. Благодаря OpenCL вы можете легко вызвать одну функцию, и она будет использовать доступные ресурсы. (Я не говорю, что в OpenCL есть функция doHash(), но скорее что-то вроде if(elegantWork) useCPU; else if(bruteWork) useGPU;)

Также большую роль будет играть архитектура машинного языка компьютеров. ISC (Instruction Set Computer) — это компьютер с определенным набором инструкций, которые может выполнять его процессор. Так что есть много видов. RISC, ARM и т. д. (не знаю, многие из них или много о различиях). Но у некоторых есть инструкции, которые полезны для майнинга, а у некоторых нет. В некоторых чипах есть схемы, которые пытаются угадать будущее, поэтому, если он увидит, что вы собираетесь выполнить оператор ветвления, он может попытаться работать на каждой ветке, а затем, как только он узнает, он отбросит все остальные и продолжит работу в нужной ветке. . Что ж, в хешировании это может не понадобиться, поэтому часть чипа для нас бесполезна, если мы хотим хешировать.

ASIC и FPGA — это чипы (интегральные схемы), которые разработаны специально для майнинга. У них есть только схемы, которые нужно хэшировать, и их много, а остальное обычное дело выбрасывают. Вот почему ASIC хорош для хеширования только в том случае, если это его приложение (он только «знает», как хешировать). FPGA — это программируемая вентильная матрица, представляющая собой набор многоцелевых вентилей (схем) на микросхеме, которые можно запрограммировать для выполнения конкретной задачи (например, хэширования), но в ней все еще есть некоторые другие бесполезные вещи; другие вещи есть, так что это может быть общего назначения. (Люди пишут программное обеспечение, поэтому оно хорошо использует ресурсы, HardwareDescriptionLanguage HDL описывает физические схемы и используется для написания кода, который будет программировать FPGA. Так что, если вы приобрели FPGA и хотите майнить,

Таким образом, производительность любого данного чипа может быть определена инструкциями, которые он может обрабатывать, насколько хорошо он может обрабатывать эти инструкции и насколько он эффективен (если вас это волнует). Поскольку в мире существует множество уникальных проблем, это означает, что мы пытаемся создать множество уникальных ИС с множеством способностей.