CN105408961B - 数据存储方法、装置和非易失性存储器 - Google Patents
数据存储方法、装置和非易失性存储器 Download PDFInfo
- Publication number
- CN105408961B CN105408961B CN201480003810.0A CN201480003810A CN105408961B CN 105408961 B CN105408961 B CN 105408961B CN 201480003810 A CN201480003810 A CN 201480003810A CN 105408961 B CN105408961 B CN 105408961B
- Authority
- CN
- China
- Prior art keywords
- block
- write
- written
- sub
- data block
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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接口(SerialAttached 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_size,则待写入数据块的子数据块的大小为block_size/N,写回数据块的子数据块的大小也为block_size/N。
步骤103、NVM控制器将每个待写入数据块的子数据块与每个写回数据块的子数据块进行比较,以获得待写入数据块的每个子数据块的写入能耗。
假设每个待写入数据块的子数据块被记为di,i=1…N,每个写回数据块的子数据块被记为fj,j=1…N,当i=1时,NVM控制器将待写入数据块的第1个子数据块与写回数据块的N个子数据块分别进行比较,总共有N次比较过程,通过N次比较过程获得待写入数据块的第1个子数据块在N次比较过程中的写入能耗,因此,待写入数据块的第1个子数据块共有N个写入能耗。然后,再按照上述计算第i个子数据块的N个写入能耗的方法分别计算第i+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个子数据块:d1、d2、d3、d4,待写入数据块的4个子数据块的地址连续,写回数据块也被划分为4个子数据块:f1、f2、f3、f4,写回数据块的4个子数据块的地址连续,这里的地址连续均是指物理地址连续。
现有技术中,待写入数据块和写回数据块的写入关系固定,即d1写入f1,d2写入f2,d3写入f3,d4写入f4。本实施例中,待写入数据块的子数据块和写回数据块的子数据块之间并没有固定的写入关系,当分块个数为N时,共有N!种写入关系,图4所示例子中N的取值为4,因此,共有24中写入关系,待写入数据块采用不同的写入关系时写入能耗不同,本步骤的目的就是从24种写入关系中选择一种写入能耗最小的写入关系。
一种实现方式中,NVM控制器可以计算出每种写入关系对应的写入能耗,并比较各种写入关系对应的写入能耗的大小,从中选择写入能耗最小的写入关系。另一种实现方式中,NVM控制器可以通过二分图确定最小写入能耗对应的写入关系。例如,NVM控制器确定的最小写入能耗对应的写入关系为:d1→f3、d2→f2、d3→f4、d4→f1,即待写入数据块的子数据块d1写回数据块的子数据块f3,待写入数据块的子数据块d2写回数据块的子数据块f2,待写入数据块的子数据块d3写入写回数据块的子数据块f4,待写入数据块的子数据块d4写入写回数据块的子数据块f1。
步骤105、NVM控制器根据地址以及写入关系将待写入数据块的子数据块写入NVM。
具体地,NVM控制器根据地址以及写回数据块的每个子数据块的大小计算写回数据块的每个子数据块的地址;然后,根据写入关系和写回数据块的每个子数据块的地址将待写入数据块的子数据块写入NVM。NVM控制器将待写入数据块的子数据块写入NVM时有以下两种方式:第一种方式,NVM控制器根据待写入数据块的子数据块以及写入关系对相应的写回数据块的子数据块进行改写;然后,按照写回数据块的每个子数据块的地址将改写后的写回数据块的子数据块写入NVM中。第二种方式,NVM根据写回数据块的每个子数据块的地址和写入关系改写NVM中的数据。
NVM控制器可以根据以下公式计算写回数据块的每个子数据块的地址:Aj=a+j×M,其中,Aj为第j个写回数据块的子数据块的地址,j=1,…,N,a为写请求中携带的地址的起始地址,M为写回数据块的每个子数据块的大小。在确定写回数据块的每个子数据块的地址后,NVM控制器根据写入关系将待写入数据块的子数据块写入NVM。
本实施例中,NVM控制器将待写入数据块和写回数据块分块,通过将每个待写入数据块的子数据块与每个写回数据块的子数据块进行比较,以获得待写入数据块的每个子数据块的写入能耗,并根据待写入数据块的每个子数据块的写入能耗确定待写入数据块的最小写入能耗对应的写入关系,根据最小写入能耗对应的写入关系将待写入数据块的子数据块写入NVM。所述方法通过比较选取写入能耗最小的对应关系,将待写入数据块的子数据块写入NVM,从而能够使NVM的写入能耗降低到最低。
通常,待写入数据块和写回数据块存在很大的相似性,当插入新数据块或者对数据块进行移位导致写回数据块的地址变化时,若采用现有技术的方案,将待写入数据块和写回数据块对应位置上的数据进行比较时,大部分数据不同,这种情况下NVM的写入能耗很大。采用本实施例的方法,可以有效的解决这一类问题。仍以图4为例说明,当在f1和f2之间插入一个新数据块后,原f2、f3、f4的地址都向后移动了一个数据块的大小。若采用现有技术的方案,则将d1写入现有的f1,将d2写入现有的f2,将d3写入现有的f3,将d4写入现有的f4,由于原f2的数据向后移动了,导致d2与现有的f2的数据差异很大,相应地,d3与现有的f3的数据差异很大,d4与现有的f4的数据差异也很大,大部分数据都需要重写,NVM写入能耗很大。而本实施例的方案,通过比较各种写入关系对应的写入能耗,可以将d1写入现有的f1,将d2写入现有的f3,将d3写入现有的f4,将d4写入现有的f2,由于d1和现有的f1的数据大部分相同,d2和现有的f3的数据大部分相同,d3与现有的f4的数据大部分相同,只有小部分数据要写,因此,本实施例的方法能够降低NVM的写入能耗。
NVM控制器将待写入数据块的子数据块写入NVM之后,还要将写入关系写入NVM,以便从NVM读取待写入数据块的子数据块时,根据写入关系恢复待写入数据块。这是因为按照本实施例的方法将待写入数据块写入NVM后,待写入数据块的内容的顺序被打乱了,因此,在将待写入数据从NVM中读出时,要恢复待写入数据块的顺序。写入关系可以存储在NVM中一块专用区域内,当NVM控制器从NVM中读取数据时,同时需要从该专用区域读取该数据对应的写入关系。NVM中存储的该写入关系具体可以为待写入数据块的子数据块的标识,当N为2k时,每个待写入数据块的子数据块需要的额外开销为log(N)比特,额外开销指存储待写入数据块的子数据块所需的存储区域的大小,那么待写入数据块的额外开销为N*log(N)比特,当N不为2K时,每个待写入数据块的子数据块需要的额外开销为表示向上取整运算,待写入数据块需要的额外开销为例如N=4,可以用00、01、10、11分别表示4个待写入数据块的子数据块。本实施例的方法,待写入数据块需要额外的N*log(N)比特位存储写入关系,而现有技术中,每个字节需要一个额外的比特位存储翻转信息,因此,本实施例的方法还能够减少额外开销。
图5为本发明实施例提供的一种确定最小写入能耗对应的写入关系的流程图,本实施例是对图3所示实施例中步骤104的详细说明,本实施例中通过构造二分图确定最小写入能耗对应的写入关系,二分图只是求解最小写入能耗对应的写入关系的一种可行方法,当然还可以通过其他方法求解。如图5所示,本实施例的方法可以包括以下步骤:
步骤201、NVM控制器以待写入数据块的每个子数据块以及写回数据块的每个子数据块为顶点构造二分图,二分图的各边权值为各边对应的待写入数据块的子数据块在一次比较过程中的写入能耗,其中,待写入数据块的子数据块在一次比较过程中的写入能耗为该待写入数据块的子数据块写入写回数据块的一个子数据块的写入能耗。
假设二分图用G(D,F)表示,D表示待写入数据块,F表示写回数据块,二分图的顶点为待写入数据块的子数据块或写回数据块的子数据块,假设待写入数据块的第i个子数据块di写入写回数据块的第j个子数据块的fj的写入能耗为e(di,fj),那么二分图G各边的权值为Ei,j=e(di,fj),二分图可以用一个N×N的矩阵来表示:E=[Ei,j]N×N,i={1,2…,N},j={1,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 (11)
1.一种数据存储方法,所述方法应用于非易失性存储器NVM中,其特征在于,所述方法包括:
接收写请求,所述写请求中包含有待写入数据块以及地址;
分别将所述待写入数据块以及缓存中与所述地址对应的写回数据块平均划分为N个子数据块,其中,N为不小于2的正整数;
将所述每个待写入数据块的子数据块与所述每个写回数据块的子数据块进行比较,以获得所述待写入数据块的每个子数据块的写入能耗;
根据所述待写入数据块的每个子数据块的写入能耗确定所述待写入数据块的最小写入能耗对应的写入关系,其中,所述写入关系包括所述待写入数据块的子数据块与所述写回数据块的子数据块的对应关系;
根据所述地址以及所述写入关系将所述待写入数据块的子数据块写入所述NVM。
2.根据权利要求1所述的方法,其特征在于,所述将所述每个待写入数据块的子数据块与所述每个写回数据块的子数据块进行比较,以获得所述待写入数据块的每个子数据块的写入能耗,包括:
分别将所述每个待写入数据块的子数据块与所述每个写回数据块的子数据块进行比较,以获得每一次比较过程中所述待写入数据块的每个子数据块的写0次数和写1次数,其中,所述每一次比较过程包括所述待写入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程;
根据所述待写入数据块的每个子数据块在每一次比较过程中的写0次数、写1次数以及预设的单次写0能耗和单次写1能耗计算所述待写入数据块的每个子数据块在每一次比较过程中的写入能耗。
3.根据权利要求1所述的方法,其特征在于,所述根据所述待写入数据块的每个子数据块的写入能耗确定所述待写入数据块的最小写入能耗对应的写入关系,包括:
以所述待写入数据块的每个子数据块以及所述写回数据块的每个子数据块为顶点构造二分图,所述二分图的各边权值为所述各边对应的待写入数据块的子数据块在一次比较过程中的写入能耗,其中,所述待写入数据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子数据块写入所述写回数据块的一个子数据块的写入能耗;
确定所述二分图的最佳匹配,所述最佳匹配满足如下条件:各边的权值总和最小,覆盖所述二分图的所有顶点,任意两条边没有共同的顶点;
将所述最佳匹配作为所述最小写入能耗对应的写入方式。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述地址以及所述写入关系将所述待写入数据块的子数据块写入所述NVM,包括:
根据所述地址以及所述写回数据块的每个子数据块的大小计算所述写回数据块的每个子数据块的地址;
根据所述写入关系和所述写回数据块的每个子数据块的地址将所述待写入数据块的子数据块写入所述NVM。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述地址以及所述写入关系将所述待写入数据块的子数据块写入所述NVM之后,还包括:
将所述写入关系写入所述NVM,以便从所述NVM读取所述待写入数据块的子数据块时,根据所述写入关系恢复所述待写入数据块。
6.一种数据存储装置,其特征在于,包括:
接收模块,用于接收写请求,所述写请求中包含有待写入数据块以及地址;
划分模块,用于分别将所述待写入数据块以及缓存中与所述地址对应的写回数据块平均划分为N个子数据块,其中,N为不小于2的正整数;
获取模块,用于将所述每个待写入数据块的子数据块与所述每个写回数据块的子数据块进行比较,以获得所述待写入数据块的每个子数据块的写入能耗;
确定模块,用于根据所述待写入数据块的每个子数据块的写入能耗确定所述待写入数据块的最小写入能耗对应的写入关系,其中,所述写入关系包括所述待写入数据块的子数据块与所述写回数据块的子数据块的对应关系;
写入模块,用于根据所述地址以及所述写入关系将所述待写入数据块的子数据块写入非易失性存储器NVM。
7.根据权利要求6所述的装置,其特征在于,所述获取模块具体用于:
分别将所述每个待写入数据块的子数据块与所述每个写回数据块的子数据块进行比较,以获得每一次比较过程中所述待写入数据块的每个子数据块的写0次数和写1次数,其中,所述每一次比较过程包括所述待写入数据块的一个子数据块与所述写回数据块的一个子数据块比较的过程;
根据所述待写入数据块的每个子数据块在每一次比较过程中的写0次数、写1次数以及预设的单次写0能耗和单次写1能耗计算所述待写入数据块的每个子数据块在每一次比较过程中的写入能耗。
8.根据权利要求6所述的装置,其特征在于,所述确定模块具体用于:
以所述待写入数据块的每个子数据块以及所述写回数据块的每个子数据块为顶点构造二分图,所述二分图的各边权值为所述各边对应的待写入数据块的子数据块在一次比较过程中的写入能耗,其中,所述待写入数据块的子数据块在一次比较过程中的写入能耗为所述待写入数据块的子数据块写入所述写回数据块的一个子数据块的写入能耗;
确定所述二分图的最佳匹配,所述最佳匹配满足如下条件:各边的权值总和最小,覆盖所述二分图的所有顶点,任意两条边没有共同的顶点;
将所述最佳匹配作为所述最小写入能耗对应的写入方式。
9.根据权利要求6-8中任一项所述的装置,其特征在于,所述写入模块具体用于:
根据所述地址以及所述写回数据块的每个子数据块的大小计算所述写回数据块的每个子数据块的地址;
根据所述写入关系和所述写回数据块的每个子数据块的地址将所述待写入数据块的子数据块写入所述NVM。
10.根据权利要求6-8中任一项所述的装置,其特征在于,所述写入模块还用于:将所述写入关系写入所述NVM,以便从所述NVM读取所述待写入数据块的子数据块时,根据所述写入关系恢复所述待写入数据块。
11.一种非易失性存储器NVM,其特征在于,包括:存储介质、NVM控制器和通信接口;
所述通信接口,用于接收写请求;
所述NVM控制器,用于执行权利要求1-5中任一项所述的方法;
所述存储介质,用于存储数据。
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 CN105408961A (zh) | 2016-03-16 |
CN105408961B true 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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329906A (zh) * | 2008-07-24 | 2008-12-24 | 中国科学院上海微系统与信息技术研究所 | 非易失顺序模块式存储器、其数据存储及读取方法 |
CN102592665A (zh) * | 2011-10-24 | 2012-07-18 | 北京时代全芯科技有限公司 | 一种相变存储器的高速数据写入结构及写入方法 |
CN103559145A (zh) * | 2013-10-22 | 2014-02-05 | 华为技术有限公司 | 一种数据读取、写入方法和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI381386B (zh) * | 2008-08-04 | 2013-01-01 | Phison Electronics Corp | 資料管理方法及其儲存裝置與其控制器 |
-
2014
- 2014-06-26 CN CN201480003810.0A patent/CN105408961B/zh active Active
- 2014-06-26 WO PCT/CN2014/080842 patent/WO2015196416A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329906A (zh) * | 2008-07-24 | 2008-12-24 | 中国科学院上海微系统与信息技术研究所 | 非易失顺序模块式存储器、其数据存储及读取方法 |
CN102592665A (zh) * | 2011-10-24 | 2012-07-18 | 北京时代全芯科技有限公司 | 一种相变存储器的高速数据写入结构及写入方法 |
CN103559145A (zh) * | 2013-10-22 | 2014-02-05 | 华为技术有限公司 | 一种数据读取、写入方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105408961A (zh) | 2016-03-16 |
WO2015196416A1 (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628319B2 (en) | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same | |
CN109992537A (zh) | 存储系统及其操作方法 | |
CN107179996B (zh) | 数据存储装置和其操作方法 | |
US8144515B2 (en) | Interleaved flash storage system and method | |
CN109416666A (zh) | 具有压缩数据和标签的缓存 | |
CN111459844B (zh) | 数据储存装置及用于存取逻辑至物理地址映射表的方法 | |
US20210223979A1 (en) | On-ssd-copy techniques using copy-on-write | |
CN109783397A (zh) | 存储器系统及其操作方法 | |
US11537512B2 (en) | Asynchronous power loss recovery for memory devices | |
CN103635968A (zh) | 包含存储器系统控制器的设备和相关方法 | |
US9619380B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
CN107003810B (zh) | 存储器耗损平均 | |
US10346052B2 (en) | Memory system with priority processing and operating method thereof | |
US9378130B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
CN113010449A (zh) | 存储器子系统中命令的有效处理 | |
CN109582508A (zh) | 用于nvdimm的数据备份和恢复方法、nvdimm控制器以及nvdimm | |
US20130326114A1 (en) | Write mitigation through fast reject processing | |
US20190012260A1 (en) | Flash memory package and storage system including flash memory package | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
US9727453B2 (en) | Multi-level table deltas | |
US20190324680A1 (en) | Electronic device | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
CN105408961B (zh) | 数据存储方法、装置和非易失性存储器 | |
CN109902031A (zh) | 存储系统及其操作方法 | |
KR20220130526A (ko) | 메모리 시스템 및 그 동작 방법 |
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 |