目录

  • 1.行波进位加法器(ripple-carry adder)
  • 2. 超前进位加法器(CLA, carray lookahed adder)
  • 3. 并行前缀加法器(PPA, parallel-prefix adder)
    • 3.1 原理
    • 3.3 举例(4 bit)
  • 4. flag prefix adder
    • 4.1 原理
    • 4.2 结构

1.行波进位加法器(ripple-carry adder)

行波进位加法器由全加器构成,也即串行进位加法器

这样我们得到加法器的结果为

其中多出来的最低位进位carry(-1)便赋予了加法器额外再+1的能力。将式1.3.1展开得到1.4.1

得到

2. 超前进位加法器(CLA, carray lookahed adder)

它的本质是把ci中对应的gi和pi展开,得到ci与c0的直接关系。这样计算ci的时延就减少了,缺点是需要许多多操作数的与或门,对应门的扇入扇出会比较大。

为了解决上述问题,就提出了分块的方案,其中块与块之间分为串行和并行两种方案。
块内p,g之间的关系式满足

块与块之间串行:

块与块之间并行:

块与块之间的合并满足

这个式子可以进一步拓展为G(R,L)=G(L)+P(L)*G®,其中L>R

3. 并行前缀加法器(PPA, parallel-prefix adder)

3.1 原理

它的本质是超前进位加法器中分块并行的实现方案。由于g,p永远都是成对出现,我们定义一个元组(g, p), 将两个块g,p信号的合并定义为并集

其中g, p之间仍然满足G(R,L)=G(L)+P(L)*G®, P(R,L)=P(L)*P®
3.2 结构
主要分为三部分,一个是根据输入计算第一层的p和g,其中p(i)=a(i)^b(i), g(i)=a(i)&b(i);
第二部分是根据第一层的p和g计算其它层的p和g
第三部分是根据p和g计算最终的结果carray和sum

c(i)=g(i)+p(i)c(i-1)
s(i)=p(i)^c(i-1)
展开后表示为下图中的式子

3.3 举例(4 bit)

注意:这里的ci是直接和c(-1)相关联的,但是si是和c(i-1)相关联的,意味这我们只能先计算出carray,然后才能计算出所有的sum。以4’b1111+4’b0001为例,第一层的g0=(0001) p0=(1110);因此
Q(0,0)= (g0, p0)=(1,0)
Q(0,1) = Q(1,1)+Q(0,0)=(0,1)+(1,0) = (0+1*1, 1+0)=(1,0)
Q(0,2)=Q(2,2)+Q(0,1)=(0,1)+(1,0)=(1,0)
Q(0,3)=Q(3,3)+Q(0,2)=(0,1)+(1,0)=(1,0)
因此g[0,i]=(1,1,1,1), p[0,i]=(0,0,0,0)
由于c(-1)=0,因此ci = g[0,i]+(p[0,i]*c(-1))=g[0,i]=(1,1,1,1)
si = xi ^ yi ^ c(i-1)=p0 ^ c(i-1)= (1110)^(11110) =(10000),c(-1)=0, 结果正确
如果c(-1)=1,则ci = g[0,i]+p[0,i]=(1,1,1,1)
si=xi ^ yi ^ c(i-1)=p0 ^ c(i-1)=(1110)^(11111)=(10001), c(-1)=1, 结果正确。
3.4 并行前缀图
下图是上面例子中用到的前缀图,相当于一个行波进位加法器

kogge-stone(kS)结构

Brent-Kung (BK)结构

BK结构的并行前缀网络如上图3.6所示。它的特点是扇出非常小,节点也较少,但逻辑级数更多。BK结构是通过增加额外的逻辑级数来缓解扇出压力的

4. flag prefix adder

4.1 原理

通过一个电路可以计算A+B或者A+B+1
图中的f表示为

从上面这个图可以得到R=S^F

invert flagged sum bits指的是如果f(i)=1,这对sum进行取反,相当于和f进行异或,得到sum+1;invert all the sum bits, 对所有sum bit 进行取反,如果再加1表示-(A+B),现在没有加1,则表示-(A+B)-1=-(A+B+1);
如果对B进行取反,然后运算,正常算出来的值为A-B-1;如果和flag进行异或,算出来的值为A-B;如果对sum进行取反,则算出来的值为B-A;

4.2 结构

其中e0表示翻转flagged bits 对应的sum;e1表示翻转unflagged bits 对应的sum。我认为模块是可以输出sum和r(0:w)的,所以有两个输出,或者是将overflow对应到e0,直接进行选择输出。

如果e1=e2=0,则p(i+1)保持不变,不管f(i+1)是什么,r(i+1)=A+B,这里比dual adder应该路径延时要大一些,如果dual adder,可以直接根据是否overflow进行选择sum,sum+1, 但是图中的模式,overflow选择信号需要对应转为e0,e1, 后续进行运算得到sum和sum+1的结果。
由于fi和ci不可能同时拉高,因此ci的异或只可能在f(i)=0的分支上,因此我们可以对figure4进行调整。

因此,如果e1为0,则可以得到A+B和A+B+1
如果e0=0,则可以得到A+B和-(A+B+2)

参考链接:
https://zhuanlan.zhihu.com/p/387639241
The “flagged prefix adder” for dual additions

计算机算术3-整数加减法(前缀加法器)相关推荐

  1. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

  2. 计算机组成原理(二) 计算机算术

    位与字节 1,计算机中存储和处理信息的最小单位是位(比特bit),一个比特的值可以是0或者1 2,数字计算机将信息以一组或一串比特的形式保存在存储器中.如,串01011110表示一个8位的字 3,计算 ...

  3. 重学计算机组成原理(十二)- 加法器

    下面这些门电路的标识,你需要非常熟悉,后续的电路都是由这些门电路组合起来的. 这些基本的门电路,是我们计算机硬件端的最基本的"积木" 包含十亿级别晶体管的现代CPU,都是由这样一个 ...

  4. 【计算机科学基础】计算机不需要整数减法器的原因

    之前我们探讨过二进制加减法不用原码的原因,也清楚了二进制原码运算对于加减法是比较不好直接确定的,解决方法是什么呢? 其实大家所熟知的补码正是为了消灭减法产生的. 理由是:正数的补码正是自身,而负数的补 ...

  5. 计算机处理负数加法,怎么让加法器实现两个负数相加

    请点评 我们已经了解了计算机中正整数如何表示,加法如何计算,那么负数如何表示,减法又如何计算呢?本节讨论这些问题.为了书写方便,本节举的例子都用8个bit表示一个数,实际计算机做整数加减运算的操作数可 ...

  6. 两个负数相减计算机如何表示,计算机如何表示整数

    [TOC] 在计算机中,任何的数据都是用二进制: 0 和 1 来表示.整数也不例外.生活中的 10,在 8 个字节的整数中表示为 00001010.但是这样子只能表示正数和零.怎么表示负数呢?于是有了 ...

  7. 字长16位的计算机表示最大整数_废话不多说跪送计算机选择8前十题

    1.字长是CPU的主要性能指标之一,它表示(a) a.CPU-一次能处理二进制数据的位数 b.最长的十进制整数的位数 c.最大的有效数字位数 d.计算结果的有效数字长度 答案解析[解析]字长是指计算机 ...

  8. 计算机组成原理超前进位加法器原理,计算机组成原理课程设计—超前进位加法器的设计.doc...

    PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:计算机组成原理课程设计 课程设计题目:超前进位加法器的设计 院(系):计算机学院 专 业: 班 级: 学 号: 姓 名: 指导教师: ...

  9. 计算机组成原理、数字逻辑之加法器详解

    问题咨询及项目源码下载请加群: 群名:IT项目交流群 群号:245022761 一.加法器的意义 加法器是计算机中的基础硬件,了解加法器不仅能够揭开计算机的本质,也能对计算机的数制运算产生深刻的理解. ...

  10. 计算机基础—任意整数补码的快速计算方法

    这几天读<深入理解计算机系统>(英文名: Computer Systems : A Programmer's Perspective)一书时,再次复习到了整数的各种类型及其表示方法.本科学 ...

最新文章

  1. linux查找文件命令find
  2. Android之TextView的样式类Span的使用具体解释
  3. 如何禁用文本选择突出显示
  4. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群
  5. 马斯克遭“天劫”:40颗星链卫星葬身地磁风暴,数千万美元打了水漂
  6. 设计模式之Composite
  7. spring boot 1.5.4 整合 mybatis(十二)
  8. 计算机美术与设计方案,试述电脑美术及其在现代设计教学与创作中的作用2200字...
  9. CSS基础(part8)--文本外观属性
  10. Sphinx编译docs文档
  11. FCK编辑器去掉html标签
  12. css基础知识汇总6
  13. linux监测服务日志脚本,LINUX下的一个性能监测脚本
  14. 京东怼天天快递,真的是“末位淘汰”那么简单?
  15. 达梦数据库处理用户过期密码方式
  16. 涂抹mysql_《涂抹MySQL:跟着三思一步一步学MySQL》PDF版本下载
  17. 亚马逊被人差评了怎么办?
  18. 【JAVA】7-1 厘米换算英尺英寸
  19. 制冷与空调作业题库及答案
  20. 矩阵的基本运算(相乘、相加、求逆、转置)

热门文章

  1. java导出繁体字word,word繁体字转换
  2. python中close_python close()是什么?python close()定义及用法详解
  3. odi lkm mysql_Oracle ODI系列之一(ODI知识模块)
  4. postgresql立式版本下载_【PostgreSQL下载】PostgreSQL官方版下载_多特软件站
  5. 【支持升级官方最新版】西部数码主机代理系统模板源码IDC网站源码虚拟主机代理管理系统
  6. 手写平衡二叉树(二)
  7. 带你了解什么叫大数据分析
  8. Python CT图像预处理——nii格式读取、重采样、窗宽窗位设置
  9. onap桂林版部署教程
  10. Android页面的跳转