Ris c -V: минимальные требования CSR для простой реализации RV32I, способной использовать GCC. - PullRequest
3 голосов
/ 01 августа 2020

Каковы были бы минимальные требования CSR для RV32I, способного запускать машинный код, сгенерированный с помощью G CC?

Я думаю о простой (встроенной) реализации на основе fpga. Никакой виртуальной памяти или поддержки linux не требуется.

Кроме того, какие флаги G CC я должен использовать, чтобы предотвратить использование нереализованных инструкций, связанных с CSR?

Я все еще довольно запутался после сканирования через RISCV Privileged ISA Specification.

Спасибо!

1 Ответ

1 голос
/ 01 августа 2020

Взгляните на симулятор RARS как на пример простой реализации RIS C V. Он реализует достаточное количество CSR (например, причину исключения, состояние процессора, исключение p c, адрес векторной таблицы и т. Д. c ..), которые вы можете запрограммировать обработчиком прерывания.

Вам понадобятся:

  • utvec - устанавливает адрес обработчика исключений
  • ustatus - для включения / отключения прерываний,
  • uscratch - требуется программному обработчику исключений,
  • ucause - сообщает причину исключения
  • uepc - сообщает адрес незавершенной инструкции при исключении

И некоторые другие. В RARS вы можете видеть регистры, реализованные на дисплее регистров, на вкладке Control and Status .

Я считаю, что RARS поддерживает таймер, поэтому для этого есть несколько CSR. Он также предоставляет блок с плавающей запятой, поэтому некоторые CSR для исключений для этого, а также конфигурацию округления. Для обработки исключений доступа к памяти он имеет utval. А потом предлагает несколько прилавков. См. Также таблицу 2.2 в Версия документа 20190608-Priv-MSU-Ratified

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

Трудно представить, что скомпилированный C код (объектные файлы, .o) каким-либо образом затронет CSR. Если у вас есть такой пример, поделитесь им.

В некоторых средах реализация C допускает автономные (например, не размещенные на хосте) программы. Возможно, что такая программа, созданная каким-либо компилятором, включает конфигурацию запуска и обработчик исключений, хотя более вероятно, что они будут предоставлены пользователем. См., Например, http://cs107e.github.io/guides/gcc/

...