天天看點

張先轶博士:為什麼RISC-V需要共建軟體生态?

【2020年6月20日文,為什麼RISC-V需要共建軟體生态?】

    近期,關于晶片的話題特别的火熱,雖然我不是從事晶片設計,但是一直做高性能計算軟體庫的工作,也上司和維護了開源矩陣計算庫OpenBLAS,經常會和各種晶片和IP公司打交道。我的淺見是,晶片做出來可能隻是第一步,培養起相應的軟體生态,或者說融入主流的軟體生态,才是決定這個晶片ISA/架構能走多遠。是以,希望先和大家一起探讨CPU軟體生态,以及RISC-V為什麼需要共建軟體生态的問題。晚些時候再聊GPU、AI加速卡等的軟體生态問題。

    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公司,能否活得夠好?如果将來是參與全球競争,面向多種領域,那麼生态投入就會比較大。這不是一家晶片公司自己能做完的事情,保持開放心态,與各種軟硬體廠商,社群積極協作,持續推動發展,才能見到成效。

與各位一起努力!

【2020年11月12日,發起RVBoards開源技術組織】

  • 張先轶博士發起了RVBoards開源技術組織,目标就是建設RISC-V的開源硬體賦能開發者、應用者、院校等,促進技術應用和培養軟體開發人才;與RISC-V IP和SoC夥伴共同建設開源軟體生态,避免碎片化和行業重複投入,實作百花齊放的商業願景。
張先轶博士:為什麼RISC-V需要共建軟體生态?
  • 王哥說:目前國内的晶片公司對于開發者生态的投入普遍偏低,其原因大緻在于:1. 一些公司曾經嘗試自建開發者生态,在投入一兩年後,發現ROI并不劃算,然後選擇了放棄。是的,每家公司自建開發者生态,确實是一種并不經濟的做法。如果我們這個行業的目标是星辰大海,共同投入和共建軟體生态将促進大家共同進步。2. 自家的晶片要加入到開源生态中,一定程度需要開放更多的晶片底層和驅動等細節,這有商業機密的考量。然而,這通常是一種無謂的擔憂。借用對人而言的話“我們更需要的是超越自我”,勇敢地投入到開源生态,你将更加優秀。3. 晶片公司自身有比較強的軟體團隊,對于大客戶和短期戰略有直接的效果,畢竟每年的年報寫的是銷售業績而不是開發者數量。然而,這種政策對于新興和增量市場,往往會過于遲鈍。4. 行業共建生态通常會産生的投入不一定對等和被其他人搭順風車的擔心。舉個例子,大家上學交同樣的學費,學到的東西和考的名次是有差異的,然而,這些都來自于我們自己的驅動力。另外一個角度是,我們既然看好RISC-V的未來,就應該相信了開放/開源正在影響到整個産業鍊,對于優秀的企業而言,是時候決定是不是應該早點出發了。
張先轶博士:為什麼RISC-V需要共建軟體生态?

關注RISC-V發展,關注RVBoards開源生态。

RVBoards期待您的加入

繼續閱讀