Как мы все знаем, процессоры с архитектурой x86 в настоящее время доминируют на рынках ПК и серверов, тогда как процессоры с архитектурой Arm доминируют на рынке мобильных устройств и занимают большую долю рынка IoT. Однако в последние годы архитектура RISC-V стала очень популярной в области Интернета вещей, которая фокусируется на энергоэффективности благодаря своим преимуществам, таким как открытый исходный код, оптимизированные инструкции и масштабируемость.
Благодаря поддержке RISC-V International и связанных с ней производителей микросхем, RISC-V также начал выходить на рынок серверов с более высокими требованиями к производительности.
В начале 2023 года RISC-V International определила HPC как стратегическую приоритетную область для роста RISC-V, и в сочетании с недавно одобренными векторными расширениями и большим количеством усилий по портированию ключевых библиотек и инструментов HPC в программном обеспечении HPC становится ясно, что импульс в этой области быстро растет.
Многие проекты по всему миру, такие как европейский проект eProcessor, процессор Esperanto с тысячами ядер RISC-V и мультивендорный проект RISE, направленный на разработку поддержки ключевых программных компонентов RISC-V, могут способствовать популярности RISC-V в высокопроизводительных вычислениях, включая HPC, и в конечном итоге позволить сообществу создавать суперкомпьютеры на основе этой технологии.
Кроме того, ранние исследования приложений подтверждают преимущества, которые RISC-V может принести в высокопроизводительные рабочие нагрузки.
В декабре 2022 года стартап по производству микросхем Ventana Microsystems представил на саммите RISC-V Summit первый в мире 192-ядерный CPU-VeyronV1 на базе архитектуры RISC-V.
По имеющимся данным, VeyronV1 использует передовую 5-нм техпроцесс, основанную на высокопроизводительном ядре RISC-V собственной разработки Ventana, 8-конвейерной конструкции, поддерживает выполнение вне очереди, с основной частотой до 3,6 ГГц, каждый кластер имеет до 16 ядер, а несколько кластеров могут поддерживать до 192 ядер, имеет 48 МБ общего кэша L3, имеет расширенную защиту от атак по побочным каналам. меры, IOMMU и Advanced Interrupt Architecture (AIA), поддерживают комплексные функции RAS и нисходящие методы настройки производительности программного обеспечения для удовлетворения различных потребностей центра обработки данных.
Согласно данным, раскрытым Ventana, в тесте SPECint2017При энергопотреблении 300 Вт 128-ядерная версия VeyronV1 значительно опережает 64-ядерную AMDEPYCMilan7763 (280 Вт) и в два раза мощнее 64-ядерного AWS Graviton G3 (ядро Neoversev1) и 40-ядерного Intel Xeon Ice Lake8380 (270 Вт). Конечно, в основном это связано с тем, что количество ядер достигло вдвое большего, чем у конкурирующих продуктов.
Следует отметить, что VeyronV1 не имеет SIMD или векторного исполнительного блока, что будет очень невыгодно для серверных процессоров Intel или AMD с AVX-512.
Кроме того, VeyronV1 в настоящее время не находится в массовом производстве. Ранее было обещано предоставить образцы клиентам во втором или третьем квартале этого года. Поэтому приведенные выше официально объявленные данные пока остаются на бумаге.
Напротив, 64-ядерный серверный чип RISC-V SG2042, выпущенный отечественным производителем в марте этого года, поставлялся небольшими партиями.
Недавно зарубежный исследователь Ник Браун провел реальные испытания этого чипа с помощью набора тестов RAJAPerf и обнаружил, что по сравнению с новейшими широко доступными чипами RISC-V его средняя производительность на ядро увеличилась в 5–10 раз. Однако при многопоточных нагрузках средняя производительность высокопроизводительных процессоров x86 по-прежнему в 4–8 раз выше.
Согласно отчету об исследовании, 64-ядерный процессор RISC-V работает на частоте 2 ГГц, состоит из четырех высокопроизводительных ядер C920 и использует 12-уровневый многоуровневый суперскалярный конвейер с внеочередным выполнением задач.
C920 предоставляет набор команд RV64GCV с тремя блоками декодирования, четырьмя блоками переименования/расписания, восемью блоками выполнения/выполнения и двумя исполнительными блоками загрузки/сохранения. Поддерживает расширение стандарта векторизации (RVVv0.7.1), ширина вектора 128 бит, поддерживает типы данных FP16, FP32, INT8, INT16, INT32 и INT64. Однако C920 не поддерживает векторизацию FP64.
В исследовании говорится, что плавающая запятая двойной точности является основой подавляющего большинства высокопроизводительных рабочих нагрузок, поэтому ядра, которые могут поддерживать векторизацию этих операций, могут обеспечить более высокую производительность для высокопроизводительных вычислений. Каждое ядро C920 также содержит 64 КБ кэша инструкций (I) и данных (D), 1 МБ кэша L2, совместно используемого кластером из четырех ядер, и 64 МБ системного кэша L3, общего для всех ядер в кластере. Также доступны четыре контроллера памяти DDR4-3200 и 32 линии PCIeGen4.
Важным фактором для рабочих нагрузок HPC является векторизация, а поскольку ядро C920 поддерживает только RVVv0.7.1, поддержка компилятора представляет собой проблему. Текущая основная версия компилятора RISC-VGNU не поддерживает ни одну версию векторных расширений. Хотя репозиторий GNU содержит ветку rvv next, предназначенную для поддержки rvvv1.0, на момент написания исследования исследователи активно не поддерживали ее.
Кроме того, существовала ветка rvv-0.7.1 для rvvv0.7.1, но эта ветка была удалена. Из-за отсутствия поддержки основного GCC, T-Head предоставляет собственную версию компилятора GNU (Xuantie GCC), оптимизированную для ее процессоров.
Пользовательский компилятор T-Head поддерживает как RVVv0.7.1, так и их собственные расширения. Хотя было предоставлено несколько версий этого компилятора, GCC8.4, как часть выпуска 20210618, предлагает лучшие возможности автоматической векторизации, поэтому эта версия была выбрана для экспериментов по сравнительному анализу, проведенных исследователями.
Эта версия компилятора генерирует компонент RVV, зависящий от длины вектора (VLS), который соответствует 128-битной ширине вектора C920. Все ядра были скомпилированы на третьем уровне оптимизации, а все сообщаемые результаты усреднены за пять запусков.
Сравнение с другими высокопроизводительными ядрами RISC-V
Исследователи сравнили производительность SG2042 с платами разработки StarFive VisionFiveV1 и VisionV2. Версия V1 содержит StarFive JH7100SoC, а версия V2 — StarFive JH7110SoC.
Оба SoC, JH7100 и JH7110, построены на 64-битном ядре RISC-VSiFiveU74, причем JH7100 содержит два ядра, а JH7110 — четыре ядра. SoC указан как работающий на частоте 1,5 ГГц, а ядро U74 содержит 32 КБ (D) и 32 КБ (I) кэш-памяти L1. Обе модели SoC также содержат кэш 2MBL2, общий между ядрами.
Однако SiFiveU74 предлагает только RV64GC и, следовательно, не поддерживает векторные расширения RISC-V.
△На рисунке 1 показано сравнение одноядерной производительности между VisionFiveV2 и V1 и SG2042 с точки зрения двойной точности (FP64) и одинарной точности (FP32). Где полоса представляет собой среднее количество раз быстрее или медленнее по категории, а линии варьируются от самой большой до самой маленькой.
Как видно на рисунке 1, одно ядро C920 превосходит ядра U74 V2 и V1 как в двойной, так и в одинарной точности.
При двойной точности средняя производительность ядра C920 в 4,3–6,5 раза выше, чем у U74 в V2, работающего с двойной точностью. Кроме того, в режиме одинарной точности C920 показал производительность, превышающую среднюю производительность в 5,6–11,8 раз. Это впечатляющий прирост производительности, и в C920 нет ядер, которые работали бы медленнее, чем U74.
Производительность некоторых ядер на C920 очень впечатляет, например, тест набора памяти из группы алгоритмов работает в 40 раз быстрее в FP32 и в 18 раз быстрее в FP64, чем U74.
Важно подчеркнуть, что этот тест выполняется на этих ядрах в наилучшей возможной конфигурации, т. е. векторизация используется на C920, но векторизация не поддерживается на U74 и, следовательно, недоступна на V1 или V2.
Существует значительная разница в производительности между FP32 и FP64 на SG2042, что указывает на то, что фактически векторные операции C920 не поддерживают FP64. Для сравнения, разница в производительности при работе с двойной и одинарной точностью на V2 намного меньше.
Одним из аспектов результатов на рисунке 1, который удивил исследователей, было то, что VisionFiveV1 работал значительно медленнее, чем V2. Учитывая, что в тестах RAJAPerf запускался только на одном ядре, двухъядерный и четырехъядерный характер чипа не имеет значения, поскольку оба они содержат одно и то же ядро U74, поэтому производительность должна быть примерно одинаковой.
Однако V1 в шесть-три раза медленнее, чем V2 при двойной точности, и в один-три раза медленнее при одинарной точности. Хотя можно предположить, что V1 может работать на более низкой тактовой частоте, чем V2, хотя в таблице данных они оба указаны как работающие на частоте 1,5 ГГц, на машине нет никакой документации или выходных данных, подтверждающих это.
Как видно на рисунке 1, производительность, достигаемая одним ядром C920, впечатляет по сравнению с существующими общедоступными ядрами RISC-V. T-Head описывает ядро как высокопроизводительный процессор RISC-V.
Тесты также показывают значительное улучшение производительности во всем наборе тестов по сравнению с U74, который ранее считался лучшим выбором среди широко доступных RISC-VCPU для экспериментов с рабочими нагрузками HPC.
Помимо одноядерной производительности, SG2042 также значительно опережает SoC JH7100 V1 и JH7110 SoC V2 по количеству ядер.
Сравнение с производительностью процессора сервера x86
Итак, как SG2042 справляется с рабочими нагрузками HPC по сравнению с другими коммерческими серверными чипами x86?
В связи с этим исследователи сравнили его с другими процессорами, используемыми в серверах текущего поколения, а именно с 64-ядерным AMD RomeEPYC7742, 18-ядерным Intel Broadwell Xeon E5-2695, 28-ядерным Intel Ice Lake Xeon 6330 и 4-ядерным Intel Sandy Bridge Xeon E5-2609.
Тесты проводились только на физических ядрах этих процессоров x86, поскольку по умолчанию весь SMT отключен.
AMDEPYC7742 содержит 64 физических ядра в четырех регионах NUMA, по 16 ядер в каждом, но восемь контроллеров памяти. Каждое ядро содержит 32 КБ (I) и 32 КБ (D) кэша L1, 512 КБ кэша L2 и 16 МБ кэша L3, совместно используемого четырьмя ядрами. EPYC7742 обеспечивает поддержку AVX2, имеет векторные регистры шириной 256 бит, что вдвое больше, чем у SG2042, и поддерживает векторизацию для FP64.
18 физических ядер процессора Intel Xeon E5-2695 расположены в области NUMA, обеспечивая 32 КБ (I) и 32 КБ (D) кэша L1, 256 КБ кэша L2 и 45 МБ кэша L3, совместно используемого всеми ядрами. Подобно AMD EPYC7742, Xeon E5-2695 поддерживает AVX2 и имеет четыре контроллера памяти.
Intel Xeon 6330 — новейший из сравниваемых процессоров со всеми 28 физическими ядрами в регионе NUMA, с 8 контроллерами памяти, с 32 КБ (I) и 48 КБ (D) кэшем L1, 1 MBL2 кэша на ядро и 43 МБ общего кэша L3. Xeon6330 поддерживает AVX512 и предоставляет векторные регистры шириной 512 бит.
Intel Xeon E5-2609 — самый старый процессор в этом тесте. Он был выпущен в 2012 году и предлагает только четыре физических ядра. Каждое ядро имеет кэш-память L1 объемом 64 КБ (I) и 64 КБ (D), а также кэш-память L2 емкостью 256 КБ и общий кэш-память 10MBL3. Этот E5-2609 поддерживает только AVX, поэтому длина векторного регистра такая же, как у SG2042, 128 бит, хотя AVX поддерживает FP64.
Во всех тестахИсследователи отключили гиперпоточность на физическом ядре x86.Исследователи использовали GCC версии 8.3 на всех системах, кроме ARCHER2, и компиляция всегда выполнялась на уровне оптимизации O3. Система, в которой все выполняется на максимальном количестве потоков.
△На рис. 4 показана одноядерная производительность каждого чипа, на котором выполняется набор тестов на FP64. Где полоса представляет собой среднее количество раз быстрее или медленнее по категории, а линии варьируются от самой большой до самой маленькой. SG2042 — средний базовый уровень.
Судя по результатам испытаний,Все ядра x86 работали лучше, чем C920, за исключением древнего ядра Xeon E5-2609, которое имело более низкую среднюю производительность в категориях потоковой передачи и тестов алгоритмов.
Процессоры AMD EPYC7742 и Intel Xeon6330, как правило, работают лучше, чем Intel XeonE5-2695, что вполне понятно, поскольку XeonE5-2695 является более старой моделью из трех.
△На рис. 5 показано, сколько раз одноядерная производительность каждого чипа запускалась в наборе тестов на FP32 по сравнению с базовым показателем.
Как вы можете видеть на рисунке 5, AMD EPYC7742 довольно слаб при выполнении операций с одинарной точностью по сравнению с двойной точностью, в то время как средняя производительность процессора Intel столь же хороша. Фактически при использовании FP32 древнее ядро Xeon E5-2609 превосходит C920 в среднем на каждом уровне.
Однако гистограмма среднего значения на рисунке 5 не дает полной картины.
C920 поддерживает векторизацию только для FP32, и на самом деле, как видно из линий на рис. 5 и рис. 4, максимальная скорость многих классов тестов для FP32 выше, чем у FP64.
Кроме того, существует больше самых медленных ядер, которые на процессоре x86 работают медленнее, чем C920 на FP32. Именно в этих ядрах эффективно применяется автовекторизация, и фактически видно, что для класса тестов lcals по крайней мере одно ядро на всех процессорах x86 работает хуже, чем C920.
Таким образом, с точки зрения сравнения одноядерной производительности, средняя производительность AMD EPYC7742 под FP32 в 3 раза выше, чем у C920, Intel XeonE5-2695 — в 2 раза быстрее, Intel Xeon6330 — также в 4 раза быстрее, XeonE5-2609 — в 2 раза быстрее, а эти цифры под FP64 — в 4 раза, 4 раза, 5 раз и 20% быстрее соответственно.
△Многопоточное сравнение производительности FP64, сообщающее, во сколько раз быстрее или медленнее базового уровня.
На рис. 6 показано сравнение производительности для FP64 двойной точности.
Видно, что базовые тесты, тесты lcals, Polybench и потоковые классы больше всего выигрывают от большего количества ядер, поэтому средняя производительность SG2042 лучше, чем у древнего Xeon E5-2609.
△Сравнение многопоточной производительности FP32 с указанием количества раз быстрее или медленнее базового уровня.
На рисунке 7 показано сравнение многопоточной производительности FP32, и эти результаты содержат самые большие различия. Чтобы улучшить читаемость, исследователи ограничили вертикальную ось и пометили фактические значения, превышающие это значение.
Когда дело доходит до многопоточного FP32, SG2042 имеет тенденцию работать немного лучше, чем FP64, против процессоров x86, хотя класс Polybench является исключением, поскольку он работает намного лучше на трех последних процессорах x86, а Intel Xeon E5-2609 работает намного хуже.
Подводя итог, при сравнении многопоточной производительности SG2042 с процессорами x86 его средняя производительность 64-ядерного процессора лучше, чем у 4-ядерного Intel Xeon E5-2609 во всех типах тестов, работающих на FP32 и FP64.
Производительность 64-ядерного процессора AMD EPYC7742 в FP32 и FP64 в 8 и 5 раз выше, чем у SG2042 соответственно. 18-ядерный процессор Intel Xeon E5-2695 достигает в среднем 6 и 4 раза результатов одинарной и двойной точности соответственно. Наконец, 28-ядерный процессор Intel Xeon6330 работает в 6 и 8 раз лучше в FP32 и FP64 соответственно.
в заключение:
Хотя многие компании в настоящее время разрабатывают высокопроизводительные аппаратные прототипы RISC-V, до сих пор возможности запуска рабочих нагрузок на коммерчески доступном программном обеспечении RISC-V были очень ограничены, говорят исследователи.
Несмотря на это, хотя эти решения позволяют экспериментировать с RISC-V, с архитектурной точки зрения они не обеспечивают функций, необходимых для создания высокопроизводительных рабочих нагрузок. Таким образом, хотя сообщество HPC и заинтересовано в RISC-V, оно еще не совсем готово к этой технологии.
Конечно, как первый в мире широко доступный многоядерный серверный чип RISC-V для HPC, SG2042 может значительно повысить интерес и принятие RISC-V в сообществе HPC. Однако ключевой проблемой является то, что он по-прежнему сильно отстает от процессоров x86, распространенных в суперкомпьютерах текущего поколения.
Тем не менее, это очень интересный серверный чип RISC-V, который предлагает некоторые существенные изменения по сравнению с коммерчески доступным в настоящее время оборудованием RISC-V.
Хотя производительность еще не достигла уровня серверных процессоров x86, следует подчеркнуть, что производители RISC-V за короткий период времени прошли большой путь. Напротив, процессоры x86 имеют долгую историю и извлекают выгоду из многолетних разработок.
В настоящее время основным конкурентом RISC-V на рынке серверных процессоров является серверный процессор Arm. В конце концов, теоретически RISC-VCPU может иметь более низкую стоимость, более высокую настройку и масштабируемость, чем процессор Arm.
Исследователи полагают, что для следующего поколения высокопроизводительных процессоров RISC-V предоставление RVVv1.0 будет очень полезным, поскольку это обеспечит использование основных GCC и Clang для компиляции векторизованного кода.
Кроме того, векторизация FP64, более широкие векторные регистры, увеличенный кэш L1 и больше контроллеров памяти на регион NUMA также могут обеспечить значительный выигрыш в производительности и помочь сократить разрыв с высокопроизводительными процессорами x86.
доступ:
Торговый центр Цзиндонг