閃存正通過多級跳板逐步走向DIMM未來
直到最近,數據訪問與存儲技術的主要發展動力一直取決于提升介質本身速度的表現,因此整個存儲業界始終關注由磁盤到閃存乃至提升閃存存儲容量的技術等核心議題。
不過在此之上,企業也開始將注意力轉向消除存儲領域追求存儲數據IO提速的***障礙:操作系統代碼堆棧。消除這一限制意味著以內存或者近內存級別速度實現存儲數據訪問,從而給存儲數據IO帶來***性革命。
而目前的過渡表現為將數據由磁盤存儲至閃存——即SSD當中。這一舉措的直接理由在于閃存能夠提供次毫秒級訪問延遲,這一水平遠低于磁盤的20到100毫秒延遲。另外,閃存存儲驅動器所需物理空間更低,對電力的消耗更小且不像磁盤驅動器那樣需要夸張的冷卻系統加以配合。
隨著閃存存儲方案可靠性與使用壽命的提升,外加使用成本的不斷降低,同時配合足以顯著縮減存儲數據體積的重復數據刪除與壓縮技術,閃存已經開始全面接掌一級數據存儲任務,并逐步滲透至二級數據存儲領域。
閃存是一類仍在不斷發展的存儲介質。最初的平面或者說2D NAND采用單級單元設計(即每單元存儲1 bit)。此類單元首先設置寫入級電壓,并通過閾值電壓測試其電阻級別的方式實現讀取。如果電流以能夠通過,則代表當前施加的閾值電壓已經超出電阻水平并在單元內記錄為二進制中的1; 如果電流無法通過,則代表當前單元為二進制中的0。
為了能夠在同一NAND晶片內提供更高存儲容量,各廠商著力于通過更為精密的光刻技術降低單元尺寸,從而將更多單元塞進該晶片當中。正因為如此,80納米級別單元開始讓位于70納米單元,隨后是60納米、50納米乃至如今的14納米,但這種升級的同時意味著單元內所保留的、用于實現可靠信號讀取的電子越來越少。如此一來,單元尺寸縮小的作法已經走進了死胡同,開發商必須找到能夠其它能夠進一步提升容量與降低制造成本的途徑。
由此衍生了兩大主要解決思路,即著眼于級與層。
多極設計 (bit)
我們實際上完全能夠對電阻級別范圍進行細分在同一單元內添加更多bit值(而非繼續像SLC單元中那樣只包含或全有、或全無這兩種狀態),而能夠容納4種狀態的2級單元產品亦由此誕生。其能夠將50 GB SSD產品的容量倍增至100 GB,且繼續使用同樣的制造工藝并將成本削減至原本的約一半。
這即為我們常說的MLC,即多級單元NAND。制造商還逐漸意識到,他們可以將電阻水平加以進一步細分,即分為8種狀態以實現3級單元,這種名為TLC(即3級單元)的NAND在容量上較MLC高出50%。著眼于當下,制造商們又在考量是否能夠實現4級單元(QLC)技術,從而將容量進一步提升25%。
以下為此類產多值單元的工作原理,亦包含SLC、MLC、TLC與QLC單元的可行二進制值表達:
- SLC = 0或1——意味著兩種狀態與一種閾值電壓。
- MLC = 00、10、01或11——代表四種狀態與三種閾值電壓。
- TLC = 000、001、010、011、100、101、110、111——代表八種狀態與七種閾值電壓。
- QLC = 0000、0001、00100011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111——共十六種狀態與十五種閾值電壓。
我們無法在同一單元中添加更多bit,因為SSD控制技術無法處理由此帶來的精度保障與誤差消除運算。另外,在同一單元中存儲更多bit亦會降低SSD速度水平并縮短其使用壽命,意味著SSD的性能將不斷縮水或者無法實現理想的生命周期。正因為如此,開發商想到了增加層數的設計方案。
多層設計
通過精心制造,我們確實有可能在晶片中添加更多單元層,即通過增加閃存晶片垂直高度的方式實現容量提升。因此24層方案應運而生,隨后是三星公司牽頭的48層設計,目前SanDisk/東芝緊隨其后而英特爾與美光亦在考慮是否應當放棄長久以來堅持的平面NAND設計思路。
我們能夠更輕松地在3D NAND當中使用尺寸遠大于現有2D NAND的存儲單元,這意味著每個單元可包含更多電子數,因而可實現更快執行速度并在各個bit級狀態下提供更長使用壽命——包括SLC、MLC以及TLC。三星公司目前正在生產64層TLC 3D NAND(亦稱V-NAND)SSD產品,其存儲容量高達7 TB與15.3 TB,遠高于現有2.5英寸磁盤驅動器。平面TLC NAND的存儲容量則仍然被限制在2 TB或3 TB水平,這迫使各家制造商不得不紛紛投身3D NAND技術的開發當中。
各廠商皆在著眼于64層堆疊設計,并希望能夠實現96層甚至更高層數以持續增加閃存存儲產品的容量水平。不過新的問題亦由此產生。構建這樣一塊多層芯片意味著制造商需要以極為精確的方式對不同存儲單元層進行彼此堆疊,隨后在各層之間設置(蝕刻)通孔以作為不同層間數據傳輸所使用的連通線路。這些通孔必須極為精確地進行垂直排布并擁有幾乎完全一致的直徑數字,同時分毫不差地與每一層相交以貫通整塊芯片并完成自身數據傳輸任務。這是制造技術領域的一項非凡成就。每層0.01度的誤差即會在96層堆疊架構的頂端與底端造成0.48度的誤差角,這可能意味著其無法正常工作并導致芯片徹底報廢。
而要在此基礎之上再添加24層以及/或者進一步縮減存儲單元尺寸,無疑會將誤差的可接受范圍降低至更小的區間之內。
我們可能最終仍然會迎來96層設計方案。但我們是否仍能夠繼續降低存儲單元制程尺寸還是個存在爭議的問題。而在另一方面,必須承認的是我們已經走進了技術層面的死胡同,這意味著我們必須在后NAND技術時代找到其它技術手段以克服上述致命障礙。
后NAND時代存儲介質技術
目前最為突出的此類產方案為英特爾與美光公司合力打造的3D XPoint(CrossPoint)方案,其采用批量相變機制對硫系材料的電阻值水平進行轉換。這項技術號稱擁有較NAND更高的存儲密度(即在更低占用空間下提升更高存儲容量)及更快執行速度。然而其實際工作原理仍是個謎,且XPoint目前只以Optane SSD形式發布了少量樣品,而速度更快的DIMM接口XPoint將于今年晚些時候發布以配合英特爾公司將于2018年進行的CPU升級(Purley CPU及其Omni-Path互連機制)。
三星公司則給出了一款相對中庸的競爭性方案Z-SSD技術,其能夠以尚未公開的方式將NAND閃存的訪問速度提升至接近DRAM的水平。在此之后,還有西部數據(SanDisk)尚在開發的電阻RAM技術以及HPE的ReRAM技術——即憶阻器技術。再有,IBM公司的研究人員在考慮開發相變存儲器方案,亦有多家初創企業分別拿出了自己的自旋力矩RAM(STT-RAM)以及EverSpin等設計藍圖。
以上提到的各項技術皆能夠提供所謂存儲級內存(簡稱SCM)方案,即可實現內存級別速度的***性(非易失)存儲產品。在計算機當中,內存會得到直接訪問,具備字節可尋址能力且可對接各類加載與存儲指令。傳統存儲(非存儲級內存)則通過IO代碼堆棧實現訪問,其面向存儲在非易失性介質之上的塊訪問驅動器中的文件或數據塊進行讀取與寫入,具體包括紙帶、磁鼓、機械磁盤、磁帶當然亦包括后來的NAND閃存。
從CPU周期的角度來看,該IO堆棧的執行需要消耗數千次CPU周期; 這是對CPU時間的巨大浪費,會嚴重拖慢應用程序的執行速度,但考慮到存儲設備的速度與CPU的執行速度間存在無數倍差異,這樣的浪費又屬于“必要之惡”。因此,CPU會在完成某一IO的初始化工作之后,轉向正在運行且發出IO請求的其它應用中的其它線程。
如果存儲設備能夠以內存或者近內存級別速度運行,且數據能夠直接面向該介質進行讀取以及寫入,那么我們將不再需要使用極耗時間的IO堆棧。
考慮到這一點,再加上非易失性存儲提供的訪問速度優勢,原本的雙線程切換操作將最終轉化為線程合并這類解決方案。
對速度的渴求
與此同時,就在一部分廠商不斷追求提升SSD存儲容量的情況下,亦有一部分廠商專注于進一步提高其訪問性能。當SSD初次出現時,其設計采用與現有主機系統磁盤驅動器插槽相兼容的思路,意味著它能夠直接適配原本3.5英寸與2.5英寸磁盤驅動器所使用的SATA與SAS接口。在此之后,制造商意識到PCIe總線所具備的數據訪問速度與延遲優勢意味著其能夠更為充分地發揮閃存存儲產品的特性,即實現更高IOPS表現。另外,PCIe卡在物理空間方面也往往更加充裕,意味著制造商能夠在其中塞進更多閃存芯片以進一步增加存儲容量。
不過各家制造商的PCIe閃存卡亦需要協同配套的驅動器才能在不同主機系統之上使用,如此折騰的結果就是反倒不如直接推出標準的SAS與SATA驅動器。因此整個業界很快意識到他們仍然需要打造出真正標準化的驅動器,而這就是如今炙手可熱的NVMe(即Non-Volatile Memory Express)規格。我們現在已經能夠在市場上找到大量NVMe SSD產品,且仍有更多相關方案陸續涌現。
說到這里,大家對于整個業界的態勢應該已經有了比較清晰的認識。NAND介質、設備與互連領域始終處于不斷變化當中,而各存儲方案供應商則在不斷想辦法增加其設備的存儲容量與數據訪問性能,希望盡可能使其擁有更接近于原始NAND的訪問速度表現。正因為如此,SATA與SAS已經由原本的每秒3 Gbit傳輸速率升級至后來的每秒6 Gbit,再到如今的每秒12 Gbit。在另一方面,雖然PCIe仍然擁有相當顯著的速度優勢,但其還是無法真正采用主機系統中的CPU-內存總線這樣一條DRAM互連速度標準中的黃金通道。NetList與Diablo Technologies等廠商已經率先開始嘗試將NAND直接接入內存DIMM,這意味著其能夠直接接入內存總線。
軟件阻礙著數據訪問速度的進一步提升
盡管以上提到的這一切都能夠在理論層面帶來更快的NAND數據訪問速度,但服務器制造商的采用舉措卻顯得相當遲緩——這主要是因為他們明確意識到,這種速度提升亦要求操作系統與應用軟件進行有針對性的調整。
這里我們需要首先強調一點,存儲介質憑借速度提升獲得的回報其實是存在衰減的,這主要是因為業務系統當中還存在著其它一些嚴重影響訪問延遲但卻無法通過高速存儲介質加以解決的因素。以下為相關示意圖:
很明顯,IO堆棧已經開始成為提升數據訪問速度這一歷史性課題當中最為突出的阻礙性因素,而如今的SCM恰好能夠解決此項難題。
回避IO堆棧
SCM所實現的內存或者近內存速度級別NVDIMM可將SCM驅動程序添加至主機操作系統當中,并借此在一定程度上降低IO堆棧延遲影響。其能夠從操作系統處接收文件層級IO語義(文件讀取、文件寫入等)并將其翻譯為內存層級(加載、存儲)語義,以供DIMM上的存儲介質加以執行。將DRAM DIMM與電池或電容支持型NAND(NVDIMM-N)充當的非易失性存儲資源相結合,我們能夠實現相當于NVMe SSD IO堆棧層級訪問性能約十倍的速度提升。這種方案被稱為面向NVDIMM的數據塊級訪問機制。
如果大家通過字節層級訪問使用NVDIMM,即使操作系統將其作為直接訪問分卷(簡稱DAX,為微軟公司提出的技術概念),則經過修改的應用程序代碼能夠直接向NVDIMM發送內存層級的加載-存儲命令,從而回避塊層級機制帶來的時間消耗。在這種情況下,NVDIMM的訪問速度能夠進一步提升8倍,意味著其將較NVMe SSD實現80倍的速度增量。
以下比較數字來自微軟公司進行的實際測試:
- 在一項簡單的4K數據塊隨機寫入測試中,利用單一線程指向 NVMe SSD所能實現的延遲水平為0.07毫秒(70微秒),而傳輸帶寬約為56 MBps。
- 在使用塊模式NVDIMM-N進行同一項測試時,我們發現其延遲水平為0.01毫秒(10微秒),傳輸帶寬則為580 MBps,速度提升10倍。
- 在采用字節可尋址模式進行同一項測試時,其速度結果進一步提升8倍,延遲為820納秒而傳輸帶寬則超過8 GBps。
感興趣的朋友可以點擊此處查看微軟方面給出的背景介紹(英文原文)。
由此帶來的助益不僅僅是為每應用每單位時間節約下數萬次CPU周期,更重要的是確保主機系統的CPU無需將額外30%、40%甚至50%以上時間浪費在本不必要的IO處理身上,而能夠轉而處理更多實際工作。即使只進行粗略計算,如果我們能夠在一臺服務器上節省下40%的CPU資源,則意味著能夠運行額外40套虛擬機或者將服務器的使用成本降低***40%,同時讓現有虛擬機擁有更快的運行速度。
總體而言,我們完全有機會借此消除一切拖慢現有任務執行流程的操作系統代碼層沖突。
結論
- MLC與TLC 3D NAND SSD如今已經成為存儲一級數據的規范性介質。
- NVMe訪問協議正在逐漸取代SATA與SAS。
- 3D NAND SSD在堆疊層領域的強化將使得閃存具備更出色的性價比,進而在二級數據存儲領域占得一席之地。
- DRAM/閃存NVDIMM將幫助我們回避IO代碼堆棧以獲得近內存級別字節可尋址存儲訪問速度。
- 3D XPoint以及/或者其它存儲介質將使得NVDIMM獲得更為可觀的性能優勢,從而成為DRAM的可行性替代方案。
- 非易失性SCM DIMM配合直接訪問分卷將顯著提升服務器(以及最終客戶端)的存儲數據訪問速度。
這一切都將會通過向NAND芯片中添加更多層與級、通過DIMM掛載存儲介質并最終回避IO代碼堆棧的方式來進行。這代表著存儲行業乃至整個IT技術領域都將迎來更加美好的未來,且這一前景再過幾年即將真正出現在我們身邊?,F在就讓我們期待閃存技術的下一波革命性成果吧!