浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器
第二章運算方法與運算器
運算方法:指算術(四則)運算和邏輯運算,在運算器的實現方法,而實現這兩種運算的硬設備就是算術邏輯部件ALU(Arithmetic
and Logic Unit)或稱運算器
由于邏輯運算及實現較簡單,所以本章主要討論計算機中算術四則運算以及運算器的邏輯結構。
2.1.1為什么要進行運算方法的研究
將實際數,用機器數表示;計算機特定的運算方式:定點,浮點;早期運算器只設加法器和寄存器;采用什么樣的額算法與運算器的結構密切相關,這兩者的設計是相互影響的
2.1.2一個實際數機內表示所面臨的問題
一個實際數通常由數符。數碼。小數點三部分組成,因此,講一個實際數機內表示要解決的三個問題:
符號的處理
兩種方法1.,一種是舍棄符號,采用無符號數表示;2另一種是采用符號,并對呼號加以處理;
處理符號只有一條途徑,符號數碼化。0表示正,1表示負,完全從定義出發得到的。
數碼處理
采用二進制數表示,優點:計算機中,數碼是有電瓶的高低來表示的,通常高電平代表1,低電平代表0,所以二進制方便,易實現
存在問題:二進制數碼效率太低,書寫冗長
引進組合二進制數—八十六進制數
具體方法是:從最低有效位開始,三位一劃分組成八進制數;四位一劃分組成十六進制數。
這種引進,主要是為了書寫方便而已,機器內表示并不區別(注意在計算機中式二進制,否則效率會降低,劃不來)
BCD碼
由于ASCII碼與BCD碼低四位相同,轉換方便(脫馬甲)
BCD碼中,不采用其它6個二進制數,需要校正
注意:.BCD中商業計算機用的很廣,有專門的硬件電路,因為ascii轉化二進制校正太復雜劃不來
二進制太長,惹人討厭,引入組合二進制,在機器不變只是書寫方便
3小數點處理
不能用數碼表示小數點,無法區分!怎么辦?
E叫做階碼,mi叫做原數,
當E=0時,參與運算的數是純小數,為定點小數格式 noa
當E=n時,參與運算的數是純整數,為定點證書格式
pdp-11
當E=m時,且n>m>0,參與運算的數是浮點數,m不確定浮點表示格式
2.1.3負數如何處理
1符號—絕對值表示
用二進制的最高位(最左邊位)用來表示符號,例如0表示正數,1表示負數,但是做運算行不通
2補碼表示方法
編碼方法:規律(+x) + (-x)=0?x表示十進制數
[-X]=[X]+1?[X]表示二進制的補碼
2采用補碼表示時,不管多少為二進制數多少位一定十進制數表示為-1,這樣就解決了補碼數的擴充問題(很重要)即可以簡單復制最高位
3補碼表示中 0
的表示法師唯一的?這在數學運算中十分有利
5采用補碼運算,符號位作為代碼可以與數位一起參加運算,無須單獨設置符號處理線路
6就大多數小型計算機ALU,只設加法器就可以了,采用了補碼運算后,補碼可以將正數加負數轉化為正數加正數。可以只設加法就可以了
反碼
優點:具有對稱性,生成容易
存在問題
1.+0
-0不一樣
2.
需要加權操作,即反碼運算若符號位有進位,則運算結果還要加1(很少使用)
由于補碼使用廣泛,重點講解
2.2.1補碼加減運算
補碼加法:兩個補碼表示的數相加,符號位參加運算,且兩數和的補碼等于兩書補碼之和
2.補碼減法
[-Y]補碼經[Y]補碼怎么得到,算法:最后一個1后不變,其他包括符號1變0
,0變1
2.2.2補碼的溢出判斷與檢測
超出容量,數值位跑到了符號位產生溢出
2溢出檢測方法
1,?直接判斷法,寫出各種情況
2,?采用變形補碼(雙符號位補碼)當結果兩位符號的值不一致時表示溢出
3,?采用雙高位判斷,數值部分最高位產生的進位與符號部分向上產生的進位不一致時表示溢出
2.2.4補碼定點加減運算的實現, 實現線路圖
2.3
加法器邏輯結構的改進
2.3.1全加器(加法單元)
加法單元式一個三端輸入,兩端輸出的加法網絡。
三個輸入端:被加數A1,加數B1和低位傳來的進位;兩個輸出端:和Si與本位向高位的進位Ci。當Ai,Bi和Ci-1的撒個變量中1的個數是奇數時,和Si=1:當三個變量中1的個數等于或大于2時,進位Ci=1
1串行加法器與并行加法器
加法器有串、并之分,只設一個全加器的加法器成為串行加法器
如何提高加法器的工作速度,
并行加法器解決了同事對數的各位相加,減少了本身求和延遲。然而,低位向高位產生的進位,姍姍來遲,提高加法器速度仍然是一句空話
所以必須解決進位鏈的問題
2進位鏈
通常我們將各位之間傳遞進位信號的邏輯連接構成的進位線路成進位鏈
對于ci關系式得出,AiBi,取決于本位參加的兩個數,而與低位的進位無關,稱其為第i位的進位函數,或稱為本地進位,記作Gi
1串行進位方式
即每一級進位直接依賴于前一級的進位,稱為串行進位
影響速度原因,所以必須斬斷鏈
2.并行進位方式
從串行進位方式得知,若想盡可能地減少進位傳遞時間,就要該串行進位位并行進位方式并行進位方式又稱為先行進位或同時進位
若想改串行進位方式為并行進位方式,則必須斬斷串行進位鏈,從數學角度就是去掉數據相關項。
每一項只需要2ty時間,但是沒有那么多的輸入項的門,所以要繼續改進
3.分組并行進位方式
具體做法如下:設加法器自唱16位,每4位一組,則可將進位鏈分為兩級
第一級:小組內采用并行進位鏈
第二級:小組間并行進位鏈
就是真正的解決了進位鏈的問題
2.4算術邏輯運算單元舉例
算術邏輯運算單元ALU又稱多功能函數發生器。通常以典型的四位ALU芯片(74181)為例,介紹其結構
一位ALU邏輯
將其分為三個部分:1有兩個半加器構成的全加器;對算術運算和邏輯運算的選擇控制門M,3由與或非組成的輸入選擇邏輯
2.5定點乘法運算
2.5.1原碼一位乘法
原碼一位乘法基本是從手算演變過來的,即用兩操作數的絕對值相乘,符號單獨“同號相乘為正,異號相乘為負”的原則處理
于是,原碼與原碼一位乘法,就變成如何進行兩個正數相乘的問題了
手算法存在問題:
1小數點的移動2常規加法器重,一次只能進行兩個數相加,無法解決n個數一次性相加3.n位數相乘2N+1加法器
需要解決:1小數點固定2一次只能進行兩個數相加3由n位加法器完成
必須進行算法改造:算術結果右移一位
實施方案:
考察乘數Y(被乘數和積已經體現在算法內了, 不用再考察)
1.?運算中,若Yi=1,+X操作;若Yi=0,則Yi=0,則不加X
說明Yi只起判斷作用。運算后,Y值無需保留。這樣,可將判斷Yi操作固定在最低位,即要求Y每完成一步操作,右移一位
2.由于相加在高N位進行,右移出的低位部分,可存入乘數寄存器空出的位置中
為了在機器中實現乘數運算,運算器必須設置三個寄存器AB、C,A寄存器用來存放部分積其初值為0和最后乘積的高位部分,B存放被乘數X、C存放乘數Y,運算后不再保留乘數Y、C寄存器存放乘積的低位部分。
開始Y裝乘數,算法結束后,Y裝的積的低位部分。
實際上本算法的實質是一個遞推關系。
2.5.2
較正法
考慮到,采用補碼后(相當于引入負數),當Y<0時[Y]補得位除最后一個1,與原碼相同外,它前面的每一位值,均與【Y】原表示相反,所以簡單套用上述不行。所以我們想到將補碼按普通原碼取反,然后將結構較正,使其得到【XY】補,這就是較正法的思想
具體算法:當Y>0時,直接按照補碼相乘的結果即為積的補碼,當Y<0時,按照補碼相乘后再加上【-X】的補碼才是積的補碼
比較法(重點)
比較法是由布斯夫婦提出的,它是由較正的統一公式出發進一步導出而得到的,
注意,比較法,比較的是Yn+1 與Yn 即 Yn+1 –
Yn得出運算下一步
補碼一位乘比較法的運算規則如下
1被乘數與部分積一般采用雙符號位,并參與運算。
2乘數可取單符號位以決定最后一步是否需要校正,即是否加【-X】
2.?乘數末增設附加位Yn+1,初始值為0
3.?根據Yn,Yn+1判斷位, 0, 0 部分積右移一位;0,1?+【X】補,部分積右移一位;1,0,
+【-X】補,部分積右移一位,;1,1部分積右移一位。
4.?運算n+1步,不移位
2.5.3補碼兩位乘法
將補碼一位乘法(比較法)的兩步合為一步進行
補碼兩位乘法,運算方法可概括為:
1、?被乘數與乘數均以補碼表示,且它們的符號參加運算。
2、?設部分積補值為0,并設置了三個符號位。若乘數Y,數值部分的位數為偶數,前設兩個符號位;若乘數Y數值部分的位數為奇數,前設1個符號位,且設Yn+1=0、
3、?運算步驟:根據Yn-1、Yn、Yn+1判斷操作如上表。
4、?若乘數Y數值部分的位數為偶數,最后一步不移位、若乘數Y數值部分的位數位技術最后一步移一位
2.6定點除法運算
2.6.1原碼恢復余數法
算法步驟:
1、?符號單獨處理:Qs=Xs異或Ys,取絕對值相除。
2、?做減法,若不溢出(定點小數,要求商小于1)運算開始。
3、?若余數(R)為正,表示夠減,商上”1”,左移一位,做減法(+[-Y]補);若余數為負,表示不夠減,商上“0”,恢復余數(加上減數),左移一位,做減法(+[-Y]補)
4、?重復N步
5、?最后一步余數為負(不夠減),應恢復為正余數。
2.6.2原碼不恢復余數法
設連續三個余數為Ri-1、Ri、Ri+1,用定流量方法考查原碼恢復系數上商規則,有:
Ri>0,商上1,Ri+1=Ri-Y
Ri<0,商上0,Ri+1=2(Ri+Y)-Y=2Ri+Y
該式表明,當出現不夠減時,可不恢復余數,商上0后直接做右移一位做加法:2Ri+Y。這種方法稱為原碼加減交替法,即不恢復余數法。
總結:算法與計算機具體實現結合起來考慮,才能評價,單從理論求解來看不恢復余數法更好,但是結合計算機硬件實現,恢復余數法更優。
2.6.2補碼加減交替法
步驟概括:1比較
2上商 3下一步操作 4商符 5商的較正
注意:正商即為補碼商;負商要上反碼商,(因為補碼商不好算,。用反碼商+1較正)
由表格可以看出:R與Y同號上商1,左移一位,+[-Y]補;異號,上商0,左移一位,+[Y]補
上商符?兩種常見做法:(以下所說特指商符號,其實除商符號外,其余位商兩種方法結果相同)
1第一步先做X補+(-)Y補,
如果X、Y同號,做X補-Y補, 如果X、Y異號,做X補+Y補
這種方法的優點是:求商符與求商值的規則一致。
2一開始就將被除數X當作初始余數ro,ro、Y同號商符為1,ro、Y異號商符為0,顯然,按商值規律求得的商符與正確值相反,將它稱作假商符,通過求反將它較正
商的較正(注意這是近似算法,但是誤差在2(-n))
1對于第一種方法:采用末位恒置1,即+2(-n)修正
對于第二種方法:令假商加(1+2(-n)),即獲得較正法的真商。
對于余數注意:如11.1110 右移四位得到,111111.1110
2.7浮點四則運算
2.7.1浮點加減運算
算法步驟:1求階差,對大階(使階碼相等)2尾數運算3進行規格化處理,|w|>=0.5
;4。舎入處理:采用0舎1入法,由于原數部分右規溢出位為0,舍去。
5判斷溢出:由于階碼兩符號位相同,不溢出。
總結:通過加法,可以類比減法。乘除法也可以由加法,得到。本章結束
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本科计算机专业在车辆段,机电与轨道车辆工
- 下一篇: Win10 C盘空间越来越小怎么办