YCVisionLog
返回笔记
Computer Knowledge2026-10-1130 minYygz31446 人浏览已发布

计算机体系结构学习指南

用于自己学习计算机体系结构的指南

Notes

适用教材:《计算机体系结构:量化研究方法(第6版)》 / Computer Architecture: A Quantitative Approach, 6th Edition
适用对象:已经学过或正在学习《计算机组成原理》《操作系统》《计算机网络》等课程,希望系统掌握现代计算机体系结构的本科生
建议周期:一个完整学期(约 16 周)
学习目标:不仅“知道架构是什么”,还能够解释、计算、比较、实验和设计。


目录

  1. 这门课到底在学什么
  2. 学完后应该达到什么水平
  3. 学习前需要哪些基础
  4. 整门课的知识地图
  5. 如何正确使用《量化研究方法》第6版
  6. 全课程统一的思维方法
  7. 各章节详细学习路线
  8. 必须掌握的核心公式体系
  9. 典型题型与做题方法
  10. 实验与实践路线
  11. 16 周详细学习计划
  12. 笔记、复习与知识管理方法
  13. 推荐学习资源
  14. 期中、期末考试复习方法
  15. 最终能力验收标准
  16. 与后续课程和科研方向的衔接
  17. 一份可以长期执行的学习清单

1. 这门课到底在学什么

很多同学第一次接触“计算机体系结构”时,会感觉它与《计算机组成原理》重复:都讲 CPU、流水线、Cache、内存、多核。实际上,两门课的关注点并不相同。

《计算机组成原理》主要回答:

  • CPU 由哪些模块组成?
  • 一条指令如何执行?
  • ALU、寄存器、存储器、控制器分别做什么?
  • Cache、主存、虚拟存储器是什么?
  • 流水线如何工作?

而《计算机体系结构》更进一步回答:

  • 为什么现代处理器要设计成这样?
  • 一个设计到底比另一个设计快多少?
  • 提高时钟频率、增加 Cache、增加核心、使用 GPU,哪种方式更有效?
  • 性能提升的瓶颈在哪里?
  • 为获得性能,需要付出多少面积、能耗、复杂度、成本?
  • 如何用实验和量化数据证明一个架构设计是有效的?

因此,这门课最核心的一句话是:

在性能、成本、功耗、面积、可靠性和复杂度等约束下,通过量化分析研究计算机系统的设计取舍。

这也是《A Quantitative Approach》书名中“Quantitative”的真正含义。

学习这门课时,不应满足于“背定义”,而应该逐渐形成下面的思维链:

TEXT
出现性能问题
    ↓
定位瓶颈
    ↓
提出体系结构优化方法
    ↓
分析它改变了哪些性能参数
    ↓
量化 Speedup
    ↓
分析代价与副作用
    ↓
比较不同设计
    ↓
做出架构选择 

2. 学完后应该达到什么水平

建议把学习目标分成 5 个层级。

Level 1:概念识别

你能够看到以下术语时,知道它大致是什么:

  • ISA
  • CPI / IPC
  • Pipeline
  • Data Hazard
  • Control Hazard
  • Cache
  • Miss Rate
  • Branch Prediction
  • Superscalar
  • Dynamic Scheduling
  • Tomasulo
  • Register Renaming
  • ROB
  • Speculation
  • SIMD
  • Vector Processor
  • GPU / SIMT
  • Multicore
  • Cache Coherence
  • Memory Consistency

这一层只是“知道”。

只达到这一层,不算真正学会计算机体系结构。


Level 2:原理解释

你能够回答:

  • 为什么要使用流水线?
  • 为什么流水线越深,分支预测越重要?
  • 为什么 Cache 能提升性能?
  • 为什么大 Cache 不一定更快?
  • 为什么需要寄存器重命名?
  • Tomasulo 为什么能够实现动态调度?
  • 为什么 GPU 适合深度学习?
  • 多核为什么会产生 Cache 一致性问题?

如果你可以脱离教材,用自己的语言讲清楚这些问题,说明已经进入第二层。


Level 3:量化分析

能够熟练完成:

  • CPU 执行时间计算
  • CPI 分解
  • Amdahl 定律
  • Speedup 计算
  • AMAT 计算
  • Cache Miss 对 CPI 的影响
  • Branch Misprediction 对 CPI 的影响
  • Pipeline Stall 分析
  • 多种架构方案性能比较
  • 并行计算加速比分析

例如看到:

CPU Time=IC×CPI×Clock Cycle TimeCPU\ Time = IC \times CPI \times Clock\ Cycle\ Time

你应该可以立即分析:

TEXT
某项优化到底改变了:

IC?
CPI?
Clock Cycle Time?
还是同时改变多个因素? 

达到这一层,基本可以应对课程考试的大多数计算题。


Level 4:实验验证

能够使用:

  • Ripes
  • RISC-V 汇编
  • Linux perf
  • gem5

完成简单体系结构实验,例如:

TEXT
Cache Size:32 KB → 64 KB → 128 KB

观察:
Miss Rate
IPC
Execution Time 

然后解释:

为什么性能发生了这样的变化?

达到这一层,你就不再只是“学教材”,而是在做真正的体系结构分析。


Level 5:设计与研究

你能够面对一个问题,例如:

某程序 Cache Miss 很高,应该如何优化?

提出:

TEXT
Baseline
    ↓
瓶颈分析
    ↓
方案 A
方案 B
方案 C
    ↓
理论预测
    ↓
模拟实验
    ↓
性能比较
    ↓
Trade-off 分析
    ↓
结论 

这已经接近计算机体系结构课程项目或科研工作的基本模式。


3. 学习前需要哪些基础

《量化研究方法》第 6 版本身是一本偏高阶教材,所以最好先检查以下基础。

3.1 数字逻辑基础

至少理解:

  • 与、或、非
  • 组合逻辑
  • 时序逻辑
  • 寄存器
  • 时钟
  • MUX
  • ALU
  • 有限状态机

不要求重新学习整本《数字电路》,但必须知道:

CPU 本质上是大量组合逻辑与时序逻辑构成的状态机器。


3.2 计算机组成原理

重点复习:

CPU

  • 数据通路
  • 控制器
  • 单周期 CPU
  • 多周期 CPU
  • 流水线 CPU

存储系统

  • Cache
  • 主存
  • 虚拟地址
  • 页表
  • TLB

指令系统

  • RISC / CISC
  • 指令格式
  • 寄存器
  • Load / Store
  • Branch

如果这些内容比较薄弱,建议先用 Berkeley CS61C 的公开笔记补基础。


3.3 C 与汇编

至少要能理解:

C
for (int i = 0; i < N; i++) {
    sum += a[i];
} 

如何大致对应为:

ASM
load
add
addi
branch 

不要求一开始就熟练写汇编,但必须理解:

TEXT
高级语言
    ↓
编译器
    ↓
汇编指令
    ↓
机器指令
    ↓
微体系结构执行 

体系结构实际上处于“软件与硬件的交界处”。


3.4 基础概率和数学

通常不需要很高深的数学,但应熟悉:

  • 百分比
  • 加权平均
  • 概率
  • 期望
  • 对数
  • 指数
  • 比率

体系结构中的很多公式本质上都是:

加权平均 + 概率 + 性能比例。


4. 整门课的知识地图

建议先建立如下总图:

TEXT
                         计算机体系结构
                               │
             ┌─────────────────┴─────────────────┐
             │                                   │
         如何评价?                           如何优化?
             │                                   │
   Performance / Cost / Power                    │
             │                                   │
          Chapter 1                              │
                                                 │
                         ┌───────────────────────┼───────────────────────┐
                         │                       │                       │
                     Memory                  Processor              Parallelism
                         │                       │                       │
                     Chapter 2               Chapter 3             Ch.4 / Ch.5
                         │                       │                       │
                      Cache                  Pipeline               DLP / TLP
                         │                       │                       │
                   Memory Wall               ILP                SIMD / GPU / Multicore
                         │                       │
                      AMAT                 Branch Prediction
                                                 │
                                       Dynamic Scheduling
                                                 │
                                          Tomasulo / ROB
                                                 │
                                           Out-of-Order

                    更大规模系统                    专用架构
                         │                           │
                    Chapter 6                    Chapter 7
                         │                           │
                 Warehouse-Scale                DSA / Accelerator
                    Computers 

另外需要记住现代体系结构实际上一直在寻找不同层次的“并行”:

并行形式全称典型技术
ILPInstruction-Level ParallelismPipeline、Superscalar、OoO
DLPData-Level ParallelismSIMD、Vector、GPU
TLPThread-Level ParallelismSMT、Multicore
RLPRequest-Level ParallelismServer、Data Center

这一张表非常重要。

以后学习任何新架构,都可以先问:

它主要在利用哪一种 Parallelism?


5. 如何正确使用《量化研究方法》第6版

5.1 不要从第一页开始逐字硬啃

这本书信息密度很高,包含大量:

  • 工业处理器实例
  • 历史数据
  • 性能表格
  • 研究论文结果
  • 架构对比
  • 复杂设计细节

本科阶段如果试图“一字不漏全部看完”,投入产出比通常不高。

建议采取三遍阅读法。


第一遍:建立结构

目标不是“看懂所有内容”,而是回答:

  • 这一章解决什么问题?
  • 核心概念有哪些?
  • 有哪些关键图?
  • 有哪些关键公式?

只需要 20~40 分钟快速浏览。


第二遍:学习核心机制

重点阅读:

  • 核心概念
  • 关键流程
  • 公式推导
  • 教材案例
  • 课堂对应内容

此时做自己的笔记。


第三遍:做题后回看

做题时发现:

  • 某个公式不会用
  • 某种机制理解不清
  • 某个参数含义不清

再精准返回教材。

这种方式比从头到尾重复阅读高效得多。


5.2 建议阅读顺序

对于本科生,建议:

TEXT
Appendix A:ISA
        ↓
Appendix B:Memory Hierarchy Basics
        ↓
Appendix C:Pipeline Basics
        ↓
Chapter 1:Quantitative Design
        ↓
Chapter 2:Memory Hierarchy
        ↓
Chapter 3:Instruction-Level Parallelism
        ↓
Chapter 4:Data-Level Parallelism
        ↓
Chapter 5:Thread-Level Parallelism
        ↓
Chapter 6:Warehouse-Scale Computers
        ↓
Chapter 7:Domain-Specific Architectures 

如果你的课程老师有自己的教学顺序,则以课程安排为主,但建议始终保留这条知识主线。


6. 全课程统一的思维方法

以后学习每一种技术,都统一问下面五个问题。

Question 1:Problem

它到底解决什么问题?

例如 Cache:

TEXT
CPU 速度增长很快
DRAM 延迟相对很高
→ Memory Wall 

Question 2:Idea

核心思想是什么?

Cache:

TEXT
利用 Locality
把最近可能再次使用的数据放到更快的存储器 

Question 3:Implementation

硬件如何实现?

例如 Cache:

  • Tag
  • Index
  • Offset
  • Replacement
  • Write Policy

Question 4:Performance

它到底提高了什么?

Cache:

TEXT
Miss Rate ↓
Miss Penalty ↓
AMAT ↓
Memory Stall ↓
CPI ↓
CPU Time ↓ 

Question 5:Trade-off

代价是什么?

例如更大的 Cache:

TEXT
Capacity ↑
Miss Rate 可能 ↓

但:
Area ↑
Power ↑
Hit Time 可能 ↑
Cost ↑ 

任何知识点都按这五个问题学习,你会逐渐形成真正的体系结构思维。


7. 各章节详细学习路线

7.1 Appendix A:Instruction Set Architecture

学习目标

理解软件看到的“计算机”是什么。

重点理解:

TEXT
ISA
=
软件与硬件之间的接口 

应掌握:

  • 寄存器
  • 指令格式
  • 操作码
  • Load / Store
  • Arithmetic
  • Branch
  • Procedure Call
  • Addressing Mode

建议结合 RISC-V 学习。

达标标准

看到:

C
for (int i = 0; i < n; i++)
    sum += a[i]; 

能够说明它大概会产生:

TEXT
Load
Add
Increment
Compare
Branch 

即可。


7.2 Appendix B:Memory Hierarchy Basics

先理解:

TEXT
Register
   ↓
L1
   ↓
L2
   ↓
L3
   ↓
DRAM
   ↓
SSD 

越靠上:

TEXT
速度更快
容量更小
单位成本更高 

重点掌握:

  • Temporal Locality
  • Spatial Locality
  • Cache Block
  • Hit
  • Miss
  • Direct Mapped
  • Set Associative
  • Fully Associative
  • Write Through
  • Write Back
  • Write Allocate

必须会地址划分:

TEXT
Address
│
├─ Tag
├─ Index
└─ Block Offset 

达标标准

给你:

TEXT
Cache Size
Block Size
Associativity
Address Width 

能够独立求出:

  • Set 数量
  • Index bit
  • Offset bit
  • Tag bit

7.3 Appendix C:Pipelining Basics

这是 Chapter 3 的基础。

经典五级流水线:

TEXT
IF → ID → EX → MEM → WB 

必须掌握三类 Hazard:

Structural Hazard

资源冲突。

Data Hazard

重点:

  • RAW
  • WAR
  • WAW

其中最重要的理解是:

RAW 是真正的数据依赖,而 WAR/WAW 很多时候属于名字依赖,可以通过寄存器重命名消除。

Control Hazard

由 Branch / Jump 等造成。

必须理解:

  • Stall
  • Forwarding
  • Pipeline Flush
  • Branch Prediction

达标标准

给 5~10 条指令,能够画出基本 Pipeline Timing Diagram,并指出:

  • 哪些地方发生 Data Hazard
  • 哪些可以 Forwarding
  • 哪些必须 Stall

7.4 Chapter 1:Fundamentals of Quantitative Design and Analysis

这是整门课的总纲。

核心 1:Performance

最重要公式:

Performance=1Execution TimePerformance = \frac{1}{Execution\ Time}

因此:

Speedup=ToldTnewSpeedup = \frac{T_{old}}{T_{new}}

核心 2:CPU Performance Equation

CPU Time=IC×CPI×Clock Cycle TimeCPU\ Time = IC \times CPI \times Clock\ Cycle\ Time

也可以写成:

CPU Time=IC×CPIClock RateCPU\ Time = \frac{IC \times CPI}{Clock\ Rate}

其中:

  • IC:Instruction Count
  • CPI:Cycles Per Instruction
  • Clock Cycle Time:时钟周期

学习任何优化时,问:

TEXT
IC 变了吗?
CPI 变了吗?
Clock Rate 变了吗? 

核心 3:CPI 分解

如果程序包含多类指令:

CPI=∑iCPIi×FrequencyiCPI = \sum_i CPI_i \times Frequency_i

例如:

指令比例CPI
ALU50%1
Load30%2
Store10%2
Branch10%3

则:

CPI=0.5×1+0.3×2+0.1×2+0.1×3CPI=0.5\times1+0.3\times2+0.1\times2+0.1\times3

核心 4:Amdahl's Law

必须熟练掌握:

Speedupoverall=1(1−F)+FSSpeedup_{overall} = \frac{1} {(1-F)+\frac{F}{S}}

其中:

  • FF:可优化部分占比
  • SS:该部分加速倍数

真正重要的不是公式,而是思想:

应该优先优化占总执行时间最大的部分。


核心 5:Power / Energy

现代体系结构不能只追求性能。

应逐渐建立:

TEXT
Performance
Power
Energy
Area
Cost
Complexity 

之间的权衡意识。

达标标准

完成 Chapter 1 后,应能面对任何优化问题先写:

TEXT
Baseline
→ 哪个参数变化
→ CPU Time 如何变化
→ Speedup
→ Trade-off 

7.5 Chapter 2:Memory Hierarchy Design

这一章非常重要。

核心问题

TEXT
CPU 很快
Memory 很慢 

形成 Memory Wall。


必须掌握的三个 Cache 参数

Hit Time

命中访问时间。

Miss Rate

Miss Rate=MissesMemory AccessesMiss\ Rate = \frac{Misses}{Memory\ Accesses}

Miss Penalty

发生 Miss 后额外付出的代价。

所有 Cache 优化几乎都可以归结为修改这三个量。


AMAT

最重要公式:

AMAT=Hit Time+Miss Rate×Miss PenaltyAMAT = Hit\ Time + Miss\ Rate \times Miss\ Penalty

两级 Cache 可进一步写成:

AMAT=HTL1+MRL1(HTL2+MRL2×MPL2)AMAT = HT_{L1} + MR_{L1} (HT_{L2}+MR_{L2}\times MP_{L2})

3C Miss 模型

理解:

  • Compulsory Miss
  • Capacity Miss
  • Conflict Miss

对于分析 Cache 优化非常重要。


常见优化

需要理解而不是死记:

  • Larger Block
  • Larger Cache
  • Higher Associativity
  • Multilevel Cache
  • Victim Cache
  • Prefetching
  • Nonblocking Cache
  • Critical Word First
  • Write Buffer

每种技术都分析:

TEXT
Hit Time
Miss Rate
Miss Penalty
Bandwidth
Hardware Complexity 

与程序优化联系起来

例如二维数组:

C
for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
        sum += A[i][j]; 

与:

C
for (j = 0; j < N; j++)
    for (i = 0; i < N; i++)
        sum += A[i][j]; 

虽然计算量相同,但 Cache 性能可能差异巨大。

必须理解:

体系结构性能不仅由硬件决定,软件访问模式同样重要。

达标标准

你应该能:

  1. 完成 Cache 地址映射题;
  2. 计算 AMAT;
  3. 根据 Miss Rate 分析 CPI;
  4. 比较不同 Cache 参数的 Trade-off;
  5. 解释 Locality 对程序性能的影响。

7.6 Chapter 3:Instruction-Level Parallelism

这是全课程最难,也是最关键的章节之一。

建议按下面顺序学习:

TEXT
Pipeline
   ↓
Hazard
   ↓
Forwarding / Stall
   ↓
Branch Prediction
   ↓
Multiple Issue
   ↓
Dynamic Scheduling
   ↓
Tomasulo
   ↓
Register Renaming
   ↓
Speculation
   ↓
ROB
   ↓
Out-of-Order Execution 

7.6.1 ILP 是什么

Instruction-Level Parallelism:

同一个线程内部,多条相互独立的指令可以同时执行。

例如:

ASM
ADD R1, R2, R3
MUL R4, R5, R6 

如果互不依赖,可以并行。


7.6.2 Data Dependence

重点区分:

RAW

Read After Write。

真正的数据依赖。

WAR

Write After Read。

WAW

Write After Write。

WAR 和 WAW 可以通过:

TEXT
Register Renaming 

消除。


7.6.3 Branch Prediction

必须理解:

TEXT
Pipeline 越深
    ↓
Branch Penalty 越大
    ↓
Branch Prediction 越重要 

学习路线:

TEXT
Static Prediction
↓
1-bit Predictor
↓
2-bit Predictor
↓
Local Predictor
↓
Global Predictor
↓
Tournament Predictor 

不要只背状态机。

重点会计算:

Branch Stall CPI=Branch Frequency×Misprediction Rate×Misprediction PenaltyBranch\ Stall\ CPI = Branch\ Frequency \times Misprediction\ Rate \times Misprediction\ Penalty

7.6.4 Dynamic Scheduling

核心目的:

如果某条前面的指令在等待,不应该让后面所有独立指令一起等待。

于是出现:

TEXT
In-order Issue
Out-of-order Execute 

7.6.5 Tomasulo Algorithm

不要背表格。

真正需要理解的是:

TEXT
Issue
  ↓
进入 Reservation Station
  ↓
等待 Operand
  ↓
Operand Ready
  ↓
Functional Unit Execute
  ↓
Result Broadcast
  ↓
依赖它的指令被唤醒 

重点结构:

  • Reservation Station
  • Functional Unit
  • Register Status
  • Common Data Bus

做题时追踪:

TEXT
谁依赖谁?
谁还在等操作数?
谁可以执行?
谁什么时候完成?
结果会唤醒谁? 

7.6.6 Register Renaming

例如:

ASM
ADD R1, R2, R3
SUB R4, R1, R5
MUL R1, R6, R7 

第三条指令与前面的 R1 存在名字冲突。

硬件可以把逻辑寄存器:

TEXT
R1 

映射到不同物理寄存器:

TEXT
P12
P18 

从而消除 WAW / WAR。


7.6.7 ROB 与 Speculation

现代处理器通常需要:

TEXT
Out-of-order execution
+
In-order commit 

ROB(Reorder Buffer)用于保证:

  • Precise Exception
  • Correct Architectural State
  • In-order Retirement

达标标准

完成 Chapter 3 后,应能:

  • 分析 RAW/WAR/WAW;
  • 画基本流水线图;
  • 计算 Branch Penalty;
  • 理解动态调度;
  • 跟踪 Tomasulo;
  • 解释 Register Renaming;
  • 解释 ROB 的作用;
  • 解释现代 OoO CPU 的基本工作过程。

7.7 Chapter 4:Data-Level Parallelism

这一章重点是:

TEXT
同一种操作
作用于大量不同数据 

典型例子:

C
for (i = 0; i < N; i++)
    C[i] = A[i] + B[i]; 

可以一次处理多个元素。


SIMD

Single Instruction Multiple Data。

例如:

TEXT
普通标量:
ADD 1 对数据

SIMD:
一条 ADD 同时处理 4/8/16 个数据 

Vector Architecture

需要理解:

  • Vector Register
  • Vector Length
  • Vector Operation
  • Chaining
  • Memory Bandwidth

GPU

重点不是记厂商名词,而是理解:

TEXT
大量线程
+
高吞吐
+
隐藏 Memory Latency 

需要理解:

  • SIMT
  • Thread
  • Warp/Wavefront 的基本概念
  • Divergence
  • Memory Coalescing
  • Throughput vs Latency

对于深度学习,应理解:

TEXT
Matrix / Tensor Operations
       ↓
大量规则的数据并行
       ↓
非常适合 GPU / Accelerator 

达标标准

你应该能够解释:

为什么一个高频 CPU 核心不一定比 GPU 更适合矩阵乘法?

并且能从 DLP、吞吐量和内存带宽的角度解释。


7.8 Chapter 5:Thread-Level Parallelism

重点进入:

  • Multiprocessor
  • Multicore
  • SMT
  • Shared Memory
  • Synchronization
  • Cache Coherence
  • Memory Consistency

Cache Coherence 的由来

例如:

TEXT
Core 0 Cache:X = 1
Core 1 Cache:X = 1 

Core 0 修改:

TEXT
X = 2 

问题:

Core 1 的 X = 1 怎么办?

于是出现 Cache Coherence。


Snooping 与 Directory

理解两种基本思路:

TEXT
Snooping
→ 大家观察共享总线 
TEXT
Directory
→ 目录记录谁拥有哪份 Cache Line 

MSI / MESI

学习状态协议时,不要纯背状态图。

例如 MESI:

  • Modified
  • Exclusive
  • Shared
  • Invalid

应理解每个状态回答的是:

TEXT
这份数据是不是最新?
别人有没有副本?
内存是不是最新?
我能不能直接写? 

Synchronization

理解:

  • Lock
  • Atomic Instruction
  • Compare-and-Swap
  • Barrier

并理解性能问题:

  • Contention
  • Communication
  • False Sharing

达标标准

给出一个双核/四核共享数据场景,能够说明:

  • 为什么会出现一致性问题;
  • 某个 Cache Line 可能发生什么状态变化;
  • 为什么 False Sharing 会降低性能。

7.9 Chapter 6:Warehouse-Scale Computers

这一章可以理解为:

当“一台计算机”扩大成数万台服务器时,体系结构问题会发生什么变化?

关注:

  • Data Center
  • Request-Level Parallelism
  • Availability
  • Energy Efficiency
  • Network
  • Storage
  • Cost

本科阶段重点建立宏观理解即可。


7.10 Chapter 7:Domain-Specific Architectures

这是现代体系结构非常重要的方向。

核心思想:

TEXT
通用 CPU
    ↓
什么都能做
但未必对特定任务效率最高 

因此设计:

TEXT
Domain-Specific Accelerator 

典型领域:

  • AI
  • Image Processing
  • Cryptography
  • Networking
  • Video

理解:

TEXT
Generality ↓
Efficiency ↑ 

同时分析:

  • Performance
  • Energy
  • Programmability
  • Flexibility
  • Cost

8. 必须掌握的核心公式体系

建议单独建立一页 Architecture_Formula_Sheet.md。

8.1 Performance

Performance=1Execution TimePerformance = \frac{1}{Execution\ Time} Speedup=ToldTnewSpeedup = \frac{T_{old}}{T_{new}}

8.2 CPU Time

CPU Time=Instruction Count×CPI×Clock Cycle TimeCPU\ Time = Instruction\ Count \times CPI \times Clock\ Cycle\ Time

或:

CPU Time=IC×CPIClock RateCPU\ Time = \frac{IC\times CPI}{Clock\ Rate}

8.3 Average CPI

CPIavg=∑iCPIi×FiCPI_{avg} = \sum_i CPI_i \times F_i

8.4 Amdahl's Law

Speedup=1(1−F)+FSSpeedup= \frac{1} {(1-F)+\frac{F}{S}}

8.5 AMAT

AMAT=Hit Time+Miss Rate×Miss PenaltyAMAT = Hit\ Time + Miss\ Rate \times Miss\ Penalty

8.6 Memory Stall CPI

常见近似形式:

Memory Stall CPI=Memory Accesses per Instruction×Miss Rate×Miss PenaltyMemory\ Stall\ CPI = Memory\ Accesses\ per\ Instruction \times Miss\ Rate \times Miss\ Penalty

8.7 Branch Penalty

Branch Stall CPI=Branch Frequency×Misprediction Rate×PenaltyBranch\ Stall\ CPI = Branch\ Frequency \times Misprediction\ Rate \times Penalty

8.8 Actual CPI

CPIactual=CPIbase+CPImemory+CPIbranch+CPIother stallsCPI_{actual} = CPI_{base} + CPI_{memory} + CPI_{branch} + CPI_{other\ stalls}

这是非常重要的“统一模型”。


9. 典型题型与做题方法

9.1 性能比较题

统一步骤:

TEXT
Step 1:确定 Baseline
Step 2:写 CPU Time 公式
Step 3:找 IC / CPI / Clock Rate 的变化
Step 4:统一单位
Step 5:分别算执行时间
Step 6:计算 Speedup
Step 7:解释结果 

不要凭“频率更高,所以更快”直接判断。


9.2 Amdahl 定律题

先找:

TEXT
F:被优化部分原来占总时间多少?
S:这一部分加速多少? 

然后再代公式。

常见错误:

  • 把 20% 写成 20;
  • 把整体加速比当作局部加速比;
  • 忽略未优化部分。

9.3 Cache 地址题

统一画:

TEXT
| Tag | Index | Offset | 

然后先算:

Number of Sets=Cache SizeBlock Size×AssociativityNumber\ of\ Sets = \frac{Cache\ Size} {Block\ Size\times Associativity}

再算:

OffsetBits=log⁡2(BlockSize)OffsetBits=\log_2(BlockSize) IndexBits=log⁡2(NumberOfSets)IndexBits=\log_2(NumberOfSets)

最后:

TagBits=AddressBits−IndexBits−OffsetBitsTagBits=AddressBits-IndexBits-OffsetBits

9.4 AMAT 题

先画层次:

TEXT
CPU
 ↓
L1
 ↓ miss
L2
 ↓ miss
Memory 

不要直接套复杂公式。

逐层写:

TEXT
L1 Hit Time
+
L1 Miss Probability × 后续平均代价 

9.5 Pipeline Timing 题

第一步写阶段:

TEXT
IF ID EX MEM WB 

第二步找依赖:

TEXT
RAW? 

第三步判断:

TEXT
Forwarding 能不能解决? 

第四步才插 Stall。


9.6 Tomasulo 题

建议建立表:

InstructionIssueOperand ReadyExecuteWriteCommit

然后每个周期问:

TEXT
谁能 Issue?
谁的操作数准备好了?
哪个 FU 空闲?
谁能 Execute?
谁能 Write Result? 

9.7 Cache Coherence 题

不要直接背状态转移。

先写:

TEXT
当前是谁读?
当前是谁写?
这个 Cache Line 是否被其他 Core 持有?
Memory 是否最新? 

再推状态。


10. 实验与实践路线

体系结构如果只有理论,非常容易“感觉听懂了,实际上不会”。

建议至少完成下面三层实验。


10.1 Level A:Ripes 可视化实验

Ripes 是一个基于 RISC-V 的可视化处理器模拟器,很适合本科阶段理解流水线和 Cache。

推荐实验:

实验 1:单周期 CPU

观察:

  • PC
  • Register File
  • ALU
  • Memory
  • Control Signal

目标:

理解一条指令从进入 CPU 到完成写回经历哪些数据通路。


实验 2:五级流水线

运行简单 RISC-V 程序,观察:

TEXT
IF
ID
EX
MEM
WB 

目标:

真正理解“多条指令同时处在不同阶段”。


实验 3:Data Hazard

构造:

ASM
add x5, x1, x2
sub x6, x5, x3 

观察:

  • 无 Forwarding
  • 有 Forwarding

的差异。


实验 4:Load-use Hazard

例如:

ASM
lw  x5, 0(x1)
add x6, x5, x2 

理解为什么即使有 Forwarding 仍可能需要 Stall。


实验 5:Branch

观察 Branch 对流水线的影响。


实验 6:Cache

改变:

TEXT
Cache Size
Block Size
Associativity 

观察:

TEXT
Hit
Miss 

10.2 Level B:Linux perf

在 Linux 上可以用:

BASH
perf stat ./program 

观察:

  • cycles
  • instructions
  • branches
  • branch-misses
  • cache-misses

例如:

TEXT
IPC ≈ instructions / cycles 

然后比较两个程序版本。

实验例子:

TEXT
行优先遍历矩阵
vs
列优先遍历矩阵 

观察 Cache Miss 与执行时间差异。

这个实验非常适合把 Chapter 2 与真实程序连接起来。


10.3 Level C:gem5

gem5 是计算机体系结构研究中广泛使用的模拟器之一。

本科阶段不要一上来修改 gem5 源码。

建议路线:

TEXT
安装 / 编译
    ↓
运行 Hello World
    ↓
理解配置脚本
    ↓
修改 CPU Model
    ↓
修改 Cache Size
    ↓
修改 Associativity
    ↓
观察 stats.txt
    ↓
比较 IPC / Miss Rate / Runtime 

推荐 gem5 小项目 1

题目:

Cache 大小对程序性能的影响。

实验:

TEXT
L1 DCache

16 KB
32 KB
64 KB
128 KB 

记录:

TEXT
Miss Rate
IPC
Simulated Cycles 

画图:

TEXT
X:Cache Size
Y:IPC 

分析:

为什么增加到某个大小以后收益下降?


推荐 gem5 小项目 2

题目:

Cache Associativity 对性能的影响。

TEXT
1-way
2-way
4-way
8-way 

讨论:

TEXT
Conflict Miss ↓
但 Hit Latency / Hardware Complexity ↑ 

推荐 gem5 小项目 3

题目:

不同 CPU 模型对性能的影响。

比较:

TEXT
Simple CPU
vs
Out-of-Order CPU 

联系 Chapter 3。


11. 16 周详细学习计划

下面给出适合一个学期执行的路线。


Week 1:课程地图 + 性能基础

学习

  • Architecture vs Organization
  • ISA vs Microarchitecture
  • Performance
  • Latency / Throughput
  • CPU Time

必会

CPUTime=IC×CPI×CycleTimeCPUTime = IC\times CPI\times CycleTime

任务

  • 建立课程知识地图
  • 做 5 道 CPU Time 计算题

达标

能够解释:

为什么 CPU 主频高不等于程序一定更快?


Week 2:Amdahl + Benchmark + Power

学习

  • Speedup
  • Amdahl's Law
  • Benchmark
  • Power / Energy

任务

  • 做 8~10 道 Amdahl 题

达标

看到局部优化可以立即判断它的整体性能上限。


Week 3:Cache 基础

学习

  • Locality
  • Block
  • Hit / Miss
  • Mapping

实验

Ripes Cache。

达标

能够完成 Tag / Index / Offset 计算。


Week 4:Cache 性能

学习

  • AMAT
  • 3C Miss
  • Write Policy
  • Multilevel Cache

任务

至少做 10 道 AMAT 题。


Week 5:高级 Cache 优化

学习

  • Associativity
  • Prefetch
  • Nonblocking
  • Victim Cache
  • Critical Word First

实验

矩阵行/列访问对 Cache 的影响。


Week 6:Pipeline 基础

学习

  • IF / ID / EX / MEM / WB
  • Pipeline Speedup
  • Hazard

实验

Ripes Pipeline。


Week 7:Data Hazard + Control Hazard

学习

  • RAW / WAR / WAW
  • Forwarding
  • Stall
  • Branch Prediction

达标

能独立画 Pipeline Timing Diagram。


Week 8:期中整合

复习:

TEXT
Performance
Amdahl
Cache
AMAT
Pipeline
Hazard 

做一套综合题。


Week 9:ILP + Dynamic Scheduling

学习

  • ILP
  • Multiple Issue
  • Dynamic Scheduling

重点理解:

为什么 In-order CPU 会浪费可利用的并行?


Week 10:Tomasulo

重点:

  • Reservation Station
  • Register Renaming
  • CDB

任务

至少完整手推 3 个 Tomasulo 例子。


Week 11:Speculation + ROB + OoO

学习:

TEXT
Branch Prediction
+
Tomasulo
+
ROB
=
现代 OoO CPU 核心思想 

达标

能够用一段话讲清现代 CPU 为什么可以乱序执行但仍保证程序结果正确。


Week 12:SIMD / Vector

学习:

  • DLP
  • SIMD
  • Vector Processor

实验:

可以尝试编译器自动向量化观察。


Week 13:GPU

学习:

  • Throughput Computing
  • SIMT
  • Warp
  • Divergence
  • Memory Bandwidth

联系:

  • 深度学习
  • 矩阵计算
  • CUDA

Week 14:Multicore + Coherence

学习:

  • TLP
  • Shared Memory
  • MSI / MESI
  • Snooping / Directory

Week 15:Synchronization + DSA

学习:

  • Atomic
  • Lock
  • False Sharing
  • Domain-Specific Architecture

思考:

AI 加速器为什么正在成为重要体系结构方向?


Week 16:总复习

重新画一张完整知识图:

TEXT
Performance
   ↓
Memory
   ↓
Pipeline
   ↓
ILP
   ↓
DLP
   ↓
TLP
   ↓
DSA 

然后制作一页公式表。


12. 笔记、复习与知识管理方法

12.1 不要抄教材

最差的笔记方式:

TEXT
1. Cache 的定义
2. Cache 的特点
3. Cache 的分类 

这种笔记看起来整齐,但复习价值很低。


12.2 推荐统一模板

例如:

MARKDOWN
# Branch Prediction

## Problem
为什么需要预测?

## Idea
预测下一条 PC。

## Mechanism
1-bit / 2-bit / Local / Global

## Performance
Branch Frequency × Misprediction Rate × Penalty

## Trade-off
Accuracy / Area / Power / Latency

## Example
……

## Related
Pipeline / Speculation / ROB 

长期下来,你的笔记会自然形成知识网络。


12.3 一章只留一张“总览图”

例如 Chapter 3:

TEXT
ILP
 │
 ├─ Static Scheduling
 │
 └─ Dynamic Scheduling
       │
       ├─ Reservation Station
       ├─ Register Renaming
       ├─ Tomasulo
       ├─ ROB
       └─ Speculation 

复习时先看总览,再深入细节。


12.4 错题本应该记录“错误原因”

不是只保存答案。

例如:

TEXT
错误:AMAT 算错
原因:把 Local Miss Rate 和 Global Miss Rate 混淆
改进:以后先画 Memory Hierarchy 

这种错题记录才真正有价值。


13. 推荐学习资源

下面按优先级推荐。

13.1 第一优先级:教材官方配套资源

Elsevier 第 6 版官方 Companion Site 提供:

  • Reference Appendices
  • Historical Perspectives
  • Lecture Slides
  • 各章配套材料

入口:

https://shop.elsevier.com/books/book-companion/9780128119051

建议用途:

看完老师 PPT 后,用官方 Lecture Slides 对照知识结构。


13.2 Berkeley CS61C

课程笔记:

https://notes.cs61c.org/

非常适合补基础,内容包括:

  • RISC-V
  • Single-Cycle CPU
  • Pipeline
  • Cache
  • Virtual Memory
  • Performance
  • SIMD
  • Parallelism

推荐用途:

《量化研究方法》某部分看不懂时,先去 CS61C 找对应基础内容。


13.3 Berkeley CS152

课程:Computer Architecture and Engineering。

官方课程页:

https://www2.eecs.berkeley.edu/Courses/CS152/

公开课程站点会包含部分 lecture / discussion / homework 资源,例如:

https://www-inst.eecs.berkeley.edu/~cs152/

内容更加接近真正的“体系结构课程”:

  • Pipeline
  • Memory Hierarchy
  • OoO
  • Vector
  • Multicore

推荐用途:

当你已经掌握基础以后,用于进一步提高。


13.4 CMU 18-447

Introduction to Computer Architecture:

https://courses.ece.cmu.edu/18447

其课程描述非常强调:

  • Performance
  • Pipeline
  • Superscalar
  • Memory System
  • RTL / Processor Design

适合想进一步理解处理器实现的人。


13.5 MIT 6.1910

MIT Computation Structures。

重点覆盖:

  • Digital Systems
  • ISA
  • Single-Cycle CPU
  • Pipeline
  • Memory Hierarchy
  • Virtual Memory
  • Parallel Systems

可作为组成原理与体系结构之间的桥梁。


13.6 Ripes

GitHub:

https://github.com/mortbopet/Ripes

网页版:

https://ripes.dk/

Ripes 可以可视化:

  • RISC-V 指令执行
  • Pipeline
  • Forwarding
  • Stall
  • Cache
  • Memory-Mapped I/O

非常适合作为第一套体系结构实验工具。


13.7 RISC-V 官方 ISA 文档

官方规范:

https://docs.riscv.org/reference/isa/

注意:

不建议刚开始就从头阅读完整规范。

把它当作:

权威查询手册。

需要确认某条指令或 ISA 行为时再查。


13.8 gem5

官网:

https://www.gem5.org/

Getting Started:

https://www.gem5.org/getting_started/

Documentation:

https://www.gem5.org/documentation/

Learning gem5:

https://www.gem5.org/documentation/learning_gem5/introduction/

需要注意:gem5 官方当前文档提示,一些旧版 Learning gem5 内容可能已经过时,较新的 Bootcamp 材料通常更适合作为当前参考。因此实际安装或实验时应优先核对官方最新文档。

推荐定位:

TEXT
Ripes = 教学理解

gem5 = 架构模拟 / 课程项目 / 科研入门 

14. 期中、期末考试复习方法

第一轮:知识结构

不要直接刷题。

先把课程分成:

TEXT
1. Performance
2. Memory
3. Pipeline
4. ILP
5. DLP
6. TLP 

每部分写一张 A4。


第二轮:公式

做到看到公式可以解释每个变量,而不是机械背诵。

特别是:

CPUTimeCPUTime AmdahlAmdahl AMATAMAT BranchPenaltyBranchPenalty MemoryStallCPIMemoryStallCPI

第三轮:典型题

每种题型至少练:

TEXT
性能题:5~10
Amdahl:5~10
Cache Mapping:10
AMAT:10
Pipeline:5~10
Branch:5
Tomasulo:3~5
Coherence:3~5 

第四轮:错题

只做自己曾经错过的题。

要求能解释:

上一次为什么错?


第五轮:口述

这是非常有效的方式。

不看资料回答:

  • 什么是 Amdahl 定律?
  • Cache 为什么有效?
  • 为什么 Associativity 不能无限增加?
  • 为什么 CPU 要 Branch Prediction?
  • Tomasulo 解决什么问题?
  • Register Renaming 为什么有效?
  • 为什么 GPU 适合矩阵计算?
  • MESI 为什么需要四种状态?

如果说不清楚,就是还没有真正掌握。


15. 最终能力验收标准

学完整门课程以后,可以用下面清单检查。

A:基础概念

  • 能区分 ISA 和 Microarchitecture
  • 能解释 Latency 和 Throughput
  • 能解释 CPI / IPC
  • 能解释 Pipeline
  • 能解释 Locality
  • 能解释 ILP / DLP / TLP

B:性能分析

  • 会计算 CPU Time
  • 会计算 Speedup
  • 熟练使用 Amdahl
  • 会计算平均 CPI
  • 能分析优化影响 IC / CPI / Clock Rate 中的哪些因素

C:Memory

  • 会 Tag / Index / Offset
  • 理解 Direct / Set Associative / Fully Associative
  • 理解 Write Through / Write Back
  • 会计算 AMAT
  • 理解 3C Miss
  • 能解释 Cache 优化的 Trade-off

D:Pipeline

  • 能画五级流水线
  • 能判断 RAW / WAR / WAW
  • 理解 Forwarding
  • 理解 Stall
  • 理解 Control Hazard
  • 会计算 Branch Penalty

E:ILP

  • 理解 Multiple Issue
  • 理解 Dynamic Scheduling
  • 理解 Tomasulo
  • 理解 Reservation Station
  • 理解 Register Renaming
  • 理解 ROB
  • 理解 Speculation
  • 能解释 OoO CPU 基本工作流程

F:Parallelism

  • 理解 SIMD
  • 理解 Vector
  • 理解 GPU / SIMT
  • 理解 Multicore
  • 理解 Cache Coherence
  • 理解基本 MESI
  • 理解 Synchronization
  • 理解 False Sharing

G:实验

至少完成:

  • 1 个 Ripes Pipeline 实验
  • 1 个 Ripes Cache 实验
  • 1 个 Linux perf 实验
  • 1 个 gem5 Cache 参数实验

如果全部完成,你对体系结构的掌握已经明显超过“只为了期末考试”的水平。


16. 与后续课程和科研方向的衔接

计算机体系结构并不是孤立课程。

与操作系统

体系结构提供:

  • Privilege
  • Exception
  • Virtual Memory
  • TLB
  • Atomic Instruction

操作系统建立在这些硬件机制之上。


与编译原理

编译器优化会影响:

  • Instruction Count
  • ILP
  • Register Allocation
  • Vectorization
  • Locality

所以高性能编译与体系结构高度相关。


与计算机网络

网络系统性能最终也受到:

  • Memory Bandwidth
  • DMA
  • Cache
  • Multicore
  • Accelerator

影响。


与人工智能 / 计算机视觉

尤其值得关注:

TEXT
Matrix Multiplication
        ↓
SIMD / Vector
        ↓
GPU
        ↓
Tensor Accelerator
        ↓
Domain-Specific Architecture 

以后学习:

  • CUDA
  • GPU Programming
  • Tensor Core
  • AI Accelerator
  • Model Inference Optimization

时会大量用到体系结构知识。

如果未来研究计算机视觉或深度学习,那么 Chapter 4 和 Chapter 7 建议额外深入。


17. 一份可以长期执行的学习清单

每学习一个知识点,都检查:

TEXT
□ 它解决什么问题?
□ 为什么以前的方法不够?
□ 它的核心思想是什么?
□ 硬件怎么实现?
□ 它影响哪个性能参数?
□ 有没有公式?
□ 能提高多少性能?
□ 有什么代价?
□ 有什么实际处理器案例?
□ 能不能通过实验验证? 

每周检查:

TEXT
□ 本周知识图是否画完?
□ 核心公式是否会推?
□ 是否做过计算题?
□ 是否记录错题?
□ 是否完成一个小实验或例子?
□ 是否能脱离教材讲清本周核心内容? 

每章结束检查:

TEXT
概念 → 能解释
公式 → 会计算
机制 → 能画图
题目 → 会分析
实验 → 能验证
设计 → 能比较 Trade-off 

最后:真正学会计算机体系结构的标志

真正掌握这门课,不是能够背出:

Cache 有哪几种映射方式。

也不是能够背出:

Tomasulo 有哪些硬件结构。

而是当你看到一个性能问题时,脑中会自然出现:

TEXT
性能瓶颈在哪里?
        ↓
是 IC?CPI?Clock Rate?
        ↓
是 Memory?Branch?Dependency?Parallelism?
        ↓
有什么架构优化?
        ↓
理论能快多少?
        ↓
实际为什么可能达不到?
        ↓
需要付出什么 Area / Power / Complexity 代价? 

如果你能够这样思考,你就真正从“计算机组成原理的学习者”进入了“计算机体系结构的分析者”。

建议最终形成自己的三份长期资料:

TEXT
01_计算机体系结构知识地图.md
02_计算机体系结构公式与题型.md
03_计算机体系结构实验记录.md 

以后学习操作系统、编译器、CUDA、GPU、AI 加速器、高性能计算甚至做计算机系统科研时,这三份资料都会继续有价值。


参考与资源入口

以下资源入口已按 2026 年公开网页核对:

  1. Elsevier,Computer Architecture: A Quantitative Approach, 6th Edition Companion Site
    https://shop.elsevier.com/books/book-companion/9780128119051

  2. Berkeley CS61C Course Notes
    https://notes.cs61c.org/

  3. UC Berkeley CS152 Computer Architecture and Engineering
    https://www2.eecs.berkeley.edu/Courses/CS152/

  4. Berkeley CS152 公开课程站点
    https://www-inst.eecs.berkeley.edu/~cs152/

  5. Carnegie Mellon 18-447 Introduction to Computer Architecture
    https://courses.ece.cmu.edu/18447

  6. Ripes
    https://github.com/mortbopet/Ripes
    https://ripes.dk/

  7. RISC-V ISA Manuals
    https://docs.riscv.org/reference/isa/

  8. gem5
    https://www.gem5.org/
    https://www.gem5.org/getting_started/
    https://www.gem5.org/documentation/


推荐执行原则:70% 精力放在“主干知识 + 习题”,20% 放在实验,10% 放在扩展阅读。
对本科阶段而言,先真正掌握 Performance、Memory Hierarchy、Pipeline、ILP、DLP、TLP,再去追逐最新处理器细节,会比一开始就阅读大量复杂架构资料有效得多。

读者互动

0 次表情反馈 · 0 条评论

登录后可以发表评论、给评论点赞。去登录
还没有评论。