# 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

#### 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

## 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
*