“如何評價中國科學(xué)院大學(xué)(以下簡稱國科大)‘一生一芯’計劃?”
在某問答網(wǎng)站上,這個問題獲得了超千萬的關(guān)注熱度。

五位本科生,主導(dǎo)完成了一款64位RISC-V處理器SoC芯片設(shè)計并實現(xiàn)流片。這款芯片,被稱作他們的 “最硬核畢業(yè)證書”。
和芯片有關(guān)的新聞,總能牽動國人的心。
而當(dāng)主角成為幾個“帶芯畢業(yè)”二十出頭的年輕人,就更加引人好奇。
網(wǎng)上的聲音多種多樣,有人鼓掌,有人唱衰,有人將它和中國芯片產(chǎn)業(yè)聯(lián)系起來,寫了洋洋灑灑長篇分析。
如今,五位學(xué)生已經(jīng)開始了新的工作。他們正在深圳,參與新的更高性能芯片的設(shè)計。
8月中旬,他們還多了個新身份——第二期“一生一芯”計劃的助教。
本科生做芯片,天方夜譚嗎?
芯片是今年五月底快遞到王華強(qiáng)家的。
它大概一元硬幣大小,上面刻著 “COOSCA-01”和“一生一芯”的字樣,還有國科大的Logo。

COOSCA是一個內(nèi)部代號,是國科大計算機(jī)科學(xué)與技術(shù)學(xué)院的三門課程——計算機(jī)組成原理、操作系統(tǒng)和計算機(jī)架構(gòu)的縮寫?!耙簧恍尽眲t是計劃的名字,意思是讓每位本科生帶著自己設(shè)計的處理器芯片畢業(yè)。
受新冠肺炎疫情影響,今年國科大的本科畢業(yè)答辯在線上進(jìn)行。
學(xué)生王華強(qiáng)代表“一生一芯”團(tuán)隊,向答辯委員會的老師遠(yuǎn)程展示了芯片。
他把芯片裝上測試板,用串口線將測試板與電腦連接,打開電腦上的終端軟件,按下測試板上的復(fù)位鍵,運行了幾個簡單的程序——Linux系統(tǒng)跑起來了。
然而,去年夏天,“一生一芯”計劃參與者張紫飛第一次聽到該計劃時的第一反應(yīng)卻是“天方夜譚吧”。
讓幾個本科生用幾個月時間,設(shè)計出一枚能夠運行Linux這樣復(fù)雜操作系統(tǒng)的芯片,可能嗎?
“一生一芯”計劃負(fù)責(zé)人、國科大計算機(jī)學(xué)院教授、中國科學(xué)院計算技術(shù)研究所先進(jìn)計算機(jī)系統(tǒng)研究中心主任包云崗則覺得,在開源時代,將芯片設(shè)計的門檻降下來,是可能的。
包云崗對2008年至2017年計算機(jī)體系結(jié)構(gòu)國際頂級會議論文第一作者做過分析,只有4%來自中國的高校和科研院所。
中國的處理器芯片設(shè)計界,缺人。
開放指令集RISC-V與芯片敏捷開發(fā)語言Chisel,能使開發(fā)效率數(shù)量級提升。
RISC-V,正是包云崗近幾年的研究重心。這一指令集可以自由地用于任何目的,允許任何人設(shè)計、制造和銷售RISC-V芯片和軟件。
2018年時,包云崗就隱約意識到,RISC-V對人才培養(yǎng)會有幫助。2019年5月,華為被美國商務(wù)部列入實體名單,人才危局必須盡快找到出路。包云崗迅速將他模糊的想法細(xì)化:讓學(xué)生學(xué)習(xí)并實踐芯片敏捷設(shè)計方法,通過大學(xué)流片計劃完成芯片制造。
2019年8月,“一生一芯”計劃正式啟動。這是一次教學(xué)實踐。
國科大校領(lǐng)導(dǎo)認(rèn)為,它會掀起本科教學(xué)改革的新篇章。
五位參與的學(xué)生是金越、王華強(qiáng)、王凱帆、張林雋和張紫飛。

他們都是國科大計算機(jī)科學(xué)與技術(shù)學(xué)院2016級本科生,那時也都已通過了中國科學(xué)院計算技術(shù)研究所的保研夏令營,成為首批吃螃蟹的人。
踩坑、挖坑,再從坑里爬出來
其實,在他們們面前的,是一條未有人走過的路。
沒有導(dǎo)航,他們需要自己打怪升級,自己試錯嘗試。
當(dāng)然,他們也并非是在白紙上作畫。
教師團(tuán)隊已經(jīng)制定了總體方案,確定了技術(shù)路線,選擇好了基礎(chǔ)平臺,搭建了開發(fā)環(huán)境,也選定了流片工藝和班車。
五位學(xué)生真正動手之前,一支實力強(qiáng)大的教師團(tuán)隊,為學(xué)生的乘風(fēng)破浪,做好了保駕護(hù)航的準(zhǔn)備。
做芯片,其實分為前端和后端。前端主要是做設(shè)計,用數(shù)字電路的方式實現(xiàn)處理器的功能;后端則是用物理元件來實現(xiàn)這些設(shè)計。
“要說芯片都是我們做的,并不準(zhǔn)確。其實我們只是做了前端的邏輯設(shè)計部分?!蓖鮿P帆強(qiáng)調(diào)。
他嘗試用最通俗的語言向科技日報記者解釋設(shè)計芯片是怎么一回事——類似于畫一張大樓的施工圖紙。只不過,呈現(xiàn)這張圖紙,用的不是線條,而是一種叫做Chisel的硬件語言。
此前,包云崗團(tuán)隊中的博士生余子濠為南京大學(xué)開發(fā)了一款教學(xué)用RISC-V處理器,“一生一芯”計劃的學(xué)生要在此基礎(chǔ)上進(jìn)行改進(jìn),把師兄搭建的房子,改建得更舒服、更亮堂。
包云崗說,在實際產(chǎn)品研發(fā)和科研工作中,也往往不是從頭開始,更多是在已有基礎(chǔ)上,增加新功能,提高性能?!斑@培養(yǎng)的是學(xué)生‘理解—消化—創(chuàng)新’的能力?!?/p>
大家采用了當(dāng)下流行的“敏捷開發(fā)”模式:每人負(fù)責(zé)一個或幾個模塊,齊頭并進(jìn),多線推進(jìn),然后合龍。

芯片設(shè)計開發(fā)歷程。圖源:包云崗知乎問答
“一生一芯”計劃的目標(biāo)很明確:在芯片上運行Linux系統(tǒng),支持基本的輸入輸出設(shè)備。
先解決“能不能”“對不對”的問題,再來看“快不快”“好不好”。
對新手施工設(shè)計團(tuán)隊來說,他們蓋的第一棟房子,要保證的是屹立不倒。
從2019年8月正式動手設(shè)計,到12月中旬交付設(shè)計圖紙,五人組踩過坑,給別人挖過坑,也掙扎著從坑里爬出來過。
他們曾熬夜和不知躲在哪里的錯誤死磕,還要對抗可能拖延隊友進(jìn)度的焦慮。
團(tuán)隊成員金越負(fù)責(zé)的是片上系統(tǒng)。
除了中央處理器,在系統(tǒng)內(nèi)還有五個控制器來實現(xiàn)具體功能。
這些控制器的代碼是由開源社區(qū)提供的,但團(tuán)隊并不清楚這些控制器是否適合他們設(shè)計的這款芯片。
金越需要編寫驅(qū)動軟件,測試外設(shè)控制器是否設(shè)置正確,能否正常工作。
“要是出現(xiàn)問題就很麻煩了。到底是我的軟件寫錯了,還是外設(shè)控制器本身有問題?如果是外設(shè)控制器有問題,到底是哪個有問題?”
變量太多,排列組合下來,測試復(fù)雜得讓人頭疼。
“做驗證的那幾天,幾乎沒怎么睡過覺?!苯鹪桨胍箤χ娔X,查手冊,查代碼,查波形,懷著點“我就不信邪”的不忿:“我一定要把這個東西弄出來?!?/p>
尋找問題究竟出在哪,是幾乎每個計劃參與者都會提到的“痛苦”經(jīng)歷,常常是 “按下葫蘆起了瓢”。
作為團(tuán)隊唯一的女將,張林雋負(fù)責(zé)的部分是預(yù)取器。
你進(jìn)入了一間圖書館,想找到一本書??磕阕罱臅?能放的書最少;而更深處的書架,放的書更多,但你走過去的耗時也長。預(yù)取器好比那位了解你喜好的圖書管理員,他提前將他認(rèn)為你會拿的書放在離你最近的書架,節(jié)省你的查找時間。
“在實現(xiàn)這個功能的時候,我想當(dāng)然地認(rèn)為,預(yù)取器應(yīng)該放在L1 Cache也就是一級緩存內(nèi)。”
一級緩存,相當(dāng)于那個離你更近的但是容量更少的書架。但奇怪的是,加入預(yù)取器后,芯片的性能反而受到了影響,芯片的信息處理速度變慢了。
她花了一個月的時間來找問題,一個一個排查、修改和調(diào)試。后來,張林雋被提醒說,可能是預(yù)取器放置的位置不對?!鞍?很崩潰,之前寫的東西就沒用了,又要重來。”將預(yù)取器挪到二級緩存后,困擾她一個月的問題終于消失了。
在真正動手之前,沒人想過,問題竟然會在這等著他們。

參與“一生一芯”計劃的五位學(xué)生,從左至右依次為王華強(qiáng)、張林雋、金越、王凱帆和張紫飛
“我們只是知道了從山底到半山腰的路怎么走”
2019年12月,這款芯片的設(shè)計版圖正式提交,基于中芯國際110nm工藝完成投片。
平時上課或者比賽,學(xué)生也需要從零開始完成一次芯片設(shè)計。但在課堂實踐中,并不需要測試得太完備,只要設(shè)計出的芯片能通過老師給的幾個測試點,就算成功。在“一生一芯”計劃中,沒有這些被預(yù)先設(shè)計好的“測試點”。你必須考慮全面,細(xì)心謹(jǐn)慎。
無可否認(rèn)的是,壓力更大。
此前的芯片設(shè)計,更像是“紙上談兵”,成功了固然好,失敗了好像也無所謂。但是這次,投入真金白銀去流片,能不能用,幾個月的努力會不會打水漂,流片后就能見分曉。
這是第一期“一生一芯”計劃,大家都希望能開個好頭。等待的日子,他們忐忑又興奮。
2020年4月23日,學(xué)生們從微信群里得知,他們親手設(shè)計的處理器芯片返回了。
但這并不是終點,還需要進(jìn)行測試驗證。
“從底層PCB版圖、內(nèi)存顆粒到中間處理器設(shè)計、再到上層操作系統(tǒng)、應(yīng)用軟件,每個層次都可能出問題。哪怕一個小問題,都會造成芯片無法正常工作?!卑茘徴f。
這段測試經(jīng)歷,同樣也是一波三折,甚至有點戲劇性。
芯片回來后,團(tuán)隊里的老師們上手測試了幾顆,結(jié)果芯片真的就是塊“磚”,沒有任何輸出。一陣忙亂后他們才發(fā)現(xiàn),原來是主板上的一根電源線接錯了,芯片“出師未捷身先死”,被燒壞了。
后來,又因為一個串口時鐘頻率設(shè)置問題,芯片性能始終不正常。折騰了一段時間,芯片才被調(diào)整到最佳狀態(tài)。
6月2日,在畢業(yè)答辯現(xiàn)場,王華強(qiáng)展示了芯片的工作流程。
后來,王凱帆還將國科大操作系統(tǒng)課程上同學(xué)們自己編寫的UCAS-Core移植到了COOSCA核上,用自己寫的CPU,運行了自己寫的操作系統(tǒng)。
到深圳后,張紫飛才第一次看到自己設(shè)計的芯片。
“第一次看到時就覺得,這芯片比我們想象得小啊,好像還有點簡陋?!睆堊巷w開玩笑道,“但是母不嫌兒丑嘛?!?/p>
國科大的學(xué)生將自己的母校簡稱為“果殼”,所以,果殼(nutshell)也就成了“一生一芯”計劃首款芯片的正式名字。

王華強(qiáng)在今年7月RISC-V年中技術(shù)研討會上介紹了果殼的設(shè)計細(xì)節(jié)和開發(fā)過程中的經(jīng)驗體會。
9月3日,王華強(qiáng)將代表團(tuán)隊向全球同行介紹“果殼”的設(shè)計,這也將是“果殼”首次在國際舞臺上亮相。
“國科大學(xué)生硬核畢業(yè)證書”一度成為網(wǎng)上的熱議話題,但被當(dāng)成“大神”膜拜的幾位學(xué)生,無意將這一項目做過多拔高。
金越打了個比方:“現(xiàn)在,我們只是知道了從山底到半山腰的路有多難走,還不知道從半山腰到山頂?shù)穆酚卸嚯y走?!?/p>
也正是因為攀過山、爬過坡,學(xué)生們知道自己都是新兵,經(jīng)驗和能力上都有欠缺,還需淬煉。

“一生一芯”計劃負(fù)責(zé)人、中科院計算所研究員包云崗在講解芯片。受訪者供圖
他們的平均年齡,只有21.8歲。
包云崗說,等他們30歲時,就可以說已經(jīng)是處理器芯片和計算機(jī)系統(tǒng)設(shè)計領(lǐng)域的“老兵”了。無論他們是進(jìn)入業(yè)界還是學(xué)界,創(chuàng)造力會得到更大的發(fā)揮和展現(xiàn)?!拔覍@批年輕人的未來充滿期待?!?/p>
“一生一芯”計劃二期已經(jīng)啟動。
據(jù)包云崗介紹,二期的學(xué)生增加到13位。除了國科大外,還有來自浙江大學(xué)、南京大學(xué)、西北工業(yè)大學(xué)、哈爾濱工業(yè)大學(xué)(深圳)和美國密歇根州立大學(xué)等五所高校的同學(xué)。(文中圖片由作者提供 科技日報 記者張蓋倫)