指令乱序执行给我们带来了什么?

指令乱序执行给我们带来了什么?




    在冯.洛伊曼时代计算机各个操作只能串行完成,任何时刻都只能进行一条指令待上一条指令执行完了才能执行下一条指令,随着社会生产力水平提高,人们追求的目标之一就是高运算速度,因此并行处理技术便成为计算机发展的主流。

一条指令是如何执行的?

    下面看一幅图展示了CPU一条指令执行经历了取指令、指令译码、执行指令、访存取数、结果写回等5个阶段。
在这里插入图片描述

    假如有5条指令,第一条指令去内存读数据,等数据读回来后才开始执行下面一条数据。会有什么效果呢?下面是一副烧水泡茶图。
在这里插入图片描述
    如何才能在最短时间内喝上茶呢?一种方案要等20分钟后才能喝茶另一种方案16分钟后就能和上茶。毫无疑问第二种并行的方案更节省时间。同理CPU要在最短时间内执行完指令也需要用像烧水泡茶那样的并行技术处理一些指令。

什么是并行处理技术?
    并行处理技术本质就是为了提高CPU的运行速度,类似多线程。它包含了同时性和空间性。主要有时间并行、空间并行、时间+空间并行这3种形式。
  • 时间并行的概念就是采用流水处理部件,保证计算机有较高的性能价格比。
  • 空间并行即资源重复,主要体现在处理器系统和多计算机系统。
  • 时间+空间并行指时间重复和资源重复的综合应用,是时间并行和空间并行的结合,例如奔腾CPU就采用了超标量流水技术,结合了时间并行和空间并行的形式,引入了指令的乱序执行和分支预测技术,大大提高了处理器的性能。因此,超标量指令流水线结构一直延续到现代处理器
超标量指令流水线结构一直延续到现代处理器?

在这里插入图片描述
    这是一幅“CPU流水结构”图,指令流水线属于CPU流水结构中执行部件之一,流水线分别有指令流水线、算术流水线、处理机流水线三种类型,而计算机则使用的是指令流水线。那么超标量指令流水线又是什么呢?
解释超标量指令流水线包含三个概念:指令流水线、标量、超标量。

  • 指令流水线又叫指令步骤的并行,处理过程分为取指令、译码、取操作数、执行、写回等几个并行处理的过程

  • 超标量指令流水线也具有取指令、译码、取操作数、执行、写回这个几个步骤

  • 标量指计算机只有一条指令流水线

  • 超标量值计算机具有两条以上的指令流水线

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
        通过上面一组图直观比较后发现,非标量,标量,超标量在相同单位时间内执行的指令得出如下结论

类别单位时间 8
非标量2条指令
标量5条指令
超标量10条指令

    显然,流水技术的应用使计算机的速度有了大大提高,现代计算机CPU由于采用了超标量流水技术从而引入了指令乱序执行。不过CPU也不是随时都能乱序执行的,前提是指令之间不能有依赖关系。如下图中所示
在这里插入图片描述

如何证明乱序执行?
    看这么一个小程序(参考链接: https://www.jianshu.com/p/148f86d6a80b)原来是证明乱序执行,在第一个线程中加入b = a;使b依赖a,如果出现0,0组合说明乱序了,反之不是。多次执行没有出现0,0组合,理论上来说是不会出现乱序执行的,因为指令之间出现了依赖。

输出:
第1894020次 (1,1)
第1894021次 (1,1)
第1894022次 (1,1)说明cpu乱序执行指令之间不能有依赖关系。

参考;百度百科,计算机组成原理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值