想要和阿呆还有全世界的大牛讨论SSD及存储相关技术?加nanoarch为微信好友,拉你进ssdfans微信群
导语
Flash常说的RBER,UBER是什么?极限情况下纠错码有多长?
为什么
Flash是一种有失真的存储介质,必须满足Spec规定的纠错能力才能达到Spec声称的写寿命。
纠错基础
BSC(Binary Storage Channel)模型
如图,数据从发送到接收,有一定的概率出错(在通道里面或者存储介质上)。BSC模型中1和0有着同样的出错概率,作为一种近似模型。P(error)=0。01,P(success)=0.99.单个bit穿过通道的错误率叫做RBER:Raw Bit Error Rate。本例子RBER=0.01。扩展一下,传输n个bit,出错k个bit的概率如下:
以前面的例子,各种出错概率为:
出错率小于等于k个bit概率为其下的概率求和。K为1时:
在下面的例子中,用了3倍的bit来表示原来1个bit的数据,RBER依然为0.01,在3个codeword里面的3个bit出错概率假设相等。可以看出最终的出错概率降低了33倍:从原来的0.01到了0.000298.
真实世界
-
Codeword没这么短;
-
现在的纠错一般使用BCH。
-
BCH能够实现固定长度错误bit的纠错。
-
给定RBER和存储介质,我们可以得到概率分布函数和累积函数(probability mass function (pmf) and cumulative distribution function (cdf).)。
PMF表示在长度为n的Codeword里面发生x个错误的概率,CDF指的是在长度为n的codeword里面发生小于等于x个错误的概率。
假如我们能纠错40个bit,那么纠错失败的概率为:Pr (˃ 40 errors) = 1 – Pr (≤ 40 errors) ≈0.0015。这个叫做FER(Frame Error Rate)。如果能够纠错41个bit,则FER=0.00084,纠错长度增加2.5%导致FER下降44%!
RBER与UBER
加入我们考虑了纠错之后再来计算出错率,发现error count在40bit以下的概率都为0,因为都被纠过来了,而大于41个bit的出错概率本来就很低,错误概率分布变成了如下右图的PMF。
右图放大之后:
所以接下来的任务就是计算纠错之后的Bit Error Rate:UBER,uncorrected bit error rate,这个是工业界来衡量Flash纠错能力的指标。计算公式很简单,就是把前面每个bit的出错率加起来,但是因为t bit纠错能力导致t个bit以下的错误率都为0,所以从t+1开始累加就可以了。
UBER的影响因子
纠错能力
RBER为2.00e-3,纠错能力从35增长到43bit,那么UBER下降了250倍。
RBER
同样情况下,如果RBER降到1.25e-3,UBER可以下降4000倍!
只看RBER的变化,UBER改善更显著:
怎样选择纠错码长度
短纠错码占用资源少,但是纠错能力差。长纠错码纠错能力强,但是占用更多资源。关键是选择一个能够实现足够UBER的纠错长度。如果知道4K page的纠错码长度,怎么计算8K和16K的?
问题是,Flash制造商并不提供RBER,因为RBER并非固定值,它跟晶圆质量、温度等很多因素相关。一般来讲,按照制造商提供的纠错码长度就可以了,但是企业级用户的要求更高,他们对性能和使用寿命非常关注。
深入知识
性能鉴定
下图为IBM Flash性能鉴定平台。
如下图,Flash的错误率会随着使用寿命增加而增加。为了挑战极限,必须准备好处理每100个bit就有1个坏的情况。
RBER还跟Flash内部结构也有关系。两个相邻Block的RBER有可能完全不同,下图是单个block里面不同page的RBER分布图。看得出来,upper page的RBER比lower page要高两个数量级。
如果RBER高达1%,那么要实现UBER < 1e-15,需要多大的纠错码?如下图,BCH纠错码长度很长,码率很低。所以需要更好的纠错算法,譬如LDPC。
引用
Understanding Error Correction Mandates for Flash Memory
Charles Camp, CTO / IBM Flash Systems Development, IBM