课程
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来实现指令的捆绑,格式相似













