【文档说明】计算机组织与设计-软硬体介面课件.ppt,共(62)页,1.255 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-76289.html
以下为本文档部分文字说明:
計算機組織與設計-軟硬體介面處理器:資料路徑與控制第九週計算機組織與設計-軟硬體介面1簡介計算機的效能受到下面三個因素影響:指令的數目(相同的機器,不同的編譯程式)每個指令的時脈週期數目(CPI)•整數指令,算
數邏輯指令,記憶體相關指令及分支時脈週期的長短編譯器和指令集架構決定了一個程式所需的指令數目的多寡。時脈週期的長度和每個指令的時脈週期數目(CPI)卻是由處理器本身的製作方式來決定。在本章中,我
們分別對於兩種不同的MIPS指令製作方式,建構出其資料路徑和控制單元。單一時脈製作方法多重時脈製作方法計算機組織與設計-軟硬體介面2簡介製作MIPS時,其中的功能單元包含兩個不同的邏輯元件:能運算資料的元件•例:ALU•組合式(元件的輸出值僅取決於現有的輸入值)
含狀態的元件•例:記憶體和暫存器檔案•循序式(輸出值決定在輸入值及其內部的狀態)循序邏輯計算機組織與設計-軟硬體介面3簡介執行指令的階段指令擷取解碼運算元擷取執行寫回圖5.1以高階的概觀來說明MIPS的製作方式計算機組織與設計-軟硬體介面4簡介時脈運作方法論定義訊號何
時可以被讀取、何時可以被寫入。範例:圖5.2訊號傳到狀態元件2所需的時間長度決定了時脈週期的長度影響時脈的原因計算機組織與設計-軟硬體介面5建立資料路徑指令擷取資料路徑的一部份用來擷取指令及增加程式計數器(PC
)計算機組織與設計-軟硬體介面6建立資料路徑R格式指令所要執行的ALU運算暫存器檔案:一群暫存器的集合,藉著指令檔案中暫存器的編號,任何一個暫存器都可以進行讀取和寫入的功能。我們需要4個輸入2個輸出來存取暫存器檔案,因為R格式指令有3個暫存器運算元。(例
,add$t0,$t1,$t2)計算機組織與設計-軟硬體介面7建立資料路徑R格式指令所要執行的ALU運算資料路徑例:add$t0,$t1,$t2計算機組織與設計-軟硬體介面8建立資料路徑載入和儲存指令資料路徑的載入和儲存動作•暫
存器的存取發生在記憶體位址計算之後。•對記憶體的讀取。•如果是載入指令,會有一個寫入動作到暫存器檔案中。例:lw$t0,40($t1)sw$t0,32($t1)計算機組織與設計-軟硬體介面9建立資料路徑分支指令由被移動的位移量來形成位元組位移控制邏輯根據
ALU輸出是否為“0”來決定是由增加過的PC來取代現在的PC,還是由分支目標位址來取代現在的PC。例:beq$t1,$t2,L1計算機組織與設計-軟硬體介面10簡易的製作方案利用多工器將R形態指令和記憶體
指令的資料路徑組合起來,而不用重複增加相同的功能單元,參考圖5.7及5.9。計算機組織與設計-軟硬體介面11圖5.12簡易的製作方案•把圖5.5資料路徑的指令擷取部份加入到圖5.11中計算機組織與設計-軟硬體
介面12圖5.13簡易的製作方案把圖5.10資料路徑的分支部份加入到圖中計算機組織與設計-軟硬體介面13ALUabZeroResultOverflowCarryOutALU-operation3簡易的製作方案這個簡易的製作方式包含載入字組(lw)及儲存字組(sw)相等分支(be
q)ALU指令:add,sub,and,or,及setonlessthan根據不同的指令形態,ALU需要可以做下列運算加法計算lw及sw的記憶體位址減法為了相等分支AND,OR,subtraction,add,或slt為了R-形態
指令需要(由6位元的功能欄決定)ALU控制輸入000:AND001:OR010:加法110:減法111:小於時設定setonlessthan計算機組織與設計-軟硬體介面Bnegate00011Operation0001
101011andoraddsubtractsetonlessthan功能13a簡易的製作方案•ALU控制線的值及其相對應的功能計算機組織與設計-軟硬體介面14圖5.14ALUcontrolALU326functionfield
ALUOpALUoperation指令運算碼ALUOp指令的運算功能欄位需要的ALU運算ALU的控制輸入LW00載入字組XXXXXX加法010SW00儲存字組XXXXXX加法010Branchequal01相等分支XXXXXX減法110R-type
10加法100000加法010R-type10減法100010減法110R-type10AND100100and000R-type10OR100101or001R-type10小於時設定101010小
於時設定slt111簡易的製作方案•ALU控制位元的控制是由ALUOp控制位元所決定•ALUOp是來決定不同的指令型態計算機組織與設計-軟硬體介面15ALUOpFunctfieldOperationALUOp1ALUOp0F5F4F
3F2F1F000XXXXXX010X1XXXXXX1101XXX00000101XXX00101101XXX01000001XXX01010011XXX1010111簡易的製作方案製作ALU控制單元建立真值表將表最佳化並轉成邏輯閘計算機組
織與設計-軟硬體介面16圖5.17簡易的製作方案圖5.17的資料路徑為5.13加上2個位元的ALUOp控制信號所有必需的控制線及7個1位元的控制訊號計算機組織與設計-軟硬體介面17圖5.16欄位0rsrtrdshamtfunct位元位置31-2625-2120-161
5-1110-65-0a.R型態指令欄位0rsrtaddress位元位置31-2625-2120-1615-0b.載入或儲存指令欄位0rsrtaddress位元位置31-2625-2120-1615-
0c.分支指令簡易的製作方案回想載入及儲存,分支及R形態指令的指令格式需要一個多工器來指出欲寫入的暫存器號碼因為目的暫存器在下列兩個位置之一:20-16位元位置(rt)供載入指令使用15-11位元位置(rd)供R形態指令使用計算機組織與設計-軟硬體介
面18圖5.27輸入和輸出訊號名稱R格式lwswBeq輸入Op50110Op40000Op30010Op20001Op10110Op00110輸出RegDst10XXALUSrc0110MemtoReg01XXRegWrite1100MemRead0100MemWrite0010Branch
0001ALUOp11000ALUOp00001名稱十進位的二進位的運算碼(opcode)運算碼Op5Op4Op3Op2Op1Op0R格式0000000lw35100011sw43101011beq4000100簡易的製作方案圖5.19展示含控制
單元及控制訊號的資料路徑(下一張投影片)根據控制單元的6調輸入(指運算碼(opcode)位元),我們可以控制這9條控制訊號線控制功能由真值表決定計算機組織與設計-軟硬體介面19圖5.19簡易的製作方案計算機組織與設計-軟硬體介面20簡易的製作方案執行R形態指令含有4個步驟,考慮
add$t1,$t2,$t3從指令記憶體擷取指令並且增加PC的值(圖5.21)由暫存器檔案讀出$t2及$t3兩個暫存器(圖5.22).在這個步驟中,主要控制單元會設定控制線。.根據功能碼(指令的功能欄位,位置在位元5-
0)產生的ALU功能,ALU會對從暫存器檔案讀出的資料進行運算。(圖5.23)用指令暫存器欄位(位元15-11)來決定目的暫存器(這個例子是$t1)計算機組織與設計-軟硬體介面21圖5.21簡易的製作方案計算機組織與設計-軟硬體介面22圖
5.22簡易的製作方案計算機組織與設計-軟硬體介面23圖5.23簡易的製作方案計算機組織與設計-軟硬體介面24圖5.24簡易的製作方案計算機組織與設計-軟硬體介面25簡易的製作方案載入指令可概分為5個步驟(圖5.25)例,考慮lw$t1,offset($t2):從指令記憶體擷取指令並
且增加PC的值從暫存器檔案讀取暫存器($t2)的值ALU將$t2及位移量相加將ALU計算後所得的值當作資料記憶體的位址把從記憶體單元中所讀到的值寫入暫存器檔案中,我們由指令的20-16位元來決定目的暫存器計算機組織與設計-軟硬體介面26圖5.25簡易的製作方案計算機組織與設計-軟硬
體介面27簡易的製作方案執行相等分支指令須4個步驟(圖5.26)例,考慮beq$t1,$t2,offset:從指令記憶體擷取指令並且增加PC的值由暫存器檔案讀出$t1及$t2兩個暫存器ALU會從暫存器檔案讀到的值進行減法運算,$PC的值再加到位移量上AL
U上的“0”輸出是用來決定要將那一個加法器的輸出結果寫到PC中計算機組織與設計-軟硬體介面28圖5.26簡易的製作方案計算機組織與設計-軟硬體介面29簡易的製作方案為什麼單一時脈週期的製作方式不被採用?每個指令的時脈週期都必須有相同長度(因此,CPI=1)計算機的運算處理指令中最
長的路徑將決定時脈週期的長度整體效能似乎不是很好範例:單一時脈計算機的效能,假設功能單元的運算時間如下:記憶體單元:2nsALU及加法器:2ns暫存器檔案(讀取或寫入):1ns下列的製作方式那一種會比較快?1.每個指令在一個固
定長度的時脈週期內運作完成2.每個指令在一個時脈週期內運作完成,但時脈週期長度是可變動計算機組織與設計-軟硬體介面30指令種類所用到的功能單元R格式指令擷取暫存器存取ALU暫存器存取載入字組指令擷取暫存器存取ALU記憶體存取暫存器存取儲存字組指令擷取暫存器存取AL
U記憶體存取分支指令擷取暫存器存取ALU跳躍指令擷取指令種類指令記憶體暫存器讀取ALU運算資料記憶體暫存器寫入總和R格式212016ns載入字組212218ns儲存字組21227ns分支2125ns跳躍22ns簡易的製
作方案範例(續)為了計算效能,假設我們使用下列指令的混合比例:24%載入,12%儲存,44%R形態指令,18%分支及2%跳躍指令解答1.CPU時脈週期為8ns.2.CPU時脈週期=8*24%+7*12%+6
*44%+5*18%+2*2%=6.3ns效能改進的比例為8/6.3=1.27.計算機組織與設計-軟硬體介面31簡易的製作方案範例假設我們有浮點指令單元:執行浮點加法需要8ns執行浮點乘法需要16ns所有功
能單元所需的時間如同上例。下列的製作方式那一種會比較快?•1.每個指令在一個固定長度的時脈週期內運作完成•2.每個指令在一個時脈週期內運作完成,但時脈週期長度是可變動為了計算效能,假設我們使用下列指令的混合比例:3
1%載入,21%儲存,27%R形態指令,5%分支,2%跳躍指令,7%浮點加法及7%FP浮點乘法計算機組織與設計-軟硬體介面32簡易的製作方案解答1.最長的指令為浮點乘法,其時脈週期為2+1+16+1=20ns2.浮點指令的加法須時2+1+8+1=12ns.CPU時脈週期=8*31%+7*
21%+6*27%+5*5%+2*2%+20*7%+12*7%=7.0ns效能改進的比例為20/7=2.9.計算機組織與設計-軟硬體介面35作業(12/8繳交)我們希望將JAL這個指令加到單一時脈週期。加入任何必要的
資料路徑及控制訊號。提示:修改圖5.19及圖5.20.計算機組織與設計-軟硬體介面37多重時脈的製作方法多重時脈製作方法中,每個執行步驟將花費一個時脈週期的時間。多重時脈設計的主要優點不同的指令可有不同的時脈週期數目只要在不
同的時脈週期,在一個指令的執行過程中,功能單元便能夠分享(這種分享可減少硬體的需求)計算機組織與設計-軟硬體介面38PCMemoryAddressInstruction�ordataDataInstruction�regist
erRegistersRegister#DataRegister#Register#ALUMemory�data�registerABALUOut多重時脈的製作方法多重時脈資料路徑的粗略輪廓(圖5.30)與單一時脈週期的資料路徑做比較,我們可以發現以下
的不同點:指令與資料儲存在同一記憶體單元只有一個ALU,不像單一時脈用到一個ALU和兩個加法器在每個主要的功能單元後面加上一個到數個的暫存器,保留其輸出值,我們將會在下個時脈週期用到這些資料計算機組織與設計-軟硬體介面細部輪廓計算機組織與設計-軟硬體介面39StepnameActio
nforR-typeinstructionsActionformemory-referenceinstructionsActionforbranchesActionforjumpsInstructionfetchIR=Memory
[PC]PC=PC+4InstructionA=Reg[IR[25-21]]decode/registerfetchB=Reg[IR[20-16]]ALUOut=PC+(sign-extend(IR[15-0])<<2)Execution,addressALUOut=Ao
pBALUOut=A+sign-extendif(A==B)thenPC=PC[31-28]IIcomputation,branch/(IR[15-0])PC=ALUOut(IR[25-0]<<2)jumpcompletionMemo
ryaccessorR-typeReg[IR[15-11]]=Load:MDR=Memory[ALUOut]completionALUOutorStore:Memory[ALUOut]=BMemoryreadcompletionLoad:Reg[IR[20-1
6]]=MDR多重時脈的製作方法可能的執行步驟及功能(圖5.35)每個指令的執行佔了3到5個步驟(也就是3–5週期)計算機組織與設計-軟硬體介面40圖5.33多重時脈的製作方法計算機組織與設計-軟硬體介面41多重時脈的製
作方法步驟1:指令擷取IR=Memory[PC];#從記憶體中擷取指令PC=PC+4;#計算下個指令的位址控制訊號需要拉起∕設定IorD=0MemReadIRWriteALUSrcA=0(送PC給ALU)ALUSrcB=01(送4給ALU)AL
UOp=00(ALU作加法運算)PCWrite注意PC的新值只有在新的時脈週期才可派上用場計算機組織與設計-軟硬體介面42多重時脈的製作方法步驟2:指令解碼(decode)與暫存器存取到目前為止,我們仍不清楚要執行的是什麼指令,所以我
們只能作一些無害的動作A=Reg[IR[25-21]];#讀取指定的暫存器B=Reg[IR[20-16]];ALUOut=PC+(sign-extend(IR[15-0])<<2);#計算分支目標位址控制訊號須被設定
:ALUSrcA=0ALUSrcB=11ALUOp=00(做ALU加法運算)計算機組織與設計-軟硬體介面43多重時脈的製作方法步驟3:執行,記憶體位址計算,或完成分支ALU會依據指令類別不同而對運算原作不
同的運算1.R-形態指令ALUOut=AopB;#完成指令所指定的op運算控制訊號須被設定:ALUSrcA=1ALUSrcB=00ALUOp=10(功能欄必須備用來決定ALU控制訊號的設定)2.記憶體參考:ALUOut=A+sign-extend(IR[15-0]);#toformthememor
yaddress控制訊號須被設定:ALUSrcA=1ALUSrcB=10ALUOp=00(造成ALU須作加法運算)計算機組織與設計-軟硬體介面44多重時脈的製作方法3.分支:if(A==B)PC=ALUOut;#使用ALU的ERO信號控制訊號需要拉起∕設定:ALUSr
cA=1ALUSrcB=00ALUOp=01(造成ALU做減法運算)PCCondWrite(如果ZERO被拉起,須更新PC的值)PCSource=01計算機組織與設計-軟硬體介面45多重時脈的製作方法步驟4.
記憶體存取或R-形態指令完成步驟1.記憶體存取:MDR=Memory[ALUOut];#載入指令orMemory[ALUOut]=B;#儲存指令控制訊號需要拉起∕設定:載入:IorD=1MemRead儲存:IorD=
1MemWrite2.R-形態指令:Reg[IR[15-11]]=ALUOut;#將內容放到結果暫存器控制訊號需要拉起∕設定:RegDst=1MemtoReg=0RegWrite計算機組織與設計-軟硬體介面46多重時脈的製作方法步驟5.完成記憶體讀取Reg[IR[2
0-16]]=MDR;#將載入資料寫入暫存器檔案控制訊號需要拉起∕設定:MemtoReg=1RegDst=0RegWrite計算機組織與設計-軟硬體介面計算機組織與設計-軟硬體介面計算機組織與設計-軟硬體介面循序邏輯(SequentialLogic)時脈
(clock)當一個元件的狀態需要更新時,時脈是必須的是一個具有固定週期的自由震盪訊號•Clockrate•Clockcycle邊緣觸發時脈方法(edge-triggerclocking)•升起或
落下的邊緣是有效的,並造成狀態改變計算機組織與設計-軟硬體介面時脈系統又稱同步系統當有效的時脈發生時,寫入狀態元件的訊號必須是固定的(不可以是正在改變的),訊號固定表示它是穩定的,並且其值不會改變直到輸入有了變化同步循序邏輯中,
狀態元件和組合邏輯方塊的關係•組合邏輯方塊的輸入來自一個狀態元件,並將輸出寫進另一個狀態元件計算機組織與設計-軟硬體介面邊緣觸發的一個優點邊緣觸發方法允許一個狀態元件能在同一個時脈週期被讀取及寫入,而不會產生可能破壞正確資
料的競賽狀況(racecondition)時脈週期必須夠長,使得輸入值在有效時脈邊緣觸發時能夠穩定計算機組織與設計-軟硬體介面記憶體元件所有記憶體元件都是存在著狀態輸出是由輸入及元件中的狀態來決
定也就是循序邏輯•正反器(flip-flop)•閂(latch)•暫存器檔案(registerfile)•記憶體(memory)計算機組織與設計-軟硬體介面沒有時脈的閂(latch)S-R閂(set-resetl
atch)是其他更複雜的記憶體元件的基礎由NOR閘(具有反向輸出的OR閘)R和S都為0時,產生Q及Q的反向S為1時,Q為1及Q的反向為0R為1時,Q為0及Q的反向為1S=R=0,Q及Q的反向維持不變(布林恆等率)S=R=1,不正確的結果計
算機組織與設計-軟硬體介面正反器(Flip-Flop)及閂(Latch)有時脈(clockpulse)輸入來觸發狀態的改變正反器和閂的差別在於狀態改變的時間點閂是輸入為真和適當改變的輸入時正反器的狀態只有在時脈的邊
緣發生改變正反器通常是用閂來建構的它們都是用來儲存訊號計算機組織與設計-軟硬體介面D型閂用NOR閘實做D型閂計算機組織與設計-軟硬體介面D型正反器計算機組織與設計-軟硬體介面暫存器檔案(registerfile)可由D型正反器加上一個讀寫埠的解碼器來建構具有兩個讀取埠及包含n個暫
存器的暫存器檔案,可以利用一對32位元寬的n-to-1多工器來時做計算機組織與設計-軟硬體介面暫存器檔案(寫入動作)計算機組織與設計-軟硬體介面靜態隨機存取記憶體(SRAM)StaticRandomAccessMemory計算
機組織與設計-軟硬體介面靜態隨機存取記憶體(SRAM)使用四個三態緩衝器形成的多工器計算機組織與設計-軟硬體介面靜態隨機存取記憶體(SRAM)計算機組織與設計-軟硬體介面靜態隨機存取記憶體(SRAM)