最近体系结构课程学到了CPU功能部件部分,其中谈到了先行进位加法器,网上对32位和16位加法器说的比较多,但64位的参考比较少,研究了好久终于能大致明白,在此把自己的理解做个记录供大家参考~
本文参考自中科院胡伟武老师的《计算机体系结构》第2版。
本文章分三部分:
1.串行进位加法器
2.16位串行进位加法器
3.64位串行进位加法器
1.串行进位加法器
加法运算的重要性对于一个CPU来说不言而喻。对于两个16位二进制数的相加,我们要怎么操作呢?
作为手写计算的话,我们往往会把两个数写成下图的形式然后计算:
计算的次序是从右往左依次计算,如果每一位的结果大于1则向下一位进位,这是小学生都知道的,完成每一位相加逻辑的部件我们叫它全加器,那么我们可以得出结论,一个全加器应该有哪些输入,哪些输出呢?显然输入应该有两个数的对应位以及上一位计算的进位,输出应当有这一位的计算结果和这一位的进位。忽略其内部具体结构,我们将其简化为如下形式:
A,B代表两个输入数字,Cin为上一位进位,Cout为输出进位,S为这一位求和结果。
也就是说,我们手算的方法一次只能计算一位,下一位的计算必须要等待看上一位是否有进位才能计算,按照这种原理,诞生了串行进位加法器,原理图如下:
这种串行结构肯定是能解决问题的,但是弊端很明显,时延太长,假设一个全加器时延为3T(至于为什么设成三T,是因为全加器内部逻辑电路产生结果需要三层门电