運算方法和運算器課件_第1頁
運算方法和運算器課件_第2頁
運算方法和運算器課件_第3頁
運算方法和運算器課件_第4頁
運算方法和運算器課件_第5頁
已閱讀5頁,還剩110頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章運算方法和運算器2.1數據與文字的表示2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算與浮點運算器返回9/17/20231第二章運算方法和運算器2.1數據與文字的表示返回8/6/22.1數據與文字的表示方法2.1.1數據格式2.1.2數的機器碼表示2.1.3字符的表示2.1.4漢字的表示2.1.5校驗碼9/17/202322.1數據與文字的表示方法2.1.1數據格式8/6/20232.1數據與文字的表示方法計算機中使用的數據可分成兩大類:符號數據:非數字符號的表示(ASCII、漢字、圖形等)數值數據:數字數據的表示方式(定點、浮點)計算機數字和字符的表示方法應有利于數據的存儲、加工(處理)、傳送;編碼:用少量、簡單的基本符號,選擇合適的規則表示盡量多的信息,同時利于信息處理(速度、方便)9/17/202332.1數據與文字的表示方法計算機中使用的數據可分成兩大類:82.1.1數據格式一、復習 10進制和R進制之間的轉換

R進制到10進制:

10進制到R進制: 整數部分:除r取余,r為進制基數

小數部分:乘r取整9/17/202342.1.1數據格式一、復習8/6/202342.1.1數據格式二、數值數據 計算機在數據、文字的表示方式時,應該考慮一下幾個因素:表示的數據類型(整數、小數、實數和復數)數值的范圍數值精度存儲、處理、傳送的硬件代價9/17/202352.1.1數據格式二、數值數據8/6/202352.1.1數據格式三、計算機常用的數據表示格式有兩種:定點表示:小數點位置固定數值范圍有限浮點表示:小數點位置不固定數值范圍很大9/17/202362.1.1數據格式三、計算機常用的數據表示格式有兩種:8/62.1.1數據格式四、定點表示法所有數據的小數點位置固定不變理論上位置可以任意,但實際上將數據表示成兩種形式:純小數純整數定點數表示:帶符號數不帶符號數9/17/202372.1.1數據格式四、定點表示法8/6/202371、定點純小數x0x1x2x3…xn-1xn表示數的范圍是0≤|x|≤1-2-n(最小數、最大數、最接近0的正數、最接近0的負數)符號量值小數點固定于符號位之后,不需專門存放位置2.1.1數據格式9/17/202381、定點純小數符號量值小數點固定于符號位之后,不需專門存放位2.1.1數據格式x=0.00...0

x=1.00...0

x=0正0和負0都是0x=0.11...1x=1-2-n

最大x=0.00...01x=2-n

最接近0的正數x=1.00...01

x=-2-n最接近0的負數x=1.11...1

x=-(1-2-n

最小2、純小數的表示范圍9/17/202392.1.1數據格式x=0.00...0

x=0正0和負02.1.1數據格式3、定點純整數x0x1x2x3…xn-1xn表示數的范圍是0≤|x|≤2n-1最小數、最大數、最接近0的正數、最接近0的負數呢?符號量值小數點固定于最后一位之后,不需專門存放位置9/17/2023102.1.1數據格式3、定點純整數符號量值小數點固定于最后一位2.1.1數據格式4、定點表示法的特點定點數表示數的范圍受字長限制,表示數的范圍有限;定點表示的精度有限機器中,常用定點純整數表示

如果用定點表示,則如何表示實數(包括小數和整數)呢?-------引入浮點9/17/2023112.1.1數據格式4、定點表示法的特點8/6/2023112.1.1數據格式五、浮點表示:小數點位置隨階碼不同而浮動1、格式:N=RE.M2、機器中表示指數E基數R,取固定的值,比如10,2等尾數M,純小數階符階碼數符尾數9/17/2023122.1.1數據格式五、浮點表示:小數點位置隨階碼不同而浮動指2.1.1數據格式3、IEEE754標準(規定了浮點數的表示格式,運算規則等)規則規定了單精度(32)和雙精度(64)的基本格式.規則中,尾數用原碼,指數用移碼(便于對階和比較)9/17/2023132.1.1數據格式3、IEEE754標準(規定了浮點數的表示2.1.1數據格式IEEE754標準基數R=2,基數固定,采用隱含方式來表示它。32位的浮點數:S是數的符號位,1位,在最高位,“0”表示正數,“1”表示負數。M是尾數,23位,在低位部分,采用純小數表示E是階碼,8位,采用移碼表示。移碼比較大小方便。規格化:若不對浮點數的表示作出明確規定,同一個浮點數的表示就不是惟一的。尾數域最左位(最高有效位)總是1,故這一位經常不予存儲,而認為隱藏在小數點的左邊。采用移碼表示階碼E,將浮點數的指數真值e變成階碼E時,應將指數e加上一個固定的偏移值127(01111111),即E=e+127。9/17/2023142.1.1數據格式IEEE754標準8/6/2023142.1.1數據格式64位的浮點數中符號位1位,階碼域11位,尾數域52位,指數偏移值是1023。因此規格化的64位浮點數x的真值為:x=(-1)S×(1.M)×2E-1023

e=E-1023一個規格化的32位浮點數x的真值表示為x=(-1)S×(1.M)×2E-127

e=E-1279/17/2023152.1.1數據格式64位的浮點數中符號位1位,階碼域11位,2.1.1數據格式真值x為零表示:當階碼E為全0且尾數M也為全0時的值,結合符號位S為0或1,有正零和負零之分。真值x為無窮大表示:當階碼E為全1且尾數M為全0時,結合符號位S為0或1,也有+∞和-∞之分。浮點數所表示的范圍遠比定點數大。e的范圍為-126至+127,32位浮點數表示的絕對值范圍是10-38至1038一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。而單片機中多采用定點表示。9/17/2023162.1.1數據格式真值x為零表示:當階碼E為全0且尾數M也為2.1.1數據格式例1:若浮點數x的754標準存儲格式為(41360000)16,求其浮點數的十進制數值。

解:將16進制數展開后,可得二制數格式為01000001001101100000000000000000S階碼(8位)尾數(23位)指數e=階碼-127=10000010-01111111=00000011=(3)10包括隱藏位1的尾數1.M=1.01101100000000000000000=1.011011于是有x=(-1)S×1.M×2e=+(1.011011)×23=+1011.011=(11.375)10

9/17/2023172.1.1數據格式例1:若浮點數x的754標準存儲格式為(42.1.1數據格式例2:將數(20.59375)10轉換成754標準的32位浮點數的二進制存儲格式。解:首先分別將整數和分數部分轉換成二進制數:20.59375=10100.10011然后移動小數點,使其在第1,2位之間10100.10011=1.010010011×24e=4于是得到:S=0,E=4+127=131,M=010010011最后得到32位浮點數的二進制存儲格式為:01000001101001001100000000000000=(41A4C000)16

9/17/2023182.1.1數據格式例2:將數(20.59375)10轉換成72.1.1數據格式4、十進制數串的表示字符串形式,一個字節存放一個十進制數BCD(壓縮),一個字節存放兩者個十進制數編碼方式BCD碼ASCII碼的低4位符號占半個字節9/17/2023192.1.1數據格式4、十進制數串的表示8/6/202319

十進制數串的表示方法1.字符串形式每個十進制的數位或符號位都用一個字節存放+12-38-382.壓縮的十進制數串形式一個字節存放兩個十進制的數位,符號位占半個字節(例如用C表示正,D表示負)+12123

C012D+123-12

每個數位可用BCD碼或ASCII碼9/17/202320

十進制數串的表示方法1.字符串形式+12-38-382.壓2.1.2數的機器碼表示一、數的機器碼表示真值:一般書寫的數機器碼:機器中表示的數,要解決在計算機內部數的正、負符號和小數點運算問題。原碼反碼補碼移碼9/17/2023212.1.2數的機器碼表示一、數的機器碼表示8/6/202321、原碼表示法定點整數X0X1X2…Xnx2n>x≥00,正數[x]原=符號2n-x0≥x>-2n1,負數說明:有正0和負0之分例:x=+11001110 [x]原=011001110[-x]原=1110011109/17/2023221、原碼表示法定點整數X0X1X2…Xn8/6/2023221、原碼表示法原碼特點:表示簡單,易于同真值之間進行轉換,實現乘除運算規則簡單。進行加減運算十分麻煩。9/17/2023231、原碼表示法原碼特點:8/6/2023232、補碼表示法定義:正數的補碼就是正數的本身,負數的補碼是原負數加上模。定點整數x0x1x2…xnx2n>x≥00,正數,0[x]補=符號2n+1+x0≥x>-2n1,負數9/17/2023242、補碼表示法定義:正數的補碼就是正數的本身,負數的補碼是原2、補碼表示法補碼性質高位表明正負正數的補碼符號位為1,尾數與原碼相同負數的補碼符號位為1,數值位是將原碼的數值按位取反,再在末位加1。范圍-2n~2n-1(定點整數)正0和負0的補碼相同但是,在求補碼還要減法,電路繁瑣,下面的反碼表示解決著個問題。9/17/2023252、補碼表示法補碼性質8/6/2023253、反碼表示法定義:正數的表示與原、補碼相同,負數的反碼符號位為1,數值位是將原碼的數值按位取反,就得到該數的反碼表示。電路容易實現,觸發器的輸出有正負之分。反碼表示有正0和負0之分9/17/2023263、反碼表示法定義:正數的表示與原、補碼相同,負數的反碼符號3、反碼表示法例:

X1=+0.1011011[X1]原=0.1011011[X1]反=0.1011011[X1]補=0.1011011

X2=-0.1011011

[X2]原=1.1011011[X2]反=1.0100100[X2]補=1.0100101

9/17/2023273、反碼表示法例:8/6/2023274、移碼表示法移碼表示法(用在階碼中)定點整數定義[x]移=2n+x2n>x≥-2n

00000000~11111111(-2n~2n-1)例:+1011111原碼為01011111補碼為01011111反碼為01011111移碼為11011111移碼正數符號為1,負數符號為0,與原、反、補碼的符號表示相反。9/17/2023284、移碼表示法移碼表示法(用在階碼中)8/6/2023284、移碼表示法例:-1011111原碼為11011111補碼為10100001反碼為10100000移碼為00100001特點:移碼和補碼尾數相同,符號位相反9/17/2023294、移碼表示法例:-10111118/6/202324、移碼表示法課堂作業:x1=+123,求:[X1]原,[X1]反,[X1]補,[X1]移x2=-123,求:[X2]原,[X2]反,[X2]補,[X2]移9/17/2023304、移碼表示法課堂作業:8/6/202330[例7]將十進制真值(-127,-1,0,+1,+127)列表表示成二進制數及原碼、反碼、補碼、移碼值。9/17/202331[例7]將十進制真值(-127,-1,0,+1,+127)列[例8]設機器字長16位,定點表示,尾數15位,數符1位,問:定點原碼整數表示時,最大正數是多少?最小負數是多少最大正數值=(215-1)10=(+32767)10最小負數值=-(215-1)10=(-32767)109/17/202332[例8]設機器字長16位,定點表示,尾數15位,數符1位,問2.1.3字符和字符串(非數值)的表示方法符號數據:字符信息用數據表示,如ASCII等;字符表示方法ASCII:用一個字節來表示,低7位用來編碼(128),最高位為校驗位,參見教材P24表2-1字符串的存放方法9/17/2023332.1.3字符和字符串(非數值)的表示方法符號數據:字符信息表2-1ASCⅡ字符編碼表

0000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2〃2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB‘7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l┃1101CRGS-=M]m}1110SORS.>N∧n~1111SIUS/?O—oDEL9/17/202334表2-1ASCⅡ字符編碼表

00000101001112.1.4漢字的存放漢字的表示方法(一級漢字3755個,二級漢字3008個)輸入碼國標碼一級(16~55)*94二級(56~87)*94圖形符號(682個)(01~09)*94拼音、五筆漢字內碼:漢字信息的存儲,交換和檢索的機內代碼,兩個字節組成,每個字節高位都為1(區別于英文字符)9/17/2023352.1.4漢字的存放漢字的表示方法8/6/2023352.1.4漢字的存放漢字字模碼:漢字字形點陣漢字庫9/17/2023362.1.4漢字的存放漢字字模碼:漢字字形8/6/2023362.1.5校驗碼校驗碼(奇偶校驗碼)引入:信息傳輸和處理過程中受到干擾和故障,容易出錯。解決方法:是在有效信息中加入一些冗余信息(校驗位)奇偶校驗位定義設x=(x0x1…xn-1)是一個n位字,則奇校驗位C定義為:C=x0⊕x1⊕…⊕xn-1,式中⊕代表按位加,表明只有當x中包含有奇數個1時,才使C=1,即C=0。同理可以定義偶校驗。

只能檢查出奇數位錯;不能糾正錯誤。p26例10自己看一下。9/17/2023372.1.5校驗碼校驗碼(奇偶校驗碼)8/6/2023372.2定點加法、減法運算2.2.1補碼加減法2.2.2溢出檢測2.2.3基本的加法和減法器2.2.4十進制加法器9/17/2023382.2定點加法、減法運算2.2.1補碼加減法8/6/202.2.1補碼加減法補碼加法公式:[x+y]補=[x]補+[y]補補碼減法公式:[x-y]補=[x]補+[-y]補其中:

[-y]補等于[y]補取反,末位加1

9/17/2023392.2.1補碼加減法補碼加法8/6/2023392.2.1補碼加減法如:y=0.0111[y]補=0.0111[-y]補=1.1001從右邊到左邊,除了第一個1和右邊的0保持不變以外,其它按位取反,很重要!9/17/2023402.2.1補碼加減法如:y=0.0111[y]補=02.2.1補碼加減法例1:x=-0.1011,y=0.0111,求[x+y]補[x]補=1.0101[y]補=0.0111[x+y]補=[x]補+[y]補=1.0101+0.0111=1.1100例2:x=+0.11011,y=-0.11111,求[x-y]補[x]補=0.11011[y]補=1.00001[-y]補=0.11111[x-y]補=[x]補+[-y]補=1.110109/17/2023412.2.1補碼加減法例1:x=-0.1011,y=0.02.2.1補碼加減法課堂作業:例3:x=+0.1011,y=+0.1001,求x+y例4:x=-0.1101,y=-0.1011,求x+y

9/17/2023422.2.1補碼加減法課堂作業:8/6/2023422.2.2溢出的檢測溢出的檢測可能產生溢出的情況兩正數加,變負數,上溢(大于機器所能表示的最大數)兩負數加,變正數,下溢(小于機器所能表示的最小數)9/17/2023432.2.2溢出的檢測溢出的檢測8/6/2023432.2.2溢出的檢測一、檢測方法1、雙符號位法(參與加減運算的數采用變形補碼表示)Sf1SF200 正確(正數)

0 1 上溢

1 0 下溢

1 1 正確(負數)Sf1表示正確的符號,邏輯表達式為V=Sf1

⊕Sf2,可以用異或門來實現9/17/2023442.2.2溢出的檢測一、檢測方法8/6/2023442.2.2溢出的檢測二、檢驗舉例:x=+0.1100,y=+0.1000,求x+y

x=-0.1100,y=-0.1000,求x+y

結果出現了01或10的情況就為溢出9/17/2023452.2.2溢出的檢測二、檢驗舉例:8/6/2023452.2.2溢出的檢測2、單符號位法Cf C0

0 0 正確(正數)

0 1 上溢

1 0 下溢

1 1 正確(負數)V=Cf

⊕C0

其中Cf為符號位產生的進位,C0為最高有效位產生9/17/2023462.2.2溢出的檢測2、單符號位法8/6/2023462.2.3基本的加法和減法器基本的加法和減法器半加器

Hi=Ai⊕Bi

不考慮進位全加器

考慮低位進位Ci-1和向高位的進位Ci

9/17/2023472.2.3基本的加法和減法器基本的加法和減法器8/6/202一位全加器真值表輸入輸出AiBiCiSiCi+100000001100101001101100101010111001111119/17/202348一位全加器真值表輸入輸出AiBiCiSiCi+1000000FA邏輯方程因為:9/17/202349FA邏輯方程因為:8/6/202349FA邏輯方程邏輯方程見下9/17/202350FA邏輯方程邏輯方程見下8/6/202350FA邏輯電路和框圖FA(全加器)邏輯電路圖FA框圖9/17/202351FA邏輯電路和框圖FA(全加器)邏輯電路圖n位行波進位加法器圖2-3行波進位的補碼加法/加法器9/17/202352n位行波進位加法器圖2-3行波進位的補碼加法/加法器8/6/2.3定點乘法運算2.3.1定點原碼乘法2.3.2定點補碼乘法9/17/2023532.3定點乘法運算2.3.1定點原碼乘法8/6/202.3.1定點原碼乘法乘法實現方法在現有的加法和減法器的基礎上增加適當的移位線路及控制邏輯可以實現用LSI和VLSI工藝實現專用的乘法器編制子程序(單片機等低端機器)9/17/2023542.3.1定點原碼乘法乘法實現方法8/6/202354一、定點原碼乘法原理1、人工算法與機器算法的異同性:[x]原=xf.xn-1…x1x0[y]原=yf.yn-1…y1y0[x.y]原=(xf⊕yf)+(0.xn-1…x1x0).(0.yn-1…y1y0)尾數乘法如下:設x=0.1101,y=0.1011

0.1

1

01(x)

×

0.10

1

1

(y)

1

1

0

1

1

1

0

1

0

0

0

0

+1

1

0

1

0.

1

0

0

0

1

1

1

1

(z)9/17/202355一、定點原碼乘法原理1、人工算法與機器算法的異同性:8/61、人工算法與機器算法的異同性n位乘n位積可能為2n位.乘積的最后是所有部分積之和,有n個數相加,而FA只有兩個輸入端所以需要改造方法一:硬件實現方法(串行的“加法和移位”),硬件結構簡單,速度太慢(已經淘汰).方法二:不帶符號位的陣列乘法器9/17/2023561、人工算法與機器算法的異同性n位乘n位積可能為2n位.8/2、不帶符號位的陣列乘法器不帶符號陣列乘法器邏輯圖9/17/2023572、不帶符號位的陣列乘法器不帶符號陣列乘法器邏輯圖8/6/22、不帶符號位的陣列乘法器9/17/2023582、不帶符號位的陣列乘法器8/6/2023582、不帶符號位的陣列乘法器[例19]參見圖2.5,已知不帶符號的二進制整數A=11011,B=10101,求每一部分乘積項aibj的值與p9p8…p0的值。

解:

11011=A(2710)

×10101=B(2110)

————————————

11011a4b0=1,a3b0=1,a2b0=0,a1b0=1,a0b0=1

00000a4b1=0,a3b1=0,a2b1=0,a1b1=0,a0b1=0

11011a4b2=1,a3b2=1,a2b2=0,a1b2=1,a0b2=1

00000a4b3=0,a3b3=0,a2b3=0,a1b3=0,a0b3=0

+11011a4b4=1,a3b4=1,a2b4=0,a1b4=1,a0b4=1

————————————

1000110111=P

P=p9p8p7p6p5p4p3p2p1p0=1000110111B=567D

9/17/2023592、不帶符號位的陣列乘法器[例19]參見圖2.5,已知不帶3、帶符號位的陣列乘法器求補電路原理:算前求補-乘法器-算后求補,見下圖9/17/2023603、帶符號位的陣列乘法器求補電路8/6/2023603、帶符號的陣列乘法器求補電路小結E=0時,輸入和輸出相等E=1時,則從數最右端往左邊掃描,直到第一個1的時候,該位和右邊各位保持不變0⊕A=A,左邊各數值位按位取反1⊕A=乛A可以用符號作為E的輸入原:1.11110補:1.00010不變,左邊數值位取反9/17/2023613、帶符號的陣列乘法器求補電路小結不變,左邊數值位取反8/63、帶符號的陣列乘法器(間接法)

原碼/補碼9/17/2023623、帶符號的陣列乘法器(間接法)原碼/補碼8/6/2023舉例(P36)[例20]設x=+15,y=-13,用帶求補器的原碼陣列乘法器求出乘積

x·y=?

解:[x]原=01111,[y]原=11101,|x|=1111,|y|=1101

符號位運算:0⊕1=1

1111

×1101

————————————

1111

0000

1111

+1111

————————————

11000011

乘積符號為1,算后求補器輸出11000011,[x×y]原=111000011

換算成二進制數真值是x·y=(-11000011)B=(-195)D9/17/202363舉例(P36)[例20]設x=+15,y=-13,用帶求補舉例(P36)[例21]設x=-15,y=-13,用帶求補器的補碼陣列乘法器求出乘積

x·y=?并用十進制數乘法進行驗證。

解:[x]補=10001,[y]補=10011,乘積符號位運算:1⊕1=0

尾數部分算前求補器輸出|x|=1111,|y|=1101

1111

×1101

————————————

1111

0000

1111

+1111

————————————

11000011

乘積符號為0,算后求補器輸出11000011,[x×y]補=011000011

補碼二進制數真值x·y=0×28+1×27+1×26+1×21+1×20=(+195)10

十進制數乘法驗證x·y=(-15)×(-13)=+1959/17/202364舉例(P36)[例21]設x=-15,y=-13,用帶求補2.5定點運算器的組成2.5.1邏輯運算2.5.2多功能算術/邏輯運算單元ALU2.5.3內部總線2.5.4定點運算器的基本結構9/17/2023652.5定點運算器的組成2.5.1邏輯運算8/6/2022.5.1邏輯運算1、邏輯非運算[例24]x1=01001001,x2=11110000,求x1,x2

解:

x1=10110100

x2=00001111

9/17/2023662.5.1邏輯運算1、邏輯非運算8/6/2023662.5.1邏輯運算2、邏輯加運算[例25]x=10100001,y=100111011,求x+y

解:

10100001x

+10011011y

————————————

10111011z

即x+y=10111011

9/17/2023672.5.1邏輯運算2、邏輯加運算8/6/2023672.5.1邏輯運算3、邏輯乘運算

[例26]x=10111001,y=11110011,求x·y

解:

10111001x

·11110011y

————————————

10110001z

即x·y=10110001

9/17/2023682.5.1邏輯運算3、邏輯乘運算

[例26]x=10112.5.1邏輯運算4、邏輯異運算[例27]x=10101011,y=11001100,求x⊕y

解:

10101011x

⊕11001100y

————————————

01100111z

即x⊕y=011001119/17/2023692.5.1邏輯運算4、邏輯異運算8/6/2023692.5.2多功能算術/邏輯運算單元ALU多功能算術/邏輯運算單元ALU,本節介紹的是74LS181的基本邏輯結構是先行進位加法器,通過改變其輸入端Ai和Bi來實現算術運算和邏輯運算功能。怎樣實現呢?1、基本思想:一位全加器FA的邏輯表達式:為了實現多種算術邏輯運算,可將Ai和Bi輸入一個函數發生器得到輸出Xi和Yi,作為一位全加器的輸入(見下頁圖)。9/17/2023702.5.2多功能算術/邏輯運算單元ALU多功能算術/邏輯ALU的邏輯圖與邏輯表達式i表示集成在一片電路上的ALU的二進制位數,例如4位一片,i=0,1,2,3N代表若干片ALU組成更大字長的運算器時每片電路的進位輸入,例如當4片組成16位字長的運算器時,n=0,4,8,12

一位ALU邏輯圖

9/17/202371ALU的邏輯圖與邏輯表達式i表示集成在一片電路上的ALU的二S0S1

Yi

S2S3

Xi

00

01

10

1100

01

10

111

2、邏輯表達式XiYi與控制參數和輸入量的關系構造如下真值表2.5.2多功能算術/邏輯運算單元ALU9/17/202372S0S1YiS2S3Xi00

01

10

2.5.2多功能算術/邏輯運算單元ALU進一步化簡得到下式9/17/2023732.5.2多功能算術/邏輯運算單元ALU進一步化簡得到下2.5.2多功能算術/邏輯運算單元ALUALU的某一位邏輯表達式見下:9/17/2023742.5.2多功能算術/邏輯運算單元ALUALU的某一位邏例如:S3S2S0S1=0000代入:則可以處理16種算術\邏輯運算,每種運算只針對1位二進制編碼?思考:如何設計4位ALU?16位呢?2.5.2多功能算術/邏輯運算單元ALU9/17/202375例如:則可以處理16種算術\邏輯運算,每種運算只針對1位二進2.5.2多功能算術/邏輯運算單元ALU4位ALU

問題1:片內是串行進位還是并行進位?回答:由上圖結構中可以看出

Cn+1=Y0+X0Cn

Cn+2=Y1+X1Cn+1

Cn+3=Y2+X2Cn+2

Cn+4=Y3+X3Cn+3

顯然是一個串行進位,速度慢,為了實現快速ALU,需加以改進。9/17/2023762.5.2多功能算術/邏輯運算單元ALU4位ALU回答:2.5.2多功能算術/邏輯運算單元ALU上述片內進位采用串行,具有延時長的缺點如何改進?思考:Cn+i與X、Y有關,而每一位中X、Y的產生是不是同時的?答:由于每一位中X、Y是同時產生的,則可以由下面方法算出并行進位Cn+4

第0位向第1位的進位公式為

Cn+1=Y0+X0Cn

(1)其中Cn是向第0位(末位)的進位。第1位向第2位的進位公式為

Cn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn(Cn+1用(1)式代入)第2位向第3位的進位公式為

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2Cn第3位的進位輸出(即整個4位運算進位輸出)公式為

Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn

9/17/2023772.5.2多功能算術/邏輯運算單元ALU上述片內進位采用2.5.2多功能算術/邏輯運算單元ALU令G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3G為進位發生輸出P為進位傳送輸出增加P和G的目的在于實現多片(組)ALU之間的先行進位,需要配合電路,稱為先行進位發生器(CLA)器件:74181ALU9/17/2023782.5.2多功能算術/邏輯運算單元ALU令G=Y3+Y22.5.2多功能算術/邏輯運算單元ALU具有正邏輯和負邏輯兩種內部邏輯結構圖見下頁9/17/2023792.5.2多功能算術/邏輯運算單元ALU具有正邏輯和負邏74181ALU邏輯圖(1)9/17/20238074181ALU邏輯圖(1)8/6/20238074181ALU邏輯圖(2)9/17/20238174181ALU邏輯圖(2)8/6/20238174181ALU邏輯圖(2)PGX3Y3X2Y2X1Y1X0Y0C0G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X39/17/20238274181ALU邏輯圖(2)PGX3Y74181ALU邏輯圖(總體)9/17/20238374181ALU邏輯圖(總體)8/6/2023832.5.2多功能算術/邏輯運算單元ALU算術邏輯運算的實現(74181)M=L時,對進位信號沒有影響,做算術運算M=H時,進位門被封鎖,做邏輯運算說明:74181執行正邏輯輸入/輸出方式的一組算術運算和邏輯運算和負邏輯輸入/輸出方式的一組算術運算和邏輯運算是等效的。A=B端可以判斷兩個數是否相等。9/17/2023842.5.2多功能算術/邏輯運算單元ALU算術邏輯運算的實2.5.3內部總線內部總線機器內部各部份數據傳送頻繁,可以把寄存器間的數據傳送通路加以歸并,組成總線結構。分類所處位置內部總線(CPU內)外部總線(系統總線)邏輯結構單向傳送總線雙向傳送總線圖(2-14)9/17/2023852.5.3內部總線內部總線8/6/202385三態門組成的雙向數據總線9/17/202386三態門組成的雙向數據總線8/6/202386由三態門組成的數據總線9/17/202387由三態門組成的數據總線8/6/2023872.5.4定點運算器的基本結構1、單總線結構的運算器9/17/2023882.5.4定點運算器的基本結構1、單總線結構的運算器8/6/2.5.4定點運算器的基本結構2、雙總線結構的運算器9/17/2023892.5.4定點運算器的基本結構2、雙總線結構的運算器8/6/2.5.4定點運算器的基本結構3、三總線結構的運算器9/17/2023902.5.4定點運算器的基本結構3、三總線結構的運算器8/6/2.6浮點運算方法和浮點運算器2.6.1浮點加法、減法運算2.6.2浮點乘法、除法運算2.6.3浮點運算流水線2.6.4浮點運算器實例9/17/2023912.6浮點運算方法和浮點運算器2.6.1浮點加法、減法2.6.1浮點加法、減法運算1、浮點加減運算 設有兩個浮點數x和y,它們分別為 x=2Ex·Mx y=2Ey·My其中Ex和Ey分別為數x和y的階碼,Mx和My為數x和y的尾數。兩浮點數進行加法和減法的運算規則是 x±y=(Mx2Ex-Ey±My)2Ey, 設Ex<=Ey9/17/2023922.6.1浮點加法、減法運算1、浮點加減運算8/6/2022.6.1浮點加法、減法運算2、浮點運算步驟如下:1.0操作數的檢查,看有無簡化操作的可能;2.比較階碼大小并完成對階(小階向大階對齊);3.尾數進行加或減運算;4.結果規格化并進行舍入處理9/17/2023932.6.1浮點加法、減法運算2、浮點運算步驟如下:8/6/2.6.1浮點加法、減法運算9/17/2023942.6.1浮點加法、減法運算8/6/2023942.6.1浮點加法、減法運算[例28]設x=22×0.11011011,y=-24×0.101011001、0操作數檢查(非0)2、對階:階碼對齊后才能加減。規則是階碼小的向階碼大的數對齊;若△E=0,表示兩數階碼相等,即Ex=Ey;若△E>0,表示Ex>Ey;若△E<0,表示Ex>Ey。當Ex≠Ey

時,要通過尾數的移動以改變Ex或Ey,使之相等。9/17/2023952.6.1浮點加法、減法運算[例28]設x=22×0.1原則:小階向大階設△E>0,表示Ex>Ey,則移動y的尾數,My右移△E位,問題:為什么要小階向大階看齊?階差=Ex-Ey=00010-00100=11110即階差為-2,Mx右移兩位,Ex加2x=00100,0.00110110(11)2.6.1浮點加法、減法運算9/17/202396原則:小階向大階2.6.1浮點加法、減法運算8/6/2022.6.1浮點加法、減法運算3、尾數相加00.00110110(11)+11.01010100=11.10001010(11)4、結果規格化(1)在浮點加減運算時,尾數求和的結果也可以得到01.ф…ф或10.ф…ф,即兩符號位不等,此時將運算結果右移以實現規格化表示,稱為向右規格化。規則:尾數右移1位,階碼加1(2)結果是00.0..01.....或11.1...10...時,則向左規格化規則:尾數左移1位,階碼減1,直到規格化右規,階碼加1,左規,階碼減1剛才例子左規為11.00010101(10),階碼減1為00011練習:01.110110.000111.10019/17/2023972.6.1浮點加法、減法運算3、尾數相加8/6/202392.6.1浮點加法、減法運算舍入處理(對階和向右規格化時)就近舍入(0舍1入):類似”四舍五入”,丟棄的最高位為1,進1朝0舍入:截尾朝+∞舍入:正數多余位不全為”0”,進1;負數,截尾朝-∞舍入:負數多余位不全為”0”,進1;正數,截尾溢出判斷和處理階碼上溢,一般將其認為是+∞和-∞。階碼下溢,則數值為0尾數上溢,兩個同符號位的數相加。處理方法是尾數右移,階碼加1。尾數下溢。尾數右移時,最低位從最右端流出。進行要進行舍入處理

。9/17/2023982.6.1浮點加法、減法運算舍入處理(對階和向右規格化時)設[x1]補=11.01100000,[x2]補=11.01100001,[x3]補=11.01101000,[x4]補=11.01111001,求執行只保留小數點后4位有效數字的舍入操作值。課堂作業9/17/202399設[x1]補=11.01100000,課堂作業8/6/202課堂練習已知:x=0.1101*201y=-0.1010*211,求X+Y尾數和階符都采用補碼表示,都采用雙符號位表示法。求x+y9/17/2023100課堂練習已知:x=0.1101*201y=-0.1012.6.1浮點加法、減法運算[x]浮=0001,00.1101[y]浮=0011,11.0110階差=1110即為-2Mx應當右移2位,[x]浮=0011,00.0011(01)尾數和為11.1001(01)左規11.0010(10),階碼減1為0010舍入(就近舍入)11.0011丟棄10x+y=-0.1101*2109/17/20231012.6.1浮點加法、減法運算[x]浮=0001,00.112.6.2浮點乘法和除法運算設有兩個浮點數x和y:

x=2Ex·Mx

y=2Ey·Myx×y=2(Ex+Ey)·(Mx×My)x÷y=2(Ex-Ey)·(Mx÷My)乘除運算分為四步0操作數檢查階碼加減操作尾數乘除操作結果規格化和舍入處理9/17/20231022.6.2浮點乘法和除法運算設有兩個浮點數x和y:

2.6.2浮點乘法和除法運算浮點數的階碼運算(移碼的運算規則)[X]移+[Y]移=2n+[X+Y]移9/17/20231032.6.2浮點乘法和除法運算浮點數的階碼運算(移碼的運算規2.6.2浮點乘法和除法運算移碼采用雙符號位,為了對溢出進行判斷01為正00為負10上溢11下溢例:x=+011,y=+110,求[x+y]移和[x-y]移,并判斷是否溢出。

[x]移=01011,[y]補=00110,[-y]補=11010

[x+y]移=[x]移+[y]補=10001,結果上溢。

[x-y]移=[x]移+[-y]補=00101,結果正確,為-3。9/17/20231042.6.2浮點乘法和除法運算移碼采用雙符號位,為了對溢出進2.6.2浮點乘法和除法運算尾數處理截斷舍入尾數用原碼表示時只要尾數最低為1或者移出位中有1數值位,使最低位置10舍1入尾數用補碼表示時(p57例30)丟失的位全為0,不必舍入。丟失的最高位為0,以后各位不全為0時;或者最高為1,以后各位全為0時,不必舍入。丟失的最高位為1,以后各位不全為0時,則在尾數的最低位入1的修正操作。9/17/20231052.6.2浮點乘法和除法運算尾數處理8/6/20231052.6.2浮點乘法和除法運算

[例30]設有浮點數x=2-5×0.0110011,y=23×(-0.1110010),階碼用4位移碼表示,尾數(含符號位)用8位補碼表示。求[x×y]浮。要求用補碼完成尾數乘法運算,運算結果尾數保留高8位(含符號位),并用尾數低位字長值處理舍入操作。9/17/20231062.6.2浮點乘法和除法運算[例30]設有浮點數x=2x=2-5×0.0110011,y=23×(-0.1110010)[解:]移碼采用雙符號位,尾數補碼采用單符號位,則有

[Mx]補=0.0110011,[My]補=1.0001110,

[Ey]移=01011,[Ey]補=00011,[Ex

溫馨提示

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

評論

0/150

提交評論