计算机组成原理笔记(十六)——4.1基本算术运算的实现

计算机中最基本的算术运算是加法运算,加、减、乘、除运算最终都可以归结为加法运算。

4.1.1加法器

一、加法器的基本单元

加法器的核心单元是 全加器(Full Adder, FA),而所有加法器都由 半加器(Half Adder, HA) 组合实现。

1. 半加器(HA)

功能:实现两个1位二进制数相加(不考虑低位进位)。
输入:A(加数)、B(被加数)
输出:Sum(和)、Carry(进位)
真值表

ABSumCarry
0000
0110
1010
1101

逻辑表达式
Sum = A ⊕ B Carry = A ⋅ B \text{Sum} = A \oplus B \\ \text{Carry} = A \cdot B Sum=ABCarry=AB

电路图

在这里插入图片描述

2. 全加器(FA)

功能:实现两个1位二进制数与一个低位进位相加。
输入:A(加数)、B(被加数)、C_in(低位进位)
输出:Sum(和)、C_out(进位)
真值表

ABC_inSumC_out
00000
00110
01010
01101
10010
10101
11001
11111

逻辑表达式
Sum = A ⊕ B ⊕ C i n C o u t = A ⋅ B + ( A ⊕ B ) ⋅ C i n \text{Sum} = A \oplus B \oplus C_{in} \\ C_{out} = A \cdot B + (A \oplus B) \cdot C_{in} Sum=ABCinCout=AB+(AB)Cin

电路结构示意图(由两个半加器组合):

在这里插入图片描述

二、加法器的类型与工作原理

1. 串行加法器

结构:通过移位寄存器依次处理每一位,每次计算1位。
电路图

在这里插入图片描述

特性

  • 优点:电路简单,成本低。
  • 缺点:速度极慢,需n个时钟周期完成n位加法。
  • 关键问题:进位信号需逐级传递(行波进位)。

2. 并行加法器

所有位同时计算,但进位传递是关键瓶颈。分为两类:

(1) 串行进位加法器

结构:多个全加器串联,前级的C_out作为后级的C_in。
电路示意图

在这里插入图片描述

延迟分析

  • 若每级进位延迟为2t,则n位加法总延迟为2n t。
  • 例:32位加法需要64t耗时。
(2) 超前进位加法器(CLA)

核心思想:提前计算各级进位,消除级联依赖。
进位生成公式
C i = G i + P i ⋅ C i − 1 其中: G i = A i ⋅ B i ( 生成进位 ) P i = A i ⊕ B i ( 传播进位 ) C_i = G_i + P_i \cdot C_{i-1} \\ \text{其中:} \quad G_i = A_i \cdot B_i \quad (\text{生成进位}) \\ P_i = A_i \oplus B_i \quad (\text{传播进位}) Ci=Gi+PiCi1其中:Gi=AiBi(生成进位)Pi=AiBi(传播进位)

4位CLA示例

在这里插入图片描述

优点:极快完成所有位的计算,但电路复杂度高。

三、关键对比

特性串行加法器并行串行进位超前进位
速度极慢(O(n))较快(O(n))极快(O(1))
硬件复杂度极简中等复杂
适用场景嵌入式低功耗设备通用CPU高性能计算
典型延迟32位需64t32位需64t4位仅需4t

四、应用实例

现代CPU中,ALU的加法器采用 分组超前进位 结构:

  • 16位加法器:4个4位CLA模块 + 一级CLA控制。
  • 延迟:仅需计算组内和组间的并行进位。

在这里插入图片描述

通过这种分层设计在速度和复杂度之间取得平衡。

4.1.2进位的产生和传递

进位逻辑是加法器设计中影响运算速度的核心部分。

一、进位信号的基本逻辑

全加器的进位输出由两部分构成:

  1. 本地进位(本地生成) G i = A i ⋅ B i G_i = A_i \cdot B_i Gi=AiBi
    A i A_i Ai B i B_i Bi 均为1时,必然产生进位(与低位无关)。
  2. 传递进位(传递依赖) P i = A i ⊕ B i P_i = A_i \oplus B_i Pi=AiBi
    A i A_i Ai B i B_i Bi 为1时,低位进位可传递至高位。

进位表达式可简化为:
C i = G i + P i ⋅ C i − 1 C_i = G_i + P_i \cdot C_{i-1} Ci=Gi+PiCi1

逻辑电路图
在这里插入图片描述

二、并行进位技术

1. 完全并行进位(CLA)

所有进位直接由原始输入和最低位进位 C 0 C_0 C0 同时生成,不依赖相邻进位。
4位CLA的进位表达式
C 1 = G 1 + P 1 C 0 C 2 = G 2 + P 2 G 1 + P 2 P 1 C 0 C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C 4 = G 4 + P 4 (嵌套前3位进位生成逻辑) \begin{aligned} C_1 &= G_1 + P_1 C_0 \\ C_2 &= G_2 + P_2 G_1 + P_2 P_1 C_0 \\ C_3 &= G_3 + P_3 G_2 + P_3 P_2 G_1 + P_3 P_2 P_1 C_0 \\ C_4 &= G_4 + P_4 \text{(嵌套前3位进位生成逻辑)} \end{aligned} C1C2C3C4=G1+P1C0=G2+P2G1+P2P1C0=G3+P3G2+P3P2G1+P3P2P1C0=G4+P4(嵌套前3位进位生成逻辑)
优点:延迟固定为 2 t y 2t_y 2ty(1级 G i / P i G_i/P_i Gi/Pi计算 +1级逻辑门)。
缺点:硬件复杂度随位宽指数增长,实际应用中需分组实现。

2. 分组并行进位

两层设计思想:组内并行(Group Carry Lookahead)+ 组间并行。

  • 组内并行(如4位一组):组内所有进位同时生成。
  • 组间并行:通过“组生成函数” G ∗ G^* G 和“组传递函数” P ∗ P^* P 加速跨组进位。

关键公式
组生成函数 G ∗ = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 组传递函数 P ∗ = P 4 P 3 P 2 P 1 组进位输出 C 4 = G ∗ + P ∗ C 0 \begin{aligned} \text{组生成函数} \quad G^* &= G_4 + P_4 G_3 + P_4 P_3 G_2 + P_4 P_3 P_2 G_1 \\ \text{组传递函数} \quad P^* &= P_4 P_3 P_2 P_1 \\ \text{组进位输出} \quad C_4 &= G^* + P^* C_0 \end{aligned} 组生成函数G组传递函数P组进位输出C4=G4+P4G3+P4P3G2+P4P3P2G1=P4P3P2P1=G+PC0

流程图(16位两级分组CLA)**:

在这里插入图片描述

三、分组方式对比

进位方式硬件复杂度最大延迟适用场景
串行进位低(简单级联) O ( n ) O(n) O(n)低速低成本芯片
单级分组CLA中等(组内并行) O ( n ) O(\sqrt{n}) O(n )通用CPU(如32位处理器)
多级分组CLA高(多级逻辑) O ( log ⁡ n ) O(\log n) O(logn)高性能计算(如GPU)

四、典型应用与优化

1. 示例:16位两级CLA

  • 组内延迟:每组4位的CLA生成 C 4 C_4 C4 2 t y 2t_y 2ty
  • 组间延迟:通过高层CLA生成跨组进位,再传递回组内,总延迟 4 t y 4t_y 4ty

关键优化点

  • 增量进位计算:组内生成 G i G_i Gi P i P_i Pi 后,直接用于高层逻辑,避免重复计算。
  • 专用逻辑电路:使用74181(4位ALU)和74182(CLA扩展器)实现快速级联。

五、总结

  • 并行进位核心:通过预先计算进位生成与传递关系,消除等待相邻进位时间。
  • 工程权衡:硬件资源与速度的平衡,分组策略需根据芯片制程和应用场景调整。
  • 实际应用:现代CPU多采用多级分组(如64位加法器分为4×16位组),配合动态调度优化效率。

4.1.3并行加法器的快速进位

一、快速进位的必要性

传统串行进位的并行加法器(行波进位)进位延迟与位数成正比(如16位加法器延迟32ty)。快速进位技术通过并行化处理减少进位传播时间,核心思路是通过逻辑预判提前生成所有进位。

二、并行进位逻辑表达式

对于每位进位 C i C_i Ci ,通过进位生成函数 G i G_i Gi进位传递函数 P i P_i Pi 递归展开:

  1. 单级先行进位(完全并行)
    C 1 = G 1 + P 1 C 0 C 2 = G 2 + P 2 G 1 + P 2 P 1 C 0 C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C 4 = G 4 + P 4 C 3 ( 依此类推 ) \begin{aligned} C_1 &= G_1 + P_1 C_0 \\ C_2 &= G_2 + P_2 G_1 + P_2 P_1 C_0 \\ C_3 &= G_3 + P_3 G_2 + P_3 P_2 G_1 + P_3 P_2 P_1 C_0 \\ C_4 &= G_4 + P_4 C_3 \quad (\text{依此类推}) \end{aligned} C1C2C3C4=G1+P1C0=G2+P2G1+P2P1C0=G3+P3G2+P3P2G1+P3P2P1C0=G4+P4C3(依此类推)

  2. 硬件实现矛盾

    • 优点:所有进位仅依赖 G i / P i G_i/P_i Gi/Pi C 0 C_0 C0,可同时生成。
    • 缺点:公式复杂度随位数指数增长(n位数需 n n n级逻辑门),实际需分组分层处理。
      在这里插入图片描述

三、分组进位技术

1. 单级分组并行进位(组内并行、组间串行)

  • 分组示例:将16位分为4组,每组4位。

  • 每组生成4位进位
    在这里插入图片描述

    优点:硬件简单,延迟降低为 8 t y 8ty 8ty(4组 × 2ty/组)。

2. 多级分组并行进位(组间并行)

  • 核心逻辑
    • 每组(如4位)生成组进位生成函数 G ∗ G^* G组进位传递函数 P ∗ P^* P
      G ∗ = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 P ∗ = P 4 P 3 P 2 P 1 G^* = G_4 + P_4 G_3 + P_4 P_3 G_2 + P_4 P_3 P_2 G_1 \\ P^* = P_4 P_3 P_2 P_1 G=G4+P4G3+P4P3G2+P4P3P2G1P=P4P3P2P1
    • 高层CLA电路计算跨组进位:
      C 4 ( k + 1 ) = G k ∗ + P k ∗ C 4 k ( k = 0 , 1 , 2 , 3 ) C_{4(k+1)} = G^*_k + P^*_k C_{4k} \quad (k=0,1,2,3) C4(k+1)=Gk+PkC4k(k=0,1,2,3)
  • 示例(以16位双重分组为例):

在这里插入图片描述

- **延迟**:仅 $6ty$(组内2ty + 组间2ty + 二次组内2ty)

四、硬件电路实现

使用 CLA电路生成器(如74182芯片)与 基本加法单元(如74181):

在这里插入图片描述

五、典型对比

类型硬件复杂度最大延迟适用场景
行波进位 32 t y 32ty 32ty低速设备
单级分组(4位一组)中等 8 t y 8ty 8ty通用CPU
多级分组双 6 t y 6ty 6ty高性能计算(GPU)

六、关键流程图

单级分组硬件结构

在这里插入图片描述

多级分组信号流

在这里插入图片描述

通过上述机制,快速进位技术显著降低了加法运算的延迟,在现代CPU与高性能计算中广泛应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Qt创建一个模拟问答系统

界面: 添加了聊天显示区域(QTextEdit) 添加了发送按钮和清空对话按钮 优化了布局和窗口大小添加了时间戳显示 2、功能: 支持实时对话可以清空对话历史 支持按回车发送消息 添加了简单的关键词匹配响应系统 交互体验&#x…

神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习

一、技术背景与核心突破 2025年,神经光子渲染(Photonic Neural Rendering, PNR)技术通过物理光学方程与神经辐射场的深度融合,在AIGC检测工具(如GPTDetector 5.0)的识别准确率从98%降至12%。该技术突破性地…

Linux中手动安装7-Zip软件文档

7zip位于EPEL源中,如果服务器可以联网或者配置了本地EPEL源则可以直接安装 yum install p7zip p7zip-plugins -y对于无法联网且没有配置本地EPEL源的服务器,可以通过官网下载安装包后,上传至服务器,手动安装 ## 下载地址&#x…

[密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践

GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践 GM/T 0018-2023《密码设备应用接口规范》是中国密码行业的重要标准,于2023年12月4日发布,2024年6月1日正式实施,替代了2012年版标准。该标准旨在规范密码设备…

8.QT-按钮类控件|Push Button|Radio Button|Check Box|Tool Button(C++)

Push Button 使⽤ QPushButton 表⽰⼀个按钮.这也是当前我们最熟悉的⼀个控件了. QPushButton 继承⾃ QAbstractButton .这个类是⼀个抽象类.是其他按钮的⽗类 在Qt Designer中也能够看到这⾥的继承关系 属性说明text按钮中的⽂本icon按钮中的图标iconSize按钮中图标的尺⼨sh…

CFIS-YOLO:面向边缘设备的木材缺陷检测轻量级网络解析

论文地址:https://arxiv.org/pdf/2504.11305 目录 一、论文核心贡献 二、创新点详解 2.1 CARAFE动态上采样 工作原理 优势对比 2.2 C2f_FNB轻量模块 计算效率 2.3 Inner-SIoU损失函数 三、实验验证 3.1 消融实验 3.2 对比实验 四、应用部署 4.1 边缘设备部署流程…

BUUCTF PWN刷题笔记(1-9)

才知道,由于栈对齐,直接动调看栈估计会错,用cyclic看 1.test_your_nc NC连接一下,这个网站似乎直接访问是不中的,怀疑是没开启web的端口。NC链接输入cat flag就OK了,应该只是让我这样的小菜鸟培养自信用的…

C#处理网络传输中不完整的数据流

1、背景 在读取byte数组的场景(例如:读取文件、网络传输数据)中,特别是网络传输的场景中,非常有可能接收了不完整的byte数组,在将byte数组转换时,因字符的缺失/增多,转为乱码。如下…

PostgreSQL 用户资源管理

PostgreSQL 用户资源管理 PostgreSQL 提供了多种机制来管理和限制用户对数据库资源的使用,以下是全面的资源管理方法: 1 连接限制 1.1 限制最大连接数 -- 在 postgresql.conf 中设置 max_connections 100 -- 全局最大连接数-- 为特定用户设置连接限…

新书速览|OpenCV计算机视觉开发实践:基于Qt C++

《OpenCV计算机视觉开发实践:基于Qt C》 本书内容 OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C》基于 OpenCV 4.10与Qt C进行编写,全面系统地介绍OpenCV的使用及实战案例,并配套提供全书示例源码、PPT课件与作…

【上位机——MFC】消息映射机制

消息映射机制 Window消息分类消息映射机制的使用代码示例 MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中,定义一个消息和消息函数指针对照表,即消息映射表。 在不重写WindowProc虚函数的大…

docker学习笔记2-最佳实践

一、在容器中启动mysql的最佳实践 (一)查找目录 1、mysql的配置文件路径 /etc/mysql/conf.d 2、mysql的数据目录 /var/lib/mysql 3、环境变量 4、端口 mysql的默认端口3306。 (二)启动命令 docker run -d -p 3306:3306 …

Vue3核心源码解析

/packages/complier-core 定位​​:​​编译时核心​​,处理 Vue 模板的编译逻辑。​​核心功能​​: ​​模板解析​​:将 .vue 文件的模板语法(HTML-like)解析为 ​​抽象语法树 (AST)​​。​​转换优化…

n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)

n8n 是一款强大的开源工作流自动化工具,可帮助你连接各类应用与服务,实现自动化任务。如果你想快速体验 n8n 的功能,本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n,无需服务…

【python】pyCharm常用快捷键使用-(2)

pyCharm常用快捷键使用 快速导入任意类 【CTRLALTSPACE】代码补全【CTRLSHIFTENTER】代码快速修正【ALTENTER】代码调试快捷键

Docker 镜像、容器和 Docker Compose的区别

前言:Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件,以下是对它们的详细解析及使用场景说明。 ​​1、Docker 镜像(Image)​​ ​​定义​​: 镜像是只读模板,包含运行应用程序所需的代码、…

算法——背包问题(分类)

背包问题(Knapsack Problem)是一类经典的组合优化问题,广泛应用于资源分配、投资决策、货物装载等领域。根据约束条件和问题设定的不同,背包问题主要分为以下几种类型: 1. 0-1 背包问题(0-1 Knapsack Probl…

多路由器通过RIP动态路由实现通讯(单臂路由)

多路由器通过RIP动态路由实现通讯(单臂路由) R1(开启端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…

从底层设计原理分析并理解SQL 的执行顺序

​一、执行顺序的底层设计原理​​ ​​1. 数据源的确定与连接(FROM → ON → JOIN)​​ ​​FROM​​:数据库首先需要确定数据的物理来源,从磁盘加载表或子查询的原始数据。此时尚未应用任何筛选,仅读取元数据&#…

游戏引擎学习第237天:使用 OpenGL 显示图像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我们正在处理一个新的开发阶段,目标是在使用 OpenGL 渲染的同时能正常通过 OBS 进行直播。昨天我们已经尝试了一整天来解决这个问题,希望能找到一种方式让 OBS 能正确地捕捉到 OpenGL 的窗口画面。虽然我们不确定…