CN105205008A - 降低混合映射算法中日志块映射表内存资源占用的方法 - Google Patents
降低混合映射算法中日志块映射表内存资源占用的方法 Download PDFInfo
- Publication number
- CN105205008A CN105205008A CN201510595295.6A CN201510595295A CN105205008A CN 105205008 A CN105205008 A CN 105205008A CN 201510595295 A CN201510595295 A CN 201510595295A CN 105205008 A CN105205008 A CN 105205008A
- Authority
- CN
- China
- Prior art keywords
- log blocks
- data
- group
- lpmt
- log
- 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.)
- Granted
Links
Landscapes
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及NAND?Flash存储器存储数据领域,尤其是涉及降低混合映射算法中日志块映射表内存资源占用的方法。本发明针对现有技术存在的问题,提供了一种降低内存资源消耗的方法,可以降低基于页映射的日志块映射表的缓存占用,能够显著降低LPMT占用资源,对与***内存资源较为宝贵的嵌入式的片上***具有实际意义。本发明中当有数据写入日志块时,查找LBIT中是否有同属于第k组的日志块且根据LPMT映射表信息确认是否能进行数据写入;当需要读取数据时,根据步骤1,查找LBIT中是否有同属于第k组的日志块且通过查找LPMT映射表是否存在offset项来确认该日志块中是存在有效数据,并进行数据读取。
Description
技术领域
本发明涉及NANDFlash存储器存储数据领域,尤其是涉及降低混合映射算法中日志块映射表内存资源占用的方法。
背景技术
半导体行业的蓬勃发展,出现了高性能的存储器NANDFlash,NANDFlash存储器使用半导体作为存储介质,具有高速,低能耗和防震等优点,但NANDFlash存储器本身也存在一些不足。首先,它的存储块的擦除次数是有限的;其次,NANDFlash必须要擦除之后才能重新写入,导致写入性能较低。因此,磨损均衡显得尤为重要,好的磨损均衡管理方法不但能够提高NANDFlash性能和效率,还能够大大的延长NANDFlash的使用寿命。基于此,出现了专门为NANDFlash存储器所使用的文件***,如JFFS、JFFS2、YAFFS、TrueFFS等,这些NANDFlash专用的文件***进行存储管理为NANDFlash设备提供专门的驱动和更好的数据管理。但是对于一个小型的SOC,由于资源的限制,想采用以上的文件***对NANDFlash进行管理不太现实,所以亟需一个轻量级的管理方法,能够在有限资源的条件下,满足对NANDFlash的磨损均衡控制。目前对于小型的***,常采用的管理方法为FTL(FlashTranslationLayer)。
典型的FTL管理机制采用以页为单位进行存储管理的方式,如图1所示,将物理页地址与逻辑页地址来进行一一对应,读、写操作都是按页进行,数据存储时存储在空白的页面存储区中,数据写入完成后需更新地址映射表中的转换信息。这种管理算法比较直接,但是由于采用的页映射机制,对于容量小、页数少的存储器,是极为方便的一种方法。但是,对于大容量NANDFlash来说,就显得比较吃力,例如,对于美光公司的MT29F32G08CBACA这个型号的NANDFlash来说,共有4096个物理块,每块有256页,基于页映射共需要4096*256*4=4MB的内存空间来保存当前的映射表,对于片上***来说内存消耗过大。
为了解决这个问题,提出了混合映射(Hybridmapping)算法,它是基于块和页的混合映射的机制,如图2所示,在该算法中,将NANDFlash在逻辑上分为数据块和日志块两个部分,日志块是有多个空闲块组成。同时,在内存中存储着两个表:基于块映射的数据块地址映射表DBMT和基于页映射的日志块页映射表LPMT。写数据操作时,数据首先按页映射的方式写入日志块中,同时更新LPMT。当日志块数据存储满时,则对页映射表LPMT数据进行分析,将日志块中有效数据拷贝到空闲的数据块中,同时更新DBMT映射表,拷贝完成后释放当前的日志块,将数据写入空闲的日志块中,更新LPMT映射表。读数据操作时,首先查找LPMT页映射表,查询有效数据是否在日志块中,若是,则直接读取日志块中对应的数据,若不在该日志块上,则根据DBMT映射表,读取有效数据。根据混合映射算法,以MT29F32G08CBACA型号的NANDFlash为例,物理结构如图3,DBMT块映射表映射粒度为块,MT29F32G08CBACA共有4096个块,则DBMT存储的数值范围为0~0x1000,用2个字节就可以表示出完整的信息,LPMT页映射表映射粒度为页,MT29F32G08CBACA共有4096*256个块,数值范围为0~0x100000,需要4个字节才可以表示出完整的信息,需要消耗的内存如下:4096*2+(TBN-X)*256*4,其中(TBN-X)为分配的日志块个数,可以看出,该算法所消耗的内存与日志块个数(TBN-X)有关,若(TBN-X)为64,则需要消耗内存为:4096*2+64*256*4=72KB。相对于基于页映射的算法,该算法内存消耗已经大大降低,但是经过分析发现,内存消耗主要部分为日志映射表LPMT,并且内存消耗与(TBN-X)相关,成倍数增长。
发明内容
本发明的目的在于:为了进一步降低内存消耗,增加日志块的个数,提高***性能,本发明提供了一种降低内存资源消耗的方法,可以降低基于页映射的日志块映射表的缓存占用,能够显著降低LPMT占用资源,对与***内存资源较为宝贵的嵌入式的片上***具有实际意义,可广泛应用于片上***的NANDFlash存储器的管理。
本发明目的通过下述技术方案来实现:
一种降低混合映射算法中日志块映射表内存资源占用的方法包括:
步骤1:数据块和日志块都划分为K组,则第n组的日志块对应存储第n组数据块的数据,一个日志块组包括多个空闲块,一个空闲块包括多个空闲页;将数据需要写入的地址ADDR转换为组号n和组内偏移量offset;设置日志块信息表LBIT记录对应日志块所属日志组号;所述n表示组别号;n为大于0的自然数,n=(ADDR/PPB)/(X/K);offset=ADDR–n*(X/K)*PPB或offset=ADDR%((X/K)*PPB);n的范围为0~K-1;
步骤2:当有地址为ADDR_x的数据写入日志块组时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的空闲块且根据LPMT映射表信息确认是否能进行数据写入;
步骤3:当需要读取地址位ADDR_d的数据时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的日志块且通过查找LPMT映射表是否存在offset项来确认该日志块中是存在有效数据,并进行数据读取。
进一步的,所述步骤2具体包括:
步骤21:当有地址为ADDR_x的数据写入日志块组时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的空闲块;若有,则执行步骤22;否则,从日志块中查找一个空闲块作为存储数据的日志块,修改该日志块信息表LBIT,将该日志块组别属性设置为n,然后将数据写入该日志块当中,同时更新LPMT;
步骤22:根据LPMT映射表信息确认该空闲块中是否有空闲页,若有空闲页,则将数据直接写入该空闲块的空闲页中,同时更新LPMT;若该空闲块中没有空闲页,则执行步骤23;
步骤23:从日志块中分配一个空闲块,修改该空闲块对应的日志块信息表LBIT信息,将该空闲块组别属性设置为n,然后将地址位ADDR_x的数据写入该空闲块当中,成为存储该数据的日志块,同时更新LPMT。
进一步的,所述步骤3包括:
步骤31:当需要读取地位为ADDR_d的数据时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的日志块,若有,则执行步骤32;
步骤32:查找LPMT映射表是否存在offset项来确认该日志块中是否存在有效数据,若存在,则读取该数据。
本发明的有益效果:
在本发明中,将NANDFlash数据块和日志块划分为K组以及针对地址的转换即将地址ADDR转换为组号n和组内偏移量offset为算法关键,由于将数据块和日志块进行了分组,则LPMT只需要保存offset信息,所以大大减少了资源消耗。
附图说明
图1基于页映射的映射表示意图;
图2基于混合映射的映射表示意图;
图3NANDFlash结构示意图;
图4NANDFlash数据块和日志块逻辑分组示意图;
图5是LBIT表数据结构示意图;
图6a数据写入流程图;
图6b数据读取流程图。
具体实施方式
下列非限制性实施例用于说明本发明。
在本发明中设计了一种数据结构,在将NANDFlash从逻辑上分为数据块和日志块的基础上,把数据块和日志块划分为K组,要求第n组的日志块只能存储第n组数据块的数据,n的范围为0~K-1,如图4所示。对数据块的分组采用简便的设计,设NANDFlash包含TBN个物理块,每个物理块包含PPB个页,可将X个物理块设置为数据块,将剩余的TBN-X个物理块设置为日志块,假若取分组数K,则将数据块分为K个组,可得每个分组中包含X/K个数据块,第1~X/K块为第0个分组,第X/K+1~2X/K块为第1个分组,依次类推。TBN-X个日志块可以根据需要动态的分配属于第n组,只要保证一个日志块同时只能存储已分配的第n组的数据即可。为了记录日志块的分组情况,本算法提供了一个日志块信息表LBIT,存储的数据格式如图5所示。在LBIT中记录了该日志块所属日志组号。由于LPMT映射粒度为页并且每一组日志块组对应的数据块组内数据块的个数为X/K个,所以针对每一个日志块组的LPMT,LPMT所需要保存的地址信息范围即为X/K*PPB。空闲块是没有存储数据的区域。
因为NANDFlash具有页写的特性,所以写入的地址一般以页为单位,在本发明中,写入流程如图6所示,首先将数据需要写入的地址ADDR转换为组号n和组内偏移量offset,则n=(ADDR/PPB)/(X/K),offset=ADDR–n*PPB*(X/K)或offset=ADDR%((X/K)*PPB)。查找日志块信息表LBIT中是否有组别属性为n的日志块且根据LPMT映射表信息确认该块上是否仍有空闲页,若有,则将数据直接写入该日志块的空闲页中,同时更新LPMT表,若日志块没有空闲页或者没有组别属性为n的日志块,则从日志块中查找一个空闲块,修改日志块信息表LBIT,将该块组别属性设置为n,然后将数据写入该日志块当中,同时更新LPMT。
因为NANDFlash具有页读的特性,所以读取的地址一般以页为单位,在本发明中,读取流程如图5所示,首先将数据需要读取的地址ADDR转换为组号n和组内偏移量offset,则n=(ADDR/PPB)/(X/K),offset=ADDR–n*PPB*(X/K)或offset=ADDR%((X/K)*PPB)。查找日志块信息表LBIT中是否有组别属性为n的日志块且通过查找LPMT映射表是否存在offset项来确认该日志块中是存在有效数据,若不存在组别属性为n的日志块,则查找DBMT,根据offset来获取最新数据。
以MT29F32G08CBACA为例,物理结构图如图3所示,TBN为4096,PPB为256,取数据块个数X为4032,则日志块个数为64,取K为16,将数据块和日志块分为16组,针对于每一个组的LPMT,由于组内数据块的个数为X/K为252个,LPMT所需要保存的地址信息范围为0~X/K*PPB,即范围为0~0xFC00,则LPMT表每个表项只需要2字节就能表示。针对DBMT,只要保存X个即4032个表项即可,则在这种配置下,所需要的内存消耗为:4032*2+64*256*2=40KB,比之前节约了32KB空间,当TBN-X值越大,表明可供写入数据日志块越多,则该算法性能越优。另外offset=ADDR–n*(X/K)*PPB或offset=ADDR%((X/K)*PPB),则可得K值越大,offset越小,理论情况下,当K值足够大时,offset最大值为0xFF,此时可以使用1个字节表示LPMT,则LPMT占用资源越少。因此在实际应用中,选取合适的K和X值能够明显降低资源消耗,提高***性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种降低混合映射算法中日志块映射表内存资源占用的方法,其特征在于包括:
步骤1:数据块和日志块都划分为K组,则第n组的日志块对应存储第n组数据块的数据,一个日志块组包括多个空闲块,一个空闲块包括多个空闲页;将数据需要写入的地址ADDR转换为组号n和组内偏移量offset;设置日志块信息表LBIT记录对应日志块所属日志组号;所述n表示组别号;n为大于0的自然数,n=(ADDR/PPB)/(X/K);offset=ADDR–n*(X/K)*PPB或offset=ADDR%((X/K)*PPB);n的范围为0~K-1;
步骤2:当有地址为ADDR_x的数据写入日志块组时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的空闲块且根据LPMT映射表信息确认是否能进行数据写入;
步骤3:当需要读取地址为ADDR_d的数据时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的日志块且通过查找LPMT映射表是否存在offset项来确认该日志块中是存在有效数据,并进行数据读取。
2.根据权利要求1所述的降低混合映射算法中日志块映射表内存资源占用的方法,其特征在于所述步骤2具体包括:
步骤21:当有地址为ADDR_x的数据写入日志块组时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的空闲块;若有,则执行步骤22;否则,从日志块中查找一个空闲块作为存储数据的日志块,修改该日志块信息表LBIT,将该日志块组别属性设置为n,然后将数据写入该日志块当中,同时更新LPMT;
步骤22:根据LPMT映射表信息确认该空闲块中是否有空闲页,若有空闲页,则将数据直接写入该空闲块的空闲页中,同时更新LPMT;若该空闲块中没有空闲页,则执行步骤23;
步骤23:从日志块中分配一个空闲块,修改该空闲块对应的日志块信息表LBIT信息,将该空闲块组别属性设置为n,然后将地址位ADDR_x的数据写入该空闲块当中,成为存储该数据的日志块,同时更新LPMT。
3.根据权利要求1所述的降低混合映射算法中日志块映射表内存资源占用的方法,其特征在于所述步骤3包括:
步骤31:当需要读取地位为ADDR_d的数据时,根据步骤1,查找日志块信息表LBIT中是否有组别属性为n的日志块,若有,则执行步骤32;若有,则执行步骤32;否则,查找DBMT,读取该数据;
步骤32:查找LPMT映射表是否存在offset项来确认该日志块中是否存在有效数据,若存在,则读取该数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510595295.6A CN105205008B (zh) | 2015-09-18 | 2015-09-18 | 降低混合映射算法中日志块映射表内存资源占用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510595295.6A CN105205008B (zh) | 2015-09-18 | 2015-09-18 | 降低混合映射算法中日志块映射表内存资源占用的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105205008A true CN105205008A (zh) | 2015-12-30 |
CN105205008B CN105205008B (zh) | 2018-07-20 |
Family
ID=54952702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510595295.6A Active CN105205008B (zh) | 2015-09-18 | 2015-09-18 | 降低混合映射算法中日志块映射表内存资源占用的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105205008B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354658A (zh) * | 2016-08-29 | 2017-01-25 | 成都三零嘉微电子有限公司 | 一种降低混合映射算法中映射表内存资源占用的方法 |
CN107544912A (zh) * | 2016-06-29 | 2018-01-05 | 北京忆恒创源科技有限公司 | 一种日志记录方法、加载方法及其装置 |
CN107832234A (zh) * | 2017-08-07 | 2018-03-23 | 北京时代民芯科技有限公司 | 一种用于nand flash的日志块快速命中方法 |
CN109871698A (zh) * | 2019-01-14 | 2019-06-11 | 深圳市奥特尔软件技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US10957407B1 (en) | 2019-10-30 | 2021-03-23 | International Business Machines Corporation | Calculating corrective read voltage offsets in non-volatile random access memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241472A (zh) * | 2008-03-07 | 2008-08-13 | 威盛电子股份有限公司 | 映射管理方法及*** |
US20100332732A1 (en) * | 2009-06-29 | 2010-12-30 | Mediatek Inc. | Memory systems and mapping methods thereof |
-
2015
- 2015-09-18 CN CN201510595295.6A patent/CN105205008B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241472A (zh) * | 2008-03-07 | 2008-08-13 | 威盛电子股份有限公司 | 映射管理方法及*** |
US20100332732A1 (en) * | 2009-06-29 | 2010-12-30 | Mediatek Inc. | Memory systems and mapping methods thereof |
Non-Patent Citations (1)
Title |
---|
邵亚刚等: "《基于日志式混合映射的FTL算法设计与实现》", 《计算机测量与控制》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544912A (zh) * | 2016-06-29 | 2018-01-05 | 北京忆恒创源科技有限公司 | 一种日志记录方法、加载方法及其装置 |
CN107544912B (zh) * | 2016-06-29 | 2021-09-03 | 北京忆恒创源科技股份有限公司 | 一种日志记录方法、加载方法及其装置 |
CN106354658A (zh) * | 2016-08-29 | 2017-01-25 | 成都三零嘉微电子有限公司 | 一种降低混合映射算法中映射表内存资源占用的方法 |
CN106354658B (zh) * | 2016-08-29 | 2019-02-01 | 成都三零嘉微电子有限公司 | 一种降低混合映射算法中映射表内存资源占用的方法 |
CN107832234A (zh) * | 2017-08-07 | 2018-03-23 | 北京时代民芯科技有限公司 | 一种用于nand flash的日志块快速命中方法 |
CN107832234B (zh) * | 2017-08-07 | 2020-07-03 | 北京时代民芯科技有限公司 | 一种用于nand flash的日志块快速命中方法 |
CN109871698A (zh) * | 2019-01-14 | 2019-06-11 | 深圳市奥特尔软件技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109871698B (zh) * | 2019-01-14 | 2021-10-26 | 深圳市奥特尔软件技术有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
US10957407B1 (en) | 2019-10-30 | 2021-03-23 | International Business Machines Corporation | Calculating corrective read voltage offsets in non-volatile random access memory |
US11302403B2 (en) | 2019-10-30 | 2022-04-12 | International Business Machines Corporation | Calculating corrective read voltage offsets in non-volatile random access memory |
Also Published As
Publication number | Publication date |
---|---|
CN105205008B (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104794070B (zh) | 基于动态非覆盖raid技术的固态闪存写缓存***及方法 | |
US8583860B2 (en) | Block management method for flash memory and controller and storage system using the same | |
CN102841851B (zh) | 闪存管理方法和闪存设备 | |
CN102779096B (zh) | 一种基于页块面三维的闪存地址映射方法 | |
CN101493794B (zh) | 一种闪存数据处理方法及装置 | |
US8954656B2 (en) | Method and system for reducing mapping table size in a storage device | |
CN102819496B (zh) | 闪存ftl的地址转换方法 | |
CN105205008A (zh) | 降低混合映射算法中日志块映射表内存资源占用的方法 | |
CN102662856B (zh) | 一种固态硬盘及其存取方法 | |
CN104699413B (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN106354658B (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
CN102214143A (zh) | 一种多层单元闪存的管理方法、装置及存储设备 | |
CN102999441B (zh) | 一种细粒度内存访问的方法 | |
CN104461750A (zh) | 一种NAND flash的访问方法和装置 | |
CN105278875A (zh) | 一种混合异构nand固态硬盘 | |
CN103198021B (zh) | 一种提高固态硬盘数据传输效率的方法 | |
CN102520885B (zh) | 一种混合硬盘的数据管理*** | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
CN113190180A (zh) | 一种基于混合介质的存储装置及分布式存储*** | |
CN114036079B (zh) | 映射表压缩方法、***、存储器控制器、固态硬盘及数据读取方法 | |
CN107861884A (zh) | 一种提高nand闪存中跨页存储地址映射效率的方法 | |
CN103019963B (zh) | 一种高速缓存的映射方法及存储设备 | |
CN102541753B (zh) | 一种嵌入式存储器的读写优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |