CN113760783B - 联合偏移预取方法、装置、计算设备和可读存储介质 - Google Patents
联合偏移预取方法、装置、计算设备和可读存储介质 Download PDFInfo
- Publication number
- CN113760783B CN113760783B CN202111055047.4A CN202111055047A CN113760783B CN 113760783 B CN113760783 B CN 113760783B CN 202111055047 A CN202111055047 A CN 202111055047A CN 113760783 B CN113760783 B CN 113760783B
- Authority
- CN
- China
- Prior art keywords
- offset
- prefetch
- address
- value
- level cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的一些实施例提供了一种联合偏移预取方法、装置、计算设备和可读存储介质。该联合偏移预取方法用于第一级缓存和第二级缓存,工作中第一级缓存在第二级缓存之前被处理器访问,该方法包括:接收测试地址;基于测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,测试过程用于从N个偏移值中选择用于进行数据预取的偏移预取值以及得到偏移预取值的测试分数,其中,N为大于1的整数,其中,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址。
Description
技术领域
本公开的实施例涉及一种联合偏移预取方法、装置、计算设备和可读存储介质。
背景技术
在中央处理器(Central Processing Unit,CPU)架构中,程序指令与数据一般存储在诸如动态随机存取存储器(Dynamic Random Access Memory,DRAM)的内存中。通常,CPU的核心(Core)的运行频率远远高于内存的运行频率,因此,CPU从内存直接获取程序指令与数据需要等待上百个CPU时钟周期,这将会造成CPU由于无法继续处理相关指令或数据而产生空转,造成性能损失。因此,现代高性能CPU通常设置有多级缓存架构,以存储最近被访问的数据。同时,针对多级缓存架构,还可以利用数据预取器来识别CPU访问数据的规律,以提前地将可能被访问的数据预取到多级缓存架构的其中一级缓存中,以便于CPU能快速地从缓存中读取数据。
发明内容
本公开的一些实施例提供了一种联合偏移预取方法、装置、计算设备和可读存储介质,用于针对两级缓存执行联合偏移预取,从而提高系统预取效率并提升系统整体性能。
根据本公开的一方面,提供了一种联合偏移预取方法,联合偏移预取方法用于第一级缓存和第二级缓存,工作中第一级缓存在第二级缓存之前被处理器访问,方法包括:接收测试地址;基于测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,测试过程用于从N个偏移值中选择用于进行数据预取的偏移预取值以及得到偏移预取值的测试分数,其中,N为大于1的整数,其中,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址。
根据本公开的一些实施例,第一级缓存为多级缓存架构中的L1缓存,第二级缓存为多级缓存架构中的L2缓存,测试地址为虚拟地址。
根据本公开的一些实施例,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址,包括:响应于测试分数满足分数阈值条件,确定生成分别用于第一级缓存和第二级缓存的两个预取请求;或者响应于测试分数不满足分数阈值条件,确定生成用于第二级缓存的一个预取请求。
根据本公开的一些实施例,两个预取请求包括针对第一级缓存的第一预取请求以及针对第二级缓存的第二预取请求,其中,第一预取请求的预取请求地址是基于偏移预取值和请求地址生成,第二预取请求的预取请求地址是基于偏移预取值、请求地址以及附加偏移值生成。
根据本公开的一些实施例,附加偏移值等于偏移预取值。
根据本公开的一些实施例,一个预取请求包括针对第二级缓存的第三预取请求,其中,第三预取请求的预取请求地址是基于偏移预取值和请求地址生成。
根据本公开的一些实施例,测试过程包括:在N个偏移值之中依次选择用于测试的偏移值,并生成测试地址与被选择的偏移值之间的地址差值;以及根据地址差值是否命中近期请求表格中包括的地址来确定被选择偏移值的测试分数,其中,近期请求表格中的地址是来自用于L1缓存的数据提取状态处理寄存器的虚拟地址。
根据本公开的一些实施例,测试过程还包括:响应于被选择的偏移值的测试分数大于等于最佳测试分数,将被选择的偏移值确定为用于进行数据预取的偏移预取值,并结束测试过程;响应于被选择的偏移值的测试分数小于最佳测试分数,在N个偏移值之中选择下一个用于测试的偏移值并针对所选择的下一个用于测试的偏移值进行测试。
根据本公开的一些实施例,联合偏移预取方法还包括:利用地址翻译流水线,将预取请求的预取请求地址翻译为物理地址。
根据本公开的一些实施例,联合偏移预取方法还包括:基于所确定的用于第一级缓存和第二级缓存的预取请求的数目和地址,生成预取请求;响应于预取请求所要预取的数据存在于第一级缓存和第二级缓存中对应的缓存中,丢弃预取请求;或者响应于数据不存在于对应的缓存中,发送预取请求,以将数据预取至对应的缓存中。
根据本公开的另一方面,还提供了一种执行联合偏移预取的装置,其特征在于,联合偏移预取用于第一级缓存和第二级缓存,工作中第一级缓存在第二级缓存之前被处理器访问,执行联合偏移预取的装置包括:偏移预取单元,配置成:接收测试地址;基于测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,测试过程用于从N个偏移值中选择用于进行数据预取的偏移预取值以及得到偏移预取值的测试分数,N为大于1的整数,其中,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址。
根据本公开的一些实施例,第一级缓存为多级缓存架构中的L1缓存,第二级缓存为多级缓存架构中的L2缓存,测试地址为虚拟地址。
根据本公开的一些实施例,执行联合偏移预取的装置还包括请求单元,为了基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址,请求单元配置成:响应于测试分数满足分数阈值条件,确定生成分别用于第一级缓存和第二级缓存的两个预取请求;或者响应于测试分数不满足分数阈值条件,确定生成用于第二级缓存的一个预取请求。
根据本公开的一些实施例,两个预取请求包括针对第一级缓存的第一预取请求以及针对第二级缓存的第二预取请求,其中,第一预取请求的预取请求地址是基于偏移预取值和请求地址生成,第二预取请求的预取请求地址是基于偏移预取值、请求地址以及附加偏移值生成。
根据本公开的一些实施例,附加偏移值等于偏移预取值。
根据本公开的一些实施例,一个预取请求包括针对第二级缓存的第三预取请求,其中,第三预取请求的预取请求地址是基于偏移预取值和请求地址生成。
根据本公开的一些实施例,为了进行测试过程,偏移预取单元还配置成:在N个偏移值之中依次选择用于测试的偏移值,并生成测试地址与被选择的偏移值之间的地址差值;以及根据地址差值是否命中近期请求表格中包括的地址来确定被选择的偏移值的测试分数,其中,近期请求表格中的地址是来自用于L1缓存的数据提取状态处理寄存器的虚拟地址。
根据本公开的一些实施例,为了进行测试过程,偏移预取单元还配置成:响应于被选择的偏移值的测试分数大于等于最佳测试分数,将被选择的偏移值确定为用于进行数据预取的偏移预取值,并结束测试过程;或者响应于被选择的偏移值的测试分数小于最佳测试分数,在N个偏移值之中选择下一个用于测试的偏移值并针对所选择的下一个用于测试的偏移值进行测试。
根据本公开的一些实施例,执行联合偏移预取的装置还包括地址翻译单元,配置成:利用地址翻译流水线,将预取请求的预取请求地址翻译为物理地址。
根据本公开的一些实施例,请求单元还配置成:基于所确定的用于第一级缓存和第二级缓存的预取请求的数目和地址,生成预取请求;响应于预取请求所要预取的数据存在于第一级缓存和第二级缓存中对应的缓存中,丢弃预取请求;或者响应于数据不存在于对应的缓存中,发送预取请求,以将数据预取至对应的缓存中。
根据本公开的又一方面,还提供了一种计算设备,包括:处理器;和存储器,其中,存储器中存储有计算机可读代码,计算机可读代码在由处理器运行时,执行如上所述的联合偏移预取方法。
根据本公开的又一方面,还提供了一种非暂时性计算机可读存储介质,其上存储有指令,指令在被处理器执行时,使得处理器执行如上所述的联合偏移预取方法。
本公开一些实施例提供的联合偏移预取方法、装置、计算设备和可读存储介质,用于对两级缓存执行联合偏移预取,首先通过测试过程产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存的预取请求的数目和地址,从而能够基于所确定的数目和地址来更加灵活地针对两级缓存执行偏移预取,提高系统预取效率并进一步提升CPU的运行效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了包括预取器的多级缓存架构的示意图;
图2示出了根据本公开一些实施例的偏移预取方法的示意性流程图;
图3示出了根据本公开一些实施例的选择偏移预取值的整体示意图;
图4示出了根据本公开一些实施例的选择偏移预取值的流程框图;
图5示出了根据本公开一些实施例的从预置偏移值表格中选择偏移预取值的流程示意图;
图6示出了根据本公开一些实施例的执行联合偏移预取的整体示意图;
图7示出了根据本公开实施例的执行联合偏移预取的装置的示意性框图;
图8示出了根据本公开实施例的计算设备的示意性框图;
图9示出了根据本公开实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
此外,如本公开和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
由于处理器(诸如CPU)的核心(Core)的运行频率远远高于DRAM内存的运行频率。由此,CPU的核心从内存直接获取数据与程序指令需要等待上百个CPU的时钟周期。为了避免直接地从内存访问数据所带来的时间延迟,通常配置有缓存(Cache)。缓存可以是指数据访问速度较快的高速存储器,其先于内存与CPU进行数据交换,缓存的设置使得计算机系统能够发挥出更高的性能。在下文中,关于CPU描述的步骤可以理解为CPU的核心所涉及的步骤,CPU中可以包括一个或多个核心。
总的来说,CPU读取数据的顺序是先缓存后内存。当CPU需要处理某一数据时,首先在缓存中进行查找,如果数据存在于缓存中,则立即读取并发送给CPU进行处理,如果数据并未存在于缓存中,则从访问速率相对较慢的内存中读取数据并发送给CPU进行处理,同时把这个数据所在的数据块调入缓存,从而使得在后续阶段CPU对整块数据的读取都从缓存中进行,而不必再调用内存。这样的读取机制使得CPU读取缓存的命中率比较高,也就是说CPU下一次要读取的数据较大概率都存在于缓存中,只有少部分需要从内存中读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。
图1示出了包括预取器的多级缓存架构的示意图,如图1所示,在多级缓存架构中,CPU核心首先访问一级(L1)缓存,其访问速度最快,但是数据容量最小,二级(L2)缓存的速度低于L1缓存但是数据容量大于L1缓存,此外,多级缓存架构还可以包括三级或者更高级的缓存,一般地,最高级别的缓存(LLC)的数据容量最大,但是访问速度也最慢。例如,在图1示出的三级缓存架构中,LLC缓存即为L3缓存,CPU首先从L1缓存中查找数据,如果未找到则逐级地向下查找直至内存,然后再将访问到的数据逐级地返回至CPU。
此外,在多级缓存架构中还设置有预取器,以利用预取器发现CPU访问的规律,从而预取即将被访问的数据、程序指令到缓存中。预取器可以理解为基于触发预取的请求地址来进行数据/程序指令预取的部件。如果预取的内容是程序指令,则可以称为指令预取器,如果预取的内容是数据,则可以称为数据预取器。数据预取是提升CPU运行效率的关键技术之一。由于缓存只能保存最近被访问过的数据,当CPU需要读取从未被访问的数据或是由于缓存大小限制而被替换出缓存的数据时,CPU仍然需要等待数十甚至上百个时钟周期以从内存读取数据,这将造成性能损失。通过分析以往访问规律,数据预取器能够针对触发预取的请求地址生成合适的预取请求地址,以提前地将可能被使用的数据预取到缓存中,从而减少CPU等待数据的时钟周期,并提升CPU整体性能。
偏移预取器是一类应用较为广泛的数据预取器,根据整体数据预取规律,选择用于组成预取请求地址的偏移预取值,并基于所选择的偏移预取值来生成预取请求。例如,用于生成预取请求的预取请求地址等于该所选择的偏移预取值加上触发该预取的请求地址。根据数据的目标缓存位置,偏移预取器还可以进一步被细分为L1预取器(即,将数据预取到L1缓存)、L2预取器(即,将数据预取到L2缓存)、LLC预取器(即,将数据预取到最后一级缓存,LLC缓存)等。
作为示例,在图1中示出了L2缓存具有L2预取器,也就是说,该L2预取器用于将数据预取至L2缓存。对于一个触发预取的请求地址R,该L2预取器可以基于该请求地址R和由其产生的偏移预取值来得到预取请求地址,并将包括该预取请求地址的预取请求发送至下一级缓存,即L3缓存,以将与该预取请求地址对应的数据预取到L2缓存。可以理解的是,在发送预取请求之前,L2预取器还可以对该预取请求进行校验。校验包括:判断该预取请求地址所对应的数据是否已经存在于L2缓存中。如果预取请求地址所对应的数据已经存在于L2缓存中,将丢弃该预取请求,即不从下一级缓存中进行预取,如果预取请求地址所对应的数据并未存在于L2缓存中,则可以将该预取请求发送至下一级缓存以将数据提前保存至L2缓存。可以理解的是,针对其他级别缓存的预取器与上述L2预取器的实现过程是类似的。
对于不同级别缓存的预取器,其区别主要在于触发预取的请求地址的形式。一般地,L1预取器接收来自处理器核心的虚拟地址进行数据预取,L2预取器以及更高级别的预取器采用物理地址进行数据预取。关于虚拟地址与物理地址之间的转换过程称为地址翻译。现代操作系统往往同时支持多个进程同时运行。为了简化多进程管理与增强安全性,应用程序使用的是一片完整的虚拟地址,比如32比特应用程序最多有2^32=4GB的虚拟地址空间可供使用。当程序被运行时,这些虚拟地址会被映射为多个内存页面,每个内存页面都有与其对应的物理存储地址,内存页面的地址范围为4KB。程序访问指令、数据时,必须先将它们的虚拟地址翻译为物理地址,并检测程序对该页面的访问是否超出内存页面范围,然后去缓存或者内存中获得相应指令或数据传递给CPU核心。针对虚拟地址与物理地址之间的地址翻译例如可以通过地址翻译流水线(Address TranslationPipeline)来完成。可以理解的是,在需要进行地址翻译的情形下,处理器能够基于地址翻译流水线完成地址翻译过程,本文中不再对此翻译过程一一进行描述。
然而,当前的偏移预取器仅能针对多级缓存架构中的其中一级缓存,例如,图1中示出的L2预取器仅能生成用于L2缓存的预取请求,并将数据缓存至L2缓存,这使得预取器的灵活性较低。此外,产生的预取请求地址也是固定的组成范围,即,预取请求地址等于所选择的偏移预取值加上触发预取的请求地址,这进一步限制了偏移预取器的灵活性,使得预取器提升CPU运行效率的效果受到限制,无法满足CPU高速运行的需求。
为了解决上述技术问题,本公开的一些实施例提供了一种联合偏移预取方法,用于针对两级缓存执行联合预取,从而能够更灵活地响应CPU对于数据预取的需求,进一步提升CPU系统的运行效率。
可以的理解的是,在本文中涉及的应用场景中,除了CPU,还可以应用于其他类型的处理器,诸如图形处理器(Graphics Processing Unit,GPU)等各类处理器,只要其中具有两级或更多级的缓存架构并且能够实施偏移预取器,在此不作限制。除非另有定义,本文中使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。
具体的,图2示出了根据本公开实施例的联合偏移预取方法的示意性流程图。根据本公开一些实施例的联合偏移预取方法可以用于包括第一级缓存和第二级缓存的两级缓存,其中,在运行过程中,第一级缓存在第二级缓存之前被处理器访问。作为示例,第一级缓存可以是指图1中的L1缓存而第二级缓存可以是指图1中的L2缓存。作为另一示例,第一级缓存可以是指图1中的L2缓存而第二级缓存可以是指图1中的L3缓存。也就是说,两级缓存是可以多级缓存架构中相邻的任意两级缓存,并且其中的第一级缓存在第二级缓存之前被访问。
以下将结合图2描述根据本公开一些实施例的联合偏移预取方法。如图2所示,首先,在步骤S101,接收测试地址。根据本公开的一些实施例,测试地址可以是指用于对偏移预取器进行训练的地址。作为示例,在第一级缓存是L1缓存并且第二级缓存是L2缓存的情况下,测试地址可以是来自处理器核心的数据访问地址。作为另一示例,在第一级缓存是L2缓存并且第二级缓存是L3缓存的情况下,测试地址可以是来自L1缓存的数据访问地址。
以第一级缓存是L1缓存并且第二级缓存是L2缓存为例,测试地址可以采用来自处理器核心的任意数据访问地址,也可以仅采用来自处理器核心的部分数据访问地址。例如,如果来自处理器核心的一个数据访问地址所请求的数据并未存在于L1缓存中,即,该地址未命中(Miss)L1缓存,则可以将其称为L1 Miss地址,在这种情况下,该L1 Miss地址可以作为进行偏移预取的测试地址。又例如,如果来自处理器核心的一个数据访问地址所请求的数据存在于L1缓存中,即,该地址命中(Hit)L1缓存,则可以将其称为L1Hit地址,在这种情况下,该L1 Hit地址将不作为进行偏移预取的测试地址。也就是说,仅未命中的地址作为测试地址用于进行偏移预取的测试过程。类似地,在第一级缓存是L2缓存并且第二级缓存是L3缓存的示例中,测试地址可以仅包括L2 Miss地址,而不包括L2 Hit地址。关于测试地址的具体示例以及其在测试过程中的作用将在下文进行具体描述。
接着,如图2所示,在步骤S102,基于测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,测试过程用于从N个偏移值中选择用于进行数据预取的偏移预取值以及得到偏移预取值的测试分数,其中,N为大于1的整数。
根据本公开的一些实施例,偏移值表格可以包括预先设置的N个偏移值。为了覆盖较完整的偏移值的范围,偏移值表格中包括的偏移值的数目例如可以是52个,即,偏移值表格包括N=52个偏移值。例如,偏移预取器将从这52个偏移值中选择最合适的偏移值作为偏移预取值,该所选择的偏移预取值用于组成预取请求地址。关于偏移预取器从偏移值表格中选择用于生成预取请求的偏移预取值的测试过程将在下文具体描述。
根据本公开的一些实施例,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址。也就是说,在利用当前的偏移预取值进行两级缓存的联合预取的过程中,能够基于该偏移预取值的测试分数来动态地判断用于第一级缓存和第二级缓存的预取请求的数目和地址,由此能够灵活地针对这两级缓存进行联合预取。
在根据本公开实施例的联合偏移预取方法中,能够实现首先在测试过程中产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存中的第一级缓存以及第二级缓存的预取请求的数目和地址,即,基于偏移预取值针对两级缓存进行联合预取,并且在联合预取的过程中,还能够基于所选择的偏移预取值在测试过程中的测试分数来确定预取请求的数目和地址,例如,生成一个预取请求或者两个预取请求,从而能够更加灵活地针对两级缓存执行联合偏移预取,提高预取效率并提升处理器的运行效率。并且,提出的联合预取方案避免了对现有预取器及处理器架构产生影响,便于在现有处理器中广泛应用实现。
根据本公开的一些实施例,偏移预取器从基于测试地址从偏移值表格中选择偏移预取值的过程可以称为测试过程(或者也可以称为训练过程),而基于测试过程产生的偏移预取值进行数据预取的过程可称为预取过程。在CPU的运行阶段,该测试过程与预取过程是持续、并行进行的。
具体的,可以将选择得到一个偏移预取值的过程称为一个测试阶段,例如,将产生第一个偏移预取值的过程称为第一个测试阶段,类似地,将产生第K个偏移预取值的过程称为第K个测试阶段。各个测试阶段连续进行,例如,一个测试阶段的结束就是下一个测试阶段的开始。此外,上述测试过程与预取过程是持续、并行地进行的。一个测试阶段的结束将会选择一个偏移预取值,例如,在产生第一偏移预取值之后,该第一偏移预取值被用来生成接下来一段时间的预取请求,同步地,偏移预取器将进行第二测试阶段,并在第二测试阶段结束选择出第二偏移预取值,此后一段时间内,该第二偏移预取值将被用来生成预取请求,直至第三测试阶段选出新的偏移预取值。其中,各个阶段选出的偏移预取值可能相同,也可能不相同。
以下将结合附图描述利用偏移预取器从偏移值表格中选择偏移预取值的具体实现过程。
图3示出了根据本公开一些实施例的选择偏移预取值的整体示意图。如图3所示,测试过程可以分为多个测试阶段,每个测试阶段将选择出一个偏移预取值D。在测试阶段1,偏移预取器可以基于地址1进行训练,以从偏移值表格的多个偏移值中选择出偏移预取值D1。可以理解的是,地址1中可以包括多个测试地址,也就是说每个测试阶段将用到多个测试地址以对偏移值进行测试。对于测试阶段1产生的偏移预取值D1,其可以用于进行数据预取,在利用D1进行数据预取的过程中。偏移预取器同步进入测试阶段2,例如,采用示出的地址2来进行测试并产生新的偏移预取值D2,以用于接下来一段时间的数据预取,以此类推。类似地,地址2中也可以包括用于对偏移值进行测试的多个测试地址。此外,地址2中的地址也可以用于触发预取,即,作为触发预取的请求地址,即,在预取过程中,针对地址2中的地址,基于偏移预取值D1来产生预取请求地址。换句话说,图3中示出的地址既可以作为测试地址用于测试过程,在这种情况下可以称为测试地址X,此外也可以作为触发预取的请求地址用于预取过程,在这种情况下可以称为测试地址R。以地址2为例,其既可以用于测试阶段2以产生偏移预取值D2,也可以用于基于偏移预取值D1的预取过程。进一步地,图3中示出的地址可以是如上所述的未命中(Miss)地址,至于是针对哪一级缓存的未命中(Miss)地址,这取决于预取器所应用的两级缓存中的第一级缓存,例如,在第一级缓存未L1缓存的情况下,未命中(Miss)地址可以是指未命中L1缓存的地址,即L1 Miss地址。
进一步参考图3,在所示出的多个测试阶段中,每个测试阶段均包括多个测试轮次,例如轮次1、轮次2直至最大数目轮次(Round Max,RMax)。RMax的具体数值是可以由系统设置的,例如,RMax=100。在每个测试轮次中,偏移预取器都将对偏移值表格中包括的每个偏移值进行测试,若测试通过,则该被测偏移值的分数增加,例如分数加1,以根据每个偏移值各自的分数来从中选择出偏移预取值D。
例如,在测试阶段1的结束,也就是完成第RMax轮次的测试,或者某一偏移值的分数值大于或等于预先设置的最大分数值之后,可以将测试分数最高的偏移值或者该具有最大分数值的相应偏移值确定为最佳偏移值,即,作为进行数据预取的偏移预取值D1。此外,如果测试得到的偏移值的分数过低,例如小于或等于预先设置的最小分数值,还可以将产生的最佳偏移值设置为零即,D=0,也就意味着此测试阶段将不会发送预取请求。换句话说,如果测试产生的偏移预取值的分数较低,则表示其预取准确性也很可能较低,则该数据被用到的可能性也较低,由此不产生预取请求,避免不必要的数据占用缓存空间。由此,图3中示出的通过测试分数来产生最佳偏移值(例如,分数最高的偏移值)的偏移预取器也可以称为最佳偏移预取器。在根据本公开的实施例中,偏移预取器可以是以上基于最高分数选择最佳偏移值的最佳偏移预取器。可以理解的是,本公开中涉及的偏移预取器还可以是其他类型的偏移预取器,在此不作限制,根据本公开实施例的方法对其他的偏移预取器的设计同样适用。
在根据本公开的一些实施例中,第一级缓存为多级缓存架构中的L1缓存,第二级缓存为多级缓存架构中的L2缓存。例如,将来自处理器核心的L1 Miss地址作为测试地址进行图3中示出的测试阶段,然后产生用于L1缓存和L2缓存的预取请求,其中,产生的用于L1缓存和L2缓存的预取请求的数目以及地址是根据偏移预取值的测试分数确定的。
图4示出了根据本公开一些实施例的选择偏移预取值的流程框图。在图4的示例中,联合偏移预取应用于L1缓存和L2缓存。以下将结合图4描述根据本公开的实施例的联合偏移预取方法应用于L1缓存和L2缓存的实现过程。可以理解的是,针对其他两级缓存,联合偏移预取方法可以参考图4类似地实现。
首先,由于图4中示出的是应用于L1缓存和L2缓存的情形,由此测试地址为来自处理器核心的虚拟地址,表示为X。如上所描述的,测试地址X可以是来自处理器核心的任意地址,即,处理器访问L1缓存的任意地址,也可以仅是L1缓存未命中的地址(即,L1 Miss),也就是说,该测试地址X对应的数据未存在于L1缓存中。在图4中,判断地址X对应的数据是否存在于L1缓存示出为“X?”。在本文中,将以进行测试的测试地址为L1缓存未命中地址(即,L1 Miss)作为示例进行描述,但是并不对其进行限制。
根据本公开的一些实施例,测试过程可以包括:在N个偏移值之中依次选择用于测试的偏移值,并生成测试地址与被选择的偏移值之间的地址差值;以及根据地址差值是否命中近期请求表格中包括的地址来确定被选择偏移值的测试分数,其中,近期请求表格中的地址是来自用于L1缓存的数据提取状态处理寄存器(Missing status handlingregister,MSHR)的虚拟地址。
例如,如图4所示,对于偏移值表格中的各个偏移值逐个的进行测试,该偏移值表格中包括若干个偏移值,例如包括N=52个偏移值。对于当前进行测试的偏移值d,首先将其与测试地址X进行减法,以得到地址差值X-d。然后,判断得到的地址差值X-d是否命中近期请求表格(Recent Requesttable,RRT),如果命中则偏移值d的测试分数增加,例如加1。作为示例,可以通过设置相应的计数器来累计各个偏移值在测试阶段的分数。其中,RRT可以是一个单列的表,用于保存最近返回的来自L2缓存应答的地址Y的哈希值(例如,可以用哈希函数H2生成该哈希值H2(Y-D))。此外,该表格使用该地址Y的另一个哈希值(例如,可以用哈希函数H1生成该哈希值H1(Y-D))进行索引。
作为示例,近期请求表格中的地址可以是来自于用于L1缓存的MSHR的虚拟地址。也就是说,L2缓存应答的地址Y将首先保存于针对L1缓存的MSHR中,然后,可以基于MSHR中的地址通过诸如哈希函数来构建RRT。关于MSHR,此寄存器用于存储与针对L1缓存的数据预取相关的信息。在需要进行一个针对L1缓存的数据预取的情况下,首先在MSHR中分配信息项用于存储与当前预取相关联的信息,接着,由MSHR向下一级缓存,即L2缓存请求该数据。然后,将从L2缓存获得的该数据返还给MSHR,经由MSHR写入L1缓存,以完成此数据预取。此外,在完成此预取之后,还可以从MSHR的信息项中删除相应的预取请求。也就是说,当一个预取请求的数据不在L1缓存中的情况下,需要对L2缓存进行预取,由此,该预取请求及其相应属性将被保存在MSHR里,直到L2缓存返回该请求的数据。因此,基于此MSHR中保存的从L2缓存应答的地址Y,可以构建上述近期请求表格。
如上所述的,在经过RMax轮次或者某一偏移值的分数达到预设的最大分数的情况下,将产生最佳偏移值D。以偏移值表格中包括N=52个偏移值为例,在进行了RMax=100个轮次的测试的情况下,将需要N*RMax=5200个L1 Miss地址来完成一个测试阶段,并从中确定出分数最高的偏移值作为偏移预取值D,也就是说,在图3中示出的例如测试阶段1进行了RMax=100个轮次测试的情况下,地址1中将包括N*RMax=5200个L1 Miss地址,这些地址统一称为测试地址。此外,如果在测试阶段中,某个偏移值的分数大于等于预先设置的最佳测试分数,则可以将该偏移值直接地确定为用于进行数据预取的偏移预取值D,并结束当前测试阶段。
根据本公开的一些实施例,如图4所示,在按照如上所描述的过程选择得到偏移预取值D及其测试分数S之后,将针对两级缓存进行联合预取。在图4的示例中,两级缓存分别为L1缓存和L2缓存。
根据本公开的一些实施例,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址的步骤可以包括:响应于测试分数满足分数阈值条件,确定生成分别用于第一级缓存和第二级缓存的两个预取请求;或者响应于测试分数不满足分数阈值条件,确定生成用于第二级缓存的一个预取请求。在根据本公开实施例的联合偏移预取方法中,生成的预取请求的数目以及地址是根据当前使用的偏移预取值的测试分数确定的。
进一步地,根据本公开的一些实施例,在确定生成两个预取请求的情况下,此两个预取请求包括针对第一级缓存的第一预取请求以及针对第二级缓存的第二预取请求,其中,第一预取请求的预取请求地址是基于偏移预取值和请求地址生成,第二预取请求的预取请求地址是基于偏移预取值、请求地址以及附加偏移值生成。根据本公开的一些实施例,在确定生成一个预取请求的情况下,此一个预取请求包括针对第二级缓存的第三预取请求,其中,第三预取请求的预取请求地址是基于偏移预取值和请求地址生成。
例如,测试阶段1产生偏移预取值为D1并且其测试分数为S1。如果S1大于等于分数阈值,则表示满足分数阈值条件。即,此测试阶段1产生的偏移预取值D1命中RRT的次数较高,即预取可靠性较高。在此种情况下,则可以确定生成分别用于L1缓存和L2缓存的两个预取请求。具体的,这两个预取请求可以包括针对L1缓存的第一预取请求以及针对L2缓存的第二预取请求。其中,该第一预取请求的预取请求地址是基于该偏移预取值D1和请求地址R生成,表示为R+D1。第二预取请求的预取请求地址则可以是基于偏移预取值D1、请求地址R以及附加偏移值f生成,表示为R+D1+f。关于分数阈值,其可以由系统预先进行设置,在此不作限制。
也就是说,在联合预取的过程中,对于可靠性较高的偏移预取值D1,将产生分别针对两级缓存的两个预取请求,并且针对两级缓存中的后一级预取请求的请求地址的预取距离将更远,这是由于其请求地址中还包括由一个附加的偏移值。由此,可以将地址距离更远的数据预取至L2缓存中。根据本公开的一些实施例,附加偏移值可以设置为等于该偏移预取值,例如,f=D1,由此,针对L2缓存的第二预取请求的请求地址则可以表示为R+2*D1。根据本公开的一些实施例,附加偏移值还可以设置为等于其他值,例如,可以将f设置为等于D1的一半,即,f=D1/2,由此,针对L2缓存的第二预取请求的请求地址则可以表示为R+D1+D1/2。此外,附加偏移值可以是固定值也可以是动态地值,例如对于D1,f=D1,对于另一个测试分数满足分数阈值条件的偏移预取值,f可以变为D1/2,在此对于附加偏移值的具体数值不作限制。
由此,对于可靠性较高的偏移预取值D1,将产生包括针对L1缓存的第一预取请求以及针对L2缓存的第二预取请求,并且针对两级缓存中的后一级预取请求的请求地址的预取距离更远,这是由于其预取请求地址中还包括有一个附加偏移值。由此,可以将地址距离更远的数据预取至两级缓存中的后一级缓存中,例如,L2缓存。
根据本公开的一些实施例中,例如,在偏移预取值为D1之后的下一测试阶段产生了新的偏移预取值D2,并且其测试分数为S2。如果S2小于上述分数阈值,则表示不满足分数阈值条件,即,此测试阶段2产生的偏移预取值D2命中RRT的次数未达到较高的水平,即预取可靠性可能低于测试阶段1中产生的偏移预取值D1。在此种情况下,则可以确定仅生成用于L2缓存的一个预取请求。具体的,用于L2缓存的一个预取请求的预取请求地址可以是基于偏移预取值D2和请求地址R生成,表示为R+D2。
由此,对于可靠性并不太高的偏移预取值D2,将仅产生针对L2缓存的一个预取请求,而不产生针对L1缓存的预取请求,即,仅将数据预取到L2缓存中,以避免将可能无用的数据预取到L1缓存并替换掉L1缓存中有用的数据。
类似地,随着测试阶段的进行,将产生新的偏移预取值D3、D4等,然后则可以根据当前使用的偏移预取值的测试分数进行判断,是产生分别用于第一级缓存和第二级缓存的两个预取请求还是仅产生用于第二级缓存的一个预取请求,并且,还能够针对确定的预取请求的数目来得到用于进行数据预取的预取请求地址。
利用根据本公开实施例的联合偏移预取方法,能够根据当前使用的偏移预取值的测试分数进行确定针对该偏移预取值产生的预取请求的数目以及地址,由此能够更灵活地进行数据预取,即,增加数据预取的灵活性。并且,预取请求的数目随着新的偏移预取值的产生将发生改变,对于可靠性高的偏移预取值(例如上述D1)则进行更远距离的预取,以通过增加预取地址的范围来增大缓存命中概率,而对于可靠性不太高的偏移预取值(例如上述D2)则仅进行一次数据预取,由此,能够实现数据预取随着测试过程所选择的偏移预取值的改变而变化,进一步地增加了数据预取的灵活性。数据预取灵活性的增加有利于提高预取准确性,而数据预取进行的越准确越能使得CPU所需要的数据尽可能地包括在缓存中,从而避免直接访问内存所需要的过长的等待时间并避免CPU空转。因此,利用根据本公开实施例的联合偏移预取方法,能够提高CPU运行效率。
为了更详细的介绍基于偏移值表格选择偏移预取值D并得到其测试分数S的过程,提供图5,图5示出了根据本公开一些实施例的从预置偏移值表格中选择偏移预取值的流程示意图。作为示例,图5中示出的方法可以对应于第一级缓存和第二级缓存分别为L1缓存和L2缓存的情形,其中,测试地址为L1 Miss地址,即采用L1 Miss地址进行测试。
首先,对在图5中涉及的常量进行描述。
ScoreMax(SMax):最大分数值,当一个偏移值的分数值达到SMax,则直接结束当前测试阶段,并选择该偏移值作为偏移偏移值,由于图5中是将分数最大的偏移值确定为偏移预取值,则也可以将该偏移预取值称为最佳偏移值。关于上述分数阈值,作为示例,例如可以将分数阈值(Score Threshold,ST)设置为最高分数值SMax乘以一个系数,例如ST=SMax*0.8,或者可以将ST设置为其他数值;
ScoreMin(SMin):最小分数值,当测试阶段结束后,例如,完成了100轮测试,如果确定的最佳偏移值D的分数小于SMin,则可以将D设置为等于0,并且不会发送预取请求;
Round Max(RMax):最大测试轮数,例如,RMax=100;
Offsets:偏移值表格中的多个偏移值,最佳偏移值将这其中选出。
Number ofOffsets(NO),偏移值表格中包括的偏移值的总数目,例如,N=52个偏移值。
可以理解的是,以上列出的常量可以是由系统配置的值,例如,最大测试轮次RMax可以设置为等于100或者其他合适的值,在此不作限制。
接着,对在图5中涉及的变量进行描述,这些变量用于存储测试阶段的相关信息。
D:选出的最佳偏移值;
S:与D对应的测试分数;
Round(R):记录当前测试轮数;
Scores:当前测试的偏移值的分数;
P:Offsets及Scores的指针,其中,Offsets[P]表示当前测试的偏移值,Scores[P]表示该当前测试的偏移值所对应的分数;
BestScore(BS):目前最高的测试分数;
BestOffset(BO):BS所对应的偏移值。
如图5示出,其中示出的流程可以对应于一个测试阶段。测试阶段的开始将对变量进行初始化,例如,设置为R=1,BS=0以及P=1。
从R=1轮次开始,对于偏移值表格中的偏移值,以L1 Miss地址X进行测试。首先,在S501,得到测试地址Z=X-Offsets[P],然后,在S502,判断Offsets[P]是否命中RRT,如果命中RRT,则进行S503,该偏移值Offsets[P]的对应分数Scores[P]增加,例如加1,即,Scores[P]++。如果Offsets[P]未命中RRT,则进入S507。
接着,在S504,判断Scores[P]是否大于目前最高的测试分数BS,如果确定大于BS,则进入S505,即,将当前偏移值Offsets[P]的分数Scores[P]确定为新的BS,即,BS=Scores[P],并且,将该当前偏移值Offsets[P]确定为新的当前最佳偏移值,即,BO=Offsets[P]。否则,将进入S507。
在S506,判断BS是否大于等于预先设置的最大分数值SMax,如果是,则表明该偏移值Offsets[P]已经完成测试,也就是说其符合最大分数的要求,可以直接结束当前测试阶段,并将该偏移值Offsets[P]确定为最佳偏移值,即进入S5013。
如果BS小于预先设置的最大分数值SMax,则进入S507,判断指针P是否对应于偏移值的总数目NO,如果否,则表示当前偏移值不是表格中的最后一个偏移值,这意味着当前轮次(例如,R=1)的测试并未结束,则进入S508,对指针P加1,然后返回S501,针对表格中的下一个偏移值进行测试。可以理解的值,对于表格中的下一个偏移值,将接收新的测试地址X并按照图5中示出的步骤进行测试过程。否则,即,P=NO,则表示当前偏移值为表格中的最后一个偏移值,意味着完成了当前轮次的测试,即,进入S509,判断当前轮次R是否小于最大轮次RMax,如果是,则进入S5010,对当前轮次R加1并且对指针P加1,以返回S501,进入新一轮次的测试。
接着,如图5所示,如果R不小于RMax,则表示当前轮次为最大轮次,即完成当前测试阶段。在S5011,判断得到的BS是否大于预先设置的最小分数值SMin,作为示例,SMin可以设置为等于1。如果BS不大于SMin,则进入S5012,可以将D设置为等于0,并且不会发送预取请求,也就是说,禁止基于分数值较低的偏移值进行数据预取,避免不必要的数据占用缓存空间。
如果BS大于SMin,则进入S5013,将偏移值BO确定为当前测试阶段选出的最佳偏移值D,并将该偏移值BO的分数BS赋值给D的分数S。
由此,经过以上步骤S501-S5013,能够产生最佳偏移值D。该最佳偏移值D将在接下来一段时间内用于数据预取,并且,针对两级缓存的预取请求的数目和地址将基于该最佳偏移预取值D的测试分数进行确定。
根据本公开的一些实施例,联合偏移预取方法还可以包括:基于所确定的用于第一级缓存和第二级缓存的预取请求的数目和地址,生成预取请求;响应于预取请求所要预取的数据存在于第一级缓存和第二级缓存中对应的缓存中,丢弃预取请求;或者响应于数据不存在于对应的缓存中,发送预取请求,以将数据预取至对应的缓存中。例如,假设基于该最佳偏移预取值D的测试分数S确定仅产生针对L2缓存的一个预取请求,并且由此确定其预取请求地址为R+D。接着,在L3缓存发送该一个预取请求之前,还可以进行判断,即,判断该预取请求所要预取的数据是否存在于第一级缓存和第二级缓存中对应的缓存中,即,是否存在于L2缓存中。如果已经存在于L2缓存,则丢弃该预取请求,如果不存在于L2缓存中,则发送该预取请求,以将数据预取至L2缓存中。
以上以第一级缓存和第二级缓存分别为L1缓存和L2缓存为例,结合图3-图5描述了根据本公开实施例的联合偏移预取方法对L1缓存和L2缓存进行数据预取的实现过程,可以理解的是,根据本公开实施例的联合偏移预取方法可以按照以上描述类似地应用于多级缓存架构中的任意两级缓存。
例如,可以将第一级缓存和第二级缓存分别为L1缓存和L2缓存作为示例1,即,将根据本公开实施例的联合偏移预取方法应用于L1缓存和L2缓存,此外,将第一级缓存和第二级缓存分别为L2缓存和L3缓存作为示例2,即,将根据本公开实施例的联合偏移预取方法应用于L2缓存和L3缓存。可以理解的是,在示例1中,由于第一级缓存为L1缓存,使得在实施此示例1的过程中,测试地址为来自处理器核心的虚拟地址,例如,可以是上述L1 Miss地址。在示例2中,由于第一级缓存为L2缓存,使得在实施此示例2的过程中,测试地址为来自L1缓存的物理地址,例如,可以是L2 Miss地址。
对于测试地址为物理地址的示例2,在产生预取请求的过程中还将受到访问页面限制。根据本公开实施例的联合偏移预取方法还可以包括地址校验。例如,地址校验包括在发送预取请求之前,检验触发预取的请求地址R与产生的预取请求地址(例如,R+D)是否在同一内存页面,其中,每个页面对应于4KB的地址空间,如果不在同一页面中,则不发送基于R+D的预取请求,也就是说,请求的地址超出了地址访问的范围。
在示例1中,相比于采用物理地址进行预取训练,采用虚拟地址进行预取训练的优势在于不受页面访问范围的限制,由此可以发现跨页面的地址访问规律,并发送地址范围超过页面范围的预取请求,这将使得产生的预取请求的准确性更高。根据本公开实施例的联合偏移预取方法还可以包括地址翻译。例如地址翻译可以包括利用地址翻译流水线,将预取请求的预取请求地址翻译为物理地址。也就是说,在示例1中,生成的预取请求地址为虚拟地址,在进行数据预取之前,将该虚拟地址翻译为物理地址,然后,可以基于翻译后的物理地址进行数据预取。具体的,图4示出的联合预取过程对应于示例1,由此,针对生成的预取请求,需要进行地址翻译的步骤,即,将虚拟地址翻译为物理地址。
图6示出了根据本公开一些实施例的执行联合偏移预取的整体示意图。如图6所示,联合偏移预取过程可以包括测试过程600以及预取过程610,其中,测试过程用于产生偏移预取值并得到其测试分数,预取过程用于基于产生的偏移预取值及其测试分数进行联合预取。
具体的,根据本公开一些实施例,测试过程600可以包括步骤S601和步骤S602,这两个步骤具体描述可以参照上文关于图2描述的步骤S101和步骤S102,在此不再重复。接着,根据本公开一些实施例,预取过程610可以包括步骤S611至步骤S613。具体的,在步骤S611,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址,在此步骤中,响应于测试分数满足分数阈值条件确定生成分别用于第一级缓存和第二级缓存的两个预取请求;以及响应于测试分数不满足分数阈值条件,确定生成用于第二级缓存的一个预取请求。接着,在步骤S612,基于所确定的用于第一级缓存和第二级缓存的预取请求的数目和地址,生成预取请求。接着,在步骤S613,在发送预取请求之前,还可以判断生成的预取请求所要预取的数据是否存在于第一级缓存和第二级缓存中对应的缓存中。其中,响应于预取请求所要预取的数据存在于第一级缓存和第二级缓存中对应的缓存中,则丢弃预取请求;以及响应于该数据不存在于对应的缓存中,则发送该预取请求,以将数据预取至对应的缓存中。
如图6所示,根据本公开一些实施例,可以将实施测试过程600和预取过程610的整体称为联合偏移预取器,并且,如图3所示出的,测试过程600和预取过程610是并行进行地,测试过程基于接收的测试地址产生偏移预取值D1,则预取过程610基于该偏移预取值D1在一段时间内进行数据预取,对于触发预取的请求地址R,例如来自处理器核心的某个L1Miss地址,将基于偏移预取值D1的测试分数确定是产生一个预取请求还是两个预取请求。与此同时,测试过程600同步地基于测试地址进行测试,以产生下一个偏移预取值D2。在产生偏移预取值D2之后,预取过程610将基于该偏移预取值D2在一段时间内进行数据预取。按照以上步骤,CPU能够不断的产生新的偏移预取值,并基于新产生的偏移预取值进行预取过程。
通过执行根据本公开的一些实施例的联合偏移预取方法,处理器能够实现首先在测试过程中产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存中的第一级缓存以及第二级缓存的预取请求的数目和地址,从而能够更加灵活地针对两级缓存执行偏移预取,提高系统预取的灵活性和准确性,并提升处理器的运行效率。
进一步地,在根据本公开的一些实施例中,实现联合偏移预取方法所针对的两级缓存可以是多级缓存架构中的L1缓存和L2缓存。在这些实施例中,用于进行测试过程并由此产生偏移预取值的测试地址为来自处理器核心的虚拟地址,由此使得预取器能够发现跨页面的地址访问规律,并发送地址范围超过物理地址页面范围的预取请求,这将使得产生的预取请求的准确性更高有利于提高偏移预取的命中概率,从而进一步提高处理器的运行效率和系统整体性能。
根据本公开的另一方面,还提供了一种执行联合偏移预取的装置。图7示出了根据本公开实施例的执行联合偏移预取的装置的示意性框图。根据本公开一些实施例的执行联合偏移预取的装置,用于针对两级缓存执行联合预取,从而能够更灵活地响应CPU对于数据预取的需求,进一步提升CPU系统的运行效率。
如图7所示,执行联合偏移预取的装置1000可以包括偏移预取单元1010。
根据本公开的一些实施例,联合偏移预取用于第一级缓存和第二级缓存,工作中第一级缓存在第二级缓存之前被处理器访问。根据本公开的一些实施例,执行偏移预取的装置1000中的偏移预取单元1010可以配置成执行以下步骤:接收测试地址;基于测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,测试过程用于从N个偏移值中选择用于进行数据预取的偏移预取值以及得到偏移预取值的测试分数,N为大于1的整数。
根据本公开的一些实施例,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址。作为示例,第一级缓存可以是指图1中的L1缓存而第二级缓存可以是指图1中的L2缓存。作为另一示例,第一级缓存可以是指图1中的L2缓存而第二级缓存可以是指图1中的L3缓存。也就是说,两级缓存是可以多级缓存架构中相邻的任意两级缓存,并且其中的第一级缓存在第二级缓存之前被访问。
根据本公开的一些实施例,第一级缓存为多级缓存架构中的L1缓存,第二级缓存为多级缓存架构中的L2缓存,测试地址为虚拟地址。
根据本公开的一些实施例,测试地址可以是指用于对偏移预取器进行训练的地址。作为示例,在第一级缓存是L1缓存并且第二级缓存是L2缓存的情况下,测试地址可以是来自处理器核心的数据访问地址。作为另一示例,在第一级缓存是L2缓存并且第二级缓存是L3缓存的情况下,测试地址可以是来自L1缓存的数据访问地址。
以第一级缓存是L1缓存并且第二级缓存是L2缓存为例,测试地址可以采用来自处理器核心的任意数据访问地址,也可以仅采用来自处理器核心的部分数据访问地址。例如,如果来自处理器核心的一个数据访问地址所请求的数据并未存在于L1缓存中,即,该地址未命中(Miss)L1缓存,则可以将其称为L1 Miss地址,在这种情况下,该L1 Miss地址可以作为进行偏移预取的测试地址。又例如,如果来自处理器核心的一个数据访问地址所请求的数据存在于L1缓存中,即,该地址命中(Hit)L1缓存,则可以将其称为L1Hit地址,在这种情况下,该L1 Hit地址将不作为进行偏移预取的测试地址。也就是说,仅未命中的地址作为测试地址用于进行偏移预取的测试过程。类似地,在第一级缓存是L2缓存并且第二级缓存是L3缓存的示例中,测试地址可以仅包括L2 Miss地址,而不包括L2 Hit地址。
根据本公开的一些实施例,偏移值表格可以包括预先设置的N个偏移值。为了覆盖较完整的偏移值的范围,偏移值表格中包括的偏移值的数目例如可以是52个,即,偏移值表格包括N=52个偏移值。例如,偏移预取器将从这52个偏移值中选择最合适的偏移值作为偏移预取值,该所选择的偏移预取值用于组成预取请求地址。
根据本公开的一些实施例,装置1000还可以包括请求单元1020。为了基于测试分数来确定用于第一级缓存和第二级缓存的预取请求的数目和地址,请求单元1020可以配置成:响应于测试分数满足分数阈值条件,确定生成分别用于第一级缓存和第二级缓存的两个预取请求;或者响应于测试分数不满足分数阈值条件,确定生成用于第二级缓存的一个预取请求。
根据本公开的一些实施例,两个预取请求包括针对第一级缓存的第一预取请求以及针对第二级缓存的第二预取请求,其中,第一预取请求的预取请求地址是基于偏移预取值和请求地址生成,第二预取请求的预取请求地址是基于偏移预取值、请求地址以及附加偏移值生成。根据本公开的一些实施例,附加偏移值等于偏移预取值。
也就是说,在利用当前的偏移预取值进行两级缓存的联合预取的过程中,能够基于该偏移预取值的测试分数来动态地判断用于第一级缓存和第二级缓存的预取请求的数目和地址,由此能够灵活地针对这两级缓存进行联合预取。
根据本公开的一些实施例,一个预取请求包括针对第二级缓存的第三预取请求,其中,第三预取请求的预取请求地址是基于偏移预取值和请求地址生成。
利用根据本公开实施例的执行联合偏移预取的装置,能够实现首先在测试过程中产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存中的第一级缓存以及第二级缓存的预取请求的数目和地址,即,基于偏移预取值针对两级缓存进行联合预取。
利用根据本公开实施例的执行联合偏移预取的装置,能够根据当前使用的偏移预取值的测试分数进行确定针对该偏移预取值产生的预取请求的数目以及地址,由此能够更灵活地进行数据预取,即,增加数据预取的灵活性。并且,预取请求的数目随着新的偏移预取值的产生将发生改变,对于可靠性高的偏移预取值(例如上述D1)则进行更远距离的预取,以通过增加预取地址的范围来增大缓存命中概率,而对于可靠性不太高的偏移预取值(例如上述D2)则仅进行一次数据预取,由此,能够实现数据预取随着测试过程所选择的偏移预取值的改变而变化,进一步地增加了数据预取的灵活性。数据预取灵活性的增加有利于提高预取准确性,而数据预取进行的越准确越能使得CPU所需要的数据尽可能地包括在缓存中,从而避免直接访问内存所需要的过长的等待时间并避免CPU空转,从而提高CPU运行效率。
根据本公开的一些实施例,为了进行测试过程,偏移预取单元1010还可以配置成:在N个偏移值之中依次选择用于测试的偏移值,并生成测试地址与被选择的偏移值之间的地址差值;以及根据地址差值是否命中近期请求表格中包括的地址来确定被选择的偏移值的测试分数,其中,近期请求表格中的地址是来自用于L1缓存的数据提取状态处理寄存器的虚拟地址。
根据本公开的一些实施例,为了进行测试过程,偏移预取单元1010还可以配置成:响应于被选择的偏移值的测试分数大于等于最佳测试分数,将被选择的偏移值确定为用于进行数据预取的偏移预取值,并结束测试过程;或者,响应于被选择的偏移值的测试分数小于最佳测试分数,在N个偏移值之中选择下一个用于测试的偏移值并针对所选择的下一个用于测试的偏移值进行测试。
具体的,可以将选择得到一个偏移预取值的过程称为一个测试阶段,例如,将产生第一个偏移预取值的过程称为第一个测试阶段,类似地,将产生第K个偏移预取值的过程称为第K个测试阶段。各个测试阶段连续进行,例如,一个测试阶段的结束就是下一个测试阶段的开始。此外,上述测试过程与预取过程是持续、并行地进行的。一个测试阶段的结束将会选择一个偏移预取值,例如,在产生第一偏移预取值之后,该第一偏移预取值被用来生成接下来一段时间的预取请求,同步地,偏移预取器将进行第二测试阶段,并在第二测试阶段结束选择出第二偏移预取值,此后一段时间内,该第二偏移预取值将被用来生成预取请求,直至第三测试阶段选出新的偏移预取值。其中,各个阶段选出的偏移预取值可能相同,也可能不相同。
根据本公开的一些实施例,装置1000还可以包括地址翻译单元1030。根据本公开的一些实施例,地址翻译单元1030可以配置成:利用地址翻译流水线,将预取请求的预取请求地址翻译为物理地址。
根据本公开的一些实施例,请求单元1020还可以配置成:基于所确定的用于第一级缓存和第二级缓存的预取请求的数目和地址,生成预取请求;响应于预取请求所要预取的数据存在于第一级缓存和第二级缓存中对应的缓存中,丢弃预取请求;或者响应于数据不存在于对应的缓存中,发送预取请求,以将数据预取至对应的缓存中。
关于执行联合偏移预取的装置1000执行的步骤的具体实现过程可以参照以上结合附图描述的根据本公开的联合偏移预取方法,在此不再重复描述。
根据本公开的又一方面,还提供了一种计算设备。图8示出了根据本公开实施例的计算设备的示意性框图。
如图8所示,计算设备2000可以包括处理器2010以及存储器2020。根据本公开实施例,存储器2020中存储有计算机可读代码,该计算机可读代码当由处理器2010运行时,可以执行如上所述的联合偏移预取方法。
处理器2010可以根据存储在存储器2020中的程序执行各种动作和处理。具体地,处理器2010可以是一种集成电路,具有信号处理能力,例如通用处理器。此外,该处理器也可以是任何其他类型的处理器,例如可以是基于X86架构或者是ARM架构等。例如,此处的处理器可以是指具有多级缓存架构的CPU,并且,针对其中的多级缓存架构中的其中两级缓存执行联合偏移预取,联合偏移预取的实现过程可以参考根据本公开的一些实施例的联合偏移预取方法所包括的步骤。
存储器2020存储有计算机可执行指令代码,该指令代码在被处理器2010执行时用于实现根据本公开实施例的联合偏移预取方法。存储器2020可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的存储器可以是任何适合类型的存储器。
通过执行根据本公开的一些实施例的联合偏移预取方法,处理器2010能够实现首先在测试过程中产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存中的第一级缓存以及第二级缓存的预取请求的数目和地址,从而能够更加灵活地针对两级缓存执行偏移预取,提高系统预取效率并提升该处理器2010的运行效率。
根据本公开的一些实施例,实现联合偏移预取方法所针对的两级缓存可以是多级缓存架构中的L1缓存和L2缓存。在这些实施例中,用于进行测试过程并由此产生偏移预取值的测试地址为来自处理器核心的虚拟地址,由此提高偏移预取值的训练精度,并使得能够产生跨页面的预取请求,增大数据预取的覆盖范围,从而进一步提高处理器的运行效率和系统整体性能。
根据本公开的又一方面,还提供了一种非暂时性计算机可读存储介质。图9示出了根据本公开实施例的非暂时性计算机可读存储介质的示意图。
如图9所示,计算机可读存储介质3020上存储有指令,指令例如是计算机可读指令3010。当计算机可读指令3010由处理器运行时,可以执行参照以上附图描述的联合偏移预取方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。
根据本公开的又一方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序包括计算机可读指令,该计算机可读指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机可读指令,处理器执行该计算机可读指令,使得该计算机设备执行上述各个实施例中描述的联合偏移预取方法。
本公开实施例提供的联合偏移预取方法、装置、计算设备和可读存储介质,用于对两级缓存执行联合偏移预取,首先通过测试过程产生偏移预取值,接着,在根据所选择的偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所选择的偏移预取值在测试过程中的测试分数来确定用于两级缓存中的第一级缓存以及第二级缓存的预取请求的数目和地址,从而能够更加灵活地针对两级缓存执行偏移预取,提高系统预取效率并进一步提升CPU的运行效率。
进一步地,根据本公开的一些实施例,实现联合偏移预取方法所针对的两级缓存可以是多级缓存架构中的L1缓存和L2缓存。在这些实施例中,用于进行测试过程并由此产生偏移预取值的测试地址为来自处理器核心的虚拟地址,由此提高偏移预取值的训练精度,并使得能够产生跨页面的预取请求,增大数据预取的覆盖范围,从而进一步提高处理器的运行效率和系统整体性能。
本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且系统和方法的不同方面可以使用不同单元。
本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
Claims (22)
1.一种联合偏移预取方法,其特征在于,所述联合偏移预取方法用于第一级缓存和第二级缓存,工作中所述第一级缓存在所述第二级缓存之前被处理器访问,所述方法包括:
接收测试地址;
基于所述测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,所述测试过程用于从所述N个偏移值中选择用于进行数据预取的偏移预取值以及得到所述偏移预取值的测试分数,其中,N为大于1的整数,
其中,在根据所选择的所述偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所述测试分数来确定用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址。
2.根据权利要求1所述的方法,其特征在于,所述第一级缓存为多级缓存架构中的L1缓存,所述第二级缓存为多级缓存架构中的L2缓存,所述测试地址为虚拟地址。
3.根据权利要求1或2所述的方法,其特征在于,基于所述测试分数来确定用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址包括:
响应于所述测试分数满足分数阈值条件,确定生成分别用于所述第一级缓存和所述第二级缓存的两个预取请求;或者
响应于所述测试分数不满足所述分数阈值条件,确定生成用于所述第二级缓存的一个预取请求。
4.根据权利要求3所述的方法,其特征在于,所述两个预取请求包括针对所述第一级缓存的第一预取请求以及针对所述第二级缓存的第二预取请求,
其中,所述第一预取请求的预取请求地址是基于所述偏移预取值和所述请求地址生成,所述第二预取请求的预取请求地址是基于所述偏移预取值、所述请求地址以及附加偏移值生成。
5.根据权利要求4所述的方法,其特征在于,所述附加偏移值等于所述偏移预取值。
6.根据权利要求3所述的方法,其特征在于,所述一个预取请求包括针对所述第二级缓存的第三预取请求,
其中,所述第三预取请求的预取请求地址是基于所述偏移预取值和所述请求地址生成。
7.根据权利要求2所述的方法,其特征在于,所述测试过程包括:
在所述N个偏移值之中依次选择用于测试的偏移值,并生成所述测试地址与被选择的偏移值之间的地址差值;以及
根据所述地址差值是否命中近期请求表格中包括的地址来确定所述被选择偏移值的测试分数,其中,所述近期请求表格中的地址是来自用于所述L1缓存的数据提取状态处理寄存器的虚拟地址。
8.根据权利要求7所述的方法,其特征在于,所述测试过程还包括:
响应于所述被选择的偏移值的测试分数大于等于最佳测试分数,将所述被选择的偏移值确定为所述用于进行数据预取的偏移预取值,并结束所述测试过程;或者
响应于所述被选择的偏移值的测试分数小于所述最佳测试分数,在所述N个偏移值之中选择下一个用于测试的偏移值并针对所选择的下一个用于测试的偏移值进行测试。
9.根据权利要求2所述的方法,其特征在于,所述方法还包括:
利用地址翻译流水线,将所述预取请求的预取请求地址翻译为物理地址。
10.根据权利要求3所述的方法,其特征在于,所述方法还包括:
基于所确定的用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址,生成所述预取请求;
响应于所述预取请求所要预取的数据存在于所述第一级缓存和所述第二级缓存中对应的缓存中,丢弃所述预取请求;或者
响应于所述数据不存在于所述对应的缓存中,发送所述预取请求,以将所述数据预取至所述对应的缓存中。
11.一种执行联合偏移预取的装置,其特征在于,所述联合偏移预取用于第一级缓存和第二级缓存,工作中所述第一级缓存在所述第二级缓存之前被处理器访问,所述执行联合偏移预取的装置包括:
偏移预取单元,配置成:接收测试地址;基于所述测试地址,对偏移值表格中包括的N个偏移值进行测试过程,其中,所述测试过程用于从所述N个偏移值中选择用于进行数据预取的偏移预取值以及得到所述偏移预取值的测试分数,N为大于1的整数,
其中,在根据所选择的所述偏移预取值对触发预取的请求地址进行数据预取的过程中,基于所述测试分数来确定用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址。
12.根据权利要求11所述的装置,其特征在于,所述第一级缓存为多级缓存架构中的L1缓存,所述第二级缓存为多级缓存架构中的L2缓存,所述测试地址为虚拟地址。
13.根据权利要求11或12所述的装置,其特征在于,所述装置还包括请求单元,为了基于所述测试分数来确定用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址,所述请求单元配置成:
响应于所述测试分数满足分数阈值条件,确定生成分别用于所述第一级缓存和所述第二级缓存的两个预取请求;或者
响应于所述测试分数不满足所述分数阈值条件,确定生成用于所述第二级缓存的一个预取请求。
14.根据权利要求13所述的装置,其特征在于,所述两个预取请求包括针对所述第一级缓存的第一预取请求以及针对所述第二级缓存的第二预取请求,其中,所述第一预取请求的预取请求地址是基于所述偏移预取值和所述请求地址生成,所述第二预取请求的预取请求地址是基于所述偏移预取值、所述请求地址以及附加偏移值生成。
15.根据权利要求14所述的装置,其特征在于,所述附加偏移值等于所述偏移预取值。
16.根据权利要求13所述的装置,其特征在于,所述一个预取请求包括针对所述第二级缓存的第三预取请求,其中,所述第三预取请求的预取请求地址是基于所述偏移预取值和所述请求地址生成。
17.根据权利要求12所述的装置,其特征在于,为了进行所述测试过程,所述偏移预取单元还配置成:
在所述N个偏移值之中依次选择用于测试的偏移值,并生成所述测试地址与被选择的偏移值之间的地址差值;以及
根据所述地址差值是否命中近期请求表格中包括的地址来确定所述被选择的偏移值的测试分数,其中,所述近期请求表格中的地址是来自用于所述L1缓存的数据提取状态处理寄存器的虚拟地址。
18.根据权利要求17所述的装置,其特征在于,为了进行所述测试过程,所述偏移预取单元还配置成:
响应于所述被选择的偏移值的测试分数大于等于最佳测试分数,将所述被选择的偏移值确定为所述用于进行数据预取的偏移预取值,并结束所述测试过程;或者
响应于所述被选择的偏移值的测试分数小于所述最佳测试分数,在所述N个偏移值之中选择下一个用于测试的偏移值并针对所选择的下一个用于测试的偏移值进行测试。
19.根据权利要求12所述的装置,其特征在于,所述装置还包括地址翻译单元,配置成:
利用地址翻译流水线,将所述预取请求的预取请求地址翻译为物理地址。
20.根据权利要求13所述的装置,其特征在于,所述请求单元还配置成:
基于所确定的用于所述第一级缓存和所述第二级缓存的预取请求的数目和地址,生成所述预取请求;
响应于所述预取请求所要预取的数据存在于所述第一级缓存和所述第二级缓存中对应的缓存中,丢弃所述预取请求;或者
响应于所述数据不存在于所述对应的缓存中,发送所述预取请求,以将所述数据预取至所述对应的缓存中。
21.一种计算设备,包括:
处理器;和
存储器,其中,所述存储器中存储有计算机可读代码,所述计算机可读代码在由所述处理器运行时,执行如权利要求1-10中任一项所述的联合偏移预取方法。
22.一种非暂时性计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求1-10中任一项所述的联合偏移预取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111055047.4A CN113760783B (zh) | 2021-09-09 | 2021-09-09 | 联合偏移预取方法、装置、计算设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111055047.4A CN113760783B (zh) | 2021-09-09 | 2021-09-09 | 联合偏移预取方法、装置、计算设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113760783A CN113760783A (zh) | 2021-12-07 |
CN113760783B true CN113760783B (zh) | 2023-03-24 |
Family
ID=78794241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111055047.4A Active CN113760783B (zh) | 2021-09-09 | 2021-09-09 | 联合偏移预取方法、装置、计算设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760783B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11940921B2 (en) | 2022-01-07 | 2024-03-26 | Centaur Technology, Inc. | Bounding box prefetcher |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408301A (zh) * | 2017-08-16 | 2019-03-01 | 中国兵器装备集团自动化研究所 | 一种pmon下基于龙芯64位处理器的内存测试方法 |
CN109478165A (zh) * | 2016-07-20 | 2019-03-15 | 超威半导体公司 | 基于缓存测试区针对预取数据选择缓存转移策略 |
CN112416437A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10769069B2 (en) * | 2018-03-02 | 2020-09-08 | Arm Limited | Prefetching in data processing circuitry |
-
2021
- 2021-09-09 CN CN202111055047.4A patent/CN113760783B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109478165A (zh) * | 2016-07-20 | 2019-03-15 | 超威半导体公司 | 基于缓存测试区针对预取数据选择缓存转移策略 |
CN109408301A (zh) * | 2017-08-16 | 2019-03-01 | 中国兵器装备集团自动化研究所 | 一种pmon下基于龙芯64位处理器的内存测试方法 |
CN112416437A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
一种基于页面级流缓存结构的流检测和预取算法;刘立等;《计算机研究与发展》;20091015(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113760783A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106537362B (zh) | 数据处理装置和在数据处理装置中处理地址转换的方法 | |
CN107479860B (zh) | 一种处理器芯片以及指令缓存的预取方法 | |
US8161246B2 (en) | Prefetching of next physically sequential cache line after cache line that includes loaded page table entry | |
CN112416817B (zh) | 预取方法、信息处理装置、设备以及存储介质 | |
JP4608011B2 (ja) | 演算処理装置および演算処理方法 | |
TW200302981A (en) | Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher | |
US20080244232A1 (en) | Pre-fetch apparatus | |
KR930002945A (ko) | 프리페치버퍼 및 프리페치버퍼를 적용한 정보처리장치 | |
CN112416437B (zh) | 信息处理方法、信息处理装置和电子设备 | |
CN111367831B (zh) | 翻译页表的深度预取方法、部件、微处理器及计算机设备 | |
WO2023035654A1 (zh) | 偏移预取方法、执行偏移预取的装置、计算设备和介质 | |
US10229066B2 (en) | Queuing memory access requests | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
CN113760783B (zh) | 联合偏移预取方法、装置、计算设备和可读存储介质 | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
CN114925001A (zh) | 处理器、页表预取方法、电子设备 | |
CN112527395B (zh) | 数据预取方法和数据处理装置 | |
CN112416436B (zh) | 信息处理方法、信息处理装置和电子设备 | |
CN108874690B (zh) | 数据预取的实现方法和处理器 | |
CN110941565B (zh) | 用于芯片存储访问的内存管理方法和装置 | |
CN116244218A (zh) | 数据缓存预取装置、方法及处理器 | |
CN114924797A (zh) | 预取指令的方法、信息处理装置、设备及存储介质 | |
CN114218132B (zh) | 信息预取方法、处理器、电子设备 | |
JP4037806B2 (ja) | キャッシュメモリ装置 | |
CN111198827B (zh) | 页表预取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |