RISC-V开放架构设计之道
  • 推荐0
  • 收藏0
  • 浏览123

RISC-V开放架构设计之道

David Patterson , Andrew Waterman (作者)  勾凌睿 (译者)

  • 书  号:9787121464096
  • 出版日期:2024-01-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 原书名: The RISC-V Reader: An Open Architecture Atlas
  • 原书号:0999249118
  • 维护人:刘皎
在芯片设计领域,RISC-V有望像Linux那样成为计算机芯片与系统创新的基石。作者Davd Patterson是RISC-V 的创始人和架构师之一,在这个领域有相当的权威性。本书是一本精简的指南,涵盖了RISC-V的重要设计思路和要点,体例采用模块化方式,非常适合作为入门教材使用
作者Davd Patterson是RISC-V 的创始人和架构师之一,在这个领域有相当的权威性。本书是一本精简的指南,涵盖了RISC-V的重要设计思路和要点,体例采用模块化方式,非常适合作为入门教材使用。
大卫·帕特森(David Patterson)在加州大学伯克利分校担任计算机科学系教授40 年,于2016 年退休,并加入“Google 大脑”项目担任杰出工程师。他还担任RISC-V 国际基金会董事会副主席和RISC-V 国际开源实验室主任。他曾被任命为伯克利计算机科学部主席,并当选计算研究协会(CRA,Computing Research Association)主席和计算机协会(ACM,Association for Computing Machinery)主席。在20 世纪80年代,他领导了四代精简指令集计算机(RISC,Reduced InstructionSet Computer)项目,伯克利最新的RISC 因此得名“RISC Five”(第五代RISC)。
他和安德鲁·沃特曼(AndrewWaterman)均为四位RISC-V 架构师中的一员。除RISC 以外,他最著名的研究项目是廉价磁盘冗余阵列(RAID,Redundant Arrays of Inexpensive Disks)。基于这项研究,他发表了多篇论文,出版了7 本书,获得了超过40 项荣誉,包括当选美国国家工程院和美国国家科学院院士,入选“硅谷工程名人堂”,获ACM、CRA 和SIGARCH 颁发的杰出成就奖。他在教学方面所获奖项包括杰出教学奖(加州大学伯克利分校)、Karlstrom杰出教育家奖(ACM)、Mulligan 教育奖章(IEEE),以及两次教科书卓越奖(Text and Academic Authors Association)。
他最近获得的荣誉包括Tapia 成就奖、BBVA 基金会知识前沿奖以及ACM 图灵奖,其中后两者与约翰·轩尼诗(John Hennessy)共同获得。他在加州大学洛杉矶分校获所有学位,也被该校授予杰出工程学院校友奖。他在南加州长大,兴趣爱好是和儿子们一起玩人体冲浪、骑自行车和踢足球,以及和妻子一起远足。他们在高中时期相爱,并于2022 年庆祝了55 周年结婚纪念日。

安德鲁·沃特曼(Andrew Waterman)是SiFive 的总工程师和联合创始人。SiFive 由RISC-V 架构的发明者们创办,旨在提供基于RISC-V 的低成本定制芯片。他获加州大学伯克利分校计算机科学博士学位。其间,他厌倦了现有指令集架构的变幻莫测,于是参与设计了RISC-V ISA 和第一款RISC-V微处理器。安德鲁在多个开源项目中均做出主要贡献,包括基于RISC-V 指令集的开源Rocket chip 生成器、Chisel 硬件构造语言,以及Linux 操作系统内核、GNU C 编译器和C 库的RISC-V 版本移植工作。他还获加州大学伯克利分校硕士学位,其间开展了RISC-V 压缩扩展的前期工作。他还获杜克大学工学学士学位。
RISC-V 自2010 年诞生以来迅速发展并普及。我们认为一本精巧的程序员指南将有助于推动它的发展,还能让初学者理解RISC-V 指令集具有吸引力的原因,并了解它与传统指令集架构(ISA)的不同之处。
本书受到其他指令集架构书籍的启发,但由于RISC-V 自身非常简洁,我们希望能写得比500 多页的优秀书籍(如See MIPS Run)更精巧。我们把篇幅控制在这些优秀书籍的1/3,至少在这个意义上我们成功了。实际上,书中前10 章介绍了模块化RISC-V 指令集的每个组成部分,总共只用了136 页,尽管平均每页插入了一张图片(共97 张)。
阐释指令集设计原则后,我们展示了RISC-V 架构师如何从过去40 年的指令集中吸取经验教训,取其精华,去其糟粕。要评价一款ISA,既要究其所取,也要究其所舍。
随后,我们通过一系列章节介绍这个模块化架构的每个组成部分。每章都包含一个RISC-V 汇编语言程序,以展示该章所述指令的用法,从而帮助汇编语言程序员学习RISC-V代码。有时,我们还会用ARM、MIPS 和x86 列出同一个程序的代码,从而突出RISC-V 的简洁性,以及在成本、功耗、性能之间权衡的优势。
为提升本书的趣味性,我们在页边加入约50 段花絮,用于介绍关于正文内容的有趣评论。我们还充分利用页边的空间,在页边加入约110 张图片,用于强调好的ISA设计示例。最后,我们为愿意钻研的读者在全书中加入约30 段补充说明。如果你对某个主题感兴趣,可以深入研读这些可选部分。略过此部分不会影响你对书中其他内容的理解,所以,如果你不感兴趣,则可以放心跳过它们。我们为计算机体系结构爱好者援引约30 篇论文和书籍,它们能够开阔你的视野。在编写本书的过程中,我们也从中获益匪浅!

为什么这么多名言引用

我们认为名言引用能提升本书的趣味性,因此在全书中穿插了25 段名言。这些名言是向初学者传递先驱智慧的一种有效方式,同时也有助于为好的ISA 设计建立文化标准。我们希望读者能了解一些领域发展史,因此在全书中引用了众多著名计算机科学家和工程师的名言。

导言和参考
我们希望这本精巧的书能成为对RISC-V 的介绍和参考资料,供有兴趣编写RISC-V代码的学生和嵌入式系统程序员使用。本书假设读者已了解至少一款指令集;否则,你可能会希望阅读我们编写的基于RISC-V 的体系结构入门书籍:Computer Organization and Design RISC-V Edition,Second Edition:The Hardware Software Interface1。
本书中参考性质的内容包括:
• 参考卡——这一页(两面)的RISC-V 总览囊括了RV32GCV 和RV64GCV,其中包含基础指令集和所有已定义的指令扩展:RVI、RVM、RVA、RVF、RVD、RVC,以及尚处在开发阶段的RVV2。
• 指令示意图——每章的第一张图片以半页的图形方式分别介绍每个指令扩展,其中通过一种易读的格式列出所有RISC-V 指令的全称,让你轻松查看每条指令的不同变种。见图2.1、图4.1、图5.1、图6.1、图7.1、图8.1、图9.1、图9.2、图9.3、图9.4 和图10.1。
• 操作码表——这些表格在一页中展示一个指令扩展的指令布局、操作码、格式类型和指令助记符。见图2.3、图3.3、图3.4、图4.2、图5.2、图5.3、图6.2、图7.4、图7.5、图7.6、图9.5 和图10.2。
• 指令列表——附录A 是对每条RISC-V 指令和伪指令的详细介绍3–4,包括操作名称和操作数、自然语言描述、寄存器传输语言定义、所在的RISC-V 扩展、指令全称、指令格式、一张带操作码的指令编码示意图,以及对应的压缩形式。令人惊讶的是,这些内容加起来不到50 页。
• 指令翻译方法——附录B 通过表格列出与RV32I 指令等价的ARM-32 和x86-32 指令,这对经验丰富的汇编语言程序员有帮助。此外,还列出一个简单的树遍历C 程序在三种指令集架构下的编译结果,以及三者之间惊人的细微差别。附录结尾包含把已有架构代码翻译到RISC-V 的若干建议,翻译工作也许比你想象的更简单。
• 索引——它按字典序排列,有助于你通过指令全称或助记符找到描述指令说明、定义或示意图的页面。

勘误和补充内容

我们计划收集勘误,每年发布若干次更新。本书将在网站上发布最新版本,同时简单介绍相对上一版本的变动。读者可在本书的网站(“链接1”)上查看历史勘误,或提交新的勘误。我们提前为你在此版本中发现的问题致歉,同时也期待你的反馈意见,来帮助我们改进本书。

本书的历史

在2017 年5 月8 日—11 日于上海举办的第六届RISC-V 研讨会上,我们了解到从业者对这本书的需求,几周后我们开始编写本书。考虑到帕特森在书籍撰写方面的丰富经验,我们当时计划请他编写大部分章节。我们两人共同组织内容结构,并担任彼此的首位审稿人。帕特森编写了第1、2、3、4、5、6、7、8、9、11 章、参考卡和前言,沃特曼编写了第10 章和附录A(本书篇幅最长的部分)、附录B,并编写了书中全部程序。沃特曼还维护了阿曼多·福克斯(Armando Fox)提供的LaTeX 工具,使我们能制作本书。

我们在2017 年秋季学期为加州大学伯克利分校的800 名学生提供了本书的beta版本。当时读者只找到了一些笔误和LaTeX 程序的问题,这些问题已在第1 版中修正/订。我们还改进了页边的图标,让其更容易记忆,同时也修订了若干印刷效果不如预期的图片。
更重要的是,第1 版丰富了第10 章,增加了超过60 个控制状态寄存器的介绍,还增加了附录B,从而帮助那些想把已有ISA 的汇编代码转换成RISC-V 的程序员。
第1 版于2017 年11 月28 日—30 日在硅谷举办的第七届RISC-V 研讨会上准时发布。
RISC-V 是伯克利一个研究项目1 的副产品,该项目致力于简化并行软硬件构建技术。

致谢
我们感谢阿曼多·福克斯(Armando Fox),因为我们使用了他的LaTeX 工具,同时他还向我们提供了出版方面的个人建议。
我们把最深切的感谢献给那些阅读本书的初稿并提供宝贵建议的人:克尔斯泰·阿桑诺维奇(Krste Asanović)、尼克尔·阿瑟雷亚(Nikhil Athreya)、切斯特·戈登·贝尔(C. Gordon Bell)、斯图尔特·霍德(Stuart Hoad)、戴维·坎特尔(David Kanter)、约翰·马沙(John Mashey)、伊凡·苏泽兰(Ivan Sutherland)、泰德·斯皮尔斯(Ted Speers)、迈克尔·泰勒(Michael Taylor)、梅根·瓦克斯(Megan Wachs)。
最后,我们感谢加州大学伯克利分校的学生在调试方面的帮助以及他们对本书的持续热忱!
我们还要感谢各位译者,他们让读者能免费获取本书的中文、日语、葡萄牙语和西班牙语版本(见“链接3”)。
大卫·帕特森 安德鲁·沃特曼
2017 年11 月16 日于加州伯克利

目录

第1章 为什么要有RISC-V 1
1.1 导言 2
1.2 模块化ISA 和增量型ISA 3
1.3 ISA 设计导论 5
1.4 全书总览 11
1.5 结语13
1.6 扩展阅读14

第2章RV32I:RISC-V 基础整数指令集16
2.1 导言17
2.2 RV32I 指令格式18
2.3 RV32I 寄存器 21
2.4 RV32I 整数计算23
2.5 RV32I 取数和存数 25
2.6 RV32I 条件分支26
2.7 RV32I 无条件跳转 27
2.8 其他RV32I 指令28
2.9 通过插入排序对比RV32I、ARM-32、MIPS-32 和x86-32 28
2.10 结语34
2.11 扩展阅读 36

第3 章RISC-V 汇编语言 37
3.1 导言38
3.2 调用约定38
3.3 汇编器 41
3.4 链接器 46
3.5 静态链接和动态链接49
3.6 加载器 49
3.7 结语50
3.8 扩展阅读50

第4章RV32M:乘法和除法指令51
4.1 导言52
4.2 结语54
4.3 扩展阅读55

第5章RV32F 和RV32D:单精度和双精度浮点数56
5.1 导言57
5.2 浮点寄存器60
5.3 浮点取数、存数和算术运算62
5.4 浮点转换和数据传送63
5.5 其他浮点指令63
5.6 通过DAXPY 程序对比RV32FD、ARM-32、MIPS-32 和x86-32 65
5.7 结语68
5.8 扩展阅读68

第6章RV32A:原子指令70
6.1 导言71
6.2 结语73
6.3 扩展阅读74

第7章RV32C:压缩指令75
7.1 导言76
7.2 对比RV32GC、Thumb-2、microMIPS 和x86-32 81
7.3 结语82
7.4 扩展阅读82

第8章RV32V:向量83
8.1 导言84
8.2 向量计算指令85
8.3 向量寄存器和动态类型86
8.4 向量取数和存数88
8.5 向量操作的并行度 89
8.6 向量操作的条件执行90
8.7 其他向量指令90
8.8 示例:用RV32V 编写DAXPY 程序92
8.9 对比RV32V、MIPS-32 MSA SIMD 和x86-32 AVX SIMD· 93
8.10 结语97
8.11 扩展阅读 99

第9章RV64:64 位地址指令· 100
9.1 导言101
9.2 通过插入排序比较RV64 与其他64 位ISA 105
9.3 程序大小112
9.4 结语113
9.5 扩展阅读114

第10章RV32/64 特权架构115
10.1 导言116
10.2 简单嵌入式系统的机器模式117
10.3 机器模式的异常处理 119
10.4 嵌入式系统中的用户模式和进程隔离 124
10.5 现代操作系统的监管模式 126
10.6 页式虚拟内存128
10.7 标识和性能CSR 133
10.8 结语136
10.9 扩展阅读 136

第11章 未来的RISC-V 可选扩展 137
11.1 “B”标准扩展:位操作 138
11.2 “E”标准扩展:嵌入式 138
11.3 “H”特权态架构扩展:支持虚拟机管理器(Hypervisor) 138
11.4 “J”标准扩展:动态翻译语言· 138
11.5 “L”标准扩展:十进制浮点 139
11.6 “N”标准扩展:用户态中断139
11.7 “P”标准扩展:紧缩SIMD 指令139
11.8 “Q”标准扩展:四倍精度浮点140
11.9 结语140
附录A RISC-V 指令列表 141
附录B 把RISC-V 直译到其他ISA 187
索引195

读者评论