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

文档序号:9921973阅读:来源:国知局
instruction)(例如,分支 (branch)、跳转(jump)、调用(call)、返回(re turn)等等)之间的指令系列(sequence of instruction)。在所述状态图中的每个边缘(edge)是一个由边缘所指引的目标基本块 (target basic block)状态改变信息,如下所述,其可成为一阶段标识符。阶段标识符可包 括控制车专移指令(control transfer instruction)的指令指标符(instruction pointer, IP)或程序计数器(program counter,PC)、所述控制转移指令(control transfer instruction)的目标地址(target address)、和/或控制转移指令的调用堆栈(call stack)。所述调用堆栈(call stack)可包括调用的返回地址(returen address)和参数。程 序阶段是具有一个或多个基本块的程序其一部分。所述流程接着进行至方块3604。
[0245]在方块3604中,所述程序用以分析某些特征。所述特征关于处理器其可配置的方 面,例如,快取内存映射、预取器MAT分数(prefetcher MAT score)、和快取配置模式(cache configurat ion mode )。所述特征例如包括快取命中率、分支预测准确性(branch prediction accuracy)、工作集合尺寸、平均快取线寿命、和快取污染(cache pollution) (例如,被预取但从未使用的快取线数目)。所述流程接着进行至方块3606。
[0246]在方块3606中,所述程序以一给定的配置(例如,给定的快取内存和/或预取器配 置)而被执行,并且通过观察方块3604所分析出的特征中的稳态行为(steady state behavior)来确定所述程序的阶段。举例来说,假设快取命中率是分析出的感兴趣特征之 一,并假设所述快取命中率从97%变为40 %。所述快取命中率变化的趋向指出快取内存配 置对所述程序来说之前是好的但是现在并不好。因此,在快取命中率变化之前的基本块系 列可以被识别为第一阶段,而在快取命中率变化之后的基本块系列可以被识别为第二阶 段。在另一个例子中,假设不同MAT其工作组尺寸是分析出的感兴趣特征之一,则工作组尺 寸显着的大位移(shift)可表示出在程序中的一个理想位置以识别出阶段改变。所述流程 接着进行至方块3608。
[0247]在方块3608中,一旦所述阶段被识别,用于每个阶段的好的配置、或映像、或配置 值则可被决定。举例来说,各种不同的离线分析技术可以被使用,其相关说明请参照图34、 35和37。所述流程接着进行至方块3612。
[0248]在方块3612中,将阶段标识符关联于阶段的变化。上述基本块切换(basic block transit ion)的状态改变信息(state change informat ion)或潜在阶段标识符(potential phase identifier)(如上所述,在特性分析时发生状态改变)会随着方块3608所判定的好 的配置一起被纪录,而所述信息会在程序被测得即将执行时,由设备驱动器(例如是)提供 给处理器。所述流程接着进行至方块3614。
[0249]在方块3614中,在接收到与所被分析的程序相关联的信息之后,处理器将如图8的 阶段标识符802加载(load)到阶段检测器804,其相关详细说明请参照图7-9。所述流程结束 于方块3614。
[0250] 请参照图37,其所绘示为一蛮力方法(brute force method)之流程图,所述蛮力 方法用于判定处理器其可配置方面(例如,其快取内存或预取器)的好的配置或映像。所述 方法使用"坐标下降"("coordinate descent")优化算法(optimization algorithm)。所述 流程开始于方块3702。
[0251]在方块3702中,一程序或一程序阶段其欲藉由处理器来改善其性能。所述方法重 复执行方块3704-3716直到一好的配置被判定(例如,在一个相对长的时间中没有改变的目 前最好配置)或资源已经过期(例如,时间和/或计算资源)。所述流程接着进行至方块3704。
[0252] 在方块3 704中,所述目前最好的配置被设置为默认配置(default conf iguration),例如,快取内存或预取器的默认映射。在一实施例中,默认配置简单的就 是处理器被制造时的配置。所述流程接着进行至方块3706。
[0253] 在方块3706中,为每一个配置参数(configuration parameter)来进行方块3708-3712。所述配置参数的一个例子是单一配置位(single configuration bit),其用以例如 开启或关闭特征(feature )。所述配置参数的另一个例子是配置域(conf iguration field),例如:矢量304、集合群组选取逻辑1106/2106、包裹指定符2001、阈值2308、MAT到 MAT集合群组及MAT组群组到阈值映射2908、及MAT到MAT优先级映射3108。所述流程接着进 行至方块3708。
[0254]在方块3708中,为方块3706配置参数其合理集合值中的每一个来进行方块3712-3716。所述配置参数其合理的集合值取决于配置参数的尺寸、参数的重要性、以及重复计算 其值所需资源的量。举例来说,在单一配置位的情况下,单一配置位的两个值都在合理集合 (reasonable set)内。举例来说,对于只有或少于16个参数,所述方法可以去尝试所有可能 的值。然而,对于相对大的域,例如32位的域,尝试所有2~32个可能的值是不可行的。在此情 况下,设计者可以提供一个包括多个值的合理集合给所述方法。举例来说,如上所述,设计 者可以观察具有类似特性的MAT群组并将它们组合在一起,以限制可能的数量。如果设计者 不能提供所述的值而可能的数量是相对较大,所述方法会用合理数目的参数随机值来重复 执行方块3712-3716。所述流程接着进行至方块3712。
[0255] 在方块3712中,所述程序或程序阶段以目前最好但被方块3708所得到的下一个参 数值所修改的配置来运行,并且测量其性能。所述流程接着进行至判定方块3714。
[0256] 在判定方块3714中,所述方法将方块3712所测量的性能与目前最好性能进行比 较,如果前者比较好,所述流程接着进行至方块3716;否则流程接着进行至方块3712,以测 试下一个参数值直到所有合理的数值都测试过,在此情况下,所述流程接着进行至方块 3708,以重复下一个配置参数直到所有的配置参数都测试过,在此情况下,所述方法结束, 而最终为所述程序或程序阶段生成目前最好配置。
[0257] 在方块3716中,所述方法以在方块3712测试的配置来更新最好的配置。所述流程 返回至方块3712,以测试目前参数的下一个数值直到合理的数值都测试过,在此情况下,所 述流程返回至方块3708,以重复执行下一个配置参数直到所有的配置参数都测试过,在此 情况下,所述方法结束,而最终为所述程序或程序阶段产生目前最好配置。
[0258]此处应当注意的是,设计者也许并不理解并且也不需要去理解为什么使用类似于 图37的方法所生成的配置能产生好的结果。
[0259]请参照图38,其所绘示为一分析结果之圆形分格统计图表3801。根据图34、36和37 所示不同的分析所得的结果,可以被概念化为一圆形分格统计图表,每个MAT具有一分片 (slice),即每个MAT具有其百分比。在通过以分路来分配快取的情况下,每个MAT其分路子 集大致对应其百分比。可替代地,如上所述,MAT可以被分组而每个MAT群组其分路子集大致 对应在此群组内所有MAT其百分比的总合。图38示出了一个例子。在以集合群组、组块或包 裹来分配快取的情况下,一圆形分格统计图表为每个组群,组块或包裹而被构造,然后以一 类似的技术被应用。所述圆形分格统计图表(pie chart)3801包括用于每个不同MAT群组的 一个分片。在图38的例子中,一预取群组(prefetch group)是42 %,一代码群组(code group)是 19%,一浮点群组(floating point group)是23%,一流数据群组(floating data group)是 11 %,以及一堆栈和分页表群组(stack andtablewalk groip)是5%。
[0260] 请参照图39,其所绘示为一处理器3900之方块示意图。处理器3900包括指令快取 3922,其用以提供指令给指令解码器3923。指令解码器3923用以解码所述指令且提供解码 指令给指令调度器3924。指令调度器3924用以将所述指令调度给执行单元3926来执行。优 选地,处理器3900的微结构是超纯量和非循序执行,然而本发明并不以此为限。在另一实施 例中,指令调度器3924还包括指令调度程序,其用以以超纯量和非循序方式将所述指令调 度(scheduling)给多个执行单元。优选地,处理器3900还包括结构缓存器(未示出)与非结 构缓存器(未示出)。结构缓存器用以持有处理器3900的结构状态。优选地,处理器3900还包 括缓存器别名表(RAT,未示出)和排序缓冲器(R0B,未示出)。所述缓存器别名表(RAT)用以 进行缓存器重命名。所述排序缓冲器(R0B)以程序顺序来引退指令。优选地,所述指令调度 器包括指令解译器(未示出),其用以将结构指令解译为可被执行单元3926所执行的处理器 3900的微指令集结构的微指令。
[0261] 处理器3900还包括内存子系统3928,其用以提供内存操作元至执行单元3926并从 执行单元3926接收内存操作元。优选地,内存子系统3928包括一个或多个加载单元、一个或 多个存储单元、加载列、存储列、用于向内存请求快取线的填充列、用于窥探与处理器3900 相通信的内存总线的窥探列、分页表寻访引擎和其他相关的功能单元。
[0262]处理器3900还包括与内存子系统3928相通信的快取内存102。优选地,快取内存 102类似于图1-38的快取内存。虽然图中仅绘出单一个快取内存102,快取内存102可以是较 大的快取内存子系统其多个快取内存级之一,例如level-1 (L1)指令快取、L1数据快取、与 统一level-2(L2)快取,其用以支持L1快取。在一实施例中,快取子系统还包括level-3(L3) 快取。处理器3900还可以包括一个或多个预取器,其用以将数据从内存预取至快取内存 102。在一个实施例中,处理器3900是一多核处理器,每一个核都具有上述的功能单元,并且 这些核共享快取内存102。
[0263]内存子系统3928生成快取内存102的内存访问122,其相关说明请参照图1-38的实 施例。内存访问122包括内存地址,其为内存被访问的位置。每个内存访问122还包括内存访 问类型(memory access type(MAT))101,如上所述。
[0264]虽然本发明的各种实施例已在本文中描述,但是此处应当理解的是,它们仅用于 示例而不能以此限定本发明实施之范围,即大凡依本发明申请专利范围及发明说明内容所 作之简单的等效变化与修饰,皆仍属本发明专利涵盖之计算器领域范围内。举例来说,软件 可以启用本案说明书所描述的装置和方法其功能、制造、建模(modeling)、模拟、描述和/或 测试。其可以通过使用通用编程语言(general programming langiage)来实现(例如,C、C+ + ),硬件描述语言(HDL)其包括Verilog HDL、VHDL等,或其他可用的程序。所述的软件可以 设置在任何已知的计算器可用介质,诸如磁带、半导体,磁盘、或光盘(例如,CD-R0M、DVD-R0M等)、网络、有线线路、无线或其它通信介质。本案的装置和方法实施例可以被包括在一 半导体知识产权核心,诸如处理器核心(例如,具体或者指定的HDL)和转化为集成电路的硬 件。另外,所述装置和方法可以被实施为硬件和软件的组合。因此,本发明不应当由本案描 述的任何示例性实施例限制,但应当仅根据下面的权利要求及其等同物限定。具体地,本发 明可以在通用计算器中使用的处理器装置所实现。最后,本领域的技术人员应该理解,他们 可以容易地使用公开的概念和具体的实施例作为设计或修改其它结构以实施本发明的相 同目的,而不脱离本发明的范围的基础所界定所附的权利要求。
[0265]以上所述,仅是本发明的实施例而已,并非对本发明作任何形式上的限制,虽然本 发明已以实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱 离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化 的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例 所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【主权项】
1. 一种集合联快取内存,其特征在于,包括: 具有存储组件的阵列,其被布置为Μ个集合与N个分路; 分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访 问,其中所述内存访问的每一个选取所述Μ个集合中的一个集合; 包裹指定符,用于多个包裹中的每一个包裹,所述包裹指定符用以指定: 包含于所述包裹的Ν个分路的分路子集,其中关联于选定的集合的包裹的分路子集相 互排斥;以及 多个预定替换方案中且关联于所述包裹的其中一个替换方案;以及 其中对于每个所述内存访问来说,所述分配单元: 选取所述多个包裹的其中一个包裹的包裹指定符以因应于所述内存访问;以及 使用关联于所述包裹的替换方案来分配所述包含于包裹的被选取集合的Ν个分路中的 子集。2. 如权利要求1所述的集合关联快取内存,更包括: 其中每个所述内存访问具有多个预定内存访问类型(MAT)其中一个相关联的MAT; 其中所述包裹指定符更将所述多个预定MAT其中一个或多个关联于所述包裹;以及 其中所述分配单元基于所述内存访问的MAT来选取所述多个包裹的其中一个包裹的包 裹指定符。3. 如权利要求2所述的集合关联快取内存,其特征在于,其中所述关联于内存访问的 MAT为所述替换方案的输入,所述替换方案被所述分配单元所使用以分配所述包含于包裹 的被选取集合的N个分路中的子集。4. 如权利要求1所述的集合关联快取内存,更包括: 对所述N个集合中的每个集合来说,关联的替换位; 其中所述包裹指定符更指定所述关联于包裹的替换位的一部份;以及 其中所述分配单元使用所述替换方案和所述关联于包裹的替换位的一部份来分配所 述包含于包裹的被选取集合的N个分路中的子集。5. 如权利要求1所述的集合关联快取内存,其特征在于,其中所述多个包裹对所述阵列 的Μ个集合中的所有的集合来说为全域。6. 如权利要求1所述的集合关联快取内存,其特征在于, 其中所述Μ个集合中的每个集合关联于L个相互排斥的集合群组中的一个;以及 其中所述L个相互排斥的集合群组中的每一个具有相应多个包裹。7. 如权利要求1所述的集合关联快取内存,其特征在于, 其中所述Μ个集合中的每一个具有相应多个包裹。8. 如权利要求1所述的集合关联快取内存,其特征在于,其中所述关联于多个包裹中的 至少其中之一的替换方案與所述关联于多个包裹的其它包裹的替换方案不同。9. 如权利要求1所述的集合关联快取内存,其特征在于,其中在所述快取内存的操作期 间,所述多个包裹的包裹指定符可动态地被更新。10. -种用于操作集合关联快取内存的方法,所述集合关联快取内存包括具有存储组 件的阵列且其被布置为Μ个集合与Ν个分路以及分配单元用以分配所述阵列的存储组件以 因应于在所述快取内存中未命中的内存访问,其中所述内存訪問中的每一个选取所述Μ个 集合中的其中一个,其特征在于,所述方法包括: 为多个包裹中的每一个包裹来存儲包裹指定符,所述包裹指定符用以指定: 包含于所述包裹的N个分路的子集,其中关联于选定集合的包裹的分路子集相互排斥; 以及 多个预定替换方案中且关联于所述包裹的一个替换方案;以及 对于每个所述内存访问来说: 选取所述多个包裹的其中一个包裹的包裹指定符以因应于所述内存访问;以及 使用关联于所述包裹的替换方案来分配所述包含于包裹的被选取集合的N个分路中的 子集。11. 如权利要求10所述的方法,更包括: 其中每个所述内存访问具有多个预定内存访问类型(MAT)其中之一个相关联的MAT; 其中所述包裹指定符更将所述多个预定MAT的其中一个或多个关联于所述包裹;以及 其中所述选取包裹指定符包括基于所述内存访问的MAT来选取所述多个包裹的其中一 个包裹的包裹指定符。12. 如权利要求13所述的方法,其特征在于,其中所述关联于内存访问的MAT为所述替 换方案的输入,所述替换方案被所述分配单元所使用以分配所述包含于包裹的被选取集合 的N个分路中的子集。13. 如权利要求13所述的方法,其特征在于,其中所述快取内存更包括,对所述N个集合 中的每个集合来说,关联的替换位,其中所述包裹指定符更指定所述关联于包裹的替换位 的一部份,所述方法更包括: 使用所述替换方案和所述关联于包裹的替换位的部份来分配所述包含于包裹的被选 取集合的N个分路中的子集。14. 如权利要求13所述的方法,更包括: 在所述快取内存的操作期间,更新所述多个包裹的包裹指定符。15. 如权利要求14所述的方法,更包括: 判定所述处理器上正在运行的程序,其中所述包裹指定符是由所述程序的离线分析所 判定;以及 更新所述多个包裹的包裹指定符以因应于当判定所述处理器上正在运行所述程序。16. -种集合关联快取内存,其特征在于,包括: 具有存储组件的阵列,其被布置为Μ个集合与N个分路; 分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访 问,其中所述内存訪問的每一个选取所述Μ个集合的其中一个集合;以及 其中当分配所述被选取集合的Ν个分路中的第一子集时,所述分配单元使用第一替换 方案,当分配所述被选取的组的Ν个分路中的第二子集时,所述分配单元使用第二替换方 案;以及 其中所述第一替换方案和第二替换方案不同。17. 如权利要求16所述的集合关联快取内存,其特征在于, 其中每个所述内存访问具有多个预定内存访问类型(MAT)其中之一个相关联的MAT;以 及 其中所述关联于内存访问的MAT为所述第一替换方案的输入,所述第一替换方案当分 配所述被选取的集合的N个分路中的第一子集时被所述分配单元所使用。18. 如权利要求17所述的关联快取内存,其特征在于,其中所述多个预定MAT包括以下 列表中的至少三个: 由所述处理器的一硬件预取器所生成的一内存访问; 由一浮点指令所生成的一内存访问; 由一融合微指令所生成的一内存访问; 由一媒体指令所生成的一内存访问; 由一用以修改一内存地址的指令所生成的一内存访问; 由一软件预取指令所生成的一内存访问; 一用以加载一結构描述符的内存访问; 由一用以指定一非暂时数据的指令所生成的一内存访问; 由一用以进行非对齐检查的指令所生成的一内存访问; 由一监控特权级别指令所生成的一内存访问; 由一零扩展产指令所生成的一内存访问; 由一遮照移动指令所生成的一内存访问; 由一堆栈推入指令所生成的一内存访问;以及 由所述处理器的一硬件分页表寻访引擎所生成的一内存访问。19. 一种集合关联快取内存,其特征在于,包括: 具有存储组件的阵列,其被布置为Μ个集合与N个分路,其中所述N个组的每一个组抱括 相关联的替换位; 分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访 问,其中所述内存访问的每一个选取所述Μ个集合的其中一个集合; 其中当分配所述被选定集合的Ν个分路中的第一子集时,所述分配单元使用所述替换 位的第一子集,当分配所述被选取集合的Ν个分路中的第二子集时,所述分配单元使用所述 替换位的第二子集;以及 其中所述替换位的第一子集和第二子集相互排斥。20. 如权利要求19所述的集合关联快取内存,其特征在于, 其中每个所述内存访问具有多个预定内存访问类型(MAT)其中之一个相关联的MAT;以 及 其中所述分配单元使用所述关联于内存访问的MAT来判定是否使用所述替换位的第一 子集来分配所述被选定集合的N个分路中的第一子集或使用所述替换位的第二子集来分配 所述被选定集合的N个分路中的第二子集。
【专利摘要】本发明提供一种集合关联快取内存,包括:具有存储组件的阵列,其被布置为M个集合与N个分路;分配单元,用以分配所述阵列的存储组件以因应于在所述快取内存中未命中的内存访问,其中所述内存访问的每一个选取所述M个集合中的一个集合;包裹指定符,用于多个包裹中的每一个包裹,所述包裹指定符用以指定:包含于所述包裹的N个分路的分路子集,其中关联于选定集合的包裹的分路子集相互排斥;以及多个预定替换方案中且关联于所述包裹的其中一个替换方案;以及其中对于每个所述内存访问来说,所述分配单元:选取所述多个包裹的其中一个包裹的包裹指定符以因应于所述内存访问;以及使用关联于所述包裹的替换方案来分配所述包含于包裹的被选取集合的N个分路中的子集。
【IPC分类】G06F12/121, G06F12/0862
【公开号】CN105701032
【申请号】CN201510796669
【发明人】罗德尼·E·虎克, 柯林·艾迪, 道格拉斯·R·瑞德, 约翰·麦可·吉尔
【申请人】上海兆芯集成电路有限公司
【公开日】2016年6月22日
【申请日】2015年11月18日
【公告号】WO2016097813A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1