一种通过模拟通用存储器实现FLASH均匀磨损的方法与流程
未命名
10-21
阅读:76
评论:0
一种通过模拟通用存储器实现flash均匀磨损的方法
技术领域
1.本发明涉及flash存储领域,具体的说,涉及了一种通过模拟通用存储器实现flash均匀磨损的方法。
背景技术:
2.目前,可燃气体监测设备及环境气体监测设备通常具有数据记录的功能,考虑到稳定性和功耗,这些监测设备内部通常使用单片机作为主控制器,其中,单片机程序和其他不可丢失的数据(如监测结果)通常保存在单片机内部的eeprom中,eeprom存储器耐写入性能好但是容量小;随着社会的发展,这些智能仪表的智能化程度越来越高,程序和不可丢失数据总量越来越大,eeprom已无法满足存储的容量需求,厂家开始考虑使用flash rom作为存储器芯片。
3.flash rom存储器先天存在着不耐磨损的缺陷,于是很多闪存卡附带了均衡磨损功能,但是,考虑到数据的安全原因,单片机程序和其他不可丢失的数据不能存放在带有均衡磨损功能的外置存储器中。并且单片机中并不存在传统意义的操作系统,而是由软件本身直接访问数据存储器和程序存储器;从方式上来说,单片机并非以传统文件访问的方式访问存储器,而是以地址方式访问某个存储器单元。因此,一旦单片机程序确定了读写某个存储器单元,则永远在此段代码中访问这个单元。
4.而在监测设备工作运行过程中,往往会产生大量的数据需要去存储,这意味着大量数据需要频繁写入或改写,如果不对写入数据的物理地址加以管理,则会出现某个存储器单元由于频繁写入或改写而产生较大磨损,缩短设备的使用寿命,提高使用成本。
5.因此迫切需要一种方法对写入芯片flash的数据的物理地址进行管理,使芯片的flash的各个地址区间磨损更均匀,从而延长设备芯片的使用寿命。
6.为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
技术实现要素:
7.本发明的目的是针对现有技术的不足,从而提供了一种通过模拟通用存储器实现flash均匀磨损的方法。
8.为了实现上述目的,本发明所采用的技术方案是:一种通过模拟通用存储器实现flash均匀磨损的方法,包括以下步骤:基于flash模拟通用存储器,为所述通用存储器的每个页面配置一个信息表,所述信息表包括该页的擦除次数、地址段、校验字和写入串号sn;所述校验字表示该页的页面状态,包括无效和有效两个值;所述地址段为该页所模拟的数据存储的逻辑地址区间,每个地址段的长度为页面长度减去信息表的长度;擦除次数为该页的擦除次数;写入串号sn为全部页面擦除次数的总和;当向flash中请求写入数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标写入页,将数据写入目标写入页;
当向flash中请求读取数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标读取页,从目标读取页读取数据。
9.本发明在标准的flash rom存储芯片之上,建立一个可控的逻辑层,把未经平衡的flashrom芯片,映射为地址访问优化的通用存储器空间,省去了专门的存储外设。请求写入数据时,只提供逻辑起始地址及数据长度即可,然后基于页面映射表确定当下页面中磨损程度最小的页面为目标页,并将数据写入至目标页。请求读取数据时,同样只提供逻辑起始地址及数据长度即可,然后根据页面映射表寻找对应的页地址作为目标读取页,并将数据读出。最终实现了均衡flash的磨损程度。
10.在一个实施例中,基于页面映射表确定目标写入页,将数据写入目标写入页包括以下步骤:基于页面映射表将待写入数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度;确定是否有页面的地址段与其匹配,若有,则基于页面映射表确定每个匹配页面的页面状态,所述页面状态包括有效页、无效页和空闲页;根据每个匹配页面的页面状态确定目标写入页,更新其信息表;将目标写入页数据读至内部缓存区,并根据段内字节地址,将待写入数据写至内部缓存区的尾部;将内部缓存区中的所有数据全部写入目标写入页中,并用待写入数据的数据长度减去本次写入数据的长度;多次重复上述步骤,直至所有待写入数据均被写入。
11.进一步的,本实施例中采用阻塞方式写入数据,利用内部缓存区的中转作用,将待写入数据写入flash中,这个过程中由于请求数据不会直接对旧页改动,因此即使在新数据写入过程中断电,旧数据仍可恢复,不会丢失,存储更安全。
12.在一个实施例中,基于页面映射表确定每个页面的页面状态包括以下步骤:根据每个匹配页面的信息表中的校验字判断页面状态,若校验字为错误时,判定页面状态为无效;若校验字正确时,判定页面状态为有效;比较每个页面状态有效的匹配页面的写入串号sn与其它页面状态有效且地址段相同的匹配页面的写入串号sn,sn大的匹配页面确定为有效页,否则为空闲页。
13.在一个实施例中,基于页面映射表确定每个匹配页面的页面状态后,选择无效页或者擦除次数最小的空闲页,作为本次的目标写入页;其中,无效页的优先级最高,空闲页的优先级顺序为按照擦除次数从小到大。
14.在一个实施例中,基于页面映射表确定目标读取页,从目标读取页读取数据包括以下步骤:基于页面映射表将待读取数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度;根据页面映射表寻找对应的页地址作为目标读取页;根据段内字节地址和数据长度从目标读取页找到待读取数据,并读取至内部缓存区,再从内部缓存区读取数据;用待读取数据的长度减去本次待读取数据的长度;
多次重复上述步骤,直至所有待读取数据均被读出。
15.在一个实施例中,当向flash中写入数据时,判断待写入数据的数据长度是否超过模拟存储器的最大长度,若超过,则结束写入步骤;当从flash中读取数据时,判断待读取数据的长度是否越界,若越界,则结束读取步骤。
16.在一个实施例中,每发生一次写入请求,均判断是否执行静态均衡磨损。
17.本发明还提供一种计算机存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述的通过模拟通用存储器实现flash均匀磨损的方法的步骤。
18.本发明还提供一种可燃气体监测设备,内置有前述的计算机存储介质。
19.本发明还提供一种环境气体监测设备,内置有前述的计算机存储介质。
附图说明
20.图1是本发明的流程示意图。
21.图2是本发明的页面内容示意图。
22.图3是逻辑地址区间示意图。
23.图4是页面与物理地址逻辑地址关系示意图。
24.图5 是页面映射表的示意图。
25.图6是写入过程流程示意图。
具体实施方式
26.下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
27.实施例1如图1所示,一种通过模拟通用存储器实现flash均匀磨损的方法,包括以下步骤:基于flash模拟通用存储器。
28.在具体实施时,可以根据自由定义通用存储器管理的页面数量及单页面长度。其中,页面长度最大为512字节,页面数量最大256页。
29.为所述通用存储器的每个页面配置一个信息表,所述信息表包括该页面的擦除次数、地址段、校验字和写入串号sn。图2所示为页面内容结构,可以看出,页面内容除了信息表外,还包括数据存储区;当页面长度为512字节时,数据存储区包括504字节,信息表为8字节,其中擦除次数占用20bit,地址段占用8bit,校验字占用4bit,写入串号sn占用32bit。
30.具体的,所述信息表的地址段用来表示该页所模拟的数据存储的逻辑地址区间,每个地址段的长度为页面长度减去信息表的长度。例如,页面总数为4,每个页面长度512字节;信息表长度固定为8字节,地址段=n ,则该页存储的逻辑起始地址为:(512-8)*n= 504n,逻辑结束地址为:(512-8)*(n+1)-1= 504n+503,如图3所示。
31.即,逻辑地址与信息表中的地址段有关,一段逻辑地址对应多个页面,页面标号与物理地址一一对应,如图4所示。
32.所述信息表的擦除次数为局部变量,是指对应页面n的累积擦除次数,即对应页面的磨损程度。
33.所述信息表的校验字用来表示页面信息是否有效,具体的,校验字有2个值,无效和有效。
34.所述信息表的写入串号sn用来表示总擦写次数,其值为全局变量,当页面写入数据后,写入串号sn+1,因此该值是全部页面擦除次数的总和。sn值越大代表着数据越新。例如:页面0,1,2的地址段都为2,则说明页面对应的逻辑地址相同,那么这三个页中写入串号sn最大的为最新数据,另外两页数据为旧。
35.可以看出,所述信息表的内容虽然简单但包括信息多,因此后期可以基于信息表生成页面映射表,更方便地管理flash的磨损程度。
36.通用存储器模拟完成后,当向flash中请求写入数据时,基于每个页面的信息表生成页面映射表,如图5所示,并基于页面映射表确定目标写入页,将数据写入目标写入页。
37.具体的,如图6所示,基于页面映射表确定目标写入页,将数据写入目标写入页包括以下步骤:基于页面映射表将待写入数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度。
38.确定是否有页面的地址段与其匹配,若有,则基于页面映射表确定每个匹配页面的页面状态,所述页面状态包括有效页、无效页和空闲页;无效表示该页数据和页面信息无效;空闲表示该页数据和页面信息有效,但不是最新数据;有效表示该页数据和页面信息有效且为最新写入。
39.其中,基于页面映射表确定每个页面的页面状态包括以下步骤:根据每个匹配页面的信息表中的校验字判断页面状态,若校验字为错误时,判定页面状态为无效;若校验字正确时,判定页面状态为有效;比较每个页面状态有效的匹配页面的写入串号sn与其它页面状态有效且地址段相同的匹配页面的写入串号sn,sn大的匹配页面确定为有效页,否则为空闲页。
40.根据每个匹配页面的页面状态确定目标写入页,更新其信息表,具体的,选择无效页或者擦除次数最小的空闲页,作为本次的目标写入页;其中,无效页的优先级最高,空闲页的优先级顺序为按照擦除次数从小到大。
41.将目标写入页数据读至内部缓存区,并根据段内字节地址,将待写入数据写至内部缓存区的尾部。
42.将内部缓存区中的所有数据全部写入目标写入页中,并用待写入数据的数据长度减去本次写入数据的长度。
43.多次重复上述步骤,直至所有待写入数据均被写入。
44.当向flash中请求读取数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标读取页,从目标读取页读取数据。
45.其中,基于页面映射表确定目标读取页,从目标读取页读取数据包括以下步骤:基于页面映射表将待读取数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度;根据页面映射表寻找对应的页地址作为目标读取页;根据段内字节地址和数据长度从目标读取页找到待读取数据,并读取至内部缓存区,再从内部缓存区读取数据;
用待读取数据的长度减去本次待读取数据的长度;多次重复上述步骤,直至所有待读取数据均被读出。
46.可以看出,本发明在标准的flash rom存储芯片之上,建立了一个可控的逻辑层,把未经平衡的flashrom芯片,映射为地址访问优化的通用存储器空间,省去了专门的存储外设;请求写入数据时,只提供逻辑起始地址及数据长度即可,然后基于页面映射表确定当下页面中磨损程度最小的页面为目标页,并将数据写入至目标页。请求读取数据时,同样秩序提供逻辑起始地址及数据长度即可,然后基于页面映射表确定目标读取页进行数据读取。
47.进一步的,在写入数据时,本实施例中采用阻塞方式,利用内部缓存区的中转作用,将待写入数据写入flash中,这个过程中由于请求数据不会直接对旧页改动,因此即使在新数据写入过程中断电,旧数据仍可恢复,不会丢失,存储更安全。在读取数据时,本实施例同样采用阻塞方式,根据映射表及逻辑地址,将数据先读取至内部缓存区,然后再一次性从内部缓存区读出。这样的好处是即使在读取过程中断电也不会造成影响。因为边读取,边根据读取结果动作,则一旦断电,容易造成动作仅执行一部分;但是先读取至内部缓存区,然后再一次性从内部缓存区读出时,可以减少这种情况。因为使用内存的数据是最高效的。
48.可以理解,在向flash中写入数据时,还可以先判断待写入数据的数据长度是否超过模拟存储器的最大长度,若未超过,则不存在数据溢出现象,则基于每个页面的信息表生成页面映射表,若超过,则存在数据溢出现象,返回对应错误信息,并结束写入步骤。
49.同理,当从flash中读取数据时,还可以先判断读取数据长度是否越界,若越界,则结束读取步骤;若未越界,再基于每个页面的信息表生成页面映射表。
50.需要注意的是,本实施例前述的通过模拟通用存储器实现flash均匀磨损的方法为动态均衡磨损;动态均衡磨损是指当需要更改某个页中的数据时,将新的数据写入擦除次数较少的特理页上,同时将原页标为无效页,动态磨损平衡算法的缺点在于,如果刚刚写入的数据很快又被更新,那么,刚刚更新过的数据块很快又变成无效页,如果频繁更新,无疑会让保存冷数据的block极少得到擦除,对闪存整体寿命产生不利影响。早期的固态硬盘主控多用动态磨损平衡算法。现在则更多是研究动态和静态共同使用。静态磨损平衡则是考虑了那些频率很低的block(冷数据),例如:系统数据所在的block或者某些只读数据,这些冷数据所在的block被更新的频率比热数据所在的block明显低很多,静态磨损平衡算法是把这些冷数据所在的block也加入磨损平衡中,增加了闪存的总体寿命。
51.因此本实施例中,每发生一次写入请求,均需要判断是否执行静态均衡磨损。具体的,静态均衡磨损的处理过程如下:第一步,找到擦除次数最小的有效页,此页对应物理地址所存数据有效,且使用率低;第二步,找到擦除次数最多的空闲页,此页对应物理地址此时可存入数据,且使用率高;第三步,分析此二页擦除次数差值是否大于设定阈值,若大于则将第一步找到的页的数据存至内部缓存区中,并从内部缓存区中缓存至第二步找到的页中,从而实现静态均衡磨损;反之,则不做处理。
52.实施例2
本实施例提供一种计算机存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现实施例1所述的通过模拟通用存储器实现flash均匀磨损的方法的步骤。
53.实施例3本实施例还提供一种可燃气体监测设备,内置有实施例2所述的计算机存储介质。
54.本实施例还提供一种环境气体监测设备,内置有实施例2所述的计算机存储介质。
55.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
技术特征:
1.一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,包括以下步骤:基于flash模拟通用存储器,为所述通用存储器的每个页面配置一个信息表,所述信息表包括该页的擦除次数、地址段、校验字和写入串号sn;所述校验字表示该页的页面状态,包括无效和有效两个值;所述地址段为该页所模拟的数据存储的逻辑地址区间,每个地址段的长度为页面长度减去信息表的长度;擦除次数为该页的擦除次数;写入串号sn为全部页面擦除次数的总和;当向flash中请求写入数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标写入页,将数据写入目标写入页;当向flash中请求读取数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标读取页,从目标读取页读取数据。2.根据权利要求1所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,基于页面映射表确定目标写入页,将数据写入目标写入页包括以下步骤:基于页面映射表将待写入数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度;确定是否有页面的地址段与其匹配,若有,则基于页面映射表确定每个匹配页面的页面状态,所述页面状态包括有效页、无效页和空闲页;根据每个匹配页面的页面状态确定目标写入页,更新其信息表;将目标写入页数据读至内部缓存区,并根据段内字节地址,将待写入数据写至内部缓存区的尾部;将内部缓存区中的所有数据全部写入目标写入页中,并用待写入数据的数据长度减去本次写入数据的长度;多次重复上述步骤,直至所有待写入数据均被写入。3.根据权利要求2所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,基于页面映射表确定每个页面的页面状态包括以下步骤:根据每个匹配页面的信息表中的校验字判断页面状态,若校验字为错误时,判定页面状态为无效;若校验字正确时,判定页面状态为有效;比较每个页面状态有效的匹配页面的写入串号sn与其它页面状态有效且地址段相同的匹配页面的写入串号sn,sn大的匹配页面确定为有效页,否则为空闲页。4.根据权利要求2所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于:基于页面映射表确定每个匹配页面的页面状态后,选择无效页或者擦除次数最小的空闲页,作为本次的目标写入页;其中,无效页的优先级最高,空闲页的优先级顺序为按照擦除次数从小到大。5.根据权利要求1所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,基于页面映射表确定目标读取页,从目标读取页读取数据包括以下步骤:基于页面映射表将待读取数据的信息转换为地址段、段内字节地址以及在该地址段可用的数据长度;根据页面映射表寻找对应的页地址作为目标读取页;根据段内字节地址和数据长度从目标读取页找到待读取数据,并读取至内部缓存区,再从内部缓存区读取数据;
用待读取数据的长度减去本次待读取数据的长度;多次重复上述步骤,直至所有待读取数据均被读出。6.根据权利要求1至5任一项所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,当向flash中写入数据时,判断待写入数据的数据长度是否超过模拟存储器的最大长度,若超过,则结束写入步骤;当从flash中读取数据时,判断待读取数据的长度是否越界,若越界,则结束读取步骤。7.根据权利要求1至5任一项所述的一种通过模拟通用存储器实现flash均匀磨损的方法,其特征在于,每发生一次写入请求,均判断是否执行静态均衡磨损。8.一种计算机存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1至7中任一项所述的通过模拟通用存储器实现flash均匀磨损的方法的步骤。9.一种可燃气体监测设备,其特征在于,内置有权利要求8所述的计算机存储介质。10.一种环境气体监测设备,其特征在于,内置有权利要求8所述的计算机存储介质。
技术总结
本发明提供一种通过模拟通用存储器实现FLASH均匀磨损的方法,包括以下步骤:基于FLASH模拟通用存储器,为所述通用存储器的每个页面配置一个信息表;当向FLASH中请求写入数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标写入页,将数据写入目标写入页;当向FLASH中请求读取数据时,基于每个页面的信息表生成页面映射表,并基于页面映射表确定目标读取页,从目标读取页读取数据。本发明在标准的Flash ROM存储芯片之上,建立一个可控的逻辑层,把未经平衡的Flash ROM存储芯片,映射为地址访问优化的通用存储器空间,省去了专门的存储外设,基于页面映射表进行写入或读取数据,可快速方便地实现均衡FLASH的磨损程度。FLASH的磨损程度。FLASH的磨损程度。
技术研发人员:武传伟 张晓男 桑小田 侯梦迪 张嘉嵘 高良 杨晓雯
受保护的技术使用者:汉威科技集团股份有限公司
技术研发日:2023.07.11
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/