混合高速缓存管理的制作方法
【技术领域】
[0001 ]本公开总体上但并非排他性地涉及混合高速缓存管理。
【背景技术】
[0002]除非本文中另外指明,否则该部分中描述的方法不是本申请中的权利要求书的现有技术,并且不被承认在本部分中被包括作为现有技术。
[0003]操作系统可采用虚拟存储器模拟比实际存在更多的主存储器(也被称为“系统存储器”),从而允许计算机运行更大的程序并且同时运行多个程序。操作系统(OS)可将主存储器中的物理页(也被称为“页帧”)分派给虚拟存储器中的虚拟页并且可将它们的映射记录在页表中。
[0004]计算机可采用高速缓存来减小可能源自存储器访问延迟的处理器-存储器间隙。当处理器将从主存储器中的位置读取或者将向主存储中的位置写入时,处理器可首先确定该数据的副本是否在高速缓存内。如果在,则处理器对高速缓存进行读或写,这样比对主存储器进行读或写要快。
[0005]计算机可使用多级高速缓存,各级高速缓存桥接处理器和主存储器之间的间隙。I级(LI)高速缓存可内置于处理器芯片中,而2级(L2)高速缓存可内置于处理器芯片中、处理器封装中、或母板上。可优化LI高速缓存以期快速访问时间,而可优化L2缓存以期低未命中率。
【发明内容】
[0006]在本公开的示例中,虚拟页在混合高速缓存中的不同存储器类型的高速缓存区域之间迀移。混合高速缓存被索引至具有物理页的主存储器,其中,主存储器中的各物理页被映射到混合高速缓存中的一群连续高速缓存组。应用页着色(page coloring),使得为包括虚拟页的虚拟存储器的相邻虚拟页分派不同颜色的物理页。幼儿阵列(nursery)和成人阵列(mature array)被索引至虚拟存储器,其中,各虚拟页被映射到幼儿阵列中的一行和成人阵列中的一行。
[0007]如下地记录从虚拟存储器对特定虚拟页的访问。接收特定虚拟页的虚拟地址。根据接收到的虚拟地址来确定针对幼儿阵列和成人阵列的阵列地址的索引和标签。跟随确定的阵列地址的索引到达幼儿阵列中的行和成人阵列中的行。幼儿阵列中的该行和成人阵列中的该行包括虚拟页条目。
[0008]确定所确定的阵列地址的标签是否匹配幼儿阵列中的行和成人阵列中的行的虚拟页条目中的任何标签。响应于所确定的阵列地址的标签与幼儿阵列中的行和成人阵列中的行的虚拟页条目中的任何标签之间的不匹配,幼儿阵列中的行的虚拟页条目被写上所确定的地址阵列的标签和访问计数。响应于所确定的阵列地址的标签与虚拟页条目中的标签之间的匹配,将对应于匹配的标签的虚拟页条目中的访问计数递增。
[0009]以上的
【发明内容】
只是例证性的,不旨在是任何方式的限制。除了上述的例证方面、实施方式和特征之外,通过参照附图和下面的详细描述,其它方面、实施方式和特征将变得清楚。
【附图说明】
[0010]根据结合附图的以下描述和随附权利要求书,将变得更完全明白本公开的以上和其它特征。要理解,这些附图只绘出按照本发明的一些示例,因此将不被认为是对其范围的限制,将通过使用附图,用额外的特征和细节来描述本公开。
[0011]在附图中:
[0012]图1是示出根据本公开的至少一些示例的高速缓存的高速缓存技术的框图;
[0013]图2A示出根据本公开的至少一些示例的虚拟地址到物理地址到高速缓存地址的映射;
[0014]图2B示出根据本公开的至少一些示例的图1的幼儿阵列中的行、成人阵列中的行和高速缓存中的行;
[0015]图2C示出根据本公开的至少一些示例的图1的虚拟地址到幼儿阵列和成人阵列中的阵列地址的映射;
[0016]图3是根据本公开的至少一些示例的用于实现图1的高速缓存技术的方法的流程图;
[0017]图4是根据本公开的至少一些示例的图3的方法中的用于将虚拟页条目在幼儿阵列和成人阵列之间移动的方法的流程图;
[0018]图5是根据本公开的至少一些示例的图3的方法中的用于将虚拟页从被映射到一个高速缓存区域迀移到另一个的方法的流程图;
[0019]图6是示出根据本公开的至少一些示例的幼儿阵列和成人阵列之间的虚拟页条目的移动以及慢高速缓存区域和快高速缓存区域之间的虚拟页迀移的框图;
[0020]图7是根据本公开的至少一些示例的用于实现图1的高速缓存技术的计算系统的流程图;
[0021]图8是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的划分目标模块执行的方法的流程图;
[0022]图9是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的策略模块执行的方法的流程图;
[0023]图10是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的划分策略模块执行的方法的流程图;
[0024]图11是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页迀移模块执行的方法的流程图;
[0025]图12是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页迀移器执行的方法的流程图;
[0026]图13是根据本公开的至少一些示例的在图1的高速缓存技术中由图7的计算系统中的页划分模块执行的方法的流程图;以及
[0027]图14是示出根据本公开的至少一些示例的用于实现图1中的高速缓存技术的计算装置的框图。
【具体实施方式】
[0028]在下面的详细描述中,参照形成描述的部分的附图。在附图中,类似符号通常指示类似的组件,除非上下文另外表明。【具体实施方式】、附图和权利要求书中描述的例证性实施方式不旨在是限制性的。可利用其它实施方式,并且可在不脱离本文中提出的主题的精神和范围的情况下进行各种改变。本文中总体描述并且在附图中示出的本公开的一些方面可按各式各样不同的构造进行布置、替换、组合、分离和设计,所有这些都在本文中明确地料想到。
[0029]本技术的先进之处在于可允许处理器高速缓存并入不同类型的存储器。一些存储器可具有低延迟,但具有高功耗。其它存储器可具有高延迟但具有低功耗。因此,本公开总体上尤其涉及利用了混合高速缓存中的不同存储器的特性以提高高速缓冲性能,减少能量消耗或这二者和/或提供其它特征的方法、设备、系统、装置和计算机程序产品。
[0030]简言之,在本公开的示例中,混合高速缓存被索引至主存储器并且应用页着色。幼儿阵列和成人阵列被索引至虚拟存储器并且用于记录虚拟页访问信息。然后,操作系统使用虚拟页访问信息来确定是否要将虚拟页从映射到一个高速缓存区域的物理页重新映射为映射到另一个高速缓存区域的另一个物理页。
[0031]通过基于虚拟地址确定阵列地址的索引和标签,跟随索引到达幼儿阵列中的行和成人阵列中的行,并且确定阵列地址中的标签是否匹配行中的任何标签,来记录对虚拟地址处的虚拟页的访问。当与行中的标签匹配时,将对应于匹配的标签的虚拟页条目中的访问计数递增。当阵列地址中的标签没有匹配行中的任何标签时,幼儿阵列中的行中的虚拟页条目被写入地址阵列中的标签并且虚拟页条目中的访问计数递增。
[0032]图1是示出根据本公开的至少一些示例的高速缓存102的高速缓存技术100的框图。高速缓存技术100可用软件、硬件或软件和硬件的组合(包括由处理器执行的操作系统
(OS))来实现。高速缓存102可以是在访问主存储器104之前处理器调用的最后一级高速缓存(LLC)。例如,高速缓存102可以是处理器的2级(L2)或3级(L3)高速缓存。
[0033]高速缓存102可以是包括多个高速缓存组的组相联高速缓存。高速缓存组可以是高速缓存102中的“行”,包括均属于不同“路”的多个条目。各条目可包括有效位、高速缓存标签和尚速缓存块。有效位可指不尚速缓存块中的数据是否有效。尚速缓存标签可将尚速缓存块中的数据唯一地识别为可被映射到高速缓存块的、主存储器104中的多个存储器块中的一个。高速缓存102的各条路可位于一个存储体中,使得可并行访问这些路。
[0034]可使用包括高速缓存标签、组索引(也被称为“组编号”)和块偏移的高速缓存地址来访问高速缓存102。组索引可识别高速缓存102中的高速缓存组。可将高速缓存地址中的高速缓存标签与高速缓存组中的高速缓存标签进行比较,进行匹配。
[0035]在高速缓存102中用特定高速缓存地址读取数据时,在高速缓存地址中的高速缓存标签匹配高速缓存组中的高速缓存标签时,会出现高速缓存读取命中,并且可在高速缓存地址中指定的块偏移处读取对应高速缓存块。当高速缓存地址中的高速缓存标签不匹配高速缓存组中的高速缓存标签中的任一个时,会出现高速缓存读取未命中。因此,来自主存储器104中的存储器块的数据和数据的高速缓存标签可被加载到高速缓存组中的高速缓存块中。当高速缓存组已满时,基于诸如近期最少使用(LRU)的替换策略,在高速缓存块之一中可用新的数据替换旧的数据。
[0036]在将数据写入高速缓存102时,可使用写回(write-back)策略或写透(write-through) 策略。如果使用写回策略,则可在写高速缓存块时设置脏位,以指示当另一个存储器块需要使用该高速缓存块时将要把数据写回主存储器104。如果使用写透策略,则写入高速缓存102的数据也可被写入主存储器104。
[0037]在用特定高速缓存地址在高速缓存102中写数据时,在高速缓存地址中的高速缓存标签匹配高速缓存组中的高速缓存标签时,会出现高速缓存命中,并且将数据写入高速缓存地址中指定的块偏移处的对应高速缓存块。当高速缓存地址中的高速缓存标签不匹配高速缓存组中的高速缓存标签中的任一个时,会出现高速缓存未命中。在写高速缓存未命中时,可使用写分配或绕写(非写分配)方法。如果使用写分配方法,来自主存储器104中的存储块的数据和数据的高速缓存标签可被加载到高速缓存组中的高速缓存块中,并且可执行写高速缓存命中操作,以向高速缓存地址中指定的块偏移处的高速缓存块写入。当高速缓存组已满时,可基于替换策略用新的数据替换旧的数据。