计算机指令流水线时间计算,计算机指令-流水线和吞吐率

流水线

我们把计算机的一条指令抽象成三个步骤(实际不止这些)

3dda11532db982263285b893171ab7a8.png

现在向计算机发送三条指令A,B,C,如果不采用流水线的方式传输,那么在每个机器周期中的执行步骤如下图所示(我们假设每个步骤都会耗费一个机器周期):

755946d556e6253d4122ce9be7cb8840.png

采用流水线的方式传输如下图所示:

054bd080e6c22c37fea59f6b9d46b9d9.png

对比上面两张图,我们可以看出,流水线是一种准并行处理技术:

第1个机器周期:处理A指令的取指步骤

第2个机器周期:处理A指令的分析步骤,同时也在处理B指令的取指步骤

以此类推,我们可以看出,同一机器周期只允许处理不同的步骤,不能处理相同的步骤,这样在保证指令安全的同时也可以加快处理速度,提升了效率,这就是流水线带来的好处

吞吐率

流水线理解了,吞吐率就好说了,这里的吞吐率指的是流水线的吞吐率,简单理解吞吐率就是通过数值来反应计算的处理速度,先列个公式:吞吐率 = 指令条数 / 流水线时间

指令条数:需要计算吞吐率的指令的总数

流水线时间:这里的流水线时间指的并不是一个指令流水线花费的时间,而是跑完公式中指定的指令条数所需要的时间,对比上面两个图,一条指定所需要耗费的流水线时间是3个机器周期,而跑完ABC三条指令耗费的流水线时间是5个机器周期,对于流水线时间,有个计算公式:一条指令流水线所需要耗费的时间   + (指令条数 - 1)* 一条流水线中最耗时的步骤时间

吞吐率一般分为实际吞吐率和最大吞吐率,下面我从两个案例来分别讲述:

实际吞吐率

b8f4c84509a8274ec3dace31cd2c207b.png

按照上面的公式,指令条数为8条,流水线时间=(1+2+3+1) + (8-1) * 3=28,结果就显而易见是C了

最大吞吐率

ba7030eeefc96cafd323e8a84499b91b.png

我们列个一元二次方程,设最大吞吐率为y,指令条数为x,按照上面的公式y=x /((2+1+3+1+2) + (x-1)* 3),简化下就是y=x / (3x + 6)=1 / 3 - 2 / (3x-6),x为正整数,当x趋于无穷大的时候,y的最大值为1/3

大家想要更加详细的了解其中的原理,可以参考:https://blog.csdn.net/yi_zz/article/details/7479912

用通俗易懂的语言阐述复杂的概念,学无止境,共勉前进!!!

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值