一种嵌入式存储器的读写优化方法

文档序号:6443938阅读:149来源:国知局
专利名称:一种嵌入式存储器的读写优化方法
技术领域
本发明涉及一种优化嵌入式Norflash存储器读写(以下简称eflash)的方法,尤其适用于在eflash上建立文件系统的嵌入式软件系统。
背景技术
半导体存储器可分为挥发性存储器和非挥发性存储器两类,挥发性存储器掉电后会失去记忆的数据,非挥发性存储器即使在切断电源的情况下也可以保护数据。ROM是非挥发性存储器,ROM在类型上根据用户是否可以写入数据而分为两类,一类是用户可以写入的 ROM,另一类是是制造商在加工过程中写入的被称为Mask ROM。在用户可以写入的ROM中, 比较常用的有EEPROM (Electrically Erasable Programmable ROM,电可擦可编程只读存储器)和 eflash (Embedded Flash Memory,嵌入式闪存)。eflash是EEPROM走向成熟,半导体技术发展到亚微米技术,以及大容量电可擦写存储器需求的产物。它存储数据的原理是以电荷的形式储存在浮栅电极上。与EEPROM相比,Flash在集成度方面有无可比拟的优越性;它的单元面积仅为常规EEPROM的四分之一。 EEPROM由于成本高、需求量小、集成度低,有逐渐被eflash取代的趋势。但是eflash在应用中有以后缺点一方面,eflash不能按字读写;另一方面, eflash只能以页单位执行擦除操作,一页通常很大,根据不同的eflash型号从256字节到 4K字节都有。另外,在对eflash进行写操作之前,必须先执行擦除操作,而擦除操作所需要的时间非常长,一般会达到微秒级。这在应用中会带来很大的不便,增加了文件系统实现的复杂性,并降低了系统性能。

发明内容
本发明的目的是解决目前应用中在对eflash存储器读写时遇到的技术难点,提供一种更高性能和更方便的eflash存储器的读写优化方法,使得对eflash存储器的读写可以像操作SRAM (静态随机存储器)一样简单,来提高文件系统的性能,同时降低系统的复杂度。本发明的技术方案是提供一种嵌入式存储器的读写优化方法,所述嵌入式存储器是eflash ;所述优化方法,包含
在eflash的主存空间中设置若干个物理页,将每个物理页划分成若干个同样大小的扇区;还在虚拟空间中设置若干个逻辑页,使一个逻辑页的大小等于一个扇区的大小;
并且,定义了将一个逻辑页与一个物理页相对应,并将该逻辑页上的有效数据映射到其所对应的物理页中若干个扇区上的映射关系,即使逻辑页地址等于物理页地址,而逻辑页上有效数据的偏移地址等于该物理页上各个扇区的偏移地址;
因此根据所述映射关系,能够确定逻辑页上有效数据在所对应的物理页上的具体扇区号,进而根据该扇区号对eflash进行逻辑读或逻辑写的操作。所述优化方法,具体包含在初始化时进行的建表操作,即,在一 SRAM中建立映射CN 102541753 A
关系表,来确定与逻辑页上有效数据所对应的扇区号;
在所述建表操作中,根据一个逻辑页上有效数据的偏移地址,从相对应的物理页的最后一个扇区向第一个扇区依次扫描,得到各个扇区的相同偏移地址上的数据
如果从其中一个扇区上获得的数据不是全FF,则该扇区号为逻辑页上有效数据的映射扇区号,在映射关系表中将该扇区记录为逻辑页上有效数据所对应的扇区;
如果所有扇区的该偏移地址上数据都是全FF,则设定所述逻辑页上该有效数据的映射扇区号为0,将该物理页的第一个扇区记录为逻辑页上有效数据所对应的扇区。所述映射关系表是在所述SRAM中建立的一个二维数组Lut [m] [η],其中m代表 eflash中各个逻辑页的逻辑页号;η代表有效数据在一个逻辑页中的逻辑编号;所述逻辑编号与数据在逻辑页及相应扇区中的偏移量相对应,所述偏移量与所述eflash的最小读写单位相匹配;
所述二维数组的值用s表示,代表有效数据所对应的扇区号。所述优化方法在进行逻辑读操作时,根据应用程序给出的逻辑地址,算出有效数据所在的逻辑页数,及其在该逻辑页中的偏移量,通过查询所述映射关系表得到在相应物理页上具体映射的扇区号;再根据所述偏移量,计算所映射的扇区上与该逻辑地址对应的物理地址;之后,读取所述物理地址上的数据。所述优化方法在进行逻辑写操作时,先读取应用程序给出的逻辑地址上数据的值
如果读出的值是全FF,则将新值直接写到当前映射扇区的该物理地址; 如果读出的值不是全FF,且当前映射扇区不是所述eflash的最后一个扇区,则将新的数据写到当前扇区的下一个扇区中,并更新映射关系表;
如果读出的值不是全FF,且当前映射扇区是所述eflash的最后一个扇区,则将当前逻辑页上所有的有效数据都读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。另外,所述优化方法在进行逻辑写操作时,如果要写入逻辑页的新值是全FFJlJF 管所映射的是哪个扇区,都要将当前逻辑页中所有的有效数据读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。本发明所述嵌入式存储器的读写优化方法,其优点在于,通过建立逻辑页数据与物理页数据之间的映射关系,使得eflash存储器的读写操作简单高效,尤其是在写入数据时可以分情况处理,不必在所有情况下都进行整页的擦除操作,解决了传统应用中的技术问题。因此,本发明能够提高文件系统的性能,同时降低系统的复杂度。


图1是本发明所述嵌入式存储器的读写优化方法中建表操作的流程图; 图2是本发明所述嵌入式存储器的读写优化方法中逻辑写操作的流程图。
具体实施例方式本发明是一种适用于嵌入式Norflash存储器(以下简称eflash)的读写优化方法,首先将eflash的每个物理页划分成若干个同样大小的物理扇区,通常便于计数会分成 4个或8个物理扇区。使一个物理页对应一个逻辑页,同时,使一个逻辑页对应若干个同样大小的物理扇区,即,同一个逻辑页上的数据会分布在同一个物理页的不同扇区上面,一个逻辑页的大小等于一个物理扇区的大小。应用程序具体访问的是逻辑页上的数据,而逻辑页上的数据需要通过特定的映射关系才能对应到真正的物理页上的数据。为此,本发明中定义了一种高效的映射关系,即, 令逻辑页地址等于物理页地址,而需访问的逻辑页上数据的偏移地址等于该物理页上物理扇区的偏移地址;因此,为了从逻辑页数据映射到物理页数据,只需要找到对应的扇区号, 例如4个或8个物理扇区中的某个扇区编号。一般在使用中,初始化时,会提前在一 SRAM中建立好映射关系表,来确定逻辑页上数据在所对应物理页上的扇区号。通常是从高到低扫描对应物理页的各个扇区上处在相同偏移地址上的数据如果发现数据不是全FF,则该扇区号即为逻辑页上该数据的映射扇区号;如果发现所有扇区的该偏移地址上数据都是全FF,则设定逻辑页上该数据的映射扇区号为0 (即该数据与第一个扇区对应)。在读操作时,只需通过上述的映射关系找到物理上实际的数据进行读取即可。在写操作时,首先通过上述的映射关系找到物理上实际的数据,如果是全FF则可以直接写入;而如果不是全FF且当前扇区不在最后一个扇区,则将数据写到当前找到扇区的下一个扇区中,否则,在这种情况下应将当前逻辑页的所有有效数据都读到SRAM中,擦除对应物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中;以上操作完成后,更新映射表。为了方便解释本发明的内容,以一款具体的eflash为例,阐述eflash存储器的读写优化方法,本实施例中将eflash的最后32页、共1 字节大小的物理空间模拟成3 字节大小的EEPR0M,S卩,所述eflash的每个扇区大小为IK字节,读写的最小单位是16比特。 应用程序通过指定的函数接口,只需要给出逻辑地址,就可以像操作SRAM —样对eflash进行读写操作,无需关心擦除、页面大小等问题。具体方法是,将eflash的最后32页从小到大依次记为逻辑页号pageO到page31, 再将eflash的一个物理页分成4个扇区,标号从0到3。并且,使一个逻辑页内存放的有效数据为一个扇区的大小(即IK字节)。因为eflash是16位的,所以内部存储管理逻辑以半字为最小单位来管理,即每个逻辑页内的有效数据有512个半字,逻辑编号从0到511。逻辑页上有效数据的逻辑编号,与相应的半字在扇区中的偏移量相对应,但该数据具体存放在与逻辑页对应的哪个扇区是不确定的,这就需要在SRAM中建立一个映射表, 记录这个半字处在哪个扇区。在SRAM中建立一个二维数组Lut [m] [η],数组中m代表逻辑页号,大小从0到31,η代表有效数据在一页中的逻辑编号,大小从0到511 ;数组的值用s 表示,对应扇区号(Γ3。本发明将建立所述二维数组Lut[m] [η]的过程称为建表操作。参见图1所示建立映射表时的流程图,从逻辑页m = 0、有效数据的逻辑编号η = 0开始建表。为了查找有效数据位于哪个扇区,应从最高扇区向最低扇区依次开始查找,也就是从最后一个扇区(本例中即扇区3)向第一个扇区(即扇区0)依次查找。如果查到其中某一个扇区相应偏移量处的值不等于OxfTfT,则此扇区即为有效数据所在的扇区。如果一直查找到扇区0,相应偏移量处的值仍为Oxffff,则令Lut[m] [η] = 0,即设定逻辑页上该
6数据的映射扇区号为0。例如在建立Lut [1]
时,从逻辑页m = 1的最后一个扇区(即s = 3)的0偏移处(n=0)开始查找,如果查到该扇区3的0偏移处的值等于OxfTfT,再转到扇区2的0偏移处开始查找,依次类推。而例如当查到扇区1的0偏移处时值不等于OxfTfT 了,则逻辑页 m = 1的逻辑编号为η =0的数据就位于扇区1的0偏移处。而如果直到扇区0的0偏移处查得的值仍为Oxffff,则令Lut [1Η0] = 0。本发明在读eflash时,需要将给出的逻辑地址转换到具体存储数据的物理地址。 本发明中将本操作称为逻辑读。其中,逻辑地址是指模拟出的EEPRM的虚拟地址,地址范围从0到32K ;根据给出的逻辑地址来算出逻辑页数m的值,和数据在该逻辑页中偏移量η的值,通过查询映射表获得有效数据所在扇区的编号值s,再在该扇区中与所述偏移量对应的物理地址进行数据读取。参见图2所示的流程图,本发明在写eflash时,根据给出的逻辑地址,先读出该逻辑地址上的数据,再分四种情况操作。本发明中将本操作称为逻辑写。第一种情况,读出的值(图2中标注为Dirty-Data)为Oxffff,直接将新值(图2中标注为NewData)写到当前映射扇区中的原来位置,S卩,写入到映射扇区中由该逻辑地址算得的物理地址,不需要改变映射表的值。第二种情况,读出的值不是Oxffff,且当前映射扇区不是物理页的最后一个扇区, 则将新值写到当前扇区的下一个扇区中,并在映射表中将映射关系更新到下一个扇区。第三种情况,读出的值不是Oxffff,且当前映射扇区是物理页的最后一个扇区。在这种情况下应将当前逻辑页内所有的有效数据都读到SRAM中,擦除此逻辑页所对应的物理页,再用新值替换SRAM中相应偏移位置上的旧值,最后把SRAM中更新后的所有有效数据写到对应物理页的第一个扇区(即扇区0)中,并更新映射表。第四种情况,如果要写入的新值为Oxffff,不管当前有效数据映射的是哪个扇区, 都要将当前逻辑页中所有的有效数据读到SRAM中,擦除此逻辑页所对应的物理页,同时用新值替换SRAM中相应偏移位置上的旧值,再把SRAM中更新后的所有有效数据写到对应物理页的第一个扇区中,并更新映射表。综上所述,本发明所述嵌入式存储器的读写优化方法,通过建立逻辑页数据与物理页数据之间的映射关系,使得eflash存储器的读写操作简单高效,尤其是在写入数据时可以分情况处理,不必在所有情况下都进行整页的擦除操作,解决了传统应用中的技术问题。因此,本发明能够提高文件系统的性能,同时降低系统的复杂度。尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
权利要求
1.一种嵌入式存储器的读写优化方法,所述嵌入式存储器是eflash,其特征在于,所述优化方法,包含在eflash的主存空间中设置若干个物理页,将每个物理页划分成若干个同样大小的扇区;还在虚拟空间中设置若干个逻辑页,使一个逻辑页的大小等于一个扇区的大小;并且,定义了将一个逻辑页与一个物理页相对应,并将该逻辑页上的有效数据映射到其所对应的物理页中若干个扇区上的映射关系,即使逻辑页地址等于物理页地址,而逻辑页上有效数据的偏移地址等于该物理页上各个扇区的偏移地址;因此根据所述映射关系,能够确定逻辑页上有效数据在所对应的物理页上的具体扇区号,进而根据该扇区号对eflash进行逻辑读或逻辑写的操作。
2.如权利要求1所述的嵌入式存储器的读写优化方法,其特征在于,所述优化方法,具体包含在初始化时进行的建表操作,即,在一 SRAM中建立映射关系表,来确定与逻辑页上有效数据所对应的扇区号;在所述建表操作中,根据一个逻辑页上有效数据的偏移地址,从相对应的物理页的最后一个扇区向第一个扇区依次扫描,得到各个扇区的相同偏移地址上的数据如果从其中一个扇区上获得的数据不是全FF,则该扇区号为逻辑页上有效数据的映射扇区号,在映射关系表中将该扇区记录为逻辑页上有效数据所对应的扇区;如果所有扇区的该偏移地址上数据都是全FF,则设定所述逻辑页上该有效数据的映射扇区号为0,将该物理页的第一个扇区记录为逻辑页上有效数据所对应的扇区。
3.如权利要求2所述的嵌入式存储器的读写优化方法,其特征在于,所述映射关系表是在所述SRAM中建立的一个二维数组Lut [m] [η],其中m代表eflash 中各个逻辑页的逻辑页号;η代表有效数据在一个逻辑页中的逻辑编号;所述逻辑编号与数据在逻辑页及相应扇区中的偏移量相对应,所述偏移量与所述eflash的最小读写单位相匹配;所述二维数组的值用s表示,代表有效数据所对应的扇区号。
4.如权利要求3所述的嵌入式存储器的读写优化方法,其特征在于,所述优化方法在进行逻辑读操作时,根据应用程序给出的逻辑地址,算出有效数据所在的逻辑页数,及其在该逻辑页中的偏移量,通过查询所述映射关系表得到在相应物理页上具体映射的扇区号;再根据所述偏移量,计算所映射的扇区上与该逻辑地址对应的物理地址;之后,读取所述物理地址上的数据。
5.如权利要求4所述的嵌入式存储器的读写优化方法,其特征在于,所述优化方法在进行逻辑写操作时,先读取应用程序给出的逻辑地址上数据的值 如果读出的值是全FF,则将新值直接写到当前映射扇区的该物理地址; 如果读出的值不是全FF,且当前映射扇区不是所述eflash的最后一个扇区,则将新的数据写到当前扇区的下一个扇区中,并更新映射关系表;如果读出的值不是全FF,且当前映射扇区是所述eflash的最后一个扇区,则将当前逻辑页上所有的有效数据都读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
6.如权利要求5所述的嵌入式存储器的读写优化方法,其特征在于,所述优化方法在进行逻辑写操作时,如果要写入逻辑页的新值是全FF,则不管所映射的是哪个扇区,都要将当前逻辑页中所有的有效数据读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
全文摘要
一种嵌入式存储器的读写优化方法,适用于eflash存储器;将一个逻辑页与一个物理页上同样大小的若干个扇区相对应,建立逻辑页上有效数据与物理页扇区的映射关系。根据映射关系找到实际存储的数据进行读取。在写操作时,先读取实际存储的数据,如果是全FF则直接写入;而如果不是全FF且当前扇区不在最后一个扇区,则将数据写到下一个扇区中,否则,应将当前逻辑页的所有有效数据都读到SRAM中,擦除对应物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中;以上操作完成后,更新映射表。本发明所述优化方法简化了eflash存储器的读写操作,能有效提高文件系统的性能,同时降低系统的复杂度。
文档编号G06F12/06GK102541753SQ20111044969
公开日2012年7月4日 申请日期2011年12月29日 优先权日2011年12月29日
发明者周玉洁, 朱念好, 陈诚 申请人:上海爱信诺航芯电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1