Lecture 8.1 | The Processor-Part2
:material-circle-edit-outline: 约 476 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟
Part1是单周期处理器
这次开始将流水线处理器
考试相关
不用手写
Pipelining Analogy
用洗衣指令为例
Five stages
五级流水线的五个阶段
Five stages, one step per stage
- IF: Instruction fetch from memory
- ID: Instruction decode & register read
- EX: Execute operation or calculate address
- MEM: Access memory operand
- WB: Write result back to register
- CPI is decreased to 1,
- since one instruction will be issued (or finished) each cycle.
- During any cycle, one instruction is present in each stage
任意一个cycle内,都有5个stage同时允许,相当于CPI=1
实际上,流水线并没有加速每条指令的响应时间,而是处理器的吞吐量。
两大评价指标;响应时间,吞吐量
流水线最大的难点是控制,这也是我们学习的重点
Hazards
冒险
- Structure hazards
- 一个组件不能被同时被两个指令同时利用
- A required resource is busy
- Data hazard
- Need to wait for previous instruction to complete its data read/write
- 这时就会卡住
- Control hazard
- Deciding on control action depends on previous instruction
都是前面没运行完的指令正好占用了后面指令需要的东西
Data Hazards
An instruction depends on completion of data access by a previous instruction
就c=a+b,e=c-d
但是加法没算完减法又来了,导致减法用的是未更新的c
依赖关系
解决方案 —— Forwarding (aka Bypassing)
Use result when it is computed Don’t wait for it to be stored in a register
Requires extra connections in the datapath
就是在存入内存前就先交给下一条线用
当然这个不是万能的,下面是一个典型的无法被解决的场景
这时就必须要停下,这叫做stall
实际设计中我们就尽量避免这样的场景出现
写指令时就避免stall的出现
考试会考,让你判断是否有hazard,哪里有hazard,怎么避免hazard
还有个例子
我们不想总是卡顿,有一种解决方案是预测