版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、王春桃課程目標(biāo)深入理解掌握CPU的工作原理理解掌握CPU的設(shè)計(jì)思想及方法理解掌握系統(tǒng)設(shè)計(jì)的思想和方法鍛煉增強(qiáng)分析解決實(shí)際問題的能力內(nèi)容提要回顧馮回顧馮諾依曼諾依曼CPU結(jié)構(gòu)及工作原理結(jié)構(gòu)及工作原理回顧計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決辦法設(shè)計(jì)無Cache的5段流水線2021-12-254馮諾依曼型計(jì)算機(jī)存儲(chǔ)器輸出輸入運(yùn)算器控制器數(shù)據(jù)信號(hào)控制信號(hào)地址信號(hào)現(xiàn)代CPU的結(jié)構(gòu)示意圖6CPU的功能1. CPU的功能指令控制(程序的順序控制)操作控制(一條指令有若干操作信號(hào)實(shí)現(xiàn))時(shí)間控制
2、(指令各個(gè)操作實(shí)施時(shí)間的定時(shí))數(shù)據(jù)加工(算術(shù)運(yùn)算和邏輯運(yùn)算)執(zhí)行指令取指令操作控制、時(shí)間控制7例:CPU的基本組成ALU數(shù)據(jù)緩沖寄存器狀態(tài)字寄存器地址地址數(shù)據(jù)數(shù)據(jù)57061007661077304031地址地址OP碼碼地址碼地址碼101MOVR0,R1102LADR1,6103ADDR1,R2104STOR2,(R3)105JMP101106ANDR1,R3107地址寄存器程序計(jì)數(shù)器時(shí)序發(fā)生器操作控制器指令譯碼器OP碼地址碼R0R1R2R3數(shù)存cache指存cacheAR數(shù)據(jù)地址總線指令地址總線控制信號(hào)OCPCIR指令寄存器C1C2C1C2C3Cn8MOV指令的指令周期指令的指令周期-取指取指
3、 程序計(jì)數(shù)器程序計(jì)數(shù)器PC中裝入第一條指令地址中裝入第一條指令地址101(八進(jìn)制);(八進(jìn)制); PC的內(nèi)容被放到指令地址總線的內(nèi)容被放到指令地址總線ABUS(I)上,對(duì)指存進(jìn)行譯碼,并啟動(dòng)讀命令;)上,對(duì)指存進(jìn)行譯碼,并啟動(dòng)讀命令; 從從101號(hào)地址讀出的號(hào)地址讀出的MOV指令通過指令總線指令通過指令總線IBUS裝入指令寄存器裝入指令寄存器IR; 程序計(jì)數(shù)器內(nèi)容加程序計(jì)數(shù)器內(nèi)容加1,變成,變成102,為取下一條指令做好準(zhǔn)備;,為取下一條指令做好準(zhǔn)備; 指令寄存器中的操作碼(指令寄存器中的操作碼(OP)被譯碼;)被譯碼; CPU識(shí)別出是識(shí)別出是MOV指令,至此,取指周期即告結(jié)束。指令,至此,取
4、指周期即告結(jié)束。WR/RD95.2.2MOV指令的指令周期指令的指令周期-執(zhí)行執(zhí)行 操作控制器(操作控制器(OC)送出控制信號(hào)到通用寄存器,選擇)送出控制信號(hào)到通用寄存器,選擇R1(10)作源寄存器,)作源寄存器,選擇選擇R0作目標(biāo)寄存器;作目標(biāo)寄存器; OC送出控制信號(hào)到送出控制信號(hào)到ALU,指定,指定ALU做傳送操作;做傳送操作; OC送出控制信號(hào),打開送出控制信號(hào),打開ALU輸出三態(tài)門,將輸出三態(tài)門,將ALU輸出送到數(shù)據(jù)總線輸出送到數(shù)據(jù)總線DBUS上。上。注意,任何時(shí)候注意,任何時(shí)候DBUS上只能有一個(gè)數(shù)據(jù)。上只能有一個(gè)數(shù)據(jù)。 OC送出控制信號(hào),將送出控制信號(hào),將DBUS上的數(shù)據(jù)打入到數(shù)
5、據(jù)緩沖寄存器上的數(shù)據(jù)打入到數(shù)據(jù)緩沖寄存器DR(10);); OC送出控制信號(hào),將送出控制信號(hào),將DR中的數(shù)據(jù)中的數(shù)據(jù)10打入到目標(biāo)寄存器打入到目標(biāo)寄存器R0,R0的內(nèi)容由的內(nèi)容由00變?yōu)樽優(yōu)?0。至此,。至此,MOV指令執(zhí)行結(jié)束。指令執(zhí)行結(jié)束。10ADD指令的指令周期指令的指令周期內(nèi)容提要回顧馮諾依曼CPU結(jié)構(gòu)及工作原理回顧回顧計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決辦法設(shè)計(jì)無Cache的5段流水線上學(xué)期綜合實(shí)驗(yàn)?zāi)繕?biāo)參考16位實(shí)驗(yàn)CPU的設(shè)計(jì)文檔和設(shè)計(jì),設(shè)
6、計(jì)8位的實(shí)驗(yàn)CPU下面以16位的實(shí)驗(yàn)CPU為例進(jìn)行回顧,說明設(shè)計(jì)實(shí)現(xiàn)過程的思路和方法1. 設(shè)計(jì)指令系統(tǒng)指令分類及其對(duì)應(yīng)的格式:?jiǎn)巫珠L(zhǎng)、雙字長(zhǎng)指令功能分組及OP碼分配,形成指令總表 不同組指令的執(zhí)行時(shí)長(zhǎng)不等,為提高效率,進(jìn)行時(shí)序分析與設(shè)計(jì),以狀態(tài)機(jī)形式反映上學(xué)期綜合實(shí)驗(yàn)2. 確定CPU的結(jié)構(gòu)圖(亦即數(shù)據(jù)通路圖)在設(shè)計(jì)時(shí),可以先考慮比較粗的結(jié)構(gòu)然后再逐漸細(xì)化例子說明控制器運(yùn)算器內(nèi)存上學(xué)期綜合實(shí)驗(yàn)3. 確定控制信號(hào)與ALU運(yùn)算有關(guān)的:ALU輸入來源控制ALU_IN_SELALU運(yùn)算類型控制AluFunc對(duì)初始進(jìn)位信號(hào)的控制SCI對(duì)標(biāo)志位C、Z、V、S的設(shè)置控制SST與寄存器有關(guān)的:SR、DRReg_
7、EN上學(xué)期綜合實(shí)驗(yàn)對(duì)AR和IR接收控制REC(00無操作,01時(shí)AR接收PC,10時(shí)AR接收ALU輸出,11時(shí)IR接收)對(duì)內(nèi)存讀寫的控制/wr(0時(shí)為寫內(nèi)存,1時(shí)為讀內(nèi)存)對(duì)PC的更新控制PC_EN上學(xué)期綜合實(shí)驗(yàn)綜合上述的控制信號(hào),可以得到該CPU的控制信號(hào)集合。在設(shè)計(jì)控制器時(shí),只要根據(jù)相關(guān)的指令給出這些控制信號(hào)的值即可例子節(jié)拍指令編碼SciSSTI7I6I5I4I3I2I1I0/WRREC注釋000011110100000101AR-PC,PC-PC+1001001100000000110IR-MEM011ADD00000000000001000000100DR-DR+SRSUB000000
8、01000001000001100DR-DR-SRAND00000010000001000010100DR-DR and SRCMP00000011000000000001100DR-SRXOR00000100000001000100100DR-DR xor SRTEST00000101000000000010100DR and SR上學(xué)期綜合實(shí)驗(yàn)4. 分析各個(gè)主要模塊的功能及設(shè)計(jì)方法運(yùn)算器部分包括了如下的模塊:寄存器組、ALU輸入復(fù)用模塊、ALU運(yùn)算器、標(biāo)志寄存器控制部分包含了如下的模塊:PC、IR、時(shí)序發(fā)生器(即TIMER)、控制單元內(nèi)存部分AR在分析這些模塊時(shí),先分析它的功能,然后分析輸
9、入輸出信號(hào),最后分析其實(shí)現(xiàn)邏輯在完成這些分析后,結(jié)合數(shù)據(jù)通路,分析各條指令的執(zhí)行流程,以加深對(duì)CPU原理的理解上學(xué)期綜合實(shí)驗(yàn)以ALU為例子功能:對(duì)兩個(gè)16位的輸入及低位進(jìn)位輸入cin,根據(jù)運(yùn)算功能進(jìn)行運(yùn)算,產(chǎn)生相應(yīng)的結(jié)果,并更改標(biāo)志位輸入輸出信號(hào):輸入信號(hào)為:A、B、cin、alu_func輸出信號(hào)為:Y、C、Z、V、S功能框圖上學(xué)期綜合實(shí)驗(yàn)功能實(shí)現(xiàn)邏輯根據(jù)alu_func進(jìn)行相應(yīng)的運(yùn)算,如alu_func為000時(shí)進(jìn)行加法運(yùn)算,001時(shí)進(jìn)行減法運(yùn)算,如此類推根據(jù)運(yùn)算結(jié)果,對(duì)標(biāo)志符號(hào)C、Z、V、S進(jìn)行相應(yīng)的更新5. 編程實(shí)現(xiàn)根據(jù)上述第4點(diǎn)的分析,用VHDL語言編程實(shí)現(xiàn)6. 組裝測(cè)試將各個(gè)部件通
10、過BDF方法或端口映射(port map)方式連接起來,形成一個(gè)整體的實(shí)驗(yàn)CPU分配管腳,并下載到實(shí)驗(yàn)平臺(tái)上進(jìn)行測(cè)試內(nèi)容提要回顧馮諾依曼CPU結(jié)構(gòu)及工作原理回顧計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決辦法設(shè)計(jì)無Cache的5段流水線實(shí)驗(yàn)CPU設(shè)計(jì)思路與方法開放式實(shí)驗(yàn)CPU設(shè)計(jì)可以看作是一個(gè)小規(guī)模的硬件開發(fā)項(xiàng)目硬件項(xiàng)目的開展框架與軟件工程的開展相似,都遵循一定的思路與方法下面進(jìn)行簡(jiǎn)要的歸納,以供參考設(shè)計(jì)方法:自頂向下、自底向上、兩者結(jié)合實(shí)際應(yīng)用中,多半是根
11、據(jù)需求來相應(yīng)地實(shí)現(xiàn),因此自頂向下更適合于根據(jù)需求進(jìn)行分析設(shè)計(jì)。在完成分析設(shè)計(jì)后,進(jìn)行邏輯編程實(shí)現(xiàn)時(shí),這三種設(shè)計(jì)方法都可以根據(jù)實(shí)際需要而靈活使用CPU設(shè)計(jì)思路1. 設(shè)計(jì)指令系統(tǒng)確定指令格式。如指令總長(zhǎng)度是多少;指令內(nèi)部op碼、data長(zhǎng)度如何劃分;data是1個(gè)、2個(gè)還是3個(gè),分別占多少位等根據(jù)功能需求列出所有指令及功能,以表格形式給出進(jìn)行時(shí)序分析與設(shè)計(jì)2. 設(shè)計(jì)數(shù)據(jù)通路圖根據(jù)功能需求設(shè)計(jì)數(shù)據(jù)通路圖可以采用由粗到精的方式展開24CPU設(shè)計(jì)思路3. 分析所需的控制信號(hào),并針對(duì)每一條指令設(shè)定這些控制信號(hào)的具體值,為控制器的設(shè)計(jì)作好準(zhǔn)備4. 分析各功能部件的功能與邏輯實(shí)現(xiàn)方法分析各功能部件的功能分析各
12、功能部件的輸入輸出信號(hào)設(shè)計(jì)各功能部件內(nèi)部的具體實(shí)現(xiàn)邏輯5. 用VHDL語言編程實(shí)現(xiàn)各個(gè)功能部件6. 將各個(gè)功能部件用BDF方法或port map方法連接起來形成一個(gè)整體,然后分配管腳,下載到實(shí)驗(yàn)平臺(tái)上進(jìn)行仿真測(cè)試25實(shí)驗(yàn)CPU設(shè)計(jì)思路與方法利用這些方法,設(shè)計(jì)無cache的5段流水線內(nèi)容提要回顧馮諾依曼CPU結(jié)構(gòu)及工作原理回顧計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決辦法設(shè)計(jì)無Cache的5段流水線流水線的基本概念1.流水線技術(shù)把一個(gè)重復(fù)的過程分
13、解為若干個(gè)子過程,每個(gè)子過程由專門的功能部件來實(shí)現(xiàn)。把多個(gè)處理過程在時(shí)間上錯(cuò)開,依次通過各功能段,這樣,每個(gè)子過程就可以與其他的子過程并行進(jìn)行。2.流水線中的每個(gè)子過程及其功能部件稱為流水線的級(jí)或段,段與段相互連接形成流水線。流水線的段數(shù)稱為流水線的深度。流水線的基本概念分類指令流水線部件流水線,如浮點(diǎn)加法流水線宏流水線一個(gè)經(jīng)典的5段流水線 每一個(gè)周期作為一個(gè)流水段。在各段之間加上鎖存器(流水寄存器)。 IF:取指令周期,根據(jù)PC值從內(nèi)存中取指令I(lǐng)D:指令譯碼/讀寄存器周期。進(jìn)行指令譯碼,并 根據(jù)IR中的寄存器編號(hào)讀出相應(yīng)的數(shù)據(jù)EX:執(zhí)行/有效地址計(jì)算周期。存儲(chǔ)器訪問指令:ALU把所指定的寄存
14、器的內(nèi)容與偏 移量相加,形成用于訪存的有效地址。寄存器寄存器ALU指令:ALU按照操作碼指定的操 作對(duì)從通用寄存器組中讀取的數(shù)據(jù)進(jìn)行運(yùn)算。寄存器立即數(shù)ALU指令:ALU按照操作碼指定的操 作對(duì)從通用寄存器組中讀取的第一操作數(shù)和立即數(shù) 進(jìn)行運(yùn)算。分支指令:ALU把偏移量與PC值相加,形成轉(zhuǎn)移目標(biāo) 的地址。同時(shí),對(duì)在前一個(gè)周期讀出的操作數(shù)進(jìn)行 判斷,確定分支是否成功。MEM:存儲(chǔ)器訪問分支完成周期。該周期處理的指令只有l(wèi)oad、store和分支指令。 其他類型的指令在此周期不做任何操作。WB:寫回周期。ALU運(yùn)算指令和load指令在這個(gè)周期把結(jié)果數(shù)據(jù)寫入通用寄存器組流水技術(shù)的特點(diǎn)流水線把一個(gè)處理過
15、程分解為若干個(gè)子過程(段),每個(gè)子過程由一個(gè)專門的功能部件來實(shí)現(xiàn)。流水線中各段的時(shí)間應(yīng)盡可能相等,否則將引起流水線堵塞、斷流。 時(shí)間長(zhǎng)的段將成為流水線的瓶頸。流水線每一個(gè)功能部件的后面都要有一個(gè)緩沖寄存器(鎖存器),稱為流水寄存器。 作用:在相鄰的兩段之間傳送數(shù)據(jù),以保證提供后 面要用到的數(shù)據(jù),并把各段的處理工作相互隔離。流水技術(shù)的特點(diǎn)流水技術(shù)適合于大量重復(fù)的時(shí)序過程,只有在輸入端不斷地提供任務(wù),才能充分發(fā)揮流水線的效率。 流水線需要有通過時(shí)間和排空時(shí)間。通過時(shí)間:第一個(gè)任務(wù)從進(jìn)入流水線到流出結(jié)果 所需的時(shí)間。排空時(shí)間:最后一個(gè)任務(wù)從進(jìn)入流水線到流出結(jié) 果所需的時(shí)間。流水線設(shè)計(jì)思路最基本的:1
16、. 確定流水分段2. 每個(gè)流水分段用一個(gè)部件實(shí)現(xiàn),各流水段間用寄存器連接起來流水線設(shè)計(jì)時(shí)需要解決的問題:各流水段的時(shí)間要近似一致,否則會(huì)存在瓶頸解決訪存沖突問題解決數(shù)據(jù)相關(guān)問題解決控制相關(guān)問題1.流水線的結(jié)構(gòu)沖突結(jié)構(gòu)沖突舉例:訪存沖突 有些流水線處理機(jī)只有一個(gè)存儲(chǔ)器,將數(shù)據(jù)和指令放在一起,訪存指令會(huì)導(dǎo)致訪存沖突。解決辦法:插入暫停周期 (“流水線氣泡”或“氣泡”) 引入暫停后的時(shí)空?qǐng)D解決方法: 設(shè)置相互獨(dú)立的指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器 或設(shè)置相互獨(dú)立的指令Cache和數(shù)據(jù)Cache。由于訪問同一個(gè)存儲(chǔ)器而引起的結(jié)構(gòu)沖突由于訪問同一個(gè)存儲(chǔ)器而引起的結(jié)構(gòu)沖突 時(shí)間(時(shí)鐘周期)時(shí)間(時(shí)鐘周期) 1 2
17、3 4 5 6 M Reg ALU M Reg M Reg ALU M Reg M Reg ALU M Reg 7 8 load 指令指令 i+1 指令指令 i+2 暫暫 停停 M Reg ALU M 指令指令 i+3 氣泡氣泡 氣泡氣泡 氣泡氣泡 氣泡氣泡 氣泡氣泡 為消除結(jié)構(gòu)沖突而插入的流水線氣泡為消除結(jié)構(gòu)沖突而插入的流水線氣泡 3.4 流水線的相關(guān)與沖突引入暫停后的時(shí)空?qǐng)D引入暫停后的時(shí)空?qǐng)D指令編號(hào)指令編號(hào) 時(shí)鐘周期時(shí)鐘周期 1 12 23 34 45 56 67 78 89 91010指令指令i i IF IF ID ID EX EX MEM MEM WB WB 指令指令i+1 i+1
18、IF IF ID ID EX EX MEM MEM WB WB 指令指令i+2 i+2 IF IF ID ID EX EX MEM MEM WB WB WB WB 指令指令i+3 i+3 stallstall IFIFID ID EX EX MEM MEM WB WB 指令指令i+4 i+4 IFIFID ID EX EX MEM MEM WB WB 指令指令i+5 i+5 IFIFIDIDEX EX MEM MEM 有時(shí)流水線設(shè)計(jì)者允許結(jié)構(gòu)沖突的存在主要原因:減少硬件成本如果把流水線中的所有功能單元完全流水化,或者 重復(fù)設(shè)置足夠份數(shù),那么所花費(fèi)的成本將相當(dāng)高。 2. 數(shù)據(jù)沖突 當(dāng)相關(guān)的指令靠
19、得足夠近時(shí),它們?cè)诹魉€中的重疊執(zhí)行或者重新排序會(huì)改變指令讀/寫操作數(shù)的順序,使之不同于它們非流水實(shí)現(xiàn)時(shí)的順序,則發(fā)生了數(shù)據(jù)沖突。舉例: DADD DADD R1R1, R2R2,R3R3 DSUB R4 DSUB R4, R1R1,R5R5 XOR R6 XOR R6, R1R1,R7R7 AND R8 AND R8, R1R1,R9R9 OR R10 OR R10,R1R1,R11R11 時(shí)間(時(shí)鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1, R2, R3 DSUB
20、 R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 流水線的數(shù)據(jù)沖突舉例流水線的數(shù)據(jù)沖突舉例 根據(jù)指令讀訪問和寫訪問的順序,可以將數(shù)據(jù)沖 突分為3種類型。 考慮兩條指令i和j,且i在j之前進(jìn)入流水線,可能發(fā)生的數(shù)據(jù)沖突有:寫后讀沖突(RAW) 在 i 寫入之前,j 先去讀。 j 讀出的內(nèi)容是錯(cuò)誤的。 這是最常見的一種數(shù)據(jù)沖突,它對(duì)應(yīng)于真數(shù)據(jù)相關(guān)。 2. 數(shù)據(jù)沖突寫后寫沖突(WAW) 在 i 寫入之前,j 先寫。 最后寫入的結(jié)果是 i 的。錯(cuò)誤! 這種沖突對(duì)應(yīng)于輸出相關(guān)。 寫后寫沖突僅發(fā)生在這樣的流水線中:流水線中不只一個(gè)段可以進(jìn)行寫
21、操作。當(dāng)先前某條指令停頓時(shí),允許其后續(xù)指令繼續(xù)前進(jìn)。 前面介紹的5段流水線不會(huì)發(fā)生寫后寫沖突。(只在WB段寫寄存器) 2. 數(shù)據(jù)沖突3.4 流水線的相關(guān)與沖突讀后寫沖突(WAR) 在 i 讀之前,j 先寫。 i 讀出的內(nèi)容是錯(cuò)誤的! 這種沖突僅發(fā)生在這樣的情況下:有些指令的寫結(jié)果操作提前了,而且有些指令的讀操作滯后了。指令被重新排序了。 讀后寫沖突在前述5段流水線中不會(huì)發(fā)生。(讀操作(在ID段)在寫結(jié)果操作(在WB段)之前)通過定向技術(shù)減少數(shù)據(jù)沖突引起的停頓 (定向技術(shù)也稱為旁路或短路)關(guān)鍵思想:在某條指令產(chǎn)生計(jì)算結(jié)果之前,其他指 令并不真正立即需要該計(jì)算結(jié)果,如果能夠?qū)⒃撚?jì) 算結(jié)果從其產(chǎn)生的
22、地方直接送到其他指令需要它的 地方,那么就可以避免停頓。 工作過程演示2. 數(shù)據(jù)沖突 時(shí)間(時(shí)鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1,R2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 采用定向技術(shù)后的流水線數(shù)據(jù)通路采用定向技術(shù)后的流水線數(shù)據(jù)通路 2.數(shù)據(jù)沖突當(dāng)定向硬件檢測(cè)到前面某條指令的結(jié)果寄存器就是當(dāng)前指令的源寄存器時(shí),控制邏輯會(huì)將前面那條指令的結(jié)果直接從其產(chǎn)生的地方定向到當(dāng)前指
23、令所需的位置。結(jié)果數(shù)據(jù)不僅可以從某一功能部件的輸出定向到其自身的輸入,而且還可以定向到其他功能部件的輸入。 舉例: DSUB DSUB R1R1,R2R2,R3R3LD LD R5R5,0 0(R1R1)SD SD R5R5,1212(R1R1) 時(shí)間(時(shí)鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 更多的定向路徑更多的定向路徑 需要停頓的數(shù)據(jù)沖突 并不是所有的數(shù)據(jù)沖突都可以用定向技
24、術(shù)來解決。 舉例: LD LD R1R1,0 0(R2R2)DADD R4DADD R4,R1R1,R5R5AND R6AND R6,R1R1,R7R7XOR R8XOR R8,R1R1,R9R9q增加流水線互鎖硬件,插入增加流水線互鎖硬件,插入“暫停暫停”。 作用:作用:檢測(cè)發(fā)現(xiàn)數(shù)據(jù)沖突,并使流水線停頓,直至檢測(cè)發(fā)現(xiàn)數(shù)據(jù)沖突,并使流水線停頓,直至沖突消失。沖突消失。 3.4 流水線的相關(guān)與沖突 時(shí)間(時(shí)鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R
25、4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 無法將無法將LDLD指令的結(jié)果定向到指令的結(jié)果定向到DADDDADD指令指令 3.4 流水線的相關(guān)與沖突 時(shí)間(時(shí)鐘周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU IM Reg LD R1,0(R2) DADD R4,R1,R5 AND R6, R1, R7 XOR R8,R1,R9 氣泡 氣泡 氣泡 流水線互鎖機(jī)制插入氣泡后的執(zhí)行過程流水線互鎖機(jī)制插入氣泡后的執(zhí)行過程 LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM M
26、EM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID EX EX MEM MEM WB WB AND R6AND R6,R1R1,R7 R7 IF IF ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R9 IF IF ID ID EX EX MEM MEM WB WB LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM MEM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID stall stall EX EX MEM MEM WB W
27、B AND R6AND R6,R1R1,R7 R7 IF IF stall stall ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R9 stall stall IF IF ID ID EX EX MEM MEM 插入停頓前后的流水線時(shí)空?qǐng)D插入停頓前后的流水線時(shí)空?qǐng)D LD RbLD Rb,B B IF IF ID ID EX EX MEM MEM WB WB LD RcLD Rc,C C IF IF ID ID EX EX EX EX MEM MEM WB WB WB WB DADD RaDADD Ra,RbRb,Rc Rc IF IF ID
28、ID stallstall EX EX MEM MEM WB WB SD Ra SD Ra ,A A IF IF stallstall ID ID EX EX MEM MEM WB WB 依靠編譯器解決數(shù)據(jù)沖突 讓編譯器重新組織指令順序來消除沖突,這種技術(shù)讓編譯器重新組織指令順序來消除沖突,這種技術(shù)稱為稱為指令調(diào)度指令調(diào)度或或流水線調(diào)度。流水線調(diào)度。p例如:例如:采用典型的代碼生成方法,采用典型的代碼生成方法, 表達(dá)式表達(dá)式A AB BC C的代碼會(huì)導(dǎo)致暫停的代碼會(huì)導(dǎo)致暫停調(diào)度前的代碼調(diào)度前的代碼 調(diào)度后的代碼調(diào)度后的代碼 LD RbLD Rb,B BLD RcLD Rc,C CDADD Ra
29、DADD Ra,RbRb,Rc Rc SD RaSD Ra,A ALD ReLD Re,E ELD RfLD Rf,F(xiàn) FDSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D LD RbLD Rb,B BLD RcLD Rc,C CLD ReLD Re,E E DADD RaDADD Ra,RbRb,RcRcLD RfLD Rf,F(xiàn) FSD RaSD Ra,A A DSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D p舉例:舉例: 請(qǐng)為下列表達(dá)式生成沒有暫停的指令序列請(qǐng)為下列表達(dá)式生成沒有暫停的指令序列: : ABC ; DEF ; 假設(shè)載入延
30、遲為假設(shè)載入延遲為1 1個(gè)個(gè)時(shí)鐘周期。時(shí)鐘周期。 題解題解3.控制沖突執(zhí)行分支指令的結(jié)果有兩種分支成功:PC值改變?yōu)榉种мD(zhuǎn)移的目標(biāo)地址。 在條件判定和轉(zhuǎn)移地址計(jì)算都完成后,才改變PC值。不成功或者失敗:PC的值保持正常遞增, 指向順序的下一條指令。處理分支指令最簡(jiǎn)單的方法:“凍結(jié)”或者“排空”流水線 。 優(yōu)點(diǎn):簡(jiǎn)單。p前述5段流水線中,改變PC值是在MEM段進(jìn)行的。 給流水線帶來了3個(gè)時(shí)鐘周期的延遲。分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支目標(biāo)指令分支目標(biāo)指令 IFIF stallstall stallstall IF IF ID ID EX EX
31、 MEM MEM WB WB 分支目標(biāo)指令分支目標(biāo)指令+1 +1 IF IF ID ID EX EX MEM MEM WB WB 分支目標(biāo)指令分支目標(biāo)指令+2 +2 IF IF ID ID EX EX MEM MEM 分支目標(biāo)指令分支目標(biāo)指令+3 +3 IF IF ID ID EX EX 分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支后繼指令分支后繼指令 IF IF stallstall stallstall IF IF ID ID EX EX MEM MEM WB WB 分支后繼指令分支后繼指令+1+1 IF IF ID ID EX EX MEM ME
32、M WB WB 分支后繼指令分支后繼指令+2 +2 IF IF ID ID EX EX MEM MEM 分支后繼指令分支后繼指令+3 +3 IF IF ID ID EX EX 簡(jiǎn)單處理分支指令:分支成功的情況簡(jiǎn)單處理分支指令:分支成功的情況 簡(jiǎn)單處理分支指令:分支失敗的情況簡(jiǎn)單處理分支指令:分支失敗的情況 3.控制沖突把由分支指令引起的延遲稱為分支延遲。分支指令在目標(biāo)代碼中出現(xiàn)的頻度每34條指令就有一條是分支指令。 假設(shè):分支指令出現(xiàn)的頻度是30, 流水線理想 CPI1, 那么:流水線的實(shí)際 CPI 1.9??刹扇煞N措施來減少分支延遲。在流水線中盡早判斷出分支轉(zhuǎn)移是否成功;盡早計(jì)算出分支目標(biāo)
33、地址。3.控制沖突下面的討論中,我們假設(shè): 這兩步工作被提前到ID段完成,即分支指令是在ID段的末尾執(zhí)行完成,所帶來的分支延遲為一個(gè)時(shí)鐘周期。 3.控制沖突3種通過軟件(編譯器)來減少分支延遲的方法 共同點(diǎn):對(duì)分支的處理方法在程序的執(zhí)行過程中始終不變的,是靜態(tài)的。要么總是預(yù)測(cè)分支成功,要么總是預(yù)測(cè)分支失敗。3種方法:(與課程設(shè)計(jì)關(guān)聯(lián)很小,略去)預(yù)測(cè)分支成功預(yù)測(cè)分支失敗延遲分支內(nèi)容提要回顧馮諾依曼CPU結(jié)構(gòu)及工作原理回顧計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決流水線中結(jié)構(gòu)沖突、數(shù)據(jù)
34、相關(guān)、控制相關(guān)的解決辦法辦法設(shè)計(jì)無Cache的5段流水線無Cache流水CPU課程設(shè)計(jì)中,采用經(jīng)典的5段流水線,但為降低復(fù)雜度,不采用Cache示意圖(其中IM和DM都為內(nèi)存)結(jié)構(gòu)沖突的解決辦法由于沒有采用Cache,取指和取/存數(shù)都對(duì)內(nèi)存進(jìn)行操作,因此會(huì)有訪問存儲(chǔ)器的結(jié)構(gòu)沖突結(jié)構(gòu)沖突示意圖結(jié)構(gòu)沖突的解決辦法解決辦法:采用延遲一個(gè)周期的方法先“訪存”,即先執(zhí)行Mem段的任務(wù)將“取指”延后一個(gè)時(shí)鐘周期,即后執(zhí)行IF段的任務(wù)為此,需要做兩件事:沖突檢測(cè),即判斷存在有結(jié)構(gòu)沖突取指延后,在檢測(cè)到有結(jié)構(gòu)沖突后,延后取指任務(wù)結(jié)構(gòu)沖突的解決辦法在MEM段時(shí),只有l(wèi)oad和store需要訪問內(nèi)存。也即是說,若
35、MEM段是load或store指令時(shí),必定會(huì)與IF段的取值發(fā)生結(jié)構(gòu)沖突基于這一點(diǎn),可以設(shè)置一個(gè)標(biāo)志位,指示MEM段是否需要訪問內(nèi)存。若是,則有結(jié)構(gòu)沖突;反之,則無。沖突檢測(cè)方法wMem意義00寫內(nèi)存(STORE)01讀內(nèi)存(LOAD)1不占用內(nèi)存結(jié)構(gòu)沖突的解決辦法取指延后在每次取指時(shí),若有沖突,則往IR中寫入空指令(NOP),并保持PC不變,使取指延后一個(gè)節(jié)拍。數(shù)據(jù)相關(guān)解決辦法對(duì)于前述的5段流水線,屬于順序流水線,只存在寫后讀沖突(RAW),對(duì)于WAW和WAR則實(shí)際上不存在因此,關(guān)鍵在于解決RAW數(shù)據(jù)相關(guān)為提高流水線的效率,采用定向技術(shù)(亦即旁路技術(shù))考慮3種情況相鄰指令RAW相關(guān)中間隔1條指
36、令的RAW相關(guān)中間隔2條指令的RAW相關(guān)數(shù)據(jù)相關(guān)解決辦法1. 相鄰指令RAW相關(guān)例:INC R0 INC R0解決方法數(shù)據(jù)相關(guān)解決辦法2. 中間隔1條指令的RAW相關(guān)舉例: INC R0 INC R1 INC R0解決方法數(shù)據(jù)相關(guān)解決辦法3.中間隔2條指令的RAW相關(guān)例子:INC R0 INC R1 INC R2 INC R0解決方法方法1:在第4條指令的譯碼階段作旁路處理,將第1條指令的回寫數(shù)據(jù)作為運(yùn)算器的輸入送入下一級(jí),如下圖所示。方法2:考慮到讀寫寄存器的時(shí)間較短,因此將寫寄存器的時(shí)機(jī)改在時(shí)鐘下降沿。這樣1、4指令就沒有數(shù)據(jù)相關(guān)了。(優(yōu)選)數(shù)據(jù)相關(guān)解決辦法數(shù)據(jù)相關(guān)解決辦法實(shí)現(xiàn)方法考慮到只
37、有在執(zhí)行時(shí),才能覺察到是否與其它指令構(gòu)成數(shù)據(jù)相關(guān),因此數(shù)據(jù)相關(guān)的檢測(cè)放在EX流水段觀察RAW相關(guān)的情況,容易發(fā)現(xiàn):出現(xiàn)RAW相關(guān)時(shí),后一條(不一定相鄰)指令的SA(即源操作數(shù))或DA(即目的操作數(shù)),必定與前一條指令中的DA相同在只有l(wèi)oad/store需要從內(nèi)存讀/寫數(shù)據(jù)的指令系統(tǒng)中,數(shù)據(jù)相關(guān)只發(fā)生在寄存器之間。因此需要寫寄存器(如MEM段的控制信號(hào)m_wRegEn=1)時(shí),就需要進(jìn)行數(shù)據(jù)相關(guān)檢測(cè)。數(shù)據(jù)相關(guān)解決辦法當(dāng)m_wRegEn=1時(shí),數(shù)據(jù)相關(guān)的判斷方法如下:1. 相鄰指令RAW情況 如果MEM段(代表前一條指令)如需要寫的SA(記作m_SA)與EX段(代表后一條指令)的SA (記作e_
38、SA)或SB(記作e_SB)相同,則存在數(shù)據(jù)相關(guān)。即有: m_SA = e_SA 或者 m_SA = e_SB 數(shù)據(jù)相關(guān)解決辦法2. 中間隔1條指令的RAW相關(guān) 如果WB段(代表前2條指令)如需要寫的SA(記作w_SA)與EX段(代表后2條指令)的SA (記作e_SA)或SB(記作e_SB)相同,則存在數(shù)據(jù)相關(guān)。即有: w_SA = e_SA 或者 w_SA = e_SB 3. 中間隔2條指令的RAW相關(guān) 在采用了下降沿寫入寄存器的策略后,此種情況不 再存在,因此不再考慮。數(shù)據(jù)相關(guān)解決辦法上述第1和2種情況可能會(huì)一同出現(xiàn)。這時(shí),我們就按情況1處理。因?yàn)榍闆r2可以理解為接連出現(xiàn)情況1。在檢測(cè)到數(shù)
39、據(jù)相關(guān)后,根據(jù)檢測(cè)到的不同類數(shù)據(jù)相關(guān),分別將相應(yīng)的結(jié)果定向回傳到EX段ALU的輸入端。具體結(jié)構(gòu)在后面總體結(jié)構(gòu)設(shè)計(jì)時(shí)再詳細(xì)分析。數(shù)據(jù)相關(guān)解決辦法注意事項(xiàng)定向技術(shù)不能完全解決數(shù)據(jù)相關(guān)問題例子:LOAD R0,R1 INC R0解決方法:在load指令后面插入一條空指令控制相關(guān)解決辦法除JR外,JRZ等條件跳轉(zhuǎn)需要根據(jù)當(dāng)前狀態(tài)位來決定是否跳轉(zhuǎn),而當(dāng)前狀態(tài)位是由前面最近的會(huì)影響狀態(tài)位的指令(如算術(shù)指令)決定解決方法1. 碰到JRX之類的跳轉(zhuǎn)指令時(shí),延遲后邊流水線的進(jìn)入2. 預(yù)先獲取跳轉(zhuǎn)目標(biāo)。即在前一條指令有運(yùn)算結(jié)果后,通過定向技術(shù)(亦即旁路技術(shù))把狀態(tài)位回傳給IF段,以便能及時(shí)更新下一條指令的PC值方
40、法2效率高,因此采用方法2控制相關(guān)解決辦法應(yīng)用方法2時(shí),需要解決二個(gè)問題:一是需要判斷是否跳轉(zhuǎn),若跳轉(zhuǎn)則提供旁路二是需要選擇合適的PC更新時(shí)機(jī)1. 跳轉(zhuǎn) & 旁路 只有JRX(X代表C、Z、S等標(biāo)志位)指令才需要根據(jù)標(biāo)志位來確定是否跳轉(zhuǎn),因此譯碼時(shí)(即ID流水段)根據(jù)指令產(chǎn)生是否修改標(biāo)志位的信號(hào),記為setFlag控制相關(guān)解決辦法 因此,若碰到JRX類指令,是否跳轉(zhuǎn)可作如下的判斷:若setFlag=1,表明前一指令會(huì)修改標(biāo)志位,則根據(jù)EX段的最新標(biāo)志位(記作tFlag)來進(jìn)行判斷若setFlag=0,則根據(jù)保持的標(biāo)志位(記作tFlag)來進(jìn)行判斷也就是說,ID流水段需要產(chǎn)生setFla
41、g的信號(hào),并傳至EX段。EX段完成ALU運(yùn)算后,產(chǎn)生新的標(biāo)志位tFlag。為方便IF段判斷是否需要跳轉(zhuǎn),EX段將setFlag、新的tFlag及原來的Flag一起旁路給IF段??刂葡嚓P(guān)解決辦法2. PC更新時(shí)機(jī)在最初設(shè)計(jì)時(shí),我們考慮將PC放在時(shí)鐘上升沿更新。若如此,不論JRX轉(zhuǎn)移與否,都會(huì)順序取下一指令。因此,在發(fā)生跳轉(zhuǎn)時(shí)要清除已讀取的指令。處理方法是,在譯碼時(shí)判斷上一條指令是否要跳轉(zhuǎn),若是則產(chǎn)生doNothing信號(hào)。這樣就清除了已讀取的指令。如果把PC更新放在下降沿(如下圖所示),則不存在上述問題。但我們擔(dān)心這種處理在時(shí)間上可能會(huì)比較緊張。不過,實(shí)踐表明這種處理是可行的。控制相關(guān)解決辦法內(nèi)
42、容提要回顧馮諾依曼CPU結(jié)構(gòu)及工作原理回顧計(jì)算機(jī)組成原理課程綜合實(shí)驗(yàn)總結(jié)開放式實(shí)驗(yàn)CPU設(shè)計(jì)思路和方法回顧流水線工作原理,并歸納流水線設(shè)計(jì)思路無Cache流水線中結(jié)構(gòu)沖突、數(shù)據(jù)相關(guān)、控制相關(guān)的解決辦法設(shè)計(jì)無設(shè)計(jì)無Cache的的5段流水線段流水線設(shè)計(jì)無Cache的5段流水CPU設(shè)計(jì)思路設(shè)計(jì)指令系統(tǒng)根據(jù)功能需求確定數(shù)據(jù)通路解決結(jié)構(gòu)沖突,并相應(yīng)地修改數(shù)據(jù)通路解決數(shù)據(jù)相關(guān),并相應(yīng)地修改數(shù)據(jù)通路解決控制相關(guān),并相應(yīng)地修改數(shù)據(jù)通路分析控制信號(hào)詳細(xì)分析各個(gè)流水段的功能編程實(shí)現(xiàn)設(shè)計(jì)指令系統(tǒng)根據(jù)給定的基本指令表,設(shè)計(jì)指令系統(tǒng)的格式。假定指令字長(zhǎng)為16位設(shè)計(jì)時(shí),可以考慮分類進(jìn)行。如單字長(zhǎng)、雙字長(zhǎng),單操作數(shù)、雙操作
43、數(shù)、無操作數(shù)等確定數(shù)據(jù)通路假設(shè)采用5段經(jīng)典的流水線,模型如下:確定數(shù)據(jù)通路復(fù)用寄存器和內(nèi)存由于沒有采用cache,因此IM和DM都是指內(nèi)存,可以合并共用一個(gè)內(nèi)存。ID段和WB段的Reg也是指相同的寄存器,因此也可以合并共用。綜上,基本的5段流水線可修改如下:確定數(shù)據(jù)通路解決結(jié)構(gòu)沖突由于沒有cache,IF段的取指和MEM段的讀/存數(shù)沖突解決辦法:在檢測(cè)到有沖突后,讓MEM的先執(zhí)行,IF段的插入空操作實(shí)現(xiàn)方法:引入一個(gè)沖突檢測(cè)模塊,用于檢測(cè)沖突。沖突檢測(cè)原理見前一內(nèi)容要點(diǎn)中的分析,要點(diǎn):MEM段的m_wrMem或者WB段的w_wrMem指示要讀寫內(nèi)存用沖突檢測(cè)結(jié)果控制是用基于PC取出的指令,還是
44、直接插入空操作確定數(shù)據(jù)通路解決數(shù)據(jù)相關(guān)解決數(shù)據(jù)相關(guān)的主要技術(shù)就是定向技術(shù)但要注意的是定向技術(shù)不能解決所有數(shù)據(jù)相關(guān),在load指令時(shí)便必須要在其后插入空指令NOP才行。因此,沖突檢測(cè)時(shí)必須處理load指令的情況,需要將指令的OP碼送入沖突檢測(cè)部件。檢測(cè)時(shí),若OP=load,則可利用IFFLUSH指示插入NOP因此,解決數(shù)據(jù)相關(guān)的第一個(gè)修改點(diǎn):將指令的OP碼作為輸入送入沖突檢測(cè)部件確定數(shù)據(jù)通路解決數(shù)據(jù)相關(guān)根據(jù)前一個(gè)內(nèi)容要點(diǎn)中的分析,定向技術(shù)的具體實(shí)施條件如下:相鄰指令數(shù)據(jù)相關(guān):將ALU的輸出信號(hào)ALUout反饋到ALU的輸入端相隔1條指令數(shù)據(jù)相關(guān):將MEM段的輸出信號(hào)反饋回ALU的輸入端相隔2條指
45、令數(shù)據(jù)相關(guān):若采用在下降沿執(zhí)行WB的話,此時(shí)的數(shù)據(jù)相關(guān)不會(huì)發(fā)生因此,定向技術(shù)的實(shí)施方法如下:判斷是否需要定向技術(shù)若需要,選擇合適的信號(hào)輸入到ALU中確定數(shù)據(jù)通路解決數(shù)據(jù)相關(guān)這可以引入一個(gè)定向判斷處理模塊來實(shí)現(xiàn)輸入信號(hào):m_wRegEn、m_SA、 w_wRegEn、w_SA、e_SA、e_SB輸出信號(hào):指示哪個(gè)信號(hào)應(yīng)該進(jìn)入ALU 結(jié)合前面的分析ALU有兩個(gè)輸入端SA和SB。在引入了定向技術(shù)后,每個(gè)輸入端都有三個(gè)信號(hào)源:來自于ID段寄存器的輸出、ALU輸出端的反饋信號(hào)、MEM段輸出端的反饋信號(hào)確定數(shù)據(jù)通路解決數(shù)據(jù)相關(guān)因此,定向判讀處理模塊需要輸出2個(gè)控制信號(hào),分別控制ALU的輸入端SA和SB,且
46、每個(gè)控制信號(hào)可用2個(gè)比特表示。因此,解決數(shù)據(jù)相關(guān)的第二個(gè)修改點(diǎn):添加定向判斷和處理模塊由前所述,在EX段才能察覺是否需要定向技術(shù),因此該模塊可以放在EX段中。將這兩個(gè)修改點(diǎn)反映到數(shù)據(jù)通路中,可得到進(jìn)一步修改的數(shù)據(jù)通路,如下所示。確定數(shù)據(jù)通路解決控制相關(guān)如前一內(nèi)容要點(diǎn)的分析,解決控制相關(guān)是提前獲取轉(zhuǎn)移目標(biāo),然后用旁路技術(shù)反饋回IF段。產(chǎn)生控制相關(guān)的有兩類轉(zhuǎn)移1. 絕對(duì)跳轉(zhuǎn),如JR指令2. 條件跳轉(zhuǎn),如JRC、JRNZ等1. 絕對(duì)跳轉(zhuǎn)當(dāng)在ID段完成譯碼時(shí),已經(jīng)可以獲得跳轉(zhuǎn)偏移量因此,為減少取指延后,可以考慮在ID段直接產(chǎn)生目標(biāo)指令的地址,如PC+offset即可得到確定數(shù)據(jù)通路解決控制相關(guān)2. 條
47、件跳轉(zhuǎn)跳轉(zhuǎn)的目標(biāo)地址可以在ID段計(jì)算,所需的條件要在EX段完成ALU運(yùn)算后才能獲取解決方法:ID段產(chǎn)生setFlag信號(hào)EX段經(jīng)ALU產(chǎn)生tFlag和Flag信號(hào)將這些信號(hào)反饋回IF段,并在下降沿更新PC綜上,需要作如下兩個(gè)修改:1. 在ID段添加加法器,用于實(shí)現(xiàn)PC與offset相加2. 將EX產(chǎn)生的標(biāo)志位反饋到IF段以更新PC確定數(shù)據(jù)通路解決控制相關(guān)數(shù)據(jù)通路修改方法:由上可知,在IF段PC的更新有兩個(gè)來源,一是順序執(zhí)行的PC(即上一PC增1),一是跳轉(zhuǎn)目標(biāo)。為此,在IF段需要增加完成PC+1的部件,并且需要二選一復(fù)用器在ID段增加PC與offset相加的加法器,并產(chǎn)生setFlag信號(hào)傳到
48、EX段。同時(shí),跳轉(zhuǎn)指令才需要判斷是否跳轉(zhuǎn)以及跳轉(zhuǎn)目標(biāo)如何,因此需要將OP碼也回傳到IF段在EX段,需要將setFlag、tFlag、Flag信號(hào)傳到IF段確定數(shù)據(jù)通路其它修改當(dāng)插入NOP時(shí),如在load指令后,或者存在訪問內(nèi)存沖突時(shí),PC值需要保持。因此,需要在沖突檢測(cè)模塊中,再產(chǎn)生一個(gè)輸出,以控制PC的更新或保持此外,在WB段寫寄存器時(shí),需要相應(yīng)的寄存器使能控制信號(hào)w_wRegEn。選擇ALUout還是MemOut寫到寄存器,需要控制信號(hào)w_MemToReg。ID段需要對(duì)IF段得到的指令進(jìn)行譯碼,需要把譯碼得到的ALU功能選擇、源寄存器、目的寄存器號(hào)等傳給EX段把上述的修改進(jìn)一步反映到數(shù)據(jù)通
49、路中,即得到相對(duì)完整的數(shù)據(jù)通路。確定數(shù)據(jù)通路系統(tǒng)總線系統(tǒng)總線連接CPU與內(nèi)存,在該總線上傳遞內(nèi)存地址、數(shù)據(jù)和讀/寫控制信號(hào)內(nèi)存地址可以是指令地址,也可以是數(shù)據(jù)的地址。前者由PC給出,后者由ALUout給出。因此,需要一個(gè)復(fù)用器來復(fù)用這兩種信號(hào),并用內(nèi)存讀/寫信號(hào)進(jìn)行控制。如若MEM段的m_wrMem指示為讀/寫內(nèi)存,則表示應(yīng)該是ALUout表征的數(shù)據(jù)地址,否則為PC表征的指令地址。讀/寫控制信號(hào)直接由m_wrMem給出確定數(shù)據(jù)通路系統(tǒng)總線數(shù)據(jù)包括讀和寫的數(shù)據(jù)。若考慮讀和寫的數(shù)據(jù)分開,記讀出來的數(shù)據(jù)為OutDB,寫的數(shù)據(jù)位WriteData。為避免誤寫,在m_wrMem指示內(nèi)存讀時(shí),寫的數(shù)據(jù)置成高阻態(tài)“zzzz”;指示內(nèi)存寫時(shí),則直接用MEM的待寫數(shù)據(jù)m_RBData。因此,需要額外的一個(gè)復(fù)用器來復(fù)用這兩種寫數(shù)據(jù),并用m_wrMem進(jìn)行控制綜上,數(shù)據(jù)通路再修改如下。分析控制信號(hào)控制信號(hào)指ID流水段產(chǎn)生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度內(nèi)衣產(chǎn)品研發(fā)創(chuàng)新獎(jiǎng)勵(lì)合同4篇
- 人教版七年級(jí)歷史下冊(cè)各單元測(cè)試題(全冊(cè),含答案)
- 2025年親子活動(dòng)贊助合同
- 2025年圖書代理分發(fā)合同
- 2025年幼兒園裝修改造項(xiàng)目合同范本4篇
- 2025年土地開發(fā)中介合同
- 二零二五版電子商務(wù)合同電子發(fā)票管理與使用合同4篇
- 2025年加盟商合同協(xié)議樣本
- 二零二五年度電競(jìng)主播戰(zhàn)隊(duì)招募合同3篇
- 2025年湖北大唐襄陽水電有限公司招聘筆試參考題庫含答案解析
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- 企業(yè)融資報(bào)告特斯拉成功案例分享
- 五年(2020-2024)高考地理真題分類匯編(全國(guó)版)專題12區(qū)域發(fā)展解析版
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟(jì)的社會(huì)接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計(jì)第1部分:通用要求
- 河北省保定市競(jìng)秀區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末生物學(xué)試題(解析版)
- 2024年江蘇省勞動(dòng)合同條例
- 六編元代文學(xué)
評(píng)論
0/150
提交評(píng)論