Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR ACHIEVING DATA COPYING IN FTL OF SOLID STATE DRIVE, SYSTEM AND SOLID STATE DRIVE
Document Type and Number:
WIPO Patent Application WO/2019/015479
Kind Code:
A1
Abstract:
Disclosed in the present application are a method for achieving data copying in a flash translation layer (FTL) of a solid state drive, a system, and a solid state drive. The method comprises: maintaining an address mapping table for logical address (LA) to physical address (PA); maintaining an array or a linked table for a physical address PAdest that becomes a copy target, mappings from the physical address PAdest to a plurality of logical addresses LAi constituting a reverse address mapping table; maintaining the reverse address mapping table; receiving a duplication-free copy command that is sent by a software to a solid state drive, the duplication-free copy command comprising a copied source logical address LAsrc, a target logical address LAdest, and the number of data blocks requiring copying; according to the duplication-free copy command, modifying the address mapping table and the reverse address mapping table so as to point the target logical address LAdest to a physical address to which the source logical address LAsrc is mapped, thus completing duplication-free copying of data. The present application may greatly reduce unnecessary write operations in a solid state drive, reduce copying time, extend the service life of the solid state drive, and improve data reliability.

Inventors:
JIANG SONG (US)
YANG QING (CN)
Application Number:
PCT/CN2018/094548
Publication Date:
January 24, 2019
Filing Date:
July 04, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SHENZHEN DAPU MICROELECTRONICS CO LTD (CN)
International Classes:
G06F12/02
Foreign References:
CN107391391A2017-11-24
CN101533337A2009-09-16
CN1560746A2005-01-05
CN102622307A2012-08-01
US20140108752A12014-04-17
Attorney, Agent or Firm:
SHENZHEN TALENT PATENT SERVICE (CN)
Download PDF:
Claims:
权利要求书

[权利要求 1] 一种在固态硬盘的 FTL实现数据拷贝的方法, 其特征在于, 该方法包 括:

FTL维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷贝 目标的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址

PAdest的一个或多个逻辑地址 LAi, 其中 i=l、 2、 3 N, N≥l, 这 些从物理地址 PAdest到多个逻辑地址 LAi的映射组成一个反向地址映 射表, 维护该反向地址映射表, N称为映射计数; 接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令包 括拷贝的源逻辑地址 LAsrC、 目标逻辑地址 LAdest、 和需要拷贝的数 据块数量 M;

根据所述无复制拷贝命令对地址映射表和反向地址映射表进行修改, 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数据的无复制拷贝。

[权利要求 2] 根据权利要求 1所述的一种在固态硬盘的 FTL实现数据拷贝的方法, 其特征在于, 所述根据所述无复制拷贝命令对地址映射表和反向地址 映射表进行修改, 完成对数据的无复制拷贝包括:

FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个 物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsr c对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LA dest的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源 逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目 标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述地 址映射表中;

根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2 , PAsrc+2)、 、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表 中, 完成对数据的无复制拷贝。 [权利要求 3] 根据权利要求 1所述的一种在固态硬盘的 FTL实现数据拷贝的方法, 其特征在于, 接收软件发送给固态硬盘的无复制拷贝命令具体为: 接 收软件通过一个操作系统调用发送给固态硬盘的无复制拷贝命令。

[权利要求 4] 根据权利要求 1所述的一种在固态硬盘的 FTL实现数据拷贝的方法, 其特征在于, 在所述这些从物理地址 PAdest到多个逻辑地址 LAi的映 射组成一个反向地址映射表, 维护该反向地址映射表, N称为映射计 数之后还包括: FTL在进行垃圾收集、 静态磨损平衡吋, 若涉及的逻 辑地址或物理地址在所述反向地址映射表中, 则对地址映射表和反向 地址映射表进行相应的更新。

[权利要求 5] —种在固态硬盘的 FTL实现数据拷贝的系统, 其特征在于, 该系统包 括:

映射表维护模块, 维护一张逻辑地址 LA到物理地址 PA的地址映射表 ; 对成为拷贝目标的物理地址 PAdest维护一个数组或链表, 以记录映 射到物理地址 PAdest的一个或多个逻辑地址 LAi, 其中 i=l、 2、 3......

N, N≥l, 这些从物理地址 PAdest到多个逻辑地址 LAi的映射组成一个 反向地址映射表, 维护该反向地址映射表, N称为映射计数; 命令接收模块, 用于接收软件发送给固态硬盘的无复制拷贝命令, 所 述无复制拷贝命令包括拷贝的源逻辑地址 LAsrC、 目标逻辑地址 LAde st、 和需要拷贝的数据块数量 M;

修改模块, 用于根据所述无复制拷贝命令对地址映射表和反向地址映 射表进行修改, 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射 到的物理地址, 完成对数据的无复制拷贝。

[权利要求 6] 根据权利要求 5所述的一种在固态硬盘的 FTL实现数据拷贝的系统, 其特征在于, 所述修改模块具体用于:

査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个物理 地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对 应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LAdest 的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将 在物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源逻 辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标 逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述地址 映射表中;

根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2 , PAsrc+2)、 、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表 中, 完成对数据的无复制拷贝。

[权利要求 7] 根据权利要求 5所述的一种在固态硬盘的 FTL实现数据拷贝的系统, 其特征在于, 所述接收软件发送给固态硬盘的无复制拷贝命令具体为 : 接收软件通过一个操作系统调用发送给固态硬盘的无复制拷贝命令

[权利要求 8] 根据权利要求 5所述的一种在固态硬盘的 FTL实现数据拷贝的系统, 其特征在于, 所述修改模块还用于: 在进行垃圾收集、 静态磨损平衡 吋, 若涉及的逻辑地址或物理地址在所述反向地址映射表中, 则对地 址映射表和反向地址映射表进行相应的更新。

[权利要求 9] 一种固态硬盘, 其特征在于, 所述固态硬盘的 FTL用于执行以下步骤 维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷贝目标 的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAd est的一个或多个逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从 物理地址 PAdest到多个逻辑地址 LAi的映射组成一个反向地址映射表 , 维护该反向地址映射表, N称为映射计数;

接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令包 括拷贝的源逻辑地址 LAsrc、 目标逻辑地址 LAdest、 和需要拷贝的数 据块数量 M;

根据所述无复制拷贝命令对地址映射表和反向地址映射表进行修改, 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数据的无复制拷贝。 [权利要求 10] 根据权利要求 9所述的一种固态硬盘, 其特征在于, 所述根据所述无 复制拷贝命令对地址映射表和反向地址映射表进行修改, 完成对数据 的无复制拷贝包括:

FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个 物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsr c对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LA dest的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源 逻辑地址 LAsrc对应的的物理地址 PAsrc , 并将物理地址 PAsrc作为目 标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述地 址映射表中;

根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2 , PAsrc+2)、 、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表 中, 完成对数据的无复制拷贝。

Description:
[0001] 本申请是以申请号为 201710591084.4、 申请日为 2017年 7月 19日的中国专利申请 为基础, 并主张其优先权, 该申请的全部内容在此作为整体引入本申请中 。

[0002] 技术领域

[0003] 本申请涉及固态硬盘技术领域, 尤其涉及一种在固态硬盘的 FTL实现数据拷贝 的方法、 系统及固态硬盘。

[0004] 背景技术

[0005] 固态硬盘 (Solid State Drives, SSD) 的 FTL (Flash translation layer, 闪存转换 层) 是固态硬盘的设计核心, 目前的固态硬盘中的 FTL不提供支持内部数据复制 命令的实现, 更不提供零数据复制的支持, 它只直接支持 READ、 WRITE. 和 T RIM等基本的命令, 相应地, 它只实现了地址映射、 垃圾回收、 数据读写和磨损 平衡等基本的功能。

[0006] 现有的固态硬盘对现有的应用和系统程序大量 使用的数据复制需求无法满足, 需要主机上的 CPU和内存参与数据的物理复制, 包括实际从固态硬盘的读出和到 固态硬盘的写入。 但是这种做法存在着两个不足: (一) 物理的数据复制导致 复制耗吋过长, 浪费了固态硬盘的读写带宽和 CPU的吋间; (二) 为了保证数据 的持久性和一致性, 在写操作之后往往要想固态硬盘发出 FLUSH命令, 但是 FL USH命令很耗吋, 会降低固态硬盘的性能, 而且对固态硬盘的写操作会导致固 态硬盘的寿命缩短。

[0007] 申请内容

[0008] 本申请所要解决的技术问题在于提供了一种在 固态硬盘的 FTL实现数据拷贝的 方法、 系统及固态硬盘, 大大地减少了固态硬盘中不必要的写操作, 从而降低 了拷贝吋间、 延长了固态硬盘的使用寿命、 提高了数据可靠性。

[0009] 为解决上述技术问题, 本申请采用以下技术方案:

[0010] 一方面, 提供了一种在固态硬盘的 FTL实现数据拷贝的方法, 该方法包括: [0011] FTL维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷贝目标的物 理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAdest的一个或多个 逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PAdest到多个逻辑 地址 LAi的映射组成一个反向地址映射表, 维护该反向地址映射表, N称为映射 计数;

[0012] 接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令包括拷贝的 源逻辑地址 LAsrc、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量 M;

[0013] 根据所述无复制拷贝命令对地址映射表和反向 地址映射表进行修改, 以将目标 逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数据的无复制 拷贝。

[0014] 其中, 所述根据所述无复制拷贝命令对地址映射表和 反向地址映射表进行修改 , 完成对数据的无复制拷贝包括:

[0015] FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 P Asrc , 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest , PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地 址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述 地址映射表中;

[0016] 根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2, PAsrc+2) 、 ......、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表中, 完成对数据的无复 制拷贝。

[0017] 其中, 接收软件发送给固态硬盘的无复制拷贝命令具 体为: 接收软件通过一个 操作系统调用发送给固态硬盘的无复制拷贝命 令。

[0018] 其中, 在所述这些从物理地址 PAdest到多个逻辑地址 LAi的映射组成一个反向 地址映射表, 维护该反向地址映射表, N称为映射计数之后还包括: FTL在进行 垃圾收集、 静态磨损平衡吋, 若涉及的逻辑地址或物理地址在所述反向地址 映 射表中, 则对地址映射表和反向地址映射表进行相应的 更新。 [0019] 第二方面, 提供了一种在固态硬盘的 FTL实现数据拷贝的系统, 该系统包括: [0020] 映射表维护模块, 维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为 拷贝目标的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAdest 的一个或多个逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PAde st到多个逻辑地址 LAi的映射组成一个反向地址映射表, 维护该反向地址映射表 , N称为映射计数;

[0021] 命令接收模块, 用于接收软件发送给固态硬盘的无复制拷贝命 令, 所述无复制 拷贝命令包括拷贝的源逻辑地址 LAsr C 、 目标逻辑地址 LAdest、 和需要拷贝的数 据块数量 M;

[0022] 修改模块, 用于根据所述无复制拷贝命令对地址映射表和 反向地址映射表进行 修改, 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成 对数据的无复制拷贝。

[0023] 其中, 所述修改模块具体用于:

[0024] 査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个物理地址 PAde st上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 PAsrc , 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PA src) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪存页作废掉, 在所 述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地址 P Asrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述地 址映射表中;

[0025] 根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2, PAsrc+2) 、 ......、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表中, 完成对数据的无复 制拷贝。

[0026] 其中, 接收软件发送给固态硬盘的无复制拷贝命令具 体为: 接收软件通过一个 操作系统调用发送给固态硬盘的无复制拷贝命 令。

[0027] 其中, 所述修改模块还用于: 在进行垃圾收集、 静态磨损平衡吋, 若涉及的逻 辑地址或物理地址在所述反向地址映射表中, 则对地址映射表和反向地址映射 表进行相应的更新。 [0028] 第三方面提供了一种固态硬盘, 该固态硬盘的 FTL用于执行以下步骤:

[0029] 维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷贝目标的物理地 址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAdest的一个或多个逻辑 地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PAdest到多个逻辑地址

LAi的映射组成一个反向地址映射表, 维护该反向地址映射表, N称为映射计数

[0030] 接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令包括拷贝的 源逻辑地址 LAsrc、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量 M;

[0031] 根据所述无复制拷贝命令对地址映射表和反向 地址映射表进行修改, 以将目标 逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数据的无复制 拷贝。

[0032] 其中, 所述根据所述无复制拷贝命令对地址映射表和 反向地址映射表进行修改 , 完成对数据的无复制拷贝包括:

[0033] FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到一个物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 P Asrc , 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest , PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地 址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述 地址映射表中;

[0034] 根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2, PAsrc+2) 、 ......、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表中, 完成对数据的无复 制拷贝。

[0035] 与现有技术相比, 本申请的有益效果为: 本申请通过维护一张逻辑地址 LA到 物理地址 PA的地址映射表、 以及一张由物理地址 PAdest与多个逻辑地址 LAi的映 射关系组成的反向地址映射表, 当固态硬盘需要拷贝的吋候, 根据无复制拷贝 命令中的源逻辑地址 LAsrc、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量对 地址映射表和反向地址映射表进行修改, 将拷贝的目标逻辑地址指向源逻辑地 址映射到的物理逻辑地址即可, 这样对该目标逻辑地址的访问就会获得和源逻 辑地址一样的数据, 数据不需要作物理拷贝, 大大地减少了固态硬盘中不必要 的写操作, 从而降低了拷贝吋间、 延长了固态硬盘的使用寿命、 提高了数据可 靠性。

[0036] 附图说明

[0037] 为了更清楚地说明本申请实施例中的技术方案 , 下面将对本申请实施例描述中 所需要使用的附图作简单的介绍, 显而易见地, 下面描述中的附图仅仅是本申 请的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提 下, 还可以根据本申请实施例的内容和这些附图获 得其他的附图。

[0038] 图 1是本申请具体实施方式中提供的一种在固态 盘的 FTL实现数据拷贝的方 法的实施例的方法流程图。

[0039] 图 2是本申请具体实施方式中提供的一种在固态 盘的 FTL实现数据拷贝的 方法的另一实施例的方法流程图。

[0040] 图 3是本申请具体实施方式中提供的一种在固态 盘的 FTL实现数据拷贝的系 统的实施例的结构框图。

[0041] 具体实施方式

[0042] 为使本申请解决的技术问题、 采用的技术方案和达到的技术效果更加清楚, 下 面将结合附图对本申请实施例的技术方案作进 一步的详细描述, 显然, 所描述 的实施例仅仅是本申请一部分实施例, 而不是全部的实施例。 基于本申请中的 实施例, 本领域技术人员在没有作出创造性劳动前提下 所获得的所有其他实施 例, 都属于本申请保护的范围。

[0043] 下面结合附图 1~2对本申请实施例提供的一种在固态硬盘的 FTL实现数据拷贝 的方法作进一步的详细描述。 请参考图 1, 其是本申请具体实施方式中提供的一 种在固态硬盘的 FTL实现数据拷贝的方法的第一实施例的方法流 程图。 如图 1所 示, 在一些实施例中, 该方法包括步骤 S101〜步骤 S103, 具体如下:

[0044] 步骤 S 101 : FTL维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷 贝目标的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAdest的 一个或多个逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PAdest 到多个逻辑地址 LAi的映射组成一个反向地址映射表, 维护该反向地址映射表, N称为映射计数。

[0045] 步骤 S102: 接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令 包括拷贝的源逻辑地址 LAsrc、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量 M, M为正整数。

[0046] 在一些实施例中, 所述软件包括主机中的应用程序和操作系统中 的系统软件。

接收软件发送给固态硬盘的无复制拷贝命令具 体为: 接收软件通过一个操作系 统调用发送给固态硬盘的无复制拷贝命令, 这是针对应用程序来说的, 应用程 序需要通过操作系统调用把无复制拷贝命令发 送给 FTL。

[0047] 步骤 S103: 根据所述无复制拷贝命令对地址映射表和反向 地址映射表进行修改 , 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数 据的无复制拷贝。

[0048] 在一些优选的实施例中, 步骤 S103: 根据所述无复制拷贝命令对地址映射表和 反向地址映射表进行修改, 完成对数据的无复制拷贝包括:

[0049] 步骤 S1031 : FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到 一个物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对应 的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪 存页作废掉 (若为物理页地址, 则将在物理页地址上的闪存页作废掉, 需要说 明的是闪存不支持直接的页修改或刪除。 只能先标记该页为无用页, 以后再以 更大的数据单位擦除, 擦除以后该位置才可重新写) , 在所述地址映射表上査 出源逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑 地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入所述地址映射表中。

[0050] 反向地址映射表不能因为突然掉电等事故原因 丢失, 需要用超级电容或电池的 有限电力在事故发生后紧急写回。 考虑到有限电力只能讲少量的数据写回, 并 且 SSD内的 DRAM容量有限, 反向地址映射表需要限制在一定的大小以内, 为此 , 可通过采取以下两种方法缩小反向地址映射表 : (1) 定期将其写回, 确保在 DRAM中的脏页的大小在容许的范围内; (2) 定期将映射计数为 1的表项从反 向地址映射表中刪除。 如果有必要, 将与映射计数 N≥l的物理页相联的逻辑页分 别写到不同的物理页上, 从而将它们的映射计数降成 1并被刪除。

[0051] 步骤 S1032: 根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest +2, PAsrc+2)、 、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表中, 完成 对数据的无复制拷贝。

[0052] 图 2是本申请具体实施方式中提供的一种在固态 盘的 FTL实现数据拷贝的方 法的另一实施例的方法流程图, 如图 2所示, 作为一个实施例, 在所述这些从物 理地址 PAdest到多个逻辑地址 LAi的映射组成一个反向地址映射表, 维护该反向 地址映射表, N称为映射计数之后还包括步骤 S104: FTL在进行垃圾收集、 静态 磨损平衡吋, 若涉及的逻辑地址或物理地址在所述反向地址 映射表中, 则对地 址映射表和反向地址映射表进行相应的更新。 这样当逻辑地址与物理地址的映 射关系发生变化吋, 能及吋对地址映射表和反地址映射表进行更新 , 以保证后 续实现数据复制吋的准确性。

[0053] 作为一个实施例 FTL维护一张逻辑块地址 LBA到物理块地址 PBA的地址映射表 ; FTL査找所述地址映射表判断目标块地址 LBAdest是否已映射到一个物理块地 址 PBAdest上, 若否, 在所述地址映射表上査出与目标块地址 LBAdest对应的源 地址 LB Asrc的物理地址 PB Asrc, 并将物理地址 PB Asrc作为目标逻辑块地址 LB Ad est的物理块地址, 即将 (LBAdest, PBAsrc) 写入地址映射表中; 若是, 将在物 理块地址 PBAdest上的闪存块作废掉, 在所述地址映射表上査出与目标逻辑块地 址 LBAdest对应的源逻辑块地址 LB Asrc的物理块地址 PBAsrc, 并将物理块地址 P BAsrc作为目标逻辑块地址 LBAdest的物理块地址, 即将 (LBAdest, PBAsrc) 写 入表中; 对成为拷贝目标的物理块地址 PBAdest维护一个数组或链表, 以记录映 射到物理块地址 PBAdest的一个或多个逻辑块地址 LBAi, 其中 i=l、 2、 3...... N,

N> 1, 物理块地址 PBAdest与多个逻辑块地址 LB Ai的映射关系组成一个反向地址 映射表, N称为映射计数, 每个在反向地址映射表中的物理块地址 PBAdest都维 护一个映射计数N。

[0054] 在本实施例中, 拷贝的源数据和目标数据是一样的, 数据不用作物理拷贝, 只 需修改有关地址的映射关系就可以, 具体作法是: 将拷贝的目标逻辑地址指向 源逻辑地址映射到的物理逻辑地址即可, 这样对该目标逻辑地址的访问就会获 得和源逻辑地址一样的数据, 从功能上看就有了拷贝的效果。 需要澄清的是, S SD的使用 (读或写) 是一定的数据大小为读写单位 (比如 4KB) 为单位的, 这 个单位通常称为块。 在 SSD的内部管理中也是以一定的数据单位从其内 部的闪存 读写数据的, 这个单位通常称为页。 这两个单位可能不一样大, 但不影响我们 的设计。 所以为理解方便, 可以认为它们一样大。

[0055] 在一些实施例中, 零数据复制的无复制拷贝命令可以通过一个操 作系统调用提 供给应用程序, 大量的各种应用和系统程序可以使用这个操作 系统调用或无复 制拷贝命令极大地提高性能, 将原来的由读写两个步骤实现的数据在固态硬 盘 上的物理拷贝替换成一个无复制拷贝的系统调 用或无复制拷贝命令就可以。 无 复制拷贝命令可应用于以下应用场景: 1.数据库或文件系统中日志操作; 2.在支 持 Container虚拟执行环境的 OverlayFS/UnionFS中文件写操作; 3.固态硬盘全盘的 去碎片化操作; 4.在文件中增加或减少块的操作; 5.实现块级别的去冗余的软 件。 使用无复制拷贝可以大大提高软件的性能, 除了提供 I/O性能外, 还大大减 少了固态硬盘闪存内的不必要的写操作, 从而大大地延长了固态硬盘存储器的 使用寿命和提高数据的可靠性。

[0056] 综上所述, 本实施例通过维护一张逻辑地址 LA到物理地址 PA的地址映射表、 以及一张由物理地址 PAdest与多个逻辑地址 LAi的映射关系组成的反向地址映射 表, 当固态硬盘需要拷贝的吋候, 根据无复制拷贝命令中的源逻辑地址 LAsr C 、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量对地址映射表和反向 地址映射表 进行修改, 将拷贝的目标逻辑地址指向源逻辑地址映射到 的物理逻辑地址即可 , 这样对该目标逻辑地址的访问就会获得和源逻 辑地址一样的数据, 数据不需 要作物理拷贝, 大大地提高了 I/O性能, 大大地减少了固态硬盘中不必要的写操 作, 从而降低了拷贝吋间、 延长了固态硬盘的使用寿命、 提高了数据可靠性。

[0057] 以下是本申请具体实施方式中提供的一种在固 态硬盘的 FTL实现数据拷贝的系 统的实施例, 系统的实施例基于上述的方法的实施例实现, 在系统中未尽的描 述, 请参考前述方法的实施例。

[0058] 请参考图 3, 其是本申请具体实施方式中提供的一种在固态 硬盘的 FTL实现数 据拷贝的系统的实施例的结构方框图。 如图 3所示, 该系统包括:

[0059] 映射表维护模块 10, 维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成 为拷贝目标的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAd est的一个或多个逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PA dest到多个逻辑地址 LAi的映射组成一个反向地址映射表, 维护该反向地址映射 表, N称为映射计数。

[0060] 命令接收模块 20, 用于接收软件发送给固态硬盘的无复制拷贝命 令, 所述无复 制拷贝命令包括拷贝的源逻辑地址 LAsr C 、 目标逻辑地址 LAdest、 和需要拷贝的 数据块数量 M, M为正整数。 在一些实施例中, 所述软件包括主机中的应用程序 和操作系统中的系统软件。 接收软件发送给固态硬盘的无复制拷贝命令具 体为 : 接收软件通过一个操作系统调用发送给固态硬 盘的无复制拷贝命令, 这是针 对应用程序来说的, 应用程序需要通过操作系统调用把无复制拷贝 命令发送给 F TL。

[0061] 修改模块 30, 用于根据所述无复制拷贝命令对地址映射表和 反向地址映射表进 行修改, 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完 成对数据的无复制拷贝。

[0062] 在一些实施例中, 修改模块 30具体用于: 査找所述地址映射表判断目标逻辑地 址 LAdest是否已映射到一个物理地址 PAdest上, 若否, 在所述地址映射表上査出 源逻辑地址 LAsrc对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地 址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将在 物理地址 PAdest上的闪存页作废掉, 在所述地址映射表上査出源逻辑地址 LAsrc 对应的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地 址, 即将 (LAdest, PAsrc) 写入所述地址映射表中; 根据需要拷贝的数据块数 量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest+2, PAsrc+2)、 、 (LAdest+M-1 , P

Asrc+M-1)写入所述地址映射表中, 完成对数据的无复制拷贝。

[0063] 在一些实施例中, 修改模块 30还用于: 在进行垃圾收集、 静态磨损平衡吋, 若 涉及的逻辑地址或物理地址在所述反向地址映 射表中, 则对地址映射表和反向 地址映射表进行相应的更新。 [0064] 综上所述, 本实施例提供的在固态硬盘的 FTL实现数据拷贝的系统通过维护一 张逻辑地址 LA到物理地址 PA的地址映射表、 以及一张由物理地址 PAdest与多个 逻辑地址 LAi的映射关系组成的反向地址映射表, 当固态硬盘需要拷贝的吋候, 根据无复制拷贝命令中的源逻辑地址 LAsr C 、 目标逻辑地址 LAdest、 和需要拷贝 的数据块数量对地址映射表和反向地址映射表 进行修改, 将拷贝的目标逻辑地 址指向源逻辑地址映射到的物理逻辑地址即可 , 这样对该目标逻辑地址的访问 就会获得和源逻辑地址一样的数据, 数据不需要作物理拷贝, 大大地提高了 I/O 性能, 大大地减少了固态硬盘中不必要的写操作, 从而降低了拷贝吋间、 延长 了固态硬盘的使用寿命、 提高了数据可靠性。

[0065] 本申请实施例还提供了一种固态硬盘, 该固态硬盘的 FTL用于执行上述方法实 施例中的步骤 S101~步骤 S103, 具体如下:

[0066] 步骤 S 101 : 维护一张逻辑地址 LA到物理地址 PA的地址映射表; 对成为拷贝目 标的物理地址 PAdest维护一个数组或链表, 以记录映射到物理地址 PAdest的一个 或多个逻辑地址 LAi, 其中 i=l、 2、 3...... N, N≥l, 这些从物理地址 PAdest到多 个逻辑地址 LAi的映射组成一个反向地址映射表, 维护该反向地址映射表, N称 为映射计数。

[0067] 步骤 S102: 接收软件发送给固态硬盘的无复制拷贝命令, 所述无复制拷贝命令 包括拷贝的源逻辑地址 LAsr C 、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量 M, M为正整数。

[0068] 步骤 S103: 根据所述无复制拷贝命令对地址映射表和反向 地址映射表进行修改 , 以将目标逻辑地址 LAdest指向源逻辑地址 LAsrc映射到的物理地址, 完成对数 据的无复制拷贝。

[0069] 在一些优选的实施例中, 步骤 S103: 根据所述无复制拷贝命令对地址映射表和 反向地址映射表进行修改, 完成对数据的无复制拷贝包括步骤 S1031-步骤 S1032 , 具体如下:

[0070] 步骤 S1031 : FTL査找所述地址映射表判断目标逻辑地址 LAdest是否已映射到 一个物理地址 PAdest上, 若否, 在所述地址映射表上査出源逻辑地址 LAsrc对应 的的物理地址 PAsrc, 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PAsrc) 写入地址映射表中; 若是, 将在物理地址 PAdest上的闪 存页作废掉, 在所述地址映射表上査出源逻辑地址 LAsrc对应的的物理地址 PAsrc , 并将物理地址 PAsrc作为目标逻辑地址 LAdest的物理地址, 即将 (LAdest, PA src) 写入所述地址映射表中。

[0071] 步骤 S1032: 根据需要拷贝的数据块数量 M, 将 (LAdest+l, PAsrc+l)、 (LAdest

+2, PAsrc+2)、 、 (LAdest+M-1 , PAsrc+M-1)写入所述地址映射表中, 完成 对数据的无复制拷贝。

[0072] 本实施例提供的固态硬盘还用于执行上述的方 法的实施例的其他步骤和内容, 在固态硬盘中未尽的描述, 请参考前述方法的实施例。

[0073] 本实施例提供的固态硬盘通过维护一张逻辑地 址 LA到物理地址 PA的地址映射 表、 以及一张由物理地址 PAdest与多个逻辑地址 LAi的映射关系组成的反向地址 映射表, 当固态硬盘需要拷贝的吋候, 根据无复制拷贝命令中的源逻辑地址 LAs rc、 目标逻辑地址 LAdest、 和需要拷贝的数据块数量对地址映射表和反向 地址映 射表进行修改, 将拷贝的目标逻辑地址指向源逻辑地址映射到 的物理逻辑地址 即可, 这样对该目标逻辑地址的访问就会获得和源逻 辑地址一样的数据, 数据 不需要作物理拷贝, 大大地提高了 I/O性能, 大大地减少了固态硬盘中不必要的 写操作, 从而降低了拷贝吋间、 延长了固态硬盘的使用寿命、 提高了数据可靠 性。

[0074] 以上结合具体实施例描述了本申请的技术原理 。 这些描述只是为了解释本申请 的原理, 而不能以任何方式解释为对本申请保护范围的 限制。 基于此处的解释 , 本领域的技术人员不需要付出创造性的劳动即 可联想到本申请的其它具体实 施方式, 这些方式都将落入本申请的保护范围之内。

技术问题

问题的解决方案

发明的有益效果