代码调度用于涵盖依赖项检测和解决以及并行优化。代码调度通常与传统编译结合使用。代码调度器将一组或一系列可执行指令和强加于其上的优先级约束(通常以 DAG 的形式)作为输入。作为输出,它在每个调度阶段都承担着交付一个不依赖于其他指令的指令的任务,并定义了调度管理精确可用执行时间的最佳选项。传统的非优化编译器可以被视为包括两个主要部分。编译器的前端部分实现 ... 阅读更多
在本节中,我们关注的是流水线加载/存储处理(如加载使用延迟)的一个重要性能指标。加载使用延迟的值是加载流水线执行的特征属性。较大的加载使用值会严重影响处理器性能,尤其是在超标量处理器中。加载使用延迟源于加载使用依赖关系,这是一种 RAW 依赖关系。如果加载指令的结果不能及时由流水线访问以供后续指令使用,则加载使用依赖关系会导致加载使用延迟。加载使用延迟可以通过统计方式或动态方式处理。如果静态分辨率为 ... 阅读更多
FX 流水线可以实现为通用 FX 单元或专用 FX 单元。此外,处理器可以包含一个通用单元或多个通用单元。单个通用 FX 单元所有早期和一些当前设计都使用单个通用 FX 流水线,它是一个如图所示的单个 FX 单元。此处,“通用”一词指的是执行处理器所有整数和布尔运算的能力。除了 1980 年代早期的流水线处理器之外,i486、IBM Power1 (RS/6000)、R (4000)、HP 7100、DEC α 21064、PowerPC 601 和 Power603 都有一个通用 FX 流水线,因此 ... 阅读更多
FX 流水线的逻辑布局首先包括指定 FX 流水线有多少个阶段以及在这些阶段中要执行哪些任务。设计空间的另一个关键方面是 FX 流水线的实现方式。FX 流水线可以从更广泛和更狭义的角度进行解释。从更广泛的意义上讲,它涵盖了指令获取、解码、执行以及如果需要写回的完整任务。在这种情况下,它通常也用于执行 L/S 和分支指令,并被称为主流水线。从更狭义的角度来看,FX ... 阅读更多
流水线指令处理包含两个关键要素,即指令流水线的规范或逻辑布局和实现。逻辑布局确定要掌握的任务。它包括要执行的流水线的声明,以及每个流水线的子任务的详细规范及其执行顺序。在当前处理器中,为每个主要指令类声明了多个流水线。通常,存在独立的流水线来处理 FX 和逻辑数据(称为 FX 流水线)、FP 数据(FP 流水线)、加载和存储(称为 ... 阅读更多