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

文档序号:9921973阅读:来源:国知局
和不同的从MAT到MAT群组以及从MAT群组 到阈值的映射。事实上,在一实施例中,当处理器在运作时,所述映射可基于正在运行程序 或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参照图7-9。 此外,具不同的数目的MAT群组2909亦可以被采用。
[0197]如图25中所描述的,全关联快取内存2302可以另包括逻辑,其用以提供MAT群组 2909的使用,可有益地减少硬件数量(其系在所需的交换上以潜在较少的配置与有效运用 全关联快取内存2302的方式来达成)。例如,优选地,全关联快取内存2302仅具有对计数器 2306有用的MAT群组2909的数量、阈值2308和指标符2304,且每个条目的MAT 2314持有条目 112的MAT群组。
[0198]请参照图30,其所绘示为图23的快取内存2302其运作流程图。所述流程开始于方 块3002。
[0199] 在方块3002中,快取内存2302接收未能在快取内存202中命中的内存访问122。内 存访问122索引选取阵列104中的一个条目112。内存访问122指定MAT 101。分配单元106将 MAT 101映射到MAT群组2909。所述流程接着进行至方块3004。
[0200] 在方块3004中,分配单元106判定与MAT群组2909相关联的计数器2306是否已达到 与MAT群组2909相关联的阈值2911。所述流程进行至判定方块3006。
[0201 ] 在判定方块3006中,如果与MAT群组2909相关联的计数器2306已达到与MAT群组 2909相关联的阈值2911,所述流程接着进行至方块3008;否则,所述流程接着进行至方块 3012〇
[0202]在方块3008中,分配单元106替换阵列104其中一个有效条目112,所述有效条目 112其MAT 2314匹配于快取访问122的MAT群组2909。如图23所述,被替换的条目112可以是 通过各种不同的替换策略来选取,而采用关联于MAT群组2909的指标符2304为优选者。所述 流程结束于方块3008。
[0203]在方块3012中,分配单元106分配阵列104中的任何一个条目112,其类似于图27的 方块2712所描述。所述流程接着进行至方块3014。
[0204]在方块3014中,分配单元106递增关联于内存访问122其MAT群组2909的计数器 2306。所述流程接着进行至判定方块3016。
[0205]在判定方块3016中,分配单元106判定被替换的条目112否有效。如果是,所述流程 接着进行至方块3018;否则,所述流程结束。
[0206]在方块3018中,分配单元106递减关联于被替换条目112其MAT 2314的计数器 2306。所述流程结束于方块3018。
[0207]当某一特定阶层的快取其被规划为具有两个MAT群组且其中的第一 MAT群组仅能 分配至多全关联快取内存2302其阈值的数量(例如,80%),则图29和30的实施例可用来对 所述特定阶的快取来提高其效率。所述第一 MAT群组可以包括所有与数据相关(data-realted)的MAT,而第二MAT群组可以包括所有与代码相关(code-realted)的MAT(例如,代 码获取与代码预取),限制全关联快取内存2302中包含代码的快取线,可有效地在专用指令 快取(private instruction cache)中防止与数据(例如,流数据)间的争用情形发生。 [0208]请参照图31,其所绘示为一集合关联快取内存3102之方块示意图。图31的快取内 存3102在许多方面类似于图1的快取内存102,并且其具有相似编号的组件亦是相似的。然 而,图31的快取内存3102包括映射3108,其不同于图1的映射108。图31的映射3108可以包括 任何图1-22E所示的不同的映射;然而,图31的映射3108还包括将不同的多个MAT映射到MAT 优先级的映射3108,图32为其中一个例子。另外,用于每个有效的快取线的MAT 3114其存储 在阵列104中。亦即,当存储组件112被分配给快取线时,使所述分配加速的内存访问122其 MAT 101则是储存在存储组件112。有利地,MAT 3114连同MAT到MAT优先级映射3108的储存, 能够使快取内存3102将阵列104的一选定集合的有效快取线的MAT 3114包含于替换策略 中,以选取所选定集合其一个分路来作分配,其更详细的描述请参考如下,特别是参考图 33〇
[0209]请参照图32,其所绘示为根据本发明之一实施例之从MAT到图31的优先级3108其 映射之示意图。图32示例的映射包括对应于表1的32个MAT。图32的示例映射转载于表5。

[0212] 表5
[0213] 此处应当理解的是,虽然图32(和表5)描述了特定的MAT集合和从MAT到MAT优先级 的特定映射,但前述的实施例仅用于示例之目的,本发明亦适用于具不同MAT集合和从MAT 到MAT优先级的不同映射。事实上,在一实施例中,当处理器在运作时,所述映射可根据正在 运行程序或程序阶段而动态地被更新(例如通过图1的更新输入126),其相关详细内容请参 照图7-9。
[0214]请参照图33,其所绘示为一考虑到快取线其MAT的快取线替换策略流程图。所述流 程开始于方块3302。
[0215] 在方块3302中,快取内存3102接收在快取内存3102中未能命中的内存访问122。内 存访问122索引选取阵列104中的一个集合。内存访问122指定MAT 101。所述流程接着进行 至方块3304。
[0216] 在方块3304中,分配单元106根据用于所选定集合的替换策略来决定最符合的替 换分路与第二符合的替换分路。例如,如果替换策略是LRU/pLRU,分配单元106根据替换位 114来决定所选定集合的LRU分路和第二符合的LRU分路。在另一例子中,如果替换策略是轮 口4,分配单元106藉由替换位114的轮叫指标符来决定所指向的分路,并以轮叫顺序(round-robin order) 方向的下一个分路。在另一例子中 ,如果替换策略是是随机的 ,分配单元 106 随机地决定其中两个分路。此处应当理解的是,在一实施例里快取内存3102其分路、集合群 组、组块或包裹的分配是有限的话,则分配单元106仅考虑所选取集合的一个分路子集,再 检视所述分路子集里最符合和第二符合的分路的MAT优先级(MAT priority)。所述流程接 着进行至方块3306。
[0217] 在方块3306中,分配单元106检视在方块3304所决定之最符合分路的MAT 3114和 第二符合分路的MAT 3114,然后比较此两个MAT 3114其相对之MAT优先级3277。所述流程接 着进行至判定方块3308。
[0218] 在判定方块3308中,如果最符合分路的MAT优先级3377高于第二符合分路的MAT优 先级3377,所述流程接着进行至方块3312;否则,所述流程接着进行至方块3314。在一实施 例中,分配单元106计算最符合分路的MAT优先级3377与第二符合分路的MAT优先级3377之 间的差值并判定此差值是否大于阈值,而不是仅测试最符合分路的MAT优先级3377是否高 于第二符合分路的MAT优先级3377。此处应当注意的是,如果在选定集合(或其相关子集)具 有无效的分路,则分配单元106分配此无效分路而不是替换最符合和第二符合的分路。
[0219]在方块3312中,分配单元106替换第二符合分路而非最符合分路。所述流程接着进 行至方块3316。
[0220]在方块3314中,分配单元106替换最符合分路。所述流程接着进行至方块3316。 [0221]在方块3316中,分配单元106以快取访问122的MAT 101来更新被替换分路的MAT 3114。在这种方式下,阵列104的条目其MAT 3114被保持。所述流程接着进行至方块3318。 [0222]在方块3318中,分配单元106检视快取访问122的MAT 1011且判定其是否具有相对 低的优先级,例如,低于阈值。举例来说,在图32的实施例中,分配单元106可判定快取访问 122的MAT 1011是否低于3。所述流程接着进行至判定方块3322。
[0223]在判定方块3322中,如果快取访问122的MAT 1011具有相对低的优先级,所述流程 接着进行至方块3326;否则,所述流程接着进行至方块3324。
[0224]在方块3324中,分配单元106根据替换方案将被替换的分路插入替换位114中最不 适合的位置。举例来说,在LRU/pLRU方案下,分配单元106将被替换的分路插入最近使用位 置。另一个例子,在轮叫方案下,分配单元106以刚刚超过(past)被替换分路者来更新轮叫 指标符。所述流程结束于方块3324。
[0225]在方块3326中,分配单元106根据替换方案将被替换分路插入替换位114中适度 (moderately)的位置,前述的分配基于快取访问122的MAT优先级3277有多低为优选者。举 例来说,在LRU/pLRU方案下,分配单元106将被替换分路插入一中间位置。优选地,MAT优先 级3277愈低,分配单元106将被替换分路插入愈接近中间位置。相反地,MAT优先级3277愈 高,分配单元106将被替换分路插入愈远离中间位置且愈接近最近使用的位置。在一实施例 中,对那些非常低的MAT优先级3277(例如,优先级为0的预取)来说,分配单元106将被替换 分路插入在LRU或次于LRU(next-to-LRU)的位置。另一个例子,在轮叫方案下,分配单元106 依据MAT优先级3327有多低,来以更多超过(past)被替换分路的位置来更新轮叫指标符。在 一实施例中,当决定要将被替换分路插入于那个位置时,分配单元106还考虑到相对的MAT 优先级3327,其关联于与最不适合位置之邻近的一个或多个分路其MAT 3114。所述流程结 束于方块3326。
[0226]虽然在前述实施例中是以两个最符合分路作考虑,但在其他实施例可以以更多的 最符合分路来作考虑,例如,如果第三最符合分路其MAT优先级小于最符合分路和第二符合 分路,则分配单元106取代第三最符合分路。
[0227]在本案所述快取内存的各种配置,例如基于分路、集合群组、组块、MAT群组阈值、 或具不同替换策略的包裹的映射,其可以分类为静态分配(static configuration)、动态 配置(dynamic configuration)或同时具备此两者之配置。一般来说,静态分配是娃前 (pre-silicon)的规划工作。也就是说,设计者使用直觉,优选地通过处理器设计的软件仿 真(software simulation)的辅助以判好的配置。所谓好的配置指其能潜在地改善处理器 的性能,特别是快取内存的性能。处理器性能的改进能提高处理器执行程序的速度(例如, 降低每個指令比率的時鐘數量或增加每個時鐘比率的指令数量)和/或减少功率的消耗。所 述程序可以是操作系统、可执行的程序(例如,应用程序(application)、工具程序 (utility)、标准检查程序(benchmark))、动态链接库(dynamic link libraries)等。所述 软件仿真可用于进行程序的离线分析,进而去提高处理器的性能,其相关说明请参照图34-36(特别是相关于快取内存配置的叙述)。优选地,设计者可决定对大量程序集合有帮助的 静态分配,而设计者可将静态分配加入至用于芯片制造的设计中。
[0228]相反的,一般而言,硅后(post-silicon)规划则是用来分析动态配置。亦即,在处 理器被制造后,当处理器正在执行具不同于制造在硅芯片中静态分配(或是默认分配)的程 序时,设计者执行不同种类的离线分析以判定处理器的效能。硅后测试可涉及更严谨(也许 更蛮力(brute force))的技术,在此技术中用于进行相对于配置矩阵(configuration matrix)的自动性能回归(automated performance regression),然后进行回归性能数据 (regression performance data)分析,其相关说明请参照图37。设计者可以采用娃前测试 的结果作为对娃后(P〇st-si 1 icon)测试的初始种子(initial seed),例如,以试图避免局 部最大值(local maxima)并非全局最大值(global maxima)的情况。
[0229] 无论测试是娃前或娃后,经由动态配置测试(dynamic configuration testing), 在程序基础(per-program basis)或甚至在程序阶段基础(per-program phase basis)上 即可判定出好的配置。然后,当系统(例如,设备驱动器)检测到已知程序正在处理器上运行 (即,为所述程序的分析已被执行且已得知一个好的配置),所述系统提供此好的程序专用 (program-specific)配置到所述处理器,并且当处理器运行时,所述处理器用动态方式以 程序专用配置来更新快取内存。优选地,所述程序专用配置包括用于在程序不同阶段的不 同配置。此外,因应于程序专用配置,所述处理器还检测阶段变化且动态更新配置,其相关 说明请参照图36。
[0230] 程序阶段是相对于一组给定特性,其是一种计算器程序的子集,且具有一致行为 的特征。举例来说,假定相关特征是分支预测率(branch prediction rate)和快取命中率 (cache hit rate),则程序阶段则是指那些具有运行时间(runtime)行为的程序子集,在此 程序子集里分支预测率和快取命中率是一致的。例如,离线分析可确定某一特定数据压缩 程序(data compression program)有两个阶段:字典结构阶段(dictionary construction phase)和字典查找阶段(dictionary lookup phase)。字典结构阶段(dictionary construction phase)具有相对低的分支预测率(branch prediction rate)和相对高的快 取命中率(cache hit rate),与建立子字符串集合的方式一致(亦与建立字符串大量集合 的方式一致);而,字典查找阶段(dictionary lookup phase)具有相对高的分支预测率 (branch prediction rate)和相对低的快取命中率(cache hit rate),与在字典中查找子 字符串的方式一致(其查找范围较快取尺寸为大)。
[0231] 在一实施例中,可使用"预言快取"("oracle cache")来进行离线分析,其中"预言 快取"正如其名称所暗示的是对未来的预测。在快取内存有限的空间里,预言快取知道在任 何时间点都应该在快取内存中的存在最有用的数据。预言快取可以被概念化为快取内容的 逐周期(cycle-by-cycle)或逐指令(instruction-by-instruction)快照(snapshot),以产 生最尚命中率。
[0232] 首先,为程序执行(program execution)生成一系列的(sequence)预言内存快照 (oracle cache snapshot)和持续追踪内存访问的MAT,所述内存访问係在所述快照里产生 快取线的分配者。然后,为每一个所述快照产生圆形分格统计图表(pie chart)。其中,对于 每个MAT或MAT群组来说,所述圆形分格统计图表示出快取内存被快取线占据的百分比,所 述快取线因应于MAT的内存访问而被分配,其中的一个例子示于图38。然后,在所述程序的 后续执行中,处理器不断利用一系列的圆形分格统计图表所示的MAT百分比来重新分配 (re-budget)快取(或分路、集合群组、组块、包裹、阈值、MAT优先级,等等)。
[0233] 当重新规划细致到频率周期(clock cycle)或指令是不切实际的情形时,可倾向 以更长的持续时间来检视圆形分格统计图表系列,例如,完整的程序或程序阶段。然后,为 每一个MAT算出所有圆形分格统计图表系列(程序或程序阶段)的平均值以根据平均圆形分 格统计图表作分配。
[0234] 从广义上说,预言快取的想法是因为预先知道所有的内存访问,预言快取可以预 先执行(pre-execute)所有的内存访问。然后随着程序的执行,预言快取预测出在任何特定 的时间点里快取中最好的快取线集合。举例来说,在图35中,预言快取将预测出MAT 1的短 持续时间快取线(上面数来第二条实线)在其最后被访问后将不会再被快取。使用这样的分 析,可在每个MAT为基础之上得出对快取分配和替换策略的观察。
[0235] 请参照图34,其所绘示为用于程序和程序阶段的一映像其生成流程图。所述流程 开始于方块3402。
[0236]在方块3402中,设计者,优选地以自动方式,运行程序且记录由程序所生成并对快 取内存122,例如由程序所生成之对102、1002、1402、1502、1702、1902、2302、3102访问的内 存访问122。优选地,快取线的分配、命中和引退(eviction)被纪录下来。内存访问122的内 存地址、MAT 101和时间(例如,相对时序周期)被纪录下来。所述流程接着进行至方块3404。 [0237]在方块3404中,设计者,优选地以自动方式,定时地分析记录在方块3402的信息以 及识别出明显的趋势以将程序分离成不同阶段,其相关说明请参照图36。举例来说,所述明 显的趋势例如是识别MAT 101的工作集合尺寸(working set size)、MAT 101的平均快取线 寿命(average cache line lifetime)、MAT 101的平均命中率。所述流程接着进行至方块 3406 〇
[0238]在方块3406中,设计者,优选地以自动方式,基于在方块3404所进行的分析为不同 的程序阶段来建立(create)映像或配置。举例来说,所述映像或配置是利用分路的快取分 配映射(cache budget mapping),例如,图2的108;利用集合群组的快取分配映像,例如,图 10、14或15的1008;利用组块的快取分配映像,例如,图15或17的1508或1708;支持异构替换 策略的快取分配映像,例如,图19-22E的1908;基于MAT的条目分配阈值(MAT-based entry allocation threshold),例如,图23-24的2308;MAT至MAT群组和MAT群组至阈值的映像,例 如,图29的2908;和MAT优先级映像,例如,图31-32的3108。在一实施例中,所述用于判定映 像或配置的分析可以包括类似于图35-38所描述的分析。此处应当理解的是,一些程序可能 不会表现出明显的趋势,使得它们在被分解成不同的阶段有不良影响,在这种情况下,单一 的映像或配置对整个程序来说已是足够的。所述流程结束于方块3406。
[0239]请参照图35,其所绘示为一快取访问图形和从此图形提取的数据示意图。所述图 形之内存访问由点(dot)来表示。在图中,水平轴为时间,其为独立变量(independent variable);而纵轴为内存地址,其为因变量(dependent variable)。在指定的内存地址,水 平线对应于个别的快取线。线的左边缘表示快取线的分配,而线的右边缘表示快取线从快 取内存中被引退。每一个快取线有一个相关联的MAT,即如图35所示的MAT 1,MAT 2,MAT 3 和MAT 4.。在图35的例子中示出了6条快取线,其中两个具有关联的MAT 1,两个具有关联的 MAT 2, 一个具有关联的MAT 3,以及一个具有关联的MAT 4。
[0240]在图形下方所示出的是八个具一定间隔的时间间隔,总的工作集合尺寸(total working set size)和相应于每一个MAT的工作集合尺寸。所述时间间隔可以是与基本块传 输(basic block transfer)相关(其相关说明请参照图36)和用于为每一个程序阶段来判 定其程序阶段和配置或者映像。举例来说,在一特定的程序或阶段期间,其配置或映像可根 据具有相对较大工作组尺寸的MAT而分配更多的分路,集合群组,组块,或包裹;或者根据具 有相对较小工作组尺寸的MAT而分配更少的分路;或者至少将工作集合尺寸列入考虑,如图 35每个MAT所示。
[0241 ]另外,从图35的图形中亦可观察出每个个别的MAT其快取线其有用的长度,例如平 均快取线寿命。平均快取线寿命可依据在程序阶段之个别MAT中,计算所有快取线其寿命 (从分配到引退)的总合除以快取线的数目之值。这个信息可以被用来影响快取内存的替换 策略。
[0242] 如果预言快取所预测被快取的线其数目可以对应于集合和分路其在快取内存中 的预期数目,则快取分配与平均寿命观测的准确性可能会增加。其它指标也可以被收集,例 如每一 MAT的快取线命中情形。
[0243] 请参照图36,其所绘示为一程序其阶段分析之流程图。所述阶段分析是离线分析 的一种形式,其可用于判定处理器的可配置方面(例如,其快取内存或预取器)其好的配置 或映像。所述流程开始于方块3602。
[0244]在方块3602中,一程序其欲藉由处理器来改善其性能。首先,所述程序被进行分析 且被分解以生成状态图(state diagram)。状态图的节点(node)是所述程序的基本块 (basic block)。基本块是过程控制指令(program control
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1