论文部分内容阅读
存储一直是计算机系统中重要的环节。计算机系统的计算高速性、运行自动性都与良好的存储系统有着密不可分的联系。以动态随机存储器(Dynamic Random Access Memory,DRAM)为代表的易失型存储设备在主存中扮演着重要的角色。DRAM具有存取延迟小、存取功耗低、无耐受限制等特点,一直也是计算机系统中主存的重要选择。然而,随着互联网技术和云计算技术的迅猛发展,信息时代正向大数据时代飞速转变,这成为传统存储系统所不得不面对的挑战。在过去的30年间,相比CPU有效时钟周期时间10000倍的提升,以SRAM (Static Random Access Memory,静态随机存储器)与DRAM为代表的传统主存系统的访存速度仅仅分别提升了200倍及9倍,这加剧了CPU与主存间的性能差异。而且,SRAM有着极高的运行功耗,DRAM的刷新功耗也是不可回避的;在数据密集型应用中,存储系统所产生的能耗占到了系统总能耗的35%-55%。与此同时,传统主存系统都存在着集成工艺的瓶颈,空间扩展性受到极大的限制。随着新型存储介质的日渐成熟,延迟越来越低,带宽越来越高,以动态随机存储器为代表的易失型存储设备在主存中的垄断地位将可能被非易失性存储设备(Non-Volatile Memory,NVM)所取代。相变随机存储器(Phase Change Random Access Memory,PRAM)作为非易失性存储器的代表之一,具有非易失性、高密度、极低的空闲功耗等特点。但与此同时,相较于DRAM,PRAM读写延迟不均衡,特别其写延迟是DRAM写延迟的10倍以上。另一个不可回避的问题是,PRAM具有写磨损的限制。因此,如何综合传统存储与新型存储的优势,设计高能效的主存架构,实现可应对大数据、云计算所需求的新型主存系统已经成为工业界和学术界的研究热点。本文针对传统易失性存储器和新型非易失性存储器的特点,面向由DRAM和PRAM构成的混合主存架构,专注于研究混合架构下的存储管理机制和调度策略,寻求如何降低混合主存系统的工作能耗、提高使用效率和延长其使用寿命的技术与方法,探索实现高能效主存系统的方案和路径。本文研究的混合主存架构由DRAM和PRAM组成,并将DRAM和PRAM进行统一编址。在这种混合架构下,DRAM具有读写延迟小的优势,但其静态功耗和刷新功耗较大;相较于DRAM,PRAM的静态功耗几乎可以忽略不计,读操作的延迟与DRAM读操作延迟相近,但其写操作延迟远远大于在DRAM上的写操作;并且需要考虑相变材料的耐受问题,大量的写操作会加剧PRAM的失效速率。本文就这一问题展开研究,提出了两种基于粗粒度的离线任务分配策略:整数线性规划策略(Integer Linear Programming,ILP)和离线自适应分配策略(offline adaptive space allocation algorithm,offline-ASA)。离线分配策略面向静态任务集合,以任务为分配单位,通过控制阈值设定,将尽可能多的写操作放在DRAM中进行,以降低PRAM中的写操作数量,降低工作能耗,减少访存延迟;合理利用DRAM资源,充分使用处于工作状态中的DRAM资源,并将未使用的DRAM资源转入空闲状态,以减少DRAM的刷新能耗。仿真实验表明,ILP策略可以获取高达42.3%能耗节约,但其性能损失也达到了31.3%;offline-ASA算法可以节约能耗35.1%,性能代价为17.1%,而该方法在Hadoop YARN节能调度策略中的应用有效的降低了云计算平台能耗。在离线任务分配策略研究的基础上,本文提出了一种基于任务调度的在线分配策略:在线自适应分配策略(online adaptive space allocation algorithm, online-ASA)。本策略面向在线周期任务集合进行动态任务分配,在保证任务的可调度性前提下,实现能耗的减少、降低性能损失和减少PRAM写磨损。PRAM的写操作有着较长的延迟,将任务分配到PRAM中必然延长任务的执行时间,如果超过该任务的截止时间,该任务将因分配到PRAM中而影响正常调度。因此,本策略首先计算和保证任务的可调度性,同时计算每个任务的读写操作次数,通过阈值判定每个任务的属性,将写密集型任务分配到DRAM,以减少在PRAM上的写操作,保障运行效率,降低访存功耗;设计DRAM资源的动态管理,以减少DRAM的刷新能耗。仿真实验表明,本策略在付出平均13.6%的性能代价的情况下,可以获得27.01%的能耗节约。任务分配是基于粗粒度的调度,而传统主存调度多以细粒度的页(page)为单位,研究适用于新型混合主存架构的页面调度算法是一个热点课题。本文针对由DRAM和PRAM组成的统一编址的混合主存架构,提出了一种基于页粒度的页缓存(page caching)调度算法:基于混合主存架构的CLOCK算法(CLOCK for page cache in hybrid memory architecture,CLOCK-HM)。传统CLOCK算法适用于易失性主存架构,算法通过记录页面访问频度关注页面访存的命中率,而算法本身不考虑页的读写属性,也就不会区分写密集型页面和读密集型页面,无法充分利用DRAM和PRAM的特性,因而无法应对混合主存架构的特色需求。CLOCK-HM算法充分考虑DRAM和PRAM的特点,对CLOCK算法进行改进以应对新型混合主存架构。本算法设计了两个循环链表结构和若干控制标志位,通过对链表和标志位的管理来减少在PRAM上的写操作,控制DRAM与PRAM间的页迁移次数,同时维持较高的缓存命中率。仿真实验表明,CLOCK-HM算法更加适用于混合主存架构;而且,通过与其它适用于混合主存架构的调度算法(CLOCk-DWF、LRU-WPAM)进行实验对比,CLOCK-HM算法在控制PRAM上的写操作数量、减少页面迁移次数、降低主存能耗以及降低时间代价等方面都表现出较大的优势;与此同时,CLOCK-HM算法仍然能够保持较高的缓存命中率。新型非易失存储器有着诸多的特点和应用优势,但是缺少实际的应用平台去仿真实验,特别是用于主存系统中,其优越性的体现缺少真实的度量。各种针对混合存储架构的策略研究与优化,都缺少合适的仿真工具去验证。设计和实现基于非易失性存储的混合存储原型系统可以为研究提供真实的实验数据和有效的验证手段。因此,本文设计与实现了两种混合存储架构的原型系统。在第一种混合架构设计方案中,采用具有高密度的PRAM做主存,少量DRAM充当PRAM的缓存,其目的是融合PRAM的空间扩展性和DRAM的低延迟特性,同时兼顾PRAM的写磨损的不足;在设计中,将多片PRAM芯片分组,组内:采用并行设计,组间采用流水线设计,以此提升访存速度。在第二种方案中,采用磁阻式随机访问存储器(Magnetic Random Access Memory,MRAM)和DRAM统一编址,以实现传统易失性存储器与新型非易失存储器的并行应用;在本设计中,采用48片MRAM芯片并行设计,可实现数据并行访存,读取速度可以达到2GB/s。通过原型系统的测试,有关混合主存系统的重要参数得以在实际运行中测量获取,这为相关研究的仿真实验找到了真实的数据依据和提供了仿真工具。