第 9 章 并行体系结构 —— 如果要同时算一万个 a+b,怎么更快
a+b 在这一章:单个 a+b 已经会跑了。但现实里要处理海量数据(一万个加法、一段视频、一次大模型推理)。靠不停提主频已经撞墙(功耗墙、散热),于是现代机器走”并行”路线:多核、流水、超线程。这一章是”如何变快”的总纲。
9.1 体系结构中的并行性
【知识点·为什么转向并行(摩尔定律撞墙)】
- 🎓 集成度仍按摩尔定律增长,但提主频遇到功耗墙(功耗 ∝ 频率 × 电压²,频率翻倍→电压也要升→功耗翻 4-8 倍→散不掉热)、互连延迟、存储墙、设计复杂度等物理限制,故转向”尽可能多的并行处理”。
- 🌱 以前靠”让一个工人跑更快”(提主频)来提速,现在跑不动了(太热太费电),改成”多请几个工人一起干”(并行)。
【知识点·并行性的两种含义、三条途径】
- 🎓 含义:同时性(同一时刻发生)、并发性(同一时间间隔发生)。途径:时间重叠(流水)、资源重复(多套部件)、资源共享(软件轮流用)。
- 🌱 并行=要么真的同时干,要么这段时间里交替着干。实现办法:流水线(错开时间)、堆硬件(多套)、分时复用(软件排班)。
【知识点·并行性等级】
- 🎓 从数据看:位串字串→字串位并→字并位串→全并行;从程序看:指令内部并行→指令级并行→任务/过程级→作业/程序级。
- 🌱 从”一位一位算”到”整批数据一起算”;从”一条指令内部并行”到”多个程序并行”,级别越来越高。
【知识点·多处理器耦合度 & Flynn 回顾】
- 🎓 紧耦合(共享主存、传输率高)vs 松耦合(通过通道/网络连接);Flynn 四类:SISD(Single Instruction Single Data,单指令单数据流——普通单处理器)、SIMD(Single Instruction Multiple Data,单指令多数据流——向量机/GPU,一条指令同时处理多个数据)、MISD(Multiple Instruction Single Data,多指令单数据流——理论上不存在)、MIMD(Multiple Instruction Multiple Data,多指令多数据流——多处理器/机群,最常见的并行形式)。
- 🌱 紧耦合=同一屋檐下共用一个大仓库的工人;松耦合=各自独立、靠网络联系的团队。
9.2 多线程与超线程
【知识点·超线程 / 同时多线程 SMT】
- 🎓 引入硬件线程后,并行从”指令级”扩展到”线程级”;SMT(Simultaneous Multi-Threading,同时多线程——让一个物理核在同一时钟周期内同时处理多个线程的技术)结合超标量+细粒度多线程,一个时钟周期可发射不同线程的多条指令,减少”垂直浪费(资源冲突)“和”水平浪费(指令相关)“;超线程是Intel对SMT的实现——把1个物理核模拟成2个逻辑核。
- 🌱 超线程=让一个核”分身”成俩,趁一个任务卡住(等数据)的空档去干另一个任务,把闲置的流水线段填满。
9.3 多处理器
【知识点·多处理器分类 & SMP】
- 🎓 PVP(Parallel Vector Processor,并行向量处理器——专门处理向量运算的高性能并行机)、SMP(Symmetric Multi-Processing,对称多处理器,多个同功能处理器共享同一主存和I/O、由一个OS统管)、MPP(Massively Parallel Processing,大规模并行处理机——成百上千个处理器并行)、DSM(Distributed Shared Memory,分布共享存储——物理上分散但逻辑上统一编址的内存系统)。
- 🌱 SMP=几个一模一样的CPU平等地共用同一套内存和外设,一个操作系统管全场(你家台式机的多核就接近这个)。
9.4 多核处理器
【知识点·多核优势”三高三低”】
- 🎓 高并行性、高通信效率、高资源利用率;低功耗、低设计复杂度、较低成本。
- 🌱 把多个核塞进一块芯片:能同时干更多活、核之间近所以沟通快、共享资源、还不用拼命提主频所以省电。
【知识点·多核组织 & 关键技术】
- 🎓 同构多核(核相同对等)vs 异构多核(主核+协核,如CPU+GPU);对称SMP多核 vs 非对称AMP(Asymmetric Multi-Processing,非对称多处理——各核分工不同,不完全等价)多核;关键技术:cache组织(共享/私有)、cache一致性(多核各自cache同一数据要保持一致,用监听协议/目录协议)、核间互连(总线/交叉开关/片上网络)、低功耗、并行软件设计。
- 🌱 同构=几个一样的核;异构=一个大核带几个专用小核(像CPU配GPU)。多核最头疼的是”cache一致性”:几个核各自抄了同一份数据,一个改了得通知其他人,否则就乱了。
【知识点·Cache 一致性】
- 🎓 不一致来源:可写数据共享、I/O活动、核间线程迁移;维护:软件预防、硬件发现解决(监听协议、目录协议)。
- 🌱 几个人各抄了同一份通讯录,张三改了号码,得喊一嗓子让大家更新,不然有人还按旧号打——这就是cache一致性要解决的。
9.5 多核实例(了解)
- ARM Cortex-A15 MPCore、Intel 酷睿(环形总线)、至强融核(众核)、龙芯多核——把前面技术综合落地的真实产品。
第 10 章 现代计算机系统结构(了解,考试占比低)
【知识点·安腾 IA-64 / EPIC】
- 🎓 安腾(Intel与HP联合设计的64位服务器处理器,采用 IA-64(Intel Architecture 64,英特尔64位指令集架构)指令集)采用 EPIC(Explicitly Parallel Instruction Computing,显式并行指令计算——由编译器而非硬件决定哪些指令可以并行执行),由编译器显式指出可并行的指令,配合大量寄存器和谓词执行(每条指令带一个条件位:条件为真才真正执行结果写回,为假则”空跑”不写回——用来消除 if/else 分支跳转,把两个分支都发射,只让该走的那条生效),挖掘指令级并行。
- 🌱 安腾的思路是”让编译器提前把能并行的活打好包”,硬件照着并行做。属于把前9章(指令、流水、并行、存储)综合运用的高级实例。
第10章多为实例与展望,理解前9章后顺带浏览即可,不是考试重点。
🧪 费曼检验区(合上笔记,用自己的话说)
规则:合上笔记,试着说给完全不懂的人听。卡壳了就说明没真懂,回头重读。
📌 老师划重点
- 第10章不考
- 第9章Flynn分类是选择/判断常客
📊 教材核心考点
- Flynn分类的四种类型(SISD/SIMD/MISD/MIMD)分别是什么意思?哪一种实际不存在?
- 并行性的两种含义(同时性和并发性)有什么区别?
- 超线程/SMT 是什么?它和真正的多核有什么区别?
📝 章节小测
本章考试占比低,主要出选择/判断题。
【题 1 · 判断】 “提高 CPU 主频是提升性能最有效的手段,没有物理上的限制。” 对还是错?
【题 2 · 简答】 什么是 Cache 一致性问题?为什么多核处理器必须解决它?
【题 3 · 选择】 Intel 超线程技术的本质是: A. 把一个物理核变成两个物理核 B. 把一个物理核模拟成两个逻辑核,利用流水线空闲段 C. 把时钟频率翻倍 D. 增加 L1 Cache 容量
参考答案(点击展开)
题 1:错。提主频遇到功耗墙(功耗 ∝ 频率 × 电压²,频率翻倍→功耗翻4~8倍→散热极限),还有互连延迟、存储墙等限制。现代 CPU 转向多核并行提升性能。
题 2:多核 CPU 中每个核有自己的私有 Cache,当多个核缓存了同一内存地址的数据时,其中一个核修改了该数据,其他核的 Cache 副本就过时了(不一致)。如果不解决,程序会读到旧数据,导致计算错误。解决方法包括监听协议(每个核监听总线上的写操作,发现自己缓存的地址被改就更新/无效化)和目录协议(用中央目录记录每块数据在哪些核的 Cache 里)。
题 3:B。超线程 = 同时多线程(SMT)的 Intel 实现,用一套物理核的执行资源模拟出两个逻辑核,趁一个线程等待(如 Cache miss)时让另一个线程使用空闲的流水线段,提高资源利用率。
🏁 全书合龙:a+b 的”一生”完整回放
把十章串成一个连贯故事,这就是你脑子里该有的整体画面:
你写下 a+b.c 【第1章: 高级语言级, 冯诺依曼机器】
│ gcc 编译 / 汇编器汇编 【第4章: 翻译成机器指令 LOAD/ADD/STORE】
▼
机器指令(补码表示的数 + 01指令) 【第2章: a,b存成补码】
│ 装入主存, 必要时虚存映射 【第3章: 住进内存, Cache加速, 虚存扩容】
▼
┌──────────────── CPU 循环 ────────────────┐
│ 取指: 按PC取指令入IR, PC+1 │ 【第5章: 指令周期-取指】
│ 译码: 认出这是ADD │
│ 执行: ALU用补码加法算a+b, 防溢出 │ 【第2章+第5章: 运算器执行】
│ ↑ 取a/b、回写, 经总线传输, 仲裁定时 │ 【第6章: 总线】
└───────────────────────────────────────────┘
│ scanf 输入(键盘) / printf 输出(屏幕) 【第7章: 外设硬件】
│ 慢外设用 中断/DMA 与CPU高效配合 【第8章: I/O方式】
▼
屏幕显示 a+b 的结果 ✅
│ 想同时算一万个? → 多核/流水/超线程 【第9章: 并行】
▼
现代真实机器(酷睿/安腾)把这一切综合实现 【第10章: 实例】
🎓 一句话总纲:计算机组成原理 = “存储程序 + 程序控制”思想下,五大部件如何用合适的数据表示、运算方法、存储层次、指令系统、控制时序、总线互连和 I/O 机制,协同把内存里的指令自动执行完。
🌱 一句话大白话:你写的每一行代码,最后都变成内存里一堆开关(0/1),CPU 像个超守纪律的工头,照着这些开关一拍一拍把活干完,再把结果给你看——这门课就是把这台”自动工厂”每个车间拆开讲清楚。
看懂这张回放图,你就拥有了所谓的”整机概念”——这正是这门课最想给你的东西。接下来去做《03_模拟卷》,检验一下吧!