封面
版权信息
版权
内容提要
推荐序
RISC-V的未来有无限可能
前言
第一版前言
本书约定
第1章 RISC-V体系结构基础知识
1.1 RISC-V介绍
1.2 RISC-V体系结构介绍
1.3 RISC-V寄存器
第2章 搭建RISC-V实验环境
2.1 实验平台
2.2 搭建实验环境
2.3 MySBI和BenOS基础实验代码解析
2.4 QEMU + RISC-V + Linux实验平台
第3章 基础指令集
3.1 RISC-V指令集介绍
3.2 RISC-V指令编码格式
3.3 加载与存储指令
3.4 PC相对寻址
3.5 移位操作
3.6 位操作指令
3.7 算术指令
3.8 比较指令
3.9 无条件跳转指令
3.10 条件跳转指令
3.11 CSR指令
3.12 寻址范围
3.13 陷阱:为什么调用RET指令之后就进入死循环
3.14 实验
第4章 函数调用规范与栈
4.1 函数调用规范
4.2 入栈与出栈
4.3 RISC-V的栈布局
4.4 实验
第5章 GNU汇编器
5.1 编译流程与ELF文件
5.2 一个简单的汇编程序
5.3 汇编语法
5.4 常用的伪指令
5.5 RISC-V特有的命令行选项和伪指令
5.6 实验
第6章 链接器与链接脚本
6.1 链接器
6.2 链接脚本
6.3 加载重定位
6.4 链接重定位与链接器松弛优化
6.5 实验
第7章 内嵌汇编代码
7.1 内嵌汇编代码的基本用法
7.2 案例分析
7.3 注意事项
7.4 实验
第8章 异常处理
8.1 异常处理基本概念
8.2 与M模式相关的异常寄存器
8.3 与S模式相关的异常寄存器
8.4 异常上下文
8.5 案例分析8-1:实现SBI系统的调用
8.6 案例分析8-2:BenOS的异常处理
8.7 实验
第9章 中断处理与中断控制器
9.1 中断处理基本概念
9.2 CLINT
9.3 案例分析9-1:定时器中断
9.4 PLIC
9.5 案例分析9-2:串口中断
9.6 实验
第10章 内存管理
10.1 内存管理基础知识
10.2 RISC-V内存管理
10.3 物理内存属性与物理内存保护
10.4 案例分析:在BenOS里实现恒等映射
10.5 内存管理实验
第11章 高速缓存
11.1 为什么需要高速缓存
11.2 高速缓存的访问延时
11.3 高速缓存的工作原理
11.4 高速缓存的映射方式
11.5 虚拟高速缓存与物理高速缓存
11.6 重名和同名问题
11.7 高速缓存策略
11.8 高速缓存的维护指令
第12章 缓存一致性
12.1 为什么会产生缓存一致性问题
12.2 缓存一致性的分类
12.3 缓存一致性的解决方案
12.4 MESI协议
12.5 高速缓存伪共享
12.6 两种缓存一致性控制器
12.7 案例分析12-1:伪共享的避免
12.8 案例分析12-2:DMA和高速缓存的一致性
12.9 案例分析12-3:自修改代码的一致性
12.10 实验
第13章 TLB管理
13.1 TLB基础知识
13.2 TLB重名与同名问题
13.3 ASID
13.4 TLB管理指令
13.5 TLB案例分析
第14章 原子操作
14.1 原子操作介绍
14.2 保留加载与条件存储指令
14.3 独占内存访问工作原理
14.4 原子内存访问操作指令
14.5 比较并交换指令
第15章 内存屏障指令
15.1 产生内存屏障指令的原因
15.2 RVWMO内存模型中的一些约束条件
15.3 RISC-V中的内存屏障指令
15.4 RISC-V内存屏障指令移植指南
15.5 案例分析
15.6 模拟和测试内存屏障故障
15.7 实验
第16章 合理使用内存屏障指令
16.1 存储缓冲区与写内存屏障指令
16.2 无效队列与读内存屏障指令
16.3 内存屏障指令总结
16.4 案例分析:Linux内核中的内存屏障指令
16.5 实验
第17章 与操作系统相关的内容
17.1 C语言常见的陷阱
17.2 创建进程时需注意的关键点
17.3 简易进程调度器
17.4 让进程运行在用户模式
17.5 系统调用
17.6 实现clone系统调用
17.7 实验
第18章 可伸缩矢量计算与优化
18.1 矢量计算基本概念
18.2 RVV寄存器
18.3 配置编译和运行环境
18.4 RVV算术指令格式
18.5 配置指令
18.6 加载和存储指令
18.7 矢量掩码指令
18.8 矢量整型算术指令
18.9 案例分析18-1:使用RVV指令优化strcmp()函数
18.10 案例分析18-2:RGB24转BGR24
18.11 案例分析18-3:4×4矩阵乘法运算
18.12 案例分析18-4:使用RVV内置函数
18.13 案例分析18-5:自动矢量优化
18.14 术语
18.15 实验
第19章 压缩指令扩展
19.1 RISC-V指令集的特点
19.2 RVC支持的指令格式与指令编码
第20章 虚拟化扩展
20.1 虚拟化技术介绍
20.2 RISC-V虚拟化扩展
20.3 RISC-V内存虚拟化
20.4 RISC-V虚拟化扩展中的新增指令
20.5 进入和退出虚拟机
20.6 中断虚拟化
20.7 案例分析20-1:进入和退出虚拟机
20.8 案例分析20-2:建立虚拟化两阶段地址映射
20.9 案例分析20-3:在虚拟机中实现虚拟定时器
20.10 案例分析20-4:在VMM中加载和存储虚拟机内存地址
20.11 案例分析20-5:在VMM中模拟串口设备
20.12 实验
第21章 RISC-V高性能处理器架构分析
21.1 处理器架构基础
21.2 香山处理器架构分析
21.3 SiFive P870处理器核心分析
21.4 SiFive X280处理器核心分析
RISC-V体系结构自测题
附录A RISC-V体系结构自测题的参考答案与提示
附录B RV64I指令速查表
附录C RV64M指令速查表
附录D RV64常用伪指令速查表
更新时间:2024-09-23 17:57:00