楊澤雪 閔莉 王建偉
摘要:針對計算機(jī)組成原理課程理論和實驗教學(xué)的特點,分析實驗教學(xué)存在的問題,提出通過計算機(jī)組成原理虛擬實驗系統(tǒng)和新型三段式實驗項目加強(qiáng)實驗教學(xué),該項目包括設(shè)計一個初始指令集、設(shè)計一個數(shù)據(jù)通路和控制單元、為處理器編寫模擬器3個部分,說明通過該項目學(xué)生可以開發(fā)和模擬自己的處理器,從而提高實驗教學(xué)的質(zhì)量。
關(guān)鍵詞:計算機(jī)組成原理;計算機(jī)專業(yè);實驗教學(xué);虛擬實驗系統(tǒng);處理器
引 言
計算機(jī)組成原理是計算機(jī)專業(yè)本科生必修的一門重要專業(yè)基礎(chǔ)課,在計算機(jī)系統(tǒng)層次中具有承上啟下的作用,是學(xué)習(xí)計算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、編譯原理、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫等后續(xù)課程的基礎(chǔ) 。計算機(jī)組成原理主要講解計算機(jī)的硬件組成及整機(jī)的工作原理,課程的內(nèi)容主要包括運算器、控制器、存儲器、CPU、總線、指令系統(tǒng)和輸入輸出系統(tǒng)等 。計算機(jī)組成原理課程的教學(xué)應(yīng)建立在硬件、軟件組成的系統(tǒng)平臺上,不應(yīng)被理解為單純的硬件課程,還需要用到匯編語言和操作系統(tǒng)等方面的知識。課程目的也不應(yīng)該只局限在學(xué)習(xí)硬件知識上,而更應(yīng)該立足于如何利用課程學(xué)習(xí)到的計算機(jī)各部件的工作原理設(shè)計實現(xiàn)實用的系統(tǒng),使學(xué)生具有較強(qiáng)的計算機(jī)應(yīng)用能力和創(chuàng)造力。
為了實現(xiàn)理論和實踐的結(jié)合,計算機(jī)組成原理的實驗教學(xué)非常重要。實驗教學(xué)在教學(xué)計劃中占據(jù)相當(dāng)大的比重,只有抓住實踐環(huán)節(jié),才能使學(xué)生把理論知識真正轉(zhuǎn)化成自己的能力。
1 課程理論和實踐教學(xué)現(xiàn)狀及存在問題
1.1 理論教學(xué)現(xiàn)狀
對于計算機(jī)組成原理的理論教學(xué),國內(nèi)外模式存在較大差異。國外的教學(xué)主要以學(xué)生為主,通過給學(xué)生布置研究性課題或仿真性課題、閱讀文獻(xiàn),讓學(xué)生自主完成課程的學(xué)習(xí);學(xué)生可以在完成課題的過程中學(xué)習(xí)和領(lǐng)悟計算機(jī)各部件的組成及工作原理,通過完成閱讀性作業(yè)擴(kuò)展自己的知識面,能夠更好地達(dá)到課程要求的理淪和實踐相結(jié)合的目標(biāo) 。國內(nèi)的教學(xué)主要以教師為主,通過課堂教學(xué)和課內(nèi)實驗完成教學(xué) ;而課堂教學(xué)主要依靠教師的單向性講解給學(xué)生灌輸相關(guān)的基本概念和知識,學(xué)生與教師之間缺少交流,一旦跟不上教師節(jié)奏,學(xué)生將失去學(xué)習(xí)的興趣;課后的閱讀量比較小,大多數(shù)學(xué)生主要以通過考試為目的;課內(nèi)實驗大多以驗證性實驗為主,很難達(dá)到理論和實踐相結(jié)合的日標(biāo)。
1.2 實驗教學(xué)現(xiàn)狀及存在問題
目前在很多學(xué)校計算機(jī)組成原理的實踐教學(xué)得不到重視,整門課程大多以理論教學(xué)為主,實驗教學(xué)為輔,實驗學(xué)時只占課程的1/4,而且實驗課程內(nèi)容陳舊。輔助實踐教學(xué)的計算機(jī)組成原理課程設(shè)計也應(yīng)該在本課程中占據(jù)重要作用,而這方面實施效果不是很好,導(dǎo)致該課程以學(xué)為用的宗旨難以實現(xiàn)。在實踐教學(xué)方面,主要存在以下幾方面的問題。
1)實驗設(shè)備與實驗內(nèi)容落后。
大多數(shù)實驗設(shè)備都是某些公司開發(fā)的,更新困難,導(dǎo)致實驗內(nèi)容陳舊,只是一些最簡單最基本的驗證性實驗。而計算機(jī)發(fā)展迅速,實驗設(shè)備和實驗內(nèi)容很難跟上新技術(shù)的發(fā)展,使得實驗缺乏創(chuàng)新性和自主性。
2)實驗內(nèi)容層次少。
大多數(shù)實驗以驗證性實驗為主,缺少綜合性的設(shè)計實驗和自主性的創(chuàng)新實驗。驗證性實驗只是機(jī)械地完成實驗步驟,即使不懂得內(nèi)部工作原理也能完成實驗,學(xué)生要想完成一個綜合性的計算機(jī)系統(tǒng)設(shè)計很困難。
3)實驗考核方法不合理。
課程的考核主要以理論成績?yōu)橹鳎瑢嶒灢糠忠蟛桓?,而實驗的考核方法單一,主要以提交實驗報告為主,考核以小組為單位進(jìn)行實驗,組內(nèi)有些同學(xué)敷衍了事,考核結(jié)果不夠公正。
2 實驗課程改進(jìn)方法
2.1 建立計算機(jī)組成原理課程的虛擬實驗系統(tǒng)
在計算機(jī)組成原理實驗教學(xué)中,實驗作為學(xué)生深刻理解理論知識的一個重要方面,成為教學(xué)中不可缺少的重要組成部分。虛擬實驗系統(tǒng)是現(xiàn)代教育系統(tǒng)中一種重要的教學(xué)資源,對實現(xiàn)教學(xué)改革,提高教學(xué)質(zhì)量有重要的意義。
虛擬實驗系統(tǒng)是組成原理實驗教學(xué)手段的有效補(bǔ)充。絕大部分學(xué)校的實驗設(shè)備都無法百分之百滿足所有學(xué)生需求,而且組成原理的實驗設(shè)備還具有更新快、價格昂貴等難以克服的問題,模擬實驗軟件以其低成本、高效率等特點成為組成原理實驗教學(xué)不可或缺的部分。豐富的模擬元件和參數(shù)設(shè)置提高了實驗的靈活性,降低了學(xué)校的實驗成本,還可以有效避免實驗中真實物理器件的損耗,擴(kuò)充組成實驗的范圍和空間。圖1給出了計算機(jī)組成原理虛擬實驗系統(tǒng)功能圖。
虛擬實驗系統(tǒng)給出了實驗操作過程,包括運算器組成實驗、存儲器組成實驗、控制器工作原理實驗和輸入輸出系統(tǒng)實驗,使學(xué)生更好地理解課堂所學(xué)的原理,更好地提高學(xué)生的綜合分析能力、動手能力和解決問題的能力,教師也能更方便地開展教學(xué)。
2.2 設(shè)置計算機(jī)組成原理綜合實驗項目
在課內(nèi)實驗設(shè)置上,可以將實驗分成驗證性、設(shè)計性、綜合性和創(chuàng)新型4種類型,而除了驗證性為必修實驗外,其他幾類可以通過課內(nèi)大作業(yè)形式完成,基于學(xué)時的限制,還可以增加課程設(shè)計的環(huán)節(jié)。
例如可以開發(fā)一個新型的由3部分組成的項目,要求學(xué)生開發(fā)和模擬自己的處理器。學(xué)生分組設(shè)計并對自己的指令集進(jìn)行編碼,設(shè)計一個執(zhí)行其指令集的數(shù)據(jù)通路和微控制指令,并在計算機(jī)上模擬其處理器的模型。該項目給學(xué)生自由發(fā)揮的空間,讓學(xué)生設(shè)計自己的指令集,同時要求他們?yōu)樽约旱闹噶罴幋a并編譯一個小程序。通過為他們的處理器建立一個模擬器,學(xué)生可以真正看到在自己的處理器上運行的程序。項目不需耍特殊的硬件或軟件,也不要求學(xué)生有深厚的數(shù)字邏輯設(shè)計或編程經(jīng)驗。
該項目包括設(shè)計一個初始指令集、設(shè)計一個數(shù)據(jù)通路和控制單元以及為處理器編寫模擬器3個組成部分。通過該項目,學(xué)生不僅學(xué)習(xí)了處理器的工作過程,而且體驗了設(shè)計處理器的過程,還以模擬器的方式學(xué)習(xí)了如何在實際的計算機(jī)結(jié)構(gòu)研究過程巾評價處理器的性能。
2.2-1 設(shè)計指令集
首先要求學(xué)生設(shè)計和編寫自己的指令集,需要確定機(jī)器中應(yīng)該包含哪些寄存器,創(chuàng)建一個機(jī)器指令序列,并且對每個指令編寫一個唯一的二進(jìn)制代碼。可限制為同定長度的8位編碼,指令存儲在至少256個字節(jié)的存儲器中,不允許復(fù)制一個現(xiàn)有的指令集。指令集至少包含寄存器和存儲器之問的數(shù)據(jù)傳輸指令、基本的算術(shù)運算指令和條件控制指令。表l給出了一個指令集的例子。
學(xué)生設(shè)計的指令集可能與MIPS是相同的,提交的說明書可能與MIPS指令集具有相同的格式和日的,而區(qū)別往往在于指令的名字不同。這在學(xué)生初次實現(xiàn)這個項目時是允許的,但可以引導(dǎo)學(xué)生設(shè)計多樣化的指令集,例如8080,8086,JVM,PDP-8等。
另外,學(xué)生設(shè)計的指令集可能過于龐大。對于好的學(xué)生,可能傾向于制定具有很多層的復(fù)雜機(jī)器,而對于沒有很好理解課程內(nèi)容的學(xué)生來說,可能設(shè)計容易理解但是執(zhí)行復(fù)雜的指令,比如浮點算術(shù)運算或結(jié)構(gòu)化程序設(shè)計中的while循環(huán)概念,一般省略分支指令。這種情況教師可以引導(dǎo)學(xué)生刪除某些指令,比做大的修改更容易。
2.2.2設(shè)計數(shù)據(jù)通路
這部分要求學(xué)生設(shè)計執(zhí)行指令集的數(shù)據(jù)通路和控制單元,需要說明數(shù)據(jù)通路的詳細(xì)工作過程。數(shù)據(jù)通路需包含寄存器組,包括程序汁數(shù)器、指令寄存器、ALU、多路復(fù)用器、寄存器堆、符號擴(kuò)展單元以及將各部件進(jìn)行連接的導(dǎo)線等。數(shù)據(jù)通路不需要給出控制機(jī)器狀態(tài),控制多路復(fù)用器的輸入,對各個寄存器的時鐘輸入等過程。學(xué)生需要提交控制代碼,每條指令的控制代碼需要根據(jù)一系列的微組合指令序列來編寫。對于每條微組合指令,學(xué)生需要指定需要輸入控制的每個多路復(fù)用器和設(shè)備的狀態(tài),也要指定哪個奇存器接收指令的數(shù)據(jù)。
當(dāng)學(xué)生設(shè)計數(shù)據(jù)通路時,可能會發(fā)生數(shù)據(jù)通路無法執(zhí)行指令情況。這有可能是因為濫用總線導(dǎo)致的,所以要求學(xué)生禁用總線,并畫出所有部件之間的導(dǎo)線,使數(shù)據(jù)通路更清晰并且正確。
2.2.3設(shè)計模擬器
這個部分要求編寫一個處理器的模擬器。為了證明自己的模擬器運行正常,研究其處理器的效率,該項目要求學(xué)生在他們的模擬器上執(zhí)行由他們的指令集中指令編寫的具有不同大小數(shù)據(jù)的程序。完成后,學(xué)生必須提交他們的模擬器代碼,模擬器輸出文件,并報告討論他們的處理器的性能。
該處理器模擬器可以采用C或Java編寫,還包括寄存器、RAM和機(jī)器的其他組件。模擬器必須是周期準(zhǔn)確的,這意味著每個微組合控制指令必須進(jìn)行建模。將由指令集編寫的程序代碼裝入模擬RAM陣列來開始模擬過程,并將模擬的結(jié)果寫入到一個輸出文件中,用以驗證他們的程序工作正常。該模擬器還打印出執(zhí)行的指令和模擬周期的數(shù)目,從而評估其處理器的指令性能。
3 結(jié)語
后期我們會將虛擬實驗系統(tǒng)和綜合實驗項目應(yīng)用于學(xué)校的實際教學(xué)中,并在實踐中進(jìn)行完善,結(jié)合該課程理論和實踐教學(xué)的特點,研究該計劃的后續(xù)發(fā)展方向,形成該課程的完整實驗教學(xué)方案,對計算機(jī)硬件人才的培養(yǎng)做出貢獻(xiàn)。