CN116225332A - 存储管理方法、存储装置及嵌入式芯片 - Google Patents
存储管理方法、存储装置及嵌入式芯片 Download PDFInfo
- Publication number
- CN116225332A CN116225332A CN202310223098.6A CN202310223098A CN116225332A CN 116225332 A CN116225332 A CN 116225332A CN 202310223098 A CN202310223098 A CN 202310223098A CN 116225332 A CN116225332 A CN 116225332A
- Authority
- CN
- China
- Prior art keywords
- data
- storage area
- memory
- storage
- area
- 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
- 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
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
本申请公开一种存储管理方法,其中存储装置的存储区包括多个单元存储页,将多个单元存储页分为第一存储区,第二存储区和第三存储区;将第一数据写入第一存储区,第一数据为长度固定的数据;将第二数据写入第二存储区,第二数据为长度可变的数据;将第三数据写入第三存储区,第三数据用于指示无效数据的目标位置;在存储区的可用存储小于第一阈值的时候,根据第三数据对多个单元存储页执行第一程序化指令。本申请的存储管理方法可以减少对存储装置的频繁擦写以延长其使用寿命。
Description
技术领域
本申请涉及嵌入式芯片的存储管理,特别涉及一种存储管理方法和存储装置,以及采用该存储装置的嵌入式芯片。
背景技术
嵌入式芯片是用于实现特定功能的专用芯片,广泛存在于各种电子产品中。存储装置则是嵌入式芯片中必不可少的组成部分,其中系统需要非易失性存储装置来存储大量的数据,而Flash(闪存)由于存储速度、空间、价格、技术成熟度等因素已成为设计嵌入式芯片时常用的选择。
Flash由于写入前先擦除的特性,在不进行存储管理的情况下很容易造成部分存储区域频繁擦写过度磨损而影响整个存储装置的寿命。但是嵌入式芯片由于芯片本身规格的限制,具有的存储区域通常比较小,在常规存储装置中用来进行存储管理的文件系统由于需要占用大量的存储区域而无法直接应用到嵌入式芯片上。出于规划存储区域和保护存储装置的需求,需要设计一种可在嵌入式芯片上使用的存储管理方法。
发明内容
本申请实施例的目的之一在于提供一种存储管理方法,以解决嵌入式芯片中的存储管理问题,实现对存储区域的合理规划与磨损均衡。
一种存储管理方法,应用于存储装置,包括:存储装置的存储区包括多个单元存储页,将多个单元存储页分为第一存储区,第二存储区和第三存储区;将第一数据写入第一存储区,第一数据为长度固定的数据;将第二数据写入第二存储区,第二数据为长度可变的数据;将第三数据写入第三存储区,第三数据用于指示无效数据的目标位置;在存储区的存储容量小于第一阈值的时候,根据第三数据对多个单元存储页执行第一程序化指令。
通过对存储装置内存储区域的划分,将不同类型的数据分开存放,可以实现对存储区域的合理规划与对数据的分类管理。
在一实施例中,第一存储区和/或第二存储区包括多个连续的单元存储页,第三存储区包括至少一个单元存储页,第一存储区、第二存储区、第三存储区所包括的单元存储页互相独立。
在一实施例中,将第三数据写入第三存储区,包括:响应于第二程序化指令,将第一目标数据标记为无效数据,第一目标数据为第二程序化指令中的执行地址对应的数据;根据无效数据的数据类型、偏移地址和数据长度生成第三数据,将第三数据写入第三存储区,其中数据类型指示无效数据属于第一数据或第二数据,偏移地址指示无效数据所在单元存储页的地址,数据长度指示无效数据的长度。
其中,第二程序化指令可以是数据删除指令,响应于数据删除指令,将指令对应的第一存储区和/或第二存储区的数据标记为无效数据。此时,在访问存储装置时已无法读取该无效数据,对于外部设备来说数据已经删除,但在物理层面上并没有执行对存储区域的擦除操作。根据无效数据生成第三数据,第三数据是数据删除标签,记录了无效数据的类型、地址和数据长度等信息,将数据删除标签写入第三存储区。
在一实施例中,响应于第二程序化指令,将第一目标数据标记为无效数据还包括:根据第二程序化指令中的执行地址找到第一目标数据,将第一目标数据读取到缓存中,将存储区内的第一目标数据标记为无效数据,根据的第二程序化指令的修改请求对缓存中的第一目标数据进行修改,并将修改后的第一目标数据写入存储区的未写入区域。
其中,第二程序化指令可以是数据修改指令,根据数据修改指令的内容,将修改后的数据写入第一存储区和/或第二存储区中的空闲区域,将数据修改指令对应的原数据标记为无效数据,在访问存储装置时已无法读取该无效数据,对于外部设备来说读取该数据时会访问修改后的新数据所存储的地址,但在物理层面上并没有执行对原存储区域的擦除操作。根据无效数据生成第三数据,第三数据是数据删除标签,记录了无效数据的地址和数据长度等信息,将数据删除标签写入第三存储区。
在一实施例中,在存储区的可用存储小于第一阈值时,包括:在第一存储区,第二存储区和第三存储区中任一个的可用存储小于第一阈值之时。
具体为,当第三存储区的可用存储小于第一阈值时;或者当第一存储区的可用存储小于第一阈值,且第三存储区存有指示第一数据类型的无效数据的第三数据之时;或者当第二存储区可用存储小于第一阈值,且第三存储区存有指示第二数据类型的无效数据的第三数据之时。
在一实施例中,第三存储区、第二存储区和第一存储区依次位于从低到高的地址区间。
在一实施例中,根据第三数据对多个单元存储页执行第一程序化指令包括:申请一个容量不小于存储区容量的缓存空间;初始化查找地址为第二存储区的起始地址,根据第三数据将第二存储区内的有效数据读取到缓存中,有效数据为第二存储区内未被标记为无效数据的第二数据;初始化查找地址为第一存储区的起始地址,根据第三数据将第一存储区内的有效数据读取到缓存中,有效数据为第一存储区内未被标记为无效数据的第一数据;对存储区内的所有单元存储页进行擦除;将缓存中的有效数据写入擦除后的存储区。
根据第三存储区中第三数据所指示的无效数据,将第一存储区和第二存储区中未被记录的有效数据读取到缓存中,对存储区进行整体擦除后将再缓存内的数据写入。整理出新的存储区域以继续存储数据,同时防止存储区部分单元存储页由于存储数据的多次更改和删除而频繁擦除造成的寿命减少。
在一实施例中,根据第三数据将第二存储区内的有效数据读取到缓存中包括:根据查找地址在第二存储区内找到第二目标数据;判断第三存储区是否存在指示第二目标数据的第三数据,若不存在则将第二目标数据读取到缓存中;将查找地址增加一个第二目标数据的长度;判断增加后的查找地址在第二存储区内对应的位置是否存在数据,若存在则继续根据查找地址在第二存储区内查找第二目标数据。
在一实施例中,根据第三数据将第一存储区内的有效数据读取到缓存中:根据查找地址在第一存储区内找到第二目标数据;判断第三存储区是否存在指示第二目标数据的第三数据,若不存在则将第二目标数据读取到缓存中;将查找地址增加一个第二目标数据的长度;判断增加后的查找地址在第一存储区内对应的位置是否存在数据,若存在则继续根据查找地址在第一存储区内查找第二目标数据。
一种存储装置,包括存储区,存储区包括多个单元存储页,多个单元存储页分为第一存储区、第二存储区和第三存储区,其中:第一存储区,用于存储第一数据,第一数据为长度固定的数据;第二存储区,用于存储第二数据,第二数据为长度可变的数据;第三存储区,用于存储第三数据,其中第三数据用于指示无效数据的目标位置。
在一实施例中,无效数据是第二程序化指令中的执行地址对应的第一目标数据,将第一目标数据标记为无效数据。
在一实施例中,第一存储区和/或第二存储区包括多个连续的单元存储页,第三存储区包括至少一个单元存储页,第一存储区、第二存储区、第三存储区所包括的单元存储页互相独立。
在一实施例中,第三存储区、第二存储区和第一存储区依次位于从低到高的地址区间。
一种嵌入式芯片,包括CPU和与CPU相连的存储装置,存储装置为实现上述任一项实施例的存储装置。
依据本申请实施方式的存储管理方法、存储装置和嵌入式芯片,将存储装置中的单元存储页进行分区管理,其中第一存储区用于存储长度固定的第一数据,而第二存储区用于长度可变的第二数据,实现对不同类型数据的分类管理,优化存储空间,最大化利用存储区域。而通过第三存储区存储用于指示第一存储区和第二存储区中无效数据目标位置的第三数据,再根据存储区的可用存储的情况对存储区内的无效数据进行整体的擦除,可以减少因执行数据删除指令或数据修改指令导致的对存储区部分单元存储页频繁擦写,可以延长存储装置的使用寿命。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一种实施方式的数据存储装置的存储结构示意图;
图2示出了本申请一种实施方式的数据存储管理方法的流程示意图;
图3示出了本申请一种实施方式的数据存储管理方法的第一程序化指令的示意图;
图4示出了本申请一种实施方式的数据存储管理方法的第一程序化指令的示意图;
图5示出了本申请一种实施方式的数据存储管理方法的第一程序化指令的示意图;
图6示出了本申请一种实施方式的数据存储管理方法的数据修改的流程示意图;
图7是图6所示数据修改流程对应的过程示意图;
图8示出了本申请一种实施方式的嵌入式芯片的框图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
下面通过具体实施方式结合附图对本申请作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
常用的嵌入式芯片在进行存储时,一般不对存储装置内的存储区进行管理,系统运行中产生的各种数据随机存储在存储区内,不同长度不同类型的数据混合存储容易导致存储区产生很多不满足最小写入单位的碎片区域,导致存储区域无法被充分利用。本实施例提出一种嵌入式芯片上的存储装置,该存储装置为一种非易失性存储器,在一种可能的实现方式中,以闪存作为本申请实施例中的存储装置。
请参看图1,是本申请一种实施方式的存储装置的示意图。存储装置10包括多个单元存储页100,多个单元存储页100分为第一存储区C、第二存储区B和第三存储区A,其中第一存储区C用于存储第一数据,第一数据为长度固定的数据,第二存储区B用于存储第二数据,第二数据为长度可变的数据,第三数据区A用于存储第三数据,第三数据用于指示无效数据的目标位置。其中无效数据是指第二程序化指令中的执行地址对应的第一目标数据,响应于第二程序化指令将第一目标数据标记为无效数据。
第一存储区C和第二存储区B分别包含多个单元存储页100,第三存储区包含至少一个单元存储页。第二存储区B可以包括第一组单元存储页,第一存储区C可以包括第二组单元存储页,其中图1中具有斜线底纹的一组单元存储页100为第一组单元存储页,具有竖线底纹的一组单元存储页为第二组单元存储页,其中所述第二组单元存储页与所述第一组单元存储页互不干扰,也就是说两个区域不存在重叠。
作为一个示例,第三存储区C、第二存储区B和第一存储区A依次位于从低到高的地址区间。
本申请实施例提供一种存储管理方法,应用与上述存储装置。请参看图2,是本申请一种实施方式的存储管理方法的流程示意图。
S201、存储装置的存储区包括多个单元存储页,将多个单元存储页分为第一存储区,第二存储区和第三存储区。
第一存储区和/或第二存储区可以包括多个连续的单元存储页,第三存储区包括至少一个单元存储页,第一存储区、第二存储和第三存储区各自所包括的单元存储页互相独立。
作为一个示例,第三存储区、第二存储区和第一存储区依次位于从低到高的地址区间。
S202、将第一数据写入第一存储区,第一数据为长度固定的数据。每个写入的第一数据包括数据头,数据主体和有效标志,数据头包括该第一数据的偏移地址和数据类型等描述信息;数据主体为该第一数据实际的内容;有效标志用于指示该第一数据是否为有效数据。在一种可能得实现方式中,第一数据为系统的永久对象(Persistent Object)数据,诸如临时变量以及状态信息等数据。可选的,当第一数据的有效标志为空时,所述第一数据为有效数据,当第一数据的有效标志被写入时,所述第一数据为无效数据。
S203、将第二数据写入第二存储区,第二数据为长度可变的数据。每个写入的第二数据包括数据头,数据主体和有效标志,数据头包括该第二数据的长度、偏移地址、数据类型等描述信息;数据主体为该第二数据实际的内容;有效标志用于指示该第二数据是否为有效数据。在一种可能得实现方式中,第二数据可以为系统中的索引(Index)数据,诸如密钥等数据。可选的,当第二数据的有效标志为空时,所述第二数据为有效数据,当第二数据的有效标志被写入时,所述第二数据为无效数据。
S204、将第三数据写入第三存储区,第三数据用于指示无效数据的目标位置。具体的,响应于第二程序化指令,将第一目标数据标记为无效数据,第一目标数据为第二程序化指令中的执行地址对应的数据。具体的,将第一目标数据标记为无效数据可以通过更改第一目标数据的有效标志,将有效数据标记为无效数据。
其中,第二程序化指令可以是数据删除指令。响应于数据删除指令,将指令中执行地址对应的位于第一存储区和/或第二存储区中的第一目标数据标记为无效数据,相当于执行了删除第一目标数据的操作。无效数据在访问存储装置时无法被读取,只是在物理层面上并没有执行对第一目标数据所在单元存储页的擦除操作。
在一种可能得实施例中,响应于第二程序化指令,将第一目标数据标记为无效数据还包括:根据第二程序化指令中的执行地址找到第一目标数据,将第一目标数据读取到缓存中,将存储区内的第一目标数据标记为无效数据,根据的第二程序化指令的修改请求对缓存中的第一目标数据进行修改,并将修改后的第一目标数据写入存储区的可用单元存储页。若第一目标数据为第一数据,则修改后的第一目标数据写入第一存储区的可用单元存储页;若第一目标数据为第二数据,则修改后的第一目标数据写入第二存储区的可用单元存储页。
具体的,第二程序化指令可以是数据修改指令。根据数据修改指令的内容,将修改后的数据写入第一存储区和/或第二存储区中的可用单元存储页,更新数据地址,并将数据修改指令对应的原数据标记为无效数据。无效数据在访问存储装置时无法被读取,但在物理层面上并没有执行对原存储区域的擦除操作。
根据无效数据的数据类型、偏移地址和数据长度生成第三数据,将第三数据写入第三存储区,其中数据类型指示无效数据属于第一数据或第二数据,偏移地址指示无效数据所在单元存储页的地址,数据长度指示无效数据的长度。
具体的,第三数据可以为指示无效数据的一种数据删除标签。第三数据包括数据类型参数(type)、偏移量参数(offset)和长度参数(size),数据类型参数用于指示无效数据属于第一数据或第二数据,偏移量参数用于指示无效数据所在单元存储页的地址,长度参数用于指示无效数据的数据长度。通过第三数据所包含的数据类型参数、偏移量参数和长度参数可以确定目标数据所在存储区是第一存储区还是第二存储区,以及其在存储区的位置(起始地址)以及目标数据的长度(占用字节量),从而确定无效数据的目标位置。目标位置确定后,则可以判断对应要删除的无效数据在存储区的具体位置。
第三数据可以固定长度存储于所述第三存储区。可选的,第三数据可以按照其所生成时间的先后依次存入第三存储区。
具体的,每一第三数据以固定长度存储于第三存储区,比如第三数据的长度可以是128字节,而偏移量参数可以用32位无符号整型(UINT32)数据来表示,长度参数也可以用UINT32数据来表示,类型参数可以用整型(int)数据表示。在其他一些实施例中,第三数据也不限于以上参数,比如还可以包括句柄(handle)参数,可用于索引数据存储区的无效数据。
S205、在存储区的可用存储小于第一阈值的时候,根据第三数据对多个单元存储页执行第一程序化指令。
在一种可能得实施例中,存储区的可用存储小于第一阈值的时候可以是在第一存储区、第二存储区和第三存储区中任意一个的可用存储小于第一阈值的时候。
具体的,当第一存储区、第二存储区和/或第三存储区的存储状态有以下情况之一时可以执行第一程序化指令:1)第三存储区的可用存储小于第一阈值;2)第一存储区的可用存储小于第一阈值,且第三存储区存有指示无效数据为第一数据类型的第三数据;3)第二存储区的可用存储小于第一阈值,且第三存储区存有指示无效数据为第二数据类型的第三数据;4)第二存储区的可用存储大于第一阈值但可用存储空间不连续。
本申请实施例的存储管理方法,标记无效数据并生成生成第三数据,利用单独的第三存储区存放用于指示无效数据目标位置的第三数据,并通过对整个数据存储区的擦除集中处理无效数据,降低反复擦除对数据存储装置寿命的影响。且由于不同类型数据存放于不同区域的数据的分区管理,可以减少数据存储区的碎片化。尤其对于闪存而言,现有方式中通常通过引入基于闪存特性优化的文件系统来解决碎片和频繁擦除的问题,而引入文件系统导致需要大量的单元存储页作为存放描述文件元数据的区域,这些额外的文件元数据需要大量存储空间,从而挤占了系统数据的实际存储空间,而本申请实施例的存储管理方法不需要引入文件系统,只需要较少的存储空间作为第三存储区,就能完成存储管理,从而以较小的存储为代价完成小容量存储的空间管理,尤其适合于嵌入式芯片的存储管理。参看图3,是本申请一种实施方式的存储管理方法的第一程序化指令的示意图,第一程序化指令的过程可以包括:
S300、申请一个容量不小于存储区容量的缓存;
申请缓存空间是为了将存储装置的存储区所存放的有效数据暂存至缓存中,为确保每个有效数据均能正确读取到缓存,缓存的大小至少与整个存储区的容量大小相当,整个存储区包含了第三存储区、第二存储区和第一存储区。有效数据指的是第一存储区与第二存储区中数据标志为有效的数据。
具体的,缓存可以为嵌入式芯片内的随机存取存储器(Random Access Memory,RAM)。例如,可以为512KB总容量的闪存的刷写申请512KB大小的RAM。
S310、初始化查找地址为第二存储区的起始地址,将第二存储区内的有效数据读取到缓存中,所述有效数据为所述第二存储区内未被标记为无效数据的第二数据;
S320、初始化查找地址为第一存储区的起始地址,将第三存储区内的有效数据读取到缓存中,所述有效数据为所述第一存储区内未被标记为无效数据的第一数据;
S330、对存储区内的所有单元存储页进行擦除;
在有效数据均复制到缓存后,对整个存储区,也就是第三存储区、第二存储区和第一存储区内的所有单元存储页进行擦除。
S340、将缓存中的有效数据写入擦除后的存储区。
缓存中存放了去掉无效数据之后的所有有效数据,将这些有效数据重新写入被整片擦除后的存储区。
具体的,步骤S310包括步骤S311-S316,请参看图4:
S311、初始化查找地址为第二存储区的起始地址;
S312、根据查找地址在第二存储区内找到第二目标数据;
从根据当前查找地址在第二存储区内找到的数据为第二目标数据。
S313、判断第三存储区是否存在指示第二目标数据的第三数据,若不存在则执行步骤S314,若存在则执行步骤S315;
对于根据查找地址找到的第二目标数据,查找第三存储区,如果存在第三数据包含与当前查找地址对应的偏移量参数,说明第三存储区存在指示此第二目标数据的第三数据,即第二目标数据为无效数据,因此将不会将第二目标数据读取到缓存中,则流程下一步执行S315;反之,则执行步骤S314。
S314、将第二目标数据读取到缓存中;
判断第二目标数据为有效数据后,将第二目标数据读取到缓存中。
S315、将查找地址增加一个第二目标数据的长度;
查找地址增加一个第二目标数据的长度,继续根据查找地址在第二存储区内查找下一个第二目标数据。
S316、判断增加后的查找地址在第二存储区内对应的位置是否存在数据,若存在则执行步骤S312;
当查找地址对应的位置不存在数据,说明从第二存储区的起始地址开始,随着查找地址的增加直至达到第二存储区最后一个存储数据的末地址,已经完成将整个第二存储区的长度范围内的有效数据读取到缓存,可以继续执行S320。如果查找地址对应的位置仍存在数据,则说明还未遍历整个第二存储区的数据,则返回执行步骤S312,继续寻找有效数据。确保将所有有效数据都读取到缓存,而需要删除的无效数据均能被删除掉(不读取至缓存)。
具体的,步骤S320包括步骤S321-S326,请参看图5:
S321、初始化查找地址为第一存储区的起始地址;
S322、根据查找地址在第一存储区内找到第二目标数据;
从根据当前查找地址在第一存储区内找到的数据为第二目标数据。
S323、判断第三存储区是否存在指示第二目标数据的第三数据,若不存在则执行步骤S324,若存在则执行步骤S325;
对于根据查找地址找到的第二目标数据,查找第三存储区,如果存在第三数据包含与当前查找地址对应的偏移量参数,说明第三存储区存在指示此第二目标数据的第三数据,即第二目标数据为无效数据,因此将不会将第二目标数据读取到缓存中,则流程下一步执行S325;反之,则执行步骤S324。
S324、将第二目标数据读取到缓存中;
判断第二目标数据为有效数据后,将第二目标数据读取到缓存中。
S325、将查找地址增加一个第二目标数据的长度;
查找地址增加一个第二目标数据的长度,继续根据查找地址在第一存储区内查找下一个第二目标数据。
S326、判断增加后的查找地址在第一存储区内对应的位置是否存在数据,若存在则执行步骤S322;
当查找地址对应的位置不存在数据,说明从第一存储区的起始地址开始,随着查找地址的增加直至达到第一存储区最后一个存储数据的末地址,已经完成将整个第一存储区的长度范围内的有效数据读取到缓存,可以继续执行S330。如果查找地址对应的位置仍存在数据,则说明还未遍历整个第一存储区的数据,则返回执行步骤S322,继续寻找有效数据。确保将所有有效数据都读取到缓存,而需要删除的无效数据均能被删除掉(不读取至缓存)。
请参看图6和图7,图6是本申请一种实施方式的存储管理方法的数据修改指令的流程示意图,图7则是图6所示数据修改流程对应的过程示意图。当第二程序化指令是数据删除指令时,直接响应于数据删除指令将第一目标数据标记为无效数据,并生成用于指示无效数据的目标位置的第三数据即可。而当第二程序化指令是数据修改指令时,由于涉及到数据修改过程,实际包含了将新数据写入和将旧数据删除两个部分,因此将第一目标数据标记为无效数据并根据生成第三数据仅完成了将旧数据删除这部分过程,而完整的数据修改过程可以结合以下进一步的描述来阐述。
S401:根据数据修改指令在存储区中搜索第一目标数据;
在接收到数据修改指令后,首先在存储装置的存储区内根据数据修改指令内的执行地址搜索到第一目标数据。作为一个示例,图5以数据存储装置为闪存(Flash)为例进行说明。Flash的数据存储区包括第二存储区,第二存储区可用于存储索引数据,与对象数据一般只存在添加和删除操作不同,索引数据可能需要频繁修改,因此本申请中为此设置了一个高速缓存区域(Cache)临时存储待修改数据,也就是需要修改的索引数据。作为示例,缓存区域的大小可以是2KB。
S402:将第一目标数据读取到缓存;
搜索到第一目标数据之后,将其读入缓存中。假设示例中的Flash的第二存储区存在多个有效数据区B_d,有效数据区B_d存放有有效数据,而数据修改指令指向的第一目标数据Index1存放于目标位置B_m,第一目标数据Index1无法直接在Flash内被修改,因此需要将第一目标数据Index1读入Cache。
S403:在缓存中将读入的第一目标数据修改为新数据,并将第一目标数据标记为无效数据;
在缓存内将读入的第一目标数据修改为新数据,比如在Cache内将Index1修改为Index2。原地址中第一目标数据标记为无效数据。
S404:根据无效数据生成第三数据,第三数据用于指示无效数据的目标位置;
第三数据用于指示第一目标数据也就是无效数据的目标位置,在数据修改指令情况下,Flash中的搜索到的第一目标数据就是需要删除的“旧数据”即无效数据,因此其对应的目标位置B_m也就是无效数据的目标位置,所生成的第三数据实质上也是用于指示Flash中无效数据的目标位置。根据无效数据生成的第三数据存放于第三存储区,也就是说数据修改指令针对的“旧数据”暂时不需要物理擦除,等存储区的存储状态满足一定条件后才执行第一程序化指令来实现整个存储区的擦除。
本申请的数据存储管理方法还可以包括数据写入流程,具体的,数据写入流程包括:接收数据写入指令;根据所述数据写入指令判断写入数据的类型;若所述写入数据的类型为固定长度数据,将所述写入数据顺序写入所述第一存储区,若所述写入数据的类型为可变长度数据,将所述写入数据顺序写入所述第二存储区。
可选的,本申请数据存储装置还可以采用上电初始化机制,上电初始化指在芯片上电后执行第一程序化指令,大致包括:每次芯片上电后会先将存储区内的有效数据全部读入缓存,然后对整个存储区内的单元存储页进行擦除动作,随后仅仅只将有效数据写入存储区,下一次新数据存储时可以直接写入。第一程序化指令执行的具体流程如上述S300-S340,在此不再赘述。
请参看图8,是本申请一种实施方式的嵌入式芯片的框图。以TPM(TrustedPlatform Module,可信赖平台模块)芯片为例进行阐述。TPM芯片是指符合TPM标准的安全芯片,它能有效地保护PC、防止非法用户访问。其最核心的功能在于对CPU处理的数据流进行加密,生成加密的密钥,并进行密钥的存储和身份的验证。为了消除外接存储器带来的不安全性,TPM的存储采用嵌入式设计,将存储器集成在芯片SOC上,以保证数据安全。因此TPM芯片实际上是一个含有密码运算部件和存储部件的小型片上系统,该嵌入式系统80包括CPU801、Flash802、ROM803、RAM804、系统控制子系统805、AHB总线806、安全子系统807和外设子系统808。安全子系统807一般包括密码运算器和随机数产生器等,可用于进行加密运算。系统控制子系统805包含有嵌入式操作系统,外设子系统808包括各种I/O,比如UART、I2C、SPI等,用于与外部设备的连接。AHB总线806用于将CPU与嵌入式系统80中各单元进行连接。CPU801作为嵌入式系统的主控,可用于控制将系统数据写入Flash802,或者从Flash802中删除系统数据,或者修改Flash802中存储的密钥。ROM803用于存储嵌入式系统的控制程序,RAM804作为缓存单元,Flash802用于存储系统数据,包括对象数据和索引数据。Flash802采用前述实施方式或示例中的存储装置的数据分区存储结构和存储管理方法,也就是本例中Flash802可采用前述的存储装置10,具体的实现方式和有益效果可参看前文,此处不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
前述具体说明已参照各种实施例进行了描述。然而,本领域技术人员将认识到,可以在不脱离本披露的范围的情况下进行各种修正和改变。因此,对于本披露的考虑将是说明性的而非限制性的意义上的,并且所有这些修改都将被包含在其范围内。同样,有关于各种实施例的优点、其他优点和问题的解决方案已如上所述。然而,益处、优点、问题的解决方案以及任何能产生这些的要素,或使其变得更明确的解决方案都不应被解释为关键的、必需的或必要的。本文中所用的术语“包括”和其任何其他变体,皆属于非排他性包含,这样包括要素列表的过程、方法或设备不仅包括这些要素,还包括未明确列出的或不属于该过程、方法、系统或设备的其他要素。此外,本文中所使用的术语“耦合”和其任何其他变体都是指物理连接、电连接、磁连接、光连接、通信连接、功能连接和/或任何其他连接。
具有本领域技术的人将认识到,在不脱离本申请的基本原理的情况下,可以对上述实施例的细节进行许多改变。因此,本申请的范围应根据以下权利要求确定。
Claims (14)
1.一种存储管理方法,应用于存储装置,其特征在于,包括:
所述存储装置的存储区包括多个单元存储页,将所述多个单元存储页分为第一存储区,第二存储区和第三存储区;
将所述第一数据写入所述第一存储区,所述第一数据为长度固定的数据;
将所述第二数据写入所述第二存储区,所述第二数据为长度可变的数据;
将所述第三数据写入所述第三存储区,所述第三数据用于指示无效数据的目标位置;
在所述存储区的可用存储小于第一阈值的时候,根据所述第三数据对所述多个单元存储页执行第一程序化指令。
2.根据权利要求1所述的存储管理方法,其特征在于,所述第一存储区和/或所述第二存储区包括多个连续的单元存储页,所述第三存储区包括至少一个单元存储页,所述第一存储区、所述第二存储区、所述第三存储区所包括的单元存储页互相独立。
3.根据权利要求1的存储管理方法,其特征在于,所述将所述第三数据写入所述第三存储区,包括:
响应于第二程序化指令,将第一目标数据标记为无效数据,所述第一目标数据为所述第二程序化指令中的执行地址对应的数据;
根据所述无效数据的数据类型、偏移地址和数据长度生成所述第三数据,将所述第三数据写入所述第三存储区,其中所述数据类型指示所述无效数据属于第一数据或第二数据,所述偏移地址指示所述无效数据所在单元存储页的地址,所述数据长度指示所述无效数据的长度。
4.根据权利要求3所述的存储管理方法,其特征在于,所述响应于第二程序化指令,将第一目标数据标记为无效数据还包括:
根据所述第二程序化指令中的执行地址找到所述第一目标数据,将所述第一目标数据读取到缓存中,将所述存储区内的所述第一目标数据标记为无效数据,根据所述的第二程序化指令的修改请求对所述缓存中的所述第一目标数据进行修改,并将所述修改后的第一目标数据写入所述存储区的未写入区域。
5.根据权利要求1所述的存储管理方法,其特征在于,所述在所述存储区的可用存储小于第一阈值时,包括:
在所述第一存储区,第二存储区和第三存储区中任一个的可用存储小于第一阈值之时。
6.根据权利要求1-5任意一项所述的存储管理方法,其特征在于,所述第三存储区、所述第二存储区和所述第一存储区依次位于从低到高的地址区间。
7.根据权利要求6所述的存储管理方法,其特征在于,所述根据所述第三数据对所述多个单元存储页执行第一程序化指令包括:
申请一个容量不小于所述存储区容量的缓存;
初始化查找地址为所述第二存储区的起始地址,根据所述第三数据将所述第二存储区内的有效数据读取到缓存中,所述有效数据为所述第二存储区内未被标记为无效数据的第二数据;
初始化查找地址为第一存储区的起始地址,根据所述第三数据将第一存储区内的有效数据读取到缓存中,所述有效数据为所述第一存储区内未被标记为无效数据的第一数据;
对所述存储区内的所有单元存储页进行擦除;
将所述缓存中的所述有效数据写入擦除后的存储区。
8.根据权利要求7所述的存储管理方法,其特征在于,所述根据所述第三数据将所述第二存储区内的有效数据读取到缓存中包括:
根据所述查找地址在所述第二存储区内找到所述第二目标数据;
判断所述第三存储区是否存在指示所述第二目标数据的所述第三数据,若不存在则将所述第二目标数据读取到缓存中;
将查找地址增加一个第二目标数据的长度;
判断增加后的查找地址在第二存储区内对应的位置是否存在数据,若存在则继续根据所述查找地址在所述第二存储区内查找所述第二目标数据。
9.根据权利要求7所述的存储管理方法,其特征在于,所述根据所述第三数据将第一存储区内的有效数据读取到缓存中:
根据所述查找地址在所述第一存储区内找到所述第二目标数据;
判断所述第三存储区是否存在指示所述第二目标数据的所述第三数据,若不存在则将所述第二目标数据读取到缓存中;
将查找地址增加一个第二目标数据的长度;
判断增加后的查找地址在第一存储区内对应的位置是否存在数据,若存在则继续根据所述查找地址在所述第一存储区内查找所述第二目标数据。
10.一种存储装置,包括存储区,其特征在于,所述存储区包括多个单元存储页,所述多个单元存储页分为第一存储区、第二存储区和第三存储区,其中:
第一存储区,用于存储第一数据,所述第一数据为长度固定的数据;
第二存储区,用于存储第二数据,所述第二数据为长度可变的数据;
第三存储区,用于存储第三数据,其中所述第三数据用于指示无效数据的目标位置。
11.根据权利要求10所述的存储装置,其特征在于,所述无效数据是第二程序化指令中的执行地址对应的第一目标数据,响应于第二程序化指令将所述第一目标数据标记为所述无效数据。
12.根据权利要求10所述的存储装置,其特征在于,所述第一存储区和/或所述第二存储区包括多个连续的单元存储页,所述第三存储区包括至少一个单元存储页,所述第一存储区、所述第二存储区、所述第三存储区所包括的单元存储页互相独立。
13.根据权利要求10所述的存储装置,其特征在于,所述第三存储区、所述第二存储区和所述第一存储区依次位于从低到高的地址区间。
14.一种嵌入式芯片,包括CPU和与所述CPU相连的存储装置,其特征在于,所述存储装置为权利要求10-13任意一项所述的存储装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310223098.6A CN116225332A (zh) | 2023-03-03 | 2023-03-03 | 存储管理方法、存储装置及嵌入式芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310223098.6A CN116225332A (zh) | 2023-03-03 | 2023-03-03 | 存储管理方法、存储装置及嵌入式芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225332A true CN116225332A (zh) | 2023-06-06 |
Family
ID=86574829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310223098.6A Pending CN116225332A (zh) | 2023-03-03 | 2023-03-03 | 存储管理方法、存储装置及嵌入式芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225332A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687570A (zh) * | 2023-11-17 | 2024-03-12 | 鸿秦(北京)科技有限公司 | 一种固态硬盘中读写服务自适应的方法 |
-
2023
- 2023-03-03 CN CN202310223098.6A patent/CN116225332A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687570A (zh) * | 2023-11-17 | 2024-03-12 | 鸿秦(北京)科技有限公司 | 一种固态硬盘中读写服务自适应的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100980309B1 (ko) | 호스트 디바이스 및 메모리 시스템 | |
US6611907B1 (en) | Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card | |
KR100725390B1 (ko) | 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법 | |
JP5336060B2 (ja) | 不揮発性メモリ装置およびそれを動作させる方法 | |
JP4188744B2 (ja) | メモリカード | |
US7953919B2 (en) | Physical block addressing of electronic memory devices | |
US8667213B2 (en) | Flash management techniques | |
US8307172B2 (en) | Memory system including memory controller and separately formatted nonvolatile memory to avoid “copy-involving write” during updating file data in the memory | |
US8484430B2 (en) | Memory system and host device | |
CN109634517A (zh) | 进行存取管理的方法、记忆装置、电子装置和其控制器 | |
US8244959B2 (en) | Software adapted wear leveling | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN108319433B (zh) | 小内存单片机的NOR Flash的存储管理方法 | |
US10360155B1 (en) | Multi-tier memory management | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
KR20040082921A (ko) | 플래쉬 파일 시스템 | |
US8996787B2 (en) | Storage device aware of I/O transaction and stored data | |
US6256232B1 (en) | Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same | |
US10552335B2 (en) | Method and electronic device for a mapping table in a solid-state memory | |
US11520698B2 (en) | Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method | |
CN109521944A (zh) | 数据储存装置以及数据储存方法 | |
CN116225332A (zh) | 存储管理方法、存储装置及嵌入式芯片 | |
CN110471626B (zh) | 应用于Java Card的Nor Flash管理层及方法 | |
JP2010092113A (ja) | 記憶装置、電子装置、および、データ管理方法 | |
CN108304331B (zh) | 基于NorFlash的环形队列式数据存储方法及装置 |
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 |