一种访问Nand闪存数据的方法和装置制造方法及图纸

技术编号:4228869 阅读:178 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种访问Nand闪存数据的方法,创建Nand缓存,在访问Nand闪存数据时,先根据要访问的Nand闪存的线性地址,计算出要访问的Nand闪存的物理块号(WriteBlockNum),再根据WriteBlockNum和各缓存块的管理信息中的命中块号判断是否在Nand缓存中命中缓存块,如果命中,则对命中的缓存块进行访问;如果未命中,则在访问为写操作时,申请缓存块,并将WriteBlockNum记录到命中块号,再对此缓存块进行写操作;在访问为读操作时,直接从Nand闪存中读取数据;本发明专利技术同时还公开了一种访问Nand闪存数据的装置;采用本发明专利技术的方案大大提高了对Nand闪存的读写速度。

【技术实现步骤摘要】

本专利技术涉及数据存储技术,尤指涉及一种访问Nand闪存数据的方法和装置。
技术介绍
NOR和Nand是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开 发出NOR闪存(Flash)技术,彻底改变了原先由EPROM和EEPROM —统天下的局面。紧接 着,1989年,东芝公司发表了 Nand Flash结构,这种结构强调降低每比特的成本、更高的存 储性能,并且能像磁盘一样可以通过接口轻松升级。 Nand Flash已经成为消费类应用中用作海量存储的主要选择,因为它相比NOR Flash而言具有单位比特成本更低、存储密度更高的优势,并且具有比硬盘更小的尺寸、更 低的功耗以及更可靠的优势。 正因如此,在嵌入式应用中,Nand Flash被越来越多的产品所采用,如媒体播放 器,数码相机、数码相框、便携式导航仪、U盘、机顶盒、智能手机等。 Nand Flash由大量的物理块组成,其操作特点为擦除操作的最小单位是块,且 Nand Flash数据的每一位只能从1变为0,而不能从0变为1。因此,对Nand Flash进行写 操作之前一定要先擦除整个物理块。然而,在对Nand Flash以文件形式操作时,大部分时 间只需改变一个物理块的部分数据,并不需要改变整个物理块,但由于Nand Flash的特点, 一次只能操作整个物理块,这就导致会频繁的对Nand Flash进行读写操作。 在嵌入式系统中,由于Nand Flash是一个低速设备,频繁地读写Nand Flash势必 影响整个系统的性能,同时也会影响Nand Flash的寿命。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种访问Nand闪存数据的方法和装置,在提高对Nand Flash读写速度的同时,降低对Nand Flash擦写次数。 为达到上述目的,本专利技术的技术方案是这样实现的 本专利技术提供的一种访问Nand闪存数据的方法,该方法包括 创建Nand缓存,初始化Nand缓存中各缓存块管理信息中的命中块号; 在对Nand闪存数据访问时,根据要访问的Nand闪存的线性地址,计算出要访问的Nand闪存的物理块号; 根据所述物理块号和命中块号判断是否命中缓存块,如果命中,则对命中的缓存 块进行访问;如果未命中,则在写操作时,在Nand缓存中申请未使用的缓存块,并将所述物 理块号记录到命中块号,再对此缓存块进行写操作;在读操作时,根据要读的线性地址,从 Nand闪存中读取数据。 上述方案中,所述创建Nand缓存具体为以Nand闪存中的物理块为单位创建 Nand缓存,Nand缓存由若干个缓存块组成,缓存块数不超过Nand闪存中的物理块数,其中 每个缓存块的大小与物理块的大小相同。4 上述方案中,所述计算出要访问的Nand闪存的物理块号具体为物理块号等于要 访问的Nand Flash的线性地址与Nand Flash的物理块大小的比值。 上述方案中,所述根据所述物理块号和命中块号判断是否命中缓存块具体为在 Nand缓存中查找与所述物理块号相同的命中块号的缓存块,如果查找到,则为命中;如果 未查找到,则为未命中。 上述方案中,在Nand缓存中没有未使用的缓存块供申请时,该方法进一步包括计算各缓存块的命中率,将命中率最低的缓存块进行同步处理后,作为未使用的缓存块。 上述方案中,所述计算各缓存块的命中率的方法具体为将缓存块的访问次数与在第一次访问所述缓存块之后Nand缓存的访问次数的比值作为命中率。 上述方案中,该方法进一步包括在系统重启、设备卸载或者在一段时间内没有对Nand缓存进行访问时,对Nand缓存中所有已使用且数据相对于Nand闪存有更改的缓存块进行同步处理。 本专利技术提供的一种访问Nand闪存数据的装置,该装置包括创建模块、初始化模 块、物理块号计算模块、命中判断模块、缓存块申请模块、读缓存模块、写缓存模块、读闪存 模块;其中, 创建模块,用于创建Nand缓存,并建立Nand缓存中各缓存块的管理信息中的命中 块号; 初始化模块,用于初始化Nand缓存中各缓存块管理信息中的命中块号; 物理块号计算模块,用于根据要访问的Nand闪存的线性地址,计算出要访问的物理块号; 命中判断模块,用于根据所述物理块号和命中块号判断是否命中缓存块,如果命 中,则根据访问为读操作通知读缓存模块,根据访问为写操作通知写缓存模块;如果未命 中,则在访问为写操作时,通知缓存块申请模块;在访问为读操作时,通知读闪存模块; 缓存块申请模块,用于申请未使用的缓存块,并将所述物理块号记录到命中块号, 将所述缓存块作为命中的缓存块,通知写缓存模块; 读缓存模块,用于读命中的缓存块的数据; 写缓存模块,用于将数据写入命中的缓存块; 读闪存模块,用于根据要读的线性地址,从Nand闪存中读取数据。 上述方案中,所述装置进一步包括命中率模块、同步模块;其中, 命中率模块,用于计算各缓存块的命中率,并将命中率最低的缓存块通知给同步模块; 同步模块,用于对要进行同步的缓存块进行同步处理;或者在系统重启、设备卸载 或者在一段时间内没有对Nand缓存进行访问时,对Nand缓存中所有已使用且数据相对于 Nand闪存有更改的缓存块进行同步处理; 所述缓存块申请模块,还用于在Nand缓存中没有未使用的缓存块给缓存块申请 模块申请时,通知命中率模块。 本专利技术所提供的访问Nand闪存数据的方法和装置,预先创建Nand缓存 (NandBuf),并初始化各缓存块(BlockBuf)的管理信息中的命中块号(HitBlockNum);在 对Nand Flash数据访问时,计算出要访问的Nand Flash的物理块号(WriteBlockNum),再根据WriteBlockNum和命中块号判断是否命中BlockBuf,如果命中,则对命中的 BlockBuf进行访问;如果未命中,则在写操作时,申请BlockBuf,并将WriteBlockNum记录 到HitBlockNum,再进行写操作;在读操作时,根据要读的Nand Flash的线性地址,从Nand Flash中读取数据。如此,可实现对Nand Flash数据的访问。由于本专利技术的方案采用了数 据缓存的方式,缓存的读写速度远远高于Nand Flash设备的读写速度,因此大大提高了对 Nand Flash的读写速度;同时,不用在每次写操作时对Nand Flash的物理块进行擦除,降 低了对Nand Flash的擦写次数,延长了 Nand Flash的寿命。附图说明 图1为本专利技术实现访问Nand闪存数据的方法的流程示意图; 图2为本专利技术实现访问Nand闪存数据的装置的结构示意图。具体实施例方式本专利技术的基本思想是创建NandBuf,初始化NandBuf中各BlockBuf的管理信 息中的HitBlockNum ;在对Nand Flash数据访问时,先计算出要访问的WriteBlockNum, 再根据WriteBlockNum和HitBlockNum判断是否命中BlockBuf,如果命中,则对命中的 BlockBuf进行访问;如果未命中,则在写操作时,申请BlockBuf,并将WriteBlockNum记录 到HitBlockNum,再对此BlockBuf进行写操本文档来自技高网...

【技术保护点】
一种访问Nand闪存数据的方法,其特征在于,该方法包括:创建Nand缓存,初始化Nand缓存中各缓存块管理信息中的命中块号;在对Nand闪存数据访问时,根据要访问的Nand闪存的线性地址,计算出要访问的Nand闪存的物理块号;根据所述物理块号和命中块号判断是否命中缓存块,如果命中,则对命中的缓存块进行访问;如果未命中,则在写操作时,在Nand缓存中申请未使用的缓存块,并将所述物理块号记录到命中块号,再对此缓存块进行写操作;在读操作时,根据要读的线性地址,从Nand闪存中读取数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:李贤军
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1