Bitcoin: история развития, от CPU до FPGA

Тема в разделе "Железо", создана пользователем bblizard, 6 мар 2014.

  1. bblizard

    bblizard Космонавт

    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 в ответ на температурный режим и пользовательские настройки...


    Читать полностью тут: http://bitalk.ru/entries/338/

    Следующая статья(ASIC): http://bitalk.ru/threads/603/
     
    Последнее редактирование: 6 мар 2014