超标量(Superscalar)处理器在每个时钟周期内同时发射多条指令到多条流水线中并行执行。
时钟周期: 1 2 3 4 5 6 流水线1: IF1 ID1 EX1 MEM1 WB1 流水线2: IF2 ID2 EX2 MEM2 WB2 流水线3: IF3 ID3 EX3 MEM3 WB3
| 类型 | 特点 |
|---|---|
| 普通流水线 | 每周期发射 1 条,分 k 段 |
| 超标量 | 每周期发射 m 条(m>1),分 k 段 |
| 超流水线 | 每周期发射 1 条,分 2k 段(每半周期发射) |
| 超标量超流水线 | 每周期发射 m 条,分 2k 段 |
| 性质 | 说明 |
|---|---|
| 发射宽度 m | 每周期最多发射 m 条指令 |
| 功能部件数 | 需要 m 份 ALU、m 份访存单元等 |
| 理想吞吐率 | $m / \Delta t$ |
| 实际吞吐率 | $\text{IPC} / \Delta t$,IPC < m |
| 主要限制 | 数据冒险、控制冒险、结构冒险 |
| 考法 | 解题套路 |
|---|---|
| 超标量 vs 超流水线 | 超标量:多发射;超流水线:细分段 |
| 计算理想吞吐率 | $m \times$ 普通流水线吞吐率 |
| 为什么实际 IPC 远低于 m | 各种冒险限制并行度 |
| 需要的硬件支持 | 多份功能部件、寄存器重命名、乱序执行 |
| 超标量流水线时间计算 | $T = (k + \lceil n/m \rceil - 1) \cdot \Delta t$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。