CN107832234B - 一种用于nand flash的日志块快速命中方法 - Google Patents
一种用于nand flash的日志块快速命中方法 Download PDFInfo
- Publication number
- CN107832234B CN107832234B CN201710666604.3A CN201710666604A CN107832234B CN 107832234 B CN107832234 B CN 107832234B CN 201710666604 A CN201710666604 A CN 201710666604A CN 107832234 B CN107832234 B CN 107832234B
- Authority
- CN
- China
- Prior art keywords
- page
- block
- log block
- data
- address
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种用于NAND FLASH的日志块快速命中方法,首先在***内存中创建LOPB,在向LOG块写数据的同时不断向LOPB中添加LPA,在读数据过程中,根据目标扇区的LBA地址LADDR,计算其页偏移地址,查找相应的LOPB的LPA,从某结点开始遍历,能够快速准确找到存放与目标LADDR相同页偏移地址的日志块中页地址,进一步根据找到的页冗余区的地址信息计算该页中是否命中目标LADDR。本发明方法降低***内存的消耗同时能够快速命中日志块,提高***响应速度,减少查找日志块的资源开销和时间消耗,提升了闪存处理器的性能,对***内存资源较为宝贵的片上***具有实际意义。
Description
技术领域
本发明涉及NAND FLASH存储管理领域,特别是一种用于NAND FLASH的日志块快速命中方法。
背景技术
目前相对主流的SSD都是基于NAND FLASH的介质,FTL算法的关键之一就是地址映射,而混合映射是其中一种方法。本发明的领域和方向是混合映射机制中对日志块(LOG块)的数据查找。目前NAND FLASH擦除操作的基本单位是块,而读写的基本单位是页。主机对SSD的读写数据的最小单位是扇区。而主机对写入的扇区数据进行更改之前需要进行块擦除操作,为了实现局部损耗均衡和提高写性能,将NAND FLASH的块划分为DATA块和LOG块。当DATA块区的数据需要更改时,为了减少写操作中每次页写之前的擦除操作,将更新的有效数据先写入LOG块区中。但是每次读操作之前都要判断LOG块中是否有目标扇区数据,所以需要都需要对LOG块中的地址进行查找。
现有的从LOG块中查找目标扇区的技术中,大多是查找LOG块中所有的扇区地址,逐一判断是否包含目标地址。如果一个NAND FLASH有M个LOG块,一个LOG块有N个页,那么每次查询一个扇区,都需要进行M*N次循环。这样的查找方式计算量较大,而且时间较长,影响了***的读性能。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种用于NAND FLASH的日志块快速命中方法,降低***内存的消耗同时能够快速命中日志块,提高***响应速度,减少查找日志块的资源开销和时间消耗,提升了闪存处理器的性能。
本发明的技术解决方案是:一种用于NAND FLASH的日志块快速命中方法,包括如下步骤:
步骤1:当要进行日志块快速查找时,根据目标扇区LBA地址LADDR,计算出LADDR对应的SLAP、LNP的值,假设SLAP=X,LNP=Y,其中,SLAP为目标扇区所在页的地址,LNP为目标扇区在页内的扇区偏移地址;所述的NAND FLASH包括至少1个逻辑块,每个逻辑块包括至少1个页,每个页包括页冗余区、有效数据区,有效数据区包括至少1个扇区,逻辑块为日志块或者数据块,日志块的页冗余区包括日志块有效数据区的SLAP、LNP、LCP;其中,数据块的有效数据区以扇区为单位存放数据,日志块有效数据区存储数据块有效数据区更新的数据,LCP为日志块有效数据区中写入数据的扇区个数;
步骤2:计算目标扇区LBA地址的SLAP值在逻辑块中的页偏移地址z,其中,z=X%PPB,%为取余符号,PPB为NAND FLASH中每个逻辑块中包含的页数;
步骤3:根据页偏移地址z找到LOPB当前页偏移地址z对应的链表,如果该链表为空,则执行步骤7,否则找到任意LPA,执行步骤4;所述的LOPB包括至少1个链表,每个链表包括至少1个LPA,同一个链表中的LPA存放的数据在逻辑块中的页偏移地址相同,LPA包括数据的块地址、页偏移地址;
步骤4:根据当前LPA的块地址、页偏移地址找到对应日志块中的对应页,然后读出页冗余区中的SLAP、LNP、LCP的值,分别为n,p,q;
步骤5:如果当前页数据的n=X且p+q>Y>p,则当前页中包含目标扇区LBA地址LADDR,完成当前查找,否则执行步骤6;
步骤6:寻找下一个LPA,如果存在下一个LPA则执行步骤4,否则执行步骤7;
步骤7:查找结束,未找到目标扇区LBA地址LADDR。
所述的日志块的页冗余区包括的日志块有效数据区的SLAP、LNP、LCP为有效数据区写入数据的同时,进行计算和创建。
所述的步骤3中任意LPA的为链表中尾部的LPA。
所述的步骤6中的下一个LPA为从链表的尾部LPA向前进行查找。
所述的日志块的容量小于数据块。
所述的日志块有效数据区存储所有数据块有效数据区更新的数据。
所述的扇区LBA地址LADDR的SLAP的计算公式为LADDR/SPP,LNP的计算公式为LADDR%SPP,其中,SPP为NAND FLASH中每个页包含的扇区个数。
本发明与现有技术相比的优点在于:
(1)本发明采用了数据块映射和日志块页映射的混合映射机制,既减小缓存映射表的大小,也可以提高日志块的查找准确度,尤其在随机读写访问中使日志块的命中速度得到提高;
(2)本发明在***内存中创建LOPB,而不是在NAND FLASH的块中创建LOPB,这样避免了对NAND FLASH的擦除操作和写操作,充分利用***内存访问速度快和链表灵活可控的优势,不仅能够进行链表的快速访问,而且对链表中结点的增加和修改页比较容易,提高了运行速度,因此在***内存创建LOPB是本发明的最大优势;
(3)本发明中LOPB的链表个数与块中页的个数保持一致,这个每个链表均对应块中的一个页偏移量。整个LOPB将对应一块中所有的页地址。这样的设计使计算出的页偏移量SLAP和LOPB的序号一致,能够快速定位需要查找的LPA地址;
(4)本发明在日志页冗余区存放日志块中数据在数据块中的地址信息,通过SLAP、LNP、LCP能够快速计算日志块中是否存在目标扇区的LBA地址,快速准确;
(5)本发明首先通过LOPB来查询是否命中,实则是对LBA地址进行了按页地址分组,查找时首先确定目标所在的组,然后在组内继续查找是否命中,大大提高查找速度,提高读性能;
(6)本发明适应各种以NAND FLASH为存储载体的SSD以及控制器。
附图说明
图1为本发明的快速命中算法的在日志块中查找目标的流程图;
图2为本发明的快速命中算法的日志块中每个页的结构图;
图3为本发明的快速命中算法的日志块的创建过程;
图4为本发明的快速命中算法的LOPB的创建过程。
具体实施方式
本发明克服现有技术的不足,提供了一种用于NAND FLASH的日志块快速命中方法,降低***内存的消耗同时能够快速命中日志块,提高***响应速度,减少查找日志块的资源开销和时间消耗,提升了闪存处理器的性能,本发明一种用于NAND FLASH的日志块快速命中方法,包括如下步骤:
步骤1:当要进行日志块快速查找时,根据目标扇区LBA地址LADDR,计算出LADDR对应的SLAP、LNP的值,假设SLAP=X,LNP=Y,其中,SLAP为目标扇区所在页的地址,LNP为目标扇区在页内的扇区偏移地址;所述的NAND FLASH包括至少1个逻辑块,每个逻辑块包括至少1个页,每个页包括页冗余区、有效数据区,有效数据区包括至少1个扇区,逻辑块为日志块或者数据块,日志块的页冗余区包括日志块有效数据区的SLAP、LNP、LCP;其中,数据块的有效数据区以扇区为单位存放数据,日志块有效数据区存储数据块有效数据区更新的数据,LCP为日志块有效数据区中写入数据的扇区个数;
步骤2:计算目标扇区LBA地址的SLAP值在逻辑块中的页偏移地址z,其中,z=X%PPB,%为取余符号,PPB为NAND FLASH中每个逻辑块中包含的页数;
步骤3:根据页偏移地址z找到LOPB当前页偏移地址z对应的链表,如果该链表为空,则执行步骤7,否则找到任意LPA,执行步骤4;所述的LOPB包括至少1个链表,每个链表包括至少1个LPA,同一个链表中的LPA存放的数据在逻辑块中的页偏移地址相同,LPA包括数据的块地址、页偏移地址;
步骤4:根据当前LPA的块地址、页偏移地址找到对应日志块中的对应页,然后读出页冗余区中的SLAP、LNP、LCP的值,分别为n,p,q;
步骤5:如果当前页数据的n=X且p+q>Y>p,则当前页中包含目标扇区LBA地址LADDR,完成当前查找,否则执行步骤6;
步骤6:寻找下一个LPA,如果存在下一个LPA则执行步骤4,否则执行步骤7;
步骤7:查找结束,未找到目标扇区LBA地址LADDR,下面结合附图和具体实施例对本发明作进一步详细的描述。
通常在做NAND FLASH管理时,将NAND FLASH的块划分为DATA块(数据块)和LOG块(日志块)。当DATA块区的数据需要更改时,为了减少写操作中每次页写之前的擦除操作,将更新的有效数据先写入LOG块(日志块)中,这样能够提高写速度,延长NAND FLASH的使用寿命。但是代价是每次读操作之前都要判断LOG块中是否有目标扇区数据,需要对LOG块中的数据进行查找。因此本发明提出了一中日志块快速命中方法来解决这个问题,目的是用最少的运算量进行目标查找。
本发明采用的FTL算法中地址映射采用混合映射机制,混合映射的核心思想就是引入了日志块,通常日志块分配比例小,数据块分配比例大,数据块用于存储数据采用基于块的映射,日志块采用基于页的映射,一个日志块通常与所有的数据块相关联,日志块中的数据页通常来自各数据块的更新。混合映射机制在块映射的基础上,对频繁更新的数据采用基于页的映射机制,提高数据更新的灵活性。
主机在访问FLASH的最小数据单位是扇区,而FLASH读写的最小单位是页,那么一个页由一个或者多个扇区组成,一个块由多个扇区组成。而为了记录DATA块区的数据的LBA(逻辑地址)地址,本发明利用LOG块中页的冗余区来记录地址信息。
图1为本发明的快速命中算法的在日志块中查找目标的流程图,主机发送读请求,根据目标扇区LBA地址LADDR,计算出LADDR对应的SLAP和LNP的值,假设SLAP=X,LNP=Y。其中,SLAP为目标扇区所在页的地址,LNP为目标扇区在页内的扇区偏移地址;计算目标地址的SLAP值在块中的页偏移地址z,其中z=X%PPB,查找与z对应的LOPB_z链表,如果该链表为空,则认为LOG块中没有目标扇区。否则找到其LPA尾结点,根据当前LPA结点对应的日志块地址,读出冗余区中的SLAP、LNP、LCP的值,分别为n、p、q;如果当前日志页中n=X,且p+q>Y>p,则认为当前页中包含目标扇区数据,命中。否则当前页不包含目标数据,未命中,寻找下一个LPA,如果不存在下一个LPA,日志块查找结束,未找到目标扇区,否则对下一个LPA进行判断是否包含目标数据,直到找到目标数据或者遍历所有的结点为止。
图2为本发明的快速命中算法的日志块中每个页的结构图,本发明中LPA结点以及对应日志块中有效数据或者志块中页冗余区的地址信息是在向LOG块写数据的同时进行写入的。将有效数据按照页数据的格式写入LOG块的空页中,LOG块中每个页的主数据区存放写入的有效数据,而冗余区存放该有效页数据对应数据块中的地址信息由SLAP、LNP、LCP三部份组成,SLAP为存放有效数据在数据块中的页地址,LNP为目标LBA在页中的起始地址,LCP为连续写入扇区个数。SLAP的计算公式为LADDR/SPP,LNP的计算公式为LADDR%SPP,其中SPP为NAND FLASH中每个页包含的扇区个数,%为取余符号,/为除法操作。图中假设要向LOG块中写入的扇区地址为0x0008,长度为两个扇区,SPP=4,即每个页由4个扇区组成,那么根据公式计算出SLAP、LNP、LCP的值,在本例中定义SLAP、LNP、LCP分别用一个字节表示。假设PPB=8,SPP=4,那么SLAP=0x02、LNP=0x 00、LCP=0x 02,那么该页的冗余区信息为020002。
图3为本发明的快速命中算法的日志块的创建过程,以LOG BLOCK0为例,当主机向NAND FLASH更新某一个扇区的数据,其LBA地址LADDR=12,长度CNT=1。根据图2的创建过程,第一次将数据写入LOG块区时,将数据放入页地址Page00,第二次写数据到Page01,依此类推,直到所有页都写满数据,则认为LOG块满。图3中,LADDR=12时,计算其SLAP=12/4=3,LNP=12%4=0,LCP=1。那么冗余区依次存放0x03、0x00、0x01三个字节。同理LADDR=45时,那么冗余区依次存放0x03、0x01、0x02三个字节,PPB为NAND FLASH中每个逻辑块中包含的页数。
图4为本发明的快速命中算法的LOPB的创建过程,本发明中LOPB是在最开始初始化的时候进行创建的,创建的时候每个列表均是空链表。由于本例中PPB=8,那么在***内存中创建8个空链表即LOPB_00到LOPB_07,依次存放页偏移地址为Page00到Page07的LOG块地址。每次向LOG块写入一个页数据的同时,创建LPA并添加到相应的LOPB链表中。如图4所示,以LOPB_00为例。假设NAND FLASH中一共有2个LOG块,那么这两个LOG块中,一共有3个页偏移地址为0的页,分别是LOG BLOCK0的Page02、Page06和LOG BLOCK1的Page01,那么LOPB_00对应的有三个LPA,本例中定义每个LPA结点为2个字节,第一个字节表示LOG块号,第二个字节表示LOG块中的页号,那么上述三个页用LPA结点表示分别是0x0002、0x0006、0x0101。那么LOPB_00由这个三个结点组成。当写入新的数据时,如果其SLAP为0,那么继续将其存放的LOG地址生成LPA结点,并将其***LOPB_00链表中。LOPB链表所占用的内存资源为LOG块中有效页数据的个数x2个字节。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (7)
1.一种用于NAND FLASH的日志块快速命中方法,其特征在于包括如下步骤:
步骤1:当要进行日志块快速查找时,根据目标扇区LBA地址LADDR,计算出LADDR对应的SLAP、LNP的值,假设SLAP=X,LNP=Y,其中,SLAP为目标扇区所在页的地址,LNP为目标扇区在页内的扇区偏移地址;所述的NAND FLASH包括至少1个逻辑块,每个逻辑块包括至少1个页,每个页包括页冗余区、有效数据区,有效数据区包括至少1个扇区,逻辑块为日志块或者数据块,日志块的页冗余区包括日志块有效数据区的SLAP、LNP、LCP;其中,数据块的有效数据区以扇区为单位存放数据,日志块有效数据区存储数据块有效数据区更新的数据,LCP为日志块有效数据区中写入数据的扇区个数;
步骤2:计算目标扇区LBA地址的SLAP值在逻辑块中的页偏移地址z,其中,z=X%PPB,%为取余符号,PPB为NAND FLASH中每个逻辑块中包含的页数;
步骤3:根据页偏移地址z找到LOPB当前页偏移地址z对应的链表,如果该链表为空,则执行步骤7,否则找到任意LPA,执行步骤4;所述的LOPB包括至少1个链表,每个链表包括至少1个LPA,同一个链表中的LPA存放的数据在逻辑块中的页偏移地址相同,LPA包括数据的块地址、页偏移地址;
步骤4:根据当前LPA的块地址、页偏移地址找到对应日志块中的对应页,然后读出页冗余区中的SLAP、LNP、LCP的值,分别为n,p,q;
步骤5:如果当前页数据的n=X且p+q>Y>p,则当前页中包含目标扇区LBA地址LADDR,完成当前查找,否则执行步骤6;
步骤6:寻找下一个LPA,如果存在下一个LPA则执行步骤4,否则执行步骤7;
步骤7:查找结束,未找到目标扇区LBA地址LADDR。
2.根据权利要求1所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的日志块的页冗余区包括的日志块有效数据区的SLAP、LNP、LCP为有效数据区写入数据的同时,进行计算和创建。
3.根据权利要求1或2所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的步骤3中任意LPA为链表中尾部的LPA。
4.根据权利要求3所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的步骤6中的下一个LPA为从链表的尾部LPA向前进行查找。
5.根据权利要求1或2所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的日志块的容量小于数据块。
6.根据权利要求1或2所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的日志块有效数据区存储所有数据块有效数据区更新的数据。
7.根据权利要求1或2所述的一种用于NAND FLASH的日志块快速命中方法,其特征在于:所述的扇区LBA地址LADDR的SLAP的计算公式为LADDR/SPP,LNP的计算公式为LADDR%SPP,其中,SPP为NAND FLASH中每个页包含的扇区个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710666604.3A CN107832234B (zh) | 2017-08-07 | 2017-08-07 | 一种用于nand flash的日志块快速命中方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710666604.3A CN107832234B (zh) | 2017-08-07 | 2017-08-07 | 一种用于nand flash的日志块快速命中方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107832234A CN107832234A (zh) | 2018-03-23 |
CN107832234B true CN107832234B (zh) | 2020-07-03 |
Family
ID=61643106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710666604.3A Active CN107832234B (zh) | 2017-08-07 | 2017-08-07 | 一种用于nand flash的日志块快速命中方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107832234B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
CN103729303A (zh) * | 2014-01-20 | 2014-04-16 | 飞天诚信科技股份有限公司 | 一种Flash的数据写入和读取方法 |
CN105205008A (zh) * | 2015-09-18 | 2015-12-30 | 成都三零嘉微电子有限公司 | 降低混合映射算法中日志块映射表内存资源占用的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7900018B2 (en) * | 2006-12-05 | 2011-03-01 | Electronics And Telecommunications Research Institute | Embedded system and page relocation method therefor |
-
2017
- 2017-08-07 CN CN201710666604.3A patent/CN107832234B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
CN103729303A (zh) * | 2014-01-20 | 2014-04-16 | 飞天诚信科技股份有限公司 | 一种Flash的数据写入和读取方法 |
CN105205008A (zh) * | 2015-09-18 | 2015-12-30 | 成都三零嘉微电子有限公司 | 降低混合映射算法中日志块映射表内存资源占用的方法 |
Non-Patent Citations (2)
Title |
---|
A High Efficiency All PMOS Charge Pump for 3D NAND Flash Memory;Liyin Fu等;《2015 IEEE 11th International Conference on ASIC》;20160721;正文第1-4页 * |
高性能海量数据存储模拟器设计;赵微 等;《微型机与应用》;20161130;第35卷(第22期);第43-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107832234A (zh) | 2018-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11232041B2 (en) | Memory addressing | |
CN110678836B (zh) | 用于键值存储的持久性存储器 | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
TWI775122B (zh) | 用來存取至少一非揮發性記憶體元件的處理單元 | |
TWI434175B (zh) | 用來進行區塊管理之方法以及記憶裝置及控制器 | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
KR102349999B1 (ko) | 반도체 장치 및 그 동작 방법 | |
US11232028B2 (en) | Error-checking in namespaces on storage devices | |
CN113419675B (zh) | 用于存储器的写操作方法及读操作方法 | |
CN115756312A (zh) | 数据访问***、数据访问方法和存储介质 | |
CN113253926A (zh) | 提升新型存储器的查询和存储性能的存储内索引构建方法 | |
CN114968096A (zh) | 一种存储器的控制方法、存储器与存储*** | |
CN107273306B (zh) | 一种固态硬盘的数据读取、数据写入方法及固态硬盘 | |
TWI417720B (zh) | 快閃記憶體管理方法與計算機系統 | |
CN108427648B (zh) | 存储***页内脏数据索引方法和装置 | |
CN102541753B (zh) | 一种嵌入式存储器的读写优化方法 | |
CN107832234B (zh) | 一种用于nand flash的日志块快速命中方法 | |
CN112805692A (zh) | 混合式双列直插式存储器模块中的高速缓存操作 | |
CN104391652A (zh) | 一种硬盘的损耗均衡方法及装置 | |
CN113703671B (zh) | 一种数据块擦除方法及相关装置 | |
CN117891415B (zh) | 一种存储装置的p2l数据管理方法及装置 | |
CN112100091B (zh) | 二级映射表数据映射方法、装置、存储介质及电子设备 | |
CN115391236A (zh) | 将hmb作为物理映射表缓存的管理方法及其*** | |
CN117908784A (zh) | L2p表格数据的缓存方法、设备及计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |