計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第2章
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第2章》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第2章(146頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、2.1 數(shù)據(jù)表示 2.2 尋址技術(shù) 2.3 指令格式的優(yōu)化設(shè)計(jì) 2.4 指令系統(tǒng)的功能設(shè)計(jì) 2.5 RISC指令系統(tǒng) 2.6 VLIW指令系統(tǒng) 第 2章 指 令 系 統(tǒng) 在機(jī)器上直接運(yùn)行的 程序是由指令組成的 。 指令系統(tǒng)是軟件與硬件之間的一個(gè)主要分界 面 , 也是他們之間 互相溝通的一座橋梁 。 硬件設(shè)計(jì)人員采用各種手段實(shí)現(xiàn)指令系統(tǒng) , 而軟件設(shè)計(jì)人員則使用這些指令系統(tǒng)編制系 統(tǒng)軟件和應(yīng)用軟件 , 用這些軟件來填補(bǔ)指令 系統(tǒng)與人們習(xí)慣的使用方式之間的語義差距 。 指令系統(tǒng)設(shè)計(jì) 必須由軟件設(shè)計(jì)人員和硬件設(shè) 計(jì)人員共同來完成 。 指令系統(tǒng)發(fā)展相當(dāng)緩慢 , 需要用軟件來填補(bǔ) 的東西也就越來越多 。
2、 本章主要內(nèi)容有三大方面: 數(shù)據(jù)表示 尋址技術(shù) 指令系統(tǒng)設(shè)計(jì) 有三種類型的指令系統(tǒng): CISC:復(fù)雜指令系統(tǒng) RISC:精簡指令系統(tǒng) VLIW:超長指令字 指令系統(tǒng)設(shè)計(jì): 指令的格式設(shè)計(jì) 指令系統(tǒng)的功能設(shè)計(jì) 指令系統(tǒng)的性能評價(jià) 2.1 數(shù)據(jù)表示 2.1.1 數(shù)據(jù)表示與數(shù)據(jù)類型 2.1.2 浮點(diǎn)數(shù)的表示方法 2.1.3 浮點(diǎn)數(shù)格式設(shè)計(jì) 2.1.4 浮點(diǎn)數(shù)的舍入處理 2.1.5 警戒位的設(shè)置方法 2.1.6 自定義數(shù)據(jù)表示 2.1.1 數(shù)據(jù)表示與數(shù)據(jù)類型 數(shù)據(jù)表示的定義: 數(shù)據(jù)表示是指計(jì)算機(jī)硬件能夠直接識(shí)別,可 以被指令系統(tǒng)直接調(diào)用的那些數(shù)據(jù)類型。 例如:定點(diǎn)、邏輯、浮點(diǎn)、十進(jìn)制、字符、 字符串、
3、堆棧和向量等 數(shù)據(jù)類型: 文件、圖、表、樹、陣列、隊(duì)列、 鏈表、棧、向量、串、實(shí)數(shù)、整數(shù)、布爾數(shù)、 字符等 確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實(shí)現(xiàn),是軟件與 硬件的取舍問題 確定數(shù)據(jù)表示的原則 一是縮短程序的運(yùn)行時(shí)間 二是減少 CPU與主存儲(chǔ)器之間的通信量 三是這種數(shù)據(jù)表示的通用性和利用率 數(shù)據(jù)表示在不斷發(fā)展 例如:矩陣、樹、圖、表及自定義數(shù)據(jù)表示 等已經(jīng)開始用于數(shù)據(jù)表示中 例: 計(jì)算 C A B,其中, A、 B、 C均為 200 200的矩陣。分析采用向量數(shù)據(jù)表示 的作用。 解: 如果在沒有向量數(shù)據(jù)表示的計(jì)算機(jī)上實(shí)現(xiàn), 一般需要 6條指令,其中有 4條指令要循環(huán) 4萬 次。因此, CPU與主存儲(chǔ)器
4、之間的通信量: 取指令: 2 4 40,000條, 讀或?qū)憯?shù)據(jù): 3 40,000個(gè), 共要訪問主存儲(chǔ)器: 7 40,000次以上 如果有向量數(shù)據(jù)表示,只需要一條指令。 減少訪問主存(取指令)次數(shù) 4 40,000次 用軟件和硬件結(jié)合的方法實(shí)現(xiàn)新的數(shù)據(jù)表示 用字節(jié)編址支持字符串?dāng)?shù)據(jù)表示 用變址尋址方式來支持向量數(shù)據(jù)表示 1. 浮點(diǎn)數(shù)的表示方式 兩個(gè)數(shù)值: 尾數(shù) m:數(shù)制 (小數(shù)或整數(shù) )和碼制 (原碼或補(bǔ)碼 ) 階碼 e:整數(shù) , 移碼 (偏碼、增碼、余碼 )或補(bǔ)碼 兩個(gè)基值: 尾數(shù)基值 rm: 2、 4、 8、 16和 10進(jìn)制等 階碼基值 re: 通常為 2進(jìn)制 2.1.2 浮點(diǎn)數(shù)的表示方
5、法 r emmN 1 位 1 位 7 位 23 位 m f e f e m 注: m f 為尾數(shù)的符號(hào)位, e f 為階碼的符號(hào)位, e 為階碼的值, m 為尾數(shù)的值。 兩個(gè)字長:長度和物理位置 ,均不包括符 號(hào)位 尾數(shù)長度 p:尾數(shù)部分按基值計(jì)算的長度 階碼長度 q:階碼部分的二進(jìn)制位數(shù) 2. 浮點(diǎn)數(shù)的表數(shù)范圍 尾數(shù)為原碼、小數(shù),階碼用移碼、整數(shù)時(shí), 規(guī)格化浮點(diǎn)數(shù) N的表數(shù)范圍: 尾數(shù)為補(bǔ)碼 ,負(fù)數(shù)區(qū)間的表數(shù)范圍為: 浮點(diǎn)數(shù)在數(shù)軸上的分布情況 1 11r r r r m m p m m q e q er rN ( ) q e q er rr r r rm m pm mN 1 1( ) 上溢
6、下溢 ( 浮點(diǎn)零 ) 上溢 - N m i n 負(fù)數(shù)區(qū) - N m a x 0 N m i n 正數(shù)區(qū) N m a x 3. IEEE754浮點(diǎn)數(shù)國際標(biāo)準(zhǔn) 32位單精度浮點(diǎn)數(shù)格式如下: 階碼用移 -127碼表示,即階碼的 0 255分別 表示階碼的真值為 -127 128。 尾數(shù)用原碼、小數(shù), 1位符號(hào)位、 23位小數(shù)和 1位隱藏的整數(shù)共 25位表示。 尾數(shù)和階碼的基值都是 2。 64位雙精度浮點(diǎn)數(shù),階碼用 11位移碼表示 符號(hào) S,1 位 階碼 e , 8 位 尾數(shù)數(shù)值 m , 23 位 4. 浮點(diǎn)數(shù)的表數(shù)精度(誤差) 產(chǎn)生誤差的根本原因是浮點(diǎn)數(shù)的不連續(xù)性 誤差產(chǎn)生的直接原因有兩個(gè): (1)
7、 兩個(gè)浮點(diǎn)數(shù)都在浮點(diǎn)集內(nèi),而運(yùn)算結(jié)果卻 可能不在這個(gè)浮點(diǎn)集內(nèi) (2) 數(shù)據(jù)從十進(jìn)制轉(zhuǎn)化為 2、 4、 8、 16進(jìn)制, 產(chǎn)生誤差。 規(guī)格化浮點(diǎn)數(shù)的精度為: 最后 1個(gè)有效位的可信度為一半 當(dāng) rm 2時(shí),有: m ppr rm )1(21),( 22212 )1(),( ppp 5. 浮點(diǎn)數(shù)的表數(shù)效率 浮點(diǎn)數(shù)是一種冗余數(shù)制 (Redundat Number System) 浮點(diǎn)數(shù)的表數(shù)效率定義為: 簡化表示: 當(dāng)尾數(shù)基值為 2時(shí),浮點(diǎn)數(shù)的表數(shù)效率為: e q m p e q m p rr rrr m 22 12)1(2 1 全部浮點(diǎn)數(shù)個(gè)數(shù) 個(gè)數(shù)可表示的規(guī)格化浮點(diǎn)數(shù) m mm r rr 1)(
8、( )2 2 12 50% ( )16 16 116 94% T ( ) ( ) .16 2 1 875 倍 浮點(diǎn)數(shù)的表數(shù)效率隨 rm增大 當(dāng)尾數(shù)基值 rm 16時(shí),浮點(diǎn)數(shù)的表數(shù)效率為: 尾數(shù)基值 rm 16與 rm 2相比,浮點(diǎn)數(shù)的表數(shù)效 率提高了: 2.1.3 浮點(diǎn)數(shù)格式設(shè)計(jì) 1. 浮點(diǎn)數(shù)格式設(shè)計(jì)的主要問題 在表示浮點(diǎn)數(shù)的 6個(gè)參數(shù)中,只有 尾數(shù)基值 rm、尾數(shù)長 度 p和階碼長度 q與表數(shù)范圍、表數(shù)精度和表數(shù)效率 有關(guān) 在字長確定的情況下,如何選擇尾數(shù)基值 rm, 使表數(shù)范圍最大、表數(shù)精度和表數(shù)效率最高 m mm r rr 1)( m ppr rm )1(21),( mr e qrN 1
9、 2. 浮點(diǎn)數(shù)格式設(shè)計(jì)原則 定義浮點(diǎn)數(shù)格式的 6個(gè)參數(shù),確定原則如下: 尾數(shù): 多數(shù)機(jī)器用原碼、小數(shù)表示 采用原碼表示:加減法比補(bǔ)碼表示復(fù)雜,乘 除法比補(bǔ)碼簡單,而且非常直觀。 采用小數(shù)表示能簡化運(yùn)算,特別是乘法和除 法運(yùn)算 。 階碼: 一般機(jī)器用整數(shù)、移碼表示 采用移碼表示的主要原因是:浮點(diǎn) 0與機(jī)器 0 一致。階碼進(jìn)行加減運(yùn)算時(shí),移碼的加減法 運(yùn)算要比補(bǔ)碼復(fù)雜 基值: 尾數(shù)的基值 rm 2, 階碼的基值 re 2, 采用 隱藏位 表示方式能夠使規(guī)格化浮點(diǎn)數(shù)的 表數(shù)效率達(dá)到 100(當(dāng) rm 2時(shí)) 浮點(diǎn)數(shù)格式設(shè)計(jì)的關(guān)鍵問題是: 在表數(shù)范圍和表數(shù)精度給定的情況下,如何 確定最短的尾數(shù)字長 p
10、和階碼字長 q,并根據(jù) 總字長的要求,恰當(dāng)分配 p與 q 2.1.4 浮點(diǎn)數(shù)的舍入處理 浮點(diǎn)數(shù)要進(jìn)行舍入處理的原因是: (1)十進(jìn)制數(shù)轉(zhuǎn)化為浮點(diǎn)數(shù)時(shí),有效位長度超過 給定的尾數(shù)字長。 (2)兩個(gè)浮點(diǎn)數(shù)的加減乘除結(jié)果,尾數(shù)長度超過 給定的尾數(shù)字長。 舍入處理要解決的問題是: 把規(guī)格化尾數(shù)的 p g位處理成只有 p位。 其中: p是浮點(diǎn)數(shù)表示方式給定的尾數(shù)字長, g是超過給定尾數(shù)字長的部分。 舍入方法的主要性能標(biāo)準(zhǔn)是: 絕對誤差小, 積累誤差小, 容易實(shí)現(xiàn)。 進(jìn)行舍入處理時(shí)要注意的問題是: 必須先規(guī)格化,然后再舍入 ,否則舍入是沒 有意義的。 在計(jì)算積累誤差時(shí),要同時(shí)考慮到正數(shù)區(qū)和 負(fù)數(shù)區(qū)的情況。
11、 尾數(shù)有效字長 p 位 有效字長之外 g 位 誤差情況 正 數(shù) 區(qū) 舍入前 0.xxx.xx 0.xxx.xx 0.xxx.xx . 0.xxx.xx 00.000 00.001 00.010 . 11.111 0 2 - p - g 2 - p - g+1 . . . . . . 2 - p (1 2 - g ) 舍入后 0.xxx.xx 2 - p - 1 ( 2 g - 1) 負(fù) 數(shù) 區(qū) 舍入前 0.x xx.xx 0.xxx.xx 0.xxx.xx . 0.xxx.xx 00.000 00.001 00.010 . 11.111 0 2 - p - g 2 - p - g+1 . .
12、. . . . 2 - p (1 2 - g ) 舍入后 0.xxx.xx 2 - p - 1 ( 2 g - 1) 方法 1:恒舍法 又稱截?cái)喾?、必舍法?優(yōu)缺點(diǎn): 實(shí)現(xiàn)非常容易。 誤差大,正負(fù)區(qū)誤 差相反,但同一區(qū)誤差積累。 正數(shù)區(qū) 尾數(shù)有效字長 p 位 有效字長外 g 位 誤差情況 舍入前 0.xxx.xx0 0.xxx.xx0 0.xxx.xx0 . 0.xxx.xx0 0.xxx.xx1 0.xxx.xx1 0.xxx.xx1 0.xxx.xx1 00.000 00.001 00.010 . 11.111 00.000 00.001 11 .110 11.111 2 - p 誤差積累
13、 2 - p (1 2 - g ) 2 - p (1 2 - g+1 ) . 2 - p - g 0 2 - p - g . 2 - p (1 2 - g+1 ) 2 - p (1 2 - g ) 舍入后 0.xxx.xx1 積累誤差 2 - p 方法 2:恒置法 恒置 r/2法 、馮諾依曼法 規(guī)則: 把有效字長的最低一位置成 r/2。 優(yōu)缺點(diǎn): 實(shí)現(xiàn)比較容易,積累誤差較小,正 負(fù)區(qū)誤差平衡。 精度比較低。 正數(shù)區(qū) 尾數(shù)有效字長 p 位 有效字長之外 g 位 誤差 舍入前 0.xxx.xx 0.xxx.xx 0.xxx.xx . 0.xxx.xx 0.xxx.xx 0.xxx.xx . 0.x
14、xx.xx 0.xxx.xx 00.000 00.001 00.010 . 01.111 10.000 10.001 11. .110 11.111 0 2 - p - g 2 - p - g + 1 . 2 - p - 1 (1 2 - g ) 2 - p - 1 積累誤差 2 - p - 1 (1 2 - g ) . 2 - p - g + 1 2 - p - g 舍入后 0.x x x . . . x x 0.x x x . . . x x 2 - p 最高位為 0 最高位為 1 積累誤差 2 - p - 1 方法 3:下舍上入法 4舍 5入法、 0舍 1入法等 優(yōu)缺點(diǎn): 精度高,積累誤
15、差小,正負(fù)區(qū)誤差完 全平衡。 實(shí)現(xiàn)起來比較困難。 關(guān)于舍入方法的主要結(jié)論: 恒置法 雖有少量的積累誤差,且損失一位精度, 但由于實(shí)現(xiàn)很容易, 普遍在小型微型機(jī)中使用 。 下舍上入法 只有少量積累誤差,且精度比較高, 但實(shí)現(xiàn)很復(fù)雜, 用于軟件實(shí)現(xiàn)的算法中 。 2.1.5 警戒位的設(shè)置方法 在規(guī)定的尾數(shù)字長之外,運(yùn)算器中的累加器 需要另外增加的長度稱為警戒位( Guard Bit) i) 不設(shè)置警戒位,可能出現(xiàn)很大的誤差 ii) 警戒位的用處只有兩個(gè): (1) 用于左規(guī)格化時(shí)移入尾數(shù)有效字長內(nèi)。 (2) 用于舍入。 警戒位的來源有以下幾個(gè)方面: (1) 做加、減法時(shí),因?qū)﹄A從有效字長內(nèi)移出 去的部
16、分。 (2) 做乘法時(shí),雙倍字長乘積的低字長部分。 (3) 做除法時(shí),因沒有除盡而多上商的幾位。 (4) 右規(guī)格化時(shí)移出有效字長的那部分 。 (5) 從十進(jìn)制轉(zhuǎn)換成二進(jìn)制時(shí) ,尾數(shù)超出有效 字長的部分。 2.1.6 自定義數(shù)據(jù)表示 一般處理機(jī)中的數(shù)據(jù)表示方法 數(shù)據(jù)存儲(chǔ)單元 (寄存器、主存儲(chǔ)器、外存儲(chǔ)器 等 )只存放純數(shù)據(jù),數(shù)據(jù)的屬性通過指令中的 操作碼來解釋: 數(shù)據(jù)的類型,如定點(diǎn)、浮點(diǎn)、字符、字符串、 邏輯數(shù)、向量等; 進(jìn)位制,如 2進(jìn)制、 10進(jìn)制、 16進(jìn)制等; 數(shù)據(jù)字長,如字、半字、雙字、字節(jié)等; 尋址方式,如直接尋址、間接尋址、相對尋 址、寄存器尋址等; 數(shù)據(jù)的功能,如地址、地址偏移量
17、、數(shù)值、 控制字、標(biāo)志等; 同一種操作 (如加法 )通常有很多條指令。 在高級語言和應(yīng)用軟件中 數(shù)據(jù)的屬性由數(shù)據(jù)自己定義; 在高級語言與機(jī)器語言之間的語義差距,要 靠編譯器等填補(bǔ)。 Burroughs公司在大型機(jī)中引入 自定義數(shù)據(jù)表 示方式和帶標(biāo)志符的數(shù)據(jù)表示方式 標(biāo)志符 數(shù) 值 帶有標(biāo)志符的數(shù)據(jù)表示方式 2 位 2 位 1 位 4 位 1 位 功能 陷井 封寫 類型 校驗(yàn) 數(shù) 值 1 0 位標(biāo)志符 在 R-2 巨型機(jī)中帶標(biāo)志符的數(shù)據(jù)表示方式 1. 帶標(biāo)志符的數(shù)據(jù)表示法 在 B5000大型機(jī)中,每個(gè)數(shù)據(jù)有一位標(biāo)志符 在 B6500和 B7500大型機(jī)中,每個(gè)數(shù)據(jù)有三位 標(biāo)志符 在 R-2巨型機(jī)
18、中采用 10位標(biāo)志符 R-2巨型機(jī)中的標(biāo)志符 功能位:操作數(shù)、指令、地址、控制字 陷井位:由軟件定義四種捕捉方式 封寫位:指定數(shù)據(jù)是只讀的還是可讀可寫 類型位:二進(jìn)制 ,十進(jìn)制 ,定點(diǎn)數(shù) ,浮點(diǎn)數(shù) ,復(fù)數(shù) , 字符串 ,單精度 ,雙精度;絕對地址、相對地址、 變址地址、未連接地址等。 標(biāo)志符由編譯器或其它系統(tǒng)軟件建立,對程 序員透明 程序(包括指令和數(shù)據(jù))的存儲(chǔ)量分析 數(shù)據(jù)存儲(chǔ)量增加,指令存儲(chǔ)量減少。 采用標(biāo)志符的數(shù)據(jù)長度 標(biāo)志符 長度 不采用標(biāo)志符的 指令和數(shù)據(jù)字長 指令 數(shù)據(jù)字長 加長 指 令 字 長 縮 短 數(shù)據(jù) 采用標(biāo)志符 的指令字長 常規(guī) 數(shù)據(jù) 表示 方法 與 帶標(biāo) 志符 數(shù)據(jù) 表示
19、 方法 的 比較 采用標(biāo)志符數(shù)據(jù)表示方法的主要優(yōu)點(diǎn): (1)簡化了指令系統(tǒng)。 (2)由硬件實(shí)現(xiàn)一致性檢查和數(shù)據(jù)類型轉(zhuǎn)換。 (3)簡化程序設(shè)計(jì),縮小了人與計(jì)算機(jī)之間的語 義差距。 (4)簡化編譯器,使高級語言與機(jī)器語言之間的 語義差距大大縮短。 (5)支持?jǐn)?shù)據(jù)庫系統(tǒng),一個(gè)軟件不加修改就可適 用于多種數(shù)據(jù)類型。 (6)方便軟件調(diào)試,在每個(gè)數(shù)據(jù)中都有陷井位 。 采用標(biāo)志符數(shù)據(jù)表示方法的主要缺點(diǎn): (1)數(shù)據(jù)和指令的長度可能不一致 可以通過精心設(shè)計(jì)指令系統(tǒng)來解決。 (2)指令的執(zhí)行速度降低 但是,程序的運(yùn)行時(shí)間是由設(shè)計(jì)時(shí)間、編譯 時(shí)間和調(diào)試時(shí)間共同組成的。 采用標(biāo)志符數(shù)據(jù)表示方法,程序的設(shè)計(jì)時(shí)間、 編
20、譯時(shí)間和調(diào)試時(shí)間可以縮短。 (3)硬件復(fù)雜度增加 由硬件實(shí)現(xiàn)一致性檢查和數(shù)據(jù)類型的轉(zhuǎn)換。 101 標(biāo)志位 長 度 地 址 數(shù)據(jù)描述符 000 數(shù) 值 數(shù)據(jù) 2. 數(shù)據(jù)描述符表示法 數(shù)據(jù)描述符與標(biāo)志符的區(qū)別: 標(biāo)志符只作用于一 個(gè)數(shù)據(jù),而數(shù)據(jù)描述符要作用于一組數(shù)據(jù)。 Burroughs公司生產(chǎn)的 B-6700機(jī)中采用的數(shù)據(jù)描 述符表示方法。 最高三位為 101時(shí)表示數(shù)據(jù)描述符, 最高三位為 000時(shí)表示數(shù)據(jù)。 例: 用數(shù)據(jù)描述符 表示方法 表示一個(gè) 3 4 的矩陣: A a a a a a a a a a a a a 11 12 13 14 21 22 23 24 31 32 33 34 OP
21、C X Y 101 標(biāo)志 位 3 101 標(biāo)志 位 4 101 標(biāo)志 位 4 101 標(biāo)志 位 4 000 a11 000 a12 000 a13 000 a14 000 a21 000 a22 000 a23 000 a24 000 a31 000 a32 000 a33 000 a34 2.2 尋址技術(shù) 尋找操作數(shù)及其地址的技術(shù)稱為尋址技術(shù) 2.2.1 編址方式 2.2.2 尋址方式 2.2.3 定位方式 重點(diǎn):尋址方式的選擇 2.2.1 編址方式 對各種存儲(chǔ)設(shè)備進(jìn)行編碼的方法。 主要內(nèi)容: 編址單位、零地址空間個(gè)數(shù)、并 行存儲(chǔ)器的編址、輸入輸出設(shè)備的編址 1. 編址單位 常用的編址單位
22、:字編址、字節(jié)編址、位編 址、塊編址等 編址單位與訪問字長 一般: 字節(jié)編址,字訪問 部分機(jī)器:位編址,字訪問 輔助存儲(chǔ)器:塊編址,位訪問 字節(jié)編址字訪問的優(yōu)點(diǎn): 有利于符號(hào)處理 字節(jié)編址字訪問的問題: (1) 地址信息浪費(fèi) 對于 32位機(jī)器,浪費(fèi) 2位地址 (最低 2位地址 ) 對于 64位機(jī)器,浪費(fèi) 3位地址 (2) 存儲(chǔ)器空間浪費(fèi) (3) 讀寫邏輯復(fù)雜 (4) 大端 (Big Endin)與小端 (Little Endian)問題 xx00 字節(jié) 半 字 雙 - xx08 - 字 單 字 半 - xx10 - 字 單 字 字節(jié) 單 - xx18 - 字 字長: 64 位, 8 個(gè)字節(jié) (
23、a) 可從任意位置開始訪問 x x 00 字節(jié) 浪 費(fèi) x x 08 半 字 浪 費(fèi) x x 10 單 字 浪 費(fèi) x x 18 雙 字 字長: 64 位, 8 個(gè)字節(jié) ( b ) 從一個(gè)存儲(chǔ)字的起始位置開始訪問 xx00 字節(jié) 浪 費(fèi) xx08 雙 字 xx10 半 字 浪 費(fèi) xx18 雙 字 xx20 單 字 浪 費(fèi) xx28 雙 字 xx30 字節(jié) 浪 費(fèi) 單 字 xx38 半 字 浪 費(fèi) 單 字 xx40 字節(jié) 浪費(fèi) 半 字 字長: 64 位, 8 個(gè)字節(jié) (c) 從地址的整倍數(shù)位置開始訪問 (2)存儲(chǔ)器空間浪費(fèi) 讀出的數(shù)據(jù) 字節(jié) 字節(jié) 0 字節(jié) 1 字節(jié) 2 字節(jié) 3 字節(jié) 4 字
24、節(jié) 5 字節(jié) 6 字節(jié) 7 (a) 從存儲(chǔ)器里讀一個(gè)字節(jié) 寫入的數(shù)據(jù) 字節(jié) 字節(jié) 0 字節(jié) 1 字節(jié) 2 字節(jié) 3 字節(jié) 4 字節(jié) 5 字節(jié) 6 字節(jié) 7 ( b ) 寫一個(gè)字節(jié)到存儲(chǔ)器 讀一個(gè)字節(jié) 用多路選擇器 寫一個(gè)字節(jié) 先讀后寫 (3)讀寫邏輯復(fù)雜 增加 1個(gè) align操作 0 7 8 1 5 1 6 2 3 2 4 3 1 3 2 3 9 4 0 4 7 4 8 5 5 5 6 6 3 字節(jié) 000 001 010 011 100 101 110 111 (a) 從左邊開始編址 6 3 5 6 5 5 4 8 4 7 4 0 3 9 3 2 3 1 2 4 2 3 1 6 1 5 8
25、 7 0 字節(jié) 111 110 101 100 011 010 001 000 (b) 從右邊開始編址 一個(gè)存儲(chǔ)字的兩種編址方式 (4)大端 (Big Endin)與小端 (Little Endian)問題 1234 5678 comp uter 31 0 3 1 0 3 1 0 78 56 34 12 p m o c r e t u (a) (b) 一種數(shù)據(jù)存儲(chǔ)方式 2. 零地址空間個(gè)數(shù) 三個(gè)零地址空間 : 通用寄存器、主存儲(chǔ)器、 輸入輸出設(shè)備獨(dú)立編址 兩個(gè)零地址空間 : 主存儲(chǔ)器與輸入輸出設(shè)備 統(tǒng)一編址 一個(gè)零地址空間 : 最低端是通用寄存器,最 高端是輸入輸出設(shè)備,中間為主存儲(chǔ)器 隱含編
26、址方式: 堆棧、 Cache等 3. 并行存儲(chǔ)器的編址技術(shù) 高位交叉編址 : 主要用來擴(kuò)大存儲(chǔ)器容量。 低位交叉編址 : 主要是提高存儲(chǔ)器速度。 4. 輸入輸出設(shè)備的編址 一臺(tái)設(shè)備一個(gè)地址 : 通過指令來區(qū)分地址, 地址內(nèi)部區(qū)分地址。 一臺(tái)設(shè)備兩個(gè)地址 : 數(shù)據(jù)寄存器、狀態(tài)或控 制寄存器。 多個(gè)編址寄存器共用同一個(gè)地址的方法: 依靠地址內(nèi)部來區(qū)分,適用于被編址的寄存 器的長度比較短 “下跟法”隱含編址方式,必須按順序讀寫 寄存器。 一臺(tái)設(shè)備多個(gè)地址 : 增加編程的困難 2.2.2 尋址方式 尋找操作數(shù)及數(shù)據(jù)存放地址的方法 1. 尋址方式的設(shè)計(jì)思想 立即數(shù)尋址方式 用于數(shù)據(jù)比較短,且為源操作數(shù)的
27、場合 面向寄存器的尋址方式 OPC R OPC R, R OPC R, R, R OPC R, M 面向主存儲(chǔ)器的尋址方式 : 直接尋址、 間接 尋址 、變址 尋址 、 相對尋址 基址尋址、自動(dòng)變址、 OPC M OPC M, M OPC M, M, M 面向堆棧的尋址方式 : OPC ;運(yùn)算型指令 OPC M ;數(shù)據(jù)傳送型指令 2. 寄存器尋址 主要優(yōu)點(diǎn): 指令字長短,指令執(zhí)行速度快, 支持向量和矩陣等運(yùn)算 主要缺點(diǎn): 不利于優(yōu)化編譯,現(xiàn)場切換困難 , 硬件復(fù)雜 3. 堆站尋址方式 主要優(yōu)點(diǎn):支持高級語言,有利與編譯程序, 節(jié)省存儲(chǔ)空間,支持程序的嵌套和遞歸調(diào)用, 支持中斷處理 主要缺點(diǎn):運(yùn)
28、算速度比較低,棧頂部分設(shè)計(jì) 成一個(gè)高速的寄存器堆 4. 間接尋址方式與變址尋址方式的比較 目的相同: 都是為了解決操作數(shù)地址的修改 原則上,一種處理機(jī)中只需設(shè)置間址尋址方 式與變址尋址方式中的任何一種即可,有些 處理機(jī)兩種尋址方式都設(shè)置 如何選取 間址尋址方式與變址尋址方式? 例 2.15: 一個(gè)由 N個(gè) 元素組成的數(shù)組,已經(jīng)存放 在起始地址為 AS的主存連續(xù)單元中,現(xiàn)要把 它搬到起始地址為 AD的主存連續(xù)單元中。不 必考慮可能出現(xiàn)的存儲(chǔ)單元重疊問題。為了 編程簡單,采用一般的兩地址指令編寫程序。 用間接尋址方式編寫程序如下: START: MOVE ASR, ASI ;保存源起始地址 MOV
29、E ADR, ADI ;保存目標(biāo)起始地址 MOVE NUM, CNT ;保存數(shù)據(jù)的個(gè)數(shù) LOOP: MOVE ASI,ADI ;傳送一個(gè)數(shù)據(jù) INC ASI ;源數(shù)組的地址增量 INC ADI ;目標(biāo)數(shù)組地址增量 DEC CNT ;個(gè)數(shù)減 1 BGT LOOP ;測試數(shù)據(jù)傳送完 ? HALT ;停機(jī) ASR: AS ;源數(shù)組的起始地址 ADR: AD ;目標(biāo)數(shù)組的起始地址 NUM: N ;需要傳送的數(shù)據(jù)個(gè)數(shù) ASI: 0 ;當(dāng)前正在傳送的源 ;數(shù)組地址 ADI: 0 ;當(dāng)前正在傳送的目標(biāo) ;數(shù)組地址 CNT: 0 ;剩余數(shù)據(jù)的個(gè)數(shù) 用變址尋址方式編寫程序如下: START: MOVE AS,
30、X ;取源數(shù)組起始地址 MOVE NUM, CNT ;保存數(shù)據(jù)個(gè)數(shù) LOOP: MOVE (X),AD-AS(X);傳送一個(gè)數(shù)據(jù) INC X ;增量變址寄存器 DEC CNT ;個(gè)數(shù)減 1 BGT LOOP ;測試數(shù)據(jù)傳送完成 HALT ;停機(jī) NUM: N ;傳送的數(shù)據(jù)個(gè)數(shù) CNT: 0 ;剩余數(shù)據(jù)的個(gè)數(shù) 主要優(yōu)缺點(diǎn)比較 : (1)采用變址尋址方式編寫的程序簡單、易讀。 (2)對于程序員,兩種尋址方式的主要差別是: 間址尋址: 間接地址在主存中,沒有偏移量 變址尋址: 基地址在變址寄存器中 , 有偏移量 (3)實(shí)現(xiàn)的難易程度:間址尋址方式容易實(shí)現(xiàn) (4)指令的執(zhí)行速度:間址尋址方式慢 (5)
31、對數(shù)組運(yùn)算的支持:變址尋址方式比較好 自動(dòng)變址: 在訪問間接地址時(shí),地址自動(dòng)增減 前變址與后變址: 變址與間址混合時(shí) 前變址尋址方式: EA (X) A) 后變址尋址方式: EA (X) (A) 2.2.3 定位方式 程序的主存物理地址在什么時(shí)間確定?采用什 么方式來實(shí)現(xiàn)? 程序需要定位的主要原因: 程序的獨(dú)立性 程序的模塊化設(shè)計(jì) 數(shù)據(jù)結(jié)構(gòu)在程序運(yùn)行過程中,其大小往往是變 化的 有些程序本身很大,大于分配給它的主存物理 空間 主要的定位方式 直接定位方式: 在程序裝入主存儲(chǔ)器之前,程 序中的指令和數(shù)據(jù)的主存物理就已經(jīng)確定了的 稱為直接定位方式。 靜態(tài)定位: 在程序裝入主存儲(chǔ)器的過程中隨即 進(jìn)行
32、地址變換,確定指令和數(shù)據(jù)的主存物理地 址的稱為靜態(tài)定位方式。 動(dòng)態(tài)定位: 在程序執(zhí)行過程中,當(dāng)訪問到相應(yīng) 的指令或數(shù)據(jù)時(shí)才進(jìn)行地址變換,確定指令和 數(shù)據(jù)的主存物理地址的稱為動(dòng)態(tài)定位方式。 2.3 指令格式的優(yōu)化設(shè)計(jì) 主要目標(biāo):節(jié)省程序的存儲(chǔ)空間 指令格式盡量規(guī)整,便于譯碼 2.3.1 指令的組成 2.3.2 操作碼的優(yōu)化設(shè)計(jì) 2.3.3 地址碼的優(yōu)化設(shè)計(jì) 2.3.4 指令格式設(shè)計(jì)舉例 2.3.1 指令的組成 一般的指令主要由兩部分組成: 操作碼和地址碼 地址碼通常包括三部分內(nèi)容: 地址: 地址碼、立即數(shù)、寄存器、變址寄存器 地址的附加信息: 偏移量、塊長度、跳距 尋址方式: 直接尋址、間接尋址
33、、立即數(shù)尋址、 變址尋址、相對尋址、寄存器尋址 操作碼 ( OPC ) 地址碼 ( A ) 操作碼主要包括兩部分內(nèi)容: 操作種類: 加、減、乘、除、數(shù)據(jù)傳送、移 位、轉(zhuǎn)移、輸入輸出、程序控制、處理機(jī)控 制等 操作數(shù)描述: 數(shù)據(jù)的類型: 定點(diǎn)數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù)、字符、 字符串、邏輯數(shù)、向量 進(jìn)位制: 2進(jìn)制、 10進(jìn)制、 16進(jìn)制 數(shù)據(jù)字長: 字、半字、雙字、字節(jié) 2.3.2 操作碼的優(yōu)化表示 操作碼的三種編碼方法: 固定長度、 Huffman編碼、擴(kuò)展編碼 優(yōu)化操作碼編碼的目的: 節(jié)省程序存儲(chǔ)空間 例如: Burroughs公司的 B-1700機(jī) 操作碼編碼方式 整個(gè)操作系統(tǒng)所用 指令的操作碼總
34、位數(shù) 改進(jìn)的百分比 8 位 固 定長編碼 301,248 0 4 - 6 - 10 擴(kuò)展編碼 184,966 39 Huffman 編碼 172,346 43 1. 固定長操作碼 定長定域 : IBM公司的大中型機(jī):最左邊 8位為操作碼 Intel公司的 Intanium處理機(jī): 14位定長操作碼 許多 RISC處理機(jī)采用定長操作碼 主要優(yōu)點(diǎn) : 規(guī)整 譯碼簡單 主要缺點(diǎn) : 浪費(fèi)信息量 (操作碼的總長位數(shù)增加) H p pi i n i 2 1 lo g R p p n i i i n 1 2 1 2 lo g lo g 2. Huffman編碼法 1952年由 Huffman首先提出 操作
35、碼的 最短平均長度 可通過如下公式計(jì)算: pi表示第 i種操作碼在程序中出現(xiàn)的概率 固定長編碼相對于 Huffman編碼的 信息冗余量 : 必須知道每種操作碼在程序中出現(xiàn)的概率 指令序號(hào) I 1 I 2 I 3 I 4 I 5 I 6 I 7 出現(xiàn)的概率 0.45 0.30 0.15 0.05 0.03 0.01 0.01 例: 假設(shè)一臺(tái)模型計(jì)算機(jī)共有 7種不同的操作碼, 如果采用固定長操作碼需要 3位。已知各種操 作碼在程序中出現(xiàn)的概率如下表,計(jì)算采用 Huffman編碼法的操作碼平均長度,并計(jì)算固 定長操作碼和 Huffman操作碼的信息冗余量。 解答: 利用 Huffman樹進(jìn)行操作碼編
36、碼 (又稱最小概率合并法) 把所有指令按照操作碼在程序中出現(xiàn)的概率 大小,自左向右順序排列。 選取兩個(gè)概率最小的結(jié)點(diǎn)合并成一個(gè)概率值 是二者之和的新結(jié)點(diǎn),并把這個(gè)新結(jié)點(diǎn)與其 它還沒有合并的結(jié)點(diǎn)一起形成一個(gè)新的結(jié)點(diǎn) 集合。 在新結(jié)點(diǎn)集合中選取兩個(gè)概率最小的結(jié)點(diǎn)進(jìn) 行合并,如此繼續(xù)進(jìn)行下去,直至全部結(jié)點(diǎn) 合并完畢。 最后得到的根結(jié)點(diǎn)的概率值為 1。 每個(gè) 新 結(jié)點(diǎn)都有兩個(gè)分支,分別用帶有箭頭 的線表示,并分別用一位代碼 “ 0”和 “ 1”標(biāo) 注。 從根結(jié)點(diǎn)開始,沿尖頭所指方向?qū)ふ业竭_(dá)屬 于該指令概率結(jié)點(diǎn)的最短路徑,把沿線所經(jīng) 過的代碼排列起來就得到了這條指令的操作 碼編碼。 0 .4 5 0 .
37、3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 利用 Huffman樹進(jìn)行操作碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 利用 Huffman樹進(jìn)行操作碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 利用 Huffman樹進(jìn)行操作碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 0 .1 0 利用 Huffman樹進(jìn)行操作
38、碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 0 .1 0 0 .2 5 利用 Huffman樹進(jìn)行操作碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 0 .1 0 0 .2 5 0 .5 5 利用 Huffman樹進(jìn)行操作碼編碼 0 .4 5 0 .3 0 0 .1 5 0 .0 5 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 0 .1 0 0 .2 5 0 .5 5 1 .0 0 利用 Huf
39、fman樹進(jìn)行操作碼編碼 0 1 0 1 0 1 0 1 0 1 0 1 0 .4 5 0 .3 0 0 .1 5 0. 05 0 .0 3 0 .0 1 0 .0 1 0 .0 2 0 .0 5 0 .1 0 0 .2 5 0 .5 5 1 .0 0 利用 Huffman樹進(jìn)行操作碼編碼 指令序號(hào) 出現(xiàn)的概率 Huffman 編碼法 操作碼長度 I 1 0.45 0 1 位 I 2 0.30 1 0 2 位 I 3 0.15 1 1 0 3 位 I 4 0.05 1 1 1 0 4 位 I 5 0.03 1 1 1 1 0 5 位 I 6 0.01 1 1 1 1 1 0 6 位 I 7 0
40、.01 1 1 1 1 1 1 6 位 Huffman操作碼編碼 H p li i i 1 7 7 1 2 log i ii ppH 解:采用 Huffman編碼法的操作碼平均長度為: 0.45 1 0.30 2 0.15 3 0.05 4 0.03 5 0.01 6 0.01 6 1.97(位) 操作碼的最短平均長度為: 0.45 1.152 0.30 1.737 0.15 2.737 0.05 4.322 0.03 5.059 0.01 6.644 0.01 6.644 1.95(位) %353 97.11 7l og1 2 HR R 1 1 951 97 1 0%. . 采用 3位固定長
41、操作碼的信息冗余量為: Huffman編碼法的信息冗余量僅為: 與 3位固定長操作碼的信息冗余量 35相比要 小得多 R 1 1 952 00 2 5%. . 3. 擴(kuò)展編碼法 Huffman操作碼的主要缺點(diǎn): 操作碼長度很不規(guī)整,硬件譯碼困難 與地址碼共同組成固定長的指令比較困難 擴(kuò)展編碼法 : 由固定長操作碼與 Huffman編碼 法相結(jié)合形成 例 2.18: 將例 2.17改為 1-2-3-5擴(kuò)展編碼法,操作 碼最短平均長度為: H 0.45 1 0.30 2 0.15 3 (0.05 0.03 0.01 0.01) 5 2.00 信息冗余量為: R 1 1 952 20 11 4%.
42、. 例: 將例 2.17改為 2-4等長擴(kuò)展編碼法,操作碼 最短平均長度為: H (0.45 0.30 0.15) 2 (0.05 0.03 0.01 0.01) 4 2.20 2-4等長擴(kuò)展編碼法信息冗余量為: 7 條指令的操作碼擴(kuò)展編碼法 指令序號(hào) 出現(xiàn)的概率 1-2-3-5 擴(kuò)展編碼 2-4 等長擴(kuò)展編碼 I 1 0.45 0 0 0 I 2 0.30 1 0 0 1 I 3 0.15 1 1 0 1 0 I 4 0.05 1 1 1 0 0 1 1 0 0 I 5 0.03 1 1 1 0 1 1 1 0 1 I 6 0.01 1 1 1 1 0 1 1 1 0 I 7 0.01 1
43、1 1 1 1 1 1 1 1 平均長度 2.0 2.2 信息冗余量 2.5 11.4 操作碼 等長擴(kuò)展編碼法 操作碼編碼 說 明 操作碼編碼 說 明 0000 0001 1110 4 位長度的 操作碼共 15 種 0000 0001 0111 4 位長度的 操作碼共 8 種 1111 0000 1111 0001 1111 1110 8 位長度的 操作碼共 15 種 1000 0000 1000 0001 1111 0111 8 位長度的 操作碼共 64 種 1111 1111 0000 1111 1111 0001 1111 1111 1110 12 位長度的 操作碼共 16 種 1000
44、 1000 0000 1000 1000 0001 1111 1111 0111 12 位長度的操 作碼共 512 種 等長 15/15/15 擴(kuò)展法 等長 8/64/512 擴(kuò)展法 不等長操作碼擴(kuò)展編碼法 ( 4 - 6 - 10 擴(kuò)展編碼 ) 各種不同長度操作碼的指令 編碼方法 4 位操作碼 6 位操作碼 10 位操作碼 指令種類 15/3/16 15 3 16 34 8/31/16 8 31 16 55 8/30/32 8 30 32 70 8/16/256 8 16 256 280 4/32/256 4 32 256 292 2.3.3 地址碼的優(yōu)化表示 1. 地址碼個(gè)數(shù)的選擇 地址碼
45、個(gè)數(shù)通常有 3個(gè)、 2個(gè)、 1個(gè)及個(gè) 等 4種情況 評價(jià)指令中地址碼個(gè)數(shù)應(yīng)該取多少的標(biāo)準(zhǔn)主要有兩個(gè): 程序存儲(chǔ)容量 ,包括操作碼和地址碼 程序執(zhí)行速度 ,以程序執(zhí)行過程中訪問主存的信息量 代表 通過一個(gè)典型例子來分析: fe dcba x 例如:計(jì)算一個(gè)典型的算術(shù)表達(dá)式 : 用三地址指令編寫的程序如下: MUL X, A, B ;X(A) (B) ADD X, X, C ;X(X) (C) SUB X, X, D ;分子的計(jì)算結(jié)果在中 ADD Y, E, F ;計(jì)算分母 ,存入 Y DIV X, X, Y ;最后結(jié)果在 X單元中 用普通二地址指令編寫的程序: MOVE X, A ;復(fù)制臨時(shí)變量
46、到 X中 MUL X, B ADD X, C SUB X, D ;X中存放分子運(yùn)算結(jié)果 MOVE Y, E ;復(fù)制臨時(shí)變量到 Y中 ADD Y, F ;Y中存放分母運(yùn)算結(jié)果 DIV X, Y ;最后結(jié)果在 X單元中 用多寄存器結(jié)構(gòu)的二地址指令編寫程序: MOVE R1, A ;操作數(shù) a取到寄存器 R1中 MUL R1, B ADD R1, C SUB R1, D ;R1中存放分子運(yùn)算結(jié)果 MOVE R2, E ADD R2, F ;R2中存放分母運(yùn)算結(jié)果 DIV R1, R2 ;最后結(jié)果在 R1中 MOVE X, R1 ;最后結(jié)果存入 X中 用一地址指令編寫的程序: LOAD E ;先計(jì)算分
47、母, ;取一個(gè)操作數(shù)到累加器中 ADD F ;分母運(yùn)算結(jié)果在累加器中 STORE X ;保存分母運(yùn)算結(jié)果到 X中 LOAD A ;開始計(jì)算分子 MUL B ADD C SUB D ;累加器中是分子運(yùn)算結(jié)果 DIV X ;最后運(yùn)算結(jié)果在累加器中 STORE X ;保存最后運(yùn)算結(jié)果到 X中 用 0地址指令編寫程序: ab*c+d-ef+/ PUSH A ;操作數(shù) a壓入堆棧 PUSH B ;操作數(shù) b壓入堆棧 MUL ;棧頂兩數(shù)相乘 ,結(jié)果壓回堆頂 PUSH C ADD PUSH D SUB ;棧頂是分子運(yùn)算的結(jié)果 PUSH E PUSH F ADD DIV ;棧頂是最后運(yùn)算的結(jié)果 POP X ;
48、保存最后運(yùn)算結(jié)果 用不同地址個(gè)數(shù)指令編寫的程序 的存儲(chǔ)容量和執(zhí)行速度 地址數(shù)目 指令條數(shù) 訪存次數(shù) 程序存儲(chǔ)量 執(zhí)行速度 ( 訪存信息量 ) 三地址 5 20 5P 15A 65B 5P 15A 15D 185B 二地址 7 26 7P 14A 63B 7P 14A 19D 215B 一地址 9 18 9P 9 A 45B 9P 9 A 9 D 117B 零地址 12 41 12P 7A 40B 12P 7A 29D 272B 二地址 寄存器型 8 15 8P+7A+9R 40B 8P+7A+9R+7D 96B P 表 示操作碼長度, A 表示地址碼長度, D 表示數(shù)據(jù)長度, R 表示通用 寄
49、存器的地址碼長度, B 表示字節(jié)數(shù)。并?。?D 2A 8P 16R 8B 不同地址個(gè)數(shù)指令 的特點(diǎn)及適用場合 地址數(shù)目 程序 的長度 程序 存儲(chǔ)量 程序 執(zhí) 行速度 適用場合 三地址 最短 最大 一般 向量,矩陣運(yùn)算為主 二地址 較短 很大 很低 一般不宜采用 一地址 較長 較大 較快 連續(xù)運(yùn)算 , 硬件結(jié)構(gòu)簡單 零地址 最長 最小 最低 嵌套,遞歸,變量較多 二地址 寄存器型 一般 最小 最快 多累加器,數(shù)據(jù)傳送較多 關(guān)于地址碼個(gè)數(shù)結(jié)論: 對于一般商用處理機(jī),采用多寄存器結(jié)構(gòu)的 二地址指令是最理想的。 如果強(qiáng)調(diào)硬件結(jié)構(gòu)簡單,并且以連續(xù)運(yùn)算 (如求累加和等)為主,宜采用一地址結(jié)構(gòu)。 對于以向量
50、、矩陣運(yùn)算為主的處理機(jī),最好 采用三地址結(jié)構(gòu)。 部分 RISC處理機(jī)也采用三地址指令。 對于解決遞歸問題為主的處理機(jī),宜采用零 地址結(jié)構(gòu)。 編程容易、節(jié)省程序存儲(chǔ)量。 2. 縮短地址碼長度的方法 用一個(gè)短地址碼表示一個(gè)大地址空間 用間址尋址方式縮短地址碼長度 方法:在主存儲(chǔ)器的低端開辟一個(gè)專門存放 間接地址的區(qū)域 用變址尋址方式縮短地址碼長度 變址尋址方式中的地址偏移量比較短, 用寄存器間接尋址方式縮短地址碼長度 例如: 16個(gè)間址寄存器,用 4位地址碼就能表 示很長的邏輯地址空間。 2.4 指令系統(tǒng)的功能設(shè)計(jì) 2.4.1 基本指令系統(tǒng) 通用計(jì)算機(jī)必須有 5類基本指令 2.4.2 指令系統(tǒng)的性
51、能 完整性、規(guī)整性、高效率和兼容性 2.4.3 指令系統(tǒng)的優(yōu)化設(shè)計(jì) CISC、 RISC和 VLIW 2.4.1 基本指令系統(tǒng) 通用計(jì)算機(jī)必須有類基本指令 數(shù)據(jù)傳送類指令 運(yùn)算類指令 程序控制指令 輸入輸出指令 處理機(jī)控制和調(diào)試指令 1. 數(shù)據(jù)傳送類指令 由如下三個(gè)主要因素決定: (1)數(shù)據(jù)存儲(chǔ)設(shè)備 的種類 (2)數(shù)據(jù)單位 :字、字節(jié)、位、數(shù)據(jù)塊等 (3)采用的尋址方式 例如,考慮數(shù)據(jù)存儲(chǔ)設(shè)備的種類: 寄存器 寄存器 寄存器 主存儲(chǔ)器 寄存器 堆棧 主存儲(chǔ)器 寄存器 主存儲(chǔ)器 主存儲(chǔ)器 主存儲(chǔ)器 堆棧 堆棧 寄存器 堆棧 主存儲(chǔ)器 2. 運(yùn)算類指令 : 考慮四個(gè)因數(shù)的組合: 操作種類 : 加、
52、減、乘、除、與、或、非、異 或、比較、移位、檢索、轉(zhuǎn)換、匹配、清除、 置位等 數(shù)據(jù)表示 : 定點(diǎn)、浮點(diǎn)、邏輯、十進(jìn)制、字符 串、向量等 數(shù)據(jù)長度 : 字、雙字、半字、字節(jié)、位、數(shù)據(jù) 塊等 數(shù)據(jù)存儲(chǔ)設(shè)備 : 寄存器、主存儲(chǔ)器、堆棧等 以寄存器加法指令為例,一般設(shè)置如下幾種: 寄存器 -寄存器型的 定點(diǎn)單字長加法指令 寄存器 -寄存器型的 定點(diǎn)雙字長加法指令 寄存器 -寄存器型的 定點(diǎn)半字加法指令 寄存器 -寄存器型的 字節(jié)加法指令 寄存器 -寄存器型的 浮點(diǎn)單字長加法指令 寄存器 -寄存器型的 浮點(diǎn)雙字長加法指令 寄存器 -寄存器型的 單字長邏輯加法指令 寄存器 -寄存器型的 定點(diǎn)向量加法指令
53、寄存器 -寄存器型的 浮點(diǎn)向量加法指令 以移位指令為例: 需要組合以下三個(gè)因素: (1)移位方向: 左移 (L)、右移 (R) (2)移位種類: 算術(shù)移位 (A)、邏輯移位 (L)、 循環(huán)移位 (R) (3)移位長度: 單字長 (S)、雙字長 (D) 組合起來共有: 3 2 2 12種, 其中,邏輯左移與算術(shù)左移相同 一般機(jī)器中要設(shè)置 10條移位指令 一般機(jī)器中要設(shè)置 10條移位指令 SLAS 單字長算術(shù)左移 SRAS 單字長算術(shù)右移 SLLS(SRLS)單字長邏輯左移 ,單字長算術(shù)左移 SLRS 單字長循環(huán)左移 SRRS 單字長循環(huán)右移 SLAD 雙字長算術(shù)左移 SRAD 雙字長算術(shù)右移 S
54、LLD(SRLD)雙字長邏輯左移 ,雙字長算術(shù)左移 SLRD 雙字長循環(huán)左移 SRRD 雙字長循環(huán)右移 3. 程序控制指令 有多種轉(zhuǎn)移指令 : 無條件轉(zhuǎn)移,條件轉(zhuǎn)移指令 調(diào)用與返回指令 循環(huán)控制指令 轉(zhuǎn)移條件: 零 (Z)、正負(fù) (N)、進(jìn)位 (C)、溢出 (V)及其組合 由條件轉(zhuǎn)移指令之前的指令產(chǎn)生條件碼 由條件轉(zhuǎn)移指令本身產(chǎn)生轉(zhuǎn)移條件 多組條件碼 條件轉(zhuǎn)移指令舉例 一般條件轉(zhuǎn)移指令 條件碼由轉(zhuǎn)移指令之前的指令產(chǎn)生, 對指令流水線的影響小。 例如 : BEQ ADR ;等于零轉(zhuǎn)移 BLS ADR ;小于轉(zhuǎn)移 BLEQ ADR ;小于等于轉(zhuǎn)移 BLSU ADR ;不帶符號(hào)小于轉(zhuǎn)移 BLEQU
55、ADR ;不帶符號(hào)小于等于轉(zhuǎn)移 BCC ADR ;沒有進(jìn)位轉(zhuǎn)移 BVC ADR ;沒有溢出轉(zhuǎn)移 復(fù)合條件轉(zhuǎn)移指令 代替 2條指令,首先進(jìn)行運(yùn)算,并根據(jù)運(yùn)算的結(jié) 果決定是否轉(zhuǎn)移 不需要條件碼,與高級語言一致。 例如: DNB R ADR ;R(R) -1,如果 R0 轉(zhuǎn)移 INB R ADR ;R(R)+1, 如果 R0 轉(zhuǎn)移 JEQ R1, R2, ADR ;如果 (R1)=(R2)轉(zhuǎn)移 JAD EQ, Rd, Rs, ADR ;Rd(Rd)+(Rs), ;如果 (Rd)=0轉(zhuǎn)移 循環(huán)控制指令 用 1條指令完成循環(huán)的控制 代替 3條指令的功能:運(yùn)算、比較和轉(zhuǎn)移。 例如: JL Rs, Rz,
56、Ri, ADR Rs中存放循環(huán)變量, Rz中存放循環(huán)終值, Ri中 存放循環(huán)的步長。 地址個(gè)數(shù)太多時(shí),可以把其中的 1個(gè)或幾個(gè)地址 隱含起來。例如,在 IBM370下列機(jī)中, Ri 隱含,循環(huán)步長放在與 Rz緊相鄰的下一寄存 器中。 隱含轉(zhuǎn)移指令 應(yīng)用場合: 用于特殊的 IF.THEN.結(jié)構(gòu)中, THEN部分只有一條指令 實(shí)現(xiàn)方法: 把 IF條件取反 ,如果取反后的條件成 立則取消下條指令,否則執(zhí)行下條指令。 例子: IF (a b)THEN b b 1 COMP =,Ra,Rb ;若 (Ra)=(Rb)則取消 INC Rb 達(dá)到的效果: 不需要專門的轉(zhuǎn)移指令, 程序執(zhí)行效率高。 程序調(diào)用和返
57、回指令 本身可以不帶條件,也可以帶有條件 CALL 轉(zhuǎn)入子程序 RETURN 從子程序返回 CALL CC 當(dāng)條件 CC滿足時(shí)轉(zhuǎn)入子程序 RETURN CC 當(dāng)條件 CC滿足時(shí)從子程序返回 中斷控制指令: 開中斷、關(guān)中斷 改變屏蔽 中斷返回 自陷等 4. 輸入輸出指令 啟動(dòng)、停止、測試設(shè)備,數(shù)據(jù)輸入、輸出等 采用單一的直接尋址方式, 在多用戶或多任務(wù)環(huán)境下,輸入輸出指令屬于 特權(quán)指令 5. 處理機(jī)控制和調(diào)試指令 處理機(jī)狀態(tài)切換指令, 處理機(jī)有多個(gè)狀態(tài) 硬件和軟件的調(diào)試指令 硬件調(diào)試指令:開關(guān)狀態(tài)讀取等 軟件調(diào)試指令:斷點(diǎn)設(shè)置、跟蹤,自陷指令等 2.4.2 指令系統(tǒng)的性能 完整性、規(guī)整性、高效率
58、和兼容性 1. 完整性是指應(yīng)該具備的基本指令種類 如: 通用計(jì)算機(jī)必須有類基本指令 2. 規(guī)整性包括對稱性和均勻性 對稱性: 所有的寄存器同等對待 操作碼的設(shè)置等都要對稱,如 A-B與 B-A 均勻性: 不同的數(shù)據(jù)類型、字長、存儲(chǔ)設(shè)備、 操作種類要設(shè)置相同的指令 3. 高效率: 指令的執(zhí)行速度要快 指令的使用頻度要高 各類指令要有一定的比例 如:運(yùn)算類指令占 40%以上, 數(shù)據(jù)傳送類指令占 30%等。 4. 兼容性: 在同一系列機(jī)內(nèi),指令系統(tǒng),包括尋址方式和 數(shù)據(jù)表示等保持基本不變; 可以適當(dāng)增加指令、增加尋址方式,增加數(shù)據(jù) 表示等;但不能減少任何已有的 。 2.4.3 指令系統(tǒng)的優(yōu)化設(shè)計(jì) 優(yōu)
59、化指令系統(tǒng)設(shè)計(jì)的 3個(gè)階段: CISC:復(fù)雜指令系統(tǒng) 60年代至 70年代中期 RISC:精簡指令系統(tǒng) 70年代后期至現(xiàn)在 VLIW: 80年代初期至現(xiàn)在 關(guān)鍵在軟硬件的功能分配,系統(tǒng)的綜合性能 時(shí)間與空間;執(zhí)行、編譯、編寫時(shí)間。 1. 復(fù)雜指令系統(tǒng)計(jì)算機(jī) CISC(Complex Instruction Set Computer) 方法: 用一條指令代替一串指令 增加新的指令 增強(qiáng)指令功能,設(shè)置功能復(fù)雜的指令 增加尋址方式 增加數(shù)據(jù)表示方式 優(yōu)化的途徑: 面向目標(biāo)代碼 面向高級語言 面向操作系統(tǒng) 2. 精簡指令系統(tǒng)計(jì)算機(jī) RISC(Reduced Instruction Set Comput
60、er) 只保留功能簡單的指令 , 功能較復(fù)雜的指令用軟件實(shí)現(xiàn), 提高流水線效率 3. 超長指令字 VLIW (Very Long Instruction Word) 一種顯式指令級并行指令系統(tǒng) 二維程序結(jié)構(gòu) 指令級并行度高 2.5 RISC指令系統(tǒng) 三類指令系統(tǒng): CISC、 RISC、 VLIW 2.5.1 從 CISC到 RISC 2.5.2 RISC的定義與特點(diǎn) 2.5.3 RISC思想的精華 2.5.4 RISC的關(guān)鍵技術(shù) 2.5.1 從 CISC到 RISC 70年代,指令系統(tǒng)已經(jīng)非常復(fù)雜 機(jī) 型 (生產(chǎn)年代) IBM370/168 ( 1973 ) VAX-11 ( 1978 )
61、iAPX 432 ( 1982 ) Dorado ( 1978 ) 指令種類 208 303 222 270 微程序容量 420K 480K 64K 136K 指令長度 16-48 16-456 6-321 8-24 采用的工藝 ECL MSI TTL MSI NMOS VLSI ECL MSI 指令操作類型 存儲(chǔ)器 - 存儲(chǔ)器 存儲(chǔ)器 - 寄存器 寄存器 - 寄存器 存儲(chǔ)器 - 存儲(chǔ)器 存儲(chǔ)器 - 寄存器 寄存器 - 寄存器 面向堆棧 存儲(chǔ)器 - 存儲(chǔ)器 面向堆棧 Cache 容量 64KB 64KB 0 64KB 1975年, IBM公司率先組織力量開始研究指令系 統(tǒng)的合理性問題 1979
62、年研制出世界上第一臺(tái)采用 RISC思想的計(jì) 算機(jī) IBM 801 1986年, IBM正式推出采用 RISC體系結(jié)構(gòu)的工作 站 IBM RT PC CISC指令系統(tǒng)存在的問題: 1979年, 美國加洲伯克利分校 David Patterson 提出: 1. 20與 80規(guī)律 在 CISC中,大約 20的指令占據(jù)了 80的處理 機(jī)執(zhí)行時(shí)間。 例如: 8088處理機(jī)的指令種類大約 100種 前 11種 (11 )指令的使用頻度已經(jīng)超過 80 前 8種 (8 )指令的運(yùn)行時(shí)間已經(jīng)超過 80 前 20種 (20 )指令:使用頻度達(dá)到 91.1 運(yùn)行時(shí)間達(dá)到 97.72 其余 80的指令:使用頻度只有
63、8.9 2.28的處理機(jī)運(yùn)行時(shí)間 Intel 8088 處理機(jī)指令系統(tǒng)使用頻度和執(zhí)行時(shí)間統(tǒng)計(jì) ( C 語言編譯程序和 PROLOG 解釋程序) 使用頻度 執(zhí)行時(shí)間 序號(hào) 指令 累計(jì) 序號(hào) 指令 累 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 MOV PUSH CMP JMPcc ADD POP RET CALL JUMP SUB INC LES REPN IMUL DEC XOR REPNZ CLD LOOPcc TEST 24.85 10.36 10.28 9.03 6.80 4.14 3.92 3.89 2.70 2.43 2.37
64、 1.98 1.92 1.69 1.37 1.13 0.78 0.54 0.52 0.40 24.85 35.21 45.49 54.52 61.32 65.46 69.38 73.27 75.97 78.40 80.77 82.75 84.67 86.36 87.73 88.86 89.64 90.18 90.70 91.10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IMUL MOV PUSH JMPcc CMP CALL RET ADD JMP LES POP DEC SUB XOR INC LOOPcc LDS CMPS MO
65、VS JCXZ 19.55 17.44 11.11 10.55 7.80 7.27 4.85 3.27 3.26 2.83 2.61 1.49 1.18 1.04 0.99 0.64 0.64 0.44 0.39 0.37 19.55 36.99 48.10 58.65 66.45 73.72 78.57 81.84 85.10 87.93 90.54 92.0 3 93.21 94.25 95.24 95.88 96.52 96.96 97.35 97.72 2. VLSI技術(shù)的發(fā)展引起的問題 VLSI工藝要求規(guī)整性, RISC正好適應(yīng)了 VLSI 工藝的要求 主存與控存的速度相當(dāng) 簡單指令
66、沒有必要用微程序?qū)崿F(xiàn),復(fù)雜指令 用微程序?qū)崿F(xiàn)與用簡單指令組成的子程序?qū)?現(xiàn)沒有多大區(qū)別 由于 VLSI的集成度迅速提高,使得生產(chǎn)單芯片 處理機(jī)成為可能。 3. 軟硬件的功能分配問題 復(fù)雜的指令使指令的執(zhí)行周期大大加長 CISC處理機(jī)的指令平均執(zhí)行周期都在 4以上 在 CISC中,增強(qiáng)指令系統(tǒng)功能,簡化了軟件, 硬件復(fù)雜了 1981年, Patterson等人研制了 32位的 RISC I微處 理器,總共 31種指令, 3種數(shù)據(jù)類型,兩種尋 址方式,研制周期 10個(gè)月,比當(dāng)時(shí)最先進(jìn)的 MC68000和 Z8002快 3至 4倍 1983年,又研制了 RISC II,指令種類擴(kuò)充到 39 種,單一變址尋址方式,通用寄存器 138個(gè) 2.5.2 RISC的定義與特點(diǎn) 卡內(nèi)基梅隆 (Carnegie Mellon)大學(xué)論述 RISC的 特點(diǎn)如下: (1)大多數(shù)指令在單周期內(nèi)完成 (2)LOAD/STORE結(jié)構(gòu) (3)硬布線控制邏輯 (4)減少指令和尋址方式的種類 (5)固定的指令格式 (6)注重編譯的優(yōu)化 90年代初 , IEEE的 Michael Slater對 RISC描述: (1)RIS
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植樹問題課件PPT
- 實(shí)驗(yàn)九蕨類植物觀察和解剖
- 護(hù)理禮儀講解
- 初中物理_液體的壓強(qiáng)課件
- 武漢市【人教部編版】2019年秋語文一年級上冊:統(tǒng)編版一年級上冊語文期末總復(fù)習(xí)資料課件
- 護(hù)士管理法律制度
- 核心肌群的功能和訓(xùn)練方式
- 在尋找野敗的日子里-PPT
- 安全培訓(xùn)遠(yuǎn)離大貨車
- 《10000以內(nèi)數(shù)的認(rèn)識(shí)(例5、例6)》教學(xué)課件-PPT
- 思達(dá)心臟醫(yī)院心血管病峰會(huì)邀請函
- 臨藥咳嗽和咳痰呼吸困難
- 用友通財(cái)務(wù)培訓(xùn)教程
- 頭頂球與運(yùn)球技術(shù)動(dòng)作分析
- 新城幼兒園中班科學(xué)有趣的石頭課件