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