CN105453055A - 多粒高速缓存一致性 - Google Patents
多粒高速缓存一致性 Download PDFInfo
- Publication number
- CN105453055A CN105453055A CN201280076665.XA CN201280076665A CN105453055A CN 105453055 A CN105453055 A CN 105453055A CN 201280076665 A CN201280076665 A CN 201280076665A CN 105453055 A CN105453055 A CN 105453055A
- Authority
- CN
- China
- Prior art keywords
- relevant
- designator
- piece
- speed cache
- region
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0826—Limited pointers directories; State-only directories without pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/301—In special purpose processing node, e.g. vector processor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一般地描述用于有效维持晶片上多核处理器中一致性的方法和***的技术。在一个示例中,一种用于处理对特定区域中特定块的请求的方法可以包括:由第一处理器分析第一高速缓存来确定在所述第一高速缓存中是否存在与所述特定块相关的块指示符。所述方法可以进一步地包括:当所述第一处理器确定所述块指示符不存在于所述第一高速缓存中时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的区域指示符。所述方法可以进一步地包括:当所述第一处理器确定所述区域指示符不存在于所述第一高速缓存中时,所述方法进一步地包括:由所述第一处理器向所述片中的所述目录发送所述请求。
Description
背景技术
除非本文中另有指明,本部分描述的材料不是本申请中的权利要求的现有技术并且不通过被包括在本部分而认为是现有技术。
在多核处理器架构中,多个处理器核可以被包括在单一集成电路晶片中或被包括在以单一芯片封装布置的多个集成电路晶片上。高速缓存可以被用来存储供一个或多个处理器核访问的数据。所述数据可以是被存储在一般位于晶片外的较大存储器中的数据的子集。每个处理器可以设置有存储用于处理器的数据的高速缓存。由于单一条数据可以被存储在多个高速缓存中,高速缓存一致性协议可以被配置为记录存储在多个高速缓存中的数据。所述高速缓存一致性协议可以被配置为帮助确保对数据的多个请求一致地使得同样的数据被返回。
发明内容
在一些示例中,一般地描述多核处理器架构中的晶片。所述晶片可以包括第一片、第二片和目录控制器。所述第一片可以包括第一高速缓存和第一处理器核。所述第一片可以被配置为存储特定块和多个块的区域。所述第二片可以被配置为与所述第一片通信。所述第二片可以包括第二高速缓存和第二处理器核。所述目录控制器可以被配置为与所述第一片和所述第二片通信。所述目录控制器可以有效地控制晶片的目录。所述目录控制器可以被配置为确定与所述特定块关联的块级一致性状态。所述目录控制器可以被配置为确定与所述多个块的区域关联的区域级一致性状态。所述目录控制器可以进一步地被配置为向所述第一片通信所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态。所述第一片可以被配置为从所述目录控制器接收所述块级一致性状态和所述区域级一致性状态。所述第一片可以进一步地被配置为识别所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态。所述第一片可以被配置为在所述第一高速缓存中存储与所述特定块关联的所述块级一致性状态以及在所述第一高速缓存中存储与所述多个块的区域关联的所述区域级一致性状态。
在一些示例中,一般地描述了用于维持多核处理器内一致性的方法。所述晶片可以包括第一片,所述第一片包括第一高速缓存和第一处理器核。所述晶片可以进一步地包括被配置为与所述第一片通信的第二片。所述第二片可以包括第二高速缓存和第二处理器核。所述晶片可以包括存储器,所述存储器存储被配置为与所述第一片和所述第二片通信的目录。所述方法可以包括:由目录控制器确定与存储在所述第一片中的特定块相关的块级一致性状态。所述方法可以包括:由所述目录控制器确定与存储在所述第一片中的多个块的区域相关的区域级一致性状态。所述方法可以进一步地包括由所述目录控制器将所述块级一致性状态和所述区域级一致性状态通信至所述第一片。所述方法可以包括:由所述第一片从所述目录控制器接收所述块级一致性状态和所述区域级一致性状态。所述方法还可以进一步地包括:识别所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态。所述方法还可以进一步地包括:在所述第一高速缓存中存储与所述特定块相关的所述块级一致性状态和在所述第一高速缓存中存储与所述多个块的区域相关的所述区域级一致性状态。
在一些示例中,一般地描述一种用于处理对晶片上多核处理器中特定区域中特定块的请求的方法。所述晶片可以包括第一片,所述第一片包括第一高速缓存和第一处理器。所述晶片可以进一步地包括被配置为与所述第一片通信的第二片。所述第二片可以包括第二高速缓存和第二处理器。所述晶片可以包括存储被配置为与所述第一片和所述第二片通信的目录的存储器。所述方法可以包括由所述第一处理器分析所述第一高速缓存来确定在所述第一高速缓存中是否存与所述特定块相关的块指示符。所述方法可以包括:当所述第一处理器确定在所述第一高速缓存中不存在所述块指示符时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的区域指示符。所述方法还可以进一步地包括:当所述第一处理器确定在所述第一高速缓存中不存在所述区域指示符时,由所述第一处理器将所述请求发送至所述片中的目录。
前述发明内容仅是说明性的并且不旨在以任何方式进行限制。除上述示意的方面、实施方式及特征外,参考附图及以下详细描述,另外的方面、实施方式及特征将变得显而易见。
附图描述
结合附图,从以下描述及所附权利要求书,本公开的前述及其他特征将变得更加明显。应当理解的是,这些附图仅描绘了根据本公开的几个实施方式,并且因此将不被认为限制本公开的范围,通过使用附图,本公开的另外的特性及细节将被描述,其中:
图1示出可以被用来实施多粒高速缓存一致性的示例***;
图2示出可以被用来实施多粒高速缓存一致性的一致状态转换图;
图3示出可以被用来实施多粒高速缓存一致性的示例***;
图4描述用于实施多粒高速缓存一致性的示例处理的流程图;
图5示出可以被用来实施多粒高速缓存一致性的计算机程序产品;以及
图6为示出被布置用来实施多粒高速缓存一致性的示例计算设备的块图;
所有均根据本文描述的至少一些实施方式布置。
详细说明
在以下详细描述中,参考附图,附图构成本描述的一部分。在附图中,除非上下文另有指明,否则相同符号一般指代相同部件。在详细说明、附图以及权利要求书中描述的说明性实施方式不意在限制。在不背离本文呈现的主题的精神或范围的情况下,其他实施方式可以被使用,并且可以做出其他改变。将很容易理解的是,如本文一般描述的、以及在图中示出的,本公开的方面可以以多种不同配置被布置、替换、组合、分离以及设计,所有这些都在本文被清晰地构思。
除其他之外,本公开一般地涉及与多粒高速缓存一致性相关的方法、装置、***、设备以及计算机程序产品。
简要陈述的技术一般地被描述用于有效维持晶片上多核处理器中一致性的方法和***。在一个示例中,一种用于处理对特定区域中特定块的请求的方法可以包括:由第一处理器分析第一高速缓存来确定在所述第一高速缓存中是否存在与所述特定块相关的块指示符。所述方法可以进一步地包括:当所述第一处理器确定在所述第一高速缓存中不存在所述块指示符时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的区域指示符。所述方法可以进一步地包括:当所述第一处理器确定在所述第一高速缓存中不存在所述区域指示符时,所述方法进一步地包括:由所述第一处理器将所述请求发送至片(tile)中的目录。
图1示出根据本文描述的至少一些实施方式布置的、可以被用来实施多粒高速缓存一致性的示例***。示例***100可以包括晶片102,所述晶片102包括多个片118、120和/或124。聚焦片118来说明,每个片118可以包括高速缓存110、处理器或处理器核(包括高速缓存控制器)(以下称为“处理器”)112和/或目录114(包括114a和/或114b)。处理器112可适于处理包括代码(以下数据和代码均称为“数据块”)的数据。高速缓存110可以被配置为存储处理器112本地的数据块。
除片118外,晶片102可以包括两个或更多个另外的片120、124,片120、124包括各自的高速缓存122、126。晶片102中的每个片可以大体上相同,如处于同类排列,或一些片不同,如处于异构排列。晶片102可以被布置为与另一晶片103通信,这样数据可以在多个晶片间共享。
如在以下将更为详细地描述的,晶片102可适于在块级和区域级存储一致性信息。当做出对特定块的请求时,晶片可以被配置为分析块级一致性粒度并且随后在判定是否将对块的请求发送至目录或存储器控制器之前分析区域级一致性粒度。
目录114可以包括目录控制器138并且可以如114b所示位于晶片102上的单个片上或如114a所示分布在许多或所有片之间。例如,如果目录114被分布许多或所有片之间,则第一范围的地址(如0x0000-0x1000)可以被存储在第一片中,第二范围的地址(如0x1001-0x2000)可被存储在第二片中,等等。图中的目录114因此可以说明整个晶片目录的第一部分,其中所述第一部分可以被存储在片118中,而另外的部分可以被存储在其他片中,如片120、124等等。
目录控制器138可以被配置用于监控晶片102上的通信量并且分配和存储与晶片102中块的区域的一致性状态相关的信息。目录控制器138可以被配置为向各个片发送包括一致性状态的消息,使得对块的后续请求可以进行而不需要与目录114通信。例如,区域可以是两个或更多个块(如2ⅹ64字节)。在一个示例中,区域可以是约512B和约16KB间的范围(如4kb)并且可以对应存储器中的页。区域的一致性状态可以基于所述区域中块的状态来确定。区域协议状态可以包括,例如:
PRO(私有、只读),其可以指示所述区域中的块可以被存储在高速缓存中,或不被存储,并且片可以被允许从所述区域中的任意块读取,但不写入任意块;
SRO(共享、只读),其可以指示所述区域内的任意块可以被存储在一个高速缓存中、不被存储、或存储在多个高速缓存中,具有只读权限;
PRW(私有、读/写),其可以指示区域中的所有块可以被存储在高速缓存中、或不被存储,并且片被允许从任意块读取或写入;
MX(混合),其可以指示块具有不统一的共享或访问权限并且因此所述区域状态可以没有益处并且块级一致性可以被使用;或
RU(未高速缓存的区域),其可以指示所述区域中没有块正被高速缓存。
目录114可以包括标识多个块的多个区域的一致性状态的区域一致性表170。区域一致性表170可以包括区域字段176、状态字段178和/或共享者字段180。在一个示例中,如果一区域中的多个块被指示为具有如图1中示出的对于区域R2中的多个块的共享S和/或专用共享的一致性状态,则区域R2的一致性状态可以是SRO(共享,只读)。目录114可以被配置为针对至少两个高速缓存在晶片102中存储多个区域的一致性状态。当区域一致性状态改变时,如本文所讨论的,目录控制器138可以被配置为向共享者字段180中标识的对应高速缓存发送信息,来更新各自区域一致性表。
继续聚焦片118来说明,高速缓存110可以包括标识块级一致性状态的块一致性表150。块一致性表150可以包括标签字段152和/或状态字段154。标签字段152可以包括与特定块的标签关联的指示符。状态字段154可以包括与对应标签字段中块的一致性状态关联的指示符。
高速缓存110可以进一步地被配置为包括标识多个块的多个区域的一致性状态的区域一致性表130。区域一致性表130可以包括区域标签字段132和/或状态字段134。区域标签字段132可以包括与多个块的一区域关联的指示符,所述多个块的一区域可被存储在片118的高速缓存110中。状态字段134可以包括与如上所述在区域标签字段132中标识的区域的一致性状态关联的指示符,并且可以与存储在片118中的该区域中的多个块的一致性状态和存储在其他高速缓存中的该区域中的多个块的一致性状态相关联。
在一个示例中,基于一区域中的多个块的一致性状态,一区域的一致性状态可以被目录控制器138分配并且存储在区域一致性表130和170中。由于多个区域的一致性状态可以被目录控制器分配,所以在随后的对多个数据块的请求中,所述目录可以随后被绕开。
在一种示例中,片118可以生成对区域R1中特定数据块的请求。片118的处理器112可以首先分析块一致性表150并且经历指示所述特定数据块不被存储在片118的高速缓存中的高速缓存未命中。处理器112可以随后分析区域一致性表130并且确定区域R1被以PRW一致性状态存储,所述PRW一致性状态指示区域R1中的任意块可以被存储在片118的高速缓存中,因为所述状态是P(私有)。由于区域R1的状态是PRW,并且在分析块一致性表150时,片118经历高速缓存未命中,所述特定数据块可能不被存储在晶片102中。处理器112可以绕开目录114向存储器控制器188发送对所述特定数据块的请求,所述存储器控制器可以在晶片102内部或外部。
当在高速缓存中检索块时,片118中的处理器112可以被配置为首先分析块一致性表150,并且,如果所述特定块未被标识在块一致性表中,则处理器112可以随后分析区域一致性表130。块一致性表150可以代表第一一致性粒度,区域一致性表130可以代表第二一致粒度。目录114可以不需要涉及在对上述高速缓存中块的请求中,从而减少晶片102中的时延和通信量。
图2示出根据本文描述的至少一些实施方式布置的一致性状态转换表,所述一致性状态转换表可以被用来实施多粒高速缓存一致性。一致性状态转换可以由目录控制器138基于与从一区域中的多个块读取或写入一区域中的多个块的请求相关的事件来控制。当由多个片共享的多个区域的一致性状态已改变时,目录控制器138可以向相关片发送消息,并且可等待来自所述相关片的确认,确认其各自的区域一致性表在服务于后续的对多个数据块的请求前已经被更新。
如图2中所示,在一个示例中,多个区域可以呈现上述一致性状态PRO、SRO、MX、RU和/或PRW中的一个或多个。一致性状态的改变被示出为基于由片A读取块(“读A”)以及由片A写入块(“读X.A”)的请求。高速缓存一致性信息可以在状态RU开始,在状态RU,多个区域被指示为未被高速缓存。如果做出读取区域中的数据的请求,则目录控制器138可以将区域一致性状态自状态RU转换成PRO。如果做出在该区域中写入数据的请求(如由图2中“X”所示),则目录控制器138可以将一致性状态转换成PRW。
在状态PRO(私有,只读),由共享片列表(图2中由“LS”所示)中的多个片做出读取该区域中的多个块的请求维持一致性状态PRO。由共享片之外的片从该区域读取的请求可以引起转换至状态SRO。由共享片之外的片的对写入该区域的请求可以引起转换至MX。由共享片中的片的对写入区域的请求可以引起转换至PRW。
在状态PRW(私有读写),由共享片之外的片对读取该区域中的多个块的请求可以引起转换至MX。由共享片之外的片对读取或写入该区域的请求可以引起转换至MX。由共享片中的片对读取或写入该区域的请求可以维持状态PRW。在状态SRO(共享、只读),读取请求维持状态SRO。写入请求可以引起转换至状态MX。
一旦在MX状态,块级一致性协议可以被使用,因为该区域中的多个块不具有统一的一致性状态。一旦在状态MX,目录控制器138可以记录,并且分析另外的信息来确定何时应该发生状态转换来改变MX状态。目录114可以被配置为存储与专有或已修改(DEM)或不在任何存储器中高速缓存(DU)的块的数量相关的信息。例如,如果一区域具有64个块并且DU=64(指示所有64个块不被高速缓存),则目录控制器138可以将该区域的状态从MX转换成RU。在一个示例中,如果DEM=0(指示该区域中没有块已被修改),则目录控制器138可以将该区域的状态转换成状态SRO。在一种示例中,目录控制器138可以被配置为在确定DU指示所有块不被高速缓存和引起状态转换至RU之间等待一时间段,如200至10,000个时钟周期之间。
在区域一致性状态保持不变的示例中,目录不需要被告知对多个块的读取和/或写入的请求。例如,在PRW状态,当片A位于共享高速缓存列表中时,由片A读取块或写入块的请求可以被处理而不与目录通信。类似地,在SRO状态,不论块A是否位于共享高速缓存列表,由片A读取块的请求不需要导致与目录通信。
图3示出根据本文描述的至少一些实施方式布置的、可以被用来实施的多粒高速缓存一致性的示例***。图3大体上与图1的***100类似,但具有另外的细节。出于清晰描述的目的,图3中被与图1中部件相同地标记的部件不再被描述。
如图3中所示,区域一致性表170可以进一步地包括DEM字段182和/或DU字段184。如上讨论的,这些字段可以被用来存储信息,所述信息指示目录控制器138何时需要将一区域转换出一致性状态MX。
在高速缓存110中的区域一致性表130可以进一步地适于包括存在位向量136。存在位向量136可以指示当前在特定片中被高速缓存的各个区域的块。例如,存在位向量100000可以指示该区域的第一块被存储在特定片的高速缓存中-如在向量的第一位中由“1”所指示的。随着时间推移,由于该区域中的多个块被存储在片的高速缓存中,因此处理器可以设置或改变对应的位向量来指示那些各个块被存储在高速缓存中。在一个示例中,在64块区域,64位可以被用于存在位向量。
在一个示例中,片118可能需要未被高速缓存在片118中的区域R2中的特定块。片118可以向目录114发送对所述特定块的请求并且从片120接收所述特定块。与所述特定块一起,片120可以进一步地基于来自目录控制器138的指令发送片120的存在位向量136。至此,片118知晓哪些块被存储在片120的高速缓存中。片118可以在取示表(fetchhinttable)140中存储片120的存在位向量136。取示表140可以包括标签字段142、源字段144和/或源存在位向量字段146。源字段144可以标识存在位向量的源—如在示例中的片120。类似地,片118可以存储存在位向量136,其指示被存储在片118中的对应区域的块。
在片118随后请求特定区域中的特定块的示例中,片118的处理器112可以首先分析块一致性表150来确定所述特定块是否被存储在片118中。在块一致性表中不存在与所述特定块相关的指示符的示例中,处理器112可以随后分析区域标签一致性表130来确定是否存在所述特定区域中的块可以被存储在其他高速缓存中的指示符。在区域一致性表130包括另一片正存储所述特定区域中的块的指示符的示例中,片118可以进一步地分析取示表140来确定是否存在其他片的存在位向量的指示。片118可以进一步地分析存在位向量来确定存在位向量是否指示其他片正在存储所述特定块。
基于对区域一致性表130和取示表140的分析,在存在位向量指示其他片正在存储所述特定块的示例中,处理器112可以向其他片(绕开目录)发送对所述特定块的请求。在区域一致性表130指示所述特定区域被存储在其他片中但是片118不具有其他片的存在位向量的示例中,处理器112可以向目录114发送对所述特定块的请求。在区域一致性表130指示所述特定区域被存储在其他片(共享-SRO)并且存在位向量指示所述特定块不被存储在其他片中的示例中,处理器112可以向存储器控制器188发送对所述特定块的请求。
在目录控制器138将区域一致性状态改变成MX的示例中(所述MX指示该区域中的块具有混合的一致性状态),区域一致性可以不应用并且基于块的一致性可以被使用。目录114可以包括被存储在晶片102中的块的列表、连同块的状态以及哪些高速缓存可能正在共享所述块。例如,目录114可以使用MESI、MOESI、MSI、MOSI等等协议。在这类协议中,目录114可以记录共享状态如:如当由于行被从主存储器中移除使得高速缓存行已经修改时的修改(M);如当高速缓存行仅存在于一个高速缓存中而所述行与主存储器匹配时的专用(E);如当高速缓存行被修改并且专用于高速缓存时的专用-修改(EM);如当高速缓存行可以被存储在其他高速缓存中并且所述行与主存储器匹配时的共享(S);如当高速缓存行无效时的无效(I);和/或如当指示的高速缓存行包括数据的最近副本时的持有(O)。
目录114可以进一步地包括块一致性表190。块一致性表190可以包括标签字段192、状态字段194和/或共享者栏字段196。在示例中,当区域一致性改变状态至MX时,块一致性表190可以以多种方法被填充。例如,针对变成MX一致性状态的特定区域,所述特定区域中的块与各自的一致性状态一起可以被填充进块一致性表190中。如果此前一致性状态为PRO或PRW,则状态字段可以被用EM一致性状态填充。如果此前的一致性状态为SRO,则状态字段可以用S一致性状态填充,其中共享高速缓存列表被自区域目录的共享者字段列表填充。
在另一示例中,当区域改变一致性状态至MX时,目录控制器138可以向共享者字段列表中指示的片发送消息。片可以被配置为用其各自的存在位向量响应被转换成MX的区域。目录控制器138可以随后用块填充表190,所述块被指示正被高速缓存在各自的存在位向量中。
在其他可能的益处中,根据本公开的***可以被用来实施多个块的一区域的高速缓存一致性协议,而不一定需要涉及目录或操作***。因为较少使用目录以及更多核的智能使用,电力消耗和时延可以被节省。目录的尺寸可以被减少,因为目录可以维持区域的状态而不必需维持每块的状态。所述目录可以被用于核间共享数据相关的一致性,并且不需要被用于对核私有或只读的数据。由于一些对数据的请求可以从一片至另一片,因此可以获得更短的通信距离。
图4描绘了根据本文描述的至少一些实施方式布置的、用于实施多粒高速缓存一致性的示例处理的流程图。在一些示例中,图4中的处理可以被实施为使用以上讨论的***100。在一个示例中,用于维持晶片上多核处理器中的一致性的方法或处理可以被实施。所述晶片可以包括第一片,所述第一片包括第一高速缓存和第一处理器核。所述晶片可以进一步地包括被配置为与所述第一片通信的第二片。所述第二片可以包括第二高速缓存和第二处理器核。所述晶片可以包括存储器,所述存储器存储被配置为与所述第一片和所述第二片通信的目录。
示例处理可以包括由块S2、S4、S6、S8、S10、S12、S14、S16和/或S18中的一个或多个所示出的一个或多个操作、行动或功能。虽然被示出为具体的块,多个块可以根据想要的实施被分成另外的块、组合成较少的块、或消除。
处理可以从块S2开始,“存储与有效被存储在所述第一高速缓存中的特定块相关的块指示符”。在块S2,所述第一片中的处理器可以被配置为在所述第一高速缓存中存储与将被存储在所述第一高速缓存中的特定块(例如,所述块的标签)相关的第一指示符。所述处理器可以基于从目录控制器接收的与所述目录相关的指令来操作。
处理可以从块S2继续至块S4,“存储与所述块指示符相关且与所述特定块的一致性状态相关的块级一致性指示符”。在块S4,所述处理器可以被配置为存储与所述第一指示符相关且与所述特定块的所述第一一致性状态相关的第一一致性指示符。例如,一致性状态(如共享、专用、修改等等)可以被所述处理器使用。
处理可以从块S4继续至S6,“存储与有效存储在所述第一高速缓存中的至少一个块的区域相关的区域指示符”。在块S6,处理器可以被配置为存储第二指示符。所述第二指示符可以与有效被存储在第一高速缓存中的至少一个块的区域相关。例如,包括所述特定块的块的区域(如包括4kb数据的区域)可以与所述第二指示符相关。
处理可以从块S6继续至块S8,“存储与所述区域指示符相关且与所述区域的一致性状态相关的区域级一致性指示符”。在块S8,所述处理器可以被配置为存储与所述区域的所述第二指示符相关且与所述区域的第二一致性状态相关的第二一致性指示符。例如,如本文所讨论的,与所述区域中的数据是否私有、共享等等相关的一致性状态可以被使用。
处理可以从块S8继续至块S10,“存储指示所述区域中的哪些块被存储在所述高速缓存中的位向量”。在块S10,所述处理器可以被进一步地配置为存储指示所述区域中的哪些块被存储在所述第一片中的位向量。所述位向量可以响应于对存储在所述第一片中的块请求被发送至其他片。
处理可以从块S10继续至块S12,“接收对特定区域中特定块的数据的请求”。在块S12,所述处理器可以接收对特定区域中特定块的数据的请求。
处理可以从块S12继续至块S14,“分析所述第一高速缓存来确定在所述第一高速缓存中是否存在与所述特定块相关的第一指示符”。在块S12,响应于所述对数据的请求,所述处理器可以被配置为分析所述高速缓存并且确定与所述特定块相关的所述第一指示符是否被存储。在与所述特定块相关的所述指示符被存储的示例中,所述处理器可以从所述高速缓存中检索所述特定块。
处理可以从块S14继续至块S16,“当所述第一指示符不存在于所述第一高速缓存中时,分析所述第一高速缓存来确定是否存在与所述特定区域相关的第二指示符”。在块S14,当不存在所述第一指示符时,所述处理器可以被配置为分析所述高速缓存来确定是否存在对应所述特定区域的所述第二指示符。所述第二指示符可以指示所述特定区域中的数据是否被存储在所述第一高速缓存中。
处理可以从块S16继续至块S18,“当所述第二指示符不存在于所述第一高速缓存中时,向所述目录发送请求”。在块S18,当所述第二指示符被确定为不存在于所述第一高速缓存中时,所述处理器可向所述目录发送对所述特定块的所述请求。
图5示出根据本文描述的至少一些实施方式布置、可以被用来实施多粒高速缓存一致性的示例计算机程序产品300。程序产品300可以包括信号承载介质302。信号承载介质302可以包括一个或多个指令304,当被(例如)处理器执行时,其可以提供如上关于图1-4描述的功能性。因此,例如,参考***100,片118、120、124中的一个或多个处理器112可以响应于由介质302传达给***100的指令304而执行图5中示出的块中的一个或多个。
在一些实施中,信号承载介质302可以包含计算机可读介质306,如但不限于硬盘驱动、压缩盘(CD)、数字视频盘(DVD)、数字带、存储器等等。在一些实施中,信号承载介质302可以包含可记录介质308,如但不限于存储器、读/写(R/W)CD,R/WDVD等等。在一些实施中,信号承载介质302可以包含通信介质310,如但不限于数字和/或模拟通信介质(如,纤维光缆、波导、有线通信链路、无线通信链路等等)。因此,例如,程序产品300可以通过RF信号承载介质302被传达给***100的一个或多个模块,其中所述信号承载介质302被无线通信介质310传达(例如,遵从IEEE802.11标准的无线通信介质)。
图6为示出根据本文描述的至少一些实施方式布置、被用来实施多粒高速缓存一致性的示例计算设备400的块图。在最基本配置402中,计算设备400一般地包括一个或多个处理器404和***存储器406。存储器总线408可以被用于处理器404和***存储器406之间的通信。
根据想要的配置,处理器404可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器404可以包括一个或多个级的缓存(如一级缓存410和二级缓存412)、处理器核414以及寄存器416。示例处理器核414可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(SDP核)或其任意组合。示例存储器控制器418还可以与处理器404一起使用,或在一些实施中,存储器控制器418可以是处理器404的内在部分。
基于想要的配置,***存储器406可以是任意类型的,包括但不限于易失性存储器(如随机存取存储器)、非易失性存储器(如只读存储器、闪存等等)或其任意组合。***存储器406可以包括操作***420、一个或多个应用422和程序数据424。应用422可以包括多粒高速缓存一致性算法426,其被布置为执行如本文描述的功能,包括关于图1-3的***100所描述的功能。程序数据424可以包括多粒高速缓存一致性数据428,所述多粒高速缓存一致性数据428可以有益于实施如本文中描述的多粒高速缓存一致性。在一些实施方式中,应用422可以被布置为使用程序数据424在操作***420上操作,从而可以提供多粒高速缓存一致性。所描述的基本配置402通过内虚线内的部件在图6中示出。
计算设备400可以具有另外的特征或功能性、以及另外的接口来促进基本配置402和任意需要的设备和接口间的通信。例如,总线/接口控制器430可以被用来促进基本配置402和一个或多个数据存储器设备432通过存储器接口总线434的通信。数据存储器设备432可以是可移除存储器设备436、不可移除存储器设备438或其组合。举几个例子,示例可移除存储器和不可移除存储器设备包括磁盘设备(如软盘驱动器和硬盘驱动器(HDD))、光盘驱动器(如压缩盘(CD)驱动器或数字通用盘(DVD)驱动器)、固态驱动器(SSD)以及磁带驱动器等等。示例计算机存储介质可以包括由用于信息(如计算机可读指令、数据结构、程序模块或其他数据)存储的任意方法或技术实施的易失性和非易失性、可移除和不可移除介质。
***存储器406、可移除存储器设备436和不可移除存储器设备438均是计算机存储介质的示例。计算机存储介质包括,但不限于,随机存取存储器、只读存储器、电可擦存储器、闪存或其他存储技术,CD-ROM、数字通过盘(DVD)或其他光学存储器、磁盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储想要的信息并且可以被计算设备400访问的任意其他介质。任意此类计算机存储介质可以是计算设备400的部分。
计算设备400还可以包括接口总线440,其用于促进多种接口设备(例如,输出设备442、***接口444及通信设备446)和基本配置402通过总线/接口控制器430的通信。示例输出设备442包括图形处理单元448和音频处理单元450,其可以被配置为与多种外部设备(如显示器或扬声器)通过一个或多个A/V端口452通信。示例***接口444包括串行接口控制器454或并行接口控制器456,其可以被配置为与外部设备如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等等)或其他***设备(例如,打印机、扫描仪等等)通过一个或多个I/O端口458通信。示例通信设备446包括网络控制器460,其可以被布置为促进经过一个或多个通信端口464通过网络通信链路与一个或多个其他计算设备462的通信。
网络通信链路可以是通信介质的一个示例。通信介质可以一般地被体现为计算机可读指令、数据结构、程序模块或其他调制数据信号中的其他数据,如载波或其他运输机制,并且可以包括任意信息递送介质。“调制的数据信息”可以是以在信号中编码信息的方式被设置或改变而具有一个或多个其自身特点的信号。举例来说,但不限制,通信介质可以包括有线介质(如有线网络或直接有线连接)及无线介质(如声学、射频(RF)、微波、红外(IR)及其他无线介质)。如本文使用的术语计算机可读介质可以包括存储介质和通信介质。
计算设备400可以被实施为小型形状因数便携式(或移动)电子设备的一部分,例如手机、个人数据助理(PDA)、个人媒体播放器设备、无线网络监测设备(web-watchdevice)、个人耳机设备、特定于应用的设备或可以包括任意上述功能的混合设备。计算设备400还可以被实施为包括笔记本电脑和非笔记本电脑配置的个人计算机。
本公开不限于本申请中所描述的特定实施例,这些实施例意在对各方面的说明。能在不背离本公开的精神和范围的情况下做出许多修改和变化,这对于本领域技术人员而言是显而易见的。通过前面的说明,除了本文列举的之外,在本公开范围内的功能性对等方法和装置对于本领域技术人员而言将是显而易见的。这些修改和变化旨在落入所附权利要求的范围内。本公开仅被所附权利要求及该权利要求的对等物的全部范围所限制。应当理解的是,本公开不限于特定方法、试剂、化合物、组合物或生物***,这些当然可能改变。同样应当理解的是,本文所用的术语仅用于描述特定实施例,不旨在限制特定实施例。
关于本文对基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达被引入的权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指由不定冠词“一”或“一个”引导的权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个或两个以上的记述项)。此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的***”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的***)。在使用类似于“A、B或C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B或C中的至少一个的***”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的***)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
另外,在根据马库什组(Markushgroup)描述本公开的特征或方面的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。
本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”、“大于”、“小于”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
尽管本文已经公开多个方面和实施方式,其他方面和实施方式对本领域技术人员将显而易见。本文公开的多个方面和实施方式仅出于说明目的并且不旨在限制,真正的范围和精神由随附的权利要求表示。
Claims (24)
1.一种多核处理器架构中的晶片,所述晶片包括:
第一片,所述第一片包括第一高速缓存和第一处理器核,其中,所述第一片被配置为存储特定块和多个块的区域;
第二片,所述第二片被配置为与所述第一片通信,其中,所述第二片包括第二高速缓存和第二处理器核;
目录控制器,所述目录控制器被配置为与所述第一片和所述第二片通信,其中,所述目录控制器有效控制所述晶片的目录;
其中,所述目录控制器被配置为:
确定与所述特定块相关的块级一致性状态;
确定与所述多个块的区域相关的区域级一致性状态;
向所述第一片通信所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态;并且
其中,所述第一片被配置为:
从所述目录控制器接收所述块级一致性状态和所述区域级一致性状态;
识别所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态;并且
在所述第一高速缓存中存储与所述特定块相关的所述块级一致性状态和在所述第一高速缓存中存储与所述多个块的区域相关的所述区域级一致性状态。
2.如权利要求1所述的晶片,进一步地包括存储器,所述存储器包括被配置为与所述第一片和所述第二片通信的目录,所述目录包括:
与所述区域相关的区域指示符;
与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;并且
与所述区域指示符相关且与至少所述第一高速缓存相关的高速缓存指示符。
3.如权利要求1所述的晶片,进一步地包括存储器,所述存储器包括被配置为与所述第一片和所述第二片通信的目录,所述目录包括:
与所述区域相关的区域指示符;
与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;
与所述区域一致性指示符相关且与至少所述第一高速缓存相关的高速缓存指示符;
与所述特定块相关的块指示符;
与所述块指示符相关且与所述特定块的所述块级一致性状态相关的块一致性指示符;以及
与所述块一致性指示符相关且与所述第一高速缓存相关的高速缓存指示符。
4.如权利要求1所述的晶片,进一步地包括存储器,所述存储器包括被配置为与所述第一片和所述第二片通信的目录,所述目录包括:
与至少所述区域相关的区域指示符;
与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;
与所述区域一致性指示符相关且与至少所述第一高速缓存相关的高速缓存指示符;
与所述高速缓存指示符相关且与有效存储为专用或修改一致性状态的所述区域的块的数量相关的第一指示符;以及
与所述第一指示符相关且与有效存储为共享一致性状态的所述区域的块的数量或不被存储在晶片中的任意高速缓存中的所述区域的块的数量相关的第二指示符。
5.如权利要求1所述的晶片,其中,所述区域为第一区域并且所述第一高速缓存被进一步地适于包括:
与第二区域相关的第一指示符;
与所述第一指示符相关且与所述第二片相关的第二指示符,其中,所述第二片有效存储所述第二区域的至少一块;以及
与所述第二指示符相关的位向量,其中,所述位向量有效指示被所述第二片有效存储的所述第二区域的至少一块。
6.如权利要求1所述的晶片,其中,所述区域包括存储器的约512B和约16kb之间。
7.如权利要求1所述的晶片,其中,所述目录控制器被配置为,通过生成包括所述块级一致性状态和所述区域级一致性状态的信息,来通信所述块级一致性状态和所述区域级一致性状态。
8.如权利要求1所述的晶片,其中,所述目录控制器有效监控所述晶片上的通信量,并且,作为响应,确定所述块级一致性和确定定所述区域级一致性。
9.一种用于维持如权利要求1所述的晶片上的多核处理器中一致性的方法,所述晶片包括第一片,所述第一片包括第一高速缓存和第一处理器核,所述晶片进一步地包括被配置为与所述第一片通信的第二片,所述第二片包括第二高速缓存和第二处理器核,所述晶片包括存储器,所述存储器存储被配置为与所述第一片和所述第二片通信的目录,所述方法包括:
由目录控制器确定与存储在所述第一片中的特定块相关的块级一致性状态;
由所述目录控制器确定与存储在所述第一片中的多个块的区域相关的区域级一致性状态;
由所述目录控制器向所述第一片通信所述块级一致性状态和所述区域级一致性状态;
由所述第一片从所述目录控制器接收所述块级一致性状态和所述区域级一致性状态;
识别所述特定块的所述块级一致性状态和所述多个块的区域的所述区域级一致性状态;并且
在所述第一高速缓存中存储与所述特定块相关的所述块级一致性状态和在所述第一高速缓存中存储与所述多个块的区域相关的所述区域级一致性状态。
10.如权利要求9所述的方法,进一步地包括:
在所述目录中存储与所述区域相关的区域指示符;
在所述目录中存储与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;以及
在所述目录中存储与所述区域一致性指示符相关且与至少所述第一高速缓存相关的高速缓存指示符。
11.如权利要求9所述的方法,进一步地包括:
在所述目录中存储与所述区域相关的区域指示符;
在所述目录中存储与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;
在所述目录中存储与所述区域一致性指示符相关且与至少所述第一高速缓存相关的高速缓存指示符;
在所述目录中存储与所述特定块相关的块指示符;
在所述目录中存储与所述块指示符相关且与所述特定块的所述块级一致性状态相关的块一致性指示符;以及
在所述目录中存储与所述第一高速缓存相关的高速缓存指示符。
12.如权利要求9所述的方法,进一步地包括:
在所述目录中存储与至少所述区域相关的区域指示符;
在所述目录中存储与所述区域指示符相关且与所述区域级一致性状态相关的区域一致性指示符;
在所述目录中存储与所述区域一致性指示符相关且与至少所述第一高速缓存相关的高速缓存指示符;
在所述目录中存储与所述高速缓存指示符相关且与有效存储为专用或修改一致性状态的所述区域的块的数量相关的第一指示符;以及
在所述目录中存储与所述第一指示符相关且与有效存储为共享一致性状态的所述区域的块的数量或不被存储在所述晶片的任意高速缓存中的所述区域的块的数量相关的第二指示符。
13.如权利要求9所述的方法,其中,所述区域为第一区域并且所述方法进一步地包括:
在所述第一高速缓存中存储与第二区域相关的第一指示符;
在所述第一高速缓存中存储与所述第一指示符相关且与所述第二片相关的第二指示符,其中,所述第二片有效存储所述第二区域的至少一块;以及
在所述第一高速缓存中存储与所述第二指示符相关的位向量,其中,所述位向量有效指示被所述第二片有效存储的所述第二区域的至少一块。
14.如权利要求9所述的方法,其中,通信所述块级一致性状态和所述区域级一致性状态包括:生成包括所述块级一致性状态和所述区域级一致性状态的消息。
15.如权利要求9所述的方法,进一步地包括:由所述目录控制器监控所述晶片上的通信量,并且,作为响应,确定所述块级一致性和确定所述区域级一致性。
16.一种用于处理对如权利要求1所述的晶片上多核处理器中特定区域中特定块的请求的方法,所述晶片包括第一片,所述第一片包括第一高速缓存和第一处理器,所述晶片进一步地包括被配置为与所述第一片通信的第二片,所述第二片包括第二高速缓存和第二处理器,所述晶片包括存储器,所述存储器存储被配置为与所述第一片和所述第二片通信的目录,所述方法包括:
由所述第一处理器分析所述第一高速缓存来确定在所述第一高速缓存中是否存在与所述特定块相关的块指示符;
当所述第一处理器确定所述块指示符不存在于所述第一高速缓存中时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的区域指示符;并且
当所述处理器确定所述区域指示符不存在于所述第一高速缓存中时,所述方法进一步地包括:由所述第一处理器向所述片中的所述目录发送所述请求。
17.如权利要求16所述的方法,其中,当所述第一处理器确定所述区域指示符存在于所述第一高速缓存中时,所述方法进一步地包括:当所述区域指示符与私有一致性状态相关时,由所述第一处理器向存储器控制器发送所述请求。
18.如权利要求16所述的方法,进一步地包括:当所述第一处理器确定所述区域指示符存在于所述第一高速缓存中时,当所述区域指示符与共享一致性状态相关时,由所述第一处理器向所述第二片发送所述请求。
19.如权利要求16所述的方法,其中
所述区域指示符是第一区域指示符;并且
当所述第一处理器确定所述第一区域指示符存在于所述第一高速缓存中并且所述第二指示符与共享一致性状态相关时,所述方法进一步地包括:
由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的第二区域指示符、与所述第二区域指示符相关的第二片的片指示符以及位向量,其中,所述位向量有效指示被所述第二片有效存储的所述特定区域的至少一些块;并且
当所述第一处理器确定所述第二区域指示符不存在于所述高速缓存中或所述位向量不指示所述特定块时,所述方法进一步地包括:向存储器控制器发送所述请求。
20.如权利要求16所述的方法,其中
所述区域指示符是第一区域指示符;并且
当所述第一处理器确定所述第一区域指示符存在于所述第一高速缓存中并且所述区域指示符与共享一致性状态相关时,所述方法进一步地包括:
由所述第一处理器分析所述第一高速缓存来确定是否存在与所述特定区域相关的第二区域指示符、与所述第二区域指示符相关的第二片的片指示符以及位向量,其中,所述位向量有效指示被所述第二片有效存储的所述特定区域的至少一些块;并且
当所述第一处理器确定所述位向量指示所述特定块时,所述方法进一步地包括:向所述第二片发送所述请求。
21.如权利要求16所述的方法,其中
所述块指示符是第一块指示符;并且
在所述第一处理器向所述目录发送所述请求后,所述方法进一步地包括:
由目录控制器分析所述目录来确定在所述目录中是否存在所述特定块的第二块指示符;
当所述目录控制器确定在所述目录中存在所述特定块的所述第二块指示符时,所述方法进一步地包括:由所述目录控制器将所述第二高速缓存识别为与所述特定块相关;并且
由所述目录控制器向所述第二片发送所述请求。
22.如权利要求17所述的方法,其中
所述块指示符是第一块指示符;并且
所述第一处理器向所述目录发送所述请求,并且所述方法进一步地包括:
由目录控制器分析所述目录来确定在所述目录中是否存在所述特定块的第二块指示符;
当所述目录控制器确定在所述目录中存在所述特定块的所述第二块指示符时,所述方法进一步地包括:由所述目录控制器将所述第二高速缓存识别为与所述特定块相关;并且
由所述目录控制器向所述第二片发送所述请求;
由所述第二片接收所述请求;
从所述第二高速缓存向所述第一高速缓存发送所述特定块;并且
从所述第二高速缓存向所述第一高速缓存发送位向量,其中,所述位向量有效指示由所述第二高速缓存存储的所述特定区域的至少一块。
23.如权利要求17所述的方法,其中
所述块指示符是第一块指示符;
所述区域指示符是第一区域指示符;
所述第一处理器向所述目录发送所述请求,并且所述方法进一步地包括:
由目录控制器分析所述目录来确定在所述目录中是否存在所述特定块的第二块指示符;
当所述目录控制器确定在所述目录中存在所述特定块的所述第二块指示符时,所述方法进一步地包括:由所述目录控制器将所述第二高速缓存识别为与所述特定块相关;
由所述目录控制器向所述第二片发送所述请求;
由所述第二片接收所述请求;
从所述第二高速缓存向所述第一高速缓存发送所述特定块;并且
从所述第二高速缓存向所述第一高速缓存发送位向量,其中,所述位向量有效指示由所述第二高速缓存存储的所述特定区域的至少一块;
由所述第一处理器接收对第二区域中第二特定块的第二请求;
由所述第一处理器分析所述第一高速缓存来确定在所述第一高速缓存中是否存在与所述第二特定块相关的第三块指示符;
当所述处理器确定所述第三块指示符不存在于所述第一高速缓存中时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述第二区域相关的第二区域指示符;
当所述处理器确定所述第二区域指示符存在于所述第一高速缓存中时,所述方法进一步地包括分析所述位向量来确定所述第二高速缓存是否正在存储所述第二特定块;并且
当所述处理器确定所述第二高速缓存正在存储所述第二特定块时,所述方法进一步地包括向所述第二高速缓存发送所述第二请求。
24.如权利要求17所述的方法,其中
所述块指示符是第一块指示符;
所述区域指示符是第一区域指示符;
所述第一处理器向所述目录发送所述请求,并且所述方法进一步地包括:
由目录控制器分析所述目录来确定在所述目录中是否存在所述特定块的第二块指示符;
当所述目录控制器确定在所述目录中存在所述特定块的所述第二块指示符时,所述方法进一步地包括:由所述目录控制器将所述第二高速缓存识别为与所述特定块相关;
由所述目录控制器向所述第二片发送所述请求;
由所述第二片接收所述请求;
从所述第二高速缓存向所述第一高速缓存发送所述特定块;并且
从所述第二高速缓存向所述第一高速缓存发送位向量,其中,所述位向量有效指示由所述第二高速缓存存储的所述特定区域的至少一块;
由所述第一处理器接收对第二区域中第二特定块的第二请求;
由所述第一处理器分析所述第一高速缓存来确定在所述第一高速缓存中是否存在与所述第二特定块相关的第三块指示符;
当所述处理器确定所述第三块指示符不存在于所述第一高速缓存中时,由所述第一处理器分析所述第一高速缓存来确定是否存在与所述第二区域相关的第二区域指示符;
当所述处理器确定所述第二区域指示符存在于所述第一高速缓存中时,所述方法进一步地包括:分析所述位向量来确定所述第二高速缓存是否正在存储所述第二特定块;并且
当所述处理器确定所述第二高速缓存没有正在存储所述第二特定块时,所述方法进一步地包括:向存储器控制器发送所述第二请求。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/061907 WO2014065802A2 (en) | 2012-10-25 | 2012-10-25 | Multi-granular cache coherence |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105453055A true CN105453055A (zh) | 2016-03-30 |
CN105453055B CN105453055B (zh) | 2018-09-21 |
Family
ID=50545439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280076665.XA Expired - Fee Related CN105453055B (zh) | 2012-10-25 | 2012-10-25 | 晶片、维持多核处理器一致性和处理特定块请求的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9772950B2 (zh) |
CN (1) | CN105453055B (zh) |
WO (1) | WO2014065802A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003932A (zh) * | 2014-09-29 | 2017-08-01 | 华为技术有限公司 | 多核处理器***的缓存目录处理方法和目录控制器 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6674085B2 (ja) * | 2015-08-12 | 2020-04-01 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10157133B2 (en) * | 2015-12-10 | 2018-12-18 | Arm Limited | Snoop filter for cache coherency in a data processing system |
US9990292B2 (en) | 2016-06-29 | 2018-06-05 | Arm Limited | Progressive fine to coarse grain snoop filter |
CN107894914A (zh) * | 2016-09-30 | 2018-04-10 | 华为技术有限公司 | 缓存一致性处理方法和装置 |
US10042766B1 (en) | 2017-02-02 | 2018-08-07 | Arm Limited | Data processing apparatus with snoop request address alignment and snoop response time alignment |
US11163752B2 (en) | 2019-11-18 | 2021-11-02 | International Business Machines Corporation | Global coherency for distributed data sources |
US11360906B2 (en) | 2020-08-14 | 2022-06-14 | Alibaba Group Holding Limited | Inter-device processing system with cache coherency |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805575B1 (en) * | 2006-09-29 | 2010-09-28 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
US20110161596A1 (en) * | 2009-12-28 | 2011-06-30 | Conte Tom | Directory-based coherence caching |
CN102388372A (zh) * | 2009-04-07 | 2012-03-21 | 想象技术有限公司 | 保证数据缓存与主存储器之间的一致性 |
CN102662885A (zh) * | 2012-04-01 | 2012-09-12 | 天津国芯科技有限公司 | 对称式多核处理器维护二级缓存一致性的装置及其方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8615633B2 (en) | 2009-04-23 | 2013-12-24 | Empire Technology Development Llc | Multi-core processor cache coherence for reduced off-chip traffic |
US8719500B2 (en) | 2009-12-07 | 2014-05-06 | Intel Corporation | Technique for tracking shared data in a multi-core processor or multi-processor system |
US20130073811A1 (en) * | 2011-09-16 | 2013-03-21 | Advanced Micro Devices, Inc. | Region privatization in directory-based cache coherence |
US8812786B2 (en) * | 2011-10-18 | 2014-08-19 | Advanced Micro Devices, Inc. | Dual-granularity state tracking for directory-based cache coherence |
-
2012
- 2012-10-25 WO PCT/US2012/061907 patent/WO2014065802A2/en active Application Filing
- 2012-10-25 US US14/437,331 patent/US9772950B2/en not_active Expired - Fee Related
- 2012-10-25 CN CN201280076665.XA patent/CN105453055B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805575B1 (en) * | 2006-09-29 | 2010-09-28 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
CN102388372A (zh) * | 2009-04-07 | 2012-03-21 | 想象技术有限公司 | 保证数据缓存与主存储器之间的一致性 |
US20110161596A1 (en) * | 2009-12-28 | 2011-06-30 | Conte Tom | Directory-based coherence caching |
CN102662885A (zh) * | 2012-04-01 | 2012-09-12 | 天津国芯科技有限公司 | 对称式多核处理器维护二级缓存一致性的装置及其方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003932A (zh) * | 2014-09-29 | 2017-08-01 | 华为技术有限公司 | 多核处理器***的缓存目录处理方法和目录控制器 |
CN107003932B (zh) * | 2014-09-29 | 2020-01-10 | 华为技术有限公司 | 多核处理器***的缓存目录处理方法和目录控制器 |
Also Published As
Publication number | Publication date |
---|---|
US20150286577A1 (en) | 2015-10-08 |
CN105453055B (zh) | 2018-09-21 |
US9772950B2 (en) | 2017-09-26 |
WO2014065802A2 (en) | 2014-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105453055A (zh) | 多粒高速缓存一致性 | |
KR102442079B1 (ko) | 메모리에서의 처리를 위한 캐시 일관성 | |
KR101639672B1 (ko) | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 | |
CN100495361C (zh) | 维护存储器一致性的方法和*** | |
CN101802796B (zh) | 防止多核处理器中的写回竞争 | |
CN105027091B (zh) | 内存分配加速器 | |
CN104781797A (zh) | 多处理器架构中的高速缓存一致性目录 | |
CN103370696B (zh) | 多核***以及核数据读取方法 | |
US8145853B2 (en) | Semiconductor memory apparatus, memory access control system and data reading method | |
US20030126365A1 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
US8667227B2 (en) | Domain based cache coherence protocol | |
TW201015321A (en) | Buffer memory device, memory system and data trnsfer method | |
CN105009101A (zh) | 提供与数据缓冲器相关联的监听滤波 | |
EP1703405A2 (en) | Information processing device and data control method in information processing device | |
CN105393218A (zh) | 通过虚拟机切换的重构 | |
KR20110127479A (ko) | 멀티 프로세서 장치 및 그것의 인터 프로세스 통신 방법 | |
US20090248989A1 (en) | Multiprocessor computer system with reduced directory requirement | |
US11113194B2 (en) | Producer-to-consumer active direct cache transfers | |
KR101695845B1 (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
KR101607530B1 (ko) | 처방전 전송 시스템 및 처방전 전송 방법 | |
US20120185672A1 (en) | Local-only synchronizing operations | |
US8397029B2 (en) | System and method for cache coherency in a multiprocessor system | |
US20080313411A1 (en) | System controller and cache control method | |
CN110221985B (zh) | 跨芯片维护缓存一致性策略的装置与方法 | |
US20120005432A1 (en) | Reducing Cache Probe Traffic Resulting From False Data Sharing |
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: 20180921 Termination date: 20191025 |
|
CF01 | Termination of patent right due to non-payment of annual fee |