




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章第四章 數據的機器運算數據的機器運算n計算機的主要功能是對數據進展各種加工和處置,包括計算機的主要功能是對數據進展各種加工和處置,包括加、減、乘、除這些根本的算術運算,與、或、非這些加、減、乘、除這些根本的算術運算,與、或、非這些根本的邏輯運算,以及由此構成的其它復雜的運算。運根本的邏輯運算,以及由此構成的其它復雜的運算。運算器那么是實現這些運算的主要部件。算器那么是實現這些運算的主要部件。n無論多么復雜的運算,最終都要分解為加法運算來實現。無論多么復雜的運算,最終都要分解為加法運算來實現。其中,減法運算經過補碼轉化為加法來實現其中,減法運算經過補碼轉化為加法來實現 ;乘、除運;乘、除運
2、算可以轉換為加減運算、移位操作來實現。加法和移位算可以轉換為加減運算、移位操作來實現。加法和移位是計算機中最根本的兩種運算操作。是計算機中最根本的兩種運算操作。n可見,加法器又是運算器的中心部件。在加法器的根底可見,加法器又是運算器的中心部件。在加法器的根底上添加移位功能,并經過選擇輸入控制條件,就可以實上添加移位功能,并經過選擇輸入控制條件,就可以實現一切的運算。現一切的運算。 本章主要內容本章主要內容主要內容主要內容算術、邏輯運算的實現算術、邏輯運算的實現定點加、減運算定點加、減運算數的移位和舍入操作數的移位和舍入操作定點乘、除運算定點乘、除運算規格化浮點運算規格化浮點運算一、算術邏輯運算
3、的實現一、算術邏輯運算的實現 計算機中最根本的算術運算是加法運算,不論加、計算機中最根本的算術運算是加法運算,不論加、減、乘、除運算最終都可以歸結為加法運算。所以減、乘、除運算最終都可以歸結為加法運算。所以首先討論最根本、最中心的運算部件首先討論最根本、最中心的運算部件加法器,加法器,以及并行加法器的進位問題。以及并行加法器的進位問題。加法器是由全加器和其它必要的邏輯電路組成的,加法器是由全加器和其它必要的邏輯電路組成的,所以我們從全加器開場討論。所以我們從全加器開場討論。1 1、全加器、全加器FAFAn全加器全加器FA是最根本是最根本的運算單元,由它構成的運算單元,由它構成加法器。加法器。n
4、全加器有三個輸入量:全加器有三個輸入量:操作數操作數Ai、Bi、以及低、以及低位傳來的進位信號位傳來的進位信號Ci-1 。n全加器有兩個輸出量:全加器有兩個輸出量:本位和本位和Si、以及向高位、以及向高位的進位信號的進位信號Ci。 Ai Bi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 全加器真值表全加器的邏輯方程和電路全加器的邏輯方程和電路根據真值表得:根據真值表得: Si=AiBiCi-1 Si=AiBiCi-1 Ci=AiBi+(AiCi=AiBi+(
5、AiBi)Ci-1Bi)Ci-1 Si : Si : 本位和本位和 Ci : Ci : 向高位的進向高位的進位位實現電路實現電路邏輯框圖邏輯框圖一個全加器只完成一位加法一個全加器只完成一位加法全加器構成加法器全加器構成加法器n全加器并不存儲信息,可用門電路來實現。用全加全加器并不存儲信息,可用門電路來實現。用全加器可以方便地構成加法器。加法器分為串行加法器器可以方便地構成加法器。加法器分為串行加法器和并行加法器。和并行加法器。 n串行加法器只需一個全加器,數據逐位串行送入加串行加法器只需一個全加器,數據逐位串行送入加法器進展計算。由于運算速度慢,普通不用。法器進展計算。由于運算速度慢,普通不用
6、。n并行加法器那么由假設干個這樣的全加器構成,各并行加法器那么由假設干個這樣的全加器構成,各位數據同時運算。并行加法器的位數與操作數的位位數據同時運算。并行加法器的位數與操作數的位數相等。并行加法器的最長運算時間主要取決于進數相等。并行加法器的最長運算時間主要取決于進位信號的傳送時間。例如:位信號的傳送時間。例如:1111和和0001相加,相加,最低位產生的進位將逐位影響到最高位最低位產生的進位將逐位影響到最高位.n由此可見,提高并行加法器速度的關鍵是盡量加快由此可見,提高并行加法器速度的關鍵是盡量加快進位產生和傳送的速度。進位產生和傳送的速度。2 2、進位產生與傳送、進位產生與傳送n進位鏈的
7、概念:進位鏈的概念:n并行加法器中的每一個全加器都有一個從低位送并行加法器中的每一個全加器都有一個從低位送來的進位輸入和一個傳送給高位的進位輸出。我們把來的進位輸入和一個傳送給高位的進位輸出。我們把構成進位信號產生和傳送的邏輯網絡稱為進位鏈。構成進位信號產生和傳送的邏輯網絡稱為進位鏈。n進位鏈上每一位的進位表達式為:進位鏈上每一位的進位表達式為:n Ci=AiBi+(Ai Bi)Ci-1 n設設Gi=AiBi ,稱為進位產生函數,稱為進位產生函數nPi=Ai Bi ,稱為進位傳送函數,稱為進位傳送函數n 進位表達式進位表達式 Ci=Gi+PiCi-1串行進位串行進位n把把n個全加器串聯起來,就
8、可以實現兩個個全加器串聯起來,就可以實現兩個n位數的相加。這種加法器位數的相加。這種加法器稱為串行進位的并行加法器,串行進位又叫行波進位。稱為串行進位的并行加法器,串行進位又叫行波進位。 FAFAFAC1C2Cn-1CnA1B1A2B2AnBnS1S2SnC0其中:其中:C1=G1+P1C0 C2=G2+P2C1 Cn=Gn+PnCn-1n串行進位的并行加法器,總的延遲時間正比于字串行進位的并行加法器,總的延遲時間正比于字長,字長越長,總延遲時間也越長。長,字長越長,總延遲時間也越長。n假設一位進位需假設一位進位需2ty時間,完成時間,完成n位進位就需求位進位就需求2nty.n要提高加法運算速
9、度,必需改良進位方式。要提高加法運算速度,必需改良進位方式。 3 3、并行加法器的快速進位、并行加法器的快速進位l改良串行進位方式的根本思緒是讓各進位同時構成,防止各進位之改良串行進位方式的根本思緒是讓各進位同時構成,防止各進位之間的依賴關系。如今來分析一下進位關系。間的依賴關系。如今來分析一下進位關系。 l展 開展 開 C 1 = G 1 + P 1 C 0 ; C 2 = G 2 + P 2 C 1 ; ,Cn=Gn+PnCn-1 得關系式:得關系式:l C1=G1+P1C0l C2=G2+P2C1=G2+P2G1+P2P1C0l C3=G3+P3C2=G3+P3G2+P3P2G1+P3P
10、2P1C0 l C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1 +P4P3P2P1C0l l以上進位輸出只與以上進位輸出只與Gi、Pi以及最低進位以及最低進位C0有關,而且不依賴有關,而且不依賴于其低位進位于其低位進位Ci-1的輸入,因此各級進位可以同時產生,構成并行的輸入,因此各級進位可以同時產生,構成并行進位。進位。并行進位的特點并行進位的特點n并行進位的特點是各級進位信號同時構成,與字長無并行進位的特點是各級進位信號同時構成,與字長無關,提高了整體運算速度關,提高了整體運算速度 。并行進位又叫先行進位。并行進位又叫先行進位。n最長延遲時間僅為最長延遲時間僅為2ty。
11、n隨著加法器位數的添加,隨著加法器位數的添加,Ci的邏輯表達式會變得越來的邏輯表達式會變得越來越長,輸入變量會越來越多,電路構造也會變得越來越長,輸入變量會越來越多,電路構造也會變得越來越復雜,導致電路實現也越來越困難。越復雜,導致電路實現也越來越困難。n并行進位方式需繼續改良,才干有適用價值。這就是并行進位方式需繼續改良,才干有適用價值。這就是下面要引見的分組進位方式。下面要引見的分組進位方式。n以以16位加法器為例,將其分為位加法器為例,將其分為4組,每組組,每組4位。位。n在組內,按照并行進位函數直接產生在組內,按照并行進位函數直接產生C1C4,這,這些進位可同時得到。實現這種進位邏輯的
12、電路稱些進位可同時得到。實現這種進位邏輯的電路稱為為4位先行進位電路位先行進位電路CLA,如,如74181ALU。n利用這種利用這種4位一組的位一組的CLA電路和電路和4位全加器可以構位全加器可以構成成4位位CLA加法器。留意,加法器。留意,4位位CLA加法器包含了加法器包含了兩部分邏輯:兩部分邏輯:4位全加器和位全加器和4位一組的先行進位鏈,位一組的先行進位鏈,這個組內的進位為一級進位。這個組內的進位為一級進位。 n在組間,每個組的進位輸入是前一個組的進位輸在組間,每個組的進位輸入是前一個組的進位輸出,而每個組的進位輸出是下一個組的進位輸入出,而每個組的進位輸出是下一個組的進位輸入.構成構成
13、1616位加法位加法器很容器很容易實現易實現 單級先行進位單級先行進位單級先行進位續一單級先行進位續一n上述組內并行、組間串行的進位方式也稱為單級先上述組內并行、組間串行的進位方式也稱為單級先行進位方式,原理如以下圖所示。行進位方式,原理如以下圖所示。單級先行進位續二單級先行進位續二n組內并行、組間串行進位的時間圖組內并行、組間串行進位的時間圖(16位位)如下:如下:n完成進位時間完成進位時間8ty.n進位時間與組數成正比,組數越多,進位時間越長。進位時間與組數成正比,組數越多,進位時間越長。多級先行進位多級先行進位n為闡明問題,我們無妨仍以為闡明問題,我們無妨仍以16位加法器為例,依然位加法
14、器為例,依然4位一組,分成位一組,分成4個小組,先就第一小組的進位輸出函個小組,先就第一小組的進位輸出函數數C4做一下分析:做一下分析:nC4 = G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0n G1* P1*n = G1* +P1*C0n G1*稱為組進位產生函數,稱為組進位產生函數,P1*稱為組進位傳送函數;稱為組進位傳送函數;這兩個函數類似于進位產生函數這兩個函數類似于進位產生函數G和進位傳送函數和進位傳送函數P.多級先行進位續一多級先行進位續一n四個組內的最高進位四個組內的最高進位C16C16、C12C12、C8C8、C4C4可以分別表示為可以分別表示為: :n
15、 C4 = G1 C4 = G1* * + P1 + P1* * C0 C0n C8 = G2 C8 = G2* * + P2 + P2* * C4 C4n C12 = G3 C12 = G3* * + P3 + P3* * C8 C8n C16 = G4 C16 = G4* * + P4 + P4* * C12 C12n如今逐項代入、并展開得關系式:如今逐項代入、并展開得關系式:nC4 = G1C4 = G1* * + P1 + P1* * C0 C0nC8 = G2C8 = G2* *+P2+P2* *C4=G2C4=G2* *+P2+P2* *G1G1* * +P2 +P2* *P1P1
16、* *C0C0nC12 = G3C12 = G3* *+P3+P3* *G2G2* *+P3+P3* *P2P2* *G1G1* * +P3 +P3* *P2P2* *P1P1* *C0C0nC16 = C16 = G4G4* *+P4+P4* *G3G3* *+P4+P4* *P3P3* *G2G2* *+P4+P4* *P3P3* *P2P2* *G1G1* *+P4+P4* *P3P3* *P2P2* *P1P1* *C0C0n可以看出,這可以看出,這4 4組進位構造與前述組進位構造與前述4 4位先行進位邏輯完全一位先行進位邏輯完全一樣,組間進位信號只與最低進位樣,組間進位信號只與最低進
17、位C0C0有關,所以能同時產生。有關,所以能同時產生。多級先行進位續二多級先行進位續二n組內進位信號能同時產生、組間進位信號也能同時產組內進位信號能同時產生、組間進位信號也能同時產生,由此可以構成多級并行進位邏輯。生,由此可以構成多級并行進位邏輯。16位位2級先行級先行進位加法器如以下圖所示。進位加法器如以下圖所示。多級先行進位續三多級先行進位續三n問題是這問題是這4個組間進位信號如何用硬件來產生呢?個組間進位信號如何用硬件來產生呢?對于多級先行進位的實現可以按如下思緒來了解:對于多級先行進位的實現可以按如下思緒來了解:n先把單級先行進位加法器的串行進位鏈斷開;先把單級先行進位加法器的串行進位
18、鏈斷開;n添加一級先行進位鏈,這個新添加的先行進位鏈的添加一級先行進位鏈,這個新添加的先行進位鏈的進位稱為二級進位;進位稱為二級進位;n組間進位信號組間進位信號C4、C8、C12、C16由二級進位鏈由二級進位鏈來產生,其邏輯關系式曾經得到;來產生,其邏輯關系式曾經得到;n讓一級進位鏈多產生兩個輔助函數讓一級進位鏈多產生兩個輔助函數Gi*和和Pi*,并且,并且作為二級進位鏈的輸入。作為二級進位鏈的輸入。 多級先行進位續四多級先行進位續四16位位2級先行進位時間圖級先行進位時間圖 進位產生次序如下:進位產生次序如下:產生第一小組的產生第一小組的C1C1C3C3、一切、一切組進位產生函數組進位產生函
19、數GiGi* *和組進位和組進位傳送函數傳送函數PiPi* *,時間為,時間為2ty. 2ty. 由由CLACLA電路產生第二、三、四小電路產生第二、三、四小組的組間進位信號組的組間進位信號C4C4、C8C8、C12C12、C16C16,時間為,時間為2ty.2ty.產生第二、三、四小組的組內產生第二、三、四小組的組內進位信號進位信號C5C5、C6C6、C7C7、C9C9、C10C10、C11C11、C13C13、C14C14、C15C15,時間為時間為2ty. 2ty. 4 4、多功能算術邏輯部件、多功能算術邏輯部件ALUALUn前面引見了運算器的算術運算功能,為了完成多種算前面引見了運算器
20、的算術運算功能,為了完成多種算術邏輯運算,需求將加法器的功能進展擴展,擴展的術邏輯運算,需求將加法器的功能進展擴展,擴展的根本思想如下:根本思想如下:參與運算的兩個數參與運算的兩個數Ai、Bi和低位進位和低位進位Ci-1先不進展全加,先把兩個輸入先不進展全加,先把兩個輸入Ai、Bi和四個控制參數和四個控制參數S0、S1、S2、S3進展組合,構成函數進展組合,構成函數Xi和和Yi,然后再,然后再將將Xi、Yi和低位進位和低位進位Ci-1經過全加器經過全加器進展全加。這樣一來,控制參數不同,進展全加。這樣一來,控制參數不同,得到的組合函數也不同,從而實現多得到的組合函數也不同,從而實現多種算術和邏
21、輯運算。種算術和邏輯運算。 算術邏輯部件算術邏輯部件ALUn算術邏輯部件算術邏輯部件ALU大體上有三部分組成:大體上有三部分組成:n全加器全加器n進位鏈進位鏈n輸入選擇器輸入選擇器n下面以下面以ALU的一位邏輯為例,原理性地闡明的一位邏輯為例,原理性地闡明算術、邏輯功能是如何實現的。算術、邏輯功能是如何實現的。算術邏輯部件算術邏輯部件ALU續一續一l一位加法器由全加器和進位門構一位加法器由全加器和進位門構成,其中,兩個半加器構成全加成,其中,兩個半加器構成全加器、與或非門構成一位進位門。器、與或非門構成一位進位門。l一位輸入選擇器,由兩個與或非一位輸入選擇器,由兩個與或非門構成,可輸入門構成,
22、可輸入2個本位操作數個本位操作數或非、或非、4個控制信號個控制信號S3S0l一個控制門一個控制門M,選擇算邏運算。,選擇算邏運算。當當M=0時,開門接納低位來的進時,開門接納低位來的進位信號,執行算術運算;當位信號,執行算術運算;當M=1時,關門不接納低位進位信號,時,關門不接納低位進位信號,執行邏輯運算,與進位無關。執行邏輯運算,與進位無關。 算術邏輯部件算術邏輯部件ALU續二續二控制信號與選擇器輸出關系表:控制信號與選擇器輸出關系表:S3 S2 Xi S1 S0 Yi0 0 1 0 0 Ai0 1 Ai+Bi 0 1 AiBi1 0 Ai+Bi 1 0 AiBi1 1 Ai 1 1 0 進
23、位傳送函數進位傳送函數進位產生函數進位產生函數經過不同的輸入選擇,實現不同的功能,這進一步闡明:數據是在傳經過不同的輸入選擇,實現不同的功能,這進一步闡明:數據是在傳送過程實現運算、并得四處置的。多位送過程實現運算、并得四處置的。多位ALUALU的實現思緒完全一樣。的實現思緒完全一樣。5 5、運算器的組織、運算器的組織n運算器主要由算邏部件運算器主要由算邏部件ALU、存放器、多路轉換、存放器、多路轉換器、內部數據總線組成。器、內部數據總線組成。n在運算器內部,各功能模塊之間的銜接大都采用在運算器內部,各功能模塊之間的銜接大都采用總線構造,稱為運算器的內部總線,總線構造,稱為運算器的內部總線,A
24、LU和各存和各存放器都掛在上面。放器都掛在上面。n運算器大體上有如下三種構造:單總線構造、雙運算器大體上有如下三種構造:單總線構造、雙總線構造和三總線總線構造。總線構造和三總線總線構造。l操作數需求分兩次送入操作數需求分兩次送入ALU,而,而且需求兩個緩沖存放器;完成一且需求兩個緩沖存放器;完成一次運算需求次運算需求3步。特點是控制電路步。特點是控制電路簡單,而速度較慢。簡單,而速度較慢。 l兩個操作數可以同時到達兩個操作數可以同時到達ALU進展進展運算,且馬上可以得到運算結果,運算,且馬上可以得到運算結果,輸出端需求設置一個緩沖存放器輸出端需求設置一個緩沖存放器 ;完成一次運算需求完成一次運
25、算需求2步步 。l兩條總線同時供應操作數,輸出與兩條總線同時供應操作數,輸出與第三條總線相連;完成一次運算需第三條總線相連;完成一次運算需求求1步。特點是操作速度快,控制步。特點是操作速度快,控制相對復雜一些。相對復雜一些。 運算器的運算器的3種組織構造種組織構造二、定點加減運算二、定點加減運算 n原碼加減運算原碼加減運算n當原碼做加減運算時,符號位不參與運算,當原碼做加減運算時,符號位不參與運算,只在兩數的絕對值之間進展。只在兩數的絕對值之間進展。n加法時能夠要做減法兩數異號、減法加法時能夠要做減法兩數異號、減法時又能夠做加法兩數異號。時又能夠做加法兩數異號。n操作結果需求根據絕對值的大小來
26、確定運操作結果需求根據絕對值的大小來確定運算結果的符號。計算機中通常沒有減法器,算結果的符號。計算機中通常沒有減法器,減法運算需求轉換為加法來實現。減法運算需求轉換為加法來實現。n結論:原碼加減運算過程比較復雜,普通結論:原碼加減運算過程比較復雜,普通不用不用. .1 1、補碼加減運算、補碼加減運算 補碼加減運算的根據如下:補碼加減運算的根據如下:n和的補碼等于補碼的和和的補碼等于補碼的和 nX + Y補補 = X補補 + Y補補 n相反數的補碼等于補碼的相反數相反數的補碼等于補碼的相反數 n-X補補 = - X補補 n差的補碼等于補碼的差差的補碼等于補碼的差nX-Y補補 = X補補+ -Y補
27、補 = X補補- Y補補 補碼的運算規那么:補碼的運算規那么: 參與運算的操作數用補參與運算的操作數用補碼表示。碼表示。補碼的符號位與數值位補碼的符號位與數值位同時參與運算。同時參與運算。假設做加法,那么兩數假設做加法,那么兩數補碼直接相加;補碼直接相加;假設做減法,用被減數假設做減法,用被減數與減數的機器負數相加。與減數的機器負數相加。運算結果為和、差的補運算結果為和、差的補碼。碼。 注注: :機器負數等于機器負數等于補碼連同符號位按位求補碼連同符號位按位求反,末位加反,末位加1 1。補碼加減例如補碼加減例如例例1、A=0.1011, B=-0.1110,求,求A+B.解:解: A補補 =
28、0.1011, B補補 = 1.00100.1011+1.00101.1101 A+B補補 = 1.1101 A+B = -0.0011例例2、A=0.1011, B=-0.0010,求,求A-B.解:解: A補補 = 0.1011, B補補 = 1.1110, -B補補 = 0.0010 0.1011+ 0.0010 0.1101 A-B補補 = 0.1101 A-B = 0.11012 2、補碼加減溢出的判別、補碼加減溢出的判別例例3、X=1011,Y=111 求求X+Y。 例例4、X=-1011,Y=-111 求求X+Y。解:解:X補補=0,1011,Y補補=0,0111 解:解:X補補
29、=1,0101,Y補補=1,10010,1011 (+11) 1,0101 (-11)+0,0111 (+7) + 1,1001 (-7 )1,0010 0,1110 X+Y補補 =1,0010 X+Y補補=0,1110 X+Y=-1110 (-14) X+Y=+1110 (+14) 出錯緣由在于用了出錯緣由在于用了4個二進制位來表示絕對值為個二進制位來表示絕對值為18的和數。的和數。補碼加減運算溢出補碼加減運算溢出n當運算結果超出了機器所能表示的范圍時,當運算結果超出了機器所能表示的范圍時,數值位侵占了符號位,這種景象稱為溢出。數值位侵占了符號位,這種景象稱為溢出。兩個同符號的數相加會產生溢
30、出。兩個同符號的數相加會產生溢出。 n兩個正數相加,結果大于機器所能表示的兩個正數相加,結果大于機器所能表示的最大正數,稱為上溢正溢。最大正數,稱為上溢正溢。n兩個負數相加,結果小于機器所能表示的兩個負數相加,結果小于機器所能表示的最小負數,稱為下溢負溢。最小負數,稱為下溢負溢。補碼加減溢出的判別方法補碼加減溢出的判別方法 判別溢出的三種根本方法:判別溢出的三種根本方法: 采用一個符號位判別采用一個符號位判別 當參與運算的兩個數的符號為當參與運算的兩個數的符號為0、而和的符號位為、而和的符號位為1時上溢;時上溢;當參與運算的兩個數的符號為當參與運算的兩個數的符號為1、而和的符號位為、而和的符號
31、位為0時下溢。時下溢。 判別條件為:溢出判別條件為:溢出= XsYsSs+XsYsSs其中,其中,Xs、Ys為參與運算兩數的符號,為參與運算兩數的符號, Ss為結果符號位。為結果符號位。補碼加減溢出的判別方法補碼加減溢出的判別方法( (續續) ) 采用進位位判別采用進位位判別 兩個正數相加,當最高有效位產生進位兩個正數相加,當最高有效位產生進位C1=1而符而符號位不產生進位號位不產生進位Cs=0時,發生上溢;時,發生上溢;兩個負數相加,當最高有效位不產生進位兩個負數相加,當最高有效位不產生進位C1=0而而符號位產生進位,發生下溢。符號位產生進位,發生下溢。 判別條件為:溢出判別條件為:溢出=
32、CsC1+CsC1 = Cs C1 采用變形補碼雙符號位補碼采用變形補碼雙符號位補碼采用變形補碼檢測,當運算結果的兩符號位不一致時采用變形補碼檢測,當運算結果的兩符號位不一致時表示溢出。假設符號位用表示溢出。假設符號位用Ss1Ss2表示,那么表示,那么Ss1Ss2=01 結果上溢,結果上溢,Ss1Ss2=10 結果下溢結果下溢. 判別溢出的條件為:判別溢出的條件為: 溢出溢出=Ss1 Ss2SS1一直正一直正確確3 3、補碼定點加減運算器的根本組成、補碼定點加減運算器的根本組成 l補碼加法:補碼加法: 在在XF、YF、FX三個控制三個控制信號的控制下,翻開門信號的控制下,翻開門A、門、門B和門
33、和門C,把存,把存放器放器X和存放器和存放器Y的內的內容送入加法器的兩個輸容送入加法器的兩個輸入端進展加法運算,把入端進展加法運算,把結果送回存放器結果送回存放器X中中.l補碼減法:與補碼加法補碼減法:與補碼加法不同之處在于要用不同之處在于要用YF來替代來替代YF、并、并在在1F控制信號作用控制信號作用下使結果加下使結果加1,即可完,即可完成補碼減法運算。成補碼減法運算。三、帶符號數的移位與舍入三、帶符號數的移位與舍入 n移位是算術、邏輯運算的又一根本操作,而且幾乎移位是算術、邏輯運算的又一根本操作,而且幾乎一切機器的指令系統都設有移位指令。比如,乘法一切機器的指令系統都設有移位指令。比如,乘
34、法運算大多數是經過運算大多數是經過“累加累加移位來實現的。移位來實現的。n算術移位操作時,符號位不變,數值大小那么會發算術移位操作時,符號位不變,數值大小那么會發生變化。左移一位相當于乘以生變化。左移一位相當于乘以2,右移一位相當于,右移一位相當于除以除以2,由于移位使位權發生了變化。,由于移位使位權發生了變化。n在移位過程中,有效數位會被移出數據字而喪失。在移位過程中,有效數位會被移出數據字而喪失。因此,還需求思索數據的舍入問題,以盡能夠提高因此,還需求思索數據的舍入問題,以盡能夠提高數據的表示精度。數據的表示精度。1 1、移位規那么、移位規那么 n原碼移位規那么原碼移位規那么 n符號位不變
35、符號位不變 n空出位補空出位補0 n例如:例如:1X1X2X3Xnn 左移后為:左移后為:1X2X3Xn0n 右移后為:右移后為:10X1X2Xn-1n補碼移位規那么補碼移位規那么n符號位不變符號位不變 n左移時,空出位補左移時,空出位補0 n右移時,符號位補充空出右移時,符號位補充空出位位n例如:例如:1X1X2X3Xnn 左移后為:左移后為:1X2X3Xn0n 右移后為:右移后為:11X1X2Xn-1算術左移在不產生溢出時,算術左移在不產生溢出時,符號位堅持不變。符號位堅持不變。 我們用的微機運用補碼我們用的微機運用補碼來表示數據來表示數據. . 2 2、移位器邏輯電路、移位器邏輯電路 n
36、移位器是由與門和或門組成的邏輯電路實踐是一個移位器是由與門和或門組成的邏輯電路實踐是一個多路選擇器,可以實現直傳不移位、左斜一位多路選擇器,可以實現直傳不移位、左斜一位送左移一位和右斜一位送右移一位的功能。送左移一位和右斜一位送右移一位的功能。移位器邏輯電路如下圖。移位器邏輯電路如下圖。 左移由左移由2FL控制,控制,Fi-1Li直傳由直傳由FL來控制,來控制,FiLi 右移由右移由F/2L來控制,來控制,Fi+1Li移位器無數據存放才干。移位器無數據存放才干。3 3、舍入操作、舍入操作 n舍入操作有以下幾種:舍入操作有以下幾種:n截斷法:無條件地舍去多余的位。截斷法:無條件地舍去多余的位。n
37、恒置恒置1法:舍去多余位,保管部分最低位置法:舍去多余位,保管部分最低位置1。 n0舍舍1入法:舍去部分的最高位為入法:舍去部分的最高位為1時,那么保管部時,那么保管部分末位加分末位加1,與四舍五入法類似。,與四舍五入法類似。n截斷法和恒置截斷法和恒置1法誤差比較大;法誤差比較大;0舍舍1入法比較合理,入法比較合理,但當保管部分為但當保管部分為0.111時,會導致再次溢出。末時,會導致再次溢出。末位恒置位恒置1,在除法中非常有用。,在除法中非常有用。四、定點乘法運算四、定點乘法運算 乘法運算要比加法運算復雜。先舉一個大家熟習的手工定點乘法乘法運算要比加法運算復雜。先舉一個大家熟習的手工定點乘法
38、的例子;之后我們來看,假設將手工運算改為機器運算,會出現的例子;之后我們來看,假設將手工運算改為機器運算,會出現什么問題?該如何處理?什么問題?該如何處理?l 例:例:0.11010.1011 = ?l 0.1101l 0.1011l 1101l 1101l 0000l + 1101l 0.10001111 l手工計算的二進制乘法規那么:手工計算的二進制乘法規那么:l數值位:數值位: 00 = 0l 10 = 0 l 11 = 1,邏輯與。,邏輯與。l符號位:符號位: 同號相乘為正同號相乘為正l 異號相乘為負,邏輯異異號相乘為負,邏輯異或或l其結果:乘積其結果:乘積 = 符號位符號位 / 數值
39、位。數值位。 乘法:由手工計算到機器運算乘法:由手工計算到機器運算n由手工計算到機器運算,需求處理由手工計算到機器運算,需求處理3個問題:個問題:n符號如何處置?符號如何處置?n多個部分積如何相加?多個部分積如何相加?n為堅持兩次部分積之間的位權對應關系,會導致加法器位數的添加,為堅持兩次部分積之間的位權對應關系,會導致加法器位數的添加,能否在不添加位數的情況下堅持位權對應?能否在不添加位數的情況下堅持位權對應?n由于處理方式的不同,構成了兩種主要的乘法器構造由于處理方式的不同,構成了兩種主要的乘法器構造n采用常規的加法器來實現采用常規的加法器來實現n將將n位乘法轉換為位乘法轉換為n次累加和移
40、位,每次處置次累加和移位,每次處置1位。位。n為防止加法器位數的擴展,可以把手工計算時的新部分積為防止加法器位數的擴展,可以把手工計算時的新部分積“左移左移累加改為機器運算的原部分積累加改為機器運算的原部分積“累加累加右移。右移。n采用陣列乘法器實現采用陣列乘法器實現n利用中大規模集成電路把多項部分積同時相加,這種構造的乘法器利用中大規模集成電路把多項部分積同時相加,這種構造的乘法器稱為陣列乘法器。稱為陣列乘法器。 1 1、原碼一位乘法、原碼一位乘法 n原碼一位乘法是從手算演化而來的,即用兩個操作數的絕對值相原碼一位乘法是從手算演化而來的,即用兩個操作數的絕對值相乘,乘積的符號為兩操作數符號的
41、異或值乘,乘積的符號為兩操作數符號的異或值(同號為正,異號為負同號為正,異號為負).n乘積乘積 P = |X|Y|n符號符號 Ps = Xs Ysn原碼一位乘法的規那么原碼一位乘法的規那么 n被乘數和乘數取絕對值。被乘數和乘數取絕對值。 n乘數的最低位為乘數的最低位為1時,部分積加被乘數,否那么加時,部分積加被乘數,否那么加0。n部分積和乘數右移一位。部分積和乘數右移一位。n反復,直到乘數全部移出。反復,直到乘數全部移出。 n積的符號由兩乘數符號的異或得到。積的符號由兩乘數符號的異或得到。 n積的符號與積的數值拼接得到積的原碼。積的符號與積的數值拼接得到積的原碼。原碼一位乘例如原碼一位乘例如實
42、踐運算的預備任務:實踐運算的預備任務:|被乘數被乘數| B存放器存放器|乘數乘數| C存放器將要存放部分積的低位存放器將要存放部分積的低位0 A存放器將要存放部分積的高位存放器將要存放部分積的高位例例4:知:知:X=0.1101,Y=-0.1011,求:,求:XY。解:解: |X|=00.1101B 被乘數采用雙符號位被乘數采用雙符號位 |Y|=.1011C 乘數取數值乘數取數值 0A A C 闡明闡明原碼一位乘原碼一位乘0 0.0 0 0 0 1 0 1 1+|X| 0 0.1 1 0 1 C4=1,+|X|0 0.1 1 0 1 0 0.0 1 1 0 1 1 0 1 部分積右移一位部分積
43、右移一位0 1.0 0 1 1+|X| 0 0.1 1 0 1 C4=1,+|X| 0 0.1 0 0 1 1 1 1 0 部分積右移一位部分積右移一位+0 0 0.0 0 0 0 C4=0,+00 0.1 0 0 1 0 0.0 1 0 0 1 1 1 1 部分積右移一位部分積右移一位+|X| 0 0.1 1 0 1 C4=1,+|X|0 1.0 0 0 1 0 0.1 0 0 0 1 1 1 1 部分積右移一位部分積右移一位Ps =Xs Ys = 0 1 = 1 XY = -0.10001111 原碼一位乘法的硬件實現原碼一位乘法的硬件實現 nA、B為為n+2位,位,C為為n位,加法器位,
44、加法器為為n+2位,異或門。位,異或門。nA、C存放器級連在一同,具有右存放器級連在一同,具有右移功能。每次移位時,移功能。每次移位時,A的最低位的最低位進入進入C 的最高位,而的最高位,而C的最低位被的最低位被丟掉。最后,丟掉。最后,A的內容為乘積的高的內容為乘積的高位部分,位部分,C的內容為乘積的低位部的內容為乘積的低位部分。分。nC的最低位作為控制信號,控制運的最低位作為控制信號,控制運算器加被乘數還是加零。算器加被乘數還是加零。 2 2、補碼一位乘法、補碼一位乘法 n原碼乘法雖然容易實現,但普通計算機中數據多以補碼原碼乘法雖然容易實現,但普通計算機中數據多以補碼表示。假設仍用原碼做乘法
45、,需求進展碼制轉換,反倒表示。假設仍用原碼做乘法,需求進展碼制轉換,反倒不方便而且又影響速度。不方便而且又影響速度。n由于補碼符號位直接參與運算,所以補碼乘法不能簡單由于補碼符號位直接參與運算,所以補碼乘法不能簡單地套用原碼乘法的算法。實現補碼乘法有地套用原碼乘法的算法。實現補碼乘法有2 2種方法。種方法。n一種方法為校正法,運用較少,只給出算式:一種方法為校正法,運用較少,只給出算式:nXXYY補補=X=X補補(0.X1X2Xn)-X(0.X1X2Xn)-X補補Y Yn另一種更好的方法為比較法,該算法是英國人另一種更好的方法為比較法,該算法是英國人BoothBooth夫婦夫婦提出,所以也稱為
46、提出,所以也稱為BoothBooth法。該算法無需校正,控制較為法。該算法無需校正,控制較為簡單。以下主要討論比較法。簡單。以下主要討論比較法。Booth的推導的推導設:被乘數設:被乘數X補補=X.X1X2Xn,乘數,乘數Y補補=Y.Y1Y2Yn,那,那么:么:XY補補 = X補補0.Y1Y2Yn - X補補Y = X補補2-1Y1+2-2Y2+2-nYn- X補補Y = X補補-Y+2-1Y1 +2-2Y2+2-nYn = X補補-Y+(Y1-2-1Y1)+ (2-1Y2-2-2Y2)+(2-(n-1)Yn-2-nYn) = X補補(Y1-Y)+(Y2-Y1)2-1+(0-Yn)2-n =
47、X補補(Y1-Y)+(Y2-Y1)2-1+(Yn+1-Yn)2-n ;Yn+1=0上式闡明:上式闡明:XY補可以根據乘數相鄰兩項的比較結果,補可以根據乘數相鄰兩項的比較結果, 即用即用“低位低位-高位的值來確定每步的運算操作。高位的值來確定每步的運算操作。Booth法的遞推公式法的遞推公式從前面的推導中得出遞推公式:從前面的推導中得出遞推公式: Z0補補 = 0 Z1補補 = 2-1Z0補補+(yn+1-yn)X補補 Z2補補 = 2-1Z1補補+(yn-yn-1)X補補 Zn補補 = 2-1Zn-1補補+(y2-y1)X補補 XY補補= Zn補補+(y1-ys)X補補式中,式中,Z0補為初始
48、部分積,補為初始部分積, Z1補補Zn補為每次累加并右移之后補為每次累加并右移之后的部分積。的部分積。XY補補=X補補 (y1-y0)+(y2-y1) 2-1+(yn+1-yn) 2-n n12Booth乘法運算規律與規那么乘法運算規律與規那么n判別位判別位 YnYn+1 操操 作作n 0 0 原部分積右移一位原部分積右移一位n 0 1 原部分積加原部分積加X補后右移一位補后右移一位n 1 0 原部分積加原部分積加-X補后右移一位補后右移一位n 1 1 原部分積右移一位原部分積右移一位n參與運算的數用補碼表示,結果也是補碼;符號位直接參與運算。參與運算的數用補碼表示,結果也是補碼;符號位直接參
49、與運算。 n乘數最低位后面添加一位附加位乘數最低位后面添加一位附加位Yn+1Yn+1,初值為,初值為0 0。n乘數的最低兩位乘數的最低兩位YnYn+1YnYn+1的值決議每次執行的操作。的值決議每次執行的操作。 n部分積和乘數一同右移一位。部分積和乘數一同右移一位。 n共做共做n+1n+1次累加、次累加、n n次移位,最后累加不移位。次移位,最后累加不移位。n由于符號位參與運算,部分積累加時最高有效位的進位能夠侵由于符號位參與運算,部分積累加時最高有效位的進位能夠侵占符號位,所以被乘數和部分積應取雙符號位,乘數只需取一個符占符號位,所以被乘數和部分積應取雙符號位,乘數只需取一個符號位號位規律規
50、律規那規那么么補碼一位乘例如補碼一位乘例如例例5:知:知: X=-0.1101,Y=0.1011; 求:求: XY。解:解: X補補 = 11.0011B, Y補補= 0.1011C, -X補補= 00.1101 0A運算過程見下頁:運算過程見下頁:補碼一位乘補碼一位乘 A C 附加位附加位 闡明闡明0 0.0 0 0 0 0.1 0 1 1 0 +-X補補 0 0.1 1 0 1 C4C5=10,+-X補補0 0.1 1 0 1 0 0.0 1 1 0 1 0 1 0 1 1 部分積右移一部分積右移一位位+0 0 0.0 0 0 0 C4C5=11,+00 0.0 1 1 0 0 0.0 0
51、 1 1 0 1 0 1 0 1 部分積右移一位部分積右移一位+X補補 1 1.0 0 1 1 C4C5=01,+X補補1 1.0 1 1 0 1 1.1 0 1 1 0 0 1 0 1 0 部分積右移一位部分積右移一位+-X補補 0 0.1 1 0 1 C4C5=10,+-X補補0 0.1 0 0 0 0 0.0 1 0 0 0 0 0 1 0 1 部分積右移一位部分積右移一位+X補補 1 1.0 0 1 1 C4C5=01,+X補補1 1.0 1 1 1 XY補補=1.01110001 XY= -0.10001111補碼一位乘法的硬件實現補碼一位乘法的硬件實現nA、B、C為為n+2位,位,
52、加法器為加法器為n+2位。位。n與或門有與或門有n+2個。個。n各器件的作用與原碼各器件的作用與原碼一位乘法一樣。控制一位乘法一樣。控制方式上有所不同,即方式上有所不同,即由由C存放器的最低兩存放器的最低兩位來控制加、減被乘位來控制加、減被乘數或加數或加0操作。操作。 3 3、陣列乘法器、陣列乘法器 為了提高乘法運算速度,還可以采用高速陣列乘法器為了提高乘法運算速度,還可以采用高速陣列乘法器執行乘法運算。設有兩個不帶符號的二進制整數:執行乘法運算。設有兩個不帶符號的二進制整數: A、B兩數的乘積兩數的乘積P為:為: 假設,當假設,當m = n = 4時,來思索乘法的情況:時,來思索乘法的情況:
53、 101022njjjmiiibBaA10101022nmkkkjiminjjipbaBAP陣列乘法器原理陣列乘法器原理 a3 a2 a1 a0 b3 b2 b1 b0 a3b0 a2b0 a1b0 a0b0 a3b1 a2b1 a1b1 a0b1 a3b2 a2b2 a1b2 a0b2 + a3b3 a2b3 a1b3 a0b3 P7 p6 p5 p4 p3 p2 p1 p0陣列乘法器原理續一陣列乘法器原理續一n一個根本乘法單元由兩部分組成:一個根本乘法單元由兩部分組成:naibi是邏輯與運算,可用與門實現是邏輯與運算,可用與門實現n錯位相加可用全加器完成錯位相加可用全加器完成根本乘法單元原
54、理圖根本乘法單元原理圖陣列乘法器原理續二陣列乘法器原理續二由乘法單元構成的乘法器如下圖,每個方框代表一個根本乘法單元由乘法單元構成的乘法器如下圖,每個方框代表一個根本乘法單元.陣列乘法器原理三陣列乘法器原理三n構成構成n nn n整數陣列乘法器,共需求整數陣列乘法器,共需求n nn n個個乘法單元。乘法單元。n假設采用補碼相乘時,可在上述乘法陣假設采用補碼相乘時,可在上述乘法陣列外添加三個求補器,兩個為算前求補列外添加三個求補器,兩個為算前求補器,將兩個操作數先變成正整數,一個器,將兩個操作數先變成正整數,一個為算后求補器,在相乘兩數符號不一致為算后求補器,在相乘兩數符號不一致時,把運算結果變
55、成補碼。時,把運算結果變成補碼。五、定點除法運算五、定點除法運算 n大家很熟習除法運算。手工計算除法的關鍵是比較余大家很熟習除法運算。手工計算除法的關鍵是比較余數與除數的大小,根據比較結果斷定商值。數與除數的大小,根據比較結果斷定商值。n問題是,當將手工計算轉換為機器運算時,如何判別問題是,當將手工計算轉換為機器運算時,如何判別夠減?如何處置符號位?如何提高運算速度?夠減?如何處置符號位?如何提高運算速度?n除法運算是乘法運算的逆運算。乘法經過加除法運算是乘法運算的逆運算。乘法經過加- -右移實右移實現,不難想到機器除法運算是經過減現,不難想到機器除法運算是經過減- -左移實現的。左移實現的。
56、n機器實現除法運算有兩個先決條件純小數:機器實現除法運算有兩個先決條件純小數:n除數不等于除數不等于0 0,否那么商為無窮大。,否那么商為無窮大。 n被除數要小于除數,否那么商會溢出。被除數要小于除數,否那么商會溢出。1 1、原碼恢復余數法、原碼恢復余數法 n所謂恢復余數法,不論被除數或部分余數能否所謂恢復余數法,不論被除數或部分余數能否夠減除數,都一概先做減法。假設部分余數為正,夠減除數,都一概先做減法。假設部分余數為正,表示夠減,該位商上表示夠減,該位商上“1 1;假設部分余數為負,表;假設部分余數為負,表示不夠減,該位商上示不夠減,該位商上“0 0,并要恢復余數加除,并要恢復余數加除數。
57、數。n恢復余數法固有的缺陷恢復余數法固有的缺陷: :n由于部分余數的正、負是隨機出現的,使得除法運由于部分余數的正、負是隨機出現的,使得除法運算的實踐操作次數不固定,控制電路較復雜。算的實踐操作次數不固定,控制電路較復雜。n在恢復余數時,要多作一次加法,降低了除法的執在恢復余數時,要多作一次加法,降低了除法的執行的速度。行的速度。 2 2、原碼不恢復余數法、原碼不恢復余數法n分析恢復余數法發現,當減除數操作使得余數為負數時,分析恢復余數法發現,當減除數操作使得余數為負數時,商為商為“0,并恢復余數,然后左移,再減除數。,并恢復余數,然后左移,再減除數。 n假設用假設用R表示余數,用表示余數,用
58、B表示除數,上述操作過程可表示除數,上述操作過程可表示為:表示為:n R + B 2 B = 2R + B n結論:當余數為負時,商上結論:當余數為負時,商上“0,余數左移一次后加,余數左移一次后加除數,結果不變。這就是不恢復余數法的實現思想。除數,結果不變。這就是不恢復余數法的實現思想。n不恢復余數法加減交替法的運算規那么為:不恢復余數法加減交替法的運算規那么為: n假設余數假設余數0,上商,上商“1,余數左移一位,減除數。,余數左移一位,減除數。 n假設余數假設余數0,上商,上商“0,余數左移一位,加除數。,余數左移一位,加除數。 n由于加減運算交替地進展,所以又稱為原碼加減交替法。由于加
59、減運算交替地進展,所以又稱為原碼加減交替法。原碼不恢復余數法例如原碼不恢復余數法例如除法運算需求除法運算需求3個存放器:個存放器:A存放器存放被除數:存放器存放被除數: 被除數被除數 A B存放器存放除數:存放器存放除數: 除數除數 BC存放器存放商:存放器存放商: 商商 C例例6:知:知:X=-0.10101,Y=0.11110,求:,求:XY。解:解: |X|=00.10101A, 0C |Y|=00.11110B, -|Y|=11.00010原碼不恢原碼不恢復余數法復余數法A C 闡明闡明0 0.1 0 1 0 1 0.0 0 0 0 0 -|Y| 1 1.0 0 0 1 0 -|Y|1
60、 1.1 0 1 1 1 0.0 0 0 0 0 余數為負,商余數為負,商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 余數為正,商余數為正,商1 0 0.1 1 0 0 0 左移一位左移一位 -|Y| 1 1.0 0 0 1 0 -|Y|1 1.1 1 0 1 0 0.0 0 0 1 0 余數為負,商余數為負,商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.0 0 1 0 1 余數為正,商余數為正,商1 0 1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省西安愛知初級中學2025屆初三適應性月考(十)數學試題含解析
- 山西省應縣第一中學2025年高三考前熱身歷史試題含解析
- 浙江特殊教育職業學院《防火防爆工程學》2023-2024學年第一學期期末試卷
- 四川希望汽車職業學院《食品冷凍工藝學》2023-2024學年第二學期期末試卷
- 山西省太原市小店區第一中學2025屆高三第二次校模擬考試生物試題含解析
- 湛江市年模擬數學試題(三)
- 2025茶葉采購銷售合同范本
- 2025年求RP農行合同制柜員筆試
- 2025房屋租賃合同范本示例
- 2025年解除合同申請書
- 2024年新款滅火器采購協議
- 陜西省渭南市澄城縣2024-2025學年七年級上學期11月期中考試數學試題(含答案)
- 律師事務所整體轉讓協議書范文
- 2024初級會計職稱考試104題(附答案)
- 2024年8月CCAA注冊審核員OHSMS職業健康安全管理體系基礎知識考試題目含解析
- 自然資源調查監測勞動和技能競賽
- 中小學班主任工作指南
- 北師大版數學五年級下冊《確定位置》課件教學課件
- 風電場全過程咨詢項目管理規劃方案
- 遼寧葫蘆島協作校2025屆高三第二次聯考生物試卷含解析
- 貴州省旅游產業發展集團有限公司招聘筆試題庫2024
評論
0/150
提交評論