指令流水线

来源:互联网 发布:java中的out是什么意思 编辑:程序博客网 时间:2024/04/28 12:38

指令流水线

指令流水线是为了提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。

比如:一条指令执行要经过三个阶段:取指令、译码、执行,每一个阶段都要花费一个机器周期,如果没有采用流水线技术的话,那么这条指令执行需要三个机器周期;

如下图:

如果采用了指令流水线技术,那么当这条指令完成“取指”后进入“译码”的同时,下一条指令就可以进行“取指”了,这样就能提高了指令的执行效率。

如下图:


从两张图片中可以很明显的区分出来,用上了指令流水线的技术之后在时间方面节约了不少时间。

目前,几乎所有的高性能计算机都采用了指令流水线。

上面介绍了指令流水线的优点,那么怎么来计算指令流水线的时间呢?

我们可以选择最粗鲁而又原始的方法,就是数。当然在上面图中我们可以用这种方法,但是当指令多的时候呢?像我们使用的一般普通计算机,一秒钟就有成千上万个指令传输,倘若要数,这是一项伟大的工程,那么我们有什么方法能简单快捷的算出来的吗,这个是有就可以用到这么一个公式:

,执行第一条指令所需时间+(指令次数 - 1)*流水线周期

流水线周期=max机器周期

既然我们知道了指令流水线周期和指令流水线运行时间,那么关于指令流水线方面的吞吐率和加速比以及指令流水线的效率就不难计算了,公式如下:

流水线加速比S:

指令流水线吞吐率:

指令流水线的效率E:

从上面的公式上我们可以看出

流水线的效率和流水线的吞吐率之间的关系是:

E = TP△T,

流水线的效率和流水线的加速比之间的关系是:

S=EK