当前位置: 首页 > article >正文

计算机组成原理(八):加法器

计算机组成原理 中,加法器(Adder)是一个非常基础且重要的组件,用于执行二进制加法运算。加法器不仅在 算术逻辑单元(ALU) 中起着核心作用,而且在许多其他硬件模块中也有应用,如处理器的运算、乘法器、地址生成器等。

加法器的基本任务是将两个二进制数加在一起,并根据需要产生一个进位(carry)。在加法过程中,除了计算结果(sum)外,还需要处理进位(carry)的传播问题。

根据加法器的功能和复杂性,可以将其分为几种不同类型:半加器(Half Adder)全加器(Full Adder)多位加法器进位选择加法器(Carry Lookahead Adder) 等。

半加器(Half Adder)

半加器是最基础的加法器,用来加两个单一的二进制位(A 和 B),并生成两个输出:

  • 和(Sum, S):两个输入的和。
  • 进位(Carry, C):两个输入相加时产生的进位。

半加器的真值表:

输入A输入B和 (S)进位 ©
0000
0110
1010
1101

半加器的逻辑表达式:

  • 和(S) = A XOR B
  • 进位(C) = A AND B

结构:

  • XOR 门用来计算和。
  • AND 门用来计算进位。

半加器的局限性在于它不能处理来自低位的进位,因此在多位加法中,通常需要全加器来处理进位。

全加器(Full Adder)

全加器比半加器更加复杂,它能够处理三个输入:两个加数(A 和 B)以及来自低位的进位输入(Cin)。它输出两个值:

  • 和(Sum, S):当前位的和。
  • 进位(Carry-out, Cout):当前位的进位,作为下一个加法器的进位输入。

全加器的真值表:

输入A输入B进位Cin和 (S)进位Cout
00000
01010
10010
11001
00110
01101
10101
11111

全加器的逻辑表达式:

  • 和(S) = A XOR B XOR Cin
  • 进位(Cout) = (A AND B) OR (B AND Cin) OR (A AND Cin)

结构:

全加器由两个 XOR 门、两个 AND 门和一个 OR 门组成。首先,XOR 门计算和,然后使用 AND 门计算每一位的进位,最后通过 OR 门合并进位。

多位加法器

多个全加器可以级联起来实现多位二进制数的加法。假设我们需要加两个 N 位的二进制数 A = A[N-1] A[N-2] ... A[0]B = B[N-1] B[N-2] ... B[0],我们可以使用 N 个全加器将它们逐位相加。

  • 每个全加器负责一个比特的加法。
  • 每个全加器的 进位输出(Cout) 将传递到下一个全加器的 进位输入(Cin)

例如,4 位加法器的工作过程:

  • 第 1 位(最低位)由第一个全加器加法:S0 = A0 XOR B0 XOR Cin,并产生进位 Cout0
  • 第 2 位:由第二个全加器加法:S1 = A1 XOR B1 XOR Cout0,并产生进位 Cout1
  • 第 3 位:由第三个全加器加法:S2 = A2 XOR B2 XOR Cout1,并产生进位 Cout2
  • 第 4 位:由第四个全加器加法:S3 = A3 XOR B3 XOR Cout2,并产生进位 Cout3

最终输出为和 S3S2S1S0 和进位 Cout3

进位选择加法器(Carry Lookahead Adder)

传统的加法器通过级联多个全加器,每一位的进位需要传递到下一位,导致加法器的延迟随位数增加而增加。为了提高加法器的速度,可以使用 进位选择加法器(Carry Lookahead Adder, CLA)

进位选择加法器的核心思想是 并行计算进位,减少了进位传递的延迟。

进位选择加法器的基本思想:

  • 进位选择加法器利用

    生成(Generate)

    传播(Propagate)

    信号来快速计算进位。

    • 生成(Generate):当两个输入位均为 1 时,进位将被产生,即 G = A AND B
    • 传播(Propagate):如果某一输入位与进位传递位相加时会传播进位,即 P = A XOR B

进位选择的公式:

  • 进位公式Cout = G + P * Cin
  • 和公式S = A XOR B XOR Cin

CLA 通过并行计算每一位的进位,显著减少了计算延迟。

加法器的应用

加法器是计算机中许多关键操作的基础,广泛应用于以下场景:

  • 算术逻辑单元(ALU):ALU 中有加法器用于实现加法、减法(通过补码表示)等算术运算。
  • 乘法器:乘法运算可以通过多次加法操作来实现。例如,二进制乘法可以通过加法器将一个数与另一个数的每一位相乘并累加。
  • 浮点数运算:浮点数加法涉及到指数对齐、舍入等过程,底层需要加法器进行数值运算。
  • 加速器和处理器:高级加法器(如CLA)被用于加速器和处理器设计中,以提高运算速度。
  • 数据传输和地址计算:加法器用于计算存储器地址、指令地址等。

http://www.kler.cn/a/440724.html

相关文章:

  • ps案例制作
  • centos使用mkisofs构建无人值守镜像(附官方学习文档)
  • python webdriver-manager 实现selenium 免下载安装webdriver
  • 51c视觉~合集31
  • 【C++】红黑树(万字)
  • 【AIStarter】3.2.1版本更新:告别Bug,提升用户体验
  • 前端(七)定位流
  • 单片机:实现utf-8转gb2312(附带源码)
  • 银河麒麟桌面操作系统添加WPS字体
  • 如何在 Ubuntu 上安装 OpenSearch 开源的搜索引擎
  • BGP-面试
  • Zookeeper其二,zk的java和选举机制,Hadoop的高可用和联邦机制
  • c++ multimap
  • TCP小队列与WiFi聚合
  • 计算机网络 | 5.传输层
  • 【功能安全】随机硬件失效导致违背安全目标的评估(FMEDA)
  • 【docker】dockerfile add或者copy的文件 /entrypoint.sh: no such file or directory
  • 自动外呼机器人如何处理用户情绪?
  • Qt-对话框使用总结
  • 如何在 Linux 中使用 `useradd` 命令创建新用户