论文部分内容阅读
随着微处理器设计和生产工艺的快速发展,存储系统的访问速度与处理器的运算速度之间的差距越来越显著,访存效率成为影响处理器性能的重要因素,存储系统的性能优化从而成为处理器性能提高的关键。
GodsonX是以Godson2处理器为基础设计的x86超标量处理器,由中国科学院计算技术研究所前瞻研究中心新型微系统组设计实现,是高性能通用x86处理器自主研究的一次重要探索,实现了IA-32结构的完全兼容。本文以平衡GodsonX处理器的设计为基础,从提高处理器的性能、优化处理器的访存延时及带宽的角度出发,采用SPECCPU2000作为基准测试程序,结合处理器的访存行为特征,对影响存储系统性能的多个关键问题进行研究,提出了相应的优化技术,并对所提出的优化技术进行了性能评测与分析。
本文主要的创新点及贡献包括:
1.提出了一种自修改代码(SMC)的检测及处理策略。这种解决方案能精确检测处理器内部发生的SMC冲突并能进行高效灵活的处理,其中SMC冲突检测区域的大小是可配置的,并且通过复用访存通路取消了数据cache中用于SMC检测的Tag部分。这种方案在cycle级的C模型下经过充分的验证,并在RTL一级进行了实现,这种设计不但没有大量增加GodsonX设计的复杂度,反而因复用访存通路将处理器的面积减少了1.16%,同时不会影响流水线的性能。
2.提出了一种单端口的高带宽TLB设计方法。通过这种方法可以在高带宽访存流水线中使用单端口TLB来取代多端口TLB,这一思路源于我们对程序访存行为页面级空间局部性的观察。本文对虚实地址转换机制进行了两次改进,第一次改进使得双端口TLB被单端口TLB替代,但增加了访存队列(LSQ)发射选择逻辑的延迟,第二次改进消除了第一次改进所增加的LSQ延迟,相比传统的双端口TLB,最后的结果是在不明显影响访存流水线关键路径的延迟和处理器性能的情况下,TLB的面积降低了53%。
3.提出了一种改进的高带宽cache设计方法。本文给出的简化的多端口cache设计技术基于多体技术。通过观察程序的访存行为,我们发现load访问cache的次数和store访问cache的次数接近,因此我们将load和store在访问cache时分开,使load和store使用各自专用的端口访问cache,这样允许我们采用双端口的Tag SRAM和单端口的Data SRAM实现简化的双端口cache。在将这种技术用于Godson2处理器(单访存通路)后,在处理器整体面积仅增加2%的情况下,处理器运行SPEC CPU2000的性能平均提高了8.6%。
4.提出了一种快速访存地址计算策略。本文介绍了动态微码分割技术,该技术的目的是通过尽早的计算出store的地址,减少模糊地址别名发生的机会,进而减少错误load猜测的次数。在寄存器重命名阶段,一条store指令被分成store-address和store-data两部分,store-address进入保留站(RS),store-data进入LSQ,store-address的计算不再依赖store-data,削除了二者之间冗余的依赖。依赖的削除使得store-address可以尽早的被发射,这样一来,LSQ由于可以及时得到store指令的地址,模糊地址别名的情况大大减少,发生错误load猜测的概率也明显降低,将store-data直接映射到LSQ的做法还节省了RS的空间,提高了指令窗口的利用率。根据SPEC CPU2000的测试结果,错误的load猜测平均降低35.7%,系统性能平均提高3.3%。
5.提出了针对栈操作的load猜测机制改进策略。分析发现错误的load猜测大都因为使用堆栈进程参数传递导致,本文还有针对性对load猜测策略进行优化,进一步降低了load猜测错误的几率,系统性能平均提高0.9%。