Persistent Memory | My Note

Persistent Memory

Updated: Oct 26th, 2023


持久内存出现的背景

背景1:存储介质的发展

目前的存储介质延迟已经发展到ns级别了。如下图所示,PCM(Phrase-change Memory,相变内存)已经能够实现ns级别的读延迟,同时也达到了较高的寿命和较低的功耗,另外还支持字节级访问。

no title picture (图源:《深入浅出SSD》P94)

背景2:现有架构存在的问题

拿目前最快的持久存储设备,NVMe SSD为例,其使用了NVMe协议在PCIe总线上与CPU相连,延时最低能到10us左右。但考虑到PCIe总线本身就有0.8us左右的延时。随着存储介质的延时进一步减小至ns级别,PCIe总线上的延迟甚至超过了存储介质本身的延迟。这样的开销是难以接受的。

no title picture

持久内存的特点

在上述两个背景之下,Intel首先推出了基于3D-XPoint的傲腾持久内存

他具有下面三个特点:

  1. 与DRAM相近的读写延迟
  2. 可字节寻址
  3. 可持久存储

对于读写延迟来说,其与普通内存,也就是DRAM(Dynamic random-access memory, 动态随机存取存储器 )类似,在文章[1]中的一幅图中,可以发现非易失性内存无论是读延时还是写延迟,都比DRAM要慢一些,但数量级是相当的,所以我们可以概括说,延时和DRAM相当。

no title picture

可字节寻址这个特点要和其他不同的存储介质进行对比。对于机械硬盘,其寻址的最小粒度是一个扇区,sector,一般是512B,而对于我们常见的固态硬盘,其寻址的最小粒度是一个page,一般是4KB。而对于非易失性内存,我们可以和内存一样,通过一个地址访问其每个字节的内容,访问的粒度是字节,这让非易失性内存和其他存储设备的区别更加大,编程模型要有较大的改变。

no title picture

另外与DRAM非常不同的一点是,DRAM掉电了数据会丢失,而PM在掉电后数据仍然能够持久存储,在下次通电后数据还在。但非易失性内存直接接在内存插槽上,它又和普通的存储设备有些不一样的地方。这个不一样的地方来源于cpu的cache。我们执行了一条mov指令,在某个内存地址中存储某个数,那么这个数就并不一定存在了内存中,一般的cpu cache都采用了write back策略,意味着除非cache不够用了被置换了出来,否则这个数据很可能还在cache中,而cache本身仍然是断电就会丢数据的,这个时候就算下面安装了非易失性内存,也没法避免数据的丢失。所以,为了保证数据的持久性,我们需要使用一些额外的指令,比如图中的clflush,它的含义是将cache line刷写下来。为了避免CPU乱序执行的影响,我们还需要在这两条指令后面加一条mfence,内存屏障。这样下来,才能够保证整个持久化操作完成。

no title picture

一些测试文章

这几篇是测试PM性能的

  1. [2]
  2. [3]
  3. [1]
  4. [4]
  5. [5]
  6. [6]
[1]
J. Yang, J. Kim, M. Hoseinzadeh, J. Izraelevitz, and S. Swanson, “An Empirical Guide to the Behavior and Use of Scalable Persistent Memory,” 2020, pp. 169–182 [Online]. Available: https://www.usenix.org/conference/fast20/presentation/yang. [Accessed: 17-Apr-2020]
[2]
J. Izraelevitz et al., “Basic Performance Measurements of the Intel Optane DC Persistent Memory Module,” arXiv:1903.05714 [cs], Aug. 2019 [Online]. Available: http://arxiv.org/abs/1903.05714. [Accessed: 12-Sep-2020]
[3]
I. B. Peng, M. B. Gokhale, and E. W. Green, “System evaluation of the Intel optane byte-addressable NVM,” in Proceedings of the International Symposium on Memory Systems, New York, NY, USA, 2019, pp. 304–315, doi: 10.1145/3357526.3357568 [Online]. Available: https://doi.org/10.1145/3357526.3357568. [Accessed: 13-Sep-2020]
[4]
Z. Wang, X. Liu, J. Yang, T. Michailidis, S. Swanson, and J. Zhao, “Characterizing and Modeling Non-Volatile Memory Systems,” in Proceedings of the 53nd Annual IEEE/ACM International Symposium on Microarchitecture, 2020, p. 13.
[5]
L. Xiang, X. Zhao, J. Rao, S. Jiang, and H. Jiang, “Characterizing the performance of intel optane persistent memory: a close look at its on-DIMM buffering,” in Proceedings of the Seventeenth European Conference on Computer Systems, New York, NY, USA, 2022, pp. 488–505, doi: 10.1145/3492321.3519556 [Online]. Available: https://doi.org/10.1145/3492321.3519556. [Accessed: 01-Apr-2022]
[6]
L. Benson, L. Papke, and T. Rabl, “PerMA-bench: benchmarking persistent memory access,” Proc. VLDB Endow., vol. 15, no. 11, pp. 2463–2476, Jul. 2022, doi: 10.14778/3551793.3551807. [Online]. Available: https://doi.org/10.14778/3551793.3551807. [Accessed: 11-Oct-2022]

Instead of authenticating the giscus application, you can also comment directly on GitHub.


Notes mentioning this note