CPU运算部件详解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何将减法转换为加法?
1. 基本关系式 ( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 (2)
式(1):操作码为“加”时,两数直接相加。
例. 求(X+Y)补
1) X=3 X补=0 0011 2) X= –3 X补=1 1101 Y=2 Y补=0 0010 Y= –2 Y补=1 1110 0 0101 1 1011 (– 5补码) (+5补码)
操作 +B +B + +
0.1101 B 3) C n=0 +0 + ×0.1011 C 1101 1101 4) Cn=1 +B + 0000 1101 X原×Y原 = 1.10001111 0.10001111
A 00.0000 00.1101 00.1101 00.0110 00.1101 01.0011 00.1001 00.0000 00.1001 00.0100 00.1101 01.0001 00.1000
将Y补变补
(–Y)补:不管Y补为正或负,将其符号连同
尾数一起各位变反,末位加1。
例. 求(X – Y)补
2) X= –4 X补=1 1100 1) X= 4 X补=0 0100 Y= 5 Y补=0 0101 Y= –5 Y补=1 1011 (-Y)补=1 1011 (-Y)补=0 0101 0 1001 1 0111 (–9补码) (+9补码)
多路选择器
4
用多路选择器作输入 逻辑,不需暂存操作 数; ALU增加乘、除功能, 用乘商寄存器存放乘 数、乘积或商。
DA
4 4
DB
4
A 地址
RAM
4
B 地址
Di
第二节
运算方法
3.2.1 定点加减运算 3.2.1.1 补码加减法
数用补码表示,符号位参加运算。
实际操作能否只取决于操作码?
结果需不需修正?
3.2.2 定点乘法运算
乘法 部分积累加、移位。
3.2.2.1 原码一位乘法
每次用一位乘数去乘被乘数。
1.算法分析
X原
Y原
例. 0.1101×1.1011
乘积 P = X × Y
积符 SP= SX
SY
0.1101 ×0.1011 1101 1101 部分积 0000 1101 0.10001111 上符号:1.10001111 问题:1)加数增多(由乘数位数决定)。 2)加数的位数增多(与被乘数、乘 数位数有关)。 改进:将一次相加改为分步累加。
(1)手算
(2)分步乘法 每次将一位乘数所对应的部分积与 原部分积的累加和相加,并移位。 设置寄存器: A:存放部分积累加和、乘积高位 B:存放被乘数 C:存放乘数、乘积低位 设置初值: A = 00.0000 B = X = 00.1101 C = Y = .1011
步数 1) 2)
条件 Cn=1 Cn=1
3.2.1.3 移位操作 1. 移位类型 逻辑移位 :数码位置变化,数值不变。 10001111 循环左移: 0 0 0 1 1 1 1 1 算术移位 :数码位置变化,数值变化, 符号位不变。 1001111 算术左移:1 0 1 1 1 1 0
(-15) (-30)
2.正数补码移位规则
(1)单符号位 :
符号位
(4)展开为部分积的累加和形式: (XY)补 = X补(0.Y1Y2……Yn)+(-X)补Y0 = X补(0.Y1Y2……Yn)-X补Y0 = X补(-Y0+2 Y1+2 Y2+……+2 Yn) -1 -1 -2 = X补 -Y0+(Y1-2 Y1)+(2 Y2-2 Y2)+…… +(2
-n -(n-1)
+A
果送A输入端。
A(X补)
A
B
B(Y补)
CPA
B
+B +B
CPA:将结果打入A。
3.2.1.2 溢出判断
在什么情况下可能产生溢出?
例.数A有4位尾数,1位符号SA 数B有4位尾数,1位符号SB 结果符号Sf 符号位参 加运算
符号位进位Cf
尾数最高位进位C
(1)A=3 B=2 (2)A=10 B=7 3+2: 0 0011 10+7: 0 1010 0 0010 0 0111 0 0101 正确 1 0001 正溢 (3)A= -3 B= -2 (4)A= -10 B= -7 1 1101 1 0110 -3+(-2): -10+(-7): 1 1110 1 1001 1 1011 正确 0 1111 负溢
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系)
(1)A=3 B=2 (2)A=10 B=7 3+2: 0 0011 10+7: 0 1010 0 10111 Cf=0 0 0010 Cf=0 C =0 0 0101 正确 C =1 1 0001 正溢 (3)A= -3 B= -2 (4)A= -10 B= -7 1 1101 1 0110 -3+(-2): -10+(-7): Cf=1 11 11110 Cf=1 11 1001 C =1 1 1011 正确 C =0 0 1111 负溢 (5)A=6 B= -4 (6)A= -6 B=4 0 0110 6+(-4): -6+4: 1 1010 Cf=1 11 11100 Cf=0 0 0100 C =1 0 0010 正确 C =0 1 1110 正确
0 0111 左移 0 1110 右移 0 0111 右移 0 0011
(2)双符号位:
左移 左移 右移 右移
00 0111 00 1110 01 1100 00 1110 00 0111
(3)移位规则 数符不变(单:符号位不变;双:第一符号
位不变)。
空wenku.baidu.com补0(右移时第二符号位移至尾数最高位)。
3.负数补码移位规则
正溢
负溢
正确
1. 硬件判断逻辑一(SA、SB与Sf的关系)
(2)A=10 B=7 10+7 : 0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系) 溢出= Cf C 3. 硬件判断逻辑三(双符号位) 溢出= Sf1 Sf2
3.2.1.4 舍入方法
1. 0舍1入(原码、补码)
例. 保留4位尾数: 0 00100原
1 00101原
1 11011补
2. 末位恒置1(原码、补码)
例. 保留4位尾数: 0 00100原
0 0010原 1 0011原 1 1110补 0 0011原 1 0011原 1 1101补
1 00101原 1 11011补
用锁存器暂存操作数; 采用双向内总线。
内部总线(双向)
R0 通用寄存器组(小型存储器) Rn
3.1.3 位片式运算器
例. 4位片运算器粗框
4
4
特点: 用双口RAM(两地址 端、两数据端)作通 用寄存器组,可同时 提供数据;
4
DO 乘商寄存器
4
移位器
4
G、 P Cn+4
控制信息 4
ALU
4
Cn
多路选择器
C Cn .1011
1.101 11.10 111.1 1111
2.算法流程
0 A、X B 、Y C 、0 N 1/2(A+0) A,C CR
Cn = 1 ?
Y 1/2(A+B) A,C CR + 1 N CR
CR = n ? Y Sx + Sy SA
3.运算规则
(1)操作数、结果用原码表示;
(2)绝对值运算,符号单独处理;
(5)A=6 B= -4 (6)A= -6 B=4 0 0110 6+(-4): -6+4: 1 1010 1 1100 0 0100 0 0010 正确 1 1110 正确
1. 硬件判断逻辑一(SA、SB与Sf的关系) (2)A=10 B=7 10+7 :0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
3.1.1 带多路选择器的运算器
内部总线(单向) 移位器 R0 Rn
ALU
特点:
多路选择器 多路选择器
R各自独立;
R0. . . Rn
R0. . . Rn
可同时向ALU提供两个操作数; 采用单向内总线。
3.1.2 带输入锁存器的运算器
特点:
移位器 ALU
锁存器 锁存器
单口RAM不能同时向ALU提 供两个操作数;
(1)3+2: (2)10+7: 00 0011 第一符号位Sf1 00 1010 00 0010 00 0111 00 0101 正确 01 0001 (3)-3+(-2): (4)-10+(-7): 11 1101 第二符号位Sf2 11 0110 11 1110 11 1001 11 0111 正确 10 1111 (5)6+(-4): (6)-6+4: 00 0110 11 1010 11 1100 00 0100 00 0010 正确 11 1110
(1)单符号位 : (2)双符号位:
1 1011 左移 1 0110 右移 1 1011 右移 1 1101 11 0110 左移 10 1100 右移 11 0110 右移 11 1011
(3)移位规则 数符不变(单:符号位不变;双:第一符号
位不变)。
左移空位补0 右移空位补1(第二符号位移至尾数最高位)。
(3)被乘数(B)、累加和(A)取双符号位;
(4)乘数末位(Cn)为判断位,其状态决定
下步操作;
(5)作n次循环(累加、右移)。
3.2.2.2 补码一位乘法 1.算法分析
X补 = X0.X1X2……Xn (1)Y为正:Y补 = 0.Y1Y2……Yn (XY)补 = X补(0.Y1Y2……Yn) (2)Y为负:Y补 = 1.Y1Y2……Yn (XY)补 = X补(0.Y1Y2……Yn)+(-X)补 (3)Y符号任意: (XY)补 = X补(0.Y1Y2……Yn)+(-X)补Y0
注意:某数的补码表示与某数变补的区别。 例. 1 0101原 1 1011 补码表示 0 0101原 0 0101
1 0011补 0 0011补
变补 变补 补码表示
符号位不变; 负数尾数改变, 正数尾数不变。 符号位改变, 尾数改变。 补码的机器负数
0 1101 1 1101
2. 算法流程
操作数用补码表示, 符号位参加运算
1. 硬件判断逻辑一(SA、SB与Sf的关系)
(2)A=10 B=7 10+7 : 0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系) 溢出= Cf C 3. 硬件判断逻辑三(双符号位)
3.运算实例
X=-0.1101,Y=-0.1011,求(XY)补。 初值:A=00.0000,B=X补=11.0011, -B=(-X)补=00.1101,C =Y补=1.0101
ADD SUB
X补+Y补
X补+(-Y)补
结果为补码表示,符 号位指示结果正负
3. 逻辑实现
(2)补码加减运算器粗框
加法器输入端:
(1)控制信号
+A:打开控制门,将A送∑。
+B:打开控制门,将B送∑。 +B:打开控制门,将B送∑。 +1:控制末位加 1 。 加法器输出端:
∑ A:打开控制门,将结
∑
∑ A +1
4) X= –3 X补=1 1101 3) X= 3 X补=0 0011 Y= 2 Y补=0 0010 Y= –2 Y补=1 1110 0 0001 1 1111 (–1补码) (+1补码)
( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 (2)
式(2):操作码为“减”时,将减转换为加。 即将减数变补后与被减数相加。 Y补
第三章 CPU子系统
运 算 部 件
寄 存 器 寄 存 器 控 制 部 件
运算器
控制器
本章主要讨论:
运算器 控制器 数据通路结构 与外部的连接
CPU组成
CPU工作原理
指令的执行过程
第一节 寄存器组
运算器组织 独立结构
小型存储 器结构 单口 双口
独立R、双口RAM用多路选择器作为ALU的 输入逻辑, 单口RAM用锁存器作为ALU的输入逻辑。
-1 -2 -n
Yn-2 Yn)
-1 -2
-n
= X补 (Y1-Y0)+2 (Y2-Y1)+2 (Y3-Y2)+…… +2 (0 Yn+1 -Yn)
比较法:用相邻两位乘数比较的结果决定 +X补、-X补或+0。
2.比较法算法
Yn(高位) 0 0 1 1
Yn+1(低位) 操作(A补为部分积累加和) 0 ( 0 ) 1/2A补 1 ( 1 ) 1/2(A补+X补) 0 (-1 ) 1/2(A补-X补) 1 ( 0 ) 1/2A补
1. 基本关系式 ( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 (2)
式(1):操作码为“加”时,两数直接相加。
例. 求(X+Y)补
1) X=3 X补=0 0011 2) X= –3 X补=1 1101 Y=2 Y补=0 0010 Y= –2 Y补=1 1110 0 0101 1 1011 (– 5补码) (+5补码)
操作 +B +B + +
0.1101 B 3) C n=0 +0 + ×0.1011 C 1101 1101 4) Cn=1 +B + 0000 1101 X原×Y原 = 1.10001111 0.10001111
A 00.0000 00.1101 00.1101 00.0110 00.1101 01.0011 00.1001 00.0000 00.1001 00.0100 00.1101 01.0001 00.1000
将Y补变补
(–Y)补:不管Y补为正或负,将其符号连同
尾数一起各位变反,末位加1。
例. 求(X – Y)补
2) X= –4 X补=1 1100 1) X= 4 X补=0 0100 Y= 5 Y补=0 0101 Y= –5 Y补=1 1011 (-Y)补=1 1011 (-Y)补=0 0101 0 1001 1 0111 (–9补码) (+9补码)
多路选择器
4
用多路选择器作输入 逻辑,不需暂存操作 数; ALU增加乘、除功能, 用乘商寄存器存放乘 数、乘积或商。
DA
4 4
DB
4
A 地址
RAM
4
B 地址
Di
第二节
运算方法
3.2.1 定点加减运算 3.2.1.1 补码加减法
数用补码表示,符号位参加运算。
实际操作能否只取决于操作码?
结果需不需修正?
3.2.2 定点乘法运算
乘法 部分积累加、移位。
3.2.2.1 原码一位乘法
每次用一位乘数去乘被乘数。
1.算法分析
X原
Y原
例. 0.1101×1.1011
乘积 P = X × Y
积符 SP= SX
SY
0.1101 ×0.1011 1101 1101 部分积 0000 1101 0.10001111 上符号:1.10001111 问题:1)加数增多(由乘数位数决定)。 2)加数的位数增多(与被乘数、乘 数位数有关)。 改进:将一次相加改为分步累加。
(1)手算
(2)分步乘法 每次将一位乘数所对应的部分积与 原部分积的累加和相加,并移位。 设置寄存器: A:存放部分积累加和、乘积高位 B:存放被乘数 C:存放乘数、乘积低位 设置初值: A = 00.0000 B = X = 00.1101 C = Y = .1011
步数 1) 2)
条件 Cn=1 Cn=1
3.2.1.3 移位操作 1. 移位类型 逻辑移位 :数码位置变化,数值不变。 10001111 循环左移: 0 0 0 1 1 1 1 1 算术移位 :数码位置变化,数值变化, 符号位不变。 1001111 算术左移:1 0 1 1 1 1 0
(-15) (-30)
2.正数补码移位规则
(1)单符号位 :
符号位
(4)展开为部分积的累加和形式: (XY)补 = X补(0.Y1Y2……Yn)+(-X)补Y0 = X补(0.Y1Y2……Yn)-X补Y0 = X补(-Y0+2 Y1+2 Y2+……+2 Yn) -1 -1 -2 = X补 -Y0+(Y1-2 Y1)+(2 Y2-2 Y2)+…… +(2
-n -(n-1)
+A
果送A输入端。
A(X补)
A
B
B(Y补)
CPA
B
+B +B
CPA:将结果打入A。
3.2.1.2 溢出判断
在什么情况下可能产生溢出?
例.数A有4位尾数,1位符号SA 数B有4位尾数,1位符号SB 结果符号Sf 符号位参 加运算
符号位进位Cf
尾数最高位进位C
(1)A=3 B=2 (2)A=10 B=7 3+2: 0 0011 10+7: 0 1010 0 0010 0 0111 0 0101 正确 1 0001 正溢 (3)A= -3 B= -2 (4)A= -10 B= -7 1 1101 1 0110 -3+(-2): -10+(-7): 1 1110 1 1001 1 1011 正确 0 1111 负溢
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系)
(1)A=3 B=2 (2)A=10 B=7 3+2: 0 0011 10+7: 0 1010 0 10111 Cf=0 0 0010 Cf=0 C =0 0 0101 正确 C =1 1 0001 正溢 (3)A= -3 B= -2 (4)A= -10 B= -7 1 1101 1 0110 -3+(-2): -10+(-7): Cf=1 11 11110 Cf=1 11 1001 C =1 1 1011 正确 C =0 0 1111 负溢 (5)A=6 B= -4 (6)A= -6 B=4 0 0110 6+(-4): -6+4: 1 1010 Cf=1 11 11100 Cf=0 0 0100 C =1 0 0010 正确 C =0 1 1110 正确
0 0111 左移 0 1110 右移 0 0111 右移 0 0011
(2)双符号位:
左移 左移 右移 右移
00 0111 00 1110 01 1100 00 1110 00 0111
(3)移位规则 数符不变(单:符号位不变;双:第一符号
位不变)。
空wenku.baidu.com补0(右移时第二符号位移至尾数最高位)。
3.负数补码移位规则
正溢
负溢
正确
1. 硬件判断逻辑一(SA、SB与Sf的关系)
(2)A=10 B=7 10+7 : 0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系) 溢出= Cf C 3. 硬件判断逻辑三(双符号位) 溢出= Sf1 Sf2
3.2.1.4 舍入方法
1. 0舍1入(原码、补码)
例. 保留4位尾数: 0 00100原
1 00101原
1 11011补
2. 末位恒置1(原码、补码)
例. 保留4位尾数: 0 00100原
0 0010原 1 0011原 1 1110补 0 0011原 1 0011原 1 1101补
1 00101原 1 11011补
用锁存器暂存操作数; 采用双向内总线。
内部总线(双向)
R0 通用寄存器组(小型存储器) Rn
3.1.3 位片式运算器
例. 4位片运算器粗框
4
4
特点: 用双口RAM(两地址 端、两数据端)作通 用寄存器组,可同时 提供数据;
4
DO 乘商寄存器
4
移位器
4
G、 P Cn+4
控制信息 4
ALU
4
Cn
多路选择器
C Cn .1011
1.101 11.10 111.1 1111
2.算法流程
0 A、X B 、Y C 、0 N 1/2(A+0) A,C CR
Cn = 1 ?
Y 1/2(A+B) A,C CR + 1 N CR
CR = n ? Y Sx + Sy SA
3.运算规则
(1)操作数、结果用原码表示;
(2)绝对值运算,符号单独处理;
(5)A=6 B= -4 (6)A= -6 B=4 0 0110 6+(-4): -6+4: 1 1010 1 1100 0 0100 0 0010 正确 1 1110 正确
1. 硬件判断逻辑一(SA、SB与Sf的关系) (2)A=10 B=7 10+7 :0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
3.1.1 带多路选择器的运算器
内部总线(单向) 移位器 R0 Rn
ALU
特点:
多路选择器 多路选择器
R各自独立;
R0. . . Rn
R0. . . Rn
可同时向ALU提供两个操作数; 采用单向内总线。
3.1.2 带输入锁存器的运算器
特点:
移位器 ALU
锁存器 锁存器
单口RAM不能同时向ALU提 供两个操作数;
(1)3+2: (2)10+7: 00 0011 第一符号位Sf1 00 1010 00 0010 00 0111 00 0101 正确 01 0001 (3)-3+(-2): (4)-10+(-7): 11 1101 第二符号位Sf2 11 0110 11 1110 11 1001 11 0111 正确 10 1111 (5)6+(-4): (6)-6+4: 00 0110 11 1010 11 1100 00 0100 00 0010 正确 11 1110
(1)单符号位 : (2)双符号位:
1 1011 左移 1 0110 右移 1 1011 右移 1 1101 11 0110 左移 10 1100 右移 11 0110 右移 11 1011
(3)移位规则 数符不变(单:符号位不变;双:第一符号
位不变)。
左移空位补0 右移空位补1(第二符号位移至尾数最高位)。
(3)被乘数(B)、累加和(A)取双符号位;
(4)乘数末位(Cn)为判断位,其状态决定
下步操作;
(5)作n次循环(累加、右移)。
3.2.2.2 补码一位乘法 1.算法分析
X补 = X0.X1X2……Xn (1)Y为正:Y补 = 0.Y1Y2……Yn (XY)补 = X补(0.Y1Y2……Yn) (2)Y为负:Y补 = 1.Y1Y2……Yn (XY)补 = X补(0.Y1Y2……Yn)+(-X)补 (3)Y符号任意: (XY)补 = X补(0.Y1Y2……Yn)+(-X)补Y0
注意:某数的补码表示与某数变补的区别。 例. 1 0101原 1 1011 补码表示 0 0101原 0 0101
1 0011补 0 0011补
变补 变补 补码表示
符号位不变; 负数尾数改变, 正数尾数不变。 符号位改变, 尾数改变。 补码的机器负数
0 1101 1 1101
2. 算法流程
操作数用补码表示, 符号位参加运算
1. 硬件判断逻辑一(SA、SB与Sf的关系)
(2)A=10 B=7 10+7 : 0 1010 0 0111 1 0001 (4)A= -10 B= -7 1 0110 -10+(-7): 1 1001 0 1111
溢出= SA SB Sf
SA SB Sf
2. 硬件判断逻辑二(Cf与C的关系) 溢出= Cf C 3. 硬件判断逻辑三(双符号位)
3.运算实例
X=-0.1101,Y=-0.1011,求(XY)补。 初值:A=00.0000,B=X补=11.0011, -B=(-X)补=00.1101,C =Y补=1.0101
ADD SUB
X补+Y补
X补+(-Y)补
结果为补码表示,符 号位指示结果正负
3. 逻辑实现
(2)补码加减运算器粗框
加法器输入端:
(1)控制信号
+A:打开控制门,将A送∑。
+B:打开控制门,将B送∑。 +B:打开控制门,将B送∑。 +1:控制末位加 1 。 加法器输出端:
∑ A:打开控制门,将结
∑
∑ A +1
4) X= –3 X补=1 1101 3) X= 3 X补=0 0011 Y= 2 Y补=0 0010 Y= –2 Y补=1 1110 0 0001 1 1111 (–1补码) (+1补码)
( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 (2)
式(2):操作码为“减”时,将减转换为加。 即将减数变补后与被减数相加。 Y补
第三章 CPU子系统
运 算 部 件
寄 存 器 寄 存 器 控 制 部 件
运算器
控制器
本章主要讨论:
运算器 控制器 数据通路结构 与外部的连接
CPU组成
CPU工作原理
指令的执行过程
第一节 寄存器组
运算器组织 独立结构
小型存储 器结构 单口 双口
独立R、双口RAM用多路选择器作为ALU的 输入逻辑, 单口RAM用锁存器作为ALU的输入逻辑。
-1 -2 -n
Yn-2 Yn)
-1 -2
-n
= X补 (Y1-Y0)+2 (Y2-Y1)+2 (Y3-Y2)+…… +2 (0 Yn+1 -Yn)
比较法:用相邻两位乘数比较的结果决定 +X补、-X补或+0。
2.比较法算法
Yn(高位) 0 0 1 1
Yn+1(低位) 操作(A补为部分积累加和) 0 ( 0 ) 1/2A补 1 ( 1 ) 1/2(A补+X补) 0 (-1 ) 1/2(A补-X补) 1 ( 0 ) 1/2A补