5位本科生4個月造出芯片畢業(yè) 如何評價國科大‘一生一芯’計劃?
踩坑、挖坑,再從坑里爬出來
其實,在他們們面前的,是一條未有人走過的路。
沒有導航,他們需要自己打怪升級,自己試錯嘗試。
當然,他們也并非是在白紙上作畫。
教師團隊已經(jīng)制定了總體方案,確定了技術路線,選擇好了基礎平臺,搭建了開發(fā)環(huán)境,也選定了流片工藝和班車。
五位學生真正動手之前,一支實力強大的教師團隊,為學生的乘風破浪,做好了保駕護航的準備。
做芯片,其實分為前端和后端。前端主要是做設計,用數(shù)字電路的方式實現(xiàn)處理器的功能;后端則是用物理元件來實現(xiàn)這些設計。
“要說芯片都是我們做的,并不準確。其實我們只是做了前端的邏輯設計部分。”王凱帆強調(diào)。
他嘗試用最通俗的語言向科技日報記者解釋設計芯片是怎么一回事——類似于畫一張大樓的施工圖紙。只不過,呈現(xiàn)這張圖紙,用的不是線條,而是一種叫做Chisel的硬件語言。
此前,包云崗團隊中的博士生余子濠為南京大學開發(fā)了一款教學用RISC-V處理器,“一生一芯”計劃的學生要在此基礎上進行改進,把師兄搭建的房子,改建得更舒服、更亮堂。
包云崗說,在實際產(chǎn)品研發(fā)和科研工作中,也往往不是從頭開始,更多是在已有基礎上,增加新功能,提高性能。“這培養(yǎng)的是學生‘理解—消化—創(chuàng)新’的能力。”
大家采用了當下流行的“敏捷開發(fā)”模式:每人負責一個或幾個模塊,齊頭并進,多線推進,然后合龍。
芯片設計開發(fā)歷程。圖源:包云崗知乎問答
“一生一芯”計劃的目標很明確:在芯片上運行Linux系統(tǒng),支持基本的輸入輸出設備。
先解決“能不能”“對不對”的問題,再來看“快不快”“好不好”。
對新手施工設計團隊來說,他們蓋的第一棟房子,要保證的是屹立不倒。
從2019年8月正式動手設計,到12月中旬交付設計圖紙,五人組踩過坑,給別人挖過坑,也掙扎著從坑里爬出來過。
他們曾熬夜和不知躲在哪里的錯誤死磕,還要對抗可能拖延隊友進度的焦慮。
團隊成員金越負責的是片上系統(tǒng)。
除了中央處理器,在系統(tǒng)內(nèi)還有五個控制器來實現(xiàn)具體功能。
這些控制器的代碼是由開源社區(qū)提供的,但團隊并不清楚這些控制器是否適合他們設計的這款芯片。
金越需要編寫驅(qū)動軟件,測試外設控制器是否設置正確,能否正常工作。
“要是出現(xiàn)問題就很麻煩了。到底是我的軟件寫錯了,還是外設控制器本身有問題?如果是外設控制器有問題,到底是哪個有問題?”
變量太多,排列組合下來,測試復雜得讓人頭疼。
“做驗證的那幾天,幾乎沒怎么睡過覺。”金越半夜對著電腦,查手冊,查代碼,查波形,懷著點“我就不信邪”的不忿:“我一定要把這個東西弄出來。”
尋找問題究竟出在哪,是幾乎每個計劃參與者都會提到的“痛苦”經(jīng)歷,常常是 “按下葫蘆起了瓢”。
作為團隊唯一的女將,張林雋負責的部分是預取器。
你進入了一間圖書館,想找到一本書?磕阕罱臅,能放的書最少;而更深處的書架,放的書更多,但你走過去的耗時也長。預取器好比那位了解你喜好的圖書管理員,他提前將他認為你會拿的書放在離你最近的書架,節(jié)省你的查找時間。
“在實現(xiàn)這個功能的時候,我想當然地認為,預取器應該放在L1 Cache也就是一級緩存內(nèi)。”