CN104756090A - 提供扩展的缓存替换状态信息 - Google Patents
提供扩展的缓存替换状态信息 Download PDFInfo
- Publication number
- CN104756090A CN104756090A CN201380056228.6A CN201380056228A CN104756090A CN 104756090 A CN104756090 A CN 104756090A CN 201380056228 A CN201380056228 A CN 201380056228A CN 104756090 A CN104756090 A CN 104756090A
- Authority
- CN
- China
- Prior art keywords
- data
- level
- processor
- status indicator
- buffer memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,处理器包括解码逻辑,所述解码逻辑接收并解码第一存储器访问指令以将数据与第一级别的替换状态指示符一起存储在缓存存储器中,并向控制逻辑发送经解码的第一存储器访问指令。接着,控制逻辑响应于经解码的第一存储器访问指令,将数据存储在第一组缓存存储器的第一路中,将第一级别的替换状态指示符存储在第一路的元数据字段中。描述并要求保护其他实施例。
Description
背景
在基于处理器的***中,缓存存储器用于临时存储包括数据以及指令的信息,以允许由***的诸如一个或多个处理器、图形器件等处理元件更快速地访问。现代的处理器包括充当频繁地使用的以及最近使用的信息的仓库的内部缓存存储器。由于此缓存存储器在处理器封装内并通常与处理器的一个或多个核一起在单一半导体管芯上,因此,比从包括***存储器的存储器层次结构的更远的位置的访问快得多。
为允许在缓存内维持最相关的信息,使用某种类型的替换机制。许多***实现一种最近最少使用算法来维持信息。更具体而言,缓存的每一条线都与涉及信息的相对年龄的元数据信息相关联,以便当缓存线将被替换时,可以确定用于驱逐的合适的线。尽管这样的最近最少使用的方案合理地起作用,但是,它们不适合于某些类型的数据。一种这样的数据类型是通常不存储在缓存存储器中的流式数据(通常只被访问一次)。然而,存在此数据被再次访问的情况,这会导致再次重新访问该数据的不希望的延迟。另一种类型的数据是所谓的强烈地常驻的数据,该数据希望被维护在缓存存储器中比使用最近最少使用的方案的时间更长。
附图简述
图1是根据本发明的一个实施例的用于使用替换状态信息来选择用于驱逐的缓存线的方法的流程图。
图2是根据本发明的一个实施例的用于更新替换状态信息的方法的流程图。
图3是根据本发明一实施例的处理器的框图。
图4是根据本发明的一个实施例的示例缓存线的图示。
图5是根据本发明的一个实施例的处理器核心的框图。
图6是根据本发明一实施例的处理器的框图。
图7是包括多个核的处理器的一个实施例的框图。
图8是根据本发明一实施例的***的框图。
具体实施方式
在各实施例中,可以以提供多个级别的替换适合性的方式维护缓存存储器的每一线的替换状态信息。虽然本发明的范围在这方面不受限制,但是,在一个实施例中,可以提供四个这样的状态。此外,还可以每个组地维护此状态信息,以便当判断是否要替换一组组相关联的缓存存储器内的线时,可以分析该组内的全部路的此替换状态信息。如下文所描述的,可以存在将给定替换状态与线内的数据相关联的不同的技术。例如,在不同的实施例中,此替换状态信息可以来源于诸如用户级别的指令之类的指令、暗示或来自各种控制和配置信息的信息,诸如指出存储在特定存储器区域中的数据的类型的范围寄存器。
在现代处理器中,多个不同执行单元用于处理和执行多种代码和指令。并不是所有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会是有利的。然而,某些指令具有更大的复杂度,并在执行时间和处理器资源方面需求更大。例如,存在浮点指令、加载/存储操作、数据移动等等。
因为更多的计算机***被用于互联网、文本以及多媒体应用,所以逐渐地引进更多的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入输出(I/O)。
在一个实施例中,指令集架构(ISA)可以通过一个或多个微架构来实现,某一个些微架构可包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的诸个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced MicroDevices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构可使用新的或已知的技术在不同的微架构中以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、以及引退寄存器组)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可寻址的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数目、位的位置等)以指定将要被执行的操作以及将对其执行该操作的操作数等等。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的诸个指令模板中的给定一个指令模板)来表示指令,并且该指令指定或指示操作以及该操作将对其操作的操作数,以及对于存储器访问指令的执行,要与指令的数据相关联的替换状态级别。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所使用的单指令多数据(SIMD)技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标),所有的这样的处理器都可以实现本发明的各实施例。在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能不同的名称或功能的其他存储区域所实现。
通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单个数据元素的以位计的长度。类似地,在涉及MMX和SSE技术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单个数据元素的以位计的长度。诸如64字节缓存线宽度或任何其他宽度之类的不同的宽度的数据类型都可以利用本发明的各实施例。
请注意,用于本发明的各实施例中的替换状态信息不提供一组内的每一路的基于年龄的或实际相对年龄。进一步,替换状态信息不是所谓的基于树的伪最近最少使用的机制。相反,多个级别替换状态信息使每一个缓存线能处于N个不同的组中适于替换的一个组中中(其中,在许多实施例中,N小于一组内的路的数量并大于2)。如此处所使用的,术语“路”和“缓存线”两者都表示存储数据的缓存存储器的条目;在许多实施例中,缓存存储器被排列为多路多组相关联的缓存,其中,每一个组都包括多个路。
在一个实施例中,每个路,可以维护替换状态信息的2个比特,使N是4。在此实施例中,这些状态如下。最高级别状态,状态3,被称为强烈地常驻(SR)状态,该状态标识包括要被相对长时间(即,长于常规最近最少使用的方案)维持在缓存存储器中的数据的缓存线。这样的数据的示例包括要被用作程序中的系数或其他常数的数据,该数据最好被维持在单独的暂时存储器中。次最高级别状态,状态2,最近较多地使用的(MeRU)状态,用于表示最近被较多地(比该组的其他路)访问的缓存线。如此,这样的缓存线不太会是用于驱逐的候选。在一个实施例中,对缓存线的正常的访问(没有如此处所描述的特殊暗示或指令)可能会导致其状态被设置为此最近较多使用的状态。次最高状态或第二最低状态,状态1,被称为最近较少使用(LeRU)的状态,用于表示比组的至少一个其他路最近较少使用的缓存线。如此,这样的缓存线可以是对于驱逐的更合适的候选。最低级别状态,状态0,被称为驱逐暗示(EH)状态,该状态标识可以在任何其他线之前被替换的缓存线。对于特定实现,这四种状态可以以一种方式或比特模式来表示(可能使用多于2个比特,例如,“一个热”方案)。
在一个实施例中,状态1和2可以用于典型数据访问,而特殊软件指令、暗示或诸如来自存储器类型范围寄存器(MTRR)之类的其他数据将线分配到状态0和3。
在一个实施例中,可以使用下列规则来确定替换缓存线(可能更新到其他路的替换状态值):
1.当选择用于驱逐的路时,选择带有最低编号的优先级的路。如果没有路处于状态0,则挑选处于状态1的路。如果没有路处于状态1,则挑选处于状态2的路。如果没有路处于状态2,则挑选处于状态3的路。如果有多个路处于给定状态级别,则选择带有最低索引的路(例如,优先于路7,选择路3)。
2.当通过正常的加载或存储指令访问一个路时,如果它在状态0(EH)或1(LeRU),则将它改变为状态2(MeRU)。如果它已经在状态2(MeRU)或状态3(SR),则不改变其状态。
3.如果改变一个特定路的状态会导致一组的所有路都处于相同状态(例如,所有路现在都处于状态2),则缩小该组的所有其他路的状态(例如,缩小1),并将新更新的路设置为所希望的状态(在此示例中,该组的所有路现在都将处于状态1,但已经被更新的路除外,该路现在处于状态2)。
作为操作的示例,可以将被访问的路标记为MeRU(因为它被访问)。如果标记此路将导致该组的所有路被指出在此状态,则可以将此路维护为MeRU,此状态下的所有其他线被更新为LeRU。
当搜索要替换的路时(因为新缓存线需要空间),可以选择带有最低替换状态级别并具有最低索引的路供驱逐。结果,按一致的顺序选择供驱逐的路,该顺序会对线分类,并在现实世界应用中产生更高的性能。
现在参看图1,其示出的是根据本发明实施例的用于使用替换状态信息来选择用于驱逐的缓存线的方法的流程图。如图1所示,方法100可以由处理器的各种逻辑执行,诸如与特定级别的缓存存储器相关联的控制逻辑。例如,在一个实施例中,缓存存储器的给定级别可包括缓存控制器或与其相关联,该缓存控制器包括控制相对于缓存的写入、读取及其他操作的各种逻辑。
如图1所示,方法100从菱形110开始,该方法100响应于缓存线将被驱逐的判断而启动(这可能在向缓存中写入数据的请求后而数据将被写入的一组缓存已满时发生)。在菱形110,可以判断该组的任何路是否具有最低级别的替换状态信息。虽然本发明的范围在这方面不受限制,但是,在一个实施例中,每一条线都可以以四个级别的替换状态中的每一个来标识。作为示例,二比特的元数据可以编码这四个级别中的给定一个。如果判断该组的一个或多个路具有最低级别替换状态信息,则控制进入框120,在那里,可以选择具有最低索引的这些一个或多个路中的一个路供驱逐。即,一组缓存存储器包括多个路(例如,八个路)。这些路中的每一个都以索引值来标识(例如,从零到七个)。在此示例中,假设一个以上的路具有最低级别替换状态信息,则可以选择具有最小的索引值的对应的路供驱逐。如此,可以通过将此缓存线中的数据写入到次较高的级别的存储器层次结构进行驱逐,诸如较高的级别缓存或***存储器(框130)。
仍参考图1,如果判断该组中没有路具有最低级别的替换状态信息,则控制进入框140,在那里,要搜索的替换状态信息的级别递增。然后,控制进入框150,在那里,可以判断是否有该组的任何路具有此次较高的级别的替换状态信息。如果是,与上面的情况相同,控制进入框120和130。如果在该组中没有带有此次较高的级别替换状态信息的路,则控制再次回到框140,在那里,要分析的替换状态信息的级别再次递增。如此,在方法100结束时,标识供驱逐的合适的缓存线,缓存线被驱逐,以允许传入的数据(例如,读取或写入访问的数据)被存储。如此,被驱逐的缓存线的数据被发送到存储器层次结构的比较远的部分,并可以相应地更新缓存线的缓存一致性元数据。
当数据首次写入到缓存线中时,与缓存线相关联的替换状态信息可以被设置为某一合适的级别。然后,在缓存的操作过程中,当向一组的其他路写入额外的信息时,可以更新该组内的其他路的替换状态信息。
现在参考图2,所示是根据本发明的一个实施例的用于更新替换状态信息的方法的流程图。如图2所示,方法200可以通过处理器的各种逻辑(诸如与给定缓存存储器相关联的缓存控制器)来实现。可以看出,方法200从通过加载或存储指令来访问一组的路开始(框210)。对于加载指令,所请求的从存储器层次结构的比较远的级别中获取的数据可以被存储到缓存线中,而对于存储指令,要被写入到***存储器的数据(诸如在处理器的核中修改的数据)被存储到线中。接下来,可以判断此特定缓存线的路替换状态级别是否小于预定阈值级别(菱形220)。虽然本发明的范围在这方面不受限制,但是,在实现四个替换状态级别的机制中,此预定阈值级别可以是次最低线程级别。如果判断替换状态级别不小于此阈值级别,则方法可以结束,以便所请求的数据被存储到缓存线中,并维持该缓存线的当前替换状态级别(不对其他缓存线的替换状态信息作出更新)。
如果判断替换状态级别小于阈值级别,则控制从菱形220进入框230,在那里,路可以将其替换状态级别更新到较高的级别。如下文所描述的,取决于数据类型和/或指令类型(响应于该指令类型数据正在被存储),可以指出不同级别。接下来,在菱形240,可以判断此更新是否将导致该组的所有路都等于相同替换状态级别。如果是,则控制进入框250,在那里,可以降低该组的所有其他路的替换状态级别,例如,缩小1。否则,如果更新特定路的替换状态级别不会导致所有路都被设置为相同级别,则不对其他路的替换状态级别采取进一步的动作。尽管在图2的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
某些实现提供允许程序员直接操纵状态的用户级别的指令。在这样的实现中,这些指令可以一般包括存储器访问指令,这些指令,除操作的类型,例如,预取或加载操作之外,还编码要被存储在对应的缓存线中的替换状态级别的指示。可以使用其他这样的指令来更新与特定地址相关联的替换状态信息的级别。
在一个实施例中,例如,具有助记符prefetchsr[mem]的预取指令,将导致在对应的存储器位置([mem])处的数据的预取***到缓存存储器并将该线标记为状态3,或强烈地常驻。请注意,这仍遵守上面的规则#3,如果一组中的所有其他路现在都将处于状态3,则该组的所有其他路都被设置为状态2(MeRU),预取的线被设置为状态。
类似的指令是将线标记为另一个状态的预取。在一个实施例中,具有助记符prefetchnsr[mem]的预取指令将导致数据的标准预取,并将对应的缓存线标记为状态2(MeRU)。进一步,指令判断对应于存储器地址的数据是否已经存在于缓存存储器的缓存线中,并且如果处于状态3(SR),则它将它降至状态2(MeRU)。如此,此指令允许程序员取消标记以前标记为强烈地常驻的线,允许对强烈地常驻的组的精确管理注意,如果在给定指令集架构中,操作码空间有限,并且此指令不能被实现,则可以使用缓存线驱逐/清空指令,尽管这些可能具有驱逐线的副作用。
在一个实施例中,另一个指令是缓存线驱逐暗示指令,例如,具有助记符clevicthint[mem],该指令将导致缓存线(如果仍存在于缓存中)被置于状态0(EH),而并非强制驱逐它。这会激励线被及早地驱逐,并确保它不会强制任何其他线在它之前被驱逐。然而,与缓存线清空指令不同,如果线然后被另一个加载或存储指令命中(或者因为程序员出错,或者因为对驱逐线的跟踪是概率性的,而并非保证的),线将被更新到状态2。这比访问clflush指令的目标或非临时的存储的行为灾难性小得多。然而,在先验地知道准确的操作的某些高度调谐的工作负荷中,可以避免此操作。
其他示例指令包括带有EH暗示的存储指令。这样的指令可以被执行以实施标准一致的存储,并将线设置为状态0(EH)。将存储与将状态设置为0(EH)组合减少指令的数量,并简化缓存管理。其他指令包括带有EH暗示的加载,该指令加载数据并将状态设置为0(EH)。其他用户级别的指令包括带有EH的预取。
注意,上文所描述的预取*和cl*指令可以具有影响存储器层次结构内的每一个缓存级别的变体。还要注意,缓存的任何一个级别中的缓存线的状态完全独立于任何其他级别中的其状态,尽管象往常一样,由于性能原因,建议,如果包括进一步的缓存,它们不应该驱逐存在于较近的缓存中的线,无论它们的状态是什么(通常叫做“热L1$,冷L2$问题”)。
注意,这些指令中没有哪一个暗示可能在无序处理器的操作过程中会发生的存储器排序围墙、流水线清空或停止。还要注意,没有一个状态对处理器体系结构的一致性或观察到存储器排序具有任何的影响,因为观察到现有的存储器规则。如此,此处所描述的这些缓存状态只是暗示(尽管常常是相当稳健的),整个缓存仍可以被监听,共享,并将其换出磁盘,换回、重新映射,隐藏在虚拟化层后面等等。还意味着,如果应用是为某一大小的缓存编写的,则它将缩放到带有不同的大小,组数、或缓存与某种程度的简洁的关联性的新微架构。实际上,程序可以在除了传统的最近最少使用的方案外不实现任何东西的硬件上执行,只要上面的指令作为空操作(NOP)来执行,在这样做时不会有显著的性能损失的情况下程序仍将工作,。
在某些实施例中,可以存在关于替换状态信息的各种配置选项。这样的操作可以通过操作***(OS)或通过基本输入/输出***(BIOS)配置来控制。作为一个配置选项,一组的最大数量的路可以被允许处于最高替换状态级别(即,状态3(SR))。在各种情况下,可以允许大致25%到50%之间路数的极限被设置为最高级别。在这样的情况下,如果程序员希望更多,则将所有状态3线复位到状态2,新线被设置为状态3。
当OS在各任务之间切换时,一种机制可以导致所有状态3线被切换到较低的(例如,状态2)级别。这会防止来自旧进程的线持续,如果旧进程不再在特定核上运行,这不是特别有用。还可以提供一种当切换回时将状态3线恢复到它们的以前的状态的机制。
通过将多个缓存常驻适合性级别提供到存储在缓存存储器的缓存线中的状态,程序员可以对数据有更大控制,并可以提高性能,而不会中断现有的存储器模型。
现在参照图3,其中示出了根据本发明一实施例的处理器的框图。如图3所示,处理器300是包括多个核3020-302n(一般地,核302)的多核处理器。虽然此处描述为多核处理器,但是,可以理解,本发明的范围在这方面不受限制,各实施例同样应用于单核处理器,以及包括缓存存储器的其他组件。一般而言,处理器的每一个核都包括执行逻辑304,该执行逻辑304一般可以采用处理器流水线的形式,该处理器流水线包括多个级,该多个级包括一个或多个前端单元、一个或多个执行单元,以及一个或多个后端单元。在不同的实现中,处理器可以是有序处理器或无序处理器。
核302可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
处理器可以是通用功能处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的Intel公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS、等等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、或类似物。该处理器可以被实现在一个或多个芯片上。处理器300可以是一个或多个衬底的一部分,和/或可以使用若干种处理技术中的任何一种,诸如,例如,BiCMOS、CMOS,或NMOS,在一个或多个衬底上实现。在某些实施例中,处理器300可以是包括核3020-n的片上***(SoC)。
一般而言,执行逻辑304操作以获取指令、解码指令,执行指令并引退指令。特别强调此处所描述的替换状态操作,这些指令中的某些,可以是用户级别的指令或有特权级别的指令,可以被编码以将数据分配到缓存存储器中,带有特定级别的替换状态指示符。另外,还可以使用其他指令来更新存储在特定缓存线中的替换状态指示符的级别。
如图3所示,执行逻辑304可以耦合到控制逻辑308,该控制逻辑308可以是缓存控制器或控制相对于缓存存储器316的存储以及检索操作的其他控制逻辑,缓存存储器316,在一个实施例中,可以是最低级别缓存,例如,所谓的0级别(L0)缓存存储器。尽管控制逻辑308可包括各种组件,但是,在图3中示出了替换状态逻辑310和驱逐逻辑312。一般而言,替换状态逻辑310可以执行此处所描述的实施例,诸如上文参考图1和2所讨论的,如此,与对应的替换状态指示符一起,将数据存储到缓存存储器中,还更新替换状态指示符,无论是响应于指令还是响应于替换状态指示符存储在一组的不同的路中,如此处所描述的。当确定用于驱逐的合适的缓存线时,驱逐逻辑312又可以考虑存储在一组的各种路中的替换状态信息。
仍参考图3,缓存存储器316包括多个条目或缓存线3150-315n(一般地,缓存线315)。在一个实施例中,缓存存储器316可以被实现为N路M组相关联的缓存存储器。如此,缓存存储器的M组中的每一组都包括N路。每一个缓存线315都包括存储对应的数据的数据部分325,而元数据部分330包括与存储在数据部分的数据相关联的各种元数据。根据本发明的一个实施例,这样的元数据可包括标记信息、缓存一致性信息、纠错编码信息,以及替换状态信息。注意,类似的信息可以存储在额外的级别的缓存存储器中。
在所示出的实施例中,次较高的级别的缓存,即,1级(L1)缓存352耦合到缓存存储器316。多个核,即,核3020-302n,每一个都可以耦合到共享缓存存储器360,该共享缓存存储器360又耦合到***代理370(也被称为非核电路),该非核电路可包括处理器的各种组件,诸如功率控制电路、存储器控制器电路、到芯片外组件的接口等等。尽管在图3的实施例以这样高级别地表示,然而要理解本发明的范围不限于此方面。
现在参见图4,所示为根据本发明的一实施例的示例推测引擎的框图。如图4所示,缓存线315包括各种组成元件,包括数据部分325和元数据部分330。虽然本发明的范围在这方面不受限制,但是,在一个实施例中,数据部分325可以基本上对应于缓存线的宽度,在一个实施例中,该宽度可以是64字节。在元数据字段330又存在有限量的状态信息。
在所示出的实施例中,此状态信息包括存储标记或其他地址信息的标记字段332,可以存储缓存一致性信息的缓存一致性字段334,在一个实施例中,该缓存一致性信息可以使用修改的排它性共享无效(MESI)缓存一致性协议来实现。根据本发明的一个实施例,元数据部分330还包括存储替换状态指示符的替换状态字段336。在一个实施例中,此字段可以是两比特字段,如此,在该字段内编码四个级别的替换状态信息中的一个。当然,其他实施例可包括额外的比特以编码更大数量的级别。最后,元数据部分330还包括纠错编码字段338,该字段338可包括纠错编码信息。在其他实施例中,代替这样的信息,可以提供诸如奇偶校验信息之类的错误检测信息。虽然在图4的实施例中以此高级别描述的,但是,可以理解,各种实现都是可以的,在其他实施例中,可以存在不同的元数据。
各实施例可在许多不同的***中实现。例如,实施例可在诸如多核处理器之类的处理器中实现。现在参照图5,图5示出了根据本发明一个实施例的处理器核的框图。如图5所示,处理器核400可以是多核处理器中的一个核,并且被示为多级流水线化的无序处理器。在图5中利用相对简化的视图示出处理器核400,以示出与根据本发明的实施例的使用替换状态信息的缓存管理结合使用的各种特征。
如图5所示,核400包括前端单元410,前端单元510可用于取得将被执行的指令并将这些指令准备好以供以后在处理器中使用。例如,前端单元410可包括获取单元401、指令缓存403和指令解码器405。指令解码器405被配置成解码诸如此处所公开的各种用户级别的指令的指令,包括对与存储在缓存线中的数据相关联的替换状态级别的编码。在某些实现中,前端单元410可进一步包括跟踪缓存、微码存储以及微操作存储。获取单元401可(例如,从存储器或指令缓存403)获取宏指令并将它们馈送至指令解码器405以将它们解码为原语,即用于通过处理器执行的微操作。还存在微代码存储407。
无序(OOO)引擎415耦合在前端单元410与执行单元420之间,无序引擎415可用于接收微指令并将它们准备好以供执行。更具体地,OOO引擎415可包括多个缓冲器,用于对微指令流重新排序并分配执行所需的各种资源,以及例如通过使用该引擎的重命名逻辑来提供逻辑寄存器到各个寄存器组(诸如寄存器组430和扩展寄存器组435)内的存储位置上的重命名。寄存器组430可包括用于整数和浮点操作的单独的寄存器组。扩展寄存器组435可提供向量尺寸单元的存储,例如,每寄存器256或512位。
在执行单元420中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,此类执行单元可包括一个或多个算术逻辑单元(ALU)422。当然,还可存在诸如乘法累加单元之类的其他执行单元等等。结果可以被提供给引退逻辑,该引退逻辑可以实现在处理器的存储器子***460内。例如包括执行单元和前端逻辑的各个处理器结构可以耦合到存储器子***460。该存储器子***可提供处理器结构与存储器层次的其他部分(例如芯片上或芯片外的缓存和***存储器)之间的接口。如所看见那样,各子***具有各个组件,包括存储器排序缓冲器(MOB)440。更具体地,MOB 440可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。然后,通过MOB 440检查该信息以确定指令是否可以有效引退并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。当然,MOB 440可处理与引退相关联的其他操作。
如图5所示,MOB 440耦合至缓存450,在一个实施例中,该缓存450可以是低级缓存(例如L0缓存),包括控制存储并控制诸如替换状态信息存储以及至少部分地基于此信息的驱逐之类的操作的缓存控制器455。存储器子***460还可包括集成存储器控制器470以提供与***存储器(在图5中为了说明方便而未示出)的通信。存储器子***460还可包括存储器执行单元475,该存储器执行单元475处理各种操作,以发起存储器请求并且处理数据从存储器的返回。
从存储器子***460,可发生与更高级缓存、***存储器等等的数据通信。尽管以此高级别示出在图5的实施例中,但是应理解本发明的范围在此方面不受限制。例如,虽然图5的实现方式是参照无序机、比如所谓的x86指令集架构(ISA)的无序机的,但本发明的范围在此方面不受限制。即,其他实施例可在以下处理器中实现:顺序处理器;诸如基于ARM的处理器之类的精简指令集计算(RISC)处理器;或具有另一类型ISA的处理器,该另一类型的ISA可经由仿真引擎和相关联的逻辑电路来仿真不同ISA的指令和操作。
即,在其他实施例中,处理器架构可包括仿真特征,使得处理器可执行称为源ISA的第一ISA的指令,其中该架构是根据第二ISA的,该第二ISA被称为目标ISA。一般而言,包括OS和应用程序的软件被编译至源ISA,而硬件实现针对给定硬件实现方式而特别设计的具有特殊性能和/或能源效率特征的目标ISA。
现在参照图6,其中示出了根据本发明一实施例的处理器的框图。如图6所示,处理器500可以是在核域510中包括多个核510a-510n的多核处理器。在一个实施例中,每个这样的核可以是独立功率域并可被配置成在独立电压和/或频率下工作,并当存在可用净空时进入超频模式,或者,可以作为单独的域,均匀地控制核。每一个这样的核都可包括存储如此处所描述的替换状态信息的缓存存储器。各核可经由互连515耦合至***代理或包含多个组件的非核520。如所见那样,非核520可包括共享的缓存存储器530,它可以是最末级缓存(可以类似地提供替换状态信息的存储)。另外,非核还可包括集成的存储器控制器540、各种接口550、控制处理器的组件的功率消耗的功率控制单元555,以及控制传入的中断的委派的高级可编程中断控制器(APIC)545。
进一步参考图6,处理器500可(诸如经由存储器总线)与***存储器560进行通信。此外,通过接口550,可连接到多种芯片外组件,诸如,***设备、大容量存储器、等等。虽然在图6的实施例中示出具有该特定实现,但本发明的范围不限于此方面。
参考图7,示出了包括多个核的处理器的实施例。处理器1,100包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上***(SOC)、或用于执行代码的其它器件。在一个实施例中,处理器1100包括至少两个核——核1101和1102,它们可包括非对称核或对称核(所示实施例)。然而,处理器1100可包括任何数量的处理元件,这些处理元件可以是对称的或不对称的。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作***、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核通常指的是位于集成电路上的能够维持独立体系结构状态的逻辑,其中每个独立维持的体系结构状态与至少一些专用的执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。不过,核和硬件线程通常***作***视为单独的逻辑处理器,其中操作***能够单独地调度每个逻辑处理器上的操作。
如图7所示的物理处理器1100包括两个核——核1101和1102。在此,核1101和1102被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核1101包括无序处理器核,而核1102包括有序处理器核。然而,核1101和1102可从任何类型的核中单独地选择,诸如原生核、受软件管理的核、适于执行原生指令集体系结构(ISA)的核、适于执行转换ISA的核、协同设计的核或其它已知核。不过为了进一步讨论,在下文中更详细描述了核1101中示出的功能单元,因为核1102中的单元以相似的方式操作。
如所描绘,核1101包括两个硬件线程1101a和1101b,它们可被称为硬件线程槽1101a和1101b。因此,在一个实施例中,诸如操作***之类的软件实体潜在地将处理器1100视为四个独立的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与体系结构状态寄存器1101a相关联,第二线程与体系结构状态寄存器1101b相关联,第三线程可与体系结构状态寄存器1102a相关联,并且第四线程可与体系结构状态寄存器1102b相关联。在此,架构状态寄存器(1101a、1101b、1102a和1102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器1101a在架构状态寄存器1101b中复制,如此,单个架构状态/上下文能够为逻辑处理器1101a和逻辑处理器1101b存储。在核1101中,其他较小资源,诸如分配器和重新命名块1130中的指令指针和重新命名逻辑也可以为线程1101a和1101b复制。诸如重排序器/引退单元1135中的重排序缓冲器、ILTB 1120、加载/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据缓存和数据TLB 1、执行单元1140、以及无序单元11135的多个部分之类的其它资源可能被完全共享。
处理器1,100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图7中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如所示,核1101包括简化的表示性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要执行/采用的分支的分支目标缓冲器1120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1120。
核1101进一步包括耦合至取出单元1120的解码模块1125,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽1101a、1101b相关联的单独定序器。通常,核1101与第一ISA相关联,该第一ISA定义/指定能在处理器1100上执行的指令。是第一ISA的一部分的机器代码指令常常包括引用/指定要被执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑1125包括电路,所述电路根据这些指令的操作码来识别这些指令并在流水线中传递经解码的指令,以供按照第一ISA定义地那样来处理。例如,在一个实施例中,解码器1125包括被设计成或适于识别诸如事务性指令之类的特定指令的逻辑。作为解码器1125识别的结果,架构或核1101采取特定、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块1130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程1101a和1101b潜在地能够进行无序执行,其中分配器和重命名器块1130还保留其它资源(诸如用于跟踪指令结果的重排序缓冲器)。单元1130还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器1100内部的其它寄存器。重排序/引退单元1135包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行的指令的无序执行和稍后的有序引退。
在一个实施例中,调度器和执行单元块1140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级的数据缓存和数据转换缓冲器(D-TLB)1150耦合至执行单元1140。数据缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持,并进一步与如此处所描述的多比特替换状态信息相关联。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核1101和1102共享对较高级或进一步远离的缓存1的访问,较高级或进一步远离的缓存用于缓存最近取出的元素。注意,较高级或进一步指的是缓存级增加或进一步远离执行单元。在一个实施例中,较高级的缓存1是末级数据缓存——处理器1100上的存储器层次中的最后一级缓存,诸如二级或三级数据缓存。然而,较高级缓存1110不限于此,因为它可与指令缓存相关联或包括指令缓存。替代地,跟踪缓存——一种类型的指令缓存——可耦合在解码器1125之后以存储最近解码的踪迹。
在所描绘的配置中,根据本发明的一个实施例,处理器1100还包括总线接口模块1105和可以执行功率共享控制的功率控制器1160。历史上,控制器1170被包括在处理器1100外部的计算***中。在该场景中,总线接口1105与处理器1100外部的设备通信,处理器100外部的设备诸如***存储器1175、芯片组(通常包括存储器控制器中枢以连接到存储器1175以及I/O控制器中枢以连接到***设备)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1105可包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、一致性(例如缓存一致性)总线、分层协议体系结构、差分总线以及GTL总线。
存储器1175可专用于处理器1100,或与***中的其它设备共享。存储器1175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,设备1180可包括耦合至存储器控制器中枢的图形加速器、处理器或卡、耦合至I/O控制器中枢的数据储存器、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。
注意,在所描绘的实施例中,控制器1170被示为处理器1100的一部分。最近,随着更多的逻辑和器件被集成在单个管芯上(如SOC),这些器件中的每一个可被合并在处理器1100上。例如,在一个实施例中,存储器控制器中枢1170与处理器1100处于同一封装和/或管芯上。在此,核的一部分(核上部分,on-core portion)包括与诸如存储器1175和/或图形器件1180之类的其它器件进行接口的一个或多个控制器1170。包括用于与此类器件进行接口的控制器和互连的该配置通常被称为核上(或非核(un-core)配置)。作为示例,总线接口1105包括环形互连,环形互连具有用于与存储器1175进行接口的存储器控制器以及用于与图形处理器1180进行接口的图形控制器。然而,在SoC环境中,诸如网络接口、协同处理器、存储器1175、图形处理器1180以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小外形规格。
实施例可在许多不同的***类型中实现。现在参照图8,其中示出了根据本发明一实施例的***的框图。如图8所示,多处理器***600是点对点互连***,并包括通过点对点互连650而耦合的第一处理器670和第二处理器680。如图8所示,处理器670和680中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核674a和674b以及处理器核684a和684b),虽然潜在地更多核可以存在于处理器中。处理器中的每一个都可包括一个或多个存储如此处所描述的替换状态信息的缓存存储器。
仍参考图8,第一处理器670还包括存储器控制器中枢(MCH)672和点对点(P-P)接口676和678。类似地,第二处理器680包括MCH 682和P-P接口686和688。如图8所示,MCH 672和682将处理器耦合到相应的存储器,即,存储器632和存储器634,它们可以是本地连接到相应的处理器的***存储器(例如,DRAM)的一部分。第一处理器670和第二处理器680可分别经由P-P互连652和654耦合至芯片组690。如图8中所示,芯片组690包括P-P接口694和698。
此外,芯片组690包括用于通过P-P互连639将芯片组690与高性能图形引擎638进行耦合的接口692。芯片集690又可以通过接口696耦合到第一总线616。如图8所示,各种输入/输出(I/O)设备614以及总线桥接器618可以耦合到第一总线616,总线桥接器618将第一总线616耦合到第二总线620。在一个实施例中,各种设备可耦合到第二总线620,包括例如键盘/鼠标622、通信设备626以及数据存储单元628,如可包括代码630的盘驱动器或其他大容量存储设备。此外,音频I/O 624可耦合至第二总线620。各实施例可以被合并到其他类型的***中,包括诸如智能蜂窝电话、UltrabookTM、平板计算机、上网本等等之类的移动设备。
实施例可以代码的形式实现,而且可存储在其上存储有可用于对***编程以执行这些指令的非临时存储介质上。存储介质可包括但不限于:包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何类型的磁盘;诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)之类的半导体器件;磁卡或光卡,或适合于存储电子指令的任何其他类型的介质。
虽然已经针对有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。
Claims (20)
1.一种处理器,包括:
缓存存储器,包括多个条目,每一个条目都存储数据以及与所述数据相关联的元数据,每一个条目都包括第一元数据字段,用于存储多比特替换状态指示符,以指出所述数据的多个级别的替换适用性中的一个,其中,一组中的多路可以处于所述多个级别中的相同级别;以及
控制装置,所述控制装置耦合到所述缓存存储器,用于当所述数据被存储在所述条目中时存储所述替换状态指示符。
2.如权利要求1所述的处理器,其特征在于,响应于指出所述对应的数据将强烈地常驻的用户级别指令,所述控制装置用于存储所述多个级别中的最高级别的替换状态指示符。
3.如权利要求1所述的处理器,其特征在于,响应于指出所述对应的数据是流式数据的用户级别指令,所述控制装置用于存储所述多个级别中的最低级别的替换状态指示符。
4.如权利要求1所述的处理器,其特征在于,响应于具有大于阈值的级别的替换状态指示符存储在一组中的第一路中,所述控制装置用于维持所述组中的其余路的当前级别。
5.如权利要求1所述的处理器,其特征在于,响应于具有小于阈值的级别的替换状态指示符存储在一组中的第一路中,所述控制装置用于缩小所述组中的其余路的当前级别。
6.如权利要求1所述的处理器,其特征在于,所述多个级别包括:
指出所述对应的条目中的所述数据将被驱逐的第一级别;
指出所述对应的条目中的所述数据最近较少使用的第二级别;
指出所述对应的条目中的所述数据最近被较多地使用的第三级别;以及
指出所述对应的条目中的所述数据强烈地常驻的第四级别。
7.一种处理器,包括:
解码装置,所述解码装置用于接收并解码第一存储器访问指令以将数据与第一级别的替换状态指示符一起存储在缓存存储器中,并用于向控制装置发送所述经解码的第一存储器访问指令。
耦合到所述缓存存储器的所述控制装置,响应于所述经解码的第一存储器访问指令,用于将所述数据存储在第一组所述缓存存储器的第一路中,将所述第一级别的所述替换状态指示符存储在所述第一路的元数据字段中。
8.如权利要求7所述的处理器,其特征在于,所述第一存储器访问指令包括用户级别的预取指令。
9.如权利要求7所述的处理器,其特征在于,所述第一级别的所述替换状态指示符指出所述数据强烈地常驻。
10.如权利要求9所述的处理器,进一步包括配置存储器,用于存储对应于被允许处于所述第一级别的一组中的路的最大数量的的值。
11.如权利要求7所述的处理器,其特征在于,所述控制装置,响应于上下文切换,用于更新具有所述第一级别的所述替换状态指示符的所述缓存存储器的路数。
12.如权利要求7所述的处理器,其特征在于,所述解码装置用于接收第二存储器访问指令以指出第二数据将与第四级别的替换状态指示符一起存储在所述缓存存储器中,其特征在于,所述第四级别的所述替换状态指示符指出所述第二数据适合于从所述缓存存储器中驱逐,所述第二数据是流式数据。
13.如权利要求7所述的处理器,其特征在于,所述解码装置用于解码缓存线清空指令,以指出缓存线的替换状态指示符将被更新到第四级别,以指出所述缓存线的数据适合于从所述缓存存储器中驱逐,但不驱逐所述缓存线。
14.如权利要求13所述的处理器,其特征在于,如果所述缓存线在驱逐之前响应于第三存储器访问指令被访问,则所述控制装置用于将替换状态指示符更新到第二级别,以指出所述缓存线的所述数据最近被较多地使用。
15.一种***,包括:
包括多个核的多核处理器,所述多个核中的每一个都与缓存存储器相关联,其中,所述缓存存储器包括多个缓存线,每一个缓存线都具有数据字段以及元数据字段,其中,所述元数据字段将存储多个级别中的一个级别的替换状态指示符,以指出存储在所述数据字段中的数据的驱逐适合性,其中,所述多个级别包括指出所述数据强烈地常驻的第一级别,以及对应于对于所述数据的驱逐暗示的第二级别;以及
耦合到所述多核处理器的动态随机存取存储器(DRAM)。
16.如权利要求15所述的***,其特征在于,所述多个级别还包括指出所述数据最近被较多地使用的第三级别,以及指出所述数据最近被较少地使用的第四级别。
17.如权利要求16所述的***,其特征在于,所述多个核中的每一个都还包括控制逻辑,用于在替换具有所述第一、第三或第四级别的替换状态级别的一组中的缓存线之前,替换具有所述第二级别的替换状态指示符的所述缓存存储器的所述组中的缓存线。
18.如权利要求15所述的***,其特征在于,所述多个核中的每一个都进一步包括解码逻辑,用于接收和解码第一存储器访问指令以将数据与所述第一级别的替换状态指示符一起存储在缓存线中,并导致与所述缓存存储器相关联的控制逻辑将数据与所述第一级别的所述替换状态指示符一起存储在所述缓存线中。
19.如权利要求18所述的***,其特征在于,所述解码逻辑将接收第二存储器访问指令以将第二数据与所述第二级别的替换状态指示符一起存储,其中,所述第二数据是流式数据。
20.如权利要求18所述的***,其特征在于,所述解码逻辑将解码缓存线清空指令以将缓存线的替换状态指示符更新到第二级别,但不驱逐所述缓存线。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/685,991 US9170955B2 (en) | 2012-11-27 | 2012-11-27 | Providing extended cache replacement state information |
US13/685,991 | 2012-11-27 | ||
PCT/US2013/048796 WO2014084918A1 (en) | 2012-11-27 | 2013-06-29 | Providing extended cache replacement state information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104756090A true CN104756090A (zh) | 2015-07-01 |
CN104756090B CN104756090B (zh) | 2018-04-20 |
Family
ID=50774332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380056228.6A Expired - Fee Related CN104756090B (zh) | 2012-11-27 | 2013-06-29 | 提供扩展的缓存替换状态信息 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9170955B2 (zh) |
CN (1) | CN104756090B (zh) |
WO (1) | WO2014084918A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108351836A (zh) * | 2015-12-24 | 2018-07-31 | 英特尔公司 | 具有选择性储存的多级非易失性缓存 |
CN108459877A (zh) * | 2017-02-08 | 2018-08-28 | Arm 有限公司 | 数据处理 |
CN109690502A (zh) * | 2016-09-08 | 2019-04-26 | 高通股份有限公司 | 使用硬件控制的分离监听目录的相干互连功率降低 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
CN112612728A (zh) * | 2020-12-17 | 2021-04-06 | 海光信息技术股份有限公司 | 缓存管理方法及装置、设备 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9160650B2 (en) * | 2013-06-17 | 2015-10-13 | Futurewei Technologies, Inc. | Enhanced flow entry table cache replacement in a software-defined networking switch |
KR102263326B1 (ko) * | 2014-09-18 | 2021-06-09 | 삼성전자주식회사 | 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 |
US10467092B2 (en) * | 2016-03-30 | 2019-11-05 | Qualcomm Incorporated | Providing space-efficient storage for dynamic random access memory (DRAM) cache tags |
US11106599B2 (en) | 2016-09-30 | 2021-08-31 | Intel Corporation | System and method for replacement in associative memories using weighted PLRU trees |
US10031847B2 (en) * | 2016-09-30 | 2018-07-24 | Intel Corporation | System and method for replacement in associative memories using weighted PLRU trees |
CN107291635B (zh) * | 2017-06-16 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种缓存替换方法和装置 |
US10783083B2 (en) | 2018-02-12 | 2020-09-22 | Stmicroelectronics (Beijing) Research & Development Co. Ltd | Cache management device, system and method |
US11080189B2 (en) * | 2019-01-24 | 2021-08-03 | Vmware, Inc. | CPU-efficient cache replacment with two-phase eviction |
EP4130988A1 (en) * | 2019-03-15 | 2023-02-08 | INTEL Corporation | Systems and methods for cache optimization |
US11620230B2 (en) | 2019-05-24 | 2023-04-04 | Texas Instruments Incorporated | Methods and apparatus to facilitate read-modify-write support in a coherent victim cache with parallel data paths |
US12001346B2 (en) | 2020-12-18 | 2024-06-04 | Intel Corporation | Device, method and system to supplement a skewed cache with a victim cache |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226704A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 包括多层次分级存储器体系的数据处理***的高速缓存相关性协议 |
US20010001873A1 (en) * | 1998-07-31 | 2001-05-24 | Hewlett-Packard Company | Method and apparatus for replacing cache lines in a cache memory |
CN1703679A (zh) * | 2002-10-04 | 2005-11-30 | 皇家飞利浦电子股份有限公司 | 具有分层存储器体系结构的数据处理***和操作该***的方法 |
US20090172291A1 (en) * | 2007-12-31 | 2009-07-02 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
US8131931B1 (en) * | 2008-10-22 | 2012-03-06 | Nvidia Corporation | Configurable cache occupancy policy |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
JP3495266B2 (ja) * | 1998-11-13 | 2004-02-09 | Necエレクトロニクス株式会社 | キャッシュロック装置及びキャッシュロック方法 |
US6662173B1 (en) * | 1998-12-31 | 2003-12-09 | Intel Corporation | Access control of a resource shared between components |
US6393525B1 (en) * | 1999-05-18 | 2002-05-21 | Intel Corporation | Least recently used replacement method with protection |
US6434669B1 (en) * | 1999-09-07 | 2002-08-13 | International Business Machines Corporation | Method of cache management to dynamically update information-type dependent cache policies |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US7080210B2 (en) * | 2002-02-12 | 2006-07-18 | Ip-First, Llc | Microprocessor apparatus and method for exclusive prefetch of a cache line from memory |
US6996678B1 (en) | 2002-07-31 | 2006-02-07 | Cisco Technology, Inc. | Method and apparatus for randomized cache entry replacement |
US7032076B2 (en) * | 2002-09-16 | 2006-04-18 | Intel Corporation | Prefetching data in a computer system |
US6901483B2 (en) * | 2002-10-24 | 2005-05-31 | International Business Machines Corporation | Prioritizing and locking removed and subsequently reloaded cache lines |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7010649B2 (en) * | 2003-10-14 | 2006-03-07 | International Business Machines Corporation | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache |
US7366887B2 (en) * | 2005-07-11 | 2008-04-29 | Lenovo (Singapore) Pte. Ltd. | System and method for loading programs from HDD independent of operating system |
US8225297B2 (en) | 2005-12-07 | 2012-07-17 | Microsoft Corporation | Cache metadata identifiers for isolation and sharing |
US7757045B2 (en) | 2006-03-13 | 2010-07-13 | Intel Corporation | Synchronizing recency information in an inclusive cache hierarchy |
US7991956B2 (en) | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US8464000B2 (en) * | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
EP2441005A2 (en) | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
US8990506B2 (en) | 2009-12-16 | 2015-03-24 | Intel Corporation | Replacing cache lines in a cache memory based at least in part on cache coherency state information |
US9189403B2 (en) * | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US9189423B2 (en) * | 2011-12-06 | 2015-11-17 | Advanced Micro Devices, Inc. | Method and apparatus for controlling cache refills |
US10019381B2 (en) * | 2012-05-01 | 2018-07-10 | Nvidia Corporation | Cache control to reduce transaction roll back |
-
2012
- 2012-11-27 US US13/685,991 patent/US9170955B2/en not_active Expired - Fee Related
-
2013
- 2013-06-29 WO PCT/US2013/048796 patent/WO2014084918A1/en active Application Filing
- 2013-06-29 CN CN201380056228.6A patent/CN104756090B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226704A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 包括多层次分级存储器体系的数据处理***的高速缓存相关性协议 |
US20010001873A1 (en) * | 1998-07-31 | 2001-05-24 | Hewlett-Packard Company | Method and apparatus for replacing cache lines in a cache memory |
US6490654B2 (en) * | 1998-07-31 | 2002-12-03 | Hewlett-Packard Company | Method and apparatus for replacing cache lines in a cache memory |
CN1703679A (zh) * | 2002-10-04 | 2005-11-30 | 皇家飞利浦电子股份有限公司 | 具有分层存储器体系结构的数据处理***和操作该***的方法 |
US20090172291A1 (en) * | 2007-12-31 | 2009-07-02 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
US8108614B2 (en) * | 2007-12-31 | 2012-01-31 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
US8131931B1 (en) * | 2008-10-22 | 2012-03-06 | Nvidia Corporation | Configurable cache occupancy policy |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108351836A (zh) * | 2015-12-24 | 2018-07-31 | 英特尔公司 | 具有选择性储存的多级非易失性缓存 |
CN108351836B (zh) * | 2015-12-24 | 2024-05-07 | 英特尔公司 | 具有选择性储存的多级非易失性缓存 |
CN109690502A (zh) * | 2016-09-08 | 2019-04-26 | 高通股份有限公司 | 使用硬件控制的分离监听目录的相干互连功率降低 |
CN108459877A (zh) * | 2017-02-08 | 2018-08-28 | Arm 有限公司 | 数据处理 |
CN108459877B (zh) * | 2017-02-08 | 2024-03-29 | Arm有限公司 | 数据处理 |
CN110297787A (zh) * | 2018-03-22 | 2019-10-01 | 龙芯中科技术有限公司 | I/o设备访问内存的方法、装置及设备 |
CN110297787B (zh) * | 2018-03-22 | 2021-06-01 | 龙芯中科技术股份有限公司 | I/o设备访问内存的方法、装置及设备 |
CN112612728A (zh) * | 2020-12-17 | 2021-04-06 | 海光信息技术股份有限公司 | 缓存管理方法及装置、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104756090B (zh) | 2018-04-20 |
WO2014084918A1 (en) | 2014-06-05 |
US9170955B2 (en) | 2015-10-27 |
US20140149651A1 (en) | 2014-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
US10635593B2 (en) | Create page locality in cache controller cache allocation | |
US10228861B2 (en) | Common platform for one-level memory architecture and two-level memory architecture | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
CN105453030B (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和*** | |
CN105190572B (zh) | 用于防止未经授权的堆栈转移的***和方法 | |
US10599573B2 (en) | Opportunistic increase of ways in memory-side cache | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN104603761B (zh) | 对于页漏失处理程序的并行控制 | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
CN104813278B (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
CN104951697A (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及*** | |
KR20210116651A (ko) | 바이패스 최적화, 가변 그리드 아키텍처 및 융합된 벡터 동작들을 갖는 코프로세서들 | |
CN104049948A (zh) | 指令仿真处理器、方法和*** | |
TWI514144B (zh) | 積聚分頁錯失之信號傳遞與處置技術 | |
CN104583959A (zh) | 允许处理器资源的虚拟化 | |
TW202307669A (zh) | 用於在異質處理資源上調適性地排程工作的設備及方法 | |
US11531562B2 (en) | Systems, methods, and apparatuses for resource monitoring | |
CN109313607A (zh) | 用于利用所指示的检查位值来检查位的位检查处理器、方法、***和指令 | |
CN107924442B (zh) | 用于轻量级虚拟化上下文的方法和设备 | |
CN103270489B (zh) | 用于进行段寄存器读和写而不管特权等级的***、装置和方法 | |
CN104823153A (zh) | 引导变化预测器逻辑 | |
US20240202125A1 (en) | Coherency bypass tagging for read-shared data | |
US20230315632A1 (en) | Two-stage cache partitioning | |
WO2024000363A1 (en) | Variable cacheline set mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180420 Termination date: 20190629 |
|
CF01 | Termination of patent right due to non-payment of annual fee |