[发明专利]一种NandFlash缓冲管理方法无效
申请号: | 200810222504.2 | 申请日: | 2008-09-18 |
公开(公告)号: | CN101393537A | 公开(公告)日: | 2009-03-25 |
发明(设计)人: | 李栋梁;艾国;游明琦 | 申请(专利权)人: | 北京中星微电子有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100083北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 nandflash 缓冲 管理 方法 | ||
技术领域
本发明涉及一种NandFlash缓冲管理方法,特别是一种利用散列链表数组和多个缓存单元配合管理NandFlash缓冲的方法。
背景技术
NandFlash作为一种常用的非易失性闪存已被广泛地应用在各种数码产品中。系统对NandFlash的访问速度是影响整个产品性能的重要因素,NandFlash的结构是以块为单位的,每个块包含固定大小的页,每个页包括固定大小的比特值。
系统对NandFlash访问的常用方法有两种:
直接访问,即没有系统缓存单元,直接的驱动NandFlash进行读写。这种做法虽然简单,易于实现,但缺点明显。由于NandFlash修改某个比特时,只能从1修改为0,即便是对一个比特的修改也需要将该比特所在整个块擦除,再重新写入。所以在这种方式中,往块A中写入数据的流程如图1所示,先申请一个块大小的连续内存空间缓存,将要写入到块A中的数据对应的写入到缓存中,对块A执行块擦除操作,然后将缓存写回到块A。不难看出这种方法效率很低。
另一个方法是系统申请一个块大小的连续内存空间缓存,并保留与缓存中数据对应的块号A,执行读出写入块B的某些数据的操作。具体来说,系统首先判断待读出或写入的块B的块号与缓存中的块号A是否相同,如果相同则直接在缓存中读出数据,如果A与B不相同,则将块缓存中的数据写回到块号A所对应的物理块上,并将块B中的数据读出写入到缓存中,此过程分别如图2、图3所示。在此种方法中,无论读写操作,系统都先访问缓存,判断缓存内容是否为需要的数据,如果是则直接使用缓存中的数据,如果不是则将缓存中的数据写回其对应的物理块中再将块B的内容写入缓存。
这样的操作虽然减少了反复擦除NandFlash块的操作,但是如果遇到系统频繁访问NandFlash,并且访问区域分布于不同的块上,这样简单的读写方法不能满足需求。
发明内容
有鉴于此,本发明的目的在于提供一种NandFlash缓冲管理方法,能较好的提高缓存的访问效率,加快系统对NandFlash的访问速度,提高系统的整体性能。
为了达到上述目的,本发明一种NandFlash缓冲管理方法,包括:
在内存中建立一个与NandFlash物理块地址一一对应的链表数组;
在内存中开辟多个缓存单元用于缓存NandFlash中的数据;和
根据所述链表数组与多个缓存单元配合对NandFlash进行读写操作;
所述多个缓存单元由一个链表头采用双向链表的形式链接成数据链表;所述链表数组包括链表索引数组,用于在链表数组中定位对应的NandFlash物理地址,链表数组中的数据所对应的NandFlash物理地址与同一个NandFlash物理地址在链表数组中相应的元素对应;
在读写操作中,包括:将缓存单元内的数据与该数据在NandFlansh上对应的物理块关联,当缓存单元内数据被修改且有新的数据需要写入该缓存单元中的时候,将该缓存单元中的旧有数据写回其对应的物理块中;将写入数据的缓存单元通过指针链入NandFlash物理地址对应的链表数组中,修改该写入数据的缓存单元的单元修改标记,所述单元修改标记用于标识该缓存单元是否被修改过;及
根据最近最少使用原则将写入数据的缓存单元移动到链表头后面紧挨链表头的位置。
进一步地,所述方法在读NandFlash操作的过程包括:
步骤101,计算出待读出NandFlash数据所在物理块的物理地址在链表数组中链表索引数组的位置;
步骤102,根据链表索引数组的位置查找判断链表数组中是否包含所述待读出数据,如果不包含则执行步骤103;
步骤103,判断数据链表是否包括空闲缓存单元,如果不包含则执行步骤104;
步骤104,取链表头前面一个缓存单元为目标缓存单元,执行步骤105;
步骤105,判断所述目标缓存单元的单元修改标记是否为修改过,如果修改过将该缓存单元中的旧有数据写回其对应的NandFlash物理块中,执行步骤106,否则直接执行步骤106;
步骤106,从所述物理块中将待读出数据读入到所述目标缓存单元中,同时修改目标缓存单元的单元修改标记为没有修改过并执行步骤107;
步骤107,将所述目标缓存单元链接到数据链表头的后紧邻链表头的位置,执行步骤108;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中星微电子有限公司,未经北京中星微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810222504.2/2.html,转载请声明来源钻瓜专利网。