一种支持多种内存访问模式的数据预取方法和装置制造方法及图纸

技术编号:34178950 阅读:17 留言:0更新日期:2022-07-17 12:36
本发明专利技术公开了一种支持多种内存访问模式的数据预取方法和装置,本发明专利技术方法包括在检测到程序计数器PC值为P1的指令对缓存中内存地址A发出访问时,在使用位向量发出预取的同时,使用最近更新的最佳偏移量D向内存地址A所属的页面发出偏移预取以作为位向量发出预取的补充手段;使用访问信息对位向量信息进行更新,同时对各个空间区域内最近一段时间内访问的偏移量进行评估以用于根据预设的条件更新最佳偏移量D。本发明专利技术同时利用最佳偏移量和空间区域对应的位向量发出预取,不仅针对具有空间密集型访存特性的程序能够获得较好的性能收益,而且针对经常呈现跨步访问模式的程序时同样也能够获得较好的性能收益,可有效的提升缓存命中率。缓存命中率。缓存命中率。

A data prefetching method and device supporting multiple memory access modes

【技术实现步骤摘要】
一种支持多种内存访问模式的数据预取方法和装置


[0001]本专利技术属于微处理器设计领域的计算机微体系结构和存储部件设计技术,具体涉及一种支持多种内存访问模式的数据预取方法和装置。

技术介绍

[0002]大数据时代已经到来,对于许多大数据应用程序而言,长时间的片外DRAM访问是众所周知的性能瓶颈,由于处理器与片外DRAM之间速度不匹配,每次访问DRAM时,处理器很容易停顿数百个周期,从而造成巨大的性能损失。
[0003]缓存层次结构可以提高具有良好时间、空间局部性的数据引用的程序性能,但是在有些大数据应用程序中由于有着较高的缓存未命中率,因此仍然存在着很高的数据引用延迟。
[0004]数据预取是一种研究的很好的技术,可以提高对缓存访问的命中率,它通过识别程序对内存的特定访问模式,在对缓存进行数据访问之前,将所需的数据所在的缓存行提前取到合适的缓存级别中,降低缓存缺失率,降低数据引用延迟。目前的预取器都只能识别一种内存访问模式,在具有不同内存访问模式的程序中往往表现不佳,因此只能带来有限的性能提升,如果将多个硬件预取器组合到一起,虽然能够识别多种不同的内存访问模式,从而获得不错的性能收益,但是会带来很大的硬件开销。例如在一些具有空间密集型访存特性的程序中,通过使用位向量记录空间区域内缓存行的访问信息,在未来依据空间区域对应的位向量发出预取可以获得比较不错的性能收益;相反,在一些经常呈现跨步访问模式的程序中,通过使用位向量记录空间区域内缓存行的访问情况来发出预取则无法获得较高的性能收益。
专利技术内容
[0005]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种支持多种内存访问模式的数据预取方法和装置,本专利技术在使用位向量记录空间区域内缓存行的访问情况时同时评估出最近访存行为的最佳偏移量,同时利用最佳偏移量和空间区域对应的位向量发出预取,不仅针对具有空间密集型访存特性的程序能够获得较好的性能收益,而且针对经常呈现跨步访问模式的程序时同样也能够获得较好的性能收益,可有效的提升缓存命中率。
[0006]为了解决上述技术问题,本专利技术采用的技术方案为:
[0007]一种支持多种内存访问模式的数据预取方法,包括:
[0008]1)检测指令对缓存的访问,当检测到程序计数器PC值为P1的指令对缓存中内存地址A发出访问时,跳转下一步;
[0009]2)在使用用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量发出预取的同时,使用最近更新的最佳偏移量D向内存地址A所属的页面发出偏移预取以作为位向量发出预取的补充手段;并使用程序计数器PC值为P1的指令对缓存中内存地址A发出
访问这一信息,对用于记录空间区域内缓存行的访问信息的位向量信息进行更新,同时对各个空间区域内最近一段时间内访问的偏移量进行评估以用于根据预设的条件更新最佳偏移量D。
[0010]可选地,记内存地址A属于物理页面J的第K1个缓存行,步骤2)中使用最近更新的最佳偏移量D向内存地址A所属的页面发出偏移预取包括:判断第K1+D个缓存行是否属于物理页面J内,若位于物理页面J内,则对物理页面J的第K1+D个缓存行发出预取;记内存地址A属于空间区域R1的第L1个缓存行,步骤2)中使用用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量发出预取包括:对用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量中的每个置1的位,预取空间区域R1中对应的缓存行,其中位向量中的每个置1的位表示该位在最近一段时间内被访问。
[0011]可选地,步骤2)中对用于记录空间区域内缓存行的访问信息的位向量信息进行更新,同时对各个空间区域内最近一段时间内访问的偏移量进行评估以用于根据预设的条件更新最佳偏移量D包括:
[0012]2.1)使用空间区域R1索引预设的累加表,所述累加表用于记录对空间区域触发访问的触发访问指令PC和空间区域内偏移,以及最近一段时间内空间区域R1对应的位向量;若索引到匹配项,则跳转下一步;否则,跳转步骤2.6);
[0013]2.2)对于匹配项记录的位向量中每一个置1的空间区域内偏移F,分别计算F

L1的差值,若F

L1的差值在预设的偏移量分数列表中存在对应的偏移量d,则在偏移量分数列表中将偏移量d对应的分数加1,所述偏移量分数列表用于记录预设的多种偏移量对应的分数;
[0014]2.3)在累加表中将最近一段时间内空间区域R1对应的位向量的第L1位置1;
[0015]2.4)将执行次数计数器自增1;
[0016]2.5)判断条件执行次数计数器的计数值大于等于第一设定值或偏移量分数列表中存在分数大于第二设定值的偏移量是否成立,若条件成立,则在偏移量分数列表中选择分数最高的偏移量d以更新最佳偏移量D,将偏移量分数列表中所有偏移量的分数清零,并将条件执行次数计数器清零;跳转步骤1);
[0017]2.6)使用空间区域R1索引预设的过滤表,所述过滤表用于记录对空间区域触发访问的触发访问指令PC和空间区域内偏移;若索引到匹配项,则跳转下一步;否则,跳转步骤2.9);
[0018]2.7)针对索引到匹配项对应程序计数器PC值为P2、偏移为L2的触发访问指令,计算L2

L1的差值,若L2

L1的差值在预设的偏移量分数列表中存在对应的偏移量d,则在偏移量分数列表中将偏移量d对应的分数加1;
[0019]2.8)将索引到匹配项从过滤表中逐出,在累加表中为空间区域R1分配新项目,记录被逐出的触发访问指令对应的对应程序计数器PC值P2、偏移L2,并将分配新项目中第L1和L2位置1、其他位置0;若由于在累加表中为空间区域R1分配新项目导致累加表中的一个有效项被逐出,则将该被逐出的有效项记录到预设的模式历史表中,所述模式历史表用于记录由累加表转移过来的位向量;跳转步骤2.5);
[0020]2.9)判定此次访问为对空间区域R1的触发访问,在过滤表中记录触发访问的信息,然后使用当前访问指令的程序计数器PC值P1和缓存行L1索引模式历史表,若在模式历
史表中找到匹配项,且根据模式历史表中匹配项对应的位向量中已经置1的位,对空间区域R1的对应的缓存行发出预取;跳转步骤2.1)。
[0021]可选地,步骤2.8)中将该被逐出的有效项记录到预设的模式历史表中包括:在模式历史表中为被逐出的有效项记录分配新项,并通过分配的新项分别记录被逐出的有效项记录对应的指令的程序计数器PC值、偏移量以及位向量。
[0022]可选地,步骤2.9)中在过滤表中记录触发访问的信息包括:在过滤表中给空间区域R1分配新项,并通过分配的新项分别记录触发访问的信息,包括记录触发访问指令的程序计数器PC值P1和访问的空间区域内缓存行L1。
[0023]可选地,步骤2.9)中根据模式历史表中匹配项对应的位向量中已经置1的位,对空间区域R1的对应的缓存行发出预取时,若模式历史表中匹配项对应本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持多种内存访问模式的数据预取方法,其特征在于,包括:1)检测指令对缓存的访问,当检测到程序计数器PC值为P1的指令对缓存中内存地址A发出访问时,跳转下一步;2)在使用用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量发出预取的同时,使用最近更新的最佳偏移量D向内存地址A所属的页面发出偏移预取以作为位向量发出预取的补充手段;使用程序计数器PC值为P1的指令对缓存中内存地址A发出访问这一信息,对用于记录空间区域内缓存行的访问信息的位向量信息进行更新,同时对各个空间区域内最近一段时间内访问的偏移量进行评估以用于根据预设的条件更新最佳偏移量D。2.根据权利要求1所述的支持多种内存访问模式的数据预取方法,其特征在于,记内存地址A属于物理页面J的第K1个缓存行,步骤2)中使用最近更新的最佳偏移量D向内存地址A所属的页面发出偏移预取包括:判断第K1+D个缓存行是否属于物理页面J内,若位于物理页面J内,则对物理页面J的第K1+D个缓存行发出预取;记内存地址A属于空间区域R1的第L1个缓存行,步骤2)中使用用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量发出预取包括:对用于记录内存地址A所属的空间区域R1内缓存行的访问信息的位向量中的每个置1的位,预取空间区域R1中对应的缓存行,其中位向量中的每个置1的位表示该位在最近一段时间内被访问。3.根据权利要求2所述的支持多种内存访问模式的数据预取方法,其特征在于,步骤2)中对用于记录空间区域内缓存行的访问信息的位向量信息进行更新,同时对各个空间区域内最近一段时间内访问的偏移量进行评估以用于根据预设的条件更新最佳偏移量D包括:2.1)使用空间区域R1索引预设的累加表,所述累加表用于记录对空间区域触发访问的触发访问指令PC和空间区域内偏移,以及最近一段时间内空间区域R1对应的位向量;若索引到匹配项,则跳转下一步;否则,跳转步骤2.6);2.2)对于匹配项记录的位向量中每一个置1的空间区域内偏移F,分别计算F

L1的差值,若F

L1的差值在预设的偏移量分数列表中存在对应的偏移量d,则在偏移量分数列表中将偏移量d对应的分数加1,所述偏移量分数列表用于记录预设的多种偏移量对应的分数;2.3)在累加表中将最近一段时间内空间区域R1对应的位向量的第L1位置1;2.4)将执行次数计数器自增1;2.5)判断条件执行次数计数器的计数值大于等于第一设定值或偏移量分数列表中存在分数大于第二设定值的偏移量是否成立,若条件成立,则在偏移量分数列表中选择分数最高的偏移量d以更新最佳偏移量D,将偏移量分数列表中所有偏移量的分数清零,并将条件执行次数计数器清零;跳转步骤1);2.6)使用空间区域R1索引预设的过滤表,所述过滤表用于记录对空间区域触发访问的触发访问指令PC和空间区域内偏移;若索引到匹配项,则跳转下一步;否则,跳转步骤2.9);2.7)针对索引到匹配项对应程序计数器PC值为P2、偏移为L2的触发访问指令,计算L2

L1的差值,若L2

L1的差值在预设的偏移量分数列表中存在对应的偏移量d,则在偏移量分数列表中将偏移量d对应的分数加1;2.8)将索引到匹配项从过滤表中逐出,在累加表中为空间区域R1分配新项目,记录被逐出的触发访问指令对应的对应程序计数器PC值P2、偏移L2,并将分配新项目中第L1和L2
位置1、其他位置0;若由于在累加表中为空间区域R1分配新项目导致累加表中的一个有效项被逐出,则将该被逐出的有效项记录到预设的模式历史表中,所述模式历史表用于记录由累加表转移过来的位向量;跳转步骤2.5);2.9)判定此次访问为对空间区域R1的触发访问,在过滤表中记录触发访问的信息,然后使用当前访问指令的...

【专利技术属性】
技术研发人员:朱学斌王永文郭维邓全雷国庆王俊辉隋兵才倪晓强孙彩霞黄立波郑重郭辉李金玖何燕东彭令峰
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1