指令流水线的理解

文章详细解释了计算机指令流水线的工作原理,如何通过指令拆分成多段来提高CPU效率,以及流水线冲突的处理,展示了吞吐率计算的实际例子。
摘要由CSDN通过智能技术生成

有指令流水线的吞吐率计算试题如下:

看了网上的几个讲解并不是特别清楚。在这个文章里面 感觉是容易把基本原理搞清楚的。计算机指令-流水线和吞吐率 - MaybePin - 博客园 (cnblogs.com)

然后这里再加上一些自己的想法,巩固一下。

1. 首先如果没有流水线的工作方式,按题中描述的指令,需要1+2+3+1=7t的时间完成,8条指令就需要7*8=56t的时间完成。

2. 为了提高cpu的工作效率,把一条指令分成若干段(平时总看到取指,分析,执行三段的)这里要注意,并不是只能分成3段,比如题中分成了4段。还可以分成5段等等,分成几段就是几条流水线。

3. 为什么一条指令分成若干段之后就可以提高效率了呢。因为在同一个机器周期t内,cpu可以在不同的流水线做不同的工作(执行指令的不同段)。这样就可以在指令1取指完成后,指令2就可以马上进行取指了。比如下图:

不过在这个图中产生了其他问题,在指令1的第2段(橙色)正在工作时,指令2也需要进行第2段的工作。这样就产生了冲突。就只能把指令2向后延迟。   

 

指令2的第2段错开了,可是继续执行,指令3又发生了重叠。只能继续向后推迟整个指令执行时间。直到如下图:

这样就可以持续执行后面的指令。

把指令执行的时间,都映射到左边

这样可以从图中看出来一种执行了 1+2+ 3*8 +1=28次(这和查询到的计算过程不同)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值