用于大型数据缓存的有效标签存储的制作方法

文档序号:6495469阅读:247来源:国知局
用于大型数据缓存的有效标签存储的制作方法
【专利摘要】本发明公开了一种用于在计算机系统中实现数据缓存的装置、方法和介质。所述装置包括第一数据缓存、第二数据缓存和缓存逻辑。所述缓存逻辑被配置成在所述第一数据缓存中缓存存储器数据。在所述第一数据缓存中缓存所述存储器数据包括在所述第一数据缓存中存储所述存储器数据并在所述第二数据缓存中,而非在所述第一数据缓存中存储对应于所述存储器数据的标签数据。
【专利说明】用于大型数据缓存的有效标签存储
[0001]发明背景
[0002]构建更强大的计算机处理器的主要困难是处理内核可执行计算的速度与处理内核可从其上的存储器检索数据以执行那些计算的速度之间相差悬殊。尽管近年来已针对“存储器间隙”做出了很多努力,但是处理能力仍继续超过存储器的速度。此外,由于当今的计算机处理器逐渐地变成多核(即包括多个计算单元,每个计算单元均被配置成执行软件指令的对应流),对存储器带宽的需求持续增长。
[0003]为什么对存储器(例如,晶片外动态随机存取存储器)的访问已不足以满足对增长的多核处理器的吞吐量需求的一个原因是1/0(输入/输出)引脚的有限可扩展性。堆栈存储器或3D堆栈是最近的提案,其通过将存储器直接堆栈在处理器上来解决该限制,从而显著地减少在处理器与存储器之间的线延迟。例如,可使用结合有密集、低延迟、高带宽的垂直互连的多层活性硅构造堆栈存储器电路。与传统的晶片外DRAM相比,堆栈存储器提供了增加的数据带宽、减少的延迟和较低的能量要求。存储器堆栈还能使计算机设计师合并不同的存储器技术,如高速CMOS (互补金属氧化物半导体)、高密度的DRAM、eDRAM和/或其它。
[0004]堆栈存储器技术已用于实现大型最末级数据缓存(即缓存层次结构的最低级别),如L4缓存。对于适应现代应用的相当大的存储器占用和/或多核处理器的高存储器需求而目,大型最末级缓存可能是理想的。
[0005]使用堆栈存储器(即堆栈存储器缓存)实现大型最末级缓存具有数个优点。例如,可通过硬件而非软件管理该类缓存,这可允许缓存轻易地适应应用相变并且避免与晶片内和晶片外的数据传送相关联的转址旁路缓冲器(TLB)的清空。此外,由于传统缓存是使用无效率地消耗芯片空间的快速但昂贵的静态存储器(例如,SRAM)而实现的,因此它们的生产成本高、具有小容量并且在固定的配置(例如,关联性、块大小等)中进行配置的。与此相反,可使用动态存储器(例如,DRAM)实现堆栈存储器缓存,与用于构建传统缓存的静态存储器相比,动态存储器更便宜且更密集。对应地,堆栈存储器缓存可按低于传统的基于SRAM的技术的成本提供大型最末级缓存。
发明概要
[0006]本发明公开了一种用于在计算机系统中实现数据缓存的装置、方法和介质。装置包括第一数据缓存、第二数据缓存和缓存逻辑。缓存逻辑被配置成在第一数据缓存中缓存存储器数据。在第一数据缓存中缓存存储器数据包括在第一数据缓存中存储存储器数据并在第二数据缓存中,而非在第一数据缓存中存储对应于存储器数据的标签数据。
[0007]在一些实施例中,第一数据缓存可在运行时间动态地重新配置。例如,软件(例如,操作系统)可通过修改第一数据缓存和/或第二数据缓存的一个或多个配置寄存器而修改第一数据缓存的大小、块大小、块的数量、关联级别和/或其它参数。在一些实施例中,响应于对在一个或多个处理器上执行的工作负荷的特定特征的检测,软件可重新配置第一数据缓存。[0008]在各种实施例中,第一和第二数据缓存可实现数据缓存层次结构中的相应级别。例如,第一数据缓存可实现在缓存层次结构中位于由第二数据缓存实现的级别下方的级别(例如,第一数据缓存实现L4缓存且第二数据缓存实现L3缓存)。在一些实施例中,第一数据缓存可以是大型最末级缓存,其可使用堆栈存储器而实现。
[0009]附图简述
[0010]图1为示出根据一些实施例的包括具有L3-实现的标签阵列的可重新配置的L4数据缓存的处理器各组件的框图。
[0011]图2为示出根据一些实施例的给定缓存可将给定的存储器地址分解成的各字段的框图。
[0012]图3a为示出根据各实施例的可如何保留一些L3缓存块以存储L4标签的框图。
[0013]图3b示出根据一些实施例的可用于存储缓存标签的标签结构。
[0014]图4a示出根据一些实施例的L3缓存逻辑可包括的用于实现可重新配置的L4缓存的各寄存器。
[0015]图4b示出根据一些实施例的L4缓存逻辑可包括的用于实现可重新配置的L4缓存的各寄存器。
[0016]图5为示出根据一些实施例的用于查阅存储在L3缓存中的L4标签以确定L4缓存是否存储有与给定 存储器地址对应的数据的方法的流程图。
[0017]图6示出在DRAM页上的缓存块的实例布置,其中每一页均存储有物理连续的存储器。
[0018]图7为示出根据一些实施例的用于定位与给定的物理地址对应的L4缓存块的方法的流程图。
[0019]图8为示出根据一些实施例的在运行时间对L4缓存进行重新配置的方法的流程图。
[0020]图9为示出根据一些实施例的用于可重新配置的缓存实施方式的配置寄存器的4个实例配置的表。
[0021]图10为示出根据一些实施例的被配置成利用如本文所述的堆栈DRAM缓存的计算机系统的框图。
【具体实施方式】
[0022]本说明书包括参考“一个实施例”或“实施例”。短语“在一个实施例中”或“在实施例中”的出现并不一定是指相同的实施例。可通过任何符合本公开的合适方式结合特定特性、结构或特征。
[0023]术语。以下段落提供了用于在本公开(包括所附权利要求)中所发现术语的定义和/或语境:
[0024]“包括”。该术语是开放式的。如在所附权利要求中所使用的,该术语并不排除附加的结构或步骤。考虑一个权利要求,其叙述:“一种装置,包括一个或多个处理单元……”这样的权利要求并不排除包括附加组件(例如,网络接口单元、图形电路等)的装置。
[0025]“被配置成”。各单元、电路或其它组件均可被描述或要求为“被配置成”执行一个任务或多个任务。在这样的语境下,“被配置成”用于通过指示单元/电路/组件包括在操作中执行那项任务或那些任务的结构(例如,电路系统)而表示结构的内涵。同样的,单元/电路/组件可以被说成是被配置成执行任务即使当指定的单元/电路/组件当前并未操作(例如,未开启)。与“被配置成”语言一同使用的单元/电路/组件包括硬件一例如,电路,存储有可执行以实现操作等的程序指令的存储器等。叙述单元/电路/组件“被配置成”执行一个或多个任务明确地王旨在调用35U.S.C.§ 112的第6段以用于该单元/电路/组件。此外,“被配置成”可包括通用结构(例如,通用电路系统),其由软件和/或固件(例如,执行软件的FPGA或通用处理器)所操控以按能够执行待裁决任务的方式操作。“被配置成”还可包括使加工过程(例如,半导体制造设施)适于制造适于实现或执行一个或多个任务的设备(例如,集成电路)。
[0026]“第一”、“第二”等。如本文所使用的,这些术语用作位于其之后的名词的标记且不暗示任何类型的顺序(例如,空间上、时间上、逻辑上等)。例如,在具有8个处理元件或内核的处理器中,术语“第一”和“第二”处理元件可用于指8个处理元件中的任意两个。换
句话说,“第一”和“第二”处理元件不限于逻辑处理单元O和I。
[0027]“基于”。如本文所使用的,该术语用于描述影响确定的一个或多个因素。该术语并不排除可能会影响确定的附加因素。即,确定可仅基于那些因素或至少部分地基于那些因素。考虑短语“基于B确定A”。虽然B可能是影响对A的确定的因素,但是这样的短语并不排除对A的确定还基于C。在其它情况下,可仅基于B而确定A。
[0028]由于处理器需要支持应用的越来越大的存储器占用以及多编程级别的增加,缓存的大小正在以极高的速度增加。堆栈存储器承诺提供显著的大芯片区域,其可用于实现大型最末级DRAM缓存,且该缓存的大小范围从几百兆字节至未来更大。
[0029]在构建大的堆栈DRAM缓存中的一个困难是需支持这样的缓存的标签阵列的大小会消耗显著的芯片区域。缓存通常被组织成两个单独的阵列:数据阵列和标签阵列。数据阵列条目持有源自相应存储器块的存储器数据而标签阵列则持有识别那些存储器块的标识符(即标签)。例如,在设置的关联缓存中,标签可唯一地识别源自那些可映射至特定组的给定存储器块。实现这样的标签阵列会消耗显著的芯片空间。例如,具有64B缓存段的典型的256MB缓存会需要IlMB的标签阵列。
[0030]由于标签阵列常常需要与其容量不相称的芯片区域的份额,因此进一步使问题加剧。由于对标签阵列的访问必须是快速的,因此此类阵列通常使用快速而昂贵的静态RAM(SARM)或嵌入式动态RAM (eDRAM)构建,即使数据阵列是使用较慢、较便宜和较密集的RAM(DRAM)而实现的。不幸的是,诸如SRAM等技术的密度显著小于DRAM(通常大12-15倍),其意指与DRAM实现的数据阵列相比,标签阵列对每单位容量需要更多的芯片空间。因此,标签阵列所需的芯片空间为实现大型堆栈DRAM缓存的显著障碍。
[0031]根据各实施例,可配置大型堆栈存储器缓存以在较低级别的缓存中使用缓存块以存储标签信息。例如,在一些实施例中,可使用堆栈DRAM实现大型L4缓存的数据阵列,同时可使用系统的L3缓存中的各块实现用于L4缓存的标签阵列。
[0032]在一些实施例中,可将堆栈存储器缓存实现为可重新配置的缓存。虽然传统的缓存设计仅限于静态配置(例如,总大小、关联性、块大小等),但如本文所述的可重新配置的缓存可适应和/或响应于系统的工作负荷,从而使特定缓存配置特制于工作负荷。
[0033]图1为示出根据一些实施例的包括具有L3-实现的标签阵列的可重新配置的L4数据缓存的处理器各组件的框图。本文所述的实施例中的许多都是根据L4缓存示出的,L4缓存的标签阵列存储在L3中,且L3在缓存层次结构中位于L4的下方。然而,这些实例并不旨在将实施例局限于L4和L3缓存本身的合作。相反地,在不同实施例中,本文所述的技术和系统可被应用到位于缓存层次结构的各级别的缓存。如本文所使用的,如果处理器在尝试搜索第二缓存前尝试在第一缓存中找寻存储器数据(例如,在第一缓存上缓存失效的事件中),第一缓存则被说成是在缓存层次结构中位于高于第二缓存(或位于其上方)的级另丨J上。
[0034]根据所述实施例,处理器100包括L3缓存110、L4缓存135和一个或多个处理内核105。处理内核105中的每一个可被配置成执行指令的相应流且各处理器105可共享对L3110和/或L4135的访问。处理内核105还可包括相应的专用缓存(例如,LI)和/或其它共享的数据缓存(例如,L2)。
[0035]L3缓存110和L4缓存135可实现处理器100上的数据缓存层次结构中的相应级别(例如,L3缓存110可实现第三级缓存而L4缓存135则实现较低的第四级缓存)。根据这样的层次结构,处理内核105可被配置成如果未在L3缓存110中找到数据,则搜索L4缓存135中的数据。在不同的实施例中,L3缓存110和L4缓存135可根据不同的政策和/或协议合作以从系统存储器中缓存数据。
[0036]在一些实施例中,L4缓存135可被实现为使用DRAM存储数据的堆栈缓存。例如,L4135包括L4数据阵列145,其可使用DRAM而实现。作为运行实例,我们将假设L4被配置成具有存储在2KB的DRAM页(例如,3KB的DRAM页160)中的256B缓存块的256MB的32路DRAM缓存,每一页均被配置成存储多个缓存块,如CBl至CBN,其在缓存中可能是连续的。
[0037]L4缓存135包括用于管理缓存的缓存逻辑140。可使用硬件电路系统在硬件中实现缓存逻辑140 (和/或缓存逻辑115)。在一些实施例中,缓存逻辑140可被配置成确定所需数据是否存在于缓存中,从而从缓存移除过期数据和/或将新的数据插入缓存中。在确定源自特定存储器地址的数据是否存储在缓存中时,L4缓存逻辑140可将存储器地址分解为一些字段,包括标签,并使用那些组件以确定与存储器地址对应的数据是否存在于缓存中和/或存在于缓存中的哪个地方。
[0038]图2为示出根据一些实施例的给定缓存可将给定的存储器地址分解成的各字段的框图。可根据存储器地址(例如,位数、字节序等)和/或缓存本身的配置(例如,关联程度、块的数量、块的大小等)变化特定字段和其长度。例如,图2为示出48位存储器地址的字段的框图,如我们的实例L4缓存(即具有256B缓存块的256MB的32路缓存)所确定的。根据所示实施例,地址最高阶的25位对应于标签205,接下来较低阶的15位对应于索引210且最低阶的8位对应于偏移215。在这类实施例中,索引210可用于定位存储器地址映射至的一组缓存块(即如果与存储器地址对应的数据存储在缓存内,则其存储在该组中的块中的一个块上)。缓存逻辑(例如,140)可确定与该组中缓存块相关联的各标签并将那些标签与标签205比较。如果标签之一与标签205相匹配,那么与该标签对应的缓存段则存储用于该存储器地址的数据。接着,缓存逻辑可使用偏移215以确定该数据被存储在匹配缓存块中的哪个地方。
[0039]现在返回图1,可将用于L4缓存段的数据存储在L4数据145中。如上所述,L4缓存135可被实现为使用DRAM或另一密集存储器技术以存储数据145的堆栈存储器缓存。因此,L4数据145可被配置成以相对低的成本具有高的存储器容量。然而,由于L4数据145的高容量,实现对应标签阵列可能需要大量的芯片空间,特别是如果出于性能方面的考虑指示应在相对稀疏的存储器技术SRAM中实现这样的标签阵列。
[0040]根据所示实施例,可将L4135配置成在较低级别的缓存,如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]图3a为示出根据各实施例的可如何保留一些L3缓存块以存储L4标签的框图。缓存组300包括一些块,其中的一些(例如,315a-315x)用于存储用于L3缓存的L3数据。然而,其它的块(如保留块310)则保留用于存储L4标签。
[0042]L3缓存可存储每个L4标签以作为标签结构,如图3b所示的标签结构320。图3b的标签结构包括标签本身(即标签325),以及标签元数据。在所示的实例中,标签为25位且标签元数据包括有效位330和脏位335。在其它的实施例中,标签结构可包括其它标签元数据。
[0043]为了我们的运行实例(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数据。八个保留块(310)的总容量为512B,其足以存储128个28位的标签结构。因此,保留块310足以存储用于四个32路L4组的标签数据。在所示的实施例中,缓存组300的第一块存储用于L4的组O的十六个标签,下一个块存储用于组I的十六个标签,依此类推直到组3。第五个块存储属于组O的剩余标签,第六个块存储属于组I的剩余标签,依此类推,使得八个保留块310存储用于L4的组0-3的所有标签数据。在本文中,将N个连续L3块中的每一个分配至不同的L4组,且然后对随后的N个连续L3块重复分配模式的技术可被称为分拆。读者应注意到图3的分拆配置仅旨在说明,应理解的是,在不同的实施例中,保留块可按不同的顺序存储L4标签。
[0044]返回图1,在一些实施例中,L3缓存逻辑110和L4缓存逻辑140可被配置成在实现分布式标签方案的过程中相互合作。例如,要访问(例如,读或写)L4标签数据,L4缓存逻辑140可与L3缓存逻辑115通信,这进而可从L3数据125获取所需的数据(例如,L4标签 130)。
[0045]将L4标签置于较低级别缓存的数据阵列,如L3中,可获得多种好处。例如,本文所述的标签存储方案可使系统(I)更有效地使用芯片空间,和/或(2)响应于变化的工作负荷而对L4缓存重新配置。
[0046]就芯片空间而言,L3缓存通常为高度关联的,其意指征用一些缓存块可能对L3的整体性能几乎没什么影响。此外,在该方案中可能存在的大型L4缓存可抵消或消除由较小有效的L3导致的任何性能损失。此外,通过不实现专用L4标签阵列而节约的附加芯片空间可用于放大L3缓存,从而减轻或完全消除L3的性能损失。
[0047]就可重新配置性而言,在一些实施例中,L3逻辑115和L4逻辑140可配置有控制L4缓存配置的寄存器。在运行时间中(或前),可修改这些寄存器中的值以引起缓存配置中的变化。例如,如果预期给定的工作负荷表现出非常高的空间局部性特征,那么L4缓存可被配置成使用较少但却大的缓存块。在另一实例中,如果预期给定的工作负荷表现出非常低的空间局部性,那么L4缓存可被配置成使用较多但较小的缓存块。处理器的工作负荷可包括在处理器上执行的一个或多个线程的存储器访问模式。
[0048]图4a和4b示出L3和L4逻辑可包括的用于实现可重新配置的L4缓存的各寄存器。寄存器可以是各种大小,这取决于它们意图持有的数据以及关于L4和/或L3配置的数据。此外,在各实施例中,不同的寄存器可被组合、被并分解成多个其它寄存器和/或可通过其它方式分布在寄存器中存储的信息。图4a的L3缓存逻辑115和图4b的L4缓存逻辑140可分别对应于图1的缓存逻辑115和140。
[0049]根据图4a,L3缓存逻辑可包括标签缓存路保留向量,如TCWR400。TCWR400可指示保留了 L3缓存中的哪些块以用于存储L4标签。例如,TCWR400可存储指示保留了每个缓存组中的哪些路用于L4标签的掩码向量。为了表示保留了每一组中的前八条路(例如,如图3a中),向量可以是OxFF。因此,L3缓存可使用存储在TCWR寄存器中的值以确定其可使用哪些缓存段以存储L3数据以及保留了哪些缓存段以存储L4标签。
[0050]在图4b中,L4缓存逻辑140包括一些寄存器以协助标签访问(例如,TCIM405,TCW410、TGM415 和 TGS420)、一些寄存器以协助 L4 数据访问(例如,CBS430、PSM435、PS0440和PAB0445)以及一个或多个用于其它目的的杂项寄存器(例如,STN425)。这些寄存器和其用途如下所述。
[0051]标签大小寄存器(TGS)420,其可用于指示每个标签的位数。例如,使用图2的实施例,TGS寄存器420可指示标签大小为25位。在一些实施例中,TGS寄存器420可用于生成用于计算给定地址的标签的标签掩码。
[0052]在所示的实施例中,L4缓存逻辑140包括标签掩码寄存器TGM415,其可用于从对应的物理地址获得L4标签。例如,可选择TGM以便使用标签掩码和给定的物理地址执行的按位与运算(bitwise-AND operation)产生该地址的标签。例如,为了从图2的地址200提取最高阶的25位,TGM寄存器可持有十六进制数字0XFFFFFF800000。
[0053]L4逻辑140还包括标签缓存路寄存器(TCW)410。TCff寄存器410可用于识别哪些L3块被配置来持有给定的L4标签。例如,如果根据分拆的分配模式(如上所讨论的)将标签存储在L3块中,那么TCW寄存器可包括三个字段:路掩码(指示存储有用于给定L4组的标签的L3组中的第一块)、数量字段(指示存储有用于L4组的标签数据的L3块的数量)以及步幅字段(指示L4组的数量,其中L3组存储有用于L4组的标签数据)。下面则更详细地描述这些字段及其用途。
[0054]路掩码字段可用于识别持有用于给定L4组的标签数据的第一块(在给定的L3组内)。为了进行说明,考虑图3a的实例,其中每个L3组(例如,组300)存储有用于分拆的分配模式中四个L4组的标签数据。可使用两个位确定前四个块中的哪些存储有用于给定组的标签。在这样的实例中,路掩码字段可进行配置,以便使用路掩码对物理地址的掩码(即在两个位上执行逻辑与运算)产生L3块的识别符,且L3块存储有与物理地址映射至的L4组对应的L4标签。例如,TCW410可持有十六进制值0x300,当其用于掩码物理地址如200时,其将产生物理地址的第八位和第九位。该两个位可用于确定0-3之间的数字,其可用于识别前四个保留块中的哪些(即L3缓存组300的310)持有用于物理地址映射至的L4组的标签。例如,如果两个位均为00,那么该值可识别310中的第一块,01值可识别第二块,依此类推。
[0055]TCff寄存器的数量字段可指示要读取的块的数量,以便获得与L4组对应的所有标签。例如,由于L3缓存组300使用两个L3块以存储与任何给定的L4组对应的标签,数量字段可以为二。
[0056]TCff寄存器的步幅字段可指示L4组的数量,且L3组存储有用于L4组的标签数据。例如,由于L3缓存组300存储有用于四个L4组(即图3a中的组0-3)的标签数据,步幅字段可以为四。
[0057]如果根据分拆的分配模式将L4标签存储于给定的L3缓存组中,则可使用路掩码、数量和步幅字段的组合定位与给定的L4组对应的L3组中的所有标签。例如,为了获得与给定的L4组相关联的L4标签数据,缓存逻辑110和/或135中的一个或多个可使用路掩码以识别L3组中的第一相关块。接着,逻辑可使用步幅和数量字段以确定使用的分拆模式,从而定位和读取在存储有用于L4组的标签数据的L3组中的所有其它块。例如,为4的步幅值和为2的数量字段值将指示在第一块后有一个附加的块要读取,且该附加的块为第一个后的第四个块(即第五个块,如图3a所示)。因此,在这样的实施例中,要读取的第N个块可被计算为(物理地址&路掩码字段+步幅字段*(N-1))。为了读取所有相关的块,逻辑可为从O至数量字段值的每个N重复该计算。
[0058]根据所示的实施例,缓存逻辑140还包括标签缓存索引掩码(TCM) 405。TCIM405可用于指示存储有用于给定L4组的标签的具体L3组。例如,TCM值可用于将L3索引计算为(物理地址&>TCM),其中“&>”表示逻辑与运算,随后则进行右移以去掉尾随零。例如,如在运行实例中所述,如果L3具有8192组(16MB/ (64Β块*32-块组),那么L3组索引则可被计算为物理地址的位22-10。因此,TCIM405可持有值0x7FFC00。
[0059]图5为根据一些实施例的用于查阅存储在L3缓存中的L4标签以确定L4缓存是否存储有与给定存储器地址对应的数据的方法的流程图。可通过L4缓存逻辑135和/或通过L3缓存逻辑115执行方法500。相应缓存逻辑可被配置成如图4a和4b中所示,包括如上所述的相应寄存器。
[0060]根据所示的实施例,方法开始于逻辑确定物理地址(PA)时,如在505中。例如,逻辑可确定正试图访问给定的物理地址的程序指令,作为响应,逻辑可能需要确定与该地址对应的数据是否存储在L4缓存中。
[0061]在510中,逻辑确定用于物理地址的标签。例如,在一些实施例中,逻辑可通过使用标签掩码掩码物理地址而确定标签,如存储于TGM415中的那个标签掩码(例如,PA&TGM)。
[0062]在515中,逻辑可确定L3组,其中存储有与物理地址对应的数据。例如,逻辑可通过使用TCM在物理地址上执行“&>”运算而识别特定L3组,如上所述。
[0063]一旦逻辑已识别要搜索的标签(如510中所述)以及要在其中搜索该标签的L3组(如515中所述),逻辑可确定要在所确定的L3组内搜索的第一块(如520中所述)。例如,在一些实施例中,逻辑可通过使用TCW寄存器的路掩码字段掩码物理地址(即PA&TCff-way-mask)而确定要在该组内搜索哪个块,如520中所指示的。
[0064]根据所示的实施例,一旦逻辑确定了要检查的第一 L3缓存块,其可读取L3块(如525中所述)并确定(如530中所述)L3块是否包含了在510中确定的PA标签。如果块包含PA标签,如通过从530确认的退出所指示的,那么缓存逻辑则可确定缓存命中,如在535中所述。否则,如通过从530确认的退出所指示的,那么逻辑则无法确定缓存命中。相反,逻辑可检查可存储PA标签的零个或更多其他的L3块以确定那些块中的任何块是否存储有该标签。
[0065]在540中,缓存逻辑确定是否存在更多的标签。例如,如果TCW寄存器的数量字段持有大于已搜索的块数量的值,则要搜索更多的块。否则,逻辑则已搜索可能持有标签的每个L3块。
[0066]如果逻辑已搜索可能持有标签的每个L3块,如通过从540确认的退出所指示的,那么逻辑则可断定有一个缓存失效,如在545中。否则,如果要搜索更多的L3块(例如,数量字段大于已经搜索的块),那么逻辑则可确定要搜索的下一块,如在550中。例如,在一些实施例中,逻辑可基于之前读取的寄存器的标识和TCW寄存器的步幅字段做出这样的确定。一旦逻辑已确定要搜索的下一个L3缓存块(如550中所述),其可搜索该L3缓存块,如通过从550至525确认的反馈回路所指示的。
[0067]如果缓存逻辑定位了 L3缓存中的标签,那么逻辑则可标注在其中找到标签的块。例如,逻辑可通过记录指示块在组内的位置的标签偏移而标注块。
[0068]如上所讨论的,在一些实施例中,可使用可布置为多个DRAM页的堆栈DRAM来实现L4。单一的DRAM页可持有用于多个L4缓存块的数据。
[0069]在一些实施例中,每个DRAM页可存储与物理存储器的连续组对应的一组缓存块。通过在每一页中存储存储器的连续组,L4缓存可以更好地在应用访问模式中利用空间局部性。
[0070]图6图示在DRAM页上的缓存块的实例布置,其中每一页均存储有物理连续的存储器。根据所示实施例,L4数据145包括多页,如页0-21。每一页具有2KB的容量且因此能够存储16个256字节的缓存块。
[0071]在图6中,相邻的缓存块一起被存储在同一页上。例如,源自前八个组中每一个的第一缓存块(组0-7的CB0)被存储在页O上,源自前八个组中每一个的第二缓存块(组0-7的CBl)被存储在页I上,以此类推。对应地,在该实例中,L4数据145的前三十二页累积存储用于L4缓存135的前八个32路组的所有缓存块。存储有用于给定组的缓存块的页的连续组可被称之为页组,如图6的页组600。
[0072]除了上述与标签相关的寄存器外,L4缓存逻辑还可包括一些可用于促进对L4数据(例如,L4数据145)的访问的寄存器。例如,返回图4a,这类寄存器可包括缓存块大小寄存器(例如,CBS430)、页组掩码(例如,PSM435)、页组偏移(例如,PS0440)和页访问基本偏移(例如,PAB0445)。
[0073]在一些实施例中,CBS寄存器430可存储指示每个缓存块大小的值。例如,CBS寄存器430可存储值256以指示每个L4缓存块(即缓存段)包括256个字节。
[0074]PSM寄存器435可存储可用于确定给定物理地址所映射至的页组的掩码。例如,如果每一 DRAM页持有八个缓存块(如图6中所示),那么物理地址的位11-22则可用于识别DRAM页组。为了从物理地址(例如,从物理地址200)提取那些位,缓存逻辑可在PSM寄存器中存储十六进制值0x7FF800并使用该值以掩码物理地址。
[0075]一旦缓存逻辑确定了物理地址所映射至的页组(例如,通过使用PSM寄存器435掩码地址),缓存逻辑可使用PSO寄存器440以在物理地址所映射至的所确定的页组中确定具体的DRAM页。由于最大偏移为L4的关联性(例如,32),缓存逻辑可用log2 (L4_关联性)移位页组值并随后添加标签偏移(其可能已在上述标签访问阶段中计算得出)。例如,对于32路L4缓存而言,PSO值可以为5(即log2(32))。
[0076]一旦缓存逻辑确定了物理地址所映射至的DRAM页(例如,如上所述),缓存逻辑则可使用PABO寄存器445以识别在物理地址映射至的所确定的页内的具体缓存块。逻辑可通过使用PABO寄存器中的值掩码物理地址而得到至DRAM页的偏移。例如,如果每个DRAM页持有八个缓存块(如在图6中),则可使用为0x700的PABO值以通过掩码除物理地址的位8-10外的所有位而确定至页中的索引。
[0077]图7为图示根据一些实施例的用于定位与给定的物理地址对应的L4缓存块的方法的流程图。可通过L4缓存逻辑,如图1所示的145执行图7的方法。
[0078]当缓存逻辑确定物理地址时,方法700始于705。响应于要求访问(例如,读/写)给定物理地址的程序指令,缓存逻辑可确定物理地址。
[0079]在710中,L4缓存逻辑确定映射至物理地址的DRAM页组。确定DRAM页可包括使用页组掩码,如PSM寄存器435来掩码物理地址。在715中,缓存逻辑确定在所确定的组内物理地址所映射至的特定页。在组内确定特定页可包括用PSO寄存器440的值对710中计算的页组进行左移并添加标签偏移,其可能已在标签访问阶段中计算出。在720中,缓存逻辑确定在所确定的页内存储所需块处的偏移。确定偏移可包括使用PABO寄存器445中的值执行“&>”(逻辑与,随后进行右移以去掉尾随零)。为了进行概括,在一些实施例中,物理地址PA所映射至的DRAM页可通过[(PA&PSM) ?PS0] +标签偏移给出,且缓存块至页中的偏移可通过ΡΑ&>ΡΑΒ0给出。一旦缓存逻辑确定了页和偏移(如710-720中所述),其则可在确定的DRAM页的确定偏移处访问缓存块(如725中所述)。
[0080]如上所述,传统的缓存是静态配置的(例如,块大小、块的数量、关联程度等)。然而,没有一种配置对于每种工作负荷都是最佳的。
[0081 ] 在各实施例中,可对L4缓存动态地重新配置以向当前的或预期的工作负荷提供最佳性能。在运行时间动态地重新配置的缓存可通过软件(例如,OS)重新配置,而无需要求系统重启和/或人工干预。例如,系统BIOS可被配置成通过在配置寄存器400-445中设置默认值而启动默认配置中的缓存。在运行时间,操作系统可监控工作负荷的特征以确定当前缓存配置的有效性。如果操作系统确定不同的缓存配置将是有利的,那么OS则可配置L4(和/或L3)缓存,如下所述。
[0082]图8为根据一些实施例的在运行时间对L4缓存重新配置的方法的流程图。可通过执行在 处理器上执行的一个或多个线程的操作系统执行方法800。
[0083]方法800开始于步骤805,其中OS冻结所有系统线程的执行。在810中,OS随后获取在存储器总线上的锁定,使得没有程序指令或其他处理内核可访问总线。在815中,OS将所有脏的缓存块写回至存储器中。如果处理器已修改了缓存块的值,但还未将该值写回至存储器,那么该缓存块则被认为是脏的。在820中,OS将所有的数据逐出缓存。在825中,OS调整配置寄存器中的一个或多个值以反映新的缓存配置。接着,OS释放总线锁定(在830中)并恢复执行(在835中)。
[0084]使用方法800,操作系统能够修改L4缓存的各配置参数以反映当前的或预期的工作负荷。这类参数可包括块大小、块的数量、关联性、分割或其他参数。例如,如果OS确定应用表现出具有高空间局部性的访问模式,OS则可通过修改某个数量的配置寄存器400-445而增加L4缓存块的大小,其可通过将更多的数据预取至L4中而增加用于高空间应用的性能。增加L4块大小还可增加L3的大小,因为L4需要更小量的标签存储空间,其中L3能够回收和利用标签存储空间以用于存储L3数据。通过增加用于具有高空间局部性的访问模式提高的性能的大小。在另一实例中,OS可修改L4缓存的关联级别。如果它不会导致冲突性失效的显著增加,那么降低L4缓存的关联级别则可导致较低的访问延迟,以及缓存节电。相反地,较高的关联性减少了冲突性失效,其可在一些工作负荷中提升性能。
[0085]在可重新配置性的另一实例中,OS可将L4重新配置为扇区缓存。如图4b中所示,L4缓存逻辑140可包括扇区号寄存器(例如,STN425),其存储有指示用于识别在给定的缓存块中不同扇区的有效性所需的位数的扇区号。如果L4缓存没有扇区,那么扇区号则可以设为O。然而,OS可通过用不同的值修改STN寄存器而重新配置L4缓存以包括多个扇区。
[0086]在一些实施例中,OS可被配置成根据各预定的配置重新配置L4缓存。例如,图9的表900给出用于配置寄存器的四个实例配置。每个配置均以各工作负荷特征为目标。例如,表900包括默认配置(例如,BIOS启动缓存的配置)、大的缓存段配置(即512B缓存块)、高关联性配置(即相关联的64路组)以及扇区缓存设计(即两个扇区)。在各实施例中,处理器可根据所观察到的工作负荷而使用这些默认配置、其他默认配置和/或自定义配置。
[0087]图10为示出根据一些实施例的被配置成利用如本文所述的堆栈DRAM缓存的计算机系统的框图。计算机系统1000可对应于各种类型的设备中的任一个,包括但不限于个人计算机系统、台式计算机、膝上型计算机或笔记本计算机、主机计算机系统、手持计算机、工作站、网络计算机、消费设备、应用服务器、存储设备、外围设备(如交换机、调制解调器、路由器等)或任何一般类型的计算设备。
[0088]计算机系统1000可包括一个或多个处理器1060,其中的任一个可包括多个物理和/或逻辑内核。处理器1060中的任一个可对应于图1的处理器100且可包括数据缓存,如SRAM L3缓存1062和堆栈DRAM L4缓存1064,正如本文所述。缓存1062和1064可分别对应于图1的L3缓存110和L4缓存135。因此,如本文所述,可通过0S1024对L4缓存1064进行重新配置。计算机系统1000还可包括一个或多个永久存储设备1050(例如,光存储、磁存储、硬盘驱动器、磁带驱动器、固态存储器等),其可永久地存储数据。
[0089]根据所示的实施例,计算机系统1000包括一个或多个共享存储器1010 (例如:缓存 SRAM、DRAM、RDRAM、EDO RAM、DDR10RAM、SDRAM、Rambus RAM、EEPR0M 等中的一个或多个),其可在多个处理内核,如处理器1060中的一个或多个之间共享。一个或多个处理器1060、存储设备1050和共享存储器1010可经由相互连接1040而耦合。在各实施例中,系统可包括较少的或未在图10中示出的附加组件(例如,显卡,声卡,附加的网络接口,外围设备,如ATM接口、以太网接口、帧中继接口的网络接口,显示器,键盘,扬声器等)。此外,图10中示出的不同组件可被结合或被进一步分成附加的组件。
[0090]在一些实施例中,共享存储器1010可存储程序指令1020,其可用平台的本机二进制码、任何诠释性语言如Java?字节码、或任何其他语言如C/C++、Java?等或其任何组合编码。程序指令1020可包括程序指令以实现一个或多个应用1022,其中的任一个可以是多线程的。在一些实施例中,程序指令1020还可包括可执行用于实现操作系统1024的指令,该操作系统1024可被配置成监控处理器1060上的工作负荷以及重新配置缓存1064和1062,正如本文所述。0S1024还可提供其他的软件支持,如调度、软件信号处理等。
[0091]根据所示的实施例,共享存储器1010包括共享数据1030,其可通过处理器1060中的一些和/或其各处理内核而进行访问。处理器1060中的一些可在本地缓存(例如,1062和/或1064)中缓存共享数据1030的各组件并根据缓存一致性协议通过交换消息而在这些缓存中协调数据。在一些实施例中,处理器1060中的多个和/或处理器1060的多个处理内核可共享对缓存1062和1064以及可能存在于共享存储器1010中的晶片外缓存的访问。
[0092]程序指令1020,如用于实现应用1022和/或操作系统1024的那些,可存储在计算机可读存储介质上。计算机可读存储介质可包括任何用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)存储信息的机制。计算机可读存储介质可包括,但不限于磁存储介质(例如,软盘)、光存储介质(例如,CD-ROM)、磁光存储介质、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程存储器(例如,EPROM和EEPR0M)、闪存、适于存储程序指令的电性或其他类型的介质。
[0093]在一些实施例中,可使用如上所述的计算机可读存储介质存储指令,该指令可通过程序进行读取并直接或间接地予以使用以制造包括处理器1060中的一个或多个的硬件。例如,指令可描述一个或多个数据结构,其描述了硬件功能在高级设计语言(HDL)jnVerilog或VHDL中的行为级或寄存器传输级(RTL)的描述。描述可通过综合工具被读取,且该综合工具可综合描述以产生网表。网表可包括一组门(例如,在综合库中所限定的),其表示处理器500的功能。接着,可放置和路由该网表以产生描述要施加到掩码的几何形状的数据组。接着,可在各半导体制造步骤中使用掩码以产生与处理器100和/或1060对应的一个半导体电路或多个电路。可替代地,根据需要,数据库可以是网表(具有或不具有综合库)或数据组。
[0094]虽然上面已经描述了具体实施例,但这些实施例并不旨在限制本公开的范围,SP使其中仅有单一的实施例是关于特定特性描述的。除非另外注明,在本公开中提供的特性的实例都是说明性的而非限制性的。上面的描述旨在涵盖这样的替代方式、修改和等同物,其对于受益于本公开的本领域技术人员来说将是显而易见的。
[0095]本公开的范围包括本文所公开的(明示地或暗示地)任何特性或特性的组合,或其任何概括,而无论其是否减轻了本文所处理问题中的任何或全部。对应地,在本申请(或要求其优先性的申请)的起诉中可对特性的任何这样的组合制定新的权利要求。具体来说,参照所附的权利要求,源自从属权利要求的特性可与独立权利要求的特性相结合,且源自各独立权利要求的特性可按任何合适的方式,而不仅仅是所附权利要求中列举的具体组合方式组合。
【权利要求】
1.一种装置,其包括: 第一数据缓存; 第二数据缓存;以及 缓存逻辑,其被配置成通过下列方式在所述第一数据缓存中缓存存储器数据: 在所述第一数据缓存中存储所述存储器数据;以及 在所述第二数据缓存中,而非在所述第一数据缓存中存储对应于所述存储器数据的标签数据。
2.根据权利要求1所述的装置,其中所述第一和第二数据缓存实现处理器的数据缓存层次结构中的相应级别。
3.根据权利要求2所述的装置,其中由所述第一数据缓存实现的所述级别在所述缓存层次结构中位于由所述第二数据缓存实现的所述级别的下方。
4.根据权利要求1所述的装置,其中使用堆栈存储器在所述处理器上实现所述第一数据缓存。
5.根据权利要求4所述的装置,其中: 所述堆栈存储器被组织成多个存储器页,其中所述缓存逻辑被配置成在每个存储器页中存储对应于物理系统存储器的连续区域的存储器数据。
6.根据权利要求1·所述的装置,其中所述第一数据缓存可在运行时间动态地重新配置。
7.根据权利要求6所述的装置,其中所述第一数据缓存可在运行时间动态地重新配置以修改所述第一数据缓存的大小、块大小、块的数量或关联级别。
8.根据权利要求6所述的装置,其中响应于操作系统做出的确定,所述第一数据缓存在运行时间通过所述操作系统动态地重新配置,其中所述确定取决于所述处理器的工作负荷的一个或多个特征。
9.根据权利要求6所述的装置,其中重新配置所述第一数据缓存包括修改所述第一数据缓存的一个或多个配置寄存器,其中所述配置寄存器可用于确定存储有对应于所述第一数据缓存的给定块的标签信息的所述第二数据缓存的块。
10.根据权利要求6所述的装置,其中所述重新配置包括,操作系统执行下列操作: 冻结在所述处理器上执行的一个或多个线程的执行; 获取将所述处理器连接至系统存储器的存储器总线上的锁定; 将脏块写回至存储器中; 使所述第一数据缓存中的数据无效; 释放在所述存储器总线上的所述锁定;以及 恢复所述一个或多个线程的执行。
11.一种方法,其包括: 处理器在第一数据缓存中缓存由所述处理器访问的存储器数据; 所述处理器在第二数据缓存中,而非在所述第一数据缓存中存储用于所述访问的存储器数据的标签数据。
12.根据权利要求11所述的方法,其中所述第一和第二数据缓存实现所述处理器的数据缓存层次结构中的相应级别,其中由所述第一数据缓存实现的所述级别位于由所述第二数据缓存实现的所述级别的下方。
13.根据权利要求11所述的方法,其中使用堆栈存储器在所述处理器上实现所述第一数据缓存。
14.根据权利要求13所述的方法,其中: 所述堆栈存储器被组织成多个存储器页,其中所述缓存逻辑被配置成在每个存储器页中存储对应于物理系统存储器的连续区域的存储器数据。
15.根据权利要求11所述的方法,其中所述第一数据缓存可在运行时间动态地重新配置。
16.根据权利要求15所述的方法,其中所述第一数据缓存可在运行时间动态地重新配置以修改所述第一数据缓存的大小、块大小、块的数量或关联级别。
17.根据权利要求15所述的方法,其中响应于操作系统做出的确定,所述第一数据缓存可在运行时间通过所述操作系统动态地重新配置,其中所述确定取决于所述处理器的工作负荷的一个或多个特征。
18.根据权利要求15所述的方法,其中重新配置所述第一数据缓存包括修改所述第一数据缓存的一个或多个配置寄存器,其中所述配置寄存器可用于确定存储有对应于所述第一数据缓存的给定块的标签信息的所述第二数据缓存的块。
19.根据权利要求11所述的方法,其还包括通过下列方式确定所述存储器数据被存储在所述第一数据缓存 中: 使用所述数据的物理存储器地址确定所述物理存储器地址的标签值;以及 确定所述标签值由所述第二数据缓存所存储。
20.根据权利要求19所述的方法,其中确定所述标签值由所述第二数据缓存所存储包括: 确定所述第二数据缓存的缓存块,所述缓存块对应于所述物理存储器地址,其中所述确定取决于存储在所述第二数据缓存的一个或多个配置寄存器中的一个或多个缓存配置值;以及 确定所述缓存块存储有所述标签值。
21.一种计算机可读存储介质,其包括通过计算机系统上的可执行程序操作的数据结构,所述程序在所述数据结构上操作以执行制造包括由所述数据结构描述的电路系统的集成电路的过程的一部分,在所述数据结构中描述的所述电路系统包括: 第一数据缓存; 第二数据缓存; 其中所述装置被配置成在所述第一数据缓存中存储缓存存储器数据,且其中可用于访问存储在所述第一数据缓存中的所述缓存存储器数据的标签信息被存储在所述第二数据缓存中而非所述第一数据缓存中。
22.根据权利要求21所述的计算机可读存储介质,其中所述存储介质存储HDL、Verilog或⑶SII数据。
23.—种方法,其包括: 通过将存储器数据存储在所述第一缓存的数据阵列中而在所述第一缓存中缓存存储器数据,并且在第二数据缓存的数据阵列中而非所述第一数据缓存的标签阵列中存储用于所述第一缓存的对应的标签数据。
【文档编号】G06F12/08GK103597455SQ201280027342
【公开日】2014年2月19日 申请日期:2012年5月9日 优先权日:2011年5月10日
【发明者】钟在雄, 尼兰詹·孙达拉拉詹 申请人:超威半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1