Опубликован: 24.11.2024 | Доступ: свободный | Студентов: 1 / 0 | Длительность: 03:11:00
Лекция 6:

Процессоры RISC-V

< Лекция 5 || Лекция 6: 123 || Лекция 7 >

Неопределённое поведение и неопределённые значения

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

Поведение или значения UNSPECIFIED намеренно оставлены неограниченными, чтобы они могли быть определены в расширениях, стандартах платформы или других реализациях. Кроме того, если есть неограниченные определения, они также должны быть определены как UNSPECIFIED. При необходимости эти значения могут быть расширены или определены позже.

Список инструкций в RISC-V ISA и соответствующих расширений базовой ISA см. в справочной карте RISC-V.

Инструкции, относящиеся к CSR

RISC-V определяет инструкции, специфичные для CSR, и имеет отдельное адресное пространство для CSR для каждого hart-а процессора. Это адресное пространство имеет размер 4096. Все инструкции CSR атомарно читаю/модифицируют/записывают один CSR, спецификатор которого закодирован в 12-битном поле csr инструкции, расположенном в битах 31-20. Непосредственные формы используют 5-битное, расширенное до нуля непосредственное значение, закодированное в поле rs1.

Процессоры RISC-V

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

Помимо списка доступных для использования ядер, существуют также готовые чипы и системы на кристалле (SoC), построенные на базе процессоров RISC-V. Различные крупные компании, производящие чипы, такие как NVIDIA и Western Digital, использовали RISC-V в своих продуктах.

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

Тулчейн RISC-V

Знакомство с инструментами RISC-V

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

Инструменты RISC-V можно найти на GitHub. Процесс их установки подробно описан в файле README, размещенном в этом месте. Пользователи Windows могут установить тулчейн в среде Cygwin или MinGW.

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

В этом курсе мы будем использовать компилятор GNU GCC C/C++ и компоновщик для компиляции и запуска программных приложений, которые мы разрабатываем на наших аппаратных моделях RISC-V.

Для разработки программного обеспечения под Windows/Linux/Mac мы можем использовать IDE на базе Eclipse или командную строку GCC.

Установка тулчейна: на машинах Windows

Если вы планируете использовать Windows для отработки примеров, то для запуска примеров FreeRTOS можно использовать тулчейн Eclipse, который был установлен в предыдущей главе. После установки Eclipse выполните следующие шаги для установки тулчейна RISC-V.

Доступ к тулчейну можно получить с помощью библиотеки xPack. Для получения более подробной информации см. следующие два ресурса:

Шаг 1:

Установите npm для Windows. Это утилита, которая позволяет пользователям устанавливать пакеты Java.

Шаг 2:

После установки npm выполните следующую команду в утилите командной строки, чтобы установить основные программы, необходимые для установки тулчейна:

npm install --global xpm@latest

Шаг 3:

После установки XPM выполните приведенную ниже команду для установки компилятора GCC и сопутствующих инструментов:

xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@latest -verbose
Установка тулчейна: на машинах Linux

На машинах Linux пользователи могут установить либо тулчейн на базе Eclipse, либо тулчейн командной строки. Тулчейн командной строки можно установить из двоичных файлов, или загрузить исходный код компилятора и скомпилировать его на своей машине.

Ниже описаны шаги для обоих методов установки тулчейна на Linux-машинах.

Установка двоичных файлов

Шаг 1:

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

Шаг 2:

После клонирования двоичных файлов установите путь к директории bin инструмента, а также добавьте библиотечные файлы в LD_LIBRARY_PATH.

Пример настроек:

  • export PATH=$PATH:$RISCV/bin:$RISCV/riscv32/bin:$RISCV/riscv64/bin
  • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RISCV/riscv32/lib:$RISCV/riscv64/lib

Установка из исходного кода

Установка из исходного кода может быть выполнена путем получения исходных файлов из следующего места на GitHub.

Выполните шаги, перечисленные в файле README на GitHub. В результате инструменты будут установлены и готовы к использованию в вашей среде Linux.

Написание приложений для RISC-V

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

После компиляции приложения пользователь может протестировать его с помощью различных эмуляторов, таких как Spike (специфичный для RISC-V) или QEMU (поддерживает несколько семейств процессоров).

Можно даже загрузить образ Linux на процессоре RISC-V с помощью инструмента эмуляции.

Контрольные вопросы

  1. Что такое RISC-V?
  2. В чем отличия между RISC-V и другими архитектурами?
  3. Верно ли утверждение, что в RISC-V у всех инструкций фиксированная длина?
  4. За что отвечает интерфейс среды выполнения (EEI) ПО RISC-V?
  5. Что такое hart?
  6. Какие наборы инструкций RISC-V являются базовыми?
  7. Какие регистры определены как необходимые в RISC-V ISA?
  8. Есть ли машинные инструкции RISC-V, выполнение которых не требует обращения к памяти?
  9. Какими средствами RISC-V обрабатывает исключения и прерывания?
  10. Какие инструменты поддерживаются на машинах Linux для разработки программного обеспечения под RISC-V?
  11. Какие инструменты используются для компиляции и запуска программных приложений на аппаратных моделях RISC-V?
  12. Какие шаги нужно выполнить для установки toolchain на машины Windows и Linux?
< Лекция 5 || Лекция 6: 123 || Лекция 7 >