計算機組成原理實驗的探討論文(2)
計算機組成原理實驗的探討論文篇二
《計算機組成原理實驗初探》
摘要:根據(jù)國內(nèi)外計算機硬件類實踐課程教育的現(xiàn)狀,分析傳統(tǒng)計算機組成原理實驗課程教學(xué)中的弊端,介紹南京大學(xué)計算機系對此門實驗課的教學(xué)安排,從知識準(zhǔn)備、具體實驗內(nèi)容設(shè)置和教學(xué)組織形式等方面,全面介紹計算機組成原理實驗課程的內(nèi)容和教學(xué)方式,并對教學(xué)效果進行總結(jié)。
關(guān)鍵詞:計算機組成原理;CPU;FPGA;單周期;多周期
1 課程設(shè)計初衷
計算機組成原理是計算機專業(yè)重要的核心課程,在計算機專業(yè)的整個課程體系中起著承上啟下的作用。熟練掌握計算機的結(jié)構(gòu)和工作過程,不僅為計算機硬件的學(xué)習(xí)和研究打下基礎(chǔ),對從事軟件工作的人也大有益處。
近年來,南京大學(xué)計算機系對國際一流大學(xué)計算機專業(yè)的相關(guān)課程進行了詳盡的跟蹤調(diào)研,調(diào)研結(jié)果表明,計算機組成原理實驗課程設(shè)置一般都有兩個不同的角度:一個是偏重軟件的程序員角度,另一個是偏重硬件的硬件設(shè)計人員角度。偏重軟件的實驗課程一般是用高級語言和模擬器實現(xiàn)CPU,使學(xué)生能夠更好地理解計算機底層的系統(tǒng)結(jié)構(gòu),提高程序編寫和調(diào)試能力。偏重硬件的課程一般要求學(xué)生利用硬件描述語言,在FPGA上設(shè)計一個處理器系統(tǒng)。
國內(nèi)傳統(tǒng)的計算機組成原理實驗的教學(xué)方式是做驗證性實驗,在固定的實驗箱上,通過插拔一些連線,撥動部分開關(guān)和編制微程序等方式,和固定的硬件系統(tǒng)進行交互,從而了解計算機的內(nèi)部結(jié)構(gòu)。這一實驗形式無法讓學(xué)生深入理解計算機各個部件的具體硬件結(jié)構(gòu),也不能使學(xué)生很好地理解計算機底層的結(jié)構(gòu)和系統(tǒng)軟件之間的關(guān)系,更不能培養(yǎng)學(xué)生利用現(xiàn)代化的工具設(shè)計計算機硬件系統(tǒng)的能力。鑒于這些傳統(tǒng)教學(xué)的弊端,國內(nèi)部分高校在課程設(shè)置和教學(xué)內(nèi)容上都開始借鑒國外一流大學(xué)計算機專業(yè)的做法,一部分高校已經(jīng)率先利用EDA技術(shù)在FPGA上進行計算機單元部件的設(shè)計、并以系統(tǒng)搭建的形式來組織計算機組成原理的實驗教學(xué)。南京大學(xué)計算機系從2007年開始了這一教學(xué)形式的嘗試,經(jīng)過幾年的探索,已經(jīng)形成了相對穩(wěn)定的計算機組成原理實驗課程的教學(xué)模式和教學(xué)內(nèi)容。
2 課程知識準(zhǔn)備
利用EDA技術(shù)在FPGA上實現(xiàn)一個處理器,需要學(xué)生有一定的知識準(zhǔn)備。首先,計算機系在數(shù)字邏輯電路實驗課程中,利用EDA技術(shù)在FPGA上進行數(shù)字邏輯單元電路的設(shè)計和簡單數(shù)字系統(tǒng)的設(shè)計。其次,在計算機組成與系統(tǒng)結(jié)構(gòu)課程中,學(xué)生深入學(xué)習(xí)MIPS體系結(jié)構(gòu)的指令系統(tǒng),單周期、多周期以及流水線結(jié)構(gòu)CPU的數(shù)據(jù)通路。計算機組成原理實驗課程在這些課程的基礎(chǔ)上,從設(shè)計CPU內(nèi)部的單元電路開始,逐步進行MIPS體系結(jié)構(gòu)的完整CPU的設(shè)計。
3 課程設(shè)置
課程內(nèi)容的安排主要分為3大部分:部件級實驗、簡單CPU實驗和大型作業(yè)。
3.1 部件級實驗
在CPU的硬件電路設(shè)計中,涉及許多簡單的單元電路,如選擇器、譯碼器、觸發(fā)器等,這些內(nèi)容在數(shù)字邏輯電路實驗課程中已經(jīng)很熟悉了,在本實驗課程中,主要是安排CPU內(nèi)部其他重要的功能獨立部件的設(shè)計,如存儲器、寄存器組、桶形移位器和ALU等。
3.1.1 存儲器的設(shè)計及測試
存儲器是計算機系統(tǒng)的重要組成部分,用于存儲指令和數(shù)據(jù)。指令存儲器和數(shù)據(jù)存儲器可以分開設(shè)計,也可以只設(shè)計一個既存儲指令又存儲數(shù)據(jù)的存儲器。存儲器有讀和寫兩個端口,讀存儲器時,可以使用時鐘進行觸發(fā),也可以不使用時鐘進行觸發(fā)。寫存儲器時,一定需要有時鐘進行觸發(fā)才能將數(shù)據(jù)寫入存儲器中,時鐘的上升沿和下降沿都可以觸發(fā)存儲器的寫操作。
存儲器實驗的主要內(nèi)容,是讓學(xué)生掌握存儲器的接口及控制信號的功能和使用,學(xué)會各種存儲器的設(shè)計及測試,特別要掌握存儲器的工作時序,這在單周期CPU設(shè)計時特別重要。單周期CPU需要在一個時鐘周期內(nèi)完成一整條指令的執(zhí)行,而在這一個時鐘周期內(nèi),CPU有可能會兩次訪問存儲器——讀指令和存儲數(shù)據(jù),如果存儲器設(shè)計不合理,在一個時鐘周期內(nèi)是無法完成一條指令的。對于多周期和流水線CPU,一條指令需要多個時鐘周期才能完成,對存儲器時序的要求相對小一些,這時可以靈活應(yīng)用方便讀寫的存儲器結(jié)構(gòu)。
3.1.2 寄存器組的設(shè)計
寄存器是CPU內(nèi)部暫存數(shù)據(jù)的空間,速度最快,使用也最為頻繁。MIPS體系結(jié)構(gòu)的CPU內(nèi)部寄存器,是一組由32個32位的寄存器組成的通用寄存器組。僅從寄存器組的外部特性來看,MIPS結(jié)構(gòu)的寄存器組由無差別的32個32位寄存器組成,任何條件下均可訪問寄存器組中的任意寄存器。但是,為了簡化CPU的結(jié)構(gòu),MIPS體系結(jié)構(gòu)寄存器組的0號寄存器的值被設(shè)置為恒“0”,只能讀出,不能寫入。
MIPS指令集中一條指令(R型)最多同時對三個寄存器進行操作:兩個源寄存器和一個目的寄存器。R型指令執(zhí)行過程中,需要讀出兩個源地址寄存器中的內(nèi)容,經(jīng)過運算后再寫入目的地址指定的寄存器,由此可以得出MIPS體系結(jié)構(gòu)的寄存器組至少需要兩個輸出端口和一個輸入端口。32位寬的寄存器是由4個字節(jié)組成的,寄存器組可以僅對某個寄存器的某個字節(jié)進行寫操作,因此寄存器組還需要一個4位的寫使能控制端,分別用于控制4個字節(jié)的寫操作。
3.1.3 桶形移位器
在MIPS的指令集中,有一些移位指令,要求對某寄存器中的數(shù)據(jù)一次性移動數(shù)位。如果用移位寄存器來完成這一移位操作,就需要多個移位周期才能完成一條移位指令,工作效率太低,顯然不能滿足快速CPU的要求。
桶形移位器是一個組合邏輯電路,移位位數(shù)可以在0~31位之間自由設(shè)置,移位方式有邏輯左移、邏輯右移、算術(shù)右移和循環(huán)右移4種。因此,桶形移位器的輸入端有32位的待移位數(shù)據(jù)輸入端、5位移位位數(shù)輸入端和2位移位方式控制端;桶形移位器輸出一個已經(jīng)經(jīng)過移位的32位數(shù)據(jù)。
3.1.4 ALU設(shè)計
ALU是CPU中負(fù)責(zé)運算的電路,通常ALU只實現(xiàn)算術(shù)運算和邏輯運算,但是,MIPS指令系統(tǒng)要求一些特殊指令也在ALU中完成,如LUI(置高位立即數(shù))、SEB(字節(jié)擴展)、SEH(半字?jǐn)U展)、SLT(比較置數(shù))、CLZ(計算前導(dǎo)0)和CLO(計算前導(dǎo)1)等。經(jīng)過對MIPS指令系統(tǒng)進行詳細(xì)的分析,MIPS體系結(jié)構(gòu)的ALU要執(zhí)行15種不同的運算,ALU具體的操作及編碼如表1所示。此外,為了簡化后續(xù)電路和擴展CPU功能,在ALU電路設(shè)計時,其輸出端也產(chǎn)生和保留了一些通常ALU沒有保留的信號,如溢出信號、進位信號和是否小于信號等。
3.2 簡單CPU設(shè)計實驗
3.2.1 單周期CPU設(shè)計實驗
所謂單周期CPU,是指所有的指令都在一個時鐘周期內(nèi)完成的CPU結(jié)構(gòu),單周期CPU的指令執(zhí)行過程和硬件結(jié)構(gòu)都相對簡單。理解單周期CPU的工作和設(shè)計原理,對于理解多周期CPU和流水線CPU都有很大幫助,因此,學(xué)習(xí)設(shè)計CPU從單周期CPU人手是非常合適的。
該實驗要求完成一個單周期CPU的設(shè)計,此CPU能完成表2中的指令,這些指令包含R型指令、I型指令和J型指令,為了使單周期CPU的結(jié)構(gòu)相對簡單,實驗中沒有加上移位指令和存儲指令。
處理器的設(shè)計涉及數(shù)據(jù)通路的實現(xiàn)與控制邏輯的設(shè)計,能夠執(zhí)行以上16條指令的單周期CPU的數(shù)據(jù)通路如圖1所示。
3.2.2 多周期CPU設(shè)計實驗
單周期CPU的指令周期長度,必須滿足執(zhí)行時間最長的指令周期長度。實際上,大部分的指令執(zhí)行周期都很短,這就導(dǎo)致了單周期CPU的效率低下。多周期CPU是將每條指令分成幾個時間相同的執(zhí)行階段,每個階段執(zhí)行特定的操作,執(zhí)行時間長的指令就執(zhí)行多個周期,執(zhí)行時間短的指令就使用相對少的幾個周期,這樣就提高了指令執(zhí)行的效率。
多周期CPU除了要完成上述所有單周期CPU需要執(zhí)行的指令外,還增加了表3中的4條指令,這些指令包括邏輯移位指令和存儲器訪問指令。
觀察多周期CPU可執(zhí)行的指令,它比單周期CPU可執(zhí)行的指令多了邏輯移位指令和存儲訪問指令,因此,多周期CPU在結(jié)構(gòu)上比單周期CPU多了桶形移位器和數(shù)據(jù)存儲器。另外,多周期CPU執(zhí)行一條指令時需要多個時鐘周期,只有在指令的運算周期,才會用到ALU,在其他周期ALU是空閑的。為了簡化硬件結(jié)構(gòu),在ALU空閑期間可以用它來計算下一條指令的地址,這樣用于計算下條指令地址的加法器就省略了。和單周期CPU相比,多周期CPU的控制信號也相應(yīng)的有所增加,多周期CPU的結(jié)構(gòu)圖如圖2所示。
3.3 大型作業(yè)
進行了單周期CPU和多周期CPU的設(shè)計訓(xùn)練之后,同學(xué)們具備了一定的CPU設(shè)計基礎(chǔ),有了設(shè)計相對復(fù)雜的CPU的知識儲備。在學(xué)期的后半段,我們會布置大型課程設(shè)計作業(yè),作業(yè)內(nèi)容包括MIPS體系結(jié)構(gòu)5級流水線CPU的設(shè)計,或是ARM體系結(jié)構(gòu)CPU的設(shè)計,我們也鼓勵同學(xué)們自己設(shè)計指令系統(tǒng),并能夠設(shè)計出可以執(zhí)行這些指令的CPU。
大型作業(yè)要求同學(xué)們分組完成,每組2~4名同學(xué)分工合作,這樣既減輕了他們的工作量,又鍛煉了他們協(xié)同合作的能力。
4 教學(xué)效果
自2008年秋季學(xué)期開始,我系在計算機組成原理實驗課程中采用了用EDA技術(shù)在FPGA上進行CPU設(shè)計的教學(xué)方式。通過對CPU設(shè)計的學(xué)習(xí),同學(xué)們加強了對于計算機硬件結(jié)構(gòu)的理解,增強了數(shù)字系統(tǒng)設(shè)計的能力。在有些設(shè)計階段,同學(xué)們的設(shè)計超出了教學(xué)講解的范圍,他們通過討論、查詢網(wǎng)絡(luò)和查閱圖書資料等方式解決問題,增加了他們的自學(xué)能力和搜集利用資料的能力。部分同學(xué)因此對CPU的設(shè)計產(chǎn)生了濃厚的興趣,有些同學(xué)設(shè)計了包含MIPS所有整數(shù)指令的五級流水CPU,還有的同學(xué)設(shè)計了ARM 11結(jié)構(gòu)的處理器,并在此基礎(chǔ)上增加總線及總線接口、PS/2接口、VGA接口等部分,接上鍵盤和顯示器,就構(gòu)成了一臺完整的計算機硬件裸機,然后又用已經(jīng)實現(xiàn)的指令編寫了游戲軟件,實現(xiàn)了在自己設(shè)計的機器上玩自己設(shè)計的游戲的夢想。也有同學(xué)將設(shè)計的系統(tǒng)作為作品參加了相關(guān)的設(shè)計大賽,獲得了很好的名次。
5 結(jié)語
經(jīng)過5年的教學(xué)實踐,計算機系證明了在計算機組成原理實驗課程中,指導(dǎo)學(xué)生利用EDA技術(shù)在FPGA上實現(xiàn)—個CPU在教學(xué)安排上是可行的,相關(guān)實踐取得了很好的教學(xué)效果,為學(xué)生的研究和學(xué)習(xí)增加了—個可選的方向,對我國硬件人才的培養(yǎng)也非常有益。
參考文獻:
[1]袁春風(fēng),張澤生,蔡曉燕.計算機組成原理課程實踐教學(xué)探[J].計算機教育,2011(17):110-114.
[2]王帥.美國一流大學(xué)計算機組成與系統(tǒng)結(jié)構(gòu)實驗課程研究[J].計算機教育,2011(17):115-118.
[3]李山山,全成斌.計算機組成原理課程實驗教學(xué)的調(diào)查與研究[J].計算機教育,2010(22):127-129.
[4]袁春風(fēng).計算機組成與系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2010:229-264.
[5]李亞民.計算機原理與設(shè)計:Veirilog HDL版[M].北京:清華大學(xué)出版社,2011:127-202.
計算機組成原理實驗的探討論文相關(guān)文章: