Характеристики.
Планируется достичь следующих показателей:
- Количество клеток: 64
- Техпроцесс: 28 нм
- Тактовая частота: 1.6 ГГц
- Размер памяти на кристалле: 8 Мб
- Площадь кристалла: 40мм2
- Энергопотребление: 6 Вт
Реальные цифры будут анонсированы по результатам тестов изготовленных образцов в 2020 году. Помимо характеристик самого кристалла, процессор будет поддерживать до 16 Гб RAM стандарта DDR4 3200MHz, шину PCI Express и PLL.
Надо заметить, что техпроцесс 28 нм – это самый низкий бытовой диапазон, не требующий специальных разрешений на использование, поэтому был выбран именно он. По количеству клеток рассматривались разные варианты: 128 и 256, но с увеличением площади кристалла растёт процент брака. Остановились на 64 клетках и, соответственно, сравнительно небольшой площади, что даст больший выход годных кристаллов на пластине. Дальнейшее развитие возможно в рамках СвК (система в корпусе), где можно будет объединить несколько 64-клеточных кристаллов в один корпус.
Необходимо сказать, что назначение и применение процессора кардинально меняется. S1 будет не предназначенным для встраивания микропроцессором, какими были P1 и R1, а ускорителем вычислений. Так же, как GPGPU, плату с S1 можно будет вставить в PCI Express материнской платы обычного ПК и использовать для обработки данных.
Архитектура
В S1 минимальной вычислительной единицей теперь выступает “мультиклетка”: набор из 4 клеток, исполняющих некую последовательность команд. Сначала планировали объединять мультиклетки в группы под названием кластер для совместного исполнения команд: кластер должен был содержать 4 мультиклетки, всего на кристалле 4 раздельных кластера. Однако, каждая клетка имеет полную связь со всеми остальными клетками в кластере, и при увеличении группы связей становится слишком много, что резко усложняет топологическое проектирование микросхемы и снижает её характеристики. Поэтому, приняли решение отказаться от кластерного деления, поскольку усложнение не оправдывает полученные результаты. К тому же, для максимальной производительности выгоднее всего запускать код параллельно на каждой мультиклетке. Итого, сейчас процессор содержит 16 раздельных мультиклеток.
Мультиклетка, хоть и состоит из 4 клеток, отличается от 4-клеточного R1, в котором каждая клетка имела свою память, свой блок выборки команд, своё ALU. S1 устроен немного по-другому. ALU имеет 2 части: блок арифметики с плавающей точкой и блок целочисленной арифметики. Каждая клетка имеет отдельный целочисленный блок, но блоков с плавающей точкой в мультиклетке только два, и поэтому две пары клеток делят их между собой. Сделано это было, в основном, для уменьшения площади кристалла: 64-битная арифметика с плавающей точкой, в отличие от целочисленной арифметики, занимает очень много места. Иметь такой блок ALU на каждой клетке оказалось избыточным: выборка команд не обеспечивает загрузки ALU и они простаивают. При сокращении числа блоков ALU и сохранении темпов выборки команд и данных, как показала практика, общее время решения задач практически не меняется или меняется незначительно, а блоки ALU загружаются полностью. К тому же, арифметика с плавающей точкой используется не так часто, как с целочисленной.
Схематический вид блоков процессоров R1 и S1 приведен на схеме ниже. Здесь:
- CU (Control Unit) – блок выборки инструкций
- ALUFX – арифметическо-логическое устройство целочисленной арифметики
- ALUFP – арифметическо-логическое устройство арифметики с плавающей точкой
- DMS (Data Memory Scheduler) – блок управления памятью данных
- DM – память данных
- PMS (Program Memory Scheduler) – блок управления памятью программ
- PM – память программ
Архитектурные отличия S1:
- Команды теперь могут обращаться к результатам команд из предыдущих параграфов. Это очень важное изменение, позволяющее существенно ускорить переходы при ветвлении кода. В процессорах P1 и R1 не было другого выбора, кроме как записывать нужные результаты в память и тут же считывать их обратно первыми же командами в новом параграфе. Даже при использовании памяти на кристалле, операции записи и чтения занимают от 2 до 5 тактов каждая, которые можно сэкономить, просто обратившись к результату команды из предыдущего параграфа
- Запись в память и регистры теперь происходит сразу, а не по окончанию параграфа, что позволяет начать выполнение команд записи до окончания параграфа. В результате, уменьшается потенциальный простой между параграфами.
- Оптимизирована система команд, а именно:
- Добавлена 64-битная целочисленная арифметика: сложение, вычитание, умножение 32-битных чисел, возвращающее 64-битный результат.
- Изменен способ чтения из памяти: теперь для любой
команды в качестве аргумента можно просто указать адрес, с которого нужно прочитать данные, при этом сохраняется очерёдность выполнения команд чтения и записи.Это также сделало отдельную команду чтения из памяти устаревшей. Вместо этого, используется команда загрузки значения в коммутатор load
(ранее –
get
), указывая в качестве аргумента адрес в памяти:
.data foo: .long 0x1234 .text habr: load_l foo ; загрузит в коммутатор адрес метки foo load_l [foo] ; загрузит в коммутатор 0x1234 add_l [foo], 0xABCD ; прочитать значение и сложить с константой ; одной командой complete - Добавлен формат команд, позволяющий использовать 2 константных аргумента. Раньше можно было указывать константу только в качестве второго аргумента, первым аргументом всегда должна была быть ссылка на результат в коммутаторе. Изменение касается всех двухаргументных команд. Поле константы всегда 32 битное, поэтому такой формат позволяет, например, генерировать 64-битные константы одной командой.
Было:load_l 0x12345678 patch_q @1, 0xDEADBEEF Стало: patch_q 0x12345678, 0xDEADBEEF
- Изменены и дополнены векторные типы данных. То, что раньше называлось «упакованными» типами данных теперь смело можно называть векторными. В P1 и R1 операции над упакованными числами принимали только константу в качестве второго аргумента, т.е., например, при сложении, каждый элемент вектора складывался с одним и тем же числом, и этому не нашлось толкового применения. Теперь аналогичные операции можно применять над двумя полноценными векторами. Более того, такой способ работы с векторами полностью соответствует механизму векторов в LLVM, что теперь позволит компилятору генерировать код с использованием векторных типов. patch_q 0x00010002, 0x00030004 patch_q 0x00020003, 0x00040005 mul_ps @1, @2 ; результат — 00020006000C0014
- Убраны процессорные флаги.
Как следствие, убрано около 40 команд, опирающихся исключительно на значения флагов. Это позволило значительно сократить количество команд и, соответственно, площадь кристалла. А вся необходимая информация теперь хранится непосредственно в ячейке коммутатора.- При сравнении с нулём, вместо флага нуля теперь используется просто значение в коммутаторе
- Вместо флага знака теперь используется бит, соответствующий типу команды: 7й для byte, 15й для short, 31й для long, 63й для quad. Благодаря тому, что знак размножается вплоть до 63го бита вне зависимости от типа, можно сравнивать числа разных типов: .data long: .long -0x1000 byte: .byte -0x10 .text habr: a := load_b [byte] ; В коммутатор попадет значение 0xFFFFFFFFFFFFFFF0, ; согласно типу byte 7й бит размножился до 63го. b := loadu_b [byte] ; В коммутатор попадет значение 0x00000000000000F0, ; т.к. команда loadu_b не размножает знак c := load_l [long] ; В коммутатор попадет значение 0xFFFFFFFFFFFFF000. ge_l @a, @c ; Результатом команды «больше либо равно» будет 1: ; сравнение учитывает 31й бит, согласно своему типу. lt_s @a, @b ; 1, т.к. b прочиталось как положительное число complete
Флаг переноса больше не нужен, так как есть 64-битная арифметика
- Сократилось время перехода с параграфа на параграф до 1 такта (вместо 2-3 в R1)
Проверка асика Aixin A1 25th
Заявленные характеристики асика A1:
- Идет на 25 TH.
- Добывает Биткоин. Подробнее об алгоритмах для майнинга мы писали ранее.
- Потребление 2100 Ватт. По крайней мере, должен так потреблять. О результатах проверки вы узнаете в конце статьи.
- Доход от работы устройства – 475 рублей без учета оплаты электричества.
- Окупаемость Aixin a1 25th при текущих условиях от 3.7 месяцев.
- Стоимость устройства: от 48000 до 52000 рублей (в зависимости от количества).
Через 13 минут после подключения устройство «набрало» только 23.3 Th, дальше разгон не шел. К сожалению, при такой погрешности невозможно обратиться к производителю, так как обычно указывается следующее: «Th +- 5%» или «Th +- 8%».
Панель управления ASIC изначально представлена на китайском языке, для простого управления достаточно перевести ее на английский.
Позже ASIC разогнался до 23.8 Th/s, потребление электроэнергии пока что было замерять рано.
Панель содержит в себе довольно удобные графики, пулы, 4 хэш-платы. На вкладке «Dashboard» представлена информация по операционке, прописываются пулы, воркеры.
Также доступно переключение мода на максимальный хэшрейт или минимальное потребление электричества. При этом указано, что заданные показатели отобразятся менее чем через 10 минут. На данный момент действует режим минимального потребления. Есть раздел для установки прошивки.
Компилятор на базе LLVM
Компилятор языка C для S1 аналогичен R1, и так как архитектура принципиально не изменилась, то и проблемы, описанные в предыдущей статье, к сожалению, не исчезли.
Однако, в процессе реализации новой системы команд количество выходного кода снизилось само по себе, просто благодаря обновлению системы команд. Помимо этого, есть ещё множество мелких оптимизаций, которые позволят сократить количество команд в коде, некоторые из которых уже сделаны (например, генерация 64-битных констант одной командой). Но есть ещё более серьёзные оптимизации, которые необходимо сделать, и их можно выстроить в порядке возрастания одновременно как эффективности, так и сложности реализации:
- Возможность генерации всех двухаргументных команд с двумя константами.
Генерация 64-битной константы через patch_q – это всего лишь частный случай, а нужен общий. На самом деле, смысл этой оптимизации в том, чтобы позволить командам подставлять именно первый аргумент как константу, так как второй аргумент всегда мог быть константой, и это давно реализовано. Это не слишком частый случай, но, например, когда нужно вызвать функцию и записать на вершину стека адрес возврата из неё, то можноload_l func wr_l @1, #SP оптимизировать до wr_l func, #SP
- Возможность подставлять обращение к памяти через аргумент в любой команде. Например, если нужно сложить два числа из памяти, можно load_l [foo] load_l [bar] add_l @1, @2 оптимизировать до add_l [foo], [bar] Эта оптимизация – расширение предыдущей, однако здесь уже нужен анализ: такую замену можно проводить только в том случае, если загруженные значения используется только один раз в этой команде сложения и нигде более. Если результат чтения используется даже всего в двух командах, то выгоднее прочитать из памяти один раз отдельной командой, а в остальных двух ссылаться на неё через коммутатор.
- Оптимизация переноса виртуальных регистров между базовыми блоками. Для R1 перенос всех виртуальных регистров был сделан через память, что порождает очень большое количество чтений и записей в память, но другого способа переносить данные между параграфами просто не было. S1 позволяет обращаться к результатам команд предыдущих параграфов, поэтому, теоретически, многие операции с памятью можно убрать, что дало бы наибольший эффект среди всех оптимизаций. Однако, такой подход все равно ограничен коммутатором: не более 63 предыдущих результатов, поэтому далеко не каждый перенос виртуального регистра можно так реализовать. Как это сделать – задача нетривиальная, и анализ возможностей ее решения еще только предстоит. Исходники компилятора, возможно, появятся в открытом доступе, поэтому если у кого-нибудь есть идеи, и вы желаете присоединиться к разработке, то вы сможете это сделать.
Системные требования для работы PhoenixMiner:
- AMD или NVIDIA — майнер поддерживает карты обоих производителей.
- Windows x64 (Windows 7 лучше для карт GTX 9*0).
- Для GPU AMD следует использовать новейшие драйвера версии 18.1.1 или 18.2.1.
- Если вы планируете использовать сторонние программы для мониторинга, то единственные что корректно работают совместно с PhoenixMiner — это GPU-Z и MSI Afterburner.
Наше первое впечатление от майнера PhoenixMiner состояло в том, что мы получили довольно приятный опыт работы. Начиная с детальной и постоянно обновляемой темы на форуме BitcoinTalk и заканчивая простотой настройкой и использованием. С PhoenixMiner работать ничуть не сложней, чем с всеми любимым Claymore Ethereum Dual Miner.
PhoenixMiner может быть запущен как с параметрами командной строки, так и без них. Существует дополнительный конфигурационный файл, под названием «epools», который служит списком пулов для майнера. Этот факт делает PhoenixMiner хорошим выбором для использования в крупных майнинг-фермах, помимо того, что вы можете запускать отдельный экземпляр майнера на каждой отдельной карте в риге, вы так же можете скопировать ваши конфигурационные файлы на другие риги.
Как и Claymore, PhoenixMiner поддерживает удаленное управление. Однако в этом случае вы не можете использовать RDP (Windows Remote Desktop) — вместо этого используйте VNC или TeamViewer. Оба конфигурационные файлы могут обновляться удаленно в режиме реального времени. Полный список поддерживаемых майнером команд можно найти в официальной теме на форуме BitcoinTalk.
Хотя PhoenixMiner — это полностью самостоятельный проект, не являющийся форком майнера от Claymore, он поддерживает синтаксис командной строки и конфигурационного файла Claymore. Этот факт сделает переход с Claymore на Phoenix довольно простым и безболезненным — вы можете использовать те же конфигурационные файлы без необходимости менять что-либо.
Бенчмарки
Так как процессор еще не выпущен на кристалле, сложно оценить его реальную производительность. Однако, RTL код ядра уже готов, а значит можно сделать оценку с помощью симуляции или FPGA. Для запуска следующих бенчмарков использовалась симуляция с помощи программы ModelSim, чтобы вычислить точное время выполнения (в тактах). Так как сделать симуляцию всего кристалла сложно и это занимает очень много времени, поэтому моделировалась одна мультиклетка, и результат умножался на 16 (если задача предназначена для многопоточности), поскольку каждая мультиклетка может работать совершенно независимо от других.
Параллельно проводилось моделирование мультиклетки на Xilinx Virtex-6 для проверки работоспособности процессорного кода на реальном железе.
CoreMark
CoreMark – набор тестов для комплексной оценки производительности микроконтроллеров и центральных процессоров, а также их C-компиляторов. Как вы можете заметить, процессор S1 не является ни тем, ни другим. Однако, он предназначен для исполнения абсолютно арбитрарного кода, т.е. любого, который мог бы быть запущен на центральном процессоре. А значит CoreMark подходит для оценки производительности S1 ничуть не хуже.
CoreMark содержит работу со связными списками, матрицами, машиной состояний и подсчетом суммы CRC. В общем, большинство кода получается строго последовательным (что проверяет на прочность мультиклеточный аппаратный параллелизм) и с множеством ветвлений, из-за чего возможности компилятора играют значительную роль в итоговой производительности. Откомпилированный код содержит довольно много коротких параграфов и несмотря на то, что скорость перехода между ними увеличилась, ветвление включает в себя работу с памятью, чего хотелось бы избегать по максимуму.
Сравнительная таблица показателей CoreMark:
Multiclet R1 (llvm compiler) | Multiclet S1 (llvm compiler) | Эльбрус-4С (R500/E) | Texas Inst. AM5728 ARM Cortex-A15 | Baikal-T1 | Intel Core i7 7700K | |
Год выпуска | 2015 | 2019 | 2014 | 2018 | 2016 | 2017 |
Тактовая частота, МГц | 100 | 1600 | 700 | 1500 | 1200 | 4500 |
Общий показатель CoreMark | 59 | 18356 | 1214 | 15789 | 13142 | 182128 |
CoreMark/MHz | 0.59 | 11.47 | 5.05 | 10.53 | 10.95 | 40.47 |
Результат одной мультиклетки – 1147, или 0.72 / MHz, что выше, чем у R1. Это говорит о преимуществах развития мультиклеточной архитектуры в новом процессоре.
Whetstone
Whetstone – набор тестов для измерения производительности процессора при работе с числами с плавающей точкой. Здесь ситуация значительно лучше: код тоже последовательный, однако без большого количества ветвлений и с хорошим внутренним параллелизмом.
Whetstone состоит из множества модулей, что позволяет замерять не только общий результат, но и производительность на каждом конкретном модуле:
- Array elements
- Array as parameter
- Conditional jumps
- Integer arithmetic
- Trigonometric functions (tan, sin, cos)
- Procedure calls
- Array references
- Standard functions (sqrt, exp, log)
Они разбиваются на категории: модули 1, 2 и 6 измеряют производительность операций с плавающей точкой (строки MFLOPS1-3); модули 5 и 8 — математических функций (COS MOPS, EXP MOPS); модули 4 и 7 — целочисленной арифметики (FIXPT MOPS, EQUAL MOPS); модуль 3 — условных переходов (IF MOPS). В таблице ниже вторая строка MWIPS – общий показатель.
В отличие от CoreMark, Whetstone будет сравниваться на одном ядре или, как в нашем случае, на одной мультиклетке. Так как количество ядер сильно отличается в разных процессорах, то, для чистоты эксперимента, рассмотрим показатели в расчёте на мегагерц.
Сравнительная таблица показателей Whetstone:
Процессор | MultiClet R1 | MultiClet S1 | Core i7 4820K | ARM v8-A53 |
Частота, MHz | 100 | 1600 | 3900 | 1300 |
MWIPS / MHz | 0.311 | 0.343 | 0.887 | 0.642 |
MFLOPS1 / MHz | 0.157 | 0.156 | 0.341 | 0.268 |
MFLOPS2 / MHz | 0.153 | 0.111 | 0.308 | 0.241 |
MFLOPS3 / MHz | 0.029 | 0.124 | 0.167 | 0.239 |
COS MOPS / MHz | 0.018 | 0.008 | 0.023 | 0.028 |
EXP MOPS / MHz | 0.008 | 0.005 | 0.014 | 0.004 |
FIXPT MOPS / MHz | 0.714 | 0.116 | 0.998 | 1.197 |
IF MOPS / MHz | 0.081 | 0.196 | 1.504 | 1.436 |
EQUAL MOPS / MHz | 0.143 | 0.149 | 0.251 | 0.439 |
Whetstone содержит гораздо больше непосредственно вычислительных операций, чем CoreMark (что очень заметно, глядя на код ниже), поэтому здесь важно помнить: количество блоков ALU с плавающей точкой сокращено в два раза. Однако, скорость вычислений почти не пострадала, в сравнении с R1.
Некоторые модули очень хорошо ложатся на мультиклеточную архитектуру. Например, модуль 2 считает в цикле множество значений, и благодаря полной поддержке чисел с плавающей точкой двойной точности как процессором, так и компилятором, после компиляции получаются большие и красивые параграфы, где по настоящему раскрываются вычислительные возможности мультиклеточной архитектуры:
Большой и красивый параграф на 120 команд
pa: SR4 := loadu_q [#SP + 16] SR5 := loadu_q [#SP + 8] SR6 := loadu_l [#SP + 4] SR7 := loadu_l [#SP] setjf_l @0, @SR7 SR8 := add_l @SR6, 0x8 SR9 := add_l @SR6, 0x10 SR10 := add_l @SR6, 0x18 SR11 := loadu_q [@SR6] SR12 := loadu_q [@SR8] SR13 := loadu_q [@SR9] SR14 := loadu_q [@SR10] SR15 := add_d @SR11, @SR12 SR11 := add_d @SR15, @SR13 SR15 := sub_d @SR11, @SR14 SR11 := mul_d @SR15, @SR5 SR15 := add_d @SR12, @SR11 SR12 := sub_d @SR15, @SR13 SR15 := add_d @SR14, @SR12 SR12 := mul_d @SR15, @SR5 SR15 := sub_d @SR11, @SR12 SR16 := sub_d @SR12, @SR11 SR17 := add_d @SR11, @SR12 SR11 := add_d @SR13, @SR15 SR13 := add_d @SR14, @SR11 SR11 := mul_d @SR13, @SR5 SR13 := add_d @SR16, @SR11 SR15 := add_d @SR17, @SR11 SR16 := add_d @SR14, @SR13 SR13 := div_d @SR16, @SR4 SR14 := sub_d @SR15, @SR13 SR15 := mul_d @SR14, @SR5 SR14 := add_d @SR12, @SR15 SR12 := sub_d @SR14, @SR11 SR14 := add_d @SR13, @SR12 SR12 := mul_d @SR14, @SR5 SR14 := sub_d @SR15, @SR12 SR16 := sub_d @SR12, @SR15 SR17 := add_d @SR15, @SR12 SR15 := add_d @SR11, @SR14 SR11 := add_d @SR13, @SR15 SR14 := mul_d @SR11, @SR5 SR11 := add_d @SR16, @SR14 SR15 := add_d @SR17, @SR14 SR16 := add_d @SR13, @SR11 SR11 := div_d @SR16, @SR4 SR13 := sub_d @SR15, @SR11 SR15 := mul_d @SR13, @SR5 SR13 := add_d @SR12, @SR15 SR12 := sub_d @SR13, @SR14 SR13 := add_d @SR11, @SR12 SR12 := mul_d @SR13, @SR5 SR13 := sub_d @SR15, @SR12 SR16 := sub_d @SR12, @SR15 SR17 := add_d @SR15, @SR12 SR15 := add_d @SR14, @SR13 SR13 := add_d @SR11, @SR15 SR14 := mul_d @SR13, @SR5 SR13 := add_d @SR16, @SR14 SR15 := add_d @SR17, @SR14 SR16 := add_d @SR11, @SR13 SR11 := div_d @SR16, @SR4 SR13 := sub_d @SR15, @SR11 SR4 := loadu_q @SR4 SR5 := loadu_q @SR5 SR6 := loadu_q @SR6 SR7 := loadu_q @SR7 SR15 := mul_d @SR13, @SR5 SR8 := loadu_q @SR8 SR9 := loadu_q @SR9 SR10 := loadu_q @SR10 SR13 := add_d @SR12, @SR15 SR12 := sub_d @SR13, @SR14 SR13 := add_d @SR11, @SR12 SR12 := mul_d @SR13, @SR5 SR13 := sub_d @SR15, @SR12 SR16 := sub_d @SR12, @SR15 SR17 := add_d @SR15, @SR12 SR15 := add_d @SR14, @SR13 SR13 := add_d @SR11, @SR15 SR14 := mul_d @SR13, @SR5 SR13 := add_d @SR16, @SR14 SR15 := add_d @SR17, @SR14 SR16 := add_d @SR11, @SR13 SR11 := div_d @SR16, @SR4 SR13 := sub_d @SR15, @SR11 SR15 := mul_d @SR13, @SR5 SR13 := add_d @SR12, @SR15 SR12 := sub_d @SR13, @SR14 SR13 := add_d @SR11, @SR12 SR12 := mul_d @SR13, @SR5 SR13 := sub_d @SR15, @SR12 SR16 := sub_d @SR12, @SR15 SR17 := add_d @SR15, @SR12 SR15 := add_d @SR14, @SR13 SR13 := add_d @SR11, @SR15 SR14 := mul_d @SR13, @SR5 SR13 := add_d @SR16, @SR14 SR15 := add_d @SR17, @SR14 SR16 := add_d @SR11, @SR13 SR11 := div_d @SR16, @SR4 SR13 := sub_d @SR15, @SR11 SR15 := mul_d @SR13, @SR5 SR13 := add_d @SR12, @SR15 SR12 := sub_d @SR13, @SR14 SR13 := add_d @SR11, @SR12 SR12 := mul_d @SR13, @SR5 SR13 := sub_d @SR15, @SR12 SR16 := sub_d @SR12, @SR15 SR17 := add_d @SR14, @SR13 SR13 := add_d @SR11, @SR17 SR14 := mul_d @SR13, @SR5 SR5 := add_d @SR16, @SR14 SR13 := add_d @SR11, @SR5 SR5 := div_d @SR13, @SR4 wr_q @SR15, @SR6 wr_q @SR12, @SR8 wr_q @SR14, @SR9 wr_q @SR5, @SR10 complete
popcnt
Для отражения характеристик самой архитектуры (без зависимости от компилятора) измерим что-нибудь, написанное на ассемблере с учетом всех особенностей архитектуры. Например, подсчет единичных бит в 512-ти битном числе (popcnt). Для очевидности будем брать результаты одной мультиклетки, чтобы их можно было сравнить с R1.
Сравнительная таблица, количество тактов на один цикл расчёта 32-х бит:
Алгоритм | Multiclet R1 | Multiclet S1 (одна мультиклетка) |
BitHacks | 5.0 | 2.625 |
Здесь были использованы новые обновленные векторные инструкции, что позволило сократить количество инструкций в два раза, по сравнению с таким же алгоритмом, реализованным на ассемблере R1. Скорость работы, соответственно, увеличилась в почти в 2 раза.
popcnt
bithacks: b0 := patch_q 0x1, 0x1 v0 := loadu_q [v] v1 := loadu_q [v+8] v2 := loadu_q [v+16] v3 := loadu_q [v+24] v4 := loadu_q [v+32] v5 := loadu_q [v+40] v6 := loadu_q [v+48] v7 := loadu_q [v+56] b1 := patch_q 0x55555555, 0x55555555 i00 := slr_pl @v0, @b0 i01 := slr_pl @v1, @b0 i02 := slr_pl @v2, @b0 i03 := slr_pl @v3, @b0 i04 := slr_pl @v4, @b0 i05 := slr_pl @v5, @b0 i06 := slr_pl @v6, @b0 i07 := slr_pl @v7, @b0 b2 := patch_q 0x33333333, 0x33333333 i10 := and_q @i00, @b1 i11 := and_q @i01, @b1 i12 := and_q @i02, @b1 i13 := and_q @i03, @b1 i14 := and_q @i04, @b1 i15 := and_q @i05, @b1 i16 := and_q @i06, @b1 i17 := and_q @i07, @b1 b3 := patch_q 0x2, 0x2 i20 := sub_pl @v0, @i10 i21 := sub_pl @v1, @i11 i22 := sub_pl @v2, @i12 i23 := sub_pl @v3, @i13 i24 := sub_pl @v4, @i14 i25 := sub_pl @v5, @i15 i26 := sub_pl @v6, @i16 i27 := sub_pl @v7, @i17 i30 := and_q @i20, @b2 i31 := and_q @i21, @b2 i32 := and_q @i22, @b2 i33 := and_q @i23, @b2 i34 := and_q @i24, @b2 i35 := and_q @i25, @b2 i36 := and_q @i26, @b2 i37 := and_q @i27, @b2 i40 := slr_pl @i20, @b3 i41 := slr_pl @i21, @b3 i42 := slr_pl @i22, @b3 i43 := slr_pl @i23, @b3 i44 := slr_pl @i24, @b3 i45 := slr_pl @i25, @b3 i46 := slr_pl @i26, @b3 i47 := slr_pl @i27, @b3 b4 := patch_q 0x4, 0x4 i50 := and_q @i40, @b2 i51 := and_q @i41, @b2 i52 := and_q @i42, @b2 i53 := and_q @i43, @b2 i54 := and_q @i44, @b2 i55 := and_q @i45, @b2 i56 := and_q @i46, @b2 i57 := and_q @i47, @b2 i60 := add_pl @i50, @i30 i61 := add_pl @i51, @i31 i62 := add_pl @i52, @i32 i63 := add_pl @i53, @i33 i64 := add_pl @i54, @i34 i65 := add_pl @i55, @i35 i66 := add_pl @i56, @i36 i67 := add_pl @i57, @i37 b5 := patch_q 0xf0f0f0f, 0xf0f0f0f i70 := slr_pl @i60, @b4 i71 := slr_pl @i61, @b4 i72 := slr_pl @i62, @b4 i73 := slr_pl @i63, @b4 i74 := slr_pl @i64, @b4 i75 := slr_pl @i65, @b4 i76 := slr_pl @i66, @b4 i77 := slr_pl @i67, @b4 b6 := patch_q 0x1010101, 0x1010101 i80 := add_pl @i70, @i60 i81 := add_pl @i71, @i61 i82 := add_pl @i72, @i62 i83 := add_pl @i73, @i63 i84 := add_pl @i74, @i64 i85 := add_pl @i75, @i65 i86 := add_pl @i76, @i66 i87 := add_pl @i77, @i67 b7 := patch_q 0x18, 0x18 i90 := and_q @i80, @b5 i91 := and_q @i81, @b5 i92 := and_q @i82, @b5 i93 := and_q @i83, @b5 i94 := and_q @i84, @b5 i95 := and_q @i85, @b5 i96 := and_q @i86, @b5 i97 := and_q @i87, @b5 iA0 := mul_pl @i90, @b6 iA1 := mul_pl @i91, @b6 iA2 := mul_pl @i92, @b6 iA3 := mul_pl @i93, @b6 iA4 := mul_pl @i94, @b6 iA5 := mul_pl @i95, @b6 iA6 := mul_pl @i96, @b6 iA7 := mul_pl @i97, @b6 iB0 := slr_pl @iA0, @b7 iB1 := slr_pl @iA1, @b7 iB2 := slr_pl @iA2, @b7 iB3 := slr_pl @iA3, @b7 iB4 := slr_pl @iA4, @b7 iB5 := slr_pl @iA5, @b7 iB6 := slr_pl @iA6, @b7 iB7 := slr_pl @iA7, @b7 wr_q @iB0, c wr_q @iB1, c+8 wr_q @iB2, c+16 wr_q @iB3, c+24 wr_q @iB4, c+32 wr_q @iB5, c+40 wr_q @iB6, c+48 wr_q @iB7, c+56 complete
RMC холдинг, мультиклет майнер и ICO-генератор: полный отчет
14 Августа 2017
7 августа состоялась пресс-конференция лидеров Партии Роста, посвященная выводу на рынок первой компании через созданный партией ICO-генератор. Открыл пресс-конференцию своим выступлением Борис Титов, уполномоченный при президенте России по правам предпринимателей, председатель «Партии Роста».
Он кратко рассказал о партии и направлениях ее деятельности. Вопросы новой экономики Борис назвал стержневым направлением. Поэтому в Партии Роста создали так называемый генератор ICO, главной задачей которого будет экспертная проверка и профессиональная подготовка проектов для выхода на ICO. По словам Бориса Титова: » Если мы ставим свою печать — значит рисков с этими людьми не будет.» Первым проектом данного генератора стал майнинговый проект Дмитрия Мариничева и Сергея Бобылева, который Борис Титов назвал отечественным прорывом. Следующим взял слово Гибадуллин Айрат. По его словам, главное, что внутри проекта. Как такового конкурса в генераторе не будет. Все проекты, которые прошли экспертизу, будут выводиться на ICO. Дмитрий Мариничев отметил, что с одной стороны ICO сущность простая, с другой сложная, на данный момент не хватает понятных правил, правовой поддержки. В связи с этим была организована видеосвязсь с Элиной Сидоренко, руководителем межведомственная рабочей группы по оценкам рисков оборота криптовалюты при Государственной Думе.
Элина отметила, что отнеслась с большим энтузиазмом к идее создания генератора, потому что это уникальная возможность понять, насколько добросовестны участники. На данный момент нет законов, регулирующих это направление, а с юридической точки зрения свобода договора позволяет заключать такие сделки. Приобретение токенов за фиатную валюту по ее мнению приравнивается к покупке услуги, и эта схема работает в российском правовом поле.
Элина Сидоренко: «Есть ответственность, если данная услуга будет осуществляться ненадлежащим образом. Если же токены приобретаются за виртуальную валюту, то это нельзя назвать продажей, фактически криптовалюты — это некая цифровая сущность, которая дает человеку право на получение скидки, и хоть процент этот очень большой, можно говорить, что сделка осуществляется в фиатной валюте».
RMС токены воспринимаются как некий актив, который удостоверяет право человека на членство в закрытом клубе майнинга. Определение же самого майнинга на данный момент нет, он не запрещен и не разрешен. По мнению ЦБ некоторых стран, он рассматривается как форма самостоятельной хозяйственной активности, которая пока никаким образом не урегулирована. При этом российские граждане в случае нарушения их прав могут спокойно обращаться в российские суды в рамках разрешения споров об оказании услуги.
Элина Сидоренко: «Этот проект интересен именно тем, что мы находим первое оптимальное решение в рамках российской юрисдикции. Это отличает проект от всех остальных, и, как мне представляется, это дает определенные гарантии.»
Также Элина отметила, что к этому проекту имеет очень опосредованное отношение, и выступает как представитель генератора. И принципиально важным вопросом для нее является защита интересов инвесторов. Даже для криптовалют, и достигается это весьма интересным способом:
Элина Сидоренко: «Переведение биткоина в так называемую информационную единицу, которая не имеет финансового характера в контексте данного договора, открывает для нас российскую юрисдикцию. Даже если будет урегулирование какого-то спора, мы можем требовать возврата этих же информационных единиц в том же самом объеме, потому что деньгами они в этой части не являются.»
После Элины слово взял Сергей Бобылев, начал он с преимуществ России для майнинга. Были затронуты дешевая электроэнергия, холодный климат, надежная энергетическая система с профицитом в 20 гигаватт и наличие квалифицированных кадров. По словам Сергея, существующие майнеры все производятся по фон-неймановским принципам, которые были созданы еще в сороковых годах. Уникальность мультиклет чипа, который планируется ставить в новые майнеры, в принципиально другой архитектуре.
Он рассказал, что фон-неймановская архитектура выполняет все действия последовательно, и все необходимые для параллельности вещи делаются искусственно. Для архитектуры мультклет параллельность вычислений является естественной, что дает выигрыш в хорошо распараллеливаемых задачах. Более подробно об архитектуре мультиклет можно узнать из видео с объяснениями от Бориса Зырянова и Дмитрия Мариничева:
Видео. Мультиклет для майнинга: разбор архитектуры от Бориса Зырянова и Дмитрия Мариничева
Дмитрий Мариничев также позже уточнил, что пока в планах выпуск процессоров с не более чем 256 клетками. Но увеличение количества самих чипов на плате позволит эффективно масштабировать майнер, архитектура это позволяет. Для интересующихся Дмитрий пояснил технические детали:
Дмитрий Мариничев:
«Основная соль этого микропроцессора заключается в том, что у него идет не выборка стандартных команд из памяти и их реализация, а назначение мнемоник данным и мнемоник задачам каждой клетке процессора. В результате этого мы получаем не скалярную архитектуру, и не гиперконвеерную архитектуру, а просто архитектуру, которая работает на общей шине.»
Также был задан вопрос о работе с памятью, ведь это может быть узким местом при майнинге того же Ethereum.
Дмитрий Мариничев:«Ответ прост. У нас память ровно такая же, как на видеокартах, в некоторых моментах она даже хуже. Но работа с памятью это опять же команда в тактовом моменте. У нашего процессора мультиклет этого нет, он забирает из памяти данные тогда, когда они нужны ему для работы. За один такт, одновременно считая другие данные. Поэтому работа с памятью не так сильно влияет на мультиклет, как, например, на видеокарту, которая собирает задачи и распределяет задачи. У нее в любом случае искусственный параллелизм, в отличие от мультиклета.»
При этом мультиклет чип можно переключить под различные форки типа Ethereum, Monero и т.п., в отличие от ASIC майнеров. Не потребуются особые знания для перепрошивки или смены алгоритма работы, как это происходит с FPGA, достаточно программ на С или ассемблере, что для большинства программистов гораздо понятнее. Дмитрий даже спрогнозировал возможность появления программистов, специализирующихся на таких майнерах, ведь их можно использовать для более широкого круга задач, чем майнинг.
Сергей Бобылев сделал акцент на том, что речь идет не о майнинге биткоинов, а только альткоинов, и результаты сравнения идут с неспециализированным оборудованием типа видеокарт. Сам процессор уже существует и работает. Задача его упростить, убрав все не нужные для майнинга блоки, увеличить количество клеток и перевести с 180 нм на 28 нм технологию производства.
Также Сергей отметил, что его компания выпускает отопительное оборудование с майнерами в качестве нагревательного элемента, так что эффективность может быть еще выше за счет отсутствия необходимости охлаждения и вторичного использования тепла от майнеров.
Еще одна проблема, которую затронул Сергей — чрезмерное сосредоточение майнинговых мощностей в Китае. При том даже для самих китайских майнеров это представляет угрозу, потому что такое сосредоточение мощностей в одной стране подрывает доверие к криптовалюте. Решения властей Китая могут очень существенно повлиять на сеть уже сейчас, так как в Китае уже более 50% мощностей для майнинга, а также сосредоточено большинство производителей майнинг оборудования. Если же Китай будет не единственным центром, то доверие к криптовалютам только вырастет.
Дальше разговор шел о холдинге RMC, аббревиатура которого имеет уже несколько расшифровок в разных источниках: Russian Miner Coin, Russian Mining Center, а на пресс-конференции звучала как Русская Майнинговая Компания. Ранее мы писали уже о холдинге RMCи экскурсии на их майнинг ферму. У холдинга RMC уже есть 20 МВт-ный майнинговый центр в Технополисе Москва, строятся еще 2 аналогичных. Разрабатывались и производились майнеры под брендом Pantech, следующими планируется выпустить майнеры Sunrise на 16 нм. чипах Bitfury, а после них майнеры на мультиклет чипах. Чипы планируется делать на Тайване, а производство плат, сборку и софт планируется делать самостоятельно. Такое же название RMC будет и у самого токена, который позволит его обладателям получить майнеры следующего поколения и зайти в закрытый клуб майнинга. Токены планируется выпускать с помощью технологии цветных монет и кошелька Mycelium. По словам Сергея Бобылева, этот кошелек имеет 170 тыс. пользователей с суммарным остатком криптовалют на нем примерно на 1.5 млрд.$, так что за 100 млн.$ будущего ICO он спокоен. Решение было выбрано из-за простоты и надежности, т.к. технологии уже несколько лет, не требуются умные контракты, в которых зачастую находят ошибки, и не требуется привлекать сторонние платформы. Достаточно скачать кошелек с маркета, и уже можно будет работать с токеном RMC и получать доход на свой кошелек. Один RMC токен будет продаваться на пресейле по 4000$, порог входа 250 000$. Во время ICO токены будут по 4100$- 4900$. Сроки действия ICO c 28 августа по 20 сентября. Пресейл идет уже сейчас, все желающие в нем участвовать могут придти в офис и заключить юридически значимый договор. Оплачивать можно рублями, также для зарубежных партнеров есть возможность заключать сделки в правовом поле Австрии. На ICO будут приниматься биткоины и эфир, но эфир будет конвертироваться по текущему курсу в биткоин. Один токен будут давать возможность своему владельцу получить 1 майнер с мультиклет чипами через 13 месяцев, а пока они не произведены — получать доход от классического майнинга биткоина и покупать со скидкой майнеры Sunrise c сентября.
Вторая идея ICO после мультиклет чипа, это чип безопасности. Данный чип будет находиться непосредственно на платах и будет отвечать за разделение хэшрейта. Большую часть хэшрейта и дохода будет получать физический владелец майнера, и он может распоряжаться ей как угодно. А 20% хэшрейта пойдет в пул RMC, из которого будут вестись выплаты владельцам токенов. Выпаять чип и изменить разводку платы, чтобы не отдавать эти 20%, будет экономически нецелесообразно по словам разработчиков. А с учетом того, что майнеры Sunrise будут иметь в 2 раза лучший ROI, чем у конкурентов, потеря 20% хэшрейта покупателей никак не должна остановить. Авторы надеются, что получится использовать преимущества физичекских лиц, типа социальных тарифов на электроэнергию, которые недоступны организациям. Таким образом планируется создать распределенную ферму, которая работает по всей стране. Владельцы сами заинтересованы в том, чтобы их майнеры постоянно были в работе, а не простаивали, так что RMC надеются получить стабильный хэшрейт на свой пул. По экономической части Сергей отметил, что данное ICO будет ограниченным в том числе и по максимально привлекаемой сумме в 100 млн.$, т.к. производить огромное количество мультиклет майнеров нецелесообразно, начнется внутренняя конкуренция. Всего планируется выпустить 25 000 мультиклет майнеров. Доход от ICO планируется хоть и меньше, чем у многих других ICO, которые иногда «стреляют», зато легко прогнозируем, и явно выше, чем в среднем у классического бизнеса. Также инвесторы смогут получать дивиденды из клуба совместного майнинга, возможность колокации майнеров в ЦОД RadiusHost. Есть возможность заключить классический договор поставки товара. Поскольку команда состоит из разработчиков, которые много лет работают на рынке, сомнений в успешности производства у Сергея Бобылева нет.
Также он сравнил свои майнеры с майнерами текущего лидера по производству подобных устройств — BITMAIN. По словам Сергея, китайские майнеры специально изготавливаются с пониженным качеством, так как производителю выгодно, чтобы майнер выходил из строя через полгода — год, и покупатели шли бы покупать новый.
Сергей Бобылев: «Поэтому на таких майнерах отсутствует вся защита, схемотехника построена так, что все сделано на самом-самом пределе. Даже такая простая вещь как термозащита во многих моделях не стоит. То есть набивается пылью и пухом вентилятор охлаждения, и майнеру ничего не остается как сгореть.»
На майнерах производства RMC ставится защита, это несколько удорожает майнер, но повышает его надежность. RMC выгодно, чтобы майнеры работали как можно дольше, так как 20% хэшрейта идет их пул, он же клуб совместного майнинга. Доход от этого пула распределяется между держателями токенов пропорционально доле владения. На майнеры будет даваться гарантия в три года, что довольно много для такого класса устройств. Подразумевается, что физически майнеры должны оставаться работоспособными не менее 5-7 лет. Если посмотреть на удельное энергопотребление, майнеры Sunrise потребляют довольно много для 16 нм. чипов Bitfury. Объясняется это тем, что в начале цикла жизни важнее большой хэшрейт, чтобы больше успеть заработать, и оборудование настроено на максимальную производительность путем разгона. А когда сложность значительно возрастет, и на первый план выйдет энергоэффективность, тогда можно будет поменять удельное энергопотребление в два раза, пусть и с потерей части хэшрейта, но остаться рентабельными на рынке с теми же майнерами. Китайские майнеры такого не позволят, заявил Сергей Бобылев. Майнеры Sunrise s11i планируется начать отгружать с конца сентября 2020, и при покупке за RMC будет фиксированная стоимость в 1600$ за одно устройство с блоком питания. Пример такого майнера был представлен на пресс-конференции, но в серию пойдет версия с некоторыми техническими доработками.
Если верить слайдам презентации, Pantech sx6 и Bitmain s9 имеют период окупаемости 12 месяцев, а у Sunrise s11i этот срок будет 5 месяцев, даже с учетом вычета 20% хэшрейта. Сергей отметил, что цены указаны с блоками питания и с доставкой в РФ.
Сергей Бобылев: «Тут какая синергия интересная: мы майнер продаем по себестоимости, при этом сам владелец майнера, если он — физическое лицо, имеет низкую цену на электроэнергию. И ему не сложно поделиться 20% хэшрейта, это как будто майнер у него на 20% больше электричества потребляет. То есть каждый делится тем, что у него самое дешевое: инвестор делится деньгами, мы производим майнер по себестоимости, конечный владелец делится своей электроэнергией и временем, что он следит за работой майнеров. В итоге мы получили такую экосистему, которая по эффективности даст фору любой самой крупной китайской ферме.»
Мультклет чип команда планирует выпустить через 10 месяцев, и владелец токенов в случае успеха сможет выбрать, остаться ли майнить на ASIC майнерах Sunrise, или выпустить и получить через три месяца мультиклет майнер. Три месяца отсчитываются от получения успешно работающего образца чипа, за это время будет налажено производство готовых майнеров. Суммарно по плану физические устройства на мультиклет чипах должны появиться через 13 месяцев. Таким образом RMC страхуют потребителей от случая, если что-то не так пойдет с мультиклетом, держатели токенов будут получать доход с майнеров Sunrise. Подробнее можно эту схему рассмотреть графически:
Автор: Иван Тихонов
Прикрепленные документы
RMC_v.10_RU.pdf
Источник: Bits Media
Ссылка: https://bits.media/rmc-holding-multiclet-mainer-ico-generator/