本篇主要提供手把手教你设计CPU——RISC-V处理器篇胡振波著电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
图书基本信息 | |||
图书名称 | 手把手教你设计CPU——RISC-V处理器篇(异步图书出品) | 作者 | 胡振波 著 |
定价 | 99元 | 出版社 | 人民邮电出版社 |
ISBN | 9787115480521 | 出版日期 | 2018-06-01 |
字数 | 598000 | 页码 | 405 |
版次 | 装帧 | 平装 | |
开本 | 16开 | 商品重量 |
内容提要 | |
本书是一本介绍通用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综述 章一文读懂CPU之三生三世2 1.1眼看他起高楼,眼看他宴宾客,眼看他楼塌了——CPU众生相3 1.1.1ISA——CPU的灵魂4 1.1.2CISC与RISC5 1.1.332位与64位架构6 1.1.4ISA众生相6 1.1.5CPU的领域之分10 1.2ISA请扛起这口锅——为什么国产CPU尚未足够成功12 1.2.1MIPS系——龙芯和君正12 1.2.2x86系——北大众志、兆芯和海光13 1.2.3Power系——中晟宏芯13 1.2.4Alpha系——申威14 1.2.5ARM系——飞腾、华为海思、展讯和华芯通14 1.2.6背锅侠ISA15 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.2RISC-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.13CSR寄存器40 2.2.14中断和异常40 2.2.15矢量指令子集40 2.2.16自定制指令扩展41 2.2.17总结与比较41 2.3RISC-V软件工具链42 2.4RISC-V和其他开放架构有何不同44 2.4.1平民英雄——OpenRISC44 2.4.2豪门显贵——SPARC44 2.4.3名校优生——RISC-V45 第3章乱花渐欲迷人眼——盘点RISC-V商业版本与开源版本46 3.1各商业版本与开源版本综述47 3.1.1RocketCore(开源)47 3.1.2BOOMCore(开源)49 3.1.3FreedomSoC(开源)50 3.1.4LowRISCSoC(开源)50 3.1.5PULPinoCoreandSoC(开源)50 3.1.6PicoRV32Core(开源)51 3.1.7SCR1Core(开源)51 3.1.8ORCACore(开源)51 3.1.9AndesCore(商业IP)52 3.1.10MicrosemiCore(商业IP)52 3.1.11CodasipCore(商业IP)53 3.1.12蜂鸟E200Core与SoC(开源)53 3.2总结53 第4章开源RISC-V——蜂鸟E200系列超低功耗Core与SoC54 4.1与众不同的蜂鸟E200处理器55 4.2蜂鸟E200简介——蜂鸟虽小,五脏俱全56 4.3蜂鸟E200型号系列57 4.4蜂鸟E200性能指标58 4.5蜂鸟E200配套SoC59 4.6蜂鸟E200配置选项60 第二部分手把手教你使用Verilog设计CPU 第5章先见森林,后观树木——蜂鸟E200设计总览和顶层介绍65 5.1处理器硬件设计概述66 5.1.1架构和微架构66 5.1.2CPU、处理器、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.2RISC-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.1IFU总体设计思路102 7.3.2Mini-Decode103 7.3.3Simple-BPU分支预测105 7.3.4PC生成109 7.3.5访问ITCM和BIU111 7.3.6ITCM115 7.3.7BIU116 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.2RISC-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.2EXU总体设计思路123 8.3.3译码124 8.3.4整数通用寄存器组130 8.3.5CSR寄存器133 8.3.6指令发射派遣134 8.3.7流水线冲突、长指令和OITF139 8.3.8ALU145 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.2RISC-V架构特点对于交付的简化164 9.3蜂鸟E200处理器交付硬件实现164 9.3.1分支预测指令的处理165 9.3.2中断和异常的处理168 9.3.3多周期执行指令的交付169 9.3.4小结169 0章让子弹飞一会儿——写回170 10.1处理器的写回171 10.1.1处理器写回功能简介171 10.1.2处理器写回常见策略171 10.2蜂鸟E200处理器的写回硬件实现171 10.2.1 终写回仲裁172 10.2.2OITF和长指令写回仲裁174 10.2.3小结177 1章哈弗还是比亚迪——存储器架构178 11.1存储器架构概述179 11.1.1谁说处理器要有缓存179 11.1.2处理器要有存储器180 11.1.3ITCM和DTCM182 11.2RISC-V架构特点对于存储器访问指令的简化183 11.2.1仅支持小端格式183 11.2.2无地址自增自减模式183 11.2.3无“一次读多个数据”和“一次写多个数据”指令183 11.3RISC-V架构的存储器相关指令184 11.3.1Load和Store指令184 11.3.2Fence指令184 11.3.3“A”扩展指令184 11.4蜂鸟E200处理器存储器子系统硬件实现185 11.4.1存储器子系统总体设计思路185 11.4.2AGU186 11.4.3LSU190 11.4.4ITCM和DTCM192 11.4.5“A”扩展指令处理195 11.4.6Fence与Fence.I指令处理200 11.4.7BIU202 11.4.8ECC202 11.4.9小结202 2章黑盒子的窗口——总线接口单元BIU203 12.1片上总线协议概述204 12.1.1AXI204 12.1.2AHB204 12.1.3APB205 12.1.4TileLink205 12.1.5总结比较205 12.2自定义总线协议ICB206 12.2.1ICB总线协议简介206 12.2.2ICB总线协议信号207 12.2.3ICB总线协议时序207 12.3ICB总线的硬件实现210 12.3.1一主多从210 12.3.2多主一从211 12.3.3多主多从212 12.4蜂鸟E200处理器核BIU212 12.4.1BIU简介212 12.4.2BIU微架构213 12.4.3BIU源码分析214 12.5蜂鸟E200处理器SoC总线214 12.5.1SoC总线简介215 12.5.2SoC总线微架构215 12.5.3SoC总线源码分析216 12.6总结216 3章不得不说的故事——中断和异常217 13.1中断和异常概述218 13.1.1中断概述218 13.1.2异常概述219 13.1.3广义上的异常219 13.2RISC-V架构异常处理机制221 13.2.1进入异常221 13.2.2退出异常224 13.2.3异常服务程序225 13.3RISC-V架构中断定义226 13.3.1中断类型226 13.3.2中断屏蔽228 13.3.3中断等待229 13.3.4中断优先级与仲裁230 13.3.5中断嵌套230 13.3.6总结比较231 13.4RISC-V架构异常相关CSR寄存器232 13.5蜂鸟E200异常处理的硬件实现232 13.5.1蜂鸟E200处理器的异常和中断实现要点232 13.5.2蜂鸟E200处理器的异常类型233 13.5.3蜂鸟E200处理器对于mepc的处理234 13.5.4蜂鸟E200处理器的中断接口234 13.5.5蜂鸟E200处理器CLINT微架构及源码分析235 13.5.6蜂鸟E200处理器PLIC微架构及源码分析238 13.5.7蜂鸟E200处理器交付模块对中断和异常的处理242 13.5.8小结245 4章 不起眼的,其实是 难的——调试机制246 14.1调试机制概述247 14.1.1交互调试概述247 14.1.2跟踪调试概述249 14.2RISC-V架构的调试机制249 14.2.1调试器软件的实现250 14.2.2调试模式250 14.2.3调试指令251 14.2.4调试机制CSR251 14.2.5调试中断251 14.3蜂鸟E200调试机制的硬件实现251 14.3.1蜂鸟E200交互式调试概述251 14.3.2DTM模块253 14.3.3硬件调试模块253 14.3.4调试中断处理257 14.3.5调试机制CSR寄存器的实现258 14.3.6调试机制指令的实现258 14.3.7小结259 5章动如脱兔,静若处子——低功耗的诀窍260 15.1处理器低功耗技术概述261 15.1.1软件层面低功耗261 15.1.2系统层面低功耗261 15.1.3处理器层面低功耗262 15.1.4单元层面低功耗262 15.1.5寄存器层面低功耗263 15.1.6锁存器层面低功耗264 15.1.7SRAM层面低功耗264 15.1.8组合逻辑层面低功耗264 15.1.9工艺层面低功耗265 15.2RISC-V架构的低功耗机制265 15.3蜂鸟E200低功耗机制的硬件实现265 15.3.1蜂鸟E200系统层面低功耗265 15.3.2蜂鸟E200处理器层面低功耗267 15.3.3蜂鸟E200单元层面低功耗269 15.3.4蜂鸟E200寄存器层面低功耗269 15.3.5蜂鸟E200锁存器层面低功耗272 15.3.6蜂鸟E200SRAM层面低功耗273 15.3.7蜂鸟E200组合逻辑层面低功耗274 15.3.8蜂鸟E200工艺层面低功耗275 15.4总结275 6章工欲善其事,必先利其器——RISC-V可扩展协处理器276 16.1专用领域架构DSA277 16.2RISC-V架构的可扩展性278 16.2.1RISC-V的预留指令编码空间278 16.2.2RISC-V的预定义的Custom指令279 16.3蜂鸟E200的协处理器接口EAI279 16.3.1EAI指令的编码279 16.3.2EAI接口信号280 16.3.3EAI流水线接口281 16.3.4EAI存储器接口282 16.3.5EAI接口时序283 16.4蜂鸟E200的协处理器参考示例286 16.4.1示例协处理器需求286 16.4.2示例协处理器指令287 16.4.3示例协处理器实现288 16.4.4示例协处理器性能289 16.4.5示例协处理器代码290 第三部分使用Verilog进行仿真和在FPGASoC原型上运行软件 7章冒个烟先——运行Verilog仿真测试292 17.1E200开源项目的代码层次结构293 17.2E200开源项目的测试用例294 17.2.1riscv-tests自测试用例294 17.2.2编译ISA自测试用例295 17.3E200开源项目的测试平台(TestBench)298 17.4在VerilogTestBench中运行测试用例299 8章套上壳子上路——实现SoC和FPGA原型302 18.1FreedomE310SoC简介303 18.2HBird-E200-SoC简介304 18.2.1HBird-E200-SoC组成结构304 18.2.2HBird-E200-SoC代码结构309 18.3HBird-E200-SoCFPGA原型平台311 18.3.1FPGA开发板311 18.3.2生成mcs文件烧写FPGA314 18.3.3JTAG调试器317 18.3.4FPGA原型平台DIY总结320 18.4蜂鸟E200专用FPGA开发板320 9章画龙点睛——运行和调试软件示例321 19.1Freedom-E-SDK平台简介322 19.2SIRV-E-SDK平台简介323 19.2.1SIRV-E-SDK简介323 19.2.2SIRV-E-SDK代码结构324 19.3使用SIRV-E-SDK运行示例程序325 19.4使用GDB和OpenOCD调试示例程序328 19.5Windows图形化IDE开发工具331 第20章是骡子是马?拉出来遛遛——运行跑分程序332 20.1跑分程序简介333 20.2Dhrystone简介333 20.3运行DhrystoneBenchmark335 20.4CoreMark简介337 20.5运行CoreMarkBenchmark338 20.6总结与比较340 附录部分RISC-V架构详述 附录ARISC-V架构指令集介绍342 附录BRISC-V架构CSR寄存器介绍374 附录CRISC-V架构的PLIC介绍384 附录D存储器模型背景介绍392 附录E存储器原子操作指令背景介绍397 附录FRISC-V指令编码列表400 附录GRISC-V伪指令列表404 |
作者介绍 | |
胡振波,上海交通大学电子工程系本科、微电子学院硕士。拥有业界多年ASIC和CPU设计与验证经验,先后在Marvell任职ARM架构CPU设计不错工程师、在Synopsys任职研发经理、在比特大陆任职IC设计总监、在武汉聚芯微电子任职架构师,现致力于推动RISC-V架构在靠前的传播和发展。 |
编辑推荐 | |
系统介绍RISC-V指令集架构。结合实际RISC-V开源实例进行教学。深入剖析RISC-V处理器的微架构以及代码实现。使读者能够快速掌握并轻松使用RISC-V架构处理器。通过学习实例蜂鸟E200的Verilog代码,您将能成为一名合格的数字IC设计工程师。通过学习本书推荐的完整开源SoC平台,您也可以快速搭建FPGA原型平台,运行完整的软件实例。 |