第2章體系結(jié)構(gòu)_第1頁
第2章體系結(jié)構(gòu)_第2頁
第2章體系結(jié)構(gòu)_第3頁
第2章體系結(jié)構(gòu)_第4頁
第2章體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩175頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、指令系統(tǒng)概念指令系統(tǒng)概念2.1 數(shù)據(jù)表示數(shù)據(jù)表示2.2 尋址技術(shù)尋址技術(shù)2.3 指令格式的優(yōu)化設(shè)計指令格式的優(yōu)化設(shè)計2.4 指令系統(tǒng)的功能設(shè)計指令系統(tǒng)的功能設(shè)計2.5 編譯器的角色編譯器的角色第二章指令系統(tǒng)第二章指令系統(tǒng)指令系統(tǒng)概念指令系統(tǒng)概念在機器上直接運行的目標程序是由機器指令組成在機器上直接運行的目標程序是由機器指令組成的。的。指令系統(tǒng)是計算機所有機器指令的集合,是軟硬指令系統(tǒng)是計算機所有機器指令的集合,是軟硬件的之間的主要分界面。件的之間的主要分界面。主要研究指令格式、數(shù)主要研究指令格式、數(shù)據(jù)表示和尋址方式據(jù)表示和尋址方式硬件設(shè)計人員實現(xiàn)指令系統(tǒng),軟件設(shè)計人員使用硬件設(shè)計人員實現(xiàn)指令系

2、統(tǒng),軟件設(shè)計人員使用指令系統(tǒng)編制軟件,指令系統(tǒng)設(shè)計由軟件和硬件指令系統(tǒng)編制軟件,指令系統(tǒng)設(shè)計由軟件和硬件設(shè)計人員共同來完成。設(shè)計人員共同來完成。指令系統(tǒng)與軟件之間存在語義差距,目前差距越指令系統(tǒng)與軟件之間存在語義差距,目前差距越來越大。來越大。2.1 數(shù)據(jù)表示數(shù)據(jù)表示2.1.1 數(shù)據(jù)表示與數(shù)據(jù)類型數(shù)據(jù)表示與數(shù)據(jù)類型2.1.2 浮點數(shù)據(jù)表示浮點數(shù)據(jù)表示2.1.3 操作數(shù)的大小和類型操作數(shù)的大小和類型2.1.1 數(shù)據(jù)表示與數(shù)據(jù)類型數(shù)據(jù)表示與數(shù)據(jù)類型數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)確定數(shù)據(jù)表示的原則確定數(shù)據(jù)表示的原則例例2.1例例2.2數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)表示:指計算機硬件能

3、夠直接識別,可以被數(shù)據(jù)表示:指計算機硬件能夠直接識別,可以被指令系統(tǒng)直接調(diào)用的那些數(shù)據(jù)類型,是由硬件實指令系統(tǒng)直接調(diào)用的那些數(shù)據(jù)類型,是由硬件實現(xiàn)的數(shù)據(jù)類型?,F(xiàn)的數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu):指面向計算機系統(tǒng)軟件、面向應(yīng)用領(lǐng)數(shù)據(jù)結(jié)構(gòu):指面向計算機系統(tǒng)軟件、面向應(yīng)用領(lǐng)域所需處理的數(shù)據(jù)類型,是由軟件實現(xiàn)的數(shù)據(jù)類域所需處理的數(shù)據(jù)類型,是由軟件實現(xiàn)的數(shù)據(jù)類型。型。確定數(shù)據(jù)表示的原則確定數(shù)據(jù)表示的原則確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實現(xiàn),是軟確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實現(xiàn),是軟件與硬件的取舍問題,目的是件與硬件的取舍問題,目的是:1.縮短程序的運行時間縮短程序的運行時間2.減少減少CPU與主存儲器之間的通信量與主存儲器

4、之間的通信量3.數(shù)據(jù)表示具有通用性和高的利用率數(shù)據(jù)表示具有通用性和高的利用率如果用定點數(shù)據(jù)表示浮點運算如果用定點數(shù)據(jù)表示浮點運算,處理機的運算速處理機的運算速度要降低兩個數(shù)量級。度要降低兩個數(shù)量級。假設(shè)一臺機器只有定點數(shù)據(jù)表示,定點數(shù)運算的假設(shè)一臺機器只有定點數(shù)據(jù)表示,定點數(shù)運算的速度為速度為107次次/秒。秒。那么實現(xiàn)那么實現(xiàn)32位浮點數(shù)運算速度就為位浮點數(shù)運算速度就為 105次次/秒,秒,CPU與主存的通信量也增加與主存的通信量也增加100多倍多倍由此可見,對于浮點應(yīng)用比較重要的計算機,由由此可見,對于浮點應(yīng)用比較重要的計算機,由硬件實現(xiàn)浮點數(shù)據(jù)表示是必要的硬件實現(xiàn)浮點數(shù)據(jù)表示是必要的例例

5、2.1例例2.2實現(xiàn)實現(xiàn)A=A+B,A和和B均為均為200200的矩陣,分析向的矩陣,分析向量數(shù)據(jù)表示的作用。量數(shù)據(jù)表示的作用。解:在沒有向量數(shù)據(jù)表示的計算機系統(tǒng)上實現(xiàn),一解:在沒有向量數(shù)據(jù)表示的計算機系統(tǒng)上實現(xiàn),一般需要般需要7條指令,其中有條指令,其中有5條指令要循環(huán)條指令要循環(huán)4萬次。萬次。loadsi , 0load cx, 40000loop1:load R1,A:siload R2,B:siadd R1,R2store A:si,R1looploop1因此,因此,CPU與主存儲器之間的通信量:與主存儲器之間的通信量:取指令取指令2+540,000條,條,讀或?qū)憯?shù)據(jù)讀或?qū)憯?shù)據(jù)340,

6、000個,個,共要訪問主存儲器共要訪問主存儲器840,000次以上。次以上。如果有向量數(shù)據(jù)表示,只需要一條指令。如果有向量數(shù)據(jù)表示,只需要一條指令。減少訪問主存減少訪問主存(取指令取指令)次數(shù):次數(shù):540,000次次縮短程序執(zhí)行時間一倍以上??s短程序執(zhí)行時間一倍以上。2.1.2 浮點數(shù)據(jù)表示浮點數(shù)據(jù)表示浮點數(shù)的表數(shù)范圍浮點數(shù)的表數(shù)范圍浮點數(shù)的表數(shù)精度浮點數(shù)的表數(shù)精度浮點數(shù)的表數(shù)效率浮點數(shù)的表數(shù)效率尾數(shù)的選擇尾數(shù)的選擇(例例2.6)浮點數(shù)格式的設(shè)計浮點數(shù)格式的設(shè)計浮點數(shù)的舍入處理浮點數(shù)的舍入處理警戒位的設(shè)置方法警戒位的設(shè)置方法浮點數(shù)的表數(shù)范圍浮點數(shù)的表數(shù)范圍浮點數(shù)的表示方式浮點數(shù)的表示方式浮點

7、數(shù)的存儲方式浮點數(shù)的存儲方式浮點數(shù)的表數(shù)范圍浮點數(shù)的表數(shù)范圍例例2.3例例2.4例例2.5浮點數(shù)的表示方式浮點數(shù)的表示方式一個浮點數(shù)一個浮點數(shù)N可以用如下方式表示:可以用如下方式表示:m:尾數(shù)的值,包括尾數(shù)的碼制尾數(shù)的值,包括尾數(shù)的碼制(原碼或補碼原碼或補碼)和數(shù)制和數(shù)制(小數(shù)或整數(shù)小數(shù)或整數(shù))e:階碼的值,移碼或補碼,整數(shù)階碼的值,移碼或補碼,整數(shù)rm:尾數(shù)的基值,尾數(shù)的基值,2、4、8、16和和10進制等進制等re:階碼的基值,通常為階碼的基值,通常為2p:尾數(shù)長度尾數(shù)長度,當當rm=16時,時,4個二進制位才能表示一個二進制位才能表示一位尾數(shù)位尾數(shù)q:階碼長度,階碼部分的二進制位數(shù),階碼

8、長度,階碼部分的二進制位數(shù),p和和q均不均不包括符號位包括符號位remmN=rge,其中e = 浮點數(shù)的存儲方式浮點數(shù)的存儲方式這是一種浮點存儲方式:這是一種浮點存儲方式:其中:其中:mf為尾數(shù)的符號位為尾數(shù)的符號位ef為階碼的符號位,為階碼的符號位,e為階碼的值,為階碼的值,m為尾數(shù)的值。為尾數(shù)的值。1位1位q位p位mfefem 尾數(shù)為原碼純小數(shù),階碼用移碼整數(shù)時,尾數(shù)為原碼純小數(shù),階碼用移碼整數(shù)時, 規(guī)格化規(guī)格化浮點數(shù)浮點數(shù)N的表數(shù)范圍:的表數(shù)范圍: 尾數(shù)為補碼,負數(shù)區(qū)間的表數(shù)范圍為:尾數(shù)為補碼,負數(shù)區(qū)間的表數(shù)范圍為: 浮點數(shù)在數(shù)軸上的分布情況浮點數(shù)在數(shù)軸上的分布情況表數(shù)范圍可近似表示為:

9、表數(shù)范圍可近似表示為: 上上溢溢 下下溢溢(浮浮點點零零) 上上溢溢 - -N Nmin 負負數(shù)數(shù)區(qū)區(qū) - -N Nmax 0 0 N Nmin 正正數(shù)數(shù)區(qū)區(qū) N Nmax qeqerrrrrrmmpmmN- -+-11()-111rrrrmmpmmqeqerrN()qr= rmeNmax浮點數(shù)的表數(shù)范圍浮點數(shù)的表數(shù)范圍例例2.3:尾數(shù)用原碼、小數(shù)表示,階碼用移碼、:尾數(shù)用原碼、小數(shù)表示,階碼用移碼、 整數(shù)表示,整數(shù)表示,p23,q7,rmre2,求,求 規(guī)格化浮點數(shù)規(guī)格化浮點數(shù)N的表數(shù)范圍。的表數(shù)范圍。解:規(guī)格化浮點數(shù)解:規(guī)格化浮點數(shù)N的表數(shù)范圍是:的表數(shù)范圍是:2)21(221122327

10、7-N2)21(212723129-N 1 位 1 位 7 位 23 位 mf ef e m 注:mf為尾數(shù)的符號位,ef為階碼的符號位,e 為階碼的值,m 為尾數(shù)的值。 規(guī)格化最大正數(shù):規(guī)格化最大正數(shù): 0111 1111 1111 1111 1111 1111 1111 1111 規(guī)格化最小正數(shù):規(guī)格化最小正數(shù): 0000 0000 0100 0000 0000 0000 0000 0000 規(guī)格化最大負數(shù):規(guī)格化最大負數(shù): 1000 0000 0100 0000 0000 0000 0000 0000 規(guī)格化最小負數(shù):規(guī)格化最小負數(shù): 1111 1111 1111 1111 1111 1

11、111 1111 1111 階碼用移碼表示階碼用移碼表示 浮點浮點0的范圍:的范圍: 對于上例:對于上例: 如果階碼用補碼表示,浮點如果階碼用補碼表示,浮點0為:為: 0100 0000 0000 0000 0000 0000 0000 0000 浮點浮點0與機器與機器0不同,判不同,判0困難困難(與階碼有關(guān)與階碼有關(guān))。 階碼與補碼的關(guān)系階碼與補碼的關(guān)系 十進制:十進制: -128 -1 0 +127 補碼:補碼:1000 0000 1111 1111 0000 0000 0111 1111 移碼:移碼:0000 0000 0111 1111 1000 0000 1111 1111mmrrN

12、eqr-12129-N例例2.4:尾數(shù)用:尾數(shù)用補碼補碼、小數(shù)表示,階碼用移碼、小數(shù)表示,階碼用移碼、 整數(shù)表示,整數(shù)表示,p23,q7,rmre2,求,求 規(guī)格化浮點數(shù)規(guī)格化浮點數(shù)N的表數(shù)范圍。的表數(shù)范圍。解:規(guī)格化浮點數(shù)解:規(guī)格化浮點數(shù)N在正數(shù)區(qū)的表數(shù)范圍:在正數(shù)區(qū)的表數(shù)范圍: N在負數(shù)區(qū)的表數(shù)范圍:在負數(shù)區(qū)的表數(shù)范圍:2)21(2211223277- N2)221(212823127-+-N 1 位 1 位 7 位 23 位 mf ef e m 注:mf為尾數(shù)的符號位,ef為階碼的符號位,e 為階碼的值,m 為尾數(shù)的值。 規(guī)格化最大正數(shù):規(guī)格化最大正數(shù): 相同相同 0111 1111 1

13、111 1111 1111 1111 1111 1111 規(guī)格化最小正數(shù):規(guī)格化最小正數(shù): 相同相同 0000 0000 0100 0000 0000 0000 0000 0000 規(guī)格化最大負數(shù):規(guī)格化最大負數(shù): 尾數(shù)尾數(shù) -0.100 0 . 0 0001 1000 0000 0011 1111 1111 1111 1111 1111 規(guī)格化最小負數(shù):規(guī)格化最小負數(shù): 尾數(shù)尾數(shù) -1.0 1111 1111 1000 0000 0000 0000 0000 0000例例2.5:尾數(shù)用:尾數(shù)用補碼補碼、小數(shù)表示,階碼用移碼、小數(shù)表示,階碼用移碼、 整數(shù)表示,整數(shù)表示,p6,q6,rm16,r

14、e2, 求規(guī)格化浮點數(shù)求規(guī)格化浮點數(shù)N表數(shù)范圍是:表數(shù)范圍是:解:規(guī)格化浮點數(shù)解:規(guī)格化浮點數(shù)N在正數(shù)區(qū)間的表數(shù)范圍:在正數(shù)區(qū)間的表數(shù)范圍: 在負數(shù)區(qū)間的表數(shù)范圍:在負數(shù)區(qū)間的表數(shù)范圍:16)161(1663665-N16)16161(1664663-+-N 1 位 1 位 6 位 6 位 mf ef e m 注:mf為尾數(shù)的符號位,ef為階碼的符號位,e 為階碼的值,m 為尾數(shù)的值。 規(guī)格化最大正數(shù):相同規(guī)格化最大正數(shù):相同 0111 1111 1111 1111 1111 1111 1111 1111 規(guī)格化最小正數(shù):相同規(guī)格化最小正數(shù):相同 0000 0000 0001 0000 000

15、0 0000 0000 0000 規(guī)格化最大負數(shù):規(guī)格化最大負數(shù): 尾數(shù)尾數(shù) -0.0001 00. 0 0001 1000 0000 1110 1111 1111 1111 1111 1111 規(guī)格化最小負數(shù):規(guī)格化最小負數(shù): 尾數(shù)尾數(shù) -1.0 1111 1111 0000 0000 0000 0000 0000 0000 產(chǎn)生誤差的根本原因是浮點數(shù)的不連續(xù)性產(chǎn)生誤差的根本原因是浮點數(shù)的不連續(xù)性, 誤差誤差產(chǎn)生的直接原因有兩個:產(chǎn)生的直接原因有兩個:1 兩個浮點數(shù)都在浮點集內(nèi),而運算結(jié)果卻可能兩個浮點數(shù)都在浮點集內(nèi),而運算結(jié)果卻可能不在這個浮點集內(nèi)不在這個浮點集內(nèi)2 數(shù)據(jù)從十進制轉(zhuǎn)化為數(shù)據(jù)

16、從十進制轉(zhuǎn)化為2、4、8、16進制,產(chǎn)生進制,產(chǎn)生誤差。誤差。 規(guī)格化浮點數(shù)的精度為:規(guī)格化浮點數(shù)的精度為:當當rm2時:時:mpprrm)1(21),(-=22212)1(),(ppp-=浮點數(shù)的表數(shù)精度浮點數(shù)的表數(shù)精度浮點數(shù)的表數(shù)效率浮點數(shù)的表數(shù)效率浮點數(shù)的表數(shù)效率定義為:浮點數(shù)的表數(shù)效率定義為: 簡化表示:簡化表示: 當尾數(shù)基值為當尾數(shù)基值為2時,浮點數(shù)的表數(shù)效率為:時,浮點數(shù)的表數(shù)效率為:eqmpeqmprrrrrm2212) 1(21+-=-全部浮點數(shù)個數(shù)個數(shù)可表示的規(guī)格化浮點數(shù)mmmrrr1)(-=()22125 0 %=-= 浮點數(shù)的表數(shù)效率隨浮點數(shù)的表數(shù)效率隨rm增大增大 當尾

17、數(shù)基值當尾數(shù)基值rm16時,浮點數(shù)的表數(shù)效率為:時,浮點數(shù)的表數(shù)效率為: 尾數(shù)基值尾數(shù)基值rm16與與rm2相比,浮點數(shù)的表數(shù)效率相比,浮點數(shù)的表數(shù)效率提高了:提高了:)2(倍875.1)16(=T()161611694%=-=例例2.6:IBM 370系列機的短浮點數(shù)表示方式,系列機的短浮點數(shù)表示方式, rm16,p6,re2,q6,尾數(shù)用原碼、,尾數(shù)用原碼、 小數(shù)表示,階碼用移碼、整數(shù)表示。求表數(shù)小數(shù)表示,階碼用移碼、整數(shù)表示。求表數(shù) 范圍和表數(shù)精度,并與范圍和表數(shù)精度,并與rm2時進行比較。時進行比較。解:表數(shù)精度為:解:表數(shù)精度為: 表數(shù)范圍是:表數(shù)范圍是: 若尾數(shù)基值若尾數(shù)基值rm2

18、,若精度不變:,若精度不變: 解得解得p21,則,則q9,它的表數(shù)范圍是:,它的表數(shù)范圍是: Nmax=9251222=-116226121()Nmax=622561621222121=-()p表數(shù)效率:表數(shù)效率:當當r rm m2 2時:時:1/21/25050當當r rm m4 4時:時:3/43/47575當當r rm m2 2時,規(guī)格化浮點數(shù)可以采用隱藏位時,規(guī)格化浮點數(shù)可以采用隱藏位方法表示,這時,表數(shù)效率為方法表示,這時,表數(shù)效率為100100結(jié)論:浮點數(shù)的尾數(shù)基值結(jié)論:浮點數(shù)的尾數(shù)基值r rm m取取2 2,并采用隱藏,并采用隱藏位表數(shù)方法是最佳的浮點數(shù)表示方式。這種位表數(shù)方法是

19、最佳的浮點數(shù)表示方式。這種浮點數(shù)表示方式能做到表數(shù)范圍最大、表數(shù)浮點數(shù)表示方式能做到表數(shù)范圍最大、表數(shù)精度最高、表數(shù)效率最好。精度最高、表數(shù)效率最好。浮點數(shù)格式的設(shè)計浮點數(shù)格式的設(shè)計尾數(shù)尾數(shù):通常采用原碼、小數(shù)表示。通常采用原碼、小數(shù)表示。采用原碼制表示:加減法比補碼表示復雜,乘除采用原碼制表示:加減法比補碼表示復雜,乘除法比補碼簡單,表示非常直觀。法比補碼簡單,表示非常直觀。采用小數(shù)表示能簡化運算,特別是乘除法運算。采用小數(shù)表示能簡化運算,特別是乘除法運算。尾數(shù)的基值尾數(shù)的基值rm選擇選擇2階碼階碼:一般機器都采用整數(shù)、移碼表示。一般機器都采用整數(shù)、移碼表示。采用移碼表示的主要原因是:浮點采

20、用移碼表示的主要原因是:浮點0與機器與機器0一致。一致。階碼進行加減運算時,移碼的加減法運算要比補階碼進行加減運算時,移碼的加減法運算要比補碼復雜碼復雜階碼的基值階碼的基值re取取2浮點數(shù)的舍入處理浮點數(shù)的舍入處理舍入處理的原因及要解決的問題舍入處理的原因及要解決的問題恒舍法、恒置法、下舍上入法恒舍法、恒置法、下舍上入法R R* *舍入法舍入法查表法查表法五種舍入方法的主要性能比較五種舍入方法的主要性能比較關(guān)于舍入方法的主要結(jié)論關(guān)于舍入方法的主要結(jié)論舍入處理的原因及要解決的問題舍入處理的原因及要解決的問題浮點數(shù)要進行舍入處理的原因是:浮點數(shù)要進行舍入處理的原因是:十進制數(shù)轉(zhuǎn)化為浮點數(shù)時,有效位

21、長度超過給十進制數(shù)轉(zhuǎn)化為浮點數(shù)時,有效位長度超過給定的尾數(shù)字長。定的尾數(shù)字長。兩個浮點數(shù)的加減乘除結(jié)果,尾數(shù)長度超過給兩個浮點數(shù)的加減乘除結(jié)果,尾數(shù)長度超過給定的尾數(shù)字長。定的尾數(shù)字長。舍入處理要解決的問題是:把規(guī)格化尾數(shù)的舍入處理要解決的問題是:把規(guī)格化尾數(shù)的pg位處理成只有位處理成只有p位。位。舍入方法的主要性能標準是:絕對誤差小、積累舍入方法的主要性能標準是:絕對誤差小、積累誤差小、容易實現(xiàn)誤差小、容易實現(xiàn)進行舍入處理時必須先規(guī)格化,然后再舍入,同進行舍入處理時必須先規(guī)格化,然后再舍入,同時在計算積累誤差時,要同時考慮正數(shù)和負數(shù)區(qū)時在計算積累誤差時,要同時考慮正數(shù)和負數(shù)區(qū)恒舍法、恒置法、

22、下舍上入法恒舍法、恒置法、下舍上入法恒舍法又稱截斷法、必舍法等,即直接丟棄多余恒舍法又稱截斷法、必舍法等,即直接丟棄多余的位,實現(xiàn)非常容易,但誤差大,正負區(qū)誤差相的位,實現(xiàn)非常容易,但誤差大,正負區(qū)誤差相反,但同一區(qū)誤差積累大。反,但同一區(qū)誤差積累大。恒置法又稱恒置恒置法又稱恒置r/2法、馮諾依曼法,是把有效字法、馮諾依曼法,是把有效字長的最低一位置成長的最低一位置成r/2,實現(xiàn)比較容易,積累誤差,實現(xiàn)比較容易,積累誤差較小,正負區(qū)誤差平衡,精度比較低。較小,正負區(qū)誤差平衡,精度比較低。下舍上入法下舍上入法(4舍舍5入法、入法、0舍舍1入法等入法等),精度高,精度高,積累誤差小,正負區(qū)誤差完全

23、平衡,實現(xiàn)起來比積累誤差小,正負區(qū)誤差完全平衡,實現(xiàn)起來比較困難。較困難。R R* *舍入法只有少數(shù)巨型機采用,沒有積累誤差,精度舍入法只有少數(shù)巨型機采用,沒有積累誤差,精度很高。實現(xiàn)很復雜。判斷很高。實現(xiàn)很復雜。判斷g g是否為是否為10.010.0,采用下舍上,采用下舍上入法或恒置法,如果溢出,可能要再次右規(guī)格化。入法或恒置法,如果溢出,可能要再次右規(guī)格化。R*舍入法舍入法舍入方法舍入方法 舍入前舍入前( (p+g 位位) 舍入后舍入后( (p 位位) 誤差情況誤差情況 下舍上入法下舍上入法 下舍上入法下舍上入法 下舍上入法下舍上入法 下舍上入法下舍上入法 恒置恒置 1 1 法法 恒置恒置

24、 1 1 法法 下舍上入法下舍上入法 下舍上入法下舍上入法 下舍上入法下舍上入法 0.xxx.xx|00.00 0.xxx.xx|00.01 0.xxx.xx|0.010 0.xxx.xx|01.11 0.xxx.x0|10.00 0.xxx.x1|10.00 0.xxx.xx|10.01 0.xxx.xx|11.10 0.xxx.xx|11.11 0.xxx.xx 0.xxx.xx 0.xxx.xx 0.xxx.xx 0.xxx.x1 0.xxx.x1 0.xxx.xx2-p 0.xxx.xx2-p 0.xxx.xx2-p 0 2-p-g 2-p-g+1 2-p-1(12-g+1) 2-p-

25、1 2-p-1 2-p-1(12-g+1) 2-p-g+1 2-p-g 查表法又稱查表法又稱ROMROM舍入法,舍入法,PLAPLA舍入法等,通過修改舍入法等,通過修改ROMROM或或PLAPLA,使積累誤差達到平衡。繼承了下舍上入法精度高、,使積累誤差達到平衡。繼承了下舍上入法精度高、積累誤差小優(yōu)點,同時又克服了實現(xiàn)困難缺點積累誤差小優(yōu)點,同時又克服了實現(xiàn)困難缺點查表法查表法 p 位位 g 位位 mx: m: 查表法的原理框圖查表法的原理框圖 (p-n)位位 n 位位 1位位 g-1 位位 ROM 或或 PLA 2n+1字字 n 位位 (p-n)位位 n 位位 通過精心設(shè)計通過精心設(shè)計ROM

26、ROM中所存儲的內(nèi)容,針對各種不同應(yīng)中所存儲的內(nèi)容,針對各種不同應(yīng)用領(lǐng)域,使積累誤差盡可能小。用領(lǐng)域,使積累誤差盡可能小。ROM地址 舍入前(pg位) 舍入后(p位) 誤差情況 000 001 010 011 100 101 110 111 xxx00|0 xx x xxx00|1xx x xxx01|0 xx x xxx01|1xx x xxx10|0 xx x xxx10|1xx x xxx11|0 xx x xxx11|1xx x xxx00 xxx01 xxx01 xxx10 xxx10 xxx11 xxx11 xxx11 2-p-1(1-2-g+1)0 2-p-g2-p-1 2-p-

27、1(1-2-g+1)0 2-p-g2-p-1 2-p-1(1-2-g+1)0 2-p-g2-p-1 2-p-1(1-2-g+1)0 2-p(1-2-g)2-p-1 2-p-1 2-p-1 2-p-1 2-p-1(2g-1) 五種舍入方法的主要性能比較五種舍入方法的主要性能比較 舍入方法舍入方法 正數(shù)區(qū)的誤差范圍正數(shù)區(qū)的誤差范圍 正數(shù)區(qū)積累誤差正數(shù)區(qū)積累誤差 實現(xiàn)難易程度實現(xiàn)難易程度 恒舍法恒舍法 - -2-p(1-2-g) 0 2-p-1(2g-1) 最簡單最簡單 恒置法恒置法 - -2-p(1-2-g) 2-p 2-p 很簡單很簡單 下舍上入法下舍上入法 - -2-p-1(1-2-g+1)

28、2-p-1 2-p-1 很復雜很復雜 R R* * 舍入法舍入法 - -2-p-1 2-p-1 0 最復雜最復雜 查表法查表法 - -2-p(1-2-g) 2-p-1 2-p-1(2n-2g) 一般一般 恒置法雖有少量的積累誤差,且損失一位精度,但恒置法雖有少量的積累誤差,且損失一位精度,但由于實現(xiàn)很容易,普遍在小型微型機中使用。由于實現(xiàn)很容易,普遍在小型微型機中使用。R R* *舍入法是唯一積累誤差能達到完全平衡的舍入方舍入法是唯一積累誤差能達到完全平衡的舍入方法,但由于實現(xiàn)非常復雜,僅在少數(shù)對誤差要求非法,但由于實現(xiàn)非常復雜,僅在少數(shù)對誤差要求非常高的機器中采用。常高的機器中采用。下舍上入

29、法只有少量積累誤差,且精度比較高,但下舍上入法只有少量積累誤差,且精度比較高,但實現(xiàn)也很復雜,用于軟件實現(xiàn)的算法中。實現(xiàn)也很復雜,用于軟件實現(xiàn)的算法中。查表法實現(xiàn)比較容易,積累誤差很小,且可以通過查表法實現(xiàn)比較容易,積累誤差很小,且可以通過改變改變ROMROM或或PLAPLA中的內(nèi)容來修正積累誤差,是一種很中的內(nèi)容來修正積累誤差,是一種很有前途的舍入方法。有前途的舍入方法。關(guān)于舍入方法的主要結(jié)論關(guān)于舍入方法的主要結(jié)論警戒位的設(shè)置方法警戒位的設(shè)置方法在規(guī)定的尾數(shù)字長之外,運算器中的累加器需要在規(guī)定的尾數(shù)字長之外,運算器中的累加器需要另外增加的長度稱為警戒位(另外增加的長度稱為警戒位(Guard

30、Bit)警戒位在舍入和左規(guī)時使用警戒位在舍入和左規(guī)時使用設(shè)置警戒位的原因是:設(shè)置警戒位的原因是:不設(shè)置警戒位,可能出現(xiàn)很大的誤差不設(shè)置警戒位,可能出現(xiàn)很大的誤差不設(shè)置警戒位,可能造成完全錯誤的運算結(jié)果不設(shè)置警戒位,可能造成完全錯誤的運算結(jié)果 例例2.8:0.10000000200.111111012-1求和求和: 0. .00000001 20 0. .10000000 20 對階:對階:1. .10000001 20 左規(guī):左規(guī): 0. .10000000 2-7 求和:求和: 0. .00000001 120 0. .10000000 對階:對階:1. .10000001 20 120 左

31、規(guī):左規(guī): 0. .11000000 2-7 例例2.9:0.100021250.11112124求和:求和: 0. .0000 12125 左規(guī):左規(guī): 0. .1000 2121 0. .1000 對階:對階: 1. .1000 2125 12125 求和:求和: 0. .0000 2125 0. .1000 2125 對階:對階: 1. .1000 2125 各種情況下所需要的警戒位位數(shù)各種情況下所需要的警戒位位數(shù) 用于左規(guī)用于左規(guī) 用于舍入用于舍入 加減法加減法 1 1 位位 乘法乘法 1 1 位位 除法除法 0 0 位位 右規(guī)右規(guī) 0 0 位位 十化二十化二 0 0 位位 總計總計

32、恒舍法恒舍法 0 0 位位 1 1 1 1 0 0 0 0 0 0 1 1 位位 恒置法恒置法 - -1 1 位位 0 0 0 0 - -1 1 - -1 1 - -1 1 0 0 位位 下舍上入法下舍上入法 1 1 位位 2 2 2 2 1 1 1 1 1 1 2 2 位位 查表法查表法 1 1 位位 2 2 2 2 1 1 1 1 1 1 2 2 位位 R R* *舍入法舍入法 2 2 位位 3 3 3 3 2 2 2 2 2 2 3 3 位位 2.1.3 操作數(shù)的大小和類型操作數(shù)的大小和類型一般處理機中的數(shù)據(jù)表示方法:一般處理機中的數(shù)據(jù)表示方法:數(shù)據(jù)存儲單元數(shù)據(jù)存儲單元(寄存器、主存儲器

33、、外存儲器等寄存器、主存儲器、外存儲器等)只存放純數(shù)據(jù)只存放純數(shù)據(jù)數(shù)據(jù)類型通過指令中的操作碼來解釋數(shù)據(jù)類型通過指令中的操作碼來解釋解釋同一種操作解釋同一種操作(如加法如加法)有很多條指令。有很多條指令。自定義數(shù)據(jù)表示方法:自定義數(shù)據(jù)表示方法:數(shù)據(jù)上有一個由硬件解釋的表示數(shù)據(jù)類型的符號數(shù)據(jù)上有一個由硬件解釋的表示數(shù)據(jù)類型的符號包括帶標志符的數(shù)據(jù)表示方法包括帶標志符的數(shù)據(jù)表示方法(針對一個數(shù)據(jù),如針對一個數(shù)據(jù),如R-2計算機計算機)和數(shù)據(jù)描述符表示法和數(shù)據(jù)描述符表示法(針對一組數(shù)據(jù),針對一組數(shù)據(jù),如如B-6700計算機計算機)接近于高級語言,現(xiàn)在的計算機已很難見到。接近于高級語言,現(xiàn)在的計算機已很

34、難見到。常見的數(shù)據(jù)的類型包括:常見的數(shù)據(jù)的類型包括:定點:補碼表示定點:補碼表示浮點:浮點:IEEE754標準標準字符:字符:ASCII和和Unicode編碼編碼進位制:進位制:2進制,進制,10進制進制( BCD碼碼)、16進制等進制等尋址方式:直接、間接、相對及寄存器尋址尋址方式:直接、間接、相對及寄存器尋址數(shù)據(jù)的功能:地址、數(shù)值、控制字、標志等數(shù)據(jù)的功能:地址、數(shù)值、控制字、標志等數(shù)據(jù)字長:字、半字、雙字、字節(jié)等,下面會數(shù)據(jù)字長:字、半字、雙字、字節(jié)等,下面會給出基準測試程序中數(shù)據(jù)訪問的大小分布給出基準測試程序中數(shù)據(jù)訪問的大小分布基準測試程序中數(shù)據(jù)訪問的大小分布基準測試程序中數(shù)據(jù)訪問的大

35、小分布2.2 尋址技術(shù)尋址技術(shù)尋找操作數(shù)及其他信息地址的技術(shù)稱為尋尋找操作數(shù)及其他信息地址的技術(shù)稱為尋址技術(shù),主要包括:編址方式、尋址方式址技術(shù),主要包括:編址方式、尋址方式和定位方式。和定位方式。尋址技術(shù)針對的對象為寄存器、主存儲器、尋址技術(shù)針對的對象為寄存器、主存儲器、堆棧和輸入輸出設(shè)備,用以分析各種尋址堆棧和輸入輸出設(shè)備,用以分析各種尋址技術(shù)的優(yōu)缺點,如何選擇和確定尋址技術(shù)。技術(shù)的優(yōu)缺點,如何選擇和確定尋址技術(shù)。2.2.1 編址方式編址方式2.2.2 尋址方式尋址方式2.2.3 定位方式定位方式2.2.1 編址方式編址方式編址方式是指對各種存儲設(shè)備進行編碼的方法。編址方式是指對各種存儲設(shè)

36、備進行編碼的方法。常用的編址單位:字編址、字節(jié)編址、位編址、常用的編址單位:字編址、字節(jié)編址、位編址、塊編址等。塊編址等。一般:字節(jié)編址,字訪問,對于訪問大于一個一般:字節(jié)編址,字訪問,對于訪問大于一個字節(jié)的數(shù)據(jù)必須對齊字節(jié)的數(shù)據(jù)必須對齊(邊界對準邊界對準)部分機器:位編址,字訪問部分機器:位編址,字訪問輔助存儲器:塊編址輔助存儲器:塊編址零地址空間個數(shù):零地址空間個數(shù):三個零地址空間:通用寄存器、主存儲器和輸入三個零地址空間:通用寄存器、主存儲器和輸入輸出設(shè)備均獨立編址輸出設(shè)備均獨立編址兩個零地址空間:主存儲器與輸入輸出設(shè)備統(tǒng)一兩個零地址空間:主存儲器與輸入輸出設(shè)備統(tǒng)一編址編址一個零地址空間

37、:所有存儲設(shè)備統(tǒng)一編址,最低一個零地址空間:所有存儲設(shè)備統(tǒng)一編址,最低端是通用寄存器,最高端是輸入輸出設(shè)備,中間端是通用寄存器,最高端是輸入輸出設(shè)備,中間為主存儲器為主存儲器隱含編址方式隱含編址方式(堆棧計算機堆棧計算機),實際上沒有零地址,實際上沒有零地址空間:堆棧空間:堆棧輸入輸出設(shè)備的編址需要與硬件相適應(yīng)和配合:輸入輸出設(shè)備的編址需要與硬件相適應(yīng)和配合:一臺設(shè)備一個地址:必須通過指令來識別該輸入一臺設(shè)備一個地址:必須通過指令來識別該輸入輸出設(shè)備上的有關(guān)寄存器,需要為設(shè)備提供單獨輸出設(shè)備上的有關(guān)寄存器,需要為設(shè)備提供單獨的操作碼;的操作碼;一臺設(shè)備兩個地址:一個地址是數(shù)據(jù)寄存器,一一臺設(shè)備

38、兩個地址:一個地址是數(shù)據(jù)寄存器,一個地址是狀態(tài)個地址是狀態(tài)/控制寄存器;控制寄存器;一臺設(shè)備多個地址:最靈活但編程最復雜。一臺設(shè)備多個地址:最靈活但編程最復雜。并行存儲器的編址技術(shù):并行存儲器的編址技術(shù):高位交叉編址:主要目的是用來擴大存儲器容量。高位交叉編址:主要目的是用來擴大存儲器容量。低位交叉編址:主要目的是提高存儲器速度。低位交叉編址:主要目的是提高存儲器速度。2.2.2 尋址方式尋址方式尋址方式:尋找操作數(shù)及數(shù)據(jù)存放單元尋址方式:尋找操作數(shù)及數(shù)據(jù)存放單元的方法。的方法。支持更多的尋址方式能減少目標程序的支持更多的尋址方式能減少目標程序的指令數(shù)量,但會增加復雜度和指令數(shù)量,但會增加復雜

39、度和CPI立即尋址方式立即尋址方式存儲器尋址方式存儲器尋址方式間接尋址方式與變址尋址方式間接尋址方式與變址尋址方式寄存器尋址方式寄存器尋址方式堆棧尋址方式堆棧尋址方式立即尋址方式立即尋址方式數(shù)據(jù)比較短,放到指令里面,可以看作存儲器尋數(shù)據(jù)比較短,放到指令里面,可以看作存儲器尋址的一種特殊形式。下圖給出了一個指令系統(tǒng)中址的一種特殊形式。下圖給出了一個指令系統(tǒng)中立即數(shù)的使用頻率:立即數(shù)的使用頻率:存儲器尋址方式存儲器尋址方式面向主存儲器的指令格式:面向主存儲器的指令格式:OPCMOPCM,MOPCM,M,M存儲器尋址方式通常是數(shù)據(jù)對齊的,不對齊會導存儲器尋址方式通常是數(shù)據(jù)對齊的,不對齊會導致硬件的復

40、雜性,即使是支持不對齊的機器,對致硬件的復雜性,即使是支持不對齊的機器,對齊的指令也會運行的更快齊的指令也會運行的更快存儲器存儲數(shù)據(jù)包括有存儲器存儲數(shù)據(jù)包括有2種字節(jié)次序:大端模式種字節(jié)次序:大端模式和小端模式和小端模式存儲器和寄存器操作模式大約各占操作數(shù)訪問的存儲器和寄存器操作模式大約各占操作數(shù)訪問的一半。一半。各種存儲器尋址方式的使用頻率各種存儲器尋址方式的使用頻率相對尋址的位移量相對尋址的位移量間接尋址方式與變址尋址方式間接尋址方式與變址尋址方式目的相同:都是為了解決操作數(shù)地址的修改問題目的相同:都是為了解決操作數(shù)地址的修改問題,都能做到不改變程序而修改操作數(shù)地址。都能做到不改變程序而修

41、改操作數(shù)地址。原則上,一種處理機中只需設(shè)置間址尋址方式與原則上,一種處理機中只需設(shè)置間址尋址方式與變址尋址方式中的任何一種即可變址尋址方式中的任何一種即可例例2.8:一個由:一個由N個元素組成的數(shù)組,已經(jīng)存放在個元素組成的數(shù)組,已經(jīng)存放在起始地址為起始地址為AS的主存連續(xù)單元中,現(xiàn)要把它搬到的主存連續(xù)單元中,現(xiàn)要把它搬到起始地址為起始地址為AD的主存連續(xù)單元中。不必考慮可能的主存連續(xù)單元中。不必考慮可能出現(xiàn)的存儲單元的重疊問題。為了編程簡單,采出現(xiàn)的存儲單元的重疊問題。為了編程簡單,采用一般的兩地址指令編寫程序。用一般的兩地址指令編寫程序。 解:用間接尋址方式編寫程序如下:解:用間接尋址方式編

42、寫程序如下: start:move asr,asi;保存源數(shù)組的起始地址保存源數(shù)組的起始地址 move adr,adi;保存目標數(shù)組起始地址保存目標數(shù)組起始地址 move num, cnt;保存數(shù)據(jù)的個數(shù)保存數(shù)據(jù)的個數(shù)loop:move asi, adi ;用間址尋址方式傳送數(shù)據(jù)用間址尋址方式傳送數(shù)據(jù) incasi;源數(shù)組的地址增量源數(shù)組的地址增量incadi;目標數(shù)組的地址增量目標數(shù)組的地址增量deccnt;個數(shù)減個數(shù)減1bgtloop;測試測試n個數(shù)據(jù)是否傳送完個數(shù)據(jù)是否傳送完halt;停機停機asr:as;源數(shù)組的起始地址源數(shù)組的起始地址adr:ad;目標數(shù)組的起始地址目標數(shù)組的起始地址

43、num:n;需要傳送的數(shù)據(jù)個數(shù)需要傳送的數(shù)據(jù)個數(shù)asi:0;當前正在傳送的源數(shù)組地址當前正在傳送的源數(shù)組地址adi:0;當前正在傳送的源數(shù)組地址當前正在傳送的源數(shù)組地址cnt:0;剩余數(shù)據(jù)的個數(shù)剩余數(shù)據(jù)的個數(shù)用變址尋址方式編寫程序如下:用變址尋址方式編寫程序如下:start: move as,x;源數(shù)組起址送變址寄存器源數(shù)組起址送變址寄存器move num, cnt;保存數(shù)據(jù)個數(shù),保證再入性保存數(shù)據(jù)個數(shù),保證再入性loop: move (x), ad-as(x) ;ad-as位地址偏移量,位地址偏移量,;在匯編時計算在匯編時計算incx;增量變址寄存器增量變址寄存器deccnt;個數(shù)減個數(shù)減1

44、bgtloop;測試測試n個數(shù)據(jù)是否傳送完成個數(shù)據(jù)是否傳送完成halt;停機停機num: n;需要傳送的數(shù)據(jù)個數(shù)需要傳送的數(shù)據(jù)個數(shù)cnt:0;剩余數(shù)據(jù)的個數(shù)剩余數(shù)據(jù)的個數(shù)主要優(yōu)缺點比較及優(yōu)缺點主要優(yōu)缺點比較及優(yōu)缺點對于程序員,兩種尋址方式的主要差別是:對于程序員,兩種尋址方式的主要差別是:間址尋址方式:間接地址在主存中,無偏移量間址尋址方式:間接地址在主存中,無偏移量變址尋址方式:基地址在變址寄存器中,有偏變址尋址方式:基地址在變址寄存器中,有偏移量移量主要優(yōu)缺點比較:主要優(yōu)缺點比較:采用變址尋址方式編寫的程序簡單、易讀。采用變址尋址方式編寫的程序簡單、易讀。實現(xiàn)的難易程度:間址尋址方式容易實

45、現(xiàn)的難易程度:間址尋址方式容易指令的執(zhí)行速度:間址尋址方式慢指令的執(zhí)行速度:間址尋址方式慢對數(shù)組運算的支持:變址尋址方式比較好對數(shù)組運算的支持:變址尋址方式比較好自動變址:在訪問間接地址過程中,地址自動增減自動變址:在訪問間接地址過程中,地址自動增減面向寄存器的指令形式:面向寄存器的指令形式:OPCROPCR,ROPCR,R,ROPCR,M主要優(yōu)點:指令字長短、指令執(zhí)行速度快、支持主要優(yōu)點:指令字長短、指令執(zhí)行速度快、支持向量和矩陣運算并能提高其速度向量和矩陣運算并能提高其速度主要缺點:現(xiàn)場切換困難、硬件復雜,如果寄存主要缺點:現(xiàn)場切換困難、硬件復雜,如果寄存器不對稱,不利于優(yōu)化編譯器不對稱,

46、不利于優(yōu)化編譯寄存器尋址方式寄存器尋址方式堆棧的尋址方式堆棧的尋址方式面向堆棧的指令格式:面向堆棧的指令格式: OPCOPCM主要優(yōu)點:主要優(yōu)點:支持高級語言,有利于編譯程序支持高級語言,有利于編譯程序(逆波蘭式逆波蘭式)節(jié)省存儲空間節(jié)省存儲空間(指令短指令短)支持程序的嵌套和遞歸調(diào)用,支持中斷處理支持程序的嵌套和遞歸調(diào)用,支持中斷處理主要缺點:主要缺點:運算速度比較低,一般將棧頂部分設(shè)計成一個運算速度比較低,一般將棧頂部分設(shè)計成一個高速的寄存器堆高速的寄存器堆2.2.3 定位方式定位方式把指令和數(shù)據(jù)中的邏輯地址把指令和數(shù)據(jù)中的邏輯地址( (相對地址相對地址) )轉(zhuǎn)換成主轉(zhuǎn)換成主存儲器的物理地

47、址存儲器的物理地址( (絕對地址絕對地址) ),這一轉(zhuǎn)換過程稱,這一轉(zhuǎn)換過程稱為程序的定位。程序需要定位的原因在于:為程序的定位。程序需要定位的原因在于:1 由于程序的獨立性,編譯程序一般把目標程序由于程序的獨立性,編譯程序一般把目標程序安排在從零開始的邏輯地址空間;安排在從零開始的邏輯地址空間;2 程序的模塊化設(shè)計也要求運行時再進行裝配定程序的模塊化設(shè)計也要求運行時再進行裝配定位;位;3 數(shù)據(jù)結(jié)構(gòu)在程序運行過程中,其大小往往是變數(shù)據(jù)結(jié)構(gòu)在程序運行過程中,其大小往往是變化的;化的;4 有些程序本身很大,大于分配給它的主存物理有些程序本身很大,大于分配給它的主存物理空間??臻g。三種定位方式:三種

48、定位方式:直接定位:在程序裝入主存儲器之前,程序中的直接定位:在程序裝入主存儲器之前,程序中的指令和數(shù)據(jù)的主存物理就已經(jīng)確定了的稱為直接指令和數(shù)據(jù)的主存物理就已經(jīng)確定了的稱為直接定位方式。定位方式。靜態(tài)定位:在程序裝入主存儲器的過程中隨即進靜態(tài)定位:在程序裝入主存儲器的過程中隨即進行地址變換,確定指令和數(shù)據(jù)的主存物理地址的行地址變換,確定指令和數(shù)據(jù)的主存物理地址的稱為靜態(tài)定位方式。稱為靜態(tài)定位方式。動態(tài)定位:在程序執(zhí)行過程中,當訪問到相應(yīng)的動態(tài)定位:在程序執(zhí)行過程中,當訪問到相應(yīng)的指令或數(shù)據(jù)時才進行地址變換,確定指令和數(shù)據(jù)指令或數(shù)據(jù)時才進行地址變換,確定指令和數(shù)據(jù)的主存物理地址的稱為動態(tài)定位方

49、式。的主存物理地址的稱為動態(tài)定位方式。2.3 指令格式的優(yōu)化設(shè)計指令格式的優(yōu)化設(shè)計2.3.1 指令的組成指令的組成2.3.2 操作碼的優(yōu)化設(shè)計操作碼的優(yōu)化設(shè)計2.3.3 地址碼的優(yōu)化設(shè)計地址碼的優(yōu)化設(shè)計2.3.1 指令的組成指令的組成一般的指令主要由兩部分組成:一般的指令主要由兩部分組成:操作碼和地址碼操作碼和地址碼地址碼通常包括三部分內(nèi)容:地址碼通常包括三部分內(nèi)容:地址:地址碼、立即數(shù)、寄存器、變址寄存器地址:地址碼、立即數(shù)、寄存器、變址寄存器地址的附加信息:偏移量、跳距、塊長度等地址的附加信息:偏移量、跳距、塊長度等尋址方式:直接尋址、間接尋址、立即數(shù)尋址、尋址方式:直接尋址、間接尋址、立

50、即數(shù)尋址、變址尋址、相對尋址、寄存器尋址變址尋址、相對尋址、寄存器尋址 操作碼操作碼( (OPCOPC) ) 地址碼地址碼( (A A) ) 操作碼主要包括兩部分內(nèi)容操作碼主要包括兩部分內(nèi)容操作種類:加、減、乘、除、數(shù)據(jù)傳送、操作種類:加、減、乘、除、數(shù)據(jù)傳送、移位、轉(zhuǎn)移、輸入輸出、程序控制、處移位、轉(zhuǎn)移、輸入輸出、程序控制、處理機控制等理機控制等操作數(shù)描述:操作數(shù)描述:數(shù)據(jù)的類型:定點數(shù)、浮點數(shù)、復數(shù)、數(shù)據(jù)的類型:定點數(shù)、浮點數(shù)、復數(shù)、字符、字符串、邏輯數(shù)、向量字符、字符串、邏輯數(shù)、向量進位制:進位制:2進制、進制、10進制、進制、16進制進制數(shù)據(jù)字長:字、半字、雙字、字節(jié)數(shù)據(jù)字長:字、半字

51、、雙字、字節(jié)2.3.2 操作碼的優(yōu)化表示操作碼的優(yōu)化表示改進操作碼編碼方式的目的是節(jié)省程序存儲空間改進操作碼編碼方式的目的是節(jié)省程序存儲空間例如:寶來公司例如:寶來公司(Borroughs)的的B-1700機機操作碼的三種編碼方法:操作碼的三種編碼方法:2.3.2.1 固定長操作碼固定長操作碼2.3.2.2 Huffman編碼法編碼法2.3.2.3 擴展編碼法擴展編碼法操作碼編碼方式整個操作系統(tǒng)所用指令的操作碼總位數(shù)改進的百分比8位定長編碼4-6-10擴展編碼Huffman編碼301,248184,966172,346039%43%2.3.2.1 固定長操作碼固定長操作碼就是所有指令使用相同的

52、代碼位數(shù),其最小碼長等就是所有指令使用相同的代碼位數(shù),其最小碼長等于:于:式中式中 是平均碼長,是平均碼長, 是第是第i種指令的碼長,種指令的碼長,n是指是指令總數(shù)。令總數(shù)。優(yōu)點:規(guī)整,譯碼簡單優(yōu)點:規(guī)整,譯碼簡單缺點:浪費信息量缺點:浪費信息量(操作碼的總長位數(shù)增加操作碼的總長位數(shù)增加)nlLi2log=Lil例例:已知已知 n = 15,求定長編碼的最小平均碼長。,求定長編碼的最小平均碼長。解:解:如:如:IBM公司的大中型機:最左邊公司的大中型機:最左邊8位為操作碼位為操作碼Intel公司的安騰公司的安騰(Intanium)處理機:處理機:14位定長位定長操作碼操作碼許多許多RISC處理

53、機采用定長操作碼處理機采用定長操作碼415loglog22=nL2.3.2.2 Huffman編碼法編碼法基本原理基本原理最優(yōu)最優(yōu)huffman編碼法編碼法 huffman編碼法編碼法(最小概率合并法最小概率合并法)例例p92基本原理基本原理1952年由年由Huffman首先提出首先提出最早用于電報報文編碼,如最早用于電報報文編碼,如e,t 等使用頻度高,等使用頻度高,用短編碼;用短編碼;q,x 使用頻度低,用長編碼;使用頻度低,用長編碼;基本原理基本原理-當用當用n個長度不等的代碼分別代表個長度不等的代碼分別代表n種發(fā)生概率不等的事件時,按照短代碼給高概率種發(fā)生概率不等的事件時,按照短代碼給

54、高概率事件、把長代碼給低概率事件的原則分配,可使事件、把長代碼給低概率事件的原則分配,可使平均碼長達到最低。平均碼長達到最低。使用頻度高的指令,短編碼使用頻度高的指令,短編碼使用頻度低的指令,長編碼使用頻度低的指令,長編碼最優(yōu)最優(yōu)huffman編碼法編碼法操作碼的最短平均長度可通過下式計算:操作碼的最短平均長度可通過下式計算:其中:其中:Pi表示第表示第i種操作碼在程序中出現(xiàn)的概率種操作碼在程序中出現(xiàn)的概率固定長操作碼相對于固定長操作碼相對于Huffman操作碼的信息冗余操作碼的信息冗余量為:量為:iniippH=-=12lognppRniii212loglog1=-=huffman編碼法編碼

55、法(最小概率合并法最小概率合并法)利用利用Huffman樹進行操作碼編碼的方法。樹進行操作碼編碼的方法。把所有指令按照操作碼在程序中出現(xiàn)的概率,自左把所有指令按照操作碼在程序中出現(xiàn)的概率,自左向右從大到小排列好。向右從大到小排列好。從最右邊選取兩個概率最小的結(jié)點合并成一個概率從最右邊選取兩個概率最小的結(jié)點合并成一個概率值是二者之和的新結(jié)點,并把這個新結(jié)點與其它還值是二者之和的新結(jié)點,并把這個新結(jié)點與其它還沒有合并的結(jié)點一起形成新結(jié)點集合。沒有合并的結(jié)點一起形成新結(jié)點集合。在新結(jié)點集合中選取兩個概率最小的結(jié)點進行合并,在新結(jié)點集合中選取兩個概率最小的結(jié)點進行合并,如此繼續(xù)進行下去,直至全部結(jié)點合

56、并完畢。如此繼續(xù)進行下去,直至全部結(jié)點合并完畢。最后得到的根結(jié)點的概率值為最后得到的根結(jié)點的概率值為1。每個結(jié)點都有兩個分支,分別用一位代碼每個結(jié)點都有兩個分支,分別用一位代碼“0” 和和“1”表示。表示。從根結(jié)點開始,沿尖頭所指方向,到達屬于該指令從根結(jié)點開始,沿尖頭所指方向,到達屬于該指令的概率結(jié)點,把沿線所經(jīng)過的代碼組合起來得到這的概率結(jié)點,把沿線所經(jīng)過的代碼組合起來得到這條指令的操作碼編碼。條指令的操作碼編碼。例例p92假設(shè)一臺模型計算機共有假設(shè)一臺模型計算機共有7種不同的操作碼,如種不同的操作碼,如果采用固定長操作碼需要果采用固定長操作碼需要3位。已知各種操作碼位。已知各種操作碼在程

57、序中出現(xiàn)的概率如下表,計算采用在程序中出現(xiàn)的概率如下表,計算采用Huffman編碼法的操作碼平均長度,并計算固定長操作碼編碼法的操作碼平均長度,并計算固定長操作碼和和Huffman操作碼的信息冗余量。操作碼的信息冗余量。使用最小概率合并法:使用最小概率合并法:指令I(lǐng)1概率0.45I20.30I30.15I40.05I50.03I60.01I70.010.450.300.150.050.030.010.011.000.550.250.100.050.02010101010101解解指令序號概率Huffman編碼法操作碼長度I10.4501位I20.30102位I30.151103位I40.051

58、1104位I50.03111105位I60.011111106位I70.011111116位采用采用Huffman編碼法所得到的操作碼的平均長度編碼法所得到的操作碼的平均長度=0.451+0.302+0.153+0.054+0.035+0.016+0.016=1.97(位位)采用最優(yōu)采用最優(yōu)Huffman編碼法,操作碼的最短平均長度編碼法,操作碼的最短平均長度=0.451.152+0.301.737+0.152.737+0.054.322+0.035.059+0.016.644+0.016.644=1.95(位位)采用采用3位固定長操作碼的信息冗余量為位固定長操作碼的信息冗余量為:%35395

59、. 117log12-=-=HRHuffman編碼法的信息冗余量僅為:編碼法的信息冗余量僅為:與與3位定長操作碼的冗余量位定長操作碼的冗余量35%相比要小得多相比要小得多Huffman操作碼的優(yōu)點:平均長度最短,信息的操作碼的優(yōu)點:平均長度最短,信息的冗余量最小;冗余量最小; Huffman操作碼的主要缺點:操作碼的主要缺點:操作碼長度很不規(guī)整,硬件譯碼困難操作碼長度很不規(guī)整,硬件譯碼困難與地址碼共同組成固定長的指令比較困難與地址碼共同組成固定長的指令比較困難%0 . 197. 195. 11-=R2.3.2.3 擴展編碼法擴展編碼法擴展編碼法概述擴展編碼法概述等長擴展編碼法等長擴展編碼法不等

60、長擴展編碼法不等長擴展編碼法擴展編碼法概述擴展編碼法概述由固定長操作碼與由固定長操作碼與Huffman編碼法相結(jié)合形成編碼法相結(jié)合形成例例p92改為改為1-2-3-5擴展編碼法擴展編碼法操作碼最短平均長度為:操作碼最短平均長度為:H =0.451+0.302+0.153+(0.05+0.03+0.01+0.01)5=2.00信息冗余量為:信息冗余量為:%5 . 200. 295. 11=-=R例例p92改為改為2-4等長擴展編碼法等長擴展編碼法操作碼最短平均長度操作碼最短平均長度:H =(0.45+0.30+0.15) 2+(0.05+0.03+0.01+0.01)4=2.20信息冗余量為:信

溫馨提示

  • 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

提交評論