• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 46
    • 下载费用:30 金币  

    重庆时时彩后二杀2号: 数据存储方法及装置.pdf

    关 键 词:
    数据 存储 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201611219823.9

    申请日:

    2016.12.26

    公开号:

    CN106598504A

    公开日:

    2017.04.26

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 3/06申请日:20161226|||公开
    IPC分类号: G06F3/06 主分类号: G06F3/06
    申请人: 华为机器有限公司
    发明人: 吴非; 周游; 吴克强; 张旭; 沈中鹏
    地址: 523808 广东省东莞市松山湖科技产业园区新城大道2号
    优先权:
    专利代理机构: 北京三高永信知识产权代理有限责任公司 11138 代理人: 罗振安
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201611219823.9

    授权公告号:

    |||

    法律状态公告日:

    2017.05.24|||2017.04.26

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本公开是关于一种数据存储方法及装置,属于数据存储领域。方法包括:在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑页的逻辑容量小于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从多个第一逻辑页中确定出至少一个第一目标逻辑页,将首个逻辑页包括的逻辑迷你页和至少一个第一目标逻辑页包括的逻辑迷你页进行拼接;将被逻辑存储在得到的N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页;将待写入数据从数据输入端写入得到的空闲缓存空间。本公开将迷你页作为数据存储的最小单位,可支持更细粒度的写入操作,且可有效减少对存储空间的浪费。

    权利要求书

    1.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及闪
    存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至少两个
    逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪存页,多
    个所述闪存页的物理容量是相等的,所述方法包括:
    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的
    逻辑容量小于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻
    辑页之外的其他逻辑页中确定出多个第一逻辑页,并从所述多个第一逻辑页中确定出至少
    一个第一目标逻辑页,将所述首个逻辑页包括的逻辑迷你页和所述至少一个第一目标逻辑
    页包括的逻辑迷你页进行拼接,得到N个虚拟逻辑页,所述N个虚拟逻辑页中每一虚拟逻辑
    页的逻辑容量与一个所述闪存页的物理容量是相同的,N为大于或等于1的整数;其中,所述
    空闲缓存空间用于存储与所述写数据请求相对应的待写入数据,所述N个虚拟逻辑页的逻
    辑容量之和等于所述待写入数据的数据量;
    所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物理容
    量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于所述
    多个第一逻辑页中除所述至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储
    的数据从所述数据输出端输出,所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中
    其他逻辑页内逻辑存储的数据从所述数据输出端输出;
    将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,得到所述
    空闲缓存空间;
    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。
    2.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括N个日志页,
    每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页;
    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,具体
    包括:
    在所述N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情况下,
    对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空闲日志
    页;
    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所
    述清理后的N-M个空闲日志页。
    3.根据权利要求2所述的数据存储方法,其特征在于,每一所述日志页包括至少两个物
    理迷你页,所述至少两个物理迷你页的物理容量是相同的;
    所述对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空
    闲日志页,具体包括:
    对被包含在所述N-M个非空闲日志页内的所有无效物理迷你页物理存储的数据进行擦
    除处理,并对包含在所述N-M个非空闲日志页内的所有有效物理迷你页物理存储的数据进
    行迁移处理,得到所述清理后的N-M个空闲日志页;其中,所述无效物理迷你页是指存储数
    据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷你
    页。
    4.根据权利要求2或3所述的数据存储方法,其特征在于,所述将被逻辑存储在所述N个
    虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个空闲日志页,
    具体包括:
    将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述M
    个空闲日志页和所述清理后的N-M个空闲日志页包含的对应的一个物理迷你页内;对于所
    述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个空闲日
    志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个空闲日志页
    总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且每
    一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。
    5.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括Q个日志页,
    Q为大于N的整数,并且每一日志页包括至少两个物理迷你页,所述至少两个物理迷你页的
    容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;
    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,具体
    包括:
    在所述Q个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情况下,
    从剩余的Q-M个非空闲日志页中确定出N-M个目标日志页,并对所述N-M个目标日志页内物
    理存储的数据进行清理,得到清理后的N-M个目标日志页;所述N-M个目标日志页中每一目
    标日志页包含的无效物理迷你页的数量均大于所述Q-M个非空闲日志页中除所述N-M个目
    标日志页之外的每一非空闲日志页包含的无效物理迷你页的数量,所述无效物理迷你页是
    指存储数据为无效数据的物理迷你页;
    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所
    述清理后的N-M个目标日志页。
    6.根据权利要求1所述的数据存储方法,其特征在于,多个所述闪存页包括R个日志页,
    R为大于N的整数,每一日志页包括至少两个物理迷你页,且所述至少两个物理迷你页的容
    量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;
    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,具体
    包括:
    在所述R个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情况下,
    从剩余的R-M个非空闲日志页中确定出N-M个目标日志页,并对所述N-M个目标日志页内物
    理存储的数据进行清理,得到清理后的N-M个目标日志页;所述N-M个目标日志页中每一个
    目标日志页包含的无效物理迷你页内物理存储的数据的写入时间均早于所述R-M个非空闲
    日志页中除所述N-M个目标日志页之外的每一非空闲日志页包含的无效物理迷你页内物理
    存储的数据的写入时间;所述无效物理迷你页是指存储数据为无效数据的物理迷你页;
    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所
    述清理后的N-M个目标日志页。
    7.根据权利要求5或6所述的数据存储方法,其特征在于,所述对N-M个目标日志页内物
    理存储的数据进行清理,得到清理后的N-M个目标日志页,具体包括:
    对被包含在所述N-M个目标日志页内的所有无效物理迷你页物理存储的数据进行擦除
    处理,并对包含在所述N-M个目标日志页内的所有有效物理迷你页物理存储的数据进行迁
    移处理,得到所述清理后的N-M个目标日志页;其中,所述有效物理迷你页是指存储数据为
    有效数据的物理迷你页。
    8.根据权利要求5至7任一项所述的数据存储方法,其特征在于,所述将被存储在所述N
    个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页和所述清理后的N-M个目标日志
    页,具体包括:
    将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述M
    个空闲日志页和所述清理后的N-M个目标日志页包含的对应的一个物理迷你页内;对于所
    述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个目标日
    志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个目标日志页
    总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且每
    一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。
    9.根据权利要求1至8中任一项所述的数据存储方法,其特征在于,所述方法还包括:
    在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷
    你页用于逻辑存储对应于所述读数据请求的数据;
    在被逻辑存储在所述逻辑迷你页内的数据被物理存储在日志页的情况下,确定对应于
    每一所述逻辑迷你页的物理迷你页;
    从对应于多个所述逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷你页,
    并从所述至少一个有效物理迷你页中读取所述对应于所述读数据请求的数据。
    10.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及
    闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存
    页,多个所述闪存页的物理容量是相同的,所述方法包括:
    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,所述首个逻辑页
    的逻辑容量与一个所述闪存页的物理容量相等,且对应于所述写数据请求的待写入数据的
    数据量大于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个逻辑
    页之外的其他逻辑页中确定出多个第二逻辑页,并从多个所述第二逻辑页中确定出K个第
    二目标逻辑页,其中,K为大于或等于1的整数,且所述K个第二目标逻辑页的逻辑容量和所
    述首个逻辑页的逻辑容量之和等于所述待写入数据的数据量;
    其中,所述空闲缓存空间用于存储所述待写入数据;所述首个逻辑页内逻辑存储的数
    据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;每一所述
    第二逻辑页的逻辑容量均等于一个所述闪存页的物理容量,每一所述第二目标逻辑页内逻
    辑存储的数据均将早于多个所述第二逻辑页中除所述K个第二目标逻辑页之外的其他每一
    第二逻辑页内逻辑存储的数据从所述数据输出端输出;
    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到
    K+1个空闲闪存页,得到所述空闲缓存空间;
    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。
    11.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括K+1个数
    据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;
    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到K+1个空闲闪存页,具体包括:
    在所述K+1个数据页内包括L个空闲数据页,且L为大于或等于0且小于或等于K的整数
    的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的K+1-
    L个空闲数据页;
    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到
    所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页。
    12.根据权利要求11所述的数据存储方法,其特征在于,每一数据页包括至少两个物理
    迷你页,所述至少两个物理迷你页的物理容量是相同的;
    所述对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的K+1-L
    个空闲数据页,具体包括:
    对被包含在所述K+1-L个非空闲数据页内的所有无效物理迷你页物理存储的数据进行
    擦除处理,并对包含在所述K+1-L个非空闲数据页内的所有有效物理迷你页物理存储的数
    据进行迁移处理,得到所述清理后的K+1-L个空闲数据页;其中,所述无效物理迷你页是指
    存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理
    迷你页。
    13.根据权利要求11或12所述的数据存储方法,其特征在于,所述将被逻辑存储在所述
    首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到所述L个空闲数据页以及
    所述清理后的K+1-L个空闲数据页,具体包括:
    将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的
    数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页包含的对应
    的一个物理迷你页内;
    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲
    数据页以及所述清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;所述L个空闲
    数据页以及所述清理后的K+1-L个空闲数据页总共包括的物理迷你页的数量与所述首个逻
    辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物
    理容量与一个逻辑迷你页的逻辑容量相等。
    14.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括H个数据
    页,H为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你
    页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;
    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到K+1个空闲闪存页,具体包括:
    在所述H个数据页中包括L个空闲数据页,且L为大于或等于0且小于或等于K的整数的
    情况下,从剩余的H-L个非空闲数据页中确定出K+1-L个目标数据页,并对所述K+1-L个目标
    数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页;所述K+1-L个目标
    数据页中每一目标数据页包含的无效物理迷你页的数量均大于所述H-L个非空闲数据页中
    除所述K+1-L个目标数据页之外的每一非空闲数据页包含的无效物理迷你页的数量,所述
    无效物理迷你页是指存储数据为无效数据的物理迷你页;
    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到
    所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。
    15.根据权利要求10所述的数据存储方法,其特征在于,多个所述闪存页包括J个数据
    页,J为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你
    页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;
    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到K+1个空闲闪存页,具体包括:
    在所述J个数据页中包括L个空闲数据页,且L为大于或等于0且小于或等于K的整数的
    情况下,从剩余的J-L个非空闲数据页中确定出K+1-L个目标数据页,并对所述K+1-L个目标
    数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页;所述K+1-L个目标
    数据页中每一个目标数据页包含的无效物理迷你页内物理存储的数据的写入时间均早于
    所述J-L个非空闲数据页中除所述K+1-L个目标数据页之外的每一非空闲数据页包含的无
    效物理迷你页内物理存储的数据的写入时间;所述无效物理迷你页是指存储数据为无效数
    据的物理迷你页;
    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到
    所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。
    16.根据权利要求14或15所述的数据存储方法,其特征在于,所述对所述K+1-L个目标
    数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页,具体包括:
    对被包含在所述K+1-L个目标数据页内的所有无效物理迷你页物理存储的数据进行擦
    除处理,并对包含在所述K+1-L个目标数据页内的所有有效物理迷你页物理存储的数据进
    行迁移处理,得到所述清理后的K+1-L个目标数据页;其中,所述有效物理迷你页是指存储
    数据为有效数据的物理迷你页。
    17.根据权利要求14至16任一项所述的数据存储方法,其特征在于,所述将被逻辑存储
    在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写入到所述L个空闲数据
    页以及所述清理后的K+1-L个目标数据页,具体包括:
    将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的
    数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页包含的对应
    的一个物理迷你页内;
    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲
    数据页以及所述清理后的K+1-L个目标数据页均包含一个对应的物理迷你页;所述L个空闲
    数据页以及所述清理后的K+1-L个目标数据页总共包括的物理迷你页的数量与所述首个逻
    辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物
    理容量与一个逻辑迷你页的逻辑容量相等。
    18.根据权利要求10至17任一项所述的数据存储方法,其特征在于,所述方法还包括:
    在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻辑迷
    你页用于逻辑存储对应于所述读数据请求的数据;
    在逻辑存储在多个所述逻辑迷你页内的数据被物理存储在数据页的情况下,确定对应
    于多个所述逻辑迷你页的至少一个逻辑页;
    从所述至少一个逻辑页对应的数据页中读取所述对应与所述读数据请求的数据。
    19.一种数据存储方法,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及
    闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存
    页,多个所述闪存页的物理容量是相同的;所述方法包括:
    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑页的
    逻辑容量、一个所述闪存页的物理容量以及待写入数据的数据量均相等的情况下,将存储
    在所述首个逻辑页内的数据移出并写入到一个空闲闪存页,得到所述空闲缓存空间;其中,
    所述空闲缓存空间用于存储对应于所述写数据请求的待写入数据;所述首个逻辑页内逻辑
    存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;
    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。
    20.一种数据存储装置,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及
    闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至少两
    个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪存页,
    多个所述闪存页的物理容量是相等的,所述装置包括:
    确定???,用于在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且
    首个逻辑页的逻辑容量小于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的
    除所述首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从所述多个第一逻辑页
    中确定出至少一个第一目标逻辑页;
    处理???,用于将所述首个逻辑页包括的逻辑迷你页和所述至少一个第一目标逻辑页
    包括的逻辑迷你页进行拼接,得到N个虚拟逻辑页,所述N个虚拟逻辑页中每一虚拟逻辑页
    的逻辑容量与一个所述闪存页的物理容量是相同的,N为大于或等于1的整数;其中,所述空
    闲缓存空间用于存储与所述写数据请求相对应的待写入数据,所述N个虚拟逻辑页的逻辑
    容量之和等于所述待写入数据的数据量;
    所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物理容
    量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于所述
    多个第一逻辑页中除所述至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储
    的数据从所述数据输出端输出,所述首个逻辑页内逻辑存储的数据将早于所述数据缓存中
    其他逻辑页内逻辑存储的数据从所述数据输出端输出;
    第一写入???,用于将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空
    闲闪存页,得到所述空闲缓存空间;
    第二写入???,用于将所述待写入数据从所述数据输入端写入所述空闲缓存空间。
    21.根据权利要求20所述的数据存储装置,其特征在于,多个所述闪存页包括N个日志
    页,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页;
    所述第一写入???,具体包括:
    清理子???,用于在所述N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的
    N-M个空闲日志页;
    写入子???,用于将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个
    空闲日志页和所述清理后的N-M个空闲日志页。
    22.根据权利要求21所述的数据存储装置,其特征在于,每一所述日志页包括至少两个
    物理迷你页,所述至少两个物理迷你页的物理容量是相同的;
    所述清理子???,具体用于对被包含在所述N-M个非空闲日志页内的所有无效物理迷
    你页物理存储的数据进行擦除处理,并对包含在所述N-M个非空闲日志页内的所有有效物
    理迷你页物理存储的数据进行迁移处理,得到所述清理后的N-M个空闲日志页;其中,所述
    无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数
    据为有效数据的物理迷你页。
    23.根据权利要求21或22所述的数据存储装置,其特征在于,所述写入子???,具体用
    于将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述M个
    空闲日志页和所述清理后的N-M个空闲日志页包含的对应的一个物理迷你页内;对于所述N
    个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个空闲日志页
    均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个空闲日志页总共
    包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且每一物
    理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。
    24.根据权利要求20所述的数据存储装置,其特征在于,多个所述闪存页包括Q个日志
    页,Q为大于N的整数,并且每一日志页包括至少两个物理迷你页,所述至少两个物理迷你页
    的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;
    所述第一写入???,具体包括:
    确定子???,用于在所述Q个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,从剩余的Q-M个非空闲日志页中确定出N-M个目标日志页;
    清理子???,用于对所述N-M个目标日志页内物理存储的数据进行清理,得到清理后的
    N-M个目标日志页;所述N-M个目标日志页中每一目标日志页包含的无效物理迷你页的数量
    均大于所述Q-M个非空闲日志页中除所述N-M个目标日志页之外的每一非空闲日志页包含
    的无效物理迷你页的数量,所述无效物理迷你页是指存储数据为无效数据的物理迷你页;
    写入子???,用于将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个
    空闲日志页和所述清理后的N-M个目标日志页。
    25.根据权利要求20所述的数据存储装置,其特征在于,多个所述闪存页包括R个日志
    页,R为大于N的整数,每一日志页包括至少两个物理迷你页,且所述至少两个物理迷你页的
    容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;
    所述第一写入???,具体包括:
    确定子???,用于在所述R个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,从剩余的R-M个非空闲日志页中确定出N-M个目标日志页;
    清理子???,用于对所述N-M个目标日志页内物理存储的数据进行清理,得到清理后的
    N-M个目标日志页;所述N-M个目标日志页中每一个目标日志页包含的无效物理迷你页内物
    理存储的数据的写入时间均早于所述R-M个非空闲日志页中除所述N-M个目标日志页之外
    的每一非空闲日志页包含的无效物理迷你页内物理存储的数据的写入时间;所述无效物理
    迷你页是指存储数据为无效数据的物理迷你页;
    写入子???,用于将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个
    空闲日志页和所述清理后的N-M个目标日志页。
    26.根据权利要求24或25所述的数据存储装置,其特征在于,所述清理子???,具体用
    于对被包含在所述N-M个目标日志页内的所有无效物理迷你页物理存储的数据进行擦除处
    理,并对包含在所述N-M个目标日志页内的所有有效物理迷你页物理存储的数据进行迁移
    处理,得到所述清理后的N-M个目标日志页;其中,所述有效物理迷你页是指存储数据为有
    效数据的物理迷你页。
    27.根据权利要求24至26任一项所述的数据存储装置,其特征在于,所述写入子???,
    具体用于将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所
    述M个空闲日志页和所述清理后的N-M个目标日志页包含的对应的一个物理迷你页内;对于
    所述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个目标
    日志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个目标日志
    页总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且
    每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。
    28.根据权利要求20至27中任一项所述的数据存储装置,其特征在于,所述装置还包
    括:
    所述确定???,还用于在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷
    你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;
    所述确定???,还用于在被逻辑存储在所述逻辑迷你页内的数据被物理存储在日志页
    的情况下,确定对应于每一所述逻辑迷你页的物理迷你页;
    所述确定???,还用于从对应于多个所述逻辑迷你页的多个物理迷你页中确定出至少
    一个有效物理迷你页;
    读取???,用于从所述至少一个有效物理迷你页中读取所述对应于所述读数据请求的
    数据。
    29.一种数据存储装置,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及
    闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存
    页,多个所述闪存页的物理容量是相同的,所述装置包括:
    确定???,用于在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,所
    述首个逻辑页的逻辑容量与一个所述闪存页的物理容量相等,且对应于所述写数据请求的
    待写入数据的数据量大于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除
    所述首个逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个所述第二逻辑页中
    确定出K个第二目标逻辑页,其中,K为大于或等于1的整数,且所述K个第二目标逻辑页的逻
    辑容量和所述首个逻辑页的逻辑容量之和等于所述待写入数据的数据量;
    其中,所述空闲缓存空间用于存储所述待写入数据;所述首个逻辑页内逻辑存储的数
    据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;每一所述
    第二逻辑页的逻辑容量均等于一个所述闪存页的物理容量,每一所述第二目标逻辑页内逻
    辑存储的数据均将早于多个所述第二逻辑页中除所述K个第二目标逻辑页之外的其他每一
    第二逻辑页内逻辑存储的数据从所述数据输出端输出;
    第一写入???,用于将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内
    的数据移出并写入到K+1个空闲闪存页,得到所述空闲缓存空间;
    第二写入???,用于将所述待写入数据从所述数据输入端写入所述空闲缓存空间。
    30.根据权利要求29所述的数据存储装置,其特征在于,多个所述闪存页包括K+1个数
    据页,每一第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;
    所述第一写入???,具体包括:
    清理子???,用于在所述K+1个数据页内包括L个空闲数据页,且L为大于或等于0且小
    于或等于K的整数的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,
    得到清理后的K+1-L个空闲数据页;
    写入子???,用于将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的
    数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页。
    31.根据权利要求30所述的数据存储装置,其特征在于,每一数据页包括至少两个物理
    迷你页,所述至少两个物理迷你页的物理容量是相同的;
    所述清理子???,具体用于对被包含在所述K+1-L个非空闲数据页内的所有无效物理
    迷你页物理存储的数据进行擦除处理,并对包含在所述K+1-L个非空闲数据页内的所有有
    效物理迷你页物理存储的数据进行迁移处理,得到所述清理后的K+1-L个空闲数据页;其
    中,所述无效物理迷你页是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是
    指存储数据为有效数据的物理迷你页。
    32.根据权利要求30或31所述的数据存储装置,其特征在于,所述写入子???,具体用
    于将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数
    据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页包含的对应的
    一个物理迷你页内;
    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲
    数据页以及所述清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;所述L个空闲
    数据页以及所述清理后的K+1-L个空闲数据页总共包括的物理迷你页的数量与所述首个逻
    辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物
    理容量与一个逻辑迷你页的逻辑容量相等。
    33.根据权利要求29所述的数据存储装置,其特征在于,多个所述闪存页包括H个数据
    页,H为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你
    页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;
    所述第一写入???,具体包括:
    确定子???,用于在所述H个数据页中包括L个空闲数据页,且L为大于或等于0且小于
    或等于K的整数的情况下,从剩余的H-L个非空闲数据页中确定出K+1-L个目标数据页;
    清理子???,用于对所述K+1-L个目标数据页内物理存储的数据进行清理,得到清理后
    的K+1-L个目标数据页;所述K+1-L个目标数据页中每一目标数据页包含的无效物理迷你页
    的数量均大于所述H-L个非空闲数据页中除所述K+1-L个目标数据页之外的每一非空闲数
    据页包含的无效物理迷你页的数量,所述无效物理迷你页是指存储数据为无效数据的物理
    迷你页;
    写入子???,用于将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的
    数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。
    34.根据权利要求29所述的数据存储装置,其特征在于,多个所述闪存页包括J个数据
    页,J为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理迷你
    页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;
    所述第一写入???,具体包括:
    确定子???,用于在所述J个数据页中包括L个空闲数据页,且L为大于或等于0且小于
    或等于K的整数的情况下,从剩余的J-L个非空闲数据页中确定出K+1-L个目标数据页;
    清理子???,用于对所述K+1-L个目标数据页内物理存储的数据进行清理,得到清理后
    的K+1-L个目标数据页;所述K+1-L个目标数据页中每一个目标数据页包含的无效物理迷你
    页内物理存储的数据的写入时间均早于所述J-L个非空闲数据页中除所述K+1-L个目标数
    据页之外的每一非空闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;所述
    无效物理迷你页是指存储数据为无效数据的物理迷你页;
    写入子???,用于将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的
    数据移出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。
    35.根据权利要求33或34所述的数据存储装置,其特征在于,所述清理子???,具体用
    于对被包含在所述K+1-L个目标数据页内的所有无效物理迷你页物理存储的数据进行擦除
    处理,并对包含在所述K+1-L个目标数据页内的所有有效物理迷你页物理存储的数据进行
    迁移处理,得到所述清理后的K+1-L个目标数据页;其中,所述有效物理迷你页是指存储数
    据为有效数据的物理迷你页。
    36.根据权利要求33至35任一项所述的数据存储装置,其特征在于,所述写入子???,
    具体用于K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所述
    L个空闲数据页以及所述清理后的K+1-L个目标数据页包含的对应的一个物理迷你页内;
    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个空闲
    数据页以及所述清理后的K+1-L个目标数据页均包含一个对应的物理迷你页;所述L个空闲
    数据页以及所述清理后的K+1-L个目标数据页总共包括的物理迷你页的数量与所述首个逻
    辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物
    理容量与一个逻辑迷你页的逻辑容量相等。
    37.根据权利要求29至36任一项所述的数据存储装置,其特征在于,所述装置还包括:
    所述确定???,还用于在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷
    你页,所述多个逻辑迷你页用于逻辑存储对应于所述读数据请求的数据;
    所述确定???,还用于在逻辑存储在多个所述逻辑迷你页内的数据被物理存储在数据
    页的情况下,确定对应于多个所述逻辑迷你页的至少一个逻辑页;
    读取???,用于从所述至少一个逻辑页对应的数据页中读取所述对应与所述读数据请
    求的数据。
    38.一种数据存储装置,应用于固态硬盘,其特征在于,所述固态硬盘包括数据缓存及
    闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪存
    页,多个所述闪存页的物理容量是相同的;所述装置包括:
    第一写入???,用于在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空
    间,且首个逻辑页的逻辑容量、一个所述闪存页的物理容量以及待写入数据的数据量均相
    等的情况下,将存储在所述首个逻辑页内的数据移出并写入到一个空闲闪存页,得到所述
    空闲缓存空间;其中,所述空闲缓存空间用于存储对应于所述写数据请求的待写入数据;所
    述首个逻辑页内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从
    所述数据输出端输出;
    第二写入???,用于将所述待写入数据从所述数据输入端写入所述空闲缓存空间。

    说明书

    数据存储方法及装置

    技术领域

    本公开涉及数据存储领域,特别涉及一种数据存储方法及装置。

    背景技术

    固态硬盘是用固态电子存储芯片阵列制成的硬盘,其中固态硬盘中包括的闪存作
    为文件系统中存储数据的介质对数据进行存储。其中,固态硬盘在接收到写数据请求后,一
    般情况下在对数据进行写入并存储时将闪存中的闪存页作为最小的存储单位(即进行数据
    写入时的写入粒度)。如图1所示,通过地址映射的方法可将待存储数据的LPN(Logical
    Page Number,逻辑页地址)映射至闪存中任意空闲闪存页的PPN(Physical Page Number,
    物理页地址),并将该LPN与该PPN之间的对应关系存储至映射表中,实现将待存储数据存储
    至该任意空闲闪存页。

    目前,由于闪存页的物理容量日益增长,因此在执行地址映射操作对数据进行存
    储时,闪存地址映射粒度越来越大,并且大于文件系统下发的I/O(Input/Output,输入/输
    出)请求的粒度。比如,闪存页的物理容量从之前的4KB(千字节)增长为如今的8KB、16KB等。
    而对于文件系统来说,其默认下发的I/O请求的粒度却没有改变。比如当闪存页的物理容量
    为4KB时,I/O请求的粒度为4KB;当闪存页的物理容量增加至16KB时,I/O请求的粒度仍为
    4KB。

    在执行地址映射操作对数据进行存储的过程中,依旧以上述数值为例,若一个I/O
    请求的粒度为4KB,固态硬盘仍然分配一个物理容量为16KB的闪存页对这个4KB粒度的I/O
    请求中携带的数据进行数据存储,这样便造成了存储空间的浪费。而且在后续固态硬盘的
    使用过程中,当这种I/O请求的数量大幅增加时,由于I/O请求的粒度与闪存页的物理容量
    不一致,为了便于进行数据存储,可能需要频繁对固态硬盘执行空间回收操作,这便造成固
    态硬盘的性能下降,减短固态硬盘的使用寿命。

    发明内容

    本公开提供了一种数据存储方法及装置。所述技术方案如下:

    第一方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至
    少两个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相等的,所述方法包括:

    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑
    页的逻辑容量小于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首
    个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从所述多个第一逻辑页中确定出
    至少一个第一目标逻辑页,将所述首个逻辑页包括的逻辑迷你页和所述至少一个第一目标
    逻辑页包括的逻辑迷你页进行拼接,得到N个虚拟逻辑页,所述N个虚拟逻辑页中每一虚拟
    逻辑页的逻辑容量与一个所述闪存页的物理容量是相同的,N为大于或等于1的整数;其中,
    所述空闲缓存空间用于存储与所述写数据请求相对应的待写入数据,所述N个虚拟逻辑页
    的逻辑容量之和等于所述待写入数据的数据量;

    所述多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个所述闪存页的物
    理容量,所述至少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于
    所述多个第一逻辑页中除所述至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑
    存储的数据从所述数据输出端输出,所述首个逻辑页内逻辑存储的数据将早于所述数据缓
    存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;

    将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,得到
    所述空闲缓存空间;

    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。

    在第一方面的第一种可能的实现方式中,多个所述闪存页包括N个日志页,每一虚
    拟逻辑页内逻辑存储的数据被物理存储在一个日志页;

    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,
    具体包括:

    在所述N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情
    况下,对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空闲
    日志页;

    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页
    和所述清理后的N-M个空闲日志页。

    结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式
    中,每一所述日志页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相
    同的;

    所述对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M
    个空闲日志页,具体包括:

    对被包含在所述N-M个非空闲日志页内的所有无效物理迷你页物理存储的数据进
    行擦除处理,并对包含在所述N-M个非空闲日志页内的所有有效物理迷你页物理存储的数
    据进行迁移处理,得到所述清理后的N-M个空闲日志页;其中,所述无效物理迷你页是指存
    储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的物理迷
    你页。

    结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实
    现方式中,所述将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日
    志页和所述清理后的N-M个空闲日志页,具体包括:

    将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所
    述M个空闲日志页和所述清理后的N-M个空闲日志页包含的对应的一个物理迷你页内;对于
    所述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个空闲
    日志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个空闲日志
    页总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且
    每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。

    结合第一方面,在第一方面的第四种可能的实现方式中,多个所述闪存页包括Q个
    日志页,Q为大于N的整数,并且每一日志页包括至少两个物理迷你页,所述至少两个物理迷
    你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;

    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,
    具体包括:

    在所述Q个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情
    况下,从剩余的Q-M个非空闲日志页中确定出N-M个目标日志页,并对所述N-M个目标日志页
    内物理存储的数据进行清理,得到清理后的N-M个目标日志页;所述N-M个目标日志页中每
    一目标日志页包含的无效物理迷你页的数量均大于所述Q-M个非空闲日志页中除所述N-M
    个目标日志页之外的每一非空闲日志页包含的无效物理迷你页的数量,所述无效物理迷你
    页是指存储数据为无效数据的物理迷你页;

    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页
    和所述清理后的N-M个目标日志页。

    结合第一方面,在第一方面的第五种可能的实现方式中,多个所述闪存页包括R个
    日志页,R为大于N的整数,每一日志页包括至少两个物理迷你页,且所述至少两个物理迷你
    页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个日志页内;

    所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,
    具体包括:

    在所述R个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的情
    况下,从剩余的R-M个非空闲日志页中确定出N-M个目标日志页,并对所述N-M个目标日志页
    内物理存储的数据进行清理,得到清理后的N-M个目标日志页;所述N-M个目标日志页中每
    一个目标日志页包含的无效物理迷你页内物理存储的数据的写入时间均早于所述R-M个非
    空闲日志页中除所述N-M个目标日志页之外的每一非空闲日志页包含的无效物理迷你页内
    物理存储的数据的写入时间;所述无效物理迷你页是指存储数据为无效数据的物理迷你
    页;

    将被逻辑存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页
    和所述清理后的N-M个目标日志页。

    结合第一方面的第四种或第五种可能的实现方式,在第一方面的第六种可能的实
    现方式中,所述对N-M个目标日志页内物理存储的数据进行清理,得到清理后的N-M个目标
    日志页,具体包括:

    对被包含在所述N-M个目标日志页内的所有无效物理迷你页物理存储的数据进行
    擦除处理,并对包含在所述N-M个目标日志页内的所有有效物理迷你页物理存储的数据进
    行迁移处理,得到所述清理后的N-M个目标日志页;其中,所述有效物理迷你页是指存储数
    据为有效数据的物理迷你页。

    结合第一方面的第四种至第六种可能的实现方式,在第一方面的第七种可能的实
    现方式中,所述将被存储在所述N个虚拟逻辑页内的数据迁出并写入到所述M个空闲日志页
    和所述清理后的N-M个目标日志页,具体包括:

    将所述N个虚拟逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到所
    述M个空闲日志页和所述清理后的N-M个目标日志页包含的对应的一个物理迷你页内;对于
    所述N个虚拟逻辑页内的每一逻辑迷你页,所述M个空闲日志页和所述清理后的N-M个目标
    日志页均包含一个对应的物理迷你页;所述M个空闲日志页和所述清理后的N-M个目标日志
    页总共包括的物理迷你页的数量与所述N个虚拟逻辑页包含的逻辑迷你页的数量相等,且
    每一物理迷你页的物理容量与一个逻辑迷你页的逻辑容量相等。

    综上,所述将被逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲闪
    存页,具体包括:将逻辑存储在所述N个虚拟逻辑页内的数据移出并写入到N个空闲日志页。

    结合第一方面至第一方面的第七种可能的实现方式,在第一方面的第八种可能的
    实现方式中,所述方法还包括:

    在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻
    辑迷你页用于逻辑存储对应于所述读数据请求的数据;

    在被逻辑存储在所述逻辑迷你页内的数据被物理存储在日志页的情况下,确定对
    应于每一所述逻辑迷你页的物理迷你页;

    从对应于多个所述逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷
    你页,并从所述至少一个有效物理迷你页中读取所述对应于所述读数据请求的数据。

    第二方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相同的,所述方法包括:

    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,所述首个逻
    辑页的逻辑容量与一个所述闪存页的物理容量相等,且对应于所述写数据请求的待写入数
    据的数据量大于一个所述闪存页的物理容量的情况下,从所述数据缓存包括的除所述首个
    逻辑页之外的其他逻辑页中确定出多个第二逻辑页,并从多个所述第二逻辑页中确定出K
    个第二目标逻辑页,其中,K为大于或等于1的整数,且所述K个第二目标逻辑页的逻辑容量
    和所述首个逻辑页的逻辑容量之和等于所述待写入数据的数据量;

    其中,所述空闲缓存空间用于存储所述待写入数据;所述首个逻辑页内逻辑存储
    的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出端输出;每一
    所述第二逻辑页的逻辑容量均等于一个所述闪存页的物理容量,每一所述第二目标逻辑页
    内逻辑存储的数据均将早于多个所述第二逻辑页中除所述K个第二目标逻辑页之外的其他
    每一第二逻辑页内逻辑存储的数据从所述数据输出端输出;

    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到K+1个空闲闪存页,得到所述空闲缓存空间;

    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。

    在第二方面的第一种可能的实现方式中,多个所述闪存页包括K+1个数据页,每一
    第二目标逻辑页内逻辑存储的数据均被物理存储在一个数据页内;

    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出
    并写入到K+1个空闲闪存页,具体包括:

    在所述K+1个数据页内包括L个空闲数据页,且L为大于或等于0且小于或等于K的
    整数的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的
    K+1-L个空闲数据页;

    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页。

    结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式
    中,每一数据页包括至少两个物理迷你页,所述至少两个物理迷你页的物理容量是相同的;

    所述对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的K
    +1-L个空闲数据页,具体包括:

    对被包含在所述K+1-L个非空闲数据页内的所有无效物理迷你页物理存储的数据
    进行擦除处理,并对包含在所述K+1-L个非空闲数据页内的所有有效物理迷你页物理存储
    的数据进行迁移处理,得到所述清理后的K+1-L个空闲数据页;其中,所述无效物理迷你页
    是指存储数据为无效数据的物理迷你页,所述有效物理迷你页是指存储数据为有效数据的
    物理迷你页。

    结合第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实
    现方式中,所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移
    出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页,具体包括:

    将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存
    储的数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个空闲数据页包含的
    对应的一个物理迷你页内;

    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个
    空闲数据页以及所述清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;所述L个
    空闲数据页以及所述清理后的K+1-L个空闲数据页总共包括的物理迷你页的数量与所述首
    个逻辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页
    的物理容量与一个逻辑迷你页的逻辑容量相等。

    结合第二方面,在第二方面的第四种可能的实现方式中,多个所述闪存页包括H个
    数据页,H为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理
    迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;

    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出
    并写入到K+1个空闲闪存页,具体包括:

    在所述H个数据页中包括L个空闲数据页,且L为大于或等于0且小于或等于K的整
    数的情况下,从剩余的H-L个非空闲数据页中确定出K+1-L个目标数据页,并对所述K+1-L个
    目标数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页;所述K+1-L个
    目标数据页中每一目标数据页包含的无效物理迷你页的数量均大于所述H-L个非空闲数据
    页中除所述K+1-L个目标数据页之外的每一非空闲数据页包含的无效物理迷你页的数量,
    所述无效物理迷你页是指存储数据为无效数据的物理迷你页;

    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。

    结合第二方面,在第二方面的第五种可能的实现方式中,多个所述闪存页包括J个
    数据页,J为大于K+1的整数,并且每一数据页包括至少两个物理迷你页,所述至少两个物理
    迷你页的容量是相同的,每一虚拟逻辑页内逻辑存储的数据被物理存储在一个数据页内;

    所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出
    并写入到K+1个空闲闪存页,具体包括:

    在所述J个数据页中包括L个空闲数据页,且L为大于或等于0且小于或等于K的整
    数的情况下,从剩余的J-L个非空闲数据页中确定出K+1-L个目标数据页,并对所述K+1-L个
    目标数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标数据页;所述K+1-L个
    目标数据页中每一个目标数据页包含的无效物理迷你页内物理存储的数据的写入时间均
    早于所述J-L个非空闲数据页中除所述K+1-L个目标数据页之外的每一非空闲数据页包含
    的无效物理迷你页内物理存储的数据的写入时间;所述无效物理迷你页是指存储数据为无
    效数据的物理迷你页;

    将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移出并写
    入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页。

    结合第二方面的第四种或第五种可能的实现方式,在第二方面的第六种可能的实
    现方式中,所述对所述K+1-L个目标数据页内物理存储的数据进行清理,得到清理后的K+1-
    L个目标数据页,具体包括:

    对被包含在所述K+1-L个目标数据页内的所有无效物理迷你页物理存储的数据进
    行擦除处理,并对包含在所述K+1-L个目标数据页内的所有有效物理迷你页物理存储的数
    据进行迁移处理,得到所述清理后的K+1-L个目标数据页;其中,所述有效物理迷你页是指
    存储数据为有效数据的物理迷你页。

    结合第二方面的第四种至第六种可能的实现方式,在第二方面的第七种可能的实
    现方式中,所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数据移
    出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页,具体包括:

    将所述首个逻辑页以及所述K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存
    储的数据迁出并写入到所述L个空闲数据页以及所述清理后的K+1-L个目标数据页包含的
    对应的一个物理迷你页内;

    对于所述首个逻辑页以及所述K个第二目标逻辑页内的每一逻辑迷你页,所述L个
    空闲数据页以及所述清理后的K+1-L个目标数据页均包含一个对应的物理迷你页;所述L个
    空闲数据页以及所述清理后的K+1-L个目标数据页总共包括的物理迷你页的数量与所述首
    个逻辑页以及所述K个第二目标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页
    的物理容量与一个逻辑迷你页的逻辑容量相等。

    综上,所述将被逻辑存储在所述首个逻辑页以及所述K个第二目标逻辑页内的数
    据移出并写入到K+1个空闲闪存页,具体包括:将逻辑存储在首个逻辑页以及所述K个第二
    目标逻辑页内的数据移出并写入到K+1个空闲数据页。

    结合第二方面至第二方面的第七种可能的实现方式,在第二方面的第八种可能的
    实现方式中,所述方法还包括:

    在接收到读数据请求后,根据所述读数据请求确定多个逻辑迷你页,所述多个逻
    辑迷你页用于逻辑存储对应于所述读数据请求的数据;

    在逻辑存储在多个所述逻辑迷你页内的数据被物理存储在数据页的情况下,确定
    对应于多个所述逻辑迷你页的至少一个逻辑页;

    从所述至少一个逻辑页对应的数据页中读取所述对应与所述读数据请求的数据。

    第三方面,提供了一种数据存储方法,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相同的;所述方法包括:

    在接收到写数据请求之后,在所述数据缓存中不存在空闲缓存空间,且首个逻辑
    页的逻辑容量、一个所述闪存页的物理容量以及待写入数据的数据量均相等的情况下,将
    存储在所述首个逻辑页内的数据移出并写入到一个空闲闪存页,得到所述空闲缓存空间;
    其中,所述空闲缓存空间用于存储对应于所述写数据请求的待写入数据;所述首个逻辑页
    内逻辑存储的数据将早于所述数据缓存中其他逻辑页内逻辑存储的数据从所述数据输出
    端输出;

    将所述待写入数据从所述数据输入端写入所述空闲缓存空间。

    其中,所述空闲闪存页包括空闲数据页,所述将存储在所述首个逻辑页内的数据
    移出并写入到一个空闲闪存页,具体包括:将存储在所述首个逻辑页内的数据移出并写入
    到一个所述空闲数据页。

    第四方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;每一个逻辑页包括至
    少两个逻辑迷你页,所述至少两个逻辑迷你页的逻辑容量是相同的,所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相等的,所述装置用于执行上述第一方面所述的数据
    存储方法。

    第五方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相同的,所述装置用于执行上述第二方面所述的数据
    存储方法。

    第六方面,提供了一种数据存储装置,应用于固态硬盘,所述固态硬盘包括数据缓
    存及闪存;所述数据缓存包括数据输出端、数据输入端和多个逻辑页;所述闪存包括多个闪
    存页,多个所述闪存页的物理容量是相同的;所述装置用于执行上述第三方面所述的数据
    存储方法。

    本公开提供的技术方案带来的有益效果是:

    在接收到写数据请求后,若确定数据缓存中不存在可存储待写入数据的空闲缓存
    空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪存页的物理容量一
    致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从首个逻辑页开始进
    行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的多个逻辑页;之后,
    将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入数据写入得到的空
    闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的
    大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为
    灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容
    量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回
    收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。

    附图说明

    图1是本公开背景技术示出的一种数据存储的示意图。

    图2是根据一示例性实施例示出的一种数据存储方法所涉及的系统架构图。

    图3A是根据一示例性实施例示出的一种数据缓存的示意图。

    图3B是根据一示例性实施例示出的一种固态硬盘的示意图。

    图4A是根据一示例性实施例示出的一种数据存储的方法流程图。

    图4B是根据一示例性实施例示出的一种数据缓存的示意图。

    图4C是根据一示例性实施例示出的一种物理迷你页存储状态表的示意图。

    图4D是根据一示例性实施例示出的一种迷你页级映射表的示意图。

    图4E是根据一示例性实施例示出的一种数据存储的示意图。

    图4F是根据一示例性实施例示出的一种逻辑迷你页位置状态表的示意图。

    图4G是根据一示例性实施例示出的一种数据读取的方法流程图。

    图5A是根据一示例性实施例示出的一种数据存储的方法流程图。

    图5B是根据一示例性实施例示出的一种页级映射表的示意图。

    图5C是根据一示例性实施例示出的一种数据读取的方法流程图。

    图6是根据一示例性实施例示出的一种数据存储的方法流程图。

    图7是根据一示例性实施例示出的一种数据存储装置的结构示意图。

    图8是根据一示例性实施例示出的一种数据存储装置的结构示意图。

    图9是根据一示例性实施例示出的一种数据存储装置的结构示意图。

    具体实施方式

    在对本公开进行详细地解释说明之前,先对本公开涉及的应用场景及系统架构进
    行简单介绍。

    参见图2,图2示出了本公开提供的数据存储方法所涉及的系统架构图。该系统架
    构中涉及主机上的文件系统及固态硬盘(Solid-State Disk,SSD)。其中,该SSD由SSD控制
    器和多块闪存芯片组成。SSD控制器本身为一块特定芯片,比如现场可编程门阵列(FPGA,
    Field-Programmable GateArray)芯片或专用集成电路(ASIC,Application Specific
    Intergrated Circuits)芯片,其用于对SSD的多块闪存芯片进行控制,比如通过对SSD控制
    器进行编程来完成接收主机上的文件系统下发的写数据请求或读数据请求;或者,通过对
    SSD控制器进行编程来控制SSD中的多块闪存芯片,并实现对这些闪存芯片的访问。本公开
    基于现有硬件,在软件上对SSD控制器进行了改进。即在实现时,需要对SSD控制器进行相应
    编程,使该SSD控制器具备与本公开相关的功能。

    下面对本公开所涉及的一些名词进行解释说明。

    数据缓存:在本公开中,固态硬盘除了闪存之外还包括数据缓存。如图3所示,在数
    据缓存中,分为数据输入端和数据输出端。其中,数据输入端用于接收待写入的数据,该待
    写入的数据将被写入该数据缓存,可以使用LRU(Least Recently Used,最近最少使用策
    略)算法组织数据输入端接收该待写入数据;数据输出端用于将数据从该数据缓存输出,可
    以使用MRU(Most Recently Used,最近最大使用策略)算法组织数据输出端将数据从该数
    据缓存输出。其中,SSD控制器在接收到写数据请求时,会优先判断该数据缓存是否可以存
    储该写数据请求对应的待写入数据。其中,数据缓存是不同于闪存的另一种类型存储介质,
    其通常为双倍速率同步动态随机存储器(DDR,Double Data Rate)或动态随机存取存储器
    (DRAM,Dynamic Random Access Memory)。

    逻辑页:在图3A中,数据缓存中用逻辑页对数据进行存储,即数据缓存包括多个逻
    辑页。其中,逻辑页由逻辑迷你页(Minipage)组成,每一个逻辑页包括至少两个逻辑迷你
    页,至少两个逻辑迷你页的逻辑容量是相同的。此外,每个逻辑页包含的逻辑迷你页的个数
    可能不同。一个逻辑页包含的逻辑迷你页个数的上限值可以预先进行配置,本公开对此不
    进行具体限定。在设定了该上限值后,每一个逻辑页中包括的逻辑迷你页个数均小于或等
    于该上限值。

    例如在图3A中,该上限值取值为4。即,本公开以一个逻辑页最多可由4个逻辑迷你
    页组成为例进行说明。对于逻辑页中的逻辑迷你页,该逻辑迷你页均携带逻辑迷你页地址。
    比如,在图3中,逻辑页地址(LPN,Logical Page Number)为8的逻辑页和LPN为14的逻辑页
    均包含2个逻辑迷你页,LPN为8的逻辑页包含了逻辑迷你页地址(LMN,Logical Minipage
    Number)为34和35的两个逻辑迷你页,LPN为14的逻辑页包含了LMN为56和57的两个逻辑迷
    你页;而LPN为4的逻辑页由4个逻辑迷你页组成,这4个逻辑迷你页的LMN分别为16、17、18和
    19。

    闪存页:闪存中用闪存页对数据进行存储,即闪存中包括多个闪存页,每一个闪存
    页的物理容量是相等的。其中,闪存页由物理迷你页组成,每一个闪存页包括至少两个物理
    迷你页,每一个物理迷你页的物理容量是相同的。对于闪存页中的物理迷你页,该物理迷你
    页均携带物理迷你页地址(PMN,Physical Minipage Number)。在本公开中,每个闪存页内
    包括的物理迷你页的数目可以是预先设置的。需要说明的是,参见图3B,固态硬盘中包括多
    个闪存块,每一个闪存块均由多个闪存页组成。

    迷你页:为了支持更细粒度的寻址操作,本公开引入了迷你页作为地址映射操作
    中最小的映射单位。其中,迷你页分为逻辑迷你页和物理迷你页。逻辑迷你页包括在逻辑页
    中,物理迷你页包括在物理迷你页中。一个逻辑迷你页的逻辑容量与一个物理迷你页的物
    理容量相同。

    数据页:数据页为闪存中闪存页的一种类型,用于物理存储数据缓存的数据输出
    端以数据页形式替换出的数据,这些替换出的数据是连续的,即用于逻辑存储这些替换出
    的数据的逻辑迷你页的LMN是连续的。比如,以一个逻辑页中最多包括4个逻辑迷你页为例,
    若替换出的数据是图3A中LMN分别为16、17、18和19的4个逻辑迷你页中逻辑存储的数据,那
    么便采取数据页对这些替换出的数据进行物理存储。对于闪存中的数据页,该数据页携带
    物理页地址(PPN,Physical Page Number),同时该数据页包括的每一个物理迷你页均携带
    PMN。需要说明的是,为了便于区分逻辑页、逻辑迷你页的数据存储,和闪存页、物理迷你页
    的数据存储,在本公开中以逻辑存储来定义逻辑页和逻辑迷你页的数据存储,以物理存储
    来定以闪存页也物理迷你页的数据存储。

    日志页:闪存中除了包括数据页一种类型的闪存页外,还包括另一种类型为日志
    页的闪存页,日志页用于储存数据缓存的数据输出端以日志页形式替换出的数据,这些替
    换出的数据是非连续的,即用于逻辑存储这些替换出的数据的逻辑迷你页的LMN不是连续
    的。比如,以一个逻辑页中最多包括4个逻辑迷你页为例,若替换出的数据是图3A中LMN分别
    为34、35、56和57的4个逻辑迷你页中逻辑存储的数据,那么便采取日志页对这些替换出的
    数据进行物理存储。其中,固态硬盘中的日志页个数约小于固态硬盘中闪存页总数的5%。
    对于闪存中的日志页,该日志页携带物理页地址(PPN),同时该日志页包括的每一个物理迷
    你页均携带物理迷你页地址(PMN)。

    本公开在进行数据写入时,引入迷你页作为地址映射的最小单位,其中,迷你页分
    为逻辑迷你页和物理迷你页。若数据缓存中不存在足够的空闲缓存空间来存储待写入数
    据,则SSD控制器会根据待写入数据的数据量将一部分已存储的数据迁移至闪存中,以剩余
    足够的空闲缓存空间来存储待写入数据。其中,在进行数据迁移时,SSD控制器会根据数据
    缓存中首个逻辑页的逻辑容量来判断将替换出的数据是写入闪存中的数据页还是日志页;
    并通过页级和迷你页级的混合地址映射完成数据写入。之后,基于页级映射管理数据页,并
    基于迷你页级映射管理日志页,详细过程请参见下述实施例。

    图4A是本公开示出的一种数据存储方法的流程图,执行主体为SSD控制器,如图4A
    所示包括以下步骤。

    401、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑
    页的逻辑容量小于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外
    的其他逻辑页中确定出多个第一逻辑页,并从多个第一逻辑页中确定出至少一个第一目标
    逻辑页,将首个逻辑页包括的逻辑迷你页和至少一个第一目标逻辑页包括的逻辑迷你页进
    行拼接,得到N个虚拟逻辑页。

    在本公开中,SSD控制器在接收到数据请求后,会对接收到的数据请求进行翻译,
    若翻译的结果中携带有待写入数据,则确定该数据请求为写数据请求。在确定该数据请求
    为写数据请求后,SSD控制器继续判断数据缓存中是否存在空闲缓存空间,具体过程为:SSD
    控制器对数据缓存中的空闲缓存空间进行统计,得到空闲缓存空间能够存储的数据量;将
    该待写入数据的数据量与该空闲缓存空间能够存储的数据量进行比较;若该待写入数据的
    数据量小于或等于该空闲缓存空间能够存储的数据量,则确定该数据缓存中存在可存储待
    写入数据的空闲缓存空间;若该数据量大于该空闲缓存空间能够存储的数据量,则确定该
    数据缓存中不存在可存储待写入数据的空闲缓存空间。

    其中,N个虚拟逻辑页中每一虚拟逻辑页的逻辑容量与一个闪存页的物理容量是
    相同的,N为大于或等于1的整数??障谢捍婵占溆糜诖娲⒂敫眯词萸肭笙喽杂Φ拇慈?br />数据,且N个虚拟逻辑页的逻辑容量之和等于待写入数据的数据量。多个第一逻辑页中每一
    第一逻辑页的逻辑容量均小于一个闪存页的物理容量,至少一个第一目标逻辑页中每一第
    一目标逻辑页内逻辑存储的数据均将早于多个第一逻辑页中除至少一个第一目标逻辑页
    之外其他每一第一逻辑页内逻辑存储的数据从数据输出端输出,且首个逻辑页内逻辑存储
    的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出。

    换句话说,首个逻辑页指代从数据输出端开始按照写入数据缓存的先后顺序确定
    的第一个逻辑页。也即,首个逻辑页指代数据缓存中当前已有的全部逻辑页中最先被写入
    的逻辑页。在本公开中,以图3A为例,在数据缓存中,图示右端为数据输出端,则该首个逻辑
    页即为LPN=8的逻辑页。

    其中,若SSD控制器确定数据缓存中不存在空闲缓存空间,则接下来会判断首个逻
    辑页的逻辑容量是否与一个闪存页的物理容量一致;若首个逻辑页中的逻辑容量小于一个
    闪存页的物理容量,即若首个逻辑页中的逻辑迷你页个数小于一个闪存页中包括的物理迷
    你页个数,则执行逻辑迷你页的拼接操作。需要说明的是,在本公开中,闪存页内包括的物
    理迷你页的数目预先设置为4个,本公开对预先设置的闪存中包括的物理迷你页的数目不
    进行具体限定。例如,一个闪存页中包括的物理迷你页个数为4个,若首个逻辑页中的逻辑
    迷你页个数为3个,则该首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致;若首个
    逻辑页中的逻辑迷你页个数为4个,则该首个逻辑页中的逻辑容量与一个闪存页的物理容
    量一致。

    参考图4B,下面以一个详细例子对逻辑迷你页的拼接过程进行详细说明。

    例如,以待写入数据的数据量与2个闪存页的物理容量一致,每个闪存页包括4个
    物理迷你页,首个逻辑页(LPN=8)包括2个逻辑迷你页,分别为LMN=34的逻辑迷你页和LMN
    =35的逻辑迷你页,接下来的逻辑页(LPN=14)包括2个逻辑迷你页,分别为LMN=56的逻辑
    迷你页和LMN=57的逻辑迷你页,再接下来的逻辑页(LPN=6)包括2个逻辑迷你页,分别为
    LMN=42的逻辑迷你页和LMN=43的逻辑迷你页,再接下来的逻辑页(LPN=5)包括2个逻辑
    迷你页,分别为LMN=21的逻辑迷你页和LMN=22的逻辑迷你页,则可将该数据缓存中所有
    逻辑容量小于一个闪存页的物理容量的逻辑页确定为第一逻辑页。在这个例子中,LPN=
    14、LPN=6以及LPN=5称之为第一目标逻辑页。

    在拼接时,将首个逻辑页与LPN=14的逻辑页进行拼接,得到一个闪存页大小的一
    个拼接出的逻辑页。该拼接出的逻辑页包括4个逻辑迷你页分别为LMN=34的逻辑迷你页、
    LMN=35的逻辑迷你页、LMN=56的逻辑迷你页和LMN=57的数据不连续的逻辑迷你页。将
    LPN=6逻辑页与LPN=5的逻辑页进行拼接,得到一个闪存页大小的另一个拼接出的逻辑
    页。该拼接出的逻辑页包括4个逻辑迷你页分别为LMN=42的逻辑迷你页、LMN=43的逻辑迷
    你页、LMN=21的逻辑迷你页和LMN=22的数据不连续的逻辑迷你页。这两个拼接出的逻辑
    页便指代上述N个虚拟逻辑页。由于得到的N个虚拟逻辑页的逻辑容量与待写入数据的数据
    量一致,因此完成此次拼接操作。

    除此之外,在对逻辑迷你页进行依次拼接时,通常情况还需遵循下述规则:

    若在拼接的过程中,一个第一目标逻辑页与另一个第一目标逻辑页包括的逻辑迷
    你页个数的总和大于一个闪存页中包括的物理迷你页个数,则选取另一个第一目标逻辑页
    中的部分逻辑迷你页与一个目标逻辑页进行拼接,使拼接得到的逻辑页中包括的逻辑迷你
    页个数等于一个闪存页中包括的物理迷你页个数。比如,以待写入数据的数据量与1个闪存
    页的物理容量一致,每个闪存页包括4个物理迷你页为例,若首个逻辑页包括3个逻辑迷你
    页,第一目标逻辑页包括2个逻辑迷你页,则选取第一目标逻辑页中的1个逻辑迷你页与首
    个逻辑页中的3个逻辑迷你页进行拼接,而第一目标逻辑页中没有参与拼接的1个逻辑迷你
    页,可继续存储在该第一目标逻辑页中,并可以在下一次拼接的过程中参与拼接。

    402、将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页,得到
    空闲缓存空间。

    其中,针对闪存中日志页数量的不同,可采取下述几种不同的处理方式将被逻辑
    存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页。

    情况一、多个闪存页包括N个日志页,由于上述得到的N个虚拟逻辑页是通过逻辑
    迷你页拼接得到的,因此将被逻辑存储在N个虚拟逻辑页内的数据,写入到N个空闲的日志
    页?;痪浠八?,日志页用来物理存储通过逻辑迷你页拼接得到的虚拟逻辑页中逻辑存储的
    数据。

    针对该种情况,将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪
    存页,具体包括:在N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的
    情况下,对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的N-M个空
    闲日志页;将被逻辑存储在N个虚拟逻辑页内的数据迁出并写入到M个空闲日志页和清理后
    的N-M个空闲日志页。

    由于闪存中仅包括N个日志页,若这个N个日志页中存在非空闲日志页,则必须对
    所有的非空闲日志页内物理存储的数据进行清理,进而得到N个空闲日志页,之后将N个虚
    拟逻辑页内的数据写入N个空闲日志页。

    在本公开中,在对剩余的N-M个非空闲日志页内物理存储的数据进行清理时,可采
    取下述方式实现:对被包含在N-M个非空闲日志页内的所有无效物理迷你页物理存储的数
    据进行擦除处理,并对包含在N-M个非空闲日志页内的所有有效物理迷你页物理存储的数
    据进行迁移处理,得到清理后的N-M个空闲日志页。其中,无效物理迷你页是指存储数据为
    无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的物理迷你页。其中,在
    进行数据迁移时,可将有效物理迷你页中物理存储的数据迁移到其他空闲存储空间。对数
    据进行擦除处理,即将无效物理迷你页中物理存储的数据直接永久丢弃。

    需要说明的是,对于N个虚拟逻辑页内的每一逻辑迷你页,M个空闲日志页和清理
    后的N-M个空闲日志页均包含一个对应的物理迷你页;M个空闲日志页和清理后的N-M个空
    闲日志页总共包括的物理迷你页的数量与N个虚拟逻辑页包含的逻辑迷你页的数量相等。
    因此,在将被逻辑存储在N个虚拟逻辑页内的数据迁出并写入到M个空闲日志页和清理后的
    N-M个空闲日志页时,通常遵循下述原则:将N个虚拟逻辑页包含的每一逻辑迷你页内逻辑
    存储的数据迁出并写入到M个空闲日志页和清理后的N-M个空闲日志页包含的对应的一个
    物理迷你页内。

    情况二、多个闪存页包括Q个日志页,Q为大于N的整数,每一虚拟逻辑页内逻辑存
    储的数据被物理存储在一个日志页内。

    针对该种情况,将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪
    存页,具体包括:在Q个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的
    情况下,从剩余的Q-M个非空闲日志页中确定出N-M个目标日志页,并对N-M个目标日志页内
    物理存储的数据进行清理,得到清理后的N-M个目标日志页;将被逻辑存储在N个虚拟逻辑
    页内的数据迁出并写入到M个空闲日志页和清理后的N-M个目标日志页。

    由于闪存中仅包括的日志页的数量大于N个,且Q个日志页中空闲日志页的数量又
    不足以物理存储N个虚拟逻辑页内的数据,此时便需要对日志页进行清理,即从剩余的Q-M
    个非空闲日志页中确定出N-M个目标日志页,并对N-M个目标日志页内物理存储的数据进行
    清理。

    其中,目标日志页的选取规则为:N-M个目标日志页中每一目标日志页包含的无效
    物理迷你页的数量均大于Q-M个非空闲日志页中除N-M个目标日志页之外的每一非空闲日
    志页包含的无效物理迷你页的数量。也即,一个非空闲日志页中无效数据越多,该非空闲日
    志页被选取为目标日志页的概率越大。这样选取的好处时,需要进行数据迁移处理的有效
    数据的数据量小。

    情况三、多个闪存页包括R个日志页,R为大于N的整数,每一虚拟逻辑页内逻辑存
    储的数据被物理存储在一个日志页内。

    针对该种情况,将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪
    存页,具体包括:在R个日志页中包括M个空闲日志页,且M为大于或等于0且小于N的整数的
    情况下,从剩余的R-M个非空闲日志页中确定出N-M个目标日志页,并对N-M个目标日志页内
    物理存储的数据进行清理,得到清理后的N-M个目标日志页;将被逻辑存储在N个虚拟逻辑
    页内的数据迁出并写入到M个空闲日志页和清理后的N-M个目标日志页。

    由于闪存中仅包括的日志页的数量大于N个,且R个日志页中空闲日志页的数量又
    不足以物理存储N个虚拟逻辑页内的数据,此时便需要对日志页进行清理,即从剩余的R-M
    个非空闲日志页中确定出N-M个目标日志页,并对N-M个目标日志页内物理存储的数据进行
    清理。

    其中,目标日志页的选取规则为:N-M个目标日志页中每一个目标日志页包含的无
    效物理迷你页内物理存储的数据的写入时间均早于R-M个非空闲日志页中除N-M个目标日
    志页之外的每一非空闲日志页包含的无效物理迷你页内物理存储的数据的写入时间。也
    即,一个非空闲日志页中无效数据的写入时间越早,该非空闲日志页被选取为目标日志页
    的概率越大。

    针对上述情况二和情况三,在对N-M个目标日志页内物理存储的数据进行清理时,
    具体的清理方式与上述情况一类似,此处不再赘述。在将被存储在N个虚拟逻辑页内的数据
    迁出并写入到M个空闲日志页和清理后的N-M个目标日志页时,具体实现方式也与上述情况
    一类似,此处不再赘述。

    需要说明的是,针对上述情况三,本质上就是SSD控制器按照先进先出规则,在物
    理迷你页存储状态表(PMT,Physical Minipage Valid/Invalid Table)中确定状态标识为
    第一预设数值的指定物理迷你页。这里的指定物理迷你页即指代上述情况三中提及的目标
    日志页包含的无效物理迷你页。

    其中,该PMT也即物理迷你页有效/无效状态表,该表记录了物理迷你页地址(PMN)
    与状态标识(VALID)之间的一一对应关系。其中,VALID用于标识对应的物理迷你页内物理
    存储的数据是否有效。若一个VALID的取值为第一预设数值(通常为0),则表明对应物理迷
    你页内物理存储的数据是无效的;若一个VALID的取值为第二预设数值(通常为1),则表明
    对应物理迷你页内物理存储的数据是有效的。

    例如,图4C示出了PMT的形式,该PMT存储在数据缓存中。从图4C可以得出,物理迷
    你页地址(PMN)为0的一项对应的位置标识的取值为0,则代表PMN=0的物理迷你页内物理
    存储的数据是无效的;PMN为1的一项对应的位置标识取值为1,则代表PMN=1的物理迷你页
    内物理存储的数据是有效的;PMN为2的一项对应的位置标识取值为0,则代表PMN=2的物理
    迷你页内物理存储的数据是无效的;PMN为3的一项对应的位置标识取值为1,则代表PMN=3
    的物理迷你页内物理存储的数据是有效的。

    其中,先写入在闪存中的数据通常也会先被记录在PMT中,因此依照先进先出的规
    则,也即按照该物理迷你页存储状态表的生成方式,获取最先存入表中的取值为第一预设
    数值的状态标识对应的物理迷你页,之后再按照存入的时间先后获取其他取值为第一预设
    数值的状态标识对应的物理迷你页,以确保先记录在表中的先被用到。接下来,SSD控制器
    根据迷你页级映射表,确定该指定物理迷你页所在的目标日志页,得到N-M个目标日志页。

    其中,迷你页级映射表记录了一个日志页所包括的物理迷你页、以及逻辑迷你页
    地址与物理迷你页地址之间的一一对应关系。根据迷你页级映射表可以确定指定物理迷你
    页所在的目标日志页,并根据物理迷你页存储状态表确定目标日志页包括的各个物理迷你
    页中的数据状态。若一个目标日志页中一个物理迷你页的状态标识取值为第一预设数值,
    则证明该物理迷你页存储的数据无效,该物理迷你页为无效物理迷你页;若一个目标日志
    页中一个物理迷你页的状态标识取值为第二预设数值,则证明该物理迷你页存储的数据有
    效,该物理迷你页为有效物理迷你页。

    例如,图4D示出了迷你页级映射表的形式,该迷你页级映射表同样存储在数据缓
    存中。由该迷你页级映射表可知,PPN=15的日志页中包括4个物理迷你页,分别为物理迷你
    页地址为PMN=60、PMN=61、PMN=62以及PMN=63的4个物理迷你页。其中,在图4D中LMN=
    10与PMN=60对应,表明逻辑存储在LMN=10的逻辑迷你页中的数据被物理存储在PMN=60
    的物理迷你页。同样由图4D可知,PMN=60的物理迷你页所在的目标日志页为PPN=15的日
    志页,PMN=9的物理迷你页所在的目标日志页为PPN=2的日志页。

    其中,闪存中的数据页或日志页的存在形式可如图4E所示。由图4E可知,闪存中当
    前存在PPN为2的日志页,PPN为3的数据页,PPN为9的数据页,PPN为15的日志页。其中,PPN为
    2的日志页中包括LMN分别为5、1、5、9的4个物理迷你页。其中,斜线框部分代表该物理迷你
    页中的数据无效,因此可以获知,在PPN为2的日志页中,LMN分别为5和1的物理迷你页为无
    效物理迷你页。在PPN为15的日志页中,所有物理迷你页中的数据均为有效数据,因此全部
    为有效物理迷你页。

    其中,在将有效数据进行迁移后,该有效数据物理迷你页地址会发生变化,因此需
    要在执行有效数据迁移操作后,对应修改迷你页级映射表和物理迷你页存储状态表等。其
    中,闪存中的日志页数量的数目是有严格限制的,通常情况下须保证每时刻闪存上的日志
    页总数总是小于或等于一个阈值的,该阈值的取值可为5%,本公开对此不进行具体限定。

    在另一个实施例中,在将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个
    空闲日志页后,本公开还包括修改逻辑迷你页位置状态表(LMLT,Logical Minipage
    Location Table)、PMT和迷你页级映射表的步骤,详细如下。

    对于N个空闲日志页中的一个空闲日志页来说,若该空闲日志页为闪存中从未写
    入数据的日志页,则在迷你页级映射表中为该空闲日志页增加一个条目,将该空闲日志页
    的PPN添加至迷你页级映射表。其中,在将该空闲日志页的PPN添加至迷你页级映射表中时,
    该空闲日志页中包括的物理迷你页的PMN和对应的LMN也一并添加至迷你页级映射表中的
    对应条目中。若该空闲日志页为进行数据清理得到的日志页,则该迷你页级映射表中已经
    存有该空闲日志页对应的条目,也即无需再次在迷你页级映射表中添加该空闲日志页的对
    应条目。

    此外,SSD控制器还会根据N个虚拟逻辑页包含的每一个逻辑迷你页的LMN,查询
    LMLT,将N个虚拟逻辑页包含的每一个逻辑迷你页的LMN对应的位置标识的取值置为第一预
    设数值。其中,LMLT记录了LMN与位置标识(POS)之间的对应关系。其中,该位置标识用于标
    识具有该逻辑迷你页地址的逻辑迷你页逻辑存储的数据是被物理存储在数据页中还是日
    志页中。若该位置标识的取值为第一预设数值(通常为0),则表明物理存储在日志页中;若
    该位置标识的取值为第二预设数值(通常为1),则表明物理存储在数据页中。

    例如,图4F示出了LMLT的形式,LMLT同样存储在数据缓存中。其中,POS指代状态标
    识,0指代第一预设数值,表示数据物理存储在日志页中,1指代第二预设数值,表示数据物
    理存储在数据页中。从图4F中可以得出,LMN为0的一项对应的状态标识的取值为1,则代表
    具有LMN=0的逻辑迷你页地址的逻辑迷你页逻辑存储的数据被物理存储在数据页中;LMN
    为4的一项对应的状态标识取值为0,则代表具有LMN=4的逻辑迷你页地址的逻辑迷你页逻
    辑存储的数据被物理存储在日志页中。

    之后,SSD控制器还会获取N个空闲日志页包含的每一个物理迷你页的PMN,并查询
    PMT,将N个空闲日志页包含的每一个物理迷你页的PMN对应的状态标识的取值置为第二预
    设数值。

    其中,若将N个虚拟逻辑页内的数据写入N个空闲日志页的操作执行成功,则将每
    一个物理迷你页对应的状态标识的取值置为第二预设数值(通常为1);若将N个虚拟逻辑页
    内的数据写入N个空闲日志页的操作执行失败,则将每一个物理迷你页对应的状态标识的
    取值置为第一预设数值(通常为0)。

    需要说明的是,若以相同的LMN执行了多次写入操作,则以最后一次写入操作为
    准,将最后写入的数据作为有效数据,并将该数据所在物理迷你页的物理迷你页地址对应
    的状态标识置为第二预设数值,前几次写入操作所写入的数据所在物理迷你页的物理迷你
    页地址对应的状态标识置为第一预设数值。例如,若以同一个逻辑页执行了4次写入操作,
    则将第4次写入操作所写入的数据所在物理迷你页的物理迷你页地址对应的状态标识置为
    1;将第1次、第2次和第3次写入操作写入的数据所在物理迷你页的物理迷你页地址在物理
    迷你页存储状态表中对应的状态标识置为0。

    403、将待写入数据从数据输入端写入空闲缓存空间。

    在将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个空闲日志页后,数据
    缓存中将存在空闲缓存空间,因此将存储在数据缓存中的数据作为整体向数据输出端移
    动,使数据输入端存在可以剩余存储待写入数据的空闲缓存空间,之后将该待写入数据在
    数据输入端写入该空闲缓存空间。

    综上,步骤401至步骤403完成了基于迷你页级的地址映射实现数据存储。在另一
    个实施例中,参见图4G,在写入数据后,本公开还包括读取闪存中已存储数据的步骤,详细
    如下:

    411、在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页。

    其中,该多个逻辑迷你页用于逻辑存储对应于读数据请求的数据。

    SSD控制器在接收到数据请求后,对该数据请求进行翻译,若翻译的结果中携带逻
    辑迷你页地址,则确定该数据请求为读数据请求。之后,SSD控制器获取该读数据请求中携
    带的多个逻辑迷你页地址,根据多个逻辑迷你页地址确定上述多个逻辑迷你页。

    412、在被逻辑存储在逻辑迷你页内的数据被物理存储在日志页的情况下,确定对
    应于每一逻辑迷你页的物理迷你页。

    SSD控制器根据多个逻辑迷你页地址查询LMLT,获取与该多个逻辑迷你页地址对
    应的多个位置标识。若该多个位置标识取值均为第二预设数值,则SSD控制器确定该读数据
    请求请求的数据存储在日志页中。

    接下来,根据该多个逻辑迷你页地址查询迷你页级映射表,确定与该多个逻辑迷
    你页对应的物理迷你页,即确定对应于每一逻辑迷你页的物理迷你页。

    413、从对应于多个逻辑迷你页的多个物理迷你页中确定出至少一个有效物理迷
    你页,并从至少一个有效物理迷你页中读取对应于读数据请求的数据。

    在本公开中,SSD控制器根据对应于多个逻辑迷你页的多个物理迷你页的物理迷
    你页地址,查询PMT,确定该物理迷你页地址对应的至少一个状态标识,并在该至少一个物
    理迷你页地址中,获取状态标识取值为第二预设数值的指定物理迷你页地址,具有指定物
    理迷你页地址的物理迷你页即为上述至少一个有效物理迷你页,进而从至少一个有效物理
    迷你页中读取对应于读数据请求的数据。

    本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从
    首个逻辑页开始进行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的
    多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入
    数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻
    辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数
    据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度
    与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固
    态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进
    一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存
    中进行数据读取,扩展了数据存储方式。

    图5A是本公开示出的一种数据存储方法的流程图,执行主体为SSD控制器,如图5A
    所示包括以下步骤。

    501、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,首个逻辑页
    的逻辑容量与一个闪存页的物理容量相等,且对应于写数据请求的待写入数据的数据量大
    于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外的其他逻辑页中
    确定出多个第二逻辑页,并从多个第二逻辑页中确定出K个第二目标逻辑页。

    其中,K为大于或等于1的整数,且K个第二目标逻辑页的逻辑容量和首个逻辑页的
    逻辑容量之和等于待写入数据的数据量;空闲缓存空间用于存储待写入数据;首个逻辑页
    内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;每
    一第二逻辑页的逻辑容量均等于一个闪存页的物理容量,也即一个第二逻辑页包括的逻辑
    迷你页个数等于一个闪存页包括的物理迷你页个数。每一第二目标逻辑页内逻辑存储的数
    据均将早于多个第二逻辑页中除K个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存
    储的数据从数据输出端输出。

    在本公开中,若SSD控制器确定数据缓存中不存在空闲缓存空间,则接下来会判断
    首个逻辑页的逻辑容量是否与一个闪存页的物理容量一致;若首个逻辑页的逻辑容量与一
    个闪存页的物理容量相等且待写入数据的数据量大于一个闪存页的物理容量,则在数据缓
    存中挑选多个第二逻辑页。其中,若在选取第二逻辑页的过程中,一个第二逻辑页与另一个
    第二逻辑页之间存在逻辑容量与一个闪存页的物理容量不一致的逻辑页,则将该逻辑容量
    与一个闪存页的物理容量不一致的逻辑页跳过,之后继续进行第二逻辑页的选取。比如,以
    待写入数据的数据量与2个闪存页的物理容量一致,每个闪存页包括4个物理迷你页为例,
    则若首个逻辑页包括4个逻辑迷你页,第二个逻辑页包括2个逻辑迷你页,第三个逻辑页包
    括4个逻辑迷你页,则将第二个逻辑页跳过,选取第三个逻辑页作为第二逻辑页。

    502、将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移出并写入到
    K+1个空闲闪存页,得到空闲缓存空间。

    其中,针对闪存中数据页数量的不同,可采取下述几种不同的处理方式将被逻辑
    存储在N个虚拟逻辑页内的数据移出并写入到N个空闲闪存页。

    情况一、多个闪存页包括K+1个数据页,每一第二目标逻辑页内逻辑存储的数据均
    被物理存储在一个数据页内。

    针对该种情况,将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移
    出并写入到K+1个空闲闪存页,具体包括:

    在K+1个空闲数据页内包括L个空闲数据页,且L为大于或等于0且小于或等于K的
    整数的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,得到清理后的
    K+1-L个空闲数据页;将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移出并
    写入到L个空闲数据页以及清理后的K+1-L个空闲数据页。

    其中,在对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理时,可采取下
    述方式实现:对被包含在K+1-L个非空闲数据页内的所有无效物理迷你页物理存储的数据
    进行擦除处理,并对包含在K+1-L个非空闲数据页内的所有有效物理迷你页物理存储的数
    据进行迁移处理,得到清理后的K+1-L个空闲数据页。

    其中,对于首个逻辑页以及K个第二目标逻辑页内的每一逻辑迷你页,L个空闲数
    据页以及清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;L个空闲数据页以及
    清理后的K+1-L个空闲数据页总共包括的物理迷你页的数量与首个逻辑页以及K个第二目
    标逻辑页包含的逻辑迷你页的数量相等,且每一物理迷你页的物理容量与一个逻辑迷你页
    的逻辑容量相等。因此,在将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移
    出并写入到L个空闲数据页以及清理后的K+1-L个空闲数据页时,通常遵循下述原则:将首
    个逻辑页以及K个第二目标逻辑页包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到
    L个空闲数据页以及清理后的K+1-L个空闲数据页包含的对应的一个物理迷你页内。

    情况二、多个闪存页包括H个数据页,H为大于K+1的整数,每一虚拟逻辑页内逻辑
    存储的数据被物理存储在一个数据页内。

    针对该种情况,将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移
    出并写入到K+1个空闲闪存页,具体包括:在H个数据页中包括L个空闲数据页,且L为大于或
    等于0且小于或等于K的整数的情况下,从剩余的H-L个非空闲数据页中确定出K+1-L个目标
    数据页,并对K+1-L个目标数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标
    数据页;将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移出并写入到L个空
    闲数据页以及清理后的K+1-L个目标数据页。

    其中,K+1-L个目标数据页中每一目标数据页包含的无效物理迷你页的数量均大
    于H-L个非空闲数据页中除K+1-L个目标数据页之外的每一非空闲数据页包含的无效物理
    迷你页的数量;

    情况三、多个闪存页包括J个数据页,J为大于K+1的整数,每一虚拟逻辑页内逻辑
    存储的数据被物理存储在一个数据页内。

    针对该种情况,将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移
    出并写入到K+1个空闲闪存页,具体包括:在J个数据页中包括L个空闲数据页,且L为大于或
    等于0且小于或等于K的整数的情况下,从剩余的J-L个非空闲数据页中确定出K+1-L个目标
    数据页,并对K+1-L个目标数据页内物理存储的数据进行清理,得到清理后的K+1-L个目标
    数据页;将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据移出并写入到L个空
    闲数据页以及清理后的K+1-L个目标数据页。

    其中,K+1-L个目标数据页中每一个目标数据页包含的无效物理迷你页内物理存
    储的数据的写入时间均早于J-L个非空闲数据页中除K+1-L个目标数据页之外的每一非空
    闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是指存储
    数据为无效数据的物理迷你页。

    针对上述情况二和情况三,在对K+1-L个目标数据页内物理存储的数据进行清理
    时,具体的清理方式与上述情况一类似,此处不再赘述。在将被逻辑存储在首个逻辑页以及
    K个第二目标逻辑页内的数据移出并写入到L个空闲数据页以及清理后的K+1-L个目标数据
    页时,具体实现方式也与上述情况一类似,此处不再赘述。需要说明的是,除了采取上述几
    种方式获得K+1个空闲数据页的方式,也可采取选取闪存中的至少一个垃圾块,将该至少一
    个垃圾块中的有效数据进行数据迁移,并将该至少一个垃圾块中的无效数据进行擦除,得
    到空闲闪存块,进而将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据写入该
    空闲闪存块的K+1个空闲数据页。其中,垃圾块为选取的包括无效数据的闪存块,且不含有
    空闲闪存页。

    在另一个实施例中,在将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N个
    空闲日志页后,本公开还包括修改LMLT、PMT和页级映射表的步骤,详细如下。

    SSD控制器获取首个逻辑页和K个第二逻辑页的逻辑页地址,以及K+1个空闲数据
    页的物理页地址,将上述逻辑页地址与物理页地址之间的一一对应关系记录在页级映射表
    中。即,该页级映射表是用于记录逻辑页地址与物理页地址之间的一一对应关系。

    参见图5B,图5B示出了页级映射表的形式,该页级映射表同样存储在数据缓存中。
    由该页级映射表可以获知LPN(Logical Page Number,逻辑页地址)为0的逻辑页对应的物
    理页地址为PPN=3;LPN为1的逻辑页对应的物理页地址为PPN=200;LPN为2的逻辑页对应
    的物理页地址为PPN=9;LPN为3的逻辑页对应的物理页地址为PPN=10;LPN为4的逻辑页对
    应的物理页地址为PPN=63;LPN为5的逻辑页对应的物理页地址为PPN=84;LPN为6的逻辑
    页对应的物理页地址为PPN=41;LPN为7的逻辑页对应的物理页地址为PPN=25。

    继续参见图5B,由图5B所示,PPN=9引出虚线框表格,该虚线框表格指代LPN=2的
    逻辑页包括4个逻辑迷你页,这4个逻辑迷你页的逻辑迷你页地址LMN分别为8、9、10、11,逻
    辑存储在这4个逻辑迷你页中的数据被物理存储在物理迷你页地址PMN分别为36、37、38、39
    的4个物理迷你页中。

    其中,SSD控制器将该页级映射表中首个逻辑页和K个第二逻辑页的逻辑页地址对
    应的物理页地址修改为K+1个空闲数据页的物理页地址。例如,参见图5B,对于LPN=0的逻
    辑页来说,若该逻辑页对应的数据页的PPN=10,则将该页级映射表中LPN=0对应的PPN修
    改为10。

    此外,SSD控制器还会获取首个逻辑页和K个第二逻辑页包含的所有逻辑迷你页的
    逻辑迷你页地址,并将逻辑迷你页位置状态表中这些逻辑迷你页地址对应的位置标识的取
    值置为第二预设数值。

    在本公开中,由于首个逻辑页和K个第二逻辑页包含的数据是写入到数据页,因此
    需要在逻辑迷你页位置状态表中将这些逻辑迷你页的逻辑迷你页地址对应的位置标识置
    为第二预设数值,也即置为1,以便后续需要对该数据进行读取时判断该数据是存储在数据
    页中还是日志页中。

    另外,SSD控制器还会获取K+1个空闲数据页包含的物理迷你页的物理迷你页地
    址,并将物理迷你页存储状态表中这些物理迷你页地址对应的状态标识的取值置为第二预
    设数值,表示存储的数据有效。

    其中,若将首个逻辑页和K个第二逻辑页包含的数据写入空闲数据页的操作执行
    成功,则将该空闲数据页中物理迷你页对应的状态标识的取值置为第一预设数值(通常为
    1);若将首个逻辑页和K个第二逻辑页包含的数据写入空闲数据页的操作执行失败,则将该
    空闲数据页中物理迷你页对应的状态标识的取值置为第二预设数值(通常为0)。

    503、将待写入数据从数据输入端写入空闲缓存空间。

    本步骤与上一实施例中的步骤403同理,此处不再赘述。综上,步骤501至步骤503
    完成了基于页级的地址映射实现数据存储。

    在另一个实施例中,参见图5C,在写入数据后,本公开还包括读取闪存中已存储数
    据的步骤,详细如下:

    511、在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页。

    其中,该多个逻辑迷你页用于逻辑存储对应于读数据请求的数据。

    512、在逻辑存储在多个逻辑迷你页内的数据被物理存储在数据页的情况下,确定
    对应于多个逻辑迷你页的至少一个逻辑页。

    SSD控制器根据多个逻辑迷你页地址查询LMLT,获取与该多个逻辑迷你页地址对
    应的多个位置标识。若该多个位置标识取值均为第一预设数值,则SSD控制器确定该读数据
    请求请求的数据存储在数据页中。在本公开中,参见图4F,若该读数据请求中携带的逻辑迷
    你页地址为0、1、2、3,则获取的状态标识均为1,由此可知该待读取数据存储在数据页中。

    对应于多个逻辑迷你页的至少一个逻辑页,即指代多个逻辑迷你页所在的逻辑
    页。若多个逻辑迷你页为上述首个逻辑页和K个第二目标逻辑页所包含的逻辑迷你页,则对
    应于这些逻辑迷你页的至少一个逻辑页即为上述首个逻辑页和K个第二目标逻辑页。

    513、从至少一个逻辑页对应的数据页中读取对应与读数据请求的数据。

    其中,该页级映射表中记录了逻辑页地址与物理页地址之间的对应关系。根据上
    述对应于多个逻辑迷你页的至少一个逻辑页的逻辑页地址,在该页级映射表中获取对应的
    物理页地址,根据获取到的物理地址在闪存中至少一个逻辑页对应的数据页中读取读数据
    请求所请求的数据。

    本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则从首
    个逻辑页开始进行逻辑容量与一个闪存页的物理容量一致的逻辑页的挑选,直至得到逻辑
    容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存
    中的至少一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为
    数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地
    址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写
    入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效
    减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性
    能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页
    级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。

    图6是本公开示出的一种数据存储方法的流程图,执行主体为SSD控制器,如图6所
    示包括以下步骤。

    601、在接收到写数据请求之后,在数据缓存中不存在空闲缓存空间,且首个逻辑
    页的逻辑容量、一个闪存页的物理容量以及待写入数据的数据量均相等的情况下,将存储
    在首个逻辑页内的数据移出并写入到一个空闲闪存页,得到空闲缓存空间。

    其中,空闲缓存空间用于存储对应于写数据请求的待写入数据;首个逻辑页内逻
    辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;

    602、将待写入数据从数据输入端写入空闲缓存空间。

    其中,空闲闪存页包括空闲数据页,将存储在首个逻辑页内的数据移出并写入到
    一个空闲闪存页,具体包括:将存储在首个逻辑页内的数据移出并写入到一个空闲数据页。

    本公开提供的方法,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则首个
    逻辑页内的数据写入闪存中的一个空闲数据页,并将待写入数据写入得到的空闲缓存空
    间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选
    择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不
    但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致
    的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,
    提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。

    图7是本公开提供的一种数据存储装置的结构示意图。参见图7,该装置包括:

    确定???01,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存空
    间,且首个逻辑页的逻辑容量小于一个闪存页的物理容量的情况下,从数据缓存包括的除
    首个逻辑页之外的其他逻辑页中确定出多个第一逻辑页,并从多个第一逻辑页中确定出至
    少一个第一目标逻辑页;

    处理???02,用于将首个逻辑页包括的逻辑迷你页和至少一个第一目标逻辑页
    包括的逻辑迷你页进行拼接,得到N个虚拟逻辑页,N个虚拟逻辑页中每一虚拟逻辑页的逻
    辑容量与一个闪存页的物理容量是相同的,N为大于或等于1的整数;其中,空闲缓存空间用
    于存储与写数据请求相对应的待写入数据,N个虚拟逻辑页的逻辑容量之和等于待写入数
    据的数据量;

    多个第一逻辑页中每一第一逻辑页的逻辑容量均小于一个闪存页的物理容量,至
    少一个第一目标逻辑页中每一第一目标逻辑页内逻辑存储的数据均将早于多个第一逻辑
    页中除至少一个第一目标逻辑页之外其他每一第一逻辑页内逻辑存储的数据从数据输出
    端输出,首个逻辑页内逻辑存储的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从
    数据输出端输出;

    第一写入???03,用于将被逻辑存储在N个虚拟逻辑页内的数据移出并写入到N
    个空闲闪存页,得到空闲缓存空间;

    第二写入???04,用于将待写入数据从数据输入端写入空闲缓存空间。

    在另一个实施例中,多个闪存页包括N个日志页,每一虚拟逻辑页内逻辑存储的数
    据被物理存储在一个日志页;

    第一写入???,具体包括:

    清理子???,用于在N个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,对剩余的N-M个非空闲日志页内物理存储的数据进行清理,得到清理后的
    N-M个空闲日志页;

    写入子???,用于将被逻辑存储在N个虚拟逻辑页内的数据迁出并写入到M个空闲
    日志页和清理后的N-M个空闲日志页。

    在另一个实施例中,每一日志页包括至少两个物理迷你页,至少两个物理迷你页
    的物理容量是相同的;

    清理子???,具体用于对被包含在N-M个非空闲日志页内的所有无效物理迷你页
    物理存储的数据进行擦除处理,并对包含在N-M个非空闲日志页内的所有有效物理迷你页
    物理存储的数据进行迁移处理,得到清理后的N-M个空闲日志页;其中,无效物理迷你页是
    指存储数据为无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的物理迷
    你页。

    在另一个实施例中,写入子???,具体用于将N个虚拟逻辑页包含的每一逻辑迷你
    页内逻辑存储的数据迁出并写入到M个空闲日志页和清理后的N-M个空闲日志页包含的对
    应的一个物理迷你页内;对于N个虚拟逻辑页内的每一逻辑迷你页,M个空闲日志页和清理
    后的N-M个空闲日志页均包含一个对应的物理迷你页;M个空闲日志页和清理后的N-M个空
    闲日志页总共包括的物理迷你页的数量与N个虚拟逻辑页包含的逻辑迷你页的数量相等,
    且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。

    在另一个实施例中,多个闪存页包括Q个日志页,Q为大于N的整数,并且每一日志
    页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻
    辑存储的数据被物理存储在一个日志页内;

    第一写入???,具体包括:

    确定子???,用于在Q个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,从剩余的Q-M个非空闲日志页中确定出N-M个目标日志页;

    清理子???,用于对N-M个目标日志页内物理存储的数据进行清理,得到清理后的
    N-M个目标日志页;N-M个目标日志页中每一目标日志页包含的无效物理迷你页的数量均大
    于Q-M个非空闲日志页中除N-M个目标日志页之外的每一非空闲日志页包含的无效物理迷
    你页的数量,无效物理迷你页是指存储数据为无效数据的物理迷你页;

    写入子???,用于将被逻辑存储在N个虚拟逻辑页内的数据迁出并写入到M个空闲
    日志页和清理后的N-M个目标日志页。

    在另一个实施例中,多个闪存页包括R个日志页,R为大于N的整数,每一日志页包
    括至少两个物理迷你页,且至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内逻辑
    存储的数据被物理存储在一个日志页内;

    第一写入???,具体包括:

    确定子???,用于在R个日志页中包括M个空闲日志页,且M为大于或等于0且小于N
    的整数的情况下,从剩余的R-M个非空闲日志页中确定出N-M个目标日志页;

    清理子???,用于对N-M个目标日志页内物理存储的数据进行清理,得到清理后的
    N-M个目标日志页;N-M个目标日志页中每一个目标日志页包含的无效物理迷你页内物理存
    储的数据的写入时间均早于R-M个非空闲日志页中除N-M个目标日志页之外的每一非空闲
    日志页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是指存储数
    据为无效数据的物理迷你页;

    写入子???,用于将被逻辑存储在N个虚拟逻辑页内的数据迁出并写入到M个空闲
    日志页和清理后的N-M个目标日志页。

    在另一个实施例中,清理子???,具体用于对被包含在N-M个目标日志页内的所有
    无效物理迷你页物理存储的数据进行擦除处理,并对包含在N-M个目标日志页内的所有有
    效物理迷你页物理存储的数据进行迁移处理,得到清理后的N-M个目标日志页;其中,有效
    物理迷你页是指存储数据为有效数据的物理迷你页。

    在另一个实施例中,写入子???,具体用于将N个虚拟逻辑页包含的每一逻辑迷你
    页内逻辑存储的数据迁出并写入到M个空闲日志页和清理后的N-M个目标日志页包含的对
    应的一个物理迷你页内;对于N个虚拟逻辑页内的每一逻辑迷你页,M个空闲日志页和清理
    后的N-M个目标日志页均包含一个对应的物理迷你页;M个空闲日志页和清理后的N-M个目
    标日志页总共包括的物理迷你页的数量与N个虚拟逻辑页包含的逻辑迷你页的数量相等,
    且每一物理迷你页的容量与一个虚拟逻辑页的容量相等。

    在另一个实施例中,该装置还包括:

    确定???,还用于在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页,
    多个逻辑迷你页用于逻辑存储对应于读数据请求的数据;

    确定???,还用于在被逻辑存储在逻辑迷你页内的数据被物理存储在日志页的情
    况下,确定对应于每一逻辑迷你页的物理迷你页;

    确定???,还用于从对应于多个逻辑迷你页的多个物理迷你页中确定出至少一个
    有效物理迷你页;

    读取???,用于从至少一个有效物理迷你页中读取对应于读数据请求的数据。

    本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量不一致,则从
    首个逻辑页开始进行逻辑迷你页拼接,直至得到逻辑容量与一个闪存页的物理容量一致的
    多个逻辑页;之后,将多个逻辑页内的数据写入闪存中的至少一个空闲日志页,并将待写入
    数据写入得到的空闲缓存空间。由于将迷你页作为数据存储的最小单位,且可根据首个逻
    辑页中逻辑容量的大小来选择是使用迷你页级的地址映射还是页级的地址映射实现对数
    据的存储,方式更为灵活,不但可支持更细粒度的写入操作,而且不会出现数据写入的粒度
    与闪存页的物理容量不一致的情况,因此既可有效减少对存储空间的浪费,也可减少对固
    态硬盘中的空间回收的次数,提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。进
    一步地,在接收到读数据请求后,还可基于迷你页级的地址映射或页级的地址映射,从闪存
    中进行数据读取,扩展了数据存储方式。

    图8是本公开提供的一种数据存储装置的结构示意图。参见图8,该装置包括:

    确定???01,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存空
    间,首个逻辑页的逻辑容量与一个闪存页的物理容量相等,且对应于写数据请求的待写入
    数据的数据量大于一个闪存页的物理容量的情况下,从数据缓存包括的除首个逻辑页之外
    的其他逻辑页中确定出多个第二逻辑页,并从多个第二逻辑页中确定出K个第二目标逻辑
    页,其中,K为大于或等于1的整数,且K个第二目标逻辑页的逻辑容量和首个逻辑页的逻辑
    容量之和等于待写入数据的数据量;

    其中,空闲缓存空间用于存储待写入数据;首个逻辑页内逻辑存储的数据将早于
    数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;每一第二逻辑页的逻辑容量
    均等于一个闪存页的物理容量,每一第二目标逻辑页内逻辑存储的数据均将早于多个第二
    逻辑页中除K个第二目标逻辑页之外的其他每一第二逻辑页内逻辑存储的数据从数据输出
    端输出;

    第一写入???02,用于将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的
    数据移出并写入到K+1个空闲闪存页,得到空闲缓存空间;

    第二写入???03,用于将待写入数据从数据输入端写入空闲缓存空间。

    在另一个实施例中,多个闪存页包括K+1个数据页,每一第二目标逻辑页内逻辑存
    储的数据均被物理存储在一个数据页内;

    第一写入???,具体包括:

    清理子???,用于在K+1个数据页内包括L个空闲数据页,且L为大于或等于0且小
    于或等于K的整数的情况下,对剩余的K+1-L个非空闲数据页内物理存储的数据进行清理,
    得到清理后的K+1-L个空闲数据页;

    写入子???,用于将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据
    移出并写入到L个空闲数据页以及清理后的K+1-L个空闲数据页。

    在另一个实施例中,每一数据页包括至少两个物理迷你页,至少两个物理迷你页
    的物理容量是相同的;

    清理子???,具体用于对被包含在K+1-L个非空闲数据页内的所有无效物理迷你
    页物理存储的数据进行擦除处理,并对包含在K+1-L个非空闲数据页内的所有有效物理迷
    你页物理存储的数据进行迁移处理,得到清理后的K+1-L个空闲数据页;其中,无效物理迷
    你页是指存储数据为无效数据的物理迷你页,有效物理迷你页是指存储数据为有效数据的
    物理迷你页。

    在另一个实施例中,写入子???,具体用于将首个逻辑页以及K个第二目标逻辑页
    包含的每一逻辑迷你页内逻辑存储的数据迁出并写入到L个空闲数据页以及清理后的K+1-
    L个空闲数据页包含的对应的一个物理迷你页内;

    对于首个逻辑页以及K个第二目标逻辑页内的每一逻辑迷你页,L个空闲数据页以
    及清理后的K+1-L个空闲数据页均包含一个对应的物理迷你页;L个空闲数据页以及清理后
    的K+1-L个空闲数据页总共包括的物理迷你页的数量与首个逻辑页以及K个第二目标逻辑
    页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相
    等。

    在另一个实施例中,多个闪存页包括H个数据页,H为大于K+1的整数,并且每一数
    据页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内
    逻辑存储的数据被物理存储在一个数据页内;

    第一写入???,具体包括:

    确定子???,用于在H个数据页中包括L个空闲数据页,且L为大于或等于0且小于
    或等于K的整数的情况下的,从剩余的H-L个非空闲数据页中确定出K+1-L个目标数据页;

    清理子???,用于对K+1-L个目标数据页内物理存储的数据进行清理,得到清理后
    的K+1-L个目标数据页;K+1-L个目标数据页中每一目标数据页包含的无效物理迷你页的数
    量均大于H-L个非空闲数据页中除K+1-L个目标数据页之外的每一非空闲数据页包含的无
    效物理迷你页的数量,无效物理迷你页是指存储数据为无效数据的物理迷你页;

    写入子???,用于将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据
    移出并写入到L个空闲数据页以及清理后的K+1-L个目标数据页。

    在另一个实施例中,多个闪存页包括J个数据页,J为大于K+1的整数,并且每一数
    据页包括至少两个物理迷你页,至少两个物理迷你页的容量是相同的,每一虚拟逻辑页内
    逻辑存储的数据被物理存储在一个数据页内;

    第一写入???,具体包括:

    确定子???,用于在J个数据页中包括L个空闲数据页,且L为大于或等于0且小于
    或等于K的整数的情况下的,从剩余的J-L个非空闲数据页中确定出K+1-L个目标数据页;

    清理子???,用于对K+1-L个目标数据页内物理存储的数据进行清理,得到清理后
    的K+1-L个目标数据页;K+1-L个目标数据页中每一个目标数据页包含的无效物理迷你页内
    物理存储的数据的写入时间均早于J-L个非空闲数据页中除K+1-L个目标数据页之外的每
    一非空闲数据页包含的无效物理迷你页内物理存储的数据的写入时间;无效物理迷你页是
    指存储数据为无效数据的物理迷你页;

    写入子???,用于将被逻辑存储在首个逻辑页以及K个第二目标逻辑页内的数据
    移出并写入到L个空闲数据页以及清理后的K+1-L个目标数据页。

    在另一个实施例中,清理子???,具体用于对被包含在K+1-L个目标数据页内的所
    有无效物理迷你页物理存储的数据进行擦除处理,并对包含在K+1-L个目标数据页内的所
    有有效物理迷你页物理存储的数据进行迁移处理,得到清理后的K+1-L个目标数据页;其
    中,有效物理迷你页是指存储数据为有效数据的物理迷你页。

    在另一个实施例中,写入子???,具体用于K个第二目标逻辑页包含的每一逻辑迷
    你页内逻辑存储的数据迁出并写入到L个空闲数据页以及清理后的K+1-L个目标数据页包
    含的对应的一个物理迷你页内;

    对于首个逻辑页以及K个第二目标逻辑页内的每一逻辑迷你页,L个空闲数据页以
    及清理后的K+1-L个目标数据页均包含一个对应的物理迷你页;L个空闲数据页以及清理后
    的K+1-L个目标数据页总共包括的物理迷你页的数量与首个逻辑页以及K个第二目标逻辑
    页包含的逻辑迷你页的数量相等,且每一物理迷你页的容量与一个虚拟逻辑页的容量相
    等。

    在另一个实施例中,该装置还包括:

    确定???,还用于在接收到读数据请求后,根据读数据请求确定多个逻辑迷你页,
    多个逻辑迷你页用于逻辑存储对应于读数据请求的数据;

    确定???,还用于在逻辑存储在多个逻辑迷你页内的数据被物理存储在数据页的
    情况下,确定对应于多个逻辑迷你页的至少一个逻辑页;

    读取???,用于从至少一个逻辑页对应的物理页中读取对应与读数据请求的数
    据。

    本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则从首
    个逻辑页开始进行逻辑容量与一个闪存页的物理容量一致的逻辑页的挑选,直至得到逻辑
    容量与一个闪存页的物理容量一致的多个逻辑页;之后,将多个逻辑页内的数据写入闪存
    中的至少一个空闲数据页,并将待写入数据写入得到的空闲缓存空间。由于将迷你页作为
    数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选择是使用迷你页级的地
    址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不但可支持更细粒度的写
    入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致的情况,因此既可有效
    减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,提升了固态硬盘的性
    能,而且增加了固态硬盘的使用寿命。进一步地,在接收到读数据请求后,还可基于迷你页
    级的地址映射或页级的地址映射,从闪存中进行数据读取,扩展了数据存储方式。

    图9是本公开提供的一种数据存储装置的结构示意图。参见图9,该装置包括:

    第一写入???01,用于在接收到写数据请求之后,在数据缓存中不存在空闲缓存
    空间,且首个逻辑页的逻辑容量、一个闪存页的物理容量以及待写入数据的数据量均相等
    的情况下,将存储在首个逻辑页内的数据移出并写入到一个空闲闪存页,得到空闲缓存空
    间;其中,空闲缓存空间用于存储对应于写数据请求的待写入数据;首个逻辑页内逻辑存储
    的数据将早于数据缓存中其他逻辑页内逻辑存储的数据从数据输出端输出;

    第二写入???02,用于将待写入数据从数据输入端写入空闲缓存空间。

    本公开提供的装置,在接收到写数据请求后,若确定数据缓存中不存在可存储待
    写入数据的空闲缓存空间,则判断数据输出端首个逻辑页中的逻辑容量是否与一个所述闪
    存页的物理容量一致;若首个逻辑页中的逻辑容量与一个闪存页的物理容量一致,则首个
    逻辑页内的数据写入闪存中的一个空闲数据页,并将待写入数据写入得到的空闲缓存空
    间。由于将迷你页作为数据存储的最小单位,且可根据首个逻辑页中逻辑容量的大小来选
    择是使用迷你页级的地址映射还是页级的地址映射实现对数据的存储,方式更为灵活,不
    但可支持更细粒度的写入操作,而且不会出现数据写入的粒度与闪存页的物理容量不一致
    的情况,因此既可有效减少对存储空间的浪费,也可减少对固态硬盘中的空间回收的次数,
    提升了固态硬盘的性能,而且增加了固态硬盘的使用寿命。

    需要说明的是:上述实施例提供的数据存储装置在进行数据存储时,仅以上述各
    功能??榈幕纸芯倮得?,实际应用中,可以根据需要而将上述功能分配由不同的功
    能??橥瓿?,即将装置的内部结构划分成不同的功能???,以完成以上描述的全部或者部
    分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具
    体实现过程详见方法实施例,这里不再赘述。

    本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件
    来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读
    存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

    以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和
    原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的?;し段е?。

    关于本文
    本文标题:数据存储方法及装置.pdf
    链接地址://www.4mum.com.cn/p-6028167.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 彩票3d规律图形走势 网上正规的棋牌平台 青朋棋牌游戏下载 新疆时时彩开奖直播现场 山东老11选5预测 时时彩组三缩水软件 云南11选5走势图 福彩3d开奖号码 云南11选5选号技巧 极速快3网站 博远棋牌唯一官方网站 四川金7乐开奖工具走势图 组选号944历史开奖号 幸运赛车走势图 怎么破解加拿大快乐8 青海十一选五开奖走势图