一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据预取方法、装置与流程

2022-06-01 08:03:22 来源:中国专利 TAG:


1.本公开涉及人计算机及处理器领域,更具体地,涉及一种数据预取方法、装置、计算机程序产品及计算机可读存储介质。


背景技术:

2.随着计算需求飞速增长、数据总量日益膨胀,为了使计算机的数据存储能力及处理能力与之匹配,如何提升数据访存效率是目前计算机及处理器的重点研究方向之一。
3.现代处理器的发展速度快但存储器的发展速度慢,数据处理速度远大于数据访存速度,处理器要花费大量的时间等待存储器数据的返回。缓存技术使速度更快的上层存储器成为下层存储器的缓冲,如果缓存命中,可直接对上层存储器中的数据进行读写,如果发生缓存缺失,则要等待很多时钟周期把数据从内存搬移到缓存中,这期间中央处理器(cpu)的流水线很可能要停下来,代价巨大。为了解决这个问题,现在的高速缓存设计通常采用了预取技术(prefetch)。预取技术是通过预测将来要访问的地址,提前将要用的数据从内存中取到位于cpu内部的高速缓存(cache)中,或者提前将数据从低一级的高速缓存取到更高级的高速缓存中。计算机在访问一个内存地址的时候,先查找高速缓存里面有无该地址的数据。如果有就直接从高速缓存中读取数据,即缓存命中(hit);如果高速缓存中没有数据,则需要从内存中读取数据,即缓存失效(miss)。如果预测准确,待数据真正需要时数据已经在高速缓存中准备好,达到“隐藏”内存访问延迟的目的,提升了处理器的整体性能。
4.因此,需要一种预取覆盖率高、准确率高、缓存失效率低的数据预取方法,以改善数据处理速度与数据访存速度不匹配的问题,从而提升计算机的数据处理效率。


技术实现要素:

5.为了解决上述问题,本公开通过获取待访问的地址;确定待访问的地址与前一访问地址之间的地址间隔;利用所述地址间隔,形成按访问时间排序的地址间隔历史记录;在所述地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距离;以及基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。
6.本公开的实施例提供的数据预取方法支持非单一地址间隔访问模式,提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。同时,该方法支持部分地址序列丢失的预取,增强了预取的稳定性。并且,该预取方法存储开销和运行开销小,能够完全兼容单一地址间隔访问模式的预取。
7.本公开的实施例提供了一种数据预取方法及装置。
8.本公开的实施例提供了一种数据预取方法,所述方法包括:获取待访问的地址;确定待访问的地址与前一访问地址之间的地址间隔;利用所述地址间隔,形成按访问时间排序的地址间隔历史记录;确定所述地址间隔历史记录中是否存在相同的地址间隔;在所述地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距
离;以及基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。
9.根据本公开的实施例,所述数据预取方法还包括:基于所述地址间隔历史记录,对所记录的地址距离进行训练,其中,基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址包括:基于所确定的地址距离和先前所记录的地址距离,确定用于数据预取的地址增量,其中所述先前所记录的地址距离为经过训练的地址距离;以及基于所述用于数据预取的地址增量来确定要进行数据预取的预取地址。
10.根据本公开的实施例,所述基于所述地址间隔历史记录对所记录的地址距离进行训练,还包括:在存在所记录的地址距离,且所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数进行递增,其中,在所记录的地址距离的重复次数超出第一阈值的情况下,确定对所记录的地址距离的训练完成。
11.根据本公开的实施例,所述基于所述地址间隔历史记录对所记录的地址距离进行训练,还包括:在存在所记录的地址距离,且所确定的地址距离与所记录的地址距离不同的情况下,对所记录的地址距离的重复次数进行递减,继续获取下一个待访问的地址并确定地址距离,在所记录的地址距离的重复次数低于第二阈值的情况下,重新对所记录的地址距离进行训练;或者在存在所记录的地址距离,且所确定的地址距离与所记录的地址距离不同的情况下,重新对所记录的地址距离进行训练。
12.根据本公开的实施例,所述基于所述地址间隔历史记录对所记录的地址距离进行训练,还包括:在所述地址间隔历史记录中不存在相同的地址间隔且存在所记录的地址距离的情况下,对所记录的地址距离的重复次数进行递减,继续获取下一个待访问的地址并确定地址距离,在所记录的地址距离的重复次数低于第二阈值的情况下,重新对所记录的地址距离进行训练;或者在所述地址间隔历史记录中不存在相同的地址间隔且存在所记录的地址距离的情况下,重新对所记录的地址距离进行训练。
13.根据本公开的实施例,所述基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址,还包括:在所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数进行递增。
14.本公开的实施例提供了一种数据预取装置,所述装置包括:访问地址获取模块,被配置为:获取待访问的地址;地址间隔确定模块,被配置为:确定待访问的地址与前一访问地址之间的地址间隔;历史记录保存模块,被配置为:利用所述地址间隔,形成按访问时间排序的地址间隔历史记录;历史记录处理模块,被配置为:确定所述地址间隔历史记录中是否存在相同的地址间隔;地址距离确定模块,被配置为:在所述地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距离;预取地址确定模块,被配置为:基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。
15.本公开的实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机软件代码,所述计算机软件代码在被处理器运行时,提供上述方法。
16.本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时,提供上述方法。
17.本公开的实施例提供了一种支持非单一地址间隔访问模式的数据预取方法、装置、计算机程序产品及计算机可读存储介质。通过本公开的实施例提供的数据预取方法提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。同时,该方法支持部分地址序列丢失的预取,增强了预取的稳定性。并且,该预取方法存储开销和运行开销小,能够完全兼容单一地址间隔访问模式的预取。
附图说明
18.为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
19.图1是示出根据本公开的实施例的存储器层次结构的示意图;
20.图2是示出根据本公开的实施例的按照地址间隔来预取数据的预取器结构的示意图;
21.图3是示出根据本公开的实施例的按照地址间隔来预取数据的示意性流程图;
22.图4是示出根据本公开的实施例的数据预取方法的示意性流程图;
23.图5是示出根据本公开的实施例的按照地址距离来预取数据的预取器结构的示意图;
24.图6a是示出根据本公开的实施例的预取训练过程中针对各种情形的处理过程的示意性流程图;
25.图6b是示出根据本公开的实施例的数据预取过程中针对各种情形的处理过程的示意性流程图;
26.图7是示出根据本公开的实施例的按照地址距离来预取数据的示意性流程图;
27.图8是示出根据本公开的实施例的数据预取装置的示意图;以及
28.图9是示出根据本公开的实施例的存储介质的示意图。
具体实施方式
29.为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
30.此外,在本说明书和附图中,具有基本上相同或相似步骤和元素用相同或相似的附图标记来表示,且对这些步骤和元素的重复描述将被省略。
31.此外,在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方便解释而无意将本公开限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下文另有明确说明。
32.此外,在本说明书和附图中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺
序实施。
33.预取技术是通过在cache可能会发生失效之前发出预取请求,以便在该数据真正被使用到时己被提前存入cache,从而避免cache失效造成的处理器停顿。预取器作为处理器的一部分可以对地址进行预测,其实现方法为:通过已经访问过的“历史”地址,发现访问地址之间的规律或者访问模式,然后根据当前访问地址推测出将来要访问的地址。作为示例,本公开的实施例提供的数据预取方法可以用于从内存(memory)中取到位于中央处理器内部的高速缓存中,或者提前将数据从低一级的高速缓存取到更高级的高速缓存中(例如l2 cache到l1 cache)。
34.综上所述,本公开的实施例提供的方案涉及预取技术、处理器等领域,下面将结合附图对本公开的实施例进行进一步地描述。
35.图1是示出根据本公开的实施例的存储器层次结构的示意图。如图1所示,计算机中具有多种类型的存储器。其中,l0级存储器为寄存器,位于cpu中;高速缓存(cache)位于寄存器与主存之间,通常由静态存储器(sram,static random access memory)组成,高速缓存包括l1 cache、l2 cache、l3 cache,其存储级别按照l1至l3的顺序依次降低;l4级存储器为主存,其通常由动态存储器(dram,dynamic random access memory)组成;l5级存储器为本地二级存储,其通常由本地磁盘组成;l6级存储器为远程二级存储,其通常由分布式文件系统、web服务器等组成。
36.各级存储器之间的关系为:cpu寄存器保存取自高速缓存存储的数据;l1高速缓存保存取自l2高速缓存的数据;l2高速缓存保存取自l3高速缓存的数据;l3高速缓存保存取自主存的数据;主存保存取自本地磁盘的数据;本地磁盘保存取自远程网络服务器的数据。各存储器的容量大小、处理速度及价格具有图1所示的关系,即从l6级存储器至l0级存储器,存储容量越来越小、处理速度越来越快、价格也越来越高。
37.在程序处理过程中,内存(即主存)存放程序运行需要的全部数据和指令。由于高速缓存的访问速度要比内存快得多,处理器需要读写数据时,会先将数据从内存取到高速缓存中,高速缓存中存放的是内存中的数据备份,之后会直接读写高速缓存上的数据备份,以降低内存访问延迟。为了加速访存,处理器的一个模块预取器,会预判一部分将要访问的数据,提前将这些数据从内存中取到高速缓存中准备好,在真正需要该数据时,直接访问在高速缓存中已经准备好的数据,有效节约了内存访问时间。
38.应当理解,本公开的实施例提供的数据预取方法不仅适用于从内存到高速缓存的情况,从l3高速缓存到l2高速缓存、从l2高速缓存到l1高速缓存等从低速(大容量)存储器到高速(小容量)存储器的数据预取均可使用本公开提供的数据预取方法来达到提升预取覆盖率,减少缓存缺失,提高预取准确率、增强预取稳定性的目的。
39.目前的数据预取通常采用固定地址间隔访问模式,通过该种方式可以识别出具有单一地址间隔的访问模式,但是对于相对复杂的非单一地址间隔的访问模式则无法识别。同时,在这种固定地址间隔访问模式下,有时会将非单一地址间隔的情形误判断为单一地址间隔的情形而造成错误的预取。而且,由于计算机指令乱序执行以及微架构本身结构等原因,预取时部分地址序列可能会丢失,在这种情形下,预取器可能会产生误判,无法支持预取。以下将结合实施例具体说明。
40.图2是示出根据本公开的实施例的按照地址间隔来预取数据的预取器结构的示意
图。
41.如图2所示,预取器中包括:访问地址、前一访问地址、地址间隔以及预取状态的存储记录。对于每一条访存指令来说,计算机储存访问地址,并形成访问地址的历史记录,通过本次访问的地址与上次访问的地址相减可以得到地址之间的间隔,如果两次地址间隔相同则将地址间隔的重复次数增加1次,如果地址间隔的重复次数达到预定数目,则认为该段地址访问具有固定的地址间隔,预取训练成功,得到一个固定的地址间隔。预取训练完成后进入数据预取阶段,计算机将每次要访问的地址与经训练得到的地址间隔相加,得到预取的地址,提前从内存中备份并存入高速缓存中,后续用到该预取地址时,计算机可以直接从高速缓存中读取到该数据,从而有效减少了访存时间。
42.例如,对于地址访问序列:a、a 2、a 4、a 6
……
,相邻的两个访问地址之间的地址间隔为2、2、2
……
,它们之间具有固定的地址间隔2。假设地址间隔出现2次即预取训练成功,则在访问地址序列a 2时,地址间隔2第1次出现。在访问地址序列a 4时,地址间隔2第二次出现,此时预取训练成功,提前预取地址a 6(4 2=6)。在访问地址a 6时,该地址已经被提前存入高速缓存中,计算机可以直接从高速缓存中读取到该数据,从而有效减少了访存时间。
43.图3是示出根据本公开的实施例的按照地址间隔来预取数据的示意性流程图。
44.如图3所示,按照地址间隔来预取数据的过程主要包括预取训练过程和数据预取过程。预取训练过程训练要用于数据预取的地址间隔,数据预取过程基于所确定的地址间隔和先前所记录的地址间隔来确定要进行数据预取的预取地址。
45.在预取训练过程中,基于当前待访问地址与前一访问地址之间的地址差来确定地址间隔。
46.在预取训练初期,可能不存在所记录的地址间隔,这时利用当前确定的地址间隔来更新所记录的地址间隔。
47.在确定地址间隔后,判断上一步中计算出的地址间隔与历史地址间隔是否相同。
48.在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔相同的情况下,对所记录的地址间隔的重复次数进行递增。如果所记录的地址间隔的重复次数未超出第一阈值,则继续访问地址、计算地址间隔、与地址间隔的记录进行比较。如果所记录的地址间隔的重复次数超出第一阈值,则确定对所记录的地址间隔的训练完成。
49.需要说明的是这里的第一阈值是根据经验和预取数据要求提前设置好的,其目的是验证所记录的地址间隔多次出现,待访问的地址之间具有规律。
50.在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔不同的情况下,对所记录的地址间隔的重复次数进行递减,继续获取下一个待访问的地址并确定地址间隔,在所记录的地址间隔的重复次数低于第二阈值的情况下,重新对所记录的地址间隔进行训练。这里的第二阈值可以为0,然而不限于此。
51.图中只示出了一种处理方式,应当理解,在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔不同的情况下,还可以直接重新对所记录的地址间隔进行训练。
52.预取训练过程完成后,进入数据预取过程。
53.在数据预取过程中仍需要继续访问地址,按照类似预取训练过程中的方法来计算
地址间隔,并与所记录的地址间隔进行比较。需要说明的是,此阶段中,记录的地址间隔为经过预取训练的地址间隔。
54.在数据预取过程中,在所确定的地址间隔与所记录的地址间隔相同的情况下,对所记录的地址间隔的重复次数进行递增,并基于记录的地址间隔来预取数据;否则在所确定的地址间隔与所记录的地址间隔不同的情况下,对所记录的地址间隔的重复次数进行递减,并继续按所记录的地址间隔进行数据预取,在所记录的地址间隔的重复次数低于第三阈值的情况下,重新对所记录的地址间隔进行训练。
55.图中只示出了一种处理方式,应当理解,在所确定的地址间隔与所记录的地址间隔不同的情况下,还可以直接重新对所记录的地址间隔进行训练。这里的第三阈值可以为0,然而不限于此。
56.可选地,在预取训练过程和数据预取过程中,记录地址间隔的重复次数的计数器可以是同一个计数器,也可以是不同的计数器。
57.通过分析图2和图3中所描述的按照地址间隔来预取数据的数据预取方法,可以发现这种数据预取方法具有如下几点局限性:
58.1、无法识别非单一地址间隔的访问模式
59.图2和图3所描述的按照地址间隔来预取数据的方法可以准确识别出具有单一固定地址间隔的访问模式,但是对于相对复杂的非单一地址间隔的访问模式则无法识别。例如,对一个具有1个字符类型(占1byte内存)成员,1个整数(占4byte内存)成员和1个双精度浮点数(占8byte内存)成员的结构体数组进行遍历访问,形成的地址访问序列为:a、a 1、a 5、a 13、a 14、a 18、a 26、a 27、a 31、a 39
……
,相邻两个地址间隔形成的序列为:1、4、8、1、4、8、1、4、8
……
。可以看到该地址间隔并非固定且唯一的,而是一段重复的地址间隔序列(1、4、8)。按照地址间隔来预取数据的方法无法识别这种非单一地址间隔的访问模式。
60.2、造成错误的预取
61.按照地址间隔来预取数据的方法还有可能将非单一地址间隔的访问模式识别成单一地址间隔访问模式,从而发出错误的预取。例如,对一个具有连续3个整数类型(每个占4byte内存)成员,1个双精度浮点数类型(占8byte内存)成员的结构体数组进行遍历访问,形成的地址访问序列为:a、a 4、a 8、a 16、a 20、a 24、a 32、
……
,相邻的两个地址间隔形成的序列为:4、4、8、4、4、8
……
。按照地址间隔来预取数据的方法,假设地址间隔出现2次即预取训练成功,则会识别出地址间隔为4,当访问a 8时,会预取a 12,然而实际用到的地址序列中并没有a 12,这是一个错误的预取。错误的预取不只会浪费内存带宽,造成正常的内存访问发生阻塞,取回的错误数据还会造成高速缓存的污染,从而降低了系统的整体性能。
62.3、无法支持间断的访问模式
63.按照地址间隔来预取数据的方法通过监控访问序列,一旦出现重复的地址间隔即视为训练成功,但是程序的实际运行会由于乱序执行、微架构等原因发生一定程度的错乱和间断,导致预取器看不到部分地址间隔。例如,对一个整型(4byte)数组进行遍历,产生的内存访问地址序列为:a、a 4、a 8、a 12、a 16

而实际运行中可能由于某些微架构的因素,地址序列的监控模块只能看到一部分地址访问序列,如只能看到序列:a、a 4、a 12、a 16
……
这样监控得到的地址间隔序列为:4、8、4
……
按照地址间隔来预取数据的方法对这种存在部分丢失或间断的访问模式无法支持。
64.为了解决上述问题,本公开提出了一种按照地址距离来预取数据的方法。该方法基于地址距离来确定要进行数据预取的预取地址。虽然一个地址序列中各相邻地址之间的地址间隔不相同,但是可能会出现一段地址序列之间具有固定距离的情形。本公开所述的方法利用一段地址序列中,相同的地址间隔之间的地址距离来预取数据,实现了支持非单一地址间隔访问模式的数据预取。
65.需要说明的是,本文中的地址间隔指两个相邻的访问地址之间的间隔,而地址距离指地址间隔历史记录中,两个相同的地址间隔之间的距离,地址距离可能为不相邻的访问地址之间的距离。例如,对于地址访问序列为:a、a 1、a 5、a 13、a 14
……
的示例,可以得到两个相邻的访问地址之间的地址间隔形成的历史纪录为:1、4、8、1
……
,地址距离为两个相同的地址间隔之间的距离,例如,对于此时两个相同的地址间隔1,它们之间的地址距离为13。
66.图4是示出根据本公开的实施例的数据预取方法的示意性流程图400。
67.如图4所示,在步骤s401中,开始进入数据预取,首先,预取器获取待访问的地址。获取的访问地址可以被存储于预取器中,并按照地址访问时间更新。
68.在步骤s402中,预取器通过待访问的地址与前一个相邻的访问地址比较,确定出待访问的地址与前一访问地址之间的地址间隔。
69.应当理解,待访问的地址与前一访问地址是相邻的两个访问地址。可选地,它们之间的地址间隔与待访问数据的数据类型相关。例如,在待访问数据的数据类型为字符类型(占1byte内存)的情况下,待访问的地址与前一访问地址之间的地址间隔为1;在待访问数据的数据类型为整数(占4byte内存)的情况下,待访问的地址与前一访问地址之间的地址间隔为4;在待访问数据的数据类型为双精度浮点数类型(占8byte内存)的情况下,待访问的地址与前一访问地址之间的地址间隔为8
……
70.可选地,待访问的地址与前一访问地址之间的地址间隔可以是正数,也可以是负数。即在访问地址依次增加的情况下(例如,a、a 2、a 4
……
),待访问的地址与前一访问地址之间的地址间隔是正数;在访问地址依次减小的情况下(例如,a、a-2、a-4
……
),待访问的地址与前一访问地址之间的地址间隔是负数。
71.可选地,待访问的地址和前一访问地址可以分别存储于不同的存储器中,也可以存储于同一个存储器中,并在每次访问地址时对待访问的地址和前一访问地址之间的地址间隔进行计算。
72.在步骤s403中,预取器依次记录在步骤s402中得到的地址间隔,形成按访问时间排序的地址间隔历史记录。
73.可选地,地址间隔历史记录的存储方式可以是地址表、数列、数组、先进先出的存储器(fifo,first input first output)等。
74.可选地,地址间隔历史记录可以包括预设数量的地址间隔,可以采用先进先出的方式,对地址间隔历史记录进行更新。其中,预设数量可以根据待访问的数据的数据结构确定,如果预设数量太小可能不能找到一段地址之间的规律从而预取数据;如果预设数量太大可能会加大预取的计算量,影响预取效率,反而不利于处理器提升效率;该预设数量的确定应考虑待访问的数据的数据结构,参考大多数数据预取的规律来确定。
75.在步骤s404中,预取器通过查询步骤s403中按访问时间排序的地址间隔历史记
录,确定地址间隔历史记录中是否存在相同的地址间隔。
76.在步骤s405中,在地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距离。
77.可选地,相同的地址间隔之间的地址距离可以通过对所述相同的地址间隔与所述相同的地址间隔之间的各历史地址间隔求和来得到相同的地址间隔之间的距离。应当理解,地址距离的计算方式有多种,不论是对地址间隔求和还是对地址求差值等,只要能够确认出相同的地址间隔之间的地址距离,则均能够基于此实现本文中的方法。
78.可选地,在地址间隔历史记录中存在两个相同的地址间隔的情况下,确定地址距离为两个相同的地址间隔之间的距离。
79.可选地,在地址间隔历史记录中存在多个相同的地址间隔的情况下,确定地址间隔和与其相同的各个先前地址间隔之间的距离,并根据所确定的各个距离确定当前的地址距离,所确定的地址距离为各个距离中最远的距离或者与记录的地址距离相同的距离。
80.例如,在地址间隔历史序列足够长的情况下,对于地址间隔呈4、8、4、4、8、4
……
重复的序列,在已记录4个地址间隔的情况下,地址间隔历史序列为4、8、4、4,对于最新的地址间隔4,可以确定其与前一个相同地址间隔4之间的距离为4,其与前二个相同地址间隔4之间的距离为16,此时可以将该最远的距离16确定为地址距离,并将其记录下来作为所记录的地址距离;接下来,在已记录5个地址间隔的情况下,最新的地址间隔为8,那么地址间隔历史序列变为4、8、4、4、8,此时两个相同地址间隔8之间的距离为16,与先前记录的地址距离16相同,地址距离仍然为16;接下来,在已记录6个地址间隔的情况下,最新的地址间隔为4,那么地址间隔历史序列变为4、8、4、4、8、4,其与前四个相同地址间隔4之间的距离分别为12、16、28,其中的距离16与先前记录的地址距离16相同,则将当前的地址距离确定为16。
81.再例如,在地址间隔历史记录包括的地址间隔的数量为4,且地址间隔历史记录更新方式为先进先出的情况下,对于地址间隔呈4、8、4、4、8、4
……
重复的序列,在已记录4个地址间隔的情况下,地址间隔历史序列为4、8、4、4,对于最新的地址间隔4,可以确定其与前一个相同地址间隔4之间的距离为4,其与前二个相同地址间隔4之间的距离为16,此时可以将该最远的距离16确定为地址距离,并将其记录下来作为所记录的地址距离;接下来,最新的地址间隔8进入地址间隔历史序列后,地址间隔历史序列变为8、4、4、8,此时两个相同地址间隔8之间的距离为16,与先前记录的地址距离16相同;接下来,最新的地址间隔为4进入地址间隔历史序列后,地址间隔历史序列变为4、4、8、4,其与前两个相同地址间隔4之间的距离分别为12、16、28,其中的距离16与先前记录的地址距离16相同,则将当前的地址距离确定为16。
82.最后,在步骤s406中,预取器基于步骤s405中所确定的地址距离、先前所记录的地址距离以及待访问的地址,确定要进行数据预取的预取地址。
83.可选地,图4中所描述的方法既可以直接基于地址距离来预取数据,也可以对地址距离进行训练,得到一个经过训练的地址距离,然后基于所确定的地址距离和所记录的经过训练的地址距离,来确定用于数据预取的地址增量,以进行数据预取。
84.图5是示出根据本公开的实施例的按照地址距离来预取数据的预取器结构的示意图。
85.如图5所示,预取器中包括:访问地址、前一访问地址、地址间隔历史记录、地址距
离以及预取状态的存储记录。可以看出,按照地址距离来预取数据的预取器结构与按照地址间隔来预取数据的预取器结构相比,其不同之处在于:按照地址间隔来预取数据的预取器中存储地址间隔,按照相邻两个地址之间的地址间隔来预取数据;而按照地址距离来预取数据的预取器中存储地址距离和地址间隔历史记录,并按照一段地址间隔的历史记录中,相同的地址间隔之间的地址距离来预取数据。该数据预取方法存储开销和运行开销小。
86.本公开的数据预取方法可以包括预取训练过程和数据预取过程。预取训练过程训练要用于数据预取的地址距离,数据预取过程基于所确定的地址距离和先前所记录的地址距离来确定要进行数据预取的预取地址。
87.图6a是示出根据本公开的实施例的预取训练过程中针对各种情形的处理过程的示意性流程图。
88.在预取训练过程中,需要先计算地址距离。
89.在训练初期,可能会存在地址间隔历史记录中不存在相同的地址间隔且不存在所记录的地址距离的情况,这时可以利用当前所记录的历史地址间隔中的绝对值最大的地址间隔或所记录的历史地址间隔之和来更新所记录的地址距离。
90.需要说明的是,这里使用当前地址距离的绝对值来进行比较是为了保证无论在地址距离为正数或负数的情况下该条件均成立。即,在地址距离为正数的情况下,利用所确定的地址距离与所记录的地址距离中较大的地址距离来更新所记录的地址距离;或者在地址距离为负数的情况下,利用所确定的地址距离与所记录的地址距离中较小的地址距离来更新所记录的地址距离。
91.在训练初期,如果在地址间隔历史记录找到相同的地址间隔,则能够确定相同的地址间隔之间的地址距离。例如,在地址间隔历史记录中存在两个相同的地址间隔的情况下,确定地址距离为两个相同的地址间隔之间的距离;在地址间隔历史记录中存在多个相同的地址间隔的情况下,确定地址间隔和与其相同的各个先前地址间隔之间的距离,并根据所确定的各个距离确定当前的地址距离,所确定的地址距离为各个距离中最远的距离或者与记录的地址距离相同的距离。
92.如果这时不存在所记录的地址距离,则利用所确定的地址距离来更新所记录的地址距离。
93.在确定地址距离后,判断上一步中计算出的地址距离与历史地址距离是否相同。
94.在存在所记录的地址距离,且所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数进行递增。如果所记录的地址距离的重复次数未超出第一阈值,则继续访问地址、计算地址距离、与地址距离的记录进行比较。如果所记录的地址距离的重复次数超出第一阈值,则确定对所记录的地址距离的训练完成。
95.需要说明的是这里的第一阈值是根据经验和预取数据要求提前设置好的,其目的是验证所记录的地址距离多次出现,待访问的地址之间具有规律。
96.在存在所记录的地址距离,且所确定的地址距离与所记录的地址距离不同的情况下,对所记录的地址距离的重复次数进行递减,继续获取下一个待访问的地址并确定地址距离,在所记录的地址距离的重复次数低于第二阈值的情况下,重新对所记录的地址距离进行训练。
97.图中只示出了一种处理方式,应当理解,在存在所记录的地址距离,且所确定的地
址距离与所记录的地址距离不同的情况下,还可以直接重新对所记录的地址距离进行训练。这里的第二阈值可以为0,然而不限于此。
98.类似地,在地址间隔历史记录中不存在相同的地址间隔且存在所记录的地址距离的情况下,对所记录的地址距离的重复次数进行递减,继续获取下一个待访问的地址并确定地址距离,在所记录的地址距离的重复次数低于第二阈值的情况下,重新对所记录的地址距离进行训练;或者在所述地址间隔历史记录中不存在相同的地址间隔且存在所记录的地址距离的情况下,重新对所记录的地址距离进行训练。
99.预取训练过程完成后,进入数据预取过程。
100.图6b是示出根据本公开的实施例的数据预取过程中针对各种情形的处理过程的示意性流程图。
101.在数据预取过程中仍需要继续访问地址,按照类似预取训练过程中的方法来计算地址距离,并与所记录的地址距离进行比较。需要说明的是,此阶段中,记录的地址距离为经过预取训练的地址距离。由于数据预取过程基于预取训练过程的结果,故数据预取阶段肯定存在所记录的地址距离。
102.在数据预取过程中,在地址间隔历史记录中在存在两个相同的地址间隔的情况下,确定地址距离为两个相同的地址间隔之间的距离;在地址间隔历史记录中在存在多个相同的地址间隔的情况下,确定地址间隔和与其相同的各个先前地址间隔之间的距离,并根据所确定的各个距离确定当前的地址距离,所确定的地址距离为各个距离中最远的距离或者与记录的地址距离相同的距离。
103.然后,在所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数进行递增,并基于记录的地址距离来预取数据;否则在所确定的地址距离与所记录的地址距离不同的情况下,对所记录的地址距离的重复次数进行递减,并继续按所记录的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新对所记录的地址距离进行训练。
104.图中只示出了一种处理方式,应当理解,在所确定的地址距离与所记录的地址距离不同的情况下,还可以直接重新对所记录的地址距离进行训练。这里的第三阈值可以为0,然而不限于此。
105.类似地,在地址间隔历史记录中不存在相同的地址间隔的情况下,对所记录的地址距离的重复次数进行递减,并继续按之前训练的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新对所记录的地址距离进行训练;或者在所述地址间隔历史记录中不存在相同的地址间隔的情况下,重新对所记录的地址距离进行训练。
106.可选地,在预取训练过程和数据预取过程中,记录地址距离的重复次数的计数器可以是同一个计数器,也可以是不同的计数器。
107.综合图6a和图6b中的处理过程,图7是示出根据本公开的实施例的按照地址距离来预取数据的示意性流程图。
108.为了更清楚地说明按照地址距离来预取数据的方法和按照地址间隔来预取数据的方法的异同,在图7中,与按照地址间隔来预取数据的数据预取方法(即图3)不同的重点步骤用灰色虚线框示出。
109.预取训练开始后,计算当前地址距离。
110.对于地址间隔历史记录中不存在相同的地址间隔和/或不存在所记录的地址距离的情况,可以按照图6a中的描述来处理。
111.如果在地址间隔历史记录找到相同的地址间隔,则确定相同的地址间隔之间的地址距离。
112.在确定地址距离后,判断上一步中计算出的地址距离与历史地址距离是否相同。
113.如果不同,则对所记录的地址距离的重复次数进行递减,继续获取下一个待访问的地址并确定地址距离,直至所记录的地址距离的重复次数低于第二阈值时,重新对所记录的地址距离进行训练。
114.如果相同,则对所记录的地址距离的重复次数进行递增,继续获取下一个待访问的地址并确定地址距离,直至记录的地址距离的重复次数超出第一阈值时,地址距离的训练完成。
115.预取训练过程完成后,进入数据预取过程。
116.对于地址间隔历史记录中不存在相同的地址间隔的情况,可以按照图6b中的描述来处理。
117.如果在地址间隔历史记录找到相同的地址间隔,则确定相同的地址间隔之间的地址距离。
118.在确定地址距离后,判断上一步中计算出的地址距离与历史地址距离是否相同。
119.如果不同,则对所记录的地址距离的重复次数进行递减,并继续按所记录的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新对所记录的地址距离进行训练。
120.如果相同,则对所记录的地址距离的重复次数进行递增,并继续基于记录的地址距离来预取数据。
121.通过与图3的对比可以看出,按照地址距离来预取数据的方法与按照地址间隔来预取数据的方法相比,其不同之处在于:按照地址间隔来预取数据的方法按照相邻两个地址之间的地址间隔来预取数据;而按照地址距离来预取数据的方法按照一段地址间隔的历史记录中,相同的地址间隔之间的地址距离来预取数据。在一个地址序列中各相邻地址之间的地址间隔不相同的情况下,可能会出现一段地址序列之间具有固定距离的情形。本公开所述的方法利用一段地址序列中,相同的地址间隔之间的地址距离来预取数据,能够支持非单一地址间隔访问模式的数据预取。而且,按照地址距离来预取数据的方法也能够兼容各相邻地址之间的地址间隔相同的情况,兼容性及普适性更强。
122.表1是示出根据本公开的实施例,在预取训练及数据预取过程中,访问地址与地址距离的关系的一个示例。
123.表1
[0124][0125][0126]
根据表1描述的示例,该段地址访问的地址间隔都为正数,且各访问地址之间的间隔不是固定值,但按照1、4、8、1、4、8
……
的规律分布。假设地址间隔历史记录的长度为4,且
相同的地址距离出现2次即为训练成功,则计算机访问地址时按照下面描述的过程来预取数据。
[0127]
当计算机访问的地址为a时,此时a为访问的第一个地址,上一个地址未知,此处记为x,x表示无效状态。地址间隔历史记录和地址距离都记为0。此时处于预取训练过程,预取状态记为0。
[0128]
当计算机访问的地址为a 1时,上一个地址为a,它们之间的地址间隔为1,此时历史地址间隔的最大值为1,地址距离为1。此时处于预取训练过程,预取状态记为0。
[0129]
当计算机访问的地址为a 5时,上一个地址为a 1,它们之间的地址间隔为4,此时历史地址间隔的最大值为4,地址距离为4。此时处于预取训练过程,预取状态记为0。
[0130]
当计算机访问的地址为a 13时,上一个地址为a 5,它们之间的地址间隔为4,此时历史地址间隔的最大值为8,地址距离为8。此时处于预取训练过程,预取状态记为0。
[0131]
应当理解,在历史地址间隔的历史记录中未出现重复的地址间隔时,这里使用历史地址间隔中的绝对值最大的地址间隔来更新所记录的地址距离。在历史地址间隔的历史记录中未出现重复的地址间隔时,也可以使用所记录的历史地址间隔之和来更新所记录的地址距离。
[0132]
当计算机访问的地址为a 14时,上一个地址为a 13,它们之间的地址间隔为1,此时历史地址间隔的历史记录中出现重复的地址间隔1,相同的地址间隔1之间的历史地址间隔有4和8,可以采用对相同的地址间隔与相同的地址间隔之间的各历史地址间隔求和的方式来计算相同的地址间隔之间的距离,即4 8 1=13,因此,相同的地址间隔1之间的距离为13,即地址距离为13。此时处于预取训练过程,预取状态记为0。
[0133]
当计算机访问的地址为a 18时,上一个地址为a 14,它们之间的地址间隔为4,此时历史地址间隔的历史记录中出现重复的地址间隔4,相同的地址间隔之间的距离为13(即8 1 4=13),即地址距离为13,此时地址距离13已经出现了2次,由于设定相同的地址距离出现2次即为训练成功,因此此时地址距离训练过程结束,经过训练得到的地址距离为13,后续的数据预取过程中,将按照地址距离13来进行数据预取,此处预取的地址为a 31(即18 13=31)。此时处于数据预取过程,预取状态记为1。
[0134]
当计算机访问的地址为a 26时,上一个地址为a 18,它们之间的地址间隔为8,此时历史地址间隔的历史记录中出现重复的地址间隔8,相同的地址间隔之间的距离为13(即1 4 8=13),即地址距离为13,此时地址距离13的重复次数增加一次变为3,按照地址距离13来进行数据预取,此处预取的地址为a 39(即29 13=39)。此时处于数据预取过程,预取状态记为1。
[0135]
当计算机访问的地址为a 27时,上一个地址为a 26,它们之间的地址间隔为1,此时历史地址间隔的历史记录中出现重复的地址间隔1,相同的地址间隔之间的距离为13(即4 8 1=13),即地址距离为13,此时地址距离13的重复次数增加一次变为4,按照地址距离13来进行数据预取,此处预取的地址为a 40(即27 13=40)。此时处于数据预取过程,预取状态记为1。
[0136]
当计算机访问的地址为a 31时,上一个地址为a 27,它们之间的地址间隔为4,此时历史地址间隔的历史记录中出现重复的地址间隔4,相同的地址间隔之间的距离为13(即8 1 4=13),即地址距离为13,此时地址距离13的重复次数增加一次变为5,按照地址距离
13来进行数据预取,此处预取的地址为a 44(即31 13=44)。同时,这里可以看出,地址a 31已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0137]
计算机的下一个访问地址原本应该为a 39,但是由于计算机指令乱序执行以及微架构本身结构等原因,预取时地址a 39丢失,计算机访问的地址只读到下一个地址a 40,此时,上一个地址为a 31,它们之间的地址间隔为9,此时历史地址间隔的历史记录中未找到重复的地址间隔,仍按照保存的地址距离13来进行数据预取,地址距离13的重复次数减少一次变为4,此处预取的地址为a 53(即40 13=53)。同时,这里可以看出,地址a 40已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0138]
当计算机访问的地址为a 44时,上一个地址为a 40,它们之间的地址间隔为4,此时历史地址间隔的历史记录中出现重复的地址间隔4,相同的地址间隔之间的距离为13(即9 4=13),即地址距离为13,此时地址距离13的重复次数增加一次变为5,按照地址距离13来进行数据预取,此处预取的地址为a 57(即44 13=57)。同时,这里可以看出,地址a 44已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0139]
当计算机访问的地址为a 52时,上一个地址为a 44,它们之间的地址间隔为8,此时历史地址间隔的历史记录中重复的地址间隔仍为4,相同的地址间隔之间的距离为13(即9 4=13),即地址距离为13,此时地址距离13的重复次数增加一次变为6,按照地址距离13来进行数据预取,此处预取的地址为a 57(即52 13=65)。同时,这里可以看出,地址a 52已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0140]
当计算机访问的地址为a 53时,上一个地址为a 52,它们之间的地址间隔为1,此时历史地址间隔的历史记录中重复的地址间隔仍为4,此时历史地址间隔的历史记录中未找到重复的地址间隔,仍按照地址距离13来进行数据预取,地址距离13的重复次数减少一次变为5,此处预取的地址为a 65(即53 13=66)。同时,这里可以看出,地址a 53已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0141]
当计算机访问的地址为a 57时,上一个地址为a 53,它们之间的地址间隔为4,此时历史地址间隔的历史记录中出现重复的地址间隔4,相同的地址间隔之间的距离为13(即9 4=13),即地址距离为13,此时地址距离13的重复次数增加一次变为6,按照地址距离13来进行数据预取,此处预取的地址为a 70(即57 13=70)。同时,这里可以看出,地址a 57已经在之前的预取过程中提前取到,预取命中。此时处于数据预取过程,预取状态记为1。
[0142]
后续计算机预取数据的过程类似,在此不再赘述。
[0143]
从表1中的示例可以看出,地址间隔历史记录采用的存储方式为:当所述固定长度的数组未存满时,将要存储的地址访问间隔按照从首段端至末端的顺序依次存入所述固定长度的数组;当所述固定长度的数组存满时,将数组中的首端的数丢弃,数组中存储的每一个地址访问间隔依次向首端移动一位,将要存储的地址访问间隔存入所述固定长度的数组的末端。
[0144]
可选地,地址间隔历史记录更新的方式还可以为:当所述固定长度的数组未存满时,将要存储的地址访问间隔按照从末端至首端的顺序依次存入所述固定长度的数组;当所述固定长度的数组存满时,将数组中的末端的数丢弃,数组中存储的每一个地址访问间隔依次向末端移动一位,将要存储的地址访问间隔存入所述固定长度的数组的首端。
[0145]
应当理解,这种采用先进先出的方式,对所述地址间隔历史记录进行更新的方法
只是地址间隔历史记录存储的一种方式,其它任意能够存储固定长度地址序列的存储方式都适用于本公开的实施例。
[0146]
通过上述预取训练过程及数据预取过程的分析可以看出,通过本公开的实施例提供的预取数据方法支持非单一地址间隔访问模式(例如,地址间隔为1、4、8、1、4、8
……
),提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。同时,该方法支持部分地址序列丢失的预取(例如,表1中地址a 39丢失,仍能够正确预取数据),增强了预取的稳定性。并且,该预取方法只需增加地址间隔的历史记录,并将地址间隔的记录改为地址距离的记录,存储开销和运行开销小,能够完全兼容单一地址间隔访问模式的预取。
[0147]
图8是示出根据本公开的实施例的数据预取装置的示意图。
[0148]
所述预取数据装置800可以包括访问地址获取模块801、地址间隔确定模块802、历史记录保存模块803、历史记录处理模块804、地址距离确定模块805和预取地址确定模块806。
[0149]
根据本公开的实施例,访问地址获取模块801可以被配置为:获取待访问的地址。
[0150]
可选地,获取的访问地址被存储于预取器中,并按照地址访问时间更新其存储的地址。
[0151]
根据本公开的实施例,地址间隔确定模块802,可以被配置为:确定待访问的地址与前一访问地址之间的地址间隔。
[0152]
可选地,待访问的地址与前一访问地址之间的地址间隔可以是正数,也可以是负数。
[0153]
根据本公开的实施例,历史记录保存模块803,可以被配置为:利用所述地址间隔,形成按访问时间排序的地址间隔历史记录。
[0154]
可选地,地址间隔历史记录可以以数列、数组等形式来存储数据。
[0155]
根据本公开的实施例,历史记录处理模块804,可以被配置为:确定所述地址间隔历史记录中是否存在相同的地址间隔。
[0156]
可选地,地址间隔历史记录中存储的地址间隔可以都相同,也可以地址间隔历史记录中至少包含两个不同的地址间隔,以分段的形式呈现出固定规律。
[0157]
根据本公开的实施例,地址距离确定模块805,可以被配置为:在所述地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距离。
[0158]
可选地,在地址间隔历史记录中存在两个相同的地址间隔的情况下,确定地址距离为两个相同的地址间隔之间的距离;在地址间隔历史记录中存在多个相同的地址间隔的情况下,确定地址间隔和与其相同的各个先前地址间隔之间的距离,并根据所确定的各个距离确定当前的地址距离,所确定的地址距离为各个距离中最远的距离或者与记录的地址距离相同的距离。
[0159]
根据本公开的实施例,预取地址确定模块806,可以被配置为:基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。
[0160]
可选地,基于所确定的地址距离和先前所记录的地址距离,确定用于数据预取的地址增量,其中,所述先前所记录的地址距离为经过训练的地址距离;以及基于所述用于数据预取的地址增量来确定要进行数据预取的预取地址。
[0161]
在所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的
重复次数进行递增。
[0162]
在所确定的地址距离与所记录的地址距离不同的情况下,对所记录的地址距离的重复次数进行递减,并继续按所记录的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新对所记录的地址距离进行训练;或者在所确定的地址距离与所记录的地址距离不同的情况下,重新对所记录的地址距离进行训练。
[0163]
在所述地址间隔历史记录中不存在相同的地址间隔的情况下,对所记录的地址距离的重复次数进行递减,并继续按所记录的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新对所记录的地址距离进行训练;或者在所述地址间隔历史记录中不存在相同的地址间隔的情况下,重新对所记录的地址距离进行训练。
[0164]
应当理解,本公开中描述的数据预取方法既可以以硬件的方式实现,也可以以软件的方式实现,或者以软件、硬件相结合等方式实现。一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
[0165]
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的方法和装置的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或电路的一部分,所述模块、程序段、或电路的一部分包含至少一个用于实现规定的逻辑功能的可执行指令或硬件电路。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0166]
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的数据预取方法。
[0167]
根据本公开的又一方面,还提供了一种计算机可读存储介质。图9示出了根据本公开的存储介质的示意图4000。
[0168]
如图9所示,所述计算机存储介质4020上存储有计算机可读指令4010。当所述计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的根据本公开的实施例的指令处理方法。本公开的实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率同步动态随机存取
存储器(ddrsdram)、增强型同步动态随机存取存储器(esdram)、同步连接动态随机存取存储器(sldram)和直接内存总线随机存取存储器(dr ram)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0169]
本公开的实施例提供了一种支持非单一地址间隔访问模式的数据预取方法、装置、计算机程序产品及计算机可读存储介质。
[0170]
本公开的实施例所提供的方法通过获取待访问的地址;确定待访问的地址与前一访问地址之间的地址间隔;利用所述地址间隔,形成按访问时间排序的地址间隔历史记录;在所述地址间隔历史记录中存在相同的地址间隔的情况下,确定相同的地址间隔之间的地址距离;以及基于所确定的地址距离、先前所记录的地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。通过本公开的实施例提供的数据预取方法提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。同时,该方法支持部分地址序列丢失的预取,增强了预取的稳定性。
[0171]
本公开使用了特定词语来描述本公开的实施例。如“第一/第二实施例”、“一实施例”、和/或“一些实施例”意指与本公开至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本公开的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0172]
除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
[0173]
上面是对本发明的说明,而不应被认为是对其的限制。尽管描述了本发明的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本发明的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本发明范围内。应当理解,上面是对本发明的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本发明由权利要求书及其等效物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献