王換招,張克旺
(西安交通大學 電子與信息工程學院,陜西 西安 710049)
計算機課程體系中設置了大量的計算機系統相關課程,如數字邏輯電路、計算機組成原理、計算機系統結構、編譯原理、操作系統、微型計算機接口技術、匯編語言程序設計、嵌入式系統等。這些課程覆蓋計算機軟硬件系統的絕大部分知識,是計算機專業的主干課程,但學生在完成這些課程后,往往很難將知識有機組織在一起,形成對計算機系統的完整認知,具備相應的計算機系統分析、設計和驗證能力。
目前,計算機教學體系以知識傳授為主,忽略學生分析問題和解決問題能力的培養;各門課程講授內容陳舊,無法滿足計算機發展需求;各門課程教學內容缺乏統一目標,沒有完善的內容過渡與銜接,導致學生所掌握的僅僅是一些分散的知識點,無法對計算機軟硬件系統進行整體的理解,難以滿足計算機系統能力培養的要求。
基于OpenRISC開源處理器的系統能力培養實驗平臺,不僅能夠為計算機系統相關的課程提供貫通式的實驗平臺,而且能夠為計算機系統相關課程內容的改革提供“自上而下”的參考。由于OpenRISC平臺采用業界廣泛使用的流水RISC架構處理器、gcc編譯器以及Linux操作系統,因此相關課程以此平臺為參考改革相關教學與實驗內容,能夠實現課程間教學與實驗內容的緊密連接和過渡,使各門課程教學實驗內容有機組織在一起,為進一步培養學生的分析、設計與驗證等系統能力奠定基礎;同時,相關教學與實驗內容同業界發展保持一致,可以有效滿足社會對計算機專業的需求。
計算機系統能力是指能自覺運用系統觀,理解計算機系統的整體性、關聯性、層次性、動態性和開放性,并用系統化方法,掌握計算機硬軟件協同工作及相互作用機制的能力,包括系統分析能力、系統設計能力和系統驗證能力3個方面[1]。傳統計算機教學與實驗以知識傳授為主,對能力的培養沒有足夠的重視,最終導致學生能力普遍不強,難以滿足社會需求。結合實際教學實驗過程,我們認為目前計算機各門課程以及相應實驗存在以下問題。
首先,在課程內容方面,存在教學內容陳舊,無法滿足社會應用需求的問題[2]。例如,目前國內絕大多數學校的匯編語言課程仍然以8086為目標機器,但隨著桌面應用的成熟,對桌面應用進行優化從而使用匯編的需求不多,真正需要進行匯編級別優化的往往是基于ARM、MIPS等RISC處理器的嵌入式應用;同樣,計算機接口技術絕大多數以8086接口擴展為主,但目前發展迅速的嵌入式系統中極少采用Intel架構處理器。
其次,在教學內容銜接上,各門課程獨立規劃,造成知識點冗余或者銜接關系脫節[3]。例如,中斷技術在計算機組成原理、匯編語言程序設計、計算機接口技術和嵌入式系統中都會講解,但由于各門課程在內容上缺乏良好的銜接,學生在學習中斷技術過程時,無法區分計算機組成原理中講解的通用中斷原理與匯編語言程序設計中8086中斷系統這一特例,往往會在理解上有困難。
第三,在教學方法上,各課程采取分析式方法的較多,突出系統原理的講解,而限于條件的限制,缺乏實際系統的結合,造成學生雖然掌握基本概念,但是難以轉化對現有系統的認識。例如,在介紹系統總線過程中,一般會講解ISA等簡單總線的通信過程,但ISA總線在當前計算機中極為罕見。
最后,在實驗手段上,基本側重于孤立的原理驗證實驗,而缺乏對復雜系統的綜合設計實踐。雖然小規模實驗可以達到讓學生基本理解掌握系統運行原理和初步具備系統開發能力的目的,但是由于缺乏貫穿絕大多數課程內容的綜合性實驗,學生仍然不能貫通整個計算機系統的課程內容,掌握的僅僅是一些知識點[4]。
開展計算機系統能力培養工作,首先需要在課程體系、課程內容、實驗內容等方面進行全面改革,結合計算機發展趨勢,貫通各門課程教學內容,增加課程實驗環節,逐步提高學生的計算機系統能力。
在課程體系方面,需要對教學大綱中與計算機系統能力相關的課程進行調整,調整的思路一般為“壓縮授課學時、提高實驗實踐環節”。例如,對數字電子技術、計算機組成原理、編譯原理、操作系統原理、計算機接口技術與嵌入式系統課程學時進行壓縮,為其中的數字電子技術、計算機組成原理、編譯原理、操作系統原理設置專題實驗,讓學生有較充分的時間動手實踐。部分學校專門設置獨立的“計算機系統綜合”等專題實驗,在上述實驗基礎上,進行有方向性的計算機系統設計,提高學生的計算機系統能力。
在課程內容方面,需要對各門課程中的重復內容進行壓縮與合并,對一些比較陳舊的教學內容進行更新。
在課程體系改革過程中,相關課程教師承擔教材編寫、課件制作以及課程實驗重新調整等眾多任務,工作量大,此外,由于計算機技術的高速發展,教師需要深入了解一些新的技術或者方法相關細節,同樣需要大量時間和精力的投入,因而各門課程教師對計算機能力培養具體實現的方式存在差異,如何協調各門課程教師建立統一的課程改革目標具有較大的難度。
如果采用“先制訂目標、各門課程分別實現”這種“自下而上”的教學內容改革方法,在實踐過程中存在較大的難度。為此,我們基于OpenRISC平臺進行“自上而下”的教學內容改革,即相關課程以業界廣泛使用的OpenRISC平臺(流水RISC處理器、gcc編譯器、Linux操作系統)為基礎。
國家計算機系統能力培養工作小組提出的“一個CPU、一個編譯器、一個操作系統”方案能夠很好地體現計算機能力培養的具體方法。設計一個什么樣的CPU,編寫一個什么樣的編譯器,實現一個什么樣的操作系統是很重要的問題。選擇CPU、編譯器、操作系統的一個重要因素就是社會需求因素,也就是設計的CPU、編譯器和操作系統本身或者設計方法能夠在學生后續的就業中得到應用。
目前,CPU設計的主流是RISC處理器,使用最廣泛的編譯器是gcc,普及率最高的操作系統是Linux操作系統。如果學生在相關基本知識的基礎上,已經能夠設計簡單的RISC處理器,掌握gcc編譯器的核心機制以及移植方法,比較熟悉Linux操作系統的管理機制和驅動,就不僅能夠培養學生的計算機系統能力,而且可以為學生將來所從事的專業奠定良好的基礎。
建議選擇Open Source的RISC處理器OpenRISC作為課程體系改革的目標。OpenRISC處理器在GPL協議下開放源代碼,具有完全的開源工具鏈,其中包含gcc編譯器;Linux操作系統已經在該處理器上完成移植,并且開放源代碼。
采用免費開放的32/64bit RISC架構。用Verilog HDL(硬件描述語言)實現基于該RISC架構的RTL(寄存器傳輸級)描述。
具有完整的工具鏈,包括開源的軟件開發工具、C語言實現的CPU仿真模型、操作系統以及軟件應用所需的函數庫。
為配合基于OpenRISC處理器的實驗,我們設計了基于Zynq ZC7020的實驗平臺,該平臺以Xilinx ZC7020處理器為核心,片上資源包括85K邏輯單元/53.2K查找表和3.8M片內RAM。板上存儲資源包含32MByte 32位寬SRAM、64MByte 32位寬SDRAM和16MByte NorFlash。板上IO資源包括1個UART收發器、1個10M/100M以太網物理層、1個TFT LCD、若干組LED和撥碼開關等。
該實驗平臺包含的豐富資源可以滿足數字邏輯課程、計算機組成
原理課程、操作系統課程、編譯原理課程等核心課程,以及為計算機接口技術、嵌入式技術等專業課程提供統一的實驗平臺。
目前可以在此平臺進行的數字邏輯實驗包括:①組合邏輯實驗:譯碼器實驗、七段碼顯示管控制器設計、多路選擇器設計與實現、全加器設計與實現;②時序邏輯實驗:鎖存器與觸發器設計實驗、同步時序電路實驗;③自動機實驗;④計數器實驗;⑤寄存器堆設計實驗;⑥移位寄存器實驗;⑦計數器/定時器設計。
在此平臺上進行的計算機組成實驗包括隨機訪問存儲器RAM實驗、RISC CPU的指令擴展、RISC CPU的中斷實驗、單周期RISC CPU設計、多周期RISC CPU設計、流水RISC CPU設計和簡單SOC系統綜合實驗。
硬件實驗方面,數字邏輯實驗的譯碼器、多路選擇器、寄存器堆、移位寄存器等實驗內容與計算機組成實驗緊密銜接。編譯原理實驗主要針對OpenRISC處理器gcc編譯器展開;操作系統原理實驗主要針對運行于OpenRISC處理器的Linux操作系統的板級支持包(BSP)以及串行口、以太網等設備的驅動展開。這兩部分內容相對獨立,但都是圍繞前期設計的OpenRISC處理器展開,學生對處理器的指令集等內容都已經非常熟悉,方便將精力集中在編譯器和操作系統自身。OpenRISC架構如圖1所示。

圖1 OpenRISC架構
(1)貫通式教育。各門課程實驗內容圍繞OpenRISC這樣一個計算機系統展開,教學工作目標明確,針對性強。目標明確的貫通式教學實驗能夠調動學生的學習積極性。
(2)明確的教學與實驗目標。傳統從下向上的課程設計方法是各門課程相關教師通過討論得到一個最終的目標,但受傳統思維定勢等方面因素的影響,各門課程對最終所要實現的目標往往不明確。OpenRISC是一個比較成熟的開源系統,有成熟的編譯工具鏈和操作系統支持。在現有平臺基礎上,各門課程只需要對相關的教學與實驗內容進行設計,我們稱這種方式為“自上而下”的課程設計方法。這種設計方法的好處是可以有效減少課程之間的協調工作,而這部分工作在涉及多門課程調整時工作量巨大。
(3)面向社會需求。在處理器領域,RISC處理器占絕大多數,甚至國內外微電子企業推出基于OpenRISC的處理器產品。基于OpenRISC處理器的學習和實驗,能夠為學生打下堅實的處理器設計基礎,提高其在該領域的就業競爭力;在操作系統領域,Linux操作系統已經占據了移動終端的絕大多數市場,針對Linux的操作系統移植、驅動開發等能夠直接接軌企業需求;在編譯器工具鏈方面,gcc是目前Linux等操作系統廣泛支持的編譯環境,針對gcc以及工具鏈的移植優化人才是目前國內外企業急需的緊缺人才。
基于OpenRISC的綜合實驗平臺不僅能夠為計算機系統相關的各門課程提供貫通式的實驗平臺,而且能夠為面向計算機系統能力培養的教學改革提供參考依據。“自上而下”的方法能夠有效協調各門課程的教學內容改革,為進一步提高計算機系統能力培養奠定基礎。在此基礎上,我們將詳細設計和規劃各門課程的教學與實驗內容,順利完成計算機系統能力培養的課程改革任務。
參考文獻:
[1]劉衛東, 張悠慧, 向勇, 等. 面向系統能力培養的計算機專業課程體系建設實踐[J]. 中國大學教學, 2014(8): 106-107.
[2]何靜媛, 朱征宇. 高校計算機專業實踐教學改革研究[J]. 計算機教育, 2010(2): 25-27.
[3]趙若陽, 李寧, 庫少平. 計算機硬件課程體系及內容改革的思考[J]. 計算機教育, 2006(3): 47-49.
[4]崔永利, 李妍. 計算機硬件實驗教學改革與實踐[J]. 實驗室研究與探索, 2006, 25(3): 361-362.