处理器的预取训练方法、处理装置、处理器和计算设备与流程

文档序号:29700858发布日期:2022-04-16 14:24阅读:123来源:国知局
处理器的预取训练方法、处理装置、处理器和计算设备与流程

1.本公开的一些实施例处理器的技术领域,具体地,涉及一种处理器的预取训练方法、处理装置、处理器和计算设备。


背景技术:

2.在中央处理器(central processing unit,cpu)架构中,程序指令与数据一般存储在诸如动态随机存取存储器(dynamic random access memory,dram)的内存中。通常,cpu的核心(core)的运行频率高于内存的运行频率,因此,cpu从内存直接获取数据需要等待诸如上百个cpu时钟周期,这将会造成cpu由于无法继续处理相关指令或数据而产生空转,造成性能损失。因此,现代高性能cpu通常设置有多级缓存(cache)架构,以存储最近被访问的数据。进一步地,针对多级缓存架构,还可以利用预取器来识别cpu访问数据的规律,提前地将可能被访问的数据预取到多级缓存架构的其中一级缓存中,以使得cpu能更快速地从缓存中读取数据。


技术实现要素:

3.本公开的一些实施例提供了一种处理器的预取训练方法、处理装置、处理器和计算设备,用于提高预取效率以及预取准确性。
4.根据本公开的一方面,提供了一种处理器的预取训练方法,包括:根据指令翻译规则,将指令翻译得到n个微指令,其中,n为大于1的正整数;以及,基于n个微指令触发预取器进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的数据宽度、地址以及属性进行预取训练。
5.根据本公开的一些实施例,该训练操作的参数包括以下参数中的一种或多种:数据宽度、地址以及属性。
6.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性。
7.根据本公开的一些实施例,n个微指令中其地址等于指令的地址的微指令表示为第一微指令,n个微指令中其地址不等于指令的地址的微指令表示为第二微指令,该预取训练方法还包括:对于第一微指令,在用于预取器的地址输入队列中存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为合并属性写入地址输入队列;以及在用于预取器的地址输入队列中不存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性作为合并属性
写入地址输入队列。
8.根据本公开的一些实施例,该预取训练方法还包括:对于第二微指令,在地址输入队列中存在合并属性的情况下,将合并属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为更新后的合并属性,其中,更新后的合并属性用于预取器进行预取训练;以及在地址输入队列中不存在合并属性的情况下,将第二微指令经微指令处理流水线处理得到的属性写入地址输入队列中的空闲位置。
9.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性。
10.根据本公开的一些实施例,指令翻译规则指示n个微指令中每个微指令所对应的数据宽度等于指令所对应的数据宽度,并且每个微指令的地址等于指令的地址,其中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令之一经微指令处理流水线处理得到的属性。
11.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是不连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行n个训练操作,其中,n个训练操作与n个微指令一一对应,对于n个训练操作中的每个训练操作,该训练操作的数据宽度等于与之对应的微指令所对应的数据宽度,该训练操作的地址等于与之对应的微指令的地址,该训练操作的属性等于与之对应的微指令经微指令处理流水线处理得到的属性。
12.根据本公开的一些实施例,该预取训练方法还包括:对于n个微指令增加标记信息,其中,标记信息用于指示一个或多个训练操作的数据宽度、地址以及属性。
13.根据本公开的一些实施例,该预取训练方法还包括:将一个或多个训练操作的参数写入用于预取器的地址输入队列,用于预取器基于地址输入队列中的参数进行预取训练。
14.根据本公开的另一方面,还提供了一种执行预取训练的处理装置,包括:翻译单元,配置成根据指令翻译规则,将指令翻译得到n个微指令,其中,n为大于1的正整数;以及处理单元,配置成基于n个微指令触发预取器进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的参数进行预取训练。
15.根据本公开的一些实施例,该训练操作的参数包括以下参数中的一种或多种:数据宽度、地址以及属性。
16.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,处理单元基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个
训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性。
17.根据本公开的一些实施例,n个微指令中其地址等于指令的地址的微指令表示为第一微指令,n个微指令中其地址不等于指令的地址的微指令表示为第二微指令,处理单元还配置成:对于第一微指令,在用于预取器的地址输入队列中存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为合并属性写入地址输入队列;以及,在用于预取器的地址输入队列中不存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性作为合并属性写入地址输入队列。
18.根据本公开的一些实施例,处理单元还配置成:对于第二微指令,在地址输入队列中存在合并属性的情况下,将合并属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为更新后的合并属性,其中,更新后的合并属性用于预取器进行预取训练;以及在地址输入队列中不存在合并属性的情况下,将第二微指令经微指令处理流水线处理得到的属性写入地址输入队列中的空闲位置。
19.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,处理单元基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性。
20.根据本公开的一些实施例,指令翻译规则指示n个微指令中每个微指令所对应的数据宽度等于指令所对应的数据宽度,并且每个微指令的地址等于指令的地址,其中,处理单元基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令之一经微指令处理流水线处理得到的属性。
21.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是不连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度,其中,处理单元基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行n个训练操作,其中,n个训练操作与n个微指令一一对应,对于n个训练操作中的每个训练操作,该训练操作的数据宽度等于与之对应的微指令所对应的数据宽度,该训练操作的地址等于与之对应的微指令的地址,该训练操作的属性等于与之对应的微指令经微指令处理流水线处理得到的属性。
22.根据本公开的一些实施例,翻译单元还配置成:对于n个微指令增加标记信息,其中,标记信息用于指示一个或多个训练操作的数据宽度、地址以及属性。
23.根据本公开的一些实施例,处理单元还配置成:将一个或多个训练操作的参数写入用于预取器的地址输入队列,用于预取器基于地址输入队列中的参数进行预取训练。
24.根据本公开的又一方面,还提供了一种处理器,包括:译码器,配置成根据指令翻译规则,将指令翻译得到n个微指令,其中,n为大于1的正整数;以及预取器,配置成基于n个微指令进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的参数进行预取训练。
25.根据本公开的又一方面,还提供了一种计算设备,包括处理器;和存储器,其中,存储器中存储有计算机可读代码,计算机可读代码在由处理器运行时,执行如上所述的处理器的预取训练方法。
26.本公开一些实施例提供的处理器的预取训练方法、处理装置、处理器和计算设备,对于由指令翻译得到的n个微指令,基于n个微指令触发预取器进行一个或多个训练操作,以使得预取器使用初始的指令级参数进行预取训练,以避免分别基于拆分后得到的多个微指令参数进行预取训练,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级参数来发现数据预取规律,提升预取准确性,还能够提高预取效率从而进一步提升处理器的运行效率。
附图说明
27.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1示出了处理器中指令的处理流程的示意图;
29.图2示出了微指令拆分的示意图;
30.图3示出了根据本公开一些实施例的预取训练方法的示意性流程图;
31.图4a示出了根据本公开一些实施例的地址输入队列写入过程示意图;
32.图4b示出了根据本公开一些实施例的地址输入队列写入过程的另一示意图;
33.图5a示出了根据本公开一些实施例的地址输入队列的写入机制流程图;
34.图5b示出了根据本公开一些实施例的地址输入队列的另一写入机制流程图;
35.图6示出了根据本公开一些实施例的执行预取训练的处理装置的示意性框图;
36.图7示出了根据本公开一些实施例的处理器的示意性框图;
37.图8示出了根据本公开一些实施例的计算设备的示意性框图;
38.图9示出了根据本公开一些实施例的计算设备架构示意图。
具体实施方式
39.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
40.此外,如本公开和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同
样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。除非另有定义,本文中使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。
41.处理器(诸如,cpu)核心(core)的运行频率远远高于dram内存的运行频率(可以理解的是,cpu中可以包括一个或多个核心),由此,处理器核心从内存直接获取数据与程序指令需要等待上百个处理器的时钟周期。为了避免直接地从内存访问数据所带来的时间延迟,处理器通常配置有多级缓存。缓存可以是指数据访问速度较快的高速存储器,其先于内存与处理器进行数据交换,缓存的设置使得计算机系统能够发挥出更高的性能。可以理解的是,处理器可以是上述cpu,也可以是其他类型的处理器,诸如,图形处理器(graphics processing unit,gpu)等,本文对此不作限制。
42.总的来说,处理器读取数据的顺序是先缓存后内存。当处理器需要访问某一数据时,首先在缓存中进行查找,如果数据存在于缓存中,则立即读取并发送给处理器进行处理,如果数据并未存在于缓存中,则从访问速率相对较慢的内存中读取数据并发送给处理器进行处理,同时把这个数据所在的数据块调入缓存,从而使得在后续阶段处理器对整块数据的读取都从缓存中进行,而不必再调用内存。这样的读取机制使得处理器读取缓存的命中率比较高,即,处理器下一次要读取的数据较大概率将存在于缓存中,只有少部分需要从内存中读取。这大大节省了处理器直接读取内存的时间,也使得处理器读取数据时基本无需等待。
43.数据预取是进一步提升处理器运行效率的关键技术之一。由于缓存只能保存最近被访问过的数据,当处理器需要读取从未被访问的数据或是由于缓存大小限制而被替换出缓存的数据时,处理器仍然需要等待数十甚至上百个时钟周期以从内存读取数据,这将造成性能损失。通过分析以往地(或者称为历史地)访问规律,预取器能够针对触发预取的请求地址生成合适的预取请求地址,以提前地将可能被使用的数据预取到缓存中,从而减少处理器等待数据的时钟周期,提升处理器整体性能。
44.图1示出了处理器中指令的处理流程的示意图。其中,关于处理器描述的步骤可以理解为处理器的核心所涉及的步骤。指令可以是用于指示处理器执行某种操作的命令,其由一串二进制数组成。例如,该指令可以是访存(load/store)指令,即,用于访问或存储数据的指令。下文中,将以指令为访存指令作为一种具体示例来描述根据本公开的一些实施,可以理解的是,也可以是其他类型的指令。
45.如图1所示,处理器首先进行取指,并将取出的指令传递至译码单元。作为示例,本文中的微指令可以是指具有访存操作的微指令。接着,由译码单元将指令翻译为处理器内部执行的微指令。例如,在该指令为具有访存操作的指令的情况下,由该指令翻译得到的微指令可以是具有访存操作的微指令。具体的,在这种翻译过程中,指令与微指令之间可能是一对一,也可能是一对多。也就是说,译码单元可能将一个指令翻译为一个微指令,也可能将一个微指令翻译为两个或更多个微指令。
46.接着,翻译得到的微指令在经过地址计算之后,将进入处理队列。处理队列中的微指令被挑选出来进入微指令处理流水线,以基于缓存进行数据访问。为了进一步地提高处
理器的数据访问速率、缩短数据处理时间,提出利用预取器来从历史访问的地址序列中寻找规律,并基于此规律,进行数据预取,即提前预测未来可能的访问地址,并基于该地址进行数据缓存。可以理解的是,图1中示出的处理队列可以是指访存微指令处理队列,并且图1中示出的微指令处理流水线可以是访存微指令处理流水线。
47.预取器是独立于处理队列和流水线的结构,其输入来自于流水线中正在处理的微指令的训练信息。微指令的训练信息将首先被写入地址输入队列,然后由预取器从该地址输入队列中取出相关信息,一方面用来训练预取器,即,用来发现地址序列中的数据访问规律,另一方面用来基于已经发现的数据访问规律产生预测地址,产生的预测地址可以用来提前从下一级缓存或者内存中把数据搬移到本级数据缓存。预取器发现地址序列中的数据访问规律的过程可以称为训练过程(或者也可以称为测试过程),而基于训练过程产生的规律进行数据预取的过程可称为预取过程。在处理器的运行阶段,该训练过程与预取过程是持续地、并行地进行。具体的,上述训练信息可以包括所处理的数据的地址、数据宽度以及缓存命中特征等。具体的,缓存命中特征可以是在流水线中执行后获得的结果,作为一种示例,该缓存命中特征表示此次训练是否命中缓存。例如,如果该请求所对应的数据存在于缓存中则表示为命中(hit),如果不存在于缓存中则表示为不命中(miss),由此,也可以将缓存命中特征称为动态属性。
48.对于由取指单元取出的某一指令,例如,用于访问512b(bit)数据的访存指令,在处理器的实际执行过程中,可能将该指令分为多笔事务进行。在处理器的译码阶段,可以根据处理器的实际执行宽度,将对应的数据宽度较宽的访存指令翻译为多个对应的数据宽度较窄的微指令,也可以称为将指令拆分为多个微指令,这种拆分过程也可以表示为微指令级拆分。上述处理器的实际执行宽度可以是指微指令处理流水线所能处理的数据宽度。
49.作为示例,可以将上述用于访问512b数据的访存指令翻译为两个分别用于访问256b数据的微指令。即,在译码阶段将一个指令翻译为两个微指令。翻译得到的上述两个微指令将分别写入处理队列,即,占据处理队列中的两项。此外,上述两个微指令在被从处理队列中挑选出来进入微指令处理流水线的过程中,由于处理器的乱序执行机制(即,不按固定次序进行上述挑选过程),使得上述两个微指令之间被挑选的时机没有关联,有可能被连续地挑选进入流水线,也有可能被间隔地挑选,然后依据被挑选的顺序分别进入流水线进行处理。
50.图2示出了微指令拆分的示意图。具体的,图2示出了将指令拆分为两个微指令以及微指令之间进行乱序执行的情形。在图2中,以地址为0x40(十六进制数)的指令为例,其所对应的数据宽度为512b(bit),在该微指令为访存微指令的情况下,表示需要对以0x40存储位置为起始点开始的512b数据进行访存。在图2的示例中,在译码阶段,该指令被拆分为两个微指令:具有第一地址的微指令1和具有第二地址的微指令2。其中,微指令1的第一地址为0x40并且其所对应的数据宽度为256b,微指令2的第二地址为0x60并且其所对应的数据宽度为256b,类似地,第一地址0x40和第二地址0x60表示要访问的数据的起始地址。对于图2中示出的地址为0x140、0x240、0x340的指令,其拆分过程可以与地址为0x40的指令类似。进一步地,由地址为0x40的指令拆分得到的两个微指令在处理队列中占据两项,它们被挑出的顺序可能存在乱序,如图2所示出的,微指令1和微指令2在由于乱序执行机制,其进入流水线的顺序改变为微指令2和微指令1。如图2所示,地址为0x40/0x60、0x240/0x260的
微指令发生了乱序。接着,拆分得到的每个微指令在进入流水线后,将分别写入预取器的地址输入队列,触发预取器的训练和预测。
51.由于上述微指令级拆分过程,使得原本在指令级有规律的地址序列,在经过拆分后,之前的访问规律被打乱。以图2所示的拆分情形为例,初始的指令访问地址依次为:0x40、0x140、0x240、0x340,即任意相邻两个指令之间的地址间距是0x100,是一个相对简单的固定步长访问规律。但是,在经过微指令级拆分之后,拆分得到的微指令之间的地址间距变为:0x20、0xe0、0x20、0xe0、02x20和0xe0,访问规律相比于初始的指令访问地址规律变得复杂。进一步地,在处理器乱序执行之后,实际进入流水线的微指令之间的地址间距变为0x20、0x100、0x20、0x100、0x20、0x100、0x20,这使得访问规律变得更加复杂。最终,在相关技术中,每个拆分得到的微指令均触发进行预取训练,而并不考虑原本指令级的访问规律。也就是说,以上图2中示出的地址间距为0x20、0x100、0x20、0x100、0x20、0x100、0x20的8个微指令的信息将分别写入地址输入队列,并触发预取器进行8次预取训练过程。
52.上述微指令级拆分以及乱序执行的存在,并不利于预取器发现数据访问规律以进行准确预取,降低了预取器的准确性。此外,拆分后得到的多个微指令的信息将分别写入地址输入队列,例如初始一个指令将占用地址输入队列中的一项,在拆分成两个微指令的情况下将占用地址输入队列中的两项,这浪费了地址输入队列的资源。
53.基于以上内容,本公开的一些实施例提供一种处理器的预取训练方法,用于提高预取效率以及预取准确性,避免地址输入队列的资源浪费,并进一步提升处理器的运行效率。
54.图3示出了根据本公开一些实施例的预取训练方法的示意性流程图,以下将结合图3来描述根据本公开实施例的预取训练方法的实现过程。
55.首先,在步骤s101,根据指令翻译规则,将指令翻译得到n个微指令。n为大于1的正整数,例如,n可以等于2,即将指令拆分为2个微指令,这对应于以上结合图2描述的拆分情形,又例如,n还可以大于2,即将指令拆分为多于2个微指令。在下文的具体描述中,将以n等于2为例进行描述。可以理解的是,对于指令拆分的情形可以是由于上述处理器的实际执行宽度引起的,也可以是由其他原因引起的指令拆分,在此不作限制。
56.对于此步骤s101,可以发生在图1中示出的译码阶段。该指令可以是任意类型的指令,作为示例,可以是上述具有访存操作的指令,由此,由该指令拆分得到的n个微指令可以是具有访存操作的微指令。关于上述指令翻译规则,将在下文结合具体的实现方式来进行描述。
57.接着如图3所示,在步骤s102,基于n个微指令触发预取器进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的参数进行预取训练。其中,此处的多个训练操作是指两个或多于两个,例如,可以是n个训练操作。关于触发的训练操作的个数将在下文结合示例进行描述。根据本公开的一些实施例,该训练操作的参数可以包括以下参数中的一种或多种:数据宽度、地址以及属性。作为一些示例,该训练操作的参数可以包括数据宽度、地址以及属性三者,作为另一些示例,该训练操作的参数还可以其他的参数,在此不作限制,能够根据例如预取器进行预取训练的需求或者场景来确定该参数的类别。上述用于预取器进行预取训练的训练操作的数据宽度、地址以及属性例如可以统称为训练信息,该训练信息在用于进行预取训练之前首先被写入地址输入
队列,然后预取器再基于地址输入队列中的训练信息进行预取训练。
58.根据本公开的一些实施例,预取训练方法还可以包括:将一个或多个训练操作的参数,例如数据宽度、地址以及属性写入用于预取器的地址输入队列,用于预取器基于地址输入队列中的数据宽度、地址以及属性进行预取训练。
59.具体的,根据本公开一些实施例的预取训练方法中,对于由指令拆分得到的n个微指令,将基于n个微指令触发预取器进行一个或多个训练操作,对应于训练操作的训练信息将写入用于预取器的地址输入队列,以使得预取器基于上述训练信息进行预取训练,从而避免直接将拆分后得到的微指令的训练信息分别写入地址输入队列。可以理解的是,在根据本公开的实施例中,由于是综合地考虑基于n个微指令的信息来触发预取器进行一个或多个训练操作,使得能够参考原始指令级的训练信息来进行预取训练。由此,本公开一些实施例能够恢复初始的指令级训练信息,减少地址输入队列的资源占用,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级训练信息来发现数据预取规律,提升预取准确性,还能够提高预取效率并进一步提升处理器的运行效率。进一步地,根据本公开一些实施例提供的预取训练方法并不对现有预取器及处理器架构产生影响,便于在现有处理器中广泛应用实现。
60.下面将结合具体实现方式来描述根据本公开一些实施例的预取训练方法。
61.根据本公开的一些实施例,指令翻译规则指示上述n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。在这些实施例中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作。也就是说,翻译产生的n个微指令将仅触发进行一个训练操作而非触发n个训练操作,这有利于避免地址输入队列的资源浪费、简化预取器的预取训练过程。具体的,上述一个训练操作的数据宽度等于该指令所对应的数据宽度,上述一个训练操作的地址等于该指令的地址,并且,上述一个训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性。
62.具体的,在上述实施例中,一条指令被拆分得到n个微指令,n个微指令中的每个微指令用于访问指令所对应的部分数据,并且,n个微指令所处理的数据是连续的,n个微指令拼在一起完成整个指令的功能。作为示例,图2中地址为0x40的指令被拆分成两个微指令,分别为地址为0x40的微指令1和地址为0x60的微指令2,其中,微指令1用于访问原指令所对应的512b数据中的前256b数据(起始地址为0x40),微指令2用于访问原指令所对应的512b数据中的后256b数据(起始地址为0x60)。在这种情况下,微指令1与微指令2所处理的数据是连续的(也可以表示为微指令1与微指令2的地址是连续的),并且,微指令1与微指令2所对应的数据宽度的总和等于指令所对应的数据宽度。即,微指令1与微指令2一起完成整个指令的功能。
63.在上述实施例中,可以将指令所对应的数据宽度(512b)、指令的地址(0x40)以及n个微指令经微指令处理流水线处理得到的合并属性这些信息写入到地址输入队列,以用于预取训练。
64.作为示例,微指令经微指令处理流水线处理得到的属性可以是上述用于指示是否命中缓存的特征,例如称为缓存命中特征。如图1所示,处理队列中的微指令经过挑选进入微指令处理流水线,在经过流水线处理之后,可以确定进行处理的微指令是否命中缓存,如
果该微指令所对应的数据存在于缓存中则表示为命中(hit),如果不存在于缓存中则表示为不命中(miss)。在此示例中,由于此缓存命中特征是在经流水线处理得到的特征,也可以将这种属性称为动态属性。基于此,针对图2中所示的示例,n个微指令经微指令处理流水线处理得到的合并属性可以是指微指令1(其地址为0x40)经微指令处理流水线处理得到的属性与微指令2(其地址为0x60)经微指令处理流水线处理得到的属性进行合并后得到合并属性。例如,在该属性为缓存命中特征的情况下,合并属性为微指令1经微指令处理流水线处理得到的缓存命中特征与微指令2经微指令处理流水线处理得到的缓存命中特征进行合并后得到合并缓存命中特征。根据本公开的实施例,在经流水线处理之后,上述训练信息将被写入地址输入队列,以用于进行预取训练。
65.具体的,在n个微指令中的至少一个微指令的缓存命中特征为不命中缓存的情况下,合并属性为不命中缓存,在n个微指令中的每个微指令的缓存命中特征均为命中缓存的情况下,合并属性为命中缓存。例如,假设上述微指令1的缓存命中特征为命中而微指令2的缓存命中特征为不命中,则可以理解的是,合并后的合并属性为未命中缓存。由此,可以将拆分前的指令级的合并属性用于进行预取训练,即保留了拆分前的指令的数据访问特性。
66.作为另一示例,微指令经微指令处理流水线处理得到的属性也可以是用于指示是否合并miss特征的属性,例如称为miss特征属性。这是由于cache之间以及cache/dram之间每次传输的粒度是cacheline,例如cacheline可以具有64字节。如果多个请求的地址落在同一个64字节的范围内,那么后面miss请求的特征可以被合并到第一个miss请求的特征上,并由第一个miss请求负责取回这条cacheline。基于此,在该属性为miss特征属性的情况下,合并属性为微指令1经微指令处理流水线处理得到的miss特征属性与微指令2经微指令处理流水线处理得到的miss特征属性进行合并后得到合并miss特征属性。作为又一示例,上述属性也可以包括上述缓存命中特征与miss特征属性两者。作为其他示例,上述属性还可以是用于进行预取训练的其他信息,在此不再一一列举。
67.根据本公开的一些实施例,为了指示一个或多个训练操作的数据宽度、地址以及属性等的训练信息,预取训练方法还可以包括例如在翻译阶段对于n个微指令增加标记信息,以指示上述训练信息,从而依据标记信息来确定地址输入队列的写入机制。关于标记信息的实现方式,将在下文详细描述。
68.图4a和图4b示出了根据本公开一些实施例的地址输入队列写入过程示意图。在图4a、图4b所示的示例中,微指令处理流水线可以连续地处理进入流水线的微指令。
69.以下结合图4a和图4b,以图2中的地址为0x40的指令为例来描述流水线的处理流程。在图2中,地址为0x40的指令首先拆分得到地址为0x40的微指令1和地址为0x60的微指令2,并分别写入处理队列。接着,在处理队列中由于乱序执行机制,微指令2首先被挑选进入流水线进行处理,如图4a所示,第m级流水线基于微指令2进行数据访问并得到属性2。在得到属性2之后,可以根据与微指令2相关的标记信息来确定地址输入队列的写入机制,以将对应的训练信息写入地址输入队列。
70.接着,如图4b所示,微指令2的处理流入第m+1级流水线,并由第m级流水线基于微指令1进行数据访问并得到属性1。类似地,在得到属性1之后,可以根据与微指令1相关的标记信息来确定地址输入队列的写入机制,以将对应的训练信息写入地址输入队列。图4b中示意性地示出了微指令1处于第m级流水线,微指令2处于第m+1级流水线,可以理解的是,在
其他情形中,在微指令1处于第m级流水线时,微指令2也可能已经流入第m+n级流水线或者已经走完流水线的处理过程,即,微指令1与微指令2在流水线中并不紧邻。本文中将以微指令1处于第m级流水线,微指令2处于第m+1级流水线作为具体示例进行描述。
71.在指令翻译规则指示上述n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度的情况下,可以将n个微指令中其地址等于指令的地址的微指令称为第一微指令,将n个微指令中除第一微指令之外的微指令称为第二微指令。
72.根据本公开的一些实施例,预取训练方法还可以包括:对于第一微指令,在用于预取器的地址输入队列中存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为合并属性写入地址输入队列;以及在用于预取器的地址输入队列中不存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性作为合并属性写入地址输入队列。
73.进一步地,根据本公开的一些实施例,预取训练方法还可以包括:对于第二微指令,在地址输入队列中存在合并属性的情况下,将合并属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为更新后的合并属性,其中,更新后的合并属性用于预取器进行预取训练;以及在地址输入队列中不存在合并属性的情况下,将第二微指令经微指令处理流水线处理得到的属性写入地址输入队列中的空闲位置。
74.根据本公开的一些实施例,可以在译码阶段对翻译得到的微指令增加标记信息,以实现指示用于进行预取训练的训练信息。具体的,标记信息可以包括用于指示训练方法的方法特征以及用于指示数据宽度的数据特征。
75.作为示例,关于以上实施例中的标记信息,对于第一微指令,可以将其方法特征标记为“拼接训练”,表示此条微指令在经流水线处理之后的信息用于触发预取训练并且可以与诸如第二微指令的信息进行拼接,此外,还可以将第一微指令的数据特征标记为等于初始的指令的数据宽度(例如,512b)。这可以使得在基于此第一微指令进行训练的过程中,依据初始的指令地址,以及指令的数据宽度进行训练。在上述拆分为微指令1和微指令2的示例中,微指令1的地址等于指令的地址,即作为第一微指令,由此,可以将微指令1标记为“拼接训练”,其数据特征等于初始的指令的数据宽度(512b)。
76.对于第二微指令,可以将其方法特征标记为“被拼接训练”,表示这些微指令在经流水线处理之后的信息并不触发训练操作但是可以用于与第一微指令的信息进行合并。由于第二微指令并不触发进行预取训练,其数据特征可以标记为任意值或者不标记。在上述拆分为微指令1和微指令2的示例中,微指令2可以作为上述第二微指令,由此,可以将微指令2标记为“被拼接训练”,其数据特征为任意值。关于以上将方法特征区分标记为“拼接训练”和“被拼接训练”的实现方式,将在下文结合图5a进行描述。
77.图5a示出了根据本公开一些实施例的地址输入队列的写入机制流程图。图5a示出的地址输入队列的写入机制对应于以上描述的标记信息的情形。
78.在经流水线处理后,将得到微指令的属性。然后,可以首先判断标记信息中的方法特征。例如,对于首先由流水线处理的微指令2可以获得其属性,并确定其方法特征为“被拼接训练”。接着,可以判断地址输入队列中是否存在与当前微指令属于同一指令的第一微指
令,也就是说,对于标记为被拼接训练的微指令2,可以确定地址输入队列中是否存在与微指令2属于同一指令的微指令1的训练信息。如果确定存在,则可以将当前微指令的属性与第一微指令的属性进行合并,并作为更新后的合并属性。也就是说,首先将微指令2的属性与微指令1的属性进行合并,然后将合并属性作为更新后的训练信息。如果确定地址输入队列中不存在与微指令2属于同一指令的微指令1的训练信息,则可以将微指令2的信息写入地址输入队列的空闲位置。可以理解的是,尽管此微指令2的信息写入了队列,其也并不触发预取器的预取训练过程,这是由于其方法特征标记为“被拼接训练”。此外,如果地址输入队列中不存在空闲位置,则可以不将微指令2的信息写入地址输入队列,以避免占用队列资源。同时,在地址输入队列满时,标记为被拼接训练的表项可以被优先覆盖。
79.接着,参考图5a,对于由流水线处理的微指令1可以获得其属性,并确定其方法特征为“拼接训练”。接着,可以判断地址输入队列中是否存在与当前微指令属于同一指令的第二微指令,也就是说,对于标记为拼接训练的微指令1,可以确定地址输入队列中是否存在与微指令1属于同一指令的微指令2的信息。如果确定存在,则可以将当前微指令的属性与第二微指令的属性进行合并,并写入合并属性,也就是说,首先将微指令1的属性与微指令2的属性进行合并,然后将合并属性作为更新后的训练信息。此外,在进行属性合并之后,还可以从地址输入队列中删除与微指令2相关的信息。如果确定地址输入队列中不存在与微指令1属于同一指令的微指令2的训练信息,则可以直接将微指令1的信息写入地址输入队列。
80.基于以上结合图5a描述的实现方式,本公开的一些实施例能够在译码阶段针对拆分得到的微指令增加标记信息,从而使得在经流水线处理之后,能够根据标记信息来确定地址输入队列的写入机制,以将指令级的训练信息写入地址输入队列,从而实现以指令级的训练信息进行预取训练,这有助于降低地址输入队列的资源浪费、提升预取准确性。
81.根据本公开的一些实施例,在指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度的情况下,其中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作。具体的,上述一个训练操作的数据宽度等于指令所对应的数据宽度,上述一个训练操作的地址等于指令的地址,以及上述一个训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性。
82.在上文结合图5a描述的实施例中,训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性,由此标记信息中的方法特征区分为“拼接训练”和“被拼接训练”两者,以在写入地址输入队列的过程中获得合并属性。相比较地,在此部分实施例中,训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性,即第一微指令经微指令处理流水线处理得到的属性,而并不需要获得合并属性的过程。基于此,在此部分实施例中可以将标记信息中的方法特征区分为“正常训练”和“不训练”两者。
83.作为示例,关于以上实施例中的标记信息,对于第一微指令(即,其地址等于指令的地址的微指令),可以将其方法特征标记为“正常训练”,表示此条微指令在经流水线处理之后的信息可以直接用于触发预取训练,此外,还可以将该第一微指令的数据特征标记为等于初始的指令的数据宽度(例如,512b)。这可以使得在基于此第一微指令进行训练的过
程中,依据初始的指令地址,以及指令的数据宽度进行训练。在上述拆分为微指令1和微指令2的示例中,微指令1的地址等于指令的地址,即作为第一微指令,由此,可以将微指令1标记为“正常训练”,其数据特征等于初始的指令的数据宽度(512b)。
84.对于第二微指令(即,其地址不等于指令的地址的微指令),可以将其方法特征标记为“不训练”,表示这些微指令在经流水线处理之后的信息并不触发训练操作。由于第二微指令并不触发进行预取训练,其数据特征可以标记为任意值或者不标记。在上述拆分为微指令1和微指令2的示例中,微指令2可以作为上述第二微指令,由此,可以将微指令2标记为“不训练”,其数据特征为任意值。关于以上方法特征区分标记为“正常训练”和“不训练”的实现方式,将在下文结合图5b进行描述。
85.图5b示出了根据本公开一些实施例的地址输入队列的写入机制流程图。图5b示出的地址输入队列的写入机制对应于将方法特征区分标记为“正常训练”和“不训练”的实现方式。如图5a所示,在经流水线处理后,将得到微指令的属性,然后,可以首先判断标记信息中的方法特征。例如,对于首先由流水线处理的微指令2可以获得其属性,接着,确定其被标记的方法特征为“不训练”,则不将与微指令2相关的训练信息写入地址输入队列,从而节省地址输入队列的写入资源。
86.又例如,对于在微指令2之后进入流水线处理的微指令1,在获得其属性之后,可以确定其被标记的方法特征为“正常训练”,则将此微指令1的数据特征(512b)、地址(0x40)和属性(例如,指示是否命中缓存的缓存命中特征)作为训练信息写入地址输入队列。
87.基于以上实现方式,本公开的一些实施例能够在译码阶段针对拆分得到的微指令增加标记信息,从而使得在经流水线处理之后,能够根据标记信息来确定地址输入队列的写入机制,以将指令级的训练信息写入地址输入队列,从而实现以指令级的训练信息进行预取训练,这有助于降低地址输入队列的资源浪费(由于微指令2的信息不再写入地址输入队列)、提升预取准确性。
88.根据本公开的一些实施例,指令翻译规则还可以指示n个微指令中每个微指令所对应的数据宽度等于指令所对应的数据宽度并且每个微指令的地址等于指令的地址。在这些实施例中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令之一经微指令处理流水线处理得到的属性。
89.具体的,在上述实施例中,一条指令被拆分得到n个微指令,n个微指令中的每个微指令用于访问指令所对应的全部数据,并且,n个微指令的地址均为指令的地址。作为示例,该指令可以是用于数据扩展的指令,例如,指令的地址是0x40,所对应的数据宽度为8b,并且是用于基于该8b数据扩展得到64bit数据,在此种情形下,在译码阶段可能将该指令翻译为两个微指令,每个微指令的地址均为0x40,并都访问该8b数据,在取得数据之后,分别扩展为32b数据,以将扩展得到的两个32b数据拼接得到目标的64b数据。在此类情形中,由于各个微指令所访问的地址和数据宽度均相同,可以预见的是其属性也可以相同。
90.为了通过标记信息来实现基于指令所对应的数据宽度(8b)、指令的地址(0x40),以及n个微指令之一经微指令处理流水线处理得到的属性来作为训练信息进行预取训练,可以对拆分得到的多个微指令增加标记信息。作为一种实现方式,可以将拆分得到的第一
个微指令的方法特征标记为“正常训练”,并将该微指令的数据特征标记为指令所对应的数据宽度(8b)。此外,还可以将n个微指令中除上述第一个微指令之外的其他微指令的方法特征标记为“不训练”,表示此条微指令在经流水线处理之后的信息并不用于触发预取训练,并且其数据特征可以标记为任意值或者不标记。
91.根据本公开的上述实施例,在经流水线处理之后,通过以上标记信息来实现基于指令级的训练信息来进行预取训练,具体的,关于“正常训练”与“不训练”的处理流程可以参考图5b描述的实现方式,在此不再重复。
92.根据本公开的一些实施例,指令翻译规则还可以指示n个微指令所处理的数据是不连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。在这些实施例中,基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行n个训练操作,其中,n个训练操作与n个微指令一一对应。也就是说,在此种情形下,每个微指令将分别用于触发一次训练操作。对于n个训练操作中的每个训练操作,该训练操作的数据宽度等于与之对应的微指令所对应的数据宽度,该训练操作的地址等于与之对应的微指令的地址,该训练操作的属性等于与之对应的微指令经微指令处理流水线处理得到的属性。
93.具体的,在上述实施例中,一条指令被拆分得到n个微指令,n个微指令中的每个微指令用于访问指令所对应的部分数据,并且,n个微指令的地址并无关联,由n个微指令共同完成整条指令的功能。
94.作为示例,该指令可以是用于数据收集的指令,例如,该指令用于从多个地址访问数据,并将访问得到的数据汇总在一起。由此,在译码阶段可以将该指令翻译为用于分别从各个地址访问数据的微指令。在此种情况下,由于每个微指令的地址以及所访问的数据是不连续的,由此,可以针对每个微指令分别进行预取训练。也就是说,每个微指令的训练信息均触发预取器。
95.为了通过标记信息来指示上述训练信息,可以对拆分得到的多个微指令增加标记信息。作为一种实现方式,可以将拆分得到的每个微指令的方法特征均标记为“正常训练”,并将该微指令的数据特征标记为该微指令所对应的数据宽度。基于以上标记信息,在其中一个微指令在经流水线处理之后,将基于标记信息和属性来写入地址输入队列,以触发预取训练。
96.通过上述考虑拆分前的指令级的训练信息来进行预取训练的方案,能够减少地址输入队列的资源占用,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级参数来发现数据预取规律,提升预取准确性,还能够提高预取效率并进一步提升处理器的运行效率。
97.利用根据本公开实施例的预取训练方法,能够提高预取准确性,而数据预取进行的越准确越能使得处理器所需要的数据尽可能地包括在缓存中,从而避免直接访问内存所需要的过长的等待时间并避免处理器空转。因此,利用根据本公开实施例的预取训练方法,能够提高处理器的运行效率。
98.根据本公开的另一方面,还提供了一种执行预取训练的处理装置。图6示出了根据本公开一些实施例的执行预取训练的处理装置的示意性框图。利用根据本公开一些实施例的执行预取训练的处理装置,能够提高预取器的预取效率以及预取准确性,从而能够灵活
地响应处理器对于数据预取的需求,进一步提升处理器的运行效率。
99.如图6所示,执行预取训练的处理装置1000可以包括翻译单元1010和处理单元1020。根据本公开的一些实施例,翻译单元1010可以配置成:根据指令翻译规则,将指令翻译得到n个微指令。上述指令可以是任意类型的指令,例如具有访存操作的指令。n为大于1的正整数,例如,n可以等于2,即将指令翻译得到2个微指令,这对应于以上结合图2描述的情形,又例如,n还可以大于2,即将指令翻译得到为多于2个微指令。根据本公开一些实施例的处理装置针对翻译单元1010由于诸如处理器的实际执行宽度等因素将指令翻译为两个或更多个微指令的情形下,针对预取器的训练操作所进行的改进,由此,此处限定n为大于1的整数。可以理解的是,翻译单元也能够实现将指令翻译为1个微指令(例如,由于指令所对应的数据宽度小于处理器的实际执行宽度而未进行拆分的情形),在这种情形下,该1个微指令可以直接用于训练预取器。
100.处理单元1020可以配置成基于n个微指令触发预取器进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的参数进行预取训练。根据本公开的一些实施例,该训练操作的参数可以包括以下参数中的一种或多种:数据宽度、地址以及属性。作为一些示例,该训练操作的参数可以包括数据宽度、地址以及属性三者,作为另一些示例,该训练操作的参数还可以其他的参数,在此不作限制,能够根据例如预取器进行预取训练的需求或者场景来确定该参数的类别。在根据本公开实施例的处理装置中,可以首先将上述指令级的训练信息写入地址输入队列,然后由预取器基于地址输入队列中的训练信息进行预取训练,以避免分别基于拆分后得到的多个微指令信息进行预取训练,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级参数来发现数据预取规律,提升预取准确性,还能够提高预取效率从而进一步提升处理装置的运行效率。作为示例,上述处理装置可以实现为处理器。
101.根据本公开的一些实施例,翻译单元1010还可以配置成:对于n个微指令增加标记信息,其中,标记信息用于指示一个或多个训练操作的数据宽度、地址以及属性。
102.根据本公开的一些实施例,处理单元1020还可以配置成:将一个或多个训练操作的参数,例如数据宽度、地址以及属性写入用于预取器的地址输入队列,用于预取器基于地址输入队列中的数据宽度、地址以及属性进行预取训练。
103.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。处理单元1020基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性。
104.根据本公开的一些实施例,n个微指令中其地址等于指令的地址的微指令表示为第一微指令,n个微指令中其地址不等于指令的地址的微指令表示为第二微指令。处理单元1020还配置成:对于第一微指令,在用于预取器的地址输入队列中存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为合并属性写入地址
输入队列;以及在用于预取器的地址输入队列中不存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性作为合并属性写入地址输入队列。
105.根据本公开的一些实施例,处理单元1020还配置成:对于第二微指令,在地址输入队列中存在合并属性的情况下,将合并属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为更新后的合并属性,其中,更新后的合并属性用于预取器进行预取训练;以及在地址输入队列中不存在合并属性的情况下,将第二微指令经微指令处理流水线处理得到的属性写入地址输入队列中的空闲位置。
106.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。处理单元1020基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性。
107.根据本公开的一些实施例,指令翻译规则指示n个微指令中每个微指令所对应的数据宽度等于指令所对应的数据宽度,并且每个微指令的地址等于指令的地址。处理单元1020基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令之一经微指令处理流水线处理得到的属性。
108.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是不连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。处理单元1020基于n个微指令触发预取器进行一个或多个训练操作包括:基于n个微指令触发预取器进行n个训练操作,其中,n个训练操作与n个微指令一一对应,对于n个训练操作中的每个训练操作,该训练操作的数据宽度等于与之对应的微指令所对应的数据宽度,该训练操作的地址等于与之对应的微指令的地址,该训练操作的属性等于与之对应的微指令经微指令处理流水线处理得到的属性。
109.关于执行预取训练的处理装置1000执行的步骤的具体实现过程可以参照以上结合附图描述的根据本公开一些实施例的预取训练方法,在此不再重复描述。
110.利用根据本公开一些实施例的执行预取训练的处理装置,能够恢复初始的指令级训练信息,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级训练信息来发现数据预取规律,提升预取准确性,还能够提高预取效率并进一步提升处理装置的运行效率。
111.根据本公开的又一方面,还提供了一种处理器,图7示出了根据本公开一些实施例的处理器的示意性框图。
112.如图7所示,处理器2000可以包括译码器2010和预取器2020。根据本公开的一些实施例,译码器2010可以配置成根据指令翻译规则,将指令翻译得到n个微指令,其中,n为大于1的正整数。上述指令可以是任意类型的指令,例如具有访存操作的指令。n为大于1的正整数,例如,n可以等于2,即将指令拆分为2个微指令,这对应于以上结合图2描述的拆分情
形,又例如,n还可以大于2,即将指令拆分为多于2个微指令。根据本公开一些实施例的处理器针对译码器2010由于诸如处理器的实际执行宽度等因素将指令翻译为两个或更多个微指令的情形下,针对预取器2020的训练操作所进行的改进,由此,此处限定n为大于1的整数。可以理解的是,译码器2010也能够实现将指令翻译为1个微指令(例如,由于指令所对应的数据宽度小于处理器的实际执行宽度而未进行拆分的情形),在这种情形下,该1个微指令可以直接用于训练预取器2020。
113.预取器2020可以配置成基于n个微指令进行一个或多个训练操作,其中,对于一个或多个训练操作中每一个训练操作,预取器基于该训练操作的参数进行预取训练。根据本公开的一些实施例,该训练操作的参数可以包括以下参数中的一种或多种:数据宽度、地址以及属性。作为一些示例,该训练操作的参数可以包括数据宽度、地址以及属性三者,作为另一些示例,该训练操作的参数还可以其他的参数,在此不作限制,能够根据例如预取器进行预取训练的需求或者场景来确定该参数的类别。可以理解的是,处理器2000还可以包括诸如存储器等其他未示出的器件,在此不再一一列举。
114.在根据本公开实施例的处理器中,可以首先将上述指令级的训练信息写入地址输入队列,然后由预取器基于地址输入队列中的训练信息进行预取训练,以避免分别基于拆分后得到的多个微指令信息进行预取训练,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级参数来发现数据预取规律,提升预取准确性,还能够提高预取效率从而进一步提升处理器的运行效率。
115.根据本公开的一些实施例,译码器2010还可以配置成:对于n个微指令增加标记信息,其中,标记信息用于指示一个或多个训练操作的数据宽度、地址以及属性。也就是说,在本公开实施例中的译码器2010可以被扩展用于实现对n个微指令增加标记信息,可以理解的是,也可以由处理器中的其他部件实现此功能,在此不作限制。
116.根据本公开的一些实施例,预取器2020还可以配置成:将一个或多个训练操作的数据宽度、地址以及属性写入地址输入队列,用于预取器基于地址输入队列中的数据宽度、地址以及属性进行预取训练。也就是说,本公开实施例中的预取器2020可以被扩展用于实现将训练信息写入地址输入队列,可以理解的是,也可以由处理器中的其他部件实现此功能,在此不作限制。
117.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。具体的,预取器2020基于n个微指令进行一个或多个训练操作包括:基于n个微指令进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令经微指令处理流水线处理得到的合并属性。
118.根据本公开的一些实施例,n个微指令中其地址等于指令的地址的微指令表示为第一微指令,n个微指令中其地址不等于指令的地址的微指令表示为第二微指令。预取器2020还可以配置成:对于第一微指令,在用于预取器的地址输入队列中存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为合并属性写入
地址输入队列;以及在用于预取器的地址输入队列中不存在第二微指令经微指令处理流水线处理得到的属性的情况下,将第一微指令经微指令处理流水线处理得到的属性作为合并属性写入地址输入队列。
119.根据本公开的一些实施例,预取器2020还配置成:对于第二微指令,在地址输入队列中存在合并属性的情况下,将合并属性与第二微指令经微指令处理流水线处理得到的属性进行合并以作为更新后的合并属性,其中,更新后的合并属性用于进行预取训练;以及在地址输入队列中不存在合并属性的情况下,将第二微指令经微指令处理流水线处理得到的属性写入地址输入队列中的空闲位置。
120.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。预取器2020基于n个微指令进行一个或多个训练操作包括:基于n个微指令进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令中其地址等于指令的地址的微指令经微指令处理流水线处理得到的属性。
121.根据本公开的一些实施例,指令翻译规则指示n个微指令中每个微指令所对应的数据宽度等于指令所对应的数据宽度,并且每个微指令的地址等于指令的地址。预取器2020基于n个微指令进行一个或多个训练操作包括:基于n个微指令进行一个训练操作,其中,该一个训练操作的数据宽度等于指令所对应的数据宽度,该一个训练操作的地址等于指令的地址,以及,该一个训练操作的属性等于n个微指令之一经微指令处理流水线处理得到的属性。
122.根据本公开的一些实施例,指令翻译规则指示n个微指令所处理的数据是不连续的并且n个微指令所对应的数据宽度的总和等于指令所对应的数据宽度。预取器2020基于n个微指令进行一个或多个训练操作包括:基于n个微指令进行n个训练操作,其中,n个训练操作与n个微指令一一对应,对于n个训练操作中的每个训练操作,该训练操作的数据宽度等于与之对应的微指令所对应的数据宽度,该训练操作的地址等于与之对应的微指令的地址,该训练操作的属性等于与之对应的微指令经微指令处理流水线处理得到的属性。
123.关于执行预取训练的处理装置1000执行的步骤的具体实现过程可以参照以上结合附图描述的根据本公开一些实施例的预取训练方法,在此不再重复描述。
124.利用根据本公开一些实施例的处理器,能够恢复初始的指令级训练信息,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级训练信息来发现数据预取规律,提升预取准确性,还能够提高预取效率并进一步提升处理器的运行效率。
125.根据本公开实施例的处理器2000,能够实现结合图3所描述的预取训练方法从而能够提高预取效率以及预取准确性,其具体实现过程可以参照上文,在此不再重复。
126.根据本公开的又一方面,还提供了一种计算设备。图8示出了根据本公开一些实施例的计算设备的示意性框图。
127.如图8所示,计算设备3000可以包括处理器3010以及存储器3020。根据本公开实施例,存储器3020中存储有计算机可读代码,该计算机可读代码当由处理器3010运行时,可以执行如上所述的预取训练方法。
128.处理器3010可以根据存储在存储器3020中的程序执行各种动作和处理。具体地,处理器3010可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是x86架构或者是arm架构等。处理器3010能够实现或者执行本公开实施例中公开的各种方法、步骤及逻辑框图。
129.存储器3020存储有计算机可执行指令代码,该指令代码在被处理器3010执行时用于实现根据本公开实施例的预取训练方法。存储器3020可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率同步动态随机存取存储器(ddrsdram)、增强型同步动态随机存取存储器(esdram)、同步连接动态随机存取存储器(sldram)和直接内存总线随机存取存储器(dr ram)。应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
130.通过执行根据本公开的一些实施例的预取训练方法,针对由指令翻译得到的n个微指令,处理器3010能够使用初始的指令级参数进行预取器的预取训练,以避免分别基于拆分后得到的多个微指令信息进行预取训练,简化地址输入队列的写入资源,避免地址输入队列的资源浪费,并使得简化预取器的预取训练过程,更有利于预取器基于初始的指令级参数来发现数据预取规律,提升预取准确性,还能够提高预取效率从而进一步提升处理器的运行效率。
131.根据本公开实施例的预取训练方法也可以借助于图9所示的计算设备架构4000来实现。如图9所示,计算设备4000可以包括总线4010、一个或多个cpu(核心)4020、只读存储器(rom)4030、随机存取存储器(ram)4040、连接到网络的通信端口4050、输入/输出4060、硬盘4070等。计算设备架构4000中的存储设备,例如rom 4030或硬盘4070可以存储本公开提供的预取训练方法的处理和/或通信使用的各种数据或文件以及cpu所执行的程序指令。计算设备架构4000还可以包括用户界面4080,用于接收用户输入信息以及指令。当然,图9所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图9示出的计算设备中的一个或多个组件。
132.此外,根据本公开的其他方面还可以提供一种非暂时性计算机可读存储介质。该计算机可读存储介质上可以存储有指令,指令例如是计算机可读指令。当计算机可读指令在由处理器运行时,可以执行参照以上附图描述的预取训练方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。根据本公开的其他方面还可以提供一种计算机程序产品,该计算机程序产品包括计算机可读指令,该计算机可读指令存储在计算机可读存储介质中。处理器可以从计算机可读存储介质读取该计算机可读指令,处理器执行该计算机可读指令,使得执行上述各个实施例中描述的预取训练方法。
133.本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
134.此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且系统和方法的不同方面可以使用不同单元。
135.本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
136.本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
137.除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
138.以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1