計算機系統(tǒng)基礎(chǔ)-南大-第五章中央處理器_第1頁
計算機系統(tǒng)基礎(chǔ)-南大-第五章中央處理器_第2頁
計算機系統(tǒng)基礎(chǔ)-南大-第五章中央處理器_第3頁
計算機系統(tǒng)基礎(chǔ)-南大-第五章中央處理器_第4頁
計算機系統(tǒng)基礎(chǔ)-南大-第五章中央處理器_第5頁
已閱讀5頁,還剩187頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

“組原”課程實驗大作業(yè)總體框架FPGA實驗板FPGA芯片處理器+CP0(五級流水線)超級終端總線存儲器UART總線接口部件VGA圖形輸出第2、3章第4章第8章第5、6、7章第9章學(xué)生主要實現(xiàn)CPU,提供其他部分用于驗證。PS-2USB課程實驗大作業(yè)代表作品06級學(xué)生設(shè)計的MIPS32頂層結(jié)構(gòu)圖07級學(xué)生在此基礎(chǔ)上又加入了PS2接口和VGA接口統(tǒng)一編址方式課程實驗大作業(yè)代表作品06級學(xué)生設(shè)計的MIPS32處理器(除浮點和除法指令外的所有指令)精確中斷、軟件查詢方式;延遲槽為1學(xué)生實驗成果演示DE2-70實驗板(DE2實驗板)FPGA芯片處理器+CP0(五級流水線)超級終端總線存儲器芯片UART總線接口部件VGA圖形輸出PS-2USBMIPS:俄羅斯方塊游戲(加載在SSRAM芯片)ARM:跳球游戲(加載在SDRAM芯片)程序包括:自檢、初始化后在LCD上顯示一串字符;引導(dǎo)加載程序;轉(zhuǎn)游戲程序執(zhí)行;不同按鍵以不同“中斷”類型區(qū)分,由相應(yīng)中斷服務(wù)程序處理。游戲程序用C實現(xiàn),gcc編譯后,用程序?qū)lf轉(zhuǎn)換為二進(jìn)制文件。第一講數(shù)據(jù)通路概述和MIPS指令系統(tǒng)第二講單周期數(shù)據(jù)通路的設(shè)計第三講單周期控制器的設(shè)計第四講多周期處理器的設(shè)計第五講微程序控制器設(shè)計與異常處理Ch5:CPU-DatapathandControl中央處理器:數(shù)據(jù)通路和控制器第一講數(shù)據(jù)通路概述與MIPS指令系統(tǒng)CPU的功能及其與計算機性能的關(guān)系數(shù)據(jù)通路的位置數(shù)據(jù)通路設(shè)計概述數(shù)據(jù)通路的功能和實現(xiàn)操作元件(組合邏輯部件)狀態(tài)/存儲元件(時序邏輯部件)數(shù)據(jù)通路的定時總線型數(shù)據(jù)通路MIPS指令指令系統(tǒng)簡介指令格式:R型、I型、J型通用寄存器組指令類型:ALU運算、訪存、分支、跳轉(zhuǎn)、調(diào)用和返回主要內(nèi)容CPU功能及其與計算機性能的關(guān)系CPU執(zhí)行指令的過程(回顧)取指令PC+“1”送PC指令譯碼進(jìn)行主存地址運算取操作數(shù)進(jìn)行算術(shù)/邏輯運算存結(jié)果以上每步都需檢測“異?!比粲挟惓?,則自動切換到異常處理程序檢測是否有“中斷”請求,有則轉(zhuǎn)中斷處理CPU的實現(xiàn)與計算機性能的關(guān)系計算機性能(程序執(zhí)行快慢)由三個關(guān)鍵因素決定(回顧)指令數(shù)目、CPI、時鐘周期指令數(shù)目由編譯器和ISA決定時鐘周期和CPI主要由CPU的設(shè)計與實現(xiàn)決定因此,CPU的設(shè)計與實現(xiàn)非常重要!它直接影響計算機的性能。指令執(zhí)行過程問題:“取指令”一定在最開始做嗎?“PC+1”一定在譯碼前做嗎?“譯碼”須在指令執(zhí)行前做嗎?你能說出哪幾種“異?!笔录??異常和中斷的差別是什么?異常是在CPU內(nèi)部發(fā)生的中斷是由外部事件引起的取指階段譯碼和執(zhí)行階段組成指令功能的四種基本操作每條指令的功能總是由以下四種基本操作的組合來實現(xiàn):讀取某一主存單元的內(nèi)容,并將其裝入某個寄存器(取指,取數(shù))把一個數(shù)據(jù)從某個寄存器存入給定的主存單元中(存結(jié)果)把一個數(shù)據(jù)從某個寄存器送到另一個寄存器或者ALU(取數(shù),存結(jié)果)進(jìn)行算術(shù)或邏輯運算(PC+1,計算地址,運算)操作功能可形式化描述描述語言稱為寄存器傳送語言RTL(RegisterTransferLanguage)本章所用的RTL規(guī)定如下:(1)用R[r]表示寄存器r的內(nèi)容;(2)用M[addr]表示主存單元addr的內(nèi)容;(3)傳送方向用“←”表示,傳送源在右,傳送目的在左;(4)程序計數(shù)器PC直接用PC表示其內(nèi)容。例如,R[$8]←M[R[$9]+4]的含義是:將寄存器$9的內(nèi)容加4得到的內(nèi)存地址中的內(nèi)容送寄存器$8中。CPU基本組成原理圖執(zhí)行部件控制部件CPU由執(zhí)行部件和控制部件組成CPU包含數(shù)據(jù)通路(執(zhí)行部件)

和控制器(控制部件)控制器由指令譯碼器和控制信號形成部件組成指令寄存器IR程序計數(shù)器PC數(shù)據(jù)通路的位置計算機的五大組成部分:什么是數(shù)據(jù)通路(DataPath)?指令執(zhí)行過程中,數(shù)據(jù)所經(jīng)過的路徑,包括路徑中的部件。它是指令的執(zhí)行部件。控制器(Control)的功能是什么?對指令進(jìn)行譯碼,生成指令對應(yīng)的控制信號,控制數(shù)據(jù)通路的動作。能對執(zhí)行部件發(fā)出控制信號,是指令的控制部件。ControlMemoryCPUInputOutputDatapathDatapath數(shù)據(jù)通路的基本結(jié)構(gòu)數(shù)據(jù)通路由兩類元件組成組合邏輯元件(也稱操作元件)時序邏輯元件(也稱狀態(tài)元件,存儲元件)元件間的連接方式總線連接方式分散連接方式數(shù)據(jù)通路如何構(gòu)成?由“操作元件”和“存儲元件”通過總線方式或分散方式連接而成數(shù)據(jù)通路的功能是什么?進(jìn)行數(shù)據(jù)存儲、處理、傳送因此,數(shù)據(jù)通路是由操作元件和存儲元件通過總線方式或分散方式連接而成的進(jìn)行數(shù)據(jù)存儲、處理、傳送的路徑。搬數(shù)據(jù)數(shù)據(jù)運算存數(shù)據(jù)操作元件:組合邏輯電路加法器(Adder)多路選擇器(MUX)算邏部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2譯碼器(Decoder)何時要用到adder,ALU,MUXorDecoder?控制信號組合邏輯元件的特點:其輸出只取決于當(dāng)前的輸入。即:若輸入一樣,則其輸出也一樣定時:所有輸入到達(dá)后,經(jīng)過一定的邏輯門延時,輸出端改變,并保持到下次改變,不需要時鐘信號來定時加法器需要什么控制信號?狀態(tài)元件:時序邏輯電路狀態(tài)(存儲)元件的特點:具有存儲功能,在時鐘控制下輸入被寫到電路中,直到下個時鐘到達(dá)輸入端狀態(tài)由時鐘決定何時被寫入,輸出端狀態(tài)隨時可以讀出定時方式:規(guī)定信號何時寫入狀態(tài)元件或何時從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式:狀態(tài)單元中的值只在時鐘邊沿改變。每個時鐘周期改變一次。上升沿(risingedge)觸發(fā):在時鐘正跳變時進(jìn)行讀/寫。下降沿(fallingedge)觸發(fā):在時鐘負(fù)跳變時進(jìn)行讀/寫。最簡單的狀態(tài)單元(回顧:數(shù)字邏輯電路課程內(nèi)容):D觸發(fā)器:一個時鐘輸入、一個狀態(tài)輸入、一個狀態(tài)輸出cycletimerisingedgefallingedge存儲元件中何時狀態(tài)被改變?切記:狀態(tài)單元的輸入信息總是在一個時鐘邊沿到達(dá)后的“Clk-to-Q”時才被寫入到單元中,此時的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件有兩種:寄存器(組)+存儲器(LatchProp-鎖存延遲)Q總是在clock-to-Q后跟著D變化這期間D的變化不影響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指定的寄存器中。ClkDataInWrite

EnableNNDataOutClkbusWWrite

Enable3232busA32busB555RWRARB3232-bitRegisters寄存器組的內(nèi)部結(jié)構(gòu)busWCD031MUXMXURegister0Register1Register

30Register

31WriteEnableRW32-to-1DecoderRARBbusAbusBClkCDCDCD每個寄存器由32個觸發(fā)器組成;輸入數(shù)據(jù)來自busW,讀出數(shù)據(jù)分別送busA和busB;WriteEnable信號控制是否寫入新值。Backtoadd理想存儲器(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í)行過程每一步都有控制信號控制,由定時信號確定控制信號何時發(fā)出、作用時間多長什么是時序信號?同步系統(tǒng)中用于進(jìn)行同步控制的定時信號,如時鐘信號什么叫指令周期?取并執(zhí)行一條指令的時間每條指令的指令周期肯定一樣嗎?早期計算機的三級時序系統(tǒng)機器周期-節(jié)拍-脈沖指令周期可分為取指令、讀操作數(shù)、執(zhí)行并寫結(jié)果等多個基本工作周期,稱為機器周期。機器周期有取指令、存儲器讀、存儲器寫、中斷響應(yīng)等不同類型數(shù)據(jù)通路與時序控制(早期計算機的三級時序)現(xiàn)代計算機已不再采用三級時序系統(tǒng),機器周期的概念已逐漸消失。整個數(shù)據(jù)通路中的定時信號就是時鐘,一個時鐘周期就是一個節(jié)拍。數(shù)據(jù)通路與時序控制假定采用下降沿觸發(fā)(負(fù)跳變)方式(也可以是上升沿方式)所有狀態(tài)單元在下降沿寫入信息,經(jīng)過LatchProp(clk-to-Q)后輸出有效CycleTime=LatchProp+LongestDelayPath+Setup+ClockSkew約束條件:(LatchProp+ShortestDelayPath-ClockSkew)>HoldTimeClk寄存器的輸入可變化SetupHold............SetupHold數(shù)據(jù)通路由“…+狀態(tài)元件

+操作元件(組合電路)+狀態(tài)元件

+…”組成只有狀態(tài)元件能存儲信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫入狀態(tài)單元中。其輸入為前一時鐘生成的數(shù)據(jù),輸出為當(dāng)前時鐘所用的數(shù)據(jù)現(xiàn)代計算機的時鐘周期ClkClk早期累加器型指令系統(tǒng)數(shù)據(jù)通路最簡單的數(shù)據(jù)通路結(jié)構(gòu)

取指令數(shù)據(jù)路徑為:

PC→MAR,ReadM,M→MBR→IBR→IR取操作數(shù)、運算、送結(jié)果的數(shù)據(jù)路徑為:

操作數(shù)地址→MAR,ReadM,M→MBR→ALU輸入端,AC→ALU輸入端,ALU操作,ALU結(jié)果→AC,ALU結(jié)果

→MBR,WriteMIAS計算機是現(xiàn)代計算機的原型AC:累加器MQ:乘商寄存器PC、IR、ALU、IBR、MBR:?分散連接方式!theInstituteforAdvanceStudyatPrinceton單總線數(shù)據(jù)通路四種基本操作的時序在寄存器之間傳送數(shù)據(jù)R0out,Yin完成算術(shù)、邏輯運算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]CPU訪存有兩種通信方式早期:直接訪問MM,“異步”方式,用MFC應(yīng)答信號;現(xiàn)在:先Cache后MM,“同步”方式,無需應(yīng)答信號。問題:時鐘周期的寬度如何確定?以“Riout,OP,Zin”所花時間來確定還是以“Read/Write”所花時間來確定?以上四種操作各需要幾個時鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?Read/Write時間更長,故以此為準(zhǔn)!OP:Add、Sub、And、Or等通用寄存器總線連接方式內(nèi)總線內(nèi)總線外總線三總線數(shù)據(jù)通路單總線中一個時鐘內(nèi)只允許傳一個數(shù)據(jù),因而指令執(zhí)行效率很低可采用多總線方式,同時在多個總線上傳送不同數(shù)據(jù),提高效率例如:三總線數(shù)據(jù)通路總線A、B分別傳送兩個源操作數(shù),總線C傳送結(jié)果單總線中的暫存器Y和Z在此可取消,Why?采用雙口通用寄存器組如何實現(xiàn):R[R3]←R[R1]opR[R2]R1outA,R2outB,op,R3inC只要一個時鐘周期(節(jié)拍)即可!目前大都采用流水線方式執(zhí)行指令,單總線或三總線的總線式數(shù)據(jù)通路很難實現(xiàn)指令流水執(zhí)行。

ZY以下以MIPS指令系統(tǒng)為例介紹非總線式CPU的設(shè)計。三個總線各自傳不同的數(shù)據(jù),不會發(fā)生沖突,故無需Y和Z通用寄存器組MIPS指令中寄存器數(shù)據(jù)和存儲器數(shù)據(jù)的指定寄存器數(shù)據(jù)指定: 31x32-bitGPRs(r0=0)寄存器編號占5bit32x32-bitFPregs(f0~f31,pairedDP) HI,LO,PC:專用特殊寄存器(無需編號)寄存器功能和2種匯編表示方式存儲器數(shù)據(jù)指定32-bitmachine-->可訪問空間:232bytesBigEndian(大端方式)只能通過Load/Store指令訪問存儲器數(shù)據(jù)數(shù)據(jù)地址通過一個32位寄存器內(nèi)容加16位偏移量得到16位偏移量是帶符號整數(shù),故應(yīng)符號擴展數(shù)據(jù)要求按邊界對齊(地址是4的倍數(shù))SKIPMIPS寄存器的功能定義和兩種匯編表示

NamenumberUsageReservedoncall?zero0constantvalue=0(恒為0)n.a.at1reservedforassembler(為匯編程序保留)

n.a.v0~v12

3valuesforresults(過程調(diào)用返回值)noa0~a34

7Arguments(過程調(diào)用參數(shù))yest0~t78

15Temporaries(臨時變量)nos0~s716

23Saved(保存)yest8~t924

25moretemporaries(其他臨時變量)nok0~k126

27reservedforkernel(為OS保留)n.a.gp28globalpointer(全局指針)yessp29stackpointer(棧指針)yesfp30framepointer(幀指針)yesra31returnaddress(過程調(diào)用返回地址)yeszerov0-v1a0-a3t0-t7s0-s7t8-t9gpspfpraat02-34-7815162324-2528293031k0-k1126-27Registersarereferencedeitherbynumber—$0,…$31,orbyname—$t0,$s1…$ra.BACKtolastBACKtoAssembleBACKtoProcedureMIPS指令格式有三種指令格式R-Type兩個操作數(shù)和結(jié)果都在寄存器的運算指令。如:subrd,rs,rtI-Type運算指令:一個寄存器、一個立即數(shù)。如:orirt,rs,imm16LOAD和STORE指令。如:lwrt,rs,imm16條件分支指令。如:beqrs,rt,imm16J-Type無條件跳轉(zhuǎn)指令。如:jtargetoprsrtrdshamtfunc0611162126316bits6bits5bits5

bits5bits5bitsR-Type指令oprsrtimmediate0162126316bits16bits5bits5bitsI-Type指令optargetaddress026316bits26

bitsJ-Type指令所有指令都是32位寬,須按字地址對齊

字地址為4的倍數(shù)!MIPS指令字段含義OP:操作碼rs:第一個源操作數(shù)寄存器rt:第二個源操作數(shù)寄存器rd:結(jié)果寄存器shamt:移位指令 的位移量func:R-Type指令的OP字段是特定的“000000”,具體操作由func字段給定。例如:func=“100000”時,表示“加法”運算。immediate:立即數(shù)或load/store指令和分支指令的偏移地址targetaddress:無條件轉(zhuǎn)移地址的低26位。將PC高4位拼上26位直接地址,最后添2個“0”就是32位目標(biāo)地址。為何最后兩位要添“0”?操作碼的不同編碼定義不同的含義,操作碼相同時,再由功能碼定義不同的含義!指令按字地址對齊,所以每條指令的地址都是4的倍數(shù)(最后兩位為0)。oprsrtrdshamtfunc0611162126316bits6bits5bits5

bits5bits5bitsR-Type指令oprsrtimmediate0162126316bits16bits5bits5bitsI-Type指令optargetaddress026316bits26

bitsJ-Type指令OP字段的含義(MIPS指令的操作碼編碼/解碼表)BACKtoAssembleBacktoLoad/Storeop=0:R型;op=2/3:J型;其余:I型R-型指令的解碼(op=0時,func字段的編碼/解碼表)BACKtoCUadd指令的funct字段為100000B(32)div指令的funct字段為多少?011010B(26)!BACKtoAssembleMIPSAddressingModes(尋址方式)immedoprsrtregisterBase或index基址或變址+MemoryimmedoprsrtImmediateimmedoprsrtPC+4PC-relative相對尋址+MemoryI-format:oprsrtrdregisterRegisterfuncR-format:smt655565J-format:opaddr.MemoryPseudodirect偽直接尋址B/HW/WByte/HalfWord/Word有專門的尋址方式字段(Mod)嗎?沒有!由指令格式確定,指令格式由op確定!還記得如何確定的嗎?為什么稱偽直接?還記得如何得到最終地址的嗎?最終地址=PC31~28||addr.||00位數(shù):4+26+2=32OP=000000HOP=000010Hor000011H若從存儲器取來一條指令為00AF8020H,則對應(yīng)的匯編形式是什么?指令的前6位為000000,根據(jù)指令解碼表知,是一條R-Type指令,按照R-Type指令的格式

得到:rs=00101,rt=01111,rd=10000,shamt=00000,funct=1000001.根據(jù)R-Type指令解碼表,知是“add”操作(非移位操作)2.rs、rt、rd的十進(jìn)制值分別為5、15、16,從MIPS寄存器功能表知:

rs、rt、rd分別為:$a1、$t7、$s0

故對應(yīng)的匯編形式為:

add$s0,$a1,$t7Example:匯編形式與指令的對應(yīng)oprsrtrdshamtfunc0611162126316

bits6bits5bits5bits5bits5bits00000000101011111000000000100000這個過程稱為“反匯編”,可用來破解他人的二進(jìn)制代碼(可執(zhí)行程序).32位指令代碼:00000000101011111000000000100000

功能:R[$s0]←R[$a1]+R[$t7]Example:匯編形式與指令的對應(yīng)若MIPSAssemblyInstruction:Add$t0,$s1,$s2則對應(yīng)的指令機器代碼是什么?oprsrtrd

funcsmt655565017188320655565Decimal

representaton:$s1$s2$t0R-TypeAddNoshiftBinary

representaton:00000010001100100100010000000000655565這個過程稱為“匯編”,所有匯編源程序都必須匯編成二進(jìn)制機器代碼才能讓機器直接執(zhí)行!問題:如何知道是R型指令?匯編器?根據(jù)匯編指令中的操作碼助記符查表能知道是什么格式!從助記符表中查到Add是R型指令,即:何為助記符?匯編語言中的指令和寄存器等的名稱。02324020H02324020MIPSCircuitsforR-TypeInstructions問題:你能給出R-型指令在上述通路中的大致執(zhí)行過程嗎?R-type指令實現(xiàn)電路的執(zhí)行過程裝入指令寄存器(IR-InstructionRegister)以下相應(yīng)字段送控制邏輯opfield(OP字段)funcfield(func字段)shmtfield(shmt字段)以下相應(yīng)字段送寄存器堆第一操作數(shù)寄存器編號第二操作數(shù)寄存器編號存放結(jié)果的目標(biāo)寄存器編號

寄存器號被送選擇器對應(yīng)選擇器輸出被激活

被選寄存器的輸出送到數(shù)據(jù)線控制邏輯提供:

ALU操作碼

寫信號等結(jié)果被寫回目標(biāo)寄存器Phase1:Preparation(1:準(zhǔn)備階段)Phase2:Execution(2:執(zhí)行階段)這個過程描述僅是示意性的,實際上整個過程需要時鐘信號的控制,并有其他部件參與。將在下一講詳細(xì)介紹。MIPSarithmeticandlogicinstructionsInstruction Example Meaning Commentsadd add$1,$2,$3 $1=$2+$3 3operands;exceptionpossiblesubtract sub$1,$2,$3 $1=$2–$3 3operands;exceptionpossibleaddimmediate addi$1,$2,100 $1=$2+100 +constant;exceptionpossiblemultiply mult$2,$3 Hi,Lo=$2×$3 64-bitsignedproductdivide div$2,$3 Lo=$2÷$3, Lo=quotient,Hi=remainder Hi=$2mod$3MovefromHi mfhi$1 $1=Hi getacopyofHiMovefromLo mflo$1 $1=LoInstruction Example Meaning Comment

and and$1,$2,$3 $1=$2&$3 LogicalANDor or$1,$2,$3 $1=$2|$3 LogicalORxor xor$1,$2,$3 $1=$2$3 LogicalXORnor nor$1,$2,$3 $1=~($2|$3) LogicalNOR這里沒有全部列出,還有其他指令,如addu(不帶溢出處理),addui等問題:x86沒有分add還是addu,會不會有問題?不會。x86只產(chǎn)生各種標(biāo)志,由軟件根據(jù)標(biāo)志信息來判斷是否溢出。而MIPS是由硬件直接判溢出否。需判溢出,溢出時發(fā)生“異?!盡IPSdatatransferinstructionsInstruction Comment

Meaning

SW$3,500($4) Storeword$3→($4+500)

SH$3,502($2) StorehalfLowHalfof$3→($2+502)

SB$2,41($3) Storebyte LQof$2→($3+41)

LW$1,-30($2) Loadword ($2-30)→$1LH$1,40($3) Loadhalf ($3+40)→LHof$1LB$1,40($3) Loadbyte($3+40)→LQ

of$1問題:為什么指令必須支持不同長度的操作數(shù)?因為高級語言中的數(shù)據(jù)類型有char,short,int,long,……等,故需要存取不同長度的操作數(shù)指令中操作數(shù)長度由什么決定?操作數(shù)長度的不同由不同的操作碼指定。還記得IA-32的數(shù)據(jù)傳送指令的格式嗎?操作碼:opcode;w:與機器模式(16/32位)一起確定寄存器位數(shù)(AL/AX/EAX);d:操作方向?qū)ぶ贩绞剑簃od、r/m、reg/op三個字段與w字段和機器模式一起確定操作數(shù)所在的寄存器編號或有效地址計算方式SIB中基址B和變址I都可是8個GRS中任一個;SS給出比例因子位移量和立即數(shù)的長度可以是:1B(8位)、2B(16位)、4B(32位)回顧:IA-32機器指令格式MIPS的call/return/jump/branch和compare指令I(lǐng)nstruction Example Meaning

jumpregister jr$31 goto$31

Forswitch,procedurereturn(對應(yīng)過程返回)jumpandlink jal10000 $31=PC+4;goto10000

Forprocedurecall(對應(yīng)過程或函數(shù)調(diào)用)jump j10000 goto10000

JumptotargetaddressPseudoinstructionblt,ble,bgt,bgenotimplementedbyhardware,butsynthesizedbyassemblersetonlessthan slt$1,$2,$3 if($2<$3)$1=1;else$1=0setlessthanimm.slti$1,$2,100 if($2<100)$1=1;else$1=0

branchonequal beq$1,$2,100 if($1==$2)gotoPC+4+25*4

branchonnoteq. bne$1,$2,100 if($1!=$2)gotoPC+4+25*4

call/return按補碼比較大小匯編指令中給出的是相對單元數(shù)!問題:機器指令中立即數(shù)是多少?100=0064H問題:機器指令中立即數(shù)是多少?25=0019H偽指令:由若干指令(即指令序列)實現(xiàn)。分支指令的機器代碼中給出的是相對于當(dāng)前指令的指令條數(shù)!00010000001000100000000000011001MIPS程序和數(shù)據(jù)的存儲器分配這就是每個進(jìn)程的虛擬(邏輯)地址空間!每個用戶程序都有相同的虛擬地址空間!問題:你知道一個程序在“編輯、編譯、匯編、鏈接、裝入”過程中的哪個環(huán)節(jié)確定了每條指令及其操作數(shù)的虛擬地址嗎?鏈接時確定虛擬地址;裝入時生成頁表以建立虛擬地址與物理地址之間的映射!第二講單周期數(shù)據(jù)通路的設(shè)計選擇MIPS指令集的一個子集作為CPU的實現(xiàn)目標(biāo)下條指令地址計算與取指令部件R型指令的數(shù)據(jù)通路訪存指令的數(shù)據(jù)通路立即數(shù)運算指令的數(shù)據(jù)通路分支和跳轉(zhuǎn)指令的數(shù)據(jù)通路綜合所有指令的數(shù)據(jù)通路主要內(nèi)容MIPS的三種指令類型ADDandSUBSTRACTaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtargetoptarget

address026316

bits26bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoprsrtimmediate0162126316bits16bits5bits5

bits這些指令具有代表性!有算術(shù)運算、邏輯運算;有RR型、RI型;有訪存指令;有條件轉(zhuǎn)移、無條件轉(zhuǎn)移。本講目標(biāo):實現(xiàn)以上7條指令對應(yīng)的數(shù)據(jù)通路!教材中實現(xiàn)了11條指令,可將7條指令和11條指令的數(shù)據(jù)通路進(jìn)行對比,以深入理解設(shè)計原理。R-Type、I-Type、J-Type設(shè)計處理器的步驟第一步:分析每條指令的功能,并用RTL(RegisterTransferLanguage)來表示。第二步:根據(jù)指令的功能給出所需的元件,并考慮如何將他們互連。第三步:確定每個元件所需控制信號的取值。第四步:匯總所有指令所涉及到的控制信號,生成一張反映指令與控制信 號之間關(guān)系的表。第五步:根據(jù)表得到每個控制信號的邏輯表達(dá)式,據(jù)此設(shè)計控制器電路。

處理器設(shè)計涉及到數(shù)據(jù)通路的設(shè)計和控制器的設(shè)計數(shù)據(jù)通路中有兩種元件

操作元件:由組合邏輯電路實現(xiàn)存儲(狀態(tài))元件:由時序邏輯電路實現(xiàn)ISA確定后,進(jìn)行處理器設(shè)計的大致步驟RTL:TheADDInstruction(加法指令)add rd,rs,rtM[PC] 從PC所指的內(nèi)存單元中取指令R[rd]←R[rs]+R[rt] 從rs、rt所指的寄存器中取數(shù)后相加。若結(jié)果不溢出,則將結(jié)果送rd所指的寄存器中;若結(jié)果溢出,則不送結(jié)果,并轉(zhuǎn)到“溢出處理程序”執(zhí)行。PC←PC+4PC加4,使PC指向下一條指令oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsRTL:TheLoadInstruction(裝入指令)lw rt,rs,imm16M[PC] (同加法指令)Addr←R[rs]+SignExt(imm16)計算數(shù)據(jù)地址(立即數(shù)要進(jìn)行符號擴展)R[rt]←M[Addr] 從存儲器中取出數(shù)據(jù),裝入到寄存器中PC←PC+4

(同加法指令)與R-type加法指令相比,更復(fù)雜!其他指令的分析與R-type和Load指令類似oprsrtimm160162126316bits16bits5bits5

bits取指令部件(InstructionFetchUnit)每條指令都有的公共操作:取指令:M[PC]更新PC:PC←PC+4轉(zhuǎn)移(BranchandJump)時,PC內(nèi)容再次被更新為“轉(zhuǎn)移目標(biāo)地址”32Instruction

WordAddressInstructionMemoryPCClkNext

AddrLogic順序:先取指令,再改PC的值(具體實現(xiàn)時,可以并行)絕不能先改PC的值,再取指令下地址邏輯取指后,各指令功能不同,數(shù)據(jù)通路中信息流動過程也不同下面分別對每條指令進(jìn)行相應(yīng)數(shù)據(jù)通路的設(shè)計取指令部件加法和減法指令(R-type類型)實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget首先考慮add和sub指令(R-Type指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoprsrtimmediate0162126316bits16bits5bits5

bitsoptarget

address026316

bits26bitsRR(R-type)型指令的數(shù)據(jù)通路功能:R[rd]←R[rs]opR[rt],如:addrd,rs,rt32ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersrsrtrdALU不考慮公共操作,僅R-Type指令執(zhí)行階段的數(shù)據(jù)通路如下:ALUctr,RegWr:指令譯碼后產(chǎn)生的控制信號Ra,Rb,Rw

分別對應(yīng)指令的rs,rt,rd“addrd,rs,rt”控制信號?ALUctr=add,RegWr=1oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bits溢出時,不寫結(jié)果并需轉(zhuǎn)異常處理程序溢出寄存器組結(jié)構(gòu)ALU如何實現(xiàn)呢?例:實現(xiàn)某11條MIPS指令的ALU該ALU能實現(xiàn)哪些運算?add,sub,addu,subu,or,slt,sltulw/sw指令應(yīng)是add/addu?beq指令應(yīng)是sub/subu?定點整數(shù)ALU!ALUctr=add/sub時,OVctr=1ALUctr=其余運算時,OVctr=0addusubuALUctr=sub/subu/slt/sltu時,SUBctr=1,其余SUBctr=0ALUctr=slt,SIGctr=1ALUctr=sltu,SIGctr=0其余情況,任意SUBctr、OPctr等由ALUctr決定P.155圖5.13ALUctr與ALU內(nèi)部控制信號的關(guān)系SUBctr=ALUctr<2>OVctr=!ALUctr<1>&ALUctr<0>SIGctr=ALUctr<0>OPctr<1>=ALUctr<2>&ALUctr<1>OPctr<0>=!ALUctr<2>&

ALUctr<1>&!ALUctr<0>帶立即數(shù)的邏輯指令(ori指令)實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget2.考慮ori指令(I-Type指令和邏輯運算指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoprsrtimmediate0162126316bits16bits5bits5

bitsoptarget

address026316

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

立即數(shù)零擴展,并與rs內(nèi)容做“或”運算PC←PC+4計算下地址(公共操作,取指部件完成)imm16016153116

bits16bits0000000000000000零擴展ZeroExt(imm16)思考:應(yīng)在前面數(shù)據(jù)通路上加哪些元件和連線?用何控制信號?邏輯運算,立即數(shù)為邏輯數(shù)oprsrtimm160162126316bits16bits5bits5

bits帶立即數(shù)的邏輯指令的數(shù)據(jù)通路R[rt]←R[rs]opZeroExt[imm16]] Example:orirt,rs,imm1632ResultALUctrClkbusWRegWr3232busA32busB555RwRaRb3232-bitRegistersRsDon’t

Care(Rt)ALUR-Type類型的結(jié)果寫入RdR-Type的操作數(shù)來自busB應(yīng)加蘭色部分,為什么?Ori指令的控制信號:RegDst=1;RegWr=1;ALUSrc=1;ALUctr=orRtRdRegDstMux01ExtMux1632imm16ALUSrc01oprsrtimm160162126316bits16bits5bits5

bits各控制信號取何值?訪存指令中的數(shù)據(jù)裝入指令(lw)實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget3.考慮lw指令(訪存指令的代表)oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoprsrtimmediate0162126316bits16bits5bits5

bitsoptarget

address026316

bits26bitsRTL:TheLoadInstructionlw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr←R[rs]+SignExt(imm16)計算存儲單元地址(符號擴展!)R[rt]←M[Addr] 裝入數(shù)據(jù)到寄存器rt中PC←PC+4 計算下地址(公共操作,取指部件完成)immediate016153116

bits16

bits0000000000000000000161531immediate16

bits16

bits

11111111111111111符號擴展(為什么不是零擴展?):思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用何控制信號?立即數(shù)用補碼表示oprsrtimmediate0162126316bits16bits5bits5

bits裝入(lw)指令的數(shù)據(jù)通路R[rt]←M[R[rs]+SignExt[imm16]] lwrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32

32-bitRegistersRsRtDon’t

Care(Rt)RdRegDstMuxMux3216imm16ALUSrcALU加蘭色部分。為什么?01ExtExtOpMuxMemtoRegClkData

InWrEn32AdrDataMemory32MemWr01RegDst=1,RegWr=1,ALUctr=addu,ExtOp=1,ALUSrc=1,MemWr=0,MemtoReg=10:零擴展,1:符號擴展01oprsrtimm160162126316bits16bits5bits5

bits各控制信號取何值?訪存指令中的存數(shù)指令(sw)實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget4.考慮sw指令(訪存指令的代表)oprsrtimmediate0162126316bits16bits5bits5

bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoptarget

address026316

bits26bitsRTL:TheStoreInstructionsw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr←R[rs]+SignExt(imm16)計算存儲單元地址(符號擴展!)Mem[Addr]←R[rt] 寄存器rt中的內(nèi)容存到內(nèi)存單元中PC←PC+4 計算下地址(公共操作,取指部件完成)

oprsrtimm160162126316bits16bits5bits5

bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用何控制信號?存數(shù)(sw)指令的數(shù)據(jù)通路M[R[rs]+SignExt[imm16]←

R[rt]] Example:swrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32

32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALU0101加蘭色部分。為什么?RegDst=x,RegWr=0,ALUctr=addu,ExtOp=1,ALUSrc=1,MemWr=1,MemtoReg=x01oprsrtimm160162126316bits16bits5bits5

bits各控制信號取何值?講課前的幾句話為什么要了解和學(xué)習(xí)處理器設(shè)計(現(xiàn)代微處理器可以稱得上是人類創(chuàng)造的最復(fù)雜系統(tǒng)之一)從智力方面來說,處理器設(shè)計是非常有趣且益智的。理解處理器如何工作能幫助理解整個計算機系統(tǒng)是如何工作的。你可能會設(shè)計包含處理器的系統(tǒng)(車載系統(tǒng)、家電等)。你可能就要從事設(shè)計處理器的工作。學(xué)習(xí)處理器設(shè)計的機會難得。關(guān)于軟件設(shè)計的資料多,門檻低,可自學(xué);而關(guān)于處理器設(shè)計的資料少,門檻高,不易自學(xué)。CS2013、CE2016中規(guī)定的畢業(yè)要求。最重要的:國家急需從事計算機系統(tǒng)設(shè)計的人才!要學(xué)會合理安排時間學(xué)習(xí)和了解“時間管理”方面的技巧最典型的浪費時間的事:在A課程上做B課程的事情,兩件都做不好關(guān)于PA、作業(yè)和考試ICS—ch7、ch8:PA4(不再布置作業(yè))COA—ch3:選擇題(非重點);ch5、ch6:各類題型(重點)評分:PA3、PA4(40%);開卷考試(60%)SKIP國家安全戰(zhàn)略和民生工程等方面,面臨挑戰(zhàn)電站可被遠(yuǎn)程控制;公務(wù)車有處理器后門,可被監(jiān)聽或控制;…….舉例:2012年伊朗核離心裝置遭到“震網(wǎng)”病毒攻擊,20%的離心機報廢,監(jiān)控錄像被篡改,而遭攻擊的電腦是物理隔離的基本現(xiàn)狀:國家急需計算機系統(tǒng)方面的人才?。。√旌?015年11月16日公布的全球超級計算機500強榜單,中國“天河二號”比第二名美國“泰坦”快近一倍,連續(xù)第6次獲得冠軍問題之一:實用性和效能難令人滿意問題之二:美國限售Intel高性能處理器芯片龍芯從“北斗”衛(wèi)星、防火墻等國家安全戰(zhàn)略層面,到電子水表、機頂盒等民生項目都有應(yīng)用,取得長足進(jìn)步軟硬件開發(fā)人員上萬,2013年1.8萬片,2014年達(dá)35萬片“長板”與國際先進(jìn)水平相差2-3年,“短板”相差10年以上。若有10萬人基于龍芯開發(fā)基礎(chǔ)軟件,就能很好建立生態(tài)系統(tǒng)背景介紹BACK分支(條件轉(zhuǎn)移)指令(相等轉(zhuǎn)移:beq)實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget5.考慮beq指令(條件轉(zhuǎn)移指令的代表)oprsrtimmediate0162126316bits16bits5bits5

bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoptarget

address026316

bits26bits回顧:RTL:TheStoreInstructionsw rt,rs,imm16M[PC] 取指令(公共操作,取指部件完成)Addr←R[rs]+SignExt(imm16)計算存儲單元地址(符號擴展!)Mem[Addr]←R[rt] 寄存器rt中的內(nèi)容存到內(nèi)存單元中PC←PC+4 計算下地址(公共操作,取指部件完成)

oprsrtimm160162126316bits16bits5bits5

bits思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用何控制信號?回顧:存數(shù)(sw)指令的數(shù)據(jù)通路M[R[rs]+SignExt[imm16]←

R[rt]] Example:swrt,rs,imm1632ALUctrClkbusWRegWr3232busA32busB555RwRaRb32

32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALU0101加蘭色部分。為什么?RegDst=x,RegWr=0,ALUctr=addu,ExtOp=1,ALUSrc=1,MemWr=1,MemtoReg=x01oprsrtimm160162126316bits16bits5bits5

bits各控制信號取何值?RTL:TheBranchInstructionbeq rs,rt,imm16M[PC] 取指令(公共操作,取指部件完成)Cond←R[rs]-R[rt] 做減法比較rs和rt中的內(nèi)容if(CONDeq0) 計算下地址(根據(jù)比較結(jié)果,修改PC)PC←PC+4+(SignExt(imm16)x4) elsePC←PC+4思考:立即數(shù)的含義是什么?是相對指令數(shù)還是相對單元數(shù)?應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?立即數(shù)用補碼表示oprsrtimm160162126316bits16bits5bits5

bits條件轉(zhuǎn)移指令的數(shù)據(jù)通路beqrs,rt,imm16 WeneedtocompareRsandRt!ALUctrClkbusWRegWr3232busA32busB555RwRaRb32

32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpALUPCClkNext

AddrLogic16imm16BranchToInstructionMemoryZero思考:下址邏輯如何設(shè)計?各控制信號取何值?RegDst=x,RegWr=0,ALUctr=subu,ExtOp=x,ALUSrc=0,MemWr=0,MemtoReg=x,Branch=10101oprsrtimm160162126316bits16bits5bits5

bits下地址計算邏輯的設(shè)計PC是一個32位地址:順序執(zhí)行時:PC<31:0>=PC<31:0>+4轉(zhuǎn)移執(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轉(zhuǎn)移執(zhí)行時:PC<31:2>=PC<31:2>+1+SignExt[Imm16]取指令時:

指令地址=PC<31:2>串接“00”PC采用30位后,其轉(zhuǎn)移地址計算邏輯變得更加簡單。采用32位PC時,可用左移2位實現(xiàn)“×4”操作,計算轉(zhuǎn)移地址用2個加法器!可以用更簡便的方式實現(xiàn)如下:下址邏輯設(shè)計Usinga30-bitPC:順序執(zhí)行時:PC<31:2>=PC<31:2>+1轉(zhuǎn)移執(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先根據(jù)當(dāng)前PC取指令,計算的下條指令地址在下一個時鐘到來后才能寫入PC!

標(biāo)志位ZF,由ALU產(chǎn)生!為什么這里沒有用“ALU”而是用“Adder”?“ALU”和“Adder”有什么差別?無條件轉(zhuǎn)移指令實現(xiàn)目標(biāo)(7條指令):ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget6.考慮Jump指令(無條件轉(zhuǎn)移指令的代表)oprsrtimmediate0162126316bits16bits5bits5

bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoptarget

address026316

bits26bitsRTL:TheJumpInstructionj targetM[PC] 取指令(公共操作,取指部件完成)PC<31:2>←PC<31:28>串接target<25:0>計算目標(biāo)地址思考:應(yīng)在原數(shù)據(jù)通路上加哪些元件和連線?用什么控制信號來控制?想一想:跳轉(zhuǎn)指令的轉(zhuǎn)移范圍有多大?是當(dāng)前指令后面的0x0000000~0xFFFFFFC處?不對!它不是相對尋址,而是絕對尋址FFFF

FFFFF000

0000EFFF

FFFFE000

0000AFFF

FFFFA000

00000FFF

FFFF0000

0000j

targetoptarget

address026316

bits26bitsInstructionFetchUnit:取指令部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”Addr<31:2>InstructionMemoryAddr<1:0>32jtargetPC<31:2>←PC<31:28>concattarget<25:0>Instruction<15:0>Instruction<31:0>imm16、Target、…30264Mux10Target30JumpInstruc<25:0>這是“取指部件”的完整設(shè)計3個輸入:jump,Branch,Zero1個輸出:指令字PC的改變在下個Clk到達(dá)后發(fā)生!RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x,

RegWr=0,

MemWr=0,Branch=0,Jump=1各控制信號取何值?TheMIPSSubset(考察實現(xiàn)以下指令的數(shù)據(jù)通路)ADDandsubtractaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtarget所有指令的數(shù)據(jù)通路都已設(shè)計好,合起來的數(shù)據(jù)通路是什么樣的?oprsrtimmediate0162126316bits16bits5bits5

bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5

bits5

bitsoptarget

address026316

bits26bitsPuttingitAllTogether:ASingleCycleDatapath32ALUctrClkbusWRegWr3232busA32busB555RwRaRb

3232

bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkDataInWrEn32AdrDataMemory32MemWrALUInstructionFetch

UnitClkZeroInstruction<31:0>JumpBranch010101<21:25><16:20><11:15><0:15>Imm16RdRtRs指令執(zhí)行結(jié)果總是在下個時鐘到來時開始保存在寄存器或存儲器或

PC

中!下一講考慮:如何產(chǎn)生控制信號?。刂破鞯脑O(shè)計內(nèi)容)數(shù)據(jù)通路中的關(guān)鍵路徑(Load操作)記?。杭拇嫫鹘M和理想存儲器的定時方式寫操作時,作為時序邏輯電路。即:時鐘到達(dá)前,輸入需setup;到達(dá)后經(jīng)Clk-to-Q,寫入數(shù)據(jù)到達(dá)輸出端讀操作時,作為組合邏輯電路。即:地址有效后經(jīng)過“accesstime”,輸出開始有效Clk5RwRaRb32

32-bitRegistersRdALUClkDataInDataOutDataAddressIdealDataMemoryInstructionbusInstruction

AddressIdealInstructionM

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論