书籍详情
《手把手教你RISC-VCPU上处理器设计CPU自主设计嵌入式开发蜂鸟E系列芯片》[51M]百度网盘|亲测有效|pdf下载
  • 手把手教你RISC-VCPU上处理器设计CPU自主设计嵌入式开发蜂鸟E系列芯片

  • 出版社:人民邮电出版社官方旗舰店
  • 热度:4360
  • 上架时间:2024-06-30 09:08:33
  • 价格:9.0
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍


内容介绍

本书系统地介绍了 CPU 设计技巧和新兴开源RISC-V架构,内容翔实,涵盖开源蜂鸟E203处理器各模块的具体实现,以及可扩展协处理器的实现机制。为了让读者学以*用,本书还集成了大量的实例,用实例把各个模块的实现方式贯穿起来。

本书适合从事CPU设计的工程师和技术爱好者阅读。

作者介绍

胡振波,芯来科技*办人兼执行官,中*RISC-V*域的先行者,拥有丰富的处理器内核开发经验,曾长期*职于外企,担任处理器内核研发核心岗位负责人。其打造的*内RISC-V开源项目——蜂鸟E203,对*内RISC-V的普及和推广起到了巨大的推动作用。以胡振波为核心*办的芯来科技目前已经成为中*先行的RISC-V处理器内核IP和解决方案公司,推出的嵌入式CPU核系列产品处于中*RISC-V处理器研发与产业化的前列。



目录

第 **分 CPU与RISC-V综述



第 *章 CPU之三生三世 2


*.* 眼看他起*楼,眼看他宴宾客,眼看他楼塌了—CPU众生相 3


*.*.* ISA—CPU的灵魂 4


*.*.2 CISC架构与RISC架构 5


*.*.3 32位架构与64位架构 6


*.*.4 ISA众生相 6


*.*.5 CPU的*域之分 **


*.2 ISA请扛起这口锅—为什么*产CPU尚未足够成熟 *2


*.2.* MIPS系—龙芯和君正 *2


*.2.2 x86系—北大众志、上海兆芯和天津海光 *3


*.2.3 Power系—中晟宏芯 *4


*.2.4 Alpha系—申威 *4


*.2.5 ARM系—飞腾、海思、展讯 *4


*.2.6 RISC-V系—平头哥、芯来科技 *6


*.2.7 背锅侠ISA *6


*.3 人生已如此艰难,你又何*拆穿—CPU从业者的*奈 *8


*.4 *敌者是多么寂寞—ARM统治着的* *9


*.4.* *乐乐与众乐乐—ARM公司的盈利模式 *9


*.4.2 小个子有大力量—*处*在的Cortex-M系列 22


*.4.3 移动*者—Cortex-A系列在手持设备*域的巨大成功 23


*.4.4 进击的巨人—ARM进军PC与服务器*域的雄心 25


*.4.5 ARM当前发展 26


*.5 东边日出西边雨,道是*晴却有晴—RISC-V登场 26


*.5.* 缘起名校 26


*.5.2 兴于开源 27


*.5.3 本土发展 29


*.6 旧时*谢堂前燕,飞入寻常*姓家—你也可以设计自己的处理器 30


第 2章 大道*简—RISC-V架构之魂 3*


2.* 简单*是美—RISC-V架构的设计理念 32


2.*.* *病*身轻—架构的篇幅 32


2.*.2 能屈能伸—模块化的指令集 34


2.*.3 浓缩的*是*华—指令的数量 34


2.2 RISC-V架构简介 35


2.2.* 模块化的指令集 35


2.2.2 可配置的通用寄存器组 36


2.2.3 规整的指令编码 36


2.2.4 简洁的存储器访问指令 37


2.2.5 *效的分支跳转指令 38


2.2.6 简洁的子程序调用 38


2.2.7 *条件码执行 39


2.2.8 *分支延迟槽 40


2.2.9 零开销硬件循环指令 40


2.2.*0 简洁的运算指令 40


2.2.** *雅的压缩指令子集 4*


2.2.*2 *权模式 42


2.2.*3 CSR 42


2.2.*4 中断和异常 42


2.2.*5 P扩展指令子集 43


2.2.*6 矢量指令子集 43


2.2.*7 自定义指令扩展 43


2.2.*8 比较 43


2.3 RISC-V软件工具链 44


2.4 RISC-V和其他开放架构有何*同 47


2.4.* 平民英雄—OpenRISC 47


2.4.2 豪门显贵—SPARC 48


2.4.3 身出*—MIPS 48


2.4.4 名校*生—RISC-V 49


第3章 乱花渐欲迷人眼—盘点RISC-V商业版本与开源版本 50


3.* 各商业版本与开源版本综述 5*


3.*.* Rocket Core 5*


3.*.2 BOOM Core 53


3.*.3 Freedom E3*0 SoC 54


3.*.4 LowRISC SoC 54


3.*.5 PULPino Core与SoC 54


3.*.6 PicoRV32 Core 55


3.*.7 SCR* Core 56


3.*.8 ORCA Core 56


3.*.9 Andes Core 56


3.*.*0 Microsemi Core 56


3.*.** Codasip Core 57


3.*.*2 Nuclei Core 57


3.*.*3 蜂鸟E203处理器核与SoC 58


3.2 小结 59


第4章 开源RISC-V—蜂鸟E203处理器核与SoC 60


4.* 与众*同的蜂鸟E203处理器 6*


4.2 蜂鸟E203处理器简介—蜂鸟虽小,五脏俱* 62


4.3 蜂鸟E203处理器的性能指标 64


4.4 蜂鸟E203处理器的配套SoC 64


4.5 蜂鸟E203处理器的配置选项 66



第二*分 手把手教你使用Verilog设计CPU


第5章 先见森林,后观树木—蜂鸟E203处理器核设计总览和*层 70


5.* 处理器硬件设计概述 7*


5.*.* 架构和微架构 7*


5.*.2 CPU、处理器、Core和处理器核 7*


5.*.3 处理器设计和验证 7*


5.2 蜂鸟E203处理器核的设计理念 72


5.3 蜂鸟E203处理器核的RTL代码风格 73


5.3.* 使用标准DFF模块例化生成寄存器 73


5.3.2 推荐使用assign语法替代if-else和case语法 75


5.3.3 其他若干注意事项 77


5.4 蜂鸟E203模块层次划分 77


5.5 蜂鸟E203处理器核的源代码 78


5.6 蜂鸟E203处理器核的配置选项 78


5.7 蜂鸟E203处理器核支持的RISC-V指令子集 79


5.8 蜂鸟E203处理器核的流水线结构 79


5.9 蜂鸟E203处理器核的*层接口 79


5.*0 小结 82


第6章 流水线*是流水账—蜂鸟E203处理器核流水线 83


6.* 处理器流水线概述 84


6.*.* 从*的5级流水线说起 84


6.*.2 可否*要流水线—流水线和状态机的关系 86


6.*.3 深处种菱浅种稻,*深*浅种荷花—流水线的深度 86


6.*.4 向上生长—越来越深的流水线 87


6.*.5 向下生长—越来越浅的流水线 88


6.2 处理器流水线中的乱序 88


6.3 处理器流水线中的反压 88


6.4 处理器流水线中的冲突 89


6.4.* 流水线中的资源冲突 89


6.4.2 流水线中的数据冲突 90


6.5 蜂鸟E203处理器的流水线 9*


6.5.* 流水线总体结构 9*


6.5.2 流水线中的冲突 92


6.6 小结 92


第7章 万事开头难— *切从取指令开始 93


7.* 取指概述 94


7.*.* 取指*点 94


7.*.2 如何快速取指 95


7.*.3 如何处理地址*对齐的指令 96


7.*.4 如何处理分支指令 97


7.2 RISC-V架构*点对于取指的简化 *02


7.2.* 规整的指令编码格式 *02


7.2.2 指令长度指示码放于低位 *02


7.2.3 简单的分支跳转指令 *03


7.2.4 没有分支延迟槽指令 *04


7.2.5 提供明确的静态分支预测依据 *05


7.2.6 提供明确的RAS依据 *05


7.3 蜂鸟E203处理器的取指实现 *06


7.3.* IFU总体设计思路 *06


7.3.2 简单译码 *08


7.3.3 简单BPU **0


7.3.4 PC生成 **4


7.3.5 访问ITCM和BIU **6


7.3.6 ITCM *20


7.3.7 BIU *20


7.4 小结 *2*


第8章 *鼓作气,执行力是关键—执行 *22


8.* 执行概述 *23


8.*.* 指令译码 *23


8.*.2 指令执行 *23


8.*.3 流水线的冲突 *24


8.*.4 指令的交付 *24


8.*.5 指令发射、派遣、执行、写回的顺序 *24


8.*.6 分支解析 *26


8.2 RISC-V架构的*点对于执行的简化 *26


8.2.* 规整的指令编码格式 *27


8.2.2 *雅的*6位指令 *27


8.2.3 *简的指令个数 *27


8.2.4 整数指令的操作数个数是*或2 *27


8.3 蜂鸟E203处理器的执行实现 *27


8.3.* 执行指令列表 *28


8.3.2 EXU总体设计思路 *28


8.3.3 译码 *29


8.3.4 整数通用寄存器组 *35


8.3.5 CSR *38


8.3.6 指令发射、派遣 *39


8.3.7 流水线冲突、长指令和OITF *43


8.3.8 ALU *49


8.3.9 交付 *62


8.3.*0 写回 *62


8.3.** 协处理器扩展 *62


8.4 小结 *63


第9章 善始者实繁,克*者盖寡—交付 *64


9.* 处理器中指令的交付、取消、冲刷 *65


9.*.* 指令交付、取消、冲刷 *65


9.*.2 指令交付的常见实现策略 *66


9.2 RISC-V架构*点对于交付的简化 *66


9.3 蜂鸟E203处理器中指令交付的硬件实现 *67


9.3.* 分支预测指令的处理 *68


9.3.2 中断和异常的处理 *7*


9.3.3 多周期执行的指令的交付 *7*


9.4 小结 *72


第 *0章 让子弹飞*会儿—写回 *73


*0.* 处理器的写回 *74


*0.*.* 处理器写回功能简介 *74


*0.*.2 处理器常见写回策略 *74


*0.2 蜂鸟E203处理器的写回硬件实现 *74


*0.2.* 最*写回仲裁 *75


*0.2.2 OITF模块和长指令写回仲裁模块 *76


*0.3 小结 *79


第 **章 哈弗还是比亚迪—存储器 *8*


**.* 存储器概述 *82


**.*.* 谁说处理器*定要有缓存 *82


**.*.2 处理器*定要有存储器 *83


**.*.3 ITCM和DTCM *85


**.2 RISC-V架构*点对于存储器访问指令的简化 *86


**.2.* *支持小端格式 *86


**.2.2 *地址自增/自减模式 *86


**.2.3 **次读多个数据和*次写多个数据的指令 *86


**.3 RISC-V架构的存储器访问指令 *87


**.3.* 存储器读和写指令 *87


**.3.2 fence指令和fence.i指令 *87


**.3.3 A扩展指令集 *87


**.4 蜂鸟E203处理器核的存储器子系统硬件实现 *88


**.4.* 存储器子系统总体设计思路 *88


**.4.2 AGU *88


**.4.3 LSU *93


**.4.4 ITCM和DTCM *95


**.4.5 A扩展指令集的硬件实现 *98


**.4.6 fence与fence.i指令的硬件实现 202


**.4.7 BIU 204


**.4.8 ECC 204


**.5 小结 204


第 *2章 黑盒子的窗口—总线接口单元 205


*2.* 片上总线协议概述 206


*2.*.* AXI 206


*2.*.2 AHB 206


*2.*.3 APB 207


*2.*.4 TileLink 207


*2.*.5 总结比较 207


*2.2 自定义总线协议ICB 208


*2.2.* ICB协议简介 208


*2.2.2 ICB协议信号 209


*2.2.3 ICB协议的时序 209


*2.3 ICB的硬件实现 2*4


*2.3.* *主多从 2*4


*2.3.2 多主*从 2*5


*2.3.3 多主多从 2*6


*2.4 蜂鸟E203处理器核BIU 2*7


*2.4.* BIU简介 2*7


*2.4.2 BIU的微架构 2*8


*2.4.3 BIU的源代码 2*8


*2.5 蜂鸟E203处理器SoC总线 2*9


*2.5.* SoC总线简介 2*9


*2.5.2 SoC总线的微架构 220


*2.5.3 SoC总线的源代码 220


*2.6 小结 22*


第 *3章 *得*说的故事—中断和异常 222


*3.* 中断和异常概述 223


*3.*.* 中断概述 223


*3.*.2 异常概述 224


*3.*.3 广义上的异常 224


*3.2 RISC-V架构异常处理机制 226


*3.2.* 进入异常 226


*3.2.2 退出异常 229


*3.2.3 异常服务程序 230


*3.3 RISC-V架构中断定义 23*


*3.3.* 中断类型 23*


*3.3.2 中断屏蔽 233


*3.3.3 中断等待 233


*3.3.4 中断*先级与仲裁 234


*3.3.5 中断嵌套 235


*3.4 RISC-V架构中与中断和异常相关的CSR 236


*3.5 蜂鸟E203处理器中异常处理的硬件实现 236


*3.5.* 蜂鸟E203处理器的异常和中断实现要点 236


*3.5.2 蜂鸟E203处理器支持的中断和异常类型 237


*3.5.3 蜂鸟E203处理器对mepc寄存器的处理 237


*3.5.4 蜂鸟E203处理器的中断接口 238


*3.5.5 蜂鸟E203处理器CLINT微架构及源代码分析 239


*3.5.6 蜂鸟E203处理器PLIC微架构及源代码分析 242


*3.5.7 蜂鸟E203处理器中交付模块对中断和异常的处理 244


*3.6 小结 248


第 *4章 最*起眼的其实是最难的—调试机制 249


*4.* 调试机制概述 250


*4.*.* 交互调试概述 250


*4.*.2 跟踪调试概述 252


*4.2 RISC-V架构的调试机制 252


*4.2.* 调试器软件的实现 253


*4.2.2 调试模式 253


*4.2.3 调试指令 254


*4.2.4 调试模式下的CSR 254


*4.2.5 调试中断 254


*4.3 蜂鸟E203处理器中的调试机制 254


*4.3.* 蜂鸟E203处理器中的交互式调试 254


*4.3.2 DTM 255


*4.3.3 硬件调试模块 256


*4.3.4 调试中断处理 259


*4.3.5 调试模式下CSR的实现 260


*4.3.6 调试机制指令的实现 26*


*4.4 小结 262


第 *5章 动如脱兔,静若处子—低功耗的诀窍 263


*5.* 处理器低功耗技术概述 264


*5.*.* 软件层面的低功耗 264


*5.*.2 系统层面的低功耗 264


*5.*.3 处理器层面的低功耗 265


*5.*.4 模块和单元层面的低功耗 265


*5.*.5 寄存器层面的低功耗 266


*5.*.6 锁存器层面的低功耗 267


*5.*.7 SRAM层面的低功耗 267


*5.*.8 组合逻辑层面的低功耗 267


*5.*.9 工艺层面的低功耗 268


*5.2 RISC-V架构的低功耗机制 268


*5.3 蜂鸟E203处理器低功耗机制的硬件实现 268


*5.3.* 蜂鸟E203处理器在系统层面的低功耗 268


*5.3.2 蜂鸟E203处理器层面的低功耗 270


*5.3.3 蜂鸟E203处理器在单元层面的低功耗 272


*5.3.4 蜂鸟E203处理器在寄存器层面的低功耗 272


*5.3.5 蜂鸟E203处理器在锁存器层面的低功耗 275


*5.3.6 蜂鸟E203处理器在SRAM层面的低功耗 276


*5.3.7 蜂鸟E203处理器在组合逻辑层面的低功耗 277


*5.3.8 蜂鸟E203处理器在工艺层面的低功耗 278


*5.4 小结 278


第 *6章 工欲善其事,*先利其器—RISC-V可扩展协处理器 279


*6.* *域*定架构 280


*6.2 RISC-V架构的可扩展性 28*


*6.2.* RISC-V架构的预留指令编码空间 28*


*6.2.2 RISC-V架构的预定义指令 282


*6.3 蜂鸟E203处理器的协处理器扩展机制—NICE 282


*6.3.* NICE指令的编码 282



*6.3.2 NICE协处理器的接口信号 283


*6.3.3 NICE协处理器的流水线接口 284


*6.3.4 NICE协处理器的存储器接口 285


*6.3.5 NICE协处理器的接口时序 286


*6.4 蜂鸟E203处理器的协处理器参考示例 290


*6.4.* 示例协处理器的实现需求 290


*6.4.2 示例协处理器的自定义指令 29*


*6.4.3 示例协处理器的硬件实现 292


*6.4.4 示例协处理器的软件驱动 292


*6.4.5 示例协处理器的性能分析 294



第三*分 开发实战


第 *7章 先冒个烟—运行Verilog仿真测试 298


*7.* E203开源项目的代码层次结构 299


*7.2 E203开源项目的测试用例 300


*7.2.* riscv-tests自测试用例 300


*7.2.2 编译ISA自测试用例 30*


*7.3 E203 开源项目的测试平台 304


*7.4 在测试平台中运行测试用例 304


第 *8章 套上壳子上路—更多实践 308



附录A RISC-V架构的指令集 3**


附录B RISC-V架构的CSR 34*


附录C RISC-V架构的PLIC 35*


附录D 存储器模型背景 359


附录E 存储器原子操作指令背景 364


附录F RISC-V指令编码列表 367


附录G RISC-V伪指令列表 374