許海杰,劉 升
計算機(jī)組成原理是計算機(jī)學(xué)科的專業(yè)課程,也是全國研究生招生的統(tǒng)考課程.該課程的教學(xué)目的是使學(xué)生理解計算機(jī)各個部件的工作原理,建立計算機(jī)的整機(jī)概念,從而具備計算機(jī)系統(tǒng)整機(jī)和部件的分析和設(shè)計能力.該課程不僅涉及軟件和硬件方面的大量知識,而且內(nèi)容比較抽象,因此實(shí)驗(yàn)教學(xué)環(huán)節(jié)十分重要.
計算機(jī)組成原理實(shí)驗(yàn)教學(xué)主要是使用配套的實(shí)驗(yàn)教學(xué)平臺.國內(nèi)有多家科教儀器廠研制了計算機(jī)組成原理課程配套的實(shí)驗(yàn)平臺.盡管這些實(shí)驗(yàn)平臺由不同廠家生產(chǎn),但工作原理和實(shí)現(xiàn)方法卻基本相同,都是由單片機(jī)結(jié)合FPGA或者CPLD作為核心控制單元,實(shí)現(xiàn)計算機(jī)組成部分功能的模擬.目前實(shí)驗(yàn)平臺存在的主要問題是不能真實(shí)反映實(shí)際計算機(jī)的工作原理,使得很多重要的實(shí)驗(yàn)無法開展.
近年來,計算機(jī)組成原理實(shí)驗(yàn)教學(xué)的研究現(xiàn)狀主要集中在以下三個方面.
一是關(guān)于應(yīng)用FPGA和EDA技術(shù)進(jìn)行計算機(jī)組成實(shí)驗(yàn)教學(xué)的探討.例如應(yīng)用FPGA和EDA技術(shù)設(shè)計運(yùn)算器和微控制器[1]、簡單ALU設(shè)計[2]、組合邏輯控制器的設(shè)計[3]、教學(xué)平臺的開發(fā)[4],以及FPGA結(jié)合外圍接口芯片,實(shí)現(xiàn)了一個基于MIPS處理器的計數(shù)器設(shè)計[5]等.
二是關(guān)于應(yīng)用虛擬仿真技術(shù)仿真計算機(jī)組成原理的探討.例如算術(shù)/邏輯運(yùn)算實(shí)驗(yàn)的仿真[6],基于客戶端技術(shù)的計算機(jī)組成原理虛擬實(shí)驗(yàn)系統(tǒng)設(shè)計[7],研發(fā)指令級、微體系級仿真系統(tǒng)以及三大部件實(shí)驗(yàn)的仿真軟件,并將該仿真軟件移植到智能手機(jī)平臺,更加方便學(xué)生隨時隨地做實(shí)驗(yàn)[8].
三是關(guān)于教學(xué)方法改革方面的探討,其主要特點(diǎn)是結(jié)合了現(xiàn)代教學(xué)手段和通訊技術(shù).例如提出了以問題為導(dǎo)向,兼顧自頂向下和自底向上優(yōu)點(diǎn)的計算機(jī)組成原理實(shí)驗(yàn)教學(xué)改革方案[9];依托新技術(shù),在智能手機(jī)上建設(shè)移動輔助教學(xué)一體化平臺,建設(shè)計算機(jī)組成原理實(shí)驗(yàn)微信公眾平臺,實(shí)現(xiàn)實(shí)驗(yàn)箱配套的虛擬仿真系統(tǒng)[10-11].
本文在分析計算機(jī)組成原理實(shí)驗(yàn)平臺在實(shí)驗(yàn)教學(xué)中存在的不足的基礎(chǔ)上,討論了EDA技術(shù)和虛擬實(shí)驗(yàn)系統(tǒng)應(yīng)用于計算機(jī)組成原理實(shí)驗(yàn)的不足,提出了通過結(jié)合程序設(shè)計技術(shù)、當(dāng)前流行計算機(jī)的系統(tǒng)架構(gòu)、工作原理來彌補(bǔ)目前計算機(jī)組成原理實(shí)驗(yàn)平臺的不足,從而滿足計算機(jī)組成原理實(shí)驗(yàn)教學(xué)的需要.
高校使用計算機(jī)組成原理實(shí)驗(yàn)平臺開設(shè)的主要實(shí)驗(yàn)項(xiàng)目有:運(yùn)算器實(shí)驗(yàn)、存儲器實(shí)驗(yàn)、數(shù)據(jù)通路實(shí)驗(yàn)、總線控制實(shí)驗(yàn)、微程序控制器實(shí)驗(yàn)、CPU組成、IO接口實(shí)驗(yàn)等.這些實(shí)驗(yàn)平臺都有配套的實(shí)驗(yàn)指導(dǎo)書,實(shí)驗(yàn)指導(dǎo)書提供了詳細(xì)的實(shí)驗(yàn)步驟.這些實(shí)驗(yàn)平臺的使用不僅減輕了教師備課和準(zhǔn)備實(shí)驗(yàn)的工作量,也簡化了學(xué)生做實(shí)驗(yàn)的流程,提高了學(xué)生做實(shí)驗(yàn)的效率.
盡管不同的廠家的實(shí)驗(yàn)平臺完成的實(shí)驗(yàn)項(xiàng)目大致相同,但每個廠家的實(shí)驗(yàn)儀的設(shè)計原理和結(jié)構(gòu)卻存在一定的差異性.例如運(yùn)算器的設(shè)計,部分實(shí)驗(yàn)平臺使用多片74LS181芯片組成ALU,部分實(shí)驗(yàn)平臺使用FPGA、CPLD或者單片機(jī)來模擬ALU運(yùn)算單元.控制器都是由單片機(jī)或者CPLD等模擬實(shí)現(xiàn),再結(jié)合存儲器、寄存器、輸入(開關(guān)或者按鍵)、輸出(LED和液晶屏)和時序電路,通過總線互連實(shí)現(xiàn)一臺簡易計算機(jī)的設(shè)計.有的實(shí)驗(yàn)平臺還配備了上位機(jī)軟件,上位機(jī)軟件通過串口和實(shí)驗(yàn)箱傳輸數(shù)據(jù)和指令,上位機(jī)軟件界面上可以看到數(shù)據(jù)通路圖,以及指令總線、ALU總線、IO總線和控制器內(nèi)部的微總線上的數(shù)據(jù)傳輸過程.例如圖1所示的簡單模型機(jī)數(shù)據(jù)通路圖,實(shí)驗(yàn)中每個寄存器的數(shù)據(jù)、數(shù)據(jù)通路、控制信號和機(jī)器指令對應(yīng)的微操作等都能夠清晰地看到.通過實(shí)驗(yàn),幫助學(xué)生理解指令的執(zhí)行過程,提高了計算機(jī)的感性認(rèn)識.但計算機(jī)組成原理實(shí)驗(yàn)平臺只是簡單的對計算機(jī)的工作原理進(jìn)行模擬,在基本滿足實(shí)驗(yàn)教學(xué)的同時,存在著部分課程內(nèi)容的實(shí)驗(yàn)不能開設(shè)、不能體現(xiàn)計算機(jī)組成原理方面的先進(jìn)技術(shù)和不能擴(kuò)展等不足.
圖1 STAR COP2018實(shí)驗(yàn)箱的簡單模型機(jī)實(shí)驗(yàn)提供的數(shù)據(jù)通路圖
(1)部分實(shí)驗(yàn)不能開設(shè),不能體現(xiàn)最新的計算機(jī)組成技術(shù),滿足不了整個計算機(jī)組成原理教學(xué)需要.對照計算機(jī)組成原理課程內(nèi)容和開設(shè)的主要實(shí)驗(yàn)項(xiàng)目后發(fā)現(xiàn),“定點(diǎn)數(shù)和浮點(diǎn)數(shù)在計算機(jī)內(nèi)的表示”這一章的內(nèi)容沒有安排實(shí)驗(yàn),高速緩存Cache、動態(tài)存儲器DRAM、虛擬存儲等知識點(diǎn)的實(shí)驗(yàn)也不能開設(shè).但這些知識在計算機(jī)組成中是非常重要的,在考研和計算機(jī)應(yīng)用時都經(jīng)常會涉及.因?yàn)閷?shí)驗(yàn)平臺只是用單片機(jī)和FPGA模擬簡單的計算機(jī)功能,因而無法開展這些實(shí)驗(yàn).另外由于計算機(jī)技術(shù)更新步伐的加快,實(shí)際使用的計算機(jī)系統(tǒng)比實(shí)驗(yàn)平臺的模型機(jī)要復(fù)雜很多,一些計算機(jī)領(lǐng)域的關(guān)鍵技術(shù),如復(fù)雜的總線結(jié)構(gòu)、多核多線程的CPU設(shè)計、智能高速的多級Cache系統(tǒng)、動態(tài)睿頻技術(shù)和復(fù)雜的架構(gòu)及多種外圍總線,這些在實(shí)驗(yàn)平臺上都沒有得到體現(xiàn).總體來說,存在著實(shí)驗(yàn)?zāi)J絾我?、?shí)驗(yàn)項(xiàng)目固定、實(shí)驗(yàn)平臺和課本及實(shí)際的計算機(jī)技術(shù)脫節(jié)等問題.這些不足之處嚴(yán)重影響了預(yù)設(shè)的教學(xué)效果和學(xué)生創(chuàng)新能力的發(fā)展.
(2)和相關(guān)課程的實(shí)驗(yàn)環(huán)節(jié)割裂,實(shí)驗(yàn)平臺結(jié)構(gòu)固定,接線多,原理不透明,功能不能擴(kuò)充.為了使學(xué)生了解計算機(jī)的基本工作原理和整機(jī)工作流程,建立整機(jī)工作的概念,傳統(tǒng)的實(shí)驗(yàn)平臺是通過單片機(jī)和FPGA等來模擬計算機(jī)的基本組成,這對計算機(jī)組成原理課程的教學(xué)很重要.但模擬的計算機(jī)系統(tǒng)架構(gòu)和實(shí)際情況差別較大,影響了學(xué)生對計算機(jī)工作原理的正確認(rèn)識.更突出的問題是傳統(tǒng)的實(shí)驗(yàn)平臺不能體現(xiàn)最新的計算機(jī)組成原理方面的技術(shù).所有這些缺陷都需要在教學(xué)中進(jìn)行彌補(bǔ).
傳統(tǒng)的實(shí)驗(yàn)平臺在實(shí)驗(yàn)教學(xué)中還有另外一些弊端:首先是硬件架構(gòu)固定,學(xué)生不能夠擴(kuò)充實(shí)驗(yàn)內(nèi)容;其次是結(jié)構(gòu)不透明,學(xué)生無法觀察到實(shí)驗(yàn)平臺的硬件結(jié)構(gòu)、工作原理和實(shí)驗(yàn)過程中的硬件動作等.在學(xué)生做實(shí)驗(yàn)時,由于實(shí)驗(yàn)的過程、指令的執(zhí)行流程和數(shù)據(jù)通路等透明度不高,造成了學(xué)生無法自主實(shí)現(xiàn)實(shí)驗(yàn)的擴(kuò)展;實(shí)驗(yàn)平臺各個模塊之間的連接線較多,學(xué)生實(shí)驗(yàn)前要花費(fèi)大量時間用于連線.這樣的實(shí)驗(yàn)?zāi)J剑饕獋?cè)重于實(shí)驗(yàn)結(jié)果對理論知識的簡單驗(yàn)證,而忽略了實(shí)驗(yàn)原理和實(shí)驗(yàn)方法,實(shí)驗(yàn)對教學(xué)的促進(jìn)效果有限.
EDA技術(shù)在計算機(jī)組成原理實(shí)驗(yàn)中的應(yīng)用,就是應(yīng)用FPGA或者CPLD的在線可編程特性實(shí)現(xiàn)所需要的邏輯功能,如ALU、控制器、指令系統(tǒng)等的設(shè)計.EDA技術(shù)的應(yīng)用,使學(xué)生既熟悉了計算機(jī)的基本組成和工作原理,也提高了可編程邏輯器件的設(shè)計能力,而且設(shè)計的實(shí)驗(yàn)系統(tǒng)具有可重用性,從而方便學(xué)生開展綜合性的設(shè)計實(shí)驗(yàn).但對于那些沒有開設(shè)EDA相關(guān)課程的學(xué)生而言,他們是沒有能力應(yīng)用EDA技術(shù)開展計算機(jī)組成原理實(shí)驗(yàn)的.所以把EDA技術(shù)應(yīng)用于計算機(jī)組成原理課程的實(shí)驗(yàn),實(shí)際上是側(cè)重于FPGA技術(shù)的學(xué)習(xí),設(shè)計的計算機(jī)的部件功能都比較簡單[1-5],滿足不了實(shí)際計算機(jī)組成原理的教學(xué).
將虛擬技術(shù)應(yīng)用于計算機(jī)組成原理實(shí)驗(yàn)教學(xué),就是利用虛擬仿真技術(shù)模擬計算機(jī)各個組件的工作過程,幫助學(xué)生理解計算機(jī)的工作原理.目前虛擬實(shí)驗(yàn)教學(xué)中存在的不足之處主要體現(xiàn)在兩個方面:一是虛擬仿真的軟件設(shè)計不完善,不能真實(shí)地反映計算機(jī)的組成原理[6-8],達(dá)不到預(yù)期的教學(xué)效果;二是在教學(xué)過程中沒有和實(shí)際的計算機(jī)系統(tǒng)相結(jié)合,沒有做到虛實(shí)互補(bǔ),教學(xué)效果較差.
針對國內(nèi)計算機(jī)組成原理實(shí)驗(yàn)教學(xué)平臺存在的不足,以及應(yīng)用EDA技術(shù)和虛擬現(xiàn)實(shí)技術(shù)補(bǔ)充實(shí)驗(yàn)教學(xué)的局限性,結(jié)合多年教學(xué)探索的經(jīng)驗(yàn),探討應(yīng)用關(guān)聯(lián)性課程的知識彌補(bǔ)實(shí)驗(yàn)平臺結(jié)構(gòu)固定、部分實(shí)驗(yàn)內(nèi)容不能開設(shè)的不足;應(yīng)用當(dāng)前流行的微機(jī)架構(gòu)來幫助學(xué)生建立完整的計算機(jī)組成整機(jī)概念,彌補(bǔ)實(shí)驗(yàn)平臺不能真實(shí)反映計算機(jī)工作原理的不足.
計算機(jī)組成原理的課程內(nèi)容可以認(rèn)為介于軟件和底層硬件之間,該課程和其他課程內(nèi)容的關(guān)聯(lián)性較強(qiáng),可以用這些相關(guān)聯(lián)的課程知識實(shí)現(xiàn)那些原來不能開設(shè)的實(shí)驗(yàn).另外,我們教學(xué)中使用的微機(jī),就是一個非常完善和先進(jìn)的計算機(jī)系統(tǒng).下文是幾種有效的彌補(bǔ)實(shí)驗(yàn)平臺不足的教學(xué)方法.
數(shù)在計算機(jī)中的表示和運(yùn)算是計算機(jī)組成原理課程的基本內(nèi)容,如定點(diǎn)數(shù)和浮點(diǎn)數(shù)的編碼表示、字符的編碼等.該課程后面的指令系統(tǒng)、處理機(jī)系統(tǒng)等都涉及到這方面的內(nèi)容,在軟件設(shè)計、計算機(jī)通信等方面都要用到.實(shí)驗(yàn)平臺由于結(jié)構(gòu)簡單,不能處理復(fù)雜的數(shù)據(jù)類型,導(dǎo)致這些實(shí)驗(yàn)無法開展.實(shí)際上,教材中討論的數(shù)值在計算機(jī)的表示方法,體現(xiàn)在使用的操作系統(tǒng)中數(shù)值的表示方法.在Window系統(tǒng)下,定點(diǎn)數(shù)值用補(bǔ)碼表示,浮點(diǎn)數(shù)用IEEE格式表示,字符有ASCII碼和Unicode兩種方式表示,漢字采用漢字內(nèi)碼存儲等.定點(diǎn)數(shù)的運(yùn)算基于補(bǔ)碼方式,浮點(diǎn)數(shù)的運(yùn)算基于IEEE方式,和教材中的內(nèi)容是一致的.
這部分課程的實(shí)驗(yàn)就是查看不同數(shù)據(jù)類型在計算機(jī)內(nèi)存中的表示方式,驗(yàn)證教材中關(guān)于定點(diǎn)數(shù)和浮點(diǎn)數(shù)的有關(guān)理論知識.在計算機(jī)中只有讀取不同的數(shù)在計算機(jī)內(nèi)存中的存儲形式,才能得到不同數(shù)據(jù)在計算機(jī)中的表示方法.而程序設(shè)計語言中,C或者C++中的指針給我們提供了訪問數(shù)值在內(nèi)存中的存儲地址的途徑.指針是一個特殊的變量,當(dāng)它指向某一數(shù)值變量時,指針里面存儲的數(shù)值就被解釋為內(nèi)存里的一個地址.而這個地址所指向的連續(xù)的幾個單元就是這個數(shù)值變量在計算機(jī)內(nèi)存儲形式,就是這些數(shù)據(jù)在計算機(jī)中的表示方式.計算機(jī)組成原理課程中討論的數(shù)在計算機(jī)中表示,就是高級語言中的定義的數(shù)據(jù)類型.
圖2 “數(shù)據(jù)和文字在計算機(jī)內(nèi)表示”實(shí)驗(yàn)界面
“數(shù)據(jù)與文字在計算機(jī)內(nèi)的表示”實(shí)驗(yàn)界面如圖2所示,實(shí)驗(yàn)通過C++的指針變量讀取浮點(diǎn)數(shù)、整數(shù)和字符在內(nèi)存中存儲后的數(shù)據(jù),驗(yàn)證了整數(shù)的補(bǔ)碼表示方式、浮點(diǎn)數(shù)的IEEE754標(biāo)準(zhǔn)格式和字符的ASCII碼的表示形式.通過實(shí)驗(yàn),學(xué)生掌握了定點(diǎn)數(shù)、字符和浮點(diǎn)數(shù)的表示和存儲方式和存儲順序,同時進(jìn)一步加深了C++指針的使用.更重要的是通過實(shí)驗(yàn)使學(xué)生切身體會到課本上的知識在計算機(jī)中的實(shí)際應(yīng)用.
高速緩存(Cache)技術(shù)和虛擬存儲技術(shù)是計算機(jī)組成原理課程中重要的內(nèi)容.Cache技術(shù)是用于解決CPU與內(nèi)存之間的速度不匹配問題.虛擬存儲技術(shù)把內(nèi)存與外存有機(jī)地結(jié)合起來,得到一個容量很大的虛擬內(nèi)存.這兩個方面的實(shí)驗(yàn),普通實(shí)驗(yàn)平臺都不能實(shí)現(xiàn).但我們教學(xué)用的微機(jī)都使用了Cache技術(shù)和虛擬存儲技術(shù),通過軟件就可以看到CPU內(nèi)部的多級Cache和虛擬內(nèi)存的分頁情況.另外如計算機(jī)的外圍設(shè)備的工作方式、資源占用等,都可以在使用的計算機(jī)的屬性中查看.圖3中,通過查看網(wǎng)卡的資源,講解端口地址、中斷方式和內(nèi)存地址來說明I/O管理方式和內(nèi)存地址的分配.這樣就能夠加深學(xué)生關(guān)于計算機(jī)組成的感性認(rèn)識,提高學(xué)生學(xué)習(xí)計算機(jī)組成原理課程的興趣.
圖3 查看外圍設(shè)備(無線網(wǎng)卡)占用的資源
圖4 實(shí)驗(yàn)室配備的微機(jī)主板架構(gòu)圖(Intel G41芯片組)
圖4是計算機(jī)組成原理實(shí)驗(yàn)室配置的微機(jī)主機(jī)的架構(gòu)圖,利用該微機(jī)的架構(gòu)和配置,結(jié)合計算機(jī)組成原理課程內(nèi)容,講解實(shí)際計算機(jī)的架構(gòu)和工作原理,包括多核CPU、Cache、多級總線、總線橋、內(nèi)存儲器、外儲存器、顯示方式和外圍設(shè)備等工作原理,使學(xué)生切身體會計算機(jī)組成原理的應(yīng)用,再結(jié)合計算機(jī)的主板結(jié)構(gòu)、內(nèi)存條和硬盤的結(jié)構(gòu),建立計算機(jī)的整機(jī)概念,樹立為發(fā)展我國計算機(jī)事業(yè)奮斗的信念.
圖4的微機(jī)使用的芯片組,是典型的南北橋架構(gòu),而現(xiàn)在最新的芯片組已經(jīng)將北橋集成到CPU內(nèi).如果實(shí)驗(yàn)室使用的是當(dāng)前最新的芯片組,可以按照使用的微機(jī)架構(gòu)進(jìn)行講解,使學(xué)生感受日新月異的計算機(jī)技術(shù)的更新.
目前高校配置的計算機(jī)組成原理實(shí)驗(yàn)系統(tǒng),滿足了計算機(jī)組成原理課程的基本實(shí)驗(yàn)教學(xué)要求.但目前實(shí)驗(yàn)平臺存在一些不足之處,如部分課程內(nèi)容的實(shí)驗(yàn)不能開設(shè),實(shí)驗(yàn)平臺結(jié)構(gòu)固定,接線多,原理不透明,功能不能擴(kuò)充等.
EDA技術(shù)應(yīng)用于計算機(jī)組成原理實(shí)驗(yàn)教學(xué),既提高了學(xué)生的FPGA設(shè)計能力,又幫助學(xué)生理解計算機(jī)組成原理的知識,但只適合那些開設(shè)了FPGA相關(guān)課程的學(xué)生.目前虛擬仿真技術(shù)只是簡單模擬計算機(jī)的部分功能,同樣不能滿足實(shí)驗(yàn)教學(xué)的需要.但隨著虛擬仿真技術(shù)的進(jìn)步,未來將能夠完整再現(xiàn)計算機(jī)的工作過程,真實(shí)反映計算機(jī)的工作原理,從而使計算機(jī)組成原理的實(shí)驗(yàn)教學(xué)獲得更好的發(fā)展.
通過計算機(jī)組成課程和其他課程的關(guān)聯(lián)性,結(jié)合目前使用的微機(jī)系統(tǒng),完善計算機(jī)組成原理課程的實(shí)驗(yàn).如應(yīng)用C++的指針和編程環(huán)境,實(shí)現(xiàn)定點(diǎn)數(shù)、浮點(diǎn)數(shù)、字符等在計算機(jī)內(nèi)的表示方式的實(shí)驗(yàn)課程,以及應(yīng)用教學(xué)中的計算機(jī)的架構(gòu)和配置講解計算機(jī)的總線、Cache、外圍設(shè)備和虛擬存儲等內(nèi)容,既能幫助學(xué)生建立整機(jī)概念,同時也讓學(xué)生感受到計算機(jī)組成原理課程的內(nèi)容在計算機(jī)系統(tǒng)的應(yīng)用,進(jìn)一步培養(yǎng)學(xué)生學(xué)習(xí)計算機(jī)組成原理的積極性和主動性,提高教學(xué)效果.