CN113886281A - 一种嵌入式nor flash芯片的数据存储管理方法 - Google Patents
一种嵌入式nor flash芯片的数据存储管理方法 Download PDFInfo
- Publication number
- CN113886281A CN113886281A CN202111095921.7A CN202111095921A CN113886281A CN 113886281 A CN113886281 A CN 113886281A CN 202111095921 A CN202111095921 A CN 202111095921A CN 113886281 A CN113886281 A CN 113886281A
- Authority
- CN
- China
- Prior art keywords
- data
- area
- erased
- index
- mark
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种嵌入式NOR FLASH芯片的数据存储管理方法,该方法将NOR FLASH芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分;通过索引表区内的数据占用标志、标志管理表区内的数据处理标志和数据权重,搜索需要擦除的数据,将其地址置于待擦除区;当Flash存储空间不足时,根据待擦除区的数据地址依次将数据存储区内的数据擦除。该数据存储管理方法通过在系统CPU处于空闲状态下运行,提前擦除Flash存储空间内已被处理及数据权重最低的数据,从而为系统数据写入预留出充足的存储空间,减少了批量数据擦除时的系统等待时间,还能极大提高Flash芯片的数据写入效率。
Description
技术领域
本发明属于计算机数据存储技术领域,特别是涉及一种可应用于嵌入式系统的NOR FLASH芯片的数据存储管理方法。
背景技术
随着物联网设备在不同行业领域的广泛应用,物联网嵌入式设备需要采集并存储大量不同类型的传感器数据,NOR FLASH闪存以其相对低廉的成本在物联网设备中被大量使用。但NOR FLASH存储器的读写原理决定了其在写入数据之前必须先擦除,且最小擦除单位为一个扇区或一页,这导致其写入速度较慢,大大降低了系统的数据存储性能。目前嵌入式系统的数据存储区通常采用简单的顺序式管理,即按照先写入先擦除的方式管理数据,并未对不同类型的数据进行灵活分区管理,存在重要数据被提前擦除的风险。
因此,急需设计一种嵌入式NOR FLASH芯片的数据存储管理方法,一方面能对存储数据进行分类管理,另一方面还可以在系统空闲时间对已使用的存储资源进行回收,以提升嵌入式系统的数据存储性能。
发明内容
(一)要解决的技术问题
基于此,本发明公开了一种嵌入式NOR FLASH芯片的数据存储管理方法,该方法能在向Flash存储器写入数据前的一段CPU空闲时间内预先擦除Flash数据存储空间,待需要写入数据时即可以直接写入,缩短数据写入时间,尤其在批量写入数据时能极大提高写入的效率,还能依据权重对存储数据进行分类管理。
(二)技术方案
本发明公开了一种嵌入式NOR FLASH芯片的数据存储管理方法,该数据存储管理方法包括:
步骤S1:将NOR FLASH芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分,检索索引表区内的第一个索引表数据。所述索引表区的索引表结构包含索引号、对应数据区是否被占用标志和对应标志管理表的地址,标志管理表的数据项包括标志管理区号、数据是否被处理标志、数据对应权重和对应数据存储区的地址;
步骤S2:通过索引表的标志判断对应数据区是否被占用,若对应数据区未被占用则执行步骤S6;若对应数据区被占用则执行下一步骤;
步骤S3:进入对应的标志管理表区,读取标志管理表中的数据是否被处理标志;若被处理则执行步骤S5;若未被处理则执行下一步骤;
步骤S4:根据权重统计表判断当前数据权重是否为最低;若否则执行步骤S6;若是则执行下一步骤;
步骤S5:将标志对应的数据存储地址放入待擦除区;
步骤S6:判断索引表区此轮检索的索引表是否遍历完成,若为否则执行步骤S2以继续检索下一个索引表,若为是则执行下一步骤;
步骤S7:按数据区时间戳先后顺序对待擦除数据进行排序,最先采集的数据地址置于待擦除区首端;
步骤S8:判断待擦除数据数量s是否大于等于所需擦除空间的大小n,如果是则将待擦除区数据地址对应的数据存储区擦除;若否,则将所需擦除的空间大小更改为n-s,并把下一个要检索的索引号更改为下一轮检索的首个索引号值,并执行步骤S2以继续检索下一个索引表;若是则执行下一步骤;
步骤S9:将待擦除区数据地址对应的数据存储区擦除;
步骤S10:将索引表中对应的数据占用标志更改为未占用。
进一步的,所述执行步骤S2以继续检索下一个索引表包括:先检索下一个索引号对应的索引号标志,随后执行步骤S2。
进一步的,步骤S4中所述的权重统计表为存放于Flash最后一个子扇区内的一个数据表。
进一步的,步骤S5中所述的待擦除区为从处理器的SRAM中分配的两个缓存区,其中一个缓存区存放已被处理数据的存储地址,另一个存放未被处理但数据权重为最低的数据存储地址,擦除数据存储区时先根据已被处理数据的存储地址进行擦除。
进一步的,在步骤S6中,对所述索引表区内索引表的遍历检索,当索引表数量较为巨大时,则根据所需擦除数据空间的大小设置每轮检索索引表的数量,进行多轮检索。
进一步的,在步骤S8中,所述下一轮检索的首个索引号值大于索引表的最大索引号时,将下一轮检索的首个索引号值更改为0,从索引表的开端进行新一轮检索。
进一步的,所述的将待擦除区数据地址对应的数据存储区擦除时需根据数据地址判断该数据存储区在Flash存储器内是否跨扇区,如果没有跨扇区则将数据帧所在的整个扇区内容读取至4K的缓存区内,在缓存区内删除需擦除的数据帧,然后擦除整个扇区,再将缓存区内的数据一次性写入扇区;如果要擦除的数据帧在Flash存储器内跨扇区,则需要在跨越的两个扇区内依次执行以上的操作将数据帧擦除。
在另外一方面,本发明还公开了一种嵌入式系统,包括:至少一个处理器以及与所述处理器通信连接的至少一个NOR FLASH存储器,所述处理器内部SRAM要求容量足够大,在对Flash进行扇区擦除时,能至少分配一个4K的缓存区用来缓存一个扇区的内容,且有足够余量用来为待擦除数据地址分配两个缓存区;在所述NOR FLASH存储器中能够执行如上述任一项所述的嵌入式NOR FLASH芯片的数据存储管理方法。
(三)有益效果
相对于现有技术,本发明具备如下的有益效果:该数据存储管理方法通过对NORFLASH的存储空间重新进行区域划分,并设置相应的数据标志对存储区内的数据进行分类管理,配合新的存储管理方式可在系统CPU空闲时间对已分配的存储资源进行灵活回收,能有效减少批量数据擦除时的系统等待时间,提高NOR FLASH芯片的数据写入效率。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明中索引表区与标志管理表区结构示意图及对应的地址映射关系。
图2为本发明中权重统计表和数据存储区示意图。
图3为本发明中嵌入式NOR FLASH芯片的数据存储管理方法的流程图。
具体实施方式
下面将结合附图和实施例对本发明进行清楚、完整地描述,同时也叙述了本发明技术方案解决的技术问题及有益效果,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。
图1-3所示,本发明实施例公开了一种嵌入式NOR FLASH芯片的数据存储管理方法,包括以下步骤:
步骤S1:将Nor Flash芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分,检索索引表区内的第一个索引表数据;
所述索引表区的索引表结构包含索引号、对应数据区是否被占用标志和对应标志管理表的地址,标志管理表的数据项包括标志管理区号、数据是否被处理标志、数据对应权重和对应数据存储区的地址。
如图1所示,以SPI FLASH存储器M25PE16为例,该存储芯片的总容量为2M字节,共分为32个扇区,每个扇区又细分为16个子扇区,每个子扇区包含16页,每页256字节。本发明实施例将存储芯片M25PE16的地址区间0~0EFFFh分配为索引表区,地址区间0F000h~22FFFh分配为标志管理区,从地址23000h开始作为数据存储区,实施例从地址0开始检索第一个索引表的数据。
步骤S2:通过索引表的标志判断对应数据区是否被占用,若对应数据区未被占用则执行步骤S6;若对应数据区被占用则执行下一步骤;
本实施例中一个索引表的数据项内容占6个字节,检索第二个索引表即从地址6开始检索,往下轮询检索时以此类推。
步骤S3:如果索引表中的标志显示对应数据区被占用,则进入对应的标志管理表区,读取标志管理表中的数据是否被处理标志;若被处理则执行步骤S5;若未被处理则执行下一步骤;
标志管理表的始址为0F000h,进入对应的标志管理表区读取标志即从该地址开始往下读取。
步骤S4:如果标志管理表中的标志显示数据未被处理,则根据权重统计表判断当前数据权重是否为最低;若否则执行步骤S6;若是则执行下一步骤;
本实施例中数据权重统计表存放于Flash最后一个子扇区内的地址段1FF000h~1FF004h,数据权重根据数据帧的重要程度依次设置从1至5的权重。
步骤S5:若数据已被处理或者当前未被处理的数据其权重为最低,则将标志对应的数据存储地址放入待擦除区;
具体还包括,设置待擦除区时在缓存区分配了两段数据空间,一段用来存放已被处理数据的存储地址,另一个存放未被处理但数据权重为最低的数据存储地址,擦除数据存储区时先根据已被处理数据的存储地址进行擦除。
步骤S6:如果索引表中的标志显示对应数据区未被占用或当前未被处理的数据其权重不为最低则判断索引表区此轮检索的索引表是否遍历完成,若为否则执行步骤S2以继续检索下一个索引表,若为是则执行下一步骤;
所述执行步骤S2以继续检索下一个索引表包括:先检索下一个索引号对应的索引号标志,随后执行步骤S2;
具体还包括,步骤S6中对所述索引表区内索引表的遍历检索,当索引表数量较为巨大时,可根据所需擦除数据空间的大小设置每轮检索索引表的数量,进行多轮检索。按照本实施例中Flash存储空间的分区设置,索引区最多能包含10000个索引表,如果一次性检索完所有的索引表则时间开销较大,因此设置每轮检索索引表的数量为300,其对应每一类数据帧的存储数量为60条(如图2所示,设置了5类数据帧,分别对应1-5的5个优先级的数据权重的数量)。
步骤S7:当索引表区的所有索引表检索完成后,按数据区时间戳先后顺序对待擦除数据进行排序,最先采集的数据地址置于待擦除区首端;
步骤S8:判断待擦除数据数量s是否大于等于所需擦除空间的大小n,如果是则将待擦除区数据地址对应的数据存储区擦除;若否,则将所需擦除的空间大小更改为n-s,并把下一个要检索的索引号更改为下一轮检索的首个索引号值,并执行步骤S2以继续检索下一个索引表;若是则执行下一步骤;
具体还包括,进行多轮索引表的检索后,若下一轮检索的首个索引号值大于索引表的最大索引号10000,将下一轮检索的首个索引号值更改为0,从索引表的开始位置进行新一轮检索。
步骤S9:如果待擦除数据数量s大于等于所需擦除空间的大小n,则将待擦除区数据地址对应的数据存储区擦除;
具体还包括,所述的将待擦除区数据地址对应的数据存储区擦除时需根据数据地址判断该数据存储区在Flash存储器内是否跨扇区,如果没有跨扇区则将数据帧所在的整个扇区内容读取至4K的缓存区内,在缓存区内删除需擦除的数据帧,然后擦除整个扇区,再将缓存区内的数据一次性写入扇区;如果要擦除的数据帧在Flash存储器内跨扇区,则需要在跨越的两个扇区内依次执行上述操作将数据帧擦除。
步骤S10、待擦除区数据地址对应的数据存储区被擦除后,则将索引表中对应的数据占用标志更改为未占用。
综上,本实施例的步骤S1-S10通过在系统CPU处于空闲状态下循环运行,提前擦除Flash存储空间内已被处理及数据权重最低的数据,从而为系统数据写入预留出充足的存储空间,减少了批量数据擦除时的系统等待时间,还能极大提高Flash芯片的数据写入效率。
在软件程序的实际测试过程中,本实施例的方法大大提高了嵌入式Flash芯片的批量数据写入效率,且减少了批量数据擦除时的系统等待时间,具有较高的应用价值。
最后说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,该数据存储管理方法包括:
步骤S1:将NOR FLASH芯片的存储空间划分为索引表区、标志管理表区和数据存储区三个部分,检索索引表区内的第一个索引表数据。所述索引表区的索引表结构包含索引号、对应数据区是否被占用标志和对应标志管理表的地址,标志管理表的数据项包括标志管理区号、数据是否被处理标志、数据对应权重和对应数据存储区的地址;
步骤S2:通过索引表的标志判断对应数据区是否被占用,若对应数据区未被占用则执行步骤S6;若对应数据区被占用则执行下一步骤;
步骤S3:进入对应的标志管理表区,读取标志管理表中的数据是否被处理标志;若被处理则执行步骤S5;若未被处理则执行下一步骤;
步骤S4:根据权重统计表判断当前数据权重是否为最低;若否则执行步骤S6;若是则执行下一步骤;
步骤S5:将标志对应的数据存储地址放入待擦除区;
步骤S6:判断索引表区此轮检索的索引表是否遍历完成,若为否则执行步骤S2以继续检索下一个索引表,若为是则执行下一步骤;
步骤S7:按数据区时间戳先后顺序对待擦除数据进行排序,最先采集的数据地址置于待擦除区首端;
步骤S8:判断待擦除数据数量s是否大于等于所需擦除空间的大小n,如果是则将待擦除区数据地址对应的数据存储区擦除;若否,则将所需擦除的空间大小更改为n-s,并把下一个要检索的索引号更改为下一轮检索的首个索引号值,并执行步骤S2以继续检索下一个索引表;若是则执行下一步骤;
步骤S9:将待擦除区数据地址对应的数据存储区擦除;
步骤S10:将索引表中对应的数据占用标志更改为未占用。
2.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,所述执行步骤S2以继续检索下一个索引表包括:先检索下一个索引号对应的索引号标志,随后执行步骤S2。
3.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,步骤S4中所述的权重统计表为存放于Flash最后一个子扇区内的一个数据表。
4.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,步骤S5中所述的待擦除区为从处理器的SRAM中分配的两个缓存区,其中一个缓存区存放已被处理数据的存储地址,另一个存放未被处理但数据权重为最低的数据存储地址,擦除数据存储区时先根据已被处理数据的存储地址进行擦除。
5.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,在步骤S6中,对所述索引表区内索引表的遍历检索,当索引表数量较为巨大时,则根据所需擦除数据空间的大小设置每轮检索索引表的数量,进行多轮检索。
6.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,在步骤S8中,所述下一轮检索的首个索引号值大于索引表的最大索引号时,将下一轮检索的首个索引号值更改为0,从索引表的开端进行新一轮检索。
7.根据权利要求1所述的嵌入式NOR FLASH芯片的数据存储管理方法,其特征在于,所述的将待擦除区数据地址对应的数据存储区擦除时需根据数据地址判断该数据存储区在Flash存储器内是否跨扇区,如果没有跨扇区则将数据帧所在的整个扇区内容读取至4K的缓存区内,在缓存区内删除需擦除的数据帧,然后擦除整个扇区,再将缓存区内的数据一次性写入扇区;如果要擦除的数据帧在Flash存储器内跨扇区,则需要在跨越的两个扇区内依次执行以上的操作将数据帧擦除。
8.一种嵌入式系统,其特征在于,包括:至少一个处理器以及与所述处理器通信连接的至少一个NOR FLASH存储器,处理器内部SRAM要求容量足够大,在对Flash进行扇区擦除时,能至少分配一个4K的缓存区用来缓存一个扇区的内容,且有足够余量用来为待擦除数据地址分配两个缓存区;在所述NOR FLASH存储器中能够执行如权利要求1至7任一项所述的嵌入式NOR FLASH芯片的数据存储管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111095921.7A CN113886281A (zh) | 2021-09-18 | 2021-09-18 | 一种嵌入式nor flash芯片的数据存储管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111095921.7A CN113886281A (zh) | 2021-09-18 | 2021-09-18 | 一种嵌入式nor flash芯片的数据存储管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886281A true CN113886281A (zh) | 2022-01-04 |
Family
ID=79009858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111095921.7A Pending CN113886281A (zh) | 2021-09-18 | 2021-09-18 | 一种嵌入式nor flash芯片的数据存储管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886281A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129244A (zh) * | 2022-05-20 | 2022-09-30 | 杭州高特电子设备股份有限公司 | 基于flash芯片的电池管理系统数据存储管理方法 |
CN115328922A (zh) * | 2022-10-10 | 2022-11-11 | 北京紫光芯能科技有限公司 | 用于单向链表的数据管理方法、装置及系统 |
-
2021
- 2021-09-18 CN CN202111095921.7A patent/CN113886281A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129244A (zh) * | 2022-05-20 | 2022-09-30 | 杭州高特电子设备股份有限公司 | 基于flash芯片的电池管理系统数据存储管理方法 |
CN115129244B (zh) * | 2022-05-20 | 2024-04-26 | 杭州高特电子设备股份有限公司 | 基于flash芯片的电池管理系统数据存储管理方法 |
CN115328922A (zh) * | 2022-10-10 | 2022-11-11 | 北京紫光芯能科技有限公司 | 用于单向链表的数据管理方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
US8688894B2 (en) | Page based management of flash storage | |
CN112395212B (zh) | 减少键值分离存储系统的垃圾回收和写放大的方法及系统 | |
CN107943719B (zh) | 一种基于请求分类的闪存转换层控制方法 | |
CN113886281A (zh) | 一种嵌入式nor flash芯片的数据存储管理方法 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
US6842826B1 (en) | Method and apparatus for providing efficient management of least recently used (LRU) algorithm insertion points corresponding to defined times-in-cache | |
CN104503703A (zh) | 缓存的处理方法和装置 | |
CN106598504B (zh) | 数据存储方法及装置 | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US9081660B2 (en) | Method and system for efficiently swapping pieces into and out of DRAM | |
CN108664217B (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
US6442662B1 (en) | Memory management device including a free block table and a conversion table with a free block address data identification component | |
CN108519858B (zh) | 存储芯片硬件命中方法 | |
CN114281719A (zh) | 用于通过地址映射来扩展命令编排的系统及方法 | |
Ross | Modeling the performance of algorithms on flash memory devices | |
CN111859038A (zh) | 一种分布式存储系统数据热度统计方法、装置 | |
CN108376121B (zh) | 一种Flash存储器的数据存储方法 | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
KR101353967B1 (ko) | 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법 | |
US10503651B2 (en) | Media cache band cleaning | |
CN115145489B (zh) | 一种基于缓存结构的对象扫描方法 | |
CN112988037A (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 |