Chapter 4 Sequential

#CSAPP
SEQ 处理器仅考虑一套简化的指令集,处理的所有数据对象均为 4 bytes 长,包括:

SEQ_InstructionSetEncoding.png

uniform stage:

execute:

pushq popq.png
jmp call ret.png
SEQ structure.png
SEQ Timing.png
Fetch Stage.png
Decode and Write back.png
Execute.png
SEQ Memory.png
SEQ PC.png

Pipeline

指令间独立、计算仅涉及组合逻辑的情况
SEQ Pipeline Transition.png

Limitation

Nonuniform Partitioning
SEQ Pipeline Nonuniform Partitioning.png
ALU 和内存常常难以切分

Diminishing Returns of Deep Pipelining

pipeline register 的 overhead 比重随切分次数的增加而增加
SEQ Pipeline Diminishing Returns of Deep Pipelining.png
此例中 Throughput = 1 / (300 / k + 20), Latency = 20 * k + 300

Stage Implementation and Pipeline Control Logic

需要实现两部分逻辑:pipeline register 之间的转换逻辑和 pipeline register 的控制逻辑。这两种逻辑共同服务于

阶段之间的转换逻辑除了满足类似 SEQ 的基本要求之外还要实现以下特性:

SEQ 添加 pipeline register 后
PIPE minus Insert Pipeline Register.png
添加 forwarding 后

PIPE with forwarding.png
各阶段转换逻辑:

Fetch:

PIPE fetch.png
Decode:
注意 val A 和 val P 均被储存在 val A 处,因为它们不会被同时使用,共享同一个 word 可以节约内存

PIPE Decode.png
PIPE Execute.png PIPE Memory.png

需要特殊控制流水线运转的情况(通过特殊的组合逻辑控制 stage register 的 stall 或者 bubble 接口,从而为下一周期的 pipeline register 状态提供优先级更高的额外控制。注意 F pipeline register 不能 bubble 否则会失去当前指令序列):

特殊情况的组合,仅有两种可能性:

补两张图用于查阅
Pipeline Control Logic Trigger.png
PIPE Pipeline Control Logic.png

Analysis

测试正确性、形式化验证正确性。
CPI 描述处理器架构的效率,他忽略了基础硬件响应速度带来的效率影响。

将 x86 64 与 PIPE 的指令对应,考察未实现的部分?

一些问题:

PIPE 是一个简化的教学用处理器,他与现代处理器(如我的 13th intel core i9 13980HX)还有许多差距,在底层架构方面包括