CN117891415B - 一种存储装置的p2l数据管理方法及装置 - Google Patents

一种存储装置的p2l数据管理方法及装置 Download PDF

Info

Publication number
CN117891415B
CN117891415B CN202410304738.0A CN202410304738A CN117891415B CN 117891415 B CN117891415 B CN 117891415B CN 202410304738 A CN202410304738 A CN 202410304738A CN 117891415 B CN117891415 B CN 117891415B
Authority
CN
China
Prior art keywords
mapping
data
physical address
entries
records
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
CN202410304738.0A
Other languages
English (en)
Other versions
CN117891415A (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.)
Shenzhen Spark Semiconductor Technology Co ltd
Original Assignee
Shenzhen Spark Semiconductor Technology 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 Shenzhen Spark Semiconductor Technology Co ltd filed Critical Shenzhen Spark Semiconductor Technology Co ltd
Priority to CN202410304738.0A priority Critical patent/CN117891415B/zh
Publication of CN117891415A publication Critical patent/CN117891415A/zh
Application granted granted Critical
Publication of CN117891415B publication Critical patent/CN117891415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种存储装置的P2L数据管理方法及装置,该方法中,由一组相邻的2条P2L映射条目来表示连续的多条P2L映射记录,并且每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同,即不需要改变P2L映射条目的数据结构,因此能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构。对于有部分映射条目已经写入数据的闪存装置,由于用于表示连续的多条P2L映射记录的数据结构与已经写入数据的部分映射条目相同,因此对于已经生成的P2L映射表中的部分P2L映射条目可以不需要修改,可以实现热更新来提高P2L映射表的映射记录密度。

Description

一种存储装置的P2L数据管理方法及装置
技术领域
本发明涉及存储设备技术领域,特别涉及一种存储装置的P2L数据管理方法及装置。
背景技术
Nand Flash是一种非易失性存储介质,广泛应用于SD,eMMC,UFS,SSD等闪存存储产品(以下简称为闪存)。根据现有技术可知,闪存存储产品具有以下三个特性:1.擦后写,只有被擦除过后,该页才能被写入新数据;2.读/写操作以页为粒度,擦除操作以块为粒度;3.每个块具有有限的擦除次数。基于上述特性,闪存存储产品无法像传统的磁盘一样与主机的文件***直接相连,而是需要使用闪存转换层(FTL)来隐藏闪存的三个特性带来的接口不一致问题,使得文件***可以像机械硬盘(Hard Disk Drive,HDD)一样访问闪存。FTL主要包括地址映射、垃圾回收和损耗均衡三个功能模块。地址映射记录逻辑地址与物理地址的映射关系。为了减少擦后写特性带来的写放大影响,在FTL层提出异地更新技术来减少擦除和数据移动的开销。由于异地更新会产生一些无效的空间,当闪存没有足够的剩余空间,***会触发垃圾回收操作来回收无效的空间。为避免由于频繁擦写操作带来的物理失效,提出损耗均衡技术来使所有块均匀的损耗从而延长闪存寿命。
为了实现上述三个功能模块,现有技术中需要建立L2P(逻辑地址到物理地址,logical_2_physical)表和P2L(物理地址到逻辑地址,physical_2_logical)表,其中,L2P记录逻辑地址与物理地址映射关系,记录的内容是物理地址,表的地址偏移与逻辑地址是一一对应关系;P2L记录物理地址与逻辑地址映射关系,记录的内容是逻辑地址,表的地址偏移与物理地址是一一对应关系。地址映射是由主机发起的,主要包括读、写操作:读操作时用逻辑地址从L2P表中获取物理地址,从该物理地址中读取对应的数据。写操作时,用逻辑地址从L2P表获取表中的信息,如果是0x7fff,则表示该逻辑地址是空闲的,即该逻辑地址未被分配有对应的物理地址,于是分配新的物理地址给该写请求,假如正在分配的块分配完毕,则分配新块,否则从正在分配的块分配下一页物理地址,然后将新分配的物理地址更新至L2P表,并更新P2L上新分配物理地址对应的逻辑地址。写操作时,用逻辑地址从L2P表获取表中的信息,如果该逻辑地址已经有物理地址(称之为旧物理地址)与其相对应,则无效掉该旧物理地址在P2L表上的逻辑地址,具体操作为将P2L表中该旧物理地址对应的表项修改成0xffff,表示该旧物理地址为无效状态。垃圾回收(GC)是由闪存装置主动发起的,主要包括擦除、移动操作:判断某个块符合垃圾回收(GC)条件时,扫描要进行垃圾回收的块的P2L表,通过识别P2L表中各物理页对应的表项中的标志数据是否为0xffff,从而判断各页是否为无效状态,通过识别P2L表中各物理页对应的表项中的标志数据是否为0x0000,从而判断各页是否为有效状态,假如是有效状态,表明该页是有效数据,则产生移动操作,其中移动操作与写操作类似。当选定的块扫描完毕且有用数据都已经被移到新的地址后,执行擦除操作,完成垃圾回收。其中,擦除操作首先修改P2L表,将要擦除的物理块的P2L表初始化为0x7fff,表示空闲状态。其中关于P2L映射表中用于标识物理地址是否有效的现有技术可以参照专利文献1,如图4所示,所述映射表包括描述性的标志数据,其代表物理地址和逻辑地址之间的映射关系以及对应所述物理地址的页面的数据状态。更确切地,参照图4中的映射表,物理地址P2对应逻辑地址L2,并且物理地址P2的页面数据状态是有效状态0x0000。
根据上述内容可知,P2L表是闪存装置运行过程中不可或缺的数据结构,因此闪存装置需要分配相应的存储单元用于储存对应的P2L表,因此,如何降低存储P2L表所需的存储空间是需要优化的方向。经检索,专利文献2公开了一种可以提高缓存L2P映射表内映射记录密度的方案,该方案应用于对L2P表占用的缓存空间进行优化,其原理为调整L2P映射条目的数据结构,原来的每条L2P映射条目仅包括逻辑地址和对应的物理地址(即映射记录),而专利文献2中,为每条映射条目增加了长度字段,对于若干个连续的L2P映射记录,将其合并成一条L2P映射条目,调整后的每条L2P映射条目包括若干连续映射记录的最小逻辑地址、最小逻辑地址对应的物理地址,以及长度字段记录的连续L2P映射记录的数量(即长度),该方案实现了利用一条L2P映射条目记录多条L2P映射记录,从而提高缓存L2P映射表内映射记录密度。
发明人在专利文献2提供的提高缓存L2P映射表内映射记录密度的方案基础上,对如何提高P2L映射表的映射记录密度进行研究,研究过程中发现专利文献2的方案仍然存在以下不足:
1、原来的每条映射条目仅包括一对逻辑地址和对应的物理地址(即一条映射记录),而专利文献2中的方案,要在每条映射条目中新增长度字段,需要对映射条目的数据结构进行调整,每条映射条目都需要增加字段后,实现映射表的编程任务也会变得更复杂。例如,需要修改现有映射条目数据结构的代码并编写新的代码来实现映射条目的新数据结构。
2、由于专利文献2中对于每条映射条目都需要增加长度字段,即与原来的映射条目数据结构不同,想要达到其提高缓存映射表内映射记录密度的效果,就必须对闪存中映射表的所有内容进行全部更新,意味着对于有部分映射条目已经写入数据的闪存装置,只能够将该闪存装置格式化后才能实现达到其提高缓存映射表内映射记录密度的效果,即无法实现热更新。
3、对于长度为1的映射条目,在写操作时,也需要维护其长度字段,即将其设置为1,增加了维护开销。
专利文献1:中国专利,专利名称,非易失性存储设备中数据管理方法和映射表更新方法,授权公告号,CN101458961B,授权公告日,2014-06-18。
专利文献2:中国专利,专利名称,提高地址映射表中映射信息密度的方法,授权公告号,CN107066393B,授权公告日,2020-06-09。
发明内容
本发明的目的在于提供一种存储装置的P2L数据管理方法及装置,能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构,并且对于有部分映射条目已经写入数据的闪存装置(即存储装置),可以实现热更新来提高P2L映射表的映射记录密度。
为了实现上述发明目的,提供如下技术方案:
第一方面,提供一种存储装置的P2L数据管理方法,所述方法包括:
在写入数据时,将数据按页为单位进行分割,再按逻辑地址从低到高的顺序将数据依次写入闪存中具有多个连续空闲页的块内,存储后的每一页数据均对应一条P2L映射记录,则根据这些P2L映射记录生成一到多条P2L映射条目;如果写入时没有产生跨块写入,则P2L映射记录是连续的,能够合并成一组相邻的2条P2L映射条目;如果写入时产生了跨块写入,则存储在同一个块内的数据对应的P2L映射记录是连续的,所对应的全部P2L映射记录能够合并成一组相邻的2条P2L映射条目;因此,如果写入数据页时产生了跨块存储并分布在S个块,则共生成了2S或2S-1条P2L映射条目,基于P2L映射条目建立P2L映射表;
其中,每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同;对于仅由1条P2L映射记录组成的P2L映射条目,所述逻辑映射数据为用于指示所在P2L映射条目的物理地址对应的逻辑地址;
对于由多条P2L映射记录合并成的每一组相邻的2条P2L映射条目:同一组中相邻的2条P2L映射条目的物理地址相同;同一组中第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址;同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据。
作为进一步的改进,所述数量数据的最高前N位为预设的标志符号,所述数量数据除了最高前N位之外的其他位共同组成的数用于指示所在组合并的多条P2L映射记录的数量,N为自然数。
作为进一步的改进,所述方法还包括:
在写入数据时,跳过逻辑地址中的最高前N位与预设的标志符号相同的逻辑地址范围。
作为进一步的改进,所述方法还包括从P2L映射表中计算出目标物理地址对应的逻辑地址的流程,该流程具体包括:
检索P2L映射表,在能够直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,将该P2L映射条目的物理地址对应的逻辑地址作为目标物理地址对应的逻辑地址;
检索P2L映射表,在不能直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,比对目标物理地址和各映射条目所表示的物理地址范围来判断该目标物理地址PAA是否落在某一组相邻的2条P2L映射条目所表示的物理地址范围内;
对于某个合并的多条P2L映射记录的数量为N的一组相邻的2条P2L映射条目,其第一条P2L映射条目中存储的物理地址PAA1,逻辑地址为LAA1,当PAA>PAA1,且PAA<=PAA1+N-1,则表示目标物理地址命中了P2L映射表中的一组相邻的2条P2L映射条目,目标物理地址PAA对应的逻辑地址LAA的计算方法为:LAA=LAA1+PAA-PAA1,通过计算即可完成对逻辑地址的寻址。
作为进一步的改进,在执行垃圾回收操作时,所述方法还包括:
获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块;
获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目;
从与所述块首物理地址同属一个目标块的全部P2L映射条目中计算出各P2L映射条目包含的各物理地址及其对应的逻辑地址,以恢复该块所有的P2L映射记录,作为目标P2L映射记录集合;
从闪存中的L2P映射表中加载与目标P2L映射记录集合中对应的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合;
比较目标P2L映射记录集合和目标L2P映射记录集合二者中,具有相同逻辑地址的P2L映射记录和L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作;
当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
作为进一步的改进,在执行垃圾回收操作时,所述方法还包括:
获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块;
获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目;
检测到同属一个目标块的全部P2L映射条目仅包括属于同一组相邻的2条P2L映射条目,并且根据该组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量等于目标块的页数时,从闪存中的L2P映射表中加载与目标块的全部P2L映射条目包含的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合;
对目标块的全部P2L映射条目包含的物理地址依次加1,分别计算出目标块的全部P2L映射条目包含的物理地址及其对应的逻辑地址,以在每次计算时得到一条当前计算对应的P2L映射记录并删除上一次计算得到的P2L映射记录,并在每次计算得到一条P2L映射记录时,比较该条P2L映射记录和目标L2P映射记录集合中具有相同逻辑地址的L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作;
当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
作为进一步的改进,所述方法还包括:
在写入数据时,如果写入数据的页数为N,存储装置中具有多个连续空闲页的块中的连续空闲页数量为M,且N>M时,则需要跨块存储,即需要剩余的数据页按逻辑地址从低到高的顺序将数据依次写入其他具有多个连续空闲页的块内,直至所有数据页均被写入存储装置中;
如果写入数据页时产生了跨块存储,则每一组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量即为相应块中所存储数据页的数量。
作为进一步的改进,所述每一组相邻的2条P2L映射条目存储了若干个连续的P2L映射记录;如果一条物理地址PAA为P的P2L映射记录MPRec1,其逻辑地址LAA为L,如果另外一条物理地址PAA为P+1的P2L映射记录MPRec2,其逻辑地址LAA为L+1,则P2L映射记录MPRec1和MPRec2是连续的,如果另外一条物理地址PAA为P+2的P2L映射记录MPRec3,其逻辑地址LAA为L+2,则P2L映射记录MPRec1、MPRec2和MPRec3是连续的,以此类推,有N条P2L映射记录,其物理地址PAA的值从低到高是按照P、P+1、P+2、…、P+N-1连续增长的,相邻P2L映射记录中记录的物理地址的值相差1,而其逻辑地址LAA的值也是从低到高是按照L、L+1、L+2、…、L+N-1连续增长的,相邻P2L映射记录中记录的逻辑地址的值相差1,这样的N条P2L映射记录即为连续的P2L映射记录。
第二方面,提供了一种存储装置,包括闪存、内存、处理器以及存储在闪存上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的一种存储装置的P2L数据管理方法中的各个步骤。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的一种存储装置的P2L数据管理方法中的各个步骤。
相较于现有技术,本发明提供的一种存储装置的P2L数据管理方法及装置,至少具有如下有益效果:
1、由一组相邻的2条P2L映射条目来表示连续的多条P2L映射记录,并且每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同,即不需要改变P2L映射条目的数据结构,因此能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构。
2、对于有部分映射条目已经写入数据的闪存装置,由于用于表示连续的多条P2L映射记录的数据结构与已经写入数据的部分映射条目相同,因此对于已经生成的P2L映射表中的部分P2L映射条目可以不需要修改,而对于未生成的P2L映射条目中存在P2L映射记录连续的情况,可以无需将存储装置全部数据格式化或删除,而是直接将用于表示连续的多条P2L映射记录的一组相邻的2条P2L映射条目写入到已经创建的P2L映射表对应的映射条目中,可以实现热更新来提高P2L映射表的映射记录密度。
3、由于无需在每个P2L映射条目都增加专门的长度字段,因此对于长度为1的P2L映射条目,在写操作时,无需维护其长度字段,而是直接将对应的逻辑地址写入到对应的物理地址所在映射条目即可,无需额外对长度为1的P2L映射记录进行长度字段的维护,即一条P2L映射条目对应1条P2L映射记录,降低了维护长度为1的映射条目的开销。
附图说明
图1为本发明提供的一种存储装置的框架图;
图2为本发明提供的一种存储装置的P2L数据管理方法的原理示意图;
图3为本发明提供的一种存储装置的P2L数据管理方法的原理示意图;
图4是现有技术中的带有标志数据的P2L映射表示意图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
在详细描述本发明提供的实施例之前,有必要再次强调本发明的发明构思,以便于本领域技术人员理解本发明相较于现有技术做出的技术贡献。发明人在研究如何提高P2L映射表的映射记录密度过程中,经检索发现,专利文献2也提供了一种提高映射表的映射记录密度的方案,二者基于相同的原理,即更少的映射条目表示更多的映射条目,关键在于连续的多条映射记录可以通过最小地址和连续的数量来表示,从而实现更少的映射条目表示更多的映射条目的目的,以此提高映射表的映射记录密度。经过研究发现,专利文献2的方案需要对现有技术中每个映射条目的数据结构进行修改,即增加长度字段来表示映射记录连续的数量,这会导致以下问题:
1、原来的每条映射条目仅包括一对逻辑地址和对应的物理地址(即一条映射记录),而专利文献2中的方案,要在每条映射条目中新增长度字段,需要对映射条目的数据结构进行调整,每条映射条目都需要增加字段后,实现映射表的编程任务也会变得更复杂。例如,需要修改现有映射条目数据结构的代码并编写新的代码来实现映射条目的新数据结构。
2、由于专利文献2中对于每条映射条目都需要增加长度字段,即与原来的映射条目数据结构不同,想要达到其提高缓存映射表内映射记录密度的效果,就必须对闪存中映射表的所有内容进行全部更新,意味着对于有部分映射条目已经写入数据的闪存装置,只能够将该闪存装置格式化后才能实现达到其提高缓存映射表内映射记录密度的效果,即无法实现热更新。
3、对于长度为1的映射条目,在写操作时,也需要维护其长度字段,即将其设置为1,增加了维护开销。
并且专利文献2的方案应用于提高缓存L2P映射表内映射记录密度,应用场景与本发明不同,本发明应用于P2L映射表,P2L映射表需要用于垃圾回收操作,而为了垃圾回收的方便,P2L映射表的现有结构如专利文献1所述,需要专门标记对应物理地址是有效或无效的标志位,以便于后续进行垃圾回收,而在垃圾回收中,是无需标记L2P中的每个逻辑地址是否有效或无效的。可知由于P2L与L2P应用场景不同,按照专利文献2中的原理将多个映射记录合并成一个P2L映射条目之后,无法标识每个物理地址是否有效或无效,给如何提高P2L映射表的映射记录密度增加了难度。
以下将结合附图和实施例对本发明提供的一种存储装置的P2L数据管理方法进行详细说明,以解决上述存在的问题和困难。
参照图1,为本实施例提供的一种存储装置的框架图。该装置包括闪存、内存(即DRAM)、处理器(即ARM CPU)以及存储在闪存上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现可以解决上述问题的一种存储装置的P2L数据管理方法中的各个步骤。本发明的技术贡献在于方法,存储装置具体的框架属于现有技术此处不赘述。
本发明提供的一种存储装置的P2L数据管理方法包括:
一、与专利文献2类似,本发明也需要判断多个物理地址上相邻的P2L映射记录是否可合并成P2L映射条目的条件
本发明实施例中,在写入数据时(可以理解的是,读数据时不影响P2L映射表),都可以将符合条件的多个P2L映射记录合并成一组相邻的2条P2L映射条目,生成的每一组相邻的2条P2L映射条目存储了若干个连续的P2L映射记录;具体来说,如果一条物理地址PAA为P的P2L映射记录MPRec1,其逻辑地址LAA为L,如果另外一条物理地址PAA为P+1的P2L映射记录MPRec2,其逻辑地址LAA为L+1,则P2L映射记录MPRec1和MPRec2是连续的,如果另外一条物理地址PAA为P+2的P2L映射记录MPRec3,其逻辑地址LAA为L+2,则P2L映射记录MPRec1、MPRec2和MPRec3是连续的,以此类推,有N条P2L映射记录,其物理地址PAA的值从低到高是按照P、P+1、P+2、…、P+N-1连续增长的,相邻P2L映射记录中记录的物理地址的值相差1,而其逻辑地址LAA的值也是从低到高是按照L、L+1、L+2、…、L+N-1连续增长的,相邻P2L映射记录中记录的逻辑地址的值相差1,这样的N条P2L映射记录即为连续的P2L映射记录,这样的N条P2L映射记录可合并成2条P2L映射条目。
对于连续的N条P2L映射记录,可合并成2条P2L映射条目,本发明中定义为“一组相邻的2条P2L映射条目”:对于由多条P2L映射记录合并成的每一组相邻的2条P2L映射条目:同一组中相邻的2条P2L映射条目的物理地址相同;同一组中第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址;同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据。
其中,每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同;对于仅由1条P2L映射记录组成的P2L映射条目,所述逻辑映射数据为用于指示所在P2L映射条目的物理地址对应的逻辑地址。
可知,相较于现有技术,本发明提供的一种存储装置的P2L数据管理方法,至少具有如下有益效果:
1、由一组相邻的2条P2L映射条目来表示连续的多条P2L映射记录,并且每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同,即不需要改变P2L映射条目的数据结构,因此能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构。
2、对于有部分映射条目已经写入数据的闪存装置,由于用于表示连续的多条P2L映射记录的数据结构与已经写入数据的部分映射条目相同,因此对于已经生成的P2L映射表中的部分P2L映射条目可以不需要修改,而对于未生成的P2L映射条目中存在P2L映射记录连续的情况,可以无需将存储装置全部数据格式化或删除,而是直接将用于表示连续的多条P2L映射记录的一组相邻的2条P2L映射条目写入到已经创建的P2L映射表对应的映射条目中,可以实现热更新来提高P2L映射表的映射记录密度。
3、由于无需在每个P2L映射条目都增加专门的长度字段,因此对于长度为1的P2L映射条目,在写操作时,无需维护其长度字段,而是直接将对应的逻辑地址写入到对应的物理地址所在映射条目即可,无需额外对长度为1的P2L映射记录进行长度字段的维护,即一条P2L映射条目对应1条P2L映射记录,降低了维护长度为1的映射条目的开销。
二、在写入数据时,将数据按页为单位进行分割,再按逻辑地址从低到高的顺序将数据依次写入闪存(NAND Flash)中具有多个连续空闲页的块内,存储后的每一页数据均对应一条P2L映射记录,可将这些连续的P2L映射记录生成一到多条P2L映射条目。
在写入数据时,如果写入数据的页数为N,闪存中具有多个连续空闲页的块中的连续空闲页数量为M,且N>M时,则需要跨块存储,即需要剩余的数据页按逻辑地址从低到高的顺序将数据依次写入其他具有多个连续空闲页的块内,直至所有数据页均被写入存储器中。
在写入数据时,同样是以页为单位写入块中,块内页的写入顺序只能从低地址页向高地址页顺序写入而不能随机写入,因此逻辑地址低的数据被写入物理地址低的页,产生一条逻辑地址到物理地址的L2P映射记录,相应的会产生一条对应的P2L映射记录,以便在垃圾回收时进行操作。逻辑地址次低的数据被写入物理地址次低的页,产生一条逻辑地址到物理地址的L2P映射记录,相应的每一条L2P映射记录都会产生一条对应的P2L映射记录,直到本请求的数据被全部写入完成;如果在写入过程中本空闲块内的空闲页全部被写满而此请求仍然有部分页数据没有被写入NAND Flash则需要跨块写入数据,即分配一个新空闲块用于写入写请求中的数据,同样的,数据写入的顺序依然是低逻辑地址的数据写入低物理地址的页,产生一条逻辑地址到物理地址的L2P映射记录,相应的会产生一条对应的P2L映射记录;逻辑地址次低的数据被写入物理地址次低的页,产生一条逻辑地址到物理地址的L2P映射记录,相应的会产生一条对应的P2L映射记录。如此反复,直到写请求中所有数据被写入NAND Flash中,同时,也生成对应的P2L映射记录。
因此写请求产生了N条P2L映射记录,如果写入时没有产生跨块写入,则此N条映射记录是连续的。因此这N条映射记录可以合并成2条映射条目,即“一组相邻的2条P2L映射条目”,同一组中相邻的2条P2L映射条目的物理地址相同;同一组中第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址;同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据。
如果写入时产生了跨块写入,则存储在同一个块内的数据对应的M条映射记录是连续的,因此这M条映射记录可以合并成2条映射条目,同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据,该数量数据的最高前N位为预设的标志符号C,N为自然数。所述数量数据除了最高前N位之外的其他位共同组成的数用于指示所在组合并的多条P2L映射记录的数量,该数量为M。如果写入数据页时产生了跨块存储并分布在S个块,若最后一个块存储的页数不小于2页则共生成了2S条P2L映射条目,若最后一个块存储的页数只有1页则共生成了2S-1条P2L映射条目。每一组相邻的2条P2L映射条目的第二条P2L映射条目的逻辑映射数据指示了相应块中所因本次请求而写入数据的页的数量。
具体的,如图2所示,每条P2L映射条目由4个字节,即32位的物理地址(PAA)和32位的逻辑地址(LAA)组成,已知逻辑地址0x00001100-0x0000117F写入的是连续的数据,则现有技术中在L2P映射表会占用0x80条L2P映射条目。若0x80页都位于一个块上,如图2中P2L映射表所示,由一组相邻的2条P2L映射条目标识,第一条的物理地址为0x00000200,第二条的物理地址与第一条相同也是0x00000200,第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址,即0x00001100;第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据,即0xFF000080,即N为8,最高前8位为0xFF,二进制表示为11111111,即标志符号为11111111。其中,所述数量数据的最高前N位为预设的标志符号,即标志符号为C,所述数量数据除了最高前N位之外的其他位共同组成的数用于指示所在组合并的多条P2L映射记录的数量,即0x80=128条。可以理解的是,由于数量数据的最高前N位为预设的标志符号,因此主机在写入数据时,会将0xFF000000-0xFFFFFFFF对应的逻辑地址范围排除。这里的排除指的是,主机的写命令中的LBA字段排除0xFF000000-0xFFFFFFFF对应的逻辑地址范围,具体的,主机向闪存装置写入一笔数据时,向闪存装置发送的写命令的格式为Req (LAA: 0xFEFFFFFF, Size:n1, DIR:W, S1… Sn),其中,LAA字段为起始逻辑地址,本示例中为0xFEFFFFFF,Size字段为该笔数的大小,即对应的页数,本示例中为n1,DIR字段为命令类型,W表示向闪存装置写入数据,R表示从闪存装置读取数据,最后第四个字段为传输的数据,本示例中为S1… Sn。主机如果从闪存装置读取一笔数据时,则向闪存装置发送的读命令的格式为Req (LAA:0xFEFFFFFF, Size:n1, DIR: W),此时没有第四个字段。
基于上述理由,由于数量数据的最高前N位为预设的标志符号,因此主机在写入数据时,会将0xFF000000-0xFFFFFFFF对应的逻辑地址范围排除,但由于0xFF000000-0xFFFFFFFF对应的逻辑地址仅仅是主机文件***的写命令跳过的范围,并不影响闪存中实际物理地址的使用,不会造成闪存中物理存储空间使用的范围减少。需要说明的是,由于写命令中LAA字段排除了0xFF000000-0xFFFFFFFF对应的逻辑地址范围,所以P2L映射表中在一组相邻的2条P2L映射条目的第一条的逻辑映射数据绝对不可能出现0xFF000000-0xFFFFFFFF对应的逻辑地址范围。因此在P2L表中的LAA字段中出现0xFF000000-0xFFFFFFFF对应的逻辑地址范围时,可以确定其不是该P2L条映射条目中的PAA字段对应的逻辑地址,而是用于指示所在组合并的多条P2L映射记录的数量,从而不会造成混淆。另一方面,虽然在主机发送的读写命令中的LAA字段并不会出现0xFF000000-0xFFFFFFFF对应的逻辑地址范围,但是在闪存装置构造的L2P表中的LAA字段仍然可以正常出行0xFF000000-0xFFFFFFFF对应的逻辑地址范围,所以不会对现有技术中L2P表的构造和使用造成影响。
进一步的,由于主机排除了0xFF000000-0xFFFFFFFF对应的逻辑地址范围,因此导致主机可以使用的逻辑地址数量会少于闪存中物理地址的数量,举例而言,0xFF000000-0xFFFFFFFF总共占据16的7次方数量的逻辑地址,所以意味着主机可以使用的逻辑地址数量比闪存中物理地址的数量少了16的6次方(即2的24次方),每一个逻辑地址对应4K字节(即1页,即2的12次方字节),所以主机无法直接访问闪存装置的存储容量为2的36次方字节,即64GB。换句话说,如果文件***中的某个文件的起始逻辑地址在0xFF000000-0xFFFFFFFF对应的逻辑地址范围内,例如为0xFF00000C,则文件***将无法访问该文件。这可能会造成文件***在利用现有的文件读写控制方案对闪存进行数据访问时,无法有效利用闪存的存储容量。
基于此,为了能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构,并且对于有部分映射条目已经写入数据的闪存装置(即存储装置),可以实现热更新来提高P2L映射表的映射记录密度等效果的基础上,提升对闪存容量的利用率,本实施例中,还包括如下方法:
步骤A,当数量数据的最高前N位为标志符号,其他的位均为0时,定义为起点逻辑地址;
步骤B,基于起点逻辑地址,计算出主机无法直接访问闪存装置的存储容量,作为目标存储容量;
步骤C,主机从待写入闪存装置的文件池中选择数据量不小于目标存储容量的单个文件,作为目标文件;
步骤D,生成将所述目标文件写入到闪存装置中的写命令,所述写命令中的起始逻辑地址比起点逻辑地址少一比特。
以上的方法尤其适合应用在网盘场景中,由于网盘中已经存储有大量的数据,不方便对已有的P2L映射表结构或者L2P结构进行改变,因此需要能够在提高P2L映射表的映射记录密度的基础上,无需重新编写代码实现P2L映射条目的数据结构,并且对于有部分映射条目已经写入数据的闪存装置(即存储装置),可以实现热更新来提高P2L映射表的映射记录密度等效果的基础上,提升对闪存容量的利用率。一般来说一部蓝光电影文件一般有几十GB或达到上百GB,所以能够通过调整N的值来修改主机无法直接访问闪存装置的存储容量的范围,N越大,则目标存储容量越小。当没有数据量足够大的单个文件时,就需要将N调大,例如N为12时,将最高的前12为调整为0xFFF,此时数量数据的最高前12位为为0xFFF,二进制表示为1111111111,即会将0xFFF00000-0xFFFFFFFF对应的逻辑地址范围排除,其中0xFFF00000定义为起点逻辑地址。基于起点逻辑地址0xFFF00000,可知此时主机可以使用的逻辑地址数量比闪存物理地址的数量少了16的5次方(即2的20次方),每一个逻辑地址对应4K字节(即1页,即2的12次方字节),所以主机无法直接访问的存储容量为2的32次方字节,即4GB,即目标存储容量。例如,主机从待写入闪存装置的文件池中最大的文件为4GB时,设置N为12,此时目标文件数据量为4GB。最后,确定起始逻辑地址为0xFFEFFFFF,生成将目标文件写入到闪存装置中的写命令,Req (LAA: 0xFFEFFFFF, Size:1048576, DIR: W,A1…An)。
对应的,在P2L映射表中,对于由1048576条P2L映射记录合并成的每一组相邻的2条P2L映射条目:
同一组中相邻的2条P2L映射条目的物理地址(PAA)相同,本示例中均为0xC0000000;
同一组中第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址(LAA),本示例中为0xFFEFFFFF;
同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据,本示例中为1048576,16进制表示为0xFFFFFFFF。
可见,由于目标文件的起始逻辑地址不在0xFFF00000-0xFFFFFFFF对应的逻辑地址范围内并且单个文件所占用的已经完全覆盖了主机无法直接访问的存储容量,因此存储在0xFFF00000-0xFFFFFFFF对应的逻辑地址范围内的文件也可以被主机访问,并且不会浪费0xFFF00000-0xFFFFFFFF对应的逻辑地址范围的存储空间,在利用部分逻辑地址作为标志符号的情况也不会影响对该部分逻辑地址的访问,进而保证了主机对于闪存装置存储空间的利用率。
三、在一个实施例中,还提供了从P2L映射表中计算出目标物理地址对应的逻辑地址的流程,该流程具体包括:
检索P2L映射表,在能够直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,将该P2L映射条目的物理地址对应的逻辑地址作为目标物理地址对应的逻辑地址。
如图2中,目标物理地址为0x00000200,此时检索到两个P2L映射条目,即同一组相邻的2条P2L映射条目,其中第一条的逻辑映射数据为0x00001100,第二条的逻辑映射数据为0xFF000080。检测到其中第一条的逻辑映射数据的最高前N位不是预设的标识符号C,则将第一条的逻辑映射数据判定为逻辑地址,而检测到其中第二条的逻辑映射数据的最高前N位是预设的标识符号C,则将第二条的逻辑映射数据判定为数量数据。于是,将0x00001100作为目标物理地址0x00000200对应的逻辑地址。
检索P2L映射表,在不能直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,比对目标物理地址和各映射条目所表示的物理地址范围来判断该目标物理地址PAA是否落在某一组相邻的2条P2L映射条目所表示的物理地址范围内。
对于某个合并的多条P2L映射记录的数量为N的一组相邻的2条P2L映射条目,其第一条P2L映射条目中存储的物理地址PAA1,逻辑地址为LAA1,当PAA>PAA1,且PAA<=PAA1+N-1,则表示目标物理地址命中了P2L映射表中的一组相邻的2条P2L映射条目,目标物理地址PAA对应的逻辑地址LAA的计算方法为:LAA=LAA1+PAA-PAA1,通过计算即可完成对逻辑地址的寻址。
如图2中,目标物理地址PAA=为0x00000202,从P2L映射条目的物理地址中无法直接检索到,则对于第一条的物理地址为PAA1=0x00000200,第二条的物理地址与第一条相同也是0x00000200的一组相邻P2L映射条目而言,PAA1=0x00000200,LAA1=0x00001100,N=0x80=128条,即LAA=0x00001102。
在一个实施例中,在执行垃圾回收操作时,所述方法还包括:
实施例1:
步骤S201,获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块。
本实施例中,提前为闪存中的各块都分配好了每个页对应的物理地址,一个块的各个页的物理地址是连续的,物理地址最小的就是一个块的块首物理地址,写入数据时,按照一个块的物理地址顺序依次分配用于存储数据,只有一个块的所有页存储完了,才分配下一个块的页。因此,当对某块进行垃圾回收时,可以快速找到该块的块首地址。
步骤S202,获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目。
如3所示,假设目标块的页数为0x80=128页,块首物理地址为0x00000200,则对于存储在该块上的连续数据而言,可知,目标块的全部P2L映射条目就是一组相邻的2条P2L映射条目,第一条为0x00000200、0x00001100,第二条为0x00000200、0xFF000080。
步骤S203,从与所述块首物理地址同属一个目标块的全部P2L映射条目中计算出各P2L映射条目包含的各物理地址及其对应的逻辑地址,以恢复该块所有的P2L映射记录,作为目标P2L映射记录集合。
该目标块一共涉及128条P2L映射记录,物理地址从0x00000200-0x0000027F,根据上述从P2L映射表中计算出目标物理地址对应的逻辑地址的流程可以计算出:目标块的块首物理地址0x00000200对应的逻辑地址为0x00001100,目标块次低物理地址为0x00000201,目标块次低逻辑地址为0x00001101,目标块最高物理地址为0x0000027F,目标块最高逻辑地址为0x0000117F,得到目标P2L映射记录集合。
步骤S204,从闪存中的L2P映射表中加载与目标P2L映射记录集合中对应的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合。
如图3所示,现有技术中L2P映射表中128L2P映射记录需要128条L2P映射记录,逻辑地址从0x00001100-0x0000117F。
步骤S205,比较目标P2L映射记录集合和目标L2P映射记录集合二者中,具有相同逻辑地址的P2L映射记录和L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作。
如图3所示,逻辑地址0x00001100在L2P映射表和P2L映射表中指向的物理地址均为0x00000200,表明该物理地址指向的页是有效数据,则产生移动操作。
步骤S206,当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
而逻辑地址0x00001103在L2P映射表中指向的物理地址为0x00004012,经过计算在P2L映射表中指向的物理地址为0x00000203,表明该物理地址指向的页是无效数据,执行擦除操作。
实施例2:
步骤S301,获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块。
本实施例中,提前为闪存中的各块都分配好了每个页对应的物理地址,一个块的各个页的物理地址是连续的,物理地址最小的就是一个块的块首物理地址,写入数据时,按照一个块的物理地址顺序依次分配用于存储数据,只有一个块的所有页存储完了,才分配下一个块的页。因此,当对某块进行垃圾回收时,可以快速找到该块的块首地址。
步骤S302,获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目。
如3所示,假设目标块的页数为0x80=128页,块首物理地址为0x00000200,则对于存储在该块上的连续数据而言,可知,目标块的全部P2L映射条目就是一组相邻的2条P2L映射条目,第一条为0x00000200、0x00001100,第二条为0x00000200、0xFF000080。
步骤S303,检测到同属一个目标块的全部P2L映射条目仅包括属于同一组相邻的2条P2L映射条目,并且根据该组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量等于目标块的页数时,从闪存中的L2P映射表中加载与目标块的全部P2L映射条目包含的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合。
如图3所示,可知,目标块的全部P2L映射条目就是一组相邻的2条P2L映射条目,第一条为0x00000200、0x00001100,第二条为0x00000200、0xFF000080。并且该组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量为128,等于目标块的页数。
其中,从闪存中的L2P映射表中加载与目标块的全部P2L映射条目包含的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合,具体包括:
以一组相邻的2条P2L映射条目中第一条P2L映射条目的最低物理地址作为起始物理地址,以一组相邻的2条P2L映射条目的第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量减1作为上限,从0开始,以1为间隔与起始物理地址相加,先计算出多个目标物理地址。然后根据各个目标物理地址计算出P2L映射条目包含的所有逻辑地址,具体计算可以参照从P2L映射表中计算出目标物理地址对应的逻辑地址的流程。例如图3中,起始物理地址是0x00000200,上限是127,加0时,对应的目标物理地址为0x00000200,检索到P2L映射表中存在对应的逻辑地址0x00001100。加1时,目标物理地址为0x00000201,计算出对应的逻辑地址0x00001101。以此类推。
接着,从闪存的L2P映射表中加载与目标块的全部P2L映射条目包含的所有逻辑地址对应的L2P映射记录,作为目标L2P映射记录集合。
步骤S304,对目标块的全部P2L映射条目包含的物理地址依次加1,分别计算出目标块的全部P2L映射条目包含的物理地址及其对应的逻辑地址,以在每次计算时得到一条当前计算对应的P2L映射记录并删除上一次计算得到的P2L映射记录,并在每次计算得到一条P2L映射记录时,比较该条P2L映射记录和目标L2P映射记录集合中具有相同逻辑地址的L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作。
如图3所示,逻辑地址0x00001100在L2P映射表和P2L映射表中指向的物理地址均为0x00000200,表明该物理地址指向的页是有效数据,则产生移动操作。
步骤S305,当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
而逻辑地址0x00001103在L2P映射表中指向的物理地址为0x00004012,经过计算在P2L映射表中指向的物理地址为0x00000203,表明该物理地址指向的页是无效数据,执行擦除操作。
以上述例子来说,相较于现有技术中需要在P2L中设置标识当前物理地址是否有效的标识符号,而每次写数据时都需要维护该标识符号,本实施例提供的方案,无需维护标识符号,降低了资源开销。相较于现有技术中的P2L和L2P映射表结构,在进行垃圾回收时,都需要先将128条映射条目加载到存储装置的内存(即DRAM)中,要在内存中分配256条映射条目对应的空间,本实施例中仅需要加载128条L2P映射条目和2条P2L映射条目到内存中,然后每对比完一条再以计算的方式在内存中生成新的P2L映射条目,并且在每次计算时得到一条当前计算对应的P2L映射记录时就删除上一次计算得到的P2L映射记录,在垃圾回收时占用更少的内存资源。同时将由于垃圾回收时需要从闪存中读取P2L映射表,现有技术中,P2L映射表一条映射条目对应一条映射记录,多条P2L映射记录分散在不同的页中,因此可能对一个块的垃圾回收需要从多个页中读出多条P2L映射记录,而每一次读闪存都会造成读干扰现象,相较于现有技术中垃圾回收时引起的大范围(即更多页)的读干扰,本实施例只需要读更少的页,减低读干扰影响的范围。
第二方面,提供了一种存储装置,包括闪存、内存、处理器以及存储在闪存上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的一种存储装置的P2L数据管理方法中的各个步骤。
本实施例的发明构思与方法实施例发明构思相同,此处不在赘述。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的一种存储装置的P2L数据管理方法中的各个步骤。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

Claims (8)

1.一种存储装置的P2L数据管理方法,其特征在于,所述方法包括:
在写入数据时,将数据按页为单位进行分割,再按逻辑地址从低到高的顺序将数据依次写入闪存中具有多个连续空闲页的块内,存储后的每一页数据均对应一条P2L映射记录,则根据这些P2L映射记录生成一到多条P2L映射条目;如果写入时没有产生跨块写入,则P2L映射记录是连续的,能够合并成一组相邻的2条P2L映射条目;如果写入时产生了跨块写入,则存储在同一个块内的数据对应的P2L映射记录是连续的,所对应的全部P2L映射记录能够合并成一组相邻的2条P2L映射条目;因此,如果写入数据页时产生了跨块存储并分布在S个块,则共生成了2S或2S-1条P2L映射条目,基于P2L映射条目建立P2L映射表;
其中,每条P2L映射条目仅包括物理地址和逻辑映射数据,包括物理地址和逻辑映射数据所占的字节数相同;
对于仅由1条P2L映射记录组成的P2L映射条目,所述逻辑映射数据为用于指示所在P2L映射条目的物理地址对应的逻辑地址;
对于由多条P2L映射记录合并成的每一组相邻的2条P2L映射条目:
同一组中相邻的2条P2L映射条目的物理地址相同;
同一组中第一条P2L映射条目的逻辑映射数据为用于指示所在组的多条P2L映射记录中的最小逻辑地址;
同一组中第二条P2L映射条目的逻辑映射数据为用于指示所在组合并的多条P2L映射记录的数量数据;
所述方法还包括从P2L映射表中计算出目标物理地址对应的逻辑地址的流程,该流程具体包括:
检索P2L映射表,在能够直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,将该P2L映射条目的物理地址对应的逻辑地址作为目标物理地址对应的逻辑地址;
检索P2L映射表,在不能直接从P2L映射条目的物理地址中检索到目标物理地址的情况下,比对目标物理地址和各映射条目所表示的物理地址范围来判断该目标物理地址PAA是否落在某一组相邻的2条P2L映射条目所表示的物理地址范围内;
对于某个合并的多条P2L映射记录的数量为N的一组相邻的2条P2L映射条目,其第一条P2L映射条目中存储的物理地址PAA1,逻辑地址为LAA1,当PAA>PAA1,且PAA<=PAA1+N-1,则表示目标物理地址命中了P2L映射表中的一组相邻的2条P2L映射条目,目标物理地址PAA对应的逻辑地址LAA的计算方法为:LAA=LAA1+PAA-PAA1,通过计算即可完成对逻辑地址的寻址;
在执行垃圾回收操作时,所述方法还包括:
获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块;
获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目;
从与所述块首物理地址同属一个目标块的全部P2L映射条目中计算出各P2L映射条目包含的各物理地址及其对应的逻辑地址,以恢复该目标块所有的P2L映射记录,作为目标P2L映射记录集合;
从闪存中的L2P映射表中加载与目标P2L映射记录集合中对应的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合;
比较目标P2L映射记录集合和目标L2P映射记录集合二者中,具有相同逻辑地址的P2L映射记录和L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作;
当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
2.根据权利要求1所述的一种存储装置的P2L数据管理方法,其特征在于,所述数量数据的最高前N位为预设的标志符号,所述数量数据除了最高前N位之外的其他位共同组成的数用于指示所在组合并的多条P2L映射记录的数量,N为自然数。
3.根据权利要求2所述的一种存储装置的P2L数据管理方法,其特征在于,所述方法还包括:
在写入数据时,跳过逻辑地址中的最高前N位与预设的标志符号相同的逻辑地址范围。
4.根据权利要求1所述的一种存储装置的P2L数据管理方法,其特征在于,在执行垃圾回收操作时,所述方法还包括:
获取目标块的块首物理地址;所述目标块为需要进行垃圾回收的块;
获取P2L映射表中与所述块首物理地址同属一个目标块的全部P2L映射条目;
检测到同属一个目标块的全部P2L映射条目仅包括属于同一组相邻的2条P2L映射条目,并且根据该组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量等于目标块的页数时,从闪存中的L2P映射表中加载与目标块的全部P2L映射条目包含的所有逻辑地址对应的L2P映射记录到内存中,作为目标L2P映射记录集合;
对目标块的全部P2L映射条目包含的物理地址依次加1,分别计算出目标块的全部P2L映射条目包含的物理地址及其对应的逻辑地址,以在每次计算时得到一条当前计算对应的P2L映射记录并删除上一次计算得到的P2L映射记录,并在每次计算得到一条P2L映射记录时,比较该条P2L映射记录和目标L2P映射记录集合中具有相同逻辑地址的L2P映射记录,如果二者都指向相同的物理地址,表明该物理地址指向的页是有效数据,则产生移动操作;
当该目标块中的有效数据都已经被移到新的地址后,执行擦除操作,完成该目标块的垃圾回收。
5.根据权利要求1所述的一种存储装置的P2L数据管理方法,其特征在于,所述方法还包括:
在写入数据时,如果写入数据的页数为N,存储装置中具有多个连续空闲页的块中的连续空闲页数量为M,且N>M时,则需要跨块存储,即需要剩余的数据页按逻辑地址从低到高的顺序将数据依次写入其他具有多个连续空闲页的块内,直至所有数据页均被写入存储装置中;
如果写入数据页时产生了跨块存储,则每一组相邻的2条P2L映射条目中第二条P2L映射条目的逻辑映射数据指示所在组合并的多条P2L映射记录的数量即为相应块中所存储数据页的数量。
6.根据权利要求1所述的一种存储装置的P2L数据管理方法,其特征在于:
所述每一组相邻的2条P2L映射条目存储了若干个连续的P2L映射记录;如果一条物理地址PAA为P的P2L映射记录MPRec1,其逻辑地址LAA为L,如果另外一条物理地址PAA为P+1的P2L映射记录MPRec2,其逻辑地址LAA为L+1,则P2L映射记录MPRec1和MPRec2是连续的,如果另外一条物理地址PAA为P+2的P2L映射记录MPRec3,其逻辑地址LAA为L+2,则P2L映射记录MPRec1、MPRec2和MPRec3是连续的,以此类推,有N条P2L映射记录,其物理地址PAA的值从低到高是按照P、P+1、P+2、…、P+N-1连续增长的,相邻P2L映射记录中记录的物理地址的值相差1,而其逻辑地址LAA的值也是从低到高是按照L、L+1、L+2、…、L+N-1连续增长的,相邻P2L映射记录中记录的逻辑地址的值相差1,这样的N条P2L映射记录即为连续的P2L映射记录。
7.一种存储装置,其特征在于,包括闪存、内存、处理器以及存储在闪存上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的一种存储装置的P2L数据管理方法中的各个步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的一种存储装置的P2L数据管理方法中的各个步骤。
CN202410304738.0A 2024-03-18 2024-03-18 一种存储装置的p2l数据管理方法及装置 Active CN117891415B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410304738.0A CN117891415B (zh) 2024-03-18 2024-03-18 一种存储装置的p2l数据管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410304738.0A CN117891415B (zh) 2024-03-18 2024-03-18 一种存储装置的p2l数据管理方法及装置

Publications (2)

Publication Number Publication Date
CN117891415A CN117891415A (zh) 2024-04-16
CN117891415B true CN117891415B (zh) 2024-05-24

Family

ID=90651071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410304738.0A Active CN117891415B (zh) 2024-03-18 2024-03-18 一种存储装置的p2l数据管理方法及装置

Country Status (1)

Country Link
CN (1) CN117891415B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013069859A1 (ko) * 2011-11-09 2013-05-16 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법
CN107066393A (zh) * 2017-01-12 2017-08-18 安徽大学 提高地址映射表中映射信息密度的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372341B2 (en) * 2017-06-28 2019-08-06 Western Digital Technologies, Inc. Non-volatile storage device system with page based remapping
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013069859A1 (ko) * 2011-11-09 2013-05-16 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법
CN107066393A (zh) * 2017-01-12 2017-08-18 安徽大学 提高地址映射表中映射信息密度的方法

Also Published As

Publication number Publication date
CN117891415A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
US10649910B2 (en) Persistent memory for key-value storage
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
US9898200B2 (en) Memory device having a translation layer with multiple associative sectors
CN107066393B (zh) 提高地址映射表中映射信息密度的方法
US8024545B2 (en) Efficient prefetching and asynchronous writing for flash memory
US9684462B2 (en) Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory
US8117406B2 (en) Method of storing data into flash memory in a DBMS-independent manner using the page-differential
US9053013B2 (en) Data storage device and operating method thereof
CN112395212B (zh) 减少键值分离存储***的垃圾回收和写放大的方法及***
US20030229753A1 (en) Flash memory file system
CN112860594B (zh) 一种固态盘地址重映射方法、设备及固态盘
US20100318726A1 (en) Memory system and memory system managing method
CN110134645B (zh) 文件***存储管理方法、读取方法、管理装置和读取装置
CN113253926A (zh) 提升新型存储器的查询和存储性能的存储内索引构建方法
CN113190180A (zh) 一种基于混合介质的存储装置及分布式存储***
KR101936364B1 (ko) 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
Ross Modeling the performance of algorithms on flash memory devices
CN117891415B (zh) 一种存储装置的p2l数据管理方法及装置
CN112395260B (zh) 一种数据存储方法及介质
CN113434438A (zh) 一种提高智能卡flash写入寿命的方法
KR101056909B1 (ko) 플래시 메모리 장치 및 플래시 메모리 장치에서의 메모리 관리 방법
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR100868674B1 (ko) 플래시메모리 관리방법
CN112100091B (zh) 二级映射表数据映射方法、装置、存储介质及电子设备

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