视频加载失败

课程

1108 字
约 4 分钟

CH06

计算机体系结构notes/csdn-review·更新于 2026-09-15

第6章:指令级并行及其开发-软件方法

软件的静态调度

  • 循环展开的本质;
  • 全局指令调度引入的原因、目标
    • 分支结构的循环体需要在多个基本块间移动指令,称为“全局指令调度”
    • 目标:在保持原有数据相关和控制相关不变的前提下(保证结果正确),尽可能的能地缩短包含分支结构的代码段的总执行时间。
    • 全局指令调度基本思想:在循环体内的多个基本块间移动指令,扩大…频率较高的基本块的体积(放到延迟槽中)。优化执行效率高的…
  • 全局指令调度:踪迹调度、超块调度
  • 显示并行指令计算EPIC
    • 条件传输指令与谓词执行的简单应用…指令含义)

软件的静态调度

循环展开的本质是增加循环体内语句的并行性,利用CPU指令级并行,减少更多的停顿。

分支结构的循环体需要在多个基本块间移动指令,称为 “全局指令调度”

  • 目标:在保持原有数据相关和控制相关不变的前提下(保证结果正确),尽可能地缩短包含分支结构的代码段的总执行时间。
  • 全局指令调度基本思想:在循环体内的多个基本块间移动指令,扩大那些执行频率较高的基本块的体积(放到延迟槽中)。优化执行效率高的基本块。

为了简化这一过程,提出新的全局指令调度(共同点:优化重点放在那些执行概率较高的路径,将这些路径上的基本块拼接一起成为一个更大的基本块,然后进行优化)

踪迹调度

  • 踪迹(trace):程序执行的指令序列,通常由一个或多个基本块组成,trace内可以有分支,但一定不能包含循环。
  • 踪迹调度(trace scheduling)会优化执行频率高的trace,减少其执行开销。由于需要添加补偿代码以确保正确性,那些执行频率较低的trace的开销反而会有所增加。
  • 踪迹调度非常适合多流出处理器。

超块调度

  • 在踪迹调度中,如果trace入口或出口位于trace内部,编译器生成补偿代码的难度将大大增加,而且编译器很难评估这些补偿代码究竟会带来多少性能损失。
  • 超块(superblock)是只能拥有一个入口,但可以拥有多个出口的结构

显示并行指令计算EPIC

  • EPIC技术通过显式并行指令计算,将指令的并行性明确地表达在编译器层面,这与传统体系结构中由硬件推测并行性的方式形成了鲜明对比。----VLIW
  • 指令级并行主要由编译器负责开发,处理器为保证代码正确执行提供必要的硬件支持,只有在这些硬件机制的辅助下这些优化技术才能高效完成。
  • 系统结构必须提供某种通信机制,使得流水线硬件能够了 解编译器“安排”好的指令执行顺序。
  • EPIC技术利用了VLIW来实现指令的捆绑,格式相似
Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录