Article

CH4数据通路和流水线

围绕处理器中的数据通路与流水线设计,梳理关键部件协作方式以及性能优化背后的底层逻辑。

April 14, 2026 修考 3 min read

概览

我们主要学习了三类指令

  1. R型指令 (add,sub,srl等)

  2. 数据传输指令(LW/SW 等)

  3. 条件分支指令(beq,bne)

以及跳转指令和其他指令。

我们将会发现,底层的运行逻辑建立在如何执行这些操作。

以及我们需要明白一件事

整个数据通路和流水线,在做的事情就是传递数据信息控制信息

数据通路

流水线

流水级

我们将流水线分为5个stage

  1. IF: 取指令。
  2. ID: 指令译码,读寄存器堆。
  3. EX: 执行或计算地址。
  4. MEM: 访问数据存储器。
  5. WB: 写回。

问题

结构冒险 Structural Hazard

当多个流水级在同一时刻竞争同一个物理资源(如单一的内存端口)时,就会发生Structural Hazard。

数据信息问题-数据冒险

对于R型指令,比如add,我们会发现存在一些问题

add $t0 $s1 $s2
sub $t0 $t0 $s1

前一个指令在t2才能得到数据,后者在t3就需要数据。

后一条指令需要读取前一条指令写入的结果也就被称为Data harzard

Bypass

通过Bypass实现数据的传播,将原本wb之后才能得到的数据提前传输。

该技术允许数据在未正式写回寄存器堆之前,直接从内部缓冲区或寄存器传递到需要它的单元。

image-20260414221017030

load-use Data harzard

虽然旁路可以解决相邻流水级的数据传输。

但是如果间隔太大呢。

比如 lw 需要在 MEM 获得数据

但是add 需要 EX 使用数据

中间只能通过 nop 阻塞和 bypass来实现

控制信息问题-控制冒险

什么能够影响到控制信息呢?

分支指令

当我们在执行的时候,我们无法知道后面的指令是否有必要执行,这也就造成了一种不确定性

  1. 阻塞:通过气泡,得到结果后在执行后面的操作(最为朴素的做法)
  2. 预测:也就是前面的八大思想之一