预执行指导的数据预取方法及系统技术方案

技术编号:6145592 阅读:165 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数据预取方法及系统,克服现有技术未很好地将预执行和跨距预取融合的不足。该方法包括:跨距预取器监测二级缓存失效访存序列,在捕获到跨距访存模式时触发预取请求;监测到二级缓存访问发生失效时,处理器对当前寄存器状态进行备份,转换到预执行模式,执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确预取,获得预执行结果及其有效状态保存到缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早发出预取请求;引发预执行的二级缓存失效指令完成主存访问后,处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。本发明专利技术有效提升处理器的访存延时包容能力。

【技术实现步骤摘要】

本专利技术涉及数据预取技术,尤其涉及一种预执行(Pre-execution)指导的数据预取方法及系统。
技术介绍
随着处理器和存储器性能差距的不断扩大,访存延时对处理器性能的影响日益严重,已经成为制约处理器性能提升的主要瓶颈。虽然高速缓存(Cache)的使用可以有效地填补处理器与存储器之间的性能鸿沟,但是高速缓存设计往往采用按需数据取回策略,无法有效处理应用程序中复杂多样的访存地址模式。随着应用程序工作集的不断扩大,即使采用大容量片上缓存也可能难以满足应用程序的数据访问需求。因此,如何有效降低或隐藏访存延时,是高性能处理器设计的关键问题之一。数据预取技术是一种已经被广泛应用的访存延时包容技术,它在处理器真正需要某数据之前就预测其访存地址并提前发出请求,而不需要等到发生缓存失效后再发起主存访问,从而达到将访存延时隐藏的效果。预取的实现主要可以分为软件预取和硬件预取两种。软件预取通常由程序员手动或编译器自动在程序中插入专门的预取指令来触发预取。软件预取指令不仅会占用额外的处理器执行周期,而且会增加代码体积。此外,软件预取往往借助对程序静态访存特性的剖视来插入预取指令,因而无法对程序运行时刻的动态访存特性加以利用,并且,软件预取无法加速各种以二进制可执行文件形式存在的程序。硬件预取通常由硬件预取器在运行时监测程序执行过程中可重复的访存地址模式并自动发起预取请求。硬件预取能够捕获并利用程序运行时刻的动态访存特性,从而进行准确和及时的预取。硬件预取还可以避免由预取指令带来的执行周期和代码体积的开销,并且不受程序是否可重新编译的限制。传统的硬件预取技术可主要分为基于相关性的预取(Correlation-based Prefetching)和跨距预取(Stride Prefetching)两类。基于相关性的预取发掘并记录程序执行过程中特定的相关性规律和事件,并在监测到这些相关性规律和事件重复发生时触发相应的预取请求。该技术需要使用大容量(通常为兆比特(MB)级)的存储结构对相关性历史信息及相应的预取地址进行记录,这会造成不容忽视的复杂度和硬件开销,使其很难被应用到实际的处理器中。与基于相关性的预取相比,跨距预取是一种复杂度和硬件开销较低的预取技术, 目前已被广泛应用于英特尔antel)奔腾(Pentium)4和IBM Power6等商用处理器中。跨距预取技术主要基于访存的空间局部性规律进行数据预取,主要适用于规则的访存模式。预执行技术也是一种简单有效的访存延时包容技术。为了避免流水线由于长延时的缓存失效(比如二级缓存(L2Cache)失效)而停顿,预执行技术利用处理器的空闲周期预先执行失效访存指令的后续指令,通过对程序中存储级并行的充分发掘以及对访存带宽资源的有效利用,达到将多个主存访问的延时相重叠的效果。通过对发生L2Cache失效指令的后续指令的预先执行,预执行技术能够对任意访存模式进行精确的数据预取。本专利技术的专利技术人经分析后发现与预执行相比,跨距预取的优势主要体现在两个方面。首先,跨距预取可以在任意时刻对符合跨距访存模式的地址进行预取,而预执行只在L2Cache失效引发处理器进入预执行模式后才进行预取。其次,预执行发起预取的提前时间不够长,可能导致在处理器需要某数据时,对该数据的预取请求尚未完成,而跨距预取能够较早地发起预取请求,从而保证预取数据在处理器需要之前及时返回。与跨距预取相比,预执行的优势主要体现在两个方面。首先,预执行能够通过对真实指令片段的提前执行进行精确的预取,而跨距预取则是使用预测的访存地址进行预取。其次,预执行能够对非规则的访存模式进行预取,而跨距预取只能对规则的访存模式进行预取。由以上分析可以看出,跨距预取与预执行有着各自的特点和优势,因此,可以考虑将两者的优势进行有效结合,使各自都能发挥更大效用,从而进一步改善处理器的性能。
技术实现思路
本专利技术所要解决的技术问题是需要提供一种预执行指导的数据预取技术,克服现有技术没有很好地将预执行和跨距预取这两种数据预取技术融合的不足。为了解决上述技术问题,本专利技术提供了一种预执行指导的数据预取方法,该方法包括跨距预取器监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;在监测到二级缓存访问发生失效时,处理器对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,该处理器继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;当引发预执行的二级缓存失效指令完成主存访问后,该处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。优选地,该跨距预取器监测该二级缓存失效访存序列及捕获该跨距访存模式的步骤,包括该跨距预取器向前或向后进行预取,并使用存储区域划分方法来划分流。优选地,该跨距预取器监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。优选地,该跨距预取器将预取数据存放在该二级缓存中。优选地,当主要L2失效发生时,该处理器为该主要L2失效分配一空闲的失效状态处理寄存器,并初始化该失效状态处理寄存器的过滤位;当次要L2失效发生时,一更新过5滤器读出该失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,更新跨距预取器及该过滤位;其中,需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。优选地,该处理器继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。优选地,该处理器从引发预执行的访存指令开始继续执行的步骤,包括该处理器从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,将计算结果无效的预执行指令重新发射到流水线中执行并提交执行结果。本专利技术还提供了一种预执行指导的数据预取系统,包括跨距预取器,用于监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;处理器,用于监测到二级缓存访问发生失效时,对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,用于继续执行发生二级缓存失效的指令的后续指令, 对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;还用于当引发预执行的二级缓存失效指令完成主存访问后,清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。优选地,该跨距预取器在监测该二级缓存失效访存序列及捕获该跨距访存模式时,用于向前或向后进行预取,并使用存储区域划分方法来划分流。优选地,该跨距预取器用于监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。优选地,该跨距预取器用于将预取数据存放在该二级缓存中。优选地,更新过滤器,用于当次要L2失效发生时,读出该次要L2失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于本文档来自技高网
...

【技术保护点】
1.一种预执行指导的数据预取方法,该方法包括:跨距预取器监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;在监测到二级缓存访问发生失效时,处理器对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,该处理器继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;当引发预执行的二级缓存失效指令完成主存访问后,该处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:程旭党向磊王箫音佟冬陆俊林王克义
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1