记录一个小白对于RISC-V的认知过程
一、前言
在真正的去了解RISC-V之前,其实我只是在自己关注的一些嵌入式的公众号上看到过关于它的文章,而且看到过很多次,可见它现在真的很火,但是我都没有仔细的去了解过。最近有幸和几个同学一起报名参加了全国大学生集成电路创新创业大赛,具体报名的是RISC-V挑战杯,因为这个里面有一个子赛题是关于避障小车的,相对比较简单,毕竟我们几个现在都是大四,还是要以毕业设计为主。
二、了解RISC-V的概念
报名之后,我就开始在网上搜索各种关于RISC-V的文章,虽然有很多的文章,但是由于刚开始没有太多的概念,所以在最初看这些文章的时候还是很迷糊。当我看多一些资料之后,慢慢的了解到,RISC-V其实是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。 你没有听错,这是一个开源的指令集架构,当然之前也有一些开源指令集架构,不过最终都不是很成功,比如OpenRISC、SPARC等,有兴趣的朋友可以去了解一下。
因为我们之前学习过嵌入式系统原理与应用这门课,它里面讲的是ARM架构,其实让我对RISC-V的概念真正了解的还是查资料时看到的倪光南院士说的一句话:“RISC-V将和x86、ARM三分天下 ”。这么简单的一句话,其实可以从两个方面理解,一方面是它和x86和ARM一样,是一种指令集架构,因为我学过ARM架构,所以就会让我对RISC-V有一个很明确的认知;另一方面也说明了RISC-V潜力是巨大的。
三、了解RISC-V的优势
设计优势:之所以RISC-V得到了很多人的认可,是因为RISC-V的两大设计优势:精简和灵活。RISC-V指令集在最初设计时,其研发团队就明确表示要追求简约,丢弃历史包袱。RISC-V的基本指令仅40余条,并且采用了模块化的指令集,能满足从微控制器到超级计算机等各种复杂程度的处理器需求,支持从FPGA、ASIC乃至未来器件等多种实现方式。
目标优势:RISC-V架构的目标如下:
- 成为一种完全开放的指令集,可以被任何学术机构或商业组织所自由使用。
- 成为一种真正适合硬件实现且稳定的标准指令集。
2016年,RISC-V基金会正式成立开始运作。这是一个非营利组织,负责维护标准的RISC-V指令集手册和与架构文档,以及编译器等CPU等所需要的软件工具链。任何组织和个人可以随时在RISC-V基金会网站上免费下载(无需注册)。
四、进一步理解指令集、指令集架构/处理器架构、微架构、处理器内核、处理器(SoC)之间的关系
上面说了这么多,当我初步了解了RISC-V是个什么东西之后,一些问题也随之而来,也就是我经常会混淆的一些和CPU相关的概念,比如指令集,处理器架构/指令集架构,微架构,处理器内核以及处理器这五者之间的关系。同样,在学习ARM架构的时候,我也是对这几个概念不是很清楚。查了一些资料之后,我是这么理解的,比较通俗的来说就是:
指令集就是一组指令的集合,而指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读写存储器操作)
指令集架构,有时也称处理器架构就是规定了有哪些指令可以使用,比如加减乘除;以及这些指令对应的编码。它不仅是一组指令的集合,还定义了任何软件程序员需要了解的硬件信息,包括支持的数据类型、存储器、寄存器状态、寻址模式和存储器模型等。有了此架构,我们就可以使用不同的处理器硬件实现方案来设计不同性能的处理器。
而这个处理器硬件实现方案,正是我们所说的微架构。也就是我们在实现加减乘除操作的时候,用什么样的硬件电路来实现接收特定二进制码就知道去执行指定的加减乘除动作。
有了微架构,我们就可以按照这个架构去设计处理器内核,这其实才是真正意义上的CPU,它是整个处理器内部最核心的部分。
有了处理器核,我们再加上一些外设、IO、存储器等设备, 就构成了我们平时所说的处理器(CPU),而CPU往往就是一个完整的SoC。
其实最后还有一个层次,那就是和我们离的最近的产品,只有最后将CPU拿来生产一些实际的产品,才有其真正的价值
为了比较好理解,我们先拿ARM处理器按照以上几个个层次来举例子:
ARM指令集-----ARMv7-M 指令集/处理器架构-----Cortex-M3内核-----STM32F103ZET6处理器-----实际产品(如STM32 单片机)
下面再拿基于RISC-V的处理器按照以上几个层次来举例子:
RISC-V指令集-----RV32IMAC指令集/处理器架构-----SiFive E31标准内核-----Freedom E310 SoC-----实际产品(如HiFive1 Rev B开发板)
五、说到RISC-V就不得不提SiFive公司
上面所提到的SiFive,其实是一家公司,它是基于免费且开放的RISC-V指令集架构的商业化处理器核心IP、开发工具和芯片解决方案的领导者。 在RISC-V开创者和业内资深专家组成的团队领导下,SiFive帮助SoC设计人员缩短产品上市时间,以及通过定制的开放式架构处理器内核降低成本,同时,使系统设计人员能够构建基于RISC-V的定制半导体,从而实现芯片优化。
它基于RISC-V的标准内核IP主要有以下三个系列,分别应用于不同领域
SiFive标准内核是世界上采用最多的RISC-V解决方案。从低功耗嵌入式微控制器到多核应用处理器,采用我们的IP是实现RISC-V风险最低,最简单的最佳途径。
SiFive标准内核均可定制,可通过SiFive Core Designer进行配置以满足精确需求。
对于上述所提到的Freedom E310 SoC,它就是定制化模型系列-Freedom Everywhere系列中的首款模型。它是由低功耗MCU模型及基于SiFive E31标准内核设计而成。
六、来说一说软件生态
我们都知道,如果只是做嵌入式开发,其实大部分人是不用关心具体的指令集架构的,我们只需要有一款用于开发的软件工具即可,它可以帮助我们对写好的程序进行链接,编译等,我们只需要写程序即可
下面是一些常用的软件工具
Freedom Studio是使用SiFive硬件开始编程的最快方法。Freedom Studio构建于流行的Eclipse IDE之上,并与预构建的工具链和Freedom E SDK中的示例项目打包在一起。Freedom Studio与所有SiFive RISC-V开发板兼容。
Freedom E SDK是我们硬件平台的演示程序,行业标准基准测试和板级支持包(BSP)的存储库。在我们的开发板上运行基准代码就像构建单个Makefile目标一样简单。
Prebuilt RISC‑V GCC Toolchain是我们预先构建的工具链,其中包含在SiFive产品上编译和调试程序所需的所有工具。我们的工具链分发经过精心打包,可支持32位和64位ISA。
Third Party RISC‑V Tools指的是一些第三方软件工具
七、最后来说一下RISC-V方面的书籍
说到这个,肯定第一个想到的就是胡振波编写的姊妹篇书籍手把手教你设计CPU——RISC-V处理器篇和RISC-V架构与嵌入式快速入门。
作者开发了一款MCU级别超低功耗RISC-V处理器(蜂鸟 E203)作为学习案例,并且配套开源了一整套完整的MCU SOC平台,软件开发套件(SDK)以及配套软件示例。
蜂鸟 E203 MCU SoC基本上借鉴于开源的Freedom E310 SoC平台,我们上面也提到过。为了最大程度的共享HFive1开发板的软件生态,它尽可能的复用Freedom E310 SoC IP
Freedom E310 SoC是Freedom E300平台的一个具体型号,而Freedom E300平台是Freedom everywhere SoC家族系列中的第一款SoC平台。好吧,以上这些名词其实我也有点晕,想知道的朋友可以仔细了解一下SiFive都有哪些家族系列,然后每个家族系列又有哪些SoC平台,每一款SoC平台又有哪些具体的型号。大致就是这样进行分类的。
记录一个小白对于RISC-V的认知过程相关推荐
- 一个小白的Thingworx成长记录
一个小白的Thingworx成长记录 这个为开发平台的主界面,在随后的文章中会逐步进行讲解每个部分的功能 Thingworx是什么 对一名开发人员来说,代码是底层,那么Thingworx就是产品,一个 ...
- python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)
python成功爬取拉勾网(一个小白的心里路程) 最开始想爬取拉钩是因为半年前上python实验课的时候,老师给了两个任务,一个时爬取糗百的笑话内容,另一个时爬取拉勾网的职位信息,当时因为课时紧张的缘 ...
- RISC V (RV32+RV64) 架构 整体介绍
文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...
- 记录一个C++多线程的坑
记录一个C++多线程的坑 VS2019报错 解决方案: 错误代码 修改方案: 写在最后,发牢骚 VS2019报错 1>C:\Program Files (x86)\Microsoft Visua ...
- 计组学习笔记2(RISC v版)
指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...
- element-ui table组件如何高度自适应、el-table的x、y轴都出现滚动条右下角会出现一个小白块 解决方案
前言 想要表格的高度自适应屏幕,保证table能一屏内展示完. elementUI的版本: "element-ui": "^2.14.1", 关键代码: < ...
- 一个小白对auth的理解
---恢复内容开始--- PS:最近需要做一个验证用户权限的功能,在官方和百度看了下,发现大家都是用auth来做验证,官方有很多auth的使用教程,但是都不全面,我也提问了几个关于auth的问题 也没 ...
- 开课吧python学费-分享一个小白也能月赚2万的新技能
原标题:分享一个小白也能月赚2万的新技能 这两年,每天都听身边人吐槽:"最近太累了,加班多.事情杂.离家远......可到手的工资却少得可怜." 辞职.跳槽,已然成为一种常态. 这 ...
- 记录一个海思TOE的BUG
原始引用地址: 记录一个海思TOE的BUG time: 2020.5.3 17:57 发现的过程 最近在做onvif开发时,有x86的验证的功能没有问题,移动到海思Hi3536上简单运行貌视也很正 ...
最新文章
- AS 400 常用命令
- 如何解构单体前端应用——前端应用的微服务式拆分
- 嵌入式系统学习笔记之五-- uboot常用命令 环境变量
- 爆火的深度学习面试书现可白嫖!GitHub上线2周1.5K Star,之前售价146元
- linux下随机数字的生成
- 数据结构与算法 / 排序算法 / 堆排序
- opencv书籍调研
- apache-cxf 使用_使用Apache CXF进行Web服务学习
- Mac 安装php redis扩展
- Errors running builder 'DeploymentBuilder'
- TcpTrace追踪远程服务器的soap信息
- 编译安装M2Crypto-0.20.2
- 【心电信号】基于matlab心电信号采集与处理【含Matlab源码 954期】
- ABB变频器电路图 ACS510图纸 ACS550原理图 ACS800变频器。pdf格式
- 黑帽SEO研究之js快照劫持代码分析
- 函数连续的概念与性质(包括强制函数)
- 怎样获取Atlantic免费一年的VPS主机
- oracle中numeric是什么类型,numeric
- 一个呼叫中心系统应该怎样搭建?okcc呼叫系统
- 编程的智慧 强烈推荐