《計(jì)算機(jī)原理》課件第5章_第1頁(yè)
《計(jì)算機(jī)原理》課件第5章_第2頁(yè)
《計(jì)算機(jī)原理》課件第5章_第3頁(yè)
《計(jì)算機(jī)原理》課件第5章_第4頁(yè)
《計(jì)算機(jī)原理》課件第5章_第5頁(yè)
已閱讀5頁(yè),還剩86頁(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)介

第5章指令系統(tǒng)5.1指令系統(tǒng)與性能5.2機(jī)器指令5.3操作碼的編碼方法5.4地址碼的尋址方式5.5典型的指令系統(tǒng)關(guān)聯(lián)習(xí)題5.1指令系統(tǒng)與性能5.1.1指令與指令系統(tǒng)指令是指示計(jì)算機(jī)去執(zhí)行某種操作的命令。如果命令是二進(jìn)制代碼形式,則相應(yīng)的指令為機(jī)器指令,機(jī)器指令是計(jì)算機(jī)能直接識(shí)別并執(zhí)行的指令,而用任何其他形式的指令或語(yǔ)言所編寫的程序必須通過(guò)“翻譯”或“編譯”,編譯成機(jī)器語(yǔ)言程序,才能在計(jì)算機(jī)中運(yùn)行。指令系統(tǒng)則是指計(jì)算機(jī)所有機(jī)器指令的集合,也稱指令集(InstructionSet)。它是面向機(jī)器的,不同的計(jì)算機(jī)具有不同的指令系統(tǒng),反過(guò)來(lái)講,不同的指令系統(tǒng)決定了計(jì)算機(jī)不同的性能和功能。隨著計(jì)算機(jī)的發(fā)展和應(yīng)用領(lǐng)域的不斷擴(kuò)大,指令系統(tǒng)越來(lái)越豐富,機(jī)器指令的數(shù)量成倍增長(zhǎng),多達(dá)成百上千條,如此龐大的指令系統(tǒng)我們稱之為復(fù)雜指令系統(tǒng)(CIS),具有復(fù)雜指令系統(tǒng)的計(jì)算機(jī)稱為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)。CISC就是采用復(fù)雜的指令系統(tǒng),來(lái)達(dá)到增強(qiáng)計(jì)算機(jī)的功能、提高速度的目的。經(jīng)過(guò)對(duì)CISC指令使用頻率的測(cè)試分析,發(fā)現(xiàn)只有占指令系統(tǒng)20%的指令是常用的,剩余80%的指令在程序中出現(xiàn)的概率大約為20%。測(cè)試結(jié)果表明:花費(fèi)巨大代價(jià)所增加的復(fù)雜指令只有20%左右的使用率,這將造成計(jì)算機(jī)硬件資源的巨大浪費(fèi)。為此,人們開(kāi)始考慮能否用最常用的20%左右的簡(jiǎn)單指令來(lái)組合實(shí)現(xiàn)不常用的80%的指令,于是,出現(xiàn)了精簡(jiǎn)指令系統(tǒng)(RIS)和精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(RISC)。精簡(jiǎn)指令系統(tǒng)(RIS)是對(duì)復(fù)雜指令系統(tǒng)(CIS)進(jìn)行簡(jiǎn)化和優(yōu)化,使機(jī)器結(jié)構(gòu)簡(jiǎn)化的同時(shí),有效地提高機(jī)器的性能、速度和性能價(jià)格比。5.1.2指令系統(tǒng)的性能指令系統(tǒng)的性能將決定計(jì)算機(jī)的基本功能,因此,指令系統(tǒng)的設(shè)計(jì)是計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的一個(gè)核心問(wèn)題,它不僅與計(jì)算機(jī)的硬件緊密相關(guān),還直接影響到用戶的使用。一個(gè)完善的指令系統(tǒng)應(yīng)滿足以下幾個(gè)方面的要求:

(1)完備性:要求機(jī)器的指令系統(tǒng)豐富,且功能齊全。

(2)有效性:是指用指令系統(tǒng)中的指令所編寫的程序能被高效率地運(yùn)行。高效率表現(xiàn)在程序所占存儲(chǔ)空間小、執(zhí)行速度快。

(3)規(guī)整性:包括指令系統(tǒng)的對(duì)稱性、均勻性、一致性。對(duì)稱性是指寄存器與存儲(chǔ)器的對(duì)稱,能對(duì)寄存器操作的指令同樣能對(duì)存儲(chǔ)器操作。均勻性是指各種數(shù)據(jù)類型適用于一種操作性質(zhì)的指令。一致性是指指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度通常是字節(jié)的整數(shù)倍。

(4)兼容性:是指“向上兼容”,即抵擋機(jī)上運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行。

(5)可擴(kuò)展性:是指保留一定余量的操作碼空間,便于擴(kuò)展指令使用。5.2機(jī)器指令5.2.1機(jī)器指令的格式根據(jù)指令的概念,一條機(jī)器指令形式上是一串二進(jìn)制代碼,我們通常把表示機(jī)器指令的這一串二進(jìn)制代碼稱為指令字。作為一個(gè)指令字,不僅要表示出指令所進(jìn)行的某種具體操作,還要表示出指令對(duì)誰(shuí)操作以及操作結(jié)果的去向,即指令的操作對(duì)象。因此,任何一條機(jī)器指令都由兩部分組成:一部分是操作碼,另一部分是地址碼。其格式為操作碼OP:是指令所進(jìn)行的具體操作的編碼。不同的指令相應(yīng)的操作和功能不同,則需要用不同的操作碼來(lái)表示。因此,操作碼的長(zhǎng)度與機(jī)器所能執(zhí)行操作的多少有關(guān)。地址碼A:是指令操作對(duì)象的地址編碼。它是一個(gè)廣義的概念,它不僅可以是操作對(duì)象的存儲(chǔ)地址,還可以是操作對(duì)象本身。因此,地址碼的長(zhǎng)度與存儲(chǔ)器的容量、寄存器的多少、機(jī)器的字長(zhǎng)有關(guān)。5.2.2指令字的長(zhǎng)度指令字的長(zhǎng)度是指一個(gè)指令字所包含的二進(jìn)制代碼的位數(shù)。結(jié)合機(jī)器指令的格式,指令字的長(zhǎng)度取決于操作碼的長(zhǎng)度、地址碼的長(zhǎng)度和地址碼的個(gè)數(shù),因此,影響指令字長(zhǎng)度的因素有多種,不同指令系統(tǒng)的指令長(zhǎng)度各不相同,同一個(gè)指令系統(tǒng)的不同指令其長(zhǎng)度也不盡相同,但為了便于存儲(chǔ),指令字的長(zhǎng)度與機(jī)器字長(zhǎng)之間具有一定的匹配關(guān)系,通常指令長(zhǎng)度設(shè)計(jì)為字節(jié)的整數(shù)倍。例如8086/8088CPU的指令系統(tǒng),最短的指令長(zhǎng)度為1個(gè)字節(jié),最長(zhǎng)的指令長(zhǎng)度為6個(gè)字節(jié);再如奔騰系列機(jī)的指令系統(tǒng),最短的指令長(zhǎng)度為1個(gè)字節(jié),最長(zhǎng)的指令長(zhǎng)度為12個(gè)字節(jié)。由于指令的長(zhǎng)度不盡相同,我們不僅可以將指令按其長(zhǎng)度進(jìn)行分類,還可以將指令系統(tǒng)進(jìn)行分類。如果指令的長(zhǎng)度等于機(jī)器的字長(zhǎng),這樣的指令稱為單字長(zhǎng)指令;如果指令的長(zhǎng)度等于兩倍的機(jī)器字長(zhǎng),這樣的指令稱為雙字長(zhǎng)指令;還可以分為更多倍字長(zhǎng)的指令以及半字長(zhǎng)指令等。如果指令系統(tǒng)中各種指令字的長(zhǎng)度均固定,則稱為定長(zhǎng)指令字結(jié)構(gòu);如果指令系統(tǒng)中各種指令字的長(zhǎng)度隨指令功能而異,則稱為可變長(zhǎng)指令字結(jié)構(gòu)。定長(zhǎng)指令字結(jié)構(gòu):結(jié)構(gòu)簡(jiǎn)單,指令的譯碼時(shí)間短,有利于硬件控制系統(tǒng)的設(shè)計(jì),多用于機(jī)器字長(zhǎng)較長(zhǎng)的大、中型計(jì)算機(jī)和精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)。但指令字的長(zhǎng)度普遍較長(zhǎng),冗余現(xiàn)象嚴(yán)重,不利于指令擴(kuò)展??勺冮L(zhǎng)指令字結(jié)構(gòu):結(jié)構(gòu)靈活,能充分利用指令中的每一位,信息冗余少,平均指令長(zhǎng)度短,易于指令的擴(kuò)展。但指令格式不規(guī)整,硬件控制系統(tǒng)復(fù)雜。5.2.3機(jī)器指令的分類機(jī)器指令不僅可以按其長(zhǎng)度劃分為單字指令、雙字指令和多字指令,還可以按指令中地址碼的多少將機(jī)器指令劃分為:零地址指令、單地址指令、雙地址指令和多地址指令。

1.零地址指令零地址指令的指令字中只有操作碼,而沒(méi)有地址碼。其格式為零地址指令有以下兩種情況:第一是指令不需要操作對(duì)象,也就不需要地址碼,例如停機(jī)指令、空操作指令等。第二是指令需要一個(gè)操作對(duì)象,但這個(gè)操作對(duì)象可以隱含,從而指令的地址碼也可隱含,例如對(duì)堆棧、累加器操作的指令。指令功能為:OP(AC)→AC。

2.單地址指令單地址指令的指令字中只有一個(gè)地址碼A,也稱為一地址指令。其格式為單地址指令有以下兩種情況:第一是指令有一個(gè)操作對(duì)象,并且這個(gè)操作對(duì)象不能隱含,必須用一個(gè)地址碼表示,例如加1指令、減1指令等。指令功能為:OP(A)→A。第二是指令有兩個(gè)操作對(duì)象,其中一個(gè)操作對(duì)象隱含,通常指累加器(AC),另一個(gè)用一個(gè)地址碼表示,例如加法指令、減法指令等。指令功能為:(AC)OP(A)→AC。

3.雙地址指令雙地址指令的指令字中有兩個(gè)地址碼A1和A2,也稱為二地址指令。其格式為雙地址指令的指令功能為:(A1)OP(A2)→A1或(A1)OP(A2)→A2。雙地址指令可以分為三種指令類型:

(1)S—S型指令,即存儲(chǔ)器—存儲(chǔ)器型指令,是指指令中兩個(gè)操作對(duì)象都是存儲(chǔ)器,用地址碼A1和A2表示,A1、A2為主存地址。

(2)R—R型指令,即寄存器—寄存器型指令,是指指令中兩個(gè)操作對(duì)象都是寄存器,用地址碼R1和R2表示,R1、R2為寄存器地址。

(3)?R—S型指令,即寄存器—存儲(chǔ)器型指令,是指指令中兩個(gè)操作對(duì)象一個(gè)是寄存器,一個(gè)是存儲(chǔ)器,用地址碼R和A表示,R為寄存器地址,A為主存地址。在以上三種指令類型中,R—R型指令在被執(zhí)行過(guò)程中不需要訪問(wèn)存儲(chǔ)器,執(zhí)行速度最快,因此是雙地址指令中最常用的一種指令格式,尤其在RISC中,所有運(yùn)算指令均為R—R型指令。4.三地址指令三地址指令的指令字中有三個(gè)地址碼A1、A2和A3,也稱為多地址指令。其格式為三地址指令的指令功能為:(A1)OP(A2)→A3。三地址指令的指令字較長(zhǎng),多用于字長(zhǎng)較長(zhǎng)的大、中型計(jì)算機(jī)中,小型機(jī)和微型機(jī)很少使用。5.3操作碼的編碼方法操作碼是機(jī)器指令的重要組成部分,是對(duì)指令所執(zhí)行操作的編碼,指令不同其操作碼也不同,具體表現(xiàn)在:操作碼長(zhǎng)度相同,操作碼不同或操作碼長(zhǎng)度不同。所以,按指令字中操作碼的長(zhǎng)度是否相同或固定,可以將操作碼的編碼分為固定長(zhǎng)度的定長(zhǎng)編碼和可變長(zhǎng)度的變長(zhǎng)編碼兩種。5.3.1定長(zhǎng)編碼定長(zhǎng)編碼是最簡(jiǎn)單的操作碼編碼方法。由于操作碼的長(zhǎng)度和位置在指令字中是固定的,有利于簡(jiǎn)化指令結(jié)構(gòu)和減少指令的譯碼時(shí)間,因此適用于字長(zhǎng)較長(zhǎng)的大、中型計(jì)算機(jī)。例如IBM370機(jī),其字長(zhǎng)是32位,指令分為半字長(zhǎng)、單字長(zhǎng)、1.5倍字長(zhǎng)指令類型,無(wú)論哪種類型的指令,其操作碼的長(zhǎng)度和位置都是固定的,由于操作碼的長(zhǎng)度固定為8位,指令系統(tǒng)所能允許的指令條數(shù)最多為28=256條,實(shí)際上IBM?370機(jī)只有183條指令,剩余的操作碼編碼為非法的操作碼。如果操作碼的編碼采用定長(zhǎng)編碼,則指令字中的操作碼長(zhǎng)度取決于指令系統(tǒng)中的全部指令條數(shù)。例如,若指令系統(tǒng)中有m條指令,則操作碼的長(zhǎng)度n應(yīng)滿足下式:n≥lb?m

(5-1)5.3.2變長(zhǎng)編碼變長(zhǎng)編碼是指指令字中操作碼的長(zhǎng)度和位置不固定,隨指令的不同而存在差異。采用變長(zhǎng)編碼方法,可以有效地壓縮操作碼的平均長(zhǎng)度,在小型機(jī)和微機(jī)中被廣泛采用。如小型機(jī)PDP-11,機(jī)器字長(zhǎng)為16位,指令分為單字長(zhǎng)、雙字長(zhǎng)、三字長(zhǎng)等指令類型,操作碼占5~6位,且遍及整個(gè)指令字長(zhǎng)度范圍。但由于操作碼長(zhǎng)度和位置不固定,因此增加了指令譯碼和分析的難度,使硬件設(shè)計(jì)復(fù)雜化。

1.操作碼擴(kuò)展技術(shù)在不增加指令字長(zhǎng)度的情況下,通過(guò)采用操作碼擴(kuò)展技術(shù),使操作碼的長(zhǎng)度隨地址碼的減少而增加,這樣一來(lái),對(duì)于地址碼個(gè)數(shù)不同的指令,可以具有不同長(zhǎng)度的操作碼,從而可以充分利用指令字的地址碼,使有限的指令字長(zhǎng)度可以表示更多的指令。設(shè)機(jī)器指令字長(zhǎng)度為16位。其中操作碼為4位,地址碼為4位。指令格式為如果采用定長(zhǎng)編碼,4位操作碼只能表示16條三地址指令。如果指令系統(tǒng)中除三地址指令外,還有二地址、一地址和零地址指令,且要求有15條三地址指令、15條二地址指令、15條一地址指令和16條零地址指令,則采用定長(zhǎng)編碼方法是無(wú)法滿足上述要求的,這就需要采用變長(zhǎng)編碼方法,操作碼的長(zhǎng)度隨地址碼的減少而增加,具體操作碼擴(kuò)展如下:

【例5-1】

某機(jī)器指令字長(zhǎng)度為16位。其中地址碼長(zhǎng)度為4位。如果指令系統(tǒng)中三地址指令有11條、二地址指令有72條、零地址指令有64條,則最多還能設(shè)計(jì)多少條一地址指令?解:對(duì)于三地址指令:地址碼共占12位,指令字中還剩4位用于操作碼,其編碼最多為24=16個(gè),由于實(shí)際只有11條三地址指令,所以還剩下16-11=4個(gè)編碼,可用于二地址指令。對(duì)于二地址指令:地址碼共占8位,指令字中還剩8位用于操作碼,扣除三地址指令用過(guò)的操作碼,其編碼最多為5×24=80個(gè),由于實(shí)際只有72條二地址指令,所以還剩下80-72=8個(gè)編碼,可用于一地址指令。對(duì)于一地址指令:地址碼共占4位,指令字中還剩12位用于操作碼,扣除三地址指令和二地址指令用過(guò)的操作碼,其編碼最多為8×24=128個(gè),如果這128個(gè)編碼都表示一地址指令,那么指令系統(tǒng)中就不存在零地址指令,實(shí)際上存在有零地址指令,所以,這128個(gè)編碼并不都是一地址指令。究竟一地址指令還能設(shè)計(jì)多少條,這就取決于實(shí)際存在的零地址指令條數(shù)。由于系統(tǒng)要求有64條零地址指令,而4位操作碼只能最多表示16條指令,所以,需要一地址指令提供64/16=4個(gè)操作碼編碼用于零地址指令,以保證零地址指令有64條。因此,指令系統(tǒng)中一地址指令最多還能設(shè)計(jì)128-4=124條指令。

2.Huffman編碼法

Huffman編碼法是根據(jù)各種指令使用的頻率不同,采用優(yōu)化技術(shù),將使用頻率最高的指令用最短的編碼表示,而對(duì)于使用頻率較低的指令用較長(zhǎng)的編碼表示,從而縮短操作碼的平均長(zhǎng)度。采用Huffman編碼法所得到的操作碼的平均長(zhǎng)度為其中,pi是第i條指令使用的頻率,li是第i條指令操作碼的長(zhǎng)度,n是指令總數(shù)。下面以10條指令的機(jī)器為例來(lái)說(shuō)明Huffman編碼過(guò)程。已知10條指令的使用頻率如表5-1所示。表5-1指令的使用頻率

1)?Huffman樹(shù)根據(jù)指令的使用頻率,畫出Huffman樹(shù),具體步驟如下:

(1)按頻率大小進(jìn)行排列,頻率相同的可任意排列。

(2)把出現(xiàn)頻率最小的兩項(xiàng)進(jìn)行合并,將其頻率相加,再把相加后的頻率進(jìn)行重新排序。

(3)重復(fù)步驟(2),直至只剩下最后兩個(gè)頻率,再將其合并,便形成Huffman樹(shù),如圖5-1所示。圖5-1Huffman樹(shù)

2)?Huffman編碼過(guò)程根據(jù)Huffman樹(shù),從根節(jié)點(diǎn)(最后兩個(gè)頻率形成的節(jié)點(diǎn))開(kāi)始編碼,左分支編碼為“1”,右分支編碼為“0”;各個(gè)子節(jié)點(diǎn)也同根節(jié)點(diǎn)一樣,左分支編碼為“1”,右分支編碼為“0”,直到末節(jié)點(diǎn)為止。各條指令的編碼便是從根節(jié)點(diǎn)開(kāi)始到末節(jié)點(diǎn)結(jié)束的一個(gè)二進(jìn)制代碼,如表5-2所示。采用Huffman編碼法所得到的操作碼平均長(zhǎng)度為表5-2Huffman編碼結(jié)果

H=

pi×li=(0.30+0.20)×2+(0.16+0.09+0.08+

0.07+0.04)×4+(0.03+0.02+0.01)×6

=1+0.75+0.76+0.15+0.18

=2.85若采用定長(zhǎng)編碼,由于指令有10條,所以操作碼的長(zhǎng)度為4??梢?jiàn),采用Huffman編碼法更有效地縮短了操作碼的平均長(zhǎng)度。

3.?dāng)U展編碼法采用Huffman編碼法能更有效地縮短操作碼的平均長(zhǎng)度,但這種編碼方法所形成的操作碼很不規(guī)整,將會(huì)給譯碼造成極大的困難,不利于軟件的編譯。于是,采取了一種折中的方案,即將Huffman編碼法與定長(zhǎng)編碼法進(jìn)行有效結(jié)合,在縮短操作碼平均長(zhǎng)度的基礎(chǔ)上,使操作碼更加規(guī)整。這種編碼方法稱為擴(kuò)展編碼法。擴(kuò)展編碼結(jié)果如表5-2所示。采用擴(kuò)展編碼法所得到的操作碼平均長(zhǎng)度為H=pi×li=(0.30+0.20)×2+(0.16+0.09)×3+(0.08+0.07+0.04)×4+0.03?×?5+(0.02+0.01)×?6=1+1.76+0.36=3.125.4地址碼的尋址方式尋址方式是指在指令被執(zhí)行的過(guò)程中,根據(jù)指令字中的地址碼去尋找操作對(duì)象的方式。如果地址碼所表示的操作對(duì)象是數(shù)據(jù)信息,則這樣的操作對(duì)象稱為操作數(shù),對(duì)應(yīng)的尋址方式為操作數(shù)尋址方式;如果地址碼所表示的操作對(duì)象是指令信息,則相應(yīng)的尋址方式為指令尋址方式。5.4.1指令尋址方式指令尋址方式又可分為順序?qū)ぶ贩绞胶吞D(zhuǎn)尋址方式,如圖5-2所示。圖5-2指令的尋址方式

1.順序?qū)ぶ贩绞巾樞驅(qū)ぶ贩绞绞遣捎肞C增量的方式形成下一條指令地址。具體尋址過(guò)程如圖5-2(a)所示,PC稱為程序計(jì)數(shù)器,是用來(lái)跟蹤程序的執(zhí)行并指向下一條將要被執(zhí)行的指令。由于程序在內(nèi)存中是連續(xù)存放的,當(dāng)程序順序執(zhí)行時(shí),PC的內(nèi)容加上一定的增量,便形成下一條將要被執(zhí)行指令的地址,至于增量是多少,取決于指令所占存儲(chǔ)單元的個(gè)數(shù)。

2.跳轉(zhuǎn)尋址方式跳轉(zhuǎn)尋址方式是指當(dāng)程序發(fā)生轉(zhuǎn)移時(shí),下一條將要執(zhí)行的指令地址不再是PC的內(nèi)容,而是根據(jù)轉(zhuǎn)移指令字中的地址碼A去形成下一條將要執(zhí)行的指令地址。具體尋址過(guò)程如圖5-2(b)所示,如果是地址碼直接形成PC,記作A→PC,這種跳轉(zhuǎn)尋址方式也稱為絕對(duì)跳轉(zhuǎn);如果是當(dāng)前PC的內(nèi)容(現(xiàn)行PC加上增量)加上地址碼形成PC,記作(PC)+A→PC,這種跳轉(zhuǎn)尋址方式也稱為相對(duì)跳轉(zhuǎn)。5.4.2操作數(shù)尋址方式操作數(shù)的存放不像指令的存放有規(guī)律,它既可以存放在寄存器、存儲(chǔ)器和外設(shè)中,也可以存放在指令中,因此表示操作數(shù)的地址碼盡管形式上都是二進(jìn)制代碼,但所表示的含義各不相同,有時(shí)代表的是地址,有時(shí)代表的是數(shù)據(jù),往往比較復(fù)雜,一般討論尋址方式時(shí),主要是討論操作數(shù)尋址方式。下面以一地址指令為例,介紹幾種最常用的基本尋址方式。一地址指令格式為由于操作數(shù)尋址方式種類較多,所以在指令字中設(shè)置一個(gè)尋址方式MOD字段,用來(lái)指明具體的尋址方式。當(dāng)操作數(shù)存放在存儲(chǔ)器中時(shí),指令字中的地址碼并不是內(nèi)存的實(shí)際地址,因此我們把它稱為形式地址。形式地址必須轉(zhuǎn)換成內(nèi)存的實(shí)際地址,然后才能訪問(wèn)存儲(chǔ)器。內(nèi)存的實(shí)際地址也稱為有效地址(EA)。所以,EA是A的一個(gè)函數(shù),記為EA=f(A)。函數(shù)f不同,其尋址方式也不同。

1.立即尋址方式立即尋址方式是指指令字中的地址碼本身就是操作數(shù),即操作數(shù)是D,D也稱為立即數(shù),其格式為立即尋址的優(yōu)點(diǎn):由于從存儲(chǔ)器中取出指令的同時(shí),操作數(shù)也被取出了,并且操作數(shù)是在指令字中的,因此在執(zhí)行指令時(shí),不必再次訪問(wèn)存儲(chǔ)器,從而提高了指令的執(zhí)行速度。但由于指令字長(zhǎng)度的限制,D的位數(shù)限制了立即數(shù)的大小。

2.直接尋址方式直接尋址方式是指指令字中的地址碼D(形式地址)就是操作數(shù)的有效地址,即EA=D。如圖5-3所示。直接尋址簡(jiǎn)單直觀,便于硬件實(shí)現(xiàn)。但由于指令字長(zhǎng)度的限制,形式地址D限制了指令的尋址范圍,隨著內(nèi)存容量不斷擴(kuò)大,要想尋址整個(gè)內(nèi)存空間,勢(shì)必造成指令字長(zhǎng)度的增加。另外在編程時(shí),如果使用了直接尋址指令,一旦操作數(shù)地址發(fā)生變化,就必須修改指令中的D,也給編程帶來(lái)不便。

圖5-3直接尋址方式

3.間接尋址方式間接尋址方式是指指令字中的地址碼D(形式地址)不是操作數(shù)的有效地址,而是操作數(shù)的有效地址的有效地址,即EA?=?(D),如圖5-4所示。與直接尋址相比,間接尋址比直接尋址靈活,使用較短的地址碼可以訪問(wèn)較大的存儲(chǔ)空間。另外,間接尋址有利于編程,如果使用了間接尋址指令,當(dāng)操作數(shù)地址發(fā)生變化時(shí),可不必修改指令,只需修改存放有效地址的單元內(nèi)容即可。其缺點(diǎn)是指令的執(zhí)行時(shí)間較長(zhǎng),因?yàn)樾枰啻卧L問(wèn)存儲(chǔ)器。圖5-4間接尋址方式

4.寄存器直接尋址方式寄存器直接尋址方式也稱寄存器尋址方式,是指指令字中的地址碼R(形式地址)是某一寄存器的編號(hào),其寄存器的內(nèi)容為指令所需的操作數(shù),即EA=(R),如圖5-5所示。由于寄存器尋址方式的操作數(shù)位于寄存器中,采用寄存器尋址方式的指令在被執(zhí)行時(shí),無(wú)需訪問(wèn)內(nèi)存,從而減少了指令的執(zhí)行時(shí)間;另外,由于內(nèi)部寄存器數(shù)量有限,指令字中的地址碼較短,有效地縮短了指令字長(zhǎng)度。因此,寄存器尋址方式在計(jì)算機(jī)中得到了廣泛的應(yīng)用。

5.寄存器間接尋址方式寄存器間接尋址方式是指指令字中的地址碼A(形式地址)是某一寄存器的編號(hào),其寄存器的內(nèi)容不是指令所需的操作數(shù),而是指令所需操作數(shù)的有效地址,即EA=((R)),如圖5-6所示。指令采用寄存器間接尋址方式時(shí),由于操作數(shù)的有效地址存放在寄存器中,因此該指令在被執(zhí)行時(shí)只訪問(wèn)兩次存儲(chǔ)器,比間接尋址速度快。圖5-6寄存器間接尋址方式

6.變址尋址方式變址尋址方式是指指令字中的地址碼A(形式地址)加上指令中指定的變址寄存器的內(nèi)容形成操作數(shù)的有效地址,即EA=A+(Ri),如圖5-7所示。指令采用變址尋址方式時(shí),如果操作數(shù)地址發(fā)生變化時(shí),可不必修改指令,只需按一定增量修改變址寄存器的內(nèi)容,以方便實(shí)現(xiàn)循環(huán)程序設(shè)計(jì)。圖5-7變址尋址方式

7.基址尋址方式基址尋址方式是指指令字中的地址碼D(形式地址)加上指令中指定的基址寄存器的內(nèi)容形成操作數(shù)的有效地址,即EA=D+(Rb),基址寄存器通常是專用的寄存器,如圖5-8所示。圖5-8基址尋址方式基址尋址與變址尋址有效地址的形成過(guò)程很相似,但兩者的應(yīng)用有著本質(zhì)的區(qū)別?;穼ぶ肥敲嫦蛳到y(tǒng)的,用于將用戶程序的邏輯地址轉(zhuǎn)換成物理地址,以便實(shí)現(xiàn)程序的再定位,基址寄存器的內(nèi)容通常是由操作系統(tǒng)進(jìn)行設(shè)置,不允許進(jìn)行增量或減量,并對(duì)用戶是透明的。

8.相對(duì)尋址方式相對(duì)尋址方式是將當(dāng)前PC的內(nèi)容(現(xiàn)行PC加上增量)加上地址碼(形式地址)形成操作數(shù)的有效地址,即EA=(PC)+D→PC,D稱為位移量,是定點(diǎn)整數(shù)的補(bǔ)碼,如圖5-9所示。指令采用相對(duì)尋址方式時(shí),編程時(shí)不需要用指令的絕對(duì)地址,可以將程序放在內(nèi)存的任何地方。

9.隱含尋址隱含尋址是指指令字中的地址碼是A隱含的。對(duì)于一地址指令而言,指令格式中地址碼A就缺省了,盡管沒(méi)有地址碼,但操作數(shù)是存在的,并規(guī)定為累加器AC。5.5典型的指令系統(tǒng)5.5.1復(fù)雜指令系統(tǒng)

1.指令類型不同機(jī)器的指令系統(tǒng)是各不相同的,CISC的指令系統(tǒng)一般有上百種指令,按照指令的功能對(duì)指令進(jìn)行歸類,一個(gè)較完善的復(fù)雜指令系統(tǒng)應(yīng)該包含以下8種指令類型。

1)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令主要包括取數(shù)指令、存數(shù)指令、傳送指令、交換指令、對(duì)堆棧操作的指令等,主要用于實(shí)現(xiàn)存儲(chǔ)器與寄存器、堆棧之間以及寄存器與寄存器、堆棧之間的數(shù)據(jù)傳送。

2)算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令主要包括二進(jìn)制定點(diǎn)數(shù)的四則運(yùn)算指令、十進(jìn)制數(shù)的四則運(yùn)算指令、浮點(diǎn)數(shù)的四則運(yùn)算指令、算術(shù)移位指令、比較指令、求補(bǔ)和求反指令等,主要用于定點(diǎn)數(shù)和浮點(diǎn)數(shù)的算術(shù)運(yùn)算。

3)邏輯運(yùn)算指令邏輯運(yùn)算指令主要包括邏輯與、邏輯或、邏輯非、邏輯移位等指令,主要用于無(wú)符號(hào)數(shù)的位操作、代碼轉(zhuǎn)換、邏輯判斷。

4)串操作指令串操作指令包括串傳送指令、串比較指令、串搜索指令、串替換指令等,主要用于對(duì)字符串和數(shù)據(jù)串的處理。

5)轉(zhuǎn)移指令轉(zhuǎn)移指令也稱程序控制指令,主要包括無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用與返回指令、中斷與返回指令等,主要用于控制改變程序的執(zhí)行順序。

6)輸入/輸出指令輸入/輸出指令主要用于控制外設(shè)、檢測(cè)外設(shè)的工作狀態(tài)、實(shí)現(xiàn)對(duì)外設(shè)的數(shù)據(jù)傳送。

7)特權(quán)指令特權(quán)指令是指具有特殊權(quán)限的指令,只用于操作系統(tǒng),一般不會(huì)直接提供給用戶。

8)其他指令其他指令主要指復(fù)位指令、停機(jī)指令、空操作指令、對(duì)狀態(tài)寄存器的置位和復(fù)位指令。綜上所述,CISC指令系統(tǒng)具有以下特點(diǎn):

(1)指令系統(tǒng)復(fù)雜龐大,表現(xiàn)為指令條數(shù)較多。

(2)指令格式多樣,表現(xiàn)為指令字長(zhǎng)不固定,尋址方式種類較多。

(3)指令的執(zhí)行時(shí)間差別較大。

(4)大多數(shù)CISC指令系統(tǒng)采用微程序控制器。

2.8086CPU指令格式

8086CPU指令長(zhǎng)度可以是1~6字節(jié),其指令格式如圖5-10所示。其中B1和B2為基本字節(jié),B3~B6將根據(jù)不同指令作不同的定義。圖5-108086指令格式

1)?B1字節(jié)各字段定義

(1)?OP:表示指令操作碼。

(2)?D:表示方向。D=1時(shí),寄存器為目的操作數(shù);D=0時(shí),寄存器為源操作數(shù)。

(3)?W:表示字節(jié)或字處理方式。W=0表示字節(jié)處理指令;W=1表示字處理指令。

2)?B2字節(jié)各字段定義

(1)?MOD:表示指令的尋址方式。8086的一條指令中最多可使用兩個(gè)操作數(shù),它們不能同時(shí)位于存儲(chǔ)器中,最多只能有一個(gè)是存儲(chǔ)器操作數(shù)。MOD?≠?11,為存儲(chǔ)器方式,即有一個(gè)操作數(shù)位于存儲(chǔ)器中;MOD=00,沒(méi)有位移量;MOD=01,只有低8位位移量,需將符號(hào)擴(kuò)展8位,形成16位;MOD=10,有16位位移量;MOD=11,為寄存器方式,兩個(gè)操作數(shù)均為寄存器。

(2)?REG:表示指令中只有一個(gè)操作數(shù),這個(gè)操作數(shù)為寄存器。

(3)?R/M:R/M受MOD制約。當(dāng)MOD=11(即寄存器方式時(shí)),由此字段給出指令中第二個(gè)操作數(shù)所在的寄存器編碼;當(dāng)MOD?≠?11時(shí),此字段用來(lái)指出應(yīng)如何計(jì)算指令中使用的存儲(chǔ)器操作數(shù)的有效地址。MOD和R/M字段表示有效地址EA的計(jì)算方法。

3)?B3~B6字節(jié)各字段定義

B3~B6這四個(gè)字節(jié)一般是給出存儲(chǔ)器操作數(shù)地址的位移量(即偏移量)或立即操作數(shù)。位移量可為8位,也可為16位,這由MOD來(lái)決定。8086規(guī)定16位的字位移量的低位字節(jié)存于低地址單元,高位字節(jié)存于高地址單元。若指令中只有8位位移量,那么8086在計(jì)算有效地址時(shí),自動(dòng)用8位位移量的符號(hào)將其擴(kuò)展成一個(gè)16位的雙字節(jié)數(shù),以保證有效地址的計(jì)算不產(chǎn)生錯(cuò)誤,實(shí)現(xiàn)正確的尋址。指令中的立即操作數(shù)位于位移量的后面。若B3B4有位移量,立即操作數(shù)就位于B5B6字節(jié);若指令中無(wú)位移量,立即操作數(shù)就位于B3B4字節(jié)。總之,指令中缺少的項(xiàng)將由后面存在的項(xiàng)頂替,以減少指令的長(zhǎng)度。5.5.2精簡(jiǎn)指令系統(tǒng)

1.RISC指令系統(tǒng)的特點(diǎn)結(jié)合表5-3所列出的典型RISC指令系統(tǒng)的基本特征,可以看出RISC指令系統(tǒng)有如下特點(diǎn):

(1)指令條數(shù)少,所選取的指令都是使用頻率較高的簡(jiǎn)單指令;

(2)指令字長(zhǎng)固定,且指令格式種類少;

(3)只有取數(shù)/存數(shù)指令可以訪問(wèn)存儲(chǔ)器,其他指令的操作都在寄存器之間進(jìn)行。表5-3典型RISC指令系統(tǒng)的基本特征

2.SPARC機(jī)指令系統(tǒng)

SPARC機(jī)是RISC指令系統(tǒng)最典型的代表,機(jī)器的字長(zhǎng)為32位,共有75條指令。

1)指令類型和指令格式

(1)?SPARC機(jī)指令類型。①算術(shù)運(yùn)算/邏輯運(yùn)算/移位指令;②取數(shù)(LOAD)/存數(shù)(STORE)指令;③控制轉(zhuǎn)移指令;④讀/寫專用寄存器指令;⑤浮點(diǎn)運(yùn)算指令;⑥協(xié)處理器指令。

(2)?SPARC機(jī)指令格式。

SPARC機(jī)有三種指令格式,如表5-4所示。表5-4SPARC機(jī)指令格式在表5-4中,OP、OP2、OP3為指令操作碼,OPf為浮點(diǎn)指令操作碼。為了增加立即數(shù)和偏移量的長(zhǎng)度,調(diào)用指令CALL、轉(zhuǎn)移指令BRANCH和SETHI指令的操作碼縮短了,其中SETHI指令是將22位的立即數(shù)(imm22)左移10位,送到Rd所指示的寄存器中,然后再執(zhí)行一條加法指令,以補(bǔ)充后面10位數(shù)據(jù),從而形成32位字長(zhǎng)的數(shù)據(jù)。

Rs1、Rs2為通用寄存器地址,用作源操作數(shù)寄存器地址或地址寄存器地址。

Rd為目的寄存器地址,用來(lái)保存運(yùn)算結(jié)果或從存儲(chǔ)器取來(lái)的數(shù)據(jù)。

Simm13是13位擴(kuò)展符號(hào)的立即數(shù)。運(yùn)算時(shí)如果Simm13最高位是1,則最高位前面的所有位都擴(kuò)展為1;否則,最高位前面的所有位都擴(kuò)展為0。

i是用來(lái)選擇第二個(gè)操作數(shù)的。當(dāng)i=0時(shí),第二個(gè)操作數(shù)在Rs2中;當(dāng)i=1時(shí),第二個(gè)操作數(shù)為Simm13。

2)指令功能與尋址方式

(1)算術(shù)邏輯運(yùn)算指令。功能:將Rs1、Rs2的內(nèi)容(或Simm13)按操作碼規(guī)定的操作運(yùn)算后結(jié)果送Rd。當(dāng)i=0時(shí),(Rs1)OP(Rs2)→Rd;當(dāng)i=1時(shí),(Rs1)OPSimm13→Rd。

(2)取數(shù)/存數(shù)指令。功能:取數(shù)指令LOAD將存儲(chǔ)器中的數(shù)據(jù)送往Rd;存數(shù)指令STORE將Rd中的數(shù)據(jù)送往存儲(chǔ)器。存儲(chǔ)器地址的計(jì)算方法如下(寄存器間接尋址):當(dāng)i=0時(shí),存儲(chǔ)器地址=(Rs1)+(Rs2);當(dāng)i=1時(shí),存儲(chǔ)器地址=(Rs1)?+Simm13。

(3)控制轉(zhuǎn)移指令。條件轉(zhuǎn)移(BRANCH)指令:由Cond字段決定程序是否轉(zhuǎn)移,用相對(duì)尋址方式形成轉(zhuǎn)移地址。轉(zhuǎn)移并連接(JMPL)指令:將本指令的地址保存在Rd所指示的寄存器中,以備程序返回使用。用寄存器間接尋址形成轉(zhuǎn)移地址。調(diào)用(CALL)指令:采用相對(duì)尋址方式形成轉(zhuǎn)移地址。陷阱(TRAP)指令:采用寄存器間接尋址形成轉(zhuǎn)移地址。

TRAP程序返回(RETT)指令:采用寄存器間接尋址形成轉(zhuǎn)移地址。

(4)讀/寫專用寄存器指令。

SPARC機(jī)有4個(gè)專用寄存器指令,即PSR、Y、WIM和TBR指令。其中,PSR稱為程序狀態(tài)寄存器,其內(nèi)容反映并控制機(jī)器的運(yùn)行狀態(tài),非常重要,因此,讀/寫PSR指令一般是特權(quán)指令。綜上所述,SPARC機(jī)的指令系統(tǒng)由于采用了RIS技術(shù),該機(jī)器的指令系統(tǒng)只設(shè)置了75條指令,還有一些指令并沒(méi)有選入指令系統(tǒng),但很容易用指令系統(tǒng)中的指令去替代實(shí)現(xiàn)。如表5-5所示,其中,表的左邊列出了6條指令,表的右邊給出了替代指令及實(shí)現(xiàn)方法。(SPARC約定R0的內(nèi)容恒為0。)表5-5RISC指令的替代與實(shí)現(xiàn)關(guān)聯(lián)習(xí)題

5.1什么叫指令?什么叫指令系統(tǒng)?指令通常有哪幾種地址格式?

5.2什么叫指令地址?什么叫形式地址?什么叫有效地址?

5.3什么叫尋址方式?有哪些基本的尋址方式?簡(jiǎn)述其尋址過(guò)程。

5.4基址尋址方式和變址尋址方式各有什么不同?

5.5設(shè)某機(jī)指令長(zhǎng)為16位,每個(gè)操作數(shù)的地址碼為6位,指令分為單地址指令、雙地址指令和零地址指令。若雙地址指令為K條,零地址指令為L(zhǎng)條,則最多可有多少條單地址指令?

5.6設(shè)某機(jī)指令長(zhǎng)為16位,每個(gè)地址碼長(zhǎng)為4位,試用擴(kuò)展操作碼方法設(shè)計(jì)指令格式。其中三地址指令有10條,二地址指令有90條,單地址指令有32條,還有若干零地址指令,則零地址指令最多有多少條?

5.7設(shè)某機(jī)字長(zhǎng)為32位,CPU有32個(gè)32位通用寄存器,有8種尋址方式,包括直接尋址、間接尋址、立即尋址、變址尋址等,采用R-S型單字長(zhǎng)指令格式,共有120條指令,試問(wèn):

(1)該機(jī)直接尋址的最大存儲(chǔ)空間為多少?

(2)若采用間接尋址,則可尋址的最大存儲(chǔ)空間為多少?如果采用變址尋址呢?

(3)若立即數(shù)為帶符號(hào)的補(bǔ)碼整數(shù),試寫出立即數(shù)范圍。

5.8一種單地址指令格式如下所示,其中I為間接特征,X為尋址模式,D為形式地址。I、X、D組成該指令操作數(shù)的有效地址E。設(shè)R為變址寄存器,R1為基址寄存器,PC為程序計(jì)數(shù)器,請(qǐng)?jiān)谙卤碇械谝涣形恢锰顚戇m當(dāng)?shù)膶ぶ贩绞健?.9簡(jiǎn)述RISC的主要特點(diǎn)。5.10選擇題。(1)計(jì)算機(jī)系統(tǒng)中,硬件能夠直接識(shí)別的指令是()。A.機(jī)器指令 B.匯編語(yǔ)言指令C.高級(jí)語(yǔ)言指令 D.特權(quán)指令(2)指令系統(tǒng)中采用不同的尋址方式的主要目的是()。A.增加內(nèi)存的容量B.縮短指令長(zhǎng)度,擴(kuò)大尋址范圍C.提高訪問(wèn)內(nèi)存的速度D.簡(jiǎn)化指令譯碼電路

(3)在相對(duì)尋址方式中,若指令中地址碼為X,則操作

溫馨提示

  • 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)論