摘 要:實驗是“計算機體系結構”課程教學的重要環節,能夠有效輔助學生對課堂教學中各個關鍵問題的理解與掌握。文章系統分析課程的各個知識點,探討適合每個知識點的實驗方式,提出十五個實驗模塊。在實施教學時,可以為不同培養類型和知識結構的學生指定適合的實驗模塊。文章最后提出了若干與強化實驗教學有關的問題。
關鍵詞:計算機體系結構;實驗教學;模擬;仿真
1 背景
“計算機體系結構”(以下簡稱“體系結構”)是計算機科學與技術專業計算機工程方向的一門重要課程,它強調從系統級的角度介紹計算機的組成和相應軟硬件模塊的設計與實現方法。通過課程學習,學生能夠深入理解和掌握計算機系統的軟硬件接口、各項性能指標、系統性能的基本分析方法,以及為了達到最佳性能、最佳性價比、最佳性能功耗比等不同設計目標所應采用的軟硬件設計技術。
除了課堂講授,實驗也是該課程教學的一個重要環節。通過實驗,能夠有效地加深學生對課堂上所學習的各個關鍵知識點的理解與掌握。以2010年研究生入學考試的第44題為例:
44. 某計算機的主存地址空間大小為256MB,按字節編址。指令和數據Cache分離,均有8個Cache行,每個Cache行大小為64B,數據Cache采用直接映射方式。現有兩個功能相同的程序A和B,其偽代碼如下所示:…(略)
假定int類型數據用32位補碼表示,程序編譯時i、j、sum均分配在寄存器中,數組a按行優先方式存放,其地址為320(十進制)。請回答,要求說明理由或給出計算過程。
(1) 若不考慮用于Cache一致性維護和替換算法
的控制位,則數據Cache的總容量為多少?
該題第(1)問主要考察學生對“數據Cache中存放了哪些數據和控制信息”這一知識點的掌握情況。能夠正確回答該問的同學并不多,因為絕大部分同學都忽視了valid bit和dirty bit這兩個重要信息。
我們對我院2007級的部分本科生進行了調查,讓他們獨立完成該題。參加調查的學生都系統地學習過Cache的相關知識,并進行過16位CPU的設計實驗,但其中一半同學僅設計實現了基本指令流水線,另一半同學還完成了分離的一級指令Cache和數據Cache設計。
從調查結果來看,完成了Cache設計的同學回答正確率遠遠高于另一部分同學,他們認為實驗有助于加深他們對這一知識點的理解與掌握,并且效果明顯。
在Hennessy和Patterson推出了《計算機體系結構:量化分析方法》[1]這一經典教材后,量化研究方法已經成為當前計算機體系結構教學和相關研究所采用的基本方法。這進一步增加了計算機體系結構實驗的重要性,學生通過實驗掌握性能數據的收集和分析方法。因此,加強實驗建設,充分發揮實驗作用已經成為高水平計算機體系結構課程建設必須完成的重要任務。
作者簡介:沈立,男,副教授,研究方向為計算機系統結構、編譯技術、虛擬化技術;張春元,男,教授,研究方向為計算機系統結構;王志英,男,教授,研究方向為計算機系統結構。
目前進行體系結構實驗主要有軟件模擬和硬件仿真兩種形式,雖然二者在功能上基本等效,但由于抽象程度不同,它們所反映出的實現細節也不相同。以Cache子系統設計實現為例,無論是軟件模擬還是硬件仿真都可以反映出valid bit和dirty bit等控制信息所占用的存儲容量;而在動態指令調度的相關實驗中,雖然通過兩種方法都能夠得到動態調度帶來的性能加速,但硬件仿真方法能夠更準確地反映出實現該機制所需的開銷。
筆者從以下三個方面介紹在該課程實驗教學方面所作的工作:首先,在分析該課程各知識點的特點以及其是否適合進行實驗的基礎上,我們設計了15個實驗模塊;其次,探討了如何為不同培養類型和知識結構的學生選擇合適的實驗模塊,以及在組織和實施實驗教學方面采取的措施;第三,提出若干值得思考的問題。
2 課程知識點分析
在進行實驗教學時,應針對不同的教學目標采取不同的實驗模式。一般說來,對于那些以理解掌握成熟的模型、協議、算法等為主要目標的知識點,如Cache一致性協議,往往以驗證性實驗為主;而對于那些以熟練使用某種方法解決實際問題為主要目標的知識點,如Cache的結構和優化方法,往往以設計性實驗為主。
下面以我們正在使用的教材[2]為主,結合國內外其它有影響力的教