CN108717395B - 一种降低动态块映射信息占用内存的方法及装置 - Google Patents

一种降低动态块映射信息占用内存的方法及装置 Download PDF

Info

Publication number
CN108717395B
CN108717395B CN201810480634.XA CN201810480634A CN108717395B CN 108717395 B CN108717395 B CN 108717395B CN 201810480634 A CN201810480634 A CN 201810480634A CN 108717395 B CN108717395 B CN 108717395B
Authority
CN
China
Prior art keywords
mapping information
dynamic block
capacity
block mapping
page
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
Application number
CN201810480634.XA
Other languages
English (en)
Other versions
CN108717395A (zh
Inventor
周冬华
杨洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ramaxel Technology Shenzhen Co Ltd
Original Assignee
Ramaxel Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ramaxel Technology Shenzhen Co Ltd filed Critical Ramaxel Technology Shenzhen Co Ltd
Priority to CN201810480634.XA priority Critical patent/CN108717395B/zh
Publication of CN108717395A publication Critical patent/CN108717395A/zh
Application granted granted Critical
Publication of CN108717395B publication Critical patent/CN108717395B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明涉及一种降低动态块映射信息占用内存的方法及装置,该方法包括选取SLC页作为动态块映射信息存放单元;根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;根据计算的数量划分超级块。本发明通过设置颗粒度更小的单元存放动态块映射信息,并根据选取的SLC页的容量大小计算存放动态块映射信息的个数,依据个数按照等分或不等分地划分超级块,达到利于任务并行,扫描恢复数据的时间短,且降低动态块映射信息对系统内存的需求,且以超级块动态存储映射信息,可提升系统带宽和垃圾回收的圆滑度。

Description

一种降低动态块映射信息占用内存的方法及装置
技术领域
本发明涉及闪存存储器,更具体地说是指一种降低动态块映射信息占用内存的方法及装置。
背景技术
NAND Flash是非易失性存储器的一种,众所周知,NAND Flash的读写依赖于一张逻辑地址到物理地址的映射表,这张表由闪存地址转换层管理,但是当开机初始化重建逻辑物理地址映射表和垃圾回收时,更需要的是物理地址到逻辑地址的映射表。
NAND Flash由若干个晶片组成,晶片由数千块组成。对于同一个晶片进行的任何操作均需要串行起来,而不同晶片之间的操作可以并行。如图1所示,对晶片0的块1进行擦拭操作,对块2的页15进行写操作,虽然是不同块,但因为在同一个晶片下,所以只有当块1的擦拭操作执行完了,才能执行块2页15的写操作;虽然现在很多闪存存储系统支持擦拭推迟,即块1的擦拭操作在运行中时,通过特定命令将其推迟,先运行块2页15的写操作,等块2页15的写操作执行完了,再接着运行块1的擦拭操作;在同一时刻只有一个操作在执行;再如对晶片0的块1进行擦拭操作,对晶片1的块1的页15进行写操作,由于这两个操作是针对不同晶片,因此不管它们是不是同一类型的操作,也不管它们操作的是不是编号一样的块,都可以同时执行;因此,现有的FTL算法将可以并行执行的块,在逻辑上捆绑在一起,作为一个管理对象,取名叫超级块,不仅简化了算法逻辑,而且最大化了NAND Flash控制器的带宽。
但是超级块是有写入顺序的,如图2所示,这是FTL算法为了管理数据而设计的规则,超级块中相同编号的页依次写入,一个接着一个,直到最后一个块,然后再回到第一个块的后一个编号的页,依次类推。每一个页都对应着大于等于一个逻辑映射地址。为了快速恢复逻辑物理地址映射表和提高垃圾回收的效率,闪存地址转换层以超级块为单位,动态地将这些逻辑映射地址缓存起来,形成动态块映射信息。当超级块写到最后一页时,再将逻辑映射地址缓存数据写入NAND Flash,如图3所示,但是这样需要很大的内存开销。现在NAND Flash的页容量普遍为16KB,即对应着4K个逻辑映射地址,也就是基于4KB映射算法,即图3中的LPA_a0其实对应着LPA_a00~LPA_a03,如果这是一个TLC的超级块,页的容量大小为48KB,LPA_a0就对应着LPA_a000~LPA_a011,以Toshiba BICS3为例,页为48KB,每个块有256个页,则缓存动态块映射信息需要内存48KB,即4个晶片。
另外,需要引入并行机制来提高系统的性能,在存入前一个超级块的动态块映射信息时,下一个超级块的动态块映射信息需要开始存放,即以Toshiba BICS3为例,内存需要翻倍48KB*2=96KB,这是一个很大的内存开销,特别是对于eMMC、TF卡等无DRAM的闪存产品,现有一种降内存的方案,即后一个动态块映射信息使用小SRAM芯片,当前一个动态块映射信息存放完成后,将小SRAM芯片数据拷贝至大SRAM芯片中,这样大SRAM芯片和小SRAM芯片配合的方式,可以降低对内存的需求,但是很难界定小SRAM芯片的容量,且将小SRAM芯片数据拷贝至大SRAM芯片中,会有额外时间开销,导致效率低下。
因此,有必要设计有一种新的降低内存的方法,实现降低动态块映射信息对系统内存的需求,且提升系统带宽和垃圾回收的圆滑度。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种降低动态块映射信息占用内存的方法及装置。
为实现上述目的,本发明采用以下技术方案:一种降低动态块映射信息占用内存的方法,所述方法包括:
选取SLC页作为动态块映射信息存放单元;
根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
根据计算的数量划分超级块。
其进一步技术方案为:根据计算的数量划分超级块的步骤,包括以下具体步骤:
判断根据计算的数量是否能等分超级块;
若是,则按照计算数量等分超级块;
若否,则对动态块映射信息进行动态调节。
其进一步技术方案为:对动态块映射信息进行动态调节的步骤,具体是对动态块映射信息所含的逻辑映射地址进行缩小。
其进一步技术方案为:对动态块映射信息进行动态调节的步骤,具体是对最后一个动态块映射信息进行不完整存放处理。
其进一步技术方案为:选取SLC页作为动态块映射信息存放单元的步骤之前,还包括:
判断晶片的数量是否是固定数;
若是,则进入选取SLC页作为动态块映射信息存放单元的步骤;
若否,则获取动态块映射信息的划分通式;
根据划分通式以及配置获取各页的容量列表,并进入选取SLC页作为动态块映射信息存放单元的步骤。
其进一步技术方案为:获取动态块映射信息的划分通式的步骤,包括以下具体步骤:
获取SLC页的容量、超级块容量以及并行单元的个数;
获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数;
根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
本发明还提供了一种降低动态块映射信息占用内存的装置,包括选取单元、数量计算单元以及划分单元;
所述选取单元,用于选取SLC页作为动态块映射信息存放单元;
所述数量计算单元,用于根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
所述划分单元,用于根据计算的数量划分超级块。
其进一步技术方案为:所述划分单元包括等分判断模块、等分模块以及调节模块;
所述等分判断模块,用于判断根据计算的数量是否能等分超级块;
所述等分模块,用于若是,则按照计算数量等分超级块;
所述调节模块,用于若否,则对动态块映射信息进行动态调节。
其进一步技术方案为:所述装置还包括固定数判断模块、通式获取模块以及列表获取模块;
所述固定数判断模块,用于判断晶片的数量是否是固定数;
所述通式获取模块,用于若否,则获取动态块映射信息的划分通式;
所述列表获取模块,用于根据划分通式以及配置获取各页的容量列表。
其进一步技术方案为:所述通式获取模块包括SLC数据获取子模块、TLC数据获取子模块以及整合子模块;
所述SLC数据获取子模块,用于获取SLC页的容量、超级块容量以及并行单元的个数;
所述TLC数据获取子模块,用于获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数;
所述整合子模块,用于根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
本发明与现有技术相比的有益效果是:本发明的一种降低动态块映射信息的占用内存的方法,通过设置颗粒度更小的单元存放动态块映射信息,并根据选取的SLC页的容量大小计算存放动态块映射信息的个数,依据个数按照等分或不等分地划分超级块,达到利于任务并行,扫描恢复数据的时间短,且降低动态块映射信息对系统内存的需求,且以超级块动态存储映射信息,可提升系统带宽和垃圾回收的圆滑度。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为现有技术的超级块的结构示意图;
图2为现有技术的超级块数据写入顺序的示意图;
图3为现有技术的超级块数据写入顺序的示意图;
图4为本发明具体实施例一提供的一种降低动态块映射信息占用内存的方法的流程图;
图5为本发明具体实施例一提供的闪存存储系统的结构示意图;
图6为本发明具体实施例一提供的动态块映射信息的划分示意图;
图7为本发明具体实施例一提供的根据计算的数量划分超级块的流程图;
图8为本发明具体实施例二提供的一种降低动态块映射信息占用内存的方法的流程图;
图9为本发明具体实施例二提供的获取动态块映射信息的划分通式的流程图;
图10为本发明具体实施例三提供的一种降低动态块映射信息占用内存的装置的结构框图;
图11为本发明具体实施例三提供的划分单元的结构框图;
图12为本发明具体实施例三提供的通式获取模块的结构框图;
图13为本发明具体实施例一提供的动态块映射信息的加载和处理时间示意图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图4~12所示的具体实施例,本实施例提供的一种降低动态块映射信息占用内存的方法,可以运用在NAND Flash等闪存存储系统中,实现降低动态块映射信息对系统内存的需求,且提升系统带宽和垃圾回收的圆滑度。
如图4所示,本发明提供了一种降低动态块映射信息占用内存的方法,该方法包括:
S101、选取SLC页作为动态块映射信息存放单元;
S102、根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
S103、根据计算的数量划分超级块。
实施例一
本实施例一提供了一种降低动态块映射信息占用内存的方法,该方法包括:
S101、选取SLC页作为动态块映射信息存放单元;
S102、根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
S103、根据计算的数量划分超级块。
举个例子,配置项为Toshiba BICS3,4个晶片,每个TLC块包含256个TLC页,每个TLC页的容量为48KB(12个映射单元);如图5所示,横向为并行单元,表示可并行单位数目和编号;纵向为页,表示一个TLC块含有的TLC页数目和编号。其中映射单元为页的组成单位,在BICS3里,1个TLC页由12个映射单元组成,1个SLC页由4个映射单元组成,即每个SLC页的容量为16KB。
对于上述的S1步骤,选择颗粒度更小的单位存放动态块映射信息,且存放的位置不固定,只要实例确定了,超级块的划分就确定了,存放动态块映射信息的位置也就确定了。
如图6所示,对于上述的Toshiba BICS3这个例子,选取SLC页作为单位,恰好把超级块三等分。一个SLC页容量大小为16KB,可存放逻辑映射地址:16KB/4B=4K个,故一个动态块映射信息可包含4K个逻辑映射地址,按照超级块的实际配置,做以下划分:
第一个动态块映射信息:映射单元VPage0~4091,共4092个逻辑映射地址。存放在映射单元VPage4092~4095。
第二个动态块映射信息:映射单元VPage4096~8187,共4092个逻辑映射地址。存放在映射单元VPage8188~8191。
第三个动态块映射信息:映射单元VPage8192~12283,共4092个逻辑映射地址。存放在映射单元VPage12284~12288。
综上,存放两个动态块映射信息以维持数据输送,也就是需要2个SLC页,共需要16KB*2=32KB,比现有技术所需的96KB,整整减少了64KB,即减少200%,从而实现降低动态块映射信息对系统内存的需求。
上述的方法,不再将块所存储的逻辑映射地址全部存储于该块的最后一个页中,而且将整个超级块作为一个整体,依照映射单元从左到右的顺序存放逻辑映射地址,当存放的总个数(也就是映射单元*3)满足一个动态块映射信息所包含的逻辑映射地址的个数后,则为可看中一个整体,将该整体形成的动态块映射信息存放于下一个映射单元中。
另外,如图13所示,本实施例同时下发读取三个动态块映射信息的命令,每个动态块映射信息共4092个逻辑映射地址。这三个动态块映射信息如果分布在不同晶片下,则可以并行读取;如果不是在不同晶片下,也影响不大,因为在处理一个动态块映射信息的同时,读取另一个动态块映射信息的时间开销会重合在一起,即抵消一部分,如图6中,后两个动态块映射信息读取和前面动态块映射信息的处理重合,这些时间开销就可以忽略不计了,另外,一次性处理4092个逻辑映射地址,颗粒度更小,更利于任务并行。如果某个动态块映射信息丢失或损坏,那也仅损失一个超级块的1/3逻辑映射地址信息,只需扫描超级块的1/3区域来恢复,时间消耗少,速率高。
对于上述的S102步骤,SLC页的内存是固定的,则需要根据该内存,计算能容纳多少个逻辑映射地址,按照最多4096个逻辑映射地址能组成一个动态块映射信息,在根据这个峰值确定能将超级块划分成多少块,根据确定的结果进行存放。
更进一步地,对于上述的S103步骤而言,根据计算的数量划分超级块的步骤,包括以下具体步骤:
S1031、判断根据计算的数量是否能等分超级块;
S1032、若是,则按照计算数量等分超级块;
S1033、若否,则对动态块映射信息进行动态调节。
对于上述的S1032步骤,则类似Toshiba BICS3这个例子,按照16KB的动态块映射信息最大可容纳4096个逻辑映射地址,且一个SLC页容量大小为16KB,可存放逻辑映射地址:16KB/4B=4K个,折射出一个动态块映射信息可包含4K个逻辑映射地址,根据超级块的配置,可按照逻辑映射地址的个数将超级块等分为3份,分别存储着三个动态块映射信息。
优选地,上述的S1033步骤,对动态块映射信息进行动态调节的步骤,具体是对动态块映射信息所含的逻辑映射地址进行缩小,比如:16KB的动态块映射信息最大可容纳4096个逻辑映射地址,但是因为划分中逻辑映射地址的个数小于4096,可能是4048个逻辑映射地址,也可能是4000个逻辑映射地址,则每个逻辑映射地址就调整为容纳4048个逻辑映射地址或者4000个逻辑映射地址,尽量往等分超级块的方向依靠,在追求整数个逻辑映射地址形成16KB的动态块映射信息的前提下,达到等分超级块。
于其他实施例,若是无法等分超级块,对于上述的S1033步骤,对动态块映射信息进行动态调节的步骤,具体是对最后一个动态块映射信息进行不完整存放处理。也就是说,如果把动态块映射信息所占用的4个逻辑映射地址也算进去,则加起来正好4096个逻辑映射地址,则将前面的动态块映射信息都是4092个逻辑映射地址存储,最后一个动态块映射信息则不按照4092个逻辑映射地址布置,按照所剩下的逻辑映射地址的个数存储。
本实施例一提供的一种降低动态块映射信息的占用内存的方法,通过设置颗粒度更小的单元存放动态块映射信息,并根据选取的SLC页的容量大小计算存放动态块映射信息的个数,依据个数按照等分或不等分地划分超级块,达到利于任务并行,扫描恢复数据的时间短,且降低动态块映射信息对系统内存的需求,且以超级块动态存储映射信息,可提升系统带宽和垃圾回收的圆滑度。
实施例二
本实施例二提供了一种降低动态块映射信息占用内存的方法,该方法包括:
S201、判断晶片的数量是否是固定数;
S202、若否,则获取动态块映射信息的划分通式;
S203、根据划分通式以及配置获取各页的容量列表,并进入S204步骤;
若是,则进入S204步骤;
S204、选取SLC页作为动态块映射信息存放单元;
S205、根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
S206、根据计算的数量划分超级块。
对于上述的S202步骤,获取动态块映射信息的划分通式的步骤,包括以下具体步骤:
S2021、获取SLC页的容量、超级块容量以及并行单元的个数;
S2022、获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数;
S2023、根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
本实施例二着重阐述晶片的数量不是固定数的情况,对于上述的S204步骤至S206步骤的详细解说与实施例一S101步骤至S103步骤的解说一致,在此则不再一一详述。
举个例子,在BICS3里有SLC高速缓冲存储器,还存在SLC超级块,对应有SLC动态块映射信息。设有n个晶片,等同于并行单元。
对于SLC动态块映射信息而言,SLC页(SLC最小写入单元16KB),可容纳16KB/4KB=4个逻辑映射地址;SLC超级块,可容纳4n个逻辑映射地址;第m个动态块映射信息的逻辑映射地址为4Km-4,细化为:所在页数为
Figure BDA0001665753430000111
所在的晶片为((4Km-4)%(4n))/4;
对于TLC动态块映射信息而言,TLC页(TLC最小写入单元48KB),可容纳48KB/4KB=12个逻辑映射地址,TLC超级块可容纳12n个逻辑映射地址;所在页数为
Figure BDA0001665753430000112
所在晶片为((4Km-4)%(12n))/12;所在映射单元为((4Km-4)%12。
整合上述内容,则可以得到如下容量列表:
表1容量列表
Figure BDA0001665753430000113
将实施例一中的配置输入,即n=4,则形成的容量列表如下:
Figure BDA0001665753430000114
Figure BDA0001665753430000121
上面的划分是以Toshiba的BICS3为例,对于其他厂商及其NAND Flash均有效,这里就不展开一一描述了。
本实施例二提供的一种降低动态块映射信息的占用内存的方法,通过设置颗粒度更小的单元存放动态块映射信息,并根据选取的SLC页的容量大小计算存放动态块映射信息的个数,依据个数按照等分或不等分地划分超级块,达到利于任务并行,扫描恢复数据的时间短,且降低动态块映射信息对系统内存的需求,且以超级块动态存储映射信息,可提升系统带宽和垃圾回收的圆滑度。
实施例三
如图10所示,本实施例三提供的一种降低动态块映射信息占用内存的装置,其包括选取单元4、数量计算单元5以及划分单元6。
选取单元4,用于选取SLC页作为动态块映射信息存放单元。选择颗粒度更小的单位存放动态块映射信息,且存放的位置不固定,只要实例确定了,超级块的划分就确定了,存放动态块映射信息的位置也就确定了。
数量计算单元5,用于根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量。
划分单元6,用于根据计算的数量划分超级块。
对于上述的数量计算单元5以及划分单元6而言,举个例子,配置项为ToshibaBICS3,4个晶片,每个TLC块包含256个TLC页,每个TLC页的容量为48KB(12个映射单元);如图5所示,横向为并行单元,表示可并行单位数目和编号;纵向为页,表示一个TLC块含有的TLC页数目和编号。其中映射单元为页的组成单位,在BICS3里,1个TLC页由12个映射单元组成,1个SLC页由4个映射单元组成,即每个SLC页的容量为16KB。
如图6所示,对于上述的Toshiba BICS3这个例子,选取SLC页作为单位,恰好把超级块三等分。一个SLC页容量大小为16KB,可存放逻辑映射地址:16KB/4B=4K个,故一个动态块映射信息可包含4K个逻辑映射地址,按照超级块的实际配置,做以下划分:
第一个动态块映射信息:映射单元VPage0~4091,共4092个逻辑映射地址。存放在映射单元VPage4092~4095。
第二个动态块映射信息:映射单元VPage4096~8187,共4092个逻辑映射地址。存放在映射单元VPage8188~8191。
第三个动态块映射信息:映射单元VPage8192~12283,共4092个逻辑映射地址。存放在映射单元VPage12284~12288。
综上,存放两个动态块映射信息以维持数据输送,也就是需要2个SLC页,共需要16KB*2=32KB,比现有技术所需的96KB,整整减少了64KB,即减少200%,从而实现降低动态块映射信息对系统内存的需求。
上述的装置中,不再将块所存储的逻辑映射地址全部存储于该块的最后一个页中,而且将整个超级块作为一个整体,依照映射单元从左到右的顺序存放逻辑映射地址,当存放的总个数(也就是映射单元*3)满足一个动态块映射信息所包含的逻辑映射地址的个数后,则为可看中一个整体,将该整体形成的动态块映射信息存放于下一个映射单元中。
另外,如图13所示,本实施例同时下发读取三个动态块映射信息的命令,每个动态块映射信息共4092个逻辑映射地址。这三个动态块映射信息如果分布在不同晶片下,则可以并行读取;如果不是在不同晶片下,也影响不大,因为在处理一个动态块映射信息的同时,读取另一个动态块映射信息的时间开销会重合在一起,即抵消一部分,如图6中,后两个动态块映射信息读取和前面动态块映射信息的处理重合,这些时间开销就可以忽略不计了,另外,一次性处理4092个逻辑映射地址,颗粒度更小,更利于任务并行。如果某个动态块映射信息丢失或损坏,那也仅损失一个超级块的1/3逻辑映射地址信息,只需扫描超级块的1/3区域来恢复,时间消耗少,速率高。
对于上述的数量计算单元5,SLC页的内存是固定的,则需要根据该内存,计算能容纳多少个逻辑映射地址,按照最多4096个逻辑映射地址能组成一个动态块映射信息,在根据这个峰值确定能将超级块划分成多少块,根据确定的结果进行存放。
优选地,上述的划分单元6包括等分判断模块61、等分模块62以及调节模块63。
等分判断模块61,用于判断根据计算的数量是否能等分超级块。
等分模块62,用于若是,则按照计算数量等分超级块。
调节模块63,用于若否,则对动态块映射信息进行动态调节。
类似Toshiba BICS3这个例子,按照16KB的动态块映射信息最大可容纳4096个逻辑映射地址,且一个SLC页容量大小为16KB,可存放逻辑映射地址:16KB/4B=4K个,折射出一个动态块映射信息可包含4K个逻辑映射地址,根据超级块的配置,可按照逻辑映射地址的个数将超级块等分为3份,分别存储着三个动态块映射信息。
优选地,上述的调节模块63具体是对动态块映射信息所含的逻辑映射地址进行缩小,比如:16KB的动态块映射信息最大可容纳4096个逻辑映射地址,但是因为划分中逻辑映射地址的个数小于4096,可能是4048个逻辑映射地址,也可能是4000个逻辑映射地址,则每个逻辑映射地址就调整为容纳4048个逻辑映射地址或者4000个逻辑映射地址,尽量往等分超级块的方向依靠,在追求整数个逻辑映射地址形成16KB的动态块映射信息的前提下,达到等分超级块。
于其他实施例,若是无法等分超级块,对于调节模块63具体是对最后一个动态块映射信息进行不完整存放处理。也就是说,如果把动态块映射信息所占用的4个逻辑映射地址也算进去,则加起来正好4096个逻辑映射地址,则将前面的动态块映射信息都是4092个逻辑映射地址存储,最后一个动态块映射信息则不按照4092个逻辑映射地址布置,按照所剩下的逻辑映射地址的个数存储。
另外,对于上述的装置还包括固定数判断模块1、通式获取模块2以及列表获取模块3。
固定数判断模块1,用于判断晶片的数量是否是固定数。
通式获取模块2,用于若否,则获取动态块映射信息的划分通式。
列表获取模块3,用于根据划分通式以及配置获取各页的容量列表。
优选地,上述的通式获取模块2包括SLC数据获取子模块21、TLC数据获取子模块22以及整合子模块23。
SLC数据获取子模块21,用于获取SLC页的容量、超级块容量以及并行单元的个数。
TLC数据获取子模块22,用于获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数。
整合子模块23,用于根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
举个例子,在BICS3里有SLC高速缓冲存储器,还存在SLC超级块,对应有SLC动态块映射信息。设有n个晶片,等同于并行单元。
对于SLC动态块映射信息而言,SLC页(SLC最小写入单元16KB),可容纳16KB/4KB=4个逻辑映射地址;SLC超级块,可容纳4n个逻辑映射地址;第m个动态块映射信息的逻辑映射地址为4Km-4,细化为:所在页数为
Figure BDA0001665753430000161
所在的晶片为((4Km-4)%(4n))/4;
对于TLC动态块映射信息而言,TLC页(TLC最小写入单元48KB),可容纳48KB/4KB=12个逻辑映射地址,TLC超级块可容纳12n个逻辑映射地址;所在页数为
Figure BDA0001665753430000162
所在晶片为((4Km-4)%(12n))/12;所在映射单元为((4Km-4)%12。
整合上述内容,则可以得到如下容量列表:
表1容量列表
Figure BDA0001665753430000163
将实施例一中的配置输入,即n=4,则形成的容量列表如下:
Figure BDA0001665753430000164
Figure BDA0001665753430000171
上面的划分是以Toshiba的BICS3为例,对于其他厂商及其NAND Flash均有效,这里就不展开一一描述了。
上述的一种降低动态块映射信息的占用内存的装置,通过设置颗粒度更小的单元存放动态块映射信息,并根据选取的SLC页的容量大小计算存放动态块映射信息的个数,依据个数按照等分或不等分地划分超级块,达到利于任务并行,扫描恢复数据的时间短,且降低动态块映射信息对系统内存的需求,且以超级块动态存储映射信息,可提升系统带宽和垃圾回收的圆滑度。
另外,本申请实施例提供的一种计算机设备。该计算机设备可以是终端或服务器。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口750,其中,存储器可以包括非易失性存储介质和内存储器。
该非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行任意一种降低动态块映射信息占用内存的方法。
该处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
该内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种降低动态块映射信息占用内存的方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,所述处理器用于运行存储在存储器中的程序代码,以实现以下步骤:
选取SLC页作为动态块映射信息存放单元;
根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
根据计算的数量划分超级块。
在一实施例中,所述处理器用于运行存储在存储器中的程序代码以实现所述选取SLC页作为动态块映射信息存放单元的步骤之前,还可以实现以下步骤:
判断晶片的数量是否是固定数;
若是,则进入选取SLC页作为动态块映射信息存放单元的步骤;
若否,则获取动态块映射信息的划分通式;
根据划分通式以及配置获取各页的容量列表,并进入选取SLC页作为动态块映射信息存放单元的步骤。
应当理解,在本申请实施例中,处理器可以是中央处理单元(Central ProcessingUnit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

Claims (4)

1.一种降低动态块映射信息占用内存的方法,其特征在于,所述方法包括:
选取SLC页作为动态块映射信息存放单元;
根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
根据计算的数量划分超级块;
根据计算的数量划分超级块的步骤,包括以下具体步骤:
判断根据计算的数量是否能等分超级块;
若是,则按照计算数量等分超级块;
若否,则对动态块映射信息进行动态调节;
对动态块映射信息进行动态调节的步骤,具体是对动态块映射信息所含的逻辑映射地址进行缩小;对动态块映射信息进行动态调节的步骤,具体是对最后一个动态块映射信息进行不完整存放处理;
选取SLC页作为动态块映射信息存放单元的步骤之前,还包括:
判断晶片的数量是否是固定数;
若是,则进入选取SLC页作为动态块映射信息存放单元的步骤;
若否,则获取动态块映射信息的划分通式;
根据划分通式以及配置获取各页的容量列表,并进入选取SLC页作为动态块映射信息存放单元的步骤。
2.根据权利要求1所述的一种降低动态块映射信息占用内存的方法,其特征在于,获取动态块映射信息的划分通式的步骤,包括以下具体步骤:
获取SLC页的容量、超级块容量以及并行单元的个数;
获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数;
根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
3.一种降低动态块映射信息占用内存的装置,其特征在于,包括选取单元、数量计算单元以及划分单元;
所述选取单元,用于选取SLC页作为动态块映射信息存放单元;
所述数量计算单元,用于根据选取的SLC页的容量大小计算可存放的动态块映射信息的数量;
所述划分单元,用于根据计算的数量划分超级块;
所述划分单元包括等分判断模块、等分模块以及调节模块;
所述等分判断模块,用于判断根据计算的数量是否能等分超级块;
所述等分模块,用于若是,则按照计算数量等分超级块;
所述调节模块,用于若否,则对动态块映射信息进行动态调节;
所述装置还包括固定数判断模块、通式获取模块以及列表获取模块;
所述固定数判断模块,用于判断晶片的数量是否是固定数;
所述通式获取模块,用于若否,则获取动态块映射信息的划分通式;
所述列表获取模块,用于根据划分通式以及配置获取各页的容量列表。
4.根据权利要求3所述的一种降低动态块映射信息占用内存的装置,其特征在于,所述通式获取模块包括SLC数据获取子模块、TLC数据获取子模块以及整合子模块;
所述SLC数据获取子模块,用于获取SLC页的容量、超级块容量以及并行单元的个数;
所述TLC数据获取子模块,用于获取TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数;
所述整合子模块,用于根据SLC页的容量、超级块容量以及并行单元的个数、TLC页的容量、超级块容量、并行单元的个数以及映射单元的个数,形成划分通式,并整合形成列表。
CN201810480634.XA 2018-05-18 2018-05-18 一种降低动态块映射信息占用内存的方法及装置 Active CN108717395B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810480634.XA CN108717395B (zh) 2018-05-18 2018-05-18 一种降低动态块映射信息占用内存的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810480634.XA CN108717395B (zh) 2018-05-18 2018-05-18 一种降低动态块映射信息占用内存的方法及装置

Publications (2)

Publication Number Publication Date
CN108717395A CN108717395A (zh) 2018-10-30
CN108717395B true CN108717395B (zh) 2021-07-13

Family

ID=63899927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810480634.XA Active CN108717395B (zh) 2018-05-18 2018-05-18 一种降低动态块映射信息占用内存的方法及装置

Country Status (1)

Country Link
CN (1) CN108717395B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558078A (zh) * 2018-11-15 2019-04-02 深圳忆联信息系统有限公司 闪存管理方法、装置、计算机设备和存储介质
KR20200076528A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6046429A (en) * 1997-06-12 2000-04-04 International Business Machines Corporation Laser repair process for printed wiring boards
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
CN100590609C (zh) * 2008-02-22 2010-02-17 浙江大学 一种基于非连续页的动态内存管理方法
CN102479154B (zh) * 2010-11-30 2015-03-11 慧荣科技股份有限公司 用来进行超区块管理的方法、记忆装置及其控制器
CN102486751A (zh) * 2010-12-01 2012-06-06 安凯(广州)微电子技术有限公司 一种在微内存系统上实现小页nandflash虚拟大页的方法
CN104461393B (zh) * 2014-12-09 2017-05-17 华中科技大学 一种闪存存储器的混合映射方法
CN104572106A (zh) * 2015-01-12 2015-04-29 浪潮电子信息产业股份有限公司 一种基于小内存处理大规模数据的并行程序开发方法
CN106326134B (zh) * 2015-06-30 2019-10-01 华为技术有限公司 Ftl地址映射的方法及装置
CN105095099B (zh) * 2015-07-21 2017-12-29 浙江大学 一种基于内存页位图变更的大内存页整合方法
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
CN107817945B (zh) * 2016-09-13 2021-07-27 中国科学院微电子研究所 一种混合内存结构的数据读取方法和系统
CN106952630A (zh) * 2017-03-23 2017-07-14 深圳市茁壮网络股份有限公司 像素区域处理方法、装置以及像素区域切换方法和装置
CN107861884B (zh) * 2017-11-06 2020-06-02 华中科技大学 一种提高nand闪存中跨页存储地址映射效率的方法

Also Published As

Publication number Publication date
CN108717395A (zh) 2018-10-30

Similar Documents

Publication Publication Date Title
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US10831734B2 (en) Update-insert for key-value storage interface
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
KR101811297B1 (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
WO2016082196A1 (zh) 文件访问方法、装置及存储设备
US10877898B2 (en) Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
JP5709814B2 (ja) 不揮発性メモリを有するシステムのための高速ツリー平坦化
US8909895B2 (en) Memory apparatus
US11650760B2 (en) Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
CN108717395B (zh) 一种降低动态块映射信息占用内存的方法及装置
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
US9727453B2 (en) Multi-level table deltas
CN113986773A (zh) 基于固态硬盘的写放大优化方法、装置及计算机设备
US20190042443A1 (en) Data acquisition with zero copy persistent buffering
CN110908596A (zh) 数据存储装置、其操作方法和包括存储装置的存储系统
CN113253939B (zh) 数据处理方法、装置、电子设备及存储介质
US20210042257A1 (en) Data processing system and operating method thereof
US20210026567A1 (en) Storage system including nonvolatile memory module and operating method of the nonvolatile memory module
CN112486861A (zh) 固态硬盘映射表数据查询方法、装置、计算机设备及存储介质
CN111143313A (zh) 一种提高混合映射算法的日志块读写性能的方法
CN111858401A (zh) 提供异构命名空间的存储设备及其在数据库中的应用
US11269534B2 (en) Data storage device and non-volatile memory control method
US11188265B2 (en) Method for performing storage space management, associated data storage device, and controller thereof

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