《汇编程序设计与计算机体系结构:软件工程师教程》 —2.3.4 指令流水线

举报
华章计算机 发表于 2019/12/04 11:40:44 2019/12/04
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第2章,第2.3.4节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

2.3.4 指令流水线

当前流行的这些处理器,其指令执行周期的三大阶段其实都包含着许多个小的阶段。设计处理器的人这些年来发现,如果同时执行指令周期中这些不同的阶段,那么处理器的性能可以发挥得更好,例如在解码第一条指令的同时把第二条指令获取出来,等到执行第一条指令的时候则对第二条指令进行解码,依此类推。这种重叠式的设计就叫作指令流水线(instruction pipelining,也称为指令管线化)技术,如图 2-11 所示。

用洗衣服的过程做例子可以帮你更好地理解指令流水线技术。如果只有一堆衣服要洗,那么通常的流程是:先把衣服汇集起来然后放入洗衣机里洗,接下来放入干衣机里烘干,最后把衣服放好。问题是如果有两批衣服要洗那应该怎么办?是先把其中一批按照这四个流程处理完然后再处理另外一批,还是在洗第一批衣服的同时就把第二批衣服汇集起来,从而可以在第一批衣服正烘干的时候洗第二批衣服?显然后面一种做法更省时间。这个例子很能说明指令流水线技术的原理。CPU 的获取、解码及执行功能是由不同的组件负责的,其中任何一个组件都无法身兼三种职能,然而这些组件却可以在同一时刻分别完成自己所能处理的工作,从而不会陷入无事可做的状态。这样能够更好地利用时间并提升处理器的效率。

      提示:在当前的处理器中,能够完成获取、解码与执行这三种功能的组件都不止一个,这样可以令 CPU 在同一时间段内尽量多处理一些指令。

 image.png

图 2-11 流水线式的指令执行周期

前面说过,指令执行周期可以分成多达 20 个阶段,具备这种规模的指令流水线称为超流水线(superpipeline),它使得 CPU 能够同时在多条指令上分别执行这 20 个不同的阶段。CPU 的流水线越多,同一时间段内所能做的工作也越多。假设每个阶段需要 1 个时钟周期,如果用不带流水线技术的处理器来执行这种需要 20 个步骤才能完成的指令,那么执行 10 条指令就至少需要 200 个时钟周期才行,因为必须等前一条指令经历完这 20 个阶段才能开始执行后一条指令。反之,如果像图 2-12 这样用支持流水线技术的 CPU 来执行,那么只需 29 个时钟周期即可,其处理速度是前者的 690%,而且所需执行的指令数越多速度上的优势就越大。

 image.png

图2-12 20 个阶段的超流水线


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。