華科組成原理課程設計-MIPS流水線CPU_第1頁
華科組成原理課程設計-MIPS流水線CPU_第2頁
華科組成原理課程設計-MIPS流水線CPU_第3頁
華科組成原理課程設計-MIPS流水線CPU_第4頁
華科組成原理課程設計-MIPS流水線CPU_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 計算機組成原理課程設計報告支持流水線的簡單計算機系統(tǒng)題目:設計與實現(xiàn)專業(yè):計算機科學與技術班級:學號:姓名:電話:郵件:實驗臺:完成日期:指導教師:計算機科學與技術學院TOC o 1-5 h z HYPERLINK l bookmark4 一、課程設計概述3課設目的3實驗環(huán)境3設計任務與要求3 HYPERLINK l bookmark10 二、設計原理3 HYPERLINK l bookmark12 MIPS概述3MIPS指令簡介33經(jīng)典5段RSIC流水線結構4 HYPERLINK l bookmark21 三、設計內容5指令選取52非流水5段CPU模型63流水5段CPU模型8 HYPERL

2、INK l bookmark41 四、實現(xiàn)內容與測試結果12各模塊功能12控制信號12指令操作流程13指令執(zhí)行狀態(tài)轉換圖14引腳綁定15測試程序15測試結果與仿真圖16 HYPERLINK l bookmark43 五、課設總結17課設中遇到的問題17課設經(jīng)歷17課設感想18小組分工18 HYPERLINK l bookmark45 參考文獻18課程設計概述課設目的掌握硬件描述語言與開發(fā)環(huán)境,了解硬件開發(fā)地基本過程。掌握流水線設計方法。鍛煉學生簡單計算機系統(tǒng)的設計能力,并通過進行主機系統(tǒng)低層電路的實現(xiàn)、故障分析與定位、系統(tǒng)調試等環(huán)節(jié)的鍛煉,進一步提高了學生分析和解決問題的能力。實驗環(huán)境Xili

3、nxISE14.2Spartan3E實驗板一塊設計任務與要求課程設計的主要任務是設計一臺支持流水線的簡單計算機系統(tǒng)并調試通過。要求所設計的計算機系統(tǒng)能正確地執(zhí)行存放在指令中的程序的功能。本設計基于的位流水線架構,設計過程中力圖盡可能的遵循原有的的功能和指令集。基本做到與指令集的兼容。具體要求包括:支持算術運算,邏輯運算,存儲器讀寫,寄存器間數(shù)據(jù)傳送等幾類指令。支持立即數(shù)尋址,直接尋址,寄存器尋址等幾種基本的數(shù)據(jù)尋址方式和順序尋址、跳躍尋址兩種指令的尋址方式。支持10條或以上的指令。能運行由自己所設計的指令系統(tǒng)構成的一段程序,程序執(zhí)行功能正確。具有完整的五級流水線架構。采用獨立的32位的數(shù)據(jù)總線

4、和地址總線。二、設計原理MIPS概述是高效的體系結構中最優(yōu)雅的一種體系結構。其中文意思為無內部互鎖流水級的微處理器”,其機制是盡量利用軟件辦法避免流水線中的數(shù)據(jù)相關問題。它最早是在年代初期由斯坦福大學教授領導的研究小組研制出來的。公司的系列就是在此基礎上開發(fā)的工業(yè)產品的微處理器。這些系列產品為很多計算機公司采用構成各種工作站和計算機系統(tǒng)。本設計將參考MIPS的CPU設計以實現(xiàn)自己的五段流水線CPU設計,并部分實現(xiàn)MIPS32指令集MIPS指令簡介MIPS指令集特點MIPS指令集具有以下特點:簡單的結構。所有計算類型指令均從寄存器組中讀取數(shù)據(jù)并把結果寫入寄存器組中。只有和指令訪問存儲器(數(shù)據(jù))。

5、易于流水線的設計。指令集的指令格式非常規(guī)整,所有的指令均為32位,而且指令操作碼在固定的位置上。易于編譯器的開發(fā)。一般情況下,編譯器在編譯高級語言程序時,很難用到復雜的指令。I指令的尋址方式與操作非常簡單,便于編譯器的開發(fā)。2.2MIPS指令格式在本次課程設計中,在數(shù)據(jù)類型上只支持整數(shù)類型,在指令格式上直接R、I和J型指令。以下是對三型指令的簡介1:R(reister)類型的指令從寄存器組中讀取兩個源操作數(shù),計算結果寫回寄存器組。I(immediate)類型的指令使用一個16位的立即數(shù)作為一個源操作數(shù)。J(ump)類型的指令使用一個26位立即數(shù)作為跳轉的目標地址。三型指令的格式如圖1所示,其中

6、:op表示指令操作碼。rs為源操作數(shù)的寄存器號。rd為目的寄存器號,R既可為源寄存器號,也可為目的寄存器號。funct可認為是擴展的操作碼。shamte由移位指令使用,定義移位位數(shù)。Immediate是16位立即數(shù),根據(jù)指令需求進行無符號或有符號擴展。ddress是26位立即數(shù),由J型指令使用,用于產生跳轉的目的地址。65516oprsrtImmediate312625212016150(a)I類指令655556oPrsrtrdshamtfunct312625212016151110650(b)R類指令626oPaddress3126250(c)J類指令圖1.MIPS的指令格式3.經(jīng)典段流水線

7、結構經(jīng)典的5段RI流水線如圖2。IF段ID段EX段MEM段WB段圖2經(jīng)典5段RI流水線在該結構中一條指令的執(zhí)行過程分為以下5個時鐘周期:取指令周期():以程序計數(shù)器中的內容作為地址,從存儲器中取出指令并放入指令寄存器;同時值加(假設每條指令占個字節(jié)),指向順序的下一條指令。指令譯碼讀寄存器周期():對指令進行譯碼,并用中的寄存器地址去訪問通用寄存器組,讀出所需的操作數(shù)。執(zhí)行有效地址計算周期():在這個周期,對在上一個周期準備好的操作數(shù)進行運算或處理。不同指令所進行的操作不同。存儲器訪問分支完成周期():指令用上一個周期計算出的有效地址從存儲器中讀出相應的數(shù)據(jù);指令把指定的數(shù)據(jù)寫入這個有效地址所

8、指出的存儲器單元;分支指令若分支成功就把錢一個周期中計算好的轉移目標地址送入PC,否則不進行任何操作;其他類型的指令在該周期不做任何操作。寫回周期():把結果寫入通用寄存器組。本設計基于該經(jīng)典端流水線結構完成了的一種簡單實現(xiàn),并在此基礎上加入了對流水線沖突(數(shù)據(jù)沖突,控制沖突)的處理,以及對中斷的處理。三、設計內容1.指令選取本系統(tǒng)能執(zhí)行條指令,指令基本情況如表所示。指令助記符指令格式操作1.1.11.111.表系統(tǒng)支持的指令集從指令類型來講,這16條指令覆蓋了算邏運算、訪存、無條件跳轉和有條件跳轉,已基本覆蓋一個指令集所需的所有基本指令。從尋址方式來講,這1條指令覆蓋了寄存器尋址(R-TPE

9、指令),立即數(shù)尋址(I-TPE指令),基址偏移量尋址(LWSW),直接尋址()。1條MIPS指令并不是本設計的極限,只是受到實驗板資源的限制,我們僅僅完成了MIPS32指令集中的1條而已。本設計通過簡單的拓展可以輕松實現(xiàn)整個MIPS32指令集。2.非流水段模型初始數(shù)據(jù)通路設計往往都是從簡單到復雜,循序漸進。好高騖遠則往往求之而不得。因此我們并沒有從流水線模型直接下手,而是首先設計了一個類似經(jīng)典5段RISC流水線結構的非流水5段CPU模型。由于不涉及流水,所以所有的指令周期均為單周期,數(shù)據(jù)通路見圖3。圖3非流水5段CPU初始數(shù)據(jù)通路5段具體操作在這個數(shù)據(jù)通路上每條指令需要花費5個時鐘周期,這5個

10、時鐘周期相應的操作如下:.取指令周期(I)IRMemPCNPCPC+1以PC中的值從指令cace中取出一條指令,放入指令寄存器IR;同時PC值加1,然后放入NPC,這時NPC中的值為順序的下調指令的地址。.2指令譯碼讀寄存器周期(ID)ARegsrsBRegsrtimmIR11IR131對指令進行譯碼,并以指令中的rs和rt字段作為地址訪問通用寄存器組,將讀出的數(shù)據(jù)讓如和寄存器中。同時的低位進行有符號或者無符號擴展,然后存入寄存器執(zhí)行有效地址計算周期()和指令將操作數(shù)相加形成有效地址,并存入臨時寄存器根據(jù)字段指出的操作類型對和中的數(shù)據(jù)進行運算,并將結果存入I-TYPE根據(jù)操作碼指出的操作類型對

11、和中的數(shù)據(jù)進行運算,并將結果存入分支指令將臨時寄存器和中的值相加得到轉移目標的地址,存入ALUo存儲器訪問分支完成周期()和指令:即從存儲器中讀出相應數(shù)據(jù),放入臨時寄存器中:即把中數(shù)據(jù)寫入存儲器分支指令若中的內容為真,則將中的轉移目標地址放入,否則。寫回周期()R-TYPEI-TYPELW指令2.3模型優(yōu)化與最終數(shù)據(jù)通路在這部分設計的時候我們的跳轉指令僅僅實現(xiàn)了,因此我們對改分支指令進行了單獨的優(yōu)化。在圖的設計中若分支失敗,則由于新的在段產生,因此會產生個時鐘周期的延遲。但實際上可以對這條指令進行單獨的改進,將對的修改提前到段,以便值能夠快速變化。經(jīng)過這樣優(yōu)化后,分支失敗則只會產生個時鐘周期的

12、延遲。改進后的數(shù)據(jù)通路如圖4所示。3.段流水模型初始數(shù)據(jù)通路在實現(xiàn)了非流水的段CPU模型后,段流水CPU模型也就水到渠成了。只需要在各段之間加入相應的流水寄存器即可。數(shù)據(jù)通路如圖5。Wb_SignEx_SignAlu_Sign2圖段流水CPU初始數(shù)據(jù)通路5段具體操作這部分與非流水的具體操作大致相同,這里不加贅述。流水線沖突及解決方案數(shù)據(jù)沖突如果上一條指令的結果還沒有寫入到寄存器中,而下一條指令的原操作數(shù)又恰恰是此寄存器的數(shù)據(jù),那么它所獲得的將是原來的數(shù)據(jù),而不是更新后的數(shù)據(jù),這樣的相關問題稱為數(shù)據(jù)相關。根據(jù)在系統(tǒng)結構中學習到的相關知識,在我們的設計中,采用定向()技術來解決此類相關問題。其關鍵

13、思路是:在發(fā)生寫后讀相關的情況下,在計算結果尚未出來之前,后面等待使用該結果的指令并不見得是馬上就要用該結果。如果能夠將該計算結果從其產生的地方(ALU出口)直接送到其他指令需要它的地方(ALU的入口),那么就可以避免停頓,如圖6。圖6.定向技術控制沖突在流水線中,控制沖突可能會使數(shù)據(jù)沖突造成更大的性能損失。執(zhí)行分支指令的結果有兩種,一種是成功,值改變?yōu)榉种мD移的目標地址。另一種則是失敗,這是的值保持正常遞增。本設計中采用預測分支失敗的方法解決控制沖突,即允許分支指令后的指令繼續(xù)在流水線中流動。當確定分支是失敗時,可以將分支指令看做一條普通指令,流水線正常流動,如表2;當確定分支是成功時,流水

14、線就把在分支指令之后取出的指令轉化為空操作,并按分支目標地址重新取指令執(zhí)行,如表3。分分支指令IIDEXMEMB支指令1IIDEXMEMB失指令2IIDEXMEMB敗指令3IIDEXMEMB表2.分支失敗的流水線時空圖分分支指令IIDEXMEMB支指令1IIII成分支目標指令IIDEXMEMB功分支目標指令1IIDEXMEMB表3.分支成功的流水線時空圖模型中的問題與修正指令周期數(shù)問題若是指令周期和之前的設計一樣,使用單周期的設計,那么會出現(xiàn)對流水寄存器的讀寫沖突。例如對于通用寄存器組來說,在上升沿的時候需要從段的指令寄存器中取出指令,然后訪問相應的寄存器并將數(shù)據(jù)寫入段的寄存器。試想,若是從中

15、取指令,和對段的寄存器的寫入兩個操作都是在上升沿觸發(fā),那么由于時延的存在,很有可能導致寫入的值不是預期值。因此我們將指令周期從單周期改為雙周期。在前一周期完成對流水寄存器的讀操作,并且完成各段的功能。后一周期,完成對流水寄存器的寫操作。具體實現(xiàn)上我們舍棄了分頻的方法而是采用前半周期為上升沿觸發(fā),后半周期為下降沿觸發(fā)。譯碼器問題通過可知,各段功能需要在前一周期內全部完成,但是段很特殊,因為有譯碼器的存在。通用寄存器組和擴展部件都需要譯碼器提供控制信號,但是由于3.3.1的限制,譯碼器也會在上升沿觸發(fā)。由于時延的存在,這可能會導致控制信號產生在需求之后。也即在寄存器組和擴展部件需要控制信號的時候,

16、控制信號還未真正產生,導致這兩部件使用了錯誤的控制信號。除了這個隱患,還有一個問題就是若采用單獨的譯碼器,那么會在段產生大量的控制信號,這些控制信號都需要通過流水線流向下一段,那么勢必需要大量的流水寄存器,大幅增加硬件成本。綜合考慮這兩個問題之后我們撤掉了譯碼器,而采用分段譯碼的方式。即給每個功能部件都提供完整的指令,由各個功能部件自己產生自己所需要的控制信號,這樣就可以完美的解決上述兩個問題。針對指令的優(yōu)化問題在非流水的模型中我們針對指令進行了專門的優(yōu)化,將對分支條件的判斷放在了段。但是這存在兩個問題,一是我們認為這樣影響了整體設計的一致性;二是在流水線的設計中我們加入了新的跳轉指令,這使得

17、判斷變得更加復雜,段分擔了太多段的功能,會影響整體流水的性能。因此在流水設計中我們將分支的條件改回在段判斷。寄存器組的讀寫順序問題在最初的設計中,我們將寄存器的寫回操作放在后半周期,即和流水線寄存器的寫操作一同完成。但是在后面的實際測試中我們發(fā)現(xiàn)若這樣處理,我們在做重定向的時候必須做三次重定向。因此我們對此做了調整,將寫回操作提前到前半周期完成,即對寄存器組實現(xiàn)先寫后讀策略。寫回段的取舍在最初的設計中,由于我們將寄存器的寫回操作放在后半周期,因此我們一度舍棄了寫回段。因為寫回段僅僅是前半周期讀出寫回數(shù)據(jù),后半周期將數(shù)據(jù)寫回寄存器組,這么簡單的功能占據(jù)一個流水段顯示實在是“奢侈”。因而在最初的設

18、計中我們將其和段合并。但是中對寄存器讀寫順序做了調整,因此寫回段中的寫回操作和段的計算操作以及的訪存操作在同半個周期內,由于時延的存在很有可能導致寫回數(shù)據(jù)錯誤。此時若舍棄了寫回段則可能在計算結果出來前就寫回了,這顯然不合理。因此我們重新加入了寫回段。在加入訪存段后,由于寫回的結果依賴于訪存結果,因此放在訪存段之后。特殊指令的問題JNZ這條指令在整個指令集中是非常特殊的存在,在之前的設計中我們完全沒有考慮到這個問題。雖然是-指令,但是卻是源寄存器,也即不會修改的值。即它不符合-指令在寫回段的數(shù)據(jù)通路。這在做定向的時候會產生嚴重的問題,若不做特殊判斷,那么很可能會產生錯誤的定向。指令是整個指令集中

19、唯一一個需要個輸入()的指令,其他指令均最多只需要個輸入。這使得段的兩個選擇器完全是多余的,可以去掉。在考慮到這兩點之后我們對重定向進行了重新設計,并且去掉了段中的兩個選擇器。硬軟中斷的實現(xiàn)軟中斷的實現(xiàn)對于軟中斷,我們實際上通過擴展指令集的方式來實現(xiàn)。即在指令集中加入兩條指令,和,來實現(xiàn)軟中斷。具體指令表。-表和指令當段檢測到指令時,將會把所有通用寄存器組的值以及當前值壓入堆棧。當段檢測到指令時,會無條件跳轉至指令對對應的地址。當段檢測到指令時,將會把所有的通用寄存器組的值彈出。當段檢測到指令時,會無條件跳轉至堆棧中的值對應的地址。硬中斷的實現(xiàn)對于硬中斷我們僅實現(xiàn)了了溢出中斷。當段出現(xiàn)溢出時,

20、段將會向段傳送相應的控制信號。此時段將會產生一條指令送到中,并且值維持一周期不變。這樣就相當于向流水線中插入了一條軟中斷指令,從而實現(xiàn)了用硬件來自動產生中斷指令。3.6最終數(shù)據(jù)通路在成功修改和完善3.4中的問題以及加入3.5中的內容后,我們得到了最后的數(shù)據(jù)通路圖,如圖7。-|Alu_Sign1SellAlu_Sign3i|:EX/MEM:ID/EX=Alu_Sign2Sel2Wb_SignEx_Sign圖段流水CPU最終數(shù)據(jù)通路圖四、實現(xiàn)內容與測試結果各模塊功能模塊例化名稱模塊實現(xiàn)功能U1實現(xiàn)PC的存儲與更新U2實現(xiàn)指令的存取U3實現(xiàn)對通用寄存器的讀寫U4實現(xiàn)對立即數(shù)的有符號與無符號擴展U實現(xiàn)

21、ALUU實現(xiàn)訪存功能表5.各模塊功能表控制信號流水段控制信號功能IUpdate_Pc控制PC更新為PC+1或ALUIDReg_Sign控制通用寄存器組的壓棧與彈出Ex_Sign控制有符號擴展和無符號擴展EXAlu_Sign1控制MUX2的選擇Alu_Sign2控制MUX3的選擇Alu_Sign3控制ALU的計算功能Sel1控制ALUA端的定向Sel2控制ALUB端的定向MEMMem_Write控制MEM的讀寫WBMem_Read表明MEM的讀寫狀態(tài),控制MUX4的選擇Wb_Sign控制通用寄存器的寫回表6.控制信號表3.指令操作流程由于我組實現(xiàn)的指令較多,而很多指令具有較大的相似性,因此這里取

22、四條指令,先做出其各周期的操作及控制信號表2。指令階段操作流程控制信號表7.ADD指令操作流程及控制信號指令階段操作流程控制信號-表8.BNE指令操作流程及控制信號指令階段操作流程控制信號-表9.J指令操作流程及控制信號MPCUpdate_Pc=0PCPC1DA2:21eg_Sign=00E_Sign=1B20:1MMSign-etend1-02EXAUOAMMAlu_Sign1=0Alu_Sign2=0Alu_Sign3=0000el1=0el2=032B2BMEMMemrAUOB2Mem_Write=1指令階段操作流程控制信號表10SW指令操作流程及控制信號4.指令執(zhí)行狀態(tài)轉換圖可畫出其對

23、應的狀態(tài)轉移圖,如圖9所示。IF5.引腳綁定表名稱綁定引腳功能-時鐘-復位信號-控制七段顯示的具體內容。-對應的對應的對應的對應的對應的對應的對應的對應的控制七段碼顯示控制七段碼具體顯示位七段碼顯示的時鐘表11.引腳綁定表測試程序綜合考慮到我們選擇的指令集以及開發(fā)板的硬件資源情況,我們打算用下面三個程序來測試我們的設計方案。程序1主要用來測試算邏運算和訪存指令的正確性,程序如表12所示。主存地址指令結果描述機器指令的機器碼十六進制二進制表12.測試程序程序主要用來測試軟中斷和硬中斷功能,程序如表所示。主存地址指令結果描述機器指令的機器碼十六進制二進制壓、-、-出棧表測試程序程序主要用來測試跳轉指令的正確性,由于和指令中已經(jīng)隱含了指令,因此這里只對1指令進行測試,程序如表所示。1主存地址指令結果描述-表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論