嵌入式研究杂记(1)-RISC-V开源CPU
RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。
与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件而不必支付给任何公司专利费。虽然这不是第一个开源指令集[1],但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。[2]
RISC-V指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。[3][4]截至2017年5月RISC-V已经确立了版本2.22的用户空间的指令集(userspace ISA),而特权指令集(privileged ISA)也处在草案版本1.10。
RISC-V的作者们旨在提供数种可以在BSD许可证之下自由使用的CPU设计。该许可证允许像是RISC-V芯片设计等派生作品可以像RISC-V本身一样是公开且自由发行,也可以是闭源或者是专有财产。
相比而言,ARM控股和MIPS科技等商业芯片供应商会对使用其专利者收取高额的许可费用。[5]他们也要求在接收其描述设计优点的文件和指令集前,还需要签署保密协议。许多设计优点为完全专有,从来不会披露给客户。这种保密制度阻碍了公共教育用途和安全审核,以及开发公共、低成本的自由及开放源代码软件编译器和操作系统。[来源请求]
开发一个CPU需要多种专业的设计知识,包括电子逻辑、编译器和操作系统。这种资源在专业工程团队之外很难见到。所以现代且高质量的通用计算机指令集近年来除了学术环境以外并没有在任何地方被广泛使用,甚至没有被阐述。正因如此,许多RISC-V贡献者将此视为整个社区付出的成果,而这也是RISC-V有很多任务程上的应用的一项原因。
RISC-V的作者们还有大量研究和用户经验来验证他们在硅片和仿真中的设计。RISC-V指令集是从一系列的学术计算机设计项目直接发展而来的。它一开始的目的有一部分是为了帮助这些项目。
RISC的历史可追溯到1980年左右。[6]在此之前,人们觉得简单的计算机可能会有用,但是没有很多人去阐述其设计原则。这种简单而有效的计算机一直都是学术界的兴趣。
**学术界的学者们为了出版第一版的《计算机体系结构:定量方法》(Computer Architecture: A Quantitative Approach)ISBN 978-1558600690 ,所以于1990年订立了RISC指令集DLX。David Patterson是其中一位作者,后来协助RISC-V的开发。但是DLX只用于教育用途,学术界和业余爱好者使用FPGA(现场可编程门数组)来实做它,但并没有获取商业运用。**版本2及更早版本的ARM CPU具有公共域指令集,并且仍有GCC的支持,而GCC是一个受欢迎且免费的软件编译器。该ISA有三个开源内核,但尚未制造。
OpenRISC是一款基于DLX的开源ISA,并且具有相关的RISC设计。它完全支持GCC并且有实做在Linux上。但是它很少有商业上的实做,直到2018年下半年SiFive公司10月推出一系列全新 CPU设计图产品线应用涵盖 5G、网通、存储、增强现实(AR)、虚拟现实(VR)等,其 E系列与 U系列的 CPU方案已经威胁到ARM(安谋)公司的收费产品并且拥有后者缺乏的64位架构产品。[7]。
ARM公司受到威胁后上线了一个网站riscv-basics.com,列举了对RISC-V的批判,包括:成本、生态系统、碎片化风险、安全性问题、设计验证。但最终迫于业界舆论恶评,ARM关闭了该网站。
RISC设计者们认为指令集因为位于硬件和软件之间,所以是电脑主要的沟通桥梁,因此如果有一个设计良好的指令集是开源而且可以被任何人使用的,就可以让更多的资源能够重复利用,而大大的减少软件的成本。而这样的指令集也会增加硬件供应商市场的竞争力,因为硬件供应商们可以挪用更多资源来进行设计,减少处理软件支持的事务。[8]
设计者声称在指令集设计领域里,新的设计准则渐渐变得罕见,而近四十年中,大多数成功的设计变得越来越相似。至于那些失败的指令集,大多数是因为他们的赞助商赚不了钱,而不是因为其指令集在技术上有多差。所以,一个在成熟的设计准则之下开发且设计良好的开源指令集想必能吸引许多供应商长期的支持。[8]
许多先前的开源指令集架构使用GNU通用公共许可协议来鼓励用户们允许他们的实现方法被其他人复制或是使用。
设计者们表示,RISC-V指令集是给实际上的电脑使用的,它不像其他学术上的指令集设计,只有为了比较好阐述理念而做优化。而RISC-V指令集有一些功能是可以增加电脑速度又可以减少成本和电源使用。这些特色包含,Load/store架构,在CPU里面的比特表示方法来简化MUX(数据多任务器),以标准为基础来简化的浮点数,架构中立的设计和把MSB(Most significant bit)放到固定位置来加速Sign extension。而sign-extension常常就是静态时序分析里面的关键路径(Critical timing path)[9]。
RISC-V 指令集是设计来给各式各样的用途使用的,而它支持三个不同的字组大小,分别是32位、64位、128位以及与这三种字组大小有关的各式各样的指令子集。而这些指令子集的定义会按照那三个字组大小来做些微的改动。透过这些指令子集的向量处理器与数据中心等级的机柜式平行电脑/平行运算来帮助嵌入式系统、个人电脑和超级电脑。
该指令集采取不固定的编码长度而且还可以再扩展,因此在未来,还可以一直加入更多比特的编码方式。该指令集有特别留空间给128位的延伸版本,因为60年的产业界经验显示在指令集设计领域里,最无法撤销的错误就是缺少存储器寻址空间。截至2016年,128位的指令集仍然刻意地维持在没有定义的状态,这是因为到现在为止,人们很少有实际上操作这么大存储器的系统的经验。[9]
然而,RISC-V也可以拿来做学术上的使用。它拥有简化的整数指令子集允许学生拿来做基本的练习,而整数指令子集就是一个简单的指令集架构(ISA)让软件可以控制研究上的机器。而不定长度的指令集架构也允许扩展来满足研究或是学生练习上的需求。[9]分割出来的特权指令集可以支持在不重新设计编译器的情况下,进行操作系统方面的研究。[10]RISC-V的开放的知识产权允许相关的设计被发布、使用和修改。
嵌入式研究杂记(1)-RISC-V开源CPU相关推荐
- 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么
嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...
- RISC V (RV32+RV64) 架构 整体介绍
文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...
- 计组学习笔记2(RISC v版)
指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...
- ucos-ii嵌入式操作系统任务调度(二)----任务切换瞬间cpu做了什么以及任务任务切换函数OS_TASK_SW
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下: 一 ...
- FaceBoxes—官方开源CPU实时高精度人脸检测器
点击我爱计算机视觉标星,更快获取CVML新技术 近日FaceBoxes算法的提出者开源了该算法所有训练和测试代码,并提供Caffe与PyTorch实现. FaceBoxes是中科院自动化所在IJCB2 ...
- 嵌入式操作系统内核原理和开发(cpu的那些事)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] cpu是数字处理系统中的一个重要环节.在我看来,单片机.微处理器.dsp都可以称作是cpu,只 ...
- python需要cpu还是显卡问题_如果研究深度学习方向,是CPU更重要还是显卡更重要?...
一.CPU与GPU对比 CPU是一个有多种功能的优秀领导者.它的优点在于调度.管理.协调能力强,计算能力则位于其次.而GPU相当于一个接受CPU调度的"拥有大量计算能力"的员工. ...
- 嵌入式linux开发业内各个常用开源项目git仓库地址大全
1.使用git下载u-boot源码: git clone git://git.denx.de/u-boot.git u-boot 2.使用git下载linux(stable版本)源码: git clo ...
- 安装Ubuntu RISC V toolchain失败(网速、git配置原因)
git获取大容量工程出错:RPC failed: curl GnuTLS recv error : Decryption has failed. error: RPC failed; curl 56 ...
最新文章
- Ubuntu开发用新机安装流程
- 谈谈UI架构设计的演化
- RocketMQ命令整理
- 算法-----第一个错误的版本
- python四十六:继承顺序之线性顺序列表
- 运行Angular项目后自动打开网页
- mysql只能用一个索引_mysql只会使用到一个索引的原因
- oracle 找不到程序单元,Oracle Web ADI 加载时错误:ORA-06508: PL/SQL: 无法在调用之前找到程序单元...
- 加速度积分成位移的频域方法
- Java架构师在线视频,架构师的7大必备技能
- Python os.makedirs try 以及 raise
- 《大连金州没有眼泪》
- python数据分析怎么画_跟小白学Python数据分析——绘制维恩图
- Linux内核——任务管理
- html工作周报,可查看(周报).html
- 差分运算放大器的计算
- display:flex 意思是弹性布局
- win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而过
- CCLE 2022 第五届中国教育后勤展览会
- 缠论中枢的判断以及应用(完整版)