处理访问请求的方法与流程

文档序号:31802042发布日期:2022-10-14 19:07阅读:48来源:国知局
处理访问请求的方法与流程

1.本公开的实施例涉及一种处理访问请求的方法、一种处理装置、一种电子设备和一种非瞬时可读存储介质。


背景技术:

2.各级缓冲存储器(cache)均可能会接收到来自各个请求单元的访问请求。这些访问请求包括但不限于从缓冲存储器中读取数据或指令的请求、或者从缓冲存储器中预取数据或/指令的请求。在缓冲存储器在接收到各种访问请求后,缓冲存储器通常会采用轮询的方式来处理各个访问请求。例如,采用轮询的方式将各个访问请求放入流水线。虽然轮询的方式来处理各个访问是相对简单并公平的,但是却往往又有不够智能进而导致cpu的性能损失。因此,需要对缓冲存储器处理访问请求的方案进行进一步的改进,以提升cpu 的整体性能。


技术实现要素:

3.本公开至少一个实施例提供了一种处理访问请求的方法、一种处理装置、一种电子设备和一种非瞬时可读存储介质。
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.图6为本公开至少一个实施例的调整访问请求的优先级级别的又一示例情形。
25.图7为本公开至少一个实施例的调整访问请求的优先级级别的再一示例情形。
26.图8为本公开至少一个实施例提供的处理装置的示意框图。
27.图9为本公开至少一个实施例提供的一种电子设备的示意框图。
28.图10为本公开至少一个实施例提供的一种非瞬时可读存储介质的示意图。
具体实施方式
29.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
30.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
31.以下简要介绍与本公开相关的术语,以便于说明本公开。
32.缓冲存储器(cache):缓冲存储器是介于核和主存储器(例如,外存) 之间的小容量存储器,其读写速度比主存储器更快,从而能够实现高速地向中央处理器核心提供指令和数据,提高程序的执行速度。随着半导体器件集成度的不断提高,当前已出现了多级缓冲存储器系统,每一级缓冲存储器的所有控制逻辑全部由该级缓冲存储器的内部控制器实现。
33.第一级缓冲存储器(l1 cache):l1 cache为一级高速缓冲存储器,位于cpu内核的旁边。其是与cpu结合最为紧密的缓冲存储器。一级缓冲存储器又分为指令缓冲存储器和数据缓冲存储器,容量最小,由各个核/集群独享。
34.第二级缓冲存储器(l2 cache):l2 cache为二级高速缓冲存储器,是 cpu第二层级高速缓冲存储器,其容量会直接影响cpu的性能,由各个核/ 集群独享。
35.第三级缓冲存储器(l3 cache):l3 cache是三级高速缓冲存储器,为 cpu第三层级高速缓冲存储器,作用是进一步降低内存延迟,由多个核/集群共享,容量最大。通常情况下l3也是多核处理器核心的最后一级缓冲存储器(last level cache,llc),l3与外存耦接。
36.外存:其与处理器核心的内存是相对的概念,通常为动态随机存取存储器(dynamic random access memory,dram),其通常通过总线与三级缓冲存储器连接。外存的容量大,但是访问速度慢。
37.缓存行(cache line):缓存行,是cache与内存数据交换的最小单位,通常是32字节或64字节。
38.写回(write back):将上一级缓冲存储器中的数据返回并写入至下一级缓冲存储器或者外存的操作。
39.目录(directory):本级缓冲存储器记录上一级缓冲存储器访问数据状态的记录表。
40.预取(prefetch):通过预测读取数据来提前将数据载入缓冲存储器,减少各个核获取数据的延时。
41.未命中历史寄存器:未命中历史寄存器的典型示例为未命中地址缓冲存储器(missing address buffer,mab),或者mshr(missing status handlingregister)。即当一个读写、预取请求不在当前级别的缓冲存储器中,而需要向下一级缓冲存储器读取时,该请求及其相应属性被保存在未命中历史寄存器里,直到下一级缓冲存储器返回该请求的数据。
42.重排序缓冲区(re-order buffer,rob):重排序缓冲区可以使指令在乱序执行,之后按照原有顺序提交。在某些的动态调度乱序执行机制中,存在四个阶段:发射(issue)、执行(execute)、写结果(write result) 和提交(commit)。在写结果阶段,指令的结果暂时被存储在重排序缓冲区中。随后,指令执行的结果再被储存在寄存器或主存储器中。如果其他指令急切需要此结果,那么重排序缓冲区可以直接为其传输所需的数据。
43.图1为本公开至少一个实施例提供的一种微处理器核心体系结构的示意图。
44.如图1所示,在本公开至少一个实施例中,一种示例性的微处理器体系结构包括五阶段流水线,其中,每条指令可在每个时钟周期发出并在固定的时间例如5个时钟周期内执行。每条指令的执行分成5步:取指(if)阶段 1001,读寄存器(rd)阶段1002,算术/逻辑单元(alu)阶段1003,存储 (mem)阶段1004和写回(wb)阶段1005。在if阶段1001中,从指令高速缓冲存储器中取出指定指令。所取指令的一部分用于指定可用于执行指令的源寄存器。在rd阶段1002中,系统将指定源寄存器的内容取出。所取得的值可用在alu阶段1003中执行算术或逻辑运算。在mem阶段1004中,执行指令可读/写数据高速缓冲存储器中的存储器。最后,在wb阶段1005中,通过执行指令而获得的值可写回到某个寄存器中。
45.通常,处理器核心(core)处理数据速度很快,但是从主存储器中读取数据的时间较长,因此目前的高性能处理器核心一般会采用多级高速缓冲存储器(cache)用于缓冲存储器数据。高速缓冲存储器也可以使用流水线的方式对访问请求对应的缓存行进行处理。例如,高速缓冲存储器中的各个缓存行均可以被连续读取、写入和更新。
46.然而,在进行上述连续的操作时,可能会对有相关性的结构同时进行操作,从而产生冲突。例如,当两个指令都需要对具有同一个索引(index) 的相同或不同缓存行(cache line)(例如,针对多路组相连结构,同一个索引可能对应4个或8个缓存行)进行操作时,因为存在冲突,需要通过仲裁器来确定哪个访问请求先被处理。例如,仲裁器将确定哪个访问请求对应的缓存行将先被读取、写入或更新。
47.进一步地,由于缓冲存储器会被持续地接收到大量的访问请求,从而有可能会产生大量的冲突。而冲突的频繁发生,会增加缓冲存储器的延迟。如果缓冲存储器先处理非关键的访问请求,那么有可能导致关键的访问请求被阻塞,从而导致关键的访问请求响应延迟。
48.图2为本公开至少一个实施例提供的高速缓冲存储器使用流水线的方式处理请求
队列的示意图。
49.例如,在本公开至少一个实施例中,如图2所示,高速缓冲存储器利用仲裁器220来从请求队列210挑选进入上述的读取-写入-更新流水线的访问请求。例如来自上层的高速缓冲存储器或者处理器的访问请求将被存储到请求队列210中,请求队列210中的请求如果满足预设条件(例如,资源足够等)就可以进入仲裁器220,仲裁器220具有仲裁挑选逻辑,即按照一定规则挑选访问请求。在仲裁器220挑选出访问请求后,可以对该访问请求按照流水线的方式进行处理。
50.需要说明的是,在本公开的实施例中,对上述请求从请求队列210到仲裁器220的所需的预设条件不作限制,可以根据实际需要来设置。还需要说明的是,在本公开的实施例中对仲裁器220的仲裁挑选逻辑不作限制,例如,在一个示例中,仲裁挑选逻辑可以被设置为最先进入仲裁器的请求最先被取出,当然也可以是其他挑选逻辑(例如,轮询的方式),可以根据实际需要来设置。
51.因为缓冲存储器可以连续地以流水线地方式处理仲裁器放入流水线的访问请求,因此可能存在连续的访问请求访问同一个结构的情况。比如具有同一个索引的结构,如果该结构不能连续地处理请求,那么缓冲存储器的流水线处理流程就会存在冲突。
52.例如,在一个示例中,如图2所示,假设存在两个访问请求-访问请求a 和访问请求b均尝试访问l1缓冲存储器中索引5对应的缓存行,并且索引5 对应的8个缓存行。假设访问请求a期望访问l1缓冲存储器中索引5对应的第一缓存行,而l1缓冲存储器的索引5对应的第一缓存行并未储存访问请求a期待访问的数据data-a(也即,未命中(miss))。进一步假设访问请求b也尝试访问l1缓冲存储器中索引5对应的8个缓存行中的第二缓存行,并且该缓存行中正好存储有访问请求b期待访问的数据data-b(也即,hit)。
53.如果仲裁器220采用轮询的方式挑选访问请求a先进行流水线处理,那么在流水线处理过程中,可能基于随机策略而决定将索引5对应的第二缓存行中的数据data-b进行替换,以使得访问请求a后续能够得到期望访问的数据data-a。例如,在流水线处理过程中,有可能从下级缓冲存储器中查找访问请求a对应的数据data-a,然后,将索引5对应的第二缓存行中存储的数据data-b替换成data-a,并对应地将包括data-a的访问请求a的访问响应a’放入响应队列230。
54.然而,由于第二缓存行中的数据data-b被替换成了数据data-a,后进入流水线的访问请求b也将无法获取数据data-b。也即,在这样的情况下,访问请求b和访问请求a之间的流水线冲突,导致了本应命中(hit)的访问请求b却未命中(miss)了,进而导致了访问请求b获得数据data-b的效率降低,需要等待较长时间,才能生成针对访问请求b的访问响应b’。
55.为减少上述的冲突,本公开至少一个实施例提供了一种处理访问请求的方法。相应地,本公开至少一个实施例还提供了一种对应于上述方法的处理装置、电子设备和非瞬时可读存储介质。由此,本公开至少一个实施例通过确定访问请求的优先级,可以优化对不同紧急程度的访问请求的响应,提高访问数据的效率。
56.下面通过几个示例或实施例对根据本公开的至少一个实施例提供的处理访问请求的方法进行非限制性的说明,如下面所描述的,在不相互抵触的情况下这些具体示例或实施例中不同特征可以相互组合,从而得到新的示例或实施例,这些新的示例或实施例也
都属于本公开保护的范围。
57.图3为本公开至少一个实施例提供的处理访问请求的方法30的流程图。图4为本公开至少一个实施例提供的处理访问请求的处理装置400的示意图。
58.例如,本公开至少一个实施例提供了一种处理访问请求的方法30,如图 3所示。例如,该方法30可以应用于各种类型的处理装置。例如,在本公开至少一个实施例中,方法30可以应用于如图4所示的处理装置400。
59.例如,在本公开至少一个实施例中,如图3所示,该处理访问请求的方法30可以包括以下操作s301至s302。
60.在操作s301中,响应于当前级别的缓冲存储器接收到访问请求,确定所述第一访问请求对应的优先级级别。
61.在操作s302中,基于所述第一访问请求对应的优先级级别,确定所述缓冲存储器处理所述第一访问请求或第二访问请求的顺序。
62.例如,所述缓冲存储器可以以流水线地方式处理所述第一访问请求,或者所述缓冲存储器可以以流水线地方式处理与第二访问请求。所述第二访问请求可能以各种方式关联于所述第一访问请求,例如,所述第二访问请求可能访问相同数据或所述第二访问请求已经获得了所述第一访问请求期待访问的数据。本公开并不以此为限。
63.本公开至少一个实施例提供的处理访问请求的方法30,通过确定所述第一访问请求对应的优先级级别,可以优化对不同紧急程度的访问请求的响应速度,提高访问数据的效率。
64.需要说明的是,在本公开至少一个实施例中,操作s301-操作s302可以顺序执行,可以并行执行,也可以按调整后的其他次序执行,本公开的实施例对各个步骤的执行顺序不作限制,可以根据实际情况调整。
65.还需要说明的是,在本公开至少一个实施例中,处理访问请求的方法30 可以选择地执行操作s301至操作s302中的部分步骤,也可以执行除了操作 s301至操作s302以外的一些附加步骤,本公开的实施例对此不作限制。
66.可选地,在本公开的一个示例中,访问请求可能对应地包括优先级字段,以指示该访问请求对应的优先级。以当前级别的缓冲存储器为l2缓冲存储器为例进行说明。假设l2缓冲存储器接收到访问请求c,访问请求c指示其需要访问地址0x06中的数据。可选地,访问请求c还可以指示其对应的优先级级别为低优先级、中优先级、高优先级中的任意一项。或者,访问请求 c还可以以数值的方式指示其对应的优先级。
67.本领域技术人员应当理解,访问请求中包括优先级字段仅为本公开的实施方式的一种示例。访问请求中也可以不包括优先级字段。在这样的情况下, l2缓冲存储器可能将访问请求c对应的优先级级别默认地设置为低优先级、中优先级、高优先级中的任意一项。或者,l2缓冲存储器还可能对访问请求c对应的访问地址进行分析,并结合当前各个缓存行的访问请求,以为访问请求c分配优先级。本公开对此不进行限制。
68.例如,在本公开的一个示例中,操作s301可选地包括响应于当前级别的缓冲存储器接收到针对所述第一访问请求的优先级更新命令,确定所述第一访问请求对应的优先级。如图4所示,假设在操作s301中,当前级别的缓冲存储器为l2缓冲存储器,并且l2缓冲存储器已经将访问请求c存储至其对应的请求队列中。接着,l1缓冲存储器中的未命中历史寄
存器向l2缓冲存储器发送优先级更新命令,该指令更新访问请求c的优先级级别。
69.例如,可能存在这样的情况:处理器核心可能会在已经发送完毕访问请求之后,才进一步判断出该请求访问是需要优先处理的访问请求。因此,在这样的情况下,可以仅通过简单的优先级更新命令,来指示对该访问请求的优先级升级/降级。在一些示例中,该优先级更新命令只用于对优先级进行调整。在其它示例中,该优先级更新命令也可以包括其它字段以辅助实现其它功能,本公开并不以此为限。
70.例如,假设在请求队列中,访问请求c对应的优先级级别为低优先级。而经过处理器核心判定,访问请求c的优先级级别应当提高。那么,针对访问请求c的优先级更新请求可以指示需要将访问请求c对应的优先级级别更新为高优先级。在这样的情况下,l2缓存将对应地将访问请求c的优先级级别确定为高优先级。
71.在一个示例中,l2缓冲存储器在接收到该优先级更新命令后,l2缓冲存储器进一步查询其内置的请求队列和响应队列,并对应地对请求队列和响应队列进行更新。以下详述l2缓冲存储器更新求队列和响应队列的示例,本公开并不以此为限。
72.例如,操作s302还可以包括响应于所述缓冲存储器的响应队列包括访问响应并且所述访问响应包括所述第一访问请求所请求的数据,基于所述第一访问请求对应的优先级级别,调整所述访问响应的优先级级别。假设l2 缓冲存储器在其的响应队列中发现已经基于访问请求k提前从l3缓冲存储器中预取了地址0x06中的数据,并将访问请求k对应的访问响应k’存储至响应队列。那么对应地,l2缓冲存储器将基于该优先级更新命令调整响应队列中的与访问响应k’的优先级级别,以使得地址0x06中的数据能够尽快地被发送至l1缓冲存储器。此时,作为一个实施例,也可以对应地直接生成访问请求c对应的访问响应c’,所述访问响应c’对应地包括地址0x06中的数据。然后可以将访问响应c’直接存储至响应队列,并对应地设置访问响应c’的优先级级别为高优先级。响应队列也可以根据各个访问响应的优先级级别确定向l1缓冲存储器发送访问响应的顺序。本公开对此不进行限制。
73.又例如,操作s302还可以包括响应于所述缓冲存储器的请求队列包括第二访问请求并且所述第二访问请求与接收到的所述第一访问请求均请求访问相同的地址,基于所述第一访问请求对应的优先级级别,调整所述第二访问请求对应的优先级级别。假设l2缓冲存储器在其的请求队列中发现已经存在针对地址0x06中的数据的访问请求f。那么对应地,l2缓冲存储器将基于该优先级更新命令调整请求队列中的访问请求f的优先级级别(例如将访问请求f的优先级级别设置为高优先级),以使得l2缓冲存储器的仲裁器优先挑选访问请求f进入流水线。例如,可以基于访问请求f,提前取出地址0x06中的数据,并对应的生成访问请求f对应访问响应f’,访问响应 f’的优先级级别也对应地被设置为高优先级。接着,响应队列也可以根据各个访问响应的优先级级别确定向l1缓冲存储器发送访问响应的顺序。本公开对此不进行限制。
74.又例如,操作s302还可以包括响应于所述第一访问请求对应的优先级级别为高优先级,所述缓冲存储器将优先地以流水线地方式处理所述第一访问请求。假设l2缓冲存储器在其的请求队列和响应队列中均未发现任何请求尝试访问地址0x06中的数据。那么对应地,l2缓冲存储器将基于该优先级更新命令将访问请求c放入请求队列中,并为访问请求c对应地设置较高的优先级,以使得l2缓冲存储器的仲裁器优先挑选访问请求c进入流水线。
75.又例如,操作s302还可以包括响应于所述第一访问请求在当前级别的所述缓冲存
储器中未命中,当前级别的所述缓冲存储器在其的未命中历史寄存器中记录所述第一访问请求及所述第一访问请求对应的优先级级别;以及响应于所述第一访问请求及所述第一访问请求对应的优先级级别,向下级缓冲存储器发送所述第一访问请求。
76.接续上述任意示例,在l2缓冲存储器的仲裁器挑选访问请求c或访问请求f进入流水线处理流程后,经过流水线的处理,l2缓冲存储器可能确定其并未存储地址0x06中的数据,而需要向l3缓冲存储器进一步查询地址 0x06中的数据。l2缓冲存储器将对应地在其的未命中历史寄存器中记录访问请求c或访问请求f,并对应地设置访问请求c或访问请求f为高,然后向l3缓冲存储器发送具有高优先级的访问请求c或访问请求f。l3缓冲存储器也将执行类似的流程来调整访问请求c或访问请求f的优先级级别,本公开在此就不再赘述。
77.需要说明的是,图4仅仅是示例性的,在本公开的实施例中,包括多级缓存的处理装置还可以包括更多或更少的部件,本公开的实施例对此不作具体限制,可以根据实际需求来设置。
78.由此,本公开的实施例通过对访问请求设置不同的优先级,可以优化处理装置对不同紧急程度的访问请求的响应速度,从而提高处理装置的性能。
79.例如,在本公开至少一个实施例中还可以针对参照图5至图7描述的场景进一步调整访问请求的优先级级别。
80.首先,参考图5描述一种调整访问请求的优先级级别的示例情形。在该示例场景中,处理装置还包括处理器核心(例如,cpu),并且cpu包括重排序缓冲区。所述第一访问请求的优先级更新命令
81.至少部分地关联于所述处理装置的重排序缓冲区的状态。
82.在图5的示例中,假设处理装置还包括cpu。cpu可以以乱序执行(out-of-order,ooo)的方式在图1的流水线中执行多条指令。例如,假设某段程序中包括顺序编写的5条指令:指令1、指令2、指令3、指令4、指令5,那么在cpu中对这些指令的实际执行方式可以是指令3、指令4、指令5、指令1和指令2。然而,虽然上述指令的执行顺序可以改变,但是cpu 的状态则需要严格按照指令1、指令2、指令3、指令4、指令5的顺序进行更改。例如,对cpu的状态进行更改包括更改cpu中某个地址对应的数据、更改cpu中的各种寄存器(例如,cpu的架构寄存器,以及图5中的重排序缓存器)的状态。
83.继续图5中的示例,在乱序执行的情况下,指令2可能是最后执行的。因此,即使指令3、指令4和指令5均已经执行完毕,重排序缓冲区的也需要等待指令2的执行完毕,才能进一步地更改重排序缓冲区的状态。在该示例中,重排序缓冲区将把指令2放置在重排序缓冲区的底部并等待指令2返回执行结果。
84.如果在这样的情况下,指令2需要访问某个地址(例如,地址0*08)中存储的数据,而内存中正好未提前取得该数据,那么cpu将花费很长的时间等待从l2缓冲存储器甚至外存中获取该数据。为进一步节省时间,重排序缓冲区将向l1缓冲存储器的未命中历史寄存器发送指示,以指示未命名历史寄存器尽快返回地址0*08中存储的数据。这时,l1缓冲存储器的未命名历史寄存器将向l2缓冲存储器发送优先级更新命令,以指示提高访问地址 0*08的访问请求的优先级,以使得指令2能够尽快执行完毕,减少指令3、指令4和指令5在重排序缓冲区中等待的时间,避免由于重排序缓冲区的阻塞导致的处理装置的性能的降低。
85.由此,对应于图5的场景,本公开的实施例通过提高关联于重排序缓冲区的状态的
访问请求的优先级,可以优化处理装置对在重排序缓冲区等待的指令的响应速度,从而提高处理装置的性能。
86.接着,参考图6描述一种调整访问请求的优先级级别的又一示例场景。在该示例场景中,处理装置还包括处理器核心,所述处理器核心包括取指单元,所述第一访问请求的优先级更新命令至少部分地关联于所述取指单元对应的分支预测结果。
87.例如,如图6所示,取指模块发现分支方向预测错误且指令缓冲存储器未命中时,升级该地址请求。假设图6中示意性的示出的处理器装置执行以下伪代码。
88.#####################################################
89.if x》5,a=a+3;#分支

90.else b=b-3;#分支

91.#####################################################
92.针对上述伪代码,处理装置中的分支预测单元可能预测该段程序走向分支

的可能性更大,因此,分支预测单元可能指示取指单元对数据a进行预取。然而,实际上,该段程序应当执行分支

,也即此时取指单元对应的分支预测结果错误。此时,l1缓冲存储器中仅包括数据a,不包括数据b,导致获取数据b的访问请求未命中。此时,取指单元将根据分支预测结果,指示未命中历史寄存器向l2缓冲存储器发送优先级更新命令,以指示提高获取数据b的访问请求的优先级。可选地,取指单元还可能根据分支预测结果,指示未命中历史寄存器向l2缓冲存储器发送优先级更新命令,以指示降低获取数据a的访问请求的优先级。
93.由此,对应于图6的场景,本公开的实施例通过提高关联于分支预测结果的访问请求的优先级,可以优化处理装置尽快弥补分支预测错误带来的损失,从而提高处理装置的性能。
94.接着,参考图7描述一种调整访问请求的优先级级别的又一示例场景。在该示例场景中,处理装置还包括处理器核心,所述处理器核心包括取指单元以及重排序缓冲区。所述第一访问请求的优先级更新命令至少部分地关联于所述重排序缓冲区的状态以及所述取指单元对应的分支预测结果。
95.例如,如图7所示,存在这样的一种情况,虽然取指模块发现分支方向预测错误,但是在错误的分支方向和正确的分支方向上存在需要读取相同地址的指令。假设图7中示意性的示出的处理器装置执行以下伪代码。
96.#####################################################
97.if x》5#分支

98.a=a+3#指令0,需要访问数据a
99.b=b+5#指令1,需要访问数据b
100.c=c+2#指令2,需要访问数据c
101.else#分支

102.a=a+5#指令3,需要访问数据a
103.d=d+5#指令4,需要访问数据d
104.e=e+2#指令5,需要访问数据e
105.#####################################################
106.针对上述伪代码,处理装置中的分支预测单元可能预测该段程序走向分支

的可
能性更大,因此,分支预测单元可能指示取指单元对数据a、b和c 进行预取。然而,实际上,该段程序应当执行分支

,也即,此时取指单元对应的分支预测结果错误。
107.参考图7,重排序缓冲区中也会对应地顺序记录了各条指令,并等待各条指令执行完毕,刷新各条指令的执行结果。对应地,在图7中的重排序缓冲区中,指令0-2为错误路径上的指令,指令3-5为正确路径上的指令。
108.考虑到指令3-5和指令0-2对应的数据存储地址有重叠,例如,指令3 和指令0均需要访问数据a存储的地址。如果参考图6中的场景,直接降级指令0-2,可能会导致指令3需要等到较长时间才能得到数据a,导致重排序缓冲区一直无法刷新。
109.因此,针对图7所示的场景,可以先针对指令3-5,对未命中历史寄存器进行遍历,以查询未命中历史寄存器中是否发出过针对数据a、数据d和数据e的访问请求或未命中历史寄存器中是否针对数据a、数据d和数据e 生成过未发送的访问请求。经过遍历,响应于确定存在请求访问相同地址的访问请求,可以将访问请求的

新请求’的标志位设置为1。例如,针对以上示例,可以将用于访问数据a的访问请求的

新请求’的标志位设置为1。如果用于访问数据a的访问请求已经发向l2缓冲存储器,那么可以发送优先级更新请求,指示提高该访问请求的优先级级别。如果用于访问数据a的访问请求还未发向l2缓冲存储器,那么可以直接修改该访问请求的优先级字段,将其对应地设置为高优先级级别。
110.进一步地,由于遍历未命中历史寄存器的过程还可能确定目前未针对数据d和数据e发出过访问请求。那么由于数据d和数据e对于该段程序的执行是必要的,因此需要生成用于访问数据d和访问数据e的访问请求。在一些示例中,可以直接将用于访问数据d和访问数据e的访问请求的优先级级别设置为高。在又一些示例中,也可以直接生成优先级更新请求,指示提高用于访问数据d和访问数据e的访问请求的优先级级别。
111.然后,针对指令0-2,对未命中历史寄存器进行遍历,以查询未命中历史寄存器中是否发出过针对数据a、数据b和数据c的访问请求或未命中历史寄存器中是否针对数据a、数据b和数据c生成过未发送的访问请求。在遍历过程中,针对用于访问数据a的访问请求,基于该请求的

新请求’的标志位为1,该遍历过程不触发对该访问请求的优先级变更。而针对用于访问数据b的访问请求和用于访问数据c的访问请求,基于这两个访问请求的标志位为0,该遍历过程将触发对于访问数据b和访问数据c的访问请求的优先级变更。
112.例如,对应地,基于用于访问数据b的访问请求和用于访问数据c的访问请求的标志位为0可以确定:数据b和数据c不再需要、或数据b和数据 c的紧急度不高。如果用于访问数据b/c的访问请求还未发向l2缓冲存储器,那么可以直接修改该访问请求的优先级字段,将其对应地设置为低优先级级别,或者直接将该访问请求删除。如果用于访问数据b/c的访问请求已经发向l2缓冲存储器,那么可以发送优先级更新请求,指示降低这两个访问请求的优先级级别。
113.由此,对应于图7的场景,本公开的实施例可以优先处理处理器核心所依赖的访问请求(例如,访问数据a、数据d和数据e的访问请求),减少关键数据通路路径的延迟,提高处理器的性能。
114.图8为本公开至少一个实施例提供的一种处理装置的结构示意图。
115.例如,本公开至少一个实施例提供了一种处理装置80,如图8所示。该处理装置80包括处理器核心801和多级缓冲存储器802。处理器核心801 和多级缓冲存储器802之间彼
此通信连接。例如,该处理器核心801包括l1 缓冲存储器、取指单元以及重排序缓冲区。多级缓冲存储器包括上述的l2 缓冲存储器、l3缓冲存储器以及外存。每级缓冲存储器都可选地包括未命中历史寄存器。
116.例如,处理器核心801可以是中央处理单元(cpu)、数字信号处理器核心(dsp)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(fpga)等;例如,中央处理单元(cpu)可以为x86或arm架构等。处理器核心801可以为通用处理器核心或专用处理器核心,可以控制理装置80中的其它组件以执行期望的功能。
117.例如,多级缓冲存储器802可以是易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、闪存等。
118.例如,各级缓冲存储器被配置为响应于当前级别的缓冲存储器接收到访问请求,确定所述第一访问请求对应的优先级级别;以及基于所述第一访问请求对应的优先级级别,确定所述缓冲存储器以流水线地方式处理所述第一访问请求或第二访问请求的顺序。例如,各级缓冲存储器都可以实现操作 s301至操作s302,其具体实现方法可以参考操作s301至操作s302的相关描述,在此不再赘述。
119.需要说明的是,各级缓冲存储器都可以通过软件、硬件、固件或它们的任意组合实现操作s301至操作s302。例如,各级缓冲存储器可以对应地包括优先级确定电路和顺序确定电路,以分别实现操作s301和操作s302。本公开的实施例对它们的具体实施方式不作限制。
120.例如,在本公开至少一个实施例中,各级缓冲存储器还包括仲裁器。仲裁器与请求队列彼此之间通信连接。例如,在一个示例中,仲裁器作为顺序确定电路的一种实现方式,被配置为至少部分地基于所述第一访问请求对应的优先级级别,确定所述缓冲存储器以流水线地方式处理所述第一访问请求或第二访问请求的顺序。
121.需要说明的是,图8所示的处理装置80仅仅是示例性的,处理装置还可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
122.图9为本公开至少一个实施例提供的电子设备的示意框图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图9示出的电子设备900仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
123.例如,如图9所示,在一些示例中,电子设备900包括处理装置(例如中央处理器核心、图形处理器核心等)901,其可以根据存储在只读存储器(rom)902中的程序或者从存储装置908加载到随机访问存储器(ram)903 中的程序而执行各种适当的动作和处理。在ram 903中,还存储有计算机系统操作所需的各种程序和数据。处理装置901、rom 902以及ram 903通过总线904被此相连。输入/输出(i/o)接口905也连接至总线904。
124.例如,以下部件可以连接至i/o接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄
像头、麦克风、加速度计、陀螺仪等的输入装置906;包括诸如液晶显示器(lcd)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信装置909。通信装置909可以允许处理装置900与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器310 也根据需要连接至i/o接口905。可拆卸介质9011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器9010上,以便于从其上读出的计算机程序根据需要被安装入存储装置908。虽然图9示出了包括各种装置的电子设备900,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
125.例如,该电子设备900还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为usb接口、闪电(l i ght i ng)接口等。该通信装置909可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(lan)和/或城域网(man)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(gsm)、增强型数据gsm环境(edge)、宽带码分多址(w-cdma)、码分多址(cdma)、时分多址(tdma)、蓝牙、wi-fi(例如基于ieee 802.11a、ieee 802.11b、ieee802.11g和/或ieee 802.11n标准)、基于因特网协议的语音传输(voip)、 wi-max,用于电子邮件、即时消息传递和/或短消息服务(sms)的协议,或任何其他合适的通信协议。
126.例如,电子设备900可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的处理装置及硬件的组合,本公开的实施例对此不作限制。
127.例如,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从 rom 902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例所公开的方法30。
128.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
129.在一些实施方式中,客户端、服务器可以利用诸如http(hypertexttransfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
130.上述计算机可读介质可以是上述处理装置400/处理装置80/处理装置 901中所包含的;也可以是单独存在,而未装配入该处理装置400/处理装置80/处理装置901中。
131.本公开至少一个实施例还提供一种非瞬时可读存储介质。图10是本公开至少一个实施例提供的一种非瞬时可读存储介质的示意框图。如图10所示,非瞬时可读存储介质150上存储有计算机指令111,该计算机指令111 被处理器核心执行时执行如上所述的方法30中的一个或多个步骤。
132.例如,该非瞬时可读存储介质150可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于响应于当前级别的缓冲存储器接收到访问请求,确定所述第一访问请求对应的优先级级别的计算机可读的程序代码,另一个计算机可读存储介质包含用于基于所述第一访问请求对应的优先级级别,确定所述缓冲存储器以流水线地方式处理所述第一访问请求或第二访问请求的顺序的计算机可读的程序代码。当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
133.例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的方法30。
134.例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
135.在本公开中,术语“多个”指两个或两个以上,除非另有明确的限定。
136.本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
137.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1