虽然这篇的有些引用也是十多年前的数据,但是作为学习一个阶段的总结,和大佬对比一下在知识结构上的完整度,还有什么是不清楚的。还是挺有用的。
- 文章来自Journal of Computer Science and Technology, (JCST), 2021
- A Survey of Non-Volatile Main Memory Technologies:State-of-the-Arts,Practices, and Future Direction
所有作者及单位
- Hai-Kun Liu, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
- Di Chen, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
- Hai Jin, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
- Xiao-Fei Liao, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
- Binsheng He, 新加坡国立大学
- Kan Hu, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
- Yu Zhang, 华中科技大学计科院,集群和网格计算实验室,服务计算技术与系统实验室,国家大数据技术与系统工程技术研究中心
Abstract
非易失性主存储器(NVMM)最近已成为未来存储系统的一种有前途的技术。通常,NVMM具有许多理想的属性,例如高密度、字节寻址、非易失性、低成本和能效,但代价是高写入延迟、高写入功耗和有限的写入耐用性(写寿命短)。NVMM已经成为动态随机存取存储器(DRAM)的强有力的替代品,并将从根本上改变内存系统的格局。它们在系统架构设计、操作系统内存管理以及混合内存系统的编程模型方面带来了许多研究机会和挑战。在本文中,我们首先回顾了新兴NVMM技术的概况,然后对NVMM技术的最新研究进展进行了综述。我们根据不同的维度(如内存架构、数据持久性、性能改进、节能和磨损均衡)对这些研究进行分类。其次,为了展示构建NVMM系统的最佳实践,我们从架构、系统和应用的维度介绍了我们最近的混合存储系统设计工作。最后,我们对NVMM的未来研究方向提出了展望,并对设计挑战和机遇进行了阐述。
关键词:非易失性存储器、持久性存储器、混合存储器系统、存储器层次结构
non-volatile memory, persistent memory, hybrid memory systems, memory hierarchy
1. Introduction
在大数据时代,内存计算越来越受到数据密集型应用的青睐。内存子系统对现代计算系统的功能和性能具有越来越大的影响。使用DRAM (动态随机存取存储器)的传统大内存系统[1 ,2]在功率和密度方面面临严峻的可扩展性挑战[3]。尽管DRAM规模从2013年的28nm持续到2016年的10+ nm[4,5] ,扩展已经放缓,变得越来越困难。此外,最近的研究[6-10]表明,基于DRAM的主存储器约占物理服务器总能耗的30%-40%。新兴的非易失性主存储器(NVMM)技术,如相变存储器(PCM)、自旋转移扭矩存储器(STT-RAM)和3D XPoint[11]通常提供比DRAM更高的内存密度、更低的每的比特成本和待机功耗。NVMM技术的出现有可能弥合慢速持久存储(即磁盘和SSD)与DRAM之间的差距,并将从根本上改变存储系统的格局。
表1显示了闪存SSD、DRAM、PCM、STT-RAM、ReRAM和Intel Optane DC持久内存模块(DCPMM)的不同内存特点,包括读/写延迟、写耐久性和待机功耗[7,12,13]。尽管NVMM在密度和能耗方面具有各种优势,但其写入延迟比DRAM高约6倍-30倍, 写入功耗比DRAM高约5倍- 10倍。此外,NVMM的写入耐久性非常有限(约 $10^8$ 倍) ,而DRAM能够承受约 $10^{16}$ 次的写入操作。这些缺点使得很难直接替代DRAM。使用NVMM的一种更实用的方法是混合内存架构,由DRAM和NVMM组成[15,16]。
为了充分发挥两者在混合内存系统中的优势,在性能提升、节能降耗、磨损均衡、数据持久性等方面存在许多开放的研究问题。为了解决这些问题,已经有许多关于内存层次结构的设计[15-18]、内存管理[19-21]和内存分配方案[22-24]的研究。这些研究成果导致了混合内存架构、操作系统和编程模型的创新。尽管学术界和工业界已经做出了大量工作来将新兴NVMM集成到存储器层次结构中,但仍有许多挑战需要解决。
另一方面,先前对NVMM技术的研究大多基于模拟/仿真NVMM器件,与真正非易失性(双列直插式内存模块Dual In-line Memory Modules)DIMM相比,NVMM设备承诺的性能可能存在各种偏差。最近宣布推出的Intel Optane DCPMM终于将NVMM DIMM商业化。真正的Intel Optane DCPMM与之前的研究预期承诺的功能相比,表现明显不同[18,20,26,28]。例如,如表1所示,Intel Optane DCPMM的读取延迟比DRAM高2倍-3倍,而其写入延迟甚至低于DRAM。单个Optane DCPMM DIMM的最大读写带宽分别为6.6GB/s和2.3GB/s,而DRAM的读写带宽之间的差距要小得多(1.3x)。此外,随着系统中并行线程数量的增加,读/写性能是非单调的[25]。在他们的实验中,1个到4个线程之间达到了峰值性能,然后逐渐下降。由于Optane DCPMM DIMM的这些关键特性,以前关于持久性内存系统的研究应该重新审视和优化,以适应真正的NVMM DIMM。
贡献。本文首先回顾关于混合内存架构、操作系统级混合内存管理和混合内存编程模型的最新研究现状。表2显示了NVMM技术的最新研究分类。我们根据不同维度对这些研究进行分类,包括内存架构、持久内存(PM)管理、性能改进、节能、磨损均衡、编程模型和应用程序。我们还讨论了它们的相似性和差异,以突出设计挑战和机遇。其次,为了展示构建NVMM系统的最佳实践,我们从架构、系统和应用的维度展示了我们在混合存储系统设计方面的努力。最后,我们提出了在实际应用场景中使用NVMM的未来研究方向,并对研究领域的设计挑战和机遇进行了一些说明。
尽管有其他关于NVMM的研究,但鉴于NVMM的快速发展,这篇综述从一个独特的角度对NVMM进行了回顾。在[97]中, 作者介绍了PCM技术的最新研究。以解决有限的写入耐久性、潜在的长延迟、高能量写入、功耗等问题以及一些对内存隐私的担忧。在[98]中,作者对PCM设备及其架构和软件进行了全面的调查和回顾。其他一些有趣的调查侧重于在架构上将四种NVM技术(PCM、MRAM、FeRAM和ReRAM )集成到现有存储层次结构[99]中,或将NVM用于存储和主存储器系统的软件优化[100]。我们的调查与那些调查有三个不同之处。首先,先前的研究[97 ,98]从计算机架构的角度关注PCM设计。相比之下,我们的论文主要从存储器层次、系统软件和应用的维度来研究使用混合存储器的系统。其次,我们的论文包含了更多新发表的期刊、会议论文的评论。特别是,我们对新发布的Intel Optane DCPMM设备进行了更多研究。第三,我们介绍了最近关于存储器系统的近期经验,以阐明未来混合存储器系统的挑战和机遇。
本文的其余部分组织如下。第2节描述了现有的由DRAM和NVMM组成的混合内存架构。第3节介绍了NVMM中数据持久性保证的挑战和当前解决方案。4节介绍了混合存储器系统中性能优化和节能的最新研究。第5节介绍NVMM写耐久性的研究。第6节介绍了研究NVMM技术所做的努力和实践。在第7节中,我们讨论了NVMM的未来研究方向。我们在第8节结束本文。
2. Hybrid Memory Architectures混合内存架构
已经有很多关于混合存储器架构的研究。通常,主要有两种混合存储器架构,即水平和分层[18],如图1所示。
2.1 Horizontal Hybrid Memory Architectures水平混合存储器体系结构
许多DRAM-NVMM混合存储器系统[14 ,15 ,31]通过OS在平面(单个)存储器地址空间中管理DRAM和NVMM,并将它们两者用作主存储器[31 ,32]。为了提高数据访问性能,这些混合内存系统需要通过将频繁访问的热NVMM页面迁移到DRAM来克服NVMM的缺点,如图1(a)所示。需要开发内存访问监控机制来指导页面迁移。
内存访问监控。Zhang和Li[31]使用多队列算法对页面的热度进行分类,并将热页面和冷页面分别放置在DRAM和NVMM中。Park等人[32]也主张用于管理DRAM和NVMM的水平混合存储架构。此外,他们还提出了三种优化策略来降低混合存储系统的能耗。他们以非常细的DRAM行粒度监视内存数据,并定期检查每个DRAM行中的访问计数器。根据计数器将数据写回NVMM,以减少DRAM刷新的能耗。在再次访问数据之前,数据不会从NVMM缓存到DRAM。脏数据尽可能长时间地保存在DRAM中,以减少DRAM和NVMM之间的数据交换开销以及NVMM的昂贵写操作。
页面迁移。针对不同的优化目标,已经提出了许多页面迁移算法。Soyoon等人[33]认为,在识别热页时,NVMM写入的频率比数据访问的最近性更重要,并提出了一种称为CLOCK with Dirty bits and Write frequency(CLOCK-DWF)的页替换算法。对于每个NVMM写入操作, CLOCK-DWF需要首先将相应的页面提取到DRAM,然后在DRAM中执行写入。这种方法可能会导致许多不必要的页面迁移,从而给NVMM带来更多的能耗和写回操作。Salkhordeh和Asadi[34]考虑了内存写入和读取,以迁移有利于性能和节能的热页面,并使用两个最近最少使用的(LRU)队列分别选择DRAM和NVM中的要被驱逐的页面。Yoon[17]等人基于行缓冲区局部性进行了页面迁移,其中行缓冲区命中率低的页面被迁移到DRAM,而行缓冲区点击率高的页面仍保留在NVMM中。Li[101]等人提出了一种实用模型,用于基于实用程序定义来指导页面迁移,该实用程序定义基于许多因素,如页面热度、内存级并行性和行缓冲区局部性。Khouzani[35]等人考虑了程序的内存布局和内存级并行性,以迁移混合内存系统中的页面。
架构限制。在水平混合存储器架构中管理NVMM和DRAM有几个挑战。
首先,页面级内存监控成本高昂。一方面,由于当今的商品x86系统不支持页面粒度的内存访问监控,因此硬件支持的页面迁移方案需要大量的硬件修改来监控内存访问统计[14,15,33]。另一方面, OS层的内存访问监控通常会导致显著的性能开销。许多操作系统在页面表条目(PTE)中为每个页面维护一个“已访问”位,以标识该页面是否被访问。然而,该位不能真实地反映页面访问的最近性和频率。因此,一些基于软件的方法将禁用Translation Lookaside Buffer(TLB)[102]来跟踪每个内存引用。这种页面访问监控机制通常会导致显著的性能开销,甚至抵消混合内存系统中页面迁移的好处。
第二,页面迁移成本也很高。一次页迁移可能导致多次页读/写操作(代价高昂)。页面可能只包含一小部分热数据,因此由于内存带宽和DRAM容量的浪费,页面粒度的迁移成本相对较高。
第三,热页面检测机制可能需要很长时间来预热页面,从而降低页面迁移的收益。此外,对于某些不规则的内存访问模式,热页面预测可能不准确,从而导致不必要的页面迁移。
2.2 Hierarchical Hybrid Memory Architectures分层混合存储器体系结构
许多研究建议通过分层的缓存-内存架构来组织DRAM和NVMM[16,38,39]。他们使用DRAM作为NVMM的缓存,如图1(b)所示。DRAM缓存对操作系统和应用程序是不可见的,完全由硬件管理。
Qureshi等人[16]提出了一种由大尺寸PCM和小尺寸DRAM组成的分层混合存储系统。DRAM缓存包含最近访问的数据,以减少最昂贵的NVMM访问,而大容量NVMM存储大部分所需数据,以避免在应用程序执行期间进行昂贵的I/O操作。类似地,Mladenov[38]设计了一个具有小容量DRAM缓存和大容量NVMM的混合存储系统,并基于应用程序数据的空间局部性对其进行管理。DRAM作为按需缓存进行管理,并通过LRU算法进行替换。Loh和Hill[39]以缓存行的粒度管理DRAM,以提高DRAM缓存的效率,并使用组连接方式将NVMM数据映射到DRAM缓存。他们将元数据tag和数据放在同一个存储行中,以便可以快速访问缓存命中的数据,并减少标记查询的性能开销。
在这种内存结构中,由于DRAM被组织为N路集合关联缓存,因此需要额外的硬件来管理DRAM缓存。例如,需要SRAM存储器来存储DRAM高速缓存中数据块的元数据tag,并且需要硬件查找电路来查找DRAM高速缓冲存储器中所请求的数据。因此,为了访问DRAM缓存中的数据,需要两个内存引用,一个用于访问元数据,另一个用于实际数据。为了加速元数据访问,Qureshi[16]等人使用了高速SRAM来存储元数据。Meza等人[40]通过将元数据放在同一DRAM行中的数据块旁边,降低了标记存储的硬件成本。他们还建议使用片上元数据缓冲区将频繁访问的元数据缓存在小型SRAM中。
架构限制。尽管分层混合存储器架构通常比单独访问NVMM中的数据的场景提供更好的性能,但在运行具有较差局部性的工作负载时,它可能会导致性能显著下降[103]。原因是大多数硬件管理的分层DRAM-NVMM系统为了简化而利用基于按需的数据预取策略,因此DRAM缓存位于存储器分层的关键数据路径中。如果数据块未命中DRAM缓存,则无论页面热度如何,都必须将其从NVMM提取到DRAM。这种缓存填充策略可能会导致DRAM和NVMM之间频繁的数据交换(类似于缓存抖动问题)。另一方面,硬件管理的缓存架构不能充分利用DRAM容量。由于DRAM缓存被设置为关联的,因此每个NVMM数据块被映射到一个固定的集合。当集合已满时,它必须在将新的NVMM数据块提取到DRAM之前驱逐数据块,即使其他缓存集合为空。
2.3 Intel Optane DCPMM的体系结构
最近发布的Intel Optane DCPMM与DRAM结合使用时支持水平和分层混合内存结构。OptaneDCPMM DIMM目前有两种操作模式:内存模式和应用程序直接模式[25]。这些模式中的每一种对于特定的用例都有其优点。
内存模式。在这种模式下,DCPMM充当大容量的主存储器。操作系统将DCPMM识别为传统DRAM,并禁用DCPMM的持久性功能。如果将传统DRAM与DCPMM结合使用,它将隐藏在操作系统中,并充当DCPMM的缓存层。因此,DCPMM和DRAM实际上被组织在分层混合存储器架构中。内存模式的主要优点是提供在内存总线通道上提供优越内存容量。这种模式强烈强调在不修改上层系统的情况下围绕内存空间构建大容量存储环境以及应用程序。推荐的用例是扩展主内存容量,以实现更好的基础设施扩展,例如用于大数据应用程序的并行计算平台(MapReduce、图形计算)。
AD模式。在这种模式下,DCPMM为操作系统和应用程序提供了所有持久性特性。操作系统将DRAM和DCPMM分别作为主存储器和持久存储向应用程序公开。与DCPMM混合的传统DRAM仍然充当应用程序的标准DRAM,而DCPMM也被分配到存储器总线以实现更快的存储器访问。DCPMM用作两种namespace之一:直接访问存取(DAX)和块存储。前者的namespace是字节可寻址的持久存储,应用程序通过特殊的apis直接访问。因此,DCPMM和DRAM在这种模式下被逻辑地组织在一个水平混合内存架构中。后一个命名空间将DCPMM 作为区块存储设备提供给应用程序,类似于SSD,但是可以通过更快的内存总线访问。应用程序直接模式强调减少延迟和提高带宽的优势,比NVMe快2.7倍。推荐的用例适用于大型内存数据库,这些数据库需要满足数据持久性的要求。
还有一种结合了内存模式和应用程序直接模式的混合内存模式。DCPMM的一部分容量用于内存模式操作,DCPMM剩余的容量用于应用程序直接模式操作。这种混合内存模式为管理不同应用场景的混合内存系统提供了一种更灵活的方法。
2.4 Summary总结
上述两种混合存储器架构对于不同的场景有各自的优缺点。通常,分层架构更适合具有良好数据局部性的应用程序,而平面可寻址架构更适用于延迟不敏感或占空间较大的应用程序。关于哪种架构比另一种架构更好,目前尚无定论。实际上,Intel Optane DCPMM支持分层和平面可寻址混合内存架构。当前DCPMM的一个限制是,在重新配置DCPMM模式后,系统需要重新启动。如果一个可重新配置的混合内存系统能够以及时有效的方式动态地适应不同的场景,对于应用程序来说可能是有益的和灵活的。这可能是NVMM器件的一个有趣的研究方向。
3 Persistent Memory Management 持久内存管理
数据持久性是NVMM的一个重要设计考虑因素。下面,我们首先介绍持久内存(PM)管理所面临的技术挑战,然后介绍有关持久内存管理的最新研究,包括持久内存的使用、持久内存访问模式、容错机制和持久对象。
3.1 Technical Challenges 技术挑战
在混合内存系统中,NVMM可以在运行应用程序时充当主内存,并在应用程序完成时充当持久存储。NVMM的字节寻址能力和非易失性特性消除了内存和外部存储的区别。然而,当NVMM中的数据需要持久化时,就需要对NVMM中的数据进行重新组织和重新定位。
图2显示了持久内存(PM)的管理操作。NVMM区域是物理PM设备。NVMM区域可以像DRAM一样用作工作内存,也可以像磁盘一样用作持久存储。当程序完成时,工作内存中的数据应该刷新到持久存储中。此外,为了保证高可靠性,检查点机制被广泛利用来从电源故障或系统崩溃中恢复系统。Gao等人[104]开发了一种利用NVMM在混合内存系统中进行实时检查点的新颖方法。
有效管理PM面临多项挑战。首先,持久存储以文件系统的形式被广泛管理。作为字节可寻址NVMM提供比传统块设备更好的随机访问性能,基于PM的文件系统的性能瓶颈已经从硬件转移到系统软件堆栈。缩短软件堆栈中的数据路径至关重要。其次,由于许多CPU使用回写式缓存来实现写操作的高性能,因此末级缓存(LLC)可能会改变写回PM的数据顺序。如果出现断电或者系统崩溃的情况,可能会导致数据不一致的问题。因此,为了保证PM中数据的一致性,需要写操作的顺序和写原子性模型来保证PM中数据的一致性。第三,与基于PM的文件系统相比,持久对象和数据结构对于PM编程更有前景,因为它们消除了文件系统中的复杂数据结构,包括i节点、元数据和数据。然而,这些持久对象和数据结构仍然面临着保证数据一致性的挑战。接下来,我们将回顾试图解决这些挑战的研究
(这后面就跳过了,大部分在讨论文件系统,不是我目前考虑的,下次一定)
4 Performance Improvement and Energy Saving性能改进和节能
由于NVMMs显示出更高的访问延迟和写入能耗,已经有很多关于NVMMs的性能改进和节能的研究[32-34 ,63 ,65 ,66]。这些研究可分为三类:减少NVMM写入次数、减少NVM写入本身的能耗以及通过页面迁移减少DRAM的能耗。
4.1 NVMM Write Reduction NVMM写入减少
为了减少NVMM写入,分层结构显然更合适,因为DRAM缓存减少了大量NVMM写入。为此,开发了两种主要技术,即页面迁移和绕过NVMM写入。
页面迁移。页面迁移[14 ,15 ,33 ,58 ,59]策略主要基于写入次数和每个页面的最近访问频率来选择要迁移的页面。它们的主要区别在于触发页面迁移的条件。
PDRAM[15]根据写入次数将PCM页迁移到DRAM。在PDRAM中,存储器控制器维护一个表以记录每个PCM页的访问计数。如果写入PCM页的次数超过给定阈值,则触发页故障,然后将该页从PCM页迁移到DRAM。
CLOCK-DWF[33]将页面的写入历史集成到CLOCK算法中。当发生页面错误时,虚拟页面将从磁盘提取到PCM。否则, 该页将在DRAM中分配,因为该页可能是写密集型页。
RaPP[14]根据页面的等级在DRAM和PCM之间迁移页面。在RaPP中, 页面按访问频率和最近度排序。排名靠前的页面从PCM迁移到DRAM。因此,频繁写入的页面被放置在DRAM中,而很少写入的页面则被放置在PCM中。此外, RaPP还将任务关键页面放置在DRAM中,以提高应用程序性能。通过监视LLC中每个页面的写回操作的数量,存储器控制器能够跟踪每个页面的访问频率和最近性。RaPP根据多队列(MQ)算法对页面进行排序[118]。传统MQ定义了多个最近最少使用(LRU)队列。每个LRU队列是一个页面描述符队列, 其中包括参考计数器和逻辑过期时间。当第1次访问页面时,页面将移动到队列0的尾部。如果页面的引用计数达到 $2^{i+1}$ ,则提示页面排队i+1。一旦PCM页面被移动到队列5,它就被迁移到DRAM。
缓冲NVMM写入。在混合内存系统中, 缓存能够减少对NVMM的大量写入。适当的缓存替换策略不仅可以提高应用程序性能, 还可以降低NVMM的能耗。先前的研究[7,18]发现, 缓存中的许多块在被从缓存中逐出之前不会被再次使用。这些块称为死块,并消耗宝贵的缓存容量。DASCA[7]提出了一种死块预测方法,以减少STT-RAM缓存的能耗。驱逐这些死块将减少对STT-RAM缓存的写入,并且不会影响缓存命中率。WADE[62]进一步利用了NVMM读取和NVMM写入之间的能耗不对称性。由于NVMM写入操作比NVMM读取操作消耗更多的能量,因此频繁写入的块应保留在缓存中。WADE将缓存中的块分为两类:频繁回写的块和非频繁回写块。非频繁写回的块被替换,以提供更多机会将其他数据块保留在缓存中。
4.2 NVMM Energy Consumption Reduction NVMM能耗降低
由于NVMM写入显示的能耗是NVMM读取的能耗的几倍,因此在降低NVMM写入的能耗方面已经做出了许多努力。这些方法可以分为两类:差分写入(仅写入脏位而不是整行)和在单个写入期间并行多个写入。
如果要写入的位数超过缓存行中总位数的一半,则Flip-N-Write[64]尝试通过翻转位来减少PCM写入能耗。在一次写入期间, 如果行中超过一半的位被写入 ,则每个位被翻转,因此位翻转不超过总位的50%。同时,设置标记位以识别行中的位是否被翻转。当读取行时,标记位用于确定行中的位是否应该翻转。与Flip-N-Write类似, Andrew等人[73]提倡细粒度写入。它只监视脏位而不是一行中的所有位。一个叫做PCM的新术语引入功率令牌以指示单次写入期间的电源。假设为每个芯片分配Plimit Watts功率, 并且每个位写入需要Pbit Watts , Plimitpbit可以同时写入位。在芯片内,可以同时写入bank。在单个写入期间,如果多个写入请求位于不同的存储库中,并且总功耗不超过Plimit ,则可以同时执行这些写入。因此,细粒度写入不仅减少了NVMM写入,而且通过实现更高的存储体并行性来提高系统性能。
一些研究[65 ,66]通过分离SET和RESET操作来提高NVMM的能量效率。由于NVMM写入1比写入0消耗更多的能量和时间,如果以正确的方式执行这些写入,则可以减少写入延迟和能耗。三阶段写入[65]将写入操作分为比较阶段、写入零阶段和写入一阶段。在比较阶段,利用Flip-N-Write机制来减少写入次数。零位和一位分别在写零级和写一级中被分别写入。因为在大多数工作负载中,零写操作占了大部分写操作,所以Tetris write[66]进一步考虑了SET和RESET操作的不对称性, 并行调度代价高昂的写操作。在功率约束下, 写零操作被插入到写操作的剩余间隔中。
CompEx[67]提出了一种压缩扩展编码机制,以减少MLC/TLC NVMM的能耗。为了提高MLC/TLC单元的寿命,首先压缩数据以减少数据冗余。然后将扩展码应用于压缩数据并写入物理NVMM单元。对于具有8个状态的TLC单元,状态0、1、6和7称为终端能量状态,而状态2、3、4.和5称为中心能量状态。中心能量状态消耗更多的时间和能量,因为它们需要更多的编程和验证迭代。CompEx 利用扩展代码仅使用NVMM单元的终端能量状态。由于在编程MLC/TCL单元时,终端能量状态需要比中心能量状态更少的能量和时间,所以这一想法起效。混合片上缓存也被提出以减少CPU的功耗。RHC[68]构建了一个混合缓存,其中SRAM和NVMM中的每种方式都可以独立地打开或关闭。如果一行很长时间没有被访问,该行将被关闭,而其标签仍处于打开状态,以跟踪该行的访问。当对标签的访问超过阈值时,该行将通电。为了更好地利用高性能SRAM和低动态功耗NVMM,RHC对SRAM和NVMM采用不同的阈值。
4.3 DRAM Energy Consumption Reduction DRAM能耗降低
在只有DRAM的存储系统中, 静态能耗可以占存储系统总能耗的一半以上[69-71]。在混合存储器系统中,页面迁移技术被广泛用于减轻DRAM的能耗。非活动页面可以从DRAM迁移到NVMM,以便空闲的DRAM组可以断电。当页面稍后变为活动时, 它将再次迁移到DRAM。然而, 如果页面迁移没有正确执行,DRAM列组可能会频繁断电并重新激活。额外的能耗可能会抵消页面迁移带来的好处。
为了减少混合存储器系统的能耗,RAMZzz[8]揭示了高能耗的两个主要根源。一个是活动页面的稀疏分布,另一个是页面迁移可能不有效,因为DRAM的多能量状态之间的传输会引入额外的能量消耗。为了解决前一个问题, RAMZzz使用多个队列将具有类似活动的页面收集到同一个DRAM列中,从而避免频繁的能量状态转移。多个队列具有L个LRU队列来记录页面描述符。页面描述符包含一段时间内页面的ID和访问(读和写)计数。为了减少数据迁移的能量开销,将具有类似内存访问行为的页面重新组合在一起。这样,需要将页面分配给新的bank。RAMZzz在banks间并行迁移这些页面。
Refree[72]通过避免DRAM刷新,进一步降低了混合存储器系统中的DRAM能耗。当DRAM行需要刷新时,这意味着该行很长时间没有被访问。行中的数据已过时,不久以后不太可能再次访问。Refree将这些行逐出PCM,而不是在DRAM中刷新它们。在Refree中,所有行都会定期监视。此周期的间隔等于DRAM行自上次刷新以来的保留时间的一半。因此,行分为活动行和非活动行。激活行在访问。非活动行被逐出PCM,从而消除DRAM刷新。
5. Write Endurance Improvement 写入耐久性改进
在混合存储器系统中,主要有两种策略来克服NVMM的有限写入耐久性。一个是减少NVMM写入,另一个是磨损均衡,它在所有NVMM单元之间均匀分布写入流量。
5.1 Write Reduction写入减少
已经提出了许多用于改善NVM寿命的写减少策略,包括数据迁移[8、14、15]、 缓存或缓冲[16]和内部NVM写减少[64、73、74]。
提出了一种延迟写入机制[16],以减少对PCM的写入。在分层混合存储器系统中,DRAM缓冲器用于隐藏高延迟PCM访问。当发生页面错误时, 数据将直接从磁盘提取到DRAM缓存中。在从DRAM高速缓存中逐出页面之前,页面不会写入PCM。行级写入还可以减轻NVMM上的写入操作, 从而减少NVMM的磨损[16]。对于内存密集型工作负载,写操作可能集中在几行中。通过跟踪DRAM中的缓存行,只有脏行被写回PCM,而不是页面的所有行。提出了内存压缩机制[67 ,75] ,以提高MLC/TLC NVMM的寿命。在写入NVMM单元之前, 首先压缩数据。因此,只有一小部分NVMM单元被写入。然而, 耐久性的提高是以性能适度下降为代价的。如果NVMM单元以较低的功耗写入, 则该单元可以以较高的写入延迟为代价维持更多的写入。具体地, 当写入NVMM单元的速度下降N倍时,单元的耐久性可以提高N到N3倍。Mellow Write[76]探索了这一功能,以提高NVMM的寿命。为了减轻性能下降, Mellow Write只采用只有一次写入操作的缓慢的存储体写入。
5.2 Wear-Leveling磨损均衡
与减少写入的方法不同, 磨损均衡在所有NVMM页面之间均匀分布写入。尽管写入总数没有减少,磨损均衡技术可以防止某些页面被高强度写入而快速磨损。
对于NVMM ,我们可以记录每行的写入计数,以指导磨损均衡策略。但是,不能忽略外部存储开销。Start Gap[77]提出了一种细粒度磨损均衡方案。PCM页的行以旋转方式存储。在0和15之间随机生成旋转值,以指示移位的位置。对于具有16行的PCM页面,旋转值的范围可以从0到15。当旋转值为0时,页面存储在其原始地址中。如果旋转值为1 ,则第0行存储在第1行的物理地址中,并且每一行的地址都被旋转值移位。
在PDRAM[15]中,磨损均衡由写入计数阈值触发。当页面的写入计数超过给定阈值时,将触发页面交换中断以将页面迁移到DRAM。交换的PCM页面被添加到列表中,这些页面将再次重新定位。
Zombie[78]为实现weal-leveling(这是不是多写了一个l)提供了另一个方向,并进一步延长了PCM的整体寿命。与在PCM单元之间均匀分配写入的Start-Gap之外, Zombie利用禁用页面中的空闲块为工作内存提供更多的纠错资源。当PCM单元磨损时,它变得不可用。由于从软件的角度来看,内存占用的空间是按照页来组织的,因此包含故障单元的整个页面将被禁用。但是,如果提供了一些备用单元格来替换出现故障的单元,则可以再次使用该页面。这些备用单元称为纠错资源。当所有备用单元耗尽时, 最终放弃包含失败单元的页面。通常,当页面被禁用时,大约有99%的位可用。Zombie利用禁用页面中的大量好比特作为备用纠错资源,其中好比特被组织在细粒度块中。通过将工作页面与纠错资源配对, Zombie可以延长NVMM的使用寿命。
DRM[79]在虚拟地址空间和物理NVMM地址空间之间添加了中间映射层。在中间地址空间中,一个页面可能映射到PCM中的一个好页面或两个有故障的兼容PCM页面。兼容页面意味着一对具有错误字节的页面,但这些错误字节都不位于两个页面的同一位置。因此,两个兼容的页面可以被组合成一个新的好页面通过这种方式, DRM将PCM寿命显著提高了40倍。
6 Practices of Hybrid Memory System Designs混合存储系统设计实践
在本节中,我们从内存架构、OS支持的混合内存管理和NVMM支持的应用程序的角度介绍了我们最近在NVMM系统设计和优化方面的努力和实践,如图5所示。在下文中,我们将简要介绍我们的实践。
6.1 Memory Architectural Designs内存架构设计
在本小节中,我们将介绍我们对混合内存模拟和仿真、硬件/软件协同混合内存架构、细粒度NVM压缩和磨损均衡以及混合内存感知片上缓存管理的研究。
6.1.1 Hybrid Memory Architectural Simulation混合存储器体系结构仿真
混合存储器体系结构仿真是研究混合存储器系统的先决条件。我们将zsim[27]与NVMain[20]集成, 以构建全系统架构模拟器。Zsim是用于x86-64多核架构的快速处理器模拟器。它能够对多核、片上缓存层次结构、缓存-致性协议(如MESI)、片上互连拓扑网络和物理内存接口进行建模。Zsim使用Intel Pin工具包收集进程的内存跟踪,然后回放内存跟踪以表征内存访问行为。NVMain是用于NVMM的架构级主存储器模拟器。它能够模拟不同的内存配置文件, 如读/写延迟、带宽、功耗等。它还支持子阵列级内存并行性和不同的内存地址编码方案。此外,NVMain还可以对混合存储器(如DRAM和存储器层次结构中的不同NVMM)进行建模。由于操作系统级内存管理不是由zsim模拟的,因此我们通过添加Translation Lookaside Buffer(TLB)和内存管理模块(如伙伴内存分配器和页表)来扩展zsim , 以支持全系统模拟。实施细节参考我们的开源软件。我们的工作为研究界提供了一个快速、完整的体系结构仿真框架。它可以帮助研究人员了解不同的NVMM特性,设计混合存储系统,并以简单高效的方式评估各种系统设计对应用程序性能的影响。
6.1.2 Lightweight NVMM Performance Emulator轻量级NVMM性能仿真器
当前基于仿真的NVMM技术研究方法太慢,或者无法运行复杂的工作负载,例如并行和分布式应用程序。我们提出HME[28],一种轻量级NVMM使用非统一内存访问(NUMA)架构的性能仿真器。HME利用商品Intel CPU中可用的硬件性能计数器来模拟较慢NVMM的性能特性。为了模拟NVMM的访问延迟,HME定期向远程NUMA节点上的DRAM访问注入软件生成的延迟。为了模拟NVMM带宽,HME利用DRAM热控制接口在短时间内限制对DRAM通道的内存请求量。不同于另一个NVMM仿真器Quartz[29] ,它不模拟NVMM的写入延迟,HME识别写直通和写回缓存逐出操作, 以分别模拟它们的延迟。通过这种方式,与Quartz相比, HME能够显著减少NVMM访问延迟的平均仿真误差[29]。在真正的NVMM设备Intel Optane DCPMM问世之前, 这项工作可以帮助研究人员和程序员评估NVMM性能特性对应用程序的影响, 并指导混合内存系统的系统设计和优化。
6.1.3 Hardware/Software Cooperative Caching硬件/软件协同缓存
基于我们的混合存储器模拟器, 我们提出了一种称为HSCC[18]的硬件/软件协同混合存储器架构。在HSCC中,DRAM和NVMM在物理上组织在单个存储器地址空间中,并且都用作主存储器。然而,DRAM在逻辑上可以用作NVMM的缓存,也可以由OS管理。图6显示了HSCC的系统架构。我们扩展了页表和TLB,以维护NVMM到DRAM的物理地址映射, 从而以缓存/内存层次结构的形式管理DRAMNVMM。通过这种方式, HSCC能够像虚拟到NVMM地址转换一样高效地执行NVMM到DRAM地址转换。此外, 我们在每个TLB条目和页表条目中.添加一个访问计数器,以监视内存引用。与以前在内存控制器或操作系统中监视内存访问的方法不同,我们的设计可以精确地跟踪所有数据访问, 而无需额外的存储(SRAM)和性能开销。我们通过动态阈值调整策略识别频繁访问的(热)页面,以适应不同的应用程序,然后将NVMM中的热页面迁移到DRAM缓存,以获得更高的性能和能效。此外,我们开发了一种基于实用程序的DRAM缓存填充方案,以平衡DRAM缓存的效率和DRAM利用率。由于软件管理的DRAM顶面能够映射到任何NVMM页面,因此DRAM实际.上用作完全关联的缓存。这种方法可以显著提高DRAM缓存的利用率,并且还提供了根据应用程序的动态内存访问行为重新配置混合内存架构的机会。由于CPU可以绕过DRAM缓存直接访问NVMM中的冷数据,因此DRAM既可以用作平面可寻址混合存储器架构中的主存储器,也可以用作分层混合存储器架构。因此,与最先进的工作相比,HSCC可以将系统性能显著提高9.6倍,能耗降低34.3%[16]。我们的工作为实现可重构混合存储器系统提供了第一个架构解决方案,该系统可以在水平和分层存储器架构之间动态改变DRAMNVMM管理。
我们进一步在HSCC上提出了以下技术,以提高缓存性能并改进磨损均衡机制。
由于NVMM块的缓存未命中惩罚是DRAM块的几倍,因此在平面可寻址混合存储器体系结构中,缓存命中率不是唯一需要改进的性能指标。为了最好地利用昂贵的LLC,我们提出了一种新的度量,即平均存储器访问时间(AMAT),以评估混合存储器系统的总体性能。我们考虑了DRAM块和NVMM块的非对称缓存未命中惩罚,并提出了一种LLC未命中惩罚感知替换算法,称为MALRU[36,37] ,以改进混合存储器系统中的AMAT。MALRU动态地将LLC划分为保留区域和正常替换区域。MALRU优先替换LLC中的死DRAM块和冷DRAM块,使得NVMM块和热DRAM块保持在保留区域中。通过这种方式, 与LRU算法相比,MALRU实现了高达228%的应用程序性能改进。这项工作展示了混合存储器系统如何影响片上缓存的架构设计。
为了提高NVMM的写入耐久性,我们提出了一种新的NVMM架构,以支持空间无关数据压缩和磨损均衡[119]。由于许多应用程序的内存块通常包含大量零字节和频繁值, 我们提出了零重复数据消除和频繁值压缩机制(称为ZD-FVC[119]), 以减少NVMM上的位写入。ZD-FVC可以集成到NVMM模块中,并完全由硬件实现, 无需任何操作系统的干预。我们在Gem5和NVMain模拟器中实现了ZD-FVC[119],并使用SPEC CPU2006中的几个程序对其进行了评估。实验结果表明,ZD-FVC比几种最先进的方法要好得多。特别是, 与频繁值压缩相比, DZ-FVC可以将数据压缩比提高1.5倍。与数据比较写入相比,ZD-FVC能够将NVMM上的位写入减少30%,并将NVMM的寿命平均提高5.8倍。相应地, ZD-FVC还平均减少了43%的NVMM写入延迟和21%的能耗。我们的设计以简单高效的方式为NVMM提供了细粒度数据压缩和磨损均衡解决方案。它是其他磨损均衡方案的补充,以进一步提高NVMM寿命。
6.2 System Software for Hybrid Memories混合存储器的系统软件
在本小节中,我们介绍了软件层混合内存系统的实践,包括对象级混合内存分配和迁移、NUMA感知页面迁移、超级页面支持和NVMM虚拟化机制。
6.2.1 Object Migration in Hybrid Memory Systems混合存储系统中的对象迁移
页面迁移技术已被广泛用于改善混合存储器系统中的系统性能和能量效率。然而,以前的页面迁移方案都依赖于OS层中昂贵的在线页面访问监控方案来跟踪页面访问的最近性或频率。此外,由于额外的内存带宽消耗和缓存/TLB一致性保证机制,页面粒度上的数据迁移通常会导致非平凡的性能开销。
为了减轻混合内存系统中数据迁移的性能开销,我们提出了更轻量级的面向对象内存分配和迁移机制,称为OAM[120]。OAM的框架如图7所示。与之前的研究[44 ,121]不同, 我们进一步分析了细粒度时隙中的对象访问模式, 这些研究仅在静态对象放置的全局视图中描述了内存访问行为。OAM利用编译框架LLVM以对象粒度描述应用程序内存访问模式,然后将应用程序的执行分为不同阶段。OAM利用性能能量集成模型来指导不同执行阶段的初始内存分配和运行时对象迁移, 而无需对硬件和操作系统进行侵入性修改以进行在线页面访问监控。我们通过扩展Glibc库和Linux内核开发了新的内存分配和迁移API。基于这些API ,程序员能够将DRAM或NVMM显式分配给不同的对象, 然后迁移访问模式在DRAM和NVMM。我们开发了一个静态代码插入工具,可以自动修改遗留应用程序的源代码,而无需程序员重新设计应用程序。与最先进的页面迁移方法CLOCK-DWF[33]和2PP[44]相比, 实验结果表明,OAM可以分别显著降低83%和69%的数据迁移成本,并实现约22%和10%的应用程序性能改进。以前的持久内存管理方案通常依赖内存访问评测来指导静态数据放置,以及页面迁移(代价高昂)技术来适应运行时的动态内存访问模式。OAM提供了一种更轻量级的混合内存管理方案,支持细粒度对象级内存分配和迁移。
6.2.2 NUMA-Aware Hybrid Memory Management NUMA感知混合内存管理
在非统一内存访问(NUMA)架构中,不同NUMA节点中应用程序观察到的内存访问延迟通常是不对称的。由于NVMM比DRAM慢几倍,混合存储器系统可以进一步扩大不同NUMA节点之间的性能差距。NUMA系统的传统内存管理机制在混合内存系统中不再有效,甚至可能降低应用程序性能。例如,自动NUMA平衡(ANB)策略总是将远程NUMA节点中的应用程序数据迁移到运行应用程序线程或进程的NUMA节点。然而,由于远程DRAM的访问性能可能甚至高于本地NVMM,ANB可能会错误地将应用数据移动到较慢的位置。为了解决这个问题,我们提出了HiNUMA[60],这是一种用于混合内存管理的新NUMA抽象。当应用程序数据首次放置在混合存储器系统中时,HiNUMA将应用程序数据放置在NVMM和DRAM上,以分别平衡带宽敏感应用程序和延迟敏感应用程序的内存带宽利用率。总访问延迟。初始数据放置基于NUMA拓扑和混合内存访问性能。对于运行时混合内存管理,我们提出了一个新的NUMA平衡策略,名为HANB[60],用于页面迁移。HANB能够通过考虑数据访问频率和内存带宽利用率来降低混合内存访问的总成本。我们在Linux内核中实现HiNUMA ,无需对硬件和应用程序进行任何修改。与NUMA架构中的传统内存管理策略和其他最先进的工作相比, HiNUMA可以通过有效利用混合内存来显著提高应用程序性能。从HiNUMA[60]中学到的经验教训也适用于配备真正IntelOptaneDCPMM设备的混合内存系统。
6.2.3 Supporting Superpages in Hybrid Memory Systems支持混合存储系统中的超级页存储
随着应用程序占地面积和相应内存容量的快速增长,虚拟到物理地址转换已成为混合内存系统的新的性能瓶颈。在大内存系统中, 超页已被广泛用于减轻地址转换开销。然而,使用超级页面的副作用是,它们通常会阻碍轻量级内存管理,例如页面迁移,而页面迁移在混合内存系统中被广泛用于提高系统性能和能效。不幸的是,同时拥有超级页面和轻量级页面迁移是一个挑战。
为了解决这个问题,我们提出了一种新的混合内存管理系统Rainbow[41]以弥合超级页面和轻量级页面迁移之间的根本冲突。如图8所示,Rainbow以超页(2MB)的粒度管理NVMM,并将DRAM作为缓存管理以基本页的粒度(4KB)将热数据块存储在超级页中。为了加快地址转换, Rainbow使用了拆分TLB的现有硬件功能来支持超级页面和普通页面。
我们提出了一种两阶段页面访问监控机制来识别超级页面中的热基页面。在第一阶段,Rainbow记录所有超级页面的访问计数以识别前N个热超级页面。在第二阶段,我们逻辑上将这些热超页分割成基本页(4KB) , 并进一步监视它们以识别热基本页。这些方案显著减少了页访问计数器的SRAM存储开销和由于对热基页进行排序而导致的运行时性能开销。通过新的NVMM到DRAM地址重新映射机制, Rainbow能够将热基页迁移到DRAM,同时仍能保证超级页TLB的完整性。拆分的超页TLB和基本页TLB是并行查阅的。我们的地址重映射机制在逻辑上使用超页TLB作为基本页TLB的缓存。由于超级页TLB的命中率通常很高,Rainbow能够显著加快基本页地址转换。为了进一步提高TLB命中率, 我们还扩展Rainbow以支持多个页面大小,并一起迁移相邻的热基页面[42]。与不支持超级页面的最先进混合内存系统[18]相比,Rainbow通过同时使用超级页面和轻量级页面迁移的优势,可以将应用程序性能显著提高最多2.9倍。
这项工作提供了硬件/软件协同设计,以弥合超级页面和轻量级页面迁移技术之间的根本冲突。这可能是减轻大容量混合存储器系统中不断增加的虚拟到物理地址转换开销的一个有前途的解决方案。
6.2.4 NVMM Management in Virtual Machines虚拟机中的NVMM管理
NVMM有望在云和数据中心环境中更受欢迎。然而,关于将NVMM用于虚拟机(VM)的研究很少。我们提出了HMvisor[61],一种管理程序/虚拟机协同混合内存管理系统, 以有效利用DRAM和NVMM。如图9所示, HMvisor利用伪NUMA机制来支持VM中的混合内存分配。由于VM中的虚拟NUMA节点可以映射到不同的物理NUMA节点, HMvisor可以将不同的内存区域映射到单个VM ,从而向VM暴露内存异质性。
为了支持VM中的轻量级页面迁移,HMvisor监控页面访问计数并进行虚拟机管理程序中的热页和冷页分类,然后VM通过域间通信机制周期性地收集热页面的信息。我们在VM中实现了一个可加载的驱动程序,以在DRAM和NVMM之间执行进程级页面迁移。由于HMvisor由VM本身执行页面迁移,因此HMvisor无需暂停VM进行页面迁移。HMvisor还提倡混合内存资源交易策略,以动态调整VM中NVMM和DRAM的大小。通过这种方式,HMvisor可以满足多样化应用程序的不同内存需求(容量或性能) ,同时保持VM的总货币成本不变。
HMvisor的原型在QEMU/KVM平台上实现。我们的评估表明,HMvisor能够以仅5%的性能开销为代价将NVMM写入流量减少50%。此外, 动态内存调整策略可以在VM承受高内存压力时显著减少VM中的主要页面错误,因此甚至可以将应用程序性能提高30倍。
这是一项在虚拟化环境中管理混合内存的早期系统工作。所提出的方案完全由软件实现, 因此也适用于新Intel Optane DCPMM设备的混合存储系统。
6.3 NVMM-Supported Applications NVMM支持的应用程序
由于混合存储器系统可以提供非常大容量的主存储器,因此它们已被广泛用于大数据应用,例如内存中的关键值KV存储和图形计算。在本小节中,我们介绍了NVMM支持的针对这些应用程序的系统优化实践。
具有大容量内存的内存KV存储可以在主内存中缓存更多的热数据,从而为应用程序提供更高的性能。然而,在混合内存系统中直接部署传统的KV存储(如memcached)存在若干挑战。例如,如何有效地识别热KV对象?如何重新设计NVMM友好的KV索引以减少NVMM写入?如何重新设计缓存替换算法以平衡混合内存系统中的对象访问频率和最近性?如何解决slab calcification问题[122] ,以在混合存储器系统中最佳地利用DRAM资源?
为了解决上述问题,我们提出HMCached[80] ,这是混合DRAM/NVMM系统的KV缓存(memcached)的扩展。图10显示了HMCached的系统架构。HM缓存跟踪KV对象访问并记录每个KV对的元数据结构中的进程计数, 因此HMCached可以轻松识别NVMM中频繁访问的对象,并将它们迁移到DRAM。这样, 我们逻辑上将DRAM用作NVMM的专用缓存,以避免更昂贵的NVMM访问。此外, 我们通过拆分基于哈希的KV索引来重新设计NVMM友好的KV数据结构, 以进一步减少NVMM访问。我们将KV对象的频繁更新元数据(例如,引用计数、时间戳和访问计数)放在DRAM中,其余部分(例如,键和值)放在NVMM中。我们利用多队列算法[118]来考虑DRAM缓存替换的对象访问频率和最近性。此外,我们建立了一个基于效用的性能模型来评估板类重新分配的效益。我们的动态slab重新分配策略能够有效解决slab calcification问题,并在数据访问模式发生变化时显著提高应用程序性能。与普通memcached相比HMCached可以显著减少70%的NVMM访问, 并实现大约50%的性能改进。此外,HMCached能够降低75%的DRAM成本,同时性能下降不到10%。
据我们所知,我们是第一个探索混合存储系统中KV存储的对象级数据管理的。我们基于Memcached实现HMCached并开放源代码。我们发现,后来的研究(如flatstore[90])也有类似的想法来解耦KV存储的数据结构。
今天,我们已经看到了许多内存中的图形处理系统,其中应用程序的性能与主内存的容量高度相关。高密度和低成本NVMM技术对于降低图形处理的I/O成本至关重要。如图11所示, 与基于SSD的存储系统相比,混合存储系统可以显著提高应用程序性能。图12显示了混合存储器系统和仅DRAM系统之间的应用程序性能差距。我们提出了NGraph,一种新的图形处理框架,专门设计用于更好地利用混合存储器。我们基于不同图形数据的访问模式开发混合内存感知数据放置策略,以减轻对NVMM的随机和频繁访问。通常,图形结构数据占总图形数据的大部分。NGraph根据目标顶点划分图形数据,并采用任务分解机制来避免多个处理器之间的数据争用。此外,NGraph采用了工作窃取机制,以最小化多核系统上并行图形数据处理的最大时间。我们称为ReRAM技术的。
基于图形处理框架Ligra[123]实现NGraph。与最先进的Ligra相比,NGraph可以将应用程序性能提高48%。从这项工作中获得的经验教训[91]可用于在配备真实PM设备的图形处理平台中进一步提高大规模图形分析的性能。
7 Research Directions研究方向
NVMM技术的出现在材料、微电子、计算机架构、系统软件、编程模型和大数据应用领域引起了许多有趣的研究课题。随着IntelOptaneDCPMM等真正的NVMM设备越来越多地应用于数据中心环境,NVMM可能会改变数据中心的存储环境。我们的经
验和做法进行了一些初步和有趣的研究。在下文中,我们分享了NVMM未来研究方向的愿景,并分析了研究挑战和新机遇。图13说明了不同维度NVMM技术的未来趋势。
3D堆叠NVMM技术的发展仍在继续。NVMM有望提供更高的集成密度以降低成本。目前, 高端NVDIMM对于企业应用来说仍然过于昂贵。NVMM与传统DRAM和NAND闪存竞争的关键挑战是存储密度或每字节成本。NVMM技术主要有两种单片3D集成机制[124]。一种是将例如Intel/Micron 3DX点。另一种是垂直3D堆叠结构。然而, 3D集成技术尚未成熟。仍然存在许多挑战,如制造成本、柱电极电阻和潜路径问题。
NVMM越来越多地用于分布式共享存储器系统。随着NVMM的密度不断增加,单个服务器中的主内存容量可以达到数百TB。为了提高大容量NVMM的利用率,必须通过远程直接内存访问(RDMA)技术在多个服务器之间共享它们。使用NVMM的典型方法是将来自多个服务器的所有可共享内存聚合到混合共享内存资源池中, 例如Hotpot[49,125,126]。所有内存资源在全局内存空间中共享。有一些关于在数据中心和云环境中使用NVMM的初步研究[49,126,127]。使用PM的一个新趋势是将其作为分类内存进行管理,就像传统的分类存储系统一样。此型号与以前的共享PM系统不同, 在该系统中,PMDIMM分布在多个服务器中,由用户级应用程序共享。这些计算内存紧密耦合的体系结构在可管理性、可扩展性和资源利用率方面有几个缺点。相比之下,在少数存储器节点中配备有大量PM的分解PM系统可以由计算节点通过高速结构连接。这种计算/内存分类架构可以更容易地减轻数据中心环境中的上述挑战。然而,仍然存在许多挑战。例如,NVMM的持久性特性也应在分布式环境中得到保证。传统的PM管理指令(如clflush和mfence) 只能保证数据在单个服务器中持久化,但不能保证数据通过RDMA网络持久化到远程服务器。对于每个RDMA操作,一旦数据到达远程服务器中的网络接口卡(NIC),它就会向数据发送方发出确认。由于NIC中有数据缓冲区,数据不会立即存储到远程NVMM。如果此时发生电源故障,则无法保证数据持久性。因此,必须重新设计RDMA协议以支持flushing原语。此外,计算节点应支持对用户级应用程序透明的远程页面交换。为了支持这种机制应该重新设计传统的虚拟内存管理策略。另一方面,由于PM表现出类似内存的性能, 并且是字节可寻址的,因此需要对内存调度和管理进行新的设计,以适应分解的PM。
3)基于NVMM的计算存储器集成计算机体系结构正在兴起。例如,新兴NVMM在存储器内处理(PIM)[95,96]和近数据处理(NDP)[128,129]架构中的应用正在兴起。PIM和NDP近年来已成为新的计算范式。NDP是指将处理器与存储器集成在单个芯片上,以便计算能够尽可能接近地访问存储器中的数据。NDP能够显著降低数据移动的成本。实现这一目标主要有两种方法。一种是将小型计算逻辑(如FPGA/ASIC)集成到存储器芯片中,以便在数据最终被提取到CPU之前对其进行预处理。另一种方法是将内存单元(HBM/HMC)集成到计算(CPU/GPGPU/FPGA)中。该模型通常用于许多处理器架构, 如IntelO Xeon PhiTM Knights Landing系列、NVIDIAO tesla V100和Google Tensor处理单元(TPU)。PIM指的是完全在计算机内存中处理数据。它通过在主存储器中执行计算,提供了高带宽、大规模并行性和高能量效率。使用NVMM(如ReRAM)的PIM通常可以并行计算两个或多个内存行的位逻辑, 并支持一步多行操作。该范例对于模拟计算方式中的矩阵向量乘法特别有效,并且可以实现极大程度的性能加速和节能。因此, PIM在加速机器学习算法(如卷积神经网络)中得到了广泛的研究(CNN)和深度神经网络(DNN)。尽管在PIM架构中.使用NVMM技术的兴趣越来越大[94-96 ,130], 但目前的研究主要基于电模拟,没有一项研究可用于中型原型设计。
4)除了传统应用之外, 一些使用NVMM的新应用正在出现。尽管NVMM技术已初步应用于许多大数据应用, 如KV存储、图形计算和机器学习,但大多数编程框架/模型和运行时系统都是为磁盘设备和基于DRAM的主存储器而设计的, 它们在混合存储系统中并不有效。例如, 这些系统中广泛使用缓冲和延迟写入机制来隐藏I/O操作的高延迟。然而,混合存储器系统中可能不需要这些机制,甚至可能会损害应用程序性能。应重新设计Hadoop/Spark/GraphChi/Tensorflow等大数据处理平台,以适应NVMM技术的特点。除了这些传统应用之外,一些基于NVMM的新型应用正在出现。例如,有一些建议通过利用NVMM的切换过程的内在变化,将NVMM用作硬件安全原语, 如物理不可克隆函数(PUF)[131]。 PUF通常用于具有高安全性要求的应用,例如密码学。最近,已经提出了许多基于NVMM技术的逻辑电路并将其原型化[132-134]。例如,ReRAM技术被提议用作基于ReRAM的FPGA的可重构开关[133]。此外,STT-RAM技术被提出用于设计非易失性缓存或寄存器[135]。
8 Conclusions结论
与传统DRAM技术相比, 新兴的NVMM技术具有许多良好的特性。它们有可能从根本上改变存储系统的面貌,甚至为计算机系统添加新的功能和特性。现在有很多机会重新思考当今计算机系统的设计,以实现系统性能和能耗的数量级改进。本文从内存体系结构、操作系统级内存管理和应用程序优化的角度全面介绍了最新的工作和我们的实践。我们还分享了我们对NVMM技术未来研究方向的展望。通过利用NVMM的独特特性, 有巨大的机会来创新未来的计算范式, 开发NVMM的多种新颖应用。
积累
一些可以进一步看一看的文献:
如表1所示,Intel Optane DCPMM的读取延迟比DRAM高2倍-3倍,而其写入延迟甚至低于DRAM。单个Optane DCPMM DIMM的最大读写带宽分别为6.6GB/s和2.3 GB/s,而DRAM的读写带宽之间的差距要小得多(1.3x)。此外,随着系统中并行线程数量的增加,读/写性能是非单调的[25]。在他们的实验中,1个到4个线程之间达到了峰值性能,然后逐渐下降。
Salkhordeh和Asadi[34]考虑了内存写入和读取,以迁移有利于性能和节能的热页面。
Li[101]等人提出了一种实用模型,用于基于实用程序定义来指导页面迁移,该实用程序定义基于许多因素,如页面热度、内存级并行性和行缓冲区局部性.
“如果一个可重新配置的混合内存系统能够以及时有效的方式动态地适应不同的场景,对于应用程序来说可能是有益的和灵活的。这可能是NVMM器件的一个有趣的研究方向。”看看华科廖小飞团队在这个方面最近的工作。
“由于NVMMs显示出更高的访问延迟和写入能耗,已经有很多关于NVMMs的性能改进和节能的研究[32-34 ,63 ,65 ,66]。”看一看这些有没有做内存的延迟和能耗的统计。
文中提到和写密集有关的(但是这个是store还是write还是要看看,有的需求write挺少的)CLOCK-DWF[33],PDRAM[15],RaPP[14]