第3章 運(yùn)算器和運(yùn)算方法.ppt_第1頁
第3章 運(yùn)算器和運(yùn)算方法.ppt_第2頁
第3章 運(yùn)算器和運(yùn)算方法.ppt_第3頁
第3章 運(yùn)算器和運(yùn)算方法.ppt_第4頁
第3章 運(yùn)算器和運(yùn)算方法.ppt_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章運(yùn)算器和運(yùn)算方法、3.1定點運(yùn)算器的構(gòu)成和構(gòu)成3.2算術(shù)邏輯運(yùn)算的基本電路3.3定點加減運(yùn)算、3.1定點運(yùn)算器的構(gòu)成和構(gòu)成、定點運(yùn)算器由算術(shù)邏輯運(yùn)算單元(ALU )、輸入數(shù)據(jù)選擇電路、通用寄存器組、輸出數(shù)據(jù)分配電路構(gòu)成,如下圖所示。 所述算術(shù)邏輯運(yùn)算部核心部件是加法器,加法器的邏輯結(jié)構(gòu)包含加法部和進(jìn)位傳遞邏輯部.CPU的結(jié)構(gòu)、3.1.1算術(shù)邏輯單元(ALU )、運(yùn)算器中完成數(shù)據(jù)算術(shù)和邏輯運(yùn)算的部件被稱為算術(shù)邏輯運(yùn)算單元(ALU )。 如CPU的結(jié)構(gòu)圖所示,ALU是運(yùn)算器的核心,通常被表示為2個輸入端口、1個輸出端口、以及多個功能控制信號端子之間的1個邏輯碼元。 ALU處理的數(shù)據(jù)的位數(shù)與設(shè)

2、備的字長有關(guān)。3.1.2通用寄存器組、現(xiàn)代修正機(jī)的中央處理機(jī)有通用寄存器組,主要用于保存參加運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。 在現(xiàn)代的修正計算機(jī)中嵌入通用寄存器是因為與內(nèi)部存儲器相比,訪問速度快得多。 通用寄存器的數(shù)量越多,對運(yùn)算器性能和程序執(zhí)行速度的提高越有利。 通用寄存器組是向用戶開放的,所述用戶可在指令中使用。 如上圖所示,8086微處理器包括14個16位寄存器,并且包括8個通用寄存器、一個指令指針寄存器、一個標(biāo)記寄存器、和四個段寄存器。 它們有名稱,并使用代表編程時保存內(nèi)容的名稱。 3.1.3狀態(tài)寄存器、狀態(tài)寄存器主要用于記錄幾個運(yùn)算結(jié)果的狀態(tài)。 通常,狀態(tài)寄存器在v (溢出標(biāo)志位):運(yùn)算結(jié)果

3、中存在溢出時,如果該位被設(shè)置且運(yùn)算結(jié)果沒有溢出,則該位被清零。 z (零標(biāo)志位):運(yùn)算結(jié)果為0時,該位在設(shè)定運(yùn)算結(jié)果不為0時,該位清除為0。 c (進(jìn)位或借位標(biāo)志位):如果在加法運(yùn)算時作為最高位位在前面有進(jìn)位,或者在減法運(yùn)算時作為最高位沒有在前面的借位,則該標(biāo)志位被設(shè)定;如果在加法運(yùn)算時最高位沒有在前面,或者在減法運(yùn)算時最高位在前面n (符號標(biāo)志位):運(yùn)算結(jié)果為負(fù)數(shù)時,該位被設(shè)定;運(yùn)算結(jié)果為正數(shù)時,該位被清零。 3.1.4將數(shù)據(jù)路徑、從一個功能部件向另一個功能部件轉(zhuǎn)送數(shù)據(jù)的功能部件、總線等稱為數(shù)據(jù)路徑。 以下,以CPU的結(jié)構(gòu)圖所示的CPU的各功能部件的右半部分的運(yùn)算器為例,說明其數(shù)據(jù)路徑,并說

4、明運(yùn)算器的動作過程。 圖中,MUX1和MUX2分別是2個多路徑數(shù)據(jù)選擇器,用于選擇當(dāng)前哪2組數(shù)據(jù)發(fā)送到ALU。 MUX1數(shù)據(jù)有通用寄存器的輸出和指令中的相對位移量2個源。 MUX2數(shù)據(jù)有通用寄存器的輸出、數(shù)據(jù)寄存器的輸出、程序計數(shù)器的輸出3個源。 ALU的輸出信息通過內(nèi)部數(shù)據(jù)總線發(fā)送到通用寄存器。 通用寄存器有兩個輸出端口RA和RB,一個輸入端口RL。 寄存器內(nèi)的數(shù)據(jù)以補(bǔ)數(shù)表示。 運(yùn)算前的R1=1100、R2=0110、v、z、c、n標(biāo)志位都是0。 執(zhí)行以下操作后,標(biāo)志位v、z、c、n、R3的值如何變化? 1R1 R2,結(jié)果發(fā)送到R3中的操作過程: R1的內(nèi)容通過端口RA輸出,MUX1將RA的

5、內(nèi)容輸入ALU的a輸入端。 R2的內(nèi)容通過端口RB被輸出,而MUX2將RB的內(nèi)容輸入到ALU的b輸入端。 ALU進(jìn)行A B操作,從y輸出端輸出結(jié)果,保存在R2寄存器中。 ALU運(yùn)算: 1100 0110 10010發(fā)送到進(jìn)位位,因此R3=0010,標(biāo)志位c從0變?yōu)?,其他標(biāo)志位不變。 求與、2R1互補(bǔ)的數(shù)學(xué)運(yùn)算過程: r-1的內(nèi)容通過端口RB輸出,經(jīng)過MUX2的選擇,將RB的內(nèi)容送入ALU的b輸入端。在MUX1中選擇常數(shù)“0”,輸入到ALU的a輸入端,ALU進(jìn)行A-B操作,從y輸出端輸出結(jié)果,保存到R3寄存器中。 因為運(yùn)算器進(jìn)行補(bǔ)充運(yùn)算,所以A-B的功能由a補(bǔ)充-B補(bǔ)充完成。 ALU的運(yùn)算:

6、a補(bǔ)充0000 -B補(bǔ)充0100-b補(bǔ)充0100為R3=0100,結(jié)果為負(fù),n標(biāo)志位從0變?yōu)?,其他標(biāo)志位不變。 如果執(zhí)行由3運(yùn)算器運(yùn)算的操作數(shù)地址或轉(zhuǎn)送地址當(dāng)前轉(zhuǎn)送命令,則轉(zhuǎn)送地址是在程序計數(shù)器的值上加上相對位移量的地址。 操作步驟: MUX1選擇指令寄存器的相對位移量發(fā)送至ALU的a輸入端,MUX2選擇程序計數(shù)器PC的內(nèi)容發(fā)送至ALU的b輸入端,ALU進(jìn)行A B運(yùn)算,從y輸出端輸出結(jié)果,保存在PC中的是傳輸目標(biāo)地址。 下次執(zhí)行的命令從轉(zhuǎn)發(fā)地址執(zhí)行。 另外,關(guān)于移位操作,在此,將4位的2進(jìn)制的最左端的位作為符號位,說明移位操作的規(guī)則和操作結(jié)果。 (1)算術(shù)左移位SAL原始數(shù)目x 3210算術(shù)

7、左移位之后可見,其中,在算術(shù)左移位時使最高有效位移位,并且用0來補(bǔ)充最低有效位。 移動后的結(jié)果(如果沒有發(fā)生溢出)是原稿數(shù)的2倍。 在沒有溢出的情況下,當(dāng)使n位向左移動時,移動后的結(jié)果變?yōu)樵鍞?shù)的2n倍。當(dāng)發(fā)生溢出時,移動后的結(jié)果數(shù)據(jù)變得不穩(wěn)定。 (2)算術(shù)右移位SAR原始數(shù)目x 3210算術(shù)右移位之后可見,并且在算術(shù)右移位時,使最低有效位移位,并且不改變最高有效位。 移動后的結(jié)果(如果沒有產(chǎn)生溢出)是原稿數(shù)的1/2。 在不存在溢出的情況下,若對n位進(jìn)行右移位,則當(dāng)發(fā)生移位后的結(jié)果為原稿數(shù)的1/2n的溢出時,移位后的結(jié)果數(shù)據(jù)變得不穩(wěn)定。 (3)邏輯左移位SHL原始數(shù)量x 3210邏輯左移位之后

8、變得可見,其中,在邏輯左移位時使最高有效位移位,并且用0來校正最低有效位的結(jié)果與算術(shù)左移位的結(jié)果相同。 (4)邏輯右移位SHR原始數(shù)目x 3210邏輯右移位之后可見,并且對于邏輯右移位,使最低有效位移位,將最高有效位補(bǔ)充為零,并且結(jié)果與算術(shù)右移位不同。 (5)循環(huán)左移位ROL原稿數(shù)x 3210循環(huán)左移位后可見,在循環(huán)左移位時,所有的位順序左移,最低位從最高位循環(huán)移位。 (6)循環(huán)右移ROR原子數(shù)x 3210循環(huán)右移后可見,對于循環(huán)右移,所有的位順序都右移,最高位相對于最低位循環(huán)移位。 (7)進(jìn)位循環(huán)左移位RCL原子數(shù)X3X2X1X0循環(huán)左移位后(8)進(jìn)位循環(huán)右移位RCR原子數(shù)X3X2X1X0循

9、環(huán)右移位后,成為3.1.5定點運(yùn)算器的基本結(jié)構(gòu),定點運(yùn)算器包括ALU、陣列乘法器、寄存器在內(nèi)的定點運(yùn)算器中1 .在圖5 a中示出單總線配置的運(yùn)算器。 由于所有部件都連接到同一單總線上,因此為了將兩個操作數(shù)輸入ALU需要分兩次進(jìn)行,并且需要a和b兩個緩沖寄存器。 只有當(dāng)兩個操作數(shù)同時顯示在ALU的兩個輸入端時,ALU才能執(zhí)行相加。 相加結(jié)果出現(xiàn)在單總線上時,輸入數(shù)據(jù)已經(jīng)保存在緩沖寄存器中,不會影響輸入數(shù)據(jù)。 然后,第三個傳送命令將相加的“和”傳送到目的地寄存器。 因此,這種結(jié)構(gòu)的主要缺點是操作速度慢。 2 .雙總線配置的運(yùn)算器在圖5 b中示出。 在該運(yùn)算器中,兩個操作數(shù)同時被傳送至ALU以進(jìn)行運(yùn)

10、算,可通過控制一次操作數(shù)立即獲得運(yùn)算結(jié)果。 從該圖中可以看到,兩條總線分別將數(shù)據(jù)發(fā)送至ALU的輸入端。 特殊寄存器分為兩組,分別與一個總線交換數(shù)據(jù)。 這樣,可以將通用寄存器的數(shù)量放入任意的特殊寄存器組,提高數(shù)據(jù)傳輸?shù)撵`活性。 圖5 c示出三總線配置的運(yùn)算器。 在三總線配置中,ALU的兩個輸入端分別由兩條總線提供,而ALU的輸出連接到第三條總線。 由此,算術(shù)邏輯操作可以在一步的控制內(nèi)實施。由于ALU本身存在時間延遲,因此打入輸出結(jié)果的門脈沖必須考慮到該延遲。 此外,還設(shè)有一個總線旁路器。 如果不修改一個操作數(shù)而是直接從總線2傳輸?shù)娇偩€3,則可以通過控制總線旁路器來傳輸數(shù)據(jù)如果在傳輸一個操作數(shù)時需

11、要修改,則使用ALU。 顯然,三總線結(jié)構(gòu)運(yùn)算器的特點是工作速度快。3.2算術(shù)邏輯運(yùn)算的基本電路、3.2.1半加法器、有2個輸入端子,還有2個輸出端子,用于2個代表數(shù)字(A0,B0)的電位輸入的修正S0和輸出進(jìn)位C0。 這種電路可能出現(xiàn)的狀態(tài)如左圖所示。 如下圖所示,這是“與”和“異或”的關(guān)系,(a )如圖所示,“與”和“異或”門可以構(gòu)成半加法器。 在電子技術(shù)中,通常將基本元件的電路圖簡化為符號,如圖(b )所示,是半加法器的符號。3.2.2全加法器、全加法器有3個輸入端子: Ai、Bi和Ci;有2個輸出端子: Si和Ci 1。 其真值表和電路圖如下圖所示。 從該圖的分析可知,其總和Si可以用“

12、異或門”實現(xiàn),其進(jìn)位Ci 1可以用3個“異或門”和1個“異或門”實現(xiàn)。 已知全部加法器能夠處理低位進(jìn)位,如果多個位全部加法器在進(jìn)位方向上串聯(lián)連接,則能夠進(jìn)行多個位全部加法。 全加法器的電路如下圖所示。 3.3定點加減運(yùn)算、數(shù)據(jù)在校正計算機(jī)中可以用原碼、逆碼、補(bǔ)數(shù)表示,但是對于校正計算機(jī)來說,原碼加減運(yùn)算的規(guī)則很復(fù)雜,實際上在機(jī)器中不怎么采用原碼表示數(shù)的加減運(yùn)算,如果用補(bǔ)數(shù)表示,則其運(yùn)算結(jié)果也用補(bǔ)數(shù)表示。 如果結(jié)果的符號是0,則表示正數(shù),得到的補(bǔ)碼是原符號,只要在數(shù)值部分的前面加“ ”就成為真值。 如果結(jié)果的符號為1,則表示負(fù)數(shù),得到補(bǔ)充符號。 在這種情況下,對所獲得的候補(bǔ)碼求出再候補(bǔ)碼,獲得原

13、碼,在數(shù)值部分的前面加“-”碼成為真值。 3.3.1定點補(bǔ)償代碼的加法,規(guī)則: x補(bǔ)償y補(bǔ)償=X Y補(bǔ)償(mod 2n )現(xiàn)在,根據(jù)x、y的符號和絕對值的大小分為4種情況進(jìn)行討論。 (1)X0、Y0、X Y0。 加法兩數(shù)都是正數(shù),所以其和必定是正數(shù)。 正數(shù)的補(bǔ)數(shù)與原符號相同,x補(bǔ)正y補(bǔ)正=X Y=X Y補(bǔ)正(mod 2n ),例3-1 :已知X= 00010100B、Y= 00000101B,進(jìn)行補(bǔ)正符號加法運(yùn)算,可求出x補(bǔ)正的x補(bǔ)正=00010100 (20的補(bǔ)正代碼) ) y補(bǔ)正=0000100 xy補(bǔ)正=00011001 (25的補(bǔ)正代碼)碼比特,(2)X0,Y0,例3-2 :已知的X=

14、 00010001B,Y=-01111101B,進(jìn)行補(bǔ)正代碼加法運(yùn)算,求出x補(bǔ)正y補(bǔ)正。 x補(bǔ)充=00010001 (17的補(bǔ)充代碼) ) y補(bǔ)充=11111101 (-3的補(bǔ)充代碼) X Y補(bǔ)充=100001110 (14的補(bǔ)充代碼)欠缺符號比特, (3)X0即,2n-1X Y0從補(bǔ)償代碼定義可知,x補(bǔ)償=X Y補(bǔ)償=X Y補(bǔ)償=2n (X Y) X補(bǔ)償=X 2n Y=2n (X Y)=X Y補(bǔ)償(mod 2n )的結(jié)果得到負(fù)數(shù)的補(bǔ)償代碼形式,例3-3 :已知的x=0000 x補(bǔ)償=0000011 (第三補(bǔ)償代碼) ) y補(bǔ)償=11101001 (-23的補(bǔ)償代碼) X Y補(bǔ)償=111011

15、00 (-20的補(bǔ)償代碼)符號比特、(4)X0、加法兩數(shù)都是負(fù)數(shù),因此其和也必定是負(fù)數(shù)。 從補(bǔ)償代碼的定義可以看出,在x補(bǔ)償=2n X Y補(bǔ)償=2n X Y補(bǔ)償=2n (X Y) X補(bǔ)償=2n X 2n Y=2n 2n (X Y)=X Y補(bǔ)償(mod 2n )中得到的結(jié)果也是負(fù)數(shù)的補(bǔ)償代碼形式。 例3-4 :進(jìn)行已知的X=-01111101B、Y=-01101001B、補(bǔ)碼相加,求出x補(bǔ)碼y補(bǔ)償。x補(bǔ)償=11111101 (-3的補(bǔ)償代碼) ) y補(bǔ)償=11101001 (-23的補(bǔ)償代碼) X Y補(bǔ)償=111100110 (-26的補(bǔ)償代碼)符號比特,3 .丟失,在此,對每個符號比特反相加數(shù)

16、值比特可得到,將該過程作為求補(bǔ)償和注意:求補(bǔ)充與求補(bǔ)充區(qū)別開來,在補(bǔ)充系統(tǒng)內(nèi),求補(bǔ)充是符號相反,求絕對值相等的數(shù)。 因此,互補(bǔ)代碼的減法可以歸結(jié)為對減數(shù)進(jìn)行互補(bǔ)、相加。 例3-5 :進(jìn)行已知的X= 0010100B、Y= 0000011B、補(bǔ)碼減法運(yùn)算,求出X-Y。 已知x補(bǔ)償=X原子=00010100 Y補(bǔ)償=Y補(bǔ)償=00000011 X補(bǔ)償=00010100 (20的補(bǔ)償) ) y補(bǔ)償=11111101 (-3的補(bǔ)償) X Y補(bǔ)償=100010001、例3-6:x=-00010111b、y=0000011 b x補(bǔ)償=11101001 (-23的補(bǔ)償代碼) ) y補(bǔ)償=00000011 (3的補(bǔ)償代碼) X Y補(bǔ)償=11101100 (-20的補(bǔ)償代碼)符號比特為x-,因為結(jié)果符號比特為1,表示負(fù)數(shù),所以3.3.3無符號數(shù)的運(yùn)算,無符號將2個n位的無符號數(shù)相加時,x、y均為正數(shù),因此x-y也為正數(shù),若x-y的和超過字長n位的容許范圍,則必須進(jìn)位至更高位,這時必須用多字節(jié)來顯示。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論