●學(xué)生記者 支宇珩

劉衛(wèi)東在課堂上
“計(jì)算機(jī)是如何執(zhí)行指令的?掌握了這件事,計(jì)算機(jī)組成原理這門課就算你學(xué)懂了。”
執(zhí)教計(jì)算機(jī)組成原理課20年,清華大學(xué)計(jì)算機(jī)系教授劉衛(wèi)東一直在思考,如何讓同學(xué)真正學(xué)懂計(jì)算機(jī)組成的原理,為他們今后從事人工智能、芯片、高性能計(jì)算等領(lǐng)域打下扎實(shí)基礎(chǔ)。多年的教學(xué)實(shí)踐中他意識到:動手實(shí)踐,實(shí)現(xiàn)一個(gè)簡單但完整的計(jì)算機(jī)系統(tǒng),而不只停留在打開機(jī)箱“解剖麻雀”的階段,這可能是增進(jìn)同學(xué)理解計(jì)算機(jī)組成的關(guān)鍵。
“奮戰(zhàn)三星期,造臺計(jì)算機(jī)”,這是每年計(jì)算機(jī)組成原理課的大作業(yè)。完成這個(gè)大作業(yè),需要學(xué)生具有相當(dāng)綜合的知識,這也是計(jì)算機(jī)系將這門課安排在大三學(xué)年開展的原因。在學(xué)習(xí)了基礎(chǔ)數(shù)理、電路、程序設(shè)計(jì)等軟硬件綜合知識后,學(xué)生才具備挑戰(zhàn)這個(gè)大作業(yè)的基本能力。
“打好基礎(chǔ),實(shí)驗(yàn)課是對學(xué)生的全面檢驗(yàn),在任何地方都可能出錯(cuò)。所以,首先要用系統(tǒng)的、整體的視角去了解計(jì)算機(jī),然后分析它,尤其是硬件模塊之間的接口部分;其次是技能要扎實(shí)、熟練,比如硬件描述語言的使用、硬件調(diào)試環(huán)境的搭建,這是相當(dāng)重要的;然后是團(tuán)隊(duì)合作,我們一直鼓勵(lì)同學(xué)分組完成實(shí)驗(yàn),這個(gè)也是鍛煉他們畢業(yè)之后的團(tuán)隊(duì)合作和溝通能力,計(jì)算機(jī)領(lǐng)域的突破靠‘人月神話’做不到,必須要許多人高度密切的合作才行。”
劉衛(wèi)東總是強(qiáng)調(diào),計(jì)算機(jī)組成原理這門課不是單純的硬件課,而是要在硬件上跑系統(tǒng)的“軟硬件結(jié)合”課程。對于在短短一學(xué)期中“造臺計(jì)算機(jī)”這件事,劉衛(wèi)東以運(yùn)行軟件的能力為標(biāo)尺提出了“三層境界”:第一層,能跑最基本的程序;第二層,能跑性能更好的程序;第三層,能跑操作系統(tǒng)。
第一層是及格要求。畢竟,一臺無法運(yùn)行程序的計(jì)算機(jī)是不能用的。第二層也是大多數(shù)同學(xué)能夠達(dá)到的。假設(shè)程序員寫出了“更漂亮”、性能更好的代碼,學(xué)生設(shè)計(jì)的計(jì)算機(jī)能夠處理嗎?這就需要學(xué)生處理“中斷”“異常”等更復(fù)雜的程序運(yùn)行機(jī)制,設(shè)計(jì)一臺能跑“流水線”的計(jì)算機(jī)。達(dá)到了這一層,“對計(jì)算機(jī)運(yùn)行的機(jī)制會有更深入、更透徹的了解。”劉衛(wèi)東說。
每年,有90%至95%的同學(xué)能夠達(dá)到第二層的標(biāo)準(zhǔn),而余下的5%至10%的同學(xué)有余力沖擊最高一層的要求,也就是設(shè)計(jì)一臺能夠運(yùn)行操作系統(tǒng)的計(jì)算機(jī),“我們設(shè)計(jì)了一個(gè)教學(xué)用的操作系統(tǒng)。當(dāng)然,如果你能跑商用的開源系統(tǒng)那就更好了。”盡管最終完成的同學(xué)不多,但在勇于嘗試的過程中,學(xué)生們對操作系統(tǒng)和底層硬件配合的機(jī)制的認(rèn)識有了一大步提升,這樣的教學(xué)效果是老師在課堂教學(xué)中難以達(dá)到的。
讓實(shí)驗(yàn)設(shè)備有能力“跑起來”一個(gè)操作系統(tǒng),要經(jīng)歷長時(shí)間的實(shí)踐和琢磨。
在2000年以前,計(jì)算機(jī)組成原理這門課主要是王誠老師負(fù)責(zé),“王誠老師從90年代開始就在琢磨,不能讓學(xué)生僅僅通過背誦來學(xué)會這門課,還是要真正理解。”劉衛(wèi)東介紹,那個(gè)時(shí)候條件比較簡陋,但師生克服困難,把教學(xué)實(shí)驗(yàn)設(shè)備搭建起來了,用的是“分立元器件”,后來?xiàng)l件改善一些,加入了可編程控制的元器件。不過,這些硬件采用類x86的架構(gòu)和指令集,結(jié)構(gòu)和尋址方式比較復(fù)雜,不適合學(xué)生自己做出現(xiàn)代處理器的“流水線”工作結(jié)構(gòu)。
2000年,劉衛(wèi)東參與計(jì)算機(jī)組成原理課的教學(xué)。在王誠的基礎(chǔ)上,劉衛(wèi)東對實(shí)驗(yàn)設(shè)備進(jìn)行了較大改進(jìn),采用以可編程控制器件為核心的實(shí)驗(yàn)板,以“打開向上的空間,讓硬件有能力跑起一個(gè)操作系統(tǒng)”。硬件的指令系統(tǒng)也從復(fù)雜的類x86轉(zhuǎn)換到更為精簡的MIPS和RISC-V,以更加貼近計(jì)算機(jī)體系結(jié)構(gòu)的發(fā)展前沿。同時(shí),在教學(xué)中適度引入龍芯的自主指令集,引導(dǎo)學(xué)生關(guān)注計(jì)算機(jī)硬件的行業(yè)生態(tài)。
“用好奇心去驅(qū)動,把工作做得更好。”劉衛(wèi)東說,“我想同時(shí)強(qiáng)調(diào)一些非技術(shù)的能力,比如對生活的熱愛、和現(xiàn)實(shí)中朋友的交流溝通,而不是躲在小黑屋里面編碼。技術(shù)是為人類的進(jìn)步服務(wù)的。”
這一想法不僅是在課堂上得來的,更源于劉衛(wèi)東擔(dān)任計(jì)51國防生班班主任的經(jīng)歷。
“我跟他們相處了整整4年。入學(xué)時(shí)我和14個(gè)孩子挨個(gè)兒聊了一次天。”劉衛(wèi)東說,當(dāng)時(shí)學(xué)生們的數(shù)理基礎(chǔ)不錯(cuò),也很樂意學(xué)習(xí)計(jì)算機(jī),但存在一個(gè)關(guān)鍵問題:他們不了解計(jì)算機(jī),班里有同學(xué)甚至完全沒有用過電腦。
在了解到這一情況之后,劉衛(wèi)東給他的“14個(gè)孩子們”說,首先要保證數(shù)理基礎(chǔ)“不掉隊(duì)”。然后,補(bǔ)上認(rèn)識計(jì)算機(jī)這一課,“怎么補(bǔ)?開始去編程序。”
2019年,計(jì)51班全員順利畢業(yè),讀研、工作,走上各自理想的發(fā)展道路。劉衛(wèi)東也因?yàn)閹椭鷮W(xué)生們樹立信心,以及在學(xué)業(yè)發(fā)展上孜孜不倦給予他們指導(dǎo)而獲得校級優(yōu)秀班主任。
“我希望同學(xué)們能夠通過自己的努力,為這個(gè)世界的美好和進(jìn)步作一點(diǎn)貢獻(xiàn)。”
在清華大學(xué)東主樓計(jì)算機(jī)系網(wǎng)絡(luò)研究所,硬盤讀寫的綠燈閃爍著,劉衛(wèi)東和同事們年復(fù)一年辛勤工作,為我國計(jì)算機(jī)領(lǐng)域源源不斷輸送人才,也為我國的科技進(jìn)步承擔(dān)起光榮責(zé)任、作出應(yīng)有貢獻(xiàn)。
編輯:曲田
審核:呂婷