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) в следующий раз.
    Intel
    214.27
    Компания
    Share post

    Comments 19

      +1
      хаха :-D my precious… да уж, что только не использовали уже чтобы о биткоине написать :)
        +1
        Но песенка FPGA ещё не спета, по крайней мере у самодельшиков, кто заранее озаботился вопросом о том что будет потом. Можно майнить скрипт, только на голых камнях это получается не важно…

        Ну а раз уж мы в блоге Интела, реквестирую их версию о том, что будет потом…
        ИМХО ASIC от INTEL было-бы круто.
          –11
          А никому эта беготня вокруг биткоин не напоминает пресловутый МММ?

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

          Старо как мир.
          Ну а пока «Заседание продолжается...» (с)
            +3
            А что в этом плохого? :)
              0
              По-тихому их никто не печатал. Но беготня с ними за последний месяц, действительно, малость утомила. До этого бурного всплеска популярности и без беготни (раньше) для тех «кто в теме» уже давно было гораздо лучше…
                +3
                Ещё как печатал, у основателя на счету сейчас не мало первоначальных биткоинов скопилось на безбедную старость :) Но это совсем не означает, что человек будет выводить их разом, сливая курс, достаточно выводить по немногу на удобную жизнь в цивилизованном обществе. Только вот этого перевода деанонимизаторы и ждут для разоблачения загадочного Создателя…
                  +1
                  А вы откройте блокчейн и посмотрите даты генерации блоков, соответствующих этим вознаграждениям. А потом сверьте с датами открытой публикации первого клиента и статей в списках рассылки. То что вы о них не узнали в то время — проблема вашей личной неосведомлённости. Человек 10 000 btc, которыми за пиццу расплачивался, тоже не в мусорнике нашёл, а сам намайнил. Так что проблема осведомлённости — это личная проблема каждого. А то что имеет основатель на счету это плата за его early adoption и является заслуженной наградой и за идею, и за реализацию, и за энтузиазм (когда он их добывал, затрачивая на это вычислительные ресурсы и электроэнергию — они ничего не стоили, а он верил в успех и получил профит).
                +9
                > А никому эта беготня вокруг биткоин не напоминает пресловутый МММ?

                Я беспокоился что в этом посте не будет традиционного вопроса про МММ или реальную стоимость.
                  +8
                  > Убедить всех, что эти фантики имеют ценность
                  > Лохи сосут, а у нас нехилый гешефт из воздуха!
                  Хм, совсем как с долларами в обмен на нефть.
                    –9
                    Ну да. Только без нефти Вы ни машинку свою не заправите, ни квартирку свою не обогреете, ни фрукты в пакетик не положите. Ибо пакетики делаются из нефтепродуктов.

                    Доллары, конечно, тоже на#$алово, но на#$алово глобальное, поддерживаемое и внедренное в моск каждого как true.

                    А биткоины = ваучеры.

                    Вас пытаются убедить, что биткоины приравниваются к полезным ископаемым ввиду ограниченности ресурса. Х#ле им мешает придумать новый алгоритм?
                      +3
                      1. Хабр — для спокойных людей (см. правила: за мат НЛО забирает далеко-далеко).
                      2. Что плохого в деньгах, и в долларах в частности? Вы хотите расплачиваться овцами за сено? Или деньги — это корень зла? Ну, знаете, это как с оружием: не оружие убивает людей — люди убивают людей.
                      3. Да, биткоины — это валюта. А любая валюта — это, по сути, ваучеры. Что в этом плохого?
                      4. Советую поднять свою эрудицию на уровень, достаточный для Хабрахабра: прочитайте пару книжек по экономике — поймете, зачем нужны деньги; почитайте про техническую составляющую сети биткоин и про p2p технологии — поймете, почему так сложно просто придумать новый алгоритм; в конце концов, почитайте про торговлю на бирже — поймете, зачем это нужно и почему это не пустой пшик в воздух и «деньги из неоткуда».
                      5. Биткоин, несомненно, обвалится; может быть, даже очень скоро. Но кому какое дело? Как валюта — он все еще будет существовать, а не исчезнет, как бумажки из МММ. Лично мне, как трейдеру, курс биткоина абсолютно не важен. Пускай он будет $1 или $1000 — главное, чтобы курс прыгал.
                  0
                  Я не понимаю, почему компании, делающие ASIC, продают эти решения, а не майнят сами?
                    +2
                    Они комбинируют эти две вещи.
                    Обычно, сперва снимают сливки, майня сами. Потом начинают продавать.
                      0
                      Т.е. получается выгодней продать, чем майнить?
                        +1
                        Майнить всё равно выгоднее, иначе бы никто не покупал.
                        Вопрос каких усилий стоит заработок, да и риски никто не отменял.
                          0
                          Ну да, ну да.

                          «Утром деньги, вечером стулья» (с)
                            0
                            Выгоднее собирать предзаказы, производить и продавать. Вдумайтесь, что лучше: прибыль здесь и сейчас (вот она, в Ваших руках), или прибыль в [не]обозримом будущем (на руках цифровой слиток золота, но курс обмена на фиат как портовая девка)?
                              0
                              Вы правы лишь отчасти.
                              Вы знаете что майнеры нередко продают именно за биткоины а не за $?
                        +3
                        А они в первую очередь и делают их чтобы майнить самим. Как только они для себя делают более совершенное железо, старое уходит к остальным.

                      Only users with full accounts can post comments. Log in, please.