NVM Express在2019年完成了NVMe 1.4規范的制定,新的NVMe協議帶來了大量的全新特性,尤其在糾錯、強化性能以及針對特殊領域和企業級領域的優化等方面更是令人關注,其中就包含了NVMe 1.4為高端企業級固態硬盤提供的一種新能力PMR。
圖1NVMe Feature Roadmap
所謂的PMR即為一塊存儲區,使用此功能將創建并控制一個稱為持久性內存區域(PMR)的存儲區域,該存儲區可以映射到PCI Express總線上的地址空間上面,并且可被主機和其他設備訪問。
PMR的主要特點是,在電源斷電(power cycle),控制器復位以及PMR啟用/禁用切換之后,寫入PMR的數據也會保留。換句話說,此功能使SSD除了提供通過邏輯塊地址(LBA)訪問的存儲區域外,還提供了另一個非易失性存儲區域,并且這塊存儲區域假定的訪問方法是內存訪問而不是塊訪問。PMR對性能的要求很高,例如,穩定狀態下的寫帶寬要比PCIe的寫帶寬度大得多,如果無法做到,協議上記載會有彈性緩沖區等可選項來填補帶寬的間隙。
總的來說,PMR空間可以提供一種內存級讀寫速度、斷電后數據不會丟失的存儲區域。PMR功能上與NVDIMM相似,雖然PMR的性能和容量遠比不上NVDIMM,但PMR有著與NVDIMM一樣的優勢,比起通過NVMe IO命令去讀寫一筆數據,并等待命令完成,讀寫PMR的操作就簡單快捷多了。PMR具有非易失性、較低延遲、可Bytes尋址等特性,使數據管理具有更大的靈活性。它非常適合需要頻繁訪問復雜數據集的環境,以及因電源故障或系統崩潰導致停機的敏感環境。
PMR主要的優點包括:
1.訪問延遲小于NAND閃存的訪問延遲,接近于DRAM。
2.與NAND閃存相比,吞吐量大大增加。
3.比DRAM便宜。
4.可Bytes尋址,實時訪問數據,允許超快速訪問大型數據集。
5.斷電后數據仍保留在內存中(就像使用閃存一樣)。
那么,究竟如何才能實現這一強大的功能呢?隨著PCIe Gen4的問世,PCIe的帶寬迅速增長,常見的非易失性存儲器件NAND閃存很難滿足PMR要求的高速性能,而且原本NAND閃存就更適合用來塊訪問,不適合用于PMR指向的內存,因此,SSD不會直接使用NAND閃存來作為實現PMR的存儲器件。
實際上在NVMe協議中并沒有記載PMR的具體實現方法,但是從已有信息來看,可以使用所謂的新型內存SCM(Storage Class Memory)來實現PMR,例如利用Intel的Optane存儲器。還有一種比較主流的實現PMR的思路是,將SSD內DRAM(的一部分)分配給這個區域,一般企業級NVMe固態硬盤自帶有大容量的DRAM緩存,并且整個固態硬盤處于斷電保護設計的保護之下,結合這兩個特點,外加一定數量的常規NAND閃存,PMR就可以實現。
圖2 使用部分DRAM用作PMR
NVMe一直在積極探索固態硬盤內DRAM的其他用途,PMR就是一個潛在的應用。絕大多數企業級固態硬盤都帶有一定數量的DRAM內存,用來當做存放FTL表項的cache buffer,固態硬盤可以通過這些FTL表項來映射邏輯地址和閃存物理地址。此外,NVMe 1.2協議就定義了控制器內緩存CMB(Controller Memory Buffer)這一特性,旨在使部分SSD內的DRAM空間可以直接通過PCI地址空間被訪問,這一特性使得NVMe傳輸IO命令所需的SQ,CQ可以直接駐存在SSD的DRAM內存里,而不是放在host的內存里,可以減少命令交互的延遲,并可以消除NVMe over Fabrics情況下SSD端對端之間DMA傳輸中的不必要的復制操作,使得傳輸的數據完全繞過host的DRAM。
圖3 NVMe Controller中的CMB與PMR
NVMe 1.4的特性PMR的運作方式與CMB類似,host系統可以使用基礎的PCIe傳輸直接讀寫此內存區域,而無需任何命令隊列的開銷。在實踐中,通常希望將CMB用于支持正常的NVMe操作(如放置SQ/CQ/PRP等),作為一塊DRAM buffer使用,但是PMR則不同,雖然PMR也是SSD內部的一段DRAM區域,但它主要是作為一大塊通用的非易失存儲供主機使用,典型的企業級SSD具有專門的斷電保護電容器,這些電容器可以使PMR中的數據在發生意外斷電時得以安全刷新到閃存中。在SSD斷電時,PMR的內容將自動寫入閃存,當host系統恢復上電時,host可以要求SSD重新加載PMR的內容。
用這種方法實現的PMR功能的典型應用場景是,接收大量(覆蓋性)寫入的場景,這種場景下PMR不會消耗任何除PMR容量大小之外的閃存,因為只有在斷電的情況下,SSD才會去下刷保存PMR的數據,因此這非常適合用于記錄數據庫或系統的日志,因為日志會不斷大量寫入,而且寫日志的操作很容易成為系統內的性能瓶頸,造成堵塞,而PMR恰恰是可以提供DRAM級別的讀寫速度,以及DRAM可覆蓋寫的特性。還有一種潛在的應用場景是就地執行技術XIP(execute-in-place),這種被人們津津樂道的能夠大幅提高應用程序性能的技術可能會因為PMR的出現變得流行起來。
目前PMR在協議方面則較為簡單,NVME 1.4規范只定義了一些控制PMR的寄存器,包括穩定狀態下的寫入帶寬、彈性緩沖區的大小、PMR的狀態、主機應等待PMR ready的超時時間等詳細的設定項目。因此,想要有效地使用PMR,設備(驅動器)側和主機(OS和庫)側對應的驅動程序都是必不可少的,目前Linux的相關驅動還處于規劃階段,未來對PMR驅動軟件上的支持還有很長一段路要走。
NVMe 1.4在去年才剛剛發布,業界內對于PMR的應用也主要集中在企業級存儲領域,并且大多仍處于研究、探討階段,因此有關于PMR這一新特性的可操作空間其實還很大,其應用潛力、前景有望進一步被發掘。
-
PMR
+關注
關注
0文章
6瀏覽量
14630 -
nvme
+關注
關注
0文章
222瀏覽量
22670
原文標題:太強大了!NVMe SSD變身內存!
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論