CN102541753B - 一种嵌入式存储器的读写优化方法 - Google Patents
一种嵌入式存储器的读写优化方法 Download PDFInfo
- Publication number
- CN102541753B CN102541753B CN201110449693.9A CN201110449693A CN102541753B CN 102541753 B CN102541753 B CN 102541753B CN 201110449693 A CN201110449693 A CN 201110449693A CN 102541753 B CN102541753 B CN 102541753B
- Authority
- CN
- China
- Prior art keywords
- sector
- page
- lpage
- read
- logical
- 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.)
- Active
Links
Landscapes
- Memory System (AREA)
Abstract
一种嵌入式存储器的读写优化方法,适用于eflash存储器;将一个逻辑页与一个物理页上同样大小的若干个扇区相对应,建立逻辑页上有效数据与物理页扇区的映射关系。根据映射关系找到实际存储的数据进行读取。在写操作时,先读取实际存储的数据,如果是全FF则直接写入;而如果不是全FF且当前扇区不在最后一个扇区,则将数据写到下一个扇区中,否则,应将当前逻辑页的所有有效数据都读到SRAM中,擦除对应物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中;以上操作完成后,更新映射表。本发明所述优化方法简化了eflash存储器的读写操作,能有效提高文件***的性能,同时降低***的复杂度。
Description
技术领域
本发明涉及一种优化嵌入式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中建立映射关系表,来确定与逻辑页上有效数据所对应的扇区号;
在所述建表操作中,根据一个逻辑页上有效数据的偏移地址,从相对应的物理页的最后一个扇区向第一个扇区依次扫描,得到各个扇区的相同偏移地址上的数据:
如果从其中一个扇区上获得的数据不是全FF,则该扇区号为逻辑页上有效数据的映射扇区号,在映射关系表中将该扇区记录为逻辑页上有效数据所对应的扇区;
如果所有扇区的该偏移地址上数据都是全FF,则设定所述逻辑页上该有效数据的映射扇区号为0,将该物理页的第一个扇区记录为逻辑页上有效数据所对应的扇区。
所述映射关系表是在所述SRAM中建立的一个二维数组Lut[m][n],其中m代表eflash中各个逻辑页的逻辑页号;n代表有效数据在一个逻辑页中的逻辑编号;所述逻辑编号与数据在逻辑页及相应扇区中的偏移量相对应,所述偏移量与所述eflash的最小读写单位相匹配;
所述二维数组的值用s表示,代表有效数据所对应的扇区号。
所述优化方法在进行逻辑读操作时,根据应用程序给出的逻辑地址,算出有效数据所在的逻辑页数,及其在该逻辑页中的偏移量,通过查询所述映射关系表得到在相应物理页上具体映射的扇区号;再根据所述偏移量,计算所映射的扇区上与该逻辑地址对应的物理地址;之后,读取所述物理地址上的数据。
所述优化方法在进行逻辑写操作时,先读取应用程序给出的逻辑地址上数据的值:
如果读出的值是全FF,则将新值直接写到当前映射扇区的该物理地址;
如果读出的值不是全FF,且当前映射扇区不是所述eflash的最后一个扇区,则将新的数据写到当前扇区的下一个扇区中,并更新映射关系表;
如果读出的值不是全FF,且当前映射扇区是所述eflash的最后一个扇区,则将当前逻辑页上所有的有效数据都读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
另外,所述优化方法在进行逻辑写操作时,如果要写入逻辑页的新值是全FF,则不管所映射的是哪个扇区,都要将当前逻辑页中所有的有效数据读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
本发明所述嵌入式存储器的读写优化方法,其优点在于,通过建立逻辑页数据与物理页数据之间的映射关系,使得eflash存储器的读写操作简单高效,尤其是在写入数据时可以分情况处理,不必在所有情况下都进行整页的擦除操作,解决了传统应用中的技术问题。因此,本发明能够提高文件***的性能,同时降低***的复杂度。
附图说明
图1是本发明所述嵌入式存储器的读写优化方法中建表操作的流程图;
图2是本发明所述嵌入式存储器的读写优化方法中逻辑写操作的流程图。
具体实施方式
本发明是一种适用于嵌入式Norflash存储器(以下简称eflash)的读写优化方法,首先将eflash的每个物理页划分成若干个同样大小的物理扇区,通常便于计数会分成4个或8个物理扇区。使一个物理页对应一个逻辑页,同时,使一个逻辑页对应若干个同样大小的物理扇区,即,同一个逻辑页上的数据会分布在同一个物理页的不同扇区上面,一个逻辑页的大小等于一个物理扇区的大小。
应用程序具体访问的是逻辑页上的数据,而逻辑页上的数据需要通过特定的映射关系才能对应到真正的物理页上的数据。为此,本发明中定义了一种高效的映射关系,即,令逻辑页地址等于物理页地址,而需访问的逻辑页上数据的偏移地址等于该物理页上物理扇区的偏移地址;因此,为了从逻辑页数据映射到物理页数据,只需要找到对应的扇区号,例如4个或8个物理扇区中的某个扇区编号。
一般在使用中,初始化时,会提前在一SRAM中建立好映射关系表,来确定逻辑页上数据在所对应物理页上的扇区号。通常是从高到低扫描对应物理页的各个扇区上处在相同偏移地址上的数据:如果发现数据不是全FF,则该扇区号即为逻辑页上该数据的映射扇区号;如果发现所有扇区的该偏移地址上数据都是全FF,则设定逻辑页上该数据的映射扇区号为0(即该数据与第一个扇区对应)。
在读操作时,只需通过上述的映射关系找到物理上实际的数据进行读取即可。
在写操作时,首先通过上述的映射关系找到物理上实际的数据,如果是全FF则可以直接写入;而如果不是全FF且当前扇区不在最后一个扇区,则将数据写到当前找到扇区的下一个扇区中,否则,在这种情况下应将当前逻辑页的所有有效数据都读到SRAM中,擦除对应物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中;以上操作完成后,更新映射表。
为了方便解释本发明的内容,以一款具体的eflash为例,阐述eflash存储器的读写优化方法,本实施例中将eflash的最后32页、共128字节大小的物理空间模拟成32K字节大小的EEPROM,即,所述eflash的每个扇区大小为1K字节,读写的最小单位是16比特。应用程序通过指定的函数接口,只需要给出逻辑地址,就可以像操作SRAM一样对eflash进行读写操作,无需关心擦除、页面大小等问题。
具体方法是,将eflash的最后32页从小到大依次记为逻辑页号page0到page31,再将eflash的一个物理页分成4个扇区,标号从0到3。并且,使一个逻辑页内存放的有效数据为一个扇区的大小(即1K字节)。因为eflash是16位的,所以内部存储管理逻辑以半字为最小单位来管理,即每个逻辑页内的有效数据有512个半字,逻辑编号从0到511。
逻辑页上有效数据的逻辑编号,与相应的半字在扇区中的偏移量相对应,但该数据具体存放在与逻辑页对应的哪个扇区是不确定的,这就需要在SRAM中建立一个映射表,记录这个半字处在哪个扇区。在SRAM中建立一个二维数组Lut[m][n],数组中m代表逻辑页号,大小从0到31,n代表有效数据在一页中的逻辑编号,大小从0到511;数组的值用s表示,对应扇区号0~3。本发明将建立所述二维数组Lut[m][n]的过程称为建表操作。
参见图1所示建立映射表时的流程图,从逻辑页m = 0、有效数据的逻辑编号n = 0开始建表。为了查找有效数据位于哪个扇区,应从最高扇区向最低扇区依次开始查找,也就是从最后一个扇区(本例中即扇区3)向第一个扇区(即扇区0)依次查找。如果查到其中某一个扇区相应偏移量处的值不等于0xffff,则此扇区即为有效数据所在的扇区。如果一直查找到扇区0,相应偏移量处的值仍为0xffff,则令Lut[m][n] = 0,即设定逻辑页上该数据的映射扇区号为0。
例如在建立Lut[1][0]时,从逻辑页m = 1的最后一个扇区(即s = 3)的0偏移处(n=0)开始查找,如果查到该扇区3的0偏移处的值等于0xffff,再转到扇区2的0偏移处开始查找,依次类推。而例如当查到扇区1的0偏移处时值不等于0xffff了,则逻辑页m = 1的逻辑编号为n =0的数据就位于扇区1的0偏移处。而如果直到扇区0的0偏移处查得的值仍为0xffff,则令Lut[1][0] = 0。
本发明在读eflash时,需要将给出的逻辑地址转换到具体存储数据的物理地址。本发明中将本操作称为逻辑读。其中,逻辑地址是指模拟出的EEPRM的虚拟地址,地址范围从0到32K;根据给出的逻辑地址来算出逻辑页数m的值,和数据在该逻辑页中偏移量n的值,通过查询映射表获得有效数据所在扇区的编号值s,再在该扇区中与所述偏移量对应的物理地址进行数据读取。
参见图2所示的流程图,本发明在写eflash时,根据给出的逻辑地址,先读出该逻辑地址上的数据,再分四种情况操作。本发明中将本操作称为逻辑写。
第一种情况,读出的值(图2中标注为Dirty-Data)为0xffff,直接将新值(图2中标注为NewData)写到当前映射扇区中的原来位置,即,写入到映射扇区中由该逻辑地址算得的物理地址,不需要改变映射表的值。
第二种情况,读出的值不是0xffff,且当前映射扇区不是物理页的最后一个扇区,则将新值写到当前扇区的下一个扇区中,并在映射表中将映射关系更新到下一个扇区。
第三种情况,读出的值不是0xffff,且当前映射扇区是物理页的最后一个扇区。在这种情况下应将当前逻辑页内所有的有效数据都读到SRAM中,擦除此逻辑页所对应的物理页,再用新值替换SRAM中相应偏移位置上的旧值,最后把SRAM中更新后的所有有效数据写到对应物理页的第一个扇区(即扇区0)中,并更新映射表。
第四种情况,如果要写入的新值为0xffff,不管当前有效数据映射的是哪个扇区,都要将当前逻辑页中所有的有效数据读到SRAM中,擦除此逻辑页所对应的物理页,同时用新值替换SRAM中相应偏移位置上的旧值,再把SRAM中更新后的所有有效数据写到对应物理页的第一个扇区中,并更新映射表。
综上所述,本发明所述嵌入式存储器的读写优化方法,通过建立逻辑页数据与物理页数据之间的映射关系,使得eflash存储器的读写操作简单高效,尤其是在写入数据时可以分情况处理,不必在所有情况下都进行整页的擦除操作,解决了传统应用中的技术问题。因此,本发明能够提高文件***的性能,同时降低***的复杂度。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (5)
1.一种嵌入式存储器的读写优化方法,所述嵌入式存储器是eflash,其特征在于,所述eflash是一种擦除操作以页为基础且读写操作以字为基础的Norflash存储器,所述优化方法,包含:
在eflash的主存空间中设置若干个物理页,将每个物理页划分成若干个同样大小的扇区;还在虚拟空间中设置若干个逻辑页,使一个逻辑页的大小等于一个扇区的大小;
并且,定义了将一个逻辑页与一个物理页相对应,并将该逻辑页上的有效数据映射到其所对应的物理页中若干个扇区上的映射关系,即:使逻辑页地址等于物理页地址,而逻辑页上有效数据的偏移地址等于该物理页上各个扇区的偏移地址;
因此根据所述映射关系,能够确定逻辑页上有效数据在所对应的物理页上的具体扇区号,进而根据该扇区号对eflash进行逻辑读或逻辑写的操作;
其中,所述优化方法具体包含在初始化时进行的建表操作,即,在一SRAM中建立映射关系表,来确定与逻辑页上有效数据所对应的扇区号;
所述优化方法在进行逻辑写操作时,先读取应用程序给出的逻辑地址上数据的值:
如果读出的值是全FF,则将新值直接写到当前映射扇区的物理地址;
如果读出的值不是全FF,且当前映射扇区不是所述eflash的最后一个扇区,则将新的数据写到当前扇区的下一个扇区中,并更新映射关系表;
如果读出的值不是全FF,且当前映射扇区是所述eflash的最后一个扇区,则将当前逻辑页上所有的有效数据都读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
2.如权利要求1所述的嵌入式存储器的读写优化方法,其特征在于,
在所述建表操作中,根据一个逻辑页上有效数据的偏移地址,从相对应的物理页的最后一个扇区向第一个扇区依次扫描,得到各个扇区的相同偏移地址上的数据:
如果从其中一个扇区上获得的数据不是全FF,则该扇区号为逻辑页上有效数据的映射扇区号,在映射关系表中将该扇区记录为逻辑页上有效数据所对应的扇区;
如果所有扇区的该偏移地址上数据都是全FF,则设定所述逻辑页上该有效数据的映射扇区号为0,将该物理页的第一个扇区记录为逻辑页上有效数据所对应的扇区。
3.如权利要求2所述的嵌入式存储器的读写优化方法,其特征在于,
所述映射关系表是在所述SRAM中建立的一个二维数组Lut[m][n],其中m代表eflash中各个逻辑页的逻辑页号;n代表有效数据在一个逻辑页中的逻辑编号;所述逻辑编号与数据在逻辑页及相应扇区中的偏移量相对应,所述偏移量与所述eflash的最小读写单位相匹配;
所述二维数组的值用s表示,代表有效数据所对应的扇区号。
4.如权利要求3所述的嵌入式存储器的读写优化方法,其特征在于,
所述优化方法在进行逻辑读操作时,根据应用程序给出的逻辑地址,算出有效数据所在的逻辑页数,及其在该逻辑页中的偏移量,通过查询所述映射关系表得到在相应物理页上具体映射的扇区号;再根据所述偏移量,计算所映射的扇区上与该逻辑地址对应的物理地址;之后,读取所述物理地址上的数据。
5.如权利要求4所述的嵌入式存储器的读写优化方法,其特征在于,
所述优化方法在进行逻辑写操作时,如果要写入逻辑页的新值是全FF,则不管所映射的是哪个扇区,都要将当前逻辑页中所有的有效数据读到SRAM中,擦除对应的物理页,并将SRAM中的值更新成最新的值后写到已擦除物理页的第一个扇区中,并更新映射关系表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110449693.9A CN102541753B (zh) | 2011-12-29 | 2011-12-29 | 一种嵌入式存储器的读写优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110449693.9A CN102541753B (zh) | 2011-12-29 | 2011-12-29 | 一种嵌入式存储器的读写优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541753A CN102541753A (zh) | 2012-07-04 |
CN102541753B true CN102541753B (zh) | 2015-08-19 |
Family
ID=46348692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110449693.9A Active CN102541753B (zh) | 2011-12-29 | 2011-12-29 | 一种嵌入式存储器的读写优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541753B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034456B (zh) * | 2012-12-14 | 2015-09-02 | 南京南瑞继保电气有限公司 | 基于非易失sram存储的虚拟终端的实现方法 |
CN108319433B (zh) * | 2018-03-19 | 2021-02-02 | 艾体威尔电子技术(北京)有限公司 | 小内存单片机的NOR Flash的存储管理方法 |
CN112181898B (zh) * | 2020-09-23 | 2023-12-29 | 北京百汇安科技有限公司 | 嵌入式安全文件管理*** |
CN113568579B (zh) * | 2021-07-28 | 2022-05-03 | 深圳市高川自动化技术有限公司 | 一种存储器、数据存储方法以及数据读取方法 |
CN114265562B (zh) * | 2021-12-27 | 2022-09-20 | 北京国腾创新科技有限公司 | 一种基于flash存储器的文件存储方法和*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI452467B (zh) * | 2008-10-13 | 2014-09-11 | A Data Technology Co Ltd | 記憶體系統及其控制方法 |
-
2011
- 2011-12-29 CN CN201110449693.9A patent/CN102541753B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN101645043A (zh) * | 2009-09-08 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 写数据的方法、读数据的方法及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102541753A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232041B2 (en) | Memory addressing | |
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
CN101493794B (zh) | 一种闪存数据处理方法及装置 | |
US8583860B2 (en) | Block management method for flash memory and controller and storage system using the same | |
CN100424655C (zh) | 快闪存储器管理方法 | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
US7669003B2 (en) | Reprogrammable non-volatile memory systems with indexing of directly stored data files | |
US7949845B2 (en) | Indexing of file data in reprogrammable non-volatile memories that directly store data files | |
US20100042774A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
CN101872326B (zh) | 一种嵌入式环境下otp闪存的数据存储管理方法 | |
US9507523B1 (en) | Methods, devices and systems for variable size logical page management in a solid state drive | |
WO2014074449A2 (en) | Wear leveling in flash memory devices with trim commands | |
US9037814B2 (en) | Flash memory management method and flash memory controller and storage system using the same | |
US9268688B2 (en) | Data management method, memory controller and memory storage apparatus | |
CN102541753B (zh) | 一种嵌入式存储器的读写优化方法 | |
CN107239526A (zh) | 文件***实现方法、碎片整理方法、操作位置定位方法 | |
CN112840325B (zh) | 存储装置上的名称空间中的错误检查 | |
CN103106143A (zh) | 固态储存装置及其逻辑至实体对应表建立方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN103294607A (zh) | 一种存储管理方法 | |
CN102999441B (zh) | 一种细粒度内存访问的方法 | |
CN103365786A (zh) | 数据存储方法、装置和*** | |
CN106354658A (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
KR20080038368A (ko) | 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 200233 Room 704, Building 2, No. 2570 Hechuan Road, Minhang District, Shanghai Patentee after: Shanghai Hangxin Electronic Technology Co.,Ltd. Address before: 200241, building 6, building 555, No. 8, Dongchuan Road, Shanghai, Minhang District Patentee before: SHANGHAI AISINOCHIP ELECTRONIC TECHNOLOGY Co.,Ltd. |