Открыть сервис

Привилегированные уровни RISC-V

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

История и развитие

Спецификация привилегированной архитектуры RISC-V разрабатывается некоммерческой организацией RISC-V International (зарегистрирована в Швейцарии). Первая стабильная версия спецификации (v1.10) была опубликована в мае 2017 года. В декабре 2021 года вышла версия v1.12, которая добавила поддержку расширения для гипервизоров (H-расширение) и улучшила механизмы обработки исключений. В настоящее время актуальной является версия v1.13 (2024 год), которая включает уточнения для встроенных систем и улучшенную поддержку безопасности.

Разработка привилегированной архитектуры велась параллельно с базовым набором инструкций (ISA) RISC-V. В отличие от коммерческих архитектур (x86, ARM), RISC-V изначально проектировался с учётом потребностей академических исследований и встраиваемых систем, что отразилось в модульной структуре привилегированных уровней.

Архитектура привилегированных уровней

RISC-V определяет три основных привилегированных уровня (режима работы процессора), которые нумеруются от 0 до 3:

  • U-режим (User Mode, уровень 0) — режим пользовательских приложений. В этом режиме запрещён доступ к системным регистрам и выполнение привилегированных инструкций. При попытке выполнить привилегированную операцию (например, изменить таблицу страниц) процессор генерирует исключение.
  • S-режим (Supervisor Mode, уровень 1) — режим ядра операционной системы. Обеспечивает управление виртуальной памятью, обработку прерываний и исключений, а также доступ к системным регистрам (CSR — Control and Status Registers). Большинство современных ОС (Linux, FreeBSD) работают в S-режиме.
  • M-режим (Machine Mode, уровень 3) — наивысший привилегированный режим. Используется для управления низкоуровневыми аппаратными функциями: начальная загрузка (boot), обработка аппаратных сбоев, управление энергопотреблением и конфигурация физической памяти. В M-режиме работает загрузчик (bootloader) или гипервизор (в системах без H-расширения).

Системы с поддержкой виртуализации могут дополнительно использовать VS-режим (Virtual Supervisor Mode) и VU-режим (Virtual User Mode), которые являются виртуализированными версиями S- и U-режимов соответственно. Эти режимы реализуются через расширение H (Hypervisor Extension).

Таблица привилегированных уровней

УровеньКодНазваниеТипичное использование
000U (User)Пользовательские приложения
101S (Supervisor)Ядро ОС
210VS (Virtual Supervisor)Гостевая ОС в виртуальной машине
311M (Machine)Загрузчик, гипервизор, прошивка

Системные регистры (CSR)

Привилегированная архитектура RISC-V определяет набор системных регистров (CSR), доступ к которым осуществляется через специальные инструкции csrrw, csrrs, csrrc (чтение/запись) и их варианты. Регистры CSR делятся на категории:

  • Machine-level CSR — доступны только в M-режиме. Включают регистры для обработки прерываний (mie, mip), управления исключениями (mtvec, mepc, mcause), конфигурации таймеров (mtime, mtimecmp) и управления энергопотреблением.
  • Supervisor-level CSR — доступны в S-режиме и M-режиме. Включают регистры для управления виртуальной памятью (satp — адрес таблицы страниц), обработки прерываний (sie, sip), а также регистры для исключений (stvec, sepc, scause).
  • Hypervisor-level CSR — доступны в VS-режиме и M-режиме (при наличии H-расширения). Включают регистры для управления гостевыми ОС (hstatus, hedeleg, hideleg).

Каждый CSR имеет уникальный 12-битный адрес. Доступ к CSR, не поддерживаемым текущим уровнем привилегий, вызывает исключение illegal instruction.

Обработка исключений и прерываний

Привилегированная архитектура RISC-V определяет единый механизм обработки исключений (exceptions) и прерываний (interrupts), называемый trap (ловушка). При возникновении trap процессор:

  1. Сохраняет текущий адрес инструкции в регистр mepc (для M-режима) или sepc (для S-режима).
  2. Записывает код причины в регистр mcause или scause.
  3. Переключает привилегированный уровень на M или S (в зависимости от настроек делегирования).
  4. Загружает адрес обработчика из регистра mtvec или stvec.
  5. Устанавливает бит MPIE или SPIE для сохранения предыдущего состояния прерываний.

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

Делегирование trap

Для повышения производительности ОС спецификация позволяет делегировать обработку определённых типов trap из M-режима в S-режим через регистры medeleg (для исключений) и mideleg (для прерываний). Это позволяет ядру ОС обрабатывать системные вызовы и страничные ошибки без участия прошивки (M-режима).

Виртуальная память

Привилегированная архитектура RISC-V поддерживает два режима управления памятью:

  • Bare (физическая адресация) — адреса, генерируемые процессором, напрямую соответствуют физическим адресам памяти. Используется в простых встраиваемых системах и на этапе загрузки.
  • Sv32, Sv39, Sv48, Sv57 — режимы страничной виртуальной памяти с размерами страниц 4 КБ (по умолчанию) или 2 МБ/1 ГБ (большие страницы). Цифра в названии (32, 39, 48, 57) указывает на количество бит виртуального адреса, поддерживаемого данным режимом.

Режим Sv39 является наиболее распространённым для 64-битных процессоров RISC-V, обеспечивая адресацию до 512 ГБ виртуальной памяти. Режим Sv48 (поддерживаемый в версии v1.12) расширяет адресное пространство до 256 ТБ.

Управление виртуальной памятью осуществляется через регистр satp (Supervisor Address Translation and Protection), который содержит адрес корневой таблицы страниц и идентификатор адресного пространства (ASID — Address Space Identifier) для ускорения переключения контекстов.

Расширение для гипервизоров (H-расширение)

Расширение H (Hypervisor Extension) было стандартизировано в версии v1.12. Оно добавляет поддержку аппаратной виртуализации, позволяя запускать несколько гостевых ОС на одном процессоре без необходимости программной эмуляции. Ключевые возможности:

  • Двухуровневая трансляция адресов — гостевая ОС управляет своей виртуальной памятью (g-stage), а гипервизор — физической (vs-stage). Это снижает накладные расходы на виртуализацию.
  • Виртуализация прерываний — через регистры hvip и hvien гипервизор может направлять прерывания конкретным гостевым ОС.
  • Поддержка вложенной виртуализации — возможность запуска гипервизора внутри гостевой ОС (экспериментальная функция в v1.13).

Применение

Привилегированная архитектура RISC-V используется в следующих областях:

  • Операционные системы — Linux, FreeBSD, RTEMS и другие ОС поддерживают работу в S-режиме RISC-V. Ядро Linux включает полную поддержку Sv39/Sv48 и H-расширения с версии 5.18 (2022 год).
  • Встраиваемые системы — микроконтроллеры с RISC-V (например, GD32V, ESP32-C3) работают только в M-режиме, что упрощает разработку прошивок.
  • Гипервизоры — проекты KVM (Kernel-based Virtual Machine) и Xen поддерживают виртуализацию на RISC-V через H-расширение.
  • Безопасные среды — использование M-режима для реализации доверенной среды выполнения (TEE — Trusted Execution Environment), например, в проекте Keystone.

Критика и ограничения

Основные критические замечания к привилегированной архитектуре RISC-V:

  • Сложность реализации H-расширения — двухуровневая трансляция адресов требует дополнительных аппаратных ресурсов (TLB — буфер ассоциативной трансляции), что увеличивает площадь кристалла и энергопотребление.
  • Отсутствие аппаратной поддержки некоторых функций — например, в RISC-V нет встроенной поддержки защиты стека (Shadow Stack) или аппаратного ускорения криптографии, что требует программной реализации.
  • Фрагментация — из-за модульности архитектуры разные реализации могут поддерживать разные подмножества расширений, что затрудняет переносимость ОС между процессорами.
  • Молодость экосистемы — по сравнению с ARM и x86, отладчики и профилировщики для привилегированных режимов RISC-V менее зрелые.

Источники

  1. The RISC-V Instruction Set Manual, Volume II: Privileged Architecture, Document Version 20240411. RISC-V International, 2024.
  2. Waterman, A., Asanović, K. The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213. RISC-V Foundation, 2019.
  3. RISC-V Privileged Architecture Specification v1.12. RISC-V International, 2021.
  4. RISC-V Hypervisor Extension Specification v0.6.1. RISC-V International, 2020.
  5. Linux Kernel Documentation: RISC-V. Linux Kernel Organization, 2023.
  6. Keystone Enclave: An Open-Source TEE for RISC-V. Keystone Project, 2022.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →