计算机组成与体系结构——流水线相关知识点

CPU的内部结构主要有三部分:指令寄存器指令译码器指令执行单元(包括ALU和通用寄存器)

CPU在执行一条指令的时候,主要有三个步骤:取指(将指令从内存或者指令Cahe中取出,放到指令寄存器),译码(指令译码器对指令寄存器中的指令进行译码操作从而辨识出所具体什么指令,从而产生各种时序信号),执行(指令执行单元根据译码的结果进行计算和存储结果)

流水线技术-背景

根据电路的结构我们发现:取指阶段占用的CPU硬件是指令通路和指令寄存器;译码阶段占用的是CPU硬件是指令译码器;执行阶段占用的是CPU硬件的执行单元和数据通路。三者占用的CPU硬件完全不同,这就形成列三级的流水线,如下:在对第一条指令译码的时候,可以同时对第二条指令进行取指操作;在对第一条指令进行执行的时候,可以同时对第二条进行译码,对第三条进行取指。

流水线技术-概念

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可同时为多条指令的不同部分进行工作,已提高各部件的利用率和指令的平均执行速度。

流水线技术-本质

流水线技术的本质是利用指令运行时间不同阶段使用不同的硬件相互不同,并发运行多条指令,从而提高了时间效率。

在这里插入图片描述
流水线周期 (△t)

流水线周期为执行时间最长的那一段,执行的时间段为取值,分析,执行。

流水线的计算公式为

完成一条指令所需的时间+(指令条数-1)*流水线周期,在这个公式中,又存在理论公式和实践公式。

①理论公式:(t1+t2+t3+..tk)+(n-1)* △t

②实践公式: (k+n-1)* △t     k为一条指令所包含多少段

例题:若指令流水线一条指令分为取指、分析、执行三个阶段,并且这三个阶段的时间分别为取指1ns,分析2ns,执行1ns,则流水线的周期为多少?100条指令全部执行完毕需要执行的时间是多少?

分析:上面已经说过,流水线的周期为花费时间最长的阶段所花费的时间,所以流水线的周期就是2ns。

根据理论公式,T=(1+2+1)+(100-1)*2=4+99*2=202ns

根据实践公式,T=(3+100-1)*2=204ns

在这里,需要注意的是,因为流水线的理论公式和实践公式的结果不一样,但是在考试过程中可能都会考到,所以,在应用时,先考虑理论公式,后考虑实践公式。

流水线-吞吐率

流水线的吞吐率(Though Put rate ,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量;

在这里插入图片描述
上面例题的流水线吞吐率=100/203

上面例题拓展:1条指令/1条指令执行时间,上面例题的流水线吞吐率为 1/2; 即为最长流水段操作时间的倒数!

吞吐率公式拓展:n为指令条数,k1,k2,k..为指令各段执行时间,△t为最大执行时间,吞吐率 = n/((k1+k2+k..+△t)+(n-1)*△t) = n/(k1+k2+k..+n*△t); 当n无限大时,吞吐率就越接近最长流水段操作时间的倒数 !!!

流水线-加速比

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。

S = 不使用流水线执行时间/使用流水线执行时间

上面例题的 S=500/203

拓展:n为指令条数,k1,k2,k…为指令各段执行时间,△t为最大执行时间

加速比 = (k1+k2+k…+△t)n/(k1+k2+k…+n△t),当n无穷大时,忽略k1+k2+k… ;

结果可以认为是

S=(k1+k2+k..+△t)/△t

上面例题的加速比S = 5/2

在这里插入图片描述
我们按照公式计算得到:

S=(6+7+8+9+6)n/[(6+7+8+9+6)+9(n-1)]=36n/[36+9(n-1)]=4n/(4+n-1)

我们用一个极限的思想来求一个加速比:
在这里插入图片描述
流水线-效率

流水线的效率是指流水线的设备利用率,在时空图上,流水线的效率定义为n个任务占用的时空区与k个流水段总的时空区之比

E= n个任务占用的时空区/k个流水段的总时区

流水线的设备利用率,公式是:
在这里插入图片描述

效率和吞吐率的关系:
在这里插入图片描述

和加速比的关系:
在这里插入图片描述

在这里插入图片描述
E=(△t+△t+△t+3△t)*4/15△t*4

举例2

在这里插入图片描述
(1) 求连续输入 10 条指令,该流水线的实际吞吐率和效率;

解:(1)

在这里插入图片描述

这个效率E的计算没太懂,按照定义算发现也可以
E
= 设备实际使用时间 / 整个运行时间
= ( 每条指令耗时 * 指令数量 ) / ( 流水线运行时间 * 流水线级数段数 )
= ( 50ns + 50ns + 100ns + 200ns ) * 10 / ( 2200ns * 4 )
= 5 / 11
≈ 45.45%

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,作为人工智能,我无法提供思维导图。但我可以为您介绍一下流水线工作原理和冲突处理方法。 计算机体系结构流水线的工作原理: 流水线是一种计算机结构,用于提高指令处理速度。流水线将一个指令处理分成若干个流水段,每个流水段负责执行一个指令处理的一部分。同时,多条指令可以在不同的流水段同时处理,从而提高了处理效率。 流水线中一般包含以下五个流水段: 1. 取指令(IF):从内存中读取指令。 2. 指令译码(ID):将指令翻译为计算机可以理解的指令。 3. 执行指令(EX):执行指令的操作。 4. 存储访问(MEM):访问内存来获取数据。 5. 写回结果(WB):将执行的结果写回内存或寄存器中。 冲突处理方法: 1. 数据相关(Data Hazards):当一条指令需要用到另一条指令才能执行时,就会出现数据相关。 解决方法: ① 前推技术(Forwarding):让结果直接流动到需要的地方,绕过数据相关的指令。 ② 排队技术(Stalling):将流水线暂停,等待需要的数据指令完成。 2. 控制相关(Control Hazards):当分支指令的结果未知时,即分支指令的条件尚未满足,就会出现控制相关。 解决方法: ① 预测分支指令的结果,提前预测好接下来的指令,以减少等待时间。 ② 延迟槽技术(Delayed Branch):在分支指令之后加入一个无操作指令,使得下一条指令一定会执行。 以上是计算机体系结构流水线相关与冲突处理方法的介绍,希望对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值