论文《Operating System Support for NVM+DRAM Hybrid Main Memory - 2009》
基于新技术的趋势,作者提出构建混合内存(2009就提出混合内存这个概念了)
使用闪存(Flash)做为DRAM替代品的挑战:
擦除:必须先擦除闪存才能写入。并且擦除往往很慢,必须擦除一大块,而不是单个word
持久性:闪存需要考虑磨损问题。
慢速写入:闪存写入比DRAM写入更耗时,因此闪存写入与典型的内存控制器不兼容。
读取方式:不同的闪存有不同的读取方式,比如NAND闪存需要读取整个页面,很难用于主存,NOR闪存的读取方式与DRAM差不多。虽然NVND闪存在成本和密度方面都优于NOR闪存,但由于NVND闪存无法满足任何接近DRAM的cache line读取速度,所以一般不会考虑NAND闪存和DRAM的混合内存设计。
本文探讨了混合主存储器的两种选择:
NOR-flash hybrid
提出了一种FLAM DIMM,包含尽可能多的NOR flash 芯片,适当的DRAM用于缓冲写操作,以及一个简单的ASIC。
FLAM DIMM的地址空间分为几个区域:
Flash:直接映射用于cache line范围的读取,CPU无法直接写入
DRAM copy buffer(CB):映射CPU的读写操作
Control register:通过标准系统管理总线访问,映射到I/O空间
页面迁移问题
由于闪存不能由CPU存储操作直接写入,因此将页面大小的写入暂存在CB中。也就是说,当操作系统决定将页Pd从主内存DRAM移动到FLAM时,它会分配一个预擦除的闪存页Pf ,将Pd复制到CB中的空闲页Pb,然后给FLAM控制器发送信号,将Pd从Pb复制到Pf,这种拷贝可以以内存写入速度进行,而不会使CPU停止。复制完成后,控制器向OS发信号,OS将虚拟页面Pv从Pd重新映射到Pf,并使TLB无效。
基础软件设计
启动时,OS首先从DRAM分配所有内存页,OS必须把Pd和Pf的页表条目设置为只读/读+执行,因为在迁移期间,任何的修改都可能导致不一致。
迁移页的选择:用于用户地址空间和文件系统缓冲的页面(消耗大部分DRAM)…并提出了几种启发式的迁移方法
Page type:代码页可以迁移,堆栈页,两个进程之间共享的非文件页不建议迁移。
File types:
File reference modes:标记为临时文件页面不应该迁移。
…
垃圾回收
闪存擦除块比页面大,当FLAM页面迁移回DRAM时,操作系统必须进行垃圾收集,以便擦除块以保持足够大的可用FLAM页面池。
磨损级别
由于闪存的寿命有限,OS要考虑FLAM的磨损问题,这需要跟踪每个FLAM块的分配状态和擦除次数,然后将页面迁移到擦除次数最少的已擦除块上。
PC-RAM(相变存储器-PCM) hybrid:
做的模拟实验来说明可行性。
结论:用NVM+DRAM混合内存构建主内存可能是有利的