計算機結構的教法問題
對於《計算機結構》這門課,我本人是深受《交大和台大》的毒害,從《大學一直到碩博士班》。 數位邏輯我學會了,但是《計算機結構》這樣的課,在當年交大資訊科學系是選修,我沒選,也不知道老師教些甚麼。
接著到了台大碩士班是必修,我考試都會算,但問題是我從來不知道該如何設計一顆處理器。 等到博士班了,考的還是那些,都是用 Hennessy & Patterson 的書,只是碩士班用簡單那本 (Hardware & Software Interface),博士班用較難那本 (A Quantitive Approach)
那兩本書是大師寫的,但基本上沒有設計處理器給你看,然後很快就切換到《管線、快取、多核心》等等議題 ….
雖然我考試都會寫,但其實我很心虛,處理器怎麼運作我完全無法理解 …..
十年後,當我開始要設計處理器當教材時,才發現自己設計不出來,無法用 Verilog 設計一顆處理器。
後來參考華盛頓大學的範例,設計出自己的版本,上課教學時發現沒人能聽得懂 ….
直到我去 nand2tetris 線上課程看到 Hack CPU 的教法,而且採用這門課當教材之後,我才慢慢地能讓用功一點的學生學會 Hack CPU 的設計原理。
希望我的學生們不需要像我一樣,需要困惑這麼久。希望它們能夠先學會基礎的設計,之後再去學更進階的版本,才不會總是覺得很心虛 …..
從《小巧美》的簡單版開始,你才能踏在前人的肩膀上,看得更高更遠 ….
nand2tetris 就是這樣一個《小巧美》的課程!
補充:
雖然 nand2tetris 不是那種《高大上》的課程,但絕對可以讓你的基礎很紮實,一點都不會心虛
nand2tetris曾經是哈佛大學的CS101課程