計算機組成原理第06章中央處理器_第1頁
計算機組成原理第06章中央處理器_第2頁
計算機組成原理第06章中央處理器_第3頁
計算機組成原理第06章中央處理器_第4頁
計算機組成原理第06章中央處理器_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機原理第六章中央處理器本講簡要說明目的與要求:了解CPU的功能,理解處理器數(shù)據(jù)通路的建立,掌握單周期數(shù)據(jù)通路的設計授課重點:單周期數(shù)據(jù)通路的建立與設計授課難點:如何在處理器中建立數(shù)據(jù)通路參考章節(jié):《ComputerOrganizationandDesign》第5章第1~3節(jié)數(shù)據(jù)通路的位置控制器的基本概念單周期數(shù)據(jù)通路的設計數(shù)據(jù)通路的功能和實現(xiàn)操作元件(組合邏輯)狀態(tài)/存儲元件(時序邏輯)數(shù)據(jù)通路的定時選擇MIPS指令集的一個子集作為CPU的實現(xiàn)目標下條指令地址計算與取指令部件R型指令的數(shù)據(jù)通路訪存指令的數(shù)據(jù)通路立即數(shù)運算指令的數(shù)據(jù)通路分支和跳轉指令的數(shù)據(jù)通路綜合所有指令的數(shù)據(jù)通路主要內(nèi)容回顧—存儲程序計算機結構

運算器

(ALU)

控制器

存儲器

輸入設備

輸出設備

數(shù)據(jù)流

控制流

數(shù)據(jù)通路的位置計算機的五大組成部分什么是數(shù)據(jù)通路(DataPath)?指令執(zhí)行過程中,數(shù)據(jù)所經(jīng)過的路徑(包括路徑中的部件),是指令的執(zhí)行部件

控制器(Control)的功能對指令進行譯碼,生成指令對應的控制信號,控制數(shù)據(jù)通路的動作。能對指令的執(zhí)行部件發(fā)出控制信號,是指令的控制部件ControlMemoryProcessorInputOutputDatapathDatapath控制器基本概念控制器的功能(從程序執(zhí)行角度看)對指令流和數(shù)據(jù)流實施正確控制在空間上,由控制器形成受控部件的控制信號在時間上,控制器控制各種動作的執(zhí)行順序控制器基本概念控制器的功能(從系統(tǒng)設計和實現(xiàn)的角度看)取指令(控制指令流出) 分析指令(控制指令分析)執(zhí)行指令,發(fā)出各種操作命令(控制指令執(zhí)行)確定下一條指令的地址(控制指令流向)執(zhí)行環(huán)境的建立與保護(控制執(zhí)行環(huán)境的維護)控制器基本概念PCIRID指令控制操作控制時間控制數(shù)據(jù)加工處理中斷ALU寄存器中斷系統(tǒng)CU時序電路寄存器ALU

中斷系統(tǒng)CUCPU控制總線數(shù)據(jù)總線地址總線

CPU的功能(從完成功能角度看)1)用戶可見寄存器(1)通用寄存器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)寄存器其中MARMBRIR

用戶不可見存放條件碼 PSW寄存器存放程序狀態(tài)字

PC

用戶可見MARMMMBRIR控制器基本概念CPU的寄存器CPU基本組成原理圖控制部件CPU由

執(zhí)行部件

控制部件組成CPU包含

數(shù)據(jù)通路

控制器控制器由

指令譯碼器

和控制信號形成部件

等組成執(zhí)行部件CPU執(zhí)行指令過程及其與計算機性能的關系CPU執(zhí)行指令的過程取指令PC+1送PC指令譯碼進行主存地址運算取操作數(shù)進行算術/邏輯運算存結果判斷和檢測“異?!笔录粲挟惓?,則自動切換到異常處理程序檢測是否有“中斷”請求,有則轉中斷處理CPU的實現(xiàn)與計算機性能的關系計算機性能(程序執(zhí)行快慢)由三個關鍵因素決定:指令數(shù)目、時鐘周期、CPI指令數(shù)目由編譯器和指令集決定時鐘周期和CPI由CPU的實現(xiàn)來決定

CPU的設計與實現(xiàn)非常重要!它直接影響計算機的性能。問題:“取指令”一定在最開始做嗎?“PC+1”一定在譯碼之前做嗎?“譯碼”須在指令執(zhí)行前做嗎?“異?!焙汀爸袛唷辈顒e是什么?取指階段執(zhí)行階段組成指令功能的四個基本操作每條指令的功能可能由四個基本操作實現(xiàn)(1)讀取某一主存單元的內(nèi)容,并將其裝入某個寄存器(2)把一個數(shù)據(jù)從某個寄存器存入給定的主存單元中(3)把一個數(shù)據(jù)從某個寄存器送到另一個寄存器或ALU(4)進行某種算術或邏輯運算,將結果送入某個寄存器操作功能可形式化描述用寄存器傳輸語言RTL(RegisterTransferLanguage)描述本章所用的RTL規(guī)定:用R[r]表示寄存器r的內(nèi)容用M[addr]表示讀取主存單元addr的內(nèi)容傳送方向用“←”表示,傳送源在右,傳送目的在左程序計數(shù)器PC直接用PC表示其內(nèi)容用OP[data]表示對數(shù)據(jù)data進行OP操作數(shù)據(jù)通路的基本結構數(shù)據(jù)通路由兩類部件組成組合邏輯元件(亦稱操作元件)存儲元件(亦稱狀態(tài)元件)元件間的連接方式總線連接方式分散連接方式數(shù)據(jù)通路的構成由“操作元件”和“存儲元件”通過總線或分散方式連接而成數(shù)據(jù)通路的功能進行數(shù)據(jù)存儲、處理、傳送因此,數(shù)據(jù)通路是由操作元件和存儲元件通過總線方式或分散方式連接而成的進行數(shù)據(jù)存儲、處理、傳送的路徑。

操作元件:組合邏輯電路加法器(Adder)多路選擇器(MUX)算術邏輯部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2譯碼器(Decoder)何時要用到adder,ALU,MUXorDecoder?控制信號組合邏輯元件的特點其輸出只取決于當前的輸入定時:所有輸入到達后,經(jīng)過一定的邏輯門延時,輸出端改變,并保持到下次改變,不需要時鐘信號來定時二選一或多選一加法器需要什么控制信號?狀態(tài)元件:時序邏輯電路狀態(tài)(存儲)元件的特點具有存儲功能,在時鐘控制下輸入狀態(tài)被寫到電路中,直到下一個時鐘到達輸入端狀態(tài)由時鐘決定何時寫入,輸出端狀態(tài)隨時可讀出定時方式:規(guī)定信號何時寫入狀態(tài)元件或何時從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式狀態(tài)單元中的值只在時鐘邊沿改變。每個時鐘周期改變一次最簡單的狀態(tài)單元D觸發(fā)器:一個時鐘輸入、一個狀態(tài)輸入、一個狀態(tài)輸出cycletimerisingedgefallingedge上升沿(risingedge)觸發(fā):在時鐘正跳變時進行讀/寫下降沿(fallingedge)觸發(fā):在時鐘負跳變時進行讀/寫回顧——D觸發(fā)器切記:狀態(tài)單元的輸入信息總是在一個時鐘邊沿到達后的“Clk-to-Q”時才被寫入到單元中,此時的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件有兩種:寄存器(組)+存儲器Q總是在clk-Q后跟著D變化這段時間D變化不影響Q建立時間(SetTime):在觸發(fā)時鐘邊沿之前輸入必須穩(wěn)定保持時間(HoldTime):在觸發(fā)時鐘邊沿之后輸入必須保持Clock-to-Q-time:在觸發(fā)時鐘邊沿,輸出并不能立即變化寄存器的種類寄存器由N位觸發(fā)器構成CPU中的不同類型寄存器由鎖存器構成的暫存器:帶“寫使能”信號用于和總線相連的、輸出端帶三態(tài)門的寄存器:帶“三態(tài)門控”信號帶復位(清0)功能的寄存器帶計數(shù)(自增)功能的寄存器帶移位功能的寄存器組合上述多個功能的寄存器:帶多個控制信號寄存器組有若干個寄存器組成通常是雙口:兩個讀口+一個寫口可帶時鐘輸入信號用于控制輸入信號何時被寫入到寄存器中經(jīng)過一個clk-to-Q,輸入信號在寄存器的輸出端有效!存儲元件:寄存器和寄存器組寄存器(Register)寫使能(WriteEnable-WE)信號

0:時鐘邊沿到時,輸出不變 1:時鐘邊沿到時,輸出開始變?yōu)檩斎肴裘總€時鐘邊沿都寫入,則不需WE信號寄存器組(RegisterFile)兩個讀口(組合邏輯操作):busA和busB分別由RA和RB給出地址。地址RA或RB有效后,經(jīng)一個“取數(shù)時間(AccessTime)”,BusA和BusB有效一個寫口(時序邏輯操作):寫使能為1且時鐘邊沿到時,busW傳來的值開始被寫入RW指定的寄存器中ClkbusWWriteEnable3232busA32busB555RWRARB3232-bitRegistersClkDataInWriteEnableNNDataOut寄存器組的內(nèi)部結構busWCD01

3031MUXMXURegister0Register1Register30Register31WriteEnableRW32-to-1DecoderRARBbusAbusBClkCDCDCD每個寄存器由32個觸發(fā)器組成,輸入數(shù)據(jù)來自busW,讀出數(shù)據(jù)分別送busA和busBWriteEnable信號控制是否寫入新值理想存儲器(idealizedmemory)DataOut:32位讀出數(shù)據(jù)DataIn:

32位寫入數(shù)據(jù)Address:讀寫公用一個32位地址讀操作(組合邏輯操作):地址Address有效后,經(jīng)一個“取數(shù)時間AccessTime”,DataOut上數(shù)據(jù)有效寫操作(時序邏輯操作):寫使能為1且時鐘Clk邊沿到時,DataIn傳來的值開始被寫入Address指定的存儲單元存儲元件:理想存儲器ClkDataInWriteEnable3232DataOutAddress為簡化數(shù)據(jù)通路操作的說明,在此把存儲器簡化為帶時鐘信號Clk的理想模型。數(shù)據(jù)通路與時序控制同步系統(tǒng)(Synchronoussystem)用專門時序信號定時操作時序信號規(guī)定何時發(fā)何操作時序信號用于同步控制的定時信號指令周期取出并執(zhí)行一條指令的時間不同指令的指令周期會不同SKIP

多級時序系統(tǒng)

機器周期、節(jié)拍(狀態(tài))組成多級時序系統(tǒng)一個指令周期包含若干個機器周期一個機器周期包含若干個時鐘周期CLK機器周期機器周期機器周期(取指令)(取有效地址)(執(zhí)行指令)指令周期T0T1T2T3T0T1T2T3T0T1T2T3機器周期機器周期(取指令)(執(zhí)行指令)指令周期T0T1T2T3T0T1T2節(jié)拍(狀態(tài))節(jié)拍(狀態(tài))CLKT0T1T2T3時鐘周期時鐘周期(節(jié)拍、狀態(tài))

機器周期機器周期T0T1T2T3T0T1T2T3四類指令的指令周期取指周期執(zhí)行周期取指周期執(zhí)行周期取指周期執(zhí)行周期取指周期間址周期執(zhí)行周期非訪存

指令周期直接訪存

指令周期間接訪存

指令周期轉移

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

(clk-to-Q)后輸出有效CycleTime=LatchProp+LongestDelayPath+Setup+ClockSkew約束條件:(LatchProp+ShortestDelayPath-ClockSkew)>HoldTime

通常LatchProp>HoldTime,故無需考慮HoldTime早期累加器型指令系統(tǒng)數(shù)據(jù)通路最簡單的數(shù)據(jù)通路結構取指令數(shù)據(jù)路徑PC→MAR,ReadM,M→MBR→IBR→IR取操作數(shù)、運算、送結果的數(shù)據(jù)路徑

操作數(shù)地址→MAR,ReadM,M→MBR→ALU輸入端,AC→ALU輸入端,ALU操作,ALU結果→MBR,WriteM單總線數(shù)據(jù)通路四種基本操作的時序在通用寄存器之間傳送數(shù)據(jù)

R0out,Yin完成算術、邏輯運算R1out,YinR2out,Add,ZinZout,R3in從主存取字R1out,MARinRead,

WMFC

(等待MFC)MDRout,R2in寫字到主存R1out,MARinR2out,MDRin,Write,

WMFCR[R2]←M[R[R1]]M[R[R1]]←R[R2]問題:時鐘周期的寬度如何確定?以“Riout,OP,Rjin”所花時間來確定還是以“Read/Write”所花時間來確定?

以上四種操作各需要幾個時鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?CPU訪存有兩種通信方式早期:直接訪問MM,“異步”方式,用MFC應答信號現(xiàn)在:先Cache后MM,“同步”方式,無需應答三總線數(shù)據(jù)通路單總線中一個時鐘內(nèi)只允許傳一個數(shù)據(jù),因而指令執(zhí)行效率很低可采用多總線方式,同時在多個總線上傳送不同數(shù)據(jù),提高效率例:三總線數(shù)據(jù)通路總線A、B分別傳送兩個源操作數(shù),總線C傳送結果單總線中暫存器Y和Z可取消,Why?采用雙口寄存器如何實現(xiàn):R[R3]←R[R1]opR[R2]R1outA,R2outB,OP,R3inC只要一個時鐘周期即可目前,大多數(shù)計算機都采用流水線方式執(zhí)行指令,而上述單總線或三總線數(shù)據(jù)通路很難實現(xiàn)指令流水執(zhí)行。ZY以MIPS指令系統(tǒng)為例介紹非總線式CPU的設計MIPS的三種指令類型ADDandSUBSTRACTaddrd,rs,rtsubrd,rs,rtORImmediate

orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCHbeqrs,rt,imm16JUMPjtargetoptargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits這些指令具有代表性!算術運算、邏輯運算;RR型、RI型;訪存指令;條件轉移、無條件轉移本講重點:實現(xiàn)以上指令的數(shù)據(jù)通路!MIPS 有哪三種類型指令?R-Type、I-Type、J-Type設計處理器的步驟第一步:分析每條指令的功能,并用RTL(RegisterTransferLanguage)來表示第二步:根據(jù)指令功能給出所需元件,并考慮如何將他們互連第三步:確定每個元件所需控制信號的取值第四步:匯總所有指令所涉及到的控制信號,生成一張反映指令與控制信號之間關系的表第五步:根據(jù)表得到每個控制信號的邏輯表達式,據(jù)此設計控制器電路處理器設計涉及到數(shù)據(jù)通路的設計和控制器的設計數(shù)據(jù)通路中有兩種元件

操作元件:由組合邏輯電路實現(xiàn)存儲(狀態(tài))元件:由時序邏輯電路實現(xiàn)SKIPRTL:TheADDInstruction(加法指令)add rd,rs,rtM[PC]

從PC所指的內(nèi)存單元中取指令R[rd]←R[rs]+R[rt] 從rs、rt所指的寄存器中取數(shù)后相加,結果送rd所指的寄存器中PC←PC+4 PC加4,使PC指向下一條指令000000rsrtrdshamt1000000611162126316bits6bits5bits5bits5bits5bitsRTL:TheLoadInstruction(裝入指令)lw rt,rs,imm16M[PC]

(同加法指令)Addr←R[rs]+SignExt(imm16)

計算數(shù)據(jù)地址(立即數(shù)要進行符號擴展)R[rt]←M[Addr]

從存儲器中取出數(shù)據(jù),裝入到寄存器中PC←PC+4

(同加法指令)100011rsrtimmediate0162126316bits16bits5bits5bitsBACKtodesignpro.數(shù)據(jù)通路中的關鍵路徑(Load操作)寄存器組和理想存儲器的定時方式寫操作時,作為時序邏輯電路

時鐘到達前輸入需setup;到達后經(jīng)“Clk-to-Q”寫入數(shù)據(jù)到達輸出端讀操作時,作為組合邏輯電路地址有效后經(jīng)過“accesstime”,輸出開始有效Clk5RwRaRb3232-bitRegistersRdALUClkDataInDataOutDataAddressIdealDataMemoryInstructionbusInstructionAddressIdealInstructionMemoryClkPC5Rs5Rt16Imm32323232Load操作:R[Rt]←M[(Rs)+Imm16]取指部件(InstructionFetchUnit)每條指令都有的公共操作取指令:M[PC]更新PC:PC←PC+4轉移(BranchandJump)時,PC內(nèi)容再次被更新為“轉移目標地址”32InstructionWordAddressInstructionMemoryPCClkNextAddressLogic順序:先取指令,再改變PC的值決不能先改變PC的值,再取指令下地址邏輯取指后,每條指令功能不同,在數(shù)據(jù)通路中信息流動過程也不同下面分別對每條指令進行數(shù)據(jù)通路設計取指部件加法和減法指令(R-type類型)實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate

orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH

beqrs,rt,imm16JUMPjtargetoptargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits1.考慮add和sub指令(R-Type指令的代表)RR(R-type)型指令的數(shù)據(jù)通路功能:R[rd]←R[rs]opR[rt] Example:addrd,rs,rtoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bits32ResultALUctr:add/subClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersrsrtrdALU不考慮公共操作,僅R-Type指令執(zhí)行階段的數(shù)據(jù)通路如下:ALUctr、RegWr:指令譯碼后產(chǎn)生的控制信號Ra,Rb,Rw

分別對應指令的rs,rt,rd指令“addrd,rs,rt”的控制信號應為?ALUctr=add,RegWr=1帶立即數(shù)的邏輯指令(ori指令)optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate

orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCHbeqrs,rt,imm16JUMPjtarget2.考慮ori指令(I-Type指令和邏輯運算指令的代表)RTL:TheORImmediateInstructionori rt,rs,imm16M[PC]

取指令(公共操作,取指部件完成)R[rt]←R[rs]orZeroExt(imm16)

立即數(shù)零擴展,并與rs內(nèi)容做“或”運算PC←PC+4

計算下地址(公共操作,取指部件完成)oprsrtimmediate0162126316bits16bits5bits5bitsimmediate016153116bits16bits0000000000000000零擴展ZeroExt(imm16):思考:應在前面數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?邏輯運算,立即數(shù)為邏輯數(shù)帶立即數(shù)的邏輯指令的數(shù)據(jù)通路R[rt]←R[rs]opZeroExt[imm16]]Example:orirt,rs,imm1632ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsDon’tCare(Rt)ALUoprsrtimmediate0162126316bits16bits5bits5bitsR-Type類型的結果寫入RdR-Type的操作數(shù)來自busB應加蘭色部分,為什么?Ori指令的控制信號:RegDst=?;RegWr=?;ALUctr=?;ALUSrc=?Ori指令的控制信號:RegDst=1;RegWr=1;ALUSrc=1;ALUctr=orZeroExtMux1632imm16ALUSrc01RtRdRegDstMux01訪存指令中的數(shù)據(jù)裝入指令(lw)optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget3.考慮lw指令(訪存指令的代表)RTL:TheLoadInstructionlw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr←R[rs]+SignExt(imm16)計算存儲單元地址

(符號擴展!)R[rt]←M[Addr]裝入數(shù)據(jù)到寄存器rt中PC←PC+4 計算下地址(公共操作,取指部件完成)immediate016153116bits16bits000000000000000000161531immediate16bits16bits11111111111111111oprsrtimmediate0162126316bits16bits5bits5bits符號擴展(為什么不是零擴展?)思考:應在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示裝入(lw)指令的數(shù)據(jù)通路R[rt]←M[R[rs]+SignExt[imm16]] Example:lwrt,rs,imm16oprsrtimmediate0162126316bits16bits5bits5bits32ALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsRtDon’tCare(Rt)RdRegDstMuxMux3216imm16ALUSrcALUExtenderExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWr應加蘭色部分,為什么?控制信號RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg各取何值?0101RegDst=1,RegWr=1,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=0,MemtoReg=10:零擴展,1:符號擴展01訪存指令中的存數(shù)指令(sw)optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget4.考慮sw指令(訪存指令的代表)RTL:TheStoreInstructionsw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr←R[rs]+SignExt(imm16)計算存儲單元地址(符號擴展!)Mem[Addr]←R[rt] 寄存器rt中的內(nèi)容存到內(nèi)存單元PC←PC+4 計算下地址(公共操作,取指部件完成)oprsrtimmediate0162126316bits16bits5bits5bits思考:應在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示存數(shù)(sw)指令的數(shù)據(jù)通路M[R[rs]+SignExt[imm16]←R[rt]]Example:swrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALUoprsrtimmediate0162126316bits16bits5bits5bits0101應加蘭色部分,為什么?控制信號RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg各取何值?RegDst=x,RegWr=0,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=1,MemtoReg=x01分支(條件轉移)指令(相等轉移:beq)optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget5.考慮beq指令(條件轉移指令的代表)RTL:TheBranchInstructionbeq rs,rt,imm16M[PC] 取指令(公共操作,取指部件完成)Cond←R[rs]-R[rt] 做減法比較rs和rt中的內(nèi)容if(CONDeq0) 計算下地址(根據(jù)比較結果,修改PC)PC←PC+4+(SignExt(imm16)x4) elsePC←PC+4oprsrtimmediate0162126316bits16bits5bits5bits思考:立即數(shù)的含義是什么?是相對指令數(shù)還是相對單元數(shù)?應在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示條件轉移指令的數(shù)據(jù)通路beqrs,rt,imm16 WeneedtocompareRsandRt!oprsrtimmediate0162126316bits16bits5bits5bitsALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpALUPCClkNextAddressLogic16imm16BranchToInstructionMemoryZero思考:下地址邏輯如何設計?控制信號RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg,Branch各取何值?RegDst=x,RegWr=0,ALUctr=sub,ExtOp=x,ALUSrc=0,MemWr=0,MemtoReg=x,Branch=10101下地址計算邏輯的設計PC是一個32位地址:順序執(zhí)行時:

PC<31:0>=PC<31:0>+4轉移執(zhí)行時:

PC<31:0>=PC<31:0>+4+SignExt[Imm16]*4MIPS按字節(jié)編址,每條指令為32位,占4個字節(jié),故PC的值總是4的倍數(shù),即后兩位為00,因此,PC只需要30位即可下地址計算邏輯簡化為:

順序執(zhí)行時:PC<31:2>=PC<31:2>+1轉移執(zhí)行時:PC<31:2>=PC<31:2>+1+SignExt[Imm16]取指令時:

指令地址=PC<31:2>串接“00”PC采用30位后,其轉移地址計算邏輯變得更加簡單采用32位PC時,可用左移2位實現(xiàn)“*4”操作,計算轉移地址用2個加法器!用更簡便的方式實現(xiàn)如下:?下址邏輯設計方案1:快速但昂貴Usinga30-bitPC:順序執(zhí)行時:PC<31:2>=PC<31:2>+1轉移執(zhí)行時:PC<31:2>=PC<31:2>+1+SignExt[Imm16]取指令時:

指令地址=PC<31:2>concat“00”3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZeroAddr<31:2>InstructionMemoryAddr<1:0>“00”32Instruction<31:0>Instruction<15:0>30先由當前PC取指令,計算的下條指令地址在下一個時鐘到來后才寫入PC!標志位ZF由ALU產(chǎn)生!為什么這里沒有用“ALU”而是用“Adder”?“ALU”和“Adder”有什么差別?為什么慢?只能等到“Zero”有值后才能進行地址計算對性能有沒有影響?沒有,因為Load指令更慢為什么便宜?“+1”操作用“進位”來實現(xiàn),節(jié)省一個“Adder”3030SignExt3016imm16Mux01Adder“0”PCClk30BranchZeroAddr<31:2>InstructionMemoryAddr<1:0>“00”32Instruction<31:0>30“1”CarryInInstruction<15:0>非Branch時也不能很快得到下條指令地址下址邏輯設計方案2:慢但便宜無條件轉移指令optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bits實現(xiàn)目標(7條指令)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget6.考慮Jump指令(無條件轉移指令的代表)RTL:TheJumpInstructionj targetM[PC] 取指令(公共操作,取指部件完成)PC<31:2>←PC<31:28>串接target<25:0>計算目標地址optargetaddress026316bits26bits思考:應在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?想一想:跳轉指令的轉移范圍有多大?是當前指令后的0x0000000~0xFFFFFFC處?不對!它不是相對尋址,而是絕對尋址FFFFFFFFF0000000EFFFFFFFE0000000AFFFFFFFA00000000FFFFFFF00000000jtargetPC的改變在下個Clk到達后發(fā)生!InstructionFetchUnit:取指部件

溫馨提示

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

最新文檔

評論

0/150

提交評論