阅读:2326回复:2
有没有人有兴趣讨论一下FTL算法问题
有兴趣的朋友都来讨论~
我对FTL不是很懂,只知道这是一种物理地址和逻辑地址的转换算法,是为了更好的保护flash并能降低文件存储读写的错误几率,但不知道具体是怎么实现的。 |
|
|
沙发#
发布于:2005-03-21 10:23
为什么需要FTL?
1、BLOCK写和察除的次数有限(100000+) 2、PAGE写,BLOCK察除 3、出厂和使用过程中存在坏块、数据存储时会出现FLIPPING BIT 4、察除的时间十分长 所以针对这些FLASH自身的特性固件需要做一些工作, 1、针对次数限制,在有空余空间的情况下不能向同一个BLOCK写或察除,一般称为WEAR-LEVELING 2、针对写和察除特性(已经写过数据的PAGE,需要察除后才能在写),需要进行BLOCK REPLACEMENT操作 3、针对坏块和FLIPPING BIT,需要实时对坏块进行管理 4、针对察除时间十分长,对于DISCARDED的BLOCK不是立即进行察除,而是找到一个空块用于写数据,在系统空闲时才进行察除,也就是所谓的GARBAGE COLLECTION 为了实现以上这些功能,有两个表十分重要,一是对照表(逻辑地址和物理地址的转换),对于上层应用程序来说,FLASH在地址上是一个逻辑的、连续的存储界质。二是块状态表,动态跟踪FLASH所有块的状态(EMPTY、WROTE、DISCARDED,BAD) 对照表和块状态表需要缓存在系统中,缓存越大,命中率越高,同时也要考虑到把缓存回写到FLASH中。 FTL的关键是WEAR-LEVELING 的算法,和缓存的回写。 [编辑 - 3/21/05 by p_y_h] |
|
板凳#
发布于:2010-04-28 20:22
回 1楼(p_y_h) 的帖子
哥哥你好呵呵 ,我在好几个帖子看到你的回复,可以加你QQ吗,有几个问题想向您请教下 非常感谢呵呵。我的QQ442133447 拜托 |
|
|