L2·
加法器
Adder / ALU
核心抽象算术单元
逻辑门组合出半加器和全加器,计算机从此会做算术。
学习进度:
What
加法器是用逻辑门搭建的算术电路。半加器计算两个 1-bit 数的和与进位;全加器额外接受低位进位。多个全加器串联构成行波进位加法器(Ripple Carry Adder)。更高效的方案包括超前进位加法器(Carry Lookahead Adder)和 Kogge-Stone 加法器。加法器是 ALU(算术逻辑单元)的核心组件。
Why
逻辑门只能做布尔运算,无法直接计算数值。加法器将布尔逻辑提升为算术运算,是计算机从'逻辑机器'进化为'计算机器'的关键一步。所有复杂的数学运算(乘法、除法、浮点运算)最终都分解为加法操作。
How
程序员通过 + 运算符使用加法的抽象。理解加法器有助于理解:为什么加法是 O(1) 而大数加法是 O(n);为什么 CPU 的 ALU 是性能瓶颈之一;为什么进位传播延迟限制了时钟频率。
Bottom-up:由下层如何构建
本层建立在以下层级之上:
Top-down:向上暴露什么接口
二进制加法进位传播ALU 基础
Programmer View:程序员视角
我能操作吗?
通过算术运算符(+、-、*、/)间接使用。底层由 ALU 硬件实现。
成本模型
| 指标 | 量级 | 备注 |
|---|---|---|
| 行波进位延迟 | O(n) 门延迟 | n 位加法器,进位逐级传播 |
| 超前进位延迟 | O(log n) 门延迟 | 额外硬件换取速度 |
| 面积 | O(n) 晶体管 | n 位全加器约 5n 个门 |
常见陷阱
- !整数溢出:当加法结果超出数据类型范围时,行为取决于语言(C 未定义,Java 截断)
- !进位链延迟:行波进位加法器中,最高位的进位需要等待所有低位完成,限制了时钟频率
GPU 对应表
GPU 不是 CPU 的替代品,而是抽象阶梯的并行分支。每一层抽象在 GPU 上都有对应的实现:
| 层级 | 抽象 | GPU 的对应 |
|---|---|---|
| L0 | 晶体管 | 同样——GPU 由数十亿晶体管构成 |
| L1 | 逻辑门(NAND) | 同样——GPU 的逻辑门规模远超 CPU |
| L2 | ALU | GPU 有海量向量 ALU(CUDA 核心) |
| L3 | 寄存器 / 存储 | GPU 寄存器、共享内存、显存(HBM) |
| L4 | 机器指令 / ISA | CPU ISA + GPU ISA(SASS/GCN) |
| L5 | 计算机体系结构 | CPU 架构 + GPU 架构(SIMT) |
| L6 | 汇编语言 | CPU 汇编 + GPU 汇编(PTX/SASS) |
| L7 | 汇编器 | CPU 汇编器 + GPU 汇编器 |
| L8 | 虚拟机 | JVM/CLR + GPU 运行时(CUDA/OpenCL) |
| L9 | 高级语言 | C/C++/Python + CUDA/OpenCL/SYCL |
| L10 | 编译器 | GCC/LLVM + NVCC/LLVM GPU 后端 |
| L11 | 操作系统 | OS + GPU 驱动 + 命令调度 |
| L12 | 系统库 / 运行时 | libc + cuDNN/cuBLAS/ROCm |
| L13 | 容器 / 编排 | Docker + NVIDIA Container Toolkit + K8s Device Plugin |
| L14 | 云原生应用 | 分布式训练/推理、GPU 池化、MIG/vGPU |
💡 从 L0 到 L3,GPU 和 CPU 共享相同的物理基础;从 L4 开始,两者分道扬镳——CPU 走向复杂的乱序执行和分支预测,GPU 走向 SIMT 和海量并行。到了 L14,两者在云原生层面重新汇合。