当前位置:   article > 正文

系统结构期末复习(四)指令级并行_指令多流出处理器的流出能力主要受哪3个方面的影响?

指令多流出处理器的流出能力主要受哪3个方面的影响?

目录

  1. 指令级并行概念
  2. 指令的动态调度和Tomasulo算法
  3. 动态分支预测技术
  4. 多指令流出基础(超标量、超长指令字、超流水
  5. 循环展开和指令调度
重要知识点:
1. 流水线实际CPI
2. 基本程序块
3. 循环级并行
4. 循环展开
5. 数据流
把握要点:
6. 流水线处理的实际CPI和基本程序宽度该奶奶
7. 循环级并行和基本的开发技术
8. 相关与流水线冲突以及解决方法、程序顺序
9. 数据流和异常行为,这里需注意使用并行化技术进行改进,其结果要与串行执行的结果一致
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
本章研究目的

在流水线思想的基础上进一步扩展,开发出更多的指令集并行

1. 指令级并行的概念(ILP)

  • 指令集并行:指令间存在的潜在并行性。(几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。)
  • 开发ILP的方法主要有两种:基于硬件的动态开发方法基于软件的静态开发方法(这两种方法可以混用,动态和静态相结合才能充分的开发程序中潜在的ILP)
  • 流水线处理机的CPI等于理想流水线的CPI加上各类停顿的时钟周期数:
    在这里插入图片描述
    理想CPI是衡量流水线最高性能的一个指标,IPC是每个时钟周期完成的指令条数。
  • 基本程序块:如果一串连续的代码除了入口和出口外,没有其他的分支指令和转入点,则为一个基本程序块(一个程序块中可并行的指令过少,必须跨越多个基本程序块开发ILP)
  • 循环级并行性:开发循环的不同迭代之间存在的并行性【增加指令之间的并行性最简单和最常用的方法】
    1. 每一次循环都可以和其他循环重叠并行执行
    2. 每一次循环内部却是没有任何的并行性可言
  • 循环型并行性转换为ILP的方法:
    1. 循环展开处理
    2. 采用向量指令和向量数据表示
      在这里插入图片描述
  • 确定程序中指令之间存在什么相关,对于确定程序中有多少并行性以及如何开发这些并行性具有重要意义。
  • 相关是程序固有的一种属性,他反映了程序中指令之间的相互依赖关系。而具体的一次相关是否会导致实际冲突以及该冲突会带来多长时间的停顿,则是流水线的属性。
  • 克服相关限制开发ILP:
    在这里插入图片描述
  • 程序顺序:由源程序确定的在完全串行方式下指令的执行顺序。(只有在可能影响程序正确性的情况下才保持程序顺序)
  • 对于正确执行程序来说,必须保持的最关键的两个属性:数据流异常行为
    1. 保持异常行为:无论怎么改变指令的执行顺序都不能改变程序中异常的发生情况。(经常被弱化为:指令执行顺序的改变不能导致程序中发生新的异常)
    2. 数据流:数据值从其生产者指令到其消费者指令的实际流动。【分支指令使得数据流具有动态性,因为它使得给定指令的数据可以有多个来源】
    3. 如果能做到保持程序的数据相关和控制相关,就能保持程序的数据流和异常行为。(控制相关的影响不大:原因见教材108页最后一段)
      在这里插入图片描述
    4. 仅仅保持数据相关性是不够的,因为一条指令有可能数据相关于多条先前指令,所以只有再加上保持控制顺序才能保持程序顺序,知道哪条指令是真正所需数据的生产者。
      在这里插入图片描述
      通过保持控制相关可以避免对数据流的非法修改,所以DSUBU不能被移到分支指令之前。有时发现不遵守控制相关既不影响异常行为,也不改变数据流,这是就可以大胆地进行指令调度,把失败分支中的指令调度到分支指令之前。
  • 前瞻执行不仅能解决异常问题,而且能够在保持数据流的情况下减少控制相关对开发ILP的影响。

2. 指令的动态调度

在这里插入图片描述

2.1 动态调度的基本思想

  • 指令顺序执行:
    指令放入流水线的顺序和指令完成的顺序一致
  • 指令乱序执行:
    指令放入流水线的顺序和指令完成的顺序不一致,也就是有些指令进入流水线后呗阻塞,而在其后进入流水线的指令先完成了
  • 简单流水线的局限性:
    其指令是按程序顺序流出和按序执行的。

第一个问题

在这里插入图片描述
在之前的简单流水线中,只有当既没有数据冲突也没有结构冲突的时候才能继续流出指令。
在这里插入图片描述
不采用定向技术顺序流动,产生数据冲突后,后面的指令被阻塞不动。所以后面从IF开始执行。

如果想要让ADD指令流出,需要进行一些改进:原来数据冲突和结构冲突的检测都在ID段,现在必须把指令流出的工作拆分为两个步骤:【
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/271777
推荐阅读
相关标签