清華貴系的 期末大作業:奮戰三週,造臺計算機 !!!
作者 | 蔣寶尚
編輯丨陳彩嫻
本科大三,正在學習計算機組成原理,能做個什麼專案?
清華大學貴系說:造臺計算機吧!
清華有門本科三年級必修課,名為《計算機組成原理》,據說要想順利結課,拿到合格的成績,必須在期末造一臺“計算機”。
這門課包括理論課和實驗課。理論課主要講解計算機各元件的基本工作原理和其協同執行關係,以及程式是如何在計算機硬體上執行的。 而在實驗方面,則需要完成5次小實驗,以及最終的大作業——“奮戰三星期 做臺計算機”!
對於此項作業的難度,授課老師輕描淡寫地說道:“我一直認為這門實驗課是我們系比較容易的課程之一。”
而課程的具體要求是:在三週時間內寫出一個功能完整的CPU,並將其“燒寫”進老師提供的實驗板中,從而能夠執行一套程式。據介紹,在如今的線上雲實驗條件下,同學們只要點選“上傳”按鈕就能實現自動“燒寫”。
換句話說,有了CPU的寫入,一塊實驗板就變成了一臺真正的計算機。據課程實驗課老師李山山介紹,“我們的基本要求是同學們做出的CPU能執行一套監控程式,它是用來協助執行程式的程式,匯入實驗板記憶體後,可以透過執行測試程式檢測同學們做出的CPU執行是否正確。同學們造出的CPU需要透過效能測試、額外指令測試等各類測試才算成功。”
難度:目前正在學C++的11歲姑娘可以試試?
但是,正如清華貴系老師所言那樣,作業三週就能做出來,並且一點都不難麼?在清華大學官方微信下有網友留言問:
我想讓我11歲的閨女試試這個專案,她目前在學C++,給她一年時間夠不夠,當然需要她的老師來指導她。我是計算機小白,但是為什麼我看著不怎麼難,能跟我打個比方形容難度嗎?要是很難我就給她三年的時間試試。
有網友回應:
做這個實驗的前期必修課程包括(但不限於)離散數學,訊號處理原理,資料結構,程式設計,作業系統,數位電路…
還有網友在自己任教的大學做了一次實驗:
當年我們年級選了八組同學做新的FPGA機器THU Union+,要自己找合適的指令集,自己寫監控,真·小白鼠啊,印象特別深刻:
1. 新機器還不老麼穩定,跑個跑馬燈也會死,找老師老師查了一圈說:嗯,這邊有個拉桿電阻阻值不對……
2. 自己找指令集,我綜合當時的硬體配置選了MIPS16e,據說後來成為了造機主流指令集,直到配置提高之後逐漸被MIPS32和RISC-V代替;
3. 印象最深的一次調bug:簡單程式都OK,漢諾塔會跑飛,單步除錯了一整晚發現是記憶體高地址有段區域有問題,讀出來的內容跟寫進去的不一樣,而我們剛好選了那塊地方做堆疊……
也有網友表示,這門課程對以後工作有著非凡的意義:
非計算機專業畢業,現在工作會遇到文中提到的各種cpu、fpga、flash、燒寫軟體等問題,由於對原理和整體系統不瞭解,感覺所有認知和經驗都浮於表面,所以在考慮要不要自己也來造一臺?就當學習了。
不過,得益於清華大學的強大的課程教師團隊以及清華學子的天賦與努力。都交出了滿意的答卷。
整個過程並沒有像老師說的那樣:“不難”。據參與的劉同學介紹:“和之前學習的軟體相比,硬體除錯真的很痛苦。”所需的工作量是:他們3人一組做出CPU一般需要200-300小時,一共寫了3560行程式碼。
據介紹,2020年秋季學期一共有242位同學選修了“計算機組成原理”,課程安排了計算機系劉衛東教授、陳康副研究員、陸游遊副教授三位理論課老師,實驗課老師李山山,以及六位助教。也就是說,為了讓242位同學順利拿到成績,清華配備了強大的教師天團。
另外,在實驗課上,每位同學都會介紹自己對計算機的構思,老師們、助教們以及上一屆的熱心同學都會在課上及課後和同學們一起討論其構思的可行性。
為了同學們操作方便,課程教師“天團”還開發了“虛擬實驗板”,上面的按鈕都可以用滑鼠點選控制,可以透過線上平臺把寫好的程式碼‘燒寫’到其中某一塊實驗板上。
實驗器材是老師們為這門課專門開發的。據李山山介紹:“從早期的小規模晶片連線,到後來的可程式設計器件FPGA,再到現在的線上雲實驗。這項大作業的實驗模式和內容都在持續更新。”
最後,完成《計算機組成原理》課程的所有同學,都會得到一份紀念物:
END