跟着兵哥捡垃圾 (7) — 熟能生巧

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

 

前面介绍了Greedy,Cost-Benefit, CAT三种算法,本来应该继续介绍CICL了,实际上连参考资料都找好了。

 

不过前面讲了这么多东西,一直没有提到兵哥跟其他捡垃圾的不同之处,兵哥是一位商人,研究算法从来不是目的,赚钱才是终极使命。

 

那么兵哥的卖点是什么呢?

 

垃圾回收有两个重要的问题需要考虑:回收无效Block的时机以及每次回收的数量。因此,又关系到两种回收策略:主动回收策略与被动回收策略。

 

 被动回收策略是当接收到写入请求时,系统根据目前状况判断是否执行垃圾回收,此策略模式下,系统通常会对可用空间设定一个临界值,当可用空间小于临界值时开始执行垃圾回收。每次需要回收多少空间则由固件工程师自己定义。

 这种磨损的弊端在于:当执行垃圾回收时,写入请求会被延迟,每次需要执行回收的Block数量越多,延迟的时间就越长,外在表现为写入性能急速下降。

 

主动回收策略则是利用系统空闲时间执行垃圾回收,通过固件设定周期性任务,定时检查可用块的剩余情况,如有需要就执行垃圾回收。主动回收策略等同于利用空闲时间提前进行垃圾回收,避免了被动策略所造成的性能波动。

 
 

单一利用系统空闲时间执行主动垃圾回收同样存在弊端,假设系统一直没有空闲时间,垃圾回收同样无法有效执行,例如:城市道路视频监控,闪存会一直有文件写入,此种情形下垃圾回收与被动策略基本雷同。

 

兵哥的卖点1:PR-Latency技术

在主动回收策略中采用更加优化的方式,不是等到系统完全空闲,而是忙里偷闲在命令之间的等待时间零敲碎打的进行垃圾回收。

个人以为,也许兵哥主打的军工和工控市场,有时对Latency要求没有那么高,那么固件在需要的时候,也许可以让让命令回复不要那么及时,从而给GC更多的碎片时间。

 

兵哥的卖点2:根据不同的应用场景,动态调整的OP空间

这样可以使SSD即使在100%写/读负荷的情况下都可以保持同样的性能,使用IOMeter 设置2MB pattern,100%写模式进行不间断的测试,一周后直接测试性能曲线,仍然可以表现为一条直线。

 

 

兵哥真正的卖点:Non-Blance磨损平衡算法

 

目前垃圾回收算法基本都是围绕如何更加平均的擦除每个Block这种思想进行设计,这些算法是基于Block耐磨度完全一致的”假设”基础之上,但事实上,每个page和Block的耐磨状态是不同的,当对一个闪存上的所有Block进行平均擦除时,必然会有一些Block先成为Bad Block,而另一些Block则会有更长时间的耐磨度。这是由晶圆设计工艺所决定的,在目前的工艺条件下,尚无法确保每个Block完全一致,甚至在生产过程中一定会有晶圆存在一些错误,不可控制的是这些错误是随机分布的。

 

兵哥使用型号为JS29F16B08CCME2的Intel 16GB MLC NAND Flash做了实验:

进过10次P/E后的情形,结果显示每个Block的Erase时间是不同的,不同的操作时间反应了每个Block的原始状态不同,操作时间短的Block健康状态理论上好于操作时间长的Block。

 

如果每个Block的耐磨度本来是不均衡的,人为通过算法保持每个Block擦除一致的结果,不是延长了闪存整体寿命,恰恰是损害了闪存最佳使用寿命

 

Non-Balance算法思想是:能者多劳。打破前人假设”每个Block寿命一致”基础上的平衡算法,在使用过程中对每个page和Block真实耐磨度进行评估,让耐磨度强的Block得到更多的擦写次数,而耐磨度差的则得到相应的保护。只有每个Block都不成为坏块,才能最大程度上减少对每个Block的擦除次数,举例来说:100个Block写入1TB数据和1000个Block写入1TB数据,假设100个Block写入1TB数据需要被擦除10次,那么,1000个Block只需要被擦除1次。

 
 

Non-Balance算法的另一个精要是:当Block的不可纠正误码率(UBER,Uncorrectable Bit Error Rate)达到一定的阈值时,将MLC模式转自动换为SLC模式。

 

要实现能者多劳,前提是了解Page的真实能力(PE Cycle),而非直接使用Flash厂商提供的标准数据。怎么实现的?且听下回分解。

分类目录 未分类.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。