32-разрядные базовые и 64-разрядные расширения RISCV - PullRequest
0 голосов
/ 01 января 2019

Я хотел бы создать симулятор RISCV на языке C, который бы поддерживал ограниченный набор команд RISC-V ISA, ограниченный 32-битной базой с 64-битными расширениями (RV32I и RV64I).Но я не совсем понимаю, что такое 64-битные расширения и как их использовать.Может ли кто-нибудь объяснить мне, в чем разница между базой и расширениями и как я могу различить их в коде?

1 Ответ

0 голосов
/ 01 января 2019

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

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

Хотя 64-разрядные адресные пространства являются требованием для более крупных систем, 32-разрядные адресные пространства могут быть достаточными для многих встроенных и клиентских устройств на десятилетия вперед, и будет желательно снизить трафик памяти и энергопотребление.Кроме того, 32-разрядные адресные пространства достаточны для образовательных целей.В конечном итоге может потребоваться большее плоское 128-битное адресное пространство, чтобы мы могли быть размещены в рамках RISC-V ISA.

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

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

Расширения с набором инструкций могут обеспечивать несколько различную функциональность в зависимости от ширины набора базовых целочисленных инструкций.Соглашение об именах для базовых команд RISC-V и расширений набора команд, для поддержки более общей разработки программного обеспечения, определен набор стандартных расширений, чтобы обеспечить целочисленное умножение / деление, атомарные операции и арифметику с плавающей точкой одинарной и двойной точности.Metic.

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

Стандартное расширение для умножения и деления целых чисел называется «M» и добавляет инструкции для умножения и деления значений, хранящихся в целочисленных регистрах.

Стандартное атомарное расширение команд, обозначаемое «A», добавляет инструкции, которые атомарно читают, изменяют и записывают память для межпроцессорной синхронизации.Стандартное расширение с плавающей запятой одинарной точности, обозначаемое «F», добавляет регистры с плавающей запятой, вычислительные инструкции одинарной точности, а также загрузки и сохранения одинарной точности.Стандартное расширение с плавающей запятой двойной точности, обозначаемое «D», расширяет регистры с плавающей запятой и добавляет вычислительные инструкции с двойной точностью, загружает и хранит.

Справочник - RISC-V Руководство по ISA

...