軟件工程-03計算機組成原理_第1頁
軟件工程-03計算機組成原理_第2頁
軟件工程-03計算機組成原理_第3頁
軟件工程-03計算機組成原理_第4頁
軟件工程-03計算機組成原理_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三 運算方法和運算部浮點數(shù)運算及其運算部高級語言和機器指令C整數(shù)算術(shù)運算、浮點數(shù)算術(shù)按位、邏輯、移位指令集中與運算相關(guān)的指令(以MIPS為參考算術(shù)運帶符號整數(shù)運符號擴除算術(shù)移無符號整數(shù)運算:0邏輯運移位操作:邏輯左移/邏輯右一、移位移位的意

15.米1500.機器用 15相對于小數(shù)點左移位 在計算機中,合,能夠?qū)崿F(xiàn)碼制添補代正原碼、補碼、反0負 0 1例3.1設(shè)機器數(shù)字長為8位(含一位符號位)解 A=– =–移位移位對應的真–1–2–1–2–移位對移位對應的真移位–1–2–1–2–移位對應的移位對應的真–1–2–1–2–(a)(a)(b)(c)(d)負數(shù)的反1出正正1影響影響精影響精正 邏輯移 無符號數(shù)的移邏輯左

低位添 邏輯右例算術(shù)左

添0,低位 丟算術(shù)右

(補碼一、ALU ……四位

Ki不同取值Fi不同M=M=

邏輯運S3~ 不同取值一位半加器(不考慮進位一位全加器(考慮進位

Fi=Xi⊕Yi⊕Ci-Ci= i+(Xi+Yi)Ci-=G+P

Gi=X

Ci-進位產(chǎn)生

Pi 進位傳遞函串行進位加

C0=G0+P0C-1=G0?P0C-C1=G1+C2=G2+

Gi=

Pi=C3=G3+

設(shè)與非門的級延遲時間為&&&& C-&&&&&&&&&&&& 4全加器產(chǎn)生進位的全部時間為

C0=G0+P0C-C1=G1+P1C0=G1+P1G0+P1P0C-

用與或非門C2=G2+P2C1=G2+P2G1+P2P1G0+P2P1P0C-C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C- =G+PC-

&&&&&111&&&&111超前進

1

一位ALU運算方式選

Zi=FA的輸

實現(xiàn)何種運算6.4位ALU兩種工作方式:正邏輯和負FFiXi

0

邏輯運 FiFiXiYi

1

算術(shù)運 74181的算術(shù)/邏輯運算功能(正邏輯方式用SN74181現(xiàn)不同位數(shù)的16位 片間串行進PG片PG片間并行進P0P1P2P364位P3P3CP Cn+xP3Cn+xP3 定點數(shù)加/減運算及其運算部運乘法運算及其運算部法除法運算及其運算部法運一、加減法小小(2A–B=A+(–B[AB]補A+(–B)]補A]B]小數(shù)[A–B]補=[A+(–B)]補=[A]B]

(mod2n+1)(mod2)連同符號位一起相加,符號位產(chǎn)生的進證A>0①│B│>A(A+B<0=[A]補+[B]②│B│<A(A+B>0=A+2+B(mod=[A]補+[B]例 已知[y]設(shè)[y]y0y1[y][y]0.y1y2

求[y][[-y]1.y1y2…yn+[y]即得[y] [y]1.y1y2[y]補連同符號位在內(nèi),每位取末位即得[y] y]0.y1y2yn2-舉例 設(shè)A=0.1011,B=–求[A+B] 驗解:[A]

0.101 1.101

100110AB]

∴A+B 0.011例 設(shè)A=–9,B=求[A+B] 驗解:[A]+[B]

1,011 1,101

–+–∴A+B=–

–例3.5 且A=15,B=24,用補碼求A–B解 A=15B=24= [B]B]=[A]B]= AB]∴A–B=–1001=

設(shè)x= y 用補碼解 x=[x]補= [y]補=[x]+[y]補=xy0.1100= 同理設(shè)機器數(shù)字長8位(1位符號)A97,B41,用補碼–AB 溢出兩數(shù)符號不硬件實最高有效位的進位⊕符號位的進位= 溢 0= 1= 0=

1 -7-6=-7+(-6)=

-3-5=-3+(-5)=-√

1+10 1+10

1 1

溢出現(xiàn)象:(1) 和 的進位不和的符號位和加數(shù)的符號位不(2)[x]補

1>x≥4+ 0>x≥–1(mod[x]補y]補xy]補(mod[x–y]補x]補y]補(mod時仍然是一位符號位,運算時擴充為兩-7-6=-7+(-6)=1 1

-3-5=-3+(-5)=-√1 1 1

1

未溢

00.結(jié)果的雙符號位不 溢

10,01,An

0101Bn

補碼加減運算二、原碼加/減運符號位和數(shù)值部分分開處僅對數(shù)值部分進行加減運符號位起判斷和控制作運算規(guī)則比較兩數(shù)符號,對加法實行“同號求和,異號求差對減法實行“異號求和,同號求差” 求差:被加數(shù)(被減數(shù))加上加數(shù)(減數(shù))的補碼最高數(shù)值位產(chǎn)生進位表明加法結(jié)果為正,所得數(shù)值位正差的符號情況下,符號位取被加數(shù)(被減數(shù))的符號情況下,符號位為被加數(shù)(被減數(shù))的符號取反三、移碼加/減運+[x]移+[y]補=[x+y] (mod 1+[x]+[-y]補=[xy]移(mod2n+1移碼和補碼的數(shù)值位相 [x]移=2n+x(2n>x≥-2n)[x]移+[y]移=2n+x+2n+y移=2n+(2n+x+y)=2n+[x+移又:[y]補= 1++[x]移+[y]補=2n+x+ 1+=2n+1+[x+移+=[x+y] (mod 1+同理 [x]移+[-y]補=[x-y]為防止溢出, 符號位的階碼加法正 正規(guī)定:移碼的最高符號 恒用“0”參加運 結(jié)果符號 上例:x= 求[x±y] 下移=01,011 [y]補=00,110 [y]補=11,010[x+y]移=[x]移+[y]補=01,011+00,110 (上溢[x-y]=[x]+[-y]=01,011+ (mod25,-3四、乘法運分析筆算乘A=– B=A×B=–0.110

乘積的符號心算求×0.1011101100001100.1000111

符號位單獨處個位積一起相乘積的位數(shù)擴大一筆算乘法改A×B=A×=0.1A+0.00A+0.001A=0.1A+0.00A+0.001(1×A=0.1A+0.01[0×A+0.1(1×A右移一

=0.1{1×A+0.1[0×A+0.1(1×A+=2-1{1×A+2-1[0×A+2-1(1×A+2-1(1×第一步被乘數(shù)A+ 第二 1,得新的部分 …第三步部分積+被乘 …第八 1,得結(jié) 改進后的筆算乘法過程(豎式0.0000.110101=乘數(shù)為1,加被乘0.1100.0110.110110=乘數(shù)為1,加被乘數(shù)1.0010.1000.0001111=乘數(shù)000.1000.0100.1101111=乘數(shù)1乘數(shù)1.000110.1001111,得結(jié)小乘法運 加和移位。n=4,加4次,移41形成新的部分積,同時乘數(shù)1(末位移丟),空出存放部分積的低位。被乘數(shù)只與部分積 相 原碼設(shè)[x]=[y]=

[x?y]=

y0).

… x*y*=

……yn

乘積的符號位單獨處理數(shù)值部分為絕對值相乘

x*?y*= =x*(y12-1+y22- …+yn2-=2-1(y1x*+2-1(y2x*+…2-1(ynx*+0)…)p0=

p1=2-……pn=2-1(y1x*+pn-例 已知x=– y= 求[x?y]解:數(shù)值部分的運部分 乘 說邏輯邏輯

0.0000.1110.1110.0110.0000.0110.0010.1111.0000.1000.1111.0110.101

110=011=0101=1110=11011

部分p01,1,1,1,例3.7①乘積的符號位 y0= 0=②數(shù)值部分按絕對值x*?y*=0.1011011則[x?y]=1.1011011特 絕對值運32加C64乘積寄存器右移寫使控制計數(shù)器時乘數(shù)寄存器被乘數(shù)寄存器移位和加受末原碼兩原碼 符號位和數(shù)值位部分分開運 積是否加和如何加被乘數(shù)乘數(shù)yn-1新的部分02021212先1的被先1的被乘再4的被乘3?– – 乘數(shù)判斷位yn-標志位00 2,2,Tj保持00 2,2,Tj保持10 2,2,Tj保持10 2, 置“101 2, 置“001 2, 置“011 2,2Tj保持11 2,2,Tj保持

+[–x*]

2補碼例 已知x=0.111111y=–0.111001求[x·y]解:數(shù)值000.00000000.11111000.11111

乘 00.11100

p0+x*,T0=000.00111補 001.11111 010.00110

1 00111 1

+2x*,T1= 000.10001111.00000111.10010補 111.11100 000.11111 000.11100

011 001 01100011 0 00011

–x*,T2=2+x*,T3=例3.8①乘積的符號位 y0= 1=x*?y*=0.11100000011則[x?y]1.11100000011特 絕對值的補碼運用移位的次數(shù)判斷乘法算術(shù)移原碼一位 原碼兩位符號 操作 絕對 絕對值的補移移位次

邏輯右n

算術(shù)右(n22最多加法次 2思考n為奇數(shù)時,原碼兩位最多(以小數(shù)為例設(shè)被乘數(shù)[x]補= [2-1 =x.xx

- n 算術(shù)移1[2-1(-0.110)]=[-0.0110]= 乘 [y]補=y=[y]

y為正時y0= …yn= …yn

y為負時y0

已知

補和

補求[x·x0.y1…yn–y0)]- - =[x(y12+y22+…- -

–y0x(y12+y22+… )–xy0]=[x]補(y12-1+y22-2+…+y2-n)+[– · 求[x·y]補是用[x]補乘以[y]補的數(shù)

y為正,不②Booth算法(被乘數(shù)、乘數(shù)符號任意–[x]補=+[–x]設(shè)[x]補=x0.x1x2…xn [y]補=y0.y1y2 –[x]補=+[–x]=[x]補(0.y1…ynx]·2-1=20–2-2-1=20–2-=補(y12+y22 +yn2)–[x]補·2-2=2-1–2-=[x](–y+y2-1+y2-2-2=2-1–2-… …=[x]補[–y0+(y1–y12-1)+(y22-1–y22- +(y2-(n-1)–y2-=[x][(y–y

–y +…+(y n+(0–y

- -(n- - - -=[x]補 +…+(yn+1–yn)2y’12-1+…+y’n2-

附加③Booth算法遞推公[p0]補=-…[p1]補=2{(yn+1–yn)[x]補+[p0]補 yn+1=…-[pn]補2{(y2–y1)[x]補+[pn-1]補00110101010操00110101010操1111如何實 例 知x= y=–0.1011求[x·y]解:0000011.11011.11011.11100.001

1.0101101

+[–x] +[x]

[x]=[y][–x]=算術(shù)00000移位0000011.11011.11011.11100.00100.00000.00011.110

1 10111 111111

+[–x] +[x] +[–x]

[x·y]11.110

111

最后一步不移Booth32減加C64乘積寄存器右移寫使控制計數(shù)器時乘數(shù)寄存器被乘數(shù)寄存器P、X、 均n+2移位和加受末兩位乘數(shù)Booth’s算法實middleof110end110當前右邊操10減被乘11加0不操作01加被乘00加0不操作最初提出這種想法是因為在Booth移位操作比加法更快補碼兩位乘(略乘數(shù)判斷位yn--[pi+1]補2[pi]-[pi+1]補=2{[pi]補+[x]補-[pi+1]補=2{[pi]補+[x]補-[pi+1]補=2pi]補+2[x]補-[pi+1]補=2pi]補+2[-x]補-[pi+1]補=2pi]補+[-x]補-[pi+1]補=2pi]補+[-x]補-[pi+1]補2[pi]六、快速乘快速乘法器的實–流水線方–硬件疊加方式(如:陣列乘法器陣列乘法–用一個實現(xiàn)特定功能的組合邏輯單元構(gòu)成一個陣乘法代替小數(shù)點原碼乘符號單獨處理補碼乘符號然形成原碼乘去掉符號位運算即為無符號數(shù)乘不同的乘法運算需有不同的七、原碼除分析筆算除x=–

y=0.110

商符單獨0.110

0.1011⌒0.0110 ⌒0.010010.00110 0.00010100.00001100.0000011

心算上上商位置x÷y0.110 商符心算求0.0000011減右移一位的除數(shù)上商位置不固

機器除符號位異或形|x||y|0|x||y|0“0”減除數(shù)在寄存器最末位原碼除法(以小數(shù)為例[x0]原=x0.x1x2…… [y0]原=y0.y1y2…… [x = x*y*=

……

商的符號位單獨處理x0數(shù)值部分為絕約 被除數(shù)不等0

除數(shù)不能0恢復余例

x=– y=–

求[xy原解原= [y]原=y原① y0= 1=

[y*]0.1101y*]②邏輯邏輯

被除數(shù)(余數(shù)0.1011.0011.1110.1100.1011.0111.0010.1001.0011.001

0.00000000

y*]余數(shù)為負,上商0恢復余數(shù)+[y*]補1+[–y*]余數(shù)為正,上商1y*]被除數(shù)(余數(shù)0.0100.1011.0011.1100.110

0101011

余數(shù)為正,上商1y*]余數(shù)為負,上商恢復余數(shù)+[y*]邏輯x∴[

0.1011.0101.0010.011x*=]原

0110110110

恢復后的1y*]余數(shù)為正,上商第一次上商判余數(shù)為正

4余數(shù)為

上商0,恢復不恢復余數(shù)法(加減交替法余數(shù) 上商

Ri+1=2Ri余數(shù) 上商“0”,Ri+ 恢復余Ri+1=2(Ri+y*)–y*=2Ri+上商Ri+1=2Ri–上商Ri+1=2Ri+加減交例

x y 求[x]01011.001

0.000

y*]

第一

[x]1.111

余數(shù)為負,上商

[y]

=1.1100.110 0.100

+[y*]0 余數(shù)為正,上商

[y*][–y*] 1.001 0 y 1.001y移0.0100.1011.0011.1101.1010.1100.011

01010110110110

+[y*]余數(shù)為正,上商1y*]余數(shù)為負,上商1+[y*]余數(shù)為正,上商例3.11x0⊕y0=1⊕1=x*/y*=∴[x*/y*]特 上商n+1用移位的次數(shù)判斷除法原碼加減交替除法硬件定點整數(shù)相除:在除數(shù) 添n個余數(shù)寄存器R:初始 部分為高32位被除數(shù);結(jié)束時是余數(shù)余數(shù)/商寄存器Q:初始時為低32位被除數(shù);結(jié)束時是32位商補碼除商值的確①比較被除數(shù)和除數(shù)絕對值的xy同號用減x=y=x=–y=–

[x][y][x][y]

[x]+[–y]補=[Ri]補[x]+[–y]=[Ri]補

xy異號用加x=y=–x=–y=

[x][y]

[x][x]+[y]

+[y]1.1101[Ri]補+[y]1.1101[Ri]補[Ri]補[Ri]補小[x]補和[y]求[Ri][Ri][y]同異[x]補y][x]補y]同號,“夠減異號,“夠減②

末位恒置“1[x]補與[y]補同 0 原 按原碼上 “夠減”上正[y]補

反 按反碼上

“不夠減”上“夠減”上負 “不夠減”上[x]補與[y]商[Ri]補與[y]商值正夠減(同號不夠減(異號 原碼上0負夠減(異號不夠減(同號0反碼上1[R[Ri]補與[y]商10商符的除法過程中自然形 [x]補–[y] 比較[Ri]補和[y]同號(夠異號(不夠

原碼正補和[y]補異 [x]補+[y] 比較[Ri]補和[y]異號(夠反碼上同號(不夠負 加減交[Ri]補[y]商新余12[Ri][–y]02[Ri][y]例 設(shè)x=– y=y求x]并還原成真y解:[x]補= [y]補= [–y]補=1.0100.1100.0010.0101.001邏 1.011左 0.1110.1101.101

0.000111110

1+[–y]異號上1+[y]異號上 x1.011101.01110 0.110+[y]0.001100 同號上0.0111001 1則

]補=yx=–y置小補碼除法共上商n+1次(末位恒置邏輯左)第一次邏輯左nn第一次商可判溢精度誤差最大2-整數(shù)被除數(shù)經(jīng)符號擴展后成2n一、浮點加xy對xy

x=S·

y=S·

jx 已對x向y看 1,Δj=jx–jy

> jx>

yx

1,jyxy看齊

1,<

yx

1,j對階原小階向大階

為什么例如x= y=x+y[x]=00,01;對

[y]00,11

[Δj]補=[jx]補–[jy] =00, 11,11,階差為負(

∴ jx+尾數(shù)求

[Sx] [Sy]

=補=補

對階后的[Sx]補[x+y]00,1111規(guī)格規(guī)格化數(shù)的2r= 1≤|S|2規(guī)格化數(shù)的

規(guī)格化形

S<

規(guī)格化形真 0.1××原 0.1××

真 –0.1××原 0.1××× 反 0.1×× 反

1.0××1.0××原碼不論正數(shù)、負數(shù),第一數(shù)位為補碼符號位和1數(shù)位S=– =–0.100…2[S]原=1.10 1.[1.

0 …0 ∴[–1 不是規(guī)格 S=–[S]補=1.00 ∴[–1]補是規(guī)格化的

機器判別方尾數(shù)1,階碼1,直到數(shù)符和第一數(shù)位不同為止上例[x+y]=00,11;111001左規(guī)后[x+y]補00,10;11∴x+y=(–右尾數(shù)溢出(>1) 1,階碼加1例 x=0.1101× y=0.1011×x+y(除階符、數(shù)符外,階碼取3位,尾數(shù)取6 [x]補=00,010;00.[y]00,001;00[Δj]jx]jy]

=00,+11,100,階差

∴ y補'00,010;00.[Sx]補00.+[Sy]補'00.01.

對階后的[Sy]補尾數(shù)溢出需[x+y]=00,010;01.右規(guī)[x+y]=00,01100.∴x+y=0.舍過程中,可能出現(xiàn)尾數(shù)末位丟失0101尾數(shù)為原碼時,多余位的 為1,1否則,舍 ,其它情況“1IEEE754舍入模式 例 x=(–5)×2- y=7)×2 x–y(除階符、數(shù)符外,階碼取3位,尾數(shù)取6)x0.101000)×2-[x]11,011;11.

y=(0.111000)×2-100[y]11,100;00.111000[Δj]jx]jy]

=11,+00,11,

∴Sx→ jx+[x]補11,100;11.②[Sx]補′=11.+[–Sy]11[x+y]11100;10.右規(guī)[x+y]11101;11∴x–y=(–0.100110)×2-=(–19)×2-溢出判設(shè)階符272位,尾數(shù)n在數(shù)軸上的表示為

按機器零上 下 上對 對階01,

負浮點最小

正浮點0最大正

階××·· ;11.00

最小

2127×(1–2-最大負

;00.100…2-128×2- ;11.011–2-128×(2-1+2-二、浮點乘xx=S·xy乘y

y=

溫馨提示

  • 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

提交評論