常见RISC-V介绍

2023-05-16

当前一颗新出的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级流水线、但发射顺序执行处理器,特征:
    1. 支持MMU,支持分页虚拟内存。可以移植到Linux操作系统
    2. 具有兼容的的IEEE 754-2008标准的FPU
    3. 具有分支预测功能,具有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级流水线处理器、可执行微码的处理器
    1. 早期出于教学目的处理器,使用Chisel编写,没有什么实际商用价值。已经很长时间没有更新了。
    2. 结构相对清晰一些,如对不同深度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,根据需要分成了不同的类:
    1. E-Class:32位标量处理器,3级流水线,支持RISC-V的C(RISC-V指令压缩)扩展,总线:AHB简化版目标是超低功耗处理器
    2. C-Class:32/64位标量处理器,3~8级流水线,支持MMU,具有容错(ISO26262),支持RISC-V的C扩展,可选FPU/VPU,总线:AXI变体,目标是超低功耗处理器
    3. I-Class:64位,多核,支持1~8核,乱序执行,共享L2 Cache,支持双线程、SIMD/VPU,目标是通用处理器
    4. M-Class:I-Class增强版,增加指令发射大小、支持4线程、最多16核,目标是通用处理器、低端服务器和移动应用
    5. S-Class:64位,超标量多线程处理器,支持L3 Cache,RapidIO,HMC(Hybrid Memory Cube)、向量处理单元,还用协处理器,用于数据库访问、加密、机器学习、最高支持64核,目标是通用处理器、服务器
    6. H-Class:64位、32~128核,支持多线程,顺序或乱序执行处理器,具有向量处理单元,目标是高性能计算
    7. T-Class:64位/128位多核处理器,通过为存储器引入Tag增加安全性
    8. 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,非常适合初学者,之后会详细介绍

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见RISC-V介绍 的相关文章

随机推荐

  • win11旗舰版安装WSL子系统和环境-17Xshell连接wsl子系统的ssh

    https blog csdn net w4187402 article details 85992013 那么问题找到了 出现这样的问题只能是ip冲突 xff0c 其他同事的服务器占用了我当前服务器的ip地址 xff0c 我现在连接的服务
  • 超好用的word插件-工作和科研

    Word精灵7 0版 可以很好地处理图片 xff0c 转换 xff0c 以及各种批量处理操作 GrammarlyAddInSetup 可以很好地校对英文错误 xff0c 单词以及语法错误 xff0c 但被动语态不太行 链接 xff1a ht
  • Adobe Premiere Pro 2023 SP(未完成)

    需要添加
  • 一个程序员所应该具备的精神

    所谓障碍都是主观上的 如果你想研发什么新的技术 xff0c 只需要在冰箱里放满食物和饮料 xff0c 再有一台便宜的计算机 xff0c 和以之献身的决心 xff0c 你即可拥有任何你想拥有的编程深度 xff01 John Carmack
  • ROS中的多线程

    ROS中的多线程 ROS多线程消息回调处理函数多线程MultiThreadedSpinnerAsyncSpinner callback传参timertimer加参数 C 43 43 中的多线程Python中的多线程 ROS使用master管
  • Linux系统下磁盘分区

    计算机的磁盘分区信息是计算机引导操作系统必须的信息 xff0c 根据引导方式的不同 xff0c 一般分别保存在MBR或者GPT中 其中 xff0c BIOS引导会读取MBR xff08 Main Boot Record xff09 中的磁盘
  • ROS中的tf发布读取转换

    ROS tf 基础使用查看tf信息1 创建link关系图2 在rqt中查看link关系图3 终端中输出tf变换关系4 rviz中查看 程序中使用TransformerTransformBroadcasterTransformListener
  • linux下shell脚本启动其他可执行程序

    linux下shell脚本启动其他可执行程序 零 前言一 C 43 43 代码二 shell脚本三 shell运行效果 零 前言 linux下的项目中经常需要使用shell脚本去启动其他程序的操作 xff0c 下面是自己编写的测试程序 xf
  • 嵌入式面试常见问题

    1 什么是嵌入式 以应用为中心 xff0c 以计算机技术为基础 xff0c 软硬件可裁剪 xff0c 适用于应用系统对功能 可靠性 成本 体积 功耗有严格要求的专用计算机系统 2 字符设备和块设备的区别 xff1f Linux里设备类型分
  • 步进电机和伺服电机的区别你知道吗?

    在许多领域都需要各种电机 xff0c 包括知名的步进电机和伺服电机 但是 xff0c 对于许多用户而言 xff0c 他们不了解这两种电机的主要区别 xff0c 因此他们始终不知道如何选择 那么 xff0c 步进电机和伺服电机之间的主要区别是
  • 独轮车成功站立

    真是废了不少力 卡了这么久首要原因就是过于青睐串级PID 串级PID可以自主寻找机械中位的特性实在是太优雅了 但动量轮这种对即使性要求极高的系统似乎不能用串级PID实现 昨天沉下心把串级PID推掉换成并联 xff0c 波形一下就朝着正常的方
  • 字节序:大端字节序(Big Endian) & 小端字节序(Little Endian)

    一 什么是字节序 xff1f 多字节数据存储在存储器中的顺序就叫做字节序 字节序又分为俩种 xff0c 一种叫做小端字节序 xff1b 另外一种叫做大端字节序 二 大端字节序 xff08 Big Endian xff09 amp 小端字节序
  • Google doc

    https docs google com spreadsheets d 1lOtc072A0QaJAXormoUeiaqZu5 20BR1ikh0YZe65PI edit gid 61 0
  • Boot Loader启动过程分析

    一 Boot Loader的概念和功能 1 嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分 xff1a xff08 1 xff09 引导加载程序 xff1a 其中包括内部ROM中的固化启动代码和Bo
  • eclipse:解决Ctrl+S 无法保存问题

    解决Ctrl 43 S 无法保存问题 工作中有一个同事的eclipse中无法使用Ctrl 43 S保存文件 xff0c 尝试了各种方法 xff0c 禁用了所有其他软件的快捷键 xff0c 依然无法解决 xff0c 最终发现是eclipse自
  • windbg学习笔记 FOR 内核调试(三) --进程句柄表HANDLE_TABLE

    windbg学习笔记 FOR 内核调试 三 进程句柄表HANDLE TABLE 想当年 初学核编 阅读第三章的内核对象的时候跟看天书没什么感觉 死命在想到底内核对象 句柄是个什么东西 干嘛用的 于是我们工作室的老大就对我说 这篇看过就过了
  • tx2 上 安装nvidia Isaac安装记录

    Isaac的功能挺多 xff0c 但是只支持最新的版本 xff0c 所以没办法 xff0c 只能装最新的了 下面就记录一下这个过程 安装环境真是很麻烦 xff0c 不是下载失败就是下载慢 一天基本安装不完 第一步安装1804 因为只支持18
  • 关于进程间的访问权限等进程间控制资料收集

    http www vckbase com DUPLICATEHANDLE函数可以实现将同步内核对象被拷贝并且将原内核对象关闭 xff0c 从而达到可以自由控制内核对象的目的 xff0c 这可以实现使得只能单一启用的进程成为多启用的进程的目的
  • IIC总线基础知识

    IIC总线基础知识 一 简介 IIC xff08 Inter Integrated Circuit xff09 是一个多主从的串行总线 xff0c 又叫I2C xff0c 是由飞利浦公司发明的通讯总线 xff0c 属于半双工同步传输类型总线
  • 常见RISC-V介绍

    当前一颗新出的CPU xff1a RISC V简直火透了半边天 xff0c 无论是财大气粗的阿里系的平头哥 xff0c 还是新创企业 xff0c 似乎只要和RISC V挂上钩就足可以实现赶英超美 那事实上RISC V是什么 xff1f 除了