新ちゃん 发表于 2020-12-19 18:54:27

张先轶博士:为什么RISC-V需要共建软件生态?

本帖最后由 新ちゃん 于 2020-12-19 18:54 编辑

近期,关于芯片的话题特别的火热,虽然我不是从事芯片设计,但是一直做高性能计算软件库的工作,也领导和维护了开源矩阵计算库OpenBLAS,经常会和各种芯片和IP公司打交道。我的浅见是,芯片做出来可能只是第一步,培养起相应的软件生态,或者说融入主流的软件生态,才是决定这个芯片ISA/架构能走多远。所以,希望先和大家一起探讨CPU软件生态,以及RISC-V为什么需要共建软件生态的问题。晚些时候再聊GPU、AI加速卡等的软件生态问题。

一、为什么CPU芯片需要建设软件生态?
CPU公司的软件生态我认为分为两个层次,一个是面向开发者,一个是面向应用者。

二、开发环境与Runtime
软件开发者是芯片公司非常重要的资产,CPU做出来是不够的,要让更多的软件开发者用这颗芯片才是成功。国际大厂们都有一只较大的软件团队,在做面向开发者的软件工具和SDK等。
对于一颗CPU来说,以下是必备选项:
编译工具链,以及相应的调试工具和模拟器等。一般来说,移植GCC或者LLVM等,支持C/C++语言,增加针对本CPU的后端代码生成等。如果是有特殊扩展指令,向量化指令等,最好提供Intrinsic函数接口,方便C语言调用。
OS操作系统,主要以Linux为主。如果是面向台式机,服务器等,需要支持一个完整的Linux发行版。Linux Kernel部分由芯片公司负责,Linux发行版的其他部分可以和操作系统公司合作。如果是嵌入式系统,需要选择支持那种系统,是嵌入式Linux,还是Android,或者其他的实时系统等。嵌入式的场景比较多,支持哪种系统和最后的芯片定位有关系。
核心软件库。比如,这颗芯片将来做HPC等计算类任务,就需要有BLAS,FFT等软件库。如果做计算机视觉类应用,需要有OpenCV库。如果是跑人工智能,需要有DNN库等。(p.s. 有需求可以找我们,高性能核心软件库,我们是国内最好的团队)
以上只是一些基础必要性的工作,下面这些是成为一家主流的CPU公司需要持续做的:
更多的主流编程语言的支持,比如说支持Java,优化jvm的执行效率等。
更多的开发工具,比如性能分析工具,IDE等。这部分有一些公司在做相应的产品,比如专门的程序分析工具等。
持续的优化和改进。不管是编译工具链,OS,还是库,或者各种Benchmark等,都需要持续的迭代优化,进一步发挥硬件的性能。同时,给下一代的芯片设计进行反馈。这是一项长期坚持的工作,通过长期的投入,保证拉开与竞争对手的差距。
如果您的发展目标是国际大厂,那么需要做的:
积极参与开源社区,贡献开源项目。不管是资助开源社区,还是培养社区里面的核心开发者,对于芯片公司来说,都是非常重要的事情。而且,不只是开源项目简单的移植,还要针对这个CPU架构做优化。这个工作量就非常大了,需要联合很多的小伙伴一起做。
建立开发者社区,提供课程,案例,大学计划,比赛等。积累应用案例,教程,办各种的线上/线下讨论会,去大学推广/联合实验室,搞编程比赛等等。国际大厂在这方便做的确实不错,各种资料和文档获取的很方便,一站式解决。
推一套编程语言/框架。随着芯片架构复杂程度的提高,异构要怎么解决?是否有生产率更高的编程模型等等。比如,Intel最近在推的oneAPI。

三、应用框架与软件
面向应用层的框架与软件非常的多,可能每个应用领域都会是一套相对独立的系统,例如,人工智能,大数据系统,HPC,办公Office系统,各种Web服务,嵌入式系统等。
根据CPU的设计规划,明确主要的应用领域。根据应用领域去梳理重要的框架与软件。比如,人工智能场景,推理和训练的框架。HPC场景,MPI,PETSc等解法器。电子办公场景,Office系统和数据库等。
联合开源社区,操作系统公司或者ISV软件公司,做这些应用框架和软件的移植与优化。又是一个大工作量的事情,而且要根据场景一个个做下去。
针对一些重点行业场景,提供软硬件的参考设计方案,支持和培养一批方案厂商,以服务行业。根据行业的反馈,进行应用框架或者开发环境的迭代。


四、如果是RISC-V生态?
当前,x86的生态最成熟的,ARM的生态在嵌入式和手机市场很成熟,但是在服务器市场稍弱。RISC-V作为一种开放指令集架构,虽然当前生态还不够成熟,但是我个人是看好RISC-V生态发展,在全球市场上有潜力在未来几年成为有力竞争者之一。
从RISC-V IP和芯片来说,国内外已经有多家RISC-V的IP和芯片公司,涵盖了从MCU,嵌入式到服务器等多种产品形态,也有针对AI市场的RISC-V+NPU或者众核的芯片出现。在ISA指令集上,RISC-V可以通过基金会,制定标准,制定基础的指令集,制定扩展的指令集,也给各芯片公司留下了定制化指令的空间。
RISC-V软件生态当前的现状是,以开源社区为基础推进,主要是开发环境层次的生态。比如,各家芯片公司对于Linux Kernel,GCC,LLVM社区的贡献等。部分学校或者研究机构,对于一些开源项目进行了RISC-V移植。比如,有UC Berkeley的人员对OpenBLAS项目在RISC-V架构做了简单移植,但是还没有进行任何的优化(优化是和芯片微架构密切相关的)。Fedora等Linux发行版已经可以支持RISC-V 64位的体系结构。
目前RISC-V已经具备基础的开发工具和环境,作为一名Geek,是可以玩得起来的。有了编译工具链,有模拟器,是可以做开发和移植的。此外,市面上也有一些低成本的板卡(RISC-V芯片 或者 FPGA跑RISC-V软核),可以做一些上板的开发和测试。产品层面的应用,随着今年RISC-V芯片的增多,会越来越多。
在RISC-V芯片开始逐渐增多后,软件生态可做的事情会越来越多:
继续推动开源项目和社区对RISC-V的支持。因为,各家RISC-V公司相比国际大厂还是弱小的,完全靠自己走一套独立的生态不够现实,也失去了RISC-V开放指令集的意义。所以,核心的开发环境还是依靠开源项目和社区协作。各芯片厂商,研究机构,操作系统厂商,软件生态厂商互相配合,有人出人,有钱出钱,持续的移植和优化开源项目。也许,有的厂商会说我等着就可以了,反正有别人做,到时候用开源社区的现成成果就可以。但很可能的结果是,只是能用,但效率较低,一样造成芯片竞争力低。
开发者社区、大学计划、比赛等。国内的几家RISC-V IP公司都在推大学计划,相信陆续会出现一批RISC-V相关的选修课。比赛上,之前国际上办过RISC-V软核设计比赛。也许将来RISC-V的芯片多了之后,可以做一个编程比赛,或者黑客马拉松等。
应用场景,应用框架和软件等。目前,RISC-V接受程度比较高的是嵌入式、IoT等。这种场景的生态需求比台式机、服务器要简单一些。核心是做出有差异化的软硬件方案,要不然是替代已有市场的产品,性能更高,价格更低;要不然就是先一步满足新兴的场景/产品需求(比如AIIoT等)。RISC-V市场应用的成功,只靠开源软件社区是不现实的,必须芯片厂商和方案商共同的推动才能尽快的落地。
以上只是我的不成熟小看法,软件生态是个可大可小的事情,如果只是瞄准个细分专用领域,那么生态投入就会少很多,但这样是否能养活一家CPU公司,能否活得够好?如果将来是参与全球竞争,面向多种领域,那么生态投入就会比较大。这不是一家芯片公司自己能做完的事情,保持开放心态,与各种软硬件厂商,社区积极协作,持续推动发展,才能见到成效。
与各位一起努力!

五、RVBoards开源技术组织的成立与愿景
张先轶博士发起了RVBoards开源技术组织,目标就是建设RISC-V的开源硬件赋能开发者、应用者、院校等,促进技术应用和培养软件开发人才;与RISC-V IP和SoC伙伴共同建设开源软件生态,避免碎片化和行业重复投入,实现百花齐放的商业愿景。


六、深圳王哥说
目前国内的芯片公司对于开发者生态的投入普遍偏低,其原因大致在于:
一些公司曾经尝试自建开发者生态,在投入一两年后,发现ROI并不划算,然后选择了放弃。是的,每家公司自建开发者生态,确实是一种并不经济的做法。如果我们这个行业的目标是星辰大海,共同投入和共建软件生态将促进大家共同进步。
自家的芯片要加入到开源生态中,一定程度需要开放更多的芯片底层和驱动等细节,这有商业机密的考量。然而,这通常是一种无谓的担忧。借用对人而言的话“我们更需要的是超越自我”,勇敢地投入到开源生态,你将更加优秀。
芯片公司自身有比较强的软件团队,对于大客户和短期战略有直接的效果,毕竟每年的年报写的是销售业绩而不是开发者数量。然而,这种策略对于新兴和增量市场,往往会过于迟钝。
行业共建生态通常会产生的投入不一定对等和被其他人搭顺风车的担心。举个例子,大家上学交同样的学费,学到的东西和考的名次是有差异的,然而,这些都来自于我们自己的驱动力。
另外一个角度是,我们既然看好RISC-V的未来,就应该相信了开放/开源正在影响到整个产业链,对于优秀的企业而言,是时候决定是不是应该早点出发了。

页: [1]
查看完整版本: 张先轶博士:为什么RISC-V需要共建软件生态?