首页> 中国专利> 取决于模式而可动态配置以选择一或多个组的多模式组相联高速缓存存储器

取决于模式而可动态配置以选择一或多个组的多模式组相联高速缓存存储器

摘要

一种高速缓存存储器存储了2^J字节的高速缓存线并且包含了2^N组的数组,每一组含有每个为X比特的多个卷标,一个输入端接收一个为Q比特的内存地址,内存地址[(Q-1):0],其具有卷标内存地址[(Q-1):(Q-X)]以及索引内存地址[(Q-X-1):J]。Q是至少为(N+J+X-1)的整数。在第一模式之下,组选取逻辑使用索引以及卷标的最低有效比特选取一个组,比较逻辑把卷标中除了最低有效比特之外的所有比特对照于所选取组中的每一卷标中除了最低有效比特之外的所有比特,并且若对照结果为匹配则标示为命中,若反之,则分配逻辑分配至所选取的组。在第二模式之下,组选取逻辑使用索引选取二个组,比较逻辑把卷标对照于所选取的二组中的每一个卷标,并且若对照结果为匹配则标示为命中,若反之,则分配至所选取的二组中的其中一组。

著录项

  • 公开/公告号CN105701033A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

  • 申请/专利权人 上海兆芯集成电路有限公司;

    申请/专利号CN201510796862.4

  • 发明设计人 道格拉斯·R·瑞德;

    申请日2015-11-18

  • 分类号G06F12/0862;G06F12/0893;

  • 代理机构上海波拓知识产权代理有限公司;

  • 代理人杨波

  • 地址 201203 上海市浦东新区张江高科技园区金科路2537号301室

  • 入库时间 2023-12-18 15:45:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-27

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F12/0862 专利号:ZL2015107968624 变更事项:专利权人 变更前:上海兆芯集成电路有限公司 变更后:上海兆芯集成电路股份有限公司 变更事项:地址 变更前:201203 上海市浦东新区张江高科技园区金科路2537号301室 变更后:201203 上海市浦东新区张江高科技园区金科路2537号301室

    专利权人的姓名或者名称、地址的变更

  • 2019-03-15

    授权

    授权

  • 2016-07-20

    实质审查的生效 IPC(主分类):G06F12/0862 申请日:20151118

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

技术领域

本发明是关于一种高速缓存存储器,特别是关于取决于模式而可动 态配置以选择一或多个组的多模式组相联高速缓存存储器。

背景技术

现今的处理器被要求执行的程序是处理具有广泛不同特性的数据 组(set)并且是以广泛而不同的方式来存取数据。数据组的特性以及存取 模式影响着处理器的高速缓存存储器的执行效率。执行效率主要是依照 命中比(hitratio)来判断。

发明内容

本发明的一个目的在于提供一种高速缓存存储器,其用于存储2^J字节 的高速缓存线,J为大于3的整数,所述高速缓存存储器包括:一数组,所述 数组为2^N组且每一组具有多个卷标,每一卷标为X比特,其中N以及X 都是大于5的整数;一输入端,所述输入端接收Q比特的内存地址,所述内 存地址[(Q-1):0]具有:卷标内存地址[(Q-1):(Q-X)];以及一索引内存地址 [(Q-X-1):J];其中,当操作在一第一模式之下:一组选取逻辑使用所述索引以 及所述卷标的最低有效比特选取所述数组的其中一组;一比较逻辑将卷标中 除了最低有效比特之外的所有比特对照于所选取的组中的每一卷标中除了最 低有效比特之外的所有比特,并在对照结果为匹配时标示为命中;以及若对 照结果为不匹配则分配逻辑分配至所选取的组;以及当操作在一第二模式之 下:所述组选取逻辑使用所述索引选取数组的其中二组;所述比较逻辑将所 述卷标对照于所选取的二组中的每一卷标,并在对照结果为匹配时标示为命 中;以及若对照结果为不匹配则所述分配逻辑分配至所选取的二组的其中一 组。

本发明的另一个目的在于提供一种高速缓存存储器的操作方法,用于存 储2^J字节的高速缓存线,J是大于3的整数,所述高速缓存存储器具有2^N 组的一数组,每一组具有多个卷标,每一卷标为X比特,N以及X都是大于 5的整数,所述高速缓存存储器的操作方法包括:接收一Q比特内存地址 [(Q-1):0],其包含:一卷标内存地址[(Q-1):(Q-X)];以及一索引内存地址 [(Q-X-1):J];其中Q是至少为(N+J+X-1)的整数;以及当操作在一第一模式之 下:使用所述索引以及所述卷标的最低有效比特选取所述数组的其中一组; 将所述卷标除了最低有效比特之外的所有比特对照于所选取的一组中的每一 卷标除了最低有效比特之外的所有比特并且在对照结果为匹配的时候标示为 命中;以及在对照结果为不匹配的时候,分配至所选取的一组。

承上述,当操作在一第二模式之下:使用所述索引选取所述数组的其中 二组;将所述卷标对照于所选取的二组中的每一卷标并且在对照结果为匹配 的时候标示为命中;以及在对照结果为不匹配的时候,分配至所选取的二组 的其中之一。

本发明的又一个目的在于提供一种处理器,其包括:一高速缓存存储器, 用以存储2^J字节的高速缓存线,J为大于3的整数,所述高速缓存存储器包 括:一数组,所述数组为2^N组且每一组具有多个卷标,每一卷标为X比特, 其中N以及X都是大于5的整数;一输入端,所述输入端接收Q比特的内存 地址,所述内存地址[(Q-1):0]具有:一卷标内存地址[(Q-1):(Q-X)];以及一索 引内存地址[(Q-X-1):J];其中,当操作在一第一模式之下:一组选取逻辑使用 所述索引以及所述卷标的最低有效比特选取所述数组的其中一组;一比较逻 辑将卷标中除了最低有效比特之外的所有比特对照于所选取的组中的每一卷 标中除了最低有效比特之外的所有比特,并在对照结果为匹配时标示为命中; 以及若对照结果为不匹配则分配逻辑分配至所选取的组;以及当操作在一第 二模式之下:所述组选取逻辑使用所述索引选取数组的其中二组;所述比较 逻辑将所述卷标对照于所选取的二组中的每一卷标,并在对照结果为匹配时 标示为命中;以及若对照结果为不匹配则所述分配逻辑分配至所选取的二组 的其中一组。

附图说明

图1所示为高速缓存存储器的方块图。

图2所示为图1中的高速缓存存储器操作在一般模式之下的方块图。

图3所示为图1中的高速缓存存储器操作在一般模式之下的操作流程图。

图4所示为图1中的高速缓存存储器操作在大量模式之下的方块图

图5所示为图1中的高速缓存存储器102操作在大量模式之下的操作流 程图。

图6所示为图1中的高速缓存存储器102操作被指示转换离开大量模式 的操作流程图。

图7所示为图1中的高速缓存存储器102操作在少量模式下以做为直接 映像高速缓存的方块图。

图8所示为图1中的高速缓存存储器102操作在少量直接映像模式之下 的操作流程图。

图9所示为图1中的高速缓存存储器操作在少量模式之下以做为8路组 相关高速缓存的方块图。

图10所示为图1中的高速缓存存储器102操作在少量8路模式之下的操 作流程图。

图11所示为图1中的高速缓存存储器102更详细的方块图。

图12A以及图12B统称为图12,图12所示为所示为图11中的高速缓存 存储器102的区域致能逻辑方块图。

图13所示为图11中的高速缓存存储器102的命中产生逻辑的方块图。

图14A所示为包含了一个具有图1中的高速缓存存储器102的处理器的 系统的操作流程图。

图14B所示为包含了图1中的高速缓存存储器102的处理器的部件方块 图。

图14C所示为包含了图1中的高速缓存存储器102的图14B中的处理器 的操作流程图。

图15所示为包含了图1中的高速缓存存储器102的处理器的系统的操作 流程图。

图16所示为高速缓存存储器的方块图。

图17所示为逻辑方块图,其是用来选取高速缓存存储器102根据图16 中的卷标以及分配模式所分配至的路的子组的逻辑方块图。

图18所示为图16中的高速缓存存储器的操作流程图。

图19所示为包含了图16中的高速缓存存储器的处理器的系统的操作流 程图。

图20所示为产生高速缓存存储器模式配置给程序以及程序时程的操作 流程图。

图21所示为内存存取图表以及从此内存存取图表中萃取出的数据。

图22所示为程序的时程分析的操作流程图。

图23所示为用来给处理器可配置特性决定出一个较佳配置的蛮力(brute force)法的操作流程图。

图24所示为处理器的方块图。

主要组件标号说明

102高速缓存存储器

104内存地址

106、112卷标

108模式

114索引

116偏移

302、304、306、312、314流程

502、504、506、512、514、516流程

602、604流程

802、804、806、808、812、814流程

1002、1004、1006、1008、1012、1013、1014、1016流程

1102A卷标信道A

1104A接口A

1102B卷标信道B

1104B接口B

1106-0区域0

1106-1区域1

1106-2区域2

1106-3区域3

1200区域致能逻辑

1200A接口A区域致能逻辑

1209大量模式

104-A内存地址

1204-0、1208-0、1204-1、1208-2非门

1202-0、1202-1、1202-2、1202-3或门

1206-0、1206-1、1206-2、1206-3与门

1212-0A接口A区域0致能提示

1212-1A接口A区域1致能提示

1212-2A接口A区域2致能提示

1212-3A接口A区域3致能提示

1200B接口B区域致能逻辑

1212-0B接口B区域0致能提示

1212-1B接口B区域1致能提示

1212-2B接口B区域2致能提示

1212-3B接口B区域3致能提示

1214-0、1214-1、1214-2、1214-3或门

1216-0区域0致能提示

1216-1区域1致能提示

1216-2区域2致能提示

1216-3区域3致能提示

1300命中产生逻辑

1301组J路0分配

1303组J路0重新分配

1304比较器

1302有效比特

1306与门

1308-J0~1308-J15组J路0~15命中

1314-J组J命中

1308-K0~1308-K15组K路0~15命中

1314-K组J命中

1316或门

1318大量模式命中

1322多任务器

1324命中

1402、1404流程

1412时程辨识码

1414时程侦测器

1416模式更新单元

1418来自于装置驱动程序的新模式信息

1422、1424、1426流程

1502、1504流程

1602高速缓存存储器

1608分配模式

1606、1612卷标

1614索引

1616偏移

1702逻辑

19、N比特数

1736多任务器

1732组合逻辑

1738多任务器1736所输出的N比特

1734路的子组

1802、1804、1806、1808、1812、1814、1816流程

1902、1904、1906流程

3402、3404、3406流程

3602、3604、3606、3608、3612、3614流程

3702、3704、3706、3706、3712、3714、3716流程

3900处理器

3922指令高速缓存

3923指令译码器

3924指令排程器以及发送器

3926执行单元

3928内存子系统

具体实施方式

现今的处理器被要求执行的程序是处理具有广泛不同特性的数据组(set) 并且是以广泛而不同的方式来存取数据。数据组的特性以及存取模式影响着 处理器的高速缓存存储器的执行效率。执行效率主要是依照命中比(hitratio) 来判断。

除了容量之外,高速缓存存储器的相联性会大幅影响其执行效率。高速 缓存存储器的相联性指的是高速缓存存储器可以配置高速缓存线(cacheline) 的可能位置或是项目(entry),高速缓存线是依据存储器的地址而被配置。高 速缓存线能够配置或是分配的可能位置越多,高速缓存存储器的相联性就越 高。某些程序适合具有较高的相联性的高速缓存存储器而某些程序适合具有 较低的相联性的高速缓存存储器。

以下的实施方式所叙述的高速缓存存储器可以在处理器的运作期间被动 态地配置以将其相联性变更为高于其一般模式的相联性及/或变更为小于其 一般的相联性。

请参阅图1,图1绘示了一个高速缓存存储器102。高速缓存存储器102 从一个输入端接收了一个内存地址(memoryaddress,MA)104而从另一个输 入端接收了一个模式(mode)108。模式108具体指示了高速缓存存储器102 是否要用在「一般」模式、「大量」模式或是「少量」模式下运作。所述的各 种模式将于后面详细叙述。

内存地址104被分为三个部分,每一个部分具有多个比特(bit):卷标(tag) 112、索引(index)114以及偏移(offset)116。偏移116指出移入选定的缓存线 的一个偏移字节。卷标112以及索引114的用途将在后文中详细叙述。为了 方便描述,图1中举例了一个大小为36个比特且将36个比特分为卷标 112=MA[35:16]、索引114=MA[15:6]以及偏移116=MA[5:0]的内存地址104。 然而,要特别注意的是,高速缓存存储器102的相联性的动态变更性,也就 是在一般模式、大量模式以及少量模式之间的转换(transition),在高速缓存存 储器被执行时高速缓存存储器可接收一个具有不同数量比特的内存地址104 且在内存地址104的卷标112、索引114以及偏移116中可为不同数量的比特。 偏移116中的比特数量具体指的是缓存线的大小(例如:64个字节),索引114 则根据模式108而从高速缓存存储器102中选出一或两组,如后文所述。

高速缓存存储器102被设计为由多个路(way)以及多个组相乘。为了方便 叙述,例如图1中所示的高速缓存存储器102具有2048个组以及16个路。 然而,需要特别注意的是,在此描述的动态相联性变更性可在具有不同组数 与不同路数的高速缓存存储器上执行。每一组/路的组合可识别出存储有缓存 线的高速缓存存储器102的项目。每个项目包括用来存储缓存线数据的存储 元(storage),也包括用来存储缓存线状态(例如:MESI状态)以及缓存线卷标 106的存储元。卷标106以及缓存线所在组数的组合具体指出了缓存线的内 存地址。在图1的实施例中,卷标106相当于内存地址104的卷标112的大 小而为20比特。较佳的情况,高速缓存存储器102包括多个独立的存储器数 组以存储缓存线数据、卷标106以及置换信息。

在以下更加详细的描述中,在大量模式的查找中索引114是用来选出高 速缓存存储器102中的两个不同组,内存地址104的完整卷标112被用来与 所选出的两个组的每一路的完整卷标106来对照以侦测是否命中。而索引114 以及卷标112的最低有效比特(leastsignificantbit,LSB)在一般模式以及少量 模式中被用来在高速缓存存储器102当中选出一个组,内存地址104的卷标 112除了最低有效比特之外的比特都被用来与所选出组的每一路的卷标106 除了最低有效比特之外的比特对照以侦测是否命中。当操作于大量模式的时 候,这种做法把有效相联性加倍且把高速缓存存储器102的路数量减半。反 过来说,当操作于少量模式的时候,基于卷标112的一个或多个较低比特, 高速缓存存储器102将缓存线可被配置的路限制于所有路的子组(例如:由16 而为8、为4、为2或为1),而有效相联性也减少了用来限制路的子组的卷标 112的比特数量的二倍。为了从大量模式中转换出来,写回(writeback)与无效 (invalidate)操作必须于某些缓存线执行,如后所述。然而,相较于为了让某些 编码串流(codestream)操作于大量模式所能带来的好处,写回与无效操作所带 来的坏处可以被容忍。转换至少量模式或从少量模式转换出来不需要写回与 无效操作。

请参阅图2,图2所示为图1的高速缓存存储器102当操作于一般模式 之下的方块图。更具体来说,输入的模式108具体指示一个指向于一般模式 的值。在一般模式之下,高速缓存存储器102选取出一个单一的组,在藉由 索引114所选取出的组中,把每一路的项目卷标106除了最低有效比特之外 的所有比特与内存地址104的卷标112除了最低有效比特之外的所有比特做 对照,若未命中则分配到所选取出的组的任一路之中,在后图3中有更加详 细的描述。以图2为例子,在一般模式之下,高速缓存存储器102操作如一 个2048组乘以16路的相联性高速缓存。

请参阅图3,图3所示为图1的高速缓存存储器102操作于一般模式之 下的流程图。流程起始于方块302。

在方块302中,当输入的模式108指向一般模式的时候,高速缓存存储 器102接收来自于处理核心的加载请求。加载请求包含内存地址104。流程 接着进行至方块304。

在方块304中,高速缓存存储器102使用与索引114相连的卷标112的 最低有效比特,以图1为例子来说的话就是MA[16:6],来选取出一个单一的 组,如图3中的组J。流程接着进行至方块306。

在方块306中,以所选取出的组J的所有16路的每一项目来说,高速缓 存存储器102把内存地址104的卷标112除了最低有效比特之外的所有比特 对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照也一并 确认以检视该项目是否有效。流程接着进行至方块308。

在方块308中,高速缓存存储器102判断方块306所执行的对照是否产 生有效的匹配。若判断结果为是,流程接着进行至方块312,若判断结果为 否,则流程接着进行至方块314。

在方块312中,高速缓存存储器102指向于命中。流程结束于方块312。

在方块314中,高速缓存存储器102分配至所选取的组J的一个项目。 在较佳的情况下,高速缓存存储器102分配至组J的一路中的一个项目,该 项目是最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的,然而也可以使 用其它的置换算法,例如随机或循环式的。流程接着进行至方块314。

请参阅图4,图4所示为图1的高速缓存存储器102操作于大量模式之 下的方块图。更具体来说,输入的模式108具体指示一个指向大量模式的值。 在大量模式之下,高速缓存存储器102选取出两个组,把藉由索引114所选 取出的组中的每一路的项目卷标106对照于内存地址104的卷标102,若未 命中则分配至所选取的两个组的任一个的任一路之中,在后图5中有更加详 细的描述。如此一来有效地把路的数量加倍并把高速缓存存储器102的组的 数量减半。以图4为例子,在大量模式之下,高速缓存存储器102操作如一 个1024组乘以32路的组相联性高速缓存。

请参阅图5,图5所示为图1的高速缓存存储器102操作在大量模式之 下的流程图。流程始于方块502。

在方块502中,当输入的模式108指向大量模式的时候,高速缓存存储 器102接收来自于处理核心的加载请求。加载请求包含一个内存地址104。 流程接着进行至方块504。

在方块504中,高速缓存存储器102选取出两个组,如图5所示的组J 以及组K。组J是用相连于卷标112的二进制的0所选出,以图1为例子来 说的话就是相连于MA[15:6]的二进制的0。组K是用相连于卷标112的二进 制的1所选出,以图1为例子来说的话就是相连于MA[15:6]的二进制的1。 流程接着进行至方块506。

在方块506中,以被选取出的组K以及组J的所有32路的每一项目来说, 高速缓存存储器102把内存地址104的卷标102对照于项目卷标106。所述 的对照一并确认以检视该项目是否有效。流程接着进行至判断方块508。

在判断方块508中,高速缓存存储器102判断是否方块506所执行的对 照产生有效的匹配。若判断结果为是,流程接着进行至方块512,否若判断 结果为否,则流程接着进行至方块514。

在方块512中,高速缓存存储器102指向于命中。流程结束于方块512。

在方块514中,高速缓存存储器102由组J以及组K中选取出一个来做 为一个置换组。在一个实施例中,高速缓存存储器102基于内存地址104的 被选取比特的散列(hash)至一个单一比特来选取出置换组以至于若所述的散 列产生的是二进制的0则选出组J且若所述的散列产生的是二进制的1则选 出组K,一般用以在伪随机方式(pseudo-randomfashion)选取置换组。在其它 实施例中,高速缓存存储器102使用每一个组所储存的置换信息中的额外一 个或是更多的比特选取出的置换组,该置换信息是除了例如用来选取组的最 久未存取(LRU)的路的储存信息。举例来说,一个额外的比特可指出组J或组 K曾是最久未存取(LRU)的。流程接着进行至方块516。

在方块516中,高速缓存存储器102分配到置换组的一个项目。在较佳 的情况下,高速缓存存储器根据最久未存取(LRU)或是拟为最久未存取 (pseudo-LRU)的配置方案来102分配到置换组的一个项目,然而也可以是运 用其它的置换算法,例如随机或循环式。流程结束于方块516。

请参阅图6,图6所示为图1的高速缓存存储器102被指示由大量模式 之中转换出来的操作流程图。流程起始于方块602。

在方块602中,高速缓存存储器102被指示由大量模式之中转换出来, 例如,模式108从大量模式中转换到一般模式或是少量模式。流程接着进行 至方块604。

在方块604中,高速缓存存储器102通过搜寻高速缓存存储器102的每 个组(亦即:每个组数),以及组中的每个项目,把卷标106的最低有效比特与 组数的最高有效比特做对照。若对照后发现未匹配,则高速缓存存储器102 将该项目无效。然而,在无效该项目之前,若缓存线的状态为脏(dirty),也就 是被更改过,则高速缓存存储器102把缓存线的资料写回至内存。上述做法 是为了维持高速缓存存储器102的一致性。流程结束于方块604。

运行在大量模式下的潜在风险是可能比运行在非大量模式下要消耗更多 的电力,因为必须比较两组的卷标。然而,某些用户在某些系统中愿意以更 多的电力消耗来换取更好的缓存效能。除此之外,在多核心处理器中,若核 心未全数运行,则多余的卷标数组存取(例如:在图11实施例中的区域(bank) 存取)是可被接受的,因为高速缓存存储器102可以是被设计为支持全核心存 取高速缓存存储器102的需求。

请参阅图7,图7所示为图1的高速缓存存储器102用于操作在少量模 式之下来做为直接映像(direct-mapped)高速缓存的方块图。更具体来说,输入 的模式108具体指出一个指向于少量直接映像模式的值。在少量模式之下, 高速缓存存储器102选取一个单一的组,把藉由索引114所选取出的组中的 每一路的项目卷标106除了最低有效比特之外的所有比特对照于内存地址 104的卷标112除了最低有效比特之外的所有比特,类似于一般模式,然而, 在少量直接映像模式之下,若未命中则高速缓存存储器102分配至所选取组 的唯一一路。此一路是通过内存地址104中被预先决定的比特来指定。在较 佳的情况下,被预先决定的比特是卷标112的下一个最低有效的log2N个比 特,N是高速缓存存储器102的路数。也就是说,被预先决定的比特是卷标 112中除了最低有效比特外最低有效的log2N个比特,以图1为例子的话就是 MA[20:17],后图8会有更详细的叙述。在图7的例子中,在少量直接映像模 式之下,高速缓存存储器102操作如同一个32768组的直接映像高速缓存。

请参阅图8,图8所示为图1的高速缓存存储器102用以操作在少量直 接映像模式下的流程图。流程起始于方块802。

在方块802中,当输入的模式108指向于少量直接映像模式的时候,高 速缓存存储器102接收来自于处理核心的加载请求。加载请求包含了一个内 存地址104。流程接着进行至方块804。

在方块804中,高速缓存存储器102使用相连于索引114的卷标112的 最低有效比特,以图1为例子的话就是MA[16:6],选取出一个单一的组,如 图8的组J。流程接着进行至方块806。

在方块806中,对所选取的组J的全部16路的每个项目,高速缓存存储 器102把内存地址104的卷标112除了最低有效比特之外的所有比特对照于 项目卷标106除了最低有效比特之外的所有比特。所述的对照操作一并确认 以检视项目是否为有效。流程接着进行至方块808。

在方块808中,高速缓存存储器102判断在方块806中所执行的对照操 作结果是否为有效匹配。若判断结果为是,流程接着进行至方块812,若判 断结果为否,则流程接着进行至814。

在方块812中,高速缓存存储器102指向于命中。流程结束于方块812。

在方块814中,高速缓存存储器102分配至路的项目,此路是通过所选 取的组J的内存地址MA[20:17]来选定。以这种方式,当用在少量映像模式之 下,高速缓存存储器102操作如一个直接映像高速缓存。流程结束于方块814。

如前面所提到的,有好处的是,转换入或是从少量模式转换出并不需要 写回以及无效操作。然而,需要注意的是,在转换后可能会有短时间的比特 置换(例如:最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的比特)的小 缺点。举例来说,当从少量模式转换到一般模式的时候,置换的比特或许不 会有预期中的一般模式最久未存取的值。

请参阅图9,图9所示为图1的高速缓存存储器102用以在少量下模式 之下操作如一个8路组相联的高速缓存的方块图。更具体来说,输入的模式 108具体指出一个指向于少量8路模式的值。在少量8路模式之下,高速缓 存存储器102选取一个单一个组,把通过索引114而选取出的组中每一路的 项目卷标106除了最低有效比特以外的所有比特对照于内存地址104的卷标 112除了最低有效比特以外的所有比特,就类似于一般模式,然而,在少量 8路模式之下,在未命中时高速缓存存储器102分配至所选取的组的16路中 的任一个子组(subset)。所述的子组是通过内存地址104中被预先决定的比特 而被指定为所选取组的8个奇数的路或是所选取组的8个偶数的路。在一个 实施例中,被决定的比特是卷标112的下一个最低有效比特。也就是说,被 决定的比特是卷标112除了最低有效比特以外最低有效的,以图1的实施例 来说就是相当于内存地址MA[17],在后图10会有更详细的叙述。在其它的 实施例中,被预先决定的比特是用其它的方式来产生。举例来说,被预先决 定的比特可以是通过卷标112中多数个比特的布尔(Boolean)逻辑闸中的互斥 闸(XOR)来产生(在较佳的情况下排除了用来选取出组的卷标112的比特,例 如:内存地址MA[16])。这样子的做法特别有助于在高速缓存线不正常别名 化(pathologicallyaliasing)至同样的组,如后面所述。互斥闸外的其它函数也 可被用来将卷标112的多个比特凝聚成一个单一比特。在图9的例子中,高 速缓存存储器102在少量8路模式之下操作如一个4096组乘以8路的组相联 高速缓存。

请参阅图10,图10所示为图1的高速缓存存储器102用以操作在少量8 路模式之下的流程图。流程起始于方块1002。

在方块1002中,当输入的模式108指向于少量8路模式的时候,高速缓 存存储器102接收来自于处理核心的加载请求。加载请求包含一个内存地址 104。流程接着进行至方块1004。

在方块1004中,高速缓存存储器102使用相连于索引114的卷标112的 最低有效比特,以图1为例子来说就是内存地址MA[16:6],选取出一个单一 的组,如图10中的组J。流程接着进行至方块1006。

在方块1006中,高速缓存存储器102对所选取的组J的全部16路中的 每个项目,把内存地址104的卷标112除了最低有效比特之外的所有比特对 照于项目卷标106除了最低有效比特之外的所有比特。所述的对照一并确认 以检视该项目是否有效。流程接着进行至方块1008。

在方块1008中,高速缓存存储器102判断在方块1006中所执行的对照 结果是否是有效的匹配。若判断结果为是,流程接着进行至方块1012,若判 断结果为否,则流程接着进行至方块1013。

在方块1012中,高速缓存存储器102指向于命中。流程结束于方块1012。

在方块1013中,高速缓存存储器102检查内存地址中的比特MA[17]。 若比特MA[17]是二进制的1,流程接着进行至方块1016,否则,若比特MA[17] 是二进制的0,则流程接着进行至方块1014。如图9所描述的,在其它实施 例中,在判断方块1013中检查的比特是卷标112中不同于比特MA[17]的比 特(亦即:卷标112的下一个最低有效比特),或是通过卷标112的多个比特的 函数来产生。

在方块1014中,高速缓存存储器102分配至所选取组中的任一偶数路的 一个项目。在较佳的情况下,高速缓存存储器102是根据一个最久未存取 (LRU)或是拟为最久未存取(Pseudo-LRU)的置换方案来分配至所选取的偶数 路的一个项目,但也可使用其它的置换算法,例如随机的或是循环式的。流 程结束于方块1014。

在方块1016中,高速缓存存储器102分配至所选取组的任一个奇数路的 一个项目。在较佳的情况下,高速缓存存储器102根据最久未存取(LRU)或是 拟为最久未存取(Pseudo-LRU)的置换方案来分配至所选取的奇数路的一个项 目,但也可使用其它的置换算法,例如随机的或是循环式的。流程结束于方 块1016。

需要注意的是,虽然已经叙述了两个少量模式的实施例,例如:少量直 接映像模式以及少量8路模式,这都是用来描述少量模式,但并不用以限制 于这两个实施例。关于图1所描述的实施例,举例来说,一个少量4路模式 也可被配置,其中的内存地址MA[18:17]可被用来选择4个路中的4个子组, 每个子组可以用来做置换,且一个少量2路模式也可被配置,其中的内存地 址MA[19:17]可被用来选择2个路中的8个子组,每个子组可以用来做置换。 在其它实施例中,如前面所提到的,卷标112的其它比特也可以被用来选取 路的子组以置换,而这些比特可被输入至一个函数(例如:互斥闸)以产生用来 选取用以置换的路的子组的比特。

少量模式可以替某些不善于利用最久未存取(LRU)或是拟为最久未存取 (Pseudo-LRU)的置换措施的不正常程序带来好处。举例来说,假设这个程序 正运行通过内存且具有不正常的别名化效应以至于请求加载时在高速缓存存 储器102中经常未命中且驱走程序所需要的真正的下一正常线。然而,当高 速缓存存储器102的有效相联性由于转换至少量模式而减少,可以避免上述 的问题。

举例来说,所述的程序可能在存取内存中的大量数据结构,高速缓存存 储器102的组当中较低的一半别名化至当中较高的一半。然而,较低的一半 跟较高的一半具有不同的使用模式而使得最久未存取置换无效。通过少量8 路模式而减少高速缓存存储器102的有效相联性,高速缓存存储器102内的 一半的数据结构被有效地与另外一半分隔。这种不正常类型的例子可以用程 序的脱机分析来判断,而用来对高速缓存存储器102做重新配置,如后图 14A-14C中所叙述。

以另一个例子来说,假设所述的程序存取两个数据组,因为除了在卷标 112的更高位比特有所不同之外,两者是同一个地址,因而别名化至高速缓 存存储器102的同个组。在这个例子中,把一个资料组的置换措施与另外一 个分隔开来可能会带来好处。而这可以通过使用卷标112的比特来达成,所 述的卷标112的比特相当于所述的两个数据组不同的卷标112的更高位比特, 并使用所述更高位比特产生用来限制要被选取的组的子组以供置换的比特。 这种做法是可以被达成的,举例来说,使用如图15所述的方法,通过重复选 定卷标112的地址一直到达成增加高速缓存存储器102的效率,或者是如图 14A-14C中所述藉由程序的脱机分析来达成。

请参阅图11,图11所示为图1的高速缓存存储器102更详细实施例的方 块图。特别的是,图11的实施例是一个双接口(dual-ported)的区域高速缓存 存储器102。高速缓存存储器102包含4个区域1106,标示为区域01106-0, 区域11106-1,区域21106-2以及区域31106-3。每个区域1106具有可储存 四分之一的高速缓存存储器102的组的容量,也就是512组。在图11的实施 例中,区域01106-0具有始于0且4个一数的组,区域11106-1具有始于1 且4个一数的组,区域21106-2具有始于2且4个一数的组,区域31106-3 具有始于3且4个一数的组,如图所示。

高速缓存存储器102还包含两个接口1104,标示为接口A1104A以及接 口B1104-B。每个接口1104耦接于每个区域1106。每个接口1104接收输入 的模式108。

高速缓存存储器102还包含两个卷标信道1102,标示为卷标信道A1102A 以及卷标信道B1102B。卷标信道A1102A通过接口A1104A来存取区域 1106,而卷标信道B1102B通过接口B1104B来存取区域1106。每个卷标信 道1102接收模式108以做为输入。区域1106的选取或是致能以在不同模式 之下选组的详细叙述于图12,高速缓存存储器102在不同模式之下的命中产 生则详细描述于图13。在较佳的情况下,卷标信道1102包含已描述于此的 多个实施例的执行选一组(或是在大量模式之下选两组)的选取逻辑(图未示); 已描述于此的多个实施例的把内存地址的特定比特对照于储存在数组中的卷 标的特定比特的对照逻辑(图未示);以及已描述于此的多个实施例的分配至数 组的分配逻辑(图未示)。除此之外,在较佳的情况下,卷标信道1102包含对 卷标比特执行函数的逻辑,卷标比特是通过图16-19的实施例的分配模式输 入而被指定。在较佳的情况下,卷标信道1102包含多数个阶,每个阶执行不 同的操作以实现不同实施例在此描述的选组、卷标比较、路分配以及路子组 判断。

只要不选择同一个区域1106的话,接口A1104A以及接口B1104B可以 被同时动作。这么一来从四个单接口的区域1106有效提供了一个双接口的高 速缓存存储器102。在较佳的情况下,高速缓存存储器102的判断逻辑会试 图从存取了非冲突区域1106的两个卷标信道1102来选取判断请求,特别是 当高速缓存存储器102处在大量模式之下的时候。

请参阅图12A以及12B,图12所示为图11的高速换存存储器102的区 域致能逻辑1200。请参阅图12A,区域致能逻辑1200包含区域致能逻辑单 元1200A,其从卷标信道A1102A接收一个大量模式提示1209以及一个内存 地址MA104-A且对应产生区域致能提示(ENxA,x表示为区域号码)1212-xA 给接口A1104A。在高速缓存存储器102操作于大量模式之下的时候,大量 模式提示1209的值为真,反之则为否,其是由接收了模式提示108的逻辑单 元(图未示)所产生。区域致能逻辑1200还包含了区域致能逻辑单元1200B, 其从卷标信道B1102B接收一个大量模式提示1209以及一个内存地址MA 104-B且对应产生区域致能提示(ENxB,x表示为区域号码)1212-xB给接口B 1104B。接口A的区域致能逻辑单元1200A以及接口B的区域致能逻辑单元 1200B除了输入以及输出之外,已详细描述如上。

区域致能逻辑单元1200A包含了接收内存地址MA[7]104-A的第一非门 1204-0、接收内存地址MA[6]104-A的的第二非门1208-0、接收非门1204-0 的输出以及大量模式指示1209的第一或门1202-0以及接收第一或门1202-0 以及第二非门1208-0的输出以产生区域致能提示EN0A1212-0A的第一与门 1206-0,区域致能提示EN0A1212-0A用来给接口A1104A致能区域01106-0。

区域致能逻辑单元1200A还包含了接收内存地址MA[7]104-A的第三非 门1204-1、接收了第三非门1204-0的输出以及大量模式提示1209的第二或 门1202-1以及接收了第二或门1202-1的输出以及内存地址MA[6]104-A以 产生区域致能提示EN1A1212-1A的第二与门1206-1,区域致能提示EN1A 1212-1A用来给接口A1104A致能区域11106-1。

区域致能逻辑单元1200A还包含了接收内存地址MA[6]104-A的第四非 门1208-2、接收内存地址MA[7]104-A以及大量模式提示1209的第三或门 1202-2以及接收了第三或门1202-2以及第四非门1208-2的输出以产生区域 致能提示EN2A1212-2A的第三与门1206-2,区域致能提示EN2A1212-2A用 来给接口A1104A致能区域21106-2。

区域致能逻辑单元1200A还包含了接收内存地址MA[7]104-A以及大量 模式提示1209的第四或门1202-3以及接收了第四或门1202-3的输出以及内 存地址MA[6]104-A以产生区域致能提示EN3A1212-3A的第四与门1206-3, 区域致能提示EN3A1212-3A用来给接口A1104A致能区域31106-3。

请参阅图12B,区域致能逻辑1200包含了第一或门1214-0,其接收来自 于接口A的区域致能逻辑单元1200A的区域致能提示EN0A1212-0A以及来 自于接口B的区域致能逻辑单元1200B的区域致能提示EN0B1212-0B以产 生区域致能提示EN01216-0,区域致能提示EN01216-0提供至区域01106-0。 区域致能逻辑1200还包含了第二或门1214-1,其接收来自于接口A的区域 致能逻辑单元1200A的区域致能提示EN1A1212-1A以及来自于接口B的区 域致能逻辑单元1200B的区域致能提示EN1B1212-1B以产生区域致能提示 EN11216-1,区域致能提示EN11216-1提供至区域11106-1。区域致能逻辑 1200还包含了第三或门1214-2,其接收来自于接口A的区域致能逻辑单元 1200A的区域致能提示EN2A1212-2A以及来自于接口B的区域致能逻辑单 元1200B的区域致能提示EN2B1212-2B以产生区域致能提示EN21216-2, 区域致能提示EN21216-2提供至区域21106-2。区域致能逻辑1200还包含 了第四或门1214-3,其接收来自于接口A的区域致能逻辑单元1200A的区域 致能提示EN3A1212-3A以及来自于接口B的区域致能逻辑单元1200B的区 域致能提示EN3B1212-3B以产生区域致能提示EN31216-3,区域致能提示 EN31216-3提供至区域31106-3。

请参阅图13,图13所示为图11的高速缓存存储器102的命中产生逻辑 1300。所示的存储单元存有图1的高速缓存存储器102的项目卷标106。在 图13的实施例中,存储单元存了一个20比特的卷标106。所示的另一个存 储单元接收接口的有效指示1302。卷标106的存储单元接收内存地址 MA[35:16]104,而且当分配讯号1301为真的时候,内存地址MA[35:16]104 的值会被写入至卷标106而且有效指示1302会被更新以用来指示项目为有 效。反之,当移除分配讯号1303为真的时候,有效指示1302会被更新以用 来指示项目为无效。如图13所示,分配讯号1301以及移除分配讯号1303专 属于特定的组以及路,即图13中的组J以及路0。然而,需要注意的是,在 高速缓存存储器102的每一组以及路中皆有分配讯号1301以及移除分配讯号 1303。

命中产生逻辑1300包含了比较器1304,其接收卷标106以及内存地址 MA[35:16]104。比较器1304也接收了图12中的大量模式指示1209。当大量 模式指示1209为真,比较器1304把卷标106的全部20比特对照于内存地址 MA[35:16]而产生输出指示匹配是否发生,例如图5中的方块506。然而,当 大量模式指示1209为假,比较器1304只把卷标106较高的19比特对照于内 存地址MA[35:17]而产生输出,分别是例如图3中的方块306、图8中的方块 806以及图10中的方块1006。与门1306接收比较器1304的输出以及有效比 特1302而产生组J路0的命中讯号1308-J0用来指向于是否有命中发生在组 J路0。如图13所示,组J路0的命中讯号1308-J0专属于特定的组以及路, 然而,需要注意的是,在高速缓存存储器102的每一组以及路中皆有组路的 命中讯号1308。

命中产生逻辑1300还包含了第一或门1312-J,其接收组J路x的命中讯 号1308-Jx用于组J的每一路,x表示为路的号码,也就是用于16个不同的 路,其在图13中标示为0到15。或门1312-J产生组J的命中讯号1314-J。

命中产生逻辑1300还包含了第二或门1312-K,其接收组K路x的命中 讯号1308-Kx用于组K的16路的每一路。组K在大量模式中是第二个被选 取的组,例如:根据图5中的方块504,组是通过1:MA[15:6]而选出。或门 1312-K产生组K的命中讯号1314-K。

命中产生逻辑1300还包含了或门1316,其接收组J命中讯号1314-J以 及组K的命中讯号1314-K以产生大量模式命中讯号1318。命中产生逻辑1300 还包含了多任务器1322,其接收组J的命中讯号1314-J以及大量模式命中讯 号1318,若大量模式命中讯号1209为假则选择命中讯号1314-J反之若命中 讯号1209为真则选择命中讯号1318以做为输出命中讯号1324,命中讯号 1324指出高速缓存存储器102是否有命中发生,分别是例如图3中的方块 312、图5中的方块512、图8中的方块812以及图10中的方块1012。

请参阅图14,图14所示为系统的操作流程图,此系统中的处理器包含 了图1中的高速缓存存储器102。流程起始于方块1402。

在方块1402中,系统侦测运行中的新的进程或是程序。在其中一个实施 例中,运行在处理器100上的系统软件侦测此新的进程,例如:装置的驱动 程序监测运行中的系统进程表。系统软件可提供信息至处理器而该信息可被 处理器用来侦测程序进入的每个不同时程,例如后图14B所描述的,且系统 软件可具体指出每个时程的不同模式。依据指令,处理器更新模式108且若 初始时程标识符存在的话,将初始时程标识符(图14中的组件1412)加载至时 程侦测器(图14B中的组件1414)。在其中一个实施例中,处理器本身侦测新 的进程,例如:处理器侦测进程前后标识符(processcontextidentifier,PCID) 中的变换,例如:有一个新的值被加载到x86指令组结构CR3寄存器的PCID。 在一个实施例中,处理器侦测目前运行中的程序转换至新的时程而不是程序 的变换。流程接着进行至方块1404。

在方块1404中,高速缓存存储器102被转换,例如:经由模式指示108, 转换至预先决定的新模式以做为程序或是时程的最佳执行模式,基于方块 1402所侦测的进程脱机分析。在一个实施例中,处理器的微指令(microcode) 改变高速缓存存储器102的模式108。若高速缓存存储器102转换离开大量 模式,所有的内存操作都会停止,并进行如图6中所描述的操作,接着内存 操作将恢复。在一个实施例中,当系统软件侦测到新的进程运行(方块1402), 系统软件会提供新的模式。在一个实施例中,处理器100从内存(例如:处理 器100的局部封闭内存(localprivatememory)或系统内存)取用新的模式以响 应于侦测PCID的变换或是程序时程转换,在较佳的情况下,处理器100从 使用PCID或是时程标识符从一列表中来识别新的模式。模式的信息可包含 不同的模式以用于程序的不同时程而且是经由脱机分析来决定。流程结束于 方块1404。

请参照图14B,图14所示为包含了如图1中高速缓存存储器102的处理 器的部件方块图。处理器包含了图1的高速缓存存储器102。处理器包含了 时程侦测器1414,其侦测已经进入新时程的运行中的程序。时程侦测器1414 基于时程辨识码1412而做出上述的侦测,例如经由如图14A所描述的装置 驱动程序。时程辨识码1412可包含程序指令的指令指示器(或是程序计数器) 值。所述的指令可以是一个子程序调用指令,在这种情况下时程辨识码1412 还可包含调用指令的目标指令的指令指示器值。更进一步来说,时程辨识码 1412还可包含一或多个调用指令的参数值,例如:返回地址、寄存器值及/ 或堆栈值。时程侦测器的其中一个例子,如公元2013年10月10日申请的美 国专利申请号14/050,687以及14/050,757所教示的指纹感测单元,其所有功 效都可在此达成。处理器还包含了模式更新单元1416,其被时程侦测器1414 通知有一个新的时程已被侦测且接收新时程的标识符。模式更新单元1416还 接收模式信息,例如:来自于如图14A所述的装置驱动程序。模式更新单元 1416更新高速缓存存储器102中的模式108,如图14C中所描述的。在一个 实施例中,模式更新单元1416包含了涉及于时程侦测器1414的处理器的微 指令。在另一个实施例中,模式更新单元1416包含了状态机,其从时程侦测 器1414接收其侦测了一个新的时程的一个指示以及新时程的标识符。时程分 析会在后图22有更详细的描述。

请参阅图14C,图14C所示为图14B中的处理器操作流程图,处理器包 含了图1的高速缓存存储器102。流程起始于方块1422。

在方块1422中,图14B中的时程侦测器1414侦测运行中的程序已经进 入新的时程。响应于侦测到的新时程,时程侦测器1414通知图14B中的模式 更新单元1416。流程接着进行至方块1424。

在方块1424中,模式更新单元1416在模式信息1418(例如:从图14A 的方块1404中装置驱动程序所接收到的信息)当中查询从时程侦测器1414所 接收到的新时程的标识符并且以查询到的模式来更新高速缓存存储器102的 模式108。除此之外,在必要时,模式更新单元1416以新时程标识符1412 来更新时程侦测器1414。在一个实施例中,下一个要被查询的时程取决于目 前的时程,因此,下一个要被加载到时程侦测器1414的时程标识符1412会 取决于目前的时程而有所不同。流程接着进行至方块1426。

在方块1426中,处理器执行运行中的程序并且产生内存存取指令给高速 缓存存储器102,接着高速缓存存储器102就会根据如方块1424中更新后的 模式108来操作。流程结束于方块1426。

请参照图15,图15所示为包含了图1的高速缓存存储器102的处理器 的系统操作流程图。流程起始于方块1502。

在方块1502中,处理器侦测高速缓存存储器102在目前的模式之下无效 率地执行中。举例来说,执行计数器指出高速缓存存储器102目前的未命中 率超过了临界值。流程接着进行至方块1504。

在方块1504中,高速缓存存储器102转换至一个不同于目前模式的新模 式。在其中一个实施例中,处理器的微指令改变了高速缓存存储器102的模 式108。若是高速缓存存储器102从大量模式中转换出来,所有的内存操作 都会停止,进行如图6所述的操作,接着内存操作会恢复。在较佳的情况下, 处理器(例如:微指令)持续追踪高速缓存存储器102模式的这种自动变化以避 免模式被反复推移,例如在程序及/或数据组不论任何模式皆为高未命中率的 情况。在一个实施例中,所有的模式(正常、大量、不同的各种少量模式)若有 需要都会被使用。在其它实施例中,这些模式的子组会被使用。例如:因为 在一般模式以及任何一个少量模式之间或是在其中一个少量模式以及另外的 少量模式之间没有与转换有关联的写回-无效损失,子组可以被限制在除了大 量模式之外的这些模式当中。不同的少量模式应该被理解是包含了不只有被 限制在关于路的子组进入的高速缓存线如何分配的不同少量模式,还包含了 更改卷标的一个或多个比特来选择以限制子组的不同少量模式,例如图9所 有少量8路模式中的内存地址MA[17]、互斥或门XOR(内存地址MA[26]、 MA[23]或MA[22]。流程结束于方块1504。

请参阅图16,图16所示为高速缓存存储器1602的方块图。高速缓存存 储器1602类似于图1的高速缓存存储器102。图16中的高速缓存存储器1602 的好处在于当其操作在不同分配模式的时候可以动态配置,具体是由分配模 式输入1608来被指定。分配模式1608选择了内存地址104的卷标的一或多 个比特的不同函数而判断出经由内存地址104的索引选取出高速缓存存储器 1602会分配进入的组的路的一个子组,后面将做更详细的描述。

跟图1的实施例类似,图16的实施例中,内存地址104区分为三个部分, 卷标1612、索引1614以及偏移1616,但使用的比特有些许不同。为了描述 上的方便,举例一个内存地址104,其如图16所示大小有36比特且区分为 卷标1612=MA[35:17],索引1614=MA[16:6]以及偏移1616=MA[5:0]。然而, 需要注意的是,基于地址卷标比特的动态路选择的实施例可被执行于高速缓 存存储器,其接收的内存地址104具有不同比特数且其卷标1612、索引1614 以及偏移1616区分成不同比特数。图1以及图6所示例子的其它不同之处在 于存储于图16的高速缓存存储器1602的项目中的卷标1606有19比特。

请参阅图17,图17所示为逻辑1702的方块图,其基于如图16所示的 卷标1612以及分配模式1608选取高速缓存存储器102分配至的路的子组。 逻辑1702包含了多任务器1736,其接收卷标1612的比特(例如19比特)并且 选取一或多个卷标1612的比特,图17中标示为N比特1738,N是1或更多, 取决于分配模式1608。逻辑1702还包含了组合逻辑1732,其根据分配模式 1608来从多个函数中选出一个,接着对多任务器1736所输出的N比特1738 执行所选取的函数以产生一个向量,其指向于高速缓存存储器102的分配逻 辑分配至的路的子组1734,如后图18所述。

选取出的卷标1612的比特以及执行于所选取出的N比特1738的函数例 子如下。举一个例子来说,子组是经由内存地址104中事先决定的一个比特 而指定选取组的8奇数路或是选取组的8偶数路。在一个例子当中,事先决 定的比特是卷标1612的最低有效比特。在其它的例子当中,事先决定的比特 是经由其它的方法来产生。举例来说,事先决定的比特可以是由卷标1612的 多个比特的布尔逻辑的互斥闸(XOR)来产生。如前面所叙述的,在高速缓存 线不正常的别名化至同个组的时候,这可以带来好处。除了互斥闸之外的函 数也可以被用来将卷标112的多个比特汇集成一个单一比特,例如布尔逻辑 的或门、与门、非门或是其之间的不同组合。举第二个例子,卷标1612的二 或更多比特被轮转分配模式1608指定的比特以限制高速缓存线可分配到全 部路的一个子组,例如:从16到4,16到2或16到1,在这些情况下N比 特1738分别是2,3或4。除此之外,在N比特1738是2,3或4的情况下, 每一个N比特1738可以各自经由卷标1612中相同的或是不同的比特的布尔 函数来产生。虽然指出了如上所述的多个实施例,需要注意的是,其它的实 施例也可以用来计算由多任务器1736选取的卷标1612的数量以及特定的比 特,而其它实施例也可以用来计算执行于所选取的N比特1738来选取路1734 的子组的特定函数1732。

请参阅图18,图18所示为图16中的高速缓存存储器1602的操作流程 图。流程起始于方块1802。

在方块1802中,当分配模式1608指向于目前的分配模式,高速缓存存 储器1602接收来自于处理核心的加载请求。加载请求包含图16的内存地址 104。流程接着进行至方块1804。

在方块1804中,高速缓存存储器1602利用索引1614而选取一个单一的 组,如图18所示的组J。流程接着进行至方块1806。

在方块1806中,对于所选取的组J的全部16路的每个项目,高速缓存 存储器1602把内存地址104的卷标1612对照于项目卷标1606。所述的对照 一并确认以检视项目是否无效。流程接着进行至判断方块1808。

在方块1808中,高速缓存存储器1602判断在方块1806所执行的对照结 果是否为有效匹配。若判断结果为是,流程接着进行至方块1812,若判断结 果为否,则流程接着进行至方块1814。

在方块1814中,图17的逻辑1702基于分配模式1608指定的函数1732 以及卷标1612的一或更多比特决定在方块1804所选取的组的路的子组1734。 流程接着进行至方块1816。

在方块1816中,高速缓存存储器1602分配至所选取的组J中的任一个 路,其是在方块1814中决定的路的子组。在较佳的情况下,高速缓存存储器 1602分配至子组中的一个路其是最久未存取(LRU)或是拟为最久未存取 (Pseudo-LRU)的,而也可采用其它的置换算法,例如随机或是循环式。流程 结束于方块1816。

请参阅图19,图19所示为包含处理器的系统操作流程图,处理器包含 如图16的高速缓存存储器1602。流程起始于方块1902。

在方块1902中,当操作在目前分配模式1608的时候,处理器监测高速 缓存存储器102的效率(例如:高速缓存存储器102在最近的预设期间内的命 中率)。流程接着进行至判断方块1904。

在判断方块1904中,处理器判断高速缓存存储器102的效率是否低于一 临界值。若判断结果为是,流程接着进行至方块1906,若判断结果为否,则 流程结束。在较佳的情况下,所述的临界值是可程序化的,例如经由系统软 件。

在方块1906中,处理器更新高速缓存存储器102的分配模式1608至一 个新的分配模式,新的分配模式不同于目前分配模式。在一个实施例中,处 理器的微指令更新高速缓存存储器102的分配模式1608。在较佳的情况下, 处理器(例如是微指令)持续追踪此一分配模式1608的更新以避免多个分配模 式被反复推移,例如在程序及/或数据组不论任何模式皆为高未命中率的情 况。在一个实施例中,所有的分配模式在必要时都会被使用。在其它的实施 例中,分配模式的子组会被使用。好处在于,在不同的分配模式1608之间并 没有与转换有关联的写回-无效的损失。流程从方块1906回到方块1902。

本发明描述的不同方式的高速缓存存储器的模式配置,例如高速缓存存 储器大量模式,少量模式,经由卷标置换比特的函数的分配,可以是经由静 态配置及/或是动态配置。一般来说,静态配置是硅前(pre-silicon)的。也就是 说,设计人员以直观的方式,较佳的情况下经由处理器设计仿真软件的协助 来决定较好的配置方式,也就是说,在一般的情况下可改善处理器的执行效 能,特别是高速缓存存储器的效能的配置方式。处理器的执行效能改善是改 善处理器执行程序时的速度(例如:减少每个指令执行的时钟或是增加每个时 钟频率中的执行指令)及/或减少耗电量。程序可操作系统,可执行的程序(例 如:应用程序,实用程序,性能分析程序),动态链接软件库,等等。软件仿 真可用于执行程序的脱机分析而其用于改善处理器的执行效能,如图20至图 22中所述的例子,特别是关于高速缓存存储器的模式配置。在较佳的情况下, 设计人员决定了一个在多种程序中较佳的静态配置。设计人员接着把较佳的 静态配置纳入硅制程的设计里面。

反过来说,一般而言决定动态配置的分析是在后硅(post-silicon)的阶段执 行。也就是说,在处理器被制造以后,设计人员执行不同种类的脱机分析来 决定当以不同于静态的配置(也就是按照预定的方式将配置制造于硅芯片中) 来执行程序的时候处理器效能如何。后硅的测试更严格且更费力,针对配置 数组是以自动效能衰退的技术来执行,接着分析衰退的效能数据,例如是后 图23中所描述的。设计人员可以为众多程序采用硅前测试的结果作为初始值 来进行硅后测试,例如:试着避免不是全局最大值的局部最大值。

无论是硅前或是硅后测试,以动态配置测试,较佳的配置方式可以被决 定在每一个程序的基础上,甚至是在每一个程序的时程基础上。接着,当系 统(例如是装置驱动程序)侦测一个已知的程序运行在处理器上的时候(亦即: 程序分析已被执行而已知较佳的配置方式),系统提供较佳的程序指定配置给 处理器,且当运行中的时候,处理器以动态的方式来以程序指定配置而更新 高速缓存存储器模式。在较佳的情况下,程序特定配置包含给程序的不同时 程的不同配置,且处理器侦测时程变化并响应于时程特定配置来动态更新配 置,例如图22中所描述的。

关于一个被赋予的特征组,程序时程是一个计算器程序的子组,其特征 在于多个特征当中的一贯行为。举例来说,假设相应的特征是分支预测率以 及高速缓存命中率,程序的时程是程序运行时的行为的子组,其中分支预测 率以及高速缓存命中率是一致的。举例来说,脱机分析可以决定一个特定的 数据压缩程序有两个时程:字词建构时程以及字词查询时程。字词建构时程 具有相对低的分支预测率以及相对高的高速缓存命中率,与建立一个共通于 串流的较大组的串流子组一致,而字词查询时程具有相对高的分支预测率以 及相对低的高速缓存命中率,与在大于高速缓存的大小的字词查询子串流一 致。

在一个实施例中,脱机分析是运用「预言高速缓存」(oraclecache)的概念 来实行,如其名称的意思,具有预测的功能。对于高速缓存存储器有限的空 间,预言高速缓存会知道应该及时放在高速缓存中的最有用资料。其可被概 念化为可以产生最高的命中率的高速缓存的内容的每个周期或是每个指令的 快照。

首先,产生程序执行的预言高速缓存快照的一序列以及追踪产生快照内 的每一个高速缓存线的分配的内存存取。接着,在程序的后续执行中,处理 器使用快照中的信息来继续更新高速缓存模式。

当以一个频率周期或指令更新高速缓存模式显得不实用时,可以在更长 的时间周期中检视趋势,例如:在全部程序或程序时程,以及例如:经由从 程序或时程的序列取出平均值。

广泛来说,预言高速缓存的概念是在于,因为其会预先知道全部的内存 存取,其能够预先实行全部的内存存取。接着当程序执行时,预言高速缓存 预测在任何时间点要及时给高速缓存的高速缓存线的最佳组。举例来说,在 图21中,预言高速缓存将会预测短期间高速缓存线(以实线描绘的上面第二 条线)不应该在其最后一次存取后被存入。使用此种分析,可引申出高速缓存 模式的观测。

请参阅图20,图20所示为用在程序以及程序时程的高速缓存存储器模 式配置的产生流程图。流程起始于方块3402。

在方块3402中,设计人员较佳的是以自动的方式运行一个程序并且记录 程序对高速缓存存储器如102,1602的内存存取。在较佳的情况下,高速缓 存线的分配、命中以及离开都会被记录下来。内存存取的内存地址以及时间 (例如相对的时钟周期)会被记录下来。流程接着进行至方块3404。

在方块3404中,设计人员较佳的是以自动的方式的定期时间区间内分析 在方块3402中所记录的信息并且辨识出显着的趋势以将程序分为时程,例如 后图22中所描述的。举例来说,在工作组的大小,平均的高速缓存线使用期, 平均的命中率的显着的趋势会被辨识出来。流程接着进行至方块3406。

在方块3406中,设计人员较佳的是以自动的方式基于在方块3404中所 实行的分析来创造要给不同程序时程的配置。举例来说,配置可以是高速缓 存存储器模式。在一个实施例中,决定配置的分析可包含类似像是后图21至 后图23中所描述的分析。需要注意的是,某些程序或许没有显现出显着的趋 势以至于容易分散成不同时程,在这种情况下单一的配置足够用于全部的程 序。流程结束于方块3406。

请参阅图21,图21所示为内存存取图表以及从此图表中萃取数据的示 意图。图表描绘了内存存取,经由点来标示,其中水平轴所示的时间是自变 量,而垂直轴所示的内存存取是因变量。水平线对应于指定的内存地址中个 别的高速缓存线。线的最左端表示高速缓存线的分配,而线的最右端表示高 速缓存线从高速缓存存储器中离开。

图表下面显示,在8个不同的定期时间区间的总工作组的大小。时间区 间可以例如是与后图22中所描述的基础方块转换有关联,且被用于决定每个 程序时程的程序时程以及配置。

除此之外,可以观测高速缓存线趋势在多久的时间是有用的,例如平均 的高速缓存线使用期。平均的高速缓存线使用期是计算是以时程中全部的高 速缓存线的使用期(从分配到离开)的总和除以高速缓存线的数量。这个信息可 以用来影响高速缓存存储器的操作模式。

若是预言高速缓存限制存取线的数量以对应于被包含在高速缓存存储器 中预期的组数以及路数,高速缓存模式以及平均的使用期观察准确率可以提 升。其它的指示也可以被包含在内,例如高速缓存线命中。

请参阅图22,图22所示为程序的时程分析流程图。时程分析是脱机分 析的一种形式,其可被用来决定关于处理器的可能配置中的较佳配置,例如 其高速缓存存储器或预取器(prefetcher)。流程起始于方块3602。

在方块3602中,运行中的期望经由处理器改善执行效率的程序被分析且 分解而产生状态图。状态图的节点是程序的基础区块。基础区块在程序控制 指令中是指令的序列(例如是分析、跳跃、呼叫、返回,等等)。状态图中的每 个边缘都是一个目标基础区块其中这些边缘引领并且指出改变信息,其可以 成为一个时程辨识码,如下所述的。时程辨识码可包含一个控制转换指令的 指令指示器(instructionpointer,IP)或是程序计数器(programcounter,PC),控制 转换指令的一个目标地址,及/或一个控制转换指令的呼叫堆。呼叫堆可包含 返回地址以及呼叫的参数。程序时程是程序的一部分,其包含一或多个基础 区块。流程继续进行至方块3604。

在方块3604中,程序被仪器化以分析关于处理器的可配置特征例如是高 速缓存存储器配置模式。这些特征的例子包含了高速缓存命中率、分支预测 准确率、工作组大小、平均高速缓存线使用期以及高速缓存污染(例如被预取 但是从未被使用的高速缓存线的数量)。流程继续进行至方块3606。

在方块3606中,程序是以给定的配置来执行,例如是高速缓存存储器及 /或预取器的配置,且程序的时程经由观测方块3604中分析出的特征中的稳 定状态行为来辨别。举例来说,假设高速缓存命中率是关注中的分析特征, 并假设高速缓存命中率从97%变成40%。高速缓存命中率的改变趋势指出高 速缓存存储器配置在改变前是有利于程序的而在改变后是不利于程序的。因 此,高速缓存命中率改变前的基础区块可被辨识为一个时程且高速缓存命中 率改变后的基础区块可被辨识为另一个时程。以另外一个例子来说,假设工 作组的大小是关注的分析特征,那么在工作组大小中的明显的大转换可以指 出一个在程序中时程改变的位置。流程继续进行至方块3608。

在方块3608中,一旦时程被辨别,较好的配置或是配置值会被决定给每 个时程。举例来说,可以使用不同的脱机分析技术,例如先前图20以及图 21当中所描述的或是后图23中所要描述的。流程继续进行至方块3612。

在方块3612中,时程辨识码与时程改变有关。先前描述的基础方块转换 的状态改变信息也就是潜在的时程辨识码,其中分析特性中的改变的发生以 及在方块3608中被决定给程序的较好的配置值被记录,使该信息被例如装置 驱动程序侦测到分析后的程序即将运行的时候可被提供给处理器。流程继续 进行至方块3614。

在方块3614中,在接收了与分析后的程序有关的信息后,处理器如先前 图14A到图14C所描述的以图14B中的时程辨识码1412加载时程侦测器 1414。流程结束于方块3614。

请参阅图23,图23所示为决定一个较好配置给处理器的可配置特性例 如高速缓存存储器或预取器的蛮力(bruteforce)法流程图。所述的方法采用「坐 标递减」概念优化算法。流程起始于方块3702。

在方块3702中,对每个程序或是程序时程来说,在识别理想上可改善处 理器的执行效能的程序的列表中,此方法经由方块3704至方块3716而反复 操作直到决定出一个较好的配置(例如:最佳的目前配置并未在一段相对长的 时间内被改变)或是资源已过期(例如时间及/或计算资源)。流程继续进行至方 块3704。

在方块3704中,目前的最佳配置被设定为预定的配置,例如是一个高速 缓存存储器的预定模式,其在一个实施例中就是处理器被制造时的模式。流 程继续进行至方块3706。

在方块3706中,对于每个配置参数来说,方块3708至方块3712被实施。 配置参数的一个例子是一个单一配置比特,例如,其可开启或关闭一个功能。 配置参数的另外一个例子是一个配置域,例如模式108。流程继续进行至方 块3708。

在方块3708当中,方块3706的配置参数值的合理的组的每一个值,执 行方块3172至方块3716。配置参数值的合理的组取决于配置参数的大小、 参数被认为的重要性以及反复操作所需的资源量。举例来说,在单一配置比 特的例子中,两个值都在合理的组中。举例来说,此方法可以对具有16或是 更少值的任意参数尝试所有可能的值。然而,对于相对大的域来说,例如一 个32比特的域,要尝试全部2^32个值是不可行的。以这个例子来说,设计 人员要提供数值的合理的组给这个方法。若设计人员没有提供数值且可能性 的数量很大,此方法可以一个合理数目的参数随机数值在方块3712至方块 3176反复操作。流程继续进行至方块3712。

在方块3712中,程序或是程序时程是以目前最佳配置来运行但是经由方 块3708中参数的下一个数值来调整,且执行效能会被量测。流程继续进行至 判断方块3714。

在判断方块3714中,该方法把在方块3712中测得的执行效能对照于目 前的最佳执行效能且若前者较佳,流程继续进行至方块3716,否则流程回到 方块3712去试目前参数的下一个数值一直到全部的合理数值都被试过,此时 流程回到方块3708而反复操作下一个配置参数一直到全部的配置参数都被 试过,此时方法结束,产生目前的最佳配置套用于该程序或该程序时程。

在方块3716中,该方法以方块3712中所试的配置来更新目前的最佳配 置。流程回到方块3712去尝试目前参数的下一个数值一直到全部的合理数值 都被试过,此时流程回到方块3708以反复操作下一个配置参数一直到全部的 配置参数都被试过,在这个例子当中该方法结束,产生目前的最佳配置套用 于该程序或该程序时程。

需要注意的是,使用类似于图23的方法所找到的较佳配置,设计人员并 不会或不需要理解为什么该特定配置会产生较好的结果。

请参照图24,图24所示为处理器3900的方块图。处理器3900包含一 个指令高速缓存3922,其提供指令给一个指令译码器3923,译码器3923将 该指令译码并且把该译码后的指令提供给一个发送器3924,发送器3924把 该指令发送至执行单元3926以执行。在较佳的情况下,处理器3900的微架 构是超标量而乱序(out-of-order)执行,也可考虑其它的实施例,如此一来指令 发送器3924还包含了一个指令排程器以将指令的发送排程以超标量乱序的 方式至多个执行单元3926。在较佳的情况下,处理器3900还包含了架构寄 存器(图未示),其包含处理器3900的架构状态,还有非架构寄存器(图未示)。 在较佳的情况下,处理器3900还包含寄存器别名表(registeraliastable, RAT)(图未示)以用来执行寄存器重新命名以及重新排序缓冲器(reorderbuffer, ROB)(图未示)以用来在程序排序中退出指令。在较佳的情况下,指令发送器 包含指令转译器(图未示)其用来把架构指令转译为处理器3900的微指令组架 构的微指令,其可被执行单元3926执行。

处理器3900还包含内存子系统3928其提供内存运算域给执行单元3926 并且从执行单元3926接收内存运算域。内存子系统3928较佳为包含一个或 多个加载单元,一个或多个存储单元,加载列,存储列,用来从内存请求高 速缓存线的填入列,与处理器3900通信的内存总线的侦测有关的侦测列,列 表引擎,以及其它相关功能的单元。

处理器3900还包含一个沟通于内存子系统3928的高速缓存存储器102。 在较佳的情况下,高速缓存存储器102类似于描述于图1(以及图16中的1602) 的高速缓存存储器。虽然示出的是一个单一的高速缓存存储器102,但高速 缓存存储器102可以是一个更大的高速缓存存储器子系统的其中一个,其包 含高速缓存存储器的一个分层,例如是阶层1的指令高速缓存,阶层1的数 据高速缓存,以及支持阶层1高速缓存的统合的阶层2高速缓存。在一个实 施例中,高速缓存子系统还包含阶层3高速缓存。处理器3900还包含一或多 个预取器其从内存预取资料至高速缓存存储器102。在一个实施例中,处理 器3900是一个多核心处理器,每一个核心具有如前所述的功能单元,且高速 缓存存储器102由多个核心共享。

内存子系统3928存取高速缓存存储器102,如图1至图23中所描述的 实施例一般。内存存取包含要被存取的内存位置的内存地址104。

虽然实施例已经用高速缓存存储器的区域以及接口的数量的特定配置来 描述了,需要注意的是,在其它实施例中可以考虑包含在高速缓存存储器中 的接口的不同数量,且区域的不同数量也被包含在其中,还有非区域的配置。 在本揭露当中,包含权利要求中的标记2^N指的是2的N次方。

虽然本发明的多个不同实施例已被描述于此,需要注意的是,其是用以 举例而非限制本发明。计算器领域的相关技术人员显而易见可知不同的形式 或细部的改变都在本发明的保护范围之内。举例来说,软件可以启动,举例 来说,功能、制程、模型、仿真、描述及/或本文中所描述的装置和方法的测 试。其可经由一般的程序语言(例如C,C++)的使用来实现,硬件描述语言 (HDL)包含Verilog硬件描述语言等等,或是其它可能的程序。所述的软件可 配置于任何已知的计算器可用媒介例如是磁带,半导体,磁盘,或是光盘(例 如CD-ROM,DVD-ROM等等),因特网,有线,无线或是其它通信媒介。本 文所述的装置以及方法的实施例可被包含在半导体智慧产权核心,例如处理 器核心(例如嵌入式或是具体式的,在硬件描述语言中)以及转变至硬件集成电 路的制造中。除此之外,本文所描述的装置以及方法可被体现如硬件以及软 件的组合。因此,本发明不被文中所描述的任何举例出的实施例所限制而是 仅被根据本发明的权利要求及其同位物所定义。具体来说,本发明可以被实 现在处理器装置中,其可用在一般用途的计算器。最后,本领域技术人员可 以很容易的使用本文所揭露的概念和具体实施方式以做为设计或是修改其它 架构的基础以实现出本发明的相同功效而不脱离本发明的权利要求所限定的 范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号