胡迪青, 譚志虎, 吳 非
(華中科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 湖北 武漢430074)
“計(jì)算機(jī)組成原理”課程在計(jì)算機(jī)專業(yè)教學(xué)和計(jì)算機(jī)系統(tǒng)能力培養(yǎng)目標(biāo)中起著重要的承上啟下的作用[1]。其理論性強(qiáng),概念抽象,學(xué)生學(xué)習(xí)困難,很難掌握其精髓,其教學(xué)目標(biāo)的達(dá)成僅依靠理論教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,還必須打造對(duì)理論教學(xué)具有強(qiáng)支撐的實(shí)踐教學(xué)環(huán)節(jié)[2]。在這個(gè)環(huán)節(jié)里要淡化以知識(shí)點(diǎn)驗(yàn)證為主的驗(yàn)證性實(shí)驗(yàn),建立逐層遞進(jìn)、立足計(jì)算機(jī)系統(tǒng)、設(shè)計(jì)型實(shí)驗(yàn)為主導(dǎo)的實(shí)踐教學(xué)體系,具體說來(lái),要站在硬件工程師的視角,從門電路開始逐步設(shè)計(jì)運(yùn)算部件,存儲(chǔ)器、數(shù)據(jù)通路和控制器、流水控制邏輯直至完整的CPU來(lái)深入理解計(jì)算機(jī)系統(tǒng)。
目前國(guó)內(nèi)高校“計(jì)算機(jī)組成原理”實(shí)踐教學(xué)主要有兩種方式:
(1)傳統(tǒng)實(shí)驗(yàn)箱形式。將分離器件通過導(dǎo)線連接構(gòu)成小系統(tǒng),通過撥動(dòng)開關(guān)、觀察信號(hào)燈檢測(cè)驗(yàn)證系統(tǒng)功能。該方式讓學(xué)生有直觀的邏輯器件的概念,但實(shí)驗(yàn)系統(tǒng)可靠性極低,調(diào)試工作量大,實(shí)驗(yàn)不可抗力因素過多,學(xué)生挫敗感嚴(yán)重;實(shí)驗(yàn)以驗(yàn)證為主,看似幾百根導(dǎo)線完成的“復(fù)雜”系統(tǒng),真正的設(shè)計(jì)內(nèi)涵卻十分簡(jiǎn)單,實(shí)驗(yàn)指導(dǎo)檢查困難;實(shí)驗(yàn)耗損大,成本高,維護(hù)工作量大,場(chǎng)地要求高,實(shí)驗(yàn)箱更新?lián)Q代緩慢,不能滿足現(xiàn)代電子系統(tǒng)設(shè)計(jì)的要求[3]。
(2)FPGA開發(fā)板形式。采用硬件描述語(yǔ)言完成硬件設(shè)計(jì)仿真,在開發(fā)板上調(diào)試運(yùn)行,實(shí)驗(yàn)以設(shè)計(jì)為主,真實(shí)的硬件設(shè)計(jì)方式有助于激發(fā)學(xué)生的學(xué)習(xí)興趣,提高學(xué)生的硬件設(shè)計(jì)能力[2]。但其學(xué)習(xí)周期長(zhǎng),難度大,對(duì)師生技術(shù)水平要求較高;另一個(gè)比較嚴(yán)重的問題是硬件設(shè)計(jì)程序化,學(xué)生總感覺是在做編程實(shí)驗(yàn)而不是硬件設(shè)計(jì),學(xué)生容易照搬軟件編程思維,學(xué)生很難建立設(shè)計(jì)與底層電路的對(duì)應(yīng)關(guān)系,數(shù)字電路設(shè)計(jì)方法無(wú)法延續(xù)到實(shí)驗(yàn)中,硬件設(shè)計(jì)體會(huì)不深[4]。
在計(jì)算機(jī)專業(yè)系統(tǒng)能力培養(yǎng)的框架下,實(shí)驗(yàn)箱方案逐漸衰落,國(guó)內(nèi)外一流高校均已采用FPGA平臺(tái)[5]。而后者要回避學(xué)習(xí)周期長(zhǎng)的問題,須重構(gòu)硬件系列課程群,統(tǒng)一實(shí)驗(yàn)平臺(tái),涉及多門課程的重新整合,改革阻力較大;為彌補(bǔ)兩種方案之間的巨大差異,我們嘗試引入Logisim虛擬仿真實(shí)驗(yàn)平臺(tái),為最終切換到FPGA平臺(tái)進(jìn)行平滑過渡,對(duì)現(xiàn)有實(shí)踐方式進(jìn)行必要的補(bǔ)充。
Logisim是一款針對(duì)CPU系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)的數(shù)字電路仿真軟件,適合設(shè)計(jì)和仿真數(shù)字邏輯電路,其特點(diǎn)是采用分離數(shù)字電路模塊構(gòu)建原理圖的方式進(jìn)行系統(tǒng)設(shè)計(jì)[6]。圖1是采用Logisim平臺(tái)利用原理圖方式設(shè)計(jì)的五段流水MIPSCPU。這種設(shè)計(jì)方式延續(xù)了“數(shù)字邏輯”課程中數(shù)字電路設(shè)計(jì)方法,有利于培養(yǎng)學(xué)生硬件設(shè)計(jì)思維,回避了硬件描述語(yǔ)言過于抽象、硬件設(shè)計(jì)程序化的問題。該平臺(tái)簡(jiǎn)單易學(xué),易于調(diào)試、零實(shí)驗(yàn)成本,無(wú)場(chǎng)地和人員要求,易于構(gòu)建復(fù)雜數(shù)字電路系統(tǒng),方便進(jìn)行靈活多變的設(shè)計(jì)型實(shí)驗(yàn)。目前全球已有幾百所學(xué)校使用該平臺(tái),其中美國(guó)加州伯克利分校CS61C課程一直采用該平臺(tái),國(guó)內(nèi)北航、國(guó)防科大也在使用該平臺(tái)。
圖1 Logisim平臺(tái)設(shè)計(jì)的五段流水MIPSCPU
Logisim虛擬仿真實(shí)驗(yàn)平臺(tái)可有效回避傳統(tǒng)實(shí)驗(yàn)的一些弊端,傳統(tǒng)實(shí)驗(yàn)大多可無(wú)縫移植到該平臺(tái)上,在進(jìn)行虛擬仿真實(shí)驗(yàn)設(shè)計(jì)時(shí),我們嘗試遵循以下基本原則:
(1)理論實(shí)踐一體化,實(shí)踐內(nèi)容緊扣教學(xué)重點(diǎn)難點(diǎn),讓枯燥的理論知識(shí)在實(shí)踐中鮮活起來(lái),構(gòu)建教師與學(xué)生的共同語(yǔ)言,真正做到實(shí)踐教學(xué)助力理論教學(xué)。
(2)實(shí)驗(yàn)?zāi)繕?biāo)系統(tǒng)化,注重系統(tǒng)能力的培養(yǎng),將難度較高的五段流水CPU的系統(tǒng)能力培養(yǎng)目標(biāo)分解為層次遞進(jìn),由易到難的多個(gè)單元實(shí)驗(yàn),在單元實(shí)驗(yàn)中構(gòu)建功能部件,最終將各單元實(shí)驗(yàn)的多個(gè)成果集成為完整的CPU,在遞進(jìn)的學(xué)習(xí)過程中讓學(xué)生養(yǎng)成系統(tǒng)觀,努力使大部分學(xué)生達(dá)到較高的系統(tǒng)設(shè)計(jì)能力水準(zhǔn)。
(3)課內(nèi)課外協(xié)同化,通過構(gòu)建豐富的驗(yàn)證型實(shí)驗(yàn)資源庫(kù),方便教師課內(nèi)動(dòng)態(tài)演示講解以及學(xué)生課外復(fù)習(xí)驗(yàn)證。通過加大設(shè)計(jì)型實(shí)驗(yàn)工作量,促進(jìn)課內(nèi)實(shí)驗(yàn)與課外實(shí)驗(yàn)的有機(jī)結(jié)合。
(4)教師工作輕松化,硬件系列實(shí)驗(yàn)檢查和指導(dǎo)難度大、強(qiáng)度高,通過實(shí)驗(yàn)輸入輸出界面規(guī)范化、測(cè)試用例標(biāo)準(zhǔn)化、性能指標(biāo)數(shù)據(jù)化、實(shí)驗(yàn)測(cè)試評(píng)分自動(dòng)化等一系列手段,大大提升實(shí)驗(yàn)的易檢查性,降低教師工作強(qiáng)度。
驗(yàn)證實(shí)驗(yàn)資源庫(kù)給出課程中一些常用且重要的數(shù)字電路在Logisim平臺(tái)的具體實(shí)現(xiàn),如數(shù)據(jù)表示中的海明碼編解碼電路和CRC編解碼電路;數(shù)據(jù)運(yùn)算中的全加器、快速加法器、乘法器、除法器的驗(yàn)證樣例;存儲(chǔ)系統(tǒng)中的存儲(chǔ)芯片擴(kuò)展;控制器中的時(shí)序產(chǎn)生器;輸入輸出系統(tǒng)中的中斷屏蔽和中斷優(yōu)先級(jí)處理等[3]。
驗(yàn)證資源庫(kù)的目的是加深課程理論知識(shí)點(diǎn)的理解,方便教學(xué)展示和學(xué)生課后驗(yàn)證,將教材上呆板的靜態(tài)電路轉(zhuǎn)換為動(dòng)態(tài)可驗(yàn)證易理解的實(shí)例,促進(jìn)課內(nèi)課外教學(xué)的有機(jī)融合。
以“計(jì)算機(jī)組成原理”課程最核心的教學(xué)內(nèi)容——CPU的設(shè)計(jì)與實(shí)現(xiàn)為頂層實(shí)驗(yàn)?zāi)繕?biāo),將CPU設(shè)計(jì)總?cè)蝿?wù)分解為若干功能部件設(shè)計(jì)實(shí)驗(yàn)(運(yùn)算器、存儲(chǔ)器、控制器),并最終在課程實(shí)驗(yàn)中集成為完整的可運(yùn)行簡(jiǎn)單程序的MIPS單周期CPU,在課程實(shí)驗(yàn)基礎(chǔ)上,進(jìn)一步提升難度,要求學(xué)生在課程設(shè)計(jì)中最終完成中斷機(jī)制、理想流水線,氣泡式流水線,重定向流水線,動(dòng)態(tài)分支預(yù)測(cè)流水線等高級(jí)功能。
1)運(yùn)算器實(shí)驗(yàn)
本實(shí)驗(yàn)課內(nèi)4學(xué)時(shí),課外4學(xué)時(shí),要求學(xué)生從門電路開始構(gòu)建4位快速加法器,逐步構(gòu)建16/32位加法器,最終構(gòu)建可支持各種算術(shù)、邏輯運(yùn)算的復(fù)雜功能運(yùn)算器,要求設(shè)計(jì)運(yùn)算溢出檢測(cè)標(biāo)志。
通過該實(shí)驗(yàn),學(xué)生可熟悉Logisim的使用,掌握運(yùn)算器的構(gòu)建方法,加深對(duì)補(bǔ)碼表示、補(bǔ)碼運(yùn)算的理解。擴(kuò)展實(shí)驗(yàn)要求利用已封裝的運(yùn)算器完成等差數(shù)列累加求和的同步時(shí)序電路,讓學(xué)生盡快建立運(yùn)算通路、寄存器傳輸控制的概念。
2)存儲(chǔ)器實(shí)驗(yàn)
本實(shí)驗(yàn)課內(nèi)4學(xué)時(shí),課外4學(xué)時(shí),要求學(xué)生設(shè)計(jì)MIPS寄存器組,然后利用先導(dǎo)實(shí)驗(yàn)完成的運(yùn)算器、寄存器組、RAM、計(jì)數(shù)器等模塊構(gòu)建自動(dòng)運(yùn)算時(shí)序電路,可完成RAM模塊連續(xù)數(shù)據(jù)區(qū)間的累加,并將累加中間結(jié)果回存到同一RAM模塊指定區(qū)域。擴(kuò)展實(shí)驗(yàn)可要求學(xué)生設(shè)計(jì)既可以按字節(jié)訪問也可以按字訪問的存儲(chǔ)器功能模塊,為MIPSCPU中SB、SW指令打基礎(chǔ)。
該實(shí)驗(yàn)重點(diǎn)考查存儲(chǔ)器的讀寫時(shí)序控制,存儲(chǔ)器擴(kuò)展與控制,包含存儲(chǔ)器、運(yùn)算器、數(shù)據(jù)通路的綜合設(shè)計(jì)實(shí)驗(yàn),可加深學(xué)生對(duì)存儲(chǔ)器的認(rèn)知,并為后續(xù)數(shù)據(jù)通路、控制器設(shè)計(jì)打基礎(chǔ)。
3)控制器實(shí)驗(yàn)
本實(shí)驗(yàn)課內(nèi)4學(xué)時(shí),課外8學(xué)時(shí),要求學(xué)生利用先導(dǎo)實(shí)驗(yàn)完成的各功能模塊構(gòu)建數(shù)據(jù)通路,設(shè)計(jì)硬布線控制器,最終設(shè)計(jì)完成支持簡(jiǎn)單指令系統(tǒng)的MIPS單周期CPU,并能自動(dòng)運(yùn)行標(biāo)準(zhǔn)測(cè)試程序,作為擴(kuò)展內(nèi)容,指令系統(tǒng)學(xué)生可自行擴(kuò)展,還可擴(kuò)展中斷機(jī)制。
控制器實(shí)驗(yàn)是前兩次實(shí)驗(yàn)的綜合,通過控制器實(shí)驗(yàn)學(xué)生應(yīng)掌握MIPS單周期CPU設(shè)計(jì)的一般流程,加深CPU控制器的理解。
在單元實(shí)驗(yàn)的基礎(chǔ)上,課程設(shè)計(jì)要求學(xué)生挑戰(zhàn)較高難度和更大工作量的MIPS五段流水CPU設(shè)計(jì),最終達(dá)成系統(tǒng)能力培養(yǎng)的總目標(biāo)[7]。所設(shè)計(jì)的CPU應(yīng)支持一定規(guī)模的指令系統(tǒng),學(xué)生從最簡(jiǎn)單的單周期CPU入手,逐步過渡到無(wú)沖突的理想流水線、氣泡式流水線、數(shù)據(jù)重定向流水線、動(dòng)態(tài)分支預(yù)測(cè)流水線、流水中斷擴(kuò)展,內(nèi)容層次遞進(jìn),難度遞增,在Logisim平臺(tái)上最終完成MIPS五段流水CPU。要求最終完成的CPU能正確運(yùn)行標(biāo)準(zhǔn)測(cè)試用例程序,主要數(shù)據(jù)流和控制流通過LED、數(shù)碼管等適時(shí)的進(jìn)行顯示。
為保障較高難度課程設(shè)計(jì)的完成度,必須對(duì)課程設(shè)計(jì)進(jìn)行精細(xì)化的過程管理,嚴(yán)格學(xué)生的考勤紀(jì)律和學(xué)習(xí)制度,借鑒游戲闖關(guān)的設(shè)計(jì)理念,將課設(shè)總?cè)蝿?wù)細(xì)分成若干可明確檢查的階段子任務(wù)(游戲關(guān)卡);難度逐漸遞進(jìn),通過各階段成果檢查增強(qiáng)學(xué)習(xí)的及時(shí)反饋,提升學(xué)生學(xué)習(xí)興趣(游戲趣味性);為學(xué)生提供豐富的測(cè)試用例以及自動(dòng)檢測(cè)工具,讓學(xué)生的較短時(shí)間內(nèi)體驗(yàn)更多的設(shè)計(jì)內(nèi)容(游戲裝備);將所有學(xué)生每天的學(xué)習(xí)進(jìn)度及時(shí)匯總,促進(jìn)競(jìng)爭(zhēng)學(xué)習(xí)氛圍的養(yǎng)成(游戲龍虎榜);線上線下充分互動(dòng),收集整理各種常見問題(游戲通關(guān)秘籍)以及采用團(tuán)隊(duì)合作以及天梯對(duì)抗機(jī)制讓學(xué)生開展愉快的合作學(xué)習(xí)(戰(zhàn)隊(duì)游戲)。
2015年起,我校計(jì)算機(jī)學(xué)院開始全面推廣虛擬仿真實(shí)驗(yàn),大部分學(xué)生第一次實(shí)驗(yàn)仍在傳統(tǒng)實(shí)驗(yàn)箱上完成,對(duì)兩種平臺(tái)優(yōu)缺點(diǎn)對(duì)比體會(huì)深刻,學(xué)生普遍認(rèn)為L(zhǎng)ogisim平臺(tái)完勝實(shí)驗(yàn)箱方式,實(shí)驗(yàn)效率高,事半功倍,內(nèi)容緊扣課程。經(jīng)過3年的不斷探索和持續(xù)改進(jìn),基于Logisim虛擬仿真實(shí)驗(yàn)平臺(tái)的“計(jì)算機(jī)組成原理”實(shí)踐課程日趨完善,我們將課程單元實(shí)驗(yàn)中因?qū)W時(shí)原因未曾涉及的重難點(diǎn)如中斷異常處理機(jī)制、相聯(lián)存儲(chǔ)器等實(shí)驗(yàn)引入到課程設(shè)計(jì)中,已有3屆逾千名學(xué)生完成該課程設(shè)計(jì),如圖2所示:2017年最新的“計(jì)算機(jī)組成原理”課程設(shè)計(jì)要求已經(jīng)由2015年的20條16位MIPS流水CPU變成了30條32位的MIPS流水CPU,并且新增加了中斷處理機(jī)制以及流水線在FPGA開發(fā)板上實(shí)現(xiàn)的環(huán)節(jié),在保證完成度的前提下,課程設(shè)計(jì)規(guī)模,設(shè)計(jì)難度均大幅提升。Logisim虛擬仿真實(shí)驗(yàn)平臺(tái)實(shí)現(xiàn)了硬件設(shè)計(jì)與實(shí)現(xiàn)的分離,學(xué)生可以在仿真平臺(tái)上將設(shè)計(jì)原理跑通后再在FPGA開發(fā)板上實(shí)現(xiàn)五段流水CPU,大大提升了設(shè)計(jì)效率,同時(shí)也為不愿意學(xué)習(xí)FPGA開發(fā)的同學(xué)提供了差異化的選擇。
圖2 組成原理虛擬仿真課程設(shè)計(jì)完成度對(duì)比
從多年的課程滿意度調(diào)查數(shù)據(jù)看,“計(jì)算機(jī)組成原理”虛擬仿真實(shí)踐教學(xué)基本達(dá)到了設(shè)計(jì)初衷,取了了不錯(cuò)的效果,并獲得了同行的肯定,相比傳統(tǒng)實(shí)驗(yàn)其具有如下優(yōu)勢(shì):
(1)返璞歸真,助力課程,學(xué)生普遍反饋這是大學(xué)階段最緊扣教學(xué)內(nèi)容的實(shí)驗(yàn)之一,有效提升了實(shí)驗(yàn)設(shè)計(jì)效率和設(shè)計(jì)規(guī)模,設(shè)計(jì)方法延續(xù)了數(shù)字邏輯的設(shè)計(jì)方法,幫助學(xué)生建立良好的硬件設(shè)計(jì)思維,可有效加深其對(duì)課程理論知識(shí)的理解。
(2)有助于系統(tǒng)能力培養(yǎng),實(shí)驗(yàn)層次遞進(jìn),難易遞進(jìn),對(duì)學(xué)生必須達(dá)到的指定層次有明確要求,學(xué)生完成率高,成就感強(qiáng),落實(shí)了本課程應(yīng)承擔(dān)的系統(tǒng)能力培養(yǎng)目標(biāo),有助于普惠教育的達(dá)成,符合未來(lái)計(jì)算機(jī)工程教育認(rèn)證的要求。
(3)激發(fā)學(xué)習(xí)熱情,助力創(chuàng)新,Logisim平臺(tái)將學(xué)生從調(diào)試的泥潭解放出來(lái),擺脫了實(shí)驗(yàn)箱器件數(shù)目的限制,可隨意地構(gòu)建復(fù)雜系統(tǒng),大大激發(fā)了學(xué)生的學(xué)習(xí)熱情和創(chuàng)新意識(shí)。
(4)充分解放教師、教輔人員,平臺(tái)易學(xué)易用易調(diào)試,多數(shù)問題學(xué)生互相交流學(xué)習(xí)即可解決,一定程度上實(shí)現(xiàn)了課堂翻轉(zhuǎn);實(shí)驗(yàn)易檢查易評(píng)判,無(wú)需復(fù)雜的轉(zhuǎn)場(chǎng),維修過程,大大減輕了教師和教輔人員的工作強(qiáng)度和工作壓力。
Logisim虛擬仿真實(shí)驗(yàn)平臺(tái)簡(jiǎn)單易用,學(xué)習(xí)周期短,可有效延續(xù)數(shù)字邏輯課程硬件設(shè)計(jì)的方法,讓學(xué)生將更多的精力集中在對(duì)課程知識(shí)的理解和運(yùn)用上,真正助力課堂理論教學(xué)?;谠撈脚_(tái)開發(fā)的一系列課程虛擬仿真實(shí)驗(yàn)以及課程設(shè)計(jì)實(shí)驗(yàn)難度適當(dāng),內(nèi)容遞進(jìn),學(xué)生成就感強(qiáng),驗(yàn)收容易,有助于學(xué)生計(jì)算機(jī)系統(tǒng)能力的養(yǎng)成,相關(guān)成果已在本院進(jìn)行了三年的應(yīng)用和推廣,并在2017第三屆全國(guó)高校計(jì)算機(jī)系統(tǒng)能力培養(yǎng)高峰論壇做大會(huì)報(bào)告,獲同行一致好評(píng),并在湖北省內(nèi)進(jìn)行了專題師資培訓(xùn),共培訓(xùn)省內(nèi)外高校教師60余人,為兄弟院校同類課程實(shí)驗(yàn)的開設(shè)提供了借鑒思路。