摘要:
3.6 基于硬件的前瞻执行 Tomasulo算法通过寄存器重命名、设置预留站和使用公共数据总线等方式,优化指令的并行执行,能够处理数据依赖,但在处理控制依赖时存在局限。如果存在分支带来的控制依赖,Tomasulo算法需要等待分支指令的执行结果,(或者不等待,但可能导致中断的不精确,乱序执行本身就会导 阅读全文
摘要:
3.5 动态调度的例子与算法 Tomasulo算法优势 分布式危险检测逻辑。分布式保留站和CDB实现,如果多个指令正在等待单个结果,并且每个指令已经有了它的其他操作数,那么可以通过在CDB上广播结果来同时释放这些指令。如果使用集中式寄存器文件,当寄存器总线可用时,这些单元必须从寄存器中读取它们的结果 阅读全文
摘要:
3.4 利用动态调度克服数据危险 本节将探讨动态调度,硬件重新安排指令执行以减少停顿,同时保持数据流和异常行为。基于硬件的动态调度有几个优点。 它允许汇编代码在不同流水线上运行,避免二进制文件对不同微体系结构重新编译的需要。 可以处理编译时依赖项未知的情况。 允许处理器容忍不可预测的延迟,比如缓存丢 阅读全文
摘要:
3.3 利用先进的分支预测降低分支开销 前置知识:分支预测缓冲Brach-Prediction Buffer(BPB,最简单的动态分支预测) 1bit准确率不够,4K-entry 2-bits BPB准确率能够达到80%以上,且与无限entry的准确率相当。 BPB的典型实现为cache,在IF阶段 阅读全文
摘要:
3.2 实现ILP的基本编译技巧 指令调度和循环展开 为了尽可能避免流水线的停滞,可以寻找指令间的依赖关系并重叠不相关指令序列。 循环展开可以减少分支指令次数,使用不同的寄存器来避免不必要的约束,更多的指令也可以更方便进行指令调度。但是需要调整循环终止和迭代代码。 所有这些转换背后的关键需求是理解一 阅读全文
摘要:
3.1 指令级并行:概念与挑战 指令集并行ILP的定义 处理器使用流水线来重叠指令的执行并提高性能,指令之间的这种潜在重叠被称为指令级并行,因为指令可以并行计算。 利用ILP有两种主流方法 1.依靠硬件来帮助动态地发现和利用并行性的方法(桌面端CPU常用,例如酷睿系列); 2. 依靠软件技术在编译时 阅读全文