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