近期,關(guān)于芯片的話題特別的火熱,雖然我不是從事芯片設(shè)計(jì),但是一直做高性能計(jì)算軟件庫的工作,也領(lǐng)導(dǎo)和維護(hù)了開源矩陣計(jì)算庫OpenBLAS,經(jīng)常會(huì)和各種芯片和IP公司打交道。我的淺見是,芯片做出來可能只是第一步,培養(yǎng)起相應(yīng)的軟件生態(tài),或者說融入主流的軟件生態(tài),才是決定這個(gè)芯片ISA/架構(gòu)能走多遠(yuǎn)。所以,希望先和大家一起探討CPU軟件生態(tài),以及RISC-V為什么需要共建軟件生態(tài)的問題。晚些時(shí)候再聊GPU、AI加速卡等的軟件生態(tài)問題。
為什么CPU芯片需要建設(shè)軟件生態(tài)?
CPU公司的軟件生態(tài)我認(rèn)為分為兩個(gè)層次,一個(gè)是面向開發(fā)者,一個(gè)是面向應(yīng)用者。
開發(fā)環(huán)境與Runtime
軟件開發(fā)者是芯片公司非常重要的資產(chǎn),CPU做出來是不夠的,要讓更多的軟件開發(fā)者用這顆芯片才是成功。國際大廠們都有一只較大的軟件團(tuán)隊(duì),在做面向開發(fā)者的軟件工具和SDK等。
對(duì)于一顆CPU來說,以下是必備選項(xiàng):
編譯工具鏈,以及相應(yīng)的調(diào)試工具和模擬器等。一般來說,移植GCC或者LLVM等,支持C/C++語言,增加針對(duì)本CPU的后端代碼生成等。如果是有特殊擴(kuò)展指令,向量化指令等,最好提供Intrinsic函數(shù)接口,方便C語言調(diào)用。
OS操作系統(tǒng),主要以Linux為主。如果是面向臺(tái)式機(jī),服務(wù)器等,需要支持一個(gè)完整的Linux發(fā)行版。Linux Kernel部分由芯片公司負(fù)責(zé),Linux發(fā)行版的其他部分可以和操作系統(tǒng)公司合作。如果是嵌入式系統(tǒng),需要選擇支持那種系統(tǒng),是嵌入式Linux,還是Android,或者其他的實(shí)時(shí)系統(tǒng)等。嵌入式的場(chǎng)景比較多,支持哪種系統(tǒng)和最后的芯片定位有關(guān)系。
核心軟件庫。比如,這顆芯片將來做HPC等計(jì)算類任務(wù),就需要有BLAS,F(xiàn)FT等軟件庫。如果做計(jì)算機(jī)視覺類應(yīng)用,需要有OpenCV庫。如果是跑人工智能,需要有DNN庫等。(p.s. 有需求可以找我們,高性能核心軟件庫,我們是國內(nèi)最好的團(tuán)隊(duì))
以上只是一些基礎(chǔ)必要性的工作,下面這些是成為一家主流的CPU公司需要持續(xù)做的:
更多的主流編程語言的支持,比如說支持Java,優(yōu)化jvm的執(zhí)行效率等。
更多的開發(fā)工具,比如性能分析工具,IDE等。這部分有一些公司在做相應(yīng)的產(chǎn)品,比如專門的程序分析工具等。
持續(xù)的優(yōu)化和改進(jìn)。不管是編譯工具鏈,OS,還是庫,或者各種Benchmark等,都需要持續(xù)的迭代優(yōu)化,進(jìn)一步發(fā)揮硬件的性能。同時(shí),給下一代的芯片設(shè)計(jì)進(jìn)行反饋。這是一項(xiàng)長期堅(jiān)持的工作,通過長期的投入,保證拉開與競(jìng)爭(zhēng)對(duì)手的差距。
如果您的發(fā)展目標(biāo)是國際大廠,那么需要做的:
積極參與開源社區(qū),貢獻(xiàn)開源項(xiàng)目。不管是資助開源社區(qū),還是培養(yǎng)社區(qū)里面的核心開發(fā)者,對(duì)于芯片公司來說,都是非常重要的事情。而且,不只是開源項(xiàng)目簡(jiǎn)單的移植,還要針對(duì)這個(gè)CPU架構(gòu)做優(yōu)化。這個(gè)工作量就非常大了,需要聯(lián)合很多的小伙伴一起做。
建立開發(fā)者社區(qū),提供課程,案例,大學(xué)計(jì)劃,比賽等。積累應(yīng)用案例,教程,辦各種的線上/線下討論會(huì),去大學(xué)推廣/聯(lián)合實(shí)驗(yàn)室,搞編程比賽等等。國際大廠在這方便做的確實(shí)不錯(cuò),各種資料和文檔獲取的很方便,一站式解決。
推一套編程語言/框架。隨著芯片架構(gòu)復(fù)雜程度的提高,異構(gòu)要怎么解決?是否有生產(chǎn)率更高的編程模型等等。比如,Intel最近在推的oneAPI。
應(yīng)用框架與軟件
面向應(yīng)用層的框架與軟件非常的多,可能每個(gè)應(yīng)用領(lǐng)域都會(huì)是一套相對(duì)獨(dú)立的系統(tǒng),例如,人工智能,大數(shù)據(jù)系統(tǒng),HPC,辦公Office系統(tǒng),各種Web服務(wù),嵌入式系統(tǒng)等。
根據(jù)CPU的設(shè)計(jì)規(guī)劃,明確主要的應(yīng)用領(lǐng)域。根據(jù)應(yīng)用領(lǐng)域去梳理重要的框架與軟件。比如,人工智能場(chǎng)景,推理和訓(xùn)練的框架。HPC場(chǎng)景,MPI,PETSc等解法器。電子辦公場(chǎng)景,Office系統(tǒng)和數(shù)據(jù)庫等。
聯(lián)合開源社區(qū),操作系統(tǒng)公司或者ISV軟件公司,做這些應(yīng)用框架和軟件的移植與優(yōu)化。又是一個(gè)大工作量的事情,而且要根據(jù)場(chǎng)景一個(gè)個(gè)做下去。
針對(duì)一些重點(diǎn)行業(yè)場(chǎng)景,提供軟硬件的參考設(shè)計(jì)方案,支持和培養(yǎng)一批方案廠商,以服務(wù)行業(yè)。根據(jù)行業(yè)的反饋,進(jìn)行應(yīng)用框架或者開發(fā)環(huán)境的迭代。
如果是RISC-V生態(tài)?
當(dāng)前,x86的生態(tài)最成熟的,ARM的生態(tài)在嵌入式和手機(jī)市場(chǎng)很成熟,但是在服務(wù)器市場(chǎng)稍弱。RISC-V作為一種開放指令集架構(gòu),雖然當(dāng)前生態(tài)還不夠成熟,但是我個(gè)人是看好RISC-V生態(tài)發(fā)展,在全球市場(chǎng)上有潛力在未來幾年成為有力競(jìng)爭(zhēng)者之一。
從RISC-V IP和芯片來說,國內(nèi)外已經(jīng)有多家RISC-V的IP和芯片公司,涵蓋了從MCU,嵌入式到服務(wù)器等多種產(chǎn)品形態(tài),也有針對(duì)AI市場(chǎng)的RISC-V+NPU或者眾核的芯片出現(xiàn)。在ISA指令集上,RISC-V可以通過基金會(huì),制定標(biāo)準(zhǔn),制定基礎(chǔ)的指令集,制定擴(kuò)展的指令集,也給各芯片公司留下了定制化指令的空間。
RISC-V軟件生態(tài)當(dāng)前的現(xiàn)狀是,以開源社區(qū)為基礎(chǔ)推進(jìn),主要是開發(fā)環(huán)境層次的生態(tài)。比如,各家芯片公司對(duì)于Linux Kernel,GCC,LLVM社區(qū)的貢獻(xiàn)等。部分學(xué)?;蛘哐芯繖C(jī)構(gòu),對(duì)于一些開源項(xiàng)目進(jìn)行了RISC-V移植。比如,有UC Berkeley的人員對(duì)OpenBLAS項(xiàng)目在RISC-V架構(gòu)做了簡(jiǎn)單移植,但是還沒有進(jìn)行任何的優(yōu)化(優(yōu)化是和芯片微架構(gòu)密切相關(guān)的)。Fedora等Linux發(fā)行版已經(jīng)可以支持RISC-V 64位的體系結(jié)構(gòu)。
目前RISC-V已經(jīng)具備基礎(chǔ)的開發(fā)工具和環(huán)境,作為一名Geek,是可以玩得起來的。有了編譯工具鏈,有模擬器,是可以做開發(fā)和移植的。此外,市面上也有一些低成本的板卡(RISC-V芯片 或者 FPGA跑RISC-V軟核),可以做一些上板的開發(fā)和測(cè)試。產(chǎn)品層面的應(yīng)用,隨著今年RISC-V芯片的增多,會(huì)越來越多。
在RISC-V芯片開始逐漸增多后,軟件生態(tài)可做的事情會(huì)越來越多:
繼續(xù)推動(dòng)開源項(xiàng)目和社區(qū)對(duì)RISC-V的支持。因?yàn)?,各家RISC-V公司相比國際大廠還是弱小的,完全靠自己走一套獨(dú)立的生態(tài)不夠現(xiàn)實(shí),也失去了RISC-V開放指令集的意義。所以,核心的開發(fā)環(huán)境還是依靠開源項(xiàng)目和社區(qū)協(xié)作。各芯片廠商,研究機(jī)構(gòu),操作系統(tǒng)廠商,軟件生態(tài)廠商互相配合,有人出人,有錢出錢,持續(xù)的移植和優(yōu)化開源項(xiàng)目。也許,有的廠商會(huì)說我等著就可以了,反正有別人做,到時(shí)候用開源社區(qū)的現(xiàn)成成果就可以。但很可能的結(jié)果是,只是能用,但效率較低,一樣造成芯片競(jìng)爭(zhēng)力低。
開發(fā)者社區(qū)、大學(xué)計(jì)劃、比賽等。國內(nèi)的幾家RISC-V IP公司都在推大學(xué)計(jì)劃,相信陸續(xù)會(huì)出現(xiàn)一批RISC-V相關(guān)的選修課。比賽上,之前國際上辦過RISC-V軟核設(shè)計(jì)比賽。也許將來RISC-V的芯片多了之后,可以做一個(gè)編程比賽,或者黑客馬拉松等。
應(yīng)用場(chǎng)景,應(yīng)用框架和軟件等。目前,RISC-V接受程度比較高的是嵌入式、IoT等。這種場(chǎng)景的生態(tài)需求比臺(tái)式機(jī)、服務(wù)器要簡(jiǎn)單一些。核心是做出有差異化的軟硬件方案,要不然是替代已有市場(chǎng)的產(chǎn)品,性能更高,價(jià)格更低;要不然就是先一步滿足新興的場(chǎng)景/產(chǎn)品需求(比如AIIoT等)。RISC-V市場(chǎng)應(yīng)用的成功,只靠開源軟件社區(qū)是不現(xiàn)實(shí)的,必須芯片廠商和方案商共同的推動(dòng)才能盡快的落地。
以上只是我的不成熟小看法,軟件生態(tài)是個(gè)可大可小的事情,如果只是瞄準(zhǔn)個(gè)細(xì)分專用領(lǐng)域,那么生態(tài)投入就會(huì)少很多,但這樣是否能養(yǎng)活一家CPU公司,能否活得夠好?如果將來是參與全球競(jìng)爭(zhēng),面向多種領(lǐng)域,那么生態(tài)投入就會(huì)比較大。這不是一家芯片公司自己能做完的事情,保持開放心態(tài),與各種軟硬件廠商,社區(qū)積極協(xié)作,持續(xù)推動(dòng)發(fā)展,才能見到成效。
與各位一起努力!
RVBoards開源技術(shù)組織的成立與愿景
張先軼博士發(fā)起了RVBoards開源技術(shù)組織,目標(biāo)就是建設(shè)RISC-V的開源硬件賦能開發(fā)者、應(yīng)用者、院校等,促進(jìn)技術(shù)應(yīng)用和培養(yǎng)軟件開發(fā)人才;與RISC-V IP和SoC伙伴共同建設(shè)開源軟件生態(tài),避免碎片化和行業(yè)重復(fù)投入,實(shí)現(xiàn)百花齊放的商業(yè)愿景。
深圳王哥說
目前國內(nèi)的芯片公司對(duì)于開發(fā)者生態(tài)的投入普遍偏低,其原因大致在于:
一些公司曾經(jīng)嘗試自建開發(fā)者生態(tài),在投入一兩年后,發(fā)現(xiàn)ROI并不劃算,然后選擇了放棄。是的,每家公司自建開發(fā)者生態(tài),確實(shí)是一種并不經(jīng)濟(jì)的做法。如果我們這個(gè)行業(yè)的目標(biāo)是星辰大海,共同投入和共建軟件生態(tài)將促進(jìn)大家共同進(jìn)步。
自家的芯片要加入到開源生態(tài)中,一定程度需要開放更多的芯片底層和驅(qū)動(dòng)等細(xì)節(jié),這有商業(yè)機(jī)密的考量。然而,這通常是一種無謂的擔(dān)憂。借用對(duì)人而言的話“我們更需要的是超越自我”,勇敢地投入到開源生態(tài),你將更加優(yōu)秀。
芯片公司自身有比較強(qiáng)的軟件團(tuán)隊(duì),對(duì)于大客戶和短期戰(zhàn)略有直接的效果,畢竟每年的年報(bào)寫的是銷售業(yè)績而不是開發(fā)者數(shù)量。然而,這種策略對(duì)于新興和增量市場(chǎng),往往會(huì)過于遲鈍。
行業(yè)共建生態(tài)通常會(huì)產(chǎn)生的投入不一定對(duì)等和被其他人搭順風(fēng)車的擔(dān)心。舉個(gè)例子,大家上學(xué)交同樣的學(xué)費(fèi),學(xué)到的東西和考的名次是有差異的,然而,這些都來自于我們自己的驅(qū)動(dòng)力。
另外一個(gè)角度是,我們既然看好RISC-V的未來,就應(yīng)該相信了開放/開源正在影響到整個(gè)產(chǎn)業(yè)鏈,對(duì)于優(yōu)秀的企業(yè)而言,是時(shí)候決定是不是應(yīng)該早點(diǎn)出發(fā)了。
評(píng)論