隨著存儲技術(shù)的發(fā)展, 對存儲性能的不懈追求, 高性能存儲開始探索向內(nèi)存通道的遷移。 在這樣的情況下, NVDIMM 技術(shù)便應(yīng)運(yùn)而生了。
NVDIMM (Non-Volatile Dual In-line Memory Module) 是一種可以隨機(jī)訪問的, 非易失性內(nèi)存。非易失性內(nèi)存指的是即使在不通電的情況下, 數(shù)據(jù)也不會消失。因此可以在計(jì)算機(jī)掉電 (unexpected power loss), 系統(tǒng)崩潰和正常關(guān)機(jī)的情況下, 依然保持?jǐn)?shù)據(jù)。 NVDIMM 同時(shí)表明它使用的是 DIMM 封裝, 與標(biāo)準(zhǔn)DIMM 插槽兼容, 并且通過標(biāo)準(zhǔn)的 DDR總線進(jìn)行通信??紤]到它的非易失性, 并且兼容傳統(tǒng)DRAM接口, 又被稱作Persistent Memory。
01
種類
目前, 根據(jù) JEDEC 標(biāo)準(zhǔn)化組織的定義, 有三種NVDIMM 的實(shí)現(xiàn)。分別是:
NVDIMM-N
指在一個(gè)模塊上同時(shí)放入傳統(tǒng) DRAM 和 flash 閃存。 計(jì)算機(jī)可以直接訪問傳統(tǒng) DRAM。 支持按字節(jié)尋址, 也支持塊尋址。通過使用一個(gè)小的后備電源,為在掉電時(shí), 數(shù)據(jù)從DRAM 拷貝到閃存中提供足夠的電能。當(dāng)電力恢復(fù)時(shí), 再重新加載到DRAM 中。
圖1 NVDIMM-N示意圖
NVDIMM-N 的主要工作方式其實(shí)和傳統(tǒng) DRAM是一樣的。因此它的延遲也在10的1次方納秒級。 而且它的容量, 受限于體積, 相比傳統(tǒng)的 DRAM 也不會有什么提升。
同時(shí)它的工作方式?jīng)Q定了它的 flash 部分是不可尋址的。而且同時(shí)使用兩種介質(zhì)的作法使成本急劇增加。 但是, NVDIMM-N 為業(yè)界提供了持久性內(nèi)存的新概念。目前市面上已經(jīng)有很多基于NVIMM-N的產(chǎn)品。
NVDIMM-F
指使用了 DRAM 的DDR3或者 DDR4 總線的flash閃存。我們知道由 NAND flash 作為介質(zhì)的 SSD, 一般使用SATA, SAS 或者PCIe 總線。使用 DDR 總線可以提高最大帶寬, 一定程度上減少協(xié)議帶來的延遲和開銷。 不過只支持塊尋址。
NVDIMM-F 的主要工作方式本質(zhì)上和SSD是一樣的。因此它的延遲在 10的1次方微秒級。它的容量也可以輕松達(dá)到 TB 以上。
NVDIMM-P
這是一個(gè)目前還沒有發(fā)布的標(biāo)準(zhǔn) (Under Development)。預(yù)計(jì)將與DDR5 標(biāo)準(zhǔn)一同發(fā)布。按照計(jì)劃,DDR5將比DDR4提供雙倍的帶寬,并提高信道效率。這些改進(jìn),以及服務(wù)器和客戶端平臺的用戶友好界面,將在各種應(yīng)用程序中支持高性能和改進(jìn)的電源管理。
NVDIMM-P 實(shí)際上是真正 DRAM 和 flash 的混合。它既支持塊尋址, 也支持類似傳統(tǒng) DRAM 的按字節(jié)尋址。 它既可以在容量上達(dá)到類似 NAND flash 的TB以上, 又能把延遲保持在10的2次方納秒級。
通過將數(shù)據(jù)介質(zhì)直接連接至內(nèi)存總線, CPU 可以直接訪問數(shù)據(jù), 無需任何驅(qū)動程序或 PCIe 開銷。而且由于內(nèi)存訪問是通過64 字節(jié)的 cache line, CPU 只需要訪問它需要的數(shù)據(jù), 而不是像普通塊設(shè)備那樣每次要按塊訪問。
Intel 公司在2018年5月發(fā)布了基于3D XPoint? 技術(shù)的Intel? Optane? DC Persistent Memory??梢哉J(rèn)為是NVDIMM-P 的一種實(shí)現(xiàn)。
圖2 Intel? Optane? DC Persistent Memory
02
硬件支持
應(yīng)用程序可以直接訪問NVDIMM-P, 就像對于傳統(tǒng) DRAM那樣。這也消除了在傳統(tǒng)塊設(shè)備和內(nèi)存之間頁交換的需要。但是, 向持久性內(nèi)存里寫數(shù)據(jù)是和向普通DRAM里寫數(shù)據(jù)共享計(jì)算機(jī)資源的。包括處理器緩沖區(qū), L1/L2緩存等。
需要注意的是, 要使數(shù)據(jù)持久, 一定要保證數(shù)據(jù)寫入了持久性內(nèi)存設(shè)備, 或者寫入了帶有掉電保護(hù)的buffer。軟件如果要充分利用持久性內(nèi)存的特性, 指令集架構(gòu)上至少需要以下支持:
寫的原子性
表示對于持久性內(nèi)存里任意大小的寫都要保證是原子性的, 以防系統(tǒng)崩潰或者突然掉電。IA-32 和 IA-64 處理器保證了對緩存數(shù)據(jù)最大64位的數(shù)據(jù)訪問 (對齊或者非對齊) 的寫原子性。 因此, 軟件可以安全地在持久性內(nèi)存上更新數(shù)據(jù)。這樣也帶來了性能上的提升, 因?yàn)橄薱opy-on-write 或者 write-ahead-logging 這種保證寫原子性的開銷。
高效的緩存刷新(flushing)
出于性能的考慮, 持久性內(nèi)存的數(shù)據(jù)也要先放入處理器的緩存(cache)才能被訪問。經(jīng)過優(yōu)化的緩存刷新指令減少了由于刷新 (CLFLUSH) 造成的性能影響。
a. CLFLUSHOPT 提供了更加高效的緩存刷新指令
b. CLWB (Cache Line Write Back) 指令把cache line上改變的數(shù)據(jù)寫回內(nèi)存 (類似CLFLUSHOPT), 但是無需讓這條 cache line 轉(zhuǎn)變成無效狀態(tài)(invalid, MESI protocol), 而是轉(zhuǎn)換成未改變的獨(dú)占狀態(tài)(Exclusive)。CLWB 指令實(shí)際上是在試圖減少由于某條cache line刷新所造成的下次訪問必然的cache miss。
提交至持久性內(nèi)存
(Committing to Persistence)
在現(xiàn)代計(jì)算機(jī)架構(gòu)下, 緩存刷新的完成表明修改的數(shù)據(jù)已經(jīng)被回寫至內(nèi)存子系統(tǒng)的寫緩沖區(qū)。 但是此時(shí)數(shù)據(jù)并不具有持久性。為了確保數(shù)據(jù)寫入持久性內(nèi)存, 軟件需要刷新易失性的寫緩沖區(qū)或者在內(nèi)存子系統(tǒng)的其他緩存。 新的用于持久性寫的提交指令 PCOMMIT 可以把內(nèi)存子系統(tǒng)寫隊(duì)列中的數(shù)據(jù)提交至持久性內(nèi)存。
非暫時(shí)store操作的優(yōu)化
(Non-temporal Store Optimization)
當(dāng)軟件需要拷貝大量數(shù)據(jù)從普通內(nèi)存到持久性內(nèi)存中時(shí)(或在持久性內(nèi)存之間拷貝), 可以使用弱順序, 非暫時(shí)的store操作 (比如使用MOVNTI 指令)。 因?yàn)镹on-temporal store指令可以隱式地使要回寫的那條cache line 失效, 軟件就不需要明確地flush cache line了(see Section 10.4.6.2. of Intel? 64 and IA-32 Architectures Software Developer’s Manual, Volume 1)。
03
總結(jié)
本期我們介紹了NVDIMM 的幾種實(shí)現(xiàn)方式, 以及為了發(fā)揮NVDIMM-P 的性能所做的硬件上的優(yōu)化和支持。后面我們會繼續(xù)介紹軟件方面的支持, 包括編程模型, 編程庫, SPDK方面的支持等。敬請期待。
-
DRAM
+關(guān)注
關(guān)注
40文章
2315瀏覽量
183500 -
存儲技術(shù)
+關(guān)注
關(guān)注
5文章
737瀏覽量
45801 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3025瀏覽量
74056
原文標(biāo)題:內(nèi)存之后,下一代存儲技術(shù)是什么?
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論