深圳王哥說 發表於 2020-12-16 11:09:12
近期,關於晶片的話題特別的火熱,雖然我不是從事晶片設計,但是一直做高性能計算軟體庫的工作,也領導和維護了開源矩陣計算庫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的未來,就應該相信了開放/開源正在影響到整個產業鏈,對於優秀的企業而言,是時候決定是不是應該早點出發了。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴