Опубликован: 19.04.2025 | Доступ: свободный | Студентов: 1 / 0 | Длительность: 07:05:00
Лекция 3:

Расширение системы команд RISC-V

< Лекция 2 || Лекция 3: 12 || Лекция 4 >

Группа команд фиксированного размера

Простейший подход заключается в определении единого большого естественно выровненного формата команд (например, 128 бит) в рамках которого кодируются операции VLIW. В обычном VLIW такой подход привел бы к растрате памяти команд для хранения NOPS, но RISC-V-совместимая реализация должна была бы также поддерживать базовые 32-разрядные инструкции, ограничивая расширение размера кода VLIW функциями, ускоряемыми VLIW.

Группы кодированной длины

Другой подход заключается в использовании стандартной кодировки длины из рис.2 для параллельного кодирования в группы структур, позволяющие сжимать NOPs из инструкции VLIW. Например, 64-разрядная инструкция может содержать две 28-разрядные операции, в то время как 96-разрядная инструкция может содержать три 28-разрядные операции и так далее. В качестве альтернативы, 48-разрядная инструкция может содержать одну 42-разрядную операцию, в то время как 96-разрядная инструкция может содержать две 42-разрядные операции и так далее.

Этот подход имеет преимущество в сохранении базовой кодировки ISA для инструкций, выполняющих одну операцию, но имеет недостаток в том, что требуется новая 28-разрядная или 42-разрядная кодировка для операций внутри инструкций VLIW и смещенная выборка команд для больших групп. Одно из упрощений заключается в том, чтобы не позволять инструкциям VLIW пересекать определенные микроархитектурно значимые границы (например, строки кэша или страницы виртуальной памяти).

Основным недостатком этого подхода является то, что в базовом ISA отсутствует поддержка сложной предикации, обычно требуемая в агрессивной системе VLIW, и трудно добавить пространство для указания большего количества регистров предикатов в стандартном 30-битном пространстве кодирования.

Именование расширений

Стандартным расширениям ISA присваивается имя, состоящее из одной буквы. Например, первыми четырьмя стандартными расширениями целочисленных базисов являются: "M" для целочисленного умножения и деления, "A" для инструкций атомной памяти, "F" для инструкций с плавающей запятой одинарной точности и "D" для инструкций с плавающей запятой двойной точности. Любой вариант набора команд RISC-V может быть кратко описан путем объединения префикса базового целого числа с именами включенных расширений, например, "RV64IMAFD".

Стандартизованные сообществом RISC-V специализированные расширения начинаются с префикса Z.

Название нестандартных пользовательских расширений должно начинаться с префикса "Х".

Выводы

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

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

Это возможно сделать за счет блока регистров специального назначения (CSR) - да, ряд его адресов зарезервирован под "стандартные" функции, но тем не менее значительное количество адресов свободно и может быть задействовано с пользой для задачи. Под видом регистров специального назначения могут скрываться регистры управления или данных любых пользовательских вычислительных или исполнительных блоков или устройств. И разработчику достаточно будет лишь определить протокол взаимодействия с ними, и далее работать штатным средствами типового программного обеспечения.

Типовые "стандартные" CSR-регистры и их адреса приведены рисунках 3.4 -3.6.

CSR регистры машинного уровня

Рис. 3.4. CSR регистры машинного уровня
CSR регистры машинного уровня и регистры режима отладки

Рис. 3.5. CSR регистры машинного уровня и регистры режима отладки
CSR регистры уровня супервизора

Рис. 3.6. CSR регистры уровня супервизора

Литература

  1. The RISC-V Instruction Set Manual. Volume I: User-Level ISA Document Version 2.2 // Editors: Andrew Waterman1, Krste Asanov
  2. RISC-V Assembly Language Programmer Manual Part I developed by: SHAKTI Development Team @ iitm '20 shakti.org.in
< Лекция 2 || Лекция 3: 12 || Лекция 4 >