具多样替换策略的集合关联快取内存的制作方法_4

文档序号:9921973阅读:来源:国知局
。分配单元106还接收图19中选定集合的替换位1914,所 述选定集合由内存访问122内存地址的索引来选取。基于选定的PST 2021以及被包裹指定 符2001所指定的替换位1914的一部份,在其它实施例中,分配单元106亦基于MAT 101生成 图19的替换分路116。分配单元106还更新替换位1914的所述部份,所述部份由包裹指定符 2001基于替换分路116的值来指定。
[0148]请参照图22A,其所绘示为一处理器其运作流程图,所述处理器具有图19的快取内 存1902。所述流程开始于方块2202。
[0149]在方块2202中,处理器接收映射,其包括图20的三重包裹指定符2021。所述流程接 着进行至方块2204。
[0150]在方块2204中,处理器以在方块2202所接收的映射(通过图19的更新输入126而 来)以更新快取内存1902的映射1908。所述流程结束于方块2204。
[0151] 请参照图22B,其所绘示为根据本发明之一实施例之图19的快取内存1902其运作 流程图。所述流程开始于方块2212。
[0152] 在方块2212中,快取内存1902接收在快取内存1902中未能命中的内存访问122。内 存访问122索引选取阵列104的一个集合。内存访问122指定MAT 101。内存访问122的内存地 址还被用于判定与选定集合相关联的集合群组,例如,集合群组选取逻辑2106生成图21的 集合群组编号2104以因应于内存访问122的内存地址。在全域包裹(global parce 1)的实施 例中(例如,图22C),因为其只有单一的PST 2021,因此没有必要去对PST 2021作选取。在每 集合包裹(parcel-per-set)的实施例中(例如,图22E),对集合的选取亦选取了PST 2021, 因为PST 2021关联于选定的集合。所述流程接着进行至方块2214。
[0153] 在方块2214中,分配单元106判定内存访问122关联于那一个包裹1901并且选取所 述关联的包裹1901其包裹指定符2001。在图21的实施例中,分配单元106检视选定的PST 2021并从中判定将选取那一个包裹指定符2001。分配单元106检视每个包裹指定符2001的 MAT矢量2004以判定其中那一个指定MAT 101。分配单元106选取指定的MAT 101的包裹指定 符2001。在一实施例中,如果MAT 101没有被任何的包裹指定符2001其MAT矢量2004所指定, 则分配单元106分配选定集合其任一个分路。
[0154] 在一替代实施例中,分配单元106从内存访问122的内存地址判定包裹1901。所述 判定并未参考MAT 101而是藉由比较所述内存地址和提供给分配单元106的一集合或一范 围的内存地址。在一实施例中,处理器的抖动检测器(thrashing detector)(例如,布尔过 滤器(bloom filter))监控那些匹配最近引退的快取线分配。举例来说,因程序对大的数据 结构产生随机内存器访问,抖动可能而发生。如果程序呈现这种行为,例如,程序通过内存 而遍历(traverse)链接列表而为目前的替换方案(例如,pLRU)建立一个最坏的情况,此较 差的时间和空间局部性可能会导致快取内存1902产生非常低的命中率。抖动检测器判定正 产生抖动的一组内存地址并提供分配单元106AST 2021被更新以对关联于所述内存地址 的集合建立不同的包裹1901,因此分配单元106利用一随机替代方案,并以由抖动检测器所 指出之落入所述内存地址集合之内存地址122来为所述集合进行分配。切換至随机替换策 略不见得能提高内存访问的命中率;然而,除了新的替换策略外,為其指定一包裹1901並并 藉由将程序其余部分与这些行为不佳的内存访问相关区域予以隔离,可以提高程序的整体 性能。
[0155] 在另一实施例中,一流数据检测器(streaming data detector)用以检测流数据 快取访问(streaming data memory access) 122。所述流数据检测器例如配置在处理器的 预取器,例如边界框预取器(bounding box prefetcher)。流数据快取访问122是在内存地 址的一范围内,所述内存地址应被隔离为快取内存1902的一个小的分路子集和/或其可从 不同替换方案获益。举例来说,假设一程序正以一规则的方式运行在内存的一个大型数据 结构(例如,所述程序包括重复(iterating over) -多维的对象阵列(multidimensional array of object)的嵌套循环(nested loops)),此规律性可能对内存层级(memory hierarchy)有不的良影响,其取决于阵列的大小、快取内存1902和/或替换策略。如果在所 述数据结构中的对象是压缩的(compact)并且如果快取线是以常规的大范围(stride)被访 问时,则对快取内存1902的影响是,当潜在有用的数据因其并非数据结构的一部分而被踢 出时,能有效地以基本上为使用一次(use-once)的数据来填充(fill up)快取内存1902。此 处应当指出的是,所述数据实际上可能并非仅使用一次,但如果所述数据结构是大到足以 别名(alias)多次(如,大于快取内存1902其分路的数目,例如16)而到同一集合时,因为在 快取内存1902被强迫去踢出第N个快取线以腾出空间给第N+16快取线前,所述第N个快取线 不可能被再次访问,因此所述数据可能也仅被使用一次。在这种情形下,预取器确认這些提 供給快取内存1902的数据流與信号(其係由预取器所產生且落入内存位址范围中的预取, 並由预取器提供給分配单元106之内存訪問122),应被区隔为不同的且具有快取内存1902 的小分路子集之包裹1901。在区隔新分配之外(或可能是以其他方式替代之),预取器会依 据分配被导向的方式,将所述分路之快取内存1902做导向而使用不同的替代策略(例如轮 口Η/FIFO或随机),PSTs 2021因此被更新并透过适当的替代策略而建立所需的包裹1902。
[0156] 所述流程接着从方块2214进行至方块2216。
[0157] 在方块2216中,分配单元106使用在方块2214中选定的包裹指定符2001来判定分 路子集,替换方案,和与包裹1901相关联的替换位1914的一部份。所述流程接着进行至方块 2218〇
[0158] 在方块2218中,分配单元106使用所述相关联的替换方案和所述替换位1914的一 部份来分配分路子集,所述分路子集关联于所选定集合的包裹1901,例如依据替换分路指 定符116之指示。所述流程接着进行至方块2222。
[0159] 在方块2222中,分配单元106基于在方块2218中被分配的分路来更新替换位1914 的一部份。所述替换位1914的一部份关联于包裹1901。所述流程结束于方块2222。
[0160]请参照图22C,其所绘示为图19的快取内存1902其方块示意图,所述快取内存1902 采用异质替换策略。在图22C的实施例中,包裹1901对快取内存1902其所有的集合(即,阵列 104的每个集合被以相同方式进行包裹)来说为全域的(global)。在图22C中,对阵列104的 所有集合来说,分路0-5的子集其包含于包裹0且被包裹指定符0所指定,如图中由右上到左 下的对角阴影线区域所示;分路6-9的子集其包含于包裹1且被包裹指定符1所指定,如图中 由左上到右下的对角阴影线区域所示;以及分路10-15的子集其包含于包裹2且被包裹指定 符2所指定,如图中的交叉阴影线区域所示。
[0161] 请参照图22D,其所绘示为根据本发明之一实施例之图19的快取内存1902其方块 示意图,所述快取内存1902其采用异质替换策略。在图22D的实施例中,包裹1901关联于集 合群组2291,亦即每一个集合群组2291被以相同的方式进行包裹。在图22D中,对阵列104的 集合群组0 2291-0(即,集合0-511)来说:分路0-5的子集其包含于包裹A且被包裹指定符1 所指定;分路6-9的子集其包含于包裹B且被包裹指定符2所指定;以及分路10-15的子集其 包含于包裹C且被包裹指定符3所指定。对阵列104的集合群组1 2291-1(8卩,集合512-1023) 来说:分路0-3的子集其包含于包裹D且被包裹指定符4所指定;分路4-11的子集其包含于包 裹E且被包裹指定符5所指定;以及分路12-15的子集其包含于包裹F且被包裹指定符6所指 定。对阵列104的集合群组2 2291-2(8卩,集合1024-1535)来说:分路0-9的子集其包含于包 裹G且被包裹指定符7所指定;以及分路10-15的子集其包含于包裹Η且被包裹指定符8所指 定。也就是说,群组2 2291-2只包括两个包裹1901。对阵列104的集合群组3 2291-3(8卩,集 合1536-2047)来说:所有的分路0-15其包含于包裹J且被包裹指定符9所指定。也就是说,群 组3 2291-3只包括一个包裹1901。
[0162] 请参照图22Ε,其所绘示为根据本发明之一实施例之图19的快取内存1902其方块 示意图,所述快取内存1902其采用异质替换策略。在图22Ε的实施例中,包裹1901关联于个 别的集合,即,每一集合被有其自己的包裹。在图22Ε中,对集合0来说:分路0-5的子集其包 含于包裹Α且被包裹指定符1所指定;分路6-9的子集其包含于包裹Β且被包裹指定符2所指 定;以及分路10-15的子集其包含于包裹C且被包裹指定符3所指定。对阵列104的集合1来 说:分路0-3的子集其包含于包裹D且被包裹指定符4所指定;分路4-11的子集其包含于包裹 E且被包裹指定符5所指定;以及分路12-15的子集其包含于包裹F且被包裹指定符6所指定。 对阵列104的集合2来说:分路0-9的子集其包含于包裹G且被包裹指定符7所指定;以及分路 10-15的子集其包含于包裹Η且被包裹指定符8所指定。对阵列104的集合2047来说:分路0-3 的子集其包含于包裹J且被包裹指定符9所指定;分路4-7的子集其包含于包裹Κ且被包裹指 定符10所指定;以及分路8-15的子集其包含于包裹L且被包裹指定符11所指定。在图22Ε中, 仅以包裹1901为代表,为简洁之故,并非阵列104其所有的包裹1901被示出。
[0163] 通过程序和程序线程的离线分析可观察到各种不同的倾向,并且当程序正在运行 时,可以判定出一个高效的映射且提供到快取内存1902以更新映射1908而增加快取内存 1902的效率。其方式类似于图7-9。
[0164] 请参照图23,其所绘示为全关联快取内存(fully associative cache memory) 2302之方块示意图。全关联快取内存2302包括由存储组件112所布置的阵列104。每个存储 组件(storage element) 112具有索引。在图23的示例中,索引是从0-511。在其它实施例中, 存储组件112可具有不同的数目。优选地,全关联快取内存2302是一个相对小的快取内存, 用以实现可接受的时序(timing)。全关联快取内存2302接收内存访问122,所述内存访问 122具有关联的MAT 101。全关联快取内存2302包括分配单元106,其从阵列104接收命中指 示(hit indication) 124。存储组件112,内存访问122和分配单元106类似于之前所述,除非 另有说明。阵列104中的每个存储组件112包括相应的MAT 2314,所述MAT 2314指定内存访 问的MAT,所述MAT促成存储组件112的分配。
[0165] 全关联快取内存2302还包括计数器2306,其每一关联于MAT且与分配单元106相通 信。每个计数器2306用以保持(maintain)阵列104的有效条目(存储组件112)其数目的计 数,所述阵列104其MAT 2314是来自与计数器2306相关联的MAT。
[0166] 全关联快取内存2302还包括阈值(threshold)2308,其每一关联于MAT且与分配单 元106相通信。每个阈值2308用以指定阵列104中可被分配至内存访问122的有效条目的最 大值,所述内存访问122具有关联于阈值2308的MAT。阈值2308可通过更新输入126而动态地 被更新,阈值2308其相关说明请参照图24。
[0167] 优选地,全关联快取内存2302还包指标符2304,其每一关联于MAT且与分配单元 106相通信。在一实施例中,每个指标符2304用以指定阵列104中最近被替换的有效条目的 索引。当所述MAT的计数2306已达到阈值2308,指标符2304对相关于具有MAT之有效条目以 轮叫方式做分配。在另一实施例中,当所述MAT的计数2306已达到阈值2308时,每个指指标 符2304指定与MAT相关之阵列104中有效条目的LRU或pLRU的索引。在另一实施例中,每個指 标符2304被用于指示與MAT相关之阵列104中,其有效条目LRU或pLRU之一者的索引。所述指 标符2304在当所述MAT的计数2306已达到阈值2308时,被用于对与MAT相关之阵列104的有 效条目,以LRU或pLRU的方式进行分配。在一实施例中,部分MAT可以在一替换策略中采用指 标符2304而其它的MAT可以在另一替换策略中采用指标符2304,其可透过离线分析而决定 具有最高效的策略。指标符2304可以包括一个或多个位,其用以指示所期望采取的替换策 略。
[0168] 因应于未能在全关联快取内存2302中命中的内存访问122,分配单元106基于MAT 101,计数器2306,阈值2308和指标符2304生成替换索引(r印lacement index)2316。替换索 引2316用以指定将被分配或取代的存储组件112的索引,其更详细描述请参考如下。
[0169] 请参照图24,其所绘示为根据本发明之一实施例之从MAT到图23的阈值2308其映 射之示意图。图24示例的映射包括对应于表1的32个MAT。图24的示例映射转载于表3。

[0172] 表3
[0173] 此处应当理解的是,虽然图24 (和表3)描述了一组特定的MAT和从MAT到阈值的特 定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT组合和从MAT到阈 值的不同映射。事实上,在一实施例中,当处理器在运作时,所述映射可根据正在运行程序 或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参照图7-9。
[0174] 请参照图25,其所绘示为图1的快取内存102其一部分之更详细之方块示意图。在 图25的实施例中,用于32个MAT之指标符2304和阈值2308成对的被提供至多任务器302。多 任务器302基于内存访问122的MAT指定符101的值来选取其中的一对,这对选定的指标符 2304和阈值2308被提供给图23的分配单元106。
[0175] 另外,用于32个MAT之每一的计数器2306被提供至第二多任务器2502。第二多任务 器2502基于MAT 101的值来选取计数器2306其中之一。基于选定的指标符2304、计数器2306 和阈值2308,分配单元106生成图23的替换索引2316。分配单元106基于替换索引2316的值 还更新图23的MAT2314、计数器2306和指标符2304,其更详细的相关说明请参照图27和30。
[0176] 类似于图3的描述,在一替代实施例中,快取内存102可以包括逻辑,其用以将具有 较大数目(例如,32个)的MAT映射到具有较小数目(例如,2个)的MAT群组,其相关说明请参 照图29-30。举例来说,在图25的实施例中,MAT分组逻辑(MAT grouping 1 ogic,未示出)接 收MAT 101且输MAT群组编号。MAT群组编号可作为选取输入而被提至供至多功器(MUX)302 与2502(而非MAT 101)。在本实施例中,经由降低计数器2306、阈值2308和指标符2304的数 目,可有益地减少硬件成本以及MAT 2314存储组件的尺寸。
[0177]请参照图26,其所绘示为一处理器其运作流程图,所述处理器具有图23的快取内 存2302。所述流程开始于方块2602。
[0178] 在方块2602中,处理器接收映射。所述映射将多个MAT(例如表1)中的每一个关联 到阈值(例如,图24与表3所示的映射)。优选地,快取内存102于制造时即具有默认阈值2308 的映射。优选地,默认阈值2308的映像用于多种不同程序使得快取内存102具有更高的操作 效能,或至少为了被认为具特定需求、及/或有可能被具有快取内存102之处理器所执行的 大多数程序而制造。所述流程接着进行至方块2604。
[0179] 在方块2604中,通过图23的更新输入126,处理器以在方块2602所接收的映射来更 新快取内存2302的阈值2308其映射。优选地,映射2308是在系统初始化(system initialization)且/或操作系统(operating system)开机(boot)时,由系统软件(例如, BIOS或操作系统)所更新。再者,优选地,映射2308是以每个程序基础(per program basis) 和/或每个程序阶段基础(per program phase basis)被更新,其相关详细说明请参照图7-9。所述流程结束于方块2604。
[0180]请参照图27,其所绘示为图23的快取内存2302其运作流程图。所述流程开始于方 块2702。
[0181] 在方块2702中,快取内存102接收未能在快取内存102中命中的内存访问122。内存 访问122索引选取阵列104中的一个条目112。内存访问122指定MAT 101。所述流程接着进行 至方块2704。
[0182] 在方块2704中,分配单元106判定与快取访问122的MAT 101相关联的计数器2306 是否已达到与MAT 101相关联的阈值2308。所述流程接着进行至判定方块2706。
[0183] 在判定方块2706中,如果与快取访问122的MAT 101相关联的计数器2306已达到与 MAT 101相关联的阈值2308,所述流程接着进行至方块2708;否则,所述流程接着进行至方 块2712。
[0184] 在方块2708中,分配单元106替换阵列104其中一个有效条目(valid entry)112, 所述有效条目112其MAT 2314匹配于快取访问122的MAT 101。如图23所述,将被替换的条目 112可以是通过各种不同的替换策略来选取,采用关联于MAT 101的指标符2304为优选者。 所述流程结束于方块2308。
[0185] 在方块2712中,分配单元106分配阵列104中的任何一个条目112。此处所采用的替 换策略可以是任何本案所述的任何替换策略。在一实施例中,全关联快取内存2302维持 (maintain)全局指标符(global pointer,未示出),其用以指向阵列104中与MAT无关的最 近被取代的有效条目的索引。优选地,在指出条目112后,分配单元106经由无效或不具内存 访问122的MAT 101的指标符找到下一个条目112。所述流程接着进行至方块2714。
[0186] 在方块2714中,分配单元106递增(increment)关联于内存访问122其MAT 101的计 数器2306。所述流程进行至判定方块2716。
[0187] 在判定方块2716中,分配单元106判定被替换的条目112否有效。如果是,所述流程 接着进行至方块2718;否则,所述流程结束。
[0188] 在方块2718中,分配单元106递减(decrement)关联于被替换条目112其MAT 2314 的计数器2306。所述流程结束于方块2718。
[0189]请参照图28,其所绘示为图23之全关联快取内存2302其运作流程图。所述流程开 始于方块2802。
[0190]在方块2802中,全关联快取内存2302使某一条目112无效,以因应于快取线从全关 联快取内存2302中被引退(eviction)。所述流程接着进行至方块2804。
[0191]在方块2804中,全关联快取内存2302递减关联于被无效的条目112其MAT 2314的 计数器2306。所述流程结束于方块2804。
[0192] 请参照图29,其所绘示为根据本发明一实施例之从MAT到MAT群组2909的映射2908 与从MAT群组2909到阈值2911的映射之示意图。在图29的示例中,其具有四个MAT群组,分别 表示为MAT群组0,ΜΑΤ群组1,MAT群组2和MAT群组3。图29的阈值2911类似于图23的阈值 2308,但其对应于四个MAT群组2909,而非对应于32个MAT。為了說明之故,圖29之MATs至MAT 群組2909的映射实例包含32個與表1相關的MATs。图29的示例映射转载于表4。
[0195] 表4
[0196] 从MAT群组到阈值2911的映射其用以将MAT群组0映射到400条目112的阈值2911, 将MAT群组0映射到400条目112的阈值2911,将MAT群组0映射到400条目112的阈值2911,以 及将MAT群组0映射到400条目112的阈值2911。此处应该理解的是,虽然图29 (和表4)描述了 一组特定的MAT集合以及从MAT到MAT群组与从MAT群组到阈值的特定映射,但前述的实施例 仅用于示例之目的,本发明亦适用于具不同MAT组
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1