RISC-V
RISC-V (риск-пять) — открытая и свободная система команд (ISA — Instruction Set Architecture) и процессорная архитектура на основе концепции RISC[1] для микропроцессоров и микроконтроллеров. Цели проекта создать стандартную и доступную для свободного и бесплатного использования систему команд, обеспечив её реконфигурируемость и расширяемость для широкого круга применений.
Создана в 2010 году исследователями из Computer Science Division, калифорнийского университета в Беркли, в том числе при непосредственном участии Дэвида Паттерсона[2][3]
Стандарт RISC-V определяет сравнительно небольшое число стандартных инструкций, около 50 штук, многие из которых были типичны еще для ранних RISC-I 1980 года. Стандартные расширения (M, A, F и D) расширяют набор на 53 инструкции, сжатый формат C определяет 34 команды. Используется 6 типов кодирования инструкций (форматов).
Содержание
- 1 Система команд
- 1.1 Список наборов команд
- 1.2 Форматы машинных команд
- 1.3 Регистры
- 1.4 Доступ к памяти
- 1.5 Вызовы подпрограмм, переходы и ветвления
- 1.6 Арифметические и логические наборы команд
- 1.7 Атомарные операции с памятью
- 1.8 Сокращенные команды
- 1.9 Команды для встраиваемых применений
- 1.10 Привелегированные набор команд
- 1.11 Битовые операции
- 1.12 Компактный набор команд для SIMD
- 1.13 Операции с векторами
- 1.14 Команды для отладки
- 2 Реализации
- 3 См. также
- 4 Примечания
- 5 Литература
- 6 Ссылки
Система командПравить
В архитектуре 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 соответственно).
Разрядность регистровых операций всегда соответствует размеру регистра, а одни и те же значения в регистрах могут трактоваться целыми числами как со знаком, так и без знака.
Нет операций над частями регистров, нет каких-либо выделенных «регистровых пар».
Операции не сохраняют где-либо биты переноса и/или переполнения, что приближено к модели операций в языке программирования C. Также аппаратно не генерируются исключения по переполнению и даже по делению на 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.
Список наборов командПравить
Сокращение | Наименование | Версия | Статус |
---|---|---|---|
Базовые наборы | |||
RV32I | Базовый набор с целочисленными операциями, 32-битный | 2.0 | Frozen |
RV32E | Базовый набор с целочисленными операциями для встраиваемых систем, 32-битный, 16 регистров | 1.9 | Open |
RV64I | Базовый набор с целочисленными операциями, 64-битный | 2.0 | Frozen |
RV128I | Базовый набор с целочисленными операциями, 128-битный | 1.7 | Open |
Стандартные расширеные наборы | |||
M | Целочисленное умножение и деление (Integer Multiplication and Division) | 2.0 | Frozen |
A | Атомарные операции (Atomic Instructions) | 2.0 | Frozen |
F | Арифметические операции с плавающей запятой над числами одинарной точности (Single-Precision Floating-Point) | 2.0 | Frozen |
D | Арифметические операции с плавающей запятой над числами двойной точности (Double-Precision Floating-Point) | 2.0 | Frozen |
G | Сокращеное обозначение для комплекта из базового и стандартного наборов команд | н/д | н/д |
Q | Арифметические операции с плавающей запятой над числами четвертной точности | 2.0 | Frozen |
L | Арифметические операции над числами с фиксированной запятой (Decimal Floating-Point) | 0.0 | Open |
C | Сокращённые имена для команд (Compressed Instructions) | 2.0 | Frozen |
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) | 0.2 | Open |
N | Инструкции прерывания (User-Level Interrupts) | 1.1 | Open |
В 32-битных микроконтроллерах и для других встраиваемых применений используется набор RV32EC. В 64-битных процессорах может быть набор групп RV64GC, то же самое в полной записи – RV64IMAFDC.
Форматы машинных командПравить
Формат 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 - номер регистра в который будет записан результат
РегистрыПравить
RISC-V имеет 32 (или 16 для встраиваемых применений) целочисленных регистра. При реализации вещественных групп команд, 32 вещественных регистра.
Для операций над числами в бинарных форматах плавающей запятой используется набор дополнительных 32 регистров FPU (Floating Point Unit), которые совместно используются расширениями базового набора инструкций для трёх вариантов точности: одинарной — 32 бита (F extension), двойной — 64 бита (D — Double precision extension), а также четверной — 128 бит (Q — Quadruple precision extension).
Доступ к памятиПравить
Вызовы подпрограмм, переходы и ветвленияПравить
Арифметические и логические наборы командПравить
Атомарные операции с памятьюПравить
Сокращенные командыПравить
Команды для встраиваемых примененийПравить
Привелегированные набор командПравить
Битовые операцииПравить
Компактный набор команд для SIMDПравить
Операции с векторамиПравить
Команды для отладкиПравить
РеализацииПравить
В рамках проекта создано и опубликовано под свободной лицензией шесть дизайнов микропроцессоров с архитектурой RISC-V: генератор 64-разрядных «Rocket» (7 октября 2014[4][5]) и пять упрощенных учебных ядер «Sodor» с различными микроархитектурами.
Также опубликовано несколько симуляторов (включая qemu и ANGEL — JavaScript-симулятор, работающий в браузере), компиляторов (LLVM, GCC), вариант ядра Linux для работы на RISC-V и компилятор дизайнов Chisel, который позволяет получать Verilog-код. Также опубликованы верификационные тесты[6].
Некоммерческая организация lowRISC планирует создание системы на кристалле на базе 64-битного ядра Rocket RISC-V с последующим массовым производством чипов[7][8].
На конференции RISC-V Workshop 2017 стало известно, что компания Esperanto Technologies разрабатывает 64-битный высокопроизводительный процессор общего назначения на системе команд RISC-V с гетерогенной архитектурой с высокой степенью параллелизма (напоминающий по строению процессор Cell), который в максимальной конфигурации будет содержать 16 ядер «ET-Maxion» (представляют собой конвейеры с неупорядоченным выполнением команд и работающие с данными с плавающей запятой) и 4096 ядер «ET-Minion» (конвейеры с последовательным выполнением команд и блоком с векторными вычислениями в каждом ядре)[9].
Компания Western Digital заявила, что в партнёрстве с компанией Esperanto, она повысит текущий статус процессорной архитектуры RISC-V с уровня микроконтроллеров до уровня высокопроизводительных решений и создаст вычислительную архитектуру нового поколения для обработки «Больших данных»[10], а также экосистему быстрого доступа к данным — речь идёт о создании специализированных RISC-V-ядер для построения архитектуры «процессор в памяти» (processor-in-memory)[11].
IP-ядраПравить
Ряд компаний предлагают готовые блоки IP-ядер на базе архитектуры RISC-V. Например, российские компании «Синтакор» (в том числе бесплатный проект SCR1 — 32-разрядное микроконтроллерное ядро)[12][13] и «Клаудбеар»[14][15], а также AndesTech (Тайвань)[16][17].
- SweRV ECHX1 компания Western Digital, США
- Rocket, sifive/freedom Калифорнийский университет в Беркли и компания SiFive, США
- ORCA компания Vectorblox, Канада
- PULPino Швейцарская высшая техническая школа Цюриха, Швейцария и Болонский университет, Италия
- Hummingbird E200 компания Nuclei System Technology, Китай
- AndeStar V5 компания Andes Technology, Тайвань
- Shakti Индийский технологический институт в Мадрасе, Индия
- BM-310, BI-350, BI-651, BI-671 компания Клаудбеар (CloudBEAR)[1], Россия
- Семейство SCR компании Синтакор (Syntacore)[2], Россия
Процессоры и микроконтроллерыПравить
По состоянию на 2019 год представлены несколько процессоров и микроконтроллеров на базе архитектуры RISC-V в формате СнК.
Микроконтроллеры:
- Western Digital: SweRV Core (32 бита, 2 ядра, 1,8 ГГц, 28 нм)[18][19]
- SiFive: FE310 (32 бита, 1 ядро, 870 МГц — 28 нм, 370 МГц — 55 нм)[20][21]
- Kendryte: K210 (64 бита, 2 ядра + нейроускоритель, 600 МГц, 28 нм, 500 мВт)[22][23][24]
- GreenWaves: GAP8 (32 бита, 8+1 ядер + нейроускоритель, 250 МГц, 55 нм, 100 мВт)[25]
- NXP: RV32M1 (32 бита, 2 гибридных ядра ARM-M4F/RISC-V + ARM-M0+/RISC-V, 48-72 МГц)[26]
- WCH: CH572 (60 МГц, корпус QFN28)[27] контроллер BLE + Zigbee + USB + Ethernet + Touchkey
- HUAMI: MHS001 Huangshan №1 (4 ядра, нейроускоритель, 55 нм, 240 МГц)[28] энергоэффективный процессор для носимых устройств и IoT
- GigaDevice: GD32VF103 (1 ядро, 32 бита, 108 МГц, ОЗУ до 16 кБ, ПЗУ до 128 кБ)[29][30] микроконтроллер, совместим с STMicroelectronics STM32F103 (ARM ISA)
- FADU: Annapurna FC3081/FC3082 (64 бита, многоядерный, 7 нм, 1,7 Вт)[31][32][33] контроллер для NVMe SSD
- BitMain: Sophon Edge TPU BM1880 (64 бита, 1 ядро RV64GC 1 ГГц + 2 ядра ARM A53 1,5 ГГц, 2,5 Вт) нейроускоритель 1 TOPS на INT8 для IoT и краевых вычислений[34][35]
Микропроцессоры и SoC:
См. такжеПравить
- OpenRISC — свободная архитектура 2000 года с GPL реализацией or1k
- LEON — свободные реализации (GPL, LGPL) архитектуры SPARC V8, появившиеся в 1997 году
- OpenSPARC — свободная (GPL) реализация архитектуры SPARC V9 от 2005 года
- OpenPOWER — коллаборация вокруг архитектуры IBM Power, основанная в 2013 году IBM, Google, Mellanox, NVIDIA
- MIPS (MIPS Open) — наборы команд и архитектура, имеющие свободную лицензию на некоторые наборы команд с конца 2018 года[44]
ПримечанияПравить
- ↑ Frequently-asked questions. . RISC-V. Regents of the University of California. Дата обращения 25 августа 2014.
- ↑ Создатель RISC продвигает open source микросхемы, Xakep.ru (21.08.2014). Дата обращения 26 августа 2014.
- ↑ Contributors . riscv.org. Regents of the University of California. Дата обращения 25 августа 2014. Архивировано 20 августа 2014 года.
- ↑ Launching the Open-Source Rocket Chip Generator! | RISC-V BLOG. Архивировано 15 октября 2014 года.
- ↑ ucb-bar/rocket-chip · GitHub.
- ↑ Downloads (недоступная ссылка). RISC-V. Regents of the University of California. Дата обращения 25 августа 2014. Архивировано 23 января 2016 года.
- ↑ lowRISC: Open to the Core . lowRISC. Дата обращения 25 августа 2014.
- ↑ Project aims to build a «fully open» SoC and dev board, Eric Brown // LinuxGizmos, 14 августа 2014
- ↑ Ветеран Transmeta возвращается на рынок процессоров с архитектурой RISC-V . 3DNews (29 ноября 2017). Дата обращения 30 ноября 2017.
- ↑ Western Digital включается в гонку за процессорными архитектурами . 3DNews (29 ноября 2017). Дата обращения 30 ноября 2017.
- ↑ Western Digital инвестировала в разработчика «процессора в памяти» . 3DNews (20 сентября 2017). Дата обращения 30 ноября 2017.
- ↑ «Синтакор» приступает к выпуску микроконтроллерного ядра с открытым кодом на базе архитектуры RISC-V
- ↑ SCR1: open RISC-V compatible MCU core with support, 2017, github
SCRx:family of the synthesizable RISC-Vcores, 2016
- ↑ https://cloudbear.ru
- ↑ Отечественные микропроцессоры. Были! Есть. Будут?, 3dnews (9 августа 2018). Дата обращения 17 ноября 2018.
- ↑ Andes Technology forms a Multinational Alliance with ASIC Design Service Companies to Provide RISC-V Total Solutions | XtremeEDA
- ↑ https://riscv.org/wp-content/uploads/2017/05/Tue0900-170509-AndeStarV5.pdf
- ↑ Western Digital представила процессор SweRV Core для ускорителей по обработке данных / ServerNews 05.12.2018
- ↑ https://blog.westerndigital.com/risc-v-swerv-core-open-source/ - https://github.com/westerndigitalcorporation/swerv_eh1
- ↑ https://www.sifive.com/products/freedom/
- ↑ SiFive: Первый в мире разработчик процессоров RISC-V на заказ
- ↑ New Part Day: The RISC-V Chip With Built-In Neural Networks | Hackaday
- ↑ 矿机巨头的转型之始?嘉楠耘智发布首款AI芯片Kendryte_区块链_金色财经
- ↑ kendryte-doc-datasheet/003.md at master · kendryte/kendryte-doc-datasheet · GitHub
- ↑ GreenWaves GAP8 is a Low Power RISC-V IoT Processor Optimized for Artificial Intelligence Applications
- ↑ CRU: Free RISC-V Boards, Security in the FOSSi Era, and More
- ↑ http://www.cnx-software.ru/2019/02/18/wch-ch572-это-risc-v-mcu-с-возможностью-подключения-bluetooth-l/
- ↑ https://markets.businessinsider.com/news/stocks/huami-s-amazfit-debuts-at-mwc-opening-a-new-chapter-in-global-expansion-1027996253
- ↑ https://cnx-software.ru/2019/08/23/gigadevice-выпускает-микроконтроллер-gd32v-risc-v-и-платы-для-разработки/
- ↑ https://www.cnbeta.com/articles/tech/881519.htm
- ↑ http://www.fadu.io/Controller.pdf
- ↑ https://news.thomasnet.com/fullstory/fadu-introduces-ssd-controller-and-bravo-series-enterprise-ssd-deliver-maximum-iops-watt-40013948
- ↑ https://www.design-reuse.com/news/44564/fadu-ssd-sifive-risc-v-core-ip.html
- ↑ https://www.youtube.com/watch?v=jaVEkc6aaTA
- ↑ https://cnx-software.ru/2018/11/12/особенности-платы-для-разработки-96boards-ai-sophon-edg/
- ↑ https://www.sifive.com/products/freedom/
- ↑ SiFive: Первый в мире разработчик процессоров RISC-V на заказ
- ↑ SiFive Introduces HiFive Unleashed RISC-V Linux Development Board (Crowdfunding)
- ↑ HiFive1 | Crowd Supply
- ↑ https://www.computerra.ru/239723/alibaba-predstavila-svoj-pervyj-protsessor/
- ↑ https://www.eet-china.com/news/201907261129.html
- ↑ https://medium.com/syncedreview/alibaba-is-open-sourcing-its-powerful-new-risc-v-processor-for-5g-and-ai-dcb6f4eebbc4
- ↑ https://www.theregister.co.uk/2019/07/27/alibaba_risc_v_chip/
- ↑ https://www.eetimes.com/document.asp?doc_id=1334087
ЛитератураПравить
- Instruction Sets Should Be Free: The Case For RISC-V // Публикация Krste Asanović и Дэвида Паттерсона (pdf)
- The RISC-V Instruction Set // HotChips 25
- RISC-V, Spike, and the Rocket Core
- 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 // GitHub
- RISC-V Twitter
- Новости
- RISC-V: An Open Standard for SoCs. The case for an open ISA // EETimes, 8/7/2014 (англ.)
- RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source // ExtremeTech, Joel Hruska, August 21, 2014 (англ.)
- Analyzing the RISC-V Instruction Set Architecture // Adapteva, August 11, 2014 (англ.)
- Конференции
- RISC V Developers Forum, Москва, 7 декабря 2017
Это заготовка статьи об аппаратном обеспечении. Вы можете помочь проекту, дополнив её. |