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