天天看點

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)

Memory Models Series - Memory Persistency (Slides)

日志:
  1. [2019-02-13] 引入了前言;
  2. [2019-02-06] PPT 版式更新,閱讀面積提升約三分之一,提供沉浸式閱讀體驗;
  3. [2018-07-25] 完成了本文的 PPT 架構。
作者按:記憶體模型系列 - 記憶體一緻性模型。本文為記憶體模型系列下篇,主要深入淺出地介紹了用于限制記憶體持久化指令完成順序的記憶體持久性模型(Memory Persistency)。該模型面向未來的 PM(Persistent Memory,持久記憶體)系統,其核心主張為:通過擴充記憶體一緻性模型,1) 幫助架構師挖掘持久化指令的指令級并行度,2) 幫助程式設計者推理崩潰一緻性。
  • 本系列的上篇為:記憶體模型系列(上)- 記憶體一緻性模型(Memory Consistency)。
  • 本部落格所有文本及膠片均公開在了 Github 上,如需轉載,注明出處即可。如若建議、勘誤等,發起 Issue 或在下方評論均可。

文章目錄

  • Memory Models Series - Memory Persistency (Slides)
    • 前言
    • 1. Terminology
    • 2. Strict Persistency
    • 3. Relaxed Persistency
      • 3.1 Epoch Persistency
      • 3.2 Strand Persistency
    • Reference

前言

在開始介紹記憶體持久性模型之前,先為大家講一下提出這個模型的背景。

持久記憶體(Persistent Memory,PM),也即能夠通過正常訪存指令(而非系統調用)通路的,具有低延遲(而非 I/O 總線)及位元組可尋址(而非塊)特性的非易失存儲器1。基于 3D XPoin 的 Intel® Optane™ DC Persistent Memory,基于 DRAM 和 NAND Flash 的 NVDIMM-N 等,都是持久記憶體。下表給出了常見存儲器的部分屬性,其中位元組可尋址(byte-addressable)表示以位元組而非塊為基本機關進行尋址,而非易失性(non-volatile)表示在掉電後其中的資料不會揮發。

注意:早期文獻中也常使用 SCM(Stroage Class Memory),NVMM(Non-volatile Main Memory),NVDIMM(Non-volatile DIMM)等詞指代持久記憶體,但近來學術界和工業界已統一使用持久記憶體一詞。
存儲器 讀取延遲 寫入延遲 位元組可尋址 非易失性
DRAM2 50ns 50ns
NAND FLASH3 10μs 10μs
3D XPoint3 100ns 500ns

持久記憶體并不是什麼虛無缥缈,離落地很遠的事情。實際上持久記憶體有望于 2019 進入市場4。有資料表明,很多大型 IT 企業已經拿到了其工程樣片,并據此進行了早期研發:非易失性記憶體在阿裡生産環境的首次應用: Tair NVM最佳實踐總結 。

在使用持久記憶體的時候,一個問題需要被嚴肅對待:記憶體一緻性問題。出于各種此處不便展開的因素,未來持久記憶體問世的時候,處理器中的寄存器及緩存仍将是易失性,而大電容僅能確定掉電後記憶體控制器中的資料寫入持久記憶體5,使得持久記憶體中的資料可能并非資料的最新副本。因緩存-記憶體中的資料不一緻而引發的問題,便稱為記憶體一緻性問題。記憶體一緻性問題的影響無疑是巨大的,輕則導緻資料丢失,重則導緻系統無法恢複。

那麼如何避免記憶體一緻性問題呢?不同工作從不同角度進行了解讀,但最廣為認可的方案還是由應用顯示調用持久化指令,将緩存的資料刷入記憶體控制器中。有關持久化指令的介紹見部落客另外的博文。

注意:有論文總結了解決一緻性問題的若幹種方法,可見《Programming for Non-Volatile Main Memory Is Hard》。

毫無疑問,持久化指令的執行效率将是十分關鍵的。在最壞的情況下,如 CLFLUSH 的設計,所有持久化指令順序地、毫無重疊(overlapped)執行,而這顯然是大家無法接受的。在某些不強調這些指令完成順序的情況下,如記憶體拷貝,大家還是期望能夠犧牲對持久化指令的順序限制,而獲得效率上的提升。如果大家了解過記憶體一緻性模型,肯定會想為什麼不擴充已有記憶體一緻性模型,去專門描述對持久化指令的限制呢?實際上已經有人提出了這樣擴充的記憶體模型,也就是今天要介紹的記憶體持久化模型。

1. Terminology

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)

2. Strict Persistency

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)

3. Relaxed Persistency

3.1 Epoch Persistency

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)

3.2 Strand Persistency

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)

Reference

記憶體模型系列(下)- 記憶體持久性模型(Memory Persistency)Memory Models Series - Memory Persistency (Slides)
  1. Nalli S, Haria S, Hill M D, et al. An analysis of persistent memory use with WHISPER[C]//Architectural Support for Programming Languages and Operating System (ASPLOS’17). ACM, 2017: 135-148. ↩︎
  2. Mittal S, Vetter J S. A survey of software techniques for using non-volatile memories for storage and main memory systems[J]. IEEE Transactions on Parallel and Distributed Systems (TODS’16), 2016, 27(5): 1537-1550. ↩︎
  3. Raghu Kulkarni. Persisent Memory and NVDIMMs [C]. Flash Memory Summit 2018. SNIA. 2018. ↩︎ ↩︎
  4. https://newsroom.intel.com/editorials/re-architecting-data-center-memory-storage-hierarchy/, May 30, 2018. ↩︎
  5. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction ↩︎

繼續閱讀