×
暂无评论
图文详情
  • ISBN:9787115603609
  • 装帧:简裝本
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:440
  • 出版时间:2023-02-01
  • 条形码:9787115603609 ; 978-7-115-60360-9

本书特色

一本书带你了解谷歌、苹果等科技巨头看好的RISC-V体系结构



1.一线芯片公司工程师撰写,系统介绍RISC-V体系结构,总结常见陷阱以及项目经验



2.图文并茂,用通俗易懂的语言讲述RISC-V体系结构中的疑难点



3.充实理论+有趣实验,助力读者快速掌握RISC-V体系结构



4.实用丰富的配套资源,随书赠送参考代码、实验环境和免费视频讲解

内容简介

RISC-V体系结构基础知识以及香山处理器微架构实现;



RISC-V实验环境的搭建;



RISC-V指令集中常用指令、RISC-V函数的调用规范与栈;



GNU汇编器、链接器、链接脚本和GCC内嵌汇编代码。



RISC-V体系结构中的中断和异常处理;



RISC-V体系结构中的内存管理、高速缓存、缓存一致性;



RISC-V体系结构中的TLB管理、原子操作和内存屏障指令;



RSIC-V体系结构中的压缩指令扩展;



RISC-V体系结构中的虚拟化扩展;



RISC-V体系结构中的可伸缩矢量指令扩展。

目录

第 1章 RISC-V体系结构基础知识 1



1.1 RISC-V介绍 1



1.1.1 RISC-V指令集优点 1



1.1.2 RISC-V指令集扩展 2



1.1.3 RISC-V商业化发展 2



1.2 RISC-V体系结构介绍 3



1.2.1 RISC-V体系结构 3



1.2.2 采用RISC-V体系结构的常见处理器 3



1.2.3 RISC-V体系结构中的基本概念 4



1.2.4 SBI服务 5



1.3 RISC-V寄存器 6



1.3.1 通用寄存器 6



1.3.2 系统寄存器 7



1.3.3 U模式下的系统寄存器 8



1.3.4 S模式下的系统寄存器 9



1.3.5 M模式下的系统寄存器 11



1.4 香山处理器介绍 15



1.4.1 香山处理器体系结构 15



1.4.2 香山处理器的前端子系统 16



1.4.3 香山处理器的后端子系统 18



1.4.4 香山处理器的访存子系统 20



1.4.5 香山处理器的L2/L3高速缓存 25





第 2章 搭建RISC-V实验环境 29



2.1 实验平台 29



2.1.1 QEMU 29



2.1.2 NEMU 30



2.2 搭建实验环境 31



2.2.1 实验2-1:输出“Welcome RISC-V!” 31



2.2.2 实验2-2:单步调试BenOS和MySBI 32



2.3 BenOS和MySBI基础实验代码解析 34



2.3.1 MySBI基础代码分析 34



2.3.2 BenOS基础代码分析 37



2.3.3 合并BenOS和MySBI 41



2.4 QEMU + RISC-V + Linux实验平台 41





第3章 基础指令集 44



3.1 RISC-V指令集介绍 44



3.2 RISC-V指令编码格式 45



3.3 加载与存储指令 46



3.4 PC相对寻址 49



3.5 移位操作 53



3.6 位操作指令 55



3.7 算术指令 56



3.8 比较指令 57



3.9 无条件跳转指令 58



3.10 条件跳转指令 59



3.11 CSR指令 61



3.12 寻址范围 62



3.13 陷阱:为什么ret之后就进入死循环 62



3.14 实验 64



3.14.1 实验3-1:熟悉加载指令 64



3.14.2 实验3-2:PC相对地址寻址 64



3.14.3 实验3-3:memcpy()函数的实现 65



3.14.4 实验3-4:memset()函数的实现 65



3.14.5 实验3-5:条件跳转指令1 65



3.14.6 实验3-6:条件跳转指令2 66



3.14.7 实验3-7:子函数跳转 66



3.14.8 实验3-8:在汇编中实现串口输出功能 66





第4章 函数调用规范与栈 67



4.1 函数调用规范 67



4.2 入栈与出栈 70



4.3 RISC-V栈的布□ 72



4.3.1 不使用FP的栈布□ 72



4.3.2 使用FP的栈布□ 74



4.3.3 栈回溯 76



4.4 实验 78



4.4.1 实验4-1:观察栈布□ 78



4.4.2 实验4-2:观察栈回溯 78





第5章 GNU汇编器 79



5.1 编译流程与ELF文件 79



5.2 一个简单的汇编程序 82



5.3 汇编语法 84



5.3.1 注释 84



5.3.2 符号 84



5.4 常用的伪指令 85



5.4.1 对齐伪指令 85



5.4.2 数据定义伪指令 86



5.4.3 与函数相关的伪指令 87



5.4.4 与段相关的伪指令 87



5.4.5 与宏相关的伪指令 89



5.4.6 与文件相关的伪指令 91



5.5 RISC-V依赖特性 91



5.5.1 RISC-V特有的命令行选项 91



5.5.2 RISC-V特有的伪指令 92



5.6 实验 92



5.6.1 实验5-1:汇编语言练习—查找□□数 92



5.6.2 实验5-2:汇编语言练习—通过C语言调用汇编函数 92



5.6.3 实验5-3:汇编语言练习—通过汇编语言调用C函数 92



5.6.4 实验5-4:使用汇编伪操作实现一张表 92



5.6.5 实验5-5:汇编宏的使用 93





第6章 链接器与链接脚本 94



6.1 链接器 94



6.2 链接脚本 95



6.2.1 一个简单的链接程序 95



6.2.2 设置入口点 96



6.2.3 基本概念 97



6.2.4 符号赋值与引用 97



6.2.5 当前位置计数器 98



6.2.6 SECTIONS命令 99



6.2.7 常用的内置函数 101



6.3 加载重定位 103



6.3.1 BenOS重定位 103



6.3.2 OpenSBI和Linux内核重定位 105



6.4 链接重定位与链接器松弛优化 108



6.4.1 链接重定位 108



6.4.2 函数跳转优化 112



6.4.3 符号地址访问优化 114



6.5 实验 116



6.5.1 实验6-1:分析链接脚本 116



6.5.2 实验6-2:输出每个段的内存布□ 116



6.5.3 实验6-3:加载地址不等于运行地址 117



6.5.4 实验6-4:设置链接地址 117



6.5.5 实验6-5:链接器松弛优化1 117



6.5.6 实验6-6:链接器松弛优化2 117



6.5.7 实验6-7:分析Linux 5.15内核的链接脚本 117





第7章 内嵌汇编代码 118



7.1 内嵌汇编代码基本用法 118



7.2 案例分析 124



7.3 注意事项 128



7.4 实验 128





第8章 异常处理 130



8.1 异常处理基本概念 130



8.2 与M模式相关的异常寄存器 133



8.3 与S模式相关的异常寄存器 137



8.4 异常上下文 139



8.5 案例分析8-1:实现SBI系统调用 142



8.6 案例分析8-2:BenOS的异常处理 148



8.7 实验 154





第9章 中断处理与中断控制器 156



9.1 中断处理基本概念 156



9.2 CLINT 159



9.3 案例分析9-1:定时器中断 160



9.4 PLIC 164



9.5 案例分析9-2:串口中断 167



9.6 实验 171





第 10章 内存管理 172



10.1 内存管理基础知识 172



10.2 RISC-V内存管理 178



10.3 物理内存属性与物理内存保护 187



10.4 案例分析10-1:在BenOS里实现恒等映射 190



10.5 内存管理实验 204





第 11章 高速缓存 207



11.1 为什么需要高速缓存 207



11.2 高速缓存的访问延时 208



11.3 高速缓存的工作原理 210



11.4 高速缓存的映射方式 212



11.5 虚拟高速缓存与物理高速缓存 215



11.6 重名和同名问题 216



11.7 高速缓存策略 220



11.8 高速缓存的维护指令 221





第 12章 缓存一致性 224



12.1 为什么需要缓存一致性 224



12.2 缓存一致性的分类 225



12.3 缓存一致性的解决方案 227



12.4 MESI协议 228



12.5 高速缓存伪共享 237



12.6 两种缓存一致性控制器 239



12.7 案例分析12-1:伪共享的避免 241



12.8 案例分析12-2:DMA和高速缓存的一致性 242



12.9 案例分析12-3:自修改代码的一致性 244



12.10 实验 245





第 13章 TLB管理 246



13.1 TLB基础知识 247



13.2 TLB重名与同名问题 249



13.3 ASID 251



13.4 TLB管理指令 253



13.5 TLB案例分析 256



第 14章 原子操作 261



14.1 原子操作介绍 261



14.2 保留加载与条件存储指令 262



14.3 独占内存访问工作原理 263



14.4 原子内存访问操作指令 266



14.5 比较并交换操作 270





第 15章 内存屏障指令 275



15.1 内存屏障指令产生的原因 275



15.2 RISC-V约束条件 280



15.3 RISC-V中的内存屏障指令 284



15.4 RISC-V内存屏障指令移植指南 286



15.5 案例分析 288



15.6 模拟和测试内存屏障故障 291



15.7 实验 297





第 16章 合理使用内存屏障指令 299



16.1 存储缓冲区与写内存屏障指令 300



16.2 无效队列与读内存屏障指令 305



16.3 内存屏障指令总结 307



16.4 案例分析:Linux内核中的内存屏障指令 308



16.5 实验 315





第 17章 与操作系统相关的内容 316



17.1 C语言常见陷阱 317



17.2 创建进程 320



17.3 简易进程调度器 327



17.4 让进程运行在用户模式 335



17.5 系统调用 338



17.6 实现clone系统调用 341



17.7 实验 343





第 18章 可伸缩矢量计算与优化 345



18.1 矢量计算基本概念 345



18.2 RVV寄存器 348



18.3 配置编译和运行环境 351



18.4 RVV指令格式 357



18.5 配置指令 358



18.6 加载和存储指令 360



18.7 矢量掩码指令 369



18.8 矢量整型算术指令 372



18.9 案例分析18-1:使用RVV指令优化strcmp()函数 377



18.10 案例分析18-2:RGB24转BGR24 380



18.11 案例分析18-3:4 × 4矩阵乘法运算 382



18.12 案例分析18-4:使用RVV内置函数 388



18.13 案例分析18-5:自动矢量优化 388



18.14 术语 390



18.15 实验 391





第 19章 压缩指令扩展 393



19.1 RISC-V指令集的特点 393



19.2 RVC支持的指令格式与指令编码 394





第 20章 虚拟化扩展 396



20.1 虚拟化技术介绍 396



20.2 RISC-V虚拟化扩展 399



20.3 RISC-V内存虚拟化 404



20.4 RISC-V虚拟化扩展中的新增指令 406



20.5 进入和退出虚拟机 407



20.6 中断虚拟化 410



20.7 案例分析20-1:进入和退出虚拟机 412



20.8 案例分析20-2:建立虚拟化两阶段地址映射 415



20.9 案例分析20-3:在虚拟机中实现虚拟定时器 420



20.10 案例分析20-4:在VMM中加载和存储虚拟机内存地址 422



20.11 案例分析20-5:在VMM中模拟串口设备 424



20.12 实验 429



附录A 关于RISC-V体系结构自测题的参考答案与提示 431



附录B RV64I指令速查表 433



附录C RV64M指令速查表 437



附录D RV64常用伪指令速查表 439
展开全部

作者简介

奔跑吧Linux社区 由一群热爱开源的工程师组成,致力于开源硬件和开源软件的推广。





审校者简介



香山处理器团队



面向世界的体系结构创新开源平台,目前已形成由多家企业组成的香山联合开发团队。其中,香山处理器是由中国科学院计算技术□□□发起的开源高性能RISC-V处理器核项目。



龙蜥社区RISC-V SIG



坚持开放、开源,致力于龙蜥社区以及 RISCV 软硬件生态的共建和推广。



进迭时空



专注研发新一代高性能RISC-V处理器和计算系统,让开发者基于RISC-V芯片更自由地开发更有创意的新应用。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航