sky 发表于 2020-9-13 00:47:16

如何看待开源指令集RISC-V?

RISC-V - 解决国产民用处理器困局的终极方案?

关于RISC-V的项目


想问问大家,在这个时间点上,RISC-V的生态位是什么,商业模式是什么,在硬件领域大搞开源运动的意义又是什么?



[*]很多人拿RISC-V比作Linux,觉得“Linux的成功是因为拥抱自由与开源,所以RISC-V拥抱开源必然成功”——首先这就是一个巨大的误解,Linux的成功是因为所有软件硬件厂商发现OS领域的技术已经复杂到让微软、Google、IBM、Intel等巨无霸都无法用自己技术力量来维护了,因此“开源”实际上是更坚实更有效的“协作+共同赚钱”的商业模式,反而促进了大大小小的厂商自愿花钱紧密围绕在Linux路线图中协作下去从而共同获利——这不仅是Linux的成功原因,也是各种复杂庞大且前沿的开源项目成功的原因——RISC-V作为从学术界的无历史包袱、设计理念前沿的指令集,开源当然是个好事,但是开源一定意味着资本之间的合作式成功吗?如果大家共享一份开源的指令集,而像现在RISC-V的官网一样三四十个厂商各自拥有一份私自的implementation,那么“开源”无法带来“协作”而导致大量重复的工作,这样的意义又是什么呢?Linux的成功秘诀是“复杂项目下的协作”,而“开源”只是逼迫大资本的技术人员妥协和协作的手段之一——而不是绝对唯一的目的;


[*]RISC-V的行业中的生态位是什么?一堆人回答“类比Arduino”、“类比树莓派”、“类比cortex A5”——归根到底还是低性能、低功耗的嵌入式设备,基本用在control board、MCU、IoT设备上,是边缘中的边缘,在业界处于利润最低、门槛最低的生态位上。那么问题来了,三四十家厂商、大学、研究所涌入“RISC-V”这个生态,每个团队要么是纯粹学术界团队,要么是商业和产品导向性的公司,一群散兵游勇,每个小团队有一套自己的、路线和技术完全不同且无法兼容合作的implementation,压根没有Linux那种“一个委员会掌舵,所有公司和开发者按照一个路线图合作”的方式——这样的开源、自由与免费,岂不是一种浪费?


[*]RISC-V生态以后到底有哪些成功的商业模式?如果光是低性能、低成本、低功耗、低利润的IoT芯片、micro controller甚至直接跑在FPGA上——那么指令集级别的“开源运动”,能带来商业上的多少利润?要知道C8051、AVR、Adruino,以及各种大量低端到几块钱人民币每片的ARM都是成熟的商业模式,巨大的出货量早就摊平了研发测试和授权成本;另一方面如果没有持续不断的收入,没有相比于各种同行们具有革命性的优势和利益,你又如何说服开发者和客户去选用你的设计呢?更不要说现在绝大部分RISC-V的团队都还在开源HDL/RTL给大家烧录进FPGA用的层次上,你降低了研发成本和测试成本,提高了研发速度,但最终还是要被FPGA厂商割一轮韭菜。


市场证明了消费市场里通用计算领域x86是成功的,拥有完整的生态和巨大的用户粘性;ARM在移动领域里的成功,是基于移动领域没有x86的设计和哲学包袱的大前提下,在一个全新的市场追赶上;同时还有一堆细分领域因为技术迭代慢、对性能和功耗要求不高、对特殊特性有需求而分布着各种小众架构比如车载芯片、IoT、极低成本的遥控器和玩具控制等MCU等——而RISC-V在商业模式上会有哪些潜能,我目前还没看到。


目前看起来,RISC-V在商业上最成功的就是不断卖开发板的SiFive直接把FPGA做到了Microsemi上,以及PerfXLab的一些跑在FPGA上的产品——然而这都是卖给开发者的玩具,不是卖给消费者的产品,如果开发者失去了希望,那么以后连开发者也不会买了。


而且SiFive做到Microsemi上的原因是为了各种security的特性,然而security从来都是Microsemi的,跟RISC-V本身也没太大关系,如果打着security的旗号卖RISC-V的方案那就是完全的本末倒置。


利益相关:“I know more about Microsemi security things than anybody”




在垂直领域TWS芯片上已经大规模出货了,紫光展锐和中科蓝讯都有RISC-V的TWS产品线,蓝讯在去年年中就宣布出货超1亿颗,而另一著名TWS厂商珠海杰理也已经加入RISC-V推广机构。另外,国外已经开始形成两大开源RV组织,以美国公司和机构为主的的CHIPS Alliance,以欧洲公司和机构为主的OpenHW GROUPS,后一家已经开始整合旗下开源IP为CORE-V家族,前一家貌似是以西数的开源IP为基础,国内公司两家好像都有参与。


这个问题可以看作是当年Flash vs HTML5的翻版,商业公司都是逐利的,当信息行业格局不再要被兼容性束缚时,arm这颗绊脚石将成为成本负担无论如何都要被踢掉,这就是为什么行业标准总会从事实标准变成“法定”标准的缘故。行业发展一定程度就会细分,越细分就需要对前人的东西进行标准化




你都会说x86要背历史包袱,就说明他们已经成为历史了,未来虽然不会消失,但是会无限趋向于0。服务器领域Linux强势,不是因为Linux太复杂大家都搞不定,而是云时代什么东西都是强调跨平台,可移植性的,所以Python这些脚本语言能发展起来,而不是用汇编写的程序发展起来,所以性能和兼容性,对于相关行业的从业人员并不会看中,但是成本就会看中,至少行业领头羊会看中












RISC-V提供了一套核心指令集是所有IP商都需要遵守的,在此之外可以各家定制自己的扩展指令集。所以不管你怎么branch,如果某个程序的代码只基于核心指令集,则可以在任何一颗RISC-V芯片上运行(不考虑支持的指令集模块多寡)。

可以想象,在整个RISC-V生态逐渐成熟后,未来会诞生若干个强势IP核,它们的市场庞大、用户众多,有能力定制自己的私有化指令集来进一步提升某些方面的性能,如果有软件支持这类特性,则意味着无法被其他RISC-V芯片支持。这种现象如果频繁发生,就会产生碎片化。

不过仍然有很多方法可以减少这种情况发生,首先这种指令集定制只可能发生在极少数市占率极高的IP上(不考虑嵌入式等弱生态市场),因为小型IP商这么做只会导致自身市场缩减,得不偿失。

其次,IP商之间可以通过单向或交叉授权获得对方私有化的那部分指令集的使用权。

符合委员会制定的指令集扩展原则的私有化指令集如果能够获得极大的市场成功或在性能特性上具有极大优势,也很有可能被收录入官方ISA扩展。








看来大家对RISC-V误解还是很深。1、 前面已经有人说过了, RISC-V本质是靠免费、无限制使用(比Linux还自由)来吸引用户的。 开源只是便于推广和促进更好地发展。2、 RISC-V是一种开放和弹性可定制可扩展的ISA, 在行业中的应用可以是很广泛的,从低端的MCU到高端的HPC都可以有其一席之地。 你现在看到的多数集中在MCU, 只是一种刚起步的必由阶段,也可以看作投石问路。难道现在直接跟Intel Xeon竞争?即使有那个技术能力,你觉得有用户基础吗?3、 看来你是太孤陋寡闻了, 国内现在已经有一批芯片出来了, 包括阿里这样的巨头都在布局了(平头哥玄铁910了解一下)。 你竟然还认为是开发者FPGA板上玩的玩具?
开源指令集RISC-V:商业化进程在加速

本科乱点技能树时,在17年底了解到了RISC-V,当时觉得很新鲜,兴冲冲地转发到实验室的群里,说“我发现了一个好玩的东西!”,然而,我发现我还是太年轻了,老师们好歹也是IC行业的老前辈了,早就看穿了一切,这波热点还是比我了解得清楚。
后来,课题组和某司合作密切,现在在合作研发一个基于RISC-V核的嵌入式SoC,所以又对RISC-V有了进一步的了解。
其实根据我浅薄的理解,RISC-V的优点无非就是开源、无历史包袱、可定制。
这些其他答主已经回答得非常不错了,我就不赘述了。
我主要讲一下RISC-V现在的生态。
RISC-V官网其实有一个IP核、SoC、软件生态的汇总页面,上面列举了现有的IP核、SoC、编译器、仿真器等。
https://riscv.org/risc-v-cores-and-soc-overview/https://riscv.org/software-status/

光看这个你会觉得RISC-V的生态很强大了,有这么多IP和SoC,有能跑的Linux等,有GNU套件、LLVM、qemu等的支持,简直起飞有没有!但其实并没有这么好,RISC-V的生态还是非常弱的。
以一个例子为例,LLVM的RISC-V target至今(LLVM 8.0.0)还没正式进入主线(LLVM_ALL_TARGETS),还是一个Experimental target,需要自己开启编译选项编译(据说是因为LLVM的开发者把重点放在了port ARM架构),这无形中劝退了LLVM党。不过这个不是什么问题,用gcc就是了。
目前各个方面都在努力开发跟上,我相信生态的建立不是一时半会儿的,以后肯定会越来越好,以我遇到的坑(雾)来说,大家还是很重视RISC-V的。这个坑可以说坑了我一个中午,害我饭都没吃爽快。前一天(2019年4月12日)我刚编译了一份riscv-qemu来进行仿真,第二天师兄用蜂鸟的板子调试一直没搞好,我就说要不你先用QEMU吧,先把开发流程走一遍。于是就开始git clone make install一把梭,然而,clone后发现里面没有代码!
怀疑人生了很久,用history看了昨天我运行的命令,确定无疑之后,怀疑GitHub抽风了,上去一看,发现riscv-qemu已经并入QEMU的upstream,从4.0.0开始正式支持RISC-V的模拟了,所以作者把仓库存档了……可以看出,对于RISC-V大家还是很热情的嘛!


(大家记住,QEMU从4.0.0开始正式支持RISC-V了)
如果要进行RISC-V相关的开发,给大家排雷:

[*]板子用蜂鸟或者SiFive的,或者先用QEMU(4.0.0以上!)模拟;
[*]编译器目前用gcc比较好(可以从SiFive的官网下载编译好的),如果是LLVM党也可以自己编译RISC-V的target;
[*]调试可以用gdb配合QEMU的singlestep,有板子的话,可以用J-Link配合OpenOCD;
[*]IDE我是用Clion然后自己配工具链,SiFive推出了自己的IDE(我没用过,师兄评价不咋地),也有开源的Eclipse for MCU,个人感觉坑比较多,也不太推荐。

RISC-V目前主要在嵌入式领域发力,也不知道能不能干过ARM,随缘随缘~
RISC-V的backend即将在LLVM 9.0移除出experimental,进入默认构建target。https://www.lowrisc.org/blog/2019/07/risc-v-llvm-backend-in-clang-llvm-9.0/









RISC-V能给ARM以压力,这是肯定的。不过目前暂时还没法干倒ARM。
因为一个指令集本身并不仅仅只是个指令集,还有具体实现的。
而ARM现在的实现,优秀到什么程度呢?优秀到三星,华为海思,高通这些巨头都已经乖乖的放弃自研,直接使用A76A77核心,也就是说它们都已经意识到ARM的A76核心比自研的好。——如果这个事态继续下去,我甚至怀疑ARM研发团队提供的核心实现将来能超过苹果自研A系芯片。
为什么ARM的实现能够如此优秀?我觉得最主要的原因,是有钱有资源。
其实早期的ARM实现也平淡无奇,十几年前的ARM其实也是若干普普通通指令集中的一个。然而手机领域的蓬勃发展给ARM带来了大量的利润,这反哺了其研发,一轮又一轮的优化使得它现在性能达到了如此优秀的水平。拉开了与其它架构的差距。
类似的情况,比如说Java这个技术上并非绝顶优秀的语言,为何拥有世界一流的JIT,从而拥有了虚拟机语言中最优秀的性能?因为它被足够多的场合应用,就有了足够多的利润,足够多的资源,足够的研发,从而财大气粗的能够实现足够强的优化,实现了如此优秀的JIT。
--
所以RISC-V需要存在于足够多的工业应用中,需要有足够多的应用与研发反哺它,有足够的优化与提升,才能有与ARM叫板的资本。






深度:AI芯片新风口!阿里华米已入局,将撼动ARM地位





ARM这回即使不死,以后日子也不好过,软银的投资有风险了。


RISCV vs ARM和ARM vs Intel并不是一回事,不能看到Intel能苟就认为ARM也能。


Intel能抗,一部分原因是fab好(现在也不行了),一部分是基于商业计算机系统里binary兼容的历史遗留问题:没有x86,一大票应用就要死翘翘,就这么直接。另外一部分是Intel的design确实好,x86的其他实现没一个能打的(AMD好像赶上来了)


但是ARM可没这待遇。ARM最火的这块,AArch64,基本全是软硬一体的打包方案,用户换硬件的时候就是换软件的时候,并且没人关心前向兼容(没人要求自己手机今后10年每一代都要支持Android 2.3)。aarch64的最佳design是高通和苹果,ARM自己的design基本都是给二流厂商用的。


可是ARM的授权费简直日天,天下苦ARM久矣。A系列的下游,苹果,谷歌。高通。苹果那边换arch已经不止3次了,轻车熟路,高通的CPU本来就是自己写的,换个arch轻而易举,谷歌就是纯软件商,编译器支持啥它支持啥。这三家反水的难度如此之低,要是ARM继续横征暴敛,估计他们离换门不远了。


至于其他家直接用Cortex A + Mali的(华为说你呢),其实就是墙头草,谁家便宜用谁的。如果高通和谷歌支持RISCV了,华为还给ARM交上百一部机器的授权费,那用高通RISCV的小米蓝绿会吊打它的。












翻了翻已有的回答,很少有人从指令集本身编码上谈的,我最近也简单看了看RISC V的手册,班门弄斧说一说吧。


我看到RISC V的指令第一印象可以概括为“像”。像什么呢?像MIPS(至少是在32位下)。指令的命名和功能很多都是一致的,能看懂MIPS汇编,RISC V汇编也能看个大概。


通用寄存器的定义也是基本一致的,0号寄存器都是恒0源,其他的31个寄存器为通用寄存器。另外,RISC V的指令集编码里也有MIPS的影子,其Load指令funct3部分和MIPS同名指令的Opcode后三位编码完全一致。


不过,再仔细看,又会发现RISC V的一些不同之处。


MIPS的指令相对x86之流可以说是比较规则了,但是实际去做译码的话还是存在很多特例。比如,MIPS中指定该指令使用寄存器的段有rs、rt、rd,其中rs只可能读取,但rt和rd都可能是写入的对象,这让译码逻辑变得复杂。RISC V的指令编码更加规整,对应的段有rs1、rs2、rd,rs1和rs2都只用于读取,rd用于写入,几乎没有特例。


不过,规整不可能是没有代价的,要不然MIPS早就做了。RISC V牺牲了立即数的宽度来保证指令格式的整体规整。RISC V中最长的立即数也不过20位,短的只有12位。而MIPS中立即数最长可以达到丧心病狂的28位(最低两位为自动填0),短的也有16位。同时,RISC V的J型指令和B型指令的立即数编码很鬼畜(评论区有用户给出了说明,非常感谢)不过,多了4位数字用于指令,RISC V很容易做得更加规则是比较明确的。


此外,MIPS当年设计时,为了充分利用流水线,分支(Branch)指令带有一个延迟槽特性。这一特性在后来的发展中被证明意义不大,但为了保持兼容性还是传承了下来。RISC V的设计时间比较新,自然也摈弃了这一设计,指令更加简洁,

此外,我想为众多承担新希望的回答泼一点冷水。

RISC V到底是什么,它是一个指令集,说白了就是定义了一种计算机识别的编码。它只负责定义这一编码的含义是什么,而和性能表现没有必然联系。


一个好的指令集设计可以让CPU的设计更加方便,让编译器能够对这一架构生成效率更好的代码;但是,一个坏的指令集设计,也并不意味着低性能。


x86指令集的设计现在看来可以说是比较落伍的,但是使用了新技术,仍实现了相对RISC的ARM、MIPS而言不俗的性能。性能的主要影响因素是微结构的设计。举个简单(可能不太妥当)的例子,使用流水线设计的CPU,在同样主频下可以暴打多周期CPU,表现近似同主频的单周期处理器,但流水线CPU因为将指令执行进行了拆分,又可以做到相对于单周期处理器更高的主频。


未完待续


像RISC-V一样开发一个新处理器有多难?




riscV有一定的意义,确实他足够轻便,足够开源,限制也非常少,是一个非常有前景的东西。


但是,反面也非常清楚,这东西,足够新,以至于确实不成熟。他足够新,所以没有适配,缺少很多必要的生态圈。是完全开源免费的,所以没有人能够完全控制他,但也很容易导致没有一条主干线。要知道,现如今成熟的架构,背后一定要有一个足够牛气的功能推动。intel是不遗余力的搞x86才有了今天的x86,arm也一样。高昂的收费并不都是有害的,而是可以形成一个循环,帮助产品进化。


不要把x86看的一无是处,也不要把arm看的一无是处。要知道x86几十年的累计,可不是开玩笑的,里面汇聚了一代又一代,人类最最顶尖聪明的人的劳动成果。arm也一样,一个收益颇丰的公司,那么多年的累计,就算再有问题,也不可能没有精髓的。


然后就是,不要对一个新兴架构抱有太多的期待,历史上,出现的架构可不在少数,刚刚出来的时候,似乎很有意义。但是,核心往往需要通过市场化走向成熟,把生态体系建立起来。







指令集现在你可以用很低代价拿到授权,难的是微架构。简单工业控制器、单片机甚至低端嵌入式芯片的微架构可能会有开源的,但高性能的我看不会有哪个巨头免费放出来的,那个是需要用真金白银堆出来的。
窃以为:


risc-v可以改变目前当下的产品设计模式.如果其能流行起来成为主流, 未来的模式应该是苹果那样,即: 根据应用来设计芯片


目前的模式是: :根据芯片设计产品, 也叫看菜下饭.芯片有的功能就支持,没有的就做不了


大家在做芯片选型时,是不是经常碰到找不到一款合适cpu的困扰呢, 最后的结果往往是, 找一款最接近的芯片凑合着用, 毫无疑问, 它一定不是最合适最完美的


未来,国内要是能把流片费用高问题解决, 随便一个有点儿量的产品都用上专有芯片, 这并非不可能. 如此, 差异化竞争将更趋明显, 这点在iot上尤为重要

简单一句话:


risc-v有可能使大家都用上根据应用场景量身定做的cpu, 不用看那几家大佬的脸色行事

众生戮力, 未来可期







想要发展好,得有几个标志性的产品。比如能作为搭载到主流智能手机上的主芯片。这个意味着从芯片设计,制造,到工具链和软件应用开发的全面成熟。别看现在那些舞舞喳喳的,大部分都是FPGA写代码模拟的,他们需要的仅仅是一个FPGA芯片,而不是真正的CPU。
risc-v现阶段是远远比不上arm的,但为什么各大企业都跟进下注?原因很简单,企业都被美国无下限的手段给吓的心有余悸了,华为到现在都还坚挺是个史无前例的奇迹,换成其它任何企业都顶不住的,华为知道有备胎,其它企业当然也有,所以risc-v就是其中的备胎之一,risc-v考虑撤出美国到欧洲也是这种考虑,免得大家在arm上被卡脖子导悲惨下场。






现在经过华为中兴事件,感觉的确RISC-V指令集起码有这么多中国公司在基金会,而且uc Berkeley开源精神,相比其他指令集稍微安全点,可以大力发展甚至改变格局了。


ARM vs x86 vs RISC-V,未来属于谁?




导读:这是一篇关于ARM与RISC-V关系的文章

       作为一个想在嵌入式领域打拼的人来说,RISC-V(以下简称RV)的出现是好事。我第一次接触RV是在大三的时候,在这之前都是学的ARM架构(指令架构很成熟了)。老师主讲《嵌入式系统设计》,芯片是S3C2410,不过一个学期下来也没有讲多少指令集的知识(芯片种类太多,像SAMSUNG,NXP之类的半导体生产厂家可以根据自身需要对芯片构造做出更改),更没有谈及S3C2410的MMU,LCD CONTROLLER之类的硬件结构。


其实,话说回来,也没有必要对其它的硬件结构关注太多,不同厂家的芯片有不同的Datasheet,不同版本的芯片同样有不同的Datasheet,学习ARM架构就像是建造高楼的框架(指令集很重要),剩下的砌砖(对应的对IP的修改)相比之下就不这么重要了(不过不断学习是必要的)。


言归正传,为什么RV的的出现是好事呢,难道对已经在ARM架构芯片深耕多年的工程师也是好事?其实纵观ARM的发展,我们不难看出其在移动终端领域占有非常大的市场,连米国的Intel都败下阵来。


在当今这个工业4.0的时代,各个行业搭上互联网已经成了社会趋势。


互联网+,物联网,车联网,AI等术语伴随着中国制造2025的提出变得更加流行,而前不久日本资本家Softbank的孙正义(そんまさよし,名字听起来像中国人,按照我的理解,应该音译为"松麻沙尤西"的)又收购了英国的ARM公司——为此孙还卖了淘宝的股票,


可以预见ARM公司的未来前途光明。ARM的市场占有率太大,技术又很成熟,软件工具链又很齐全,按理对行业来说是件好事,企业开发产品过程中遇到的问题能够被很好地解决,但另一方面ARM的市场占有率会使它形成垄断地位(一想到高通靠CDMA专利挣中国人民的钱就觉得垄断很恶心,不过好在4G技术打破了这种尴尬的局面),试想一下,ARM突然对IP提价,那国内市场不就尴尬了吗?


据我了解国内的RISC芯片的来源有两种占了绝大部分,一是从国外购买的成品(从我大二用555时起,芯片的Datasheet就是英文的,后来用了很多不同的芯片,像ADC/DAC,51,DSP之类的,就没有看到过中文手册过,不能忍受 (๑`^´๑)   ),二是买IP,然后找代工生产。


      所以说,RV的出现是个良机,虽然我国的市场不一定会推动RV的大发展,但是我们却因此有跟ARM公司谈条件的筹码了(我们应该感谢ARM是家欧洲的企业,同时还要庆幸收购ARM的是日本企业而非美国企业),只要ARM有足够强大的对手,提价就不会是明智之举。


如此,在中国有自己的一套芯片生产生态系统之前,国内的RISC芯片是不会有大幅度的提价行为的。有人可能会觉得Intel等美国企业的芯片垄断了国内市场,不会造成什么问题吗?我的理解是,PC市场蛋糕已经做不大了,垄断就垄断了(军用方面,芯片工艺达不到做大一些即可,CISC芯片架构中国不缺人才),也没有精力去花大价钱研发了。


      对整个嵌入式行业,多样性是件好事情,不得不承认RV是有很大潜力的。已经进入行业ARM芯片开发多年的工程师也无需担忧自己的前景,毕竟ARM的生命力还很旺盛,而对于为了想要进入这个行业的人来说,可以充分地权衡一下自身的情况,合理地选一款自己觉得有前途的芯片架构,专心地学习。


总体而言,一个优秀的工程师是需要不断汲取新知识的,不过切记不要在一款单一芯片上入戏太深,不然以后的职业前景很可能让你去跳楼。我已经下水了,愈发感觉了解Linux的系统原理比做硬件开发具有更好的''职业鲁棒性''。


         一点拙见,抛砖引玉而已,欢迎指教!




RISC是简化指令集计算机的简略缩写,其风格是着重计算机结构的简略性和高效性。


RISC规划是从满意的不行短少的指令集开端的。


它的速度比那些具有传统杂乱指令组计算机结构的机器快得多,并且RISC机因为其较简练的规划,较易运用,故具有更短的研制开发周期。R


ISC结构一般具有如下的一些特色:
①单周期的履行:它统一用单周期指令。从根本上克服了CISC指令周期数有长有短,形成运转中偶发性不确定,致使运转反常的问题。


②选用高效的流水线操作:使指令在流水线中并行地操作,然后前进处理数据和指令的速度。


③无微代码的硬连线操控:微代码的运用会添加杂乱性和每条指令的履行周期。


④指令格局的规格化和简略化:为与流水线结构相适应且前进流水线的功率,指令的格局有必要趋于简略和固定的规式。比如指令选用16位或32位的固定的长度,并且指令中的操作码字段、操作数字段都尽可能具有统一的格局。此外,尽量减少寻址方法,然后使硬件逻辑部件简化且缩短译码时刻,一起也前进了机器履行功率和可靠性。


⑤选用面向寄存器堆的指令:RISC结构选用许多的寄存器——寄存器操作指令,使指令体系更为精简。操控部件更为简化,指令履行速度大大前进。因为VLSI技能的迅速发展,使得在一个芯片上做许多的寄存器成为可能。这也促成了RISC结构的完成。


⑥选用装入/存储指令结构:在CISC结构中。许多设置存储器——存储器操作指令,频频地拜访内存,将会使履行速度下降。RISC结构的指令体系中,只需装入/存储指令能够拜访内存,而其它指令均在寄存器之间对数据进行处理。用装入指令从内存中将数据取出,送到寄存器;在寄存器之间对数据进行快速处理,并将它暂存在那里,以便再有需求时。不用再次拜访内存。在恰当的时分,运用一条存储指令再将这个数据送回内存。选用这种办法能够前进指令履行的速度。


⑦重视编译的优化,力求有效地支撑高档言语程序。通常运用的单片机中,MCS一51系列的单片机归于CISC的体系结构;AVR系列的单片机则归于RISC的体系结构。


导读:关于开发者来说,社区里丰厚的开源代码其实是笔极为名贵的财富。假如能充分使用好开放源代码的资源,不只能够把握多种编程办法,前进实践才能,还能获得好的思维,激起编程灵感。


开源代码怎样学以及怎样才能学好是我们常常重视的论题,日前,在问答网站知乎上,有人抛出了“怎样更有效地学习开源项目的代码?”的论题,众技能能手各抒己见,CSDN软件研制频道对本文内容进行了收拾,方便我们学习与参阅。隆重创新研讨院研讨员 庄表伟:学习开源 尽可能在代码里找答案 庄表伟供给了以下9个主张:


1.在下载源代码之后,首要要跑起来,编译通过、正常运转;


2.在你觉得最有可能运转到的当地,设置断点或许抛出反常,这样,就能够找到一个项目在正常运转时的进口点;


3.从进口点地点的那个源文件开端阅览,逐步把握整个项目是怎样发动起来;


4.随意改点代码,看看会不会报错,假如报错,会从哪里报错;


5.试着把报错屏蔽、修正、或许绕开;


6.测验了解一个体系的内部结构,多少组成部分,主线模块是哪些?辅佐模块是哪些?


7.从实际需求动身,修正这个项目,满意自己的某一个小的需求。(留意在此之前,尽量不要在网络上找答案);


8.看看相关的评论与心得,是否与自己的了解相一致;


9.提交bug fix或许某个新的功用代码。


在学习开源的进程中,有几个方面会获得许多收成,


1.架构与模式;


2.开源社区常见的一些惯用法;


3.相关领域的结构与算法。


总结一点:学习开源,尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,并且很可能不精确。


互联网评论员 朱晓阳:从简略做起 理论联络实践朱晓阳对此宣布了两点观点:首要,从简略做起。


刚开端的时分学习一些领域内基础理论,然后找一些简略的东西去完成,不能一开端就去找开源项目。


主张我们常常动手写一些小程序,如改善宿舍网络登录客户端等。积小成多,能明显前进自己的编程才能。


其次,学习的常识必定要和自己生活或作业有联络,这样才会有趣味或动力。


互联网评论员孙竟:先设想一个想做的项目首要,设想一个想做的项目(比如论坛、博客、微博等);然后,考虑需求什么功用,应该怎样去完成,尽可能包含各种细节,有必要时记录下来;最终,去找个相似的开源运用,看看它是怎样完成的,和你的主意有什么差异,有什么能够学习或需求改善的当地。


互联网草根hqman:我的5个主张:


1.反复地运用软件,熟释软件的组成文件和软件功用,留意IE地址栏内的地址改变;


2.翻开数据库文件或寄存数据的XML文件,参照数据字典了解各个表和字段的数据含意;假如没有数据字典,就运转软件输入数据,参照所输入的数据,了解各个表和字段的数据意义;


3.使用Visio进行反向工程,将类图抽出来;


4.研讨类之间的联系,注释各个类的特点和办法,澄清程序的全体结构;


5.另开一个项目,依照软件开发的流程,将代码分段仿制进新的项目,进行编译调试,重视一些完成细节,学习一些编程的技巧。


在读研讨生张伟:在校学生闲暇时刻多参与一下竞赛张伟的主张是我们在闲暇时刻多参与一些竞赛。一个完好的项目,不论再小,只需做完了,就会有收成。多看一些比较大的开源项目源代码,每次看完后都会收获颇丰。


从网上老练的开源代码里,能够学到许多的规划思维。他以为,从项目入手,以项目为驱动,可鼓励自己前进。当然,是否必定需求看开源代码,这将取决于个人的爱好和需求。


画出程序流程图 了解程序流程思维CSDN博客专家i_like_cpp:曾在CSDN共享了《怎样将源代码学好》的博文,


对此,他给出了四点主张:


1. 画出整个程序的流程图,了解整个程序流程的思维。画流程图的方法更让人很直接的了解程序的全体流程,而不会被代码所搅扰,让程序员总体上把握整个程序;


2. 对流程各节点(函数或进程)的了解,流程的每一节点是构成整个流程的不行短少的部份;


3.再把流程和流程各节点串起来了解整个程序,可能的话最好写出读书笔记;


4. 假如想深入的学习到源代码的精髓地点,请写一个附近的程序进行练习。


了解了这个程序并不标明把握了这个程序,只需在练习一个附近的程序时,才知道你到底了解了多少,把握了多少。


编后语:源代码的学习是一个从全体到不断细化的进程,是一个极为繁琐的进程一起也是一个不断认清事物根源的进程。本文总结的源代码的学习经历,期望对您有所协助。







RV总是被描述成大蛋糕,在目前ARM几乎垄断的环境下,有自己的特性:指令集精简、开源,可供开发编程集成的空间非常大。国内虽有不少厂商都相继推出了rv-series的mcu,有结合云端做生态的,也有类似SEGGER做集成工具的,而细娃下来真正创新技术实在不多。这一块的蓝图非常广,嵌入式硬件工程师本身门槛较高,做工具链的少,真正做科研做架构的更少哦,未来还是需要更多“后浪”为国产芯片贡献活力。





离个题,我有个高中同学在某双一流高校读研搞 RISC-V,去年毕业去了老家三线城市的国家电网……据他说国内就业前景并没有互联网好,行业总体趋势大概也是这样吧。个例当然不说明问题,只能说国内这玩意确实有批人在做,但具体做得怎么样呢?如人饮水,冷暖自知吧。


页: [1]
查看完整版本: 如何看待开源指令集RISC-V?