论文部分内容阅读
近年来,随着信息技术的普及,大量的数据在源源不断的产生、处理和存储,因此,庞大的需求对存储技术的要求也越来越高。非易失性内存作为新兴的存储技术,以其高访问速度、高存储密度、可字节寻址和非易失性等优点被视为潜力巨大的存储技术。从嵌入式系统到普通计算机到大型的数据中心,非易失性内存正在被越来越多的部署成单一型或者混合型的存储系统。在这些系统中,不同的应用场景会产生大量的小粒度数据,而这些数据的频繁更新和分散分布对存储系统的读写寿命和访问性能带来巨大的考验。非易失性内存(Non-Volatile Memory,NVM)作为新兴的存储技术,在进行应用时需要面对以下两个问题: ① NVM 的存储单元存在写耐受度低的缺点,使其难以承受频繁的小粒度数据更新操作。②传统的内存管理技术没有考虑到数据更新操作带来的读写寿命问题。③ 传统的存储管理技术并没有考虑到混合型存储系统的特点,不能很好地结合传统内存技术的优势充分发挥NVM的性能。 因此,本文的研究目的是设计一个基于NVM,特别是具备混合型存储介质如混合 DRAM 和 NVM,一个带磨损均衡的小粒度内存管理机制,提供高效的内存访问效率,同时能针对小粒度数据的内存分配进行磨损均衡的优化,延长NVM的使用寿命。本文的主要研究内容如下: ① 小粒度数据的高效内存管理。小粒度数据在内存中分布分散而访问频率高,因此以缓存行(大小为 64Byte)为最小的基本内存单元,同时将页内的存储空间按照基本单元划分,采用页内元数据的方式来进行管理。 ② 小粒度内存空间的磨损均衡策略。小粒度数据的更新频繁,加入复杂的统计机制来进行磨损均衡的优化势必会影响系统效率。本文提出顺序写策略从分配机制上解决内存基础单元的磨损均衡问题。同时引入 DRAM 组合混合内存系统,不仅能降低使用成本,并且能利用DRAM来分担部分数据的写磨损问题。本文通过在DRAM中生成页内元数据和页级管理数据临时数据,并采用条件持久化的机制更新到NVM中,进一步解决了元数据区的磨损问题。 ③ 页内空闲单元元数据计算算法。由于页内元数据占用的空间需要尽量小,因此采用结构最简单的位图来进行空间的管理。但是由于位图的遍历是很消耗系统资源的操作,因此本文设计了分片计算算法来进行高效的位图数据处理。 ④ 持久化机制。由于配置 NVM,故系统的断电可恢复性是一项重要指标,而DRAM的数据在刷回到NVM的过程中,如果发生断电,就会产生数据的不一致性的问题。因此,采用写日志的方法进行处理,来维护一致性。 ⑤ 多线程优化。单线程的内存分配机制在面临多线程的时候会产生资源的抢占,造成系统性能的浪费。因此采用线程局部资源的方式,让每个线程拥有一个局部资源缓冲区,就能减少资源竞争的问题,提高多线程的性能。 本文根据提出的问题,设计了一个全新的带磨损均衡的小粒度内存分配器(Wear-leveling Aware Fine-grained Allocator,WAFA)。实验结果表明,与基于NVM的分配管理机制NVMalloc和nvm_malloc相比,WAFA中页面的总写入次数仅仅只达到两者的 81.1%和 40.1%。对于每个基本存储器单元的写入次数,WAFA 的变化系数分别比NVMalloc和malloc小69.4%和97.3%。同时,WAFA可以比glibc malloc提高9.6%的系统性能。