CN108536475B - 完整编程命令处理方法与装置 - Google Patents
完整编程命令处理方法与装置 Download PDFInfo
- Publication number
- CN108536475B CN108536475B CN201810381609.6A CN201810381609A CN108536475B CN 108536475 B CN108536475 B CN 108536475B CN 201810381609 A CN201810381609 A CN 201810381609A CN 108536475 B CN108536475 B CN 108536475B
- Authority
- CN
- China
- Prior art keywords
- nvm chip
- data
- command
- nvm
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
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以及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字节。物理页也可以具有其他的尺寸。
存储介质的每个存储单元可存储一比特或多比特信息。例如,可存储了1比特信息的存储单元称为SLC(单级单元,Single Level Cell),可存储2比特信息的存储单元称为MLC(多级单元,Multiple Level Cell),可存储3比特信息的存储单元称为TLC(三级单元,Triple Level Cell),可存储4比特信息的存储单元称为QLC(四级单元,quadruple LevelCell)。
每个存储单元中存储的多个比特分别属于不同的物理页。例如,TLC存储单元存储了3比特“101”,按从左到右的顺序分别称为MSB(最高有效位,Most Significant Bit)、CSB(中间有效位,Central Significant Bit)和LSB(最低有效位,Least Significant Bit)。将由多个存储单元的MSB构成的物理页称为MSB页,将由多个存储单元的CSB构成的物理页称为CSB页,以及将由多个存储单元的LSB构成的物理页称为LSB页。类似地,MLC存储单元存储的2个比特分别称为MSB(最高有效位,Most Significant Bit)和LSB(最低有效位,LeastSignificant Bit)。
作为举例,一些MLC类型的NVM芯片的相关联的MSB页与LSB页需要通过单条编程命令被写入数据。一些TLC类型的NVM芯片的相关联的MSB页、CSB页与LSB页需要通过单条编程命令被写入数据。一些TLC类型的NVM芯片的相关联的MSB页、CSB页与LSB页需要通过2条编程命令被写入数据,其中一条编程命令写入1页数据,而另一条编程命令要写入两页数据。
图2是现有技术的NVM芯片的编程命令的示意图。控制部件(例如,图1的控制部件104)通过引脚向NVM芯片发出包括命令、地址与数据的编程命令,将数据写入NVM芯片。编程命令包括多个时钟周期。图2中,位于左边的周期时间在前,位于右边的周期时间在后。每个周期内通过DQ引脚向NVM芯片传输一组信号,图2中“周期类型”行,展示了每周期传输的信号的类型(或含义),“DQ”行展示了每周期传输的信号的值。
以编程命令为例,编程命令包括地址、数据与状态三部分。在编程命令的地址部分,由DQ引脚的“80h”作为指示,随后是多个(例如5个)周期的地址(由C1、C2、R1、R2与R3)指示,这些地址指示编程命令要写入的NVM芯片的地址。接下来,向NVM芯片传输要写入的数据(由D0、D1、……Dn表示),以及由信号“10h”或“15h”指示数据传输的结束。NVM芯片收到“10h”或“15h”命令后,开始执行编程操作。控制部件104接下来通过向NVM芯片发出“70h”命令来查询NVM芯片的状态,NVM芯片向控制部件给出状态。状态指示编程命令是否执行完成。
NVM芯片包括页缓存,用于缓存向NVM芯片提供的待编程数据或待从NVM芯片读出的数据。可选地,编程命中所传输的数据被存储在页缓存中,以及响应于收到例如“10h”或“15h”的指定信号,NVM芯片将页缓存中的数据搬移到内部缓存以及进而搬移到NVM存储介质。
为执行编程操作,控制部件根据要写入NVM芯片的物理地址,向NVM芯片发送编程命令的地址部分。接下来,控制部件将存储器中的数据传送给NVM芯片,作为编程命令的数据部分。响应于数据传输完成,数据被存储在NVM芯片的页缓存中。控制部件还向NVM芯片发出命令以查询NVM芯片的编程操作是否完成。若NVM芯片提供的状态指示编程操作尚未完成,控制部件稍后再查询NVM芯片的状态,直到确认编程操作完成。一般地,NVM芯片收到指示数据传输完成,开始编程操作的命令(“10h”或“15h”)后,到编程操作被处理完成,需要一段时间(记为“t”)。
可选地,控制部件耦合到多个NVM芯片,NVM芯片的每个LUN可并行处理编程命令。从而控制部件可同时向多个LUN的每个发出编程命令。
在公开号为CN1414468A的中国专利申请中,提供了通过执行微指令序列来处理CPU(Central Processing Unit,中央处理单元)指令的方案。当CPU要处理特定指令时,转换逻辑电路将特定指令转换成与之对应的微指令序列,通过执行微指令序列来实现特定指令的功能。微指令序列或者微指令序列的模板存储在ROM(Read Only Memory,只读存储器)中。在将特定指令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定指令相对应。
在中国专利申请CN201610009789.6与CN201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请CN201610861793.5提供了微指令序列的调度方法与装置,中国专利申请CN201611213754.0提供了IO命令处理方法与固态存储设备,中国专利申请CN201611213755.5提供了大容量NVM接口控制器,将其全文合并于此。闪存接口控制器通常耦合到多个NVM芯片,NVM芯片包括多个LUN(Logic UNit,逻辑单元)或管芯,多个LUN和管芯可以并行响应及访问NVM命令。又由于每个LUN或管芯上可以有多个待处理的NVM命令,因此NVM控制器需要对多个NVM命令的处理过程进行调度,以维护多个在处理中或待处理的NVM命令,或者维护多段用于生成和处理NVM命令的微指令序列的执行。
发明内容
为提高固态存储设备的性能,控制部件同时处理多个编程命令。每个编程命令要写入NVM芯片的数据都被存储在存储器(例如SRAM)中。而编程命令从开始到查询到编程操作完成的状态需要经历较长的时间(例如,1ms),这段时间中,要写入NVM芯片的数据被存储在存储器中。需要存储器的容量足够大以容纳多个同时发生的编程命令,并且存储器的利用率不高,在编程操作被处理完成之后,对应的存储空间才被释放。
根据本申请的第一方面,提供了根据本申请第一方面的第一处理编程命令的方法,包括:接收指示NVM命令的消息;响应于所述消息是指示向NVM芯片写数据的NVM命令,从存储器搬移数据到缓存,向NVM芯片发出完整编程命令的部分;响应于向NVM芯片搬移了完整编程命令的所有数据,向NVM芯片发出命令信号指示NVM芯片开始编程操作。
根据本申请第一方面的第一处理编程命令的方法,提供了根据本申请第一方面的第二处理编程命令的方法,还包括:响应于所述消息指示向NVM芯片写入数据的位置是LSB页,将用于LSB页的数据从存储器搬移到缓存,通过向NVM芯片发出完整编程命令的部分以指示将用于LSB页的数据发送给NVM芯片。
根据本申请第一方面的第一或第二处理编程命令的方法,提供了根据本申请第一方面的第三处理编程命令的方法,还包括:响应于所述消息指示向NVM芯片写入数据的位置是CSB页,通过向NVM芯片发出完整编程命令的部分以指示将用于CSB页的数据发送给NVM芯片。
根据本申请第一方面的第一至第三处理编程命令的方法之一,提供了根据本申请第一方面的第四处理编程命令的方法,还包括:响应于所述消息指示向NVM芯片写入数据的位置是MSB页,通过向NVM芯片发出完整编程命令的部分以指示将用于MSB页的数据发送给NVM芯片。
根据本申请第一方面的第一至第四处理编程命令的方法之一,提供了根据本申请第一方面的第五处理编程命令的方法,还包括:在收到指示向NVM芯片的CSB页写入数据的消息前,若收到了指示向NVM芯片的MSB页写入数据的消息,指示出现了错误。
根据本申请第一方面的第一至第五处理编程命令的方法之一,提供了根据本申请第一方面的第六处理编程命令的方法,还包括:在收到指示向NVM芯片的LSB页写入数据的消息前,若收到了指示向NVM芯片的MSB页或CSB页写入数据的消息,指示出现了错误。
根据本申请第一方面的第一至第六处理编程命令的方法之一,提供了根据本申请第一方面的第七处理编程命令的方法,还包括:在收到指示向NVM芯片的LSB页写入数据的消息后,到向NVM芯片发出完整编程命令之前,若收到了不属于指示向NVM芯片写数据的NVM命令的消息的其他消息,指示出现了错误。
根据本申请第一方面的第一处理编程命令的方法,提供了根据本申请第一方面的第八处理编程命令的方法,还包括:响应于所接收的第一消息指示向NVM芯片写入数据的位置是LSB页,缓存所述第一消息。
根据本申请第一方面的第八处理编程命令的方法,提供了根据本申请第一方面的第九处理编程命令的方法,还包括:响应于所接收的第二消息指示向NVM芯片写入数据的位置是CSB页,缓存所述第二消息。
根据本申请第一方面的第八或第九处理编程命令的方法,提供了根据本申请第一方面的第十处理编程命令的方法,还包括:响应于所接收的第三消息指示向NVM芯片写入数据的位置是MSB页,缓存所述第三消息。
根据本申请第一方面的第八至第十处理编程命令的方法之一,提供了根据本申请第一方面的第十一处理编程命令的方法,还包括:响应于接收了用于完整编程命令的所有消息,将用于完整编程命令所需的所有数据从存储器搬移到缓存,以及向NVM芯片发出完整编程命令的所有部分。
根据本申请第一方面的第八至第十处理编程命令的方法之一,提供了根据本申请第一方面的第十二处理编程命令的方法,还包括:响应于接收了用于完整编程命令的所有消息,将用于LSB页、CSB页以及MSB页的数据从存储器搬移到缓存,以及向NVM芯片发出完整编程命令的各个部分以指示将用于LSB页、CSB页与MSB页的数据发送给NVM芯片。
根据本申请第一方面的第八至第十二处理编程命令的方法之一,提供了根据本申请第一方面的第十三处理编程命令的方法,13,根据权利要求8-12之一所述的方法,还包括:在收到指示向NVM芯片的LSB页写入数据的消息后,到接收了用于完整编程命令的所有消息之前,若收到了不属于指示向NVM芯片写数据的NVM命令的消息的其他消息,处理所述其他消息。
根据本申请第一方面的第十一至第十三处理编程命令的方法之一,提供了根据本申请第一方面的第十四处理编程命令的方法,其中向NVM芯片发出完整编程命令的部分以指示将用于LSB页数据发送给NVM芯片后,先将用于CSB页的数据从存储器搬移到缓存,在查询NVM芯片是否接收了用于LSB页的数据。
根据本申请第一方面的第十一至第十四处理编程命令的方法之一,提供了根据本申请第一方面的第十五处理编程命令的方法,其中向NVM芯片发出完整编程命令的部分以指示将用于CSB页数据发送给NVM芯片后,先将用于MSB页的数据从存储器搬移到缓存,在查询NVM芯片是否接收了用于CSB页的数据。
根据本申请第一方面的第十一至第十五处理编程命令的方法之一,提供了根据本申请第一方面的第十六处理编程命令的方法,还包括:向NVM芯片发出完整编程命令的部分以指示将用于MSB页数据发送给NVM芯片后,所述完整编程命令被执行完成前,获取指示NVM命令的一个或多个其他消息,并处理所述其他消息。
根据本申请第一方面的第十六处理编程命令的方法,提供了根据本申请第一方面的第十七处理编程命令的方法,其中在估计的完整编程命令的剩余执行时间内,获取指示NVM命令的一个或多个其他消息,并处理所述其他消息。
根据本申请第一方面的第十一至第十五处理编程命令的方法之一,提供了根据本申请第一方面的第十八处理编程命令的方法,还包括:向NVM芯片发出完整编程命令的部分以指示将用于LSB页或CSB页数据发送给NVM芯片后,获取指示NVM命令的一个或多个其他消息,并处理所述其他消息。
根据本申请第一方面的第十一至第十八处理编程命令的方法之一,提供了根据本申请第一方面的第十九处理编程命令的方法,其中所述其他消息是从NVM芯片读数据的NVM命令、从NVM芯片读页缓存的NVM命令或向NVM芯片写数据的NVM命令。
根据本申请第一方面的第十一至第十九处理编程命令的方法之一,提供了根据本申请第一方面的第二十处理编程命令的方法,其中响应于接收指示NVM命令的消息,从存储器获取中间形式命令,以识别所述消息是指示向NVM芯片写数据的NVM命令。
根据本申请第一方面的第二十处理编程命令的方法之一,提供了根据本申请第一方面的第二十一处理编程命令的方法,其中所述中间形式命令还指示向NVM芯片写数据的NVM命令要写入的物理地址。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括控制部件,所述控制部件用于执行根据本申请第一方面的第一至第二十一处理编程命令的方法之一。
根据本申请的第三方面,提供了根据本申请第三方面的第一控制部件,执行程序以实施根据本申请第一方面的第一至第二十一处理编程命令的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是相关技术中固态存储设备的框图;
图2是现有技术的NVM芯片的编程命令的示意图;
图3展示了根据本申请实施例的固态存储设备执行编程命令的示意图;
图4展示了根据本申请实施例的介质接口控制器处理访问NVM的消息的流程图;
图5展示了根据本申请又一实施例的介质接口控制器处理访问NVM的消息的流程图;
图6展示了根据本申请依然又一实施例的介质接口控制器处理访问NVM的消息的流程图;以及
图7A-7D展示了在根据图6的实施例中处理访问NVM的消息的示意图;
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3展示了根据本申请实施例的固态存储设备执行编程命令的示意图。
控制部件104包括主机接口310、多个CPU(CPU0与CPU1)和用于访问NVM芯片105的介质接口320。
主机接口310用于同主机交换命令与数据。在一个例子中,主机与存储设备通过NVMe/PCIe协议通信,主机接口310处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。
CPU 0耦合到主机接口310,用于接收主机发送给存储设备的IO命令,根据IO命令生成中间形式命令。对于指示向NVM芯片写数据的IO命令,CPU 0还将要写入的数据通过主机接口搬移到存储器110。从而在存储器110中记录了中间命令与同中间形式命令对应的待写入数据。
CPU 1从存储器110获取中间形式命令(1),根据中间形式命令生成访问NVM芯片的消息发送给介质接口控制器320(2)。消息是例如中间形式命令、指示存储器中被填充了中间形式命令的消息等。介质接口控制器根据接收的消息,识别待发送给NVM芯片的命令。例如,对于要发送给NVM芯片的命令是NVM芯片的编程命令,从存储器110获取要发送给NVM芯片的数据(3),并存储在介质接口控制器的缓存(例如SRAM)中。介质接口控制器还向NVM芯片发出例如编程命令(4),编程命令中携带了缓存中的数据。
可选地,CPU 0与CPU 1各自包括多个CPU核。多个CPU核并行处理各自的任务。
可选地,控制部件包括缓存(以SRAM为例)。介质接口控制器使用控制部件的存储待发送给NVM芯片的数据。
图4展示了根据本申请实施例的介质接口控制器处理访问NVM的消息的流程图。作为举例,访问的NVM芯片是TLC类型的NVM芯片,其中相关联的MSB页、CSB页与LSB页需要通过单条编程命令(称为“完整编程命令”)被写入数据。
介质接口控制器320(也参看图3与图4)获取例如CPU 1提供的访问NVM芯片的消息(410),识别消息的含义。若消息指示的不是要向NVM芯片写入数据(415),介质接口控制器对消息进行处理(418),并返回步骤410获取下一访问NVM芯片的消息。
若消息指示的是要向NVM芯片写入数据(415),识别消息指示的NVM芯片要被写入数据的位置是否是LSB页(420)。根据本申请的实施例,为生成编程命令,介质接口控制器320要求CPU 1(参看图3)提供分别向相关联的LSB页、CSB页与MSB页写入数据的共3条消息,并且在这3条消息之间,不应***其他指示写入数据的消息。在步骤420,若消息指示的NVM芯片要被写入数据的位置是LSB页,介质接口控制器将其作为处理完整编程命令的开始,并进入到步骤425。在步骤425,介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入LSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将数据搬移到NVM芯片(425)。可以理解地,步骤425中,向NVM芯片发出的编程命令是完整编程命令的部分。在步骤420,若消息指示的要被写入数据的位置不是LSB页,介质接口控制器指示出现了错误(460)。
介质接口控制器继续获取CPU 1提供的访问NVM芯片的消息(430),识别消息指示的NVM芯片要被写入数据的位置是否是CSB页(435)。若消息指示的NVM芯片要被写入数据的位置是CSB页,进入到步骤440,介质接口控制器根据接收的消息从存储器110搬移要写入CSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将要写入CSB页的数据搬移到NVM芯片(440)。可以理解地,步骤440中,向NVM芯片发出的编程命令是完整编程命令的部分。在步骤435,若消息指示的要被写入数据的位置不是CSB页,介质接口控制器指示出现了错误(460)。
介质接口控制器继续获取CPU 1提供的访问NVM芯片的消息(445),识别消息指示的NVM芯片要被写入数据的位置是否是MSB页(450)。若消息指示的NVM芯片要被写入数据的位置是MSB页,进入到步骤455,介质接口控制器根据接收的消息从存储器110搬移要写入MSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将要写入MSB页的数据搬移到NVM芯片(455)。至此已经向NVM芯片发出了向相关联的LSB、CSB与MSB页写入的数据。介质接口控制器还通过向NVM芯片发出信号“10h”或“15h”指示数据传输的结束。NVM芯片收到“10h”或“15h”命令后,开始执行编程操作,将页缓存中的数据写入NVM存储单元。
可选地,在例如步骤425、步骤440和/或步骤455,介质接口控制器从存储器110搬移了数据到缓存后,还指示释放存储器110中已被搬移的数据,从而被释放的部分存储器空间可用于其他IO命令。
在根据图4的实施例中,为向NVM芯片发出完整编程命令,需要按LSB页、CSB页与MSB页的顺序接收要写入NVM芯片的数据。若在接收例如向NVM芯片的CSB页写数据的消息之前收到了向MSB页写数据的数据,则执行步骤460以指示错误。在可选的实施方式中,对于完整编程命令的分别对应的LSB页、CSB页与MSB页的消息,可按不同的顺序发送给介质接口控制器。并有介质接口控制器按接收消息的顺序向NVM芯片传输对应页的数据。
依然可选地,若访问的NVM芯片是MLC类型的NVM芯片,则省略图4的步骤430、步骤435与步骤440。
图5展示了根据本申请又一实施例的介质接口控制器处理访问NVM的消息的流程图。作为举例,访问的NVM芯片是TLC类型的NVM芯片,其中相关联的MSB页、CSB页与LSB页需要通过“完整编程命令”被写入数据。
介质接口控制器320(也参看图3与图5)获取例如CPU 1提供的访问NVM芯片的消息(510),识别消息的含义。介质接口控制器320识别是否已经接收了用于向NVM芯片发出完整编程命令所需的对应于相关联的MSB页、CSB页与LSB页的消息(520)。
若尚未接收到用于向NVM芯片发出完整编程命令所需的所有消息,介质接口控制器320缓存对应于相关联的MSB页、CSB页与LSB页的消息的一个或两个,直到接收了对应于相关联的MSB页、CSB页与LSB页的消息的全部3个,并转向步骤530。若在接收到用于向NVM芯片发出完整编程命令所需的所有消息之间,还接收了其他消息,例如指示从NVM芯片读数据的消息,介质接口控制器处理这些消息(560),并返回步骤510以获取下一消息。为处理例如指示从NVM芯片读数据的消息,介质接口控制器向NVM芯片发出读命令,接收NVM芯片输出的对应于读命令的数据,并将读出的数据搬移到存储器(110)。
在步骤530,介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入LSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将数据搬移到NVM芯片(530)。可以理解地,步骤530中,向NVM芯片发出的编程命令是完整编程命令的部分。可选地,从存储器110(也参看图3)搬移要写入LSB页的数据到缓存,与向NVM芯片发出编程命令,被并行执行。
介质接口控制器还根据接收的消息从存储器110(也参看图3)搬移要写入CSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将数据搬移到NVM芯片(540)。介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入MSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将数据搬移到NVM芯片(550)。
至此已经向NVM芯片发出了向相关联的LSB页、CSB页与MSB页写入的数据。介质接口控制器还通过向NVM芯片发出信号“10h”或“15h”指示数据传输的结束。
根据图5的实施例,完整编程命令所需的用于相关联的LSB页、CSB页与MSB页的数据都被存储到缓存后,才开始向NVM芯片发送完整编程命令,相比于根据图4所示的实施例,缩短了发送完整编程命令占据的时间。而根据图4的实施例,在收到用于LSB页的数据后,即开始向NVM芯片发送完整编程命令的部分,并且其后还要经历从存储器110搬移用于CSB页的数据与用于MSB页的数据的过程,这使得完整编程命令占用了更长的时间。在这期间,访问相同NVM芯片(逻辑单元)的读命令、擦除命令等被阻塞,要等待完整命令处理完成才能被处理。但根据图4的实施例,能够更早的从存储器110搬移数据到缓存,进而能够更早地释放数据占用的存储器110的存储空间,有利于对存储器110的充分利用。
图6展示了根据本申请依然又一实施例的介质接口控制器处理访问NVM的消息的流程图。作为举例,访问的NVM芯片是TLC类型的NVM芯片,其中相关联的MSB页、CSB页与LSB页需要通过“完整编程命令”被写入数据。
介质接口控制器320(也参看图3)获取例如CPU 1提供的访问NVM芯片的消息(510)。介质接口控制器320识别是否已经接收了用于向NVM芯片发出完整编程命令所需的对应于相关联的MSB页、CSB页与LSB页的消息(520)。
若尚未接收到用于向NVM芯片发出完整编程命令所需的所有消息,介质接口控制器320缓存对应于相关联的MSB页、CSB页与LSB页的消息的一个或两个,直到接收了对应于相关联的MSB页、CSB页与LSB页的消息的全部3个,并转向步骤610。若在接收到用于向NVM芯片发出完整编程命令所需的所有消息之间,还接收了其他消息,介质接口控制器处理这些消息(560),并返回步骤510以获取下一消息。
在步骤610,介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入LSB页的数据到缓存,以及通过向NVM芯片发出编程命令以从缓存中将数据搬移到NVM芯片(615)。NVM芯片接收到待编程的数据后,需要时间进行处理,然后才能继续接收数据。利用这段时间,介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入CSB页的数据到缓存(620)。接下来,介质接口控制器查询NVM芯片的状态是否就绪(625),以知晓其是否可以接收下一页待编程数据。若NVM芯片的状态未就绪(625),介质接口控制继续查询NVM芯片的状态,直到确认NVM芯片处于就绪状态。可选地,若NVM芯片的状态未就绪(625),介质接口控制器还获取其他访问NVM芯片的消息(630)。可选地,对步骤630获取的消息进行缓存,而不处理,因为预期NVM芯片将较快进入就绪状态。依然可选地,步骤630获取的消息具有高优先级,在步骤630对获取的消息进行处理。
若查询到NVM芯片的处于就绪状态(625),还通过向NVM芯片发出编程命令以从缓存中将用于CSB页的数据搬移到NVM芯片(635)。利用NVM芯片处理接收的数据这段时间,介质接口控制器根据接收的消息从存储器110(也参看图3)搬移要写入MSB页的数据到缓存(640)。
接下来,介质接口控制器查询NVM芯片的状态是否就绪(645),以知晓其是否可以接收下一页待编程数据。若NVM芯片的状态未就绪(645),介质接口控制继续查询NVM芯片的状态,直到确认NVM芯片处于就绪状态。可选地,若NVM芯片的状态未就绪(645),介质接口控制器还获取其他访问NVM芯片的消息(650)。可选地,对步骤650获取的消息进行缓存,而不处理,因为预期NVM芯片将较快进入就绪状态。依然可选地,步骤650获取的消息具有高优先级,在步骤650对获取的消息进行处理。
若查询到NVM芯片的处于就绪状态(645),还通过向NVM芯片发出编程命令以从缓存中将用于MSB页的数据搬移到NVM芯片(655)。至此已经向NVM芯片发出了向相关联的LSB页、CSB页与MSB页写入的数据。介质接口控制器还通过向NVM芯片发出信号“10h”或“15h”指示数据传输的结束。
接下来,介质接口控制器查询NVM芯片的状态以获知完整编程命令是否被处理完成(660)。若NVM芯片的状态指示完整编程命令未处理完成(660),介质接口控制继续查询NVM芯片的状态,直到确认完整编程命令未处理完成。可选地,若NVM芯片的状态未就绪(660),介质接口控制器还获取并处理其他访问NVM芯片的消息(665)。由于从收到指示数据传输的结束的信号“10h”或“15h”到完成完整编程命令之间的时间间隔较长,优选地,利用这段时间处理步骤665获取的消息。例如,对于指示向NVM芯片写数据的新消息,从存储器110搬移同新消息对应的数据到缓存。
依然优选地,在处理完步骤655后,在预计的完整编程命令的执行时间内,执行一次或多次步骤665,再执行步骤660检查完整编程命令是否完成。若完整编程命令尚未执行完成,再执行步骤665。
依然优选地,在处理完步骤655后,在预计的完整编程命令的执行时间内,执行一次或多次步骤665,并检查预计的完整编程命令执行时间是否到时,在到时后再执行步骤660检查完整编程命令是否完成。若尚未到时,则继续执行一个或多个步骤665。若完整编程命令尚未执行完成,再执行步骤665。
可选地,若访问的NVM芯片是MLC类型的NVM芯片,则省略图6的步骤620、步骤625、步骤630与步骤635。
图7A-7D展示了在根据图6的实施例的步骤665中处理访问NVM的消息的示意图。
作为举例,步骤655向NVM芯片发出的编程命令如图7A所示。编程命令包括地址、数据与状态三部分。在编程命令的地址部分,由DQ引脚的“80h”作为指示,随后是多个(例如5个)周期的地址(由C1、C2、R1、R2与R3)指示,这些地址指示编程命令要写入的NVM芯片的地址。接下来,向NVM芯片传输要写入的数据(由D0、D1、……Dn表示),以及由信号“15h”指示数据传输的结束。NVM芯片收到“15h”命令后,开始执行编程操作。步骤655至此结束。
在步骤660,控制部件104接下来通过向NVM芯片发出“70h”命令来获取NVM芯片的状态,NVM芯片向控制部件给出状态。状态指示编程命令是否执行完成。步骤655在向NVM芯片发出“15h”命令与步骤660向NVM芯片发出“70h”命令之间,存在时间间隔t。在时间间隔t之后,NVM芯片才会完成对编程命令的执行。而步骤665,发生在时间间隔t内。在此期间,NVM芯片在处理步骤655发出的编程命令,并且在编程命令被处理完成前,NVM芯片可响应其他一些命令。
例如,参看图7B,在时间间隔t内,通过步骤665向NVM芯片发出读命令,用于读出NVM芯片的中的数据,在步骤665还接收从NVM芯片读出的数据。读缓存命令包括地址与数据两部分。读命令的地址部分,由DQ引脚的“00h”作为指示,随后是多个(例如5个)周期的地址(由C1、C2、R1、R2与R3)指示,这些地址指示读命令要读取的NVM芯片的地址。接下来,向NVM芯片发出“30h”命令,以指示NVM芯片开始读数据。接下来从NVM芯片接收所读出的数据(由D0表示)。步骤665至此结束。
作为又一个例子,参看图7C,在时间间隔t内,通过步骤665向NVM芯片发出读页缓存命令,用于读出NVM芯片的页缓存中的数据,在步骤665还接收从NVM芯片读出的数据。可以理解地,页缓存中的数据是例如步骤655通过编程命令写入NVM芯片的页缓存的数据;或者根据图7B的读命令被搬移到页缓存中的数据。读页缓存命令包括地址与数据两部分。读命令的地址部分,由DQ引脚的“31h”作为指示。接下来从NVM芯片接收所读出的数据(由D0表示)。步骤665至此结束。
作为依然又一个例子,参看图7D,在时间间隔t内,通过步骤665向NVM芯片发出第二编程命令,用于向NVM芯片的页缓存中传输待写入NVM芯片的数据。第二编程命令的格式例如同图7A展示的编程命令一致。以及在步骤665中(时间间隔t内),向NVM芯片发出第二编程命令的地址部分与数据部分。而到步骤660中查询NVM芯片的状态(第二编程命令的状态部分),所查询的状态指示图7A的编程命令与该第二编程命令是否都执行完成,或者该第二编程命令所待写入的数据是否被搬移到NVM芯片的页寄存器中。
根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种处理方法。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种处理编程命令的方法,包括:
接收指示NVM命令的消息;
响应于所述消息是指示向NVM芯片写数据的NVM命令,从存储器搬移数据到缓存,向NVM芯片发出完整编程命令的部分;
响应于向NVM芯片搬移了完整编程命令的所有数据,向NVM芯片发出命令信号指示NVM芯片开始编程操作。
2.根据权利要求1所述的方法,还包括:
响应于所述消息指示向NVM芯片写入数据的位置是LSB页,将用于LSB页的数据从存储器搬移到缓存,通过向NVM芯片发出完整编程命令的部分以指示将用于LSB页的数据发送给NVM芯片。
3.根据权利要求1或2所述的方法,还包括:
响应于所述消息指示向NVM芯片写入数据的位置是MSB页,通过向NVM芯片发出完整编程命令的部分以指示将用于MSB页的数据发送给NVM芯片。
4.根据权利要求1所述的方法,还包括:
响应于所接收的第一消息指示向NVM芯片写入数据的位置是LSB页,缓存所述第一消息。
5.根据权利要求4所述的方法,还包括:
响应于所接收的第三消息指示向NVM芯片写入数据的位置是MSB页,缓存所述第三消息。
6.根据权利要求4或5所述的方法,还包括:
响应于接收了用于完整编程命令的所有消息,将用于完整编程命令所需的所有数据从存储器搬移到缓存,以及向NVM芯片发出完整编程命令的所有部分。
7.根据权利要求4或5所述的方法,还包括:
响应于接收了用于完整编程命令的所有消息,将用于LSB页、CSB页以及MSB页的数据从存储器搬移到缓存,以及向NVM芯片发出完整编程命令的各个部分以指示将用于LSB页、CSB页与MSB页的数据发送给NVM芯片。
8.根据权利要求7所述的方法,还包括:
在收到指示向NVM芯片的LSB页写入数据的消息后,到接收了用于完整编程命令的所有消息之前,若收到了不属于指示向NVM芯片写数据的NVM命令的消息的其他消息,处理所述其他消息。
9.根据权利要求8所述的方法,还包括:
向NVM芯片发出完整编程命令的部分以指示将用于MSB页数据发送给NVM芯片后,所述完整编程命令被执行完成前,获取指示NVM命令的一个或多个其他消息,并处理所述其他消息。
10.一种控制部件,执行程序以实施根据权利要求1-9中任一项的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017114454395 | 2017-12-27 | ||
CN201711445439 | 2017-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108536475A CN108536475A (zh) | 2018-09-14 |
CN108536475B true CN108536475B (zh) | 2023-08-15 |
Family
ID=63477613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810381609.6A Active CN108536475B (zh) | 2017-12-27 | 2018-04-25 | 完整编程命令处理方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536475B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110310693B (zh) * | 2018-12-26 | 2021-01-08 | 上海忆芯实业有限公司 | 具有缓存的In-Line ECC模块 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295278A (zh) * | 1999-10-21 | 2001-05-16 | 三星电子株式会社 | 含电可重写非易失存储器的单片数据处理装置及操作方法 |
CN101438253A (zh) * | 2006-02-14 | 2009-05-20 | 爱特梅尔公司 | 写入和配置闪速存储器 |
CN102203873A (zh) * | 2008-10-25 | 2011-09-28 | 桑迪士克3D有限责任公司 | 重编程页而不向存储器设备重输数据的页缓冲器编程命令和方法 |
CN102239477A (zh) * | 2008-12-08 | 2011-11-09 | 茵芬尼特麦默里有限公司 | 针对阵列缺陷使用高效管理方法的非易失性存储器(nvm)中的连续地址空间 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及*** |
CN103325417A (zh) * | 2012-03-23 | 2013-09-25 | 三星电子株式会社 | 非易失性存储器件、非易失性存储***、及其编程方法 |
CN104067247A (zh) * | 2012-01-16 | 2014-09-24 | 索尼公司 | 存储控制装置,存储装置,信息处理***及其处理方法 |
CN105988738A (zh) * | 2015-03-23 | 2016-10-05 | 桑迪士克科技有限责任公司 | 服务混合负荷中有效使用数据锁存器的存储器裸芯和方法 |
CN107123441A (zh) * | 2016-02-24 | 2017-09-01 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100885783B1 (ko) * | 2007-01-23 | 2009-02-26 | 주식회사 하이닉스반도체 | 플래시 메모리 장치 및 동작 방법 |
US8850160B2 (en) * | 2010-08-23 | 2014-09-30 | Apple Inc. | Adaptive write behavior for a system having non-volatile memory |
-
2018
- 2018-04-25 CN CN201810381609.6A patent/CN108536475B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295278A (zh) * | 1999-10-21 | 2001-05-16 | 三星电子株式会社 | 含电可重写非易失存储器的单片数据处理装置及操作方法 |
CN101438253A (zh) * | 2006-02-14 | 2009-05-20 | 爱特梅尔公司 | 写入和配置闪速存储器 |
CN102203873A (zh) * | 2008-10-25 | 2011-09-28 | 桑迪士克3D有限责任公司 | 重编程页而不向存储器设备重输数据的页缓冲器编程命令和方法 |
CN102239477A (zh) * | 2008-12-08 | 2011-11-09 | 茵芬尼特麦默里有限公司 | 针对阵列缺陷使用高效管理方法的非易失性存储器(nvm)中的连续地址空间 |
CN104067247A (zh) * | 2012-01-16 | 2014-09-24 | 索尼公司 | 存储控制装置,存储装置,信息处理***及其处理方法 |
CN103325417A (zh) * | 2012-03-23 | 2013-09-25 | 三星电子株式会社 | 非易失性存储器件、非易失性存储***、及其编程方法 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及*** |
CN105988738A (zh) * | 2015-03-23 | 2016-10-05 | 桑迪士克科技有限责任公司 | 服务混合负荷中有效使用数据锁存器的存储器裸芯和方法 |
CN107123441A (zh) * | 2016-02-24 | 2017-09-01 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108536475A (zh) | 2018-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6134453B2 (ja) | コマンドキューイング | |
US10877887B2 (en) | Data storage device and operating method thereof | |
EP2888666B1 (en) | Host-assisted compaction of memory blocks | |
EP2973572B1 (en) | System and method of reading data from memory concurrently with sending write data to the memory | |
CN109815172B (zh) | 设备控制器以及包括其的储存设备 | |
US10725902B2 (en) | Methods for scheduling read commands and apparatuses using the same | |
US10838653B2 (en) | Electronic device and operating method thereof | |
CN113168374A (zh) | 写入命令在分区命名空间中的保持 | |
US11360711B2 (en) | Storage device temporarily suspending internal operation to provide short read response time for read request from host | |
CN113467704B (zh) | 通过智能阈值检测的命令优化 | |
US20190354483A1 (en) | Controller and memory system including the same | |
KR102502318B1 (ko) | 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 | |
US20210382652A1 (en) | Controlled Die Asymmetry During MLC Operations For Optimal System Pipeline | |
CN115203086A (zh) | 主机存储器缓冲器分配管理 | |
CN113744783A (zh) | 分区名称空间(zns)驱动器中的写入数据传送调度 | |
US20220374150A1 (en) | Adjustable timer component for semiconductor devices | |
US10466938B2 (en) | Non-volatile memory system using a plurality of mapping units and operating method thereof | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
KR20220085708A (ko) | 고체 상태 드라이브 내의 영구적 메모리 내의 논리 대 물리 어드레스 인디렉션 테이블 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
TWI747660B (zh) | 多閃存晶片的資料讀取方法及裝置以及電腦程式產品 | |
CN109542336B (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 |