stringtranslate.com

РИСК-V

RISC-V [b] (произносится как «риск-пять» [2] : 1  ) — это открытая стандартная архитектура набора команд (ISA), основанная на установленных принципах компьютера с сокращенным набором команд (RISC). В отличие от большинства других разработок ISA, RISC-V предоставляется по бесплатным лицензиям с открытым исходным кодом . Многие компании предлагают или анонсировали оборудование RISC-V; Доступны операционные системы с открытым исходным кодом и поддержкой RISC-V, а набор инструкций поддерживается в нескольких популярных наборах программных инструментов .

В качестве 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 [5] и версия 1.11 привилегированного ISA [3] заморожены , что позволяет продолжить разработку программного и аппаратного обеспечения. ISA пользовательского пространства, теперь переименованная в Unprivileged ISA, была обновлена, ратифицирована и заморожена как версия 20191213. [2] Спецификация внешней отладки доступна в виде черновика, версия 0.13.2. [6]

Проект начался в 2010 году в Калифорнийском университете в Беркли. В настоящее время члены из более чем 70 стран вносят свой вклад и сотрудничают в разработке открытых спецификаций RISC-V. RISC-V International, некоммерческая управляющая RISC-V, в настоящее время имеет штаб-квартиру в Швейцарии . [7] [8]

Обоснование

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

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

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

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

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

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

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

История

Термин RISC появился примерно в 1980 году. [18] До этого существовало некоторое знание (см. Джона Кока ), что более простые компьютеры могут быть эффективными, но принципы проектирования не были широко описаны. Простые и эффективные компьютеры всегда представляли академический интерес, что привело к появлению набора команд RISC DLX для первого издания книги « Компьютерная архитектура: количественный подход» в 1990 году , соавтором которого был Дэвид Паттерсон , а позже он участвовал в RISC-проекте. V происхождение. DLX предназначался для использования в образовательных целях; ученые и любители реализовали его с использованием программируемых вентильных матриц (FPGA), но он никогда не предназначался для коммерческого внедрения. Процессоры ARM версии 2 и более ранних имели общедоступный набор инструкций и до сих пор поддерживаются GNU Compiler Collection (GCC), популярным компилятором бесплатного программного обеспечения . Для этой ISA существуют три ядра с открытым исходным кодом , но они никогда не производились. [19] [20] OpenRISC — это ISA с открытым исходным кодом, основанная на DLX, с соответствующими конструкциями RISC и полностью поддерживаемая реализациями GCC и Linux , хотя у нее также есть несколько коммерческих реализаций.

Крсте Асанович из Калифорнийского университета в Беркли нуждался в исследовании компьютерной системы с открытым исходным кодом, и в 2010 году он решил разработать и опубликовать ее в рамках «короткого трехмесячного проекта в течение лета» с несколькими своими коллегами. аспирантов. План заключался в том, чтобы помочь как академическим, так и промышленным пользователям. [12] Дэвид Паттерсон из Беркли присоединился к сотрудничеству, поскольку он был создателем RISC Беркли , [18] а RISC-V является одноименным пятым поколением его длинной серии совместных исследовательских проектов на основе RISC в Калифорнийском университете, Беркли ( RISC-I и RISC-II , опубликованные в 1981 году Паттерсоном, который называет [21] архитектуру SOAR [22] 1984 года «RISC-III», а архитектуру SPUR [23] 1988 года — «RISC-IV». ). На этом этапе студенты предоставили исходное программное обеспечение, моделирование и проекты процессоров. [24]

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

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

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

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

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

Основателями 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. [30]

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

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

Награды

Дизайн

База и расширения 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», за которой следует алфавитное имя и необязательный номер версии. Например, Зифенсей называет расширение выборки инструкций. Zifencei2 и Zifencei2p0 называют версию 2.0 одинаковой. Первая буква, следующая за буквой «Z», по соглашению указывает на наиболее близкородственную категорию алфавитного расширения, IMAFDQLCBJTPVN . Таким образом, расширение Zam для смещенных атомов относится к стандартному расширению «A». В отличие от односимвольных расширений, расширения Z должны быть разделены подчеркиванием, сгруппированы по категориям, а затем в алфавитном порядке внутри каждой категории. Например, Zicsr_Zifencei_Zam .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первоначально RISC-V был указан как с прямым порядком байтов, чтобы напоминать другие знакомые успешные компьютеры, например x86 . [2] : 9–10  Это также снижает сложность процессора и немного снижает его затраты, поскольку он считывает слова всех размеров в одном и том же порядке. Например, набор команд RISC-V декодирует, начиная с байта инструкции с наименьшим адресом. Варианты с прямым порядком байтов и двусторонним порядком байтов были определены для поддержки устаревших баз кода, предполагающих обратный порядок байтов. [2] : 9–10  Привилегированный ISA определяет биты в регистрах mstatus и mstatush , которые указывают и, опционально, контролируют, является ли доступ к памяти в M-режиме, S-режиме и U-режиме, кроме выборки инструкций, прямым или большим порядком байтов. -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 и RISC-I от Berkeley) помещают 16-битное смещение при загрузке и сохранении. Они устанавливают старшие 16 бит с помощью инструкции загрузки старшего слова . Это позволяет легко устанавливать значения старших полуслов без смещения битов. Однако в большинстве случаев инструкции старшего полуслова составляют 32-битные константы, такие как адреса. RISC-V использует SPARC -подобную комбинацию 12-битных смещений и 20-битных инструкций верхнего уровня . Меньшее 12-битное смещение помогает компактнее, 32-битные инструкции загрузки и сохранения выбирают два из 32 регистров, сохраняя при этом достаточно бит для поддержки кодирования инструкций переменной длины RISC-V. [2] : 16 

Немедленно

RISC-V обрабатывает 32-битные константы и адреса с помощью инструкций, которые устанавливают старшие 20 бит 32-битного регистра. Загрузите верхние немедленные lui20 битов в биты с 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, а затем добавляется к ПК для генерации относительного адреса 32-битной инструкции. Если результат не находится по 32-битному адресу (т. е. делится без остатка на 4), ЦП может вызвать исключение . [2] : 20–23, раздел 2.5. 

Процессоры RISC-V переходят к рассчитанным адресам с помощью инструкции перехода и связывания- регистра jalr. jalrаналогичен jal, но получает адрес назначения путем добавления 12-битного смещения к базовому регистру. (Напротив, jalдобавляет к ПК большее 20-битное смещение.)

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

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

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

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

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

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

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

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

При первой встрече с ветвью процессоры 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. Например, если регистром назначения для свопа является постоянный ноль, загрузку можно пропустить. Если сохраненное значение не изменилось с момента загрузки, сохранение можно пропустить. [5] : 44 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Привилегированный набор команд

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

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

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

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

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

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

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

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

Битовые манипуляции

Некоторые расширения ISA для битовых манипуляций были ратифицированы в ноябре 2021 года (Zba, Zbb, Zbc, Zbs). [36] Расширения Zba, Zbb и Zbs, возможно, являются расширениями стандартных целочисленных инструкций I: Zba содержит инструкции для ускорения вычисления адресов элементов массива в массивах типов данных размером 2, 4 или 8 байт (sh1add , sh2add, sh3add), а также для 64-битных (и 128-битных) процессоров при индексации целыми числами без знака (add.uw, sh1add.uw, sh2add.uw, sh3add.uw и slli.uw). Инструкции Zbb содержат операции подсчета начальных, конечных 0 бит или всех 1 бит в полном объеме, а также операции с 32 словами (clz, clzw, ctz, ctzw, cpop, cpopw), изменение порядка байтов (rev8), логические инструкции с отрицанием второй ввод (andn,orn, xnor), расширение знака и нуля (sext.b, sext.h, zext.h), которые не могут быть предоставлены как особые случаи других инструкций (andi, addiw, add.wu), min и максимальное количество целых чисел (со знаком и без знака), (влево и вправо) вращение битов в регистре и 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 расширения битовых манипуляций включает эти инструкции; [50] некоторые из них теперь находятся в версии 1.0.1 криптографического расширения инструкций Scalar and Entropy Source . [38]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Реализации

Организация RISC-V ведет список реализаций ЦП и SoC RISC-V. [61]

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

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

В развитие

Открытый источник

Существует множество процессоров RISC-V с открытым исходным кодом, в том числе:

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

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

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

Поддержка операционной системы существует для ядра Linux , FreeBSD , NetBSD и OpenBSD , но инструкции режима супервизора не были стандартизированы до версии 1.11 привилегированной спецификации ISA, [3] поэтому эта поддержка является предварительной. Предварительный порт FreeBSD на архитектуру RISC-V был выпущен в феврале 2016 года и выпущен в составе FreeBSD 11.0. [134] [100] Порты дистрибутивов Debian [135] и Fedora [136] Linux , а также порт Haiku [137] находятся в стадии стабилизации (все поддерживают только 64-битный RISC-V, поддержка 32-битных версий не планируется). битовая версия). Существует порт Das U-Boot . [138] Спецификация UEFI версии 2.7 определила привязку RISC-V, а порт TianoCore был создан инженерами HPE [139] и, как ожидается, будет передан в восходящий поток. Имеется предварительный порт микроядра seL4 . [140] [141] Hex Five выпустила первый стек Secure IoT для RISC-V с поддержкой FreeRTOS . [142] Также был портирован xv6 , современная реализация Unix шестого издания на языке ANSI C , используемая в педагогических целях в Массачусетском технологическом институте . ОСРВ Pharos была портирована на 64-битный RISC-V [143] (включая защиту времени и памяти). Также см. Сравнение операционных систем реального времени .

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

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

Симулятор Creator является портативным и позволяет пользователю изучать различные языки ассемблера разных процессоров (в Creator есть примеры с реализацией инструкций RISC-V и MIPS32). [148] [149] [150] [151]

Расширяемый образовательный симулятор WepSIM реализует (микропрограммируемое) подмножество инструкций RISC-V (RV32I+M) и позволяет выполнять подпрограммы на ассемблере. [152] [153]

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

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

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

Примечания

  1. ^ Большой и двусторонний порядок поддерживаются через нестандартные варианты; инструкции всегда имеют прямой порядок байтов. [2] : VI, 9–10. 
  2. ^ Обозначение V (римская цифра «5») представляет RISC-V как архитектуру компьютера с сокращенным набором команд (RISC) 5-го поколения , которая разрабатывалась в Калифорнийском университете в Беркли с 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: Документ о привилегированной архитектуре, версия 20211203» (PDF) . RISC-V International . Проверено 5 ноября 2021 г.
  4. Уркарт, Родди (29 марта 2021 г.). «Что означает RISC-V? Краткая история открытой ISA». Системы и дизайн: Мнение . Полупроводниковая техника.
  5. ^ аб Уотерман, Эндрю; Асанович, Крсте (7 мая 2017 г.). «Руководство по набору команд RISC-V, том I: базовый уровень пользователя ISA версии 2.2» (PDF) . RISC-V International . Проверено 5 ноября 2021 г.
  6. ^ Ньюсом, Тим; Вакс, Меган (22 марта 2019 г.). «Поддержка внешней отладки RISC-V, версия 0.13.2 d5029366d59e8563c08b6b9435f82573b603e48e» (PDF) . RISC-V International . Проверено 7 ноября 2021 г.
  7. ^ «О RISC-V: RISC-V International является глобальной некоммерческой организацией, занимающейся открытой стандартной архитектурой набора команд RISC-V (ISA)» . RISC-V International.
  8. ^ «RISC-V перенесет штаб-квартиру в Швейцарию из-за опасений торговой войны» . EE Times Europe. 28 ноября 2019 г.
  9. Демерджян, Чак (7 августа 2013 г.). «Долгий взгляд на то, как ARM лицензирует чипы: Часть 1». Полуточный.
  10. Демерджян, Чак (8 августа 2013 г.). «Как ARM лицензирует свою интеллектуальную собственность для производства: Часть 2». Полуточный.
  11. ^ «Wave Computing закрывает свою открытую инициативу MIPS с немедленным эффектом и нулевым предупреждением» . 15 ноября 2019 г.
  12. ^ abcdef Асанович, Крсте . «Наборы инструкций должны быть бесплатными» (PDF) . Технические отчеты Калифорнийского университета в Беркли . Регенты Калифорнийского университета . Проверено 15 ноября 2016 г.
  13. ^ "Генератор сердечника ракеты" . РИСК-V . Регенты Калифорнийского университета. Архивировано из оригинала 6 октября 2014 года . Проверено 1 октября 2014 г.
  14. ^ аб Селио, Кристофер; С любовью, Эрик. «riscv-sodor: образовательные микроархитектуры дляrisc-visa». Гитхаб . Регенты Калифорнийского университета . Проверено 25 октября 2019 г.
  15. ^ ab «Программа процессора ШАКТИ». Индийский технологический институт Мадраса . Проверено 3 сентября 2019 г.
  16. ^ Селио, Кристофер. «Лабораторное упражнение CS 152, 3» (PDF) . Калифорнийский университет в Беркли . Регенты Калифорнийского университета. Архивировано из оригинала (PDF) 12 февраля 2015 года . Проверено 12 февраля 2015 г.
  17. ^ abcde Уотерман, Эндрю; Асанович, Крсте (31 мая 2016 г.). «Руководство по набору команд RISC-V, том I: базовый уровень пользователя ISA версии 2.1» (PDF) . Калифорнийский университет, Беркли. ЕЭКС-2016-118 . Проверено 5 ноября 2021 г.
  18. ^ Аб Паттерсон, Дэвид А .; Дитцель, Дэвид Р. (октябрь 1980 г.). «Дело в пользу компьютера с сокращенным набором команд». Новости компьютерной архитектуры ACM SIGARCH . 8 (6): 25. дои : 10,1145/641914,641917. S2CID  12034303.
  19. ^ «Янтарное ARM-совместимое ядро» . Открытые ядра . Проверено 26 августа 2014 г.
  20. ^ "ARM4U". Открытые ядра . Проверено 26 августа 2014 г.
  21. ^ Чен, Тони; Дэвид А. Паттерсон (24 января 2016 г.). Генеология RISC-V (Технический отчет). Калифорнийский университет в Беркли. УКБ/EECS-2016-6.
  22. ^ Образцы, Алан Дейн; Кляйн, Майк; Фоли, Пит (1985). SOAR Архитектура (Технический отчет). Калифорнийский университет, Беркли. UCB/CSD-85-226.
  23. ^ Хилл, Марк Дональд; и другие. (Сьюзен Дж. Эггерс, Джеймс Ричард Ларус, Джордж С. Тейлор, Гленн Д. Адамс, Бидьют Кумар Боуз, Гарт А. Гибсон, Пол Марк Хансен, Джон Келлер, Шинг И. Конг, Коринна Грейс Ли, Дэбом Ли, Дж. М. Пендлтон , Скотт Аллен Ричи, Дэвид А. Вуд, Бенджамин Г. Зорн, Пол Н. Хилфингер, Д. А. Ходжес, Рэнди Х. Кац, Джон К. Остерхаут и Дэвид А. Паттерсон ) (декабрь 1985 г.). SPUR: Многопроцессорная рабочая станция СБИС (Технический отчет). Калифорнийский университет, Беркли. UCB/CSD-86-273.
  24. ^ «Соавторы». riscv.org . Регенты Калифорнийского университета. Архивировано из оригинала 7 сентября 2018 года . Проверено 25 августа 2014 г.
  25. ^ Асанович, Крсте . «Руководство по набору команд RISC-V, том I: Базовый уровень пользователя ISA» (PDF) . Технические отчеты Калифорнийского университета в Беркли . Регенты Калифорнийского университета . Проверено 13 мая 2011 г.
  26. ^ Грушка, Джоэл (21 августа 2014 г.). «RISC снова на подъеме: новая архитектура RISC-V надеется конкурировать с ARM и x86, поскольку ее исходный код полностью открыт». ЭкстримТех .
  27. ^ "История RISC-V" . Проверено 28 января 2023 г.
  28. ^ «Новый проект микропроцессоров бросает вызов гигантам отрасли» . Экономист . 3 октября 2019 г. ISSN  0013-0613 . Проверено 10 ноября 2019 г. .
  29. ^ «Конференция по автоматизации проектирования». dac.com . Проверено 6 февраля 2021 г.
  30. ^ «Члены». RISC-V International . Проверено 1 августа 2023 г.
  31. ^ «Американская группа по производству микросхем переезжает в Швейцарию из-за опасений по ограничению торговли» . Рейтер . 26 ноября 2019 года . Проверено 26 ноября 2019 г. .
  32. Чунг, Санни (15 декабря 2023 г.). «Изучение большой стратегии Китая в отношении RISC-V». Краткое описание Китая . Фонд Джеймстауна . Проверено 18 декабря 2023 г.
  33. ^ "История RISC-V - RISC-V International" . RISC-V International . Проверено 14 мая 2020 г.
  34. ^ "Фонд RISC-V" . Фонд RISC-V. Архивировано из оригинала 10 апреля 2019 года . Проверено 15 марта 2019 г.
  35. ^ «Группа Linley объявляет победителей ежегодной премии «Выбор аналитиков» (пресс-релиз). Группа Линли. 12 января 2017 года . Проверено 21 января 2018 г.
  36. ^ ab «Расширения ISA для битовых манипуляций» (PDF) . RISC-V International. Ноябрь 2021 г.
  37. ^ «Векторное расширение». RISC-V International. Ноябрь 2021 г.
  38. ^ ab «Инструкции по скалярным источникам и источникам энтропии, том I расширения криптографии RISC-V» (PDF) . Гитхаб . 18 февраля 2022 г. Проверено 28 января 2023 г.
  39. ^ "Профили RISC-V" . Обсуждение . 2022.
  40. ^ Горизонтальный подкомитет платформы RISC-V (декабрь 2021 г.). «Спецификация платформы RISC-V» (PDF) . Версия 0.3-черновик.
  41. ^ abcdefghi Уотерман, Эндрю (13 мая 2011 г.). Повышение энергоэффективности и уменьшение размера кода с помощью сжатия RISC-V. Калифорнийский университет в Беркли: Регенты Калифорнийского университета. п. 32 . Проверено 25 августа 2014 г.
  42. ^ Уотерман, Эндрю; и другие. «Руководство по сжатому набору команд RISC-V, версия 1.9 (проект)» (PDF) . РИСК-V . Проверено 18 июля 2016 г.
  43. ^ аб Брусси, Рожье. «Полный 16-битный RVC». Группы Google . Фонд RISC-V . Проверено 18 июля 2019 г.
  44. ^ аб Брусси, Рожье. «Предложение: X конденсированный, [a] ... Компактный ... 16-битный автономный G-ISA». Почтовый сервер RISC-V ISA . Группы Google . Проверено 10 ноября 2016 г. .
  45. ^ Фунг, Ксан. «Улучшенный сжатый X». Группы Google . Фонд RISC-V . Проверено 18 июля 2019 г.
  46. ^ Ионеску, Ливиу. «Профиль микроконтроллера RISC-V». Гитхаб . Проверено 5 апреля 2018 г.
  47. Баррос, Сезар (1 апреля 2018 г.). «Предложение: RV16E». Разработчики RISC-V ISA (список рассылки) . Проверено 2 апреля 2018 г.
  48. ^ Бонзини, Паоло; Уотерман, Эндрю. «Предложение по виртуализации без режима H». Разработчики RISC-V ISA (список рассылки) . Проверено 24 февраля 2017 г.
  49. ^ "riscv-aclint/riscv-aclint.adoc в основном · riscv/riscv-aclint" . Гитхаб . Проверено 2 января 2024 г.
  50. ^ Вольф, Клэр, изд. (10 января 2021 г.). «Документ расширения Bitmanip RISC-V, версия 0.93» (PDF) . Гитхаб . Фонд RISC-V . Проверено 9 марта 2021 г.
  51. ^ ab «Сводка инструкций для предложения ISA «P»» . Группы Google . АНДЕ Технологии . Проверено 13 января 2020 г. .
  52. Су, Чарли (30 июня 2018 г.). «Комплексные решения RISC-V для AIoT» (PDF) . Содержимое RISC-V . Фонд RISC-V . Проверено 28 января 2023 г.
  53. ^ abcdefg Шмидт, Колин; Оу, Альберт; Ли, Юнсуп; Асанович, Крсте . «Предложение по векторному расширению RISC-V» (PDF) . РИСК-V . Регенты Калифорнийского университета . Проверено 14 марта 2016 г.
  54. ^ ab «Выпуск Vector Extension 1.0, заморожен для всеобщего обозрения · riscv/Riscv-v-spec». Гитхаб .
  55. ^ Оу, Альберт; Нгуен, Куан; Ли, Юнсуп; Асанович, Крсте . «Примеры MVP: векторные процессоры смешанной точности» (PDF) . EECS Калифорнийского университета в Беркли . Регенты Калифорнийского университета. Архивировано из оригинала (PDF) 15 марта 2016 года . Проверено 14 марта 2016 г.
  56. ^ Ли, Юнсуп; Гровер, Винод; Крашинский, Ронни; Стивенсон, Марк; Кеклер, Стивен В.; Асанович, Крсте . «Изучение пространства проектирования управления расхождениями SPMD в архитектурах с параллельными данными» (PDF) . Сайт EECS Беркли . Регенты Калифорнийского университета. Архивировано из оригинала (PDF) 15 марта 2016 года . Проверено 14 марта 2016 г.
  57. ^ abcde Брэдбери, Алекс; Валлентовиц, Стефан. «Отладка управления запуском RISC-V». Гугл документы . Фонд RISC-V . Проверено 20 января 2017 г.
  58. ^ Ньюсом, Тим. «Группа отладки RISC-V > результаты опроса». Группы Google, группа отладки RISC-V . Фонд RISC-V . Проверено 20 января 2017 г.
  59. ^ МакГуганус. "riscv-trace-spec". Гитхаб . Проверено 13 января 2020 г. .
  60. ^ Дахад, Нитин. «UltraSoC решает проблему поддержки RISC-V, жертвуя кодировщик трассировки» . ЭЭ Таймс . Аспенкор . Проверено 13 января 2020 г. .
  61. ^ «Обзор ядер RISC-V и SoC» . РИСЦ-В. 25 сентября 2019 г. Проверено 5 октября 2019 г.
  62. ^ "Д1" . Проверено 30 сентября 2021 г.
  63. ^ abc «Международные члены RISC-V». RISC-V International . Проверено 22 января 2021 г.
  64. ^ «На выставке CES2022 Bouffalo демонстрирует свое готовое решение Matter» . www.eetimes.com . Проверено 20 января 2022 г.
  65. ^ "ОблакоМЕДВЕДЬ" . Проверено 16 октября 2018 г.
  66. ^ riscv/riscv-cores-list, RISC-V, 6 февраля 2021 г. , получено 9 февраля 2021 г.
  67. ^ «Codasip объявляет о процессорных ядрах RISC-V, обеспечивающих многоядерность и возможности SIMD» . www.newelectronics.co.uk . Архивировано из оригинала 23 декабря 2020 года . Проверено 9 февраля 2021 г.
  68. ^ «3.6.2 Сопроцессор со сверхнизким энергопотреблением» . Техническое описание семейства ESP32-S2, версия 1.1 (PDF) . Системы эспрессо. 2020 . Проверено 9 июня 2020 г.
  69. ^ «Техническое описание семейства ESP32-C3, версия 0.4» (PDF) . Системы эспрессо. 2020 . Проверено 27 декабря 2020 г.
    • «Представляем ESP32-C3». Эспрессиф (Пресс-релиз). 27 ноября 2020 г.
  70. Маннерс, Дэвид (8 июня 2021 г.). «Лицензирование Фраунгофером отказоустойчивого ядра RISC для приложений, критически важных для безопасности». Еженедельник электроники . Проверено 13 апреля 2022 г.
  71. ^ «GigaDevice представляет серию GD32V с ядром RISC-V в совершенно новом 32-битном микроконтроллере общего назначения» . www.gigadevice.com . 23 августа 2019 года. Архивировано из оригинала 29 августа 2019 года . Проверено 29 августа 2019 г.
  72. ^ "Sipeed Longan Nano - Плата разработки RISC-V GD32VF103CBT6" . www.seeedstudio.com . Проверено 29 августа 2019 г.
  73. ^ Клейдермахер, Дэйв; Сид, Джесси; Барбелло, Брэндон (27 октября 2021 г.). «Pixel 6: Устанавливаем новый стандарт мобильной безопасности». Блог Google по безопасности . Архивировано из оригинала 27 октября 2021 года . Проверено 12 февраля 2023 г.
  74. ^ «GreenWaves GAP8 — это IoT-процессор RISC-V с низким энергопотреблением, оптимизированный для приложений искусственного интеллекта» . CNXSoft: Новости встраиваемых систем . 27 февраля 2018 года . Проверено 4 марта 2018 г.
  75. Ёсида, Джунко (26 февраля 2018 г.). «ИИ приходит в сенсорные устройства». ЭЭ Таймс . Проверено 10 июля 2018 г.
  76. ^ «GreenWaves Technologies объявляет о доступности комплекта разработки программного обеспечения GAP8 и платы разработки GAPuino» (пресс-релиз). 22 мая 2018 г.
  77. ^ "ЦП IMG RTXM-2200" . Воображение . Проверено 30 сентября 2023 г.
  78. Лейбсон, Стивен (9 января 2023 г.). «MIPS выпускает свое первое процессорное ядро ​​RISC-V – это большая проблема» . Электронный журнал .
  79. Робинсон, Дэн (11 мая 2022 г.). «MIPS сообщает, что первые чипы RISC-V появятся в четвертом квартале 2022 года» . Регистр .
  80. Шилов, Антон (9 декабря 2020 г.). «Seagate разрабатывает собственные ядра RISC-V для контроллеров хранения данных». Аппаратное обеспечение Тома .
  81. ^ "HiFive1". СиФайв . Архивировано из оригинала 26 февраля 2017 года . Проверено 10 июля 2018 г.
  82. ^ СиФайв. «Hi-Five1: комплект разработки с открытым исходным кодом, совместимый с Arduino». Поставка толпы . Проверено 2 декабря 2016 г.
  83. ^ "ЦП FU540 SoC" . СиФайв . Архивировано из оригинала 5 октября 2018 года . Проверено 24 октября 2018 г.
  84. Хорвиц, Джош (23 марта 2023 г.). «Китайский поисковый гигант Baidu инвестирует в стартап StarFive, занимающийся разработкой чипов RISC-V» . Рейтер .
  85. Шарвуд, Саймон (27 марта 2023 г.). «Китайский веб-гигант Baidu поддерживает RISC-V для центра обработки данных» . Регистр .
  86. ^ "Синтакор" . Проверено 11 декабря 2018 г.
  87. ^ ab «SCR1 — это высококачественное ядро ​​MCU RISC-V с открытым исходным кодом в Verilog». Гитхаб . Синтакор . Проверено 13 января 2020 г. .
  88. ^ "Материалы семинара RISC-V" . 11 декабря 2016 года . Проверено 28 января 2023 г.
  89. ^ "WinChipHead (WCH)" .
  90. ^ "CH32V003". ЧМ-ИК . Проверено 10 июля 2023 г.
  91. ^ "the-10-cent-risc-v-processor-ch32v003" . EEvblog . Проверено 10 июля 2023 г.
  92. Маннерс, Дэвид (23 ноября 2016 г.). «Объединение Codasip и UltraSoC на RISC-V». Еженедельник электроники . Метрополис Интернэшнл Групп, ООО . Проверено 23 ноября 2016 г.
  93. Десикан, Шубашри (6 августа 2018 г.). «ИИТ-Мадрас запускает дези-чип» . Индус . ISSN  0971-751X . Проверено 25 сентября 2020 г.
  94. ^ ab «Знакомьтесь, индийский микропроцессор Atmanirbhar Moushik, предназначенный для устройств Интернета вещей» . Вион . Проверено 25 сентября 2020 г.
  95. Эшенден, Питер (9 ноября 2016 г.). «Re: [isa-dev] RISC V ISA для встраиваемых систем». Разработчики RISC-V ISA (список рассылки) . Проверено 10 ноября 2016 г. . В ASTC (www.astc-design.com) у нас есть реализация RV32EC в качестве синтезируемого IP-ядра, предназначенного для небольших встраиваемых приложений, таких как интеллектуальные датчики и Интернет вещей.
  96. ^ «C-DAC объявляет Технический конклав 2019» . Таймс оф Индия . Архивировано из оригинала 17 мая 2019 года . Проверено 12 апреля 2019 г.
  97. Шарвуд, Саймон (19 августа 2020 г.). «Индия выбирает RISC-V для участия в конкурсе на полупроводниковую самодостаточность: используйте эти отечественные ядра для создания комплекта» . Регистр . Проверено 9 июля 2021 г.
  98. ^ "ВЕГА МИКРОПРОЦЕССОРЫ". Процессор Vega — CDAC . 9 июля 2021 года. Архивировано из оригинала 9 июля 2021 года . Проверено 9 июля 2021 г.
  99. ^ "Процессор NOEL-V" . Кобэм Гейслер . Проверено 14 января 2020 г.
  100. ^ ab «FreeBSD Foundation: принят первоначальный порт архитектуры FreeBSD RISC-V» . 4 февраля 2016 г.
  101. ^ «Эсперанто выходит из режима скрытности и нацелен на ИИ с помощью 4096-ядерного 7-нм монстра RISC-V» . Wikichip.org . Январь 2018 года . Проверено 2 января 2018 г.
  102. ^ «Решение для ускорителя искусственного интеллекта Esperanto ET-SoC-1 1092 RISC-V в Hot Chips 33» . 24 августа 2021 г.
  103. ^ "Проект PULPino GitHub" . Гитхаб . Проверено 2 февраля 2018 г.
  104. ^ "Платформа PULP" . Платформа PULP . Проверено 2 февраля 2018 г.
  105. ^ "Поток ускорителя". Европейская инициатива процессоров (EPI) . Проверено 22 февраля 2020 г. .
  106. Редмонд, Калиста (28 января 2023 г.). «Как Европейская процессорная инициатива использует RISC-V для будущего суперкомпьютеров». Международные новости RISC-V . RISC-V International.
  107. Халфакри, Гарет (10 июня 2021 г.). «Ученые RISC-V излагают план по внедрению этой архитектуры в высокопроизводительные вычисления». Регистр . Проверено 9 июля 2021 г.
  108. ^ "Проект процессора с открытым исходным кодом IIT Madras" . Быстрый ввод-вывод . ИИТ Мадрас. 26 августа 2014 года. Архивировано из оригинала 14 сентября 2014 года . Проверено 13 сентября 2014 г.
  109. ^ «IIT Madras разрабатывает и загружает микропроцессор MOUSHIK для устройств IoT» . ИИТ Мадрас . 24 сентября 2020 г. Проверено 9 июля 2021 г.
  110. ^ "Сайт lowRISC" . Проверено 10 мая 2015 г.
  111. ^ Се, Джо (июль 2016 г.). История оценки NVIDIA RISC V. 4-й семинар RISC-V . YouTube. Архивировано из оригинала 13 ноября 2021 года.
  112. ^ «RV64X: бесплатный графический процессор с открытым исходным кодом для RISC-V» . ЭТаймс . Проверено 9 февраля 2021 г.
  113. Фрумусану, Андрей (30 октября 2019 г.). «SiFive анонсирует первое ядро ​​ЦП RISC-V OoO: IP-процессор серии U8» . Анандтех .
  114. Гвеннап, Линли (13 декабря 2021 г.). «Ventana разрабатывает чиплет RISC-V». Отчет микропроцессора .
  115. Дахад, Нитин (6 сентября 2021 г.). «Запуск чиплета RISC-V привлекает 38 миллионов долларов для вычислений в центрах обработки данных» . ЭЭ Таймс .
  116. ^ Асанович, Крсте ; и другие. «ракетный чип». Гитхаб . RISC-V International . Проверено 11 ноября 2016 г.
  117. ^ Селио, Кристофер. "риск-бум". Гитхаб . Регенты Калифорнийского университета . Проверено 29 марта 2020 г.
  118. ^ Вольф, Клэр. «PicoRV32 — процессор RISC-V с оптимизированным размером». Гитхаб . Проверено 27 февраля 2020 г.
  119. ^ «MIPT-MIPS: предварительный кремниевый симулятор процессоров RISC-V и MIPS с точностью до цикла» . Гитхаб .
  120. ^ «Функции системных вызовов MIPS доступны в MARS» . Courses.missouristate.edu . Проверено 28 мая 2023 г.
  121. ^ Киндгрен, Олоф. «SERV — последовательный процессор RISC-V». Гитхаб . Проверено 25 сентября 2023 г.
  122. ^ аб Киндгрен, Олоф (29 декабря 2022 г.). «СЕРВ: 32-битные — это новые 8-битные» (Видео, 2:38) . YouTube . Фонд RISC-V . Проверено 25 сентября 2023 г.
  123. Халфакри, Гарет (14 июня 2022 г.). «В тесте CoreScore установлен новый рекорд: 10 000 ядер RISC-V на одной FPGA». fossi-foundation.org . Фонд ФОССи . Проверено 25 сентября 2023 г.
  124. ^ Трабер, Андреас; и другие. «ПУЛП: Параллельная сверхмалая мощность». ETH Цюрих, Болонский университет . Проверено 5 августа 2016 г.
  125. ^ Шилов, Антон. «Western Digital представляет два новых ядра SweRV RISC-V для микроконтроллеров». www.anandtech.com . Проверено 9 февраля 2021 г.
  126. ^ Шилов, Антон. «Western Digital представляет ядро ​​SweRV RISC-V и инициативу по согласованности кэша через Ethernet» . www.anandtech.com . Проверено 23 мая 2019 г.
  127. ^ «Western Digital выпускает основной исходный код SweRV RISC-V» . АБ Открыть . 28 января 2019 г. Архивировано из оригинала 21 мая 2019 г.
  128. ^ Cores-SweRV на GitHub
  129. ^ Нолтинг, Стефан (2022). "неорв32". Гитхаб . дои : 10.5281/zenodo.7030070 . Проверено 9 сентября 2021 г.
  130. ^ «Китайская Alibaba производит 16-ядерный процессор RISC-V с тактовой частотой 2,5 ГГц» . www.techspot.com . 28 июля 2019 года . Проверено 30 июля 2019 г.
  131. ^ «Alibaba открывает исходные коды четырех ядер RISC-V: XuanTie E902, E906, C906 и C910» . 20 октября 2021 г. Проверено 20 октября 2021 г.
  132. ^ Репозиторий Сяншань на Github
  133. ^ 64-битный процессор RISC-V с открытым исходным кодом XiangShan, способный конкурировать с Arm Cortex-A76 — CNX Software
  134. ^ "riscv - FreeBSD Wiki" . wiki.freebsd.org .
  135. ^ Монтезело, Мануэль. «Порт Debian GNU/Linux для RISC-V 64». Группы Google . Проверено 19 июля 2018 г.
  136. ^ "Архитектуры/RISC-V". Федора вики . Красная Шапка . Проверено 26 сентября 2016 г.
  137. ^ «Загрузка наших образов RISC-V» . Проект Хайку . 7 ноября 2021 г. Проверено 4 марта 2023 г.
  138. ^ Бегари, Падмарао. «Порт U-Boot на 32-битном RISC-V доступен». Группы Google . Микросеми . Проверено 15 февраля 2017 г. .
  139. ^ RiscVEdk2 на GitHub .
  140. ^ Алматы, Хешам. «RISC-V, seL4». seL4 Документация . Организация Содружества научных и промышленных исследований (CSIRO) . Проверено 13 июля 2018 г.
  141. ^ Алматы, Хешам. «хешамелматари». Гитхаб . Проверено 13 июля 2018 г.
  142. ^ «MultiZone Secure IoT Stack, первый безопасный IoT-стек для RISC-V» . Шестнадцатеричная безопасность . Hex Five Security, Inc., 22 февраля 2019 г. Проверено 3 марта 2019 г.
  143. ^ "Фарос". СоурсФордж . Проверено 1 апреля 2020 г.
  144. ^ «ANGEL — это симулятор Javascript RISC-V ISA (RV64), который запускает riscv-linux с BusyBox» . RISCV.org . Архивировано из оригинала 11 ноября 2018 года . Проверено 17 января 2019 г.
  145. Ли, Юнсуп (5 марта 2014 г.). «Загрузите RISC-V Linux в веб-браузере!». RISC-V International . Проверено 4 сентября 2020 г.
  146. ^ "АНГЕЛ - RISC-V" . riscv.org.s3-website-us-west-1.amazonaws.com . Архивировано из оригинала 1 декабря 2020 года . Проверено 4 сентября 2020 г.
  147. ^ «Документация/Платформы/RISCV». QEMU Wiki . Проверено 7 мая 2020 г.
  148. ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуньяль, Элиас; Матеос, Алехандро Кальдерон (23 июля 2021 г.). СОЗДАТЕЛЬ: Дидактический и общий симулятор для программирования в комплексе [ СОЗДАТЕЛЬ: Дидактический и универсальный симулятор для программирования на ассемблере ]. XXXI Jornadas de Paralelismo (JP20/21) (на испанском языке). Малага. дои : 10.5281/zenodo.5130302.
  149. ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуналь, Элиас; Матеос, Алехандро Кальдерон (октябрь 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 г.
  150. ^ Веб-сайт CREATOR с примером RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
  151. ^ Исходный код CREATOR на GitHub: https://github.com/creatorsim/creator
  152. ^ «Пример WepSIM с RISC-V_im» . ВепСИМ .
  153. ^ "Домашняя страница WepSIM" .
  154. ^ «Долото: создание оборудования на встроенном языке Scala» . Калифорнийский университет в Беркли . Регенты Калифорнийского университета . Проверено 12 февраля 2015 г.
  155. ^ "Студия Codasip". Кодасип . Проверено 19 февраля 2021 г.
  156. ^ riscv/riscv-compliance, RISC-V, 12 февраля 2021 г. , дата обращения 19 февраля 2021 г.
  157. ^ "Отладчик RISC-V" . www.lauterbach.com Отладчик TRACE32 для RISC-V .
  158. ^ «Lauterbach и SiFive обеспечивают поддержку TRACE32 для высокопроизводительных ядер RISC-V» . www.sifive.com .
  159. ^ «TRACE32 поддерживает трассировку RISC-V SiFive» . www.lauterbach.com . Архивировано из оригинала 2 июня 2022 года . Проверено 6 марта 2021 г.
  160. ^ «SEGGER добавляет поддержку Coreplex IP SiFive в свой ведущий в отрасли отладочный зонд J-Link» . Проверено 19 сентября 2017 г.
  161. ^ «PR: SEGGER Embedded Studio поддерживает архитектуру RISC-V» . Проверено 23 ноября 2017 г.
  162. ^ «PR: SEGGER представляет RTOS, стеки, промежуточное программное обеспечение для RISC-V» . Проверено 8 декабря 2017 г.
  163. Дахад, Нитин (23 июня 2020 г.). «Siemens приобретает пакет продуктов UltraSoC для жизненного цикла SoC» . ЭЭ Таймс . Проверено 12 июля 2023 г.

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

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