計算機體系結(jié)構(gòu)第二章指令系統(tǒng)_第1頁
計算機體系結(jié)構(gòu)第二章指令系統(tǒng)_第2頁
計算機體系結(jié)構(gòu)第二章指令系統(tǒng)_第3頁
計算機體系結(jié)構(gòu)第二章指令系統(tǒng)_第4頁
計算機體系結(jié)構(gòu)第二章指令系統(tǒng)_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

V:人

yuan

計算機與

W2012-9-23

jfuNormalUniversity

院圖同ujiuiij.ni|J

第2章指令系統(tǒng)

2.1數(shù)據(jù)表示

2.2尋址技術(shù)

2.3指令格式的優(yōu)化設(shè)計

2.4指令系統(tǒng)的功能設(shè)計

曲阜師范大學計算機學院

SchoolofComputerScience,Qufu^oi-nuilUniversity2012-9-232

□指令系統(tǒng)是軟件與硬件之間的一個主要分界由

也是他們之間互相溝通的一座橋梁

?凡是在為“

指令系統(tǒng)發(fā)展相當緩慢,需

?硬件I

要用軟件來填補的東西也就

?軟件室一越來越多應

用軟曲j慣的使用

方式之I,靛篇

□指令系統(tǒng)設(shè)計必容瞰件設(shè)計人員和硬件設(shè)計人

員共同來完成

2012-9-233

□本章主要內(nèi)容有三大方面:

?數(shù)據(jù)表示

?尋址技術(shù)

?指令系統(tǒng)設(shè)計

□指令系統(tǒng)設(shè)計:

?指令的格式設(shè)計

?指令系統(tǒng)的功能設(shè)計

?指令系統(tǒng)的性能評價

曲阜師范大學計算機學E

SchoolofComputerScience,QuiuNonna1Jjniversity2012-9-234

2.1數(shù)據(jù)表示

2.1.1數(shù)據(jù)表示與數(shù)據(jù)類型

2.1.2浮點數(shù)的表示方法

2.1.3浮點數(shù)格式設(shè)計

2.1.4浮點數(shù)的舍入處理

2.1.5警戒位的設(shè)置方法

2.1.6自定義數(shù)據(jù)表示

曲阜師范大學計算機學院

SchoolofComputerScience,QufuNormalUniversity2012-9-235

2.1.1數(shù)據(jù)表示與數(shù)據(jù)類型

□數(shù)據(jù)表示的定義:

?數(shù)據(jù)表示是指計算機硬件能夠直接識別,可以被指令

系統(tǒng)直接調(diào)用的那些數(shù)據(jù)類型

■例如:定點、邏輯、浮點、十進制、字符、字符串、

堆棧和向量等

□數(shù)據(jù)類型:文件、圖、表、樹、陣列、隊列、鏈

表、棧、向量、串、實數(shù)、整數(shù)、布爾數(shù)、字符

□確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實現(xiàn),哪些用數(shù)據(jù)

結(jié)構(gòu)實現(xiàn),是軟硬件主要分界面之一,是軟件與

-5更件的取舍問題

SchoolofComputerScience,一.QufuJjprmalUniversity2012-9-236

□確定數(shù)據(jù)表示的原則

?一是縮短程序的運行時間

?二是減少CPU與主存儲器之間的通信量

?三是這種數(shù)據(jù)表示的通用性和利用率

□數(shù)據(jù)表示在不斷發(fā)展

?例如:矩陣、樹、圖、表及自定義數(shù)據(jù)表示等已經(jīng)開

始用于數(shù)據(jù)表示中

2012-9-237

也AL二

□例2.1如果用定點數(shù)據(jù)表示實現(xiàn)浮點運算,處理機

的運算速度要降低兩個數(shù)量級

□分析:

?用定點運算指令實現(xiàn)32位浮點運算時,平均要執(zhí)行100條

以上的指令

?CPU與主存儲器之間的通信量也將增加100多倍

?因此,降低2個數(shù)量級

例2.2:計算C=A+B,其中,A、B、C均為

200X200的矩陣,分析采用向量數(shù)據(jù)表示的作

解:如果在沒有向量數(shù)據(jù)表示的計算機上實現(xiàn),一般

需要6條指令,其中有4條指令要循環(huán)4萬次。因此,

CPU與主存儲器之間的通信量:

取指令:2+4X40,000條,

讀或?qū)憯?shù)據(jù):3X40,000個,

共要訪問主存儲器:7X40,000次以上

如果有向量數(shù)據(jù)表示,只需要一條指令。

問主存(取指令)次數(shù)4X40,000次

曲阜師范大學計算機學院-----------------------------------------

SchoolofComputerScience,OufijLNormalJJniversity2012-9-239

口發(fā)展趨勢:用軟件和硬件結(jié)合的方法實現(xiàn)新的數(shù)

據(jù)表示

□例

?用字節(jié)編址和字節(jié)運算支持字符串數(shù)據(jù)表示

?用變址尋址方式來支持向量數(shù)據(jù)表示

□對于數(shù)據(jù)類型,系統(tǒng)結(jié)構(gòu)設(shè)計者的任務(wù):

?確定哪些數(shù)據(jù)類型全部用硬件實現(xiàn),即數(shù)據(jù)表示

?哪些數(shù)據(jù)類型用軟件實現(xiàn),即數(shù)據(jù)結(jié)構(gòu)

?哪些數(shù)據(jù)類型由硬件和軟件共同實現(xiàn),并確定軟件與硬

件的適當比例關(guān)系

曲阜師范大學計算機學E

SchoolofComputerScience,QuiuNonna1Jjniversity2012-9-2310

2.1.2浮點數(shù)的表示方法

1.浮點數(shù)的表示方式

N=mx了

□兩個數(shù)值:,m

?尾數(shù)m:尾聲的值,還包括數(shù)制(小數(shù)或整數(shù))和碼制(原

碼或補碼)

?階碼e:階碼的值,一般采用移碼或補碼,是整數(shù)

□兩個基值:

?尾數(shù)基值7:2、4、8、16和10進制等

?階碼基值%:通常為2進制

□兩個字長:

?尾數(shù)長度P:尾數(shù)部分按基值計算的長度

?階碼長度q:階碼部分的二進制位數(shù)

SchoolofComputerScience,QU&LNormalJJniversity2012-9-2311

例22已知一個32位浮點數(shù)C1C00000,無法知道

它表示的是什么數(shù)值!給出6個參數(shù):尾數(shù)用純小數(shù),

原碼表示,「m=16,p=6;階碼用整數(shù),移碼表示,

re=2,q=6;浮點數(shù)格式如下圖。

解:11000001110000000000000000000000

-12/16x161=-12.0

?浮點數(shù)的存儲式

1位1位°位夕位

mfefem

尾數(shù)的符號位,ef為階碼的符號位,e為階碼的值,m為尾數(shù)的值。

曲阜師范大學計算機學院

SchoolofComputerScience,Q^fuNormalUniversity2012-9-2312

2.浮點數(shù)的表數(shù)范圍

□尾數(shù)為原碼、小數(shù),階碼用移碼、整數(shù)時,規(guī)

格化浮點數(shù)N的表數(shù)范圍:

re

rm~^rm~夕

□尾數(shù)為補碼,負數(shù)區(qū)間的表數(shù)范圍為:

411q

r

_「<N<-(.+"A/T,

rmfmrrmrrm

□浮點數(shù)在數(shù)軸上的分布情況

例2.3:尾數(shù)用原碼、小數(shù)表示,階碼用移只

整數(shù)表示,p=23,q=7,rm=re=2,求

規(guī)格化浮點數(shù)N的表數(shù)范圍(非規(guī)格化?)。

解:規(guī)格化浮點數(shù)N的表數(shù)范圍是:

1-272327-1

一2<<(1-2).2

2

即:

-129/入T1-23、127

2<TV<(1-2)-2

曲阜師范大學計算機學院

SchoolofComputerScience,QufuI^^T^^Jniversity2012-9-2314

1位1位

15

0111111111111111

?規(guī)格化最小正數(shù):

00000000010000000000000000000000

?規(guī)格化最大負數(shù):

10000000010000000000000000000000

?規(guī)格化最小負數(shù):

^^1111111111111111111111111111111

■曲阜師范大學計算機學院

SchoolofComputerScience,Qufu^ormalUniversity2012-9-2315

□階碼用移碼表示

浮點o的范圍:|%卜尸〃「

對于上例:N<9-129

□移碼與補碼的關(guān)系

十進制:-128-10+127

補碼:10000000111111110000000001111111

移碼:00000000011111111000000011111111

曲阜師范大學計算.

SchoolofComputerScience,Quf^^^nal^University2012-9-2316

例2.4:尾數(shù)用補碼、小數(shù)表示,階碼用移

整數(shù)表示,p=23,q=7,rm=re=2,求

規(guī)格化浮點數(shù)N的表數(shù)范圍。

解:規(guī)格化浮點數(shù)N在正數(shù)區(qū)的表數(shù)范圍:

172327-1

—2-2Q<2V<(1-2).0

2

N在負數(shù)區(qū)的表數(shù)范圍:

127,入丁,,1,-23x-128

2(一+2)-2

2

曲討師范大學計算.

SchoolofComputerScience,Qufu^^mm^Jniversity2012-9-2317

1位1位7位23位

mfefem

注:mf為尾數(shù)的符號位,ef為階碼的符號位,e為階碼的值,口為尾數(shù)的值。

?規(guī)格化最大正數(shù):相同

01111111111111111111111111111111

?規(guī)格化最小正數(shù):相同

00000000010000000000000000000000

?規(guī)格化最大負數(shù):尾數(shù)-0.1000...00001

10000000001111111111111111111111

?規(guī)格化最小負數(shù):尾數(shù)-1.0

^^^11111111100000000000000000000000

■曲阜師范大學計算機學院

SchoolofComputerScience,Qufi^orntalUniversity2012-9-2318

例2.5:尾數(shù)用補碼、小數(shù)表示,階碼用移陋

整數(shù)表示,p=6,q=6,rm=16,又=2,

求規(guī)格化浮點數(shù)N表數(shù)范圍是:

解:規(guī)格化浮點數(shù)N在正數(shù)區(qū)間的表數(shù)范圍:

16-65<<(1-166).16

在負數(shù)區(qū)間的表數(shù)范圍:

63j-?-r/1-6、-64

—16<N<—(+16),16

16

1位1位6位6位

mfefem

注:mf為尾數(shù)的符號位,ef為階碼的符號位,e為階碼的值,口為尾數(shù)的值。

?規(guī)格化最大正數(shù):相同

01111111111111111111111111111111

?規(guī)格化最小正數(shù):相同

00000000000100000000000000000000

?規(guī)格化最大負數(shù):尾數(shù)?0.000100...00001

10000000111011111111111111111111

?規(guī)格化最小負數(shù):尾數(shù)-L0

11111111000000000000000000000000

■曲阜師范大學計算機學院

SchoolofComputerScience,OufuJ^prmalUniversity2012-9-2320

3.IEEE754浮點數(shù)國際標準

口32位單精度浮點數(shù)格式如下:

符號S,1位階碼e,8位尾數(shù)數(shù)值

?階碼用移碼表示,即階碼的0?255分別表示階

碼的真值為“28?127

?尾數(shù)用原碼、小數(shù),1位符號位、23位小數(shù)共

24位表示

?尾數(shù)和階碼的基值都是2

□64位雙精度浮點數(shù),階碼用11位移碼表示

曲阜師范大學計算機學院、

SchoolofComputerScience,

4.浮點數(shù)的表數(shù)精度(誤差)

□產(chǎn)生誤差的根本原因是浮點數(shù)的不連續(xù)性

?這是因為浮點數(shù)字長是有限的

■比如32位字長,能表示浮點數(shù)最多是232個

口一種浮點數(shù)表示方式能表示的浮點數(shù)個數(shù)只是實數(shù)中

很少的一部分,即它的一個子集,稱之為浮點數(shù)集

□絕對表數(shù)誤差

M-N

□相對表數(shù)誤差:5=------------

N

?N是浮點數(shù)集內(nèi)任一實數(shù)

一??!是與N最接近的浮點數(shù)

曲阜師范大學計算機到

SchoolofComputerScience,QufuUniversity2012-9-2322

口誤差產(chǎn)生的直接原因有兩個:

(1)兩個浮點數(shù)都在浮點集內(nèi),而運算結(jié)果卻可能不在這個

浮點集內(nèi)

(2)數(shù)據(jù)從十進制轉(zhuǎn)化為2、4、8、16進制,產(chǎn)生誤差

曲阜師范大學計算.

SchoolofComputerScience,Qufu^^nnaHJniversity2012-9-2323

□例:如果一種浮點數(shù)表示方式的夕=1,0=2,%=2,

r=2,尾數(shù)用原碼、純小數(shù)表示,階碼用移氈

、整數(shù)表示。這種浮點數(shù)表示方式所能表示的

浮點數(shù)值是多少?若兩個浮點數(shù)即=1/2/廣3/4,

則怎么表示?表數(shù)誤差是多少?

所能表示的全部浮點數(shù)如圖2.3和表2.4

2K7

陽2.」一"小由口在收■上第分苗

,???£)

I(l.l>0(1.0)-2(0.0)

,Q75(0.11)3/41/?3/16

asmio>1/21/41/8

,7-as<Lio)-1/3

,?7-Q.75n.ii)-1/4-3/8-3/16

R???霞*1.1|小依一本?勵種用?.,111/平.■號中的■字?二進??*余為十限制?

櫛*■力用/效i5-1/2,仇-3/4部在所定義的浮點集內(nèi)?而它們相加的結(jié)果'

若兩個浮點數(shù)為=1/2也=3/4,則為+?=5/4,不在浮點

數(shù)集內(nèi),因此必須用該浮點數(shù)集內(nèi)的最靠近5/4的浮

點數(shù)1或3/2來代替,從而產(chǎn)生絕對表數(shù)誤差:

5=|〃—N|=|5/4—3/2|=1/4

或5=|"—N|=|5/4—1|=1/4

或相對表數(shù)誤差:

口規(guī)格化浮點數(shù)的精度為:b"p)=

?當。=2時,有r(2“)=L2Ti=2一。

2

曲討師范大學計算.

SchoolofComputerScience,Qufu^^mm^Jniversity2012-9-2327

5.浮點數(shù)的表數(shù)效率

口規(guī)格化浮點數(shù)

?定義:尾數(shù)最高位為非零的浮點數(shù)

?特例:機器零,其尾數(shù)和階碼都是0,但是規(guī)格化浮點數(shù)

□補充:規(guī)格化浮點數(shù)的精度是最高的

?當尾數(shù)用小數(shù)表示時,其絕對值在1/%到1之間

□浮點數(shù)運算過程中,當出現(xiàn)非規(guī)格化浮點數(shù)時,必須

通過左規(guī)格化或右規(guī)格化操作來把它變換成規(guī)格化浮

點數(shù)

?當尾數(shù)小于1/rm時,要左移,同時階碼減1(左規(guī)格化)

■消毆大于1時,要右移,同時階碼加1(右規(guī)格化)

曲阜師范大學計算機學院----------------------------------------

SchoolofComputerScience,QufuJjormalUniversity2012-9-2328

□由于浮點數(shù)表示方式中可能出現(xiàn)非規(guī)格化浮點,

因此,浮點數(shù)是一種冗余數(shù)制(RedundatNumber

System)

□浮點數(shù)的表數(shù)效率定義為:

可表示的規(guī)格化浮點數(shù)個數(shù)2(〃-1)//一】x2r/+l

77==

全部浮點數(shù)個數(shù)2n/x2r/

簡化表示:="二1

ym

當尾數(shù)基值為2時,浮點數(shù)的表數(shù)效率為:

?浮點數(shù)的表數(shù)效率隨7增大

當尾數(shù)基值7=16時,浮點數(shù)的表數(shù)效率為:

16—1

7/(16)=--------------------=942^0

16

尾數(shù)基值%=16與%=2相比,浮點數(shù)的表數(shù)效率提

高了:

77(16)

T=———-=1.875倍

7(2)

曲阜師范大學計算機學院

SchoolofComputerScience,QufuNormalUniversity2012-9-2330

2.2尋址技術(shù)

?尋找數(shù)據(jù)及其它信息的地址的技術(shù)稱為尋址胸

?尋址技術(shù)研究的主要內(nèi)容:

2.2.1編址方式

2.2.2尋址方式

2.2.3定位方式

?尋址技術(shù)研究的主要對象:寄存器,主存儲器,

堆棧,輸入輸出設(shè)備等

重點:尋址方式的選擇

2.2.1編址方式

?對各種存儲設(shè)備進行編碼的方法。

?主要內(nèi)容:編址單位、零地址空間個數(shù)、并行存儲

器的編址、輸入輸出設(shè)備的編址

1.編址單位

-常用的編址單位:字編址、字節(jié)編址、位編址、塊

編址等

?編址單位與訪問字長

一般:字節(jié)編址,字訪問

部分機器:位編址,字訪問

.輔助存儲器:塊編址,位訪問

?字節(jié)編址字訪問的優(yōu)點:

有利于符號處理

?字節(jié)編址,數(shù)據(jù)在主存中的存放方法:

字節(jié)半字雙_

一字單字半.

一字單字字節(jié)單一

-字

---------字長:64位,8個字節(jié)------------------->

(a)可從任意位置開始訪問

*缺點:

?存儲字有可能跨越兩個存儲單元,降低存儲器工作速度

A存儲器讀寫控制復雜

(b)寫一個字節(jié)到存儲器

…xxOO字節(jié)浪費

???xx08半字浪費

…xx10單字浪戰(zhàn)

…xx18雙字

___空46.A4布

(b)從一個存儲字的起始位置開始訪問

?優(yōu)缺點:

A與第一種相反

曲阜師范大學計算機學院

SchoolofComputerScience,QufuNormalUniversity2012-9-2335

,,xx00字節(jié)浪費

,?xx08雙字

,?xx10半字浪費

,,xx18雙字

,?xx20單字浪費

,,xx28雙字

,,xx30字節(jié)浪費單字

,,xx38半字浪費單字

,,xx40字節(jié)浪費半字

字長:64位,8個字節(jié)

(c)從地址的整倍數(shù)位置開始訪問

(4)大端(BigEndin)與小端(LittleEndian)問)

07815162324313239404748555663

字節(jié)000001010011100101110111

(a)從左邊開始編址

63565548474039323124231615870

字節(jié)111110101100011010001000

(b)從右邊開始編址

一個存儲字的兩種編址方式

12345678computer

310310310

78563412Pm0Cretu

(a)(b)

一種數(shù)據(jù)存儲方式

?字節(jié)編址字訪問的優(yōu)點:

有利于符號處理

?字節(jié)編址字訪問的問題:

(1)地址信息浪費

對于64位機器,訪問雙字時,浪費3位地

(2)存儲器空間浪費

(3)讀寫邏輯復雜

(4)大端(BigEndin)與小端(LittleEndian)問

2.零地址空間個數(shù)

?三個零地址空間:通用寄存器、主存儲器、

輸入輸出設(shè)備獨立編址

?兩個零地址空間:主存儲器與輸入輸出設(shè)備

統(tǒng)一編址

?一個零地址空間:最低端是通用寄存器,最

高端是輸入輸出設(shè)備,中間為主存儲器

?隱含編址方式:堆棧、Cache等

3.輸入輸出設(shè)備的編址

?一臺設(shè)備一個地址:通過指令來區(qū)分地址

?一臺設(shè)備兩個地址:一個地址是數(shù)據(jù)寄存器、另一

個地址是狀態(tài)或控制寄存器

□多個編址寄存器共用同一個地址的方法:

>依靠地址內(nèi)部來區(qū)分,適用于被編址的寄存器的長度比

較短

>“下跟法”隱含編址方式,必須按順序讀寫寄存器。

?一臺設(shè)備多個地址:增加編程的困難

4.并行存儲器的編址技術(shù)

□高位交叉編址:主要用來擴大存儲器容量

>地址碼的低位部分是各個存儲體的體內(nèi)地址,高位部分

經(jīng)過譯碼器譯碼后,用來區(qū)分存儲體的體號

口低位交叉編址:主要是提高存儲器速度

>與高位交叉變址方法相反,其低位部分是組成主存儲器

的各個存儲體的體號,高位部分是各個存儲體的體內(nèi)地

?一個存儲周期內(nèi),n個存儲體分時啟動,采用流水線方式

工作

2.2.2尋址方式

尋找操作數(shù)及數(shù)據(jù)存放地址的方法

1.尋址方式的設(shè)計思想

?立即數(shù)尋址方式

A直接在指令中給出操作數(shù)

?優(yōu)點:不需要數(shù)據(jù)存儲單元,速度快

?缺點:用于數(shù)據(jù)比較短,且為源操作數(shù)的場合

面向寄存器的尋址方式

>指令執(zhí)行過程中所需要的操作數(shù)來源于寄存器,

運算結(jié)果也寫回寄存器

A指令中只要指定通用寄存器的編號,無須指定主

存地址

A指令格式:

OPCR

OPCR,R

OPCR,R,R

OPCR,M

?面向主存儲器的尋址方式:

OPCM

OPCM,M

OPCM,M,M

A包括直接尋址、間接尋址、變址尋址

A直接尋址:在指令中直接給出參加運算的操作數(shù)

及運算結(jié)果所存放的主存地址,即在指令中直接給

出有效地址

?間接尋址:在指令中給出的是操作數(shù)地址的地址,

必須經(jīng)過兩次或兩次以上的訪問主存操作才能得到

操作數(shù)

A變址尋址:需要設(shè)置一個或多個變址寄存器,

長度由主存地址空間決定,主要作用是用來存放數(shù)

組的基地址

,在指令中給出變址寄存器的編號和地址的偏移

,當指令執(zhí)行時,用一個硬件加法器,把變址寄

存器中給出的基地址與指令中給出的地址偏移量

作算術(shù)加法,相加的結(jié)果就是有效地址

?面向堆棧的尋址方式:

OPC;運算型指令

OPCM;數(shù)據(jù)傳送型指令

A指令中不給出操作數(shù)的地址

?參加運算的操作數(shù)從堆棧頂端彈出,如果需要兩

個或多個操作數(shù),則依次從堆棧頂端彈出,運算結(jié)

果壓入堆棧頂端

2.間接尋址方式與變址尋址方式的比較

?目的相同:都是為了解決操作數(shù)地址的修改

-原則上,一種處理機中只需設(shè)置間址尋址與變址尋

址中的一種即可,有些處理機兩種方式都設(shè)置

?如何選取間址尋址方式與變址尋址方式?

例2.15:一個由N個元素組成的數(shù)組,已經(jīng)存放在起

始地址為AS的主存連續(xù)單元中,現(xiàn)要把它搬到起始

地址為AD的主存連續(xù)單元中。不必考慮可能出現(xiàn)的

存儲單元重疊問題。為了編程簡單,采用一般的兩

一地址指令編寫程序。

?用間接尋址方式編寫程序如下:

START:MOVEASR,ASI保存源起始地址

MOVEADR,ADI保存目標起始地址

MOVENUM,CNT保存數(shù)據(jù)的個數(shù)

LOOP:MOVE@ASI,@ADI傳送一個數(shù)據(jù)

INCASI源數(shù)組的地址增量

INCADI目標數(shù)組地址增量

DECCNT個數(shù)減1

BGTLOOP測試數(shù)據(jù)傳送完?

停機

ASR:AS;源數(shù)組的起始地址

ADR:AD;目標數(shù)組的起始地址

NUM:N;需要傳送的數(shù)據(jù)個數(shù)

ASI:0;當前正在傳送的源數(shù)組地址

ADI:0;當前正在傳送的目標數(shù)組地址

CNT:0;剩余數(shù)據(jù)的個數(shù)

?用變址尋址方式編寫程序如下:

START:MOVEAS,;把源數(shù)組起始地址送

;變址寄存器

MOVENUM,CNT;保存數(shù)據(jù)個數(shù)

LOOP:MOVE(X),AD-AS(X);傳送一個數(shù)據(jù)

INCX;增量變址寄存器

DECCNT;個數(shù)減1

BGTLOOP;測試數(shù)據(jù)傳送完成

HALT;停機

;傳送的數(shù)據(jù)個數(shù)

;剩余數(shù)據(jù)的個數(shù)

?主要優(yōu)缺點比較:

(1)采用變址尋址方式編寫的程序簡單、易讀

(2)兩種尋址方式的主要差別是:

A間址尋址:間接地址在主存中,沒有偏移量

>變址尋址:基地址在變址寄存器中,有偏移量

(3)實現(xiàn)的難易程度:間址尋址方式容易實現(xiàn)

(4)指令的執(zhí)行速度:間址尋址方式慢

A如MOVE@ASI,@ADI需5次訪問主存

>MOVE(X),AD-AS(X)需3次訪問主存

(5)對數(shù)組運算的支持:變址尋址方式比較好

帶有偏移量,有效表示向量、矩陣等

3.寄存器尋址

?優(yōu)點:指令字長短,指令執(zhí)行速度快,支持向量幫

矩陣等運算(當通用寄存器數(shù)量多時,可以把向量或矩陣

的一部分放到寄存器中)

?缺點:不利于優(yōu)化編譯,現(xiàn)場切換困難,硬件復雜

4.堆棧尋址方式

?優(yōu)點:

>支持高級語言,有利于編譯程序

,可翻譯成逆波蘭式,直接形成程序

>節(jié)省存儲空間

,不需要地址碼

A支持程序的嵌套和遞歸調(diào)用,支持中斷處理

/調(diào)用時需保存的返回地址、處理機狀態(tài)、程序現(xiàn)場等壓入堆棧

?缺點:運算速度比較低,主要由于堆棧與處理機之間信息傳

送量大造成的

?解決辦法:可以棧頂部分設(shè)計成一個高速的寄存器堆.

2.2.3定位方式

程序的主存物理地址在什么時間確定?采用什

么方式來實現(xiàn)?

程序需要定位的主要原因:

>程序的獨立性

>程序的模塊化設(shè)計

>在程序運行過程中,數(shù)據(jù)結(jié)構(gòu)大小是變化的

>有些程序本身很大,大于分配給它的主存物理

?主要的定位方式

A直接定位方式:在程序裝入主存前,程序中的指令

和數(shù)據(jù)的主存物理地址就已經(jīng)確定了。

A靜態(tài)定位:在程序裝入主存儲器的過程中隨即進行

地址變換,確定指令和數(shù)據(jù)的主存物理地址的稱為

靜態(tài)定位方式。

?動態(tài)定位:在程序執(zhí)行過程中,當訪問到相應的指

令或數(shù)據(jù)時才進行地址變換,確定指令和數(shù)據(jù)的主

存物理地址的稱為動態(tài)定位方式。

2.3指令格式的優(yōu)化設(shè)計

主要目標:節(jié)省程序的存儲空間,指令格式盡量規(guī)

整,便于譯碼

2.3,1指令的組成

232操作碼的優(yōu)化設(shè)計

2.3,3地址碼的優(yōu)化設(shè)計

234指令格式設(shè)計舉例

2.3.1指令的組成

一般的指令主要由兩部分組成:

操作碼和地址碼

操作碼(OPC)地址碼(A)

地址碼通常包括三部分內(nèi)容:

操作數(shù)的地址:地址碼、立即數(shù)、寄存器、變址寄存器

地址的附加信息:偏移量、塊長度、跳距

尋址方式:直接尋址、間接尋址、立即數(shù)尋址、變址尋址、

i相對尋址、寄存器尋址

2.3.1指令的組成

地址碼通常包括三部分內(nèi)容:

操作數(shù)的地址:

>對于間接尋址方式,給出間接地址;

>對于立即數(shù)尋址方式,在地址碼部分直接給出操作數(shù);

>對于寄存器尋址方式,給出通用寄存器編號;

>對于變址尋址方式,給出變址寄存器編號

地址的附加信息:偏移量、塊長度、跳距

尋址方式:直接尋址、間接尋址、立即數(shù)尋址、變址尋址、

相對尋址、寄存器尋址

?操作碼主要包括兩部分內(nèi)容:

A操作種類:力口、減、乘、除、數(shù)據(jù)傳送、移位、轉(zhuǎn)

移、輸入輸出、程序控制、處理機控制等

A操作數(shù)描述:

數(shù)據(jù)的類型:定點數(shù)、浮點數(shù)、復數(shù)、字符、字符

串、邏輯數(shù)、向量

進位制:2進制、10進制、16進制

數(shù)據(jù)字長:字、半字、雙字、字節(jié)

2.3.2操作碼的優(yōu)化表示

操作碼的三種編碼方法:

固定長度、Huffman編碼、擴展編碼

優(yōu)化操作碼編碼的目的:節(jié)省程序存儲空間

例如:Burroughs公司的B-1700機

整個操作系統(tǒng)所用

操作碼編碼方式改進的百分比

指令的操作碼總位數(shù)

8位固定長編碼301,2480

4-6-10擴展編碼184,96639%

Huffman編碼172,34643%

1.固定長操作碼

?操作碼用固定位(如8位)表示

>舊M公司許多大中型計算機;許多RISC計算機

,主要優(yōu)點:

規(guī)整

譯碼簡單

?主要缺點:

浪費信息量(操作碼的總長位數(shù)增加)

2.Huffman編碼法

1952年由Huffman首先提出

最優(yōu)Huffman編碼法表示的操作碼的最短平均長度

可通過如下公式計算:

H=-£P(guān)iXlog2Pi

pj表示第j種操作碼在程序中出現(xiàn)的概率

固定長編碼相對于Huffman編碼的信息冗余量:

n

PiXlogPi

R=1-—------------------------

n

log2

必須知道每種操作碼在程序中出現(xiàn)的概率

例2.16:假設(shè)一臺模型計算機共有7種不同的操作礫

如果采用固定長操作碼需要3位。已知各種操作碼在

程序中出現(xiàn)的概率如下表,計算采用Huffman編碼

法的操作碼平均長度,并計算固定長操作碼和

Huffman操作碼的信息冗余量。

指令序號11I2I3I4I5I617

出現(xiàn)的概率0.450.300.150.050.030.010.01

利用Huffman樹進行操作碼編碼

(又稱最小概率合并法)

>把所有指令按照操作碼在程序中出現(xiàn)的概率大小,

自左向右順序排列。

>選取兩個概率最小的結(jié)點合并成一個概率值是二者

之和的新結(jié)點,并把這個新結(jié)點與其它還沒有合并

的結(jié)點一起形成一個新的結(jié)點集合。

>在新結(jié)點集合中選取兩個概率最小的結(jié)點進行苔笄;

如此繼續(xù)進行下去,直至全部結(jié)點合并完畢。

A最后得到的根結(jié)點的概率值為1。

A每個新結(jié)點都有兩個分支,分別用帶有箭頭的線表

示,并分別用一位代碼“0”和“1”標注。

A從根結(jié)點開始,沿箭頭所指方向?qū)ふ业竭_屬于該指

令概率結(jié)點的最短路徑,把沿線所經(jīng)過的代碼排列

起來就得到了這條指令的操作碼編碼。

利用Huffman樹進行操作碼編碼

0.450.300.150.050.030.010.01

利用Huffman樹進行操作碼編碼

0.450.300.150.050.030.010.01

0.02

利用Huffman樹進行操作碼編碼

利用Huffman樹進行操作碼編碼

0.10

利用Huffman樹進行操作碼編碼

利用Huffman樹進行操作碼編碼

0.55

利用Huffman樹進行操作碼編碼

1.00

利用Huffman樹進行操作碼編碼

Huffman操作碼編碼

指令序號出現(xiàn)的概率Huffman編碼法操作碼長度

110.4501位

I20.30102位

I30.151103位

I40.0511104位

I50.03111105位

I60.011111106位

170.011111116位

解:采用最優(yōu)Huffman編碼法操作碼的最短平

長度為:

"=-2>魄/=0.45X1.152+0.30X1.737

1=1

+0.15X2.737+0.05X4.322

+0.03X5.059+0.01X6.644

+0.01X6.644=1.95(位)

采用Huffman編碼法的操作碼平均長度為:

7

H=工夕?/.=().45X1+0.30X2+0.15X3+

Z=1

0.05X4+0.03X5+0.01X6+0.01X6

程1.97(位)

?采用3位固定長操作碼的信息冗余量為:

H1.97

R=T—p----------=|=1---------?35%

73

log2

Huffman編碼法的信息冗余量僅為:

195

R=1---------?1.0%

1.97

與3位固定長操作碼的信息冗余量35%相比要小得多

3.擴展編碼法

?Huffman操作碼的主要缺點:

操作碼長度很不規(guī)整,硬件譯碼困難

與地址碼共同組成固定長的指令比較困難

擴展編碼法:由固定長操作碼與Huffman編碼法

相結(jié)合形成。

例2.17:將例2.16改為1?2?3?5擴展編碼法,操作

碼最短平均長度為:

例2.17:將例2J6改為1?2?3?5擴展編碼法,操作

碼最短平均長度為:

7條指令的操作碼擴展編碼法

指令序號出現(xiàn)的概率1-2-3-5擴展編碼2-4等長擴展編碼

11'0.45?000

I20.301001

I30.1511010

I40.05111001100

I50.03111011101

I60.01111101110

170.01-111111111

平均長度2.02.2

信息冗余量2.5%11.4%

H=0.45X1+0,30X2+0.15X3

+(0.05+0.03+0.01+0,01)X5=2.00

1.95

信息冗余量為:R=T—...........=2.5%

2.00

曲阜師范大學計算機學院

SchoolofComputerScience,QufuNormalUniversity2012-9-2379

例2.18:將例2」6改為2?4等長擴展編碼法,操作碼

短平均長度為:

H=(0.45+0,30+0.15)X2

+(0.05+0,03+0.01+0.01)X4

=2.20

2?4等長擴展編碼法信息冗余量為:

1.95

R=1-----------=11.4%

2.20

7條指令的操作碼擴展編碼法

指令序號出現(xiàn)的概率1-2-3-5擴展編碼2-4等長擴展編碼

11'0.45?000

I20.301001

I30.1511010

I40.05111001100

I50.03111011101

I60.01111101110

170.01-111111111

平均長度2.02.2

信息冗余量2.5%11.4%

操作碼等長擴展編碼法(4-8-12)

操作碼編碼說明操作碼編碼說明

00000000

00014位長度的00014位長度的

??????操作碼共15種....操作碼共8種

11100111

1111000010000000

111100018位長度的100000018位長度的

...操作碼共15種??????操作碼共64種

1111111011110111

111111110000100010000000

11111111000112位長度的10001000000112位長度的操

??????操作碼共16種??????作碼共512種

111111111110111111110111

擴展法等長8/64/512……擴展法

不等長操作碼擴展編碼法(4-6-10擴展編碼)

各種不同長度操作碼的指令

編碼方法指令種類

4位操作碼6位操作碼10位操作碼

15/3/161531634

8/31/168311655

8/30/328?3013270

8/16/256816256280

4/32/256432256292

2.3.3地址碼的優(yōu)化表示

1.地址碼個數(shù)的選擇

地址碼個數(shù)通常有3個、2個、1個及0個等4種情況

OPCAdAsiAs2

OPCAdAs

2.3.3地址碼的優(yōu)化表示

1.地址碼個數(shù)的選擇

地址碼個數(shù)通常有3個、2個、1個及0個等4種情況

OPCA

只有一個源地址;

運算所需的兩個操作數(shù),一個隱

含來自累加器(通用寄存器),

另一個來自源地址,運算結(jié)果隱

含放入累加器

2.3.3地址碼的優(yōu)化表示

1.地址碼個數(shù)的選擇

地址碼個數(shù)通常有3個、2個、1個及0個等4種情況

OPC

所需操作數(shù)隱含從堆棧頂部彈出,

運算結(jié)果隱含壓入堆棧頂部

□評價指令中地址碼個數(shù)應該取多少的標準主要

有兩個:

程序存儲容量:所有指令長度的總和最短;

程序執(zhí)行速度:程序執(zhí)行中訪問主存的信息(包括

指令和數(shù)據(jù))量的總和最少。

通過一個典型例子來分析:

例如:計算一個典型的算術(shù)表達式:

A表示數(shù)據(jù)a的地

axb+c—d址,R表示通用寄

JC—存器(累加器),

X、Y表示存放中

間結(jié)果的存儲單

?用三地址指令編寫的程序如下:不采用直接尋址方

MULX,A,BX-(A)X(B)

ADDX,X,CX-(X)+(c)

SUBX,X,D分子的計算結(jié)果在中

ADDY,E,F計算分母,存入丫

IVX,X,Y最后結(jié)果在X單元中

A用普通二地址指令編寫的程序:

MOVEX,A;復制臨時變量到X中

MULX,B

ADDX,C

SUBX,DX中存放分子運算結(jié)果

MOVEY,E復制臨時變量到丫中

ADDY,F丫中存放分母運算結(jié)果

DIVX,Y最后結(jié)果在X單元中

?用多寄存器結(jié)構(gòu)的二地址指令編寫程序:

MOVERI,A;操作數(shù)a取到寄存器R1中

MULRI,B

ADDRI,C

SUBRI,D;RI中存放分子運算結(jié)果

MOVER2,E

ADDR2,FR2中存放分母運算結(jié)果

DIVRI,R2最后結(jié)果在Rl中

MOVEX,RI最后結(jié)果存入X中

A用一地址指令編寫的程序:

LOADE;先計算分母,

;取一個操作數(shù)到累加器中

ADDF;分母運算結(jié)果在累加器中

STOREX;保存分母運算結(jié)果到X中

LOADA;開始計算分子

MULB

ADDC

SUBD;累加器中是分子運算結(jié)果

DIVX;最后運算結(jié)果在累加器中

STOREX;保存最后運算結(jié)果到X中

A用0地址指令編寫程序:逆波蘭表達式ab*c+d-ef+/

PUSHA;操作數(shù)a壓入堆棧

PUSHB;操作數(shù)b壓入堆棧

MUL;棧頂兩數(shù)相乘,結(jié)果壓回堆頂

PUSHC

ADD

PUSHD

SUB;棧頂是分子運算的結(jié)果

PUSHE

PUSHF

ADD

DIV;棧頂是最后運算的結(jié)果

jEDPX;保存最后運算結(jié)果

用不同地址個數(shù)指令編寫的程序

的存儲容量和執(zhí)行速度

地址數(shù)目指令條數(shù)訪存次數(shù)程序存儲量執(zhí)行速度(訪存信息量)

三地址5205P+15A=65B5P+15A+15D=185B

二地址7267P+14A=63B7P+14A+19D=215B

一地址9189P+9A=45B9P+9A+9D=117B

零地址124112P+7A=40B12P+7A+29D=272B

二地址,8158P+7A+9R=8P+7A+9R+7D=96B

寄存器型40B

P表示操作碼長度,A表示地址碼長度,D表示數(shù)據(jù)長度,R表示通

用寄存器的地址碼長度,B表示字節(jié)數(shù)。并取:D=2A=8P=16R=8B

不同地址個數(shù)指令的特點及適用場合

程序程序程序執(zhí)

地址數(shù)目適用場合

的長度存儲量行速度

三地址最短最大一般向量,矩陣運算為主

二地址較短很大很低一般不宜采用

一地址較長較大較快連續(xù)運算,硬件結(jié)構(gòu)簡單

零地址最長最小最低嵌套,遞歸,變量較多

二地址

一般最小最快多累加器,數(shù)據(jù)傳送較多

寄存器型

?關(guān)于地址碼個數(shù)結(jié)論:

A對于一般商用處理機,采用多寄存器結(jié)構(gòu)的二地址

指令是最理想的。

?如果強調(diào)硬件結(jié)構(gòu)簡單,并且以連續(xù)運算(如求累

加和等)為主,宜采用一地址結(jié)構(gòu)。

?對于以向量、矩陣運算為主的處理機,最好采用三

地址結(jié)構(gòu)。部分RISC處理機也采用三地址指令。

?對于解決遞歸問題為主的處理機,宜采用零地址結(jié)

構(gòu)。編程容易、節(jié)省程序存儲量。

2.縮短地址碼長度的方法

用一個短地址碼表示一個大地址空間

?用間址尋址方式縮短地址碼長度

方法:在主存儲器的低端開辟一個專門存放間接地

址的區(qū)域

?用變址尋址方式縮短地址碼長度

變址尋址方式中的地址偏移量比較短,

?用寄存器間接尋址方式縮短地址碼長度

例如:16個間址寄存器,用4位地址碼就能表示很長

4的邏輯地址空間。

2.4指令系統(tǒng)的功能設(shè)計

2.4.1基本指令系統(tǒng)

通用計算機必須有5類基本指令

2.4.2指令系統(tǒng)的性能

完整性、規(guī)整性、高效率和兼容性

2.4.3指令系統(tǒng)的優(yōu)化設(shè)計

CISC、RISC和VL

溫馨提示

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

評論

0/150

提交評論