RISC-V

RISC-V (вимовляється "risk-five") — відкрита архітектура інструкцій центрального процесора, що базується на принципах RISC. Проект розпочався у 2010 році в Університеті Каліфорнії (Берклі), до роботи долучилися також багато ентузіастів поза межами університету.[1]

RISC-V
Розробка Університет Каліфорнії (Берклі)
Розрядність 32, 64 або 128 біт
Поява 2010
Версія 2.2
Тип архітектури RISC
Інструкції змінної довжини
Реалізація переходів Compare-and-branch
Розширення M, A, F, D, Q, C, P
Відкритий дизайн так
Регістри
Загального призначення 16, 32 (включно з одним регістром, що завжди повертає нуль при читанні)
Рухома кома 32 (опційно)

Станом на травень 2017 року, архітектура команд для програм користувача має версію 2.2, в той час як привілейована частина (для використання ядром операційної системи) поки є чорновою версією 1.10.[2]

Історія

Прототип процесора архітектури RISC-V, січень 2013 року

Термін «RISC» вперше з'явився на початку 1980-х років.[3] До цього існували деякі[які?] ідеї, що процесори з простою архітектурою можуть бути ефективними, але дизайн таких процесорів детально описаний не був.

Набір процесорних інструкцій DLX з'явився у 1990-му році для першого видання книги Computer Architecture: A Quantitative Approach і позиціонувався в основному для навчальних цілей. Автором розробки був Девід Паттерсон; у академічних колах і серед ентузіастів було здійснено кілька реалізацій DLX для FPGA. Комерційного застосування DLX не мав.

Набір команд процесорів ARM версії 2 і старіших є суспільним надбанням, і все ще[коли?] підтримується набором компіляторів gcc. Існує три описи апаратної частини цієї архітектури, але реалізація їх «у кремнії» відсутня.[4][5]

Існує також дизайн OpenRISC (також базується на DLX), що є продуктом з відкритим кодом і також підтримується gcc. Втім, кількість комерційних реалізацій OpenRISC також незначна.

Особливості дизайну

Набори регістрів

RISC-V має 32 (у вбудовуваному варіанті — 16) регістрів для зберігання цілих чисел. Якщо підтримується розширення з рухомою комою, процесор має підтримувати 32 регістри з рухомою комою. Інструкції процесора (за винятком тих, що здійснюють доступ до пам'яті) оперують лише з регістрами.

Перший цілочисельний регістр завжди повертає нуль при читанні, а запис у нього не має ефекту. Решта регістрів — загального призначення. Використання нульового регістра дає змогу реалізувати компактніший набір інструкцій (наприклад, інструкцію RY := RX можна замінити еквівалентною RY := RX + R0).[2]

Існують також регістри керування і статусу. Програми користувача мають доступ лише до тих з них, що пов'язані з вимірюванням швидкодії і керуванням обчислень з рухомою комою.

Інструкції, що зчитують або записують багато регістрів за раз, відсутні: проектанти дійшли до висновку, що такі команди не є необхідними, складні у реалізації і занадто повільні.[2]

Виклик підпрограм, переходи і розгалуження

Для виклику підпрограм архітектура RISC-V має інструкцію jal (англ. jump and link); адреса для повернення з підпрограми записується у наданий регістр. Такий підхід є швидшим, ніж запис адреси у пам'ять (стек). Зміщення у інструкції jal кодується 20-бітним знаковим числом, яке множиться на 2 і додається до поточного лічильника команд. Якщо обчислене таким чином значення не є кратним 4, процесор може згенерувати виняток.[2]

Непрямий перехід здійснюється інструкцією jalr (англ. jump and link-register), яка схожа на jal, але адреса обчислюється шляхом додавання значення базового регістру і 12-бітного зміщення (jal додає 20-бітне зміщення до PC).

Бітовий формат інструкції jalr схожий на інструкції завантаження і зберігання (load-store) з відносною адресацією. Інструкція lui (англ. load upper immediate) заповнює верхні 20 біт регістру заданим значенням (нижні 12 біт обнулюються), а auipc (англ. add upper immediate to PC) — додатково складає результат з поточним значенням PC. Ці інструкції корисні при генерації позиційно-незалежного коду.

Для реалізації безумовних переходів RISC-V також використовує інструкції jal і jalr. У такому випадку нульовий регістр виступає як регістр зв'язку, і таким чином адреса повернення не зберігається.[2]

Реалізації

Станом на вересень 2018 року існують наступні реалізації процесорної архітектури RISC-V:

Програмне забезпечення

Для роботи над дизайном процесора існує компілятор зі спеціалізованої мови програмування Chisel[6], результатом виконання якого є код на Verilog.

Для розробки прикладного і системного програмного забезпечення існує порт GNU Compiler Collection (GCC) для RISC-V, включно зі зневаджувачем GDB. Також цю архітектуру підтримує LLVM, симулятор OVPsim, симулятор Spike, і симулятор у QEMU.

На RISC-V портовано ядро ОС Linux, а також операційні системи FreeBSD і NetBSD. Чорновий варіант порту FreeBSD було здійснено у лютому 2016, стабілізація відбулася у FreeBSD 11.0. [7] [8]

Джерела

  1. Contributors. riscv.org. Regents of the University of California. Архів оригіналу за 13 червня 2018. Процитовано 25 серпня 2014.
  2. Waterman, Andrew; Asanović, Krste. The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2. University of California, Berkeley. EECS-2016-118. Процитовано 25 травня 2017.
  3. Patterson, David A; Ditzel, David R. (October 1980). The Case for the Reduced Instruction Set Computer. ACM SIGARCH Computer Architecture News 8 (6): 25. doi:10.1145/641914.641917.
  4. Amber ARM-compatible core. OpenCores. OpenCores. Процитовано 26 серпня 2014.
  5. ARM4U. OpenCores. OpenCores. Процитовано 26 серпня 2014.
  6. Chisel: Constructing Hardware in a Scala Embedded Language. UC Berkeley. Regents of the University of California. Процитовано 12 лютого 2015.
  7. FreeBSD Wiki: RISC-V.
  8. FreeBSD Foundation: Initial FreeBSD RISC-V Architecture Port Committed.
  9. Waterman, Andrew. The RISC-V Compressed Instruction Set Manual Version 1.9 (draft). RISC-V. Процитовано 18 липня 2016.
  10. Rocket Core Generator. RISC-V. Regents of the University of California. Архів оригіналу за 26 вересня 2014. Процитовано 1 жовтня 2014.
  11. Waterman, Andrew (13 травня 2011). Improving Energy Efficiency and Reducing Code Size with RISC-V Compressed. U.C. Berkeley: Regents of the University of California. с. 32. Процитовано 25 серпня 2014.
  12. SHAKTI Processor Project. Indian Institute of Technology Madras. Архів оригіналу за 21 серпня 2017. Процитовано 15 вересня 2014.
  13. IIT Madras Open Source Processor Project. Rapid IO. IIT Madras. Процитовано 13 вересня 2014.
  14. lowRISC website. Процитовано 10 травня 2015.


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.