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

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

2022-07-10 06:36:11 来源:中国专利 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.图1是示出根据本公开的实施例的存储器层次结构的示意图;
19.图2是示出根据本公开的实施例的按照地址间隔来预取数据的预取器结构的示意图;
20.图3是示出根据本公开的实施例的按照地址间隔来预取数据的示意性流程图;
21.图4是示出根据本公开的实施例的预取数据方法的示意性流程图;
22.图5是示出根据本公开的实施例的按照地址距离来预取数据的预取器结构的示意图;
23.图6是示出根据本公开的实施例的按照地址距离来预取数据的示意性流程图;
24.图7是示出根据本公开的实施例的计算地址距离方法的示意性流程图;
25.图8是示出根据本公开的实施例的数据预取装置的示意图;以及
26.图9是示出根据本公开的实施例的存储介质的示意图。
具体实施方式
27.为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
28.此外,在本说明书和附图中,具有基本上相同或相似步骤和元素用相同或相似的附图标记来表示,且对这些步骤和元素的重复描述将被省略。
29.此外,在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方便解释而无意将本公开限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下
文另有明确说明。
30.此外,在本说明书和附图中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
31.预取技术是通过在cache可能会发生失效之前发出预取请求,以便在该数据真正被使用到时己被提前存入cache,从而避免cache失效造成的处理器停顿。预取器作为处理器的一部分可以对地址进行预测,其实现方法为:通过已经访问过的“历史”地址,发现访问地址之间的规律或者访问模式,然后根据当前访问地址推测出将来要访问的地址。作为示例,本公开的实施例提供的数据预取方法可以用于从内存(memory)中取到位于中央处理器内部的高速缓存中,或者提前将数据从低一级的高速缓存取到更高级的高速缓存中(例如l2 cache到l1 cache)。
32.综上所述,本公开的实施例提供的方案涉及预取技术、处理器等领域,下面将结合附图对本公开的实施例进行进一步地描述。
33.图1是示出根据本公开的实施例的存储器层次结构的示意图。如图1所示,计算机中具有多种类型的存储器。其中,l0级存储器为寄存器,位于cpu中;高速缓存(cache)位于寄存器与主存之间,通常由静态存储器(sram,static random access memory)组成,高速缓存包括l1 cache、l2 cache、l3cache,其存储级别按照l1至l3的顺序依次降低;l4级存储器为主存,其通常由动态存储器(dram,dynamic random access memory)组成;l5级存储器为本地二级存储,其通常由本地磁盘组成;l6级存储器为远程二级存储,其通常由分布式文件系统、web服务器等组成。
34.各级存储器之间的关系为:cpu寄存器保存取自高速缓存存储的数据;l1高速缓存保存取自l2高速缓存的数据;l2高速缓存保存取自l3高速缓存的数据;l3高速缓存保存取自主存的数据;主存保存取自本地磁盘的数据;本地磁盘保存取自远程网络服务器的数据。各存储器的容量大小、处理速度及价格具有图1所示的关系,即从l6级存储器至l0级存储器,存储容量越来越小、处理速度越来越快、价格也越来越高。
35.在程序处理过程中,内存(即主存)存放程序运行需要的全部数据和指令。由于高速缓存的访问速度要比内存快得多,处理器需要读写数据时,会先将数据从内存取到高速缓存中,高速缓存中存放的是内存中的数据备份,之后会直接读写高速缓存上的数据备份,以降低内存访问延迟。为了加速访存,处理器的一个模块预取器,会预判一部分将要访问的数据,提前将这些数据从内存中取到高速缓存中准备好,在真正需要该数据时,直接访问在高速缓存中已经准备好的数据,有效节约了内存访问时间。
36.应当理解,本公开的实施例提供的数据预取方法不仅适用于从内存到高速缓存的情况,从l3高速缓存到l2高速缓存、从l2高速缓存到l1高速缓存等从低速(大容量)存储器到高速(小容量)存储器的数据预取均可使用本公开提供的数据预取方法来达到提升预取覆盖率,减少缓存缺失,提高预取准确率、增强预取稳定性的目的。
37.目前的数据预取通常采用固定地址间隔访问模式,通过该种方式可以识别出具有单一地址间隔的访问模式,但是对于相对复杂的非单一地址间隔的访问模式则无法识别。同时,在这种固定地址间隔访问模式下,有时会将非单一地址间隔的情形误判断为单一地
址间隔的情形而造成错误的预取。以下将结合实施例具体说明。
38.图2是示出根据本公开的实施例的按照地址间隔来预取数据的预取器结构的示意图。
39.如图2所示,预取器中包括:访问地址、前一访问地址、地址间隔以及预取状态的存储记录。对于每一条访存指令来说,计算机储存访问地址,并形成访问地址的历史记录,通过本次访问的地址与上次访问的地址相减可以得到地址之间的间隔,如果两次地址间隔相同则将地址间隔的重复次数增加1次,如果地址间隔的重复次数达到预定数目,则认为该段地址访问具有固定的地址间隔,预取训练成功,得到一个固定的地址间隔。预取训练完成后进入数据预取阶段,计算机将每次要访问的地址与经训练得到的地址间隔相加,得到预取的地址,提前从内存中备份并存入高速缓存中,后续用到该预取地址时,计算机可以直接从高速缓存中读取到该数据,从而有效减少了访存时间。
40.例如,对于地址访问序列: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时,该地址已经被提前存入高速缓存中,计算机可以直接从高速缓存中读取到该数据,从而有效减少了访存时间。
41.图3是示出根据本公开的实施例的按照地址间隔来预取数据的示意性流程图。
42.如图3所示,按照地址间隔来预取数据的过程主要包括预取训练过程和数据预取过程。预取训练过程训练要用于数据预取的地址间隔,数据预取过程基于所确定的地址间隔和先前所记录的地址间隔来确定要进行数据预取的预取地址。
43.在预取训练过程中,基于当前待访问地址与前一访问地址之间的地址差来确定地址间隔。
44.在预取训练初期,可能不存在所记录的地址间隔,这时利用当前确定的地址间隔来更新所记录的地址间隔。
45.在确定地址间隔后,判断上一步中计算出的地址间隔与历史地址间隔是否相同。
46.在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔不同的情况下,对所记录的地址间隔的重复次数进行递减,继续获取下一个待访问的地址并确定地址间隔,在所记录的地址间隔的重复次数低于第一阈值的情况下,重新对所记录的地址间隔进行训练。这里的第一阈值可以为0,然而不限于此。
47.图中只示出了一种处理方式,应当理解,在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔不同的情况下,还可以直接重新对所记录的地址间隔进行训练。
48.可选地,还可以继续对地址距离进行训练以得到用于预取数据的地址间隔。在存在所记录的地址间隔,且所确定的地址间隔与所记录的地址间隔相同的情况下,对所记录的地址间隔的重复次数进行递增。如果所记录的地址间隔的重复次数未超出第二阈值,则继续访问地址、计算地址间隔、与地址间隔的记录进行比较。如果所记录的地址间隔的重复次数超出第二阈值,则确定对所记录的地址间隔的训练完成。需要说明的是,这里的第二阈值是根据经验和预取数据要求提前设置好的,其目的是验证所记录的地址间隔多次出现,
待访问的地址之间具有规律。
49.预取训练过程完成后,进入数据预取过程。
50.在数据预取过程中仍需要继续访问地址,按照类似预取训练过程中的方法来计算地址间隔,并与所记录的地址间隔进行比较。需要说明的是,此阶段中,记录的地址间隔为经过预取训练的地址间隔。
51.在数据预取过程中,在所确定的地址间隔与所记录的地址间隔相同的情况下,对所记录的地址间隔的重复次数进行递增,并基于记录的地址间隔来预取数据;否则在所确定的地址间隔与所记录的地址间隔不同的情况下,对所记录的地址间隔的重复次数进行递减,并继续按所记录的地址间隔进行数据预取,在所记录的地址间隔的重复次数低于第三阈值的情况下,重新对所记录的地址间隔进行训练。
52.图中只示出了一种处理方式,应当理解,在所确定的地址间隔与所记录的地址间隔不同的情况下,还可以直接重新对所记录的地址间隔进行训练。这里的第三阈值可以为0,然而不限于此。
53.可选地,在预取训练过程和数据预取过程中,记录地址间隔的重复次数的计数器可以是同一个计数器,也可以是不同的计数器。
54.通过分析图2和图3中所描述的按照地址间隔来预取数据的数据预取方法,可以发现这种数据预取方法具有如下几点局限性:
55.1、无法识别非单一地址间隔的访问模式
56.图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)。按照地址间隔来预取数据的方法无法识别这种非单一地址间隔的访问模式。
57.2、造成错误的预取
58.按照地址间隔来预取数据的方法还有可能将非单一地址间隔的访问模式识别成单一地址间隔访问模式,从而发出错误的预取。例如,对一个具有连续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,这是一个错误的预取。错误的预取不只会浪费内存带宽,造成正常的内存访问发生阻塞,取回的错误数据还会造成高速缓存的污染,从而降低了系统的整体性能。
59.为了解决上述问题,本公开提出了一种按照地址距离来预取数据的方法。该方法基于参考地址距离来确定要进行数据预取的预取地址。虽然一个地址序列中各相邻地址之间的地址间隔不相同,但是可能会出现跳跃特定数量的地址后具有固定地址距离的情形。本公开所述的方法利用跳跃特定数量的地址后的地址距离来预取数据,实现了支持非单一
地址间隔访问模式的数据预取。
60.需要说明的是,本文中的地址间隔指两个相邻的访问地址之间的间隔,而地址距离指前一记录的访问地址与在前一记录的访问地址基础上跳跃特定数量的地址后得到的地址之间的距离,地址距离可能为不相邻的访问地址之间的距离。例如,对于地址访问序列为:a、a 1、a 5、a 13
……
的示例,可以得到两个相邻的访问地址之间的地址间隔依次为:1、4、8
……
,假设跳跃2个地址来确定地址距离,则地址a与在地址a基础上跳跃2个地址后得到的地址a 13之间的地址距离为13。
61.图4是示出根据本公开的实施例的数据预取方法的示意性流程图400。
62.如图4所示,在步骤s401中,开始进入数据预取,首先,预取器获取待访问的地址、以及访问地址历史记录。
63.可选地,获取的访问地址可以被存储于预取器中,并按照地址访问时间更新。对于两个相邻的访问地址,它们之间的地址间隔通常与访问数据的数据类型相关。例如,在访问数据的数据类型为字符类型(占1byte内存)的情况下,两个相邻的访问地址之间的地址间隔为1;在访问数据的数据类型为整数(占4byte内存)的情况下,两个相邻的访问地址之间的地址间隔为4;在访问数据的数据类型为双精度浮点数类型(占8byte内存)的情况下,两个相邻的访问地址之间的地址间隔为8
……
64.在步骤s402中,预取器根据步骤s401中的访问地址历史记录,确定预取地址跳跃数量。
65.应当理解,通常对于本公开中的数据预取方法,预取地址跳跃数量为至少一个,但本公开的数据预取方法也能够适用于预取地址跳跃数量为零(即不跳越)的情况。
66.在步骤s403中,预取器根据步骤s401中的访问地址历史记录和步骤s402中确定的预取地址跳跃数量,确定参考地址距离。
67.可选地,参考地址距离可以是正数,也可以是负数。即在访问地址依次增加的情况下(例如,a、a 2、a 4
……
),两个相邻的访问地址之间的地址间隔是正数,因此参考地址距离也为正数;在访问地址依次减小的情况下(例如,a、a-2、a-4
……
),两个相邻的访问地址之间的地址间隔是负数,因此参考地址距离也为负数。
68.可选地,步骤s403中,可以使用用于记录预取地址跳跃数量的第一计数器,和用于记录当前地址跳跃数量的第二计数器,来确定按照预取地址跳跃数量跳跃后得到的访问地址,进而确定参考地址距离。
69.最后,在步骤s404中,基于所确定的参考地址距离以及待访问的地址,确定要进行数据预取的预取地址。
70.可选地,图4中所描述参考地址距离是经过训练的,即数据预取方法可以包括:预取训练过程和数据预取过程,其中,预取训练过程根据访问地址历史记录,训练地址距离和参考预取地址跳跃数量,在预取训练完成时,预取地址跳跃数量是经过训练的参考预取地址跳跃数量,参考地址距离是经过训练的地址距离;数据预取过程基于所确定的参考地址距离以及待访问的地址,确定要进行数据预取的预取地址。
71.图5是示出根据本公开的实施例的按照地址距离来预取数据的预取器结构的示意图。
72.如图5所示,预取器中包括:访问地址、前一访问地址、预取地址跳跃数量、当前地
址跳跃数量、地址距离以及预取状态的存储记录。可以看出,按照地址距离来预取数据的预取器结构与按照地址间隔来预取数据的预取器结构相比,其不同之处在于:按照地址间隔来预取数据的预取器中存储地址间隔,按照相邻两个地址之间的地址间隔来预取数据;而按照地址距离来预取数据的预取器中存储地址距离,按照地址距离来预取数据,预取地址跳跃数量和当前地址跳跃数量用于控制更新前一记录的访问地址,从而确定出访问地址与前一记录的访问地址之间的地址距离。该数据预取方法存储开销和运行开销小。
73.图6是示出根据本公开的实施例的按照地址距离来预取数据的示意性流程图。
74.为了更清楚地说明按照地址距离来预取数据的方法和按照地址间隔来预取数据的方法的异同,在图6中,与按照地址间隔来预取数据的数据预取方法(即图3)不同的重点步骤用灰色虚线框示出。
75.本公开的数据预取方法可以包括预取训练过程和数据预取过程。预取训练过程训练以得到要用于数据预取的参考地址距离,数据预取过程基于所确定的参考地址距离以及待访问的地址,确定要进行数据预取的预取地址。
76.预取训练开始后,计算当前地址距离,并将当前地址距离与地址距离的记录进行比较。
77.如果判断当前地址距离与地址距离的记录不同,则继续判断预取地址跳跃数量是否超过第一阈值,在预取地址跳跃数量超过第一阈值的情况下,对参考预取地址跳跃数量进行初始化,并重新开始预取训练;在预取地址跳跃数量未超过第一阈值的情况下,将参考预取地址跳跃数量递增后,继续基于新的参考预取地址跳跃数量来计算地址距离。
78.如果判断当前地址距离与地址距离的记录相同,则对所记录的地址距离的重复次数递增,直至所记录的地址距离的重复次数超出第二阈值,确定对预取地址跳跃数量和参考地址距离的训练完成。
79.预取训练过程完成后,进入数据预取过程。
80.预取训练开始后,计算当前地址距离,并将当前地址距离与参考地址距离进行比较。
81.如果判断当前地址距离与地址距离的记录不同,则对所记录的地址距离的重复次数进行递减,并继续按所记录的地址距离进行数据预取,在所记录的地址距离的重复次数低于第三阈值的情况下,重新开始预取训练。
82.如果判断当前地址距离与地址距离的记录相同,则对所记录的地址距离的重复次数进行递增,并继续基于记录的地址距离来预取数据。
83.更具体地来说,预取训练过程中,获取参考预取地址跳跃数量;对于访问地址历史记录中的第一地址,确定在访问地址历史记录中按照参考预取地址跳跃数量跳跃后得到的访问地址作为第二地址,然后确定第一地址和第二地址之间的地址距离。
84.第一地址和第二地址之间的地址距离可以通过对第一地址和第二地址求差来计算,确定的地址距离既可以是正数,也可以是负数。
85.参考预取地址跳跃数量的初始值可以为0,但不限于此。
86.在训练初期,可能不存在已记录的地址距离,所记录的地址距离为无效值,这时利用所确定的地址距离更新所记录的地址距离,并利用第二地址更新第一地址。
87.在之后的训练过程中,存在记录的地址距离,所记录的地址距离为有效值。这时,
判断所确定的地址距离与所记录的地址距离是否相等。
88.如果地址距离与所记录的地址距离不相等,则判断参考预取地址跳跃数量是否超过第一阈值。如果此时参考预取地址跳跃数量未超过第一阈值,则将参考预取地址跳跃数量递增,将所记录的地址距离设置为无效值,或者不更新所记录的地址距离,利用第二地址更新第一地址,直至所确定的地址距离与所记录的地址距离相等。如果地址距离与所记录的地址距离不相等,且参考预取地址跳跃数量超过第一阈值,则对参考预取地址跳跃数量进行初始化,重新训练地址距离,并利用第二地址更新第一地址。
89.如果所确定的地址距离与所记录的地址距离相等,则可以将所记录的地址距离作为参考地址距离,并确定对预取地址跳跃数量和参考地址距离的训练完成。
90.可选地,还可以继续对地址距离进行训练以得到参考地址距离和预取地址跳跃数量。即,在所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数递增,并利用第二地址更新第一地址,直至所记录的地址距离的重复次数超出第二阈值;在所记录的地址距离的重复次数超出第二阈值的情况下,将所记录的地址距离作为参考地址距离,并确定对预取地址跳跃数量和参考地址距离的训练完成。
91.其中,训练完成时的参考地址距离可以通过以下方式来确定:将训练完成时所存储的参考预取地址跳跃数量作为预取地址跳跃数量,基于训练得到的预取地址跳跃数量、以及训练完成时所对应的第一地址和第二地址,确定参考地址距离;或者将训练完成时所存储的地址距离作为参考地址距离,其中,所存储的地址距离与训练完成时的预取地址跳跃数量以及第一地址相关联。
92.预取训练过程完成后,进入数据预取过程。
93.在数据预取过程中,首先确定当前地址跳跃数量是否达到预取地址跳跃数量。
94.在当前地址跳跃数量与预取地址跳跃数量相等的情况下,对于访问地址历史记录中的第一地址,确定在访问地址历史记录中按照预取地址跳跃数量跳跃后得到的访问地址作为第二地址,并利用第二地址更新第一地址,否则对当前地址跳跃数量递增,并继续访问下一个地址。
95.在确定地址距离后,将所确定的地址距离与参考地址距离进行比较。在确定的地址距离与参考地址距离相等的情况下,对所记录的地址距离的重复次数进行递增,利用第二地址更新第一地址,并继续基于记录的地址距离来预取数据;在确定的地址距离与参考地址距离不相等的情况下,对所记录的地址距离的重复次数递减,在参考地址距离的重复次数低于第三阈值的情况下,重新训练地址距离,并利用第二地址更新第一地址。这里的第三阈值可以为0,然而不限于此。
96.图中只示出了一种处理方式,应当理解,在确定的地址距离与参考地址距离不相等的情况下,还可以直接重新对所记录的地址距离进行训练,并利用第二地址更新第一地址。
97.可选地,在预取训练过程和数据预取过程中,记录地址距离的重复次数的计数器可以是同一个计数器,也可以是不同的计数器。
98.应当注意,在预取训练过程中,所确定的地址距离与所记录的地址距离相比较,在训练完成后,得到参考地址距离,在数据预取过程中,所确定的地址距离与参考地址距离相比较。在预取训练过程中,训练参考预取地址跳跃数量,在训练完成后,得到预取地址跳跃
数量和参考地址距离,在数据预取过程中,利用参考地址距离来预取数据。其中,参考地址距离与预取地跳跃数量相关联,参考地址距离为访问地址历史记录中的第一地址和在第一地址基础上按照预取地址跳跃数量跳跃后得到第二地址之间的地址距离。
99.通过与图3的对比可以看出,按照地址距离来预取数据的方法与按照地址间隔来预取数据的方法相比,其不同之处在于:按照地址间隔来预取数据的方法按照相邻两个地址之间的地址间隔来预取数据;而按照地址距离来预取数据的方法按照经过训练的参考地址距离来预取数据。在一个地址序列中各相邻地址之间的地址间隔不相同的情况下,可能会出现每次跳跃特定数量的地址后,具有固定间隔的情形。本公开所述的方法利用按照预取地址跳跃数量跳跃后得到的参考地址距离来预取数据,能够支持非单一地址间隔访问模式的数据预取。而且,按照地址距离来预取数据的方法也能够兼容各相邻地址之间的地址间隔相同的情况,兼容性及普适性更强。
100.图7是示出根据本公开的实施例的计算地址距离方法的示意性流程图。
101.对于图6中所描述的数据预取方法中的预取训练阶段,在计算地址距离时,记录当前地址跳跃数量,当前地址跳跃数量的初始值为0。
102.计算机访问地址,并比较当前地址跳跃数量与参考预取地址跳跃数量之间的关系。
103.在当前地址跳跃数量小于参考预取地址跳跃数量的情况下,将当前地址跳跃数量递增,并继续访问下一个地址。
104.在当前地址跳跃数量等于参考预取地址跳跃数量的情况下,确定已在访问地址历史记录中按照参考预取地址跳跃数量跳跃,将按照参考预取地址跳跃数量跳跃后得到的访问地址作为第二地址。
105.需要说明的是,不论是预取训练过程还是数据预取过程都可以参考图7中的方法计算地址距离。
106.在预取训练过程中,训练参考预取地址跳跃数量,当前地址跳跃数量与参考预取地址跳跃数量作比较,并在当前地址跳跃数量与参考预取地址跳跃数量相等时计算当前地址与前一记录的地址之间的地址距离,并将该地址距离与记录的地址距离作比较。在训练完成后,得到用于数据预取的预取地址跳跃数量。
107.在数据预取过程中,当前地址跳跃数量与预取地址跳跃数量作比较,并在当前地址跳跃数量与预取地址跳跃数量相等时计算当前地址与前一记录的地址之间的地址距离,并将该地址距离与经训练确定的参考地址距离作比较。
108.表1是示出根据本公开的实施例,在预取训练及数据预取过程中,访问地址与地址间隔的关系的一个示例。为了更清楚地描述整个过程,表中前一记录的访问地址变化的行被标识为灰色。在表1中,预取地址跳跃数量是经过训练的参考预取地址跳跃数量,参考地址距离是经过训练的地址距离。
109.表1
[0110][0111][0112]
根据表1描述的实施例,该段地址访问的地址间隔都为正数,且各访问地址之间的间隔不是固定值,但按照1、4、8、1、4、8
……
的规律分布。假设预取地址跳跃数量的第一阈值为16,且相同的地址距离出现2次即为训练成功,则计算机访问地址时按照下面描述的过程来预取数据。
[0113]
当计算机访问的地址为a时,此时a为访问的第一个地址,前一记录的访问地址未知,此处记为x。当前地址跳跃数量、参考预取地址跳跃数量、地址距离的重复次数都为0。在访问完地址a之后,前一记录的访问地址从x更新为a。
[0114]
当计算机访问的地址为a 1时,前一记录的访问地址为a,地址距离为0,参考预取地址跳跃数量为0,当前地址跳跃数量为0,在访问完地址a 1之后,前一记录的访问地址从a更新为a 1,地址距离从x更新为1,地址距离1的重复次数从0更新为1。此处,重复次数1表示该地址距离1出现1次。后面继续判断参考预取地址跳跃数量0和地址距离1是否被接下来的
地址所遵守。
[0115]
当计算机访问的地址为a 5时,前一记录的访问地址为a 1,它们之间的地址距离为4,此时所确定的地址距离4与所记录的地址距离1不相同,确认按跳跃0个地址来预取数据不能满足要求,由于此时参考预取地址跳跃数量未超过第一阈值16,仍能对参考预取地址跳跃数量递增后重新开始训练,参考预取地址跳跃数量从0更新为1,前一记录的访问地址的记录从a 1更新为a 5,地址距离从1更新为x,地址距离的重复次数从1更新为0。
[0116]
当计算机访问的地址为a 13时,前一记录的访问地址为a 5,参考预取地址跳跃数量为1,由于此处重新开始训练,所以地址距离未知,仍记为x,当前地址跳跃数量为0,地址距离的重复次数为0,而且由于当前地址跳跃数量0小于参考预取地址跳跃数量1,在访问完地址a 13之后,当前地址跳跃数量从0更新为1,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0117]
当计算机访问的地址为a 14时,前一记录的访问地址为a 5,地址距离为x,参考预取地址跳跃数量为1,当前地址跳跃数量为1,由于当前地址跳跃数量等于参考预取地址跳跃数量,在访问完地址a 14之后,已完成所需的参考预取地址跳跃数量的跳跃,将当前的地址a 14确定为第二地址,并计算当前的地址a 14与前一记录的访问地址a 5之间的地址距离,将前一记录的访问地址从a 5更新为a 14,地址距离从x更新为9。而且,在访问完地址a 14之后,当前地址跳跃数量由1更新为0,地址距离9的重复次数从0更新为1。此处,重复次数1表示该地址距离1出现1次。后面继续判断参考预取地址跳跃数量1和地址距离9是否被接下来的地址所遵守。
[0118]
当计算机访问的地址为a 18时,前一记录的访问地址为a 14,参考预取地址跳跃数量为1,当前地址跳跃数量为0,由于此时当前地址跳跃数量0小于参考预取地址跳跃数量1,还未进行所要求的参考预取地址跳跃数量的跳跃,在访问完地址a 13之后,当前地址跳跃数量从0更新为1,但所记录的地址距离和参考预取地址跳跃数量不发生变化。
[0119]
当计算机访问的地址为a 26时,前一记录的访问地址为a 14,它们之间的地址距离为12,此时所确定的地址距离12与所记录的地址距离9不相同,确认按跳跃1个地址来预取数据不能满足要求,由于此时参考预取地址跳跃数量未超过第一阈值16,仍能对参考预取地址跳跃数量递增后重新开始训练,参考预取地址跳跃数量从1更新为2,前一记录的访问地址的记录从a 14更新为a 26,地址距离从9更新为x,地址距离的重复次数从1更新为0。
[0120]
当计算机访问的地址为a 27时,前一记录的访问地址为a 26,参考预取地址跳跃数量为2,由于此处重新开始训练,所以地址距离未知,仍记为x,当前地址跳跃数量为0,地址距离的重复次数为0,而且由于此时当前地址跳跃数量0小于参考预取地址跳跃数量2,还未进行所要求的参考预取地址跳跃数量的跳跃,在访问完地址a 27之后,当前地址跳跃数量从0更新为1,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0121]
当计算机访问的地址为a 31时,前一记录的访问地址为a 26,参考预取地址跳跃数量为2,地址距离未知,仍记为x,当前地址跳跃数量为1,地址距离的重复次数为0,由于此时当前地址跳跃数量1小于参考预取地址跳跃数量2,还未进行所要求的参考预取地址跳跃数量的跳跃,在访问完地址a 31之后,当前地址跳跃数量从1更新为2,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0122]
当计算机访问的地址为a 39时,前一记录的访问地址为a 26,地址距离为x,参考预取地址跳跃数量为2,当前地址跳跃数量为2,由于当前地址跳跃数量等于参考预取地址跳跃数量,在访问完地址a 39之后,已完成所需的参考预取地址跳跃数量的跳跃,将当前的地址a 39确定为第二地址,并计算当前的地址a 39与前一记录的访问地址a 26之间的地址距离,将前一记录的访问地址从a 26更新为a 39,地址距离从x更新为13。而且,在访问完地址a 39之后,当前地址跳跃数量由2更新为0,地址距离13的重复次数从0更新为1。此处,重复次数1表示该地址距离1出现1次。后面继续判断参考预取地址跳跃数量2和地址距离13是否被接下来的地址所遵守。
[0123]
当计算机访问的地址为a 40时,前一记录的访问地址为a 39,参考预取地址跳跃数量为2,当前地址跳跃数量为0,由于此时当前地址跳跃数量0小于参考预取地址跳跃数量2,还未进行所要求的参考预取地址跳跃数量的跳跃,在访问完地址a 40之后,当前地址跳跃数量从0更新为1,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0124]
当计算机访问的地址为a 44时,前一记录的访问地址为a 39,参考预取地址跳跃数量为2,当前地址跳跃数量为1,由于此时当前地址跳跃数量1小于参考预取地址跳跃数量2,还未进行所要求的参考预取地址跳跃数量的跳跃,在访问完地址a 44之后,当前地址跳跃数量从1更新为2,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0125]
当计算机访问的地址为a 52时,参考预取地址跳跃数量为2,当前地址跳跃数量为2,由于当前地址跳跃数量等于参考预取地址跳跃数量,在访问完地址a 52之后,已完成所需的参考预取地址跳跃数量的跳跃,将当前的地址a 52确定为第二地址,并计算当前的地址a 52与前一记录的访问地址a 39之间的地址距离,前一记录的访问地址从a 39更新为a 52,确定的地址距离为13,此时所确定的地址距离13与所记录的地址距离13相同,地址距离13的重复次数从1更新为2,当前地址跳跃数量从2更新为0。由于设定相同的地址距离出现2次即为训练成功,因此此时预取训练过程结束,经过训练得到的地址距离为13,即参考地址距离为13;经过训练得到的参考预取地址跳跃数量为2,即预取地址跳跃数量为2,后续的数据预取过程中,将按照参考地址距离13来进行数据预取,此处预取的地址为a 65(即52 13=65)。
[0126]
当计算机访问的地址为a 53时,前一记录的访问地址为a 52,预取地址跳跃数量为2,当前地址跳跃数量为0,由于此时当前地址跳跃数量0小于预取地址跳跃数量2,还未进行所要求的预取地址跳跃数量的跳跃,在访问完地址a 53之后,当前地址跳跃数量从0更新为1,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0127]
当计算机访问的地址为a 57时,前一记录的访问地址为a 52,预取地址跳跃数量为2,当前地址跳跃数量为1,由于此时当前地址跳跃数量1小于参考地址跳跃数量2,还未进行所要求的预取地址跳跃数量的跳跃,在访问完地址a 57之后,当前地址跳跃数量从1更新为2,但所记录的地址距离、地址距离的重复次数和参考预取地址跳跃数量不发生变化。
[0128]
当计算机访问的地址为a 65时,预取地址跳跃数量为2,当前地址跳跃数量为2,由于当前地址跳跃数量等于预取地址跳跃数量,在访问完地址a 65之后,已完成所需的预取地址跳跃数量的跳跃,将当前的地址a 65确定为第二地址,并计算当前的地址a 65与前一
记录的访问地址a 52之间的地址距离,前一记录的访问地址从a 52更新为a 65,确定的地址距离为13,此时所确定的地址距离13与参考地址距离13相同,地址距离13的重复次数从2更新为3,当前地址跳跃数量从2更新为0,此时按照参考地址距离13预取的地址为a 78(即65 13=78)。同时,这里可以看出,地址a 65已经在之前的预取过程中提前取到,预取命中。
[0129]
后续计算机预取数据的过程类似,在此不再赘述。
[0130]
需要说明的是,在本公开中,前一记录的访问地址并非指两个相邻的访问地址中的前一个访问地址,而是指按照参考预取地址跳跃数量或预取地址跳跃数量跳跃后得到、并记录在地址访问记录中的地址(例如,表1中的地址a 1、a 5、a 14、a 26、a 39
……
)。地址访问记录中只记录按照所需的预取地址跳跃数量跳跃后得到的地址,并不记录跳跃过程中的地址中间值(例如,表1中的地址a 13、a 18、a 27、a 31
……
)。
[0131]
应当理解,表1中的实施例以相同的地址距离出现2次即为训练成功作为示例而非限制,标识预取训练成功的地址距离的重复次数还可以为其它值。
[0132]
表1中的实施例在所记录的地址距离为有效值、所确定的地址距离与所记录的地址距离不相等、且参考预取地址跳跃数量未超过第一阈值的情况下,将所记录的地址距离设置为无效值(即x)。可选地,此时还可以不更新所记录的地址距离,所记录的地址距离仍保持之前的记录不变。
[0133]
表1中的实施例中,第一阈值为16为示例而非限制,第一阈值还可以为其它值,其可以根据预取器结构或存储空间确定、或根据经验设置。
[0134]
通过上述预取训练过程及数据预取过程的分析可以看出,本公开的实施例提供的预取数据方法支持非单一地址间隔访问模式(例如,地址间隔为1、4、8、1、4、8
……
),提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。并且,该预取方法只需增加记录预取地址跳跃数量的计数器和记录当前地址跳跃数量的计数器,并将地址间隔的记录改为参考地址距离的记录,存储开销和运行开销小,能够完全兼容现有单一地址间隔访问模式的预取。
[0135]
图8是示出根据本公开的实施例的数据预取装置的示意图。
[0136]
所述预取数据装置800可以包括访问地址获取模块801、预取地址跳跃数量确定模块802、参考地址距离确定模块803、预取地址确定模块804。
[0137]
根据本公开的实施例,访问地址获取模块801可以被配置为:获取待访问的地址、以及访问地址历史记录。
[0138]
可选地,获取的访问地址及访问地址历史记录被分别存储于预取器中。在本公开中,获取的访问地址按照地址访问时间更新,访问地址历史记录只在访问地址历史记录中按照参考预取地址跳跃数量跳跃后更新。
[0139]
根据本公开的实施例,预取地址跳跃数量确定模块802可以被配置为:根据所述访问地址历史记录,确定预取地址跳跃数量。
[0140]
可选地,参考地址距离的训练和预取地址跳跃数量可以通过训练得到。
[0141]
可选地,参考地址距离的训练和预取地址跳跃数量的训练可以是关联进行的,其中,在预取训练过程中,所述根据所述访问地址历史记录,确定预取地址跳跃数量,还可以包括:获取参考预取地址跳跃数量;对于所述访问地址历史记录中的第一地址,确定在所述访问地址历史记录中按照所述参考预取地址跳跃数量跳跃后得到的访问地址作为第二地
址;确定所述第一地址和第二地址之间的地址距离;以及基于所记录的地址距离和所确定的地址距离,执行以下操作中的至少一项:在所记录的地址距离为无效值的情况下,利用所确定的地址距离更新所记录的地址距离,并利用所述第二地址更新所述第一地址;在所记录的地址距离为有效值、所确定的地址距离与所记录的地址距离不相等、且参考预取地址跳跃数量未超过第一阈值的情况下,将所述参考预取地址跳跃数量递增,将所记录的地址距离设置为无效值,或者不更新所记录的地址距离,利用所述第二地址更新所述第一地址;在所记录的地址距离为有效值、所确定的地址距离与所记录的地址距离不相等、且参考预取地址跳跃数量超过第一阈值的情况下,对参考预取地址跳跃数量进行初始化,重新训练地址距离,并利用所述第二地址更新所述第一地址;在所记录的地址距离为有效值且所确定的地址距离与所记录的地址距离相等的情况下,利用所述第二地址更新所述第一地址。
[0142]
可选地,对于所述访问地址历史记录中的第一地址,确定在所述访问地址历史记录中按照所述参考预取地址跳跃数量跳跃后得到的访问地址作为第二地址,还可以包括:对于所述第一地址之后的地址,确定其对应的当前地址跳跃数量,在当前地址跳跃数量小于参考预取地址跳跃数量的情况下,将所述当前地址跳跃数量递增,并继续访问下一个地址;以及在当前地址跳跃数量等于参考预取地址跳跃数量的情况下,确定已在所述访问地址历史记录中按照所述参考预取地址跳跃数量跳跃,将按照所述参考预取地址跳跃数量跳跃后得到的访问地址作为第二地址。
[0143]
根据本公开的实施例,参考地址距离确定模块803可以被配置为:基于所述访问地址历史记录以及所确定的预取地址跳跃数量,确定参考地址距离。
[0144]
可选地,在预取训练过程中,在所记录的地址距离为有效值且所确定的地址距离与所记录的地址距离相等的情况下,利用所述第二地址更新所述第一地址,还可以包括:在所确定的地址距离与所记录的地址距离相同的情况下,对所记录的地址距离的重复次数递增,并利用所述第二地址更新所述第一地址,直至所记录的地址距离的重复次数超出第二阈值;在所记录的地址距离的重复次数超出第二阈值的情况下,将所记录的地址距离作为所述参考地址距离,并确定对所述预取地址跳跃数量和所述参考地址距离的训练完成。
[0145]
可选地,在预取训练过程中,基于所述访问地址历史记录以及所确定的预取地址跳跃数量,确定参考地址距离,还可以包括:将训练完成时所存储的参考预取地址跳跃数量作为预取地址跳跃数量,基于训练得到的预取地址跳跃数量、以及训练完成时所对应的第一地址和第二地址,确定所述参考地址距离;或者将训练完成时所存储的地址距离作为所述参考地址距离,其中,所存储的地址距离与训练完成时的所述预取地址跳跃数量以及所述第一地址相关联。
[0146]
根据本公开的实施例,预取地址确定模块804可以被配置为:基于所确定的参考地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。
[0147]
可选地,在数据预取过程中,所述基于所确定的参考地址距离以及所述待访问的地址,确定要进行数据预取的预取地址,还可以包括:获取预取地址跳跃数量;对于所述访问地址历史记录中的第一地址,确定在所述访问地址历史记录中按照所述预取地址跳跃数量跳跃后得到的访问地址作为第二地址;确定所述第一地址和第二地址之间的地址距离;以及基于参考地址距离和所确定的地址距离,执行以下操作中的至少一项:在确定的地址距离与所述参考地址距离相等的情况下,对所记录的地址距离的重复次数递增,并利用所
述第二地址更新所述第一地址;在确定的地址距离与所述参考地址距离不相等的情况下,对所记录的地址距离的重复次数递减,在所述参考地址距离的重复次数低于第三阈值的情况下,重新训练地址距离,并利用所述第二地址更新所述第一地址;或者在确定的地址距离与所述参考地址距离不相等的情况下,重新训练地址距离,并利用所述第二地址更新所述第一地址。
[0148]
可选地,在数据预取过程中,对于所述访问地址历史记录中的第一地址,确定在所述访问地址历史记录中按照所述预取地址跳跃数量跳跃后得到的访问地址作为第二地址,还可以包括:对于所述第一地址之后的地址,确定其对应的当前地址跳跃数量,在当前地址跳跃数量小于预取地址跳跃数量的情况下,将所述当前地址跳跃数量递增,并继续访问下一个地址;以及在当前地址跳跃数量等于预取地址跳跃数量的情况下,确定已在所述访问地址历史记录中按照所述预取地址跳跃数量跳跃,将按照所述预取地址跳跃数量跳跃后得到的访问地址作为第二地址。
[0149]
应当理解,本公开中描述的数据预取方法既可以以硬件的方式实现,也可以以软件的方式实现,或者以软件、硬件相结合等方式实现。一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
[0150]
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的方法和装置的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或电路的一部分,所述模块、程序段、或电路的一部分包含至少一个用于实现规定的逻辑功能的可执行指令或硬件电路。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0151]
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的数据预取方法。
[0152]
根据本公开的又一方面,还提供了一种计算机可读存储介质。图9示出了根据本公开的存储介质的示意图4000。
[0153]
如图9所示,所述计算机存储介质4020上存储有计算机可读指令4010。当所述计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的根据本公开的实施例的指令处理方法。本公开的实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器
(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率同步动态随机存取存储器(ddrsdram)、增强型同步动态随机存取存储器(esdram)、同步连接动态随机存取存储器(sldram)和直接内存总线随机存取存储器(dr ram)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0154]
本公开的实施例提供了一种支持非单一地址间隔访问模式的数据预取方法、装置、计算机程序产品及计算机可读存储介质。
[0155]
本公开的实施例所提供的方法获取待访问的地址、以及访问地址历史记录;根据所述访问地址历史记录,确定预取地址跳跃数量;基于所述访问地址历史记录以及所确定的预取地址跳跃数量,确定参考地址距离;以及基于所确定的参考地址距离以及所述待访问的地址,确定要进行数据预取的预取地址。本公开的实施例提供的数据预取方法提升了预取的覆盖率,减少了缓存缺失,提高了预取的准确率。并且,该预取方法存储开销和运行开销小,既能够支持各相邻地址之间具有相同地址间隔的单一地址间隔访问模式的数据预取,还能够支持相隔固定数量的地址后访问地址之间存在固定地址距离的非单一地址间隔访问模式的数据预取,兼容性及普适性更强。
[0156]
本公开使用了特定词语来描述本公开的实施例。如“第一/第二实施例”、“一实施例”、和/或“一些实施例”意指与本公开至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本公开的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0157]
除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
[0158]
上面是对本发明的说明,而不应被认为是对其的限制。尽管描述了本发明的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本发明的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本发明范围内。应当理解,上面是对本发明的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本发明由权利要求书及其等效物限定。
再多了解一些

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

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

相关文献