|
索性再说几句
65# jstrend
纠正统一区段多个错误有什么新鲜的,hamming活着的时候自己就提出过。我上面说的话是为了说明纠错机制不是像某些人想的什么错简简单单就能纠正过来。是给不懂的人普及知识的。既然来了个明白的,就换一种方式说话吧。
任何纠错机制有效的前提是错误率要合理的低。硬盘的ECC之所以是有效的,是因为硬盘本身的硬件错误率已经低到了完全可以用一个简单Sector coding控制的程度。
Flash的错误率没有你想象中那么高,而且完全可以根据厂家数据计算出来每个page位反转发生的概率是多少,然后决定用多少bit ecc
如果对保存时间有要求的话,还要再增加ecc位数
至于你那个前提。。。考虑下光盘吧,光盘远远不如flash可靠,没有ECC,大家看得恐怕都是有 码 动作片了{lol:]
SSD可就不是了。对于平均只要擦写1万次就会报废的MLC和10万次就会报废的SLC存储单元而言,512+16是安全的?不要忘了硬盘操作的单元是什么,是sector,在任何正常的系统中,同一个sector都是一起被读取和擦写的,就算每个bit被擦写的次数会有不同,每个bit的寿命也不同,但是这个机制导致的结果就是当一个sector开始出现问题的时候,很可能这个问题不是仅仅一个bit,而且从这个时刻开始,因为这个sector中大多数的单元都临近平均寿命,在近期损坏的概率就会骤然提高。
字太多懒得打了,自己去看坏块管理
简而言之,就是要么不错,要错就错的一塌糊涂。对于一个大多数单元临近寿命的sector,512+16够吗?恐怕再擦写个千把次,512+512都不够。
你在最后说如果ssd有这个问题,其他flash memory也有。很遗憾,这也是不对的。flashmemory在ssd出现之前,是主要用于频繁反复擦写的环境吗?比如手机里的ssd卡,首先,写入操作就非常非常之不频繁,而且写入的都是需要持久保存的数据,也就是说,同一个单元被擦写的概率非常的低。
拜托,我说的是基于flash的存储设备,不是flash memory。任何用flash memory组成的存储都会存在一样的问题。
也许你的sd卡写的不频繁,但对于做卡的人来讲,他是不能有这个前提的,你可以去试下正牌大厂的卡,看看持续读写一个扇区多久后会挂
不管对于哪种flash存储,只要是有正常逻辑的rd安正常思路设计出来的,每个单元被擦写的频率确实不高,而且存储容量越大,概率越低,为什么,自己去看平衡算法
就比如一个16G的数码相机用闪存,假设使用十年的时间,每天都拍16G照片(条件都够极端了吧?),每天清空一次,那么整整10年,平均每个记忆单元被擦写的次数也不过是3650次左右(因为删除不是真的擦写,所以只有存储文件结构的部分会高于这个数字,不过文件结构一般都是重复保存的,一个坏了还有备份,无法读取的时候直接将该sector添加到坏扇区列表中不再使用就可以了),才是一般MLC存储单元平均寿命的三分之一。而情况显而易见,有几个闪存卡会使用10年,还一直这么高强度?所以在这种设备上使用flash memeory当然是合理的,一般的纠错机制当然是绰绰有余的。flashmemroy的最初形式就是为了bios这种一辈子擦写几次的东西而研发出来的。
很好的例子,自己换成SSD和硬盘的容量算算看,看看各自能撑多久
eeprom 和flash的差别!最近几年spi flash才开始替代eeprom存bios
ssd就不同了,上面的帖子我已经说了,在最理想的情况下,写废一个mlc单元只需要1秒时间。而硬盘偏偏就是一个就要被频繁读写的设备。跟存储卡有可比性吗?
开玩笑吧,你去拿片mlc的试试,看看能不能在你那种理想情况下花1秒写废一个单元,顺便再看看把所有单元都写坏要花多久,千万别拿slc和nor试哦
自己去估算下,你硬盘上每天才多少数据别更新,占整个容量的多少比例,即便是100%更新,你觉得hdd能撑多久
都是基于flash的存储,一样应用了坏块管理和平衡算法,怎么没有可比性:rolleyes:
xbill 发表于 2009-3-7 01:43 |
|