陳海波 王占全 梁道雷
摘 要:翻轉實驗,又稱為自主實驗,是指在實驗實施過程中有意缺失部分實驗環節和實驗素材,要求學生自己設計、補全實驗環節,并開發、收集相應的實驗素材,最終相互交付完成實驗操作。在《計算機組成》實驗課程中,作者設計并實現了以MIPS指令為核心的自主仿真實驗系統,基于該系統,進行了《計算機組成》翻轉實驗的教學設計和實踐探索活動;在活動過程中,為了檢驗和完善這種新型實驗方法的成效,分別在三個不同的專業開展了不同的對比性實驗教學。三年來的翻轉實驗教學實踐過程表明,通過合理的自主仿真素材設計和教學引導教案設計,能夠有效提升學生的知識結構,在加深學生知識掌握程度的同時,也提升了軟件系統設計能力,實驗效果既優于以往的硬件實驗,也優于(非自主)軟件仿真實驗。
關鍵詞:MIPS;計算機組成;翻轉實驗
中圖分類號:G642 文獻標志碼:A 文章編號:1673-8454(2018)24-0022-05
一、引言
《計算機組成》課程是我國計算機科學與技術專業、自動化專業等的基礎必修課程之一。該課程以《數字電路》《匯編語言》為先修課程,主要圍繞計算機硬件的內部構造和工作機制開展教學,旨在讓學生掌握現代計算機的內部工作原理,為計算機系統的工程設計實踐打下基礎,同時加深學生對軟件運行原理的理解,提高學生的軟件設計和調試能力。《計算機組成》課程注重實踐,理論教學與實驗教學的比重一般為2∶1到4∶1之間,有些學校還有配套的課程設計,可見課程對學生動手能力要求是比較高的。
實驗教學按照目標和方式不同可以分為以下幾類:①部件驗證型實驗。這類實驗要求學生在專用實驗儀器上以操縱開關的方式模擬特定部件的狀態變化,達到加深理論知識學習的目的。實驗操作簡單易于開展,也是國內《計算機組成》課程實驗開展最普遍的形式。②綜合性設計型實驗。采用VHDL等硬件設計語言自行設計計算機部件、指令系統,并基于FPGA開發板完成硬件的開發。這類實驗要求學生具備一定的自學能力和知識綜合運用能力,難度較大,一般分多個階段實驗完成。③軟件仿真實驗[2]。使用軟件替代傳統的計算機組成實驗箱儀器,學生的實驗操作是在可視化軟件上完成的。如基于Multisim仿真軟件開展的計算機組成實驗[3]。由于實驗箱儀器維護和更新繁瑣,且隨著越來越多的非計算機專業也開設《計算機組成》課程(如軟件工程、信息與計算科學等專業),軟件仿真實驗也越來越普遍。
在教學實踐中,三種實驗方式都存在一定的不足,部件驗證型實驗過程容易流于形式,學生自主性不強,只有少數學生能夠將現場操作與前面的理論知識關聯起來;綜合設計實驗只能在課時充裕的情況下開設,且需要學生對先修課程掌握較好;軟件仿真實驗主要針對不具備硬件實驗條件或者軟件專業的學生開設,具有節約教學成本的作用,但是會弱化學生硬件設計與開發能力。
筆者近十年來分別為計算機科學與技術專業、信息與計算科學專業、應用數學專業本科生開設《計算機組成》課程,以上三類實驗課程在不同的教學環節都有所嘗試。其中信息與計算科學專業、應用數學專業本身側重軟件、算法和架構,實驗課程開設基本以軟件仿真實驗為主。因此,針對不同專業特點設計了不同實踐教學內容,包括部件驗證實驗、綜合設計實驗、軟件仿真實驗[4][6]等環節,通過調查、成績對比等手段,發現這些教學方式的實際成效基本相當,不存在顯著差異。
自2015年開始,進一步針對軟件仿真實驗進行深化教學改革,針對信息與計算科學專業和數學專業學生開發了基于MIPS指令的自主仿真實驗系統,并由原來的仿真實驗改成了翻轉實驗[1][5],即以現有仿真系統和硬件器材為原型參照,要求學生自己補全缺失的實驗環節和仿真模塊,然后相互交付給同學完成實驗操作。近三年的教學實踐過程表明,通過自主實驗內容的合理設計,自主仿真實驗能夠使得學生在知識理解、參與度、綜合運用能力等方面都有所提升,教學質量有所提升。2017年開始將自主仿真實驗拓展到其他學校和其他專業,也取得了較好的效果。
二、基于MIPS指令的自主仿真實驗系統設計
1.系統構成
基于MIPS指令的自主仿真實驗系統由三個部分組成,如圖1所示。
其中MIPS指令硬件仿真模型由總線、控制器、運算器、存儲器、時鐘信號發生器等硬件的軟件仿真模塊,以及二進制運算等基本模塊構成,是實驗系統的核心模塊,這些模塊可以構成一個完成的虛擬機運行子系統。
為了能夠進一步配合翻轉實驗的開展,進一步設計了MIPS指令程序的運行子系統,根據實驗開展的難度情況,提供編譯子系統和解釋子系統兩個不同的子系統,每個子系統可以拆解為若干個子模塊。
可視化控制子系統提供基于網絡通信的遠程實驗系統控制界面環節,允許實驗子系統后臺服務執行,操作過程可以控制MIPS指令的單步執行和順序執行方式,可以直接查看到實驗系統中各個仿真部件的內部狀態。
為了滿足翻轉實驗實施的需要,整個系統設計為組件化,是可拆解的,具體實驗實施過程中會讓其中某些軟件模塊缺失,學生自己根據翻轉實驗要求設計和開發相應模塊單元,這就要求整個實驗系統滿足統一的可插拔標準設計規則,因此系統整體結構基于抽象工廠和建造者模式構建,圖2給出了軟件模塊的抽象構成,具體實現則可以由學生自行替換。
這些抽象構成包括構建者模塊(Builder)、抽象芯片模塊(Chip和IChip芯片)、抽象硬件模塊(IHardware)、器件模塊(IParts)。具體實現的主要難點和核心是MIPS指令執行CPU的設計。CPU執行指令時通過程序計數器來控制,約定控制器的狀態有空閑狀態、取指令狀態、指令執行狀態。如果狀態為取指令狀態,那么在節拍器上升時去執行取指令操作;如果狀態為執行狀態,那么在節拍器下降時去執行指令。其實現結構如圖3所示。
2.實驗系統功能和結構
翻轉實驗實施過程與實際指令分解執行的過程基本相當,被分解為四個步驟完成,包括:①內存模塊初始化。內存模塊通過總線掛載到CPU上,根據內存的工作原理,實現內存尋址、內存傳輸。內存的引腳對應著節拍信號,CPU向內存寫入地址時,此時引腳對應的節拍信號是寫信號。②總線模塊實現寫入程序地址和數據,讀取線路上的數據,告知其他連接在總線上的器件,并且可加載其他功能器件等。③CPU模塊主要通過總線加載運算器、控制器、內存、緩存及實現它們之間聯系的數據,其運作過程分別為Fetch(提取)、Decode(解碼)、Execute(執行)、Writeback(寫回)。④零部件模塊(ALU等)完成算術邏輯運算如加減乘除、與或非異或等一系列運算功能,高速緩沖存儲器實現數據暫存功能,通用存儲器存儲數據,程序計數器計算并指向下一條指令地址,譯碼器根據得到的數據譯碼,緩存暫存CPU運算數據。
以上實驗過程可通過可視化界面來導入程序和數據,運行或者控制仿真系統執行過程,如圖4所示。
三、基于MIPS指令仿真系統的翻轉實驗實踐探索
1.實施前的實驗評價
2007-2014年之間的《計算機組成》教學中,針對計算機科學與技術、信息與計算科學、應用數學三個不同的專業采用了不同的實驗內容和形式,其中計算機科學與技術專業每學年約40-60人,開設的實驗包括運算器部件實驗、存儲器部件實驗、微程序控制器部件實驗、多級嵌套的中斷實驗,實驗器材采用多種型號的實驗箱。信息與計算科學專業和應用數學專業每學年約70-90人,開設的實驗包括74LS181運算和邏輯實驗、單片機仿真設計實驗、單片機應用實驗,實驗在Multisim仿真軟件系統上完成,不需要硬件器材。
對這兩種不同的實驗教學方式進行比較,比較的主要依據是2012-2014年三年間學生期末考試成績,用于了解學生知識點的掌握情況,后者用于了解教學過程質量水平。圖5為計算機科學與技術專業的知識點考核錯誤率,圖6為信息與計算科學專業和應用數學專業知識點考核錯誤率,筆者對數據進行了歸一化處理,可以看出,信息與計算科學專業學生的知識掌握程度要稍微弱于計算機科學與技術專業學生,但總體水平差異不大。
2.翻轉實驗內容設計
2015年開始對信息與計算科學專業、應用數學專業的《計算機組成》課程進行了試驗性改革,改革的主要形式是實踐課程的翻轉實驗[6][8]。開始僅要求學生自主仿真總線系統,逐步擴展到CPU、內存和指令系統多個環節,目前已經可以實現芯片級的MIPS指令仿真硬件系統由學生自主設計完成。為了配合進一步的翻轉實驗教學,在理論教學方面也進行了課時和內容的調整。
(1)理論教學的調整
①培養自主學習認知水平[7][9]:在學期開始就向學生強化自主仿真教學的實用意義和最終能取得的成就;在每一章授課開始時先演示已有仿真系統的操作,并布置需要完成的仿真設計和開發任務。整個理論知識教授過程中都帶有明顯的目的性,讓學生認為理論知識是基礎,重點是如何運用理論知識完成仿真任務。在教學過程中,每周會抽出15分鐘時間對仿真任務的難點進行講解和討論。從實際教學情況看,這些教學方式調整是十分必要的。
②調整理論和自主學習課時比例:《計算機組成》課程的知識體系是按照計算機組織結構由一般到復雜的順序組織的,分為基礎知識、系統總線、存儲器、輸入輸出系統、運算方法、指令系統。每部分知識點都設置一部分自主學習的課時比例,要求通過自主學習完成自主仿真實驗的設計。
(2)翻轉實驗內容
自主仿真實驗分為若干個實驗模塊,基本上平均地分配在各章節知識點中,如表1所示。
按照由易到難的原則,共有6個自主仿真實驗,第一學期只用了其中的3個,逐步擴展到其中5個,基本涵蓋了計算機組成原理的主要內容。6個自主仿真實驗被分成3組,要求學生按照組來遞交實驗成果,成果包括自主開發的仿真程序和實驗實施報告。
①BIT和Binary運算實驗的主要內容是采用面向對象軟件開發的方法實現二進制位和二進制數的基本運算,實驗實施目標為學生開始具備熟悉面向對象封裝的實際經驗,以及必要的二進制數運算知識。該實驗設計與計算機組成的知識點關系并不密切,主要面向信息與計算科學和應用數學兩個專業學生開設。
②MIPS指令系統解釋器試驗分為兩步,首先要求學生根據MIPS指令集(可以修改和簡化)編寫斐波那契數列實現程序,進一步要求學生自主開發解釋器系統執行程序,其中涉及到CPU寄存器和內存存儲,都只是要求簡單地采用數組代替,因此該實驗設計的主要目標是熟悉MIPS指令系統,具備初步的指令系統設計能力。
③系統總線與時鐘信號控制實驗要求學生用軟件仿真實現板集總線的信號(同步)傳輸過程,能夠顯示出系統總線的數據傳輸狀態和掛接的芯片名稱。該實現設計的主要目標是使得學生理解系統總線傳輸過程時鐘同步信號的作用,以及系統總線的基本分類。
④內存工作仿真是自主仿真實驗的難點,實驗要求學生用軟件實現內存存儲芯片的引腳封裝,結合已經實現的系統總線,通過MAR和MDR寄存器仿真數據的存取操作,進一步實現內存組相聯cache的仿真功能。實驗目標是形成對存儲器工作原理的感性認識,加深對cache工作細節的理解。
⑤中斷控制器實驗要求學生自主仿真實現單片Intel8259中斷控制器,能夠仿真中斷向量的形成過程。實驗目標是掌握中斷控制器和CPU之間的工作過程。由于受到課時限制,該部分實驗實際沒有開展。
⑥CPU和控制器運行仿真實驗,是所有自主仿真實驗的重點和難點,實驗內容要求完成寄存器、ALU、組合邏輯控制器的軟件仿真,并能夠讓MIPS指令系統解釋器實驗中的斐波那契數列程序正常運行。實驗目標是促成學生理解CPU是如何執行各類指令的運行原理。
所有翻轉實驗連接成整體實際上構成一個完整計算機,涵蓋的知識點比較齊全。內容設計目標還考慮提升學生軟件開發的能力和經驗,這個目標主要是針對信息與計算科學和應用數學兩個專業的。此外自主仿真實驗內容是否合理還有一個關鍵性因素——仿真硬件的粒度,最理想是能夠仿真到門電路級別,限于課時、講師和學生能力,目前無法達到,因此實驗內容設計只要學生將芯片內部看成無結構的黑箱,只要實現芯片的輸入輸出就可以。對于翻轉實驗中“缺失”的部分,選擇了其中相對獨立、與理論教學知識點比較密切的幾個方面,如圖7所示。
其中虛線框部分為需要進行“翻轉”的實驗部分,整個實驗要求圍繞“斐波那契數列數據前n位值”程序的設計、開發、運行為主線,要求完成算法編程、指令驗證、虛擬計算系統執行過程,而對于虛擬計算系統中缺失的部分,則需要由各實驗組自主完成。
3.翻轉實驗成效
對于翻轉實驗實施成效,主要從對知識點考核成績方面進行分析??己税ɡ碚摽己撕蛯嶒灴己藘蓚€部分。由于翻轉實驗對學生的自主學習能力有較高的要求,在實驗考核部分也設計了一種基本難度等級的靈活性實驗組合選擇,如表2所示(部分)。
對2015-2017年實施自主仿真實踐教學改革以來學生知識點掌握情況進行了分析,分析的主要依據是三年來期末考試成績的知識點得分率(知識點平均得分/知識點總分值)。數據進行了歸一化處理,如圖8所示,可以看出,采用自主仿真軟件實驗后,指令系統的知識點得到了明顯提高,總線和內存知識點的掌握也有了一定程度的提高,CPU控制器部分則無明顯變化。
對實驗教學方式進行比較,比較的主要依據是2012-2014年三年間學生期末考試成績,用于了解學生知識點的掌握情況,后者用于了解教學過程質量水平。圖5為計算機科學與技術專業的知識點考核錯誤率,圖6為信息與計算科學專業和應用數學專業知識點考核錯誤率,對數據進行了歸一化處理,可以看出,信息與計算科學專業學生的知識掌握程度要稍微弱于計算機科學與技術專業學生,但總體水平差異不大。
翻轉實驗系統和實施都是《計算機組成》課程改革的一步創新,是近幾年來數位教師花費了很多心思并付出努力得到的一些成果。下一步應在鞏固這個教學成果的基礎上,進一步提高實驗的效率和考核標準。此外,自主型實驗是否可以在其他課程上采用,以形成一種教學的創新模式,是今后需要研究和嘗試的重要方向。
參考文獻:
[1]Strayer J F.How learning in an inverted classroom influences cooperation,innovation and task orientation[J].Learning Environments Research,2012,15(2):171-193.
[2]王超.基于仿真實驗的計算機組成原理考核方式改革研究[J].計算機教育,2016(3):146-148.
[3]陸明洲,何菊.基于Multisim的計算機組成原理實驗仿真[J].實驗技術與管理,2007(12):94-98.
[4]周克峰,楊軍,孫靜,謝戈.計算機組成原理實驗的仿真技術研究[J].云南民族大學學報(自然科學版),2004(3):236-240.
[5]李娟,梁英杰,郭暉.以自主學習能力培養為目標的計算機基礎教育[J].計算機教育,2016(2):79-81+89.
[6]葉愛敏,王佑鎂.嵌入微課程的翻轉實驗教學模式構建與應用——基于《現代教育技術》實驗教學的實踐探索[J].中國教育信息化,2016(4):28-31.
[7]馬秀麟,趙國慶,鄔彤.翻轉課堂促進大學生自主學習能力發展的實證研究——基于大學計算機公共課的實踐[J].中國電化教育,2016(7):99-106+136.
[8]范士杰,王振杰,彭秀英.基于自主學習理念的GPS課程實踐教學改革[J].實驗室研究與探索,2016,35(1):146-149+201.
[9]張俐,張霞,靳燦燦等.大學生自主學習能力的培養模式研究[J].中國高等醫學教育,2016(2):36-37.
(編輯:魯利瑞)