Выпуск #7/2024
А.В. Строгонов, О. Бордюжа, А.И. Строгонов
МЕЖДУНАРОДНЫЙ ОПЫТ РАЗРАБОТКИ ПРОЦЕССОРНЫХ ЯДЕР RISC-V И ПРОГРАММНЫЕ ИНСТРУМЕНТЫ С ОТКРЫТЫМ КОДОМ ДЛЯ ИХ ПРОЕКТИРОВАНИЯ
МЕЖДУНАРОДНЫЙ ОПЫТ РАЗРАБОТКИ ПРОЦЕССОРНЫХ ЯДЕР RISC-V И ПРОГРАММНЫЕ ИНСТРУМЕНТЫ С ОТКРЫТЫМ КОДОМ ДЛЯ ИХ ПРОЕКТИРОВАНИЯ
Просмотры: 808
DOI: 10.22184/1992-4178.2024.238.7.156.164
В статье рассмотрен опыт разработки процессорных ядер RISC-V коммерческого применения на примере процессоров компаний MIPS, SiFive, Alibaba Cloud Intelligence, а также академические проекты Rocket Chip Калифорнийского университета в Беркли
и XiangShan Китайской академии наук.
В статье рассмотрен опыт разработки процессорных ядер RISC-V коммерческого применения на примере процессоров компаний MIPS, SiFive, Alibaba Cloud Intelligence, а также академические проекты Rocket Chip Калифорнийского университета в Беркли
и XiangShan Китайской академии наук.
Теги: machine instruction set microprocessor core multi-cluster system multi-issue pipeline risc-v architecture scalable ip processor архитектура risc-v масштабируемый ip-процессор микропроцессорное ядро многоканальный конвейер мультикластерная система система машинных команд
Международный опыт разработки процессорных ядер RISC-V и программные инструменты с открытым кодом для их проектирования
А. В. Строгонов, д.т.н., О. Бордюжа, к.т.н., А. И. Строгонов
В России и Китае большой интерес проявляют к процессорной архитектуре RISC-V. В сентябре 2022 года в России была создана ассоциация независимых разработчиков ПО и вычислительной техники на основе RISC-V, которая получила название «Альянс RISC-V». В него вошли производитель серверов и систем хранения данных Yadro («КНС групп»), разработчик процессоров «Байкал Электроникс», разработчик ОС Astra Linux группа «Астра», разработчик технологической программно-аппаратной платформы Vostok и НИУ «Московский институт электронной техники». В статье рассмотрен опыт разработки процессорных ядер RISC-V коммерческого применения на примере процессоров компаний MIPS, SiFive, Alibaba Cloud Intelligence, а также академические проекты Rocket Chip Калифорнийского университета в Беркли и XiangShan Китайской академии наук.
RISC-V предоставляет собой открытую и гибкую систему машинных команд, позволяющую создавать процессоры для различных областей применения без лицензионных отчислений и ограничений на использование. RISC-V позволяет создавать полностью открытые процессоры и СнК на их основе. В настоящее время на базе спецификации RISC-V разными компаниями и сообществами под различными свободными лицензиями (BSD, MIT, Apache 2.0) разрабатываются и производятся несколько десятков вариантов процессорных ядер и СнК. Поддержка и развитие RISC-V осуществляется некоммерческой организацией RISC-V International. Сообщество насчитывает свыше 3 тыс. компаний-участников из более чем 70 стран мира, активно взаимодействующих и вносящих вклад в развитие экосистемы RISC-V.
RISC-V – это свободная и открытая система команд (Instruction Set Architecture, ISA) и процессорная архитектура, основанная на принципах сокращенного набора команд (Reduced Instruction Set Computer, RISC). Команды RISC-V имеют переменную длину. Набор команд является расширяемым. В любой реализации обязательно присутствует базовый набор команд, который может быть 32-, 64- или 128-битным. Базовые наборы команд называются соответственно RV32I, RV64I и RV128I (I означает Integer – целочисленная арифметика). Помимо базовых команд, конкретная реализация может предлагать команды, относящиеся к тем или иным расширениям. Например, расширение M содержит в себе команды целочисленного умножения и деления, расширение A – атомарные операции, а расширения F и D – операции над числами с плавающей точкой одинарной и двойной точности соответственно (float и double). Эти общие расширения (IMAFD)
собираются в расширение (G).
Если процессор реализует базовые 32-битные команды и поддерживает целочисленное умножение и деление, то он является RV32IM-процессором. Реализованные расширения дописываются в конце следом за обозначением базового набора команд. Обозначения RV32IMAFD и RV64IMAFD сокращают до RV32G и RV64G (G – от general-purpose, «общего назначения»).
Из операционных систем (ОС) с поддержкой RISC-V можно отметить GNU/Linux (начиная с выпусков Glibc 2.27, binutils 2.30, gcc 7.3.0 и ядра Linux 4.15) и FreeBSD (начиная с версии 13.0 второго уровня).
Коммерческие разработки компании MIPS
В настоящее время компания MIPS развивает направление MIPS ISA для проектов RISC-V. Благодаря большому сходству RISC-V ISA и предыдущих поколений MIPS ISA (используется более 35 лет) в новых продуктах eVocore был реализован десятилетний опыт разработки. RISC-V ISA также позволяет добавлять функции в виде пользовательских команд (UDI).
Компания MIPS сотрудничает с Siemens Digital Industries Software и использовала платформу Veloce proFPGA этой компании в новом мультипроцессоре eVocore P8700 RISC-V. Это один из самых производительных масштабируемых IP-процессоров RISC-V в отрасли, который уже используется в таких приложениях, как автономное вождение и усовершенствованные системы помощи водителю (ADAS, AV, IV), машинное обучение, 5G и беспроводные сети, центры обработки данных и хранилища, а также высокопроизводительные встраиваемые приложения.
Процессоры MIPS на платформе Veloce proFPGA от Siemens дают возможность клиентам проверять свои СнК перед реализацией в базис заказных БИС. Можно добавлять логику пользователя и различные ускорители, а также тестировать разработанную СнК для оптимизации функциональных возможностей. Кроме того, платформа Veloce proFPGA от Siemens предоставляет на ранних этапах разработки ПО и проектирования аппаратно-
программного кода полный доступ к аппаратной системе прототипирования, программным инструментам и средствам трассировки/отладки.
Процессор P8700 RISC-V представляет собой многопроцессорную систему с многоканальным (multi-issue) 16-ступенчатым конвейером с внеочередным исполнением команд (Out-of-Order processors, OoO) с когерентной многопоточной, многоядерной и многокластерной масштабируемостью. Клиенты компании MIPS также могут добавлять свои собственные ускорители к системам на базе P8700, сохраняя при этом когерентность. Благодаря возможности поддержки до 64 кластеров, восьми ядер на кластер (512 ядер) и двух потоков на ядро (1024 потока) P8700 представляет собой высокомасштабируемое решение для различных приложений.
Гибкость платформы Veloce proFPGA позволяет использовать прототип разрабатываемой СнК в условиях воздействия различных нагрузок со встроенными испытательными стендами и внутрисхемными подключениями к внешнему оборудованию, такому как генераторы Ethernet или шины PCI Express. Эта платформа позволяет P8700 поддерживать несколько конфигураций, начиная с одноядерного однопоточного процессора и заканчивая многоядерными и многокластерными конфигурациями. Масштабируемая и гибкая платформа СнК от Siemens позволяет сократить время разработки прототипов и обеспечить быструю проверку предложенной концепции СнК.
Еще одно процессорное ядро от MIPS, eVocore I8500 RISC-V, – это многоядерная и мультикласстерная система с упорядочным (в порядке их поступления, In-Order) выполнением команд и повышенной энергоэффективностью для использования в СнК-приложениях. Каждое ядро I8500 сочетает в себе многопоточность и эффективный 5-ступенчатый трехканальный конвейер (triple-issue).
Решения на базе I8500 могут масштабироваться до 64 кластеров, 512 ядер и 2048 потоков. Архитектура процессора поддерживает расширенное извлечение команд из памяти, семь отдельных исполнительных блоков (ALU, MDU, два блока FPU и два блока Memory) для выполнения различных операций: ALU (Arithmetic Logic Unit) – блок, который выполняет арифметические и логические операции; MDU (Memory Data Unit) – блок, который управляет доступом к памяти; FPU (Floating Point Unit) – блок, который выполняет операции с плавающей точкой; Memory – блок, который хранит данные. Такая архитектура позволяет процессору выполнять несколько операций одновременно, что обеспечивает высокую вычислительную производительность.
Процессоры компании SiFive
Мощным 64-разрядным ядром RISC-V, способным превзойти ядро Arm Cortex-A75 по производительности, является P550 от компании SiFive (основана разработчиками RISC-V ISA в Калифорнийском университете в Беркли) с показателем в тесте SPEC CPU2006 8,65 баллов/ГГц.
Основные характеристики процессора P550: система команд RISC-V RV64GBC ISA; 3-канальный 13-ступенчатый высокопроизводительный конвейер OoO; многоядерная когерентность (до четырех ядер); L1 объемом 32 Кбайт + 32 Кбайт и кэш L2 объемом 256 Кбайт на ядро; до 4 Мбайт кэш-памяти L3 в 4-ядерном кластере; тактовая частота 2,4 ГГц, технологический процесс 7 нм. В 2024 году должна выйти плата разработки (одноплатный компьютер) HiFive Pro P550 на 4-ядерном процессоре SiFive Performance P550 (предполагалось, что в соответствии с инициативой Pathfinder компании Intel будет выпущен процессор Horse Creek с архитектурой RISC-V с использованием технологического процесса Intel 4) со встроенными DDR5-5600 и PCIe Gen5 с поддержкой Linux.
Характеристики платы: 16 Гбайт памяти DDR5, два слота расширения PCIe (слот M.2 M-Key (PCIe Gen 3) для SSD-модуля NVME 2280 и слот M.2 E-Key (PCIe Gen 3) для модуля
Wi-Fi/Bluetooth, сеть 1/10GbE, USB 3, встроенная графика и интерфейс с поддержкой удаленного управления (OCP DC-SCM). Форм-фактор платы – промышленный стандарт microATX.
Недавно компания SiFive разработала новое, еще более мощное ядро P870 (64 RISC-V с обширной поддержкой виртуальной памяти, соответствующие требованиям спецификации RVA 23), которое сравнимо по производительности с Arm Cortex-A78 и в тесте SPECint2006 показало 18 баллов/ГГц (в 2024 году предполагается начало производства). Процессоры P870 – это когерентные, многоядерные, многокластерные процессоры с возможностью расширения до 16 ядер с высокопроизводительным конвейером ОоО третьего поколения. Процессор содержит частные кэши L2 и стриминговый предзагрузчик для улучшения производительности памяти, а также блок коррекции ошибок SECDED ECC с отчетом об ошибках. Высокая пропускная способность достигается за счет большего количества наборов команд за цикл, большего количества арифметико-логических устройств (ALU) и большего количества блоков ветвления.
Академический проект Rocket Chip
Rocket Chip – это разработанный в Калифорнийском университете в Беркли СнК-генератор с открытым исходным кодом, доступный по лицензии BSD на Github. Rocket Chip поддерживает интеграцию пользовательских ускорителей в виде расширений набора команд, сопроцессоров или полностью независимых новых ядер. Процессорные ядра, сгенерированные Rocket Chip, были реализованы на кристалле и показали способность загружать ОС Linux.
Rocket Chip (программа на языке Scala) использует язык аппаратного конструирования Chisel для создания библиотек сложных генераторов ядер, кэшей различных уровней, интерфейсов шин (внутрикристальных межсоединений для соединения и управления функциональными блоками в СнК-разработках) и др. Rocket Chip генерирует процессорные ядра общего назначения, использующие открытый RISC-V ISA, и обеспечивает генерацию стандартных конвейерных скалярных ядер как с очередным (Rocket in-order), так и c внеочередным исполнением команд (Berkeley Out-of-Order Machine, BOOM). BOOM является суперскалярным ядром RV64G. Созданию BOOM способствовали процессоры MIPS R10k
и Alpha 21264 с внеочередным исполнением, которые основаны на единой структуре физического регистрового файла.
На рис. 1 показаны блок-схема СнК, сгенерированная с помощью Rocket Chip, и набор программных инструментов, которые входят в состав Rocket Chip: основной генератор ядер (А), генератор кэша (B), генератор RoCC-совместимого сопроцессора (С), генератор ячеек (D), TileLink –
генератор связей между ячейками (E), периферийные устройства (F). На блок-схеме изображены две ячейки (Tile1 и Tile2) с процессорными ядрами Rocket (скалярный) и BOOM (суперскалярный), которые подключены
к 4-банковому кэшу второго уровня L2$ (специальный буфер быстрой памяти) с помощью интерфейса L1toL2.
Генерируемые процессорные ядра содержат L1-кэши инструкций и данных (L1I$ и L1D$), FPU (модуль операций с плавающей запятой) с интерфейсами MemIO и HostIO для связи с внешним миром, интерфейс RoCC, который связывается с подключенными ядрами ускорителей/сопроцессоров. Кэш L2$ через интерфейс L2toIO подключен к внешним системам ввода-вывода и памяти с помощью моста TileLink/AXI4.
Генераторы ядер Rocket и BOOM могут включать в себя: дополнительные модули FPU; настраиваемые конвейеры функциональных блоков и настраиваемые предсказатели ветвлений программы; cемейство генераторов кэша и TLB (буфер ассоциативной трансляции) с настраиваемыми размерами, ассоциативностью и политикой замены; пользовательский интерфейс сопроцессора RoCС; шаблон генератора ячеек, с учетом когерентности кэшей; генератор связей между ячейками (генератор сетей агентов когерентности кэша и связанных с ним контроллеров кэша). Опции конфигурации включают: количество ячеек, политику согласованности, наличие общего резервного хранилища и реализацию базовых физических сетей); периферийные устройства: генераторы шин, совместимых с AMBA (AXI, AHB-Lite и APB) и множество конверторов и контроллеров, включая процессор Z-scale.
Rocket Chip представляет собой генератор скалярных ядер RV64G c 5-ступенчатым конвейером (выборка, декодирование, выполнение, память, обратная запись), с модулем управления памятью MMU, который поддерживает виртуализацию памяти на основе страниц, неблокирующий кэш данных и интерфейс с предсказанием переходов.
Предсказание ветвлений программы настраивается и обеспечивается целевым буфером переходов (BTB), таблицей истории переходов (BHT) и стеком адресов возврата (RAS). Доступна поддержка некоторых расширений ISA (M, A, F, D). BOOM поддерживает спекулятивное выполнение ветвлений программы и предсказание переходов, используя BTB, RAS и параметризированный резервный предиктор (BPD).
Могут быть созданы предикторы, в том числе gshare (двухуровневая адаптивная схема предсказания ветвлений с использованием xor) и TAGE (TAgged Geometric –
тегированный геометрический предиктор с размером истории, разновидность которого используется в процессоре с архитектурой Intel Haswell). BOOM использует модуль загрузки/накопления операций с агрессивным планированием. На рис. 2 показана топология сгенерированного суперскалярного RV64G-процессора BROOM.
Ядро Z-scale (устаревшее ядро) представляет собой генератор 32-разрядных ядер, предназначенный для встраиваемых систем и приложений с микроконтроллерами. Генератор реализует ISA RV32IM и предназначен для взаимодействия с шинами AHB-Lite. В Z-scale используется 3-ступенчатый однопроцессорный конвейер с очередным исполнением (in-order).
Rocket Chip реализуется на Xilinx Ultrascale+ FPGA серии Zynq-7000 с использованием инструментов разработки и отладки встраиваемых микропроцессорных систем, таких как Parallella и ZedBoard. Реализация ядра RV32I возможна на ПЛИС серии Lattice ICE40. Код
написан на SystemVerilog и компилируется при помощи IceStorm.
Используемый в Rocket Chip язык аппаратного конструирования Chisel (Constructing Hardware in a Scala Embedded Language) – это язык описания аппаратуры
с открытым исходным кодом, надстроенный над Scala. Он используется для описания цифровых логических схем и схем на уровне регистровых передач, транслируется в Verilog-код. Chisel можно рассматривать как библиотеку для Scala.
Chisel добавляет примитивы аппаратного обеспечения к языку программирования Scala, предоставляя разработчикам возможности современного языка программирования для написания сложных параметризуемых генераторов схем, которые создают синтезируемый Verilog-код. Эта методология позволяет создавать повторно используемые компоненты и библиотеки, такие как очереди FIFO и арбитры в стандартной библиотеке Chisel, повышая уровень абстракции в дизайне при сохранении детального контроля.
Scala является преемником Java, он в большей степени объектно-ориентирован, чем Java, а также обладает возможностями функционального языка. Сочетание двух подходов делает программирование на Scala гибким, повышает эффективность кода и позволяет реализовывать нестандартные решения.
На основе RTL-описания на Chisel строится аппаратный граф, который, в свою очередь, превращается в промежуточное описание на языке firrtl, а затем встроенный интерпретатор генерирует из firrtl код Verilog или C++.
Китайские проекты в области разработки процессоров RISC-V
Интересен опыт китайских разработчиков процессорных ядер. Китайские процессоры Loongson I, II и III, разработанные Академией наук Китая, изначально базировались на развитии архитектур MIPS32 и MIPS64. В дальнейшем был разработан процессор Loongson 3А6000 (12 нм) с собственной архитектурой LoongArch. Loongson серии 6000 может содержать до 32 новых ядер LA664 и конкурировать с микроархитектурами AMD Zen3 и Intel Tiger Lake. Новая система команд в LoongArch поддерживает около 2000 инструкций и включает в себя все необходимые расширения, включая векторные инструкции, виртуализацию и двоичную трансляцию. Она может транслировать в понятные процессорам Loongson коды команды всех ведущих операционных систем и приложений. Так отечественная ОС Альт Платформа 11 перекомпилирована для использования с процессорами Loongson с архитектурой LoongArch, что в дальнейшем может обеспечить технологический суверенитет в компьютерной промышленности.
Loongson 3A6000 не обладает достаточной производительностью, но соответствует новейшим архитектурам AMD и Intel по такому параметру, как IPC (количество инструкций на такт). Процессор изготовлен по 12-нм техпроцессу (SMIC).
У процессора четыре ядра и восемь потоков, в разгоне до 2,5 ГГц при мощности TDP 50 Вт. Также у него есть кэш-память L2 объемом 256 Кбайт и кэш L3 объемом
16 Мбайт. Процессор совместим с памятью DDR4-3200.
По производительности 3A6000 уступает Intel Core i3-10100 (2020 год).
Процессоры серии 3A7000 будут изготавливаться по 7-нм техпроцессу, прирост быстродействия составит 20–30 % по сравнению с 3A6000. Ожидается, что процессоры появятся не ранее 2025 года.
Еще один китайский проект, XiangShan, представленный в 2020 году институтом компьютерных технологий Академии наук Китая, направлен на разработку высокопроизводительного процессора на базе архитектуры набора команд RISC-V (RV64GC) с использованием программных инструментов с открытым исходным кодом для
их проектирования. Процессор Xiangshan и разработанная к нему ОС Aolai демонстрируют стремление Китая укрепить экосистему RISC-V.
Наработки проекта Xiangshan открыты под пермиссивной лицензией (лицензии на программное обеспечение, которые практически не ограничивают свободу действий пользователей ПО и разработчиков, работающих с исходным кодом) MulanPSL 2.0.
В настоящее время разработаны три поколения процессоров (описание аппаратных блоков процессоров RISC-V представлено на языке Chisel).
Первое поколение, кодовое название YQH: 64-разрядная версия RISC-V с расширениями RV64GC, 11-ступенчатый конвейер, одноядерный, суперскалярный процессор, OoO; техпроцесс 28 нм кремниевой фабрики TSMC, 1,3 ГГц, год производства 2021. Процессоры демонстрируют производительность в тестах SPEC CPU2006: SPECint 2006: 7.03/1 ГГц
и SPECfp 2006: 7.00/1 ГГц, поддерживают память DDR4 с частотой 1600 МГц.
Второе поколение, кодовое название NH: 64-разрядная версия RISC-V с расширениями RV64GCBK, 2-ядерный, суперскалярный процессор, OoO; техпроцесс 14 нм кремниевой фабрики SMIC, 2 ГГц, год производства 2023. Демонстрируют производительность в тестах SPECint 2006 19.10/2 ГГц, SPECfp 2006 22.18/2 ГГц. NH по производительности может конкурировать с Arm Cortex-A76.
Третье поколение, кодовое название KMH: 64-разрядная версия RISC-V с расширениями RV64GCBKHV, 4-ядерный, суперскалярный процессор, OoO. Демонстрируют производительность в тестах SPECint 2006: 40.95/3 ГГц и SPECfp 2006: 43.96/3 ГГц, что сравнимо с производительностью новых ядер ARM Neoverse N2. Компания развивает концепцию Neoverse Compute Subsystem (CSS), представив два новых ядра, Neoverse N3 (Hermes) и V3 (Poseidon), рассчитанных на техпроцессы 2–5 нм. Они являются преемниками N2 (Perseus) и V2 (Demeter), упор в их архитектуре сделан главным образом на повышении производительности в задачах ИИ.
Микропроцессорные ядра проекта XiangShan были реализованы в базисе ПЛИС, и было проведено их моделирование с использованием Verilog-симулятора Verilator
с открытым исходным кодом.
Verilator имеет аналогичную или лучшую производительность по сравнению с Verilog-симуляторами с закрытым исходным кодом (например, Carbon Design Systems Carbonator, Modelsim/Questa, Cadence Incisive/NC-Verilog, Synopsys VCS, VTOC и Pragmatic CVer/CVC).
Симулятор Verilator позволяет преобразовать Verilog-модули в C++-классы, которые потом компилируются в обычную исполняемую программу, что позволяет достичь очень высокой производительности. Verilator может обрабатывать только синтезируемый Verilog-код с учетом архитектурного базиса ПЛИС.
Verilator не переводит Verilog HDL напрямую на C ++ или SystemC. Verilator компилирует код пользователя в более быструю оптимизированную модель с разделением на потоки, которая, в свою очередь, помещается в модуль C ++/SystemC. Результатом является скомпилированная модель Verilog, которая выполняется даже в одиночном потоке более чем в 10 раз быстрее, чем standalone SystemC, а в одиночном потоке примерно в 100 раз быстрее, чем интерпретируемые симуляторы Verilog, такие как Icarus Verilog.
Дополнительное 2–10-кратное ускорение может быть получено за счет многопоточности (что дает в общей сложности 200–1000-кратное ускорение по сравнению с интерпретируемыми симуляторами).
Verilator – инструмент, который компилирует исходные коды Verilog и SystemVerilog в высокооптимизированный (и, возможно, многопоточный) циклически точный код C++ или SystemC. Преобразованные модули можно создавать и использовать в тестовом стенде C++ или SystemC для проверки и/или моделирования.
В качестве эталонной операционной системы, используемой при тестировании реализации на базе ПЛИС, применяется Debian GNU/Linux.
Компания Alibaba Cloud Intelligence (китайский облачный провайдер) открыла исходные коды, а также соответствующее программное обеспечение и инструменты четырех процессорных ядер RISC-V: XuanTie E902, E906, C906 и C910. Хотя RISC-V является открытым стандартом и существует значительная доля ядер RISC-V с открытым исходным кодом, многие коммерческие ядра RISC-V имеют закрытый исходный код.
На базе этих ядер можно самостоятельно разработать свой процессор (СнК) и начать массовое производство. Открытый доступ к документации ядра процессора облегчает разработку программного обеспечения и портирование необходимых драйверов.
Схемы, описания аппаратных блоков на языке Verilog, симулятор и сопутствующая проектная документация XuanTie опубликованы на GitHub под лицензией Apache 2.0. Отдельно опубликованы адаптированные для работы с процессорами XuanTie версии компиляторов GCC и LLVM, библиотека Glibc, инструменты Binutils, загрузчик U-Boot, ядро Linux, middleware с интерфейсом OpenSBI (Supervisor Binary Interface), платформа для создания встраиваемых систем на базе Linux Yocto Project. Ядра OpenE902, OpenE906, OpenC906 и OpenC910 доступны на GitHub под лицензией Apache 2.0.
XuanTie C906 – это 64-разрядный высокопроизводительный процессор на базе архитектуры RISC-V. Cпроектирован с использованием 5-/8-ступенчатого целочисленного конвейера. Он также оснащен 128-разрядными блоками векторных операций, обеспечивающими
повышенную производительность. XuanTie C906 не только использует многоканальные и режимные технологии предварительной выборки данных, но также улучшает
и оптимизирует полосу пропускания доступа к данным и предварительную выборку.
Блоки векторных операций XuanTie C906 разработаны в соответствии со спецификациями векторного расширения RISC-V V0.7.1. Поддерживаются форматы данных, включая int8, int16, int32, int64, bf16, fp16, fp32 и fp64. Процессор RISC-V XuanTie C910 производится с использованием 12-нм технологического процесса в 16-ядерном варианте, работающем на частоте 2,5 ГГц.
Процессор Allwinner D1 предназначен для платформы декодирования мультимедиа (отладочная плата Lichee RV Dock Allwinner D1), основан на ядре Alibaba/
T-Head XuanTie C906, который представляет собой 64-разрядный RISC-V ISA, работает на частоте 1 ГГц, содержит 5-ступенчатый конвейер, кэш 64 Kбайт для команд
и данных, контроллер прерываний и 128-разрядную шину AXI 4.0. Поддерживает ОЗУ DDR3 с максимальным объемом 2 Гбит. Изготавливается по 22-нм технологическим проектным нормам.
Модуль LicheePi 4A (LM4A) работает с ОС Debian (портируется на ОС Deepin, Ubuntu, Openwrt). Модуль содержит процессор Xuantie C910 (RV64GCV) с четырьмя вычислительными ядрами (каждое ядро содержит 64 Кбайт кэша для команд и данных, 1 Мбайт общего кэша L2) с частотой 1,85 ГГц, нейропроцессорный модуль (NPU) с производительностью 4 TOPS@int8 AI и поддержкой фреймворков глубокого обучения TensorFlow, ONNX, Caffe, CNN, RNN, DNN, 16 Гит оперативной памяти LPDDR 4X и 128 Гбит памяти eMMC, графический процессор 3D GPU (полностью совместим с OpenCL 1.1/1.2/2.0; OpenGL ES 3.0/3.1/3.2; Vulkan 1.1/1.2; Android NN HAL) и дополнительный DSP-процессор XuanTie C906 для обработки звука.
Китайская компания Sipeed также выпускает компактный компьютер Lichee Console 4A, отличающийся более высокой производительностью и более широкими функциональными возможностями в сравнении с популярным одноплатным компьютером Raspberry Pi 4B.
Lichee Console 4A базируется на модуле LicheePi 4A с графическим процессором IMG B Series BXM-4-64. Компания Imagination Technologies сообщила, что российская компания «Ядро микропроцессоры», дочерняя компания Yadro, также приобрела лицензию на графический процессор BXM-4-64. Производительность GPU составляет 64 FLOPS за такт с точностью fp32 и 128 FLOPS за такт с точностью fp16.
Заключение
В китайских проектах ставится задача разработки процессорных ядер RISC-V ISA с использованием программных инструментов САПР с открытым исходным кодом. Китайские специалисты сравнивают свои разработки с новыми коммерческими процессорами от SiFive и Arm (Neoverse N3 и V3) и при этом раскрывают исходные коды описания архитектуры своих процессоров. В проектах на базе ядер RISC-V ISA наблюдается тенденция использования многозадачных многоступенчатых высокопроизводительных конвейеров OoO. Использование собственного расширения системы команд, хоть и возможно, но доступно лишь крупным разработчикам и сопряжено с большими трудностями. Применение Rocket Chip позволяет разработчикам создавать уникальные СнК, соответствующие их требованиям и без необходимости писать код с нуля.
ЛИТЕРАТУРА
https://mips.com/products/risc-v/
https://cnx-software.ru/2022/05/12/mips-predstavlyaet-mnogoproczessornye-ip-yadra-risc-v-evocore-p8700-i-i8500/?ysclid=ls7qn91n13121941829
https://www.sifive.com/cores/performance-p550
https://www.cnews.ru/news/top/2021-07-14_rosteh_potratit_desyatki
https://se7en.ws/prismatrivaemsya-k-odnoplatnikam-na-risc-v-obzor-modulya-sipeed-lichee-rv-na-proczessore-allwinner-d1/?ysclid=lto9mqaq2o233855142
https://github.com/chipsalliance/chisel
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-17.html
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-17.pdf
https://ieeexplore.ieee.org/document/8203780
https://www.mcu.by/risc-v-part-1/?ysclid=lsxpusaf41822205593
https://habr.com/ru/articles/352928/
https://docs.boom-core.org/en/latest/sections/intro-overview/boom.html
https://docs.boom-core.org/en/latest/sections/branch-prediction/backing-predictor.html
https://habr.com/ru/companies/selectel/articles/793564/
Фролов В.А., Галактионов В.А.,
Санжаров В.В. Исследование технологии RISC-V //
Труды ИСП РАН. 2020. Т. 32, вып. 2. С. 81–98.
DOI: 10.15514/ISPRAS-2020-32(2)-7
https://habr.com/ru/articles/337000/
Харрис С.Л. Харрис Д.
Цифровая схемотехника и архитектура компьютера: RISC-V / Пер. с англ. В.С. Яценкова, А.Ю. Романова;
под ред. А. Ю. Романова. М.: ДМК Пресс,
2021. 810 с.
Строгонов А.В., Бордюжа О.,
Строгонов А.И. Эффективный подход
в разработке управляющих автоматов
микропроцессорных ядер ПЛИС // ЭЛЕКТРОНИКА:
Наука, Технология, Бизнес. 2024. №1.
С. 78–86
https://www.allwinnertech.com/uploads/pdf/2021070515231402.pdf
https://github.com/chipsalliance/rocket-chip
А. В. Строгонов, д.т.н., О. Бордюжа, к.т.н., А. И. Строгонов
В России и Китае большой интерес проявляют к процессорной архитектуре RISC-V. В сентябре 2022 года в России была создана ассоциация независимых разработчиков ПО и вычислительной техники на основе RISC-V, которая получила название «Альянс RISC-V». В него вошли производитель серверов и систем хранения данных Yadro («КНС групп»), разработчик процессоров «Байкал Электроникс», разработчик ОС Astra Linux группа «Астра», разработчик технологической программно-аппаратной платформы Vostok и НИУ «Московский институт электронной техники». В статье рассмотрен опыт разработки процессорных ядер RISC-V коммерческого применения на примере процессоров компаний MIPS, SiFive, Alibaba Cloud Intelligence, а также академические проекты Rocket Chip Калифорнийского университета в Беркли и XiangShan Китайской академии наук.
RISC-V предоставляет собой открытую и гибкую систему машинных команд, позволяющую создавать процессоры для различных областей применения без лицензионных отчислений и ограничений на использование. RISC-V позволяет создавать полностью открытые процессоры и СнК на их основе. В настоящее время на базе спецификации RISC-V разными компаниями и сообществами под различными свободными лицензиями (BSD, MIT, Apache 2.0) разрабатываются и производятся несколько десятков вариантов процессорных ядер и СнК. Поддержка и развитие RISC-V осуществляется некоммерческой организацией RISC-V International. Сообщество насчитывает свыше 3 тыс. компаний-участников из более чем 70 стран мира, активно взаимодействующих и вносящих вклад в развитие экосистемы RISC-V.
RISC-V – это свободная и открытая система команд (Instruction Set Architecture, ISA) и процессорная архитектура, основанная на принципах сокращенного набора команд (Reduced Instruction Set Computer, RISC). Команды RISC-V имеют переменную длину. Набор команд является расширяемым. В любой реализации обязательно присутствует базовый набор команд, который может быть 32-, 64- или 128-битным. Базовые наборы команд называются соответственно RV32I, RV64I и RV128I (I означает Integer – целочисленная арифметика). Помимо базовых команд, конкретная реализация может предлагать команды, относящиеся к тем или иным расширениям. Например, расширение M содержит в себе команды целочисленного умножения и деления, расширение A – атомарные операции, а расширения F и D – операции над числами с плавающей точкой одинарной и двойной точности соответственно (float и double). Эти общие расширения (IMAFD)
собираются в расширение (G).
Если процессор реализует базовые 32-битные команды и поддерживает целочисленное умножение и деление, то он является RV32IM-процессором. Реализованные расширения дописываются в конце следом за обозначением базового набора команд. Обозначения RV32IMAFD и RV64IMAFD сокращают до RV32G и RV64G (G – от general-purpose, «общего назначения»).
Из операционных систем (ОС) с поддержкой RISC-V можно отметить GNU/Linux (начиная с выпусков Glibc 2.27, binutils 2.30, gcc 7.3.0 и ядра Linux 4.15) и FreeBSD (начиная с версии 13.0 второго уровня).
Коммерческие разработки компании MIPS
В настоящее время компания MIPS развивает направление MIPS ISA для проектов RISC-V. Благодаря большому сходству RISC-V ISA и предыдущих поколений MIPS ISA (используется более 35 лет) в новых продуктах eVocore был реализован десятилетний опыт разработки. RISC-V ISA также позволяет добавлять функции в виде пользовательских команд (UDI).
Компания MIPS сотрудничает с Siemens Digital Industries Software и использовала платформу Veloce proFPGA этой компании в новом мультипроцессоре eVocore P8700 RISC-V. Это один из самых производительных масштабируемых IP-процессоров RISC-V в отрасли, который уже используется в таких приложениях, как автономное вождение и усовершенствованные системы помощи водителю (ADAS, AV, IV), машинное обучение, 5G и беспроводные сети, центры обработки данных и хранилища, а также высокопроизводительные встраиваемые приложения.
Процессоры MIPS на платформе Veloce proFPGA от Siemens дают возможность клиентам проверять свои СнК перед реализацией в базис заказных БИС. Можно добавлять логику пользователя и различные ускорители, а также тестировать разработанную СнК для оптимизации функциональных возможностей. Кроме того, платформа Veloce proFPGA от Siemens предоставляет на ранних этапах разработки ПО и проектирования аппаратно-
программного кода полный доступ к аппаратной системе прототипирования, программным инструментам и средствам трассировки/отладки.
Процессор P8700 RISC-V представляет собой многопроцессорную систему с многоканальным (multi-issue) 16-ступенчатым конвейером с внеочередным исполнением команд (Out-of-Order processors, OoO) с когерентной многопоточной, многоядерной и многокластерной масштабируемостью. Клиенты компании MIPS также могут добавлять свои собственные ускорители к системам на базе P8700, сохраняя при этом когерентность. Благодаря возможности поддержки до 64 кластеров, восьми ядер на кластер (512 ядер) и двух потоков на ядро (1024 потока) P8700 представляет собой высокомасштабируемое решение для различных приложений.
Гибкость платформы Veloce proFPGA позволяет использовать прототип разрабатываемой СнК в условиях воздействия различных нагрузок со встроенными испытательными стендами и внутрисхемными подключениями к внешнему оборудованию, такому как генераторы Ethernet или шины PCI Express. Эта платформа позволяет P8700 поддерживать несколько конфигураций, начиная с одноядерного однопоточного процессора и заканчивая многоядерными и многокластерными конфигурациями. Масштабируемая и гибкая платформа СнК от Siemens позволяет сократить время разработки прототипов и обеспечить быструю проверку предложенной концепции СнК.
Еще одно процессорное ядро от MIPS, eVocore I8500 RISC-V, – это многоядерная и мультикласстерная система с упорядочным (в порядке их поступления, In-Order) выполнением команд и повышенной энергоэффективностью для использования в СнК-приложениях. Каждое ядро I8500 сочетает в себе многопоточность и эффективный 5-ступенчатый трехканальный конвейер (triple-issue).
Решения на базе I8500 могут масштабироваться до 64 кластеров, 512 ядер и 2048 потоков. Архитектура процессора поддерживает расширенное извлечение команд из памяти, семь отдельных исполнительных блоков (ALU, MDU, два блока FPU и два блока Memory) для выполнения различных операций: ALU (Arithmetic Logic Unit) – блок, который выполняет арифметические и логические операции; MDU (Memory Data Unit) – блок, который управляет доступом к памяти; FPU (Floating Point Unit) – блок, который выполняет операции с плавающей точкой; Memory – блок, который хранит данные. Такая архитектура позволяет процессору выполнять несколько операций одновременно, что обеспечивает высокую вычислительную производительность.
Процессоры компании SiFive
Мощным 64-разрядным ядром RISC-V, способным превзойти ядро Arm Cortex-A75 по производительности, является P550 от компании SiFive (основана разработчиками RISC-V ISA в Калифорнийском университете в Беркли) с показателем в тесте SPEC CPU2006 8,65 баллов/ГГц.
Основные характеристики процессора P550: система команд RISC-V RV64GBC ISA; 3-канальный 13-ступенчатый высокопроизводительный конвейер OoO; многоядерная когерентность (до четырех ядер); L1 объемом 32 Кбайт + 32 Кбайт и кэш L2 объемом 256 Кбайт на ядро; до 4 Мбайт кэш-памяти L3 в 4-ядерном кластере; тактовая частота 2,4 ГГц, технологический процесс 7 нм. В 2024 году должна выйти плата разработки (одноплатный компьютер) HiFive Pro P550 на 4-ядерном процессоре SiFive Performance P550 (предполагалось, что в соответствии с инициативой Pathfinder компании Intel будет выпущен процессор Horse Creek с архитектурой RISC-V с использованием технологического процесса Intel 4) со встроенными DDR5-5600 и PCIe Gen5 с поддержкой Linux.
Характеристики платы: 16 Гбайт памяти DDR5, два слота расширения PCIe (слот M.2 M-Key (PCIe Gen 3) для SSD-модуля NVME 2280 и слот M.2 E-Key (PCIe Gen 3) для модуля
Wi-Fi/Bluetooth, сеть 1/10GbE, USB 3, встроенная графика и интерфейс с поддержкой удаленного управления (OCP DC-SCM). Форм-фактор платы – промышленный стандарт microATX.
Недавно компания SiFive разработала новое, еще более мощное ядро P870 (64 RISC-V с обширной поддержкой виртуальной памяти, соответствующие требованиям спецификации RVA 23), которое сравнимо по производительности с Arm Cortex-A78 и в тесте SPECint2006 показало 18 баллов/ГГц (в 2024 году предполагается начало производства). Процессоры P870 – это когерентные, многоядерные, многокластерные процессоры с возможностью расширения до 16 ядер с высокопроизводительным конвейером ОоО третьего поколения. Процессор содержит частные кэши L2 и стриминговый предзагрузчик для улучшения производительности памяти, а также блок коррекции ошибок SECDED ECC с отчетом об ошибках. Высокая пропускная способность достигается за счет большего количества наборов команд за цикл, большего количества арифметико-логических устройств (ALU) и большего количества блоков ветвления.
Академический проект Rocket Chip
Rocket Chip – это разработанный в Калифорнийском университете в Беркли СнК-генератор с открытым исходным кодом, доступный по лицензии BSD на Github. Rocket Chip поддерживает интеграцию пользовательских ускорителей в виде расширений набора команд, сопроцессоров или полностью независимых новых ядер. Процессорные ядра, сгенерированные Rocket Chip, были реализованы на кристалле и показали способность загружать ОС Linux.
Rocket Chip (программа на языке Scala) использует язык аппаратного конструирования Chisel для создания библиотек сложных генераторов ядер, кэшей различных уровней, интерфейсов шин (внутрикристальных межсоединений для соединения и управления функциональными блоками в СнК-разработках) и др. Rocket Chip генерирует процессорные ядра общего назначения, использующие открытый RISC-V ISA, и обеспечивает генерацию стандартных конвейерных скалярных ядер как с очередным (Rocket in-order), так и c внеочередным исполнением команд (Berkeley Out-of-Order Machine, BOOM). BOOM является суперскалярным ядром RV64G. Созданию BOOM способствовали процессоры MIPS R10k
и Alpha 21264 с внеочередным исполнением, которые основаны на единой структуре физического регистрового файла.
На рис. 1 показаны блок-схема СнК, сгенерированная с помощью Rocket Chip, и набор программных инструментов, которые входят в состав Rocket Chip: основной генератор ядер (А), генератор кэша (B), генератор RoCC-совместимого сопроцессора (С), генератор ячеек (D), TileLink –
генератор связей между ячейками (E), периферийные устройства (F). На блок-схеме изображены две ячейки (Tile1 и Tile2) с процессорными ядрами Rocket (скалярный) и BOOM (суперскалярный), которые подключены
к 4-банковому кэшу второго уровня L2$ (специальный буфер быстрой памяти) с помощью интерфейса L1toL2.
Генерируемые процессорные ядра содержат L1-кэши инструкций и данных (L1I$ и L1D$), FPU (модуль операций с плавающей запятой) с интерфейсами MemIO и HostIO для связи с внешним миром, интерфейс RoCC, который связывается с подключенными ядрами ускорителей/сопроцессоров. Кэш L2$ через интерфейс L2toIO подключен к внешним системам ввода-вывода и памяти с помощью моста TileLink/AXI4.
Генераторы ядер Rocket и BOOM могут включать в себя: дополнительные модули FPU; настраиваемые конвейеры функциональных блоков и настраиваемые предсказатели ветвлений программы; cемейство генераторов кэша и TLB (буфер ассоциативной трансляции) с настраиваемыми размерами, ассоциативностью и политикой замены; пользовательский интерфейс сопроцессора RoCС; шаблон генератора ячеек, с учетом когерентности кэшей; генератор связей между ячейками (генератор сетей агентов когерентности кэша и связанных с ним контроллеров кэша). Опции конфигурации включают: количество ячеек, политику согласованности, наличие общего резервного хранилища и реализацию базовых физических сетей); периферийные устройства: генераторы шин, совместимых с AMBA (AXI, AHB-Lite и APB) и множество конверторов и контроллеров, включая процессор Z-scale.
Rocket Chip представляет собой генератор скалярных ядер RV64G c 5-ступенчатым конвейером (выборка, декодирование, выполнение, память, обратная запись), с модулем управления памятью MMU, который поддерживает виртуализацию памяти на основе страниц, неблокирующий кэш данных и интерфейс с предсказанием переходов.
Предсказание ветвлений программы настраивается и обеспечивается целевым буфером переходов (BTB), таблицей истории переходов (BHT) и стеком адресов возврата (RAS). Доступна поддержка некоторых расширений ISA (M, A, F, D). BOOM поддерживает спекулятивное выполнение ветвлений программы и предсказание переходов, используя BTB, RAS и параметризированный резервный предиктор (BPD).
Могут быть созданы предикторы, в том числе gshare (двухуровневая адаптивная схема предсказания ветвлений с использованием xor) и TAGE (TAgged Geometric –
тегированный геометрический предиктор с размером истории, разновидность которого используется в процессоре с архитектурой Intel Haswell). BOOM использует модуль загрузки/накопления операций с агрессивным планированием. На рис. 2 показана топология сгенерированного суперскалярного RV64G-процессора BROOM.
Ядро Z-scale (устаревшее ядро) представляет собой генератор 32-разрядных ядер, предназначенный для встраиваемых систем и приложений с микроконтроллерами. Генератор реализует ISA RV32IM и предназначен для взаимодействия с шинами AHB-Lite. В Z-scale используется 3-ступенчатый однопроцессорный конвейер с очередным исполнением (in-order).
Rocket Chip реализуется на Xilinx Ultrascale+ FPGA серии Zynq-7000 с использованием инструментов разработки и отладки встраиваемых микропроцессорных систем, таких как Parallella и ZedBoard. Реализация ядра RV32I возможна на ПЛИС серии Lattice ICE40. Код
написан на SystemVerilog и компилируется при помощи IceStorm.
Используемый в Rocket Chip язык аппаратного конструирования Chisel (Constructing Hardware in a Scala Embedded Language) – это язык описания аппаратуры
с открытым исходным кодом, надстроенный над Scala. Он используется для описания цифровых логических схем и схем на уровне регистровых передач, транслируется в Verilog-код. Chisel можно рассматривать как библиотеку для Scala.
Chisel добавляет примитивы аппаратного обеспечения к языку программирования Scala, предоставляя разработчикам возможности современного языка программирования для написания сложных параметризуемых генераторов схем, которые создают синтезируемый Verilog-код. Эта методология позволяет создавать повторно используемые компоненты и библиотеки, такие как очереди FIFO и арбитры в стандартной библиотеке Chisel, повышая уровень абстракции в дизайне при сохранении детального контроля.
Scala является преемником Java, он в большей степени объектно-ориентирован, чем Java, а также обладает возможностями функционального языка. Сочетание двух подходов делает программирование на Scala гибким, повышает эффективность кода и позволяет реализовывать нестандартные решения.
На основе RTL-описания на Chisel строится аппаратный граф, который, в свою очередь, превращается в промежуточное описание на языке firrtl, а затем встроенный интерпретатор генерирует из firrtl код Verilog или C++.
Китайские проекты в области разработки процессоров RISC-V
Интересен опыт китайских разработчиков процессорных ядер. Китайские процессоры Loongson I, II и III, разработанные Академией наук Китая, изначально базировались на развитии архитектур MIPS32 и MIPS64. В дальнейшем был разработан процессор Loongson 3А6000 (12 нм) с собственной архитектурой LoongArch. Loongson серии 6000 может содержать до 32 новых ядер LA664 и конкурировать с микроархитектурами AMD Zen3 и Intel Tiger Lake. Новая система команд в LoongArch поддерживает около 2000 инструкций и включает в себя все необходимые расширения, включая векторные инструкции, виртуализацию и двоичную трансляцию. Она может транслировать в понятные процессорам Loongson коды команды всех ведущих операционных систем и приложений. Так отечественная ОС Альт Платформа 11 перекомпилирована для использования с процессорами Loongson с архитектурой LoongArch, что в дальнейшем может обеспечить технологический суверенитет в компьютерной промышленности.
Loongson 3A6000 не обладает достаточной производительностью, но соответствует новейшим архитектурам AMD и Intel по такому параметру, как IPC (количество инструкций на такт). Процессор изготовлен по 12-нм техпроцессу (SMIC).
У процессора четыре ядра и восемь потоков, в разгоне до 2,5 ГГц при мощности TDP 50 Вт. Также у него есть кэш-память L2 объемом 256 Кбайт и кэш L3 объемом
16 Мбайт. Процессор совместим с памятью DDR4-3200.
По производительности 3A6000 уступает Intel Core i3-10100 (2020 год).
Процессоры серии 3A7000 будут изготавливаться по 7-нм техпроцессу, прирост быстродействия составит 20–30 % по сравнению с 3A6000. Ожидается, что процессоры появятся не ранее 2025 года.
Еще один китайский проект, XiangShan, представленный в 2020 году институтом компьютерных технологий Академии наук Китая, направлен на разработку высокопроизводительного процессора на базе архитектуры набора команд RISC-V (RV64GC) с использованием программных инструментов с открытым исходным кодом для
их проектирования. Процессор Xiangshan и разработанная к нему ОС Aolai демонстрируют стремление Китая укрепить экосистему RISC-V.
Наработки проекта Xiangshan открыты под пермиссивной лицензией (лицензии на программное обеспечение, которые практически не ограничивают свободу действий пользователей ПО и разработчиков, работающих с исходным кодом) MulanPSL 2.0.
В настоящее время разработаны три поколения процессоров (описание аппаратных блоков процессоров RISC-V представлено на языке Chisel).
Первое поколение, кодовое название YQH: 64-разрядная версия RISC-V с расширениями RV64GC, 11-ступенчатый конвейер, одноядерный, суперскалярный процессор, OoO; техпроцесс 28 нм кремниевой фабрики TSMC, 1,3 ГГц, год производства 2021. Процессоры демонстрируют производительность в тестах SPEC CPU2006: SPECint 2006: 7.03/1 ГГц
и SPECfp 2006: 7.00/1 ГГц, поддерживают память DDR4 с частотой 1600 МГц.
Второе поколение, кодовое название NH: 64-разрядная версия RISC-V с расширениями RV64GCBK, 2-ядерный, суперскалярный процессор, OoO; техпроцесс 14 нм кремниевой фабрики SMIC, 2 ГГц, год производства 2023. Демонстрируют производительность в тестах SPECint 2006 19.10/2 ГГц, SPECfp 2006 22.18/2 ГГц. NH по производительности может конкурировать с Arm Cortex-A76.
Третье поколение, кодовое название KMH: 64-разрядная версия RISC-V с расширениями RV64GCBKHV, 4-ядерный, суперскалярный процессор, OoO. Демонстрируют производительность в тестах SPECint 2006: 40.95/3 ГГц и SPECfp 2006: 43.96/3 ГГц, что сравнимо с производительностью новых ядер ARM Neoverse N2. Компания развивает концепцию Neoverse Compute Subsystem (CSS), представив два новых ядра, Neoverse N3 (Hermes) и V3 (Poseidon), рассчитанных на техпроцессы 2–5 нм. Они являются преемниками N2 (Perseus) и V2 (Demeter), упор в их архитектуре сделан главным образом на повышении производительности в задачах ИИ.
Микропроцессорные ядра проекта XiangShan были реализованы в базисе ПЛИС, и было проведено их моделирование с использованием Verilog-симулятора Verilator
с открытым исходным кодом.
Verilator имеет аналогичную или лучшую производительность по сравнению с Verilog-симуляторами с закрытым исходным кодом (например, Carbon Design Systems Carbonator, Modelsim/Questa, Cadence Incisive/NC-Verilog, Synopsys VCS, VTOC и Pragmatic CVer/CVC).
Симулятор Verilator позволяет преобразовать Verilog-модули в C++-классы, которые потом компилируются в обычную исполняемую программу, что позволяет достичь очень высокой производительности. Verilator может обрабатывать только синтезируемый Verilog-код с учетом архитектурного базиса ПЛИС.
Verilator не переводит Verilog HDL напрямую на C ++ или SystemC. Verilator компилирует код пользователя в более быструю оптимизированную модель с разделением на потоки, которая, в свою очередь, помещается в модуль C ++/SystemC. Результатом является скомпилированная модель Verilog, которая выполняется даже в одиночном потоке более чем в 10 раз быстрее, чем standalone SystemC, а в одиночном потоке примерно в 100 раз быстрее, чем интерпретируемые симуляторы Verilog, такие как Icarus Verilog.
Дополнительное 2–10-кратное ускорение может быть получено за счет многопоточности (что дает в общей сложности 200–1000-кратное ускорение по сравнению с интерпретируемыми симуляторами).
Verilator – инструмент, который компилирует исходные коды Verilog и SystemVerilog в высокооптимизированный (и, возможно, многопоточный) циклически точный код C++ или SystemC. Преобразованные модули можно создавать и использовать в тестовом стенде C++ или SystemC для проверки и/или моделирования.
В качестве эталонной операционной системы, используемой при тестировании реализации на базе ПЛИС, применяется Debian GNU/Linux.
Компания Alibaba Cloud Intelligence (китайский облачный провайдер) открыла исходные коды, а также соответствующее программное обеспечение и инструменты четырех процессорных ядер RISC-V: XuanTie E902, E906, C906 и C910. Хотя RISC-V является открытым стандартом и существует значительная доля ядер RISC-V с открытым исходным кодом, многие коммерческие ядра RISC-V имеют закрытый исходный код.
На базе этих ядер можно самостоятельно разработать свой процессор (СнК) и начать массовое производство. Открытый доступ к документации ядра процессора облегчает разработку программного обеспечения и портирование необходимых драйверов.
Схемы, описания аппаратных блоков на языке Verilog, симулятор и сопутствующая проектная документация XuanTie опубликованы на GitHub под лицензией Apache 2.0. Отдельно опубликованы адаптированные для работы с процессорами XuanTie версии компиляторов GCC и LLVM, библиотека Glibc, инструменты Binutils, загрузчик U-Boot, ядро Linux, middleware с интерфейсом OpenSBI (Supervisor Binary Interface), платформа для создания встраиваемых систем на базе Linux Yocto Project. Ядра OpenE902, OpenE906, OpenC906 и OpenC910 доступны на GitHub под лицензией Apache 2.0.
XuanTie C906 – это 64-разрядный высокопроизводительный процессор на базе архитектуры RISC-V. Cпроектирован с использованием 5-/8-ступенчатого целочисленного конвейера. Он также оснащен 128-разрядными блоками векторных операций, обеспечивающими
повышенную производительность. XuanTie C906 не только использует многоканальные и режимные технологии предварительной выборки данных, но также улучшает
и оптимизирует полосу пропускания доступа к данным и предварительную выборку.
Блоки векторных операций XuanTie C906 разработаны в соответствии со спецификациями векторного расширения RISC-V V0.7.1. Поддерживаются форматы данных, включая int8, int16, int32, int64, bf16, fp16, fp32 и fp64. Процессор RISC-V XuanTie C910 производится с использованием 12-нм технологического процесса в 16-ядерном варианте, работающем на частоте 2,5 ГГц.
Процессор Allwinner D1 предназначен для платформы декодирования мультимедиа (отладочная плата Lichee RV Dock Allwinner D1), основан на ядре Alibaba/
T-Head XuanTie C906, который представляет собой 64-разрядный RISC-V ISA, работает на частоте 1 ГГц, содержит 5-ступенчатый конвейер, кэш 64 Kбайт для команд
и данных, контроллер прерываний и 128-разрядную шину AXI 4.0. Поддерживает ОЗУ DDR3 с максимальным объемом 2 Гбит. Изготавливается по 22-нм технологическим проектным нормам.
Модуль LicheePi 4A (LM4A) работает с ОС Debian (портируется на ОС Deepin, Ubuntu, Openwrt). Модуль содержит процессор Xuantie C910 (RV64GCV) с четырьмя вычислительными ядрами (каждое ядро содержит 64 Кбайт кэша для команд и данных, 1 Мбайт общего кэша L2) с частотой 1,85 ГГц, нейропроцессорный модуль (NPU) с производительностью 4 TOPS@int8 AI и поддержкой фреймворков глубокого обучения TensorFlow, ONNX, Caffe, CNN, RNN, DNN, 16 Гит оперативной памяти LPDDR 4X и 128 Гбит памяти eMMC, графический процессор 3D GPU (полностью совместим с OpenCL 1.1/1.2/2.0; OpenGL ES 3.0/3.1/3.2; Vulkan 1.1/1.2; Android NN HAL) и дополнительный DSP-процессор XuanTie C906 для обработки звука.
Китайская компания Sipeed также выпускает компактный компьютер Lichee Console 4A, отличающийся более высокой производительностью и более широкими функциональными возможностями в сравнении с популярным одноплатным компьютером Raspberry Pi 4B.
Lichee Console 4A базируется на модуле LicheePi 4A с графическим процессором IMG B Series BXM-4-64. Компания Imagination Technologies сообщила, что российская компания «Ядро микропроцессоры», дочерняя компания Yadro, также приобрела лицензию на графический процессор BXM-4-64. Производительность GPU составляет 64 FLOPS за такт с точностью fp32 и 128 FLOPS за такт с точностью fp16.
Заключение
В китайских проектах ставится задача разработки процессорных ядер RISC-V ISA с использованием программных инструментов САПР с открытым исходным кодом. Китайские специалисты сравнивают свои разработки с новыми коммерческими процессорами от SiFive и Arm (Neoverse N3 и V3) и при этом раскрывают исходные коды описания архитектуры своих процессоров. В проектах на базе ядер RISC-V ISA наблюдается тенденция использования многозадачных многоступенчатых высокопроизводительных конвейеров OoO. Использование собственного расширения системы команд, хоть и возможно, но доступно лишь крупным разработчикам и сопряжено с большими трудностями. Применение Rocket Chip позволяет разработчикам создавать уникальные СнК, соответствующие их требованиям и без необходимости писать код с нуля.
ЛИТЕРАТУРА
https://mips.com/products/risc-v/
https://cnx-software.ru/2022/05/12/mips-predstavlyaet-mnogoproczessornye-ip-yadra-risc-v-evocore-p8700-i-i8500/?ysclid=ls7qn91n13121941829
https://www.sifive.com/cores/performance-p550
https://www.cnews.ru/news/top/2021-07-14_rosteh_potratit_desyatki
https://se7en.ws/prismatrivaemsya-k-odnoplatnikam-na-risc-v-obzor-modulya-sipeed-lichee-rv-na-proczessore-allwinner-d1/?ysclid=lto9mqaq2o233855142
https://github.com/chipsalliance/chisel
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-17.html
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-17.pdf
https://ieeexplore.ieee.org/document/8203780
https://www.mcu.by/risc-v-part-1/?ysclid=lsxpusaf41822205593
https://habr.com/ru/articles/352928/
https://docs.boom-core.org/en/latest/sections/intro-overview/boom.html
https://docs.boom-core.org/en/latest/sections/branch-prediction/backing-predictor.html
https://habr.com/ru/companies/selectel/articles/793564/
Фролов В.А., Галактионов В.А.,
Санжаров В.В. Исследование технологии RISC-V //
Труды ИСП РАН. 2020. Т. 32, вып. 2. С. 81–98.
DOI: 10.15514/ISPRAS-2020-32(2)-7
https://habr.com/ru/articles/337000/
Харрис С.Л. Харрис Д.
Цифровая схемотехника и архитектура компьютера: RISC-V / Пер. с англ. В.С. Яценкова, А.Ю. Романова;
под ред. А. Ю. Романова. М.: ДМК Пресс,
2021. 810 с.
Строгонов А.В., Бордюжа О.,
Строгонов А.И. Эффективный подход
в разработке управляющих автоматов
микропроцессорных ядер ПЛИС // ЭЛЕКТРОНИКА:
Наука, Технология, Бизнес. 2024. №1.
С. 78–86
https://www.allwinnertech.com/uploads/pdf/2021070515231402.pdf
https://github.com/chipsalliance/rocket-chip
Отзывы читателей