面向混合主存的多核共享末级缓存管理方法及装置
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种面向混合主存的多核共享末级缓存管理方法及装置。
背景技术
随着应用程序(比如搜索引擎、机器学习)所处理数据集的规模不断扩大以及片上处理器核数的不断增多,基于SRAM/DRAM的存储系统逐渐成为了系统能耗和扩展性的瓶颈。最近出现的非易失性存储器NVM(Non-Volatile Memory),如磁阻式随机存储器(MagneticRandom Access Memory,简称MRAM)、自旋转移力矩磁阻式存储器(Spin-transfer-torqueMagnetic Random Access Memory,简称STT-MRAM)、可变电阻式存储器(Resistive RandomAccess Memory,简称ReRAM)、相变存储器(Phase-change Random Access Memory,简称PCM)被认为是下一代存储体系中非常有竞争力的一种存储器。和传统的存储器相比,NVM具有高密度、低静态功耗和非易失性的特点。然而,目前NVM由于其本身的物理特性,导致其访问延迟较长和动态功耗较高,尤其是写操作。
鉴于DRAM和NVM各自的优缺点,由DRAM和NVM处于同一线性地址空间下的混合主存架构被提出。此架构的目标是能够有效利用DRAM较低的写延迟和NVM高密度以及低静态功耗等各自优良的特性,以便提高系统的性能和降低能耗。为了上述目标,目前大多数针对混合主存架构的研究都集中于设计不同的页面迁移策略,以达到把写次数较多以及读频繁的页面集中到DRAM而把其余页面放置到NVM的目的。然而,在普遍具有多级缓存Cache的现代处理器中,如果Cache是通过物理地址进行访问,在混合主存架构中实现DRAM和NVM不同存储空间的页面迁移需要付出很大的代价,其不仅需要主存页面间的数据拷贝,而且也需要对片上的Cache进行相关的操作(比如失效、写回)。
实际上,在现代处理器中由多核共享的较大容量的末级缓存对系统的性能起着至关重要的作用。末级缓存Cache的管理策略不仅决定了Cache发生缺失和对主存访问的数目,同时对单独主存数据块的缺失率也有较大的影响。因此,在混合主存系统中,通过设计相应的缓存Cache管理策略可以比较高效地对DRAM数据和NVM数据的读写操作数目进行控制。
目前,普遍使用的缓存Cache管理策略(比如LRU)都是以降低缺失数目为目标,认为不同数据块的缺失代价相一致。但在混合主存系统架构下,DRAM和NVM数据的缺失代价具有明显的差异性。Lee,B.C.等人以PCM为例,得出PCM的读和写延迟分别是DRAM的4.4倍和12.0倍,读和写能耗分别是DRAM的2.1倍和43.1倍,致使不同请求的缺失对系统性能的影响差异会更大(Architecting phase change memory as a scalable dramalternative.ACM SIGARCH Computer Architecture News,2009.37(3):p.2-13)。因此,在混合主存系统架构下,相同的缺失数目可能并不代表相同的性能,NVM缺失数目相对少的性能要优于另一方。
另外,在多核环境下,不同核上所跑应用程序之间存在对末级缓存空间的竞争关系,某一核上应用程序数据在末级缓存的插入可能导致另一个核上应用程序的数据被替换出去。当前针对多核系统,关于末级缓存替换策略的研究主要是通过“划分”的思想,把末级缓存按照缓存组或者缓存行粒度分配给每个核,以达到降低核间干扰和提高命中率的目的。但是,先前的划分算法还是基于数据块之间缺失代价不具有差异性而设计的,其不再适用于混合主存架构系统。
鉴于此,需要一种改进的多核共享末级缓存管理策略以解决现有的技术问题,提高系统的整体性能。
发明内容
针对以上技术问题,本发明的目的是提供一种面向混合主存的多核共享末级缓存管理方法及装置,综合考虑了混合主存系统中不同主存介质之间的物理特性差异,优化了传统以降低缺失数目为目标的LRU替换算法,减少了存储能量开销,达到了降低核间干扰和提高命中率的目的,有效提高了末级缓存的访存性能。
为达到上述目的,本发明通过以下技术方案实现:
本发明提供一种面向混合主存的多核共享末级缓存管理方法,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,管理方法包括以下步骤:
S1:获得处理器的多核的末级缓存路数划分方式;
S2:判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,
如果命中,则执行缓存行提升策略;
如果未命中,则需要从上级缓存或主存中获取数据,直接执行缓存行插入策略,或者先执行缓存行回收策略,然后执行缓存行插入策略。
优选地,步骤S1具体包括:
S11:为处理器的每个核配置一个访问特性监控器,识别对应核上应用程序的内存访问特性;
S12:采用动态抽样机制,在每一个计数周期开始,从处理器的多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,选取的上述多个缓存组采用最近最少使用替换策略;
S13:在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值;
S14:根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数划分方式。
优选地,在步骤S1之后,还包括:
将末级缓存中的缓存行分成四种类型:DN、DD、CN和CD,所述DN、DD、CN和CD四种缓存行的优先级分别用DNP、DDP、CNP和CDP代表,并设定上述四种缓存行的优先级高低关系为DNP>DDP>CNP>CDP;
为末级缓存中的每个缓存组配置一个饱和计数器,用于动态地调整不同缓存行的插入位置和提升幅度;
为每个缓存组中的每个缓存行设置标记,用于指示该缓存行中的数据是来源于NVM还是DRAM。
优选地,所述缓存行提升策略包括:判断命中的缓存行的数据是来源于NVM还是DRAM,
如果命中的缓存行的数据来源于NVM,则将该缓存行在其当前优先级位置的基础上再提升(DNP)p个位置,其中(DNP)p=(ai+(A-饱和计数器的数值))/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果命中的缓存行的数据来源于DRAM,则将该缓存行在其当前优先级位置的基础上再提升(DDP)p个位置,其中(DDP)p=(ai+饱和计数器的数值)/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
优选地,所述缓存行回收策略是指选取在缓存组中处于最低优先级位置的缓存行进行回收。
优选地,所述缓存行插入策略包括:判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
如果是写回访问,并且上级缓存的数据来源于NVM,则将存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DNP)i,其中(DNP)i=ai+(A-饱和计数器的数值)/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是写回访问,并且上级缓存的数据来源于DRAM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DDP)i,其中(DDP)i=ai+饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CNP)i,其中(CNP)i=ai-饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CDP)i,其中(CDP)i=ai-(A-饱和计数器的数值)/4,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
优选地,所述一个计数周期是指当处理器的多个核运行的指令数之和从零达到100Million的时间。
本发明还提供了基于上述的面向混合主存的多核共享末级缓存管理方法的面向混合主存的多核共享末级缓存管理装置,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,管理装置包括以下模块:
末级缓存路数划分模块,用于获得处理器的多核的末级缓存路数划分方式;
判断模块,用于判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,如果命中,则执行缓存行提升模块;如果未命中,则需要从上级缓存或主存中获取数据,直接执行缓存行插入模块,或者先执行缓存行回收模块,然后执行缓存行插入模块。
优选地,末级缓存路数划分模块进一步包括:
末级缓存路数划分模块进一步包括:
访问特性监控器配置模块,用于为每个核配置一个访问特性监控器,识别对应核上应用程序的内存访问特性;
动态抽样模块,用于采用动态抽样机制,在每一个计数周期开始,从多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,选取的上述多个缓存组采用最近最少使用替换策略;
命中权重值读取模块,用于在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值;
末级缓存路数获取模块,用于根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数划分方式。
优选地,还包括:
饱和计数器配置模块,用于为末级缓存中的每个缓存组配置一个饱和计数器,以动态地调整不同缓存行的插入位置和提升幅度;
缓存行标记模块,用于为每个缓存组中的每个缓存行设置标记,以指示该缓存行中的数据是来源于NVM还是DRAM。
优选地,所述缓存行提升模块,用于判断命中的缓存行是来源于NVM还是DRAM,进行缓存行的位置提升操作。
优选地,所述缓存行回收模块,用于选取在缓存组中处于最低优先级位置的缓存行进行回收操作。
优选地,所述缓存行插入模块,用于判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,进行缓存行的位置插入操作。
与现有技术相比,本发明一种面向混合主存的多核共享末级缓存管理方法的有益效果如下:
1.本发明针对混合主存DRAM和NVM,提供了一种改进的多核末级缓存路数划分方式,其为处理器的每个核设置一个访问特性监控器,识别对应核上应用程序的内存访问特性,采用动态采样机制,并根据命中的数据类型不同(DRAM或者NVM,干净数据或脏数据)累加不同的权重值。在每个计数周期结束时,根据缓存行的命中权重值,处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,从而获得多核末级缓存路数划分方式,既有效降低了不同核间数据的干扰,又考虑了混合主存系统所引入的数据差异性,使这种划分方式更适合混合主存的架构系统;
2.本发明预先将缓存行分成四类,又鉴于在末级缓存中脏缓存行的命中率较高以及NVM缺失的代价高于DRAM,而设定了四类缓存行的优先级顺序,并动态调整缓存行的优先级顺序,提供了一种提升策略和插入策略更优化的算法,使其更适用于混合主存的架构系统;
3.由于在混合主存系统架构下,DRAM和NVM数据的缺失代价具有明显的差异性,而相同的缺失数目可能并不能代表相同的性能,NVM缺失数目相对少的性能要优于另一方,而传统的LLC管理策略并没有考虑DRAM和NVM访问之间对系统性能和能耗的代价差异,因此无法获得很好的性能和较低的能耗。本发明基于多核的末级缓存路数划分方式,对DRAM和NVM数据进行区分,提供了一种面向混合主存的多核共享末级缓存管理方法,优化了传统以降低缺失数目为目标的LRU替换算法,减少了存储能量开销,达到了降低核间干扰和提高命中率的目的,有效提高了末级缓存的访存性能。
一种面向混合主存的多核共享末级缓存管理装置的有益效果与一种面向混合主存的多核共享末级缓存管理方法的有益效果类似,在此不再赘述。
附图说明
图1为本发明面向混合主存的多核共享末级缓存管理方法的流程示意图之一。
图2为本发明面向混合主存的多核共享末级缓存管理方法的流程示意图之二。
图3为本发明实施例2中提供的系统整体架构示意图。
图4为本发明实施例2中提供的AFM的内部结构示意图。
图5为本发明实施例2中提供的命中权重值曲线图。
图6为本发明实施例2中提供的末级缓存执行三种管理策略的过程示意图。
图7为本发明面向混合主存的多核共享末级缓存管理装置的结构示意图之一。
图8为本发明面向混合主存的多核共享末级缓存管理装置的结构示意图之二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都来源于本发明保护的范围。
下面对本发明中出现的部分名词进行解释说明:
主存储器:英文全称Main Memory,简称主存,是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。现代计算机是为了提高性能,又能兼顾合理的造价,往往采用多级存储体系,即由存储容量小,存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器是必不可少的。主存储器是按地址存放信息的,存取速度一般与地址无关。
静态随机存取存储器:英文全称Static Random Access Memory,简称SRAM,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。SRAM主要用于二级高速缓存(Level2Cache)。与DRAM相比,SRAM的速度快,但在相同面积中SRAM的容量要比其他类型的内存小。
动态随机存取存储器:英文全称Dynamic Random Access Memory,简称DRAM,是最为常见的系统内存。DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。
非易失存储器:英文全称Non-Volatile Memory,简称NVM,具有非易失、按字节存取、存储密度高、低能耗、读写性能接近DRAM,但读写速度不对称,寿命有限,指当电流关掉后,所存储的数据不会消失的计算机存储器。
高速缓冲存储器:也就是平常看到的一级缓存(L1Cache)、二级缓存(L2Cache)、三级缓存(L3Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据。高速缓冲存储器最重要的技术指标是它的命中率。
最近最少使用(Least Recently Used)替换策略:简称LRU替换策略,根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
下面结合附图和具体实施方式对本发明一种面向混合主存的多核共享末级缓存管理方法及装置作进一步地说明:
实施例1
参考图1,示出了本发明所提供的一种面向混合主存的多核共享末级缓存管理方法,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,该管理方法包括以下步骤:
S101:获得处理器的多核的末级缓存路数划分方式。
S102:判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,
如果命中,则进行步骤S103执行缓存行提升策略(Promotion Policy);
如果未命中,则需要从上级缓存或主存中获取数据,直接进行步骤S104执行缓存行插入策略(Insertion Policy),或者先进行步骤S105执行缓存行回收策略(EvictionPolicy),然后进行步骤S108执行缓存行插入策略(Insertion Policy)。
其中步骤101具体包括:
S1011:为处理器的每个核配置一个访问特性监控器(Access Feature Monitor,简称AFM),识别对应核上应用程序的内存访问特性。
S1012:采用动态抽样机制(Dynamic Sample Sampling,简称DSS),在每一个计数周期开始,从多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,所述一个计数周期是指当处理器的多个核运行的指令数之和从零达到100Million的时间。
S1013:在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值。
S1014:根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数(cache way)划分方式。
上述步骤S103的缓存行提升策略(Promotion Policy)包括:判断命中的缓存行的数据是来源于NVM还是DRAM,
如果命中的缓存行的数据来源于NVM,则将该缓存行在其当前优先级位置的基础上再提升(DNP)p个位置,其中(DNP)p=(ai+(A-饱和计数器的数值))/2,该缓存行的位置最大可提升至最高优先级位置(即MRU位置);
如果命中的缓存行的数据来源于DRAM,则将该缓存行在其当前优先级位置的基础上再提升(DDP)p个位置,其中(DDP)p=(ai+饱和计数器的数值)/8,该缓存行的优先级位置最大可提升至最高优先级位置(即MRU位置)。
上述步骤S104的缓存行回收策略(Eviction Policy)是指选取在缓存组中处于最低优先级位置(即LRU位置)的缓存行进行回收。
上述步骤S105的缓存行插入策略(Insertion Policy)包括:判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
如果是写回访问,并且上级缓存的数据来源于NVM,则将存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DNP)i,其中(DNP)i=ai+(A-饱和计数器的数值)/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是写回访问,并且上级缓存的数据来源于DRAM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DDP)i,其中(DDP)i=ai+饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CNP)i,其中(CNP)i=ai-饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CDP)i,其中(CDP)i=ai-(A-饱和计数器的数值)/4,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
实施例2
参考图2,示出了本发明所提供的另一种面向混合主存的多核共享末级缓存管理方法,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,该管理方法包括以下步骤:
S201:获得处理器的多核的末级缓存路数划分方式。
S202:将末级缓存(Last Level Cache,简称LLC)中的缓存行(cache line)分成四种类型:脏NVM数据(Dirty-NVM,记为DN),脏DRAM数据(Dirty-DRAM,记为DD),干净NVM数据(Clean-NVM,记为CN)和干净DRAM数据(Clean-DRAM,记为CD),所述DN、DD、CN和CD四种缓存行的优先级分别用DNP、DDP、CNP和CDP代表,并设定上述四种缓存行的优先级高低关系为DNP>DDP>CNP>CDP。
一个有效的缓存行,它的内容没有被修改过,我们称这个缓存行是干净的(clean),相反状态是脏的(dirty)。
在多级缓存系统中,对末级缓存的访问类型可分为两种,一种是按需访问(demandaccess),是指CPU发出的读/写请求在上几层缓存中都没有命中,然后产生对末级缓存的访问;另一种是写回访问(Write Back),是指最靠近末级缓存的上层Cache替换出一个脏缓存行而导致的对末级缓存的访问。其中按需访问如果在末级缓存中发生缺失,则需要从主存中读取数据,这会导致CPU等待影响性能,而写回访问发生缺失并不会引起对主存的读操作。因此,通常来说,按需访问对系统性能的影响要大于写回访问。通过实验表明,基于最近最少使用(Least Recently Used,简称LRU)替换策略,平均有75.3%的末级缓存按需访问命中的缓存行是脏Cache行。这说明脏Cache行有更高的概率被再次访问,应该给予较高的优先级。
另外,因为NVM的访问延迟和动态功耗大于DRAM的访问延迟和动态功耗,也即NVM数据缺失的代价高于DRAM数据缺失,因此,NVM的优先级应该高于DRAM。故设定上述四种缓存行的优先级高低关系为DNP>DDP>CNP>CDP。
S203:为末级缓存中的每个缓存组(cache set)配置一个饱和计数器(saturatingcounter),用于动态地调整不同缓存行的插入位置和提升幅度,饱和计数器的位数=log2A,其中A为末级缓存的组相联度,则饱和计数器的数值范围为0~(A-1)。
为了反映本发明为不同类型的缓存行设定的不同优先级,本发明对LRU的插入策略和提升策略分别进行了调整。比如,新插入的缓存行数据应该根据其缓存行类型及其优先级决定其插入位置,同时命中的缓存行数据提升的幅度也应有不同,而不是如LRU把缓存行数据都放到最高优先级的位置。当发生NVM按需访问缺失时饱和计数器值减一,而当DRAM按需访问缺失时进行加一。然而针对写回访问,无论命中或是缺失,都不会对饱和计数器进行更新。具体见缓存行提升策略和缓存行插入策略。
直观上看,饱和计数器值越大表明当前执行阶段DRAM按需访问缺失次数越多,因此对于DRAM数据块的插入位置和提升幅度都应该做出相应的提高,以增加对DRAM数据的命中率。由于写回访问并不是处理器主动发出的请求,而只是上层缓存被动的把脏数据替换出去造成的,因此不能代表程序当前执行阶段的访存情况,所写回访问不应该对饱和计数器值做出改变。
S204:为每个缓存组中的每个缓存行设置标记,用于指示该缓存行中的数据是来源于NVM还是DRAM。
S205:判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,
如果命中,则进行步骤S206执行缓存行提升策略(Promotion Policy);
如果未命中,则需要从上级缓存或主存中获取数据,直接进行步骤S208执行缓存行插入策略(Insertion Policy),或者先进行步骤S207执行缓存行回收策略(EvictionPolicy),然后进行步骤S208执行缓存行插入策略(Insertion Policy)。
也就是说,如果当缓存组还有存储空间,可以直接进行缓存行插入;如果当缓存组已写满数据,则需要选择一个缓存行进行回收,以便留出空间,才能进行缓存行插入。
其中步骤201具体包括:
S2011:为处理器的每个核配置一个访问特性监控器(Access Feature Monitor,简称AFM),识别对应核上应用程序的内存访问特性。
S2012:采用动态抽样机制(Dynamic Sample Sampling,简称DSS),在每一个计数周期开始,从多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,所述一个计数周期是指当处理器的多个核运行的指令数之和从零达到100Million的时间。
选取的上述多个缓存组采用最近最少使用(Least Recently Used,简称LRU)替换策略,则每个缓存组的最高优先级位置(即MRU位置)的位数值为A-1,最低优先级位置(即LRU位置)的位数值为0。
由于LRU替换策略所具有栈的特性(如果在路数为N的情况下发生明中,那么在路数超过N的情形下肯定发生命中),本发明对AFM中的缓存组采取LRU替换策略,可以粗略估计出当前核在分配不同路数时的命中情况,以便用于路数划分的判定。
访问特性监控器给上述多个缓存组中的每一路设置四个标记信息,所述标记信息包括:(1)tag,用于指示是否命中的信息;(2)dirty,用于指示当前数据是否是脏数据的信息;(3)isNVM,用于指示当前数据是否来源于NVM的信息;(4)加权命中计数器(WeightedHit Counter,简称WHC),用于统计当前缓存行所在位置命中权重值。
在混合主存DRAM和NVM的系统中,由于DRAM和NVM之间读写的非一致性,导致不能再单纯地以命中次数作为衡量系统性能的标准。比如以NVM中的相变存储器(Phase ChangeMemory,简称PCM)为例,其与DRAM相比,读延迟是DRAM是4.4倍,写延迟是DRAM的12倍。所以在相同命中次数的情况下,命中PCM次数多的系统性能要优于命中DRAM次数高的系统性能。因此本发明针对已有的访存特性监控器进行了改进以适应于混合主存系统,设置了加权命中计数器,在发生缓存行命中时,本发明在其对应位置的加权命中计数器上不再单纯加1,而是根据命中的缓存行类型外加不同的权重值以体现DRAM和NVM之间读写的非一致性,比如DRAM和PCM的读延迟比例为1:4.4,写延迟比例为1:12。当命中的数据为DRAM时,其对应位置的加权命中计数器加1,而当命中的数据为NVM时,如果为干净数据,其对应位置的加权命中计数器加4.4,否则,加权命中计数器加12。这是因为对脏缓存行发生一次命中,就相当于减少了一次写回操作。因此在每一个计数周期内,加权命中计数器所累加的命中权重值会有所不同。
S2013:在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值。
S2014:根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数(cache way)划分方式,记为{a
1,a
2,……,a
n},其中每个核对应的末级缓存路数为a
i,则
上述步骤S206的缓存行提升策略(Promotion Policy)包括:判断命中的缓存行的数据是来源于NVM还是DRAM,
如果命中的缓存行的数据来源于NVM,则将该缓存行在其当前优先级位置的基础上再提升(DNP)p个位置,其中(DNP)p=(ai+(A-饱和计数器的数值))/2,该缓存行的位置最大可提升至最高优先级位置(即MRU位置);
如果命中的缓存行的数据来源于DRAM,则将该缓存行在其当前优先级位置的基础上再提升(DDP)p个位置,其中(DDP)p=(ai+饱和计数器的数值)/8,该缓存行的优先级位置最大可提升至最高优先级位置(即MRU位置)。
上述步骤S207的缓存行回收策略(Eviction Policy)是指选取在缓存组中处于最低优先级位置(即LRU位置)的缓存行进行回收。
上述步骤S208的缓存行插入策略(Insertion Policy)包括:判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
如果是写回访问,并且上级缓存的数据来源于NVM,则将存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DNP)i,其中(DNP)i=ai+(A-饱和计数器的数值)/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度,该缓存行最大可插入至最高优先级位置(即MRU位置),最小可插入至最低优先级位置(即LRU位置);
如果是写回访问,并且上级缓存的数据来源于DRAM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DDP)i,其中(DDP)i=ai+饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度,该缓存行最大可插入至最高优先级位置(即MRU位置),最小可插入至最低优先级位置(即LRU位置);
如果是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CNP)i,其中(CNP)i=ai-饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度,该缓存行最大可插入至最高优先级位置(即MRU位置),最小可插入至最低优先级位置(即LRU位置);
如果是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CDP)i,其中(CDP)i=ai-(A-饱和计数器的数值)/4,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度,该缓存行最大可插入至最高优先级位置(即MRU位置),最小可插入至最低优先级位置(即LRU位置)。
作为一种可实施方式,
参考图3,示出了本可实施方式提供的系统整体架构示意图,系统主存由DRAM和NVM共同构成,处于同一线性地址空间下,片上缓存系统呈现多级层次架构,较大容量的LLC由2个处理器核(core1和core2)进行共享。另外,本发明为处理器的每个核设置了一个AFM,识别对应核上应用程序的内存访问特性,以获得应用程序对应的缓存行的命中情况。
参考图4,示出了本可实施方式提供的AFM的内部结构示意图,把处理器的多个核运行的指令数之和从零达到100Million的时间作为一个计数周期,在每一个计数周期开始,选取32缓存组作为访问特性监控器的监控样本,末级缓存的组相联度A=8,则两个处理器核的路数之和为8。访问特性监控器给上述多个缓存组中的每一路设置四个标记信息,所述标记信息包括:(1)tag,用于指示是否命中的信息;(2)dirty,用于指示当前数据是否是脏数据的信息;(3)isNVM,用于指示当前数据是否来源于NVM的信息;(4)加权命中计数器(Weighted Hit Counter,简称WHC),用于统计当前缓存行所在位置命中权重值。当命中的数据为DRAM时,其对应位置的加权命中计数器加1,而当命中的数据为NVM时,如果为干净数据,其对应位置的加权命中计数器加4.4,否则,加权命中计数器加12。因此在每一个计数周期内,加权命中计数器所累加的命中权重值会不同。
上述32个缓存组采用最近最少使用替换策略,则每个缓存组的最高优先级位置(即MRU位置)的位数值为7,最低优先级位置(即LRU位置)的位数值为0。
在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值。
参考图5,图5仅用于更形象地、直观地说明本可实施方式,实际操作中并不需要绘制,根据统计结果即可得出处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数。针对某一个核,随着命中权重值的增大,其分配路数的也增多。但从总命中权重值的曲线来看,所分配的路数呈现先上升后下降的趋势。命中权重值的最大值出现在core1被分配5路,core2被分配3路的情况下,则双核的末级缓存路数划分方式为{5,3},
将LLC中的缓存行分成四种类型:DN,DD,CN,CD,四种缓存行的优先级高低关系为DNP>DDP>CNP>CDP。
末级缓存中的每个缓存组(cache set)配置一个饱和计数器(counter),饱和计数器的位数=log2A=3,饱和计数器的数值范围为0~7。
为每个缓存组中的每个缓存行设置标记,用于指示该缓存行中的数据是来源于NVM还是DRAM。
参考图6,示出了本可实施方式提供的末级缓存执行三种管理策略的过程示意图。基于上述双核的末级缓存路数划分方式{5,3},当core1向末级缓存发起访问请求r,则ai=a1=5,末级缓存接收到访问请求r,当饱和计数器的数值(counter)为3时,首先判断当前访问请求r是否命中末级缓存的缓存行,
(1)如果命中,假设命中的是缓存行c,则执行提升策略,具体如下:判断命中的缓存行c的数据是来源于NVM还是DRAM,
i)如果命中的缓存行c的数据来源于NVM,缓存行c的当前位置(c.pos)为2,则计算出(DNP)p=(ai+(A-饱和计数器的数值))/2=(5+(8-3))/2=5,就将该缓存行c在其当前优先级位置的基础上再提升5个位置,则提升后位置(pos)=当前位置(c.pos)+(DNP)p=2+5=7,即提升到MRU位置;
ii)如果命中的缓存行c的数据来源于DRAM,缓存行c的当前位置(c.pos)为2,则计算出(DDP)p=(ai+饱和计数器的数值)/8=(5+3)/8=1,就将该缓存行在其当前优先级位置的基础上再提升1个位置,则提升后位置(pos)=当前位置(c.pos)+(DDP)p=2+1=3。
(2)如果未命中,则需要从上级缓存或主存中获取数据,执行缓存行回收策略,即选取在缓存组中处于LRU位置的缓存行进行回收,然后执行缓存行插入策略。如果当缓存组还有存储空间,可以直接进行缓存行插入;如果当缓存组已写满数据,则需要选择一个缓存行进行回收,以便留出空间,才能进行缓存行插入。具体如下:判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
i)如果访问请求r是写回访问,并且上级缓存的数据来源于NVM,则计算出(DNP)i=ai+(A-饱和计数器的数值)/2=5+(8-3)/2≈7,结果为小数的取其下位整数,即存储该数据的缓存行插入末级缓存的缓存组的位置的位数值为7(MRU位置);
ii)如果访问请求r是写回访问,并且上级缓存的数据来源于DRAM,则计算出(DDP)i=ai+饱和计数器的数值/8=5+3/8≈5,结果为小数的取其下位整数,即存储该数据的缓存行插入末级缓存的缓存组的位置的位数值为5;
iii)如果访问请求r是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,即饱和计数器的数值为2,然后计算出(CNP)i=ai-饱和计数器的数值/8=5-2/8≈5,结果为小数的取其下位整数,就存储该数据的缓存行插入末级缓存的缓存组的位置的位数值为5;
iv)如果访问请求是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,即饱和计数器的数值为4,然后计算出(CDP)i=ai-(A-饱和计数器的数值)/4=5-(8-4)/4=4,就存储该数据的缓存行插入末级缓存的缓存组的位置的位数值为4。
本发明只是为面向混合主存的多核共享末级缓存的管理方法提供了一种可实施的方法,基于这种管理方法,可以优化更多的存储系统,进而使其为用户提供更高效的服务。
实施例3
参考图7,一种面向混合主存的多核共享末级缓存管理装置,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,该管理装置包括以下模块:
末级缓存路数划分模块301,用于获得处理器的多核的末级缓存路数划分方式;
判断模块302,用于判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,如果命中,则执行缓存行提升模块303;如果未命中,则需要从上级缓存或主存中获取数据,直接执行缓存行插入模块305,或者先执行缓存行回收模块304,然后执行缓存行插入模块305。
所述缓存行提升模块303,用于判断命中的缓存行是来源于NVM还是DRAM,
如果命中的缓存行来源于NVM,则将该缓存行在其当前优先级位置的基础上再提升(DNP)p个位置,其中(DNP)p=(ai+(A-饱和计数器的数值))/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果命中的缓存行来源于DRAM,则将该缓存行在其当前优先级位置的基础上再提升(DDP)p个位置,其中(DDP)p=(ai+饱和计数器的数值)/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
所述缓存行回收模块304,用于选取在缓存组中处于最低优先级位置的缓存行进行回收操作。
所述缓存行插入模块305,用于判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
如果是写回访问,并且上级缓存的数据来源于NVM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DNP)i,其中(DNP)i=ai+(A-饱和计数器的数值)/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是写回访问,并且上级缓存的数据来源于DRAM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DDP)i,其中(DDP)i=ai+饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CNP)i,其中(CNP)i=ai-饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CDP)i,其中(CDP)i=ai-(A-饱和计数器的数值)/4,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
上述末级缓存路数划分模块301进一步包括:
访问特性监控器配置模块3011,用于为处理器的每个核配置一个访问特性监控器,识别对应核上应用程序的内存访问特性;
动态抽样模块3012,用于采用动态抽样机制,在每一个计数周期开始,从多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,选取的上述多个缓存组采用最近最少使用替换策略,所述一个计数周期是指当处理器的多个核运行的指令数之和从零达到100Million的时间;
命中权重值读取模块3013,用于在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值;
末级缓存路数获取模块3014,用于根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数划分方式。
上述末级缓存路数划分模块301连接判断模块302,其中判断模块302进一步包括缓存行提升模块303、缓存行回收模块304、缓存行插入模块305,其中缓存行回收模块304连接缓存行插入模块305,上述访问特性监控器配置模块3011依次顺序连接动态抽样模块3012、命中权重值读取模块3013和末级缓存路数获取模块3014后整体再与末级缓存路数划分模块301相连。
实施例4
参考图7,一种面向混合主存的多核共享末级缓存管理装置,混合主存包括DRAM和NVM,末级缓存分为多个缓存组,每个缓存组包括多个缓存行,所述混合主存和末级缓存中的数据存在多路组相联映射关系,该管理装置包括以下模块:
末级缓存路数划分模块301,用于获得处理器的多核的末级缓存路数划分方式;
缓存行分类模块306,用于将末级缓存中的缓存行分成四种类型:DN、DD、CN和CD,所述DN、DD、CN和CD四种缓存行的优先级分别用DNP、DDP、CNP和CDP代表,并设定上述四种缓存行的优先级高低关系为DNP>DDP>CNP>CDP;
饱和计数器配置模块307,用于为末级缓存中的每个缓存组配置一个饱和计数器,以动态地调整不同缓存行的插入位置和提升幅度;
缓存行标记模块308,用于为每个缓存组中的每个缓存行设置标记,以指示该缓存行中的数据是来源于NVM还是DRAM;
判断模块302,用于判断末级缓存接收到的访问请求是否命中末级缓存的缓存行,如果命中,则执行缓存行提升模块303;如果未命中,则需要从上级缓存或主存中获取数据,直接执行缓存行插入模块305,或者先执行缓存行回收模块304,然后执行缓存行插入模块305。
所述缓存行提升模块303,用于判断命中的缓存行是来源于NVM还是DRAM,
如果命中的缓存行来源于NVM,则将该缓存行在其当前优先级位置的基础上再提升(DNP)p个位置,其中(DNP)p=(ai+(A-饱和计数器的数值))/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果命中的缓存行来源于DRAM,则将该缓存行在其当前优先级位置的基础上再提升(DDP)p个位置,其中(DDP)p=(ai+饱和计数器的数值)/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
所述缓存行回收模块304,用于选取在缓存组中处于最低优先级位置的缓存行进行回收操作。
所述缓存行插入模块305,用于判断未命中缓存行的访问请求是写回访问还是按需访问,以及待插入的缓存行的数据是来源于NVM还是DRAM,
如果是写回访问,并且上级缓存的数据来源于NVM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DNP)i其中(DNP)i=ai+(A-饱和计数器的数值)/2,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是写回访问,并且上级缓存的数据来源于DRAM,则存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(DDP)i其中(DDP)i=ai+饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果是按需访问,并且主存的数据来源于NVM,则先将饱和计数器的数值减一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CNP)i,其中(CNP)i=ai-饱和计数器的数值/8,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度;
如果访问请求是按需访问,并且主存的数据来源于DRAM,则先将饱和计数器的数值加一,然后存储该数据的缓存行插入末级缓存的缓存组的位置的位数值设定为(CDP)i,其中(CDP)i=ai-(A-饱和计数器的数值)/4,其中ai为每个核对应的末级缓存路数,A为末级缓存的组相联度。
上述末级缓存路数划分模块301进一步包括:
访问特性监控器配置模块3011,用于为处理器的每个核配置一个访问特性监控器,识别对应核上应用程序的内存访问特性;
动态抽样模块3012,用于采用动态抽样机制,在每一个计数周期开始,从多个核对应的末级缓存中的所有缓存组中选取多个缓存组作为访问特性监控器的监控样本,选取的上述多个缓存组采用最近最少使用替换策略,所述一个计数周期是指当处理器的多个核运行的指令数之和从零达到100Million的时间;
命中权重值读取模块3013,用于在每一个计数周期结束时,读取访问特性监控器所获得的每个核上应用程序所对应的缓存行的命中权重值;
末级缓存路数获取模块3014,用于根据上述命中权重值,得到处理器的所有核上应用程序所对应的缓存行的命中权重值之和最大时每个核对应的末级缓存路数,即为处理器的多核的末级缓存路数划分方式。
上述末级缓存路数划分模块301依次顺序连接缓存行分类模块306、饱和计数器配置模块307、缓存行标记模块308和判断模块302,其中判断模块302进一步包括缓存行提升模块303、缓存行回收模块304、缓存行插入模块305,其中缓存行回收模块304连接缓存行插入模块305,上述访问特性监控器配置模块3011依次顺序连接动态抽样模块3012、命中权重值读取模块3013和末级缓存路数获取模块3014后整体再与末级缓存路数划分模块301相连。
对于本发明实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。而这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围,任何本领域的技术人员在不脱离本发明构思和原则的前提下所做出的等同变化与修改,均应属于本发明保护的范围。