Bitcoin: история развития, от CPU до FPGA
(источник фото)
Ранее нами рассматривались основные принципы, которым следуют при майнинге биткоинов.
В этот раз рассмотрим историю развития вычислительных систем, предназначенных для добычи биткоинов, а также технологические достижения и трудности, которые встретились на этом пути.
CPU: Первое поколение майнеров
Если заглянуть в исходный код майнера биткоинов, то окажется, что он на удивление прост. Основная часть выглядит примерно следующим образом:
while (1)
{
HDR[kNoncePos]++;
IF (SHA256(SHA256(HDR)) < (65535 << 208)/ DIFFICULTY)
return;
}
Вычисление SHA256 выполняется над 512-битными блоками данных и включает в себя 64 раунда шифрования, требующих множества 32-битных сложений, сдвигов и битовых операций. Каждый последующий раунд шифрования зависит от результатов предыдущего, создавая цепочку зависимостей. Хотя выполнение отдельных раундов шифрования не может быть распараллелено, проверка каждого отдельного хэша может выполняться параллельно, что делает вычисления прекрасно поддающимися параллелизации.
Производительность таких майнеров достигает 33 MH/s на процессор (Core i7 990x). Больше добавить особенно нечего.
GPU: Второе поколение майнеров
В октябре 2010 был опубликован код первого open-source OpenCL майнера, после чего тот был быстро адаптирован и оптимизирован стараниями энтузиастов сообщества. Подобные майнеры состояли из реализации bitcoin-протокола на языке вроде Java или Python и алгоритма перебора в виде OpenCL-файла, который надлежало скомпилировать под ISA соответствующего GPU.
Огромное разнообразие OpenCL-реализаций объяснялось попытками выжать из компиляторов всё, на что те были способны, в погоне за улучшением качества кода. Кроме того, часть кода, не относящаяся к OpenCL напрямую, отвечала за вызов OpenCL API с целью перепроверки результатов или управления параметрами GPU в ответ на температурный режим и пользовательские настройки.
Поскольку предполагалось, что подобное оборудование будет работать месяцами, пользователи пускались во все тяжкие, играя с напряжением питания (понижая, чтобы снизить стоимость накладных расходов на майнинг, или повышая вместе с частотой, чтобы увеличить производительность), ядром GPU и такими параметрами кода, как число потоков. Всё ради того, чтобы увеличить пропускную способность в рамках разумной стабильности работы и температуры.
Т.к. добыча биткоинов не требует особой нагрузки на оперативную память или операций с плавающей точкой, большое число критических путей в электрической схеме или узких мест в архитектуре GPU никак себя не проявляют. Однако, с течением времени могла возникать потребность в перенастройке параметров, т.к. системы электропитания и охлаждения со временем деградируют в своих характеристиках.
Типовые GPU от AMD имеют тенденцию показывать большую производительность, чем GPU от NVidia, если речь идет о GH/s на $, отчасти благодаря системе команд, хорошо подходящей для вычислений SHA256, и архитектуре VLIW, которая содержит большее количество ALU, работающих параллельно, пусть и на слегка меньшей частоте. В частности, операции сдвига и битового выбора могут быть реализованы единственной инструкцией AMD ISA.
Встроенная графика, в частности от Intel, уже сейчас имеет лучшие показатели производительности на ватт, но для CPU характерны гораздо более скромные power-бюджеты — 200W, типичные для GPU, совершенно неприемлемы для CPU, который, вообще говоря, еще и не только графикой занят. Кроме того, к одному компьютеру не удастся подключить столько CPU, сколько можно было бы подключить видеокарт (про это дальше). Да и амортизация оборудования не настолько быстра для CPU. Поэтому встроенная графика — это не выбор майнера.
Основной код майнера, написанный на OpenCL, а не ассемблере или в машинных кодах, после компиляции нередко патчился с целью использования инструкций GPU, напрямую не поддерживаемых OpenCL.
Реализация на OpenCL представляет собой один большой блок кода, который в начале выбирает ряд параметров, на основе id потока, а затем выполняет все 64 раунда хэширования в одном развернутом цикле.
A Datacenter In My Garage
Потратив $300-600 на оборудование для майнинга на основе GPU, которое, практически буквально, печатает деньги, и потратив немало времени за настройкой его параметров, следующим шагом закономерно встаёт идея о наращивании
Купив ещё один такой же GPU и повторив настройки, вы удвоите свою прибыль. На самом деле, если монетки добываются столь быстро и столь же стремительно растут в цене, возможно, имеет смысл купить десять или даже двадцать GPU! Правда, это может привести к катастрофе — из-за группового поведения майнеров, закупившихся видеокартами, до небес подскочит сложность добычи и так же стремительно упадет прибыльность майнинга. К счастью, катастрофы не произошло, благодаря росту курса USD/BTC затраты на покупку видеокарт всё же окупились.
GPU оказались гораздо более доступны для конечных пользователей, чем FPGA. Их использование для майнинга хоть и требует навыков сборки ПК и многочасового чтения форумов, но можно быть полным профаном в параллельном программировании, не говоря об инструментах для работы с FPGA. Однако для GPU характерно несколько ключевых ограничений:
1. GPU не работает сам по себе. Каждый GPU должен быть включен в 8x или 16x PCI-E разъем, которых на материнских платах сравнительно мало.
2. Материнская плата, процессор, жесткий диск и ОЗУ в GPU майнинге практически не используются, но удорожают систему, т.е. увеличивают стоимость майнинга на единицу производительности. У типичного пользователя под рукой есть единственный PC, куда можно установить 1-2 GPU, но не более того.
3. Каждый GPU потребляет 200-300W, что очень быстро превышает возможности блока питания и требует апгрейда.
4. Стандартные корпуса не рассчитаны на охлаждение нескольких GPU. Особенно, если «несколько» — это более двух.
5. Использование многих GPU быстро достигает пределов электроснабжения, охлаждения и уровня шума, допустимых в большинстве жилых районов.
6. Из-за каких-то проблем (вероятно, в программной части) реализации, для работы OpenCL может потребоваться, чтобы к GPU был подключен дисплей. Хотя сама технология подобных требований не выдвигает.
7. Типовой GPU занимает два слота в корпусе ПК, не давая подключить к ПК большое число видеокарт.
Для решения этих проблем появилось следующее решение. Во первых, т.к. майнинг биткоинов толком не использует пропускную способность интерфейса с материнской платой, то PCI-E 1x имеет достаточно пропускной способности, а GPU работает и подключенным в 1х слот. Простой кабель, продаваемый за $8, позволяет подключить 16x GPU в 1х слот. Правда это означает, что видеокарта не может находиться в корпусе ПК, что побудило энтузиастов к созданию стоек, предназначенных исключительно для монтажа GPU. Использование правильной материнской платы, с большим числом дешевых 1x слотов, решило проблему с подключением большого числа GPU. Отказ от привычного корпуса позволил решить проблему отвода тепла более эффективно. А резистор, воткнутый в DVI разъем, успешно имитирует подключение монитора, если таковое потребуется для OpenCL.
Используя такой подход, одна материнская плата, CPU, и RAM может обслуживать 5-6 GPU, тем самым повышая экономическую эффективность затеи.
примеры того, как может выглядеть машина для добычи биткоинов на основе GPU (источник фото)
Некоторые такие системы могут работать стабильно на протяжении нескольких месяцев, но затем начинают проявляться проблемы со стабильностью работы. Причина в том, что GPU потребляют слишком большой ток по линии 12V, перегружая коннектор материнской платы. Решением этой проблемы становится независимый подвод питания к видеокартам, минуя материнскую плату.
После решения проблем с подключением GPU на первый план выходят вопросы надлежащего электроснабжения и охлаждения оборудования. С потреблением одного GPU в районе 200W, удельная мощность такой системы сопоставима или даже превышает показатели дата-центров. Собственно, дата-центры практически никогда и не используются для размещения GPU-майнеров из-за сопутствующих расходов и требований к сертификации оборудования. Также немногие дома способны обеспечить такую электрическую мощность, а различные схемы тарификации электроснабжения могут привести к заоблачным счетам за электричество. По этим причинам на практике удачнее всего майнинг идет на территориях складских помещений, где нет больших проблем с создаваемым шумом и охлаждением, а электричество доступно по промышленным тарифам.
Bitcoin-miner, содержащий 69 GPU (источник фото)
FPGA: Третье поколение майнеров
Июнь 2011 принес общественности первую open-source реализацию биткоин-майнера для FPGA. FPGA хороши как для операций сдвига, так и для битовых операций, составляющих ядро алгоритма майнинга. Интересным испытанием для разработчиков FPGA-майнеров стала разработка такого дизайна, который позволил бы эффективно использовать различные FPGA, как hi-end, так и low-end.
Решение оказалось весьма элегантным – майнер состоит из нескольких экземпляров SHA256-модуля, который параметризуется глубиной развертывания. С полным развертыванием, модуль создает отдельные аппаратные узлы для каждого из 64 раундов хэширования, разделенные регистрами – своего рода конвейер. Такая реализация позволяет достичь производительности 1хэш/такт/модуль. Меньшая глубина развертывания приводит к тому, что конвейер получается короче, и полное вычисление хэша требует нескольких проходов по его ступеням. Если FPGA достаточно велика, то в неё может уместиться несколько таких конвейеров. Выбор между глубиной развертывания и числом копий конвейера есть предмет для оптимизации.
Основной проблемой для FPGA-майнеров стало то, что их энергопотребление гораздо выше, чем для типичных случаев использования FPGA. Это объясняется практически постоянной активностью логических элементов в процессе вычислений. В результате большинство готовых плат с FPGA, таких как, например, обучающие наборы, легко доступные студентам, не могли предоставить ни достаточное питание ни достаточное охлаждение. Причем для hi-end микросхем проблема стояла в разы острее.
В результате появились специализированные платы, которые минимизировали расходы, отказавшись ото всей избыточной периферии (RAM, I/O, и т.д.), и которые конструировались с единственной целью – обеспечить необходимое питание и температурный режим для FPGA. Платы на основе FPGA Spartan XC6SLX150 позволили достигнуть производительности 860MH/s, при частоте 215 MHz, энергопотреблении 39W и стоимости $1060. Проприетарная разработка компании Butterfly Labs (BFL), расположенной в Канзасе, показала похожую производительность 830 MH/s при цене $599. Топовое решение от той же компании на основе FPGA Altera показало производительность 25.2 GH/s при цене $15K (650-750 MH/s на чип).
На настоящий момент BFL была и остается самой успешной коммерческой биткоин-компанией.
К сожалению, FPGA было трудно конкурировать с GPU – последние стоили на ~30% меньше и имели больший потенциал для перепродажи после завершения своего пути как майнера биткоинов. Не помогло и то, что GPU обгоняли FPGA на лестнице техпроцесса, нередко используя более современный и энергоэффективный техпроцесс. Тем не менее, основное преимущество FPGA заключается в почти пятикратном выигрыше энергопотребления, что делает их столь же привлекательными как и GPU, при условии эксплуатации в течение года или двух. В частности, наиболее продвинутые FPGA, например, производимые Intel для Altera по новейшим 22нм и 14нм техпроцессам, оказываются крайне выгодными с точки зрения энергопотребления, но имеют сравнительно высокую цену.
500GH/s майнер от BFL на основе ASIC, в окружении четырёх FPGA-майнеров на 25.2 GH/s. Можно заметить два кабеля электропитания – майнер потребляет ~2700W. (источник фото: James Gibson)
Правление FPGA оказалось кратким, потому как на свет появилось новое поколение аппаратуры, ASIC, дающее выигрыш на порядки и в энергоэффективности и в производительности. Усилия на разработку FPGA не оказались напрасны, т.к. многое, от Verilog описания майнера и до компановки печатных плат было переиспользовано.
О поколении ASIC – четвертом поколении bitcoin-майнеров, шагнувшем в эпоху кремния, делаемого на заказ (Age of Bespoke Silicon) в следующий раз.
Комментариев нет:
Отправить комментарий