CN112148645A - 去分配命令处理方法及其存储设备 - Google Patents

去分配命令处理方法及其存储设备 Download PDF

Info

Publication number
CN112148645A
CN112148645A CN201910576181.5A CN201910576181A CN112148645A CN 112148645 A CN112148645 A CN 112148645A CN 201910576181 A CN201910576181 A CN 201910576181A CN 112148645 A CN112148645 A CN 112148645A
Authority
CN
China
Prior art keywords
command
deallocation
ftl table
data
logical 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.)
Pending
Application number
CN201910576181.5A
Other languages
English (en)
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.)
Beijing Starblaze Technology Co ltd
Original Assignee
Beijing Starblaze 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 Beijing Starblaze Technology Co ltd filed Critical Beijing Starblaze Technology Co ltd
Priority to CN201910576181.5A priority Critical patent/CN112148645A/zh
Publication of CN112148645A publication Critical patent/CN112148645A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了去分配命令处理方法及其存储设备。所公开的去分配命令的处理方法包括以下步骤:获取命令;响应于收到去分配命令,为所述去分配命令分配存储单元;在所分配的存储单元中记录根据去分配命令生成的去分配日志;根据去分配命令更新FTL表。

Description

去分配命令处理方法及其存储设备
技术领域
本申请涉及存储技术领域,尤其涉及去分配命令处理方法及其存储设备。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享CE(Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。FTL表的数据项记录了固态存储设备中以数据单元为单位的地址映射关系。在一个例子中,FTL表中的逻辑页对应4KB存储空间,而物理页的存储空间也为4KB(还包括附加的带外存储空间)。FTL表为每个4KB的数据单元提供一条记录,以记录其逻辑地址到物理地址的映射。在另一个例子中,数据单元对应的存储空间大小和物理页的存储空间大小不同,例如物理页可容纳多个数据单元,数据单元对应4KB的存储空间,而物理页的存储空间能够容纳多个数据单元(例如4个)。
FTL表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。
在ATA8-ACS2中定义了Trim(修剪)命令,具有相同或类似含义的命令在SCSI(Small Computer System Interface,小型计算机系统接口)规范中被称为UNMAP(解除映射),而在NVMe规范中被称为Deallocate(去分配)命令。下文中,用“去分配”来指示具有同ATA8-ACS2的“修剪”、SCSI的“解除映射”、NVMe的“去分配”具有相同或相似功能的数据集管理命令,以及也指示在其他或将来的协议、规范或技术中出现的具有相同或相似功能的命令。
在去分配命令中,描述了逻辑地址范围。在执行了去分配命令后,可以有不同的效果。例如,(1)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的是确定的;(2)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的结果是全0;(3)执行去分配命令后,(执行对该逻辑地址范围的其他写入操作之前)再读取去分配命令所指示的逻辑地址范围时,所得到的结果可以是任意值。在去分配命令或者其他命令中可设置或选择去分配命令的执行效果。
发明内容
通过使用去分配命令,主机能够告知固态硬盘哪些逻辑地址空间不再存储有效数据,从而存储设备在回收存储空间时,不必搬移已经失效的数据。然而,为了更快地响应去分配命令,通常根据收到的去分配命令而更新FTL表。然而FTL存储在内存中,当存储设备掉电时,需要将FTL表记录在NVM中。随着固态存储设备的存储容量变大,FTL表的尺寸随之增大,掉电时无法在短时间内将完整的FTL表保存在NVM中。并且,在处理去分配命令时,没有同被去分配的逻辑地址相对应数据写入NVM,从而这部分逻辑地址也没有机会连同数据被写入NVM。因而,需要将去分配命令对FTL表的更新有效地存储到NVM中,既不延长存储设备掉电时需要FTL表的时间,在意外掉电时也能保障FTL表的完整性。
根据本申请的第一方面,提供了根据本申请第一方面的第一去分配命令的处理方法,其中,包括如下步骤:获取命令;响应于收到去分配命令,为所述去分配命令分配存储单元;在所分配的存储单元中记录根据去分配命令生成的去分配日志;根据去分配命令更新FTL表。
根据本申请第一方面的第一去分配命令的处理方法,提供了本申请第一方面的第二去分配命令的处理方法,其中,若去分配命令指示一个或多个逻辑地址实施去分配,则在FTL表中记录一个或多个逻辑地址被去分配。
根据本申请第一方面的第二去分配命令的处理方法,提供了本申请第一方面的第三去分配命令的处理方法,其中,在FTL表对应于去分配命令所访问的一个或多个逻辑地址的各表项中记录该逻辑地址被去分配。
根据本申请第一方面的第一至第三任一项的去分配命令的处理方法,提供了本申请第一方面的第四去分配命令的处理方法,其中,所述分配日志的一个或多个条目中记录了去分配命令指示的一个或多个逻辑地址范围。
根据本申请第一方面的第一去分配命令的处理方法,提供了本申请第一方面的第五去分配命令的处理方法,其中,所分配的存储单元来自用于记录写命令对应数据的存储区域。
根据本申请第一方面的第一至第五任一项的去分配命令的处理方法,提供了本申请第一方面的第六去分配命令的处理方法,其中,FTL表中不记录去分配日志所在的存储单元的物理地址。
根据本申请第一方面的第一至第六任一项的去分配命令的处理方法,提供了本申请第一方面的第七去分配命令的处理方法,其中,响应于收到写命令,为写命令分配未使用的存储单元,在FTL表中记录写命令的逻辑地址与为写命令分配的存储单元的物理地址的对应关系。
根据本申请第二方面,提供了根据本申请第二方面的第一重建FTL表的方法,其中,包括如下步骤:响应于存储设备上电,扫描被写入数据的存储单元;从被扫描的存储单元中读出数据,若读出的数据记录的是去分配日志,则根据去分配日志指示的一个或多个被去分配的逻辑地址范围更新FTL表。
根据本申请第二方面的第一重建FTL表的方法,提供了本申请第二方面的第二重建FTL表的方法,其中,扫描的存储单元是具有最小物理地址的存储单元,或所述指定存储单元的物理地址被记录。
根据本申请第二方面的第一或第二重建FTL表的方法,提供了本申请第二方面的第三重建FTL表的方法,其中,若从被扫描的存储单元中读出的数据是同写命令对应的数据以及同该数据关联的逻辑地址,根据该存储单元的物理地址与存储单元记录的逻辑地址更新FTL表。
根据本申请第二方面的第三重建FTL表的方法,提供了本申请第二方面的第四重建FTL表的方法,其中,若扫描的存储单元对应的逻辑地址与已被扫描的物理地址对应的逻辑地址重合,则在FTL表中更新与所述逻辑地址对应的物理地址。
根据本申请第二方面的第四重建FTL表的方法,提供了本申请第二方面的第五重建FTL表的方法,其中,在FTL表的对应一个或多个被去分配的逻辑地址范围的表项中记录该表项对应的逻辑地址被去分配。
根据本申请第二方面的第一至第五任一项重建FTL表的方法,提供了本申请第二方面的第六重建FTL表的方法,其中,扫描指定存储单元的下一个存储单元,若从下一存储单元中读出的数据记录的是去分配日志,则根据去分配日志指示的一个或多个被去分配的逻辑地址范围更新FTL表;
根据本申请第二方面的第一至第六任一项重建FTL表的方法,提供了本申请第二方面的第七重建FTL表的方法,其中,响应于完成了对存储设备的所有被写入数据的存储单元的扫描,得到的FTL表即为重建后的FTL表。
根据本申请第二方面的第七重建FTL表的方法,提供了本申请第二方面的第八重建FTL表的方法,其中,通过识别物理地址未被写入数据来确定已经扫描了所有已被写入数据的存储单元。
根据本申请第二方面的第一至第八任一项重建FTL表的方法,提供了本申请第二方面的第九重建FTL表的方法,其中,最后更新的存储单元的物理地址被记录。
根据本申请第二方面的第九重建FTL表的方法,提供了本申请第二方面的第十重建FTL表的方法,其中,按物理地址递减的顺序扫描存储单元,重建FTL表。
根据本申请第二方面的第十重建FTL表的方法,提供了本申请第二方面的第十一重建FTL表的方法,其中,在进行FTL表的表项更新时,每个表项仅被更新一次。
根据本申请第二方面的第十一重建FTL表的方法,提供了本申请第二方面的第十二重建FTL表的方法,其中,若访问的存储单元中记录了分配日志,所述分配日志中记录的去分配的逻辑地址在FTL表中对应的表项已被更新过,则不再对所述表项进行更新。
根据本申请第二方面的第十至十二任一项重建FTL表的方法,提供了本申请第二方面的第十三重建FTL表的方法,其中,被写入数据的存储单元都已被扫描,此时得到的FTL表即为重建后的FTL表。
根据本申请第三方面,提供了根据本申请第三方面的第一存储设备,其中,包括控制部件与非易失存储介质,所述控制部件执行第一方面至第二方面的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术的固态存储设备的框图;
图2是根据本申请实施例提供的去分配日志的示意图;
图3A-3D展示了根据本申请实施例提供的处理IO命令与去分配命令的示意图;
图4是根据本申请实施例提供的处理去分配命令的流程图;
图5A是根据本申请实施例提供的非易失性存储器数据记录示意图;
图5B-5E是根据本申请实施例提供的FTL表的示意图;
图6是根据本申请实施例提供的重建FTL表的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请的实施例,响应于收到去分配命令,除了根据去分配命令相应地在FTL表中标记去分配命令所指示的逻辑地址被去分配,还在存储设备的用于存储用户数据的NVM中记录去分配日志。去分配日志记录了去分配命令,或者根据去分配命令生成的被去分配的一个或多个逻辑地址。
图2展示了根据本申请实施例的去分配日志的示意图。
作为举例,图2的去分配日志包括多个条目,每个条目记录了“TRIM范围”(TRIM范围0、TRIM范围1、……TRIM范围4)。“TRIM范围”代表去分配命令所指示的连续的逻辑地址范围,由起始逻辑地址与结尾逻辑地址构成,或者由起始逻辑地址与长度构成。去分配日志的每个条目具有例如指定的大小。
图3A-3D展示了根据本申请的处理IO命令与去分配命令的示意图。
命令队列展示了存储设备按顺序收到的命令,命令队列中越下方的命令是越早收到的ming零,而越上方的命令是越晚收到的命令。图3A中,命令队列中的命令W1(LBA1)指示存储设备收到了更新逻辑地址LBA1的写命令W1。
存储设备还包括FTL表与NVM。FTL表的每个表项由逻辑地址(LBA1、LBA2、……)索引,表项的内容是同逻辑地址对应的物理地址(PBA)。NVM包括多个存储数据的单元,由物理地址索引(PBA1、PBA2、……),NVM的存储数据的单元中存储了数据,以及还存储了同所存储数据关联的逻辑地址。例如,参看图3A,由物理地址PBA1索引的存储数据的单元记录数据(由“Data”指示),还记录了逻辑地址“LBA1”,其指示了在物理地址“PBA1”处存储的数据的逻辑地址是“LBA1”,而FTL表中则指示了逻辑地址为“LBA1”的数据被存储在物理地址为“PBA1”存储数据的单元(以下简称为“存储单元”)中。
继续参看图3A,响应于收到了命令W1(LBA1),其中“W”指示该命令为写命令,“(LBA1)”指示要写入数据的逻辑地址。存储设备为该写命令从NVM中分配尚未使用的存储单元,所分配的存储单元的物理地址为“PBA1”。在FTL表中,记录同逻辑地址“LBA1”对应的物理单元为“PBA1”,将命令W1(LBA1)所对应的数据以及逻辑地址“LBA1”写入所分配的物理地址为“PBA1”的存储单元。至此完成了对命令W1(LBA1)的处理。
参看图3B,在收到了命令W1(LBA1)之后,又依次收到了命令W2(LBA2)与命令W3(LBA3),分别指示向逻辑地址LBA2写入数据,以及向逻辑地址LBA3写入数据。存储设备为这两个写命令从NVM中分配尚未使用的存储单元,所分配的存储单元的物理地址分别为“PBA2”与“PBA3”。在FTL表中,记录同逻辑地址“LBA2”对应的物理单元为“PBA2”,以及同逻辑地址“LBA3”对应的物理单元为“PBA3”,将命令W2(LBA2)所对应的数据以及逻辑地址“LBA2”写入所分配的物理地址为“PBA2”的存储单元,以及将命令W3(LBA3)所对应的数据以及逻辑地址“LBA3”写入所分配的物理地址为“PBA3”的存储单元。
参看图3C,接下来收到了去分配命令“TRIM(LBA1,LBA2)”,其指示对逻辑地址LBA1与逻辑地址LBA2实施去分配。作为响应,存储设备在FTL表中,记录逻辑地址LBA1与逻辑地址LBA2被去分配。例如,以FTL表项记录的特殊值来表示同该表项对应的逻辑地址被去分配。
以及为该去分配命令分配尚未使用的存储单元,所分配的存储单元的物理地址为“PBA 4”,在所分配的存储单元中记录根据该去分配命令“TRIM(LBA1,LBA2)”所生成的去分配日志。该去分配日志记录了对逻辑地址LBA1与逻辑地址LBA2实施去分配。可以理解地,图3C中的去分配命令“TRIM(LBA1,LBA2)”对逻辑地址LBA1/LBA2实施去分配,而其他的去分配命令可描述其他更多或更少的逻辑地址,相应地,生成的去分配日志中也相应记录对去分配命令所指示的一个或多个逻辑地址范围实施去分配。
继续参看图3D,在收到了去分配命令“TRIM(LBA1,LBA2)”之后,又收到了写命令W4(LBA1’),其指示对逻辑地址LBA1写入数据。由于NVM中物理地址PBA1的存储单元已经记录了向逻辑地址LBA1写入的数据,因而在写命令W4(LBA1’)中用“LBA1’”同之前的逻辑地址LBA1加以区分。作为响应,存储设备为该写命令从NVM中分配尚未使用的存储单元,所分配的存储单元的物理地址为“PBA5”。在FTL表中,记录同逻辑地址“LBA1’”(其值同逻辑地址LBA1相同,使用FTL表的用于逻辑地址LBA1的表项)对应的物理单元为“PBA5”,将命令W5(LBA1’)所对应的数据以及逻辑地址“LBA1’”写入所分配的物理地址为“PBA5”的存储单元。
可以理解地,此时,NVM中物理地址为“PBA1”的存储单元与物理地址为“PBA5”的存储单元均记录了逻辑地址(LBA1/LBA1’),由于物理地址为“PBA5”的存储单元时间上在后被写入,因而相对于物理地址为“PBA1”的存储单元,物理地址为“PBA5”的存储单元记录的逻辑地址LBA1’与物理地址“PBA 5”的对应关系覆盖了逻辑地址LBA1与物理地址“PBA 1”的对应关系。
图4是根据本申请实施例的处理去分配命令的流程图。
响应于收到去分配命令,根据去分配命令生成去分配日志(410),所生成的去分配日志的一个或多个条目记录了该去分配命令要访问的一个或多个逻辑地址范围。从存储设备的NVM的用于记录写命令对应数据的存储区域分配可用的存储单元,将生成的去分配日志写入所分配的存储单元(420)。可选地,FTL表中不记录该去分配日志所在的存储单元的物理地址。
根据去分配命令更新FTL表(430),在FTL表对应于去分配命令所访问的一个或多个逻辑地址的各表项中记录该逻辑地址被去分配。例如,以FTL表项记录的特殊值来表示同该表项对应的逻辑地址被去分配。至此去分配命令被处理完成(440)。
根据本申请的实施例处理去分配命令,使得在存储上电后,得以重建FTL表。图5A-5E展示了根据本申请实施例重建FTL表的示意图。
存储设备的NVM中记录了数据、同数据对应的逻辑地址以及去分配日志。而存储设备上电时,FTL表为空。为使存储设备正常工作,需要重建FTL表。
图5A展示了NVM中记录的数据。参看图5A,NVM的物理地址为PBA1的存储单元中记录了数据(DATA)以及对应的逻辑地址(LBA1),物理地址为PBA2的存储单元中记录了数据(DATA)以及对应的逻辑地址(LBA2),物理地址为PBA3的存储单元中记录了数据(DATA)以及对应的逻辑地址(LBA3),物理地址为PBA4的存储单元中记录了去分配日志,指示逻辑地址LBA1与LBA2被去分配,以及物理地址为PBA5的存储单元中记录了数据(DATA)以及对应的逻辑地址(LBA1’)。存储设备的其他存储单元未记录数据。
图5B-5D展示了FTL表的示意图。
为重建FTL表,存储设备从指定存储单元(例如,物理地址为PBA1的存储单元)开始重建FTL表。存储设备访问物理地址为PBA1的存储单元,从中获得逻辑地址LBA1,从而在FTL表相应地记录逻辑地址LBA1对应的物理地址为PBA1(图5B)。
可以理解地,物理地址PBA1、PBA2、PBA3……PBA5依次为递增且相邻的物理地址,从而根据物理地址PBA1得以获得后续的其他所有物理地址。可选地,一些物理地址对应的存储单元已损坏,损坏的存储单元不被使用。
依然可以理解地,指定存储单元(例如,物理地址为PBA1的存储单元)是具有例如最小物理地址的存储单元,或者存储设备的记录了该指定存储单元的物理地址。
参看图5C,接下来,存储设备递增已被访问的物理地址PBA1,得到物理地址PBA2,并访问物理地址为PBA2的存储单元,从中获得逻辑地址LBA2,从而在FTL表相应地记录逻辑地址LBA2对应的物理地址为PBA2。类似地,再访问物理地址为PBA3的存储单元得到逻辑地址LBA3,并在FTL表记录逻辑地址LBA3对应的物理地址为PBA3。
参看图5D,接下来,存储设备递增已被访问的物理地址PBA3,得到物理地址PBA4,并识别出物理地址PBA4的存储单元存储了去分配日志。根据去分配日志,知晓逻辑地址LBA1与逻辑地址LBA2被实施去分配。从而在FTL表中,在对应于逻辑地址LBA1与LBA2的表项中标记其被去分配。
参看图5E,接下来,存储设备递增已被访问的物理地址PBA4,得到物理地址PBA5,并访问物理地址为PBA5的存储单元,从中获得逻辑地址LBA1’,从而在FTL表相应地记录逻辑地址LBA1’(其值为LBA1)对应的物理地址为PBA5。
至此,存储设备完成了对FTL表的重建,并可以正常工作来响应命令。图5E展示了同3D相同的FTL表。
可以理解地,存储设备通过识别物理地址PBA6未被写入数据来确定已经访问了所有已被写入数据的存储单元,进而识别完成了对FTL表的重建。可选地,存储设备记录了哪些存储单元应当在重建FTL表时被访问。
图6展示了根据本申请实施例重建FTL表的流程图。
响应于存储设备上电,而开始重建FTL表(610)。按例如物理地址递增的顺序,扫描存储设备的NVM中的被写入数据的各存储单元。可选地,存储单元被写入数据时还记录时间戳,重建FTL表,按时间戳从旧到新的顺序访问各个被写入数据的存储单元。
根据从存储单元中读出的数据(620),若读出的数据是同写命令对应的数据以及同对应关联的逻辑地址,根据该存储单元的物理地址与存储单元记录的逻辑地址更新FTL表(630),在FTL表的以该存储单元记录的逻辑地址为索引的表项中记录该存储单元的物理地址。若从存储单元读出的数据记录的是去分配日志,则根据去分配日志指示的一个或多个被去分配的逻辑地址范围更新FTL表(640),在FTL表的对应该一个或多个被去分配的逻辑地址范围的表项中记录该表项对应的逻辑地址被去分配。
以及扫描存储设备的下一个存储设备,并重复上述过程,直到完成了对存储设备的所有被写入数据的存储单元的扫描(650)。此时得到的FTL表即为重建后的FTL表。
根据本申请的又一实施例,存储设备记录了被最后更新的存储单元的物理地址,以及重建FTL表时,按照物理地址递增的顺序扫描存储设备的NVM的被写入数据的存储单元。依然可选地,重建FTL表,按时间戳从新到旧的顺序扫描各个被写入数据的存储单元。在更新FTL表的表项时,每个表项仅被更新一次。也参看图5A,按物理地址PBA5到PBA1的顺序扫描存储单元,首先在FTL表中记录同逻辑地址LBA1’对应的物理地址为PBA5。接下来,从物理地址PBA4的存储单元读取去分配日志,其中记录了逻辑地址LBA1与LBA2被去分配。由于逻辑地址LBA1(其值与LBA1’相同)在FTL表中对应的表项已经被更新过一次,不再对该表项进行更新,以及在FTL表中记录逻辑地址LBA2被实施去分配。接下来,从物理地址PBA3的存储单元中读到逻辑地址LBA3,在FTL表中记录同逻辑地址LBA3对应的物理地址为PBA3。接下来,从物理地址PBA2的存储单元中读到逻辑地址LBA2,由于逻辑地址LBA2在FTL表中对应的表项已经被更新过一次(记录该逻辑地址被去分配),不再对该表项进行更新。接下来,从物理地址PBA1的存储单元中读到逻辑地址LBA1,由于逻辑地址LBA1在FTL表中对应的表项已经被更新过一次(记录的物理地址为PBA 5),不再对该表项进行更新。由于存储设备被写入数据的存储单元都已被扫描,此时得到的FTL表即为重建后的FTL表。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种去分配命令的处理方法,其特征在于,包括以下步骤:
获取命令;
响应于收到去分配命令,为所述去分配命令分配存储单元;
在所分配的存储单元中记录根据去分配命令生成的去分配日志;
根据去分配命令更新FTL表。
2.如权利要求1所述的去分配命令的处理方法,其特征在于,若去分配命令指示一个或多个逻辑地址实施去分配,则在FTL表中记录一个或多个逻辑地址被去分配。
3.如权利要求1-2任一项所述的去分配命令的处理方法,其特征在于,所述分配日志的一个或多个条目中记录了去分配命令指示的一个或多个逻辑地址范围。
4.如权利要求1-3任一项所述的去分配命令的处理方法,其特征在于,所分配的存储单元来自用于记录写命令对应数据的存储区域。
5.如权利要求1-4任一项所述的去分配命令的处理方法,其特征在于,响应于收到写命令,为写命令分配未使用的存储单元,在FTL表中记录写命令的逻辑地址与为写命令分配的存储单元的物理地址的对应关系。
6.一种重建FTL表的方法,其特征在于,包括如下步骤:
响应于存储设备上电,扫描被写入数据的存储单元;
从被扫描的存储单元中读出数据,若读出的数据记录的是去分配日志,则根据去分配日志指示的一个或多个被去分配的逻辑地址范围更新FTL表。
7.如权利要求6所述的重建FTL表的方法,其特征在于,若从被扫描的存储单元中读出的数据是同写命令对应的数据以及同该数据关联的逻辑地址,根据该存储单元的物理地址与存储单元记录的逻辑地址更新FTL表。
8.如权利要求7所述的重建FTL表的方法,其特征在于,若扫描的存储单元对应的逻辑地址与已被扫描的物理地址对应的逻辑地址重合,则在FTL表中更新与所述逻辑地址对应的物理地址。
9.如权利要求6-8任一项所述的重建FTL表的方法,其特征在于,响应于完成了对存储设备的所有被写入数据的存储单元的扫描,得到的FTL表即为重建后的FTL表。
10.一种存储设备,其特征在于,包括控制部件与非易失存储介质,所述控制部件执行根据权利要求1-9之一所述的方法。
CN201910576181.5A 2019-06-28 2019-06-28 去分配命令处理方法及其存储设备 Pending CN112148645A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910576181.5A CN112148645A (zh) 2019-06-28 2019-06-28 去分配命令处理方法及其存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910576181.5A CN112148645A (zh) 2019-06-28 2019-06-28 去分配命令处理方法及其存储设备

Publications (1)

Publication Number Publication Date
CN112148645A true CN112148645A (zh) 2020-12-29

Family

ID=73870122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910576181.5A Pending CN112148645A (zh) 2019-06-28 2019-06-28 去分配命令处理方法及其存储设备

Country Status (1)

Country Link
CN (1) CN112148645A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676882A (zh) * 2008-09-16 2010-03-24 美光科技公司 存储器装置的内嵌映射信息
CN102999430A (zh) * 2011-09-16 2013-03-27 苹果公司 处理具有非易失性存储器的系统的未完全关闭
CN106354615A (zh) * 2015-07-21 2017-01-25 北京忆恒创源科技有限公司 固态硬盘日志生成方法及其装置
US20170242584A1 (en) * 2016-02-18 2017-08-24 SK Hynix Inc. Method of dynamic table journaling
CN107544912A (zh) * 2016-06-29 2018-01-05 北京忆恒创源科技有限公司 一种日志记录方法、加载方法及其装置
CN107797938A (zh) * 2016-09-05 2018-03-13 北京忆恒创源科技有限公司 加快去分配命令处理的方法与存储设备
CN108710472A (zh) * 2018-04-27 2018-10-26 北京大学深圳研究生院 用于存储单元内部的磨损均衡管理方法及分布式存储系统
CN109086219A (zh) * 2017-06-14 2018-12-25 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
CN109840048A (zh) * 2017-11-29 2019-06-04 北京忆恒创源科技有限公司 存储命令处理方法及其存储设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676882A (zh) * 2008-09-16 2010-03-24 美光科技公司 存储器装置的内嵌映射信息
CN102999430A (zh) * 2011-09-16 2013-03-27 苹果公司 处理具有非易失性存储器的系统的未完全关闭
CN106354615A (zh) * 2015-07-21 2017-01-25 北京忆恒创源科技有限公司 固态硬盘日志生成方法及其装置
US20170242584A1 (en) * 2016-02-18 2017-08-24 SK Hynix Inc. Method of dynamic table journaling
CN107544912A (zh) * 2016-06-29 2018-01-05 北京忆恒创源科技有限公司 一种日志记录方法、加载方法及其装置
CN107797938A (zh) * 2016-09-05 2018-03-13 北京忆恒创源科技有限公司 加快去分配命令处理的方法与存储设备
CN109086219A (zh) * 2017-06-14 2018-12-25 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
CN109840048A (zh) * 2017-11-29 2019-06-04 北京忆恒创源科技有限公司 存储命令处理方法及其存储设备
CN108710472A (zh) * 2018-04-27 2018-10-26 北京大学深圳研究生院 用于存储单元内部的磨损均衡管理方法及分布式存储系统

Similar Documents

Publication Publication Date Title
US8205063B2 (en) Dynamic mapping of logical ranges to write blocks
US10339046B1 (en) Data moving method and storage controller
CN106448737B (zh) 读取闪存数据的方法、装置以及固态驱动器
US8452940B2 (en) Optimized memory management for random and sequential data writing
CN106354615B (zh) 固态硬盘日志生成方法及其装置
US9645918B2 (en) Storage devices including non-volatile memory and memory controller and methods of allocating write memory blocks
CN109086219B (zh) 去分配命令处理方法及其存储设备
CN107797934B (zh) 处理去分配命令的方法与存储设备
US11620066B2 (en) Storage device with expandible logical address space and operating method thereof
CN109976664B (zh) 固态存储设备的日志数据组织
CN109558334B (zh) 垃圾数据回收方法及固态存储设备
CN107797938B (zh) 加快去分配命令处理的方法与存储设备
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
CN110554833B (zh) 存储设备中并行处理io命令
CN109840048B (zh) 存储命令处理方法及其存储设备
CN108628762B (zh) 一种固态存储设备及其处理io命令的方法
CN109815157B (zh) 编程命令处理方法与装置
CN110865945B (zh) 存储设备的扩展地址空间
CN112148626A (zh) 压缩数据的存储方法及其存储设备
CN110096452B (zh) 非易失随机访问存储器及其提供方法
WO2018041258A1 (zh) 去分配命令处理的方法与存储设备
CN110968527A (zh) Ftl提供的缓存
CN115328819A (zh) 固态存储设备及写/读数据的方法
US11314428B1 (en) Storage system and method for detecting and utilizing wasted space using a file system
CN112148645A (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