CN104781797A - 多处理器架构中的高速缓存一致性目录 - Google Patents
多处理器架构中的高速缓存一致性目录 Download PDFInfo
- Publication number
- CN104781797A CN104781797A CN201280077067.4A CN201280077067A CN104781797A CN 104781797 A CN104781797 A CN 104781797A CN 201280077067 A CN201280077067 A CN 201280077067A CN 104781797 A CN104781797 A CN 104781797A
- Authority
- CN
- China
- Prior art keywords
- cache
- event
- time
- data block
- catalogue
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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/082—Associative directories
-
- 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
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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
背景技术
除非本文中另有指示,否则本部分中描述的材料并不是针对本申请中权利要求的现有技术,并且不因包括在本部分中而被承认是现有技术。
在多核处理器架构中,多个处理器内核可以被包括在单个集成电路晶片中或者被包括在被设置在单个芯片封装中的多个集成电路晶片上。高速缓存可以被用于存储供处理器内核中的一个或多个访问的数据。数据可以是存储在通常位于晶片外侧的更大存储器中的数据的子集。每个处理器可以被设置有存储用于处理器的数据的高速缓存。由于单条数据可以被存储在多个高速缓存中,高速缓存一致性协议可以被配置为记录存储在多个高速缓存中的数据。高速缓存一致性协议可以被配置为帮助确保对数据的多个请求一致地使得相同的数据被返回。
概述
在一些示例中,总体上描述了用于处理多处理器架构中的晶片中的请求的方法。该方法可以包括接收对特定数据块的请求。该方法可以进一步包括确定与包括所述特定数据块的数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的老化阈值(aging threshold)。该方法可以进一步包括分析存储器以识别指示为存储所述特定数据块的特定高速缓存。该方法可以进一步包括分析所述存储器以识别所述特定高速缓存的高速缓存缺失(cache miss)数量。该方法可以进一步包括分析所述存储器以识别针对所述特定数据块的事件发生时的时间。该方法可以进一步包括基于老化阈值、事件的时间以及高速缓存缺失数量确定是否将对所述特定数据块的请求发送至所述特定高速缓存。
在一些示例中,总体上描述了多处理器架构中的目录。该目录可以包括存储器和被配置为与存储器通信的目录控制器。目录控制器可以用于接收对特定数据块的请求。目录控制器可以用于确定与包括所述特定数据块的数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的老化阈值。目录控制器可以进一步用于分析所述存储器以识别指示为存储所述特定数据块的特定高速缓存。目录控制器可以用于分析存储器以识别在第一时间和第二时间之间针对所述特定高速缓存的高速缓存缺失数量。目录控制器可以用于分析存储器以识别针对所述特定数据块的事件发生时的时间。目录控制器可以进一步用于基于老化阈值、事件的时间以及高速缓存缺失数量来确定是否将对所述特定数据块的请求发送至所述特定高速缓存。
在一些示例中,总体上描述了多处理器架构中的晶片。该晶片可以包括第一片(tile)、第二片以及目录。第一片可以包括第一高速缓存和第一处理器。第二片可以包括第二高速缓存和第二处理器。目录可以被配置为与第一片和第二片通信。目录可以包括存储器和目录控制器。目录控制器可以用于接收对特定数据块的请求。目录控制器可以用于确定与包括所述特定数据块的数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的老化阈值。目录控制器可以进一步用于分析所述存储器以识别指示为存储所述特定数据块的特定高速缓存。目录控制器可以用于分析所述存储器以识别在第一时间和第二时间之间针对所述特定高速缓存的高速缓存缺失数量。目录控制器可以用于分析所述存储器以识别针对所述特定数据块的事件发生时的时间。目录控制器可以进一步用于基于老化阈值、事件的时间以及高速缓存缺失数量来确定是否将对所述特定数据块的请求发送至所述特定高速缓存。
前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方面、实施方式、示例和特征之外,另外的方面、实施方式、示例和特征将变得清晰可见。
附图说明
通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本公开范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:
图1示出能够被用于在多处理器架构中实施高速缓存一致性目录的示例系统;
图2示出能够被用于在图1的多处理器架构中实施高速缓存一致性目录的一个示例系统,其包括示例目录的进一步的细节;
图3描述了用于在多处理器架构中实施高速缓存一致性目录的示例处理的流程图;
图4示出能够被用于在多处理器架构中实施高速缓存一致性目录的计算机程序产品;以及
图5是示出被安排为在多处理器架构中实施高速缓存一致性目录的示例计算设备的框图。
具体实施方式
在本具体实施方式中,将参考附图,附图构成了本具体实施方式的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的组件。在具体实施方式、附图和权利要求中所描述的示例性实施例不意在限制。在不偏离本文呈现的主题的精神或范围的情况下,可以使用其它实施例,并且可以做出其它改变。将易于理解的是,如本文大致描述且如图中所图示的,本公开的各方面能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
本公开一般尤其涉及与在多处理器架构中的高速缓存一致性目录有关的方法、装置、系统、设备和计算机程序产品。
简而言之,大致描述了用于多处理器架构中的高速缓存一致性目录技术。在一个示例中,晶片中的目录可以接收对特定块的请求。目录可以确定与包括特定数据块的数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的块老化阈值。目录可以进一步分析存储器以识别指示为存储特定数据块的特定高速缓存以及识别特定高速缓存的高速缓存缺失数量。目录可以识别针对特定数据块的事件发生时的时间以及基于老化阈值、事件的时间以及高速缓存缺失的数量来确定是否将对特定数据块的请求发送至特定高速缓存。
图1示出根据本文中描述的至少一些实施例安排的能够被用于在多处理器架构中实施高速缓存一致性目录的示例系统。示例系统100可以包括晶片(die)102,晶片102包括多个片(tile)。针对片118进行说明,片118可以包括高速缓存110、处理器或处理器内核(以下称为“处理器”)112和/或目录114。处理器112可以适于处理包括代码的数据(以下数据和/或代码都称为“数据块”)。高速缓存110可以被配置为存储处理器112本地的数据块。目录114可以包括目录控制器120。目录控制器120可以被用于如本文中所解释的控制目录114的操作。
如以下更具体的描述,目录控制器120可以被配置为生成和/或存储数据,用于记录数据已经在各个高速缓存中存储了多久。基于高速缓存缺失的数量以及本文中所描述的其他启发式方法,目录控制器120可以用于确定可能性分析。可能性分析可以指示目录中的高速缓存一致性数据可能过时以及块可能仍被存储在由目录识别的高速缓存中或者可能不再存储在由目录识别的高速缓存中的可能性。目录控制器可以在对块的请求被发送至高速缓存之前执行此可能性分析。进行该分析可以由此在块不再存储在高速缓存中的情况下避免浪费的延迟。在目录控制器确定针对特定块的高速缓存数据过时的示例中,目录控制器可以将对该特定块的请求离开晶片而发送以从主存储器中取得该特定块。基于可能性分析和过时性的确定,目录中的空间可以被创建,并且条目被剔除(evicted)。
晶片102可以包括片118、130-144的矩阵(例如,阵列),它们包括各自的高速缓存110、150-164。每一片还可以包括各自的处理器112和/或目录114中的一个或多个。晶片102中的每个片可以如在同构布置(homogenous arrangement)中是大致相同的,或者一些片可以如在异构布置中是不同的。晶片102可以被设置为与另一晶片103通信,从而使得数据可以在多个晶片之间共享。
目录114可以包括存储器,该存储器标识(例如,索引)与存储在晶片102的片中的每个数据块相关联的位置。目录114可以被定位在晶片102上的单个片中,或者分布在一些或者所有片之间。如果目录114是分布式的,例如,第一范围的地址(例如0x0000-0x1000)可以被存储在第一片中,第二范围的地址(例如0x1001-0x2000)被存储在第二片中,等等。图中的目录114由此可以示出整个晶片目录的第一部分,其中该第一部分可以被存储在片118中并且额外的部分可以被存储在其他片(例如片130、131、132等等)中。
目录114可以包括存储在晶片102中的块的列表连同块的状态以及哪些高速缓存可能正在共享该块。例如,目录114可以使用MESI、MOESI、MSI、MOSI等协议。在这些类型的协议中,目录114可以记录共享状态,例如:修改(M),例如在高速缓存线已经由于该高速缓存线已经从主存储器被移动而被修改时;专用(E),例如在高速缓存线仅仅在一个高速缓存中但该线与主存储器匹配时;专用-修改(EM),例如在高速缓存线被修改并且专用于一个高速缓存时;共享(S),例如在高速缓存线可以被存储在其他高速缓存中并且该线与主存储器匹配时;无效(I),例如在高速缓存线无效时;和/或持有(O),例如在所指示的高速缓存线包括最新的数据副本时。
目录114可以被配置为存储与高速缓存相关的一致性数据。目录114可以存储与存储在晶片102中的高速缓存中的数据相关的一致性表170和第二表172。表170可以将数据包括在字段(例如标签174、状态176和/或共享者178)中。标签字段174可以指示数据块,例如,在一个示例中,块“B1”、“B2”、“B3”和/或“B4”。状态字段176可以通过使用以上提到的协议中的一个协议来指示这些块的一致性状态。字段178可以指示哪些高速缓存(如果有的话)正在共享该块。在所示的示例中,块B1以共享“S”状态被存储,并且被高速缓存C1和C3共享;块B2处于专用-修改状态,并且仅仅被高速缓存C2共享;块B3以共享状态被存储,并且被高速缓存C1和C3共享;块B4处于专用修改状态,并且仅仅被高速缓存C4共享。
第二表172可以将数据包括在字段(例如“高速缓存”180、“缺失时钟(miss clock)”182和/或“最后事件的时间”184)中。高速缓存字段180可以存储标识晶片102中的高速缓存的数据。缺失时钟字段182可以指示高速缓存缺失的数量。最后事件的时间字段184可以指示在各高速缓存中发生的事件(例如高速缓存缺失或对更新一致性状态的请求)的最后时间。对更新一致性状态的请求可以与写到块的请求一起发生。最后事件的时间字段184可以记录目录114可知的块已经由处理器访问的最后时间。最后事件的时间字段可以记录将缺失时钟用作计数器的时间,如以下所述的。
目录控制器120可以计算块老化阈值186,块老化阈值186可以用于确定与块的一致性状态相关的数据是否已经过时。块老化阈值186可以基于块已经从高速缓存移除的可能性和/或高速缓存一致性数据已经过时的可能性。在一个示例中,块老化阈值186可以基于发生在晶片102中的其他块的缺失的数量来计算,并且可以被用于确定特定块的一致性状态已经过时的可能性。块老化阈值可以基于指示为被存储在高速缓存中的块仍然被存储在高速缓存中的期望的置信度。块老化阈值可以由目录控制器120使用在脏块(dirty block)(例如自被主存储器访问以来数据已经写入的块)从高速缓存被剔除时收集的数据来计算。块老化阈值还可以由目录控制器120使用从已经被它们各自的高速缓存剔除的专用于一个高速缓存的清洁块(clean block)收集的数据来计算。
在一个示例中,块老化阈值186可以以以下方式被计算:
假定对于高速缓存C中的每个块Bn,在Bn从高速缓存C剔除之前对高速缓存C中的其他区块发生的缺失的数量为xn。x的均值avgx=(x1+x2…+xn)/n。x的标准偏差stdevx=sqrt(((x1-avgx)2+(x2-avgx)2=…xn-avgx)2)/n),其中sqrt是平方根运算。块老化阈值可以是avgx+stdevx,在一个示例中,关于块是否已经从高速缓存剔除的可能性,其可以实现84%的置信度。在另一示例中,块老化阈值可以是avgx+2*stdevx,并且关于块是否已经从高速缓存剔除的可能性,可以实现99.5%的置信度。
随着片102工作,可以由处理器内核中的高速缓存请求数据。内核可能被通知指示所请求的块未被存储在各高速缓存中的高速缓存缺失。目录控制器120可以记录各高速缓存的高速缓存缺失的数量,并基于这些高速缓存缺失更新缺失时钟字段182。大的缺失时钟(例如64位元的缺失时钟)可以被用于避免溢出。如以上提到的,最后事件的时间字段184可以基于缺失时钟指示由目录可知的块已经由处理器访问的最后时间。这可以是目录具有精确的一致性数据的最后时间。基于块老化阈值、缺失时钟和最后事件的时间,目录控制器可以确定一致性数据的过时性。
在图1中所示的示例中,块B1由高速缓存C1和C3共享。对于高速缓存C1的最后事件的时间184为345(涉及缺失时钟),并且在该示例中,块老化阈值(BAT)被计算为1024。由于最后事件的时间小于缺失时钟减去块老化阈值(345<6531-1024),因此目录控制器120可以确定高速缓存C1中的块B1已经老化,因此一致性数据可能过时。类似地,对于高速缓存C3的最后事件的时间为411且小于C3的缺失时钟减去块老化阈值(411<9261-1024),所以目录控制器120可以确定在高速缓存C3的块B1也已经老化。关于高速缓存C1和C3中的块B1的这些确定指示块B1不太可能仍然存储于高速缓存C1和C3中。因此,目录控制器120可以将对块B1的请求不转达至高速缓存C1或C3,而是离开晶片102转达至例如存储器控制器188。
针对块B2,块B2可能仍然存储在高速缓存C2中,因为最后事件的时间大于C2的缺失时钟减去块老化阈值(155>394-1024)。块B3可以提供混合的可能性,因为块B3在高速缓存C1中可能已经老化但在高速缓存C3中没有老化。在该示例中,块B4刚刚被存储在高速缓存中,因为最后事件的时间是77,缺失时钟计数为78,所以块B4可能仍然被存储在高速缓存C4中。
最后事件的时间数据可以由目录控制器120以多种方式保持。例如,最后事件的时间数据可以记录每一缺失时钟滴答(clock tick)。在另一示例中,最后事件的时间数据可以记录更大量缺失时钟滴答,例如每2x(2的x次幂)缺失时钟滴答,以减少存储在目录114中的最后事件的时间数据的大小。
最后事件的时间数据可以针对每一个块保持。最后事件的时间数据可以针对多组或多页块保持,例如可在存储器中形成页的4KB连续块。页中的块很可能具有过时性或老化的类似水平以及可能性,因为这些块很可能由于空间局部性而一起被访问。高速缓存缺失或无效请求,作为将导致目录控制器更新最后事件的时间数据的事件,可以针对整页被保持。可以在针对在该页上的块的事件发生时更新最后事件的时间数据。在块大小为64字节的示例中,记录页的最后事件的时间数据的这一方法可以将对最后事件的时间数据的存储器使用减少4KB/64=64。
可以针对每一高速缓存保持最后事件的时间数据。在示例中,可以针对用于代表多个高速缓存的一些代表性高速缓存保持最后事件的时间数据。来自代表的高速缓存中任一个的高速缓存缺失可以更新最后事件的时间数据。最后事件的时间数据存储技术的组合或子组合可以被使用。例如,可以由目录控制器120使用记录多个(2x)高速缓存缺失、保持多页de块的数据和/或保持代表性的高速缓存的数据中的一些或所有。
图2示出根据本文中描述的至少一些实施例布置的能够被用于在图1的多处理器架构中实施高速缓存一致性目录的示例系统,其包括示例目录的进一步的细节。图2类似于系统100,其具有额外的细节。为清晰目的,被标记为与图1的组件一致的图2中的那些组件将不再次描述。
目录114可以进一步包括受害者选择和确认逻辑190,受害者选择和确认逻辑190可以被用于如本文中所描述的基于条目过时的可能性剔除目录114的存储器中的条目。图2示出了执行系统100的示例。在该示例中,一致性表200a、200b、200c和200d、缺失时钟表202a、202b、202c和202d、块老化阈值204a、204b、204c和204d以及最后事件的时间表206a、206b、206c和206d各自被显示针对四个不同的时间192、194、196、198,并由字母a、b、c和d指示。针对时间192,在示例中,与高速缓存C2相对应的处理器可能在请求块P1.1时经历高速缓存缺失。块Px.y指示在第x页上的第y块。根据高速缓存一致性表200a目录,高速缓存C1正在以共享“S”状态存储块P1.1。最后事件的时间表206a指示块P1.1被访问的最后时间是在C1高速缓存缺失时钟时间1500。C1的缺失时钟202a指示当前缺失时间4567。因为缺失时钟减去最后事件的时间大于块老化阈值(4567-1500>1000),因此目录控制器120可以确定块P1.1过时并且很可能不再高速缓存在C1中。目录控制器120可以因此将对块P1.1的请求发送至存储器控制器188而不是发送至高速缓存C1。通过不首先将请求发送至高速缓存C1以查看高速缓存C1是否具有块P1.1,节省了延迟,因为很可能块P1.1不再存储在高速缓存C1中。
在该示例中,对于P1.1的目录条目存在,所以不必做出关于在目录114中剔除(为P1.1腾出空间)的决定。可以通过使用针对高速缓存C2-与请求块P1.1的处理器相关的高速缓存的缺失时钟条目来更新最后事件的时间表206。在该示例中,C2的缺失时钟202a是7101,所以最后事件的时间表206b被更新(如在194显示),指示页P1(包括块P1.1)的最后事件由高速缓存C2在时间7101作出。在此示例中,可以基于在页中块的改变(块P1.1在页P1中)来保持最后事件的时间数据。如在缺失时钟202b所显示的,缺失时钟202被增加到7102。
针对194,在另一示例中,与高速缓存C1相对应的处理器可以在请求块P1.2中经历高速缓存缺失,并且可以将对块P1.2的请求发送至目录控制器120。目录控制器120可以分析高速缓存一致性表200b,并确定块P1.2以被高速缓存C2和C3共享的共享状态S存储。最后事件的时间表206b指示针对页P1的最后事件的时间为7101,并且由高速缓存C2访问。由于C2的缺失时钟时间减去最后事件的时间小于块老化阈值(7102-7101<1000),块很可能是新的并且仍然存储在所指示的高速缓存中。因此,目录控制器120可以将对块P1.2的请求发送至高速缓存C2或C3。由于不需要访问芯片外存储器,因此节省了延迟。
现在,如一致性表200c所指示的,块P1.2被高速缓存C1、C2和C3共享。缺失时钟表206可以被更新,以指示C1的时钟缺失数量如缺失时钟202c所示的现在为4568。最后事件的时间表可以被更新,以指示页P1的最后事件现在为4567,并且事件来自高速缓存C1。
在另一示例中,针对时间196,与C1相对应的处理器可以在请求访问块P1.3时经历高速缓存缺失。与C1相对应的处理器可以将对块P1.3的请求发送至目录控制器120,并且目录控制器120可以确定目录中不存在针对块P1.3的数据,所以应当制作条目并且选择用于剔除的条目。在该示例中,块P1.3映射到与块P2.1或者块P3.5相对应的空间,并且应当作出剔除这些块中的一个的决定。
目录控制器120可以分析与块P2.1以及块P3.5相关的数据,并且确定这些块仍然被存储在所指示的高速缓存中的各个可能性。例如,目录控制器120可以确定P2.1还没有老化(995-95<1000),并且块P3.5已经老化4568-2000>1000。由于块P3.5已经老化,很可能页P3中的块不再被高速缓存,所以受害者选择和确认逻辑190可以通过向正在存储块P3.5的高速缓存发送无效消息来剔除块P3.5。在该示例中,高速缓存C1和C2可以接收无效消息。在另一示例中,由于页P3的所有块已经老化,目录控制器120可以向存储针对页P3的数据的所有高速缓存发送消息。在该示例中,高速缓存C1、C2和C3都接收消息,以无效与页P3相关的数据。这在高速缓存一致性表200d中显示,其中与页P3相关的数据已经被块P1.3的条目替换。
在其他可能的优点中,根据本公开的系统可以确定块是否仍然存储在高速缓存中的可能性。响应于特定块已经老化的确定,目录控制器可以将对块的请求离开晶片而发送,并且通过首先将请求发送至被指示为最后存储该块的高速缓存来避免增加延迟。响应于特定块在特定高速缓存未老化的确定,目录控制器可以将对块的请求发送至特定高速缓存,通过不将请求发送至存储器控制器来避免延迟和带宽使用的增加。根据本公开的系统可以负责相对空闲的一些高速缓存,其中少许块或没有块被剔除或者其中数据并不集中的线程正在运行。在这些示例中,块可能不会迅速老化。在其他示例中,在数据集中线程正在处理的情况下,块可以以更快的速率被剔除,并且可通过使用块缺失数据来解释数据。目录性能和能量效率可以被改善,因为目录控制器被提供有将请求发送至目录中所指示的高速缓存或者发送至芯片外的存储器控制器的指令。由于过时数据条目可被识别,因此那些条目可以从目录被移除,腾出空间来产生更少的目录开销。关于目录剔除的逻辑可以被改善,因为剔除可以基于条目的过时性。
图3描述了根据本文中描述的至少一些实施例布置的用于在多处理器架构中执行高速缓存一致性目录的示例处理的流程图。在一些示例中,图3中的处理可以使用如上所述的系统100执行,并且可以用于处理多处理器架构中的晶片中的请求。
示例处理可以包括由一个或多个方框S2、S4、S6、S8、S10和/或S12所示出的一个或多个操作、动作或功能。虽然图示为离散的方框,基于所期望的实施方式,各方框可以划分成额外的方框、组合成较少的方框,或者被去除。
处理可以在方框S2“接收对特定数据块的请求”开始。在方框S2,目录控制器可以接收对特定数据块的请求。请求可以是例如从数据块读或者写到数据块的请求。
处理可以从方框S2向S4“确定与包括所述特定数据块的数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的老化阈值”继续。在方框S4,目录可以确定与数据块被存储在晶片中的一个或多个高速缓存中的可能性相关的老化阈值。例如,目录可以确定与晶片中的块在过去已经发生的缺失数量相关的均值和标准偏差。
处理还可以从方框S4向S6“分析存储器以识别指示为存储所述特定数据块的特定高速缓存”继续。在方框S6,目录可以分析存储器以确定指示为存储所述特定数据块的特定高速缓存。
处理可以从方框S6向方框S8“分析存储器以识别特定高速缓存的高速缓存缺失数量”继续。在方框S8,目录可以分析存储器以确定对于特定高速缓存的高速缓存缺失数量。
处理可以从方框S8向方框S10“分析存储器以识别针对特定数据块的事件发生时的时间”继续。在方框S10,目录可以分析存储器以识别针对特定数据块或包括该数据块的页的事件发生时的时间。事件可以包括例如高速缓存缺失或者请求更新一致性状态。事件的时间可以识别由目录已知的块已经被访问的最后时间。
处理可以从方框S10向方框S12“基于老化阈值、事件的时间以及高速缓存缺失的数量来确定是否将对所述特定数据块的请求发送至所述特定高速缓存”继续。在方框S12,目录可以基于老化阈值、事件的时间以及高速缓存缺失的数量来确定是否将对所述特定数据块的请求发送至所述特定高速缓存或存储器控制器。例如,如果事件的时间小于高速缓存缺失的数量减去老化阈值,则目录可以确定该块未老化,并且可以将该请求发送至所述特定高速缓存。相反,如果事件的时间大于高速缓存缺失的数量减去老化阈值,则目录可以确定该块已经老化,并且可以将该请求发送至存储器控制器。
图4示出根据本文中所描述的至少一些实施例布置的能够被用于在多处理器架构中实施高速缓存一致性目录的示例计算机程序产品300。程序产品300可以包括信号承载介质302。信号承载介质302可以包括一条或多条指令304,当由例如处理器执行时,这些指令可以提供上文结合图1-3描述的功能。由此,例如,参考系统100,目录控制器120可以响应于由介质302传递到系统100的指令304而进行图4显示的方框中的一个或多个。
在一些实施方式中,信号承载介质302可以包含计算机可读介质306,例如但不限于硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、存储器等。在一些实施方式中,信号承载介质302可以包含可记录介质308,例如但不限于存储器、读/写(R/W)CD、R/W DVD,等等。在一些实施方式中,信号承载介质302可以包含通信介质310,例如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。因此,例如,程序产品300可以通过RF信号承载介质302传送到系统100的一个或多个模块,其中信号承载介质302由无线通信介质310(例如,符合IEEE 802.11标准的无线通信介质)来传送。
图5是示出根据本文中所描述的至少一些实施例布置的被布置为在多处理器架构中实施高速缓存一致性目录的示例计算设备400的框图。在最基本的配置402中,计算设备400通常包括一个或多个处理器404和系统存储器406。存储器总线408可用于在处理器404与系统存储器406之间通信。
根据所需的配置,处理器404可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。处理器404可以包括例如一级高速缓存410和二级高速缓存412的一级或多级高速缓存、处理器内核414和寄存器416。示例的处理器内核414可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP Core)或其任意组合。示例的存储器控制器418还可与处理器404一起使用,或者在一些实施方式中,存储器控制器418可以是处理器404的内部组件。
根据所需的配置,系统存储器406可以是任意类型,包括但不限于易失性存储器(例如RAM)、非易失性存储器(例如ROM、闪存等)或其任意组合。系统存储器406可以包括操作系统420、一个或多个应用422以及程序数据424。应用422可以包括高速缓存一致性目录算法426,该算法426可布置成执行如本文所描述的功能,包括参考如图1和2所示的系统100所描述的功能。程序数据424可以包括高速缓存一致性目录数据428,其可以用于如本文中描述的在多处理器架构中实施高速缓存一致性目录。在一些示例中,应用422可布置成在操作系统420上操作程序数据424,使得可以提供在多处理器架构中的高速缓存一致性目录。此描述的基本配置402在图5中通过内部虚线内的那些组件示出。
计算设备400可具有附加的特征或功能以及附加的接口以便于在基础配置402与任何所需的设备和接口之间的通信。例如,总线/接口控制器430可用于利于基础配置402与一个或多个数据存储设备432之间经由存储接口总线434的通信。数据存储设备432可以是可移除存储设备436、非可移除存储设备438或者其组合。可移除存储设备和非可移除存储设备的示例包括例如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、例如压缩盘(CD)驱动器或数字多功能盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器,仅列举了几个。示例的计算机存储媒体可以包括以用于例如计算机可读指令、数据架构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的媒体以及可移除和非可移除的媒体。
系统存储器406、可移除存储设备436和非可移除存储设备438是计算机存储媒体的示例。计算机存储媒体包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备400访问的任何其它媒体。任意这样的计算机存储媒体可以是计算设备400的部分。
计算设备400还可以包括接口总线440,该接口总线440用于方便从各接口设备(例如,输出接口442、外围设备接口444和通信设备446)经由总线/接口控制器430到基础配置402的通信。示例的输出设备442包括图形处理单元448和音频处理单元450,其可配置为经由一个或多个A/V端口452与例如显示器或扬声器的各外部设备通信。示例的外围设备接口444包括串行接口控制器454或并行接口控制器456,其可配置为经由一个或多个I/O端口458与例如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信设备446包括网络控制器460,其可布置成便于经由一个或多个通信端口464通过网络通信链路与一个或多个计算设备462的通信。
网络通信链路可以是通信媒体的一个示例。通信媒体通常可通过计算机可读指令、数据架构、程序模块或例如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送媒体。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信媒体可以包括例如有线网络或直接线连接的有线媒体,以及例如声波、射频(RF)、微波、红外(IR)和其它无线媒体的无线媒体。如本文所使用的术语计算机可读媒体可以包括存储媒体和通信媒体两者。
计算设备400可实现为例如蜂窝电话、个人数据助理(PDA)、个人媒体播放器设备、无线网页监视设备(wireless web-watch device)、个人头戴送受话器设备、专用设备或包括上述功能中的任一种的混合设备的小形状因数的便携式(或移动)电子设备的一部分。计算设备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”的可能性。
另外,在根据马库什组(Markush group)描述本公开的特征或方案的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。
本领域技术人员将理解的是,为了任何以及全部的目的,例如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,例如“多达”、“至少”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
通过前面的论述,将理解到本文已经为了示例的目的描述了本公开的各实施例,并且可以在不偏离本公开的范围和精神的情况下进行各种改进。因此,本文所公开的各个实施例不意在限制,真正的范围和精神是通过随附的权利要求表示的。
Claims (26)
1.一种用于在多处理器架构中的晶片中处理请求的方法,所述方法包括:
由目录接收针对特定数据块的请求;
由所述目录确定与包括所述特定数据块的数据块被存储在所述晶片中的一个或多个高速缓存中的可能性相关的老化阈值;
由所述目录分析存储器以识别指示为存储所述特定数据块的特定高速缓存;
由所述目录分析所述存储器以识别对于所述特定高速缓存的高速缓存缺失数量;
由所述目录分析所述存储器以识别针对所述特定数据块的事件发生时的时间;以及
由所述目录基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,来确定是否将针对所述特定数据块的请求发送至所述特定高速缓存。
2.如权利要求1所述的方法,其中所述事件的时间基于在包括所述特定数据块的页上的事件。
3.如权利要求1所述的方法,其中所述事件的时间基于所述特定高速缓存中的事件。
4.如权利要求1所述的方法,其中所述事件的时间基于所述特定高速缓存中或者所述晶片中的另一高速缓存中的事件。
5.如权利要求1所述的方法,其中所述事件的时间基于包括所述特定高速缓存中所述特定数据块的页上的事件,或者基于所述晶片中的另一高速缓存中的事件。
6.如权利要求1所述的方法,其中所述数量为第一数量,并且所述方法进一步包括通过以下步骤确定所述老化阈值:
针对各个高速缓存中的至少两个各自块,确定针对所述各个高速缓存中的其他块从第三时间直到所述各自块被剔除发生的第二数量的高速缓存缺失;
计算所述晶片中的至少两个高速缓存的所述第二数量的高速缓存缺失的均值;
计算所述晶片中的所述至少两个高速缓存的所述第二数量的高速缓存缺失的标准偏差;以及
基于所述均值和所述标准偏差确定所述老化阈值。
7.如权利要求1所述的方法,其中所述数量为第一数量,并且所述方法进一步包括通过以下步骤确定所述老化阈值:
针对各个高速缓存中的至少两个各自块,确定针对所述各个高速缓存中的其他块从第三时间直到所述各自块被剔除发生的第二数量的高速缓存缺失;
计算所述晶片中的至少两个高速缓存的所述第二数量的高速缓存缺失的均值;
计算所述晶片中的至少两个高速缓存的所述第二数量的高速缓存缺失的标准偏差;以及
基于所述均值和两倍的所述标准偏差确定所述老化阈值。
8.如权利要求1所述的方法,其中所述事件为高速缓存缺失或者请求更新一致性状态。
9.如权利要求1所述的方法,其进一步包括由所述目录基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,剔除所述存储器中的条目。
10.如权利要求1所述的方法,其进一步包括由所述目录基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,剔除所述存储器中的条目;以及
由所述目录发送消息,以无效来自所述特定高速缓存的所述特定数据块。
11.如权利要求1所述的方法,其进一步包括由所述目录基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,剔除所述存储器中的条目;以及
由所述目录发送消息,以无效包括来自所述特定高速缓存的所述特定数据块的页。
12.如权利要求1所述的方法,其进一步包括由所述目录基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,将所述请求发送至存储器控制器。
13.如权利要求1所述的方法,其中所述最后事件的时间基于所述高速缓存缺失数量。
14.一种多处理器架构中的目录,所述目录包括:
存储器;以及
目录控制器,其被配置为与所述存储器通信;
所述目录控制器用于
接收针对特定数据块的请求;
确定与包括所述特定数据块的数据块被存储在所述晶片中的一个或多个高速缓存中的可能性相关的老化阈值;
分析所述存储器,以识别指示为存储所述特定数据块的特定高速缓存;
分析所述存储器,以识别对于所述特定高速缓存在第一时间和第二时间之间的高速缓存缺失数量;
分析所述存储器,以识别针对所述特定数据块的事件发生时的时间;以及
基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,来确定是否将针对所述特定数据块的请求发送至所述特定高速缓存。
15.如权利要求14所述的目录,其中所述事件的时间基于在包括所述特定数据块的页上的事件。
16.如权利要求14所述的目录,其中所述事件的时间基于所述特定高速缓存中的事件。
17.如权利要求14所述的目录,其中所述事件的时间基于所述特定高速缓存中或者在所述晶片中的另一高速缓存中的事件。
18.如权利要求14所述的目录,其中所述事件的时间基于包括所述特定高速缓存中所述特定数据块的页上的事件,或者基于在所述晶片中的另一高速缓存中的事件。
19.如权利要求14所述的目录,其中所述数量为第一数量,并且所述老化阈值基于:
针对各个高速缓存中的至少两个各自块,确定针对所述各个高速缓存中的其他块从第三时间直到所述各自块被剔除发生的第二数量的高速缓存缺失;
所述晶片中的至少两个高速缓存的所述第二数量的高速缓存缺失的均值;以及
所述晶片中的至少两个高速缓存的所述第二数量的高速缓存缺失的标准偏差。
20.如权利要求14所述的目录,其中所述事件为高速缓存缺失或者请求更新一致性状态。
21.如权利要求14所述的目录,其中所述目录控制器进一步用于基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量剔除所述目录中的条目。
22.如权利要求14所述的目录,其中所述目录控制器进一步用于:
基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量剔除所述目录中的条目;以及
发送消息,以无效来自所述特定高速缓存的所述特定数据块。
23.如权利要求14所述的目录,其中所述目录控制器进一步用于:
基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量剔除所述目录中的条目;以及
发送消息,以无效包括来自所述特定高速缓存的所述特定数据块的页。
24.如权利要求14所述的目录,其中所述目录控制器进一步用于基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量将所述请求发送至存储器控制器。
25.一种多处理器架构中的晶片,所述晶片包括:
第一片,其包括第一高速缓存和第一处理器;
第二片,其包括第二高速缓存和第二处理器;
目录,其被配置为与所述第一片和第二片通信,所述目录包括存储器和目录控制器,所述目录控制器用于:
接收针对特定数据块的请求;
确定与包括所述特定数据块的数据块被存储在所述晶片中的一个或多个高速缓存中的可能性相关的老化阈值;
分析所述存储器以识别指示为存储所述特定数据块的特定高速缓存;
分析所述存储器以识别对于所述特定高速缓存在第一时间和第二时间之间的高速缓存缺失数量;
分析所述存储器以识别针对所述特定数据块的事件发生时的时间;以及
基于所述老化阈值、所述事件的时间以及所述高速缓存缺失数量,确定是否将针对所述特定数据块的请求发送至所述特定高速缓存。
26.如权利要求25所述的晶片,其中所述事件的时间基于包括所述特定高速缓存中的所述特定数据块的页上的事件,或者基于所述晶片中的另一高速缓存中的事件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/055502 WO2014042649A1 (en) | 2012-09-14 | 2012-09-14 | Cache coherence directory in multi-processor architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104781797A true CN104781797A (zh) | 2015-07-15 |
CN104781797B CN104781797B (zh) | 2017-05-31 |
Family
ID=50275713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280077067.4A Active CN104781797B (zh) | 2012-09-14 | 2012-09-14 | 多处理器架构中的高速缓存一致性目录 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9053057B2 (zh) |
CN (1) | CN104781797B (zh) |
WO (1) | WO2014042649A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101638064B1 (ko) | 2013-02-11 | 2016-07-08 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 캐시 제거 통지를 디렉토리로 수집 |
US9477426B2 (en) * | 2013-10-01 | 2016-10-25 | Hitachi, Ltd. | Storage system and storage method |
FR3022653B1 (fr) * | 2014-06-20 | 2017-10-13 | Bull Sas | Reduction des evictions dans les repertoires de gestion de memoire cache |
US9501419B2 (en) * | 2014-10-08 | 2016-11-22 | HGST Netherlands B.V. | Apparatus, systems, and methods for providing a memory efficient cache |
GB2539383B (en) * | 2015-06-01 | 2017-08-16 | Advanced Risc Mach Ltd | Cache coherency |
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 |
US10042766B1 (en) | 2017-02-02 | 2018-08-07 | Arm Limited | Data processing apparatus with snoop request address alignment and snoop response time alignment |
US11360906B2 (en) | 2020-08-14 | 2022-06-14 | Alibaba Group Holding Limited | Inter-device processing system with cache coherency |
WO2024172428A1 (ko) * | 2023-02-13 | 2024-08-22 | 삼성전자주식회사 | 데이터 캐싱을 위한 전자 장치 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6789173B1 (en) * | 1999-06-03 | 2004-09-07 | Hitachi, Ltd. | Node controller for performing cache coherence control and memory-shared multiprocessor system |
US20060112228A1 (en) * | 2004-11-20 | 2006-05-25 | Xiaowei Shen | Cache line placement prediction for multiprocessor non-uniform cache architecture systems |
CN101004711A (zh) * | 2006-01-18 | 2007-07-25 | 国际商业机器公司 | 多处理器系统和向其提供高速缓存一致性的方法 |
CN101587457A (zh) * | 2008-04-02 | 2009-11-25 | 英特尔公司 | 用于单芯片多处理器的自适应高速缓存组织 |
US20110161346A1 (en) * | 2009-12-30 | 2011-06-30 | Yan Solihin | Data storage and access in multi-core processor architectures |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4322795A (en) * | 1980-01-24 | 1982-03-30 | Honeywell Information Systems Inc. | Cache memory utilizing selective clearing and least recently used updating |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US5940877A (en) * | 1997-06-12 | 1999-08-17 | International Business Machines Corporation | Cache address generation with and without carry-in |
US6263404B1 (en) * | 1997-11-21 | 2001-07-17 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US6421766B1 (en) | 1998-12-16 | 2002-07-16 | Intel Corporation | Method and apparatus for approximated least-recently-used algorithm memory replacement |
US6691297B1 (en) | 1999-03-04 | 2004-02-10 | Matsushita Electric Industrial Co., Ltd. | Method for planning layout for LSI pattern, method for forming LSI pattern and method for generating mask data for LSI |
US6704843B1 (en) | 2000-10-26 | 2004-03-09 | International Business Machines Corporation | Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange |
US6920532B2 (en) | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
US6996676B2 (en) * | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US7024521B2 (en) | 2003-04-24 | 2006-04-04 | Newisys, Inc | Managing sparse directory evictions in multiprocessor systems via memory locking |
US7334089B2 (en) | 2003-05-20 | 2008-02-19 | Newisys, Inc. | Methods and apparatus for providing cache state information |
US7543116B2 (en) | 2006-01-30 | 2009-06-02 | International Business Machines Corporation | Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains |
US8244983B2 (en) | 2006-10-30 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Memory control systems with directory caches and methods for operation thereof |
US7840759B2 (en) | 2007-03-21 | 2010-11-23 | International Business Machines Corporation | Shared cache eviction |
US20090150511A1 (en) | 2007-11-08 | 2009-06-11 | Rna Networks, Inc. | Network with distributed shared memory |
US7953932B2 (en) | 2008-02-13 | 2011-05-31 | International Business Machines Corporation | System and method for avoiding deadlocks when performing storage updates in a multi-processor environment |
US8195881B2 (en) * | 2008-02-26 | 2012-06-05 | International Business Machines Corporation | System, method and processor for accessing data after a translation lookaside buffer miss |
US8190826B2 (en) | 2008-05-28 | 2012-05-29 | Advanced Micro Devices, Inc. | Write combining cache with pipelined synchronization |
US9189282B2 (en) | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
US9582222B2 (en) * | 2009-04-30 | 2017-02-28 | Western Digital Technologies, Inc. | Pre-cache similarity-based delta compression for use in a data storage system |
US8549019B2 (en) | 2009-05-26 | 2013-10-01 | Google Inc. | Dynamically generating aggregate tables |
US8341358B1 (en) | 2009-09-18 | 2012-12-25 | Nvidia Corporation | System and method for cleaning dirty data in a cache via frame buffer logic |
US8407421B2 (en) * | 2009-12-16 | 2013-03-26 | Intel Corporation | Cache spill management techniques using cache spill prediction |
US8667227B2 (en) * | 2009-12-22 | 2014-03-04 | Empire Technology Development, Llc | Domain based cache coherence protocol |
US8463825B1 (en) | 2010-04-27 | 2013-06-11 | Tintri Inc. | Hybrid file system for virtual machine storage |
US8838901B2 (en) | 2010-05-07 | 2014-09-16 | International Business Machines Corporation | Coordinated writeback of dirty cachelines |
US9047194B2 (en) * | 2012-07-18 | 2015-06-02 | Empire Technology Development Llc | Virtual cache directory in multi-processor architectures |
US9411693B2 (en) * | 2012-07-31 | 2016-08-09 | Empire Technology Development Llc | Directory error correction in multi-core processor architectures |
-
2012
- 2012-09-14 CN CN201280077067.4A patent/CN104781797B/zh active Active
- 2012-09-14 US US13/877,422 patent/US9053057B2/en active Active
- 2012-09-14 WO PCT/US2012/055502 patent/WO2014042649A1/en active Application Filing
-
2015
- 2015-04-15 US US14/687,452 patent/US9251072B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6789173B1 (en) * | 1999-06-03 | 2004-09-07 | Hitachi, Ltd. | Node controller for performing cache coherence control and memory-shared multiprocessor system |
US20060112228A1 (en) * | 2004-11-20 | 2006-05-25 | Xiaowei Shen | Cache line placement prediction for multiprocessor non-uniform cache architecture systems |
CN101004711A (zh) * | 2006-01-18 | 2007-07-25 | 国际商业机器公司 | 多处理器系统和向其提供高速缓存一致性的方法 |
CN101587457A (zh) * | 2008-04-02 | 2009-11-25 | 英特尔公司 | 用于单芯片多处理器的自适应高速缓存组织 |
US20110161346A1 (en) * | 2009-12-30 | 2011-06-30 | Yan Solihin | Data storage and access in multi-core processor architectures |
Non-Patent Citations (1)
Title |
---|
贺宁: ""多处理器系统缓存一致性的分析"", 《电子工程师》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2014042649A1 (en) | 2014-03-20 |
US20150220437A1 (en) | 2015-08-06 |
US20140082297A1 (en) | 2014-03-20 |
US9251072B2 (en) | 2016-02-02 |
US9053057B2 (en) | 2015-06-09 |
CN104781797B (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104781797A (zh) | 多处理器架构中的高速缓存一致性目录 | |
US8935478B2 (en) | Variable cache line size management | |
US8271729B2 (en) | Read and write aware cache storing cache lines in a read-often portion and a write-often portion | |
CN102498477B (zh) | Tlb预取 | |
KR101639672B1 (ko) | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 | |
US8015365B2 (en) | Reducing back invalidation transactions from a snoop filter | |
TWI385514B (zh) | 用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體 | |
JP6708019B2 (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
US8352684B2 (en) | Optimal cache replacement scheme using a training operation | |
CN105027091A (zh) | 内存分配加速器 | |
US9990301B1 (en) | Value cache in a computing system | |
CN105453055A (zh) | 多粒高速缓存一致性 | |
EP2224343B1 (en) | Data processing system | |
CN102057359A (zh) | 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路 | |
US7836257B2 (en) | System and method for cache line replacement selection in a multiprocessor environment | |
US20070186045A1 (en) | Cache eviction technique for inclusive cache systems | |
KR102617154B1 (ko) | 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템 | |
CN100514311C (zh) | 用于实现组合式数据/相关性高速缓存的方法和装置 | |
US20120005432A1 (en) | Reducing Cache Probe Traffic Resulting From False Data Sharing | |
JP4851958B2 (ja) | バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置 | |
KR20200088391A (ko) | 공통 메모리 페이지로부터 메모리로의 캐시 라인들의 린싱 | |
US10503642B2 (en) | Cache coherence directory architecture with decoupled tag array and data array | |
JP4335298B2 (ja) | スヌープ制御方法および情報処理装置 | |
CN103902470B (zh) | 读缺失时的处理方法、设备和系统 | |
CN103870395A (zh) | 一种目录维护方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |