《手把手教你设计CPU——RISC-V处理器篇》
胡振波 著
(2018年5月出版)
这本书讲什么?
《手把手教你设计CPU》以极为通俗易懂的语言对RISC-V架构进行了系统而全面地介绍,并且结合蜂鸟E200系列开源处理器核对CPU设计技术进行了深入浅出的讲解,图文并茂,生动活泼,体现了作者深厚的专业技能以及将专业知识进行通俗化表述的优秀能力。令人印象深刻的是,本书作者在对RISC-V架构进行介绍的过程中,加入了大量的背景知识解读以及个人注解,使得枯燥的专业知识变得非常易于理解,可以说是难能可贵。这是一本凝聚了作者多年所学的精心之作,非常值得一读,对于RISC-V架构在国内的传播也将具有巨大的推动作用。本书作为国内不可多得的介绍RISC-V的中文书籍,相信一定会成为该领域的经典之作。
这本书目录
第一部分 CPU与RISC-V综述
第1章 一文读懂CPU之三生三世 2
1.1 眼看他起高楼,眼看他宴宾客,眼看他楼塌了——CPU众生相 3
1.1.1 ISA——CPU的灵魂 4
1.1.2 CISC与RISC 5
1.1.3 32位与64位架构 6
1.1.4 ISA众生相 6
1.1.5 CPU的领域之分 10
1.2 ISA请扛起这口锅——为什么国产CPU尚未足够成功 12
1.2.1 MIPS系——龙芯和君正 12
1.2.2 x86系——北大众志、兆芯和海光 13
1.2.3 Power系——中晟宏芯 13
1.2.4 Alpha系——申威 14
1.2.5 ARM系——飞腾、华为海思、展讯和华芯通 14
1.2.6 背锅侠ISA 15
1.3 人生已是如此艰难,你又何必拆穿——CPU从业者的无奈 17
1.4 无敌是多么寂寞——ARM统治着的世界 18
1.4.1 独乐乐与众乐乐——ARM公司的盈利模式 18
1.4.2 小个子有大力量——无处不在的Cortex-M系列 21
1.4.3 移动王者——Cortex-A系列在手持设备领域的巨大成功 23
1.4.4 进击的巨人——ARM进军PC与服务器领域的雄心 25
1.5 东边日出西边雨,道是无晴却有晴——RISC-V登场 25
1.6 原来你是这样的“薯片”——ARM的免费计划 28
1.7 旧时王谢堂前燕,飞入寻常百姓家——你也可以设计自己的处理器 28
第2章 大道至简——RISC-V架构之魂 29
2.1 简单就是美——RISC-V架构的设计
哲学 30
2.1.1 无病一身轻——架构的篇幅 30
2.1.2 能屈能伸——模块化的
指令集 32
2.1.3 浓缩的都是精华——指令的数量 32
2.2 RISC-V指令集架构简介 33
2.2.1 模块化的指令子集 33
2.2.2 可配置的通用寄存器组 34
2.2.3 规整的指令编码 34
2.2.4 简洁的存储器访问指令 34
2.2.5 高效的分支跳转指令 35
2.2.6 简洁的子程序调用 36
2.2.7 无条件码执行 37
2.2.8 无分支延迟槽 37
2.2.9 零开销硬件循环 38
2.2.10 简洁的运算指令 38
2.2.11 优雅的压缩指令子集 39
2.2.12 特权模式 40
2.2.13 CSR寄存器 40
2.2.14 中断和异常 40
2.2.15 矢量指令子集 40
2.2.16 自定制指令扩展 41
2.2.17 总结与比较 41
2.3 RISC-V软件工具链 42
2.4 RISC-V和其他开放架构有何不同 44
2.4.1 平民英雄——OpenRISC 44
2.4.2 豪门显贵——SPARC 44
2.4.3 名校优生——RISC-V 45
第3章 乱花渐欲迷人眼——盘点RISC-V商业版本与开源版本 46
3.1 各商业与开源版本综述 47
3.1.1 Rocket Core(开源) 47
3.1.2 BOOM Core(开源) 49
3.1.3 Freedom SoC(开源) 50
3.1.4 LowRISC SoC(开源) 50
3.1.5 PULPino Core and SoC(开源) 50
3.1.6 PicoRV32 Core(开源) 51
3.1.7 SCR1 Core(开源) 51
3.1.8 ORCA Core(开源) 51
3.1.9 Andes Core(商业IP) 52
3.1.10 Microsemi Core(商业IP) 52
3.1.11 Codasip Core(商业IP) 53
3.1.12 蜂鸟E200 Core & SoC(开源) 53
3.2 总结 53
第4章 中国第一个开源RISC-V——蜂鸟E200系列超低功耗Core & SoC 54
4.1 与众不同的蜂鸟E200处理器 55
4.2 蜂鸟E200简介——蜂鸟虽小,
五脏俱全 56
4.3 蜂鸟E200型号系列 57
4.4 蜂鸟E200性能指标 58
4.5 蜂鸟E200配套SoC 59
4.6 蜂鸟E200配置选项 60
第二部分 手把手教你使用
Verilog设计CPU
第5章 先见森林,后观树木——蜂鸟E200设计总览和顶层介绍 65
5.1 处理器硬件设计概述 66
5.1.1 架构和微架构 66
5.1.2 CPU、处理器、Core和
处理器核 66
5.1.3 处理器设计和验证的特点 66
5.2 蜂鸟E200处理器核设计哲学 67
5.3 蜂鸟E200处理器核RTL代码风格
介绍 68
5.3.1 使用标准DFF模块例化生成
寄存器 68
5.3.2 推荐使用assign语法替代if-else和case语法 70
5.3.3 其他若干注意事项 71
5.3.4 小结 72
5.4 蜂鸟E200模块层次划分 72
5.5 蜂鸟E200处理器核源代码 73
5.6 蜂鸟E200处理器核配置选项 73
5.7 蜂鸟E200处理器核支持的RISC-V
指令子集 74
5.8 蜂鸟E200处理器流水线结构 74
5.9 蜂鸟E200处理器核顶层接口介绍 74
5.10 总结 77
第6章 流水线不是流水账——蜂鸟E200
流水线介绍 78
6.1 处理器流水线概述 79
6.1.1 从经典的五级流水线说起 79
6.1.2 可否不要流水线——流水线和状态机的关系 81
6.1.3 深处种菱浅种稻,不深不浅种荷花——流水线的深度 81
6.1.4 向上生长——越来越深的
流水线 82
6.1.5 向下生长——越来越浅的
流水线 83
6.1.6 总结 83
6.2 处理器流水线中的乱序 83
6.3 处理器流水线中的反压 84
6.4 处理器流水线中的冲突 84
6.4.1 流水线中的资源冲突 84
6.4.2 流水线中的数据冲突 85
6.5 蜂鸟E200处理器的流水线 86
6.5.1 流水线总体结构 86
6.5.2 流水线中的冲突 87
6.6 总结 87
第7章 万事开头难吗——一切从取指令 开始 88
7.1 取指概述 89
7.1.1 取指特点 89
7.1.2 如何快速取指 90
7.1.3 如何处理非对齐指令 91
7.1.4 如何处理分支指令 92
7.2 RISC-V架构特点对于取指的简化 97
7.2.1 规整的指令编码格式 97
7.2.2 指令长度指示码放于低位 97
7.2.3 简单的分支跳转指令 98
7.2.4 没有分支延迟槽指令 100
7.2.5 提供明确的静态分支预测依据 100
7.2.6 提供明确的RAS依据 101
7.3 蜂鸟E200处理器的取指实现 101
7.3.1 IFU总体设计思路 102
7.3.2 Mini-Decode 103
7.3.3 Simple-BPU分支预测 105
7.3.4 PC生成 109
7.3.5 访问ITCM和BIU 111
7.3.6 ITCM 115
7.3.7 BIU 116
7.4 总结 116
第8章 一鼓作气,执行力是关键—— 执行 117
8.1 执行概述 118
8.1.1 指令译码 118
8.1.2 指令执行 118
8.1.3 流水线的冲突 119
8.1.4 指令的交付 119
8.1.5 指令发射、派遣、执行、写回的顺序 119
8.1.6 分支解析 121
8.1.7 小结 121
8.2 RISC-V架构特点对于执行的简化 122
8.2.1 规整的指令编码格式 122
8.2.2 优雅的16位指令 122
8.2.3 精简的指令个数 122
8.2.4 整数指令都是两操作数 123
8.3 蜂鸟E200处理器的执行实现 123
8.3.1 执行指令列表 123
8.3.2 EXU总体设计思路 123
8.3.3 译码 124
8.3.4 整数通用寄存器组 130
8.3.5 CSR寄存器 133
8.3.6 指令发射派遣 134
8.3.7 流水线冲突、长指令和OITF 139
8.3.8 ALU 145
8.3.9 高性能乘除法 157
8.3.10 浮点单元 158
8.3.11 交付 159
8.3.12 写回 159
8.3.13 协处理器扩展 160
8.3.14 小结 160
第9章 善始者实繁,克终者盖寡——交付 161
9.1 处理器交付、取消、冲刷 162
9.1.1 处理器交付、取消、冲刷简介 162
9.1.2 处理器交付常见实现策略 163
9.2 RISC-V架构特点对于交付的简化 164
9.3 蜂鸟E200处理器交付硬件实现 164
9.3.1 分支预测指令的处理 165
9.3.2 中断和异常的处理 168
9.3.3 多周期执行指令的交付 169
9.3.4 小结 169
第10章 让子弹飞一会儿——写回 170
10.1 处理器的写回 171
10.1.1 处理器写回功能简介 171
10.1.2 处理器写回常见策略 171
10.2 蜂鸟E200处理器的写回硬件实现 171
10.2.1 最终写回仲裁 172
10.2.2 OITF和长指令写回仲裁 174
10.2.3 小结 177
第11章 哈弗还是比亚迪—— 存储器架构 178
11.1 存储器架构概述 179
11.1.1 谁说处理器一定要有缓存 179
11.1.2 处理器一定要有存储器 180
11.1.3 ITCM和DTCM 182
11.2 RISC-V架构特点对于存储器访问指令的简化 183
11.2.1 仅支持小端格式 183
11.2.2 无地址自增自减模式 183
11.2.3 无“一次读多个数据”和“一次写多个数据”指令 183
11.3 RISC-V架构的存储器相关指令 184
11.3.1 Load和Store指令 184
11.3.2 Fence指令 184
11.3.3 “A”扩展指令 184
11.4 蜂鸟E200处理器存储器子系统硬件实现 185
11.4.1 存储器子系统总体设计思路 185
11.4.2 AGU 186
11.4.3 LSU 190
11.4.4 ITCM和DTCM 192
11.4.5 “A”扩展指令处理 195
11.4.6 Fence与Fence.I指令处理 200
11.4.7 BIU 202
11.4.8 ECC 202
11.4.9 小结 202
第12章 黑盒子的窗口——总线接口单元BIU 203
12.1 片上总线协议概述 204
12.1.1 AXI 204
12.1.2 AHB 204
12.1.3 APB 205
12.1.4 TileLink 205
12.1.5 总结比较 205
12.2 自定义总线协议ICB 206
12.2.1 ICB总线协议简介 206
.....................
让我印象深刻的是,作者在讲解过程中,非常注重实践的指导性。这本书不仅仅是理论的堆砌,它真正地将读者带入了“设计”这个动词本身。当我读到关于Verilog HDL的章节时,作者的讲解非常清晰,而且提供了大量的代码示例。这些代码不仅仅是片段,而是能够构成一个完整处理器的模块。作者会详细解释每一行代码的含义,以及它对应于硬件设计的哪一部分。更难能可贵的是,书中还提供了仿真和调试的建议,这对于初学者来说至关重要。我尝试着跟着书中的例子,搭建了一个简单的仿真环境,亲眼看到我的代码在仿真器里运行,指令被正确地执行,这给我带来了巨大的成就感。感觉自己不再是旁观者,而是真正参与到了CPU的设计过程中。
评分阅读过程中,我感受到了作者对于RISC-V指令集深入浅出的理解。他能够将RISC-V的设计哲学,比如其精简指令集(RISC)的优势,以及开放标准的意义,用非常通俗易懂的语言阐述出来。我尤其欣赏他对RISC-V指令的分类和讲解,能够让我清晰地分辨出不同指令的用途,以及它们在处理器中是如何被高效地处理的。书中对于指令流水线的讲解,更是让我受益匪浅。从单周期到多周期,再到 Pipelining 的概念,作者层层递进,将原本复杂的流水线操作分解为一个个可控的步骤,并详细解释了其中的挑战,比如冒险(Hazard)的产生以及解决方法。这种细致入微的讲解,让我对现代处理器的内部工作原理有了更深层次的认识。
评分初次拿到这本《RISC-V处理器设计实战》时,我最直观的感受就是它的实在与接地气。书名里的“手把手教你”绝非虚言,我一直觉得CPU设计是个高高在上、门槛极高的领域,但这本书的开篇就以一种非常友好的姿态,将复杂的概念拆解开来,一步步引导读者建立起基础认知。它不是那种上来就抛出大量晦涩术语的书,而是从最基本的数字逻辑原理讲起,将它们与CPU的构成紧密联系。我尤其欣赏它在讲解RISC-V指令集时,并没有仅仅罗列指令,而是结合了实际的应用场景,让你明白为什么会有这些指令,以及它们在处理器执行过程中扮演的角色。书中大量穿插的图示和伪代码,让抽象的逻辑变得可视化,我常常跟着书中的步骤,在自己的脑海里或者纸上画出数据流和控制流,感觉就像在搭建一个真实的积木模型。
评分这本书最吸引我的地方在于,它将“自主设计”的理念贯穿始终。作者并没有止步于讲解现有的CPU设计,而是鼓励读者去思考如何根据自己的需求去定制和优化处理器。他在书中提出了一些开放性的思考题,引导读者去探索不同的设计思路和权衡。例如,在讨论不同指令集扩展的时候,作者会让你思考在特定应用场景下,选择哪些扩展会更有效率。这种培养独立思考和解决问题能力的设计,让我觉得这本书不仅仅是一本技术手册,更是一本“设计思维”的启蒙书。它让我明白,学习CPU设计,最终是为了能够“创造”,而不是仅仅“复刻”。我开始觉得,设计一个属于自己的CPU,或许并没有想象中那么遥不可及。
评分这本书的循序渐进是我最为看重的一点。它并没有急于求成,而是像一位耐心的老师,确保你真正理解了前一步的内容,才会进入下一个环节。我特别喜欢它在引入RISC-V架构后,没有立刻就跳到复杂的流水线设计,而是先从一个非常简单的单周期处理器模型入手。通过这个基础模型,你可以清晰地看到指令的取指、译码、执行、访存和写回这五个基本阶段是如何协同工作的。然后,作者再逐步引入概念,比如时序逻辑、寄存器堆、ALU等关键组件的实现细节,并且会解释它们是如何被集成到处理器中的。每一次知识点的推进,都伴随着对前一阶段的巩固和提升。我觉得这种“小步快跑”的方式,大大降低了学习难度,让我这个初学者也能感受到掌握核心技术的乐趣,而不是被海量的信息淹没。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有