陽小珊,朱立谷,張猛,張偉
(1.中國傳媒大學 理工學部計算機學院,北京 100024;2.中國電子科技集團公司第十五研究所 國家電子計算機質量監督檢驗中心,北京 100083;3.華中科技大學 武漢光電國家實驗室,湖北武漢 430074;4.中國大唐集團科學技術研究院有限公司,北京 100040)
隨著閃存技術的快速發展和存儲密度的提升,目前NAND閃存已被廣泛用于各行業的高性能數據存儲。NAND閃存以每單元存儲的比特數分為多種類型:每單元存儲1比特數據的單層單元(Single-Level Cell,SLC),每單元存儲2比特數據的雙層單元(Multi-Level Cell,MLC),每單元存儲3比特數據的三層單元(Triple-Level Cell,TLC)。目前,NAND閃存的結構也由傳統的平面結構發展為三維結構,存儲密度進一步增加,但是在數據編程過程中由于相鄰單元的耦合干擾而發生比特錯誤,導致數據存儲的可靠性下降。
編程干擾錯誤是3D-TLC NAND閃存主要錯誤之一,設計有效的錯誤容忍和數據管理方案是解決編程干擾錯誤提高數據存儲可靠性的有力手段。然而,設計有效的錯誤容忍和數據管理方案需要清楚地了解3D-TLC NAND 閃存編程干擾具體的錯誤模式。已有的工作[1][2][3]主要研究平面NAND閃存的錯誤模式,沒有系統的研究三維NAND閃存的具體編程干擾錯誤模式,文獻[4]也只是研究了三維MLC NAND閃存錯誤模式,沒有具體探究三維TLC NAND 閃存的錯誤特征。
因此,本文以實際的FPGA測試平臺為基礎,對3D-TLC NAND閃存的編程干擾錯誤進行了測試,并對測試結果進行了分析,研究了編程干擾具體的出錯模式,包括編程干擾錯誤狀態相關性和編程干擾比特錯誤特性研究。這些編程干擾錯誤模式的研究結果能夠為設計有效的錯誤容忍算法和制定高效的數據管理方案以解決編程干擾錯誤帶來的數據存儲可靠性問題提供有利的指導和幫助。
在閃存芯片基本存儲單元電子注入/移出過程中,場效應管被加入較高的偏置電壓以獲得讓電子發生隧穿效應的強電場。這會影響基本存儲單元中隧道氧化層的絕緣性,即基本存儲單元遭受損耗。隨著對一個基本存儲單元數據的反復擦寫,損耗逐漸累積,隧道氧化層的絕緣性逐漸變差,導致出現電荷捕獲(charge trapping)現象,改變存儲單元的閾值電壓。而閃存在數據讀取時就是依靠檢測存儲單元的閾值電壓來分辨其中存儲的數字信息[5]。因此,隨著基本單元被擦寫次數的增加,逐漸累積的損耗最終導致存儲數據在讀取時發生錯誤。這種數據錯誤被稱為原生錯誤(raw error)。當閃存芯片的原生錯誤超過存儲器對錯誤容忍的極限時,閃存芯片到達使用壽命。另外,當對一個基本存儲單元進行擦寫,即其閾值電壓發生改變時,相鄰存儲單元的閾值電壓會通過單元間寄生耦合電容,發生改變,導致在數據讀取時出現原生錯誤[6]。
TLC NAND的每單元存儲3比特數據,左比特被稱為最高位(Most Significant Bit,MSB),中間比特被稱為中間位(Central Significant Bit,CSB),右比特被稱為最低位(Least Significant Bit,LSB)。閃存以頁為單位進行比特數據編程,利用one-shot編程方法分別將MSB、CSB和LSB一次性寫入三個不同的邏輯頁,即MSB頁、CSB頁和LSB頁,這三個頁位于相同的字線。當對某一個字線上的三個頁進行編程時,由于寄生電容的耦合效應,編程過程會對臨近的字線上已經編程完的三個頁造成干擾,使得臨近字線上閃存頁單元捕獲額外電子引起閾值電壓發生漂移,容易導致比特錯誤,如圖1所示。
為了能發現編程干擾錯誤的現象,本文以實際的FPGA測試平臺為基礎對3D-TLC NAND閃存的編程干擾錯誤的出錯模式進行了測試研究。通過對被測NAND閃存進行多次循環擦寫,記錄每次擦寫各比特位的變化,來分析編程干擾錯誤的隨擦寫次數變化的情況。本次實驗共進行了5000次的循環擦寫,對測試結果從編程干擾錯誤狀態相關性和編程干擾錯誤比特錯誤特性進行統計分析的結果如下內容。
首先對3D-TLC NAND閃存的編程干擾錯誤狀態相關性進行了分析和研究,統計了不同編程干擾狀態隨著擦寫循環次數變化的轉化比例,結果如圖2中的(a)(b)(c)(d)所示;實驗結果顯示,3D-TLC NAND閃存不同的單元狀態會經歷不同程度的編程干擾錯誤,編程干擾錯誤狀態相關性與擦寫循環次數有關,隨著擦寫循環次數的增加而發生波動。由編程干擾錯誤產生的原理可知,編程干擾主要引起3D-TLC NAND閃存單元的閾值電壓窗口向右轉移,由電荷數量少的閾值電壓窗口向電荷數量多的閾值電壓窗口漂移,而且閾值電壓窗口轉移容易發生在兩個相鄰的狀態之間,跨越一個或多個狀態比較困難。
圖2(a)顯示,狀態001到狀態000的轉移比例高于狀態000到狀態010和狀態001到狀態000的轉移比例,因為狀態001具有相對較少的電荷數量,單元內部電場強度相對較弱,較容易捕獲額外電子而轉移到狀態000,狀態000狀態100較為困難,因為單元要捕獲足夠多的電子才能跨越中間狀態010和狀態110轉移到狀態100,這種狀態轉移比例非常低,比例都在10%以下,而從狀態000轉移到狀態010的比例也都在10%左右波動,隨著擦寫循環數量的增加,錯誤比例越來越低。在擦寫循環數量的初期,狀態001到狀態000的比例相對較高,錯誤比例在30%左右,但是隨著擦寫數量的增加,錯誤比例下降。由于數據是從第一個塊的第一個頁開始寫,到指定的數據塊的最后一個頁結束,然后才開始進行數據讀取操作,中間會經歷數據保存錯誤,保存錯誤引起狀態000轉移到狀態001,因此,錯誤比例隨著擦寫循環數量的增加發生抖動,當擦寫數量達到2000時,保存錯誤引起的狀態轉移比例達到80%,之后隨著擦寫數量的繼續增加,錯誤比例呈下降趨勢。

(a)

(b)

(c)
圖2(b)顯示了狀態001轉移到狀態011、狀態010轉移到狀態000和狀態110以及狀態001轉移到狀態000的錯誤比例隨著擦寫循環數量增加的變化情況。這四種錯誤狀態轉移比例隨著擦寫循環數量的增加呈現不穩定的趨勢,在擦寫循環數量小于1000時,四種狀態轉移比例相對較高,但是隨著擦寫數量的增加,錯誤比例波動性下降。對于狀態010轉移到狀態110的比例,在擦寫循環300次左右,錯誤比例能夠達到90%,之后錯誤比例急劇下降,狀態001轉移到狀態000的比例從最初的48%開始下降。狀態010轉移到狀態110和狀態001轉移到狀態000的比例大都高于狀態001轉移到狀態011和狀態010轉移到狀態000的比例。因為狀態001轉移到狀態011和狀態010轉移到狀態000是由于數據保存錯誤引起,而且由高狀態發生電荷泄露而變成低狀態,較為困難,高狀態電荷數量較多,需要泄露足夠多的電子才能轉移到低狀態,而這需要較長的保存周期。
圖2(c)顯示了狀態011轉移到狀態111、狀態100轉移到狀態101、狀態100轉移到狀態110、狀態101轉移到狀態100的錯誤比例隨著擦寫循環增加的變化情況。狀態011轉移到狀態111、狀態100轉移到狀態110以及狀態101轉移到狀態100的錯誤比例隨著擦寫循環的變化呈現穩定的趨勢,而且錯誤比例大都低于5%,這三種狀態轉換都是由于數據保存錯誤引起,由于保存時間較短,保存錯誤的比例低于編程干擾錯誤,編程干擾錯誤此時是主要錯誤。狀態100轉移到狀態101是由于編程干擾錯誤造成,錯誤比例明顯高于其他三種狀態轉化,且隨著擦寫數量的增加整體呈下降趨勢。
圖2(d)顯示狀態110到狀態010、狀態110到狀態100、狀態111到狀態011和狀態001的錯誤比例隨擦寫循環數量的變化趨勢,狀態110到狀態010、狀態110到狀態100以及狀態111到狀態001的錯誤比例非常低,且穩定在5%附近,因為編程干擾引起閾值電壓窗口跨越兩個狀態較為困難。編程干擾引起狀態111轉移到狀態011的錯誤比例較高,且隨著擦寫循環數量的增加逐漸呈快速增長趨勢,從前期的15%左右增加到75%,因為狀態111是擦除狀態,該狀態具有較少的電子,內電場較弱,較容易從外界捕獲額外電子而使其轉移到狀態011。
綜上可見,3D-TLC NAND閃存的編程干擾錯誤使得存儲單元狀態轉移比例具有不平衡的關系,相鄰的存儲單元狀態較容易發生轉移,跨越中間狀態轉移到其他狀態需要捕獲較多的額外電子較為困難。另外,編程干擾使得存儲單元從低存儲單元狀態到高存儲單元狀態發生轉移,具有較少電子的存儲單元狀態較為容易向具有較多電子數量的存儲單元狀態轉移。
本文也研究了3D-TLC NAND閃存編程干擾比特錯誤特性,統計了MSB頁、CSB和LSB頁中比特0翻轉成比特1或比特1翻轉成比特0的錯誤比例,以及對應的比特錯誤率分布,分別顯示在圖3和圖4。

圖3 MSB頁、CSB頁和LSB頁的比特錯誤比例

圖4 MSB頁、CSB頁和LSB頁的比特錯誤率分布
圖3給出了MSB頁、CSB頁和LSB頁的比特錯誤比例隨擦寫循環數量變化情況。圖中的0>>1 表示比特0翻轉成比特1,相反地,1>>0 表示比特1翻轉成比特0。MSB和CSB頁中的1>>0的錯誤比例以及LSB頁中的0>>1的錯誤比例明顯高于MSB和CSB頁中的0>>1以及LSB頁中的1>>0的錯誤比例。MSB頁中的0>>1的錯誤比例隨著擦寫循環的增加由最初的85%逐漸下降到5%,CSB頁的0>>1和LSB頁的1>>0的錯誤比例隨擦寫循環的增加呈現波動趨勢。當擦寫循環數量小于3000次時,LSB頁的0>>1的錯誤比例相對較高,在90%附近波動,當擦寫循環數量大于3000次時,LSB頁的0>>1的錯誤比例開始下降,在擦寫循環數量達到5000時,錯誤比例已經下降到70%。MSB頁的1<<0的錯誤比例由最初的18%增加到95%,CSB頁的1>>0的錯誤比例在80%左右波動。出現MSB頁1>>0的錯誤是由圖2中的110>>010,111>>011,111>>001引起,出現MSB頁0>>1錯誤是由000>>100,010>>110,011>>111引起,出現CSB頁1>>0錯誤是由011>>001,010>>000,110>>100,111>>001引起,出現CSB頁0>>1錯誤是由000>>010,001>>011,100>>110引起,出現LSB頁1>>0是由001>>000,101>>100引起,出現LSB頁0>>1錯誤是由000>>001和100>>101引起。圖2中111>>011的比例隨著擦寫數量的增加而增加造成MSB頁的1>>0的錯誤比例逐漸增加且具有高的比例。圖2中的100>>101具有高的比例導致LSB頁中的0>>1的錯誤比較高。具有較多的狀態轉移引起CSB的1>>0錯誤。
圖4給出了MSB頁、CSB頁和LSB頁0>>1和1>>0的比特錯誤率隨著擦寫循環數量變化的分布情況。MSB頁、CSB頁和LSB頁0>>1和1>>0的比特錯誤率分布不平衡,MSB頁1>>0的比特錯誤率較高且隨著擦寫循環數量的增加呈近似指數增長趨勢。當擦寫循環數量達到5000次時,MSB頁1>>0的比特錯誤率超過0.01,數據可靠性受到嚴重威脅。其他的比特錯誤率較低大都低于0.002,且隨著擦寫循環數量的增加呈現平穩增長的趨勢。MSB頁、CSB頁和LSB頁具有不平衡的0>>1和1>>0的比特錯誤比例和比特錯誤率分布,MSB頁較易發生1>>0的錯誤,且錯誤率隨著擦寫循環數量增加而增加。
為了設計基于NAND閃存的高效可靠的錯誤容忍和數據管理方案,本文對3D-TLC NAND閃存的編程干擾錯誤的狀態相關性和比特錯誤特性進行了測試和分析,測試結果顯示出來的特性有利于指導設計相應的高可靠數據存儲解決方案,有利于在存儲密度越來越高的閃存硬件基礎上實現高可靠的存儲系統和產品。