魏定国 发表于 2022-10-1 15:44:15

它,校园起家、半路夭折、大佬加持,免费开源挑战巨头Intel和AMD

本帖最后由 魏定国 于 2022-10-3 09:10 编辑

熟悉MCU的小伙伴可能两年已经听RISC-V这个词听到耳朵都出油了,网络上也有很多对于这个词的各种科普以及定义,什么“打破垄断的希望”、“国产MCU突围的新赛道”,业内人士似乎都给了这个东西很高的评价。
国内也已经有多厂商推出了不少基于这个东西的MCU ,兆易创新、沁恒、平头哥等等都有搞。

最近我也网上冲了一下浪,体验了其中几家的产品。这篇文章呢,我就想跟大家分享下我个人的理解和感悟.
RISC-V其实是就是一种“计算机指令集”

那什么是指令集呢?

通俗一点说,就是命令,各种各样的命令,把这些命令放在一起的合集。

如果用人来举例啊,吃喝拉撒这些词,就是命令,命令一个人吃饭,喝水,什么的,总之就是让人动起来,完成某个特定的动作。

而对应的能让计算机听得懂的,做出例如加减乘除等动作的,就是计算机的指令集
计算机的指令集,大致可以分成两类,复杂指令集,CISC,精简指令集,RISC。
    image:forum.huawei
我们打个最经典的比方:把大象放进冰箱, 需要分成几步?
复杂指令集的答案,就是一步。

他的指令就是,直接把大象放进冰箱。

精简指令集的答案,就是三步。

打开冰箱 - 把大象放进去 - 关上冰箱门。
每一步其实对应一条指令。

在这里肯定有小伙伴要说了“那一条指令就能完成的事情,怎么就这么复杂了呢?”
其实,在处理器领域,精简指令集的是那些常用的指令,例如打开冰箱门,关上冰箱门,把某某东西放进冰箱,这些都是我们非常常用的动作。

复杂指令集除了包含精简指令集,还包含一些特定的特殊的指令,例如把大象放进冰箱这条指令就限定了只能把大象放进冰箱。

如果需要处理器明白更多的指令,那就需要更多的晶体管,而对于一般的应用来说,不常用的晶体管就会被浪费掉,真的是又贵又耗电,绝了!

这个时候,就需要精简指令集了,它的目的就是把复杂指令集里面常用的部分精简出来,并做到成本和能耗的平衡
复杂指令集的处理器,我们平时接触最多的,就是X86架构指令集,也就是英特尔,AMD这些公司的电脑CPU产品,而精简指令集呢,就是高通,苹果的手机处理器这些基于ARM公司的ARM架构指令集的产品。

X86的性能虽然强啊,但它功耗也大大的,毕竟要听懂“把大象放进冰箱”这个操作是要花费不少晶体管的。

而ARM的处理器,虽然要三条指令才能完成同样的事情,时间是慢了不少,但相对的不需要晶体管去处理那些不常用的操作,所以在一般使用的时候也就变小了。

在移动互联网时代,智能手机销量早已远远超过了PC。英特尔在智能手机刚兴起的时候并没推出高能效的产品去抢占时机,现在也基本退出了移动设备处理器的竞争。

而当物联网的时代开启后,小型物联网设备需求剧增,小型物联网设备对处理器的性能要求使得微控制器市场全面进入了32位时代,各大芯片厂家迫切需要32位处理器的指令集的内核来帮助自身从8位到32位的转型,

而这个时候,在手机处理器上大获成功的ARM公司的内核,自然获得了各大需要急切推出32位控制器厂家的青睐,而正是借着这波契机,ARM指令集的处理器几乎垄断了整个32位RISC指令集处理的生态,现在市面上的通用的32位的微控制器基本都是ARM内核的处理器
欸!ARM,你牛皮,一个人全玩完了
垄断生态是真的可怕,ARM公司本来就是一家专门设计处理器内核架构的公司,所以他们可以根据不同的应用,不同需求来设计出不同的内核,而且更新速度不仅快得要死,还有海量得其他厂家愿意去尝试帮助ARM公司试错,在这种情况下,自己再投入巨大的人力物力,做一套能与之抗衡的指令集确实是吃力不讨好的事情
image:Droider
如今的ARM越发强大,只靠移动处理器和微控制器的份市场额已经满足不了这条巨龙的胃口了。ARM现在大有反攻高端,抢占X86内核市场的趋势。

其实我们回过头看,苹果公司现在如日中天的M系列处理器在某些场景应用下超越当世代的最强的酷睿i9就是一个最好的成功案例。
   
image:Rene Ramos
在全球化的背景下,微控制器行业专门的分工,做内核的做内核,做外设的做外设,处理器生态一片其乐融融,是完全没有问题的

我们先把时间拨回2018年,当时在华为的海思半导体因为美国科技封锁而失去ARM授权的时候,我们才知道开始意识到什么是科技垄断,昨日的华为就有可能明天所有的国产半导体厂家。
image:loongson
在我们开始寻找替代品时,在X86级别的处理器我们有龙芯的LoongArch指令集,在低端一些的领域,RISC-V这个指令集开始走入了我们的视线。
其实不单单是中国国内的处理器公司,包括世界上其他国家的处理器公司,因为ARM公司每年高昂的授权费,大家都有天下苦ARM久已的感慨,包括被逐ARM围攻已久的英特尔,也收购了RISC-V架构处理器的头部公司SIFIVE,尝试寻求突围。

哎等等,你们可能会说,我可是来看RISC-V的,懂行的老哥们别急嘛,基础科普铺垫完了,这就给客官们上主菜!

简单的说,RISC-V是一个免费开源的指令集架构,还有着跟ARM掰手腕的潜力。

是不是有很多小伙伴跟我一样好奇,既然是念“RISC five”,不是“RSIC   V”,那是不是这个代表它是老五的意思呢?那老大老二老三老四又在哪里呢?
其实RISC指令集早在1981年的时候就已经出现了,这个是美国加州大学伯克利分校的一个项目,但是到80年代末第四代就中断了,一直到2010年又重新启动。

在越来越多的非本校学生以及行业巨佬的帮助下,一直到2013年才正式发布了第一个版本的RISC-V。
虽然RISC-V真的就是第五版的RISC的意思,但是我从RISC-V的指令集分类中,强行总结出了我理解的RISC-V的含义。也方便我记忆。

RISC-V除了最基础的I指令集,最有代表的可选扩展指令集,分为5种,分别是M,A,F,D,C。

也就是multiplication,整数乘除法

代表 Atomic, 不可中断指令,用于多任务操作时的存储器保护

代表floating,就是单精度浮点数操作


代表double floating, 双精度浮点操作



代表Compression,压缩指令,缩短常用指令的位数到16位,减少用户代码容量
所以我理解的RISC-V,就是精简基础指令+扩展指令的意思,处理器厂家就可以根据自己的需求,灵活组合,省去不需要的指令集,优化功耗和成本。

举两个例子吧

例如国产的沁恒的CH32V103系列,规格书上写使用的就是RV32IMAC指令集,简单来说就是基础的32位RISC指令集+M指令集+A指令集+C指令集,从这里就看到出这个处理器是不支持浮点运算的,性能对标的是ARM的Cortex-M3。

RISC-V的基础指令集不单单只有32位,目前64位RV64I也已经完成,128位的RV128I也在拟定中,不难看出RISC-V指令集野心很大,它并不是只想做做单纯的简单的MCU,高端CPU布局也是积极在规划中。

例如图像识别领域的比较风靡的嘉楠科技的K210,用的就是两个64位的RV64IMAFDC内核,好家伙,5个扩展指令集都用全了,真RISC-V。


说到这里大家应该很清楚什么是RISC-V了吧?

说到底,RISC-V只是一个指令集,一个不需要授权费用的指令集。

授权费是相对芯片厂商而言的,具体是不是也能把价格优惠给我们,那就另当别论了。

RISC-V虽然是免费的指令集,但是并不等于他是一个免费的IP,不同于ARM提供完整的内核IO,RISC-V内核的设计需要你自己来完成。

兆易创新GD32VF103用的是芯来科技设计的bumblebee内核,沁恒号称是自研的内核,除此之外,国内还有平头哥,晶心科技,赛昉科技,中关村芯园等等公司都有基于RISC-V指令集的内核IP出售。

看上去是不是又有种熟悉的百花齐放,百家争鸣的的感觉?

但是啊,这也为RISC-V的带来了碎片化的危险。

ARM和RISC-V,其实很像手机领域的苹果和安卓,苹果的系统和硬件都是自研全封闭,对于我们感受最深的就是论流畅度和稳定性,安卓是无法比拟的,缺点当然就是贵,当然了贵不是苹果的错,错的是我的穷。

安卓则是非常的碎片化,各大手机厂都魔改出来自己的UI和任务管理方式,导致了很多APP兼容性问题,卡顿,闪退等等,最大的优点就是,便宜,性价比拉满。.
ARM内核的处理器在用户层面有自己一整套的生态,完整的文档,体验最好的编译器,调试器和量产工具,甚至我们在切换不同厂商的同级别ARM处理器的时候,根本不需要去关心内核以及中断的问题。

ARM partners
而RISC-V的生态,现阶段只能说,是真的混乱,因为内核厂商的不同,导致了非常多的编译器,沁恒有MounRiver Studio,兆易用Nuclei studio,平头哥生态则有剑池CDK,另外还有大量的RISC-V芯片在用的是Eclipse,甚至我还看到有小伙伴用VS code加插件做编译器,甚至还有一些厂家的芯片是在Linux底下使用命令行开发,真的头都大了。

RISC-V foundation members
我真的希望有一个好用的编译器可以统一工作流程,就像我们习惯的ARM旗下的MDK一样,兼容所有RISC-V的内核,比如说,Eclipse是一个很好的平台,就是太繁琐,不过这个平台是开源的,可以二次开发修改,沁恒使用的MounRiver Studio 其实就是基于Eclipse上修改的,目前只支持到了沁恒还有兆易的芯片,然而兆易的官方例程却不支持这个平台,这就很尴尬了。

在处理器很重要的中断机制方面,兆易的芯片用的是“改进型内核中断控制器”(ECLIC),沁恒用的是“可编程快速中断控制器”(PFIC),都不是RISC-V原生的中断管理,不过对于用户而言,如果是基于库函数的程序开发,体验上也不会影响太大。

例如沁恒为了完全兼容自身的Cotex-M3内核产品,甚至在中断设置的API函数名都是用的跟他们家ARM内核的API函数名一样,带有NVIC字样。


最后一个,也是最最最重要的开发文档。

其实说到国产MCU的开发文档问题,不止是在RISC-V,甚至在ARM平台上,都有一种犹抱琵琶半遮面的感觉,官网找不到,非要到另外平台下载,更有不少芯片还必须联系厂家申请开发资料,绝了。

作为行业中的一员吗,我是能理解他们这么做的原因。

在半导体行业中,尤其是国产芯片,这种现象是非常常见的,大家都有各种不能公开的理由,但是我还是希望为了国产RISC-V的未来,各大厂商还是努力打破隔阂,好好坐下来组建一个联盟可以相互共享一些资源。

毕竟在当前环境下,国产半导体的未来,是需要从上游到下游,乃至最后的终端消费者,大家同心协力,才能突破封锁,走向星辰大海。


RISC-V 发表于 2022-10-1 17:09:07

RISC-V 发表于 2022-10-1 17:09:16

RISC-V 发表于 2022-10-1 17:09:21

页: [1]
查看完整版本: 它,校园起家、半路夭折、大佬加持,免费开源挑战巨头Intel和AMD