RISC-V ISA

RISC-V ISA

本文内容来自软件所汪辰老师的课程

原文链接:https://github.com/tuling1900/note/blob/main/riscv/riscv-isa.md

ISA基本介绍

ISA:Instruction Set Architecture

是底层硬件电路面向上层软件程序提供的一层接口规范

image-20260126220330278

ISA 是一种标准,定义了:基本数据类型、寄存器、指令、寻址模式、异常或中断处理方式

为上层软件提供一层抽象,制定规则和约束,让编程者不用操心具体的电路结构。

ISA宽度是指cpu中通用寄存器的宽度(二进制位数),决定了寻址范围的大小,数据运算能力

指令编码长度与ISA宽度无关

RISC-V ISA

RISC-V基金会

RISC-V特点

简单、清晰的分层设计、模块化、稳定、社区化

官方标准下载地址

命名规范

RV[###][abc....xyz]

RV:用于标识 RISC-V 体系架构的前缀,即 RISC-V 的缩写

[###]:{32, 64, 128} 用于标识处理器的字宽,也就是 处理器的寄存器的宽度(单位为 bit)

[abc…xyz]:标识该处理器支持的指令集模块集合。

增量ISA

增量 ISA: 计算机体系结构的传统方法,同一个体系架构下的新一代处理 器不仅实现了新的 ISA 扩展,还必须实现过去的所有扩展,目的是为了 保持向后的二进制兼容性。典型的,以 80x86 为代表

增量ISA会使指令越来越负责

模块ISA

模块化 ISA: 由 1 个基本整数指令集 + 多个可选的扩展指令集组成。基 础指令集是固定的,永远不会改变。

RISC-V是模块化ISA

基本整数(Integer)指令集

唯一强制要求实现的基础指令集,其他指令集都是可选的扩展模块

image-20260126225320973

扩展模块指令集

RISC-V 允许在实现中以可选的形式实现其他 标准化和非标准化的指令集扩展

特定组合“IMAFD”被称为 “通用(General)” 组合,用英文字母 G 表示

image-20260126225603997

通用寄存器(General Purpose Registers)

RISC-V 的 Unprivileged Specification 定义了 32 个通用寄存器以及一个 PC

RISC-V PC不暴露给程序员

如果实现支持 F/D 扩展则需要额外支持 32 个浮点(Float Point)寄存器

每个寄存器具体编程时有特定的用途以及 各自的别名。由 RISC-V Application Binary Interface (ABI) 定义

HART

HART = HARdware Thread 硬件线程

一个HART对应一个指令执行流

From the perspective of software running in a given execution environment, a hart is a resource that autonomously fetches and executes RISC-V instructions within that execution environment.

特权级别(Privileged Level)

RISC-V 的 Privileged Specification 定义了三个特权级别(privilege level)

image-20260126230815910

Machine 级别是最高的级别,所有的实现都需要支持

可选的 Debug 级别

image-20260126230920307

Control and Status Registers (CSR)

不同的特权级别下时分别对应各自的一套 Registers (CSR),用于控制(Control)控制和获取相应 Level 下的处理器工作状态

高级别的特权级别下可以访问低级别的 CSR, 譬如 Machine Level 下可以访问 Supervisor/User Level 的 CSR,以此类推;但反之不可以

RISC-V 定义了专门用于操作 CSR 的指令

RISC-V 定义了特定的指令可以用于在不同 特权级别之间进行切换

image-20260126231447322

内存管理与保护

物理内存保护(Physical Memory Protection,PMP)

允许 M 模式指定 U 模式可以访 问的内存地址

支持 R/W/X,以及 Lock

虚拟内存(Virtual Memory)

需要支持 Supervisor Level

用于实现高级的操作系统特性

多种映射方式 Sv32/Sv39/Sv48

image-20260126231932789

异常和中断

异常(Exception):“an unusual condition occurring at run time associated with an instruction in the current RISC-V hart”

在当前 hart 上、与“当前正在执行的指令”相关、运行时出现的不寻常情况(同步事件)

中断(Interrupt):“an external asynchronous event that may cause a RISC-V hart to experience an unexpected transfer of control”

异步发生,不依赖/不等待当前指令的执行结果,来自 hart 外部(例如外设、平台中断控制器等)

image-20260126232139554

区分异常和中断的区别

posted @ 2026-01-26 23:31  1900ch  阅读(1)  评论(0)    收藏  举报