Kogge-Stone 树形加法器

1. Kogge-Stone

Kogge-Stone 加法器是利用 Peter M. Kogge 和 Harold S.Stone 于 1972 年提出的一
种并行算法生成的一种树形加法器。此种加法器在树形加法器中,具有逻辑层数低和较
低的扇入扇出的特点,美中不足的是布线拥塞度高。

2. 超前进位加法器

(1)超前进位加法器

Si=piCi1S_i=p_i \oplus C_{i-1} Ci=gi+Ci1giC_i=g_i + C_{i-1} \cdot g_i C0=CinC_0=C_{in} Cout=CinC_{out}=C_{in}

进位项和产生项如下:
pi=AiBip_i=A_i \oplus B_i gi=AiBig_i=A_i \cdot B_i

重点要解决的是进位链问题,进位链表达式形似一阶递归。
Ci=gi+Ci1piC_i=g_i + C_{i-1} \cdot p_i xi=aixi1+bix_i=a_i \cdot x_{i-1} + b_i

3. Koggle-Stone 并行算法

对于序列x1x_1,x2x_2,x3x_3,\cdots,xNx_N,满足xi=f(xi1,xi2,,xim)x_i=f(x_{i-1},x_{i-2},\cdots,x_{i-m})。一阶递归问题如下:
xi=aixi1+bix_i=a_i \cdot x_{i-1} + b_i

定义函数:
Q^(m,n)=j=nm(r=j+1mar)br\displaystyle \hat Q(m,n)= \sum \limits_{j=n}^{m} (\prod_{r=j+1}^{m} a_r) \cdot b_r

此外:r=m+1mar=1\displaystyle \prod_{r=m+1}^{m} a_r=1

可得到如下结果:

x1=b1=Q^(1,1)\displaystyle x_1=b_1=\hat Q(1,1)

x2=a2x1+b2=a2b1+b2=Q^(2,1)\displaystyle x_2=a_2 \cdot x_1 + b_2=a_2 \cdot b_1 + b_2=\hat Q(2,1)

x3=a3x2+b3=a3a2b1+a3b2+b3=Q^(3,1)\displaystyle x_3=a_3 \cdot x_2 + b_3=a_3 \cdot a_2 \cdot b_1+a_3 \cdot b_2 +b_3=\hat Q(3,1)

x4=a4x3+b4==Q^(4,1)\displaystyle x_4=a_4 \cdot x_3 + b_4= \cdots =\hat Q(4,1)

x5=a5x4+b5==Q^(5,1)\displaystyle x_5=a_5 \cdot x_4 + b_5= \cdots =\hat Q(5,1)

x6=a6x5+b6==Q^(6,1)\displaystyle x_6=a_6 \cdot x_5 + b_6= \cdots =\hat Q(6,1)

x7=a6x6+b7==Q^(7,1)\displaystyle x_7=a_6 \cdot x_6 + b_7= \cdots =\hat Q(7,1)

x8=a8x7+b8==Q^(8,1)\displaystyle x_8=a_8 \cdot x_7 + b_8= \cdots =\hat Q(8,1)

即可得到如下形式:

Q^(1,1)=x1=b1\displaystyle \hat Q(1,1)=x_1=b_1

Q^(2,1)=x2=a2b1+b2=a2Q^(1,1)+Q^(2,2)\displaystyle \hat Q(2,1)=x_2=a_2 \cdot b_1 + b_2=a_2 \cdot \hat Q(1,1) + \hat Q(2,2)

Q^(3,1)=x3=a3x2+b3=a3a2Q^(1,1)+Q^(3,2)\displaystyle \hat Q(3,1)=x_3=a_3 \cdot x_2 + b_3=a_3 \cdot a_2 \cdot \hat Q(1,1) + \hat Q(3,2)

Q^(4,1)=x4=a4x3+b4=a4a3Q^(2,1)+Q^(4,3)\displaystyle \hat Q(4,1)=x_4=a_4 \cdot x_3 + b_4=a_4 \cdot a_3 \cdot \hat Q(2,1) + \hat Q(4,3)

Q^(5,1)=x5=a5x4+b5=a5a4a3a2Q^(1,1)+Q^(5,2)\displaystyle \hat Q(5,1)=x_5=a_5 \cdot x_4 + b_5=a_5 \cdot a_4 \cdot a_3 \cdot a_2 \cdot \hat Q(1,1) + \hat Q(5,2)

Q^(6,1)=x6=a6x5+b6=a6a5a4a3Q^(2,1)+Q^(6,3)\displaystyle \hat Q(6,1)=x_6=a_6 \cdot x_5 + b_6=a_6 \cdot a_5 \cdot a_4 \cdot a_3 \cdot \hat Q(2,1) + \hat Q(6,3)

Q^(7,1)=x7=a7x6+b7=a7a6a5a4Q^(3,1)+Q^(7,4)\displaystyle \hat Q(7,1)=x_7=a_7 \cdot x_6 + b_7=a_7 \cdot a_6 \cdot a_5 \cdot a_4 \cdot \hat Q(3,1) + \hat Q(7,4)

Q^(8,1)=x8=a8x7+b8=a8a7a6a5Q^(4,1)+Q^(8,5)\displaystyle \hat Q(8,1)=x_8=a_8 \cdot x_7 + b_8=a_8 \cdot a_7 \cdot a_6 \cdot a_5 \cdot \hat Q(4,1) + \hat Q(8,5)

树形图:
Kogge-Stone 树形加法器

4. 树形结构

进位链
Ci=gi+Ci1piC_i=g_i + C_{i-1} \cdot p_i xi=aixi1+bix_i=a_i \cdot x_{i-1} + b_i

8比特的加法器进位链并行计算的Kogge-Stone形式的树形结构如下图所示:Kogge-Stone 树形加法器
以此类推:16比特的加法器进位链并行计算的Kogge-Stone形式的树形结构如下图所示:
Kogge-Stone 树形加法器

5. 16位加法器实现

  1. 仿真
    Kogge-Stone 树形加法器

  2. RTL原理图
    Kogge-Stone 树形加法器

  3. 源代码及测试代码在资源界面,可下载获取

6. 参考资料

  1. 论文:A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations
  2. 知乎:纸上谈芯