RISC-V
RISC-V (читается как «риск пять») — открытая к применению и свободно расширяемая система команд и процессорная архитектура на основе концепции RISC[1] для управления и проектирования ядер любых микропроцессоров, включая микроконтроллеры.
Как проекты, так и утверждённые стандарты архитектурных описаний RISC-V свободно доступны и бесплатны для любого использования, включая коммерческие реализации непосредственно в кремнии или для конфигурирования ПЛИС. RISC-V имеет зарезервированные в спецификации биты для кодирования расширений состава команд.
Появилась как результат исследовательского проекта при непосредственном участии Дэвида Паттерсона[2][3] в Калифорнийском университете Беркли в США в 2010 году. После международного опубликования, к развитию RISC-V присоединилось множество компаний и отдельных добровольцев, не связанными с университетом. В отличие от других академических проектов, которые обычно сосредоточены на простоте и образовательных целях, набор команд RISC-V изначально проектируется для широкого круга компьютерных применений.
Для стандартизации, продвижения и устойчивого международного развития RISC-V вне США, в 2015 году создан фонд RISC-V[4] и ассоциация со штаб-квартирой в Цюрихе[5] в Швейцарии. С 2018 года RISC-V Foundation работает в партнёрстве с The Linux Foundation[6]. В руководство и технические комитеты входят две российские компании разработчики процессорных ядер — Syntacore[7] и CloudBEAR. В феврале 2022 года компания Intel объявила[8] об инвестировании в развитие RISC-V одного миллиарда долларов и вошла в состав руководства RISC-V. В сентябре 2022 года в России образован Альянс RISC-V[9][10]. По состоянию на декабрь 2022 года 13 из 25 мест в совете директоров RISC-V занимают китайские компании и организации, ведущую роль из которых занимает китайская академия наук.
Что важно знать
| RISC-V | |
|---|---|
| Разработчик |
Ассоциация RISC-V в Швейцарии, инициатор разработки Калифорнийский университет в Беркли |
| Разрядность | 32-бит, 64-бит, 128-бит |
| Представлена | 2010 |
| Версии | Unprivileged верс.20191213, privileged верс. 20190608 |
| Архитектура | RISC |
| Тип | Регистр-регистр |
| Кодирование СК | Фиксированный размер командного слова 32 бита (16 бит в расширении C) |
| Реализация переходов | Cравнение и переход |
| Порядок байтов | Little-endian |
| Размер страницы | 4 KiB |
| Расширения | M, A, F, D, Q, C, E, V и другие |
| Открытая? | Да |
| Регистры | |
| Общего назначения |
16 (только для RV32E и адресации в расширении C), 32 (особый регистр x0 — всегда равен нулю) |
| Вещественные | 32 (расширения F, D, Q) |
| SIMD |
32 дополнительных векторных регистра длиной от 128 до 1024 бит каждый (расширение V), 32 основных регистра (расширение P) |
| Предикатные |
нет в базовых архитектурах, есть для расширений, например в F, D, Q |
| Всего | от 32 до 96 |
Базовая спецификация «RV32I»
Базовая спецификация «RV32I» (RV — RISC-V, 32-разрядная, I означает Integer — целочисленную арифметику и целочисленные регистры) включает 39 инструкций. Используется 6 типов кодирования инструкций (форматов).
Базовые расширения:[11]
- M — целочисленное умножение/деление
- A — атомарные операции с памятью
- F и D — вычисления с плавающей точкой с дополнительным набором регистров (одинарной Float и двойной Double точности)
- C — сжатый формат команд (подмножество RV32I), для удвоения плотности упаковки в машинном слове наиболее востребованных стандартных инструкций
- E — инструкции для встраиваемых систем и только 16 регистров (применяется, например, для процессоров в IoT)
Система команд
В архитектуре RISC-V имеется обязательное для реализации небольшое подмножество команд (набор инструкций I — Integer) и несколько стандартных опциональных расширений.
В базовый набор входят инструкции условной и безусловной передачи управления/ветвления, минимальный набор арифметических/битовых операций на регистрах, операций с памятью (load/store), а также небольшое число служебных инструкций.
Операции ветвления не используют каких-либо общих флагов, как результатов ранее выполненных операций сравнения, а непосредственно сравнивают свои регистровые операнды. Базис операций сравнения минимален, а для поддержки комплементарных операций операнды просто меняются местами.
Базовое подмножество команд использует следующий набор регистров: специальный регистр x0 (zero), 31 целочисленный регистр общего назначения (x1 — x31), регистр счётчика команд (PC, используется только косвенно), а также множество CSR (Control and Status Registers, может быть адресовано до 4096 CSR).
Для встраиваемых применений может использоваться вариант архитектуры RV32E (Embedded) с сокращённым набором регистров общего назначения (первые 16). Уменьшение количества регистров позволяет не только экономить аппаратные ресурсы, но и сократить затраты памяти и времени на сохранение/восстановление регистров при переключениях контекста.
При одинаковой кодировке инструкций в RISC-V предусмотрены реализации архитектур с 32, 64 и 128-битными регистрами общего назначения и операциями (RV32I, RV64I и RV128I соответственно).
Разрядность регистровых операций всегда соответствует размеру регистра, а одни и те же значения в регистрах могут трактоваться целыми числами как со знаком, так и без знака.
Нет операций над частями регистров, нет каких-либо выделенных «регистровых пар».
Операции не сохраняют где-либо биты переноса или переполнения, что приближено к модели операций в языке программирования Си. Также аппаратно не генерируются исключения по переполнению и даже по делению на 0. Все необходимые проверки операндов и результатов операций должны производиться программно.
Целочисленная арифметика расширенной точности (большей, чем разрядность регистра) должна явно использовать операции вычисления старших битов результата. Например, для получения старших битов произведения регистра на регистр имеются специальные инструкции.
Размер операнда может отличаться от размера регистра только в операциях с памятью. Транзакции к памяти осуществляются блоками, размер в байтах которых должен быть целой неотрицательной степенью 2, от одного байта до размера регистра включительно. Операнд в памяти должен иметь «естественное выравнивание» (адрес кратен размеру операнда).
Архитектура использует только модель little-endian — первый байт операнда в памяти соответствует младшим битам значений регистрового операнда.
Для пары инструкций сохранения/загрузки регистра операнд в памяти определяется размером регистра выбранной архитектуры, а не кодировкой инструкции (код инструкции один и тот же для RV32I, RV64I и RV128I, но размер операндов 4, 8 и 16 байт соответственно), что соответствует размеру указателя, типам языка программирования C size_t или разности указателей.
Для всех допустимых размеров операндов в памяти, меньших, чем размер регистра, имеются отдельные инструкции загрузки/сохранения младших битов регистра, в том числе для загрузки из памяти в регистр есть парные варианты инструкций, которые позволяют трактовать загружаемое значение как со знаком (старшим знаковым битом значения из памяти заполняются старшие биты регистра) или без знака (старшие биты регистра устанавливаются в 0).
Инструкции базового набора имеют длину 32 бита с выравниванием на границу 32-битного слова, но в общем формате предусмотрены инструкции различной длины (стандартно — от 16 до 192 бит с шагом в 16 бит) с выравниванием на границу 16-битного слова. Полная длина инструкции декодируется унифицированным способом из её первого 16-битного слова.
Для наиболее часто используемых инструкций стандартизовано применение их аналогов в более компактной 16-битной кодировке (C — Compressed extension).
Операции умножения, деления и вычисления остатка не входят в минимальный набор инструкций, а выделены в отдельное расширение (M — Multiply extension). Имеется ряд доводов в пользу разделения и данного набора на два отдельных (умножение и деление).
Стандартизован отдельный набор атомарных операций (A — Atomic extension).
Поскольку кодировка базового набора инструкций не зависит от разрядности архитектуры, то один и тот же код потенциально может запускаться на различных RISC-V архитектурах, определять разрядность и другие параметры текущей архитектуры, наличие расширений системы инструкций, а потом автоконфигурироваться для целевой среды выполнения.
Спецификацией RISC-V предусмотрено несколько областей в пространстве кодировок инструкций для пользовательских «X-расширений» архитектуры, которые поддерживаются на уровне ассемблера, как группы инструкций custom0 и custom1.
| Сокращение | Наименование | Версия | Статус |
|---|---|---|---|
| Базовые наборы | |||
| RVWMO | Базовая модель согласованности памяти | 2.0 | Ratified |
| RV32I | Базовый набор с целочисленными операциями, 32-битный | 2.1 | Ratified |
| RV64I | Базовый набор с целочисленными операциями, 64-битный | 2.1 | Ratified |
| RV32E | Базовый набор с целочисленными операциями для встраиваемых систем, 32-битный, 16 регистров | 1.9 | Draft |
| RV128I | Базовый набор с целочисленными операциями, 128-битный | 1.7 | Draft |
| Часть 1 Стандартные непривилигерованные наборы команд | |||
| M | Целочисленное умножение и деление (Integer Multiplication and Division) | 2.0 | Ratified |
| A | Атомарные операции (Atomic Instructions) | 2.1 | Ratified |
| F | Арифметические операции с плавающей запятой над числами одинарной точности (Single-Precision Floating-Point) | 2.2 | Ratified |
| D | Арифметические операции с плавающей запятой над числами двойной точности (Double-Precision Floating-Point) | 2.2 | Ratified |
| Q | Арифметические операции с плавающей запятой над числами четверной точности | 2.2 | Ratified |
| C | Сокращённые имена для команд (Compressed Instructions) | 2.2 | Ratified |
| Counters | Инструкции для счётчиков производительности и таймеров — наборы Zicntr и Zihpm | 2.0 | Draft |
| L | Арифметические операции над десятичными числами с плавающей запятой (Decimal Floating-Point) | 0.0 | Open |
| B | Битовые операции (Bit Manipulation) | 0.36 | Open |
| J | Двоичная трансляция и поддержка динамической компиляции (Dynamically Translated Languages) | 0.0 | Open |
| T | Транзакционная память (Transactional Memory) | 0.0 | Open |
| P | Короткие SIMD-операции (Packed-SIMD Instructions) | 0.1 | Open |
| V | Векторные расширения (Vector Operations) | 1.0 | Frozen |
| Zicsr | Инструкции для работы с контрольными и статусными регистрами (Control and Status Register (CSR) Instructions) | 2.0 | Ratified |
| Zifencei | Инструкции синхронизации пототоков команд и данных (Instruction-Fetch Fence) | 2.0 | Ratified |
| Zihintpause | Pause Hint | 2.0 | Ratified |
| Zihintntl | Non-Temporal Locality Hints | 0.2 | Draft |
| Zam | Расширение для смещённых атомарных операций (Extension for Misaligned Atomics) | 0.1 | Draft |
| Zfh | Extensions for Half-Precision Floating-Point | 1.0 | Ratified |
| Zfhmin | Extensions for Half-Precision Floating-Point | 1.0 | Ratified |
| Zfinx | Standard Extensions for Floating-Point in Integer Registers | 1.0 | Ratified |
| Zdinx | Standard Extensions for Floating-Point in Integer Registers | 1.0 | Ratified |
| Zhinx | Standard Extensions for Floating-Point in Integer Registers | 1.0 | Ratified |
| Zhinxmin | Standard Extensions for Floating-Point in Integer Registers | 1.0 | Ratified |
| Ztso | Расширение для модели согласованности памяти RVTSO (Extension for Total Store Ordering) | 0.1 | Frozen |
| G | = IMAFD Zicsr Zifencei Обобщённое/сокращёное обозначение для набора расширений | н/д | н/д |
| Часть 2 Стандартные наборы команд для привилегированных режимов | |||
| Machine ISA | Инструкции аппаратного уровня | 1.12 | Ratified |
| Supervisor ISA | Инструкции уровня супервизора | 1.12 | Ratified |
| Svnapot Extension | (Extension for NAPOT Translation Contiguity) | 1.0 | Ratified |
| Svpbmt Extension | (Extension for Page-Based Memory Types) | 1.0 | Ratified |
| Svinval Extension | (Extension for Fine-Grained Address-Translation Cache Invalidation) | 1.0 | Ratified |
| Hypervisor ISA | Инструкции уровня гипервизора | 1.0 | Ratified |
В 32-битных микроконтроллерах и для других встраиваемых применений используется набор RV32EC. В 64-битных процессорах может быть набор групп RV64GC, то же самое в полной записи — RV64IMAFDC.
Форматы кодирования команд для RV32I и RV64I одинаковы — 32-битные машинные команды (признаки — младшие биты всегда «11» и 2-4 биты ≠̸ «111»)
| Тип | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Регистр/регистр | funct7 | rs2 | rs1 | funct3 | rd | код операции | 1 | 1 | ||||||||||||||||||||||||
| С операндом | ± | imm[10:0] | rs1 | funct3 | rd | код операции | 1 | 1 | ||||||||||||||||||||||||
| С длинным операндом | ± | imm[30:12] | rd | код операции | 1 | 1 | ||||||||||||||||||||||||||
| Сохранение | ± | imm[10:5] | rs2 | rs1 | funct3 | imm[4:0] | код операции | 1 | 1 | |||||||||||||||||||||||
| Ветвление | ± | imm[10:5] | rs2 | rs1 | funct3 | imm[4:1] | [11] | код операции | 1 | 1 | ||||||||||||||||||||||
| Переход | ± | imm[10:1] | [11] | imm[19:12] | rd | код операции | 1 | 1 | ||||||||||||||||||||||||
- rs1 — номер регистра в котором находится первый операнд
- rs2 — номер регистра в котором находится второй операнд
- rd — номер регистра в который будет записан результат
В базовых архитектурах RV32I и RV64I, по стандарту RISC-V включает 32 регистра (x0-x31) для целочисленных и адресных операций. Исключение сделано для RV32E — включающем только 16 регистров, используется редко, для простых встраиваемых применений. Размер регистров в RV32I (и RV32E) — 32 бита, в RV64I — 64 бита.
Для операций над числами с плавающей запятой (расширения F одинарной, D двойной и Q четверной точности), добавляются 32 дополнительных регистра (f0-f31). Размер регистров соответвует максимальному поддерживаему расширению — 32 (F), 64 (D) или 128 (Q) бит. Также добавляется 32-битный регистр флагов/состояний fcsr (floating-point control and status register).
В случает реализации в вычислительном ядре векторных команд (расширение V), добавляется набор из 32-х векторных регистра (v0-v31), размер которых указан производителем процессора в настройках CSR vlenb[12]. Типовое размер в существующих реализациях — 128 или 256 бит.
| Имя регистра
в RISC-V |
Имя
в EABI |
Имя
в psABI |
Описание
в psABI |
Кто сохраняет
в psABI |
|---|---|---|---|---|
| 32 целочисленных регистра | ||||
| x0 | zero | zero | Всегда ноль | |
| x1 | ra | ra | Адрес возврата (return address) | Вызывающий |
| x2 | sp | sp | Указатель стека (stack pointer) | Вызываемый |
| x3 | gp | gp | Глобальный указатель (global pointer) | |
| x4 | tp | tp | Потоковый указатель (thread pointer) | |
| x5 | t0 | t0 | Temporary / альтернативный адрес возврата | Вызывающий |
| x6 | s3 | t1 | Temporary | Вызывающий |
| x7 | s4 | t2 | Temporary | Вызывающий |
| x8 | s0/fp | s0/fp | Saved register / frame pointer | Вызываемый |
| x9 | s1 | s1 | Saved register | Вызываемый |
| x10 | a0 | a0 | Аргумент (argument) / возвращаемое значение | Вызывающий |
| x11 | a1 | a1 | Аргумент (argument) / возвращаемое значение | Вызывающий |
| x12 | a2 | a2 | Аргумент (argument) | Вызывающий |
| x13 | a3 | a3 | Аргумент (argument) | Вызывающий |
| x14 | s2 | a4 | Аргумент (argument) | Вызывающий |
| x15 | t1 | a5 | Аргумент (argument) | Вызывающий |
| x16 | s5 | a6 | Аргумент (argument) | Вызывающий |
| x17 | s6 | a7 | Аргумент (argument) | Вызывающий |
| x18-27 | s7-16 | s2-11 | Saved register | Вызываемый |
| x28-31 | s17-31 | t3-6 | Temporary | Вызывающий |
| 32 дополнительных регистра с плавающей точкой | ||||
| f0-7 | ft0-7 | Floating-point temporaries | Вызывающий | |
| f8-9 | fs0-1 | Floating-point saved registers | Вызываемый | |
| f10-11 | fa0-1 | Floating-point arguments/return values | Вызывающий | |
| f12-17 | fa2-7 | Floating-point arguments | Вызывающий | |
| f18-27 | fs2-11 | Floating-point saved registers | Вызываемый | |
| f28-31 | ft8-11 | Floating-point temporaries | Вызывающий | |
Реализации
В рамках проекта создано и опубликовано под свободной лицензией шесть дизайнов микропроцессоров с архитектурой RISC-V: генератор 64-разрядных Rocket (7 октября 2014[13][14]) и пять упрощённых учебных ядер «Sodor» с различными микроархитектурами.
Также опубликовано несколько симуляторов (включая qemu и ANGEL — JavaScript-симулятор, работающий в браузере), компиляторов (LLVM, GCC), вариант ядра Linux для работы на RISC-V и компилятор дизайнов Chisel, который позволяет получать Verilog-код. Также опубликованы верификационные тесты[15].
Некоммерческая организация lowRISC планирует создание системы на кристалле на базе 64-битного ядра Rocket RISC-V с последующим массовым производством чипов[16][17].
На конференции RISC-V Workshop 2017 стало известно, что компания Esperanto Technologies разрабатывает 64-битный высокопроизводительный процессор общего назначения на системе команд RISC-V с гетерогенной архитектурой с высокой степенью параллелизма (напоминающий по строению процессор Cell), который в максимальной конфигурации будет содержать 16 ядер «ET-Maxion» (представляют собой конвейеры с неупорядоченным выполнением команд и работающие с данными с плавающей запятой) и 4096 ядер «ET-Minion» (конвейеры с последовательным выполнением команд и блоком с векторными вычислениями в каждом ядре)[18].
Компания Western Digital заявила, что в партнёрстве с компанией Esperanto, она повысит текущий статус процессорной архитектуры RISC-V с уровня микроконтроллеров до уровня высокопроизводительных решений и создаст вычислительную архитектуру нового поколения для обработки «больших данных»[19], а также экосистему быстрого доступа к данным — речь идёт о создании специализированных RISC-V-ядер для построения архитектуры «процессор в памяти» (processor-in-memory)[20].
Ряд компаний предлагают готовые блоки IP-ядер на базе архитектуры RISC-V, среди них:
- ECHX1 — компания Western Digital (США),
- Rocket — Калифорнийский университет в Беркли и компания SiFive (США),
- ORCA — компания Vectorblox (Канада),
- PULPino — Высшая техническая школа Цюриха (Швейцария) и Болонский университет (Италия),
- Hummingbird E200 — компания Nuclei System Technology (Китай),
- AndeStar V5 — компания Andes Technology (Тайвань)[21]),
- Shakti — Индийский технологический институт в Мадрасе (Индия),
- BM-310, BI-350, BI-651, BI-671 — компания Клаудбеар (Россия),
- Семейство SCR компании Синтакор (Россия)[22].
Серийные процессоры и микроконтроллеры на базе архитектуры RISC-V в формате системы на кристалле.
Микропроцессоры:
- 2018 — SiFive: Freedom U540 (64 бита, 4+1 ядер, 1,5 ГГц, 28 нм)[23][24][25][26]
- 2019 — Alibaba: XuanTie 910 (64 бита, 16 ядер, нейроускоритель, 2,5 ГГц, 12 нм)[27][28][29][30]
- 2020 — SiFive: Freedom U740 (64 бита, 4+1 ядер, PCIe 3, DDR4 ECC, Ethernet 1G, QSPI, 1,5 ГГц)[1] Архивная копия от 26 ноября 2020 на Wayback Machine[2] Архивная копия от 29 октября 2020 на Wayback Machine
Микроконтроллеры, выпущенные в 2017—2019 годах:
- Western Digital: SweRV Core (32 бита, 2 ядра, 1,8 ГГц, 28 нм)[31][32]
- SiFive: FE310 (32 бита, 1 ядро, 870 МГц — 28 нм, 370 МГц — 55 нм)[23][24]
- Kendryte: K210 (64 бита, 2 ядра + нейроускоритель, 600 МГц, 28 нм, 500 мВт)[33][34][35]
- GreenWaves: GAP8 (32 бита, 8+1 ядер + нейроускоритель, 250 МГц, 55 нм, 100 мВт)[36]
- NXP: RV32M1 (32 бита, 2 гибридных ядра ARM-M4F/RISC-V + ARM-M0+/RISC-V, 48-72 МГц)[37]
- WCH: CH572 (60 МГц, корпус QFN28)[38] контроллер BLE + Zigbee + USB + Ethernet + Touchkey
- HUAMI: MHS001 Huangshan № 1 (4 ядра, нейроускоритель, 55 нм, 240 МГц)[39] энергоэффективный процессор для носимых устройств и IoT
- GigaDevice: GD32VF103 (1 ядро, 32 бита, 108 МГц, ОЗУ до 32 кБ, ПЗУ до 128 кБ)[40][41] микроконтроллер (не путать с семейством GD32F103).
- FADU: Annapurna FC3081/FC3082 (64 бита, многоядерный, 7 нм, 1,7 Вт)[42][43][44] контроллер для NVMe SSD
- BitMain: Sophon Edge TPU BM1880 (64 бита, 1 ядро RV64GC 1 ГГц + 2 ядра ARM A53 1,5 ГГц, 2,5 Вт) нейроускоритель 1 TOPS на INT8 для IoT и краевых вычислений[45][46]
- Текон: Дружба (32 бита, 1 ядро, 250 МГц, 28 нм, 0,5 Вт)[47][48]
Микроконтроллеры, выпущенные в 2020 году:
- ONiO: ONiO.zero (16/32 бита, 1 кБ ПЗУ, 2 кБ ОЗУ, 8/16/32 кБ ППЗУ, 1-24 МГц, 0,36-1,44 Вт, встроенный радиоэлектро генератор на 800/900/1800/1900/2400 МГц) BLE, 802.15.4 UWB[49][50]
- WCH: CH32V103 (32 бита, 10/20КБ ОЗУ, 32/64 КБ ППЗУ, до 80 МГц, корпуса LQFP48, QFN48 или LQFP64)[51] универсальный контроллер с USB 2.0, SPI, I2C, GPIO, USART, TouchKey, RTC, TIM, ADC
- Миландр: К1986ВК025 (32-битное ядро BМ-310S CloudBEAR, ОЗУ 112 Кбайт, ППЗУ 256+8 Кбайт, ПЗУ 16 Кбайт, 60 МГц, 90 нм фабрика TSMC, 7 каналов 24-битных метрологических АЦП, сопроцессоров для шифров «Кузнечик», «Магма» и AES, корпус QFN88 10 х 10 мм)
- Espressif: ESP32-C3 (32-битное ядро RV32IMC, 400 Кбайт SRAM, 384 Кбайт ПЗУ, 160 МГц, Wi-Fi, Bluetooth LE 5.0, по контактам совместим с ESP8266)[52]
- Bouffalo Lab: BL602 и BL604 (32-битный, динамическая частота от 1 МГц до 192 МГц, 276 КБ SRAM, 128 КБ ПЗУ, Wi-Fi, Bluetooth LE)[53]
- Cmsemicon: ANT32RV56xx (ядро RV32EC, 48 МГц, 32+8 Кбайт SRAM, 64 Кбайт)[54]
Микроконтроллеры, выпущенные в 2021 году:
- Микрон (Россия): MIK32 (32-битное RV32IMC ядро SCR1 Syntacore, 1-32 МГц, фабрика Микрон, ОЗУ 16 КБ, ППЗУ 8 КБ, 64 входа/выхода, АЦП 12 бит 8 каналов до 1 МГц;, ЦАП 12 бит 4 канала до 1 МГц, криптография ГОСТ Р 34.12-2015 «Магма», «Кузнечик» и AES 128)[55][56]
Микроконтроллеры, выпущенные в 2024 году:
- АО «НИИЭТ» (Россия): К1921ВГ015 (32-битное RV32IMFCN ядро BM-310S6, группа «Элемент», до 50 МГц, 256 Кбайт+ 64 Кбайт, FLASH 1 Мбайт, три 16-разрядных порта ввода-вывода [корпус LQFP100], АЦП 16 бит 8 каналов до 64кГц / АЦП 12 бит 8 каналов до 6.25 МГц, RTC, 1 таймер 32 разрядный и 3 таймера 16 разрядных, 32 канальный DMA, I2C, SPI, JTAG, 5 приёмопередатчиков UART, CAN 2.0B, USB 2.0 Fullspeed, блок криптографии CRC32, HASH и AES 128/256, «Кузнечик», «Магма», ID 128 бит, 3 датчика вскрытия), — 4.02.2025 года внесён в реестр российской промышленной продукции (ПП РФ № 719) и Единый реестр радиоэлектронной продукции (ПП РФ № 878) Минпромторга России.[57][58][59]
См. также
- ARM — семейство лицензируемых 32-битных и 64-битных микропроцессорных ядер разработки компании ARM Limited
- DeepComputing — разработчик аппаратного обеспечения на базе архитектуры RISC-V.
- OpenPOWER — коллаборация вокруг архитектуры IBM Power, основанная в 2013 году IBM, Google, Mellanox, NVIDIA
- OpenSPARC — свободная (GPL) реализация архитектуры SPARC V9 от 2005 года
- OpenRISC — свободная архитектура 2000 года с GPL-реализацией or1k
- LEON — свободные реализации (GPL, LGPL) архитектуры SPARC V8, появившиеся в 1997 году
- MIPS (MIPS Open) — наборы команд и архитектура, имевшие свободную лицензию на некоторые наборы команд с конца 2018 до конца 2019 года[60]
Примечания
Литература
- Instruction Sets Should Be Free: The Case For RISC-V Архивная копия от 4 марта 2016 на Wayback Machine // Публикация Krste Asanović и Дэвида Паттерсона (pdf Архивная копия от 25 августа 2014 на Wayback Machine)
- The RISC-V Instruction Set Архивная копия от 6 мая 2017 на Wayback Machine // HotChips 25
- RISC-V, Spike, and the Rocket Core Архивная копия от 3 сентября 2014 на Wayback Machine
- David Patterson и Andrew Waterman: «RISC-V reader: An Open Architecture Atlas», Strawberry Canyon, ISBN 978-0-9992491-1-6 (Sep. 10th, 2017).
Ссылки
- riscv.org — официальный сайт RISC-V
- UCB RISC-V Архивная копия от 14 января 2017 на Wayback Machine // GitHub (англ.)


