为什么学习并行计算需要了解硬件

Mechanisms used to implement abstractions efficiently

这里说的是「计算机系统里实现抽象的机制」。抽象就是我们写程序时看到的接口或功能,而底层需要硬件去实现。

Why do I need to know about hardware?

“快”不等于“高效” (FAST != EFFICIENT)

一台有 10 个处理器 的电脑,如果你的程序只加速了 2 倍,那其实效率很低。

程序员的视角

硬件设计师的视角

理器执行指令 (processor executes instructions)

  1. Fetch / Decode (取指令 + 解码)

👉 可以理解成「看说明书,知道下一步要干嘛」。

  1. Execution Context (执行上下文)

👉 可以理解成「工人的工作台」,放着原料(输入数据)和成品(结果)。

  1. ALU (Execution Unit, 算术逻辑单元)

👉 就是「真正做事的工人」,执行加减乘除、逻辑判断等。

超标量思想 (Superscalar Execution)

处理器能够在一个时钟周期里同时发射(dispatch)多条独立指令到不同的执行单元(ALU/乘法器/加法器等),并行执行它们。

什么是 stall?

ld r0, mem[r2]   ; 把内存[mem[r2]]的数据加载到寄存器r0
ld r1, mem[r3]   ; 把内存[mem[r3]]的数据加载到寄存器r1
add r0, r0, r1   ; r0 = r0 + r1