计算机体系结构——3 流水线技术

3.1 流水线基本概念

3.1.1流水线基本概念

1.产品生产流水线

  • (1)一个问题
    假设某产品的生产需要4道工序,该产品生产车间以前只有1个工人,1套生产该产品的机器。该工人工作8小时,可以生产120件((即每4分钟生产1件)。要将该产品日产量提高到480件,如何能实现目标?
  • (2)两种解决方案
    • 方案一:增加3名工人、3套设备。
    • 方案二:产品生产采用流水线方式,分为4道工序;增加3名工人,每人负责一道工序。
  • (3)两种方案的工作过程对比
    两种方案中,单件产品的生产时间均不变。但在稳定情况下,
    • 方案一:每4分钟,4件产品同时进入流水线,4件成品同时离开流水线,需要增加3套设备。
    • 方案二:每分钟,1件产品进入流水线,1件成品离开流水线,不需要增加任何设备。

(4)方案二的主要特点

  • 每件产品还是要经过4道工序处理,单件产品的加工时间并没有改变,但它将各个工人的操作时间重叠在一起,使得每件产品的产出时间从表面上看是从原来的4分钟缩减到1分钟,提高了产品的产出率。

2.计算机中的流水线
◆指令流水线

3.流水技术

  • 将一重复的时序过程分解为若干子过程,每个子过程都可有效地在其专用功能段上与其它子过程同时执行,这种技术称为流水技术。

4.时-空图

  • 从时间和空间两个方面描述流水线的工作过程,横坐标表示时间,纵坐标表示各流水段。

在这里插入图片描述

5.流水线的特点

  • 流水过程由多个相关的子过程组成,这些子过程称为流水线的“级”或“段”段的数目称为流水线的“深度”。每个子过程由专用的功能段实现
  • 各功能段的时间应基本相等,通常为1个时钟周期(1拍)流水线需要经过一定的通过时间才能稳定。 流水技术适合于大量重复的时序过程。

3.1.2 流水线的分类

1.单功能流水线和多功能流水线

  • 按流水线所完成的功能分类
  • 单功能流水线,是指只能完成一种固定功能的流水 线。
    • 例如:功能单元流水线
  • 多功能流水线,是指各段可以进行不同的连接,从而完成不同的功能。
    • 例如:TI ASC的多功能流水线

2.静态流水线和动态流水线

  • 按同一时间内流水段的连接方式划分
  • 静态流水线,是指在同一时间内,流水线的各段 只能按同一种功能的连接方式工作。
    - 例如:TIASC的流水线 适合于处理一串相同的运算操作
  • 动态流水线,是指在同一时间内,当某些段正在 实现某种运算时,另一些段却在实现另一种运算。

3.部件级、处理机级及处理机间流水线

  • 按流水的级别划分
  • 部件级流水线,又叫运算操作流水线,是把处理机 的算术逻辑部件分段,使得各种数据类型的操作能够进行流水。
  • 处理机级流水线,又叫指令流水线,是把解释指令 的过程按照流水方式处理。
  • 处理机间流水线,又叫宏流水线,是由两个以上的 处理机串行地对同一数据流进行处理,每个处理机完成一项任务。

4.标量流水处理机和向量流水处理机

  • 按照数据表示来进行分类
  • 标量流水处理机,是指处理机不具有向量数据表 示,仅对标量数据进行流水处理。
    • 例如IBM360/91,Amdahl 470V/6等
  • 向量流水处理机,是指处理机具有向量数据表示, 并通过向量指令对向量的各元素进行处理。
    • 例如TI ASC、STAR-100、CYBER-205、CRAY-1、YH-1等

5.线性流水线和非线性流水线

  • 按照是否有反馈回路来进行分类
  • 线性流水线是指流水线的各段串行连接,没有反馈 回路。
  • 非线性流水线是指流水线中除有串行连接的通路外,还有反馈回路。
    • 存在流水线调度问题
    • 确定什么时候向流水线引进新的输入,从而使新输入的数据和先前操作的反馈数据在流水线中不产生冲突,此即所谓流水线调度问题。

3.2 MIPS基本流水线

3.2.1 MIPS的一种简单实现

在这里插入图片描述

  • MIPS指令的一种简单数据通路
  • 这是一种非流水方式
  • 将指令执行划分为5个阶段
    • 取指令周期
    • 指令译码/读寄存器周期
    • 执行/有效地址计算周期
    • 存储器访问/分支完成周期
    • 写回周期

1.取指令周期(IF)

  • 操作为:
    根据PC值从存储器中取出指令,并将指令送入指令寄存器IR;PC值增加4,指向顺序的下一条指令,并将下一条指令的地址放入临时寄存器NPC中。
    在这里插入图片描述
    2.指令译码/读寄存器周期(ID)
  • 操作为:
    进行指令译码,读IR寄存器(指令寄存器),按照相应寄存器号读寄存器文件,并将读出结果放入两个临时寄存器A和B中。同时对IR寄存器中内容的低16位进行符号扩展,然后将符号扩展之后的32位立即值保存在临时寄存器Imm中。
    在这里插入图片描述

3.执行/有效地址计算周期(EX)

  • 操作为:
  • 存储器访问: ALUoutput<-A+Imm
  • 寄存器-寄存器ALU: ALUoutpute-Aop B
  • 寄存器-立即值ALU:ALUoutput-A op Imm
  • 分支操作: ALUoutput -NPC+ImmCond-(Aop o)

问题:为什么执行和有效地址计算可以合并?

4.访存/分支操作完成周期(MEM)

  • 操作为:
  • 访存操作:
    • Load: LMD±LMDMEM[ALUoutput]
    • store: Mem[ALUoutput]e-B
  • 分支操作:
    • if (Cond) PC-ALUoutput
    • else PCe-NPC

5.写回周期(WB)

  • 操作为: ·
  • 寄存器-寄存器型ALU指令:
    • Reg[IR16…2ol-ALUoutput ·
  • 寄存器-立即值型ALU指令:
    • Reg[IR1…1sl-ALUoutput
  • Load指令;
    • ReglIR11…1s]-LMD

6.性能分析

  • 在该数据通路上, 分支指令需要4个时钟周期其它指令需要5个时钟周期 假设分支指令占总指令数的12%,问CPI=?
    CPI=4×12%+5×(1-12%)=4.88

  • 结论:就性能和硬件开销而言,上述实现不是一种 优化实现!

7.改进方法

  • 在Mem周期完成ALU指令
  • 假设ALU指令数占指令总数的44%,则在时钟周期时间不变的同时,CPI可以降低至4.4
  • 如要进一步降低CPI,可能会增加时钟周期时间
  • 采用单周期实现,可以将CPI降低为1,但时钟周期时间却会增加为原来的5倍
    • 一般不采用这种方法,为什么?
  • 流水技术

3.2.2基本MIPS流水线

1.一种简单的MIPS流水线

  • 将3.2.1中的数据通路流水化,使得 数据通路中的每一个周期就成为流水线的一段每个时钟周期启动一条指令 —得到了一条简单的MIPS流水线。

    简单MIPS流水线的流水过程;

  • 时-空图

在这里插入图片描述

  • 按时间错开的数据通路
    -在这里插入图片描述

2.实现流水技术应解决的一些问题

  • ( 1)应保证流水线各段不会在同一时钟周期内使用相同的寄存器通路资源。
    • 例如,不能要求一个ALU既做有效地址计算,又做减法操作
    • IF与Mem两个阶段都要访问存储器,怎样避免访存冲突?
    • ID和WB两个阶段都要访问寄存器,是否存在冲突?怎样避免?
  • (2)PC计算问题 为了能够在每个时钟周期启动一条新的指令,流水线必须在IF段获得下一条指令的地址,并将其保存在PC中。
    • 但是,分支指令会改变PC的值,而且只有在Mem段结束时,这个新值才会被写入PC,出现矛盾。
    • 解决方法:
      改变数据通路,在IF段完成PC计算。
      但分支指令如何处理?
  • (3)合理划分流水段,每段内的操作都必须在一个时钟周期内完成。
  • (4)流水线寄存器设计
    • 为防止寄存器中的值在为流水线中某条指令所用时被流水线中其它的指令所重写,可在流水线各段之间设置
    • 流水线寄存器文件,也称锁存器。流水线寄存器文件的命名
    • 段A与B之间的流水线寄存器文件称为A/B
    • 流水线寄存器的作用
      3.MIPS流水线的操作
  • 在任一时刻,流水中的指令仅在流水线中的某一段内执行操作。
  • 因此,只要知道每一流水段在各指令下进行何种操作,就知道了整个流水线的操作。
  • P67表3.1给出了MIPS流水线中每一段的操作
    在这里插入图片描述

4.MIPS流水线中多路选择器的控制

  • 主要是确定如何控制那四个多路选择器:
  • ALU输入端的两个MUX由ID/EX.IR所指出的指令类型控制
  • IF段的MUX由EX/MEM.Cond域的值控制
  • WB段的MUX由当前指令类型(Load/ALU)控制

3.2.3流水线性能分析

三项性能指标:吞吐率、加速比和效率

  • 1.吞吐率

    • 是衡量流水线速度的重要指标

    • 吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量

    • 最大吞吐率TPmax是指流水线在达到稳定状态后所得到的吞吐率。

    • 设流水线由m段组成,完成n个任务的吞吐率称为实际吞吐率,记作TP。

    • (1)最大吞吐率
      在这里插入图片描述

    • (2)实际吞吐率

在这里插入图片描述

在这里插入图片描述

  • 2.加速比

  • 加速比是指流水线速度与等功能的非流水线速度之比。
    在这里插入图片描述

  • 3.效率

  • 效率指流水线的设备利用率。

在这里插入图片描述
在这里插入图片描述
4.吞吐率、加速比和效率的关系
在这里插入图片描述
5.流水线性能分析实例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 流水线中的相关

1.什么是相关?

  • 流水线中的相关是指相邻或相近的两条指令因存在某种关联,后一条指令不能在原先指定的时钟周期开始执行。
  • 消除相关的基本方法——暂停
  • 暂停流水线中某条指令及其后面所有指令的执行,该指令之前的所有指令继续执行。

2.三种不同类型的相关

  • 结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时将产生“结构相关”。
  • 数据相关:因一条指令需要用到前面指令的结果,而无法与产生结果的指令重叠执行时,就发生了数据相关。
  • 控制相关:当流水线遇到分支指令和其它会改变PC值的指令时就发生控制相关。
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.4 实例分析:MIPS R4000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5 向量处理机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值