版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章微處理器和指令系統(tǒng)參考書目:1、《計算機組成技術(shù)》李東,黃慶成等主編電子工業(yè)出版社2、《計算機組成原理》唐朔飛主編高等教育出版社12第二章微處理器和指令系統(tǒng)2.18086微處理器的內(nèi)部結(jié)構(gòu)2.2 尋址方式2.3處理器的指令系統(tǒng)2.4 流水線技術(shù)2.5
RISC3微處理器概述:
從外觀上看處理器:矩形或正方形的塊狀物,通過眾多引腳(也稱管腳)與主板相連。
片內(nèi)總線:處理器內(nèi)部,分為片內(nèi)控制總線和片內(nèi)數(shù)據(jù)總線。片外總線:處理器與主存儲器和輸入/輸出設(shè)備之間信號傳輸?shù)木€路,簡稱總線。2.18086微處理器的內(nèi)部結(jié)構(gòu)48086是全16位微處理器(內(nèi)外數(shù)據(jù)總線都為16位)8088是準16位微處理器(內(nèi)數(shù)據(jù)總線為16位,外數(shù)據(jù)總線為8位)8086/8088除了外數(shù)據(jù)總線位數(shù)及與此相關(guān)的部分邏輯稍有差別外,內(nèi)部結(jié)構(gòu)和基本性能相同,指令系統(tǒng)完全兼容。
58086的引腳圖14023933843753663573483393210311130122913281427152616251724182319222021地AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地Vcc(5V)AD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESETADi表示地址總線與數(shù)據(jù)總線復用同一個引腳Ai/Si表示地址總線與控制總線復用同一個引腳。這叫做總線分時復用。68088的引腳圖14023933843753663573483393210311130122913281427152616251724182319222021地A14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地Vcc(5V)A15A16/S3A17/S4A18/S5A19/S6SS(HIGH)MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8位的數(shù)據(jù)總線NMI非屏蔽中斷請求信號輸入INTR可屏蔽中斷請求信號輸入INTA中斷響應信號輸出地址鎖存信號輸出7電源引腳(Vcc),接地引腳(GND)按照傳輸信號類別的不同,這些引腳可以分為數(shù)據(jù)總線引腳、地址總線引腳和控制總線引腳數(shù)據(jù)總線引腳:若數(shù)據(jù)總線的寬度是8位,則數(shù)據(jù)總線引腳將被命名為D0,D1,…,D7;若數(shù)據(jù)總線的寬度是16位,則數(shù)據(jù)總線引腳將被命名為D0,D1,…,D15。8地址總線引腳:若處理器的訪存地址寬度是10位,則地址總線引腳將被命名為A0,A1,…,A9;若處理器的訪存地址寬度是20位,則地址總線引腳將被命名為A0,A1,…,A19控制總線引腳:時鐘CLK、復位RESET、總線請求HRQ、總線允許HLDA、中斷請求INTR、中斷響應INTA、讀RD、寫WR等。
9在8086/8088的設(shè)計中,引入了兩個重要的結(jié)構(gòu)概念:1、指令流水線2、存儲器分段管理這兩個概念在以后升級的Intel系列微處理器中一直被沿用和發(fā)展。正是這兩個概念的引入,使8086/8088比原來的8位MPU在運行速度、處理能力和對存儲空間的訪問等性能方面有很大提高。108086/8088在結(jié)構(gòu)上分為:總線接口部件(BusInterfaceUnit,BIU)執(zhí)行部件(ExecutingUnit,EU)總線接口部件負責取指令,執(zhí)行部件負責執(zhí)行指令,從而構(gòu)成了一個“兩段的流水線”。取指令1執(zhí)行指令1時間TEUBIU取指令2執(zhí)行指令2取指令3執(zhí)行指令31、指令流水線結(jié)構(gòu)11654321通用寄存器組AXBXCXDX外部總線內(nèi)部暫存器IPESSSDSCS運算寄存器ALU標志輸入輸出控制電路∑執(zhí)行部分控制電路執(zhí)行部件(EU)總線接口部件(BIU)內(nèi)部總線地址加法器16位16位20位16位(1)執(zhí)行部件EU
執(zhí)行部件的功能就是負責從指令隊列取指令并執(zhí)行。從結(jié)構(gòu)圖可見,執(zhí)行部件由下列幾個部分組成:
(1)算術(shù)邏輯單元ALU
(2)標志寄存器FLAG;(3)數(shù)據(jù)暫存寄存器;
(4)通用寄存器組:包括4個16位位數(shù)據(jù)寄存器AX、BX、CX、DX;4個16位地址指針與變址寄存器SP,BP,SI,DI。
(5)EU控制電路
(2)總線接口部件(BIU)
總線接口部件根據(jù)執(zhí)行部件的請求,負責與存儲器、I/O端口傳送數(shù)據(jù)。由下列各部分組成:(1)4個段地址寄存器;
CS——16位的代碼段寄存器;
DS——16位的數(shù)據(jù)段寄存器;
ES——16位的擴展段寄存器;
SS——16位的堆棧段寄存器;(2)16位的指令指針寄存器IP;(3)20位的地址加法器;(4)6字節(jié)的指令隊列緩沖器。(3)“流水線”結(jié)構(gòu)
每當8086的指令隊列中有1個或2個空字節(jié),BIU就會自動把指令取到指令隊列中。而同時EU從指令隊列取出一條指令,并用幾個時鐘周期去分析、執(zhí)行指令。當指令隊列已滿,而且EU對BIU又無總線訪問請求時,BIU便進入空閑狀態(tài)。在執(zhí)行轉(zhuǎn)移、調(diào)用和返回指令時,指令隊列中的原有內(nèi)容被自動清除,并要求BIU從新的地址重新開始取指令,新取的第一條指令將直接經(jīng)指令隊列送到EU去執(zhí)行,隨后取來的指令將填入指令隊列緩沖器。
寄存器用來暫時存放參加運算的操作數(shù)和運算過程中的中間結(jié)果,使得在程序執(zhí)行的過程中不必每時每刻都要到存儲器中存取數(shù)據(jù)。8086CPU中可供編程使用的有14個16位寄存器,按其用途可分為3類:通用寄存器、段寄存器、指針和標志寄存器。8086/8088的寄存器組結(jié)構(gòu)16DISIBPSPDLDHCLCHBLBHALAHFRIPESSSDSCS數(shù)據(jù)寄存器指針寄存器和變址寄存器段寄存器指令指針標志寄存器AXBXCXDX作為累加器用,在加法運算中參與運算,結(jié)果存于累加器中;所有的I/O指令都隱含地使用AX與外部設(shè)備傳送信息。作為通用寄存器使用在采用基址尋址方式時,用作基址寄存器作為通用寄存器使用;常用來保存計數(shù)值,如在移位指令、循環(huán)指令和串處理指令中用作隱含的計數(shù)器。作為通用寄存器使用;在一些指令中,通常用它來存放數(shù)據(jù),所以又稱為數(shù)據(jù)寄存器;在做雙字長運算時,將DX和AX組合在一起存放雙字長數(shù),用DX存放高位字。當前代碼段的段地址,指令就是從這段取出當前代碼段的偏移地址。又稱為程序計數(shù)器,控制程序中指令執(zhí)行的順序基址指針寄存器,指示一組數(shù)據(jù)的起始地址源變址寄存器目的變址寄存器用于確定數(shù)據(jù)段中某一存儲單元的地址指向數(shù)據(jù)段,程序變量存于此段指向附加段,這個段用來存放經(jīng)過處理的中間數(shù)據(jù)堆棧指針寄存器,指示堆棧棧頂?shù)钠频刂分赶蚨褩6?,堆棧操作使用這段存儲空間17
8086/8088的標志寄存器(FR):
(1)狀態(tài)標志:狀態(tài)標志表示前面操作執(zhí)行后,算術(shù)邏輯單元所處的狀態(tài),這些狀態(tài)常作為后繼指令執(zhí)行的條件。狀態(tài)標志有6個:符號標志(SF)、零標志(ZF)、奇偶標志(PF)、進位標志(CF)、輔助進位標志(AF)和溢出標志(OF)。(2)控制標志:是人為設(shè)置的,每一個控制標志負責控制某一種特殊的功能??刂茦酥居?個:方向標志(DF)、中斷標志(IF)和陷阱標志(TF)18狀態(tài)標志(1)符號標志SF。與計算結(jié)果的最高位相同,表示計算結(jié)果的正/負。0表示正,1表示負。(2)零標志ZF。若計算結(jié)果為零,則ZF=1,否則=0。(3)奇偶標志PF。若計算結(jié)果的低8位中1的個數(shù)為偶數(shù),則PF=1,否則=0。(4)進位標志CF。若執(zhí)行的加法運算在最高位產(chǎn)生進位,或者執(zhí)行的減法運算引起最高位產(chǎn)生借位,則CF=1,否則=0。此外,帶進位的循環(huán)移位也可能會改變CF??梢杂弥噶頢TC將CF置1,用指令CLC將CF清0,用指令CMC將CF取反。19狀態(tài)標志(5)輔助進位標志AF。若執(zhí)行加法運算時第3位向第4位進位(即低半字節(jié)向高半字節(jié)),或者執(zhí)行減法運算時第3位從第4位借位,則AF=1,否則=0。(6)溢出標志OF。若計算過程產(chǎn)生溢出,則OF=1,否則=0。溢出是指字節(jié)運算的結(jié)果超出了–128~+127的范圍,或者字運算的結(jié)果超出了–32768~+32767的范圍。在進行加法運算時,每當次高位向最高位有進位而最高位沒有向前進位,或者最高位向前進位而次高位沒有向最高位進位,則ALU置OF為1。20控制標志(1)方向標志DF。這是控制串操作指令的標志。若DF=0,則串操作過程中地址將不斷增值,否則不斷減值。可用指令STD將DF置1,用指令CLD將DF清0。(2)中斷標志IF。這是控制可屏蔽中斷的標志。如果IF=0,則8086/8088對可屏蔽中斷請求不能做出響應,否則可以響應可屏蔽中斷請求??捎弥噶頢TI將IF置1,用指令CLI將IF清0?!皩F置1”稱為“開中斷”,“將IF清0”稱為“關(guān)中斷”。21控制標志(3)陷阱標志TF。這是控制8086/8088是否進入單步執(zhí)行狀態(tài)的標志。若TF=1,則8086/8088進入單步執(zhí)行狀態(tài)或跟蹤方式執(zhí)行指令狀態(tài),即每條指令執(zhí)行完后,微處理器暫停(進入陷阱),顯示處理器內(nèi)部各寄存器的值。進入單步執(zhí)行狀態(tài)便于程序的調(diào)試。如果TF=0,則連續(xù)執(zhí)行指令。
222、存儲器分段管理結(jié)構(gòu)存儲器為什么要分段呢?16位微處理器,常規(guī)上管理216=64KB的存儲空間這樣的存儲空間滿足不了應用的要求。用什么方法來擴大呢?將正常管理的64KB存儲空間定義為一個段讓微處理器能夠管理多個這樣的段通過分段存儲結(jié)構(gòu),8086/8088能夠管理1MB的存儲空間23存儲器分段后如何來管理呢?每個段的起始地址稱為:段基址或段地址每個段內(nèi)的地址稱為:段內(nèi)偏移地址一個物理存儲單元就可以通過“段地址:偏移地址”來唯一確定了如何管理“段地址”和“偏移地址”呢?設(shè)置多個段基址寄存器設(shè)置多個偏移地址寄存器都有哪些“段基址寄存器”和“偏移地址寄存器”呢?24依照用途的不同,可分為如下段代碼段(CodeSegment,CS)數(shù)據(jù)段(Data
Segment,DS)堆棧段(StackSegment,SS)附加數(shù)據(jù)段(ExtendedData
Segment,ES)存儲程序(指令)代碼。其段基址存放于CS寄存器,段內(nèi)偏移地址存放于IP寄存器存儲程序定義的變量。段基址存放于DS寄存器,段內(nèi)偏移地址存放于SI、DI或BX寄存器管理系統(tǒng)堆棧。段基址存放于SS寄存器,段內(nèi)偏移地址存放于SP或BP寄存器存儲經(jīng)過處理的中間變量。段基址存放于ES寄存器,段內(nèi)偏移地址存放于SI、DI或BX寄存器存儲器分段管理結(jié)構(gòu)25邏輯地址:由段基址和相對于該段的偏移地址共同描述的地址00000H----FFFFFH例如:52000H例如:5000H:2000H段基址偏移地址段基址寄存器管理程序設(shè)計中使用的,方便程序設(shè)計物理地址:20根地址線所表示的地址
260000段地址如何根據(jù)16位的段地址和16位的段內(nèi)偏移地址來計算20位的物理地址呢?
19…43…0段地址左移四位偏移地址151413……210∑20位的物理地址27物理地址的計算方法段地址左移四位,再加上偏移地址,就得到20位的物理地址。5000H:2000H邏輯地址52000H物理地址計算尋址內(nèi)存…………..00000HFFFFFH282.2尋址方式
所謂尋址方式(Addressing)指的是指令按照何種方式尋找或訪問到所需的操作數(shù)或信息。尋址方式分為指令尋址和數(shù)據(jù)尋址。指令尋址是為了找到下一條指令;數(shù)據(jù)尋址是為了找到本條指令所需的操作數(shù)。
29順序(PC)+1PC跳躍由轉(zhuǎn)移指令指出LDA1000ADD1001DEC1200JMP7LDA2000SUB2001INCSTA2500LDA1100...0123456789PC+1指令地址尋址方式指令地址指令順序?qū)ぶ?順序?qū)ぶ?順序?qū)ぶ?跳躍尋址7順序?qū)ぶ?2.2尋址方式
1.指令尋址
302.2尋址方式
(1)立即數(shù)尋址(2)直接尋址(3)間接尋址(4)寄存器尋址
1.指令尋址
2.數(shù)據(jù)尋址
(5)寄存器間接尋址(6)基址尋址(7)變址尋址(8)堆棧尋址31形式地址指令字中的地址有效地址操作數(shù)的真實地址約定
指令字長=存儲字長=機器字長1.立即尋址指令執(zhí)行階段不訪存
A的位數(shù)限制了立即數(shù)的范圍形式地址A操作碼尋址特征OP
#
A立即尋址特征立即數(shù)可正可負補碼形式地址A就是操作數(shù)立即數(shù)尋址MOVAX,4567H;將立即數(shù)4567H送到AXMOVBL,78H;將立即數(shù)78H送到BL32332.直接尋址EA=A操作數(shù)主存尋址特征LDAAAACC
執(zhí)行階段訪問一次存儲器
A的位數(shù)決定了該指令操作數(shù)的尋址范圍操作數(shù)的地址不易修改(必須修改A)有效地址由形式地址直接給出直接尋址MOVAX,DS:[3000H]34353.間接尋址EA=(A)有效地址由形式地址間接提供OPA尋址特征AEA主存EAA1EA
A1主存
EA10執(zhí)行指令階段2次訪存可擴大尋址范圍便于編制程序OPA尋址特征A一次間址多次間址操作數(shù)操作數(shù)多次訪存364.寄存器尋址EA=Ri執(zhí)行階段不訪存,只訪問寄存器,執(zhí)行速度快OPRi尋址特征寄存器個數(shù)有限,可縮短指令字長操作數(shù)………………R0RiRn寄存器有效地址即為寄存器編號MOVEAX,EDXINCCLMOVEAX,EDXINCCL37EA=(Ri
)5.寄存器間接尋址
有效地址在寄存器中,操作數(shù)在存儲器中,執(zhí)行階段訪存操作數(shù)主存OPRi尋址特征
便于編制循環(huán)程序地址………………R0RiRn寄存器有效地址在寄存器中寄存器間接尋址MOVAX,[BP]38396.基址尋址(1)采用專用寄存器作基址寄存器EA=(BR)+ABR為基址寄存器OPA操作數(shù)主存尋址特征ALUBR
可擴大尋址范圍
便于程序搬家
BR內(nèi)容由操作系統(tǒng)或管理程序確定
在程序的執(zhí)行過程中BR內(nèi)容不變,形式地址A可變40(2)
采用通用寄存器作基址寄存器操作數(shù)主存尋址特征ALUOPR0AR0
作基址寄存器由用戶指定哪個通用寄存器作為基址寄存器通用寄存器R0Rn-1R1…基址寄存器的內(nèi)容由操作系統(tǒng)確定在程序的執(zhí)行過程中R0內(nèi)容不變,形式地址A可變41MOVDX,[AX+15]427.變址尋址EA=(IX)+AOPA操作數(shù)主存尋址特征ALUIX可擴大尋址范圍便于處理數(shù)組問題
IX的內(nèi)容由用戶給定IX為變址寄存器(專用)在程序的執(zhí)行過程中IX內(nèi)容可變,形式地址A不變通用寄存器也可以作為變址寄存器43MOVAX,[DI+MASK]448.堆棧尋址(1)堆棧的特點堆棧硬堆棧軟堆棧多個寄存器指定的存儲空間先進后出(一個入出口)棧頂?shù)刂?/p>
由SP
指出–11FFFH+12000H進棧(SP)–1SP出棧(SP)+1SP棧頂棧底2000HSP2000H……1FFFHSP1FFFH棧頂棧底進棧出棧1FFFH棧頂2000H棧頂45(2)堆棧尋址舉例15200HACCSPX棧頂200H棧底主存151FFHACCSP15棧頂200H棧底主存X1FFHPUSHA前PUSHA后POPA前POPA后Y1FFHACCSPX棧頂200H棧底主存151FFH15200HACCSP棧頂200H棧底主存X1546例:假定8086工作在實模式下,(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,變量TABLE的偏移地址為0100H。請指出下列指令的源操作數(shù)字段是什么尋址方式?它的有效地址(EA)和物理地址(PA)分別是多少?⑴MOVAX,[1234H]⑵MOVAX,TABLE⑶MOVAX,[BX+100H]⑷MOVAX,TABLE[BP][SI]2.3.1指令的操作碼與操作數(shù)指令操作碼(OperationCode)指令操作數(shù)(Operand)馮·諾依曼型計算機機器指令的邏輯格式規(guī)定了指令所具有的功能。課程中主要用匯編語言助記符表示。指令所要處理的數(shù)據(jù)。常以數(shù)據(jù)所在存儲單元的地址形式給出。也稱“指令地址碼”。2.3處理器的指令系統(tǒng)
2.3.1指令的操作碼與操作數(shù)一條指令中,操作數(shù)可能有一個、兩個或三個,甚至更多。當然,操作數(shù)的個數(shù)也可以是零,即指令沒有操作數(shù),如停機指令。在這些操作數(shù)中,作為處理單元輸入的叫源操作數(shù)(SourceOperand),用于存放處理結(jié)果的叫目的操作數(shù)(DestinationOperand)。2.3處理器的指令系統(tǒng)
2.3.1指令的操作碼與操作數(shù) “數(shù)據(jù)表示”:指令中所能表示的操作數(shù)數(shù)據(jù)類型,即能夠被計算機硬件直接辨識的操作數(shù)數(shù)據(jù)類型。 常用的“數(shù)據(jù)表示”有定點數(shù)(含有符號數(shù)和無符號數(shù))、浮點數(shù)(含單精度浮點數(shù)和雙精度浮點數(shù))、字符、邏輯數(shù)(又稱布爾型數(shù)據(jù)),可以由硬件直接提供。2.3處理器的指令系統(tǒng)
2.3.1指令的操作碼與操作數(shù)
“數(shù)據(jù)結(jié)構(gòu)”:程序員在程序中所能夠使用的數(shù)據(jù)類型及其之間的結(jié)構(gòu)關(guān)系。比如:數(shù)組、字符串、結(jié)構(gòu)體、隊列、鏈表、樹、圖、堆棧等。在硬件的基礎(chǔ)上由軟件實現(xiàn)“數(shù)據(jù)表示”是數(shù)據(jù)結(jié)構(gòu)的組成元素,是數(shù)據(jù)結(jié)構(gòu)的子集。2.3處理器的指令系統(tǒng)
512.3處理器的指令系統(tǒng)
通用計算機系統(tǒng)的指令集可分為5類基本指令:(1)算術(shù)/邏輯/移位指令(簡稱算邏指令)(2)數(shù)據(jù)傳送指令(簡稱數(shù)傳指令)(3)控制轉(zhuǎn)移指令(4)輸入/輸出指令(5)處理器控制及調(diào)試指令2.3.2指令的基本功能
52(1)算邏指令定點加法指令ADD定點減法指令SUB定點乘法指令MUL定點除法指令DIV加1指令I(lǐng)NC減1指令DEC比較指令CMP浮點加法指令ADDF浮點減法指令SUBF浮點乘法指令MULF浮點除法指令DIVF十進制數(shù)算術(shù)運算指令使用這些指令時,要注意它們對處理器中狀態(tài)標志位的影響算術(shù)指令2.3.2指令的基本功能
53(1)算邏指令“與”運算指令AND“或”運算指令OR“非”運算指令NOT“異或”運算指令XOR位測試位清除位求反
算術(shù)左移指令算術(shù)右移指令邏輯左移指令邏輯右移指令帶進位循環(huán)左移指令不帶進位循環(huán)左移指令帶進位循環(huán)右移指令不帶進位循環(huán)右移指令邏輯指令移位指令2.3.2指令的基本功能
54(2)數(shù)傳指令根據(jù)數(shù)據(jù)的流向分:寄存器與寄存器之間的數(shù)據(jù)傳送寄存器與主存儲器單元之間的數(shù)據(jù)傳送寄存器與堆棧之間的數(shù)據(jù)傳送堆棧與主存儲器單元之間的數(shù)據(jù)傳送內(nèi)存單元與內(nèi)存單元之間的數(shù)據(jù)傳送2.3.2指令的基本功能
55(2)數(shù)傳指令根據(jù)傳輸?shù)墓δ芊郑阂话銈魉椭噶顚崿F(xiàn)數(shù)據(jù)復制功能,即把源操作數(shù)的內(nèi)容寫入目的操作數(shù)。其匯編語言助記符通常為MOV。在有些計算機上,將主存儲器單元的內(nèi)容寫入寄存器的數(shù)據(jù)傳送指令,其匯編語言助記符為LOAD;將寄存器內(nèi)容寫入主存儲器單元的數(shù)據(jù)傳送指令,其匯編語言助記符為STORE。2.3.2指令的基本功能
56(2)數(shù)傳指令根據(jù)傳輸?shù)墓δ芊郑憾褩2僮髦噶顗喝霔m擯USH彈出棧頂POPPUSH的源操作數(shù)和POP指令的目的操作數(shù),一般是寄存器號,但也可能是主存儲器單元地址2.3.2指令的基本功能
57(2)數(shù)傳指令上述兩類數(shù)據(jù)指令的數(shù)據(jù)流動是單方向的。要實現(xiàn)兩個數(shù)據(jù)的交換,需要編寫三條指令并額外占用一個存儲單元。因此大多數(shù)計算機都提供“數(shù)據(jù)交換指令”來簡化雙向數(shù)據(jù)流動的實現(xiàn),如Intel80x86中的XCHG指令。這類指令的源操作數(shù)和目的操作數(shù)一般都是寄存器,至多允許源操作數(shù)是主存儲器單元。數(shù)據(jù)交換指令的執(zhí)行時間一般較長。2.3.2指令的基本功能
58(3)控制轉(zhuǎn)移指令跳轉(zhuǎn)指令JUMP分支指令子程序調(diào)用CALL/返回指令RET循環(huán)控制指令LOOP中斷系統(tǒng)指令
2.3.2指令的基本功能
將指令操作數(shù)的內(nèi)容寫入PC之中,強制改變指令執(zhí)行的順序。也稱無條件轉(zhuǎn)移指令59(3)控制轉(zhuǎn)移指令跳轉(zhuǎn)指令JUMP分支指令根據(jù)特定條件(往往是上一條指令的執(zhí)行結(jié)果),決定程序是順序執(zhí)行還是轉(zhuǎn)移到一個新的位置執(zhí)行,即有條件地改變指令執(zhí)行的順序。也稱條件轉(zhuǎn)移指令。條件轉(zhuǎn)移指令可能依據(jù)的條件有:
為零、為正/負數(shù)、發(fā)生進位/借位、為奇數(shù)/偶數(shù)、發(fā)生溢出或以上條件的組合。
2.3.2指令的基本功能
60(3)控制轉(zhuǎn)移指令分支指令條件轉(zhuǎn)移指令又分為“絕對轉(zhuǎn)移”和“相對轉(zhuǎn)移”兩種。對于“絕對轉(zhuǎn)移”,當條件滿足時,計算機將把該指令中所含操作數(shù)的內(nèi)容直接寫入PC中。對于“相對轉(zhuǎn)移”,當條件滿足時,計算機將把該指令中所含操作數(shù)的內(nèi)容與PC中的內(nèi)容相加后,把結(jié)果寫入PC中。
2.3.2指令的基本功能
61常見的條件轉(zhuǎn)移指令有:等于零轉(zhuǎn)移BEQ不等于零轉(zhuǎn)移BNEQ小于轉(zhuǎn)移BLS大于轉(zhuǎn)移BGT小于等于轉(zhuǎn)移/不大于轉(zhuǎn)移BLEQ大于等于轉(zhuǎn)移/不小于轉(zhuǎn)移BGEQ不帶符號小于轉(zhuǎn)移BLSU不帶符號大于轉(zhuǎn)移BGTU不帶符號小于等于轉(zhuǎn)移/不帶符號不大于轉(zhuǎn)移BLEQU不帶符號大于等于轉(zhuǎn)移/不帶符號不小于轉(zhuǎn)移BGEQU沒有進位轉(zhuǎn)移BCC有進位轉(zhuǎn)移BCS沒有溢出轉(zhuǎn)移BVC有溢出轉(zhuǎn)移BVS2.3.2指令的基本功能
62(3)控制轉(zhuǎn)移指令子程序調(diào)用CALL/返回指令RET在程序中,有一些具有特定功能的程序段會被反復使用。為了提高程序的可讀性、可重用性和可維護性,人們將這樣的程序段獨立出來,將其定義成一個子程序。這樣,在需要執(zhí)行特定功能時,主程序中不再需要編寫一個程序段,而只需要編寫一條調(diào)用子程序的指令即可。
2.3.2指令的基本功能
63(3)控制轉(zhuǎn)移指令子程序調(diào)用CALL/返回指令RET調(diào)用子程序的指令格式:CALLSubprogram_Name。功能是,首先把當前程序的斷點(也稱主調(diào)程序的返回地址,即當前程序計數(shù)器PC中的值)保存到系統(tǒng)堆棧中,然后由子程序名Subprogram_Name求得子程序的入口地址,最后把子程序的入口地址寫入PC,從而將程序控制轉(zhuǎn)移至被調(diào)子程序。返回指令:RET指令的功能是把保存在堆棧中的程序斷點彈回到PC之中。64子程序調(diào)用和返回CALLSUB1.........CALLSUB2…...CALLSUB2…RETURNRETURN......主程序地址200021002101子程序SUB1240025002501256025612700主存空間分配程序執(zhí)行流程子程序SUB265(1)算邏指令(2)數(shù)傳指令(3)控制轉(zhuǎn)移指令(4)輸入/輸出指令包括:啟動輸入/輸出設(shè)備、停止輸入/輸出設(shè)備、測試輸入/輸出設(shè)備及數(shù)據(jù)的輸入或輸出等指令。例如,Intel80x86中的輸入指令為IN指令,輸出指令為OUT指令。
2.3.2指令的基本功能
66(5)處理器控制及調(diào)試指令包括各種設(shè)置/清除標志位(如陷阱標志、中斷允許標志、處理器工作狀態(tài)標志位)指令、特權(quán)指令、進程同步指令、調(diào)試指令、停機指令(HALT)等。調(diào)試指令用于硬件或軟件的調(diào)試。硬件調(diào)試指令包括鑰匙位置、開關(guān)狀態(tài)的讀取指令,重要寄存器和主存儲器單元內(nèi)容的顯示等。軟件調(diào)試指令包括斷點的設(shè)置及跟蹤指令,自陷阱指令等。2.3.2指令的基本功能
672.3.3指令的格式
涉及指令的操作碼長度、指令“地址制”及采用的尋址方式、指令長度等三方面的問題。
68指令操作碼的長度有定長和不定長兩種選擇。定長的操作碼:可以簡化指令譯碼器的設(shè)計與實現(xiàn);不定長操作碼(也稱擴展操作碼):可使常用指令擁有較短的操作碼而不常用指令擁有較長的操作碼,從而壓縮程序所占的存儲空間。在一條指令中出現(xiàn)幾個操作數(shù)地址,這是指令的“地址制”所要解決的問題。一般情況下,指令中地址的個數(shù),可以取4,3,2,1,0個。2.3.3指令的格式
69擴展操作碼技術(shù)操作碼的位數(shù)隨地址數(shù)的減少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作碼8位操作碼12位操作碼16位操作碼15條三地址指令15條二地址指令15條一地址指令16條零地址指令70地址制(1)四地址(2)三地址OPA1A2A3A486666A1
第一操作數(shù)地址A2
第二操作數(shù)地址A3
結(jié)果的地址A4
下一條指令地址若PC代替A4(A1)OP(A2)A38888OPA1A2A3(A1)OP(A2)A34次訪存4次訪存尋址范圍26=64尋址范圍28=256若A3用A1或A2代替設(shè)指令字長為32位操作碼固定為8位71(3)二地址OPA1A281212(A1)OP(A2)A1(A1)OP(A2)A2或4次訪存若ACC代替A1(或A2)若結(jié)果存于ACC(4)一地址(5)零地址OPA1824無地址碼(ACC)OP(A1)ACC2次訪存尋址范圍212=4K尋址范圍224=16M3次訪存72“地址制”設(shè)計或改進的目的是為了壓縮指令長度,縮短指令的執(zhí)行時間。在相同的指令長度內(nèi),減少地址個數(shù)可以擴大所能表示指令的條數(shù)或操作數(shù)的尋址范圍。同一條指令中不同操作數(shù)所采用的尋址方式可以相同或不同。一條指令中的操作數(shù)可以都存放在寄存器里,也可以把一個操作數(shù)存放在寄存器里,而另一個操作數(shù)存放在主存里,還可以把所有的操作數(shù)都存放在主存里。存放在主存里的操作數(shù)可以按基址尋址、變址尋址或間接尋址。2.3.3指令的格式
73指令字長指令字長決定于操作碼的長度指令字長=存儲字長2.指令字長可變操作數(shù)地址的長度操作數(shù)地址的個數(shù)1.指令字長固定按字節(jié)的倍數(shù)變化74固定長度的指令便于指令的存取和譯碼,但會限制操作數(shù)個數(shù)的增加和復雜尋址方式的使用;變化長度的指令的特點正好相反例如,IBMSystem370指令采用定長的8位操作碼,有單地址、兩地址和三地址三種地址制,不同的操作數(shù)可以采用不同的尋址方式,指令字長有16位、32位和48位三種。Intel公司8086/8088微處理器的指令格式2.3.3指令的格式
752.3.4幾類常用8086指令詳解數(shù)據(jù)傳送指令算術(shù)運算指令邏輯運算與移位指令控制轉(zhuǎn)移指令76重點關(guān)注:指令的匯編格式指令的基本功能指令支持的尋址方式指令的執(zhí)行對標志位的影響指令的特殊要求772.3.4.1數(shù)據(jù)傳送指令數(shù)據(jù)傳送是計算機中最基本、最常用的一類操作。?使用頻率最高?不影響標志位?尋址方式最豐富特點:78傳送指令(MOV)交換指令(XCHG)I/O指令(IN/OUT)裝入有效地址指令(LEA)裝入段寄存器指令(LDS、LES)壓棧/彈棧指令(PUSH/POP/)791.傳送指令指令操作:(源操作數(shù))→目的操作數(shù)
指令格式:MOV目的操作數(shù),源操作數(shù)
尋址規(guī)定: REG/MEM/SREG,REGREG/MEM,SREG REG/SREG,MEMREG/MEM,IMM8/16位通用寄存器8/16位存儲器段寄存器8/16位立即數(shù)80通用寄存器(AX、BX、CX、DX、BP、SP、SI、DI)立即數(shù)CS存儲器段寄存器(SS、DS、ES)MOV指令允許的傳送關(guān)系81使用說明:源操作數(shù)和目的操作數(shù)的類型必須一致。目的操作數(shù)不能為立即數(shù)。CS和IP均不能用作指令的目的寄存器。段寄存器間不能直接傳送,也不能直接將立即數(shù)送給段寄存器。源操作數(shù)為立即數(shù),而目的操作數(shù)類型不確定時,要給目的操作數(shù)加類型說明。源操作數(shù)和目的操作數(shù)不能同為存儲器操作數(shù)。82⑴MOVDS,100
[例2.3]識別下列指令的正確性,對錯誤的指令,說明錯誤的原因。⑵MOV[1000H],23H錯。源、目的操作數(shù)不能同為存儲器尋址。⑶MOV[1000H],[2000H]錯。立即數(shù)不能直接賦給段寄存器。錯。目的操作數(shù)長度不確定。⑷MOVDATA,1133H⑸MOVCS,AX依賴于DATA的定義錯。不能用傳送指令改變代碼段寄存器。⑹MOVAX,[0100H+BX+BP]錯。地址寄存器不能同為基址寄存器。832.交換指令操作:(目的操作數(shù))(源操作數(shù))格式:XCHG目的操作數(shù),源操作數(shù)
REG/MEM, REG REG,MEM說明:
(1)基本用法同MOV指令;(2)該指令不影響標志位;
(3)不允許使用段寄存器。84[例]FIRST,SECOND已定義為字節(jié)變量,寫出將變量FIRST和SECOND中內(nèi)容交換的指令序列。
解:⑴用交換指令
XCHG AL,F(xiàn)IRST XCHG SECOND,AL XCHG AL,F(xiàn)IRST
⑵用MOV指令
MOV AL,F(xiàn)IRST MOV BL,SECOND MOV FIRST,BL MOV SECOND,AL85⑴輸入指令格式:IN累加器,端口 AL/AX,IMM8AL/AX,DX操作:(I/O端口)→AL/AX⒊I/O指令直接尋址:指令給出的立即數(shù)是I/O端口地址間接尋址:
DX寄存器給出的是I/O端口地址86⑵輸出指令格式:OUT端口, 累加器
IMM8,AL/AXDX,AL/AX操作:(AL/AX/EAX)→I/O端口說明:I/O端口有兩種尋址方式
使用立即數(shù)的直接尋址,尋址范圍為0~255;
使用DX寄存器的間接尋址,尋址范圍為0~216-1。87格式:LEAr16,mem;r16<--mem的有效地址EA把源操作數(shù)的地址偏移量->目的操作數(shù)寄存器例LEAAX,[BP][DI]說明LEA指令處理變量的地址(EA)而不是變量的內(nèi)容
LEA和MOV指令的比較
MOVBX,OFFSETVAL;將VAL的有效地址=>BXMOVBX,VAL;將VAL的值=>BXLEABX,VAL;將VAL的有效地址=>BX4.地址-目標傳送指令88MOV指令用OFFSET操作不能直接取數(shù)組中任意元素的位移量,只能取數(shù)組的第一個元素的位移量,而LEA可以傳送任意數(shù)組元素的位移量。如LEADX,BETA[BX][SI]LEA的源操作數(shù)必須是存儲器操作數(shù)LEA不影響F標志896.壓棧/彈棧指令格式:PUSH 源操作數(shù)
REG16/MEM16/IMM16
操作:(SP)-2→SP (源操作數(shù))→(SS:SP)90格式:POP目的操作數(shù)
MEM16/REG16
操作:([SS:[SP])→目的操作數(shù) (SP)+2→SP彈棧指令91堆棧指令的操作數(shù)只能為字。PUSH和POP要成對出現(xiàn),以保持堆棧平衡。堆棧指令也隱含了一個目的/源操作數(shù)——堆棧。壓棧順序是先壓高字節(jié)后壓低字節(jié),彈棧則是先彈低字節(jié)后彈高字節(jié)。(先進后出)使用說明:注意:(1)指令執(zhí)行后不影響標志位;(2)不能用立即尋址方式;(3)目標操作數(shù)不能是CS。92[例]用堆棧操作指令將BX和CX中的兩個16位數(shù)分別壓入堆棧然后再彈出。解:
PUSH BX
;先壓BX
PUSH CX
;后壓CX
POP CX POP BX932.3.4.2算術(shù)運算指令包括:加/減法指令(ADD/ADC/SUB/SBB)加1/減1指令(INC/DEC)求補指令(NEG)數(shù)據(jù)寬度變換指令(CBW/CWD)比較指令(CMP)乘/除法指令(MUL/IMUL/DIV/IDIV)BCD調(diào)整指令(AAA/AAS/AAM/AAD/DAA/DAS)94⒈加法/減法指令
操作: ADD:(目的)+(源)→目的
SUB:(目的)-(源)→目的
ADC:(目的)+(源)+CF→目的
SBB:(目的)-(源)-CF→目的目的操作數(shù),源操作數(shù)REG,REG/MEM/IMMMEM,REG/IMM格式:ADDSUBADCSBB95使用說明:ADD/SUB指令用于單個字節(jié)/字的加/減法運算;ADC/SBB指令則常用于多精度或多字節(jié)/多字的加/減法運算。INC/DECREG/MEM指令與ADD/SUBREG/MEM,1的異同:兩者都執(zhí)行加1/減1操作,但前者不影響進位,而后者影響。96加法指令對條件標志位的影響:SF=1;
結(jié)果為負0;
否則ZF=1;
結(jié)果為00;
否則CF=1;
和的最高有效位有向高位的進位0;
否則OF=1;
2個操作數(shù)符號相同,而結(jié)果符號與之相反0;
否則表示無符號數(shù)相加的溢出表示帶符號數(shù)相加的溢出97減法指令對條件標志位的影響:CF=1;
減法轉(zhuǎn)換為加法運算時無進位0;
否則OF=1;
2個操作數(shù)符號相反,而結(jié)果符號與減數(shù)相同0;
否則表示無符號數(shù)相減的溢出表示帶符號數(shù)相減的溢出CF=1;
被減數(shù)最高有效位有向高位的借位0;
否則98
[例]兩個32位雙字數(shù)據(jù)X、Y定義如下:
XDW 1234H,5678HYDW3FEAH,A033H請編寫計算X=X-Y的程序段(低位在前)。解:
MOV AX,YSUB X,AX ;低16位字數(shù)據(jù)相減
MOV AX,2[Y] SBB 2[X],AX ;高16位字數(shù)據(jù)相減
992.整數(shù)變反指令(求補)格式:NEG目的操作數(shù)
REG/MEM操作:0-(OP1)→OP1應用:常用于求絕對值。解:TESTAX,8000HJZNEXTNEGAXNEXT:HLT[例]:求AX中存放的有符號數(shù)的絕對值。1003.比較指令操作:(OP1)-(OP2),根據(jù)操作結(jié)果修改狀態(tài)標志,但不改變目標操作數(shù)值。說明:⑴CMP指令常用于比較兩個數(shù),然后根據(jù)指令產(chǎn)生的狀態(tài)標志進行程序轉(zhuǎn)移。 ⑵CMP與SUB指令都執(zhí)行減法操作,但前者不因操作結(jié)果改變目標操作數(shù)值,而后者改變。格式:CMP 目的操作數(shù),源操作數(shù)
REG,REG/MEM/IMM MEM,REG/IMM1014.乘法指令
乘法指令分為有符號數(shù)和無符號數(shù)乘法指令(IMUL/MUL)。
?無符號數(shù)乘法指令和有符號數(shù)乘法指令都是單操作數(shù)格式。102◆單操作數(shù)乘法指令格式:MUL/IMUL
源操作數(shù)
REG/MEM操作:MUL和IMUL分別為有符號數(shù)和無符號數(shù)乘法指令,兩種指令除操作數(shù)類型不同外,操作完全相同:字:(AX)×(源操作數(shù))→DX:AX字節(jié):(AL)×(源操作數(shù))→AX源操作數(shù)103說明:●單操作數(shù)乘法指令的被乘數(shù)是隱含的(在AL/AX中),而結(jié)果長度一定是被乘數(shù)/乘數(shù)的二倍(在AX/DX:AX中)。●源操作數(shù)不能為立即數(shù)?!褚鶕?jù)是有符號數(shù)還是無符號數(shù),分別選用IMUL或MUL指令●指令執(zhí)行影響CF和OF標志,若指令執(zhí)行后,結(jié)果的高一半是有效數(shù)值位,則CF=OF=1,否則CF=OF=0。104
[例]若(AL)=96H,(BL)=12H,求分別執(zhí)行MULBL和IMULBL指令后的結(jié)果及OF、CF狀態(tài)。
解:MULBL完成AL和BL中的兩個無符號數(shù)相乘,即:(AX)=(AL)×(BL)=96H×12H=0A8CH
IMULBL完成AL和BL中的兩個有符號數(shù)相乘,此時AL中的數(shù)是負數(shù),真值為-6AH,即:-6AH×12H=-774H
用補碼表示:(AX)=F88CH
AH含有效數(shù)字,∴OF=1、CF=1。AH含有效數(shù)字,∴OF=1、CF=1。1055.除法指令格式:DIV∕IDIV源操作數(shù)
REG/MEM操作:按源操作數(shù)類型:●字節(jié):(AX)/(源),商存于AL中,余數(shù)存于AH?!褡?(DX:AX)/(源),商存于AX中,余數(shù)存于DX。106除法指令的被除數(shù)是隱含的,且長度一定是除數(shù)的二倍(在AX/DX:AX中)。所以,使用除法指令常要擴展被除數(shù)長度。有符號數(shù)一般用:CBW/CWD源操作數(shù)不能為立即數(shù)對所有條件標志位均無定義說明:107
MOVAX,a①;a×b在CX:BX中②③
MOVAX,c④;c在DX:AX中⑤;a×b+c在DX:AX中⑥⑦;商存入S⑧IMULbMOVCX,DXMOVBX,AXCWDADDAX,BXMOVDX,CXIDIVaMOVS,AX[例]下列程序段完成S=(a×b+c)/a的運算,其中變量a、b、c和S均為帶符號的字數(shù)據(jù),結(jié)果的商存入S,余數(shù)則不計,請在下列空格中填入合適的指令。 1082.3.4.3邏輯運算和移位指令
1.邏輯運算指令邏輯運算指令包括AND、OR、XOR、NOT和TEST指令,所有指令都對其操作數(shù)按位進行邏輯運算。操作數(shù)可以是字節(jié)、字。109功能:分別按位進行邏輯“與”、“或”、“異或”、“測試”和“非”?!舾袷剑篈ND ORXORTEST
目標操作數(shù),源操作數(shù)
REG,REG/MEM/IMMMEM,REG/IMM
NOT目標操作數(shù)
REG/MEM邏輯運算指令110使用說明:①邏輯運算指令除NOT指令外,都影響標志寄存器的狀態(tài)標志位,且邏輯運算后進位標志CF一定為0,所以邏輯運算指令常用于清0和清進位位。②編程時要根據(jù)操作合理選用指令,一般:●對某些二進制位‘清零’用邏輯‘與’指令AND;
●對某些二進制位‘置位’用邏輯‘或’指令OR;
●對某些二進制位‘求反’用邏輯‘異或’指令XOR,全部位‘求反’用邏輯‘非’指令NOT。111
③AND指令與TEST指令的相同之處是都執(zhí)行按位“與”操作,兩者執(zhí)行后對標志寄存器中狀態(tài)標志位的影響相同,不同之處是前者改變目標操作數(shù)的值,而后者并不改變目標操作數(shù)的值。所以TEST指令與CMP指令的用法類似,用于產(chǎn)生按位測試的條件碼。112[例]寫出一條能完成下述操作的指令:
⑴將AX的高字節(jié)清零,低字節(jié)不變;
⑵將BX的低字節(jié)置成全‘1’,高字節(jié)不變;
⑶將CX的高字節(jié)變反,低字節(jié)不變。
1132.移位指令
移位指令包括:算術(shù)移位指令(SAL/SAR)邏輯移位指令(SHL/SHR)循環(huán)移位指令(ROR/ROL/RCR/RCL)114算術(shù)/邏輯左移指令(SAL/SHL)CF0算術(shù)右移指令(SAR)CF邏輯右移指令(SHR)CF0115循環(huán)左移指令(ROL)循環(huán)右移指令(ROR)CFCF帶進位位循環(huán)左移指令(RCL)CF帶進位位循環(huán)右移指令(RCR)CF116使用說明移位指令的源操作數(shù)采用立即數(shù)尋址時,8086指令只能為1。移位指令常用于二進制數(shù)的倍乘和倍除,即算術(shù)/邏輯移n位,相當于把二進制數(shù)乘以或除以2n。要注意算術(shù)右移(SAR)與邏輯右移(SHR)的區(qū)別:前者在符號位和數(shù)值位依次右移的同時,用符號位充填符號位,而后者用0充填符號位。所以,有符號和無符號數(shù)倍乘用SHL/SAL均可,但倍除時,有符號數(shù)用SAR和無符號數(shù)用SHR。移位指令也常用于循環(huán)控制,如邏輯尺控制循環(huán)。1172.3.4.4控制轉(zhuǎn)移指令
控制轉(zhuǎn)移指令包括:無條件轉(zhuǎn)移指令(JMP)調(diào)用/返回指令(CALL/RET)條件轉(zhuǎn)移指令(JCC)循環(huán)控制指令(LOOP)中斷指令(INT)五類??刂妻D(zhuǎn)移指令的共同特點是可以改變CS:IP的內(nèi)容,從而改變程序執(zhí)行順序。1182.3.5關(guān)于指令系統(tǒng)的說明正確使用指令系統(tǒng),關(guān)鍵要弄清楚:▲指令的各種類型▲每條指令的功能及格式▲每條指令對操作數(shù)的要求▲指令執(zhí)行后對標志寄存器的影響源/目的操作數(shù)及其尋址方式操作數(shù)長度顯式還是隱式▲指令運用的多樣性與優(yōu)化1191.應把指令格式(句法)與尋址方式聯(lián)系起來理解、掌握。
每條指令的顯式操作數(shù),無論是OP1、OP2,都無非是立即數(shù)、寄存器數(shù)或存儲器數(shù),其對應的尋址方式可能是前面所講的尋址方式之一。1202.使用指令時,要特別注意弄清楚指令隱含的操作寄存器例如:乘、除法指令的單操作數(shù)格式下,只顯式指出了源操作數(shù)的乘數(shù)或除數(shù),但應注意目的操作數(shù)和源操作數(shù)的被乘數(shù)/被除數(shù)必須存放在A累加器或DX:AX中。1213.對帶符號和無符號數(shù),許多同種操作卻要使用不同的指令。例如:指令名稱對帶符號數(shù)對無符號數(shù)乘法指令I(lǐng)MULMUL除法指令I(lǐng)DIVDIV移位指令*
SAL/SARSHL/SHR*算術(shù)/邏輯左移相同,但右移過程不同。例如:設(shè)AX=8520HSHRAX,1后,結(jié)果是AX=4290HSARAX,1后,結(jié)果是AX=C290H1224.要嚴格區(qū)分指令是對地址還是對地址中的內(nèi)容(數(shù)據(jù))進行操作例如:LEABX,TABLE;TABLE的偏移地址→BXMOVBX,TABLE*
;字變量TABLE中的內(nèi)容→BXMOVBX,OFFSETTABLE;TABLE的偏移地址→BXXCHGAX,BX;BX中的內(nèi)容與AX中的內(nèi)容變換XCHGAX,[BX];BX所指示的地址(內(nèi)存單元)中;的內(nèi)容與AX中的內(nèi)容變換*當將TABLE作為一個變量用數(shù)據(jù)定義偽指令定義過時,它是一個符號地址;當將它作為一個數(shù)用EQU或等號"="定義過時,它是一個立即數(shù)。1232.4.1如何提高機器速度1.提高訪存速度2.提高I/O和主機之間的傳送速度提高整機處理能力高速芯片Cache多體并行多總線DMAI/O處理機通道高速器件改進系統(tǒng)結(jié)構(gòu),開發(fā)系統(tǒng)的并行性中斷3.提高運算器速度高速芯片改進算法快速進位鏈2.4流水線技術(shù)1242.4.2系統(tǒng)的并行性時間上互相重疊2.并行性的等級指令級(指令之間)過程級(程序、進程)兩個或兩個以上事件在同一時刻
發(fā)生兩個或兩個以上事件在同一時間段
發(fā)生并行1.并行的概念粗粒度軟件實現(xiàn)細粒度硬件實現(xiàn)并發(fā)同時125取指令3執(zhí)行指令32.4.3指令流水原理2.指令的二級流水1.指令的串行執(zhí)行取指令
取指令部件
完成總有一個部件空閑指令預取若取指
和執(zhí)行
階段時間上完全重疊指令周期減半速度提高1倍…執(zhí)行指令
執(zhí)行指令部件
完成取指令1執(zhí)行指令1取指令2執(zhí)行指令2取指令3執(zhí)行指令3取指令2執(zhí)行指令2取指令1執(zhí)行指令1126必須等上條
指令執(zhí)行結(jié)束,才能確定下條
指令的地址造成時間損失3.影響指令流水效率加倍的因素(1)執(zhí)行時間>取指時間
(2)條件轉(zhuǎn)移指令
對指令流水的影響
解決辦法
?取指令部件指令部件緩沖區(qū)執(zhí)行指令部件猜測法1274.指令的六級流水六級流水14個時間單位串行執(zhí)行6×9=
54
時間單位完成一條指令6個時間單位COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令1指令2指令3指令4指令5指令6指令7指令8指令91234567891011121314t取指譯碼地址取數(shù)執(zhí)行寫結(jié)果128指令1與指令4沖突指令2與指令5沖突指令1、指令3、指令6沖突……COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令1指令2指令3指令4指令5指令6指令7指令8指令91234567891011121314t2.4.4影響指令流水性能的因素1.訪存沖突解決辦法?指令存儲器和數(shù)據(jù)存儲器分開?指令預取技術(shù)(適用于訪存周期短的情況)取指譯碼地址取數(shù)執(zhí)行寫結(jié)果1292.相關(guān)問題程序的相近指令之間出現(xiàn)某種關(guān)聯(lián)使指令流水出現(xiàn)停頓影響流水線效率(1)控制相關(guān)WOEIFOCODIWOEIFODIFIFIDIFICOFIFOCODIFIWOEIFOCODIFIDIFOEIWOEIFOCOFIDICOWODIFICOFI指令1指令2指令3指令4指令5指令6指令7指令15指令161234567891
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植物澆灌器課程設(shè)計
- 2024年城市配送運輸框架合同3篇
- 消化營養(yǎng)生物課程設(shè)計
- 旋風風離器課程設(shè)計
- 管理會計課程設(shè)計日記
- 電網(wǎng)規(guī)劃課程設(shè)計6
- 2024年家長參與學生課外活動責任合同3篇
- 2024年度離婚協(xié)議簽訂前財產(chǎn)評估與分割爭議解決合同3篇
- 2024年度基礎(chǔ)設(shè)施建設(shè)項目授信合同擔保合作框架3篇
- 2024年度代理記賬業(yè)務(wù)委托協(xié)議范本3篇
- DB11∕T 2035-2022 供暖民用建筑室溫無線采集系統(tǒng)技術(shù)要求
- 2024年天津生態(tài)城投資開發(fā)有限公司招聘筆試參考題庫附帶答案詳解
- 催化材料智慧樹知到期末考試答案2024年
- 兒童用藥安全知識(共26張)
- 2021年機務(wù)檢修試題庫
- 一年級學生英語學科評語
- 上海中共一大會址觀后感
- 云南省紅河哈尼族彝族自治州2023-2024學年高一上學期期末考試語文試題【含答案解析】
- IT運維述職報告
- 提升企業(yè)全面風險管理能力的團隊建設(shè)模式
- 硬件工程師年終總結(jié)報告
評論
0/150
提交評論