姜欣寧,陳 宇
“計(jì)算機(jī)組成原理”課程是計(jì)算機(jī)專業(yè)的一門核心課程,它在整個(gè)專業(yè)課程中起了承前啟后的作用,所以它非常重要,但它的內(nèi)容比較抽象,學(xué)好不易,必須經(jīng)過(guò)訓(xùn)練,通過(guò)實(shí)踐環(huán)節(jié),才能理清一些似是而非的概念,真正掌握一個(gè)計(jì)算機(jī)系統(tǒng)的內(nèi)在運(yùn)行機(jī)制,為后續(xù)課程打下堅(jiān)實(shí)的基礎(chǔ)。
“計(jì)算機(jī)組成原理專題實(shí)驗(yàn)”是為計(jì)算機(jī)專業(yè)大三學(xué)生開設(shè)的一門實(shí)驗(yàn)課程;從2007年開始,針對(duì)本校計(jì)算機(jī)系的學(xué)生,我們對(duì)該課程的內(nèi)容進(jìn)行了改革:讓學(xué)生獨(dú)立地完成一臺(tái)計(jì)算機(jī)系統(tǒng)(模型機(jī))的設(shè)計(jì)及電路的調(diào)試;把原來(lái)以“驗(yàn)證型”為主的實(shí)驗(yàn)改為以“設(shè)計(jì)型”為主的內(nèi)容[1-2]。這樣,使得相應(yīng)的教學(xué)方式也發(fā)生了大的變化,對(duì)學(xué)生的思考方式和實(shí)驗(yàn)要求提出了新的要求。這種教學(xué)模式與當(dāng)今高速發(fā)展的計(jì)算機(jī)技術(shù)相適應(yīng),能夠培養(yǎng)學(xué)生的自主創(chuàng)新能力和實(shí)際的“動(dòng)手”能力,滿足他們不斷提高的對(duì)知識(shí)和技術(shù)的需求。然而,在實(shí)踐過(guò)程中,深感讓學(xué)生獨(dú)立完成一個(gè)系統(tǒng)的設(shè)計(jì)及電路實(shí)現(xiàn)有較大的困難和挑戰(zhàn),因此又結(jié)合多年的思考和實(shí)踐,開發(fā)出了一個(gè)可行的“系統(tǒng)的設(shè)計(jì)方法”及相應(yīng)的學(xué)習(xí)方法,以便學(xué)生按照此思路進(jìn)行設(shè)計(jì),達(dá)到事半功倍之效。經(jīng)過(guò)多年的實(shí)踐,收到了良好的教學(xué)效果。
為了讓學(xué)生真正體會(huì)一臺(tái)計(jì)算機(jī)系統(tǒng)的組成及其內(nèi)在運(yùn)行機(jī)制,需要讓學(xué)生在一門專題實(shí)驗(yàn)課上完成一個(gè)計(jì)算機(jī)系統(tǒng)(模型機(jī))的設(shè)計(jì)和調(diào)試,但是實(shí)現(xiàn)這一目標(biāo)有一定的難度,主要受到課時(shí)(32學(xué)時(shí))、相關(guān)知識(shí)技能的欠缺,以及學(xué)生基礎(chǔ)水平、實(shí)踐經(jīng)驗(yàn)不足等的限制,另外,國(guó)外教科書上的教學(xué)方法和內(nèi)容也有局限性,不能完全適合我們的教學(xué)計(jì)劃[3-6]。為了開發(fā)一個(gè)有效的“設(shè)計(jì)方法”作為指導(dǎo),來(lái)達(dá)到教學(xué)目的,思考了幾個(gè)要點(diǎn):
(1)以教科書上的基本概念為基礎(chǔ),反映國(guó)際上先進(jìn)的設(shè)計(jì)理念和技術(shù),參考其他信息來(lái)源及實(shí)際經(jīng)驗(yàn)。
(2)根據(jù)學(xué)生以往實(shí)踐過(guò)程中的情況來(lái)設(shè)計(jì)實(shí)驗(yàn)。
(3)以學(xué)習(xí)和掌握構(gòu)建一臺(tái)計(jì)算機(jī)主機(jī)(模型機(jī))的方法為主 ,編程技巧為輔。
(4)以學(xué)習(xí)和掌握實(shí)現(xiàn)一臺(tái)計(jì)算機(jī)主機(jī)系統(tǒng)(模型機(jī))為主要內(nèi)容,不強(qiáng)調(diào)技術(shù)上的復(fù)雜性。
(5)實(shí)驗(yàn)以體現(xiàn)“硬件”實(shí)驗(yàn)特征為主,以彌補(bǔ)學(xué)生這一方面的不足。
(6)強(qiáng)調(diào)設(shè)計(jì)過(guò)程的“完整性”、“簡(jiǎn)潔性”、“有效性”和“易讀性”。
(7)概念和方法要從多個(gè)角度重復(fù)敘述。
對(duì)于一個(gè)計(jì)算機(jī)系統(tǒng)的設(shè)計(jì),若采用“自頂向下設(shè)計(jì)”方法,它要求學(xué)生對(duì)底層部件非常熟悉,而用“自底向上設(shè)計(jì)”方法,學(xué)生難以對(duì)系統(tǒng)整體把握,所以,采取“自頂向下”和“自底向上”開發(fā)方法的結(jié)合:
(1)首先讓學(xué)生熟悉底層模塊的設(shè)計(jì),如寄存器模塊的設(shè)計(jì)、運(yùn)算器模塊的設(shè)計(jì)、時(shí)序電路的設(shè)計(jì)、控制器的設(shè)計(jì)等基本硬件底層模塊的設(shè)計(jì),這樣,既掌握了基本硬件模塊的設(shè)計(jì),也熟悉了硬件描述語(yǔ)言的用法(因?yàn)閷W(xué)生在這門課前還未接觸過(guò)硬件描述語(yǔ)言)。
(2)進(jìn)行系統(tǒng)(硬件)的設(shè)計(jì)要熟悉總體結(jié)構(gòu),如,可以從不同的角度來(lái)看,計(jì)算機(jī)結(jié)構(gòu)一般有3種類型:模塊結(jié)構(gòu)、控制結(jié)構(gòu)和總線結(jié)構(gòu)。這一步使學(xué)生對(duì)一個(gè)計(jì)算機(jī)系統(tǒng)有一個(gè)整體的概念,同時(shí)對(duì)構(gòu)成系統(tǒng)的各模塊進(jìn)行分析,理解總線和數(shù)據(jù)通路的概念,從不同的角度來(lái)理解一個(gè)計(jì)算機(jī)系統(tǒng),從而加深對(duì)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的認(rèn)識(shí)。
(3)要求學(xué)生進(jìn)行指令集的設(shè)計(jì),包括指令格式設(shè)計(jì)規(guī)范、每一條指令及所涉及的功能部件的描述、理解CISC/RISC指令系統(tǒng)(匯編和機(jī)器碼之間的對(duì)應(yīng)關(guān)系)。
(4)算法狀態(tài)機(jī) (ASM)的利用。ASM圖是描述數(shù)字系統(tǒng)控制算法的流程圖,它是用一些特定符號(hào)按規(guī)定的連接方式來(lái)描述數(shù)字系統(tǒng)的功能。應(yīng)用ASM圖設(shè)計(jì)數(shù)字系統(tǒng),可以很容易將語(yǔ)言描述的設(shè)計(jì)問題變成時(shí)序流程圖的描述,只要描述邏輯設(shè)計(jì)問題的時(shí)序流程圖一旦形成,狀態(tài)函數(shù)和輸出函數(shù)就容易獲得,從而得出相應(yīng)的硬件電路。ASM圖表面上與通常的軟件流程圖非常相似,但ASM圖表示事件的精確時(shí)間間隔序列,而一般軟件流程圖只表示事件序列,沒有時(shí)間概念,這是兩者的根本差別。為了用ASM圖描述數(shù)字系統(tǒng)的工作過(guò)程,要首先研究ASM圖示符號(hào)。ASM圖有3種基本符號(hào):狀態(tài)框,判斷框和條件輸出框。利用狀態(tài)圖可以清楚地反映出系統(tǒng)中的各種時(shí)序等關(guān)系,也便于系統(tǒng)調(diào)試時(shí)的故障檢測(cè)。
(5)系統(tǒng)方案設(shè)計(jì)。在系統(tǒng)的設(shè)計(jì)過(guò)程中,與以往的實(shí)驗(yàn)不同,增加了一個(gè)環(huán)節(jié),即系統(tǒng)方案的設(shè)計(jì),它是在對(duì)底層模塊設(shè)計(jì)完成后安排的,這一個(gè)環(huán)節(jié)非常重要,它需要設(shè)計(jì)者對(duì)整個(gè)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)的各部分都要考慮到,所以,雖然花費(fèi)較多的時(shí)間,但學(xué)生對(duì)系統(tǒng)的設(shè)計(jì)思路、結(jié)構(gòu)和分工有了一個(gè)清晰的認(rèn)識(shí),對(duì)頂層實(shí)體與底層各模塊的關(guān)系可以整體把握,也為后續(xù)調(diào)試提供依據(jù)。實(shí)踐證明這一步很有必要[7]。
(6)開發(fā)平臺(tái)和工具。開發(fā)平臺(tái)選用當(dāng)時(shí)流行的EDA軟件,Altera公司的QUARTUSⅡ5.0,它操作簡(jiǎn)單、使用方便,適合學(xué)生進(jìn)行課程設(shè)計(jì)。芯片選用性價(jià)比高的FPGA(現(xiàn)場(chǎng)可編程門陣列)的芯片:Cyclone系列的EP1C6Q240C8,然后設(shè)計(jì)工具選用硬件描述語(yǔ)言(VHDL)進(jìn)行項(xiàng)目的描述,因?yàn)樗δ芊浅?qiáng)大,不僅適合仿真,也適合設(shè)計(jì)具體的硬件電路設(shè)計(jì)(行為/結(jié)構(gòu)進(jìn)行描述)。對(duì)于構(gòu)建一個(gè)較大的系統(tǒng),利用硬件描述語(yǔ)言(VHDL)加FPGA的方式進(jìn)行系統(tǒng)的設(shè)計(jì),大大提高了效率和可靠性[8-9]
由于是第一次進(jìn)行“系統(tǒng)性”的設(shè)計(jì),所以在設(shè)計(jì)中學(xué)生的反應(yīng)往往是不知如何下手。為解決“入手難”的問題,可以先從大的方面進(jìn)行考慮,即 “自頂向下”的方法。因?yàn)閷W(xué)生已經(jīng)過(guò)“底層的訓(xùn)練”,可以從總體任務(wù)分出幾個(gè)方面來(lái)考慮:要實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)的規(guī)模和功能、個(gè)人還是小組來(lái)完成、對(duì)開發(fā)工具的掌握程度、開發(fā)的方法和步驟等。這一步指引學(xué)生通過(guò)調(diào)研查找資料,要求學(xué)生對(duì)每一個(gè)框的任務(wù)進(jìn)行調(diào)研和思考,使頭腦中形成一個(gè)總體的概念和規(guī)劃,從而解決如何“準(zhǔn)備”設(shè)計(jì)的問題,即解決“入手”難的問題。系統(tǒng)開發(fā)的整體規(guī)劃見圖1。
圖1 系統(tǒng)開發(fā)的整體規(guī)劃圖
(1)計(jì)算機(jī)的整機(jī)工作過(guò)程可以看成是信息流在寄存器和信號(hào)線的有序的流動(dòng),所以,要構(gòu)建載體,即完成各種數(shù)據(jù)通路的設(shè)計(jì)和實(shí)現(xiàn),包括取指令的數(shù)據(jù)通路、各種取操作數(shù)的數(shù)據(jù)通路(多用圖表描述)。各種數(shù)據(jù)通路的設(shè)計(jì)可以依據(jù)每一條(類)指令的功能。最后,構(gòu)建與優(yōu)化整體數(shù)據(jù)通路。
(2)完成控制器(組合或微程序)的設(shè)計(jì)和實(shí)現(xiàn)(用狀態(tài)圖描述)。重點(diǎn)理解控制器的輸入輸出關(guān)系,微操作與各種信號(hào)之間的關(guān)系,畫出控制器微命令表,對(duì)仿真波形圖進(jìn)行分析。最后,進(jìn)行帶CPU(控制信號(hào))的數(shù)據(jù)通路圖的優(yōu)化。
(3)時(shí)序電路模塊的設(shè)計(jì)和實(shí)現(xiàn)。一般采用教科書上的三級(jí)時(shí)序,但對(duì)于不太復(fù)雜的模型機(jī)可以直接采用單個(gè)連續(xù)脈沖作為時(shí)序信號(hào),依據(jù)不同的指令類型分配不同的節(jié)拍數(shù)[9]。
(4)主存儲(chǔ)器的設(shè)計(jì)和實(shí)現(xiàn)。一般可以利用VHDL語(yǔ)言來(lái)實(shí)現(xiàn),而實(shí)驗(yàn)開發(fā)板上都配有存儲(chǔ)器,需要注意的是控制器與存儲(chǔ)器本身的讀寫時(shí)序關(guān)系的配合。
(5)算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)和實(shí)現(xiàn)??梢钥紤]把乘除法、浮點(diǎn)運(yùn)算等復(fù)雜功能,甚至通用寄存器放入其中,可以將它設(shè)計(jì)成多層次結(jié)構(gòu)模塊。
(6)總線的設(shè)計(jì)。這一步為了突出總線的概念。
RISC是英文“Reduced Instruction Set Computing”的縮寫,中文意思是“精簡(jiǎn)指令集”,它是在CISC指令系統(tǒng)基礎(chǔ)上發(fā)展起來(lái)的,相對(duì)于CISC型CPU,RISC型CPU精簡(jiǎn)了指令系統(tǒng),大大增加了并行處理能力。RISC的指令格式統(tǒng)一,種類比較少,尋址方式也比復(fù)雜指令集少,所以處理速度就提高很多。
MIPS指令集屬于RISC結(jié)構(gòu),它的格式規(guī)整、被廣泛使用。學(xué)生可以以此為參照,在它的基礎(chǔ)上進(jìn)行適當(dāng)?shù)男薷暮蛢?yōu)化,快速地掌握它。具體包括操作指令格式設(shè)計(jì)、指令操作碼的分配、各匯編符號(hào)、機(jī)器碼與各控制信號(hào)的位置與功能對(duì)應(yīng)關(guān)系表等。注意指令的描述與所涉及的功能部件的對(duì)應(yīng)。
以上敘述了計(jì)算機(jī)主機(jī)系統(tǒng)的設(shè)計(jì)過(guò)程,在設(shè)計(jì)中涉及到計(jì)算機(jī)硬件的設(shè)計(jì)、指令集(底層軟件)等內(nèi)容,他們之間的關(guān)系比較復(fù)雜,要考慮的細(xì)節(jié)多,也容易引起混淆,為此,設(shè)計(jì)出一張關(guān)系表來(lái)幫助學(xué)生進(jìn)行系統(tǒng)分析、把握整體的設(shè)計(jì)流程及軟件和硬件之間的內(nèi)在關(guān)系。在圖中說(shuō)明一個(gè)系統(tǒng)需要軟件和硬件的支持,需要處理軟件與硬件設(shè)計(jì)中的“協(xié)調(diào)”問題,并指出其中的“結(jié)合點(diǎn)”,見圖2。
圖2 “軟件”與“硬件”之間的關(guān)系及設(shè)計(jì)流程圖
系統(tǒng)的實(shí)現(xiàn)(集成)可以采用電路圖連線的方法。系統(tǒng)的頂層由多個(gè)模塊構(gòu)成,模塊內(nèi)部由硬件描述語(yǔ)言構(gòu)成。也可以采用完全軟件編碼(VHDL)方法實(shí)現(xiàn)[10-11]。
以上介紹的系統(tǒng)設(shè)計(jì)方法是一個(gè)循序漸進(jìn)、逐步深入、不斷完善的過(guò)程。通過(guò)使用它,讓學(xué)生在有限的課時(shí)內(nèi)實(shí)現(xiàn)一臺(tái)完整的計(jì)算機(jī)模型機(jī)是完全可行的,它較好地解決了“難以下手”和“調(diào)試難”的問題,學(xué)生做完設(shè)計(jì)后,感覺設(shè)計(jì)一個(gè)計(jì)算機(jī)(模型機(jī))系統(tǒng)并不是不可能的。也有的學(xué)生在學(xué)習(xí)了本設(shè)計(jì)方法后,受到啟發(fā),他們并沒有嚴(yán)格地按照此方法,而是愿意參考更多的書籍的相關(guān)內(nèi)容來(lái)形成自己的設(shè)計(jì)思路和方法(這也是我們提倡鼓勵(lì)的),同樣也取得了不錯(cuò)的效果。
本文中的設(shè)計(jì)方法與國(guó)外教材上介紹的設(shè)計(jì)方法比較,各有特色。國(guó)外的設(shè)計(jì)方法通常是建立在固定的硬件框架的基礎(chǔ)上,學(xué)生通過(guò)單周期、多周期和固定的步驟(過(guò)程)進(jìn)行系統(tǒng)設(shè)計(jì),它的優(yōu)點(diǎn)在于易于上手,思路、步驟也比較清楚,設(shè)計(jì)循序漸進(jìn),缺點(diǎn)是架構(gòu)已基本固定,且偏向控制器的設(shè)計(jì),學(xué)生的設(shè)計(jì)空間受到限制。本方法要求學(xué)生將項(xiàng)目看作一個(gè)完整系統(tǒng)來(lái)設(shè)計(jì),優(yōu)點(diǎn)是學(xué)生可以掌握一個(gè)系統(tǒng)的設(shè)計(jì)方法,整體性強(qiáng),和教學(xué)內(nèi)容相聯(lián)系[12],可以發(fā)揮學(xué)生的想象空間,培養(yǎng)學(xué)生的自主創(chuàng)新能力,缺點(diǎn)是設(shè)計(jì)過(guò)程比較復(fù)雜(對(duì)于沒有經(jīng)過(guò)系統(tǒng)設(shè)計(jì)的學(xué)生而言),設(shè)計(jì)有一定的難度(通過(guò)小組的方式可以降低難度)。
(
)
[1]白明,張健.基于GER的計(jì)算機(jī)組成原理的仿真[J].實(shí)驗(yàn)技術(shù)與管理,2010,27(9):82-83.
[2]蔣本珊,王娟,洪杰.計(jì)算機(jī)組成原理改革初探[J].實(shí)驗(yàn)技術(shù)與管理,2007,26(12):270-271,272.
[3]Patterson D A,Hennessy J L.計(jì)算機(jī)組成和設(shè)計(jì)硬件/軟件接口[M].鄭緯民,譯.北京:清華大學(xué)出版社,2003.
[4]Harris D M,Harris S L.數(shù)字設(shè)計(jì)和計(jì)算機(jī)體系結(jié)構(gòu)[M].陳虎,譯.北京:機(jī)械工業(yè)出版社,2009.
[5]Patt Y N .計(jì)算機(jī)系統(tǒng)概論[M].梁阿磊,譯.北京:機(jī)械工業(yè)出版社,2009.
[6]湯志忠,揚(yáng)春武.開放式實(shí)驗(yàn)CPU設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.
[7]Grout I.基于FPGA和CPLD的數(shù)字系統(tǒng)設(shè)計(jì)[M].黃以華,譯.北京:電子工業(yè)出版社,2009.
[8]華清遠(yuǎn)見嵌入式培訓(xùn)中心.FPGA應(yīng)用開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2008.
[9]王誠(chéng).計(jì)算機(jī)組成與設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書[M].北京:清華大學(xué)出版社,2008.
[10]Wolf W.基于FPGA的系統(tǒng)設(shè)計(jì)[M].閆敬文,譯.北京:機(jī)械工業(yè)出版社,2006.
[11]曾繁泰,陳美金.VHDL程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2000.
[12]唐朔飛.計(jì)算機(jī)組成原理[M],北京:高等教育出版社,2008.