常见RISC-V介绍
当前一颗新出的CPU:RISC-V简直火透了半边天,无论是财大气粗的阿里系的平头哥,还是新创企业,似乎只要和RISC-V挂上钩就足可以实现赶英超美。那事实上RISC-V是什么?除了国内那些简直红透了半边天的一系列RISC-V还有那些?
首先RISC-V是什么?
实际网上已经有很多介绍,她是David Patterson/Andrew Waterman于2011在美国伯克利退出的一种用于教学目的的指令集,其尽可能简化(优化)了传统的CPU指令系统。
即实际上RISC-V仅仅是一个开源的指令系统,具体怎样实现完全靠个人。
但实际上,即使David也有一些针对RISC-V体系结构的详细教材,如:《Computer Organization And Desidn》和入门教材《The RISC-V Reader》,同时,包括UCB和一些公司都有一些已经设计好的RISC-V,即您自己只需要一颗合适的FPGA,就可以下载一颗完整的RISC-V,并在上面进行各种开发。
除官方的RISC-V实现是使用了一种新的硬件描述语言Chisel外,多数实现仍会沿用传统的VerilogHDL或VHDL语言,而实际上,Chisel在被综合前也是需要“翻译”成VerilogHDL。
之后我们介绍一些较早出现的RISC-V实现。(当前国内涌现了太多的RISC-V实现,多数也许就是参考这些原始实现,因为笔者在一年前接触的RISC-V,因此,对国内新出现的RISC-V暂不做评价)
[*]Rocket:(UCB)标量处理器:64位、5级流水线、但发射顺序执行处理器,特征:
[*]支持MMU,支持分页虚拟内存。可以移植到Linux操作系统
[*]具有兼容的的IEEE 754-2008标准的FPU
[*]具有分支预测功能,具有BPB(Branch Prediction Buff)、BHT(Branch History Table)、RAS(Return Address Stack)
Rocket采用Chisel语言编写;下载地址:https://github.com/freechipsproject/rocket-chip,
[*]BOOM:(UCB)超标量乱序执行处理器;BOOM也是采用Chisel编写,全部代码大约9000行;指令为RV64G
6级流水线:取指、译码/重命名/指令分配、发射/读寄存器、执行、内存访问、回写下载地址:https://github.com/ucb-bar/riscv-boom
[*]Sodor:(UCB)针对教学的32位开源处理器。Chisel编写,支持5种处理器:单周期处理器、2级流水线处理器、3级流水线处理器、5级流水线处理器、可执行微码的处理器
[*]早期出于教学目的处理器,使用Chisel编写,没有什么实际商用价值。已经很长时间没有更新了。
[*]结构相对清晰一些,如对不同深度PipeLine都有描述(分别有1阶、2阶、3阶和5阶);可以作为很好的示范代码
下载地址:https://github.com/ucb-bar/riscv-sodor
[*]ORCA:嵌入式应用处理器,支持指令:RV32IM(也可以:RV32E/RV32I)
下载地址:https://github.com/vectorblox/orca
[*]PicoRV32:是一个RV32IMC指令的实现,由RISC-V开发者Clifforf wolf实现,但重新设计了trap/interrupt/interrupt return,采用了一种简化的方式,所有代码是由verilog编写的;其特点是小巧在Xilinx 7上占用大小为750~2000个LUT
下载地址:https://github.com/cliffordwolf/picorv32
[*]Shakti:印度理工学院的一个项目,由Verilog编写,其使用了大量第三方IP,根据需要分成了不同的类:
[*]E-Class:32位标量处理器,3级流水线,支持RISC-V的C(RISC-V指令压缩)扩展,总线:AHB简化版目标是超低功耗处理器
[*]C-Class:32/64位标量处理器,3~8级流水线,支持MMU,具有容错(ISO26262),支持RISC-V的C扩展,可选FPU/VPU,总线:AXI变体,目标是超低功耗处理器
[*]I-Class:64位,多核,支持1~8核,乱序执行,共享L2 Cache,支持双线程、SIMD/VPU,目标是通用处理器
[*]M-Class:I-Class增强版,增加指令发射大小、支持4线程、最多16核,目标是通用处理器、低端服务器和移动应用
[*]S-Class:64位,超标量多线程处理器,支持L3 Cache,RapidIO,HMC(Hybrid Memory Cube)、向量处理单元,还用协处理器,用于数据库访问、加密、机器学习、最高支持64核,目标是通用处理器、服务器
[*]H-Class:64位、32~128核,支持多线程,顺序或乱序执行处理器,具有向量处理单元,目标是高性能计算
[*]T-Class:64位/128位多核处理器,通过为存储器引入Tag增加安全性
[*]N-Class:自定义扩展,网络处理
官方地址:https://bitbucket.org/casl/shakti_public下载:https://bitbucket.org/casl/shakti_public.git
[*]YARVI:
VARVI是RISC-V爱好者Tommy Thorn设计发布的简单的、32位开源处理器,实现了RV32I,使用Verilog,目标是为了能够清晰准确的实现RV32I下载地址:https://github.com/tommythorn/yarvi
[*]Pulpino:由苏黎世联邦理工大学与意大利博洛尼亚大学联合开发。32位,指令集:RV32I/RV32C/RV32M,扩展了RISC-V指令;多核
网址:https://www.pulp-platform.org/下载地址:https://github.com/pulp-platform/pulpino
[*]GRVI Phalanx:大规模并行RISC-V(最多到千核),2~3级流水线,32位,其中在Artix-7 35T开发板上已经实现32 RISC-V处理器;在PYNQ-Z1上实现了80核;在UltraScale上实现了1680核的RISC-V;不开源
[*]
[*]蜂鸟:国内最早比较成熟的RISC-V实现,由胡振波(现在芯来创始人)开发,使用Verilog设计。其开源CPU为E200:使用2级流水线
下载地址:https://github.com/SI-RISCV/e200_opensource
另外,商业化比较成功的是SiFive,因为其主要来源于UCB的官方设计,算是比较根红苗正的,将其归为UCB官方,其开源版本是Freedom E310,相对成熟版本是E31。SiFive除完整CPU外,还提供了较为成熟的集成开发环境:Freedom Studio,非常适合初学者,之后会详细介绍 本篇完
页:
[1]