论文部分内容阅读
随着对现代微处理器高性能和高能效的需求日益提高,如何在低功耗和低硬件复杂度的约束条件下进一步提高微处理器性能,已经成为微处理器设计领域所面临的重要问题。为应对这一挑战,软硬件协同优化技术,尤其是编译与微体系结构协同优化技术,已成为提高现代微处理器性能和能效的重要手段之一。编译与微体系结构协同优化技术通过将编译时刻的高层次静态信息与运行时刻的动态信息相结合,能够在低功耗和低硬件复杂度条件下进一步提高微处理器的性能。 本文面向以北大众志UniCore微处理器为代表的现代微处理器,展开了编译与微体系结构相结合的软硬件协同转移预测技术研究。在现代高性能微处理器中,转移预测准确率是决定推测式执行有效性的关键因素,对微处理器的性能和能效都具有重要意义。现有的转移预测技术通常使用复杂的硬件结构以追求更高的预测准确率,但同时也会带来显著的硬件容量开销、设计复杂度开销、芯片面积和功耗开销,并且可能导致预测延时增加从而降低性能。本文针对条件转移指令和间接转移预测指令这两类主要的转移指令,分别提出了多个软硬件协同转移预测技术,通过将编译时刻所识别的高效历史关联信息和数据关联信息反馈到动态转移预测器,在低复杂度硬件条件下有效提高了转移预测准确率,从而提高了微处理器的性能和能效。 本文的主要内容和贡献包括: (1)提出了一种基于编译指导历史栈的软硬件协同条件转移预测技术。针对现有条件转移预测器难以跟踪远距离历史关联信息的问题,本文提出了一种低硬件复杂度的编译指导历史栈技术,由编译器在编译时刻根据循环、函数调用等程序结构显式标识远距离关联信息,动态转移预测器在运行时刻根据编译指导信息,使用一个小容量栈式缓冲区动态保存和恢复全局历史信息,从而跟踪到远距离的全局历史关联信息,并提高了转移预测准确率。编译指导历史栈技术可以与所有现有的基于全局历史的动态转移预测器相结合,仅需要添加64字节的额外硬件容量和简单控制逻辑。实验结果表明,编译指导历史栈技术可使得典型超标量处理器的条件转移失效数减少26%,性能提高5.2%,能效提高8%。 (2)提出了一种基于子程序结构信息的编译指导值关联间接转移预测技术。针对现有间接转移预测器难以识别高效值关联信息的问题,本文提出了一种根据虚函数调用、Switch-case语句、函数指针调用这三种典型子程序结构识别高效关联数据值的编译方法,并设计了一种可有效使用编译指导值关联信息的低复杂度间接转移预测器硬件结构。实验结果表明,基于子程序结构的间接转移预测器仅需要384字节额外硬件容量和简单控制逻辑,即可使得典型超标量处理器的性能提高15%,能效提高28%。 (3)提出了一种基于编译指导值模式的软硬件协同间接转移预测技术。针对现代高性能微处理器中广泛存在的关联数据值在预测时刻不可用问题,本文提出了一种新型的关联信息:编译指导值模式,将多个数据值组合形成一个复合体,使用间接转移指令关联数据值的上下文信息引导间接转移预测。值模式信息反映了间接转移指令关联数据值的上下文信息,即使在关联数据值在预测时刻不可用的情况下,值模式仍然与间接转移目标地址具有较强关联性。实验结果表明,相对于使用值关联信息的VBBI预测器和使用全局历史信息的ITTAGE预测器,本文所提出的值模式信息可使得典型超标量处理器的间接转移预测准确率分别提高9.9%和3.7%。 (4)提出了一种软硬件协同的混合型值关联间接转移预测技术。针对单一的关联信息通常仅能在特定应用场景才能获得较高性能的特点和局限性,本文提出了一种混合型间接转移预测技术,转移预测器根据编译指导信息在运行时刻同时维护多种关联信息,并根据不同的运行场景分别选择不同的关联信息引导间接转移预测。实验结果表明,混合型关联预测器能够综合多种关联信息的优势,避免了单一关联信息的局限性,从而使得转移预测器能够适应于各种不同特征的程序,进一步提高微处理器的性能和能效。