版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,第4章 運算方法與運算器,2.1 定點數(shù)的加減運算及實現(xiàn) 2.2 定點數(shù)的乘法運算及實現(xiàn)2.3 定點數(shù)除法運算及實現(xiàn) 2.4 定點運算器的組成與結構2.5 浮點運算及運算器 作業(yè),2,2.1 定點數(shù)的加減運算及實現(xiàn),一、補碼加減運算及運算器二、機器數(shù)的移位運算,3,一、補碼加減運算及運算器,1、補碼加減運算方法2、補碼加減運算的溢出判斷3、補碼加減運算器,4,1、補碼加減運算方法,補碼的加減運算的公式是:
2、[X+Y]補 = [X]補 + [Y]補[X-Y]補 = [X]補 + [-Y]補特點:使用補碼進行加減運算,符號位和數(shù)值位一樣參加運算。補碼的減法可以用加法來實現(xiàn),任意兩數(shù)之差的補碼等于被減數(shù)的補碼與減數(shù)相反數(shù)的補碼之和 。,5,求補運算:[Y]補 → [-Y]補,求補規(guī)則:將[Y]補包括符號位在內每一位取反,末位加1。若[Y]補 = Y0,Y1……Yn ,則:,若[Y]補 = Y0.Y1……Yn ,則:,,例: [X]補
3、=0.1101,則: [-X]補 = ? [Y]補 =1.1101,則: [-Y]補 = ?,1.0011,0.0011,6,補碼加減運算舉例,例:已知X=+1011,Y=-0100,用補碼計算X+Y和X-Y。寫出補碼: [X]補 =0,1011 [Y]補 =1,1100 [-Y]補 =0,0100 計算:,0,1011,+ 1,1100,,0,0111,[X+Y]補 = 0, 0111,
4、0,1011,+ 0,0100,,0,1111,[X-Y]補 = 0, 1111,7,2、補碼加減運算的溢出判斷,當運算結果超出機器數(shù)的表示范圍時,稱為溢出。計算機必須具備檢測運算結果是否發(fā)生溢出的能力,否則會得到錯誤的結果(例2.2)。對于加減運算,可能發(fā)生溢出的情況:同號(兩數(shù))相加,或者異號(兩數(shù))相減。確定發(fā)生溢出的情況:正數(shù)相加,且結果符號位為1;負數(shù)相加,且結果符號位為0;正數(shù)-負數(shù),且結果符號位為1;負數(shù)-正數(shù)
5、,且結果符號位為0;,8,常用的判溢方法(補碼加減運算),(1)單符號位判溢方法2 當最高有效位產生的進位和符號位產生的進位不同時,加減運算發(fā)生了溢出。V=C1⊕Cf(2)雙符號位判溢方法X和Y采用雙符號位補碼參加運算,正數(shù)的雙符號位為00,負數(shù)的雙符號位為11;當運算結果的兩位符號Sf1 Sf2不同時(01或10),發(fā)生溢出。 V= Sf1 ⊕ Sf2= Xf ⊕Yf ⊕Cf⊕ Sf Sf1 Sf2=01,則正溢出;Sf1
6、 Sf2=10,則負溢出。,9,雙符號位判溢方法舉例,例:用補碼計算X+Y和X-Y (1)X=+1000,Y=+1001(2)X=-1000,Y=1001,,,Sf1 Sf2=01,正溢出,Sf1 Sf2=11,無溢出,,,Sf1 Sf2=00,無溢出,Sf1 Sf2=10,負溢出,10,3、補碼加減運算器,,11,3、補碼加減運算器,核心部件:一個普通的二進制并行加法器。A:累加器,存放[X]補;B:寄存器,存放[Y]補;,,1
7、2,二、機器數(shù)的移位運算,二進制數(shù)據(jù)(真值)每相對于小數(shù)點左移一位,相當于乘以2;每相對于小數(shù)點右移一位,相當于除以2。計算機中的移位運算分為:1、邏輯移位:將移位的數(shù)據(jù)視為無符號數(shù)據(jù),各數(shù)據(jù)位在位置上發(fā)生了變化,導致無符號數(shù)據(jù)的數(shù)值(無正負)放大或縮小。 2、算術移位:將移位的數(shù)據(jù)視為帶符號數(shù)據(jù)(機器數(shù))。算術移位的結果,在數(shù)值的絕對值上進行放大或縮小,同時,符號位必須要保持不變。 3、循環(huán)移位:所有的數(shù)據(jù)位在自身范圍內進行左
8、移或者右移,左移時最高位移入最低位,右移時最低位移入最高位。,13,補碼的算術移位,算術左移:符號位不變,高位移出,低位補0。為保證補碼算術左移時不發(fā)生溢出,移位的數(shù)據(jù)最高有效位必須與符號位相同。在不發(fā)生溢出的前提下,用硬件實現(xiàn)補碼的算術左移時,直接將數(shù)據(jù)最高有效位移入符號位,不會改變機器數(shù)的符號。,,,算術右移:符號位不變,低位移出,高位正數(shù)補0,負數(shù)補1,即高位補符號位。,14,補碼的算術移位舉例,例:設X=0.1001,Y=-
9、0.0101,求[X]補= ?[2X]補= ?[X/2]補=?[Y]補= ?[2Y]補= ?[Y/2]補=?,,0.1001,1.0010(溢出),0.0100,1.1011,1.0110,1.1101,15,2.2 定點數(shù)的乘法運算及實現(xiàn),一、計算機中乘除運算的實現(xiàn)方法二、原碼乘法算法三、原碼乘法的硬件實現(xiàn)四、陣列乘法器,16,一、計算機中乘除運算的實現(xiàn)方法,由于計算機的軟硬件在邏輯上具有一定的等價性,因此
10、實現(xiàn)乘除法運算,可以有三種方式:1、用軟件實現(xiàn)。硬件上:設計簡單,沒有乘法器和除法器。指令系統(tǒng):沒有乘除指令,但有加/減法和移位指令實現(xiàn):乘除運算通過編制一段子程序來實現(xiàn)算法:程序中運用串行乘除運算算法,循環(huán)累加、右移指令→乘法,循環(huán)減、左移指令→除法。運算速度:較慢。適用場合:單片機。,17,一、計算機中乘除運算的實現(xiàn)方法,2、用硬件乘法器和除法器實現(xiàn)。硬件上:設置有并行加法器、移位器和若干循環(huán)、計數(shù)控制邏輯電路搭成的
11、串行乘除法器。指令系統(tǒng):具有乘除法指令。實現(xiàn):乘除運算通過微程序一級(硬件+微程序)來實現(xiàn)。算法:在微程序中依據(jù)串行乘除運算算法,循環(huán)累加、右移指令→乘法,循環(huán)減、左移指令→除法。運算速度:有所提高,但硬件設計也相對復雜。適用場合:低性能CPU。,18,一、計算機中乘除運算的實現(xiàn)方法,3、用高速的陣列乘法器和陣列除法器來實現(xiàn)。硬件上:設置有專用的、并行運算的陣列乘法器和陣列除法器。指令系統(tǒng):具有乘除法指令。實現(xiàn):完全通過
12、硬件來實現(xiàn)。算法:并行乘/除法。運算速度:很快,但硬件設計相當復雜。適用場合:高性能CPU。,19,二、原碼乘法算法,1、手工乘法算法手工計算1011×1101,步驟:手工算法:對應每1位乘數(shù)求得1項位積,并將位積逐位左移,然后將所有的位積一次相加,得到最后的乘積。 乘法的機器算法:從乘數(shù)的最低位開始,每次根據(jù)乘數(shù)位得到其位積,乘數(shù)位為0,位積為0,乘數(shù)位為1,則位積為被乘數(shù);用原部分積右移1位加上本次位積,得新部
13、分積;初始部分積為0。,20,二、原碼乘法算法,2、原碼一位乘法算法: 假設[X]原=XS X1 X2 ……Xn , [Y]原=YS Y1 Y2 ……Yn , P=X·Y,PS是積的符號:符號位單獨處理 Ps=Xs ⊕ Ys 絕對值進行數(shù)值運算 |P|=|X|*|Y|例如:X=+1011,Y=-1101,用原碼一位乘法計算P=X·Y。,21,舉例,[X]原=0,1011 [Y
14、]原=1,1101Ps=Xs⊕Ys =0⊕1=1|P| = |X|·|Y|,[P]原=1,10001111,22,三、原碼乘法的硬件實現(xiàn),控制邏輯電路,23,原碼一位乘法,00000,1101,0 0 0 0 0,1 1 0 1,為各寄存器給初值,0 1 0 1 1,24,第一次求部分積,00000,1101,0 1 0 1 1,01011,1101,加運算:+|X|,25,第一次求部分積,000
15、00,1101,0 0 1 0 1,1 1 1 0,01011,1101,右移1位,00101,1110,26,第二次求部分積,00000,1101,0 0 1 0 1,1 1 1 0,01011,1101,加運算:+0,00101,1110,00101,1110,27,第二次求部分積,00000,1101,0 0 0 1 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1
16、110,00010,1111,28,第三次求部分積,00000,1101,0 1 1 0 1,01011,1101,加運算:+|X|,00101,1110,00101,1110,00010,1111,01101,1111,29,第三次求部分積,00000,1101,0 0 1 1 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,01101,1111,0011
17、0,1111,30,第四次求部分積,00000,1101,1 0 0 0 1,01011,1101,加運算:+|X|,00101,1110,00101,1110,00010,1111,01101,1111,00110,1111,10001,1111,31,第四次求部分積,00000,1101,0 1 0 0 0,1 1 1 1,01011,1101,右移1位,00101,1110,00101,1110,00010,1111,
18、01101,1111,00110,1111,01000,1111,低位積,高位積,符號位異或結果為:1,10001111,32,原碼一位乘法流程 :,33,四、陣列乘法器,原理類似于二進制手工算法位積的每一位XiYj都可以用一個與門實現(xiàn),而每一位的相加均可以使用一個全加器來實現(xiàn)。,,34,絕對值陣列乘法器,,,動畫演示,35,補碼陣列乘法器,,36,2.3 定點數(shù)除法運算及實現(xiàn),一、原碼除法算法二、原碼除法的硬件實現(xiàn)三、陣列除
19、法器,37,一、原碼除法算法,1、手工除法算法2、原碼恢復余數(shù)算法3、原碼不恢復余數(shù)算法,38,1、手工除法算法,X=+0.1011,Y=-0.1101X÷Y,改進手工算法即可適合機器運算:計算機通過做減法測試來實現(xiàn)判斷:結果大于等于0,表明夠減,商1;結果小于0,表明不夠減,商0。計算機將余數(shù)左移一位,再直接與不右移的除數(shù)相減。,39,2、原碼恢復余數(shù)算法,假設[X]原=XS .X1 X2 ……Xn ,[Y]原=Y
20、S .Y1 Y2 ……Yn ,Q是X÷Y的商,QS是商的符號,R是X÷Y的余數(shù),RS是余數(shù)的符號原碼除法運算的規(guī)則是:1.QS = XS ⊕YS ,RS = XS,|Q| = |X|÷|Y|-|R|÷|Y|2.余數(shù)和被除數(shù)、除數(shù)均采用雙符號位;初始余數(shù)為|X|。3.每次用余數(shù)減去|Y|(通過加上[-|Y|]補來實現(xiàn)),若結果的符號位為0,則夠減,上商1,余數(shù)左移一位;若結果的符號位為1,
21、則不夠減,上商0,先加|Y|恢復余數(shù),然后余數(shù)左移一位。2.循環(huán)操作步驟3,共做n+1次,最后一次不左移,但若最后一次上商0,則必須+|Y|恢復余數(shù);若為定點小數(shù)除法,余數(shù)則為最后計算得到的余數(shù)右移n位的值。,,40,例如: X=+0.1011, Y= - 0.1101用原碼恢復余數(shù)算法計算X÷Y。解:[X]原=0.1011 [Y]原=1.1101 |X|=0.1
22、011 |Y|=0.1101 [-|Y|]補=11.0011 QS = XS ⊕YS = 1 RS = 0,,得[Q]原=1.1101 [R]原=0.00000111,,11.1110,41,3、原碼不恢復余數(shù)算法,又稱為加減交替法:當某一次求得的差值(余數(shù)Ri)為負時,不是恢復它,而是繼續(xù)求下一位商,但用加上除數(shù)(+|Y|)的辦法來取代(-|Y|)操作,其他操作不變。其原理證明如
23、下:在恢復余數(shù)除法中,若第i-1次求商的余數(shù)為Ri-1,下一次求商的余數(shù)為Ri,則:Ri=2Ri-1-|Y|如果Ri>=0,商的第i位上1,并執(zhí)行操作:余數(shù)左移一位,再減|Y|,得Ri+1,則:Ri+1=2Ri-|Y|如果Ri<0,商的第i位上0,并執(zhí)行操作:恢復余數(shù)(+|Y|),將余數(shù)左移一位,再減|Y|,得Ri+1。其過程可用公式表示如下: Ri+1=2(Ri+|Y|)-|Y|=2Ri+2|Y|-|Y
24、|=2Ri+|Y|,,42,3、原碼不恢復余數(shù)算法,加減交替法的規(guī)則如下:余數(shù)為正時,商上1,求下一位商的辦法,是余數(shù)左移一位,再減去除數(shù);當余數(shù)為負時,商上0,求下一位商的辦法,是余數(shù)左移一位,再加上除數(shù)。若最后一次上商為0,而又需得到正確余數(shù),則在這最后一次仍需恢復余數(shù)。,,43,例如:X=+0.1011, Y=-0.1101,用原碼不恢復余數(shù)算法計算X÷Y。解:[X]原=0.1011 [Y
25、]原=1.1101 |X|=0.1011 |Y|=0.1101 [-|Y|]補=11.0011QS = XS ⊕YS = 1 RS = 0,[Q]原=1.1101 [R]原=0.00000111,44,二、原碼除法的硬件實現(xiàn),控制電路邏輯,45,原碼不恢復余數(shù)除法流程,46,三、陣列除法器,被除數(shù)X=X1 X2 X3 X4 X5 X6,除數(shù)Y=Y1Y2Y3得到的商Q=Q1Q2Q3(Q0=0
26、),R= R4 R5 R6。若為定點小數(shù),則X=0.X1 X2 X3 X4 X5 X6,除數(shù)Y=0.Y1Y2Y3,得到的商Q=0.Q1Q2Q3(Q0=0),R=0.000 R4 R5 R6構成的基本部件:可控加減單元CAS,47,三、陣列除法器,48,2.4 定點運算器的組成與結構,一、定點運算器的組成二、定點運算器的總線結構,49,一、定點運算器的組成,基本組成包括:算術邏輯運算單元ALU:核心部件暫存器:用來存放參與計算
27、的數(shù)據(jù)及運算結果,它只對硬件設計者可見,即只被控制器硬件邏輯控制或微程序所訪問 通用寄存器堆:用于存放程序中用到的數(shù)據(jù),它可以被軟件設計者所訪問。 內部總線:用于連接各個部件的信息通道。 其他可選電路,50,一、定點運算器的組成,設計定點運算器,如何確定各部件的功能和組織方式是關鍵,這取決于以下幾個方面:指令系統(tǒng)機器字長機器數(shù)及其運算原理體系結構,51,二、定點運算器的總線結構,1、單總線結構 單總線運算器的結構形式1
28、,,52,二、定點運算器的總線結構,單總線運算器的結構形式2,,53,2、雙總線結構 雙總線運算器的結構形式1,,54,雙總線運算器的結構形式2,,55,3、三總線結構,,最后必須指出的是,在分析某一種運算器的運算過程和通路時,一個基本的原則就是在一個CPU周期(一步)內,某條總線上的數(shù)據(jù)必須是唯一的,且不能保留(至下一個CPU周期)。,56,2.5 浮點運算及運算器,一、浮點加減運算二、浮點乘除運算三、浮點運算器,57,一、浮
29、點加減運算,假設兩個浮點數(shù)X和Y,則必須保證X和Y的階碼(指數(shù))是相同的,然后對尾數(shù)做加減運算。,58,浮點加減運算步驟,(1)0操作數(shù)檢查:以盡可能的簡化操作。(2)對階:原則是小階對向大階求階差ΔE=EX-EY,若ΔE≠0,即EX≠EY時需要對階。若ΔE>0,則EX>EY,MY每右移一位,EY+1,直至 EY=EX 。若ΔE<0,則EX<EY,MX每右移一位,EX+1,直至EX=EY 。(3)尾數(shù)相
30、加減(4)結果規(guī)格化:尾數(shù)運算的結果可能出現(xiàn)兩種非規(guī)格化情況:A、尾數(shù)溢出:需要右規(guī)(1次),即尾數(shù)右移1位,階碼+1B、|尾數(shù)| <2-1:需要左規(guī),即尾數(shù)左移1位,階碼-1,左規(guī)可能多次,直到尾數(shù)變?yōu)橐?guī)格化形式。(5)舍入:可采用截斷法、0舍1入法、末位恒置1。,59,,浮點加減運算流程,60,舉例:12位浮點數(shù),階碼4位,包含1位階符,尾數(shù)8位,包含1位數(shù)符,用補碼表示,階碼在前,尾數(shù)(包括數(shù)符)在后,已知: X=
31、(-0.1001011)×2001 Y=0.1100101×2-010 求Z=X+Y。,解:[X]浮 = 00,001 11.0110101 [Y]浮 = 11,110 00.1100101(1)對階ΔE=EX-EY=[EX]補+[-EY]補 = 00,001+00,010 = 00,011ΔE=3>0,將MY右移3位,EY加3:[Y]浮 = 00,001 00.0001
32、100 (101)(2)尾數(shù)相加: [MZ]補 = 11.1000001(101)(3)結果規(guī)格化:左規(guī)一位,無溢出:[MZ]補 = 11.0000011(01) [EZ]補 = 00,001 + 11,111= 00,000(4)舍入:按照0舍1入法,尾數(shù)多余位舍去結果為:[Z]浮 = 0,000 1.0000011,61,二、浮點乘除運算,1、浮點數(shù)乘法運算:假設兩個浮點數(shù)X和Y:,62,(1)0操作數(shù)檢查(
33、2)階碼相加:階碼相加可以采用補碼或者移碼的定點整數(shù)加法,同時對相加結果判溢,一旦發(fā)生正溢出,則需報告溢出,若發(fā)生負溢出,則將結果置為機器零。(3)尾數(shù)相乘(4)結果規(guī)格化:可能需要左規(guī)1位(5)舍入處理:尾數(shù)相乘的結果長度是尾數(shù)長度的兩倍,必須對低位舍入。,浮點乘法運算步驟,63,,浮點數(shù)乘法運算流程,64,二、浮點乘除運算,2、浮點數(shù)除法運算:假設兩個浮點數(shù)X和Y:,65,(1)0操作數(shù)檢查當除數(shù)為0,則報告除法出錯,或者
34、結果(商)無窮大;當被除數(shù)為0,則商為0。(2)階碼相減階碼相減的結果也可能溢出,若發(fā)生正溢出,則需報告浮點數(shù)溢出,若發(fā)生負溢出,則將結果置為機器零。(3)尾數(shù)相除(4)結果規(guī)格化(5)舍入處理,浮點數(shù)除法運算步驟,66,浮點數(shù)除法運算流程,,67,三、浮點運算器,68,本章小結,定點機器數(shù)的加減法運算:通過補碼來實現(xiàn)補碼的加減運算規(guī)則使得計算機中的減法轉化為加法來運算,方便了硬件設計。定點機器數(shù)的乘法運算乘法運算:原碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第二章 運算方法與運算器
- 第二章 數(shù)值數(shù)組及其運算 - search readpudncom
- [教育]運算方法與運算器
- 運算器的設計
- grasshopper運算器名稱總結
- 第二章有理數(shù)運算單元綜合評價
- grasshopper運算器逐一注解
- 基于fpga的浮點運算器設計
- 基于fpga的浮點運算器設計
- 實驗一脫機運算器實驗
- 數(shù)據(jù)結構課程設計--基本稀疏矩陣運算的運算器
- 初等函數(shù)運算器的設計研究.pdf
- 課程設計---稀疏矩陣加法運算器
- 數(shù)電課程設計報告---運算器
- 基于FPGA浮點運算器的研究.pdf
- 基于FPGA的浮點運算器設計.pdf
- 第二章《有理數(shù)及其運算》單元測試題
- 第二章有理數(shù)及其運算單元測試卷
- grasshopper中文版運算器名稱對照翻譯
- 第二章極限習題及答案極限的四則運算
評論
0/150
提交評論