CN100392620C - 用于存储器管理的系统和方法 - Google Patents
用于存储器管理的系统和方法 Download PDFInfo
- Publication number
- CN100392620C CN100392620C CNB2005100650142A CN200510065014A CN100392620C CN 100392620 C CN100392620 C CN 100392620C CN B2005100650142 A CNB2005100650142 A CN B2005100650142A CN 200510065014 A CN200510065014 A CN 200510065014A CN 100392620 C CN100392620 C CN 100392620C
- Authority
- CN
- China
- Prior art keywords
- label
- line
- failure
- prefetch buffer
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
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
技术领域
本发明涉及存储器管理,特别涉及作为高速缓存系统一部分的标签控制(tag controlled)预取缓冲器管理系统。
背景技术
在诸如计算机的处理系统中,要由处理器利用的数据存储在存储器(例如,主存储器,低级存储器)中,并且控制逻辑电路响应由处理器发出的请求而管理存储器与处理器之间的数据传输。存储在主存储器中的数据通常包括要由处理器执行的指令和要由处理器操作的数据。为简单起见,除非上下文另外要求,否则指令和真实数据在此统称作“数据”。主存储器访问所花的时间相对于现代处理器的操作速度较长。为了解决此问题,通常在主存储器与处理器之间介入具有较短访问时间的高速缓冲存储器,并且控制逻辑电路管理将从主存储器检索的数据存储在高速缓存中以及将数据从高速缓存提供给处理器。
典型的高速缓存以多条“线(line)”组织,每条线为来自主存储器的数据线提供存储,其中来自主存储器的数据线在长度上可以为很多字节。当处理器发出对包含在页或块内的特定线中的数据的请求时,控制逻辑电路确定该线是否存储在高速缓存中。如果该线存储在高速缓存中(即,存在高速缓存命中(cache hit)),则从高速缓存检索该数据。如果该线未存储在高速缓存中(即,存在高速缓存未命中(cache miss)),则必须从主存储器检索数据,并且在发生该操作时停止处理器。由于高速缓存访问比低级存储器访问快得多,因此显然期望管理该系统以便实现较高的高速缓存命中与高速缓存未命中之比。
存储器延迟对于计算机系统性能成为日益重要的因素。该日益提高的重要性意味着来自最慢芯片上高速缓存的高速缓存失败(cache fault)在性能方面变得更加昂贵。一种减轻该问题的方法是增大高速缓存的大小。增大高速缓存的大小可以提高性能,然而,高速缓冲存储器与较慢的低级存储器相比是昂贵的。因此,尽可能地高效利用高速缓冲存储器空间是重要的。
一种提高高速缓冲存储器系统的效率且减小存储器延迟时间的方法是试图预测处理器请求并且预先从存储器检索数据线。该技术称作预取。预取可以通过注意基准数据流的动态属性如顺序和/或跨越(stride)访问来执行。可选地,预取可以根据所存储的信息来执行。该所存储的信息可能与页内或页间的访问模式或者由编译器和/或编程人员产生的提示相关。
在带有预取的高速缓存结构中,一种常见方法是具有保存已被预取的线的预取缓冲器。具有这样的单独缓冲器避免了由于错误的预取而污染高速缓存。然而,经常难以通过作为正在进行的访问或所存储的信息的函数而确定要预取什么的逻辑来协调该预取缓冲器的内容。另外,搜索预取缓冲器可能需要单个操作的多个关联查询。
发明内容
本发明的一方面是一种用于存储器管理的系统。该系统包括与存储器装置通信的标签控制缓冲器。该存储器装置包括多个页,其分成多条可单独寻址的线。该标签控制缓冲器包括预取缓冲器,其包括来自存储器装置的可单独寻址线的至少之一。标签控制缓冲器还包括与预取缓冲器通信的标签高速缓存。该标签高速缓存包括多个标签,其中每个标签与存储器装置中的一页相关联,并且每个标签包括指向预取缓冲器中的至少一条线的指针。对预取缓冲器中的线的访问由标签高速缓存控制。
本发明的另一方面是一种包括随机存取存储器的用于存储器管理的系统。该随机存取存储器包括至少一条线。每条线与存储器装置中的一页相关联,并且逐线地分配随机存取存储器中的空间。该系统还包括具有多个标签的第一高速缓存装置。每个标签对应于存储器装置中的一页,并且每个标签表示与该标签相关联的至少一条线在随机存取存储器中的位置。
本发明的另一方面是一种用于存储器管理的方法。该方法包括从第一高速缓存装置接收失败通知。该失败通知包括失败页标识符和失败线标识符。访问第二高速缓存装置以确定随机存取存储器中的线是否对应于该失败页标识符和该失败线标识符。该随机存取存储器包括与存储器装置中的页相关联的至少一条线。第二高速缓存装置包括多个标签,其各自对应于存储器装置中的一页,并且每个标签表示与对应于该标签的页相关联的至少一条线在随机存取存储器中的位置。响应导致在随机存取存储器中定位对应于该失败页标识符和该失败线标识符的线的访问,将来自随机存取存储器的对应于该失败页标识符和该失败线标识符的线传输到第一高速缓存装置。在第二高速缓存装置中更新对应于该失败页标识符的标签,以反映该传输。
本发明的另一方面是一种用于存储器管理的方法。该方法包括从请求者接收失败通知。该失败通知包括失败页标识符和失败线标识符。该方法还包括确定对应于该失败页标识符的标签是否位于标签高速缓存中。该标签高速缓存包括多个标签,每个标签包括至少一个指向预取缓冲器中的线的指针,并且标签高速缓存指定至少一条预取线。响应定位到对应于该失败页标识符的标签,将对应于该失败线标识符的线传输给请求者,并且更新对应于该失败页标识符的标签以反映该传输。响应未定位到对应于该失败页标识符的标签,将对应于该失败页标识符的新标签插入到标签高速缓存中。另外,将对应于该失败线标识符的线传输给请求者,并且通过标签高速缓存将包括在新标签中的预取线插入到预取缓冲器中。
本发明的另一方面是一种用于存储器管理的计算机程序产品。该计算机程序产品包括一种存储介质,其可由处理电路读取,并且存储用于由处理电路执行以执行一种包括从请求者接收失败通知的方法的指令。该失败通知包括失败页标识符和失败线标识符。该方法还包括确定对应于该失败页标识符的标签是否位于标签高速缓存中。该标签高速缓存包括多个标签,每个标签包括至少一个指向预取缓冲器中的线的指针,并且标签高速缓存指定至少一条预取线。响应定位到对应于该失败页标识符的标签,将对应于该失败线标识符的线传输给请求者,并且更新对应于该失败页标识符的标签以反映该传输。响应未定位到对应于该失败页标识符的标签,将对应于该失败页标识符的新标签插入到标签高速缓存中。另外,将对应于该失败线标识符的线传输给请求者,并且通过标签高速缓存将包括在新标签中的预取线插入到预取缓冲器中。
附图说明
现在参照附图,其中相同的单元在若干附图中采用相同的附图标记:
图1是根据本发明示例性实施例的包括预取缓冲器和标签高速缓存的高速缓存系统的方框图;
图2示出本发明示例性实施例中的标签内容;
图3是本发明示例性实施例中的用于执行预取的方法的流程图;
图4是可由本发明示例性实施例利用的标签高速缓存的更替逻辑的流程图;以及
图5是预取缓冲器中的存储分配的示例性实施例的方框图。
具体实施方式
本发明的示例性实施例包括具有由标签控制的内容的预取缓冲器。每个标签对应于存储器中的一页。该标签包括页内各线的访问历史,或者对应于该标签的页与其他页之间的访问历史。为了确定来自页的特定线是否在预取缓冲器中,使用标签执行搜索。这些标签包括指向存储在预取缓冲器中的线在预取缓冲器(例如,共享存储器池)中的位置的指针。标签还保存相关引用信息以帮助将来的预取。这些标签控制预取缓冲器中线的存在和/或不存在,并且对预取缓冲器中的线的所有访问都通过标签。该设计的优点是所有搜索都以保存标签的结构为中心,从而避免单个操作的多个关联查询。此外,该设计可以帮助确保最近进入的标签被保证其预取线的空间。
本发明的示例性实施例包括具有第二级(L2)高速缓存、预取缓冲器和包含最近引用的标签的标签高速缓存的存储器系统。标签高速缓存中的每个标签与主存储器或低级存储器中的单独页相关联。在本发明的示例性实施例中,低级存储器内的各个页为四千(4k)字节。标签保存在存储器中,并且在引用预取缓冲器时被访问。搜索与低级存储器中的给定页相关联的标签采用在高速缓冲存储器技术领域内公知的任何方式(例如,通过一致类(congruence class)内的关联搜索)来执行。在本发明的示例性实施例中,为简单起见,假定标签高速缓存是完全关联的。这些标签包括用于预取或更替决策的信息。在本发明的示例性实施例中,这些标签包括有关假如在其一条线上发生了高速缓存失败则应当从页取出什么线的信息、以及一些标志位。预取缓冲器随同标签高速缓存一起统称作标签控制缓冲器(TCB)。
特定事件(例如,对页内的一条线的引用)可导致(例如,从页表)取出页标签并且将其置于标签高速缓存中,从而有可能更替一个或多个其他标签。使用保存在标签中的信息从与该标签以及有可能地来自其他页的标签对应的页预取线。将所取线置于共享预取缓冲器中,其中该共享预取缓冲器可由居于处理器集成电路上的共享存储器池实现。将与标签相关联的预取线置于预取缓冲器中通过由硬件和/或软件维护的空闲空间列表确定的位置上。如果对于预取线没有足够的空间,则从标签高速缓存中删除其他标签,并且将其写回到存储器以便释放足够的空间。另外,从预取缓冲器删除与被删除标签对应的预取缓冲器中的线。由于引用线(即,为了解决L2高速缓存失败),因此可以从缓冲器删除这些线,并且将其置于L2高速缓存中。然后,将预取缓冲器中的这些线所占的空间置于空闲空间列表中。更新所更替的标签,并且将其写回到存储器。
图1是根据本发明示例性实施例的包括L2高速缓存106、低级存储器108、预取缓冲器104、标签高速缓存102和处理器114的示例性高速缓存系统的方框图。为了示例说明起见,假定低级存储器108分成多页,每页为4K字节。另外,假定高速缓存线包含一百二十八(128)字节,从而每页存在三十二(32)线。标签控制缓冲器(TCB)110包括标签高速缓存102和预取缓冲器104。如图1所示,TCB 110与高速缓存106和低级存储器108通信,以允许预取缓冲器将线传输到高速缓存106中,从低级存储器读取数据,并且将标签读取/写入到低级存储器108中。另外,高速缓存106与低级存储器108通信,以在这两者之间传送数据。TCB 110还与处理器114通信。处理器114包括实现在此所述的过程的指令,并且可以在物理上位于可被TCB 110访问的各种装置内(例如,在TCB 110上,在存储器控制器上)。另外,在本技术领域内是公知的,这些指令可以在物理上位于一个或多个处理器114上。
图1所示的标签高速缓存102包括最近引用的TCB标签112,其包括指向预取缓冲器104中的一个或多个位置的指针。另外,TCB标签112可包括与保存在预取缓冲器104中的线相关的其他信息。在本发明的示例性实施例中,标签高速缓存102被组织为标准高速缓存结构,其中TCB标签112的存储分成一组等价类,其中通过等价类搜索TCB标签112。在本技术领域内公知的其他高速缓存结构可以由标签高速缓存102实现。在本发明的示例性实施例中,对预取缓冲器104的内容的访问仅通过标签高速缓存102。
图2示出本发明示例性实施例中的标签内容。TCB标签112存储在标签高速缓存102中,而存储器标签216存储在低级存储器108中。TCB标签112的示例性实施例包括页标识字段202、存在位字段204、历史向量字段206、指针字段208以及标志字段210。页标识字段202包括低级存储器108中的页地址(即真实地址)。存在位字段204为页中的每线都包括一位。如前所述,对于4K的页,由于线为一百二十八(128)字节,因此每页存在三十二(32)线。因此,在存在位字段204中包括有三十二(32)个存在位,其中每位对应于页中的不同线。如果对应线当前包括在预取缓冲器104中,则将存在位设为“1”,而如果对应线当前不包括在预取缓冲器104中,则将存在位设为“0”。
TCB标签112中的历史向量字段206包括关于在过去如何引用了页内的线的信息的集合。当访问TCB标签112并且引用线时,可以更新该字段,并且使用其来帮助确定应当将什么数据包括在预取缓冲器104中。在本发明的示例性实施例中,历史向量字段206被存储为包含三十二(32)个来自该页的最近线引用的历史序列或向量。指针字段208包含表示该页内当前存储在预取缓冲器104中的线的位置。指针字段208包括指向与通过存在位字段204的值确定当前位于预取缓冲器104中的来自该页的每线对应的预取缓冲器位置的指针。标志字段210包括可用于其他目的如页状态的备用位。
当从标签高速缓存102逐出TCB标签112时,将TCB标签112的子集作为存储器标签216存储回到低级存储器108中。图2所示的存储器标签216包括页标识字段202、引用历史字段212和标志字段214。页标识字段202是前面关于TCB标签112所述的相同字段,并且它包括真实地址。在本发明的示例性实施例中,引用历史字段212包括与TCB标签112中的历史向量字段206相同的数据。在可选示例性实施例中,存储器标签216中的引用历史字段212包括TCB标签112中的历史向量字段206的子集和/或不同于其的附加数据。引用历史字段212中的数据可以用来确定当对应于页的标签进入标签高速缓存202时应当预取来自该页的哪些线。标志字段214包含可用于其他目的的备用位。参照图2所述的TCB标签112和存储器标签216是一种实现方法的例子。在本技术领域内是公知的,它们可以通过增加和/或删除字段来修改而不脱离本发明的精神。
图3是本发明示例性实施例中的用于执行预取的方法的流程图。在步骤302,由于引用当前未在高速缓存106中的线,发生高速缓存失败。当发生高速缓存失败时,从预取缓冲器104或者低级存储器108取出失败线。在步骤304,进行检查,以确定与失败线相关联的TCB标签112当前是否在标签高速缓存102中。这通过访问标签高速缓存102并且在页标识字段202中搜索匹配与失败线相关联的页标识的页标识来执行。如上所述,使用标准高速缓存方法来执行搜索,例如执行一致类内的关联搜索。
如果与低级存储器中存储了失败线的页对应的TCB标签112位于签高速缓存102中,则执行步骤306,以将失败线取到高速缓存106中。在存在位字段204中检查对应于失败线的位的值。如果该位值表示失败线位于预取缓冲器中,则将该线移到高速缓存106中并且将其从预取缓冲器中删除。由于对预取缓冲器104的访问通过标签高速缓存102,因此通过将对应于线的位值变至“0”来有效地删除线。另外,可以删除指针字段208中对应于失败线的指针的值,以便从预取缓冲器中删除失败线。可选地,与失败线相关联的位值可以表示失败线当前不位于预取缓冲器中(例如,该位值的值为“0”)。在这种情况下,将失败线从低级存储器直接取到高速缓存106中。一旦将该线取到高速缓存106中,则处理在步骤312结束。
如果在步骤304确定与低级存储器中存储了失败线的页对应的TCB标签112不位于标签高速缓存102中,则执行步骤308,以将与失败线相关联的存储器标签216取到标签高速缓存102中,并且创建与包含失败线的页相关联的TCB标签112。存储器标签216可以位于低级存储器108或高速缓存106中。一旦向标签高速缓存102添加了与失败线相关联的TCB标签112,则如前所述,通过将失败线从低级存储器直接取到高速缓存106中,执行步骤306。一旦将该线取到高速缓存106中,则处理在步骤312结束。在可选示例性实施例中,颠倒执行步骤306和308的次序,从而导致首先将线取到高速缓存106中,然后在标签高速缓存102中创建TCB标签112。在另一个可选示例性实施例中,可以同时执行步骤306和308。
除了步骤306之外,一旦执行了步骤308,如果与失败线相关联的线没有已经包含在高速缓存106或预取缓冲器104中,则执行步骤310,以将关联线取到预取缓冲器104中。在本发明的示例性实施例中,关联线是在TCB标签112的历史向量字段206中具有条目的那些线。在本技术领域内公知的任何用于确定要预取的线的算法可由本发明的示例性实施例实现。这可导致附加的TCB标签112进入标签高速缓存102和/或附加的线进入预取缓冲器104。在步骤310,更新TCB标签112的存在位字段204,以反映包含在预取缓冲器104中的对应线。当步骤310完成时,处理在步骤312结束。
图4是可由本发明示例性实施例利用的标签高速缓存的更替逻辑的流程图。为了简单起见,在描述高速缓存更替逻辑中,假定对于标签高速缓存102采用最近最少使用(LRU)更替算法。在本技术领域内公知的其他高速缓存更替逻辑也可以由本发明的示例性实施例利用。对于LRU更替逻辑,TCB标签112根据它们被引用的新近程度来排序。这里,引用包括读取或修改TCB标签112的操作。在步骤402,通过取出和扩增存储器标签216来创建当前TCB标签112。按照次序将当前TCB标签112插入到标签高速缓存102中的最近最多引用的位置上。可选地,在步骤402,通过读取或修改已经位于标签高速缓存102中的TCB标签112来创建当前TCB标签112。
在步骤404,确定对于TCB标签112,在标签高速缓存102中是否存在足够空间。如果在标签高速缓存102中存在足够空间,则执行步骤406,以如果当前TCB标签112没有已经存在于标签高速缓存102中,则将其插入到标签高速缓存102中,并且处理在步骤412继续。可选地,如果在标签高速缓存102中需要附加空间,则执行步骤410,并且从标签高速缓存102删除最近最少引用的TCB标签112。该删除通过更新TCB标签112以创建存储器标签216并且将存储器标签216写回到低级存储器108来执行。另外,然后将当前保存在预取缓冲器中的由TCB标签112引用的来自该页的线添加到空闲空间列表。在本发明的示例性实施例中,所写回的存储器标签216包括页标识符字段202中的页标识符、引用历史向量字段212中的来自该页的三十二(32)条最近最多引用的线的引用历史向量、以及上述标志位字段214。
接下来,在步骤412,进行检查以确定在预取缓冲器104中对于与当前TCB标签112相关联的当前预取线是否存在足够的空间。如果对于当前预取线存在足够的空间,则执行步骤414,以将当前预取线插入到预取缓冲器104中。如前所述,这通过将向缓冲器添加当前预取线并且更新对应TCB标签112以表示预取缓冲器104中新线的存在(通过将存在位字段204中的对应位设为“1”)和位置(通过更新指针字段208中的数据)来执行。然后,处理在步骤408结束。可选地,如果在步骤412确定对于与当前TCB标签112相关联的当前预取线不存在足够的空间,则执行步骤416以释放预取缓冲器104中的空间。在步骤416,删除TCB标签112和预取缓冲器104中的关联线,直到在预取缓冲器104中对于与当前TCB标签112相关联的当前预取线存在足够的空闲空间为止。这可以采用LRU算法来执行。然后,处理继续到如前所述的步骤414。
图5是预取缓冲器104中的存储分配的示例性实施例的方框图。图5示出包含用于在预取缓冲器104中保存高速缓存线的可用位置列表的空闲空间列表502的操作和使用。当通过删除标签高速缓存102中的条目如上所述释放空间时,将由对应线使用的位置添加到空闲空间列表502。当分配空间时,从空闲空间列表502删除附加空间的位置。不管是硬件和/或软件,在本技术领域内公知的任何数据结构和/或方法都可用来实现空闲空间列表502。例如,空闲空间列表502可以采用链接表和关联逻辑来实现。
本发明的示例性实施例可以与包括与上述具体所述不同的尺寸的页、线、标记和高速缓存的系统一起使用。另外,本发明的示例性实施例不局限于特定级别的高速缓存(例如,如前所述的L2),而是它可以应用于存储分级结构的任何级别。
本发明的示例性实施例包括使预取缓冲器中预取线的位置由标签高速缓存中的标签条目内的指针来指定。该设计的优点是所有搜索都以保存标签的结构为中心,从而避免了单个操作的多个关联查询。这将导致当试图随同居于预取缓冲器中的来自同一页的任何其他线一起访问可能位于预取缓冲器中的高速缓存线时只需一次搜索,不过这需要找到关联标签以及高速缓存线。另外,当从标签高速缓存刷新(flush)标签并且将其写回到存储器时,释放预取缓冲器中其关联线的空间。这可以帮助确保最近进入的标签被保证其关联预取线的空间。
如上所述,本发明的实施例可采取用于执行这些过程的计算机实现过程和装置的形式来实施。本发明的实施例还可采取计算机程序代码的形式来实施,该计算机程序代码包含在有形介质如软盘、CD-R0M、硬盘驱动器或任何其他计算机可读存储介质中实施的指令,其中,当将该计算机程序代码装载到计算机中并且由其执行时,该计算机成为用于实现本发明的装置。本发明的实施例还可以采取例如无论是存储在存储介质中,装载到计算机中并且/或者由其执行,还是在某传输介质上例如在电线或电缆上、通过光纤或者通过电磁辐射而传输的计算机程序代码的形式来实施,当将该计算机程序代码装载到计算机中并且由其执行时,该计算机成为用于实现本发明的装置。当在通用微处理器上实现时,该计算机程序代码段配置微处理器以创建特定逻辑电路。
虽然本发明是参照示例性实施例来描述的,但是本领域的技术人员应当理解,可以进行各种改变并且用等价物代替其单元而不脱离本发明的范围。另外,可以进行很多修改以使特定情形或材料适于本发明的讲授而不脱离其本质范围。因此,本发明不旨在局限于作为被认为是实施本发明的最佳方式而公开的特定实施例,而是本发明应当包括落在所附权利要求的范围内的所有实施例。而且,使用术语第一、第二等不表示任何次序或重要度,而是术语第一、第二等用来相互区分各单元。
Claims (28)
1.一种用于存储器管理的系统,该系统包括:
标签控制缓冲器,其与存储器装置通信,所述存储器装置包括多个页,该页分成多条可单独寻址的线,其中所述标签控制缓冲器包括:
预取缓冲器,其包括来自存储器装置的可单独寻址线的至少之一;以及
标签高速缓存,其与预取缓冲器通信,该标签高速缓存包括多个标签,其中每个所述标签与存储器装置中的一页相关联,每个所述标签包括指向预取缓冲器中的至少一条线的指针,并且对预取缓冲器中的线的访问由标签高速缓存控制。
2.如权利要求1所述的系统,其中访问包括将新线插入到预取缓冲器中、从预取缓冲器删除一条线、以及在预取缓冲器中读取一条线中的至少之一。
3.如权利要求1所述的系统,其中标签控制缓冲器响应来自标签高速缓存的命令将预取缓冲器中的一条线传输到高速缓存装置。
4.如权利要求1所述的系统,其中预取缓冲器由随机存取存储器实现。
5.如权利要求1所述的系统,其中响应从标签高速缓存删除一个标签,删除与标签高速缓存中的该标签对应的预取缓冲器中的所有线。
6.如权利要求1所述的系统,其中该系统还包括实现标签高速缓存中的标签和预取缓冲器中的线的更替算法的装置,其中当将新标签插入到标签高速缓存中时,删除最近最少引用的标签以及预取缓冲器与其相关联的预取线,以为新标签和与新标签相关联的预取线腾出空间。
7.如权利要求6所述的系统,其中将所删除的标签写回到低级存储器。
8.如权利要求6所述的系统,其中将所删除的标签写回到低级存储器,并且低级存储器中的标签包括页标识符字段和引用历史字段。
9.如权利要求8所述的系统,其中低级存储器中的标签还包括标志字段。
10.如权利要求1所述的系统,其中该系统还包括:响应插入、删除和引用预取缓冲器中的线,更新标签高速缓存中的标签的装置。
11.如权利要求1所述的系统,其中该系统还包括:
从高速缓存装置接收失败通知的装置,该失败通知包括失败页标识符和失败线标识符;
访问标签高速缓存以确定预取缓冲器中的一条线是否对应于该失败页标识符和该失败线标识符的装置;
响应在预取缓冲器中定位到对应于该失败页标识符和该失败线标识符的线,将来自预取缓冲器的对应于该失败页标识符和该失败线标识符的线传输到高速缓存装置的装置;以及
更新标签高速缓存以反映该传输的装置。
12.如权利要求1所述的系统,其中标签高速缓存中的每个标签包括页标识符字段、存在位字段、历史向量字段和指针字段。
13.如权利要求12所述的系统,其中标签高速缓存中的每个标签还包括标志字段。
14.一种用于存储器管理的系统,该系统包括:
随机存取存储器,其包括至少一条线,其中每条线与存储器装置中的一页相关联,并且逐线地分配随机存取存储器中的空间;以及
第一高速缓存装置,其包括多个标签,其中每个标签对应于存储器装置中的一页,并且每个标签表示与该页相关联的至少一条线在随机存取存储器中的位置。
15.如权利要求14所述的系统,还包括计算机处理器,该计算机处理器包括响应来自第一高速缓存装置的命令将随机存取存储器中的一条线传输到第二高速缓存装置的装置。
16.如权利要求14所述的系统,其中响应从第一高速缓存装置删除一个标签,删除与第一高速缓存装置中的该标签对应的随机存取存储器中的所有线。
17.如权利要求14所述的系统,还包括计算机处理器,该计算机处理器包括实现第一高速缓存装置中的标签和随机存取存储器中的线的更替算法的装置,其中当将新标签插入到第一高速缓存装置中时,删除最近最少引用的标签以及预取缓冲器与其相关联的预取线,以为新标签和与新标签相关联的预取线腾出空间。
18.如权利要求17所述的系统,其中将所删除的标签写回到低级存储器。
19.如权利要求17所述的系统,其中将所删除的标签写回到低级存储器,并且低级存储器中的标签包括页标识符字段和引用历史字段。
20.如权利要求19所述的系统,其中低级存储器中的标签还包括标志字段。
21.如权利要求14所述的系统,还包括计算机处理器,该计算机处理器包括实现用于响应插入、删除和引用随机存取存储器中的线而更新第一高速缓存装置中的标签的方法的装置。
22.如权利要求14所述的系统,其中第一高速缓存装置中的每个标签包括页标识符字段、存在位字段、历史向量字段和指针字段。
23.如权利要求22所述的系统,其中第一高速缓存装置中的每个标签还包括标志字段。
24.一种用于存储器管理的方法,包括:
从第一高速缓存装置接收失败通知,该失败通知包括失败页标识符和失败线标识符;
访问第二高速缓存装置以确定随机存取存储器中的线是否对应于该失败页标识符和该失败线标识符,其中:
该随机存取存储器包括与存储器装置中的页相关联的至少一条线;
第二高速缓存装置包括多个标签,其各自对应于存储器装置中的一页;以及
每个标签表示与对应于该标签的页相关联的至少一条线在随机存取存储器中的位置;
响应导致在随机存取存储器中定位对应于该失败页标识符和该失败线标识符的线的访问,将来自随机存取存储器的对应于该失败页标识符和该失败线标识符的线传输到第一高速缓存装置;以及
更新第二高速缓存装置中对应于该失败页标识符的标签,以反映该传输。
25.一种用于存储器管理的方法,包括:
从请求者接收失败通知,该失败通知包括失败页标识符和失败线标识符;
确定对应于该失败页标识符的标签是否位于标签高速缓存中,其中该标签高速缓存包括多个标签,每个标签包括至少一个指向预取缓冲器中的线的指针,并且标签高速缓存指定至少一条预取线;
响应定位到对应于该失败页标识符的标签:
将对应于该失败线标识符的线传输给请求者;并且
更新对应于该失败页标识符的标签以反映该传输;以及
响应未定位到对应于该失败页标识符的标签:
将对应于该失败页标识符的新标签插入到标签高速缓存中;
将对应于该失败线标识符的线传输给请求者;并且
将包括在新标签中的预取线插入到预取缓冲器中,其中插入通过标签高速缓存来执行。
26.如权利要求25所述的方法,在确定对应于该失败页标识符的标签是否位于标签高速缓存中的步骤之前,还包括步骤:从存储器装置检索对应于该失败线标识符的线。
27.如权利要求25所述的方法,在确定对应于该失败页标识符的标签是否位于标签高速缓存中的步骤之前,还包括步骤:从预取缓冲器检索对应于该失败线标识符的线,其中由标签高速缓存进行检索。
28.如权利要求25所述的方法,其中请求者是高速缓存装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/709,128 | 2004-04-15 | ||
US10/709,128 US7386679B2 (en) | 2004-04-15 | 2004-04-15 | System, method and storage medium for memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1744058A CN1744058A (zh) | 2006-03-08 |
CN100392620C true CN100392620C (zh) | 2008-06-04 |
Family
ID=35097659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100650142A Expired - Fee Related CN100392620C (zh) | 2004-04-15 | 2005-04-12 | 用于存储器管理的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7386679B2 (zh) |
JP (1) | JP4028875B2 (zh) |
CN (1) | CN100392620C (zh) |
TW (1) | TWI307465B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7010655B1 (en) * | 2003-03-24 | 2006-03-07 | Veritas Operating Corporation | Locking and memory allocation in file system cache |
US7624235B2 (en) * | 2006-11-30 | 2009-11-24 | Apple Inc. | Cache used both as cache and staging buffer |
US7877537B2 (en) * | 2006-12-15 | 2011-01-25 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
CN101558390B (zh) * | 2006-12-15 | 2014-06-18 | 密克罗奇普技术公司 | 用于微处理器的可配置高速缓冲存储器 |
US7966457B2 (en) * | 2006-12-15 | 2011-06-21 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US9208095B2 (en) * | 2006-12-15 | 2015-12-08 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US7539799B2 (en) * | 2007-02-08 | 2009-05-26 | Dot Hill Systems Corp. | Method and apparatus for identifying enclosures and devices |
US8376815B1 (en) * | 2008-04-30 | 2013-02-19 | Perdue Holdings, Inc. | Method and apparatus for electrical stimulation of meat |
US8364898B2 (en) * | 2009-01-23 | 2013-01-29 | International Business Machines Corporation | Optimizing a cache back invalidation policy |
US9165021B2 (en) * | 2009-04-14 | 2015-10-20 | International Business Machines Corporation | Managing database object placement on multiple storage devices |
US9418011B2 (en) * | 2010-06-23 | 2016-08-16 | Intel Corporation | Region based technique for accurately predicting memory accesses |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
WO2012135041A2 (en) * | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
JP2013008094A (ja) * | 2011-06-22 | 2013-01-10 | Sony Corp | メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体 |
CN102662690B (zh) * | 2012-03-14 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 应用程序启动方法和装置 |
US9092341B2 (en) | 2012-07-10 | 2015-07-28 | International Business Machines Corporation | Methods of cache preloading on a partition or a context switch |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
US9645934B2 (en) | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
WO2016191569A1 (en) * | 2015-05-27 | 2016-12-01 | Google Inc. | Memory system architecture |
US10565121B2 (en) * | 2016-12-16 | 2020-02-18 | Alibaba Group Holding Limited | Method and apparatus for reducing read/write contention to a cache |
JP6786541B2 (ja) * | 2018-03-19 | 2020-11-18 | 株式会社東芝 | 管理装置、情報処理装置、管理方法、およびプログラム |
US11762777B2 (en) * | 2021-03-31 | 2023-09-19 | Advanced Micro Devices, Inc. | Method and apparatus for a dram cache tag prefetcher |
US11693779B2 (en) | 2021-04-30 | 2023-07-04 | International Business Machines Corporation | Prefetch of random data using application tags |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
US5732409A (en) * | 1994-03-21 | 1998-03-24 | Legend Research Limited | Caching disk controller implemented by hardwired logic |
CN1249464A (zh) * | 1998-09-28 | 2000-04-05 | 曼特亚克公司 | 缓冲器管理装置及改进缓冲器的使用率及存取性能的方法 |
US6470437B1 (en) * | 1999-12-17 | 2002-10-22 | Hewlett-Packard Company | Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807110A (en) | 1984-04-06 | 1989-02-21 | International Business Machines Corporation | Prefetching system for a cache having a second directory for sequentially accessed blocks |
JPS6154547A (ja) | 1984-08-24 | 1986-03-18 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 3レベルの階層メモリを備えたデ−タ処理システム |
US4658351A (en) * | 1984-10-09 | 1987-04-14 | Wang Laboratories, Inc. | Task control means for a multi-tasking data processing system |
US5423011A (en) * | 1992-06-11 | 1995-06-06 | International Business Machines Corporation | Apparatus for initializing branch prediction information |
US5361391A (en) | 1992-06-22 | 1994-11-01 | Sun Microsystems, Inc. | Intelligent cache memory and prefetch method based on CPU data fetching characteristics |
US5715421A (en) | 1992-10-16 | 1998-02-03 | Seiko Epson Corporation | Apparatus and method of addressing paged mode memory including adjacent page precharging |
US5544342A (en) * | 1993-06-30 | 1996-08-06 | International Business Machines Corporation | System and method for prefetching information in a processing system |
US5761706A (en) | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
JPH08161230A (ja) | 1994-12-05 | 1996-06-21 | Oki Electric Ind Co Ltd | オンデマンドページングにおける先読み方法 |
EP0752644A3 (en) | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
US5996071A (en) * | 1995-12-15 | 1999-11-30 | Via-Cyrix, Inc. | Detecting self-modifying code in a pipelined processor with branch processing by comparing latched store address to subsequent target address |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US6182201B1 (en) | 1997-04-14 | 2001-01-30 | International Business Machines Corporation | Demand-based issuance of cache operations to a system bus |
US5887151A (en) | 1997-07-10 | 1999-03-23 | Emc Corporation | Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks |
US6012106A (en) * | 1997-11-03 | 2000-01-04 | Digital Equipment Corporation | Prefetch management for DMA read transactions depending upon past history of actual transfer lengths |
US6535961B2 (en) | 1997-11-21 | 2003-03-18 | Intel Corporation | Spatial footprint prediction |
US6134643A (en) * | 1997-11-26 | 2000-10-17 | Intel Corporation | Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6606617B1 (en) | 1998-09-24 | 2003-08-12 | International Business Machines Corporation | Optimized technique for prefetching LOB table space pages |
US6286075B1 (en) | 1998-11-16 | 2001-09-04 | Infineon Technologies Ag | Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M |
US6314494B1 (en) * | 1999-04-15 | 2001-11-06 | Agilent Technologies, Inc. | Dynamically size configurable data buffer for data cache and prefetch cache memory |
JP3710341B2 (ja) | 1999-09-02 | 2005-10-26 | 富士通株式会社 | キャッシュパージ制御機構を有するプロセッサ |
US6412043B1 (en) | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6598123B1 (en) | 2000-06-28 | 2003-07-22 | Intel Corporation | Snoop filter line replacement for reduction of back invalidates in multi-node architectures |
US6678795B1 (en) | 2000-08-15 | 2004-01-13 | International Business Machines Corporation | Method and apparatus for memory prefetching based on intra-page usage history |
US20020089983A1 (en) | 2000-12-18 | 2002-07-11 | Zarlink Semiconductor V.N. Inc. | Switching database cache management system |
US6687794B2 (en) | 2001-10-18 | 2004-02-03 | International Business Machines Corporation | Prefetching mechanism for data caches |
AU2002352742A1 (en) * | 2001-11-16 | 2003-06-10 | Sun Microsystems, Inc. | Coherence message prediction mechanism and multiprocessing computer system employing the same |
US7073030B2 (en) | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
DE10234990B4 (de) | 2002-07-31 | 2007-03-29 | Advanced Micro Devices, Inc., Sunnyvale | Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache |
US7133995B1 (en) * | 2002-12-16 | 2006-11-07 | Advanced Micro Devices, Inc. | Dynamic page conflict prediction for DRAM |
US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
US7099999B2 (en) * | 2003-09-30 | 2006-08-29 | International Business Machines Corporation | Apparatus and method for pre-fetching data to cached memory using persistent historical page table data |
-
2004
- 2004-04-15 US US10/709,128 patent/US7386679B2/en not_active Expired - Fee Related
-
2005
- 2005-04-04 TW TW094110743A patent/TWI307465B/zh not_active IP Right Cessation
- 2005-04-12 JP JP2005115147A patent/JP4028875B2/ja not_active Expired - Fee Related
- 2005-04-12 CN CNB2005100650142A patent/CN100392620C/zh not_active Expired - Fee Related
-
2008
- 2008-04-30 US US12/111,997 patent/US7783837B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
US5732409A (en) * | 1994-03-21 | 1998-03-24 | Legend Research Limited | Caching disk controller implemented by hardwired logic |
CN1249464A (zh) * | 1998-09-28 | 2000-04-05 | 曼特亚克公司 | 缓冲器管理装置及改进缓冲器的使用率及存取性能的方法 |
US6138188A (en) * | 1998-09-28 | 2000-10-24 | Mentor Arc Inc. | Buffer management device and method for improving buffer usage and access performance in data processing system |
US6470437B1 (en) * | 1999-12-17 | 2002-10-22 | Hewlett-Packard Company | Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design |
Also Published As
Publication number | Publication date |
---|---|
US20080201530A1 (en) | 2008-08-21 |
JP4028875B2 (ja) | 2007-12-26 |
US7783837B2 (en) | 2010-08-24 |
TWI307465B (en) | 2009-03-11 |
CN1744058A (zh) | 2006-03-08 |
JP2005302034A (ja) | 2005-10-27 |
US20050235115A1 (en) | 2005-10-20 |
US7386679B2 (en) | 2008-06-10 |
TW200615752A (en) | 2006-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100392620C (zh) | 用于存储器管理的系统和方法 | |
EP1066566B1 (en) | Shared cache structure for temporal and non-temporal instructions and corresponding method | |
CN102576333B (zh) | 非易失性存储器中的数据高速缓存 | |
EP1654660B1 (en) | A method of data caching | |
CN101689146B (zh) | 分层的高速缓存标签架构 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US6965970B2 (en) | List based method and apparatus for selective and rapid cache flushes | |
EP1573555B1 (en) | Page descriptors for prefetching and memory management | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
KR102453192B1 (ko) | 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체 | |
US20160055100A1 (en) | System and method for reverse inclusion in multilevel cache hierarchy | |
CN111201518B (zh) | 用于管理能力元数据的设备和方法 | |
US7617364B2 (en) | System, method and storage medium for prefetching via memory block tags | |
US7844777B2 (en) | Cache for a host controller to store command header information | |
KR100851738B1 (ko) | 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리 | |
US7461212B2 (en) | Non-inclusive cache system with simple control operation | |
US6598124B1 (en) | System and method for identifying streaming-data | |
US5535360A (en) | Digital computer system having an improved direct-mapped cache controller (with flag modification) for a CPU with address pipelining and method therefor | |
US6397298B1 (en) | Cache memory having a programmable cache replacement scheme | |
CN109478163B (zh) | 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法 | |
WO2002027498A2 (en) | System and method for identifying and managing streaming-data | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
US6601155B2 (en) | Hot way caches: an energy saving technique for high performance caches | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
EP1320801A2 (en) | System and method for pre-fetching for pointer linked data structures |
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: 20080604 Termination date: 20210412 |