第4章計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)_第1頁(yè)
第4章計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)_第2頁(yè)
第4章計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)_第3頁(yè)
第4章計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)_第4頁(yè)
第4章計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩152頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、http:/ 4章章 運(yùn)算方法與運(yùn)算器運(yùn)算方法與運(yùn)算器 定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn)定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn)4.14.1 定點(diǎn)運(yùn)算器的組成與結(jié)構(gòu)定點(diǎn)運(yùn)算器的組成與結(jié)構(gòu) 定點(diǎn)數(shù)的乘法運(yùn)算及實(shí)現(xiàn)定點(diǎn)數(shù)的乘法運(yùn)算及實(shí)現(xiàn)4.24.2 定點(diǎn)數(shù)除法運(yùn)算及實(shí)現(xiàn)定點(diǎn)數(shù)除法運(yùn)算及實(shí)現(xiàn)4.4 浮點(diǎn)運(yùn)算及運(yùn)算器浮點(diǎn)運(yùn)算及運(yùn)算器4.54.5 浮點(diǎn)運(yùn)算器舉例浮點(diǎn)運(yùn)算器舉例 4.64.6 本章小結(jié)本章小結(jié)344.1 4.1 定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn)定點(diǎn)數(shù)的加減運(yùn)算及實(shí)現(xiàn) 補(bǔ)碼加減運(yùn)算與運(yùn)算器補(bǔ)碼加減運(yùn)算與運(yùn)算器 機(jī)器數(shù)的移位運(yùn)算機(jī)器數(shù)的移位運(yùn)算 移碼加減運(yùn)算與判溢移碼加減運(yùn)算與判溢 十進(jìn)制加法運(yùn)算十進(jìn)制加法運(yùn)算一

2、一二二三三四四 MIPSMIPS的加減運(yùn)算的加減運(yùn)算五五5一、補(bǔ)碼加減運(yùn)算與運(yùn)算器一、補(bǔ)碼加減運(yùn)算與運(yùn)算器 補(bǔ)碼加減運(yùn)算方法補(bǔ)碼加減運(yùn)算方法 補(bǔ)碼加減運(yùn)算的溢出判補(bǔ)碼加減運(yùn)算的溢出判斷斷2 2 補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn)補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn)3 31 161 1、補(bǔ)碼加減運(yùn)算方法、補(bǔ)碼加減運(yùn)算方法補(bǔ)碼的加減運(yùn)算的公式是補(bǔ)碼的加減運(yùn)算的公式是:nX+YX+Y補(bǔ)補(bǔ) = X= X補(bǔ)補(bǔ) + Y+ Y補(bǔ)補(bǔ)nX-YX-Y補(bǔ)補(bǔ) = X= X補(bǔ)補(bǔ) + -Y+ -Y補(bǔ)補(bǔ)特點(diǎn):特點(diǎn):n使用補(bǔ)碼進(jìn)行加減運(yùn)算,使用補(bǔ)碼進(jìn)行加減運(yùn)算,符號(hào)位和數(shù)值位一樣參符號(hào)位和數(shù)值位一樣參加運(yùn)算加運(yùn)算。n補(bǔ)碼的減法可以用加法來(lái)實(shí)現(xiàn)補(bǔ)碼的減法可

3、以用加法來(lái)實(shí)現(xiàn),任意兩數(shù)之差的,任意兩數(shù)之差的補(bǔ)碼等于被減數(shù)的補(bǔ)碼與減數(shù)相反數(shù)的補(bǔ)碼之和。補(bǔ)碼等于被減數(shù)的補(bǔ)碼與減數(shù)相反數(shù)的補(bǔ)碼之和。注意:注意:該公式不適合任何其他機(jī)器數(shù)編碼(原碼、反碼、該公式不適合任何其他機(jī)器數(shù)編碼(原碼、反碼、移碼)。移碼)。7求補(bǔ)運(yùn)算:求補(bǔ)運(yùn)算:YY補(bǔ)補(bǔ) -Y -Y補(bǔ)補(bǔ) 求補(bǔ)規(guī)則:求補(bǔ)規(guī)則:將將YY補(bǔ)補(bǔ)包括符號(hào)位在內(nèi)每一位取反,包括符號(hào)位在內(nèi)每一位取反,末位加末位加1 1。n若若YY補(bǔ)補(bǔ) = Y0= Y0,Y1Y1Yn Yn ,則:,則:n若若YY補(bǔ)補(bǔ) = Y0.Y1 = Y0.Y1Yn Yn ,則:,則:1YYY-Yn10 補(bǔ)補(bǔ)1YYY-Yn1000 . 0 補(bǔ)補(bǔ)例

4、:例:XX補(bǔ)補(bǔ) =0.1101 =0.1101,則:,則: XX補(bǔ)補(bǔ) = = ? Y Y補(bǔ)補(bǔ) =1.1101 =1.1101,則:,則: YY補(bǔ)補(bǔ) = = ?8補(bǔ)碼加減運(yùn)算舉例補(bǔ)碼加減運(yùn)算舉例例:例:已知已知X=+1011X=+1011,Y=-0100Y=-0100,用補(bǔ)碼計(jì)算,用補(bǔ)碼計(jì)算X+YX+Y和和X-YX-Y。n寫(xiě)出補(bǔ)碼:寫(xiě)出補(bǔ)碼: X X補(bǔ)補(bǔ) =0,1011 Y =0,1011 Y補(bǔ)補(bǔ) =1,1100 =1,1100 -Y -Y補(bǔ)補(bǔ) =0,0100 =0,0100 n 計(jì)算:計(jì)算: 92 2、補(bǔ)碼加減運(yùn)算的溢出判斷、補(bǔ)碼加減運(yùn)算的溢出判斷 溢出溢出: :當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)的表示范圍

5、時(shí),稱(chēng)為當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)的表示范圍時(shí),稱(chēng)為溢溢出出。 對(duì)于加減運(yùn)算,可能發(fā)生溢出的情況:同號(hào)(兩數(shù))對(duì)于加減運(yùn)算,可能發(fā)生溢出的情況:同號(hào)(兩數(shù))相加,或者異號(hào)(兩數(shù))相減。相加,或者異號(hào)(兩數(shù))相減。 確定發(fā)生溢出的情況:確定發(fā)生溢出的情況:n正數(shù)相加,且結(jié)果符號(hào)位為正數(shù)相加,且結(jié)果符號(hào)位為1 1;n負(fù)數(shù)相加,且結(jié)果符號(hào)位為負(fù)數(shù)相加,且結(jié)果符號(hào)位為0 0;n正數(shù)負(fù)數(shù),且結(jié)果符號(hào)位為正數(shù)負(fù)數(shù),且結(jié)果符號(hào)位為1 1;n負(fù)數(shù)正數(shù),且結(jié)果符號(hào)位為負(fù)數(shù)正數(shù),且結(jié)果符號(hào)位為0 0;10常用的判溢方法(補(bǔ)碼加減運(yùn)算)常用的判溢方法(補(bǔ)碼加減運(yùn)算) 單符號(hào)位判溢方法單符號(hào)位判溢方法2 2 n當(dāng)當(dāng)最高有效

6、位最高有效位產(chǎn)生的進(jìn)位和產(chǎn)生的進(jìn)位和符號(hào)位符號(hào)位產(chǎn)生的進(jìn)位產(chǎn)生的進(jìn)位不不同同時(shí),加減運(yùn)算發(fā)生了溢出。時(shí),加減運(yùn)算發(fā)生了溢出。nV VC C1 1CCf f 雙符號(hào)位判溢方法雙符號(hào)位判溢方法nX X和和Y Y采用雙符號(hào)位補(bǔ)碼參加運(yùn)算,正數(shù)的雙符號(hào)采用雙符號(hào)位補(bǔ)碼參加運(yùn)算,正數(shù)的雙符號(hào)位為位為0000,負(fù)數(shù)的雙符號(hào)位為,負(fù)數(shù)的雙符號(hào)位為1111;當(dāng)運(yùn)算結(jié)果的;當(dāng)運(yùn)算結(jié)果的兩兩位符號(hào)位符號(hào)S Sf1f1 S Sf2f2不同不同時(shí)(時(shí)(0101或或1010),發(fā)生溢出。),發(fā)生溢出。 nV V S Sf1f1 S Sf2f2= X= Xf f Y Yf f CCf f S Sf f nS Sf1f1

7、S Sf2f2=01=01,則正溢出;,則正溢出;S Sf1f1 S Sf2f2=10=10,則負(fù)溢出,則負(fù)溢出。 11雙符號(hào)位判溢方法舉例雙符號(hào)位判溢方法舉例例:例:用補(bǔ)碼計(jì)算用補(bǔ)碼計(jì)算X+YX+Y和和X-YX-Y (1 1)X=+1000X=+1000,Y=+1001Y=+1001(2 2)X=-1000X=-1000,Y=1001Y=1001Sf1 Sf2=01,正溢出,正溢出Sf1 Sf2=11,無(wú)溢出,無(wú)溢出Sf1 Sf2=00,無(wú)溢出,無(wú)溢出Sf1 Sf2=10,負(fù)溢出,負(fù)溢出123 3、補(bǔ)碼加減運(yùn)算器、補(bǔ)碼加減運(yùn)算器133 3、補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn)、補(bǔ)碼加減運(yùn)算器的實(shí)現(xiàn) 核心部件

8、:核心部件:一個(gè)普通的二進(jìn)制并行加法器。一個(gè)普通的二進(jìn)制并行加法器。A A:累加器,存放:累加器,存放XX補(bǔ)補(bǔ);B B:寄存器,存放:寄存器,存放YY補(bǔ)補(bǔ); 取反電路取反電路: :n =0 =0時(shí),補(bǔ)碼加法器,將時(shí),補(bǔ)碼加法器,將B B寄存器直接送寄存器直接送入并行加法器入并行加法器; ;n =1 =1時(shí),補(bǔ)碼減法器,將時(shí),補(bǔ)碼減法器,將B B送入并行加法送入并行加法器,同時(shí),并行加法器的最低位產(chǎn)生進(jìn)位,即器,同時(shí),并行加法器的最低位產(chǎn)生進(jìn)位,即B B取取反加反加1 1,此時(shí)并行加法器的運(yùn)算相當(dāng)于,此時(shí)并行加法器的運(yùn)算相當(dāng)于AA補(bǔ)補(bǔ)加加-B-B補(bǔ)補(bǔ) ,完成減法運(yùn)算。,完成減法運(yùn)算。SUBADD

9、 /SUBADD /14二、機(jī)器數(shù)的移位運(yùn)算二、機(jī)器數(shù)的移位運(yùn)算v二進(jìn)制數(shù)據(jù)(真值)每相對(duì)于小數(shù)點(diǎn)左移一位,相當(dāng)二進(jìn)制數(shù)據(jù)(真值)每相對(duì)于小數(shù)點(diǎn)左移一位,相當(dāng)于乘以于乘以2 2;每相對(duì)于小數(shù)點(diǎn)右移一位,相當(dāng)于除以;每相對(duì)于小數(shù)點(diǎn)右移一位,相當(dāng)于除以2 2。1.1.計(jì)算機(jī)中的移位運(yùn)算分為:計(jì)算機(jī)中的移位運(yùn)算分為:n邏輯移位:邏輯移位:對(duì)無(wú)符號(hào)數(shù)據(jù)移位,導(dǎo)致無(wú)符號(hào)數(shù)據(jù)的對(duì)無(wú)符號(hào)數(shù)據(jù)移位,導(dǎo)致無(wú)符號(hào)數(shù)據(jù)的數(shù)值(無(wú)正負(fù))放大或縮小。數(shù)值(無(wú)正負(fù))放大或縮小。 n算術(shù)移位:算術(shù)移位:對(duì)帶符號(hào)數(shù)據(jù)(機(jī)器數(shù))移位,在數(shù)值對(duì)帶符號(hào)數(shù)據(jù)(機(jī)器數(shù))移位,在數(shù)值的絕對(duì)值上進(jìn)行放大或縮小,同時(shí),符號(hào)位必須要的絕對(duì)值上

10、進(jìn)行放大或縮小,同時(shí),符號(hào)位必須要保持不變。保持不變。 n循環(huán)移位:循環(huán)移位:所有的數(shù)據(jù)位在自身范圍內(nèi)進(jìn)行左移或所有的數(shù)據(jù)位在自身范圍內(nèi)進(jìn)行左移或者右移,左移時(shí)最高位移入最低位,右移時(shí)最低位者右移,左移時(shí)最高位移入最低位,右移時(shí)最低位移入最高位。移入最高位。 15二、機(jī)器數(shù)的移位運(yùn)算二、機(jī)器數(shù)的移位運(yùn)算補(bǔ)碼的算術(shù)移位補(bǔ)碼的算術(shù)移位n算術(shù)左移:算術(shù)左移:符號(hào)位不變,高位移出,低位補(bǔ)符號(hào)位不變,高位移出,低位補(bǔ)0 0。為保證補(bǔ)碼算術(shù)左移時(shí)不發(fā)生溢出,為保證補(bǔ)碼算術(shù)左移時(shí)不發(fā)生溢出,移位的數(shù)移位的數(shù)據(jù)最高有效位必須與符號(hào)位相同據(jù)最高有效位必須與符號(hào)位相同。在不發(fā)生溢出的前提下,在不發(fā)生溢出的前提下,

11、用硬件實(shí)現(xiàn)補(bǔ)碼的算用硬件實(shí)現(xiàn)補(bǔ)碼的算術(shù)左移時(shí),直接將數(shù)據(jù)最高有效位移入符號(hào)位,術(shù)左移時(shí),直接將數(shù)據(jù)最高有效位移入符號(hào)位,不會(huì)改變機(jī)器數(shù)的符號(hào)。不會(huì)改變機(jī)器數(shù)的符號(hào)。n算術(shù)右移:算術(shù)右移:符號(hào)位不變,低位移出,符號(hào)位不變,低位移出,高位正數(shù)補(bǔ)高位正數(shù)補(bǔ)0 0,負(fù)數(shù)補(bǔ)負(fù)數(shù)補(bǔ)1 1,即高位補(bǔ)符號(hào)位。即高位補(bǔ)符號(hào)位。16補(bǔ)碼的算術(shù)移位舉例補(bǔ)碼的算術(shù)移位舉例例:例:設(shè)設(shè)X X0.1001,Y0.1001,Y0.01010.0101,求,求nXX補(bǔ)補(bǔ) ?n2X2X補(bǔ)補(bǔ) ?nX/2X/2補(bǔ)補(bǔ) ?nYY補(bǔ)補(bǔ) ?n2Y2Y補(bǔ)補(bǔ) ?nY/2Y/2補(bǔ)補(bǔ) ?17三、移碼加減運(yùn)算與判溢三、移碼加減運(yùn)算與判溢1.1.移碼

12、和移碼計(jì)算移碼和移碼計(jì)算XX移移 =2 =2n n+X Y+X Y移移 =2 =2n n+Y -2+Y -2n nX2X2n n-1-1XX移移 + Y + Y移移 =2 =2n n+X+2+X+2n n+Y= 2+Y= 2n n+ +(2 2n n +X+Y +X+Y) = 2= 2n n + X+Y + X+Y移移XX移移 + -Y + -Y移移 = 2 = 2n n + X-Y + X-Y移移 2.2.移碼和補(bǔ)碼混合計(jì)算移碼和補(bǔ)碼混合計(jì)算YY補(bǔ)補(bǔ) =2 =2n+1n+1+Y +Y (mod 2mod 2n+1n+1) XX移移 + Y + Y補(bǔ)補(bǔ) = X+Y = X+Y移移 3.3.移碼

13、運(yùn)算結(jié)果判溢:移碼運(yùn)算結(jié)果判溢:雙符號(hào)位雙符號(hào)位nXX移移的最高符號(hào)位恒為的最高符號(hào)位恒為0 0nYY補(bǔ)補(bǔ)采用雙符號(hào)位采用雙符號(hào)位18三、移碼加減運(yùn)算與判溢三、移碼加減運(yùn)算與判溢移碼運(yùn)算結(jié)果溢出的判斷條件是:移碼運(yùn)算結(jié)果溢出的判斷條件是:n當(dāng)結(jié)果的最高符號(hào)位當(dāng)結(jié)果的最高符號(hào)位Sf1=1Sf1=1時(shí)溢出,時(shí)溢出,Sf1=0Sf1=0時(shí)結(jié)果時(shí)結(jié)果正確。正確。Sf1 Sf2=10Sf1 Sf2=10時(shí),結(jié)果正溢出;時(shí),結(jié)果正溢出;Sf1 Sf2=11Sf1 Sf2=11時(shí),結(jié)果負(fù)溢出。時(shí),結(jié)果負(fù)溢出。n由于移碼運(yùn)算用于浮點(diǎn)數(shù)的階碼,當(dāng)運(yùn)算結(jié)果正由于移碼運(yùn)算用于浮點(diǎn)數(shù)的階碼,當(dāng)運(yùn)算結(jié)果正溢出時(shí),浮點(diǎn)數(shù)

14、溢出時(shí),浮點(diǎn)數(shù)上溢上溢;當(dāng)運(yùn)算結(jié)果負(fù)溢出時(shí),??;當(dāng)運(yùn)算結(jié)果負(fù)溢出時(shí),浮點(diǎn)數(shù)點(diǎn)數(shù)下溢,當(dāng)作機(jī)器零處理下溢,當(dāng)作機(jī)器零處理。 19舉例舉例: :vX=+1000X=+1000,Y=+1001Y=+1001,用移碼計(jì)算,用移碼計(jì)算X+YX+Y和和X-YX-Y。v解解: : X X移移 = 01= 01,1000 1000 Y Y補(bǔ)補(bǔ) = 00= 00,1001 -Y1001 -Y補(bǔ)補(bǔ) =11=11,01110111 X+YX+Y移移 =X=X移移 + Y+ Y補(bǔ)補(bǔ) = 01 = 01,1000 + 001000 + 00,1001=101001=10,0001 0001 最高符號(hào)位為最高符號(hào)位為1

15、1,溢出,最低符號(hào)位為,溢出,最低符號(hào)位為0 0,正溢出。,正溢出。 X-YX-Y移移 =X=X移移 + -Y+ -Y補(bǔ)補(bǔ) = 01 = 01,1000 + 111000 + 11,0111= 000111= 00,1111 1111 最高符號(hào)位為最高符號(hào)位為0 0,無(wú)溢出,無(wú)溢出,X-Y= -1X-Y= -1。20四、十進(jìn)制加法運(yùn)算四、十進(jìn)制加法運(yùn)算1.1.計(jì)算機(jī)中的十進(jìn)制加法器通常采用計(jì)算機(jī)中的十進(jìn)制加法器通常采用BCDBCD碼設(shè)計(jì),在二碼設(shè)計(jì),在二進(jìn)制加法器的基礎(chǔ)上,加上適當(dāng)?shù)男U娐罚梢詫?shí)進(jìn)制加法器的基礎(chǔ)上,加上適當(dāng)?shù)男U娐罚梢詫?shí)現(xiàn)現(xiàn)BCDBCD碼的加法器。碼的加法器。2.2.對(duì)

16、于對(duì)于8421BCD8421BCD碼來(lái)說(shuō),當(dāng)相加的兩數(shù)之和碼來(lái)說(shuō),當(dāng)相加的兩數(shù)之和S9S9時(shí),加時(shí),加6 6校正;當(dāng)校正;當(dāng)S9S9時(shí),且無(wú)進(jìn)位時(shí),結(jié)果正確,不需校正。時(shí),且無(wú)進(jìn)位時(shí),結(jié)果正確,不需校正。 21五、五、MIPSMIPS的加減法指令以及溢出判斷的加減法指令以及溢出判斷1 1、指令、指令v加(加(addadd)、立即數(shù)加()、立即數(shù)加(addiaddi)、減法()、減法(subsub)溢出)溢出時(shí)引起中斷;時(shí)引起中斷;v無(wú)符號(hào)數(shù)加(無(wú)符號(hào)數(shù)加(adduaddu)、無(wú)符號(hào)數(shù)立即數(shù)加)、無(wú)符號(hào)數(shù)立即數(shù)加(addiuaddiu)、無(wú)符號(hào)數(shù)減法()、無(wú)符號(hào)數(shù)減法(subusubu)在溢出時(shí)

17、不引)在溢出時(shí)不引起中斷。起中斷。22MIPSMIPS的加減法運(yùn)算舉例的加減法運(yùn)算舉例v add $t0,$t1,$t2 add $t0,$t1,$t2 # $t0 = $t1 + $t2; # $t0 = $t1 + $t2; 有符號(hào)數(shù)的加法運(yùn)算有符號(hào)數(shù)的加法運(yùn)算 v sub $t2,$t3,$t4 sub $t2,$t3,$t4 # $t2 = $t3 - $t4 # $t2 = $t3 - $t4 有符號(hào)數(shù)的減法運(yùn)算有符號(hào)數(shù)的減法運(yùn)算v addi $t2,$t3, 5 addi $t2,$t3, 5 # $t2 = $t3 + 5; # $t2 = $t3 + 5; 操作數(shù)是立即數(shù)的加法

18、運(yùn)算操作數(shù)是立即數(shù)的加法運(yùn)算v addu $t1,$t6,$t7 addu $t1,$t6,$t7 # $t1 = $t6 + $t7; # $t1 = $t6 + $t7; 無(wú)符號(hào)數(shù)的加法運(yùn)算無(wú)符號(hào)數(shù)的加法運(yùn)算v subu $t1,$t6,$t7 subu $t1,$t6,$t7 # $t1 = $t6 - $t7; # $t1 = $t6 - $t7; 無(wú)符號(hào)數(shù)的減法運(yùn)算無(wú)符號(hào)數(shù)的減法運(yùn)算23MIPSMIPS的加減法指令以及溢出判斷的加減法指令以及溢出判斷2 2、測(cè)試溢出程序舉例、測(cè)試溢出程序舉例n無(wú)無(wú)符號(hào)數(shù)加法(符號(hào)數(shù)加法($t0=$t1+$t2),$t0=$t1+$t2),判溢出測(cè)試程

19、序:判溢出測(cè)試程序:vaddu $t0,$t1,$t2addu $t0,$t1,$t2vnor $t3,$t1,$zeronor $t3,$t1,$zero#$t3=($t1|0)#$t3=($t1|0)按位或非,即按位或非,即$t3= not $t1=2$t3= not $t1=23232-1-$t1-1-$t1vsltu #t3,$t3,$t2sltu #t3,$t3,$t2# if($t3=2# if($t3=23232-1-$t1)$t2 -1-$t1)$t2 即(即(2 23232-1-1) ($t1+$t2$t1+$t2), ,# then $t3=1;else $t3=0# th

20、en $t3=1;else $t3=0vbne $t3,$zero,Overflowbne $t3,$zero,Overflow# if $t3# if $t300 則溢出則溢出24MIPSMIPS的加減法指令以及溢出判斷的加減法指令以及溢出判斷n有有符號(hào)數(shù)加法符號(hào)數(shù)加法($t0=$t1+$t2),$t0=$t1+$t2),判溢出測(cè)試程序:判溢出測(cè)試程序:vaddu $t0,$t1,$t2addu $t0,$t1,$t2#$t0=sum,#$t0=sum,但是沒(méi)有陷入異常但是沒(méi)有陷入異常vxor $t3,$t1,$t2 #xor $t3,$t1,$t2 #檢查檢查2 2個(gè)操作數(shù)符號(hào)是否不同個(gè)操

21、作數(shù)符號(hào)是否不同vslt slt $t3$t3, ,$t3$t3,$zero,$zero# #小于比較,補(bǔ)碼表示,小于比較,補(bǔ)碼表示,if if $t3$t30,then 0,then $t3$t3=1,else =1,else $t3$t3=0,=0,即符號(hào)不同即符號(hào)不同$t3$t3=1=1vbne $t3,$zero,No_overflowbne $t3,$zero,No_overflow# if $t3# if $t30,then go to 0,then go to No_overflow(No_overflowNo_overflow(No_overflow的地址是的地址是PCPC+4

22、+PCPC+4+符號(hào)位擴(kuò)展符號(hào)位擴(kuò)展immediate2immediate2,即當(dāng)前指令的下一,即當(dāng)前指令的下一條指令地址條指令地址+ +符號(hào)位擴(kuò)展符號(hào)位擴(kuò)展immediate2)immediate2)即即$t1$t1和和$t2$t2符號(hào)不同,則不會(huì)溢出符號(hào)不同,則不會(huì)溢出25MIPSMIPS的加減法指令以及溢出判斷的加減法指令以及溢出判斷vxor $t3,$t0,$t1xor $t3,$t0,$t1# # 如果如果$t1$t1和和$t2$t2符號(hào)相同,那么它們與和的符號(hào)符號(hào)相同,那么它們與和的符號(hào)也相同嗎?如果不同,則也相同嗎?如果不同,則$t30$t30 0 時(shí),時(shí),XXY Y 補(bǔ)補(bǔ) =

23、X = X補(bǔ)補(bǔ)YY補(bǔ)補(bǔ) =X=X補(bǔ)補(bǔ)(0 0.Y.Y1 1Y Yn n)50 補(bǔ)碼一位乘法補(bǔ)碼一位乘法校正法校正法n當(dāng)被乘數(shù)當(dāng)被乘數(shù)X X的符號(hào)任意,的符號(hào)任意,Y Y為負(fù)數(shù)時(shí):為負(fù)數(shù)時(shí):YY補(bǔ)補(bǔ) = 2 + Y = 1 .Y = 2 + Y = 1 .Y1 1Y Yn n則:則:Y = Y = YY補(bǔ)補(bǔ) 2 = 2 = 0 0.Y.Y1 1Y Yn n -1 -1XXY Y 補(bǔ)補(bǔ) = = X X0 0.Y.Y1 1Y Yn n XX補(bǔ)補(bǔ) = = X X0 0.Y.Y1 1Y Yn n 補(bǔ)補(bǔ) + +XX補(bǔ)補(bǔ)因?yàn)橐驗(yàn)? 0.Y.Y1 1Y Yn n 0 0,所以:,所以: X X0 0.Y.Y1

24、 1Y Yn n 補(bǔ)補(bǔ) = =XX補(bǔ)補(bǔ)(0 0.Y.Y1 1Y Yn n)所以:所以:Y Y0=0=0,商的第,商的第i i位上位上1 1,并執(zhí)行操作:,并執(zhí)行操作:余數(shù)左移一位,再減余數(shù)左移一位,再減|Y|Y|,得,得R Ri+1i+1,則:,則:R Ri i1 1=2R=2Ri i|Y|Y|733 3、原碼不恢復(fù)余數(shù)算法、原碼不恢復(fù)余數(shù)算法如果如果R Ri i00E0,則,則E EX XEEY Y,M MY Y每右移一位,每右移一位,E EY Y+1+1,直至,直至 E EY Y=E=EX X 。若若E0E0,則,則E EX XEEY Y,M MX X每右移一位,每右移一位,E EX X+

25、1+1,直至,直至E EX X=E=EY Y 。n尾數(shù)相加減尾數(shù)相加減111浮點(diǎn)加減運(yùn)算步驟浮點(diǎn)加減運(yùn)算步驟n結(jié)果規(guī)格化結(jié)果規(guī)格化:尾數(shù)運(yùn)算的結(jié)果可能出現(xiàn)兩種:尾數(shù)運(yùn)算的結(jié)果可能出現(xiàn)兩種非規(guī)格化情況:非規(guī)格化情況:尾數(shù)溢出:需要尾數(shù)溢出:需要右規(guī)(右規(guī)(1 1次)次),即尾數(shù)右移,即尾數(shù)右移1 1位,階碼位,階碼1 1| |尾數(shù)尾數(shù)| 2| 0E=30,將,將M MY Y右移右移3 3位,位,E EY Y加加3 3:YY浮浮 = 00= 00,001 00.0001100 001 00.0001100 (101101)一、浮點(diǎn)加減運(yùn)算一、浮點(diǎn)加減運(yùn)算116n尾數(shù)相加:尾數(shù)相加: M MZ Z

26、補(bǔ)補(bǔ) = = 11.100000111.1000001(101101)n結(jié)果規(guī)格化:左規(guī)一位,無(wú)溢出:結(jié)果規(guī)格化:左規(guī)一位,無(wú)溢出:MMZ Z 補(bǔ)補(bǔ) = = 11.000001111.0000011(0101) EEZ Z 補(bǔ)補(bǔ) = 00 = 00,001 + 11001 + 11,111= 00111= 00,000000n舍入:按照舍入:按照0 0舍舍1 1入法,尾數(shù)多余位舍去入法,尾數(shù)多余位舍去n結(jié)果為:結(jié)果為:ZZ浮浮 = 0= 0,000 1.0000011000 1.0000011一、浮點(diǎn)加減運(yùn)算一、浮點(diǎn)加減運(yùn)算117二、浮點(diǎn)乘法運(yùn)算二、浮點(diǎn)乘法運(yùn)算假設(shè)兩個(gè)浮點(diǎn)數(shù)假設(shè)兩個(gè)浮點(diǎn)數(shù)X

27、X和和Y Y:XEX2MXYEY2MY)E(EYXYX2)MM(YXZ118v浮點(diǎn)乘法運(yùn)算步驟浮點(diǎn)乘法運(yùn)算步驟n0 0操作數(shù)檢查操作數(shù)檢查n階碼相加階碼相加:階碼相加可以采用補(bǔ)碼或者移:階碼相加可以采用補(bǔ)碼或者移碼的定點(diǎn)整數(shù)加法,同時(shí)對(duì)相加結(jié)果判溢,碼的定點(diǎn)整數(shù)加法,同時(shí)對(duì)相加結(jié)果判溢,一旦發(fā)生正溢出,則需報(bào)告溢出,若發(fā)生負(fù)一旦發(fā)生正溢出,則需報(bào)告溢出,若發(fā)生負(fù)溢出,則將結(jié)果置為機(jī)器零。溢出,則將結(jié)果置為機(jī)器零。n尾數(shù)相乘尾數(shù)相乘n結(jié)果規(guī)格化結(jié)果規(guī)格化:可能需要左規(guī):可能需要左規(guī)1 1位位n舍入處理:舍入處理:尾數(shù)相乘的結(jié)果長(zhǎng)度是尾數(shù)長(zhǎng)尾數(shù)相乘的結(jié)果長(zhǎng)度是尾數(shù)長(zhǎng)度的兩倍,必須對(duì)低位舍入。度的兩

28、倍,必須對(duì)低位舍入。 二、浮點(diǎn)乘法運(yùn)算二、浮點(diǎn)乘法運(yùn)算119浮點(diǎn)數(shù)乘法運(yùn)算流程浮點(diǎn)數(shù)乘法運(yùn)算流程120二、浮點(diǎn)乘法運(yùn)算(舉例)二、浮點(diǎn)乘法運(yùn)算(舉例)例:例:一浮點(diǎn)數(shù)表示格式為:一浮點(diǎn)數(shù)表示格式為:1010位浮點(diǎn)數(shù),階碼位浮點(diǎn)數(shù),階碼4 4位,包位,包含含1 1位階符,用移碼表示,尾數(shù)位階符,用移碼表示,尾數(shù)6 6位,包含位,包含1 1位數(shù)符,位數(shù)符,用補(bǔ)碼表示,階碼在前,尾數(shù)(包括數(shù)符)在后,用補(bǔ)碼表示,階碼在前,尾數(shù)(包括數(shù)符)在后,已知:已知:X=X=(-0.11001-0.11001)2 2011011 Y Y=0.10011=0.100112 2-001-001 ,求,求Z=XZ=X

29、Y Y。要求階碼用移碼計(jì)算,尾數(shù)用補(bǔ)碼要求階碼用移碼計(jì)算,尾數(shù)用補(bǔ)碼BoothBooth算法計(jì)算。算法計(jì)算。解:解:按照浮點(diǎn)數(shù)的格式分別寫(xiě)出它們的表示形式,為計(jì)按照浮點(diǎn)數(shù)的格式分別寫(xiě)出它們的表示形式,為計(jì)算方便,階碼采用雙符號(hào)位移碼,尾數(shù)采用雙符號(hào)算方便,階碼采用雙符號(hào)位移碼,尾數(shù)采用雙符號(hào)位補(bǔ)碼:位補(bǔ)碼:XX浮浮 = 01= 01,011 11.00111011 11.00111YY浮浮 = 00= 00,111 00.10011111 00.10011121舉例舉例階碼相加階碼相加 E EZ Z 移移=E=EX X 移移+E+EY Y 補(bǔ)補(bǔ) =01,011 + 11,111 =01,011

30、 + 11,111 =01,010 =01,010 無(wú)溢出無(wú)溢出 E EZ Z 移移 =1=1,010010尾數(shù)相乘尾數(shù)相乘 采用補(bǔ)碼采用補(bǔ)碼BoothBooth算法算法計(jì)算計(jì)算MMX X M MY Y 補(bǔ)補(bǔ): M MX X 補(bǔ)補(bǔ) = 11.00111 = 11.00111 M MY Y 補(bǔ)補(bǔ) = 0.10011 = 0.10011 -M -MX X 補(bǔ)補(bǔ)= 00.11001 = 00.11001 MZ補(bǔ)補(bǔ)= 1.10001 00101122二、浮點(diǎn)乘法運(yùn)算(舉例)二、浮點(diǎn)乘法運(yùn)算(舉例)-MX-MX補(bǔ)補(bǔ) = 00.11001 = 00.11001 MZMZ補(bǔ)補(bǔ)= 1.10001 00101

31、= 1.10001 00101 結(jié)果規(guī)格化結(jié)果規(guī)格化MZMZ左規(guī)一次得:左規(guī)一次得:MZ MZ 補(bǔ)補(bǔ)= 1.00010 01010 = 1.00010 01010 EZEZ減減1 1得:得:EZEZ移移 = 01= 01,010 + 11010 + 11,111 =01111 =01,001001 舍入舍入對(duì)尾數(shù)對(duì)尾數(shù)MZMZ進(jìn)行進(jìn)行0 0舍舍1 1入,最后得入,最后得 ZZ浮浮 = 1= 1,001 1.00010001 1.00010123三、浮點(diǎn)除法運(yùn)算三、浮點(diǎn)除法運(yùn)算假設(shè)兩個(gè)浮點(diǎn)數(shù)假設(shè)兩個(gè)浮點(diǎn)數(shù)X X和和Y Y:XEX2MX YEY2MY )(YXE(EYX2MMYXZ 124v浮點(diǎn)數(shù)

32、除法運(yùn)算步驟浮點(diǎn)數(shù)除法運(yùn)算步驟n0 0操作數(shù)檢查操作數(shù)檢查當(dāng)除數(shù)為當(dāng)除數(shù)為0 0,則報(bào)告除法出錯(cuò),或者結(jié)果,則報(bào)告除法出錯(cuò),或者結(jié)果(商)無(wú)窮大;(商)無(wú)窮大;當(dāng)被除數(shù)為當(dāng)被除數(shù)為0 0,則商為,則商為0 0。n階碼相減階碼相減階碼相減的結(jié)果也可能溢出,若發(fā)生正溢出,階碼相減的結(jié)果也可能溢出,若發(fā)生正溢出,則需報(bào)告浮點(diǎn)數(shù)溢出,若發(fā)生負(fù)溢出,則將則需報(bào)告浮點(diǎn)數(shù)溢出,若發(fā)生負(fù)溢出,則將結(jié)果置為機(jī)器零。結(jié)果置為機(jī)器零。n尾數(shù)相除尾數(shù)相除n結(jié)果規(guī)格化結(jié)果規(guī)格化n舍入處理舍入處理 浮點(diǎn)數(shù)除法運(yùn)算步驟浮點(diǎn)數(shù)除法運(yùn)算步驟125浮點(diǎn)數(shù)除法運(yùn)算流程浮點(diǎn)數(shù)除法運(yùn)算流程126三、浮點(diǎn)除法運(yùn)算(舉例)三、浮點(diǎn)除法運(yùn)算

33、(舉例)例:例:一浮點(diǎn)數(shù)表示格式為:一浮點(diǎn)數(shù)表示格式為:1010位浮點(diǎn)數(shù),階碼位浮點(diǎn)數(shù),階碼4 4位,包位,包含含1 1位階符,用移碼表示,尾數(shù)位階符,用移碼表示,尾數(shù)6 6位,包含位,包含1 1位數(shù)符,位數(shù)符,用補(bǔ)碼表示,階碼在前,尾數(shù)(包括數(shù)符)在后,用補(bǔ)碼表示,階碼在前,尾數(shù)(包括數(shù)符)在后,已知:已知: X=X=(-0.11001-0.11001)2 2011011 Y Y=0.10011=0.100112 2-001-001,求,求Z=XZ=XY Y。要求階碼用移碼計(jì)算,尾數(shù)用原碼加減交。要求階碼用移碼計(jì)算,尾數(shù)用原碼加減交替除法計(jì)算。替除法計(jì)算。解:解:按照浮點(diǎn)數(shù)的格式分別寫(xiě)出它們

34、的表示形式為:按照浮點(diǎn)數(shù)的格式分別寫(xiě)出它們的表示形式為: XX浮浮 = 1= 1,011 1.00111 Y011 1.00111 Y浮浮 = 0= 0,111 0.10011111 0.10011 階碼相減階碼相減EZEZ移移 = EX= EX移移 +-EY+-EY補(bǔ)補(bǔ) = 01= 01,011 + 00011 + 00,001 = 01001 = 01,100100127舉例舉例尾數(shù)相除尾數(shù)相除采用原碼加減交替法計(jì)采用原碼加減交替法計(jì)算算|MX| |MX| |MY|MY|,首,首先寫(xiě)出下例數(shù)據(jù):先寫(xiě)出下例數(shù)據(jù):|MX| = 00.11001 |MX| = 00.11001 |MY| = 0

35、0.10011 |MY| = 00.10011 -|MY|-|MY|補(bǔ)補(bǔ) = 11.01101 = 11.01101 |MZ| =|MX| |MZ| =|MX| |MY| = |MY| = 1.01010 1.01010 128三、浮點(diǎn)除法運(yùn)算(舉例)三、浮點(diǎn)除法運(yùn)算(舉例)結(jié)果規(guī)格化結(jié)果規(guī)格化由于由于|MX|MY|MX|MY|,所以,所以|MZ|1|MZ|1,必須右規(guī)一位,得,必須右規(guī)一位,得|MZ| = |MZ| = 0.10101 00.10101 0EZEZ加加1 1得:得:EZEZ移移 = 01= 01,100 + 00100 + 00,001 001 = 01 = 01,10110

36、1舍入舍入對(duì)對(duì)|MZ|MZ|進(jìn)行進(jìn)行0 0舍舍1 1入,得入,得|MZ| = 0.10101 MZ|MZ| = 0.10101 MZ原原 = = 1.10101 MZ1.10101 MZ補(bǔ)補(bǔ) = 1.01011= 1.01011最后:最后:ZZ浮浮 = 1= 1,101 1.01011101 1.01011129四、浮點(diǎn)運(yùn)算器四、浮點(diǎn)運(yùn)算器130四、浮點(diǎn)運(yùn)算器四、浮點(diǎn)運(yùn)算器v 浮點(diǎn)運(yùn)算復(fù)雜程度遠(yuǎn)遠(yuǎn)大于定點(diǎn)運(yùn)算。浮點(diǎn)運(yùn)算復(fù)雜程度遠(yuǎn)遠(yuǎn)大于定點(diǎn)運(yùn)算。v 根據(jù)性能要求和需要來(lái)確定是否設(shè)置浮點(diǎn)運(yùn)算器。根據(jù)性能要求和需要來(lái)確定是否設(shè)置浮點(diǎn)運(yùn)算器。v 在在沒(méi)有浮點(diǎn)運(yùn)算器沒(méi)有浮點(diǎn)運(yùn)算器的機(jī)器中,基于一定的定點(diǎn)

37、運(yùn)算部的機(jī)器中,基于一定的定點(diǎn)運(yùn)算部件,可以按照上述浮點(diǎn)運(yùn)算的算法件,可以按照上述浮點(diǎn)運(yùn)算的算法用軟件來(lái)實(shí)現(xiàn)用軟件來(lái)實(shí)現(xiàn)。這。這種方法速度較慢。種方法速度較慢。v 浮點(diǎn)運(yùn)算器浮點(diǎn)運(yùn)算器由兩個(gè)松散連接的定點(diǎn)運(yùn)算部件組成由兩個(gè)松散連接的定點(diǎn)運(yùn)算部件組成:階階碼運(yùn)算部件和尾數(shù)運(yùn)算部件碼運(yùn)算部件和尾數(shù)運(yùn)算部件。 階碼運(yùn)算部件要求具有加減運(yùn)算和階碼運(yùn)算部件要求具有加減運(yùn)算和+1+1、-1-1的功能的功能 尾數(shù)運(yùn)算部件要求具有加減乘除四則運(yùn)算和移位的尾數(shù)運(yùn)算部件要求具有加減乘除四則運(yùn)算和移位的功能。功能。 1314.6 4.6 浮點(diǎn)運(yùn)算器舉例浮點(diǎn)運(yùn)算器舉例 80X8780X87算術(shù)協(xié)處理器算術(shù)協(xié)處理器 浮

38、點(diǎn)運(yùn)算流水線浮點(diǎn)運(yùn)算流水線一一二二 MIPSMIPS的浮點(diǎn)操作的浮點(diǎn)操作三三132一、一、 80X8780X87算術(shù)協(xié)處理器算術(shù)協(xié)處理器v 算術(shù)協(xié)處理器是一個(gè)特殊用途的微處理器,專(zhuān)門(mén)是為算術(shù)協(xié)處理器是一個(gè)特殊用途的微處理器,專(zhuān)門(mén)是為有效地執(zhí)行算術(shù)或超越函數(shù)的運(yùn)算而設(shè)計(jì)的。有效地執(zhí)行算術(shù)或超越函數(shù)的運(yùn)算而設(shè)計(jì)的。v 微處理器截取和執(zhí)行常規(guī)指令系統(tǒng)中的指令,而協(xié)處微處理器截取和執(zhí)行常規(guī)指令系統(tǒng)中的指令,而協(xié)處理器只截取和執(zhí)行協(xié)處理器指令。協(xié)處理器指令實(shí)際理器只截取和執(zhí)行協(xié)處理器指令。協(xié)處理器指令實(shí)際上是換碼(上是換碼(ESCESC)指令,微處理器使用這些指令為協(xié))指令,微處理器使用這些指令為協(xié)處理

39、器產(chǎn)生一個(gè)內(nèi)存地址,使得協(xié)處理器可以執(zhí)行協(xié)處理器產(chǎn)生一個(gè)內(nèi)存地址,使得協(xié)處理器可以執(zhí)行協(xié)處理器指令處理器指令 1338038780387的主要性能和結(jié)構(gòu)的主要性能和結(jié)構(gòu)8038780387的性能的性能 可與配套的可與配套的CPUCPU芯片異步并行工作芯片異步并行工作 支持多種數(shù)據(jù)類(lèi)型支持多種數(shù)據(jù)類(lèi)型 具有高性能的具有高性能的8080位字長(zhǎng)的體系結(jié)構(gòu)位字長(zhǎng)的體系結(jié)構(gòu) 具有出色的內(nèi)部出錯(cuò)管理功能,能檢測(cè)出具有出色的內(nèi)部出錯(cuò)管理功能,能檢測(cè)出6 6種種錯(cuò)誤錯(cuò)誤 可在可在80386/8048680386/80486微機(jī)系統(tǒng)的兩種工作模式下微機(jī)系統(tǒng)的兩種工作模式下運(yùn)行運(yùn)行 擴(kuò)展了擴(kuò)展了80386/804

40、8680386/80486的指令系統(tǒng)的指令系統(tǒng) 1348038780387支持的支持的7 7種數(shù)據(jù)類(lèi)型及其格式種數(shù)據(jù)類(lèi)型及其格式 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型數(shù)據(jù)格式數(shù)據(jù)格式說(shuō)明說(shuō)明單字整數(shù)(單字整數(shù)(16位整數(shù))位整數(shù))二進(jìn)制補(bǔ)碼二進(jìn)制補(bǔ)碼短整數(shù)(短整數(shù)(32位整數(shù))位整數(shù))二進(jìn)制補(bǔ)碼二進(jìn)制補(bǔ)碼長(zhǎng)整數(shù)(長(zhǎng)整數(shù)(64位整數(shù))位整數(shù))二進(jìn)制補(bǔ)碼二進(jìn)制補(bǔ)碼短實(shí)數(shù)(短實(shí)數(shù)(32位浮點(diǎn)數(shù))位浮點(diǎn)數(shù))單精度浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)長(zhǎng)實(shí)數(shù)(長(zhǎng)實(shí)數(shù)(64位浮點(diǎn)數(shù))位浮點(diǎn)數(shù))雙精度浮點(diǎn)數(shù)雙精度浮點(diǎn)數(shù)臨時(shí)實(shí)數(shù)(臨時(shí)實(shí)數(shù)(80位浮點(diǎn)位浮點(diǎn)數(shù))數(shù))臨時(shí)浮點(diǎn)數(shù)臨時(shí)浮點(diǎn)數(shù)十進(jìn)制數(shù)串(十進(jìn)制數(shù)串(80位)位)18位位BCD碼碼S31位位S

41、63位位S階碼(階碼(8位)位) 尾數(shù)(尾數(shù)(23位)位)S階碼(階碼(11位)位) 尾數(shù)(尾數(shù)(52位)位)S階碼(階碼(15位)位) 尾數(shù)(尾數(shù)(64位)位)S(7位)位) d17 d16d1 d0S15位位S符號(hào)位;符號(hào)位;3種種浮點(diǎn)數(shù)均符合浮點(diǎn)數(shù)均符合IEEE754標(biāo)準(zhǔn),標(biāo)準(zhǔn),即階碼的底為即階碼的底為2,階碼值用移碼表階碼值用移碼表示,尾數(shù)用原碼示,尾數(shù)用原碼表示表示1358038780387的主要性能和結(jié)構(gòu)的主要性能和結(jié)構(gòu)8038780387的結(jié)構(gòu):分為兩個(gè)單元。的結(jié)構(gòu):分為兩個(gè)單元。n控制單元控制單元(Control UnitControl Unit,CUCU)將協(xié)處理器連)將協(xié)處

42、理器連接到微處理器系統(tǒng)數(shù)據(jù)總線上。微處理器和協(xié)接到微處理器系統(tǒng)數(shù)據(jù)總線上。微處理器和協(xié)處理器均監(jiān)視指令流,如果為處理器均監(jiān)視指令流,如果為ESCESC指令,則由協(xié)指令,則由協(xié)處理器予以執(zhí)行。處理器予以執(zhí)行。1368038780387的主要性能和結(jié)構(gòu)的主要性能和結(jié)構(gòu)8038780387的結(jié)構(gòu):分為兩個(gè)單元。的結(jié)構(gòu):分為兩個(gè)單元。n數(shù)字執(zhí)行單元數(shù)字執(zhí)行單元(Numeric Execution unitNumeric Execution unit,NEUNEU)負(fù)責(zé)執(zhí)行所有協(xié)處理器指令。)負(fù)責(zé)執(zhí)行所有協(xié)處理器指令。 NEUNEU中有一個(gè)由中有一個(gè)由8 8個(gè)個(gè)8080位寄存器構(gòu)成的堆棧,位寄存器構(gòu)成的

43、堆棧,用于存儲(chǔ)算術(shù)指令的操作數(shù)和結(jié)果。用于存儲(chǔ)算術(shù)指令的操作數(shù)和結(jié)果。 NEUNEU中還包含狀態(tài)寄存器、控制寄存器、標(biāo)中還包含狀態(tài)寄存器、控制寄存器、標(biāo)記寄存器和異常指針寄存器。記寄存器和異常指針寄存器。 FSTSWAXFSTSWAX指令是協(xié)處理器允許通過(guò)指令是協(xié)處理器允許通過(guò)AXAX寄存器寄存器和微處理器直接通信的唯一指令。和微處理器直接通信的唯一指令。1378038780387內(nèi)部結(jié)構(gòu)框圖內(nèi)部結(jié)構(gòu)框圖 138寄存器堆棧寄存器堆棧 8038780387包含包含8 8個(gè)寄存器個(gè)寄存器,每個(gè)為,每個(gè)為8080位位寬,它們首尾相寬,它們首尾相接,組成一個(gè)接,組成一個(gè)“先進(jìn)后出先進(jìn)后出”的寄存器堆棧

44、。這些堆的寄存器堆棧。這些堆棧寄存器中總是棧寄存器中總是包含一個(gè)包含一個(gè)8080位的擴(kuò)展精度浮點(diǎn)數(shù)位的擴(kuò)展精度浮點(diǎn)數(shù)。數(shù)據(jù)只有駐留在內(nèi)存時(shí)才可能是任何其他格式。當(dāng)數(shù)據(jù)只有駐留在內(nèi)存時(shí)才可能是任何其他格式。當(dāng)數(shù)據(jù)從內(nèi)存中移到協(xié)處理器的寄存器堆棧中時(shí),協(xié)數(shù)據(jù)從內(nèi)存中移到協(xié)處理器的寄存器堆棧中時(shí),協(xié)處理器將這些帶符號(hào)的整數(shù)、處理器將這些帶符號(hào)的整數(shù)、BCDBCD數(shù)、單精度或雙精數(shù)、單精度或雙精度數(shù)轉(zhuǎn)換為擴(kuò)展精度浮點(diǎn)數(shù)。度數(shù)轉(zhuǎn)換為擴(kuò)展精度浮點(diǎn)數(shù)。 8 8個(gè)寄存器編號(hào)為個(gè)寄存器編號(hào)為0-70-7,處于棧頂?shù)募拇嫫鞣Q(chēng)為,處于棧頂?shù)募拇嫫鞣Q(chēng)為棧頂棧頂寄存器寄存器,它的,它的編號(hào)由狀態(tài)寄存器的編號(hào)由狀態(tài)寄存器

45、的TOPTOP字段指出字段指出。在。在協(xié)處理器指令中,用協(xié)處理器指令中,用STST表示棧頂寄存器,用表示棧頂寄存器,用STST(i i)(i=1-7i=1-7)訪問(wèn)相對(duì)于棧頂寄存器偏移量為)訪問(wèn)相對(duì)于棧頂寄存器偏移量為i i的寄存的寄存器,即器,即i i是偏移量,而不是寄存器實(shí)際的編號(hào)。是偏移量,而不是寄存器實(shí)際的編號(hào)。139狀態(tài)寄存器狀態(tài)寄存器v狀態(tài)寄存器反映協(xié)處理器所有指令的運(yùn)行情況。狀態(tài)寄存器反映協(xié)處理器所有指令的運(yùn)行情況。只在只在8018780187以上的以上的更高型號(hào)中使用更高型號(hào)中使用 140狀態(tài)寄存器狀態(tài)寄存器nB B忙位忙位(busy bitbusy bit)表明協(xié)處理器正忙于

46、執(zhí)行一項(xiàng))表明協(xié)處理器正忙于執(zhí)行一項(xiàng)任務(wù),通過(guò)檢測(cè)狀態(tài)寄存器或者使用任務(wù),通過(guò)檢測(cè)狀態(tài)寄存器或者使用FWAITFWAIT指令均指令均可測(cè)試忙位。由于較新的協(xié)處理器自動(dòng)與微處理器可測(cè)試忙位。由于較新的協(xié)處理器自動(dòng)與微處理器同步,所以在執(zhí)行其他協(xié)處理器任務(wù)之前不必測(cè)試同步,所以在執(zhí)行其他協(xié)處理器任務(wù)之前不必測(cè)試忙標(biāo)志。忙標(biāo)志。nC3C3C0C0 條件碼位條件碼位(condition code bit(condition code bit),表明了),表明了協(xié)處理器的條件。協(xié)處理器的條件。nTOPTOP棧頂棧頂(top-of-stacktop-of-stack,STST)位表示當(dāng)前尋)位表示當(dāng)前尋址

47、為棧頂?shù)募拇嫫?,通常是寄存器址為棧頂?shù)募拇嫫?,通常是寄存器STST(0 0)。nESES錯(cuò)誤匯總錯(cuò)誤匯總(error summaryerror summary)位,當(dāng)任何一)位,當(dāng)任何一個(gè)非屏蔽的錯(cuò)誤位(個(gè)非屏蔽的錯(cuò)誤位(PEPE、UEUE、OEOE、ZEZE、DEDE或或IEIE)被)被置位時(shí),則置位時(shí),則ESES被置位。在被置位。在80878087協(xié)處理器中該位也可協(xié)處理器中該位也可引起協(xié)處理器中斷。但從引起協(xié)處理器中斷。但從8018780187開(kāi)始,不再有協(xié)處開(kāi)始,不再有協(xié)處理器中斷。理器中斷。141狀態(tài)寄存器狀態(tài)寄存器nSFSF堆棧標(biāo)志堆棧標(biāo)志(stack flagstack flag

48、)位用于區(qū)分堆棧)位用于區(qū)分堆棧上溢和下溢的非法操作。當(dāng)該位被置上溢和下溢的非法操作。當(dāng)該位被置1 1時(shí),再根據(jù)時(shí),再根據(jù)標(biāo)志位標(biāo)志位B9B9(C1C1)來(lái)區(qū)分上溢和下溢兩種情況。)來(lái)區(qū)分上溢和下溢兩種情況。nPEPE精度錯(cuò)誤精度錯(cuò)誤(precision errorprecision error)表明結(jié)果)表明結(jié)果或操作數(shù)超過(guò)了設(shè)定的精度范圍?;虿僮鲾?shù)超過(guò)了設(shè)定的精度范圍。nUEUE下溢錯(cuò)誤下溢錯(cuò)誤(underflow errorunderflow error)表明一個(gè))表明一個(gè)非非0 0的結(jié)果太小,以致于不能用由控制字選擇的當(dāng)?shù)慕Y(jié)果太小,以致于不能用由控制字選擇的當(dāng)前精度來(lái)表示。前精度來(lái)表示

49、。nOEOE上溢錯(cuò)誤上溢錯(cuò)誤(overflow erroroverflow error)表明結(jié)果太)表明結(jié)果太大而不能被表示出來(lái),如果此錯(cuò)誤被屏蔽,則協(xié)大而不能被表示出來(lái),如果此錯(cuò)誤被屏蔽,則協(xié)處理器對(duì)上溢錯(cuò)誤就會(huì)產(chǎn)生一個(gè)無(wú)窮大。處理器對(duì)上溢錯(cuò)誤就會(huì)產(chǎn)生一個(gè)無(wú)窮大。142狀態(tài)寄存器狀態(tài)寄存器nZEZE被零除錯(cuò)誤被零除錯(cuò)誤(zero errorzero error)表明當(dāng)被除)表明當(dāng)被除數(shù)是非無(wú)窮大和非零時(shí),除數(shù)是零。數(shù)是非無(wú)窮大和非零時(shí),除數(shù)是零。nDEDE非規(guī)格化操作數(shù)錯(cuò)誤非規(guī)格化操作數(shù)錯(cuò)誤(denormalized denormalized errorerror)表明至少有一個(gè)操作數(shù)是非規(guī)

50、格化的。)表明至少有一個(gè)操作數(shù)是非規(guī)格化的。nIEIE非法操作錯(cuò)誤非法操作錯(cuò)誤(Invalid errorInvalid error)表明堆)表明堆棧有上溢或下溢錯(cuò)誤,是不確定的形式(棧有上溢或下溢錯(cuò)誤,是不確定的形式(0 00 0、+ + 和和- -等),或者使用了等),或者使用了NANNAN作為操作數(shù)。此標(biāo)作為操作數(shù)。此標(biāo)志表明諸如對(duì)負(fù)數(shù)開(kāi)平方等類(lèi)似的錯(cuò)誤。志表明諸如對(duì)負(fù)數(shù)開(kāi)平方等類(lèi)似的錯(cuò)誤。143狀態(tài)寄存器狀態(tài)寄存器 執(zhí)行執(zhí)行FSTSWFSTSW指令就可以訪問(wèn)狀態(tài)寄存器,此指令將狀指令就可以訪問(wèn)狀態(tài)寄存器,此指令將狀態(tài)寄存器中的內(nèi)容存人內(nèi)存的一個(gè)字單元中。在態(tài)寄存器中的內(nèi)容存人內(nèi)存的一個(gè)

51、字單元中。在8018780187或或8018780187以上的協(xié)處理器中,以上的協(xié)處理器中,F(xiàn)STSW AXFSTSW AX指令可將指令可將狀態(tài)寄存器中的內(nèi)容直接復(fù)制到微處理器的狀態(tài)寄存器中的內(nèi)容直接復(fù)制到微處理器的AXAX寄存器寄存器中。一旦狀態(tài)寄存器的狀態(tài)被存儲(chǔ)到內(nèi)存或中。一旦狀態(tài)寄存器的狀態(tài)被存儲(chǔ)到內(nèi)存或AXAX寄存器寄存器中,則可以使用常規(guī)軟件檢測(cè)狀態(tài)寄存器中的各位,中,則可以使用常規(guī)軟件檢測(cè)狀態(tài)寄存器中的各位,譬如使用以下兩種方法測(cè)試狀態(tài)寄存器的各位。一種譬如使用以下兩種方法測(cè)試狀態(tài)寄存器的各位。一種方法是使用方法是使用TESTTEST指令來(lái)測(cè)試狀態(tài)寄存器的各位,另一指令來(lái)測(cè)試狀態(tài)寄

52、存器的各位,另一種方法是使用種方法是使用SAHFSAHF指令將狀態(tài)寄存器中最左邊的指令將狀態(tài)寄存器中最左邊的8 8位位傳送到微處理器的標(biāo)志寄存器中。傳送到微處理器的標(biāo)志寄存器中。 協(xié)處理器和微處理器之間的通信在協(xié)處理器和微處理器之間的通信在8018780187和和8028780287中是中是通過(guò)通過(guò)I IO O端口端口00FAH00FAH00FFH00FFH實(shí)現(xiàn)的,而在實(shí)現(xiàn)的,而在8038780387Pentium4Pentium4中是通過(guò)中是通過(guò)I IO O端口端口800000FAH800000FAH800000FFH800000FFH實(shí)實(shí)現(xiàn)的。現(xiàn)的。144控制寄存器控制寄存器 控制寄存器包

53、括精度控制、舍入控制和無(wú)窮大控制,控制寄存器包括精度控制、舍入控制和無(wú)窮大控制,它也可以屏蔽或者不屏蔽與狀態(tài)寄存器最右邊它也可以屏蔽或者不屏蔽與狀態(tài)寄存器最右邊6 6位對(duì)位對(duì)應(yīng)的異常位。應(yīng)的異常位。FLDCWFLDCW指令用于給控制寄存器賦值。指令用于給控制寄存器賦值。 控制寄存器中各位及各個(gè)組合位的功能:控制寄存器中各位及各個(gè)組合位的功能:nICIC無(wú)窮大控制(無(wú)窮大控制(infinity controlinfinity control)nRCRC舍入控制(舍入控制(rounding controlrounding control)nPCPC精度控制(精度控制(precision contr

54、olprecision control)nException MasksException Masks異常屏蔽字段異常屏蔽字段1458038780387控制寄存器控制寄存器146標(biāo)記寄存器標(biāo)記寄存器 標(biāo)記寄存器(標(biāo)記寄存器(tag registertag register)表明協(xié)處理器堆棧中)表明協(xié)處理器堆棧中每個(gè)寄存器內(nèi)容的狀態(tài)特征,又叫每個(gè)寄存器內(nèi)容的狀態(tài)特征,又叫特征寄存器特征寄存器。標(biāo)。標(biāo)記寄存器用每記寄存器用每2 2位表示寄存器堆棧中位表示寄存器堆棧中1 1個(gè)寄存器的狀個(gè)寄存器的狀態(tài),即態(tài),即TAGTAG(i i)表示堆棧寄存器)表示堆棧寄存器STST(i i)的狀態(tài)。)的狀態(tài)。TA

55、GTAG(i i)特征值為)特征值為00001111四種組合時(shí)分別表明相應(yīng)四種組合時(shí)分別表明相應(yīng)的寄存器有正確數(shù)據(jù)、數(shù)據(jù)為的寄存器有正確數(shù)據(jù)、數(shù)據(jù)為0 0、數(shù)據(jù)非法、無(wú)數(shù)據(jù)、數(shù)據(jù)非法、無(wú)數(shù)據(jù)4 4種情況。種情況。 通過(guò)程序查看標(biāo)記寄存器的唯一方法通過(guò)程序查看標(biāo)記寄存器的唯一方法是使用是使用FSTENVFSTENV、FSAVEFSAVE或或FRSTORFRSTOR指令來(lái)存儲(chǔ)協(xié)處理器操作環(huán)境。其指令來(lái)存儲(chǔ)協(xié)處理器操作環(huán)境。其中每條指令均可將標(biāo)記寄存器與其他協(xié)處理器數(shù)據(jù)中每條指令均可將標(biāo)記寄存器與其他協(xié)處理器數(shù)據(jù)一起存儲(chǔ)。一起存儲(chǔ)。 147標(biāo)記寄存器標(biāo)記寄存器148二、浮點(diǎn)運(yùn)算流水線二、浮點(diǎn)運(yùn)算流水

56、線v為了實(shí)現(xiàn)流水,首先必須把輸入的任務(wù)分割為為了實(shí)現(xiàn)流水,首先必須把輸入的任務(wù)分割為一系列的子任務(wù),使各子任務(wù)能在流水線的各一系列的子任務(wù),使各子任務(wù)能在流水線的各個(gè)階段個(gè)階段并發(fā)地并發(fā)地執(zhí)行。將任務(wù)連續(xù)不斷地輸入流執(zhí)行。將任務(wù)連續(xù)不斷地輸入流水線,從而實(shí)現(xiàn)了子任務(wù)的水線,從而實(shí)現(xiàn)了子任務(wù)的并行并行。v流水處理大幅度地改善了計(jì)算機(jī)的系統(tǒng)性能,流水處理大幅度地改善了計(jì)算機(jī)的系統(tǒng)性能,是在計(jì)算機(jī)上實(shí)現(xiàn)是在計(jì)算機(jī)上實(shí)現(xiàn)時(shí)間并行性時(shí)間并行性的一種非常經(jīng)濟(jì)的一種非常經(jīng)濟(jì)的方法。的方法。149二、浮點(diǎn)運(yùn)算流水線二、浮點(diǎn)運(yùn)算流水線 v PentiumPentium浮點(diǎn)流水線由預(yù)取浮點(diǎn)流水線由預(yù)取PFPF、首

57、次譯碼、首次譯碼D1D1、二次譯、二次譯碼碼D2D2、取操作數(shù)、取操作數(shù)EXEX、首次執(zhí)行、首次執(zhí)行X1X1、二次執(zhí)行、二次執(zhí)行X2X2、浮點(diǎn)、浮點(diǎn)寄存器寫(xiě)入寄存器寫(xiě)入WFWF和出錯(cuò)報(bào)告和出錯(cuò)報(bào)告ERER共共8 8個(gè)操作步驟組成。個(gè)操作步驟組成。v PentiumPentium微處理器的浮點(diǎn)流水線由浮點(diǎn)接口、寄存器微處理器的浮點(diǎn)流水線由浮點(diǎn)接口、寄存器組及控制部件組及控制部件FIRCFIRC、浮點(diǎn)指數(shù)功能部件、浮點(diǎn)指數(shù)功能部件FEXPFEXP、浮點(diǎn)乘、浮點(diǎn)乘法部件法部件FMULFMUL、浮點(diǎn)加法部件、浮點(diǎn)加法部件FADDFADD、浮點(diǎn)除法部件、浮點(diǎn)除法部件FDIVFDIV以及浮點(diǎn)舍入處理部件以

58、及浮點(diǎn)舍入處理部件PFRNDPFRND共共7 7個(gè)部件組成。個(gè)部件組成。v PentiumPentium浮點(diǎn)流水線對(duì)于浮點(diǎn)的取數(shù)、加減法、乘法浮點(diǎn)流水線對(duì)于浮點(diǎn)的取數(shù)、加減法、乘法和比較等和比較等“基本基本”操作,采用了新的算法并用硬件來(lái)操作,采用了新的算法并用硬件來(lái)實(shí)現(xiàn),其執(zhí)行速度是實(shí)現(xiàn),其執(zhí)行速度是8048680486的的1010倍多,允許單周期通倍多,允許單周期通過(guò),即能以每個(gè)時(shí)鐘執(zhí)行一條浮點(diǎn)指令的速度來(lái)執(zhí)行。過(guò),即能以每個(gè)時(shí)鐘執(zhí)行一條浮點(diǎn)指令的速度來(lái)執(zhí)行。150二、浮點(diǎn)運(yùn)算流水線二、浮點(diǎn)運(yùn)算流水線 v PentiumPentium浮點(diǎn)部件內(nèi)配置了直接支持浮點(diǎn)部件內(nèi)配置了直接支持3 3倍

59、精度浮點(diǎn)計(jì)倍精度浮點(diǎn)計(jì)算的部件,極大地簡(jiǎn)化了微體系結(jié)構(gòu),并明顯地改算的部件,極大地簡(jiǎn)化了微體系結(jié)構(gòu),并明顯地改進(jìn)了浮點(diǎn)部件的性能。進(jìn)了浮點(diǎn)部件的性能。v 基于基于NetBurstNetBurst微架構(gòu)的微架構(gòu)的Pentium4Pentium4實(shí)現(xiàn)了被稱(chēng)作為流實(shí)現(xiàn)了被稱(chēng)作為流SIMDSIMD擴(kuò)展擴(kuò)展2 2(SSE2SSE2)的)的144144條新條新SIMDSIMD指令,這些新指指令,這些新指令支持令支持128128位的位的SIMDSIMD整數(shù)操作和整數(shù)操作和128128位位SIMDSIMD雙精度浮雙精度浮點(diǎn)操作。點(diǎn)操作。v CoreCore構(gòu)架擁有構(gòu)架擁有2 2個(gè)浮點(diǎn)執(zhí)行單元同時(shí)處理向量和標(biāo)個(gè)浮點(diǎn)執(zhí)行單元同時(shí)處理向量和標(biāo)量的浮點(diǎn)運(yùn)算,其中一個(gè)浮點(diǎn)單元負(fù)責(zé)加減等簡(jiǎn)單量的浮點(diǎn)運(yùn)算,其中一個(gè)浮點(diǎn)單元負(fù)責(zé)加減等簡(jiǎn)單的處理,而另一個(gè)浮點(diǎn)單元?jiǎng)t負(fù)責(zé)乘除等運(yùn)算。的處理,而另一個(gè)浮點(diǎn)單元?jiǎng)t負(fù)責(zé)乘除等運(yùn)算。CoreCore構(gòu)架對(duì)浮點(diǎn)性能的改進(jìn)效果是顯而易見(jiàn)的。構(gòu)架對(duì)浮點(diǎn)性能的改進(jìn)效果是顯而易見(jiàn)的。 151三、三、MIPSMIPS的浮點(diǎn)操作的浮點(diǎn)操作v支持支持IEEE754IEEE754的單精度和雙精度格式的單精度和雙精度格

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論