CN110908599B - 数据的写入方法与写入系统 - Google Patents
数据的写入方法与写入系统 Download PDFInfo
- Publication number
- CN110908599B CN110908599B CN201910923746.2A CN201910923746A CN110908599B CN 110908599 B CN110908599 B CN 110908599B CN 201910923746 A CN201910923746 A CN 201910923746A CN 110908599 B CN110908599 B CN 110908599B
- Authority
- CN
- China
- Prior art keywords
- write
- unit
- module
- current
- layer
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
Abstract
本发明实施例提供一种数据的写入方法和写入系统,该方法包括:获取一次写操作可以写成功的存储单元最大量;在对多个存储单元进行当前次写校验失败后,获取当前次写校验的校验结果;根据校验结果对多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于最大量;按照单元组对多个存储单元进行分批次的多次写操作。本发明解决了现有技术中存储器数据写入效率较低的技术问题。
Description
技术领域
本发明涉及半导体技术领域,具体涉及一种应用于存储器的数据写入方法与写入系统。
背景技术
存储器是现代信息技术中用于存储信息的设备,数据的读写速度对于存储器来说至关重要。存储器在写入数据时,需要通过写校验(program veriyf)和写操作(program)这两种操作,其中,写校验用于在写操作后读取存储单元中写入的数据,以判断该存储单元是否将数据写成功。
图1所示为现有技术中应用于存储器的一种数据写入方法流程图。参照图1,现有技术中的数据写入方法通常为:一次写校验→写校验失败后的多次写操作→一次写校验→…,一直循环到写校验成功,即写校验针对的所有存储单元都将数据写成功。该方法中,一次写校验失败后对所校验的所有存储单元进行分批次的多次写操作,且多次写操作在所操作存储单元的数量方面无差别,即,每次写操作的存储单元数量都为同一值。若假设一次写校验的存储单元数量为A,一次写操作的存储单元数量为C,则写校验失败后的多次写操作总共次数为B=A/C,这里C取值受成本限定。
上述数据写入方法所需写操作次数较多,进而使得每次数据写入都会耗费大量时间,从而导致存储器的数据写入效率较低。
发明内容
有鉴于此,本发明实施例提供了一种数据的写入方法与写入系统,用于解决现有技术中存储器数据写入效率较低的技术问题。
根据本发明的第一方面,提供一种数据写入方法,包括:
获取一次写操作可以写成功的存储单元最大量;
在对多个存储单元进行当前次写校验失败后,获取所述当前次写校验的校验结果;
根据所述校验结果对所述多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于所述最大量;
按照所述单元组对所述多个存储单元进行分批次的多次写操作。
可选地,根据所述校验结果对所述多个存储单元分组,包括:
将所述多个存储单元以所述最大量为单位进行划分,得到多个子单元组;
根据所述校验结果获取各个所述子单元组的参考值,所述参考值为所述子单元组中写失败的存储单元数量;
根据所述参考值将所述多个子单元组划分成所述单元组,以使各个所述单元组中的所述参考值之和不大于所述最大量。
可选地,根据所述参考值将所述多个子单元组划分成所述单元组,包括:
以每个所述子单元组作为第一运算层中的一个单元模块,并通过当前运算层两个单元模块组建下一运算层一个单元模块的方式构建多个运算层;
从多个所述运算层中确定当前的优先级最高层,其中,所述优先级最高层为层数最大的包括目标单元模块的运算层,所述目标单元模块中的所述参考值之和不大于所述最大量;
从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层;
在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组。
可选地,从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层,包括:
获取所述当前次写校验在当前数据写入过程中的排列次数;
在所述排列次数不大于预设次数的情况下,将当前的所述优先级最高层确定为所述目标运算层;
在所述排列次数大于预设次数的情况下,将当前数据写入过程中得到的历史的所述优先级最高层确定为所述目标运算层。
可选地,从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层,包括:
获取各个所述运算层在多个数据写入过程中的所述当前次写校验失败后作为所述优先级最高层的次数,得到多个优先级次数;
将多个所述优先级次数中的最大值所关联的运算层确定为所述目标运算层;
其中,多个所述数据写入过程包括当前的数据写入过程和历史的数据写入过程。
可选地,在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组,包括:
根据所述当前次写校验的存储单元顺序,获取所述单元模块的排列顺序;
获取各个所述单元模块中的子单元数量;
根据所述单元模块的排列顺序将多个所述子单元数量进行排序,生成目标序列,以使按照所述目标序列进行分批次的多次写操作。
可选地,按照所述单元组对所述多个存储单元进行分批次的多次写操作,包括:
根据所述子单元组数量配置多个子电路模块,使得每个所述子单元组都配置有一个对应的所述子电路模块;
根据所述单元组数量配置多个电路模块,所述电路模块和所述单元组按排列顺序一一对应,且每个所述电路模块包括的所述子电路模块数量和对应的所述单元组包括的所述子单元组的数量相等;
通过多个所述电路模块顺次对所述多个存储单元进行分批次的多次写操作。
可选地,获取一次写操作可以写成功的存储单元最大量,包括:
获取执行环境参数和执行性能参数相关联的关联信息,所述执行环境参数为写操作执行的环境参数,所述执行性能为一次写操作可以写成功的存储单元最大数量;
获取当前执行环境参数,并从所述关联信息中提取所述当前执行环境参数所关联的执行性能参数;
将提取出的所述执行性能参数确定为所述最大量。
可选地,所述执行环境参数包括:写操作时的电源电压,和/或,环境温度。
根据本发明的第二方面,提供一种数据的写入系统,包括:
预配置模块,用于获取一次写操作可以写成功的存储单元最大量;
配置模块,用于在对多个存储单元进行当前次写校验失败后,获取所述当前次写校验的校验结果;以及,根据所述校验结果对所述多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于所述最大量;
写操作模块,用于按照所述单元组对所述多个存储单元进行分批次的多次写操作。
可选地,所述配置模块用于:
将所述多个存储单元以所述最大量为单位进行划分,得到多个子单元组;
根据所述校验结果获取各个所述子单元组的参考值,所述参考值为所述子单元组中写失败的存储单元数量;
根据所述参考值将所述多个子单元组划分成所述单元组,以使各个所述单元组中的所述参考值之和不大于所述最大量。
可选地,所述配置模块用于:
以每个所述子单元组作为第一运算层中的一个单元模块,并通过当前运算层两个单元模块组建下一运算层一个单元模块的方式构建多个运算层;
从多个所述运算层中确定当前的优先级最高层,其中,所述优先级最高层为层数最大的包括目标单元模块的运算层,所述目标单元模块中的所述参考值之和不大于所述最大量;
从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层;
在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组。
可选地,所述配置模块用于:
获取各个所述运算层在多个数据写入过程中的所述当前次写校验失败后作为所述优先级最高层的次数,得到多个优先级次数;
将多个所述优先级次数中的最大值所关联的运算层确定为所述目标运算层;
其中,多个所述数据写入过程包括当前的数据写入过程和历史的数据写入过程。
可选地,所述配置模块用于:
获取所述当前次写校验在当前数据写入过程中的排列次数;
在所述排列次数不大于预设次数的情况下,将当前的所述优先级最高层确定为目标运算层;
在所述排列次数大于预设次数的情况下,将当前数据写入过程中得到的历史的所述优先级最高层确定为目标运算层。
可选地,所述配置模块用于:
根据所述当前次写校验的存储单元顺序,获取所述单元模块的排列顺序;
获取各个所述单元模块中的子单元数量;
根据所述单元模块的排列顺序将多个所述子单元数量进行排序,生成目标序列,以使按照所述目标序列进行分批次的多次写操作。
可选地,所述写操作模块用于:
根据所述子单元组数量配置多个子电路模块,使得每个所述子单元组都配置有一个对应的所述子电路模块;
根据所述单元组数量配置多个电路模块,所述电路模块和所述单元组按排列顺序一一对应,且每个所述电路模块包括的所述子电路模块数量和对应的所述单元组包括的所述子单元组的数量相等;
通过多个所述电路模块顺次对所述多个存储单元进行分批次的多次写操作。
可选地,所述预配置模块用于:
获取执行环境参数和执行性能参数相关联的关联信息,所述执行环境参数为写操作执行的环境参数,所述执行性能为一次写操作可以写成功的存储单元最大数量;
获取当前执行环境参数,并从所述关联信息中提取所述当前执行环境参数所关联的执行性能参数;
将提取出的所述执行性能参数确定为所述最大量。
根据本发明的第三方面,提供一种存储器存储装置,包括:
主机接口,用以连接至主机系统;
存储器接口,用以连接至存储器;以及,
存储器管理电路,连接至所述主机接口与所述存储器接口,其中,所述存储器管理电路用以从所述主机接口接收待存储数据,并通过执行第一方面所述的数据写入方法,从所述存储器接口将所述待存储数据写入所述存储器。
本发明的实施例具有以下优点或有益效果:
本发明提供的数据写入方法根据写校验得到的校验结果对写校验的多个存储单元进行分组,使得分组后得到的各个单元组中写失败的存储单元数量不大于一次写操作可以写成功的存储单元最大量,这不仅有利于各个单元组在一次写操作中将数据成功写入各存储单元,而且各单元组中可以并入任意数量写成功的存储单元,因而有利于减少写操作的次数,从而解决了现有技术中存储器数据写入效率较低的技术问题。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术中存储器数据写入方法的流程图;
图2是根据本发明实施例的一种数据写入方法的流程图;
图3是根据本发明实施例的另一种数据写入方法的流程图;
图4是根据本发明实施例的数据写入系统的结构框图;
图5是根据本发明实施例的多个运算层的结构示意图;
图6是根据本发明实施例的多个运算层的一种示例性示意图;
图7是根据本发明实施例的当前的优先级最高层确定方法流程图;
图8是根据本发明实施例的目标运算层的分析方法流程图;
图9是根据本发明实施例的单元组划分的方法流程图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
现有技术的数据写入方法中,一次写校验失败后对所校验的所有存储单元进行分批次的多次写操作,且多次写操作在所操作存储单元的数量方面无差别,这种数据写入方法中写操作次数较多,进而使得每次数据写入都会耗费大量时间,从而导致存储器的数据写入效率较低,鉴于此,本发明提供了一种数据写入方法和执行该数据写入方法的数据写入系统及数据写入装置,以提高存储器的数据写入效率。
本发明所提供的数据写入方法不再以等数量存储单元的方式执行多次写操作,而是根据目标序列的多个数值进行多次写操作,参照图2,可以是从目标序列读取一个数值进行一次写操作,接着读取目标序列中的下一个数值,直到读取到目标序列的最后一个数值以完成本次校验失败后的所有写操作。参照图3,本发明所提供的数据写入方法具体包括:
步骤S301,获取一次写操作可以写成功的存储单元最大量(以下描述中简称“最大量”);
步骤S302,在对多个存储单元(以下描述中其总数记为A)进行当前次写校验失败后,获取当前次写校验的校验结果,即,获取所校验各存储单元是否写成功;
步骤S303,根据校验结果对多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于最大量;
步骤S304,按照单元组对多个存储单元进行分批次的多次写操作,即,各个单元组中的存储单元通过一次写操作完成数据写入。
需要说明的是,经过一次写校验后的多次写操作,部分存储单元会写成功,但也有部分存储单元写失败,在经过下次写校验后各存储单元是否写成功则可确定,且下次写校验的多次写操作无需向写成功的存储单元写入数据。
本发明所提供的数据写入方法根据写校验得到的校验结果对写校验的多个存储单元进行分组,使得分组后得到的各个单元组中写失败的存储单元数量不大于一次写操作可以写成功的存储单元最大量,这不仅有利于各个单元组在一次写操作中将数据成功写入各存储单元,而且各单元组中可以并入任意数量写成功的存储单元,因而有利于减少写操作的次数,从而解决了现有技术中存储器数据写入效率较低的技术问题。
图4所示为执行上述数据写入方法的数据写入系统结构框图。参照图4,该数据写入系统包括:
预配置模块100,用于获取一次写操作可以写成功的的存储单元最大量;
配置模块200,用于在对多个存储单元进行当前次写校验后,获取当前次写校验的校验结果;以及,根据校验结果对多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于最大量;
写操作模块300,用于按照单元组对多个存储单元进行分批次的多次写操作。
下面对数据写入系统的预配置模块100、配置模块200和写操作模块300进行详细介绍。
(一)预配置模块100
参照图4,在一个可选的实施方式中,预配置模块100包括测试模块101、关联信息存储模块102、监测模块103、最大量存储模块104和总量存储模块105,其中,
测试模块101,用于通过测试各种执行环境下写数据性能,得到执行环境参数和执行性能参数之间的关联信息,执行环境参数具体为写操作执行时的环境参数(例如写操作时的电源电压和环境温度),执行性能具体为一次写操作可以写成功的存储单元最大数量;
关联信息存储模块102,和测试模块101电连接,用于在测试模块101上电后将测试模块101得到的上述关联信息进行存储;
监测模块103,用于在每次写校验失败后的多次写操作开始前获取当前执行环境参数,并和关联信息存储模块102连接以将当前执行环境参数发送给关联信息存储模块102,使得关联信息存储模块102从关联信息中提取当前执行环境参数所关联的执行性能参数;
最大量存储模块104,和关联信息存储模块102连接,用于将关联信息存储模块102提取出的执行性能参数确定为最大量;
总量存储模块105,用于存储一次写校验的存储单元总量,以便写校验和写操作通过读取总量存储模块105而快速调用存储单元总量。具体地,一次写校验的存储单元总量多由存储器的芯片设计决定,芯片设计好后一次写校验的存储单元总量则为固定值。
本发明实施例中,通过测试模块101测得的关联信息和当前执行环境参数确定一次写操作中允许各存储单元都写成功的存储单元最大量,从而使得获取的最大量更加准确。
(二)配置模块200
参照图4,在一个可选的实施方式中,配置模块200包括运算电路201、统计模块202和目标序列存储模块205,其中,
运算电路201,和最大量存储模块104连接,用于根据校验结果获取各个子单元组的参考值,子单元组为将多个存储单元以最大量存储模块104存储的最大量为单位进行划分而得到的,参考值为子单元组中写失败的存储单元数量;
统计模块202,和运算电路201连接,用于根据运算电路201得到的参考值将多个子单元组划分成上述单元组,以使各个单元组中的参考值之和不大于最大量;
目标序列存储模块205,和统计模块202连接,用于根据统计模块202所得到的单元组生成上述目标序列,并存储该目标序列。
为了更形象地理解以上内容,下面进行举例说明。
假设一次写校验的存储单元总量为16,一次写操作,可以写成功的存储单元最大量为4,在对16个存储单元进行当前次写校验后的校验结果依次如表一所示(存储单元若写失败则校验结果为0,反之为1),则子单元组和各子单元组的参考值如表二所示。
表一
存储单元序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
校验结果 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
表二
本发明实施例中,由于子单元组包括的存储单元数量为一次写操作中允许写成功的存储单元最大量,因而一次写操作可以写成功一个子单元组,以子单元组为最小划分单位更加合理。
在另一个可选的实施例中,配置模块200还包括优先级模块,其中,运算电路201还可以将每个子单元组作为第一运算层中的一个单元模块,并通过当前运算层两个单元模块组建下一运算层一个单元模块的方式构建多个运算层;
优先级模块,用于从多个运算层中确定当前的优先级最高层,并从当前的优先级最高层和历史的优先级最高层中确定目标运算层,其中,优先级最高层为层数最大的包括目标单元模块的运算层,目标单元模块中的参考值之和不大于最大量;
统计模块202,分别和运算电路201以及优先级模块连接,用于从运算电路201获取多个运算层,并在层数不大于优先级模块所得目标运算层的运算层中,将所组建单元模块不是目标单元模块的目标单元模块确定为单元组。
需要说明的是,当前的优先级最高层,指当前数据写入过程中的当前次写校验失败后所得到的优先级最高层;历史的优先级最高层,不仅包括当前数据写入过程中的历史优先级最高层,还包括当前数据写入过程之前的历史优先级最高层。例如,当前数据写入过程中的当前次写校验为第三次,则当前数据写入过程中的第二次写校验失败后得到的优先级最高层为历史的优先级最高层,且,上一次数据写入过程中的各次写校验失败后得到的优先级最高层也为历史的优先级最高层。
本发明实施例中,将通过当前运算层两个单元模块组建下一运算层一个单元模块,便于配置模块200基于计算机的二进制原理进行快速运算,从而提高数据写入的速率。
图5提供了多个运算层的结构示意图。参照图5,若将一次写校验的存储单元总量记为A,将一次写操作中允许各存储单元都写成功的存储单元最大量记为C,将运算层层数记为i,将每个运算层的单元模块数量记为j,那么,第一层的单元模块数量j=A/C,第二层的单元模块数量j=A/2C,依次类推;且最后一个运算层为第(log2(A/C)+1)层。在下面的描述中,还将各个单元模块的参考值之和记为K[i][j],j=0,1,2,…。
以表二所示的子单元组为例,则构建的多个运算层如图6所示,图6将各个单元模块的K[i][j]进行了标示,且目标单元模块通过白色框标示。参照图6,包括目标单元模块的最高运算层(即层数最大的运算层)为第二运算层(即i=2的运算层),因而优先级模块将i=2的运算层确定为优先级最高层;若将当前的优先级最高层确定为目标运算层,则目标运算层为i=2的运算层。在层数不大于目标运算层的运算层中,目标单元模块总共有5个,但所组建单元模块不是目标单元模块的目标单元模块总共有三个,即第2运算层的第二个单元模块和第一运算层的前两个单元模块,因而,统计模块202确定出的单元组按存储单元序号排列如表三所示。
表三
需要注意的是,在图2所示的方法中,根据目标序列的多个数值进行多次写操作,需要存储单元的排列顺序固定,即,无论是当前次写校验,还是写校验后划分得到子单元组以及将多个子单元组划分得到单元组,存储单元的排列顺序始终不变。
图7所示为优先级模块从多个运算层中确定当前的优先级最高层的一种具体实施方法。参照图7,当前的优先级最高层确定方法,包括:
步骤S701,读取i,其中,i的数值为预先获取,i为一个大于1且小于最到运算层层数的数值;
步骤S702,判断第i运算层的K[i][j]是否都大于C,其中,若第i运算层的K[i][j]没有都大于C则执行步骤S703,若i层的K[i][j]都大于C则执行步骤S708;
步骤S703,通过i自加一更新i;
步骤S704,判断第i运算层是否为最后一个运算层,其中,若第i运算层是最后一个运算层则执行步骤S705,反之执行步骤S706;
步骤S705,输出第i运算层为目标运算层;
步骤S706,判断第i运算层的K[i][j]是否都大于C,其中,若第i运算层的K[i][j]没有都大于C则返回执行步骤S703,若i层的K[i][j]都大于C则执行步骤S707;
步骤S707,通过i自减一更新i,并执行步骤S705;
步骤S708,通过i自减一更新i;
步骤S709,判断i是否为1,其中,若i为1则执行步骤S705,反之执行步骤S710;
步骤S710,判断第i运算层的K[i][j]是否都大于C,其中,若第i运算层的K[i][j]没有都大于C则执行步骤S705,若i层的K[i][j]都大于C则执行步骤S708。
参照图4,上述优先级模块包括相互连接的优先级存储模块203和优先级分析模块204,优先级存储模块203中存储历史的优先级最高层,优先级分析模块204从优先级存储模块203中读取历史的优先级最高层,以实现从当前的优先级最高层和历史的优先级最高层中确定目标运算层。若将多次写数据过程中第m次写校验后第i运算层为优先级最高层的次数记为number[m][i],那么,优先级存储模块203中存储当前次写校验失败之前记录的历史数据number[m][i]。优先级分析模块204可以采用如下所述的方法A和/或方法B确定目标运算层:
(1)方法A,包括:
获取各个运算层在多个数据写入过程中的当前次写校验失败后作为优先级最高层的次数,得到多个优先级次数;
将多个优先级次数中的最大值所关联的运算层确定为目标运算层;
其中,多个数据写入过程包括当前的数据写入过程和历史的数据写入过程。
具体地,方法A的具体实施方法可以为图8所示的目标运算层分析方法。参照图8,该目标运算层分析方法,包括:
步骤S801,获取当前第p次写校验失败后的优先级最高层x;
步骤S802,从优先级存储模块203读取number[p][x],并通过number[p][x]自加一更新number[p][x];
步骤S803,从优先级存储模块203读取number[p][y],其中,y为第p次写校验失败后为目标运算层次数最多的运算层层数;
步骤S804,判断number[p][y]是否小于更新后的number[p][x];
步骤S805,在number[p][y]小于更新后的number[p][x]的情况下,将第x运算层确定为当前第p次写校验失败后的目标运算层;
步骤S806,在number[p][y]不小于更新后的number[p][x]的情况下,将第y运算层确定为当前第p次写校验失败后的目标运算层。
上述方法A是基于同写校验排列次数从多次写数据过程的优先级最高层中确定目标运算层,即,通过统计的方法得到所述目标运算层,利于消除本次写校验对目标运算层所带来的误差。
(2)方法B,包括:
获取当前次写校验在当前数据写入过程中的排列次数;
在排列次数不大于预设次数的情况下,将当前的优先级最高层确定为目标运算层;
在排列次数大于预设次数的情况下,将当前数据写入过程中得到的历史的优先级最高层确定为目标运算层。
具体地,预设次数可以设为3,在排列次数大于3的情况下,可以将当前数据写入过程中第三次写校验失败后得到的优先级最高层确定为目标运算层。
由于随着写操作次数的增多,写失败的存储单元逐渐减少,目标运算层层数会逐渐增大,因而以层数较小的运算层作为目标运算层会使多个存储单元划分到较多的单元组内,即,使得一次写操作的存储单元更少,因而,方法B有利于确保该次写校验失败后的多次写操作将所有存储单元写成功,从而降低下次写校验失败的概率,以提供数据写入效率;此外,方法B不仅减少了目标运算层的确定步骤,而且由于以层数较小的运算层作为目标运算层,还有利于减少基于目标运算层确定单元组的步骤,从而提高了数据写入效率。
在另一个可选的实施例中,统计模块202还用于:
根据当前次写校验的存储单元顺序,获取单元模块的排列顺序;
获取各个单元模块中的子单元数量;
根据单元模块的排列顺序将多个子单元数量进行排序,生成目标序列,以使按照目标序列进行分批次的多次写操作,即按照目标序列中数值的大小和顺序进行多次写操作。
具体地,目标序列buff中各个数值依次为C[1],C[2],…,C[B],则进行B次写操作,且第w次写操作的子单元组数量为C[w]。
以表三所示单元阻为例,则目标序列buff为buff=[1,1,2],即,进行三次写操作,第一次和第二次都是写一个子单元组,第三次是写两个子单元组,且第一次写子单元组1,第二次写子单元组2,第三次写子单元组3和子单元组4。
上述统计模块202在层数不大于目标运算层的运算层中,将所组建单元模块不是目标单元模块的目标单元模块确定为单元组,具体实施方法可以采用图9所示的单元组划分方法。参照图9,该单元组划分方法,包括:
步骤S910,i赋值为目标运算层的层数,j赋值为0;
步骤S920,判断K[i][j]是否不大于最大量C,其中,若K[i][j]大于C则顺次执行步骤S930和步骤S940,反之执行步骤S960;
步骤S930,将2^(i-1)写入目标序列;
步骤S940,判断是否遍历完i层,其中,若没有遍历完i层则执行步骤S950,反之结束;
步骤S950,通过使j自加一得到更新后的j,并返回执行步骤S920;
步骤S960,包括步骤S961、步骤S962、步骤S963和步骤S964,具体如下:
步骤S961,判断K[i-1][2*j+h0]是否不大于C,若K[i-1][2*j+h0]不大于C则顺次执行步骤S962和步骤S963,反之执行步骤S970;
步骤S962,将2^(i-2)写入目标序列;
步骤S963,判断h0是否为1,其中,若h0不为1则执行步骤S964,反之执行步骤S940;
步骤S964,通过h0自加一更新h0,并返回执行步骤S961。
需要说明的是,步骤S970和步骤S960原理相同,都是在上一步骤(对于步骤S970来说,上一步骤为步骤S 960)判断的当前单元模块中参数值之和大于最大量的情况下,遍历组建当前单元模块的两个单元模块,对于组建当前单元模块的任一单元模块,若其参数值之和大于C,则执行下一步骤(对于步骤S970来说,上一步骤为步骤S980),反之则将2^(n-1)写入目标序列,n为组建当前单元模块的单元模块所在运算层的层数。
步骤S960及后续步骤,若当前步骤(对于步骤S960来说,当前步骤为步骤是960)中存在执行下一步骤的条件,则该单元组划分方法会包括下一步骤,直到当前步骤判断参数值之和的单元模块处于第一运算层,因而,若图9所示的单元组划分方法中包括步骤S980乃至后续步骤,这里不再赘述。
需要说明的是:(1)K[i][j]中j=0,1,2,…;(2)图9所示的单元组划分方法中,hv(v=0,1,2,…)的初始值为0。
并将遍历到的组建当前单元模块的任一单元模块作为当前单元模块后重复步骤S860接下来执行的步骤。若步骤S870判断出当前单元模块中参数值之和大于最大量的情况下继续执行步骤S880,依次延伸直到判断出当前单元模块中参数值之和不大于最大量或判断到第一运算层。
(三)写操作模块300
参照图4,在一个可选的实施例中,写操作模块300包括:配置电路301和电路选择模块302以及多个子电路模块303,其中,
配置电路301,分别和最大量存储模块104以及总量存储模块105连接,以根据最大量C和存储单元总量A确定子单元组数量,并根据子单元组数量配置多个子电路模块303,使得每个子单元组都配置有一个对应的子电路模块303;
电路选择模块302根据单元组数量配置多个电路模块,电路模块和单元组按排列顺序一一对应,且每个电路模块包括的子电路模块数量和对应的单元组包括的子单元组的数量相等;
多个电路模块303顺次对多个存储单元进行分批次的多次写操作。
以表三所示的单元组为例,若单元组1对应电路模块1,单元组2对应电路模块2,单元组3对应电路模块3,则第一次写操作中,电路模块1工作以向单元组1中写失败的存储单元写入数据;第二次写操作中,电路模块2工作以向单元组2中写失败的存储单元写入数据;第三次写操作中,电路模块3工作以向单元组3中写失败的存储单元写入数据。该示例中,写操作次数不再为4,写操作减到了3,即写操作的次数减少了,且每次写操作中需要写入数据的存储单元数量不大于最大量4。
应当注意的是,虽然在数据写入系统以及系统图例中给出本发明实施例的模块以及模块的连接关系,但是所述模块实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块,因而,数据写入系统还可以由其它方法划分的模块组建。
关于本发明所提供的数据写入方法,在上述数据写入系统的描述中以进行详述,因而不再赘述。
针对上述数据写入方法,本发明还提供了一种存储器存储装置,包括:主机接口,用以连接至主机系统;存储器接口,用以连接至存储器;以及,存储器管理电路,连接至主机接口与存储器接口,其中,存储器管理电路用以从主机接口接收待存储数据,并通过执行以上的数据写入方法,从存储器接口将待存储数据写入存储器,以提高数据写入的效率。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。
系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。
根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据的写入方法,其特征在于,包括:
获取一次写操作可以写成功的存储单元最大量;
在对多个存储单元进行当前次写校验失败后,获取所述当前次写校验的校验结果;
根据所述校验结果对所述多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于所述最大量;
按照所述单元组对所述多个存储单元进行分批次的多次写操作;
其中,根据所述校验结果对所述多个存储单元分组,包括:
将所述多个存储单元以所述最大量为单位进行划分,得到多个子单元组;
根据所述校验结果获取各个所述子单元组的参考值,所述参考值为所述子单元组中写失败的存储单元数量;
根据所述参考值将所述多个子单元组划分成所述单元组,以使各个所述单元组中的所述参考值之和不大于所述最大量;
其中,根据所述参考值将所述多个子单元组划分成所述单元组,包括:
以每个所述子单元组作为第一运算层中的一个单元模块,并通过当前运算层两个单元模块组建下一运算层一个单元模块的方式构建多个运算层;
从多个所述运算层中确定当前的优先级最高层,其中,所述优先级最高层为层数最大的包括目标单元模块的运算层,所述目标单元模块中的所述参考值之和不大于所述最大量;
从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层;
在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组。
2.根据权利要求1所述的写入方法,其特征在于,从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层,包括:
获取各个所述运算层在多个数据写入过程中的所述当前次写校验失败后作为所述优先级最高层的次数,得到多个优先级次数;
将多个所述优先级次数中最大值所关联的运算层确定为所述目标运算层;
其中,多个所述数据写入过程包括当前的数据写入过程和历史的数据写入过程。
3.根据权利要求1所述的写入方法,其特征在于,从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层,包括:
获取所述当前次写校验在当前数据写入过程中的排列次数;
在所述排列次数不大于预设次数的情况下,将当前的所述优先级最高层确定为所述目标运算层;
在所述排列次数大于预设次数的情况下,将当前数据写入过程中得到的历史的所述优先级最高层确定为所述目标运算层。
4.根据权利要求1所述的写入方法,其特征在于,在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组,包括:
根据所述当前次写校验的存储单元顺序,获取所述单元模块的排列顺序;
获取各个所述单元模块中的子单元数量;
根据所述单元模块的排列顺序将多个所述子单元数量进行排序,生成目标序列,以使按照所述目标序列进行分批次的多次写操作。
5.根据权利要求1所述的写入方法,其特征在于,按照所述单元组对所述多个存储单元进行分批次的多次写操作,包括:
根据所述子单元组数量配置多个子电路模块,使得每个所述子单元组都配置有一个对应的所述子电路模块;
根据所述单元组数量配置多个电路模块,所述电路模块和所述单元组按排列顺序一一对应,且每个所述电路模块包括的所述子电路模块数量和对应的所述单元组包括的所述子单元组的数量相等;
通过多个所述电路模块顺次对所述多个存储单元进行分批次的多次写操作。
6.根据权利要求1所述的写入方法,其特征在于,获取一次写操作可以写成功的存储单元最大量,包括:
获取执行环境参数和执行性能参数相关联的关联信息,所述执行环境参数为写操作执行的环境参数,所述执行性能为一次写操作可以写成功的存储单元最大数量;
获取当前执行环境参数,并从所述关联信息中提取所述当前执行环境参数所关联的执行性能参数;
将提取出的所述执行性能参数确定为所述最大量。
7.根据权利要求6所述的写入方法,其特征在于,所述执行环境参数包括:写操作时的电源电压,和/或,环境温度。
8.一种数据的写入系统,其特征在于,包括:
预配置模块,用于获取一次写操作可以写成功的存储单元最大量;
配置模块,用于在对多个存储单元进行当前次写校验失败后,获取所述当前次写校验的校验结果;以及,根据所述校验结果对所述多个存储单元分组,以使得到的各个单元组中写失败的存储单元数量不大于所述最大量;
写操作模块,用于按照所述单元组对所述多个存储单元进行分批次的多次写操作;
其中,所述配置模块用于:
将所述多个存储单元以所述最大量为单位进行划分,得到多个子单元组;
根据所述校验结果获取各个所述子单元组的参考值,所述参考值为所述子单元组中写失败的存储单元数量;
根据所述参考值将所述多个子单元组划分成所述单元组,以使各个所述单元组中的所述参考值之和不大于所述最大量;
其中,所述配置模块用于:
以每个所述子单元组作为第一运算层中的一个单元模块,并通过当前运算层两个单元模块组建下一运算层一个单元模块的方式构建多个运算层;
从多个所述运算层中确定当前的优先级最高层,其中,所述优先级最高层为层数最大的包括目标单元模块的运算层,所述目标单元模块中的所述参考值之和不大于所述最大量;
从当前的所述优先级最高层和历史的所述优先级最高层中确定目标运算层;
在层数不大于所述目标运算层的运算层中,将所组建单元模块不是所述目标单元模块的目标单元模块确定为所述单元组。
9.根据权利要求8所述的写入系统,其特征在于,所述配置模块用于:
获取各个所述运算层在多个数据写入过程中的所述当前次写校验失败后作为所述优先级最高层的次数,得到多个优先级次数;
将多个所述优先级次数中的最大值所关联的运算层确定为所述目标运算层;
其中,多个所述数据写入过程包括当前的数据写入过程和历史的数据写入过程。
10.根据权利要求8所述的写入系统,其特征在于,所述配置模块用于:
获取所述当前次写校验在当前数据写入过程中的排列次数;
在所述排列次数不大于预设次数的情况下,将当前的所述优先级最高层确定为目标运算层;
在所述排列次数大于预设次数的情况下,将当前数据写入过程中得到的历史的所述优先级最高层确定为目标运算层。
11.根据权利要求8所述的写入系统,其特征在于,所述配置模块用于:
根据所述当前次写校验的存储单元顺序,获取所述单元模块的排列顺序;
获取各个所述单元模块中的子单元数量;
根据所述单元模块的排列顺序将多个所述子单元数量进行排序,生成目标序列,以使按照所述目标序列进行分批次的多次写操作。
12.根据权利要求8所述的写入系统,其特征在于,所述写操作模块用于:
根据所述子单元组数量配置多个子电路模块,使得每个所述子单元组都配置有一个对应的所述子电路模块;
根据所述单元组数量配置多个电路模块,所述电路模块和所述单元组按排列顺序一一对应,且每个所述电路模块包括的所述子电路模块数量和对应的所述单元组包括的所述子单元组的数量相等;
通过多个所述电路模块顺次对所述多个存储单元进行分批次的多次写操作。
13.根据权利要求8所述的写入系统,其特征在于,所述预配置模块用于:
获取执行环境参数和执行性能参数相关联的关联信息,所述执行环境参数为写操作执行的环境参数,所述执行性能为一次写操作可以写成功的存储单元最大数量;
获取当前执行环境参数,并从所述关联信息中提取所述当前执行环境参数所关联的执行性能参数;
将提取出的所述执行性能参数确定为所述最大量。
14.一种存储器存储装置,其特征在于,包括:
主机接口,用以连接至主机系统;
存储器接口,用以连接至存储器;以及,
存储器管理电路,连接至所述主机接口与所述存储器接口,其中,所述存储器管理电路用以从所述主机接口接收待存储数据,并通过执行权利要求1-7中任一项所述的数据的写入方法,从所述存储器接口将所述待存储数据写入所述存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910923746.2A CN110908599B (zh) | 2019-09-27 | 2019-09-27 | 数据的写入方法与写入系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910923746.2A CN110908599B (zh) | 2019-09-27 | 2019-09-27 | 数据的写入方法与写入系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908599A CN110908599A (zh) | 2020-03-24 |
CN110908599B true CN110908599B (zh) | 2021-02-02 |
Family
ID=69815096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910923746.2A Active CN110908599B (zh) | 2019-09-27 | 2019-09-27 | 数据的写入方法与写入系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908599B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116312676B (zh) * | 2023-05-17 | 2023-08-25 | 上海芯存天下电子科技有限公司 | Nor flash的写入方法、装置、编程电路及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770087A (zh) * | 2004-10-21 | 2006-05-10 | 微软公司 | 使用外部存储器设备来改进系统性能 |
CN104285206A (zh) * | 2012-04-26 | 2015-01-14 | 株式会社日立制作所 | 信息存储系统和控制信息存储系统的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239613B2 (en) * | 2008-12-30 | 2012-08-07 | Intel Corporation | Hybrid memory device |
US9069719B2 (en) * | 2012-02-11 | 2015-06-30 | Samsung Electronics Co., Ltd. | Method and system for providing a smart memory architecture |
CN104750426B (zh) * | 2013-12-30 | 2018-08-14 | 杭州华为数字技术有限公司 | 向存储介质写数据的方法和装置 |
KR102292217B1 (ko) * | 2015-02-06 | 2021-08-24 | 삼성전자주식회사 | 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템 |
CN105468563B (zh) * | 2015-12-28 | 2018-06-01 | 杭州士兰控股有限公司 | Spi从设备、spi通信系统及spi通信方法 |
-
2019
- 2019-09-27 CN CN201910923746.2A patent/CN110908599B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770087A (zh) * | 2004-10-21 | 2006-05-10 | 微软公司 | 使用外部存储器设备来改进系统性能 |
CN104285206A (zh) * | 2012-04-26 | 2015-01-14 | 株式会社日立制作所 | 信息存储系统和控制信息存储系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110908599A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN110377454B (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
CN111078459B (zh) | 半导体芯片的测试方法、装置及系统 | |
CN114124567A (zh) | 基于大数据漏洞挖掘的云服务处理方法及人工智能系统 | |
US10210296B2 (en) | Adaptive bug-search depth for simple and deep counterexamples | |
CN110908599B (zh) | 数据的写入方法与写入系统 | |
CN115547395A (zh) | 测试方法、系统及闪存设备 | |
CN114519006A (zh) | 测试方法、装置、设备以及存储介质 | |
CN113568836A (zh) | 多时间序列的样本特征提取方法以应用其的软件检测方法 | |
US8196082B1 (en) | Signal routing and pin placement | |
CN112133357A (zh) | 一种eMMC的测试方法及装置 | |
CN111383704B (zh) | 一种存储器内建自测试电路和对存储器的测试方法 | |
CN116149917A (zh) | 评估处理器性能的方法及装置、计算设备、可读存储介质 | |
CN112698974A (zh) | 故障注入测试方法、装置和存储介质 | |
CN113574511A (zh) | 测试用例生成装置、测试用例生成方法和测试用例生成程序 | |
CN115248783A (zh) | 软件测试方法、系统、可读存储介质及计算机设备 | |
JP2022124240A (ja) | 診断パターン生成方法及び計算機 | |
CN114691496A (zh) | 单元测试方法、装置、计算设备及介质 | |
JP6912104B2 (ja) | 試験装置、試験方法及びコンピュータプログラム | |
CN112948281A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113190497B (zh) | 一种可重构处理器的任务处理方法及可重构处理器 | |
CN113518974A (zh) | 用于找出并标识网络中的计算节点的系统和方法 | |
CN112602059A (zh) | 生成矢量谓词摘要 | |
US9672040B2 (en) | Apparatus and method for determining a cumulative size of trace messages generated by a plurality of instructions | |
CN113704687B (zh) | 一种张量计算运行方法、装置及运算系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Unit a1005-1007, block a, pioneering building, Tsinghua Science Park, 101 University Road, Tangjiawan Town, Zhuhai City, Guangdong Province, 519080 Patentee after: Zhuhai Boya Technology Co.,Ltd. Address before: Unit a1005-1007, block a, pioneering building, Tsinghua Science Park, 101 University Road, Tangjiawan Town, Zhuhai City, Guangdong Province, 519080 Patentee before: ZHUHAI BOYA TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |