1 / 129

计算机组成原理

计算机组成原理. 第三章 运算方法与运算部件. 计算机中完成运算的主要部件就是 CPU 中的算术逻辑运算单元 ALU 计算机的运算可以分为: 数值运算和非数值运算 数值运算的基础是定点与浮点,其中以加法为核心. 1. 定点加减运算. 一、补码加减运算 计算机中,常用补码进行加减运算。 补码可将减法变加法进行运算。 补码运算特点:符号位与数值位一同运算。 运算的基本规则: [X] 补 +[Y] 补 = [X+Y] 补 [X-Y] 补 = [X] 补 -[Y] 补 = [X] 补 +[-Y] 补

Download Presentation

计算机组成原理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机组成原理 第三章 运算方法与运算部件

  2. 计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU计算机中完成运算的主要部件就是CPU中的算术逻辑运算单元ALU 计算机的运算可以分为: 数值运算和非数值运算 数值运算的基础是定点与浮点,其中以加法为核心

  3. 1. 定点加减运算 一、补码加减运算 计算机中,常用补码进行加减运算。 补码可将减法变加法进行运算。 补码运算特点:符号位与数值位一同运算。 运算的基本规则: [X]补+[Y]补= [X+Y]补 [X-Y]补= [X]补-[Y]补= [X]补+[-Y]补 由[Y]补求得[-Y]补的方法:对[Y]补(包含符号位)求反且末位加1。

  4. 证明: 在模2下,设[X]补= X0X1X2… Xn, [Y]补= Y0Y1Y2… Yn 则[X]补=2· X0+X ,[Y]补=2· Y0+Y 1.[X]补+[Y]补= 2· X0+X + 2· Y0+Y=2(X0+Y0)+(X+Y) (1)若X0Y0 =00,则 [X]补+[Y]补= X+Y= [X+Y]补; (2)若X0Y0 =01或10,则 [X]补+[Y]补=2+(X+Y) 当X+Y>0时, 2+(X+Y)>2,进位丢失,得: [X]补+[Y]补=X+Y= [X+Y]补; 当X+Y<0时, [X]补+[Y]补=2+(X+Y) = [X+Y]补; (3)若X0Y0 =11,则 [X]补+[Y]补= 4+(X+Y) =2+[2+(X+Y)] ∵0 > X+Y ≥ -1 ,∴2 > 2+(X+Y) ≥ 1 此时,[X]补+[Y]补= 2+(X+Y) = [X+Y]补(2自然丢失)

  5. 2、∵[X]补+[Y]补= [X+Y]补 ∴ [Y]补= [X+Y]补-[X]补 ……① 又∵[X-Y]补=[X+(-Y)]补= [X]补+[-Y]补 ∴ [-Y]补= [X-Y]补-[X]补 ……② ①+②得: [Y]补+[-Y]补= [X+Y]补-[X]补 +[X-Y]补-[X]补 = [X+Y+ X-Y]补-[X]补-[X]补= [X+X]补-[X]补-[X]补=0 ∴[-Y]补=-[Y]补 即[X-Y]补= [X]补+[-Y]补= [X]补-[Y]补

  6. 例1:已知机器字长n=8,X=44, Y=53,求X+Y=? 解:[X]原=00101100,[Y]原=00110101 [X]补=00101100,[Y]补=00110101 [X]补= 0 0 1 0 1 1 0 0 + [Y]补= 0 0 1 1 0 1 0 1 [X+Y]补= 0 1 1 0 0 0 0 1 真值:X+Y= (+1100001)2 = +97

  7. 例2:已知机器字长n=8,X=-44, Y=-53,求X+Y=? 解:[44]补=00101100,[53]补=00110101 [X]补=[-44]补=11010011+1=11010100, [Y]补=[-53]补=11001010+1=11001011 [X]补=1 1 0 1 0 1 0 0 + [Y]补=1 1 0 0 1 0 1 1 [X+Y]补= 1 1 0 0 1 1 1 1 1 超出8位,舍弃模值 X+Y=(-1100001)2=-97

  8. 例3:已知机器字长n=8,X=0.1101, Y=0.0110,求X-Y=? 解:[X]补= 0.1101000,[Y]补=0.0110000, [-Y]补=1.1010000 [X]补=0. 1 1 0 1 0 0 0 + [-Y]补=1. 1 0 1 0 0 0 0 1 0 .0 1 1 1 0 0 0 自然丢失 [X-Y]补= (0 .0111000)2,X-Y= (0 .0111)2

  9. 例4:已知机器字长n=8, X=- 0.1101, Y=- 0.0110求X-Y=? 解:[X]补=1.0011000,[Y]补=1.1010000 [-Y]补=0.0110000 [X]补=1. 0 0 1 1 0 0 0 + [-Y]补=0. 0 1 1 0 0 0 0 1. 1 0 0 1 0 0 0 [X-Y]补= (1. 1 0 0 1 0 0 0)2, X-Y= (-0. 0 1 1 1 )2

  10. 2. 溢出的检测 溢出:运算结果超出了计算机所能表示的数据范围。 正溢(上溢):运算结果为正而绝对值超出了表示的范围。 负溢(下溢):运算结果为负而绝对值超出了表示的范围。 定点数的溢出——根据数值本身判断。

  11. 例:已知机器字长n=8,X= 120, Y=10, 求X+Y=? 解:[X]补=01111000,[Y]补=00001010, [X]补=0 1 1 1 1 0 0 0 + [Y]补=0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 [X+Y]补=10000010,X+Y=11111110 X+Y的真值= -1111110=( -126)10 运算结果超出机器数值范围发生溢出错误。 8位计算机数值表达范围:(-128~+127)

  12. 溢出判断规则与判断方法 • 两个相同符号数相加,其运算结果符号与被加数相反则产生溢出; • 两个相异符号数相减,其运算结果符号与被减数相反则产生溢出。 • 相同符号数相减,相异符号数相加不会产生溢出。 • 溢出判断方法:进位判断法,双符号位法。

  13. (1) 进位溢出判断法S⊕C 两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。 例: [X]补= 1.101 [X]补= 1.110 + [Y]补= 1.001 + [Y]补= 0.100 [X+Y]补= 10.110 [X+Y]补= 10.010 C=0,S=1 有溢出 C=1,S=1 无溢出 X+Y=+0.010 即:溢出 OVR = S⊕C= 1 有溢出 S C=01 正溢; S C=10 负溢 OVR = S⊕C= 0 无溢出

  14. (2) 双符号位(变形补码)溢出判断法 设第一符号位Sf1,第二符号位Sf2, Sf1Sf2 双符号含义: 0 0 表示运算结果为正数; 0 1 表示运算结果正向溢出; 1 0 表示运算结果负向溢出; 1 1 表示运算结果为负数。 即:溢出 OVR = Sf1⊕Sf2= 1 有溢出 OVR = Sf1⊕Sf2= 0 无溢出 左边第一位的Sf1为运算结果的真正符号位。

  15. 例1:X=0.1001,Y=0.0101,求[X+Y] 解: [X]补= 00.1001 +[Y]补= 00.0101 [X+Y]补= 00.1110 两个符号位相同,运算结果无溢出。 X+Y=+0.1110

  16. 例2:X= - 0.1001,Y= - 0.0101, 求 [X+Y]=? 解: [X]补= 11.0111 + [Y]补= 11.1011 [X+Y]补 =1 11 .0010 丢掉 两个符号位相同,运算结果无溢出。 X+Y= - 0.1110

  17. 例3:X= 0.1011,Y= 0.0111, 求 [X+Y]补=? 解: [X]补= 00.1011 + [Y]补= 00.0111 [X+Y]补= 01.0010 两个符号位为01,运算结果正向溢出。

  18. 例4:X= - 0.1011,Y= 0.0111, 求 [X-Y]补=? 解: [X]补= 11.0100+1=11.0101 [Y]补=00.0111 [-Y]补=11.1001 [X]补 = 11.0101 + [-Y]补 = 11.1001 [X+Y]补 =1 10.1110 两个符号位10不同,运算结果负向溢出。

  19. 补码加减法运算规则如下: • 参加运算的操作数用补码表示。 • 符号位与数值位一样参加运算。 • 如果是加法运算,则直接相加如果是减法,那么减数连同符号位一起取反,然后末位加1。 • 运算的结果仍然是补码形式。

  20. 移位运算 • 逻辑移位 • 循环移位 • 算术移位

  21. 逻辑移位 • 特点 • 移位操作对象不存在符号和量值的差别,非数值或无符号数 • 仅限于数码位置的变化 • 规则 • 左移或右移时高位或低位补0 • 移出位被丢弃 • 举例: • 逻辑右移:0101 -> 0010

  22. 循环移位 • 特点 • 移位操作对象不存在符号和量值的差别,非数值或无符号数 • 仅限于数码位置的变化 • 规则 • 左移或右移时高位或低位补0 • 移出位被置于低位或高位 • 举例: • 循环右移:0101 -> 1010

  23. 算术移位 • 移位时,数的符号位不变 • 算术运算数的移位操作会引起数值变化 • 右移一位,相当于带符号的数除以2(乘以1/2) • 左移一位,相当于带符号的数乘以2 • 对于正数 • 原码、反码和补码均相同,移位时只需要在末端补“0”。 • 对于负数的移位,不同码制的处理不同

  24. 算术移位 • 特点 • 移位操作对象存在符号和量值的差别,即:有符号数 • 不仅限于数码位置的变化,内涵是数值扩大或缩小两倍 • 规则 • 决定于编码方式

  25. 原码算术移位 • 规则 1. 符号位不变 2. 左移:仅移动量值位,低位补0 3. 右移:仅移动量值位,高位补0

  26. A1 A2A3A4A5 A6A7 A8 11010111 A的始值 补0…… 丢失 结果 10101011 原码算术移位 • 原码 • 符号位不参与移位,只是绝对值移位,其末端补入0 例:算术右移运算

  27. A1A2A3A4A5 A6A7 A8 10010101 A的始值  丢失 …… 补0 10101010 结果 原码算术移位 • 原码 例:算术左移运算

  28. 补码算术移位 • 规则 1. 符号位参与移位 2. 左移:低位补0 3. 右移:高位补原有符号位 • 溢出 • 左移、符号位发生改变 • 问题: 算术移位怎样才能保持正确的符号和正确的移位值?

  29. 补码算术移位 • 补码右移 例:设x= -1011000,则[x]补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下: 不移位x = -1011000 [x]补= 10101000 右移一位½x = -0101100 [½x]补= 11010100 右移二位¼x = -0010110 [¼x]补= 11101010

  30. A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 结果 符号位不变 补码算术移位 • 补码右移:符号位也随之右移且符号位不变 例:

  31. 补码算术移位 • 补码左移 例:设x= -0010110,则[x]补=11101010 ,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下: 不移位x = -0010110 [x]补= 11101010 左移一位2x = -0101100 [2x]补= 11010100 左移二位4x = -1011000 [4x]补= 10101000

  32. A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补0 结果产生错误 01010000 补码算术移位 • 补码左移 • 左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围 • 为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位

  33. A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 结果 符号位不变 反码算术移位 • 反码右移:符号位也随之右移且符号位不变

  34. A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补1 结果产生错误 01010001 反码算术移位 • 反码左移 • 左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会溢出,会破坏正确的符号位,表示超出数的表示范围 • 为了保持正确符号,往往采用具有两位或多位符号位的变形码

  35. 已知[x]补=0.1011,[y]补=1.1011,求算术左移,逻辑左移、算术右移、逻辑右移后的值。已知[x]补=0.1011,[y]补=1.1011,求算术左移,逻辑左移、算术右移、逻辑右移后的值。 补码移位举例 x算术左移后的值=1.0110(溢出) y算术左移后的值=1.0110 x逻辑左移后的值=1.0110 y逻辑左移后的值=1.0110 x算术右移后的值=0.0101 y算术右移后的值=1.1101 x逻辑右移后的值=0.0101 y逻辑右移后的值=0.1101

  36. 逻辑运算 • 1/0表示真或假,位运算 • 与运算:&,有0即0 • 或运算:|,有1即1 • 非运算:~,0-1,1-0 • 异或运算:^,同0异1

  37. 算术逻辑单元(简称ALU) • ALU是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它通过改变加法器的进位产生函数G和进位传递函数P来获得多种运算能力。下面通过介绍SN74181型四位ALU中规模集成电路了介绍ALU的原理。 • 在图中功能表中,“加”表示算术加,“+”表示逻辑加。它能执行16种算术运算和16种逻辑运算,M是状态控制端,M=H,执行逻辑运算;M=L执行算术运算。S0 ~S3是运算选择端,它决定电路执行哪种算术运算或逻辑运算。

  38. 常用组合逻辑

  39. 常用组合逻辑 • 三态门 • “三态”是指电路可以输出正常的 0/1逻辑电平,也可以处于高阻态,取决于输入和控制信号。为高阻态时, “0” 和 “1”的输出极都截止,相当于与所连接的线路断开,便于实现从多个数据输入中选择其一 • 当三态控制端/G=0,实现非运算逻辑 • Y=/A • 当/G=1,电路输出呈高阻 Y=Z

  40. 常用组合逻辑 • 三态门构建的总线 总线 例如,当控制信号 /G1为低电平, /G2 和 /G3为高电平时,三态门的输入 A 被送到总线上,另外两个三态门的输出处于高阻态。 /G1 /G2 /G3 0 1 1 A B C

  41. 半加器 • 不考虑进位输入时,两数码Xn,Yn相加称为半加器。

  42. Xn Yn Cn-1 Fn Cn 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 全加器 • 若考虑低位进位输入Cn-1相加,则称为全加器。 一位全加器真值表如右,其中: • Xn为被加数, • Yn为加数, • Cn-1为低级进位信号, • Fn为和, • Cn为本级向上进位信号。 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1

  43. 全加器

  44. 全加器 • 化简可得: Fn =Xn⊕Yn⊕Cn-1 Cn = XnYn + (Xn+Yn)Cn = XnYn+(Xn⊕Yn)Cn-1

  45. 半加器与全加器 • 半加器:Hn=Xn⊕Yn • 全加器: Fn = Xn⊕Yn⊕Cn-1 Cn= XnYn+(Xn⊕Yn)Cn-1 Xn Yn Cn-1 Cn Hn / Fn

  46. 串行加法器 • 步骤 • 加数最低位相加 • 保存求和结果和进位 • 加数右移一位,跳转到第一步 • 特点 • 仅需一位全加器 • 需要N个周期完成N位加法运算

  47. 并行加法器 • 全加器数目 = 操作数(加数)的位数 • N个全加器 • 特点 • 同时(同一周期)执行各位的加法运算

  48. 并行加法器 • 缺点 • 逐位完成的进位运算影响求和过程 • 最坏情况下接近串行加法器的性能 • 即1周期=N个加法/进位延迟 • 例如:1111 + 0001 • 结论 • 并行加法器的性能决定于进位机制的设计

  49. 并行加法器的进位链 • 进位函数 • 串行进位 • 并行进位 • 混合方式

More Related