«上一篇
文章快速检索     高级检索
下一篇»
  应用科技  2019, Vol. 46 Issue (5): 57-62  DOI: 10.11991/yykj.201901015
0

引用本文  

范正勤, 韩国军. 多电平闪存信道下阈值电压高效检测算法[J]. 应用科技, 2019, 46(5), 57-62. DOI: 10.11991/yykj.201901015.
FAN Zhengqin, HAN Guojun. High-efficiency detection algorithm for threshold voltage in multi-level cell NAND flash memory[J]. Applied Science and Technology, 2019, 46(5), 57-62. DOI: 10.11991/yykj.201901015.

基金项目

国家自然科学基金项目(61471131)

通信作者

韩国军,E-mail:gjhan@gdut.edu.cn

作者简介

范正勤,女,硕士研究生;
韩国军,男,教授,博士生导师

文章历史

收稿日期:2019-01-23
网络出版日期:2019-06-25
多电平闪存信道下阈值电压高效检测算法
范正勤 , 韩国军     
广东工业大学 信息工程学院,广东 广州 510000
摘要:针对高密度NAND闪存阈值电压检测时读操作带来的时延问题,提出一种改进的低时延重读机制。首先,基于电压重叠区原始误码率的分布特性,引入三分法的思想以逐步降低电压检测的范围。其次,该方案每一次缩小电压检测范围时只需要更新一次读操作。仿真结果表明相对于传统的重读机制,该优化方案不仅可以保证数据存储的可靠性,同时也极大地降低读时延。
关键词阈值电压检测    NAND闪存    重读机制    原始误码率    电压重叠区    读电压优化    读时延    数据存储    
High-efficiency detection algorithm for threshold voltage in multi-level cell NAND flash memory
FAN Zhengqin , HAN Guojun     
School of Information Engineering, Guangdong University of Technology, Guangzhou 510000, China
Abstract: Aiming at reducing read latency caused by read operation in high-density NAND flash memory threshold-voltage detection, an improved low-latency read-retry mechanism is proposed. Specifically, according to the distribution characteristics of the raw bit error rate in the voltage overlap region, the scheme introduces the idea of trichotomy to gradually reduce the range of threshold-voltage detection. Furthermore, only one read operation needs to be updated each time the range of voltage detection is narrowed. Simulation results exhibit that the proposed mechanism of the paper, which well ensures the data-storage reliability, significantly reduces the read latency through comparison with traditional read-retry mechanism.
Keywords: threshold-voltage detection    NAND flash memory    read-retry mechanism    raw bit error rate    voltage overlap region    read voltage optimization    read latency    data storage    

随着半导体制程工艺的进一步缩小、多电平存储技术的使用,存储单元成本大幅下降,NAND固态数据存储已广泛应用于各种消费类电子产品及部分数据中心。对于NAND闪存器件,存储密度提升的同时,存储单元受到的噪声干扰进一步加剧,导致数据存储可靠性降低[1]。一般数据存储误码率要求必须低于10−15。相较于使用硬判决译码方法的Bose-Chaudhuri-Hocquenghem (BCH) 纠错码,低密度奇偶校验(low-density parity-check, LDPC)纠错码使用软判决译码方法,能极大地降低误码率[2]。多种噪声引起阈值电压偏移而产生误读数据,单元间干扰[3]和持久性噪声[4]是制约NAND闪存数据存储可靠性的主要噪声。目前,为了补偿噪声对阈值电压的影响,闪存采用重读机制[58]。动态优化读参考电压[711]以适应阈值电压的偏移,采用优化的读参考电压可以获得最低的原始误码率,从而达到改善存储可靠性的目的。在读电压检测范围内,Cai等[7]提出等间隔降低读参考电压操作,该方案可以降低阈值电压检测的范围。

针对阈值电压检测时读操作带来的时延问题,通过对重叠区的原始误码率分析,本文提出了非均匀迭代更新读电压优化方案,该方案有效地降低了读操作的次数。

1 阈值电压检测 1.1 系统模型

数据闪存系统模型如图1所示,数据经过LDPC编码后通过编程和擦除操作写入闪存单元;经过信道噪声干扰后(单元间干扰和持久性噪声),单元阈值电压产生偏移造成数据误读,需要进行信道检测优化;读操作得到单元对应的对数似然比信息,再通过LDPC译码算法进行纠错处理[12,12]

Download:
图 1 系统模型

1)擦除操作:数据写入单元前必须要先擦除。擦除状态的阈值电压服从高斯分布。擦除状态的阈值电压概率密度函数如下:

${p_{\rm{e}}}\left( x \right) = \frac{1}{{{\sigma _{\rm{e}}}\sqrt {2{\text{π}}} }}{{\rm{e}}^{ - \frac{{\left( {x - {\mu _{\rm{e}}}} \right)}}{{2\sigma _e^2}}}}$

式中 ${\mu _{\rm{e}}}$ ${\sigma _{\rm{e}}}$ 分别表示擦除状态的均值和方差。

2)编程操作:ISPP技术应用于写入数据。擦除状态的阈值电压服从均匀分布。第 $k$ 个编程状态的阈值电压概率密度函数如下:

$p_{\rm{p}}^k(x) = \left\{ \begin{array}{l} \dfrac{1}{{\Delta {V_{\rm{pp}}}}},\;\;\; \;V_{\rm{p}}^k \leqslant x \leqslant V_{\rm{p}}^k + \Delta {V_{\rm{pp}}} \\ 0,\;\;\;{\text{其他}} \end{array} \right.$

式中: $V_{\rm{p}}^k$ $\Delta {V_{\rm{pp}}}$ 分别表示第 $k$ 个编程状态的起始电压和增量步进电压。

3)单元间干扰(cell-to-cell interference, CCI):相邻单元间干扰是由于寄生电容耦合效应引起的,会使阈值电压向右偏移。

$F = \sum {\Delta V_t^k} {\gamma ^k}$

式中: $\Delta V_t^k$ ${\gamma ^k}$ 分别表示第 $k$ 干扰单元的阈值电压变化量和对应的耦合系数; ${p_{\rm{CCI}}}\left( x \right)$ 表示CCI的概率密度函数。

4)持久性噪声(retention noise):持久性噪声是由于氧化层电荷泄露引起的,会使阈值电压向左偏移。持久性噪声服从高斯分布,概率密度函数建模如下:

${p_{\rm{r}}}\left( x \right) = \frac{1}{{{\sigma _{\rm{r}}}\sqrt {2{\text{π}}} }}{{\rm{e}}^{ - \frac{{\left( {x - {\mu _{\rm{r}}}} \right)}}{{2\sigma _r^2}}}}$

式中 ${\sigma _{\rm{r}}} = 0.3 \cdot \left| {{\mu _{\rm{r}}}} \right|$ ,其中,

${\mu _{\rm{r}}} = (x - {x_0}) \cdot \left[ {{A_t}{{(P)}^{{\alpha _i}}} + {B_t}{{(P)}^{{\alpha _o}}}} \right] \cdot \log \left( {1 + T} \right)$

式中: ${x_0}$ ${A_t}$ ${B_t}$ ${\alpha _i}$ ${\alpha _o}$ 都是常数; $T$ 表示持久性噪声时间; $P$ 表示编程擦除次数。

1.2 读电压优化

对于MLC型NAND闪存,每个单元写入2 bit信息,阈值电压被划分为4种存储状态(11,10,00,01)。如图2所示,Ⅰ表示经过编程和擦除操作后的阈值电压分布,进行数据写操作;Ⅱ表示经过单元间干扰,单元间干扰使阈值电压向右偏移,根据文献[3]进行对数似然比(log-likelihood-ratio, LLR)计算;Ⅲ表示经过持久性噪声,持久性噪声使阈值电压向左偏移,因此在电压重叠区上,传统的固定读参考电压 ${V_{{\rm{read}}}}$ 会引起数据误读。为了克服噪声对信道的影响,通过动态调整读参考电压进行补偿。最后,通过最优读参考电压 ${V_{{\rm{opt}}}}$ 读取单元阈值电压对应的LLR值,再通过LDPC译码算法进行解码。

Download:
图 2 读电压优化
1.3 read-retry机制

当读取数据时,重读(read-retry)机制产生的全部时延[7]为:

${T_{{\rm{read}}}} = \sum\limits_{i = 1}^N {\left( {T_{{\rm{ECC}}}^i + {T_{{\rm{flash}}}}} \right)} $ (5)

式中: $T_{{\rm{ECC}}}^i$ 是第 $i$ 次读操作的纠错时延; ${T_{{\rm{flash}}}}$ 是从单元读取数据的时间(常数);N为读操作次数。由式(1)可知读时延和读操作次数 $N$ 成正比,因此可以通过降低读操作次数来降低读时延。

为了弥补噪声对信道的影响,选取低时延的ROR读电压优化技术[7],即原始误码率最低点作为优化读参考电压,算法流程如图3所示。 ${V_{\rm{s}}}$ 表示每个块中最后编程页的 优化读电压作为阈值电压检测的上限。 ${V_1}$ ${V_2}$ 表示每一次需要更新的读参考电压。ROR技术需要向左等间隔偏移 $\varDelta $ 去搜索最优读参考电压,直到原始误码率开始增加就立即停止检测,具体步骤如算法1所示。其中, ${N_{{\rm{ERR}}}}({V_i})$ 表示读参考电压为 ${V_i}$ 时的原始比特错误数目,算法1全部读操作次数为 $N ={{\left( {{V_{\rm{s}}} - {V_{{\rm{opt}}}}} \right)}/}$ $ \varDelta + 2$

Download:
图 3 重读机制算法流程

算法1 重读机制

输入:信道电压检测的上限 ${V_{\rm{s}}}$ ,电压偏移 $\varDelta $

输出:优化后的读参考电压 ${V_{{\rm{opt}}}}$

Step0 初始化: ${V_1} = {V_{\rm{s}}}$

       ${V_2} = {V_1} - \varDelta $

    读操作,计算 ${N_{{\rm{ERR}}}}\left( {{V_1}} \right)$ ${N_{{\rm{ERR}}}}\left( {{V_2}} \right)$

Step1 While ${N_{{\rm{ERR}}}}\left( {{V_2}} \right) \leqslant {N_{{\rm{ERR}}}}\left( {{V_1}} \right)$ do

    While ${N_{{\rm{ERR}}}}\left( {{V_2}} \right) \leqslant {N_{{\rm{ERR}}}}\left( {{V_1}} \right)$ do

      更新: ${V_1} = {V_2}$

         ${N_{{\rm{ERR}}}}({V_1}) = {N_{{\rm{ERR}}}}\left( {{V_2}} \right) $

         ${V_2} = {V_1} - \varDelta $

      读操作,计算 ${N_{{\rm{ERR}}}}\left( {{V_2}} \right)$

     End

Step2 ${V_{{\rm{opt}}}} = {V_1}$

2 优化方案

相邻存储状态重叠区的原始误码率分布情况如图4所示, ${V_{\rm{s}}}$ ${V_{\rm{e}}}$ 是信道阈值电压检测的上下限, ${V_l}$ ${V_r}$ 是阈值电压检测范围的三等分点。首先,根据噪声特性,电压重叠区上原始误码率呈凹函数分布。其次,三分法求凹函数极值思想应用于读电压优化中,逐步缩小电压检测范围。最后,为进一步减少读操作次数,改进三分法,下一次迭代利用上一次迭代原始误码率较低的读电压,再更新读参考电压,则每一次缩小电压检测范围只需要更新一次读电压。算法流程图见图5,优化方案算法2所示。

Download:
图 4 原始误码率分布情况
Download:
图 5 优化方案算法流程

算法2 改进的重读机制

输入:信道电压检测的上限 ${V_{\rm{s}}}$ 、下限 ${V_{\rm{e}}}$ ,最小检测距离 $\varDelta $

输出:优化后的读参考电压 ${V_{{\rm{opt}}}}$

Step0 初始化: ${V_l} = {V_{\rm{e}}} + {{\left( {{V_{\rm{s}}} - {V_{\rm{e}}}} \right)}/3}$

       ${V_r} = {V_l} + {{\left( {{V_{\rm{s}}} - {V_{\rm{e}}}} \right)}/3} $

       $n = 2 $

   读操作,计算 ${N_{{\rm{ERR}}}}\left( {{V_l}} \right)$ ${N_{{\rm{ERR}}}}\left( {{V_r}} \right)$

Step1 判断 $\left| {{V_{\rm{s}}} - {V_{\rm{e}}}} \right|$ 是否小于 $\varDelta $ 。若是,转Step7;若否, $n = n + 1$ ,转Step2;

Step2 判断 ${N_{{\rm{ERR}}}}\left( {{V_l}} \right)$ 是否小于 ${N_{{\rm{ERR}}}}\left( {{V_r}} \right)$ 。若是,转Step3;若否,转Step4;

Step3 更新: ${V_{\rm{s}}} = {V_r}$

      ${V_{\min }} = {V_l} $

      ${V_{{\rm{mid}}}} = {{\left( {{V_{\rm{e}}} + {V_{\rm{s}}}} \right)}/2} $

   判断 ${V_{\min }}$ 是否大于 ${V_{{\rm{mid}}}}$ 。若否,转Step5;若是,转Step6;

Step4 更新: ${V_{\rm{e}}} = {V_l}$

      ${V_{\min }} = {V_r} $

      ${V_{{\rm{mid}}}} = {{\left( {{V_{\rm{e}}} + {V_{\rm{s}}}} \right)}/2} $

   判断 ${V_{\min }}$ 是否大于 ${V_{{\rm{mid}}}}$ 。若否,转Step5;若是,转Step6;

Step5 更新: ${V_l} = {V_{\min }}$

      ${V_r} = {{\left( {{V_l} + {V_{\rm{s}}}} \right)}/2} $

读操作,计算 ${N_{{\rm{ERR}}}}\left( {{V_r}} \right)$ ,转Step1;

Step6 更新: ${V_r} = {V_{\min }}$

      ${V_l} = {{\left( {{V_r} + {V_e}} \right)}/2} $

     读操作,计算 ${N_{{\rm{ERR}}}}\left( {{V_l}} \right)$ ,转Step1;

Step7 判断 ${N_{{\rm{ERR}}}}\left( {{V_l}} \right)$ 是否小于 ${N_{{\rm{ERR}}}}\left( {{V_r}} \right)$ 。若是, ${V_{{\rm{opt}}}} = {V_l}$ ;若否, ${V_{{\rm{opt}}}} = {V_r}$

其中,Step0初始化需要执行2次读操作;Step3表示如果 ${N_{{\rm{ERR}}}}({V_l})$ < ${N_{{\rm{ERR}}}}({V_r})$ ,信道阈值电压检测范围缩小为 $\left[ {{V_{\rm{e}}}} \right.,\left. {{V_r}} \right]$ ,再更新 ${V_r}$ ${V_l}$ ;Step4表示如果 ${N_{\rm{ERR}}}({V_l})$ > ${N_{\rm{ERR}}}({V_r})$ ,信道阈值电压检测范围缩小为 $\left[ {{V_l}} \right.,\left. {{V_{\rm{s}}}} \right]$ ,再更新 ${V_r}$ ${V_l}$ 。Step5和Step6表示每一次迭代需要执行1次读操作。

3 仿真结果

基于MATLAB平台对闪存信道建模仿真,参数如下:重叠区上信道检测范围 $l = 0.4$ ${\mu _{\rm{e}}} = 1.4$ ${\sigma _{\rm{e}}} = 0.35$ $\Delta {V_{\rm{pp}}} = 0.2$ $V_{\rm{p}}^k \in \left\{ {2.6,3.2,\left. {3.8} \right\}} \right.$ ${A_t} = 0.000\;035$ ${\alpha _i} = 0.62$ ${B_t} = 0.000 \;235$ ${\alpha _o} = 0.30$

3.1 多噪声信道下原始误码率仿真

图67表示仿真不同的噪声环境下,所提出方案的可靠性。在单元间干扰下,图6表示不同的耦合强度因子 $s$ 下原始误码率(raw bit error rate, RBER)受 $\varDelta $ 的影响;在数据保持噪声干扰下,图7表示不同的持久性噪声时间 $T$ 下原始误码率受 $\varDelta $ 的影响。

仿真结果显示:1)信道检测精度越高,误码率越低,数据存储可靠性越高;2)与算法1相比,在相同的检测精度下,改进的重读机制有更好的纠错性能。

Download:
图 6 单元间耦合因子s不同时的误码率
Download:
图 7 持久性时间T不同时的误码率
3.2 高精度信道检测误码率比较

信道阈值电压检测精度越高,误码率越低,纠错性能越好,检测精度 $\varDelta {\rm{ = }}0.01$ 。信道仿真环境如下:LDPC码率为0.901 4,采用最小和译码算法,最大迭代次数为30,单元间耦合强度因子为1.4。

图8是在闪存信道下不同检测算法的误码率比较。仿真结果显示:1)相对于传统方案,采用阈值电压检测能有效地提升数据存储的可靠性;2)在高精度检测下,改进的重读机制不会有性能损失。

Download:
图 8 误码率性能比较
3.3 高精度信道检测时延比较

阈值电压检测虽然带来了纠错性能的提升,但会产生较大的时延。读时延与读操作次数成正比,读操作次数越小,读时延越低。单元间耦合强度因子为1.4。相对于目前的重读机制,图9是在闪存信道中改进重读机制的时延降低率。

Download:
图 9 读时延性能比较

仿真结果显示:1)相对于目前的重读机制,改进的重读机制具有更低的时延;2)随着噪声的增加,改进的重读机制具有更高的时延降低率;3)在高精度、大噪声闪存信道中,改进的重读机制具有更好的性能。

4 结论

基于重叠区错误比特的分布特性,本文提出了一种低时延重读机制优化方案。该优化机制在保证数据可靠性的前提下,可以有效降低读操作次数,具有可行性。另一方面来说,闪存控制器需要执行较多的比较操作,会产生少量延时,但该操作不会对闪存芯片产生影响。通过上述的理论分析及数据仿真,得出以下结论:1)对比现有的重读机制,该优化方案可以有效地提高数据存储的可靠性;2)对比现有的重读机制,该优化方案可以降低大量时延;3)在实际应用方面,该方案具有一定的可行性。

参考文献
[1] 周天伟. NAND闪存的软硬判决纠错码应用研究[D]. 西安: 西安电子科技大学, 2014. (0)
[2] 唐锐. LDPC码的编译码算法研究[D]. 成都: 电子科技大学, 2018. (0)
[3] DONG Guiqiang, XIE Ningde, ZHANG Tong. On the use of soft-decision error-correction codes in nand flash memory[J]. IEEE transactions on circuits and systems I: regular papers, 2011, 58(2): 429-439. DOI:10.1109/TCSI.2010.2071990 (0)
[4] WANG Xueqiang, DONG Guiqiang, PAN Liyang, et al. Error correction codes and signal processing in flash memory[M]//STIEVANO I. Flash Memory, Flash Memories. [S.l.]: InTech, 2011. (0)
[5] FAN Zhengqin, CAI Guofa, HAN Guojun, et al. Cell-state-distribution-assisted threshold voltage detector for NAND flash memory[J]. IEEE communications letters, 2019, 23(4): 576-579. DOI:10.1109/COML.4234 (0)
[6] CAI Yu, LUO Yixin, GHOSE S, et al. Read disturb errors in mlc nand flash memory: characterization, mitigation, and recovery[C]//Proceedings of the 45th IEEE/IFIP International Conference on Dependable Systems and Networks. Rio de Janeiro, Brazil, 2015: 438−449. (0)
[7] CAI Yu, LUO Yixin, HARATSCH E F, et al. Data retention in MLC NAND flash memory: characterization, optimization, and recovery[C]//Proceedings of the IEEE 21st International Symposium on High Performance Computer Architecture (HPCA). Burlingame, USA, 2015: 551−563. (0)
[8] CAI Yu, GHOSE S, HARATSCH E F, et al. Error characterization, mitigation, and recovery in flash- memory-based solid-state drives[J]. Proceedings of the IEEE, 2017, 105(9): 1666-1704. DOI:10.1109/JPROC.2017.2713127 (0)
[9] ASLAM C A, GUAN Yongliang, CAI Kui. Read and write voltage signal optimization for multi-level-cell (MLC) NAND flash memory[J]. IEEE transactions on communications, 2016, 64(4): 1613-1623. DOI:10.1109/TCOMM.2016.2533498 (0)
[10] WAND Jiadong, COURTADE T, SHANKAR H, et al. Soft information for LDPC decoding in flash: mutual-information optimized quantization[C]//Proceedings of 2011 IEEE Global Telecommunications Conference. Kathmandu, Nepal, 2011: 1−6. (0)
[11] WANG Jiadong, VAKILINIA K, CHEN T Y, et al. Enhanced precision through multiple reads for LDPC decoding in flash memories[J]. IEEE journal on selected areas in communications, 2014, 32(5): 880-891. DOI:10.1109/JSAC.2014.140508 (0)
[12] DONG Guiqiang, XIE Ningde, ZHANG Tong. Enabling NAND flash memory use soft-decision error correction codes at minimal read latency overhead[J]. IEEE transactions on circuits and systems I: regular papers, 2013, 60(9): 2412-2421. DOI:10.1109/TCSI.2013.2244361 (0)