2011考研计算机组成原理
①对于正数它们值都等于真值本身,而于负数各有不同的表示。
②最高位都是符号位,补码和反码的符号位可作为数值位,与数值位一起参加运算;但原码的符号位必须分开进行处理。
③对于真值0,原码和反码各有两种表示,补码只有一种表示。
④原码、反码的正、负数范围相对零对称;补码负数较正数能多表示一个数值。 2.7 定点数的运算
1. 定点数的移位运算
计算机可以进行基本的与、或、非逻辑运算,另一类逻辑运算是移位操作。移位操作
图2.1 循环与移位操作示意 分为算术移位、逻辑移
位和循环移位三种,每
一种移位又有左移和右移之分。
各种移位操作的示意如图2.1所示。算术移位可用于实现乘除法的运算。算术右移保持最高位(符号位)不变,而逻辑右移最高位补0。循环移位可以与进位C一起进行,构成大循环,也可不包括进位位,构成小循环。
例如补码数的算术移位,将[X]补 的符号位与数值位一起右移一位并保持原符号位的值不变,可实现除法功能(除以2),即
[X/2]补= X0X0X1X2…Xn-1Xn。
2. 补码加/减运算
(1)补码加法的公式:
[ X ]补+[ Y ]补=[ X+Y ]补 (mod 2)
可以证明,在模2意义下,任意两数的补码之和等于该两数之和的补码。其结论也适用于定点整数。这是补码加法的理论基础。运算的特点: ①符号位要作为数的一部分一起参加运算;
②在模2的意义下相加,即大于2的进位要丢掉。
(2)补码减法运算的公式:
减法运算要设法化为加法完成,这样可以运算器中只要加法器就行了。 [ X-Y ]补=[ X ]补-[ Y ]补=[ X ]补+[-Y ]补 3. 溢出及其检测
若在运算过程中如出现结果的值大于机器所能表示的数值范围的现象,称为“溢出”。例如定点小数之和大于等于1或小于-1就是溢出。
图2.2 定点数的表示范围
三种判别方法
第11页 共65页
2011考研计算机组成原理
(1) 单符号位
参与相加的2个加数的最高位,即符号位参与运算,若出现正加正为负,或负加负为正等结果,即出现溢出。
(2)双符号位法也称为“变形补码”或“模4补码” 。
结果的两个符号位的代码不一致时,表示溢出,两个符号位的代码一致时,表示没有溢出,最高符号位永远表示结果的正确符号。
4. 定点数的乘/除运算 (1)原码一位乘法
设n位被乘数和乘数用定点小数表示(n位中不含符号位) 被乘数 [X]原=Xs . X1X2?Xn 乘数 [Y]原=Ys . Y1Y2?Yn
则乘积 [Z]原=(Xs⊕Ys)+(0. X1X2?Xn)(0. Y1Y2?Yn) 式中,Xs为被乘数符号, Ys为乘数符号。
算法规则
设Yi为Y中的第i位(当前位),规则为 i. 如果 Yi=1,部分积加X,右移一位; ii. 如果 Yi=0,部分积加 0,右移一位;
重复 n 步。
(2)Booth算法
即补码一位乘法。
设被乘数 [X]补 = X0.X1X2?Xn
乘数 [Y]补 = Y0.Y1Y2?Yn
根据Booth总结算法有如下规则
① 补码乘法规则
Yi为Y中的第i位(当前位),根据Yi与Yi+1的值,规则为
i. 如果 Yi=Yi+1, 处于0串中, 部分积不变,右移一位; ii. 如果 YiYi+1=01,处于1串结尾,部分积加[x]补,右移一位; iii. 如果 YiYi+1=10,处于0串结尾,部分积加[-x]补,右移一位; iv. 如果 YiYi+1=11, 处于1串中, 部分积不变,右移一位;
重复 i+1 步,最后一步不移位。
(3)原码一位除法(加减交替法/不恢复余数法)
关键是运算规则,规则清楚,操作流程就大半清楚了。
① 如果余数为正,商上1余数左移一位,下次减除数; ② 如果余数为负,商上0,余数左移一位,下次加除数; 重复 n+1 步,最后一步不移位。 (5)阵列乘法器
串行相加硬件结构简单,速度太慢,执行一次乘法至少是加法操作n倍的时间;由于乘法大约占全部算术运算操作的1/3左右,故采用高速乘法部件是非常必要的。
①不带符号的阵列乘法器
设有两个不带符号的二进制整数 X=xm-1…x1x0 , Y=yn-1…y1y0
它们的数值分别为x和y,即: n?1m?1i y?yj2jx?xi2?i?0?j?0
第12页 共65页
2011考研计算机组成原理
被乘数X与乘数Y相乘,产生m×n项乘积P,每一项乘积用一个与门P完成,每一项部分积求和用一位全加器FA完成,合起来就是一个P/FA单元电路如图2.4所示,再将这些单元电路叠加,就成为阵列乘法器。以4×4位为例,这个无符号阵列乘法器如图2.5所示,每一个Y项与所有的X项相乘,就是一行部分积,共有3个部分积,最下一行已经是最后结果的积了,即图中虚线的4行。注意每个单元的最左单元的进位输入,以还可以有速度更高的无符号阵列乘法器方案。
各
次 部 分 积 图2.4 一位乘/全加
2.8 浮点数的表示和运算
图2.5 无符号阵列乘法
浮点数的表示 由于受数值范围和表示格式等各方面的限制,直接用定点小数或整数无法表示如电子的质量9×10-28 克,太阳的质量2×1033 克,圆周率3.1416等,用小数点可以左右移动的浮点数表示就比较方便。
1.表示方法
浮点数通常被表示成:
N =(-1) Ms×M× RE
Ms: 尾数的符号;
E: 阶码,含一位符号, 通常用移码表示; M: 尾数,通常用原码表示。 R: 通常为2,不用明确表示。 通常选用如下格式:
Ms E M
1位 n位 m位 规格化:
1/2≤|M|<1
为了在尾数中表示最多的有效数据位 为了数据表示的唯一性。 便于运算与比较 机器零:
全部为0,特殊的数据编码 浮点数的表示范围如图2.7所示
负 上溢
下溢 负下溢 正
正上溢
第13页 共65页
2011考研计算机组成原理
隐藏位技术:
① 浮点数尾数不为0时的最高位称隐藏位,在写入内存或磁盘时,此位不必保存该位,可左移尾数隐藏掉,这种处理技术称隐藏位技术,目的是多保存一个二进位。
② 为了保持浮点数的值不变,还要把原来的阶码值减1。在将浮点数取回运算器执行
运算时,再恢复该隐藏位的值和原来的阶码值。 ③ 对临时浮点数(通常只出现在浮点运算器内部),不使用隐藏位技术。 2. 浮点数标准
浮点数(IEEE754)标准,规定常用的浮点数的格式为: 符号位 阶码 尾数 总位数 短浮点数(单精度) 1 8 23 32 长浮点数(双精度) 1 11 52 64 临时浮点数 1 15 64 80
三种格式:短实数、长实数、临时实数
规格化数:
s-127(-1)×1.f×2e 格式 最小值 最大值 非规格化数:
单精度 E=1, M=0, E=254, f=.1111?, (-1)s×0.f×2e-126 1-127 -126254-1271.0×2= 2 1.111?1×2
= 2127 ×(2-2-23) IEEE754浮点数的范围 双精度 E=1, M=0, E=2046, f=.1111?, 1.0×21-1023 =2-1022 1.111?1×22046-1023 =21023×(2-2-52)
浮点数的加/减运算
设两个浮点数X和Y分别为
M
X = (-1) ×s MX × 2 EX
M
Y = (-1) ×s MY × 2 EY 对它们作加/减运算有如下的步骤 (1)对阶操作,求阶差 △E= EX -EY 使阶码小的数的尾数右移△E位, 阶码取大的阶码值; (2)尾数加减;
(3)规格化处理(左规或右规);
(4)舍入操作,可能带来又一次规格化; (5)判结果的正确性,即检查阶码上下溢出.
第14页 共65页
2011考研计算机组成原理
2.9 算术逻辑单元ALU
串行加法器和并行加法器
1. 一位全加器
全加器(FA)是最基本的加法单元,有加数Ai、加数Bi与低位的进位Ci-1共3个输入,和Si与进位Ci共2个输出。表达式为:
和: Si=Ai⊕Bi⊕Ci-1 进位: Ci=AiBi+(Ai⊕Bi)Ci-1 全加器的硬件逻辑如图2.8所示。
1. 并行加法器
并行加法器则由多个全加器组图2.8 一位全加成,其位数与机器的字长相同,各位
数据同时运算。如图2.9所示,为一个4位全加器组成的并行加法器。
进位链:指并行加法器中,传递进位信号的逻辑线路连接起来构成3 1 2 0 的进位网络。将全加器的进位表达式
2 C 3 C 分成 C 1 C 0 0 3 1 2 0
进位产生函数: Gi=AiBi ; 1 1 进位传递函数: Pi=Ai⊕Bi ; 3 2 3 2 0 0 进位表达式: Ci=Gi+PiCi-1 ;
图2.9 采用串行进位的并行加法器
通常也将G称为本地进位。 (1) 串行进位(行波进位)
串行进位:各级进位信号串行级联。
图2.9即为一个串行进位的并行加法器。可见低位运算产生的进位所需要的时间,将可能影响直至最高位运算的时间,位数越多延迟时间就越长,而全加器本身的求和延迟只为次要因素。所以加快进位产生和提高传递的速度是关键。 (2) 并行进位(先行进位)
并行进位:各级进位信号同时形成。 采用并行进位的方案可以加快进位产生和提高传递的速度,即将各级低位产生的本级G和P信号依次同时送到高位各全加器的输入,以使它们同时形成进位信号,各进位信号表达式如下,可见它们可以同时形成进位信号。
C0 = G0 + P0C-1
C1 = G1 + P1C0 = G1 + P1G0 + P1P0C-1
C2 = G2 + P2C1 = G2 + P2G1 + P2P1G0 + P2P1P0C-1
C3 = G3 + P3C2 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C-1 当各级自身的G与P信号形成后,则n个并行进位的加法器:
多级先行进位方式
该方式组内并行、组间并行进位,速度自然比组间串行快。如图2.11所示,4片Am2901级联组成16运算,其片内4位并行进位,片间也并行进位。其中用到一片与Am2091配套的高速进位芯片am2902,这是一片产生并
图2.11并行进位,片间并行进位 行进位信号的部件。
第15页 共65页