RISC-V架构处理器凭着开源没有IP纠纷的优势,得到了全球各大厂商的青睐,国外有IBM,谷歌等,国内有阿里等都推出了自己的RISC-V处理器芯片,近日,又传来国际硬盘制造大厂发布自己的RISC-V架构处理器,基于此处理器的硬盘性能提升达到3倍!
硬盘巨头希捷公布了基于RISC-V架构设计的两款全新处理器,可加快数据中心和边缘的实时分析。事实上,虽然希捷的核心产品是硬盘,但是对于芯片设计经验丰富,硬盘中的很多控制芯片都是希捷自己的。
仅仅在过去一年,希捷就交付了近10亿颗集成了RISC-V内核的芯片。
希捷新设计的两款RISC-V处理器,其一支持开放标准的内核,旨在实现高性能,已在机械硬盘中完成了功能验证,另一款则用于面积优化,已完成设计,正在构建。
与当前解决方案相比,新的高性能内核可将实时的、关键的硬盘工作负载性能提升高达3倍,另外还支持高级伺服(移动控制)算法,用于控制磁头在邻近磁道之间的移动,可实现更精细的定位。
面积优化型内核具备可灵活配置的微架构、功能集。经过优化的内核既优化了封装面积,也降低了功耗,从而辅助或支持后台工作负载。
它还可以执行安全敏感型边缘计算操作,包括新一代后量子加密。
两款处理器都集成了RISC-V的安全特性,在边缘端、云端都可以带来更强大的数据可靠性、安全性、移动性,而希捷本身也是OpenTitan(安全芯片设计开源项目)的成员之一。
值得一提的是,另一大硬盘巨头西数也在2018年底就发布了基于RISC-V指令集的自主通用架构SweRV、开源的SweRV指令集模拟器(ISS),并向第三方芯片厂商开放,2019年底又发布了两款微控制器专用CPU SweRV Core EH2、SweRV Core EL2。
一、盘点基于RISC-V的处理器
1. Rocket,BOOM
很多RISC-V开发者,无论硬件还是软件,首次接触的CPU core就是Rocket。
Rocket Chip Generator可以生成包括Rocket core的一整套SoC,各种参数统统可配置。
Rocket Chip是用Chisel开发的,初学者(CPU设计开发的数字前端初学者,尤其是只懂Verilog的初学者)要去看Rocket的代码还是会有些吃力的,对初学者不太友好。
不过正因为其面世较早,又有Berkeley的纯正血统,粉丝众多,很多paper都是基于Rocket Chip做的,资料也很好找,但似乎没有详细的官方文档。
Rocket chip带MMU,支持操作系统,所以在上面跑Linux是没有问题的。Rocket chip使用Tilelink总线,支持缓存一致性的一款总线。支持Verilator+OpenOCD+GDB仿真。
Rocket是64位CPU core(也是今天介绍的几款处理器中唯一一款64位的),采用经典五级流水,顺序执行,单发射,还支持各种分支预测。
BOOM(Berkeley Out-of-Order Machine)基于Rocket,乱序执行,BOOM有还算比较详细的文档。这两个用来学习还是很不错的。而且Rocket还是比较成熟的,基于Rocket core已经有很多ASIC产品了。只是Chisel是道坎,CPU设计还没开始学就跳进Chisel的坑里去了!
一句话总结:Berkeley纯正血统,但欲学本core,必先入Chisel之坑。
2. Hammingbird E203
蜂鸟处理器是在国内RISC-V社区大名鼎鼎的芯来科技开发的RISC-V MCU系列。
E203是其开源的一款单privilege mode,两级流水(不严格说法)的MCU,主打小面积、低功耗。使用Verilog开发。
麻雀虽小,五脏俱全,也包括debug module,代码严谨优美,用来学习设计没得说。
官方文档不算多,但是市面上可以买到胡振波大牛写的两本书,也算是学习资料丰富了。
开源的E203在github上其实是一个SoC平台。E203使用自定义的类AXI接口,支持debug spec 0.11。唯一的缺憾是没有官方的verilator环境,如果使用verilator的话得自己搭个环境了。
像我这种在家用不了商业仿真软件(也不愿意装D版)的硅农,只能用意念仿真了,目前还是看看代码,等有时间的话Port一个verilator仿真环境过去。
开源蜂鸟E203支持Icarus Verilog开源仿真工具,这个仿真工具不知道还有没有人维护,就我以前使用而言,几乎只能仿纯verilog,对于很多不可综合的写法也不支持,使用非常受限,就更别提把GDB接入到仿真了。
3. Ibex
提到开源RISC-V就不能不提Riscy系列了,尤其是zero-riscy,使用很广泛。Ibex是脱胎于zero-riscy的core,支持RV32IMC及一些Z系列指令,由LowRISC维护。Ibex小巧精悍,文档详实,学习资料丰富,支持verilator, 可以使用verilator+openOCD+GDB 仿真时debug。对于我这样的重度Verilator依赖者来说非常友好。
Ibex支持machine mode和user mode两种privilege mode,可以实现比单machine mode更加丰富的功能。Ibex采用system verilog开发,对于传统的IC工程师是个好消息。Ibex现在也支持了指令cache了,提高了performance,但装了cache会让core变得臃肿很多,对于学习cache controller的设计是个好事情。
Ibex使用类TLUL的自定义接口,官方的SoC是PULP。Google的OpenTitan项目也是基于Ibex。相关的设计学习资料算是相当多了。
github: https://github.com/lowRISC/ibex
文档:https://ibex-core.readthedocs.io/en/latest/introduction.html
4. VexRiscv