并行前缀(Parallel Prefix)加法器

并行前缀加法器的基本介绍

二进制加法器是目前数字计算单元中的重要模块,基础的加法器架构包括行波进位加法器(Ripple Carry Adder),超前进位加法器(Carry Look-Ahead Adder),进位选择加法器(Carry Select Adder)等。加法器的进位传播是其组合延迟的主要来源,在现代的高性能计算中,快速的加法器结构可以决定系统的运行,为了降低进位传播延迟,大部分现代加法器结构会采用并行前缀加法器(Parallel Prefix Adder)

并行前缀加法器根据拓扑的不同,可以分类为不同的类型,类如Kogge Stone Adder,Sklansky Adder,Brent Kung Adder,Han Carlson dder,Lander Fischer Adder等。不同的拓扑会具备不同的延迟、面积、功耗属性,需要在设计中酌情考虑。

并行前缀加法器的原理

并行前缀加法器通过三个基本阶段来实现加法操作,分别为:

  1. \(P_i\)与\(G_i\)的预运算
  2. 进位传播网络
  3. 后运算

第一个阶段是\(P_i\)与\(G_i\)的预运算,用于根据输入\(A\)和\(B\)的对应相加的每对比特产生生成(generate)和传播(propagate)信号,根据公式:

\[p_i=a_i \oplus b_i
\]
\[g_i=a_i \cdot b_i
\]

第二个阶段的进位传播网络是不同拓扑的进位前缀加法器产生延迟、面积、功耗差异的来源,对加法器起到决定性因素,其包含了处理单元和缓冲单元,更少的处理单元意味着更小的延迟,而缓冲单元的输出则与输入相同。处理单元的输出为:

\[g_{i,k}=g_{i,j}+p_{i,j}\cdot g_{j-1,k}
\]
\[p_{i,k}=p_{i,j}\cdot p_{j-1,k}
\]

第三阶段的后处理单元完成最终的求和与进位运算:

\[s_i=p_i\oplus g_{i-1,1}
\]
\[c_{out}=g_{n,1}
\]

关于这里的标号的含义,可以参考下图:

假定一个8bit的加法器结构(这个拓扑本质上是一个串级加法器),一共产生了8对初始的\(p_i\)和\(g_i\),这里\(i=1,2,3,4\dots 8\),除了进位链上的第一个处理单元之外,每个处理单元接收两对\((p,g)\)的输入,为了标记两对输入的来源,我们采用一对标号进行表示,第一个标号表示处理单元处于第几位的箭头上。第二个标号表示了这对\((p,g)\)能够"溯源"到第几位的箭头上,即我们直接观察该输入对所属的进位传播链的源头对应在第几位的箭头上。例如对于进位传播链上的最后一个处理单元,他的两对\((p,g)\)对的输入,分别应该对应\((p_8,g_8)\),根据前面所述规则,可以看作是\((p_{8,8},g_{8,8})\)和\((p_{7,1},g_{7,1})\),并根据处理单元的公式,产生\((p_{8,1},g_{8,1})\),根据后处理单元的公式,这一位的\(s_8=p_8\cdot g_{7,1}\),同时最终的进位为\(c_{out}=g_{8,1}\)。

从根本的数学原理上来说,实际上并行前缀加法器与超前进位加法器一致,基于相同的进位比特产生方程式。因为超前进位加法器属于教科书上基本都会讲解的加法器结构,这里不对其细节再做赘述。

并行前缀加法树的拓扑

在上一小节中我们提到了根据进位传播网络的不同,并行前缀加法器可以形成不同延迟、面积、功耗属性的拓扑。具体来说,这里以8bit加法器为例简单展示几种:

Kogge Stone Adder:

Sklansky Adder:

Brent Kung Adder:

对于不同拓扑的比较可见下表,在TSMC 90nm工艺下,以64bit位宽加法器作为对象,不同拓扑的属性情况:

可以看出,在延迟上Kogge Stone拓扑具有最显著的优势,而Brent Kung拓扑虽然在延迟上表现较差,但具有最优的面积和功耗。面积和功耗可以理解为受到处理单元个数的影响,而延迟则受到最大延迟传播链上处理单元数量的影响,从上面展示的图中可以显著的看出各个拓扑的差异。

并行前缀加法器的发展方向

由于AI的快速发展,高性能计算的需求暴涨,如何设计出合理的拓扑满足延迟、面积、功耗的平衡是一个复杂的问题。

在ISSCC2024的Plenary上,英伟达介绍了他们通过结合了强化学习策略实现的PrefixRL工具在并行前缀的拓扑上取得了比现有SOTA EDA工具更好的优化效果,实现了综合面积、延迟更好的并行前缀加法器电路。PrefixRL工具被用于了Hopper GPU中接近13000个电路的设计。

此外对于具备一定的容错性的计算负载,可以通过近似计算的优化手段来牺牲计算准确度换取更好的综合性能表现,Morgana Macedo Azevedo da Rosa等人提出了一种近似并行前缀加法器结构,在相同的MRED(平均相对错误距离)下,取得了相对于传统近似加法器结构,如LOA,Trunc,ETAI等更好的能耗和面积节省。

参考文献

  1. "A Comparative Analysis of Parallel Prefix Adders", Megha Talsania et. al.
  2. "Parallel Prefix Adders- A Comparative Study For Fastest Response", Er. Aradhana Raju et. al.
  3. "Parallel prefix adders", KostasVitoroulis
  4. "AxPPA: Approximate Parallel Prefix Adders", Morgana Macedo Azevedo da Rosa et. al.

并行前缀(Parallel Prefix)加法器的更多相关文章

  1. C#并行编程-Parallel

    菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...

  2. 洛谷P1470 最长前缀 Longest Prefix

    P1470 最长前缀 Longest Prefix 73通过 236提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 求大神指导,为何错? 题目描述 在生 ...

  3. bzoj 4131: 并行博弈 (parallel)

    bzoj 4131: 并行博弈 (parallel) Description lyp和ld在一个n*m的棋盘上玩翻转棋,游戏棋盘坐标假设为(x, y),1 ≤ x ≤ n,1 ≤ y ≤ m,这个游戏 ...

  4. 并行网关 Parallel Gateway

    并行网关 Parallel Gateway 作者:Jesai 2018年3月25日 00:26:21 前言: 做工作流时间长后,慢慢的就会发现,很多客户会需要会签的功能,会签的情况也有很多种,实现的方 ...

  5. C#并行编程--命令式数据并行(Parallel.Invoke)---与匿名函数一起理解(转载整理)

    命令式数据并行   Visual C# 2010和.NETFramework4.0提供了很多令人激动的新特性,这些特性是为应对多核处理器和多处理器的复杂性设计的.然而,因为他们包括了完整的新的特性,开 ...

  6. 并行开发——Parallel的使用 -摘自网络

    随着多核时代的到来,并行开发越来越展示出它的强大威力,像我们这样的码农再也不用过多的关注底层线程的实现和手工控制, 要了解并行开发,需要先了解下两个概念:“硬件线程”和“软件线程”. 1. 硬件线程 ...

  7. C#并行编程--命令式数据并行(Parallel.Invoke)

    命令式数据并行   Visual C# 2010和.NETFramework4.0提供了很多令人激动的新特性,这些特性是为应对多核处理器和多处理器的复杂性设计的.然而,因为他们包括了完整的新的特性,开 ...

  8. 第九节:深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)

    一. 并行编程 1. 区分串行编程和串行编程 ①. 串行编程:所谓的串行编程就是单线程的作用下,按顺序执行.(典型代表for循环 下面例子从1-100按顺序执行) ②. 并行编程:充分利用多核cpu的 ...

  9. Python并行(parallel)之谈

    简介 可以先看看并发Concurrent与并行Parallel的区别 在谈并行前,头脑中总会浮出多线程.多进程.线程/进程同步.线程/进程通信等词语. 那为什么需要同步.通信,它们之间的作用是怎样的呢 ...

  10. oracle加并行参数PARALLEL

    select /*+ PARALLEL(t,4) */ * from table1

随机推荐

  1. iphone/ios14越狱安装screendump

    必须是ios14 因为screendump经过大神修复后最新版本(作者起了个名字叫做screendumpfix14)只支持到ios14. 点击这里 查看大神原帖子. 安装Sileo商店 如果已经存在 ...

  2. delete js转载

    http://www.jb51.net/article/54247.htm 1,对象属性删除 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 function fun(){   thi ...

  3. ETL数据集成工具DataX、Kettle、ETLCloud特点对比

    ETL数据集成工具 对于数据仓库,大数据集成类应用,通常会采用ETL工具辅助完成.ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract) ...

  4. SciTech-BigDataAIML-Tensorflow-Optimizer:优化器

    https://keras.io/api/optimizers/ Optimizers Available optimizers: SGD RMSprop Adam AdamW Adadelta Ad ...

  5. FreeSwitch: esl 调用lua动态传参&日志查看

    lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样: -- 主叫 local callernum = argv[1]; -- 被叫 ...

  6. Linux怎么修改用户密码---九五小庞

    首先,要用CRT软件连接Linux系统. 首选,确认是用root用户登录系统的. 输入命令: id ,查看登录用户信息.  若修改root自己的密码,直接输入 passwd .  输入两遍,新密码即可 ...

  7. 实时最新中国省市区县街道级geoJSON格式地图数据Echarts地图数据联动数据下载

    发现个可以免费下载全国 geojson 数据的网站,推荐一下.支持全国.省级.市级.区/县级.街道/乡镇级以及各级的联动数据 geojson 数据下载地址:https://hxkj.vip/demo/ ...

  8. P6638 「JYLOI Round 1」常规

    容易把问题转换为求前缀和.设 \(p\) 为当前最大的下标使得 \(a_p \leq x\),则容易得到答案: \[\text{ans} = \sum_{i = 1}^{p}\left\lfloor\ ...

  9. (译) 理解 Elixir 中的宏 Macro, 第二部分:宏理论

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir ...

  10. Spring 过滤器 拦截器 AOP区别

    https://blog.csdn.net/dreamwbt/article/details/82658842 简介 这几天在回顾Spring的AOP时,对过滤器,拦截器,AOP的关系有点好奇,故记录 ...