# Emerging NVM: A Survey on Architectural Integration and Research Challenges ## Authors: * JALIL BOUKHOBZA , STÉPHANE RUBINI , RENHAI CHEN , ZILI SHAO ###### tags: `ACM` ## Abstract * 因為密度及能量需求的優勢, NVM 逐漸在 memory 這塊佔有一席之地。 * 目前有許多種 NVM 出現,如: 1. Magnetoresistive random access memory ( MRAM ) 2. Phase Change random access memory ( PCM ) 3. Resistive random access memory ( ReRAM ) 4. Ferroelectric random access memory ( FeRAM ) * 這篇論文會探討這四種 NVM 材質融入記憶體的優缺點,分別以 horizontal 、 vertical 方面討論 * horizontal : 新記憶體直接取代目前的記憶體階級 * vertical : 新記憶體夾在兩個目前存在的 level 當中 * 最後描述每種 NVM 技巧的挑戰與機會 ## 1. Introduction * ### Volume 現在的數位資料每年以44%的比例不斷成長-(2009-2020),因為所有的產品都連上網路,加上各種活動都是以 data-intensive 的方式在使用,所以造成 digital data 的快速產生。 * ### Performance 如何有效率的處理 data 是一個重要的經濟及社會問題。不論是連網或不連網的大量資料複製都很重要。 * ### Energy Efficiency 美國的 Data Center 所消耗的能量是全年產出的1.5%,且每年預計會上升18%。其中很大的一部分就是消耗在 memory system 上, Data Center中大約有20%-40%的電是消耗在 storage systems上。有研究指出, DRAM 的消耗會在30%-50%之間。 * ### Scalability 雖然 DRAM 的 size、capacity、performance有著長足的進步,但許多研究指出將在5~10年間遇到瓶頸。 * 高密度的 DRAM 會較為昂貴( cost penalty ) * 因為會定期 refresh ,沒有讀寫的情況仍然會持續消耗能量,大約是巔峰能量耗損量的19%~31%。 * Disturbance && Reliability 的原因讓DRAM && Flash memory的設計上( charge-based technologies )遇到許多困難 * 在此同時, NVMs 有著高密度、靜止時零能量耗損、高耐受度等優點,宣告記憶體的革命。 * 此篇論文主要目的為三個部份: 1. 引發 NVMs 特性的相關討論 2. 探討最新的硬體架構模型,分為 horizontal, vertical 3. 探討使用這些 NVMs 的主要挑戰 * Section 2 : 討論 NVM integration的問題 * Section 3.4.5.6 分別討論 PCM, MRAM, FeRAM, and ReRAM technologies ## 2. Background ### 2.1 Overview on Memory Hierarchy * 越接近 CPU 的記憶體階層效能會越好,但也要考量到價格因素,不過通常越接近 CPU 的會越貴 * OS 只認得三種記憶體組成: 1. Cache Sysyem : 可以啟動/關閉,並沒有顯著的管理機制,由特殊的硬體架構做管理。 2. Main Memory : byte addressable , OS 透過專門的服務來管理這項資源,系統會透過一些硬體機制來加速( TLB )。 3. Storage System : 可能為傳統磁碟或是 SSD ( flash-based storage drive ) ,為 block-addressed,是 OS 的一種外圍組織。 * 以硬體架構的觀點來看, NVM integration 可以 vertically or horizontally 方式實做 1. Vertically : 直接取代某一level的memory,將他擠到下一層level,因此所有存取機制要跟原先取代的 memory technology 相同。 2. Horizontally : 在同一級的memory中額外安插此 NVMs ,透過記憶體的異質性讓有些特定的 application 受益。這種硬體架構需要某些特有的 API && POSIX API 支援,因此需要兩種 API ,一種讓 programmer 了解現在正在存取 NVM ,另一種( POSIX API )隱藏記憶體的異質性。 * 不論使用 vertically or horizontally ,硬體及軟體架構都要考慮到效能上的狀況。 1. 硬體架構取決於是使用 vertically or horizontally ,以及 NVM 該如何跟 system interface 2. 取決於 ststem && application upgrades 來充分利用額外的 memory technology。 ### 2.2 Flash Memory, a Pioneer NVM * Flash memory 展現了高密度、靜止時使用很少能量、快速存取( faster than HDD )的特性 * 若要有效律的結合 storage system ,要考慮到以下幾個特點: 1.讀寫效率的不對稱性 2.有限的生命週期 3.寫入/抹除操作的顆粒不對稱 #### 2.1.1 Flash Memory Integration * 可以與 storage system 有三種 integration 型態: 1. memory system 的延伸 ( horizontal ) 2. 常須使用的 code && data 存在 flash 中,減少 HDD 的 I/O 數量 ( vertical ) 3. 擔任 HDD 的替代使用儲存裝置 ( horizontal ) * 在上述中有兩種 horizontal integration,但 `1.`是main memory延伸,與 DRAM integrate有特定的硬體架構 -- NVDIMM * `3.`中, flash memory 就有如傳統儲存系統且存取方式與 HDD 相仿,使用 PCIe 介面,可以使用平行化方式提昇效率 ( multi-channel、multi-die、plane parallelism ) * 使用 PCIe 介面整合可能為 stack 符合( storage stack compliant ),直接被視為儲存裝置;抑或是非 stack 符合( storage stack non-compliant ),因此需要特定的 driver 跟 軟體工具來存取,而後者的目標就是透過特定的軟體抹消掉傳統的 storage stack latencies #### 2.1.2 Flash Memory Properties and Managements * 與傳統磁碟相比,在 integration 時 ( 不論是 vertically or horizontally ) Flash memory 都需要為了一些特性需要特別做設計 1. Random reads : * 不同於HDDs,Flash memory 的隨機讀取不會因為儲存位置的不同而增加延遲,許多為了HDDs讀取延遲所設計的os level機制會重新調整以達到 Flash memory integration 的最佳化 2. I/O performance asymmetry : * 因為寫入需要找到合適的 cell ,所以寫入所花費時間會大於讀取時間,許多機制再努力提昇 write operation 以提高 performance 3. Sequential writes in a block : * 為了避免寫入錯誤 ( eletrical disturbance ) ,寫入會在一個 block 的範圍內線性連續操作 (特別是 MLC),硬體上會有 Error correction codes (ECC) 來解決錯誤 4. Low power consumption : * 雖然 flash memory 會因為內部結構以及對應的 workload 影響耗電量,但他的耗電量狀況比 HDDs 來的好 5. I/O interface : * 對於使用者來說,使用 HDDs 或 flash memory 沒有任何差異(除了drivers,os 不需調整),但實際上是有很大的區別的 6. Shock resistance : 當設計 flash-based solutions 有許多點需要考慮: * Erase-before-write limitation : 在寫入前需要先抹除掉 data ,因此若要寫入一個 page 的 data,需要先抹除掉那個 block ,這常常要花許多時間,也因此 data 會遇到空間不足的問題並透過 mapping scheme 解決,嚴重影響 SSD performance ,除此之外 flash memory也需要透過 garbage collector來回收之前抹除掉的 data * Write/Erase granularity asymmetry : 寫入操作是以 pages 為單位 ; 抹銷操作是以 blocks 為單位,Flash memory blocks 是以 2~8 KB 的 pages 所組成 * Limited number of Erase/Write cycles : write/erase(W/E) 對於 SLC 大概是 $10^5$ ; MLC 大概是 $10^4$ ; TLC 大概是 $5000$,因為這種耐受度的限制,flash memory controller 使用 wear leveling techniques 來平衡使用的flash memory blocks * 為了要與傳統磁碟 integrate,flash memory controller 至少要實作 mapping scheme、garbage collector、wear leveler,這些 mechanisms 都會大幅影響 performance ### NVM, Why and How? * NVM 可以作為三種記憶體階層:processor caches, main memory, storage systems,並可以是 vertically or horizontally integrated #### 2.2.1 As a Storage System * NVM 可以直接取代一種記憶體階層,若是如此就要跟 flash memory 一樣使用各種管理機制來結合傳統儲存 software stack * NVM 也可以 vertically 方式結合,如同現在 flash memory 搭配 HDDs,NVM 可以取代 flash memory 的角色 #### 2.2.2 As a Main Memory * NVM 可以作為 main memory ,但他的許多特性需要被特別處理(不論是取代 DRAM 或 跟 DRAM 一同為 hybrid main memory),如讀取比寫入快、寫入耗損較大、只有存取時才需要能量等。 * 若是 vertically,DRAM 可以作為 NVM 的 cache 來減少直接存取主記憶體的存取延遲。 * 若是 horizontally,硬體架構與 OS 都需要特別處理 data placement issues,而有時 applicative layer 的 data placement 會需要特別決定,這時 OS 處理記憶體異質性(memory heterogeneity) 的問題就是很重要的 issue * 可參考 Table 1 ![](https://i.imgur.com/1FhnSFg.jpg) #### 2.2.3 As a Processor Cache * 以 CPU cache 的觀點來看,first-level cache 通常存取最多次,所以需要非常低的延遲及很高的耐用度,這在大部分的 NVMs 都無法達成 * NVMs 主要做為 CPU 的 last-level cache,然而就算在這 level,仍然會有非常大數量的寫入操作,所以需要 wear 的方式緩解,而製成的相容性也要考慮進去 * MRAM 在 processor cache 中通常以 vertical 方式做 integraiton * PCM 在 processor cache 中通常以 vertical 方式做 integraiton * 大部分 PCM 可做的機制可以套用到 ReRAM,反之亦然 * 接下來篇幅會探討以下的 NVMs: PCM,MRAM,FeRAM,ReRAM * 可參考 Table 2 ![](https://i.imgur.com/5Hn7MhD.jpg) ## PCM * phase change memory (PCM), 又叫做 phase change random access memory (PRAM) * 在 CMOS fabrication process 下有著很小的 cell-size ,相對快的隨機存取、中間等級的寫入生產量、好的 retention time、跟 NAND flash 相比好很多的耐用度,且 update data 前不需要先 erase ### Basic Concepts #### 3.1.1 PCM Technology #### 3.1.2 Write Endurance * PCM 的寫入操作限制為 $10^8$ cycles,優於 flash memory 的 $10^5$ cycles,但劣於DRAM 的 $10^15$ cycles *