左冬紅 楊宇寬







關鍵詞:匯編指令;線上實驗;自動校驗
線上教學作為互聯網信息技術發展的產物,應用于理論課程非常普遍,在一定程度上緩解了教育發展的地域不平衡問題。實驗教學不同于理論教學,需提供針對實驗課程個性化的實驗環境以及實驗過程中所遇個性化問題的解決方案,因此線上實驗教學發展速度較慢。但線上實驗具有以下優點:1) 不受時空限制;2) 不受實驗環境困擾;3) 可利用計算機輔助實驗結果檢驗、實驗數據記錄、統計、分析,有效減輕實驗教學人員工作量[1]。因此,業界仍致力于線上實驗教學系統的研究[2-5]。
國內線上實驗實踐教學平臺EduCoder,作為支持計算機專業課程線上實驗實踐的教學平臺[6],通過與計算機專業課程任課教師共同研發,構建了大量線上實驗實踐教學課程[7-12]。但存在以下問題:1) 若需開設新的線上實驗課程,需要聯系平臺后臺研發人員構建新的實驗環境;2) 平臺評判實踐結果輸出為純文字,用戶體驗不友好。因此,線上實驗教學目前流行做法仍然是一課一系統。如近年來教育部及各高校普遍重視虛擬仿真實驗建設,建設了一批國家級虛擬仿真實驗中心及虛擬仿真實驗教學項目,為實驗課在線授課儲備了硬件設施和教學資源[13]。
微機原理課程MIPS匯編指令教學目標分為:1) 理解指令架構與硬件電路之間的關系;2) 理解C高級語言結構化語句與匯編指令之間的關系;3) 具備利用匯編指令解決實際問題的能力。鑒于此,設計并實現了MIPS匯編指令線上教學實驗系統,它支持兩大類線上實驗:1) 匯編指令程序設計線上實驗;2) 匯編指令執行流程仿真線上實驗。
1 MIPS 匯編指令線上實驗系統整體架構
通過線下線上相結合的方式實驗實踐,幫助學生達成匯編指令教學目標,MIPS匯編指令線上實驗系統功能模塊構成如圖1所示。該實驗系統根據實驗任務分為:匯編指令程序設計和匯編指令執行流程兩大類實驗;根據用戶可見性分為:人機交互界面和后臺兩大類功能模塊;同時還支持用戶管理和實驗行為數據記錄等公共業務。
2 MIPS 匯編指令程序設計實驗設計
MIPS匯編指令程序設計實驗根據實驗任務的類型,實驗任務手動發布流程如圖2所示。
2.2 實驗代碼檢驗流程
實驗代碼檢驗流程為:1) 根據實驗任務類型,生成測試案例初始值對應內存單元、寄存器的初始化匯編指令代碼段;2) 在初始化代碼段后,插入學生提交的匯編語言代碼,生成一個完整的MIPS匯編語言程序;3) 調用MARS API編譯,運行該匯編語言程序,并獲取運行結果,同時將編譯、運行結果信息實時反饋給學生,如圖3所示。
實驗結果信息反饋分為三種:1) 編譯錯誤,顯示編譯錯誤的代碼行號和錯誤信息,并標紅提醒;2) 編譯正確且代碼運行后指定寄存器或內存單元的值與期望值一致,顯示回答正確;3) 編譯正確但代碼運行后指定寄存器或內存單元的值與期望值不完全一致,顯示錯誤的寄存器名稱或內存地址,并標紅提醒。
3 MIPS 匯編指令執行流程實驗
匯編指令運行流程實驗采用虛擬仿真方式展示MIPS簡單匯編指令集指令在簡單指令集MIPS微處理器結構框圖中的運行流程,并考核學生的掌握情況,以幫助學生掌握匯編指令與硬件之間的關系。這部分實驗任務中的匯編指令代碼段以及考核檢驗都采用自動方式。
3.1 匯編指令代碼段自動生成流程
MIPS簡單指令集僅包含9條指令,涵蓋MIPS匯編指令三種指令編碼格式以及三大類不同功能指令。該實驗僅關注指令的執行流程,而非代碼段的功能,因此不驗證生成的代碼段功能正確與否。匯編指令代碼段自動生成流程如圖4所示。
3.2 指令執行過程演示流程
MIPS匯編指令在微處理器結構框圖中的執行過程分為五步,演示流程如圖5所示。每一步都由用戶點擊相應按鍵交互式動態演示執行過程,既支持前進,也支持回退。
3.3 指令執行過程考核流程
指令執行過程考核是檢驗學生對MIPS匯編指令在MIPS微處理器結構框圖中執行過程的掌握程度。考核任務由系統自動智能生成,學生初次參與考核時,所有指令所涉步驟難度系數相同,再次考核時系統根據已完成考核指令回答的正確性,修改對應指令的難度系數,并提高高難度系數指令的考核強度,考核流程如圖6所示。
4 實驗數據和行為記錄
實驗數據和行為記錄模塊記錄學生使用本系統時進行的各類操作和實驗情況,包括學生登錄系統、查看實驗任務、編寫并提交實驗代碼、觀看指令執行流程演示、參與指令執行流程考核的時間、時長等實驗行為以及實驗任務完成與否、得分情況等實驗數據。
實驗行為通過埋點記錄學生實驗操作的HTTP請求以及操作產生的中間數據,如時間信息、點擊次數、代碼信息、報錯信息等。將這些數據持久化存入數據庫,既作為系統運行時反饋給用戶的數據,也作為實驗教學過程性考核依據,還為今后的實驗教學提供參考依據。
5 線上實驗系統應用
華中科技大學電信學院2019級、2020級本科生分別在2021年、2022年4—6月份進行的計算機組成原理與接口技術實驗課中采用該系統進行了線上匯編指令實驗,其中MIPS匯編指令程序設計實驗連續試運行兩年,MIPS匯編指令執行流程實驗運行一年。系統在運行期間基本穩定工作,總宕機時長少于24小時,最大限度地減少了線上實驗系統對學生在線學習行為的影響,保證了數據的可靠性,能滿足學生利用課余時間進行實驗學習的需求。
學生參與線上實驗情況數據如圖7所示,2021、2022年分別有187、354名學生參與線上實驗。MIPS 匯編指令程序設計實驗任務參與人次明顯高于MIPS 匯編指令執行流程實驗任務,這是由于教學要求中將MIPS 匯編指令程序設計實驗任務作為必做實驗,MIPS匯編指令執行流程實驗作為選做實驗。
MIPS匯編指令程序設計實驗共發布31個實驗任務,各個實驗任務在兩次實驗系統運行期間學生的嘗試次數分布如圖8所示。從圖中可以看出,不同實驗任務在系統兩輪運行期間,學生得到正確實驗結果所需嘗試的實驗次數分布基本一致:嘗試次數越多的實驗任務對學生而言相關知識難度越高,教師可據此調整教學重點。
6 結束語
本文針對MIPS匯編指令教學目標設計并實現了一個MIPS匯編指令線上實驗系統。學生可在線實踐MIPS匯編指令程序設計,也可在線學習MIPS匯編指令在單周期MIPS微處理器中的執行過程,并自行考核學習效果。教師可根據教學需求在線隨時更新匯編指令程序設計實驗任務,并收集學生實驗過程中的行為數據,及時了解學生實驗情況。線上實驗系統所具備的自動檢驗以及自動根據學生考核狀況動態調整匯編指令執行流程的考核內容等功能,極大地減輕了教師實驗教學的負擔。系統記錄的實驗行為以及實驗過程數據可幫助教師定位教學難點、改進教學方法、提高教學質量。