一种访存指令处理方法及处理器转让专利

申请号 : CN201910985667.4

文献号 : CN110806900B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔泽汉

申请人 : 成都海光微电子技术有限公司

摘要 :

本发明实施例提供一种访存指令处理方法及处理器,其中方法包括:从缓存读取访存指令,并从缓存获取所述访存指令的关键度,其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块存储有访存指令的关键度;在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级;其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;输出所述访存指令相应的执行结果;根据所述执行结果执行访存。本发明实施例可降低由于访存延迟带来的流水线停顿时间,提高处理器的处理效率。

权利要求 :

1.一种访存指令处理方法,其特征在于,包括:从缓存读取访存指令,并从缓存获取所述访存指令的关键度;其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块存储有访存指令的关键度;

在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级;其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;

输出所述访存指令相应的执行结果;

根据所述执行结果执行访存。

2.根据权利要求1所述的访存指令处理方法,其特征在于,所述缓存包括:一级缓存的指令缓存,和层级低于所述一级缓存的下级缓存;

所述指令缓存的指令缓存块设置有存储关键度的关键度存储空间;

所述下级缓存的指令缓存块的错误检查和纠正ECC空间存储有关键度;所述下级缓存的指令缓存块使用奇偶校验保护。

3.根据权利要求1或2所述的访存指令处理方法,其特征在于,所述根据所述访存指令的关键度,调整所述访存指令的执行优先级包括:根据访存指令的关键度,调整地址生成调度队列AGSQ调度访存指令的优先级,其中,访存指令的关键度与AGSQ调度访存指令的优先级呈正相关关系。

4.根据权利要求3所述的访存指令处理方法,其特征在于,所述根据访存指令的关键度,调整AGSQ调度访存指令的优先级包括:结合访存指令的关键度与访存指令在AGSQ中的存在时长,调整AGSQ调度访存指令的优先级;其中,访存指令的关键度和存在时长,均与AGSQ调度访存指令的优先级呈正相关关系。

5.根据权利要求1或2所述的访存指令处理方法,其特征在于,一条访存指令的关键度的存储格式包括:位置信息及关键度数值;其中,位置信息用于指示访存指令在所位于的指令缓存块中的位置。

6.根据权利要求2所述的访存指令处理方法,其特征在于,所述从缓存获取所述访存指令相应的关键度包括:

若取指地址命中指令缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度;

若取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度。

7.根据权利要求6所述的访存指令处理方法,其特征在于,访存指令的关键度与访存指令所位于的指令缓存块相关联;所述方法还包括:当指令缓存块在指令缓存和所述下级缓存间搬移时,使搬移的指令缓存块关联的关键度随同指令缓存块搬移。

8.根据权利要求7所述的访存指令处理方法,其特征在于,所述当指令缓存块在指令缓存和所述下级缓存间搬移时,使搬移的指令缓存块关联的关键度随同指令缓存块搬移包括:

在从所述下级缓存回填指令缓存块到指令缓存时,将回填的指令缓存块关联的关键度从相应的ECC空间,搬移到指令缓存相应的指令缓存块的关键度存储空间;

在指令缓存的指令缓存块被替换时,将替换的指令缓存块关联的关键度,写回到所述下级缓存中相应指令缓存块的ECC空间。

9.根据权利要求8所述的访存指令处理方法,其特征在于,在所述取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块时,执行所述从所述下级缓存回填指令缓存块到指令缓存的过程。

10.根据权利要求6所述的访存指令处理方法,其特征在于,访存指令的关键度复用访存指令位于的指令缓存块的Tag;所述取指地址命中指令缓存的指令缓存块包括:取指地址命中指令缓存的指令缓存块的Tag;

所述取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块包括:所述取指地址未命中指令缓存的指令缓存块的Tag,但命中下级缓存的指令缓存块的Tag;

所述在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度包括:在从命中的Tag相应的指令缓存块中,读取与所述取指地址相应的访存指令时,根据复用命中的Tag的关键度,获取与所述访存指令相应的关键度。

11.根据权利要求1或2所述的访存指令处理方法,其特征在于,所述访存指令相应的执行结果携带有相应的关键度;所述根据所述执行结果执行访存包括:执行访存时,根据所述执行结果的关键度,调整访存优先级。

12.根据权利要求11所述的访存指令处理方法,其特征在于,所述根据所述执行结果的关键度,调整访存优先级包括:

根据所述执行结果的关键度,调整读队列LDQ调度相应访存请求的优先级,其中,执行结果的关键度与LDQ调度相应访存请求的优先级呈正相关关系。

13.根据权利要求12所述的访存指令处理方法,其特征在于,所述根据所述执行结果的关键度,调整LDQ调度相应访存请求的优先级包括:结合所述执行结果的关键度,与相应访存请求在LDQ的存在时长,调整LDQ调度相应访存请求的优先级;其中,执行结果的关键度和相应访存请求的存在时长,均与LDQ调度相应访存请求的优先级呈正相关关系。

14.根据权利要求11所述的访存指令处理方法,其特征在于,所述根据所述执行结果执行访存还包括:

如果访存结果在一级缓存的数据缓存中缺失,输出访存请求,并在输出的访存请求中指示相应优先级;其中,所指示的优先级与相应访存指令的关键度呈正相关关系。

15.根据权利要求1或2所述的访存指令处理方法,其特征在于,所述方法还包括:在访存指令处于重排序单元的队首至提交的期间,通过重排序单元和执行单元监测与访存指令相应的执行信息;

根据所述执行信息,监测访存指令的关键度。

16.根据权利要求15所述的访存指令处理方法,其特征在于,所述在访存指令处于重排序单元的队首至提交的期间,通过重排序单元和执行单元监测与访存指令相应的执行信息包括:

监测访存指令处于重排序单元的队首至提交的期间相应的时钟周期数,以及工作状态的执行单元个数;

所述根据所述执行信息,监测访存指令的关键度包括:根据所述时钟周期数与所述执行单元个数,监测访存指令的关键度;其中,所述时钟周期数与访存指令的关键度呈正相关关系,所述执行单元个数与访存指令的关键度呈负相关关系。

17.根据权利要求16所述的访存指令处理方法,其特征在于,所述根据所述时钟周期数与所述执行单元个数,监测访存指令的关键度包括:根据时钟周期数与关键度的映射关系,确定所述时钟周期数相应的第一关键度;其中,时钟周期数与关键度的映射关系指示,时钟周期数与关键度呈正相关关系;

根据工作状态的执行单元个数与关键度的映射关系,确定所述执行单元个数相应的第二关键度;其中,工作状态的执行单元个数与关键度的映射关系指示,工作状态的执行单元个数与关键度呈负相关关系;

结合第一关键度和第二关键度,得到监测的访存指令的关键度。

18.根据权利要求15所述的访存指令处理方法,其特征在于,还包括:构造更新请求并输出;所述更新请求至少包括:监测的访存指令的关键度,及访存指令的物理地址;

查找所述物理地址是否在指令缓存的指令缓存块中命中;

若所述物理地址在所述指令缓存的指令缓存块中命中,根据监测的访存指令的关键度,更新所述指令缓存块存储的相应访存指令的关键度。

19.根据权利要求18所述的访存指令处理方法,其特征在于,所述根据监测的访存指令的关键度,更新所述指令缓存块存储的相应访存指令的关键度包括:若监测的访存指令的关键度大于,存储的相应访存指令的关键度,且差值超过关键度阈值,则增加存储的相应访存指令的关键度;

若监测的访存指令的关键度小于,存储的相应访存指令的关键度,且差值超过关键度阈值,则减小存储的相应访存指令的关键度。

20.根据权利要求19所述的访存指令处理方法,其特征在于,还包括:若命中的指令缓存块中未存储相应访存指令的关键度,以监测的访存指令的关键度覆盖,命中的指令缓存块中已存储的空记录,或者,已存储的关键度最低的记录。

21.根据权利要求18‑20任一项所述的访存指令处理方法,其特征在于,还包括:将所述更新请求发往指令缓存命中预测单元;所述指令缓存命中预测单元用于预取指令;

如果所述物理地址在指令缓存命中预测单元中命中,将所述更新请求发往指令缓存。

22.一种处理器,其特征在于,所述处理器包括至少一个处理器核,所述处理器核至少包括如下逻辑:

缓存,用于从缓存读取访存指令,并从缓存获取所述访存指令的关键度;其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块存储有访存指令的关键度;

执行单元,用于在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级,其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;输出所述访存指令相应的执行结果;

访存单元,用于根据所述执行结果执行访存。

23.根据权利要求22所述的处理器,其特征在于,所述缓存包括:一级缓存的指令缓存,和层级低于所述一级缓存的下级缓存;

所述指令缓存的指令缓存块设置有存储关键度的关键度存储空间;

所述下级缓存的指令缓存块的错误检查和纠正ECC空间存储有关键度;所述下级缓存的指令缓存块使用奇偶校验保护。

24.根据权利要求22或23所述的处理器,其特征在于,所述执行单元包括逻辑,以实现:根据访存指令的关键度,调整地址生成调度队列AGSQ调度访存指令的优先级,其中,访存指令的关键度与AGSQ调度访存指令的优先级呈正相关关系。

25.根据权利要求23所述的处理器,其特征在于,所述缓存包括逻辑,以实现:若取指地址命中指令缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度;

若取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度。

26.根据权利要求25所述的处理器,其特征在于,访存指令的关键度与访存指令所位于的指令缓存块相关联;所述缓存还包括逻辑,以实现:当指令缓存块在指令缓存和所述下级缓存间搬移时,使搬移的指令缓存块关联的关键度随同指令缓存块搬移。

27.根据权利要求22或23所述的处理器,其特征在于,所述访存指令相应的执行结果携带有相应的关键度;所述访存单元包括逻辑,以实现:执行访存时,根据所述执行结果的关键度,调整访存优先级。

28.根据权利要求22或23所述的处理器,其特征在于,所述处理器核还包括如下逻辑:关键度监测单元,用于在访存指令处于重排序单元的队首至提交的期间,通过重排序单元和执行单元监测与访存指令相应的执行信息;根据所述执行信息,监测访存指令的关键度。

29.根据权利要求28所述的处理器,其特征在于,所述关键度监测单元包括逻辑,以实现:

监测访存指令处于重排序单元的队首至提交的期间相应的时钟周期数,以及工作状态的执行单元个数;

根据所述时钟周期数与所述执行单元个数,监测访存指令的关键度;其中,所述时钟周期数与访存指令的关键度呈正相关关系,所述执行单元个数与访存指令的关键度呈负相关关系。

30.根据权利要求28所述的处理器,其特征在于,所述关键度监测单元还包括逻辑,以实现:

构造更新请求并输出;所述更新请求至少包括:监测的访存指令的关键度,及访存指令的物理地址;

所述缓存还包括逻辑,以实现:

查找所述物理地址是否在指令缓存的指令缓存块中命中;

若所述物理地址在所述指令缓存的指令缓存块中命中,根据监测的访存指令的关键度,更新所述指令缓存块存储的相应访存指令的关键度。

31.根据权利要求30所述的处理器,其特征在于,所述缓存包括逻辑,以实现:若监测的访存指令的关键度大于,存储的相应访存指令的关键度,且差值超过关键度阈值,则增加存储的相应访存指令的关键度;

若监测的访存指令的关键度小于,存储的相应访存指令的关键度,且差值超过关键度阈值,则减小存储的相应访存指令的关键度;

若命中的指令缓存块中未存储相应访存指令的关键度,以监测的访存指令的关键度覆盖,命中的指令缓存块中已存储的空记录,或者,已存储的关键度最低的记录。

32.根据权利要求30或31所述的处理器,其特征在于,所述关键度监测单元包括逻辑,以实现:

将所述更新请求发往指令缓存命中预测单元;所述指令缓存命中预测单元用于预取指令;

处理器核还包括如下逻辑:

指令缓存命中预测单元,用于如果所述物理地址在指令缓存命中预测单元中命中,将所述更新请求发往指令缓存。

33.一种处理器,其特征在于,所述处理器包括至少一个处理器核,所述处理器核至少包括:实现权利要求1‑21任一项所述的访存指令处理方法的逻辑。

说明书 :

一种访存指令处理方法及处理器

技术领域

[0001] 本发明实施例涉及处理器技术领域,具体涉及一种访存指令处理方法及处理器。

背景技术

[0002] 现代处理器一般采用流水线技术并行处理指令,以加速指令处理效率;处理器处理的指令包括但不限于:分支指令、逻辑运算指令、访存指令等;其中,访存指令是指访问存
储的指令。
[0003] 在处理访存指令的过程中,访存延迟是影响处理器性能的原因之一;如果处理器执行后续指令需要依赖于访存指令的访存结果,那么访问存储获取访存结果的时间较长
(即访存延迟较大),将使得流水线存在较长时间的停顿,这将导致处理器的性能损失;可
见,访存延迟是造成流水线长时间停顿的常见原因,因此急需提供一种针对访存指令的新
型处理方式,以减少访存延迟。

发明内容

[0004] 有鉴于此,本发明实施例提供一种访存指令处理方法及处理器,以减少访存延迟,降低由于访存延迟带来的流水线长时间停顿,提高处理器的处理效率。
[0005] 为解决上述问题,本发明实施例提供如下技术方案:
[0006] 一种访存指令处理方法,包括:
[0007] 从缓存读取访存指令,并从缓存获取所述访存指令的关键度;其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块存储有访存
指令的关键度;
[0008] 在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级;其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;
[0009] 输出所述访存指令相应的执行结果;
[0010] 根据所述执行结果执行访存。
[0011] 本发明实施例还提供一种处理器,所述处理器包括至少一个处理器核,所述处理器核至少包括如下逻辑:
[0012] 缓存,用于从缓存读取访存指令,并从缓存获取所述访存指令的关键度;其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块
存储有访存指令的关键度;
[0013] 执行单元,用于在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级,其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;输
出所述访存指令相应的执行结果;
[0014] 访存单元,用于根据所述执行结果执行访存。
[0015] 本发明实施例还提供一种处理器,所述处理器包括至少一个处理器核,所述处理器核至少包括:实现上述所述的访存指令处理方法的逻辑。
[0016] 本发明实施例提供的访存指令处理方法可为访存指令设置关键度,且访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,并设置访存指令的关键度与访存
指令的执行优先级呈正相关关系;基于此,在读取访存指令时,本发明实施例可同时获取访
存指令的关键度,从而在执行访存指令时,本发明实施例可根据访存指令的关键度,调整访
存指令的执行优先级,使得关键度越高的访存指令越优先执行,即导致流水线停顿时间越
长的访存指令越优先执行;进而,在根据访存指令相应的执行结果执行访存时,可使得导致
流水线停顿时间越长的访存指令,越能够及时的实现访存,降低了由于访存延迟带来的流
水线停顿时间,提高了处理器的处理效率。

附图说明

[0017] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0018] 图1为计算机系统体系架构的框图;
[0019] 图2为与内存耦合的处理器的框图;
[0020] 图3为包含使用流水线技术的处理器核的处理器框图;
[0021] 图4为本发明实施例提供的处理器的架构框图;
[0022] 图5为本发明实施例提供的访存指令处理方法的流程图;
[0023] 图6为本发明实施例提供的缓存的架构框图;
[0024] 图7为本发明实施例提供的关键度的存储格式示意图;
[0025] 图8为本发明实施例提供的关键度的另一存储格式示意图;
[0026] 图9为本发明实施例提供的搬移指令缓存块的示意图;
[0027] 图10为本发明实施例提供的取指方法流程图;
[0028] 图11为本发明实施例提供的处理器的另一架构框图;
[0029] 图12为本发明实施例提供的处理器的再一架构框图;
[0030] 图13为监测执行单元和重排序单元的示意图;
[0031] 图14为本发明实施例提供的更新缓存中存储的关键度的方法流程图。

具体实施方式

[0032] 本发明实施例提供一种改进的访存指令处理方法及处理器,以基于访存指令导致的流水线停顿时间,设置访存指令的关键度,其中,访存指令导致的流水线停顿时间越长,
则访存指令的关键度越高;从而通过优先执行高关键度的访存指令,可使得导致流水线长
时间停顿的访存指令优先执行,降低影响流水线长时间停顿的访存指令相应的访存延迟,
进而降低由于访存延迟带来的流水线停顿时间,提高处理器的处理效率。
[0033] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0034] 作为本发明实施例公开内容的一个可选示例,图1示例性的示出了计算机系统体系架构的一种框图;应该说明的是,该框图是为便于理解本发明实施例公开内容而示出,本
发明实施例并不限于图1所示架构。
[0035] 参考图1,计算机系统1可包括:处理器11,与处理器11耦合的内存12,与处理器耦合的南桥13。
[0036] 处理器11可包括CISC(复杂指令集计算机)微处理器、RISC(精简指令集计算机)微处理器、VLIW(超长指令字)微处理器、实现指令集的组合的处理器或诸如数字信号处理器
的任何其它处理器装置。
[0037] 处理器11可集成用于执行至少一个指令的至少一个处理器核100,处理器核100表示任何类型的体系结构的处理器核,如RISC处理器核、CISC处理器核、VLIM处理器核或混合
处理器核等。处理器核100可以以任何适合的方式实现,在处理器11集成多个处理器核100
的情况下,处理器核可在体系结构和/或指令集方面是同构或异构的;在一种可选实现中,
一些处理器核可以是有序的,而其它处理器核可以是乱序的,在另一种可选实现中,两个或
更多个处理器核可执行相同指令集,而其它处理器核可执行该指令集的子集或不同指令
集。
[0038] 作为一种可选示例,处理器11内可集成内存控制器等部件,并对外提供内存接口等;处理器11可通过内存接口耦合到内存12。同时,处理器11可耦合到处理器总线,并通过
处理器总线耦合到南桥13。
[0039] 作为一种可选示例,南桥13可以集成与计算机系统其它组件相通信的总线接口14,从而通过南桥13实现处理器11与计算机系统1中大部分其他组件的信号传递;计算机系
统的组件可根据实际情况增设和调整,此处不进行逐一说明;
[0040] 在一个可选示例中,南桥13所集成的总线接口14包括但不限于:存储器(如硬盘)总线接口、USB总线接口、网络控制器总线接口、PCIE总线接口等。
[0041] 需要说明的是,图1示例框图中处理器和南桥的耦合结构是基本的,但处理器和南桥的具体细化结构可视具体使用情况设置、调整和/或扩展,并不固定。
[0042] 在其他的计算机系统体系结构中,例如在分设南桥和北桥的计算机系统体系结构中,内存控制也可能由北桥提供,如北桥主要负责显卡、内存与处理器之间的信号传递,并
且向上耦合处理器,向下耦合南桥;南桥主要负责硬盘、外设以及各种对带宽要求较低的IO
(输入输出)接口与内存、处理器之间的信号传递。
[0043] 上述所述是处理器与南桥式的计算机体系结构,在计算机体系结构的其他示例中,也可能通过SoC(System on Chip,片上系统)实现计算机体系结构;示例性的,SoC可集
成处理器、内存控制器、以及IO接口等,并且SoC可通过与外部的内存、IO设备、网卡等其他
组件相耦合,实现在单个主要芯片上搭建计算机体系结构。
[0044] 需要进一步说明的是,以上描述的结构并不限于计算机系统,也可在诸如手持式装置和具有嵌入式应用的其他装置中使用;手持式装置的一些示例包括蜂窝电话、因特网
协议装置、数码相机、个人数字助理(PDA)或手持式PC(personal computer,个人计算机)。
具有嵌入式应用的其他装置可包括网络计算机(Net PC)、置顶盒、服务器、宽域网(WAN)交
换机、或可执行至少一个本发明公开实施例的一个或更多个指令的任何其他系统。
[0045] 另外,上述所述的处理器并不限于CPU(Central Processing Unit,中央处理器),还可以是加速器(例如,图形加速器或数字信号处理单元)、GPU(Graphics Processing 
Unit,图形处理器)、现场可编程门阵列或任何其它具有指令执行功能的处理器。上述虽然
是以单处理器进行的示例说明,但在实际情况下,计算机体系结构可能存在多个处理器,每
一处理器具有至少一个处理器核。
[0046] 作为本发明实施例公开内容的一个可选示例,图2示例性的示出了与内存耦合的处理器的框图;应该说明的是,该框图是为便于理解本发明实施例公开内容而示出,本发明
实施例并不限于图2所示架构。
[0047] 参考图2,处理器11可包括:至少一个处理器核100(图2所示多个处理器核的情况仅是一种可选示例);每个处理器核100的内部可驻留至少一个私有缓存210;同时,至少一
个共享缓存220驻留在处理器核100的外部,并被所述至少一个处理器核100所共享;共享缓
存220访问内存12,并在处理器核100和内存12之间传递信号。可选的,在图2所示架构的基
础上,本发明实施例也可在处理器11外部设置外部共享缓存,由外部共享缓存在处理器11
与内存12之间传递信号。
[0048] 需要说明的是,处理器也可以包括对理解本发明实施例公开内容不是必需的其他电路(未示出),鉴于所述其他电路对于理解本发明实施例公开内容并不是必需的,本发明
实施例就不再赘述。
[0049] 缓存(如高速缓存cache)是在处理器核100和内存12之间的存取速度极快的存储单元,一般具有多级结构;较为常见的是三级缓存结构,分为一级(L1)缓存,二级(L2)缓存
和三级(L3)缓存;当然,本发明实施例也可支持多于三级缓存或小于三级缓存的结构。
[0050] 作为一种可选示例,每个处理器核100内部可集成L1缓存和L2缓存,即私有缓存210可以包括:L1缓存和L2缓存;共享缓存220可以包括L3缓存,L3缓存被所述至少一个处理
器核100所共享;当然,这种缓存设置方式仅是一种示例,也可能是L2和L3缓存作为共享缓
存,或者在设置多于三级缓存结构的情况下,也可能将L1、L2和L3缓存均集成在处理器核内
作为私有缓存。
[0051] 现代微处理器架构一般使用流水线(pipeline)技术实现多条指令的并行处理,并结合使用分支预测、乱序执行(out of order execution)等技术提升流水线的执行效率。
作为本发明实施例公开内容的一个可选示例,图3示例性的示出了包含使用流水线技术的
处理器核的处理器框图;应该说明的是,该框图是为便于理解本发明实施例公开内容而示
出,本发明实施例并不限于图3所示架构。
[0052] 作为一种可选示例,五级流水线的处理过程可以分为取指(InstructionFetch)、译码(Instruction Decode)、执行(Execute)、访存(Memory Access)和写回(Write Back);
为解决在处理分支指令时,处理器核等待分支指令的执行结果来确定下一步取指而导致的
流水线延迟,流水线的前端可设置分支预测单元,以实现分支预测。分支指令通常分为两种
情况:分支指令不跳转,则下一步指令为分支指令下一步顺序的指令;分支指令跳转,则下
一步指令为跳转到的指令。
[0053] 参考图3,处理器11可以包括:分支预测单元101,取指单元102,译码单元103,执行单元104,重排序单元105,访存单元106,缓存200,内存控制器300;
[0054] 其中,分支预测单元101,取指单元102,译码单元103,执行单元104,重排序单元105,访存单元106可以是集成在处理器核内的逻辑电路单元,处理器核包括但不限于图1或
图2所示处理器核100;
[0055] 可选的,缓存200中的全部或部分可集成在处理器核内;作为一种示例,结合图2所示,缓存200可以包括:集成到处理器核内的至少一个私有缓存210,驻留在处理器核外的至
少一个共享缓存220;
[0056] 当然,本发明实施例也支持缓存200中的全部集成在处理器核内,在某些情况下,本发明实施例也可支持缓存200中的全部驻留在处理器核外;
[0057] 需要说明的是,无论集成在处理器核内和驻留在处理器核外的缓存层级如何设置;可选的,通常来说,上一层缓存可缓存来自下一层缓存的信息,如L1缓存可缓存来自L2
缓存的信息,当然这种设置方式仅是可选的,本发明实施例并不局限于此。
[0058] 可选的,内存控制器300可以集成于处理器核内,当然,本发明实施例也可支持内存控制器300驻留在处理器核外的情况。
[0059] 分支预测单元101可进行分支预测,得到分支预测结果,如当前指令是否为分支指令、分支指令的分支结果(方向、地址、目标地址等)等;在一种实现中,可基于分支指令的历
史执行信息和结果进行分支预测。
[0060] 基于分支预测单元101的分支预测结果,取指单元102可通过缓存200读取当前取指的指令(包括但不限于读取分支指令、逻辑运算指令、访存指令等),并馈送到译码单元
103;在一种可选实现中,取指单元102可将读取的指令存放入处理器核100的指令寄存器,
以便译码单元103从指令寄存器读取指令进行译码。
[0061] 译码单元103可解释指令,得出译码后的指令;译码后的指令可以是解释指令所得出的可由机器执行的操作信息,诸如解释指令的操作码、操作数和控制字段所形成的机器
可执行的uop(微指令)等;可选的,译码单元103可从寄存器文件中读取源操作数并解析操
作码产生控制信号。
[0062] 执行单元104可基于译码后的指令执行运算,产生执行结果(执行结果与取指指令的指令功能相应,涉及访存、逻辑运算结果、指令跳转等);可选的,执行单元104可支持乱序
执行指令;
[0063] 重排序单元105可在执行单元104乱序执行指令之后,使得指令按照原有顺序提交;
[0064] 可选的,执行单元104与重排序单元105可集成于执行引擎内,当然,执行单元104与重排序单元105也可分离开。
[0065] 对于访存指令,访存单元106可基于执行单元104对访存指令的执行结果(如访存地址)执行访存;可选的,访存单元106可基于访存指令的执行结果,先访问缓存,在缓存缺
失相应访存结果时,再访问内存;访存单元在访问缓存的过程中,可先访问L1缓存,在L1缓
存缺失访存结果时,再逐级的访问下级缓存。
[0066] 写回单元(未图示)可基于执行单元对指令的执行结果,或者访存单元对LOAD指令的执行结果,将执行结果写回寄存器文件。
[0067] 需要说明的是,图3示例性的示出了一种五级流水线的处理器核架构,而随着技术调整,流水线中不同阶段的逻辑电路单元也可能相整合或者分离,其架构并不固定;同时,
本发明实施例的处理器核也可在四级流水线等其他流水线技术中适用。
[0068] 可以理解的是,处理器核也可以包括对理解本发明实施例公开内容不是必需的其他电路(未示出),鉴于所述其他电路对于理解本发明实施例公开内容并不是必需的,本发
明实施例就不再赘述。
[0069] 为解决由于访存延迟带来的流水线长时间停顿,而降低处理器处理效率的问题,本发明实施例提供一种改进的访存指令处理方法及处理器,以基于访存指令导致的流水线
停顿时间,设置访存指令的关键度,其中,访存指令导致的流水线停顿时间越长,则访存指
令的关键度越高;从而通过优先执行高关键度的访存指令,可使得导致流水线长时间停顿
的访存指令优先执行,降低影响流水线长时间停顿的访存指令相应的访存延迟,进而降低
由于访存延迟带来的流水线停顿时间,提高处理器的处理效率。
[0070] 作为本发明实施例公开内容的一种可选实现,图4示例性的示出了本发明实施例提供的处理器的架构框图;需要说明的是,处理器也可以包括对理解本发明实施例公开内
容不是必需的其他电路(未示出)。
[0071] 结合图3和图4所示,本发明实施例可为访存指令设置关键度,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,即访存指令导致的流水线停顿时间越
长,则访存指令的关键度越高;并且,缓存200除实现指令和数据的存储外,还可存储访存指
令的关键度(如图4所示访存关键度);
[0072] 在读取访存指令时,取指单元102可基于分支预测单元101的分支预测结果,向缓存200馈送取指请求(取指请求可以包括:取指地址;例如,取指起始地址和取指结束地址);
缓存200根据取指请求可读取相应的访存指令,并获取访存指令相应的关键度;需要说明的
是,本发明实施例特以缓存读取的指令为访存指令进行方案说明,因此图4和相应说明直接
以缓存200读取访存指令进行示意;
[0073] 访存指令及相应的关键度馈送到译码单元103,译码单元103可对访存指令进行译码,译码后的访存指令的属性中可添加相应的关键度;可选的,指令在经过译码单元103译
码后,可展开成处理器内部需要的格式,此时译码后的指令可携带多个属性,比如opcode、
操作数等;本发明实施例可在译码后的访存指令的属性中增加关键度,以实现译码后的访
存指令携带关键度;
[0074] 执行单元104在执行译码后的访存指令时,可根据访存指令的关键度,调整译码后的访存指令的执行优先级,并在完成执行访存指令后,输出访存指令相应的执行结果(访存
指令相应的执行结果例如访存地址等);其中,访存指令的关键度与执行优先级呈正相关关
系,即访存指令的关键度越高,则访存指令的执行优先级越高。
[0075] 执行单元104输出的访存指令相应的执行结果可馈送到访存单元106,由访存单元106根据访存指令相应的执行结果执行访存。
[0076] 可选的,结合图4所示,图5示例性的示出了本发明实施例提供的访存指令处理方法的一可选流程,该流程可由处理器执行,可选由处理器内设置的逻辑电路单元执行图5所
示方法(即通过处理器内的硬化逻辑电路执行该方法),下文描述涉及的处理器逻辑可认为
是,处理器的逻辑电路单元。
[0077] 参考图5,该方法可以包括:
[0078] 步骤S10、读取访存指令,并获取访存指令的关键度。
[0079] 可选的,步骤S10可由缓存执行;示例的,缓存获取取指请求后,可读取相应的访存指令,在读取访存指令时,可获取所读取的访存指令相应的关键度。
[0080] 在一种可选实现中,分支预测单元输出的取指请求(如取指地址),可存入取指单元的取指队列,并在取指队列中排队;取指队列可调度排队中的取指请求从缓存中取指。
[0081] 步骤S11、在执行访存指令时,根据访存指令的关键度,调整访存指令的执行优先级。
[0082] 可选的,步骤S11可由执行单元执行。示例的,译码单元对读取的访存指令进行译码后,译码后的访存指令及相应的关键度可馈送到执行单元,从而执行单元可执行访存指
令;在执行单元执行访存指令的过程中,执行单元可根据访存指令的关键度,调整访存指令
的执行优先级,使得关键度越高的访存指令越优先执行;在完成执行访存指令后,执行单元
可输出访存指令相应的执行结果。
[0083] 可选的,执行单元可支持以乱序执行技术执行访存指令。
[0084] 步骤S12、输出访存指令相应的执行结果。
[0085] 可选的,步骤S12可由执行单元执行;在完成执行访存指令后,执行单元可输出访存指令相应的执行结果;
[0086] 在一种可选实现中,访存指令相应的执行结果可以包括:访存指令相应的访存地址;进一步,访存指令相应的执行结果也可以携带,访存指令相应的关键度。
[0087] 步骤S13、根据访存指令相应的执行结果执行访存。
[0088] 可选的,步骤S13可由访存单元执行。
[0089] 本发明实施例提供的访存指令处理方法可为访存指令设置关键度,且访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,并设置访存指令的关键度与访存
指令的执行优先级呈正相关关系;基于此,在读取访存指令时,本发明实施例可同时获取访
存指令的关键度,从而在执行访存指令时,本发明实施例可根据访存指令的关键度,调整访
存指令的执行优先级,使得关键度越高的访存指令越优先执行,即导致流水线停顿时间越
长的访存指令越优先执行;进而,在根据访存指令相应的执行结果执行访存时,可使得导致
流水线停顿时间越长的访存指令,越能够及时的实现访存,降低了由于访存延迟带来的流
水线停顿时间,提高了处理器的处理效率。
[0090] 作为本发明实施例公开内容的一种可选实现,本发明实施例可使用L1缓存的指令缓存,以及下级缓存的指令缓存块存储访存指令的关键度;
[0091] 其中,指令缓存可以是L1缓存中存储指令的缓存结构,指令缓存主要通过指令缓存块存储指令;进一步,L1缓存还可以包括存储数据的数据缓存;下级缓存可以例如L2缓
存、L3缓存等,各个下级缓存均可以具有数据缓存块(用于存放数据)及指令缓存块(用于存
放指令)。
[0092] 作为改进,本发明的发明人提出扩容指令缓存,以通过指令缓存扩容的存储空间存储访存指令的关键度;同时,本发明实施例可使用下级缓存的指令缓存块存储访存指令
的关键度。
[0093] 可选的,图6示例性的示出了本发明实施例提供的缓存的架构框图,结合图4和图6所示,缓存200可以包括:L1缓存01和至少一个下级缓存02;其中,L1缓存01可以包括:指令
缓存011和数据缓存012;所述至少一个下级缓存可以是层级低于L1缓存的一个或多个缓
存,例如L1缓存之下的L2缓存、L3缓存等之中的至少一个;所述至少一个下级缓存的部分或
全部可集成在处理器核内;
[0094] 在本发明实施例中,所述至少一个下级缓存02共同缓存数据和指令(同时具有数据缓存块和指令缓存块);如以三层缓存架构为例,L1缓存的指令缓存可缓存指令,L1缓存
的数据缓存可缓存数据,L2缓存和L3缓存(所述至少一个下级缓存02的一种可选实现)可共
同缓存数据和指令。
[0095] 本发明的发明人发现:指令缓存由于其只读的特性,可使用奇偶校验进行保护,而所述至少一个下级缓存02通常使用ECC(Error Correcting Code,错误检查和纠正)进行保
护;由于所述至少一个下级缓存包含了指令缓存块,因此可设置所述至少一个下级缓存02
中的指令缓存块也使用奇偶校验进行保护,从而可空余出所述至少一个下级缓存的指令缓
存块中的ECC空间;
[0096] 基于此项发现,本发明的发明人提出扩容L1缓存01的指令缓存,以存储访存指令的关键度;同时,将所述至少一个下级缓存02中存放指令的指令缓存块使用奇偶校验进行
保护,从而利用下级缓存02的指令缓存块的ECC空间存储访存指令的关键度。
[0097] 如图6所示,L1缓存01的指令缓存011可以包括多个指令缓存块,每一个指令缓存块除包括存储指令的指令存储空间0111外,还包括存储关键度的关键度存储空间0112;
[0098] 需要说明的是,图6中指令存储空间0111或关键度存储空间0112在指令缓存块中是连续的存储空间,但本发明实施例也可支持指令存储空间0111或关键度存储空间0112在
指令缓存块中是不连续的存储空间。
[0099] 进一步,图6所示的至少一个下级缓存02中,灰色部分代表数据缓存块(用于存放数据),白色部分代表指令缓存块(用于存放指令);
[0100] 示例的,下级缓存02中数据缓存块和指令缓存块均包括如下域:Tag,data和ECC;在本发明实施例中,数据缓存块的data可记录数据信息,指令缓存块的data可记录指令信
息,数据缓存块的ECC可用于为数据缓存块提供ECC保护,而指令缓存块则使用奇偶校验保
护,指令缓存块的ECC所对应的ECC空间用于存储关键度。
[0101] 在本发明实施例中,L1缓存的指令缓存额外增加的关键度存储空间,下级缓存的指令缓存块的ECC空间,一起构成了缓存中存储关键度的存储空间;即在本发明实施例中,
缓存的指令缓存块可存储访存指令的关键度。
[0102] 在一种可选实现中,关键度的存储格式可以如图7所示,一个指令缓存块可以存储N个访存指令的关键度,例如,指令缓存的一个指令缓存块的关键度存储空间可以存储,N个
访存指令的关键度;又如,下级缓存的一个指令缓存块的ECC空间可以存储,N个访存指令的
关键度;
[0103] 可选的,一个访存指令的关键度的存储格式除包含具体的关键度数值外,还可以包含位置信息;其中,位置信息可用于指示访存指令在所位于的指令缓存块中的位置(例
如,关键度相应的访存指令相对于所在指令缓存块的起始地址的偏移位置),在译码访存指
令时,关键度的位置信息可用于译码后的访存指令关联相应关键度,即本发明实施例可通
过访存指令在所位于的指令缓存块的位置,来关联访存指令与相应的关键度。
[0104] 在另一种可选实现中,关键度的存储格式可以如图8所示,图8中,N表示每个指令缓存块所有可能的指令边界的个数(即每个指令缓存块所能存储的指令个数),每个可能的
指令边界对应一个关键度,关键度可包括具体的关键度数值;如果一个指令缓存块的大小
为64字节,每条指令为4字节,则所有可能的指令边界的个数为16个,在此基础上,本发明实
施例可通过bitmap(比特匹配)方式,来关联访存指令与相应的关键度,如在指令缓存的各
指令缓存块的关键度存储空间存储边界对应的bit;
[0105] 在一个方面中,本发明实施例可设置一个bit(比特)对应一个边界,访存指令的起始地址的字节对应的bit可以表示,访存指令是否具有关键度,其他字节对应的bit可以不
表示任何含义,使用这种方式,整个bitmap可以只有很少数的有效信息;
[0106] 在另一方面中,本发明实施例也可使用多个bit对应一个边界,如此设置,访存指令的起始地址的字节对应的bit可以表示,访存指令是否具有关键度及具体的关键度。
[0107] 在一种可选实现中,访存指令的关键度可与访存指令位于的指令缓存块始终关联;示例的,访存指令的关键度可复用访存指令位于的指令缓存块的Tag;当指令缓存块在
指令缓存和所述至少一个下级缓存间搬移时,可使得关联的关键度也随指令缓存块搬移;
[0108] 可选的,图9示出了在指令缓存和所述至少一个下级缓存间搬移指令缓存块的示意,参照图9,搬移指令缓存块主要分为:从至少一个下级缓存02回填指令缓存块到指令缓
存011的过程(如图实线箭头所示),以及从指令缓存011写回指令缓存块到至少一个下级缓
存02的过程(如图虚线箭头所示);
[0109] 可选的,搬移指令缓存块可由L1缓存的指令缓存执行,L1缓存的指令缓存可通过设计相应逻辑搬移指令缓存块,当然,本发明实施例也可支持由处理器设计其他的逻辑搬
移指令缓存块;
[0110] 可选的,当指令缓存011缺失指令缓存块,需从至少一个下级缓存02回填指令缓存块到指令缓存时,可将所回填的指令缓存块关联的关键度,从相应的ECC空间搬移到指令缓
存011中相应的关键度存储空间0112;具体的,所述至少一个下级缓存02中,指令缓存块的
ECC空间和Tag及data是绑定的,在回填指令缓存块时,至少一个下级缓存的指令缓存块中
的Tag和data的信息,搬移到指令缓存的指令缓存块的指令存储空间0111,而ECC空间存储
的关键度搬移到指令缓存相应指令缓存块的关键度存储空间0112。
[0111] 可选的,当指令缓存011的指令缓存块被替换时,所替换的指令缓存块关联的关键度,写回到至少一个下级缓存02中对应的ECC空间,而指令缓存的指令缓存块由于是只读
的,因此指令缓存的指令缓存块的指令信息并不用写回到至少一个下级缓存02中;具体的,
当指令缓存011中的指令缓存块被替换时,其关键度存储空间0112存储的关键度,写回到至
少一个下级缓存02中相应指令缓存块的ECC空间。
[0112] 可选的,进一步,当指令缓存和下级缓存均缺失指令缓存块时,可从内存中获取相应指令缓存块,并填入下级缓存和指令缓存;此时,下级缓存和指令缓存中填入的指令缓存
块关联的关键度可以为空,关键度可由后续说明的关键度更新机制进行更新。
[0113] 可选的,本发明实施例在从缓存读取访存指令时,如果取指请求在缓存的指令缓存块中命中,则在读取取指请求相应的访存指令时,可同时读取该访存指令在所位于的指
令缓存块关联的关键度。例如,若取指地址命中指令缓存的指令缓存块,在从命中的指令缓
存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应
的关键度;若取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块,在从
命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述
访存指令相应的关键度。
[0114] 可选的,本发明实施例可使得访存指令的关键度复用访存指令位于的指令缓存块的Tag,以实现访存指令的关键度关联访存指令所位于的指令缓存块,从而在从指令缓存的
指令缓存块的tag命中时,同时提取访存指令和相应的关键度;图10示例性的示出了本发明
实施例提供的取指方法流程,可选的,该方法流程可由缓存执行,参照图10,该方法可以包
括:
[0115] 步骤S20、查找取指地址是否命中指令缓存的指令缓存块的Tag。
[0116] 步骤S21、若取指地址命中指令缓存的指令缓存块的Tag,从命中的Tag相应的指令缓存块中,读取与所述取指地址相应的访存指令,并根据复用命中的Tag的关键度,获取与
所述访存指令相应的关键度。
[0117] 步骤S22、若取指地址未命中指令缓存的指令缓存块的Tag,查找取指地址是否命中下级缓存的指令缓存块的Tag。
[0118] 步骤S23、若取指地址命中下级缓存的指令缓存块的Tag,从命中的Tag相应的指令缓存块中,读取与所述取指地址相应的访存指令,并根据复用命中的Tag的关键度,获取与
所述访存指令相应的关键度。
[0119] 当取指地址未命中指令缓存的指令缓存块的Tag,说明指令缓存缺失相应的指令缓存块,可在下级缓存(如L2、L3缓存)检测取指地址是否命中指令缓存块的Tag;同时,在取
指地址命中下级缓存的指令缓存块时,可从下级缓存回填相应的指令缓存块和关联的关键
度至指令缓存。
[0120] 在取指时,取指请求的取指地址可以包括取指起始地址和取指结束地址,各个指令缓存块的Tag可以记录指令的部分起始地址;本发明实施例可按照先检测指令缓存再检
测下级缓存的顺序,将取指起始地址与指令缓存块的Tag进行匹配,直至取指起始地址命中
指令缓存块的Tag。
[0121] 可选的,复用命中的Tag的关键度可能有多份,本发明实施例可进一步根据取指地址,从复用命中的Tag的关键度中,确定位置信息与取指地址相匹配的关键度,从而获取到
访存指令相应的关键度。
[0122] 可以看出,在取指访存指令并获取相应关键度时,如果取指在指令缓存中命中,则可从指令缓存的指令缓存块新增的关键度存储空间,获取访存指令相应的关键度;如果取
指未在指令缓存中命中,而在下级缓存中命中,则可从下级缓存的指令缓存块的ECC空间,
获取访存指令相应的关键度(此时,可将下级缓存命中的指令缓存块及关联的关键度回填
到指令缓存)。
[0123] 可选的,作为一种替代实现方式,本发明实施例也可设置仅使用指令缓存的关键度存储空间存储关键度,或,使用下级缓存的指令缓存块的ECC空间存储关键度;此情况下,
取指方式可参照前文相应调整,此处不再展开说明。
[0124] 在取指阶段读取访存指令并获取相应的关键度后,可在译码阶段对访存指令进行译码,并在译码后的访存指令的属性中添加相应的关键度;译码阶段完成,在执行阶段执行
访存指令时,执行单元可基于访存指令的关键度,调整访存指令的执行优先级;
[0125] 示例的,执行单元可根据访存指令的关键度,调整AGSQ(address generation schedule queue,地址生成调度队列)调度访存指令的优先级,其中,访存指令的关键度与
AGSQ调度访存指令的优先级呈正相关关系,即访存指令的关键度越高,则AGSQ调度访存指
令的优先级越高;其中,AGSQ是执行单元中地址计算部件的调度队列。
[0126] 目前,AGSQ是基于访存指令在AGSQ中的存在时长(age)调度访存指令,如优先调度所有访存指令中age最久的访存指令;然而,AGSQ单纯的基于age调度访存指令,而不考虑访
存指令对流水线停顿时间的影响,将使得访存延迟较大的访存请求无法优先执行,并无法
有效提高处理器的处理效率;
[0127] 基于此,本发明实施例可结合访存指令的关键度与age,调整AGSQ调度访存指令的优先级;其中,访存指令的关键度和age,均与AGSQ调度访存指令的优先级呈正相关关系,从
而使得导致流水线停顿时间越长的访存指令越能够优先调度处理;
[0128] 在一方面,本发明实施例可将访存指令的关键度与age相加,从而确定AGSQ调度访存指令的优先级,所确定的优先级的数值越高,则AGSQ越优先调度访存指令;
[0129] 在另一方面,本发明实施例可将访存指令的关键度与age相乘,从而确定AGSQ调度访存指令的优先级;
[0130] 在再一方面,本发明实施例可在访存指令的age处于预定时长范围内时,仅考虑关键度对AGSQ调度访存指令的优先级的影响,而在访存指令的age超过预定时长范围时,仅考
虑访存指令的age对AGSQ调度访存指令的优先级的影响;
[0131] 可选的,若访存指令的age处于预定时长范围内,则访存指令的关键度越高,AGSQ调度访存指令的优先级越高,若访存指令的age超过预定时长范围,则访存指令的age越长,
AGSQ调度访存指令的优先级越高。
[0132] 需要说明的是,上述结合访存指令的关键度与age,调整AGSQ调度访存指令的优先级的方式仅是可选的示例说明,本发明实施例并不排除其他实现调整AGSQ调度访存指令的
优先级的方式,只要使得访存指令的关键度和age,均与AGSQ调度访存指令的优先级呈正相
关关系即可;当然,本发明实施例也可直接基于访存指令的关键度,调整AGSQ调度访存指令
的优先级,而不考虑访存指令的age。
[0133] 可选的,进一步,执行单元输出的访存指令相应的执行结果可以携带,访存指令相应的关键度;访存单元在根据访存指令相应的执行结果(如访存地址)执行访存时,也可根
据相应的关键度调整访存优先级;
[0134] 可选的,图11示例性的示出了本发明实施例提供的处理器的另一架构框图;需要说明的是,处理器也可以包括对理解本发明实施例公开内容不是必需的其他电路(未示
出);
[0135] 结合图4和图11所示,执行单元104输出的访存指令相应的执行结果可以携带有相应的关键度,并馈送到访存单元106;访存单元106在执行访存时,可根据执行结果的关键
度,调整访存优先级;
[0136] 示例的,访存单元可根据执行结果的关键度,调整LDQ(load queue,读队列)调度相应访存请求的优先级,其中,执行结果的关键度与LDQ调度相应访存请求的优先级呈正相
关关系,即执行结果的关键度越高,则LDQ调度相应访存请求的优先级越高;其中,LDQ是访
存单元中读请求的调度队列,访存请求是访存单元馈送给存储部件的用于请求访存结果的
请求;
[0137] 目前,LDQ是基于访存请求在LDQ中的age调度相应的访存请求,如优先调度所有访存请求中存在时长最久的访存请求;然而,LDQ单纯的基于age调度访存请求,将使得访存延
迟较大的访存请求无法优先执行,并无法有效提高处理器的处理效率;
[0138] 基于此,本发明实施例可结合执行结果的关键度,与相应访存请求的age,调整LDQ调度相应访存请求的优先级,其中,执行结果的关键度和相应访存请求的age,均与LDQ调度
相应访存请求的优先级呈正相关关系。
[0139] 可选的,结合执行结果的关键度,与相应访存请求的age,调整LDQ调度相应访存请求的优先级的原理,与前文结合访存指令的关键度与age,调整AGSQ调度访存指令的优先级
的原理类似,可相互参照;
[0140] 在一方面中,本发明实施例可将执行结果的关键度与相应访存请求的存在时长相加,从而确定LDQ调度相应访存请求的优先级,所确定的优先级的数值越高,则LDQ越优先调
度相应访存请求;
[0141] 在另一方面中,本发明实施例可将执行结果的关键度与相应访存请求的存在时长相乘,从而确定LDQ调度相应访存请求的优先级;
[0142] 在再一方面中,若访存请求的存在时长处于预定时长范围内,则访存指令相应的执行结果的关键度越高,LDQ调度相应访存请求的优先级越高,若访存请求的存在时长超过
预定时长范围,则访存请求的存在时长越长,则LDQ调度相应访存请求的优先级越高。
[0143] 可选的,如果访存结果在L1缓存的数据缓存中缺失,需要向下级缓存、甚至内存发送访存请求,则访存单元可输出访存请求;如图11所示,访存单元可在输出的访存请求中指
示相应优先级(所指示的优先级可与访存请求相应的访存指令的关键度呈正相关关系),以
便在下级缓存或内存中能够优先获取访存结果。
[0144] 作为本发明实施例公开内容的一种可选实现,本发明实施例还可提供获取访存指令的关键度的机制;可选的,图12示例性的示出了本发明实施例提供的处理器的再一架构
框图;需要说明的是,处理器也可以包括对理解本发明实施例公开内容不是必需的其他电
路(未示出);
[0145] 结合图11和图12所示,处理器还可以包括:关键度监测单元107;可选的,关键度监测单元107可以集成于处理器的处理器核内;显然,图12所示关键度监测单元107也可在图4
所示处理器结构中应用;
[0146] 在本发明实施例中,关键度监测单元107可连接执行单元104和重排序单元105,以在访存指令处于重排序单元105的队首至提交的期间,通过重排序单元和执行单元,监测与
访存指令相应的执行信息;从而根据所述执行信息,监测访存指令的关键度;
[0147] 重排序单元105是乱序执行指令时,保障指令顺序提交的逻辑电路单元,指令顺序进入重排序单元并顺序离开;可选的,在访存指令处于重排序单元的队首至提交的期间,关
键度监测单元可监测相应的时钟周期数,以及工作状态的执行单元个数;
[0148] 本发明的发明人发现:如果一条访存指令存在访存缺失(如L1缓存的数据缓存中缺失访存结果),则该访存指令处于在重排序单元队首的时间将较长;如果一条访存指令被
多条其他指令依赖,则该访存指令容易造成流水线停顿,那么该访存指令位于重排序单元
队首至提交期间,依赖该访存指令的其他指令的执行单元将处于等待访存结果的状态,这
些执行单元将处于闲置状态,也即处于工作状态的执行单元的个数将减少。
[0149] 基于发明人的上述发现,本发明实施例可进行如下设置:
[0150] 访存指令处于重排序单元队首至提交期间的时钟周期数,与访存指令的关键度呈正相关关系;即所述时钟周期数越大,则访存指令的关键度越高;
[0151] 访存指令处于重排序单元队首至提交期间,处于工作状态的执行单元个数,与访存指令的关键度呈负相关关系;即所述执行单元个数越小,则访存指令的关键度越高;
[0152] 基于上述设置,本发明实施例可根据访存指令处于重排序单元队首至提交期间的时钟周期数,及工作状态的执行单元个数,监测访存指令的关键度。
[0153] 可选的,本发明实施例可通过一定的映射转化规则,将所述时钟周期数与执行单元个数转换为具体的关键度;
[0154] 可选的,本发明实施例可设置时钟周期数与关键度的映射关系,并且该映射关系指示时钟周期数与关键度呈正相关关系;例如,可将10‑50的时钟周期映射为关键度3,将5‑
9的时钟周期数映射为关键度2,将1‑4的时钟周期数映射为关键度1等;显然,此处举例仅是
示例说明,时钟周期数与关键度的映射关系的具体形式可根据实际情况设定;
[0155] 从而,本发明实施例可根据时钟周期数与关键度的映射关系,确定访存指令处于重排序单元队首至提交期间的时钟周期数相应的第一关键度。
[0156] 同时,本发明实施例可设置工作状态的执行单元个数与关键度的映射关系,并且该映射关系指示工作状态的执行单元个数与关键度呈负相关关系;例如,可将10‑50的执行
单元个数映射为关键度1,将5‑9的执行单元个数映射为关键度2,将1‑4的执行单元个数映
射为关键度3等;显然,此处举例仅是示例说明,工作状态的执行单元个数与关键度的映射
关系的具体形式可根据实际情况设定;
[0157] 从而,本发明实施例可根据工作状态的执行单元个数与关键度的映射关系,确定访存指令处于重排序单元队首至提交期间,工作状态的执行单元个数相应的第二关键度。
[0158] 进而,在确定访存指令处于重排序单元队首至提交期间的时钟周期数相应的第一关键度,以及访存指令处于重排序单元队首至提交期间,工作状态的执行单元个数相应的
第二关键度后,本发明实施例可结合第一关键度和第二关键度,得到监测的访存指令的关
键度;
[0159] 例如,本发明实施例可将第一关键度和第二关键度相加,也可以将第一关键度和第二关键度相乘等,实现确定监测的访存指令的关键度;第一关键度和第二关键度的结合
方式可根据实际情况设定,本发明实施例并不局限。
[0160] 作为一种可选示例,图13示出了关键度监测单元107监测执行单元104和重排序单元105的一种可选示意,如图13所示,关键度监测单元107可以至少包括:第一计数器1071和
第二计数器1072;第一计数器1071可监测重排序单元105,以监测访存指令处于重排序单元
队首至提交期间的时钟周期数;第二计数器1072可监测执行单元104,以监测访存指令处于
重排序单元队首至提交期间,处于工作状态的执行单元个数;在执行引擎中可以具有多个
用于指令执行的执行单元。
[0161] 上述示出了同时监测访存指令处于重排序单元队首至提交期间的时钟周期数,及工作状态的执行单元个数的方式;作为一种替代实现,本发明实施例也可仅监测访存指令
处于重排序单元队首至提交期间的时钟周期数,或,仅监测访存指令处于重排序单元队首
至提交期间,工作状态的执行单元个数,从而实现监测访存指令的关键度。
[0162] 作为本发明实施例公开内容的一种可选实现,进一步如图12所示,在关键度监测单元监测访存指令的关键度后,关键度监测单元可向缓存发送更新请求,以将监测的访存
指令的关键度馈送给缓存,从而缓存可根据监测的访存指令的关键度,更新缓存中存储的
相应访存指令的关键度。
[0163] 在一种可选实现中,缓存可基于监测的访存指令的关键度,覆盖缓存中存储的相应访存指令的关键度;
[0164] 在另一种可选实现中,本发明实施例可设置更新条件,缓存可在满足更新条件时,更新缓存中存储的相应访存指令的关键度;可选的,可以是L1缓存的指令缓存进行关键度
的更新。
[0165] 可选的,在一方面,本发明实施例可设置关键度阈值,且设置更新条件一:若监测的访存指令的关键度大于,缓存中存储的相应访存指令的关键度,且差值超过关键度阈值,
则增加缓存中存储的相应访存指令的关键度;
[0166] 即对于同一访存指令,如果监测得到的关键度大于缓存中存储的关键度,则可增加缓存中存储的该访存指令的访存关键;
[0167] 可选的,增加关键度的方式可以有多种,例如在缓存中存储的相应访存指令的关键度的基础上增加设定数值,或者增加设定比例的数值等,具体形式并不受限。
[0168] 可选的,在另一方面,本发明实施例可设置更新条件二:若监测的访存指令的关键度小于,缓存中存储的相应访存指令的关键度,且差值超过关键度阈值,则减小缓存中存储
的相应访存指令的关键度;
[0169] 即对于同一访存指令,如果监测得到的关键度小于缓存中存储的关键度,则可减小缓存中存储的该访存指令的访存关键;
[0170] 可选的,减小关键度的方式可以有多种,例如在缓存中存储的相应访存指令的关键度的基础上减小设定数值,或者减小设定比例的数值等,具体形式并不受限。
[0171] 可选的,在再一方面,缓存在获取关键度监测单元馈送的访存指令的关键度后,可在不满足更新条件一和/或更新条件二时,不更新缓存中存储的相应访存指令的关键度。
[0172] 上述更新机制中,通过设置关键度阈值,可在监测的访存指令的关键度,与缓存中存储的相应访存指令的关键度相差不大时,避免频繁的更新,从而合理的均衡处理器功耗。
[0173] 可选的,图14示出了本发明实施例提供的更新缓存中存储的关键度的方法流程,参照图14,该方法可由缓存执行,如具体可由L1缓存的指令缓存执行,该方法流程可以包
括:
[0174] 步骤S30、获取更新请求,所述更新请求至少包括:监测的访存指令的关键度,及访存指令的物理地址。
[0175] 可选的,现代处理器中通常具有特定单元,以存储所有执行中的指令的物理地址,本发明实施例可在更新请求中携带访存指令的物理地址。
[0176] 步骤S31、查找所述物理地址是否在指令缓存命中预测单元中命中,若否,执行步骤S32,若是,执行步骤S33。
[0177] 可选的,指令缓存命中预测单元可以是指令缓存中可选的逻辑电路单元(指令缓存命中预测单元也可能是位于指令缓存外),指令缓存命中预测单元可用于在取指时预测
指令是否在指令缓存中命中;在预测指令未在指令缓存中命中时,提前从指令缓存的下级
缓存读取指令到指令缓存(如提前从L2、L3缓存的指令缓存块中读取指令到指令缓存),实
现指令的预取;本发明实施例可使用指令缓存命中预测单元,来过滤物理地址不可能在指
令缓存中命中的更新请求;
[0178] 可选的,指令缓存命中预测单元可以是micro Tag(微标签)的存储结构,通过micro Tag可存储指令缓存中部分指令缓存块的Tag信息;
[0179] 作为一种可选实现,可利用更新请求中的物理地址查找micro Tag;如果命中micro Tag,则可将更新请求进一步发往指令缓存;如果未命中micro Tag,则放弃更新。
[0180] 步骤S32、放弃更新。
[0181] 步骤S33、将更新请求发往指令缓存。
[0182] 可选的,步骤S30至步骤S33可由指令缓存命中预测单元执行,指令缓存命中预测单元执行可以是集成于指令缓存中的逻辑电路单元,也可以是设置于指令缓存外的逻辑电
路单元。
[0183] 步骤S34、查找所述物理地址是否在指令缓存的指令缓存块中命中,若否,执行步骤S32,若是,执行步骤S35。
[0184] 步骤S34可由指令缓存执行,当然也可由处理器中设置的相应逻辑实现;可选的,本发明实施例可利用更新请求中的物理地址,查找指令缓存的指令缓存块的Tag;如果命中
Tag,则可确定所述物理地址在指令缓存的指令缓存块中命中;如果未命中Tag,则放弃更
新。
[0185] 需要说明的是,上述指令缓存命中预测单元执行的流程可以是可选的,本发明实施例也可由指令缓存获取更新请求,并从步骤S34开始执行。
[0186] 步骤S35、根据监测的访存指令的关键度,更新命中的指令缓存块存储的相应访存指令的关键度。
[0187] 可选的,在访存指令的物理地址命中指令缓存中的指令缓存块后,本发明实施例可进一步根据所述物理地址,确定命中的指令缓存块中与监测的访存指令相应的访存指
令,从而可根据监测的访存指令的关键度,更新命中的指令缓存块中存储的相应访存指令
的关键度;
[0188] 可选的,具体的更新方式可参照前文相应部分描述,此处不再累赘;例如,若监测的访存指令的关键度大于,存储的相应访存指令的关键度,且差值超过关键度阈值,则增加
存储的相应访存指令的关键度;若监测的访存指令的关键度小于,存储的相应访存指令的
关键度,且差值超过关键度阈值,则减小存储的相应访存指令的关键度;可选的,在不满足
上述更新条件时,本发明实施例可不更新缓存中存储的相应访存指令的关键度。
[0189] 需要进一步说明的是,如果命中的指令缓存块中未存储相应访存指令的关键度(即命中的指令缓存块中与监测的访存指令相应的关键度为空),则可在命中的指令缓存块
中新记录相应访存指令的关键度;例如,以监测的访存指令的关键度覆盖,命中的指令缓存
块中已存储的空记录,或者,已存储的关键度最低的记录。
[0190] 本发明实施例中,访存指令的关键度可以被监测并存储,以便后续使用;从而本发明实施例可根据访存指令的关键度,调整访存指令的执行优先级,使高关键度的访存指令
更快得到执行,减少流水线的阻塞,提高处理器的处理效率。
[0191] 上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可
认为是本发明实施例披露、公开的实施例方案。另外,上文一些步骤和说明虽然描述了执行
这些步骤和说明的逻辑电路单元,但这些描述均是可选示例,本发明实施例完全可以在处
理器中设计相应的逻辑来执行这些步骤和说明,而不限于由上文描述的逻辑电路单元来执
行这些步骤和说明。
[0192] 下面对本发明实施例提供的处理器的一种可选逻辑实现进行说明,下文描述内容可与上文描述内容相互对应参照。下面描述的处理器逻辑可以是指处理器的逻辑电路单
元。
[0193] 从处理器核的逻辑设计来看,作为一种可选实现,本发明实施例提供的一种处理器可以包括至少一个处理器核,结合上文说明,所述处理器核可至少包括如下逻辑:
[0194] 缓存,用于从缓存读取访存指令,并从缓存获取所述访存指令的关键度;其中,访存指令的关键度与访存指令导致的流水线停顿时间呈正相关关系,所述缓存的指令缓存块
存储有访存指令的关键度;
[0195] 执行单元,用于在执行所述访存指令时,根据所述访存指令的关键度,调整所述访存指令的执行优先级,其中,访存指令的关键度与访存指令的执行优先级呈正相关关系;输
出所述访存指令相应的执行结果;
[0196] 访存单元,用于根据所述执行结果执行访存。
[0197] 可选的,所述缓存包括:一级缓存的指令缓存,和层级低于所述一级缓存的下级缓存;
[0198] 所述指令缓存的指令缓存块设置有存储关键度的关键度存储空间;
[0199] 所述下级缓存的指令缓存块的ECC空间存储有关键度;所述下级缓存的指令缓存块使用奇偶校验保护。
[0200] 可选的,执行单元包括逻辑,以实现:
[0201] 根据访存指令的关键度,调整AGSQ调度访存指令的优先级,其中,访存指令的关键度与AGSQ调度访存指令的优先级呈正相关关系。
[0202] 可选的,执行单元包括逻辑,以实现:
[0203] 结合访存指令的关键度与访存指令在AGSQ中的存在时长,调整AGSQ调度访存指令的优先级;其中,访存指令的关键度和存在时长,均与AGSQ调度访存指令的优先级呈正相关
关系。
[0204] 可选的,一条访存指令的关键度的存储格式包括:位置信息及关键度数值;其中,位置信息用于指示访存指令在所位于的指令缓存块中的位置。
[0205] 可选的,缓存包括逻辑,以实现:
[0206] 若取指地址命中指令缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述访存指令相应的关键度;
[0207] 若取指地址未命中指令缓存的指令缓存块,但命中下级缓存的指令缓存块,在从命中的指令缓存块读取所述取指地址相应的访存指令时,从命中的指令缓存块获取与所述
访存指令相应的关键度。
[0208] 可选的,访存指令的关键度与访存指令所位于的指令缓存块相关联;缓存还包括逻辑,以实现:
[0209] 当指令缓存块在指令缓存和所述下级缓存间搬移时,使搬移的指令缓存块关联的关键度随同指令缓存块搬移。
[0210] 可选的,所述访存指令相应的执行结果携带有相应的关键度;访存单元包括逻辑,以实现:
[0211] 执行访存时,根据所述执行结果的关键度,调整访存优先级。
[0212] 可选的,处理器核还包括如下逻辑:
[0213] 关键度监测单元,用于在访存指令处于重排序单元的队首至提交的期间,通过重排序单元和执行单元监测与访存指令相应的执行信息;根据所述执行信息,监测访存指令
的关键度。
[0214] 可选的,关键度监测单元包括逻辑,以实现:
[0215] 监测访存指令处于重排序单元的队首至提交的期间相应的时钟周期数,以及工作状态的执行单元个数;
[0216] 根据所述时钟周期数与所述执行单元个数,监测访存指令的关键度;其中,所述时钟周期数与访存指令的关键度呈正相关关系,所述执行单元个数与访存指令的关键度呈负
相关关系。
[0217] 可选的,关键度监测单元监测所述时钟周期数的逻辑可以是第一计数器,关键度监测单元监测所述的执行单元个数的逻辑可以是第二计数器;示例的,关键度监测单元的
第一计数器可监测重排序单元,以监测访存指令处于重排序单元队首至提交期间的时钟周
期数;关键度监测单元的第二计数器可监测执行单元,以监测访存指令处于重排序单元队
首至提交期间,处于工作状态的执行单元个数。
[0218] 可选的,关键度监测单元还包括逻辑,以实现:
[0219] 构造更新请求并输出;所述更新请求至少包括:监测的访存指令的关键度,及访存指令的物理地址;
[0220] 所述缓存还包括逻辑,以实现:
[0221] 查找所述物理地址是否在指令缓存的指令缓存块中命中;
[0222] 若所述物理地址在所述指令缓存的指令缓存块中命中,根据监测的访存指令的关键度,更新所述指令缓存块存储的相应访存指令的关键度。
[0223] 可选的,所述缓存包括逻辑,以实现:
[0224] 若监测的访存指令的关键度大于,存储的相应访存指令的关键度,且差值超过关键度阈值,则增加存储的相应访存指令的关键度;
[0225] 若监测的访存指令的关键度小于,存储的相应访存指令的关键度,且差值超过关键度阈值,则减小存储的相应访存指令的关键度;
[0226] 若命中的指令缓存块中未存储相应访存指令的关键度,以监测的访存指令的关键度覆盖,命中的指令缓存块中已存储的空记录,或者,已存储的关键度最低的记录。
[0227] 可选的,所述关键度监测单元包括逻辑,以实现:
[0228] 将所述更新请求发往指令缓存命中预测单元;所述指令缓存命中预测单元用于预取指令;
[0229] 所述处理器核还包括如下逻辑:
[0230] 指令缓存命中预测单元,用于如果所述物理地址在指令缓存命中预测单元中命中,将所述更新请求发往指令缓存。
[0231] 上述描述的逻辑电路单元的细化逻辑实现,可参照前文部分的相应说明,说明书中关联的各部分均可对应参照,此处不再赘述。上文描述的各实施例方案介绍的各可选方
式可在不冲突的情况下相互结合、交叉引用,这些均可认为是本发明实施例披露、公开的实
施例方案。
[0232] 本发明实施例提供的处理器可以包括至少一个处理器核,所述处理器核至少可以包括:实现本发明实施例提供的访存指令处理方法的逻辑;处理器核的逻辑的具体形式并
不限于前文描述,任意可实现本发明实施例提供的访存指令处理方法的逻辑,均是在本发
明的保护范围内。
[0233] 虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利
要求所限定的范围为准。