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