Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 系统与高性能 / Systems & Performance

计算系统 / Computing Systems

1. 计算系统:计算机如何执行与加速程序

2. 从 C++ 源码到 CPU 执行

3. CPU 流水线、乱序执行与分支预测

4. Cache、一致性、伪共享与 NUMA

5. GPU、SM、Warp 与显存

6. 计算执行模型:程序怎样映射到机器

7. SIMD 与编译器向量化

8. C++ 多线程与 OpenMP

9. CUDA 平台与编程模型

10. CUDA Kernel、内存与性能

11. CPU-GPU 异构流水线

12. MPI 与分布式并行

13. 并行算法模式

14. 性能模型与工具

15. 递进学习项目:从单线程到集群

历史完整正文 / Original Deep Dives

1. 历史完整正文:统一前文章逐篇保留

原体系结构与硬件 / Original Architecture

1. 硬件编程与高性能计算:一张可走通的学习地图 / A Practical Learning Map for Hardware Programming and HPC

2. 计算机体系结构:CPU、内存与 GPU / Computer Architecture: CPUs, Memory, and GPUs

3. 计算机架构基础——为什么 GPU 比 CPU 更快 / Computer Architecture Fundamentals: Why GPUs Outperform CPUs

4. 并行计算理论——30 天训练能优化到多快? / Parallel Computing Theory and the Limits of Training Acceleration

5. GPU 架构深入——上万个核心如何分工协作 / GPU Architecture and Massive Parallel Execution

6. CUDA 编程模型——把矩阵乘法映射到 GPU / The CUDA Programming Model for Mapping Matrix Multiplication to GPUs

7. CUDA 内存管理——百亿参数如何装进显存 / CUDA Memory Management for Large Models

8. CUDA 性能优化——从 30 天缩短到 10 天 / CUDA Performance Optimization

9. CPU 并行编程——OpenMP 与 SIMD 向量化 / CPU Parallel Programming with OpenMP and SIMD

10. HPC 集群与 MPI——多节点分布式训练 / HPC Clusters and MPI for Distributed Training

11. 异构计算——CPU 与 GPU 如何协同工作 / Heterogeneous Computing with CPUs and GPUs

12. 深度学习训练优化实战——从 30 天到 3 天 / Deep Learning Training Optimization from Thirty Days to Three

13. 性能分析工具——找到真正的瓶颈 / Performance Analysis Tools for Finding Real Bottlenecks

14. NPU 全景——昇腾/寒武纪/TPU/苹果生态 / The NPU Landscape: Ascend, Cambricon, TPU, and Apple

15. 未来趋势——2030 年的计算机会是什么形态 / Future Computing Trends Toward 2030

16. 硬件与高性能计算:从“程序为什么慢”开始 / Hardware and HPC Starting from Why Programs Are Slow

原并行计算 / Original Parallel Computing

1. 并行计算:从 SIMD 到 MPI / Parallel Computing from SIMD to MPI

2. 并行计算全景:从晶体管、CPU、GPU 到计算集群 / Parallel Computing from Transistors, CPUs, and GPUs to Clusters

3. 并行计算基础:任务分解、加速比与可扩展性 / Parallel Computing Fundamentals: Decomposition, Speedup, and Scalability

4. 处理器体系结构:从指令流水线到多核芯片 / Processor Architecture from Instruction Pipelines to Multicore Chips

5. CPU 并行:多线程、SIMD、Cache 一致性与 NUMA / CPU Parallelism with Threads, SIMD, Cache Coherence, and NUMA

6. 内存层次:Cache、带宽、局部性与一致性 / Memory Hierarchies, Bandwidth, Locality, and Coherence

7. GPU 体系结构:SIMT、Warp、SM 与吞吐优先设计 / GPU Architecture with SIMT, Warps, and Streaming Multiprocessors

8. CUDA 编程模型:Thread、Block、Grid 与内存协作 / CUDA Threads, Blocks, Grids, and Cooperative Memory Access

9. 并行算法模式:Map、Reduce、Scan、Stencil 与任务图 / Parallel Patterns: Map, Reduce, Scan, Stencil, and Task Graphs

10. 异构计算:CPU、GPU、NPU 如何协同工作 / Heterogeneous Computing with CPUs, GPUs, and NPUs

11. 分布式并行:MPI、集合通信、RDMA 与多机多卡 / Distributed Parallelism with MPI, Collective Communication, and RDMA

12. 性能工程:测量、Roofline、瓶颈定位与优化闭环 / Performance Engineering with Measurement, Roofline, and Bottleneck Analysis

13. 并行计算实战:AI、CAE、图像与科学计算 / Parallel Computing for AI, CAE, Imaging, and Scientific Computing

14. 并行计算实践路线:从单核优化到多机多卡 / A Parallel Computing Project Path from Single-Core to Multi-Node GPUs

本页目录

处理器体系结构:从指令流水线到多核芯片 / Processor Architecture from Instruction Pipelines to Multicore Chips ​

📅 创建时间:2026-07-20 🏷️ 标签:#CPU #体系结构 #流水线 #乱序执行 #多核 📚 前置知识:[[01-parallel-foundations]] 📚 相关知识:[[/02-systems-and-performance/02-computer-architecture-and-hardware/01-computer-architecture-basics]]


1. 一条指令怎样执行 ​

处理器执行指令通常可以抽象为:

text
取指 → 译码 → 读取操作数 → 执行 → 访存 → 写回
1

如果每条指令必须完整结束后才能开始下一条,大量硬件会处于空闲。因此处理器使用流水线,让多条指令处于不同阶段。

text
周期 1:指令 A 取指
周期 2:指令 A 译码,指令 B 取指
周期 3:指令 A 执行,指令 B 译码,指令 C 取指
1
2
3

流水线提高吞吐,但不会等比例降低单条指令的延迟。


2. 指令级并行 ​

现代 CPU 会在单个核心内部寻找互不依赖的指令并行执行。

超标量 ​

一个周期可以发射多条指令到不同执行单元,例如整数单元、浮点单元和加载存储单元。

乱序执行 ​

cpp
a = load(slow_address); // Cache Miss
b = x + y;              // 与 a 无关
c = m * n;              // 与 a 无关
1
2
3

CPU 不必等待第一条加载结束,可以先执行后两条指令,最后按程序顺序提交结果。

分支预测 ​

遇到 if 时,CPU 会预测执行路径并提前工作。预测错误后,错误路径的流水线结果必须丢弃。

这也是规则循环通常比大量不可预测分支更容易获得高性能的原因。


3. 从提高频率转向增加核心 ​

早期处理器主要依赖提高时钟频率,但功耗近似受到频率和电压的共同影响:

text
动态功耗 ≈ 电容 × 电压² × 频率
1

频率继续增长带来严重发热和能耗问题,行业转向:

  • 多核 CPU
  • 更宽的 SIMD
  • 专用加速器
  • 大规模 GPU

这意味着软件必须显式或隐式地利用并行,才能继续获得性能增长。


4. 核心、硬件线程与逻辑处理器 ​

物理核心 ​

拥有独立的执行资源,可以真正与其他核心并行。

同时多线程 SMT ​

一个物理核心维护多个硬件线程上下文。当一个线程等待数据时,另一个线程使用部分空闲执行资源。

text
8 核 16 线程 ≠ 16 个完整核心
1

SMT 的收益依赖工作负载。两个都占满相同执行单元的线程可能互相竞争。


5. CPU、GPU 与专用加速器 ​

特性CPUGPUNPU/TPU
核心数量少量复杂核心大量较简单执行单元大量矩阵/张量单元
控制能力强中等较弱或领域限定
单线程延迟低较高依任务而定
吞吐能力中等高特定算子极高
适合任务操作系统、业务逻辑、复杂分支图形、矩阵、规则数据并行AI 推理与训练

CPU 花费大量晶体管降低单线程延迟,GPU 把更多面积用于执行单元以提升总吞吐。


6. 并行层次 ​

一台现代计算机中同时存在多层并行:

text
多节点并行
└─ 单节点多处理器/多 GPU
   └─ 多核并行
      └─ SMT 硬件线程
         └─ SIMD 向量并行
            └─ 流水线与乱序执行
1
2
3
4
5
6

高性能程序通常不是只选择其中一种,而是组合多层并行。例如 MPI 跨节点、OpenMP 跨 CPU 核、SIMD 处理核心内部的数据。


7. 峰值性能不等于应用性能 ​

理论浮点峰值可以粗略表示为:

text
峰值 FLOPS = 核心数 × 频率 × 每周期浮点操作数
1

但应用还受到以下因素限制:

  • 数据是否在 Cache 中
  • 指令是否能够并行发射
  • 分支预测是否准确
  • SIMD 通道是否充分利用
  • 内存带宽是否足够
  • 多核之间是否频繁同步

因此硬件参数是上限,不是性能承诺。


历史处理器阅读补充 ​

本页保留合并前的处理器架构说明。

当前文章增加了前端、乱序、端口、SMT、NUMA、功耗和工具流程。

ISA 与微架构 ​

ISA 是软件可见契约。 微架构是具体实现。

相同 ISA 可以有不同流水线、Cache 和功耗。

前端 ​

前端负责:

  • Fetch;
  • Branch Prediction;
  • Decode;
  • uop Cache;
  • 指令供给。

I-Cache、iTLB 和预测错误会限制后端。

乱序 ​

乱序执行调度独立操作,隐藏部分延迟。

真实数据依赖仍然必须等待。

最终退休保持架构可观察顺序。

执行单元 ​

不同指令使用整数、浮点、向量、Load/Store 和地址端口。

热点可能受吞吐、延迟或端口竞争限制。

分支 ​

难预测分支会浪费错误路径工作。

无分支改写可能增加指令和内存,需要测量。

SIMD ​

SIMD 需要独立迭代、适合布局和可向量化操作。

更宽向量不自动线性加速。

Cache ​

Cache 以 Line 传输。

时间和空间局部性影响命中。

工作集超过容量后性能可能出现拐点。

一致性 ​

共享写产生 Cache Line 所有权转移。

False Sharing 会让不同变量互相干扰。

TLB ​

TLB 缓存页表转换。

大工作集与随机访问可能增加 TLB Miss。

Huge Page 有收益和部署代价。

SMT ​

SMT 共享核心资源。

一个线程等待时可能利用空闲槽位,也可能和另一个线程竞争。

NUMA ​

本地与远端内存延迟不同。

首次触碰、亲和性和分片影响数据位置。

功耗 ​

频率随核心、温度、向量指令和功耗变化。

短时 Boost 不能代表稳态任务。

虚拟化边界 ​

虚拟机可能限制 PMU、NUMA 和频率可见性。

容器配额会增加 Runnable 等待。

指标解释 ​

IPC 低可能来自:

  • 前端;
  • 分支;
  • 内存;
  • 依赖;
  • 端口。

IPC 高也不证明端到端快。

Profile 顺序 ​

text
benchmark
  -> hotspot
  -> pipeline category
  -> source and assembly
  -> one experiment
  -> repeat
1
2
3
4
5
6

工具 ​

  • WPA CPU Sampled/Precise;
  • VTune Hotspots;
  • VTune Microarchitecture;
  • VTune Memory Access;
  • Linux Perf;
  • 编译器向量化报告;
  • 汇编分析。

实验矩阵 ​

  • 分支规律;
  • 依赖链;
  • SIMD;
  • 工作集;
  • False Sharing;
  • SMT;
  • NUMA;
  • 亲和性;
  • 频率;
  • 不同编译器。

历史参数边界 ​

处理器事件和阈值随微架构变化。

旧型号的 Cache、端口和计数器不能直接外推。

引用历史数字时保留 CPU、编译器、输入和命令。

当前课程映射 ​

当前版本补充:

  • 前端供给;
  • 乱序和端口;
  • Cache 一致性;
  • SMT/NUMA;
  • 功耗与虚拟化;
  • 工具与实验;
  • 完成标准。

阅读完成标准 ​

读者应能:

  • 区分 ISA 和微架构;
  • 解释前端与后端;
  • 找依赖和分支成本;
  • 判断 SIMD;
  • 解释 Cache/TLB;
  • 评估 SMT/NUMA;
  • 选择 Profile 工具;
  • 限定历史结论。

归档复现实验记录 ​

复现旧处理器实验时记录:

  • 来源提交;
  • CPU 型号;
  • 微码;
  • 操作系统;
  • 编译器;
  • 优化选项;
  • 输入;
  • 线程亲和性;
  • 电源计划;
  • 预热;
  • 样本;
  • PMU 事件;
  • 原始结果;
  • 正确性;
  • 当前差异。

工具无法提供相同事件时,使用当前等价指标并明确映射限制。

核心总结 ​

  • 单核内部已经包含流水线、乱序执行和 SIMD 等并行机制。
  • 多核是功耗墙之后性能增长的主要方向。
  • CPU 追求低延迟和通用性,GPU 追求高吞吐。
  • 真正的并行程序往往同时利用多个体系结构层次。

下一篇:[[03-cpu-parallelism]]

最后更新于:

Pager
上一篇3. 并行计算基础:任务分解、加速比与可扩展性 / Parallel Computing Fundamentals: Decomposition, Speedup, and Scalability
下一篇5. CPU 并行:多线程、SIMD、Cache 一致性与 NUMA / CPU Parallelism with Threads, SIMD, Cache Coherence, and NUMA

持续记录,持续成长

Copyright © Tidenflow