赞
踩
本文翻译摘录自“ComputerArchitecture : A Quantitative Approach (6th Edition)”。
本文介绍一些简单的编译器技术用来提高处理器开发ILP的能力,这些技术对于使用静态发射或静态调度的处理器非常重要。
1. 基本流水线调度和循环展开
为了使流水线能够保持满载,必须找出可以在流水线中重叠的不相关指令序列,充分开发指令并行。为了避免流水线停顿,必须将相关指令与源指令的执行隔开一定的时间周期,这一间隔应当等于源指令的流水线延迟。编译器执行这种调度的能力既依赖于程序中可用ILP的数目,也依赖于流水线中功能单元的延迟。下表给出了在本章采用的FP单元的延迟,如果偶尔采用不同延迟,会另行明确说明。假定采用一个标准的5级整数流水线,所以分支的延迟为一个时钟周期。假定这些功能单元被完全流水线化或复制(复制次数与流水线深度相同),所以在每个时钟周期可以发射任何一个类型的指令,不存在结构性冒险。
在这一小节,我们将介绍如何通过转换循环来提高可用ILP的数目。下面的例子是对一个标量和一个向量求和:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。