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