CN101088075B - 用于多核处理器中非一致性高速缓存的系统和方法 - Google Patents

用于多核处理器中非一致性高速缓存的系统和方法 Download PDF

Info

Publication number
CN101088075B
CN101088075B CN200580044884XA CN200580044884A CN101088075B CN 101088075 B CN101088075 B CN 101088075B CN 200580044884X A CN200580044884X A CN 200580044884XA CN 200580044884 A CN200580044884 A CN 200580044884A CN 101088075 B CN101088075 B CN 101088075B
Authority
CN
China
Prior art keywords
cache
tile
processor
cache line
group
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.)
Expired - Fee Related
Application number
CN200580044884XA
Other languages
English (en)
Other versions
CN101088075A (zh
Inventor
C·休斯
J·塔克三世
V·李
Y·陈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201110463521.7A priority Critical patent/CN103324584B/zh
Publication of CN101088075A publication Critical patent/CN101088075A/zh
Application granted granted Critical
Publication of CN101088075B publication Critical patent/CN101088075B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture

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)
  • Microcomputers (AREA)

Abstract

公开了用于设计和操作在多核处理器中的分布式共享高速缓存的系统和方法。在一个实施例中,共享高速缓存可以分布在多个高速缓存单元中。就访问等待时间而言,每个高速缓存单元可以最靠近其中一个处理器内核。在一个实施例中,从存储器提取的高速缓存行可以最初被放置在不是与发出请求的处理器内核最靠近的高速缓存单元中。当发出请求的处理器内核对那个高速缓存行重复访问时,可以将它在高速缓存单元之间移动或在一个高速缓存单元内移动。由于在高速缓存内移动高速缓存行的能力,在各种实施例中,可以使用具体的搜索方法来定位特定高速缓存行。

Description

用于多核处理器中非一致性高速缓存的系统和方法
技术领域
本发明总体上涉及微处理器,更具体而言,涉及可以包括多个处理器内核的微处理器。
背景技术
现代微处理器可以在单个半导体器件上包括两个或多个处理器内核。这种微处理器可以被称为多核处理器。与使用单内核相比,使用多个内核可以改进性能。但是,传统的共享高速缓存架构可能并不特别适合于支持多核处理器的设计。这里,“共享”可以指每个内核都可以访问该高速缓存中的高速缓存行(cache line)。传统架构的共享高速缓存可以使用一个公共结构来存储高速缓存行。由于布局约束和其它因素,从这种高速缓存到一个内核的访问等待时间可能不同于到另一个内核的访问等待时间。通常,通过为对不同内核的访问等待时间采用“最坏情况”设计规则来补偿这种情况。这种策略可能会增大对所有内核的平均访问等待时间。
可以对该高速缓存进行分区,并将各个分区布置在包含多个处理器内核的整个半导体器件中。但是,这本身不会显著地减小所有内核的平均访问等待时间。对于物理位置靠近某个特定内核的高速缓存分区来说,该发出请求的内核可以具有改进的访问等待时间。但是,该发出请求的内核还会访问半导体器件上物理位置与其相距较远的分区中包含的高速缓存行。对这些高速缓存行的访问等待时间会显著大于对物理位置靠近该发出请求的内核的高速缓存分区中的高速缓存行的访问等待时间。
附图说明
结合附图以示例性而非限制性的方式说明本公开,图中相似的标号代表类似的元件,其中:
图1是根据本公开的一个实施例的环形互连上的高速缓存单元(cache molecule)的示意图;
图2是根据本公开的一个实施例的高速缓存单元的示意图;
图3是根据本公开的一个实施例的高速缓存链(cache chain)中的高速缓存片(cache tile)的示意图;
图4是根据本公开的一个实施例的用于搜索高速缓存行的示意图;
图5是根据本公开的另一个实施例的非一致性高速缓存(non-uniform cache)架构集合服务的示意图;
图6A是根据本公开的另一个实施例的查找状态保持寄存器的示意图;
图6B是根据本公开的另一个实施例的查找状态保持寄存器条目的示意图;
图7是根据本公开的另一个实施例的用于搜索高速缓存行的方法的流程图;
图8是根据本公开的另一个实施例的具有细目表(breadcrumbtable)的高速缓存单元的示意图;
图9A是根据本公开的一个实施例的、包括具有多个内核和高速缓存单元的处理器的系统的示意图;
图9B是根据本公开的另一个实施例的、包括具有多个内核和高速缓存单元的处理器的系统的示意图。
具体实施方式
下面的描述包括设计和操作多核处理器中的非一致性共享高速缓存的技术。在下面的描述中,为了提供对本发明的更彻底的理解,列出了很多具体细节,诸如逻辑实现、软件模块分配、总线和其它接口信号传输技术、以及操作细节。但是,本领域技术人员将会理解,可以在没有这些具体细节的情况下实施本发明。在其它实例中,为了不混淆本发明,没有详细示出控制结构、门级电路和完整的软件指令序列。本领域的那些普通技术人员根据这里的描述,将能够实现正确的功能而无需过度的实验。在某些实施例中,在安腾
Figure G05844884X20070628D000031
处理器家族兼容的处理器(诸如由英特尔
Figure G05844884X20070628D000032
公司制造的那些处理器)、相关联的系统和处理器固件的环境中公开了本发明。但是,也可以利用其它类型的处理器系统来实现本发明,诸如利用奔腾
Figure G05844884X20070628D000033
兼容处理器系统(诸如由英特尔
Figure G05844884X20070628D000034
公司制造的那些处理器系统)、X-Scale
Figure G05844884X20070628D000035
家族兼容处理器、或其他厂商或设计商的任何处理器架构的任何各种不同的通用处理器。另外,一些实施例可以包括或可以是专用处理器,诸如图形、网络、图像、通信、或者任何其它已知或可获得的类型的处理器连同其固件。
现在参见图1,根据本公开的一个实施例,示出了环形互连上的高速缓存单元的示意图。处理器100可以包括几个处理器内核102-116和高速缓存单元120-134。在不同的实施例中,处理器内核102-116可以是公共内核设计的相似复制,或者它们的处理能力可以有实质的不同。高速缓存单元120-134整体上在功能上等价于传统的单一高速缓存。在一个实施例中,他们可以形成二级(L2)高速缓存,而一级(L1)高速缓存位于内核102-116内。在其它实施例中,高速缓存单元可以位于整个高速缓存层次体系中的不同级。
如图所示,用包括顺时针(CW)环140和逆时针(CCW)环142的冗余双环互连来连接内核102-116和高速缓存单元120-134。环的每个部分都可以在所示模块之间传送任何数据。如图所示,内核102-116中的每个内核都与高速缓存单元120-134的一个高速缓存单元配对。该配对是为了将一个内核与就低访问等待时间而言“最靠近”的高速缓存单元在逻辑上相关联。例如,内核104当访问高速缓存单元122中的高速缓存行时,可以具有最低的访问等待时间,而当访问其它高速缓存单元时,将具有增大的访问等待时间。在其它实施例中,两个或多个内核能够共享单个高速缓存单元,或者可以有两个或多个高速缓存单元与一个特定的内核相关联。
可以使用一种度量“距离”来描述高速缓存单元相对于一个特定内核的等待时间次序。在一些实施例中,该距离可以与内核和高速缓存单元在该互连上的物理距离相关联。例如,高速缓存单元122和内核104之间的距离可以小于高速缓存单元126和内核104之间的距离,而后者又可以小于高速缓存单元128和内核104之间的距离。在其它实施例中,可以使用其它形式的互连,诸如单环互连、线性互连或网格互连。在每种情况下,都可以定义距离度量来描述高速缓存单元相对于特定内核的等待时间次序。
现在参见图2,根据本发明的一个实施例,示出了一个高速缓存单元的示意图。在一个实施例中,该高速缓存单元可以是图1中的高速缓存单元120。高速缓存单元120可以包括L2控制器210和一个或多个高速缓存链。L2控制器210可以具有用于与所述互连进行连接的一个或多个连线260、262。在图2的实施例中,示出了四个高速缓存链220、230、240、250,但是在高速缓存单元中可以具有多于或少于四个高速缓存链。在一个实施例中,可以将存储器中的任何特定高速缓存行映射到这四个高速缓存链中的单独一个。当访问高速缓存单元120中的一个特定高速缓存行时,只需要搜索和访问相应的高速缓存链。因此,可以将多个高速缓存链类推到传统的组相联高速缓存中的多个组;但是,由于本公开的高速缓存中所具有的互连数目,与类似高速缓存大小的传统组相联高速缓存中的组相比,通常具有较少的高速缓存链。在其它实施例中,存储器中的任何特定高速缓存行都可以映射到高速缓存单元中的两个或多个高速缓存链。
每个高速缓存链可以包括一个或多个高速缓存片。例如,如图所示,高速缓存链220具有高速缓存片222-228。在其它实施例中,在一个高速缓存链中可以有多于或少于四个高速缓存片。在一个实施例中,一个高速缓存链中的高速缓存片不是按地址划分的,例如,载入到一个高速缓存链的高速缓存行可以被置于该高速缓存链的任何高速缓存片中。由于沿高速缓存链的互连长度不同,沿着单个高速缓存链,这些高速缓存片的访问等待时间可能不同。例如,从高速缓存片222的访问等待时间可能小于从高速缓存片228的访问等待时间。这样,可以使用沿高速缓存链的“距离”度量来描述相对于特定高速缓存链的高速缓存片的等待时间次序。在一个实施例中,可以并行地搜索特定高速缓存链中的每个高速缓存片与该高速缓存链中的其它高速缓存片。
当一个内核请求一个特定高速缓存行并且确定所请求的高速缓存行没有驻留在高速缓存中(“高速缓存缺失”)时,可以从在高速缓存层次体系中与存储器较近的高速缓存或从存储器中将该高速缓存行提取到前述高速缓存中。在一个实施例中,有可能最初就将那个新高速缓存行布置在发出请求的内核附近。但是,在一些实施例中,最初将那个新高速缓存行布置在距发出请求的内核一定距离处,稍后当该高速缓存行被重复访问时,移动该高速缓存行使其更靠近发出请求的内核,这样可能是有优势的。
在一个实施例中,可以简单地将新高速缓存行放置在距发出请求的处理器内核最远的高速缓存片中。但是,在另一个实施例中,每个高速缓存片可以返回一个分数,该分数可以指明容量、适合程度、或其它对于分配一个位置来接收高速缓存缺失后的新高速缓存行的意愿性度量。这种分数可以反映这样的信息,诸如,该高速缓存片的物理位置以及潜在牺牲高速缓存行最近是何时被访问的。当一个高速缓存单元报告对于被请求的高速缓存行的缺失时,它可以返回由其中的高速缓存片所报告的最大分数。一旦确定对于整个高速缓存的缺失,该高速缓存可以比较这些单元最大分数,并选择具有整体最大分数的单元来接收新高速缓存行。
在另一个实施例中,高速缓存可以确定哪个高速缓存行是最近最少使用的(LRU),并选择收回该高速缓存行来支持一次缺失之后的新高速缓存行。由于LRU的确定实施起来很复杂,在另一个实施例中,可以使用一种伪LRU替代方法。可以将LRU计数器与整个高速缓存中每个高速缓存片中的每个位置相关联。当高速缓存命中时,可以访问每个高速缓存片中可能包含被请求的高速缓存行而并没有包含的每个位置,并且使该位置的LRU计数器加一。当随后在特定的高速缓存片中特定的位置中发现另一被请求的高速缓存行时,可以复位该位置的LRU计数器。以这种方式,这些位置的LRU计数器可以包含与每个高速缓存片中那个位置的高速缓存行被访问的频率相关的值。在这个实施例中,高速缓存可以确定每个高速缓存片中的最高LRU计数值,然后选择具有总体最高LRU计数值的高速缓存片来接收新高速缓存行。
对任何这些替换方法的增强可以包括对存储器中的高速缓存行使用关键程度提示。当一个高速缓存行包含由具有关键程度提示的指令载入的数据时,在某个释放事件(例如转送处理的需求)发生之前,不会选择收回该高速缓存行。
一旦特定的高速缓存行位于整个高速缓存之内,将它移动到更靠近频繁请求它的内核,这样可能是有优势的。在一些实施例中,支持两种高速缓存行移动。第一种移动是单元间移动,其中高速缓存行可以沿互连在高速缓存单元之间移动。第二中移动是单元内移动,其中高速缓存行可以沿高速缓存链在高速缓存片之间移动。
首先来讨论单元间移动。在一个实施例中,每当发出请求的内核访问高速缓存行时,可以将这些高速缓存行移动到靠近该发出请求的内核处。但是,在另一个实施例中,延迟任何移动,直到该高速缓存行已经被特定的发出请求的内核访问多次为止,这样可能是有优势的。在一个这样的实施例中,每个高速缓存片的每个高速缓存行都可以具有相关联的饱和计数器,其在预定计数值之后饱和。每个高速缓存行还可以具有附加比特和相关联的逻辑,来确定新近发出请求的内核位于沿互连哪个方向。在其它实施例中,可以使用其它形式的逻辑来确定请求的数量或频率以及发出请求的内核的位置或标识。在互连不是双环互连,而是单环互连、线性互连或网格互连的实施例中,特别可以使用这些其它形式的特定逻辑。
再次参见图1,作为一个例子,令内核110作为发出请求的内核,令被请求的高速缓存行最初被放置在高速缓存单元134中。通过与高速缓存单元134中被请求的高速缓存行相关联的附加比特和逻辑,来自内核110的访问请求被标注为来自逆时针方向。在导致被请求的高速缓存行的饱和计数器在其预定值饱和所需的访问次数出现之后,可以在逆时针方向上将该被请求的高速缓存行朝着内核110移动。在一个实施例中,可以将其移动一个高速缓存单元,到达高速缓存单元132。在其它实施例中,可以一次移动多于一个单元。一旦在高速缓存单元132中,可以将该被请求的高速缓存行与复位到零的新饱和值相关联。如果内核110继续访问那个被请求的高速缓存行,可以将其在内核110的方向上再次移动。另一方面,如果它开始被另一个内核重复访问,假设内核104,则可以在顺时针方向上将它向回移动,以便更靠近内核104。
现在参见图3,根据本公开的一个实施例,示出了高速缓存链中的高速缓存片的示意图。在一个实施例中,高速缓存片222-228可以是图2的高速缓存单元120的高速缓存片,该高速缓存单元120被示为是相应的与图1的内核102最靠近的高速缓存单元。
现在来讨论单元内移动。在一个实施例中,特定的高速缓存单元中的单元内移动可以是仅响应于来自相应的“最靠近的”内核(例如,与所述单元具有最小距离度量的内核)的请求而做出的。在其它实施例中,可以响应于来自其它更远的内核的请求,来允许单元内移动。作为一个例子,令相应的最靠近的内核102重复请求访问最初在高速缓存片228的位置238处的高速缓存行。在这个例子中,位置238的相关联比特和逻辑可以指示这些请求来自最靠近的内核110,而不是来自从顺时针或逆时针方向的内核。当导致位置238处的被访问的高速缓存行的饱和计数器在其预定值饱和所需的访问次数出现之后,可以将被访问的高速缓存行向着内核110的方向移动。在一个实施例中,可以将它更靠近地移动一个高速缓存片,到达高速缓存片226中的位置236。在其它实施例中,可以将它一次更靠近地移动多于一个高速缓存片。一旦在高速缓存片226中,就将位置236中的该被请求的高速缓存行与复位到零的新饱和计数器相关联。
在单元间移动的情况下或单元内移动的情况下,分别需要选择和准备目标高速缓存单元或目标高速缓存片中的目的地位置,来接收被移动的高速缓存行。在一些实施例中,可以使用传统的高速缓存牺牲方法,通过使一个“气泡”一个高速缓存片一个高速缓存片地传播或一个高速缓存单元一个高速缓存单元地传播,或者通过将该高速缓存行与目的地结构(单元或片)中另一个高速缓存行进行交换,来选择和准备目的地位置。在一个实施例中,可以检查目的地结构中的高速缓存行的饱和计数器以及相关联比特和逻辑,来确定是否存在交换候选高速缓存行,其正要作出在期望移动的该高速缓存行的相反方向上的移动决定。如果是的话,那么可以交换这两个高速缓存行,并且它们都可以有利地向着它们各自的发出请求的内核移动。在另一个实施例中,可以检查伪LRU计数器,来帮助确定目的地位置。
现在参见图4,根据本公开的一个实施例,示出了搜索一个高速缓存行的示意图。在诸如图1所示的L2高速缓存这样的分布式高速缓存中搜索高速缓存行,可能首先需要确定在该高速缓存中被请求的高速缓存行是存在(“命中”)还是不存在(“缺失”)。在一个实施例中,一个内核对相应的“最靠近的”高速缓存单元发出查找请求。如果发现命中,则该处理过程结束。但是,如果在那个高速缓存单元中发现缺失,那么将查找请求发送到其它高速缓存单元。每个其它高速缓存单元然后可以确定它们是否具有被请求的高速缓存行,并向回报告命中或缺失。这个两部分查找可以由方框410代表。如果在一个或多个高速缓存单元中确定有命中,则该处理过程在方框412结束。在其它实施例中,可以通过搜索与发出请求的处理器内核最靠近的一个或多个高速缓存单元或高速缓存片,来开始搜索一个高速缓存行。如果没有发现该高速缓存行,那么可以继续该搜索,按照距发出请求的处理器内核的距离的次序、或并行地搜索其它高速缓存单元或高速缓存片。
但是,如果在方框414所有高速缓存单元都报告缺失,该处理过程不一定结束。由于如上讨论的移动高速缓存行的技术,有可能是该被请求的高速缓存行移出第一高速缓存单元(其随后报告缺失),并移入第二高速缓存单元(其之前报告缺失)。这种情况下,所有高速缓存单元都会报告对于被请求的高速缓存行的缺失,而该被请求的高速缓存行实际上还存在于该高速缓存中。这种情况下,高速缓存行的状态可以被称为“存在但未发现”(PNF)。在方框414中,进行进一步确定,以发现被高速缓存单元报告的缺失是真正的缺失(在方框416处理过程结束)、还是PNF。在方框418中确定为PNF的情况下,在一些实施例中需要重复该处理过程直到在移动之间发现该被请求的高速缓存行为止。
现在参见图5,根据本公开的一个实施例,示出了非一致性高速缓存架构集合服务的示意图。在一个实施例中,多个高速缓存单元510-518和处理器内核520-528可以通过具有顺时针环552和逆时针环550的双环互连来相互连接。在其它实施例中,可以使用高速缓存单元和内核的其它分布,也可以使用其它互连。
为了搜索高速缓存以及支持确定被报告的缺失是真正的缺失还是PNF,在一个实施例中,可以使用非一致性高速缓存集合服务(NCS)530。该NCS 530可以包括回写(write-back)缓冲器532以支持从高速缓存的收回,还可以具有缺失状态保持寄存器(MSHR)534以支持对于被宣布为缺失的同一高速缓存行的多个请求。在一个实施例中,回写缓冲器532和MSHR 534可以是传统设计。
在一个实施例中,可以使用查找状态保持寄存器(LSHR)536来跟踪未决存储器请求的状态。该LSHR 536可以对响应于对高速缓存行的访问请求而来自各高速缓存单元的命中或缺失报告进行接收和制表。在LSHR 536已经从所有高速缓存单元接收到缺失报告的情况下,可能并不清楚是发生了真正的缺失还是PNF。
因此,在一个实施例中,NCS 530还可以包括电话簿538,来区分真正缺失的情况和PNF的情况。在其它实施例中,可以使用其它逻辑和方法来进行这种区分。电话簿538可以针对整个高速缓存中存在的每个高速缓存行而包括一个条目。当一个高速缓存行被提取到该高速缓存中时,将一个相应条目输入该电话簿538。当从该高速缓存中移除该高速缓存行时,可以使相应的电话簿条目无效或解除分配。在一个实施例中,该条目可以是该高速缓存行的高速缓存标签,而在其它实施例中,可以使用该高速缓存行的其它形式的标识符。NCS530可以包括支持针对任何被请求的高速缓存行来搜索电话簿538的逻辑。在一个实施例中,电话簿538可以是内容可寻址存储器(CAM)。
现在参见图6A,根据本公开的一个实施例,示出了查找状态保持寄存器(LSHR)的示意图。在一个实施例中,该LSHR可以是图5的LSHR 536。LSHR 536可以包括许多条目610-632,每个条目可以表示对一个高速缓存行的未决请求。在不同的实施例中,这些条目610-632可以包括用来描述被请求的高速缓存行和从各高速缓存单元接收的命中或缺失报告的字段。当LSHR 536从任何高速缓存单元接收到命中报告时,NCS 530然后可以对LSHR 536中的相应条目解除分配。当LSHR 536已经从所有高速缓存单元接收到针对特定的被请求的高速缓存行的缺失报告时,NCS 530然后可以调用逻辑来确定是发生真正的缺失、还是PNF的情况。
现在参见图6B,根据本公开的一个实施例,示出了查找状态保持寄存器条目的示意图。在一个实施例中,该条目可以包括:对最初的较低级高速缓存请求(这里,来自一级L1高速缓存,“初始L1请求”)的指示640;缺失状态比特642,其可以开始时设定为“缺失”,但是当任何高速缓存单元报告对该高速缓存行的命中时,切换为“命中”;表示未决应答数目的倒计数字段644。在一个实施例中,初始L1请求可以包括被请求的高速缓存行的高速缓存标签。未决应答数目644字段可以最初被设定为高速缓存单元的总数。当接收到针对初始L1请求640中的被请求的高速缓存行的每个报告时,可以将未决应答数目644减一。当未决应答数目644达到零时,NCS 530然后可以检查缺失状态比特642。如果缺失状态比特642保持为缺失,那么NCS 530可以检查电话簿,以确定这是真正的缺失还是PNF。
现在参见图7,根据本公开的一个实施例,示出了用于搜索高速缓存行的方法的流程图。在其它实施例中,图7中的各个方框所示的处理过程的各个部分可以在时间上重新分配和重新安排,而仍执行该处理过程。在一个实施例中,可以通过图5的NCS 530来执行图7的方法。
在判定框712开始,从一个高速缓存单元接收到命中或缺失报告。如果该报告是命中,那么该处理过程沿“否”路径继续,并且搜索在方框714终止。如果报告是缺失并且还有未决报告,那么该处理过程沿“未决”路径继续,并再次进入判定框712。但是,如果报告是缺失并且不再有未决报告,那么该处理过程沿“是”路径继续。
然后,在判定框718中,可以确定该缺失高速缓存行是否在回写缓冲器中具有条目。如果是,那么该处理过程沿“是”路径继续,并且在方框720中,作为高速缓存一致性操作的一部分,该高速缓存行请求可以由该回写缓冲器中的该条目满足。然后可以在方框722中终止该搜索。但是,如果该缺失高速缓存行在回写缓冲器中没有条目,那么该处理过程沿“否”路径继续。
在判定框726中,可以搜索电话簿,其包含高速缓存中存在的所有高速缓存行的标签。如果在电话簿中发现匹配,那么该处理过程沿“是”路径继续,并且在方框728,可以宣布该存在但未发现的情形。但是,如果没有发现匹配,该处理过程沿“否”路径继续。然后在判定框730,可以确定是否存在针对同一高速缓存行的另一个未决请求。这可以通过检查诸如图5的缺失状态保持寄存器(MSHR)534这样的MSHR来执行。如果是,那么该处理过程沿“是”分支继续,并且在方框734,将该搜索与已有的搜索结合在一起。如果没有预先存在的请求并且有资源限制,诸如MSHR或回写缓冲器临时是满的,那么该处理过程将该请求置于缓冲器732中,并可以重新进入判定框730。但是,如果没有预先存在的请求并且没有资源限制,那么该处理过程可以进入判定框740。
在判定框740,可以确定如何最好地在高速缓存中分配一个位置来接收被请求的高速缓存行。如果因为任何原因目前没有作出分配,该处理过程可以将该请求置于缓冲器742中,并且稍后重试。如果可以在不强迫收回的情况下作出分配,诸如分配包含处于无效状态的高速缓存行的位置,那么该处理过程继续并进入方框744,在此处可以执行对存储器的请求。如果可以通过强迫收回来作出分配,诸如分配包含已经很少被访问的处于有效状态的高速缓存行的位置,那么该处理过程继续并进入判定框750。在判定框750,可以确定是否需要回写被牺牲的高速缓存行的内容。如果不,那么在方框744中启动对存储器的请求之前,可以在方框752中将回写缓冲器中留给该牺牲者的条目解除分配。如果是,那么在方框744中对存储器的请求也可以包括相应的回写操作。在任何一种情况下,方框744中的存储器操作以方框746中的任何标签缺失的清除来结束。
现在参见图8,根据本公开的一个实施例,示出了具有细目表的高速缓存单元的示意图。高速缓存单元800的L2控制器810添加有一个细目表812。在一个实施例中,每次L2控制器810接收到对一个高速缓存行的请求时,该L2控制器可以将那个高速缓存行的标签(或其它标识符)插入到该细目表812的一个条目814中。可以保留该细目表中的该条目,直到像对该被请求的高速缓存行的未决搜索完成那样的时间为止。然后可以解除分配该条目。
当另一个高速缓存单元希望将一个高速缓存行移入高速缓存单元800时,该L2控制器810可以首先检查该移动候选高速缓存行的标签是否在于细目表812中。例如,如果该移动候选高速缓存行是在条目814中有标签的该被请求的高速缓存行,那么L2控制器810可以拒绝接受该移动候选高速缓存行。该拒绝可以持续直到针对该被请求的高速缓存行的未决搜索完成为止。只有当所有的高速缓存单元提交了它们各自的命中或缺失报告后,该搜索才完成。这意味着,进行转送的高速缓存单元在提交了它的命中或缺失报告后的某一时间之前,必须保留该被请求的高速缓存行。在这种情况下,来自该进行转送的高速缓存单元的命中或缺失报告将指示命中而不是缺失。通过这种方式,使用细目表812可以禁止出现存在但未发现的高速缓存行。
当与包含细目表的高速缓存单元一起使用时,图5的NCS 530可以被修改为删除电话簿。那么,当LSHR 536从高速缓存单元接收到所有的缺失报告时,NCS 530能够宣布真正的缺失,并且可以认为搜索完成。
现在参见图9A和9B,根据本发明的两个实施例,示出了具有包括多个内核和高速缓存单元的处理器的系统的示意图。图9A的系统总体上示出了通过系统总线将处理器、存储器和输入/输出设备互相连接的系统,而图9B的系统总体上示出了通过多个点对点接口将处理器、存储器和输入/输出设备互相连接的系统。
图9A的系统可以包括一个或几个处理器,为了清楚,这里只示出了两个处理器40、60。处理器40、60可以包括二级高速缓存42、62,其中,每个处理器40、60可以包括多个内核,每个高速缓存42、62可以包括多个高速缓存单元。图9A的系统可以具有经由总线接口44、64、12、8与系统总线6连接的几个功能单元。在一个实施例中,系统总线6可以是与英特尔
Figure G05844884X20070628D000131
公司制造的奔腾系列微处理器一起使用的前端总线(FSB)。在其它实施例中,可以使用其它总线。在一些实施例中,可以将存储器控制器34和总线桥32合称为芯片组。在一些实施例中,可以将一个芯片组的多个功能单元划分到多个物理芯片中,与图9A的实施例中所示的不同。
存储器控制器34可以允许处理器40、60从系统存储器10和从基本输入/输出系统(BIOS)可擦除可编程只读存储器(EPROM)36进行读和写。在一些实施例中,BIOS EPROM 36可以使用闪存,并可以包括其它基本运算固件而非BIOS。存储器控制器34可以包括总线接口8,以允许向和从系统总线6上的总线代理搬运存储器读和写数据。存储器控制器34还可以经过高性能图形接口39连接到高性能图形电路38。在某些实施例中,高性能图形接口39可以是高级图形端口AGP接口。存储器控制器34可以将数据从系统存储器10经由高性能图形接口39导向高性能图形电路38。
图9B的系统也可以包括一个或几个处理器,为了清楚,这里只示出了两个处理器70、80。处理器70、80可以包括二级高速缓存56、58,其中,每个处理器70、80可以包括多个内核,每个高速缓存56、58可以包括多个高速缓存单元。处理器70、80分别可以包括本地存储器控制器集线器(MCH)72、82,用于连接存储器2、4。处理器70、80可以使用点对点接口电路78、88经由点对点接口50交换数据。处理器70、80分别可以使用点对点接口电路76、94、86、98经由各个点对点接口52、54与芯片组90交换数据。在其它实施例中,可以将芯片组功能单元实现在处理器70、80中。芯片组90还可以经由高性能图形接口92与高性能图形电路38交换数据。
在图9A的系统中,总线桥32可以允许系统总线6和总线16之间的数据交换,在一些实施例中,总线16可以是工业标准结构(ISA)总线或外围组件互连(PCI)总线。在图9B的系统中,芯片组90可以经由总线接口96与总线16交换数据。在任一个系统中,总线16上可以具有各种输入/输出I/O设备14,在一些实施例中包括低性能图形控制器、视频控制器和网络控制器。在一些实施例中,可以使用另一个总线桥18来允许总线16和总线20之间的数据交换。在一些实施例中,总线20可以是小型计算机系统接口(SCSI)总线、集成设备电路(IDE)总线、或通用串行总线(USB)总线。可以将其它I/O设备连接到总线20。它们可以包括键盘和光标控制设备22(包括鼠标)、音频I/O 24、通信设备26(包括调制解调器和网络接口)、以及数据存储设备28。软件代码30可以存储在数据存储设备28中。在一些实施例中,数据存储设备28可以是固定磁盘、软盘驱动器、光盘驱动器、磁光盘驱动器、磁带、或非易失性存储器(包括闪存)。
在上述说明书中,已经结合本发明的具体示例性实施例描述了本发明。但是,显然可以对这些具体实施例进行各种修改和变化,而不偏离所附权利要求中表述的本发明的更宽的实质和范围。因此,上述说明书和附图应该理解为是说明性的而不是限制性的。

Claims (56)

1.一种处理器,包括:
经由接口耦合的一组处理器内核;
经由所述接口耦合到所述一组处理器内核的一组高速缓存片,所述一组高速缓存片可以被并行搜索,其中,所述一组中的第一高速缓存片和第二高速缓存片用于接收第一高速缓存行,并且其中,从所述一组处理器内核中的第一内核到所述第一高速缓存片和到所述第二高速缓存片的距离不同;以及
耦合到所述一组高速缓存片的寄存器,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
2.如权利要求1所述的处理器,其中,所述接口是环。
3.如权利要求2所述的处理器,其中,所述环包括顺时针环和逆时针环。
4.如权利要求1所述的处理器,其中,所述接口是网格。
5.如权利要求1所述的处理器,其中,所述一组高速缓存片的第一子组中的每个高速缓存片都耦合到所述一组处理器内核中的一个处理器内核并且与所述一组处理器内核中的所述一个处理器内核的第一高速缓存链相关联,并且所述一组高速缓存片的第二子组中的每个高速缓存片都耦合到所述一组处理器内核中的所述一个处理器内核并且与所述一组处理器内核中的所述一个处理器内核的第二高速缓存链相关联。
6.如权利要求5所述的处理器,其中,所述一组处理器内核中的所述一个处理器内核的所述第一高速缓存链中的每个高速缓存片和所述一组处理器内核中的所述一个处理器内核的所述第二高速缓存链中的每个高速缓存片都与所述一组处理器内核中的所述一个处理器内核的一个高速缓存单元相关联。
7.如权利要求6所述的处理器,其中,由所述一组处理器内核中的第一处理器内核请求的第一高速缓存行将被放置于没有与所述第一处理器内核直接耦合的第一高速缓存单元中的第一高速缓存片中。
8.如权利要求7所述的处理器,其中,每个高速缓存片都指示用于放置新高速缓存行的分数,并且每个高速缓存单元都指示从所述高速缓存片的所述分数中选择的单元最大分数。
9.如权利要求8所述的处理器,其中,响应于所述单元最大分数中的整体最大分数,来放置所述第一高速缓存行。
10.如权利要求7所述的处理器,其中,响应于软件关键程度提示,来放置所述第一高速缓存行。
11.如权利要求7所述的处理器,其中,当第一高速缓存链的所述第一高速缓存片中的所述第一高速缓存行被访问多次时,所述第一高速缓存行将被移动到所述第一高速缓存链的第二高速缓存片。
12.如权利要求11所述的处理器,其中,所述第一高速缓存链中的所述第一高速缓存行的所述移动还包括:所述第一高速缓存链中的所述第一高速缓存行被移动到所述第一高速缓存链的所述第二高速缓存片内的一个被收回的高速缓存行的位置。
13.如权利要求11所述的处理器,其中,所述第一高速缓存行将被与所述第二高速缓存片的第二高速缓存行进行交换。
14.如权利要求7所述的处理器,其中,当所述第一高速缓存单元中的所述第一高速缓存行被访问多次时,所述第一高速缓存行将被移动到第二高速缓存单元。
15.如权利要求14所述的处理器,其中,所述第一高速缓存单元中的所述第一高速缓存行的所述移动还包括:所述第一高速缓存单元中的所述第一高速缓存行被移动到所述第二高速缓存单元内的一个被收回的高速缓存行的位置。
16.如权利要求14所述的处理器,其中,所述第一高速缓存行将被与所述第二高速缓存单元中的第二高速缓存行进行交换。
17.如权利要求7所述的处理器,其中,对所述第一高速缓存单元中的所述第一高速缓存行的查找请求将被并行地发送到所述第一高速缓存链中的所有高速缓存片。
18.如权利要求7所述的处理器,其中,对所述第一高速缓存行的查找请求将被并行地发送到多个高速缓存单元。
19.如权利要求18所述的处理器,其中,所述多个高速缓存单元中的每个高速缓存单元向所述寄存器返回命中或缺失消息。
20.如权利要求18所述的处理器,其中,所述多个高速缓存单元中的第一高速缓存单元在接收到所述查找请求之后拒绝接受所述第一高速缓存行的转移。
21.一种用于操作多核处理器中的高速缓存的方法,包括:
在与第一处理器内核相关联的高速缓存片中搜索第一高速缓存行以确定高速缓存命中;
如果在与所述第一处理器内核相关联的所述高速缓存片中没有发现所述第一高速缓存行,那么向与除了所述第一处理器内核之外的处理器内核相关联的多组高速缓存片发送对所述第一高速缓存行的请求;以及
使用寄存器跟踪来自所述多组高速缓存片的响应,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
22.如权利要求21所述的方法,其中,所述跟踪包括:对所述响应的期望数目进行倒计数。
23.如权利要求22所述的方法,其中,所述第一高速缓存行可以从第一高速缓存片移动到第二高速缓存片。
24.如权利要求23所述的方法,还包括:在接收到所有的所述响应之后,宣布在所述高速缓存片中没有发现所述第一高速缓存行。
25.如权利要求24所述的方法,还包括:当在所述高速缓存片中没有发现所述第一高速缓存行时,搜索存在的高速缓存行的目录,以确定所述第一高速缓存行是否是存在但未发现。
26.如权利要求25所述的方法,还包括:在已经从所述第二高速缓存片发出响应后,通过检查一个标记,阻止将所述第一高速缓存行移动到所述第二高速缓存片中。
27.一种用于操作多核处理器中的高速缓存的方法,包括:
将第一高速缓存行放置在第一高速缓存片中,以及
将所述第一高速缓存行移动到与发出请求的处理器内核更靠近的第二高速缓存片,其中,移动所述第一高速缓存行是由寄存器确定的,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
28.如权利要求27所述的方法,还包括:在所述移动之前,对从所述发出请求的处理器内核发出的对所述第一高速缓存行的请求的数目进行计数。
29.如权利要求27所述的方法,还包括:跟踪从所述发出请求的处理器内核发出的对所述第一高速缓存行的请求的方向,以允许在所述方向上移动。
30.如权利要求27所述的方法,其中,所述移动包括:在拥有所述第一高速缓存片的第一高速缓存单元和拥有所述第二高速缓存片的第二高速缓存单元之间移动。
31.如权利要求27所述的方法,其中,所述移动包括:在耦合到所述发出请求的处理器内核的、拥有所述第一高速缓存片和所述第二高速缓存片的第一高速缓存单元内移动。
32.如权利要求27所述的方法,其中,所述移动包括:收回所述第二高速缓存片中的第二高速缓存行。
33.如权利要求27所述的方法,其中,所述移动包括:将所述第一高速缓存片中的所述第一高速缓存行与所述第二高速缓存片中的第二高速缓存行进行交换。
34.一种计算机系统,包括:
处理器,其包括经由接口耦合的一组处理器内核以及经由所述接口耦合到所述一组处理器内核的一组高速缓存片,所述一组高速缓存片可以被并行搜索,其中,所述一组高速缓存片中的第一高速缓存片和第二高速缓存片用于接收第一高速缓存行,并且其中,从所述一组处理器内核中的第一内核到所述第一高速缓存片和到所述第二高速缓存片的距离不同;
系统接口,用于将所述处理器耦合到输入/输出设备;
网络控制器,用于从所述处理器接收信号;以及
耦合到所述一组高速缓存片的寄存器,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
35.如权利要求34所述的系统,其中,所述一组高速缓存片的第一子组中的每个高速缓存片都耦合到所述一组处理器内核中的一个处理器内核并且与所述一组处理器内核中的所述一个处理器内核的第一高速缓存链相关联,并且所述一组高速缓存片的第二子组中的每个高速缓存片都耦合到所述一组处理器内核中的所述一个处理器内核并且与所述一组处理器内核中的所述一个处理器内核的第二高速缓存链相关联。
36.如权利要求35所述的系统,其中,所述一组处理器内核中的所述一个处理器内核的所述第一高速缓存链中的每个高速缓存片和所述一组处理器内核中的所述一个处理器内核的所述第二高速缓存链中的每个高速缓存片都与所述一组处理器内核中的所述一个处理器内核的一个高速缓存单元相关联。
37.如权利要求36所述的系统,其中,由所述一组处理器内核中的第一处理器内核请求的第一高速缓存行将被放置于没有与所述第一处理器内核直接耦合的第一高速缓存单元中的第一高速缓存片中。
38.如权利要求37所述的系统,其中,当第一高速缓存链的第一高速缓存片中的第一高速缓存行被访问多次时,所述第一高速缓存行将被移动到所述第一高速缓存链的第二高速缓存片中。
39.如权利要求38所述的系统,其中,所述第一高速缓存链中的所述第一高速缓存行的所述移动还包括:所述第一高速缓存链中的所述第一高速缓存行将被移动到所述第一高速缓存链的所述第二高速缓存片内的一个被收回的高速缓存行的位置。
40.如权利要求39所述的系统,其中,所述第一高速缓存行将被与所述第二高速缓存片中的第二高速缓存行进行交换。
41.如权利要求37所述的系统,其中,当所述第一高速缓存单元中的所述第一高速缓存行被访问多次时,所述第一高速缓存行将被移动到第二高速缓存单元中。
42.如权利要求37所述的系统,其中,对所述第一高速缓存单元中的所述第一高速缓存行的查找请求将被并行地发送到所述第一高速缓存链中的所有高速缓存片。
43.如权利要求37所述的系统,其中,对所述第一高速缓存行的查找请求被并行地发送到多个高速缓存单元。
44.一种用于操作多核处理器中的高速缓存的设备,包括:
用于在与第一处理器内核相关联的高速缓存片中搜索第一高速缓存行的装置;
用于如果在与所述第一处理器内核相关联的所述高速缓存片中没有发现所述第一高速缓存行,那么向一组处理器内核发送针对所述第一高速缓存行的请求的装置;以及
用于使用寄存器跟踪来自所述一组处理器内核的响应的装置,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
45.如权利要求44所述的设备,其中,所述用于跟踪的装置包括:用于对所述响应的期望数目进行倒计数的装置。
46.如权利要求45所述的设备,其中,所述第一高速缓存行可以从第一高速缓存片移动到第二高速缓存片。
47.如权利要求46所述的设备,还包括:用于在接收到所有的所述响应之后,宣布在所述高速缓存片中没有发现所述第一高速缓存行的装置。
48.如权利要求47所述的设备,还包括:用于当在所述高速缓存片中没有发现所述第一高速缓存行时,搜索存在的高速缓存行的目录,以确定所述第一高速缓存行是否是存在但未发现的装置。
49.如权利要求46所述的设备,还包括:用于在已经从所述第二高速缓存片发出响应后,通过检查一个标记,阻止将所述第一高速缓存行移动到所述第二高速缓存片中的装置。
50.一种用于操作多核处理器中的高速缓存的设备,包括:
用于将第一高速缓存行放置在第一高速缓存片中的装置;以及
用于将所述第一高速缓存行移动到与发出请求的处理器内核更靠近的第二高速缓存片的装置,其中,移动所述第一高速缓存行是由寄存器确定的,所述寄存器用于跟踪对所述第一高速缓存行的未决搜索的状态。
51.如权利要求50所述的设备,还包括:用于在所述移动之前,对从所述发出请求的处理器内核发出的对所述第一高速缓存行的请求的数目进行计数的装置。
52.如权利要求50所述的设备,还包括:用于跟踪从所述发出请求的处理器内核发出的对所述第一高速缓存行的请求的方向以允许在所述方向上移动的装置。
53.如权利要求50所述的设备,其中,所述用于移动的装置包括:用于在拥有所述第一高速缓存片的第一高速缓存单元和拥有所述第二高速缓存片的第二高速缓存单元之间移动的装置。
54.如权利要求50所述的设备,其中,所述用于移动的装置包括:用于在耦合到所述发出请求的处理器内核的、拥有所述第一高速缓存片和所述第二高速缓存片的第一高速缓存单元内移动的装置。
55.如权利要求50所述的设备,其中,所述用于移动的装置包括:用于收回所述第二高速缓存片中的第二高速缓存行的装置。
56.如权利要求50所述的设备,其中,所述用于移动的装置包括:用于将所述第一高速缓存片中的所述第一高速缓存行与所述第二高速缓存片中的第二高速缓存行进行交换的装置。
CN200580044884XA 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法 Expired - Fee Related CN101088075B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110463521.7A CN103324584B (zh) 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/023,925 US20060143384A1 (en) 2004-12-27 2004-12-27 System and method for non-uniform cache in a multi-core processor
US11/023,925 2004-12-27
PCT/US2005/047592 WO2006072061A2 (en) 2004-12-27 2005-12-27 System and method for non-uniform cache in a multi-core processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201110463521.7A Division CN103324584B (zh) 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法

Publications (2)

Publication Number Publication Date
CN101088075A CN101088075A (zh) 2007-12-12
CN101088075B true CN101088075B (zh) 2011-06-22

Family

ID=36215814

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200580044884XA Expired - Fee Related CN101088075B (zh) 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法
CN201110463521.7A Expired - Fee Related CN103324584B (zh) 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201110463521.7A Expired - Fee Related CN103324584B (zh) 2004-12-27 2005-12-27 用于多核处理器中非一致性高速缓存的系统和方法

Country Status (5)

Country Link
US (1) US20060143384A1 (zh)
JP (1) JP5096926B2 (zh)
CN (2) CN101088075B (zh)
TW (1) TWI297832B (zh)
WO (1) WO2006072061A2 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US20060248287A1 (en) * 2005-04-29 2006-11-02 Ibm Corporation Methods and arrangements for reducing latency and snooping cost in non-uniform cache memory architectures
US8593474B2 (en) * 2005-12-30 2013-11-26 Intel Corporation Method and system for symmetric allocation for a shared L2 mapping cache
US7571285B2 (en) * 2006-07-21 2009-08-04 Intel Corporation Data classification in shared cache of multiple-core processor
US7600077B2 (en) * 2007-01-10 2009-10-06 Arm Limited Cache circuitry, data processing apparatus and method for handling write access requests
US20080235493A1 (en) * 2007-03-23 2008-09-25 Qualcomm Incorporated Instruction communication techniques for multi-processor system
US8131937B2 (en) * 2007-06-22 2012-03-06 International Business Machines Corporation Apparatus and method for improved data persistence within a multi-node system
US7873791B1 (en) * 2007-09-28 2011-01-18 Emc Corporation Methods and systems for incorporating improved tail cutting in a prefetch stream in TBC mode for data storage having a cache memory
CN100580630C (zh) * 2007-12-29 2010-01-13 中国科学院计算技术研究所 满足SystemC语法要求的多核处理器及获得其执行代码的方法
US8166246B2 (en) * 2008-01-31 2012-04-24 International Business Machines Corporation Chaining multiple smaller store queue entries for more efficient store queue usage
US7941637B2 (en) * 2008-04-15 2011-05-10 Freescale Semiconductor, Inc. Groups of serially coupled processor cores propagating memory write packet while maintaining coherency within each group towards a switch coupled to memory partitions
US8689027B2 (en) * 2008-11-13 2014-04-01 International Business Machines Corporation Tiled memory power management
US8543768B2 (en) * 2008-11-13 2013-09-24 International Business Machines Corporation Memory system including a spiral cache
US8527726B2 (en) 2008-11-13 2013-09-03 International Business Machines Corporation Tiled storage array with systolic move-to-front reorganization
US8539185B2 (en) * 2008-11-13 2013-09-17 International Business Machines Corporation Systolic networks for a spiral cache
US8769201B2 (en) * 2008-12-02 2014-07-01 Intel Corporation Technique for controlling computing resources
US8615633B2 (en) * 2009-04-23 2013-12-24 Empire Technology Development Llc Multi-core processor cache coherence for reduced off-chip traffic
US9086973B2 (en) 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
US8370579B2 (en) * 2009-12-17 2013-02-05 International Business Machines Corporation Global instructions for spiral cache management
US8667227B2 (en) * 2009-12-22 2014-03-04 Empire Technology Development, Llc Domain based cache coherence protocol
US20110153953A1 (en) * 2009-12-23 2011-06-23 Prakash Khemani Systems and methods for managing large cache services in a multi-core system
US8244986B2 (en) * 2009-12-30 2012-08-14 Empire Technology Development, Llc Data storage and access in multi-core processor architectures
TWI420311B (zh) * 2010-03-18 2013-12-21 Univ Nat Sun Yat Sen 基於集合分模組之快取記憶體之分割方法
US20110320781A1 (en) * 2010-06-29 2011-12-29 Wei Liu Dynamic data synchronization in thread-level speculation
US8954790B2 (en) 2010-07-05 2015-02-10 Intel Corporation Fault tolerance of multi-processor system with distributed cache
US9009384B2 (en) * 2010-08-17 2015-04-14 Microsoft Technology Licensing, Llc Virtual machine memory management in systems with asymmetric memory
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
CN102117262B (zh) * 2010-12-21 2012-09-05 清华大学 用于多核处理器的Cache的主动复制方法及系统
WO2012091702A1 (en) 2010-12-29 2012-07-05 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
KR101799978B1 (ko) * 2011-06-17 2017-11-22 삼성전자주식회사 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
US8902625B2 (en) * 2011-11-22 2014-12-02 Marvell World Trade Ltd. Layouts for memory and logic circuits in a system-on-chip
US9053029B2 (en) 2012-02-06 2015-06-09 Empire Technology Development Llc Multicore computer system with cache use based adaptive scheduling
CN105264501B (zh) 2013-06-19 2018-06-08 英派尔科技开发有限公司 定位多核处理器中的被高速缓存的数据的方法和装置
US9645930B2 (en) 2013-06-19 2017-05-09 Intel Corporation Dynamic home tile mapping
WO2015075673A1 (en) 2013-11-21 2015-05-28 Green Cache AB Systems and methods for reducing first level cache energy by eliminating cache address tags
US9460012B2 (en) 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
JP6213366B2 (ja) * 2014-04-25 2017-10-18 富士通株式会社 演算処理装置とその制御方法
US9785568B2 (en) * 2014-05-19 2017-10-10 Empire Technology Development Llc Cache lookup bypass in multi-level cache systems
US10019368B2 (en) 2014-05-29 2018-07-10 Samsung Electronics Co., Ltd. Placement policy for memory hierarchies
WO2016049808A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 多核处理器系统的缓存目录处理方法和目录控制器
CN104484286B (zh) * 2014-12-16 2017-10-31 中国人民解放军国防科学技术大学 片上Cache网络中基于位置感知的数据预取方法
US20170083336A1 (en) * 2015-09-23 2017-03-23 Mediatek Inc. Processor equipped with hybrid core architecture, and associated method
US20170091117A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Method and apparatus for cache line deduplication via data matching
US10019360B2 (en) * 2015-09-26 2018-07-10 Intel Corporation Hardware predictor using a cache line demotion instruction to reduce performance inversion in core-to-core data transfers
SG11201803730TA (en) * 2015-11-04 2018-06-28 Samsung Electronics Co Ltd Systems and methods for implementing coherent memory in a multiprocessor system
US20170168957A1 (en) * 2015-12-10 2017-06-15 Ati Technologies Ulc Aware Cache Replacement Policy
CN108228481A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于保证数据一致性的方法和设备
US10762000B2 (en) * 2017-04-10 2020-09-01 Samsung Electronics Co., Ltd. Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory
CN108287795B (zh) * 2018-01-16 2022-06-21 安徽蔻享数字科技有限公司 一种处理器缓存替换方法
CN109857562A (zh) * 2019-02-13 2019-06-07 北京理工大学 一种众核处理器上访存距离优化的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0689141A2 (en) * 1994-06-20 1995-12-27 AT&T Corp. Interrupt-based hardware support for profiling system performance
US5544340A (en) * 1990-06-01 1996-08-06 Hitachi, Ltd. Method and system for controlling cache memory with a storage buffer to increase throughput of a write operation to the cache memory
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1973595A (en) * 1994-03-01 1995-09-25 Intel Corporation Highly pipelined bus architecture
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
US5812418A (en) * 1996-10-31 1998-09-22 International Business Machines Corporation Cache sub-array method and apparatus for use in microprocessor integrated circuits
US5909697A (en) * 1997-09-30 1999-06-01 Sun Microsystems, Inc. Reducing cache misses by snarfing writebacks in non-inclusive memory systems
US6675265B2 (en) * 2000-06-10 2004-01-06 Hewlett-Packard Development Company, L.P. Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
GB0015276D0 (en) * 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
JP3791406B2 (ja) * 2001-01-19 2006-06-28 株式会社村田製作所 積層型インピーダンス素子
US20030163643A1 (en) * 2002-02-22 2003-08-28 Riedlinger Reid James Bank conflict determination
JP2005522773A (ja) * 2002-04-08 2005-07-28 ユニバーシティー・オブ・テキサス・システム 非均等型キャッシュ装置、システム及び方法
US7096323B1 (en) * 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US20060041715A1 (en) * 2004-05-28 2006-02-23 Chrysos George Z Multiprocessor chip having bidirectional ring interconnect

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544340A (en) * 1990-06-01 1996-08-06 Hitachi, Ltd. Method and system for controlling cache memory with a storage buffer to increase throughput of a write operation to the cache memory
EP0689141A2 (en) * 1994-06-20 1995-12-27 AT&T Corp. Interrupt-based hardware support for profiling system performance
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables

Also Published As

Publication number Publication date
JP2008525902A (ja) 2008-07-17
CN103324584B (zh) 2016-08-10
CN103324584A (zh) 2013-09-25
TW200636466A (en) 2006-10-16
CN101088075A (zh) 2007-12-12
US20060143384A1 (en) 2006-06-29
WO2006072061A2 (en) 2006-07-06
JP5096926B2 (ja) 2012-12-12
WO2006072061A3 (en) 2007-01-18
TWI297832B (en) 2008-06-11

Similar Documents

Publication Publication Date Title
CN101088075B (zh) 用于多核处理器中非一致性高速缓存的系统和方法
CN102662868B (zh) 用于处理器的动态组相联高速缓存装置及其访问方法
CN104011681B (zh) 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息
CN103365793B (zh) 数据处理方法和系统
CN103383672B (zh) 高速缓存控制以减少事务回滚
CN101023414B (zh) 提前运行牺牲选择以减少内含式高速缓存中不合需要的置换行为的方法和装置
CN100524252C (zh) 一种嵌入式系统芯片及数据读写处理方法
US7177987B2 (en) System and method for responses between different cache coherency protocols
US20140208038A1 (en) Sectored cache replacement algorithm for reducing memory writebacks
US20060224830A1 (en) Performance of a cache by detecting cache lines that have been reused
CN1940892A (zh) 逐出高速缓存的行的电路布置、数据处理系统和方法
CN100576190C (zh) 使用替代页池管理dma写入页错误的计算机实现方法和装置
CN110297787B (zh) I/o设备访问内存的方法、装置及设备
US20190004968A1 (en) Cache management method, storage system and computer program product
CN102834813A (zh) 用于多通道高速缓存的更新处理机
CN103365794A (zh) 数据处理方法和系统
CN101918925A (zh) 用于处理器的高关联性高速缓存的第二次机会取代机制
CN103076992A (zh) 一种内存数据缓冲方法及装置
CN101652759B (zh) 可编程数据预取的方法和系统
CN109478164B (zh) 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法
US8127079B2 (en) Intelligent cache injection
US6757785B2 (en) Method and system for improving cache performance in a multiprocessor computer
US11797439B2 (en) Balancing memory-portion accesses
CN109478163B (zh) 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法
CA1116756A (en) Cache memory command circuit

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110622

Termination date: 20181227

CF01 Termination of patent right due to non-payment of annual fee