來源 | 書圈
作者 | 蔣寶尚
編輯丨陳彩嫺
本科大三,正在學習計算機組成原理,能做個什麼項目?
清華大學貴系説:造台計算機吧!
清華有門本科三年級必修課,名為《計算機組成原理》,據説要想順利結課,拿到合格的成績,必須在期末造一台“計算機”。
這門課包括理論課和實驗課。理論課主要講解計算機各組件的基本工作原理和其協同運行關係,以及程序是如何在計算機硬件上運行的。 而在實驗方面,則需要完成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、燒寫軟件等問題,由於對原理和整體系統不瞭解,感覺所有認知和經驗都浮於表面,所以在考慮要不要自己也來造一台?就當學習了。
不過,得益於清華大學的強大的課程教師團隊以及清華學子的天賦與努力。都交出了滿意的答卷。
例如,有的學習小組實現了視頻輸出:把許多圖片寫到flash裏,每隔一段時間播放一張,放快一些就變成了視頻。
再例如,有的學習小組視線裏康威生命遊戲:每一個時刻細胞都會根據當前周圍八個格子內有無細胞,按照某一規則確認下一個時刻這個細胞是否存活。
還有Windows操作系統的logo,據悉完成這個項目的同學來自數學系,他的另外兩個隊友分別來自土木系、航院。造機所需要的編譯原理、硬件描述語言、數字邏輯電路等基本知識都是現學的。
整個過程並沒有像老師説的那樣:“不難”。據參與的劉同學介紹:“和之前學習的軟件相比,硬件調試真的很痛苦。”所需的工作量是:他們3人一組做出CPU一般需要200-300小時,一共寫了3560行代碼。
在知乎上,也有網友從另一個方面指出了困難之處:硬件的設計思想跟軟件還是有點差別,特別是調試起來,非常蛋疼。再加之貴系大三課業繁重,三週的時間便成為了很多人熬夜最為頻繁的日子,甚至留下“出校開房調板子”的佳話。
圖注:計算機系計網聯合小班同學和助教
據介紹,2020年秋季學期一共有242位同學選修了“計算機組成原理”,課程安排了計算機系劉衞東教授、陳康副研究員、陸游遊副教授三位理論課老師,實驗課老師李山山,以及六位助教。也就是説,為了讓242位同學順利拿到成績,清華配備了強大的教師天團。
另外,在實驗課上,每位同學都會介紹自己對計算機的構思,老師們、助教們以及上一屆的熱心同學都會在課上及課後和同學們一起討論其構思的可行性。
為了同學們操作方便,課程教師“天團”還開發了“虛擬實驗板”,上面的按鈕都可以用鼠標點擊控制,可以通過在線平台把寫好的代碼‘燒寫’到其中某一塊實驗板上。
實驗器材是老師們為這門課專門開發的。據李山山介紹:“從早期的小規模芯片連線,到後來的可編程器件FPGA,再到現在的在線雲實驗。這項大作業的實驗模式和內容都在持續更新。”
最後,完成《計算機組成原理》課程的所有同學,都會得到一份紀念物:
圖片來自清華大學
END