运算器 | Personal Blog

运算器

数据与文字的表示

数的小数点表示

通常使用浮点数表示数据,浮点数由阶符S、阶码E、尾数M组成

所谓浮点数,指小数点位置随比例因子的不同而可以在一定范围内自由浮动;而比例因子的大小由阶码指示

小数点位置在尾数域最高位的右边;而为了保证数据形式的一致性,规定尾数域的最高位为1,由此计算阶码;并将此位省去

由于指数有正有负,为了比较和计算的方便,将指数加上一定的偏移值(127或1023)

根据IEEE754标准,规格化的32位浮点数可以表示为

\[x=(-1)^S×(1.M)×2^{E-127}\]

其中,32位浮点数阶符占1位,阶码占8位,尾数占23位;可表示范围的绝对值为 \([1.0×2^{-127},[1+1-2^{-23}]×2^{127}]\)

数的机器码表示

为了让数的符号位也参与运算,须将数用机器码表示

原码

符号位0正1负,后面加上绝对值

反码

将原码按位取反(除符号位)

补码

将反码末位加一(除符号位)

移码

符号位0负1正,后面加上绝对值

定点数的加减法

补码加法

两数的补码之和等于两数之和的补码(模$2^{n+1}$运算)

补码减法

减去某数的补码等于加上此数的相反数的补码

溢出

当相加或相减后的结果超出系统能表达的最大值时,发生溢出

\[[-y]_补=对[y]_补按位取反末位加一\]

加法减法器

行波进位加法减法器由若干全加器和异或门组成,使用一根控制线控制加法减法运算

定点乘法

算数移位

算数左移右端补0;算数右移左端补符号位

由笔算乘法演变的计算方法

由若干次加法操作和移位操作组成

每次加上0倍或1倍的被乘数,然后进行一次移位操作,最终得到结果

计算方法的电路组成

首先分别计算逐位相乘的值,再通过阵列乘法器计算

定点除法

不恢复余数的加减交替法(补码表示)

  1. 减除数
  2. 若余数为负,上商为0,余数左移一位,加上除数
  3. 若余数为正,上商为1,余数左移一位,减去除数
  4. 重复23步骤直至达到要求精度
  5. 最后得到的余数为负数时,加上除数得到最终的余数

74181

74181 ALU是一种算数逻辑单元,由控制端 \(S_0-S_3 控制运算方式\) \(M 控制运算类型\) 和进位产生函数P、G构成

为了尽量减少进位带来的时间延迟,需要使用超前进位加法器减少多次等待进位的时间

而超前进位加法器由多个74182CLA和74181ALU构成

浮点数加减法

  1. 对阶:以阶码较大者为标准,通过左规和右规处理使得双方的阶码相同
  2. 尾数加减
  3. 规格化处理:若尾数溢出,将尾数右移一位,阶码加一;若符号位与最高数值位相同,左规处理
  4. 舍入处理:0舍1入法与恒置1法
  5. 阶码溢出判断:若上溢,置上溢标志;若下溢,置机器零(因为数值极小,可以视为0)