《用于大型数据缓存的有效标签存储.pdf》由会员分享,可在线阅读,更多相关《用于大型数据缓存的有效标签存储.pdf(22页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103597455 A (43)申请公布日 2014.02.19 CN 103597455 A (21)申请号 201280027342.1 (22)申请日 2012.05.09 13/104,865 2011.05.10 US G06F 12/08(2006.01) (71)申请人 超威半导体公司 地址 美国加利福尼亚州 (72)发明人 钟在雄 尼兰詹孙达拉拉詹 (74)专利代理机构 上海胜康律师事务所 31263 代理人 李献忠 (54) 发明名称 用于大型数据缓存的有效标签存储 (57) 摘要 本发明公开了一种用于在计算机系统中实现 数据缓存的装置、 方法和介质。
2、。 所述装置包括第一 数据缓存、 第二数据缓存和缓存逻辑。 所述缓存逻 辑被配置成在所述第一数据缓存中缓存存储器数 据。在所述第一数据缓存中缓存所述存储器数据 包括在所述第一数据缓存中存储所述存储器数据 并在所述第二数据缓存中, 而非在所述第一数据 缓存中存储对应于所述存储器数据的标签数据。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2013.12.03 (86)PCT国际申请的申请数据 PCT/US2012/037178 2012.05.09 (87)PCT国际申请的公布数据 WO2012/154895 EN 2012.11.15 (51)Int.Cl. 权利要求书 2 页 。
3、说明书 11 页 附图 8 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书11页 附图8页 (10)申请公布号 CN 103597455 A CN 103597455 A 1/2 页 2 1. 一种装置, 其包括 : 第一数据缓存 ; 第二数据缓存 ; 以及 缓存逻辑, 其被配置成通过下列方式在所述第一数据缓存中缓存存储器数据 : 在所述第一数据缓存中存储所述存储器数据 ; 以及 在所述第二数据缓存中, 而非在所述第一数据缓存中存储对应于所述存储器数据的标 签数据。 2. 根据权利要求 1 所述的装置, 其中所述第一和第二数据缓存实现处理器的数据缓存 层。
4、次结构中的相应级别。 3. 根据权利要求 2 所述的装置, 其中由所述第一数据缓存实现的所述级别在所述缓存 层次结构中位于由所述第二数据缓存实现的所述级别的下方。 4. 根据权利要求 1 所述的装置, 其中使用堆栈存储器在所述处理器上实现所述第一数 据缓存。 5. 根据权利要求 4 所述的装置, 其中 : 所述堆栈存储器被组织成多个存储器页, 其中所述缓存逻辑被配置成在每个存储器页 中存储对应于物理系统存储器的连续区域的存储器数据。 6. 根据权利要求 1 所述的装置, 其中所述第一数据缓存可在运行时间动态地重新配置。 7. 根据权利要求 6 所述的装置, 其中所述第一数据缓存可在运行时间动态。
5、地重新配置 以修改所述第一数据缓存的大小、 块大小、 块的数量或关联级别。 8. 根据权利要求 6 所述的装置, 其中响应于操作系统做出的确定, 所述第一数据缓存 在运行时间通过所述操作系统动态地重新配置, 其中所述确定取决于所述处理器的工作负 荷的一个或多个特征。 9. 根据权利要求 6 所述的装置, 其中重新配置所述第一数据缓存包括修改所述第一数 据缓存的一个或多个配置寄存器, 其中所述配置寄存器可用于确定存储有对应于所述第一 数据缓存的给定块的标签信息的所述第二数据缓存的块。 10. 根据权利要求 6 所述的装置, 其中所述重新配置包括, 操作系统执行下列操作 : 冻结在所述处理器上执行。
6、的一个或多个线程的执行 ; 获取将所述处理器连接至系统存储器的存储器总线上的锁定 ; 将脏块写回至存储器中 ; 使所述第一数据缓存中的数据无效 ; 释放在所述存储器总线上的所述锁定 ; 以及 恢复所述一个或多个线程的执行。 11. 一种方法, 其包括 : 处理器在第一数据缓存中缓存由所述处理器访问的存储器数据 ; 所述处理器在第二数据缓存中, 而非在所述第一数据缓存中存储用于所述访问的存储 器数据的标签数据。 12. 根据权利要求 11 所述的方法, 其中所述第一和第二数据缓存实现所述处理器的数 据缓存层次结构中的相应级别, 其中由所述第一数据缓存实现的所述级别位于由所述第二 数据缓存实现的所。
7、述级别的下方。 权 利 要 求 书 CN 103597455 A 2 2/2 页 3 13. 根据权利要求 11 所述的方法, 其中使用堆栈存储器在所述处理器上实现所述第一 数据缓存。 14. 根据权利要求 13 所述的方法, 其中 : 所述堆栈存储器被组织成多个存储器页, 其中所述缓存逻辑被配置成在每个存储器页 中存储对应于物理系统存储器的连续区域的存储器数据。 15. 根据权利要求 11 所述的方法, 其中所述第一数据缓存可在运行时间动态地重新配 置。 16. 根据权利要求 15 所述的方法, 其中所述第一数据缓存可在运行时间动态地重新配 置以修改所述第一数据缓存的大小、 块大小、 块的数。
8、量或关联级别。 17. 根据权利要求 15 所述的方法, 其中响应于操作系统做出的确定, 所述第一数据缓 存可在运行时间通过所述操作系统动态地重新配置, 其中所述确定取决于所述处理器的工 作负荷的一个或多个特征。 18. 根据权利要求 15 所述的方法, 其中重新配置所述第一数据缓存包括修改所述第一 数据缓存的一个或多个配置寄存器, 其中所述配置寄存器可用于确定存储有对应于所述第 一数据缓存的给定块的标签信息的所述第二数据缓存的块。 19. 根据权利要求 11 所述的方法, 其还包括通过下列方式确定所述存储器数据被存储 在所述第一数据缓存中 : 使用所述数据的物理存储器地址确定所述物理存储器地。
9、址的标签值 ; 以及 确定所述标签值由所述第二数据缓存所存储。 20. 根据权利要求 19 所述的方法, 其中确定所述标签值由所述第二数据缓存所存储包 括 : 确定所述第二数据缓存的缓存块, 所述缓存块对应于所述物理存储器地址, 其中所述 确定取决于存储在所述第二数据缓存的一个或多个配置寄存器中的一个或多个缓存配置 值 ; 以及 确定所述缓存块存储有所述标签值。 21. 一种计算机可读存储介质, 其包括通过计算机系统上的可执行程序操作的数据结 构, 所述程序在所述数据结构上操作以执行制造包括由所述数据结构描述的电路系统的集 成电路的过程的一部分, 在所述数据结构中描述的所述电路系统包括 : 第。
10、一数据缓存 ; 第二数据缓存 ; 其中所述装置被配置成在所述第一数据缓存中存储缓存存储器数据, 且其中可用于访 问存储在所述第一数据缓存中的所述缓存存储器数据的标签信息被存储在所述第二数据 缓存中而非所述第一数据缓存中。 22. 根据权利要求 21 所述的计算机可读存储介质, 其中所述存储介质存储 HDL、 Verilog 或 GDSII 数据。 23. 一种方法, 其包括 : 通过将存储器数据存储在所述第一缓存的数据阵列中而在所述第一缓存中缓存存储 器数据, 并且在第二数据缓存的数据阵列中而非所述第一数据缓存的标签阵列中存储用于 所述第一缓存的对应的标签数据。 权 利 要 求 书 CN 10。
11、3597455 A 3 1/11 页 4 用于大型数据缓存的有效标签存储 0001 发明背景 0002 构建更强大的计算机处理器的主要困难是处理内核可执行计算的速度与处理内 核可从其上的存储器检索数据以执行那些计算的速度之间相差悬殊。尽管近年来已针对 “存储器间隙” 做出了很多努力, 但是处理能力仍继续超过存储器的速度。此外, 由于当今的 计算机处理器逐渐地变成多核 ( 即包括多个计算单元, 每个计算单元均被配置成执行软件 指令的对应流 ), 对存储器带宽的需求持续增长。 0003 为什么对存储器 ( 例如, 晶片外动态随机存取存储器 ) 的访问已不足以满足对增 长的多核处理器的吞吐量需求的一。
12、个原因是 I/O( 输入 / 输出 ) 引脚的有限可扩展性。堆 栈存储器或 3D 堆栈是最近的提案, 其通过将存储器直接堆栈在处理器上来解决该限制, 从 而显著地减少在处理器与存储器之间的线延迟。例如, 可使用结合有密集、 低延迟、 高带宽 的垂直互连的多层活性硅构造堆栈存储器电路。与传统的晶片外 DRAM 相比, 堆栈存储器提 供了增加的数据带宽、 减少的延迟和较低的能量要求。存储器堆栈还能使计算机设计师合 并不同的存储器技术, 如高速CMOS(互补金属氧化物半导体)、 高密度的DRAM、 eDRAM和/或 其它。 0004 堆栈存储器技术已用于实现大型最末级数据缓存 ( 即缓存层次结构的最。
13、低级 别 ), 如 L4 缓存。对于适应现代应用的相当大的存储器占用和 / 或多核处理器的高存储器 需求而言, 大型最末级缓存可能是理想的。 0005 使用堆栈存储器(即堆栈存储器缓存)实现大型最末级缓存具有数个优点。 例如, 可通过硬件而非软件管理该类缓存, 这可允许缓存轻易地适应应用相变并且避免与晶片内 和晶片外的数据传送相关联的转址旁路缓冲器 (TLB) 的清空。此外, 由于传统缓存是使用 无效率地消耗芯片空间的快速但昂贵的静态存储器 ( 例如, SRAM) 而实现的, 因此它们的生 产成本高、 具有小容量并且在固定的配置(例如, 关联性、 块大小等)中进行配置的。 与此相 反, 可使用。
14、动态存储器 ( 例如, DRAM) 实现堆栈存储器缓存, 与用于构建传统缓存的静态存 储器相比, 动态存储器更便宜且更密集。 对应地, 堆栈存储器缓存可按低于传统的基于SRAM 的技术的成本提供大型最末级缓存。 发明概要 0006 本发明公开了一种用于在计算机系统中实现数据缓存的装置、 方法和介质。装置 包括第一数据缓存、 第二数据缓存和缓存逻辑。缓存逻辑被配置成在第一数据缓存中缓存 存储器数据。 在第一数据缓存中缓存存储器数据包括在第一数据缓存中存储存储器数据并 在第二数据缓存中, 而非在第一数据缓存中存储对应于存储器数据的标签数据。 0007 在一些实施例中, 第一数据缓存可在运行时间动态。
15、地重新配置。例如, 软件 ( 例 如, 操作系统 ) 可通过修改第一数据缓存和 / 或第二数据缓存的一个或多个配置寄存器而 修改第一数据缓存的大小、 块大小、 块的数量、 关联级别和 / 或其它参数。在一些实施例中, 响应于对在一个或多个处理器上执行的工作负荷的特定特征的检测, 软件可重新配置第一 数据缓存。 说 明 书 CN 103597455 A 4 2/11 页 5 0008 在各种实施例中, 第一和第二数据缓存可实现数据缓存层次结构中的相应级别。 例如, 第一数据缓存可实现在缓存层次结构中位于由第二数据缓存实现的级别下方的级别 ( 例如, 第一数据缓存实现 L4 缓存且第二数据缓存实现。
16、 L3 缓存 )。在一些实施例中, 第一 数据缓存可以是大型最末级缓存, 其可使用堆栈存储器而实现。 0009 附图简述 0010 图 1 为示出根据一些实施例的包括具有 L3- 实现的标签阵列的可重新配置的 L4 数据缓存的处理器各组件的框图。 0011 图 2 为示出根据一些实施例的给定缓存可将给定的存储器地址分解成的各字段 的框图。 0012 图 3a 为示出根据各实施例的可如何保留一些 L3 缓存块以存储 L4 标签的框图。 0013 图 3b 示出根据一些实施例的可用于存储缓存标签的标签结构。 0014 图 4a 示出根据一些实施例的 L3 缓存逻辑可包括的用于实现可重新配置的 L4。
17、 缓 存的各寄存器。 0015 图 4b 示出根据一些实施例的 L4 缓存逻辑可包括的用于实现可重新配置的 L4 缓 存的各寄存器。 0016 图 5 为示出根据一些实施例的用于查阅存储在 L3 缓存中的 L4 标签以确定 L4 缓 存是否存储有与给定存储器地址对应的数据的方法的流程图。 0017 图6示出在DRAM页上的缓存块的实例布置, 其中每一页均存储有物理连续的存储 器。 0018 图 7 为示出根据一些实施例的用于定位与给定的物理地址对应的 L4 缓存块的方 法的流程图。 0019 图 8 为示出根据一些实施例的在运行时间对 L4 缓存进行重新配置的方法的流程 图。 0020 图 9。
18、 为示出根据一些实施例的用于可重新配置的缓存实施方式的配置寄存器的 4 个实例配置的表。 0021 图10为示出根据一些实施例的被配置成利用如本文所述的堆栈DRAM缓存的计算 机系统的框图。 具体实施方式 0022 本说明书包括参考 “一个实施例” 或 “实施例” 。短语 “在一个实施例中” 或 “在实 施例中” 的出现并不一定是指相同的实施例。可通过任何符合本公开的合适方式结合特定 特性、 结构或特征。 0023 术语。以下段落提供了用于在本公开 ( 包括所附权利要求 ) 中所发现术语的定义 和 / 或语境 : 0024 “包括” 。该术语是开放式的。如在所附权利要求中所使用的, 该术语并不。
19、排除附 加的结构或步骤。考虑一个权利要求, 其叙述 :“一种装置, 包括一个或多个处理单元” 这样的权利要求并不排除包括附加组件 ( 例如, 网络接口单元、 图形电路等 ) 的装置。 0025 “被配置成” 。各单元、 电路或其它组件均可被描述或要求为 “被配置成” 执行一个 任务或多个任务。在这样的语境下,“被配置成” 用于通过指示单元 / 电路 / 组件包括在操 说 明 书 CN 103597455 A 5 3/11 页 6 作中执行那项任务或那些任务的结构 ( 例如, 电路系统 ) 而表示结构的内涵。同样的, 单元 / 电路 / 组件可以被说成是被配置成执行任务即使当指定的单元 / 电路。
20、 / 组件当前并未操 作 ( 例如, 未开启 )。与 “被配置成” 语言一同使用的单元 / 电路 / 组件包括硬件例如, 电路, 存储有可执行以实现操作等的程序指令的存储器等。叙述单元 / 电路 / 组件 “被配 置成” 执行一个或多个任务明确地不旨在调用 35U.S.C.112 的第 6 段以用于该单元 / 电 路 / 组件。此外,“被配置成” 可包括通用结构 ( 例如, 通用电路系统 ), 其由软件和 / 或固 件 ( 例如, 执行软件的 FPGA 或通用处理器 ) 所操控以按能够执行待裁决任务的方式操作。 “被配置成” 还可包括使加工过程 ( 例如, 半导体制造设施 ) 适于制造适于实现。
21、或执行一个 或多个任务的设备 ( 例如, 集成电路 )。 0026 “第一” 、“第二” 等。如本文所使用的, 这些术语用作位于其之后的名词的标记且不 暗示任何类型的顺序 ( 例如, 空间上、 时间上、 逻辑上等 )。例如, 在具有 8 个处理元件或内 核的处理器中, 术语 “第一” 和 “第二” 处理元件可用于指 8 个处理元件中的任意两个。换 句话说,“第一” 和 “第二” 处理元件不限于逻辑处理单元 0 和 1。 0027 “基于” 。如本文所使用的, 该术语用于描述影响确定的一个或多个因素。该术语 并不排除可能会影响确定的附加因素。即, 确定可仅基于那些因素或至少部分地基于那些 因素。。
22、考虑短语 “基于 B 确定 A” 。虽然 B 可能是影响对 A 的确定的因素, 但是这样的短语 并不排除对 A 的确定还基于 C。在其它情况下, 可仅基于 B 而确定 A。 0028 由于处理器需要支持应用的越来越大的存储器占用以及多编程级别的增加, 缓存 的大小正在以极高的速度增加。堆栈存储器承诺提供显著的大芯片区域, 其可用于实现大 型最末级 DRAM 缓存, 且该缓存的大小范围从几百兆字节至未来更大。 0029 在构建大的堆栈 DRAM 缓存中的一个困难是需支持这样的缓存的标签阵列的大小 会消耗显著的芯片区域。缓存通常被组织成两个单独的阵列 : 数据阵列和标签阵列。数据 阵列条目持有源自。
23、相应存储器块的存储器数据而标签阵列则持有识别那些存储器块的标 识符 ( 即标签 )。例如, 在设置的关联缓存中, 标签可唯一地识别源自那些可映射至特定组 的给定存储器块。实现这样的标签阵列会消耗显著的芯片空间。例如, 具有 64B 缓存段的 典型的 256MB 缓存会需要 11MB 的标签阵列。 0030 由于标签阵列常常需要与其容量不相称的芯片区域的份额, 因此进一步使问题 加剧。由于对标签阵列的访问必须是快速的, 因此此类阵列通常使用快速而昂贵的静态 RAM(SARM) 或嵌入式动态 RAM(eDRAM) 构建, 即使数据阵列是使用较慢、 较便宜和较密集的 RAM(DRAM)而实现的。 不。
24、幸的是, 诸如SRAM等技术的密度显著小于DRAM(通常大12-15倍), 其意指与 DRAM 实现的数据阵列相比, 标签阵列对每单位容量需要更多的芯片空间。因此, 标签阵列所需的芯片空间为实现大型堆栈 DRAM 缓存的显著障碍。 0031 根据各实施例, 可配置大型堆栈存储器缓存以在较低级别的缓存中使用缓存块以 存储标签信息。例如, 在一些实施例中, 可使用堆栈 DRAM 实现大型 L4 缓存的数据阵列, 同 时可使用系统的 L3 缓存中的各块实现用于 L4 缓存的标签阵列。 0032 在一些实施例中, 可将堆栈存储器缓存实现为可重新配置的缓存。虽然传统的缓 存设计仅限于静态配置 ( 例如,。
25、 总大小、 关联性、 块大小等 ), 但如本文所述的可重新配置的 缓存可适应和 / 或响应于系统的工作负荷, 从而使特定缓存配置特制于工作负荷。 0033 图 1 为示出根据一些实施例的包括具有 L3- 实现的标签阵列的可重新配置的 L4 说 明 书 CN 103597455 A 6 4/11 页 7 数据缓存的处理器各组件的框图。本文所述的实施例中的许多都是根据 L4 缓存示出的, L4 缓存的标签阵列存储在 L3 中, 且 L3 在缓存层次结构中位于 L4 的下方。然而, 这些实例并 不旨在将实施例局限于 L4 和 L3 缓存本身的合作。相反地, 在不同实施例中, 本文所述的技 术和系统可。
26、被应用到位于缓存层次结构的各级别的缓存。如本文所使用的, 如果处理器在 尝试搜索第二缓存前尝试在第一缓存中找寻存储器数据 ( 例如, 在第一缓存上缓存失效的 事件中), 第一缓存则被说成是在缓存层次结构中位于高于第二缓存(或位于其上方)的级 别上。 0034 根据所述实施例, 处理器 100 包括 L3 缓存 110、 L4 缓存 135 和一个或多个处理内 核 105。处理内核 105 中的每一个可被配置成执行指令的相应流且各处理器 105 可共享对 L3110 和 / 或 L4135 的访问。处理内核 105 还可包括相应的专用缓存 ( 例如, L1) 和 / 或其 它共享的数据缓存 ( 。
27、例如, L2)。 0035 L3 缓存 110 和 L4 缓存 135 可实现处理器 100 上的数据缓存层次结构中的相应级 别 ( 例如, L3 缓存 110 可实现第三级缓存而 L4 缓存 135 则实现较低的第四级缓存 )。根据 这样的层次结构, 处理内核 105 可被配置成如果未在 L3 缓存 110 中找到数据, 则搜索 L4 缓 存 135 中的数据。在不同的实施例中, L3 缓存 110 和 L4 缓存 135 可根据不同的政策和 / 或 协议合作以从系统存储器中缓存数据。 0036 在一些实施例中, L4 缓存 135 可被实现为使用 DRAM 存储数据的堆栈缓存。例如, L4。
28、135 包括 L4 数据阵列 145, 其可使用 DRAM 而实现。作为运行实例, 我们将假设 L4 被配置 成具有存储在 2KB 的 DRAM 页 ( 例如, 3KB 的 DRAM 页 160) 中的 256B 缓存块的 256MB 的 32 路DRAM缓存, 每一页均被配置成存储多个缓存块, 如CB1至CBN, 其在缓存中可能是连续的。 0037 L4 缓存 135 包括用于管理缓存的缓存逻辑 140。可使用硬件电路系统在硬件中实 现缓存逻辑 140( 和 / 或缓存逻辑 115)。在一些实施例中, 缓存逻辑 140 可被配置成确定所 需数据是否存在于缓存中, 从而从缓存移除过期数据和 /。
29、 或将新的数据插入缓存中。在确 定源自特定存储器地址的数据是否存储在缓存中时, L4 缓存逻辑 140 可将存储器地址分解 为一些字段, 包括标签, 并使用那些组件以确定与存储器地址对应的数据是否存在于缓存 中和 / 或存在于缓存中的哪个地方。 0038 图 2 为示出根据一些实施例的给定缓存可将给定的存储器地址分解成的各字段 的框图。可根据存储器地址 ( 例如, 位数、 字节序等 ) 和 / 或缓存本身的配置 ( 例如, 关联 程度、 块的数量、 块的大小等 ) 变化特定字段和其长度。例如, 图 2 为示出 48 位存储器地址 的字段的框图, 如我们的实例 L4 缓存 ( 即具有 256B 。
30、缓存块的 256MB 的 32 路缓存 ) 所确定 的。根据所示实施例, 地址最高阶的 25 位对应于标签 205, 接下来较低阶的 15 位对应于索 引 210 且最低阶的 8 位对应于偏移 215。在这类实施例中, 索引 210 可用于定位存储器地址 映射至的一组缓存块 ( 即如果与存储器地址对应的数据存储在缓存内, 则其存储在该组中 的块中的一个块上 )。缓存逻辑 ( 例如, 140) 可确定与该组中缓存块相关联的各标签并将 那些标签与标签 205 比较。如果标签之一与标签 205 相匹配, 那么与该标签对应的缓存段 则存储用于该存储器地址的数据。接着, 缓存逻辑可使用偏移 215 以确。
31、定该数据被存储在 匹配缓存块中的哪个地方。 0039 现在返回图 1, 可将用于 L4 缓存段的数据存储在 L4 数据 145 中。如上所述, L4 缓 存135可被实现为使用DRAM或另一密集存储器技术以存储数据145的堆栈存储器缓存。 因 说 明 书 CN 103597455 A 7 5/11 页 8 此, L4 数据 145 可被配置成以相对低的成本具有高的存储器容量。然而, 由于 L4 数据 145 的高容量, 实现对应标签阵列可能需要大量的芯片空间, 特别是如果出于性能方面的考虑 指示应在相对稀疏的存储器技术 SRAM 中实现这样的标签阵列。 0040 根据所示实施例, 可将L413。
32、5配置成在较低级别的缓存, 如L3110中存储其标签而 不是在L4本身实现L4标签阵列。 例如, 在所示实施例中, L3缓存110包括用于管理L3缓存 的 L3 缓存逻辑 115( 即类似于 L4 缓存逻辑 140)、 L3 标签阵列 120 和 L3 数据阵列 125。除 了存储 L3 数据外, L3110 还可被配置成保留某个数量的 L3 数据 125 的缓存块以代表 L4135 存储标签。例如, 在所示的实施例中, L4 标签 130 被存储在 L3 数据 125 内且可由 L4135 使 用。如图 1 所示, L3 数据 125 中的每个缓存块可持有多个 L4 标签。 0041 图 3。
33、a 为示出根据各实施例的可如何保留一些 L3 缓存块以存储 L4 标签的框图。 缓存组 300 包括一些块, 其中的一些 ( 例如, 315a-315x) 用于存储用于 L3 缓存的 L3 数据。 然而, 其它的块 (如保留块 310) 则保留用于存储 L4 标签。 0042 L3 缓存可存储每个 L4 标签以作为标签结构, 如图 3b 所示的标签结构 320。图 3b 的标签结构包括标签本身 ( 即标签 325), 以及标签元数据。在所示的实例中, 标签为 25 位 且标签元数据包括有效位330和脏位335。 在其它的实施例中, 标签结构可包括其它标签元 数据。 0043 为了我们的运行实例。
34、 (256MB 的 32 路 256B 块的 2KB DRAM 页 L4、 28 位标签结构 ), 假设 L3 缓存 110 为具有 64B 缓存段的 16MB 的 32 路缓存, 且 L3 缓存组 300 对应于 L3110 的缓存组 ( 即在数据 125 中 )。给定该实例配置, 用于 L4 标签的总空间需求为 4MB。因此, 每个 L3 缓存组 ( 例如 300) 可保留其 32 个块中的八个以存储 L4 标签数据。例如, 缓存组 300 包括 32 个块 305 并保留那些块 (310) 中的 8 个以用于存储 L4 标签, 而剩余的 ( 即, 315a-315x) 则照常存储 L3 。
35、数据。八个保留块 (310) 的总容量为 512B, 其足以存储 128 个 28 位的标签结构。因此, 保留块 310 足以存储用于四个 32 路 L4 组的标签数据。在所示的 实施例中, 缓存组300的第一块存储用于L4的组0的十六个标签, 下一个块存储用于组1的 十六个标签, 依此类推直到组 3。第五个块存储属于组 0 的剩余标签, 第六个块存储属于组 1 的剩余标签, 依此类推, 使得八个保留块 310 存储用于 L4 的组 0-3 的所有标签数据。在本 文中, 将 N 个连续 L3 块中的每一个分配至不同的 L4 组, 且然后对随后的 N 个连续 L3 块重 复分配模式的技术可被称为。
36、分拆。读者应注意到图 3 的分拆配置仅旨在说明, 应理解的是, 在不同的实施例中, 保留块可按不同的顺序存储 L4 标签。 0044 返回图 1, 在一些实施例中, L3 缓存逻辑 110 和 L4 缓存逻辑 140 可被配置成在实 现分布式标签方案的过程中相互合作。例如, 要访问 ( 例如, 读或写 )L4 标签数据, L4 缓存 逻辑 140 可与 L3 缓存逻辑 115 通信, 这进而可从 L3 数据 125 获取所需的数据 ( 例如, L4 标 签 130)。 0045 将 L4 标签置于较低级别缓存的数据阵列, 如 L3 中, 可获得多种好处。例如, 本文 所述的标签存储方案可使系统。
37、 (1) 更有效地使用芯片空间, 和 / 或 (2) 响应于变化的工作 负荷而对 L4 缓存重新配置。 0046 就芯片空间而言, L3 缓存通常为高度关联的, 其意指征用一些缓存块可能对 L3 的 整体性能几乎没什么影响。此外, 在该方案中可能存在的大型 L4 缓存可抵消或消除由较小 有效的 L3 导致的任何性能损失。此外, 通过不实现专用 L4 标签阵列而节约的附加芯片空 说 明 书 CN 103597455 A 8 6/11 页 9 间可用于放大 L3 缓存, 从而减轻或完全消除 L3 的性能损失。 0047 就可重新配置性而言, 在一些实施例中, L3 逻辑 115 和 L4 逻辑 1。
38、40 可配置有控制 L4 缓存配置的寄存器。在运行时间中 ( 或前 ), 可修改这些寄存器中的值以引起缓存配置 中的变化。例如, 如果预期给定的工作负荷表现出非常高的空间局部性特征, 那么 L4 缓存 可被配置成使用较少但却大的缓存块。在另一实例中, 如果预期给定的工作负荷表现出非 常低的空间局部性, 那么 L4 缓存可被配置成使用较多但较小的缓存块。处理器的工作负荷 可包括在处理器上执行的一个或多个线程的存储器访问模式。 0048 图 4a 和 4b 示出 L3 和 L4 逻辑可包括的用于实现可重新配置的 L4 缓存的各寄存 器。寄存器可以是各种大小, 这取决于它们意图持有的数据以及关于 L。
39、4 和 / 或 L3 配置的 数据。此外, 在各实施例中, 不同的寄存器可被组合、 被并分解成多个其它寄存器和 / 或可 通过其它方式分布在寄存器中存储的信息。图 4a 的 L3 缓存逻辑 115 和图 4b 的 L4 缓存逻 辑 140 可分别对应于图 1 的缓存逻辑 115 和 140。 0049 根据图 4a, L3 缓存逻辑可包括标签缓存路保留向量, 如 TCWR400。TCWR400 可指示 保留了 L3 缓存中的哪些块以用于存储 L4 标签。例如, TCWR400 可存储指示保留了每个缓 存组中的哪些路用于 L4 标签的掩码向量。为了表示保留了每一组中的前八条路 ( 例如, 如 图。
40、 3a 中 ), 向量可以是 0xFF。因此, L3 缓存可使用存储在 TCWR 寄存器中的值以确定其可 使用哪些缓存段以存储 L3 数据以及保留了哪些缓存段以存储 L4 标签。 0050 在图 4b 中, L4 缓存逻辑 140 包括一些寄存器以协助标签访问 ( 例如, TCIM405、 TCW410、 TGM415 和 TGS420)、 一些寄存器以协助 L4 数据访问 ( 例如, CBS430、 PSM435、 PSO440 和 PABO445) 以及一个或多个用于其它目的的杂项寄存器 ( 例如, STN425)。这些寄存器和 其用途如下所述。 0051 标签大小寄存器(TGS)420,。
41、 其可用于指示每个标签的位数。 例如, 使用图2的实施 例, TGS 寄存器 420 可指示标签大小为 25 位。在一些实施例中, TGS 寄存器 420 可用于生成 用于计算给定地址的标签的标签掩码。 0052 在所示的实施例中, L4 缓存逻辑 140 包括标签掩码寄存器 TGM415, 其可用于从对 应的物理地址获得 L4 标签。例如, 可选择 TGM 以便使用标签掩码和给定的物理地址执行的 按位与运算 (bitwise-AND operation) 产生该地址的标签。例如, 为了从图 2 的地址 200 提 取最高阶的 25 位, TGM 寄存器可持有十六进制数字 0xFFFFFF80。
42、0000。 0053 L4 逻辑 140 还包括标签缓存路寄存器 (TCW)410。TCW 寄存器 410 可用于识别哪 些 L3 块被配置来持有给定的 L4 标签。例如, 如果根据分拆的分配模式 ( 如上所讨论的 ) 将标签存储在 L3 块中, 那么 TCW 寄存器可包括三个字段 : 路掩码 ( 指示存储有用于给定 L4 组的标签的 L3 组中的第一块 )、 数量字段 ( 指示存储有用于 L4 组的标签数据的 L3 块的数 量 ) 以及步幅字段 ( 指示 L4 组的数量, 其中 L3 组存储有用于 L4 组的标签数据 )。下面则 更详细地描述这些字段及其用途。 0054 路掩码字段可用于识别。
43、持有用于给定 L4 组的标签数据的第一块 ( 在给定的 L3 组 内)。 为了进行说明, 考虑图3a的实例, 其中每个L3组(例如, 组300)存储有用于分拆的分 配模式中四个 L4 组的标签数据。可使用两个位确定前四个块中的哪些存储有用于给定组 的标签。在这样的实例中, 路掩码字段可进行配置, 以便使用路掩码对物理地址的掩码 ( 即 在两个位上执行逻辑与运算 ) 产生 L3 块的识别符, 且 L3 块存储有与物理地址映射至的 L4 说 明 书 CN 103597455 A 9 7/11 页 10 组对应的 L4 标签。例如, TCW410 可持有十六进制值 0x300, 当其用于掩码物理地址。
44、如 200 时, 其将产生物理地址的第八位和第九位。该两个位可用于确定 0-3 之间的数字, 其可用于 识别前四个保留块中的哪些 ( 即 L3 缓存组 300 的 310) 持有用于物理地址映射至的 L4 组 的标签。例如, 如果两个位均为 00, 那么该值可识别 310 中的第一块, 01 值可识别第二块, 依此类推。 0055 TCW 寄存器的数量字段可指示要读取的块的数量, 以便获得与 L4 组对应的所有标 签。例如, 由于 L3 缓存组 300 使用两个 L3 块以存储与任何给定的 L4 组对应的标签, 数量 字段可以为二。 0056 TCW寄存器的步幅字段可指示L4组的数量, 且L3。
45、组存储有用于L4组的标签数据。 例如, 由于 L3 缓存组 300 存储有用于四个 L4 组 ( 即图 3a 中的组 0-3) 的标签数据, 步幅字 段可以为四。 0057 如果根据分拆的分配模式将L4标签存储于给定的L3缓存组中, 则可使用路掩码、 数量和步幅字段的组合定位与给定的L4组对应的L3组中的所有标签。 例如, 为了获得与给 定的 L4 组相关联的 L4 标签数据, 缓存逻辑 110 和 / 或 135 中的一个或多个可使用路掩码 以识别 L3 组中的第一相关块。接着, 逻辑可使用步幅和数量字段以确定使用的分拆模式, 从而定位和读取在存储有用于 L4 组的标签数据的 L3 组中的所。
46、有其它块。例如, 为 4 的步 幅值和为 2 的数量字段值将指示在第一块后有一个附加的块要读取, 且该附加的块为第一 个后的第四个块 ( 即第五个块, 如图 3a 所示 )。因此, 在这样的实施例中, 要读取的第 N 个 块可被计算为 ( 物理地址 & 路掩码字段 + 步幅字段 *(N-1)。为了读取所有相关的块, 逻辑 可为从 0 至数量字段值的每个 N 重复该计算。 0058 根据所示的实施例, 缓存逻辑 140 还包括标签缓存索引掩码 (TCIM)405。TCIM405 可用于指示存储有用于给定 L4 组的标签的具体 L3 组。例如, TCIM 值可用于将 L3 索引计 算为 ( 物理地。
47、址 &TCIM), 其中 “&” 表示逻辑与运算, 随后则进行右移以去掉尾随零。例 如, 如在运行实例中所述, 如果 L3 具有 8192 组 (16MB/(64B 块 *32- 块组 ), 那么 L3 组索引 则可被计算为物理地址的位 22-10。因此, TCIM405 可持有值 0x7FFC00。 0059 图 5 为根据一些实施例的用于查阅存储在 L3 缓存中的 L4 标签以确定 L4 缓存是 否存储有与给定存储器地址对应的数据的方法的流程图。可通过 L4 缓存逻辑 135 和 / 或 通过 L3 缓存逻辑 115 执行方法 500。相应缓存逻辑可被配置成如图 4a 和 4b 中所示, 。
48、包括 如上所述的相应寄存器。 0060 根据所示的实施例, 方法开始于逻辑确定物理地址 (PA) 时, 如在 505 中。例如, 逻 辑可确定正试图访问给定的物理地址的程序指令, 作为响应, 逻辑可能需要确定与该地址 对应的数据是否存储在 L4 缓存中。 0061 在 510 中, 逻辑确定用于物理地址的标签。例如, 在一些实施例中, 逻辑可通过 使用标签掩码掩码物理地址而确定标签, 如存储于 TGM415 中的那个标签掩码 ( 例如, PA&TGM)。 0062 在 515 中, 逻辑可确定 L3 组, 其中存储有与物理地址对应的数据。例如, 逻辑可通 过使用 TCIM 在物理地址上执行 “。
49、&” 运算而识别特定 L3 组, 如上所述。 0063 一旦逻辑已识别要搜索的标签 ( 如 510 中所述 ) 以及要在其中搜索该标签的 L3 组 ( 如 515 中所述 ), 逻辑可确定要在所确定的 L3 组内搜索的第一块 ( 如 520 中所 说 明 书 CN 103597455 A 10 8/11 页 11 述 )。例如, 在一些实施例中, 逻辑可通过使用 TCW 寄存器的路掩码字段掩码物理地址 ( 即 PA&TCW-way-mask) 而确定要在该组内搜索哪个块, 如 520 中所指示的。 0064 根据所示的实施例, 一旦逻辑确定了要检查的第一 L3 缓存块, 其可读取 L3 块 ( 如 525 中所述 ) 并确定 ( 如 530 中所述 )L3 块是否包含了在 510 中确定的 PA 标签。如果块包 含 PA 标签, 如通过从 530 确认的退出所指示的, 那么缓存逻辑则可确定缓存命中, 如在 535 中所述。否则, 如通过从 530 确认的退出所指示的, 那么逻辑则无法确定缓存命中。相反, 逻辑可检查可存。