CN105408961A - 数据存储方法、装置和非易失性存储器 - Google Patents

数据存储方法、装置和非易失性存储器 Download PDF

Info

Publication number
CN105408961A
CN105408961A CN201480003810.0A CN201480003810A CN105408961A CN 105408961 A CN105408961 A CN 105408961A CN 201480003810 A CN201480003810 A CN 201480003810A CN 105408961 A CN105408961 A CN 105408961A
Authority
CN
China
Prior art keywords
block
write
sub
data block
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480003810.0A
Other languages
English (en)
Other versions
CN105408961B (zh
Inventor
沙行勉
石亮
朱冠宇
王元钢
诸葛晴凤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105408961A publication Critical patent/CN105408961A/zh
Application granted granted Critical
Publication of CN105408961B publication Critical patent/CN105408961B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例提供一种数据存储方法、装置和非易失性存储器,NVM控制器将待写入数据块和写回数据块分块,通过将每个待写入数据块的子数据块与每个写回数据块的子数据块进行比较,以获得待写入数据块的每个子数据块的写入能耗,并根据待写入数据块的每个子数据块的写入能耗确定待写入数据块的最小写入能耗对应的写入关系,根据最小写入能耗对应的写入关系将待写入数据块的子数据块写入NVM。所述方法通过比较选取写入能耗最小的对应关系,将待写入数据块的子数据块写入NVM,从而能够使NVM的写入能耗降低到最低。

Description

数据存储方法、 装置和非易失性存储器
技术领域
本发明实施例涉及数据通信技术, 尤其涉及一种数据存储方法、 装置和 非易失性存储器。 背景技术
非易失性存储器(Non- Volatile Memory, 简称 NVM)的特点是在断电时 存储的数据不会丢失。 常见的 NVM有闪速存储器(Flash Memory)、 相变存 储器 (phase change memory, 简称 PCM) 、 铁电动态随机存取存储器 (Fe Random Access Memory, 简称 FRAM)等。在 NVM的应用中, 不管是 NVM 的复位 (RESET) 操作 (即写 1操作) , 还是置位 (SET) 操作 (即写 0操 作) , NVM的单次写入能耗比读能耗高 10-100倍左右, 而 NVM在工作过 程中需要不断执行写操作或者擦除操作, 因此, 减少 NVM的写次数可以降 低 NVM系统的能耗。
现有技术提出了一种 Flip-N-Write 的方法, 用于减少内存的写次数。 该 方法中内存控制器首先通过一个读操作将待写数据从内存中读取到寄存器, 然后将待写数据的一个待写数据字节与写回数据的一个写回数据字节按比特 位进行异或运算。 假设一个字节的大小为 N比特, 若异或结果中 0的个数大 于 N/2 (即写回数据字节和待写数据字节大部分相同) , 内存控制器更新该 待写数据字节中不相同的数据。 若异或结果中 0的个数小于等于 N/2 (即写 回数据字节和待写数据字节大部分不同) , 内存控制器先对该待写数据字节 进行数据翻转,即将待写数据字节中的数据由 0变为 1或由 1变为 0,然后, 内存控制器更新该待写数据字节中相同的数据, 由于该待写数据字节中相同 的数据多于不同的数据, 进一歩减少了更新次数。 该方法中还需要为每个字 节增加一个标识位, 该标识位用来表示对应字节的数据是否发生翻转, 例如 用 0表示翻转, 1表示没有翻转, 在将待写数据写入内存时将该字节的标识 位写入该字节的后面, 当从内存中读取该字节时, 可以根据该字节的标识位 确定是否需要对读取到的字节进行数据翻转, 若该字节在存储时进行了数据 翻转, 那么需要对读取到的字节进行数据翻转才能正确的还原数据。
现有技术的方案可以在一定程度上降低 NVM的写次数, 从而降低 NVM 的能耗, 但是该方案中每个字节都需要额外的一位标识位来还原数据, 额外 信息占的存储比例较大, 当将现有技术的方法应用于外存时, 大量的数据会 占用更多的额外存储空间。 发明内容
本发明实施例提供一种数据存储方法、装置和非易失性存储器, 能够减 少 NVM的写入能耗。
本发明第一方面提供一种数据存储方法, 所述方法应用于非易失性存 储器 NVM中, 所述方法包括:
接收写请求, 所述写请求中包含有待写入数据块以及地址;
分别将所述待写入数据块以及缓存中与所述地址对应的写回数据块 平均划分为 N个子数据块, 其中, N为不小于 2的正整数;
将所述每个待写入数据块的子数据块与所述每个写回数据块的子数 据块进行比较, 以获得所述待写入数据块的每个子数据块的写入能耗; 根据所述待写入数据块的每个子数据块的写入能耗确定所述待写入 数据块的最小写入能耗对应的写入关系, 其中, 所述写入关系包括所述待 写入数据块的子数据块与所述写回数据块的子数据块的对应关系;
根据所述地址以及所述写入关系将所述待写入数据块的子数据块写 入所述 NVM。
结合本发明第一方面, 在本发明第一方面的第一种可能的实现方式中, 所述将所述每个待写入数据块的子数据块与所述每个写回数据块的子数 据块进行比较, 以获得所述待写入数据块的每个子数据块的写入能耗, 包 括:
分别将所述每个待写入数据块的子数据块与所述每个写回数据块的 子数据块进行比较, 以获得每一次比较过程中所述待写入数据块的每个子 数据块的写 0次数和写 1次数, 其中, 所述每一次比较过程包括所述待写 入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程; 根据所述待写入数据块的每个子数据块在每一次比较过程中的写 0次 数、 写 1次数以及预设的单次写 0能耗和单次写 1能耗计算所述待写入数 据块的每个子数据块在每一次比较过程中的写入能耗。
结合本发明第一方面以及第一方面的第一种可能的实现方式, 在本发 明第一方面的第二种可能的实现方式中, 所述根据所述待写入数据块的每 个子数据块的写入能耗确定所述待写入数据块的最小写入能耗对应的写 入关系, 包括:
以所述待写入数据块的每个子数据块以及所述写回数据块的每个子 数据块为顶点构造二分图, 所述二分图的各边权值为所述各边对应的待写 入数据块的子数据块在一次比较过程中的写入能耗, 其中, 所述待写入数 据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子 数据块写入所述写回数据块的一个子数据块的写入能耗;
确定所述二分图的最佳匹配, 所述最佳匹配满足如下条件: 各边的权 值总和最小, 覆盖所述二分图的所有顶点, 任意两条边没有共同的顶点; 将所述最佳匹配作为所述最小写入能耗对应的写入方式。
结合本发明第一方面以及第一方面的第一种和第二种可能的实现方 式, 在本发明第一方面的第三种可能的实现方式中, 所述根据所述地址以 及所述写入关系将所述待写入数据块的子数据块写入所述 NVM, 包括: 根据所述地址以及所述写回数据块的每个子数据块的大小计算所述 写回数据块的每个子数据块的地址;
根据所述写入关系和所述写回数据块的每个子数据块的地址将所述 待写入数据块的子数据块写入所述 NVM。
结合本发明第一方面以及第一方面的第一种至第三种可能的实现方 式, 在本发明第一方面的第四种可能的实现方式中, 所述根据所述地址以 及所述写入关系将所述待写入数据块的子数据块写入所述 NVM之后, 还 包括:
将所述写入关系写入所述 NVM, 以便从所述 NVM读取所述待写入 数据块的子数据块时, 根据所述写入关系恢复所述待写入数据块。
本发明第二方面提供一种数据存储装置, 包括:
接收模块, 用于接收写请求, 所述写请求中包含有待写入数据块以及 地址; 划分模块, 用于分别将所述待写入数据块以及缓存中与所述地址对应 的写回数据块平均划分为 N个子数据块, 其中, N为不小于 2的正整数; 获取模块, 用于将所述每个待写入数据块的子数据块与所述每个写回 数据块的子数据块进行比较, 以获得所述待写入数据块的每个子数据块的 写入能耗;
确定模块, 用于根据所述待写入数据块的每个子数据块的写入能耗确 定所述待写入数据块的最小写入能耗对应的写入关系, 其中, 所述写入关 系包括所述待写入数据块的子数据块与所述写回数据块的子数据块的对 应关系;
写入模块, 用于根据所述地址以及所述写入关系将所述待写入数据块 的子数据块写入非易失性存储器 NVM。
结合本发明第二方面, 在本发明第二方面的第一种可能的实现方式中, 所述获取模块具体用于:
分别将所述每个待写入数据块的子数据块与所述每个写回数据块的 子数据块进行比较, 以获得每一次比较过程中所述待写入数据块的每个子 数据块的写 0次数和写 1次数, 其中, 所述每一次比较过程包括所述待写 入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程; 根据所述待写入数据块的每个子数据块在每一次比较过程中的写 0次 数、 写 1次数以及预设的单次写 0能耗和单次写 1能耗计算所述待写入数 据块的每个子数据块在每一次比较过程中的写入能耗。
结合本发明第二方面以及第二方面的第一种可能的实现方式, 在本发 明第二方面的第二种可能的实现方式中, 所述确定模块具体用于:
以所述待写入数据块的每个子数据块以及所述写回数据块的每个子 数据块为顶点构造二分图, 所述二分图的各边权值为所述各边对应的待写 入数据块的子数据块在一次比较过程中的写入能耗, 其中, 所述待写入数 据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子 数据块写入所述写回数据块的一个子数据块的写入能耗;
确定所述二分图的最佳匹配, 所述最佳匹配满足如下条件: 各边的权 值总和最小, 覆盖所述二分图的所有顶点, 任意两条边没有共同的顶点; 将所述最佳匹配作为所述最小写入能耗对应的写入方式。 结合本发明第二方面以及第二方面的第一种和第二种可能的实现方 式, 在本发明第二方面的第三种可能的实现方式中, 所述写入模块具体用 于:
根据所述地址以及所述写回数据块的每个子数据块的大小计算所述 写回数据块的每个子数据块的地址;
根据所述写入关系和所述写回数据块的每个子数据块的地址将所述 待写入数据块的子数据块写入所述 NVM。
结合本发明第二方面以及第二方面的第一种至第三种可能的实现方 式,在本发明第二方面的第四种可能的实现方式中,所述写入模块还用于: 将所述写入关系写入所述 NVM, 以便从所述 NVM读取所述待写入数据 块的子数据块时, 根据所述写入关系恢复所述待写入数据块。
本发明第三方面提供一种非易失性存储器 NVM, 包括: 存储介质、 NVM控制器和通信接口;
所述通信接口, 用于接收写请求;
所述 NVM控制器, 用于执行本发明第一方面以及第一方面的第一种 至第四种可能的实现方式所提供的方法;
所述存储介质, 用于存储数据。
本发明实施例的数据存储方法、 装置和非易失性存储器, NVM控制器 将待写入数据块和写回数据块分块, 通过将每个待写入数据块的子数据块 与每个写回数据块的子数据块进行比较, 以获得待写入数据块的每个子数 据块的写入能耗, 并根据待写入数据块的每个子数据块的写入能耗确定待 写入数据块的最小写入能耗对应的写入关系, 根据最小写入能耗对应的写 入关系将待写入数据块的子数据块写入 NVM。 所述方法通过比较选取写 入能耗最小的对应关系, 将待写入数据块的子数据块写入 NVM, 从而能 够使 NVM的写入能耗降低到最低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对 实施例或现有技术描述中所需要使用的附图作一简单地介绍。
图 1为本发明实施例提供的一种计算机的硬件结构示意图;
图 2为本发明实施例提供的另一种计算机的硬件结构示意; 图 3为本发明实施例提供的一种数据存储方法的流程图; 图 4为待写入数据块和写回数据块的一种写入关系的示意图; 图 5为本发明实施例提供的一种确定最小写入能耗对应的写入关系的 流程图;
图 6为本发明实施例提供的数据存储装置的结构示意图;
图 7为本发明实施例提供的一种 NVM的结构示意图。 具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本 发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描 述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明实施例的方法以 NVM作为外存使用的场景为例进行说明, 图 1为本发明实施例提供的一种计算机的硬件结构示意图, 如图 1所示, 该 计算机包括:主板 11、中央处理单元(Central Processing Unit,简称 CPU) 12、 内存 (Memory) 13、 NVM14和外存 15。 其中, CPU12、 内存 13和 NVM14集成在主板 11上, CPU12和内存 13通过总线连接并通信。 常用 的 NVM有 PCM、 Flash, FRAM以及 NAND等, NVM14包括:存储介质、 NVM控制器以及通信接口, 存储介质用于存储数据, NVM控制器可通过 现场可编程门阵列 (Field—Programmable Gate Array, 简称 FPGA) 或专用 集成电路(Application Specific Integrated Circuit, 简称 ASIC)实现, NVM 控制器具有运算处理能力。内存 13通过输入 /输出(Input/Output,简称 I/O) 接口和 NVM连接, 该 I/O接口可以为串行 ATA接口 (Serial ATA, 简称 SATA) 、 串行 SCSI接口 (Serial Attached SCSI, 简称 SAS) 、 PCI快速 通道 (PCI express, 简称 PCIe) 。 可以理解的是, 主板 11上还可以集成 缓存(cache) 、 南桥芯片等其他硬件, 本发明实施例不一一列举, 也不对 其进行限制。
图 2为本发明实施例提供的另一种计算机的硬件结构示意图, 如图 2 所示, 本实施例的计算机包括: 主板 21、 CPU22、 内存 23、 NVM24 , 其 中, CPU22和内存 23集成在主板 21上, NVM24在主板 21的外部, NVM24 通过 I/O接口与主板连接, NVM24包括 NVM控制器, NVM24可以做成 扩展卡, 通过 PCIe接口与主板 21连接, 当有多个 NVM时, 可通过多个 扩展卡与主板连接。与图 1所示的计算机相比,本实施例的计算机中 NVM 并不是集成在主板上, 而是在主板外部。 本实施例中, 主板 21 上还可以 集成缓存 (cache) 、 南桥芯片等其他硬件, 这里不一一列举。
图 3为本发明实施例提供的一种数据存储方法的流程图, 本发明实施 例的方法可以由图 1和图 2所示的计算机中的 NVM控制器执行。 如图 3 所示, 本实施例的方法可以包括以下歩骤:
歩骤 101、 NVM控制器接收写请求, 写请求中包含有待写入数据块以 及地址。
当 NVM控制器接收到 CPU发送的写请求时,根据写请求中包括的地 址查看缓存区中是否有该地址对应的写回数据块, 若缓存区中有该地址对 应的写回数据则执行歩骤 102,若缓存区中没有该地址对应的写回数据块, 则 NVM控制器根据该地址从 NVM中读取该地址对应的写回数据块。 正 常情况下 NVM控制器能够从 NVM中读取到写回数据块, 当计算机发生 硬件故障或写冲突的情况下, NVM控制器不能从 NVM中读取到写回数 据块。 当 NVM控制器从 NVM中不能读取到写回数据块时, NVM控制器 可以直接将待写回数据块写入 NVM。
需说明的是, 本发明实施例中将写请求中携带的数据称为待写入数据 块, 将缓存区中缓存的与 NVM中相同位置的数据称为写回数据块。 这里 的待写入数据块和写回数据块均是指数据。
歩骤 102、NVM控制器分别将待写入数据块以及缓存中与该地址对应 的写回数据块平均划分为 N个子数据块, 其中, N为不小于 2的正整数。
分块个数 N可以根据实际需要进行调整, N为不小于 2的正整数, 待 写入数据块和写回数据块的大小相同, 将写回数据块和待写入数据块平均 划分为 N个子数据块后, 每个待写入数据块的子数据块的大小相同, 每个 写回数据块的子数据块的大小相同, 并且待写入数据块的子数据块和写回 子数据块的子数据块的大小相同。假设待写入数据块的大小为 block— S1Ze, 则待写入数据块的子数据块的大小为 block— size /N, 写回数据块的子数据 块的大小也为 block— size /N。
歩骤 103、NVM控制器将每个待写入数据块的子数据块与每个写回数 据块的子数据块进行比较, 以获得待写入数据块的每个子数据块的写入能 耗。
假设每个待写入数据块的子数据块被记为 i=l〜N, 每个写回数据 块的子数据块被记为 ζ,」= ··Ν, 当 ι=1时, NVM控制器将待写入数据块的 第 1个子数据块与写回数据块的 N个子数据块分别进行比较, 总共有 N次比 较过程, 通过 N次比较过程获得待写入数据块的第 1个子数据块在 N次比较 过程中的写入能耗, 因此, 待写入数据块的第 1个子数据块共有 N个写入能 耗。 然后, 再按照上述计算第 1个子数据块的 N个写入能耗的方法分别计算 第 1+1个至第 N个子数据块的 N个写入能耗。 从而得到每个待写入数据块的 子数据块的写入能耗, 每个待写入数据块的子数据块都有 N个写入能耗。
NVM 控制器将每个待写入数据块的子数据块与每个写回数据块的子 数据块进行比较, 以获得待写入数据块的每个子数据块的写入能耗, 具体 为: 分别将每个待写入数据块的子数据块与每个写回数据块的子数据块进 行比较, 以获得每一次比较过程中待写入数据块的每个子数据块的写 0次 数和写 1次数, 其中, 所述每一次比较过程包括所述待写入数据块的一个 子数据块与所述写回数据块的一个子数据块比较的过程; 然后, 根据待写 入数据块的每个子数据块在每一次比较过程中的写 0次数、 写 1次数以及 预设的单次写 0能耗和单次写 1能耗计算待写入数据块的每个子数据块在 每一次比较过程中的写入能耗。
举例来说, 当 N为 4时, 待写入数据块和写回数据块分别被划分为 4 个子数据块, 待写入数据块的第 1个子数据块的写入能耗包括 4次比较过 程的写入能耗, NVM控制器首先确定待写入数据块的第 1个子数据块写 入写回数据块的第 1个子数据块的写 0次数和写 1次数, 具体地: NVM 控制器比较待写入数据块的第 1个子数据块和写回数据块的第 1个子数据 块对应比特位上的数据, 若对应比特位上的数据相同, 则不更新该比特位 上的数据, 若对应比特位上的数据不同, 则需要更新该比特位上的数据, 并确定该比特位上的数据需要进行写 0操作还是写 1操作, 从而得到第一 次比较过程中待写入数据块的第 1个子数据块的写 0次数和写 1次数。
由于单次写 0能耗和单次写 1能耗不同, 因此, 本实施例中需要统计 写 0次数和写 1次数, 然后计算写 0的总能耗和写 1的总能耗, 在计算出 写 0的总能耗和写 1的总能耗后, 将写 0的总能耗和写 1的总能耗加起来 得到写入能耗。 单次写 0能耗和单次写 0能耗为固定值, 在数据初始化时 预先设置好, 在确定写 0次数和写 1次数后, 用单次写 0能耗乘以写 0次 数得到写 0的总能耗, 用单次写 1能耗乘以写 1次数得到写 1的总能耗。
NVM通过上述的方法依次计算待写入数据块的第 1个子数据块写入 写回数据块的其他 3个子数据块的写入能耗, 待写入数据块的每个子数据 块的写入能耗都包括 4次比较过程的写入能耗。
歩骤 104、NVM控制器根据待写入数据块的每个子数据块的写入能耗 确定待写入数据块的最小写入能耗对应的写入关系, 其中, 写入关系包括 待写入数据块的子数据块与写回数据块的子数据块的对应关系。
以图 4为例进行说明, 图 4为待写入数据块和写回数据块的一种写入 关系的示意图, 如图 4所示, 待写入数据块被划分为 4个子数据块: 、 d2、 d3、 d4, 待写入数据块的 4个子数据块的地址连续, 写回数据块也被 划分为 4个子数据块: fl、 f2、 f3、 f4, 写回数据块的 4个子数据块的地 址连续, 这里的地址连续均是指物理地址连续。
现有技术中, 待写入数据块和写回数据块的写入关系固定, 即 dl 写 入 fl, d2写入 f2, d3写入 f3, d4写入 f4。 本实施例中, 待写入数据块的 子数据块和写回数据块的子数据块之间并没有固定的写入关系, 当分块个 数为 N时, 共有 N!种写入关系, 图 4所示例子中 N的取值为 4, 因此, 共有 24中写入关系,待写入数据块采用不同的写入关系时写入能耗不同, 本歩骤的目的就是从 24种写入关系中选择一种写入能耗最小的写入关系。
一种实现方式中, NVM 控制器可以计算出每种写入关系对应的写入 能耗, 并比较各种写入关系对应的写入能耗的大小, 从中选择写入能耗最 小的写入关系。 另一种实现方式中, NVM 控制器可以通过二分图确定最 小写入能耗对应的写入关系。 例如, NVM 控制器确定的最小写入能耗对 应的写入关系为: dl→f3、 d2→f2、 d3→f4、 d4→fl, 即待写入数据块的 子数据块 dl写回数据块的子数据块 f3,待写入数据块的子数据块 d2写回 数据块的子数据块 Ω, 待写入数据块的子数据块 d3写入写回数据块的子 数据块 f4, 待写入数据块的子数据块 d4写入写回数据块的子数据块 fl。
歩骤 105、NVM控制器根据地址以及写入关系将待写入数据块的子数 据块写入 NVM。
具体地, NVM 控制器根据地址以及写回数据块的每个子数据块的大 小计算写回数据块的每个子数据块的地址; 然后, 根据写入关系和写回数 据块的每个子数据块的地址将待写入数据块的子数据块写入 NVM。 NVM 控制器将待写入数据块的子数据块写入 NVM时有以下两种方式: 第一种 方式, NVM 控制器根据待写入数据块的子数据块以及写入关系对相应的 写回数据块的子数据块进行改写; 然后, 按照写回数据块的每个子数据块 的地址将改写后的写回数据块的子数据块写入 NVM 中。 第二种方式, NVM根据写回数据块的每个子数据块的地址和写入关系改写 NVM中的 数据。
NVM 控制器可以根据以下公式计算写回数据块的每个子数据块的地 址: Ara+j xM,其中, Α」为第」个写回数据块的子数据块的地址, j=l,…, N, a为写请求中携带的地址的起始地址, M为写回数据块的每个子数据 块的大小。 在确定写回数据块的每个子数据块的地址后, NVM 控制器根 据写入关系将待写入数据块的子数据块写入 NVM。
本实施例中, NVM 控制器将待写入数据块和写回数据块分块, 通过 将每个待写入数据块的子数据块与每个写回数据块的子数据块进行比较, 以获得待写入数据块的每个子数据块的写入能耗, 并根据待写入数据块的 每个子数据块的写入能耗确定待写入数据块的最小写入能耗对应的写入 关系, 根据最小写入能耗对应的写入关系将待写入数据块的子数据块写入 NVMo所述方法通过比较选取写入能耗最小的对应关系,将待写入数据块 的子数据块写入 NVM, 从而能够使 NVM的写入能耗降低到最低。
通常, 待写入数据块和写回数据块存在很大的相似性, 当插入新数据 块或者对数据块进行移位导致写回数据块的地址变化时, 若采用现有技术 的方案, 将待写入数据块和写回数据块对应位置上的数据进行比较时, 大 部分数据不同,这种情况下 NVM的写入能耗很大。采用本实施例的方法, 可以有效的解决这一类问题。 仍以图 4为例说明, 当在 fl和 Ω之间插入 一个新数据块后, 原 f2、 f3、 f4 的地址都向后移动了一个数据块的大小。 若采用现有技术的方案, 则将 dl写入现有的 fl, 将 d2写入现有的 f2, 将 d3写入现有的 f3, 将 d4写入现有的 f4, 由于原 Ω的数据向后移动了, 导 致 d2与现有的 Ω的数据差异很大, 相应地, d3与现有的 f3的数据差异 很大, d4与现有的 f4的数据差异也很大, 大部分数据都需要重写, NVM 写入能耗很大。 而本实施例的方案, 通过比较各种写入关系对应的写入能 耗,可以将 dl写入现有的 fl,将 d2写入现有的 f3,将 d3写入现有的 f4, 将 d4写入现有的 f2, 由于 dl和现有的 fl的数据大部分相同, d2和现有 的 f3的数据大部分相同, d3与现有的 f4的数据大部分相同, 只有小部分 数据要写, 因此, 本实施例的方法能够降低 NVM的写入能耗。
NVM控制器将待写入数据块的子数据块写入 NVM之后, 还要将写 入关系写入 NVM, 以便从 NVM读取待写入数据块的子数据块时, 根据 写入关系恢复待写入数据块。这是因为按照本实施例的方法将待写入数据 块写入 NVM后, 待写入数据块的内容的顺序被打乱了, 因此, 在将待写 入数据从 NVM中读出时, 要恢复待写入数据块的顺序。 写入关系可以存 储在 NVM中一块专用区域内, 当 NVM控制器从 NVM中读取数据时, 同时需要从该专用区域读取该数据对应的写入关系。 NVM 中存储的该写 入关系具体可以为待写入数据块的子数据块的标识, 当 N为 2k时, 每个 待写入数据块的子数据块需要的额外开销为 log(N)比特, 额外开销指存储 待写入数据块的子数据块所需的存储区域的大小, 那么待写入数据块的额 外开销为 N*log(N)比特, 当 N不为 2K时, 每个待写入数据块的子数据块 需要的额外开销为「i0g(N;n, 「,表示向上取整运算, 待写入数据块需要的 额外开销为 N「log(Nfl。 例如 N=4, 可以用 00、 01、 10、 1 1分别表示 4个 待写入数据块的子数据块。 本实施例的方法, 待写入数据块需要额外的 N*l0g(N;)比特位存储写入关系, 而现有技术中, 每个字节需要一个额外的 比特位存储翻转信息, 因此, 本实施例的方法还能够减少额外开销。
图 5为本发明实施例提供的一种确定最小写入能耗对应的写入关系的 流程图, 本实施例是对图 3所示实施例中歩骤 104的详细说明, 本实施例 中通过构造二分图确定最小写入能耗对应的写入关系, 二分图只是求解最 小写入能耗对应的写入关系的一种可行方法, 当然还可以通过其他方法求 解。 如图 5所示, 本实施例的方法可以包括以下歩骤:
歩骤 201、NVM控制器以待写入数据块的每个子数据块以及写回数据 块的每个子数据块为顶点构造二分图, 二分图的各边权值为各边对应的待 写入数据块的子数据块在一次比较过程中的写入能耗, 其中, 待写入数据 块的子数据块在一次比较过程中的写入能耗为该待写入数据块的子数据 块写入写回数据块的一个子数据块的写入能耗。
假设二分图用 G(D, F)表示, D表示待写入数据块, F表示写回数据 块, 二分图的顶点为待写入数据块的子数据块或写回数据块的子数据块, 假设待写入数据块的第 1个子数据块 4写入写回数据块的第」个子数据块 的 ζ的写入能耗为 (1^), 那么二分图 G各边的权值为 eCd,, fj), 二 分图可以用一个NX N的矩阵来表示:E=[E1,j]NXN,i= 2…,N},j= 2…, N}。
歩骤 202、 NVM控制器确定二分图的最佳匹配, 最佳匹配满足如下条 件: 各边的权值总和最小, 覆盖二分图的所有顶点, 任意两条边没有共同 的顶点。
可采用现有的写入关系求解二分图的最佳匹配, 这里不做过多解释, 本实施例中该最佳匹配需要同时满足以下三个条件: (1 ) 各边的权值总 和最小, 每条边的权值都为一个写入能耗, 各边权值总和最小意味着各边 的写入能耗最小。 (2 ) 覆盖二分图的所有顶点, 由于二分图的顶点表示 待写入数据块的子数据块或写回数据块的子数据块, 覆盖二分图的所有顶 点是为了保证将待写入数据块的所有子数据块都写回对应的写回数据块 的子数据块。 (3 ) 任意两条边没有共同的顶点, 这是因为在将待写入数 据块的子数据块写回 NVM时, 任意一个待写入数据块的子数据块只能写 入写回数据块的其中一个子数据块, 若任意两条边有共同点, 那么说明一 个待写入数据块的子数据块可能对应两个写回数据块的子数据块。
歩骤 203、NVM控制器将最佳匹配作为最小写入能耗对应的写入方式。 图 6为本发明实施例提供的数据存储装置的结构示意图,如图 6所示, 本实施例的装置可以包括: 接收模块 31、 划分模块 32、 获取模块 33、 确 定模块 34和写入模块 35。
其中, 接收模块 31, 用于接收写请求, 所述写请求中包含有待写入数 据块以及地址;
划分模块 32,用于分别将所述待写入数据块以及缓存中与所述地址对 应的写回数据块平均划分为 N个子数据块,其中, N为不小于 2的正整数; 获取模块 33,用于将所述每个待写入数据块的子数据块与所述每个写 回数据块的子数据块进行比较, 以获得所述待写入数据块的每个子数据块 的写入能耗;
确定模块 34,用于根据所述待写入数据块的每个子数据块的写入能耗 确定所述待写入数据块的最小写入能耗对应的写入关系, 其中, 所述写入 关系包括所述待写入数据块的子数据块与所述写回数据块的子数据块的 对应关系;
写入模块 35,用于根据所述地址以及所述写入关系将所述待写入数据 块的子数据块写入非易失性存储器 NVM。
本实施例中, 获取模块 33 具体用于: 分别将所述每个待写入数据块 的子数据块与所述每个写回数据块的子数据块进行比较, 以获得每一次比 较过程中所述待写入数据块的每个子数据块的写 0次数和写 1次数,其中, 所述每一次比较过程包括所述待写入数据块的一个子数据块与所述写回 数据块的一个子数据块比较的过程; 然后, 根据所述待写入数据块的每个 子数据块在每一次比较过程中的写 0次数、 写 1次数以及预设的单次写 0 能耗和单次写 1能耗计算所述待写入数据块的每个子数据块在每一次比较 过程中的写入能耗。
可选地, 所述确定模块 34 具体用于: 首先, 以所述待写入数据块的 每个子数据块以及所述写回数据块的每个子数据块为顶点构造二分图, 所 述二分图的各边权值为所述各边对应的待写入数据块的子数据块在一次 比较过程中的写入能耗, 其中, 所述待写入数据块的子数据块在一次比较 过程中的写入能耗为所述待写入数据块的子数据块写入所述写回数据块 的一个子数据块的写入能耗。 然后, 确定所述二分图的最佳匹配, 所述最 佳匹配满足如下条件:各边的权值总和最小,覆盖所述二分图的所有顶点, 任意两条边没有共同的顶点。 最后, 将所述最佳匹配作为所述最小写入能 耗对应的写入方式。
本实施例中, 写入模块 35 具体用于: 根据所述地址以及所述写回数 据块的每个子数据块的大小计算所述写回数据块的每个子数据块的地址; 然后, 根据所述写入关系和所述写回数据块的每个子数据块的地址将所述 待写入数据块的子数据块写入所述 NVM。 所述写入模块 35还用于: 将所 述写入关系写入所述 NVM, 以便从所述 NVM读取所述待写入数据块的 子数据块时, 根据所述写入关系恢复所述待写入数据块。
本实施例的数据存储装置, 可以用于执行图 3所示方法实施例的技术 方案, 其实现原理和技术效果类似, 此处不再赘述。
图 7为本发明实施例提供的一种 NVM的结构示意图, 如图 7所示, 本实施例的 NVM400包括:存储介质 41、NVM控制器 42和通信接口 43, 其中, 通信接口 42, 用于 NVM与计算机中的其他硬件通信, 具体可以用 于接收写请求; NVM控制器 42, 用于执行上述实施例提供的数据存储方 法, 其实现原理和技术效果类似, 此处不再赘述; 存储介质 42, 用于存储 数据。 NVM控制器具体可以为具有处理功能的芯片, 例如 CPU、 FPGA、 ASIC等。
本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分歩骤 可以通过程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读 取存储介质中, 该程序在执行时, 执行包括上述方法实施例的歩骤; 而前述 的存储介质包括: ROM、 RAM, 磁碟或者光盘等各种可以存储程序代码的介 质。
最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (1)

  1. 权 利 要 求 书
    1、 一种数据存储方法, 所述方法应用于非易失性存储器 NVM中, 其 特征在于, 所述方法包括:
    接收写请求, 所述写请求中包含有待写入数据块以及地址;
    分别将所述待写入数据块以及缓存中与所述地址对应的写回数据块 平均划分为 N个子数据块, 其中, N为不小于 2的正整数;
    将所述每个待写入数据块的子数据块与所述每个写回数据块的子数 据块进行比较, 以获得所述待写入数据块的每个子数据块的写入能耗; 根据所述待写入数据块的每个子数据块的写入能耗确定所述待写入 数据块的最小写入能耗对应的写入关系, 其中, 所述写入关系包括所述待 写入数据块的子数据块与所述写回数据块的子数据块的对应关系;
    根据所述地址以及所述写入关系将所述待写入数据块的子数据块写 入所述 NVM。
    2、 根据权利要求 1 所述的方法, 其特征在于, 所述将所述每个待写 入数据块的子数据块与所述每个写回数据块的子数据块进行比较, 以获得 所述待写入数据块的每个子数据块的写入能耗, 包括:
    分别将所述每个待写入数据块的子数据块与所述每个写回数据块的 子数据块进行比较, 以获得每一次比较过程中所述待写入数据块的每个子 数据块的写 0次数和写 1次数, 其中, 所述每一次比较过程包括所述待写 入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程; 根据所述待写入数据块的每个子数据块在每一次比较过程中的写 0次 数、 写 1次数以及预设的单次写 0能耗和单次写 1能耗计算所述待写入数 据块的每个子数据块在每一次比较过程中的写入能耗。
    3、 根据权利要求 1或 2所述的方法, 其特征在于, 所述根据所述待 写入数据块的每个子数据块的写入能耗确定所述待写入数据块的最小写 入能耗对应的写入关系, 包括:
    以所述待写入数据块的每个子数据块以及所述写回数据块的每个子 数据块为顶点构造二分图, 所述二分图的各边权值为所述各边对应的待写 入数据块的子数据块在一次比较过程中的写入能耗, 其中, 所述待写入数 据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子 数据块写入所述写回数据块的一个子数据块的写入能耗;
    确定所述二分图的最佳匹配, 所述最佳匹配满足如下条件: 各边的权 值总和最小, 覆盖所述二分图的所有顶点, 任意两条边没有共同的顶点; 将所述最佳匹配作为所述最小写入能耗对应的写入方式。
    4、 根据权利要求 1-3中任一项所述的方法, 其特征在于, 所述根据所 述地址以及所述写入关系将所述待写入数据块的子数据块写入所述 NVM, 包括:
    根据所述地址以及所述写回数据块的每个子数据块的大小计算所述 写回数据块的每个子数据块的地址;
    根据所述写入关系和所述写回数据块的每个子数据块的地址将所述 待写入数据块的子数据块写入所述 NVM。
    5、 根据权利要求 1-4中任一项所述的方法, 其特征在于, 所述根据所 述地址以及所述写入关系将所述待写入数据块的子数据块写入所述 NVM 之后, 还包括:
    将所述写入关系写入所述 NVM, 以便从所述 NVM读取所述待写入 数据块的子数据块时, 根据所述写入关系恢复所述待写入数据块。
    6、 一种数据存储装置, 其特征在于, 包括:
    接收模块, 用于接收写请求, 所述写请求中包含有待写入数据块以及 地址;
    划分模块, 用于分别将所述待写入数据块以及缓存中与所述地址对应 的写回数据块平均划分为 N个子数据块, 其中, N为不小于 2的正整数; 获取模块, 用于将所述每个待写入数据块的子数据块与所述每个写回 数据块的子数据块进行比较, 以获得所述待写入数据块的每个子数据块的 写入能耗;
    确定模块, 用于根据所述待写入数据块的每个子数据块的写入能耗确 定所述待写入数据块的最小写入能耗对应的写入关系, 其中, 所述写入关 系包括所述待写入数据块的子数据块与所述写回数据块的子数据块的对 应关系;
    写入模块, 用于根据所述地址以及所述写入关系将所述待写入数据块 的子数据块写入非易失性存储器 NVM。 7、 根据权利要求 6所述的装置, 其特征在于, 所述获取模块具体用 于:
    分别将所述每个待写入数据块的子数据块与所述每个写回数据块的 子数据块进行比较, 以获得每一次比较过程中所述待写入数据块的每个子 数据块的写 0次数和写 1次数, 其中, 所述每一次比较过程包括所述待写 入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程; 根据所述待写入数据块的每个子数据块在每一次比较过程中的写 0次 数、 写 1次数以及预设的单次写 0能耗和单次写 1能耗计算所述待写入数 据块的每个子数据块在每一次比较过程中的写入能耗。
    8、 根据权利要求 6或 7所述的装置, 其特征在于, 所述确定模块具 体用于:
    以所述待写入数据块的每个子数据块以及所述写回数据块的每个子 数据块为顶点构造二分图, 所述二分图的各边权值为所述各边对应的待写 入数据块的子数据块在一次比较过程中的写入能耗, 其中, 所述待写入数 据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子 数据块写入所述写回数据块的一个子数据块的写入能耗;
    确定所述二分图的最佳匹配, 所述最佳匹配满足如下条件: 各边的权 值总和最小, 覆盖所述二分图的所有顶点, 任意两条边没有共同的顶点; 将所述最佳匹配作为所述最小写入能耗对应的写入方式。
    9、 根据权利要求 6-8中任一项所述的装置, 其特征在于, 所述写入模 块具体用于:
    根据所述地址以及所述写回数据块的每个子数据块的大小计算所述 写回数据块的每个子数据块的地址;
    根据所述写入关系和所述写回数据块的每个子数据块的地址将所述 待写入数据块的子数据块写入所述 NVM。
    10、 根据权利要求 6-9中任一项所述的装置, 其特征在于, 所述写入 模块还用于: 将所述写入关系写入所述 NVM, 以便从所述 NVM读取所 述待写入数据块的子数据块时, 根据所述写入关系恢复所述待写入数据块。
    11、一种非易失性存储器 NVM, 其特征在于, 包括: 存储介质、 NVM 控制器和通信接口; 所述通信接口, 用于接收写请求;
    所述 NVM控制器, 用于执行权利要求 1-5中任一项所述的方法; 所述存储介质, 用于存储数据。
CN201480003810.0A 2014-06-26 2014-06-26 数据存储方法、装置和非易失性存储器 Active CN105408961B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080842 WO2015196416A1 (zh) 2014-06-26 2014-06-26 数据存储方法、装置和非易失性存储器

Publications (2)

Publication Number Publication Date
CN105408961A true CN105408961A (zh) 2016-03-16
CN105408961B CN105408961B (zh) 2018-10-19

Family

ID=54936480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480003810.0A Active CN105408961B (zh) 2014-06-26 2014-06-26 数据存储方法、装置和非易失性存储器

Country Status (2)

Country Link
CN (1) CN105408961B (zh)
WO (1) WO2015196416A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329906A (zh) * 2008-07-24 2008-12-24 中国科学院上海微系统与信息技术研究所 非易失顺序模块式存储器、其数据存储及读取方法
US20100030979A1 (en) * 2008-08-04 2010-02-04 Phison Electronics Corp. Data management method, and storage apparatus and controller thereof
CN102592665A (zh) * 2011-10-24 2012-07-18 北京时代全芯科技有限公司 一种相变存储器的高速数据写入结构及写入方法
CN103559145A (zh) * 2013-10-22 2014-02-05 华为技术有限公司 一种数据读取、写入方法和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329906A (zh) * 2008-07-24 2008-12-24 中国科学院上海微系统与信息技术研究所 非易失顺序模块式存储器、其数据存储及读取方法
US20100030979A1 (en) * 2008-08-04 2010-02-04 Phison Electronics Corp. Data management method, and storage apparatus and controller thereof
CN102592665A (zh) * 2011-10-24 2012-07-18 北京时代全芯科技有限公司 一种相变存储器的高速数据写入结构及写入方法
CN103559145A (zh) * 2013-10-22 2014-02-05 华为技术有限公司 一种数据读取、写入方法和电子设备

Also Published As

Publication number Publication date
CN105408961B (zh) 2018-10-19
WO2015196416A1 (zh) 2015-12-30

Similar Documents

Publication Publication Date Title
US9043536B2 (en) Method of recording mapping information, and memory controller and memory storage apparatus using the same
JP4751163B2 (ja) メモリシステム
EP3436953B1 (en) Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
CN106484316B (zh) 用来管理一记忆装置的方法以及记忆装置与控制器
CN108572927A (zh) 存储器系统及其操作方法
US8954705B2 (en) Memory space management method and memory controller and memory storage device and memory storage using the same
CN109947358A (zh) 存储器系统及其操作方法
US20210223979A1 (en) On-ssd-copy techniques using copy-on-write
CN109783397A (zh) 存储器系统及其操作方法
CN106372004A (zh) 用于ssd控制器的可编程协议独立bar存储器
US9141530B2 (en) Data writing method, memory controller and memory storage device
CN108345550A (zh) 存储器系统
CN109947361A (zh) 存储器系统及其操作方法
CN110347330A (zh) 存储器系统及其操作方法
CN108268212A (zh) 控制器及操作方法
CN109271328A (zh) 存储器系统及其操作方法
KR102282879B1 (ko) 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템
US10789003B1 (en) Selective deduplication based on data storage device controller status and media characteristics
CN110532194A (zh) 存储器系统及其操作方法
US9378130B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
CN108447513A (zh) 存储器系统及其操作方法
CN109521946A (zh) 数据处理系统及其操作方法
US20160110126A1 (en) All-flash-array primary storage and caching appliances implementing triple-level cell (tlc)-nand semiconductor microchps
US9312011B1 (en) Data writing method, memory storage device and memory control circuit unit
CN109426448A (zh) 存储器系统及其操作方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant