Новости Вариант Cryptonight - CryptonightR

Тема в разделе "Новости", создана пользователем hen, 19 фев 2019.

  1. hen

    hen Well-Known Monerano

    Регистрация:
    14 сен 2017
    Сообщения:
    148
    Симпатии:
    17
    Это предложение для реализации в Monero следующего алгоритма PoW. Перед прочтением рекомендуется прочитать обсуждение по ссылке.

    Случайное целочисленное математическое изменение

    Деление и извлечение квадратного корня заменяются последовательностью случайных целочисленных инструкций:

    1.png

    В программе может быть от 60 до 69 инструкций, обычно около 63.


    Есть 9 регистров с именами от R0 до R8. Регистры R0-R3 являются переменными, регистры R4-R8 являются постоянными и могут использоваться только в качестве исходного регистра в каждой инструкции. Регистры R4-R8 инициализируются на каждой итерации основного цикла значениями из основных регистров.

    Все регистры являются 32-битными для обеспечения эффективной реализации графического процессора. Хотя регистры можно сделать 64-битными (это поддерживается в майнерах версии ниже).

    Случайная последовательность меняет каждый блок. Высота блока используется в качестве начального числа для генератора случайных чисел. Это позволяет майнерам на CPU и GPU предварительно скомпилировать оптимизированный код для каждого блока. Он также позволяет сверять оптимизированный код для всех будущих блоков с эталонной реализацией, поэтому он будет гарантированно безопасен для использования в демоне Monero кошелька.

    Пример сгенерированной случайности:
    Оптимизированный CPU-майнер:
    Оптимизированные GPU майнеры:
    Программное обеспечение для пула:

    Проектирование


    Набор инструкций берется из тех, которые эффективны на процессорах (или видеокартах) по сравнению с ASIC: все они, кроме XOR, являются сложными операциями на уровне логической схемы и требуют задержки O (logN). Эти операции были хорошо изучены на протяжении десятилетий, поэтому современные процессоры/видеокарты уже имеют их хорошую реализацию.

    SUB и XOR никогда не выполняются с одинаковыми операндами, предотвращая снижение до нуля. ADD определяется как трехсторонняя операция со случайной 32-битной константой для фиксации конечных нулевых битов, которые имеют свойство накапливаться после умножения.

    Генератор кода гарантирует, что минимальная требуемая задержка для ASIC при генерации случайных чисел по меньшей мере в 2,5 раза выше, чем была необходима для DIV + SQRT в Cryptonight v2: текущие настройки обеспечивают задержку, эквивалентную цепочке из 15 умножений, в то время как оптимальная реализация ASIC для DIV + SQRT имеет задержку как у цепочки из 6 умножений.

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

    Для предотвращения оптимизации сгенерированного кода реализован ряд простых проверок. Текущее сочетание команд также помогает предотвратить алгебраическую оптимизацию кода. Мои тесты показывают, что сгенерированный код на C ++, скомпилированный со всеми оптимизациями, в среднем на 5% быстрее, чем прямой перевод на машинный код x86. Это по результатам синтетического теста со случайными числами в цикле.

    Производительность на CPU/GPU и на ASIC

    Как выбирались параметры CryptonightR:
    • имеет такой же хэшрейт, что и Cryptonight v2 на CPU/GPU
    • меньшее энергопотребление на CPU/GPU
    Фактические цифры (хэшрейт и энергопотребление для разных процессоров и графических процессоров) доступны здесь .

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

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

    ASIC с встроенной памятью будет работать в 2.5-3.75 раза медленнее из-за увеличения математической задержки.

    Источник: Cryptonight variant 4 aka CryptonightR

    Перевод:
    hen (@hhhpro)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    LeD XIII нравится это.
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.