当前一颗新出的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,非常适合初学者,之后会详细介绍

常见RISC-V介绍相关推荐

  1. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  2. 常见充值方式介绍及对比 (转)

    常见充值方式介绍及对比 1:银联充值 1:环境部署 安装NetPay4NTSetup.exe,将MerPrk.key和PgPubk.key两个文件放到C:\WINDOWS目录下,环境部署完成了. 2: ...

  3. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  4. 计算机内存与内置类型,笔记本内存种类有哪些 笔记本常见内存类型介绍

    此前经常有电脑小白咨询我"128GB内存够不够"之类的问题,很明显这是将内存和硬盘搞混了.如果你也分不清内存和硬盘,那么很有必要看下去.本文主要介绍目前笔记本中常见的内存类型,并且 ...

  5. js 计算任意凸多边形内最大矩形_题库 | 计算机视觉常见面试题型介绍及解答 第 7 期...

    - 计算机视觉 -为什么说 Dropout 可以解决过拟合?(1)取平均的作用: 先回到标准的模型即没有 dropout,我们用相同的训练数据去训练 5 个不同的神经网络,一般会得到 5 个不同的结果 ...

  6. 常见网络命令介绍及使用

    常见网络命令介绍及使用 ping 介绍 参数说明 使用例子 ipconfig 介绍 参数说明 使用例子 tracert 介绍 参数说明 使用例子 netstat 介绍 参数说明 使用例子 route ...

  7. 常见特征检测算法介绍

    Camera系列文章 传感器融合是将多个传感器采集的数据进行融合处理,以更好感知周围环境:这里首先介绍Camera的相关内容,包括摄像头及图像知识基本介绍,OpenCV图像识别(特征提取,目标分类等) ...

  8. 消息队列属性及常见消息队列介绍

    什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费.分布式消息服务DMS则是分布式的队列系统,消息队列中的消息分布 ...

  9. iOS开发UI篇—常见的项目文件介绍

    iOS开发UI篇-常见的项目文件介绍 一.项目文件结构示意图 二.文件介绍 1.products文件夹:主要用于mac电脑开发的可执行文件,ios开发用不到这个文件 2.frameworks文件夹主要 ...

  10. 音视频直播流程及常见视频流协议介绍

    音视频直播流程介绍 常见视频流协议介绍 HLS HLS是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统 ...

最新文章

  1. MyBatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
  2. 在 Linux 上如何安装 SoundConverter及转换音频
  3. nvcc fatal : Unsupported gpu architecture 'compute_11'
  4. 新同事,git又报错Please move or remove them before you merge
  5. 极简单的方式序列化sqlalchemy结果集为JSON
  6. mkv210_image.c文件详解
  7. 打不开mysql exe文件怎么打开文件_exe文件打不开怎么办?
  8. 使用ArrayList对大小写字母的随机打印
  9. 美国服务器远程卡,RAKsmart Windows美国服务器远程连接VNC方法
  10. php面试专题---6、正则表达式考点
  11. C语言汇编-函数调用堆栈的过程
  12. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议
  13. BAT4行代码让电脑蓝屏(无伤害)
  14. linux shell命令行与脚本编程---处理输入输出
  15. Python的鸭子类型
  16. Python 实现 2048 游戏
  17. 【Python计算机视觉】图像到图像的映射(单应性变换、图像扭曲)
  18. 归纳法证明汉诺塔解析式思路
  19. 跟着Leo机器学习:sklearn之Nearest Neighbors
  20. M - Help Hanzo(模拟素数筛思想+优化)

热门文章

  1. 英语学习详细笔记(十五)被动语态
  2. wpf 音频波形图_wpf波形图 - IT屋-程序员软件开发技术分享社区
  3. GO微服务实战之红包系统
  4. 算法细节系列(20):Word Ladder系列
  5. C#读IC卡程序 Mwic_32.dll
  6. Maven手工安装jar包到本地仓库
  7. 阿里巴巴集团副总裁陈丽娟对话VMware全球副总裁原欣:助力企业数字化转型
  8. *继承IObjectSafety接口,实现vb activeX控件安全性(IE不提示安全问题)
  9. 关于调用阿里云短信服务接口实现短信验证码的过程
  10. Ubuntu下用C++调用opencv实现点阵字