中國海洋大學計算機組成原理課件(第5章)_第1頁
中國海洋大學計算機組成原理課件(第5章)_第2頁
中國海洋大學計算機組成原理課件(第5章)_第3頁
中國海洋大學計算機組成原理課件(第5章)_第4頁
中國海洋大學計算機組成原理課件(第5章)_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

ForStudentsofLab2010(ComputerOrganizationPrinciples)主講教師蔣永國(jiangyg@)

(信息學院南樓,B313室)實驗教師

徐惠敏(yziping@)

1計算機硬件系統(tǒng)組成(章節(jié)分配)運算器控制器主存儲器輸入設備輸出設備總線和I/O接口高速緩存虛擬存儲器(磁盤設備)第一部分(2,3章)第二部分(5,6章)第三部分(4,7,8章)第四部分(9,10章)2第5章指令系統(tǒng)(目錄部分)5.1指令系統(tǒng)的發(fā)展

5.2指令格式5.3數(shù)據(jù)表示5.4尋址方式(編址方式)5.5指令類型5.6指令系統(tǒng)的兼容性5.7RISC和CISC5.8指令系統(tǒng)舉例5.9機器語言、匯編語言和高級語言3第5章指令系統(tǒng)本章重點和難點尋址方法的應用指令操作碼的擴展編碼技術RISC的概念和特征4第5章指令系統(tǒng)的發(fā)展

指令系統(tǒng)的重要性

“分水嶺”

計算機的性能與它設置的指令系統(tǒng)有很大關系,而指令系統(tǒng)的設置又與機器的硬件結構有關。計算機系統(tǒng)=硬件+軟件軟件的設計基礎是計算機的指令系統(tǒng)。指令:使計算機完成基本運算所需信號的組合,包括數(shù)據(jù)、地址和控制信息。一臺計算機使用和支持的全部指令構成該機的指令系統(tǒng)。51、符號化表示(匯編指令)如: ADDAX,BX

SUBAX,BX

等特點:直觀、易讀、易記;

助記符號可以任意選擇,但與所選用的匯編解釋程序應保持一致.2、二進制數(shù)表示的指令(機器指令)如: 00001011、0001110等特點:難讀、但能被機器直接識別.第5章指令系統(tǒng)的發(fā)展(指令的兩種表示形式)6第5章指令系統(tǒng)的發(fā)展Ⅰ分立元件的計算機指令系統(tǒng)較簡單,指令少,尋址方式簡單.集成電路的計算機指令多達一,二百條,尋址方式也趨于多樣化為了減少軟件開發(fā)費用,軟件兼容,出現(xiàn)了系列機,IBM360、PDP-11系列8086,286,386,486,Pentium系列.

一個系列有多種型號,各型號的組織和性能可以有很大差異,系列機解決軟件兼容問題的必要條件是該系列機有共同的指令集,而且新機種的指令系統(tǒng)一定包含舊機種的所有指令(向下兼容)。7第5章指令系統(tǒng)的發(fā)展Ⅱ指令系統(tǒng)的改進是圍繞著縮小指令與高級語言的語義差異以及有利于操作系統(tǒng)的優(yōu)化而進行的.指令系統(tǒng)太復雜也會帶來一些不利的因素。在復雜指令系統(tǒng)中,算術-邏輯運算,數(shù)據(jù)傳送,轉(zhuǎn)移和子程序調(diào)用等基本指令是經(jīng)常使用的,其他的復雜指令的利用率很低,

☆復雜指令系統(tǒng)計算機(CISC)于是,提出了☆精簡指令系統(tǒng)計算機(RISC)8第5章指令格式

要評價一臺計算機的指令系統(tǒng),通常從以下四個方面考慮:指令系統(tǒng)的完備性

—常用指令齊全、編程方便。指令系統(tǒng)的高效性

—程序占用的內(nèi)存空間少、運行速度快。指令系統(tǒng)的規(guī)整性

—指令和數(shù)據(jù)使用規(guī)則統(tǒng)一簡單、易學易記。指令系統(tǒng)的兼容性

—同一系列的抵檔計算機的程序能在高檔計算機上直接運行。9第5章指令格式Ⅰ一條指令必須包含下列信息:操作碼:操作的性質(zhì)和功能操作數(shù)的地址操作結果的地址下一條指令的地址總之,指令中包含操作碼和地址碼操作碼地址碼機器執(zhí)行什么操作執(zhí)行對象(具體數(shù)、存放位置)指令是對計算機進行程序控制的最小單位。所有的指令的集合稱為計算機的指令系統(tǒng)。101、零地址指令格式:OPCODE

OPCODE=OperationCode

指令中只有操作碼沒有操作數(shù)或地址。兩種可能:(1)無需操作數(shù),例如:NOP、HLT,也叫無操作數(shù)指令(2)操作數(shù)是默認的第5章指令格式11第5章指令格式2.一地址指令

A-----操作數(shù)的存儲地址或寄存器名例如:遞增,移位,取反,INCAX,NOTBX

格式:OPCODEA12第5章指令格式3.二地址指令

A1-----第一個源操作數(shù)的存儲地址或寄存器地址。A2-----第二個源操作數(shù)和存放結果的存儲地址或寄存器地址例如:[AX]+[BX]→[AX]ADDAX,BX格式:OPCODEA1A213第5章指令格式4.三地址指令

A1-----第一個源操作數(shù)的存儲地址或寄存器地址。A2-----第二個源操作數(shù)的存儲地址或寄存器地址。A3-----操作結果的存儲地址或寄存器地址格式:OPCODEA1A2A35.多地址指令:用于實現(xiàn)成批數(shù)據(jù)處理。14前面5種指令格式并非所有計算機都具有,零地址、一地址和兩地址指令多用于小型機、微型機。兩地址、三地址和多地址多為字長較長的大、中型機采用。注意:計算機中指令和數(shù)據(jù)都是以二進制碼的形式存儲的。但是,指令的地址是由程序計數(shù)器(PC)規(guī)定的。而數(shù)據(jù)的地址是由指令規(guī)定的。第5章指令格式15第5章指令格式--指令操作碼的擴展指令操作碼的位數(shù)限制指令系統(tǒng)中完成操作的指令條數(shù)。若操作碼長度為K,最多有2k條不同指令。固定格式操作碼操作碼長度固定,一般集中于指令字的一個字段中。在字長較大的大中型以及超級小型機上廣泛使用。優(yōu)點:有利于簡化硬件設計,減少譯碼時間可變格式操作碼即操作碼長度可以改變,且分散放在指令字的不同字段中。這種方法在不增加指令字長度的情況下可表示更多的指令,但增加了譯碼和分析難度,需更多硬件支持。微機中常使用此方式。如Z-80,Intel8086/Pentium等.16假設某機器的指令長度為16位,包括4位基本操作碼和三個4位地址碼段。

15…1211……87……43…..0

OPA1A2A34位基本操作碼可表示16個狀態(tài),因此如用4位操作碼則能表示16條三地址指令,而用8位操作碼則可表示256條二地址指令。而用12位操作碼則可表示4096條一地址指令。第5章指令格式--指令操作碼的擴展17第5章指令格式Ⅲ

指令操作碼的擴展等長編碼(在字長較長的大、中型機和超級小型機以及RISC上廣泛采用。若操作碼占n位,則指令條數(shù)2n)簡化硬件設計,減少指令譯碼時間IBM370len(OP)=8bits,256條指令不等長編碼對于一部分不需要某個地址碼的指令,把它們的操作碼擴充到該地址字段,這樣既能充分利用指令的各個字段,又能在不增加指令長度的情況下擴展操作碼的長度,使它能表示更多的指令.15/15/15擴展法15/14/31擴展法8/64/512擴展法Huffman編碼法在字長較短的微型機上廣泛采用。如Z80、Intel8086/Pentium等。增加指令譯碼和分析的難度,使控制器的設計復雜化。18第5章指令操作碼的擴展15/15/15擴展法機器字長位16位,設計一個具有15條三地址指令、15條雙地址指令、15條單地址指令和16條零地址指令的指令系統(tǒng)。(保留一個碼點)0000XXXXXXXXXXXX1110XXXXXXXXXXXX11110000XXXXXXXX11111110XXXXXXXX111111110000XXXX111111111110XXXX11111111111100001111111111111111OPA1A2A315條三地址指令15條二地址指令15條單地址指令16條零地址指令19第5章指令操作碼的擴展15/14/31擴展法機器字長位16位,設計一個具有15條三地址指令、14條雙地址指令、31條單地址指令和16條零地址指令的指令系統(tǒng)。(保留一個碼點)0000XXXXXXXXXXXX1110XXXXXXXXXXXX11110000XXXXXXXX11111101XXXXXXXX111111100000XXXX111111111110XXXX11111111111100001111111111111111OPA1A2A315條三地址指令14條二地址指令31條單地址指令16條零地址指令20機器字長位16位,設計一個具有8條三地址指令、64條雙地址指令、512條單地址指令和8192條零地址指令的指令系統(tǒng)。(保留一位標志位)0000XXXXXXXXXXXX0111XXXXXXXXXXXX10000000XXXXXXXX10111111XXXXXXXX110000000000XXXX110111111111XXXX11100000000000001111111111111111OPA1A2A3

8條三地址指令64條二地址指令512條單地址指令8192條零地址指令第5章指令操作碼的擴展8/64/512擴展法21第5章指令操作碼的擴展可變長度的指令系統(tǒng)的設計,到底使用何種擴展方法有一個重要的原則:

使用頻度(即指令在程序中的出現(xiàn)概率)高的指令應分配短的操作碼;使用頻度低的指令相應地分配較長的操作碼.

作用:構成的指令系統(tǒng)的平均碼長最短。節(jié)省存儲器空間,縮短了經(jīng)常使用的指令的譯碼時間,因而可以提高程序的運行速度。

即:L=(Pi*li)其中,Pi為指令出現(xiàn)的概率,li為指令分配的碼長。22實現(xiàn):按概率分布情況,構成一棵Huffman樹,然后從樹根沿著樹枝到達信息單元(指令出現(xiàn)的概率點),在每個分枝上、下(或左、右)寫上0和1,直到全部編碼完畢;指令編碼為:從樹根開始,沿著樹枝寫出各個信息單元的全部代碼。第5章指令操作碼的擴展Huffman編碼法23某機器共有7條指令,其使用統(tǒng)計頻度如下,求出該系統(tǒng)的平均信息量(最短平均碼長),若采用定長編碼,則系統(tǒng)的信息冗余量為多少?指令使用頻度

I10.45I20.28I30.17I40.05I50.03I60.01I70.01解:H=(

-Pi*Log2Pi)

(比特)=(-0.45*Log100.45-0.28*Log100.28-0.17*Log100.17-0.05*Log100.05-0.03*Log100.03-2*0.01*Log100.01)/Log102=1.97BITS第5章指令操作碼的擴展Huffman編碼法24I70.01I60.01I50.03I40.05I30.17I20.28I10.45平均碼長L=(Pi*li)=2*(0.45+0.28+0.17)+4*(0.05+0.03+0.01+0.01)=2.2冗余量=(2.2-1.97)/2.2*100%=10.5%111111000000H碼長L=1*0.45+2*0.28+3*0.17+4*0.05+5*0.03+2*6*0.01=1.99第5章指令操作碼的擴展Huffman編碼法25第5章指令格式

指令長度與字長的關系字長是指計算機能直接處理的二進制數(shù)據(jù)的位數(shù)字長決定了計算機的運算精度為了便于處理字符數(shù)據(jù)和盡可能地充分利用存儲空間,一般機器的字長是字節(jié)長度的1,2,4,或8倍指令的長度(是指一個指令字中包含二進制代碼的位數(shù))主要取決于操作碼的長度,操作數(shù)地址的長度和操作數(shù)地址的個數(shù).由于操作碼的長度,操作數(shù)地址的長度及指令格式不同,各指令的長度不是固定的.指令的長度與機器的字長沒有固定的關系。

□指令長度可以小于或等于字長,也可以大于字長.前者稱為短格式指令,后者稱為長格式指令。

□指令的長度通常為字節(jié)的整數(shù)倍。

□一條指令存放在地址連續(xù)的存儲單元中。26第5章數(shù)據(jù)表示操作數(shù)的類型

邏輯(布爾)數(shù)、定點數(shù)(整數(shù))、浮點數(shù)(實數(shù))、十進制數(shù)、字符串、數(shù)組等.操作數(shù)的存儲方式

字節(jié)半字單字雙字27第5章數(shù)據(jù)表示操作數(shù)的存儲方式一個數(shù)據(jù)的位數(shù)>1字節(jié)或1個字的寬度,這個數(shù)據(jù)就需要存儲在相鄰的多個字節(jié)的位置上。按照高位數(shù)據(jù)和低位數(shù)據(jù)在存儲器中的存儲次序,可分為大數(shù)端和小數(shù)端兩種存儲方式。將最低字節(jié)存儲在最小地址位置的存儲方式稱為小數(shù)端方式(LittleEndian)。將最低字節(jié)存儲在最大地址位置的存儲方式稱為大數(shù)端方式(BigEndian)。許多新型計算機系統(tǒng)結構都同時支持大數(shù)端和小數(shù)端數(shù)據(jù)存儲方式。

28例:十進制數(shù)1000000,用十六進制數(shù)據(jù)表示為:F4240H,在32位數(shù)據(jù)類型中存儲為00

0F

42

40H。(1)小數(shù)端存放(DEC和Intel)

40

42

0F

00

0

1

2

3存儲器地址編號(2)大數(shù)端存放(IBM和Motorola)

00

0F

42

40

0

1

2

3第5章數(shù)據(jù)表示29第5章數(shù)據(jù)表示(不浪費存儲器資源的存放方法)存儲字64位(8個字節(jié))現(xiàn)有一批數(shù)據(jù),依次為:字節(jié)、半字、雙字、單字。

4種不同長度的數(shù)據(jù)一個緊接著一個存放。字長32位.

☆優(yōu)點是不浪費寶貴的主存資源,

但存在的問題:當訪問的一個雙字、單字或半字跨越兩個存儲單元時,存儲器的工作速度降低了一半,而且讀寫控制比較復雜。30第5章數(shù)據(jù)表示(從存儲字的起始位置開始存放的方法)無論要存放的是字節(jié)、半字、單字或雙字,都必須從存儲字的起始位置開始存放,而空余部分浪費不用。

☆優(yōu)點:無論訪問一個字節(jié)、半字、單字或雙字都可以在一個存儲周期內(nèi)完成,讀寫數(shù)據(jù)的控制比較簡單?!钊秉c:浪費了寶貴的存儲器資源。存儲字64位(8個字節(jié))31第5章數(shù)據(jù)表示(邊界對齊的數(shù)據(jù)存放方法)此方法規(guī)定,雙字地址的最末3個二進制位必須為000,單字地址的最末兩位必須為00,半字地址的最末一位必須為0。它能夠保證無論訪問雙字、單字、半字或字節(jié),都在一個存取周期內(nèi)完成,盡管存儲器資源仍然有浪費。存儲字64位(8個字節(jié))018162432917253321018311194122051321614227152326342728363529373031393832Struct{

inta;//0x1112_1314 字

intpad;// doubleb;//0x2122_2324_2526_2728 雙字

char*c;//0x3132_3334 字

chard[7];//’A’,’B’,’C’,’D’,’E’,’F’,’G’ 字節(jié)陣列

shorte;//0x5152 半字

intf; //0x6162_6364 字}s;大:大端次序的存儲器中位序小:小端次序的存儲器中位序00111213140408212223240C25262728103132333414‘A’‘B’‘C’‘D’18’E‘’F‘’G‘1C5152206162大636400141312110408282726250C24232221103433323114’A‘’B‘’C‘’D‘18’E‘’F‘’G‘1C5251206463小6261兩種字節(jié)次序舉例Ⅰ33大端地址映射字節(jié)地址1112131400000102030405060721222324252627280808090A0B0C0D0E0F31323334‘A’‘B’‘C’‘D’101011121314151617‘E’‘F’‘G’51521818191A1B1C1D1E1F616263642020212223小端地址映射11121314字節(jié)地址07060504030201000021222324252627280F0E0D0C0B0A090808‘D’‘C’‘B’‘A’313233341716151413121110105152‘G’‘F’‘E’1F1E1D1C1B1A191818616263642322212020兩種字節(jié)次序舉例Ⅱ34第5章尋址方式尋址方式(Addressingmode):確定本條指令的數(shù)據(jù)地址及下一條要執(zhí)行的指令地址的方法。不同類型計算機的尋址方式亦有差別,但大多可以歸結為立即尋址、直接尋址、間接尋址、變址尋址以及相對尋址等幾種尋址方式,或者這幾種方式的組合與變形。35第5章尋址方式1.編址方式⑴字編址

編址單位=訪問單位每個編址單位所包含的信息量(二進制位數(shù))與讀或?qū)懸淮渭拇嫫鳌⒅鞔嫠@得的信息量是相同的。早期的大多數(shù)機器都采用這種編址方式。36

⑵字節(jié)編址字節(jié)編址為了適應非數(shù)值計算的需要。字節(jié)編址方式使編址單位與信息的基本單位(一個字節(jié))相一致,這是它的最大優(yōu)點。然而,如果主存的訪問單位也是一個字節(jié)的話,那么主存的頻帶就太窄了。編址單位<訪問單位

通常主存的訪問單位是編址單位的若干倍。⑶位編址有部分計算機系統(tǒng)采用位編址方式。第5章尋址方式372.指令中地址碼的位數(shù)指令格式中每個地址碼的位數(shù)是與主存容量和最小尋址單位(即編址單位)有關聯(lián)的。主存容量越大,所需的地址碼位數(shù)就越長。對于相同容量來說,如果以字節(jié)為最小尋址單位,地址碼的位數(shù)就需要長些;如果以字為最小尋址單位(假定字長為16位或更長),地址碼的位數(shù)可以減少。例如:設某機主存容量為220個字節(jié),機器字長32位。若最小尋址單位為字節(jié)(按字節(jié)編址),其地址碼應為20位;若最小尋址單位為字(按字編址),其地址碼只需18位。第5章尋址方式38第5章尋址方式指令尋址和數(shù)據(jù)尋址

尋址可以分為指令尋址和數(shù)據(jù)尋址。尋找下一條將要執(zhí)行的指令地址稱為指令尋址,尋找操作數(shù)的地址稱為數(shù)據(jù)尋址。

其中,指令尋址比較簡單,它又可以細分為順序?qū)ぶ泛吞S尋址。而數(shù)據(jù)尋址方式種類較多,其最終目的都是尋找所需要的操作數(shù)。

39

順序?qū)ぶ房赏ㄟ^程序計數(shù)器PC加1,自動形成下一條指令的地址;跳躍尋址則需要通過程序轉(zhuǎn)移類指令實現(xiàn)。

跳躍尋址的轉(zhuǎn)移地址形成方式有3種:直接(絕對)、相對和間接尋址,它與下面介紹的數(shù)據(jù)尋址方式中的直接、相對和間接尋址是相同的,只不過尋找到的不是操作數(shù)的有效地址而是轉(zhuǎn)移的有效地址而已。第5章尋址方式指令尋址方式40

數(shù)據(jù)尋址方式是根據(jù)指令中給出的地址碼字段尋找真實操作數(shù)地址的方式。

指令中的形式地址A───→有效地址EA

每種計算機的指令系統(tǒng)都有自己的一套數(shù)據(jù)尋址方式,不同計算機的尋址方式的名稱和含義并不統(tǒng)一,下面介紹大多數(shù)計算機常用的幾種基本尋址方式。數(shù)據(jù)尋址方式尋址方式第5章尋址方式411.直接尋址(DirectAddressing)2.寄存器尋址方式(RegisterAddressing)3.基址尋址(BasedAddressing)4.變址尋址(IndexedAddressing)5.間接尋址(IndirectAddressing)6.相對尋址(RelativeAddressing)7.立即尋址(ImmediateAddressing)8.堆棧尋址(StackAddressing)第5章尋址方式42第5章尋址方式指令的地址碼部分給出的就是操作數(shù)在存儲器中的地址。特點是簡單直觀, 便于硬件實現(xiàn),但 操作數(shù)地址是指令 的一部分,只能用 于訪問固定的存儲 器單元。例:MOVAX,[0110H]存儲器OP……A

操作數(shù)0110H一、直接尋址(Directaddressing)存儲器…

MA

操作數(shù)0110HOP有些指令中增加一個M字段,例如3位,可表示8種尋址方式43第5章尋址方式在指令的地址碼部分給出某一寄存器的名稱(地址),而所需的操作數(shù)就在這個寄存器中。這種方式數(shù)據(jù)傳送快,計算機中多用。例:MOVAX,BX 其中BX為源操作數(shù)地址,AX為目的操作數(shù)地址;操作的結果為將BX中的數(shù)據(jù)傳送(拷貝)到AX中。二、寄存器尋址(RegisterAddressing)44第5章尋址方式三、基址尋址(BasedAddressing)機器內(nèi)設置一個基址寄存器,操作數(shù)的地址由基址寄存器的內(nèi)容和指令的地址碼A相加得到。地址碼A通常稱為位移量(disp)或偏移量。45基址尋址過程第5章尋址方式三、基址尋址(BasedAddressing)46第5章尋址方式四、變址尋址(IndexedAddressing)

把CPU中變址寄存器的內(nèi)容和指令地址部分給出的地址之和作為操作數(shù)的地址來獲得操作數(shù)。這種方式多用于字串處理、矩陣運算和成批數(shù)據(jù)處理。

OP…………..RxAKRx:加法器存儲器操作數(shù)A+K:A:數(shù)組47基址尋址面向系統(tǒng),解決程序的存儲定位問題;一般用戶編程是用不到此方式.變址尋址面向用戶,用以訪問字串和數(shù)組。第5章尋址方式四、變址尋址(IndexedAddressing)三、基址尋址(BasedAddressing)區(qū)別48第5章尋址方式五、間接尋址(Indirectaddressing)優(yōu)點:改變寄存器Rn中的內(nèi)容就可訪問內(nèi)存的不同地址。修改十分方便。缺點:二次尋址速度慢。例:MOVAX,[BX]存儲器OP……Rn

A:操作數(shù)Rn:A1.寄存器間接尋址在指令的地址碼部分直接給出的既不是操作數(shù)也不是操作數(shù)的地址,而是操作數(shù)地址的地址。分為寄存器間接尋址和存儲器間接尋址.49寄存器號指令操作數(shù)寄存器堆寄存器尋址方式:寄存器號指令寄存器堆EA寄存器間接尋址方式:操作數(shù)存儲器第5章尋址方式寄存器尋址與寄存器間接尋址-區(qū)別50第5章尋址方式2.存儲器間接尋址51以轉(zhuǎn)移指令Jump為例,說明直接尋址和間接尋址方式下如何確定下一條要執(zhí)行的指令的地址.K:JumpA1……

A1×

××

×

……K:Jump(A1)……A1A2……

A2×

××

×

52A指令存儲器操作數(shù)直接尋址方式:操作數(shù)間接尋址方式:A指令EAEA:第5章尋址方式直接尋址與間接尋址-區(qū)別53間接尋址要比直接尋址靈活得多,它的主要優(yōu)點為:

①擴大了尋址范圍,可用指令的短地址訪問大的主存空間。

②可將主存單元作為程序的地址指針,用以指示操作數(shù)在主存中的位置。當操作數(shù)的地址需要改變時,不必修改指令,只需修改存放有效地址的那個主存單元(間接地址單元)的內(nèi)容就可以了。第5章尋址方式54六、相對尋址(Relativeaddressing)程序計數(shù)器PC的內(nèi)容與指令中地址碼部分給出的偏移量(Disp)之和作為操作數(shù)的地址或轉(zhuǎn)移地址,稱為相對尋址方式。

相對尋址有兩個特點:1)由于目的地址隨PC變化不固定,所以非常適用于浮動程序的裝配與運行。2)偏移量可正可負,通常用補碼表示。相對尋址方式主要應用于相對轉(zhuǎn)移指令。轉(zhuǎn)移地址為(PC)+disp第5章尋址方式55六、相對尋址(Relativeaddressing)第5章尋址方式56第5章尋址方式優(yōu)點:取指同時取得操作數(shù),提高指令的運行速度。缺點:操作數(shù)的長度受指令長度的影響,且不便修改。適合操作數(shù)固定的情況。例:MOVAX,1AH的結果:(AX)←

1AH七、立即尋址(Immediateaddressing)所需的操作數(shù)由指令的地址碼部分直接給出,稱為立即尋址(立即數(shù)尋址)。57八、堆棧尋址(Stackaddressing)第5章尋址方式堆棧是由若干個連續(xù)主存單元組成的先進后出(firstinlastout,即FILO)存儲區(qū),第一個放入堆棧的數(shù)據(jù)存放在棧底,最近放入的數(shù)據(jù)存放在棧頂。棧底是固定不變的,而棧頂是隨著數(shù)據(jù)的入棧和出棧在時刻變化。棧頂?shù)牡刂酚啥褩V羔楽P指明。一般計算機中,堆棧從高地址向低地址擴展,即棧底的地址總是大于或等于棧頂?shù)牡刂?,稱為上推堆棧;也有少數(shù)計算機相反,稱為下推堆棧。堆棧尋址主要用來暫存中斷和子程序調(diào)用時現(xiàn)場數(shù)據(jù)及返回地址。58八、堆棧尋址(Stackaddressing)第5章尋址方式存儲器堆棧段棧底SP棧頂堆棧的結構及操作:壓棧指令:PUSHOPR操作:(SP)-2→SPOPR→

(SP)彈棧指令:POPOPR操作:((SP))→OPR(SP)+2→SP59第5章尋址方式常用的尋址技術

A=指令中地址字段內(nèi)容;EA:有效地址方式算法優(yōu)點缺點直接EA=A簡單地址范圍有限寄存器EA=R無存儲器訪問地址范圍有限間接EA=(A)大的地址范圍多重存儲器訪問寄存器間接EA=(R)大的地址范圍額外地址訪問立即操作數(shù)=A無存儲器訪問操作數(shù)大小受限堆棧EA=棧頂無存儲器訪問應用有限偏移EA=A+(R)靈活復雜

偏移是指基址尋址,變址尋址,相對尋址60

例題:一種兩地址RS型指令的結構如下所示,其中I為間接尋址標志位,X為尋址模式字段,D位偏移量字段。通過I,X,D的組合,可構成下表所式的尋址方式。請寫出六種尋址方式的名稱。6位4位1位2位16位尋址方式表OP---通用寄存器IX偏移量D尋址方式IX有效地址E算法說明(1)

(2)(3)(4)(5)(6)000110000110110011

E=DE=(PC)±DE=(R2)±DE=(R3)

E=(D)

E=(R1)±DR2為變址寄存器R1為基址寄存器61解:1,直接尋址2,相對尋址3,變址尋址4,寄存器間接尋址5,間接尋址6,基址尋址62第5章指令類型指令系統(tǒng)的設計是計算機系統(tǒng)設計中的一個核心問題.不僅與計算機的硬件結構緊密相關,而且直接影響編寫操作系統(tǒng)和編譯程序的難易程度。6316位8086(8088)基本指令-133條80286增加保護方式指令80386開始擴展為32位指令系統(tǒng)80386新增許多位操作指令80486新增6條指令:3條特權指令,3條交換指令Pentium新增6條指令,如處理器識別指令CPUIDPentiumPro增加3條指令,如條件傳送指令CMOV.第5章指令類型64第5章指令類型-x86指令數(shù)的發(fā)展8086:133條→Pentium4:505條655.5指令的類型一個指令系統(tǒng)常有幾十、幾百條指令,但按功能可以劃分為如下幾大類:5.5.1指令的分類及功能1.算術與邏輯運算指令算術運算指令:一般指定點數(shù)運算如:加ADD、減SUB、乘MUL、除DIV運算。邏輯運算:一般包括邏輯與AND,邏輯或OR,邏輯非NOT,邏輯異或XOR等運算。按位進行運算。66邏輯左移、算術左移

CF0循環(huán)左移CF

CF帶進位循環(huán)左移CF算術右移

0CF邏輯右移CF循環(huán)右移CF帶進位循環(huán)右移5.5指令的類型2.移位操作指令675.5指令的類型循環(huán)移位:有不帶進位循環(huán)和帶進位循環(huán)。前者循環(huán)后的溢出位進標志位,后者與標志位一起循環(huán)。685.5指令的類型3.浮點運算指令高級語言中的實數(shù)(real)經(jīng)常是先轉(zhuǎn)換成浮點數(shù)后再做處理。某些機器沒有設置浮點運算指令而用子程序?qū)崿F(xiàn),速度較低。主要是用于科學計算的計算機設置浮點運算指令。例如:st(i):代表浮點寄存器FLDsrc:裝入實數(shù)到st(0)FADD:實數(shù)加st(0)<-st(0)+st(1)FSUB實數(shù)減,FMUL實數(shù)乘,FDIV實數(shù)除

695.5指令的類型4.十進制運算指令在輸入輸出數(shù)據(jù)頻繁的計算機系統(tǒng)中設置十進制運算指令能提高數(shù)據(jù)處理速度。采用BCD碼進行運算。705.5指令的類型5.字符串處理指令包括:字符串的傳送(MOVS)、比較(CMPS)、查找(SCANS)、字符串的轉(zhuǎn)換等操作指令。字符串處理指令是一種非數(shù)值處理指令。用于各種文字編輯與排版處理715.5指令的類型6.數(shù)據(jù)傳送指令用以實現(xiàn)寄存器與寄存器之間(MOVAX,BX)寄存器與內(nèi)存單元之間(MOV[0001H],AX)以及內(nèi)存單元相互之間的數(shù)據(jù)傳送。數(shù)據(jù)能夠被從源地址傳送到目的地址,而源地址中數(shù)據(jù)不變,相當于復制。727、轉(zhuǎn)移類指令

無條件轉(zhuǎn)移指令不受任何條件約束,直接把程序轉(zhuǎn)移至指令所規(guī)定的新地址開始執(zhí)行程序。一般為JUMP(JMP)

指令。

作用:根據(jù)邏輯判斷結果,改變程序的執(zhí)行順序。按轉(zhuǎn)移的性質(zhì)又可分為無條件轉(zhuǎn)移、條件轉(zhuǎn)移、過程調(diào)用與返回、陷阱等幾種。(1)無條件轉(zhuǎn)移5.5指令的類型735.5指令的類型條件轉(zhuǎn)移指令根據(jù)當前運算的結果進行邏輯判斷,符合判斷條件則轉(zhuǎn)移到指令表明的新地址處執(zhí)行程序,否則繼續(xù)按原順序執(zhí)行原來的程序。

(2)條件轉(zhuǎn)移

運算器中一般根據(jù)運算結果設置條件碼(標志位),條件轉(zhuǎn)移指令根據(jù)條件滿足與否決定是否轉(zhuǎn)移。74指令的助記符檢測的轉(zhuǎn)移條件功能描述JCCF=1JumpCarryJNCCF=0JumpNotCarryJOOF=1JumpOverflowJNOOF=0JumpNotOverflowJP/JPEPF=1JumpParityorJumpParityEvenJNP/JPOPF=0JumpNotParityorJumpParityOddJSSF=1JumpSign(negative)JNSSF=0JumpNoSign(positive)JCXZ(CX)=0JumpCXregisterZero根據(jù)運算標志位的條件轉(zhuǎn)移指令75指令的助記符檢測的轉(zhuǎn)移條件功能描述JE/JZZF=1JumpEqualorJumpZeroJNE/JNZZF=0JumpNotEqualorJumpNotZeroJAE/JNBCF=0JumpAboveorEqualorJumpNotBelowJB/JNAECF=1JumpBeloworJumpNotAboveorEqualJA/JNBECF=0andZF=0JumpAboveorJumpNotBeloworEqualJBE/JNACF=1orAF=1JumpBeloworEqualorJumpNotAbove無符號數(shù)的條件轉(zhuǎn)移指令A:above

B:below76指令的助記符檢測的轉(zhuǎn)移條件功能描述JE/JZZF=1JumpEqualorJumpZeroJNE/JNZZF=0JumpNotEqualorJumpNotZeroJGE/JNLSF=OFJumpGreaterorEqualorJumpNotLessJL/JNGESF≠OFJumpLessorJumpNotGreaterorEqualJG/JNLEZF=0andSF=OFJumpGreaterorJumpNotLessorEqualJLE/JNGZF=1orSF≠OFJumpLessorEqualorJumpNotGreater有符號數(shù)的條件轉(zhuǎn)移指令L:less

G:greater77(3)過程調(diào)用指令和返回指令調(diào)用指令實現(xiàn)從一個程序轉(zhuǎn)去執(zhí)行子程序的操作;返回指令則使CPU結束執(zhí)行子程序而返回執(zhí)行原程序。調(diào)用指令(CALL)和返回指令(RETURN)是一對配合使用的指令.調(diào)用指令與轉(zhuǎn)移指令的主要差別:前者需要保留返回地址.5.5指令的類型785.5指令的類型(4)陷阱(trap)與陷阱指令計算機運行過程中,有時可能出現(xiàn)故障,一旦出現(xiàn)故障計算機就發(fā)出陷阱信號,并暫停當前程序的執(zhí)行(中斷),轉(zhuǎn)入相應故障處理程序。一般計算機中,陷阱指令作為隱含指令(含義?)。但是:軟件中斷指令IntType可供用戶使用.

例如int21H-DOS功能調(diào)用MOVAH,4CHINT21H

;是返回DOS系統(tǒng)的

795.5指令的類型1)寄存器堆棧

用一組專門的寄存器構成寄存器堆棧,又稱為硬堆棧。這種堆棧的棧頂是固定的,寄存器組中各寄存器是相互連接的,它們之間具有對應位自動推移的功能,即可將一個寄存器的內(nèi)容推移到相鄰的另一個寄存器中去。8、堆棧及堆棧操作指令堆棧分為兩類:寄存器堆棧和存儲器堆棧.805.5指令的類型寄存器堆棧寄存器堆棧結構815.5指令的類型2)存儲器堆棧

從主存中劃出一段區(qū)域來作堆棧,這種堆棧又稱為軟堆棧,堆棧的大小可變,棧底固定,棧頂浮動,故需要一個專門的硬件寄存器作為堆棧棧頂指針SP,簡稱棧指針。棧指針所指定的主存單元,就是堆棧的棧頂。

存儲器堆棧結構高地址低地址堆棧區(qū)82由于堆棧具有先進后出的性質(zhì),因而在中斷、子程序調(diào)用過程中用于保存返回地址、狀態(tài)標志及現(xiàn)場信息。5.5指令的類型835.5指令的類型9、輸入、輸出(I/O)指令完成在中央處理器和外設之間進行數(shù)據(jù)交換。輸入指令使數(shù)據(jù)由外設傳送到處理機,輸出指令使數(shù)據(jù)由處理機傳送到外設.

輸入輸出指令的一般格式(In/Out):OPREG

AA:一般長度8~16位,可表示256~64K個設備寄存器845.5指令的類型10、特權指令

某些指令使用不當會破壞系統(tǒng)或其他用戶信息,這類指令只能用于操作系統(tǒng)或其他系統(tǒng)軟件,而不提供給用戶使用,這類指令稱為特權指令。

特權指令分配和管理系統(tǒng)資源,防止非法用戶對系統(tǒng)資源及其他用戶程序的修改、打印以及刪除等。8511、其它指令如:暫停、等待、空操作、以及開中斷、關中斷等。需要說明的是:計算機種類不同其指令系統(tǒng)包括數(shù)量與功能亦有所不同,用其編程時務必參照相應的指令系統(tǒng)手冊。(1)向量指令(2)多處理機指令(3)控制指令5.5指令的類型865.5.2雙字長運算(子程序舉例)5.5指令的類型雙字長加法運算

假設在寄存器R1,R2和R3,R4分別存放兩個雙字長操作數(shù),其中R1,R3為高位.假設機器設置有ADD(加法指令)和ADC(加進位的加法指令)875.5.2雙字長運算(子程序舉例)5.5指令的類型雙字長加法運算

假設機器僅設置ADD指令,而沒有ADC指令注:BCC:branchoncondition

885.5.2雙字長運算(子程序舉例)5.5指令的類型2.雙字長減法運算

假設在寄存器R1,R2和R3,R4分別存放兩個雙字長操作數(shù),其中R1,R3為高位.假設機器沒有帶借位減法指令.89第5章指令系統(tǒng)的兼容性1964年IBM360系列機以后,各個計算機公司生產(chǎn)的同一系列的計算機盡管其硬件實現(xiàn)方法可以不同,但指令系統(tǒng),數(shù)據(jù)格式,I/O系統(tǒng)保持相同,因而軟件完全兼容,系列機

(在此基礎上,產(chǎn)生了兼容機)當研制該系列計算機的新型號或高檔產(chǎn)品時,盡管指令系統(tǒng)可以有較大的擴充,但仍保留原來的全部指令,保持軟件向上兼容的特點例Intel的8086微處理器系列是完全向上兼容的.90第5章RISC和CISC-8086指令分類頻度8086指令分為6類,其中:

數(shù)據(jù)傳送,算術運算,轉(zhuǎn)移指令,這三類占90%,其余三類占不到10%

91第5章RISC和CISC“80-20規(guī)律”(20%與80%的規(guī)律

)→RISC

CISC中,各種指令的使用頻率相差很大.經(jīng)過大量的研究和分析,發(fā)現(xiàn)大約有20%的指令的使用頻率比較高,使用量約占整個程序的80%;而有80%左右的指令很少使用,他們的使用量約占整個程序的20%.

92第5章RISC和CISC復雜指令系統(tǒng)計算機(CISC)在指令系統(tǒng)中增加更多的指令和更復雜的指令,來提高操作系統(tǒng)的效率,縮小指令系統(tǒng)和高級語言的語義差別便于高級語言的編譯,兼容性使指令系統(tǒng)的指令只能擴充不能減去任意一條,這些計算機稱為復雜指令系統(tǒng)計算機CISC(complexinstructionsetcomputer)RISC的產(chǎn)生對CISC進行測試表明,各種指令的使用頻率相差懸殊.復雜的指令系統(tǒng)增加硬件實現(xiàn)的復雜性,增加研制時間和成本,很難實現(xiàn)流水線操作,降低了速度,指令系統(tǒng)復雜,使芯片變大印刷板變大,都使速度變慢.由此1975年首先由IBM公司提出“精簡指令系統(tǒng)計算機(RISC)”的概念。93第5章RISC和CISC

RISC的發(fā)展1983年以后,一些中小型公司開始推出RISC產(chǎn)品,由于高的性能價格比,市場占有率不斷提高從技術發(fā)展的角度講,CISC技術已很難再有突破性的進展RISC的特點RISC不是簡單地簡化指令系統(tǒng),而是通過簡化指令使計算機的結構更加簡單合理,從而提高運算速度。計算機執(zhí)行程序所需要的時間P=ICPIT

其中I是指令數(shù),CPI是執(zhí)行每條指令所需的平均周期數(shù),T是機器周期的時間.RISC的I比CISC多20%~40%,CPI值比CISC小得多,T值也小得多類型ICPITCISC12~1533~5nsRISC1.3~1.41.1~1.410~1ns94第5章RISC和CISC--RISC的特點⑴優(yōu)先選取使用頻率最高的簡單指令,以及很有用但不復雜的指令⑵指令長度固定,指令格式種類少,尋址種類少⑶只有取數(shù)/存數(shù)指令訪問存儲器,其余指令的操作都在寄存器之間進行⑷通用寄存器數(shù)量相當多,算術邏輯指令操作數(shù)都在寄存器中⑸大部分指令在一個或小于一個機器周期內(nèi)完成⑹以硬布線控制邏輯為主,不用或少用微程序控制邏輯⑺一般用高級語言編程,特別重視編譯優(yōu)化工作95第5章指令系統(tǒng)舉例

SPARC(ScalableProcessor

ARChitecture)指令系統(tǒng):RISC類型注:首次發(fā)布于1987年(SUN和TI公司合作開發(fā)了RISC微處理器—SPARC),與傳統(tǒng)的處理器體系結構不同,它是開放標準的、可通過SPARCInternationalInc.的許可免費獲取的。任何獲得許可的公司可制造和出售符合SPARC標準的處理器。Pentium指令系統(tǒng):CISC類型CISC的廠商:Intel,AMDRISC的廠商:IBM,SUN,Apple,Motorola96第5章指令系統(tǒng)舉例SPARC指令系統(tǒng)指令類型算術運算/邏輯運算/移位指令31條LOAD/STORE指令22條控制轉(zhuǎn)移指令5條讀/寫專用寄存器指令8條浮點運算指令 格式1的OP為01協(xié)處理器指令 格式2的OP為00指令格式

格式3的OP為1×格式1:格式2:格式3:OPDisp30(位移量,30位)OPrdOP2Imm22(立即數(shù))OPaCondOP2Disp22(位移量)OPrdOP3rs10(無關)rs2OPrdOP3rs11Simm13OPrdOP3rs1OPfrs297第5章指令系統(tǒng)舉例

SPARC指令系統(tǒng)在SPARC中,有一些指令沒有設置,但很容易用一條其他指令來替代,這是因約定R0=0.指令功能替代指令實現(xiàn)方法MOVE寄存器間傳送數(shù)據(jù)ADD(加法)(Rs)+(R0)→RdINC寄存器內(nèi)容+1ADD(加法)(Rs)+1→Rd(立即數(shù)imm13=1,作為操作數(shù))DEC寄存器內(nèi)容-1SUB(減法)(Rs)-1→Rd(立即數(shù)imm13=-1,作為操作數(shù))NEG取負數(shù)SUB(減法)R0-Rs→RdNOT取反碼XOR(異或)(Rs)XOR11…1→Rd(立即數(shù)imm13=-1,作為操作數(shù))CLEAR清除寄存器ADD(加法)(R0)+(R0)→RdCMP,TEST比較測試SUB(減法)(Rs1)-(Rs2)→R0(將R0作為Rd,并置條件碼)98第5章指令系統(tǒng)舉例Pentium指令系統(tǒng)圖5.11程序員能見到的寄存器99第5章指令系統(tǒng)舉例Pentium尋址方式100第5章指令系統(tǒng)舉例Pentium指令格式圖5.12Pentium的指令格式101第5章指令系統(tǒng)舉例Pentium尋址方式舉例MOVEAX,[EBX][ECX4+6]

基變址放大因子位移量

圖5.13實模式下形成32位地址102第5章指令系統(tǒng)舉例

IBM大型機指令系統(tǒng)圖5.14IBM360/370指令格式103第5章指令系統(tǒng)舉例PDP-11指令格式PDP11是16位小型機,它有兩組通用寄存器(R0~R5),在任一時刻只有一組工作;三個硬件堆棧指示器(R6);一個程序計數(shù)器PC(R7)。根據(jù)兼容性質(zhì),VAX11應包括PDP11的全部指令與尋址方式,即PDP11上的程序不作任何修改即可在VAX11上運行。PDP11有一個功能強大和靈活的指令系統(tǒng),有13

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論