提供扩展的缓存替换状态信息的制作方法

文档序号:8435836阅读:236来源:国知局
提供扩展的缓存替换状态信息的制作方法
【专利说明】提供扩展的缓存替换状态信息
[0001] 背景
[0002] 在基于处理器的系统中,缓存存储器用于临时存储包括数据以及指令的信息,以 允许由系统的诸如一个或多个处理器、图形器件等处理元件更快速地访问。现代的处理器 包括充当频繁地使用的以及最近使用的信息的仓库的内部缓存存储器。由于此缓存存储器 在处理器封装内并通常与处理器的一个或多个核一起在单一半导体管芯上,因此,比从包 括系统存储器的存储器层次结构的更远的位置的访问快得多。
[0003] 为允许在缓存内维持最相关的信息,使用某种类型的替换机制。许多系统实现一 种最近最少使用算法来维持信息。更具体而言,缓存的每一条线都与涉及信息的相对年龄 的元数据信息相关联,以便当缓存线将被替换时,可以确定用于驱逐的合适的线。尽管这样 的最近最少使用的方案合理地起作用,但是,它们不适合于某些类型的数据。一种这样的数 据类型是通常不存储在缓存存储器中的流式数据(通常只被访问一次)。然而,存在此数据 被再次访问的情况,这会导致再次重新访问该数据的不希望的延迟。另一种类型的数据是 所谓的强烈地常驻的数据,该数据希望被维护在缓存存储器中比使用最近最少使用的方案 的时间更长。
[0004] 附图简述
[0005] 图1是根据本发明的一个实施例的用于使用替换状态信息来选择用于驱逐的缓 存线的方法的流程图。
[0006] 图2是根据本发明的一个实施例的用于更新替换状态信息的方法的流程图。
[0007] 图3是根据本发明一实施例的处理器的框图。
[0008] 图4是根据本发明的一个实施例的示例缓存线的图示。
[0009] 图5是根据本发明的一个实施例的处理器核心的框图。
[0010] 图6是根据本发明一实施例的处理器的框图。
[0011] 图7是包括多个核的处理器的一个实施例的框图。
[0012] 图8是根据本发明一实施例的系统的框图。
【具体实施方式】
[0013] 在各实施例中,可以以提供多个级别的替换适合性的方式维护缓存存储器的每一 线的替换状态信息。虽然本发明的范围在这方面不受限制,但是,在一个实施例中,可以提 供四个这样的状态。此外,还可以每个组地维护此状态信息,以便当判断是否要替换一组组 相关联的缓存存储器内的线时,可以分析该组内的全部路的此替换状态信息。如下文所描 述的,可以存在将给定替换状态与线内的数据相关联的不同的技术。例如,在不同的实施例 中,此替换状态信息可以来源于诸如用户级别的指令之类的指令、暗示或来自各种控制和 配置信息的信息,诸如指出存储在特定存储器区域中的数据的类型的范围寄存器。
[0014] 在现代处理器中,多个不同执行单元用于处理和执行多种代码和指令。并不是所 有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完 成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会 是有利的。然而,某些指令具有更大的复杂度,并在执行时间和处理器资源方面需求更大。 例如,存在浮点指令、加载/存储操作、数据移动等等。
[0015] 因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以逐渐地引进更 多的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个 计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以 及外部输入输出(I/O)。
[0016] 在一个实施例中,指令集架构(ISA)可以通过一个或多个微架构来实现,某一个 些微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构 的诸个处理器可共享公共指令集的至少一部分。例如,]NTEL?奔腾四(Pentium 4)处理 器、Intel?酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导 体有限公司(Advanced Micro Devices, Inc.)的诸多处理器执行几乎相同版本的x86指令 集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开 发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可 共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构可 使用新的或已知的技术在不同的微架构中以不同方法来实现,包括专用物理寄存器、使用 寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器R0B、以及引退寄存器组) 的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址 或不可寻址的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。
[0017] 在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可 指示多个字段(位的数目、位的位置等)以指定将要被执行的操作以及将对其执行该操作 的操作数等等。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定 指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不 同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式 的诸个指令模板中的给定一个指令模板)来表示指令,并且该指令指定或指示操作以及该 操作将对其操作的操作数,以及对于存储器访问指令的执行,要与指令的数据相关联的替 换状态级别。
[0018] 诸如由Intel?酷睿(Core?)处理器(具有包括x86、MMX?、流SMD扩展(SSE)、 SSE2、SSE3、SSE4. 1、SSE4. 2指令的指令集)、ARM处理器(诸如,ARMCortex?处理器族, 具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计 算机技术研宄所(ICT)开发的龙芯处理器族)所使用的单指令多数据(SMD)技术之类的 SMD技术在应用性能上带来了极大的提高(Core?和MMX ?是加利福尼亚州圣克拉拉市的 英特尔公司的注册商标或商标),所有的这样的处理器都可以实现本发明的各实施例。在一 个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地 的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能 不同的名称或功能的其他存储区域所实现。
[0019] 通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单 个寄存器或存储器位置中。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数 据元素的数目是128位除以单个数据元素的以位计的长度。类似地,在涉及MMX和SSE技 术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单个数据元素的 以位计的长度。诸如64字节缓存线宽度或任何其他宽度之类的不同的宽度的数据类型都 可以利用本发明的各实施例。
[0020] 请注意,用于本发明的各实施例中的替换状态信息不提供一组内的每一路的基于 年龄的或实际相对年龄。进一步,替换状态信息不是所谓的基于树的伪最近最少使用的机 制。相反,多个级别替换状态信息使每一个缓存线能处于N个不同的组中适于替换的一个 组中中(其中,在许多实施例中,N小于一组内的路的数量并大于2)。如此处所使用的,术 语"路"和"缓存线"两者都表示存储数据的缓存存储器的条目;在许多实施例中,缓存存储 器被排列为多路多组相关联的缓存,其中,每一个组都包括多个路。
[0021] 在一个实施例中,每个路,可以维护替换状态信息的2个比特,使N是4。在此实施 例中,这些状态如下。最高级别状态,状态3,被称为强烈地常驻(SR)状态,该状态标识包括 要被相对长时间(即,长于常规最近最少使用的方案)维持在缓存存储器中的数据的缓存 线。这样的数据的示例包括要被用作程序中的系数或其他常数的数据,该数据最好被维持 在单独的暂时存储器中。次最高级别状态,状态2,最近较多地使用的(MeRU)状态,用于表 示最近被较多地(比该组的其他路)访问的缓存线。如此,这样的缓存线不太会是用于驱 逐的候选。在一个实施例中,对缓存线的正常的访问(没有如此处所描述的特殊暗示或指 令)可能会导致其状态被设置为此最近较多使用的状态。次最高状态或第二最低状态,状 态1,被称为最近较少使用(LeRU)的状态,用于表示比组的至少一个其他路最近较少使用 的缓存线。如此,这样的缓存线可以是对于驱逐的更合适的候选。最低级别状态,状态〇, 被称为驱逐暗示(EH)状态,该状态标识可以在任何其他线之前被替换的缓存线。对于特定 实现,这四种状态可以以一种方式或比特模式来表示(可能使用多于2个比特,例如,"一个 热"方案)。
[0022] 在一个实施例中,状态1和2可以用于典型数据访问,而特殊软件指令、暗示或诸 如来自存储器类型范围寄存器(MTRR)之类的其他数据将线分配到状态0和3。
[0023] 在一个实施例中,可以使用下列规则来确定替换缓存线(可能更新到其他路的替 换状态值):
[0024] 1.当选择用于驱逐的路时,选择带有最低编号的优先级的路。如果没有路处于状 态0,则挑选处于状态1的路。如果没有路处于状态1,则挑选处于状态2的路。如果没有 路处于状态2,则挑选处于状态3的路。如果有多个路处于给定状态级别,则选择带有最低 索引的路(例如,优先于路7,选择路3)。
[0025]2.当通过正常的加载或存储指令访问一个路时,如果它在状态0 (EH)或1 (LeRU), 则将它改变为状态2 (MeRU)。如果它已经在状态2 (MeRU)或状态3 (SR),则不改变其状态。
[0026] 3.如果改变一个特定路的状态会导致一组的所有路都处于相同状态(例如,所有 路现在都处于状态2),则缩小该组的所有其他路的状态(例如,缩小1),并将新更新的路设 置为所希
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1