CN105512047B - Flash闪存的写操作、擦除操作方法及装置 - Google Patents
Flash闪存的写操作、擦除操作方法及装置 Download PDFInfo
- Publication number
- CN105512047B CN105512047B CN201410505228.6A CN201410505228A CN105512047B CN 105512047 B CN105512047 B CN 105512047B CN 201410505228 A CN201410505228 A CN 201410505228A CN 105512047 B CN105512047 B CN 105512047B
- Authority
- CN
- China
- Prior art keywords
- address
- flash
- data
- written
- virtual
- 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
Abstract
一种Flash闪存的写操作、擦除操作方法及装置,所述Flash闪存的写操作方法包括:接收对所述Flash闪存的写操作指令;获取所述写操作指令中包含的虚拟地址;根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址;其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;将待写入数据写入所述虚拟地址对应的实际地址中的空白地址。采用所述写操作、擦除操作方法及装置,可以有效减少Flash闪存的擦除次数,提高Flash闪存的使用寿命。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种Flash闪存的写操作、擦除操作方法及装置。
背景技术
随着电子技术的不断发展,现有的家电产品越来越智能化。智能家电能够实现的功能越来越多,需要存储的程序代码量越大。目前存储的方式多为闪存(Flash Memory)搭配电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)的方式。
Flash闪存与EEPROM最大的区别是:Flash闪存按扇区擦除,而EEPROM按字节擦除。由于Flash闪存是按扇区成块的擦除,所以它适用于存储一些变动较小的程序,故它适合做程序存储器。而EEPROM容量小,且可按字节擦除,因此EEPROM适用于存储一些经常变动的参数、变量等,因此适用于做数据存储器。
相比于EEPROM,Flash闪存的价格相对较低,且同样晶圆面积下Flash闪存可以得到更大的容量,为降低生产成本,一些对性能要求相对较低的小型家电产品广泛应用Flash闪存作为数据存储器。
然而,将Flash闪存作为数据存储器进行数据存储时,由于存储的数据会经常发生改变,因此需要频繁进行数据写入、擦除等操作,但Flash闪存的可擦除次数较少,使用寿命较短。
发明内容
本发明实施例解决的问题是减少Flash闪存的擦除次数,提高Flash闪存的使用寿命。
为解决上述问题,本发明实施例提供一种Flash闪存的写操作方法,包括:接收对所述Flash闪存的写操作指令;获取所述写操作指令中包含的虚拟地址;根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;将待写入数据写入所述虚拟地址对应的实际地址中的空白地址。
可选的,所述虚拟地址对应的实际地址包括一个标志位地址,所述标志位地址用于存储所述虚拟地址对应的实际地址中其他列地址标志位的数值,所述将待写入数据写入所述虚拟地址对应的实际地址中的空白地址,包括:获取所述虚拟地址对应的实际地址中标志位地址存储的标志位的数值,判断所述标志位的数值是否全部为零,当所述标志位的数值不全为零时,将所述待写入数据写入标志位数值不为零的列地址。
可选的,所述将待写入数据写入标志位数值不为零的列地址,包括:读取所述标志位的数值,从低位向高位依次获取所述标志位的数值,将所述待写入数据写入到第一个标志位数值不为零的列地址。
可选的,所述Flash闪存的写操作方法还包括:当所述标志位的数值全部为零时,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作。
可选的,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作之前,还包括:获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,并将所述其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据进行备份。
可选的,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作完成之后,还包括:将已备份的数据分别写入对应虚拟地址对应的实际地址中的列地址,所述已备份的数据包括:其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据。
可选的,所述将已备份的数据分别写入对应虚拟地址中的列地址,包括:将所述已备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
本发明实施例还提供了一种Flash闪存的擦除操作方法,包括:接收到对所述Flash闪存的擦除操作指令时,获取所述擦除操作指令中包含的虚拟地址;根据预设的虚拟地址和实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址所处的页,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;对所述虚拟地址对应的实际地址所处的页执行擦除操作。
可选的,所述接收到对所述Flash闪存的擦除操作指令,包括:接收到用户向所述Flash闪存发送擦除操作指令;或当所述虚拟地址对应的实际地址中不存在可写入数据的列地址时,所接收到的对所述Flash闪存的擦除操作指令。
可选的,对所述虚拟地址对应的实际地址所处的页执行擦除操作前,还包括:获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,将所述其他虚拟地址对应的实际地址中最新写入的数据进行备份。
可选的,当完成擦除操作之后,还包括:将已备份的数据分别写入对应虚拟地址对应的实际地址中的列地址,所述已备份的数据包括其他虚拟地址对应的实际地址中最新写入的数据。
可选的,所述将已备份的数据分别写入对应虚拟地址中的列地址,包括:将所述已备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
为解决上述问题,本发明实施例还提供了一种Flash闪存的写操作装置,包括:第一接收单元,用于接收对所述Flash闪存的写操作指令;第一获取单元,用于获取所述写操作指令中包含的虚拟地址;第二获取单元,用于根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;第一写入单元,用于将待写入数据写入所述虚拟地址对应的实际地址中的空白地址。
可选的,所述虚拟地址对应的实际地址包括一个标志位地址,所述标志位地址用于存储所述虚拟地址对应的实际地址中其他列地址标志位的数值,所述第一写入单元,用于获取所述虚拟地址对应的实际地址中标志位地址存储的标志位的数值,判断所述标志位的数值是否全部为零,当所述标志位的数值不全为零时,将所述待写入数据写入标志位数值不为零的列地址。
可选的,所述第一写入单元,用于读取所述标志位的数值,从低位向高位依次获取所述标志位的数值,将所述待写入数据写入到第一个标志位数值不为零的列地址。
可选的,所述Flash闪存的写操作装置还包括:第一擦除单元,用于当所述标志位的数值全部为零时,对所述虚拟地址对应的实际地址所处的Flash页执行擦除操作。
可选的,在所述第一擦除单元执行擦除操作之前,还包括:第一备份单元,用于获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,将所述其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据进行备份。
可选的,在所述第一擦除单元执行擦除操作之后,还包括:备份写入单元,用于将所述第一备份单元备份的数据分别写入对应虚拟地址对应的实际地址中的列地址。
可选的,所述备份写入单元用于将所述第一备份单元备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
本发明实施例还提供了一种Flash闪存的擦除操作装置,包括:第二接收单元,用于接收对所述Flash闪存的擦除操作指令;第三获取单元,用于获取所述擦除操作指令中包含的虚拟地址;第四获取单元,用于根据预设的虚拟地址和实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址所处的页,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;第二擦除单元,用于对所述虚拟地址对应的实际地址所处的页执行擦除操作。
可选的,所述第二接收单元,用于接收用户向所述Flash闪存发送擦除操作指令;或当所述虚拟地址对应的实际地址中不存在可写入数据的列地址时,接收对所述Flash闪存的擦除操作指令。
可选的,在所述第二擦除单元执行擦除操作之前,还包括:第二备份单元,用于获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,将所述其他虚拟地址对应的实际地址中最新写入的数据进行备份。
可选的,在所述第二擦除单元执行擦除操作之后,还包括:第二写入单元,用于将所述第二备份单元备份的数据分别写入对应虚拟地址对应的实际地址中的列地址。
可选的,在所述第二擦除单元执行擦除操作之后,还包括:第二写入单元,用于将所述第二备份单元备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
与现有技术相比,本发明实施例的技术方案具有以下优点:
将Flash闪存中的页预先划分成行地址和列地址的矩阵结构,将Flash闪存中一行的多个列地址映射为一个虚拟地址,当对Flash闪存进行操作时,是对虚拟地址进行操作。由于一个虚拟地址对应多个列地址,则可以对同一个虚拟地址进行多次的写入操作,而不需要每次对同一个地址进行写入操作就必须先进行擦除,从而可以减少Flash闪存的擦除次数,因此可以有效提高Flash闪存的使用寿命。
此外,在执行擦除操作前,对Flash闪存页中其他虚拟地址对应的列地址中已写入的数据进行备份,并在擦除操作之后将备份的数据重新写入到对应的虚拟地址对应的列地址中,从而有效防止因整页擦除数据而引起的数据丢失。
附图说明
图1是本发明实施例中的一种Flash闪存的写操作方法的流程图;
图2是本发明实施例中的一种Flash闪存页划分成矩阵结构的示意图;
图3是本发明实施例中的一种虚拟地址对应的实际地址的结构示意图;
图4是本发明实施例中的另一种Flash闪存的写操作方法的流程图;
图5是本发明实施例中的一种Flash闪存的读操作方法的流程图;
图6是本发明实施例中的一种Flash闪存的擦除操作方法的流程图;
图7是本发明实施例中的一种Flash闪存的写操作装置的结构示意图;
图8是本发明实施例中的一种Flash闪存的擦除操作装置的结构示意图。
具体实施方式
现有电子产品中,根据EEPROM和Flash闪存的不同特性,一般使用EEPROM作为数据存储器,使用Flash闪存作为程序存储器。相比于EEPROM,Flash闪存的价格相对较低,且同样晶圆面积下Flash可以得到更大的容量,为降低生产成本,一些对性能要求相对较低的小型家电产品广泛应用Flash闪存作为数据存储器。然而,将Flash闪存作为数据存储器来进行数据存储时,由于数据会经常变动,需要频繁进行数据写入、页擦除等操作,而频繁的页擦除操作会导致Flash闪存的使用寿命减少。
本发明实施例中,将Flash闪存中的页预先划分成行地址和列地址的矩阵结构,将Flash闪存中一行的多个列地址映射为一个虚拟地址,当对Flash闪存进行写操作时,将数据写入到虚拟地址对应的列地址中。由于一个虚拟地址对应多个列地址,在对同一个虚拟地址进行写入时,可以将数据分别写入虚拟地址对应的列地址中,实现对同一个虚拟地址进行多次的写入操作,而不需要每次对同一个地址进行写入操作就必须先进行擦除操作然后再写入,从而可以减少Flash闪存的擦除次数,因此可以有效提高Flash闪存的使用寿命。
为使本发明实施例的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供了一种Flash闪存的写操作方法,参照图1,以下通过具体步骤进行详细说明。
步骤S101,接收对所述Flash闪存的写操作指令。
在具体实施中,当需要向Flash闪存中写入数据时,控制器可以向Flash闪存发出写操作指令。
步骤S102,获取所述写操作指令中包含的虚拟地址。
在具体实施中,可以在写操作指令中包含待写入数据的地址的标识。从而,根据接收到的写操作指令,即可获取待写入数据的虚拟地址的标识。
步骤S103,根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址。
在本发明实施例中,参照图2,可以预先将Flash闪存的页划分成行与列的矩阵结构,将Flash闪存的页划分成M行N列的形式,行地址1表示为第一行,行地址M表示为第M行,列地址1表示为第一列,列地址N表示为第N列。一个虚拟地址对应的实际地址可以对应同一行的多个列地址。在本发明一实施例中,一个虚拟地址对应同一行的所有列地址,即一个虚拟地址对应同一行的N个列地址,则Flash闪存的一页对应于M个虚拟地址。
例如,Flash闪存的一页有256个字,则可以将Flash闪存的一页划分成16行×16列的矩阵结构,则Flash闪存的一页对应于16个虚拟地址。当然,也可以将Flash闪存的一页划分成8行×32列的矩阵结构,则Flash闪存的一页对应于8个虚拟地址。还可以划分成其他的矩阵结构,此处不做一一赘述。
在本发明实施例中,可以从一行的N个列地址中选择任意一个列地址作为标志位地址,用来存储同一行其他的列地址的标志位信息。同一行其他的列地址则用来存储写入的数据,即一个虚拟地址中对应的实际地址用来存储写入数据的列地址为N-1个。例如,可以是一行的第一个列地址,也可以是一行的第三个或最后一个列地址,可以根据实际需要设置标志位地址。在本发明一实施例中,参照图3,选取一行的第一个列地址作为标志位地址,列地址2~N存储写入的数据。
列地址的标志位信息可以用来表征列地址是否为空白地址,即是否已经被写入数据。在本发明一实施例中,若某一列地址为空白地址,则对应的标志位数值为1;若某一列地址已经写入数据,则对应的标志位数值为0。以一个虚拟地址对应16个列地址为例,第一个列地址为标志位地址,标志位地址中存储了其他15个列地址的标志位数值,标志位数值为100011010000010,则可以得知:第二列地址、第六列地址、第七列地址、第九列地址、第十五列地址均为空白地址,其他列地址则已经被写入数据。
步骤S104,将待写入数据写入所述虚拟地址对应的实际地址中的空白地址。
在具体实施中,在获取到虚拟地址在Flash闪存中对应的实际地址之后,可以先获取标志位地址中存储的列地址的标志位数值,判断标志位数值是否全部为零,即判断列地址是否已经全部被写入数据。当标志位数值不全为零时,即当前存在可写入数据的空白列地址,可以将待写入数据写入到标志位数值不为零的空白列地址中。
例如,标志位地址中存储的标志位数值为100011010000010,即第二列地址、第六列地址、第七列地址、第九列地址、第十五列地址均为空白地址,可以将待写入数据写入到上述任一空白地址中。
在本发明实施例中,当标志位地址中存储的列地址的标志位数值不全为零时,可以从低位向高位依次获取列地址对应的标志位的数值,将待写入数据写入到第一个标志位数值不为零的列地址中。例如,标志位地址中存储的信息为000000000011111,从低位向高位依次获取对应的标志位的数值,第一个标志位数值不为零的列地址为第十一列地址,则将待写入数据写入到第十一列地址中。
在本发明实施例中,以Flash闪存以8个比特为写入单位进行写入操作为例,由于数据是以字节为单位写入,因此可以直接将待写入数据写入到对应的实际地址中即可。
可见,将Flash闪存中的页预先划分成行地址和列地址的矩阵结构,将Flash闪存中一行的多个列地址映射为一个虚拟地址,当对Flash闪存进行写操作时,将数据写入到虚拟地址对应的列地址中。由于一个虚拟地址对应多个列地址,则对同一个虚拟地址进行写入时,可以将数据分别写入虚拟地址对应的列地址中,实现对同一个虚拟地址进行多次的写入操作,而不需要每次对同一个地址进行写入操作就必须先进行擦除操作然后再写入,从而可以减少Flash闪存的擦除次数,因此可以有效提高Flash闪存的使用寿命。
以Flash闪存中的一页被划分成16×16为例,一个虚拟地址对应一行的16个列地址,一个虚拟地址对应的实际地址中存在一个标志位地址,则一个虚拟地址对应的存储数据的列地址为15个。即可以对同一个虚拟地址进行15次写操作,而如果对同一个Flash闪存中的实际地址进行15次写操作,则需要进行15次的擦除操作和写操作。由此可见,采用本发明实施例的方案,可以有效减少Flash闪存的擦除次数,从而提高Flash闪存的使用寿命。
在上一发明实施例中,当标志位地址中存储的列地址的标志位数值不全为零时,将待写入数据写入到标志位数值不为零的空白列地址中。然而,在实际情况中,还可以存在标志位地址中存储的列地址的标志位数值全部为零的情况,即当前虚拟地址中对应的实际地址全部被写入数据,无法再对当前虚拟地址执行写入操作。
针对上述问题,本发明实施例提供了另一种Flash闪存的写操作方法,参照图4,以下通过具体步骤进行详细说明。
步骤S201~步骤S203可以参照步骤S101~步骤S103,此处不做赘述。
步骤S204,判断标志位地址中存储的标志位的数值是否全部为零。
在本发明实施例中,当标志位的数值不全为零时,执行步骤S205;当标志位的数值全部为零时,执行步骤S206。
步骤S205,将待写入数据写入第一个标志位数值不为零的列地址。
在本发明一实施例中,当标志位的数值不全部为零时,则可以判定当前虚拟地址对应的实际地址中存在可以写入数据的空白地址。从低位向高位依次判断标志位的数值,获取第一个标志位数值不为零的列地址,并将待写入数据写入第一个标志位数值不为零的列地址,可以将待写入数据写入到列地址中。
例如,标志位地址中存储的信息为000000000011111,从低位向高位依次获取对应的标志位的数值,第一个标志位数值不为零的列地址为第十一列地址,则可以将待写入数据写入到第十一列地址中。
步骤S206,将其他虚拟地址中对应的实际地址中最新写入的数据以及待写入数据进行备份。
在本发明实施例中,当标志位的数值全部为零时,即虚拟地址对应的实际地址全部被写入数据,当前虚拟地址对应的实际地址中不存在可以写入数据的空白地址,此时应擦除该虚拟地址对应的实际地址中存储的数据,以便将待写入数据写入到该虚拟地址对应的实际地址中。
然而,Flash的特性之一是:当擦除Flash闪存中的一个数据时,需要将对应的页的全部数据擦除。从上文可知,Flash闪存的一页被划分成M行N列的矩阵结构,一个虚拟地址对应同一行的N个列地址,Flash闪存的一页对应M个虚拟地址,除了当前对应的实际地址已经全部写入数据的虚拟地址之外,其他虚拟地址中可能也已经写入了数据。
因此,在对虚拟地址对应的实际地址所处的页进行擦除操作之前,需要将当前页中其他虚拟地址对应的实际地址中最新写入的数据以及待写入数据进行备份,以防止擦除操作过程中导致数据丢失,即将其他行中最新写入的数据以及待写入数据进行备份。当备份完成后,执行步骤S207。
步骤S207,对虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作。
当数据备份完成之后,则可对Flash闪存的页执行擦除操作。擦除操作完成之后,执行步骤S208。
步骤S208,将已备份的数据分别写入对应虚拟地址对应的实际地址的列地址中。
在本发明实施例中,当擦除操作执行完成之后,Flash闪存的当前页中的所有虚拟地址对应的实际地址中存储的数据均被擦除,将步骤S206中备份的数据分别写入到对应虚拟地址的列地址中。在本发明一实施例中,预先将虚拟地址中的列地址单元进行优先级设置,将已备份的数据分别写入到各个虚拟地址对应的优先级最高的列地址中。
例如,将各个行的第一个列地址作为标志位地址,将各个行的第二个列地址设置为优先级最高的列地址,则将已备份的数据分别写入到各个行的第二个列地址中。又如,将各个行的最后一个列地址作为标志位地址,将各个行的第一个列地址设置为优先级最高的列地址,则将已备份的数据分别写入到各个行的第一个列地址。在实际应用中,可以根据实际情况,设置标志位地址和预设的优先级最高的列地址。
在执行完成本发明实施例中的写入操作后,还可以对写入到Flash闪存中的数据进行读取操作。参照图5,本发明实施例提供了一种Flash闪存的读操作方法,以下通过具体步骤进行详细说明。
步骤S301,接收对Flash闪存的读操作指令。
步骤S302,获取读操作指令中包含的虚拟地址。
步骤S303,根据预设的映射关系,获取虚拟地址在Flash闪存中对应的实际地址。
在本发明实施例中,虚拟地址与实际地址的映射关系可以参照上文所述的映射关系,此处不做赘述。
步骤S304,读取最近一次写入数据的列地址单元中存储的数据。
在本发明实施例中,当获取到虚拟地址对应的实际地址之后,根据虚拟地址对应的所有列地址写入数据的先后顺序,读取最近一次写入数据的列地址单元中存储的数据。
在本发明一实施例中,在执行写入操作时,待写入数据写入的顺序是从低位向高位依次写入数据。则在执行读取操作时,则是从高位向低位获取列地址标志位的数值,读取第一个标志位数值为零的列地址中存储的数据。
例如,在对某一虚拟地址执行写入操作后,标志位地址中存储的列地址的标志位数值为000000001111111,即第二个地址单元至第九个地址单元写入了数据,第十个地址单元至第十五个地址单元未写入数据,第九个地址单元中写入的数据是最新写入的数据。则在执行读取操作时,从高位向低位依次获取地址标志位的数值,可以得知第一个标志位数值为零的列地址为第九个列地址,因此读取第九个列地址中存储的数据。
本发明实施例还提供了一种Flash闪存的擦除操作方法,参照图6,以下通过具体步骤进行详细说明。
步骤S401,接收对Flash闪存的擦除操作指令。
在本发明实施例中,由上述发明实施例可知,当虚拟地址对应的实际地址中全部被写入数据时,可以对虚拟地址对应的实际地址所处的页进行擦除操作。在实际中,也可以存在控制器主动对Flash闪存发出擦除操作指令,擦除某一虚拟地址对应的实际地址中的数据。当接收到对Flash闪存的擦除操作时,执行步骤S402。
步骤S402,获取擦除操作指令中包含的虚拟地址。
步骤S403,根据预设的映射关系,获取虚拟地址在Flash闪存中对应的实际地址所处的页。
在本发明实施例中,由于虚拟地址与实际地址的映射关系是预设的,因此可以根据虚拟地址获取到实际地址所处的页。
步骤S404,将其他虚拟地址中最新写入的数据进行备份。
在本发明实施例中,由于Flash闪存的特性之一是:当擦除Flash闪存中的一个数据时,是对该数据所处的页中的所有数据进行擦除。从上文可知,Flash闪存的一页可以被划分成M行N列的矩阵结构,由于一个虚拟地址对应同一行的N个列地址,因此Flash闪存的一页对应M个虚拟地址。当对一个虚拟地址对应的实际地址中的数据进行擦除时,其他虚拟地址对应的实际地址中的数据也会被一起擦除。
因此,在对虚拟地址对应的实际地址所处的页进行擦除操作之前,需要将当前页中其他虚拟地址对应的实际地址中最新写入的数据进行备份,以防止擦除操作过程中出现数据丢失。当备份完成后,执行步骤S405。
步骤S405,对实际地址所处的页执行擦除操作。
步骤S406,将已备份的数据分别写入对应虚拟地址的列地址中。
在本发明实施例中,当擦除操作执行完成之后,Flash闪存页中所有虚拟地址中存储的数据均被擦除,将步骤S404中备份的数据分别写入到对应虚拟地址的列地址中。在本发明一实施例中,预先将虚拟地址中的列地址单元进行优先级设置,将已备份的数据分别写入到各个虚拟地址中对应的优先级最高的列地址中。
可见,在执行擦除操作前,对Flash闪存页中其他虚拟地址中已写入的数据进行备份,并在擦除操作之后将备份的数据重新写入到对应的虚拟地址对应的实际地址中,从而有效防止因整页擦除数据而引起的数据丢失。
本发明实施例提供了一种Flash闪存的写操作装置50,参照图7,包括:第一接收单元501、第一获取单元502、第二获取单元503以及第一写入单元504,其中:
第一接收单元501,用于接收对所述Flash闪存的写操作指令;
第一获取单元502,用于获取所述写操作指令中包含的虚拟地址;
第二获取单元503,用于根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;
第一写入单元504,用于将待写入数据写入所述对应的实际地址中的空白地址。
在具体实施中,所述第一写入单元504,可以用于获取所述Flash闪存中对应的实际地址的标志位,判断所述标志位的数值是否全部为零,当所述标志位的数值不全为零时,将所述待写入数据写入标志位数值不为零的列地址。
在具体实施中,所述第一写入单元504,可以用于读取所述标志位的数值,从低位向高位依次获取所述标志位的数值,将所述待写入数据写入到第一个标志位数值不为零的列地址。
在具体实施中,所述Flash闪存的写操作装置50还包括:第一擦除单元505,可以用于当所述标志位的数值全部为零时,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作。
在具体实施中,所述Flash闪存的写操作装置50还包括:第一备份单元506,可以用于在所述第一擦除单元505执行擦除操作之前,获取所述Flash闪存页中其他虚拟地址中最新写入的数据,将所述其他虚拟地址中最新写入的数据以及所述待写入数据进行备份。
在具体实施中,所述Flash闪存的写操作装置50还包括:备份写入单元507,用于在所述第一擦除单元505执行擦除操作之后,将所述第一备份单元506备份的数据分别写入对应虚拟地址中的列地址。
在具体实施中,所述备份写入单元507,可以用于将所述第一备份单元506备份的数据分别写入对应虚拟地址中优先级最高的列地址。
本发明实施例还提供一种Flash闪存的擦除操作装置60,参照图8,包括:第二接收单元601、第三获取单元602、第四获取单元603以及第二擦除单元604,其中:
第二接收单元601,用于触发对所述Flash闪存的擦除操作;
第三获取单元602,用于获取所述擦除操作指令中包含的虚拟地址;
第四获取单元603,用于根据预设的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址所处的页,其中,所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;
第二擦除单元604,用于对所述对应的实际地址所处的页执行擦除操作。
在具体实施中,所述第二接收单元601,可以用于接收用户向所述Flash闪存发送擦除操作指令,或当所述虚拟地址中不存在可写入数据的列地址时,接收对所述Flash闪存的擦除操作指令。
在具体实施中,所述Flash闪存的擦除操作装置60还可以包括:第二备份单元605,可以用于在所述第二擦除单元604执行擦除操作之前,获取所述Flash闪存页中其他虚拟地址中最新写入的数据,将所述其他虚拟地址中最新写入的数据进行备份。
在具体实施中,所述Flash闪存的擦除操作装置60还可以包括:第二写入单元606,用于在所述第二擦除单元604执行擦除操作之后,将所述第二备份单元605备份的数据分别写入对应虚拟地址中的列地址。
在具体实施中,所述第二写入单元606,用于将所述第二备份单元605备份的数据分别写入对应虚拟地址中优先级最高的列地址。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (12)
1.一种Flash闪存的写操作方法,其特征在于,包括:
接收对所述Flash闪存的写操作指令;
获取所述写操作指令中包含的虚拟地址;
根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址;其中,所述虚拟地址对应的实际地址包括一个标志位地址,所述标志位地址用于存储所述虚拟地址对应的实际地址中其他列地址标志位的数值;所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;
将待写入数据写入所述虚拟地址对应的实际地址中的空白地址,包括:获取所述虚拟地址对应的实际地址中标志位地址存储的标志位的数值,判断所述标志位的数值是否全部为零,当所述标志位的数值不全为零时,将所述待写入数据写入标志位数值不为零的列地址。
2.如权利要求1所述的Flash闪存的写操作方法,其特征在于,所述将待写入数据写入标志位数值不为零的列地址,包括:读取所述标志位的数值,从低位向高位依次获取所述标志位的数值,将所述待写入数据写入到第一个标志位数值不为零的列地址。
3.如权利要求1所述的Flash闪存的写操作方法,其特征在于,还包括:当所述标志位的数值全部为零时,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作。
4.如权利要求3所述的Flash闪存的写操作方法,其特征在于,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作之前,还包括:获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,并将所述其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据进行备份。
5.如权利要求4所述的Flash闪存的写操作方法,其特征在于,对所述虚拟地址对应的实际地址所处的Flash闪存页执行擦除操作完成之后,还包括:将已备份的数据分别写入对应虚拟地址对应的实际地址中的列地址,所述已备份的数据包括:其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据。
6.如权利要求5所述的Flash闪存的写操作方法,其特征在于,所述将已备份的数据分别写入对应虚拟地址的列地址,包括:将所述已备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
7.一种Flash闪存的写操作装置,其特征在于,包括:
第一接收单元,用于接收对所述Flash闪存的写操作指令;
第一获取单元,用于获取所述写操作指令中包含的虚拟地址;
第二获取单元,用于根据预设的虚拟地址与实际地址的映射关系,获取所述虚拟地址在所述Flash闪存中对应的实际地址,其中,所述虚拟地址对应的实际地址包括一个标志位地址,所述标志位地址用于存储所述虚拟地址对应的实际地址中其他列地址标志位的数值;所述Flash闪存中的页为行与列的矩阵结构,一个虚拟地址对应的实际地址为所述矩阵结构中同一行的多个列地址;
第一写入单元,用于将待写入数据写入所述虚拟地址对应的实际地址中的空白地址,包括:获取所述虚拟地址对应的实际地址中标志位地址存储的标志位的数值,判断所述标志位的数值是否全部为零,当所述标志位的数值不全为零时,将所述待写入数据写入标志位数值不为零的列地址。
8.如权利要求7所述的Flash闪存的写操作装置,其特征在于,所述第一写入单元,用于读取所述标志位的数值,从低位向高位依次获取所述标志位的数值,将所述待写入数据写入到第一个标志位数值不为零的列地址。
9.如权利要求7所述的Flash闪存的写操作装置,其特征在于,还包括:第一擦除单元,用于当所述标志位的数值全部为零时,对所述虚拟地址对应的实际地址所处的Flash页执行擦除操作。
10.如权利要求9所述的Flash闪存的写操作装置,其特征在于,在所述第一擦除单元执行擦除操作之前,还包括:第一备份单元,用于获取所述Flash闪存页中其他虚拟地址对应的实际地址中最新写入的数据,将所述其他虚拟地址对应的实际地址中最新写入的数据以及所述待写入数据进行备份。
11.如权利要求10所述的Flash闪存的写操作装置,其特征在于,在所述第一擦除单元执行擦除操作之后,还包括:备份写入单元,用于将所述第一备份单元备份的数据分别写入对应虚拟地址对应的实际地址中的列地址。
12.如权利要求11所述的Flash闪存的写操作装置,其特征在于,所述备份写入单元用于将所述第一备份单元备份的数据分别写入对应虚拟地址对应的实际地址中预设的优先级最高的列地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410505228.6A CN105512047B (zh) | 2014-09-26 | 2014-09-26 | Flash闪存的写操作、擦除操作方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410505228.6A CN105512047B (zh) | 2014-09-26 | 2014-09-26 | Flash闪存的写操作、擦除操作方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512047A CN105512047A (zh) | 2016-04-20 |
CN105512047B true CN105512047B (zh) | 2018-08-28 |
Family
ID=55720048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410505228.6A Active CN105512047B (zh) | 2014-09-26 | 2014-09-26 | Flash闪存的写操作、擦除操作方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512047B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502919B (zh) * | 2016-10-11 | 2019-05-31 | 上海东软载波微电子有限公司 | 一种Flash闪存的写操作方法及装置 |
CN106951189B (zh) * | 2017-03-17 | 2019-11-26 | 数据通信科学技术研究所 | 一种在线深度擦除flash文件的方法 |
CN108877863B (zh) * | 2017-05-16 | 2020-08-04 | 华邦电子股份有限公司 | 快闪存储器存储装置及其操作方法 |
CN109308171B (zh) * | 2018-09-19 | 2021-08-24 | 华立科技股份有限公司 | 提高非易失存储器使用寿命的数据存储方法和系统 |
CN116821006B (zh) * | 2023-08-31 | 2023-11-07 | 苏州拓氪科技有限公司 | 闪存数据防丢失与擦写平衡方法、系统、装置和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206908A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN101383190A (zh) * | 2008-08-11 | 2009-03-11 | 湖南源科创新科技股份有限公司 | 应用于固态硬盘的闪存均衡损耗算法 |
CN102736981A (zh) * | 2011-04-08 | 2012-10-17 | 航天信息股份有限公司 | 提高nor flash擦写寿命的方法 |
-
2014
- 2014-09-26 CN CN201410505228.6A patent/CN105512047B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN101206908A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
CN101383190A (zh) * | 2008-08-11 | 2009-03-11 | 湖南源科创新科技股份有限公司 | 应用于固态硬盘的闪存均衡损耗算法 |
CN102736981A (zh) * | 2011-04-08 | 2012-10-17 | 航天信息股份有限公司 | 提高nor flash擦写寿命的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105512047A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512047B (zh) | Flash闪存的写操作、擦除操作方法及装置 | |
US9632880B2 (en) | Data storage device and flash memory control method | |
CN106776362B (zh) | 存储器的控制方法及装置 | |
CN103425597B (zh) | 数据储存装置和快闪存储器的区块管理方法 | |
CN109783004A (zh) | 数据储存装置与存储器装置的数据处理方法 | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
TW201413453A (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
CN104699622B (zh) | 数据储存装置以及其数据抹除方法 | |
CN108280032B (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN101656106A (zh) | 一种向eeprom写入数据的方法及装置 | |
CN101739345A (zh) | 适应软件的损耗均衡 | |
CN104794063A (zh) | 一种具备电阻式存储器的固态储存装置的控制方法 | |
CN111433748A (zh) | 多级寻址 | |
CN103365786A (zh) | 数据存储方法、装置和系统 | |
CN104347118A (zh) | 用于仿真电可擦除可编程只读存储器的系统及方法 | |
TWI450271B (zh) | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 | |
CN104021089A (zh) | 快闪存储器控制芯片与存储装置以及快闪存储器控制方法 | |
CN110673789A (zh) | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 | |
CN107045423A (zh) | 存储器装置及其数据存取方法 | |
CN109521944A (zh) | 数据储存装置以及数据储存方法 | |
CN106502919B (zh) | 一种Flash闪存的写操作方法及装置 | |
CN105988950B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
JP2009503745A5 (zh) | ||
CN105653208B (zh) | 数据存储系统及基于该系统的数据读写方法 | |
CN104007939A (zh) | 用于小文件频繁写入的嵌入式fat文件系统及方法 |
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 |