9787115480521 9787115364692
手把手教你设计CPU——RISC-V处理器篇
内容简介本书是一本介绍通用CPU设计的入门书,以通俗的语言介绍了CPU和RISC-V架构,力求为读者揭开CPU设计的神秘面纱,打开计算机体系结构的大门。
本书共分为四部分。一部分是CPU与RISC-V的综述,帮助初学者对CPU和RISC-V快速地建立起认识。二部分讲解如何使用Verilog设计CPU,使读者掌握处理器核的设计精髓。三部分主要介绍
蜂鸟E203配套的SoC和软件平台,使读者实现蜂鸟E203 RISC-V处理器在FPGA原型平台上的运行。四部分是附录,介绍了RISC-V指令集架构,辅以作者加入的背景知识解读和注解,以便于读者理
解。
本书不仅适合CPU或芯片设计相关从业者阅读使用,也适合作为大中专院校相关师生学习RISC-V处理器设计(使用Verilog语言)和CPU设计的指导用书。
目录一部分 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架构特点对于执行的简化 121
8.2.1 规整的指令编码格式 122
8.2.2 优雅的16位指令 122
8.2.3 精简的指令个数 122
8.2.4 整数指令都是两操作数 122
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处理器存储
内容简介
《自己设计制作CPU与单片机》是一本为有志于计算机CPU设计的人员所写的书,不论你是狂热的友,还是精明的计算机工作者。
《自己设计制作CPU与单片机》以作者几十年学习设计制作CPU与通用单片机的经历,来告诉你如何从无到有地设计属于你自己的CPU和可以运行用户程序的单片机。书中以作者的十几个CPU设计工程为主线,展示了精简指令RISC和复杂指令CISC计算机CPU的设计方法。既有硬件编程,又有原理图设计,适合软硬件人员学习计算机核心技术之用。
《自己设计制作CPU与单片机通过实例告诉读者,如何创造性地进行计算机产品CPU的立意和设计,介绍了人机交互和操作内核的设计方法。这是一本对要全面掌握计算机技术的人员而言必读的CPU设计制作之书。
目录
前 言
上篇 CPU设计制作入门
第1章 自己就能设计制造CPU
1.1 自己设计制作CPU有啥意义
1.2 我设计制作CPU的经历
1.3 电子电路设计制作的新变化
1.4 自己设计CPU的条件
1.5 创新CPU设计的意义
第2章 进入硬件设计的天地
2.1 搭建自己的制造工厂
2.2 设计制造CPU需要热身
2.3 硬件设计语言Verilog HDL
2.4 Verilog HDL语句和模块
2.5 Verilog HDL其他常用语句
第3章 自己创造CPU的方法
3.1 深刻理解CPU的结构
3.2 自创CPU的一般步骤
3.3 如何设计自己的指令
3.4 指令分析的一般性总结
3.5 让CPU运行程序
第4章 一个简单CPU的设计
4.1 创建一个CPU设计工程
4.2 剖析这个CPU设计程序
4.3 CPU行为的描述方法
4.4 如何让CPU运行软件程序
4.5 CPU设计工程小结
第5章 自制通用CPU与单片机
5.1 实体结构与器件应用
5.2 通用CPU指令设计
5.3 用汇编程序检验CPU设计
5.4 外设与CPU接口设计
5.5 设备驱动程序设计
5.6 时钟设计
5.7 开发板连接程序设计
5.8 FPGA引脚连接
5.9 操作内核设计
5.10 烧制CPU制作单片机
第6章 流水线CPU设计
6.1 流水线结构
6.2 个流水线CPU
6.3 循环流水线CPU
第7章 非透明流水线通用单片机
7.1 三级流水线计算机设计思想
7.2 重编指令
7.3 流水线通用CPU设计
7.4 流水线操作内核设计
第8章 流水线编程的透明设计
8.1 分支指令透明化
8.2 其他指令透明化
8.3 缓冲区连接
8.4 开发板的连接
8.5 烧制运行与测试
中篇 深入CPU设计
第9章 信息与信息处理
9.1 信息与媒体
9.2 信息处理与数据
第10章 机器表示数和运算
10.1 限位记数
10.2 解决正负数运算的对称制
10.3 对称制加法的溢出
10.4 信息的二进制表示
第11章 逻辑代数是CPU的基石
11.1 逻辑代数的概念
11.2 逻辑代数的基本运算规则
第12章 的逻辑电路
12.1 二极管和三极管
12.2 依据表达式作电路
12.3 真值表与逻辑函数
第13章 元器件与线路设计原理
13.1 RS触发器
13.2 D型触发器
13.3 通断控制开关电路
13.4 带预置清除端的边沿触发器
13.5 线路数据传输
13.6 寄存器原理
13.7 译码器和多路选择器
第14章 CPU的器件设计
14.1 原理图设计方法
14.2 加减法运算器设计
14.3 分段加减法运算器设计
14.4 通用计数器
14.5 标志线的设计
14.6 移位寄存器设计
14.7 乘法运算器的设计
14.8 通用乘法运算器设计
14.9 除法运算器设计
14.10 译码器的设计
14.11 浮点加减法运算器设计
14.12 节拍器的设计
14.13 存储器设计
14.14 总线结构设计
第15章 X86型CPU及单片机设计
15.1 PMC硬件构成
15.2 CPU的逻辑结构
15.3 指令设计
15.4 控制矩阵
15.5 控制矩阵生成器
15.6 控制矩阵生成器的使用
15.7 PMC110总线结构
15.8 CPU顶层总线结构
15.9 输入缓冲接口设计
15.10 PMC110CPU与外设连接
15.11 PMC110操作核心设计
15.12 PMC110 顶层与引脚
第16章 带LCD的通用单片机
16.1 FM12864J液晶屏
16.2 FM12864J逻辑结构与控制
16.3 LCD读写控制
16.4 LCD帧控制程序
16.5 字库设计程序
16.6 时钟和送显信号设计
16.7 内外总线连接
16.8 开发板连接程序
16.9 EP1C12Q240增加引脚连接
16.10 带LCD单片机顶层文件
16.11 带LCD单片机运行测试
第17章 动态CPU的思想方法
17.1 历史背景
17.2 并行计算机冲突概述
17.3 PU-MU-CHL并行结构——计算机核心重组
17.4 PU与MU连接控制
17.5 动态计算机的整机结构
第18章 动态CPU设计实例
18.1 PMC362CPU逻辑结构
18.2 PMC362CPU结构设计
18.3 PU设计
18.4 PU-MU指令
18.5 MU设计
18.6 CHL设计
18.7 顶层结构
18.8 设备连接优先级设计
18.9 主要部件和特色
18.10 测试程序设计
18.11 PMC362程序并行执行仿真
18.12 下载到开发板上运行检验
第19章 PMC计算机应用
19.1 PMC110汇编语言设计工具
19.2 程序输入装填与执行
19.3 复位与复杂操作
19.4 需要知道的限制
第20章 汇编语言程序设计
20.1 汇编程序的基本结构
20.2 指令的分类
20.3 程序设计
20.4 宏指令
20.5 汇编程序编译方法
20.6 典型问题求解
20.7 虚拟存储器结构设计
下篇 自己制作单片机
第21章 自制单片机器件与环境
21.1 自制计算机整体结构
21.2 PMC计算机的供电
21.3 输入设备
21.4 显示输出设备
21.5 PCB印刷电路板
21.6 个人设计制作计算机所需的工作环境
第22章 PMC110计算机电路设计
22.1 计算机辅助设计软件PADS
22.2 基本型PMC电路的原理图设计
22.3 PMC110计算机PCB设计
22.4 器件PCB封装设计
第23章 计算机组装与下载
23.1 PCB检测
23.2 器件焊接
23.3 上电检测和断电修正
附录
这本书的名字确实有点长,让我这个刚入门的爱好者有点被吓到,但看到“现货”两个字,心里还是有点小期待的。我一直对CPU的设计充满了好奇,尤其是RISC-V这种开放指令集的出现,让我觉得亲手设计一个处理器不再是遥不可及的梦想。我希望这本书能从最基础的概念讲起,比如什么是指令集,CPU的各个组成部分(ALU、寄存器、控制器等)是如何协同工作的。我特别关注的是,书中是否能用通俗易懂的语言解释复杂的数字逻辑原理,比如如何用门电路构建出加法器、多路选择器这些基础模块。还有,它会不会引导我如何选择合适的开发工具,比如Verilog/VHDL语言、仿真器以及FPGA开发板。如果书中能提供一些从零开始的简单CPU设计案例,哪怕只是一个极简的RISC-V核心,那就太棒了!我最怕的是那种一开始就充斥着大量专业术语和复杂图表的书,让人读了半页就想放弃。希望这本书能像一个经验丰富的老师,耐心地带着我一步步走进CPU设计的殿堂,让我真正理解“设计CPU”是怎么一回事,而不仅仅是停留在理论层面。我希望它能帮助我建立起对CPU底层架构的清晰认知,为我未来更深入的学习打下坚实的基础。
评分我之前尝试过一些单片机相关的学习,但总是感觉停留在应用层面,对于其内部的处理器设计了解甚少。这本书的副标题“自己设计制作CPU与单片机 芯片处理器设计书籍”深深吸引了我,我特别想知道它是否能真正教会我“设计”而不是“使用”。我期待它能详细讲解CPU的设计流程,从需求分析、架构设计,到逻辑实现、验证测试。特别是对于“自己设计制作”这部分,我希望它能提供一些可行的方案,比如使用FPGA来实现一个定制化的处理器,或者甚至能够指导我完成一个简单的ASIC设计流程(虽然我知道这可能比较遥远)。如果书中能结合具体的实例,比如设计一个具有特定功能的简单CPU,并说明如何将其集成到单片机系统中,那就太有价值了。我非常好奇,如何将CPU设计与实际的硬件制作结合起来,比如如何进行PCB设计、芯片流片(如果能提到的话)或者使用FPGA进行原型验证。我希望这本书能够解答我心中关于“从无到有”设计一款处理器的所有疑问,并且能让我对整个芯片设计链条有一个更全面的认识,不仅仅是CPU本身,还包括它如何与存储器、外设等协同工作。
评分这本书的名字给我的第一印象是它应该非常实用,尤其是“手把手教你设计CPU”这几个字,听起来就像一个手把手的教程。我一直对计算机底层是如何运作的感到好奇,特别是CPU这个核心部件。我希望这本书能从最基础的硬件原理讲起,比如晶体管如何构成逻辑门,逻辑门又如何组合成更复杂的电路单元,例如加法器、寄存器堆等。然后,它应该会引出指令集架构(ISA)的概念,特别是RISC-V的特点,它为什么会成为一个热门的选择,以及它的优势在哪里。我最期待的是,书中能够提供一些实际的工程示例,比如如何使用Verilog或VHDL这样的硬件描述语言来描述CPU的各个模块,并且能够演示如何对这些设计进行仿真和验证。如果它能包含一些关于时序、流水线、中断等CPU设计的关键技术,并且用清晰易懂的方式来解释,那将是极大的帮助。我希望这本书能让我明白,设计一个CPU到底需要哪些知识和技能,并且能够给我一个清晰的学习路径,让我知道接下来应该往哪个方向深入。
评分我是一个对计算机体系结构充满热情但又缺乏实践经验的学习者,这本书的标题让我眼前一亮。我特别关注“RISC-V处理器篇”这个部分,因为我对这个开放指令集架构的潜力和灵活性很感兴趣。我希望书中能够详细介绍RISC-V指令集的各个组成部分,比如基础整数指令集(RV32I/RV64I)、M扩展(乘除法)、A扩展(原子操作)等等,并且解释它们的设计理念和优缺点。我更期待的是,它能引导我如何基于RISC-V指令集设计一个属于自己的CPU核心。这可能涉及到如何选择指令集子集,如何设计CPU的微架构,比如流水线深度、分支预测策略等。我还希望能看到一些关于如何将设计好的CPU集成到实际硬件平台上的指导,例如使用FPGA进行原型开发,并提供相应的代码示例和开发流程。我希望这本书能够帮助我从理论走向实践,让我能够真正地理解CPU的设计过程,并能够独立完成一个简单的RISC-V CPU设计项目。
评分看到“自己设计制作CPU与单片机 芯片处理器设计书籍”这个标题,我脑海里立刻浮现出一个充满挑战的画面。我一直觉得,要真正理解计算机,就必须深入到硬件层面。而CPU,无疑是硬件的核心。我希望这本书能为我打开这扇门。它能否教会我如何从最基本的逻辑门开始,一步步构建出CPU的各个功能单元,比如算术逻辑单元(ALU)、控制器、寄存器文件等?我特别期待它能详细讲解CPU的设计流程,从指令集架构的选择(如果涉及到RISC-V,希望能有具体说明),到微架构的设计,再到硬件描述语言(如Verilog或VHDL)的编写,以及最终的仿真和验证。我希望书中能提供一些完整的、可执行的设计案例,哪怕是一个简单的CPU,也能让我对整个设计过程有一个切身的体会。更重要的是,我希望它能给我指明一条将CPU设计与单片机系统结合的道路,让我明白如何让设计好的CPU在实际的嵌入式系统中工作。我希望能通过这本书,获得一种“从零到一”的创造感,让我明白,设计一枚属于自己的芯片,并非天方夜谭。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有