柳 星,袁景凌,饒文碧,鄒承明,熊盛武
(1.武漢理工大學(xué) 計(jì)算機(jī)湖北省重點(diǎn)實(shí)驗(yàn)教學(xué)示范中心,湖北 武漢 430070;2. 武漢理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430070)
當(dāng)前,計(jì)算技術(shù)已從初期的科學(xué)計(jì)算與信息處理進(jìn)入到以移動(dòng)互聯(lián)、物聯(lián)網(wǎng)、云計(jì)算與大數(shù)據(jù)為主要特征的新時(shí)代,培養(yǎng)具備系統(tǒng)能力的計(jì)算機(jī)專(zhuān)業(yè)人才已成為國(guó)內(nèi)外教育專(zhuān)家的共識(shí)[1]。早在2006年,教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)教學(xué)指導(dǎo)委員會(huì)便對(duì)計(jì)算機(jī)專(zhuān)業(yè)學(xué)生能力培養(yǎng)進(jìn)行了研究,并出版了文獻(xiàn)[2—3]。書(shū)中明確指出,計(jì)算機(jī)專(zhuān)業(yè)學(xué)生應(yīng)培養(yǎng)4種重要專(zhuān)業(yè)能力:程序設(shè)計(jì)與實(shí)現(xiàn)能力、計(jì)算思維能力、算法設(shè)計(jì)與分析能力以及系統(tǒng)能力,其中系統(tǒng)能力占總能力點(diǎn)的75%,對(duì)于計(jì)算機(jī)專(zhuān)業(yè)能力培養(yǎng)具有重要作用。2013年,ACM/IEEE起草了計(jì)算機(jī)學(xué)科課程設(shè)置報(bào)告CS2013[4],也將計(jì)算機(jī)系統(tǒng)能力培養(yǎng)作為重點(diǎn)內(nèi)容進(jìn)行闡述,認(rèn)為計(jì)算機(jī)教學(xué)應(yīng)樹(shù)立系統(tǒng)觀,指導(dǎo)學(xué)生從多層次的細(xì)節(jié)抽象思考問(wèn)題,培養(yǎng)學(xué)生的軟、硬件協(xié)同設(shè)計(jì)思維,使學(xué)生具備設(shè)計(jì)并實(shí)現(xiàn)具有一定規(guī)模的復(fù)雜計(jì)算機(jī)系統(tǒng)能力。
系統(tǒng)能力培養(yǎng)實(shí)現(xiàn)的重要技術(shù)途徑是對(duì)計(jì)算機(jī)組成原理、操作系統(tǒng)、編譯原理等核心課程群進(jìn)行貫通,學(xué)生具備自主開(kāi)發(fā)“1個(gè)CPU、1個(gè)操作系統(tǒng)、1個(gè)編譯器”的能力[5-7]。學(xué)生通過(guò)計(jì)算機(jī)組成原理等課程的學(xué)習(xí),能基于FPGA實(shí)現(xiàn)一個(gè)CPU;通過(guò)操作系統(tǒng)等課程的學(xué)習(xí),能開(kāi)發(fā)出針對(duì)此CPU的操作系統(tǒng);通過(guò)編譯原理等課程的學(xué)習(xí),將開(kāi)發(fā)的操作系統(tǒng)編譯到CPU上運(yùn)行。上述課程群的貫通教學(xué)將使學(xué)生全面掌握計(jì)算機(jī)系統(tǒng)知識(shí)點(diǎn),并具備開(kāi)發(fā)足夠規(guī)模復(fù)雜計(jì)算機(jī)系統(tǒng)的能力。在上述課程群中,計(jì)算機(jī)組成原理又具有承上啟下的關(guān)鍵作用[8],既以數(shù)字邏輯為先導(dǎo),又為計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、操作系統(tǒng)、編譯原理等后續(xù)課程提供重要支撐,是計(jì)算機(jī)學(xué)科的核心專(zhuān)業(yè)基礎(chǔ)課程。
在改革計(jì)算機(jī)組成原理實(shí)驗(yàn)內(nèi)容之前,我們同國(guó)內(nèi)多數(shù)高校一樣,采用公司集成開(kāi)發(fā)好的模型實(shí)驗(yàn)箱進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)箱將控制器、運(yùn)算器、存儲(chǔ)器等部件固化好,學(xué)生在實(shí)驗(yàn)時(shí)只需參照指導(dǎo)書(shū)通過(guò)手工連線、開(kāi)關(guān)控制、上傳微程序等方式與實(shí)驗(yàn)系統(tǒng)交互。經(jīng)過(guò)多年的教學(xué),我們發(fā)現(xiàn)此實(shí)驗(yàn)?zāi)J酱嬖谝恍﹩?wèn)題:首先,實(shí)驗(yàn)設(shè)計(jì)大多以驗(yàn)證型為主,學(xué)生缺乏思考過(guò)程。實(shí)驗(yàn)過(guò)程也僅能觀看到系統(tǒng)運(yùn)行演示效果,學(xué)生無(wú)法深入理解系統(tǒng)內(nèi)部工作原理。其次,平臺(tái)上各部件功能固化,不能進(jìn)行擴(kuò)展與重編程,學(xué)生缺少自主創(chuàng)新開(kāi)發(fā)的空間。此外,實(shí)驗(yàn)設(shè)計(jì)側(cè)重對(duì)局部原理的簡(jiǎn)單驗(yàn)證,缺乏對(duì)復(fù)雜系統(tǒng)的綜合設(shè)計(jì)與實(shí)現(xiàn)。最后,不同課程采用不同的實(shí)驗(yàn)箱,實(shí)驗(yàn)課程相互獨(dú)立,不能對(duì)軟硬件核心課程進(jìn)行貫通。
上述實(shí)驗(yàn)?zāi)J讲焕谟?jì)算機(jī)專(zhuān)業(yè)學(xué)生系統(tǒng)能力的培養(yǎng)。為此,我們?cè)诳疾煺憬髮W(xué)、清華大學(xué)、北京航空航天大學(xué)等兄弟院校后,對(duì)我校計(jì)算機(jī)組成原理課程教學(xué)進(jìn)行了改革,提出以可編程FPGA為實(shí)驗(yàn)開(kāi)發(fā)平臺(tái),以Xilinx ISE為硬件設(shè)計(jì)及仿真工具,以學(xué)生自主開(kāi)發(fā)CPU為實(shí)驗(yàn)?zāi)繕?biāo)的組成原理實(shí)驗(yàn)體系。FPGA開(kāi)發(fā)平臺(tái)選用Digilent公司的SWORD(simple while organic aRc design)教學(xué)實(shí)驗(yàn)系統(tǒng)。SWORD面向計(jì)算機(jī)系統(tǒng)能力培養(yǎng)課程貫通體系而設(shè)計(jì),內(nèi)容涵蓋從數(shù)字邏輯硬件設(shè)計(jì),到指令集架構(gòu)設(shè)計(jì)與擴(kuò)展,并延伸到編譯器設(shè)計(jì),甚至涵蓋操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),以及基于上述一切內(nèi)容的計(jì)算機(jī)系統(tǒng)集成設(shè)計(jì)與應(yīng)用,可較好地滿足計(jì)算機(jī)專(zhuān)業(yè)系統(tǒng)能力教學(xué)改革所涉及的各層次實(shí)驗(yàn)設(shè)計(jì)需求。實(shí)驗(yàn)內(nèi)容以開(kāi)發(fā)多流水線MIPS指令集CPU為主體,要求學(xué)生實(shí)現(xiàn)能支持常規(guī)定點(diǎn)指令及操作系統(tǒng)運(yùn)行所需基本系統(tǒng)級(jí)指令的CPU,培養(yǎng)學(xué)生具備開(kāi)發(fā)一定規(guī)模復(fù)雜系統(tǒng)的能力,并為后續(xù)操作系統(tǒng)等課程的改革打下基礎(chǔ)。
改革新內(nèi)容的實(shí)驗(yàn)教學(xué)推廣中,出現(xiàn)了以下問(wèn)題:①CPU體系結(jié)構(gòu)比較復(fù)雜,如何深入淺出地向?qū)W生講授一個(gè)復(fù)雜計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程;②許多學(xué)生缺乏FPGA開(kāi)發(fā)基礎(chǔ),如何幫助他們快速理解且靈活掌握FPGA開(kāi)發(fā)技術(shù);③如何讓學(xué)生在實(shí)驗(yàn)課堂外,也能隨時(shí)隨地進(jìn)行遠(yuǎn)程實(shí)驗(yàn);④面對(duì)數(shù)十甚至上百名學(xué)生,指導(dǎo)教師如何在有限的教學(xué)時(shí)間內(nèi)高效地指導(dǎo)眾多學(xué)生。
CPU體系結(jié)構(gòu)具有一定復(fù)雜性,為幫助學(xué)生更好地掌握CPU設(shè)計(jì)與實(shí)現(xiàn)方法,可采用模塊化分解及逐級(jí)驗(yàn)證的實(shí)驗(yàn)方法。首先,將CPU分解為一系列功能簡(jiǎn)單的模塊,先直接提供各模塊IP核,通過(guò)IP核集成實(shí)現(xiàn)一個(gè)CPU系統(tǒng),讓學(xué)生從整體上認(rèn)識(shí)CPU系統(tǒng)結(jié)構(gòu);然后,逐個(gè)去掉各模塊IP核,要求學(xué)生自主編程實(shí)現(xiàn)各模塊功能,并對(duì)實(shí)現(xiàn)的模塊功能進(jìn)行逐個(gè)驗(yàn)證;最后,對(duì)所有驗(yàn)證正確的模塊進(jìn)行綜合,達(dá)到自主設(shè)計(jì)并實(shí)現(xiàn)復(fù)雜CPU系統(tǒng)的目標(biāo)。
實(shí)驗(yàn)內(nèi)容設(shè)計(jì)如圖1所示。實(shí)驗(yàn)1通過(guò)使用IP核集成一個(gè)SOC系統(tǒng),以構(gòu)建一個(gè)CPU運(yùn)行與調(diào)試環(huán)境,為后續(xù)CPU開(kāi)發(fā)打好基礎(chǔ)。從實(shí)驗(yàn)2開(kāi)始,實(shí)驗(yàn)內(nèi)容將集中在SOC系統(tǒng)中CPU開(kāi)發(fā)上。由于CPU體系結(jié)構(gòu)的復(fù)雜性,實(shí)驗(yàn)2首先將CPU分解為控制器與數(shù)據(jù)通路兩大子系統(tǒng),子系統(tǒng)仍通過(guò)提供IP核集成實(shí)現(xiàn),但是學(xué)生需對(duì)子系統(tǒng)之間的電路連接關(guān)系進(jìn)行設(shè)計(jì)。實(shí)驗(yàn)2完成CPU的第一次模塊化分解,是后續(xù)進(jìn)一步細(xì)分的基礎(chǔ)。從實(shí)驗(yàn)3開(kāi)始,不再向?qū)W生提供IP核,學(xué)生需采用頂層原理圖及Verilog編程方式自主實(shí)現(xiàn)CPU各模塊功能。實(shí)驗(yàn)3完成CPU控制器的設(shè)計(jì)與實(shí)現(xiàn)工作,實(shí)驗(yàn)4則完成CPU數(shù)據(jù)通路開(kāi)發(fā)工作。由于數(shù)據(jù)通路部分系統(tǒng)結(jié)構(gòu)較復(fù)雜,實(shí)驗(yàn)4進(jìn)一步采用模塊化分解方法,將數(shù)據(jù)通路劃分為ALU單元、寄存器組、跳轉(zhuǎn)電路等子模塊,通過(guò)各子模塊的開(kāi)發(fā)與集成實(shí)現(xiàn)數(shù)據(jù)通路系統(tǒng)。完成上述4個(gè)實(shí)驗(yàn)后,學(xué)生可基本掌握CPU工作原理及設(shè)計(jì)與實(shí)現(xiàn)方法。在此基礎(chǔ)上,實(shí)驗(yàn)5進(jìn)一步要求學(xué)生對(duì)CPU控制器與數(shù)據(jù)通路電路進(jìn)行擴(kuò)展,以達(dá)到擴(kuò)展CPU指令集的目標(biāo)。
圖1 實(shí)驗(yàn)內(nèi)容設(shè)計(jì)
在實(shí)驗(yàn)體系設(shè)計(jì)上,應(yīng)首先向?qū)W生提供CPU所有模塊的標(biāo)準(zhǔn)IP核,集成一個(gè)CPU系統(tǒng);然后,引導(dǎo)學(xué)生自主實(shí)現(xiàn)CPU各模塊功能,每開(kāi)發(fā)一個(gè)模塊后,替換掉此模塊對(duì)應(yīng)的IP核,再檢驗(yàn)整個(gè)CPU是否運(yùn)行正常。若測(cè)試無(wú)誤,則判定自主開(kāi)發(fā)的模塊功能正確。如公式(1)所示,信號(hào)I為測(cè)試輸入信號(hào),?I k(x)表示提供的標(biāo)準(zhǔn)IP核實(shí)現(xiàn)的模塊k功能,?V k(x)表示學(xué)生自主開(kāi)發(fā)的模塊k功能,信號(hào)O表示輸出。如果O1與O2相同,則證明自主開(kāi)發(fā)的模塊2功能正確。每次開(kāi)發(fā)一個(gè)CPU子模塊并替換掉其對(duì)應(yīng)的IP核,依此類(lèi)推,最終達(dá)到自主實(shí)現(xiàn)整個(gè)CPU的目標(biāo)。
大多數(shù)學(xué)生缺乏FPGA開(kāi)發(fā)基礎(chǔ),部分學(xué)生知道FPGA系統(tǒng)開(kāi)發(fā)操作流程,但不理解為何進(jìn)行這些操作。采用ISE工具基于FPGA平臺(tái)開(kāi)發(fā)一個(gè)系統(tǒng)模塊的通用步驟如下:首先,裝載系統(tǒng)各組件符號(hào)表(symbol),并繪制頂層原理圖;然后,裝載對(duì)應(yīng)于每個(gè)符號(hào)表的IP核或進(jìn)行Verilog編程;最后,對(duì)系統(tǒng)進(jìn)行綜合與實(shí)現(xiàn)。學(xué)生經(jīng)過(guò)多數(shù)訓(xùn)練后,容易掌握這種開(kāi)發(fā)流程。然而,對(duì)于為什么要裝載符號(hào)表并繪制頂層原理圖,符號(hào)表、頂層原理圖、IP核、Verilog程序之間的關(guān)系如何,大多數(shù)學(xué)生仍未能理解這些問(wèn)題,導(dǎo)致難以對(duì)FPGA系統(tǒng)開(kāi)發(fā)技術(shù)進(jìn)行靈活變通。為了幫助學(xué)生快速掌握FPGA開(kāi)發(fā)技術(shù)并理解其本質(zhì)意義,可嘗試類(lèi)比教學(xué)法,以學(xué)生熟悉的C程序開(kāi)發(fā)為實(shí)例,F(xiàn)PGA技術(shù)開(kāi)發(fā)原理如下。
FPGA系統(tǒng)設(shè)計(jì)圖實(shí)例及對(duì)應(yīng)的C語(yǔ)言程序如圖2所示。采用類(lèi)比后,每個(gè)系統(tǒng)模塊可類(lèi)比于C程序中一個(gè)子函數(shù),模塊符號(hào)表可類(lèi)比于函數(shù)名,模塊輸入信號(hào)類(lèi)比于函數(shù)參數(shù)值,輸出信號(hào)類(lèi)比于函數(shù)返回值,符號(hào)表各引腳間的連線類(lèi)比于確定各函數(shù)間參數(shù)與返回值的傳遞,符號(hào)表連線后形成的頂層原理圖類(lèi)比于一個(gè)主函數(shù),鍵盤(pán)輸入類(lèi)比于scanf變量賦值,七段數(shù)碼管輸出類(lèi)比于printf打印顯示,模塊IO引腳定義類(lèi)比于函數(shù)申明,IP核對(duì)應(yīng)于函數(shù)庫(kù),各模塊的Verilog編程則類(lèi)比于各函數(shù)體的C語(yǔ)言編程。
理解上述類(lèi)比機(jī)制后,則可采用C程序的開(kāi)發(fā)流程類(lèi)比推導(dǎo)FPGA技術(shù)的開(kāi)發(fā)方法,從而達(dá)到靈活變通且創(chuàng)造性地使用FPGA技術(shù)的目的。例如,在C程序中,函數(shù)體可通過(guò)C編程或調(diào)用C庫(kù)實(shí)現(xiàn);相對(duì)應(yīng)地,F(xiàn)PGA系統(tǒng)中每個(gè)模塊功能也可以通過(guò)Verilog編程或直接調(diào)用IP核實(shí)現(xiàn)。在C程序中,一個(gè)主函數(shù)可調(diào)用一系列子函數(shù),每個(gè)子函數(shù)又可繼續(xù)調(diào)用子函數(shù);相對(duì)應(yīng)地,在FPGA開(kāi)發(fā)中,CPU可用頂層原理圖實(shí)現(xiàn),而CPU頂層圖中每一個(gè)子模塊也可繼續(xù)采用類(lèi)似于CPU頂層圖的方法進(jìn)一步實(shí)現(xiàn)。
教學(xué)過(guò)程中,我們發(fā)現(xiàn)學(xué)生實(shí)驗(yàn)操作存在兩方面約束:①上位機(jī)軟件環(huán)境約束。為了進(jìn)行實(shí)驗(yàn),學(xué)生需在個(gè)人PC等終端上安裝ISE開(kāi)發(fā)工具,安裝過(guò)程及安裝后的環(huán)境配置操作復(fù)雜。若能省去在所有用戶(hù)終端上構(gòu)建軟件開(kāi)發(fā)環(huán)境的過(guò)程,將大大提高實(shí)驗(yàn)操作的便利性。②下位機(jī)硬件設(shè)備約束。由于實(shí)驗(yàn)室管理等各種原因,許多實(shí)驗(yàn)設(shè)備不允許帶出實(shí)驗(yàn)室,學(xué)生只能在指定時(shí)間來(lái)實(shí)驗(yàn)室進(jìn)行實(shí)驗(yàn),限制了實(shí)驗(yàn)操作的空間性。因此,如何能讓學(xué)生隨時(shí)隨地方便地進(jìn)行實(shí)驗(yàn)是實(shí)驗(yàn)管理需面對(duì)的重要問(wèn)題之一。
圖2 FPGA系統(tǒng)設(shè)計(jì)圖及類(lèi)比的C語(yǔ)言程序
針對(duì)上述問(wèn)題,我們采用云計(jì)算技術(shù)及虛擬化技術(shù)開(kāi)發(fā)了一套共享云實(shí)驗(yàn)平臺(tái)。實(shí)驗(yàn)平臺(tái)包含兩大部分:后臺(tái)實(shí)驗(yàn)設(shè)備集群和云實(shí)驗(yàn)服務(wù)平臺(tái)。云平臺(tái)包含一系列虛擬服務(wù)器,每個(gè)服務(wù)器均已搭建FPGA軟件開(kāi)發(fā)環(huán)境,且可與后臺(tái)任意一個(gè)實(shí)驗(yàn)設(shè)備綁定。學(xué)生可采用任意PC終端在任意時(shí)間遠(yuǎn)程登錄云服務(wù)平臺(tái)。云平臺(tái)將為每位登錄學(xué)生分配一臺(tái)虛擬服務(wù)器,學(xué)生可直接在虛擬服務(wù)器上進(jìn)行實(shí)驗(yàn)操作。由于服務(wù)器已搭建軟件開(kāi)發(fā)環(huán)境,學(xué)生不再需要在用戶(hù)終端上安裝及配置軟件開(kāi)發(fā)環(huán)境。每個(gè)服務(wù)器會(huì)關(guān)聯(lián)一臺(tái)空閑的實(shí)驗(yàn)設(shè)備,用戶(hù)遠(yuǎn)程操作實(shí)現(xiàn)對(duì)設(shè)備的控制,并將設(shè)備的運(yùn)行狀態(tài)通過(guò)遠(yuǎn)程視頻傳輸顯示在用戶(hù)終端上。此共享云實(shí)驗(yàn)平臺(tái)不僅提高了實(shí)驗(yàn)資源的利用率,還解決了上位機(jī)與下位機(jī)實(shí)驗(yàn)條件對(duì)學(xué)生實(shí)驗(yàn)操作的約束,使得學(xué)生能隨時(shí)(不局限在課堂時(shí)間)隨地(任選一臺(tái)PC終端即可直接開(kāi)發(fā))進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)改革工作前期推廣中出現(xiàn)了兩大問(wèn)題:①指導(dǎo)教師需在有限課堂時(shí)間內(nèi)指導(dǎo)并驗(yàn)收數(shù)十位甚至上百位學(xué)生,平均分配到每名學(xué)生的時(shí)間極少,那么如何在有限課堂時(shí)間內(nèi)讓每位學(xué)生得到充分指導(dǎo)。②指導(dǎo)教師對(duì)改革新內(nèi)容不熟悉,且無(wú)法及時(shí)得到充分的幫助,指導(dǎo)教師又該如何學(xué)習(xí)以盡快掌握改革新內(nèi)容。
針對(duì)上述問(wèn)題,我們?cè)诮虒W(xué)過(guò)程中嘗試了培養(yǎng)學(xué)生助教的方法,從所帶班級(jí)中選出一定比例的學(xué)生助教,讓他們與指導(dǎo)教師一起參與改革新內(nèi)容的學(xué)習(xí)與探討中。通過(guò)不定期組織研討會(huì),提出各個(gè)實(shí)驗(yàn)中所需研究的問(wèn)題,針對(duì)每個(gè)問(wèn)題分析出幾種可能答案,再針對(duì)每種答案列出數(shù)種驗(yàn)證方法,然后分配任務(wù),對(duì)每種驗(yàn)證方法進(jìn)行實(shí)測(cè)驗(yàn)證,最終尋找到問(wèn)題的答案。上述方法的使用可以有效解決前期推廣中的兩大問(wèn)題:①加快改革新內(nèi)容的學(xué)習(xí)進(jìn)程。指導(dǎo)教師獨(dú)自研究改革新內(nèi)容時(shí)容易陷入困境,通過(guò)與多名優(yōu)秀學(xué)生共同討論及分工實(shí)踐,則可以更快解決問(wèn)題,保證改革新內(nèi)容的教學(xué)順利推進(jìn)。②每位學(xué)生可得到更充分的實(shí)驗(yàn)指導(dǎo)。假設(shè)有90名學(xué)生,一堂實(shí)驗(yàn)課90 min。若不培養(yǎng)學(xué)生助教,指導(dǎo)教師平均分到每位學(xué)生的指導(dǎo)時(shí)間僅為1 min。采用助教培養(yǎng)機(jī)制后,可從每9名學(xué)生中選出1名助教,并由此助教協(xié)助輔導(dǎo)8名學(xué)生的實(shí)驗(yàn)操作與調(diào)試工作,較好地延長(zhǎng)每位學(xué)生平均接受指導(dǎo)的時(shí)間。
我們從理論知識(shí)掌握情況、復(fù)雜計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)實(shí)踐技能、軟硬件課程群貫通能力培養(yǎng)、應(yīng)用案例創(chuàng)新開(kāi)發(fā)等方面對(duì)改革效果進(jìn)行評(píng)估。
(1)理論知識(shí)的全面與深入理解。傳統(tǒng)計(jì)算機(jī)組成原理實(shí)驗(yàn)以驗(yàn)證型為主,學(xué)生主要觀看系統(tǒng)各部分運(yùn)行演示效果,難以深入理解系統(tǒng)各部件內(nèi)部結(jié)構(gòu)及工作原理。實(shí)驗(yàn)改革后,學(xué)生需學(xué)習(xí)甚至自主設(shè)計(jì)各計(jì)算機(jī)部件內(nèi)部電路,并掌握其工作原理,這對(duì)于計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課程的理論學(xué)習(xí)具有重要的促進(jìn)作用。
(2)復(fù)雜計(jì)算機(jī)系統(tǒng)綜合開(kāi)發(fā)能力的提升。傳統(tǒng)組成原理實(shí)驗(yàn)箱各部件硬件功能固化,不支持自主開(kāi)發(fā),學(xué)生以驗(yàn)證系統(tǒng)各部件功能為主。實(shí)驗(yàn)改革后,要求學(xué)生基于FPGA可重編程硬件平臺(tái),采用整體到局部逐層模塊化分解思維、FPGA計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)技術(shù)、硬件測(cè)試及軟件仿真等系統(tǒng)驗(yàn)證方法,自主開(kāi)發(fā)一個(gè)復(fù)雜的計(jì)算機(jī)系統(tǒng),增強(qiáng)學(xué)生對(duì)復(fù)雜計(jì)算機(jī)系統(tǒng)的綜合開(kāi)發(fā)能力。
(3)軟硬件課程群貫通能力的培養(yǎng)。實(shí)施改革前,各核心基礎(chǔ)課程采用不同的實(shí)驗(yàn)箱,實(shí)驗(yàn)環(huán)節(jié)相互獨(dú)立。實(shí)施課程改革后,我們將計(jì)算機(jī)組成原理實(shí)驗(yàn)與編譯原理及操作系統(tǒng)實(shí)驗(yàn)在同一個(gè)SWORD開(kāi)發(fā)板上進(jìn)行了貫通。在大二上學(xué)期,我們通過(guò)數(shù)字邏輯課程改革,要求學(xué)生在SWORD開(kāi)發(fā)板上開(kāi)發(fā)基本的數(shù)字邏輯部件;大二下學(xué)期,我們通過(guò)計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課程的改革,要求學(xué)生對(duì)之前開(kāi)發(fā)的數(shù)字邏輯部件進(jìn)行綜合,從而開(kāi)發(fā)出一個(gè)CPU系統(tǒng);在大三學(xué)年的編譯原理及操作系統(tǒng)教學(xué)中,我們進(jìn)一步要求學(xué)生開(kāi)發(fā)出對(duì)應(yīng)于此前CPU的編譯器及操作系統(tǒng),并通過(guò)此編譯器將操作系統(tǒng)編譯到此前開(kāi)發(fā)的CPU上運(yùn)行。通過(guò)上述課程群的貫通,學(xué)生具備了在同一個(gè)實(shí)驗(yàn)平臺(tái)上開(kāi)發(fā)出一個(gè)CPU、1個(gè)編譯器及1個(gè)操作系統(tǒng)的系統(tǒng)能力。
(4)應(yīng)用案例創(chuàng)新開(kāi)發(fā)。我們鼓勵(lì)學(xué)生在所開(kāi)發(fā)的CPU硬件平臺(tái)上通過(guò)匯編指令編程進(jìn)行上層應(yīng)用程序開(kāi)發(fā)。目前,已有部分學(xué)生基于SWORD開(kāi)發(fā)板所構(gòu)建的CPU成功開(kāi)發(fā)了一些小游戲程序,如貪吃蛇、俄羅斯方塊、LED乒乓球等。這些應(yīng)用程序的開(kāi)發(fā)證明學(xué)生具備了對(duì)數(shù)字邏輯、計(jì)算機(jī)組成原理、編譯原理、匯編語(yǔ)言等課程進(jìn)行貫通的能力,對(duì)于提高學(xué)生的計(jì)算機(jī)系統(tǒng)能力具有重要意義。
此外,我們還收集了有關(guān)教學(xué)改革效果的調(diào)查反饋數(shù)據(jù)。在實(shí)驗(yàn)內(nèi)容難易程度方面,認(rèn)為實(shí)驗(yàn)1難、中等及容易的學(xué)生分別占14%、44%、42%,實(shí)驗(yàn)2分別為8%、70%、22%,實(shí)驗(yàn)3分別為18%、72%、10%,實(shí)驗(yàn)4分別為16%、66%、18%,實(shí)驗(yàn)5則為50%、36%、14%。從結(jié)果可看出,采用模塊化分解、逐級(jí)驗(yàn)證等教學(xué)方法可有效降低復(fù)雜計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)復(fù)雜度,除了50%的學(xué)生感覺(jué)實(shí)驗(yàn)5指令集擴(kuò)展較難外,多數(shù)學(xué)生均認(rèn)為可較好地理解與掌握其余4個(gè)CPU開(kāi)發(fā)的基礎(chǔ)實(shí)驗(yàn),證明多數(shù)學(xué)生已具備開(kāi)發(fā)CPU系統(tǒng)的能力。對(duì)類(lèi)比教學(xué)、云實(shí)驗(yàn)平臺(tái)建設(shè)、學(xué)生助教等方法的調(diào)查結(jié)果表明,92%的學(xué)生認(rèn)為類(lèi)比教學(xué)法具有深入淺出的教學(xué)效果,幫助他們快速且深入地掌握基于FPGA的CPU設(shè)計(jì)與實(shí)現(xiàn)技術(shù);82%的學(xué)生認(rèn)為共享云實(shí)驗(yàn)平臺(tái)建設(shè)提高了實(shí)驗(yàn)資源的利用效率,且為他們的實(shí)驗(yàn)提供了較大的便捷性;96%的學(xué)生認(rèn)為采用學(xué)生助教提高了實(shí)驗(yàn)教學(xué)質(zhì)量,且活躍了實(shí)驗(yàn)課堂氣氛,擔(dān)任助教的學(xué)生則普遍認(rèn)為在與教師進(jìn)行集體研討的過(guò)程中,培養(yǎng)了團(tuán)隊(duì)合作能力,學(xué)會(huì)了發(fā)現(xiàn)問(wèn)題及分析問(wèn)題的思維方式并加深了對(duì)理論知識(shí)的理解,提高了他們?cè)诰蜆I(yè)及升學(xué)上的競(jìng)爭(zhēng)力。
為培養(yǎng)學(xué)生的計(jì)算機(jī)系統(tǒng)能力,筆者對(duì)計(jì)算機(jī)組成原理課程進(jìn)行改革,提出基于FPGA開(kāi)發(fā)平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)多流水線MIPS指令集CPU的實(shí)驗(yàn)體系;針對(duì)教學(xué)改革推廣中所遇到的系統(tǒng)實(shí)現(xiàn)復(fù)雜度高、學(xué)生FPGA開(kāi)發(fā)基礎(chǔ)薄弱、實(shí)驗(yàn)場(chǎng)地與實(shí)驗(yàn)時(shí)間受限、有限課堂時(shí)間內(nèi)難以得到充分實(shí)驗(yàn)輔導(dǎo)等問(wèn)題,探索了模塊化分解與逐級(jí)驗(yàn)證、類(lèi)比教學(xué)、實(shí)驗(yàn)云平臺(tái)建設(shè)、學(xué)生助教模式等教學(xué)方法。實(shí)踐效果證實(shí),上述教學(xué)方法的推廣可加深學(xué)生對(duì)理論知識(shí)的理解,增強(qiáng)學(xué)生開(kāi)發(fā)復(fù)雜計(jì)算機(jī)系統(tǒng)的實(shí)踐技能,并可使學(xué)生具備對(duì)多門(mén)核心專(zhuān)業(yè)課程進(jìn)行貫通的能力,對(duì)于計(jì)算機(jī)專(zhuān)業(yè)人才的系統(tǒng)能力培養(yǎng)具有重要作用。
[1] 王志英, 周興社, 袁春風(fēng), 等. 計(jì)算機(jī)專(zhuān)業(yè)學(xué)生系統(tǒng)能力培養(yǎng)和系統(tǒng)課程體系設(shè)置研究[J]. 計(jì)算機(jī)教育, 2013(9): 1-6.
[2] 教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)教學(xué)指導(dǎo)委員會(huì). 高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)人才發(fā)展戰(zhàn)略研究報(bào)告暨專(zhuān)業(yè)規(guī)范[M]. 北京: 清華大學(xué)出版社, 2006: 220-227.
[3] 教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)教學(xué)指導(dǎo)委員會(huì). 高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)人才專(zhuān)業(yè)能力構(gòu)成與培養(yǎng)[M]. 北京: 機(jī)械工業(yè)出版社, 2010: 72-78.
[4] ACM/IEEE–CS Joint Task Force on Computing Curricula. Computer science curricula 2013[EB/OL]. (2013-12-20) [2017-09-15].http://ai.stanford.edu/users/sahami/CS2013/.
[5] 高小鵬. 計(jì)算機(jī)專(zhuān)業(yè)系統(tǒng)能力培養(yǎng)的技術(shù)途徑[J]. 中國(guó)大學(xué)教學(xué), 2014(8): 53-57.
[6] 施青松, 陳文智. 強(qiáng)化計(jì)算機(jī)課程貫通教學(xué) 深入面向系統(tǒng)能力培養(yǎng)[J]. 中國(guó)大學(xué)教學(xué), 2014(12): 61-65.
[7] 劉衛(wèi)東, 張悠慧, 向勇, 等. 面向系統(tǒng)能力培養(yǎng)的計(jì)算機(jī)專(zhuān)業(yè)課程體系建設(shè)實(shí)踐[J]. 中國(guó)大學(xué)教學(xué), 2014(8): 48-52.
[8] 袁春風(fēng), 楊若瑜, 王帥, 等. 計(jì)算機(jī)組成與其他課程之間的關(guān)聯(lián)內(nèi)容分析[J]. 計(jì)算機(jī)教育, 2015(17): 35-38.