Skip to content

Lecture 8.1 | The Processor-Part2

:material-circle-edit-outline: 约 476 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟

Part1是单周期处理器

这次开始将流水线处理器

考试相关

image-20240417144746413

不用手写

Pipelining Analogy

用洗衣指令为例

image-20240417151307705

Five stages

五级流水线的五个阶段

Five stages, one step per stage

  1. IF: Instruction fetch from memory
  2. ID: Instruction decode & register read
  3. EX: Execute operation or calculate address
  4. MEM: Access memory operand
  5. WB: Write result back to register

image-20240417151515731

  • 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

image-20240417151955952

image-20240417152031880

实际上,流水线并没有加速每条指令的响应时间,而是处理器的吞吐量。

两大评价指标;响应时间,吞吐量

流水线最大的难点是控制,这也是我们学习的重点

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

依赖关系

image-20240417155258362

解决方案 —— 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

就是在存入内存前就先交给下一条线用

image-20240417155602952

当然这个不是万能的,下面是一个典型的无法被解决的场景

这时就必须要停下,这叫做stall

实际设计中我们就尽量避免这样的场景出现

image-20240417155852390

写指令时就避免stall的出现

image-20240417155905253

考试会考,让你判断是否有hazard,哪里有hazard,怎么避免hazard

还有个例子

image-20240417160236941

我们不想总是卡顿,有一种解决方案是预测

\(image-20240417160244594\)