Привилегированные уровни 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).
Таблица привилегированных уровней
| Уровень | Код | Название | Типичное использование |
|---|---|---|---|
| 0 | 00 | U (User) | Пользовательские приложения |
| 1 | 01 | S (Supervisor) | Ядро ОС |
| 2 | 10 | VS (Virtual Supervisor) | Гостевая ОС в виртуальной машине |
| 3 | 11 | M (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 процессор:
- Сохраняет текущий адрес инструкции в регистр
mepc(для M-режима) илиsepc(для S-режима). - Записывает код причины в регистр
mcauseилиscause. - Переключает привилегированный уровень на M или S (в зависимости от настроек делегирования).
- Загружает адрес обработчика из регистра
mtvecилиstvec. - Устанавливает бит
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 менее зрелые.
Источники
- The RISC-V Instruction Set Manual, Volume II: Privileged Architecture, Document Version 20240411. RISC-V International, 2024.
- Waterman, A., Asanović, K. The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213. RISC-V Foundation, 2019.
- RISC-V Privileged Architecture Specification v1.12. RISC-V International, 2021.
- RISC-V Hypervisor Extension Specification v0.6.1. RISC-V International, 2020.
- Linux Kernel Documentation: RISC-V. Linux Kernel Organization, 2023.
- Keystone Enclave: An Open-Source TEE for RISC-V. Keystone Project, 2022.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →