CN104407989A - 具有统一标签和片化数据的高速缓冲存储器 - Google Patents
具有统一标签和片化数据的高速缓冲存储器 Download PDFInfo
- Publication number
- CN104407989A CN104407989A CN201410686730.1A CN201410686730A CN104407989A CN 104407989 A CN104407989 A CN 104407989A CN 201410686730 A CN201410686730 A CN 201410686730A CN 104407989 A CN104407989 A CN 104407989A
- Authority
- CN
- China
- Prior art keywords
- core
- data slice
- cache memory
- data
- physically
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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
- G06F2212/284—Plural cache memories being distributed
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
高速缓冲存储器被处理器的N个核共享。高速缓冲存储器包括统一标签部分和被划分成N个数据片的片化数据部分。N个数据片中的每个数据片对于N个核中的各自一个是物理上本地的并且对于其它N-1个核是物理上远程的。N是大于一的整数。对于N个核中的每个核,高速缓冲存储器将由所述核引起的分配偏向于核的物理上本地的片。所述物理上本地的片是N个数据片中的一个并且对于所述核是物理上本地的。
Description
技术领域
本发明涉及高速缓冲存储器、用于高速缓冲存储器的方法以及包括高速缓冲存储器的处理器,并且更具体地,涉及由N个核共享的包括统一标签和片化数据的高速缓冲存储器、用于高速缓冲存储器的方法以及包括高速缓冲存储器的处理器。
背景技术
在当前的具有高速缓冲存储器(cache memory)的多核处理器的设计中,如何保持高速缓冲一致性(cache coherency)和存储器连贯性(consistency)是必须解决的问题。一些实现方式使用共享总线,而另一些使用共享末级高速缓冲(shared last level cache,shared LLC)。一般,共享LLC用在要求高存储器性能的应用中,其中LLC可以是级2或级3高速缓冲存储器。流水线的延时和吞吐量是衡量共享LLC的性能的重要指标。在保持吞吐量高的同时减少延时是合意的。
发明内容
在一个方面中,本发明提供一种由N个核共享的高速缓冲存储器。所述高速缓冲存储器包括统一标签部分和片化(sliced)数据部分,其中片化数据部分被划分成N个数据片(slice)。N个数据片中的每个数据片对于N个核中的各自一个是物理上本地的并且对于其它N-1个核物理上远程的,其中N是大于一的整数。对于N个核中的每个核,高速缓冲存储器将由核引起的分配偏向于核的物理上本地的片,其中,物理上本地的片是N个数据片中的一个并且对于核是物理上本地的。
在另一个方面,本发明提供一种用于由N个核共享的高速缓冲存储器的方法,所述高速缓冲存储器包括统一标签部分和被划分成N个数据片的片化数据部分,其中,N个数据片中的每个数据片对于N个核中的各自一个是物理上本地的并且对于其它N-1个核是物理上远程的,其中N是大于一的整数。所述方法包括响应于来自N个核中的核的对来自高速缓冲存储器的数据的请求,首先存取统一标签部分以确定所述请求的地址是否在统一标签部分中命中,如果所述请求的地址在统一标签部分中命中,则随后存取N个数据片中的一个,并且将来自N个数据片中的被存取的一个的数据返回到核,该步骤具有存取延时,当N个数据片中的被存取的一个数据片是N个数据片中对于核是物理上本地的一个数据片时的存取延时比当N个数据片中被存取的一个数据片是N个数据片中对核是物理上远程的一个数据片时的存取延时更小。
在又一个方面中,本发明提供一种处理器。所述处理器包括N个核,其中,N是大于一的整数。处理器还包括被集合相联地(set-associatively)布置为M路的高速缓冲存储器。M是至少与N一样大的整数。N个核共享高速缓冲存储器。高速缓冲存储器包括维持N个核之间的数据一致性的统一标签部分。对于M路中的每路和N个核中的每个核,路提供数据给核时有相关延时,其中,相关延时在M路和N个核的不同组合之间变化。对于N个核中的每个核,高速缓冲存储器将关于核的分配偏向于M路中提供数据给核的相关延时最低的路。
附图说明
图1是图示多核处理器的方框图。
图2是图示图1的UTSD LLC 106的方框图。
图3是图示统一标签部分中的条目的方框图。
图4是图示图1的UTSD LLC的替换信息的方框图。
图5是更详细地图示包括其活动监视器的图1的UTSD LLC的方框图。
图6是图示图1的处理器存取UTSD LLC的操作的流程图。
图7是图示图2的UTSD LLC的分派队列的操作的流程图。
图8是图示图1的UTSD LLC执行分配的操作的流程图。
图9是图示图1的UTSD LLC执行从远程的数据片的分配的操作的流程图。
具体实施方式
词汇
本发明中的数据片(或简单而言,片)是被配置为存储从系统存储器缓冲的数据的存储结构。例如,片可以包括存储器单元的阵列。
如果与任何其它核相比,一个片在物理上更靠近一个核,则该片是该核的物理上本地的(或简单而言,本地的)片,这导致了该核与其物理上本地的片之间的延时小于该物理上本地的片与其它核之间的延时。其它片被表示为该核的物理上远程的(或简单而言,远程的)片。
现在参照图1,示出了图示多核处理器100的方框图。处理器100包括多个处理核102、互连108(也被称为总线接口单元108)以及共享的统一标签片化数据(Unified Tag Sliced Data,UTSD)末级高速缓冲(LLC)存储器106。在图1的示例实施例中,有被表示为核0 102-0、核1 102-1、核2 102-2和核3 102-3的四个核102,它们被统称为核102并且一般被单独称为核102。核102-0、102-1、102-2、102-3中的每一个经由各自的加载/存储接口112-0、112-1、112-2、112-3存取UTSD LLC 106,所述加载/存储接口112-0、112-1、112-2、112-3被统称为加载/存储接口112并一般被单独称为加载/存储接口112。总线接口单元108也经由加载/存储接口112-4存取UTSD LLC 106。处理器100是包括系统存储器和外设(未示出)的更大的计算系统(也未示出)的一部分,UTSD LLC 106经由总线接口单元108与所述系统存储器和外设通信。虽然图1的实施例图示了具有四个核102的处理器100,但是具有不同数量的核102的其它实施例是预期的,并且核102的数量可以被认为是N,其中N大于一。而且,虽然图1的实施例图示了高速缓冲存储器106是末级高速缓冲存储器,但是具有不同类型的共享高速缓冲存储器的其它实施例是预期的。
所有核102共享UTSD LLC 106。UTSD LLC 106包括统一标签部分(图2的202),其维持共享UTSD LLC 106的核102之间的数据一致性。然而,UTSD LLC 106的数据存储部分在物理上被划分成N个数据片(图2的206),每个数据片的位置在物理上靠近各自的核102。数据片206离其相应的核102的靠近的物理位置有利地使核102对其物理上靠近的数据片206的存取的延时能够小于核102对其它数据片206的存取的延时。进一步有利地,虽然所有核102都共享UTSD LLC 106,但UTSD LLC 106将由核102引起的分配偏向于其物理上本地的片,所述“物理上本地的片”是N个数据片206中的一个并且在物理上靠近该核102。下面更详细地描述UTSD LLC 106及其操作。
核102-0、102-1、102-2、102-3中的每一个包括其各自的专用高速缓冲存储器分级结构(hierarchy)104-0、104-1、104-2、104-3,它们被统称为专用高速缓冲存储器分级结构104并一般被单独称为专用高速缓冲存储器分级结构104。优选地,专用高速缓冲存储器分级结构104的高速缓冲存储器小于UTSD LLC 106并且具有相对较小的存取延时。核102还包括功能单元,其可以包括但不限于,指令高速缓冲、指令提取单元、分支预测单元、指令解码器、指令翻译器、微代码、结构和非结构寄存器组、重命名单元、重排序缓冲器、保留站、指令分派器以及执行单元,所述执行单元可以包括整数单元、浮点单元、介质单元、分支单元、加载单元和存储单元。各种微结构特征可以被包括在核102中,例如,核102可以是超标量或标量并且可以按顺序或不按顺序运行指令。在一个实施例中,核102实质上符合x86指令集合结构,虽然核102不受限于特定指令集合结构。
现在参照图2,示出了图示图1的UTSD LLC 106的方框图。UTSD LLC106包括统一标签部分202、分派队列204和被划分成多个数据片206的片化数据部分。在图2的示例实施例中,UTSD LLC 106的片化数据部分被划分成被表示为数据片0 206-0、数据片1 206-1、数据片2 206-2和数据片3 206-3的四个数据片206,它们被统称为数据片206并一般被单独称为数据片206。数据片206也被简称为片206。优选地,数据片206的数量对应于核102的数量。
优选地,UTSD LLC 106被布置为具有多路的集合相联的高速缓冲存储器,多路被称为M路,其中M大于一。集体地,数据片206保存(hold)UTSD LLC 106所存储的数据的所有高速缓冲线。统一标签部分202保存与数据片206中保存的数据的高速缓冲线相关联的标签、状态和其它有关信息。优选地,在数据片206当中划分UTSD LLC 106的M路。例如,在N(数据片206的数量)是4且M(路的数量)是16的情况下,则以独占方式给每个数据片206划分4路。例如,路0-3可以被划分给数据片0 206-0,路4-7可以被划分给数据片1 206-1,路8-11可以被划分给数据片2 206-2,并且路12-15可以被划分给数据片3 206-3;然而,统一标签部分202包括全部16路。
每个数据片206是被配置为存储从系统存储器高速缓冲的数据的存储结构。例如,片206可以包括存储器单元的阵列。数据片206中的每一个的位置相对于其它核102而言在物理上更靠近于某个特定的核102。如果片206相对于任何其它核102在物理上更靠近于某个核102,则它对于该核102是物理上本地的(或简单而言,本地的),这导致该核102和它的本地片206之间的延时小于该本地片206和其它核102之间的延时。其它片206被表示为离核102物理上远程(或简单而言,远程)。例如,如果数据片0 206-0相对于核1 102-1、核2 102-2和核3 102-3在物理上更靠近于核0 102-0,则数据片0 206-0对核0 102-0是物理上本地的,这导致核0 102-0和其物理上本地的片206-0之间的延时小于片206-0和其它核102(核1 102-1、核2 102-2或核3 102-3)之间的延时。更具体地,本地的片206与其关联的核102的物理靠近可以使本地的片206和该核102之间的延时能够小于对于所有核具有相同延时的常规统一数据存储结构的延时。
分派队列204接收核102对于存取UTSD LLC 106的请求以及来自统一标签部分202的相关响应214,并将这些请求和响应进行排队。优选地,统一标签部分202是多端口的,并且UTSD LLC 106包括多个标签管线,它们并发地存取统一标签部分202以获得多个并发的响应并且并发地向分派队列204提供多核102请求和其相关响应。如下面特别是针对图7更详细地描述的,分派队列204检查排队的请求以确定何时向数据片206分派请求216。特别地,分派队列204保证在相同时间只有一个数据片206将向一个核102返回数据218。也就是说,分派队列204将请求216分派给数据片206以保证不存在以下将导致冲突的情况:两个或更多个数据片206同时在其各自的接口112上向相同的一个核102返回数据218。相对于包括额外的接口112以允许一个核102同时从多个数据片206接收数据的实施例,该实施例是以性能下降换取所消耗的晶片面积的减少。在一个实施例中,分派队列204包括保存核102存取UTSD LLC 106的请求的单个队列结构。在替换实施例中,分派队列204包括与每个数据片206相关联的各自的队列结构,其保存目的地为对应各个数据片206的核102请求。
如可被观察到的,UTSD LLC 106是分阶段的共享高速缓冲。一般而言,分阶段的共享高速缓冲用延时的增加来换取功耗的减少,这对于相对较大的高速缓冲存储器是重要的,因为它们趋向于消耗相当大量的功率。然而,在此描述的实施例通过将高速缓冲线数据存储切片(slice)成多个数据片206并将本地的片206的位置在物理上靠近其关联核102,以及将关于核102的分配偏向其物理上本地的片206,有利地潜在地减少了总计的核102的共享高速缓冲存储器106的延时。更具体地,响应于一个核102的请求,首先存取统一标签部分202,然后基于来自统一标签部分202的响应存取适当的一个数据片206,如下面针对例如图6所描述的。因为在给定的高速缓冲线中的数据通常被一个核102而不被其它核102存取,并因为UTSD LLC 106将分配偏向该核102的物理上本地的数据片206,以及因为物理上本地的片206比常规的共享的统一数据存储结构的固定延时具有更低的延时,所以这里描述的实施例可以总体上减少多核102从UTSD LLC 106存取延时,与此同时,保持UTSD LLC 106的高吞吐量质量并保持其在核102之间的共享属性。
现在参照图3,示出了图示统一标签部分202中的条目300的方框图。虽然在图3中示出单个条目300,但是应当理解,条目300代表统一标签部分202的所有条目。条目300包括标签302,标签302保存在数据片206之一中保存的相应高速缓冲线的地址的较高位(例如,不用于索引到UTSD LLC106的集合中的位)。将标签302与请求地址212的相应位进行比较以确定是否在UTSD LLC106中发生命中(hit)。条目300还包括相应高速缓冲线的高速缓冲状态304。在一个实施例中,高速缓冲状态304对应于公知的MESI(Modified-Exclusive-Shared-Invalid,修改-独占-共享-无效)协议,虽然其它数据一致协议也可以被采用。
条目300还包括指定哪个数据片206当前保存有数据的相应高速缓冲线的数据片指示符306。如下所述,分派队列204使用从统一标签部分202获得的数据片指示符306值来确定要存取哪个数据片206以读/写数据的高速缓冲线。条目300还包括核标识符字段308,其标识引起分配并将当前数据带入高速缓冲线中的核102。因此,每条高速缓冲线可以被分类为本地的高速缓冲线或远程的高速缓冲线。如果高速缓冲线存在于由核标识符308所标识的核102的物理上本地的片206中,则它是本地的,而如果高速缓冲线存在于由核标识符308所标识的核102的物理上远程的片206中,则它是远程的。当使用片替换位404确定从一个数据片206内的哪些路或高速缓冲线分配时,可以参考核标识符字段308,并且将在图4中描述细节。
现在参照图4,示出了图示图1的UTSD LLC 106的替换信息400的方框图。为UTSD LLC 106维持替换信息400。在一个实施例中,替换信息400被存储在统一标签部分202中。在替换实施例中,替换信息400被存储在与统一标签部分202类似的以集合相联的方式存取和布置的UTSD LLC 106中的独立结构(未示出)中。
替换信息400包括跨片(trans-slice)替换位402。UTSD LLC 106使用跨片替换位402来确定从哪个数据片206分配条目。更具体地,在UTSD LLC 106决定从一个物理上远程的数据片206分配的情况下(例如,在图8的框812处),UTSD LLC 106使用跨片替换位402来确定从哪个物理上远程的数据片206分配。用于选择物理上远程的数据片206的各种方法是可以预期的。例如,在一个实施例中,以轮询方式(on a round-robin basis)选择物理上远程的数据片206。在另一个实施例中,以最近最少使用(LRU)或虚拟最近最少使用(PLRU)为基础选择物理上远程的数据片206。在另一个实施例中,相对于其它物理上远程的数据片206,UTSD LLC 106将对远程的数据片206的选择偏向与引起分配的核102相关延时最低的物理上远程的数据片206。因此,例如,假定:(1)核0 102-0引起分配;(2)数据片1 206-1将数据提供给核0 102-0的相关延时比数据片2 206-2将数据提供给核0 102-0的相关延时少一个时钟周期;以及(3)数据片1 206-1将数据提供给核0 102-0的相关延时比与数据片3 206-3将数据提供给核0 102-0的相关延时小两个时钟周期。在那种情况下,UTSD LLC 106相比于从数据片2 206-2或数据片3 206-3分配更喜欢从数据片1 206-1分配,并且相比于从数据片3 206-3分配更喜欢从数据片2 206-2分配。
替换信息400还包括片0替换位404-0、片1替换位404-1、片2替换位404-2和片3替换位404-3,它们被统称为片替换位404并一般被单独称为片替换位404。每个片替换位404被用来在相关联的数据片206内选择从其分配的一路(way)或一组高速缓冲线。用于选择路的各种方法是预期的。例如,在一个实施例中,轮询地选择路。在另一个实施例中,以LRU或PLRU为基础选择路。在另一个实施例,如果发生高速缓冲未命中(miss)并且所有路都已被占用,则在这种情况下,必须在分配之前执行逐出(eviction)。每个片替换位404根据核标识符字段308选择远程的高速缓冲线来执行逐出。
替换信息400还包括指示符406-0,其指示UTSD LLC 106中当前分配给核0 102-0的路的数量,指示符406-1,其指示UTSD LLC 106中当前分配给核1 102-1的路的数量,指示符406-2,其指示UTSD LLC 106中当前分配给核2 102-2的路的数量,以及指示符406-3,其指示UTSD LLC 106中当前分配给核3 102-3的路的数量。指示符406-0、406-1、406-2和406-3被统称为指示符406并一般被单独称为指示符406。下面特别是针对图8更详细地描述使用替换信息400来在UTSD LLC 106中分配条目。
现在参照图5,示出了更详细地图示包括其活动监视器506的图1的UTSD LLC 106的方框图。UTSD LLC 106包括活动监视器506和计数器。计数器包括片0加载计数器502-0、片1加载计数器502-1、片2加载计数器502-2和片3加载计数器502-3,它们被统称为片加载计数器502并一般被单独称为片加载计数器502。在一个实施例中,每个片加载计数器502对其相应数据片206读取请求的数量进行计数。读取请求包括来自核102的从其相应数据片206读取数据的请求。也就是说,每个片加载计数器502对从数据片206读取的读取请求的数量进行计数。这里是假设核102只从UTSD LLC 106读取数据而从不将数据写入UTSD LLC 106中,则这个可以优选地被实现。在另一个实施例中,如果核102从UTSD LLC 106读取数据并也将数据写入UTSD LLC 106中,则每个片加载计数器502对对于数据片206的存取(读/写)请求的总数进行计数。
计数器还包括片0逐出计数器504-0、片1逐出计数器504-1、片2逐出计数器504-2和片3逐出计数器504-3,它们被统称为片逐出计数器504并一般被单独称为片逐出计数器504。每个片逐出计数器504对从其相应数据片206逐出高速缓冲线的数量进行计数。如果片逐出计数器504的计数增加,则这个可以指示当写到相应数据片206或从相应数据片206读取时发生未命中的次数相应增加,并且可以指示相应数据片206的存储器空间不足以保存新的高速缓冲线。新的高速缓冲线包括例如,被从核102写入UTSD LLC 106中的高速缓冲线或者从DRAM(例如,在图中未示出的系统存储器)读取的高速缓冲线,其要求旧的高速缓冲线被写回到系统存储器以释放被占用的存储器空间。如果在旧的高速缓冲线中的数据是对于数据片206远程的核102而非物理上本地的核102也需要的,则将旧的高速缓冲线写回到系统存储器会降低性能,因为对于远程的核102,存取系统存储器的延时比存取物理上远程的数据片206更长。
活动监视器506从片加载计数器502和片逐出计数器504接收计数,并从包括图4的替换信息400在内的统一标签部分202接收响应。活动监视器506使用所接收到的信息来确定要从哪个数据片206分配。具体地,活动监视器506基于物理上本地的片206的最近活动决定是从核102的物理上本地的片206还是从核102的物理上远程的片206分配,如下面特别是针对图8更详细地描述的。在一个实施例中,UTSD LLC 106将由核102引起的分配偏向其物理上本地的片206。也就是说,UTSD LLC 106从其物理上本地的片206分配,除非物理上本地的片206的未命中率率超过阈值。在一个实施例中,基于由活动监视器506接收到的来自片加载计数器502和片逐出计数器504的计数确定未命中率。如果物理上本地的片206的未命中率超过阈值,则它可能意味着与物理上本地的片206相对应的核102是忙碌的,并且仅从物理上本地的片206分配不能满足忙碌的核的需要。这个将在下面特别是针对图8更详细地描述。
优选地,片加载计数器502和片逐出计数器504中的计数代表在要求分配的时间之前的最近时段内的存取/逐出的数量。例如,计数可以指示最近的N个时钟周期内的存取/逐出的数量,其中N是可配置值。在一个实施例中,每个数据片206的单个饱和可逆计数器被初始化为作为计数器的最大值的一半的值,并且计数器在每次发生逐出时被递增,而在每次发生命中时被递减;如果在需要分配时(例如,在图8的框802处)计数器已达到其最大值(或超出预定值),则(例如,在图8的判定框804处)UTSD LLC 106判定物理上本地的数据片206的未命中率足够高,以至于考虑从物理上远程的数据片206分配。基于其它测量来确定本地的数据片206的高未命中率的其它实施例是预期的。
现在参照图6,示出了图示图1的处理器100存取UTSD LLC 106的操作的流程图。流程在框602处开始。
在框602处,核102请求从UTSD LLC 106读取数据或将数据写入UTSDLLC 106中。流程进行到框604。
在框604处,UTSD LLC 106响应于核102请求存取统一标签部分202。流程进行到判定框606。
在判定框606处,UTSD LLC 106确定请求的地址是否在统一标签部分202中命中。如果如此,则流程进行到框612;否则,流程进行到框608。
在框608处,UTSD LLC 106为请求的核102分配高速缓冲线。通常,UTSD LLC 106将分配偏向该核的物理上本地的片,具体在图8进行更详细的描述。在一个实施例中,如下面在图8中所述的高速缓冲线分配流程将使得在读取未命中发生时UTSD LLC 106分配高速缓冲线以容纳从DRAM(例如,系统存储器)读取的数据,或者分配高速缓冲线来容纳从核102写入的数据。在一个实施例中,UTSD LLC 106进一步将一未命中的响应返回到核102。流程在框608处结束。
在框612处,UTSD LLC 106根据统一标签部分202所返回的信息确定哪个数据片206当前正保存由核102请求所指定的高速缓冲线。UTSD LLC106然后存取由数据片指示符306所指定的数据片206。在一个实施例中,UTSD LLC 106从数据片指示符306的值确定哪个数据片206当前正保存高速缓冲线。在替换实施例中,UTSD LLC 106基于由统一标签部分202所返回的信息指示命中的路和路划分信息(即,命中的路被划分到N个数据片206中的哪个)的信息来进行确定。流程进行到框614。
在框614处,所存取的数据片206将所请求的数据(当读取时)或者完成响应(当写入时)返回到请求的核102。如上所述,与存取UTSD LLC 106相关联的延时可能会随着哪个数据片206被核102存取而变化。有利地,在核102正从其物理上本地的数据片206接收的情况下,延时被最小化。更具体地说,该延时少于在存储数据的高速缓冲线的统一存储结构的可比较的常规设计中的固定延时。流程在框614处结束。
现在参照图7,示出了图示图2的UTSD LLC 106的分派队列204的操作的流程图。在分派队列204为非空的时间中(例如,在一个时钟周期期间)的给定情况下,分派队列204将来自核102的请求发送到数据片206。优选地,分派队列204被配置为在可能时并发地向数据片206中的每一个分派至少一个请求。优选地从队列的开头开始,分派队列204察看其排队的请求,以确定要分派哪个请求给数据片206。图7描述了分派队列204用来判断是否分派一个给定请求的过程。然而,应当理解,分派队列204针对其它排队的请求并发地进行类似的判断,从而在可能时,分派队列204并发地向多于一个的数据片206发出请求,并且优选地,并发地向所有数据片206发出请求。流程在框702处开始。
在框702处,分派队列204分析想要被分派给数据片206的请求,更具体地,该请求是由统一标签部分202的响应214所返回的数据片指示符306所指定的数据片206的请求。该请求还指定请求数据的核102。分派队列204判断该请求是否会在另一数据片206针对已经被分派给该数据片206的请求而返回数据到请求核102的同时(例如,在相同时钟周期中)返回数据到该请求的核102。例如,假定将数据从核0 102-0的物理上本地的数据片206(数据片0 206-0)提供给核0 102-0的相关延时比将数据从远程的数据片206(例如,数据片3 206-3)提供给核0 102-0的相关延时少三个时钟周期。此外,假定三个时钟周期之前,分派队列204将来自核0 102-0的请求分派到数据片3 206-3,而现在分派队列204正分析来自核0 102-0的到数据片0 206-0的请求。在这种情况下,分派队列204将判断到如果分派队列204将请求分派到数据片0 206-0,则两个数据片206将同时把数据返回到核0 102-0,即到核0102-0的接口112-0上将发生冲突。流程进行到判定框704。
在判定框704处,如果分派请求将导致数据片206与另一数据片206同时将数据返回到请求的核102,则流程进行到框708;否则,流程进行到框706。
在框706处,分派队列204将请求分派给所指定的数据片206。流程在框706处结束。
在框708处,分派队列204延迟向所指定的数据片206分派请求。最后(例如,在紧接着的一个时钟周期中),分派队列204将把该请求分派给数据片206。如以上所讨论的,虽然分派队列204不分派所述请求,但是此时分派队列204可以向数据片206分派另一个排队的请求,具体来说,由另一个核102做出的请求。流程在框708处结束。
如从根据图7的UTSD LLC 106的操作可观察到的,分派队列204以调度方式向数据片206分派请求,从而对于每个核102,一次仅一个数据片206向该核102返回数据,虽然多个核102——包括所有核102——可以同时从不同的数据片206接收数据。
现在参照图8,示出了图示图1的UTSD LLC 106执行分配的操作的流程图。流程在框802处开始。
在框802处,UTSD LLC 106通常响应于UTSD LLC 106中的未命中(miss),确定其需要为高速缓冲线分配条目。未命中在几种情形下发生。例如,当从核102接收到将数据写入UTSD LLC 106中的写请求但没有与请求地址212相对应的UTSD LLC 106的高速缓冲线,并且新的高速缓冲线被分配以容纳来自核102的新数据时,写未命中发生。另举一例,当从核102接收到从UTSD LLC 106读取数据的读请求但没有与请求地址212相对应的UTSD LLC 106的高速缓冲线,并且新的高速缓冲线被分配以容纳从DRAM(例如,系统存储器)读取的数据时,读未命中发生。在核102只从UTSD LLC106读取数据但从不将数据写入UTSD LLC 106的实施例中,未命中只意味着读未命中的情形。分配条目的需要由这里被称为核X的核102之一所作出的请求引起。流程进行到判定框804。
在判定框804,图5的活动监视器506确定核X的物理上本地的数据片206的未命中率是否为高。在一个实施例中,如果与核X相关联的片逐出计数器504和片加载计算器502的值的比率超预定阈值,则核X的物理上本地的数据片206的未命中率为高。如果比率超过预定阈值,则这可能是以下指示:物理上本地的数据片206的路不能满足核X的当前需求,使得应当分配更多的路(即,来自远程的数据片206的路)。上面描述了用于确定核X的本地的数据片206的未命中率是否为高的其它实施例。即使将数据从远程的数据片206提供到核X的相关延时大于将数据从其物理上本地的数据片206提供到核X的相关延时,在这样的情况下通过从远程的数据片206分配而有利地提高性能也是可能的,因为如果逐出的高速缓冲线一旦被远程的核102(例如,核Y)而非核X请求,则核Y从核X的物理上本地的数据片206读取高速缓冲线将比从系统存储器读取它们更高效。如果本地的数据片206的未命中率高,则流程进行到判定框808;否则,流程进行到框806。
在框806处,UTSD LLC 106从核X的本地的数据片206分配。流程进行到框814。
在判定框808处,UTSD LLC 106确定UTSD LLC 106中已经分配给核X的路的数量是否超过阈值,优选地该阈值是可配置的。在一个实施例中,UTSDLLC 106的路的数量是16并且路的阈值数量默认是7。其中在UTSD LLC 106是集合相联的一个实施例中,已经分配给核X的所索引的集合中的路的数量根据与核X相关联的图4的指示符406来确定。在替换实施例中,不存在指示分配给每个核102的路的数量的指示符406;替代地,所索引的集合中已经分配给核X的路的数量通过计数该集合中核标识符308值匹配于核X的核标识符的路(条目)的数量来确定。如果所索引的集合中分配给核X的路的数量超过阈值,则流程进行到框806;否则,流程进行到框812。应当注意,框808是可选步骤并且在一些实施例中可以被省略。
在框812处,UTSD LLC 106从核X的远程的数据片206分配,这针对图9更详细地描述。流程进行到框814。
在框814处,UTSD LLC 106更新每个图4的指示符406以指示分配给每个核102的路的数量。要注意,当UTSD LLC 106中的条目被无效时,指示符406可以被更新。另外,用核X的核标识符值更新核标识符308。流程在框814处结束。
现在参照图9,示出了图示图1的UTSD LLC 106执行从远程的数据片206的分配的操作的流程图。特别地,图9更详细地描述了在图8的框812处的操作。流程在框902处开始。
在框902处,UTSD LLC 106确定从引起分配的核102的哪个远程的数据片206分配。优选地,UTSD LLC 106基于图4的跨片替换位402来这样做。在一个实施例中,当UTSD LLC 106在框812处从远程的片206分配时,相对于其它远程的片206,远程的片替换策略偏向具有用于分配的核102的最低延时的远程的片206。流程进行到框904。在另一个实施例中,根据跨片替换位402轮询地选择物理上远程的数据片206。在另一个实施例中,根据跨片替换位402以LRU或PLRU为基础选择物理上远程的数据片206。
在框904处,UTSD LLC 106基于与在框902处选择的远程的数据片206相关联的图4的替换位404来确定要从所选的远程的数据片206内的哪路分配。流程在框904处结束。
在一个实施例中,本发明的处理器包括:N个核,其中N是大于一的整数;以及被集相联地布置为M路的高速缓冲存储器,其中M是至少与N一样大的整数,其中高速缓冲存储器被N个核共享。高速缓冲存储器包括:在N个核之间维持数据一致性的统一标签部分。对于M路中的每路和N个核中的每个核,路将数据提供给核时有相关延时。相关延时在M路和N个核的不同组合之间变化,并且对于N个核中的每个核,高速缓冲存储器将由该核引起的分配偏向于M路中提供数据给该核的相关延时最低的路。M路被划分为多个数据片,其中,多个数据片中的每个数据片在物理上的位置比相对于任何其它N-1个核在物理上更靠近所述N个核中的一个,并且与向任何其它N-1个核提供数据相比,向所述N个核中的一个提供数据的相关延时更小。高速缓冲存储器还包括分派队列,其中,所述分派队列以调度的方式向N个数据片分派请求,使得对于N个核中的每个核,一次仅N个数据片中的一个向核返回数据。
虽然在这里已经描述了本发明的各种实施例,但是应当理解,它们是作为示例而非限制被呈现。对于相关计算机领域的技术人员将显然的是,可以在不脱离本发明的范围的情况下在其中进行形式和细节上的各种改变。例如,软件可以使能这里描述的装置和方法的例如功能、制造、建模、仿真、描述和/或测试。这可以通过使用通用编程语言(例如,C、C++)、包括Verilog HDL、VHDL等等在内的硬件描述语言(HDL)或者其它可用的程序来实现。这样的软件可以被布置在任何公知的计算机可用介质(诸如磁带、半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等等))、网络、线缆、无线或其它通信介质中。这里描述的装置和方法的实施例可以被包括在半导体知识产权核中,诸如处理器核(例如,用HDL具体化或指定)并在集成电路的生产中被转换成硬件。另外,这里描述的装置和方法可以被具体化为硬件和软件的组合。因此,本发明不应被这里描述的任何示例性实施例限制,而是应当仅按照权利要求及其等效物来定义。具体地,本发明可以在可用于通用计算机中的处理器设备内实现。最终,本领域技术人员应当领会,他们可以容易地使用公开的构思和具体实施例作为设计或变更用于完成本发明相同目的的其它结构的基础而不脱离由所附权利要求所限定的发明的范围。
Claims (20)
1.一种由N个核共享的高速缓冲存储器,所述高速缓冲存储器包括:
统一标签部分;以及
片化数据部分,其中所述片化数据部分被划分成N个数据片,其中所述N个数据片中的每个数据片对于N个核中的各自一个是物理上本地的并且对于其它N-1个核是物理上远程的,其中N是大于一的整数;并且
其中对于所述N个核中的每个核,所述高速缓冲存储器将由该核引起的分配偏向于该核的物理上本地的片,其中所述物理上本地的片是所述N个数据片中的一个并且对于该核是物理上本地的。
2.如权利要求1所述的高速缓冲存储器,其中,响应于来自所述N个核中的核的对来自所述高速缓冲存储器的数据的请求,所述高速缓冲存储器首先存取统一标签部分以确定所述请求的地址是否在所述统一标签部分中命中,如果所述请求的地址在所述统一标签部分中命中,则随后存取所述N个数据片中的所述一个。
3.如权利要求1所述的高速缓冲存储器,其中,对于所述N个数据片中的每个数据片,所述数据片将数据返回到对所述数据片是物理上本地的核的延时比所述数据片将数据返回到对所述数据片是物理上远程的其它N-1个核的延时更小。
4.如权利要求1所述的高速缓冲存储器,其中,为了将所述分配偏向所述核的物理上本地的片,所述高速缓冲存储器从所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超过阈值。
5.如权利要求4所述的高速缓冲存储器,其中,所述未命中率包括从所述物理上本地的片的逐出的计数与对所述物理上本地的片的存取请求的计数的比率。
6.如权利要求1所述的高速缓冲存储器,
其中,所述高速缓冲存储器被布置为具有M路的集合相联的高速缓冲存储器;并且
其中,为了将所述分配偏向所述核的物理上本地的片,所述高速缓冲存储器从所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超过第一阈值并且所述M路中已经分配给所述核的数量不超过第二阈值。
7.如权利要求1所述的高速缓冲存储器,
其中,所述高速缓冲存储器被布置为具有M路的集合相联的高速缓冲存储器,其中,所述M路在所述N个数据片当中被划分;
其中,所述高速缓冲存储器维持与所述N个数据片相关联的第一替换信息,并且维持与所述N个数据片中的各自一个相关联的N个第二替换信息;
其中,当从所述N个核中的一个核的物理上远程的数据片之一执行用于所述一个核的分配时,所述高速缓冲存储器使用所述第一替换信息来选择所述物理上远程的数据片之一以用于所述分配;以及
其中,所述高速缓冲存储器使用N个第二替换信息中的与所选的一个物理上远程的数据片相关联的一个第二替换信息来从M路中被划分给前述所选的物理上远程的数据片的路中选择一路来从其分配。
8.如权利要求1所述的高速缓冲存储器,还包括:
分派队列,其以调度的方式向所述N个数据片分派请求,使得对于所述N个核中的每个核,一次仅所述N个数据片中的一个向所述核返回数据。
9.如权利要求8所述的高速缓冲存储器,
其中,所述统一标签部分提供所述N个数据片中的哪一个当前正保存由所述N个核之一所请求的数据的指示;并且
其中,所述分派队列向所述N个数据片中被所述指示所标识的一个数据片分派对于数据的请求。
10.一种用于由N个核共享的高速缓冲存储器的方法,所述高速缓冲存储器包括统一标签部分和被划分成N个数据片的片化数据部分,其中,所述N个数据片中的每个数据片对于N个核中的各自一个是物理上本地的,并且对于其它N-1个核是物理上远程的,其中N是大于一的整数,所述方法包括:
响应于来自N个核中的核的对来自所述高速缓冲存储器的数据的请求,首先存取统一标签部分以确定所述请求的地址是否在所述统一标签部分中命中;
如果所述请求的地址在所述统一标签部分中命中,则随后存取所述N个数据片中的一个;以及
将来自所述N个数据片中被存取的一个数据片的数据返回到所述核,该步骤具有存取延时,当所述N个数据片中被存取的一个数据片是N个数据片中对所述核是物理上本地的一个数据片时的存取延时比当N个数据片中被存取的一个数据片是N个数据片中对于所述核是物理上远程的一个数据片时的存取延时更小。
11.如权利要求10所述的方法,还包括:
将由所述核引起的分配偏向于所述核的物理上本地的片,其中所述物理上本地的片是所述N个数据片中的一个并且对于所述核是物理上本地的。
12.如权利要求11所述的方法,其中,所述将所述分配偏向于所述核的物理上本地的片的步骤包括:
从所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超过阈值。
13.如权利要求12所述的方法,其中,所述未命中率包括从所述物理上本地的片的逐出的计数与对所述物理上本地的片的存取请求的计数的比率。
14.如权利要求11所述的方法,其中,所述高速缓冲存储器被布置为具有M路的集合相联的高速缓冲存储器,其中,所述将所述分配偏向于所述核的物理上本地的片的步骤包括:
从所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超过第一阈值并且所述M路中已经分配给所述核的数量不超过第二阈值。
15.如权利要求11所述的方法,其中,所述高速缓冲存储器被布置为具有M路的集合相联的高速缓冲存储器,其中所述M路在所述N个数据片当中被划分,所述方法还包括:
维持与所述N个数据片相关联的第一替换信息,并且维持与所述N个数据片中的各自一个相关联的N个第二替换信息;以及
通过以下步骤从所述核的物理上远程的数据片之一执行分配:
使用该第一替换信息来选择所述物理上远程的数据片之一用于所述分配;以及
使用所述N个第二替换信息中的与所选的一个物理上远程的数据片相关联的一个第二替换信息来从M路中的被划分给前述所选的物理上远程的数据片的路中选择一路来从其分配。
16.如权利要求11所述的方法,还包括:
以调度的方式向所述N个数据片分派请求,使得对于所述N个核中的每个核,一次仅所述N个数据片中的一个数据片向所述核返回数据。
17.如权利要求10所述的方法,其中,如果所述请求的地址未在所述统一标签部分中命中,则为所述核从所述高速缓冲存储器中分配。
18.一种处理器,包括:
N个核,其中N是大于一的整数;以及
被集合相联地布置为M路的高速缓冲存储器,其中M是至少与N一样大的整数,其中所述高速缓冲存储器被所述N个核共享,其中所述高速缓冲存储器包括:
维持所述N个核之间的数据一致性的统一标签部分;
其中对于所述M路中的每路和所述N个核中的每个核,所述路提供数据给所述核时有相关延时,其中所述相关延时在所述M路和N个核的不同组合之间变化;并且
其中对于所述N个核中的每个核,所述高速缓冲存储器将由该核引起的分配偏向于M路中提供数据给该核的相关延时最低的路。
19.如权利要求18所述的处理器,其中,所述M路被划分为多个数据片,其中,所述多个数据片中的每个数据片的位置比相对于任何其它N-1个核在物理上更靠近所述N个核中的一个,并且与向任何其它N-1个核提供数据相比,向所述N个核中的所述一个提供数据的相关延时更小。
20.如权利要求19所述的处理器,其中,所述高速缓冲存储器还包括分派队列,其中,所述分派队列以调度的方式向所述N个数据片分派请求,使得对于所述N个核中的每个核,一次仅所述N个数据片中的一个数据片向所述核返回数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410686730.1A CN104407989B (zh) | 2014-11-25 | 2014-11-25 | 具有统一标签和片化数据的高速缓冲存储器 |
US14/564,380 US9514051B2 (en) | 2014-11-25 | 2014-12-09 | Cache memory with unified tag and sliced data |
TW103143209A TWI551990B (zh) | 2014-11-25 | 2014-12-11 | 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410686730.1A CN104407989B (zh) | 2014-11-25 | 2014-11-25 | 具有统一标签和片化数据的高速缓冲存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104407989A true CN104407989A (zh) | 2015-03-11 |
CN104407989B CN104407989B (zh) | 2019-02-12 |
Family
ID=52645622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410686730.1A Active CN104407989B (zh) | 2014-11-25 | 2014-11-25 | 具有统一标签和片化数据的高速缓冲存储器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9514051B2 (zh) |
CN (1) | CN104407989B (zh) |
TW (1) | TWI551990B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045960A (zh) * | 2019-11-21 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多像素格式存储的Cache电路 |
CN112395242A (zh) * | 2020-11-30 | 2021-02-23 | 重庆紫光华山智安科技有限公司 | 多芯片控制方法、装置、电子设备和计算机可读存储介质 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015130291A1 (en) * | 2014-02-27 | 2015-09-03 | Empire Technology Development, Llc | Thread and data assignment in multi-core processors |
US10459892B2 (en) | 2014-04-23 | 2019-10-29 | Qumulo, Inc. | Filesystem hierarchical aggregate metrics |
US10095729B2 (en) | 2016-12-09 | 2018-10-09 | Qumulo, Inc. | Managing storage quotas in a shared storage system |
US10884752B2 (en) | 2017-11-29 | 2021-01-05 | International Business Machines Corporation | Slice-based allocation history buffer |
US11360936B2 (en) | 2018-06-08 | 2022-06-14 | Qumulo, Inc. | Managing per object snapshot coverage in filesystems |
US10642657B2 (en) * | 2018-06-27 | 2020-05-05 | The Hong Kong Polytechnic University | Client-server architecture for multicore computer system to realize single-core-equivalent view |
US10534758B1 (en) | 2018-12-20 | 2020-01-14 | Qumulo, Inc. | File system cache tiers |
US11237973B2 (en) | 2019-04-09 | 2022-02-01 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20210014338A (ko) | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법 |
KR20210011176A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 액세스 동작 방법 및 장치 |
KR20210011216A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 메타 데이터 관리 방법 및 장치 |
KR20200119059A (ko) | 2019-04-09 | 2020-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210011201A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
KR20200132047A (ko) * | 2019-05-15 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치 |
CN112148665B (zh) * | 2019-06-28 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
US10795796B1 (en) | 2020-01-24 | 2020-10-06 | Qumulo, Inc. | Predictive performance analysis for file systems |
US10860372B1 (en) | 2020-01-24 | 2020-12-08 | Qumulo, Inc. | Managing throughput fairness and quality of service in file systems |
US11151001B2 (en) | 2020-01-28 | 2021-10-19 | Qumulo, Inc. | Recovery checkpoints for distributed file systems |
US11775481B2 (en) | 2020-09-30 | 2023-10-03 | Qumulo, Inc. | User interfaces for managing distributed file systems |
US11157458B1 (en) | 2021-01-28 | 2021-10-26 | Qumulo, Inc. | Replicating files in distributed file systems using object-based data storage |
US11461241B2 (en) * | 2021-03-03 | 2022-10-04 | Qumulo, Inc. | Storage tier management for file systems |
US11132126B1 (en) | 2021-03-16 | 2021-09-28 | Qumulo, Inc. | Backup services for distributed file systems in cloud computing environments |
US11567660B2 (en) | 2021-03-16 | 2023-01-31 | Qumulo, Inc. | Managing cloud storage for distributed file systems |
US11669255B2 (en) | 2021-06-30 | 2023-06-06 | Qumulo, Inc. | Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations |
US11294604B1 (en) | 2021-10-22 | 2022-04-05 | Qumulo, Inc. | Serverless disk drives based on cloud storage |
US11354273B1 (en) | 2021-11-18 | 2022-06-07 | Qumulo, Inc. | Managing usable storage space in distributed file systems |
US11599508B1 (en) | 2022-01-31 | 2023-03-07 | Qumulo, Inc. | Integrating distributed file systems with object stores |
US11722150B1 (en) | 2022-09-28 | 2023-08-08 | Qumulo, Inc. | Error resistant write-ahead log |
US11729269B1 (en) | 2022-10-26 | 2023-08-15 | Qumulo, Inc. | Bandwidth management in distributed file systems |
US11966592B1 (en) | 2022-11-29 | 2024-04-23 | Qumulo, Inc. | In-place erasure code transcoding for distributed file systems |
US11934660B1 (en) | 2023-11-07 | 2024-03-19 | Qumulo, Inc. | Tiered data storage with ephemeral and persistent tiers |
US11921677B1 (en) | 2023-11-07 | 2024-03-05 | Qumulo, Inc. | Sharing namespaces across file system clusters |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112228A1 (en) * | 2004-11-20 | 2006-05-25 | Xiaowei Shen | Cache line placement prediction for multiprocessor non-uniform cache architecture systems |
CN101065735A (zh) * | 2004-11-24 | 2007-10-31 | 皇家飞利浦电子股份有限公司 | 本地存储器数据的一致性高速缓存 |
US20100250856A1 (en) * | 2009-03-27 | 2010-09-30 | Jonathan Owen | Method for way allocation and way locking in a cache |
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
TW201333820A (zh) * | 2011-12-28 | 2013-08-16 | Intel Corp | 於多核心處理器中的先前存取資料之檢索技術 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834327B2 (en) * | 2002-02-08 | 2004-12-21 | Hewlett-Packard Development Company, L.P. | Multilevel cache system having unified cache tag memory |
US6965972B2 (en) * | 2002-09-25 | 2005-11-15 | International Business Machines Corporation | Real time emulation of coherence directories using global sparse directories |
US7490200B2 (en) * | 2005-02-10 | 2009-02-10 | International Business Machines Corporation | L2 cache controller with slice directory and unified cache structure |
US20110004729A1 (en) * | 2007-12-19 | 2011-01-06 | 3Leaf Systems, Inc. | Block Caching for Cache-Coherent Distributed Shared Memory |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US20130246825A1 (en) * | 2011-03-25 | 2013-09-19 | Research In Motion Limited | Method and system for dynamically power scaling a cache memory of a multi-core processing system |
US8984228B2 (en) * | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
US9323679B2 (en) * | 2012-08-14 | 2016-04-26 | Nvidia Corporation | System, method, and computer program product for managing cache miss requests |
US9361233B2 (en) * | 2013-12-20 | 2016-06-07 | Intel Corporation | Method and apparatus for shared line unified cache |
CN105426319B (zh) * | 2014-08-19 | 2019-01-11 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
-
2014
- 2014-11-25 CN CN201410686730.1A patent/CN104407989B/zh active Active
- 2014-12-09 US US14/564,380 patent/US9514051B2/en active Active
- 2014-12-11 TW TW103143209A patent/TWI551990B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112228A1 (en) * | 2004-11-20 | 2006-05-25 | Xiaowei Shen | Cache line placement prediction for multiprocessor non-uniform cache architecture systems |
CN101065735A (zh) * | 2004-11-24 | 2007-10-31 | 皇家飞利浦电子股份有限公司 | 本地存储器数据的一致性高速缓存 |
US20100250856A1 (en) * | 2009-03-27 | 2010-09-30 | Jonathan Owen | Method for way allocation and way locking in a cache |
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
TW201333820A (zh) * | 2011-12-28 | 2013-08-16 | Intel Corp | 於多核心處理器中的先前存取資料之檢索技術 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045960A (zh) * | 2019-11-21 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多像素格式存储的Cache电路 |
CN111045960B (zh) * | 2019-11-21 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多像素格式存储的Cache电路 |
CN112395242A (zh) * | 2020-11-30 | 2021-02-23 | 重庆紫光华山智安科技有限公司 | 多芯片控制方法、装置、电子设备和计算机可读存储介质 |
CN112395242B (zh) * | 2020-11-30 | 2024-01-30 | 重庆紫光华山智安科技有限公司 | 多芯片控制方法、装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20160147654A1 (en) | 2016-05-26 |
TWI551990B (zh) | 2016-10-01 |
US9514051B2 (en) | 2016-12-06 |
TW201619830A (zh) | 2016-06-01 |
CN104407989B (zh) | 2019-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104407989A (zh) | 具有统一标签和片化数据的高速缓冲存储器 | |
JP6970751B2 (ja) | 行バッファ競合を低減するための動的メモリの再マッピング | |
JP7046669B2 (ja) | 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション | |
CN104272279B (zh) | 具有缓存和转换后备缓冲器的数据处理装置 | |
US8266396B2 (en) | Memory system comprising blocks operable in parallel | |
CN105701022B (zh) | 组相联高速缓存 | |
CN103902474B (zh) | 一种支持固态盘缓存动态分配的混合存储系统和方法 | |
US8645631B2 (en) | Combined L2 cache and L1D cache prefetcher | |
CN104115134B (zh) | 用于管理对复合数据存储设备进行访问的方法和系统 | |
US8838901B2 (en) | Coordinated writeback of dirty cachelines | |
US8683128B2 (en) | Memory bus write prioritization | |
US8793434B2 (en) | Spatial locality monitor for thread accesses of a memory resource | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
US20140143495A1 (en) | Methods and apparatus for soft-partitioning of a data cache for stack data | |
US20170212840A1 (en) | Providing scalable dynamic random access memory (dram) cache management using tag directory caches | |
US7702875B1 (en) | System and method for memory compression | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
CN115168247A (zh) | 用于并行处理器中动态共享存储空间的方法及相应处理器 | |
US20190114205A1 (en) | Apparatus and method for processing thread groups | |
US20180129259A1 (en) | Method and device for processing data | |
US8356141B2 (en) | Identifying replacement memory pages from three page record lists | |
JP2016170729A (ja) | メモリシステム | |
JPWO2008068797A1 (ja) | キャッシュシステム | |
CN114116533B (zh) | 利用共享存储器存储数据的方法 | |
CN111507885B (zh) | 一种基于最佳缓存空间计算的混合图元渲染方法及系统 |
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 | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |