Skip to content

关于先行进位加法器延迟的思考

Posted on:2022.01.08

最近在复习 COA 加法器的部分,发现对于加法器延迟的运算隐含了一些假设:

  1. 逻辑门输入的数量是无限制的
  2. 逻辑门输入的数量与逻辑门的延迟是无关的

这里逻辑门输入的数量即为扇入

也就是说,在给定的延迟下,无论加法器的位数是多少,先行进位加法器的延迟是固定的。

这显然与实际是不一致的,逻辑门如果在物理上具有太多的扇入,由于输入级电路会增加器件等效的电容,整个逻辑门将产生一定的传输延迟。

课件中指出,引入部分先行进位加法器是为了在计算时间和硬件复杂度之间取得权衡。在这里,降低硬件复杂度本身就是减少逻辑门的扇入,而这在某种程度上,也减少了逻辑门的传输延迟。尽管这种效应可能不及硬件结构改变后计算时间的增加。

另一方面,在给定的扇入下,可以设计硬件结构,进一步优化部分先行进位加法器的延迟。

考虑如下的逻辑门属性:

这里的想法是让模块间的进位信号也能快速传递,基本思路是基于辅助函数 pip_igig_i设计第二层超前进位电路

这里是课件中的部分先行进位加法器的结构图:

2f8c71f54ae348c6a8838ed24dead026.jpg

我们需要让模块间的进位信号 C8,C16,C24,C32C_8,C_{16},C_{24},C_{32} 能够快速传递,为此写出这些信号的原始表达式。

pi=xiyi,gi=xi+yip_i = x_iy_i,g_i = x_i+y_i,则 C8=G0+P0C0C_8 = G_0 + P_0C_0,其中:

类似的有 C8i+8=Gi+PiC8iC_{8i+8} = G_{i} + P_iC_{8i},其中:

在这种方案下,电路结构图如下:

f92b88de1cbe41d38fae9dc18ea75e66.jpg

我们可以使用 GiG_iPiP_i,在电路复杂性和延迟之间进行进一步优化:

即最大延迟为 10ty,优于课件中的 12ty,并且,在加法器运算位数增加的情况下,这里的延迟不会发生变化(见最后的勘误),而课件中的延迟会相应的增大。

这里的关键是,充分利用逻辑门的最大扇入。实际上,这里的假定的最大扇入仍然有点多,我们可以进一步减少扇入为 4,于是相应的将 CLA 和第二层超前进位电路设计为 4 位即可。

参考资料:

勘误: