CN1848095A - 在多核心/多线程处理器中高速缓存的公平共享 - Google Patents
在多核心/多线程处理器中高速缓存的公平共享 Download PDFInfo
- Publication number
- CN1848095A CN1848095A CNA2005101215571A CN200510121557A CN1848095A CN 1848095 A CN1848095 A CN 1848095A CN A2005101215571 A CNA2005101215571 A CN A2005101215571A CN 200510121557 A CN200510121557 A CN 200510121557A CN 1848095 A CN1848095 A CN 1848095A
- Authority
- CN
- China
- Prior art keywords
- resource
- cache
- speed cache
- route
- static
- 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
Images
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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
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
技术领域
本发明涉及高速缓冲存储器领域,并且尤其涉及在多资源环境中共享高速缓存。
背景技术
在半导体处理和逻辑设计上的进步已经允许增加可存在于集成电路装置上的逻辑电路数量。结果,计算机系统配置已经从一个系统中的多个集成电路发展成为在单集成电路上能够存储多架构(architecture)状态,这允许并行执行多线程。因此,单芯片(die)可以有多种资源,例如多核心和/或多线程,以并行执行代码。
典型的线程指的是集成电路存储每个线程各自架构状态/上下文(context)的能力,所述线程可以与共享执行资源有关。另外,线程可以指独立的应用、程序或者在硬件线程或核心上执行的软件线程。另一方面,典型的核心指的是与专用执行资源相关联的独立架构状态,所述专用执行资源可以在物理上相邻而逻辑上隔离或者在物理上分开。然而,核心和线程都可以共享在存储器分级体系中的某级(level)高速缓存以及其它单元,例如总线接口,以便与外部装置通信。
在计算机的存储器分级体系中使用一个或多个高速缓冲存储器系统是提高计算机性能的公知技术。传统上,使用过三种类型的高速缓存结构:全相联、k路组相联和直接映射高速缓存结构。在全相联高速缓存结构中,来自主系统存储器的每项信息能够被存储在任何高速缓存项中。相反,在组相联高速缓存中,高速缓存在逻辑上被分解成存储器的k个组,也就是k个路线(way)。基于存储器页中存储器位置的偏移,组相联高速缓存将在逻辑上看到的存储器页中的位置“关联”到k个路线的每个中的相应高速缓存行(line)。因此,每个存储器位置都对应k个路线中的一“组”高速缓存行。类似地,直接映射高速缓存是有效的一种单路组相联高速缓存,它将存储器位置关联到在直接映射高速缓存的一个路线中的高速缓存行。
在存储器传送期间,资源或处理器产生标注(reference)元素位置的存储器地址。术语资源指的是核心、执行核心、硬件线程、软件线程或者其它线程技术。元素是指令或操作数。检验与资源或处理器关联的高速缓存以确定元素是否存在于高速缓存中,或者必须从系统存储器中检索。使用标记(tag)查找、索引等的典型高速缓存工具来确定元素是否存在于高速缓存中。高速缓存命中指的是确定元素存在于高速缓存中。可替代地,如果在高速缓存中不存在所请求的元素,那么导致高速缓存未中(miss),并且从系统存储器中检索元素来替换高速缓存内的高速缓存行的内容。用于为最近的未中腾出空间的替换现有行的过程也被称作高速缓存行牺牲(victimization)。
在多资源中的共享高速缓存允许不同的独立程序线程共享数据和指令,而没有重复高速缓存的未中。然而,如果一个资源牺牲属于另一个资源的大量高速缓存状态,那么共享高速缓存的多资源会导致破坏性干扰。共享单个高速缓存的多资源示例在图1中进行说明。集成电路140包括资源145、资源150和第N个资源155。资源145-155共享存取(access)高速缓存160,所述高速缓存160被组织为具有路线165-168的四路组相联高速缓存。正如可以看到的,资源145-155中的一个例如资源150可以开始独占高速缓存160,并且牺牲大量属于资源145的高速缓存状态。因此,确保多资源间的公平性(fairness)成为重要的考虑事项。
附图说明
本发明通过例子进行说明,并且不打算为附图的图所限制。
图1说明具有共享存取高速缓存的N个资源的集成电路的现有技术的实施例。
图2说明具有执行公平共享高速缓存的N个资源的集成电路的实施例。
图3a说明包括两个资源的集成电路的实施例,所述两个资源使用闭锁机构(blocking mechanism)来共享对高速缓存的存取。
图3b说明包括两个资源的集成电路的实施例,所述两个资源使用屏蔽(mask)作为闭锁机构来共享对高速缓存的存取。
图4说明包括两个资源的集成电路的实施例,所述两个资源使用屏蔽作为闭锁机构来共享对高速缓存的存取,其中计数器和逻辑用于再分配高速缓存的部分。
图5说明包括四个核心的集成电路的实施例,所述四个核心使用屏蔽来共享对高速缓存的存取。
图6说明一个具有微处理器的系统的实施例,所述微处理器具有两个耦合到存储器控制器和系统存储器的核心,所述两个核心中的每个都具有两个线程,其中所述四个线程使用屏蔽来共享对高速缓存的存取。
图7说明共享对高速缓存的存取的方法的流程图的实施例。
图8说明共享对高速缓存的存取的方法的流程图的实施例。
具体实施方式
在下列描述中阐述了许多特定细节,例如资源的特定数量、高速缓存的特定尺寸和结构、以及逻辑的布局的例子,以便提供对本发明的全面理解。然而明显的是,对于本领域技术人员而言,这些特定细节并不是实践本发明所必须采用的。在其它实例中,诸如线程/核心的特定实施方案之类的公知部件或方法以及多线程的技术未被详细描述,以便避免不必要地模糊本发明。
在此描述了一种用于公平存取具有多资源的共享高速缓存的设备和方法,所述多资源例如是多核心、多线程、或者二者。所述方法和设备可以在存储器分级体系结构的任何级中实施。作为示例,它可在微处理器上实施,所述微处理器具有两个多线程核心,即第一和第二多线程核心。术语多线程核心的使用表明每个核心都可以执行多个线程。每个多线程核心都具有专用较低级高速缓存。在这个示例中,在这里所描述的设备和方法可以用于确保公平共享在第一核心上执行的多线程之间的第一核心的专用高速缓存。另外,第一和第二核心可以共享对较高级高速缓存的存取。因此,在这里所描述的方法和设备用于确保公平共享在第一和第二核心之间的较高级高速缓存。
转向图2,说明了一种包括N个资源的集成电路200,所述N个资源共享高速缓存220。集成电路200的示例包括微处理器、协处理器、嵌入式处理器、或者其它包括多计算资源和高速缓存的处理器。在一个实施例中,集成电路200是能够乱序推测性执行的微处理器。该微处理器能够独立于其它微处理器来执行。然而,该微处理器同样可以与其它处理器协力或者合作来操作。
如图2所示,集成电路200包括资源205、资源210和第N个资源215。集成电路200中可用的资源数目的示例包括2、4、6、8、12等。然而,正如在整个讨论中将变得显而易见的,可以存在任何数目的资源。术语资源也称为计算资源、处理资源等,通常是指核心、执行核心、硬件线程、软件线程、隐式线程、显式线程或其它线程技术。术语核心通常包括在集成电路中维持独立的架构状态的逻辑性能,所述架构状态也被称为上下文,其中独立的架构状态与专用执行资源相关。该执行资源不必在物理上分开;事实上,该执行资源可以在核心中被划分。
相反,线程指的是核心或处理器进行两个或多个“线程”控制的能力。因此,在集成电路上的每个线程都可以存储与共享执行资源关联的架构状态/上下文。另外,线程可指独立的应用、程序、或者在硬件线程或核心上执行的软件线程。因此,显然集成电路200可以是多线程处理器、多核心处理器、或者多线程多核心处理器,所有都能够执行多软件线程。
如所描述的,至少资源205和210共享对高速缓存220的存取。高速缓存220可以是如上所述的集成电路220的存储器分级体系结构的任何级的高速缓存。高速缓存220具有多个静态部分,包括静态部分225和静态部分230,以及动态共享部分235。术语静态部分指的是高速缓存的专用部分,例如高速缓存中的至少一路,以及指的是一个或多个资源,例如核心或线程。如所说明的高速缓存220被组织为组相联高速缓存,其具有八路,包括:路线226、227、231、232、和236-239。但是,高速缓存220并不局限于此。通常高速缓存220是静态随机存取存储器(SRAM)或者其它比主系统存储器具有更快速的存取时间的存储器。因此,高速缓存220可以在物理上以任何方式进行组织,以及在逻辑上被组织为组相联高速缓存或者其它组织结构。
这里,将静态部分225分配给资源205,以及将静态部分230分配给资源210。另外,将动态共享部分235分配给资源205和资源210。下面将更详细地讨论动态共享部分235。静态部分225包括路线226和路线227,而静态部分230具有路线231和232;然而,在静态部分中可以存在任何数目的路线。正如从图2中指明静态部分225和静态部分230的分配的线中所示,静态部分225没有被分配给资源210,以及静态部分230没有被分配给资源205。
在一个实施例中,资源205可以对分配给资源210的静态部分230进行存取,以向静态部分230请求并接收元素;然而,资源205不可操作用于牺牲静态部分230。
作为示例,资源205产生标注主系统存储器中的元素位置的线性地址。线性地址的一部分用于对高速缓存220的可能的全部路线中的标记值进行比较,包括路线231和232,以看看元素是否存在于高速缓存220中,即是否有高速缓存“命中”。如果在包括路线231和232的任何路线中有高速缓存命中,则元素被返回到资源205或者与资源205相关的通路以用于执行。但是,如果在高速缓存220中不存在该元素,即高速缓存“未中”,则该元素从主存储器中进行检索。由于静态部分230被分配给资源210,在这个示例中,不允许资源205牺牲静态部分230。因此,当选择路线以用从系统存储器中取出的元素来替换高速缓存的行时,闭锁静态部分230以避免被分配未中,即被资源205牺牲。更具体而言,当选择要牺牲的路线时,对于用从系统存储器中取出的元素的替换可以不选择在路线231和232中的行,这时由资源205启动高速缓存查找。
可以在许多公知的高速缓存替换算法之上执行资源205的闭锁以防止牺牲路线231和232。例如,当高速缓存未中发生时,高速缓存替换算法例如基于时间的算法被用来在高速缓存220中选择路线以替换高速缓存行,或者选择一条路线来将高速缓存未中分配给它。另一种启动它的方法是替换算法用于在高速缓存220中选择一条牺牲的路线。因此,如果由资源205闭锁静态部分230以防止牺牲,则当依据来自资源205的未中来选择在高速缓存220中的路线牺牲时,公知的替换算法用于在静态部分225和动态共享部分235之间作出选择,从而排除选择静态部分230的路线。
前面描述的实施例仅利用两个资源;而集成电路200可以有任何数目的资源。另外,可以允许资源存取或者牺牲分配给另一资源的静态部分。作为示例,如果第N个资源215被分配给路线236和路线237,从而仅剩下路线238和路线239作为动态部分235,则静态部分225和静态部分230就可以被分配给资源205和资源210。
因此,如果第N个资源215要启动导致高速缓存未中的高速缓存查找,那么仅路线236-237(分配给第N个资源215的静态部分)以及路线238-239(动态部分)可能牺牲。然而,如果资源205或资源210启动导致高速缓存未中的高速缓存查找,则路线226、227、231和232(分配给资源205和210的静态部分)以及路线238-239(动态部分)都会牺牲。另外,静态部分可以重叠。例如,分配给资源205的静态部分225包括路线226、227和路线231,而分配给资源210的静态部分230包括路线227、路线231以及路线232。结果,路线227和231在静态部分之间重叠,从而允许资源205和资源210牺牲路线227和231,但不允许第n个资源215牺牲它们。
正如上面的例子所述,所有资源都可以存取动态共享部分235。然而,动态共享部分235可由所有资源存取是不需要的。例如,可使动态共享部分235用于除了要牺牲的资源210之外的所有资源。在一个实施例中,动态共享部分235中路线的数量等于集成电路200中存在的资源数量。作为示例,集成电路200有8个资源,所述资源是核心和/或线程的任何组合。高速缓存220具有16条路线的路线大小。8个资源中的每个都被分配1条路线作为静态部分,总计8个静态部分,动态部分具有8条路线的大小。因此,当8个资源中的任何一个启动导致高速缓存未中的高速缓存查找时,高速缓存的9条路线(1条分配的路线和8条动态共享路线)可用于牺牲。
下面参考图3a,说明了集成电路300的实施例,其具有两个资源:资源305和资源310,它们利用闭锁机构340共享对高速缓存320的存取。闭锁机构340用于闭锁资源以避免牺牲没有分配给启动高速缓存查找的资源的静态部分。闭锁机构340被示出为存在于高速缓存320的外部。然而,闭锁机构可以存在于高速缓存320或没有描述的高速缓存控制逻辑中。
此外,闭锁机构340被说明为布置在集成电路300的资源和高速缓存320的路线之间。而在一个实施例中,闭锁机构340是高速缓存查找和分配过程的一部分,其中闭锁机构340并不是物理上闭锁资源存取高速缓存320,而只是允许高速缓存替换算法从分配给请求高速缓存查找的资源的静态部分和动态部分中选择牺牲路线。因此,闭锁机构340可以被实施为逻辑电路、软件或固件。
作为示例,允许来自资源305的请求查找高速缓存320的所有路线。因此,如果发生高速缓存命中,则即使在分配给资源310的静态部分330中,拥有数据的高速缓存行也被返回给资源305以用于操作。在对命中的替代中,如果所请求的元素没有存在于高速缓存中,或者包含该元素的高速缓存行处于需要更新高速缓存行的高速缓存状态,例如无效或修改的高速缓存状态,则产生未中。在未中的情况下,闭锁机构340闭锁资源305以免牺牲分配给资源310的静态部分330。对闭锁的补充的是,闭锁机构允许资源350牺牲或分配未中给静态部分325和动态共享部分335。相反地,如果资源310要向导致未中的高速缓存320进行请求,那么闭锁机构会闭锁资源310以免牺牲分配给资源305的静态部分325。
转向图3b,示出了闭锁机构340的实施例。在这个实施例中,屏蔽345用作闭锁机构340。屏蔽345包括多个屏蔽位,例如屏蔽位(MB)346-353。如图3b所示,每个屏蔽位对应于高速缓存320的一条路线。然而,屏蔽345并不受限于此。
作为示例,屏蔽345包括3位,每个所示部分1位。因此,如果资源305向高速缓存320请求元素,那么相应于静态部分325的三个位的第一位和相应于动态共享部分335的三个位的第二位允许资源305牺牲静态部分325和动态共享部分335。相应于静态部分330的三个位的第三位闭锁资源305以防止牺牲静态部分330。
至少部分基于资源标识符(ID)307,屏蔽345闭锁资源305以免牺牲高速缓存320的两条路线,其是静态部分330。在一个实施例中,当资源305向高速缓存请求元素时,至少部分基于资源ID 307来生成屏蔽345。根据请求的资源ID307,生成屏蔽345来闭锁资源305以防止牺牲静态部分330。在一个替换的实施例中,屏蔽345是静态屏蔽,它不是由查找生成的。当至少部分基于ID 307确定资源305启动高速缓存查找时,相应于资源305的静态屏蔽用于替换算法来闭锁资源305以防止牺牲静态部分330,所述静态屏蔽被存储在寄存器或其它存储装置中。
在图3b所示的例子中,由资源305向高速缓存320作出请求。至少部分基于ID 307,生成或装载屏蔽345来闭锁资源305以防止牺牲静态部分330,并允许资源305潜在地牺牲静态部分325和动态共享部分335。此外,屏蔽345包括相应于高速缓存320的八条路线的八个屏蔽位。屏蔽位348和349具有第一值来闭锁资源305以免牺牲静态部分330。相应于静态部分325中的两条路线的屏蔽位346和347以及相应于动态共享部分335中的四条路线的屏蔽位350-353具有第二值以允许资源305潜在地牺牲在静态部分325和动态共享部分335中的路线。在图3b中,具有逻辑0的屏蔽位闭锁相应路线以防止被分配高速缓存未中,而逻辑1允许牺牲相应的路线。然而,显而易见的是,逻辑1或其它值可以闭锁存取,而逻辑0或其它值可以允许存取。
屏蔽345还至少部分基于ID 312来闭锁资源310以防止牺牲静态部分325,并允许资源310潜在地牺牲静态部分330和动态共享部分335。正如所说明的,屏蔽345被示出耦合在高速缓存320和集成电路300的资源之间。尽管如此,屏蔽345还可以被耦合到高速缓存320,存在于高速缓存320中,以及存在于与高速缓存320关联的控制逻辑中。如上所述,资源305和315可以是核心、硬件线程、软件线程等。因此,ID 307和312是相应的核心ID、物理线程ID、虚拟线程ID、硬件线程ID、软件线程ID等。
在图4中说明了在图3a和3b所示的集成电路300的实施例,其进一步包括再分配逻辑405。在资源间的高速缓存的进一步公平共享中,未被存取而对其它资源闭锁的高速缓存的空闲部分可以被再分配给高速缓存的动态部分以由其它资源利用。诸如资源305或资源310之类的资源通常能够独立地进入低功率状态、睡眠状态,或者能够足够一贯地命中较低级高速缓存,以使分配给它们的静态部分可以减少或者被完全再分配给动态部分。
计数器350计算由资源305和310进行存取高速缓存的数量。在替换实施方案中,计数器350只跟踪由资源305进行的存取,而另一个未示出的计数器跟踪由资源310进行的存取。高速缓存存取可以是高速缓存查找、命中高速缓存、未中高速缓存、或者对高速缓存中路线的未中的实际分配。逻辑355被耦合到计数器350以从静态部分325再分配部分410到动态共享部分335,如果资源305在一段时间未存取高速缓存320足够的次数的话。
在特定示例中,计数器350计算在一段时间内由资源305进行的存取和由资源310进行的存取。该段时间可以是一段预定时间以及一段可编程的时间。如果在这段时间结束时由资源310进行的存取数量比预定数量少,那么就减少静态部分325一个尺寸(size),而增加动态部分335该尺寸。
在图4中,再分配部分410从静态部分325被再分配给动态共享部分335,从而减少静态部分325一条路线的大小,并增加动态部分335一条路线的大小。正如进一步所说明的,再分配部分410被再分配给动态部分335,此时逻辑355将屏蔽345中的屏蔽位346由0翻转为1。因此,在再分配后,当资源310启动高速缓存查找时,生成具有屏蔽位346等于1的屏蔽345。这允许资源310牺牲再分配部分410以作为动态共享部分335的有效部分。
在上面的示例中,仅再分配了静态部分325的单条路线。然而,在另一个实施方案中,所有静态部分325或者任何比静态部分325更小的部分都可以被再分配。事实上,如果静态部分325包含仅一条路线,则再分配一条路线给动态共享部分335将不会留下分配给资源305的任何静态部分。
计数器350和逻辑355也可操作用于跟踪由资源310进行的存取,并再分配静态部分330的局部给动态共享部分335。另外,在已经再分配部分410后,可操作计数器350和逻辑355将部分410分配回静态部分325。作为跟踪存取的一部分,计数器350可操作来跟踪未中高速缓存。因此,如果计数器350在一段时间内跟踪资源305未中高速缓存320足够的次数,那么逻辑355将部分410分配回静态部分325。作为示例,如果部分410已经被再分配给动态共享部分335,那么在资源305进入睡眠状态后,一唤醒资源305就可以开始存取或者未中高速缓存320。如果计数器350计数足够的存取或未中,则部分410就被分配回资源305。
实质上,无论任何原因,如果资源305没有在一段时间内存取高速缓存320预定的次数,那么就通过再分配静态部分325的部分或全部给动态共享部分335来减少静态部分325的大小。然后,如果资源305唤醒或者由于某种原因开始存取高速缓存320,那么就通过把已经再分配给动态共享部分335的静态部分325的部分或者全部分配回静态部分325来增加静态部分325的大小。
参考图5,说明了具有至少四个核心的集成电路500的实施例,所述核心共享对高速缓存525的存取。核心505、510、515和520分别与核心ID 507、512、517和522相关联。作为示例,当核心515请求查找高速缓存525时,至少部分基于核心ID 517,生成屏蔽560以闭锁核心515来防止牺牲分配给核心505的部分530、分配给核心510的静态部分535、以及分配给核心520的静态部分545。然而,检查高速缓存525中的全部路线以看看是否存在所请求的元素。如果发生了未中,那么屏蔽560允许核心515牺牲分配给核心515的静态部分540和动态共享部分550。
此外,计数器565计数在一段时间内至少核心505对高速缓存525的存取。如果计数器565计算核心505的存取数量少于预定数量,那么逻辑570就将部分530再分配给动态共享部分550。因此,在上述例子中,当核心515对高速缓存525做出另一个请求时,或者核心510、515或520做出请求时,产生屏蔽560,与部分530对应的屏蔽位561为1。这允许核心510、515或520向再分配部分530分配未中,以作为动态共享部分550的一部分。而如果计数器565计算在另一段时间内核心505对高速缓存525存取或未中的数量,则逻辑570将屏蔽位561翻转回来,并将部分530分配回给核心505。
接下来,图6说明具有微处理器600的系统的实施例,所述微处理器具有两个共享对高速缓存620的存取的多线程核心。所示微处理器600通过存储器控制器640与存储器650耦合。存储器控制器640经由互连655与I/O控制器660耦合。虽然存储器控制器640和660常常在不同的集成电路上,但它们通常都被称为芯片组。存储器650是任何的随机存取存储器(RAM)或者动态RAM(DRAM)。作为特定示例,存储器650是双数据速率RAM(DDR RAM)。微处理器600能够乱序推测性和非推测性执行,或者能够仅仅按序执行。仅说明了微处理器600的一小部分。
事实上,微处理器600可以包括但不必需包括下述的任何一个、任何多个或者任何组合:用于与外部设备通信和接口的总线接口单元,用于执行I/O操作的输入/输出环,用于将虚拟存储器地址转换为物理存储器地址的虚拟存储器地址转换单元/缓冲器,用于处理中断的中断控制器,用于预计要推测性执行的分支和指令的分支预测单元,用于辅助取出预测指令和/或操作数的预取单元,用于取出操作数和指令的取出单元,用于译码取出的指令的译码单元,用于重排序要执行的指令和微操作的指令重排序单元,用于存储操作数和结果的寄存器文件,用于串行或并行执行整数运算的算术逻辑单元(ALU),用于串行或并行执行浮点运算的浮点部件(FPU),用于存储单个或多个整数和/或浮点操作数的操作数寄存器,以及通常与微处理器相关的其它逻辑。
在一个实施例中,没有描述线程606和线程608执行公平共享专用于核心605的第一低级高速缓存,而线程611和613执行公平共享专用于核心610的第二低级高速缓存。在这个实施例中,核心605和610共享对较高级高速缓存620的存取。而在图6中,核心605、核心610和在核心605和610上运行的线程606、608、611和613共享高速缓存620。
典型地,地址生成单元用于生成线性地址,而虚拟存储器地址到物理地址的转换器,即转换后备(look-aside)缓冲器(TLB)将虚拟存储器/线性地址转换为存储器中的物理地址。单独的线程和核心可以具有不同的控制寄存器以存储用于转换的不同基值;因此,从线程606和线程611中生成的相同的线性地址实际上可以标注不同的物理地址。在题目为“Use of a Context Identifier in CacheMemory(在高速缓冲存储器中使用上下文标识符)”、序列号为10/104,815的同时待审的申请中讨论了一种使用上下文标识符在来自不同线程的高速缓存的命中和未中之间辨别的解决方案。
作为公平共享高速缓存620的示例,在核心605上的线程608生成线性地址,其标注在存储器650中的元素。通过比较被称为标记的线性地址的部分和存储在高速缓存620中的标记,在高速缓存620中进行高速缓存查找。具体而言,如果线性地址的偏移量与高速缓存620中的组“相关”,那么检查该组中所有高速缓存行以看看是否存在该元素。如果在高速缓存620中存在该元素并且包含该元素的高速缓存行处于可操作的高速缓存状态,例如专用高速缓存状态,则发生高速缓存命中。接着该元素被放置在由线程608指示的操作数寄存器中,或者否则被返回以用于由线程608进行操作。
然而,如果该元素没有存在于高速缓存620中,或者包含该元素的高速缓存行处于不可操作的状态,例如无效状态,那么选择高速缓存620中的路线来将未中分配给它。依据查找并至少部分基于线程ID 609来生成屏蔽615。只分配给线程608一条路线,如相应于静态分配部分625中路线的逻辑1值所指示。因此,普通高速缓存替换算法可以在单分配路线和动态共享部分630中的四条路线之间进行选择来牺牲。然后从存储器650中取出该元素,并且更新选择要牺牲的路线中相应的高速缓存行。
转向图7,说明了一种共享对高速缓存的存取的方法的框图的实施例。在框705中,产生与预定在第一资源上执行的指令相关的地址,该地址标注元素的存储器位置。作为示例,该地址是线性地址,其通过与来自存储在与第一资源相关的寄存器中值的偏移量来标注存储器位置。元素通常是指令、操作数、或者通常存储在存储器中的其它东西。然后,在框710中,向高速缓存请求该元素。向高速缓存请求该元素可以是任何启动在高速缓存中查找的动作。
在框715中,确定元素是否存在于高速缓存中。如果产生线性地址,则确定元素是否存在于高速缓存中包括比较线性地址的部分和存储在高速缓存中的标记值。在一些实施方案中,同样需要线性地址被完全译码,并检查高速缓存行以确定元素是否存在于该高速缓存中。作为示例,检查该高速缓存的全部路线以确定元素是否存在于该高速缓存中。
如果元素没有存在于高速缓存中,即高速缓存未中,那么在框725中允许第一资源牺牲分配给第一资源的高速缓存的至少第一路线以及由至少第一资源和第二资源共享的高速缓存的至少第二路线。另外,在框730中,闭锁第一资源以防止牺牲分配给第二资源的高速缓存的至少第三路线。在一个实施例中,允许第一资源牺牲至少第一和第二路线并闭锁第一资源以免牺牲至少第三路线是至少部分基于第一资源ID的。根据请求的资源ID,屏蔽或其它闭锁机构允许或闭锁基于所请求资源的ID的存取。因此,依据选择分配未中的路线、使用普通高速缓存替换算法,在高速缓存的至少第一路线和第二路线之间作出选择,从而闭锁分配给第二资源的第三路线以免选择。
在图8中说明一种共享对高速缓存的存取的方法的框图的另一个实施例。在框805中,高速缓存的第一路线被分配给多个计算资源的第一计算资源,每个计算资源被分配高速缓存的至少一条路线。在框810中,将高速缓存的动态共享部分分配给多个计算资源。作为一个示例,通过闭锁机构来将路线分配给资源。无论闭锁机构是被静态地存储还是依据高速缓存查找而产生,闭锁机构都“分配”或者使每个计算资源与静态部分相关联,以及将动态部分分配给多个计算资源。
在框815中,计数在一段时间内由第一计算资源进行存取高速缓存的数量。在一个实施例中,存取仅仅是在高速缓存中的查找。作为另一个示例,存取是在高速缓存中的查找,其导致高速缓存未中。该段时间是预定的时间段。接着在框820中,如果由第一计算资源在第一段时间内进行存取的数量少于预定数量,则第一路线被再分配给高速缓存的动态共享部分。如果在该段时间结束时计数器没有计数到第一计算资源的预定数量的存取,那么计数器失败(trip),这可以包括发送信号或者提供指示第一计算资源还没有存取高速缓存至少预定次数的逻辑值。基于该失败信号或者逻辑值,第一路线被再分配。在一个实施例中,再分配第一路线包括改变屏蔽中的屏蔽位,其允许多个资源全部牺牲作为动态共享部分的第一路线。
另外,如果由第一计算资源未中高速缓存的第一数目在第二段时间期间出现,则在框825中,第一路线从动态共享部分被分配回至第一计算资源。与再分配操作类似,如果第一计算资源在第二段时间内存取高速缓存规定的数目,那么在上述实施例中被翻转来再分配第一路线给动态共享部分的屏蔽位被翻转回来以将第一路线分配回至第一计算资源。
如上所述的在多资源间公平共享高速缓存允许不同的独立程序线程来共享数据和指令,而不会重复未中。然而,通过为每个资源建立高速缓存的静态部分并允许存取高速缓存的动态部分,破坏性干扰通过确保分配给资源的至少一个静态部分是可用的而被避免。另外,如果资源之一进入低功率状态或者不需要分配给它的许多静态部分,那么使用再分配逻辑来减少静态部分并增加由所有资源共享的动态部分,以避免浪费高速缓存空间的保留。另外,如果已经使它的静态部分减少的计算资源需要更多存取高速缓存,则再分配的静态部分的局部被分配回静态部分以再确保公平共享高速缓存。
在上述的说明书中,已经参考其特定示例性实施例描述了本发明。然而,显而易见的是,在不脱离如所附权利要求书中所述的本发明的较宽的精神和范围的情况下,可以对其作出各种修改和改变。因此,本说明书和附图应在说明性的意义上而不是限制性的意义上来看待。
Claims (56)
1、一种集成电路,包括:
具有多个静态部分和一个动态共享部分的高速缓存;以及
第一数目的计算资源,每个计算资源可操作用来牺牲分配给该计算资源的高速缓存的一个静态部分和所述动态共享部分。
2、权利要求1所述的集成电路,其中第一数目的计算资源是第一数目的核心。
3、权利要求1所述的集成电路,其中第一数目的计算资源是第一数目的线程。
4、权利要求1所述的集成电路,其中第一数目的计算资源包括至少一个核心和至少一个线程。
5、权利要求1所述的集成电路,其中每个计算资源还可操作用来牺牲分配给第一数目的计算资源的另一计算资源的多个静态部分中的至少一个。
6、权利要求1所述的集成电路,还包括计数器,该计数器用于计算在一段时间内每个计算资源存取高速缓存的次数。
7、权利要求6所述的集成电路,还包括耦合到计数器的逻辑,如果计数器计算在一段时间内第一计算资源存取高速缓存的次数少于预定数目,则该逻辑用于把在多个静态部分的第一静态部分中的至少一条路线再分配给动态共享部分,所述多个静态部分被分配给第一数目的计算资源的第一计算资源。
8、权利要求7所述的集成电路,其中存取高速缓存包括向高速缓存请求元素,该元素具有相关的地址。
9、权利要求7所述的集成电路,其中存取高速缓存包括向导致高速缓存未中的地址请求元素。
10、权利要求1所述的集成电路,其中每个计算资源可操作用来牺牲分配给该计算资源的高速缓存的一个静态部分和动态共享部分,包括:
每个计算资源可操作用来依据未中替换在仅分配给计算资源的高速缓存的一个静态部分和动态共享部分中高速缓存的行,并且不可操作用来依据未中替换在分配给另一个计算资源的一个静态部分中高速缓存的行。
11、权利要求10所述的集成电路,其中每个计算资源还可操作用来命中高速缓存的行,所述高速缓存的行存在于分配给该计算资源的高速缓存的一个静态部分、分配给另一个计算资源的一个静态部分以及动态共享部分中。
12、权利要求1所述的集成电路,其中多个静态部分在数目上等于第一数目的计算资源,以及其中高速缓存的动态共享部分在路线上的大小等于第一数目的计算资源。
13、权利要求12所述的集成电路,其中高速缓存具有16条路线的大小,第一数目的计算资源等于8,动态共享部分具有等于高速缓存的8条路线的大小,以及其中总计有8个静态部分,每个静态部分具有等于高速缓存的1条路线的大小。
14、一种微处理器,包括:
具有相关的第一资源标识符(ID)的第一资源;
具有相关的第二资源ID的第二资源;
在逻辑上被组织成多条路线的高速缓存;以及
闭锁机构,
用于至少部分基于第二处理器ID来闭锁第二资源以防止牺牲多条路线的第一数目的路线,
用于至少部分基于第一处理器ID来闭锁第一资源以防止牺牲多条路线的第二数目的路线,以及
用于允许第一和第二资源牺牲多条路线的第三数目的路线。
15、权利要求14所述的微处理器,其中第一和第二资源是核心,以及其中第一和第二资源ID分别是与第一和第二核心相关的核心ID。
16、权利要求14所述的微处理器,其中第一和第二资源是线程,以及其中第一和第二资源ID分别是与第一和第二线程相关的线程ID。
17、权利要求14所述的微处理器,其中第一资源是核心,而第二资源是线程,以及其中第一资源ID是与第一核心相关的核心ID,而第二资源ID是与第二线程相关的线程ID。
18、权利要求14所述的微处理器,其中闭锁机构包括依据至少部分基于下述的高速缓存查找而生成的屏蔽:
第一资源ID,如果第一资源启动高速缓存查找的话;以及
第二资源ID,如果第二资源启动高速缓存查找的话。
19、权利要求18所述的微处理器,其中所述屏蔽包括多个屏蔽位,每个屏蔽位对应于多条路线中的一条。
20、权利要求19所述的微处理器,其中所述对应于多条路线的第一数目路线的多个屏蔽位中的每个具有第一值,用于至少部分基于第二资源ID来闭锁第二资源以防止牺牲第一数目的路线,如果第二资源启动高速缓存查找的话。
21、权利要求20所述的微处理器,其中所述对应于第二和第三数目的路线的多个屏蔽位中的每个具有第二值,用于至少部分基于第二资源ID来允许第二资源牺牲第二和第三数目的路线,如果第二资源启动高速缓存查找的话。
22、权利要求21所述的微处理器,其中所述高速缓存在逻辑上被组织成8条路线,路线的第一数目是2,路线的第二数目是2,路线的第三数目是4,以及其中屏蔽包括8个屏蔽位。
23、权利要求22所述的微处理器,其中对应于第一数目的2条路线的两个屏蔽位具有逻辑值0,用于闭锁第二资源以防止牺牲第一数目的2条路线,对应于第二数目的2条路线的两个屏蔽位具有逻辑值1,用于允许第二资源牺牲第二数目的2条路线,以及对应于第三数目的4条路线的四个屏蔽位具有逻辑值1,用于允许第二资源牺牲第三数目的4条路线,如果第二资源启动高速缓存查找的话。
24、权利要求23所述的微处理器,还包括:
计数器,用于计算在一段时间内由第二资源进行存取高速缓存的数目,以及
耦合到该计数器的逻辑,如果在该段时间内存取的数目少于可编程的数目,则该逻辑用于将第二数目的2条路线中的至少一条路线再分配给第三数目的4条路线。
25、一种装置,包括:
高速缓存;
第一计算资源,用于存取高速缓存的第一静态分配部分和高速缓存的动态部分;
第二计算资源,用于存取高速缓存的第二静态分配部分和高速缓存的动态部分;
计数器,用于计算由第一计算资源在一段时间内存取高速缓存的第一数目和由第二计算资源在该段时间内存取高速缓存的第二数目;以及
逻辑,可操作用于
如果在该段时间结束时存取的第一数目少于预定数目,则减少高速缓存的第一静态分配部分一个尺寸,并增加高速缓存的动态部分该尺寸,以及
如果在该段时间结束时存取的第二数目少于预定数目,则减少高速缓存的第二静态分配部分该尺寸,并增加高速缓存的动态部分该尺寸。
26、权利要求25所述的装置,其中从由核心、硬件线程和软件线程组成的组中选择出第一和第二计算资源。
27、权利要求25所述的装置,其中所述高速缓存被组织成多条路线,以及其中高速缓存的第一静态分配部分包括多条路线中的第一路线,以及高速缓存的第二静态分配部分包括多条路线的第二路线。
28、权利要求27所述的装置,其中减少高速缓存的第一静态分配部分一个尺寸并增加高速缓存的动态部分该尺寸包括将第一路线再分配给高速缓存的动态部分,以及其中减少高速缓存的第二静态分配部分该尺寸并增加高速缓存动态部分该尺寸包括将第二路线再分配给高速缓存的动态部分。
29、权利要求28所述的装置,其中逻辑还可操作用于依据第一计算资源未中高速缓存的预定数目来将第一路线分配回给高速缓存的第一静态分配部分,以及其中逻辑进一步可操作用于依据第二计算资源未中高速缓存的预定数目来将第二路线分配回给高速缓存的第二静态分配部分。
30、权利要求25所述的装置,其中存取高速缓存包括产生要检索的元素的地址并比较该地址的一部分和在高速缓存中的标记值。
31、权利要求25所述的装置,其中存取高速缓存包括向导致高速缓存未中的地址请求元素。
32、一种系统,包括:
系统存储器,包括存储元素的多个存储器位置,每个存储器位置用物理地址来标注;以及
耦合到系统存储器的微处理器,包括
地址转换单元,用于将虚拟存储器地址转换成物理地址,所述物理地址标注多个存储器位置,
高速缓存,其在逻辑上被组织成多条路线,以存储最近从多个存储器位置中取出的元素,
多个资源,其被分配多条路线的动态共享第一数目的路线,其中每个资源还被分配多条路线的静态第二数目的路线,以及
逻辑,用于如果第一资源在一段时间内没有存取高速缓存预定次数,则将分配给多个资源的第一资源的静态第二数目的路线中的至少一个再分配给动态共享第一数目的路线。
33、权利要求32所述的系统,其中系统存储器是随机存取存储器芯片。
34、权利要求32所述的系统,其中所述元素是从由指令、操作数和数据操作数组成的组中选出的。
35、权利要求32所述的系统,其中地址转换单元包括转换后备缓冲器(TLB)。
36、权利要求32所述的系统,其中高速缓存在逻辑上被组织为组相联高速缓存。
37、权利要求32所述的系统,其中多个资源是多个多线程核心。
38、权利要求37所述的系统,其中有四个多线程核心,以及高速缓存具有8条路线。
39、权利要求38所述的系统,其中动态共享第一数目的路线等于4,以及其中分配给四个多线程核心中的每个的静态第二数目的路线等于1。
40、一种方法,包括:
产生与预定在第一资源上执行的指令相关的地址,该地址标注一个元素的存储器位置;
向高速缓存请求该元素;
确定该元素是否存在于该高速缓存中;以及
如果该元素未存在于该高速缓存中,
允许第一资源牺牲分配给第一资源的高速缓存的至少第一路线以及由至少第一资源和第二资源共享的高速缓存的至少第二路线,以及
闭锁第一资源以防止牺牲分配给第二资源的高速缓存的至少第三路线。
41、权利要求40所述的方法,其中允许第一资源牺牲至少第一路线和至少第二路线是至少部分基于与第一资源相关的第一资源标识符(ID)的。
42、权利要求41所述的方法,其中闭锁第一资源以防止牺牲至少第三路线是至少部分基于第一资源ID的。
43、权利要求42所述的方法,其中至少部分基于第一资源ID来允许第一资源牺牲至少第一路线和至少第二路线包括:
至少部分基于请求的资源ID,确定第一资源是否向高速缓存请求元素;
至少产生分别相应于第一和第二路线的第一和第二屏蔽位,第一和第二屏蔽位具有第一逻辑值,用于允许第一资源牺牲第一和第二路线,如果第一资源请求元素的话。
44、权利要求43所述的方法,其中至少部分基于第一资源ID来闭锁第一资源以防止牺牲分配给第二资源的高速缓存的至少第三路线包括:
产生相应于第三路线的第三屏蔽位,第三屏蔽位具有第二逻辑值,用于闭锁第一资源以防止牺牲第三路线,如果第一资源请求元素的话。
45、权利要求43所述的方法,其中闭锁第一资源以防止牺牲第三路线包括不允许第一资源分配未中给第三路线,以及其中允许第一资源牺牲第一和第二路线包括允许第一资源分配未中给第一或者第二路线。
46、权利要求44所述的方法,其中第一值是逻辑1,而第二值是逻辑0。
47、权利要求40所述的方法,其中第一和第二资源是核心。
48、权利要求40所述的方法,其中第一和第二资源是线程。
49、权利要求40所述的方法,还包括如果元素存在于第一、第二或第三路线中,则将该元素返回到第一资源。
50、权利要求40所述的方法,其中元素是从由指令、操作数、数据操作数和二进制值组成的组中选择出的。
51、一种方法,包括:
将高速缓存的第一路线分配给多个计算资源的第一计算资源,每个计算资源被分配高速缓存的至少一条路线;
将高速缓存的动态共享部分分配给多个计算资源;
计算由第一计算资源在第一段时间内进行存取高速缓存的数目;
如果由第一计算资源在第一段时间内进行存取高速缓存的数目少于预定数目,则将第一路线再分配回给高速缓存的动态共享部分。
52、权利要求51所述的方法,还包括在将第一路线再分配回给高速缓存的动态共享部分后,如果发生第一计算资源在第二段时间内次未中高速缓存第一数目,则将第一路线从动态共享部分分配回给第一计算资源。
53、权利要求52所述的方法,其中未中的第一数目是1。
54、权利要求51所述的方法,其中多个计算资源是从由单个线程核心、多线程核心以及线程组成的组中选出的。
55、权利要求51所述的方法,其中存取高速缓存包括向高速缓存请求元素。
56、权利要求51所述的方法,其中存取高速缓存包括第一计算资源未中高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/026316 | 2004-12-29 | ||
US11/026,316 US7996644B2 (en) | 2004-12-29 | 2004-12-29 | Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1848095A true CN1848095A (zh) | 2006-10-18 |
CN100555247C CN100555247C (zh) | 2009-10-28 |
Family
ID=36613128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101215571A Expired - Fee Related CN100555247C (zh) | 2004-12-29 | 2005-12-29 | 在多核/多线程处理器中高速缓存的公平共享 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7996644B2 (zh) |
CN (1) | CN100555247C (zh) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989236A (zh) * | 2010-11-04 | 2011-03-23 | 浙江大学 | 一种指令缓存锁实现方法 |
US20120297396A1 (en) * | 2011-05-20 | 2012-11-22 | Soft Machines, Inc. | Interconnect structure to support the execution of instruction sequences by a plurality of engines |
CN101303721B (zh) * | 2007-05-02 | 2013-02-13 | Arm有限公司 | 减少共享高速缓存的进程之间的信息泄漏 |
CN103197977A (zh) * | 2011-11-16 | 2013-07-10 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN104272295A (zh) * | 2012-04-30 | 2015-01-07 | 惠普发展公司,有限责任合伙企业 | 地址转换板 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
WO2017190266A1 (zh) * | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN107924399A (zh) * | 2015-12-24 | 2018-04-17 | 株式会社日立制作所 | 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法 |
US9965281B2 (en) | 2006-11-14 | 2018-05-08 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source view data structure by using register template snapshots |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
CN110879748A (zh) * | 2018-09-06 | 2020-03-13 | 阿里巴巴集团控股有限公司 | 一种共享资源分配方法、装置和设备 |
CN111651376A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | 数据读写方法、处理器芯片及计算机设备 |
WO2023155513A1 (zh) * | 2022-02-18 | 2023-08-24 | 腾讯科技(深圳)有限公司 | 虚拟场景的数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195662A1 (en) * | 2005-02-28 | 2006-08-31 | Honeywell International, Inc. | Method for deterministic cache partitioning |
US7398484B2 (en) * | 2005-04-27 | 2008-07-08 | Microsoft Corporation | Memory efficient array transposition via multi pass tiling |
US7640399B1 (en) * | 2006-05-10 | 2009-12-29 | Advanced Micro Devices, Inc. | Mostly exclusive shared cache management policies |
US7529889B2 (en) * | 2006-08-14 | 2009-05-05 | Arm Limited | Data processing apparatus and method for performing a cache lookup in an energy efficient manner |
US8069444B2 (en) * | 2006-08-29 | 2011-11-29 | Oracle America, Inc. | Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors |
US7958320B2 (en) | 2006-12-05 | 2011-06-07 | Intel Corporation | Protected cache architecture and secure programming paradigm to protect applications |
US7991956B2 (en) * | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US7844779B2 (en) * | 2007-12-13 | 2010-11-30 | International Business Machines Corporation | Method and system for intelligent and dynamic cache replacement management based on efficient use of cache for individual processor core |
US8495342B2 (en) * | 2008-12-16 | 2013-07-23 | International Business Machines Corporation | Configuring plural cores to perform an instruction having a multi-core characteristic |
US8589629B2 (en) * | 2009-03-27 | 2013-11-19 | Advanced Micro Devices, Inc. | Method for way allocation and way locking in a cache |
US9311245B2 (en) * | 2009-08-13 | 2016-04-12 | Intel Corporation | Dynamic cache sharing based on power state |
US8838906B2 (en) * | 2010-01-08 | 2014-09-16 | International Business Machines Corporation | Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution |
US9507647B2 (en) | 2010-01-08 | 2016-11-29 | Globalfoundries Inc. | Cache as point of coherence in multiprocessor system |
US8209491B2 (en) * | 2010-04-27 | 2012-06-26 | Symantec Corporation | Techniques for directory server integration |
US8898390B2 (en) | 2011-03-08 | 2014-11-25 | Intel Corporation | Scheduling workloads based on cache asymmetry |
CN102156677B (zh) * | 2011-04-19 | 2014-04-02 | 威盛电子股份有限公司 | 快取存储器存取方法及系统 |
US20130007370A1 (en) * | 2011-07-01 | 2013-01-03 | Oracle International Corporation | Method and apparatus for minimizing working memory contentions in computing systems |
CN103038755B (zh) | 2011-08-04 | 2015-11-25 | 华为技术有限公司 | 多节点系统中数据缓存的方法、装置及系统 |
US9753858B2 (en) | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
US9235524B1 (en) | 2011-12-30 | 2016-01-12 | Emc Corporation | System and method for improving cache performance |
US8930947B1 (en) | 2011-12-30 | 2015-01-06 | Emc Corporation | System and method for live migration of a virtual machine with dedicated cache |
US9053033B1 (en) * | 2011-12-30 | 2015-06-09 | Emc Corporation | System and method for cache content sharing |
US9104529B1 (en) | 2011-12-30 | 2015-08-11 | Emc Corporation | System and method for copying a cache system |
US9009416B1 (en) * | 2011-12-30 | 2015-04-14 | Emc Corporation | System and method for managing cache system content directories |
US9158578B1 (en) | 2011-12-30 | 2015-10-13 | Emc Corporation | System and method for migrating virtual machines |
US8627012B1 (en) | 2011-12-30 | 2014-01-07 | Emc Corporation | System and method for improving cache performance |
KR101355105B1 (ko) * | 2012-01-03 | 2014-01-23 | 서울대학교산학협력단 | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 |
US9223709B1 (en) * | 2012-03-06 | 2015-12-29 | Marvell International Ltd. | Thread-aware cache memory management |
US9092622B2 (en) | 2012-08-20 | 2015-07-28 | Freescale Semiconductor, Inc. | Random timeslot controller for enabling built-in self test module |
US9448942B2 (en) * | 2012-08-20 | 2016-09-20 | Freescale Semiconductor, Inc. | Random access of a cache portion using an access module |
US8984368B2 (en) | 2012-10-11 | 2015-03-17 | Advanced Micro Devices, Inc. | High reliability memory controller |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
US9367472B2 (en) | 2013-06-10 | 2016-06-14 | Oracle International Corporation | Observation of data in persistent memory |
KR102347657B1 (ko) * | 2014-12-02 | 2022-01-06 | 삼성전자 주식회사 | 전자 장치 및 이의 공유 캐시 메모리 제어 방법 |
US9996354B2 (en) * | 2015-01-09 | 2018-06-12 | International Business Machines Corporation | Instruction stream tracing of multi-threaded processors |
US10768984B2 (en) | 2015-06-11 | 2020-09-08 | Honeywell International Inc. | Systems and methods for scheduling tasks using sliding time windows |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
US10339064B2 (en) | 2017-03-29 | 2019-07-02 | International Business Machines Corporation | Hot cache line arbitration |
US10489294B2 (en) | 2017-04-05 | 2019-11-26 | International Business Machines Corporation | Hot cache line fairness arbitration in distributed modular SMP system |
US10482016B2 (en) | 2017-08-23 | 2019-11-19 | Qualcomm Incorporated | Providing private cache allocation for power-collapsed processor cores in processor-based systems |
US10613972B2 (en) * | 2017-12-29 | 2020-04-07 | Intel Corporation | Dynamic configuration of caches in a multi-context supported graphics processor |
US10908955B2 (en) * | 2018-03-22 | 2021-02-02 | Honeywell International Inc. | Systems and methods for variable rate limiting of shared resource access |
US11954419B2 (en) * | 2018-10-22 | 2024-04-09 | Siemens Industry Software Inc. | Dynamic allocation of computing resources for electronic design automation operations |
US10884959B2 (en) | 2019-02-13 | 2021-01-05 | Google Llc | Way partitioning for a system-level cache |
US10970217B1 (en) * | 2019-05-24 | 2021-04-06 | Xilinx, Inc. | Domain aware data migration in coherent heterogenous systems |
CN110661862A (zh) * | 2019-09-20 | 2020-01-07 | 网宿科技股份有限公司 | 一种预热资源文件的方法和中心管理系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4503501A (en) * | 1981-11-27 | 1985-03-05 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
US5875464A (en) * | 1991-12-10 | 1999-02-23 | International Business Machines Corporation | Computer system with private and shared partitions in cache |
US6161166A (en) * | 1997-11-10 | 2000-12-12 | International Business Machines Corporation | Instruction cache for multithreaded processor |
US5996055A (en) * | 1997-11-26 | 1999-11-30 | Digital Equipment Corporation | Method for reclaiming physical pages of memory while maintaining an even distribution of cache page addresses within an address space |
US6591347B2 (en) * | 1998-10-09 | 2003-07-08 | National Semiconductor Corporation | Dynamic replacement technique in a shared cache |
US6662173B1 (en) * | 1998-12-31 | 2003-12-09 | Intel Corporation | Access control of a resource shared between components |
US6604174B1 (en) * | 2000-11-10 | 2003-08-05 | International Business Machines Corporation | Performance based system and method for dynamic allocation of a unified multiport cache |
US6792509B2 (en) * | 2001-04-19 | 2004-09-14 | International Business Machines Corporation | Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria |
US6725336B2 (en) * | 2001-04-20 | 2004-04-20 | Sun Microsystems, Inc. | Dynamically allocated cache memory for a multi-processor unit |
US6662272B2 (en) * | 2001-09-29 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
-
2004
- 2004-12-29 US US11/026,316 patent/US7996644B2/en not_active Expired - Fee Related
-
2005
- 2005-12-29 CN CNB2005101215571A patent/CN100555247C/zh not_active Expired - Fee Related
Cited By (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289605B2 (en) | 2006-04-12 | 2019-05-14 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9965281B2 (en) | 2006-11-14 | 2018-05-08 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US10585670B2 (en) | 2006-11-14 | 2020-03-10 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
CN101303721B (zh) * | 2007-05-02 | 2013-02-13 | Arm有限公司 | 减少共享高速缓存的进程之间的信息泄漏 |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
CN101989236B (zh) * | 2010-11-04 | 2012-05-09 | 浙江大学 | 一种指令缓存锁实现方法 |
CN101989236A (zh) * | 2010-11-04 | 2011-03-23 | 浙江大学 | 一种指令缓存锁实现方法 |
US10564975B2 (en) | 2011-03-25 | 2020-02-18 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9990200B2 (en) | 2011-03-25 | 2018-06-05 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934072B2 (en) | 2011-03-25 | 2018-04-03 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US10372454B2 (en) | 2011-05-20 | 2019-08-06 | Intel Corporation | Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines |
US10031784B2 (en) | 2011-05-20 | 2018-07-24 | Intel Corporation | Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines |
US20120297396A1 (en) * | 2011-05-20 | 2012-11-22 | Soft Machines, Inc. | Interconnect structure to support the execution of instruction sequences by a plurality of engines |
TWI548994B (zh) * | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
US9442772B2 (en) * | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN103197977A (zh) * | 2011-11-16 | 2013-07-10 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN103197977B (zh) * | 2011-11-16 | 2016-09-28 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
CN104272295A (zh) * | 2012-04-30 | 2015-01-07 | 惠普发展公司,有限责任合伙企业 | 地址转换板 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source view data structure by using register template snapshots |
US10146576B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US10248570B2 (en) | 2013-03-15 | 2019-04-02 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10255076B2 (en) | 2013-03-15 | 2019-04-09 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US10503514B2 (en) | 2013-03-15 | 2019-12-10 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
CN107924399A (zh) * | 2015-12-24 | 2018-04-17 | 株式会社日立制作所 | 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法 |
US10795826B2 (en) | 2016-05-03 | 2020-10-06 | Huawei Technologies Co., Ltd. | Translation lookaside buffer management method and multi-core processor |
WO2017190266A1 (zh) * | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
CN110879748A (zh) * | 2018-09-06 | 2020-03-13 | 阿里巴巴集团控股有限公司 | 一种共享资源分配方法、装置和设备 |
CN110879748B (zh) * | 2018-09-06 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种共享资源分配方法、装置和设备 |
CN111651376A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | 数据读写方法、处理器芯片及计算机设备 |
CN111651376B (zh) * | 2020-07-06 | 2023-09-19 | Oppo广东移动通信有限公司 | 数据读写方法、处理器芯片及计算机设备 |
WO2023155513A1 (zh) * | 2022-02-18 | 2023-08-24 | 腾讯科技(深圳)有限公司 | 虚拟场景的数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20060143390A1 (en) | 2006-06-29 |
CN100555247C (zh) | 2009-10-28 |
US7996644B2 (en) | 2011-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1848095A (zh) | 在多核心/多线程处理器中高速缓存的公平共享 | |
US8732711B2 (en) | Two-level scheduler for multi-threaded processing | |
US6938252B2 (en) | Hardware-assisted method for scheduling threads using data cache locality | |
EP2542973B1 (en) | Gpu support for garbage collection | |
US6470422B2 (en) | Buffer memory management in a system having multiple execution entities | |
US6173369B1 (en) | Computer system for processing multiple requests and out of order returns using a request queue | |
US7506105B2 (en) | Prefetching using hashed program counter | |
US6223256B1 (en) | Computer cache memory with classes and dynamic selection of replacement algorithms | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
US20100235580A1 (en) | Multi-Domain Management of a Cache in a Processor System | |
US20060059317A1 (en) | Multiprocessing apparatus | |
US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
US20040073758A1 (en) | Low latency memoray system access | |
CN101063957A (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US8019946B2 (en) | Method and system for securing instruction caches using cache line locking | |
US8589627B2 (en) | Partially sectored cache | |
US10831673B2 (en) | Memory address translation | |
WO2018100363A1 (en) | Memory address translation | |
CN111095203A (zh) | 实时寄存器值的集群间通信 | |
US20070180199A1 (en) | Cache locking without interference from normal allocations | |
US6785797B2 (en) | Address predicting apparatus and methods | |
Asiatici et al. | Request, coalesce, serve, and forget: Miss-optimized memory systems for bandwidth-bound cache-unfriendly applications on FPGAs | |
US20240329844A1 (en) | Hardware revocation engine for temporal memory safety | |
Lee et al. | Dirty-block tracking in a direct-mapped DRAM cache with self-balancing dispatch | |
US12039170B2 (en) | Hardware revocation engine for temporal memory safety |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091028 Termination date: 20181229 |