CN113168387A - 向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息 - Google Patents

向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息 Download PDF

Info

Publication number
CN113168387A
CN113168387A CN201980077698.8A CN201980077698A CN113168387A CN 113168387 A CN113168387 A CN 113168387A CN 201980077698 A CN201980077698 A CN 201980077698A CN 113168387 A CN113168387 A CN 113168387A
Authority
CN
China
Prior art keywords
cmb
memory
elasticity buffer
host system
interface
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
CN201980077698.8A
Other languages
English (en)
Inventor
J·马罗尼
P·聚勒
L·亚当斯
D·斯普林堡
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113168387A publication Critical patent/CN113168387A/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

可以接收CMB弹性缓冲器的容量的指示和与所述CMB弹性缓冲器相关联的一或多个存储器组件的吞吐量的指示。可以基于所述CMB弹性缓冲器的所述容量和所述一或多个存储器组件的所述吞吐量确定所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的时间量。可以基于所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的所确定的时间量,将写入数据从主机系统传输到所述CMB弹性缓冲器。

Description

向主机系统提供存储器子系统的控制器存储缓冲器弹性状态 的信息
技术领域
本公开大体上涉及存储器子系统,且更具体地,涉及向主机系统提供存储器子系统中的弹性缓冲器的控制器存储缓冲器(CMB)弹性状态的信息。
背景技术
存储器子系统可以是存储系统,例如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,例如双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)。存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可以例如是非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。
附图说明
根据下文给出的详细描述和本公开的各种实施方案的附图,将更充分地理解本公开。
图1A示出根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图1B示出根据本公开的一些实施例的实例数据路径。
图2是根据一些实施例的基于CMB弹性缓冲器的信息传输写入数据的实例方法的流程图。
图3示出根据本公开的一些实施例的CMB弹性缓冲器。
图4是根据本公开的一些实施例的提供CMB弹性缓冲器的信息的实例方法的流程图。
图5是本公开的实施方案可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及向主机系统提供存储器子系统的CMB弹性缓冲器的信息。存储器子系统在下文也称为“存储器装置”。存储器子系统的实例是通过外围互连件(例如,输入/输出总线、存储区网络)耦合到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线耦合到CPU的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。存储器子系统可以是混合式存储器/存储子系统。通常,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储在存储器子系统处,且可请求从存储器子系统检索数据。
在常规存储器子系统中,主机系统可以提供写入操作以将数据存储在存储器子系统处。写入操作可以从主机系统传输到存储器子系统的缓冲存储器。例如,缓冲存储器可以存储要存储在存储器子系统的存储器组件处的多个写入操作的数据。然后,存储器子系统可以从缓冲存储器检索数据,并传输所检索数据以存储在存储器组件处。例如,存储器子系统可以从缓冲存储器检索所累积写入操作的一部分,并且可以传输对应写入数据以存储在存储器组件中。
常规存储器子系统可以通过第一接口从主机系统接收写入操作,并且可以通过第二接口将写入操作从缓冲存储器传输到存储器组件。例如,主机系统可以通过外围组件互连快速(PCIe)接口将写入操作传输到存储器子系统以存储在缓冲存储器处。然后,存储器子系统可以通过不同的第二接口(例如非易失性存储器快速(NVMe)接口)将写入数据从缓冲存储器传输到存储器组件。因此,可使用差分接口从主机系统接收数据并将数据存储在一或多个存储器组件处。
如果主机系统用于向存储器子系统传输写入操作的接口比存储器子系统用于向存储器组件传输写入数据的接口快,那么在存储器子系统处的写入操作(由主机系统发布)的累积可能超过存储器子系统传输以及在存储器子系统的存储器组件处存储写入数据的能力。例如,主机系统可能以比存储器子系统利用NVMe接口将写入操作的写入数据存储在存储器组件处的速率更快的速率通过PCIe接口将写入操作传输到存储器子系统。因此,随着时间的推移,存储器子系统的缓冲存储器可能接收比存储器子系统能够在存储器组件处写入的写入操作更多的写入操作。随后,如果缓冲存储器变满,并且没有进一步的容量存储写入数据(即,来自写入操作的数据),则主机系统与存储器子系统之间的接口(例如PCIe接口)可能变得拥塞。当由于缓冲存储器充满先前接收到的写入数据,无法再将来自主机系统的写入操作存储在存储器子系统的缓冲存储器中时,PCIe接口可被视为拥塞。由于接口拥塞,主机系统的其它缓冲器或存储器随后需要存储主机系统将要发布的写入操作。对于比主机速度慢的比在未发布确认之前PCIe接口可吸收的PCI接口的最大事务层分组(TLP)大小大2倍至3倍的存储器,主机系统可能尝试通过PCIe接口重复存储器写入重试。这些重复重试大大降低了比最大TLP大小大2倍至3倍的主机系统突发传送的传送效率。
本公开的方面通过向主机系统提供存储器子系统的CMB弹性缓冲器的信息来解决上述和其它缺陷。CMB弹性缓冲器可以是包含在存储器子系统中的缓冲器或存储器组件。CMB弹性缓冲器可以在存储器子系统的控制器外部,并且可以由主机系统直接存取。例如,主机系统可以存取CMB弹性缓冲器的某些数据,而无需从存储器子系统的控制器请求数据。此外,CMB弹性缓冲器可以存储来自主机系统的已通过PCIe接口传输的写入操作。然后,通过从CMB弹性缓冲器检索数据并经由NVMe接口将数据从CMB弹性缓冲器传输到存储器组件,可以从CMB弹性缓冲器执行所存储写入操作以将数据存储在存储器组件处。
存储器子系统可以向主机系统公开或提供CMB弹性缓冲器的一或多个特征或信息。然后,主机系统可以使用所提供的CMB弹性缓冲器的一或多个特征来确定何时通过主机系统与存储器子系统之间的PCIe接口传输后续写入操作。例如,一或多个特征可以指定CMB弹性缓冲器的大小或容量以及CMB存储区的写入吞吐量。所述大小或容量可以指定可存储在CMB弹性缓冲器处的写入操作数目或写入数据量。CMB存储区的写入吞吐量可以指定在特定时间段内可以从CMB弹性缓冲器传输以在CMB存储区组件处存储数据的写入操作数目或写入数据量。例如,写入吞吐量可以指定在所界定时间段(即,NVMe接口的带宽)内可以通过NVMe接口传输的写入数据量或写入操作数目。
CMB弹性缓冲器的大小或容量以及CMB存储区组件的写入吞吐量可以提供给或公开给主机系统。例如,CMB弹性缓冲器和CMB存储区组件的特征可以存储在主机系统可直接存取的存储器元件(即寄存器)处。随后,主机系统可以计算或确定从CMB弹性缓冲器检索并存储在CMB存储区组件处的写入操作所需的时间量。例如,由主机系统确定的时间量可以指定一组写入操作存储在CMB弹性缓冲器中并在提交存储在存储器子系统的CMB存储区组件处后从CMB弹性缓冲器中完全删除所需的时间量(例如,通过PCIe接口从主机系统进行的一阵写入操作)。因此,主机系统可以接收CMB弹性状态的信息,并且可以确定写入操作经由NVMe接口提交并存储在存储器组件处的时间量。
主机系统可以利用所述时间量来确定何时通过PCIe接口向存储器子系统发布下一组写入操作。例如,主机系统可以基于所确定的写入操作通过NVMe接口从CMB弹性缓冲器传输到存储器组件的时间量,通过PCIe接口将写入操作传输到存储器子系统。因此,由于主机系统可以基于从CMB弹性缓冲器中移除的其它写入操作的速率向存储器子系统发布写入操作,因此CMB弹性缓冲器的可用容量可以存储将由主机系统发布的写入数据。结果,可以防止PCIe接口的拥塞,因为在CMB弹性缓冲器没有存储写入操作的可用容量的情况下,主机系统不会发布写入操作。
本公开的优点包含但不限于防止主机系统与存储器子系统之间的接口(例如,PCIe)处的拥塞。对拥塞的防止可以提高存储器子系统的整体性能。例如,如果CMB弹性缓冲器的容量为256KB,且CMB存储吞吐量为2GB/s,则主机系统最多可写入64x 4KB传送,等待一段时间(例如,256KB除以2GB/s=125ms),然后轮询存储器子系统以确定来自主机系统的写入数据是否已提交到CMB。如果是,则主机系统可以写入另一阵写入数据。
图1A示出根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可以包含媒体,例如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或此类组件的组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储子系统。一般来说,计算环境100可以包含使用存储器子系统110的主机系统120。例如,主机系统120可将数据写入到存储器子系统110以及从存储器子系统110读取数据。
主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可以包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到所述存储器子系统。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM快速(NVMe)接口存取存储器组件112A到112N。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)类型快闪存储器。存储器组件112A到112N中的每一者可以包含一或多个存储器单元阵列,例如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一者可以存储由主机系统120使用的一或多个数据位(例如,数据块)。尽管描述了例如NAND类型快闪存储器的非易失性存储器组件,但存储器组件112A到112N可以基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、非易失性存储器单元的交叉点阵列,或其它存储级存储器(SCM)。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来执行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可分组为存储器页或数据块,其可指代用于存储数据的存储器组件的单元。
存储器系统控制器115(下文称为“控制器”)可以与存储器组件112A到112N通信以执行操作,例如在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它此类操作。控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。控制器115可以包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所示的实例中,控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种处理、操作、逻辑流以及例程。在一些实施例中,本地存储器119可以包含存储存储器指针、获取的数据等的存储器寄存器。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示为包含控制器115,但在本公开的另一实施例中,存储器子系统110可不包含控制器115,而是可以依赖于外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供的外部控制)。
通常,控制器115可以从主机系统120接收命令或操作,并且可以将命令或操作转换成指令或适当的命令,以实现对存储器组件112A到112N的期望的存取。控制器115可以负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和纠错码(ECC)操作、加密操作、快速缓存操作,以及与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转译。控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可以包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含快速缓存或缓冲器(例如DRAM)和地址电路系统(例如行解码器和列解码器),其可从控制器115接收地址且对地址进行解码以存取存储器组件112A到112N。
存储器子系统110包含CMB 114和CMB弹性缓冲器组件113,其可以向主机系统120提供t CMB弹性缓冲器的信息。在一些实施例中,控制器115包含CMB弹性缓冲器组件113的至少一部分。例如,控制器115可以包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的用于执行本文描述的操作的指令。在一些实施例中,CMB弹性缓冲器组件113是主机系统120、应用程序或操作系统的一部分,或者来自控制器115的外部。例如,CMB弹性缓冲器组件113可以是耦合在主机系统120与存储器子系统110内的控制器110之间的存储器组件。
CMB弹性缓冲器组件113可以向主机系统120提供CMB弹性缓冲器的信息。所述信息可以指定CMB使用的CMB弹性缓冲器的容量和CMB存储区的写入吞吐量。如本文所使用,CMB存储区可以指用于存储存在于CMB弹性缓冲器处的数据的一或多个存储器组件。例如,存储器组件115可以是CMB存储区的存储器组件。在一些实施例中,存储器组件115可以是动态随机存取存储器(DRAM)或存储级存储器(SCM)。主机系统120可进一步包含写入传输器组件121,其可以接收信息并确定将多组写入操作传输到存储器子系统110的时间量。下文描述关于CMB弹性缓冲器组件113和写入传输器组件121的操作的进一步细节。
图1B示出根据本公开的一些实施例的实例数据路径150。如图所示,数据路径150可以包含接收和传输数据的PCIe接口输入/输出(I/O)端口151。写入弹性缓冲器152可用于CMB 153。在一些实施例中,写入弹性缓冲器152可用于持久性存储缓冲器(PMR)154。PMR154可相对于非易失性存储器使用。例如,PMR存储区可以是一或多个非易失性存储器组件。参考CMB的本公开的操作和方面也可以与PMR 154一起使用。因此,如本文描述的弹性缓冲器的操作和使用可用于CMB弹性缓冲器或PMR弹性缓冲器。当经由PCIe接口I/O端口151接收到读取操作时,可以绕过写入弹性缓冲器152。数据路径150可进一步包含远程直接存储器存取(RDMA)。NVMe接口155可以与包含一或多个存储器组件157的存储器子系统的控制器156耦合。在一些实施例中,读取缓冲器和写入缓冲器可以在CMB 153、PCIe接口I/O端口151和PMR 154中的每一者与NVMe接口155之前的多路复用器之间。
图2是根据一些实施例的基于CMB弹性缓冲器的信息传输写入数据的实例方法200的流程图。可以通过处理逻辑来执行方法200,所述处理逻辑可以包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法200由图1A的写入传输器组件121执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所示实施例仅为实例,且所示过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
如图2所示,在操作210,处理逻辑接收CMB弹性缓冲器的容量的指示。在操作220,处理逻辑接收CMB存储区的吞吐量的指示。CMB存储区的吞吐量可以是CMB存储区的一或多个存储器组件的吞吐量。当主机系统将在存储器子系统处存储数据时,可以接收指示。例如,主机系统可以发布写入操作以在存储器子系统处存储数据。主机系统可通过PCIe接口与存储器子系统耦合。主机系统可以从CMB弹性缓冲器的一或多个存储器元件(例如寄存器)检索CMB弹性状态的容量和吞吐量指示。例如,主机系统可以直接存取(例如,不使用控制器)存储CMB弹性状态的容量和吞吐量指示的存储器元件。在一些实施例中,当主机系统初始通过PCIe接口检测到存储器子系统时,可以接收指示。可以通过PCI接口接收指示。
在操作230,处理逻辑基于容量和吞吐量确定CMB弹性缓冲器处的数据从CMB弹性缓冲器传输的时间量。在一些实施例中,时间量可以是通知主机系统CMB弹性缓冲器的储备容量的卸载超时计算。例如,主机系统可以基于CMB弹性缓冲器容量和CMB存储区吞吐量的组合来计算传输数据和从CMB弹性缓冲器移除数据的时间量。所确定的时间量可以是CMB弹性缓冲器的容量除以CMB存储区的吞吐量。在一些实施例中,主机系统可以基于传输到CMB弹性缓冲器的先前的写入数据通过PCIe接口发布写入操作,所述先前的写入数据从CMB弹性缓冲器移除并提交以存储在一或多个CMB存储区组件。
在一些实施例中,主机系统可以基于CMB弹性缓冲器的容量传输或发布初始写入操作数目。例如,由主机系统初始发布或传输的写入操作数目可以满足或填充CMB弹性缓冲器的容量。例如,初始写入操作数目的写入数据量可以填充CMB弹性缓冲器的容量。当写入数据由存储器子系统提交时,可以从CMB弹性缓冲器移除初始由主机系统传输或发布的写入数据。当写入数据已从CMB弹性缓冲器检索或移除,并且将要或正在写入或刷新到存储器子系统的CMB存储区组件时,可以认为写入数据已提交。
在操作240,处理逻辑基于所确定的时间量向CMB弹性缓冲器传输写入数据。在经过所确定的时间量之后,主机系统可以向CMB弹性缓冲器发布或传输写入操作。例如,主机系统可以在自向CMB弹性缓冲器发布或传输先前的写入操作以来经过所确定的时间量之后发布或传输写入操作。因此,可以从主机系统发布或传输第一组(即,一阵)写入操作。然后,在经过所确定的时间量之后,主机系统可以发布或传输第二组(即,另一阵)写入操作。这样,当经过所确定的时间量时,主机系统可以周期性地传输下一组写入操作。
在一些实施例中,主机系统可以在经过所确定的时间量之后对CMB弹性缓冲器执行轮询操作,并且可以基于轮询操作的结果发布后续组写入操作。例如,轮询操作可以是对存储在CMB弹性缓冲器的特定存储器元件(例如寄存器)处的数据或状态指示符的检索。特定寄存器可以存储从主机系统传输到存储器子系统(例如,通过PCIe接口)的前一组写入数据的状态指示符。状态指示符可以识别来自写入操作的前一组写入数据(即,前一突发)是否已经通过CMB弹性缓冲器与存储器组件之间的接口(例如,NVMe接口)提交并存储在存储器组件中。在一些实施例中,状态指示符可以进一步指示写入数据是否已被无错误地存储并且是持久的(例如,存储在存储器组件处)。如果状态指示符标识前一组写入操作的写入数据已提交,则主机系统可以继续通过PCIe接口向存储器子系统传输下一组写入操作。否则,如果状态指示符标识前一组写入操作尚未提交,则主机系统可以等待通过PCIe接口传输下一组写入操作。例如,主机系统可以暂停或停止传输写入操作持续阈值时间量,直到执行特定寄存器的下一轮询操作。利用轮询操作可以确保在主机系统传输后续写入数据之前,主机系统先前传输的写入数据已成功存储在存储器组件处。
图3示出根据本公开的一些实施例的CMB弹性缓冲器300。在一些实施例中,CMB弹性缓冲器300可以对应于图1A的控制器115的CMB弹性缓冲器组件113。
如图3所示,CMB弹性缓冲器300可以存储写入数据301。例如,主机系统可以经由第一接口310(例如,PCIe接口)向存储器子系统的CMB弹性缓冲器300传输写入数据301。当主机系统通过第一接口310传输或发布写入操作时,CMB弹性缓冲器300可以存储写入数据301。存储在CMB弹性缓冲器300处的写入数据301可以被移除并通过第二接口311(例如,NVMe接口)传输,以存储在存储器子系统的一或多个存储器组件处。例如,当通过第二接口311提交或传输对应写入操作时,可以从CMB弹性缓冲器300移除写入数据301。
CMB弹性缓冲器300可以包含附加存储器元件320和330。存储器元件320和330可以是CMB弹性缓冲器300的一部分,或者可以是附加寄存器或与CMB弹性缓冲器300耦合的其它此类存储器组件。存储器元件320可以存储对CMB弹性缓冲器300的容量的指示,并且存储器元件330可以存储对通过第二接口311从CMB弹性缓冲器300到CMB存储区组件的写入数据301的吞吐量的指示。
在一些实施例中,存储器元件320和存储器元件330可以存储CMB弹性缓冲器容量和CMB存储区组件300的吞吐量的预定义或指定值。例如,可以在制造存储器子系统时在存储器元件320和330处编程或存储预定义或指定值。存储器元件320和330可以是只读寄存器。在一些实施例中,存储器子系统可以在存储器元件320和330处存储值。例如,存储器子系统可以检测CMB弹性缓冲器300的容量和吞吐量,并且可以将检测到的值存储在存储器元件320和330处。在一些实施例中,如果存储器子系统检测到CMB弹性缓冲器300的容量或吞吐量已经改变,则存储器子系统可以将值更新为新值。例如,如果CMB存储区组件300的一部分不再能存储写入数据,或者如果经由第二接口311的吞吐量改变,则可以更新值。存储器元件320和330可以由主机系统存取,而无需从存储器子系统的控制器请求存储在存储器元件320和330处的数据。例如,存储器元件320和33可以由主机系统直接存取。
图4是根据本公开的一些实施例的提供CMB弹性缓冲器的信息的实例方法400的流程图。可以通过处理逻辑来执行方法400,所述处理逻辑可以包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由图1A的CMB弹性缓冲器组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所示实施例仅为实例,且所示过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
如图4所示,在操作410,处理逻辑向主机系统提供CMB弹性缓冲器的容量的指示。例如,寄存器或其它此类存储器元件可以由主机系统存取。寄存器或存储器元件可以存储指示CMB弹性缓冲器的容量的值。容量可以指示在特定时间可存储在CMB弹性缓冲器处的最大写入操作数目或最大写入数据量。在操作420,处理逻辑向主机系统提供一或多个CMB存储区组件的吞吐量的指示。例如,可以使同一或另一寄存器或存储器元件可存取,并且可以存储指示CMB存储区的存储器组件的吞吐量的值。
在操作430,处理逻辑基于一或多个CMB存储区组件的吞吐量和CMB弹性缓冲器的容量,经由第一接口从主机系统接收数据。容量和吞吐量可以指示CMB弹性状态。例如,可以以基于CMB弹性状态的容量和吞吐量的速率从PCIe接口接收将存储在CMB弹性缓冲器处的写入数据。在一些实施例中,所述速率可以是当写入数据在存储器组件处提交时,以全容量存储在CMB弹性缓冲器处的写入数据可以完全传输并从CMB弹性缓冲器移除的时间量。经由第一接口从主机系统接收的数据可以存储在CMB弹性缓冲器处。在操作440,处理逻辑基于一或多个CMB存储区组件的吞吐量,经由第二接口从CMB弹性缓冲器传输数据。例如,可以以吞吐量定义的速率来传输一定量的写入数据。
在操作450,处理逻辑将传输的数据存储在一或多个CMB存储区组件处。例如,从CMB弹性缓冲器传输的写入数据可以存储在存储器子系统的存储器组件处。写入数据在通过第二接口传输之后可以存储在存储器组件中。
因此,CMB弹性缓冲器可以存储经由第一接口从主机系统接收的写入数据,并且可以经由第二接口将存储的写入数据传输到一或多个存储器组件。经由第一接口传输数据的速率可以超过经由第二接口传输数据的速率。例如,利用第二接口的存储器组件可以利用与主机系统可以通过第一接口传输数据相比更大量的时间来存储数据。可以向主机系统提供CMB弹性状态的特征(例如,容量和吞吐量),以控制主机系统何时将后续写入数据传输到CMB弹性缓冲器。
图5示出计算机系统500的实例机器,在所述实例机器中可以执行用于使所述机器执行本文讨论的任何一或多个方法的指令集。在一些实施例中,计算机系统500可对应于包含、耦合到或利用存储器子系统(例如,图1A的存储器子系统110)的主机系统(例如,图1A的主机系统120)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1A的写入传输器组件121或CMB弹性缓冲器组件113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或网桥、数字或非数字电路,或能够执行(依序地或以其它方式)指定待由所述机器进行的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统518,其经由总线530彼此通信。
处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置502被配置成执行指令526以用于执行本文中所论述的操作和步骤。计算机系统500可进一步包含通过网络520通信的网络接口装置508。
数据存储系统518可以包含机器可读存储媒体524(也称为计算机可读媒体),其上存储有一或多个指令集526或体现本文中所描述的任何一或多种方法或功能的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可以对应于图1A的存储器子系统110。
在一个实施例中,指令526包含用于实施对应于写入传输器组件或CMB弹性缓冲器组件(例如,图1A的写入传输器组件121或CMB弹性缓冲器组件113)的功能的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。还应被认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令集且使机器执行本公开的任何一或多种方法的任何媒体。术语“计算机可读存储媒体”因此应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操控和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可以包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

Claims (20)

1.一种方法,其包括:
接收控制器存储缓冲器CMB弹性缓冲器的容量的指示;
接收与所述CMB弹性缓冲器相关联的一或多个存储器组件的吞吐量的指示;
通过处理装置基于所述CMB弹性缓冲器的所述容量和所述一或多个存储器组件的所述吞吐量确定所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的时间量;以及
基于所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的所确定的时间量,将写入数据从主机系统传输到所述CMB弹性缓冲器。
2.根据权利要求1所述的方法,其中所述将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器是经由第一接口进行的,并且所述将所述CMB弹性缓冲器处的所述数据传输到所述一或多个存储器组件是经由与所述第一接口不同的第二接口进行的。
3.根据权利要求2所述的方法,其中所述第一接口是将所述主机系统与包含所述CMB弹性缓冲器和所述一或多个存储器组件的存储器子系统耦合的外围组件互连快速PCIe接口或非易失性存储器快速NVMe接口,并且所述第二接口是将所述CMB弹性缓冲器与所述一或多个存储器组件耦合的存储器总线接口。
4.根据权利要求2所述的方法,其中所述第一接口与比基于所述第二接口的所述一或多个存储器组件的所述吞吐量更高的吞吐量相关联。
5.根据权利要求1所述的方法,其中基于所述所确定的时间量将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器包括:
自将先前写入数据从所述主机系统传输到所述CMB弹性缓冲器以来经过所述所确定的时间量之后,将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器。
6.根据权利要求1所述的方法,其中基于所述所确定的时间量将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器包括:
执行轮询操作,以标识自将先前写入数据从所述主机系统传输到所述CMB弹性缓冲器以来经过所述所确定的时间量之后已从所述主机系统传输到所述CMB弹性缓冲器的所述先前写入数据的状态,其中响应于所述状态指示所述先前写入数据已被传输到所述一或多个存储器组件而将后续写入数据从所述主机系统传输到所述CMB弹性缓冲器。
7.根据权利要求1所述的方法,其中接收所述一或多个存储器组件的所述容量的所述指示和所述吞吐量的所述指示包括:
检索所述CMB弹性缓冲器容量的所述指示和与CMB存储区相关联的一或多个存储器元件的所述吞吐量的所述指示。
8.一种系统,其包括:
存储器组件;
控制器存储缓冲器CMB弹性缓冲器,其通过特定接口与主机系统耦合并通过另一接口与所述存储器组件耦合,其中所述CMB弹性缓冲器与一或多个存储器元件相关联,所述存储器元件存储所述CMB弹性缓冲器的容量的指示和与所述主机系统通过所述特定接口存取的所述存储器组件相对应的CMB存储区的吞吐量的指示;
处理装置,其与所述存储器组件操作性地耦合以进行以下操作:
基于所述CMB弹性缓冲器的所述容量和所述CMB存储区的所述吞吐量,通过所述特定接口从所述主机系统接收数据;
将接收到的数据存储在所述CMB弹性缓冲器中;以及
基于所述CMB存储区的所述吞吐量,通过所述另一接口从所述CMB弹性缓冲器传输所述接收到的数据,以存储在所述CMB存储区的所述存储器组件处。
9.根据权利要求8所述的系统,其中所述特定接口是外围组件互连快速PCIe接口,并且其中所述另一接口是非易失性存储器快速NVMe接口。
10.根据权利要求8所述的系统,其中所述特定接口与比通过所述特定接口的所述CMB弹性缓冲器的所述吞吐量更高的吞吐量相关联。
11.根据权利要求8所述的系统,其中所述一或多个存储器元件对应于所述主机系统可通过所述特定接口存取的一或多个只读寄存器。
12.根据权利要求8所述的系统,其中所述处理装置进一步进行以下操作:
响应于通过所述另一接口从所述CMB弹性缓冲器传输所述接收到的数据,更新所述接收到的数据的状态,其中所述状态指示所述接收到的数据是否已从所述CMB弹性缓冲器移除并且将被存储在所述存储器组件处。
13.根据权利要求8所述的系统,其中所述CMB弹性缓冲器的所述容量对应于可存储在所述CMB弹性缓冲器处的来自所述主机系统的写入数据量。
14.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时使所述处理装置执行包括以下各项的操作:
接收控制器存储缓冲器CMB弹性缓冲器的容量的指示;
接收与所述CMB弹性缓冲器相关联的一或多个存储器组件的吞吐量的指示;
基于所述CMB弹性缓冲器的所述容量和所述一或多个存储器组件的所述吞吐量确定所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的时间量;以及
基于所述CMB弹性缓冲器处的数据传输到所述一或多个存储器组件的所确定的时间量,将写入数据从主机系统传输到所述CMB弹性缓冲器。
15.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器是经由第一接口进行的,并且所述将所述CMB弹性缓冲器处的所述数据传输到所述一或多个存储器组件是经由与所述第一接口不同的第二接口进行的。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述第一接口是将所述主机系统与包含所述CMB弹性缓冲器和所述一或多个存储器组件的存储器子系统耦合的外围组件互连快速PCIe接口,并且所述第二接口是将所述CMB弹性缓冲器与所述一或多个存储器组件耦合的非易失性存储器快速NVMe接口。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述第一接口与比基于所述第二接口的所述一或多个存储器组件的所述吞吐量更高的吞吐量相关联。
18.根据权利要求14所述的非暂时性计算机可读存储媒体,其中为了基于所述所确定的时间量将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器,所述操作进一步包括:
自将先前写入数据从所述主机系统传输到所述CMB弹性缓冲器以来经过所述所确定的时间量之后,将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器。
19.根据权利要求14所述的非暂时性计算机可读存储媒体,其中为了基于所述所确定的时间量将所述写入数据从所述主机系统传输到所述CMB弹性缓冲器,所述操作进一步包括:
执行轮询操作,以标识自将先前写入数据从所述主机系统传输到所述CMB弹性缓冲器以来经过所述所确定的时间量之后已从所述主机系统传输到所述CMB弹性缓冲器的所述先前写入数据的状态,其中响应于所述状态指示所述先前写入数据已被传输到所述一或多个存储器组件而将后续写入数据从所述主机系统传输到所述CMB弹性缓冲器。
20.根据权利要求14所述的非暂时性计算机可读存储媒体,其中为了接收所述一或多个存储器组件的所述容量的所述指示和所述吞吐量的所述指示,所述操作进一步包括:
检索所述CMB弹性缓冲器容量的所述指示和与CMB存储区相关联的一或多个存储器元件的所述吞吐量的所述指示。
CN201980077698.8A 2018-10-30 2019-10-29 向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息 Pending CN113168387A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862752766P 2018-10-30 2018-10-30
US62/752,766 2018-10-30
US16/236,922 US10657078B1 (en) 2018-10-30 2018-12-31 Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system
US16/236,922 2018-12-31
PCT/US2019/058662 WO2020092439A1 (en) 2018-10-30 2019-10-29 Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system

Publications (1)

Publication Number Publication Date
CN113168387A true CN113168387A (zh) 2021-07-23

Family

ID=70328721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980077698.8A Pending CN113168387A (zh) 2018-10-30 2019-10-29 向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息

Country Status (5)

Country Link
US (2) US10657078B1 (zh)
EP (1) EP3874378A4 (zh)
KR (1) KR20210066933A (zh)
CN (1) CN113168387A (zh)
WO (1) WO2020092439A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240094911A1 (en) * 2022-09-20 2024-03-21 Western Digital Technologies, Inc. Dynamic And Shared CMB And HMB Allocation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3350043B2 (ja) * 1990-07-27 2002-11-25 株式会社日立製作所 図形処理装置及び図形処理方法
US7404017B2 (en) 2004-01-16 2008-07-22 International Business Machines Corporation Method for managing data flow through a processing system
US7573821B2 (en) * 2005-08-17 2009-08-11 Intel Corporation Data packet rate control
US9210060B2 (en) * 2013-03-15 2015-12-08 Hewlett-Packard Development Company, L.P. Flow control transmission
US9977628B2 (en) 2014-04-16 2018-05-22 Sandisk Technologies Llc Storage module and method for configuring the storage module with memory operation parameters
KR102314135B1 (ko) 2015-06-22 2021-10-18 삼성전자 주식회사 적응적인 루프를 수행하는 플래시 메모리 장치, 메모리 시스템 및 그 동작방법
CN107992436B (zh) 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing

Also Published As

Publication number Publication date
WO2020092439A1 (en) 2020-05-07
US20200257638A1 (en) 2020-08-13
US10657078B1 (en) 2020-05-19
US10956344B2 (en) 2021-03-23
EP3874378A1 (en) 2021-09-08
KR20210066933A (ko) 2021-06-07
EP3874378A4 (en) 2022-08-17
US20200133897A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
US11042481B1 (en) Efficient processing of commands in a memory sub-system
US11669451B2 (en) Multi-plane switching of non-volatile memory
US11726869B2 (en) Performing error control operation on memory component for garbage collection
WO2020033487A1 (en) Adjustment of a pre-read operation associated with a write operation
US20220050772A1 (en) Data block switching at a memory sub-system
CN113424165A (zh) 在存储器子系统处的编程操作的中断
KR20210065202A (ko) 저 레이턴시 메모리에 데이터 재배치
US20240062820A1 (en) Tracking operations performed at a memory device
WO2022093961A1 (en) Versioning data stored on memory device
US20200089610A1 (en) Cache operations in a hybrid dual in-line memory module
US10956344B2 (en) Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system
US11977480B2 (en) Scaling factors for media management operations at a memory device
US11693784B2 (en) Elastic buffer in a memory sub-system for debugging information
US20220283735A1 (en) Enabling memory access transactions for persistent memory
CN113377285B (zh) 用于读取干扰的预测性媒体管理
US11693736B2 (en) Modifying conditions for memory device error corrections operations
US11709538B2 (en) Minimizing power loss and reset time with media controller suspend
WO2022027578A1 (en) Memory overlay using host memory buffer

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