CN113157601A - 闪存数据读写方法、装置、存储介质和终端设备 - Google Patents

闪存数据读写方法、装置、存储介质和终端设备 Download PDF

Info

Publication number
CN113157601A
CN113157601A CN202110491159.8A CN202110491159A CN113157601A CN 113157601 A CN113157601 A CN 113157601A CN 202110491159 A CN202110491159 A CN 202110491159A CN 113157601 A CN113157601 A CN 113157601A
Authority
CN
China
Prior art keywords
data
address
area
flash memory
write
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.)
Pending
Application number
CN202110491159.8A
Other languages
English (en)
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.)
Chipone Technology Beijing Co Ltd
Original Assignee
Chipone Technology Beijing 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 Chipone Technology Beijing Co Ltd filed Critical Chipone Technology Beijing Co Ltd
Priority to CN202110491159.8A priority Critical patent/CN113157601A/zh
Publication of CN113157601A publication Critical patent/CN113157601A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及闪存数据读写方法、装置、存储介质和终端设备,该方法包括:根据读数据指令,读取闪存中第一区域中的第一数据;在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。通过本申请实施例,可以实现读取闪存数据时,对于修改频率更高的数据根据第二区域读取,无需频繁的修改第一区域,减少了数据出错的概率,节约大量资源,提高闪存使用寿命。

Description

闪存数据读写方法、装置、存储介质和终端设备
技术领域
本公开涉及终端设备领域,尤其涉及一种闪存数据读写方法、装置、存储介质和终端设备。
背景技术
在移动通信设备中,一般使用闪存(Flash)作为存储介质。闪存是一种非易失存储器(non-volatile random access memory,NVRAM),属于ROM的一种,可以进行十几万次以上的擦写操作。
现有技术中,闪存擦除的最小单位一般是区块(block)或扇区(sector),由此带来的问题是每次对闪存内的数据进行修改,通常要擦除大部分无需修改的数据,浪费了大量的时间和资源,因此亟需更高效的修改闪存内数据的方式。
发明内容
有鉴于此,本公开提出了一种闪存数据读写方法、装置、存储介质和终端设备。
根据本公开的一方面,提供了一种闪存数据读写方法,该方法包括:根据读数据指令,读取闪存中第一区域中的第一数据;在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
根据本申请实施例,通过根据读数据指令,读取闪存中第一区域中的第一数据,在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据,可以实现读取闪存数据时,对于修改频率更高的数据根据第二区域读取,无需频繁的修改第一区域,减少了数据出错的概率,节约大量资源。
在一种可能的实现方式中,该方法还包括:根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;擦除所述第二区域中的所述第三数据;根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址,擦除所述第二区域中的所述第三数据,根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据,可以实现在需要对闪存中频繁修改的数据进行修改时,无需擦除其余大部分不用修改的数据,仅需擦除第二区域,可以节约大量的时间和数据传输资源,也防止了不用修改的数据的误修改,提高闪存使用寿命。
在一种可能的实现方式中,该方法还包括:根据写数据指令,确定需要写入的第四数据的写入地址;在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;将所述第四数据写入所述第一区域。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据的写入地址,在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块,将所述第四数据写入所述第一区域,可以实现对闪存内除第二数据之外的数据进行修改,使得修改的结果更加精确,防止误修改。
在一种可能的实现方式中,该方法还包括:在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
根据本申请实施例,通过在第四数据中仅包括第二数据时,不对第一区域进行擦除,可以实现对数据进行修改时更加灵活,也节省了数据传输的资源,减少闪存擦除次数,提高闪存寿命。
在一种可能的实现方式中,该方法还包括:在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
根据本申请实施例,通过在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系,地址映射关系可以改变,更加灵活,增加了可操作性。
根据本公开的另一方面,提供了一种闪存数据读写装置,该装置包括:第一模块,用于根据读数据指令,读取闪存中第一区域中的第一数据;第二模块,用于在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;第三模块,用于根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
在一种可能的实现方式中,该装置还包括:第四模块,用于根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;第五模块,用于擦除所述第二区域中的所述第三数据;第六模块,用于根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
在一种可能的实现方式中,该装置还包括:第七模块,用于根据写数据指令,确定需要写入的第四数据的写入地址;第八模块,用于在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;第九模块,用于将所述第四数据写入所述第一区域。
在一种可能的实现方式中,该装置还包括:第十模块,用于在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
在一种可能的实现方式中,该装置还包括:第十一模块,用于在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
根据本公开的另一方面,提供了一种终端设备,包括闪存控制器,所述闪存控制器用于执行上述的方法。
根据本公开的另一方面,提供了一种闪存数据读取装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本申请一实施例的闪存储存系统的结构图。
图2示出了根据本申请一实施例的闪存分区示意图。
图3示出了根据本申请一实施例的对闪存数据进行修改的流程图。
图4示出了根据本申请一实施例的对闪存数据进行读取的流程图。
图5示出了根据本申请一实施例的闪存数据读写方法的流程图。
图6示出了根据本申请一实施例的闪存数据读写方法的流程图。
图7示出了根据本申请一实施例的闪存数据读写方法的流程图。
图8示出了根据本申请一实施例的闪存数据读写装置的结构图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本申请一实施例的闪存储存系统的结构图。如图1所示,闪存储存系统100可以包括闪存控制器110、总线连接接口120以及闪存130。闪存储存系统100可以与主机200相连接,通过主机200可将数据写入至闪存储存系统100或从闪存储存系统100中读取数据。闪存储存系统100可以是随身盘,也可以是存储卡或固态硬盘(solid state drive,SSD),本申请对此不作限制。
闪存控制器110可以用于协调总线连接接口120以及闪存130的整体运作,例如数据的储存、读取与擦除等。闪存控制器110可以包括微处理器110a与闪存接口110b。
微处理器110a可以用于管理与操作闪存130,例如执行平均磨损(wear leveling)功能、坏区块管理功能、维护对映表(mapping table)等。本申请实施例中,微处理器110a可以用于执行根据本实施例的闪存数据读写方法的步骤。
闪存接口110b耦接至微处理器110a并且可以用于存取闪存130。例如,主机200欲写入至闪存130的数据可以经由闪存接口110b转换为闪存130所能接受的格式。
此外,虽未示于图1,但闪存控制器110可还包括存储器管理模块、缓冲存储器与电源管理模块等一般闪存常见的功能模块。
总线连接接口120可以用于连接主机200。总线连接接口120可以是USB接口,总线连接接口120也可以是PCI Express接口、IEEE 1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其它适合的数据传输接口,本申请对此不作限制。
闪存130耦接闪存控制器110,可以用于储存数据。闪存130可以分割为多个物理区块(physical block)130-0至130-N,为方便说明以下将物理区块简称为区块。在闪存中区块可以为擦除的最小单位。亦即,每一区块含有最小数目的一并被擦除的存储单元。在一种可能的实现方式中,根据不同的闪存设计,每一区块还可以分割为数个扇区(sector),在这种情况下,在闪存中扇区可以为擦除的最小单位。每一区块(或扇区)可以分割为数个页(page)(图1中以区块可以分割为数个页为例)。页可以是编程(program)的最小单元,也就是说,页可以是写入数据或读取数据的最小单元。每一页可以分割为256字节(byte)。
区块(或扇区)可由任意数目的页所组成,例如64页、128页、256页等。区块130-0至130-N通常也可被分组为数个区域(zone),以区域来管理存储器某种程度上是彼此独立地操作,以增加操作执行的平行程度且简化管理的复杂度。
以下将结合附图详细描述本申请实施例的闪存数据读写方法的一些示例。
图2示出了根据本申请一实施例的闪存分区示意图。如图2所示,可以将闪存分为数据区和替换区两个部分,其中数据区可以用于存储所有数据,可以包括多个区块(或扇区),替换区可以用于存储所有数据中、需要经常修改的数据,由于需要经常修改的数据的大小可能只占一页,替换区的大小通常小于数据区的大小。
其中,A1、A2……An(下文以A(x)表示)以及B1、B2……Bn(下文以B(x)表示)可以分别代表一个字节的数据,A(x)可以是数据区的特定位置上、需要经常修改的数据,n可以是需要经常修改的数据的字节数,x可以是1-n中的任意一值,B(x)可以是替换区中、分别与A(x)相对应的数据,B(x)的数据值可以用于替换A(x)对应的数据值,也就是说,A(x)与B(x)可以是映射关系(例如A1对应B1,A2对应B2……An对应Bn)。其中,A1、A2……An在数据区中可以是连续的字节,也可以是不连续的字节,A1、A2……An可以分布在数据区中的不同区块、不同的扇区或不同的页上,B1、B2……Bn在替换区中可以是连续的字节。A(x)的存储位置(或称为地址)和B(x)的存储位置可以根据实际需要进行设置。
A(x)与B(x)之间的映射关系,可以是A(x)的存储位置与B(x)的存储位置之间的映射关系,即,B(x)在闪存中所在的位置可以映射至对应的A(x)在闪存中所在的位置。例如,如果A1在数据区的位置为第1个区块、第1个扇区、第1页的第2个字节,B1为替换区中的第1个字节,则替换区的第1个字节,映射至数据区的第1个区块、第1个扇区、第1页的第2个字节。其中,在需要对数据区的所有数据中、需要经常修改的数据的位置进行改变时,可以对B(x)所在位置与A(x)所在位置的映射关系进行改变,例如,在需要在数据区中选择另一位置(例如第1个区块、第1个扇区、第1页的第5字节)来存储数据A1时,可以修改原先的映射关系,使得B1所在的替换区的第1字节,映射至修改后的上述第5字节,与修改后位置上的A1相对应,以得到新的A(x)与B(x)的映射关系。需要说明的是,本申请对于确定数据区中、需要经常修改的数据的位置的方式不作限制。
在一种可能的实现方式中,在需要对闪存的数据区的所有数据中、需要经常修改的数据(即A(x)对应的数据)进行修改的过程中,可以先根据修改后的数据确定B(x)的内容,再对替换区内的全部数据进行擦除,将B(x)的内容写入替换区。由此,在需要对闪存中数据区的数据进行读取的过程中,可以读取数据区内的相应数据,并根据A(x)与B(x)的映射关系,以B(x)的数据值对读取的相应数据中、对应A(x)的数据值进行替换。
由此,在修改闪存内存储的数据时,如果仅针对修改频率较高的数据A(x)进行修改,可以不用改变闪存中的数据区内的其他数据,不必擦除闪存的整个区块或扇区,减少了修改闪存内存储的数据的时间,节约了大量资源,提高了闪存的使用寿命,同时,仅替换需要修改的数据,也可以防止对闪存中其他数据的误修改。
结合图1所示的应用场景,图3示出了根据本申请一实施例的对闪存数据进行修改的流程图。如图3所示,对闪存内的数据进行修改的步骤包括:
步骤S301,微处理器110a接收来自主机200的写数据指令。
其中,写入的数据可以是指闪存中、需要的修改的数据对应的修改后的数据,写入的数据可以包括一页的数据,也可以包括多页的数据,数据中可以包括对应A(x)所在的存储位置的数据,也可以不包括对应A(x)所在的存储位置的数据,还可以仅包括部分A(x)所在的存储位置的数据。
步骤S302,微处理器110a在确定写数据地址包括A(x)所在的存储位置时,通过闪存接口110b擦除闪存130中的替换区。
其中,写数据地址包括A(x)所在的存储位置,可以是写数据地址包括部分A(x)所在的存储位置,例如,仅包含A1、A2所在的存储位置,也可以是写数据地址包括全部A(x)所在的存储位置。
步骤S303,微处理器110a通过闪存接口110b将需写入A(x)所在位置的数据,写入替换区中与A(x)相对应的B(x)所在的位置。
例如,如果写数据地址仅包括A1、A2所在的存储位置,则可以通过闪存接口110b擦除替换区中的数据,并将需写入A1所在存储位置的数据写入B1所在的存储位置,将需写入A2所在存储位置的数据写入B2所在的存储位置,同时保持B3至Bn对应的数据不变,写入对应B3至Bn所在的存储位置。
再例如,如果写数据地址包括全部A(x)所在的存储位置,则可以过闪存接口110b擦除替换区中的数据,并将需写入A1-An所在存储位置的数据根据A(x)和B(x)的地址的映射关系,写入B1-Bn所在的存储位置。
步骤S304,微处理器110a在确定写数据地址不仅包括A(x)所在的存储位置,还包括其他存储位置时,通过闪存接口110b擦除数据区中与写数据地址相应的扇区,并直接在扇区中写入数据。并且,按照步骤S301-步骤S303的方式,将A(x)的数据对应写入替换区中作为B(x)。
其中,在扇区中写入的数据可以包括修改后的A(x)所在的存储位置的数据、需要修改的修改后的其他存储位置的数据、以及不需要修改的扇区内的其他存储位置的数据。
步骤S305,微处理器110a在确定写数据地址仅包括A(x)所在的存储位置,不包括其他存储位置时,在执行步骤S301-步骤S303后不通过闪存接口110b擦除数据区。
由此,在仅需要修改闪存中几个字节的数据的情况下,可以根据A(x)与B(x)的映射关系,将B(x)对应的数据内容进行修改即可,而无需擦除数据区内一整个扇区或区块的内容,节约了大量资源,而且可以防止对其他数据的误修改。
例如,写数据地址为第1个区块、第2扇区、第3页,其中不包括A(x)所在的存储位置,可以通过闪存接口110b擦除第一个区块、第二扇区,并直接在扇区中写入修改后的数据。
再例如,写数据地址为第1个区块、第2扇区、第3页,其中既包括A(x)(可以包括部分A(x)、或全部A(x))所在的存储位置,也包括其他数据的存储位置,可以通过闪存接口110b擦除第1个区块、第2扇区,并直接在扇区中写入修改后的数据,并且,按照步骤S301-步骤S303的方式,将A(x)的数据对应写入替换区中作为B(x)。写数据地址包括部分A(x)、或全部A(x)所在的存储位置的示例可参照步骤S303中所示。
再例如,写数据地址仅为A1、A2所在的存储位置,则不擦除数据区,按照步骤S301-步骤S303的方式,将A1、A2的数据对应写入替换区中作为B1、B2,B3-Bn保持不变。
需要说明的是,A(x)对应的数据位置是数据区内修改频率较高的位置,A(x)对应的位置也可以根据需要进行改变,例如,如果A1(或A2、A3等等)对应的数据位置发生改变、而数据内容不发生变化时,可以直接修改A1与B1的映射关系,例如将A1(或A2、A3等等)对应的页1中第2个字节的位置、修改为对应页2中第3个字节的位置,使得B1对应A1新的所在位置。如果确定第1个区块、第1个扇区、第2页中第3个字节为新的修改频率较高的位置,而该位置不对应任何A(x),此时微处理器110a可以将A1(或A2、A3等等)原来对应的页1中第2个字节的位置、替换为对应页2中第3个字节的位置,其中,微处理器110a可以按照预设的优先级,确定本次替换的A(x),由此,仅需修改A1与B1的映射关系,使得B1对应新的A1所在的位置,再根据步骤S301-S303对B1进行修改即可。
结合图1所示的应用场景,图4示出了根据本申请一实施例的对闪存数据进行读取的流程图。如图4所示,对闪存内的数据进行读取的步骤包括:
步骤S401,微处理器110a接收来自主机200的读数据指令,通过闪存接口110b读取数据区中的相应数据。
其中,可以读取数据区内某一页、或多页的数据,读数据地址中可以包含全部A(x)所在的位置,也可以不包含A(x)所在的位置,还可以仅包含部分A(x)(如仅包含A1、A2)所在的位置,本申请对此不作限制。
步骤S402,微处理器110a在确定读数据地址包括A(x)所在的存储位置时,通过闪存接口110b读取替换区中与A(x)对应的B(x)。
其中,微处理器110a可以读取替换区内的全部数据,还可以是替换区中的部分数据。例如,微处理器110a在确定读数据地址包括A1所在的存储位置时,可以通过闪存接口110b读取替换区中B1所在的存储位置对应的页。
步骤S403,微处理器110a根据映射关系,以B(x)替换从数据区中读取的数据中的A(x),将替换后的数据发送至主机。
以读取的数据区内的相应数据仅包含A(x)中A1、A2对应的数据为例,微处理器110a可以根据A(x)和B(x)的映射关系,将替换区内B1对应的数据替换读取出的数据中、A1对应的数据;将B2对应的数据替换A2对应的数据。
由此,如果在读取前,A(x)对应的数据发生修改的情况下,通过替换可以得到最新修改后的A(x)对应数据,保证读取出的数据区内的数据的准确性。
步骤S404,微处理器110a在确定读数据地址不包括A(x)所在的存储位置时,通过闪存接口110b直接读取读数据地址相应的数据区中的数据。
图5示出了根据本申请一实施例的闪存数据读写方法的流程图。该方法可用于终端设备,例如可用于终端设备中上文所述的微处理器100a,如图5所示,该方法包括:
步骤S501,根据读数据指令,读取闪存中第一区域中的第一数据;
步骤S502,在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;
步骤S503,根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
根据本申请实施例,通过根据读数据指令,读取闪存中第一区域中的第一数据,在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据,可以实现读取闪存数据时,对于修改频率更高的数据根据第二区域读取,无需频繁的修改第一区域,减少了数据出错的概率,节约大量资源。
其中,第一区域可以是上文中的数据区,第二区域可以是上文中的替换区,第一数据可以是数据区内一页或多页的数据,第一数据可以包含全部第二数据、部分第二数据或不包含第二数据,第二数据可以是特定位置上被修改的频率更高的数据,第二数据的地址可以是特定位置,特定位置可以是一个字节,也可以是多个字节,第三数据可以是替换区内的数据,可以是一页,也可以是多页。第二数据以及第二数据在闪存中的地址可以根据需要进行设置。
例如,第二数据可以是上文中的A(x),第三数据可以是上文中的B(x),所述第一数据的地址内包括第二数据的地址,可以是第一数据的地址包括A1-An中至少一个的地址。
步骤S501-S503的示例可参照图4中S401-S404所示。
图6示出了根据本申请一实施例的闪存数据读写方法的流程图。如图6所示,该方法还包括:
步骤S601,根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;
步骤S602,擦除所述第二区域中的所述第三数据;
步骤S603,根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址,擦除所述第二区域中的所述第三数据,根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据,可以实现在需要对闪存中频繁修改的数据进行修改时,无需擦除其余大部分不用修改的数据,仅需擦除第二区域,可以节约大量的时间和数据传输资源,也防止了不用修改的数据的误修改,提高闪存使用寿命。
其中,第四数据可以是数据区内、需要修改的数据对应的修改后的数据,可以对应闪存中一页或多页的位置,第四数据的地址可以包括全部第二数据的地址,还可以仅包含部分第二数据的地址,擦除第二区域中的第三数据,可以是擦除第二区域中的全部第三数据。将需要写入的第二数据写入所述第二区域,其中,在第四数据中的第二数据不是全部的第二数据的情况下,第二区域内对应不需要改变的部分可以不变。
步骤S601-S603的示例可参照图3中步骤S301-S303。
图7示出了根据本申请一实施例的闪存数据读写方法的流程图。如图7所示,该方法还包括:
步骤S701,根据写数据指令,确定需要写入的第四数据的写入地址;
步骤S702,在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;
步骤S703,将所述第四数据写入所述第一区域。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据的写入地址,在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块,将所述第四数据写入所述第一区域,可以实现对闪存内除第二数据之外的数据进行修改,使得修改的结果更加精确,防止误修改。
其中,第四数据可以是写入地址对应的扇区或区块中、一页或多页的数据。
其中,如果第四数据中既包括所述第二数据,也包括所述第二数据之外的其他数据,则可以执行步骤S701~S703,以及步骤S601~S603。
步骤S701-S703的示例可参照图3中步骤S301-S304。
在一种可能的实现方式中,该方法还包括:在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
根据本申请实施例,通过在第四数据中仅包括第二数据时,不对第一区域进行擦除,此时可以仅执行步骤S601~S603,可以实现对数据进行修改时更加灵活,也节省了数据传输的资源,减少闪存擦除次数,提高闪存寿命。
上述过程的示例可参照图3中步骤S305。
在一种可能的实现方式中,该方法还包括:在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
根据本申请实施例,通过在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系,地址映射关系可以改变,更加灵活,增加了可操作性。
其中,重新确定所述第二数据与所述第三数据的地址映射关系,可以是在存在新的第二数据的情况下,将原有的第二数据中的地址,修改为新的第二数据对应的地址,重新确定第二数据与第三数据的地址映射关系,还可以是在原有的第二数据中、对应的地址发生变化时,修改原有的地址为新的地址,重新确定第二数据与第三数据的地址映射关系,或者,也可以增加新的第二数据对应的新地址,并重新确定第二数据与第三数据的地址映射关系。
图8示出了根据本申请一实施例的闪存数据读写装置的结构图。如图8所示,该装置包括:
第一模块8001,用于根据读数据指令,读取闪存中第一区域中的第一数据;
第二模块8002,用于在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;
第三模块8003,用于根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
根据本申请实施例,通过根据读数据指令,读取闪存中第一区域中的第一数据,在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据,可以实现读取闪存数据时,对于修改频率更高的数据根据第二区域读取,无需频繁的修改第一区域,减少了数据出错的概率,节约大量资源。
在一种可能的实现方式中,该装置还包括:第四模块,用于根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;第五模块,用于擦除所述第二区域中的所述第三数据;第六模块,用于根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址,擦除所述第二区域中的所述第三数据,根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据,可以实现在需要对闪存中频繁修改的数据进行修改时,无需擦除其余大部分不用修改的数据,仅需擦除第二区域,可以节约大量的时间和数据传输资源,也防止了不用修改的数据的误修改,提高闪存使用寿命。
在一种可能的实现方式中,该装置还包括:第七模块,用于根据写数据指令,确定需要写入的第四数据的写入地址;第八模块,用于在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;第九模块,用于将所述第四数据写入所述第一区域。
根据本申请实施例,通过根据写数据指令,确定需要写入的第四数据的写入地址,在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块,将所述第四数据写入所述第一区域,可以实现对闪存内除第二数据之外的数据进行修改,使得修改的结果更加精确,防止误修改。
在一种可能的实现方式中,该装置还包括:第十模块,用于在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
根据本申请实施例,通过在第四数据中仅包括第二数据时,不对第一区域进行擦除,可以实现对数据进行修改时更加灵活,也节省了数据传输的资源,减少闪存擦除次数,提高闪存寿命。
在一种可能的实现方式中,该装置还包括:第十一模块,用于在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
根据本申请实施例,通过在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系,地址映射关系可以改变,更加灵活,增加了可操作性。
本申请实施例还提供了一种终端设备,该终端设备包括闪存控制器,所述闪存控制器用于执行上述的方法。
本申请实施例还提供了一种闪存数据读取装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
本申请实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (13)

1.一种闪存数据读写方法,其特征在于,所述方法包括:
根据读数据指令,读取闪存中第一区域中的第一数据;
在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;
根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;
擦除所述第二区域中的所述第三数据;
根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据写数据指令,确定需要写入的第四数据的写入地址;
在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;
将所述第四数据写入所述第一区域。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
6.一种闪存数据读写装置,其特征在于,所述装置包括:
第一模块,用于根据读数据指令,读取闪存中第一区域中的第一数据;
第二模块,用于在所述第一数据的地址内包括第二数据的地址的情况下,读取所述闪存中第二区域的第三数据,其中,所述第二数据相对于所述第一区域中的其他数据被修改的频率更高;
第三模块,用于根据所述第二数据与所述第三数据的地址映射关系,以所述第三数据替换所述第一数据中的所述第二数据,得到替换后的所述第一数据。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第四模块,用于根据写数据指令,确定需要写入的第四数据中的第二数据和第二数据的写入地址;
第五模块,用于擦除所述第二区域中的所述第三数据;
第六模块,用于根据所述地址映射关系和第二数据的写入地址,将需要写入的第二数据写入所述第二区域,作为新的第三数据。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
第七模块,用于根据写数据指令,确定需要写入的第四数据的写入地址;
第八模块,用于在所述第四数据中包括所述第二数据之外的其他数据时,擦除所述第一区域中,所述第四数据的写入地址对应的扇区或区块;
第九模块,用于将所述第四数据写入所述第一区域。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第十模块,用于在所述第四数据中仅包括所述第二数据时,不对所述第一区域进行擦除。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第十一模块,用于在所述第二数据的地址发生变化时,根据变化后的地址重新确定所述第二数据与所述第三数据的地址映射关系。
11.一种终端设备,其特征在于,所述终端设备包括闪存控制器,所述闪存控制器用于执行根据权利要求1-5中任意一项所述的方法。
12.一种闪存数据读写装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为实现权利要求1-5中任意一项所述的方法。
13.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-5中任意一项所述的方法。
CN202110491159.8A 2021-05-06 2021-05-06 闪存数据读写方法、装置、存储介质和终端设备 Pending CN113157601A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110491159.8A CN113157601A (zh) 2021-05-06 2021-05-06 闪存数据读写方法、装置、存储介质和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110491159.8A CN113157601A (zh) 2021-05-06 2021-05-06 闪存数据读写方法、装置、存储介质和终端设备

Publications (1)

Publication Number Publication Date
CN113157601A true CN113157601A (zh) 2021-07-23

Family

ID=76873576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110491159.8A Pending CN113157601A (zh) 2021-05-06 2021-05-06 闪存数据读写方法、装置、存储介质和终端设备

Country Status (1)

Country Link
CN (1) CN113157601A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082729A1 (en) * 2006-10-02 2008-04-03 Samsung Electronics Co. Ltd. Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
CN101425338A (zh) * 2007-10-29 2009-05-06 群联电子股份有限公司 非易失性存储器的写入方法及使用此方法的控制器
TW200937422A (en) * 2008-02-21 2009-09-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
CN101546298A (zh) * 2008-03-28 2009-09-30 群联电子股份有限公司 用于闪存的数据读取方法、其控制器与储存系统
CN101634967A (zh) * 2008-07-24 2010-01-27 群联电子股份有限公司 用于闪存的区块管理方法、储存系统与控制器
CN101859278A (zh) * 2009-04-07 2010-10-13 群联电子股份有限公司 用于闪存的数据储存方法及储存系统
CN102508782A (zh) * 2011-09-29 2012-06-20 北京星网锐捷网络技术有限公司 数据读写方法、装置、存储体及网络设备
CN109634516A (zh) * 2017-10-09 2019-04-16 北京握奇智能科技有限公司 一种芯片存储器的读、写数据方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082729A1 (en) * 2006-10-02 2008-04-03 Samsung Electronics Co. Ltd. Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
CN101425338A (zh) * 2007-10-29 2009-05-06 群联电子股份有限公司 非易失性存储器的写入方法及使用此方法的控制器
TW200937422A (en) * 2008-02-21 2009-09-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
CN101546298A (zh) * 2008-03-28 2009-09-30 群联电子股份有限公司 用于闪存的数据读取方法、其控制器与储存系统
CN101634967A (zh) * 2008-07-24 2010-01-27 群联电子股份有限公司 用于闪存的区块管理方法、储存系统与控制器
CN101859278A (zh) * 2009-04-07 2010-10-13 群联电子股份有限公司 用于闪存的数据储存方法及储存系统
CN102508782A (zh) * 2011-09-29 2012-06-20 北京星网锐捷网络技术有限公司 数据读写方法、装置、存储体及网络设备
CN109634516A (zh) * 2017-10-09 2019-04-16 北京握奇智能科技有限公司 一种芯片存储器的读、写数据方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BAEK, SEUNGJAE AND AHN,等: "Uniformity improving page allocation for flash memory file systems", PROCEEDINGS OF THE 7TH ACM \\& IEEE INTERNATIONAL CONFERENCE ON EMBEDDED SOFTWARE, vol. 2007, 30 September 2007 (2007-09-30) *
王晋阳,等: "基于逻辑页冷热分离的NAND闪存磨损均衡算法", 计算机应用, vol. 36, no. 05, 10 May 2016 (2016-05-10) *

Similar Documents

Publication Publication Date Title
CN109783017B (zh) 一种存储设备坏块的处理方法、装置及存储设备
CN107526743B (zh) 用于压缩文件系统元数据的方法和设备
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
US20170336992A1 (en) Method, device, and program for managing a flash memory for mass storage
CN109522154B (zh) 数据恢复方法及相关设备与系统
CN105242879A (zh) 一种数据存储方法以及协议服务器
CN103218227A (zh) 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置
US9087014B1 (en) Tape backup and restore in a disk storage environment
CN103229150B (zh) 数据控制方法及系统
US9311348B2 (en) Method and system for implementing an array using different data structures
US10482049B2 (en) Configuring NVMe devices for redundancy and scaling
CN113590019A (zh) 用于存储管理的方法、电子设备和计算机程序产品
CN108694052B (zh) 一种固件升级方法、固件升级装置及固件升级系统
CN111625180B (zh) 数据写入方法及装置、存储介质
CN110618828B (zh) 一种数据更新方法及装置
US10289334B2 (en) Valid data merging method, memory controller and memory storage apparatus
CN113157601A (zh) 闪存数据读写方法、装置、存储介质和终端设备
CN113434089B (zh) 数据搬移方法、装置及pcie系统
US11720276B2 (en) Memory system and controller for managing write status
CN112988069B (zh) 存储器管理方法、存储器存储装置及存储器控制器
CN113223597A (zh) 闪存测试方法、装置、存储介质和终端设备
CN111125041A (zh) 数据读取方法、电子设备和计算机程序产品
CN114816833B (zh) 一种flash数据的写入方法、装置以及系统
CN108073362B (zh) 一种延长PairBlock使用寿命的方法及装置
US11023158B2 (en) Constraining placement of replica segment pairs among device pairs based on coding segment count

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