內容提要:
首先,數據爆炸性增長使當今的存儲系統(tǒng)面臨嚴峻挑戰(zhàn)。圖靈獎獲得者Gim Gray曾提出“數據摩爾定律”,即“人類每18個月產生的信息量,是人類之前全部信息量的總和”。隨著大數據和云計算的發(fā)展,我們對存儲的需求量也非常之大。根據統(tǒng)計,2019年全球產生的數據量已經達到了41ZB,2025年預計將達到175ZB(1ZB=1百萬PB=10億TB=1021字節(jié))。如此多的數據,如何存儲以及快速訪問是數據存儲領域亟待解決的問題。
其次,從國家需求來看,數據存儲也需要自主創(chuàng)新。作為數據的載體,數據存儲是新基建中最為基本的組成部分,也是關系國計民生和國家戰(zhàn)略安全的關鍵基礎設施。但目前國內的存儲系統(tǒng)98%以上都是采用國外的存儲芯片和硬盤,如Seagate,Western Digital的硬盤和Samsung,Micron的存儲芯片。最近幾年,包括長江存儲等國內企業(yè)都在部署存儲芯片,如長江存儲今年推出了128層的閃存等。這些產業(yè)化發(fā)展的突破和進展,也讓我們看到了我國數據存儲領域自主可控的希望。
第三,從全球存儲市場來看,數據存儲產業(yè)市場龐大。根據Gartner發(fā)布的相關統(tǒng)計數據,如圖1所示為全球半導體存儲器的市場營收狀況。圖2所示為全球半導體細分市場狀況。
圖1 全球半導體存儲器市場營收狀況(單位:億美元)Figure 1 Revenue of the global semiconductor memory market(unit:US$100 million)
圖2 全球半導體市場細分狀況Figure 2 Segmentation of the global semiconductor market
可以看出,存儲器是全球最大的半導體細分市場。2016年~2018年全球半導體存儲器市場營收的年均復合增長率為40%。2018年市場營收超過1500億美元,其中中國的市場規(guī)模超過4000億人民幣(進口)。受中美貿易爭端及存儲器價格下降影響,2019年全球半導體市場營收出現暫時萎縮。根據統(tǒng)計,中國占有全球超過40%的半導體存儲器市場,但存儲芯片的自給率只有8%。2020年長江存儲的64層256Gb 3D NAND已經開始量產,未來希望有更多的自主芯片。
大數據時代,對存儲的要求是高性能、可擴展、低能耗、低延遲、高安全、高可靠以及數據長久保存。大數據時代對存儲的需求推動了存儲技術發(fā)展。
1.2.1 專用大數據存儲系統(tǒng)
如谷歌的GFS(Google File System)系統(tǒng),容量達1EB,客戶端超10億;國內如騰訊的TFS(Tencent File System)系統(tǒng),容量達800PB,有8億QQ用戶和6億微信用戶。還有Facebook的專用對象存儲系統(tǒng)HayStack,用于保存圖片視頻等,支持海量小文件。
1.2.2 通用大數據存儲系統(tǒng)
由于目前做研究主要針對開源系統(tǒng),所以在此僅列舉一些典型的開源大數據存儲系統(tǒng)。如充分利用集群的能力進行高速運算和存儲(Map Reduce)的HDFS(Hadoop Distribute File System)系統(tǒng)。
在高性能計算中用得比較多的Lustre系統(tǒng),是第一個基于對象存儲設備的、開源并行文件系統(tǒng),提供POSIX文件接口。目前該系統(tǒng)已被Intel收購,由Intel進行維護,并作為Intel在2020年前達成百億億次計算工程的一部分。目前,全球TOP100的高性能計算機70%都是采用Lustre系統(tǒng),基于其開源文件系統(tǒng),再加入自己的特色,如國內的“天河”超級計算機等。
還有一類就是我們通常所說的云存儲,運用最廣泛的就是Ceph系統(tǒng),它是一個高可靠、可擴展的分布式文件系統(tǒng),提供Object、Block和File三種接口方式。該存儲系統(tǒng)是博士生Sage Weil在圣塔克魯茲加利福尼亞大學(University of California,Santa Cruz,UCSC)實施開發(fā)的。雅虎的PB級云對象存儲COS就選擇了Ceph系統(tǒng)。
最后一個就是OpenStack系統(tǒng),這是國際上的一個開源組織,最早是由美國國家航空航天局(National Aeronautics and Space Administration,NASA)和Rackspace(一家托管服務器及云計算提供商)合作研發(fā)、并聯合全球的計算機廠商共同發(fā)起,是一個開源的云計算管理平臺,它的底層采用Ceph的架構。
近幾年,存儲系統(tǒng)在國內蓬勃發(fā)展,對存儲系統(tǒng)的相關研究比較多,這也是因為有比較多的開源系統(tǒng)可以利用,包括不少計算機廠商也在用開源存儲系統(tǒng)進行研發(fā)。
新型存儲器件的出現給大數據存儲系統(tǒng)帶來了新的發(fā)展機遇。特別是新型非易失存儲技術,如PCM(Phase-Change Memory)、MRAM(Magnetoresistive Random Access Memory)、STT-MRAM(Spin-Transfer Torque-Magnetoresistive Random-Access Memory)、3D NAND Flash、3D XPoint等存儲技術。但如何形成與之相適應的新的器件、芯片和設備,最后運用到大數據存儲系統(tǒng)中,使之發(fā)揮作用,滿足大數據存儲高性能、高可靠、高安全、低能耗和數據長期保存等方面的需要,是未來研究和發(fā)展的趨勢。所以本次講座也將圍繞非易失存儲器以及怎樣構成存儲系統(tǒng)展開。
Wikibon公司在2015年就做過一個統(tǒng)計和預測,認為未來閃存將會逐步取代硬盤。目前,SSD(Solid State Disk)的應用也越來越多。主流的閃存單元分為浮柵單元和電荷俘獲單元,通過一定外加電場作用,使閃存單元俘獲/排出電荷,改變存儲單元閾值電壓的高低,表示邏輯0和1。其存儲過程先是進行擦除,以塊為單位;然后再進行讀寫,讀寫過程中以Page為單位,由若干個Page構成塊。
當前,閃存技術正處于2D陣列轉向3D堆疊陣列的階段。其工藝尺寸縮小到達物理極限后,通過垂直堆疊進一步增加了存儲密度,堆疊層數也逐年增加。比如長江存儲,2019年推出了64層的閃存,今年則推出了128層閃存,就是通過堆疊進一步提高存儲容量。除了工藝和堆疊提高存儲容量,還有一個途徑是使單元存儲更多邏輯比特,存儲密度進一步提高:使1個單元存儲(Cell)從存儲單個邏輯比特到存儲多個邏輯比特,從SLC(Single-Level Cell)發(fā) 展 到MLC(Multi-Level Cell)、TLC(Trinary-Level Cell)和QLC(Quad-Level Cell)。但工藝上的3D堆疊陣列,以及由于存儲密度提高,閾值電壓區(qū)間被壓縮,可靠性和編程速度都需要進一步研究和優(yōu)化。
國際上對閃存的研究主要集中在可靠性、大頁問題、垃圾回收優(yōu)化、Open Channel和系統(tǒng)應用性能優(yōu)化等幾個方面。其中在可靠性問題研究上,包括硬件減少編程干擾、軟件優(yōu)化可靠性,如錯誤數據分散到無效數據;同時,當單顆芯片容量到達一定程度后,其管理的Page也慢慢從2kB發(fā)展到4kB、16kB、32kB甚至更大,也就是大頁問題,主要研究如何提升大頁使用效率。垃圾回收研究,如分離Flash頁基于Buffer中的臟位。還有由閃存構成的Open Channel SSD的管理問題,如light NVM的研究;以及面向應用的系統(tǒng)性能優(yōu)化問題,如KV(Key Value)SSD的多日志結構和可變大小記錄數據等。
從閃存芯片的技術發(fā)展來看,2014年是閃存從2D到3D的一個拐點。從市場來看,2018年以前閃存主要被閃迪、東芝、三星、鎂光、西數等國際性大企業(yè)所把控;2019年之后,才出現長江存儲的閃存芯片。
我們基于閃存也開展了相關研究,但由于前期沒有國產閃存芯片支持,所以都是利用國外閃存芯片開展研究。主要包括:PCIe接口SSD,支持NVMe協議;設計多款開發(fā)板;Flash子卡(3D NAND Flash,1.5TB,6顆芯片,3通道);Flash控制器,達到芯片理論速度11MB/s寫入,45MB/s讀取,并支持高級命令Interleave、Multiplane操作和Copyback,采用Interleave、Multiplane后速度可達50MB/s寫入以及60MB/s讀取;針對Flash大頁,運用基于重復編程特性的多次閃存子頁寫入技術①Feng Y,Feng D,Tong W,et al.Multiple Subpage Writing FTL in MLC by Exploiting Dual Mode operations[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2019,39(3):599-612.;針對垃圾回收,使用SLC塊加速3D MLC閃存的垃圾回收②Li S,Tong W,Liu J,et al.Accelerating garbage collection for 3D MLC flash memory with SLC blocks[C]//2019 IEEE/ACM International Conference on Computer-Aided Design(ICCAD).ACM,2019.;針對Open-Channel SSD,提出了QBLK,充分利用開放通道SSD的并行性③Qin H,Feng D,Tong W,et al.QBLK:Towards Fully Exploiting the Parallelism of Open-Channel SSDs[C]//2019 Design,Automation&Test in Europe Conference&Exhibition(DATE).2019.。
2.2.1異構融合存儲設備
我們在10年以前就開始研究SSD控制器(Controller)技術,開發(fā)的第一款SSDsim到現在還在被全球學界和廠商用來做SSD控制器的模擬仿真。我們的思路就是用FPGA(Field Programmable Gate Array)來做SSD控制器,包括從最早最低端的FPGA芯片,到現在用Kintex 7的芯片,原因是我們做的這個控制器一方面是為SSD,另一方面也是為下一代非易失內存的研發(fā)考慮。如圖3所示,為異構融合存儲設備硬件結構。
圖3 異構融合存儲設備硬件結構Figure 3 Hardware structure of heterogeneous converged storage devices
該平臺與主機通過PCI-E接口連接,采用NVMe協議,中間是一塊FPGA芯片,用子母卡方式,子卡可以是PCM、閃存、MRAM等子卡。如圖3左邊所示,有一系列調試接口,PCM板也可以做內存訪問方式,測試其訪問速度。該異構融合存儲平臺可支持Flash和PCM,我們利用其開展了基于閃存的SSD研究、基于PCM的內存研究以及相變存儲器與閃存的混合存儲研究。
如圖4所示是融合存儲設備原型。之所以將其稱之為融合存儲設備,是因為我們可以對其進行配置,如在FPGA中配置SSD的控制器(Controller),那么它就可以成為一個PCI-E的SSD;如果我們將其作為一個高速擴展內存,那么就可以將PCM或者MRAM作為擴展內存方式進行訪問。設備中的子卡看起來像內存條,實際上物理接口是類似內存的自定義接口,同時FPGA里面也有CPU和微內核,可以以內存方式訪問子卡。但Flash控制不是用內存訪問方式。Flash子卡不支持原地修改及字節(jié)操作,磨損次數有限;而PCM或MRAM的子卡支持原地修改和字節(jié)操作,同時就有耐磨損和低能耗的特點。
圖4 融合存儲設備原型Figure 4 Prototype of converged storage device
融合存儲控制器采用的FPGA芯片是Kintex 7系列,處理器是ARM CortexTM-A9雙核處理器;PCIe接口使用gen2.0×8,理論帶寬可達5Gbps×8=40Gbps;有4個DDR3 DIMM(Dual Inline Memory Module,雙列直插內存模塊),采用了鎂光的LPDDR2-PCM芯片,直接用內存方式訪問,Flash與PCM配置更加靈活。
該設備具有停電數據不丟失,支持系統(tǒng)快速啟動、關機、恢復,可作為固態(tài)盤或擴展內存使用;低能耗,可以降低存儲系統(tǒng)能耗;大容量,融合存儲容量最高達TB級;高性能,支持NVMe協議。
2.2.2 異構混合內存體系結構研究與開發(fā)
我們和浪潮合作,利用Intel主板做了一個TB級的異構混合主存硬件,提出了TB級NVM和DRAM融合主存體系結構;用Intel的QPI(Quick Path Interconnect)總線實現多核共享,采用高速FPGA硬件控制互連邏輯;同時具有靈活可擴展NVM架構;實現多粒度、并行訪問的PCM控制器以及實現支持高級命令的3D NAND Flash讀寫優(yōu)化控制器。
在TB級異構混合主存軟件調度方面,提出了異構混合主存系統(tǒng)地址映射方案,動態(tài)內存分區(qū)調整方案,面積優(yōu)化的BCH(Bose,Ray-Chaudhuri,Hocquenghem)編譯碼器糾錯方案及并行流水線LDPC碼(Low-Density Parity-Check Codes)編譯碼器方案,自適應負載的垃圾回收方案及磨損均衡、壞塊管理,提出了異構混合主存緩存數據一致性方案,并在ISCA(The International Symposium on Computer Architecture)、ICCD(International Conference on Computer Design)、DAC(Design Automation Conference)、DATE(Design,Automation and Test in Europe)、ICPP(International Conference on Parallel Processing)、TACO(Transactions on Architecture and Code Optimization)、TOC(Transactions on Computer)、JSA(Journal of Systems Architecture)等會議和期刊發(fā)表12篇論文和申請發(fā)明專利16項。
2.2.3 面向3D閃存的性能優(yōu)化
閃存芯片的容量隨著工藝進步成倍增長,閃存塊容量也隨之成倍增長,頁大小從2kB不斷增長到16kB,甚至更大。但在文件系統(tǒng)層,文件系統(tǒng)塊大小仍然以4kB為主。這樣的優(yōu)勢是降低了存儲成本和具有更大吞吐量,但劣勢是會造成上下層存儲單元大小不匹配、存儲空間與傳輸時間浪費。上下層存儲單元大小不匹配問題,比如進行一個4kB的數據修改(update),首先要讀閃存一頁16kB,然后對其修改;修改完成后,再將其異地寫回去,并將原頁面作廢,才完成1次update的操作。在此過程中,傳輸放大倍數為(16kB+16kB)/4kB×100%=800%,傳輸放大了8倍;而寫放大為16kB/4kB×100%=400%,寫放大了4倍。除了性能下降、存儲空間浪費外,還要考慮閃存的壽命問題,因此需要減少寫放大和寫的次數,才能更好地利用于大容量閃存。
為了解決這個問題,現有的工作主要從優(yōu)化緩存角度出發(fā),如利用緩存進行小寫合并,合并成閃存頁大小后再寫入閃存中,需要額外子頁映射表存儲這部分元數據信息,并且引入額外數據整理開銷;優(yōu)化傳統(tǒng)LRU(Least Recently Used)算法,以閃存塊為粒度將數據刷回介質,并且在刷回時進行頁合并,最后采用LRU補償方案提升順序寫入時LRU的效率等。
但是由于負載的時間、空間局部性不同,設備DRAM容量限制,引入的額外管理和數據遷移開銷等原因,優(yōu)化的程度會受限。而基于閃存重復編程特性來解決不匹配的問題,則可以避免額外寫放大和對緩存大小的依賴。但同時也存在對子頁管理的問題:在SLC模式時,可以很好地去寫;但當MLC模式時,有些模式不能轉換過去,是不能寫的??紤]到SLC模式很好地支持單元狀態(tài)單向從“1”到“0”的轉化,繞開了隨機化模塊、用戶寫入的數據即是存儲到陣列的數據,有性能和可靠性的優(yōu)勢,我們設計了MLC閃存的重復編程方法,利用閃存的雙模特性,即閃存芯片可以在默認模式(MLC/TLC模式)和SLC模式之間進行切換。而雙模式轉換不當會導致數據崩潰,且?guī)頂祿槠膯栴}和降低讀性能。對此,我們采取了以下技術。
(1)采用面向SLC閃存的映射粒度自適應FTL(MGA-FTL)技術
核心思想是:采用更細粒度的子頁響應小寫請求,擦除之前寫多次的頁。FTL模塊采用兩級映射表,對閃存頁狀態(tài)進行轉化和采取相應的分配策略。
第一,兩級映射表。由于只使用子頁級映射表會成倍增加映射表占用DRAM的開銷,因此采用頁級和子頁級混合的兩級映射表方案,初始只創(chuàng)建頁映射表,只在進行了子頁小寫時才創(chuàng)建對應子頁表項。
第二,閃存頁狀態(tài)轉換。由于已有的3種閃存頁狀態(tài)(free/valid/invalid)不能表示一個閃存頁中部分子頁被寫入的情況,因此增加一個新的頁狀態(tài),即部分有效(Partially Valid,PV),原先3種狀態(tài)隨之變化為:完全空閑(Fully Free,FF)、完全有效(Fully Valid,FV)、完全無效(Fully Invalid,FI)以及新添加的部分有效PV。
第三,分配策略。根據狀態(tài)采用相應的分配策略。由于一個物理頁中的數據并不是邏輯連續(xù)的,為了減少冗余數據傳輸,分配策略的主要思想是使用子頁響應小寫請求。具體策略包括:獨占式分配,即一個物理頁只能存儲屬于相同邏輯頁的數據,實現更少的數據碎片化;共享式分配,即一個物理頁可以存儲不同邏輯頁的數據,獲得更高的空間利用率。
實驗表明,通過此技術的優(yōu)化,真實負載可以降低8%~53%的平均響應時間,合成負載降低72%的平均響應時間且小請求為主的負載效果更加顯著;對于8kB大小的閃存頁,減少了7.42%的寫放大,對于16kB大小的閃存頁,減少了30.83%的寫放大,有利于提高閃存壽命。④Feng Y,Feng D,Yu C,et al.Mapping granularity adaptive FTL based on flash page re-programming[C]//Design,Automation&Test in Europe Conference&Exhibition(DATE),2017.IEEE,2017.
(2)面向MLC閃存的多次子頁寫入(MSPWFTL)技術
核心是想是:使用SLC模式塊響應小請求,進行多次子頁寫入;使用MLC模式響應連續(xù)的大塊請求。仍沿用兩級映射表等對子頁元數據進行管理,并采用SLC模式管理模塊和碎片化管理模塊。
1)SLC模式管理模塊設計
首先,為閃存控制器添加2種模式轉換接口:Erase to SLCMode(E2S),以塊為轉換粒度,但開銷大;set Feature SLC enable(sFSe),以晶圓為轉換粒度,開銷小。
其次是元數據管理,記錄每個閃存塊當前模式以及存儲的數據模式,防止SLC/MLC混用導致數據崩潰。系統(tǒng)斷電重啟后,原本SLC模式塊會恢復到默認MLC模式,但其內存儲的是SLC數據,因此:
第一步:判定當前閃存塊模式與數據模式是否一致;若不一致,使用sFSe轉換閃存塊工作模式;
第二步:進行子頁數據讀寫;
第三步:為避免影響晶圓其他數據,使用sFSe轉回原工作模式。
以上通過原子操作,可以防止數據丟失。
2)碎片化管理模塊設計
碎片化產生的原因是:使用子頁響應小寫請求,相同邏輯頁數據寫入不同物理頁中,或者原本是整頁寫入,但發(fā)生小寫更新,數據存儲在不同物理頁中。子頁分配引起的數據碎片化,會導致實際讀取的閃存頁數目大于邏輯頁數,影響讀性能。因此需要對讀密集型應用進行碎片化數據管理,提高設備性能。
在具體設計時,首先根據碎片整理收益臨界值和平均讀間隔判斷是否屬于讀密集的數據。
第一,碎片整理收益臨界值判斷。根據所使用的閃存參數以及劃分的子頁數目,計算整理碎片收益,當邏輯頁讀次數大于n時進行碎片整理將獲得優(yōu)勢:
第二,平均讀間隔判斷。在某一負載中,讀密集的數據(讀次數大于n)其平均讀間隔較小,讀松弛的數據讀間隔較大,兩者差距明顯。
其次對讀密集的碎片數據進行整理,針對以上兩個方面分別采用讀密集感知的更新方法和子頁合并方法,將邏輯頁遷移至同一個物理頁中。
實驗驗證表明,對于讀密集型負載,讀服務時間可以降低35%,有效降低了平均響應時間。對比其他方案性能,也有明顯優(yōu)勢,響應時間平均減少了57%;劃分更多子頁可以獲得更好的性能,但也要考慮到碎片化問題對平均響應時間的影響。擦除次數則平均減少了34.1%,寫放大平均減少了52.1%。⑤Feng Y,Feng D,Tong W,et al.Multiple Subpage Writing FTL in MLC by Exploiting Dual Mode operations[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2019.
2.2.4 面向3D閃存的可靠性技術
三維堆疊結構閃存陣列被認為是閃存持續(xù)發(fā)展的可行方案,其優(yōu)勢是存儲容量提升、更好的耐久性等,但也存在更大的單元間干擾、大頁問題等。
單元間編程干擾是由于單元間的耦合作用所產生。對于2D結構來說,鄰位之間的影響,只需要考慮相鄰位線(X-direction)以及相同層中的相鄰字線(Y-direction);但對3D結構來說,還需要考慮相鄰層中的字線(Z-direction)以及相鄰層中的對角線方向的干擾。
分析一款鎂光的3D閃存,發(fā)現它在邊界用的是SLC模式,在中間用的是MLC模式,已經考慮了可靠性的問題,但我們發(fā)現仍存在鄰位之間的影響。通過抽象Y-Z視圖和閃存高低頁關系,得到三維陣列中的閃存頁排布,如圖5所示是其閃存頁的排布情況。
圖5 三維陣列結構中閃存頁排布(Y-Z方向)Figure 5 Flash memory page layout in three-dimensional array structure(Y-Z direction)
從Page1,Page2,Page3,Page4一直寫到Page31。到Page32之后,先寫低頁再寫高頁,以Page33為例,當對Page34進行寫入時,電壓加強,產生漂移;繼續(xù)往下寫,寫到Page67的時候也會對Page33有影響。而從高頁來看,Page68和Page67、Page130都會對Page66產生影響。也就是說,低頁受到2次干擾,而高頁會受到3次干擾。而單元間耦合次數的增加,會產生更加嚴重的干擾,導致更高的比特出錯率。
為了解決這個問題,可以利用單元間編程干擾與寫入操作都對單元閾值電壓起到增加的一致效果,緩解編程干擾帶來的可靠性問題。因此我們設計了干擾補償編程方法。根據低頁、高頁分別受到2次和3次干擾,列出高低頁受到總干擾量的公式如下。單元受到干擾量F(n,m)=
(1)干擾補償的編程方法
首先,通過計算得到高低頁隨后受到的編程干擾平均大小;然后,在編程寫入時判定電壓值對應減小編程干擾的大小,經過后續(xù)干擾后閾值電壓達到預期狀態(tài)。每頁具體補償多少電壓可以通過模擬進行計算。
根據干擾補充編程方法,經過“完全補償”后的單元Vth狀態(tài)是預期的理想狀態(tài)。但只寫入部分閃存頁的閃存塊中,最新寫入的若干閃存頁還“未完全補償”,比特出錯率高,特別是在3D閃存中未完全補償的頁數目急劇增加,影響設備可靠性。因此,需要提出針對性的可靠性保障方法,對邊界頁進行補償。
(2)讀電壓偏移策略
對于未完全補償閃存頁出錯的情況,根據出錯頁號可知其缺少的補償類型及補償次數。因此,可根據出錯頁號得到其閾值電壓缺少量,讀操作時對應降低其讀判定電壓,獲得更優(yōu)的讀窗口,然后使用不同read-Retry參數調整讀窗口。
(3)人工補償策略
由于數據模式不同以及read-Retry不能完全匹配缺失的電壓量,若仍發(fā)生讀錯誤的情況,向可以為出錯頁進行補償的空閑閃存頁寫入隨機數據,以犧牲較少空間的方式提升可靠性。
可靠性保障的總體方案如圖6所示。
圖6 可靠性保障的總體方案Figure 6 Overall scheme of reliability guarantee
經過實驗驗證,干擾補償編程(DCPS)方法有效緩解了由于單元間編程干擾對原始比特出錯率的影響;由于“未完全補償”頁的可靠性隱患,只使用DCPS方法效果提升有限,整體比特出錯率降低了17%;結合可靠性保障方案后,比特出錯率至少降低了82%。⑥Feng Y,Feng D,Tong W,et al.Using Disturbance Compensation and Data Clustering(DC)2 to Improve Reliability and Performance of 3D MLC Flash Memory[C]//2017 IEEE 35th International Conference on Computer Design(ICCD).IEEE,2017.
(未完待續(xù))