第四章 指令系統(tǒng)2015年_第1頁(yè)
第四章 指令系統(tǒng)2015年_第2頁(yè)
第四章 指令系統(tǒng)2015年_第3頁(yè)
第四章 指令系統(tǒng)2015年_第4頁(yè)
第四章 指令系統(tǒng)2015年_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章指令系統(tǒng)4.1指令系統(tǒng)的發(fā)展與性能要求4.1.1指令系統(tǒng)的發(fā)展計(jì)算機(jī)的程序是由一系列的機(jī)器指令組成的。指令就是指揮計(jì)算機(jī)執(zhí)行某種操作的命令。從計(jì)算機(jī)組成的層次結(jié)構(gòu)來(lái)說(shuō),指令可以分為:1.微指令是微程序級(jí)屬于硬件2.宏指令由若干條機(jī)器指令組成屬于軟件3.機(jī)器指令介于上述兩者之間通常稱為指令每一條指令可以獨(dú)立的完成一個(gè)算術(shù)運(yùn)算或邏輯運(yùn)算。4.1指令系統(tǒng)的發(fā)展與性能要求4.1.1指令系統(tǒng)的發(fā)展一臺(tái)計(jì)算機(jī)中所有機(jī)器指令的集合,稱為這臺(tái)計(jì)算機(jī)的指令系統(tǒng)。指令系統(tǒng)的格式與功能不僅直接影響到機(jī)器的硬件結(jié)構(gòu),而且也直接影響到系統(tǒng)軟件,影響到機(jī)器的適用范圍。早期的計(jì)算機(jī),由于硬件結(jié)構(gòu)簡(jiǎn)單,指令系統(tǒng)就只有定點(diǎn)加減、邏輯運(yùn)算、數(shù)據(jù)傳送、轉(zhuǎn)移等幾十條指令。60年代,隨著集成電路的出現(xiàn),又設(shè)置了乘除運(yùn)算、浮點(diǎn)運(yùn)算、十進(jìn)制運(yùn)算、字符串處理等指令,達(dá)一二百條。4.1指令系統(tǒng)的發(fā)展與性能要求4.1.1指令系統(tǒng)的發(fā)展

70年代末期,隨著VLSI技術(shù)的發(fā)展,大多數(shù)計(jì)算機(jī)的指令系統(tǒng)多達(dá)幾百條。稱為復(fù)雜指令系統(tǒng)計(jì)算機(jī),簡(jiǎn)稱為CISC。但CISC的研制周期長(zhǎng),難以保證正確性,不易調(diào)試,很多指令使用頻率低且造成硬件資源浪費(fèi)。為此又提出了精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī),簡(jiǎn)稱RISC。4.1指令系統(tǒng)的發(fā)展與性能要求4.1.2對(duì)指令系統(tǒng)性能的要求一個(gè)完善的指令系統(tǒng)應(yīng)滿足如下四個(gè)方面的要求:1.完備性:指用匯編語(yǔ)言編寫(xiě)各種程序時(shí),指令系統(tǒng)直接提供的指令足夠使用。2.有效性:指該指令系統(tǒng)所編寫(xiě)的程序能夠高效的運(yùn)行。占空小、速度快。3.規(guī)整性:指指令系統(tǒng)的對(duì)稱性、勻齊性、指令格式和數(shù)據(jù)格式的一致性。4.兼容性:同一系列的不同機(jī)型,指令系統(tǒng)兼容。但不同機(jī)型在結(jié)構(gòu)和性能上有差異,完全兼容是不可能的。只能做到“向上兼容”。4.2指令格式

一條指令應(yīng)提供兩方面的信息:1、是指明操作的性質(zhì),即干什么工作2、指明操作數(shù)的來(lái)源,地址指令的基本格式如下:在指令格式設(shè)計(jì)時(shí)應(yīng)相應(yīng)地考慮如下問(wèn)題:①指令字長(zhǎng)需要多少位,是定字長(zhǎng)還是變字長(zhǎng);②操作碼是定長(zhǎng)還是擴(kuò)展,是一段還由若干段組合;③地址結(jié)構(gòu):一條指令的執(zhí)行涉及到哪些地址,在指令中給出哪些地址,哪些地址隱含的約定;操作碼字段OP地址碼字段A4.2指令格式④尋址方式:如何獲得操作數(shù)地址,是直接給出還是間接給出,或是經(jīng)過(guò)變換計(jì)算獲得等。4.2指令格式4.2.1指令字長(zhǎng)度1、一條指令字中包含二進(jìn)制代碼的位數(shù),稱為指令字長(zhǎng)度。指令字越長(zhǎng)→表示的信息越多,功能越豐富,→占用空間就越多→讀取的時(shí)間越長(zhǎng)。指令字越短→表示的信息越少,功能越簡(jiǎn)單,→占用空間就越少→讀取的時(shí)間越短。

4.2指令格式

4.2.1指令字長(zhǎng)度2、機(jī)器字長(zhǎng):是指計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù),一般與主存單元的位數(shù)一致。由指令字長(zhǎng)和機(jī)器字長(zhǎng)之間的關(guān)系又可分為半字長(zhǎng)指令、單字長(zhǎng)指令,雙字長(zhǎng)指令。采用單字長(zhǎng)指令,則訪問(wèn)內(nèi)存所花費(fèi)的時(shí)間短。采用多字長(zhǎng)指令,可以有足夠的地址位來(lái)解決訪問(wèn)內(nèi)存任何單元的尋址問(wèn)題,但缺點(diǎn)是必須兩次或多次訪問(wèn)內(nèi)存,浪費(fèi)時(shí)間,且又占用了更多的內(nèi)存空間。4.2指令格式4.2.1指令字長(zhǎng)度3、固定字長(zhǎng)和變字長(zhǎng)指令⑴如果各種指令字長(zhǎng)度是相等的,稱為等長(zhǎng)指令字結(jié)構(gòu)。特點(diǎn):結(jié)構(gòu)簡(jiǎn)單、易于硬件實(shí)現(xiàn);⑵如果各種指令字長(zhǎng)度是隨指令功能而變化,稱為變長(zhǎng)指令字結(jié)構(gòu)。特點(diǎn):能充分利用指令長(zhǎng)度、但指令的控制較復(fù)雜。早期計(jì)算機(jī)如NOVA系列,采用定字長(zhǎng)指令格式,每條指令16位?,F(xiàn)代計(jì)算機(jī)廣泛應(yīng)用變字長(zhǎng)指令,例如,IBM370系列,它的指令格式有16位(半字)的,有32位(單字)的,還有48位(一個(gè)半字)的。Pentium系列機(jī),指令格式也是可變的:有8位、16位、32位、64位不等。4.2.2操作碼格式指令的操作碼OP表示指令應(yīng)進(jìn)行什么性質(zhì)的操作。操作碼的位數(shù)決定了該操作類(lèi)型的多少。操作碼字段不同的編碼表示不同的操作。操作碼大致有以下兩種:1.定長(zhǎng)操作碼:該操作碼的位數(shù)與位置固定,通常占據(jù)指令最前面的幾位。特點(diǎn):便于硬件設(shè)計(jì)和指令譯碼時(shí)間短。該方式廣泛用于字長(zhǎng)較長(zhǎng)的、大中型計(jì)算機(jī)和小型計(jì)算機(jī)以及RISC中。例如:IBM370和VAX-11系列機(jī),操作碼長(zhǎng)度均為8位。

4.2指令格式2、擴(kuò)展操作碼對(duì)于操作碼長(zhǎng)度不固定的指令,其操作碼分散在指令的不同字段中。這種格式可有效地壓縮操作碼的平均長(zhǎng)度,在字長(zhǎng)較短的微型機(jī)中廣泛采用。例如PDP-11、Intel8086/80386等,操作碼的長(zhǎng)度是可變的。操作碼長(zhǎng)度可變使控制器設(shè)計(jì)復(fù)雜化。通常采用擴(kuò)展操作碼技術(shù),使操作碼的長(zhǎng)度隨地址數(shù)的減少而增加,不同地址數(shù)的指令可以有不同的操作碼,從而有效的縮短指令字長(zhǎng)。4.2指令格式2、擴(kuò)展操作碼

設(shè)某機(jī)器的指令長(zhǎng)度為16位,有4位基本的操作碼字段和兩個(gè)6位地址碼字段,其格式如下:OPA1A21512116504.2指令格式①.二地址指令只用15條,由4位基本操作碼0000-----1110組合給出,剩余一個(gè)1111用于把操作碼擴(kuò)展到A1。②.單地址指令由操作碼1111000000----1111111110給出,剩余一個(gè)1111111111用于把操作碼擴(kuò)展到A2。③.零地址的16位操作碼由1111111111000000-----1111111111111111給出。二地址指令有15條,單地址指令有63條,零地址指令有64條,共計(jì)142條指令。4.2指令格式4.2.3地址結(jié)構(gòu)

根據(jù)指令中地址數(shù)的多少可分為幾地址指令。一般的操作數(shù)有被操作數(shù)、操作數(shù)及操作結(jié)果這三種數(shù),因而就形成了三地址指令格式?,F(xiàn)在又發(fā)展成為二地址格式、一地址格式和零地址格式。⑴零地址格式:只有操作碼,沒(méi)有地址碼。如停機(jī)指令。⑵一地址指令:只有一個(gè)地址碼,另一個(gè)操作數(shù)地址隱含指定,如累加器AC。(AC)OP(A)→AC4.2指令格式4.2.3地址結(jié)構(gòu)

⑶二地址格式:它有兩個(gè)操作數(shù)地址字段A1和A2。(A1)OP(A2)→A1⑷三地址格式:它有三個(gè)操作數(shù)地址字段A1、A2和A3。(A1)OP(A2)→A34.2指令格式4.2.3地址結(jié)構(gòu)從操作數(shù)的物理位置來(lái)說(shuō),又可分為三種類(lèi)型:第一種:訪問(wèn)內(nèi)存的指令格式,存貯器——存貯器SS型第二種:訪問(wèn)寄存器的指令格式,寄存器——寄存器RR型第三種:寄存器——存貯器RS型請(qǐng)問(wèn)哪種速度最快?哪種最慢?RR型最快,SS型最慢,4.2指令格式4.2.4指令助記符

由于硬件只能識(shí)別1和0,所以采用二進(jìn)制操作碼是必要的,但書(shū)寫(xiě)程序十分麻煩。為了便于書(shū)寫(xiě)和閱讀程序,每條指令通常用幾個(gè)英文縮寫(xiě)字母來(lái)表示,可以望文生義,這種縮寫(xiě)碼叫指令助記符。例如:ADD001SUB010MOV0114.2指令格式指令格式舉例不同的機(jī)器有不同的指令格式1、IBM370的指令格式。IBM370曾經(jīng)是大型機(jī)的重要代表,它根據(jù)操作數(shù)的不同來(lái)源,分為:RR(寄存器——寄存器)型;RS(寄存器——存貯器)型;RX(寄存器——變址存貯器)型;SI(寄存器——立即數(shù))型;SS(存貯器——存貯器)型;指令字長(zhǎng)度可變,但操作碼長(zhǎng)度不變。相應(yīng)地設(shè)置了5種主要的指令格式如下:

4.2指令格式RR格式(16位)264400OPRiRjRX格式(32位)264441201OPRiRxRbD4.2指令格式RS格式(32位)264441210OPRiRjRbDSI格式(32位)26841210OPIRbD4.2指令格式SI格式(48位)26841241211OPLRb1D1Rb2D2上圖中,Ri,Rj為16個(gè)通用寄存器中的任意兩個(gè)寄存器號(hào),分別用4位字段表示。Rx——為變址寄存器號(hào)Rb——為基址寄存器號(hào)D——為位移量,占12位I——為立即數(shù),占8位L——可以是一個(gè)8位字段或兩個(gè)4位字段,用來(lái)指定一個(gè)或兩個(gè)操作數(shù)的長(zhǎng)度。4.2指令格式2、PDP-11指令格式PDP-11曾是16位機(jī)的典型代表,其指令的基本字長(zhǎng)為16位,但根據(jù)不同的尋址方式,在16位指令字之后還可以跟2~4字節(jié)的存貯器地址,采用了擴(kuò)展操作碼的方法。下面介紹了幾種16位的指令字格式。

4.2指令格式15121198 65320①操作碼

尋址方式寄存器號(hào)尋址方式寄存器號(hào)159865320②操作碼寄存器號(hào)尋址方式寄存器號(hào)

159865320③操作碼寄存器號(hào)尋址方式4.2指令格式

15870④操作碼位移量

15540⑤

操作碼條件碼4.2指令格式3、MIPSR4000指令格式

MIPSR4000是上世紀(jì)80年代后期推出的RISC計(jì)算機(jī)系統(tǒng),指令字長(zhǎng)32位,操作碼字段固定6位,沒(méi)有專(zhuān)門(mén)的尋址方式字段,由指令格式確定各操作數(shù)的尋址方式。它指令格式簡(jiǎn)單、指令數(shù)量少,32個(gè)通用寄存器。其算術(shù)指令格式(R型)如下:6位5位5位5位5位6位oprsrtrdshamtfunct4.2指令格式3、MIPSR4000指令格式在MIPS中,訪問(wèn)存儲(chǔ)器需要使用數(shù)據(jù)傳送指令。此時(shí)的指令格式,稱為I型(立即數(shù))指令,其指令格式如下:6位5位5位16位oprsrt常數(shù)或地址4.2指令格式3、MIPSR4000指令格式J型指令主要是無(wú)條件跳轉(zhuǎn)指令,指令中給出的是26位直接地址,只要將當(dāng)前PC的高4位拼接上26位直接地址,最后添上兩個(gè)“0”就可以得到32位的跳轉(zhuǎn)目標(biāo)地址。其指令格式如下:

6位26位op直接地址4.2指令格式3、MIPSR4000指令格式部分MIPS指令字段值指令格式oprsrtrdshamtfunct常數(shù)或地址addR0regregreg032subR0regregreg034立即數(shù)加I8regreg常數(shù)lwI35regreg地址swI43regreg地址4.2指令格式[例1]假定C語(yǔ)言賦值語(yǔ)句“f=(g+h)-(i+j);”中變量i、j、f、g、h由編譯器分別分配給MIPS寄存器﹩t0~﹩t4(其寄存器編號(hào)對(duì)應(yīng)為8~12)。要求給出該語(yǔ)句編譯后的MIPS機(jī)器代碼和匯編表示。4.2指令格式[解]:

只要用三條R型指令即可,兩條add和一條sub.Add﹩t5,﹩t3,﹩t4#g+h00000001011011000110100000100000Add﹩t6,﹩t0,﹩t1#i+j00000001000010010111000000100000sub﹩t2,﹩t5,﹩t6#f=(g+h)-(i+j)000000011010111001010000001000104.2指令格式[例2]指令格式如下所示,其中OP為操作碼,試分析指令格式的特點(diǎn)。1597430

OP--------源寄存器目標(biāo)寄存器[解]:

(1)單字長(zhǎng)二地址指令。(2)操作碼字段OP可以指定128條指令。(3)源寄存器和目標(biāo)寄存器都是通用寄存器(可分別指定16個(gè)),所以是RR型指令,兩個(gè)操作數(shù)均在寄存器中。(4)這種指令結(jié)構(gòu)常用于算術(shù)邏輯運(yùn)算類(lèi)指令。

4.2指令格式[例3]指令格式如下所示,OP為操作碼字段,試分析指令格式特點(diǎn)。15107430

OP--------源寄存器變址寄存器位移量(16位)

[解]:

(1)雙字長(zhǎng)二地址指令,用于訪問(wèn)存儲(chǔ)器。(2)操作碼字段OP為6位,可以指定64種操作。(3)一個(gè)操作數(shù)在源寄存器(共16個(gè)),另一個(gè)操作數(shù)在存儲(chǔ)器中(由變址寄存器和位移量決定)所以是RS型指令。4.3指令和數(shù)據(jù)的尋址方式4.3.1指令的尋址方式一種是順序?qū)ぶ贩绞剑硪环N是跳躍尋址方式。1.順序?qū)ぶ贩绞街噶畹刂吩趦?nèi)存中按順序安排,當(dāng)執(zhí)行一段程序時(shí),通常是一條指令接一條指令的順序執(zhí)行。從存儲(chǔ)器取出第一條指令,然后執(zhí)行這條指令;接著從存儲(chǔ)器取出第二條指令,在執(zhí)行第二條指令;接著再取出第三條指令……這種程序順序執(zhí)行的過(guò)程,我們稱為指令的順序?qū)ぶ贩绞健榇?,必須使用程序?jì)數(shù)器(又稱指令指針寄存器)PC來(lái)計(jì)數(shù)指令的順序號(hào),該順序號(hào)就是指令在內(nèi)存中的地址.4.3指令和數(shù)據(jù)的尋址方式2.跳躍尋址方式

當(dāng)程序轉(zhuǎn)移執(zhí)行的順序時(shí),指令的尋址就采取跳躍尋址方式。所謂跳躍,是指下條指令的地址碼不是由程序計(jì)數(shù)器給出,而是由本條指令給出。程序跳躍后,按新的指令地址開(kāi)始順序執(zhí)行。采用指令跳躍尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán)程序。指令系統(tǒng)中的各種條件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令的跳躍尋址而設(shè)置的。4.3指令和數(shù)據(jù)的尋址方式4.3.2操作數(shù)的尋址方式隱含尋址立即尋址直接尋址間接尋址寄存器尋址方式寄存器間接尋址方式基值尋址方式變址尋址方式相對(duì)尋址方式4.3

指令和數(shù)據(jù)的尋址方式隱含尋址這種類(lèi)型的指令,不是明顯地給出操作數(shù)的地址,而是指令中隱含著操作數(shù)的地址。4.3指令和數(shù)據(jù)的尋址方式立即地址

指令的地址字段指出的不是操作數(shù)的地址,而是操作數(shù)本身,這種尋址方式稱為立即尋址。立即尋址方式的特點(diǎn)是指令執(zhí)行時(shí)間很短,因?yàn)樗恍枰L問(wèn)內(nèi)存取數(shù),從而節(jié)省了訪問(wèn)內(nèi)存的時(shí)間。例如:

#表示立即尋址的特征,A表示立即數(shù)。優(yōu)點(diǎn):操作數(shù)在指令中,可立即獲得,不必訪問(wèn)存儲(chǔ)器;缺點(diǎn):A的位數(shù)限制了立即數(shù)的范圍。OP#A4.3指令和數(shù)據(jù)的尋址方式直接尋址直接尋址是一種基本的尋址方法,其特點(diǎn)是:在指令格式的地址字段中直接指出操作數(shù)在內(nèi)存的地址A。由于操作數(shù)的地址直接給出而不需要經(jīng)過(guò)某種變換或運(yùn)算,所以稱這種尋址方式為直接尋址方式。

操作數(shù)=2000HOPXA=1350H。2000H1350H4.3指令和數(shù)據(jù)的尋址方式直接尋址優(yōu)點(diǎn):尋找操作數(shù)簡(jiǎn)單,對(duì)主存的訪問(wèn)只需要一次。缺點(diǎn):在于A的位數(shù)限制了操作數(shù)的尋址范圍,直接尋址的地址不能修改,使程序不能靈活地處理數(shù)組以及方便地實(shí)現(xiàn)程序循環(huán),程序的位置也不能在存貯器中浮動(dòng),給多道程序的運(yùn)行和管理帶來(lái)不便。4.3指令和數(shù)據(jù)的尋址方式間接尋址

間接尋址是相對(duì)于直接尋址而言的,在間接尋址的情況下,指令地址字段中的形式地址A不是操作數(shù)的真正地址,而是操作數(shù)地址的指示器,或者說(shuō)A單元的內(nèi)容才是操作數(shù)的有效地址。一般要設(shè)置一個(gè)尋址特征位給予指示。優(yōu)點(diǎn):1.擴(kuò)大了操作數(shù)的尋址范圍;2.便于編制程序;缺點(diǎn):指令執(zhí)行時(shí)需要兩次或多次訪問(wèn)存儲(chǔ)器,使指令執(zhí)行時(shí)間延長(zhǎng)。4.3指令和數(shù)據(jù)的尋址方式操作數(shù)=1234HOPX2A=1000H

操作數(shù)地址=2000HS=1234H1000H2000H4.3指令和數(shù)據(jù)的尋址方式

寄存器尋址方式

當(dāng)操作數(shù)不放在內(nèi)存中,而是放在CPU的通用寄存器中時(shí),可采用寄存器尋址方式。此時(shí)指令中給出的操作數(shù)地址不是內(nèi)存的地址單元號(hào),而是通用寄存器的編號(hào)。

優(yōu)點(diǎn):⑴不需要訪問(wèn)存儲(chǔ)器,減少了執(zhí)行時(shí)間;

⑵指令字較短。4.3指令和數(shù)據(jù)的尋址方式寄存器間接尋址方式

寄存器間接尋址方式與寄存器尋址方式的區(qū)別在于:指令格式中的寄存器內(nèi)容不是操作數(shù),而是操作數(shù)的地址,該地址指明的操作數(shù)在內(nèi)存中。4.3指令和數(shù)據(jù)的尋址方式基址尋址方式:目的是為了擴(kuò)大操作數(shù)的尋址空間?;芳拇嫫鞯奈粩?shù)可以大于形式地址A的位數(shù)。格式:OPRbAA為位移量有效地址=(Rb)+A

基址尋址方式可以便于實(shí)現(xiàn)對(duì)較大主存空間的訪問(wèn)。例如,將主存空間分段,每個(gè)段首地址存放在基址寄存器中,段內(nèi)的位移量由形式地址A指出。只要對(duì)基址寄存器的內(nèi)容修改,便可訪問(wèn)主存的任何一個(gè)單元。4.3指令和數(shù)據(jù)的尋址方式基址尋址方式

基址寄存器在多道程序中很有用。用戶程序存放在哪個(gè)段,由操作系統(tǒng)決定,基址寄存器由操作系統(tǒng)賦值,用戶不必關(guān)心。用戶只需修改位移量A?;芳拇嫫鲬?yīng)能提供全字長(zhǎng)地址碼,能夠指向主存的任一單元。位移量不必是全字長(zhǎng),這是由于程序運(yùn)行時(shí)的區(qū)域局限性所定。4.3指令和數(shù)據(jù)的尋址方式變址尋址方式:變址方式是為了靈活的修改地址以適應(yīng)連續(xù)區(qū)間的操作格式:OPRxAA為形式地址,應(yīng)該提供全字長(zhǎng)的地址碼,能夠指向主存的任一單元。它的位數(shù)應(yīng)該較長(zhǎng)。

有效地址=(Rx)+A例如對(duì)一個(gè)數(shù)組進(jìn)行操作時(shí),可以將該數(shù)組的首地址作為形式地址,變址寄存器中存放位移量,通過(guò)修改變址寄存器的內(nèi)容,可以訪問(wèn)數(shù)組中任何一個(gè)元素。

4.3指令和數(shù)據(jù)的尋址方式變址尋址方式變址尋址方式雖然與基址尋址方式極為相似,但應(yīng)用場(chǎng)合不同,有較大區(qū)別?;穼ぶ贩绞街饕糜跒槌绦蚧驍?shù)據(jù)分配存儲(chǔ)空間,Rb的內(nèi)容由操作系統(tǒng)決定,在程序執(zhí)行過(guò)程中是不變的,而指令中的位移地址A是可變的。變址尋址方式中,變址寄存器中的內(nèi)容是由用戶設(shè)定的,在程序執(zhí)行中可變,而指令中的位移地址A是不變的。主要用于處理數(shù)組問(wèn)題,特別適合編制循環(huán)程序。4.3指令和數(shù)據(jù)的尋址方式基址加變址方式結(jié)合了兩者的優(yōu)點(diǎn)有效地址=(基址量)+(變址量)+位移量這樣的尋址方式可以方便的處理兩維數(shù)組。例如讓基址寄存器內(nèi)容指向數(shù)組起始端,基址加位移量為其一行數(shù)組的起點(diǎn),而變址寄存器的內(nèi)容為一行數(shù)組中元素與起點(diǎn)間的距離。

4.3指令和數(shù)據(jù)的尋址方式相對(duì)尋址是把程序計(jì)數(shù)器PC的內(nèi)容加上指令格式中的形式地址A而形成操作數(shù)有效地址。程序計(jì)數(shù)器的內(nèi)容就是當(dāng)前指令的地址。因此,所謂“相對(duì)”尋址,就是相對(duì)于當(dāng)前指令地址而言。采用相對(duì)尋址方式的好處是程序員勿需用指令的絕對(duì)地址編程,因而所編程序可以放在內(nèi)存任何地方。4.3指令和數(shù)據(jù)的尋址方式

PC操作數(shù)=1234H+假設(shè)A=1000H,PC=2000H,則有效地址=(PC)+A=2000H+1000H=3000H操作數(shù)=(3000H)=1234HOPX3A1234H3000H例題:設(shè)相對(duì)尋址的轉(zhuǎn)移指令占3個(gè)字節(jié),第一個(gè)字節(jié)為操作碼,第二、三字節(jié)為相對(duì)位移量(補(bǔ)碼表示),而且數(shù)據(jù)在存儲(chǔ)器中以低字節(jié)地址為字地址的存放方式。每當(dāng)CPU從存儲(chǔ)器取出一個(gè)字節(jié)時(shí),就自動(dòng)完成(PC)+1→(PC)問(wèn):(1)若PC當(dāng)前值為240(十進(jìn)制),要求轉(zhuǎn)移到290(十進(jìn)制),則轉(zhuǎn)移指令的第二、三字節(jié)的機(jī)器代碼是什么?(2)若PC當(dāng)前值為240(十進(jìn)制),要求轉(zhuǎn)移到200(十進(jìn)制),則轉(zhuǎn)移指令的第二、三字節(jié)的機(jī)器代碼是什么?解:(1)當(dāng)前PC=240,取出指令后,PC=243,要求轉(zhuǎn)移到290,所以位移量為290-243=47,補(bǔ)碼表示為2FH。故該轉(zhuǎn)移指令的第二字節(jié)為2FH,第三字節(jié)為00H。(2)當(dāng)前PC=240,取出指令后,PC=243,要求轉(zhuǎn)移到200,所以位移量為200-243=-43,補(bǔ)碼表示為D5H。故該轉(zhuǎn)移指令的第二字節(jié)為D5H,第三字節(jié)為FFH。4.3指令和數(shù)據(jù)的尋址方式在設(shè)計(jì)指令系統(tǒng)中,需要考慮兩方面:一方面是選取哪些尋址方式才能滿足程序需要,又能使編程靈活方便;另一方面是:考慮CPU解釋執(zhí)行的硬件代價(jià),以及執(zhí)行速度。

思考題2.比較直接尋址、間接尋址、寄存器尋址和寄存器間接尋址、基址尋址的速度快慢。

由快到慢的順序是:寄存器尋址、直接尋址、寄存器間接尋址、基址尋址和間接尋址4.3指令和數(shù)據(jù)的尋址方式[例3]一種二地址RS型指令的結(jié)構(gòu)如下所示:6位4位1位2位16位

OP---通用寄存器IX偏移量A其中I為間接尋址標(biāo)志位,X為尋址模式字段,A位偏移量字段。通過(guò)I,X,A的組合,可構(gòu)成下表所示的尋址方式。請(qǐng)寫(xiě)出六種尋址方式的名稱。尋址方式IX有效地址E算法說(shuō)明(1)000E=A(2)001E=(PC)+/-APC為程序計(jì)數(shù)(3)010E=(R2)+/-AR2為變址寄存器(4)111E=(R3)(5)100E=(A)(6)011E=(R1)+/-AR1為基址寄存器4.3指令和數(shù)據(jù)的尋址方式解:

⑴直接尋址⑵相對(duì)尋址⑶變址尋址⑷寄存器間接尋址⑸間接尋址⑹基址尋址4.3指令和數(shù)據(jù)的尋址方式[例4]某16位機(jī)器所使用的指令格式和尋址方式如下所示,該機(jī)有兩個(gè)20位基址寄存器,四個(gè)16位變址寄存器,十六個(gè)16位通用寄存器指令匯編格式中的S(源),D(目標(biāo))都是通用寄存器,M是主存中的一個(gè)單元。三種指令的操作碼分別是MOV(OP)=(A)H,STA(OP)=(1B)H,LDA(OP)=(3C)H。MOV是傳送指令,STA為寫(xiě)數(shù)指令,LDA為讀數(shù)指令。4.3指令和數(shù)據(jù)的尋址方式1510987430OP---目標(biāo)源MOVS,DOP基址源變址STAS,M位移量OP---目標(biāo)LDAS,M20位地址4.3指令和數(shù)據(jù)的尋址方式要求:⑴分析三種指令的指令格式與尋址方式特點(diǎn)。⑵CPU完成哪一種操作所花時(shí)間最短?哪一種操作所花時(shí)間最長(zhǎng)?第二種指令的執(zhí)行時(shí)間有時(shí)會(huì)等于第三種指令的執(zhí)行時(shí)間嗎?⑶下列情況下每個(gè)十六進(jìn)制指令字分別代表什么操作?其中如果有編碼不正確,如何改正才能成為合法指令?①(F0F1)H(3CD2)H②(2856)H③(6FD6)H④(1C2)H4.3指令和數(shù)據(jù)的尋址方式⑴第一種指令是單字長(zhǎng)二地址指令,RR型;第二種指令是雙字長(zhǎng)二地址指令,RS型,其中S采用基址尋址或變址尋址,R由源寄存器決定;第三種也是雙字長(zhǎng)二地址指令,RS型,其中R由目標(biāo)寄存器決定,S由20位地址(直接尋址)決定。

4.3指令和數(shù)據(jù)的尋址方式⑵處理機(jī)完成第一種指令所花時(shí)間最短,因?yàn)槭荝R型指令,不需要訪問(wèn)存儲(chǔ)器。第二種指令所花時(shí)間最長(zhǎng),因?yàn)槭荝S型指令,需要訪問(wèn)存儲(chǔ)器,同時(shí)要進(jìn)行尋址方式的變換運(yùn)算(基址或變址),這也需要時(shí)間。第二種指令的執(zhí)行時(shí)間不會(huì)等于第三種指令,因?yàn)榈谌N指令雖然也訪問(wèn)存儲(chǔ)器,但節(jié)省了求有效地址運(yùn)算的時(shí)間開(kāi)銷(xiāo)。4.3指令和數(shù)據(jù)的尋址方式

⑶根據(jù)已知條件知:MOV(OP)=001010,STA(OP)=011011,LDA(OP)=111100,將指令的十六進(jìn)制格式轉(zhuǎn)換成二進(jìn)制代碼且比較后可知:①(F0F1)(3CD2)H指令代表LDA指令,編碼正確,其含義是把主存(13CD2)H地址單元的內(nèi)容取至15號(hào)寄存器。②(2856)H指令代表MOV指令,編碼正確,含義是把5號(hào)源寄存器的內(nèi)容傳送至6號(hào)目標(biāo)寄存器。4.3指令和數(shù)據(jù)的尋址方式③(6FD6)H是單字長(zhǎng)指令,一定是MOV指令,但編碼錯(cuò)誤,可改正為(28D6)H④(1C2)H是單字長(zhǎng)指令,代表MOV指令,但編碼錯(cuò)誤,可改正為(28C2)H。作業(yè)P137第1、5、8、9題

4.4堆棧尋址方式一、串聯(lián)堆棧串聯(lián)堆棧一般是由一組專(zhuān)門(mén)的寄存器組成,通常為8個(gè)或16個(gè),數(shù)量較少,但速度很快。..\..\..\組成原理-白中英網(wǎng)絡(luò)版\Chap04\images\4.7.swf

4.4堆棧尋址方式二、存貯器椎棧串聯(lián)堆棧的缺點(diǎn):①堆棧的數(shù)目有限②串聯(lián)堆棧的讀出是破壞性的③當(dāng)進(jìn)棧的數(shù)目大于堆棧本身的數(shù)量單元時(shí),“老”的數(shù)據(jù)就會(huì)被破壞。因此,通常在主存中開(kāi)辟一個(gè)堆棧區(qū),一旦設(shè)定,該區(qū)域就不能作其它用途。為了便于操作,設(shè)置一個(gè)堆棧指示器SP。進(jìn)棧:(A)→Msp,(sp)-1→sp出棧:(sp)+1→sp,(Msp)→A..\..\..\組成原理-白中英網(wǎng)絡(luò)版\Chap04\images\4.8.swf4.5典型指令數(shù)據(jù)傳送類(lèi)指令算術(shù)運(yùn)算類(lèi)指令邏輯運(yùn)算類(lèi)指令程序控制類(lèi)指令輸入輸出類(lèi)指令字符串處理指令特權(quán)指令其他指令4.6CISC和RISC隨著計(jì)算機(jī)發(fā)展,都希望新機(jī)種能夠包含舊機(jī)種的所有指令和尋址方式,致使同一系列計(jì)算機(jī)指令系統(tǒng)變得越來(lái)越復(fù)雜。例如VAX11/780計(jì)算機(jī)有303條指令,16種尋址方式。Pentium機(jī)也有191條指令,9種尋址方式。這類(lèi)機(jī)器被稱為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)。當(dāng)指令系統(tǒng)過(guò)于復(fù)雜時(shí),機(jī)器的設(shè)計(jì)周期會(huì)很長(zhǎng),資金耗費(fèi)也會(huì)很大。但是對(duì)CISC機(jī)的測(cè)試表明,最常使用的是一些最基本最簡(jiǎn)單的指令,僅占指令總數(shù)的20%,但在程序中出現(xiàn)的頻率卻占80%。4.6CISC和RISC人們從80—20規(guī)律中得到啟示:能否用20%的簡(jiǎn)單指令,重新組合不常用的80%的指令功能呢?這便引出了精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(RISC)。其主要特征如下:⑴選取使用頻率較高的一些簡(jiǎn)單指令,復(fù)雜指令的功能由簡(jiǎn)單指令的組合來(lái)完成;

⑵指令長(zhǎng)度固定,指令格式和尋址方式種類(lèi)少;

⑶只有取數(shù)/存數(shù)指令訪問(wèn)存儲(chǔ)器,其余指令的操作都在寄存器之間進(jìn)行。4.6CISC和RISC

⑷CPU中有多個(gè)通用寄存器;

⑸采用流水線技術(shù),大部分指令在一個(gè)時(shí)鐘周期內(nèi)完成;

⑹控制器采用組合邏輯控制,不用微程序控制;

⑺采用優(yōu)化的編譯程序。

4.6CISC和RISC表4.6典型RISC機(jī)指令系統(tǒng)的基本特征通用寄型號(hào)指令數(shù)尋址方式指令格式存器數(shù)主頻/MHZRISC-I3122788RISC-II392213812MIPS5534164SPARC7543120-13625-33MIPSR300091333225I860653432504.6CISC和RISC的比較與CISC機(jī)相比較,RISC機(jī)的主要優(yōu)點(diǎn)有:⑴充分利用了VLSI芯片的面積CISC機(jī)大多采用微程序控制器,微程序控制器占CPU芯片面積的50%,而RISC機(jī)采用硬布線控制器,只占CPU芯片面積的10%。⑵提高了計(jì)算機(jī)的速度①RISC機(jī)的指令譯碼比CISC機(jī)快。②RISC機(jī)中的通用寄存器多,減少了訪問(wèn)內(nèi)存次數(shù)。③RISC機(jī)采用寄存器窗口重迭技術(shù)。④RISC機(jī)采用的是硬布線控制器。⑤精簡(jiǎn)指令系統(tǒng)適合流水線工作,大多指令在一個(gè)時(shí)鐘周期內(nèi)完成。4.6CISC和RISC的比較與CISC機(jī)相比較,RISC機(jī)的主要優(yōu)點(diǎn)有:⑶便于設(shè)計(jì),可降低成本,提高可靠性。RISC機(jī)的邏輯簡(jiǎn)單,設(shè)計(jì)出錯(cuò)可能性小,有錯(cuò)時(shí)也容易發(fā)現(xiàn),可靠性高。⑷有效支持高級(jí)語(yǔ)言程序由于RISC指令少,尋址方式少,使編譯程序容易選擇更有效的指令和尋址方式,而且由于RISC機(jī)的通用寄存器多,使編譯程序的代碼優(yōu)化效率提高。例1例1,某機(jī)字長(zhǎng)16位,存貯器直接尋址空間為128字,變址時(shí)的位移量為-64~+63,16個(gè)通用寄存器均可作為變址寄存器,設(shè)計(jì)一套指令系統(tǒng)格式,滿足下列尋址類(lèi)型的要求:(1)直接尋址的二地址指令3條(2)變址尋址的一地址指令6條(3)寄存器尋址的二地址指令8條(4)直接尋址的一地址指令12條(5)零地址指令32條試問(wèn)還有多種代碼未用?例1解:(1)直接尋址的二地址指令格式為:

277OPA1A200,01,10共3條(2)變址尋址的一地址指令格式為:

547OPRXD11000……11101共6條例1(3)寄存器尋址的二地址指令格式為:

844OPR1R211110000……11110111共8條(4)直接尋址的一地址指令格式為:

97OPA111110000……111111011共12條例1

(5)零地址指令格式為:

16OP1111111000000000……1111111000011111共32條還有29-32=480種代碼未用。

例2例2,某機(jī)字長(zhǎng)32位,CPU內(nèi)有32個(gè)32位的通用寄存器,設(shè)計(jì)一種能夠容納64種操作的指令系統(tǒng),設(shè)指令字長(zhǎng)等于機(jī)器字長(zhǎng)。(1)如果主存可直接或間接尋址,采用RS型指令,能直接尋址的最大的存儲(chǔ)空間是多少?畫(huà)出指令格式。(2)如果采用通用寄存器作為基址寄存器,則上述RS型指令的指令格式有何特點(diǎn)?畫(huà)出指令格式并指出這類(lèi)指令可訪問(wèn)多大的存儲(chǔ)空間?例2解:根據(jù)題意有:(1)61520OPIRDOP為6位,可容納64種操作;I為1位,為直接或間接尋址方式位;R為5位,為32個(gè)通用寄存器的編號(hào);D為20位,為形式地址。這種指令可直接尋址的最大的存儲(chǔ)空間是220;例2(2)615515OPIRBDOP為6位,可容納64種操作;I為1位,為直接或間接尋址方式位;R為5位,為32個(gè)通用寄存器的編號(hào);B為5位,為基址寄存器的編號(hào);D為15位,為形式地址。這種指令可尋址的最大的存儲(chǔ)空間是232例3例3:若機(jī)器采用三地址格式訪問(wèn)存儲(chǔ)器指令,試問(wèn)完成一條加法指令共需要訪問(wèn)幾次存儲(chǔ)器?若該機(jī)共能完成54種操作,操作數(shù)可在1K地址范圍內(nèi)尋址,試畫(huà)出該機(jī)器的指令格式。解:依題意義有:6101010OPD1D2D3完成一條加法指令共需要訪問(wèn)4次存儲(chǔ)器,一次取指令,兩次取操作數(shù),一次存放結(jié)果。例4例4:某指令系統(tǒng)字長(zhǎng)12位,地址碼長(zhǎng)3位,試提出一種方案,使該指令系統(tǒng)有4條三地址指令、8條二地址指令、150條單地址指令。解:OPA1A2A3000xxxxxxxxx001xxxxxxxxx010xxxxxxxxx4條三地址指令011xxxxxxxxx

OPA1A2

100

000xxxxxx100

001xxxxxx.8條二地址指令.100

111xxxxxx

OPA1101

000000xxx101

000001xxx.64條單地址指令.101

111111xxx

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論