《手把手教你设计CPU——RISC-V处理器》读书笔记

Stay Hungry, Stay foolish(求知若饥,虚心若愚)——Steven Jobs(史蒂夫-乔布斯)

关于书籍和胡振波

首先感谢面包板社区提供这本**《手把手教你设计CPU——RISC-V处理器篇》书籍的试读机会。这本书和另外一本《 RISC-V架构与嵌入式开发 》**是国内最先出版的两本关于RISC-V处理器的书籍,作者是胡振波先生,所以这里要感谢胡老师。胡振波先生是国内最早开始研究RISC-V架构的,有超过8年的CPU以及超过10年的ASIC设计与验证经验,历任Marvell CPU高级设计工程师,Synopsys ARC系列处理器内核研发经理等职务,有着近20年的行业积累。

第一次了解作者,是在今年4月20日在北航举办的RISC-V技术沙龙,那是我第一次全面的了解RISC-V架构,也是我第一次参与这种线下的技术交流活动,当时很多业内的大佬都分享了很多知识和见解,其中就包括胡振波老师分享的“RISC-V架构嵌入式开发的特点”。

记得在发言结束后,会上有一位与非网的朋友提问到,“作为国内RISC-V处理器研究的领导者,芯来科技为什么没有选择做芯片而是做IP核呢?”胡振波给出的答案是,“国内现在已经有近2000家芯片公司,如果我们选择做芯片,只是众多芯片公司中的2000分之一,现在基本是国外公司SiFive在做基于RISC-V架构的IP,国内公司对底层技术掌握的很少,本土的公司能做IP的也很少,如果没有人来做IP,就会变成从ARM垄断的ARM架构市场转为SiFive垄断的RISC-V架构的市场,我们放弃做芯片,专注做IP,服务国内其它商业公司。虽然芯来科技从创立到现在只有半年的时间,我们开发的IP已经导入国内很多龙头公司的产品中,这样做最终为本土产业带来更大的帮助,这种选择大于我们做芯片的意义。我们选择了看似不是被人理解的方向,是为了更好帮助本土IC产业发展,算是间接实现个人的自我价值。”当时,就很佩服胡老师作为第一个吃螃蟹的人。

关于RISC-V

RISC-V(发音同“risk-five”)是一种免费开源指令集架构(ISA),通过开放标准协作开创处理器创新的崭新纪元。RISC-V基金会创立 于2015年,由超过235家成员组织组成,建立了首个开放、协作的软硬件创新者社区,开创了处理器创新的新时代。RISC-V ISA发端于深厚的学术研究,将免费且可扩展的软硬件架构自由度提升至新的水平,为未来50年的计算设计与创新铺平了道路。

现在处理器的指令集主要分为RISC和CISC,即精简指令集和复杂指令集,RISC的代表就是著名的ARM架构,专注于高性能,低功耗,小体积,主要应用于移动设备;而CISC的代表是x86架构,像常用的PC、服务器的CPU等等,专注于桌面,高性能和民用市场。而RISC-V是属于RISC阵营的,相比于ARM,RISC-V的历史很短,2010年诞生于加州大学伯克利分校,当时的Krste Asanovic教授希望寻找一个合适的CPU指令架构,但x86架构复杂臃肿、ARM架构需要授权费、开源的OpenRISC架构又太老旧了,所以他最终决定自己做个开源CPU架构,并在2015年成立了RISC-V基金会(RISC-V Foundation ),专门推动RISC-V发展,现在的RISC-V基金会成员也超过了235个,包括国外的Google、三星、英伟达、微芯、高通、惠普、意法半导体、西数、NXP,国内的阿里巴巴、华为、高云等公司。一个时代有一个时代的芯片。RISC-V,就被认为是AIoT时代芯片的基础。可以说,今年是RISC-V快速发展的一年,从最近的兆易发布GD32VF103 MCU,到阿里发布玄铁910 IP,再到华米科技基于RISC-V MCU的智能手表量产等等,都可以看出今年RISC-V是大放异彩,个人猜测,ARM可能觉得RISC-V对他产生了一定威胁,所以计划将在明年上半年在特定CPU内核上推出自定义指令集功能,来对抗RISC-V!

正好最近又发布了基于兆易和芯来共同研发的 Bumblebee RISC-V内核的MCU——GD32VF103 。不知道最近面包板社区有没有考虑开展兆易RISC-V开发板的评测活动,哈哈!

关于蜂鸟E200

本书介绍的这款RISC-V CPU内核,名称为蜂鸟E200,代码文档全部开源在Github上,开源地址在文末。蜂鸟E200是一个处理器系列,包含了多款不同的具体处理器型号。所有的E200系列处理器核均支持协处理器接口,可用于自定义扩展指令。E201核是面积最小的核,可以配置为RV32IC或者RV32EC架构,不支持其他的扩展指令子集。

  • E201核是面积最小的核,可以配置为RV32IC或者RV32EC架构,不支持其他的扩展指令子集。
  • E203核可以配置为RV32IMAC或者RV32EMAC架构,使用面积优化的多周期硬件乘除法单元。
  • E205核为RV32IMAC架构,使用单周期的硬件乘法单元和多周期的硬件除法单元。
  • E205f核为RV32IMAFC架构,在基本的E205基础上加入了单精度浮点运算单元。
  • E205fd核为RV32IMAFDC架构,在基本的E205基础上加入了单精度和双精度浮点运算单元。

针对商业用途,芯来科技又发布了商业内核——N200系列。

(来自官网 https://www.nucleisys.com )

全书结构

全书共20章节,可分为三大部分,第一部分1-4章,普及处理器、CPU、指令集、内核、架构、RISC-V基础知识,并介绍了多款RISC-V内核,以及蜂鸟E200内核系列。

第二部分5-16章,详细介绍了设计CPU的通用流程,及对应的Verilog代码实现,非常适合深入理解CPU内部的工作原理,总线,指令,译码,中断异常,调试等,至于TIMER,UART、IIC、SPI等接口属于外设部分,并没有提到,毕竟本书介绍的CPU部分的实现过程,就像ARM MCU一样,内核都是一个,但是不同的半导体厂家,外设配置是不同的,有的是2个串口,有的3个串口,有了总线接口,这些外设根据需要来自主设计添加就行了。

第三部分17-20章,介绍在FPGA上实现CPU原型,并使用IDE工具来进行开发和调试,当然更详细的应用开发,还是要参加另一本姊妹书籍——《 RISC-V架构与嵌入式开发 》,最后一章节,介绍了和ARM M系列的性能跑分对比。

蜂鸟E200ARM Cortex-M核性能对比

国产CPU
  • MIPS——龙芯和君正
  • x86系——北大众志、兆芯、海光
  • Power——中晟宏芯
  • Alpha——申威
  • ARM——飞腾、华为海思、展讯、华芯通
CISC和RISC的区别

指令集架构主要分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC),两者的主要区别如下:CISC不仅包含了处理器常用的指令,还包含了许多不常用的特殊指令。其指令数目比较多,所以称为复杂指令集。RISC负包贪处理器常用的指令,而对于不常用的操作,则通过执行多条常用指令的方式来达到回样的效果。由于其指令数目比较精简,所以称为精简指令集。典型程序的运算过程中所使用到的80%指令,只占所有指令类型的20%,也就是说,CISC指令集定义的指令,只有20%被经常使用到,而有80%则很少被用到。那些很少被用到的特殊指令尤其让CPU设计变得极为复杂,大大增加了硬件设计的时间成本与面积开销。

RISC-V商业版本与开源版本
  • Rocket Core
  • BOOM Core
  • Freedom SoC
  • LowRISC SoC
  • PULPino Core and SoC
  • PicoRV32 Core
  • SCR1 Core
  • ORCA Core
  • Andes Core(商业IP)
  • Microsemi Core(商业IP)
  • Codasip Core(商业IP)
  • 蜂鸟E200 Core与SoC(开源)

配套源码

本书配套的Verilog代码Github开源地址:https://github.com/whik/e200_opensource.git

  • Git下载命令:git clone https://github.com/whik/e200_opensource.git

如果下载速度太慢,我已经把这个仓库同步到了我个人的Gitee码云上,下载速度会快一些:`https://github.com/whik/e200_opensource

  • Git下载命令:git clone https://github.com/whik/e200_opensource.git

配套开发板购买

开发板基于Xilinx XC7A100T,板载Xilinx Platform Cable USB下载器,用于对FPGA进行程序烧写。

  • FPGA评估板和JTAG调试器购买链接:https://item.taobao.com/item.htm?id=580813056318
  • 蜂鸟RISC-V开源处理器软硬件演示视频:https://www.bilibili.com/video/av41835638
  • 作者胡振波先生演讲——“RISC-V架构嵌入式开发的特点”,直播回看:RISC-V架构嵌入式开发研究与实践
  • 作者ID:硅农亚历山大,微信公众号,CSDN博客等平台。

总结

这本书主要是介绍国产开源RISC-V架构CPU——蜂鸟E200,通用CPU的设计流程和基于Verilog的代码具体实现,可以说是理论和实践相结合的一本好书,代码和文档都在Github上开源,文末有地址。无论是对于嵌入式开发,还是IC设计验证,都是很有价值的参考。虽然日常工作中也会接触到一些Verilog FPGA开发,但都是一些采集和通信的简单程序,另外个人也并不是微电子专业的,所以对于这种CPU的设计和实现,只能看个大概,很多的设计技巧理解起来还是有些困难,所以我的读书心得也仅限于此了,欢迎各位朋友互相交流。

推荐阅读


  • 14
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 很高兴听到您对RISC-V处理器设计感兴趣。以下是一些基本步骤,可以帮助您开始设计自己的RISC-V处理器: 1. 确定处理器的需求和规格:在设计处理器之前,您需要确定处理器的需求和规格。这包括处理器的性能、功耗、指令集等方面。 2. 学习RISC-V指令集架构:RISC-V是一种开放的指令集架构,您需要学习它的指令集和编码方式。您可以在RISC-V官方网站上找到相关的文档和程。 3. 设计处理器的微架构:微架构是处理器的实现细节,包括指令流水线、寄存器文件、ALU等。您需要设计一个合适的微架构来实现RISC-V指令集。 4. 编写Verilog代码:Verilog是一种硬件描述语言,您需要使用Verilog编写处理器的代码。您可以使用Verilog模拟器来验证您的代码是否正确。 5. 进行综合和布局布线:综合是将Verilog代码转换为门级电路的过程,布局布线是将门级电路布置在芯片上的过程。您可以使用EDA工具来完成这些步骤。 6. 进行仿真和验证:最后,您需要对处理器进行仿真和验证,以确保它能够正确地执行RISC-V指令集。 希望这些步骤可以帮助您开始设计自己的RISC-V处理器。祝您好运! ### 回答2: 随着计算机技术的不断发展,处理器作为计算机的中央处理单元,一直处于不断更新和迭代的状态。在这个过程中,越来越多的人开始将目光投向自己动手设计处理器的领域,以提高对计算机结构的理解和掌握能力。而RISC-V处理器则成为了越来越受欢迎的处理器设计体系结构之一。下面,我们就来手把手设计RISC-V处理器。 首先,需要了解RISC-V处理器的体系结构和指令集,掌握其特点,以便更好地进行设计RISC-V架构采用精简指令集(Reduced Instruction Set Computing,RISC)的思想,指令集清晰简单,易于扩展和实现,同时提供了不同的指令长度和地址宽度,满足多种应用场景的需求。 其次,需要明确设计RISC-V处理器的目的和需求。例如,设计一款高性能处理器,需要考虑运算速度、处理带宽、低功耗等方面的需求,而设计一款嵌入式处理器,则需要考虑尺寸、功耗、集成度等方面的需求。在确定需求后,可以选择适合的设计方法和实现方式。 接着,需要进行设计和仿真。采用硬件描述语言(如Verilog或VHDL)进行设计,利用仿真软件进行仿真调试,逐步完善处理器的各项功能。需要注意的是,设计时需要清晰明确每一阶段的功能和相应的接口,保证设计的可扩展性。 最后,进行硬件实现和验证。将设计好的RTL电路转换为FPGA或ASIC中的物理实现,进行性能测试和功能验证,发布仿真测试结果和设计文档,确保设计能够满足预期的性能和功能要求,并能够进一步优化和升级。 在以上步骤中,需要掌握的知识包括计算机体系结构、数字电路设计、硬件描述语言的使用等。需要长期的学习和实践,才能够熟练掌握处理器设计的各个环节,并能够设计出具备高性能、低功耗、灵活可扩展等特点的处理器。 ### 回答3: RISC-V是一个由加州大学伯克利分校推出的开源指令集架构,它的设计理念是简化指令集,更加注重可扩展性、可定制性和易于实现。设计RISC-V处理器需要了解计算机体系结构以及数字电路原理,下面将手把手设计CPU。 第一步,需要确定处理器的架构。RISC-V处理器一般采用五级流水线结构,包括取指、译码、执行、访存和写回。在这个流水线结构中,每个阶段都有对应的功能,可以保证指令的按序执行。 第二步,需要确定指令集架构。RISC-V有基础指令集和标准扩展指令集,需要根据使用需求选择相应的扩展指令集并实现相应的操作。 第三步,需要进行处理器的逻辑设计。包括指令寄存器(IR)、程序计数器(PC)、指令存储器(IM)、寄存器堆、ALU(算数逻辑单元)、数据存储器(DM)等,这些模块通过总线相互连接构成处理器的基本结构。 第四步,需要进行数字电路的设计处理器逻辑的实现需要用到器件和电路,需要根据设计的结构和功能实现相应的数字电路。 第五步,进行验证和调试。在设计完成后,需要进行仿真验证和调试工作,以保证设计的正确性和稳定性。 总的来说,设计RISC-V处理器需要掌握计算机体系结构、数字电路原理和基础编程知识,需要进行详细、全面的规划和设计设计过程中需要不断地验证和调整,确保设计的正确性和稳定性,最终完成一个高质量且符合需求的处理器设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whik1194

如果对你有帮助,欢迎打赏。谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值