![ICS計(jì)算機(jī)基礎(chǔ)教學(xué)課件第五章程序的執(zhí)行_第1頁](http://file4.renrendoc.com/view/4bd4eae8be41a19aeaaa487691612af9/4bd4eae8be41a19aeaaa487691612af91.gif)
![ICS計(jì)算機(jī)基礎(chǔ)教學(xué)課件第五章程序的執(zhí)行_第2頁](http://file4.renrendoc.com/view/4bd4eae8be41a19aeaaa487691612af9/4bd4eae8be41a19aeaaa487691612af92.gif)
![ICS計(jì)算機(jī)基礎(chǔ)教學(xué)課件第五章程序的執(zhí)行_第3頁](http://file4.renrendoc.com/view/4bd4eae8be41a19aeaaa487691612af9/4bd4eae8be41a19aeaaa487691612af93.gif)
![ICS計(jì)算機(jī)基礎(chǔ)教學(xué)課件第五章程序的執(zhí)行_第4頁](http://file4.renrendoc.com/view/4bd4eae8be41a19aeaaa487691612af9/4bd4eae8be41a19aeaaa487691612af94.gif)
![ICS計(jì)算機(jī)基礎(chǔ)教學(xué)課件第五章程序的執(zhí)行_第5頁](http://file4.renrendoc.com/view/4bd4eae8be41a19aeaaa487691612af9/4bd4eae8be41a19aeaaa487691612af95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序的執(zhí)行
程序執(zhí)行和指令執(zhí)行概述
數(shù)據(jù)通路基本結(jié)構(gòu)和工作原理
流水線方式下指令的執(zhí)行
程序的執(zhí)行機(jī)制主要教學(xué)目標(biāo)理解CPU如何控制程序的執(zhí)行流了解一條指令的執(zhí)行過程了解CPU的主要功能和內(nèi)部結(jié)構(gòu)了解數(shù)據(jù)通路的基本組成和定時(shí)方式理解指令執(zhí)行時(shí)數(shù)據(jù)通路中信息的流動過程了解指令流水線的基本概念了解內(nèi)部異常和外部中斷的基本概念簡要介紹,詳細(xì)內(nèi)容參看《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)(第2版)》教材特點(diǎn)1.強(qiáng)調(diào)軟件和硬件的關(guān)聯(lián)2.細(xì)化流水線CPU設(shè)計(jì)3.注重用實(shí)例圖表闡述概念提供豐富的教輔資源提供配套的輔助教材:《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)習(xí)題解答與教學(xué)指導(dǎo)》第2版的改進(jìn)部分程序的執(zhí)行機(jī)制分以下三個(gè)部分介紹第一講:程序執(zhí)行概述程序及指令的執(zhí)行過程CPU的基本功能和基本組成第二講:數(shù)據(jù)通路基本結(jié)構(gòu)和工作原理數(shù)據(jù)通路基本結(jié)構(gòu)數(shù)據(jù)通路的時(shí)序控制數(shù)據(jù)通路基本工作原理
第三講:流水線方式下指令的執(zhí)行指令流水線的基本原理適合流水線的指令集特征CISC和RISC風(fēng)格指令集指令流水線的實(shí)現(xiàn)高級流水線實(shí)現(xiàn)技術(shù)
程序及指令的執(zhí)行過程程序和指令的關(guān)系程序由一條一條指令組成,指令按順序存放在內(nèi)存連續(xù)單元程序的執(zhí)行:周而復(fù)始地執(zhí)行一條一條指令正常情況下,指令按其存放順序執(zhí)行遇到需改變程序執(zhí)行流程時(shí),用相應(yīng)的轉(zhuǎn)移指令(包括無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用指令和返回指令等)來改變程序執(zhí)行流程程序的執(zhí)行流的控制將要執(zhí)行的指令所在存儲單元的地址由程序計(jì)數(shù)器PC給出,通過改變PC的值來控制執(zhí)行順序指令周期:CPU取出并執(zhí)行一條指令的時(shí)間程序及指令的執(zhí)行過程對于3.6.1中的例子#include"stdio.h"#include"string.h"
voidoutputs(char*str)
{charbuffer[16];strcpy(buffer,str);printf("%s\n",buffer);}……intmain(intargc,char*argv[]){outputs(argv[1]);return0;}Strcpy的棧幀main:
……
calloutputsmoveax,………retoutputs:
……
callstrcpy……callprintf……retstrcpy:程序執(zhí)行流:……calloutputs……callstrcpy……callprintf…...retmov%eax,…
……程序及指令的執(zhí)行過程反匯編得到的outputs匯編代碼080483e4:push%ebp080483e5:mov%esp,%ebp080483e7:sub$0x18,%esp080483ea:mov0x8(%ebp),%eax080483ed:mov%eax,0x4(%esp)080483f1:lea0xfffffff0(%ebp),%eax080483f4:mov%eax,(%esp)080483f7:call0x8048330<__gmon_start__@plt+16>080483fc:lea0xfffffff0(%ebp),%eax080483ff:mov%eax,0x4(%esp)08048403:movl$0x8048500,(%esp)0804840a:call0x80483100804840f:leave08048410:ret將strcpy的兩個(gè)實(shí)參入棧將printf的兩個(gè)實(shí)參入棧程序及指令的執(zhí)行過程在內(nèi)存存放的指令實(shí)際上是機(jī)器代碼(0/1序列)08048394<add>:8048394:55push%ebp8048395:89e5mov%esp,%ebp8048397:8b450cmov0xc(%ebp),%eax804839a:034508add0x8(%ebp),%eax804839d:5d pop%ebp804839e:c3 ret對于add函數(shù)指令按順序存放在0x08048394開始的存儲空間。各指令長度可能不同,如push、pop和ret指令各占一個(gè)字節(jié),第2行mov指令占兩個(gè)字節(jié),第3行mov指令和第4行add指令各占3字節(jié)。各指令對應(yīng)的0/1序列含義有不同的規(guī)定,如“push%ebp”指令為01010101B,其中01010為push指令操作碼,101為EBP的編號,“pop%ebp”為01011101B,其中01011為pop指令的操作碼。如何判定每條指令有多長?如何判定操作類型、寄存器編號、立即數(shù)等?如何區(qū)分第2行和第3行mov指令的不同?如何確定操作數(shù)是在寄存器中還是在存儲器中?一條指令執(zhí)行結(jié)束后如何正確讀取到下一條指令?123456程序執(zhí)行需要解決的問題:程序及指令的執(zhí)行過程CPU運(yùn)行程序的過程就是執(zhí)行一條一條指令的過程CPU執(zhí)行指令的過程中,包含CPU操作、訪問內(nèi)存或I/O端口的操作兩類訪存或I/O:涉及存儲系統(tǒng)、總線和I/O接口等內(nèi)容(以后章節(jié)內(nèi)容)CPU內(nèi)部操作:涉及CPU內(nèi)部數(shù)據(jù)通路(本章節(jié)內(nèi)容)機(jī)器指令的執(zhí)行過程CPU執(zhí)行指令的過程取指令PC+“1”指令譯碼進(jìn)行主存地址運(yùn)算取操作數(shù)進(jìn)行算術(shù)/邏輯運(yùn)算存結(jié)果以上每步都需檢測“異?!比粲挟惓?,則自動切換到異常處理程序檢測是否有“中斷”請求,有則轉(zhuǎn)中斷處理指令執(zhí)行過程問題:“取指令”一定在最開始做嗎?PC+“1”一定在譯碼之前做嗎?“譯碼”須在指令執(zhí)行前做嗎?你能說出幾種“異?!笔录俊爱惓!焙汀爸袛唷钡牟顒e是什么?異常是在CPU內(nèi)部發(fā)生的,中斷是由外部事件引起的取指階段執(zhí)行階段“1”:指一條指令的長度,定長指令字每次都一樣;變長指令字每次可能不同定長指令字通常在譯碼前做,變長指令字在譯碼后做!機(jī)器指令的執(zhí)行過程取指令:從PC所指單元取出指令送指令寄存器(IR),并增量PC。如add函數(shù),開始PC(IA-32的EIP)中存放的是0x0848394,CPU根據(jù)PC取指令送IR,每次總是取最長指令字節(jié)數(shù),假定最長指令是4個(gè)字節(jié),即IR為32位,此時(shí),也即5589E58BH被取到IR中。指令譯碼:不同指令其功能不同,因而需要不同的操作控制信號。CPU根據(jù)不同操作碼譯出不同控制信號。對于上述取到IR中的5589E58BH譯碼時(shí),可根據(jù)高5位01010譯碼得到push指令的控制信號。源操作數(shù)地址計(jì)算并取操作數(shù):根據(jù)尋址方式確定源操作數(shù)地址計(jì)算方式,若是存儲器數(shù)據(jù),則需一次或多次訪存;若為間接尋址或兩操作數(shù)都在存儲器的雙目運(yùn)算,則需多次訪存;若是寄存器數(shù)據(jù),則直接從寄存器取數(shù)。執(zhí)行數(shù)據(jù)操作:在ALU或加法器等運(yùn)算部件中對取出的源操作數(shù)進(jìn)行運(yùn)算。目的操作數(shù)地址計(jì)算并存結(jié)果:根據(jù)尋址方式確定目的操作數(shù)地址計(jì)算方式,若是存儲器數(shù)據(jù),則需要一次或多次訪存(間接尋址時(shí));若是寄存器數(shù)據(jù),則在進(jìn)行數(shù)據(jù)操作時(shí)直接存結(jié)果到寄存器。指令地址計(jì)算并將其送PC。順序執(zhí)行時(shí),PC加上當(dāng)前指令長度;遇到轉(zhuǎn)移類指令時(shí),則需要根據(jù)條件碼、操作碼和尋址方式等確定下條指令地址。
機(jī)器指令的執(zhí)行過程每條指令的功能總是由以下四種基本操作來實(shí)現(xiàn):讀取某一主存單元的內(nèi)容,并將其裝入某個(gè)寄存器(取指,取數(shù))把一個(gè)數(shù)據(jù)從某個(gè)寄存器存入給定的主存單元中(存結(jié)果)把一個(gè)數(shù)據(jù)從某寄存器送到另一寄存器或者ALU(取數(shù),存結(jié)果)進(jìn)行算術(shù)或邏輯運(yùn)算(PC+”1”,計(jì)算地址,運(yùn)算)指令執(zhí)行過程中查詢各種異常情況,并在發(fā)現(xiàn)異常時(shí)轉(zhuǎn)異常處理指令執(zhí)行結(jié)束時(shí)查詢中斷請求,并在發(fā)現(xiàn)中斷請求時(shí)響應(yīng)中斷操作功能可形式化描述描述語言稱為寄存器傳送語言RTL(RegisterTransferLanguage)回顧:馮.諾依曼結(jié)構(gòu)模型機(jī)控制器CPUPC輸入設(shè)備輸出設(shè)備MARMDRALU標(biāo)志寄存器
IR地址數(shù)據(jù)控制GPRs0123存儲器01234567
你媽會做的菜和廚師會做的菜不一樣,同一個(gè)菜譜的做法也可能不同如同不同架構(gòu)支持的指令集不同,同一種指令的實(shí)現(xiàn)方式和功能也可能不同控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017ffffffff80483d680483d580483d405589e5EIPbfff0000MDRIRMARbeeefffc回顧:IA-32的體系結(jié)構(gòu)是怎樣的呢?8個(gè)GPR(0~7),一個(gè)EFLAGs,PC為EIP可尋址空間4GB(編號為0~0xFFFFFFFF)指令格式變長,操作碼變長由若干字段(OP、Mod、SIB等)組成回顧:IA-32的寄存器組織回顧:IA-32的寄存器組織反映了體系結(jié)構(gòu)發(fā)展的軌跡,字長不斷擴(kuò)充,指令保持兼容ST(0)~ST(7)是80位,MM0~MM7使用其低64位typedefstruct{union{
struct{uint32_teax; uint32_tecx; uint32_tedx; uint32_tebx; uint32_tesp; uint32_tebp; uint32_tesi; uint32_tedi;}; union{ uint32_t_32; uint16_t_16; uint8_t_8[2]; }gpr[8]; };swaddr_teip;}CPU_state;externCPU_statecpu;enum{R_EAX,R_ECX,R_EDX,R_EBX,R_ESP,R_EBP,R_ESI,R_EDI};enum{R_AX,R_CX,R_DX,R_BX,R_SP,R_BP,R_SI,R_DI};enum{R_AL,R_CL,R_DL,R_BL,R_AH,R_CH,R_DH,R_BH};#definereg_l(index)(cpu.gpr[index]._32)#definereg_w(index)(cpu.gpr[index]._16)#definereg_b(index)(cpu.gpr[index&0x3]._8[index>>2])PA中模擬的
IA-32的寄存器組織回顧:IA-32的標(biāo)志寄存器6個(gè)條件標(biāo)志OF、SF、ZF、CF各是什么標(biāo)志(條件碼)?AF:輔助進(jìn)位標(biāo)志(BCD碼運(yùn)算時(shí)才有意義)PF:奇偶標(biāo)志3個(gè)控制標(biāo)志DF(DirectionFlag):方向標(biāo)志(自動變址方向是增還是減)IF(InterruptFlag):中斷允許標(biāo)志(僅對外部可屏蔽中斷有用)TF(TrapFlag):陷阱標(biāo)志(是否是單步跟蹤狀態(tài))……808680286/386回顧:IA-32的尋址方式尋址方式根據(jù)指令給定信息得到操作數(shù)或操作數(shù)地址操作數(shù)所在的位置指令中:立即尋址寄存器中:寄存器尋址存儲單元中(屬于存儲器操作數(shù),按字節(jié)編址):其他尋址方式存儲器操作數(shù)的尋址方式與微處理器的工作模式有關(guān)兩種工作模式:實(shí)地址模式和保護(hù)模式實(shí)地址模式(基本用不到)為與8086/8088兼容而設(shè),加電或復(fù)位時(shí)尋址空間為1MB,20位地址:(CS)<<4+(IP)保護(hù)模式(需要掌握)加電后進(jìn)入,采用虛擬存儲管理,多任務(wù)情況下隔離、保護(hù)80286以上高檔微處理器最常用的工作模式尋址空間為232B,32位線性地址分段(段基址+段內(nèi)偏移量)回顧:保護(hù)模式下的尋址方式SR段寄存器(間接)確定操作數(shù)所在段的段基址有效地址給出操作數(shù)在所在段的偏移地址尋址過程涉及到“分段虛擬管理方式”,將在第6章討論存儲器操作數(shù)跳轉(zhuǎn)目標(biāo)指令地址位移量和立即數(shù)都可以是:1B/2B/4BSIB中基址B和變址I都可是8個(gè)GRS中任一個(gè);SS給出比例因子操作碼:opcode;W:與機(jī)器模式(16/32位)一起確定寄存器位數(shù)(AL/AX/EAX);D:操作方向(確定源和目標(biāo))尋址方式(ModRM字節(jié)):mod、r/m、reg/op三個(gè)字段與w字段和機(jī)器模式(16/32)一起確定操作數(shù)所在的寄存器編號或有效地址計(jì)算方式回顧:IA-32機(jī)器指令格式8d0402lea(%edx,%eax,1),%eax10001101
0000010000000010存儲器操作數(shù)typedefunion{ struct{ uint8_tR_M :3; uint8_treg :3; uint8_tmod :2; }; struct{ uint8_tdont_care:3; uint8_topcode :3; }; uint8_tval;}ModR_M;typedefunion{ struct{ uint8_tbase :3; uint8_tindex :3; uint8_tss :2; }; uint8_tval;}SIB;PA中模擬的
IA-32指令的ModRM和SIB
程序由指令序列組成080483d4
<add>:80483d4: 55 push%ebp80483d5: 89e5 mov%esp,%ebp80483d7: 83ec10sub$0x10,%esp
80483da: 8b450cmov0xc(%ebp),%eax80483dd: 8b5508mov0x8(%ebp),%edx80483e0: 8d0402lea(%edx,%eax,1),%eax80483e3: 8945fcmov%eax,-0x4(%ebp)80483e6: 8b45fcmov-0x4(%ebp),%eax80483e9: c9leave80483ea: c3rettest代碼從80483d4開始!“objdump-dtest”結(jié)果起始EIP=?EIP←0x80483d4若i=2147483647,j=2,則程序執(zhí)行結(jié)果是什么?每一步如何執(zhí)行?想想媽媽怎么做菜的?根據(jù)EIP取指令指令譯碼取操作數(shù)指令執(zhí)行回寫結(jié)果修改EIP的值取并執(zhí)行指令OP指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff0000bfff000080483d480483d45589e583Rd5589e58355MDR5589e58380483d4S1:取指令I(lǐng)R5589e583RdS2:指令譯碼S3:指令執(zhí)行MARbeeefffc55功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff000080483d455MDR80483d4S1:取指令I(lǐng)RS2:指令譯碼S3:指令執(zhí)行beeefffcMARbeeefffc功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff000080483d455MDRS1:取指令I(lǐng)RS2:指令譯碼S3:指令執(zhí)行beeefffcMARbeeefffcbeeefffc功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]54指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff000080483d4Wr55MDRS1:取指令I(lǐng)RWrS2:指令譯碼S3:指令執(zhí)行beeefffcMARbeeefffcbeeefffcbfff0020bfff0020beeefffc功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff0000Wr55MDRS1:取指令I(lǐng)RWrS2:指令譯碼S3:指令執(zhí)行beeefffcMARbeeefffcbeeefffcbfff0020bfff0020beeefffc2000ffbf80483d4功能:R[esp]←R[esp]-4,M[R[esp]]←R[ebp]45指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
080483d4
<add>:80483d4:55 push%ebp80483d5:89e5 mov%esp,%ebp5589e5
EBPESPEIPbfff0020bfff000080483d555MDRS1:取指令I(lǐng)RS2:指令譯碼S3:指令執(zhí)行、EIP增量beeefffcMARbeeefffcbeeefffcbfff0020bfff0020beeefffc2000ffbf開始執(zhí)行下一條指令45WrWr
程序由指令序列組成080483d4
<add>:
80483d4: 55 push%ebp80483d5: 89e5 mov%esp,%ebp80483d7: 83ec10sub$0x10,%esp
80483da: 8b450cmov0xc(%ebp),%eax80483dd: 8b5508mov0x8(%ebp),%edx
80483e0: 8d0402lea(%edx,%eax,1),%eax80483e3: 8945fcmov%eax,-0x4(%ebp)80483e6: 8b45fcmov-0x4(%ebp),%eax80483e9: c9leave80483ea: c3rettest代碼從80483d4開始!“objdump-dtest”結(jié)果執(zhí)行add時(shí),起始EIP=?EIP←0x80483d4若i=2147483647,j=2,則程序執(zhí)行結(jié)果是什么?每一步如何執(zhí)行?OPEDX和EAX中各是什么?R[edx]=i=0x7fffffffR[eax]=j=0x2回顧:IA-32的寄存器組織反映了體系結(jié)構(gòu)發(fā)展的軌跡,字長不斷擴(kuò)充,指令保持兼容ST(0)~ST(7)是80位,MM0~MM7使用其低64位指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
80483da:8b450cmov0xc(%ebp),%eax80483dd:8b5508mov0x8(%ebp),%edx80483e0:8d0402lea(%edx,%eax,1),%eax5589e5
EBPESPEIPbfff000080483e0MDRS1:取指令I(lǐng)RWrS2:指令譯碼S3:指令執(zhí)行、EIP增量MAR7fffffffbeeefffc2000ffbf2
28d04028945功能:R[eax]←R[edx]+R[eax]*1ALU長啥樣呢?試想一下ALU中有哪些部件?(想想廚房做菜用什么工具?)補(bǔ)碼加/減器(可以干什么?)帶符號加、帶符號減無符號加、無符號減乘法器?(為什么可以沒有?)可用加/減+移位實(shí)現(xiàn),也可有獨(dú)立乘法器帶符號乘和無符號乘是獨(dú)立的部件除法器?(為什么可以沒有?)可用加/減+移位實(shí)現(xiàn),也可有獨(dú)立除法器帶符號除和無符號除是獨(dú)立的部件各種邏輯運(yùn)算部件(可以干什么?)非、與、或、非、前置0個(gè)數(shù)、前置1個(gè)數(shù)…….大家能否畫出ALU框圖?ALU結(jié)構(gòu)原理ALU的符號是什么樣的?ALUABRFlagsALUctrnnn4猜猜這是什么?補(bǔ)碼加/減器與門nnnFlagsR或門右移非門ABAA∧BA>>1A∨B4ALUctr多路選擇器指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
80483da:8b450cmov0xc(%ebp),%eax80483dd:8b5508mov0x8(%ebp),%edx80483e0:8d0402lea(%edx,%eax,1),%eax5589e5
EBPESPEIPbfff000080483e0MDRS1:取指令I(lǐng)RWrS2:指令譯碼S3:指令執(zhí)行、EIP增量MAR7fffffffbeeefffc2000ffbf28d04028945功能:R[eax]←R[edx]+R[eax]*1(執(zhí)行前)
2指令執(zhí)行過程控制器
ALU標(biāo)志寄存器
地址數(shù)據(jù)控制GPRs017bfff002080483d680483d580483d40
80483da:8b450cmov0xc(%ebp),%eax80483dd:8b5508mov0x8(%ebp),%edx80483e0:8d0402lea(%edx,%eax,1),%eax5589e5
EBPESPEIPbfff000080483e0MDRS1:取指令I(lǐng)RWrS2:指令譯碼S3:指令執(zhí)行、EIP增量MAR7fffffffbeeefffc2000ffbf2
800000018d04028945功能:R[eax]←R[edx]+R[eax]*1(執(zhí)行后)lea指令執(zhí)行的結(jié)果intadd(inti,intj){ returni+j;}intmain(){ int t1=2147483647;intt2=2; int sum=add(t1,t2); printf(”sum=%d”,
sum);}sum=-2147483647sum=0x80000001
sum的機(jī)器數(shù)和值分別是什么?
咦,怎么會兩個(gè)正數(shù)相加結(jié)果為負(fù)數(shù)呢?為什么?程序的執(zhí)行機(jī)制分以下三個(gè)部分介紹第一講:程序執(zhí)行概述程序及指令的執(zhí)行過程CPU的基本功能和基本組成第二講:數(shù)據(jù)通路基本結(jié)構(gòu)和工作原理數(shù)據(jù)通路基本結(jié)構(gòu)數(shù)據(jù)通路的時(shí)序控制數(shù)據(jù)通路基本工作原理
第三講:流水線方式下指令的執(zhí)行指令流水線的基本原理適合流水線的指令集特征CISC和RISC風(fēng)格指令集指令流水線的實(shí)現(xiàn)高級流水線實(shí)現(xiàn)技術(shù)
數(shù)據(jù)通路的位置計(jì)算機(jī)的五大組成部分:什么是數(shù)據(jù)通路(DataPath)?指令執(zhí)行過程中,數(shù)據(jù)所經(jīng)過的路徑,包括路徑中的部件。它是指令的執(zhí)行部件??刂破鳎–ontrol)的功能是什么?對指令進(jìn)行譯碼,生成指令對應(yīng)的控制信號,控制數(shù)據(jù)通路的動作。能對執(zhí)行部件發(fā)出控制信號,是指令的控制部件。ControlMemoryCPUInputOutputDatapathDatapath數(shù)據(jù)通路的基本結(jié)構(gòu)數(shù)據(jù)通路由兩類元件組成組合邏輯元件(也稱操作元件)時(shí)序邏輯元件(也稱狀態(tài)元件,存儲元件)元件間的連接方式總線連接方式分散連接方式數(shù)據(jù)通路如何構(gòu)成?由“操作元件”和“存儲元件”通過總線方式或分散方式連接而成數(shù)據(jù)通路的功能是什么?進(jìn)行數(shù)據(jù)存儲、處理、傳送因此,數(shù)據(jù)通路是由操作元件和存儲元件通過總線方式或分散方式連接而成的進(jìn)行數(shù)據(jù)存儲、處理、傳送的路徑。
操作元件:組合邏輯電路加法器(Adder)多路選擇器(MUX)算邏部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2譯碼器(Decoder)何時(shí)要用到adder,ALU,MUXorDecoder?控制信號組合邏輯元件的特點(diǎn):其輸出只取決于當(dāng)前的輸入。即:若輸入一樣,則其輸出也一樣定時(shí):所有輸入到達(dá)后,經(jīng)過一定的邏輯門延時(shí),輸出端改變,并保持到下次改變,不需要時(shí)鐘信號來定時(shí)加法器需要什么控制信號?狀態(tài)元件:時(shí)序邏輯電路狀態(tài)(存儲)元件的特點(diǎn):具有存儲功能,在時(shí)鐘控制下輸入被寫到電路中,直到下個(gè)時(shí)鐘到達(dá)輸入端狀態(tài)由時(shí)鐘決定何時(shí)被寫入,輸出端狀態(tài)隨時(shí)可以讀出定時(shí)方式:規(guī)定信號何時(shí)寫入狀態(tài)元件或何時(shí)從狀態(tài)元件讀出邊沿觸發(fā)(edge-triggered)方式:狀態(tài)單元中的值只在時(shí)鐘邊沿改變。每個(gè)時(shí)鐘周期改變一次。上升沿(risingedge)觸發(fā):在時(shí)鐘正跳變時(shí)進(jìn)行讀/寫。下降沿(fallingedge)觸發(fā):在時(shí)鐘負(fù)跳變時(shí)進(jìn)行讀/寫。最簡單的狀態(tài)單元(回顧:數(shù)字邏輯電路課程內(nèi)容):D觸發(fā)器:一個(gè)時(shí)鐘輸入、一個(gè)狀態(tài)輸入、一個(gè)狀態(tài)輸出時(shí)鐘周期上升沿下降沿存儲元件中何時(shí)狀態(tài)被改變?切記:狀態(tài)單元的輸入信息總是在一個(gè)時(shí)鐘邊沿到達(dá)后的“Clk-to-Q”時(shí)間才被寫入,此時(shí)的輸出才反映新的狀態(tài)值數(shù)據(jù)通路中的狀態(tài)元件有兩種:寄存器(組)+存儲器(LatchProp-鎖存延遲)Q總是在clock-to-Q后跟著D變化這期間D的變化不影響Q數(shù)據(jù)通路與時(shí)序控制Clk寄存器的輸入可變化SetupHold............SetupHold數(shù)據(jù)通路由“…+狀態(tài)元件
+操作元件(組合電路)+狀態(tài)元件
+…”組成只有狀態(tài)元件能存儲信息,操作元件須從狀態(tài)元件接收輸入,并將輸出寫入狀態(tài)元件。其輸入為前一時(shí)鐘生成的數(shù)據(jù),輸出為當(dāng)前時(shí)鐘所用的數(shù)據(jù)現(xiàn)代計(jì)算機(jī)的時(shí)鐘周期ClkClkCycleTime=Clk-to-Q時(shí)間+LongestDelay+建立時(shí)間+時(shí)鐘偏移早期累加器型指令系統(tǒng)數(shù)據(jù)通路最簡單的數(shù)據(jù)通路結(jié)構(gòu)
取指令數(shù)據(jù)路徑為:
PC→MAR,ReadM,M→MBR→IBR→IR取操作數(shù)、運(yùn)算、送結(jié)果的數(shù)據(jù)路徑為:
操作數(shù)地址→MAR,ReadM,M→MBR→ALU輸入端,AC→ALU輸入端,ALU操作,ALU結(jié)果→AC,AC→MBR,WriteMIAS計(jì)算機(jī)(馮.諾依曼等設(shè)計(jì))是現(xiàn)代計(jì)算機(jī)的原型AC:累加器MQ:乘商寄存器PC、IR、ALU、IBR、MBR:?分散連接方式!單總線數(shù)據(jù)通路
四種基本操作的時(shí)序控制信號在寄存器之間傳送數(shù)據(jù)R0out,Yin
完成算術(shù)、邏輯運(yùn)算R1out,YinR2out,Add,ZinZout,R3in從主存取字R1out,MARinRead,
WMFC
(等待MFC)MDRout,R2in
寫字到主存R1out,MARinR2out,MDRinWrite,
WMFCR[R2]←M[R[R1]]
M[R[R1]]←R[R2]CPU訪存有兩種通信方式早期:直接訪問MM,“異步”方式,用MFC應(yīng)答信號;現(xiàn)在:先Cache后MM,“同步”方式,無需應(yīng)答信號。問題:時(shí)鐘周期的寬度如何確定?以上四種操作各需要幾個(gè)時(shí)鐘周期?取指階段的操作與時(shí)序控制信號?IR←M[PC],PC←PC+“1”1Cycle3Cycles>3CyclesRead/Write時(shí)間最長,故以此為準(zhǔn)或劃分為多個(gè)時(shí)鐘周期通用寄存器總線連接方式!內(nèi)總線內(nèi)總線外總線>3Cycles三總線數(shù)據(jù)通路單總線中一個(gè)時(shí)鐘內(nèi)只允許傳一個(gè)數(shù)據(jù),因而指令執(zhí)行效率很低可采用多總線方式,同時(shí)在多個(gè)總線上傳送不同數(shù)據(jù),提高效率例如:三總線數(shù)據(jù)通路總線A、B分別傳送兩個(gè)源操作數(shù),總線C傳送結(jié)果單總線中的暫存器Y和Z在此可取消,Why?采用雙口通用寄存器組如何實(shí)現(xiàn)R[R3]←R[R1]opR[R2]R1outA,R2outB,op,R3inC只要一個(gè)時(shí)鐘周期(節(jié)拍)即可!目前大都采用流水線方式執(zhí)行指令,單總線或三總線的總線式數(shù)據(jù)通路很難實(shí)現(xiàn)指令流水執(zhí)行。
ZY以下以MIPS指令系統(tǒng)為例簡介CPU的工作原理。三個(gè)總線各自傳不同數(shù)據(jù),不會發(fā)生沖突,故無需Y和Z通用寄存器組MIPS的三種指令類型ADDandSUBSTRACTaddrd,rs,rtsubrd,rs,rtORImmediate:orirt,rs,imm16LOADandSTORElwrt,rs,imm16swrt,rs,imm16BRANCH:beqrs,rt,imm16JUMP:jtargetoptarget
address026316
bits26bitsoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bitsoprsrtimmediate0162126316bits16bits5bits5
bitsMIPS有三種指令格式:R-型、I-型、J-型R-型指令格式I-型指令格式J-型指令格式本節(jié)內(nèi)容無需掌握,僅為理解指令的執(zhí)行過程而補(bǔ)充取指令部件(InstructionFetchUnit)每條指令都有的公共操作:取指令:M[PC]更新PC:PC←PC+4轉(zhuǎn)移(BranchandJump)時(shí),PC內(nèi)容再次被更新為“轉(zhuǎn)移目標(biāo)地址”32Instruction
WordAddressInstructionMemoryPCClkNext
AddrLogic順序:先取指令,再改PC的值(具體實(shí)現(xiàn)時(shí),可以并行)絕不能先改PC的值,再取指令下地址邏輯取指后,各指令功能不同,數(shù)據(jù)通路中信息流動過程也不同取指令部件RR(R-type)型指令的數(shù)據(jù)通路功能:R[rd]←R[rs]opR[rt],如:addrd,rs,rt32ResultClkbusW3232busA32busB555RwRaRb3232-bitRegistersrsrtrdALU不考慮公共操作,僅R-Type指令執(zhí)行階段的數(shù)據(jù)通路如下:Ra,Rb,Rw
分別對應(yīng)指令的rs,rt,rdoprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bits溢出時(shí),不寫結(jié)果并轉(zhuǎn)異常處理程序溢出典型的三總線結(jié)構(gòu)!busA、busB、busW帶立即數(shù)的邏輯指令的數(shù)據(jù)通路R[rt]←R[rs]opZeroExt[imm16]]Ex:orirt,rs,imm1632ResultClkbusW3232busA32busB555RwRaRb3232-bitRegistersRsDon’t
Care(Rt)ALUR-型結(jié)果寫入RdR-型操作數(shù)來自busBRtRdMux01零擴(kuò)展Mux1632imm1601oprsrtimm160162126316bits16bits5bits5
bits單周期數(shù)據(jù)通路的基本結(jié)構(gòu)32ClkbusW3232busA32busB555RwRaRb
3232
bitRegistersRsRtRtRdExtMuxMux3216imm16MuxClkDataInWrEn32AdrDataMemory32ALU取指部件ClkZeroInstruction<31:0>010101<21:25><16:20><11:15><0:15>Imm16RdRtRs指令執(zhí)行結(jié)果總是在下個(gè)時(shí)鐘到來時(shí)開始保存在寄存器或存儲器或
PC
中!單周期數(shù)據(jù)通路中的關(guān)鍵路徑(Load操作
)Clk5RwRaRb32
32-bitRegistersRdALUClkDataInDataOutDataAddressIdealDataMemoryInstructionbusInstruction
AddressIdealInstructionMemoryClkPC5Rs5Rt16Imm32323232關(guān)鍵路徑(Load)=
Clk-to-Q+
取指令時(shí)間
+取寄存器數(shù)據(jù)時(shí)間
+
ALU中運(yùn)算時(shí)間
+取存儲器數(shù)據(jù)時(shí)間
+
寫寄存器時(shí)間(建立時(shí)間)+時(shí)鐘扭斜Load操作:R[Rt]←M[R[Rs]+Imm16]單周期,多周期和
流水線比較Clk周期1MultipleCycle
Implementation(多周期實(shí)現(xiàn)):IfetchRegExecMemWr周期2周期3周期4周期5周期1周期2周期3周期4周期1LoadIfetchRegExecMemWrIfetchRegExecMemLoadStorePipelineImplementation(流水線實(shí)現(xiàn)):IfetchRegExecMemWrStoreClkSingleCycleImplementation(單周期實(shí)現(xiàn)):LoadStoreWasteIfetchR-typeIfetchRegExecMemWrR-type周期1周期1前述的單總線結(jié)構(gòu)CPU一定是多周期實(shí)現(xiàn)的CPU!程序的執(zhí)行機(jī)制分以下三個(gè)部分介紹第一講:程序執(zhí)行概述程序及指令的執(zhí)行過程CPU的基本功能和基本組成第二講:數(shù)據(jù)通路基本結(jié)構(gòu)和工作原理數(shù)據(jù)通路基本結(jié)構(gòu)數(shù)據(jù)通路的時(shí)序控制數(shù)據(jù)通路基本工作原理
第三講:流水線方式下指令的執(zhí)行
指令流水線的基本原理適合流水線的指令集特征CISC和RISC風(fēng)格指令集指令流水線的實(shí)現(xiàn)高級流水線實(shí)現(xiàn)技術(shù)
LaundryExampleAnn,Brian,Cathy,Dave
eachhaveoneloadofclothestowash,dry,andfoldWashertakes 30minutesDryertakes 40minutes“Folder”takes 20minutesABCDPipelining:It’sNatural!一個(gè)日常生活中的例子—洗衣服如果讓你來管理洗衣店,你會如何安排?SequentialLaundry(串行方式)串行方式下4批衣服需花費(fèi)6小時(shí)(4x(30+40+20)=360分鐘)N批衣服,需花費(fèi)的時(shí)間為Nx(30+40+20)=90N如果用流水線方式洗衣服,則花多少時(shí)間呢?ABCD3040203040203040203040206PM7891011MidnightTaskOrderTimePipelinedLaundry:(StartworkASAP)串行為90分鐘x4=6小時(shí)N批則為90xN分鐘ABCD6PM7891011MidnightTaskOrderTime304040404020流水線方式下,需30+4x40+20=210分(3.5小時(shí))如果有N批衣服呢?30+Nx40+20分鐘假定每一步時(shí)間均衡,則比串行方式提高約3倍!流水方式下,所用時(shí)間主要與最長階段的時(shí)間有關(guān)!指令流水線的基本概念五段流水線
取指令(IF):根據(jù)PC的值從存儲器取出指令。
指令譯碼(ID):產(chǎn)生指令執(zhí)行所需的控制信號。
取操作數(shù)(OF):讀取存儲器操作數(shù)或寄存器操作數(shù)。
執(zhí)行(EX):對操作數(shù)完成指定操作。
寫回(WB):將操作結(jié)果寫入存儲器或寄存器。單周期數(shù)據(jù)通路中指令的執(zhí)行假定:最復(fù)雜指令執(zhí)行過程①取指:200ps;②譯碼和讀操作數(shù):50ps;③ALU操作:100ps;④讀存儲器:200ps;⑤結(jié)果寫寄存器:50ps。
200+50+100+200=550單周期:每條指令在單個(gè)時(shí)鐘周期內(nèi)完成,故CPI=1,時(shí)鐘周期=600ps每秒執(zhí)行指令條數(shù):1/600ps=1/(600×10-15)=1.67×1012
CPI=1,指令延時(shí)為600ps指令吞吐率為1.67GIPS指令串行執(zhí)行,程序執(zhí)行時(shí)間為:指令條數(shù)×600ps流水線數(shù)據(jù)通路中指令的執(zhí)行假定:最復(fù)雜指令執(zhí)行過程①取指:200ps;②譯碼和讀操作數(shù):50ps;③ALU操作:100ps;④讀存儲器:200ps;⑤結(jié)果寫寄存器:50ps。取指令譯碼/讀數(shù)ALU運(yùn)算讀/寫存儲器寫結(jié)果最長段為200ps
指令延時(shí)為:250ps×5=1.25ns指令吞吐率為4GIPS流水線指令集的設(shè)計(jì)具有什么特征的指令集有利于流水線執(zhí)行呢?長度盡量一致,有利于簡化取指令和指令譯碼操作MIPS指令32位,下址計(jì)算方便:PC+4X86指令從1字節(jié)到17字節(jié)不等,使取指部件極其復(fù)雜格式少,且源寄存器位置相同,有利于在指令未知時(shí)就可取操作數(shù)MIPS指令的rs和rt位置一定,在指令譯碼時(shí)就可讀rs和rt的值若位置隨指令不同而不同,則需先確定指令類型才能取寄存器編號load/Store指令才能訪問存儲器,有利于減少操作步驟,規(guī)整流水線lw/sw指令的地址計(jì)算和運(yùn)算指令的執(zhí)行步驟規(guī)整在同一個(gè)周期X86運(yùn)算類指令操作數(shù)可為內(nèi)存數(shù)據(jù),需計(jì)算地址、訪存、執(zhí)行內(nèi)存中”對齊”存放,有利于減少訪存次數(shù)和流水線的規(guī)整總之,規(guī)整、簡單和一致等特性有利于指令的流水線執(zhí)行oprsrtrdshamtfunc0611162126316bits6bits5bits5bits5
bits5
bits按指令格式的復(fù)雜度來分早期CISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)(1)指令系統(tǒng)復(fù)雜
變長操作碼/變長指令字/指令多/尋址方式多/指令格式多(2)指令周期長
絕大多數(shù)指令需要多個(gè)時(shí)鐘周期才能完成(3)各種指令都能訪問存儲器
除了專門的存儲器讀寫指令外,運(yùn)算指令也能訪問存儲器
(4)采用微程序控制(5)有專用寄存器(6)難以進(jìn)行編譯優(yōu)化來生成高效目標(biāo)代碼例如,VAX-11/780小型機(jī)16種尋址方式;9種數(shù)據(jù)格式;303條指令;一條指令包括1~2個(gè)字節(jié)的操作碼和下續(xù)N個(gè)操作數(shù)說明符。一個(gè)說明符的長度達(dá)1~10個(gè)字節(jié)。按指令格式的復(fù)雜度來分,有兩種類型計(jì)算機(jī):復(fù)雜指令集計(jì)算機(jī)CISC(ComplexInstructionSetComputer)精簡指令集計(jì)算機(jī)RISC(Reduce
InstructionSetComputer)復(fù)雜指令集計(jì)算機(jī)CISC對CISC進(jìn)行測試,發(fā)現(xiàn)一個(gè)事實(shí):在程序中各種指令出現(xiàn)的頻率懸殊很大,最常使用的是一些簡單指令,這些指令占程序的80%,但只占指令系統(tǒng)的20%。而且在微程序控制的計(jì)算機(jī)中,占指令總數(shù)20%的復(fù)雜指令占用了控制存儲器容量的80%。1982年美國加州伯克利大學(xué)的RISCⅠ,斯坦福大學(xué)的MIPS,IBM公司的IBM801相繼宣告完成,這些機(jī)器被稱為第一代RISC機(jī)。CISC的缺陷日趨龐大的指令系統(tǒng)不但使計(jì)算機(jī)的研制周期變長,而且難以保證設(shè)計(jì)的正確性,難以調(diào)試和維護(hù),并且因指令操作復(fù)雜而增加機(jī)器周期,從而降低了系統(tǒng)性能。1975年IBM公司開始研究指令系統(tǒng)的合理性問題,JohnCocks提出精簡指令系統(tǒng)計(jì)算機(jī)RISC(ReduceInstructionSetComputer)。SKIPTop1080x86Instructions(簡單指令占主要部分,使用頻率高!)
BACKMOVMtoRMOVRtoMJccCMPRISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)(1)簡化的指令系統(tǒng)指令少/尋址方式少/指令格式少/指令長度一致(2)以RR方式工作除Load/Store指令可訪存外,其余指令都只訪問寄存器(3)指令周期短以流水線方式工作,
因而除Load/Store指令外,其他簡單指令都只需一個(gè)或一個(gè)不到的時(shí)鐘周期就可完成(4)采用大量通用寄存器,以減少訪存次數(shù)(5)采用硬連線路控制器,不用或少用微程序控制(6)采用優(yōu)化的編譯系統(tǒng),力求有效地支持高級語言程序MIPS是典型的RISC處理器,82年以來新的指令集大多采用RISC體系結(jié)構(gòu)x86因?yàn)椤凹嫒荨钡男枰?,保留了CISC的風(fēng)格,同時(shí)也借鑒了RISC思想指令流水線的實(shí)現(xiàn)假定:最復(fù)雜指令執(zhí)行過程①取指:200ps;②譯碼和讀操作數(shù):50ps;③ALU操作:100ps;④讀存儲器:200ps;⑤結(jié)果寫寄存器:50ps。取指令I(lǐng)Fetch讀數(shù)/譯碼Reg/DecALU運(yùn)算Exec讀/寫存儲器Mem寫結(jié)果Write可以分5個(gè)流水段,最長階段為200ps
五段流水線數(shù)據(jù)通路IF/ID
RegisterID/ExRegisterEx/Mem
RegisterMem/Wr
RegisterPCDataMemWADiRADoIUnitAIRFileDiRaRbRwExecUnitbusAbusBImmMux1010RtRdImmPC+4PC+4RsRtPC+4Zero10ClkIfetch(IF)Reg/Dec(ID)Exec(Ex)MemWrClock-to-Qdelay流水段寄存器:保存每個(gè)時(shí)鐘周期執(zhí)行的結(jié)果!指令流水線的執(zhí)行舉例End
ofCycle4EndofCycle5End
ofCycle
6End
ofCycle7ClockCycle1Cycle2Cycle3Cycle4Cycle5Cycle6Cycle7Cycle8IfetchReg/DecExecMemWr0:LoadIfetchReg/DecExecMemWr4:R-typeIfetchReg/DecExecMemWr8:
StoreIfetchReg/DecExecMemWr12:Beq周期4結(jié)束:Load的Mem,R-type的Exec,Store的Reg,Beq的Ifetch周期5結(jié)束:Load的Wr,R-type的Mem,Store的Exec,Beq的Reg周期6結(jié)束:R-type的Wr,Store的Mem,Beq的Exec周期7結(jié)束:Store的Wr,Beq的Mem考察以下幾個(gè)點(diǎn)的情況:指令流水線的執(zhí)行舉例lw指令與beq、sub、or指令關(guān)于$8數(shù)據(jù)相關(guān)sub與or關(guān)于$9數(shù)據(jù)相關(guān)可通過轉(zhuǎn)發(fā)解決數(shù)據(jù)相關(guān)可通過前半周期寫后半周期讀解決數(shù)據(jù)相關(guān)Load-use數(shù)據(jù)相關(guān)不能通過轉(zhuǎn)發(fā)解決指令lw與beq是load-use數(shù)據(jù)相關(guān)beq指令條件滿足時(shí),應(yīng)轉(zhuǎn)200處執(zhí)行,但在此之前已有3條指令正在執(zhí)行,需從流水線中沖刷掉延遲損失時(shí)間片C=3
Hazards:指流水線遇到無法正確執(zhí)行后續(xù)指令或執(zhí)行了不該執(zhí)行的指令結(jié)構(gòu)冒險(xiǎn)
(hardwareresourceconflicts,硬件資源沖突):現(xiàn)象:同一個(gè)部件同時(shí)被不同指令所使用
一個(gè)部件每條指令只能使用1次,且只能在特定周期使用設(shè)置多個(gè)部件,以避免沖突。如指令存儲器IM和數(shù)據(jù)存儲器DM分開數(shù)據(jù)冒險(xiǎn)
(datadependencies,數(shù)據(jù)相關(guān)):現(xiàn)象:后面指令用到前面指令結(jié)果數(shù)據(jù)時(shí),前面指令的結(jié)果還沒產(chǎn)生轉(zhuǎn)發(fā)(Forwarding/Bypassing旁路)或前半周期讀后半周期寫Load-use冒險(xiǎn)不能通過轉(zhuǎn)發(fā)解決,需阻塞(stall)一個(gè)時(shí)鐘周期編譯程序優(yōu)化指令順序控制(分支)冒險(xiǎn)
(changesinprogramflow,改變控制流):現(xiàn)象:轉(zhuǎn)移或異常改變執(zhí)行流程,后繼指令在目標(biāo)地址產(chǎn)生前已被取出采用靜態(tài)或動態(tài)分支預(yù)測編譯程序優(yōu)化指令順序(分支延遲)流水線的沖突/冒險(xiǎn)(hazard)情況本PPT內(nèi)容只需大概了解以下源程序可生成兩種不同的代碼,優(yōu)化的代碼可避免Load阻塞 a=b+c; d=e–f;假定a,b,c,d,e,f在內(nèi)存編譯器優(yōu)化指令順序解決數(shù)據(jù)冒險(xiǎn)Fastcode:
lw $2,b lw $3,c
lw $5,e add $1,$2,$3 lw $6,f
sw $1,a sub $4,$5,$6 sw $4,d
Slowcode:
lw $2,b lw $3,c add $1,$2,$3
sw $1,a lw $5,e
lw $6,f sub $4,$5,$6 sw $4,d調(diào)整后編譯器的優(yōu)化很重要!如果硬件不支持阻塞處理的話,則編譯器可以將順序調(diào)整和插入NOP指令結(jié)合起來,在找不到可插入的指令時(shí),插入NOP指令!編譯器優(yōu)化以避免阻塞的情況調(diào)查由此可見,優(yōu)化調(diào)度后load阻塞現(xiàn)象大
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基建科前期服務(wù)范本合同
- 綠色田園工程建設(shè)作業(yè)指導(dǎo)書
- 業(yè)主裝修工程合同
- 全新運(yùn)輸合同終止協(xié)議書
- 物流行業(yè)最佳實(shí)踐指南
- 企業(yè)人力資源薪酬福利管理作業(yè)指導(dǎo)書
- 商品房買賣預(yù)售合同
- 旋挖鉆機(jī)買賣合同
- 個(gè)人股權(quán)轉(zhuǎn)讓協(xié)議書
- 借款合同法律常識
- 電鍍產(chǎn)業(yè)園項(xiàng)目可行性研究報(bào)告(專業(yè)經(jīng)典案例)
- 2025年魯泰集團(tuán)招聘170人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 《辣椒主要病蟲害》課件
- 2024年煤礦安全生產(chǎn)知識培訓(xùn)考試必答題庫及答案(共190題)
- SLT824-2024 水利工程建設(shè)項(xiàng)目文件收集與歸檔規(guī)范
- (完整word版)中國銀行交易流水明細(xì)清單模版
- DB43∕T 859-2014 高速公路機(jī)電工程概預(yù)算編制辦法及定額
- 燃?xì)廨啓C(jī)LM2500介紹
- (精選)淺談在小學(xué)數(shù)學(xué)教學(xué)中如何進(jìn)行有效提問
評論
0/150
提交評論