CN115840532A - 非连续变长的Flash缓存方法、电子设备及存储介质 - Google Patents
非连续变长的Flash缓存方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115840532A CN115840532A CN202211433769.3A CN202211433769A CN115840532A CN 115840532 A CN115840532 A CN 115840532A CN 202211433769 A CN202211433769 A CN 202211433769A CN 115840532 A CN115840532 A CN 115840532A
- Authority
- CN
- China
- Prior art keywords
- cache
- flash
- segment
- node
- content
- 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
-
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种非连续变长的Flash缓存方法、电子设备及存储介质。其中,方法包括:获取Flash物理地址内容的读取请求;遍历缓存段链表,得到待写入内容;当需要提交缓存时,遍历缓存段链表,动态申请一段RAM空间作为缓存页;根据缓存段链表和缓存页实现数据写入。本发明实施例使用链表结构,只缓存“有用”的数据,可以实现用更少的RAM实现Flash缓存读写。特别是当需要更新的内容分布在不同的Flash页中,节省的缓存更多,而且并不会降低性能,系统运行的其它部分的可用RAM可以维持不变或者增多,这样就能保持更多的系统运行余量,增强系统的兼容性。
Description
技术领域
本发明涉及嵌入式系统的Flash缓存读写技术领域,具体涉及一种非连续变长的Flash缓存方法、电子设备及存储介质。
背景技术
嵌入式系统是一种专用的计算机系统,用于控制、监视或者辅助操作机器和设备。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统。有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。嵌入式系统的运行数据通常存储在片上或者片外FLASH中。
掉电之后,嵌入式系统上所有能够存在的信息都是保存在其内部或者外部芯片的Flash上的。但Flash读写数据是需要时间的,特别是写数据的时间比较长,所以通常用缓存的方式,先将数据保存在RAM中,在RAM中读写,等时机成熟再一次性写入Flash中。这样可以减少写Flash的次数,从而提高性能。
事先准备好一段定长的缓存区,通常以页为单位,比如2页或者4页,当需要更新某段Flash数据时,先把这段Flash数据所在的物理页地址找到,然后将整页内容连续顺序拷贝到缓存页中,然后再将更新数据拷贝到缓存页中,之后根据需要在缓存中读写这段数据,最后当缓存提交的时候,将这一页的缓存整体写到Flash中,完成Flash更新。
如上所述,现有缓存技术是将某段Flash数据所在的物理页整页内容全部都缓存起来,而不管其是否是真正需要更新的内容。比如Flash某一页(页大小为256字节)每个字节都是0x55,需要将其中从第128字节开始的两个字节更新为0xaa(真正“有用”的只有这两个字节),但却需要将这页的全部内容(所有“无用”的0x55)拷贝到缓存中,然后在缓存中将第128字节开始的两个字节修改为0xaa,最后再将这一页的缓存整体写到Flash中。这样的方式,当需要更新的数据分布同一页中,缓存只需要一页;如果需要一次性更新的数据分布在不同的Flash页中,就需要较多的缓存页来缓存数据,缓存的无用数据也更多。所以,现有缓存技术用在RAM比较多的处理器中的时候问题不大。但在处理器的RAM较少的情况下,如果想要维持Flash读写性能不变,则缓存页的数量必须保持不变,分配给系统运行的其它部分的可用RAM就较少,如果要求维持系统运行的其它部分的可用RAM更多,则分配给缓存页的RAM就会减少,这样就没有足够的缓存页来进行一次性更新,就需要分多次进行Flash更新,Flash读写性能就会下降。
发明内容
针对背景技术中所提及的技术缺陷,本发明实施例的目的在于提供一种非连续变长的Flash缓存方法、电子设备及存储介质。
为实现上述目的,第一方面,本申请实施例提供了一种非连续变长的Flash缓存方法,包括:
获取Flash物理地址内容的读取请求;
根据所述读取请求,遍历缓存段链表,得到待写入内容;所述缓存段链表包括多个缓存段节点,每一缓存段节点的数据结构均包括物理地址、缓存长度、缓存内容及下一个缓存段节点地址;
当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页;
根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
作为本申请的一种具体实现方式,所述读取请求包括Flash物理地址;根据所述读取请求,遍历缓存段链表,得到待写入内容,具体为:
遍历所述缓存段链表;
若所述缓存段链表中有缓存段节点覆盖所述Flash物理地址,则从该缓存段节点中读取内容,以作为所述待写入内容;
若所述缓存段链表中无缓存段节点覆盖所述Flash物理地址,则从所述Flash物理地址中读取内容,以作为所述待写入内容。
作为本申请的一种具体实现方式,得到Flash缓存页的过程具体为:
当需要提交缓存时,遍历所述缓存段链表,找出所有物理地址均在同一页的缓存段节点;
记录该所有物理地址的页地址,根据每一缓存段节点的缓存长度找出最大值;
根据该最大值动态申请一段RAM空间作为写入Flash内容的Flash缓存页。
作为本申请的一种具体实现方式,根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入,具体为:
将记录的页地址开始的内容拷贝到所述Flash缓存页中;
将找出的所有缓存段节点的内容依次拷贝到所述Flash缓存页中;
删除所述缓存段列表中找出的所有缓存段节点;
将所述Flash缓存页更新至Flash中,并动态释放所述Flash缓存页。
作为本申请的一种优选实现方式,获取Flash物理地址内容的读取请求之前,所述方法还包括:
当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
作为一种具体的实现方式,所述缓存请求与当前缓存段节点重合的判断标准为:
若Flash段物理地址在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间;或者
Flash段物理地址加Flash段内容长度在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间。
第二方面,本本申请实施例提供了一种电子设备,包括:
第一单元,用于获取Flash物理地址内容的读取请求;
第二单元,用于根据所述读取请求,遍历缓存段链表,得到待写入内容;所述缓存段链表包括多个缓存段节点,每一缓存段节点的数据结构均包括物理地址、缓存长度、缓存内容及下一个缓存段节点地址;
第三单元,用于当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页;
第四单元,用于根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
进一步地,作为本申请的一种优选实现方式,所述电子设备还包括第五单元,用于:
当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
第三方面,本申请实施例还提供了另一种电子设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如上述第一方面所述的方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令。其中,所述程序指令被处理器执行时实现如上述第一方面所述的方法步骤。
与现有技术相比,本发明实施例使用链表结构,只缓存“有用”的数据,可以实现用更少的RAM实现Flash缓存读写。特别是当需要更新的内容分布在不同的Flash页中,节省的缓存更多,而且并不会降低性能,系统运行的其它部分的可用RAM可以维持不变或者增多,这样就能保持更多的系统运行余量,增强系统的兼容性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的非连续变长的Flash缓存方法的流程图;
图2是缓存段链表的示意图;
图3是缓存分配函数的执行流程图;
图4是合并节点的流程图;
图5是新增节点的流程图;
图6是缓存读函数的执行流程图;
图7是缓存提交函数的执行流程图;
图8是本发明实施例提供的电子设备的一种结构图;
图9是本发明实施例提供的电子设备的另一种结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
本发明的发明构思是:如背景技术部分所述,在RAM比较少的处理器中,如果要维持Flash读写性能不变,则系统运行的其他部分的可用RAM会减少,可能导致系统运行不正常或者使用环境受限。因此,本发明实施例采用一种链表结构,只缓存“有用”数据,这样就可以减少缓存的使用量,加上动态申请释放的机制,能保证系统正常运行。需要说明的是,与背景技术相比可知,本发明实施例中,缓存的长度是不固定的,且缓存的内容在RAM中也是不连续的。
实施例1:
请参考图1,本发明实施例提供了一种非连续变长的Flash缓存方法,包括:
S1,定义缓存段节点的数据结构,根据缓存段节点生成缓存段链表。
具体地,每一缓存段节点的数据结构包括:物理地址、缓存长度、缓存内容及下一个缓存段节点地址等。多个缓存段节点可构成如图2所示的缓存段链表。
S2,更新缓存段链表。
具体地,当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
其中,缓存请求与当前缓存段节点重合的判断标准为:
若Flash段物理地址在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间;或者
Flash段物理地址加Flash段内容长度在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间。
S3,获取Flash物理地址内容的读取请求。
S4,根据所述读取请求,遍历缓存段链表,得到待写入内容。
具体地,当需要读取某段Flash物理地址时,遍历所述缓存段链表;
若所述缓存段链表中有缓存段节点覆盖所述Flash物理地址,则从该缓存段节点中读取内容,以作为所述待写入内容;
若所述缓存段链表中无缓存段节点覆盖所述Flash物理地址,则从所述Flash物理地址中读取内容,以作为所述待写入内容。
S5,当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页。
具体地,当需要提交缓存时,遍历所述缓存段链表,找出所有物理地址均在同一页的缓存段节点;
记录该所有物理地址的页地址,根据每一缓存段节点的缓存长度找出最大值;
根据该最大值动态申请一段RAM空间作为写入Flash内容的Flash缓存页。
S6,根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
具体地,S6包括:
(1)将步骤S5中记录的页地址开始的内容拷贝到步骤S5申请的缓存页中;
(2)将步骤S5中找到的所有缓存段节点的内容依次拷贝到步骤S5申请的缓存页中;
(3)在缓存段链表中,删除步骤S5找到的缓存段节点,并释放其空间。
(4)更新缓存页到Flash中;
(5)动态释放步骤S5中申请的缓存页。
进一步地,本实施例中,在释放申请的缓存页后,会继续跳转至步骤S5,重复执行步骤S5和S6,重复遍历缓存段链表,寻找物理地址属于不同页的缓存段节点,直至左右缓存段节点都提交、缓存段链表清空为止。
实施例2:
本发明还提供来另一种非连续变长的Flash缓存方法,包括如下步骤:
一、定义一个结构体
实现的代码如下:
其中,变量addr为Flash物理地址,length为缓存长度,value为缓存内容地址指针;next为下一个缓存段节点地址。
接着,定义一个全局变量t_cache_node*cache_start;用于保存缓存段链表起始节点。
二、定义缓存分配函数
如图3所示,缓存分配函数的执行流程如下:
(1)函数开始,当前及上一个节点指针初始值赋值为链表起始节点;
(2)缓存命中变量初始值赋值为假;
(3)判断当前节点指针是否为空,若否,遍历结束;若是,则执行步骤(4);
(4)flash更新地址及长度是否和当前节点重合,若是,则缓存命中变量赋值为真,合并节点,遍历结束;若否,执行步骤(5);
(5)上一个节点指针赋值为当前节点指针;
(6)当前节点指针赋值为当前节点指向的下一个节点;
(7)遍历结束;
(8)根据缓存命中变量判断是否命中,若是,函数结束;若否,新增节点,函数结束。
其中,如图4所示,上述合并节点的流程如下:
(1)函数开始,比较flash地址长度与当前节点地址长度的关系,确定需要合并数据起始地址及长度;
(2)根据新数据大小申请临时RAM作为新缓存空间;
(3)从flash地址及当前节点缓存内容地址拷贝到新缓存空间;
(4)释放当前节点缓存内容RAM空间;
(5)修改点给钱节点的Flash物理地址、缓存长的长度和缓存内容地址指针,函数结束。
其中,如图5所示,上述新增节点流程如下:
(1)函数开始,根据数据大小申请临时RAM作为缓存空间和链表节点;
(2)从flash地址拷贝数据到缓存空间;
(3)填充节点Flash物理地址、缓存长度和缓存内容地址指针;
(4)将节点挂到缓存段链表尾部,函数结束。
三、定义缓存读函数
如图6所示,缓存读函数的执行流程如下:
(1)函数开始,当前节点指针初始赋值为链表起始节点;
(2)缓存命中变量初始值赋值为假;
(3)当前节点指针是否为空,若是,执行步骤(4),若否,遍历结束;
(4)flash地址及长度是否和当前节点重合,若是,缓存命中变量赋值为真,从cache中拷贝数据到Buffer,遍历结束;若否,执行步骤(5);
(5)当前节点指针赋值为当前节点指向的下一个节点;
(6)遍历结束;
(7)根据缓存命中变量判断是否命中,若是,函数结束,若否,执行步骤(8);
(8)从flash中拷贝数据到Buffer,函数结束。
三、定义缓存提交函数
如图7所示,缓存提交函数的执行流程如下:
(1)函数开始,链表起始节点是否为空,若是,则函数结束;若否,执行步骤(2);
(2)当前节点指针初始值赋值为链表起始节点;
(3)Flash页地址变量赋值为当前节点Flash地址的页地址;
(4)当前节点指针是否为空,若是,遍历结束,若否,执行步骤(5);
(5)当前节点Flash地址的页地址是否与Flash页地址变量相等,若是,执行步骤(6),若否,当前指针节点赋值为当前节点指针的下一个节点;
(6)当前节点缓存长度是否大于记录的最大缓存长度,若是,执行步骤(7),若否,当前指针节点赋值为当前节点指针的下一个节点;
(7)将记录的最大缓存长度变量赋值为当前节点缓存长度,当前指针节点赋值为当前节点指针的下一个节点;
(8)遍历结束;
(9)根据最大缓存长度计算缓存页大小;
(10)申请临时页缓存RAM;
(11)Flash页地址变量赋值为当前节点Flash地址的页地址;
(12)当前节点指针是否为空,若是,遍历结束,若否,执行步骤(13);
(13)当前节点Flash地址的页地址是否与Flash页地址变量相等,若是,执行步骤(14),若否,执行步骤(16);
(14)将缓存内容拷贝到临时缓存RAM中;
(15)删除当前节点;
(16)当前节点指针赋值为当前指针的下一个节点,并返回步骤(11);
(17)遍历结束;
(18)更新缓存页到Flash中;
(19)释放临时页缓存RAM。
从以上描述可以得知,本发明实施例使用链表结构,只缓存“有用”的数据,可以实现用更少的RAM实现Flash缓存读写。特别是当需要更新的内容分布在不同的Flash页中,节省的缓存更多,而且并不会降低性能,系统运行的其它部分的可用RAM可以维持不变或者增多,这样就能保持更多的系统运行余量,增强系统的兼容性。
基于相同的发明构思,本发明实施例提供了一种电子设备。如图8所示,上述电子设备可以包括:
第一单元,用于获取Flash物理地址内容的读取请求;
第二单元,用于根据所述读取请求,遍历缓存段链表,得到待写入内容;所述缓存段链表包括多个缓存段节点,每一缓存段节点的数据结构均包括物理地址、缓存长度、缓存内容及下一个缓存段节点地址;
第三单元,用于当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页;
第四单元,用于根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
其中,所示读取请求包括Flash物理地址;第二单元具体用于:
遍历所述缓存段链表;
若所述缓存段链表中有缓存段节点覆盖所述Flash物理地址,则从该缓存段节点中读取内容,以作为所述待写入内容;
若所述缓存段链表中无缓存段节点覆盖所述Flash物理地址,则从所述Flash物理地址中读取内容,以作为所述待写入内容。
进一步地,第三单元具体用于:
当需要提交缓存时,遍历所述缓存段链表,找出所有物理地址均在同一页的缓存段节点;
记录该所有物理地址的页地址,根据每一缓存段节点的缓存长度找出最大值;
根据该最大值动态申请一段RAM空间作为写入Flash内容的Flash缓存页。
进一步地,第四单元具体用于:
将记录的页地址开始的内容拷贝到所述Flash缓存页中;
将找出的所有缓存段节点的内容依次拷贝到所述Flash缓存页中;
删除所述缓存段列表中找出的所有缓存段节点;
将所述Flash缓存页更新至Flash中,并动态释放所述Flash缓存页。
优选地,该电子设备还包括第五单元,用于:
当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
可选地,请参考图9,本发明实施例的电子设备可以包括:一个或多个处理器101、一个或多个输入设备102、一个或多个输出设备103和存储器104,上述处理器101、输入设备102、输出设备103和存储器104通过总线105相互连接。存储器104用于存储计算机程序,所述计算机程序包括程序指令,所述处理器101被配置用于调用所述程序指令执行如图1所示的方法步骤。
应当理解,在本发明实施例中,所称处理器101可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备102可以包括键盘等,输出设备103可以包括显示器(LCD等)、扬声器等。
该存储器104可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器104的一部分还可以包括非易失性随机存取存储器。例如,存储器104还可以存储设备类型的信息。
具体实现中,本发明实施例中所描述的处理器101、输入设备102、输出设备103可执行本发明实施例提供的非连续变长的Flash缓存方法的实施例中所描述的实现方式,在此不再赘述。
需要说明的是,关于电子设备部分更为具体的工作流程描述,请参考前述方法实施例部分,在此不再赘述。
此外,对应前述方法实施例及电子设备,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现:上述非连续变长的Flash缓存方法。
所述计算机可读存储介质可以是前述任一实施例所述的电子设备内部存储单元,例如系统的硬盘或内存。所述计算机可读存储介质也可以是所述系统的外部存储设备,例如所述系统上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述系统的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述系统所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种非连续变长的Flash缓存方法,其特征在于,包括:
获取Flash物理地址内容的读取请求;
根据所述读取请求,遍历缓存段链表,得到待写入内容;所述缓存段链表包括多个缓存段节点,每一缓存段节点的数据结构均包括物理地址、缓存长度、缓存内容及下一个缓存段节点地址;
当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页;
根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
2.如权利要求1所述的Flash缓存方法,其特征在于,所述读取请求包括Flash物理地址;根据所述读取请求,遍历缓存段链表,得到待写入内容,具体为:
遍历所述缓存段链表;
若所述缓存段链表中有缓存段节点覆盖所述Flash物理地址,则从该缓存段节点中读取内容,以作为所述待写入内容;
若所述缓存段链表中无缓存段节点覆盖所述Flash物理地址,则从所述Flash物理地址中读取内容,以作为所述待写入内容。
3.如权利要求1所述的Flash缓存方法,其特征在于,得到Flash缓存页的过程具体为:
当需要提交缓存时,遍历所述缓存段链表,找出所有物理地址均在同一页的缓存段节点;
记录该所有物理地址的页地址,根据每一缓存段节点的缓存长度找出最大值;
根据该最大值动态申请一段RAM空间作为写入Flash内容的Flash缓存页。
4.如权利要求3所述的Flash缓存方法,其特征在于,根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入,具体为:
将记录的页地址开始的内容拷贝到所述Flash缓存页中;
将找出的所有缓存段节点的内容依次拷贝到所述Flash缓存页中;
删除所述缓存段列表中找出的所有缓存段节点;
将所述Flash缓存页更新至Flash中,并动态释放所述Flash缓存页。
5.如权利要求1-4任一项所述的Flash缓存方法,其特征在于,获取Flash物理地址内容的读取请求之前,所述方法还包括:
当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
6.如权利要求5所述的Flash缓存方法,其特征在于,所述缓存请求与当前缓存段节点重合的判断标准为:
若Flash段物理地址在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间;或者
Flash段物理地址加Flash段内容长度在缓存段节点存储的物理地址和缓存段节点存储的物理地址加缓存长度之间。
7.一种电子设备,其特征在于,包括:
第一单元,用于获取Flash物理地址内容的读取请求;
第二单元,用于根据所述读取请求,遍历缓存段链表,得到待写入内容;所述缓存段链表包括多个缓存段节点,每一缓存段节点的数据结构均包括物理地址、缓存长度、缓存内容及下一个缓存段节点地址;
第三单元,用于当需要提交缓存时,遍历所述缓存段链表,根据每一缓存段节点的数据结构动态申请一段RAM空间作为写入Flash内容的Flash缓存页;
第四单元,用于根据所述缓存段链表和Flash缓存页实现所述待写入内容在Flash中的写入。
8.如权利要求7所述的电子设备,其特征在于,所述电子设备还包括第五单元,用于:
当需要缓存一段Flash内容时,根据该Flash内容的物理地址和缓存长度遍历所述缓存段链表的每一缓存段节点;
若所述缓存请求与当前缓存段节点重合,则根据所述缓存请求修改所述当前缓存段节点;
若所述缓存请求与当前缓存段节点不重合,则根据所述当前缓存段节点的大小,动态申请一段RAM空间作为新缓存段节点;
在所述新缓存段节点中填入物理地址、缓存长度及内容,并将所述新缓存段节点添加至所述缓存段链表的末尾处。
9.一种电子设备,其特征在于,所述电子设备包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1-6任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211433769.3A CN115840532A (zh) | 2022-11-16 | 2022-11-16 | 非连续变长的Flash缓存方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211433769.3A CN115840532A (zh) | 2022-11-16 | 2022-11-16 | 非连续变长的Flash缓存方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115840532A true CN115840532A (zh) | 2023-03-24 |
Family
ID=85575639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211433769.3A Pending CN115840532A (zh) | 2022-11-16 | 2022-11-16 | 非连续变长的Flash缓存方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840532A (zh) |
-
2022
- 2022-11-16 CN CN202211433769.3A patent/CN115840532A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426619B (zh) | 访问快闪存储器模块的方法及相关闪存控制器与电子装置 | |
US7809903B2 (en) | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions | |
US8307148B2 (en) | Flash management techniques | |
US7805582B2 (en) | Method of managing memory in multiprocessor system on chip | |
US7849060B2 (en) | System and method for managing log information for transaction | |
CN111090663A (zh) | 事务并发控制方法、装置、终端设备及介质 | |
US20130080738A1 (en) | Processor configured to perform transactional memory operations | |
US20210089442A1 (en) | Dynamically allocating memory pool subinstances | |
US10198352B2 (en) | Efficient pointer swizzling for persistent objects | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
US20060277221A1 (en) | Transactional file system with client partitioning | |
JP3973129B2 (ja) | キャッシュメモリ装置及びそれを用いた中央演算処理装置 | |
EP1510924B1 (en) | Apparatus and method for handling transactions with writes and reads to EEPROM or Flash memories | |
US7861114B2 (en) | System and method for recovery of memory transactions | |
CN111694806A (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
CN115840532A (zh) | 非连续变长的Flash缓存方法、电子设备及存储介质 | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN107977282B (zh) | 一种SPI-Nand读取数据页的方法及装置 | |
WO2014064914A1 (ja) | データ格納装置、データ格納方法およびプログラム | |
CN107967222A (zh) | 一种SPI-Nand查找数据页的方法及装置 | |
CN111831327A (zh) | 可执行指令的电子装置以及指令执行方法 | |
CN113760195B (zh) | 一种基于嵌入式的fatfs文件系统 | |
JPS6032220B2 (ja) | 情報処理装置 | |
CN111435285A (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
CN117271440B (zh) | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 |
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 |