丁紅勝
摘要:面向計算機(jī)系統(tǒng)能力培養(yǎng),分析計算機(jī)系統(tǒng)能力的培養(yǎng)與計算機(jī)組成原理教學(xué)的關(guān)系,提出以實現(xiàn)8位機(jī)為目標(biāo),采用EDA編程技術(shù)和模塊化的設(shè)計思想,從設(shè)計運(yùn)算器、存儲器、控制器及綜合實驗框架等方面具體闡述實驗過程,最后闡述該實驗方法能夠有效培養(yǎng)學(xué)生的計算機(jī)系統(tǒng)觀,引導(dǎo)學(xué)生深層次理解計算機(jī)原理。
關(guān)鍵詞:系統(tǒng)能力;實驗?zāi)J?;計算機(jī)組成原理
0.引言
計算機(jī)領(lǐng)域的發(fā)展壯大和多元化的發(fā)展趨勢,給計算機(jī)教育帶來巨大的挑戰(zhàn)。CS2013(Computer Science Curricula 2013,ACM&IEEE)提出計算機(jī)科學(xué)本科畢業(yè)生應(yīng)具備系統(tǒng)層次的視野,強(qiáng)調(diào)學(xué)生需從多層次的細(xì)節(jié)抽象思考問題,對計算機(jī)的理解應(yīng)超越各種組件的實現(xiàn)細(xì)節(jié),要從計算機(jī)系統(tǒng)結(jié)構(gòu)和構(gòu)建分析過程出發(fā)。在后PC時代,計算機(jī)資源多樣化,各種類型的I/O設(shè)備千差萬別,智能手機(jī)數(shù)量已經(jīng)超過PC設(shè)備,計算機(jī)技術(shù)觸及的應(yīng)用領(lǐng)域更廣更深,對軟硬件的協(xié)同工作要求更高,從業(yè)人員所需的知識量急劇膨脹。在教學(xué)過程中,如何適應(yīng)計算機(jī)技術(shù)發(fā)展的新趨勢,培養(yǎng)適合社會發(fā)展需求的大學(xué)生,是高校面對的重大挑戰(zhàn)。我國高校計算機(jī)科學(xué)與技術(shù)專業(yè)教指委從能力培養(yǎng)的角度強(qiáng)調(diào)對計算機(jī)學(xué)科學(xué)生的4項專業(yè)能力的培養(yǎng),包括計算思維能力、程序分析與設(shè)計能力、算法分析與設(shè)計能力和計算機(jī)系統(tǒng)能力,其中尤以計算機(jī)系統(tǒng)能力的培養(yǎng)為主。
1.理解計算機(jī)系統(tǒng)能力培養(yǎng)與計算機(jī)組成原理關(guān)系
培養(yǎng)學(xué)生站在系統(tǒng)的高度分析和解決問題,提高其把握問題的全局能力,是提高學(xué)生能力培養(yǎng)的核心。具體而言,就是培養(yǎng)學(xué)生的計算機(jī)系統(tǒng)能力、計算思維能力,而不是灌輸和堆砌知識。計算機(jī)系統(tǒng)能力是指計算機(jī)系統(tǒng)的分析、設(shè)計、開發(fā)、調(diào)優(yōu)、檢錯能力,這種能力應(yīng)該成為計算機(jī)專業(yè)學(xué)生的優(yōu)勢所在。計算機(jī)組成原理課程作為計算機(jī)專業(yè)研究生入學(xué)考試專業(yè)基礎(chǔ)科目之一,是培養(yǎng)學(xué)生深入理解計算機(jī)基本工作原理、建立計算機(jī)系統(tǒng)概念的一門學(xué)科基礎(chǔ)課程,是整個計算機(jī)學(xué)科專業(yè)和計算機(jī)系統(tǒng)的基礎(chǔ)和核心。目前,國內(nèi)一些高水平大學(xué)在如何提高學(xué)生的系統(tǒng)能力方面,做了很多卓有成效的工作。例如,南京大學(xué)袁春風(fēng)教授以培養(yǎng)計算機(jī)系統(tǒng)設(shè)計能力為目標(biāo)設(shè)計教學(xué)過程,優(yōu)化課程群建設(shè);清華大學(xué)劉衛(wèi)東等人從課程體系方面進(jìn)行了統(tǒng)一規(guī)劃,建設(shè)了計算機(jī)系統(tǒng)綜合實驗平臺,學(xué)生可以獨(dú)立設(shè)計并完成一個完整、簡單的計算機(jī)系統(tǒng),以培養(yǎng)學(xué)生綜合運(yùn)用課程知識解決問題的能力;北航的高小鵬老師給出了以工程化方法培養(yǎng)學(xué)生計算機(jī)系統(tǒng)能力的方法。
計算機(jī)系統(tǒng)可以用分層模型描述,從低到高包含邏輯電路級、一般機(jī)器級、操作系統(tǒng)級、匯編語言級和高級語言級,一般機(jī)器級又可細(xì)分為微體系結(jié)構(gòu)層和指令集體系結(jié)構(gòu)層。面向計算機(jī)系統(tǒng)能力的教學(xué),就是要求學(xué)生以程序員的視角理解計算機(jī)硬件設(shè)計,以硬件設(shè)計者的角度理解程序執(zhí)行,徹底掌握計算機(jī)系統(tǒng)各個抽象層的實現(xiàn)及其相互轉(zhuǎn)換機(jī)制、計算機(jī)軟硬件之間的關(guān)聯(lián)關(guān)系及相互影響。計算機(jī)組成原理課程針對微體系結(jié)構(gòu)層和指令集體系結(jié)構(gòu)層的知識體系,向上負(fù)責(zé)解釋并執(zhí)行來自操作系統(tǒng)的命令,向下將計算機(jī)操作轉(zhuǎn)化為電平信號,驅(qū)動計算機(jī)部件執(zhí)行。所以,如何讓學(xué)生有效地掌握組成原理知識,是培養(yǎng)學(xué)生計算機(jī)系統(tǒng)能力的一個重要部分。
2.實驗環(huán)境及過程
為了提高學(xué)生對計算機(jī)系統(tǒng)的理解能力,激發(fā)學(xué)生的學(xué)習(xí)興趣,避免傳統(tǒng)驗證性實驗導(dǎo)致學(xué)生被動學(xué)習(xí),我們對計算機(jī)組成原理的實驗內(nèi)容和實驗方式進(jìn)行了改革。實驗的目標(biāo)是讓每位學(xué)生當(dāng)一回工程師,設(shè)計一套計算機(jī)系統(tǒng)。具體而言,計算機(jī)組成原理實驗的最終目標(biāo)是完成一個8位機(jī)系統(tǒng)的設(shè)計與實現(xiàn),是一個包含運(yùn)算器、控制器、存儲器、輸入輸出功能的完整計算機(jī)系統(tǒng),且多數(shù)功能部件采用EDA硬件編程方式實現(xiàn)。實驗內(nèi)容被分解成7次實驗,包括8位運(yùn)算器設(shè)計實驗、運(yùn)算器控制實驗設(shè)計、存儲器存取實驗設(shè)計、指令系統(tǒng)實驗設(shè)計、控制器實驗設(shè)計等。運(yùn)算器用兩片4位的am2901運(yùn)算器芯片級聯(lián)構(gòu)成8位運(yùn)算器,存儲器為SDRAM HM6116,輸入用二進(jìn)制開關(guān)模擬,輸出部件主要為LED燈和PC終端。可編程器件選用Lattice iM4A5-128/64 10YC-12YI,硬件編程語言采用了ABEL語言,集成化的開發(fā)環(huán)境為isp LEVEL Project Navigator3.0,下載工具使用軟件自帶的LSC isp VMsysteml5.3。通過設(shè)計、編輯、編譯、生成JEDEC文件、下載等步驟,將可編程CPLD芯片變成實驗邏輯部件;然后,連接CPLD芯片和功能部件之間的連線,搭建起完整的數(shù)據(jù)通路;最后,編寫測試程序測試本次實驗結(jié)果的正確性。實驗步驟如圖1所示。
3.綜合實驗框架設(shè)計
7次實驗內(nèi)容由淺入深,針對構(gòu)成計算機(jī)系統(tǒng)的不同邏輯功能部件進(jìn)行實驗,最后在已有基礎(chǔ)上擴(kuò)展、整合,構(gòu)建一個完整的計算機(jī)系統(tǒng)。其中,運(yùn)算器部件分2次實驗進(jìn)行:運(yùn)算器實驗一設(shè)計并實現(xiàn)一個8位的ALU,運(yùn)算器功能包括兩個8位的二進(jìn)制數(shù)的加、減、取反、數(shù)據(jù)傳輸,屬于線路一級的實驗,目的是學(xué)會CPLD芯片的使用,熟悉基于EDA方式進(jìn)行實驗的流程;運(yùn)算器實驗二的目的是對已有運(yùn)算器芯片進(jìn)行控制,級聯(lián)兩片4位的運(yùn)算器Am2901,構(gòu)成8位的運(yùn)算器,并手動控制開關(guān)輸入數(shù)據(jù)和控制信號,控制Am2901工作,并將控制過程設(shè)計成控制指令,寫入CPLD芯片,通過CPLD芯片完成對運(yùn)算器AM2901的控制。第3次實驗通過軟件模擬系統(tǒng)練習(xí)16位機(jī)的匯編語言程序,目的是通過軟件形式理解硬件的工作原理,提高學(xué)生的系統(tǒng)理解力,特別是對計算機(jī)指令系統(tǒng)的理解。第4次實驗為存儲器實驗,實驗分兩步進(jìn)行:第一步驗證SDRAM HM6116的功能,通過手動開關(guān)控制和實現(xiàn)內(nèi)存讀寫指令,實驗第二步利用CPLD芯片進(jìn)行編程,自動完成對連續(xù)存儲單元內(nèi)容的讀和寫。第5次實驗為控制器實驗,內(nèi)容綜合,實驗工作量大,且控制器的復(fù)雜度和指令集數(shù)量有關(guān),本次實驗設(shè)計的控制器包含8條指令。第6次實驗為8位機(jī)的輸入輸出實驗,分為兩個部分:第一部分通過手動開關(guān)控制串口實現(xiàn)輸入輸出指令;第二部分用CPLD芯片控制串行接口執(zhí)行輸入輸出操作。第7次實驗為包含14條指令集的8位機(jī)整機(jī)系統(tǒng)設(shè)計實驗,該實驗是對前幾次實驗的綜合:指令集包含了算數(shù)運(yùn)算類指令A(yù)DD、SUB,邏輯運(yùn)算類指令A(yù)ND、OR、NOT,移位指令SHR,輸入輸出指令I(lǐng)N、OUT,訪內(nèi)指令LDRR、STRR,程序控制指令JNCR、CALR、RET,數(shù)據(jù)傳輸指令MVRD,其中對指令的內(nèi)存存取共享指令LDRR、STRR。
實驗平臺主要用到了5個主要芯片,1片iM4A5.128/64 10YC.12.YI(CPLD芯片),2片AM2901,1片HM6116,1片Intel8521,平臺的核心為可編程邏輯陣列芯片iM4A5。圖2給出了由這個主要芯片構(gòu)成的綜合實驗框架,虛線框給出了各實驗的邏輯框圖。實驗的過程基本上可分為如下步驟:確定目標(biāo)、分析任務(wù)、設(shè)計方案、編程實現(xiàn)、程序硬件寫入、連線排錯、測試驗證。將傳統(tǒng)組成原理的驗證型實驗轉(zhuǎn)變?yōu)樵O(shè)計型實驗,實驗結(jié)果與學(xué)生的設(shè)計相關(guān),所見即所得。這種形式知識環(huán)環(huán)相扣,采用設(shè)計方式進(jìn)行實驗,有利于變被動學(xué)習(xí)為主動設(shè)計過程,學(xué)生的學(xué)習(xí)興趣大大提升。
4.結(jié)語
本文通過EDA方式設(shè)計功能部件的思路,構(gòu)建了一個完整的8位機(jī)計算機(jī)系統(tǒng)。這種方式變被動的驗證性學(xué)習(xí)為主動的自主設(shè)計實驗,極大地調(diào)動了學(xué)生的學(xué)習(xí)積極性,發(fā)揮其主觀能動性和創(chuàng)造力。通過解決實驗過程不同階段遇見的問題,增強(qiáng)了學(xué)生對計算機(jī)系統(tǒng)的理解,特別提升了其硬件系統(tǒng)整體觀的認(rèn)知能力,提高了學(xué)生自主解決問題的能力。我們從2013年開始采用這種模式的實驗教學(xué),現(xiàn)已經(jīng)過了多個輪次的教學(xué)實踐和改進(jìn)。從教學(xué)效果可以看出,改革后的教學(xué)模式對學(xué)生系統(tǒng)能力的培養(yǎng)起到了很好的效果,提升了大部分學(xué)生學(xué)習(xí)的主觀能動性,有效地激發(fā)了學(xué)生學(xué)習(xí)的興趣。但這種設(shè)計性的實驗方式對學(xué)生的學(xué)習(xí)能力要求比較高,一旦前面的知識沒有掌握好,后續(xù)的學(xué)習(xí)會更加困難。當(dāng)然,計算機(jī)系統(tǒng)能力的培養(yǎng),是一項系統(tǒng)工程,涉及內(nèi)容繁多,本文僅從計算機(jī)組成原理這一門課程實踐教學(xué)的角度給出了如何有效地培養(yǎng)學(xué)生的計算機(jī)系統(tǒng)能力。構(gòu)建完備的計算機(jī)系統(tǒng)能力培養(yǎng)體系,還需從優(yōu)化課程群教學(xué)內(nèi)容、提升知識的系統(tǒng)性和完整性、采用多樣化培養(yǎng)手段等多個方面綜合進(jìn)行。