計算機原理 中央處理器:數(shù)據(jù)通路和控制器課件_第1頁
計算機原理 中央處理器:數(shù)據(jù)通路和控制器課件_第2頁
計算機原理 中央處理器:數(shù)據(jù)通路和控制器課件_第3頁
計算機原理 中央處理器:數(shù)據(jù)通路和控制器課件_第4頁
計算機原理 中央處理器:數(shù)據(jù)通路和控制器課件_第5頁
已閱讀5頁,還剩226頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機原理第六章 中央處理器:數(shù)據(jù)通路和控制器本講簡要說明目的與要求:了解CPU的功能,理解處理器數(shù)據(jù)通路的建立,掌握單周期數(shù)據(jù)通路的設(shè)計授課重點:單周期數(shù)據(jù)通路的建立與設(shè)計授課難點:如何在處理器中建立數(shù)據(jù)通路閱讀章節(jié):Computer Organization and Design第5章第13節(jié),計算機原理和設(shè)計第4章第12節(jié)作業(yè)安排:P354 5.1題數(shù)據(jù)通路的位置控制器的基本概念單周期數(shù)據(jù)通路的設(shè)計數(shù)據(jù)通路的功能和實現(xiàn)操作元件(組合邏輯)狀態(tài) / 存儲元件(時序邏輯)數(shù)據(jù)通路的定時選擇MIPS指令集的一個子集作為CPU的實現(xiàn)目標(biāo)下條指令地址計算與取指令部件R型指令的數(shù)據(jù)通路訪存指令的數(shù)據(jù)

2、通路立即數(shù)運算指令的數(shù)據(jù)通路分支和跳轉(zhuǎn)指令的數(shù)據(jù)通路綜合所有指令的數(shù)據(jù)通路主 要 內(nèi) 容回顧存儲程序計算機結(jié)構(gòu) 運算器 (ALU) 控制器 存儲器 輸入設(shè)備 輸出設(shè)備 數(shù)據(jù)流 控制流 控制器基本概念控制器的功能(從程序執(zhí)行角度看)對指令流和數(shù)據(jù)流實施正確控制在空間上,由控制器形成受控部件的控制信號在時間上,控制器控制各種動作的執(zhí)行順序控制器基本概念控制器的功能(從系統(tǒng)設(shè)計和實現(xiàn)的角度看)取指令(控制指令流出)分析指令(控制指令分析)執(zhí)行指令,發(fā)出各種操作命令(控制指令執(zhí)行)確定下一條指令的地址(控制指令流向)執(zhí)行環(huán)境的建立與保護(控制執(zhí)行環(huán)境的維護)存儲器運算器控制器1) 用戶可見寄存器(1)

3、 通用寄存器 CPU 的寄存器存放操作數(shù)可作 某種尋址方式所需的 專用寄存器(2) 數(shù)據(jù)寄存器存放操作數(shù)(滿足各種數(shù)據(jù)類型)兩個寄存器拼接存放雙倍字長數(shù)據(jù)(3) 地址寄存器存放地址,其位數(shù)滿足最大地址范圍用于特殊尋址方式 段基值 棧指針(4) 條件碼寄存器存放條件碼,可作程序分支的依據(jù)如 正、負、零、溢出、進位等控制器基本概念2) 控制和狀態(tài)寄存器(1) 控制寄存器PC控制 CPU 操作(2) 狀態(tài)寄存器狀態(tài)寄存器其中 MAR MBR IR 用戶不可見 存放條件碼用戶可見 PSW 寄存器存放程序狀態(tài)字用戶可見 PC 用戶可見 MARMMMBRIR控制器基本概念 CPU 的寄存器CPU基本組成原

4、理圖控制部件CPU 由 執(zhí)行部件 和 控制部件組成CPU 包含 數(shù)據(jù)通路 和 控制器控制器 由 指令譯碼器 和 控制信號形成部件 等組成執(zhí)行部件CPU執(zhí)行指令過程及其與計算機性能的關(guān)系CPU執(zhí)行指令的過程取指令PC+1送PC指令譯碼進行主存地址運算取操作數(shù)進行算術(shù) / 邏輯運算存結(jié)果判斷和檢測“異?!笔录粲挟惓?,則自動切換到異常處理程序檢測是否有“中斷”請求,有則轉(zhuǎn)中斷處理CPU的實現(xiàn)與計算機性能的關(guān)系計算機性能(程序執(zhí)行快慢)由三個關(guān)鍵因素決定:指令數(shù)目、時鐘周期、CPI指令數(shù)目由編譯器和指令集決定時鐘周期和CPI由CPU的實現(xiàn)來決定 CPU的設(shè)計與實現(xiàn)非常重要!它直接影響計算機的性能。問

5、題:“取指令”一定在最開始做嗎?“PC+1”一定在譯碼之前做嗎?“譯碼”須在指令執(zhí)行前做嗎?“異?!焙汀爸袛唷辈顒e是什么?取指階段執(zhí)行階段組成指令功能的四個基本操作每條指令的功能可能由四個基本操作實現(xiàn)(1) 讀取某一主存單元的內(nèi)容,并將其裝入某個寄存器 (2) 把一個數(shù)據(jù)從某個寄存器存入給定的主存單元中 (3) 把一個數(shù)據(jù)從某個寄存器送到另一個寄存器或ALU(4) 進行某種算術(shù)或邏輯運算,將結(jié)果送入某個寄存器操作功能可形式化描述用寄存器傳輸語言RTL (Register Transfer Language)描述本章所用的RTL規(guī)定:用Rr表示寄存器r的內(nèi)容 用Maddr表示讀取主存單元addr

6、的內(nèi)容 傳送方向用“”表示,傳送源在右,傳送目的在左 程序計數(shù)器PC直接用PC表示其內(nèi)容 用OPdata表示對數(shù)據(jù)data進行OP操作 數(shù)據(jù)通路的基本結(jié)構(gòu)數(shù)據(jù)通路由兩類部件組成組合邏輯元件(亦稱操作元件)存儲元件(亦稱狀態(tài)元件)元件間的連接方式總線連接方式分散連接方式數(shù)據(jù)通路的構(gòu)成由“操作元件”和“存儲元件”通過總線或分散方式連接而成數(shù)據(jù)通路的功能進行數(shù)據(jù)存儲、處理、傳送因此,數(shù)據(jù)通路是由操作元件和存儲元件通過總線方式或分散方式連接而成的進行數(shù)據(jù)存儲、處理、傳送的路徑。 狀態(tài)元件:時序邏輯電路狀態(tài)(存儲)元件的特點 具有存儲功能,在時鐘控制下輸入狀態(tài)被寫到電路中,直到下一個時鐘到達輸入端狀態(tài)由

7、時鐘決定何時寫入,輸出端狀態(tài)隨時可讀出定時方式:規(guī)定信號何時寫入狀態(tài)元件或何時從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式 狀態(tài)單元中的值只在時鐘邊沿改變。每個時鐘周期改變一次最簡單的狀態(tài)單元 D觸發(fā)器:一個時鐘輸入、一個狀態(tài)輸入、一個狀態(tài)輸出cycle timerising edgefalling edge上升沿(rising edge) 觸發(fā):在時鐘正跳變時進行讀/寫下降沿(falling edge)觸發(fā):在時鐘負跳變時進行讀/寫回顧D觸發(fā)器切記:狀態(tài)單元的輸入信息總是在一個時鐘邊沿到達后的“Clk-to-Q”時才被寫入到單元中,此時的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件

8、有兩種:寄存器(組) + 存儲器Q總是在clk-Q后跟著D變化這段時間D變化不影響Q建立時間(Set Time):在觸發(fā)時鐘邊沿之前輸入必須穩(wěn)定保持時間(Hold Time):在觸發(fā)時鐘邊沿之后輸入必須保持Clock-to-Q-time:在觸發(fā)時鐘邊沿,輸出并不能立即變化存儲元件: 寄存器和寄存器組寄存器(Register)寫使能(Write Enable-WE)信號 0: 時鐘邊沿到時,輸出不變 1: 時鐘邊沿到時,輸出開始變?yōu)檩斎肴裘總€時鐘邊沿都寫入,則不需WE信號寄存器組(Register File)兩個讀口(組合邏輯操作):busA和busB 分別由RA和RB給出地址。地址RA或 RB

9、有效后,經(jīng)一個“取數(shù)時間(AccessTime)”,BusA和BusB有效一個寫口(時序邏輯操作):寫使能 為1且時鐘邊沿到時,busW傳來的 值開始被寫入RW指定的寄存器中ClkbusWWrite Enable3232busA32busB555RWRARB32 32-bitRegistersClkData InWrite EnableNNData Out寄存器組的內(nèi)部結(jié)構(gòu)busWCD01 3031MUXMXURegister 0Register 1Register 30Register 31Write EnableRW32-to-1DecoderRARBbusAbusBClkCDCDCD每個

10、寄存器由32個觸發(fā)器組成,輸入數(shù)據(jù)來自busW,讀出數(shù)據(jù)分別送busA和busBWriteEnable信號控制是否寫入新值理想存儲器(idealized memory)Data Out:32位讀出數(shù)據(jù)Data In: 32位寫入數(shù)據(jù)Address:讀寫公用一個32位地址讀操作(組合邏輯操作):地址Address有效后,經(jīng)一個“取數(shù)時間AccessTime”,Data Out上數(shù)據(jù)有效寫操作(時序邏輯操作):寫使能為1且時鐘Clk邊沿到時,Data In傳來的值開始被寫入Address指定的存儲單元存儲元件: 理想存儲器ClkData InWrite Enable3232DataOutAddre

11、ss為簡化數(shù)據(jù)通路操作的說明,在此把存儲器簡化為帶時鐘信號Clk的理想模型。數(shù)據(jù)通路與時序控制同步系統(tǒng)(Synchronous system)用專門時序信號定時操作時序信號規(guī)定何時發(fā)何操作時序信號用于同步控制的定時信號指令周期取出并執(zhí)行一條指令的時間不同指令的指令周期會不同早期計算機三級時序系統(tǒng)機器周期節(jié)拍(時鐘周期) 脈沖指令周期分為取指令、讀數(shù)、 執(zhí)行并存結(jié)果多個基本工作 周期,稱為機器周期機器周期有取指令、存儲器讀/寫、中斷響應(yīng)等類型現(xiàn)代計算機已不采用三級時序系統(tǒng),機器周期的概念已逐漸消失。整個數(shù)據(jù)通路中的定時信號就是時鐘,一個時鐘周期就是一個節(jié)拍。SKIP四類指令的指令周期取指周期執(zhí)行

12、周期取指周期執(zhí)行周期取指周期執(zhí)行周期取指周期間址周期執(zhí)行周期非訪存 指令周期直接訪存 指令周期間接訪存 指令周期轉(zhuǎn)移 指令周期指令周期BACK數(shù)據(jù)通路與時序控制Clk寄存器的輸入可變化SetupHold.SetupHold數(shù)據(jù)通路由 “ + 狀態(tài)元件 + 操作元件( 組合電路) + 狀態(tài)元件 + ” 組成只有狀態(tài)元件能存儲信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫入狀態(tài)單元中。其輸入為前一時鐘生成的數(shù)據(jù),輸出為當(dāng)前時鐘所用的數(shù)據(jù)現(xiàn)代計算機的時鐘周期ClkClk假定采用下降沿觸發(fā)(負跳變)方式(可以是上升沿方式)狀態(tài)單元在下降沿寫入信息,經(jīng)Latch Prop (clk-to-Q)后輸

13、出有效 Cycle Time = Latch Prop + Longest Delay Path + Setup + Clock Skew約束條件:(Latch Prop + Shortest Delay Path - Clock Skew) Hold Time 通常Latch Prop Hold Time,故無需考慮Hold Time單總線數(shù)據(jù)通路四種基本操作的時序在通用寄存器之間傳送數(shù)據(jù) R0out,Yin 完成算術(shù)、邏輯運算R1out,YinR2out,Add,ZinZout,R3in從主存取字 R1out,MARinRead, WMFC (等待MFC)MDRout,R2in 寫字到主存

14、R1out,MARinR2out,MDRin,Write, WMFCRR2MRR1 MRR1 RR2問題:時鐘周期的寬度如何確定? 以“Riout,OP,Rjin”所花時間來確定還是以 “Read/Write”所花時間來確定? 以上四種操作各需要幾個時鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?CPU訪存有兩種通信方式早期:直接訪問MM, “異步”方式,用MFC應(yīng)答信號現(xiàn)在:先Cache后MM,“同步”方式,無需應(yīng)答三總線數(shù)據(jù)通路單總線中一個時鐘內(nèi)只允許傳一個數(shù)據(jù),因而指令執(zhí)行效率很低可采用多總線方式,同時在多個總線上傳送不同數(shù)據(jù),提高效率例:三總線數(shù)據(jù)通路總線A、B

15、分別傳送兩個源操作數(shù),總線C傳送結(jié)果單總線中暫存器Y和Z可取消,Why?采用雙口寄存器如何實現(xiàn): RR3 RR1 op RR2R1outA,R2outB,OP,R3inC只要一個時鐘周期即可目前,大多數(shù)計算機都采用流水線方式執(zhí)行指令,而上述單總線或三總線數(shù)據(jù)通路很難實現(xiàn)指令流水執(zhí)行。ZY以MIPS指令系統(tǒng)為例介紹非總線式CPU的設(shè)計設(shè)計處理器的步驟第一步:分析每條指令的功能,并用RTL(Register Transfer Language)來表示 第二步:根據(jù)指令功能給出所需元件,并考慮如何將他們互連 第三步:確定每個元件所需控制信號的取值 第四步:匯總所有指令所涉及到的控制信號,生成一張反映

16、指令與控制信號之間關(guān)系的表 第五步:根據(jù)表得到每個控制信號的邏輯表達式,據(jù)此設(shè)計控制器電路 處理器設(shè)計涉及到數(shù)據(jù)通路的設(shè)計和控制器的設(shè)計 數(shù)據(jù)通路中有兩種元件 操作元件:由組合邏輯電路實現(xiàn) 存儲(狀態(tài))元件:由時序邏輯電路實現(xiàn)SKIPRTL: The ADD Instruction(加法指令)addrd, rs, rtMPC從PC所指的內(nèi)存單元中取指令Rrd Rrs + Rrt從rs、rt 所指的寄存器中取數(shù)后相加,結(jié)果送rd 所指的寄存器中PC PC + 4PC加4,使PC指向下一條指令000000rsrtrdshamt1000000611162126316 bits6 bits5 bits

17、5 bits5 bits5 bitsRTL: The Load Instruction(裝入指令)lwrt, rs, imm16MPC(同加法指令)Addr Rrs + SignExt(imm16) 計算數(shù)據(jù)地址 (立即數(shù)要進行符號擴展)Rrt MAddr 從存儲器中取出數(shù)據(jù),裝入到寄存器中PC PC + 4 (同加法指令)100011rsrtimmediate0162126316 bits16 bits5 bits5 bitsBACK to design pro.數(shù)據(jù)通路中的關(guān)鍵路徑(Load操作)寄存器組和理想存儲器的定時方式寫操作時,作為時序邏輯電路 時鐘到達前輸入需setup;到達后經(jīng)

18、“Clk-to-Q”寫入數(shù)據(jù)到達輸出端讀操作時,作為組合邏輯電路 地址有效后經(jīng)過 “access time”,輸出開始有效Clk5RwRaRb32 32-bitRegistersRdALUClkData InDataOutDataAddressIdealDataMemoryInstruction busInstruction AddressIdealInstructionMemoryClkPC5Rs5Rt16Imm32323232Load操作:RRt M(Rs)+Imm16取指部件(Instruction Fetch Unit) 每條指令都有的公共操作取指令: MPC更新PC:PC PC +

19、4 轉(zhuǎn)移(Branch and Jump)時,PC內(nèi)容再次被更新為 “轉(zhuǎn)移目標(biāo)地址”32Instruction WordAddressInstructionMemoryPCClkNext AddressLogic順序:先取指令,再改變PC的值(具體實現(xiàn)可以并行) 決不能先改變PC的值,再取指令下地址邏輯取指后,每條指令功能不同,在數(shù)據(jù)通路中信息流動過程也不同下面分別對每條指令進行數(shù)據(jù)通路設(shè)計取指部件加法和減法指令(R-type類型)實現(xiàn)目標(biāo)(7條指令)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate ori rt, rs, imm

20、16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH beq rs, rt, imm16JUMP j targetoptarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits1. 考慮add和sub指令(R-Type指令的代表)RR(R-type)型指令的數(shù)據(jù)通路功能:Rrd Rrs op Rrt Exa

21、mple: add rd, rs, rtoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bits32ResultALUctr: add/subClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersrsrtrdALU不考慮公共操作,僅R-Type指令執(zhí)行階段的數(shù)據(jù)通路如下:ALUctr 、RegWr: 指令譯碼后產(chǎn)生的控制信號Ra, Rb, Rw 分別對應(yīng)指令的rs, rt, rd指令“add rd, rs, rt”的控制信號應(yīng)為?ALUctr=add,RegWr=1帶

22、立即數(shù)的邏輯指令(ori指令)optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實現(xiàn)目標(biāo)(7條指令)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate ori rt, rs, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH

23、 beq rs, rt, imm16JUMP j target2. 考慮ori 指令(I-Type指令和邏輯運算指令的代表)RTL: The OR Immediate Instructionorirt, rs, imm16MPC 取指令(公共操作,取指部件完成)Rrt Rrs or ZeroExt(imm16)立即數(shù)零擴展,并與rs內(nèi)容做“或”運算PC PC + 4 計算下地址(公共操作,取指部件完成)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsimmediate016153116 bits16 bits0 0 0 0 0 0 0 0 0

24、0 0 0 0 0 0 0零擴展 ZeroExt(imm16) :思考:應(yīng)在前面數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?邏輯運算,立即數(shù)為邏輯數(shù)帶立即數(shù)的邏輯指令的數(shù)據(jù)通路Rrt Rrs op ZeroExtimm16 Example: ori rt, rs, imm1632ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsDont Care(Rt)ALUoprsrtimmediate0162126316 bits16 bits5 bits5 bitsR-Type類型的結(jié)果寫入RdR-Type的操作數(shù)

25、來自busB應(yīng)加蘭色部分,為什么?Ori指令的控制信號:RegDst=?;RegWr=?;ALUctr=?;ALUSrc=?Ori指令的控制信號:RegDst=1;RegWr=1;ALUSrc=1;ALUctr=orZeroExtMux1632imm16ALUSrc01RtRdRegDstMux01訪存指令中的數(shù)據(jù)裝入指令 (lw)optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16

26、bits5 bits5 bits實現(xiàn)目標(biāo)(7條指令)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate:ori rt, rs, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH:beq rs, rt, imm16JUMP:j target3. 考慮lw 指令(訪存指令的代表)RTL: The Load Instructionlwrt, rs, imm16MPC取指令(公共操作,取指部件完成)Addr Rrs + SignExt(imm16) 計算存儲單元地址 (符號擴

27、展!)Rrt M Addr 裝入數(shù)據(jù)到寄存器rt中PC PC + 4計算下地址(公共操作,取指部件完成)immediate016153116 bits16 bits0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000161531immediate16 bits16 bits 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11oprsrtimmediate0162126316 bits16 bits5 bits5 bits符號擴展( 為什么不是零擴展? ) 思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示裝入(lw)指令的數(shù)據(jù)通路Rrt

28、M Rrs + SignExtimm16 Example: lw rt, rs, imm16oprsrtimmediate0162126316 bits16 bits5 bits5 bits32ALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtDont Care(Rt)RdRegDstMuxMux3216imm16ALUSrcALUExtenderExtOpMuxMemtoRegClkData InWrEn32AdrDataMemory32MemWr應(yīng)加蘭色部分,為什么?控制信號RegDst, RegWr, ALUct

29、r, ExtOp, ALUSrc, MemWr, MemtoReg 各取何值?0101RegDst=1, RegWr=1, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=0, MemtoReg=10:零擴展,1:符號擴展01訪存指令中的存數(shù)指令 (sw)optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實現(xiàn)目標(biāo)(7條指令)

30、ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate:ori rt, rs, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH:beq rs, rt, imm16JUMP:j target4. 考慮sw 指令(訪存指令的代表)RTL: The Store Instructionswrt, rs, imm16MPC取指令(公共操作,取指部件完成)Addr Rrs + SignExt(imm16) 計算存儲單元地址(符號擴展!)MemAddr Rrt寄存器rt中的內(nèi)容存到內(nèi)

31、存單元PC PC + 4計算下地址(公共操作,取指部件完成) oprsrtimmediate0162126316 bits16 bits5 bits5 bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示存數(shù)(sw)指令的數(shù)據(jù)通路M Rrs + SignExtimm16 Rrt Example: sw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpMuxMemtoR

32、egClkData InWrEn32AdrDataMemory32MemWrALUoprsrtimmediate0162126316 bits16 bits5 bits5 bits0101應(yīng)加蘭色部分,為什么?控制信號RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg 各取何值?RegDst=x, RegWr=0, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=1, MemtoReg=x01分支(條件轉(zhuǎn)移)指令(相等轉(zhuǎn)移:beq)optarget address026316 bits26 bitsoprsrtr

33、dshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實現(xiàn)目標(biāo)(7條指令)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate:ori rt, rs, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH:beq rs, rt, imm16JUMP:j target5. 考慮beq指令(條件轉(zhuǎn)移指令的代表)RTL:

34、 The Branch Instructionbeqrs, rt, imm16MPC取指令(公共操作,取指部件完成)Cond Rrs - Rrt做減法比較rs和rt中的內(nèi)容if (COND eq 0)計算下地址(根據(jù)比較結(jié)果,修改PC)PC PC + 4 + ( SignExt(imm16) x 4 ) elsePC PC + 4oprsrtimmediate0162126316 bits16 bits5 bits5 bits思考:立即數(shù)的含義是什么?是相對指令數(shù)還是相對單元數(shù)?應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示條件轉(zhuǎn)移指令的數(shù)據(jù)通路beq rs, rt,

35、 imm16We need to compare Rs and Rt !oprsrtimmediate0162126316 bits16 bits5 bits5 bitsALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpALUPCClkNext AddressLogic16imm16BranchTo InstructionMemoryZero思考:下地址邏輯如何設(shè)計?控制信號RegDst, RegWr, ALUctr, ExtOp,

36、 ALUSrc, MemWr, MemtoReg, Branch 各取何值?RegDst=x, RegWr=0, ALUctr=sub, ExtOp=x, ALUSrc=0, MemWr=0, MemtoReg=x, Branch=10101下地址計算邏輯的設(shè)計PC是一個32位地址:順序執(zhí)行時: PC = PC + 4轉(zhuǎn)移執(zhí)行時: PC = PC + 4 + SignExtImm16 * 4 MIPS按字節(jié)編址,每條指令為32位,占4個字節(jié),故PC的值總是4的倍數(shù),即后兩位為00,因此,PC只需要30位即可 下地址計算邏輯簡化為: 順序執(zhí)行時: PC = PC + 1轉(zhuǎn)移執(zhí)行時: PC = P

37、C + 1 + SignExtImm16取指令時: 指令地址 = PC 串接 “00” PC采用30位后,其轉(zhuǎn)移地址計算邏輯變得更加簡單 采用32位PC時,可用左移2位實現(xiàn)“*4”操作,計算轉(zhuǎn)移地址用2個加法器!用更簡便的方式實現(xiàn)如下:?下址邏輯設(shè)計方案1:快速但昂貴 Using a 30-bit PC:順序執(zhí)行時: PC = PC + 1轉(zhuǎn)移執(zhí)行時: PC = PC + 1 + SignExtImm16取指令時: 指令地址 = PC concat “00”3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZeroAddrInstruct

38、ionMemoryAddr“00”32InstructionInstruction30先由當(dāng)前PC取指令, 計算的下條指令地址在下一個時鐘到來后才寫入PC! 標(biāo)志位ZF由ALU產(chǎn)生!為什么這里沒有用“ALU”而是用“Adder”? “ALU”和“Adder”有什么差別?為什么慢?只能等到“Zero”有值后才能進行地址計算對性能有沒有影響?沒有,因為Load指令更慢為什么便宜? “+1”操作用“進位”來實現(xiàn),節(jié)省一個“Adder”3030SignExt3016imm16Mux01Adder“0”PCClk30BranchZeroAddrInstructionMemoryAddr“00”32Ins

39、truction30“1”Carry InInstruction非Branch時也不能很快得到下條指令地址下址邏輯設(shè)計方案2:慢但便宜無條件轉(zhuǎn)移指令optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實現(xiàn)目標(biāo)(7條指令)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate:ori rt, rs

40、, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH:beq rs, rt, imm16JUMP:j target6. 考慮Jump指令(無條件轉(zhuǎn)移指令的代表)RTL: The Jump InstructionjtargetMPC取指令(公共操作,取指部件完成)PC PC 串接 target 計算目標(biāo)地址optarget address026316 bits26 bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?想一想:跳轉(zhuǎn)指令的轉(zhuǎn)移范圍有多大?是當(dāng)前指令后的0 x00000000 xFFFFFFC 處?不對

41、!它不是相對尋址,而是絕對尋址FFFF FFFFF000 0000EFFF FFFFE000 0000AFFF FFFFA000 00000FFF FFFF0000 0000j targetPC的改變在下個Clk到達后發(fā)生!Instruction Fetch Unit:取指部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”AddrInstructionMemoryAddr32 J targetPC PC concat targetInstructionInstruction30264Mux10Target30JumpI

42、nstruction這是“取指部件”的完整設(shè)計3 個輸入: jump, Branch, Zero1個輸出: 指令字RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg, Branch, Jump 各取何值?RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x, RegWr=0, MemWr=0, Branch=0, Jump=1The MIPS Subset(考察實現(xiàn)以下指令的數(shù)據(jù)通路)ADD and subtractadd rd, rs, rtsub rd, rs, rtOR Immediate:ori rt, rs

43、, imm16LOAD and STORElw rt, rs, imm16sw rt, rs, imm16BRANCH:beq rs, rt, imm16JUMP:j targetoptarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits所有指令的數(shù)據(jù)通路都已經(jīng)設(shè)計好,合起來的數(shù)據(jù)通路是什么樣的?Putting it All Together: A Sing

44、le Cycle Datapath32ALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkData InWrEn32AdrDataMemory32MemWrALUInstructionFetch UnitClkZeroInstructionJumpBranch010101Imm16RdRtRs指令執(zhí)行結(jié)果總是在下個時鐘到來時開始保存在 寄存器 或 存儲器 或 PC 中!下步考慮:如何產(chǎn)生控制信號!(這就是控

45、制器的設(shè)計內(nèi)容) 已完成的每條指令所用數(shù)據(jù)通路(元件及其互連)及其控制信號如下第一講 小結(jié)CPU設(shè)計直接決定了時鐘周期寬度和CPI,所以對計算機性能非常重要!CPU主要由數(shù)據(jù)通路和控制器組成數(shù)據(jù)通路:實現(xiàn)指令集中所有指令的操作功能控制器:控制數(shù)據(jù)通路中各部件進行正確操作數(shù)據(jù)通路的兩種元件操作元件(組合電路):ALU、MUX、Ext.、Adder、Reg/Mem Read狀態(tài) / 存儲元件(時序電路):PC、Reg/Mem Write數(shù)據(jù)通路的定時數(shù)據(jù)通路中操作元件沒有存儲功能,其操作結(jié)果須寫到存儲元件中在時鐘到達后clk-to-Q時存儲元件開始更新狀態(tài)MIPS指令集的一個子集作為CPU的實現(xiàn)目

46、標(biāo)公共操作:取指令和PC+4下址計算:30位PC,三路選擇:順序、Branch(結(jié)合標(biāo)志Zero)、JumpR型:ALU兩個操作數(shù)來自rs和rt,結(jié)果寫到rd訪存:符號擴展,數(shù)據(jù)在rt和主存單元中交換立即數(shù):0擴展后的操作數(shù)送到ALU的一個輸入端謝謝!計算機原理第六章 中央處理器:數(shù)據(jù)通路和控制器本講簡要說明目的與要求:掌握單周期控制器的設(shè)計 授課重點:單周期控制器的設(shè)計 授課難點:如何設(shè)計單周期控制器閱讀章節(jié):Computer Organization and Design第5章第4節(jié),計算機原理和設(shè)計第4章第23節(jié)作業(yè)安排:P354 5.8、5.13題(選做)主 要 內(nèi) 容考察每條指令在數(shù)

47、據(jù)通路中的執(zhí)行過程和涉及到的控制信號取值公共操作:取指令和計算下址PCR-Type指令(add / sub)立即數(shù)指令 (ori)訪存指令(lw / sw)分支指令 (beq)跳轉(zhuǎn)指令 (j)匯總各指令的控制信號取值兩類控制信號:直接送往數(shù)據(jù)通路 / 送往局部控制單元分析ALU操作對應(yīng)的控制信號與func字段間的關(guān)系設(shè)計ALU局部控制單元設(shè)計主控制單元The Big Picture: Where are We Now? The Five Classic Components of a ComputerControlDatapathMemoryProcessorInputOutput下一個目標(biāo):

48、設(shè)計單周期數(shù)據(jù)通路的控制器 設(shè)計方法 (1)根據(jù)每條指令功能,分析控制信號取值,并在表中列出 (2)根據(jù)列出的指令和控制信號關(guān)系,寫出每個控制信號的邏輯表達式 ADD / SUB 指令 addrd, rs, rtMPC取指(每條指令一樣)Rrd Rrs + Rrt實際操作(每條指令可能不同)PC PC + 4計算順序執(zhí)行時PC的值(每條指令一樣)oprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsAdd / Sub操作開始時取指部件中的動作3030SignExt3016imm16Mux01Adder“1”PCAdd

49、er3030Branch = previousZero = previous“00”AddrInstructionMemoryAddr32Mux10264PCTarget30取指令: Instruction MPC所有指令都相同Jump = previousInstructionInstruction30InstructionClk新指令未取出譯碼,控制信號值還是原指令舊值新指令還沒執(zhí)行,標(biāo)志亦為舊值 取出指令的第31-26位作為操作碼首先被譯碼 op=000000, 則為R-type指令取指部件由舊控制信號控制,會不會有問題?沒有問題!Why?指令譯碼后R型指令(Add / Sub)操作過程

50、32ALUctr = Add or SubClkbusWRegWr = 13232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = 1ExtenderMuxMux3216imm16ALUSrc = 0ExtOp = xMuxMemtoReg = 0ClkData InWrEn32AdrDataMemory32MemWr = 0ALUInstructionFetch UnitClkZeroInstructionJump = 0Branch = 0Rrd Rrs + / - Rrt010101Imm16RdRtRsoprsrtrdshamt

51、funct061116212631R型指令(Add /Sub)最后階段取指部件中的動作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 0Zero = x“00”AddrInstructionMemoryAddr32Mux10264PCTarget30PC PC + 4除 Branch and Jump以外的指令都相同Jump = 0InstructionInstruction30Instruction因為新的控制信號保證了正確的PC值產(chǎn)生,在足夠長的時間后,下個時鐘Clk到來!Register-Register(R型指令) Tim

52、ing32ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRdALUClkPCRs, Rt, Rd,Op, FuncClk-to-QALUctrInstruction Memory Access TimeOld ValueNew ValueRegWrOld ValueNew ValueDelay through Control LogicbusA, BRegister File Access TimeOld ValueNew ValuebusWALU DelayOld ValueNew ValueOld

53、ValueNew ValueNew ValueOld ValueRegister WriteOccurs HerePC+4PC+4 PC ori 指令譯碼后的執(zhí)行過程 32ALUctr = OrClkbusWRegWr = 13232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = 0ExtenderMuxMux3216imm16ALUSrc = 1ExtOp = 0MuxMemtoReg = 0ClkData InWrEn32AdrDataMemory32MemWr = 0ALUInstructionFetch UnitClkZero

54、InstructionJump = 0Branch = 0Rrt Rrs or ZeroExtImm16010101Imm16RdRtRsoprsrtimmediate016212631Load指令譯碼后的執(zhí)行過程32ALUctr = AddClkbusWRegWr = 13232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = 0ExtenderMuxMux3216imm16ALUSrc = 1ExtOp = 1MuxMemtoReg = 1ClkData InWrEn32AdrDataMemory32MemWr = 0ALUInst

55、ructionFetch UnitClkZeroInstructionJump = 0Branch = 0010101Imm16RdRtRsRrt Data Memory Rrs + SignExtimm16oprsrtimmediate016212631Store指令譯碼后的執(zhí)行過程32ALUctr = AddClkbusWRegWr = 03232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = xExtenderMuxMux3216imm16ALUSrc = 1ExtOp = 1MuxMemtoReg = xClkData InW

56、rEn32AdrDataMemory32MemWr = 1ALUInstructionFetch UnitClkZeroInstructionJump = 0Branch = 0010101Imm16RdRtRsMRrs + SignExtimm16 Rrtoprsrtimmediate016212631Branch指令譯碼后的執(zhí)行過程32ALUctr = SubClkbusWRegWr = 03232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = xExtenderMuxMux3216imm16ALUSrc = 0ExtOp = x

57、MuxMemtoReg = xClkData InWrEn32AdrDataMemory32MemWr = 0ALUInstructionFetch UnitClkZeroInstructionJump = 0Branch = 1010101Imm16RdRtRsif (Rrs - Rrt = 0) then Zero 1 ; else Zero 0oprsrtimmediate016212631Branch指令最后階段取指部件中的動作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 1Zero = 1“00”AddrInstruc

58、tionMemoryAddr32Mux10264PCTarget30Jump = 0InstructionInstruction30Instructionif (Zero = 1) then PC = PC + 4 + SignExtimm16*4 ; else PC = PC + 4oprsrtimmediate016212631Jump指令譯碼后的執(zhí)行過程32ALUctr = xClkbusWRegWr = 03232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDst = xExtenderMuxMux3216imm16ALUSrc =

59、xExtOp = xMuxMemtoReg = xClkData InWrEn32AdrDataMemory32MemWr = 0ALUInstructionFetch UnitClkZeroInstructionJump = 1Branch = 0010101Imm16RdRtRsIFU中目標(biāo)地址送PC,其他什么都不做(只要保證存儲部件不發(fā)生寫的動作) optarget address02631如何保證存儲部件不發(fā)生寫?Jump指令結(jié)束前IFU中的動作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 0Zero = x“00”Ad

60、drInstructionMemoryAddr32Mux10264PCTarget30PC PC concat target concat “00”Jump = 1InstructionInstruction30Instructionoptarget address02631綜合分析結(jié)果,得到如下指令與控制信號的關(guān)系表addsuborilwswbeqjumpRegDstALUSrcMemtoRegRegWriteMemWriteBranchJumpExtOpALUctr1001000 xAdd1001000 xSubtract01010000Or01110001Addx1x01001Addx0

溫馨提示

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

評論

0/150

提交評論