动态调度(Cnt),推断执行 和IP 计算机体系结构 Chapter4_3.1
计算机体系结构Chapter4_3.1 动态调度 (Cont), 推断执行 和ILP
Review Tomasulo 引入动态调度的动机 动态硬件方案可以用硬 在没有专用编译器的情况下,提高 件进行循环展开 系统性能 解决编译时无法判定的部分相关问 如何处理分支? 题 我们可以用硬件做循环展 · Scoreboard和 Tomasula 开必须可以解决分支指令 Tomasula主要贡献 题 Dynamic scheduling 如何处理精确中断? · Register renaming-消除了WWAW, Out-of-order execution WAR相关 out-of-order completion Load/store disambiguation 算法的主要缺陷 复杂 要求高速CDB 性能受限于 Common data bus 计算机体系结构 Chapter4 3.2
计算机体系结构 Chapter4_3.2 Review Tomasulo ▪ 引入动态调度的动机 • 在没有专用编译器的情况下,提高 系统性能 • 解决编译时无法判定的部分相关问 题 • Scoreboard 和Tomasula ▪ Tomasula 主要贡献 • Dynamic scheduling • Register renaming---消除了WAW, WAR相关 • Load/store disambiguation ▪ 算法的主要缺陷 • 复杂 • 要求高速CDB • 性能受限于Common Data Bus ▪ 动态硬件方案可以用硬 件进行循环展开 ▪ 如何处理分支? • 我们可以用硬件做循环展 开必须可以解决分支指令 问题 ▪ 如何处理精确中断? • Out-of-order execution out-of-order completion!
为什么顺序发射? 顺序发射使我们可以进行程序的数据流分析 我们可以知道某条指令的结果会流向哪些指令 如果我们乱序发射,可能会混淆RAW和WAR相关 每一周期发射多条指令也使用该原则将会正确地工作 需要多端口的“ rename table”,以便同时对一组指令所用 的寄存器重命名 需要在单周期内发射到多个RS中 ·寄存器文件需要有2X个读端口和x个写端口 计算机体系结构 Chapter4 3.3
计算机体系结构 Chapter4_3.3 为什么顺序发射? ▪ 顺序发射使我们可以进行程序的数据流分析 • 我们可以知道某条指令的结果会流向哪些指令 • 如果我们乱序发射,可能会混淆RAW和WAR相关 ▪ 每一周期发射多条指令也使用该原则将会正确地工作: • 需要多端口的 “rename table” ,以便同时对一组指令所用 的寄存器重命名 • 需要在单周期内发射到多个RS中. • 寄存器文件需要有2x 个读端口和x个写端口
关于异常处理??? 乱序完成加大了实现精确中断的难度 在前面指令还没有完成时,寄存器文件中可能会有后面指令的 运行结果 如果这些前面的指令执行时有中断产生,怎么办? 例如: DIVD F10FO F2 SUBD F4.F6F8 ADDD F12F14.F16 需要“ rollback"寄存器文件到原来的状态 精确中断的含义是其返回地址为: 该地址之前的所有指令都已完成 其后的指令还都没有完成 实现精确中断的技术:顺序完成(或提交) 即提交指令完成的顺序必须与指令发射的顺序相同 计算机体系结构 Chapter4 3.4
计算机体系结构 Chapter4_3.4 关于异常处理??? ▪ 乱序完成加大了实现精确中断的难度 • 在前面指令还没有完成时,寄存器文件中可能会有后面指令的 运行结果. • 如果这些前面的指令执行时有中断产生,怎么办? • 例如: DIVD F10, F0, F2 SUBD F4, F6, F8 ADDD F12, F14, F16 ▪ 需要“rollback” 寄存器文件到原来的状态: • 精确中断的含义是其返回地址为: - 该地址之前的所有指令都已完成 - 其后的指令还都没有完成 ▪ 实现精确中断的技术:顺序完成(或提交) • 即提交指令完成的顺序必须与指令发射的顺序相同
进行循环重叠执行需要尽快解决分支问题! ■在循环展开的例子中,我们假设整数部件可以快速解决分 支问题,以便进行循环重叠执行! Loop LD F00 R1 MULTD F4 F0 F2 SD F40 R1 sUB工 R1R1#8 BAEZ R1 Loop 如果分支依赖于mutd,怎么办?? 需要能预测分支方向 ·如果分支成功,我们就可以重叠执行循环 对于 superscalar机器这一问题更加突出 计算机体系结构 Chapter4 3.5
计算机体系结构 Chapter4_3.5 进行循环重叠执行需要尽快解决分支问题! ▪ 在循环展开的例子中,我们假设整数部件可以快速解决分 支问题,以便进行循环重叠执行! Loop: LD F0 0 R1 MULTD F4 F0 F2 SD F4 0 R1 SUBI R1 R1 #8 BNEZ R1 Loop ▪ 如果分支依赖于multd,怎么办?? • 需要能预测分支方向 • 如果分支成功,我们就可以重叠执行循环 ▪ 对于superscalar机器这一问题更加突出