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

文档序号:9921974阅读:来源:国知局
标112以及索引114的用途将在后文中详细叙述。为了方便描述,图1中举例了一个大小为36个比特且将36个比特分为卷标112 = MA[35:16]、索引114 = MA[15:6]以及偏移116 = MA[5:0]的内存地址104。然而,要特别注意的是,高速缓存存储器102的相联性的动态变更性,也就是在一般模式、大量模式以及少量模式之间的转换(transit1n),在高速缓存存储器被执行时高速缓存存储器可接收一个具有不同数量比特的内存地址104且在内存地址104的卷标112、索引114以及偏移116中可为不同数量的比特。偏移116中的比特数量具体指的是缓存线的大小(例如:64个字节),索引114则根据模式108而从高速缓存存储器102中选出一或两组,如后文所述。
[0122]高速缓存存储器102被设计为由多个路(way)以及多个组相乘。为了方便叙述,例如图1中所示的高速缓存存储器102具有2048个组以及16个路。然而,需要特别注意的是,在此描述的动态相联性变更性可在具有不同组数与不同路数的高速缓存存储器上执行。每一组/路的组合可识别出存储有缓存线的高速缓存存储器102的项目。每个项目包括用来存储缓存线数据的存储元(storage),也包括用来存储缓存线状态(例如:MESI状态)以及缓存线卷标106的存储元。卷标106以及缓存线所在组数的组合具体指出了缓存线的内存地址。在图1的实施例中,卷标106相当于内存地址104的卷标112的大小而为20比特。较佳的情况,高速缓存存储器102包括多个独立的存储器数组以存储缓存线数据、卷标106以及置换信息。
[0123]在以下更加详细的描述中,在大量模式的查找中索引114是用来选出高速缓存存储器102中的两个不同组,内存地址104的完整卷标112被用来与所选出的两个组的每一路的完整卷标106来对照以侦测是否命中。而索引114以及卷标112的最低有效比特(I eastsignificant bit,LSB)在一般模式以及少量模式中被用来在高速缓存存储器102当中选出一个组,内存地址104的卷标112除了最低有效比特之外的比特都被用来与所选出组的每一路的卷标106除了最低有效比特之外的比特对照以侦测是否命中。当操作于大量模式的时候,这种做法把有效相联性加倍且把高速缓存存储器102的路数量减半。反过来说,当操作于少量模式的时候,基于卷标112的一个或多个较低比特,高速缓存存储器102将缓存线可被配置的路限制于所有路的子组(例如:由16而为8、为4、为2或为I),而有效相联性也减少了用来限制路的子组的卷标112的比特数量的二倍。为了从大量模式中转换出来,写回(writeback)与无效(invalidate)操作必须于某些缓存线执行,如后所述。然而,相较于为了让某些编码串流(code stream)操作于大量模式所能带来的好处,写回与无效操作所带来的坏处可以被容忍。转换至少量模式或从少量模式转换出来不需要写回与无效操作。
[0124]请参阅图2,图2所示为图1的高速缓存存储器102当操作于一般模式之下的方块图。更具体来说,输入的模式108具体指示一个指向于一般模式的值。在一般模式之下,高速缓存存储器102选取出一个单一的组,在藉由索引114所选取出的组中,把每一路的项目卷标106除了最低有效比特之外的所有比特与内存地址104的卷标112除了最低有效比特之外的所有比特做对照,若未命中则分配到所选取出的组的任一路之中,在后图3中有更加详细的描述。以图2为例子,在一般模式之下,高速缓存存储器102操作如一个2048组乘以16路的相联性尚速缓存。
[0125]请参阅图3,图3所示为图1的高速缓存存储器102操作于一般模式之下的流程图。流程起始于方块302。
[0126]在方块302中,当输入的模式108指向一般模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含内存地址104。流程接着进行至方块304。
[0127]在方块304中,高速缓存存储器102使用与索引114相连的卷标112的最低有效比特,以图1为例子来说的话就是MA[16:6],来选取出一个单一的组,如图3中的组J。流程接着进行至方块306。
[0128]在方块306中,以所选取出的组J的所有16路的每一项目来说,高速缓存存储器102把内存地址104的卷标112除了最低有效比特之外的所有比特对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照也一并确认以检视该项目是否有效。流程接着进行至方块308。
[0129]在方块308中,高速缓存存储器102判断方块306所执行的对照是否产生有效的匹配。若判断结果为是,流程接着进行至方块312,若判断结果为否,则流程接着进行至方块314。
[0130]在方块312中,高速缓存存储器102指向于命中。流程结束于方块312。
[0131]在方块314中,高速缓存存储器102分配至所选取的组J的一个项目。在较佳的情况下,高速缓存存储器102分配至组J的一路中的一个项目,该项目是最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的,然而也可以使用其它的置换算法,例如随机或循环式的。流程接着进行至方块314。
[0132]请参阅图4,图4所示为图1的高速缓存存储器102操作于大量模式之下的方块图。更具体来说,输入的模式108具体指示一个指向大量模式的值。在大量模式之下,高速缓存存储器102选取出两个组,把藉由索引114所选取出的组中的每一路的项目卷标106对照于内存地址104的卷标102,若未命中则分配至所选取的两个组的任一个的任一路之中,在后图5中有更加详细的描述。如此一来有效地把路的数量加倍并把高速缓存存储器102的组的数量减半。以图4为例子,在大量模式之下,高速缓存存储器102操作如一个1024组乘以32路的组相联性尚速缓存。
[0133]请参阅图5,图5所示为图1的高速缓存存储器102操作在大量模式之下的流程图。流程始于方块502。
[0134]在方块502中,当输入的模式108指向大量模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含一个内存地址104。流程接着进行至方块504。
[0135]在方块504中,高速缓存存储器102选取出两个组,如图5所示的组J以及组K。组J是用相连于卷标112的二进制的O所选出,以图1为例子来说的话就是相连于MA[15:6]的二进制的O。组K是用相连于卷标112的二进制的I所选出,以图1为例子来说的话就是相连于MA[15:6 ]的二进制的I。流程接着进行至方块506。
[0136]在方块506中,以被选取出的组K以及组J的所有32路的每一项目来说,高速缓存存储器102把内存地址104的卷标102对照于项目卷标106。所述的对照一并确认以检视该项目是否有效。流程接着进行至判断方块508。
[0137]在判断方块508中,高速缓存存储器102判断是否方块506所执行的对照产生有效的匹配。若判断结果为是,流程接着进行至方块512,否若判断结果为否,则流程接着进行至方块514。
[0138]在方块512中,高速缓存存储器102指向于命中。流程结束于方块512。
[0139]在方块514中,高速缓存存储器102由组J以及组K中选取出一个来做为一个置换组。在一个实施例中,高速缓存存储器102基于内存地址104的被选取比特的散列(hash)至一个单一比特来选取出置换组以至于若所述的散列产生的是二进制的O则选出组J且若所述的散列产生的是二进制的I贝1J选出组K,一般用以在伪随机方式(pseudo-randomfash1n)选取置换组。在其它实施例中,高速缓存存储器102使用每一个组所储存的置换信息中的额外一个或是更多的比特选取出的置换组,该置换信息是除了例如用来选取组的最久未存取(LRU)的路的储存信息。举例来说,一个额外的比特可指出组J或组K曾是最久未存取(LRU)的。流程接着进行至方块516。
[0140]在方块516中,高速缓存存储器102分配到置换组的一个项目。在较佳的情况下,高速缓存存储器根据最久未存取(LRU)或是拟为最久未存取(pseudo-LRU)的配置方案来102分配到置换组的一个项目,然而也可以是运用其它的置换算法,例如随机或循环式。流程结束于方块516。
[0141]请参阅图6,图6所示为图1的高速缓存存储器102被指示由大量模式之中转换出来的操作流程图。流程起始于方块602。
[0142]在方块602中,高速缓存存储器102被指示由大量模式之中转换出来,例如,模式108从大量模式中转换到一般模式或是少量模式。流程接着进行至方块604。
[0143]在方块604中,高速缓存存储器102通过搜寻高速缓存存储器102的每个组(亦即:每个组数),以及组中的每个项目,把卷标106的最低有效比特与组数的最高有效比特做对照。若对照后发现未匹配,则高速缓存存储器102将该项目无效。然而,在无效该项目之前,若缓存线的状态为脏(dirty),也就是被更改过,则高速缓存存储器102把缓存线的资料写回至内存。上述做法是为了维持高速缓存存储器102的一致性。流程结束于方块604。
[0144]运行在大量模式下的潜在风险是可能比运行在非大量模式下要消耗更多的电力,因为必须比较两组的卷标。然而,某些用户在某些系统中愿意以更多的电力消耗来换取更好的缓存效能。除此之外,在多核心处理器中,若核心未全数运行,则多余的卷标数组存取(例如:在图11实施例中的区域(bank)存取)是可被接受的,因为高速缓存存储器102可以是被设计为支持全核心存取高速缓存存储器102的需求。
[0145]请参阅图7,图7所示为图1的高速缓存存储器102用于操作在少量模式之下来做为直接映像(direct-mapped)高速缓存的方块图。更具体来说,输入的模式108具体指出一个指向于少量直接映像模式的值。在少量模式之下,高速缓存存储器102选取一个单一的组,把藉由索引114所选取出的组中的每一路的项目卷标106除了最低有效比特之外的所有比特对照于内存地址104的卷标112除了最低有效比特之外的所有比特,类似于一般模式,然而,在少量直接映像模式之下,若未命中则高速缓存存储器102分配至所选取组的唯一一路。此一路是通过内存地址104中被预先决定的比特来指定。在较佳的情况下,被预先决定的比特是卷标112的下一个最低有效的1g2Nf比特,N是高速缓存存储器102的路数。也就是说,被预先决定的比特是卷标112中除了最低有效比特外最低有效的1g2N个比特,以图1为例子的话就是MA[20:17],后图8会有更详细的叙述。在图7的例子中,在少量直接映像模式之下,高速缓存存储器102操作如同一个32768组的直接映像高速缓存。
[0146]请参阅图8,图8所示为图1的高速缓存存储器102用以操作在少量直接映像模式下的流程图。流程起始于方块802。
[0147]在方块802中,当输入的模式108指向于少量直接映像模式的时候,高速缓存存储器102接收来自于处理核心的加载请求。加载请求包含了一个内存地址104。流程接着进行至方块804。
[0148]在方块804中,高速缓存存储器102使用相连于索引114的卷标112的最低有效比特,以图1为例子的话就是MA[16:6],选取出一个单一的组,如图8的组J。流程接着进行至方块806。
[0149]在方块806中,对所选取的组J的全部16路的每个项目,高速缓存存储器102把内存地址104的卷标112除了最低有效比特之外的所有比特对照于项目卷标106除了最低有效比特之外的所有比特。所述的对照操作一并确认以检视项目是否为有效。流程接着进行至方块808。
[0150]在方块808中,高速缓存存储器102判断在方块806中所执行的对照操作结果是否为有效匹配。若判断结果为是,流程接着进行至方块812,若判断结果为否,则流程接着进行至 814。
[0151]在方块812中,高速缓存存储器102指向于命中。流程结束于方块812。
[0152]在方块814中,高速缓存存储器102分配至路的项目,此路是通过所选取的组J的内存地址MA[ 20:17]来选定。以这种方式,当用在少量映像模式之下,高速缓存存储器102操作如一个直接映像高速缓存。流程结束于方块814。
[0153]如前面所提到的,有好处的是,转换入或是从少量模式转换出并不需要写回以及无效操作。然而,需要注意的是,在转换后可能会有短时间的比特置换(例如:最久未存取(LRU)或是拟为最久未存取(Pseudo-LRU)的比特)的小缺点。举例来说,当从少量模式转换到一般模式的时候,置换的比特或许不会有预期中的一般模式最久未存取的值。
[0154]请参阅图9,图9所示为图1的高速缓存存储器102用以在少量下模式之下操作如一个8路组相联的高速缓存的方块图。更具体来说,输入的模式108具体指出一个指向于少量8路模式的值。在少量8路模式之下,高速缓存存储器102选取一个单一个组,把通过索引114而选取出的组中每一路的项目卷标106除了最低有效比特以外的所有比特对照于内存地址104的卷标112除了最低有效比特以外的所有比特,就类似于一般模式,然而,在少量8路模式之下,在未命中时高速缓存存储器102分配至所选取的组的16路中的任一个子组(subset)。所述的子组是通过内存地址104中被预先决定的比特而被指定为所选取组的8个奇数的路或是所选取组的8个偶数的路。在一个实施例中,被决定的比特是卷标
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1