CN114510435A - 编程命令处理方法与装置 - Google Patents
编程命令处理方法与装置 Download PDFInfo
- Publication number
- CN114510435A CN114510435A CN202210139001.9A CN202210139001A CN114510435A CN 114510435 A CN114510435 A CN 114510435A CN 202210139001 A CN202210139001 A CN 202210139001A CN 114510435 A CN114510435 A CN 114510435A
- Authority
- CN
- China
- Prior art keywords
- data
- nvm chip
- program command
- address
- 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.)
- Pending
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供了编程命令处理方法与装置。提供的处理编程命令的方法,包括:将地址发送给NVM芯片,将存储器中的数据搬移到NVM芯片;在NVM芯片指示数据被成功记录在所述地址前,释放存储器中的所述数据;以及查询NVM芯片的状态,以得到编程命令的处理结果,响应于NVM芯片的状态指示编程命令处理失败,将部分编程命令发送给NVM芯片,以指示NVM芯片对页缓存中数据进行编程。
Description
技术领域
本申请涉及存储技术,具体地,涉及处理NVM芯片的编程命令。
背景技术
图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以及DRAM110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件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表包括多个FTL表条目(或称表项)。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
大块包括来自多个逻辑单元(LUN),也称为逻辑单元组的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图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、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-x构成了页条带2。用于存储校验数据的物理页可以位于页条带中的任意位置。作为又一个例子,在申请号为201710752321.0的中国专利申请的图3A及其说明书中对图3A的相关描述中,提供了大块的又一种构造方式。
图3A是现有技术的NVM芯片的编程命令的示意图。控制部件(例如,图1的控制部件104)通过引脚向NVM芯片发出包括命令、地址与数据的编程命令,将数据写入NVM芯片。图3中,展示了包括多个时钟周期的编程命令。图3位于左边的周期时间在前,位于右边的周期时间在后。每个周期内通过DQ引脚向NVM芯片传输一组信号,图3中“周期类型”行,展示了每周期传输的信号的类型(或含义),“DQ”行展示了每周期传输的信号的值。
以编程命令为例,编程命令包括地址、数据与状态三部分。在编程命令的地址部分,由DQ引脚的“80h”作为指示,随后是多个(例如5个)周期的地址(由C1、C2、R1、R2与R3)指示,这些地址指示编程命令要写入的NVM芯片的地址。接下来,向NVM芯片传输要写入的数据(由D0、D1、……Dn表示),以及由信号“10h”指示数据传输的结束。NVM芯片收到“10h”命令后,开始执行编程操作。控制部件104接下来通过向NVM芯片发出“70h”命令来查询NVM芯片的状态,NVM芯片向控制部件给出状态。状态指示编程命令是否执行完成。
图3B展示了控制部件执行编程命令的示意图。控制部件通过闪存通道耦合到一颗或多个NVM芯片。NVM芯片包括页缓存,用于缓存向NVM芯片提供的待编程数据或待从NVM芯片读出的数据。控制部件还包括存储器(以SRAM为例)。存储器中存储了待写入NVM芯片的数据(图3B中,以SRAM中的虚线框中的数据所指示)。为执行编程操作,控制部件根据要写入NVM芯片的物理地址,向NVM芯片发送编程命令的地址部分。接下来,控制部件将存储器中的数据传送给NVM芯片,作为编程命令的数据部分。响应于数据传输完成,数据被存储在NVM芯片的页缓存中。控制部件还向NVM芯片发出命令以查询NVM芯片的编程操作是否完成。若NVM芯片提供的状态指示编程操作尚未完成,控制部件稍后再查询NVM芯片的状态,直到确认编程操作完成,并释放存储器中的数据。若状态指示编程操作失败,控制部件利用存储器中的数据重新向NVM芯片发出编程命令。一般地,NVM芯片收到指示数据传输完成,开始编程操作的命令(“10h”)后,到编程操作被处理完成,需要一段时间(记为“t”)。
可选地,控制部件耦合到多个NVM芯片,NVM芯片的每个LUN可并行处理编程命令。从而控制部件可同时向多个LUN的每个发出编程命令。
发明内容
为提高固态存储设备的性能,控制部件同时处理多个编程命令。每个编程命令要写入NVM芯片的数据都被存储在存储器(例如,图3B的SRAM)中。而编程命令从开始到查询到编程操作完成的状态需要经历较长的时间(例如,1ms),这段时间中,要写入NVM芯片的数据被存储在存储器中。需要存储器的容量足够大以容纳多个同时发生的编程命令,并且存储器的利用率不高,在编程操作被处理完成之后,对应的存储空间才被释放。
根据本申请的第一方面,提供了根据本申请第一方面的第一处理编程命令的方法,包括:将地址发送给NVM芯片,将存储器中的数据搬移到NVM芯片;在NVM芯片指示数据被成功记录在所述地址前,释放存储器中的所述数据;以及查询NVM芯片的状态,以得到编程命令的处理结果。
根据本申请第一方面的第一处理编程命令的方法,提供了根据本申请第一方面的第二处理编程命令的方法,还包括:响应于将存储器中的数据搬移到NVM芯片,在第二存储器中备份所述数据;以及响应于NVM芯片的状态指示编程命令处理失败,生成第二地址,将第二地址发送给NVM芯片,以及将备份的所述数据发送给所述NVM芯片。
根据本申请第一方面的第一处理编程命令的方法,提供了根据本申请第一方面的第三处理编程命令的方法,还包括:响应于NVM芯片的状态指示编程命令处理失败,将部分编程命令发送给NVM芯片,以指示NVM芯片对页缓存中数据进行编程。
根据本申请第一方面的第三处理编程命令的方法,提供了根据本申请第一方面的第四处理编程命令的方法,其中部分编程命令包括第二地址,而不包括待编程的数据。
根据本申请第一方面的第三处理编程命令的方法,提供了根据本申请第一方面的第五处理编程命令的方法,其中部分编程命令指示NVM芯片根据所述地址生成第二地址。
根据本申请第一方面的第三到第五处理编程命令的方法之一,提供了根据本申请第一方面的第六处理编程命令的方法,其中部分编程命令还指示待编程的数据在页缓存中的地址。
根据本申请第一方面的第一处理编程命令的方法,提供了根据本申请第一方面的第七处理编程命令的方法,还包括:响应于NVM芯片的状态指示编程命令处理失败,从NVM芯片的页缓存读取所述数据;将第二地址发送给NVM芯片,将读取的所述数据发送给NVM芯片;以及再次查询NVM芯片的状态,以得到将所述数据记录在第二地址的编程操作的处理结果。
根据本申请第一方面的第二处理编程命令的方法,提供了根据本申请第一方面的第八处理编程命令的方法,还包括:响应于NVM芯片的状态指示编程命令处理失败,还将备份的数据搬移到所述存储器,以及将备份的数据从所述存储器搬移到所述NVM芯片。
根据本申请第一方面的第二处理编程命令的方法,提供了根据本申请第一方面的第九处理编程命令的方法,其中将备份的所述数据从所述第二存储器搬移到所述NVM芯片。
根据本申请第一方面的第三、第八或第九处理编程命令的方法,提供了根据本申请第一方面的第十处理编程命令的方法,还包括:再次查询NVM芯片的状态,以得到将所述数据记录在第二地址的编程操作的处理结果。
根据本申请第一方面的第一、第七或第十处理编程命令的方法,提供了根据本申请第一方面的第十一处理编程命令的方法,还包括:响应于NVM芯片的状态指示编程命令处理失败,从处理失败的编程命令所编程地址所属的页条带读出冗余数据,恢复所述数据;将第二地址发送给NVM芯片,将恢复的所述数据发送给NVM芯片。
根据本申请第一方面的第十一处理编程命令的方法,提供了根据本申请第一方面的第十二处理编程命令的方法,还包括:再次查询NVM芯片的状态,以得到将所述数据记录在第二地址的编程操作的处理结果。
根据本申请的第二方面,提供根据本申请第二方面的第一处理编程命令的方法,包括:将地址发送给NVM芯片,将存储器中的数据搬移到NVM芯片;在NVM芯片指示数据被成功记录在所述地址前,存储所述数据的存储器空间可被写入其他数据;以及查询NVM芯片的状态,以得到编程命令的处理结果。
根据本申请的第三方面,提供根据本申请第三方面的固态存储设备,包括控制部件与NVM芯片,所述控制部件执行根据本申请第一方面与第二方面中的任一方法。
根据本申请的第四方面,提供根据本申请第四方面的控制部件,用于执行本申请第一方面与第二方面中的任一方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是相关技术中固态存储设备的框图;
图2是相关技术中大块的示意图;
图3A是现有技术的NVM芯片的编程命令的示意图;
图3B展示了控制部件执行编程命令的示意图;
图4A展示了根据本申请实施例处理编程命令的示意图;
图4B展示了图4A的实施例中,处理编程命令的流程图;
图5A是根据本申请又一实施例的编程命令的示意图;
图5B是根据本申请又一实施例的处理编程命令的流程图;
图6A是根据本申请另一实施例的控制部件执行编程命令的示意图;
图6B展示了图6A的实施例中,处理编程命令的流程图;以及
图7展示了根据本申请的又一实施例的处理编程命令的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图4A展示了根据本申请实施例处理编程命令的示意图。
控制部件耦合到多个NVM芯片。控制部件还包括存储器(例如SRAM)。存储器中存储了待被编程到NVM芯片的数据。控制部件向NVM芯片发出编程命令,并将存储器中的数据传输到NVM芯片。NVM芯片收到数据并存储在页缓存中。响应于识别出数据传输完成并被指示开始编程操作(例如,收到“10h”命令),NVM芯片将页缓存中的数据写入控制部件提供的物理地址。
根据本申请图4A的实施例,控制部件在编程命令中,随着将待被编程的数据传输给NVM芯片,即释放存储器中已被传输的数据占据的存储空间,从而该存储空间可被分配用于存储其他编程命令的数据,或其他数据。从而,存储器的利用率得到提升,每个编程命令的数据占用存储器的时间被大大缩短。
若控制部件查询到NVM芯片执行编程操作成功,可向NVM芯片发出其他操作命令。若控制部件查询到NVM芯片执行编程操作失败,重新在存储器中分配存储空间。并向NVM芯片发出读页缓存的命令或读命令,将NVM芯片的页缓存中的数据读出并存储在分配的存储空间中。以及再次发出编程命令,向NVM芯片指示编程命令要写入的新物理地址,将新分配的存储空间中的数据搬移到NVM芯片的页缓存,并指示NVM芯片开始执行编程操作(例如,通过“10h”命令)。控制部件还查询NVM芯片的编程操作的执行状态,直到确认编程操作成功执行完成。
图4B展示了图4A的实施例中,处理编程命令的流程图。
为执行编程命令,控制部件向NVM芯片发出编程命令。控制部件为要编程的数据生成物理地址,在编程命令中将物理地址发送给NVM芯片。控制部件还将存储器(例如,图4A的SRAM)中的待编程的数据,作为编程命令的部分,搬移到NVM芯片(410)。响应于待编程的数据被搬移到NVM芯片,控制部件释放这些数据占用的存储器空间(420),从而这些存储器空间可被分配给其他编程命令数据。控制部件查询NVM芯片指示的对应于编程命令的编程操作的执行结果(430)。
若编程操作执行成功,当前编程命令的处理完成,控制部件可继续处理其他编程命令(返回步骤410)。若查询到当前编程命令处理失败,控制部件重新在存储器中分配存储空间(450),并向NVM芯片发出读命令或读页缓存的命令,以从NVM芯片的页缓存中读取待编程的数据,将读出的数据存储到存储器中新分配的存储空间(460)。以及返回步骤410,控制部件重新生成编程命令,将存储器中新分配的存储空间的数据,通过新的编程命令发送给NVM芯片。控制部件还在新的编程命令中向NVM芯片提供新的物理地址,以指示NVM芯片将待编程数据写入新的物理地址。依然可选地,若新的编程命令对应的编程操作依然失败,还继续重复步骤450与步骤460,并通过步骤410开启又一新的编程命令。
可选地,存储器位于控制部件外部,并耦合到控制部件。例如,存储器是DRAM,并具有比图4A中的SRAM更大的容量。
图5A是根据本申请又一实施例的编程命令的示意图。
根据图5A的实施例的编程命令(为了清楚的目的,将其称为部分编程命令),同图3B的编程命令相比,移除了数据部分。部分编程命令包括地址部分,由信号“80h”以及后续的地址(由C1、C2、R1、R2与R3)所指示。地址部分指示NVM芯片的物理地址,待编程的数据要被写入该物理地址。响应于收到编程命令的地址部分,NVM芯片记录物理地址。
接下来,控制部件向NVM芯片传输编程命令的命令“10h”,而无须传输待编程的数据。命令“10h”指示NVM芯片可开始执行编程操作,以及待编程的数据是NVM芯片的页缓存中的数据。可以理解,命令“10h”仅为举例,可使用具有其他值的命令向NVM芯片指示可开始执行编程命令,并且待编程的数据位于页缓存中。响应于收到命令“10h”,NVM芯片开始编程操作,将页缓存中的数据写入之前记录的编程命令的物理地址。NVM芯片还维护编程操作的执行状态,以指示编程操作正在执行中、编程操作执行成功或者编程操作执行失败。
控制部件在向NVM芯片发出“10h”命令的一段时间后,向NVM芯片发出命令(由“70h”所指示)以查询NVM芯片的状态,并从得到的状态中获知编程操作的执行状态。
可选地,部分编程命令的“10h”命令之前,还包括对使用页缓存的数据作为待编程数据的指示。例如,使用连续的命令“11h”与“10h”来指示使用页缓存的数据作为待编程数据。又例如,使用不同于编程命令的单独命令“12h”来指示使用页缓存的数据作为待编程数据。
在可选的实施方式中,NVM芯片还提供页缓存释放命令。控制部件向NVM芯片发出页缓存释放命令,以向NVM芯片指示其页缓存的数据可被丢弃(例如,进入低功耗的休眠模式)。以及在NVM芯片收到页缓存数据之前,将保持对页缓存中的数据的存储。
在依然可选的实施方式中,编程命令的地址部分被简化。图5A的李子中,地址部分包括5个周期(例如,40比特)的物理地址。在可选的实施方式中,编程命令指示NVM芯片依据前一命令的物理地址生成新的物理地址。例如,新的物理地址的页地址由前一命令的页地址递增(例如加1)得到。从而减少传输编程命令所需的时钟周期,降低编程命令的处理延迟。
在依然又一个可选实施方式中,NVM芯片的页缓存具有较大的尺寸,例如可容纳多个物理页。部分编程命令中,指示待编程的数据在页缓存中的存储地址,使得NVM芯片将页缓存中的部分数据通过编程操作记录在物理地址中。在编程命令中,可选地,还向NVM芯片指示用于存储待编程数据的页缓存的地址。
图5B是根据本申请又一实施例的处理编程命令的流程图。
为执行编程命令,控制部件向NVM芯片发出编程命令。控制部件为要编程的数据生成物理地址,在编程命令中将物理地址发送给NVM芯片。控制部件还将存储器中的待编程的数据,作为编程命令的部分,搬移到NVM芯片(510)。响应于待编程的数据被搬移到NVM芯片,控制部件释放这些数据占用的存储器空间(520),从而这些存储器空间可被分配给其他编程命令数据。控制部件查询NVM芯片指示的对应于编程命令的编程操作的执行结果(530)。
若编程操作执行成功,当前编程命令的处理完成,控制部件可继续处理其他编程命令(返回步骤510)。若查询到当前编程命令处理失败,控制部件向NVM芯片发出根据图5A所示的部分编程命令(550)。部分编程命令指示NVM芯片对页缓存中的数据进行编程操作,将页缓存中的数据记录到部分编程命令所指示的NVM芯片的新物理地址中。可选地,控制部件为部分编程命令生成新的物理地址,并发送给NVM芯片。依然可选地,部分编程命令指示由NVM芯片根据之前的编程命令的物理地址生成新的物理地址,例如,新的物理地址的页地址由前一命令的页地址递增(例如加1)得到。
响应于收到部分编程命令,NVM芯片对页缓存中的数据发起编程操作,以写入由部分编程命令所指示的新物理地址。响应于发出了部分编程命令,控制部件向NVM芯片查询编程命令的执行结果。若部分编程命令再次执行失败,控制部件可再次向NVM芯片发出部分编程命令,直到NVM芯片指示部分编程命令执行成功。
图6A是根据本申请另一实施例的控制部件执行编程命令的示意图。
控制部件耦合到多个NVM芯片。控制部件包括存储器(例如SRAM)。控制部件还耦合到外部的DRAM。外部的DRAM可具有比SRAM存储器更大的容量或更高的存储密度。
存储器中存储了待被编程到NVM芯片的数据。控制部件向NVM芯片发出编程命令,并将存储器中的数据传输到NVM芯片。响应于识别出数据传输完成并被指示开始编程操作(例如,收到“10h”命令),NVM芯片将页缓存中的数据写入控制部件提供的物理地址。
根据本申请图6A的实施例,随着将待被编程的数据传输给NVM芯片,控制部件还将待已被传输的数据传输给DRAM,并释放存储器中已被传输的数据占据的存储空间,从而该存储空间可被分配用于存储其他编程命令的数据,或其他数据。DRAM中的数据作为备份数据,用于在NVM芯片执行失败时使用。从而,存储器的利用率得到提升,每个编程命令的数据占用存储器的时间被大大缩短。
若控制部件查询到NVM芯片执行编程操作成功,可向NVM芯片发出其他操作命令。若控制部件查询到NVM芯片执行编程操作失败,重新在存储器中分配存储空间。并从DRAM将待被编程的数据搬移到存储器的被分配的存储空间中。以及再次发出编程命令,向NVM芯片指示编程命令要写入的新物理地址,将新分配的存储空间中的数据搬移到NVM芯片,并指示NVM芯片开始执行编程操作(例如,通过“10h”命令)。控制部件还查询NVM芯片的编程操作的执行状态,直到确认编程操作成功执行完成。
可选地,若控制部件查询到NVM芯片执行编程操作失败,无须重新在存储器中分配存储空间,而是向NVM芯片再次发出编程命令过程中,将DRAM中存储的待编程数据搬移到NVM芯片。从而省去从DRAM向SRAM存储器搬移数据的过程。
图6B展示了图6A的实施例中,处理编程命令的流程图。
为执行编程命令,控制部件向NVM芯片发出编程命令。控制部件为要编程的数据生成物理地址,在编程命令中将物理地址发送给NVM芯片。控制部件还将存储器(例如,图6A的SRAM)中的待编程的数据,作为编程命令的部分,搬移到NVM芯片,以及控制部件还待编程的数据搬移到控制部件外部的存储器(例如,图6A的DRAM)(610),作为备份数据。响应于待编程的数据被搬移到NVM芯片,控制部件释放这些数据占用的存储器空间(620),从而这些存储器空间可被分配给其他编程命令数据。控制部件查询NVM芯片指示的对应于编程命令的编程操作的执行结果(630)。
若编程操作执行成功,当前编程命令的处理完成,控制部件可继续处理其他编程命令(返回步骤610)。若查询到当前编程命令处理失败,控制部件向NVM芯片再次发出编程命令,并将外部的存储器中的备份数据作为待编程数据传输到NVM芯片(650)。可选地,外部存储器中的备份数据被直接传送给NVM芯片。而作为另一种实施方式,外部存储器中的备份数据先被控制部件搬移到存储器(SRAM),再从存储器(SRAM)搬移到NVM芯片。以及返回步骤630,查询编程操作的执行结果。若编程操作依然失败,还继续重复步骤650与步骤630。
图7展示了根据本申请的又一实施例的处理编程命令的流程图。以进一步降低处理编程命令中对存储器的占用。
为执行编程命令,控制部件向NVM芯片发出编程命令。控制部件为要编程的数据生成物理地址,在编程命令中将物理地址发送给NVM芯片。控制部件还将存储器(例如,图6A的SRAM)中的待编程的数据,作为编程命令的部分,搬移到NVM芯片(710)。响应于待编程的数据被搬移到NVM芯片,控制部件释放这些数据占用的存储器空间(720),从而这些存储器空间可被分配给其他编程命令数据。根据图7的实施例中,待编程到NVM芯片的数据被传输到NVM芯片后,控制部件释放数据占据的存储空间,并且不包括备份数据。
控制部件查询NVM芯片指示的对应于编程命令的编程操作的执行结果(730)。
若编程操作执行成功,当前编程命令的处理完成,控制部件可继续处理其他编程命令(返回步骤710)。若查询到当前编程命令处理失败,控制部件从编程命令的物理地址所属的页条带(也参看图2)中读取数据,以恢复当前编程命令要写入的数据。控制部件还将页条带恢复的数据在新生成的编程命令中搬移到NVM芯片(750)。以及返回步骤730,查询编程操作的执行结果。若编程操作依然失败,还继续重复步骤750与步骤730。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种处理编程命令的方法,包括:
将地址发送给NVM芯片,将存储器中的数据搬移到NVM芯片;
在NVM芯片指示数据被成功记录在所述地址前,释放存储器中的所述数据;以及
查询NVM芯片的状态,以得到编程命令的处理结果;
响应于NVM芯片的状态指示编程命令处理失败,将部分编程命令发送给NVM芯片,以指示NVM芯片对页缓存中数据进行编程。
2.根据权利要求1所述的方法,还包括:其中,部分编程命令包括第二地址,而不包括待编程的数据。
3.根据权利要求1或2所述的方法,其中,部分编程命令指示NVM芯片根据所述地址生成第二地址。
4.根据权利要求3所述的方法,其中,所述第二地址由所述地址递增得到。
5.根据权利要求1-4任一项所述的方法,其中,部分编程命令还指示待编程的数据在页缓存中的地址。
6.根据权利要求1-5任一项所述的方法,其中,部分编程命令使用连续的多个命令来指示使用页缓存的数据作为待编程数据或使用不同于所述编程命令的单独命令来指示使用页缓存的数据作为待编程数据。
7.根据权利要求1-6任一项所述的方法,还包括:
再次查询NVM芯片的状态,以得到将所述数据记录在第二地址的编程操作的处理结果。
8.根据权利要求1-7任一项所述的方法,还包括:响应于接收到页缓存释放命令,释放页缓存的数据。
9.一种处理编程命令的方法,包括:
将地址发送给NVM芯片,将存储器中的数据搬移到NVM芯片;
在NVM芯片指示数据被成功记录在所述地址前,存储所述数据的存储器空间可被写入其他数据;以及
查询NVM芯片的状态,以得到编程命令的处理结果;
响应于NVM芯片的状态指示编程命令处理失败,将部分编程命令发送给NVM芯片,以指示NVM芯片对页缓存中数据进行编程。
10.一种控制部件,用于执行根据权利要求1-9中任一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210139001.9A CN114510435A (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210139001.9A CN114510435A (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
CN201711174050.1A CN109815157B (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711174050.1A Division CN109815157B (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510435A true CN114510435A (zh) | 2022-05-17 |
Family
ID=66601436
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711174050.1A Active CN109815157B (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
CN202210139001.9A Pending CN114510435A (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711174050.1A Active CN109815157B (zh) | 2017-11-22 | 2017-11-22 | 编程命令处理方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109815157B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579328A (zh) * | 2019-09-27 | 2021-03-30 | 北京忆恒创源科技有限公司 | 处理编程出错的方法与存储设备 |
CN114968849B (zh) * | 2021-12-24 | 2023-10-13 | 苏州启恒融智信息科技有限公司 | 提高编程缓存利用率的方法及其设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8046527B2 (en) * | 2007-02-22 | 2011-10-25 | Mosaid Technologies Incorporated | Apparatus and method for using a page buffer of a memory device as a temporary cache |
US8954664B1 (en) * | 2010-10-01 | 2015-02-10 | Western Digital Technologies, Inc. | Writing metadata files on a disk |
CN103279402B (zh) * | 2013-05-13 | 2016-08-10 | 记忆科技(深圳)有限公司 | 基于多层单元固态硬盘的数据恢复方法及固态硬盘 |
CN104090730B (zh) * | 2014-07-08 | 2017-02-22 | 飞天诚信科技股份有限公司 | 一种对存储设备进行数据读写的方法及装置 |
CN106201902A (zh) * | 2016-06-24 | 2016-12-07 | 中电海康集团有限公司 | 一种sram位元与非易失性存储位元组成的复合阵列模块及其读写控制方法 |
CN108153482B (zh) * | 2016-12-05 | 2021-09-07 | 厦门旌存半导体技术有限公司 | Io命令处理方法与介质接口控制器 |
-
2017
- 2017-11-22 CN CN201711174050.1A patent/CN109815157B/zh active Active
- 2017-11-22 CN CN202210139001.9A patent/CN114510435A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN109815157B (zh) | 2022-06-17 |
CN109815157A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9697116B2 (en) | Storage system and writing method thereof | |
CN106448737B (zh) | 读取闪存数据的方法、装置以及固态驱动器 | |
CN108073357B (zh) | 以raid方式存储数据的存储装置 | |
US10127166B2 (en) | Data storage controller with multiple pipelines | |
JP5649742B2 (ja) | トランザクションログの復元 | |
TWI569139B (zh) | 有效資料合併方法、記憶體控制器與記憶體儲存裝置 | |
TWI679537B (zh) | 資料移動方法及儲存控制器 | |
KR20190004400A (ko) | 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법 | |
US10877900B1 (en) | Enabling faster and regulated device initialization times | |
TWI495998B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
US9436267B2 (en) | Data storage device | |
WO2020248798A1 (zh) | 智能识别非易失存储介质不可靠块的方法与装置 | |
US20170123990A1 (en) | Data storage device and operating method thereof | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
CN109815157B (zh) | 编程命令处理方法与装置 | |
CN110554833B (zh) | 存储设备中并行处理io命令 | |
TWI534814B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN108877862B (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
WO2019148757A1 (zh) | 非易失随机访问存储器及其提供方法 | |
CN112148626A (zh) | 压缩数据的存储方法及其存储设备 | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
CN110928482A (zh) | 部分页条带与使用部分页条带的存储设备及其方法 | |
CN111858623A (zh) | 使用异构命名空间优化数据库性能 | |
CN114968849B (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 |