coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:2326回复:2

有没有人有兴趣讨论一下FTL算法问题

楼主#
更多 发布于:2005-03-18 11:37
有兴趣的朋友都来讨论~

我对FTL不是很懂,只知道这是一种物理地址和逻辑地址的转换算法,是为了更好的保护flash并能降低文件存储读写的错误几率,但不知道具体是怎么实现的。
USB开发交流
p_y_h
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2006-04-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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]
yuhang85
驱动牛犊
驱动牛犊
  • 注册日期2010-01-21
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-04-28 20:22
回 1楼(p_y_h) 的帖子
哥哥你好呵呵 ,我在好几个帖子看到你的回复,可以加你QQ吗,有几个问题想向您请教下 非常感谢呵呵。我的QQ442133447  拜托
Come on!
游客

返回顶部