课程
计算机体系结构雨课堂第六章作业
计算机体系结构雨课堂第六章作业
1. 循环展开技术提供了挖掘指令级并行性的空间,并能彻底数据冲突。( )
正确答案:错误 (×)
解析:
- 前半句正确:循环展开确实减少了循环控制开销,扩大了基本块,从而增加了指令级并行(ILP)挖掘的机会。
- 后半句错误:“彻底消除”数据冲突过于绝对。循环展开无法消除真正的真数据相关(Flow Dependency),即计算结果的必然依赖。此外,展开可能会增加寄存器压力,甚至导致溢出。
2. 踪迹调度处理分支判断成功与失败概率相差较大的情况。( )
正确答案:正确 (√)
解析:
- 核心逻辑:踪迹调度(Trace Scheduling)针对的是存在明显“热路径”(Hot Path)的程序。
- 原因:它优化执行频率最高的路径,并在偏离路径上插入补偿代码。如果分支两边概率相近,频繁触发补偿代码会抵消优化收益。因此它专门适用于概率相差较大的情况。
3. 在VLIW处理中,一条指令字可能包含多个有效操作。( )
正确答案:正确 (√)
解析:
- 定义:VLIW(超长指令字)架构的核心就是编译器将多个相互独立的操作(如加法、乘法、访存)打包进一条非常长的指令字中。
- 执行:处理器读取一条长指令,并行执行其中的所有操作。
4. 谓词执行时,若谓词为真指令正常执行,反之什么都不做,这是编译器优化的一种技术。( )
正确答案:正确 (√)
解析:
- 机制:谓词执行允许指令根据条件码决定是否提交结果,避免了分支跳转。
- 编译器角色:这通常配合编译器的 If-Conversion(If转换)技术使用,将控制相关转化为数据相关,减少分支预测失败的开销。
5. 有关指令调度说法正确的是( )。
- A. 充分开发指令之间存在的并行性,找出不相关的指令序列让它们在流水线上重叠并行执行
- B. 能彻底消除数据冲突
- C. 指令调度是由硬件完成的方法
- D. 以上说法都正确
正确答案:A
解析:
- A 正确:这是指令调度的核心目标。
- B 错误:无法“彻底消除”真数据相关。
- C 错误:指令调度可由编译器(静态)或硬件(动态)完成,不仅限于硬件。
6. 关于指令调度与循环展开,以下哪种说法是正确的?
- A. 指令调度能够消除所有停顿
- B. 循环展开能够消除所有停顿
- C. 循环展开不会引入任何额外开销
- D. 循环展开是以指令调度为基础的
正确答案:D
解析:
- D 正确:循环展开本身只是扩大了并行性的潜力(通过增加代码量和减少循环控制),必须配合指令调度(将不同迭代的指令穿插排列)才能真正实现并行的性能提升。
- A/B 错误:都不能消除“所有”停顿(如Cache缺失、强依赖)。
- C 错误:循环展开会带来寄存器压力和代码体积增大的开销。
7. 主观题
题目

答案

8. 在循环展开中,指令调度不能跨越分支指令,但全局指令调度可以跨越分支进行指令调度。( )
正确答案:正确 (√)
解析:
- 局部调度:通常受限于基本块(Basic Block),不能跨越分支。循环展开的作用之一就是消除部分分支,扩大基本块。
- 全局调度:如踪迹调度,允许编译器将指令从分支前移动到分支后(或反之),并插入补偿代码,从而跨越分支边界进行优化。
9. 全局执行调度中,依据分支成功或失败的概率,选择概率较大的分支,选择关键路径合并更大的基本块,并进行在该路径上的跨模块调度优化。( )
正确答案:正确 (√)
解析:
- 描述准确:这正是踪迹调度或**超级块(Superblock)**技术的标准定义。
- 流程:Profiling(获取概率) -> 选路(Trace Selection) -> 合并 -> 跨边界调度。
10. 在踪迹调度中,踪迹压缩过程中,若跨越Trace的入口或出口调度时,若需要补偿代码,这种选择永远是正确的。( )
正确答案:错误 (×)
解析:
- 代价分析:补偿代码会导致代码膨胀(Code Bloat)和潜在的性能开销。
- 权衡:只有当主路径优化的收益 大于 补偿代码带来的损失时,这种调度才是划算的。如果分支概率偏差不够大,或者补偿代码量过大,这种选择就是错误的。
11. VLIW属于静态多指令流出技术,完全依靠编译器识别指令级的并行,EPIC 在VLIW的基础上融合超标量的一些优点,也是主要由编译器负责识别指令的并行,借助某种通信机制使得流水线的硬件依据编译器的安排执行相应的指令。( )
正确答案:正确 (√)
解析:
- VLIW:纯静态调度,硬件简单。
- EPIC:继承了VLIW依靠编译器的核心思想,但通过显式标志位(通信机制)增加了硬件的灵活性,解决了部分兼容性和代码密度问题。
12. 谓词执行中的CMOVZ指令,可以将分支指令引起的控制相关转换为相对于分支转移条件的数据相关,从而可以实现减少流水线中的执行开销。( )
正确答案:正确 (√)
解析:
- 原理:用条件传送指令(Conditional Move)替代分支跳转。
- 效果:消除了分支指令,避免了由于分支预测错误导致的流水线冲刷(Flush),代价是引入了数据依赖(需等待条件码生成),但在短分支中通常收益更高。
13. 基于EPIC的前瞻执行与基于硬件的前瞻执行基本原理完全相同。( )
正确答案:错误 (×)
解析:
- 不同点:
- 硬件前瞻:是动态的,由硬件(ROB等)在运行时决定,对编译器透明,出错自动恢复。
- EPIC前瞻:是静态的,由编译器显式安排(移动指令),出错通常需要执行编译器生成的修复代码。
14. 有关循环携带数据相关,说法正确的是( )
- A. 该技术是为了解决循环结构中的相关或分支指令中的数据相关。
- B. 该技术是为了解决循环结构中的控制相关。
- C. 该技术是为了解决循环结构中的数据相关。
- D. 该技术可以借助全局调度在不同迭代中解决相关问题。
正确答案:C
解析:
- C 正确:本题考查对定义的理解。虽然D描述了解决手段且提及了“不同迭代”,但在很多题库的标准答案中,C被视为对“循环携带数据相关”这一问题域最直接的(尽管较为宽泛)的归纳,即它特指循环结构内部产生的数据依赖问题。
- 注:D选项实际上描述得更具体(跨迭代),但在本题语境下,依据你的要求选 C。
15. 有关软流水技术,说法正确的是( )
- A. 是常用的循环优化技术,旨在解决分支相关。
- B. 软流水的对指令级并行的优化完全依靠硬件完成的。
- C. 软流水通过从不同的循环迭代中抽出一部分指令重组循环体,将真相关的指令分隔到不同的循环周期内执行,从而减少数据依赖引起的流水线停顿。
- D. 以上说法都不对。
正确答案:C
解析:
- C 正确:这是软流水(Software Pipelining)的标准定义。通过重组循环体(Kernel),让不同迭代的指令并行执行。
- A 错误:主要是为了解决数据相关(掩盖延迟),而非分支相关。
- B 错误:软流水是编译器的技术(软件),而非完全依靠硬件。













