版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
高級計算機系統(tǒng)結構桂盛霖博士/副教授課程內(nèi)容:第1章計算機概要與技術第2章指令:計算機的語言第3章單周期MIPS處理器的設計第4章流水線MIPS處理器的設計第5章存儲系統(tǒng)及性能評估教材ComputerOrganizationandDesignTheHardware/SoftwareInterfaceDavidA.PattersonJohnL.Hennessy計算機組成與設計硬件/軟件接口機械工業(yè)出版社原書第4版第1章計算機概要與技術1.1引言1.2計算機分類1.3軟硬件的關系1.4性能1.5功耗1.6性能測試程序1.7Amdahl定律1.1引言1.用二進制代碼表示程序和數(shù)據(jù);2.計算機采用存儲程序的工作方式;3.計算機硬件由存儲器、運算器、控制器、輸入設備和輸出設備等五大部件組成。主要思想包括:馮·假設依曼(Von·Nouma)美籍匈牙利數(shù)學家1903–19571.1引言馮諾依曼體系結構1.包括了CentralProcessingUnit單元:算術邏輯單元處理器存放器控制單元2.包括了存儲器〔數(shù)據(jù)和指令〕3.輸入輸出機制兩個核心:數(shù)據(jù)和對數(shù)據(jù)的操作1.1引言哈弗體系結構1.也是存儲程序系統(tǒng)2.有獨立的數(shù)據(jù)存儲區(qū)和數(shù)據(jù)總線3.有獨立的指令存儲區(qū)和指令總線典型處理器:DSP1.2計算機的分類及特性桌面計算機〔Desktop/LaptopComputer〕通用性應用構成CPU、內(nèi)存、硬盤、鼠標、鍵盤、顯示器等主要指標性能:能運行多快根本功能〔擴展功能〕價格1.2計算機應用的分類及特性效勞器〔ServerComputer〕OneRack-MountPCUnit大規(guī)模應用效勞文件存儲、計算、業(yè)務處理等主要指標性能可靠性、有效性能耗、價格1.2計算機應用的分類及特性嵌入式計算機〔EmbeddedComputer〕作為一個大系統(tǒng)的一局部主要指標性能〔實時性〕功耗價格1.4性能響應時間-Responsetime從提出請求到被執(zhí)行的時間吞吐率-Throughput單位時間內(nèi)所做的工作提高響應時間和吞吐率的方法?用更快的處理器用更多的處理器點對點的到達時間Concorde最好旅客吞吐率747最好計算機性能的定義針對單任務針對數(shù)據(jù)中心1.4性能吞吐率和響應時間下面兩種改進計算機系統(tǒng)的方式,能否增加其吞吐率或減少其響應時間?將計算機中的處理器更換為更高速的型號增加多個處理器來分別處理獨立的任務,如搜索萬維網(wǎng)答:一般說來,降低響應時間都可以增加吞吐率。方式1同時改進了響應時間和吞吐率。盡管方式2不會使任務完成更快,只會增加吞吐率。但是當需要處理更多任務時,系統(tǒng)可能需要后續(xù)請求排隊。在這種情況下,增加了吞吐率,也就改進了響應時間。1.4性能CPU時間-CPUtime執(zhí)行某一任務在CPU的花費的時間時鐘周期-ClockcycleClockperiod
CPU時間=CPU時鐘周期數(shù)×時鐘周期改進性能的方法減少時鐘周期數(shù);增加時鐘頻率;1.4性能Example計算機A:2GHz,CPU時間10秒設計計算機B:目標:CPU時間縮短為6秒方法:提高時鐘頻率,但時鐘周期數(shù)會變?yōu)橛嬎銠CA的1.2倍計算機B的時鐘頻率應為多少?Example
指令性能
CPI〔Clockcycleperinstruction〕表示執(zhí)行每條指令所需的平均時鐘周期數(shù),是一個程序全部指令所用時鐘周期數(shù)的平均值。
CPIExample計算機A:時鐘周期=250ps,CPI=2.0計算機B:時鐘周期=500ps,CPI=1.22臺計算機的ISA〔指令集架構〕相同,但實現(xiàn)方式不同哪個計算機更快?快多少?
CPIExample
代碼段的比較電子科技大學計算機科學與工程學院
每類指令的CPIABCCPI123代碼序列每類指令的數(shù)量ABCIC指令數(shù)(代碼序列1)212IC指令數(shù)(代碼序列2)411例:總的CPI的計算編譯器設計者試圖在兩個代碼之間進行選擇。硬件設計者給出了如下數(shù)據(jù):對于某行高級語言語句的實現(xiàn),兩個代碼序列所需指令數(shù)量如下:代碼段的比較電子科技大學計算機科學與工程學院
代碼序列1IC=2+1+2=5時鐘周期數(shù)=2×1+1×2+2×3=10CPI=10÷5=2.0指令類型ABCCPI123IC指令數(shù)(代碼序列1)212IC指令數(shù)(代碼序列2)411哪個代碼序列執(zhí)行的指令數(shù)更多,哪個執(zhí)行速度更快,每個代碼CPI是多少?代碼段的比較電子科技大學計算機科學與工程學院
代碼序列2IC=4+1+1=6時鐘周期數(shù)=4×1+1×2+1×3=9CPI=9÷6=1.51.4性能電子科技大學計算機科學與工程學院
比較2臺計算機性能時應考慮三個因素:指令數(shù):使用仿真器軟件工具可測量出。CPI:與計算機各種設計細節(jié)密切相關,以及應用程序中不同類型指令所占的比例。時鐘頻率〔硬件手冊通常直接給出〕1.4性能電子科技大學計算機科學與工程學院
記住:1.只用一種因素〔如指令數(shù)〕去評價性能是危險的。當比較兩臺計算機時,必須考慮全部三個因素。2.唯一能被完全可靠測量的計算機性能指標是時間。3.對指令集減少指令數(shù)的改進可能降低時鐘周期或提高CPI,抵消了改進的效果。4.指令數(shù)最少的代碼其執(zhí)行速度未必是最快的。理解程序性能電子科技大學計算機科學與工程學院
程序指令數(shù)、CPI算法編程語言指令數(shù)、CPI編譯程序指令數(shù)、CPIISA指令數(shù)CPI時鐘頻率1.6性能測試程序MIPS-MillionsofInstructionsperSecond用相同的指令集比較兩臺機器(A,B),MIPS一般是公平的MIPS可能是一個“無意義的性能指標〞機器A有一條計算平方根的特殊指令,它執(zhí)行需要100個時鐘周期機器B沒有這種指令---它計算平方根用軟件方式即用加、乘、移位簡單指令〔一般執(zhí)行需要1個時鐘周期〕編程實現(xiàn)老工業(yè)性能指標:MIPS1.6性能測試程序不同類型的基準測試程序〔benchmarks〕核心測試程序:從實際的程序中抽取少量較短的關鍵程序框架代碼構成,這些代碼的執(zhí)行直接影響程序總的執(zhí)行時間。如LivermoreLoops和Linpack。小測試程序:代碼在10~100行,具有特定目的測試程序。如SieveofErastosthenes,Puzzle和Quieksort。綜合測試程序:對一大套應用程序中的操作和操作數(shù)的執(zhí)行頻率進行統(tǒng)計,得到平均執(zhí)行頻率,再按這個頻率編制的模擬測試程序。如Whetstone和Dhrystone。基準測試程序集:選擇一組有代表性的不同類型應用程序,集中起來構成基準測試程序集,以有效評測計算機處理各種應用的性能。這種測試程序集合也稱為測試程序組件〔benchmarksuites〕。如SPEC,TPC。SPEC-TheSystemPerformanceEvaluationCooperative一個開放性的非贏利組織1988年由工作站廠商HP,DEC,MIPS,SUN共同發(fā)起,以滿足市場迫切需要的標準化性能測試。已成為最成功的性能測試標準化組織,有40個公司成員。SPEC'sPhilosophy目標:保證市場有一套公平和實用的指標來區(qū)分不同的候選系統(tǒng)。根本方法:提供基于現(xiàn)有應用程序的一套標準化源代碼作為基準測試程序集。1.6性能測試程序1.6性能測試程序電子科技大學計算機科學與工程學院
SPECCPU基準測試程序SPEC-SystemPerformanceEvaluationCooperativeSPECCPU200612個整數(shù)基準測試程序集17個浮點數(shù)基準測試程序集1.6性能測試程序CPU-intensivebenchmarksSPEC89SPEC92SPEC95SPEC2000SPECCPU2006(12CINT2006,17CFP2006)
graphics-intensivebenchmarksSPEC2000SPECviewperfisusedforbenchmarkingsystemssupportingtheOpenGLgraphicslibrarySPECapcconsistsofapplicationsthatmakeextensiveuseofgraphics.31IntegerprogramsFloating-pointprogramsC:9C++:3Fortran:6C++:4C:3C/Fortran:41.6性能測試程序ServerBenchmarks由于Server有不同的效勞功能,因此有多類benchmarks:SPECrate—processingrateofamultiprocessor面向Server的處理器吞吐量的benchmarks,SPECCPU2000使用了SPECCPUbenchmarks,通過運行多個CPU基準測試程序副本來獲得多處理機的處理速率(SPECrate)。SPECSFS--fileserverbenchmark:測試網(wǎng)絡文件系統(tǒng)的性能,包括磁盤、IO和處理器的性能。SPECWeb--Webserverbenchmark:模擬多個用戶請求Server的靜態(tài)和動態(tài)頁面。1.6性能測試程序計算機性能通常用峰值性能〔Peakperformance〕和持續(xù)性能〔Sustainedperformance〕來評價。峰值性能是指在理想情況下計算機系統(tǒng)可獲得的最高理論性能,它不能反映出系統(tǒng)的實際性能。實際性能又稱持續(xù)性能,其值只有峰值性能的5%~35%,這是因為實際程序運行時會受到硬件結構、操作系統(tǒng)、算法設計和編程等因素的影響。1.7Amdahl定律計算機設計最重要和普遍原那么功耗、資源分配、性能、可靠性簡化常用事件,速度能夠更快例如:CPU中兩個數(shù)相加,結果可能產(chǎn)生溢出,溢出情況較少,不溢出才是常見情況。因此,可以通過簡化不溢出相加的操作來提高機器的性能。例如:處理器中的取指和譯碼單元要比乘法單元使用得更加頻繁,因此,應注重這兩個單元的性能設計。量化這個原那么的根本定律:Amdahl’sLaw1.7Amdahl定律采用更快的執(zhí)行方式后所獲得的系統(tǒng)性能提高,與這種執(zhí)行方式的使用頻率或占總執(zhí)行時間的比例有關。Example1.7Amdahl定律Amdahl定律可以闡述為:系統(tǒng)中某一部件由于采用某種更快的執(zhí)行方式后所獲得系統(tǒng)性能的提高,與這種執(zhí)行方式的使用頻率或占總執(zhí)行時間的比例有關。Amdahl定律定義了一臺計算機系統(tǒng)采用某種改進措施所取得的加速比。Amdahl定律定義了一臺計算機系統(tǒng)采用某種改進措施所取得的加速比:1.7Amdahl定律Amdahl定律中,加速比與兩個因素有關:在原有的計算機上,能被改進的局部在總執(zhí)行時間中所占的比例,即這個值稱為改進比例,記為Fe,它總小于等于1。例如,如果一個任務在原來機器上的執(zhí)行時間為60s,其中20s的執(zhí)行時間可以使用改進措施,那么Fe就是20/60=1/3。1.7Amdahl定律b.改進局部采用改進措施后,相比沒有采用改進措施前性能提高的倍數(shù),即
這個值稱為改進加速比,記為Se,它總大于1。例如,在原來的條件下程序的某一局部執(zhí)行時間為5s,而改進后這一局部只需要2s,那么Se是5/2。我們可以得出如下結論:1.7Amdahl定律〔1〕改進后整個任務的執(zhí)行時間Tn為:其中T0為改進前的整個任務的執(zhí)行時間?!?〕改進后整個系統(tǒng)的加速比Sn為:
上面式子中〔1-Fe〕表示不可改進局部,我們做以下分析:1.當Fe為0,即沒有可改進局部時,Sn為1;1.7Amdahl定律2.當Fe為1,即全可改進局部時,Sn=Se,所以性能的提高幅度等于改進后性能提高的倍數(shù)。假設假設改進前是單核,改進后是4核,且Fe=1,那么Sn=4.加速比Sn為:問題是,上面是理想情況,考慮Fe=3/4.即源程序的3/4的局部都可以并行,只有1/4的程序必須串行。那么在這種情況Sn最多為多少?可以看出無論采用幾核處理器,加速比不會超過4.1.7Amdahl定律3.當時,那么,因此,可獲取性能改善極限值受Fe值的約束。加速比Sn為:1.7Amdahl定律下面舉例子來說明Amdahl定律的應用。【例1-1】假定新的處理器采用了改進措施,新處理器處理Web應用程序的運行速度是原來處理器的10倍,同時假定新處理器有40%的時間用于計算,另外60%的時間用于I/O操作。那么改進性能后總的加速比是多少?
解:由題意可知:Fe=40%=0.4,Se=10
1.7Amdahl定律【例1-2】試分析采用哪種設計方案實現(xiàn)求浮點數(shù)平方根FPSRQ(是FP運算的子集)對系統(tǒng)性能提高更大。假定FPSRQ操作占整個程序執(zhí)行時間的20%。一種設計方案是增加專門的FPSRQ硬件,可以將FPSRQ操作的速度加快到10倍;另一種設計方案是提高所有FP運算指令的執(zhí)行速度,使得FP指令的執(zhí)行速度加快為原來的1.6倍,設FP運算指令在總執(zhí)行時間中占50%。試比較這兩種設計方案。1.7Amdahl定律
解:對這兩種設計方案的加速比分別進行計算。
增加專門FPSRQ硬件方案:Fe=20%=0.2,Se=10
提高所有FP運算指令速度方案:Fe=50%=0.5,Se=1.6
根據(jù)結果判斷,提高所有FP運算指令速度的方案要好一些,這是由于該測試程序中浮點操作所占比重較大。謬誤與陷阱陷阱在改進計算機的某個方面時期望總性能的提高與改進大小成正比。Amdahl定律:系統(tǒng)中對某一部件采用更快執(zhí)行方式所能獲得的系統(tǒng)性能改進程度,取決于這種執(zhí)行方式被使用的頻率,或所占總執(zhí)行時間的比例。推論:加速最常見的事件。謬誤與陷阱謬誤利用率低的計算機功耗低10%的利用率會消耗約2/3的峰值功率陷阱:用性能公式的一個子集去度量性能。簡單地只使用時鐘頻率、每秒鐘執(zhí)行的指令數(shù)或CPI之一去評價性能。小測驗測試內(nèi)容計算機A計算機B指令數(shù)100億80億時鐘頻率4GHz4GHzCPI1.01.11.哪臺計算機的MIPS更高?2.哪臺計算機更快?某程序在2臺計算機上的性能測量結果為:MIPS:Millioninstructionspersecond百萬條指令每秒小測驗解答電子科技大學計算機科學與工程學院
計算機A
計算機B
結論:計算機A的MIPS更高小測驗解答電子科技大學計算機科學與工程學院
計算機A
計算機B結論:計算機B更快
1.假設高速緩存Cache工作速度為主存的5倍,且Cache被訪問命中的概率為90%,那么采用Cache后,能使整個存儲系統(tǒng)獲得多高的加速比?2.P37,習題1.10.1-1.10.3,習題1.12作業(yè)高級計算機系統(tǒng)結構電子科技大學計算機科學與工程學院
第2章指令:計算機的語言5354第2章指令:計算機的語言2.1引言2.2計算機硬件的操作2.3計算機硬件的操作數(shù)2.4指令的表示2.5計算機硬件對過程的支持2.6MIPS尋址模式總結2.7并行與指令:同步2.8翻譯并執(zhí)行程序2.9ARM指令集2.10X86指令集2.1引言電子科技大學計算機科學與工程學院
指令集〔InstructionSet〕一臺計算機所能執(zhí)行全部指令的集合。精簡指令集計算機RISCRISC–ReducedInstructionSetComputer指令長度固定單周期執(zhí)行指令流水線處理硬件接線式控制指令集學習容易舉一反三:1.硬件技術相似性2.根本操作普通性552.1引言電子科技大學計算機科學與工程學院
復雜指令集計算機CISCCISC–ComplexInstructionSetComputer指令復雜,長度可變多種內(nèi)存尋址方式微程序結構本章選取MIPS公司指令、ARM指令〔和MIPS非常類似〕和IntelX86指令的典型特征進行介紹。562.3計算機硬件的操作數(shù)電子科技大學計算機科學與工程學院
在MIPS體系結構中:算術運算類指令的操作數(shù)只能來自存放器。存放器大小為32位。典型的存放器數(shù)量是32個。設計原那么2:越少越快大量的存放器可能會使時鐘周期變長。57大量的數(shù)據(jù)存放在存儲器中,需要數(shù)據(jù)傳送指令在存放器和存儲器之間傳遞數(shù)據(jù)…109876543210存儲器存取電子科技大學計算機科學與工程學院
…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址MIPS的一個字是4個字節(jié)Intel的一個字是2個字節(jié)一個字是的地址用其最低地址表示。在MIPS中,字的起始地址必須是4的倍數(shù)。這
叫對齊限制。58類似一維數(shù)組…109876543210存儲器存取電子科技大學計算機科學與工程學院
…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址將數(shù)據(jù)從存儲器拷貝到存放器的指令,叫取數(shù)指令59類似一維數(shù)組將數(shù)據(jù)從存放器拷貝到存儲器的指令,叫存數(shù)指令lw
指令:loadwordsw指令:storeword如何解釋?01020304H?04030201H?存儲器存取電子科技大學計算機科學與工程學院
大端對齊〔Bigendian〕較高的有效字節(jié)存放在較低的存儲器地址,較低的有效字節(jié)存放在較高的存儲器地址?!?09876543210…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址字數(shù)據(jù):01020304H05060708HMIPS采用大端對齊60存儲器存取電子科技大學計算機科學與工程學院
小端對齊〔Littleendian〕較高的有效字節(jié)存放在較高的存儲器地址,較低的有效字節(jié)存放在較低的存儲器地址?!?09876543210…0bH0aH09H08h07H06H05H04H03H02H01HMemory地址字數(shù)據(jù):04030201H08070605HIntel采用小端對齊612.4
指令的表示電子科技大學計算機科學與工程學院
add/subrd,rs,rt#rd←rsoprt算術類62R型指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650參與操作的3個操作數(shù)均是存放器操作數(shù);R型指令的op〔操作碼〕全為0,具體功能由func〔功能碼〕確定;shamt:位移量,僅對移位指令有效;MIPS指令源操作數(shù)存放器目的操作數(shù)存放器硬件設計的根本原那么電子科技大學計算機科學與工程學院
設計原那么4:優(yōu)秀的設計需要適宜的折中方案。當2種方案各有優(yōu)缺點而又無法兼顧時,應進行必要的折中。oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650問題:如果源操作數(shù)是一個常數(shù),且大小超過25,如何解決?希望所有指令長度相同,又有相同的指令格式,造成了沖突。63MIPS匯編指令電子科技大學計算機科學與工程學院
andirt,rs,imm#rt←rsopimm(零擴展)算術類64I型指令格式有1個源操作數(shù)是立即數(shù);oprsrtimmediate6位5位5位16位312625212016150rs:第1個源操作數(shù),是存放器操作數(shù);rt:目的存放器;Immediate:第2個源操作數(shù),立即數(shù);MIPS設計者選擇:指令長度相同,但不同類型指令格式不同。MIPS匯編指令電子科技大學計算機科學與工程學院
數(shù)據(jù)傳輸類lwrt,offset(rs)#rt←mem[rs+offset])取字
swrt,offset(rs)#mem[rs+offset])←rt存字
lhrt,offset(rs)#rt←mem[rs+offset])取半字
shrt,offset(rs)#mem[rs+offset])←rt存半字
65I型指令格式oprsrtimmediate6位5位5位16位312625212016150將MIPS匯編語言翻譯成機器語言電子科技大學計算機科學與工程學院
lw$t0,1200($t1)lw指令的格式:
oprsaddress16位5位6位1000110100100000100101100001200rt01000rtrs66MIPS匯編指令電子科技大學計算機科學與工程學院
數(shù)據(jù)傳輸類lbrt,offset(rs)#rt←mem[rs+offset])取字節(jié)
sbrt,offset(rs)#mem[rs+offset])←rt存字節(jié)
llrt,offset(rs)#rt←mem[rs+offset])原子交換的前半局部Luirt,imm#rt←imm<<16把立即數(shù)放到高16位
scrt,offset(rs)#mem[rs+offset])←rt,rt←0/1原子交換的后半局部67MIPS匯編指令電子科技大學計算機科學與工程學院
and/or/xorrd,rs,rt#rd←rsoprtsllrd,rt,sa#rd←rt<<sa根據(jù)常數(shù)左移相應位
andi/ori/xorirt,rs,imm#rt←rsopimm(零擴展)邏輯運算類srlrd,rt,sa#rd←rt>>sa根據(jù)常數(shù)右移相應位
邏輯操作C操作符Java操作符MIPS操作符左移<<<<sll右移>>>>>srl按位與&&and,andi按位或||or,ori按位取反~~nor68左移4位電子科技大學計算機科學與工程學院
移位操作〔Shift〕:邏輯左移和邏輯右移將1個字中的所有位都左移或右移:移出的位丟棄;移位后空出的位補0;00000000000000000000000000000101
000000000000000000000000010100000000移出丟棄末位補0Example:MIPS匯編指令6970MIPS匯編指令sllrd,rt,sa#rd←rt<<sa根據(jù)常數(shù)左移相應位
srlrd,rt,sa#rd←rt>>sa根據(jù)常數(shù)左移相應位
R型指令oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650sll$t2,$s0,4#$t2←$s0<<4001610406位5位5位5位5位6位312625212016151110650對應的編碼:$t24$s071MIPS中32位立即數(shù)和地址的尋址例題:如何加載00000000001111010000100100000000到存放器$s0?首先我們用lui指令加載高16位,十進制表示是61:lui$s0,61,執(zhí)行上面指令后,存放器s0的值為:00000000001111010000000000000000下一步是插入低16位,十進制表示是2304:ori$s0,$s0,2304MIPS匯編指令電子科技大學計算機科學與工程學院
beqrs,rt,imm
#if(rs==rt)PC←imm*4+4+PCbners,rt,imm#if(rs!=rt)PC←
imm*4+4+PCsltrd,rs,rt#if(rs<rt)rd=1,elserd=0條件分支類slti$t0,$s2,10#if$s2<10then$t0=1else$t0=0slt$t0,$s3,$s4#if$s3<$s4then$t0=1else$t0=0條件轉(zhuǎn)移沒有“小于那么分支〞指令,因為這種指令過于復雜,會延長時鐘周期時間。72MIPS指令格式電子科技大學計算機科學與工程學院
op:確定指令的功能;immediate:計算相對轉(zhuǎn)移地址;73I型指令格式oprsrtimmediate6位5位5位16位312625212016150條件分支類MIPS對所有的條件分支使用PC相對尋址。例:
跳轉(zhuǎn)地址計算公式為:Exit地址=bne指令地址+4+M×451617M6位5位5位16位312625212016150MIPS匯編指令電子科技大學計算機科學與工程學院
MIPS編譯器使用slt,slti,beq,bne和固定值0來創(chuàng)立所有的比較條件:74條件語句相等beq$t0,$s3,label不等bne$t0,$s3,label小于slt$t0,$s3,$s4(if$s3<$s4then$t0=1)beq$t0,$s3,label($s3=1)小于等于先判斷是否相等,再判斷是否小于。大于先判斷是否小于,再判斷是否相等。大于等于判斷是否小于有符號比較和無符號比較的比照假設存放器中$s0中的二進制數(shù)為:1111111111111111…1111存放器中$s1中的二進制數(shù)為:0000000000000000…0001誰大誰?。?取決于$s0中的數(shù)是正數(shù)還是負數(shù)?slt$t0,$s0,$s1;#$t0=1,$s0=-1sltu$t0,$s0,$s1;#$t0=0,$s0=42949672951075sltu指令的用處?利用sltu指令可以減低檢驗下標是否越界的開銷:如果$s1≥$t2或者$s1是負數(shù)那么跳轉(zhuǎn)到OutofBound。有符號比較和無符號比較的比照76sltu指令的用處?利用sltu指令可以減低檢驗下標是否越界的開銷:如果$s1≥$t2或者$s1是負數(shù)那么跳轉(zhuǎn)到OutofBound。僅使用一條sltu指令可做兩種檢查:sltu$t0,$s1,$t2;
#$t0=1
if$s1≥length
or$s1<0beq$t0,$zero,OutofBound;
#ifbad,gotoerrorMIPS匯編指令電子科技大學計算機科學與工程學院
jimme#PC←PC的高4位與imme*4進行拼接
jalimme#ra←PC+4,PC←PC的高4位與imme*4進行拼接
jrrs#PC←rs無條件跳轉(zhuǎn)類(形成絕對地址)77MIPS指令格式電子科技大學計算機科學與工程學院
J型指令op:確定指令的功能;address:轉(zhuǎn)移地址;opaddress6位26位3126250782例:
100006bits26bits跳轉(zhuǎn)地址為:PC的高4位:10000×44位28位32位Loop:sll$t1,$s3,2
add$t1,$t1,$s6
lw$t0,0($t1)
bne$t0,$s5,Exit
addi$s3,$s3,1
JLoopExit:79MIPS指令格式假設Loop的地址為:0x80000,那么循環(huán)的機器碼為:0x8000000199200x80004092290320x80008359800x8000B582120x800108191910x800142200000x80018…bneJMIPS匯編指令–R型指令電子科技大學計算機科學與工程學院
指令[31:26]op[25:21]rs[20:16]rt[15:11]rd[10:6]shamt[5:0]funct功能add000000rsrtrd00000100000寄存器加sub000000rsrtrd00000100010寄存器減and000000rsrtrd00000100100寄存器與or000000rsrtrd00000100101寄存器或xor000000rsrtrd00000100110寄存器異或sll00000000000rtrdsa000000左移srl00000000000rtrdsa000010邏輯右移sra00000000000rtrdsa000011算術右移jr000000rs000000000000000001000寄存器跳轉(zhuǎn)80MIPS匯編指令–I型指令電子科技大學計算機科學與工程學院
指令[31:26][25:21][20:16][15:0]功能addi001000rsrtimmediate立即數(shù)加andi001100rsrtimmediate立即數(shù)與ori001101rsrtimmediate立即數(shù)或xori001110rsrtimmediate立即數(shù)異或lw100011rsrtimmediate取字數(shù)據(jù)sw101011rsrtimmediate存字數(shù)據(jù)beq000100rsrtimmediate相等轉(zhuǎn)移bne000101rsrtimmediate不等轉(zhuǎn)移lui00111100000rtimmediate設置高位81MIPS匯編指令–J型指令電子科技大學計算機科學與工程學院
指令[31:26][25:0]功能j000010address跳轉(zhuǎn)jal001100address調(diào)用82MIPS的通用存放器電子科技大學計算機科學與工程學院
寄存器名寄存器號用途$zero0常數(shù)0$at1匯編器專用$v0~$v12~3函數(shù)調(diào)用的返回值寄存器$a0~$a34~7函數(shù)調(diào)用的參數(shù)寄存器$t0~$t78~15臨時變量,函數(shù)調(diào)用時不需要保存和恢復$s0~$s716~23函數(shù)調(diào)用時需要保存和恢復的寄存器變量$t8~$t924~25臨時變量,函數(shù)調(diào)用時不需要保存和恢復83MIPS的通用存放器電子科技大學計算機科學與工程學院
寄存器名寄存器號用途$k0~$k126~27操作系統(tǒng)專用$gp28全局指針變量(GlobalPointer)寄存器$sp29堆棧指針變量(StackPointer)寄存器$fp30幀指針變量(FramePointer)寄存器$ra31返回地址(ReturnAddress)寄存器注:除0號和31號存放器外,其余存放器并無本質(zhì)區(qū)別。842.5計算機硬件對過程的支持電子科技大學計算機科學與工程學院
過程/函數(shù)(procedure/function)一段子程序,函數(shù)通常具有返回值。過程/函數(shù)是程序員進行結構化編程的工具,有助于提高程序的可重用性。調(diào)用過程/函數(shù)時必須解決的問題:參數(shù)放在哪里?存放器Or存儲器?任務完成后結果放在哪里?存放器Or存儲器?控制如何轉(zhuǎn)移到過程?如何返回?852.5計算機硬件對過程的支持電子科技大學計算機科學與工程學院
由于存放器是保持數(shù)據(jù)最快的單元,應盡可能多地使用存放器。MIPS為過程調(diào)用分配32個存放器時遵循以下約定:$a0-$a3:用于傳遞參數(shù)的4個參數(shù)存放器;$v0-$v1:用于返回值的2個值存放器;$ra:用于返回起始點的返回地址存放器;$t0-$t9:臨時存放器,不必保存;$s0-$s7:一旦被使用,由被調(diào)用者保存和恢復862.5計算機硬件對過程的支持電子科技大學計算機科學與工程學院
回憶jalProcedureAddress
指令格式因此調(diào)用程序?qū)?shù)值放在$a0-$a3,然后使用jalx跳轉(zhuǎn)到過程x,被調(diào)用者將執(zhí)行結果放在$v0和$v1,然后使用jr$ra指令將控制返回給調(diào)用者。87指向調(diào)用點的地址將返回地址保存在$ra中,然后進行跳轉(zhuǎn)回憶jr$ra指令格式:存放器跳轉(zhuǎn)指令無條件跳轉(zhuǎn)到存放器$ra指定的地址使用更多存放器電子科技大學計算機科學與工程學院
任務完成后,調(diào)用者使用的任何存放器都必須恢復到過程調(diào)用前所存儲的值。因此需將存放器的值換出到存儲器中進行保存。最理想的方式-堆棧88堆棧(Stack)堆棧是內(nèi)存中指定的一塊區(qū)域。Stack0n$sp棧頂棧底對堆棧操作通常是先進后出。堆棧增長方向2.6MIPS的尋址模式總結電子科技大學計算機科學與工程學院
尋址模式/方式尋找操作數(shù)或操作數(shù)地址的方式立即數(shù)尋址〔Immediateaddressing〕操作數(shù)是指令中的常數(shù)oprsrtimmediate89MIPS的尋址方式包括:電子科技大學計算機科學與工程學院
存放器尋址〔Registeraddressing〕操作數(shù)是存放器。oprsrtrdfunc存放器902.6MIPS的尋址模式總結電子科技大學計算機科學與工程學院
基址尋址〔Baseaddressing〕oprsrtaddressRegister+MemoryXXX16位912.6MIPS的尋址模式總結操作數(shù)在內(nèi)存中,其地址是指令中基址存放器和常數(shù)的和電子科技大學計算機科學與工程學院
PC相對尋址〔Baseaddressing〕oprsrtaddressPC+Memory字<<216位922.6MIPS的尋址模式總結地址是PC和指令中常數(shù)的和4電子科技大學計算機科學與工程學院
偽直接尋址〔Baseaddressing〕opaddress<<226位28位4位PCMemory字932.6MIPS的尋址模式總結跳轉(zhuǎn)地址是指令中26位字段和PC高位相連而成2.7并行與指令:同步電子科技大學計算機科學與工程學院任務需要同步,否那么可能產(chǎn)生“數(shù)據(jù)競爭〞,導致讀數(shù)據(jù)錯誤而引起程序運行結果的改變。94當任務之間相互獨立時,任務的并行執(zhí)行很容易。往往任務之間需要協(xié)作通常某些任務寫的結果是其他任務需要讀取的值讀任務需要知道寫任務什么時候完成了寫操作,才能平安讀數(shù)據(jù)2.7并行與指令:同步電子科技大學計算機科學與工程學院鏈接取數(shù)〔Loadlink〕
將offset(rs)的內(nèi)容存入rt,并開始原子操作。
如果成功執(zhí)行:將rt中的內(nèi)容存入offset(rs),并將rt的值置1;如果失敗,rt中的內(nèi)容不存入,rt的值置0。條件存數(shù)〔Loadlink〕95計算機中,同步機制要依賴硬件提供的同步指令本節(jié)重點討論加鎖和解鎖。順序使用鎖單元“成功和失敗〞指的是由鏈接取數(shù)指定的鎖單元在條件存數(shù)執(zhí)行前已經(jīng)被改變,那么條件存數(shù)執(zhí)行失敗。2.7并行與指令:同步電子科技大學計算機科學與工程學院
例:將$s4中的值和$s1指向的鎖單元的值發(fā)生原子交換。
原子交換96972.7并行與指令:同步上述同步機制適用于多處理器系統(tǒng),也適用于單處理器上的多進程??赡艽嬖趕c指令始終無法成功執(zhí)行的情況:重復的頁錯誤;ll和sc指令相隔較遠;2.8翻譯并執(zhí)行程序
C程序匯編語言程序目標文件:機器語言模塊目標文件:庫程序〔機器語言〕可執(zhí)行文件:機器語言程序編譯器匯編器鏈接器加載器MemoryC語言的翻譯層次。98.c.s.o.a.so偽指令blt小于那么分支sltbne目標文件包括:1.目標文件頭:描述大??;2.正文段:代碼;3.靜態(tài)數(shù)據(jù)段:程序生命周期內(nèi)的數(shù)據(jù);4.重定位信息:標記了加載進內(nèi)存時依賴絕對地址的指令和數(shù)據(jù);5.符號表:描述外部引用;6.調(diào)試信息1.將代碼和數(shù)據(jù)象征性放入內(nèi)存;2.決定數(shù)據(jù)和指令標簽地址;3.修補內(nèi)外部引用將可執(zhí)行文件加載進磁盤執(zhí)行匯編器:匯編語言程序->目標文件目標文件:包括機器語言指令、數(shù)據(jù)和指令正確放入內(nèi)存所需要的信息匯編器將分支和數(shù)據(jù)傳輸指令中用到的標號都放入符號表〔SymbolTable〕中UNIX中的目標文件通常包含以下局部:目標文件頭,描述目標文件其他局部的大小和位置正文段靜態(tài)數(shù)據(jù)段重定位信息符號表調(diào)試信息992.8翻譯并執(zhí)行程序鏈接器:把所有獨立匯編的文件拼接在一起鏈接器的工作分三個步驟:將代碼和數(shù)據(jù)象征性放入內(nèi)存;決定數(shù)據(jù)和指令標簽的地址;修補內(nèi)部和外部引用。鏈接器使用每個目標模塊中的重定位信息和符號表來解析所有標簽。所以鏈接器非常像一個編輯器,尋址所有舊地址并用絕對引用的新地址取代他們。鏈接器產(chǎn)生可執(zhí)行文件。1002.8翻譯并執(zhí)行程序2.9ARM指令集嵌入式設備領域和移動互聯(lián)網(wǎng)領域最流行的指令集架構是ARMARM和MIPS同為RISC指令集,同年發(fā)布并遵循相同的簡潔設計哲學101ARMMIPS發(fā)布時間19851985指令大小3232尋址空間32位32位數(shù)據(jù)對齊對齊對齊數(shù)據(jù)尋址模式93整數(shù)寄存器15個32位通用寄存器31個32位通用寄存器I/O存儲器映射存儲器映射2.9ARM指令集102指令名ARMMIPS寄存器-寄存器加法addaddu,addiu加法(溢出捕獲)adds,swivsadd減法subsubu減法(溢出捕獲)subs,swivssub乘法mulmult,multu除法-div,divu與andand或orror異或eorxor取寄存器高位-lui邏輯左移lslsll邏輯右移lsrsrl算術右移asrsra比較cmp,tst,teqslt,sltu2.9ARM指令集103指令名ARMMIPS數(shù)據(jù)傳輸取有符號字節(jié)ldrsblb取無符號字節(jié)ldrblbu取有符號半字ldrshlh取無符號半字ldrhlhu取字ldrlw存字節(jié)strbsb存半字strhsh存字strsw讀寫特殊寄存器mrs,msrmove原子交換swp,swpbll,scARM的存放器-存放器指令和數(shù)據(jù)傳輸指令和MIPS是等價的2.9ARM指令集104尋址模式比照尋址模式ARMv.4MIPS寄存器操作數(shù)XX立即數(shù)操作數(shù)XX寄存器+偏移XX寄存器+寄存器X-寄存器+寄存器倍乘X-寄存器+偏移和更新寄存器X-寄存器+寄存器和更新寄存器X-自增,自減X-相對PC的數(shù)據(jù)X-1052.10X86指令集X86是由多個獨立小組開發(fā)的,被持續(xù)改進了超過30年,不斷在原指令集上增加新的特性。1978年,發(fā)布8086。8086是一個16位體系結構,存放器都是16位長,并且都是專用存放器。8086并不是通用存放器結構。1980年,8087浮點協(xié)處理器發(fā)布,在8086根底上增加了60條浮點指令。1982年,80286在8086的根底上把地址空間擴展到24位,增加了保護模式。1985年,80386的地址空間擴展到32位,還增加了新的尋址模式,這樣80386幾乎是通用存放器的處理器。還增加了對頁的支持。1062.10X86指令集1989-1995年,1989年發(fā)布80486,1992年發(fā)布Pentium處理器,1995年發(fā)布PentiumPro處理器,這些處理器都是以獲得更高性能為目的,僅有4條指令增加到用戶可見的指令集中。1997年,用多媒體MMX技術來擴展Pentium和PentiumPro處理器。這個新指令集包含57條指令,使用浮點棧來加速多媒體和通信應用程序。MMX通過SIMD的方式來一次處理多個短的數(shù)據(jù)元素。1999年,添加了70條指令,將SSE〔streamingSIMDExtension〕作為PentiumIII的一局部。主要添加了8個獨立存放器,把長度增加到128位,并且增加了一個單精度浮點數(shù)據(jù)類型,還增加了cache預取指令,以及可以繞開緩沖器直接寫內(nèi)存的流存儲指令。1072.10X86指令集2001年,增加了另外144個指令,命名為SSE2。增加的新數(shù)據(jù)類型是雙精度算術,允許并行操作64位浮點型數(shù)據(jù)對,大大增加了包括SSE2的Pentium4的浮點性能。2003年,AMD改進了x86架構,把地址空間從32位增加到64位,并把每個存放器都擴寬到64位,存放器數(shù)目增加到16,把128位的SSE存放器數(shù)目增加到16個。ISA的主要變化是新增了“長模式〞,用64位的地址和數(shù)據(jù)來重新定義所有x86指令的執(zhí)行。2004年,Intel屈服并吸納了AMD64,重新標記為EM64T,主要區(qū)別是Intel增加了128位的原子比較和交互指令,同時Intel發(fā)布了新一代媒體擴展SSE3,添加了13條指令來支持圖像操作、視頻編碼、浮點轉(zhuǎn)換。1082.10X86指令集2006年,作為SSE4的一局部擴展,Intel發(fā)布了54條新指令,針對絕對差求和、數(shù)組的點積計算等,還增加了對虛擬機的支持。2007年,作為SSE5的一局部,AMD發(fā)布了170條指令,包括為46條根本指令集中的指令增加了類似MIPS中的3操作數(shù)指令。。2023年,Intel發(fā)布了高級向量擴展,將SSE存放器從128位擴展到256位,因此重新定義了250條指令并新增了128條指令。這段歷史說明了兼容性對x86的影響,體系結構的改變不允許對已有的軟件產(chǎn)生任何的危害。1092.10X86指令集80386的存放器和數(shù)據(jù)尋址模式80386把16位存放器擴展為32位,并用前綴E來標識32位版本。80386只有8個通用存放器。1102.10X86指令集源/目的操作數(shù)類型第二個源操作數(shù)寄存器寄存器寄存器立即數(shù)寄存器存儲器存儲器寄存器存儲器立即數(shù)算術、邏輯和數(shù)據(jù)傳輸指令的指令格式1.x86的算術和邏輯指令中的一個操作數(shù)必須既是源操作數(shù)又是目的操作數(shù);2.一個操作數(shù)可以在存儲器中。與MIPS指令集的不同之處:1112.10X86指令集盡管存儲器操作數(shù)可以使用任何尋址模式,但每種模式使用哪些存放器是有限制的。展示了x86尋址模式和每種模式下哪個GPR是不允許使用的。模式描述寄存器限制等價的MIPS寄存器間接尋址地址在寄存器中不能為ESP或EBPlw$s0,0($s1)8位或32位偏移尋址模式地址是基址寄存器與偏移量之和不能為ESPlw$s0,100($s1)基址加比例下標尋址地址是:基址+(2比例*下標)比例是0,1,2,3下標:不能為ESPmul$t0,$s2add$t0,$t0,$s1lw$s0,0($t0)8位或32位偏移量的基址+比例下標尋址地址是:基址+(2比例*下標)+偏移量比例是0,1,2,3下標:不能為ESPmul$t0,$s2,4add$t0,$t0,$s1lw$s0,100($t0)1122.10X86指令集80386在x86結構中參加了32位的地址和數(shù)據(jù)〔雙字〕。幾乎所有的操作都能在8位和更長的數(shù)據(jù)上進行。80386有一個默認數(shù)據(jù)長度,由代碼段存放器中的一位指定。假設要改變默認數(shù)據(jù)長度,需在指令前附加8位前綴告訴機器這條指令使用其他數(shù)據(jù)長度。1132.10X86指令集X86整數(shù)操作分為4個主要的類:1〕數(shù)據(jù)傳送指令,包括mov、push和pop;2〕算術和邏輯指令,包括測試、整數(shù)和小數(shù)運算;3〕控制流,包括條件分支、無條件跳轉(zhuǎn)、調(diào)用和返回;4〕字符串指令,包括字符串傳送和字符串比較。典型的X86指令條件碼字符串指令比同等軟件例程要慢1142.10X86指令集指令含義控制指令條件和無條件分支jnz,jz條件成立跳轉(zhuǎn)到EIP+8位偏移量jmp無條件跳轉(zhuǎn)-8位或16位偏移量call過程調(diào)用–16位偏移量,返回地址壓入棧中ret從棧中彈出返回地址并跳轉(zhuǎn)loop循環(huán)分支–遞減ECX;數(shù)據(jù)傳輸在寄存器或寄存器和存儲器之間傳遞數(shù)據(jù)move在寄存器或寄存器和存儲器之間傳遞數(shù)據(jù)push,pop將源操作數(shù)壓棧;將棧頂數(shù)據(jù)取到寄存器les從存儲器取ES和一個GPRs1152.10X86指令集指令含義算術、邏輯使用數(shù)據(jù)寄存器和存儲器的算術和邏輯操作add,subcmp比較源和目的操作數(shù);寄存器-存儲器格式shl,shr,rcr左移;邏輯右移;循環(huán)右移并與條件碼填充cbw將EAX最右8位字節(jié)轉(zhuǎn)換成EAX最右16位字test將源和目的操作數(shù)進行邏輯與inc,dec遞增/減目的操作數(shù)or,xor邏輯或/異或字符串在字符串操作數(shù)之間移動;由重復前綴給出長度movs通過遞增ESI和EDI從源字符串復制到目的字符串loads從字符串中取字節(jié),字或雙字到寄存器EAX1162.10X86指令集X86指令編碼沒有操作數(shù)的時候,指令可以是1字節(jié),最長到15字節(jié)w表示操作的是一個字節(jié)還是一個雙字d指明傳輸方向1172.10X86浮點體系結構Intel對浮點指令提供了一種堆棧結構,載入指令將數(shù)壓棧,操作使用棧頂?shù)膬蓚€單元作為源操作數(shù)。除了用棧頂兩個元素作為源操作數(shù)外,一個源操作數(shù)也可以在內(nèi)存中,或者在棧頂下7個片上存放器之一。優(yōu)點:源操作數(shù)在存放器堆棧中比在內(nèi)存中更寬,并且所有的操作都是這樣寬的內(nèi)部精度來執(zhí)行。不像MIPS最大位寬64位,在堆棧中X86源操作數(shù)到達80位寬。數(shù)字在載入時自動轉(zhuǎn)換為這種80位格式,在寫回內(nèi)存時轉(zhuǎn)換回相應的大小。注:Load指令總是將數(shù)據(jù)移到堆棧頂端,同時將棧頂指針加1;store指令只能將棧頂數(shù)據(jù)移到內(nèi)存。1182.10X86浮點體系結構X86浮點操作主要分為4類:1〕數(shù)據(jù)移動指令,包括load,load常數(shù)和store;2〕計算機算術指令,包括加、減、乘、除、開方根和絕對值;3〕比較指令,包括將結果發(fā)送給整數(shù)處理器使其能跳轉(zhuǎn)的指令;4〕超越函數(shù)指令,包括正弦、余弦、對數(shù)和指數(shù)。1192.10X86浮點體系結構數(shù)據(jù)傳送算術比較超越函數(shù)指令操作數(shù)備注FADD兩個操作數(shù)都在堆棧中,結果放在棧頂FADDST(i)一個操作數(shù)在棧頂下第i個寄存器中,結果放在棧頂FADDST(i),ST一個操作數(shù)在棧頂,結果放在棧頂下第i個寄存器中FADDMem32一個操作數(shù)是內(nèi)存中的32位數(shù)據(jù),結果放在棧頂FADDmem64一個操作數(shù)是內(nèi)存中的64位數(shù)據(jù),結果放在棧頂X86浮點指令有不同源操作數(shù)的浮點加120IntelSIMD流擴展2〔SSE2〕浮點體系結構2001年,Intel增加了144條指令,包括雙精度浮點存放器及操作。它使用了8個64位的存放器用于浮點操作,AMD那么擴展到16個128位存放器,后被Intel采納。Intel允許多個浮點數(shù)一起打包在一個128位的存放器中,4個單精度或2個雙精度。有能同時執(zhí)行4個單精度或者2個雙精度操作的浮點算術運算能支持這種打包的浮點數(shù)據(jù)格式。這種架構比堆棧結構的性能快了兩倍多。2.11謬誤與陷阱電子科技大學計算機科學與工程學院誤解:更強大的指令意味著更高的性能指令的功能越強,編程越簡單;指令的功能越強,通常耗時越長,其執(zhí)行時間并不一定比多條簡單指令的執(zhí)行時間短;誤解:使用匯編語言編程來獲得最高的性能編譯器產(chǎn)生的代碼與手工編寫的代碼在性能上的差距正在快速縮?。?21匯編語言的難移植性;習題習題2.15122習題習題2.28123第三章單周期MIPS處理器的設計本章內(nèi)容3.1引言3.2邏輯設計慣例3.3建立數(shù)據(jù)通路3.4中斷機制電子科技大學計算機科學與工程學院
3.1.1一個根本MIPS的實現(xiàn)要實現(xiàn)的MIPS的指令集存儲器訪問指令取字:
存字:
算術邏輯指令:
分支指令:
3.1.2實現(xiàn)方式概述寄存器堆ALU數(shù)據(jù)存儲器指令存儲器MUXMUX加法器加法器MUXPC4一個MIPS子集的根本實現(xiàn)地址地址數(shù)據(jù)數(shù)據(jù)指令存放器#MIPS指令格式oprsrtrdshamtfunc6位5位5位5位5位6位312625212016151110650oprsrtimmediate6位5位5位16位312625212016150opaddress6位26位3126250R型I型J型本章內(nèi)容3.1引言3.2邏輯設計慣例3.3建立數(shù)據(jù)通路3.4中斷機制本章內(nèi)容3.1引言3.2邏輯設計慣例3.3建立數(shù)據(jù)通路3.4中斷機制數(shù)據(jù)路徑—R型指令
OprsrtrdshamtfuncRaClockRbRwData3232-bitRegistersALUZero譯碼OperationWn數(shù)據(jù)路徑—Load指令Oprsrtoffset/immediate
RaClockRbRwData3232-bitRegistersALUZeroMemoryADDRWDRDWeRe譯碼數(shù)據(jù)路徑—Store指令Oprsrtoffset/immediate
RaClockRbRwData3232-bitRegistersALUZeroMemoryADDRWDRDWeRe譯碼數(shù)據(jù)路徑—分支指令
分支指令:beq、bne
功能:
數(shù)據(jù)路徑—分支指令Oprsrtoffset/immediateRaClockRbRwData3232-bitRegistersALUZero<<2ADDPC+4ADDPC+4PC4數(shù)據(jù)路徑—合并目標:把各種功能的數(shù)據(jù)路徑合并取指令R型指令Load/Store指令分支指令根本方法:使用多路選擇器。MUXA32B3232CSelectR型指令與Load/Store指令合并選擇ALU的輸入存放器堆的B輸出(R型指令)符號擴展輸出(Load/Store型指令)R型指令與Load/Store指令差異〔3〕-合并處理3232-bitRegistersALUMUXALUSrcMemoryR型指令與Load/Store指令合并選擇存放器堆Data的輸入ALU的輸出(R型指令)存儲器的輸出(Load/Store型指令)R型指令與Load/Store指令差異〔4〕-合并處理ALUMemoryMUXM2RegR型指令與Load/Store指令合并選擇存放器堆Rw的輸入指令的rd字段(R型指令)指令的rt字段(Load指令)RaRbRwData3232-bitRegistersOprsrtrdshamtfuncOprsrtoffset/immediateR型指令與Load/Store指令合并Oprsrtoffset/immediateOprsrtrdshamtfuncR型指令Load/Store指令RaRbRw3232-bitRegistersMUXRegDstR型指令與Load/Store指令在ALU控制碼上的區(qū)別Oprsrtrdshamtfunc譯碼OperationR型Oprsrtoffset/immediate譯碼OperationLoad/Store指令000000100011101011R型指令與Load/Store指令在ALU控制碼上的區(qū)別Oprsrtrdshamtfunc譯碼OperationIfOp=000000thenOperation=分析funcElseifOp=100011then
Operation=LoadElse
Operation
=StoreEndifOprsrtoffset/immediateR型指令與Load/Store指令合并MemoryOprsrtoffset/immediateRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeReOprsrtrdshamtfuncMUXMUXALUSrcM2regOperationR型指令Load/Store指令MUXRegDstMemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstR型指令與Load/Store指令合并(執(zhí)行R型指令)ALUSrc=0M2reg=1RegDst=1offset/immediate00R型指令與Load/Store指令合并(執(zhí)行Load(lw)型指令)MemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstALUSrc=1M2reg=0RegDst=0offset/immediate01R型指令與Load/Store指令合并(執(zhí)行Store(sw)型指令)MemoryOprsrtRaClockRbRwData3232-bitRegistersALUZeroADDRWDRDWeRerd000000funcMUXMUXALUSrcM2regOperationMUXRegDstALUSrc=1M2reg=0RegDst=0offset/immediate10MemoryInstructionMemory單周期執(zhí)行
-數(shù)據(jù)路徑RaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516RegDstWeReRegWR執(zhí)行指令:MemoryInstructionMemoryRaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516
RegDstRegWR執(zhí)行指令:MemoryInstructionMemoryRaRbRwMUXDataALUMUXWDeADDRRDMUX<<2ADDMUXWDADDADDRPC4InstructionOperationSignExtenderZeroALUSrcPCSrcM2reg55516
RegDst
RegWR執(zhí)行指令:MemoryInstructionMemoryRaRb
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車牌租賃與交通擁堵緩解服務合同4篇
- 2025版綠色建筑項目室內(nèi)植物租賃合同范本4篇
- 2025版瓷磚電商平臺物流配送服務合同3篇
- 二零二五年度餐飲品牌租賃及營銷策劃合同3篇
- 2025年度廠房轉(zhuǎn)租及智慧物流系統(tǒng)接入合同3篇
- 2025年度大理石臺面安裝與石材表面處理合同范本4篇
- 二零二五版落水管施工項目風險評估與防范合同4篇
- 二零二五年度二手房公積金貸款買賣合同(含綠化補償)3篇
- 2025年度車間承包與節(jié)能改造項目合同4篇
- 二零二五版冷庫庫房建設及設備采購一體化合同3篇
- 《面神經(jīng)炎護理措施分析》3900字(論文)
- 城市微電網(wǎng)建設實施方案
- 企業(yè)文化融入中華傳統(tǒng)文化的實施方案
- 9.1增強安全意識 教學設計 2024-2025學年統(tǒng)編版道德與法治七年級上冊
- 《化工設備機械基礎(第8版)》全套教學課件
- 人教版八年級數(shù)學下冊舉一反三專題17.6勾股定理章末八大題型總結(培優(yōu)篇)(學生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術規(guī)程
- 初中數(shù)學要背誦記憶知識點(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測及風險評估
評論
0/150
提交評論