RISC-V开篇及特权模式等一些概念

Simplicity is the ultimate sophistication(大道至简)。

概述

现在 RISC-V 很火,一直想系统地学习了解下,弄个系列,以前零碎地记了一点。今天算个开篇,主要看看 RISC-V 相关的一些概念,主要的官方文档及书籍等。

risc-v-logo.png

RISC-V架构主要由美国加州大学伯克利分校发明,相比于x86和ARM架构,RISC-V开源采用BSD协议,它允许用户自由地使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。计算机体系结构的传统方法是增量ISA,新处理器不仅必须实现新的ISA扩展,还必须实现过去的所有扩展。目的是为了保持向后的二进制兼容性,这样几十年前程序的二进制版本仍然可以在最新的处理器上正确运行。导致了传统ISA的体量随时间大幅增长。而RISC-V是模块化的。它的核心是一个名为RV32I的基础ISA,支持运行一个完整的软件栈。RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包含或不包含这些扩展。

RISC-V 主要有以下几个特点:

  • 年轻,诞生于2010年,没有历史包袱,可以吸收其他架构的优点,去除其缺点。
  • 开放,属于一个开放的、非营利性质的基金会,不受任何一家公司的兴衰或心血来潮的决策所影响(过去许多 ISA 因此消亡)。
  • 简约模块化,RISC-V 提供的是一份菜单(核心扩展和各种可选扩展),而不是一顿应有尽有的自助餐。厂家可以按需组合,只需为点单的“食物”付费。
  • 等等

RISC-V相关的指令集:

  • RV32I,已冻结的基础整数指令集,它是 RISC-V 的核心
  • RISC-V 的标准扩展,它们与 RV32I 统称为 RV32G(G 代表
    general):
    • 乘法和除法指令(RV32M)
    • 浮点指令(RV32F 和 RV32D)
    • 原子指令(RV32A)
  • 可选的压缩扩展 RV32C
  • 向量扩展 RV32V
  • RV64G,RISC-V 的 64 位地址版本
  • 其他可选扩展:
    • “B” 标准扩展:位操作
    • “E” 标准扩展:嵌入式
    • “H” 特权态架构扩展:支持虚拟机管理器(Hypervisor)
    • “J” 标准扩展:动态翻译语言
    • “L” 标准扩展:十进制浮点
    • “N” 标准扩展:用户态中断
    • “P” 标准扩展:紧缩 SIMD 指令
    • “Q” 标准扩展:四倍精度浮点
    • 等等

RISC-V支持的软件架构

RISC-V支持的软件堆栈:
riscv-software-stacks.png

  • AEE: application execution environment
  • ABI: application binary interface
  • SEE: supervisor execution environment
  • SBI: supervisor binary interface
  • HEE: hypervisor execution environment
  • HBI: hypervisor binary interface

后面的章节会详细地来看看RISCV-V的SBI及OpenSBI。

RISC-V特权模式

RISC-V目前定义了以下几种特权等级:

Level Encoding Name Abbreviation
0 00 User/Application U
1 01 Supervisor S
2 10 Reserved
3 11 Machine M
  • Machine Mode(M Mode): 机器模式,拥有最高的特权,处理器上电就处于此模式
  • Supervisor Mode(S Mode): 监督模式,一般运行OS kernel
  • User Mode(U Mode): 用户模式,运行用户APP

在特权级架构实现中,M Mode为必选模式,另外两种为可选模式。通过不同的模式组合可以实现不同用途的系统。
下面是特权模式支持的几种组合:

Number of levels Supported Modes Intended Usage
1 M Simple embedded systems
2 M,U Secure embedded systems
3 M,S,U Systems running Unix-like operating systems
  • M Mode:通常为简单的嵌入式系统
  • M Mode + U Mode:该系统可以实现用户和机器模式的区分,从而实现资源的保护
  • M Mode + S Mode + U Mode:该系统可以实现类Unix操作系统

参考