stringtranslate.com

RISC-V

RISC-V [b] (произносится как «риск-файв» [2] : 1  ) — это архитектура набора инструкций открытого стандарта (ISA), основанная на устоявшихся принципах сокращенного набора инструкций компьютера (RISC). Проект начался в 2010 году в Калифорнийском университете в Беркли , в 2015 году был передан в Фонд RISC-V, а в ноябре 2019 года — в RISC-V International, швейцарскую некоммерческую организацию. [5] [6] Как и несколько других RISC ISA, например Amber (ARMv2) или OpenRISC , RISC-V предлагается по лицензиям с открытым исходным кодом без уплаты роялти . [7] Документы, определяющие архитектуру набора инструкций RISC-V (ISA), предлагаются по лицензии Creative Commons или BSD License .

Основная поддержка RISC-V была добавлена ​​в ядро ​​Linux 5.17 в 2022 году вместе с его набором инструментов . [8] В июле 2023 года RISC-V в его 64-битном варианте под названием riscv64 [9] был включен в качестве официальной архитектуры дистрибутива Linux Debian в его нестабильной версии. [10] Целью этого проекта было «подготовить Debian к установке и запуску на системах, реализующих вариант RISC-V ISA». [11]

Некоторые члены RISC-V International, такие как SiFive , Andes Technology , Synopsys , Damo Academy от Alibaba , Raspberry Pi и Akeana, [12] [13] предлагают или анонсировали коммерческие системы на кристалле (SoC), которые включают в себя одно или несколько ядер ЦП, совместимых с RISC-V. [14]

Обзор

Как архитектура RISC, RISC-V ISA представляет собой архитектуру загрузки-хранения . Ее инструкции с плавающей точкой используют IEEE 754 с плавающей точкой. Известные особенности RISC-V ISA включают: расположение полей битов инструкций, выбранное для упрощения использования мультиплексоров в ЦП, [2] : 17  дизайн, который является архитектурно нейтральным, [ сомнительныйобсудить ] и фиксированное расположение для бита знака непосредственных значений для ускорения расширения знака . [2] : 17 

Набор инструкций разработан для широкого спектра применений. Базовый набор инструкций имеет фиксированную длину 32-битных естественно выровненных инструкций, а ISA поддерживает расширения переменной длины, где каждая инструкция может быть любым количеством 16-битных участков в длину. [2] : 7–10  Расширений поддерживают небольшие встраиваемые системы , персональные компьютеры , суперкомпьютеры с векторными процессорами и параллельные компьютеры масштаба склада .

Спецификация набора инструкций определяет 32-битные и 64-битные варианты адресного пространства . Спецификация включает описание 128-битного варианта плоского адресного пространства как экстраполяции 32- и 64-битных вариантов, но 128-битная ISA намеренно остается «не замороженной», поскольку по состоянию на 2023 год все еще мало практического опыта работы с такими большими системами памяти. [2] : 41 

В отличие от других академических проектов, которые обычно оптимизируются только для простоты изложения, проектировщики предполагали, что набор инструкций RISC-V будет пригоден для использования на практических компьютерах. По состоянию на июнь 2019 года версия 2.2 пользовательского пространства ISA [15] и версия 1.11 привилегированного ISA [3] заморожены , что позволяет продолжить разработку программного и аппаратного обеспечения. Пользовательский ISA, теперь переименованный в непривилегированный ISA, был обновлен, ратифицирован и заморожен как версия 20191213. [ 2 ] Внешняя отладочная спецификация доступна в виде черновика, версия 0.13.2. [16]

Обоснование

Прототип процессора RISC-V, январь 2013 г.

Проектирование ЦП требует экспертных знаний в нескольких областях: электронная цифровая логика , компиляторы и операционные системы . Чтобы покрыть расходы на такую ​​команду, коммерческие поставщики интеллектуальной собственности (ИС) процессоров, такие как Arm Ltd. и MIPS Technologies , взимают роялти за использование своих разработок и патентов . [17] [18] [19] Они также часто требуют соглашений о неразглашении перед выпуском документов, описывающих подробные преимущества их разработок. Во многих случаях они никогда не описывают причины своего выбора разработки.

RISC-V был начат с целью создания практической ISA с открытым исходным кодом, пригодной для академического использования и развертываемой в любом аппаратном или программном проектировании без лицензионных отчислений. [2] : 1  [20] Также, объясняются обоснования для каждого проектного решения проекта, по крайней мере в общих чертах. Авторы RISC-V являются учеными, имеющими значительный опыт в компьютерном проектировании, и RISC-V ISA является прямым развитием серии академических компьютерных проектов, особенно Berkeley RISC . RISC-V был создан отчасти для оказания помощи всем таким проектам. [2] : 1  [20]

Чтобы создать большое, постоянное сообщество пользователей и тем самым накопить проекты и программное обеспечение, разработчики RISC-V ISA намеренно поддерживают широкий спектр практических вариантов использования: компактные, производительные и маломощные реальные реализации [2] : 1–2, 153–154  [21] без чрезмерного проектирования для данной микроархитектуры . [2] : 1  [22] [23] [24] Требования большой базы участников являются одной из причин, по которой RISC-V был спроектирован для решения множества возможных задач.

Основное утверждение разработчиков заключается в том, что набор инструкций является ключевым интерфейсом в компьютере, поскольку он расположен на интерфейсе между оборудованием и программным обеспечением. Если бы хороший набор инструкций был открыт и доступен для использования всеми, то он мог бы значительно снизить стоимость программного обеспечения, позволяя гораздо большее повторное использование. Это также должно вызвать усиление конкуренции среди поставщиков оборудования, которые затем могут выделять больше ресурсов на проектирование и меньше на поддержку программного обеспечения. [20]

Разработчики утверждают, что новые принципы становятся редкостью в разработке наборов инструкций, поскольку наиболее успешные разработки последних сорока лет становились все более похожими. Из тех, которые потерпели неудачу, большинство произошло из-за того, что их спонсирующие компании были финансово несостоятельны, а не потому, что наборы инструкций были технически плохими. Таким образом, хорошо спроектированный открытый набор инструкций, разработанный с использованием устоявшихся принципов, должен привлечь долгосрочную поддержку многих поставщиков. [20]

RISC-V также поощряет академическое использование. Простота целочисленного подмножества позволяет выполнять базовые студенческие упражнения и является достаточно простой ISA, чтобы программное обеспечение могло управлять исследовательскими машинами. ISA переменной длины предоставляет место для расширений набора инструкций как для студенческих упражнений, так и для исследований, [2] : 7  и отдельный привилегированный набор инструкций позволяет проводить исследования в области поддержки операционной системы без перепроектирования компиляторов. [3] Открытая парадигма интеллектуальной собственности RISC-V позволяет публиковать, повторно использовать и изменять производные разработки. [25]

История

Термин RISC датируется примерно 1980 годом. [26] До этого существовали некоторые знания (см. John Cocke ), что более простые компьютеры могут быть эффективными, но принципы проектирования не были широко описаны. Простые, эффективные компьютеры всегда представляли академический интерес, и привели к появлению набора инструкций RISC DLX для первого издания Computer Architecture: A Quantitative Approach в 1990 году, соавтором которого был Дэвид Паттерсон , а позже он участвовал в создании RISC-V. DLX был предназначен для образовательных целей; ученые и любители реализовали его с помощью программируемых пользователем вентильных матриц (FPGA), но он никогда по-настоящему не предназначался для коммерческого развертывания. Процессоры ARM , версии 2 и более ранних, имели набор инструкций в открытом доступе и до сих пор поддерживаются GNU Compiler Collection (GCC), популярным компилятором свободного программного обеспечения . Для этой ISA существуют три ядра с открытым исходным кодом , но они никогда не производились. [27] [28] Ядра OpenRISC , OpenPOWER и OpenSPARC / LEON предлагаются рядом поставщиков и имеют основную поддержку ядра GCC и Linux . [29] [30] [31]

Крсте Асанович из Калифорнийского университета в Беркли имел исследовательскую потребность в компьютерной системе с открытым исходным кодом, и в 2010 году он решил разработать и опубликовать ее в «коротком трехмесячном проекте летом» с несколькими своими аспирантами. План состоял в том, чтобы помочь как академическим, так и промышленным пользователям. [20] Дэвид Паттерсон из Беркли присоединился к сотрудничеству, поскольку он был создателем Berkeley RISC, [26] а RISC-V является одноименным пятым поколением его длинной серии совместных исследовательских проектов на основе RISC в Калифорнийском университете в Беркли ( RISC-I и RISC-II, опубликованные в 1981 году Паттерсоном, который называет [32] архитектуру SOAR [33] с 1984 года «RISC-III» и архитектуру SPUR [34] с 1988 года «RISC-IV»). На этом этапе студенты предоставили начальное программное обеспечение, симуляции и проекты ЦП. [35]

Первый Raven1 представил ST28nm в Центре беспроводных исследований в Беркли (BWRC), июнь 2012 г.

Авторы RISC-V и их учреждение изначально получили документы ISA [36] и несколько проектов ЦП по лицензиям BSD , которые позволяют производным работам, таким как проекты чипов RISC-V, быть либо открытыми и свободными, либо закрытыми и проприетарными. Сама спецификация ISA (т. е. кодировка набора инструкций) была опубликована в 2011 году как открытый исходный код, [37] со всеми защищенными правами. Фактический технический отчет (выражение спецификации) позже был помещен под лицензию Creative Commons , чтобы разрешить улучшение внешними участниками через RISC-V Foundation, а позднее RISC-V International.

Полная история RISC-V опубликована на сайте RISC-V International. [38]

Фонд RISC-V и RISC-V International

Коммерческим пользователям требуется, чтобы ISA была стабильной, прежде чем они смогут использовать ее в продукте, который может прослужить много лет. Для решения этой проблемы в 2015 году был сформирован Фонд RISC-V для владения, поддержки и публикации интеллектуальной собственности, связанной с определением RISC-V. [39] Первоначальные авторы и владельцы передали свои права фонду. [ необходима цитата ] Фонд возглавляет генеральный директор Калиста Редмонд , которая заняла эту должность в 2019 году после руководства проектами открытой инфраструктуры в IBM . [40] [ не удалось проверить ]

Членами-основателями RISC-V были: Andes, Antmicro, Bluespec, CEVA, Codasip, Cortus, Esperanto, Espressif, ETH Zurich, Google, IBM, ICT, IIT Madras, Lattice, lowRISC, Microchip, MIT (Csail), Qualcomm, Rambus, Rumble, SiFive, Syntacore и Technolution. [41]

В ноябре 2019 года Фонд RISC-V объявил о переезде в Швейцарию, сославшись на опасения по поводу торговых правил США. [42] [43] По состоянию на март 2020 года организация называлась RISC-V International, швейцарская некоммерческая бизнес-ассоциация. [44]

С 2019 года RISC-V International свободно публикует документы, определяющие RISC-V, и разрешает неограниченное использование ISA для проектирования программного обеспечения и оборудования. Однако только члены RISC-V International могут голосовать за одобрение изменений, и только организации-члены используют логотип совместимости с торговой маркой . [45]

Награды

Дизайн

База ISA и расширения

RISC-V имеет модульную конструкцию, состоящую из альтернативных базовых частей с добавленными дополнительными расширениями. База ISA и ее расширения разрабатываются в результате коллективных усилий промышленности, исследовательского сообщества и образовательных учреждений. База определяет инструкции (и их кодирование), поток управления, регистры (и их размеры), память и адресацию, логическую (т. е. целочисленную) манипуляцию и вспомогательные устройства. База сама по себе может реализовать упрощенный компьютер общего назначения с полной программной поддержкой, включая компилятор общего назначения.

Стандартные расширения предназначены для работы со всеми стандартными базами и друг с другом без конфликтов.

Многие компьютеры RISC-V могут реализовать расширение сжатых инструкций для снижения энергопотребления, размера кода и использования памяти. [2] : 97–99  Также существуют планы на будущее по поддержке гипервизоров и виртуализации . [3]

Вместе с расширением супервизора S, набором инструкций RVGC, который включает один из базовых наборов инструкций RV, набором расширений G (включающим «I», что означает, что база не встроена) и расширением C, определяются все инструкции, необходимые для удобной поддержки операционной системы общего назначения . [2] : 129, 154 

  1. ^ Ожидается, что замороженные части получат окончательный набор характеристик и получат лишь разъяснения перед ратификацией.

Для обозначения комбинаций функций, которые могут быть реализованы, определена номенклатура для их указания в Главе 27 текущей ратифицированной Непривилегированной спецификации ISA. Сначала указывается база набора инструкций, кодирование для RISC-V, разрядность регистра и вариант; например, RV64I или RV32E . Затем следуют буквы, указывающие реализованные расширения, в порядке, указанном в таблице выше. За каждой буквой может следовать основная опция, за которой может следовать «p» и номер дополнительной опции. По умолчанию она равна 0, если отсутствует дополнительный номер версии, и 1.0, если отсутствует весь номер версии. Таким образом, RV64IMAFD может быть записана как RV64I1p0M1p0A1p0F1p0D1p0 или проще как RV64I1M1A1F1D1 . Для удобства чтения между расширениями могут использоваться подчеркивания, например, RV32I2_M2_A2 .

Схема модульного набора инструкций варианта RV32IMAC, показывающая все инструкции в базовом целочисленном ISA и расширения для целочисленного умножения и деления, атомарных инструкций и сжатых инструкций.
Модульный набор инструкций варианта RV32IMAC . Это 32-битный ЦП с базой целочисленных ISA ( RV32I ) и расширениями ISA для целочисленного умножения и деления ( RV32M ), атомарных инструкций ( RV32A ) и сжатых инструкций ( RV32C ).

Базовые, расширенные целочисленные и плавающие вычисления с примитивами синхронизации для многоядерных вычислений считаются необходимыми для вычислений общего назначения, поэтому мы имеем сокращение «G».

Небольшой 32-разрядный компьютер для встроенной системы может быть RV32EC . Большой 64-разрядный компьютер может быть RV64GC ; т.е. RV64IMAFDCZicsr_Zifencei .

С ростом числа расширений стандарт теперь предусматривает, что расширения должны именоваться одной буквой «Z», за которой следует алфавитное имя и необязательный номер версии. Например, Zifencei именует расширение выборки инструкций. Zifencei2 и Zifencei2p0 именуют версию 2.0 того же самого. Первая буква после «Z» по соглашению указывает на наиболее тесно связанную алфавитную категорию расширений, IMAFDQLCBJTPVN . Таким образом, расширение Zam для невыровненных атомов относится к стандартному расширению «A». В отличие от расширений с одним символом, расширения Z должны быть разделены подчеркиваниями, сгруппированы по категориям, а затем в алфавитном порядке внутри каждой категории. Например, Zicsr_Zifencei_Zam .

Расширения, специфичные для уровня привилегий супервизора, именуются таким же образом, используя префикс "S". Расширения, специфичные для уровня гипервизора, именуются, используя префикс "H". Расширения уровня машины имеют префикс из трех букв "Zxm". Расширения набора инструкций уровня супервизора, гипервизора и машины имеют названия менее привилегированных расширений.

Разработчики RISC-V могут создавать собственные нестандартные расширения набора инструкций. Они следуют соглашению об именовании "Z", но с префиксом "X". Их следует указывать после всех стандартных расширений, а если перечислено несколько нестандартных расширений, они должны быть перечислены в алфавитном порядке.

Профили и платформы

Профили и платформы для стандартных списков выбора ISA находятся в стадии обсуждения.

... Эту гибкость можно использовать для высокой оптимизации специализированного дизайна, включив только точный набор функций ISA, требуемых для приложения, но та же гибкость также приводит к комбинаторному взрыву в возможных вариантах ISA. Профили определяют гораздо меньший общий набор вариантов ISA, которые охватывают наибольшую ценность для большинства пользователей, и которые, таким образом, позволяют сообществу разработчиков программного обеспечения сосредоточить ресурсы на создании богатой экосистемы программного обеспечения. [50]

Спецификация платформы определяет набор платформ, которые определяют требования к взаимодействию между программным обеспечением и оборудованием. Политика платформы определяет различные термины, используемые в этой спецификации платформы. Политика платформы также предоставляет необходимые сведения относительно области действия, покрытия, наименования, управления версиями, структуры, жизненного цикла и совместимости для спецификации платформы. [51]

Регистровые наборы

RISC-V имеет 32 целочисленных регистра (или 16 во встроенном варианте), [2] : 13, 33  и, когда реализовано расширение с плавающей точкой, дополнительные 32 регистра с плавающей точкой . [2] : 63  За исключением инструкций доступа к памяти, инструкции адресуют только регистры .

Первый целочисленный регистр — это нулевой регистр , а остальные — регистры общего назначения. Сохранение в нулевой регистр не имеет никакого эффекта, а чтение всегда возвращает 0. Использование нулевого регистра в качестве заполнителя упрощает набор инструкций.

Существуют регистры управления и состояния, но программы пользовательского режима могут получить доступ только к тем из них, которые используются для измерения производительности и управления числами с плавающей точкой.

Не существует инструкций для сохранения и восстановления нескольких регистров. Они считались бесполезными, слишком сложными и, возможно, слишком медленными. [25]

Доступ к памяти

Как и многие RISC-проекты, RISC-V представляет собой архитектуру загрузки-сохранения : инструкции адресуются только к регистрам, а инструкции загрузки и сохранения передают данные в память и из нее.

Большинство инструкций загрузки и сохранения включают 12-битное смещение и два идентификатора регистра. Один регистр является базовым регистром. Другой регистр является местом назначения (для загрузки) или источником (для сохранения).

Смещение добавляется к базовому регистру для получения адреса. [2] : 24  Формирование адреса как базового регистра плюс смещение позволяет отдельным инструкциям получать доступ к структурам данных. Например, если базовый регистр указывает на вершину стека, отдельные инструкции могут получать доступ к локальным переменным подпрограммы в стеке. Аналогично инструкции загрузки и сохранения могут получать доступ к структуре в стиле записи или к устройству ввода-вывода, отображенному в память. Использование постоянного нулевого регистра в качестве базового адреса позволяет отдельным инструкциям получать доступ к памяти вблизи адреса ноль.

Память адресуется как 8-битные байты, при этом инструкции располагаются в порядке от младшего к старшему [2] : 9–10  , а данные располагаются в порядке байтов, определяемом интерфейсом среды выполнения, в которой выполняется код. [2] : 3, 9–10, 24  Доступ к словам размером до регистра возможен с помощью инструкций загрузки и сохранения.

RISC-V изначально был определен как little-endian, чтобы напоминать другие знакомые, успешные компьютеры, например, x86 . [2] : 9–10  Это также снижает сложность ЦП и стоит немного меньше, поскольку он считывает все размеры слов в том же порядке. Например, набор инструкций RISC-V декодирует, начиная с самого младшего адресованного байта инструкции. Варианты big-endian и bi-endian были определены для поддержки устаревших кодовых баз, которые предполагают big-endian. [2] : 9–10  Привилегированная ISA определяет биты в регистрах mstatus и mstatush , которые указывают и, опционально, управляют тем, являются ли доступы к памяти M-mode, S-mode и U-mode, отличные от выборки инструкций, little-endian или big-endian; эти биты могут быть только для чтения, в этом случае порядок реализации жестко запрограммирован или может быть доступен для записи. [3] : 23–24 

Интерфейс среды выполнения может разрешить не выравнивать адреса памяти по ширине их слова, но доступ к выровненным адресам может быть быстрее; например, простые ЦП могут реализовывать невыровненный доступ с медленной программной эмуляцией, управляемой прерыванием ошибки выравнивания . [2] : 3, 24–25 

Как и многие наборы инструкций RISC (и некоторые наборы инструкций для компьютеров со сложным набором инструкций (CISC), такие как x86 и IBM System/360 и их последователи через z/Architecture ), RISC-V не имеет адресных режимов, которые записывают обратно в регистры. Например, он не делает автоинкремент. [2] : 24 

RISC-V управляет системами памяти, которые совместно используются ЦП или потоками , гарантируя, что поток выполнения всегда видит свои операции памяти в запрограммированном порядке. Но между потоками и устройствами ввода-вывода RISC-V упрощен: он не гарантирует порядок операций памяти, за исключением определенных инструкций, таких как fence.

Инструкция fenceгарантирует, что результаты предшествующих операций видны последующим операциям других потоков или устройств ввода-вывода. fenceможет гарантировать порядок комбинаций как операций памяти, так и операций ввода-вывода, отображенных в память. Например, она может разделить операции чтения и записи памяти, не влияя на операции ввода-вывода. Или, если система может работать с устройствами ввода-вывода параллельно с памятью, fenceне заставляет их ждать друг друга. Один ЦП с одним потоком может декодировать fenceкак nop.

Некоторые RISC-процессоры (такие как MIPS , PowerPC , DLX и Berkeley's RISC-I) помещают 16 бит смещения в загрузки и сохранения. Они устанавливают верхние 16 бит с помощью инструкции загрузки верхнего слова . Это позволяет легко устанавливать значения верхнего полуслова, не сдвигая биты. Однако большинство случаев использования инструкции верхнего полуслова создает 32-битные константы, такие как адреса. RISC-V использует подобную SPARC комбинацию 12-битных смещений и 20-битных инструкций установки верхнего значения . Меньшее 12-битное смещение помогает компактным, 32-битным инструкциям загрузки и сохранения выбирать два из 32 регистров, но при этом иметь достаточно бит для поддержки кодирования инструкций переменной длины RISC-V. [2] : 16 

Немедленные

RISC-V обрабатывает 32-битные константы и адреса с помощью инструкций, которые устанавливают верхние 20 бит 32-битного регистра. Load upper immediately luiзагружает 20 бит в биты с 31 по 12. Затем вторая инструкция, например, addiможет установить нижние 12 бит. Небольшие числа или адреса могут быть сформированы с использованием нулевого регистра вместо lui.

Этот метод расширен для разрешения позиционно-независимого кода путем добавления инструкции, auipcкоторая генерирует 20 верхних адресных битов путем добавления смещения к счетчику программ и сохранения результата в базовом регистре. Это позволяет программе генерировать 32-битные адреса, которые являются относительными к счетчику программ.

Базовый регистр часто можно использовать как есть с 12-битными смещениями загрузок и хранилищ. При необходимости addiможно установить нижние 12 бит регистра. В 64-битных и 128-битных ISA luiи auipcрасширить знак результата, чтобы получить больший адрес. [2] : 37 

Некоторые быстрые процессоры могут интерпретировать комбинации инструкций как отдельные объединенные инструкции luiили auipcявляются хорошими кандидатами для объединения с инструкциями jalr, addi, загрузкой или сохранением.

Вызовы подпрограмм, переходы и ветвления

Вызов подпрограммы RISC-V jal(переход и ссылка) помещает свой адрес возврата в регистр. Это быстрее во многих компьютерных конструкциях, поскольку экономит доступ к памяти по сравнению с системами, которые помещают адрес возврата непосредственно в стек в памяти. jalимеет 20-битное смещение со знаком ( дополнение до двух ). Смещение умножается на 2, затем добавляется к PC (счетчику программ) для генерации относительного адреса 32-битной инструкции. Если полученный адрес не выровнен по 32 битам (т. е. делится на 4 без остатка), ЦП может вызвать исключение . [ 2] : 20–23, Раздел 2.5 

Процессоры RISC-V переходят к вычисленным адресам с помощью инструкции jump and link-register , которая похожа на , но получает свой адрес назначения путем добавления 12-битного смещения к базовому регистру. (В отличие от этого, добавляет большее 20-битное смещение к PC.)jalrjalrjaljal

jalrФормат битов похож на загрузки и сохранения относительно регистра. Подобно им, jalrможет использоваться с инструкциями, которые устанавливают верхние 20 бит базового регистра для выполнения 32-битных переходов, либо по абсолютному адресу (используя lui), либо по адресу относительно ПК (используя auipcдля позиционно-независимого кода). (Использование постоянного нулевого базового адреса позволяет вызывать отдельные инструкции по небольшому (смещение), фиксированному положительному или отрицательному адресу.)

RISC-V перерабатывает jalи jalrдля получения безусловных 20-битных PC-относительных переходов и безусловных 12-битных переходов на основе регистров. Переходы просто делают регистр связи 0, так что адрес возврата не сохраняется. [2] : 20–23, Раздел 2.5 

RISC-V также выполняет повторный цикл jalrдля возврата из подпрограммы: для этого jalrбазовый регистр устанавливается равным регистру связи, сохраненному с помощью jalили jalr. jalrСмещение равно нулю, и регистр связи равен нулю, так что смещения нет, и адрес возврата не сохраняется.

Как и многие проекты RISC, при вызове подпрограммы компилятор RISC-V должен использовать отдельные инструкции для сохранения регистров в стеке в начале, а затем восстанавливать их из стека при выходе. RISC-V не имеет инструкций сохранения нескольких или восстановления нескольких регистров. Считалось, что они делают ЦП слишком сложным и, возможно, медленным. [52] Это может занять больше места в коде. Разработчики планировали уменьшить размер кода с помощью библиотечных процедур для сохранения и восстановления регистров. [53]

RISC-V не имеет регистра кода условия или бита переноса . Разработчики считали, что коды условий делают быстрые процессоры более сложными, заставляя взаимодействовать инструкции на разных этапах выполнения. Этот выбор делает арифметику с множественной точностью более сложной. Кроме того, несколько числовых задач требуют больше энергии. В результате предикация (условное выполнение инструкций) не поддерживается. Разработчики утверждают, что очень быстрые, неупорядоченные конструкции процессоров в любом случае выполняют предикацию, выполняя сравнение ветвей и условный код параллельно, а затем отбрасывая эффекты неиспользуемого пути. Они также утверждают, что даже в более простых процессорах предикация менее ценна, чем предсказание ветвей , которое может предотвратить большинство остановок, связанных с условными ветвями. Код без предикации больше, с большим количеством ветвей, но они также утверждают, что сжатый набор инструкций (такой как набор C в RISC-V ) решает эту проблему в большинстве случаев. [25] [ неудачная проверка ]

Вместо этого RISC-V имеет короткие ветви, которые выполняют сравнения: равно, не равно, меньше, без знака меньше, больше или равно и без знака больше или равно. Десять операций сравнения-ветвления реализованы всего шестью инструкциями, путем изменения порядка операндов в ассемблере на обратный . Например, ответвление, если больше, может быть выполнено с помощью меньше с обратным порядком операндов. [2] : 20–23, Раздел 2.5 

Сравниваемые ветви имеют двенадцатибитный знаковый диапазон и скачок относительно ПК. [2] : 20–23, Раздел 2.5 

В отличие от некоторых архитектур RISC, RISC-V не включает слот задержки ветвления , позицию после инструкции ветвления, которая может быть заполнена инструкцией, которая выполняется независимо от того, выполнен ли переход. [2] : 20–23, Раздел 2.5  RISC-V опускает слот задержки ветвления, поскольку это усложняет многоцикловые ЦП, суперскалярные ЦП и длинные конвейеры. Динамические предсказатели ветвлений достаточно преуспели, чтобы уменьшить потребность в отложенных ветвлениях. [25]

При первой встрече с ветвью процессоры RISC-V должны предположить, что будет взята отрицательная относительная ветвь (т. е. знаковый бит смещения равен «1»). [2] : 20–23, Раздел 2.5  Это предполагает, что обратная ветвь является циклом, и обеспечивает направление по умолчанию, чтобы простые конвейерные процессоры могли заполнить свой конвейер инструкций. Помимо этого, RISC-V не требует предсказания ветвлений , но реализациям ядра разрешено добавлять его. RV32I резервирует пространство инструкций «HINT», которое в настоящее время не содержит никаких подсказок по ветвлениям; [2] : 28–29, Раздел 2.9  RV64I делает то же самое. [2] : 38–39, Раздел 5.4 

Арифметические и логические наборы

RISC-V разделяет математику на минимальный набор целочисленных инструкций (набор I ) со сложением, вычитанием, сдвигом, побитовой логикой и сравнением ветвей. Они могут имитировать большинство других наборов инструкций RISC-V с помощью программного обеспечения. (Атомарные инструкции являются заметным исключением.) Целочисленные инструкции RISC-V не содержат операций с ведущим нулем и битовыми полями, которые обычно используются для ускорения программной плавающей точки в чисто целочисленном процессоре. Однако, хотя номинально они находятся в расширении битовой манипуляции, ратифицированные расширения Zbb, Zba и Zbs содержат дополнительные целочисленные инструкции, включая инструкцию с ведущим нулем.

Инструкции целочисленного умножения (набор M ) включают знаковое и беззнаковое умножение и деление. Включены целочисленные умножения и деления двойной точности, как умножения и деления, которые производят верхнее слово результата. Документ ISA рекомендует разработчикам ЦП и компиляторов объединять стандартизированную последовательность высоких и низких инструкций умножения и деления в одну операцию, если это возможно. [2] : 43–45 

Инструкции с плавающей точкой (набор F ) включают арифметику одинарной точности, а также сравнительные ветви, аналогичные целочисленной арифметике. Для этого требуется дополнительный набор из 32 регистров с плавающей точкой. Они отделены от целочисленных регистров. Инструкции с плавающей точкой двойной точности (набор D ) обычно предполагают, что регистры с плавающей точкой являются 64-битными (т. е. двойной ширины), а подмножество F координируется с набором D. Также определена 128-битная ISA с плавающей точкой четверной точности ( Q ). [2] : 63–82  Компьютеры RISC-V без плавающей точки могут использовать библиотеку программного обеспечения с плавающей точкой.

RISC-V не вызывает исключений при арифметических ошибках, включая переполнение , [2] : 17–20  недостаточное переполнение, субнормальное состояние и деление на ноль. [2] : 44–45  Вместо этого как целочисленная, так и плавающая арифметика выдают разумные значения по умолчанию, а инструкции с плавающей точкой устанавливают биты состояния. [2] : 66  Деление на ноль может быть обнаружено одной ветвью после деления. [2] : 44–45  Биты состояния могут быть проверены операционной системой или периодическим прерыванием.

Атомарные операции с памятью

RISC-V поддерживает компьютеры, которые совместно используют память для нескольких ЦП и потоков . Стандартная модель согласованности памяти RISC-V — согласованность освобождения . То есть, загрузки и сохранения, как правило, могут быть переупорядочены, но некоторые загрузки могут быть обозначены как операции получения , которые должны предшествовать более поздним доступам к памяти, а некоторые сохранения могут быть обозначены как операции освобождения , которые должны следовать за более ранними доступами к памяти. [2] : 83–94 

Базовый набор инструкций включает минимальную поддержку в виде fenceинструкции по обеспечению порядка памяти. [2] : 26–27  Хотя этого достаточно ( fence r, rwобеспечивает получение и fence rw, wобеспечивает освобождение ), комбинированные операции могут быть более эффективными. [2] : Глава 8 

Расширение атомарных операций памяти поддерживает два типа атомарных операций памяти для согласованности выпуска. Во-первых, оно предоставляет инструкции общего назначения с зарезервированной загрузкой lr и условным сохранением sclr . выполняет загрузку и пытается зарезервировать этот адрес для своего потока. Более позднее условное сохранение scв зарезервированном адресе будет выполнено только в том случае, если резервирование не будет нарушено промежуточным сохранением из другого источника. Если сохранение успешно, в регистр помещается ноль. Если оно не удалось, ненулевое значение указывает, что программное обеспечение должно повторить операцию. В любом случае резервирование снимается. [2] : Глава 8 

Вторая группа атомарных инструкций выполняет последовательности чтения-изменения-записи : загрузка (которая может быть необязательной загрузкой-получением) в регистр назначения, затем операция между загруженным значением и исходным регистром, затем сохранение результата (которое может быть необязательной загрузкой-выпуском). Если сделать барьеры памяти необязательными, то операции будут объединены. Необязательные операции включаются битами получения и освобождения , которые присутствуют в каждой атомарной инструкции. RISC-V определяет девять возможных операций: обмен (использование значения исходного регистра напрямую); сложение; побитовое и, или и исключающее или; и знаковый и беззнаковый минимум и максимум. [2] : Глава 8 

Системный дизайн может оптимизировать эти комбинированные операции больше, чем lrи sc. Например, если регистр назначения для обмена является константой ноль, загрузка может быть пропущена. Если сохраненное значение не было изменено с момента загрузки, сохранение может быть пропущено. [15] : 44 

IBM System/370 и его последователи, включая z/Architecture и x86 , реализуют инструкцию compare-and-swap ( cas), которая проверяет и условно обновляет местоположение в памяти: если местоположение содержит ожидаемое старое значение, casзаменяет его заданным новым значением; затем он возвращает указание на то, было ли сделано изменение. Однако простая инструкция типа загрузки обычно выполняется перед , чтобы casизвлечь старое значение. Классическая проблема заключается в том, что если поток считывает (загружает) значение A , вычисляет новое значение C , а затем использует ( cas) для замены A на C , у него нет возможности узнать, заменила ли параллельная активность в другом потоке A каким-либо другим значением B , а затем восстановила A между ними. В некоторых алгоритмах (например, в тех, в которых значения в памяти являются указателями на динамически выделяемые блоки) эта проблема ABA может привести к неверным результатам. Наиболее распространенное решение использует инструкцию двойной шириныcas для обновления как указателя, так и смежного счетчика; К сожалению, такая инструкция требует специального формата инструкции для указания нескольких регистров, выполняет несколько операций чтения и записи и может иметь сложную работу шины. [2] : 48–49 

Альтернатива lr/ scболее эффективна. Обычно она требует только одной загрузки памяти, и желательно минимизировать медленные операции с памятью. Она также точна: она контролирует все доступы к ячейке памяти, а не просто гарантирует битовую комбинацию. Однако, в отличие от cas, она может разрешить оперативную блокировку , при которой два или более потоков многократно вызывают сбой инструкций друг друга. RISC-V гарантирует прямое продвижение (отсутствие оперативной блокировки), если код следует правилам синхронизации и последовательности инструкций: 1) Он должен использовать только подмножество I. 2) Чтобы предотвратить повторяющиеся промахи кэша, код (включая цикл повтора) должен занимать не более 16 последовательных инструкций. 3) Он не должен включать системные или оградительные инструкции или взятые обратные переходы между и lr. sc4) Обратная ветвь к циклу повтора должна быть исходной последовательностью. [2] : 48–49 

В спецификации приводится пример того, как использовать атомарные инструкции «чтение-модификация-запись» для блокировки структуры данных. [2] : 54 

Сжатое подмножество

Стандарт RISC-V ISA определяет, что все инструкции являются 32-битными. Это делает реализацию особенно простой, но, как и другие процессоры RISC с 32-битной кодировкой инструкций, приводит к большему размеру кода, чем в наборах инструкций с инструкциями переменной длины. [2] : 99  [52]

Чтобы компенсировать это, 32-битные инструкции RISC-V на самом деле являются 30-битными; 34 пространства кода операции зарезервировано для необязательного (но рекомендуемого) набора сжатых инструкций переменной длины, RVC, который включает 16-битные инструкции. Как и в ARM Thumb и MIPS16 , сжатые инструкции являются просто альтернативными кодировками для подмножества более крупных инструкций. В отличие от сжатых наборов ARM или MIPS, пространство было зарезервировано с самого начала, поэтому нет отдельного режима работы. Стандартные и сжатые инструкции можно свободно смешивать. [2] : 97  [52] (Буква расширения — C .) [2] : 97 

Поскольку (как и в Thumb-1 и MIPS16) сжатые инструкции представляют собой просто альтернативные кодировки (псевдонимы) для выбранного подмножества более крупных инструкций, сжатие может быть реализовано в ассемблере, и компилятору не обязательно даже знать об этом.

Прототип RVC был протестирован в 2011 году. [52] Код прототипа был на 20% меньше, чем сжатый код x86 PC и MIPS , и на 2% больше, чем код ARM Thumb-2 . [52] Он также существенно уменьшил как необходимую кэш-память, так и предполагаемое энергопотребление системы памяти. [52]

Исследователь намеревался уменьшить двоичный размер кода для небольших компьютеров, особенно встроенных компьютерных систем. Прототип включал 33 наиболее часто используемых инструкции, перекодированных в компактные 16-битные форматы с использованием кодов операций, ранее зарезервированных для сжатого набора. [52] Сжатие было выполнено на ассемблере , без изменений в компиляторе. Сжатые инструкции пропускали поля, которые часто равны нулю, использовали небольшие непосредственные значения или обращались к подмножествам (16 или 8) регистров. addiявляется очень распространенным и часто сжимаемым. [52]

Большая часть разницы в размере по сравнению с набором Thumb от ARM возникла из-за того, что RISC-V и прототип не имеют инструкций для сохранения и восстановления нескольких регистров. Вместо этого компилятор генерировал обычные инструкции, которые обращаются к стеку. Затем прототип ассемблера RVC часто преобразовывал их в сжатые формы, которые были вдвое меньше. Однако это все еще занимало больше места в коде, чем инструкции ARM, которые сохраняют и восстанавливают несколько регистров. Исследователь предложил модифицировать компилятор для вызова библиотечных процедур для сохранения и восстановления регистров. Эти процедуры, как правило, оставались бы в кэше кода и, таким образом, выполнялись бы быстро, хотя, вероятно, не так быстро, как инструкция сохранения нескольких регистров. [52]

Стандартный RVC требует периодического использования 32-битных инструкций. Несколько нестандартных предложений RVC являются полными, не требующими 32-битных инструкций, и, как говорят, имеют более высокую плотность, чем стандартный RVC. [54] [55] Другое предложение строится на них и также заявляет об использовании меньшего диапазона кодирования. [56]

Встроенное подмножество

Набор инструкций для самых маленьких встроенных ЦП (набор E) сокращен другими способами: поддерживаются только 16 из 32 целочисленных регистров. [2] : Глава 4  Все текущие расширения могут использоваться; рассматривается расширение с плавающей точкой для использования целочисленных регистров для значений с плавающей точкой. Привилегированный набор инструкций поддерживает только машинный режим, пользовательский режим и схемы памяти, которые используют перемещение адреса с базой и привязкой. [3]

Обсуждался профиль микроконтроллера для RISC-V, чтобы облегчить разработку глубоко встраиваемых систем. Он сосредоточен на более быстрой, простой поддержке языка C для прерываний, упрощенных режимах безопасности и упрощенном двоичном интерфейсе приложений POSIX . [57]

Корреспонденты также предложили меньшие, нестандартные, 16-битные ISA RV16E : несколько серьезных предложений использовали бы 16-битные инструкции C с 8 × 16-битными регистрами. [55] [54] Первоапрельская шутка предложила очень практичное решение: использовать 16 × 16-битные целочисленные регистры со стандартными ISA EIMC (включая 32-битные инструкции). Шутка заключалась в использовании переключения банков , когда 32-битный ЦП был бы явно лучше с большим адресным пространством. [58]

Привилегированный набор инструкций

ISA RISC-V включает в себя отдельную спецификацию набора привилегированных инструкций, которая в основном описывает три уровня привилегий плюс режим ортогонального гипервизора. По состоянию на декабрь 2021 года версия 1.12 ратифицирована RISC-V International. [3]

Версия 1.12 спецификации поддерживает несколько типов компьютерных систем:

  1. Системы, которые имеют только машинный режим , возможно, для простых встроенных систем,
  2. Системы с режимом машины (для простого супервизора ) и пользовательским режимом для реализации относительно безопасных встроенных систем,
  3. Системы с машинным режимом, режимом супервизора (для операционной системы) и пользовательскими режимами для типичных операционных систем.

Они примерно соответствуют системам с четырьмя кольцами привилегий и безопасности, максимум: машина, гипервизор, супервизор и пользователь. Каждый уровень также должен иметь тонкий слой стандартизированного вспомогательного программного обеспечения, которое взаимодействует с более привилегированным уровнем или оборудованием. [3]

ISA также включает режим гипервизора, который ортогонален режимам пользователя и супервизора. [59] Основной функцией является бит конфигурации, который либо разрешает коду уровня супервизора получать доступ к регистрам гипервизора, либо вызывает прерывание при доступе. Этот бит позволяет режиму супервизора напрямую обрабатывать оборудование, необходимое гипервизору. Это упрощает реализацию гипервизоров, размещенных операционной системой. Это популярный режим для запуска компьютеров масштаба склада. Для поддержки не размещенных гипервизоров бит может вызывать прерывание этих доступов к гипервизору. Конструкция также упрощает вложенность гипервизоров, в которой гипервизор работает под гипервизором, и при необходимости позволяет ядру использовать функции гипервизора в своем собственном коде ядра. В результате форма гипервизора ISA поддерживает пять режимов: машина, супервизор, пользователь, супервизор-под-гипервизором и пользователь-под-супервизором.

Спецификация набора привилегированных инструкций явно определяет аппаратные потоки , или harts . Несколько аппаратных потоков являются обычной практикой в ​​более производительных компьютерах. Когда один поток останавливается, ожидая памяти, другие часто могут продолжить работу. Аппаратные потоки могут помочь лучше использовать большое количество регистров и исполнительных блоков в быстрых неисправных процессорах. Наконец, аппаратные потоки могут быть простым и мощным способом обработки прерываний : не требуется сохранения или восстановления регистров, просто выполняется другой аппаратный поток. Однако единственный аппаратный поток, требуемый в компьютере RISC-V, — это нулевой поток. [3]

Прерывания и исключения обрабатываются вместе. Исключения вызываются выполнением инструкций, включая недопустимые инструкции и системные вызовы, в то время как прерывания вызываются внешними событиями. Существующие определения регистров управления и статуса поддерживают исключения ошибок и памяти RISC-V, а также небольшое количество прерываний, обычно через «расширенный локальный прерыватель ядра» (ACLINT). [60] Для систем с большим количеством прерываний спецификация также определяет контроллер прерываний на уровне платформы (PLIC) для координации большого количества прерываний между несколькими процессорами. Прерывания всегда начинаются на уровне машины с наивысшими привилегиями, а регистры управления каждого уровня имеют явные биты пересылки для маршрутизации прерываний в менее привилегированный код. Например, гипервизору не нужно включать программное обеспечение, которое выполняется при каждом прерывании, чтобы переслать прерывание операционной системе. Вместо этого при настройке он может установить биты для пересылки прерывания. [3]

В спецификации поддерживаются несколько систем памяти. Физическая-только подходит для самых простых встраиваемых систем. Также есть четыре системы виртуальной памяти в стиле UNIX для кэшированной памяти в системах массового хранения. Системы виртуальной памяти поддерживают MMU с четырьмя размерами, с адресами размером 32, 39, 48 и 57 бит. Все системы виртуальной памяти поддерживают страницы размером 4 КиБ, многоуровневые деревья таблиц страниц и используют очень похожие алгоритмы для обхода деревьев таблиц страниц. Все они разработаны для аппаратного или программного обхода таблиц страниц. Чтобы опционально снизить стоимость обходов таблиц страниц, страницы сверхбольшого размера могут быть конечными страницами на более высоких уровнях дерева таблиц страниц системы. SV32 поддерживается только в 32-битных реализациях, имеет двухслойное дерево таблиц страниц и поддерживает суперстраницы размером 4 МиБ. SV39 имеет трехуровневую таблицу страниц и поддерживает суперстраницы размером 2 МиБ и гигастраницы размером 1 ГиБ. Для поддержки SV39 требуется SV48. Он также имеет 4-уровневую таблицу страниц и поддерживает 2 MiB суперстраницы, 1 GiB гигастраницы и 512 GiB терастраницы. SV57 имеет 5-уровневую таблицу страниц и поддерживает 2 MiB суперстраницы, 1 GiB гигастраницы, 512 GiB терастраницы и 256 TiB петастраницы. Суперстраницы выравниваются по границам страниц для следующего наименьшего размера страницы. [3]

Манипуляция битами

Некоторые расширения ISA для битовой манипуляции были ратифицированы в ноябре 2021 года (Zba, Zbb, Zbc, Zbs). [47] Расширения Zba, Zbb и Zbs, возможно, являются расширениями стандартных целочисленных инструкций I: Zba содержит инструкции для ускорения вычисления адресов элементов массива в массивах типов данных размером 2, 4 или 8 байт (sh1add, sh2add, sh3add) и для 64 (и 128) битных процессоров при индексации беззнаковыми целыми числами (add.uw, sh1add.uw, sh2add.uw, sh3add.uw и slli.uw). Инструкции Zbb содержат операции для подсчета начальных, конечных нулевых битов или всех единичных битов в полных и 32-битных операциях слова (clz, clzw, ctz, ctzw, cpop, cpopw), реверс байтового порядка (rev8), логические инструкции с отрицанием второго входа (andn, orn, xnor), знаковое и нулевое расширение (sext.b, sext.h, zext.h), которые не могли быть предоставлены как особые случаи других инструкций (andi, addiw, add.wu), минимум и максимум (знаковых и беззнаковых) целых чисел, (левый и правый) циклический сдвиг битов в регистре и 32-битных словах (rori, roriw, ror, rorw, rol, rolw), а также побайтовую операцию «или объединить», которая позволяет обнаружить нулевой байт в полном регистре, что полезно для обработки функций строк с нулевым завершением в стиле C. Расширение Zbs позволяет устанавливать, получать, очищать и переключать отдельные биты в регистре по их индексу (bseti, bset, bexti, bext, bclri, bclr, binvi,binv).

Расширение Zbc имеет инструкции для "умножения без переноса", которое выполняет умножение многочленов над полем Галуа GF(2) (clmul, clmulh, clmulr). Они полезны для криптографии и проверки целостности данных с помощью CRC.

При правильном выполнении более специализированное подмножество битовых манипуляций может помочь в криптографических, графических и математических операциях. Дополнительные инструкции, которые обсуждались, включают инструкции для сдвига единиц, обобщенного битового реверса, перестановки перестановок и перекрестных перестановок, битовое поле, извлечение и упаковку двух слов, байтов или полуслов в один регистр, инструкции CRC, операции с битовой матрицей (только RV64), условное смешивание, условный перенос, сдвиги воронки. Критерии для включения, задокументированные в проекте, соответствовали философии RISC-V и форматам ISA, существенным улучшениям в плотности кода или скорости (т. е., по крайней мере, сокращению инструкций в соотношении 3 к 1) и существенным реальным приложениям, включая поддержку уже существующего компилятора. Версия 0.93 расширения битовых манипуляций включает эти инструкции; [61] некоторые из них теперь находятся в версии 1.0.1 расширения скалярных и энтропийных исходных инструкций криптографии. [49]

Упакованный SIMD

Инструкции с упакованной SIMD широко используются коммерческими процессорами для недорогого ускорения обработки мультимедиа и других цифровых сигналов . [25] Для простых, недорогих систем RISC-V базовая спецификация ISA предлагала использовать биты регистров с плавающей точкой для выполнения параллельной арифметики подслов с одной инструкцией и несколькими данными ( SIMD ).

В 2017 году поставщик опубликовал более подробное предложение в списке рассылки, и его можно назвать версией 0.1. [62] По состоянию на 2019 год эффективность этого предлагаемого ISA варьируется от 2x до 5x базового ЦП для различных кодеков DSP. [63] В предложении отсутствовали форматы инструкций и лицензия на RISC-V International, но оно было рассмотрено списком рассылки. [62] Некоторые непопулярные части этого предложения заключались в том, что оно добавляло код условия, первый в конструкции RISC-V, связывало соседние регистры (также первый) и имело счетчик циклов, который может быть сложно реализовать в некоторых микроархитектурах.

Векторный набор

Предложенный набор инструкций векторной обработки может сделать упакованный набор SIMD устаревшим. Разработчики надеются иметь достаточную гибкость, чтобы ЦП мог реализовать векторные инструкции в регистрах стандартного процессора. Это позволило бы реализовать минимальные реализации с производительностью, аналогичной мультимедийной ISA, как указано выше. Однако настоящий векторный сопроцессор мог бы выполнять тот же код с более высокой производительностью. [64]

По состоянию на 19 сентября 2021 года версия расширения вектора составляет 1.0. [65] Это консервативная, гибкая конструкция универсального векторного процессора смешанной точности, подходящего для выполнения вычислительных ядер . Код будет легко переноситься на процессоры с разной длиной вектора, в идеале без перекомпиляции. [64]

Напротив, короткие векторные расширения SIMD менее удобны. Они используются в x86 , ARM и PA-RISC . В них изменение ширины слова приводит к изменению набора инструкций для расширения векторных регистров (в случае x86, с 64-битных регистров MMX на 128-битные потоковые расширения SIMD (SSE), на 256-битные расширенные векторные расширения (AVX) и AVX-512 ). Результатом является растущий набор инструкций и необходимость переноса рабочего кода на новые инструкции.

В векторной ISA RISC-V вместо фиксации длины вектора в архитектуре доступны инструкции ( vsetvli, vsetivli, и ), которые берут запрошенный размер и устанавливают длину вектора на минимум аппаратного предела и запрошенного размера. Таким образом, предложение RISC-V больше похоже на конструкцию длинных векторов Cray или масштабируемое векторное расширение ARM. То есть, каждый вектор из 32 векторов имеет одинаковую длину. [65] : 25 vsetvl

Приложение указывает общую ширину вектора, которую оно требует, а процессор определяет длину вектора, которую он может предоставить с доступными ресурсами на кристалле. Это принимает форму инструкции ( vsetcfg) с четырьмя непосредственными операндами, указывающими количество векторных регистров каждой доступной ширины, которая необходима. Общее количество не должно превышать адресуемый предел 32, но может быть меньше, если приложению не требуются все из них. Длина вектора ограничена доступным хранилищем на кристалле, деленным на количество байтов хранилища, необходимых для каждой записи. (Также могут существовать дополнительные аппаратные ограничения, которые, в свою очередь, могут разрешить реализации в стиле SIMD.) [64]

За пределами векторных циклов приложение может обнулить количество запрошенных векторных регистров, избавляя операционную систему от необходимости сохранять их при переключениях контекста . [64]

Длина вектора не только архитектурно изменчива, но и спроектирована так, чтобы изменяться во время выполнения. Для достижения этой гибкости набор инструкций, вероятно, будет использовать пути данных переменной ширины и операции переменного типа с использованием полиморфной перегрузки. [64] План заключается в том, что они могут уменьшить размер и сложность ISA и компилятора. [64]

Недавние экспериментальные векторные процессоры с путями передачи данных переменной ширины также демонстрируют прибыльное увеличение количества операций в секунду (скорость), площади (более низкая стоимость) и ватт (более длительный срок службы батареи). [66]

В отличие от типичного современного графического процессора , не планируется предоставлять специальное оборудование для поддержки предикации ветвления . Вместо этого будет использоваться более дешевая предикация на основе компилятора. [64] [67]

Внешняя отладочная система

Существует предварительная спецификация для отладчика с аппаратной поддержкой RISC-V . Отладчик будет использовать транспортную систему, такую ​​как Joint Test Action Group ( JTAG ) или Universal Serial Bus ( USB ) для доступа к отладочным регистрам. Стандартный интерфейс отладки оборудования может поддерживать либо стандартизированный абстрактный интерфейс , либо подачу инструкций . [68] [69]

По состоянию на январь 2017 года точная форма абстрактного интерфейса остаётся неопределённой, но предложения включают в себя систему отображения памяти со стандартизированными адресами для регистров отладочных устройств или регистра команд и регистра данных, доступных для системы связи. [ 68] Корреспонденты утверждают, что похожие системы используются интерфейсом фонового режима отладки (BDM) Freescale для некоторых процессоров, ARM , OpenRISC и LEON от Aeroflex . [68]

В подаче инструкций ЦП обрабатывает исключение отладки для выполнения отдельных инструкций, записанных в регистр. Это может быть дополнено регистром передачи данных и модулем для прямого доступа к памяти. Подача инструкций позволяет отладчику получать доступ к компьютеру точно так же, как это делает программное обеспечение. Это также минимизирует изменения в ЦП и адаптируется ко многим типам ЦП. Было сказано, что это особенно подходит для RISC-V, поскольку он разработан явно для многих типов компьютеров. Регистр передачи данных позволяет отладчику записывать цикл перемещения данных в ОЗУ, а затем выполнять цикл для перемещения данных в компьютер или из него со скоростью, близкой к максимальной скорости канала данных отладочной системы. [ 68] Корреспонденты говорят, что похожие системы используются MIPS Technologies MIPS , Intel Quark , Tensilica Xtensa и для интерфейса фонового режима отладки (BDM) ЦП Freescale Power ISA . [68]

Поставщик предложил подсистему аппаратной трассировки для стандартизации, предоставил соответствующий дизайн и инициировал обзор. [70] [71] Предложение касается аппаратного модуля, который может отслеживать выполнение кода на большинстве процессоров RISC-V. Чтобы снизить скорость передачи данных и разрешить более простые или менее затратные пути для данных трассировки, предложение не генерирует данные трассировки, которые могут быть вычислены из двоичного образа кода. Оно отправляет только данные, которые указывают на «невыводимые» пути через программу, например, какие условные переходы выполняются. Чтобы снизить скорость передачи данных, ветви, которые могут быть вычислены, например безусловные переходы, не трассируются. Предлагаемый интерфейс между модулем и блоком управления представляет собой логический сигнал для каждого невыводимого типа инструкции. Адреса и другие данные должны быть предоставлены в специализированной шине, подключенной к соответствующим источникам данных в ЦП. Структура данных, отправляемая внешнему блоку трассировки, представляет собой серию коротких сообщений с необходимыми данными. Подробности канала данных намеренно не описаны в предложении, поскольку несколько из них, вероятно, будут иметь смысл.

Реализации

Организация RISC-V ведет список реализаций ЦП и СнК RISC-V. [72] Из-за торговых войн и возможных санкций, которые помешали бы Китаю получить доступ к фирменным ISA, с 2023 года страна планировала перевести большую часть своих архитектур ЦП и МКУ на ядра RISC-V. [73]

В 2023 году Европейский союз должен был предоставить 270 миллионов евро в рамках так называемого Рамочного соглашения о партнерстве (FPA) одной компании, которая могла и хотела бы реализовать проект по разработке процессора RISC-V, нацеленного на суперкомпьютеры, серверы и центры обработки данных. [74] Целью Европейского союза было стать независимым от политических событий в других странах и «укрепить свой цифровой суверенитет и установить стандарты, а не следовать чужим». [75]

Существующий

Существующие фирменные реализации включают:

В разработке

С открытым исходным кодом

Аппаратное обеспечение конечного пользователя

Компания DeepComputing из Гонконга объявила о выпуске 13 апреля 2023 года «первого в мире ноутбука с процессором RISC-V»; ноутбук под названием «ROMA» был доставлен первым покупателям в августе 2023 года [160] и поставлялся с предустановленной китайской операционной системой openKylin Linux. [161] Базовая модель устройства, доступная на Alibaba , по-прежнему была дорогой и стоила около 1500 долларов США [162], учитывая, что она работала на не очень быстром [163] процессоре Alibaba (DAMO) «XuanTie C910».

Обновление в июне 2024 года удвоило количество ядер до 8 и увеличило тактовую частоту до 2 ГГц (с 1,5 ГГц), одновременно снизив цену до 1000 долларов США. [164] Сотрудничество с Canonical [165] означало, что ROMA II поставлялся с предустановленным основным международным дистрибутивом Linux Ubuntu . [166]

Программное обеспечение

Обычной проблемой для нового набора инструкций является как отсутствие конструкций ЦП, так и программного обеспечения, что ограничивает его использование и снижает его принятие. [20] Помимо того, что уже имеется большое количество конструкций аппаратного обеспечения ЦП, RISC-V также поддерживается инструментальными цепочками, операционными системами (например, Linux ), промежуточным программным обеспечением [ неопределенно ] и программным обеспечением для проектирования.

Доступные программные инструменты RISC-V включают набор инструментов GNU Compiler Collection (GCC) (с отладчиком GDB ), набор инструментов LLVM , симулятор OVPsim (и библиотеку моделей быстрых процессоров RISC-V), симулятор Spike и симулятор в QEMU (RV32GC/RV64GC). JEP 422: порт Linux/RISC-V уже интегрирован в основной репозиторий OpenJDK . Сборки Java 21+ Temurin OpenJDK для RISC-V доступны на Adoptium .

Поддержка операционной системы существует для ядра Linux , FreeBSD , NetBSD и OpenBSD , но инструкции режима супервизора не были стандартизированы до версии 1.11 привилегированной спецификации ISA, [3] , поэтому эта поддержка является предварительной. Предварительный порт FreeBSD на архитектуру RISC-V был выпущен в феврале 2016 года и поставлялся в FreeBSD 11.0. [167] [116]

Порты дистрибутивов Debian [168] [169] и Fedora [170] Linux , а также порт Haiku [171] стабилизируются (все поддерживают только 64-битную версию RISC-V , без планов поддержки 32-битной версии). В июне 2024 года гонконгская компания DeepComputing объявила о коммерческой доступности первого в мире ноутбука RISC-V, на котором будет работать популярная операционная система Linux Ubuntu в ее стандартной форме («из коробки»). [14] «Поскольку RISC-V становится конкурентоспособной ISA на нескольких рынках, портирование Ubuntu на RISC-V в качестве эталонной ОС [операционной системы] для первых последователей было естественным выбором», — заявила в июне 2024 года компания-разработчик Ubuntu Canonical. [172]

Существует порт Das U-Boot . [173] UEFI Spec v2.7 определила привязку RISC-V, а порт TianoCore был сделан инженерами HPE [174] и, как ожидается, будет передан. Существует предварительный порт микроядра seL4 . [175] [176] Hex Five выпустила первый стек Secure IoT для RISC-V с поддержкой FreeRTOS . [177] Также был перенесен xv6 , современная переработка Sixth Edition Unix в ANSI C , используемая в педагогических целях в MIT . Pharos RTOS была перенесена на 64-битный RISC-V [178] (включая защиту времени и памяти). Также см. Сравнение операционных систем реального времени .

Существует симулятор для запуска системы RISC-V Linux в веб-браузере с использованием JavaScript . [179] [180] [181]

QEMU поддерживает запуск (используя двоичную трансляцию ) 32- и 64-битных систем RISC-V (например, Linux) со многими эмулированными или виртуализированными устройствами (последовательными, параллельными, USB, сетевыми, хранилищами, часами реального времени, сторожевыми таймерами, аудио), а также запуск двоичных файлов RISC-V Linux (транслируя системные вызовы в ядро ​​хоста). Он поддерживает многоядерную эмуляцию (SMP). [182]

Симулятор Creator является переносимым и позволяет пользователю изучать различные языки ассемблера разных процессоров (Creator имеет примеры с реализацией инструкций RISC-V и MIPS32). [183] ​​[184] [185] [186] [187]

Для создания ядер IP RISC-V было применено несколько языков, включая язык описания оборудования на основе Scala , Chisel , [188], который может свести проекты к Verilog для использования в устройствах, и язык описания процессоров CodAL, который использовался для описания ядер процессоров RISC-V и для создания соответствующих HDK ( RTL , testbench и UVM ) и SDK. [189] У Международной целевой группы по соблюдению требований RISC-V есть репозиторий GitHub для RV32IMC. [190]

Инструменты разработки

Смотрите также

Примечания

  1. ^ Big и bi-endianness поддерживаются через нестандартные варианты; инструкции всегда little-endian. [2] : vi, 9–10 
  2. ^ Обозначение V (римская цифра «5») представляет RISC-V как архитектуру 5-го поколения компьютеров с сокращенным набором команд (RISC) , которая разрабатывалась в Калифорнийском университете в Беркли с 1981 года. [4]

Ссылки

  1. ^ Асанович, Крсте ; Паттерсон, Дэвид А. (6 августа 2014 г.). Наборы инструкций должны быть свободными: аргументы в пользу RISC-V (PDF) . Кафедра EECS, Калифорнийский университет в Беркли. UCB/EECS-2014-146.
  2. ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc Уотерман, Эндрю; Асанович, Крсте , ред. (декабрь 2019 г.). «Руководство по набору команд RISC-V, том I: ISA уровня пользователя, версия документа 20191213» (PDF) . Фонд RISC-V . Проверено 5 ноября 2021 г.
  3. ^ abcdefghijkl Уотерман, Эндрю; Асанович, Крсте (3 декабря 2021 г.). "Руководство по набору инструкций RISC-V, том II: версия документа Privileged Architecture 20211203" (PDF) . RISC-V International . Получено 5 ноября 2021 г. .
  4. ^ Уркухарт, Родди (29 марта 2021 г.). «Что означает RISC-V? Краткая история открытой ISA». Системы и проектирование: Мнение . Полупроводниковая инженерия.
  5. ^ "О RISC-V". RISC-V International.
  6. ^ «RISC-V перенесет штаб-квартиру в Швейцарию на фоне опасений торговой войны». EE Times Europe. 28 ноября 2019 г.
  7. ^ "Часто задаваемые вопросы (FAQ) – RISC-V International" . Получено 20 августа 2024 г.
  8. ^ «Linux 5.17 добавляет поддержку «первой пригодной к использованию, недорогой платформы RISC-V» | Майкл Ларабель, Phoronix – RISC-V International». 2022 . Получено 20 августа 2024 .
  9. ^ "RISC-V - Debian Wiki". wiki.debian.org . Получено 13 августа 2024 г. .
  10. ^ "riscv64 теперь официальная архитектура". lists.debian.org . Получено 13 августа 2024 г. .
  11. ^ "RISC-V - Debian Wiki". wiki.debian.org . Получено 13 августа 2024 г. .
  12. ^ Антон Шилов (20 марта 2024 г.). «Alibaba утверждает, что в этом году выпустит процессор RISC-V серверного класса». Tom's Hardware . Получено 19 августа 2024 г.
  13. ^ Коннатсер, Мэтью (13 августа 2024 г.). «Akeana дебютирует с проектами ЦП RISC-V с бюджетом в 100 млн долларов, жаждет армрестлинга». The Register . Получено 19 августа 2024 г.
  14. ^ ab Connatser, Matthew. «Первый в мире ноутбук RISC-V с предустановленной Ubuntu рекламирует интеллектуальные возможности искусственного интеллекта и восьмиядерный чип». The Register . Получено 19 августа 2024 г.
  15. ^ ab Waterman, Andrew; Asanović, Krste (7 мая 2017 г.). "Руководство по набору инструкций RISC-V, том I: Базовый пользовательский уровень ISA версии 2.2" (PDF) . RISC-V International . Получено 5 ноября 2021 г. .
  16. ^ Ньюсом, Тим; Вакс, Меган (22 марта 2019 г.). "RISC-V External Debug Support Version 0.13.2 d5029366d59e8563c08b6b9435f82573b603e48e" (PDF) . RISC-V International . Получено 7 ноября 2021 г. .
  17. ^ Демерджян, Чак (7 августа 2013 г.). «Длинный взгляд на то, как ARM лицензирует чипы: Часть 1». SemiAccurate.
  18. ^ Демерджян, Чак (8 августа 2013 г.). «Как ARM лицензирует свою IP для производства: Часть 2». SemiAccurate.
  19. ^ «Wave Computing закрывает свою MIPS Open Initiative с немедленным эффектом, без предупреждения». 15 ноября 2019 г.
  20. ^ abcdef Асанович, Крсте . «Наборы инструкций должны быть свободными» (PDF) . Технические отчеты Калифорнийского университета в Беркли. Регенты Калифорнийского университета . Получено 15 ноября 2016 г.
  21. ^ "Rocket Core Generator". RISC-V . Regents of the University of California. Архивировано из оригинала 6 октября 2014 года . Получено 1 октября 2014 года .
  22. ^ ab Celio, Christopher; Love, Eric. "riscv-sodor: образовательные микроархитектуры для risc-v isa". GitHub . Regents of the University of California . Получено 25 октября 2019 г.
  23. ^ ab "Программы процессора SHAKTI". Индийский технологический институт Мадраса . Получено 3 сентября 2019 г.
  24. ^ Celio, Christopher. "CS 152 Laboratory Exercise 3" (PDF) . Калифорнийский университет в Беркли . Регенты Калифорнийского университета. Архивировано из оригинала (PDF) 12 февраля 2015 г. . Получено 12 февраля 2015 г. .
  25. ^ abcde Waterman, Andrew; Asanović, Krste (31 мая 2016 г.). "Руководство по набору инструкций RISC-V, том I: Базовый пользовательский уровень ISA версии 2.1" (PDF) . Калифорнийский университет в Беркли. EECS-2016-118 . Получено 5 ноября 2021 г. .
  26. ^ ab Patterson, David A. ; Ditzel, David R. (октябрь 1980 г.). «Дело в пользу компьютера с сокращенным набором команд». ACM SIGARCH Computer Architecture News . 8 (6): 25. doi :10.1145/641914.641917. S2CID  12034303.
  27. ^ "Amber ARM-совместимое ядро". OpenCores . Получено 26 августа 2014 г.
  28. ^ "ARM4U". OpenCores . Получено 26 августа 2014 г.
  29. ^ "Архитектуры ЦП — Документация ядра Linux". docs.kernel.org . Получено 20 августа 2024 г. .
  30. ^ Александр Костович (12 июля 2021 г.). «Libre-SOC выпускает первый не-IBM OpenPOWER чип за десятилетие». Tom's Hardware . Получено 20 августа 2024 г.
  31. ^ Нгуен, Фук-Винь; Тран, Ти-Тху-Транг; Диеп, Фуок-Лок; Ле, Дук-Хунг (сентябрь 2018 г.). «Маломощная реализация ASIC многоядерного процессора OpenSPARC T1 на 90-нм КМОП-процессе». 12-й международный симпозиум IEEE 2018 г. по встраиваемым многоядерным/многоядерным системам на кристалле (MCSoC) . IEEE. стр. 95–100. doi :10.1109/MCSoC2018.2018.00027. ISBN 978-1-5386-6689-0.
  32. ^ Чен, Тони; Паттерсон, Дэвид (24 января 2016 г.). Генеология RISC-V (технический отчет). Калифорнийский университет в Беркли. UCB/EECS-2016-6.
  33. ^ Samples, Alan Dain; Klein, Mike; Foley, Pete (1985). Архитектура SOAR (технический отчет). Калифорнийский университет, Беркли. UCB/CSD-85-226.
  34. ^ Хилл, Марк Дональд и др. (Сьюзан Дж. Эггерс, Джеймс Ричард Ларус, Джордж С. Тейлор, Гленн Д. Адамс, Бидют Кумар Бозе, Гарт А. Гибсон, Пол Марк Хансен, Джон Келлер, Шинг И. Конг, Коринна Грейс Ли, Дэбум Ли, Дж. М. Пендлтон, Скотт Аллен Ричи, Дэвид А. Вуд, Бенджамин Г. Зорн, Пол Н. Хилфингер, ДА Ходжес, Рэнди Х. Кац, Джон К. Оустерхаут и Дэвид А. Паттерсон ) (декабрь 1985 г.). SPUR: Многопроцессорная рабочая станция СБИС (технический отчет). Калифорнийский университет в Беркли. UCB/CSD-86-273.
  35. ^ "Contributors". riscv.org . Regents of the University of California. Архивировано из оригинала 7 сентября 2018 года . Получено 25 августа 2014 года .
  36. ^ Асанович, Крсте . "Руководство по набору инструкций RISC-V, том I: Базовый пользовательский уровень ISA" (PDF) . Технические отчеты Калифорнийского университета в Беркли. Регенты Калифорнийского университета . Получено 13 мая 2011 г.
  37. ^ Хруска, Джоэл (21 августа 2014 г.). «RISC снова на коне: новая архитектура RISC-V надеется побороться с ARM и x86, будучи полностью открытой». ExtremeTech .
  38. ^ "RISC-V History" . Получено 28 января 2023 г. .
  39. ^ «Новый проект микропроцессоров бросает вызов гигантам отрасли». The Economist . 3 октября 2019 г. ISSN  0013-0613 . Получено 10 ноября 2019 г.
  40. ^ "Design Automation Conference". dac.com . Получено 6 февраля 2021 г. .
  41. ^ "Участники". RISC-V International . Получено 1 августа 2023 г.
  42. ^ "Американская группа по производству чипов переезжает в Швейцарию из-за опасений по поводу ограничений торговли". Reuters . 26 ноября 2019 г. Получено 26 ноября 2019 г.
  43. ^ Чунг, Санни (15 декабря 2023 г.). «Изучение грандиозной стратегии Китая для RISC-V». China Brief . Jamestown Foundation . Получено 18 декабря 2023 г.
  44. ^ "RISC-V History - RISC-V International". RISC-V International . Получено 14 мая 2020 г. .
  45. ^ "Branding Guidelines – RISC-V International" . Получено 23 июня 2024 г. .
  46. ^ "The Linley Group объявляет победителей ежегодной премии Analysts' Choice Awards" (пресс-релиз). The Linley Group. 12 января 2017 г. Получено 21 января 2018 г.
  47. ^ ab "Расширения ISA для манипуляции битами" (PDF) . RISC-V International. Ноябрь 2021 г.
  48. ^ "Vector Extension". RISC-V International. Ноябрь 2021 г.
  49. ^ ab "RISC-V Cryptography Extensions Volume I Scalar & Entropy Source Instructions" (PDF) . GitHub . 18 февраля 2022 г. . Получено 28 января 2023 г. .
  50. ^ "Профили RISC-V". Обсуждение . 2022.
  51. ^ Горизонтальный подкомитет платформы RISC-V (декабрь 2021 г.). "Спецификация платформы RISC-V" (PDF) . Версия 0.3-черновик.
  52. ^ abcdefghi Уотерман, Эндрю (13 мая 2011 г.). Повышение энергоэффективности и сокращение размера кода с помощью RISC-V Compressed. Калифорнийский университет в Беркли: Регенты Калифорнийского университета. стр. 32. Получено 25 августа 2014 г.
  53. ^ Уотерман, Эндрю и др. «Руководство по сжатому набору инструкций RISC-V, версия 1.9 (черновик)» (PDF) . RISC-V . Получено 18 июля 2016 г. .
  54. ^ ab Brussee, Rogier. "Полный 16-битный RVC". Google Groups . RISC-V Foundation . Получено 18 июля 2019 г.
  55. ^ ab Brussee, Rogier. "Предложение: Xcondensed, [a] ... Compact ... 16-битный автономный G-ISA". Почтовый сервер RISC-V ISA . Группы Google . Получено 10 ноября 2016 г.
  56. ^ Phung, Xan. «Улучшенный Xcondensed». Google Groups . RISC-V Foundation . Получено 18 июля 2019 г.
  57. ^ Ионеску, Ливиу. «Профиль микроконтроллера RISC-V». Гитхаб . Проверено 5 апреля 2018 г.
  58. ^ Barros, Cesar (1 апреля 2018 г.). "Предложение: RV16E". Разработчики RISC-V ISA (список рассылки) . Получено 2 апреля 2018 г.
  59. ^ Бонзини, Паоло; Уотерман, Эндрю. «Предложение по виртуализации без режима H». Разработчики RISC-V ISA (список рассылки) . Получено 24 февраля 2017 г.
  60. ^ "riscv-aclint/riscv-aclint.adoc в основном · riscv/riscv-aclint" . Гитхаб . Проверено 2 января 2024 г.
  61. ^ Wolf, Claire, ed. (10 января 2021 г.). "RISC-V Bitmanip Extension Document Version 0.93" (PDF) . GitHub . RISC-V Foundation . Получено 9 марта 2021 г. .
  62. ^ ab "Краткое изложение инструкций для предложения ISA "P"". Группы Google . ANDES Technologies . Получено 13 января 2020 г.
  63. ^ Су, Чарли (30 июня 2018 г.). «Комплексные решения RISC-V для AIoT» (PDF) . Содержание RISC-V . Фонд RISC-V . Получено 28 января 2023 г. .
  64. ^ abcdefg Шмидт, Колин; Оу, Альберт; Ли, Юнсуп; Асанович, Крсте . "RISC-V Vector Extension Proposal" (PDF) . RISC-V . Регенты Калифорнийского университета . Получено 14 марта 2016 г.
  65. ^ ab "Выпуск Vector Extension 1.0, заморожен для публичного обзора · riscv/Riscv-v-spec". GitHub .
  66. ^ Оу, Альберт; Нгуен, Куан; Ли, Юнсуп; Асанович, Крсте . «Дело в пользу MVP: векторные процессоры смешанной точности» (PDF) . UC Berkeley EECS . Регенты Калифорнийского университета. Архивировано из оригинала (PDF) 15 марта 2016 г. . Получено 14 марта 2016 г.
  67. ^ Ли, Юнсап; Гровер, Винод; Крашинский, Ронни; Стивенсон, Марк; Кеклер, Стивен В.; Асанович, Крсте . «Изучение пространства проектирования управления расхождением SPMD в архитектурах с параллельными данными» (PDF) . Сайт EECS в Беркли . Члены правления Калифорнийского университета. Архивировано из оригинала (PDF) 15 марта 2016 г. Получено 14 марта 2016 г.
  68. ^ abcde Брэдбери, Алекс; Валлентовиц, Стефан. "RISC-V Run Control Debug". Google Docs . RISC-V Foundation . Получено 20 января 2017 г. .
  69. ^ Ньюсом, Тим. "RISC-V Debug Group > результаты опроса". Google Groups, RISC-V Debug Group . RISC-V Foundation . Получено 20 января 2017 г.
  70. ^ McGooganus. "riscv-trace-spec". GitHub . Получено 13 января 2020 г.
  71. ^ Дахад, Нитин (7 декабря 2019 г.). «UltraSoC решает проблему поддержки RISC-V, пожертвовав Trace Encoder». EE Times . Aspencore . Получено 13 января 2020 г. .
  72. ^ "RISC-V Cores and SoC Overview". RISC-V. 25 сентября 2019 г. Получено 5 октября 2019 г.
  73. ^ «Китай делает ставку на будущее RISC-V». 8 января 2024 г. Получено 7 мая 2024 г.
  74. ^ «270 миллионов евро для процессоров и технологий: EuroHPC для RISC-V-Technik» . heise онлайн (на немецком языке). 21 декабря 2022 года . Проверено 13 августа 2024 г.
  75. ^ «Европа, подходящая для цифровой эпохи — Европейская комиссия». commission.europa.eu . 19 февраля 2020 г. . Получено 13 августа 2024 г. .
  76. ^ "D1" . Получено 30 сентября 2021 г.
  77. ^ abc "RISC-V International Members". RISC-V International . Получено 22 января 2021 г. .
  78. ^ "На выставке CES2022 Bouffalo демонстрирует готовое решение Matter". www.eetimes.com . 17 января 2022 г. . Получено 20 января 2022 г. .
  79. ^ "CloudBEAR" . Получено 16 октября 2018 г.
  80. ^ riscv/riscv-cores-list, RISC-V, 6 февраля 2021 г. , получено 9 февраля 2021 г.
  81. ^ "Codasip анонсирует процессорные ядра RISC-V, обеспечивающие многоядерные и SIMD-возможности". www.newelectronics.co.uk . Архивировано из оригинала 23 декабря 2020 г. Получено 9 февраля 2021 г.
  82. ^ "Codasip присоединяется к RISC-V Foundation и объявляет о доступности RISC-V Compliant Codix Processor IP". Design And Reuse . Получено 9 сентября 2024 г. .
  83. ^ "3.6.2 Сопроцессор сверхнизкого энергопотребления". ESP32-S2 Family Datasheet V1.1 (PDF) . Espressif Systems. 2020 . Получено 9 июня 2020 .
  84. ^ "ESP32-C3 Family Datasheet V0.4" (PDF) . Espressif Systems. 2020 . Получено 27 декабря 2020 .
    • "Представляем ESP32-C3". Espressif (пресс-релиз). 27 ноября 2020 г.
  85. ^ Мэннерс, Дэвид (8 июня 2021 г.). «Fraunhofer licenseing failure-tolerant RISC core for safety-critical applications». Electronics Weekly . Получено 13 апреля 2022 г.
  86. ^ "GigaDevice представляет серию GD32V с ядром RISC-V в совершенно новом 32-битном микроконтроллере общего назначения". www.gigadevice.com . 23 августа 2019 г. Архивировано из оригинала 29 августа 2019 г. Получено 29 августа 2019 г.
  87. ^ "Sipeed Longan Nano - RISC-V GD32VF103CBT6 Development Board". www.seeedstudio.com . Получено 29 августа 2019 г. .
  88. ^ Клейдермахер, Дэйв; Сид, Джесси; Барбелло, Брэндон (27 октября 2021 г.). «Pixel 6: Устанавливаем новый стандарт мобильной безопасности». Блог безопасности Google . Архивировано из оригинала 27 октября 2021 г. Получено 12 февраля 2023 г.
  89. ^ "GreenWaves GAP8 — это маломощный процессор RISC-V IoT, оптимизированный для приложений искусственного интеллекта". CNXSoft: Embedded Systems News . 27 февраля 2018 г. Получено 4 марта 2018 г.
  90. ^ Ёсида, Дзюнко (26 февраля 2018 г.). «ИИ приходит в сенсорные устройства». EE Times . Получено 10 июля 2018 г.
  91. ^ «GreenWaves Technologies объявляет о выпуске комплекта средств разработки программного обеспечения GAP8 и платы разработки GAPuino» (пресс-релиз). 22 мая 2018 г.
  92. ^ "IMG RTXM-2200 CPU". Воображение . Получено 30 сентября 2023 .
  93. ^ Лейбсон, Стивен (9 января 2023 г.). «MIPS выпускает свое первое процессорное ядро ​​RISC-V – это большой 'Un». EEJournal .
  94. ^ Робинсон, Дэн (11 мая 2022 г.). «MIPS раскрывает первые чипы RISC-V, которые появятся в четвертом квартале 2022 года». The Register .
  95. ^ Шилов, Антон (9 декабря 2020 г.). «Seagate разрабатывает собственные ядра RISC-V для контроллеров хранения данных». Tom's Hardware .
  96. ^ "HiFive1". SiFive . Архивировано из оригинала 26 февраля 2017 . Получено 10 июля 2018 .
  97. ^ SiFive. "Hi-Five1: Open-source Arduino-Compatible Development Kit". Crowd Supply . Получено 2 декабря 2016 г.
  98. ^ "FU540 SoC CPU". SiFive . Архивировано из оригинала 5 октября 2018 . Получено 24 октября 2018 .
  99. ^ Хорвиц, Джош (23 марта 2023 г.). «Китайский поисковый гигант Baidu инвестирует в стартап StarFive, занимающийся технологией чипов RISC-V». Reuters .
  100. ^ Шарвуд, Саймон (27 марта 2023 г.). «Китайский веб-гигант Baidu поддерживает RISC-V для центра обработки данных». The Register .
  101. ^ "Syntacore" . Получено 11 декабря 2018 г. .
  102. ^ ab "SCR1 — это высококачественное ядро ​​микроконтроллера RISC-V с открытым исходным кодом на языке Verilog". GitHub . Syntacore . Получено 13 января 2020 г. .
  103. ^ "Материалы семинара RISC-V". 11 декабря 2016 г. Получено 28 января 2023 г.
  104. ^ "WinChipHead (WCH)".
  105. ^ "CH32V003". WCH-IC . Получено 10 июля 2023 г. .
  106. ^ "the-10-cent-risc-v-processor-ch32v003". EEvblog . Получено 10 июля 2023 г. .
  107. ^ Мэннерс, Дэвид (23 ноября 2016 г.). «Codasip и UltraSoC объединяются на RISC-V». Electronics Weekly . Metropolis International Group, Ltd . Получено 23 ноября 2016 г. .
  108. ^ Desikan, Shubashree (6 августа 2018 г.). «IIT-Madras powers ups a desi chip» . The Hindu . ISSN  0971-751X . Получено 25 сентября 2020 г. .
  109. ^ ab "Встречайте индийский чип Atmanirbhar Microprocessor 'Moushik', предназначенный для устройств IoT". WION . 24 сентября 2020 г. Получено 25 сентября 2020 г.
  110. ^ Добберштейн, Лора. "Индийский домашний процессор RISC-V дебютирует на дешевой плате разработчика". The Register . Получено 6 марта 2024 г.
  111. ^ Эшенден, Питер (9 ноября 2016 г.). "Re: [isa-dev] RISC V ISA для встраиваемых систем". Разработчики RISC-V ISA (список рассылки) . Получено 10 ноября 2016 г. В ASTC (www.astc-design.com) у нас есть реализация RV32EC как синтезируемого IP-ядра, предназначенного для небольших встраиваемых приложений, таких как интеллектуальные датчики и IoT.
  112. ^ "C-DAC объявляет Tech Conclave 2019". The Times of India . Архивировано из оригинала 17 мая 2019 года . Получено 12 апреля 2019 года .
  113. ^ Шарвуд, Саймон (19 августа 2020 г.). «Индия выбирает RISC-V для конкурса на самодостаточность в области полупроводников: используйте эти самодельные ядра для сборки комплекта». The Register . Получено 9 июля 2021 г.
  114. ^ "VEGA MICROPROCESSORS". Vega Processor - CDAC . 9 июля 2021 г. Архивировано из оригинала 9 июля 2021 г. Получено 9 июля 2021 г.
  115. ^ "Процессор NOEL-V". Cobham Gaisler . Получено 14 января 2020 г.
  116. ^ ab "FreeBSD Foundation: Первоначальный порт архитектуры FreeBSD RISC-V зафиксирован". 4 февраля 2016 г.
  117. ^ "Esperanto выходит из скрытого режима, нацеливается на ИИ с 4096-ядерным 7-нм монстром RISC-V". wikichip.org . Январь 2018 . Получено 2 января 2018 .
  118. ^ "Решение Esperanto ET-SoC-1 1092 RISC-V AI Accelerator на Hot Chips 33". 24 августа 2021 г.
  119. ^ "Проект PULPino GitHub". GitHub . Получено 2 февраля 2018 г. .
  120. ^ "PULP Platform". PULP Platform . Получено 2 февраля 2018 г.
  121. ^ "Accelerator Stream". Европейская инициатива процессоров (EPI) . Получено 22 февраля 2020 г.
  122. ^ Редмонд, Калиста (28 января 2023 г.). «Как Европейская инициатива по процессорам использует RISC-V для будущего суперкомпьютеров». Международные новости RISC-V . RISC-V International.
  123. ^ Halfacree, Gareth (10 июня 2021 г.). «Исследователи RISC-V излагают план внедрения архитектуры в высокопроизводительные вычисления». The Register . Получено 9 июля 2021 г.
  124. ^ "IIT Madras Open Source Processor Project". Rapid IO . IIT Madras. 26 августа 2014 г. Архивировано из оригинала 14 сентября 2014 г. Получено 13 сентября 2014 г.
  125. ^ "IIT Madras разрабатывает и запускает микропроцессор MOUSHIK для устройств Интернета вещей". IIT Madras . 24 сентября 2020 г. Получено 9 июля 2021 г.
  126. ^ "lowRISC website" . Получено 10 мая 2015 г. .
  127. ^ Xie, Joe (июль 2016 г.). NVIDIA RISC V Evaluation Story. 4th RISC-V Workshop . Youtube. Архивировано из оригинала 13 ноября 2021 г.
  128. ^ "RV64X: бесплатный графический процессор с открытым исходным кодом для RISC-V". EETimes . 27 января 2021 г. Получено 9 февраля 2021 г.
  129. ^ Фрумусану, Андрей (30 октября 2019 г.). «SiFive анонсирует первое ядро ​​ЦП RISC-V OoO: процессор серии U8 IP». Anandtech .
  130. ^ Гвеннап, Линли (13 декабря 2021 г.). «Ventana разрабатывает чиплет RISC-V». Отчет о микропроцессорах .
  131. ^ Дахад, Нитин (6 сентября 2021 г.). «Стартап по разработке чиплетов RISC-V привлекает $38 млн, ориентируется на вычисления в центрах обработки данных». EE Times .
  132. ^ "研究布局" . damo.alibaba.com . Проверено 13 августа 2024 г.
  133. ^ "Tech to the Future". damo.alibaba.com . Получено 13 августа 2024 г. .
  134. ^ «Китайская Alibaba создает 16-ядерный процессор RISC-V с частотой 2,5 ГГц». www.techspot.com . 28 июля 2019 г. . Получено 30 июля 2019 г. .
  135. ^ "Alibaba открывает исходные коды четырех ядер RISC-V: XuanTie E902, E906, C906 и C910". 20 октября 2021 г. Получено 20 октября 2021 г.
  136. ^ «Изучение грандиозной стратегии Китая для RISC-V». jamestown.org . Получено 13 августа 2024 г. .
  137. ^ Антон Шилов (20 марта 2024 г.). «Alibaba утверждает, что в этом году выпустит процессор RISC-V серверного класса». Tom's Hardware . Получено 14 сентября 2024 г.
  138. ^ Асанович, Крсте ; и др. «ракетный чип». Гитхаб . RISC-V International . Проверено 11 ноября 2016 г.
  139. ^ Celio, Christopher. "riscv-boom". GitHub . Regents of the University of California . Получено 29 марта 2020 г.
  140. ^ Репозиторий XiangShan на Github
  141. ^ XiangShan — 64-битный процессор RISC-V с открытым исходным кодом, который станет конкурентом Arm Cortex-A76 — CNX Software
  142. ^ Halfacree, Gareth (6 июля 2021 г.). «Китайские разработчики чипов надеются превзойти Cortex-A76 от Arm с помощью дизайна XiangShan RISC-V». The Register . Получено 13 августа 2024 г. .
  143. ^ "Offengelegter RISC-V-Chip в Китае продает ARM Cortex-A76 в Германии" . c't Magazin (на немецком языке). 30 июня 2021 г. Проверено 13 августа 2024 г.
  144. ^ ab Brown, Eric (8 декабря 2021 г.). "Дебют двух 64-битных ядер RISC-V: StarFive Dubhe и CAS Nanhu". LinuxGizmos.com . Получено 13 августа 2024 г. .
  145. ^ «Изучение грандиозной стратегии Китая для RISC-V». jamestown.org . Получено 13 августа 2024 г. .
  146. ^ Вольф, Клэр. "PicoRV32 - оптимизированный по размеру процессор RISC-V". GitHub . Получено 27 февраля 2020 г.
  147. ^ "MIPT-MIPS: точный до кремния симулятор процессоров RISC-V и MIPS". GitHub .
  148. ^ "Функции системных вызовов MIPS, доступные в MARS". courses.missouristate.edu . Получено 28 мая 2023 г. .
  149. ^ Киндгрен, Олоф. "SERV - последовательный RISC-V CPU". GitHub . Получено 25 сентября 2023 г.
  150. ^ ab Kindgren, Olof (29 декабря 2022 г.). "SERV: 32-бит — это новый 8-бит" (видео, 2:38) . YouTube . RISC-V Foundation . Получено 25 сентября 2023 г.
  151. ^ Halfacree, Gareth (14 июня 2022 г.). «CoreScore Benchmark Sees New Record with 10,000 RISC-V Cores on One FPGA». fossi-foundation.org . FOSSi Foundation . Получено 25 сентября 2023 г. .
  152. ^ Трабер, Андреас и др. «PULP: Parallel Ultra Low Power». ETH Zurich, Болонский университет . Получено 5 августа 2016 г.
  153. ^ Шилов, Антон. «Western Digital выпускает два новых ядра SweRV RISC-V для микроконтроллеров». www.anandtech.com . Получено 9 февраля 2021 г. .
  154. ^ Шилов, Антон. «Western Digital представляет ядро ​​SweRV RISC-V, инициативу Cache Coherency over Ethernet». www.anandtech.com . Получено 23 мая 2019 г.
  155. ^ "Western Digital выпускает исходный код ядра SweRV RISC-V". AB Open . 28 января 2019 г. Архивировано из оригинала 21 мая 2019 г.
  156. ^ Cores-SweRV на GitHub
  157. ^ Nolting, Stephan (2022). "neorv32". GitHub . doi :10.5281/zenodo.7030070 . Получено 9 сентября 2021 г. .
  158. Wren, Luke (8 августа 2024 г.), Wren6991/Hazard3 , получено 8 августа 2024 г.
  159. ^ Аптон, Эбен (8 августа 2024 г.). «Raspberry Pi Pico 2, наша новая плата микроконтроллера за 5 долларов, уже в продаже» . Получено 8 августа 2024 г.
  160. ^ "Первый в мире ноутбук RISC-V Roma официально доставлен: 8 ГБ ОЗУ и предустановленная отечественная ОС". Gizmochina . 17 августа 2023 г. . Получено 13 сентября 2024 г. .
  161. ^ liubing (13 апреля 2023 г.). "ROMA официально выпущена!". DeepComputing . Получено 13 сентября 2024 г. .
  162. ^ Ян Эвенден (4 октября 2022 г.). «Первый в мире ноутбук с процессором RISC-V уже доступен». Tom's Hardware . Получено 14 сентября 2024 г. .
  163. онлайн, Хайзе (13 октября 2021 г.). «Лифербар Alibabas RISC-V-Prozessor XuanTie C910» . c't Magazin (на немецком языке) . Проверено 14 сентября 2024 г.
  164. ^ Джови Моралес (13 июня 2024 г.). «Первый в мире ноутбук RISC-V получает большое обновление — DeepComputing удвоила количество ядер, увеличила тактовую частоту до 2 ГГц и добавила возможности ИИ». Tom's Hardware . Получено 14 сентября 2024 г.
  165. ^ "Первый в мире ноутбук RISC-V получает ОГРОМНОЕ обновление и оснащается Ubuntu". canonical.com . Получено 14 сентября 2024 г.
  166. ^ anisha. "Первый в мире ноутбук RISC-V получает ОГРОМНОЕ обновление и оснащается Ubuntu – RISC-V International" . Получено 14 сентября 2024 г.
  167. ^ "riscv - FreeBSD Wiki" . wiki.freebsd.org .
  168. ^ Монтезело, Мануэль. "Порт Debian GNU/Linux для RISC-V 64". Google Groups . Получено 19 июля 2018 г.
  169. ^ "RISC-V - Debian Wiki". wiki.debian.org . Получено 13 августа 2024 г. .
  170. ^ "Architectures/RISC-V". Fedora Wiki . Red Hat . Получено 26 сентября 2016 г. .
  171. ^ "Загрузка наших образов RISC-V". Haiku Project . 7 ноября 2021 г. Получено 4 марта 2023 г.
  172. ^ «Первый в мире ноутбук RISC-V получает масштабное обновление и оснащается Ubuntu». canonical.com . 13 июня 2024 г. . Получено 19 августа 2024 г. .
  173. ^ Бегари, Падмарао. "Порт U-Boot на RISC-V 32-бит доступен". Google Groups . Microsemi . Получено 15 февраля 2017 г. .
  174. ^ RiscVEdk2 на GitHub
  175. ^ Almatary, Hesham. "RISC-V, seL4". Документация seL4 . Commonwealth Scientific and Industrial Research Organisation (CSIRO) . Получено 13 июля 2018 г.
  176. ^ Almatary, Hesham. "heshamelmatary". GitHub . Получено 13 июля 2018 г.
  177. ^ "MultiZone Secure IoT Stack, первый безопасный IoT Stack для RISC-V". Hex Five Security . Hex Five Security, Inc. 22 февраля 2019 г. Получено 3 марта 2019 г.
  178. ^ "Pharos". SourceForge . Получено 1 апреля 2020 г. .
  179. ^ "ANGEL is a Javascript RISC-V ISA (RV64) Simulator that running riscv-linux with BusyBox". RISCV.org . Архивировано из оригинала 11 ноября 2018 г. . Получено 17 января 2019 г. .
  180. ^ Ли, Юнсап (5 марта 2014 г.). «Загрузите RISC-V Linux в своем веб-браузере!». RISC-V International . Получено 4 сентября 2020 г. .
  181. ^ "ANGEL – RISC-V". riscv.org.s3-website-us-west-1.amazonaws.com . Архивировано из оригинала 1 декабря 2020 г. Получено 4 сентября 2020 г.
  182. ^ "Документация/Платформы/RISCV". QEMU Wiki . Получено 7 мая 2020 г.
  183. ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуналь, Элиас; Матеос, Алехандро Кальдерон (29 мая 2024 г.). «CREATOR: Образовательная интегрированная среда разработки для программирования RISC-V». Доступ IEEE : 1–17. дои : 10.1109/ACCESS.2024.3406935 . ISSN  2169-3536.
  184. ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуньяль, Элиас; Матеос, Алехандро Кальдерон (23 июля 2021 г.). СОЗДАТЕЛЬ: Дидактический и общий симулятор для программирования в комплексе [ СОЗДАТЕЛЬ: Дидактический и универсальный симулятор для программирования на ассемблере ]. XXXI Jornadas de Paralelismo (JP20/21) (на испанском языке). Малага. дои : 10.5281/zenodo.5130302.
  185. ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуналь, Элиас; Матеос, Алехандро Кальдерон (октябрь 2021 г.). Новый универсальный симулятор для обучения программированию на ассемблере . XLVII Латиноамериканская компьютерная конференция (CLEI) 2021 г. (на испанском языке). Картаго, Коста-Рика: IEEE (опубликовано 21 декабря 2021 г.). стр. 1–9. doi : 10.1109/CLEI53233.2021.9640144. ISBN 978-1-6654-9503-5. S2CID  245387555 . Получено 2 августа 2022 г. .
  186. ^ Пример CREATOR Web с RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
  187. ^ Исходный код CREATOR на GitHub: https://github.com/creatorsim/creator
  188. ^ "Chisel: Constructing Hardware in a Scala Embedded Language". Калифорнийский университет в Беркли . Регенты Калифорнийского университета . Получено 12 февраля 2015 г.
  189. ^ "Codasip Studio". Codasip . Получено 19 февраля 2021 г. .
  190. ^ riscv/riscv-compliance, RISC-V, 12 февраля 2021 г. , получено 19 февраля 2021 г.
  191. ^ "Отладчик RISC-V". www.lauterbach.com Отладчик TRACE32 для RISC-V .
  192. ^ «Lauterbach и SiFive обеспечивают поддержку TRACE32 для высокопроизводительных ядер RISC-V». www.sifive.com .
  193. ^ "TRACE32 поддерживает трассировку SiFive RISC-V". www.lauterbach.com . Архивировано из оригинала 2 июня 2022 г. . Получено 6 марта 2021 г. .
  194. ^ "SEGGER добавляет поддержку SiFive Coreplex IP в свой ведущий в отрасли отладочный зонд J-Link" . Получено 19 сентября 2017 г. .
  195. ^ "PR: SEGGER Embedded Studio поддерживает архитектуру RISC-V" . Получено 23 ноября 2017 г. .
  196. ^ "PR: SEGGER представляет RTOS, стеки, промежуточное ПО для RISC-V" . Получено 8 декабря 2017 г. .
  197. ^ Дахад, Нитин (23 июня 2020 г.). «Siemens приобретает UltraSoC для SoC Lifecycle Product Suite». EE Times . Получено 12 июля 2023 г.

Дальнейшее чтение

Внешние ссылки