Развитие RISC-V & мультиклеточная архитектура

256c1bcb199ab79c55ee9909fc73364b.png

Рост популярности RISC-V с момента его появления в 2010 году позволяет говорить, что архитектура состоялась. Можно отметить два наиболее ярких примера.

Первый. Китай создает на базе  RISC-V свой форк RISC-X. Он будет, как и RISC-V, открытым и доступным всем странам альянса «Один пояс и один путь». Создание этого форка повышает надежность и устойчивость китайского IT сектора при потенциально возможных санкциях и других неблагоприятных сценариях.

Второй. Правительство Индии анонсировало программу Digital India RISC-V Microprocessor Program (DIR-V), которая координирует совместную разработку промышленными и научными институтами страны микропроцессоров для серверов, мобильных устройств, автомобилей, микроконтроллеров различного назначения и устройств Интернета вещей на базе RISC-V.

Пока успех архитектуры RISC-V — это, в первую очередь, ее открытость. Все остальные факторы вторичны. Минимализм системы команд, ее стандартизация, программная инфрастуктура — все это очень важно. Но, если бы за все это платили, как платят создателям ARM, то RISC-V, скорее всего, не было бы. Говорить о действительном успехе этой архитектуры можно будет только тогда, когда она создаст реальную конкуренцию ARM и х86 на высокомаржинальных рынках мобильных телефонов, планшетов, ПК, встроенных систем, суперкомпьютеров и искусственного интеллекта.

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

ARM тоже начинал с небольшой, в несколько десятков операций, системы команд. Современный ARMv8 имеет около 1000 команд + суперскалярность. Это все — плата за производительность. Подобный путь должна будет пройти и архитектура RISC-V, чтобы выйти на эти рынки.

Существующие реализации  RISC-V — это, как правило, микроконтроллеры. Например, как микропроцессор MIK32, созданный АО «Микрон».

Микропроцессор MIK32, созданный АО «Микрон»

Уровень микроконтроллера явно не та цель, которая ставилась при создании RISC-V. Это понимают и авторы, и пользователи архитектуры. Практически из всех материалов по RISC-V следует вывод о необходимости сильного смещения в сторону суперскалярных ядер. С одной стороны, это ожидаемо, поскольку такой способ повышения производительности соответствует идеологии RISC, однако, с другой стороны, такой подход выглядит как лоббирование определенных технических решений.

Как известно, суперскалярность — это способность процессора выявить и реализовать в процессе исполнения программы тот параллелизм, который присутствует в ее последовательном коде. Инструменты, которые обеспечивают решение этой задачи — достаточно известны. Основные из них — это предсказание переходов, внеочередное исполнение команд, предикативные команды. Работы в этом направлении для RISC-V ведутся.

Известно также, что суперскаляр — это очень сложно. Нельзя не согласиться тем, что:

Беда не в самом суперскаляре, а в представлении программ. Программы представлены последовательно, и их нужно во время исполнения преобразовывать в параллельное выполнение. Главная проблема суперскаляра — в неприспособленности входного кода к его нуждам. Имеется параллельный алгоритм работы ядра и параллельно организованная аппаратная часть. Однако между ними, по середине, находится некая бюрократическая организация — последовательная система команд. Компилятор преобразует программу в последовательную систему команд; от той последовательности, в какой он это сделает, будет зависеть общая скорость процесса. Но компилятор не знает в точности, как работает машина. Поэтому, вообще говоря, работа компилятора сегодня — это шаманство. Он просто смотрит: «если так переставить, то быстрее будет». Наверное.

Но, все упорно идут по этому пути. Сначала одна, очень квалифицированная группа программистов, плохих на этой работе не держат, создает backend фазу компилятора, долго и упорно «вылизывая» код, добиваясь минимума команд. При этом тот параллелизм, который изначально виден в исходном коде на языке высокого уровня, после backend увидеть крайне сложно. Потом, другая не менее квалифицированная группа, но уже инженеров, делают все, чтобы из этого последовательного оптимизированного кода увидеть (хотя бы частично) и реализовать на лету в процессоре тот параллелизм, который был в исходном коде.

Альтернативный подход это отказ от последовательного фон-неймановского кода. Сохранение в откомпилированной программе всего параллелизма, присутствующего в исходном коде. Это обеспечивается мультиклеточными принципами организации вычислительного процесса (мультиклеточной архитектурой).

Подробнее о мультиклеточной архитектуре

Мультиклеточная архитектура — принципиально новая, патентно-защищенная, не-фон-неймановская архитектура, обеспечивающая автоматическую реализацию параллелизма в процессе выполнения программы. Архитектура апробирована (выпущено три процессора), которые применялись в ряде приборов. Отличается высокой производительностью и низким энергопотреблением (подробнее: Мультиклет R1 — первые тесты, Мультиклет стал еще доступнее и Мультиклеточная архитектура: тесты и развитие).

Мультиклеточная архитектура может быть использована не только на архитектурном уровне процессора доступном компилятору и программисту, но и на микроархитектурном уровне.

Так, если уровень системы команд RISC-V рассматривать как архитектурный, доступный компилятору и программисту, то реализация этого уровня внутри процессора на мультиклеточных принципах будет микроархитектурным уровнем, недоступным программисту, но именно этот уровень отвечает за характеристики процессора.

В этом случае, поток команд RISC-V, выбираемый из памяти, декодируется в поток микрокоманд для мультиклеточнго ядра, например состоящего из 4–16 клеток, и выполняется на микроархитектурном уровне. Так, для восьмиклеточного ядра:

В результате предлагаемая микроархитектура обеспечивает полный аналог суперскалярного режима работы процессора. А именно

  1. Блоки выборки и декодирования клеток выполняют выборку до 8 команд за такт. Выборка осуществляется независимо от процесса исполнения ранее выбранных команд, до выборки команды перехода;

  2. Микрокоманды, полученные после декодирования, тегируются (определяются теги требуемых операндов, устанавливается тег микрокоманды, который является тегом ее результата), и поступают в буферные устройства клеток, где хранятся до исполнения;

  3. Микрокоманда исполняется по готовности, когда в массив результатов клетки придут все необходимые ей результаты с тегами требуемых операндов. Результат выполнения микрокоманды с ее тегом также поступает в массивы результатов клеток;

  4. Клетки синхронизируются только процессе выборки и декодирования. Исполнение микрокоманд не синхронизировано. Каждая клетка на этом этапе работает независимо от других;

  5. В целом, мультиклеточное ядро работает как система массового обслуживания. Глобального конвейера нет. Внутри каждой клетки конвейеризировано только исполнение операций;

  6. Регистры общего назначения отображаются на локальную память и используются на общих основаниях, как локальные переменные;

  7. Латентность прерывания — нулевая, так как нет общего ресурса у прерываемой и прерывающей программ в виде поля регистров;

  8. Переход осуществляется при вычислении адреса перехода, независимо от завершения ранее выбранных команд.

В результате предлагаемая микроархитектура обеспечивает полный аналог суперскалярного режима работы процессора. А именно:

  • осуществляется одновременная выборка  и последующее параллельное исполнение до 8 команд;

  • команды выполняются вне очереди;

  • в подавляющем большинстве случаев выборка и исполнение команд перехода очередного линейного участка осуществляется еще до завершения предыдущего, что позволяет отказаться от механизмов предсказания перехода.

Предсказание переходов — ключевой механизм в традиционном подходе к реализации суперскалярности. Современные микропроцессоры используют все более сложные алгоритмы предсказания. Хотя в существующих блоках предсказаний все еще можно получить решение за один такт, недавние исследования показывают, что повышение, в перспективе, тактовой частоты потребует многоциклового доступа к таблицам прогнозирования ветвлений. Таким образом, будущие предсказатели переходов должны учитывать не только площадь, точность и энергопотребление, но и задержку.

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

Так, по оценке инженеров компании AMD затраты кремния на организацию суперскалярного вычисления в три и более раз превосходят затраты на собственно реализацию системы команд семейства х86, включающей около 2000 команд. В мультиклеточной микроархитектуре эти затраты сравнимы с затратами на реализацию команд RISC-V. Таким образом, высвобождается кремниевый ресурс, который может быть использован в различных целях.

Характеристики мультиклеточных ядер в сравнении с Intel Kaby Lake

В 2020 году компанией «Мультиклет» был проведен ряд семинаров с техническими специалистами компании AMD по мультиклеточной архитектуре, на которых она получила высокую оценку.

Анализировались ECAD оценки  мультиклетки процессора MultiClet S1 и одного суперскалярного ядра Intel Kaby Lake. Мультиклетка — это аналог суперскалярного RISC процессора с выборкой за один такт до 4-х команд. Суперскалярное ядро Intel Kaby Lake за один такт выбирает до 6-ти CISC команд, каждая из которых, в свою очередь, декодируется в группу до 6-ти RISC команд.

Характеристики мультиклетки и ядра приведены в таблице 1.

Таблица 1.

Процессор

MultiClet S1

1 ядро
Intel Kaby Lake

Частота

2000 МГц

4500 МГц

Энергопотребление

0.14 W

7 W

Площадь
(14 нм)

0.23 мм2

9.5 мм2

Количество команд выбираемых за один такт CISC (RISC)

2(4)

6 (36)

Данные по времени выполнения тестов приведены в таблице 2.

Таблица 2.

Тест

Мультиклетка
(4 клетки)
MultiClet S1, такты

1 ядро
Intel Kaby Lake,
такты

Бинарное дерево
(глубина 6)

1167671

247511

8 ферзей

3510425

700389

Мандельброт (32×32)

1164781

301888

Драйстоун
(200 циклов)

146076

17400

Сравнительная оценка данных приведенных в табл. 1,2 показывает, что несмотря на то, что абсолютное время время решения задач мультиклеткой больше, ее удельные характеристики, для всех тестов, по отношению к энергопотреблению в разы лучше, чем  характеристики  ядра Intel Kaby Lake.

Аналогичные данные были получены и при оценке алгоритма подсчета хэшей Ethash (см. таблицу 3).

Таблица 3.

Устройство

Хэшрейт

TDP

Хэшрейт/TDP

Техпроцесс

Плата-ускоритель
с 16
MultiClet S1

62 MHash/s

50 W

1.24

7 нм

Плата-ускоритель с 16 MultiClet S1

52 MHash/s

84 W

0.62

28 нм

NVIDIA 90HX

86 MHash/s

320 W

0.27

7 нм

NVIDIA RTX 2080 Ti

52.5 MHash/s

180 W

0.29

12 нм

AMD Radeon RX 5700 XT

51.5 MHash/s

150 W

0.34

7 нм

AMD Radeon RX Vega 64

46 MHash/s

200 W

0.23

14 нм

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

  • уменьшения площади процессора и, соответственно, цены процессора;

  • уменьшения энергопотребления;

  • увеличения объемов внутрикристальной памяти и, как следствие, для повышения производительности;

  • расширения номенклатуры периферийных блоков.

Таким образом, симбиоз традиционного фон-неймановского архитектурного уровня RISC-V и не-фон-неймановской мультиклеточной микроархитектурой обеспечивает получение существенных конкурентных преимуществ процессоров RISC-V по сравнению с ARM и х86 при выходе на высокомаржинальные рынки (мобильные телефоны, планшеты, ПК, встроенные системы и супервычисления).

© Habrahabr.ru