公开/公告号CN102722456A
专利类型发明专利
公开/公告日2012-10-10
原文格式PDF
申请/专利权人 深圳市江波龙电子有限公司;
申请/专利号CN201210173583.9
申请日2012-05-30
分类号G06F13/16(20060101);
代理机构44224 广州华进联合专利商标代理有限公司;
代理人何平
地址 518057 广东省深圳市南山区科发路8号金融服务技术创新基地1栋8楼A、B、C、D、E、F1
入库时间 2023-12-18 06:47:36
法律状态公告日
法律状态信息
法律状态
2019-01-01
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F13/16 变更前: 变更后: 申请日:20120530
专利权人的姓名或者名称、地址的变更
2015-02-04
授权
授权
2012-12-05
实质审查的生效 IPC(主分类):G06F13/16 申请日:20120530
实质审查的生效
2012-10-10
公开
公开
技术领域
本发明涉及存储技术领域,特别是涉及一种闪存存储设备的数据写入方法 和闪存存储设备。
背景技术
闪存存储设备在日常生活中应用越来越普遍。闪存存储设备的写入速度成 为衡量闪存存储设备性能的重要指标,提高闪存存储设备的写入速度将大大提 高数据处理效率,有利于扩展闪存存储设备的应用。
闪存存储设备的物理构成为:每个封装片内包含一个或多个晶粒;每个晶 粒中包含多个块;每个块中包含多个页;每个页被用户划分成一个或多个扇区。 物理上,闪存存储设备是以页为单位管理的,而逻辑上则是以扇区为单位管理, 一个页以一个或多个扇区为一组,分组存放在闪存存储设备芯片中。
传统的文件管理系统(如FAT文件系统)对闪存存储设备写入数据的过程 是:先写目录区、FAT区等隐藏区,再写数据区。而闪存存储设备是以页为最 小单位进行管理的,要写入的数据往往并非从闪存存储设备的页开头开始,而 是从某页的中部开始写,又在某页的中间结束。由于闪存存储设备的特性,对 某页写数据如果不是从该页的开头开始写,就要把该页以及该页所在的块上保 存的原有数据搬移到一个临时块,把要写的数据也写到该临时块对应的页,再 把该页所在的块擦除,然后将原有数据和新写数据一起写入该块,整个过程非 常耗时,影响了数据的写入效率,还增加了闪存块的磨损。
发明内容
基于此,有必要提供一种能提高写入效率的闪存存储设备的数据写入方法。
一种闪存存储设备的数据写入方法,包括以下步骤:
获取写命令;
将所述写命令中的逻辑地址加上预先动态统计写命令中包含的逻辑地址的 起始位置而得到的页偏移量作为所述写命令的实际逻辑地址;
按照所述实际逻辑地址执行所述写命令。
在其中一个实施例中,在所述获取写命令的步骤之前,还包括步骤:
预先动态统计写命令中包含的逻辑地址的起始位置,并根据所述逻辑地址 的起始位置确定所述页偏移量。
在其中一个实施例中,所述预先动态统计写命令中包含的逻辑地址的起始 位置,并根据所述起始位置确定页偏移量的步骤具体为:
对写命令中包含的逻辑地址的起始位置进行采样;
将采样的逻辑地址的起始位置与每页包含的扇区数取余;
统计取得的余数,将数量最多的余数作为所述页偏移量。
在其中一个实施例中,在所述预先动态统计写命令中包含的逻辑地址的起 始位置,并根据所述起始位置确定页偏移量的步骤之后,还包括步骤:
将所述页偏移量存储在闪存存储设备的预设的特定存储区域。
在其中一个实施例中,在所述获取写命令的步骤之后,还包括步骤:
判断所述写命令中包含的逻辑地址的起始地址是否位于页的起始位置,若 是,则按照所述写命令中包含的逻辑地址执行所述写命令,若否,则执行将所 述写命令中的逻辑地址加上预先动态统计写命令中包含的逻辑地址的起始位置 而得到的页偏移量作为所述写命令的实际逻辑地址执行所述写命令的步骤。
此外,还有必要提供一种能提高写入效率的闪存存储设备。
一种闪存存储设备,包括控制模块和闪存芯片,所述控制模块包括:
接口单元,用于获取写命令;
处理单元,用于将所述写命令中的逻辑地址加上预先动态统计写命令中包 含的逻辑地址的起始位置而得到的页偏移量作为所述写命令的实际逻辑地址;
执行单元,用于按照所述实际逻辑地址执行所述写命令。
在其中一个实施例中,所述控制模块还包括:
统计单元,还用于预先动态统计写命令中包含的逻辑地址的起始位置,并 根据所述逻辑地址的起始位置确定所述页偏移量。
在其中一个实施例中,所述统计单元包括:
采样子单元,用于对写命令中包含的逻辑地址的起始位置进行采样;
取余子单元,用于将采样的逻辑地址的起始位置与每页包含的扇区数取余;
页偏移量确定子单元,用于统计取得的余数,将数量最多的余数作为所述 页偏移量。
在其中一个实施例中,所述闪存芯片设有特定存储区域,所述特定存储区 域用于存储所述页偏移量;
所述处理单元还用于从所述特定存储区域读取所述页偏移量。
在其中一个实施例中,所述控制模块还包括:
判断单元,用于判断所述写命令中包含的逻辑地址的起始地址是否位于页 的起始位置;
所述执行单元还用于在所述写命令中包含的逻辑地址的起始地址是位于页 的起始位置时,按照所述写命令中包含的逻辑地址执行所述写命令;
所述处理单元还用于在所述写命令中包含的逻辑地址的起始地址不是位于 页的起始位置,将所述写命令中的逻辑地址加上预先动态统计写命令中包含的 逻辑地址的起始位置而得到的页偏移量作为所述写命令的实际逻辑地址。
上述闪存存储设备的数据写入方法和闪存存储设备,当执行写命令时,将 写命令中的逻辑地址加上预先动态统计分析得到的页偏移量作为实际逻辑地 址,按照实际逻辑地址执行写命令,如此可保证对闪存存储设备的每次数据写 入操作,其写入的逻辑地址的起始位置都与闪存存储设备的页的起始位置对齐, 从而大大提高了闪存存储设备的写入速度,且减少了闪存存储设备的块的磨损, 提高了闪存存储设备的性能。
附图说明
图1为一个实施例中闪存存储设备的数据写入方法的流程示意图;
图2为预先动态统计写命令中包含的逻辑地址的起始位置,并根据该逻辑 地址的起始位置确定页偏移量的步骤的具体流程示意图;
图3为另一个实施例中闪存存储设备的数据写入方法的流程示意图;
图4为一个实施例中闪存存储设备的内部结构示意图;
图5为一个实施例中控制模块的内部结构示意图;
图6为另一个实施例中控制模块的内部结构示意图;
图7为另一个实施例中控制模块的内部结构示意图。
具体实施方式
下面结合具体的实施例及附图对闪存存储设备的数据写入方法和闪存存储 设备的技术方案进行详细的描述,以使其更加清楚。
如图1所示,在一个实施例中,一种闪存存储设备的数据写入方法,包括 以下步骤:
步骤S110,获取写命令。
具体的,闪存存储设备接收到主机对其发送的写命令。
步骤S120,将该写命令中的逻辑地址加上预先动态统计写命令中包含的逻 辑地址的起始位置而得到的页偏移量作为该写命令的实际逻辑地址。
例如,写命令中的逻辑地址为564扇区,预先对闪存存储设备的写命令中 包含的逻辑地址的起始位置动态统计而得到的页偏移量为4个扇区,则加上页 偏移量后,写命令的逻辑地址为568扇区,将568扇区作为执行该写命令的实 际逻辑地址。
步骤S130,按照实际逻辑地址执行该写命令。
具体的,按照加上页偏移量得到的实际逻辑地址开始进行写命令的操作。
在一个实施例中,在步骤S110之前,还包括步骤:预先动态统计写命令中 包含的逻辑地址的起始位置,并根据该逻辑地址的起始位置确定页偏移量。
具体的,动态统计写命令中包含的逻辑地址的起始位置是指统计某次写命 令之前的历史写命令中包含的逻辑地址的起始位置,记录逻辑地址的起始位置 的页偏移量,将统计得到的出现次数最多的页偏移量作为该次写命令的页偏移 量。例如,接收到第100次写命令时,动态统计前99次写命令中包含的逻辑地 址的起始位置的页偏移量,如页偏移量3出现最多,则将3作为第100次写命 令的页偏移量。
在一个实施例中,如图2所示,预先动态统计写命令中包含的逻辑地址的 起始位置,并根据该逻辑地址的起始位置确定页偏移量的步骤具体为:
步骤S210,对写命令中包含的逻辑地址的起始位置进行采样。
具体的,对主机发送的写命令中包含的逻辑地址的起始位置采样,采样数 量可为100或200等,采样数量越多,确定的页偏移量越准确。
步骤S220,将采样的逻辑地址的起始位置与每页包含的扇区数取余。
具体的,将采样的每个逻辑地址的起始位置与每页包含的扇区数取余。例 如,采样的5个逻辑地址的起始位置为542、564、583、604、628,每页包含的 扇区数为8,则分别取余为6、4、7、4、4。采样数量越多,取余得到的余数可 能出现0至7。
步骤S230,统计取得的余数,将数量最多的余数作为所述页偏移量。
具体的,取余后,统计出现次数最多的余数,例如余数4的数量最多,则 将4作为页偏移量。
上述确定页偏移量的方式仅为此处描述的较为具体的实现方式,也可采用 其他方式确定页偏移量。
在一个实施例中,在预先动态统计写命令中包含的逻辑地址的起始位置, 并根据该逻辑地址的起始位置确定页偏移量的步骤之后,还包括步骤:将该页 偏移量存储在闪存存储设备的预设的特定存储区域。
具体的,闪存存储设备中预设一特定存储区域,该特定存储区域是指不被 数据操作所使用的存储区域。
如图3所示,在一个实施例中,一种闪存存储设备的数据写入方法,包括 以下步骤:
步骤S310,获取写命令。
步骤S320,判断该写命令中包含的逻辑地址的起始地址是否位于页的起始 位置,若是,则执行步骤S330,若否,则执行步骤S340。
步骤S330,按照该写命令中包含的逻辑地址执行该写命令。
具体的,该写命令中包含的逻辑地址是位于页的起始位置,则直接执行写 命令。
步骤S340,将该写命令中的逻辑地址加上预先动态统计对存储设备的写命 令中包含的逻辑地址的起始位置而确定的页偏移量作为所述写命令的实际逻辑 地址。
具体确定页偏移量的方式如图2中描述的方式,在此不再赘述。
步骤S350,按照实际逻辑地址执行该写命令。
具体的,按照加上页偏移量得到的实际逻辑地址开始进行写命令的操作。
此外,因闪存存储设备的文件系统一旦确定,针对数据区的写命令,写命 令中包含的逻辑地址的起始地址的页偏移量都是相同的。但针对隐藏区的写命 令,其页偏移量是没有规律的,因数据区占整个闪存存储设备提供的存储空间 的90%以上,故可以忽略隐藏区的影响,而采用图2中描述的方式确定页偏移 量,即将出现次数最多的余数作为页偏移量。进一步的,为了避免出现隐藏区 的写命令中逻辑地址加上页偏移量得到的实际逻辑地址不对齐页的起始位置而 影响写入速度的情况,采用判断写命令中包含的逻辑地址的起始位置是否位于 页的起始位置,从而提高了针对隐藏区的写命令的写入速度。
当闪存存储设备上电被格式化后,其文件系统被改变了,则需要重新确定 闪存存储设备的页偏移量。因随着文件系统的改变,隐藏区域的大小发生改变, 数据区的大小也改变,因此页偏移量也会发生改变。
如图4所示,在一个实施例中,一种闪存存储设备,包括控制模块10和闪 存芯片20。控制模块10包括接口单元110、处理单元120和执行单元130。其 中:
接口单元110用于获取写命令。具体的,闪存存储设备的接口单元110接收 到主机对闪存存储设备发送的写命令。
处理单元120用于将该写命令中的逻辑地址加上预先动态统计写命令中包 含的逻辑地址的起始位置而得到的页偏移量作为该写命令的实际逻辑地址。
具体的,写命令中的逻辑地址为564扇区,预先对闪存存储设备的写命令 中包含的逻辑地址的起始位置动态统计而得到的页偏移量为4个扇区,则加上 页偏移量后,写命令的逻辑地址为568扇区,将568扇区作为执行该写命令的 实际逻辑地址。
执行单元130用于根据该实际逻辑地址执行所述写命令。具体的,执行单 元130按照加上页偏移量得到的实际逻辑地址开始进行写命令的操作。
闪存芯片20与控制模块10电连接。闪存芯片20设有特定存储区域。该特 定存储区域用于存储动态统计得到的页偏移量。控制模块10的处理单元120还 用于从特定存储区域读取该页偏移量。
在一个实施例中,如图5所示,控制模块10除了包括接口单元110、处理 单元120和执行单元130,还包括统计单元140。其中:
统计单元140还用于预先动态统计写命令中包含的逻辑地址的起始位置, 并根据该逻辑地址的起始位置确定该页偏移量。具体的,动态统计写命令中包 含的逻辑地址的起始位置是指统计某次写命令之前的历史写命令中包含的逻辑 地址的起始位置,记录逻辑地址的起始位置的偏移量,将统计得到的出现次数 最多的偏移量作为该次写命令的页偏移量。例如,接收到第100次写命令时, 动态统计前99次写命令中包含的逻辑地址的起始位置的页偏移量,如页偏移量 3出现最多,则将3作为第100次写命令的页偏移量。
进一步的,在一个实施例中,如图6所示,统计单元140包括采样子单元 141、取余子单元143和页偏移量确定子单元145。其中:
采样子单元141用于对写命令中包含的逻辑地址的起始位置进行采样。具 体的,对主机发送的写命令中包含的逻辑地址的起始位置采样,采样数量可为 100或200等,采样数量越多,确定的页偏移量越准确。
取余子单元143用于将采样的逻辑地址的起始位置与每页包含的扇区数取 余。具体的,将采样的每个逻辑地址的起始位置与每页包含的扇区数取余。例 如,采样的5个逻辑地址的起始位置为542、564、583、604、628,每页包含的 扇区数为8,则分别取余为6、4、7、4、4。采样数量越多,取余得到的余数可 能出现0至7。
页偏移量确定子单元145用于统计取得的余数,将数量最多的余数作为所 述页偏移量。具体的,取余后,统计出现次数最多的余数,例如余数4的数量 最多,则将4作为页偏移量。
如图7所示,在一个实施例中,控制模块10除了包括接口单元110、处理 单元120、执行单元130和统计单元140,还包括判断单元150。其中:
判断单元150用于判断该写命令中包含的逻辑地址的起始地址是否位于页 的起始位置。
执行单元130还用于在该写命令中包含的逻辑地址的起始地址是位于页的 起始位置时,按照该写命令中包含的逻辑地址执行该写命令。
处理单元120还用于在该写命令中包含的逻辑地址的起始地址不是位于页 的起始位置时,将该写命令中的逻辑地址加上预先动态统计写命令中包含的逻 辑地址的起始位置而确定的页偏移量作为该写命令的实际逻辑地址。
在其他实施例中,控制模块10可仅包括接口单元110、处理单元120、执行 单元130和判断单元150。
上述闪存存储设备的数据写入方法和闪存存储设备,当执行写命令时,将 写命令中的逻辑地址加上预先动态统计分析得到的页偏移量作为实际逻辑地 址,按照实际逻辑地址执行写命令,如此可保证对闪存存储设备的每次数据写 入操作,其写入的逻辑地址的起始位置都与闪存存储设备的页的起始位置对齐, 从而大大提高了闪存存储设备的写入速度,且减少了闪存存储设备的块的磨损, 提高了闪存存储设备的性能。
另外,尤其对于隐藏区的写命令中逻辑地址的起始位置的页偏移量是杂乱 无章的,通过判断写命令中包含的逻辑地址的起始位置是否位于页的起始位置, 可避免隐藏区的写命令的逻辑地址的起始位置是位于页的起始位置时,加上动 态统计分析得到的页偏移量反而影响写入速度的情况,更能保证每次数据写入 操作,其写入的逻辑地址的起始位置都与页的起始位置对齐;采用采样写命令 的逻辑地址的起始位置,且将其与每页包含的扇区数取余,统计数量最多的余 数作为页偏移量,提高了确定的页偏移量的准确性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域 的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和 改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附 权利要求为准。
机译: 用于闪存的数据写入方法,以及使用该方法的闪存控制器和闪存存储设备
机译: 包括控制器的半导体存储设备,该控制器用于将数据连续写入多个闪存并从多个闪存中擦除数据
机译: 包括闪存的存储设备以及用于控制传输数据以存储在闪存上的总线的写入速度的方法