版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)原理第六章 中央處理器:數(shù)據(jù)通路和控制器本講簡要說明目的與要求:了解CPU的功能,理解處理器數(shù)據(jù)通路的建立,掌握單周期數(shù)據(jù)通路的設(shè)計(jì)授課重點(diǎn):單周期數(shù)據(jù)通路的建立與設(shè)計(jì)授課難點(diǎn):如何在處理器中建立數(shù)據(jù)通路閱讀章節(jié):Computer Organization and Design第5章第13節(jié),計(jì)算機(jī)原理和設(shè)計(jì)第4章第12節(jié)作業(yè)安排:P354 5.1題數(shù)據(jù)通路的位置控制器的基本概念單周期數(shù)據(jù)通路的設(shè)計(jì)數(shù)據(jù)通路的功能和實(shí)現(xiàn)操作元件(組合邏輯)狀態(tài) / 存儲(chǔ)元件(時(shí)序邏輯)數(shù)據(jù)通路的定時(shí)選擇MIPS指令集的一個(gè)子集作為CPU的實(shí)現(xiàn)目標(biāo)下條指令地址計(jì)算與取指令部件R型指令的數(shù)據(jù)通路訪存指令的數(shù)據(jù)
2、通路立即數(shù)運(yùn)算指令的數(shù)據(jù)通路分支和跳轉(zhuǎn)指令的數(shù)據(jù)通路綜合所有指令的數(shù)據(jù)通路主 要 內(nèi) 容回顧存儲(chǔ)程序計(jì)算機(jī)結(jié)構(gòu) 運(yùn)算器 (ALU) 控制器 存儲(chǔ)器 輸入設(shè)備 輸出設(shè)備 數(shù)據(jù)流 控制流 控制器基本概念控制器的功能(從程序執(zhí)行角度看)對(duì)指令流和數(shù)據(jù)流實(shí)施正確控制在空間上,由控制器形成受控部件的控制信號(hào)在時(shí)間上,控制器控制各種動(dòng)作的執(zhí)行順序控制器基本概念控制器的功能(從系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的角度看)取指令(控制指令流出)分析指令(控制指令分析)執(zhí)行指令,發(fā)出各種操作命令(控制指令執(zhí)行)確定下一條指令的地址(控制指令流向)執(zhí)行環(huán)境的建立與保護(hù)(控制執(zhí)行環(huán)境的維護(hù))存儲(chǔ)器運(yùn)算器控制器1) 用戶可見寄存器(1)
3、 通用寄存器 CPU 的寄存器存放操作數(shù)可作 某種尋址方式所需的 專用寄存器(2) 數(shù)據(jù)寄存器存放操作數(shù)(滿足各種數(shù)據(jù)類型)兩個(gè)寄存器拼接存放雙倍字長數(shù)據(jù)(3) 地址寄存器存放地址,其位數(shù)滿足最大地址范圍用于特殊尋址方式 段基值 棧指針(4) 條件碼寄存器存放條件碼,可作程序分支的依據(jù)如 正、負(fù)、零、溢出、進(jìn)位等控制器基本概念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ù)通路 和 控制器控制器 由 指令譯碼器 和 控制信號(hào)形成部件 等組成執(zhí)行部件CPU執(zhí)行指令過程及其與計(jì)算機(jī)性能的關(guān)系CPU執(zhí)行指令的過程取指令PC+1送PC指令譯碼進(jìn)行主存地址運(yùn)算取操作數(shù)進(jìn)行算術(shù) / 邏輯運(yùn)算存結(jié)果判斷和檢測“異?!笔录粲挟惓#瑒t自動(dòng)切換到異常處理程序檢測是否有“中斷”請(qǐng)求,有則轉(zhuǎn)中斷處理CPU的實(shí)現(xiàn)與計(jì)算機(jī)性能的關(guān)系計(jì)算機(jī)性能(程序執(zhí)行快慢)由三個(gè)關(guān)鍵因素決定:指令數(shù)目、時(shí)鐘周期、CPI指令數(shù)目由編譯器和指令集決定時(shí)鐘周期和CPI由CPU的實(shí)現(xiàn)來決定 CPU的設(shè)計(jì)與實(shí)現(xiàn)非常重要!它直接影響計(jì)算機(jī)的性能。問
5、題:“取指令”一定在最開始做嗎?“PC+1”一定在譯碼之前做嗎?“譯碼”須在指令執(zhí)行前做嗎?“異?!焙汀爸袛唷辈顒e是什么?取指階段執(zhí)行階段組成指令功能的四個(gè)基本操作每條指令的功能可能由四個(gè)基本操作實(shí)現(xiàn)(1) 讀取某一主存單元的內(nèi)容,并將其裝入某個(gè)寄存器 (2) 把一個(gè)數(shù)據(jù)從某個(gè)寄存器存入給定的主存單元中 (3) 把一個(gè)數(shù)據(jù)從某個(gè)寄存器送到另一個(gè)寄存器或ALU(4) 進(jìn)行某種算術(shù)或邏輯運(yùn)算,將結(jié)果送入某個(gè)寄存器操作功能可形式化描述用寄存器傳輸語言RTL (Register Transfer Language)描述本章所用的RTL規(guī)定:用Rr表示寄存器r的內(nèi)容 用Maddr表示讀取主存單元addr
6、的內(nèi)容 傳送方向用“”表示,傳送源在右,傳送目的在左 程序計(jì)數(shù)器PC直接用PC表示其內(nèi)容 用OPdata表示對(duì)數(shù)據(jù)data進(jìn)行OP操作 數(shù)據(jù)通路的基本結(jié)構(gòu)數(shù)據(jù)通路由兩類部件組成組合邏輯元件(亦稱操作元件)存儲(chǔ)元件(亦稱狀態(tài)元件)元件間的連接方式總線連接方式分散連接方式數(shù)據(jù)通路的構(gòu)成由“操作元件”和“存儲(chǔ)元件”通過總線或分散方式連接而成數(shù)據(jù)通路的功能進(jìn)行數(shù)據(jù)存儲(chǔ)、處理、傳送因此,數(shù)據(jù)通路是由操作元件和存儲(chǔ)元件通過總線方式或分散方式連接而成的進(jìn)行數(shù)據(jù)存儲(chǔ)、處理、傳送的路徑。 狀態(tài)元件:時(shí)序邏輯電路狀態(tài)(存儲(chǔ))元件的特點(diǎn) 具有存儲(chǔ)功能,在時(shí)鐘控制下輸入狀態(tài)被寫到電路中,直到下一個(gè)時(shí)鐘到達(dá)輸入端狀態(tài)由
7、時(shí)鐘決定何時(shí)寫入,輸出端狀態(tài)隨時(shí)可讀出定時(shí)方式:規(guī)定信號(hào)何時(shí)寫入狀態(tài)元件或何時(shí)從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式 狀態(tài)單元中的值只在時(shí)鐘邊沿改變。每個(gè)時(shí)鐘周期改變一次最簡單的狀態(tài)單元 D觸發(fā)器:一個(gè)時(shí)鐘輸入、一個(gè)狀態(tài)輸入、一個(gè)狀態(tài)輸出cycle timerising edgefalling edge上升沿(rising edge) 觸發(fā):在時(shí)鐘正跳變時(shí)進(jìn)行讀/寫下降沿(falling edge)觸發(fā):在時(shí)鐘負(fù)跳變時(shí)進(jìn)行讀/寫回顧D觸發(fā)器切記:狀態(tài)單元的輸入信息總是在一個(gè)時(shí)鐘邊沿到達(dá)后的“Clk-to-Q”時(shí)才被寫入到單元中,此時(shí)的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件
8、有兩種:寄存器(組) + 存儲(chǔ)器Q總是在clk-Q后跟著D變化這段時(shí)間D變化不影響Q建立時(shí)間(Set Time):在觸發(fā)時(shí)鐘邊沿之前輸入必須穩(wěn)定保持時(shí)間(Hold Time):在觸發(fā)時(shí)鐘邊沿之后輸入必須保持Clock-to-Q-time:在觸發(fā)時(shí)鐘邊沿,輸出并不能立即變化存儲(chǔ)元件: 寄存器和寄存器組寄存器(Register)寫使能(Write Enable-WE)信號(hào) 0: 時(shí)鐘邊沿到時(shí),輸出不變 1: 時(shí)鐘邊沿到時(shí),輸出開始變?yōu)檩斎肴裘總€(gè)時(shí)鐘邊沿都寫入,則不需WE信號(hào)寄存器組(Register File)兩個(gè)讀口(組合邏輯操作):busA和busB 分別由RA和RB給出地址。地址RA或 RB
9、有效后,經(jīng)一個(gè)“取數(shù)時(shí)間(AccessTime)”,BusA和BusB有效一個(gè)寫口(時(shí)序邏輯操作):寫使能 為1且時(shí)鐘邊沿到時(shí),busW傳來的 值開始被寫入RW指定的寄存器中ClkbusWWrite Enable3232busA32busB555RWRARB32 32-bitRegistersClkData InWrite EnableNNData Out寄存器組的內(nèi)部結(jié)構(gòu)busWCD01 3031MUXMXURegister 0Register 1Register 30Register 31Write EnableRW32-to-1DecoderRARBbusAbusBClkCDCDCD每個(gè)
10、寄存器由32個(gè)觸發(fā)器組成,輸入數(shù)據(jù)來自busW,讀出數(shù)據(jù)分別送busA和busBWriteEnable信號(hào)控制是否寫入新值理想存儲(chǔ)器(idealized memory)Data Out:32位讀出數(shù)據(jù)Data In: 32位寫入數(shù)據(jù)Address:讀寫公用一個(gè)32位地址讀操作(組合邏輯操作):地址Address有效后,經(jīng)一個(gè)“取數(shù)時(shí)間AccessTime”,Data Out上數(shù)據(jù)有效寫操作(時(shí)序邏輯操作):寫使能為1且時(shí)鐘Clk邊沿到時(shí),Data In傳來的值開始被寫入Address指定的存儲(chǔ)單元存儲(chǔ)元件: 理想存儲(chǔ)器ClkData InWrite Enable3232DataOutAddre
11、ss為簡化數(shù)據(jù)通路操作的說明,在此把存儲(chǔ)器簡化為帶時(shí)鐘信號(hào)Clk的理想模型。數(shù)據(jù)通路與時(shí)序控制同步系統(tǒng)(Synchronous system)用專門時(shí)序信號(hào)定時(shí)操作時(shí)序信號(hào)規(guī)定何時(shí)發(fā)何操作時(shí)序信號(hào)用于同步控制的定時(shí)信號(hào)指令周期取出并執(zhí)行一條指令的時(shí)間不同指令的指令周期會(huì)不同早期計(jì)算機(jī)三級(jí)時(shí)序系統(tǒng)機(jī)器周期節(jié)拍(時(shí)鐘周期) 脈沖指令周期分為取指令、讀數(shù)、 執(zhí)行并存結(jié)果多個(gè)基本工作 周期,稱為機(jī)器周期機(jī)器周期有取指令、存儲(chǔ)器讀/寫、中斷響應(yīng)等類型現(xiàn)代計(jì)算機(jī)已不采用三級(jí)時(shí)序系統(tǒng),機(jī)器周期的概念已逐漸消失。整個(gè)數(shù)據(jù)通路中的定時(shí)信號(hào)就是時(shí)鐘,一個(gè)時(shí)鐘周期就是一個(gè)節(jié)拍。SKIP四類指令的指令周期取指周期執(zhí)行
12、周期取指周期執(zhí)行周期取指周期執(zhí)行周期取指周期間址周期執(zhí)行周期非訪存 指令周期直接訪存 指令周期間接訪存 指令周期轉(zhuǎn)移 指令周期指令周期BACK數(shù)據(jù)通路與時(shí)序控制Clk寄存器的輸入可變化SetupHold.SetupHold數(shù)據(jù)通路由 “ + 狀態(tài)元件 + 操作元件( 組合電路) + 狀態(tài)元件 + ” 組成只有狀態(tài)元件能存儲(chǔ)信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫入狀態(tài)單元中。其輸入為前一時(shí)鐘生成的數(shù)據(jù),輸出為當(dāng)前時(shí)鐘所用的數(shù)據(jù)現(xiàn)代計(jì)算機(jī)的時(shí)鐘周期ClkClk假定采用下降沿觸發(fā)(負(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í)序在通用寄存器之間傳送數(shù)據(jù) R0out,Yin 完成算術(shù)、邏輯運(yùn)算R1out,YinR2out,Add,ZinZout,R3in從主存取字 R1out,MARinRead, WMFC (等待MFC)MDRout,R2in 寫字到主存
14、R1out,MARinR2out,MDRin,Write, WMFCRR2MRR1 MRR1 RR2問題:時(shí)鐘周期的寬度如何確定? 以“Riout,OP,Rjin”所花時(shí)間來確定還是以 “Read/Write”所花時(shí)間來確定? 以上四種操作各需要幾個(gè)時(shí)鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?CPU訪存有兩種通信方式早期:直接訪問MM, “異步”方式,用MFC應(yīng)答信號(hào)現(xiàn)在:先Cache后MM,“同步”方式,無需應(yīng)答三總線數(shù)據(jù)通路單總線中一個(gè)時(shí)鐘內(nèi)只允許傳一個(gè)數(shù)據(jù),因而指令執(zhí)行效率很低可采用多總線方式,同時(shí)在多個(gè)總線上傳送不同數(shù)據(jù),提高效率例:三總線數(shù)據(jù)通路總線A、B
15、分別傳送兩個(gè)源操作數(shù),總線C傳送結(jié)果單總線中暫存器Y和Z可取消,Why?采用雙口寄存器如何實(shí)現(xiàn): RR3 RR1 op RR2R1outA,R2outB,OP,R3inC只要一個(gè)時(shí)鐘周期即可目前,大多數(shù)計(jì)算機(jī)都采用流水線方式執(zhí)行指令,而上述單總線或三總線數(shù)據(jù)通路很難實(shí)現(xiàn)指令流水執(zhí)行。ZY以MIPS指令系統(tǒng)為例介紹非總線式CPU的設(shè)計(jì)設(shè)計(jì)處理器的步驟第一步:分析每條指令的功能,并用RTL(Register Transfer Language)來表示 第二步:根據(jù)指令功能給出所需元件,并考慮如何將他們互連 第三步:確定每個(gè)元件所需控制信號(hào)的取值 第四步:匯總所有指令所涉及到的控制信號(hào),生成一張反映
16、指令與控制信號(hào)之間關(guān)系的表 第五步:根據(jù)表得到每個(gè)控制信號(hào)的邏輯表達(dá)式,據(jù)此設(shè)計(jì)控制器電路 處理器設(shè)計(jì)涉及到數(shù)據(jù)通路的設(shè)計(jì)和控制器的設(shè)計(jì) 數(shù)據(jù)通路中有兩種元件 操作元件:由組合邏輯電路實(shí)現(xiàn) 存儲(chǔ)(狀態(tài))元件:由時(shí)序邏輯電路實(shí)現(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) 計(jì)算數(shù)據(jù)地址 (立即數(shù)要進(jìn)行符號(hào)擴(kuò)展)Rrt MAddr 從存儲(chǔ)器中取出數(shù)據(jù),裝入到寄存器中PC PC + 4 (同加法指令)100011rsrtimmediate0162126316 bits16 bits5 bits5 bitsBACK to design pro.數(shù)據(jù)通路中的關(guān)鍵路徑(Load操作)寄存器組和理想存儲(chǔ)器的定時(shí)方式寫操作時(shí),作為時(shí)序邏輯電路 時(shí)鐘到達(dá)前輸入需setup;到達(dá)后經(jīng)
18、“Clk-to-Q”寫入數(shù)據(jù)到達(dá)輸出端讀操作時(shí),作為組合邏輯電路 地址有效后經(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)時(shí),PC內(nèi)容再次被更新為 “轉(zhuǎn)移目標(biāo)地址”32Instruction WordAddressInstructionMemoryPCClkNext AddressLogic順序:先取指令,再改變PC的值(具體實(shí)現(xiàn)可以并行) 決不能先改變PC的值,再取指令下地址邏輯取指后,每條指令功能不同,在數(shù)據(jù)通路中信息流動(dòng)過程也不同下面分別對(duì)每條指令進(jìn)行數(shù)據(jù)通路設(shè)計(jì)取指部件加法和減法指令(R-type類型)實(shí)現(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)生的控制信號(hào)Ra, Rb, Rw 分別對(duì)應(yīng)指令的rs, rt, rd指令“add rd, rs, rt”的控制信號(hào)應(yīng)為?ALUctr=add,RegWr=1帶
22、立即數(shù)的邏輯指令(ori指令)optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實(shí)現(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指令和邏輯運(yùn)算指令的代表)RTL: The OR Immediate Instructionorirt, rs, imm16MPC 取指令(公共操作,取指部件完成)Rrt Rrs or ZeroExt(imm16)立即數(shù)零擴(kuò)展,并與rs內(nèi)容做“或”運(yùn)算PC PC + 4 計(jì)算下地址(公共操作,取指部件完成)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsimmediate016153116 bits16 bits0 0 0 0 0 0 0 0 0
24、0 0 0 0 0 0 0零擴(kuò)展 ZeroExt(imm16) :思考:應(yīng)在前面數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號(hào)來控制?邏輯運(yùn)算,立即數(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指令的控制信號(hào):RegDst=?;RegWr=?;ALUctr=?;ALUSrc=?Ori指令的控制信號(hào):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實(shí)現(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) 計(jì)算存儲(chǔ)單元地址 (符號(hào)擴(kuò)
27、展!)Rrt M Addr 裝入數(shù)據(jù)到寄存器rt中PC PC + 4計(jì)算下地址(公共操作,取指部件完成)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符號(hào)擴(kuò)展( 為什么不是零擴(kuò)展? ) 思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號(hào)來控制?立即數(shù)用補(bǔ)碼表示裝入(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)加蘭色部分,為什么?控制信號(hào)RegDst, RegWr, ALUct
29、r, ExtOp, ALUSrc, MemWr, MemtoReg 各取何值?0101RegDst=1, RegWr=1, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=0, MemtoReg=10:零擴(kuò)展,1:符號(hào)擴(kuò)展01訪存指令中的存數(shù)指令 (sw)optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實(shí)現(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) 計(jì)算存儲(chǔ)單元地址(符號(hào)擴(kuò)展!)MemAddr Rrt寄存器rt中的內(nèi)容存到內(nèi)
31、存單元PC PC + 4計(jì)算下地址(公共操作,取指部件完成) oprsrtimmediate0162126316 bits16 bits5 bits5 bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號(hào)來控制?立即數(shù)用補(bǔ)碼表示存數(shù)(sw)指令的數(shù)據(jù)通路M Rrs + SignExtimm16 Rrt Example: sw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpMuxMemtoR
32、egClkData InWrEn32AdrDataMemory32MemWrALUoprsrtimmediate0162126316 bits16 bits5 bits5 bits0101應(yīng)加蘭色部分,為什么?控制信號(hào)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實(shí)現(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ì)算下地址(根據(jù)比較結(jié)果,修改PC)PC PC + 4 + ( SignExt(imm16) x 4 ) elsePC PC + 4oprsrtimmediate0162126316 bits16 bits5 bits5 bits思考:立即數(shù)的含義是什么?是相對(duì)指令數(shù)還是相對(duì)單元數(shù)?應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號(hào)來控制?立即數(shù)用補(bǔ)碼表示條件轉(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è)計(jì)?控制信號(hào)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下地址計(jì)算邏輯的設(shè)計(jì)PC是一個(gè)32位地址:順序執(zhí)行時(shí): PC = PC + 4轉(zhuǎn)移執(zhí)行時(shí): PC = PC + 4 + SignExtImm16 * 4 MIPS按字節(jié)編址,每條指令為32位,占4個(gè)字節(jié),故PC的值總是4的倍數(shù),即后兩位為00,因此,PC只需要30位即可 下地址計(jì)算邏輯簡化為: 順序執(zhí)行時(shí): PC = PC + 1轉(zhuǎn)移執(zhí)行時(shí): PC = P
37、C + 1 + SignExtImm16取指令時(shí): 指令地址 = PC 串接 “00” PC采用30位后,其轉(zhuǎn)移地址計(jì)算邏輯變得更加簡單 采用32位PC時(shí),可用左移2位實(shí)現(xiàn)“*4”操作,計(jì)算轉(zhuǎn)移地址用2個(gè)加法器!用更簡便的方式實(shí)現(xiàn)如下:?下址邏輯設(shè)計(jì)方案1:快速但昂貴 Using a 30-bit PC:順序執(zhí)行時(shí): PC = PC + 1轉(zhuǎn)移執(zhí)行時(shí): PC = PC + 1 + SignExtImm16取指令時(shí): 指令地址 = PC concat “00”3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZeroAddrInstruct
38、ionMemoryAddr“00”32InstructionInstruction30先由當(dāng)前PC取指令, 計(jì)算的下條指令地址在下一個(gè)時(shí)鐘到來后才寫入PC! 標(biāo)志位ZF由ALU產(chǎn)生!為什么這里沒有用“ALU”而是用“Adder”? “ALU”和“Adder”有什么差別?為什么慢?只能等到“Zero”有值后才能進(jìn)行地址計(jì)算對(duì)性能有沒有影響?沒有,因?yàn)長oad指令更慢為什么便宜? “+1”操作用“進(jìn)位”來實(shí)現(xiàn),節(jié)省一個(gè)“Adder”3030SignExt3016imm16Mux01Adder“0”PCClk30BranchZeroAddrInstructionMemoryAddr“00”32Ins
39、truction30“1”Carry InInstruction非Branch時(shí)也不能很快得到下條指令地址下址邏輯設(shè)計(jì)方案2:慢但便宜無條件轉(zhuǎn)移指令optarget address026316 bits26 bitsoprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits實(shí)現(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 計(jì)算目標(biāo)地址optarget address026316 bits26 bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號(hào)來控制?想一想:跳轉(zhuǎn)指令的轉(zhuǎn)移范圍有多大?是當(dāng)前指令后的0 x00000000 xFFFFFFC 處?不對(duì)
41、!它不是相對(duì)尋址,而是絕對(duì)尋址FFFF FFFFF000 0000EFFF FFFFE000 0000AFFF FFFFA000 00000FFF FFFF0000 0000j targetPC的改變?cè)谙聜€(gè)Clk到達(dá)后發(fā)生!Instruction Fetch Unit:取指部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”AddrInstructionMemoryAddr32 J targetPC PC concat targetInstructionInstruction30264Mux10Target30JumpI
42、nstruction這是“取指部件”的完整設(shè)計(jì)3 個(gè)輸入: jump, Branch, Zero1個(gè)輸出: 指令字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(考察實(shí)現(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è)計(jì)好,合起來的數(shù)據(jù)通路是什么樣的?Putting it All Together: A Sing
44、le Cycle Datapath32ALUctrClkbusWRegWr3232busA32busB555RwRaRb32 32-bitRegistersRsRtRtRdRegDstExtenderMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkData InWrEn32AdrDataMemory32MemWrALUInstructionFetch UnitClkZeroInstructionJumpBranch010101Imm16RdRtRs指令執(zhí)行結(jié)果總是在下個(gè)時(shí)鐘到來時(shí)開始保存在 寄存器 或 存儲(chǔ)器 或 PC 中!下步考慮:如何產(chǎn)生控制信號(hào)!(這就是控
45、制器的設(shè)計(jì)內(nèi)容) 已完成的每條指令所用數(shù)據(jù)通路(元件及其互連)及其控制信號(hào)如下第一講 小結(jié)CPU設(shè)計(jì)直接決定了時(shí)鐘周期寬度和CPI,所以對(duì)計(jì)算機(jī)性能非常重要!CPU主要由數(shù)據(jù)通路和控制器組成數(shù)據(jù)通路:實(shí)現(xiàn)指令集中所有指令的操作功能控制器:控制數(shù)據(jù)通路中各部件進(jìn)行正確操作數(shù)據(jù)通路的兩種元件操作元件(組合電路):ALU、MUX、Ext.、Adder、Reg/Mem Read狀態(tài) / 存儲(chǔ)元件(時(shí)序電路):PC、Reg/Mem Write數(shù)據(jù)通路的定時(shí)數(shù)據(jù)通路中操作元件沒有存儲(chǔ)功能,其操作結(jié)果須寫到存儲(chǔ)元件中在時(shí)鐘到達(dá)后clk-to-Q時(shí)存儲(chǔ)元件開始更新狀態(tài)MIPS指令集的一個(gè)子集作為CPU的實(shí)現(xiàn)目
46、標(biāo)公共操作:取指令和PC+4下址計(jì)算:30位PC,三路選擇:順序、Branch(結(jié)合標(biāo)志Zero)、JumpR型:ALU兩個(gè)操作數(shù)來自rs和rt,結(jié)果寫到rd訪存:符號(hào)擴(kuò)展,數(shù)據(jù)在rt和主存單元中交換立即數(shù):0擴(kuò)展后的操作數(shù)送到ALU的一個(gè)輸入端謝謝!計(jì)算機(jī)原理第六章 中央處理器:數(shù)據(jù)通路和控制器本講簡要說明目的與要求:掌握單周期控制器的設(shè)計(jì) 授課重點(diǎn):單周期控制器的設(shè)計(jì) 授課難點(diǎn):如何設(shè)計(jì)單周期控制器閱讀章節(jié):Computer Organization and Design第5章第4節(jié),計(jì)算機(jī)原理和設(shè)計(jì)第4章第23節(jié)作業(yè)安排:P354 5.8、5.13題(選做)主 要 內(nèi) 容考察每條指令在數(shù)
47、據(jù)通路中的執(zhí)行過程和涉及到的控制信號(hào)取值公共操作:取指令和計(jì)算下址PCR-Type指令(add / sub)立即數(shù)指令 (ori)訪存指令(lw / sw)分支指令 (beq)跳轉(zhuǎn)指令 (j)匯總各指令的控制信號(hào)取值兩類控制信號(hào):直接送往數(shù)據(jù)通路 / 送往局部控制單元分析ALU操作對(duì)應(yīng)的控制信號(hào)與func字段間的關(guān)系設(shè)計(jì)ALU局部控制單元設(shè)計(jì)主控制單元The Big Picture: Where are We Now? The Five Classic Components of a ComputerControlDatapathMemoryProcessorInputOutput下一個(gè)目標(biāo):
48、設(shè)計(jì)單周期數(shù)據(jù)通路的控制器 設(shè)計(jì)方法 (1)根據(jù)每條指令功能,分析控制信號(hào)取值,并在表中列出 (2)根據(jù)列出的指令和控制信號(hào)關(guān)系,寫出每個(gè)控制信號(hào)的邏輯表達(dá)式 ADD / SUB 指令 addrd, rs, rtMPC取指(每條指令一樣)Rrd Rrs + Rrt實(shí)際操作(每條指令可能不同)PC PC + 4計(jì)算順序執(zhí)行時(shí)PC的值(每條指令一樣)oprsrtrdshamtfunct0611162126316 bits6 bits5 bits5 bits5 bits5 bitsAdd / Sub操作開始時(shí)取指部件中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCAdd
49、er3030Branch = previousZero = previous“00”AddrInstructionMemoryAddr32Mux10264PCTarget30取指令: Instruction MPC所有指令都相同Jump = previousInstructionInstruction30InstructionClk新指令未取出譯碼,控制信號(hào)值還是原指令舊值新指令還沒執(zhí)行,標(biāo)志亦為舊值 取出指令的第31-26位作為操作碼首先被譯碼 op=000000, 則為R-type指令取指部件由舊控制信號(hào)控制,會(huì)不會(huì)有問題?沒有問題!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)最后階段取指部件中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 0Zero = x“00”AddrInstructionMemoryAddr32Mux10264PCTarget30PC PC + 4除 Branch and Jump以外的指令都相同Jump = 0InstructionInstruction30Instruction因?yàn)樾碌目刂菩盘?hào)保證了正確的PC值產(chǎn)生,在足夠長的時(shí)間后,下個(gè)時(shí)鐘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指令最后階段取指部件中的動(dòng)作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,其他什么都不做(只要保證存儲(chǔ)部件不發(fā)生寫的動(dòng)作) optarget address02631如何保證存儲(chǔ)部件不發(fā)生寫?Jump指令結(jié)束前IFU中的動(dòng)作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 0Zero = x“00”Ad
60、drInstructionMemoryAddr32Mux10264PCTarget30PC PC concat target concat “00”Jump = 1InstructionInstruction30Instructionoptarget address02631綜合分析結(jié)果,得到如下指令與控制信號(hào)的關(guān)系表addsuborilwswbeqjumpRegDstALUSrcMemtoRegRegWriteMemWriteBranchJumpExtOpALUctr1001000 xAdd1001000 xSubtract01010000Or01110001Addx1x01001Addx0
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:岷江流域西南官話語法內(nèi)部差異及歷史演變研究
- 2025版二零二五年度教育信息化項(xiàng)目實(shí)施合同范本3篇
- 二零二五年度工業(yè)用地面積調(diào)整補(bǔ)充合同4篇
- 二零二五年度農(nóng)民工就業(yè)創(chuàng)業(yè)扶持政策合作協(xié)議2篇
- 2025年度國產(chǎn)嬰幼兒奶粉品牌全國分銷合同4篇
- 基于大數(shù)據(jù)分析的2025年度農(nóng)產(chǎn)品市場需求預(yù)測合同2篇
- 二零二五年度住宅室內(nèi)軟裝搭配合同4篇
- 二零二五年度毛竹山承包管理及竹林更新種植合同3篇
- 2025年度木工職業(yè)培訓(xùn)基地承包合同規(guī)范4篇
- 二零二五年度新型社區(qū)服務(wù)中心裝修合同4篇
- 小紅書違禁詞清單(2024年)
- 《社區(qū)康復(fù)》課件-第三章 社區(qū)康復(fù)的實(shí)施
- 胰島素注射的護(hù)理
- 云南省普通高中學(xué)生綜合素質(zhì)評(píng)價(jià)-基本素質(zhì)評(píng)價(jià)表
- 2024年消防產(chǎn)品項(xiàng)目營銷策劃方案
- 聞道課件播放器
- 03軸流式壓氣機(jī)b特性
- 五星級(jí)酒店收入測算f
- 大數(shù)據(jù)與人工智能ppt
- 人教版八年級(jí)下冊(cè)第一單元英語Unit1 單元設(shè)計(jì)
- GB/T 9109.5-2017石油和液體石油產(chǎn)品動(dòng)態(tài)計(jì)量第5部分:油量計(jì)算
評(píng)論
0/150
提交評(píng)論