胡海華,韓國軍,張孝誼
(廣東工業(yè)大學 信息工程學院,廣東 廣州 510000)
近年來,NAND 閃存已成為主流存儲介質,在智能手機、個人電腦和大型數據中心中得到廣泛應用[1-4]。隨著制造工藝的進步,閃存單元的封裝尺寸逐漸縮小。一方面,閃存單元中存儲的比特數成倍增加;另一方面,閃存內部相鄰單元寄生耦合電容效應變大,單元間干擾(cell-to-cell interference,CCI)增強,導致數據存儲可靠性降低[5-6]。與此同時,編程次數和保持時間的增加引發(fā)隨機電報噪聲(random telegraph noise)和可持久性噪聲(retention noise),降低了閃存的使用壽命。
關于以上噪聲帶來的信道檢測可靠性下降問題,國內外學者提出了一些解決方案[6-8]。針對單元間干擾,Peng 等[5]提出CSAD 和NIA-CSAD 檢測策略;Dong 等[7]分析了單元間干擾信道模型,并用熵函數來近似求出兩種狀態(tài)分布重疊區(qū)的讀取參考電壓。上述工作需要估計出最優(yōu)讀取參考電壓,該方法依賴閃存信道精準的先驗信息(相鄰單元先驗信息、編程和擦除次數、保持時間等相關參數)。為減少對信道先驗信息的依賴,文獻[8]提出了循環(huán)神經網絡(recurrent neural network,RNN)檢測器。該檢測器在未知信道先驗信息下能減少噪聲對信道可靠性的影響,但是該實驗只分析了持久性噪聲,沒有考慮單元間干擾的影響,并且RNN 檢測器復雜度較高,被激活會占用大量的系統(tǒng)空閑時間。在實際場景中,閃存信道會同時存在隨機電報噪聲、可持久性噪聲和單元間干擾。信道噪聲隨保持時間變化,對閾值電壓分布扭曲的影響是很難預測的。當前,深度學習技術迅速發(fā)展,在信道檢測與估計中都表現出優(yōu)越的性能[7-12]。本文提出的卷積神經網絡(convolutional neural networks,CNN)可以從良好的數據集中學習閃存信道難以預測的變化,并能有效檢測閃存單元狀態(tài)。與現有的大多數檢測技術相比,該方法不依賴于精確的信道模型。本文的貢獻主要分為3 個方面:
1)通過相關文獻對閃存信道特征的測試,可知相鄰單元會受到編程單元的干擾[7-9]?;陂W存相鄰單元間特征,本文先在二維坐標下分析了相鄰單元編程后閾值電壓的相關性,這種相關性表現為相鄰單元閾值電壓和受干擾單元閾值電壓越大,受干擾單元閾值電壓越往右偏移。文獻[13]揭示了CNN 在相關噪聲信道中表現出較好的特征提取效果,所以本文挑選CNN 網絡來檢測NAND閃存單元狀態(tài)。
2)實驗采用以隨機電報噪聲、可持久性噪聲和單元間干擾為主要噪聲源的閃存信道[9],生成受干擾單元和相鄰單元的閾值電壓序列,組成二維訓練數據集。低密度奇偶校驗(low-density parity-check,LDPC)解碼的單元狀態(tài)通過獨熱編碼數據預處理作為數據集標簽。已訓練好的CNN 檢測器在沒有任何信道先驗信息下可以直接輸出閃存信道的硬判決信息(單元存儲狀態(tài))和軟判決信息(閃存單元屬于某種狀態(tài)的后驗概率)。假設信道模型已知,熵函數求解出電壓分布相鄰狀態(tài)分布的重疊區(qū)間。在重疊區(qū)間中用窮舉搜索法找到的最優(yōu)閾值作為性能對比標桿,下面稱之為最優(yōu)閾值檢測器(optimal threshold detector)。計算機仿真結果顯示:本文提出的CNN 檢測器與最優(yōu)閾值檢測器對比,在信道先驗信息未知時,能有效提升閃存信道的檢測性能。
3)與現有的RNN 檢測器[8]相比,分析了兩者的浮點運算數(floating-point operations,FLOPs),單層CNN 網絡復雜度顯著小于單層RNN 網絡。因此,CNN 檢測器被激活所需的系統(tǒng)空閑時間比RNN 要少得多。
閃存信道系統(tǒng)模型如圖1 所示,數據先通過擦除與編程操作寫入閃存中,隨后經過的干擾包括隨機電報噪聲、可持久性噪聲和單元間干擾。
圖1 MLC 閃存信道模型Fig.1 MLC flash channel model
在NAND 閃存中,字線(word-line)由擦除狀態(tài)單元和編程狀態(tài)單元組成[14]。對于MLC 型的閃存單元,可以存儲2 比特位,并將存儲類型表示為4 個不同的狀態(tài):11、10、01 和00。11 是擦除狀態(tài),其余的是編程狀態(tài)。
在編程之前,必須擦除閃存單元中的數據。擦除單元的閾值電壓符合高斯分布[8],該分布為
式中:σe和μe分別是被擦除單元閾值電壓分布的標準差和平均值。
在編程操作中,閃存控制器會向浮柵注入一定量的電荷。編程狀態(tài)的閾值電壓也服從高斯分布[14]:
式中:σp和μp分別是被編程單元閾值電壓分布的標準差和平均值。
編程和擦除次數會損壞浮柵晶體管隧道的氧化物,引起閃存單元閾值電壓隨機波動。因此,隨機電報噪聲采用類高斯分布建模為
可持久性噪聲是由編程單元中電荷泄漏引起的閾值電壓分布偏移??沙志眯栽肼曌裱咚狗植糩15]:
平均值μt和標準差σt由式(5)、(6)給出[16]:
式中:ΔVt為編程前后的閃存單元閾值電壓變化;T為保持時間;PE 為編程和擦除循環(huán)次數;a0、at、At、Bt均為常數。
單元間干擾是閃存信道中主要噪聲之一[17]。編程單元閾值電壓的變化會影響相鄰單元的閾值電壓。由單元間干擾引起的受干擾單元的總閾值電壓影響強度計算公式為[17]
式中:ΔV(k)為第k個干擾單元的編程前后閾值電壓偏移。如圖2 所示,γ(k)干擾單元與干擾單元的耦合為受干擾單元與干擾單元的耦合比系數,γy表示垂直方向電容耦合系數,γxy表示對角線方向的電容耦合系數。對于不同的位線結構,用于計算F的干擾單元數目是不同的。為了簡單起見,本文只考慮全位線結構,這種結構會降低被干擾單元受到的干擾強度。
圖2 多電平閃存的陣列結構Fig.2 MLC flash memory array structure
根據文獻[17],pc(k)(x)為單元間干擾的閾值電壓分布。在隨機電報噪聲、單元間干擾和可持久性噪聲的干擾下,閾值電壓的條件概率分布函數為[18]:
式中:p(k)(x)表示k個狀態(tài)的閾值電壓分布,k∈{11,10,00,01}。為了統(tǒng)計出p(k)(x),需要知道式(5)中保持時間T的大小,然而在實際場景中閃存控制器沒有額外的存儲空間來記錄保持時間[19-20]。
參照文獻[8-14],MLC 閃存信道仿真參數的設置如下:μe=0.14,σe=0.25,at=0.62,a0=0.3,At=0.000035,Bt=0.000235,γy=0.08s,γxy=0.006s。s表示電容耦合強度。
閃存信道參數設置為:PE 次數為1000,保持時間1 年,電容耦合強度s分別為0、1.4、2.5。由圖3可以發(fā)現不同狀態(tài)的受干擾單元不是交錯呈現,而是與干擾單元的閾值電壓具有正相關關系,隨著耦合強度增大,受干擾單元的閾值電壓向右偏移越明顯。這現象顯示了單元間的閾值電壓具有相關性。當觀測的干擾單元越多,這種相關性越明顯,但是這種現象難以精確建立數學模型。
圖3 閃存內部閾值電壓相關性分析Fig.3 Schematic of the correlation analysis of the internal threshold voltage of flash memory
本文的主要工作是將受干擾單元字線和干擾單元字線的閾值電壓組成序列,輸入到CNN 中進行提取特征,再輸出閃存單元用于硬判決信息(單元存儲狀態(tài))和軟判決信息(閃存單元屬于某種狀態(tài)的后驗概率)。
假設每個輸入序列個數為M(字線長度),每個向量為2 維,序列所有閾值電壓向量在矩陣V∈R2×M中。
卷積層:本文挑選是一維卷積神經網絡,輸入序列表示為[V1V2…VM]矩陣,然后使用卷積核做卷積運算:
式中:I(1,j)是第一層CNN 第j個特征映射;k(1,j)為第j個卷積核;b(1,j)為網絡偏置值,挑選的激活函數為整流線性函數(rectified linear unit,RELU)。下一層的卷積操作的輸出為
式中:I(i,j)是第i層CNN 網絡第j個特征映射;k(i,j)是第i層CNN 網絡第j個卷積核。在本工作中卷積網絡池化層會丟棄一些重要的特征信息,所以本文的卷積網絡由過濾器和全連接組成,并且CNN 輸出長度也為M。
假設有N個數據樣本,對于輸入樣本i,經過CNN 網絡提取特征后,形成序列Zi=[Zi1Zi2…ZiM],希望輸出每個序列節(jié)點所屬某種類型的概率,即P(yim=j|Vim)。以MLC 為例,其有4 種狀態(tài),即j∈{VS11,VS10,VS00,VS01},m∈{1,2,…,M}。Softmax 函數可以適用于多分類,其輸出為
式中:k=4;θ1、θ2、θ3、θ4是Softmax 函數的權重參數;θ=[θ1θ2θ3θ4]。對于樣本i中輸入序列元素Vim,屬于狀態(tài)標簽類型j的概率為
設計好CNN 檢測器結構后,要對CNN 網絡訓練,則需要從本地獲得訓練數據。本文采用均勻量化策略獲得閃存單元中的閾值電壓數據。量化數量越多檢測越精確,但是也會帶來讀取延遲。如表1,為了權衡閃存單元電壓讀取延遲和可靠性,選擇64-level 均勻感知量化,在閃存單元狀態(tài)的符號錯誤率(symbol error rate,SER)為0.0033時,讀取延遲和可靠性折中。閃存控制器最小的讀取單位是字線,則需要設置輸入網絡的序列長度與字線長度相當。
表1 不同量化區(qū)間的SER 結果Table 1 Simulation of SER in different quantization intervals
實驗需要采集閃存控制器中讀出閃存塊中每個單元的量化閾值電壓和LDPC 解碼得到的每個單元狀態(tài)信息。首先,感應和解碼出若干組閃存塊。其次,獲得閾值電壓V和狀態(tài)標簽x。其中,閃存單元的閾值電壓在區(qū)間中被惑知,是第i個參考電壓,則閃存單元的量化閾值電壓V表示為
對于MLC 閃存單元有4 種不同的狀態(tài){VS11,VS10,VS00,VS01},用獨熱編碼預處理后為
對于字線上的閃存單元k,簡單來說,當Softmax 函數輸出的硬信息yk=[1 0 0 0]T時,單元k對應VS11;以此類推,當輸出yk=[0 0 0 1]T,對應VS01。當輸出軟信息時,Softmax 函數輸出每個單元屬于各狀態(tài)的概率,CNN 檢測器能自適應地估計出字線中閃存單元狀態(tài)概率,然后式(14)計算出對數似然比。閃存單元中的比特位bid對應的對數似然比(log-likelihood ratio,LLR)值可以被計算為
式中:Sid代表第i個閃存單元中第d比特位為1 的狀態(tài)集。其中,S={VS11,VS10,VS00,VS01},S1={VS11,VS10},S2={VS11,VS01}。
實驗仿真在Window 10 操作系統(tǒng)下進行,采用Keras 深度學習框架。在訓練網絡之前,假設在實驗中信道的保持時間未知,就需要生成失配的驗證集來測試已訓練好CNN 檢測器的魯棒性。定義失配時間公式為ΔT=Ttest?Ttrain,Ttrain和Ttest分別代表訓練集和驗證集的保持時間。定義失配編程和擦除循環(huán)次數公式為 ΔPE=PEtest?PEtrain,PEtrain和PEtest分代表訓練集和驗證集的編程和擦除循環(huán)次數。訓練CNN 檢測器步驟:
1)閃存控制器找到第i和第i+1 字線位置,即圖2 中的WLi和WLi+1。
2)式(13)量化WLi和WLi+1中每個單元的感應電壓。
3)LDPC 解碼WLi中的信息,若解碼成功,將獨熱編碼預處理解碼后的狀態(tài)作為標簽。若解碼不成功,跳到下一個字線。返回1),直到獲取數據集數量滿足實驗要求。
4) 獲取的數據集將用于訓練CNN 檢測器。為了提升訓練效率,將數據集分成小批量數據,分批訓練CNN 檢測器。
CNN 結構由卷積核和特征圖組成,可以表示為{L;f1,f2,…,fL;k1,k2,…,kL}。這里的L表示CNN 網絡層數,f表示卷積核大小,k表示特征圖數量。在實驗中,通過比較誤比特率(bit error rate,BER)和誤幀率(frame error rate,FER)來評估系統(tǒng)性能。先進行單層CNN 和RNN 的復雜度分析,然后用表2 設置CNN 結構來測試在原始數據和編碼數據下的系統(tǒng)性能。
表2 CNN 實驗設置Table 2 CNN experimental setup
對于文獻[8]所提出的RNN 檢測器,在實際的訓練過程中會占用大量的時間,計算復雜度高。在理想條件下,通過設置CNN 和RNN 超參數使兩者的復雜度相當,然后對比它們的性能??墒荝NN 網絡要比CNN 網絡復雜多,在CNN 網絡中有加法和乘法等線性運算,而RNN 網絡中有許多的tanh 和exp 等復雜的非線性運算。為了方便比較,通過統(tǒng)計FLOPs 來衡量網絡模型的復雜度。FLOPs 計算網絡模型所有的加法和乘法次數。GRU 是RNN 網絡模型中復雜度最低的網絡模型。若設置一個層GRU 網絡的神經元個數為L,輸入數據的維度為D,N表示層數,序列為T。根據文獻[21],GRU 模型復雜度為
根據文獻[22],CNN 網絡模型復雜度為
式中:Ci表示第i層輸出數據的通道數;Ki表示第i層的卷積核大小;Ti為第i層輸出的序列。在本文中C0=1,采用的二維閾值電壓數據作為輸入,則D1=2,K1=(D1,k);用一層CNN 網絡與一層GRU 網絡對比復雜度,則C1=1,k為第一層卷積核尺寸。Softmax 函數復雜度可以忽略不計。此時,GRU 網絡模型復雜度為,CNN 網絡模型復雜度為O(4kT1)。如圖4,設置實驗環(huán)境s∈{1.4,1.6},Ttrain=1 年,PEtrain=1000。圖4展示了訓練周期對誤比特率的影響。CNN detector-1、CNN detector-2、RNN detector-1 和RNN detector-2 所標記的曲線對應參數k=1、k=2 和L1=1、L2=2 時的模型。隨著訓練周期變化,CNN 檢測器和RNN 檢測器趨于穩(wěn)定。RNN 檢測器性能亦可接近于CNN 檢測器,式(15)中得到RNN 檢測器復雜度與L1平方成正比。式(16)中CNN 檢測器復雜度與K成正比。如果在有單元間干擾情況下要達到相同性能,CNN 檢測器復雜度小于RNN檢測器。
圖4 不同訓練周期下RNN 檢測器和CNN 檢測器比特錯誤率比較Fig.4 Comparison of the BERs of the RNN and CNN detectors under different training periods
為了避免GPU 等硬件帶來的功耗等問題[8],實驗在無GPU 環(huán)境中進行。表3 是在無GPU 下參數FLOPs 和每個訓練周期的耗時統(tǒng)計。隨著參數的增加,RNN 檢測器的FLOPs 接近倍數增加,帶來的計算消耗和復雜度特別大。從耗時上可以看出,CNN 檢測器訓練周期相當于RNN 檢測器訓練周期的四分之一。MEI 提出在系統(tǒng)空閑時間時激活RNN 檢測器,但是RNN 檢測器訓練耗時長[8]。與RNN 檢測器相比,CNN 檢測器被激活占用的系統(tǒng)空閑時間較短。
表3 CNN 檢測器和RNN 檢測器參數個數及FLOPsTable 3 Parameters and FLOPs of the CNN and RNN detectors
為了更好驗證模型檢測有效性,LDPC 譯碼器盡可能收集解碼后綜合值為0 的碼字數據。實驗中選擇最優(yōu)閾值為性能對比標桿。最優(yōu)閾值檢測器通過熵函數得到兩種狀態(tài)分布的重疊區(qū)間,然后在重疊區(qū)間中找到最優(yōu)讀取參考電壓。本文的CNN 檢測器使用2 維數據輸入網絡。然后,測試了有無單元間干擾下兩種檢測器誤碼率對比,s=0 時,表示沒有單元間干擾的信道;s=1.4 時,表示3 種噪聲同時存在下的信道,并且單元干擾強度為1.4。
如圖5 所示,在實驗環(huán)境中有單元間干擾情況下匹配和失配的測試集(ΔPE=2500、5000),Ttrain=1 年,CNN 檢測器都取得很好的性能。當s=1.4 時,CNN 檢測器跟最優(yōu)閾值檢測器比提升了閃存使用壽命。例如,在誤比特率約為0.01,CNN 檢測器可以將閃存編程和擦除循環(huán)次數提升大約11000 次,而最優(yōu)閾值檢測器僅在3000 次左右。在沒有單元間干擾下,采用CNN 檢測器性能增益較小,這時的噪聲分布是標準AWGN 閃存信道,也是理想條件下的信道。此時,CNN 檢測器與最優(yōu)閾值檢測器性能相似。由此,可以得出在有單元間干擾下,CNN 檢測器能有效地提取出單元間干擾的特征來檢測閃存單元狀態(tài),并且提升了閃存使用壽命。此外,當用到失配的測試集時,仿真性能對比結果顯示,在失配編程和擦除循環(huán)次數小于5000 情況下,本文CNN 檢測器檢測性能也好于最優(yōu)閾值檢測器。
圖5 失配編程和擦除循環(huán)次數比較Fig.5 Programming and erase cycles by mismatching data
傳統(tǒng)保持低誤比特率的方法是動態(tài)更新讀取參考電壓。然而在未知信道信息時,閃存控制器很難記錄保持時間T。這時就很難通過傳統(tǒng)方法獲得新讀取參考電壓。前面的實驗結果證明有單元干擾下,CNN 檢測器優(yōu)于最優(yōu)閾值檢測器,接下來實驗通過對失配編程和擦除循環(huán)次數固定為ΔPE=1000,PEtrain=5000,測試CNN 檢測器在失配保持時間下的性能。如圖6,當時間不匹配到1 個月時,CNN 檢測器還是優(yōu)于最優(yōu)閾值檢測器的性能并且與保持時間匹配的數據接近。當保持時間失配增加到1 年時,初期CNN 檢測器與匹配數據的性能略有下降。初期需要短周期更新CNN檢測器適應信道變化,后期則可以數年更新一次CNN 檢測器,就可以接近匹配數據的CNN 檢測器誤比特率性能,也證明了CNN 檢測器魯棒性強。
圖6 失配保持時間比較Fig.6 Retention time through mismatching data
為了分析CNN 檢測器輸出的軟信息,實驗選擇了碼率約0.889(2 048,2304)的LDPC 碼寫入到閃存單元中。在數據集中設置耦合強度因子為s=1.4,保持時間Ttrain=1 年和讀寫次數PEtrain=2000。為了避免驗證數產生的讀取延遲,實驗減少了量化電壓的數量,采用16-level 和32-level 兩種均勻量化讀取方法。CNN 檢測器評估出閃存單元軟信息,然后通過式(14)計算出LLR 值。圖7 給出了本文提出方法與傳統(tǒng)方法計算LLR 的系統(tǒng)性能比較。首先,設置0~20 最大迭代次數不等。其次,將CNN 檢測器測試的失配保持時間ΔT=5月,失配編程和擦除循環(huán)次數 ΔPE=2 000。本文提出方法比5 月之前的傳統(tǒng)方法計算LLR 收斂快。也就是說,CNN 檢測器評估的LLR 更可靠,有助于置信傳播(belief propagation,BP)算法[23-24]糾錯性能的提升。
圖7 最大迭代次數比較Fig.7 Comparison of maximum iterations
針對NAND 閃存存儲數據可靠性下降的問題,本文提出CNN 檢測器,該檢測器不依賴于信道先驗信息,通過學習相鄰單元閾值電壓的相關特征,能有效檢測NAND 閃存單元狀態(tài)。CNN 檢測器具有訓練周期短、魯棒性強等特點,能占用較少的系統(tǒng)空閑時間來適應信道變化。CNN 檢測器還能輸出更準確的LLR 信息,提升BP 譯碼算法的糾錯性能。閃存信道檢測在深度學習中可以看作分類問題,因此本文提出的方法也可以應用到TLC、QLC 閃存信道中。