CN105612499B - 混合高速缓存管理 - Google Patents
混合高速缓存管理 Download PDFInfo
- Publication number
- CN105612499B CN105612499B CN201380080189.3A CN201380080189A CN105612499B CN 105612499 B CN105612499 B CN 105612499B CN 201380080189 A CN201380080189 A CN 201380080189A CN 105612499 B CN105612499 B CN 105612499B
- Authority
- CN
- China
- Prior art keywords
- array
- virtual page
- page
- row
- child
- 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
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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page colouring
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
混合高速缓存被索引至主存储器并且应用页着色以将主存储器映射到虚拟存储器。幼儿阵列和成人阵列被索引至虚拟存储器。通过基于虚拟地址确定阵列地址的索引和标签,跟随索引到达幼儿阵列和成人阵列中的对应行,并且确定阵列地址中的标签是否匹配行中的任何标签,来记录从混合高速缓存对虚拟页的访问。当与行中的标签匹配时,对应于匹配的标签的虚拟页条目中的访问计数递增。当没有匹配时,幼儿阵列中的行中的虚拟页条目被写上阵列地址中的标签并且条目中的访问计数递增。
Description
技术领域
本公开总体上但并非排他性地涉及混合高速缓存管理。
背景技术
除非本文中另外指明,否则该部分中描述的方法不是本申请中的权利要求书的现有技术,并且不被承认在本部分中被包括作为现有技术。
操作系统可采用虚拟存储器模拟比实际存在更多的主存储器(也被称为“系统存储器”),从而允许计算机运行更大的程序并且同时运行多个程序。操作系统(OS)可将主存储器中的物理页(也被称为“页帧”)分派给虚拟存储器中的虚拟页并且可将它们的映射记录在页表中。
计算机可采用高速缓存来减小可能源自存储器访问延迟的处理器-存储器间隙。当处理器将从主存储器中的位置读取或者将向主存储中的位置写入时,处理器可首先确定该数据的副本是否在高速缓存内。如果在,则处理器对高速缓存进行读或写,这样比对主存储器进行读或写要快。
计算机可使用多级高速缓存,各级高速缓存桥接处理器和主存储器之间的间隙。1级(L1)高速缓存可内置于处理器芯片中,而2级(L2)高速缓存可内置于处理器芯片中、处理器封装中、或母板上。可优化L1高速缓存以期快速访问时间,而可优化L2缓存以期低未命中率。
发明内容
在本公开的示例中,虚拟页在混合高速缓存中的不同存储器类型的高速缓存区域之间迁移。混合高速缓存被索引至具有物理页的主存储器,其中,主存储器中的各物理页被映射到混合高速缓存中的一群连续高速缓存组。应用页着色(page coloring),使得为包括虚拟页的虚拟存储器的相邻虚拟页分派不同颜色的物理页。幼儿阵列(nursery)和成人阵列(mature array)被索引至虚拟存储器,其中,各虚拟页被映射到幼儿阵列中的一行和成人阵列中的一行。
如下地记录从虚拟存储器对特定虚拟页的访问。接收特定虚拟页的虚拟地址。根据接收到的虚拟地址来确定针对幼儿阵列和成人阵列的阵列地址的索引和标签。跟随确定的阵列地址的索引到达幼儿阵列中的行和成人阵列中的行。幼儿阵列中的该行和成人阵列中的该行包括虚拟页条目。
确定所确定的阵列地址的标签是否匹配幼儿阵列中的行和成人阵列中的行的虚拟页条目中的任何标签。响应于所确定的阵列地址的标签与幼儿阵列中的行和成人阵列中的行的虚拟页条目中的任何标签之间的不匹配,幼儿阵列中的行的虚拟页条目被写上所确定的地址阵列的标签和访问计数。响应于所确定的阵列地址的标签与虚拟页条目中的标签之间的匹配,将对应于匹配的标签的虚拟页条目中的访问计数递增。
以上的发明内容只是例证性的,不旨在是任何方式的限制。除了上述的例证方面、实施方式和特征之外,通过参照附图和下面的详细描述,其它方面、实施方式和特征将变得清楚。
附图说明
根据结合附图的以下描述和随附权利要求书,将变得更完全明白本公开的以上和其它特征。要理解,这些附图只绘出按照本发明的一些示例,因此将不被认为是对其范围的限制,将通过使用附图,用额外的特征和细节来描述本公开。
在附图中:
图1是示出根据本公开的至少一些示例的高速缓存的高速缓存技术的框图;
图2A示出根据本公开的至少一些示例的虚拟地址到物理地址到高速缓存地址的映射;
图2B示出根据本公开的至少一些示例的图1的幼儿阵列中的行、成人阵列中的行和高速缓存中的行;
图2C示出根据本公开的至少一些示例的图1的虚拟地址到幼儿阵列和成人阵列中的阵列地址的映射;
图3是根据本公开的至少一些示例的用于实现图1的高速缓存技术的方法的流程图;
图4是根据本公开的至少一些示例的图3的方法中的用于将虚拟页条目在幼儿阵列和成人阵列之间移动的方法的流程图;
图5是根据本公开的至少一些示例的图3的方法中的用于将虚拟页从被映射到一个高速缓存区域迁移到另一个的方法的流程图;
图6是示出根据本公开的至少一些示例的幼儿阵列和成人阵列之间的虚拟页条目的移动以及慢高速缓存区域和快高速缓存区域之间的虚拟页迁移的框图;
图7是根据本公开的至少一些示例的用于实现图1的高速缓存技术的计算系统的流程图;
图8是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的划分目标模块执行的方法的流程图;
图9是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的策略模块执行的方法的流程图;
图10是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的划分策略模块执行的方法的流程图;
图11是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页迁移模块执行的方法的流程图;
图12是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页迁移器执行的方法的流程图;
图13是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页划分模块执行的方法的流程图;以及
图14是示出根据本公开的至少一些示例的用于实现图1中的高速缓存技术的计算装置的框图。
具体实施方式
在下面的详细描述中,参照形成描述的部分的附图。在附图中,类似符号通常指示类似的组件,除非上下文另外表明。具体实施方式、附图和权利要求书中描述的例证性实施方式不旨在是限制性的。可利用其它实施方式,并且可在不脱离本文中提出的主题的精神和范围的情况下进行各种改变。本文中总体描述并且在附图中示出的本公开的一些方面可按各式各样不同的构造进行布置、替换、组合、分离和设计,所有这些都在本文中明确地料想到。
本技术的先进之处在于可允许处理器高速缓存并入不同类型的存储器。一些存储器可具有低延迟,但具有高功耗。其它存储器可具有高延迟但具有低功耗。因此,本公开总体上尤其涉及利用了混合高速缓存中的不同存储器的特性以提高高速缓冲性能,减少能量消耗或这二者和/或提供其它特征的方法、设备、系统、装置和计算机程序产品。
简言之,在本公开的示例中,混合高速缓存被索引至主存储器并且应用页着色。幼儿阵列和成人阵列被索引至虚拟存储器并且用于记录虚拟页访问信息。然后,操作系统使用虚拟页访问信息来确定是否要将虚拟页从映射到一个高速缓存区域的物理页重新映射为映射到另一个高速缓存区域的另一个物理页。
通过基于虚拟地址确定阵列地址的索引和标签,跟随索引到达幼儿阵列中的行和成人阵列中的行,并且确定阵列地址中的标签是否匹配行中的任何标签,来记录对虚拟地址处的虚拟页的访问。当与行中的标签匹配时,将对应于匹配的标签的虚拟页条目中的访问计数递增。当阵列地址中的标签没有匹配行中的任何标签时,幼儿阵列中的行中的虚拟页条目被写入地址阵列中的标签并且虚拟页条目中的访问计数递增。
图1是示出根据本公开的至少一些示例的高速缓存102的高速缓存技术100的框图。高速缓存技术100可用软件、硬件或软件和硬件的组合(包括由处理器执行的操作系统(OS))来实现。高速缓存102可以是在访问主存储器104之前处理器调用的最后一级高速缓存(LLC)。例如,高速缓存102可以是处理器的2级(L2)或3级(L3)高速缓存。
高速缓存102可以是包括多个高速缓存组的组相联高速缓存。高速缓存组可以是高速缓存102中的“行”,包括均属于不同“路”的多个条目。各条目可包括有效位、高速缓存标签和高速缓存块。有效位可指示高速缓存块中的数据是否有效。高速缓存标签可将高速缓存块中的数据唯一地识别为可被映射到高速缓存块的、主存储器104中的多个存储器块中的一个。高速缓存102的各条路可位于一个存储体中,使得可并行访问这些路。
可使用包括高速缓存标签、组索引(也被称为“组编号”)和块偏移的高速缓存地址来访问高速缓存102。组索引可识别高速缓存102中的高速缓存组。可将高速缓存地址中的高速缓存标签与高速缓存组中的高速缓存标签进行比较,进行匹配。
在高速缓存102中用特定高速缓存地址读取数据时,在高速缓存地址中的高速缓存标签匹配高速缓存组中的高速缓存标签时,会出现高速缓存读取命中,并且可在高速缓存地址中指定的块偏移处读取对应高速缓存块。当高速缓存地址中的高速缓存标签不匹配高速缓存组中的高速缓存标签中的任一个时,会出现高速缓存读取未命中。因此,来自主存储器104中的存储器块的数据和数据的高速缓存标签可被加载到高速缓存组中的高速缓存块中。当高速缓存组已满时,基于诸如近期最少使用(LRU)的替换策略,在高速缓存块之一中可用新的数据替换旧的数据。
在将数据写入高速缓存102时,可使用写回(write-back)策略或写透(write-through)策略。如果使用写回策略,则可在写高速缓存块时设置脏位,以指示当另一个存储器块需要使用该高速缓存块时将要把数据写回主存储器104。如果使用写透策略,则写入高速缓存102的数据也可被写入主存储器104。
在用特定高速缓存地址在高速缓存102中写数据时,在高速缓存地址中的高速缓存标签匹配高速缓存组中的高速缓存标签时,会出现高速缓存命中,并且将数据写入高速缓存地址中指定的块偏移处的对应高速缓存块。当高速缓存地址中的高速缓存标签不匹配高速缓存组中的高速缓存标签中的任一个时,会出现高速缓存未命中。在写高速缓存未命中时,可使用写分配或绕写(非写分配)方法。如果使用写分配方法,来自主存储器104中的存储块的数据和数据的高速缓存标签可被加载到高速缓存组中的高速缓存块中,并且可执行写高速缓存命中操作,以向高速缓存地址中指定的块偏移处的高速缓存块写入。当高速缓存组已满时,可基于替换策略用新的数据替换旧的数据。如果使用绕写方法,则可将数据写入主存储器104,而不进行高速缓存。
高速缓存102可被索引至主存储器104,使得主存储器104中的每个物理页固定映射到高速缓存102中的一群物理连续高速缓存组。例如,高速缓存102可被物理索引且物理加标签(PIPT)至主存储器104,使得设置的索引和高速缓存标签对应于主存储器104中的物理地址。映射到高速缓存102中的同一群物理连续高速缓存组的主存储器104中的物理页可被认为具有相同的“颜色”。主存储器104中的相邻物理页在它们被映射到高速缓存102中的不同群物理连续高速缓存组时可具有不同的颜色。可用硬件或软件实现索引。
OS可向各进程提供虚拟存储器106。更具体地,OS可向各进程提供单独的虚拟地址空间。OS可针对各虚拟地址空间保持将该空间中的虚拟地址映射到主存储器104中的物理地址的页表。使用页着色(有时也被称为“高速缓存着色”),OS可将相邻的虚拟页分派给不同颜色的物理页。这个分派可确保相邻虚拟页被映射到不同群的物理连续高速缓存组,使得相邻虚拟页不竞争高速缓存102中的相同位置。
OS可使用伙伴(buddy)分配系统将主存储器104中的连续物理页分配给来自进程的虚拟页请求。OS可维持每种颜色的空闲物理页的链表114-1至114-2N,其中,N是颜色位208(随后参照图2A进行描述)的数量。
在本公开的示例中,高速缓存102可以是包括具有不同特性的两种或更多种类型存储器的混合高速缓存(有时也被称为“混合的高速缓存”)。各存储器类型可形成混合高速缓存102中具有连续地址的区域。例如,混合高速缓存102可包括具有连续地址的嵌入式动态随机存取存储器(eDRAM)的慢高速缓存区域110和具有连续地址的静态随机存取存储器(SRAM)的快高速缓存区域112。为方便起见,映射到高速缓存102的区域中的一群物理连续高速缓存组的物理页还可被称为映射到该区域的物理页。类似地,映射到被映射到高速缓存102的区域中的一群物理连续高速缓存组的物理页的虚拟页也可被称为映射到该区域的虚拟页。
图2A示出根据本公开的至少一些示例的虚拟地址202到物理地址204的映射。在该映射中,虚拟页号(VPN)可被翻译成物理页号(PPN),但页偏移可保持相同。
图2A还示出本公开的至少一些示例中的物理地址204的位和高速缓存地址206的位之间的对应性。物理地址204中的物理页号字段的一部分可重叠高速缓存地址206中的组索引字段的一部分。这个重叠208可被称为颜色位,因为它们可确定物理页的颜色。OS对颜色位208进行控制,因为它控制物理页到虚拟页的分派(例如,OS控制PPN)。因此,OS可将特定页颜色的物理页分派给虚拟页,以控制该虚拟页的数据在高速缓存102中的放置(图1)。
在本公开的示例中,颜色位208中的最高有效位210(此后称为“混合位”)可确定物理页是被映射到高速缓存102中的慢高速缓存区域110(图1)还是快高速缓存区域112(图1)。例如,具有包括零(0)的混合位210的物理地址的物理页可被映射到慢高速缓存区域110,具有包括一(1)的混合位210的物理地址的物理页可被映射到快高速缓存区域112。因此,OS可通过将映射到一个高速缓存区域的虚拟页重新映射到具有包括相反混合位210的物理地址的新物理页,将虚拟页迁移到另一个高速缓存区域。当新物理页是来自链表114-1至114-2N的空闲物理页时,旧物理页可被释放并且返回到链表114-1至114-4N中的一个。当没有具有适合的混合位210的任何空闲物理页时,虚拟页可基于替换策略将物理页与另一个虚拟页交换。
在本公开的示例中,OS可监测以预定模式访问的第一种类型的虚拟页(例如,频繁读取的“热”虚拟页)。当发现热虚拟页被映射到特定高速缓存区域时,OS可将该页迁移到另一个高速缓存区域。例如,如果目标是增加吞吐量,则OS可将热虚拟页从慢高速缓存区域110迁移到快高速缓存区域112。
在本公开的示例中,OS还可监测以预定模式访问的第二种类型的虚拟页(例如,不频繁读取的“冷”虚拟页)。当发现冷虚拟页被映射到特定高速缓存区域时,OS可将该页迁移到另一个高速缓存区域。例如,如果目标是增加吞吐量,则OS可将冷虚拟页从快高速缓存区域112迁移到慢高速缓存区域110。
诸如节省能量的其它目标是可得到的。根据对一种类型的存储器进行读写的功耗,用于迁移虚拟页的预定模式可以是读计数、写计数、读-写比率、或其它因素或其组合。例如,具有低读-写比率的热虚拟页可迁移到具有低写功耗的高速缓存区域。
回头参照图1,OS可使用幼儿阵列116和成人阵列118来确定是否将虚拟页从一个高速缓存区域迁移到另一个高速缓存区域。幼儿阵列116和成人阵列118可具有与高速缓存102类似的数据结构,但它们可存储虚拟页访问信息,而非来自主存储器104的数据。幼儿阵列116和成人阵列118可被索引至虚拟存储器106,所以虚拟存储器106中的每个虚拟页可固定映射到幼儿阵列116中的行(类似于高速缓存组)和成人阵列118中的对应行。例如,幼儿阵列116和成人阵列118可被虚拟索引且物理加标签(VIPT)至虚拟存储器106,所以行索引(类似于组索引)对应于虚拟地址,而高速缓存标签对应于物理地址。为了清晰起见,只示出针对幼儿阵列116和成人阵列118的映射。可用硬件或软件实现索引。
参照图2B,幼儿阵列116和成人阵列118中的各行可包括多个虚拟页条目,每个虚拟页条目可属于不同的路。各虚拟页条目可包括有效位、高速缓存标签和高速缓存块。高速缓存块可存储针对通过高速缓存标签识别的虚拟页的读计数和写计数。
各有效条目可初始地存在于幼儿阵列116中。当进程访问虚拟地址处的虚拟存储器106时,可使用该虚拟地址来从高速缓存102访问虚拟页的数据以及在幼儿阵列116或成人阵列118中记录从高速缓存102对虚拟页的访问。从高速缓存(最后一级高速缓存)102的每第n次访问可被记录在幼儿阵列116或成人阵列118中,其中,n大于或等于1(例如,1、2或4)。例如,n可以是4,所以从高速缓存102的每第4次访问被记录在幼儿阵列116或成人阵列118中。
图2C示出根据本公开的至少一些示例的虚拟地址202的位与幼儿阵列116和成人阵列118中的阵列地址212的位之间的对应关系。虚拟地址202中的页偏移字段的一部分和VPN字段的一部分可形成阵列地址212中的索引字段。索引字段中的索引可识别幼儿阵列116中的行和成人阵列118中的对应行。虚拟地址202中的VPN可被翻译,以便确定PPN,PPN具有可形成阵列地址212中的高速缓存标签的一部分。可将阵列地址212中的高速缓存标签与幼儿阵列116中的行和成人阵列118中的行中的高速缓存标签进行比较。
在访问幼儿阵列116和成人阵列118中的具有特定阵列地址的虚拟页条目时,当阵列地址中的高速缓存标签匹配两个行中的一个中的高速缓存标签时,会出现“阵列命中”,可根据访问类型将对应高速缓存块中的读计数或写计数递增1。当阵列地址中的高速缓存标签不匹配两个行中的高速缓存标签中的任一个时,会出现“阵列未命中”。在阵列未命中时,幼儿阵列116的行中的虚拟页条目中的一个可被写上虚拟地址的高速缓存标签,可设置其有效位,并且可将访问计数递增。当幼儿阵列116中的行已满时,可基于诸如LRU的替换策略用新数据替换虚拟页条目中的一个中的旧数据。通过将通过阵列地址212中的索引选择的幼儿阵列116和成人阵列118的行中的高速缓存标签与阵列地址212中的高速缓存标签进行比较的比较器214来确定阵列命中和阵列未命中。
当幼儿阵列116中的虚拟页条目表现出以预定模式(诸如,读计数、写计数、或读-写比率大于阈值)访问虚拟页时,对应的虚拟页条目可从幼儿阵列116移动到成人阵列118。例如,幼儿阵列116中的虚拟页条目的有效位可被重置并且其数据可被复制到成人阵列118中的对应行中的虚拟页条目中的一个。当成人阵列118中的行已满时,可基于诸如LRU的替换策略来选择一个虚拟页条目,并且与幼儿阵列116中的虚拟页条目交换。
当成人阵列118中的条目表现出以预定模式(诸如,读计数、写计数、或读-写比率大于阈值)访问映射到慢高速缓存区域110的虚拟页时,OS可将虚拟页从被映射到慢高速缓存区域110迁移为被映射到快高速缓存区域112。如上所述,OS可通过将虚拟页重新映射到具有包括相反混合位210(图2A)的物理地址的新物理页来迁移虚拟页。当具有适合的混合位210的新物理页是链表114-1至114-2N中的空闲物理页时,旧物理页可被释放并且返回到114-1至114-4N中的一个。虚拟页的高速缓存数据可迁移到被分派给新物理页的高速缓存组中的高速缓存块。当没有具有适合的混合位210的任何空闲物理页时,虚拟页可基于替换策略将物理页和高速缓存数据与其它虚拟页交换。
当成人阵列118中的条目表现出以预定模式(诸如,读计数、写计数、或读-写比率小于阈值)访问虚拟页时,对应的虚拟页条目可从成人阵列118移动到幼儿阵列116。例如,成人阵列118中的虚拟页条目的有效位可被重置并且其数据可被复制到幼儿阵列118中的对应行中的虚拟页条目中的一个。当高速缓存组已满时,可基于诸如LRU的替换策略用新的数据替换高速缓存块中的一个中的旧的数据。
当幼儿阵列116中的条目表现出以预定模式(诸如,读计数、写计数、或读-写比率小于阈值)访问映射到快高速缓存区域112的虚拟页时,OS可将虚拟页从快高速缓存区域112迁移到慢速缓存区域110。如上所述,OS可通过将虚拟页重新映射到具有包括相反混合位210的物理地址的新物理页来迁移虚拟页。当具有适合的混合位210的新物理页是链表114-1至114-2N中的空闲物理页时,旧物理页可被释放并且返回到114-1至114-4N中的一个。虚拟页的高速缓存数据可迁移到被分派给新物理页的高速缓存组中的高速缓存块。当没有具有适合的混合位210的任何空闲物理页时,虚拟页可基于替换策略将物理页和高速缓存数据与另一个虚拟页交换。
图3是根据本公开的至少一些示例的用于实现混合高速缓存102(图1)的高速缓存技术100(图1)的方法300的流程图。方法300和本公开中描述的其它方法可包括通过框中的一个或更多个示出的一个或更多个操作、功能、或动作。尽管这些框以顺序次序示出,但这些框也可并行地或者用于本文中描述的次序不同的次序来执行。另外,各种框可被组合成更少的框,被划分成额外框或者用额外框进行补充,和/或基于特定实现方式来删除。方法300可开始于框302。
在框302中,混合高速缓存102可被索引至主存储器104。幼儿阵列116和成人阵列118可被索引至虚拟存储器106。在框302之后可进行框304。
在框304中,OS可应用高速缓存着色(例如,页着色)将主存储器104中的物理页分派给虚拟存储器106中的虚拟页。在框304之后可进行框306。
在框306中,OS可创建和保持用于跟踪每种颜色的空闲物理页的至少一个列表(例如,列表110-1至110-2N)。在框306之后可进行框308。
在框308中,可反复地(诸如,周期性地)将虚拟页访问信息记录在幼儿阵列116和成人阵列118中。如以上讨论的,可将从混合高速缓存102的每第n次LLC访问记录在幼儿阵列116或成人阵列118中。如随后将描述的,采样器714(图7)可将虚拟页访问信息周期性地或者说以其它方式反复记录在幼儿阵列116和成人阵列118中。在框308之后可进行框310。
在框310中,幼儿阵列116中的热虚拟页可周期性地或者说以其它方式反复移动到成人阵列118。类似地,成人阵列118中的冷虚拟页可周期性地或者说以其它方式反复移动到幼儿阵列116。如随后将描述的,采样器714(图7)可周期性地或者说以其它方式反复在幼儿阵列116和成人阵列118之间移动热虚拟页和冷虚拟页。在框310之后可进行框312。
在框312中,OS可将成人阵列118中的热虚拟页周期性地或者说以其它方式反复迁移到不同的高速缓存区域(例如,从慢高速缓存区域110迁移到快高速缓存区域112)。类似地,OS可将幼儿阵列116中的冷虚拟页周期性地或者说以其它方式迁移到另一个高速缓存区域(例如,从快高速缓存区域112迁移到慢高速缓存区域110)。框312可循环回到框308。
图4是根据本公开的至少一些示例的用于实现将虚拟页条目在幼儿阵列116和成人阵列118之间移动的框310的方法400的流程图。方法400可先开始框402。
在框402中,确定幼儿阵列116中是否有访问模式大于第一阈值的任何热虚拟页。访问模式可以是读计数、写计数、或读-写比率。如果有这样的热虚拟页,则在框402之后可进行框404。否则,在框402之后可进行框406。
在框404中,幼儿阵列116中的热虚拟页可移动到成人阵列118。例如,图6示出虚拟页604的条目602从幼儿阵列116移动到成人阵列118中的条目606。回头参照图4,在框404之后可进行框406。
在框406中,确定成人阵列118中是否有访问模式小于第二阈值的任何冷虚拟页。访问模式可以是读计数、写计数、或读-写比率。如果有这样的冷虚拟页,则在框406之后可进行框408。否则,在超时后,框406可循环回到框402。
在框408中,成人阵列118中的冷虚拟页可移动到幼儿阵列116。例如,图6示出虚拟页610的条目608从成人阵列118移动到幼儿阵列116中的条目612。回头参照图4,在超时后,框404可循环回到框406。
图5是根据本公开的至少一些示例的用于实现将虚拟页从被映射到一个高速缓存区域迁移成映射到另一个高速缓存区域的框312的方法500的流程图。方法500可开始于框502。
在框502中,OS可确定成人阵列118中是否有任何热虚拟页要迁移到不同的高速缓存区域。例如,OS可将映射到慢高速缓存区域110且具有大于阈值的访问模式的热虚拟页迁移到快高速缓存区域112。OS根据映射到热虚拟页的物理页的混合位的值,确定虚拟页被映射到慢高速缓存区域110。访问模式可以是读计数、写计数、或读-写比率。如果成人阵列118中有任何热虚拟页要迁移到不同的高速缓存区域,则在框502之后可进行框504。否则,在框502之后可进行框506。
在框504中,OS可将每个热虚拟页重新映射到具有相反混合位210的空闲物理页。如果具有相反混合位210的多个空闲物理页可得自链表114-1至114-2N,则OS可使用轮询调度来选择空闲物理页,以在可用的颜色之间分配热虚拟页。如果空闲物理页不可用,则OS可基于替换策略将物理页和高速缓存的数据与另一个虚拟页交换。例如,图6示出映射到物理页614的虚拟页604被重新映射到物理页616,从而将潜在的高速缓存块从慢高速缓存区域110变成快高速缓存区域112。慢高速缓存区域110的高速缓存组中的虚拟页的数据还可被复制到快高速缓存区域112的新高速缓存组。回头参照图5,在框504之后可进行框506。
在框506中,OS可确定幼儿阵列116中是否有任何冷虚拟页要迁移到不同的高速缓存区域。例如,OS可将映射到快高速缓存区域112且具有小于第四阈值的访问模式的冷虚拟页迁移到慢高速缓存区域110。访问模式可以是读计数、写计数、或读-写比率。如果幼儿阵列116中有任何冷虚拟页要迁移到不同的高速缓存区域,则在框506之后可进行框508。否则,在超时后,框506可循环回到框502。
在框508中,OS可将每个冷虚拟页重新映射到具有相反混合位210的空闲物理页。如果具有相反混合位210的多个空闲物理页可得自链表114-1至114-2N,则OS可使用轮询调度来选择空闲物理页,以在可用的颜色之间分配冷虚拟页。如果空闲物理页不可用,则OS可基于替换策略将物理页和高速缓存的数据与另一个虚拟页交换。例如,图6示出映射到物理页618的虚拟页610被重新映射到物理页620,从而将潜在的高速缓存块从快高速缓存区域112变成慢高速缓存区域110。回头参照图5,在超时后,框508可循环回到框502。
图7是根据本公开的至少一些示例的用于实现混合高速缓存102(图1)的高速缓存技术100(图1)的计算系统700的流程图。计算系统700可包括用户级、OS级和硬件级。划分目标模块702可驻留在用户级。策略模块704、页迁移模块706、划分策略模块708和页划分模块710可驻留在OS级。页迁移器712、混合高速缓存102和主存储器104可驻留在硬件级。页迁移器712可包括采样器714、幼儿阵列116和成人阵列118。计算系统700的各种组件可彼此可操作地连接。
图8是根据本公开的至少一些示例的由划分目标模块702实现的方法800的流程图。划分目标模块702可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法800可先开始框802。
在框802中,划分目标模块702可接收或者说以其它方式检测性能目标的输入。性能目标可以是一定的吞吐量或能量节省。在框802之后可进行框804。
在框804中,划分目标模块702可向策略模块704提供性能目标。
图9是根据本公开的至少一些示例的由策略模块704实现的方法900的流程图。策略模块704可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法900可先开始框902。
在框902中,策略模块704可将性能目标转换成用于迁移热虚拟页的阈值和用于迁移冷虚拟页的阈值。该阈值可以是读计数、写计数、或读-写比率。在框902之后可进行框904。
在框904中,策略模块704可将阈值提供到页迁移模块706。在框904之后可进行框906。
在框906中,策略模块704可将性能目标提供到划分策略模块708。
图10是根据本公开的至少一些示例的由划分策略模块708实现的方法1000的流程图。划分策略模块708可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法1000可先开始框1002。
在框1002中,划分策略模块708可确定多久将虚拟页访问记录到幼儿阵列116和成人阵列118一次(例如,每n次LLC访问)、将应用于虚拟页访问信息的任何权重、多久将热虚拟页和冷虚拟页在幼儿阵列116和成人阵列118之间移动一次、将热虚拟页和冷虚拟页在幼儿阵列116和成人阵列118之间移动的阈值、和/或其它确定。在硬件级的页迁移器712中,划分策略模块708可将这个信息提供给采样器714。在框1002之后可进行框1004。
在框1004中,划分策略模块708还可确定多久将热虚拟页和冷虚拟页在高速缓存区域之间迁移一次。划分策略模块708可将这个信息提供到页迁移模块706。
图11是根据本公开的至少一些示例的由页迁移模块706实现的方法1100的流程图。页迁移模块706可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法1100可先开始框1102。
在框1102中,页迁移模块706可按照指定频率监测幼儿阵列116和成人阵列118。在框1102之后可进行框1104。
在框1104中,页迁移模块706可基于指定阈值确定热虚拟页和冷虚拟页在高速缓存区域之间迁移。例如,成人阵列118中的热虚拟页在它当前被映射到慢高速缓存区域110并且其访问模式大于指定阈值时将迁移到快高速缓存区域112。类似地,幼儿阵列116中的冷虚拟页在它当前被映射到快高速缓存区域112并且其访问模式小于指定阈值时将迁移到慢高速缓存区域110。
页迁移模块706可访问被页划分模块710保持在OS级的链表114-1至114-2N,以确定可用于被重新映射到这些热虚拟页和冷虚拟页的空闲物理页。如果多个空闲物理页可得自链表114-1至114-2N,则OS可使用轮询调度来选择空闲物理页,以在可用的颜色之间分配冷虚拟页。如果没有空闲物理页可用于热或冷虚拟页,则OS可基于替换策略将物理页和高速缓存的数据与另一个虚拟页交换。在框1104之后可进行框1106。
在框1006中,页迁移模块706可指示页划分模块710将热虚拟页和冷虚拟页重新映射到框1104中识别的新物理页。
图12是本公开的至少一些示例中的由页迁移器712的采样器714实现的方法1200的流程图。页迁移器712的各种组件可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法1200可先开始框1202。
在框1202中,采样器714可以以指定频率记录从混合高速缓存102对虚拟页的访问。例如,采样器714可记录从混合高速缓存102(图1)的每第n次访问。采样器714可包括跟踪混合高速缓存102被访问的次数的计数器,计数器在每第n次访问之后进行重置。在框1202之后可进行框1204。
在框1204中,采样器714可按照针对读和写的指定权重,向虚拟页访问信息应用权重(如果有的话)。在框1204之后可进行框1206。
在框1206中,采样器714可基于指定阈值和指定频率将虚拟页条目在幼儿阵列116和成人阵列118之间移动。
图13是根据本公开的至少一些示例的由页划分模块710实现的方法1300的流程图。页划分模块710可用存储在有形非暂态计算机可读存储介质上并且能由一个或更多个处理器执行的软件或其它计算机可读指令来实现,用硬件来实现,或者用硬件和这些计算机可读指令的组合来实现。方法1300可先开始框1302。
在框1302中,页划分模块710可保持将虚拟地址映射到物理地址的页表。在框1302之后可进行框1304。
在框1304中,页划分模块710可保持每种颜色的空闲物理页的链表114-1至114-2N。在框1306之后可进行框1304。
在框1306中,页划分模块710可在将物理页分配到虚拟页时应用页着色。当分配链表114-1至114-2N中的空闲物理页时,页划分模块710可使用轮询调度来帮助确保将虚拟页分配在可用颜色之间。
在框1308中,页划分模块710可通过将虚拟页重新映射到由页迁移模块706按照方法1100指示的新物理页,在慢高速缓存区域110和快高速缓存区域112之间迁移虚拟页。
图14是根据本公开的至少一些示例的被构造成使用页着色用幼儿阵列116和成人阵列118将虚拟页从一个高速缓存区域迁移到其它高速缓存区域的示例计算装置700的框图。在基本构造中,计算装置700通常包括一个或更多个主机处理器1404和系统存储器1406。存储器总线1408可用于在主机处理器1404和系统存储器1406之间进行通信。
根据特定构造,主机处理器1404可以是任何类型,包括(但不限于)微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任何组合。主机处理器1404可包括一级或多级高速缓存(诸如,L1高速缓存1410和L2高速缓存1412、处理器核1414和注册器1416)。示例处理器核1414可包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)、或其任何组合。示例存储器控制器1418还可与主机处理器1404一起使用,或者在一些实现方式中,存储器控制器1418可以是处理器1404的内部部分。
根据特定构造,系统存储器1406可以是任何类型,包括(但不限于)易失性存储器(诸如,RAM)、非易失性存储器(诸如,ROM、闪存存储器等)、或其任何组合。系统存储器1406可包括操作系统1420、一个或更多个应用1422和程序数据1424。操作系统1420可包括策略模块704、页迁移模块706、划分策略模块708和页划分模块710(图7)。应用1422可包括算法1426,算法1426可被布置成执行划分目标模块702(图7)的操作。程序数据1424可包括与算法1426关联的参数。在一些实施方式中,应用1422可被布置成与操作系统1420上的程序数据1424一起操作,使得可如本文中描述地实现各种方法。用内部虚线内的这些组件在图14中示出描述的这个基本构造1402。
计算装置700可具有额外特征或功能和促成基本构造1402和任何所需装置和接口之间通信的额外接口。例如,总线/接口控制器1430可用于促成经由存储接口总线1434进行的基本构造1402和一个或更多个数据存储装置1432之间通信。数据存储装置1432可以是可移除存储装置1436、不可移除存储装置1438或其组合。可移除存储装置和不可移除存储装置的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘装置、诸如微缩盘(CD)驱动器或数字通用盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和带驱动器,这只是几个例子。示例计算机存储介质可包括用存储信息(诸如,计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实现的易失性和非易失性(非暂态)、可移除和不可移除介质。
系统存储器1406、可移除存储装置1436和不可移除存储装置1438是计算机存储介质的示例。计算机存储介质包括(但不限于)RAM、ROM、EEPROM、闪存存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储器、磁性盒带、磁带、磁盘存储器或其它磁性存储装置、或可用于存储所需信息并且可供计算装置700访问的任何其它介质。任何这种计算机存储介质可以是计算装置700的部分。
计算装置700还可包括接口总线1440,接口总线1440用于促成经由总线/接口控制器1430的从各种接口装置(例如,输出装置1442、外围接口1444和通信装置1446)到基本构造1402的通信。示例输出装置1442包括图形处理单元1448和音频处理单元1450,图形处理单元1448和音频处理单元1450可被构造成经由一个或更多个A/V端口1452与诸如显示器或扬声器的各种外部装置进行通信。示例外围接口1444包括串行接口控制器1454或并行接口控制器1456,串行接口控制器1454或并行接口控制器1456可被构造成经由一个或更多个I/O端口1458与诸如输入装置(例如,键盘、鼠标、笔、语音输入装置、触摸输入装置等)或其它外围装置(例如,打印机、扫描仪等)的外部装置通信。示例通信装置1446包括网络控制器1460,网络控制器1460可被布置成经由一个或更多个通信端口1464通过网络通信链路促成与一个或更多个其它计算装置1462通信。在一些实现方式中,计算装置1462包括可通过接口总线1440与主机处理器1404通信的多核处理器。
网络通信链路可以是通信介质的一个示例。通信介质通常可用计算机可读指令、数据结构、程序模块或调制后的数据信号(诸如,载波或其它传输机制)中的其它数据来实施,并且可包括任何信息传递介质。“调制后的数据信号”可以是其特征中的一个或更多个以信号中的信息这样的方式被设置或改变的信号。举例来说,而并非限制地,通信介质可包括诸如有线网络或直接连线连接的有线介质和诸如声学、射频(RF)、微波、红外(IR)和其它无线介质的无线介质。本文中使用的术语“计算机可读介质”可既包括存储介质又包括通信介质。
计算装置700可被实现为诸如手机、个人数字助理(PDA)、个人媒体播放器装置、无线网络手表装置、个人头戴式装置、应用专用装置或包括以上功能中的任一种的混合装置的小形状因子便携式(或移动)电子装置的一部分。计算装置700还可被实现为既包括便携式计算机构造又包括非便携式计算机构造的个人计算机。
系统的一些方面的硬件实现和软件实现之间的区别极小;硬件或软件的使用一般是(但不是一直是,在某些背景下,硬件和软件之间的选择可变得非常大)代表成本与效率的权衡的设计选择。可用各种媒介物(例如,硬件、软件和/或固件)实现本文中描述的过程和/或系统和/或其它技术,并且特定的媒介物可随着其中有效利用过程和/或系统和/或其它技术的背景而变化。例如,如果实现方确定速度和准确性是最重要的,则实现方可选择主要是硬件和/或固件媒介物;如果灵活性是最重要的,则实现方可选择主要是软件实现;或者,另外另选地,实现方可选择硬件、软件和/或固件的某种组合。
以上的详细描述已经借助使用框图、流程图和/或示例阐述了装置和/或过程的各种实施方式。在这些框图、流程图和/或示例包含一个或更多个功能和/或操作的范围内,可通过大范围的硬件、软件、固件或实际上其任何组合,单独地和/或一齐地实现这些框图、流程图或示例内的各功能和/或操作。在一些实施方式中,可借助专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现本文中描述的主题的一些部分。然而,本文中公开的实施方式的一些方面全部地或部分地可等同地在集成电路中被实现为在一个或更多个计算机上运行的一个或更多个计算机程序(例如,在一个或更多个计算机系统上运行的一个或更多个程序)、在一个或更多个处理器上运行的一个或更多个程序(例如,在一个或更多个微处理器上运行的一个或更多个程序)、固件、或实际上其任何组合,并且依照本公开针对软件和/或固件来设计电路和/或写入代码。另外,本文中描述的主题的机制能够被分配为各种形式的程序产品,并且适用本文中描述的主题的例证实施方式,而不顾及用于实际执行分配的信号承载介质的特定类型。信号承载介质的示例包括(但不限于)以下:诸如软盘、硬盘驱动器、微缩盘(CD)、数字视频盘(DVD)、数字带、计算机存储器等的可记录型介质;诸如数字和/或模拟通信介质的传输型介质(例如,光纤电缆、波导、有线通信链路和/或通道、无线通信链路和/或通道等)。
以本文中阐述的方式描述装置和/或过程,此后可使用工程实践将描述的这些装置和/或过程集成为数据处理系统。也就是说,本文中描述的装置和/或过程的至少一部分可借助合理量的实验被集成为数据处理系统。典型的数据处理系统一般包括系统单元外壳、视频显示装置、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统、驱动器、图形用户界面和应用程序的计算实体、诸如触摸板或触摸屏的一个或多个交互装置、和/或包括反馈回路和控制电机(例如,感测位置和/或速率的反馈;移动和/或调节组件和/或数量的控制电机)的控制系统中的一个或更多个。可利用任何合适的商购组件(诸如,通常见于数据计算/通信和/或网络计算/通信系统中的那些)来实现典型的数据处理系统。
本文中描述的主题有时示出包含在其它不同组件内或与其它不同组件连接的不同组件。描绘的这些构造只是示例,并且事实上,可实现用于实现相同功能的许多其它构造。在感官认识上,用于实现相同功能的组件的任何布置被有效“关联”,使得所需功能得以实现。因此,本文中被组合用于实现特定功能的任何两个组件可被视为彼此“关联”,使得所需功能得以实现,而不顾及构造或中间组件。同样地,如此关联的任何两个组件还可被视为彼此“可操作地连接”或“可操作地联接”以实现所需功能,并且能够如此关联的任何两个组件还可被视为彼此“可操作地联接”以实现所需功能。可操作联接的特定示例包括(但不限于)物理可配合和/或物理交互的组件和/或无线可交互和/或无线交互的组件和/或逻辑上交互和/或逻辑上可交互的组件。
相对于本文中使用基本上任何多个和/或单个术语,可将术语从复数转化成单数和/或从单数转换成复数,使之适于背景和/或应用。为了清晰的缘故,在本文中明确地阐述各种单数/复数排列。
一般地,本文中使用的,尤其在所附权利要求书(例如,随附权利要求书的主体)中使用的术语一般旨在是“开放性”术语(例如,术语“包括”应该被解释为“包括(但不限于)”,术语“具有”应该被解释为“具有至少”,术语“包括”应该被解释为“包括“但不限于”,等等)。如果旨在有特定数量的引入的权利要求陈述,则在权利要求中将明确地陈述此意图,并且在缺乏此陈述时,不存在此意图。例如,为了辅助理解,下面随附的权利要求可包含使用引入短语“至少一个”和“一个或更多个”来引入权利要求陈述。然而,这种短语的使用不应该被理解成暗指着,用不定冠词引入权利要求陈述将包含引入的此权利要求陈述的任何特定权利要求限于只包含此陈述的实施方式,即使当同一权利要求包括引入性短语“一个或更多个”或“至少一个”和诸如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应该通常被解释为意味着“至少一个”或“一个或更多个”)时;对于使用用于引入权利要求陈述的定冠词,同样如此。另外,即使明确陈述了特定数量的引入的权利要求陈述,这种陈述应该通常被解释为意味着至少所陈述的数量(例如,不带其它修辞的“两个陈述物”的单纯陈述通常意味着至少两个陈述物、或两个或更多个陈述物)。此外,在使用与“A、B和C等中的至少一个”类似的约定的这些情形下,一般这种构造旨在是按惯例通常理解的(例如,“具有A、B和C中的至少一个的系统”将包括(但不限于)只具有A、只具有B、只具有C、同时具有A和B、同时具有A和C、同时具有B和C、和/或同时具有A、B和C等的系统)。在使用与“A、B或C等中的至少一个”类似的管理的这些情形下,一般这种构造旨在是按惯例通常理解的(例如,“具有A、B和C中的至少一个的系统”将包括(但不限于)只具有A、只具有B、只具有C、同时具有A和B、同时具有A和C、同时具有B和C、和/或同时具有A、B和C等的系统)。表现两个或更多个替代术语的几乎任何连词和/或短语(无论是在描述中、权利要求书中还是附图中都)应该被理解为料想到包括术语中的一个、术语中的任一个、或这两个术语的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或“A和B”的可能性。
虽然本文中已经公开了各种方面和实施方式,但其它方面和实施方式也是可能的。本文中公开的各种方面和实施方式是出于例证目的,不旨在是限制性的,用随附权利要求书指示真实范围和精神。
Claims (25)
1.一种用于计算系统的在混合高速缓存中的不同存储器类型的高速缓存区域之间迁移虚拟页的方法,所述混合高速缓存被索引至包括物理页的主存储器,所以所述主存储器中的各物理页被映射到所述混合高速缓存中的一群连续高速缓存组,幼儿阵列和成人阵列被索引至包括虚拟页的虚拟存储器,所以各虚拟页被映射到所述幼儿阵列中的一行和所述成人阵列中的一行,所述方法包括:
应用页着色,以将所述虚拟存储器映射到所述主存储器,使得映射到不同群的连续高速缓存组的物理页被分派给相邻虚拟页;以及
记录从所述混合高速缓存对所述虚拟存储器的特定虚拟页的访问,其中,记录包括:
接收所述特定虚拟页的虚拟地址;
根据接收到的所述虚拟地址,确定到所述幼儿阵列和所述成人阵列的阵列地址的索引和标签;
跟随所确定的所述阵列地址的索引到达所述幼儿阵列中的行和所述成人阵列中的行,所述幼儿阵列中的所述行和所述成人阵列中的所述行包括虚拟页条目;
确定所确定的所述阵列地址的标签是否匹配所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签;
响应于所确定的所述阵列地址的标签与所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签之间的不匹配,用所确定的所述阵列地址的标签和访问计数对所述幼儿阵列中的所述行的虚拟页条目进行写;以及
响应于所确定的所述阵列地址的标签与所述虚拟页条目中的标签之间的匹配,将对应于匹配的标签的所述虚拟页条目中的访问计数递增,
所述方法还包括:
将所述虚拟页条目从所述幼儿阵列移动到所述成人阵列,其中,移动包括:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第一阈值;以及
响应于所述特定虚拟页的访问模式大于所述第一阈值,将所述虚拟页条目从所述幼儿阵列中的所述行移动到所述成人阵列中的所述行。
2.根据权利要求1所述的方法,其中,用所确定的所述阵列地址的标签和访问计数对所述幼儿阵列中的所述行的虚拟页条目进行写包括:响应于所述幼儿阵列中的所述行已满,基于替换策略来选择虚拟页条目并且改写该虚拟页条目中的数据。
3.根据权利要求1所述的方法,其中,所述混合高速缓存是最后一级缓存,从所述混合高速缓存的每第n次访问被记录,并且n大于或等于1。
4.根据权利要求1所述的方法,其中,将所述虚拟页条目从所述幼儿阵列中的所述行移动到所述成人阵列中的所述行包括:响应于所述成人阵列中的所述行已满,基于替换策略从所述成人阵列中的所述行选择另一个虚拟页条目并且将所述幼儿阵列中的所述行中的所述虚拟页条目与所述成人阵列中的所述行中的所选择的虚拟页条目交换。
5.根据权利要求1所述的方法,所述方法还包括:
将所述特定虚拟页从被映射到所述混合高速缓存中的第一高速缓存区域迁移成被映射到所述混合高速缓存中的第二高速缓存区域,其中,迁移包括:
基于来自所述成人阵列中的所述行的虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第二阈值;以及
响应于所述虚拟页的访问模式大于所述第二阈值,将所述特定虚拟页从所述主存储器的被映射到所述第一高速缓存区域的第一物理页重新映射到所述主存储器的被映射到所述第二高速缓存区域的第二物理页。
6.根据权利要求5所述的方法,其中,将所述特定虚拟页从被映射到所述第一高速缓存区域的第一物理页重新映射到被映射到所述第二高速缓存区域的第二物理页包括:
选择所述主存储器的空闲物理页或在其物理地址中具有不同混合位的分配的物理页,使得潜在的高速缓存组位于所述第二高速缓存区域中;以及
将数据从对应于所述第一物理页的第一高速缓存组迁移到对应于所述第二物理页的第二高速缓存组。
7.根据权利要求6所述的方法,其中:
选择所述空闲物理页包括基于轮询调度从来自不同颜色的空闲物理页的链表的空闲物理页的链表选择所述空闲物理页;以及
选择所述分配的物理页基于替换策略。
8.根据权利要求5所述的方法,所述方法还包括:
将所述虚拟页条目从所述成人阵列移动到所述幼儿阵列包括:
基于所述成人阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否小于第三阈值;以及
响应于所述虚拟页的访问模式小于所述第三阈值,将所述虚拟页条目从所述成人阵列中的所述行移动到所述幼儿阵列中的所述行。
9.根据权利要求8所述的方法,其中,将所述虚拟页条目从所述成人阵列中的所述行移动到所述幼儿阵列中的所述行包括:响应于所述幼儿阵列中的所述行已满,基于替换策略从所述幼儿阵列中的所述行选择另一个虚拟页条目并且将来自所述成人阵列中的所述行的虚拟页条目与来自所述幼儿阵列中的所述行的所选择的虚拟页条目交换。
10.根据权利要求8所述的方法,所述方法还包括:
将所述特定虚拟页从被映射到所述第二高速缓存区域迁移成被映射到所述第一高速缓存区域包括:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否小于第四阈值;以及
响应于所述虚拟页的访问模式小于所述第四阈值,将所述特定虚拟页从被映射到所述第二高速缓存区域的所述第二物理页重新映射到被映射到所述第一高速缓存区域的第三物理页。
11.根据权利要求10所述的方法,其中,将所述特定虚拟页从被映射到所述第二高速缓存区域的所述第二物理页重新映射到被映射到所述第一高速缓存区域的第三物理页包括:
选择所述主存储器的空闲物理页或在其物理地址中具有不同混合位的分配的物理页,使得潜在的高速缓存组位于所述第一高速缓存区域中;以及
将数据从对应于所述第二物理页的第二高速缓存组迁移到对应于所述第三物理页的第三高速缓存组。
12.根据权利要求11所述的方法,其中:
选择所述空闲物理页包括基于轮询调度从来自不同颜色的空闲物理页的链表的空闲物理页的链表选择所述空闲物理页;以及
选择所述分配的物理页基于替换策略。
13.根据权利要求9所述的方法,其中,所述访问计数包括读计数、写计数、或读-写比率。
14.一种计算系统,所述计算系统包括:
处理器;
混合高速缓存,其连接到所述处理器并且包括不同存储器类型的第一高速缓存区域和第二高速缓存区域,所述混合高速缓存被索引至包括物理页的主存储器,使得所述混合高速缓存中的一群连续高速缓存组被映射到所述主存储器的物理页;
幼儿阵列和成人阵列,其被索引至包括虚拟页的虚拟存储器,使得所述虚拟存储器的各虚拟页被映射到所述幼儿阵列中的一行和所述成人阵列中的一行;
其中,所述处理器被配置成控制页划分模块和采样器的操作:
所述页划分模块用于实现页着色,以将所述虚拟存储器映射到所述主存储器,使得被映射到不同群的连续高速缓存组的物理页被分派给相邻虚拟页;
所述采样器用于记录从所述混合高速缓存对特定虚拟页的访问,所述采样器被配置成:
接收特定虚拟地址访问的虚拟地址;
根据接收到的所述虚拟地址,确定到所述幼儿阵列和所述成人阵列的阵列地址的索引和标签;
跟随所确定的所述阵列地址的索引到达所述幼儿阵列中的行和所述成人阵列中的行,所述幼儿阵列中的所述行和所述成人阵列中的所述行包括虚拟页条目;
确定所确定的所述阵列地址的标签是否匹配所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签;
响应于所确定的所述阵列地址的标签与所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签之间的不匹配,用所确定的所述阵列地址的标签和访问计数对所述幼儿阵列中的所述行的虚拟页条目进行写;以及响应于所确定的所述阵列地址的标签与所述虚拟页条目中的标签之间的匹配,将对应于匹配的标签的所述虚拟页条目中的访问计数递增,
其中,所述采样器被配置成:
将所述虚拟页条目从所述幼儿阵列移动到所述成人阵列,其中,为了移动所述虚拟页条目,所述采样器被配置成:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第一阈值;以及
响应于所述虚拟页的访问模式大于所述第一阈值,将所述虚拟页条目从所述幼儿阵列中的所述行移动到所述成人阵列中的所述行。
15.根据权利要求14所述的计算系统,其中,所述混合高速缓存是最后一级缓存,所述采样器被配置成记录从所述混合高速缓存的每n次访问,并且n大于或等于1。
16.根据权利要求14所述的计算系统,其中,所述处理器被配置成控制页迁移模块的操作:
所述页迁移模块用于将所述特定虚拟页从被映射到所述混合高速缓存中的第一高速缓存区域迁移成被映射到所述混合高速缓存中的第二高速缓存区域,所述页迁移模块被配置成:
基于所述成人阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第二阈值;以及
响应于所述虚拟页的访问模式大于所述第二阈值,将所述特定虚拟页从所述主存储器的被映射到所述第一高速缓存区域的第一物理页重新映射到所述主存储器的被映射到所述第二高速缓存区域的第二物理页。
17.根据权利要求16所述的计算系统,其中,为了将所述虚拟页从被映射到所述第一高速缓存区域的第一物理页重新映射到被映射到所述第二高速缓存区域的第二物理页,所述采样器被配置成:
选择所述主存储器的空闲物理页或在其物理地址中具有不同混合位的分配的物理页,使得潜在的高速缓存组位于所述第二高速缓存区域中;以及
将数据从对应于所述第一物理页的第一高速缓存组迁移到对应于所述第二物理页的第二高速缓存组。
18.根据权利要求16所述的计算系统,其中,所述采样器被配置成:
将所述虚拟页条目从所述成人阵列移动到所述幼儿阵列,其中,为了移动所述虚拟页条目,所述采样器被配置成:
基于所述成人阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否小于第三阈值;以及
响应于所述虚拟页的访问模式小于所述第三阈值,将所述虚拟页条目从所述成人阵列中的所述行移动到所述幼儿阵列中的所述行。
19.根据权利要求18所述的计算系统,其中,所述页迁移模块被配置成:
将所述特定虚拟页从被映射到所述第二高速缓存区域迁移成被映射到所述第一高速缓存区域,其中,为了迁移所述虚拟页,所述页迁移模块被配置成:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述虚拟页的访问模式是否小于第四阈值;以及
响应于所述虚拟页的访问模式小于所述第四阈值,将所述虚拟页从被映射到所述第二高速缓存区域的第二物理页重新映射到被映射到所述第一高速缓存区域的第三物理页。
20.根据权利要求19所述的计算系统,其中,所述处理器被配置成控制一个或更多个模块的操作:
所述一个或更多个模块用于接收性能目标并且将所述性能目标转换成:
所述第一阈值、所述第二阈值、所述第三阈值和所述第四阈值,所述第一阈值、所述第二阈值、所述第三阈值和所述第四阈值中的每个包括读计数、写计数、或读-写比率;以及
存储对所述幼儿阵列和所述成人阵列中的虚拟页的访问的频率、在所述幼儿阵列和所述成人阵列之间移动虚拟页的频率、以及在所述第一高速缓存区域和所述第二高速缓存区域之间迁移虚拟页的频率。
21.一种非暂态、计算机可读存储介质,所述计算机可读存储介质编码有能由处理器执行以进行以下操作的指令:
应用页着色,以将包括虚拟页的虚拟存储器映射到包括物理页的主存储器,使得映射到混合高速缓存中的不同群的连续高速缓存组的物理页被分派给相邻虚拟页,所述混合高速缓存被索引至所述主存储器,所以所述主存储器中的各物理页被映射到所述混合高速缓存中的一群连续高速缓存组;以及
记录从所述混合高速缓存对所述虚拟存储器的特定虚拟页的访问,包括:
接收所述特定虚拟页的虚拟地址;
根据接收到的所述虚拟地址,确定到幼儿阵列和成人阵列的阵列地址的索引和标签,所述幼儿阵列和所述成人阵列被索引至所述虚拟存储器,所以各虚拟页被映射到所述幼儿阵列中的一行和所述成人阵列中的一行;
跟随所确定的所述阵列地址的索引到达所述幼儿阵列中的行和所述成人阵列中的行,所述幼儿阵列中的所述行和所述成人阵列中的所述行包括虚拟页条目;
确定所确定的所述阵列地址的标签是否匹配所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签;
响应于所确定的所述阵列地址的标签与所述幼儿阵列中的所述行和所述成人阵列中的所述行的所述虚拟页条目中的任何标签之间的不匹配,用所确定的所述阵列地址的标签和访问计数对所述幼儿阵列中的所述行的虚拟页条目进行写;以及
响应于所确定的所述阵列地址的标签与所述虚拟页条目中的标签之间的匹配,将对应于匹配的标签的所述虚拟页条目中的访问计数递增,
其中,所述指令还包括能由所述处理器执行以进行以下操作的指令:
将所述虚拟页条目从所述幼儿阵列移动到所述成人阵列,包括:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第一阈值;以及
响应于所述特定虚拟页的访问模式大于所述第一阈值,将所述虚拟页条目从所述幼儿阵列中的所述行移动到所述成人阵列中的所述行。
22.根据权利要求21所述的非暂态、计算机可读存储介质,其中,所述混合高速缓存是最后一级缓存,从所述混合高速缓存的每n次访问被记录,并且n大于或等于1。
23.根据权利要求21所述的非暂态、计算机可读存储介质,其中,所述指令还包括能由所述处理器执行以进行以下操作的指令:
将所述特定虚拟页从被映射到所述混合高速缓存中的第一高速缓存区域迁移成被映射到所述混合高速缓存中的第二高速缓存区域,包括:
基于来自所述成人阵列中的所述行的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否大于第二阈值;以及
响应于所述虚拟页的访问模式大于所述第二阈值,将所述特定虚拟页从所述主存储器的被映射到所述第一高速缓存区域的第一物理页重新映射到所述主存储器的被映射到所述第二高速缓存区域的第二物理页。
24.根据权利要求23所述的非暂态、计算机可读存储介质,其中,所述指令还包括能由所述处理器执行以进行以下操作的指令:
将所述虚拟页条目从所述成人阵列移动到所述幼儿阵列,包括:
基于所述成人阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否小于第三阈值;以及
响应于所述虚拟页的访问模式小于所述第三阈值,将所述虚拟页条目从所述成人阵列中的所述行移动到所述幼儿阵列中的所述行。
25.根据权利要求24所述的非暂态、计算机可读存储介质,其中,所述指令还包括能由所述处理器执行以进行以下操作的指令:
将所述特定虚拟页从被映射到所述第二高速缓存区域迁移成被映射到所述第一高速缓存区域,包括:
基于所述幼儿阵列中的所述虚拟页条目中的访问计数,确定所述特定虚拟页的访问模式是否小于第四阈值;以及
响应于所述虚拟页的访问模式小于所述第四阈值,将所述特定虚拟页从被映射到所述第二高速缓存区域的第二物理页重新映射到被映射到所述第一高速缓存区域的第三物理页。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/086143 WO2015061965A1 (en) | 2013-10-29 | 2013-10-29 | Mixed cache management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105612499A CN105612499A (zh) | 2016-05-25 |
CN105612499B true CN105612499B (zh) | 2018-11-13 |
Family
ID=53003098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380080189.3A Expired - Fee Related CN105612499B (zh) | 2013-10-29 | 2013-10-29 | 混合高速缓存管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9785558B2 (zh) |
CN (1) | CN105612499B (zh) |
WO (1) | WO2015061965A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6118285B2 (ja) * | 2014-03-20 | 2017-04-19 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
US10552329B2 (en) * | 2014-12-23 | 2020-02-04 | Prophetstor Data Services, Inc. | SSD caching system for hybrid storage |
US10089233B2 (en) | 2016-05-11 | 2018-10-02 | Ge Aviation Systems, Llc | Method of partitioning a set-associative cache in a computing platform |
CN108021514B (zh) * | 2016-10-28 | 2020-11-06 | 华为技术有限公司 | 一种缓存替换的方法和设备 |
KR102340094B1 (ko) * | 2017-03-31 | 2021-12-17 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10706147B1 (en) * | 2017-05-19 | 2020-07-07 | Amazon Technologies, Inc. | Mitigating side-channel attacks via shared cache |
CN109213694B (zh) * | 2017-06-30 | 2023-04-25 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN109299021B (zh) * | 2017-07-24 | 2023-06-16 | 阿里巴巴集团控股有限公司 | 页迁移方法、装置和中央处理器 |
US11561906B2 (en) * | 2017-12-12 | 2023-01-24 | Advanced Micro Devices, Inc. | Rinsing cache lines from a common memory page to memory |
US10783049B2 (en) * | 2018-02-26 | 2020-09-22 | International Business Machines Corporation | Virtual storage drive management in a data storage system |
US10942854B2 (en) | 2018-05-09 | 2021-03-09 | Micron Technology, Inc. | Prefetch management for memory |
US10714159B2 (en) | 2018-05-09 | 2020-07-14 | Micron Technology, Inc. | Indication in memory system or sub-system of latency associated with performing an access command |
US11010092B2 (en) | 2018-05-09 | 2021-05-18 | Micron Technology, Inc. | Prefetch signaling in memory system or sub-system |
US10754578B2 (en) * | 2018-05-09 | 2020-08-25 | Micron Technology, Inc. | Memory buffer management and bypass |
KR20200043814A (ko) * | 2018-10-18 | 2020-04-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10705966B1 (en) * | 2018-12-14 | 2020-07-07 | Western Digital Technologies, Inc. | Mapping for multi-state programming of memory devices |
CN110134492B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 一种异构内存虚拟机不停机的内存页面迁移系统 |
KR20200136747A (ko) * | 2019-05-28 | 2020-12-08 | 에스케이하이닉스 주식회사 | 메모리 장치, 메모리 장치를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10901916B1 (en) * | 2019-08-16 | 2021-01-26 | International Business Machines Corporation | Managing indication of accessed tracks in cache to a most recently used end of a cache list based on accesses to different regions of the cache list |
US10983915B2 (en) * | 2019-08-19 | 2021-04-20 | Advanced Micro Devices, Inc. | Flexible dictionary sharing for compressed caches |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11416407B2 (en) * | 2020-05-22 | 2022-08-16 | Dell Products, L.P. | Method and apparatus for cache slot allocation based on data origination location or final data destination location |
US11972034B1 (en) | 2020-10-29 | 2024-04-30 | Amazon Technologies, Inc. | Hardware-assisted obscuring of cache access patterns |
US11113067B1 (en) * | 2020-11-17 | 2021-09-07 | Centaur Technology, Inc. | Speculative branch pattern update |
CN112799977B (zh) * | 2021-02-26 | 2022-07-19 | 中国人民解放军国防科技大学 | 计算机的缓存分区和缓存访问实时性保护方法及装置 |
CN113505101B (zh) * | 2021-07-13 | 2023-07-07 | 电子科技大学 | 一种基于vfs的内核文件系统 |
CN113722244B (zh) * | 2021-11-02 | 2022-02-22 | 北京微核芯科技有限公司 | 一种高速缓存结构、访问方法和电子设备 |
US11755496B1 (en) | 2021-12-10 | 2023-09-12 | Amazon Technologies, Inc. | Memory de-duplication using physical memory aliases |
CN116610599B (zh) * | 2023-07-19 | 2023-11-10 | 北京开源芯片研究院 | 处理器缓存的优化方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN1877548A (zh) * | 2005-06-06 | 2006-12-13 | 国际商业机器公司 | 用于管理页替换的方法和系统 |
CN102612685A (zh) * | 2009-11-16 | 2012-07-25 | 微软公司 | 经由存储器高速缓存操纵的无阻碍数据传送 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6041016A (en) * | 1998-12-04 | 2000-03-21 | Intel Corporation | Optimizing page size in mixed memory array using address multiplexing |
US7085890B2 (en) * | 2004-02-19 | 2006-08-01 | International Business Machines Corporation | Memory mapping to reduce cache conflicts in multiprocessor systems |
US7184944B1 (en) * | 2004-02-20 | 2007-02-27 | Unisys Corporation | Apparatus and method for the simulation of a large main memory address space given limited resources |
US7330938B2 (en) * | 2004-05-18 | 2008-02-12 | Sap Ag | Hybrid-cache having static and dynamic portions |
US9390031B2 (en) * | 2005-12-30 | 2016-07-12 | Intel Corporation | Page coloring to associate memory pages with programs |
US7584335B2 (en) * | 2006-11-02 | 2009-09-01 | International Business Machines Corporation | Methods and arrangements for hybrid data storage |
US7747820B2 (en) * | 2007-06-15 | 2010-06-29 | Microsoft Corporation | Managing working set use of a cache via page coloring |
US7962695B2 (en) * | 2007-12-04 | 2011-06-14 | International Business Machines Corporation | Method and system for integrating SRAM and DRAM architecture in set associative cache |
WO2009102425A1 (en) | 2008-02-12 | 2009-08-20 | Netapp, Inc. | Hybrid media storage system architecture |
CN101673245B (zh) | 2008-09-09 | 2016-02-03 | 株式会社东芝 | 包括存储器管理装置的信息处理装置和存储器管理方法 |
US8065485B2 (en) * | 2009-05-22 | 2011-11-22 | Oracle America, Inc. | Method and apparatus for determining cache storage locations based on latency requirements |
US9086973B2 (en) * | 2009-06-09 | 2015-07-21 | Hyperion Core, Inc. | System and method for a cache in a multi-core processor |
US20120017039A1 (en) * | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
CN103164362A (zh) | 2011-12-13 | 2013-06-19 | 联想(北京)有限公司 | 电子设备和存储器控制方法 |
CN102831088A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据迁移方法和装置 |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
-
2013
- 2013-10-29 US US15/032,636 patent/US9785558B2/en active Active
- 2013-10-29 CN CN201380080189.3A patent/CN105612499B/zh not_active Expired - Fee Related
- 2013-10-29 WO PCT/CN2013/086143 patent/WO2015061965A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN1877548A (zh) * | 2005-06-06 | 2006-12-13 | 国际商业机器公司 | 用于管理页替换的方法和系统 |
CN102612685A (zh) * | 2009-11-16 | 2012-07-25 | 微软公司 | 经由存储器高速缓存操纵的无阻碍数据传送 |
Non-Patent Citations (1)
Title |
---|
基于页面分类与放置策略的混合缓存管理机制研究;余新;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130715(第07期);第I137-100页,第14、17、19-30、40页,图3.1、3.2、3.4、3.6 * |
Also Published As
Publication number | Publication date |
---|---|
US20160253259A1 (en) | 2016-09-01 |
US9785558B2 (en) | 2017-10-10 |
CN105612499A (zh) | 2016-05-25 |
WO2015061965A1 (en) | 2015-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105612499B (zh) | 混合高速缓存管理 | |
CN106663060B (zh) | 用于缓存线路去重的方法和系统 | |
CN110134492B (zh) | 一种异构内存虚拟机不停机的内存页面迁移系统 | |
CN103946812B (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN103946811B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN111684435B (zh) | 实施于存储器系统中的通过消息传递接口的存储器存取通信 | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
CN107025070B (zh) | 版本化存储设备和方法 | |
CN109154911A (zh) | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 | |
CN106708423A (zh) | 多模存储管理系统 | |
CN109564551A (zh) | 在没有页面故障的情况下分配物理页面到虚拟存储器中的稀疏数据集 | |
GB2585320A (en) | Using track locks and stride group locks to manage cache operations | |
CN107818052A (zh) | 内存访问方法及装置 | |
CN106201911A (zh) | 一种基于固态硬盘的缓存加速方法 | |
CN105094691B (zh) | 一种数据操作的方法、设备和系统 | |
CN105095113B (zh) | 一种缓存管理方法和系统 | |
Mattson | Evaluation of multilevel memories | |
CN101714065A (zh) | 一种闪存控制器的映射信息管理方法 | |
CN104461932B (zh) | 一种面向大数据应用的目录缓存管理方法 | |
US9703593B2 (en) | Apparatus and method for memory overlay | |
CN109388585A (zh) | 用于基于高速缓存类型来提供高速缓存一致性的技术 | |
CN110888600A (zh) | 一种面向nand闪存的缓冲区管理方法 | |
CN106909323A (zh) | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构系统 | |
CN110036376A (zh) | 无分配高速缓存策略 | |
CN102521161B (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 | ||
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: 20181113 Termination date: 20191029 |