NFTLv3阅读笔记

 
> Translation Module用于:
    logic addr->phy addr;
    w/r/d sector
> Mapping table:
    node: 1st level, power on时候build;
    sector map: 2nd level, 需要的时候build;
> Virtual addr = virtual block(maybe multi phy block) + sector(page offset)
  Physical addr= physical block + page;
> Virtual To Physical Mapping Table
> Special Node用于处理expection:两个phy blk都full的情况
> 1 logic blk可以对应2个phy blk。当需要使用special node时候,最多可以对应4个。
> 函数initialize和mount的关系:
  功能重复,但init必须有完整分区表;mou只能针对一个partition。mount很多时候用不到,除非init后专门umount某个分区,再想mount它。
> 使用NFTL的流程:
  1) Erase all block by LLD func;(只针对第一次用NFTL的情况)
  2) NFTL_init
     用ini来create abt, write to flash last 2 blocks;
  3) 开始各种操作;
  4) 最后de-init;
> Mount做的事情
  阅读每个block的1st page(其实每个block中随便哪个都行)的spare area,组织起来构成
> Format函数做的事情:
  把除了last 2 ABT之外的其它block都erase了;
> 第一次Init的时候设置了partition table,以后init的时候都必须match,否则可能会启动起来不提示,使用的时候却出错。如果要更改分区,必须LLD来erase;
> fillFactor用于重写,10~50之间,以后可以考虑测试哪个值最合适;
> logic和phy的blk的对应关系:
  a) 不管logic上的page顺序,phy上block的page是按顺序写的;
  b) 如果logic上反复写一段data,那么2个phy blk用完之后就另外添加special node,可以多使用2个phy blk;
  c) 如果用到special node,那么直到 不操作该node or 多的2个phy blk也撑不住了 才进行GC;
> Spare area的bit含义:
  a) root level:该phy block对应的是logic blk的第几个block,00->01->10->11->00循环;
  b) ancestor level: 用于记录special node。这样如果PL发生在使用到specialnode的时候可以恢复;
  c) root counter: 用于minimize的时候发生PL的恢复。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值