其他分享
首页 > 其他分享> > 体系结构11_指令级并行

体系结构11_指令级并行

作者:互联网

指令级并行的概念

  指令级并行:当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为指令级并行。

  Instruction-Level Parallelism ,简记为ILP

如何知道指令之间可以并行?硬、软件如何支持指令级并行?如何研究这些问题?

   -硬件技术或者软件技术都可以提高指令级并行性

   -必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行

流水线处理器的实际CPI(平均每条指令使用的周期数)等于理想流水线的CPI加上各类停顿引起的周期数的总和

        CPI(流水线) = CPI(理想)

                                 + 停顿(结构相关)

                                 + 停顿(先写后读)

                                 + 停顿(先读后写)

                                 + 停顿(写后写)

                                 + 停顿(控制相关)

减少其中的任何一种停顿,都可以有效地减少CPI,从而提高流水线的性能

上述技术中有些技术主要是硬件支持

       -循环展开

       -寄存器换名的动态调度(基本的Tomasulo‘s)

       -动态分支指令预测

       -每个周期多发射

       -前瞻技术

所有的技术必须和软件,特别是编译器合作完成

几个基本概念

基本(程序)块:一段除了入口和出口以外不包含其它分支的线性代码段

        程序平均每6-7条指令就会有一个分支

        必须在多个基本快之间开发指令级的并行性

循环级并行:循环体中指令之间的并行性

开发循环级并行的基本技术方法:

   指令调度(scheduling)

   循环展开(loop unrolling)

   换名(renaming)

循环展开调度的基本方法:

 循环展开是展开循环体若干次,将循环级并行转化为指令级并行的技术。

这个过程既可以通过编译器静态完成,也可以通过硬件动态进行。

    开发循环级并行性的另外一个重要技术是向量处理技术

    具有向量处理指令的典型机器是向量计算机,有关向量处理和向量计算机的内容本章不作讨论

本章中的分支指令就是指条件转移指令。

编译器在完成这种指令调度时,受限于以下两个特性

  一是程序固有的指令级并行性

  二是流水线功能部件的执行延迟

 

    

 

  

 

   

 

  

 

   

 

   

 

   

循环展开总结:

  1.对指令进行移动是有效的

  2.展开是有用的

  3.用不同的寄存器

     - 换名

     - 更多的寄存器

  4.消除额外的测试开销

  5.在循环展开时分析LOAD/STORE指令进行内存地址换名

  6.保留真相关

 

 

 

虎子敲可爱(๑• . •๑) 发布了48 篇原创文章 · 获赞 11 · 访问量 3461 私信 关注

标签:11,CPI,并行,并行性,指令,循环展开,流水线,体系结构
来源: https://blog.csdn.net/weixin_42596333/article/details/104207966