內(nèi)容提要:
新型非易失存儲(chǔ)器具有低延遲、高密度和非易失的特性,速度也接近DRAM,但技術(shù)尚未成熟,大部分還是處于研究階段。 從目前發(fā)展趨勢(shì)來(lái)看,有兩大陣營(yíng):一種是代替當(dāng)前的DRAM 和FLASH,在傳統(tǒng)的馮·諾依曼體系下的SCM (Storage Class Memory);另一種是非馮·諾依曼體系下的,既可以做存儲(chǔ),又可以在原位進(jìn)行計(jì)算,即存算一體或存算融合,如將人工智能或圖像處理的算法等融合進(jìn)去。
由于相變存儲(chǔ)器PCM 和電阻式存儲(chǔ)器RRAM都可以看作是憶阻器,因此可以用來(lái)做存儲(chǔ),也可以做存算一體,這兩條路徑一直都在向前發(fā)展。 磁阻存儲(chǔ)器的發(fā)展歷程如圖7 所示。
圖7 磁阻存儲(chǔ)器的發(fā)展歷程Figure 7 Development history of magnetoresistive memory
磁阻存儲(chǔ)器主要包括傳統(tǒng)的MRAM 和自旋轉(zhuǎn)移矩MRAM(STT-MRAM)。 傳統(tǒng)的MRAM 通過(guò)電流流過(guò)產(chǎn)生磁場(chǎng)改變MTJ (Magnetic Tunnel Junction)中的自由層磁矩方向,其特點(diǎn)是結(jié)構(gòu)復(fù)雜、干擾大。 STT-MRAM 是第二代MRAM 技術(shù),通過(guò)自旋電流實(shí)現(xiàn)自由層磁矩方向的改變。 美國(guó)的Everspin 公司一直是MRAM 產(chǎn)品的領(lǐng)導(dǎo)者, 已推出了多款獨(dú)立式和嵌入式MRAM 存儲(chǔ)器,并于2020 年發(fā)布了28nm 單片1Gb STT-MRAM 芯片。
3.1.1 磁阻存儲(chǔ)器研究現(xiàn)狀
目前有關(guān)磁阻存儲(chǔ)器的研究比較豐富,主要包括以下幾方面:
單元、 陣列級(jí)別的研究:22nm,32 2Mb eSTTRAM 設(shè)計(jì),低延遲高壽命,并對(duì)磁場(chǎng)干擾免疫;3D擴(kuò)展,3D1S1R 結(jié)構(gòu); 將FinFET (鰭式場(chǎng)效應(yīng)晶體管,F(xiàn)in Field-Effect Transistor) 和STT-RAM 集成,用于降低系統(tǒng)的延遲和面積。
可靠性方面的研究:Last Level Cache(LLC),破壞讀問(wèn)題,延遲恢復(fù)機(jī)制;STT-MRAM based FPGA,干擾感知內(nèi)存分組; 兩個(gè)MLC 存儲(chǔ)3 位的數(shù)提升可靠性和性能。
MLC 單元優(yōu)化的研究:采用MLC 的兩位組成快慢區(qū)域;采用數(shù)據(jù)編碼,最小兩步狀態(tài)轉(zhuǎn)換提升MLC 壽命和性能;對(duì)MLC 硬位和軟位分別編碼減少兩步寫能耗; 對(duì)MLC 進(jìn)行編碼, 實(shí)現(xiàn)一次寫操作,從而提升壽命和能效。
應(yīng)用于GPU 的研究: 將STT-RAM 用于GPU中的L1 Cache,減少片外訪問(wèn),提升性能和能效;將STT-RAM 用于GPU 的寄存器文件,采用壓縮方法減少能耗。
存內(nèi)計(jì)算架構(gòu)的研究:將SOT-MRAM((Spin-Orbit Torque MRAM))應(yīng)用于存內(nèi)計(jì)算架構(gòu)設(shè)計(jì)以提升性能。
3.1.2 MLC STT-RAM 的研究
我們也對(duì)MLC STT-RAM 進(jìn)行了研究。 由于它是通過(guò)堆疊兩個(gè)不同大小的MTJ 單元構(gòu)成MLC STT-RAM 單元,相較于SLC 單元,密度約是其2 倍,需要采用兩步讀寫操作,對(duì)硬位的寫操作會(huì)延遲和消耗更多的時(shí)間, 對(duì)性能和能耗都會(huì)產(chǎn)生影響。
同時(shí),我們發(fā)現(xiàn)MLC STT-RAM 存在較嚴(yán)重的壽命問(wèn)題(<1010次),這也是兩步寫操作導(dǎo)致的,兩步寫操作同時(shí)導(dǎo)致了大量的寫能耗和較高的寫延遲。 測(cè)試發(fā)現(xiàn), 對(duì)硬位的寫對(duì)壽命的影響達(dá)到了70%,而軟位則只有30%①Wei Zhao, Wei Tong, Dan Feng,et al.OSwrite∶Improving the lifetime of MLC STT-RAM with One-Step write[C]// 36th International Conference on Massive Storage Systems and Technology.MSST,2020.。
針對(duì)此問(wèn)題, 我們的基本思路是通過(guò)負(fù)載分析,用壓縮的方法將緩存行全部寫到軟行,實(shí)現(xiàn)一步寫操作;而對(duì)不能壓縮的行,用hard flag 記錄硬位翻轉(zhuǎn)信息,實(shí)現(xiàn)一步寫操作。 通過(guò)內(nèi)存負(fù)載測(cè)試發(fā)現(xiàn), 該方案可以提高2.6 倍的壽命, 減少能耗56.2%,提升性能6.4%④。
相變存儲(chǔ)器簡(jiǎn)稱PCM, 它是利用特殊材料在晶態(tài)和非晶態(tài)之間相互轉(zhuǎn)化時(shí)所表現(xiàn)出來(lái)的導(dǎo)電性差異來(lái)存儲(chǔ)數(shù)據(jù)。如圖8 所示為相變存儲(chǔ)的發(fā)展歷程。
圖8 相變存儲(chǔ)器的發(fā)展歷程Figure 8 Development history of phase change memory
因?yàn)閺木B(tài)到非晶態(tài)和從非晶態(tài)到晶態(tài),對(duì)操作時(shí)間和溫度的要求不一樣, 所以它的特點(diǎn)是:RESTE 延遲低,但功耗比較高;SET 過(guò)程延遲高,但功耗比較低。 相應(yīng)地,相變存儲(chǔ)器需要在功耗和延遲方面進(jìn)行優(yōu)化。
現(xiàn)在比較成熟的一款產(chǎn)品是Intel 和鎂光合作的3D XPoint 相變存儲(chǔ)器, 它運(yùn)用的是雙層架構(gòu)。Intel 公司比較看好這款產(chǎn)品是因?yàn)樗芏缺容^高。同樣芯片體積,3DXPoint 相變存儲(chǔ)器的存儲(chǔ)容量是DRAM 的8~10 倍,而能耗基本相當(dāng)。
3.2.1 相變存儲(chǔ)器操作方案研究現(xiàn)狀
有關(guān)相變存儲(chǔ)器的研究主要有以下幾個(gè)方面:
存儲(chǔ)單元讀/寫操作可靠性問(wèn)題研究。 針對(duì)晶格結(jié)構(gòu)松弛引起的阻值狀態(tài)漂移導(dǎo)致讀不準(zhǔn),采取適應(yīng)數(shù)據(jù)保持時(shí)間的動(dòng)態(tài)讀閾值參考設(shè)置及單元狀態(tài)刷新;針對(duì)非線性的電流電壓特性曲線導(dǎo)致讀不準(zhǔn),采取兩步讀操作擴(kuò)大讀窗口;針對(duì)焦耳熱干擾導(dǎo)致RESET 操作過(guò)程中相鄰單元狀態(tài)出錯(cuò),設(shè)置單元間熱量屏障層,并通過(guò)數(shù)據(jù)編碼來(lái)減少容易產(chǎn)生熱干擾的數(shù)據(jù)模式;對(duì)角單元布局結(jié)合數(shù)據(jù)壓縮;通過(guò)數(shù)據(jù)壓縮將要寫入的單元位置交替地分布在一行的兩端。
PCM 作主存時(shí),對(duì)其壽命和性能優(yōu)化的研究。主要包括:減少熱區(qū)數(shù)據(jù)寫延遲,減少set 操作;通過(guò)減少PCM 陣列的互聯(lián)電阻,減少延遲。
大數(shù)據(jù)、人工智能計(jì)算環(huán)境下的存儲(chǔ)墻問(wèn)題研究。 主要是構(gòu)建存算融合的計(jì)算內(nèi)存,并發(fā)掘新應(yīng)用,根據(jù)應(yīng)用特征進(jìn)行優(yōu)化,包括:16.5 萬(wàn)個(gè)相變存儲(chǔ)單元構(gòu)成陣列做神經(jīng)形態(tài)計(jì)算;相變存儲(chǔ)單元做時(shí)間相關(guān)性檢測(cè);相變存儲(chǔ)陣列做科學(xué)計(jì)算;相變存儲(chǔ)器用于存內(nèi)超維計(jì)算等。
3.2.2 我們對(duì)相變存儲(chǔ)器的相關(guān)研究
我們對(duì)相變存儲(chǔ)器的研究主要是通過(guò)壓縮編碼方式提升其壽命和性能。
(1)利用冗余字提升標(biāo)志位的利用率
因?yàn)镃PU 以字為單位進(jìn)行寫, 因此可能會(huì)寫入相同的數(shù)據(jù),造成相變存儲(chǔ)器負(fù)載中存在大量冗余字。 如當(dāng)緩存行中有4 個(gè)冗余字時(shí),編碼標(biāo)志位的利用率只有50%②Xu J, Feng D, Hua Y, et al. Adaptive Granularity Encoding for Energy-efficient Non-Volatile Main Memory[C]// 2019 56th ACM/IEEE Design Automation Conference (DAC). IEEE, 2019.。為了提升標(biāo)志位利用率,我們將編碼標(biāo)志位分配給臟的字, 編碼粒度從16 降為8。 但標(biāo)志位利用率提升到100%,導(dǎo)致標(biāo)志位的位翻轉(zhuǎn)增加。我們又利用了連續(xù)位翻轉(zhuǎn)特性減少位翻轉(zhuǎn)(SAE),對(duì)每一行進(jìn)行分析,選擇位翻轉(zhuǎn)總數(shù)最少對(duì)應(yīng)的編碼粒度,對(duì)緩存行進(jìn)行編碼,以此降低功耗和提高寫速度。
(2)非易失內(nèi)存系統(tǒng)需要保持原子一致性
存儲(chǔ)過(guò)程中, 存儲(chǔ)控制器需要軟件和硬件配合,如果配合不好會(huì)出現(xiàn)一致性問(wèn)題。在事務(wù)中,對(duì)同一地址的寫操作存在不同寫間隔分布, 其中44.8%的寫距離超過(guò)31,而寫距離太長(zhǎng)會(huì)導(dǎo)致部分日志數(shù)據(jù)不能被丟棄。分析發(fā)現(xiàn),事務(wù)更新時(shí),日志數(shù)據(jù)中存在大量的干凈字節(jié)數(shù)據(jù),70.5%的字節(jié)都是干凈的。 由于一致性維護(hù)開(kāi)銷非常大,所以應(yīng)區(qū)別對(duì)待,不對(duì)70.5%的干凈字節(jié)數(shù)據(jù)進(jìn)行一致性維護(hù)。 具體來(lái)說(shuō),我們?cè)O(shè)置了日志數(shù)據(jù)選擇性編碼機(jī)制, 該機(jī)制對(duì)事務(wù)中數(shù)據(jù)的第一次更新同時(shí)記錄undo 和redo 數(shù)據(jù),后續(xù)更新只記錄redo 數(shù)據(jù)。undo數(shù)據(jù)及時(shí)寫入NVMM 以保證原子性,而redo 數(shù)據(jù)則緩沖在易失性日志緩沖區(qū)和L1 緩存中, 只將最新的redo 數(shù)據(jù)寫入NVMM 中。 利用日志數(shù)據(jù)的特點(diǎn),該方法直接丟棄日志數(shù)據(jù)中的干凈位,壓縮剩余的臟位。 經(jīng)實(shí)驗(yàn)驗(yàn)證, 此方案使寫能耗降低了49.9%,性能提升了72.5%③X Wei,D Feng,W Tong,J Liu,et al. MorLog∶Morphable Hardware Logging for Atomic Persistence in Non-Volatile Main Memory[C]// 47th edition of ISCA. ISCA,2020.。
二端無(wú)源金屬氧化物阻變存儲(chǔ)器(metal-oxide RRAM)是憶阻器的一種器件實(shí)現(xiàn),是一種新興的非易失存儲(chǔ)器。它是通過(guò)金屬氧化物的阻值狀態(tài)變化來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。 主流的阻變功能材料包括HfOx、TiOx、TaOx 等, 配套的電極材料包括TiN、Pt和Ti 等。 施加外加電壓時(shí), 其阻值會(huì)發(fā)生連續(xù)變化,因此憶阻器可以用作存儲(chǔ),也可以用作計(jì)算,如IMP 邏輯運(yùn)算和矩陣向量乘法。阻變存儲(chǔ)器的發(fā)展歷程如圖9 所示。
圖9 阻變存儲(chǔ)器發(fā)展歷程Figure 9 Development history of resistive random access memory
國(guó)際上,富士通、松下、Crossbar 公司和密歇根大學(xué)都推出了一些小容量和實(shí)驗(yàn)性的阻變存儲(chǔ)器產(chǎn)品。
3.3.1 阻變存儲(chǔ)器操作方案研究現(xiàn)狀
主要包括以下幾個(gè)方面:
第一,非理想因素影響下存儲(chǔ)陣列讀寫操作不可靠、性能差問(wèn)題的研究。 針對(duì)互連線電壓降導(dǎo)致寫操作性能差,可采用雙端接地、雙端寫驅(qū)動(dòng)器、最短電壓降路徑等;針對(duì)部分偏壓導(dǎo)致未選擇的單元受干擾,可設(shè)置干擾參考單元、檢測(cè)并刷新被干擾的行等;針對(duì)潛通電流導(dǎo)致讀操作不準(zhǔn)確,可采用四端電阻網(wǎng)絡(luò)、檢測(cè)并復(fù)用潛通電流和采用互補(bǔ)阻變單元等。
第二, 非理想因素影響下存儲(chǔ)陣列計(jì)算不準(zhǔn)確、能效低問(wèn)題的研究。針對(duì)互連線電壓降、器件變化性、環(huán)境溫度導(dǎo)致計(jì)算不準(zhǔn)確,可采用互連線奇異值分解數(shù)據(jù)降維、邏輯行到物理行映射等;針對(duì)互連線電壓降、潛通電流導(dǎo)致計(jì)算能效低,采用三維陣列縮短平均互連長(zhǎng)度等。
第三,基于阻變存儲(chǔ)器加乘運(yùn)算的靈活而通用的存算融合體系結(jié)構(gòu)的研究。 如可重配架構(gòu)、原位模擬運(yùn)算加速器等。
3.3.2 我們對(duì)阻變存儲(chǔ)器的相關(guān)研究
我們對(duì)阻變存儲(chǔ)器的研究主要集中在憶阻器存內(nèi)計(jì)算方面, 主要是面向人工智能的算法需求,實(shí)現(xiàn)了貝葉斯算法映射。
憶阻器可以用做近似計(jì)算單元,實(shí)現(xiàn)矩陣向量乘法④Prezioso M, Merrikh-Bayat F, Hoskins B D, et al. Training and operation of an integrated neuromorphic network based on metal-oxide memristors[J]. Nature,2015,521(7550)∶61-4.,將算法復(fù)雜度從O(n2)轉(zhuǎn)換為O(1),即不需要原來(lái)的平方運(yùn)算,只需要施加電壓和讀取電流即可完成矩陣運(yùn)算。 如進(jìn)行圖像處理時(shí),即可以利用此算法。而傳統(tǒng)的矩陣運(yùn)算方法,要做乘加運(yùn)算,需要進(jìn)行數(shù)模轉(zhuǎn)換,會(huì)導(dǎo)致接口面積大(>30%)和延遲高(>50ns)的問(wèn)題。 也有學(xué)者采用二進(jìn)制接口方式,雖使接口代價(jià)減小,但數(shù)值展開(kāi)消耗了更多憶阻器單元和陣列資源。
而我們所做的就是將外圍電路簡(jiǎn)化以及將貝葉斯算法映射到矩陣上面。 即針對(duì)ADCs 和復(fù)雜外圍電路會(huì)極大增加存內(nèi)計(jì)算架構(gòu)開(kāi)銷的問(wèn)題,第一次引入樸素貝葉斯算法在存內(nèi)計(jì)算架構(gòu)中實(shí)現(xiàn):利用現(xiàn)有存內(nèi)計(jì)算架構(gòu)兼容實(shí)現(xiàn)算法;針對(duì)性優(yōu)化算法映射,消除ADCs 龐大的開(kāi)銷⑤Wu B, Feng D, Tong W, et al. ReRAM Crossbar-Based Analog Computing Architecture for Naive Bayesian Engine [C]// 2019 IEEE 37th International Conference on Computer Design (ICCD). IEEE, 2019.。
樸素貝葉斯算法是連續(xù)的乘法,我們對(duì)樸素貝葉斯公式施加了-log 函數(shù),將連續(xù)乘法轉(zhuǎn)換為點(diǎn)乘操作,這樣就可以在陣列位線上實(shí)現(xiàn),且數(shù)值為正,可直接由ReRAM 電導(dǎo)映射。
針對(duì)最小探測(cè)模塊, 傳統(tǒng)的方式是將其轉(zhuǎn)換為數(shù)字信號(hào)之后再進(jìn)行比較。 但我們發(fā)現(xiàn)可以直接進(jìn)行模擬并行比較,因此我們?cè)O(shè)計(jì)了外圍電路,通過(guò)二分探測(cè)和遞增探測(cè),直到找到最小值,即參考電壓Vref同所有位線結(jié)果進(jìn)行模擬量比較,通過(guò)比較結(jié)果是否形成獨(dú)熱碼(one-hot code)來(lái)完成最小探測(cè)。
我們也對(duì)基于ReRAM 的樸素貝葉斯算法引擎的識(shí)別準(zhǔn)確度進(jìn)行了測(cè)試。 實(shí)驗(yàn)驗(yàn)證發(fā)現(xiàn),現(xiàn)有CPU 軟件實(shí)現(xiàn)、理想設(shè)備參數(shù)下的樸素貝葉斯算法引擎、 真實(shí)設(shè)備參數(shù)下的樸素貝葉斯算法引擎、PRIME 架構(gòu)兼容實(shí)現(xiàn)方式下的算法識(shí)別準(zhǔn)確度分別為89.6%,87.5%,88.2%和87.8%。 可以看出,真實(shí)設(shè)備參數(shù)下的樸素貝葉斯算法引擎的精度88.2%和軟件實(shí)現(xiàn)的精度89.6%非常接近。 由于人工智能算法并不需要非常精確,只需要確保判斷結(jié)果準(zhǔn)確即可, 因此該算法方案是可以實(shí)際使用的。且相比軟件實(shí)現(xiàn)來(lái)說(shuō), 其實(shí)現(xiàn)速度提高了11.2~2289.6 倍。⑧
新的存儲(chǔ)器件出現(xiàn)之后,現(xiàn)有文件系統(tǒng)往往是與其不匹配的。新型NVM(Non-volatile Memory)引發(fā)了存儲(chǔ)體系結(jié)構(gòu)的變革,如微軟推出了BPFS 文件系統(tǒng), 英特爾推出了PMFS 文件系統(tǒng),UCSD(University of California San Diego) 推出了NOVA和Moneta-D 文件系統(tǒng),清華大學(xué)推出了HiNFS 文件系統(tǒng), 華中科技大學(xué)則推出了Object-based NVM Management 文件系統(tǒng), 以適合NVM 的特性和調(diào)度方式。
4.1.1 傳統(tǒng)文件系統(tǒng)遷移到NVM 的問(wèn)題
當(dāng)Intel Optane DC PMM (Persistent Memory Module)出現(xiàn)后,我們也對(duì)其進(jìn)行了測(cè)試,發(fā)現(xiàn)它的效率達(dá)不到其標(biāo)注數(shù)值,原因是沒(méi)有針對(duì)其架構(gòu)對(duì)文件系統(tǒng)進(jìn)行優(yōu)化。 基于新型NVM 的存儲(chǔ)系統(tǒng)相對(duì)于傳統(tǒng)磁盤存儲(chǔ)系統(tǒng)的如下特點(diǎn),導(dǎo)致傳統(tǒng)文件系統(tǒng)遷移到新型NVM 存在一系列問(wèn)題。
(1)I/O 瓶頸轉(zhuǎn)移
分析發(fā)現(xiàn)數(shù)據(jù)I/O 路徑上各階段的開(kāi)銷比例產(chǎn)生了巨大的變化,軟件開(kāi)銷開(kāi)始變得不可忽略。
(2)數(shù)據(jù)一致性層次轉(zhuǎn)移
傳統(tǒng)結(jié)構(gòu)中, 數(shù)據(jù)易失和非易失分界線在DRAM 和外存之間;而NVM 主存中,數(shù)據(jù)易失和非易失分界線在CPU Cache 和NVM 之間。 因此,需要專門的CPU Cache 指令以及額外硬件原語(yǔ)來(lái)保證數(shù)據(jù)的一致性。
(3)有限的寫入耐久性
傳統(tǒng)的存儲(chǔ)I/O 棧系統(tǒng)軟件主要是針對(duì)磁盤設(shè)計(jì)的。若直接將這種針對(duì)磁盤存儲(chǔ)的系統(tǒng)軟件應(yīng)用于NVM 存儲(chǔ)系統(tǒng), 則會(huì)導(dǎo)致NVM 存儲(chǔ)設(shè)備的快速磨損。
4.1.2 基于NVM 的文件系統(tǒng)研究現(xiàn)狀
(1)NVM 作為內(nèi)存設(shè)備,利用傳統(tǒng)VFS 路徑的文件系統(tǒng)
如對(duì)SCMFS 文件系統(tǒng),如果無(wú)一致性、磨損均衡保障,TLB(Translation Lookaside Buffer)失效率高;對(duì)PMFS 文件系統(tǒng),使用線性表管理目錄,目前性能不如傳統(tǒng)文件系統(tǒng); 對(duì)NOVA 文件系統(tǒng),DRAM 和NVM 混合日志結(jié)構(gòu)文件系統(tǒng)沒(méi)能完全體現(xiàn)NVM 支持XIP(eXecute In Place)的特性,過(guò)于依賴DRAM 管理元數(shù)據(jù)和數(shù)據(jù)塊索引。
(2)用戶庫(kù)方式直接訪問(wèn)NVM
包括基于SCM 的靈活文件系統(tǒng)接口; 對(duì)操作系統(tǒng)編譯程序、應(yīng)用程序均做修改; Quill 仍需進(jìn)入內(nèi)核態(tài),依賴于POSIX 文件系統(tǒng)接口。
4.2.1 混合存儲(chǔ)文件系統(tǒng)NOCFS:NVM+Flash
即文件系統(tǒng)中的大量數(shù)據(jù)使用Flash 存儲(chǔ),而元數(shù)據(jù)使用NVM 進(jìn)行存儲(chǔ),系統(tǒng)架構(gòu)如圖10 所示。
圖10 混合存儲(chǔ)文件系統(tǒng)NOCFS 架構(gòu)Figure 10 NOCFS architecture of hybrid storage file system
主要工作包括:
第一,NVM 和SSD 混合空間。文件系統(tǒng)直接管理NVM,NVM 存放元數(shù)據(jù),緩存熱數(shù)據(jù)。
第二,并行感知的數(shù)據(jù)同步機(jī)制,即多線程異步寫回。
第三,協(xié)作式垃圾回收。 文件系統(tǒng)層垃圾回收與LightNVM 垃圾回收結(jié)合。
對(duì)NOCFS 性能進(jìn)行測(cè)評(píng), 采用較小容量的NVM,可以使閃存性能提升5 倍,接近于全NVM,與PMFS 文件系統(tǒng)性能相當(dāng)。
4.2.2 基于對(duì)象的NVM 管理器
不同NVM 存儲(chǔ)介質(zhì)讀寫性能差別較大,特性各異。 對(duì)象管理的思想就是把對(duì)NVM 的管理從文件系統(tǒng)中分離,以更低的管理開(kāi)銷實(shí)現(xiàn)更加豐富的應(yīng)用接口,以充分發(fā)揮不同存儲(chǔ)介質(zhì)的優(yōu)勢(shì)。 存儲(chǔ)應(yīng)用可繞過(guò)文件系統(tǒng)直接訪問(wèn)NVM 對(duì)象接口,精簡(jiǎn)訪問(wèn)路徑。 如圖11 所示為傳統(tǒng)文件系統(tǒng)和面向?qū)ο蟮奈募到y(tǒng)對(duì)比。
圖11 傳統(tǒng)文件系統(tǒng)和基于對(duì)象的文件系統(tǒng)對(duì)比Figure 11 Comparison of traditional file system and object-based file system
OBFS (Object-Based File System) 繞過(guò)VFS(Virtual File-system Switch)層,縮短了層次或路徑,實(shí)現(xiàn)了一個(gè)精簡(jiǎn)的名字空間管理,保證其兼容性,直接截獲應(yīng)用的文件訪問(wèn)系統(tǒng)調(diào)用,實(shí)現(xiàn)對(duì)上層應(yīng)用透明。 OBFS 由此消除了傳統(tǒng)基于磁盤的文件系統(tǒng)中很多不必要的開(kāi)銷,提高了系統(tǒng)性能。
基于NVM 的輕量級(jí)存儲(chǔ)系統(tǒng)與傳統(tǒng)存儲(chǔ)系統(tǒng)相比,明顯縮短了I/O 路徑,能快速響應(yīng)應(yīng)用請(qǐng)求,讀寫性能優(yōu)于PMFS。 與基于新型非易失內(nèi)存文件系統(tǒng)NOVA、PMFS 相比,OBFS 可以獲得20%~30%的性能優(yōu)勢(shì)。 與RAMFS 相比,OBFS 的讀性能比RAMFS 性能好, 但寫性能比RAMFS 的性能要差一些。
軟件定義存儲(chǔ)是借鑒軟件定義網(wǎng)絡(luò)的思路,即將存儲(chǔ)的管理和調(diào)配與底層物理硬件分開(kāi),所有存儲(chǔ)相關(guān)的控制工作都僅在相對(duì)于物理存儲(chǔ)硬件的外部軟件中,用戶可以通過(guò)軟件控制資源并對(duì)其進(jìn)行優(yōu)化。 相關(guān)研究主要如下。
5.1.1 解決路徑過(guò)長(zhǎng)帶來(lái)的挑戰(zhàn)
IOFlow 作為學(xué)術(shù)界第一篇關(guān)于軟件定義存儲(chǔ)的文章, 借鑒OpenFlow 在存儲(chǔ)環(huán)境中將控制平面和數(shù)據(jù)平面進(jìn)行分離, 在IO 棧的不同層次使用隊(duì)列對(duì)請(qǐng)求進(jìn)行限流,比如在hypervisor 里面的SMBc 和存儲(chǔ)服務(wù)器端的SMBs,保障虛擬機(jī)端到端的性能。⑥Thereska E, Ballani H, O'Shea G, et al. IOFlow∶A software-defined storage architecture[C]// Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. SOSP, 2013.
Moirai 提出了一種協(xié)同不同層次的cache 進(jìn)行資源管理的方法,既能夠最大化利用系統(tǒng)資源,還能有效對(duì)不同租戶間進(jìn)行性能隔離, 避免性能干擾。⑦Ioan Stefanovici,Eno Thereska,Greg O'Shea,et al.Software-defined caching∶managing caches in multi-tenant data centers[C]//Proceedings of the Sixth ACM Symposium on Cloud Computing. SoCC, 2015.
sRoute 把路由概念引入了存儲(chǔ)棧, 把IO 棧的各個(gè)層次當(dāng)作網(wǎng)絡(luò)中的一個(gè)個(gè)路由器,能夠根據(jù)不同的應(yīng)用制定路由策略, 使得IO 請(qǐng)求能夠在不同IO 層之間轉(zhuǎn)發(fā)。⑧Stefanovici, Ioan,Schroeder, Bianca,O'Shea, Greg, et al.Treating the Storage Stack Like a Network[C]// Proceedings of the 14th Usenix Conference on File and Storage Technologie. FAST, 2016.
5.1.2 解決資源管理的挑戰(zhàn)
即解決分布式系統(tǒng)內(nèi)資源多樣化(CPU、存儲(chǔ)、鎖等)以及任務(wù)多樣化(租戶產(chǎn)生的任務(wù)、系統(tǒng)產(chǎn)生的任務(wù)等)給資源管理帶來(lái)的挑戰(zhàn)。 如Retro 應(yīng)用于分布式環(huán)境,通過(guò)策略和機(jī)制的分離,能夠保障系統(tǒng)內(nèi)所有IO 任務(wù)的SLO (Service Level Objectives),比如租戶的性能需求,或者是心跳信息的延遲保障等。⑨Mace J, Peter Bodík, Fonseca R, et al. Retro∶Targeted Resource Management in Multi-tenant Distributed Systems [C]// Usenix Conference on Networked Systems Design & Implementation. NSDI, 2015.
5.1.3 解決租戶需求多樣化帶來(lái)的挑戰(zhàn)
Crystal 是一種應(yīng)用于對(duì)象存儲(chǔ)的軟件定義存儲(chǔ)架構(gòu), 在數(shù)據(jù)平面可以通過(guò)插入不同的filter 來(lái)提供不同的服務(wù)(壓縮、加密等),設(shè)計(jì)可擴(kuò)展的數(shù)據(jù)平面能夠使得Crystal 具有更豐富的功能。⑩Raúl Gracia-Tinedo, Josep Sampé, Zamora E, et al. Crystal∶Software-Defined Storage for Multi-Tenant Object Stores[C]// 15th USENIX Conference on File and Storage Technologies (FAST'17).FAST, 2017.
隨著可編程交換機(jī)的興起,使用網(wǎng)絡(luò)的計(jì)算及存儲(chǔ)資源來(lái)優(yōu)化存儲(chǔ)系統(tǒng)性能成為趨勢(shì)。Eris 提出在可編程交換機(jī)內(nèi)進(jìn)行并發(fā)控制,保障事務(wù)操作的有序性和一致性,降低存儲(chǔ)系統(tǒng)維護(hù)一致性帶來(lái)的開(kāi)銷,優(yōu)化系統(tǒng)性能。?Li J,Michael E,Ports D R K . Eris∶Coordination-Free Consistent Transactions Using In-Network Concurrency Control [C]// Proceedings of the 26th Symposium on Operating Systems Principles. SOSP,2017.
NetCache 通過(guò)在可編程交換機(jī)內(nèi)做緩存,實(shí)現(xiàn)一種新的KV 存儲(chǔ)架構(gòu),利用交換機(jī)內(nèi)的存儲(chǔ)資源優(yōu)化存儲(chǔ)系統(tǒng)性能。?Jin X,Li X,Zhang H,et al. NetCache∶Balancing Key-Value Stores with Fast In-Network Caching [C]// Proceedings of the 26th Symposium on Operating Systems Principles.SOSP,2017.
我們也做了一些工作。 考慮到對(duì)服務(wù)器來(lái)說(shuō),只能根據(jù)上一個(gè)時(shí)刻狀態(tài)判斷是輕負(fù)載還是重負(fù)載,然后明確是否進(jìn)行副本服務(wù);副本放在很多個(gè)服務(wù)器當(dāng)中,如果都去訪問(wèn)一個(gè)空閑服務(wù)器,會(huì)出現(xiàn)羊群效應(yīng),使該服務(wù)器出現(xiàn)重負(fù)載。 但與服務(wù)器只能根據(jù)過(guò)去狀態(tài)判斷負(fù)載的狀況不同,交換機(jī)非常清楚服務(wù)器負(fù)載,可根據(jù)當(dāng)前數(shù)據(jù)包數(shù)量判斷服務(wù)器負(fù)載狀況,判斷也會(huì)更加準(zhǔn)確。 因此,NetRS 通過(guò)在可編程交換機(jī)內(nèi)進(jìn)行副本選擇,有效降低應(yīng)用響應(yīng)延遲。?Jin X,Li X,Zhang H,et al. NetCache∶Balancing Key-Value Stores with Fast In-Network Caching [C]// Proceedings of the 26th Symposium on Operating Systems Principles.SOSP,2017.
我們對(duì)存儲(chǔ)可靠性做了兩方面的研究。
5.3.1 對(duì)編碼的研究
在網(wǎng)絡(luò)環(huán)境下,如果有節(jié)點(diǎn)壞掉或者不能訪問(wèn)時(shí),需要把數(shù)據(jù)從其他節(jié)點(diǎn)算回來(lái),如果有節(jié)點(diǎn)訪問(wèn)擁塞或鏈接不上,就得不到數(shù)據(jù)。在這種情況下,我們希望用少量節(jié)點(diǎn)就能將數(shù)據(jù)算回來(lái),因此我們的主要思想是將節(jié)點(diǎn)上的數(shù)據(jù)分割為更多的數(shù)據(jù)塊,通過(guò)合理組合數(shù)據(jù)塊,實(shí)現(xiàn)最優(yōu)修復(fù)。 具體來(lái)說(shuō),我們提出具有最優(yōu)存儲(chǔ)和最優(yōu)重建數(shù)據(jù)量的編碼方法Z 碼。 Z 碼的參數(shù)n 和k 選擇靈活,碼率可以任意大;它并非MDS 碼(Maximum Distance Separable code), 但可以擴(kuò)展為GZ 碼且具有MDS 性質(zhì),且具有最小存儲(chǔ)下的最優(yōu)修復(fù)開(kāi)銷。 對(duì)同樣的4 個(gè)節(jié)點(diǎn)來(lái)說(shuō), 對(duì)RS 碼需要3 個(gè)節(jié)點(diǎn)將數(shù)據(jù)算回來(lái),RRS 碼平均需要2.3 個(gè)節(jié)點(diǎn), 而Z 碼只需要2個(gè)節(jié)點(diǎn)。 測(cè)試表明,Z/GZ 碼和最小存儲(chǔ)再生碼FMSR 和PM-MSR 具有相同的存儲(chǔ)開(kāi)銷和修復(fù)開(kāi)銷,但參數(shù)更靈活,且是系統(tǒng)碼。?Liu Q, Feng D, Jiangy H, et al. Z Codes∶General Systematic Erasure Codes with Optimal Repair Bandwidth and Storage for Distributed Storage Systems[C]// Proceedings of the 2015 IEEE 34th Symposium on Reliable Distributed Systems. SRDS,2015∶212-217.
5.3.2 硬盤故障預(yù)警技術(shù)
硬盤故障預(yù)警技術(shù)就是在節(jié)點(diǎn)壞之前進(jìn)行故障預(yù)警。 我們收集了惠普和微軟的壞盤數(shù)據(jù)集,然后進(jìn)行離線建模,具體包括數(shù)據(jù)預(yù)處理、特征選取、訓(xùn)練建模和參數(shù)調(diào)優(yōu)。具體流程如圖12 所示。在線預(yù)測(cè)時(shí),首先進(jìn)行模型導(dǎo)入,包括導(dǎo)入特征選取映射、歸一化參數(shù)以及模型參數(shù);實(shí)時(shí)預(yù)測(cè)包括解析請(qǐng)求、過(guò)濾特征,然后估算預(yù)測(cè)的準(zhǔn)確度。
圖12 硬盤故障預(yù)警流程圖Figure 12 Hard disk failure warning flowchart
5.4.1 面向多租戶云存儲(chǔ)系統(tǒng)的軟件定義文件系統(tǒng)SDFS
現(xiàn)有云平臺(tái)往往將虛擬機(jī)的虛擬磁盤以大文件形式存放在用網(wǎng)絡(luò)連接的共享存儲(chǔ)節(jié)點(diǎn)上,以降低成本,方便管理。 但因此也會(huì)導(dǎo)致IO 棧復(fù)雜,帶來(lái)性能隔離挑戰(zhàn)。
文件系統(tǒng)決定了存儲(chǔ)資源的使用,不考慮文件系統(tǒng)的特性,性能隔離無(wú)從實(shí)現(xiàn)。因此,我們通過(guò)存儲(chǔ)服務(wù)器端文件粒度資源分配,保障虛擬機(jī)性能需求,控制文件系統(tǒng)影響,降低性能干擾;控制平面通過(guò)元數(shù)據(jù)來(lái)記錄和傳遞租戶性能需求;數(shù)據(jù)平面進(jìn)行資源調(diào)度,配合實(shí)現(xiàn)軟件定義的思想。
5.4.2 并行文件系統(tǒng)客戶端持久性高速緩存
主要思想是數(shù)據(jù)按需向計(jì)算節(jié)點(diǎn)遷移;特點(diǎn)是利用分層存儲(chǔ)管理和分布式鎖管理機(jī)制,采用統(tǒng)一命名空間管理高性能客戶端本地緩存;自定義緩存規(guī)則,客戶端本地緩存數(shù)據(jù)按需預(yù)取或替換;減少數(shù)據(jù)遷移和網(wǎng)絡(luò)擁塞,減輕服務(wù)端I/O 壓力和存儲(chǔ)開(kāi)銷;提供性能隔離、QoS(Quality of Service)保障,對(duì)延遲敏感,I/O 局部性應(yīng)用效果顯著。
SDFS 能通過(guò)文件粒度的資源分配, 保障虛擬機(jī)的性能需求。 與Pulsar 相比,Pulsar 無(wú)法控制文件系統(tǒng)延遲寫帶來(lái)的影響, 所以無(wú)法做到性能隔離;而SDFS 能夠避免延遲寫帶來(lái)的干擾而保障各個(gè)租戶的性能需求。 在使用SDFS 進(jìn)行性能隔離的時(shí)候,虛擬機(jī)的性能波動(dòng)降低4 倍以上。