中科院發佈國產 RISC-V 處理器「香山」:已成功運行 Linux/Debian

本週,首屆 RISC-V 中國峯會在上海科技大學舉辦。這是 RISC-V 第一次在北美之外地區舉辦同等規模的峯會。在本屆大會上,中科院大學教授、中科院計算所研究員包雲崗公佈了國產開源高性能 RISC-V 處理器核心—— 香山,其核心以「湖」來命名架構代號,第一代叫作「雁棲湖」,「雁棲湖」RTL代碼於今年4月完成,計劃於7月基於臺積電28nm工藝流片。第二代架構叫作「南湖」,將採用中芯國際14nm工藝,預計今年年末流片。北京微核芯參與了第一期的設計工做,目前團隊正招募香山處理器二期聯合開發合做夥伴,加入的企業已有字節跳動等公司。

做者 | 包雲崗,2003年本科畢業於南京大學,2008年獲中科院計算所博士學位,2010-2012年普林斯頓大學博士後,現爲中科院計算所研究員,所長助理,先進計算機系統研究中心主任,中國科學院大學崗位教授,博士生導師,中國開放指令生態(RISC-V)聯盟祕書長。git

22號下午關於香山的報告,由於Zoom直播出現了技術故障,致使你們未能聽到完整的報告,稍有些遺憾。考慮了一下,這裏就把報告PPT直接貼出來,再加上咱們在香山開發過程當中的一些考慮和想法,跟你們分享。github

圖片

這個報告主要回答四個問題:數據庫

  • 1、爲何要作香山?
  • 2、香山什麼水平?
  • 3、香山怎麼作的?
  • 4、香山將來如何發展?

1、爲何要作香山?

2010年RISC-V誕生,迄今已有11年。現在,在RISC-V國際基金會網站上登記的各種商業或開源的RISC-V處理器核就有上百個(以下連接),爲何還要作一個開源的高性能RISC-V核?後端

RISC-V Exchange: Cores & SoCs - RISC-V International性能優化

對於這個問題,咱們和不少業界企業交流過,也作了不少調研與分析,這都讓咱們判斷認爲業界須要一個開源的高性能RISC-V核。另外一方面,咱們也在思考一個問題——爲何CPU領域尚未一個像Linux那樣的開源主線?1991年開源的Linux誕生,到今天正好30年。現在,Linux不只被工業界普遍應用,也成爲學術界開展操做系統研究的創新平臺。架構

RISC-V是開放開源的指令集,容許全世界任何人免費實現一個RISC-V處理器,能夠是商用,也能夠開源,這是和公司私有的X86/ARM指令集相比最大的區別之一。可是,十年過去了,到如今還未能造成一個像Linux那樣的開源主線。Berkeley的BOOM目標是一個高性能開源RISC-V核,可是BOOM代碼倉庫相對不開放,官方建議其餘人實現任何功能都要事先和他們溝通,以確保不要與他們的計劃產生衝突。根據GitHub官方的統計頁面顯示,從2014年1月至今,爲BOOM提交過超過100行代碼修改的僅有8人。因而可知,必定程度上由於BOOM嚴格的外部貢獻政策,開源社區對BOOM的參與度並不高。框架

因此,團隊的唐丹博士和我一直認爲要創建一個像Linux那樣的開源RISC-V核主線,既能被工業界普遍應用,又能支持學術界試驗創新想法。最關鍵的是,必定要讓它像Linux那樣至少存活30年!ide

因而,「香山」誕生了。工具

圖片

咱們作了一年多的準備工做——申請經費,啓動「一輩子一芯」計劃培養人才,創建團隊,尋找合做夥伴……這期間獲得了太多太多人的支持和幫助:計算所孫凝暉院士幫咱們多處找經費,國科大全力支持「一輩子一芯」計劃,鵬城實驗室支持咱們創建起後端物理設計團隊,多位計算所老所友毅然決定參與開源主線等等,就不一一列舉了。性能

終於,香山正式啓動了——2020年6月11日,香山在GitHub上創建了代碼倉庫。

短短的的一年時間裏,25位同窗和老師參與了香山的開發。821次主分支代碼合併,3296次代碼提交(commit),5萬餘行代碼,400多個文檔,記錄了香山的成長過程。咱們的理念是代碼開源、流程開放、文檔公開。這期間,有企業直接參與開發,也有企業表達參與意向,都由於認同開源理念,願意一塊兒來共建開源的香山。這些來自工業界的積極反饋,給予咱們極大的鼓舞和信心,讓咱們更堅決地去踐行「科研重工業模式」。

「科研重工業模式」,是 2020年1月我爲《中國計算機學會通信(CCCF)》寫了一篇卷首語《伯克利科研模式的啓發》中提出的:

袁嵐峯:CCCF卷首語 :伯克利科研模式的啓發 | 包雲崗

回顧伯克利的科研歷程,能夠發現他們在過去幾十年研製了大量的原型系統,不只推進了技術進步甚至顛覆產業,也培養了一代代傑出人才(其中多位得到圖靈獎):1950年代CALDIC系統(Doug Englebart),1960年代Project Genie系統(Butler Lampson與Chuck Thacker),1970年代BSD Unix操做系統與INGRES數據庫系統(Michael Stonebraker),1980年代RISC處理器(David Patterson),1990年代RAID存儲系統與NOW機羣系統……若是用一句話來 總結伯克利的科研模式,那就是—— 熱衷於研製真正能改變現狀的原型系統,哪怕須要大量工程投入。國重主任孫凝暉院士稱之爲 「科研重工業模式」。

「科研重工業模式」,咱們不想紙上談兵,咱們要用行動去實踐。

圖片

2、香山什麼水平?

香山是一款開源RISC-V處理器核,它的架構代號以湖命名。初版架構代號是「雁棲湖」,這是帶有濃重國科大情節的同窗們起的名字,由於他們研一都在懷柔雁棲湖待了一年。「雁棲湖」RTL代碼於2021年4月完成,計劃於7月基於TSMC 28nm工藝流片,目前頻率爲1.3GHz。

第二版架構代號是「南湖」,這是向建黨100週年致敬。「南湖」計劃在今年年末流片,將採用中芯國際14nm工藝,目標頻率是2GHz。

圖片

香山選擇什麼開源許可證?這個問題糾結了咱們好一陣子。後來,咱們專門向北京大學周明輝教授請教,小夥伴們制定了4種開源許可證方案。在反覆對比權衡後,最終選擇了以下表格中的方案①——木蘭寬鬆版許可證(MulanPSLv2)。在此,特別感謝北大周明輝老師的專業指導!

圖片

開源許可證方案對比(徐易難整理)

「雁棲湖」架構是一個**11級流水、6發射、4個訪存部件的亂序處理器核。**在發射寬度上已經能夠和一些ARM高端處理器核至關,但還未進行充分優化,所以實際性能還有不小的差距。咱們但願將來經過持續迭代優化(「南湖」-->"X湖"-->"Y湖"-->……),性能達到ARM A76的水平。

圖片

image.png

咱們基於GitHub CI構建了一套流程化的自動迴歸測試框架,並在過去大半年不斷增長測試負載,從cputest,risc-tests到Linux,到SPECCPU workload。這套自動迴歸測試框架在保障和驗證芯片的正確性。

圖片

每一個大項目總會有一些激動人心的時刻,這段30秒的小視頻記錄了香山在FPGA上啓動Linux/Debian的時刻,略帶喜感。

視頻連接:香山在FPGA上啓動Linux/Debian

3、香山怎麼作的?

香山開發初期速度很是快:6月11日創建代碼倉庫,7月6日亂序流水線便已完成,能正確運行CoreMark,不到一個月時間;9月12日,Linux正確啓動10月22日,Debian正確啓動。

接下來即是大半年的結構優化、性能調優、時序優化工做,香山架構幾乎至關於重構了一遍。一個典型的例子,香山的初版分支預測器(BPU)參考了BOOM的BPU,但後端評估頻率只能達到800MHz(TSMC 28nm)。因而負責BPU設計的勾凌睿在幾位老師的指導下,不斷優化BPU結構,最終將頻率提高到了1.4GHz。

這期間,小夥伴們紛紛本身動手,開發了各類各樣的優化和調試工具,大大地加速了優化和驗證環節。這讓我真心佩服這批90後——他們真是充滿了創造力,從工做到生活,而主要驅動力之一就是「省(tou)時(lan)」。好比寧肯本身寫個程序自動點外賣,也懶得打開手機看菜單點。

圖片

香山的開發至少有兩個重要的決策,第一個即是選擇敏捷設計語言Chisel。不少人質疑Chisel,排斥Chisel,可是咱們在充分評估後,仍是決定使用Chisel。

咱們團隊是在2016年開始使用Chisel,一開始組裏也充滿質疑。2018年,咱們設計了兩組定量的對比實驗,找了2位同窗用Chisel、1位工程師用Verilog分別設計一個L2 Cache模塊。經過一系列量化對比,得出了以下三個結論:

  1. Chisel開發效率遠高於Verilog;
  2. 實現相同的功能,Chisel代碼量僅爲Verilog的1/5(所以香山的5萬行Chisel代碼至關於25萬行Verilog代碼);
  3. Chisel的開發質量不比Verilog差。

後來將實驗結果發表在2019年1月的《計算機研究與發展》。最近去華爲交流,才知道這些對比結果也推進了華爲內部組建了Chisel開發團隊,現在華爲也是Chisel的支持者。

2020年,咱們又基於Chisel完成了一款8核標籤化RISC-V處理器的流片,這是基於Rocket處理器核進行了標籤化體系結構改造,採用TSMC 28nm工藝流片。雖然由於時間緊張,並無進行細緻的後端優化,但芯片返回後也還能正常運行在1.2GHz。這是一顆有必定複雜度的8核SoC芯片,但Chisel能應對。因此,咱們相信Chisel可用來開發複雜芯片。

圖片

在開發香山的過程當中,咱們團隊積累了豐富Chisel開發經驗。小夥伴們(徐易難、王凱帆、藺嘉煒、餘子濠、金越)準備了6個報告,將會在6月25日的CCC Workshop上和你們分享。

圖片

另外一個重要決策就是高度重視構建支持敏捷設計的流程與工具。

圖片

咱們在開發香山的過程當中,一直在強調流程、平臺、基礎設施的重要性。我更可能是扮演了啦啦隊隊長的角色,而小夥伴們則真正將理念落實到了具體行動。

圖片

爲了更好地支持Chisel開發與調試,爲了更快地捕捉、復現和定位bug,爲了更準確地評估優化技術的性能收益,小夥伴們開發十餘種各具特點的工具。這些工具支撐起了一套處理器芯片敏捷開發的流程。固然,這套流程還比較初級,尚不繫統化。咱們也期待更多的開源開發者加入,一塊兒完善這套敏捷設計流程。

圖片

下面舉幾個工具的例子。NEMU是由余子濠在南大本科時便開始開發的一款教學模擬器。在計算所讀博期間,他憑藉一人之力一直在持續改進和優化NEMU,使NEMU成爲一個效率接近QEMU的高性能解釋器——啓動Debian甚至比QEMU還要快18.2%(9.87s vs. 12.07s)。

更重要的是NEMU是指令解釋器,能夠針對每一條指令進行動態分析;相比而言,QEMU的翻譯粒度是基本塊,沒法跟蹤每一條指令。事實上,NEMU的這種指令解釋器機制,成爲了香山開發中正確性驗證框架Difftest的基礎。(餘子濠將會在6月23日下午介紹NEMU)

圖片

Cache是處理器中很是核心的模塊,尤爲是要支持一致性協議的Cache更爲複雜。爲此,小夥伴們開發了一套專門驗證支持TileLink一致性協議的Cache模塊測試框架Agent Faker,發現了好幾個Cache模塊的bug。(張傳奇將會在6月25日上午介紹這個工做)

圖片

Difftest是一個基於NEMU的指令集在線差分驗證框架。它的一端是模擬器,提供處理器執行的黃金標準;另外一端是運行RTL的仿真器,在仿真過程當中會將指令數、中斷、MMIO、微結構狀態等信息發送給NEMU進行比對,從而判斷RTL實現的正確性。

Difftest最先是由余子濠實現,後來王凱帆進行優化,其中一個最重要的改進就是SMP-Difftest,支持多核SMP的全系統仿真,而且支持Cache一致性、內存一致性等須要軟硬件協同的問題。(王凱帆將會在6月24日下午介紹Difftest)

圖片

如何快速捕捉、復現、定位bug是調試過程當中很是關鍵的步驟,不少時間都是消耗在這個階段。小夥伴們提出了一種創新的輕量級仿真快照技術——把整個仿真程序當作是一個進程,利用fork機制建立子進程。而後父進程繼續執行,子進程暫停。當父進程出錯時,則能夠恢復到子進程進行調試。LightSSS這個機制和Verilator仿真器自帶的Savable機制相比,單次快照時間縮短了近7000倍!(餘子濠將會在6月23日下午介紹LightSSS)

圖片

不少人質疑Chisel不方便調試。小夥伴們則充分利用了Chisel的能夠自定義Firrtl Transform的特色,設計了一套新型的硬件敏捷調試棧,可將基於波形的調試轉換爲基於事件的調試。咱們設計了一套工具,能夠直接將高層語義新型從波形中提取出來,並進行可視化。爲此,還專門設計了一個Xiang語言。(藺嘉煒將在6月23日下午介紹該工做)

圖片

處理器性能優化環節最關鍵是要快速準確地評估優化技術帶來的性能收益。若是評估過程須要幾天時間,那將會嚴重影響迭代優化效率。小夥伴們設計了一個敏捷性能評估框架BetaPoint,它利用了三個機制——Sampling機制、Generic Full System Checkpoint機制和Functional Warmup機制,實現了能夠在10個小時內估算出處理器的SPEC分數。(周耀陽將會在6月23日傍晚介紹BetaPoint)

圖片

整個香山開發團隊將在此次峯會上和你們分享22個技術報告。這些報告都是清一色的90後,不少都是95後:勾凌睿、胡博涵、金越、李昕、劉志剛、藺嘉煒、王華強、王誨喆、王凱帆、徐易難、餘子濠、張傳奇、張發旺、張林雋、張紫飛、張梓悅、周耀陽、周意可、鄒江瑞;此外還有多位參與香山開發的同窗此次並無投稿。這些小夥伴們在香山的開發過程當中作出了不可替代的貢獻。

圖片

4、香山將來如何發展?

目前香山正在進行下一代架構「南湖」的開發,目標是今年年末流片,基於中芯國際的14nm工藝頻率達到2GHz,SPECCPU分值達到10分/GHz。這是一個頗有挑戰的目標,須要對架構進行大幅度的優化改進。

前幾天,小夥伴們專門去了一趟嘉興南湖,研討香山將來的發展。除了技術,咱們再一次聚焦到流程與平臺。此前構建的敏捷設計流程與平臺支撐了20多人的開發團隊,這遠遠不夠。如今咱們須要考慮的是該如何構建一套開源、開放、規範的開放流程,能支撐2000人的開源社區一塊兒開發。

支持成千上萬人一塊兒開發開源軟件,這已經有成功的經驗。可是如何支持數千人一塊兒開發開源處理器,目前尚未能夠參考的案例,只能靠咱們本身摸索。也期待各界專家給咱們更多的指導和建議。

圖片

咱們有一個願望——但願「香山」能存活30年;咱們有一個約定——30年後再一塊兒聚聚,到時再看看香山會變成什麼樣。可是,要實現這個願望,還有不少不少問題和挑戰須要去解決。

真誠地期待有更多夥伴加入香山的開發隊伍!

圖片

香山是在中科院計算所、鵬城實驗室的支持下,經過中國開放指令生態(RISC-V)聯盟聯合業界企業一塊兒開發一款開源高性能RISC-V處理器核,也獲得了北京智源人工智能研究院的支持。在此,要特別感謝北京微核芯公司的資深專家給予香山的開發強力的支持,他們很是認同開源理念,也是第一家與香山聯合開發的企業。很高興「南湖」架構的開發有了更多的合做夥伴,感謝對香山的支持。

歡迎聯繫咱們一塊兒加入香山開源社區!

圖片

5、花絮

  • 一本關於香山的書。不少人以爲CPU設計很難,很高大上,咱們卻是但願能把這個門檻給降一降——因此打算出一本相似伯克利的《TCP/IP協議棧詳解》和毛德操老師的《Linux內核源代碼場景分析》那樣的書,結合香山的源代碼來分析CPU設計細節和訣竅(know-how)。這本書也能夠用開源的方式由社區一塊兒撰寫,歡迎感興趣的朋友一塊兒參加。
  • 「一輩子一芯」計劃的回報。首期「一輩子一芯」計劃的五位同窗(金越、王華強、王凱帆、張林雋、張紫飛)在本科一畢業便加入了香山的開發,成爲了技術骨幹。不少人都問他們何時畢業,可能須要再等等了。他們如今才研一,還要再等兩年纔會有同窗畢業。
  • 疫情中的封閉開發。2020年6月初,北京新發地突然出現了新冠疫情,致使同窗們都沒法回到北京。感謝深圳鵬城實驗室的大力支持,整個團隊所有集中到深圳,在鵬城實驗室集中了三個月的封閉開發。那段時間基本上每週都有超過150個commit,反而成爲開發效率最高的一個時間段。
  • 香山的Logo。咱們嘗試了不少個香山logo設計,最後通過你們投票選擇了左下角的那個方案。不過有朋友好心告知香山的紅葉主要是黃櫨葉。好在香山也有五角楓,暫時就先定這個logo了。


最後幾句

有幸和阿里巴巴的戚總(戚肖寧)一塊兒擔任首屆RISC-V中國峯會的聯席大會主席,但其實幕後是中科院軟件所和上海科技大學的老師們爲此次峯會的籌備和保障工做付出了巨大的努力。

因爲疫情帶來極大的不肯定性,組委會始終保持高度緊張狀態:一開始只開放了大約1500位線下參會名額,但很快就報滿了;後來又開放了兩次補報機會,但每次也只開放了200個名額,最後一共是2600人次(有的同時報名參加主會和分會)。

但即便如此,最後由於廣東那邊的疫情緣由,不得不安排你們遠程參會。在此,對未能報上名的朋友說聲抱歉,對報上名但由於疫情而選擇放棄現場參會的朋友道聲感謝。不過此次峯會提供了4個直播渠道,全程直播101個報告,並在後續會有視頻回放。很抱歉直播中間也遇到了一些技術問題(有些上午調試好了下午還出錯),在此再說聲抱歉。

特別感謝中科院軟件所的吳偉老師和武延軍老師,他們爲籌備此次峯會而殫精竭慮,真的付出太多了。感謝上海科技大學信息學院周平強院長,協調上海本地各方資源,全力支持和保障峯會的順利召開。也要感謝全部爲峯會默默付出的籌備組成員和志願者們!

你們因RISC-V而匯聚到一塊兒,正是由於RISC-V所帶來的開源、開放、共享、共治是你們的共識,也是由於RISC-V爲咱們帶來了無限的想象空間。現在,RISC-V已在中國蓬勃發展,中國也在RISC-V生態中貢獻愈來愈多的力量——首屆RISC-V中國峯會就是最好的寫照。

相關文章
相關標籤/搜索