CN114968849B - 提高编程缓存利用率的方法及其设备 - Google Patents

提高编程缓存利用率的方法及其设备 Download PDF

Info

Publication number
CN114968849B
CN114968849B CN202111608451.XA CN202111608451A CN114968849B CN 114968849 B CN114968849 B CN 114968849B CN 202111608451 A CN202111608451 A CN 202111608451A CN 114968849 B CN114968849 B CN 114968849B
Authority
CN
China
Prior art keywords
data
programming
command
physical address
programming command
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
CN202111608451.XA
Other languages
English (en)
Other versions
CN114968849A (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.)
Suzhou Qiheng Rongzhi Information Technology Co ltd
Original Assignee
Suzhou Qiheng Rongzhi Information 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 Suzhou Qiheng Rongzhi Information Technology Co ltd filed Critical Suzhou Qiheng Rongzhi Information Technology Co ltd
Priority to CN202111608451.XA priority Critical patent/CN114968849B/zh
Publication of CN114968849A publication Critical patent/CN114968849A/zh
Application granted granted Critical
Publication of CN114968849B publication Critical patent/CN114968849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode

Abstract

本申请提供了提高编程缓存利用率的方法及其设备。所提供的提高芯片内的编程数据缓存利用率的方法,包括:在所述编程数据缓存内存储要写入存储介质的第一数据;通过编程命令将所述编程数据缓存内的数据发送给存储介质;在所述编程命令执行完成前,释放所述第一数据占据的所述编程数据缓存的空间。

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,阻变存储器)、XPoint存储器等是常见的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”等。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。这些情况下,存储设备所接收的读/写命令指示逻辑地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的条目记录了存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。这些情况下,存储设备所接收的读/写命令指示物理地址。
主机提供给存储设备的命令可能访问FTL表的一个或多个条目所对应的逻辑地址空间。以及控制部件可能将从接口103接收的命令改变形态(例如,根据FTL条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。
存储设备包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN,Logic UNit)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。
图2展示出了大块的示意图。大块包括来自多个逻辑单元的每个的物理块。优选的,每个逻辑单元为大块提供一个物理块。作为举例,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,来自16个逻辑单元(LUN)的每一个。在图2的例子中,大块0包括来自16个逻辑单元(LUN)的每个的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以有多种其他方式来构造大块。
作为一种可选的方式,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。现有技术中有其他构造页条带的方式。图2中,物理页P0-0、物理页P0-1……与物理页P0-x构成了页条带0,其中物理页P0-0、物理P页0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
为向页条带写入数据,存储设备的控制部件(104)(参看图1)提供校验数据生成单元。以利用异或操作计算校验数据为例,对于包括N+1(N=15)个物理页的页条带,对N个物理页的用户数据计算异或(例如,(P0-0)XOR(P0-1)XOR(P0-2)XOR…XOR(P0-(N-1))),并将计算结果写入为页条带存储校验数据的物理页(例如P0-x)。可选地,在控制部件(104)中提供多个校验数据生成单元(例如,M个),以同时向M个页条带写入数据。校验数据生成单元包括校验数据缓存,用于存储校验数据计算过程的中间结果或最终结果。在申请号为201710326110.0、发明名称为页条带的数据组织以及向页条带写入数据的方法与装置的中国专利申请中提供了校验数据计算器(即校验数据生成单元)。依然可选地,校验数据生成单元包括多个校验数据缓存,从而可以并发地为多个页条带计算校验数据。
依然可选地,校验数据生成单元也用于根据页条带来恢复发生错误的数据。例如,若大块0的页条带0的物理页P0-2的数据出现错误或无法读出,为恢复物理页P0-2的数据,从页条带0读出除物理页P0-2之外的所有物理页的数据,校验数据生成单元对读出的这些物理页计算异或,最后留在校验数据缓存中的数据即为恢复出的物理页P0-2的数据。
图3展示了向存储介质写入数据的过程的示意图。
响应于收到主机发送给存储设备的写命令,控制部件的存储命令处理单元350生成同写命令对应的一个或多个介质接口命令来操作介质接口340向存储介质的大块0写入数据(图3中由(1)、(2)与(3)指示)。写命令要写入大块的数据被存储在数据缓存360中。数据缓存360位于控制部件104内部,或者由控制部件104外部的存储器(例如DRAM)提供。
伴随着介质接口命令提供给介质接口340,介质接口命令要写入的数据从数据缓存“流经”校验数据生成单元310。校验数据生成单元310利用校验数据缓存320的存储单元(322、324、326或328)之一,为写入大块0的数据计算校验数据(异或)。在大块0的某页条带的用户数据都被写入后,在校验数据缓存中得到的数据即为该页条带的校验数据。将该校验数据也通过介质接口340写入该页条带,从而该页条带被写满。
介质接口340将要写入的数据发送给大块0(图3中由(3)指示),介质接口340知晓已经将要写入的数据发送给大块0。大块0所在的一个或多个NVM芯片处理写入数据的编程命令需要时间(例如,几十微秒)。NVM芯片还就编程命令处理完成通知介质接口340(图3中由(4)指示)。介质接口340响应于识别出编程命令处理完成,根据编程命令的指示(成功或失败),通知存储命令处理单元(350)。响应于向页条带写入数据的所有编程命令都执行成功,存储命令处理单元350得以释放数据缓存360中存储的已写入页条带的数据(图3中由(6)指示),以及释放所使用的校验数据缓存320的存储单元。若向页条带写入数据的一个或多个编程命令执行失败,存储命令处理单元350从数据缓存360获取执行失败的编程命令所对应的待写入页条带的数据,并生成新的介质接口命令将数据写入其他的页条带。
发明内容
随着主机同存储设备的接口协议速度持续提升,基于PCIeGen4、PCIeGen5或将来的可能出现的新型接口协议,数据传输带宽持续增加,使得传统的基于DDR协议的存储器带宽逐渐成为数据吞吐量的瓶颈。一些新型的控制部件中,为了提高数据处理能力,在芯片内部集成了数据缓存,片内的数据缓存以SRAM或eDRAM形式被提供。然而受限于成本、芯片面积、功耗等因素,芯片内部的数据缓存的容量依然有限,从而芯片内部的数据缓存成为稀缺资源,对其的有效利用成为提高存储控制芯片与存储设备处理能力的重要因素。
控制部件提供给NVM芯片的编程命令用于将数据非易失地写入NVM芯片。编程命令的执行时间在例如几十微秒。这段时间内,数据尚未被可靠地保存在NVM芯片,并且编程命令可能失败,从而需要在芯片内部的数据缓存中保留数据,以应对编程失败后的处理。但这导致在编程命令提交后的几十微秒内,存储数据的数据缓存被占用,导致数据缓存的利用率降低,进而限制了存储设备的吞吐量。希望提高芯片内部的数据缓存的利用率,同时避免编程命令失败所引起的数据丢失的风险。
根据本申请的第一方面,提供了根据本申请第一方面的第一提高芯片内的编程数据缓存利用率的方法,包括:在所述编程数据缓存内存储要写入存储介质的第一数据;通过编程命令将所述编程数据缓存内的数据发送给存储介质;在所述编程命令执行完成前,释放所述第一数据占据的所述编程数据缓存的空间。
根据本申请第一方面的第一提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第二提高芯片内的编程数据缓存利用率的方法,还包括:若所述编程命令执行失败,根据所述编程命令所访问的物理地址所属的页条带恢复第二数据,其中第二数据是所述第一数据的部分,通过第二编程命令将所述第二数据写入存储介质。
根据本申请第一方面的第二提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第三提高芯片内的编程数据缓存利用率的方法,还包括:读取所述页条带中除所述编程命令所访问的物理页之外的其他物理页读出第三数据,将所述第三数据存储在所述编程数据缓存或外部存储器;从所述编程数据缓存或所述外部存储器获取所述第三数据并根据所述第三数据恢复所述第二数据。
根据本申请第一方面的第二提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第四提高芯片内的编程数据缓存利用率的方法,还包括:读取所述页条带中除所述编程命令所访问的物理页之外的其他物理页读出第三数据,将所述第三数据提供给校验数据生成单元以恢复所述第二数据,而不缓存所述第三数据。
根据本申请第一方面的第二至第四提高芯片内的编程数据缓存利用率的方法之一,提供了根据本申请第一方面的第五提高芯片内的编程数据缓存利用率的方法,还包括:响应于主机要读取所述第二数据,获取所述第二编程命令所访问的物理地址,从所述第二编程命令所访问的物理地址读出所述第二数据。
根据本申请第一方面的第一至第五提高芯片内的编程数据缓存利用率的方法之一,提供了根据本申请第一方面的第六提高芯片内的编程数据缓存利用率的方法,还包括:响应于将所述第一数据写入所述编程数据缓存,向主机指示对所述第一数据的写入操作处理完成。
根据本申请第一方面的第六提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第七提高芯片内的编程数据缓存利用率的方法,还包括:还包括:若所述编程命令执行失败,在待回收大块集合中记录所述编程命令所访问的物理地址所属的第一大块,且不立即对所述编程命令所要写入的数据执行数据恢复。
根据本申请第一方面的第七提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第八提高芯片内的编程数据缓存利用率的方法,还包括:即使所述编程命令执行失败,也记录所述编程命令所访问的数据的逻辑地址与所述编程命令所访问的物理地址的对应关系。
根据本申请第一方面的第八提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第九提高芯片内的编程数据缓存利用率的方法,还包括:根据预定的垃圾回收策略对所述第一大块执行垃圾回收,若所述编程命令所访问的物理地址记录的数据是无效数据,则无需回收所述编程命令所访问的物理地址记录的数据,若所述编程命令所访问的物理地址记录的数据是有效数据,则根据所述编程命令所访问的物理地址所属的页条带对所述编程命令所访问的物理地址记录的数据进行数据恢复,以及将恢复的数据写入不同于第一大块的第二大块,还记录所述编程命令所访问的数据的逻辑地址与承载了恢复的数据的第二大块的物理地址的对应关系。
根据本申请第一方面的第八或第九提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第十提高芯片内的编程数据缓存利用率的方法,还包括:在对所述第一大块执行垃圾回收之前,响应于主机要读取所述编程命令要写入的数据,获取所述编程命令所访问的物理地址,从所述编程命令所访问的物理地址读出数据,以及响应于识别出所读出数据存在错误,从所述编程命令所访问的物理地址所属的页条带恢复所述编程命令要写入的数据,并作为对主机的响应。
根据本申请第一方面的第八或第九提高芯片内的编程数据缓存利用率的方法,提供了根据本申请第一方面的第十一提高芯片内的编程数据缓存利用率的方法,还包括:响应于主机要读取数据,获取同读取的逻辑地址对应的第一物理地址,从所述第一物理地址读出数据,以及响应于识别出所读出数据存在错误,从所述第一物理地址所属的页条带恢复所述编程命令要写入的数据,并作为对主机的响应,以及在待回收大块集合中记录所述第一物理地址所属的大块。
根据本申请的第二方面,提供了根据本申请第二方面的第一信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现上述本申请第一方面的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了固态存储设备的框图;
图2展示出了大块的示意图;
图3展示了向存储介质写入数据的过程的示意图;
图4展示了根据本申请实施例的存储设备处理写命令的示意图;
图5展示了根据本申请又一实施例的存储设备处理写命令的示意图;以及
图6展示了根据本申请再一实施例的存储设备处理写命令的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图4展示了根据本申请实施例的存储设备处理写命令的示意图。
存储设备的控制部件400耦合主机与存储介质。控制部件400包括存储命令处理单元450、校验数据生成单元410、片内的数据缓存480以及介质接口。校验数据生成单元410包括校验数据缓存420,校验数据缓存420包括多个存储单元,用于容纳校验数据计算结果。控制部件还耦合外部的诸如DRAM的存储器。可以理解地,控制部件400外部的存储器同数据缓存480不是相同的存储器。外部的存储器由独立的存储器芯片提供,而数据缓存480是例如控制部件芯片的一部分。
存储设备的控制部件400接收主机发送给存储设备的写命令。控制部件400控制部件的存储命令处理单元450生成同写命令对应的一个或多个介质接口命令来操作介质接口向存储介质的大块0写入数据(图4中由(1)、(2)与(3)指示)。所写入的数据被预先存储在数据缓存480中,在图4的例子中,由数据缓存480中的(1)指示,其内容包括例如用于页条带的多个页的数据482(P0、P1、P2、P3……以及PN-1)。数据缓存480中的数据通过校验数据生成单元410提供给介质接口并计算用于写入页条带的校验数据(例如PN)。
介质接口向大块0所在的存储介质发送编程命令(图4中由(3)指示)。响应于将编程命令发送给存储介质(NVM芯片),在接收到NVM芯片提供的编程命令处理结果之前,即释放数据缓存380中的数据482。对数据482的释放可由介质接口响应于将编程命令发送给存储介质而实施(图4中由(4)指示),或者由介质接口通过存储命令处理单元450(图4中由(4)指示),并由存储命令处理单元450来释放数据482。
接下来,NVM芯片对编程命令的处理完成,并向介质接口提供编程命令的处理结果(图4中由(5)指示)。处理结果指示编程命令执行成功或者失败。介质接口将编程命令处理结果提供给存储命令处理单元450(图4中由(6)指示)。作为举例,若对应于主机发送的写命令的所有介质接口命令以及编程命令都执行成功,存储命令处理单元450知晓该写命令处理完成。若对应于主机发送的写命令的一个或多个编程命令执行失败,存储命令处理单元450需要进行错误处理,对执行失败的编程命令所对应的数据,重新为其分配存储介质的物理地址,并生成新的介质接口命令与编程命令将数据记录在存储介质中。由于数据缓存480中的数据482已被释放,根据本申请的实施例,存储命令处理单元450利用存储介质中的页条带来恢复数据。
作为举例,图4中,对大块0的页条带0的物理页P3的编程命令执行失败。存储命令处理单元450根据物理页P3获取其属于页条带0,从而生成多个介质接口命令(图4中由(7)指示)来指示介质接口从存储介质中读出大块0的页条带0的除物理页P3之外的其他全部物理页(P0、P1、P2……PN-1、PN)。相应地,介质接口生成多个读命令提供给存储介质(图4中由(8)指示),以读取大块0的页条带0的除物理页P3之外的其他全部物理页(P0、P1、P2……PN-1、PN)。作为响应,存储介质向介质接口输出所读取的大块0的页条带0的除物理页P3之外的其他全部物理页(P0、P1、P2……PN-1、PN)。所读出的数据被记录在例如数据缓存480(标记为数据缓存480中的数据484,也由(9)指示),或者记录在存储器以避免对稀缺的数据缓存480的资源的竞争,以及介质接口还就数据被读出通知存储命令处理单元450(图4中由(9)指示)。数据484不包括来自大块0的页条带0的物理页P3的数据。
在根据本申请实施例的数据恢复中,从页条带读出的数据被存储在数据缓存480中,有例如利用数据缓存480高带宽低延迟的特点来缩短数据恢复所需的时间。但申请人也意识到,数据恢复过程本身的处理延迟已经显著长于通常的写命令,因而处理延迟的缩短并非必要的目标,从而可以将从页条带读出的数据记录在外部的存储器中,而不占用宝贵的数据缓存480,使得数据缓存480可用于高速地处理其他IO命令。并且,在处理写命令时,在执行图4中由(1)指示的操作前,控制部件可能已告知主机写命令处理完成,从而即使利用外部存储器来存储从页条带读出的数据而引入了延迟,主机也意识不到该延迟。
继续参看图4,存储命令处理单元450还操作校验数据生成单元410对例如数据缓存480中的数据484计算校验数据(图4中由(10)指示),所生成的校验数据即为本应写入物理页P3的数据。存储命令处理单元450为生成的校验数据分配新的物理地址(图4中,为大块0的页条带1的第一个物理页),还生成新的介质接口命令(图4中由(11)指示)以指示介质接口通过新的编程命令将生成的校验数据写入该新的物理地址(由P3’指示)。以及存储介质向介质接口提供该新的编程命令的处理结果(图4中由(12)指示)。
可以理解地,页条带的数据恢复能力是有限的。例如,仅在页条带中存在单一物理页故障时,能完成数据恢复,若存在两个或更多的物理页故障则无法恢复。从而对于物理页P3’,连同完整的页条带1共同写入存储介质是有利的,从而即使写入物理页P3’时再次出现故障,也得以利用页条带1来恢复物理页P3’。依然可以理解地,在写入例如页条带0时,若出现了2个或更多物理页的编程失败,则利用本申请实施例提供的方式无法完成数据恢复。
图5展示了根据本申请又一实施例的存储设备处理写命令的示意图。
存储设备的控制部件500耦合主机与存储介质。控制部件500包括存储命令处理单元550、校验数据生成单元510、片内的数据缓存580以及介质接口。校验数据生成单元510包括校验数据缓存520。
图5的例子中,由(1)-(6)所指示的操作同图4的实施例大致相同。图5的实施例同图4的实施例处理写命令的区别在于,响应于对大块0的页条带0的物理页P3的编程命令执行失败(介质接口告知存储命令处理单元(由(6)指示)),存储命令处理单元550根据物理页P3获取其属于页条带0,从而生成多个介质接口命令(图5中由(7)指示)来指示介质接口从存储介质中读出大块0的页条带0的除物理页P3之外的其他全部物理页(P0、P1、P2……PN-1、PN)。在图5的例子中,由(7)指示的介质接口命令指示从存储介质读出数据,而容纳读出数据的地址或目的是校验数据生成单元510的校验数据缓存520。从而从大块0的页条带0的除物理页P3之外的其他全部物理页读出的数据被介质接口直接提供给校验数据生成单元510,而无需搬移到数据缓存580或外部存储器。图5中,由(8)指示从存储介质读出的数据,由(9)指示所读出数据被提供给校验数据生成单元510。校验数据生成单元510对从大块0的页条带0读出的数据计算校验数据,校验数据被记录在校验数据缓存520中(记为P3’),而控制部件500无需另外存储从大块0的页条带0读出的数据,从而减少了对数据缓存520或外部存储器的存储空间的占用。
响应于在校验数据缓存中生成了代表物理页P3的校验数据P3’,存储命令处理单元550为生成的校验数据分配新的物理地址(图5中,为大块0的页条带1的第一个物理页),还生成新的介质接口命令(图5中由(10)指示)以指示介质接口通过新的编程命令将生成的校验数据写入该新的物理地址(由P3’指示)。以及存储介质向介质接口提供该新的编程命令的处理结果(图5中由(11)指示)。
从而,图5的实施例所展示的写命令处理过程,同图4相比,在编程命令失败后,进行数据恢复时,无需额外占用数据缓存528或外部存储器,并且还减少了数据恢复过程的操作环节,缩短了数据恢复过程的处理时间。
图6展示了根据本申请再一实施例的存储设备处理写命令的示意图。
存储设备的控制部件600耦合主机与存储介质。控制部件600包括存储命令处理单元650、校验数据生成单元610、片内的数据缓存680、垃圾回收单元690以及介质接口。校验数据生成单元610包括校验数据缓存620。垃圾回收单元690还维护待回收大块集合。可选地,待回收大块集合被由控制部件内部或外部的存储器所提供。
图6的例子中,由(1)-(6)所指示的操作同图5的实施例大致相同。响应于对大块0的页条带0的物理页P3的编程命令执行失败(介质接口告知存储命令处理单元650(由(6)指示)),存储命令处理单元650将发生了编程命令执行失败的大块0记录在待回收大块集合中(图6中,由(7)指示)。至此,对主机的写命令处理完成。根据图6的实施例,存储命令处理单元此时不再对同该执行失败的编程命令,及其对应的主机写命令做其他处理。以及也不响应于编程命令执行失败,而更新记录了物理页P3的FTL表的条目。
此时,在存储设备的存储介质中,物理页P3对应的数据不存在,而主机认为相应的写命令处理完成,数据被存储设备有效的存储。将物理页P3对应数据的逻辑地址记为L3,在FTL表中记录了为逻辑地址L3分配的物理地址为P3(P3代表物理页P3的物理地址)。此时以及随后的一段时间,若主机发出对逻辑地址L3的读命令(图6中由(b1)指示),存储命令处理单元650从FTL表获取对应的物理地址P3,通过介质接口尝试从大块0的条带0的物理页P3读数据(图6中由(b2)与(b3)指示)。由于之前对物理页P3的编程失败,此时从物理页P3读取数据也失败,介质接口将读物理页P3失败的信息提供给存储命令处理单元650。作为响应,存储命令处理单元650从物理页P3所在的大块0的条带0读出除物理页P3之外的所有其他数据(图6中由(b4)指示)(P0、P1、P2……PN-1、PN)。以及由校验数据生成单元610对从大块0条带0读出的除物理页P3之外的所有其他数据执行错误校验,在校验数据缓存620中得到数据P3’,其为之前主机向逻辑地址L3写入的数据,将数据P3’提供给主机作为对其对逻辑地址L3的读命令的处理结果。
无论主机是否读取逻辑地址L3,根据本申请的实施例,控制部件通过垃圾回收过程消除编程失败所引入的错误数据。垃圾回收是固态存储设备的固有处理过程,从而在垃圾回收中消除错误数据,无需引用额外的复杂度。
垃圾回收单元690根据指定的策略发起垃圾回收过程。在垃圾回收过程中,从待回收大块集合获取一个或多个大块(图6中由(a1)指示,例如,回收大块0),识别其中的有效数据,并将有效数据写入存储介质的其他物理页,以及擦除所回收的大块。垃圾回收单元690指示存储命令处理单元650生成介质接口命令(图6中由(a2)指示),以从待回收大块(大块0)中读取有效数据(图6中由(a3)指示)。在读出物理页P3时,介质接口识别出物理页P3的错误数据,存储命令处理单元650还根据物理页P3所在的页条带的其他数据通过校验数据生成单元610执行错误校验,得到数据P3’,以及存储命令处理单元650还生成介质接口命令,将从大块0的页条带0读出或恢复的有效数据写入大块1。在垃圾回收过程中,还相应地更新FTL表,以记录有效数据被搬移后的物理地址。
在根据图6的实施例中,处理主机的写命令过程、处理主机读命令的过程与垃圾回收的过程,各自独立发生。在处理主机的写命令的过程中,不等待对应的编程命令处理完成即释放数据缓存中的数据,提高了数据缓存的利用率,对于编程命令执行失败的情况,将发生了编程命令执行失败的大块记录在待回收带块集合,留待垃圾回收过程处理,而无需立即进行错误数据恢复。以及在通过垃圾回收过程进行错误数据恢复前,若没有读命令读取出现了编程命令执行失败的物理页,则该编程命令执行失败所对应的错误数据不会被访问,从而不会被主机知晓。在通过垃圾回收过程进行错误数据恢复前,若有读命令读取出现了编程命令执行失败的物理页,则通过读取完整页条带来实施错误数据恢复,从而能向主机提供正确的待读取数据。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (9)

1.一种提高芯片内的编程数据缓存利用率的方法,包括:
在所述编程数据缓存内存储要写入存储介质的第一数据;
通过编程命令将所述编程数据缓存内的数据发送给存储介质;
在所述编程命令执行完成前,释放所述第一数据占据的所述编程数据缓存的空间;
还包括:
若所述编程命令执行失败,根据所述编程命令所访问的物理地址所属的页条带恢复第二数据,其中第二数据是所述第一数据的部分,通过第二编程命令将所述第二数据写入存储介质;
还包括:
读取所述页条带中除所述编程命令所访问的物理页之外的其他物理页读出第三数据,将所述第三数据直接提供给校验数据生成单元以恢复所述第二数据,而不缓存所述第三数据到编程数据缓存或外部存储器;
其中,校验数据生成单元对所述第三数据计算,生成的校验数据即为恢复的所述第二数据,校验数据被记录在校验数据缓存中;或
读取所述页条带中除所述编程命令所访问的物理页之外的其他物理页读出第三数据,将所述第三数据存储在所述编程数据缓存或外部存储器;
从所述编程数据缓存或所述外部存储器获取所述第三数据并根据所述第三数据恢复所述第二数据。
2.根据权利要求1所述的方法,还包括:
响应于主机要读取所述第二数据,获取所述第二编程命令所访问的物理地址,从所述第二编程命令所访问的物理地址读出所述第二数据。
3.根据权利要求1-2中任一项所述的方法,还包括:
响应于将所述第一数据写入所述编程数据缓存,向主机指示对所述第一数据的写入操作处理完成。
4.根据权利要求2所述的方法,还包括:
若所述编程命令执行失败,在待回收大块集合中记录所述编程命令所访问的物理地址所属的第一大块,且不立即对所述编程命令所要写入的数据执行数据恢复。
5.根据权利要求4所述的方法,还包括:
即使所述编程命令执行失败,也记录所述编程命令所访问的数据的逻辑地址与所述编程命令所访问的物理地址的对应关系。
6.根据权利要求5所述的方法,还包括:
根据预定的垃圾回收策略对所述第一大块执行垃圾回收,若所述编程命令所访问的物理地址记录的数据是无效数据,则无需回收所述编程命令所访问的物理地址记录的数据,若所述编程命令所访问的物理地址记录的数据是有效数据,则根据所述编程命令所访问的物理地址所属的页条带对所述编程命令所访问的物理地址记录的数据进行数据恢复,以及将恢复的数据写入不同于第一大块的第二大块,还记录所述编程命令所访问的数据的逻辑地址与承载了恢复的数据的第二大块的物理地址的对应关系。
7.根据权利要求6所述的方法,还包括:
在对所述第一大块执行垃圾回收之前,响应于主机要读取所述编程命令要写入的数据,获取所述编程命令所访问的物理地址,从所述编程命令所访问的物理地址读出数据,以及响应于识别出所读出数据存在错误,从所述编程命令所访问的物理地址所属的页条带恢复所述编程命令要写入的数据,并作为对主机的响应。
8.根据权利要求6所述的方法,还包括:
响应于主机要读取数据,获取同读取的逻辑地址对应的第一物理地址,从所述第一物理地址读出数据,以及响应于识别出所读出数据存在错误,从所述第一物理地址所属的页条带恢复所述编程命令要写入的数据,并作为对主机的响应,以及在待回收大块集合中记录所述第一物理地址所属的大块。
9.一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~8之一的用于信息处理设备的方法。
CN202111608451.XA 2021-12-24 2021-12-24 提高编程缓存利用率的方法及其设备 Active CN114968849B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111608451.XA CN114968849B (zh) 2021-12-24 2021-12-24 提高编程缓存利用率的方法及其设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111608451.XA CN114968849B (zh) 2021-12-24 2021-12-24 提高编程缓存利用率的方法及其设备

Publications (2)

Publication Number Publication Date
CN114968849A CN114968849A (zh) 2022-08-30
CN114968849B true CN114968849B (zh) 2023-10-13

Family

ID=82974723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111608451.XA Active CN114968849B (zh) 2021-12-24 2021-12-24 提高编程缓存利用率的方法及其设备

Country Status (1)

Country Link
CN (1) CN114968849B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016123748A1 (zh) * 2015-02-03 2016-08-11 北京麓柏科技有限公司 一种闪存存储系统及其读写、删除方法
CN108877862A (zh) * 2017-05-10 2018-11-23 北京忆芯科技有限公司 页条带的数据组织以及向页条带写入数据的方法与装置
CN109815157A (zh) * 2017-11-22 2019-05-28 北京忆芯科技有限公司 编程命令处理方法与装置
CN111324414A (zh) * 2018-12-17 2020-06-23 北京忆芯科技有限公司 Nvm存储介质模拟器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016123748A1 (zh) * 2015-02-03 2016-08-11 北京麓柏科技有限公司 一种闪存存储系统及其读写、删除方法
CN108877862A (zh) * 2017-05-10 2018-11-23 北京忆芯科技有限公司 页条带的数据组织以及向页条带写入数据的方法与装置
CN113760786A (zh) * 2017-05-10 2021-12-07 北京忆芯科技有限公司 页条带的数据组织以及向页条带写入数据的方法与装置
CN109815157A (zh) * 2017-11-22 2019-05-28 北京忆芯科技有限公司 编程命令处理方法与装置
CN111324414A (zh) * 2018-12-17 2020-06-23 北京忆芯科技有限公司 Nvm存储介质模拟器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
命名数据网络中基于数据请求节点的就近缓存算法;张浪;韩敏;郑勇;吴婷婷;侯睿;;重庆邮电大学学报(自然科学版)(第01期);全文 *

Also Published As

Publication number Publication date
CN114968849A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
US10860508B2 (en) Offloaded disaggregated storage architecture
CN106681931B (zh) 数据储存设备及其操作方法
US10496293B2 (en) Techniques for selecting storage blocks for garbage collection based on longevity information
KR20210039871A (ko) 메타 데이터를 관리하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작방법
US8984219B2 (en) Data storage device and method of writing data in the same
US20130275657A1 (en) Data storage device and operating method thereof
US8902671B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
JP2017503266A (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US9372741B2 (en) Data storage device and operating method thereof
US11288183B2 (en) Operating method of memory system and host recovering data with write error
US11782638B2 (en) Storage device with improved read latency and operating method thereof
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
CN110865945B (zh) 存储设备的扩展地址空间
US9652172B2 (en) Data storage device performing merging process on groups of memory blocks and operation method thereof
CN109815157B (zh) 编程命令处理方法与装置
US10891239B2 (en) Method and system for operating NAND flash physical space to extend memory capacity
CN114968849B (zh) 提高编程缓存利用率的方法及其设备
US11061610B2 (en) Memory system
KR20220080915A (ko) 스토리지 장치와 호스트 장치의 구동 방법 및 스토리지 장치
CN112578993A (zh) 多平面nvm处理编程出错的方法与存储设备
CN110928482A (zh) 部分页条带与使用部分页条带的存储设备及其方法
CN112579328A (zh) 处理编程出错的方法与存储设备
CN111367830B (zh) 主机参与的重建ftl表的方法及其存储设备
US20240069814A1 (en) Storage server and operation method of storage server
US20220334967A1 (en) Flash memory garbage collection

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