計(jì)算機(jī)組成課件.ppt_第1頁(yè)
計(jì)算機(jī)組成課件.ppt_第2頁(yè)
計(jì)算機(jī)組成課件.ppt_第3頁(yè)
計(jì)算機(jī)組成課件.ppt_第4頁(yè)
計(jì)算機(jī)組成課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)組成原理,第4章 數(shù)值的機(jī)器運(yùn)算,主要內(nèi)容 4.1 基本算術(shù)運(yùn)算的實(shí)現(xiàn) 4.2定點(diǎn)加減運(yùn)算 4.3帶符號(hào)數(shù)的移位和舍入操作 4.4定點(diǎn)乘法運(yùn)算 4.5定點(diǎn)除法運(yùn)算 4.6規(guī)格化浮點(diǎn)運(yùn)算 4.7運(yùn)算器的基本組成,4.1基本算術(shù)運(yùn)算的實(shí)現(xiàn),全加器 串行加法器與并行加法器 并行進(jìn)位的并行加法器 4ALU舉例,4.1.1全加器 基本的加法單元稱(chēng)為全加器,實(shí)現(xiàn)兩個(gè)1位二進(jìn)制數(shù)相加。它要求三個(gè)輸入量:操作數(shù)Ai和Bi、低位傳來(lái)的進(jìn)位Ci-1,并產(chǎn)生兩個(gè)輸出量:本位和Si、向高位的進(jìn)位Ci。,1.全加器的真值表:,2.全加器的邏輯表達(dá)式為 Si=AiBiCi-1 Ci=AiBi+(AiBi)Ci-1,

2、4.1.2串行加法器與并行加法器 1.在串行加法器中,只有一個(gè)全加器,數(shù)據(jù)逐位串行送入加法器進(jìn)行運(yùn)算。 如果操作數(shù)長(zhǎng)n位,加法就要分n次進(jìn)行,每次只能產(chǎn)生一位和。,2.串行進(jìn)位并行加法器 把n個(gè)全加器串接起來(lái),就可進(jìn)行兩個(gè)n位數(shù)的相加。串行進(jìn)位又稱(chēng)行波進(jìn)位,每一級(jí)進(jìn)位直接依賴(lài)于前一級(jí)的進(jìn)位,即進(jìn)位信號(hào)是逐級(jí)形成的。其位數(shù)的多少取決于機(jī)器的字長(zhǎng),數(shù)據(jù)的各位同時(shí)運(yùn)算。串行進(jìn)位鏈的總延遲時(shí)間與字長(zhǎng)成正比。,串行進(jìn)位并行加法器雖然操作數(shù)的各位是同時(shí)提供的,但低位運(yùn)算所產(chǎn)生的進(jìn)位有可能會(huì)影響高位的運(yùn)算結(jié)果。例如:1111和0001相加,最低位產(chǎn)生的進(jìn)位將逐位影響至最高位。因此,并行加法器的最長(zhǎng)運(yùn)算時(shí)間主

3、要是由進(jìn)位信號(hào)的傳遞時(shí)間決定的。提高并行加法器速度的關(guān)鍵是盡量加快進(jìn)位產(chǎn)生和傳遞的速度。,4.1.3并行進(jìn)位的并行加法器 并行進(jìn)位又叫先行進(jìn)位,其特點(diǎn)是各級(jí)進(jìn)位信號(hào)同時(shí)形成。各進(jìn)位信號(hào)的表達(dá)式如下:,C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0,C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,Pi =(AiBi) 稱(chēng)為進(jìn)位傳遞函數(shù) Gi =AiBi稱(chēng)為進(jìn)位產(chǎn)生函數(shù),進(jìn)位產(chǎn)生函數(shù)表示和如果同為1,則肯定會(huì)向高位產(chǎn)生進(jìn)位 進(jìn)位傳遞函數(shù)表示和中有一個(gè)為1,肯定會(huì)將地位的進(jìn)位Ci-1傳遞上去,

4、上述各式中所有各位的進(jìn)位均不依賴(lài)于低位的進(jìn)位,各位的進(jìn)位可以同時(shí)產(chǎn)生。利用先行進(jìn)位部件產(chǎn)生進(jìn)位信號(hào)。,4.1.4分組并行進(jìn)位方式,隨著加法器位數(shù)的增加,Ci的邏輯表達(dá)式會(huì)變得越來(lái)越復(fù)雜。所以,完全采用并行進(jìn)位是不現(xiàn)實(shí)的。通常采用分組并行進(jìn)位方式。這種進(jìn)位方式是把n位字長(zhǎng)分為若干小組,在組內(nèi)各位之間實(shí)行并行快速進(jìn)位,在組間既可以采用串行進(jìn)位方式,也可以采用并行快速進(jìn)位方式。,(1)單級(jí)先行進(jìn)位方式 組內(nèi)并行、組間串行方式。 以16位加法器為例,可分為四組,每組四位。第1小組組內(nèi)的進(jìn)位邏輯函數(shù)C1、C2、C3、C4的表達(dá)式與前述相同,C1C4信號(hào)是同時(shí)產(chǎn)生的,從C0出現(xiàn)到產(chǎn)生C1C4的延遲時(shí)間是2

5、ty。,8,=G1*+P1*C0,(2)多級(jí)先行進(jìn)位方式 組內(nèi)并行、組間并行進(jìn)位方式。 字長(zhǎng)為16位的兩級(jí)先行進(jìn)位加法器,第一小組的最高位進(jìn)位C4: C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0,組進(jìn)位 產(chǎn)生函數(shù)G1*,組進(jìn)位 傳遞函數(shù)P1*,依次類(lèi)推: C8=G2*+P2*G1*+P2*P1*C0 C12=G3*+P3*G2 * +P3*P2*G1*+P3*P2*P1*C0 C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0,CLA電路為實(shí)現(xiàn)進(jìn)位邏輯函數(shù)的電路,若不考慮Gi、Pi的形成時(shí)間,C0經(jīng)過(guò)2ty產(chǎn)生

6、第1小組的C1、C2、C3及所有組進(jìn)位產(chǎn)生函數(shù)Gi*和組進(jìn)位傳遞函數(shù)Pi*;再經(jīng)過(guò)2ty,產(chǎn)生C4、C8、C12、C16;最后經(jīng)過(guò)2ty后,才能產(chǎn)生第2、3、4小組內(nèi)的C5C7、C9C11、C13C15。,基本算術(shù)運(yùn)算的實(shí)現(xiàn)電路,四位CLA加法器,四位BCLA加法器,4.1.5 ALU舉例 74181是四位算術(shù)邏輯運(yùn)算部件,能執(zhí)行16種算術(shù)運(yùn)算和16種邏輯運(yùn)算。 A0、B0A3、B3:操作數(shù)輸入端; F0F3:輸出端; Cn:進(jìn)位輸入端; Cn+4:進(jìn)位輸出端; G* :組進(jìn)位產(chǎn)生函數(shù)輸出端; P*:組進(jìn)位傳遞函數(shù)輸出端; M:工作方式,M=0為算術(shù)操作,M=1為邏輯操作; S0S3:功能選擇

7、線。 74181的4位作為一個(gè)小組,組間既可以采用串行進(jìn)位,也可以采用并行進(jìn)位。 當(dāng)采用組間串行進(jìn)位時(shí),只要把前片的Cn+4與下一片的Cn相連即可。 當(dāng)采用組間并行進(jìn)位時(shí),需要增加一片先行進(jìn)位部件(74182)。 74181和74182的結(jié)合可組成各種位數(shù)的ALU部件。,構(gòu)造16位ALU,用4片74181電路可組成16位ALU。 方案1:如圖:片內(nèi)進(jìn)位是快速的,但片間進(jìn)位是逐片傳遞的,因此形成F0F15的時(shí)間還是比較長(zhǎng)。,圖: 16位快速ALU,方案2:16位快速ALU 片間超前進(jìn)位產(chǎn)生電路,又稱(chēng)超前進(jìn)位擴(kuò)展器。 例如74182,4.2 定點(diǎn)加減運(yùn)算器,4.2.1 原碼加減運(yùn)算 符號(hào)位不參與運(yùn)

8、算 兩數(shù)的絕對(duì)值加或者減 實(shí)現(xiàn)復(fù)雜(需要一套加法電路和一套減法電路) 例如:兩異號(hào)數(shù)相加,實(shí)際要做減法,4.2.2補(bǔ)碼加減運(yùn)算,1.補(bǔ)碼加法規(guī)則 根據(jù)補(bǔ)碼定義可以證明: X+Y補(bǔ)=X補(bǔ)+Y補(bǔ) 兩數(shù)和的補(bǔ)碼等于兩數(shù)補(bǔ)碼之和 2.補(bǔ)碼減法規(guī)則 X-Y補(bǔ)=X+(-Y)補(bǔ)=X補(bǔ)+-Y補(bǔ) -Y補(bǔ)叫Y的機(jī)器負(fù)數(shù),3.計(jì)算機(jī)中補(bǔ)碼加減運(yùn)算規(guī)則 參加運(yùn)算的兩個(gè)操作數(shù)均用補(bǔ)碼表示; 符號(hào)位作為數(shù)的一部分參加運(yùn)算; 若做加法,則兩數(shù)直接相加;若做減法,則將被減數(shù)與減數(shù)的機(jī)器負(fù)數(shù)相加; 運(yùn)算結(jié)果用補(bǔ)碼表示。 一套加法電路和求補(bǔ)電路,4.已知Y補(bǔ)求-Y補(bǔ)的方法是 將Y補(bǔ)連同符號(hào)位一起求反,末尾加“1” 例1:Y=-0

9、.0110 Y補(bǔ)=1.1010,-Y補(bǔ)=0.0110 例2:Y=0.0110 Y補(bǔ)=0.0110,-Y補(bǔ)=1.1010,5.補(bǔ)碼加減運(yùn)算舉例 例1:A=0.1011,B=-0.1110,求:A+B A補(bǔ)=0.1011,B補(bǔ)=1.0010 0.1011 + 1.0010 1.1101 A+B補(bǔ)=1.1101,A+B=-0.0011,例2:A=0.1011,B=-0.0010,求:A-B A補(bǔ)=0.1011,B補(bǔ)=1.1110,-B補(bǔ)=0.0010 0.1011 + 0.0010 0.1101 A-B補(bǔ)=0.1101, A-B=0.1101,4.2.3溢出的產(chǎn)生和判斷 在補(bǔ)碼加減運(yùn)算中,有時(shí)會(huì)遇到

10、這樣的情況:兩個(gè)正數(shù)相加,而結(jié)果的符號(hào)位卻為1(結(jié)果為負(fù));兩個(gè)負(fù)數(shù)相加,而結(jié)果的符號(hào)位卻為0(結(jié)果為正)。 例1:設(shè):X=1011B=11D,Y=111B=7D X補(bǔ)=0,1011,Y補(bǔ)=0,0111 X+Y補(bǔ)=1,0010,X+Y=-1110B=-14D 兩正數(shù)相加結(jié)果為-14D,顯然是錯(cuò)誤的。,0,1 0 1 1,+ 0,0 1 1 1,1,0 0 1 0,例2:設(shè):X=-1011B=-11D,Y=-111B=-7D X補(bǔ)=1,0101 Y補(bǔ)=1,1001 X+Y補(bǔ)=0,1110,X+Y=1110B=14D 兩負(fù)數(shù)相加結(jié)果為14D,顯然也是錯(cuò)誤的。,1,0 1 0 1,+ 1,1 0 0

11、 1,0,1 1 1 0,為什么會(huì)發(fā)生這種錯(cuò)誤呢?原因在于兩數(shù)相加之和的數(shù)值已超過(guò)了機(jī)器允許的表示范圍。 字長(zhǎng)為n+1位的定點(diǎn)整數(shù)(其中一位為符號(hào)位),采用補(bǔ)碼表示,當(dāng)運(yùn)算結(jié)果大于2n-1或小于-2n時(shí),就產(chǎn)生溢出。,當(dāng)采用補(bǔ)碼加減運(yùn)算時(shí),由于只做做加法運(yùn)算,則參加運(yùn)算的兩數(shù)為X、Y, 若X、Y異號(hào),(兩個(gè)異號(hào)數(shù)相加)不會(huì)溢出。 若X、Y同號(hào),可能產(chǎn)生溢出。 同為正,則運(yùn)算結(jié)果可能大于所能表示的最大正數(shù),則產(chǎn)生溢出,稱(chēng)為正溢 同為負(fù)數(shù),運(yùn)算結(jié)果可能小于所能表示的最小負(fù)數(shù)時(shí),產(chǎn)生溢出,稱(chēng)為負(fù)溢。,溢出檢測(cè)方法 設(shè):被操作數(shù)為:X補(bǔ)=Xs,X1X2Xn 操作數(shù)為:Y補(bǔ)=Ys,Y1Y2Yn 其和(差

12、)為:S補(bǔ)=Ss,S1S2Sn 利用用符號(hào)位判斷 當(dāng)Xs=Ys=0,Ss=1時(shí),產(chǎn)生正溢。 當(dāng)Xs=Ys=1,Ss=0時(shí),產(chǎn)生負(fù)溢。, 采用進(jìn)位位判斷溢出 兩數(shù)運(yùn)算時(shí),符號(hào)位產(chǎn)生的進(jìn)位Cf和最高數(shù)值位產(chǎn)生的進(jìn)位C1不相同時(shí),產(chǎn)生溢出,如圖所示:?jiǎn)畏?hào)位補(bǔ)碼加法及溢出檢測(cè), 采用變形補(bǔ)碼(雙符號(hào)位補(bǔ)碼)時(shí)的溢出檢測(cè) 采用雙符號(hào)位補(bǔ)碼時(shí),左邊的符號(hào)位Sf1代表該數(shù)真正的符號(hào) 兩個(gè)符號(hào)位都作為數(shù)的一部分參加運(yùn)算。 可以證明: Sf1Sf2=00 結(jié)果為正數(shù),無(wú)溢出 Sf1Sf2=01 結(jié)果正溢 Sf1Sf2=10 結(jié)果負(fù)溢 Sf1Sf2=11 結(jié)果為負(fù)數(shù),無(wú)溢出 當(dāng)兩位符號(hào)位的值不一致時(shí),表明產(chǎn)生溢

13、出。 溢出=Sf1Sf2,如圖所示:雙符號(hào)數(shù)溢出檢測(cè),例:4位補(bǔ)碼數(shù)的表示范圍為-1615,采用變形補(bǔ)碼(雙符號(hào)位)運(yùn)算,則有: 11+7=18(正溢) 0 0,1 0 1 1 + 0 0,0 1 1 1,0 1,0 0 1 0,-11+(-7)=-18(負(fù)溢) 1 1,0 1 0 1 + 1 1,1 0 0 1,1 0,1 1 1 0,補(bǔ)碼加減法規(guī)則,1、 X補(bǔ),Y補(bǔ),-Y補(bǔ) 2、 X+Y補(bǔ)=X補(bǔ)+ Y補(bǔ) X-Y補(bǔ)=X補(bǔ)+ -Y補(bǔ) 豎式求和 3、寫(xiě)結(jié)果X+Y補(bǔ)=/ X-Y補(bǔ)= 或 結(jié)果發(fā)生溢出 4、驗(yàn)證(二選一) (1)正確性驗(yàn)證 Z1 = X+Y ;真值求和 由第三步求得的 X+Y補(bǔ),計(jì)算

14、X+Y=Z2(真值) 由于Z1和Z2相等,結(jié)果正確 (2)異常驗(yàn)證 根據(jù)判溢出規(guī)則判斷是否溢出,例:字長(zhǎng)N=5,X=+13,Y=-11,求X+Y, X-Y。 1、求機(jī)器數(shù) X補(bǔ)= +13補(bǔ)= +1101B補(bǔ)=01101B Y補(bǔ)= -11補(bǔ)= -1011B補(bǔ)=10101B -Y補(bǔ)=01011B 2、求X+Y 00 1101 + 11 0101 00 0010 3、 X+Y補(bǔ)=00010B 4、 Z1 =X+Y=+13+(-11)=+2 X+Y補(bǔ)=00010BX+Y=+0010B=+2= Z2 Z1 = Z2,結(jié)果正確,求X-Y: 2、 00 1101 + 00 1011 01 1000 3、兩個(gè)

15、符號(hào)位不同,結(jié)果發(fā)生溢出 4、Z =X-Y=+13-(-11)=+24 字長(zhǎng)為5,補(bǔ)碼表示數(shù)的范圍是-16-+15 +24+15,結(jié)果發(fā)生正溢出,4.2.4補(bǔ)碼定點(diǎn)加減法的實(shí)現(xiàn)電路 補(bǔ)碼加法:圖中X、Y代表兩個(gè)寄存器,F(xiàn)代表多位并行加法器。由控制信號(hào)XF、YF、FX、CPX控制數(shù)據(jù)的傳送。,加法時(shí): 1F無(wú)效(為0),補(bǔ)碼減法:XF、YF、1F、FX、CPX,FX,CPX,1F,同一套電路實(shí)現(xiàn)加減運(yùn)算,減法時(shí):1F有效(為1),4.3帶符號(hào)數(shù)移位和舍入操作,4.3.1帶符號(hào)數(shù)移位和舍入操作 二進(jìn)制數(shù)左移一位使數(shù)值增大一倍,相當(dāng)于該數(shù)乘以2,而右移一位則使數(shù)值縮小一倍,相當(dāng)于該數(shù)除以2。,1.移

16、位規(guī)則 原碼:無(wú)論正負(fù),保持符號(hào)位不變,空出位補(bǔ)0 例如:負(fù)數(shù)的原碼移位后的空出位補(bǔ)0,補(bǔ)碼: 左移:保持符號(hào)位不變,空出位補(bǔ)0 右移:保持符號(hào)位不變,空出位補(bǔ)符號(hào)位。,2. 移位功能的實(shí)現(xiàn) 計(jì)算機(jī)中, 移位操作通常由移位寄存器來(lái)實(shí)現(xiàn)。 移位寄存器: 除了具有寄存信息的功能外,還具有移位功能,在移位脈沖的作用下,能夠把寄存器中代碼依次向右或向左移動(dòng)。,4.3.2 帶符號(hào)數(shù)的舍入操作 在算術(shù)右移中,運(yùn)算結(jié)果有可能需要舍去一定的尾數(shù),會(huì)造成一些誤差。為了縮小誤差,就要進(jìn)行舍入處理。 1.恒舍(切斷) 無(wú)論移出部分為何代碼,一律舍去,保留部分不作任何改變。 2.恒置1法 不論移出多余部分為何代碼,都

17、把剩余部分的最低位置1。 3. 0舍1入法 用將要舍去的q位部分的最高位作為判斷標(biāo)志,如該位為0,則舍去整個(gè)q位部分,如該位為1,則在前面的p位部分的最低位上加1。,4.查表舍入法 用ROM存放下溢處理表,每次經(jīng)查表來(lái)讀得相應(yīng)的處理結(jié)果。ROM表的容量為2K個(gè)單元,每個(gè)單元字長(zhǎng)為K-1位。下溢處理表的內(nèi)容設(shè)置一般采用的方法是:當(dāng)K位數(shù)據(jù)的高K-1位為全“1”時(shí),讓那些單元按截?cái)喾ㄌ钊隟-1位全“1”,其余單元都按最低位(即附加位)0舍1入的結(jié)果來(lái)填其內(nèi)容。,地址 內(nèi)容 000 00 001 01 010 01 011 10 100 10 101 11 11 111 11,截?cái)喾▽⑽矓?shù)超出機(jī)器字

18、長(zhǎng)的那部分簡(jiǎn)單截掉。最大誤差:整數(shù)時(shí)接近1,分?jǐn)?shù)時(shí)接近2-m。對(duì)于正數(shù)總存在負(fù)誤差。截?cái)嗾`差均勻分布。統(tǒng)計(jì)平均誤差為負(fù)且較大,無(wú)法調(diào)節(jié)實(shí)現(xiàn)最簡(jiǎn)單,不增加硬件,不需要處理時(shí)間最大誤差較大,平均誤差大且不能調(diào)節(jié)。目前很少用。舍人法在機(jī)器運(yùn)算部分規(guī)定字長(zhǎng)之外,再增設(shè)一位附加位存放溢出部分的最高位,每當(dāng)尾數(shù)下溢處理時(shí),將附加位加1,再截取規(guī)定字長(zhǎng)部分作為處理后的結(jié)果。最大誤差:整數(shù)時(shí)0.5,分?jǐn)?shù)時(shí)2-(m+1)。對(duì)于正數(shù)誤差有正有負(fù)。統(tǒng)計(jì)平均誤差趨于零但略偏正。平均誤差無(wú)法調(diào)節(jié)實(shí)現(xiàn)簡(jiǎn)單,增加硬件很少,最大誤差小,平均誤差接近于零處理速度慢。在中低速機(jī)器上或者要求精度損失盡可能小的場(chǎng)合下使用較多。恒置“

19、1”法讓機(jī)器運(yùn)算器規(guī)定字長(zhǎng)的最低位恒為“1”狀態(tài)最大誤差:整數(shù)時(shí)1,分?jǐn)?shù)時(shí)2-m。對(duì)于正數(shù)誤差有正有負(fù)。統(tǒng)計(jì)平均誤差接近零但略偏正。平均誤差無(wú)法調(diào)節(jié)實(shí)現(xiàn)最簡(jiǎn)單,不增加硬件,不需要處理時(shí)間,平均誤差接近于零最大誤差最大。多用于中、高速機(jī)器(增長(zhǎng)尾數(shù))。查表舍入法用ROM或PLA芯片存放下溢處理結(jié)果表,每次經(jīng)查表來(lái)讀得相應(yīng)的處理結(jié)果。當(dāng)尾數(shù)最低k-1位全“1”時(shí)以截取法設(shè)置,其余情況按舍入法設(shè)置。速度較快,平均誤差可調(diào)節(jié)到零硬件量大上述4種處理方法中,最大誤差最大的是恒置“1”法,最小的是舍人法;平均誤差最大的是截?cái)喾?;平均誤差可人為調(diào)節(jié)的是查表舍入法;下溢處理不需要附加時(shí)間開(kāi)銷(xiāo),即速度最快的是截

20、斷法和恒置“1”法,處理速度最慢的是舍人法;實(shí)現(xiàn)上最花費(fèi)硬件的是查表舍入法,最省硬件的是截?cái)喾ê秃阒谩?”法。,4.4定點(diǎn)乘法運(yùn)算,4.4.1原碼一位乘法 用原碼實(shí)現(xiàn)乘法運(yùn)算是十分方便的。 用兩個(gè)操作數(shù)的絕對(duì)值相乘 乘積的符號(hào)為兩操作數(shù)符號(hào)的異或值(同號(hào)為正,異號(hào)為負(fù))。即: 乘積 P|X|Y| 符號(hào)Ps=XsYs,0.1 1 0 1 0.1 0 1 1,1 1 0 1 1 1 0 1 0 0 0 0 + 1 1 0 1,0.1 0 0 0 1 1 1 1 因?yàn)镻s=XsYs=01=1 所以XY=-0.10001111,1.手算乘法 例如: X=0.1101, Y=-0.1011,,2.手工乘

21、法存在的問(wèn)題 多個(gè)數(shù)同時(shí)相加機(jī)器很難實(shí)現(xiàn) 加法器位數(shù)是操作數(shù)位數(shù)的兩倍,3.機(jī)器原碼一位乘法的規(guī)則為:(部分積右移) 符號(hào)位單獨(dú)處理,同號(hào)為正,異號(hào)為負(fù); 部分積初值為0,令乘數(shù)的最低位為判斷位,若為“1”,加被乘數(shù),若為“0”,不加被乘數(shù)(加0); 累加后的部分積右移一位。(需保存) 循環(huán)上述過(guò)程,4.實(shí)現(xiàn): 乘法運(yùn)算需要三個(gè)寄存器: A寄存器:存放部分積與最后乘積的高位部分,初值為0。 B寄存器:被乘數(shù)X。 C寄存器:乘數(shù)Y,運(yùn)算后C寄存器中不再需要保留乘數(shù),改為存放乘積的低位部分。 還需要進(jìn)行移位次數(shù)控制 部分積右移時(shí),部分積和乘數(shù)兩個(gè)寄存器串聯(lián)移位。,流程圖,例: 已知:X=0.110

22、1,Y=-0.1011, 求:XY。 |X|=0.1101B,|Y|=0.1011C,0A 符號(hào)位不參加運(yùn)算 A、C寄存器級(jí)聯(lián),右移。 PS=XSYS=01=1 XY=-0.10001111,運(yùn)算過(guò)程,4.4.2 補(bǔ)碼一位乘法 比較法(Booth法) 設(shè):被乘數(shù)X補(bǔ)=Xs.X1X2Xn 乘數(shù)Y補(bǔ)=Ys.Y1Y2Yn,Booth乘法規(guī)則如下: 參加運(yùn)算的數(shù)用補(bǔ)碼表示; 符號(hào)位參加運(yùn)算; 在乘數(shù)的最低位之后增加一位附加位Yn+1,它的初值為0。 每次運(yùn)算由乘數(shù)相鄰兩位Yn、Yn+1(稱(chēng)為判斷位)的值決定每次應(yīng)執(zhí)行的操作;,判斷位Yn Yn+1 操 作 0 0 原部分積加0右移一位 0 1 原部分積

23、加X(jué)補(bǔ)后右移一位 1 0 原部分積加-X補(bǔ)后右移一位 1 1 原部分積加0右移一位 移位按補(bǔ)碼右移規(guī)則進(jìn)行; 共需做n+1次累加,n次移位。(最后一次不移位),流程圖:,例:已知X=-0.1101,Y=0.1011;求XY。 X補(bǔ)=1.0011B,Y補(bǔ)=0.1011C,0A -X補(bǔ)=0.1101 需進(jìn)行5次累加,4次移位,如圖所示: XY補(bǔ)=1.01110001 X Y=-0.10001111,A C 附加位 說(shuō)明,0 0.0 0 0 0 0.1 0 1 1 0,+-X補(bǔ) 0 0.1 1 0 1 C4C5=10,+-X補(bǔ),0 0.1 1 0 1, 0 0.0 1 1 0 1 0 1 0 1 1

24、 部分積右移一位,+0 0 0.0 0 0 0 C4C5=11,+0,0 0.0 1 1 0, 0 0.0 0 1 1 0 1 0 1 0 1 部分積右移一位,+X補(bǔ) 1 1.0 0 1 1 C4C5=01,+X補(bǔ),1 1.0 1 1 0, 1 1.1 0 1 1 0 0 1 0 1 0 部分積右移一位,+-X補(bǔ) 0 0.1 1 0 1 C4C5=10,+-X補(bǔ),0 0.1 0 0 0, 0 0.0 1 0 0 0 0 0 1 0 1 部分積右移一位,+X補(bǔ) 1 1.0 0 1 1 C4C5=01,+X補(bǔ),1 1.0 1 1 1,為了進(jìn)一步提高乘法運(yùn)算的速度,可采用高速乘法模塊組成的陣列乘法器

25、??赏瑫r(shí)得到各項(xiàng)部分積,并一次將其相加就得到乘積。,例:m=n=4時(shí),有: x4 x3 x2 x1 x0 * y4 y3 y2 y1 y0 - X4y0 x3y0 x2y0 x1y0 x0y0 X4y1 x3y1 x2y1 x1y1 x0y1 X4y2 x3y2 x2y2 x1y2 x0y2 X4y3 x3y3 x2y3 x1y3 x0y3 X4y4 x3y4 x2y4 x1y4 x0y4,P8 P7 P6 P5 P4 P3 P2 P1 P0,內(nèi)部結(jié)構(gòu):,4.5 定點(diǎn)除法 1.手工除法計(jì)算XY:X=0.1011,Y=0.1101, 0.1 1 0 1 商 0.1 1 0 1 0.1 0 1 1

26、 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 余數(shù) XY=商+ =0.1101+0.01112-4/0.1101,余數(shù),除數(shù),除法實(shí)際是從被除數(shù)中不斷的減除數(shù),商即為被除數(shù)中包含除數(shù)的個(gè)數(shù)。 對(duì)于二進(jìn)制除法,夠減則商1,否則商0,計(jì)算得新的余數(shù)后,末位加一個(gè)0 然后除數(shù)縮小一個(gè)數(shù)量級(jí)(右移1位)與新余數(shù)繼續(xù)比較,上商。此時(shí)商縮小一個(gè)數(shù)量級(jí)。,2. 原碼一位恢復(fù)余數(shù)法 恢復(fù)余數(shù)法是人工除法的改進(jìn)。改除數(shù)右移為余數(shù)左移。 (1)直接作減法試探X-Y,通過(guò)X+(-Y)補(bǔ) (2)若余數(shù)為正,表示夠減,該位商上“1” ; 若余數(shù)為負(fù),表示不夠減

27、,該位商上“0”,并要恢復(fù)原來(lái)的被除數(shù)(或余數(shù))。即在余數(shù)上加上Y; (3)余數(shù)左移一位 (4)重復(fù) 參見(jiàn)課本例3.38,3. 原碼不恢復(fù)余數(shù)法(原碼加減交替法),分析原碼一位恢復(fù)余數(shù)除法過(guò)程,設(shè)第i步的余數(shù)為Ri(減法試探的結(jié)果),則: 當(dāng)Ri0時(shí):上商1,左移一位,然后減|除數(shù)|,結(jié)果作為下次上商的依據(jù)(新余數(shù))即 2*Ri+- |Y|補(bǔ) 當(dāng)Ri0時(shí):上商0,恢復(fù)余數(shù)Ri+ |Y|補(bǔ),左移一位后減|除數(shù)|,即: 2*(Ri+ |Y|補(bǔ))+- |Y|補(bǔ)=2* Ri+2* |Y|補(bǔ)+- |Y|補(bǔ) =2* Ri+ |Y|補(bǔ) 所以,不恢復(fù)余數(shù),前一次商1,求新余數(shù)時(shí)+- |Y|補(bǔ) 前一次商0,求新

28、余數(shù)時(shí)+ |Y|補(bǔ),原碼不恢復(fù)余數(shù)法是對(duì)恢復(fù)余數(shù)法的一種改進(jìn)。 第一步: |X|+-|Y| 補(bǔ) 第二步:余數(shù)為正,商0,左移, +|Y|補(bǔ) 余數(shù)為負(fù),商1,左移, +-|Y|補(bǔ) 重復(fù)第二步。 注意: 若除數(shù)n位,不含符號(hào),則進(jìn)行n+1次判斷和上商,最后一次不移位。 當(dāng)最終余數(shù)為負(fù)數(shù)時(shí),必須恢復(fù)一次余數(shù),使之變?yōu)檎嬗鄶?shù),例:已知:X=0.10101,Y=-0.11110,求:XY。 |X|=0.10101A,|Y|=0.11110B,0C |Y|變補(bǔ)=1.00010 經(jīng)過(guò)原碼加減交替除法,有: 商=0.10110 余數(shù)=0.011002-5 XY=-(0.10110+ ),A C 說(shuō)明,0 0.

29、1 0 1 0 1 0.0 0 0 0 0,+-|Y|補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.1 0 1 1 1 0.0 0 0 0 0 余數(shù)為負(fù),商0, 1 1.0 1 1 1 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.0 1 1 0 0 0.0 0 0 0 1 余數(shù)為正,商1, 0 0.1 1 0 0 0 左移一位,+-|Y|補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.1 1 0 1 0 0.0 0 0 1 0 余數(shù)為負(fù),商0, 1 1.1 0 1 0 0 左移一位,+|Y| 0 0.1 1 1 1 0 +|Y|,0 0.1 0 0 1 0 0.

30、0 0 1 0 1 余數(shù)為正,商1, 0 1.0 0 1 0 0 左移一位,+-|Y|補(bǔ) 1 1.0 0 0 1 0 -|Y|,0 0.0 0 1 1 0 0.0 1 0 1 1 余數(shù)為正,商1, 0 0.0 1 1 0 0 左移一位,+-|Y|補(bǔ) 1 1.0 0 0 1 0 -|Y|,1 1.0 1 1 1 0 0.1 0 1 1 0 余數(shù)為負(fù),商0,+|Y| 0 0.1 1 1 1 0 恢復(fù)余數(shù),+|Y|,0 0.0 1 1 0 0,計(jì)算過(guò)程,4.6 規(guī)格化浮點(diǎn)數(shù)運(yùn)算方法,4.6.1規(guī)格化浮點(diǎn)數(shù)的尾數(shù)M應(yīng)滿足: 1/2|M|1 設(shè)尾數(shù)用雙符號(hào)位補(bǔ)碼表示。則以下為規(guī)格化表示: 00.1 x

31、x x 11.0 x x x,4.6.2 移碼表示 移碼相當(dāng)于X在數(shù)軸上向正方向偏移了若干單位即: 移碼=偏置值+真值 對(duì)于字長(zhǎng)為n的計(jì)算機(jī),若最高位為符號(hào)位,數(shù)值為n1位,當(dāng)偏移量取2 n-1時(shí),其移碼就是在補(bǔ)碼的基礎(chǔ)上對(duì)于符號(hào)位取反。 移碼常用于浮點(diǎn)數(shù)中的階碼表示。,移碼計(jì)算舉例: (1)寫(xiě)出X移=10111101和Y移=00101011所代表的實(shí)際值。 (2)說(shuō)明移碼的使用場(chǎng)合。 (3)計(jì)算二移碼數(shù)的和、差。 解:x移=10111101=(00111101)補(bǔ) x=(0111101) 2=(61)10 或:10111101-10000000=0 0111101 y移=00101011=(

32、10101011) 補(bǔ) y=(-1010101) 2=(-85)10,x移+y移=10111101+00101011=11101000 對(duì)運(yùn)算結(jié)果要加27進(jìn)行修正得01101000,即十進(jìn)制-24 x移+-y移=10111101+11010101=10010010 對(duì)運(yùn)算結(jié)果要加27進(jìn)行修正得00010010 發(fā)生了溢出,4.6.3浮點(diǎn)加減運(yùn)算 設(shè)兩個(gè)非0的規(guī)格化浮點(diǎn)數(shù)分別為 A=MA2EA B=MB2EB 運(yùn)算步驟: 1.對(duì)階 兩個(gè)浮點(diǎn)數(shù)相加或相減,首先要把小數(shù)點(diǎn)的位置對(duì)齊,而浮點(diǎn)數(shù)的小數(shù)點(diǎn)的實(shí)際位置取決于階碼的大小。因此,對(duì)齊兩數(shù)的小數(shù)點(diǎn),就是使兩數(shù)的階碼相等,這個(gè)過(guò)程稱(chēng)為對(duì)階。 對(duì)階的規(guī)

33、則是:小階向大階看齊。,首先應(yīng)求出兩數(shù)階碼EA和EB之差,即:E=EA-EB 當(dāng)EAEB時(shí),要通過(guò)尾數(shù)的移位來(lái)使EA=EB相等。要使小階的階碼增大,則相應(yīng)的尾數(shù)右移,直到兩數(shù)的階碼相等為止。對(duì)于r=2,每右移一位,階碼加1。 尾數(shù)右移后,應(yīng)對(duì)尾數(shù)進(jìn)行舍入。 2.尾數(shù)加/減 對(duì)階之后,就可以進(jìn)行尾數(shù)加/減,即 MAMBMC,3.尾數(shù)結(jié)果規(guī)格化 尾數(shù)加/減運(yùn)算之后得到的數(shù)可能不是規(guī)格化數(shù),必須進(jìn)行結(jié)果規(guī)格化操作。 設(shè)尾數(shù)用雙符號(hào)位補(bǔ)碼表示,經(jīng)過(guò)加/減運(yùn)算之后,可能出現(xiàn)以下六種情況:, 00.1 x x x 11.0 x x x 00.0 x x x 11.1 x x x 01.x x x x 10

34、.x x x x,第、種情況,已是規(guī)格化數(shù)。 第、種情況需要使尾數(shù)左移以實(shí)現(xiàn)規(guī)格化,這個(gè)過(guò)程稱(chēng)為左規(guī)。尾數(shù)每左移一位,階碼相應(yīng)減1(EC-1EC),直至成為規(guī)格化數(shù)為止。(左規(guī)可能需進(jìn)行多次) 第、種情況應(yīng)將尾數(shù)右移一次以實(shí)現(xiàn)規(guī)格化。這個(gè)過(guò)程稱(chēng)為右規(guī)。尾數(shù)每右移一位,階碼相應(yīng)加1(EC+1EC)。,4.舍入 右規(guī)或?qū)﹄A時(shí)尾數(shù)低位上的數(shù)值會(huì)移掉,使數(shù)值精度受影響,應(yīng)該進(jìn)行舍入處理減少誤差 “0”舍“1”入法:當(dāng)移掉的最高位為1時(shí),在尾數(shù)的末位加1 恒置一法:,5.檢查階碼是否溢出 階碼下溢,則置結(jié)果為機(jī)器零。 若上溢,則置溢出標(biāo)志。 什么是機(jī)器0? 當(dāng)一個(gè)浮點(diǎn)數(shù)的尾數(shù)為0(不論階碼是何值),或階碼的值比能在機(jī)器中表示的最小值還小時(shí),計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱(chēng)為機(jī)器零。,例:有兩浮點(diǎn)數(shù)為 A=0.1011

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論