吳繼明,鐘群鋒,曾碧卿
(華南師范大學(xué) 計(jì)算機(jī)學(xué)院,廣東 廣州 501631)
計(jì)算機(jī)組成原理是一門(mén)研究計(jì)算機(jī)基本硬件組成和內(nèi)部運(yùn)行原理的課程,具有理論性強(qiáng)、難度大、內(nèi)容抽象、實(shí)踐性強(qiáng)等特點(diǎn),是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)的核心課程,在計(jì)算機(jī)專(zhuān)業(yè)知識(shí)結(jié)構(gòu)中起著承上啟下的關(guān)鍵作用[1]。與課程配套的計(jì)算機(jī)組成原理實(shí)驗(yàn)課程,是實(shí)現(xiàn)理論知識(shí)與實(shí)踐相結(jié)合的重要環(huán)節(jié),國(guó)內(nèi)外許多高校都在該專(zhuān)業(yè)安排相應(yīng)實(shí)驗(yàn),并以CPU設(shè)計(jì)為主體開(kāi)展實(shí)踐教學(xué),培養(yǎng)學(xué)生的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)能力[2-8]。當(dāng)前普通高校的計(jì)算機(jī)組成原理實(shí)驗(yàn)課程的教學(xué)方式主要有2種形式:一種是以硬件描述語(yǔ)言和仿真器為主的在FPGA上進(jìn)行的硬件設(shè)計(jì)方式[9-12];一種是以實(shí)驗(yàn)箱為主的驗(yàn)證方式[13]?;谟布枋稣Z(yǔ)言進(jìn)行的FPGA硬件開(kāi)發(fā)設(shè)計(jì)方式,可以極大地培養(yǎng)學(xué)生的硬件設(shè)計(jì)能力和工程能力,但是對(duì)非重點(diǎn)大學(xué)的學(xué)生來(lái)講學(xué)習(xí)成本高、實(shí)驗(yàn)室硬件環(huán)境需要配套設(shè)置。基于實(shí)驗(yàn)箱的實(shí)驗(yàn)課程教學(xué)方式,又讓學(xué)生難以深入理解計(jì)算機(jī)各個(gè)部件的具體結(jié)構(gòu)和相互邏輯關(guān)系以及計(jì)算機(jī)的工作工程。
為了更好地培養(yǎng)學(xué)生的計(jì)算機(jī)系統(tǒng)分析、設(shè)計(jì)能力,突出實(shí)驗(yàn)過(guò)程中對(duì)器件之間數(shù)據(jù)、控制關(guān)系的理解,教師應(yīng)嘗試在硬件仿真平臺(tái)Quartus II上,引領(lǐng)學(xué)生使用硬件描述語(yǔ)言VHDL完成實(shí)驗(yàn)箱上各個(gè)模塊的仿真設(shè)計(jì)和模型機(jī)的設(shè)計(jì)。學(xué)生在仿真平臺(tái)上分析出數(shù)據(jù)之間的關(guān)系、理解好器件之間的邏輯關(guān)系,再到實(shí)驗(yàn)箱上完成工程驗(yàn)證,但是,實(shí)驗(yàn)發(fā)現(xiàn)學(xué)生不是很愿意花時(shí)間自學(xué)VHDL語(yǔ)言和modlesim仿真平臺(tái)的使用;另外,即使完成功能仿真后,學(xué)生在理解仿真數(shù)據(jù)之間的關(guān)系上也存在一定困難,尤其是對(duì)于運(yùn)行測(cè)試程序的模型機(jī),分析仿真數(shù)據(jù)就更不容易。
Logisim是一款開(kāi)源的數(shù)字電路仿真軟件,無(wú)須安裝,是一種符號(hào)圖設(shè)計(jì)語(yǔ)言,提供硬件設(shè)計(jì)所需的各種基本器件,器件都是參數(shù)化設(shè)定的;仿真輸出界面可按需定制,每個(gè)器件或者每根連線上的數(shù)據(jù)都可以用數(shù)值、指示燈等方式顯式實(shí)時(shí)輸出,非常直觀。以注重邏輯設(shè)計(jì)能力培養(yǎng)的仿真平臺(tái)Logisim輔助實(shí)驗(yàn)課程的教學(xué),既可以培養(yǎng)學(xué)生的自學(xué)能力、分析解決問(wèn)題的能力和邏輯設(shè)計(jì)能力,又可以提高實(shí)驗(yàn)箱上工程驗(yàn)證實(shí)驗(yàn)的質(zhì)量和效率,同時(shí)也可極大減少由于不懂原理盲目連線使用實(shí)驗(yàn)箱導(dǎo)致的設(shè)備損壞率。
實(shí)驗(yàn)是理論的延續(xù)與拓展,實(shí)驗(yàn)內(nèi)容的安排既要考慮理論知識(shí)的深度,又要兼顧學(xué)生的綜合能力。傳統(tǒng)的基于實(shí)驗(yàn)箱的驗(yàn)證實(shí)驗(yàn),主要有運(yùn)算器組成、雙端口存儲(chǔ)器、數(shù)據(jù)通路、微程序控制器、CPU組成與機(jī)器指令運(yùn)行、中斷原理?;趯?shí)驗(yàn)學(xué)時(shí)的限制和學(xué)生綜合素質(zhì)的考慮,大多數(shù)普通高校只開(kāi)設(shè)5個(gè)驗(yàn)證實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)3節(jié)課。
驗(yàn)證實(shí)驗(yàn)課之后,學(xué)生對(duì)理論知識(shí)的理解難以進(jìn)一步深入,動(dòng)手實(shí)踐能力只能停留在端口連線和數(shù)據(jù)觀測(cè)層面。為了改善實(shí)驗(yàn)效果,加強(qiáng)學(xué)生對(duì)理論知識(shí)的理解與應(yīng)用,每個(gè)驗(yàn)證實(shí)驗(yàn)增加虛擬仿真設(shè)計(jì)環(huán)節(jié),擴(kuò)充2個(gè)綜合實(shí)驗(yàn),做到以虛輔實(shí),虛實(shí)結(jié)合,提高實(shí)驗(yàn)課程的教學(xué)效果。實(shí)驗(yàn)內(nèi)容見(jiàn)表1,每個(gè)實(shí)驗(yàn)開(kāi)始的前2周,教師根據(jù)學(xué)生名單隨機(jī)產(chǎn)生學(xué)生分組(2人一組),每個(gè)小組相互合作完成實(shí)驗(yàn)內(nèi)容的仿真設(shè)計(jì)、功能仿真界面設(shè)計(jì)和仿真數(shù)據(jù)的分析。在到實(shí)驗(yàn)室進(jìn)行驗(yàn)證實(shí)驗(yàn)之前,要求學(xué)生完成相應(yīng)實(shí)驗(yàn)的仿真設(shè)計(jì),通過(guò)虛擬仿真技術(shù)手段(預(yù)設(shè)的仿真設(shè)計(jì)內(nèi)容)加深對(duì)相應(yīng)理論知識(shí)與驗(yàn)證實(shí)驗(yàn)的理解,培養(yǎng)實(shí)驗(yàn)過(guò)程中的錯(cuò)誤查找與調(diào)試能力。
理論課堂上,教師用一次課的時(shí)間介紹仿真平臺(tái)Logisim的特點(diǎn),幫助學(xué)生輕松掌握在該平臺(tái)上進(jìn)行邏輯電路設(shè)計(jì)的方法以及根據(jù)需要觀察的數(shù)據(jù)對(duì)象設(shè)計(jì)功能仿真界面進(jìn)行邏輯功能仿真分析的技巧。理論課之后,學(xué)生就可以利用自己的閑余時(shí)間進(jìn)行運(yùn)算器、存儲(chǔ)器、控制器等模塊的設(shè)計(jì),通過(guò)仿真界面分析數(shù)據(jù),理解其工作原理,撰寫(xiě)實(shí)驗(yàn)預(yù)習(xí)報(bào)告。
實(shí)驗(yàn)預(yù)習(xí)報(bào)告是整個(gè)實(shí)驗(yàn)教學(xué)過(guò)程中的一個(gè)重要環(huán)節(jié),反映學(xué)生是否進(jìn)行預(yù)先學(xué)習(xí),是否基于虛擬仿真平臺(tái)理解實(shí)驗(yàn)原理,是否對(duì)實(shí)驗(yàn)箱上的操作步驟了如指掌。實(shí)驗(yàn)預(yù)習(xí)報(bào)告模板由實(shí)驗(yàn)內(nèi)容、工作過(guò)程、數(shù)據(jù)分析和實(shí)驗(yàn)步驟4塊構(gòu)成,其中,工作過(guò)程板塊描述操作控制信號(hào)和時(shí)序信號(hào)作用下器件之間的邏輯關(guān)系——學(xué)生用理解的語(yǔ)言描述在虛擬仿真設(shè)計(jì)中領(lǐng)悟到的邏輯關(guān)系;數(shù)據(jù)分析板塊基于虛擬仿真設(shè)計(jì)描述數(shù)據(jù)的流動(dòng)路徑和相應(yīng)的驅(qū)動(dòng)信號(hào),反映模塊間的運(yùn)行機(jī)制與原理;實(shí)驗(yàn)步驟板塊基于虛擬仿真設(shè)計(jì)過(guò)程中的理解,詳細(xì)描述實(shí)驗(yàn)箱上驗(yàn)證實(shí)驗(yàn)的操作步驟及需要記錄的有關(guān)數(shù)據(jù)。
表1 虛實(shí)結(jié)合的實(shí)驗(yàn)內(nèi)容
完成符合規(guī)范格式的實(shí)驗(yàn)預(yù)習(xí)報(bào)告后,到實(shí)驗(yàn)室的實(shí)驗(yàn)箱上進(jìn)行工程驗(yàn)證。每個(gè)學(xué)生選擇一臺(tái)實(shí)驗(yàn)箱,原合作小組內(nèi)的學(xué)生空間上分離,在實(shí)驗(yàn)課堂上不允許看實(shí)驗(yàn)教學(xué)視頻等資料,基于自己的實(shí)驗(yàn)預(yù)習(xí)報(bào)告,在理解與思考的環(huán)境中獨(dú)立完成本次實(shí)驗(yàn)課程的內(nèi)容。在實(shí)驗(yàn)預(yù)習(xí)報(bào)告后面補(bǔ)充實(shí)驗(yàn)箱上的觀測(cè)數(shù)據(jù),記錄實(shí)驗(yàn)過(guò)程中出現(xiàn)的問(wèn)題、解決問(wèn)題的辦法和取得的效果。實(shí)驗(yàn)課程后,當(dāng)堂提交實(shí)驗(yàn)預(yù)習(xí)報(bào)告,避免學(xué)生之間相互抄襲。
2.3.1 雙端口存儲(chǔ)器案例
在基于實(shí)驗(yàn)箱的雙端口存儲(chǔ)器驗(yàn)證實(shí)驗(yàn)中,訪存的地址和數(shù)據(jù)都需要通過(guò)連接到公共數(shù)據(jù)總線DBUS上的置數(shù)撥動(dòng)開(kāi)關(guān)SW來(lái)設(shè)置,但是許多學(xué)生經(jīng)常在輸入訪存地址和數(shù)據(jù)方面出錯(cuò)。在控制信號(hào)和置入數(shù)據(jù)(地址)出現(xiàn)邏輯錯(cuò)誤后,學(xué)生明白指定單元寫(xiě)入的數(shù)據(jù)不對(duì),但是是哪個(gè)操作環(huán)節(jié)錯(cuò)誤,不能在實(shí)驗(yàn)箱上直觀地觀察到。為了幫助學(xué)生更好地理解雙端口存儲(chǔ)器的工作過(guò)程,可在教學(xué)中引入基于Logisim仿真平臺(tái)的雙端口存儲(chǔ)器仿真設(shè)計(jì)。設(shè)計(jì)中,根據(jù)需要觀察的數(shù)據(jù)對(duì)象和工作過(guò)程,在雙端口存儲(chǔ)器的邏輯圖中添加探針,自定義功能仿真的數(shù)據(jù)界面,如圖1所示。
圖1 雙端口存儲(chǔ)器實(shí)驗(yàn)
圖1右側(cè)是設(shè)計(jì)雙端口存儲(chǔ)器的邏輯電路,左側(cè)是根據(jù)需要觀察的數(shù)據(jù)對(duì)象設(shè)計(jì)的功能仿真界面,清晰地列出實(shí)驗(yàn)操作步驟和實(shí)驗(yàn)過(guò)程中相應(yīng)數(shù)據(jù)的變化。①通過(guò)SW開(kāi)關(guān)手動(dòng)設(shè)置數(shù)據(jù)02H,給出有效的控制信號(hào)LDAR1和時(shí)序信號(hào)T4,即完成左端口訪存地址的設(shè)定與鎖存;②通過(guò)SW開(kāi)關(guān)手動(dòng)設(shè)置數(shù)據(jù)22H,給出有效的控制信號(hào)CEL#、LRW=1和時(shí)序信號(hào)T3,即完成雙端口RAM左端口對(duì)02H單元寫(xiě)入數(shù)據(jù)22H;③通過(guò)SW開(kāi)關(guān)設(shè)置數(shù)據(jù)02H,給出有效的控制信號(hào)LDAR2和時(shí)序信號(hào)T2,即完成右端口訪存地址的設(shè)定與鎖存;④給出有效的控制信號(hào)CER#,可立即觀察到RAM右端口輸出數(shù)據(jù)22H,再次給出有效的控制信號(hào)LDIR、時(shí)序信號(hào)T4,可觀察到IR的輸出為22H。另外,對(duì)RAM左端口進(jìn)行訪問(wèn)時(shí),LED指示燈通過(guò)“紅色亮”狀態(tài)表示該操作;對(duì)RAM左端口進(jìn)行讀、寫(xiě)操作或者右端口進(jìn)行讀操作時(shí),相應(yīng)的LED指示燈會(huì)呈現(xiàn)亮的狀態(tài),便于學(xué)生清楚當(dāng)前的操作類(lèi)型,判斷控制信號(hào)的給出是否正確。
有了這樣一個(gè)預(yù)先進(jìn)行的虛擬仿真設(shè)計(jì)過(guò)程和數(shù)據(jù)仿真分析,學(xué)生就可以清晰表達(dá)出驗(yàn)證實(shí)驗(yàn)的操作步驟,理解實(shí)驗(yàn)內(nèi)容的本質(zhì)及其內(nèi)部器件的工作過(guò)程,學(xué)生回到實(shí)驗(yàn)箱上就可以輕松完成實(shí)驗(yàn)和理解其工作原理。當(dāng)驗(yàn)證實(shí)驗(yàn)出現(xiàn)錯(cuò)誤時(shí),學(xué)生也能夠快速查找出錯(cuò)誤原因并加以糾正。
2.3.2 微程序控制器案例
微程序思想控制器是一教學(xué)重點(diǎn)和難點(diǎn),學(xué)生在傳統(tǒng)的實(shí)驗(yàn)箱驗(yàn)證過(guò)程中,即使采用單拍的工作方式,也難以依據(jù)指令周期流程圖透徹地理解指令的工作過(guò)程。另外,在每個(gè)CPU周期內(nèi)需要哪些有效的控制信號(hào)、如何產(chǎn)生這些控制信號(hào),數(shù)據(jù)是如何在器件之間流動(dòng)的,在實(shí)驗(yàn)箱的驗(yàn)證實(shí)驗(yàn)過(guò)程中無(wú)法快速直觀地識(shí)別出,尤其是當(dāng)運(yùn)行的機(jī)器指令程序出錯(cuò)時(shí),學(xué)生不知道該從哪里入手查錯(cuò)調(diào)試。
為了幫助學(xué)生更好地完成驗(yàn)證實(shí)驗(yàn)并理解其內(nèi)部原理,可在教學(xué)中引入虛擬仿真設(shè)計(jì)環(huán)節(jié)。在教學(xué)過(guò)程中,教師講解完基本理論原理后,引導(dǎo)學(xué)生完成控制器的設(shè)計(jì)和模型機(jī)的連接,這樣學(xué)生就可以在一個(gè)仿真設(shè)計(jì)的環(huán)境中透徹理解控制器的原理與模型機(jī)的運(yùn)行過(guò)程。圖2所示為應(yīng)用微程序方法設(shè)計(jì)CPU中的控制器并完成實(shí)驗(yàn)箱上模型機(jī)設(shè)計(jì)的邏輯電路。為了清晰理解機(jī)器指令程序的工作過(guò)程和相應(yīng)模塊器件之間的數(shù)據(jù)關(guān)系,掌握計(jì)算機(jī)的運(yùn)行過(guò)程,設(shè)計(jì)一個(gè)模型機(jī)的功能仿真界面,如圖3所示。完成模型機(jī)邏輯電路設(shè)計(jì)后,學(xué)生就完全可以掌握微程序控制器、運(yùn)算器、RAM及其他部件之間的邏輯關(guān)系與數(shù)據(jù)通路連接;基于這個(gè)功能仿真界面可以徹底明白程序、微程序、指令、微指令之間的關(guān)系,了解計(jì)算機(jī)的運(yùn)行過(guò)程。
圖2 多周期CPU模型機(jī)邏輯電路
圖3 多周期CPU模型機(jī)功能仿真界面——執(zhí)行完指令LAD R2,6的截圖
為了比較教學(xué)效果,華南師范大學(xué)計(jì)算機(jī)學(xué)院把2016級(jí)計(jì)算機(jī)組成原理課程的4個(gè)教學(xué)班分成2個(gè)教改班和2個(gè)傳統(tǒng)班。2個(gè)教改實(shí)驗(yàn)班的學(xué)生為188人,實(shí)驗(yàn)采用虛擬仿真技術(shù)進(jìn)行輔助教學(xué),要求在實(shí)體驗(yàn)證實(shí)驗(yàn)之前完成虛擬仿真設(shè)計(jì);2個(gè)傳統(tǒng)實(shí)驗(yàn)班的學(xué)生是189人,在理論學(xué)習(xí)后直接到機(jī)房做實(shí)體驗(yàn)證實(shí)驗(yàn)。課程結(jié)束后,通過(guò)對(duì)全體學(xué)生的實(shí)驗(yàn)報(bào)告、機(jī)房完成實(shí)驗(yàn)的時(shí)間及實(shí)驗(yàn)過(guò)程中的釋疑次數(shù)進(jìn)行分析,可以發(fā)現(xiàn)2個(gè)教改班和2個(gè)傳統(tǒng)班存在顯著差異,統(tǒng)計(jì)數(shù)據(jù)見(jiàn)表2。其中,評(píng)價(jià)指標(biāo)Ta指實(shí)驗(yàn)平均耗時(shí),計(jì)算方法為:Ta=(T1-T2)/2,T1為班級(jí)上50%學(xué)生完成該實(shí)驗(yàn)的時(shí)間,T2為班級(jí)上90%學(xué)生完成該實(shí)驗(yàn)的時(shí)間;評(píng)價(jià)指標(biāo)Q_n指實(shí)驗(yàn)過(guò)程有疑惑或困難的學(xué)生數(shù);評(píng)價(jià)指標(biāo)Sa指班級(jí)上學(xué)生完成該實(shí)驗(yàn)的平均成績(jī)。
表2的統(tǒng)計(jì)數(shù)據(jù)表明,在3個(gè)評(píng)價(jià)指標(biāo)上教改班都優(yōu)于傳統(tǒng)班,尤其是實(shí)驗(yàn)5模型機(jī)實(shí)驗(yàn),傳統(tǒng)班的學(xué)生在理解模型機(jī)的工作原理與解決機(jī)器指令運(yùn)行正確性方面存在很多問(wèn)題,大多數(shù)學(xué)生超時(shí)完成實(shí)驗(yàn)?;谔摂M仿真技術(shù)輔助的實(shí)驗(yàn)教學(xué)過(guò)程對(duì)教師和學(xué)生產(chǎn)生很大影響,主要體現(xiàn)在4個(gè)方面。①實(shí)驗(yàn)過(guò)程得到極大改變。學(xué)生不再像以前那樣對(duì)著實(shí)驗(yàn)課本逐條接線,不需要戴著耳機(jī)看著視頻了解實(shí)驗(yàn)原理與工作過(guò)程。②每個(gè)學(xué)生完全可以根據(jù)自己對(duì)模塊工作原理的理解,準(zhǔn)確、快速地完成實(shí)驗(yàn)箱上線路的連接,對(duì)每次按QD按鈕產(chǎn)生的一個(gè)機(jī)器周期內(nèi),數(shù)據(jù)總線、地址總線上LED指示燈的亮滅狀態(tài)表示的數(shù)據(jù)了如指掌。③當(dāng)某個(gè)指示燈表征的數(shù)據(jù)不對(duì)時(shí),學(xué)生可以自主分析查找判斷出是邏輯電路連接問(wèn)題,還是實(shí)驗(yàn)箱系統(tǒng)問(wèn)題。④實(shí)驗(yàn)課堂上,指導(dǎo)教師的角色發(fā)生很大的轉(zhuǎn)變,不再是以前那樣忙于解答學(xué)生遇到的問(wèn)題,而是穿梭于各個(gè)學(xué)生之間,對(duì)他們提出問(wèn)題以深化實(shí)驗(yàn)內(nèi)容,既可以判斷學(xué)生是否真正懂得原理,又可以察覺(jué)是否有人濫竽充數(shù)。
表2 計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)效果統(tǒng)計(jì)分析表
課程結(jié)束后的調(diào)查問(wèn)卷顯示,傳統(tǒng)班的學(xué)生大多數(shù)認(rèn)為實(shí)驗(yàn)太復(fù)雜、太麻煩,一旦出錯(cuò)不知如何定位分析,面對(duì)實(shí)驗(yàn)箱很難理解背后的工作原理。教改班的學(xué)生則普遍反映能輕松完成實(shí)驗(yàn)箱的驗(yàn)證實(shí)驗(yàn),在實(shí)驗(yàn)過(guò)程中排除故障時(shí)也顯得思路清晰、信心滿滿,對(duì)工作原理心中有數(shù);甚至有的學(xué)生還希望能擴(kuò)充指令系統(tǒng)做一個(gè)自己的CPU,下載到實(shí)驗(yàn)箱上進(jìn)行工程驗(yàn)證。在這種基于仿真設(shè)計(jì)的教學(xué)方式下,把傳統(tǒng)的驗(yàn)證實(shí)驗(yàn)轉(zhuǎn)換為實(shí)踐開(kāi)發(fā)的過(guò)程,既能夠調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,又可以極大地培養(yǎng)學(xué)生的邏輯設(shè)計(jì)能力和分析解決問(wèn)題能力,同時(shí)還能有效遏制實(shí)驗(yàn)報(bào)告中相互抄襲的現(xiàn)象,改變實(shí)驗(yàn)過(guò)程中學(xué)生不知其所以然的狀態(tài)。
基于仿真設(shè)計(jì)輔助的實(shí)驗(yàn)教學(xué)過(guò)程虛實(shí)結(jié)合、相輔相成,使學(xué)生能夠在仿真設(shè)計(jì)過(guò)程中加深對(duì)所學(xué)理論知識(shí)的理解與應(yīng)用,其按需設(shè)計(jì)的功能仿真界面有助于促進(jìn)學(xué)生理解計(jì)算機(jī)各模塊的工作原理與整機(jī)的工作過(guò)程。在同一年級(jí)不同班級(jí)進(jìn)行的實(shí)驗(yàn)教改效果表明,虛擬仿真設(shè)計(jì)先行的教學(xué)方式更有利于學(xué)生借助可視化過(guò)程透徹理解原理,回到實(shí)驗(yàn)箱上后輕松自如地完成實(shí)體實(shí)驗(yàn),同時(shí)也轉(zhuǎn)換了實(shí)驗(yàn)指導(dǎo)教師的工作重心——通過(guò)提問(wèn)的互動(dòng)方式挖掘知識(shí)的深度。