張冬雨
(中山大學計算機學院,廣州510006)
“雙一流”學科建設項目的實施,標志著繼“985工程”“211工程”之后中國高等教育水平進入了一個新的階段。通過“雙一流”學科建設,可以培養出一大批具有較強創新能力,并且能夠積極參與社會經濟建設與發展的人才,從而為建設創新型國家和人才強國戰略服務[1]。
“雙一流”建設對高校計算機專業課程的教學提出了新的挑戰[2]。《計算機組成原理》是高校計算機相關專業的重要核心課程之一,其課程的內容是計算機課程體系中最重要的組成部分之一。通過該課程的學習,學生可以掌握計算機硬件系統各部件的內部結構和基本工作原理,為后續課程的學習打下良好基礎[3-5]。在“雙一流”學科建設的背景下,為了提升課程的教學質量,解決學生理論知識有余、實踐能力不足的問題,學習、借鑒國內相關大學的教學實踐[6-8],《計算機組成原理》綜合實踐課程進行了一系列的探索。
處理器的設計是《計算機組成原理》實踐中最重要的實驗內容,通過該實驗學生能夠將組成原理課程中介紹的關于運算器、存儲器、寄存器、數據總線、地址總線、數據線復用、控制器等各個部分的知識融會貫通,是一個綜合性、創新性的實驗。然而通過多年實踐教學發現,在進行處理器設計時,大部分的學生往往是理論上比較清楚,但是實際動手時卻不知道從哪里開始。通過觀察發現,學生們的主要問題是對計算機系統設計能力比較欠缺。一方面是平時接觸比較少,缺少實際的操作經驗;另一方面是對設計任務抽象、規劃能力不足。為解決上述實踐中的問題,《計算機組成原理》設計綜合實驗課劃分為兩個部分,即理論課和實驗課。理論課6學時,主要講解理論知識,包括如何劃分處理器的基本模塊以及各個模塊的功能、輸入輸出接口、數據通路的實現等等;實驗課為54學時,主要由學生動手實驗,實際設計處理器的各個不同模塊。設計與仿真環境使用Xilinx ISE軟件,驗證環境使用專用的FPGA實驗平臺。
在實驗設計上根據處理器的主要功能,課程組將實驗分成了不同的模塊,便于將設計任務分解、細化。實驗指導書總體介紹處理器的整體設計過程,然后講解各模塊的具體的功能,最后介紹模塊仿真和整體仿真驗證方法。一般來講,指令的執行過程分為取指、譯碼、執行、訪存、寫回等五個階段。每個階段的作用如表1所示。

表1 指令執行的一般過程
對應指令的執行過程,在實驗內容設置方面,將處理器實現劃分為不同的基礎實驗模塊,如表2所示。各個模塊間通過信號連接,構成數據通路。通過實現各個基礎的模塊功能最終組合出完整的處理器功能。各模塊的具體實現可根據學生情況,完全由學生利用VHDL語言實現。學生在實驗中可以逐個模塊實現與仿真。

表2 處理器實驗模塊劃分與設計功能
在完成上述實驗后學生就完成了簡單的處理器的設計,并且對計算機組成原理課程中所學的取指、訪存、回寫等過程的數據的流通方向,以及指令的詳細執行過程有更加清晰的認識。通過實驗,學生也掌握了如何使用計算機輔助軟件,如Xilinx ISE進行處理器設計。在此基礎上,鼓勵學生進行指令的擴展實驗,優化與完善處理器的功能,比如設計實現流水線的功能等。
教學內容圍繞著處理器的指令集、運算器、存儲器、程序計數器、輸入輸出接口的設計,通過模塊化的分解實驗,從簡單到復雜,從單一功能到多功能的實現,一步一步幫助學生掌握處理器的設計方法,并熟練掌握硬件設計語言以及相應設計軟件的開發和調試手段。
(1)教師課堂講授模塊化的處理器設計方法,在此時可以將最基本的各個不同功能模塊功能及實現原理進行說明。
(2)利用幾個簡單的驗證性實驗,讓同學們熟悉VHDL硬件編程語言以及相關軟件Xilinx ISE的使用、調試、下載等方法。
(3)由學生自行確定所需要的功指令集的設計。作出設計的初始方案,然后同指導教師討論。指導教師此時要對學生的方案進行評估,指出方案中可能存在問題的地方,提出改進意見。
(4)利用軟件進行仿真。借助計算機輔助設計軟件Xilinx ISE進行各個功能模塊的仿真實驗,實現各單元模塊的設計。實驗指導教師分多次驗收,檢查學生設計的功能是否正確,了解學生對知識的理解掌握程度,指出設計中需要改進的方面,解答學生在設計過程中的疑問并評定階段成績。
(5)綜合調試與驗證,實現最初的設計需求。在FPGA實驗平臺上下載仿真完成的代碼,分模塊調試、驗證功能是否正確。此時實驗指導教師綜合考察學生的實驗結果,解答其在調試過程中的疑問,并根據實驗的完成質量評定階段成績。
(6)學生展示設計的成果,介紹自己實現的處理器的功能,以及設計方案的實現過程。同時需要將設計過程、調試過程中遇到的問題、解決的方法與經驗總結成實驗報告。實驗指導教師綜合學生的表現并結合各階段成績給出學生實驗的最終成績。
(1)《計算機組成原理》設計綜合實踐課程注重對學生綜合素質的培養,鼓勵開拓創新。本實驗可以自行設計指令集,學生可以在基礎的實驗上加入新的指令,實現新的功能,大大增加了實驗的趣味性與創新性。
(2)以處理器為核心把硬件的編程與軟件的仿真聯合起來。學生通過不斷的學習與改進把以往學過的碎片化知識集成起來,對計算機系統有了更加深刻、更加整體的理解。
(3)分階段進行實驗的驗收和成績評定的方式提供了更多的靈活性,也提高了學生主動學習的熱情。通過現場交流和實驗指導教師的把關,能夠充分保證學生在遇到問題時可以及時地得到老師的幫助,從而能夠順利地進行實驗,進一步提高學生實驗的積極性。
(4)學生們在實驗的過程中會不斷的遇到問題,思考問題產生的原因,努力解決問題。通過這種方式可以培養學生的科研探索精神;通過現場的講解與展示,學生的表達能力也得到提高。
《計算機組成原理》是實踐性非常強的一門課程,處理器的設計實驗能夠綜合考察學生對該課程內容中不同部分的理解程度。《計算機組成原理》綜合實踐課程經過不斷地探索和實踐,提出了模塊化實驗的設置,同時采用了分不同階段驗收,結合實驗教師的啟發式指導的教學模式,極大地增強了學生對實驗的興趣。學生們普遍認為這門實踐課程對他們理解整個計算機系統非常有幫助,能夠將以往學習的專業課知識有機的整合起來,為后續計算機體結構等專業課程的學習打下了堅實的基礎。《計算機組成原理》綜合實踐為高校實驗教學提供了有益的借鑒。