在SSDFans写文章的好处很多:
- 能够加深理解,知道一个东西和把一个东西写出来,理解的程度是完全不一样的;
- 有成百上千的业内人士看你写的东西,而且文章能出现在搜索引擎靠前的位置;
- 可以展现自己的公司和产品,比如瑞耐斯的兵哥 J;
- 各位大拿会指出你理解的不对的地方;
之前的一篇文章发出来以后,作者群里的一位Memblaze的大拿指出了好几处我理解不对的地方。跟大家分享一下。
问题1:为什么要使用TLC模拟SLC Cache?
答: 为什么TLC要用SLC cache, 而在早期MLC时代,不怎么有人用。起因在于2D TLC开始的时代,很多Flash有个变态的特性,block没写完的情况下(也就是Open Block),读错误率极高,也就是说刚写下去的数据就读不出来了。所以不得不用SLC Cache转一道手,凑满了整个block再搬到TLC上
问题2:企业级和消费级SSD都使用吗?
答: 企业级不用TLC的一个重要原因是满盘性能不够好(SLC Cache用满以后性能直线下降,而且额外增加1写放大)。
但是到了3D时代,TLC会是flash厂商的主流产品,那企业级SSD可能也会跟进开始使用TLC。
问题3:TLC模拟SLC Cache的情况下,PE cycle怎么算?
答:当一个block 静态用做SLC的时候,寿命可以按照SLC算。当block在生命周期中混用TLC模式和SLC模式,寿命只能按照TLC算,因为Cache只占了很小部分的生命,block的损耗不会因为偶而用成SLC而变小
问题5:拿出来的这块空间,是固定的Block,还是会动态调整?
答: 用静态分配很容易把SLC写爆,假设你分了3%的block给SLC, 实际上只有1%的空间,SLC=1/3 TLC. 假设97%的TLC block的PE是1000, 再假设所有数据都要过一遍SLC,那么SLC需要的PE是 97*1000。
除非现在有些Flash没有open block 不好读的问题,不需要所有的数据都经过SLC Cache, 那FW就只要判断什么数据进Cache就行了。
用动态分配,不会有SLC写爆的风险,所有的block能一起wear, 但代价就是没有SLC的PE收益
另一个说法:SLC cache一般都在早期是就确定的,block一般都不会动态调整:
1. 动态调整调整后的PE不好计算,特别是block否会多次切
2. 颗粒供应商一般只承诺PE多少之前切是保证的