《汇编程序设计与计算机体系结构:软件工程师教程》 —2.3.4 指令流水线
2.3.4 指令流水线
当前流行的这些处理器,其指令执行周期的三大阶段其实都包含着许多个小的阶段。设计处理器的人这些年来发现,如果同时执行指令周期中这些不同的阶段,那么处理器的性能可以发挥得更好,例如在解码第一条指令的同时把第二条指令获取出来,等到执行第一条指令的时候则对第二条指令进行解码,依此类推。这种重叠式的设计就叫作指令流水线(instruction pipelining,也称为指令管线化)技术,如图 2-11 所示。
用洗衣服的过程做例子可以帮你更好地理解指令流水线技术。如果只有一堆衣服要洗,那么通常的流程是:先把衣服汇集起来然后放入洗衣机里洗,接下来放入干衣机里烘干,最后把衣服放好。问题是如果有两批衣服要洗那应该怎么办?是先把其中一批按照这四个流程处理完然后再处理另外一批,还是在洗第一批衣服的同时就把第二批衣服汇集起来,从而可以在第一批衣服正烘干的时候洗第二批衣服?显然后面一种做法更省时间。这个例子很能说明指令流水线技术的原理。CPU 的获取、解码及执行功能是由不同的组件负责的,其中任何一个组件都无法身兼三种职能,然而这些组件却可以在同一时刻分别完成自己所能处理的工作,从而不会陷入无事可做的状态。这样能够更好地利用时间并提升处理器的效率。
提示:在当前的处理器中,能够完成获取、解码与执行这三种功能的组件都不止一个,这样可以令 CPU 在同一时间段内尽量多处理一些指令。
图 2-11 流水线式的指令执行周期
前面说过,指令执行周期可以分成多达 20 个阶段,具备这种规模的指令流水线称为超流水线(superpipeline),它使得 CPU 能够同时在多条指令上分别执行这 20 个不同的阶段。CPU 的流水线越多,同一时间段内所能做的工作也越多。假设每个阶段需要 1 个时钟周期,如果用不带流水线技术的处理器来执行这种需要 20 个步骤才能完成的指令,那么执行 10 条指令就至少需要 200 个时钟周期才行,因为必须等前一条指令经历完这 20 个阶段才能开始执行后一条指令。反之,如果像图 2-12 这样用支持流水线技术的 CPU 来执行,那么只需 29 个时钟周期即可,其处理速度是前者的 690%,而且所需执行的指令数越多速度上的优势就越大。
图2-12 20 个阶段的超流水线
- 点赞
- 收藏
- 关注作者
评论(0)