第五部分cpu控制單元設(shè)計(jì)_第1頁(yè)
第五部分cpu控制單元設(shè)計(jì)_第2頁(yè)
第五部分cpu控制單元設(shè)計(jì)_第3頁(yè)
第五部分cpu控制單元設(shè)計(jì)_第4頁(yè)
第五部分cpu控制單元設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第五部分 CPU與控制單元設(shè)計(jì)一、CPU的功能與組成二、數(shù)據(jù)通路設(shè)計(jì)三、指令執(zhí)行流程分析四、硬布線控制器設(shè)計(jì)五、微程序原理六、微程序控制器設(shè)計(jì)七、MIPS數(shù)據(jù)通路實(shí)現(xiàn)簡(jiǎn)介八、流水線技術(shù)簡(jiǎn)介7.1 概述MIPS 寄存器結(jié)構(gòu)32位虛擬地址空間32個(gè)32位GPRs(通用寄存器)32個(gè)32 位FPRs(浮點(diǎn)數(shù)寄存器)HI, LO, PC7.1 概述MIPS 指令格式Op: 6 bits, OpcdoeRs: 5 bits, The first register source operandRt: 5 bits, The second register source operandRd: 5 bits,

2、 The register destination operandShamt: 5 bits, Shift amount ( shift instruction)Func: 6 bits, function code ( another Opcode)R類型I類型J類型7.1 概述MIPS 尋址方式7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)MIPS基本實(shí)現(xiàn)(子集)MIPS指令系統(tǒng)子集存儲(chǔ)訪問(wèn)指令:load word(lw)和store word(sw)算術(shù)邏輯指令:add、sub、and、or和 slt跳轉(zhuǎn)指令: branch equal(beq)和jump(j)指令類型R型指令:add、sub、sltI

3、型指令:addi、ori、lw、sw、beqJ型指令:j7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)通路設(shè)計(jì)考慮使用指令存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)分別保存指令和數(shù)據(jù)指令執(zhí)行的共性根據(jù)PC從內(nèi)存讀取指令,取指令后,PC+4;所有類型的指令在讀取寄存器后,都要使用ALU存儲(chǔ)訪問(wèn)指令用ALU計(jì)算地址算術(shù)邏輯指令用來(lái)執(zhí)行計(jì)算分支指令用ALU進(jìn)行比較7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)取指和PC自增數(shù)據(jù)通路7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)R型指令數(shù)據(jù)通路部件add rd, rs, rt /* rd (rs) op (rt)指令格式:部件:寄存器堆、ALU7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)內(nèi)存指令(sw,lw

4、)數(shù)據(jù)通路部件lw rt, rs, imm16指令格式:指令功能:rt Mem (rs) + imm167.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)分支指令數(shù)據(jù)通路 beq rs, rt, imm16指令格式:指令功能: If ( (rs) - (rt) =0) then PC (PC) + imm16*47.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)訪存指令與 R型指令數(shù)據(jù)通路組合7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)MIPS各種數(shù)據(jù)通路組合7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)MIPS數(shù)據(jù)通路(多路復(fù)用 + 控制信號(hào))指令存儲(chǔ)區(qū)數(shù)據(jù)存儲(chǔ)區(qū)寄存器堆7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)MIPS數(shù)據(jù)通路(帶控制單元)指令存儲(chǔ)區(qū)寄存器堆數(shù)據(jù)存儲(chǔ)區(qū)控

5、制單元控制單元7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)R型指令的數(shù)據(jù)通路(例如: add $t1,$t2,$t3)指令存儲(chǔ)區(qū)寄存器堆數(shù)據(jù)存儲(chǔ)區(qū)控制單元7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)取數(shù)指令(lw)數(shù)據(jù)通路控制單元指令存儲(chǔ)區(qū)寄存器堆數(shù)據(jù)存儲(chǔ)區(qū)7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)存數(shù)指令(sw)數(shù)據(jù)通路控制單元指令存儲(chǔ)區(qū)寄存器堆數(shù)據(jù)存儲(chǔ)區(qū)7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)相等則轉(zhuǎn)移(beq)指令數(shù)據(jù)通路7.2 MIPS的數(shù)據(jù)通路實(shí)現(xiàn)MIPS數(shù)據(jù)通路(擴(kuò)展實(shí)現(xiàn)跳轉(zhuǎn)指令j)7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案為什么不使用單周期實(shí)現(xiàn)方式單周期設(shè)計(jì)中,時(shí)鐘周期對(duì)所有指令等長(zhǎng)。而時(shí)鐘周期由計(jì)算機(jī)中可能的最長(zhǎng)路徑?jīng)Q定,一般為

6、取數(shù)指令。但某些指令類型本來(lái)可以在更短時(shí)間內(nèi)完成。多周期方案將一條指令的執(zhí)行分解為一系列步驟指令的每一步將占用一個(gè)時(shí)鐘周期一個(gè)功能單元可以在一條指令的執(zhí)行過(guò)程中使用多次,只要是在不同周期中(這種共享可減少所需的硬件數(shù)量)允許指令的執(zhí)行占用不同周期數(shù)、功能單元共享是多周期設(shè)計(jì)的主要優(yōu)點(diǎn)7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案多周期數(shù)據(jù)通路高層視圖(和單周期數(shù)據(jù)通路區(qū)別)指令和數(shù)據(jù)使用同一個(gè)存儲(chǔ)器單元只有一個(gè)ALU,而不是一個(gè)ALU和兩個(gè)加法器每個(gè)主要功能單元都加上了一個(gè)或多個(gè)寄存器存儲(chǔ)輸出值,以便在后面的時(shí)鐘周期中使用7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案MIPS的多周期數(shù)據(jù)通路給ALU的第一

7、個(gè)輸入添加了一個(gè)多路復(fù)用器,它在寄存器A和PC間進(jìn)行選擇ALU第二個(gè)輸入的多路復(fù)用器由2路改為4路,其新加的兩個(gè)輸入為常數(shù)4(用于PC增值)和符號(hào)擴(kuò)展及移位后的偏移量字段(用于計(jì)算分支地址)7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案數(shù)據(jù)通路加上控制線路數(shù)據(jù)通路用多個(gè)時(shí)鐘周期完成一條指令,所以需要一套不同的控制信號(hào)PC,存儲(chǔ)器,寄存器,IR需要寫控制信號(hào);存儲(chǔ)器還需要一個(gè)讀信號(hào)ALU控制器需要控制信號(hào)進(jìn)行ALU操作類型控制每個(gè)2輸入、4輸入多路復(fù)用器分別需要1、2根控制線7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案多周期實(shí)現(xiàn)的完整的數(shù)據(jù)通路和必要的控制線路7.3 MIPS的多周期數(shù)據(jù)通路實(shí)現(xiàn)方案將指令

8、分解到各個(gè)時(shí)鐘周期,可以最大化性能把任意指令的執(zhí)行分解為一系列步驟,每步一個(gè)時(shí)鐘周期,基本上長(zhǎng)度相當(dāng)。比如規(guī)定,每一步最多包含一次ALU操作,或一次寄存器堆訪問(wèn),或一次存儲(chǔ)器訪問(wèn)。將指令的執(zhí)行分到各個(gè)時(shí)鐘周期取指指令譯碼和讀取寄存器指令的執(zhí)行,存儲(chǔ)地址的計(jì)算或分支的完成存儲(chǔ)器的訪問(wèn)或R型指令的完成讀取存儲(chǔ)器完成第五部分 CPU與控制單元設(shè)計(jì)一、CPU的功能與組成二、數(shù)據(jù)通路設(shè)計(jì)三、指令執(zhí)行流程分析四、硬布線控制器設(shè)計(jì)五、微程序原理六、微程序控制器設(shè)計(jì)七、MIPS數(shù)據(jù)通路實(shí)現(xiàn)簡(jiǎn)介八、流水線技術(shù)簡(jiǎn)介8.1 流水線原理洗衣店流程4個(gè)流程:洗衣、烘干、熨燙、折疊非流水線模式流水線模式非流水線模式時(shí)間流

9、水線模式時(shí)間8.1 流水線原理指令執(zhí)行流程(不失一般性,指令執(zhí)行的六個(gè)步驟)取指令(FI):從存儲(chǔ)器取出一條指令存入指令緩沖區(qū);指令譯碼(DI):確定操作性質(zhì)和操作數(shù)地址計(jì)算方式;計(jì)算操作數(shù)地址(CO):計(jì)算操作數(shù)有效地址;取操作數(shù)(FO):從存儲(chǔ)器中取操作數(shù)(若操作數(shù)在寄存器,則無(wú)需該步驟)執(zhí)行指令(EI):執(zhí)行指令所需操作;寫操作數(shù)(WO):將結(jié)果存入存儲(chǔ)器。串行執(zhí)行假定各個(gè)步驟需要的時(shí)間:FI=20ns,DI=10ns, CO=10ns,F(xiàn)O=20ns, EI=15ns , WO=20ns;一條指令的執(zhí)行時(shí)間:20+10+10+20+15+20=95ns8.1 流水線原理流水線模型每個(gè)步

10、驟分配相等的時(shí)間(20ns)6級(jí)流水模型;處理器包含6個(gè)操作部件;指令執(zhí)行時(shí)間:20*6=120ns每20ns完成一條指令8.1 流水線原理(MIPS單周期模型與流水線模型對(duì)比)假定以下每步操作所花時(shí)間為:取指操作:2ns寄存器讀:1nsALU操作:2ns存儲(chǔ)器讀:2ns寄存器寫:1ns單周期模型每條指令在一個(gè)時(shí)鐘周期內(nèi)完成時(shí)鐘周期等于最長(zhǎng)的lw指令的執(zhí)行時(shí)間,即:8ns串行執(zhí)行時(shí),N條指令的執(zhí)行時(shí)間為:8Nns流水線性能時(shí)鐘周期等于最長(zhǎng)階段所花時(shí)間為:2ns每條指令的執(zhí)行時(shí)間為:5步,共 10nsN條指令的執(zhí)行時(shí)間為:(2+2xN+1)ns在N很大時(shí),比串行方式提高約 4 倍MIPS 的Lo

11、ad指令執(zhí)行時(shí)間總計(jì)為:8ns (假定控制單元、PC訪問(wèn)、信號(hào)傳遞等沒(méi)有延遲)流水線方式下,單條指令的執(zhí)行時(shí)間不能縮短,但能大大提高指令的吞吐量8.1 流水線原理(流水線指令集)具有什么特征的指令集有利于流水線執(zhí)行呢?指令長(zhǎng)度盡量一致,有利于簡(jiǎn)化取指令和指令譯碼操作MIPS指令都是32位,每次取四個(gè)單元的指令,且下址計(jì)算方便: PC+4X86指令從1字節(jié)到17字節(jié)不等,使取指部件及其復(fù)雜指令格式少,且源寄存器位置相同,有利于在指令未知時(shí)就可取操作數(shù)MIPS指令的Rs和Rt位置一定,在指令譯碼時(shí)就可讀Rs和Rt的值(若位置隨指令不同而不同,則需先譯碼確定指令后才能取寄存器編號(hào))只有l(wèi)oad /

12、Store指令才能訪問(wèn)存儲(chǔ)器,有利于減少操作步驟,規(guī)整流水線可以把lw/sw指令的地址計(jì)算和運(yùn)算指令的執(zhí)行步驟規(guī)整在同一個(gè)周期X86運(yùn)算類指令的操作數(shù)可以是內(nèi)存數(shù)據(jù),故需計(jì)算地址、訪存、執(zhí)行數(shù)據(jù)和指令在內(nèi)存中要”對(duì)齊”存放,有利于減少訪存次數(shù)和流水線的規(guī)整指令的流水線執(zhí)行能大大提高指令的吞吐率,現(xiàn)代計(jì)算機(jī)都采用流水線方式8.2 流水線冒險(xiǎn)問(wèn)題ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7IfetchReg/DecExecMemWr1st lwIfetchReg/DecExecMemWr2nd lwIfetchReg/DecExecM

13、emWr3rd lwMIPS Load指令的流水線每條load指令五個(gè)步驟取指令(ifetch)、寄存器取數(shù)/譯碼(Reg/Dec)、ALU計(jì)算地址(Exec)、存儲(chǔ)器讀操作(Mem)、數(shù)據(jù)寫寄存器(Wr)每個(gè)周期有一條指令進(jìn)入流水線,每個(gè)周期都有一條指令完成每條指令的有效周期(CPI)為18.2 流水線冒險(xiǎn)問(wèn)題Cycle 1Cycle 2Cycle 3Cycle 4IfetchReg/DecExecWrR-typeMIPS R型指令的流水每條指令4個(gè)步驟Ifetch: 取指令并計(jì)算PC+4Reg/Dec: 從寄存器取數(shù),同時(shí)指令在譯碼器進(jìn)行譯碼Exec: 在ALU中對(duì)操作數(shù)進(jìn)行計(jì)算Wr: A

14、LU計(jì)算的結(jié)果寫到寄存器8.2 流水線冒險(xiǎn)問(wèn)題MIPS R型指令與load指令混合IfetchReg/DecExecWrR-typeIfetchReg/DecExecWrR-typeClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9IfetchReg/DecExecWrR-typeIfetchReg/DecExecWrR-typeIfetchReg/DecExecMemWrLoadWe have a problem!上述流水線有個(gè)問(wèn)題: 兩條指令試圖同時(shí)寫寄存器Load在第5階段用寄存器寫口R-type在第4

15、階段用寄存器寫口一個(gè)功能部件同時(shí)被多條指令使用的現(xiàn)象:結(jié)構(gòu)冒險(xiǎn)(Struture Hazard)8.2 流水線冒險(xiǎn)問(wèn)題流水線冒險(xiǎn)(Hazard,也稱流水線相關(guān)問(wèn)題):流水線相近指令出現(xiàn)某些關(guān)聯(lián),下一個(gè)時(shí)鐘周期不能執(zhí)行下一條指令,指令流水線必須出現(xiàn)停頓。結(jié)構(gòu)冒險(xiǎn)(structural hazard):硬件不支持多條指令在同一個(gè)時(shí)鐘周期執(zhí)行。若系統(tǒng)只有一個(gè)存儲(chǔ)器部件,就會(huì)帶來(lái)結(jié)構(gòu)冒險(xiǎn)問(wèn)題。數(shù)據(jù)冒險(xiǎn)(data hazard):指令執(zhí)行所需的數(shù)據(jù)暫時(shí)不可用而造成的指令執(zhí)行的停頓。數(shù)據(jù)冒險(xiǎn)一般發(fā)生在相近指令共用一個(gè)存儲(chǔ)單元或寄存器時(shí)??刂泼半U(xiǎn)(control hazard):也稱為分支冒險(xiǎn)(branch

16、 hazard),必須根據(jù)前一條指令的執(zhí)行結(jié)果才能確定下一條真正要執(zhí)行的指令,此時(shí)流水線中取得的可能不是真正要執(zhí)行的指令。8.2 流水線冒險(xiǎn)問(wèn)題簡(jiǎn)介結(jié)構(gòu)冒險(xiǎn)(如:訪存沖突問(wèn)題)一條指令的取數(shù)據(jù)(FO)與另一指令的取指令(FI)沖突一條指令的存數(shù)據(jù)(WO)與另一條指令的取數(shù)據(jù)(FO)沖突訪問(wèn)內(nèi)存沖突設(shè)置兩個(gè)獨(dú)立的存儲(chǔ)器分別存放指令和數(shù)據(jù),避免沖突8.2 流水線冒險(xiǎn)問(wèn)題流水線中插入“Bubble”,以禁止同一周期兩次寫寄存器。缺點(diǎn):控制邏輯復(fù)雜第5周期沒(méi)有指令被完成(CPI不是1,而實(shí)際上是2)方案可行性差ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle

17、6Cycle 7Cycle 8Cycle 9IfetchR-typeIfetchReg/DecExecMemWrLoadIfetchReg/DecExecR-typeIfetchReg/DecR-typeIfetchReg/DecExecWrReg/DecExecWrIfetchReg/DecExecWrExecWrReg/DecExecWrIfetchReg/DecExecWrExecWrPipelineBubbleMIPS解決結(jié)構(gòu)冒險(xiǎn)方案1:插入氣泡(Bubble)8.2 流水線冒險(xiǎn)問(wèn)題MIPS解決結(jié)構(gòu)冒險(xiǎn)方案2R型指令改成5段流水,插入Mem操作(實(shí)際無(wú)操作,NOOP)這樣所有指令的流水

18、步驟一致ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9IfetchReg/DecWrR-typeIfetchReg/DecWrR-typeIfetchReg/DecExecMemWrLoadIfetchReg/DecWrR-typeIfetchReg/DecWrR-typeMemExecExecExecExecMemMemMemIfetchReg/DecExecWrR-type12345MemNOOP!8.2 流水線冒險(xiǎn)問(wèn)題簡(jiǎn)介數(shù)據(jù)冒險(xiǎn)后一條指令使用前一條指令的執(zhí)行結(jié)果作為操作數(shù)數(shù)據(jù)冒險(xiǎn)采用后推法解決數(shù)據(jù)

19、冒險(xiǎn)8.2 流水線冒險(xiǎn)問(wèn)題簡(jiǎn)介控制冒險(xiǎn)控制冒險(xiǎn)主要有條件轉(zhuǎn)移指令引起,前面指令執(zhí)行的結(jié)果可能會(huì)是程序執(zhí)行發(fā)生轉(zhuǎn)移,流水線中提前取來(lái)的指令可能不應(yīng)該被執(zhí)行。阻塞:阻塞流水線(停頓),直到結(jié)果出來(lái),才取真正執(zhí)行的指令。分支預(yù)測(cè):存在預(yù)測(cè)失敗的情況。MIPS指令流水線R型指令流水5段流水,Mem操作(實(shí)際無(wú)操作,NOOP)ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9IfetchReg/DecWrR-typeIfetchReg/DecWrR-typeIfetchReg/DecExecMemWrLoadIfetchReg/DecWrR-typeIfetchReg/DecWrR-typeMemExecExecExcExecMemMemMemIfetchReg/DecExecWrR-type12345MemNOOP!MIPS指令流水線ClockCycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7IfetchReg/DecExecMemWr1st lwIfetchReg/DecExecMemWr2nd lw

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論