CN113906383B - 主机系统和存储器子系统之间的定时数据传送 - Google Patents

主机系统和存储器子系统之间的定时数据传送 Download PDF

Info

Publication number
CN113906383B
CN113906383B CN202080033441.5A CN202080033441A CN113906383B CN 113906383 B CN113906383 B CN 113906383B CN 202080033441 A CN202080033441 A CN 202080033441A CN 113906383 B CN113906383 B CN 113906383B
Authority
CN
China
Prior art keywords
memory
data
memory subsystem
write
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
CN202080033441.5A
Other languages
English (en)
Other versions
CN113906383A (zh
Inventor
S·苏巴劳
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 CN113906383A publication Critical patent/CN113906383A/zh
Application granted granted Critical
Publication of CN113906383B publication Critical patent/CN113906383B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

存储器子系统针对写入命令将数据从主机系统的传送排程会减少正缓冲于存储器子系统中的数据的量和时间。举例来说,在从主机系统接收到多个写入命令流之后,所述存储器子系统识别所述存储器子系统中的多个媒体单元分别用于多个写入命令的并行执行。响应于所述命令经识别分别用于所述多个媒体单元中的并行执行,所述存储器子系统起始所述写入命令的所述数据从所述主机系统到所述存储器子系统的本地缓冲存储器的传达。所述存储器子系统具有缓冲队列中的写入命令以用于可能的无次序执行的容量,但用于仅缓冲所述写入命令的即将执行的部分的所述数据的容量有限。

Description

主机系统和存储器子系统之间的定时数据传送
相关申请案
本申请案主张2019年5月6日申请的标题为“主机系统和存储器子系统之间的定时数据传送(Timed Data Transfer between a Host System and a Memory Sub-System)”的美国专利申请案序列号62/844,059和2020年5月1日申请的标题为“主机系统和存储器子系统之间的定时数据传送(Timed Data Transfer between a Host System and a MemorySub-System)”的美国专利申请案序列号16/865,244的优先权,所述申请案的全部公开内容由此以引用方式并入本文中。
技术领域
本文中所公开的至少一些实施例大体涉及存储器系统,且更具体地(但不限于),涉及主机系统和存储器子系统之间的定时数据传送。
背景技术
存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
实施例是借助于实例而非限制在附图的图中来说明的,在附图中相似参考指示类似元件。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2示出被配置成控制主机系统和存储器子系统之间的数据传送的定时的数据传送管理器。
图3示出具有定时数据传送的存储器子系统的实例。
图4说明被配置成支持主机系统和存储器子系统之间的数据传送的数据结构的实例。
图5示出定时数据传送的方法。
图6是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的方面至少一些针对于主机系统和存储器子系统之间的数据传送,其中数据传送经定时/排程以降低存储器子系统中的缓冲存储器需求且因此降低对存储器子系统中的电源失效保持电路的需求。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
传统上,基于高速缓存的架构在存储器子系统中用于将主机系统与存储器子系统隔离。当在存储器子系统中从主机系统接收到写入命令时,将数据从主机系统传送到存储器子系统中的高速缓存器。当写入工作负载超过存储器子系统的媒体的提交、存储或编程数据到媒体中的带宽时,归因于高速缓存缓冲器中缺少可用空间而节制主机系统中的输入/输出活动。虽然此类架构可使用高速缓存的数据提供低时延写入,但当写入工作负载超过存储器子系统的媒体的带宽时会有缺陷。举例来说,可发到存储器子系统的未完成命令的数目受存储器子系统中的高速缓存缓冲器存储器的大小限制。高速缓存缓冲器存储器的大小增加会提高对电源失效备用电路系统的能量存储能力的需求。另外,当两个或更多个命令映射到可一次仅执行一个命令的同一媒体单元时,发生命令冲突。所述冲突可引起缓冲存储器消耗增加正在存储于缓冲存储器中的数据的寿命增加。这可引起系统成本增加,原因是对高速缓存缓冲器存储器的大小需求增加且电源失效保持电路系统的能量存储能力增加。另外,第一写入流可通过以下操作来阻挡第二写入流:将数据缓冲于高速缓存缓冲器存储器中且不留出用于第二写入流的缓冲空间,使得即使当存在可用于执行第二写入流的写入命令的媒体单元时,仍会因为高速缓存缓冲器存储器中缺少缓冲空间而阻挡第二写入流。
本公开的至少一些方面通过主机系统和存储器子系统之间的定时数据传送来解决以上和其它缺陷。排队机制被配置成允许在存储器子系统中接受命令而无需将数据记录于存储器子系统中。排队的命令可映射到媒体单元并且保持在每媒体单元的待处理队列中。当媒体单元变得可用于执行写入命令时,为写入命令的数据分配缓冲空间;且根据媒体单元接受数据的可用度,推迟写入命令的数据从主机系统传送到存储器子系统的高速缓存缓冲器存储器以记录到媒体单元中的数据传送。可不按从主机系统接收到命令的次序执行媒体单元的队列中的命令。经由高速缓存缓冲器存储器传送数据以刚好及时用于提交、写入或编程到媒体单元中。因此,可执行无阻挡命令处理。这类布置降低高速缓存缓冲器存储器的大小需求,且减小高速缓存缓冲器存储器中的数据的寿命。举例来说,高速缓存缓冲器存储器的大小可减小到与可用于支持写入命令并行执行的媒体单元的数目成比例的大小。缓冲器寿命可减小到与主机系统和存储器子系统之间的针对写入命令并行执行的数据传送的数目成比例的时间段。高速缓存缓冲器存储器需求和缓冲器寿命的显著减小会降低电源失效保持需求。举例来说,存储器子系统的控制器的静态随机存取存储器(SRAM)存储器可用作高速缓存缓冲器存储器可去除。动态随机存取存储器(DRAM)高速缓存。这类技术可通过将更多数据保持在受主机控制并且使用主机系统中的电路系统防电源失效的存储器中,去除计算机系统中的易失性存储器的防电源失效的双倍成本。当使用这类技术时,主机写入流和/或冲突的数目增加不会提高对存储器子系统中的高速缓存缓冲器存储器和电源失效保持电路的需求。另外,这类技术可具有无阻挡和无次序命令处理的益处。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置102)、一或多个非易失性存储器装置(例如,存储器装置104),或这类的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,例如台式计算机、手提式计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到……”或“与……耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
主机系统120可包含处理器芯片组(例如,处理装置118)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,控制器116)(例如,NVDIMM控制器)和存储协议控制器(例如,外围组件互连高速(PCIe)控制器、串行高级技术附件(SATA)控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置104)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统120的处理装置118可例如为微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些实例中,控制器116可被称为存储器控制器、存储器管理单元和/或起始器。在一个实例中,控制器116控制在耦合于主机系统120与存储器子系统110之间的总线上的通信。一般来说,控制器116可将对存储器装置102、104的所要存取的命令或请求发送到存储器子系统110。控制器116可另外包含用于与存储器子系统110通信的接口电路系统。接口电路系统可将从存储器子系统110接收的响应转换成用于主机系统120的信息。
主机系统120的控制器116可与存储器子系统110的控制器115进行通信以执行操作,例如在存储器装置102、104处读取数据、写入数据或擦除数据以及其它此类操作。在一些情况下,控制器116集成于处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装隔开。控制器116和/或处理装置118可包含例如一或多个集成电路(IC)和/或离散组件、缓冲存储器、高速缓存存储器或其组合的硬件。控制器116和/或处理装置118可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或另一合适的处理器。
存储器装置102、104可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置102)可为(但不限于)随机存取存储器(RAM),如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器组件的一些实例包含“与非”(NAND)类型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含(例如)二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置104中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元(例如单层级单元(SLC))可每单元存储一个位。其它类型的存储器单元(例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五到层级单元(PLC))可每单元存储多个位。在一些实施例中,存储器装置104中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,和MLC部分、TLC部分或QLC部分。存储器装置104的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
虽然描述了非易失性存储器装置,例如3D交叉点型和NAND型存储器(例如,2DNAND、3D NAND),但存储器装置104可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器,以及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置104通信以执行操作,例如在存储器装置104处读取数据、写入数据或擦除数据和其它这类操作(例如,响应于控制器116在命令总线上排程的命令)。控制器115可包含硬件,例如一或多个集成电路(IC)和/或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
控制器115可包含处理装置117(处理器),其被配置成执行存储于本地存储器119中的指令。在所说明的实例中,控制器115的本地存储器119包含被配置成存储指令以用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的嵌入式存储器。
在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是替代地可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置104的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置104相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置104的命令指令,以及将与存储器装置104相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从控制器115接收地址且对地址进行解码以存取存储器装置104。
在一些实施例中,存储器装置104包含本地媒体控制器105,其结合存储器子系统控制器115操作以在存储器装置104的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104是受管理存储器装置,其为与同一存储器装置封装内进行媒体管理的本地控制器(例如,本地控制器105)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
计算系统100包含存储器子系统110中的数据传送管理器113,其推迟用于写入命令的数据传送直到确定一或多个媒体单元/存储器组件可用于提交、存储、写入或编程数据到媒体单元/存储器组件中为止。在一些实施例中,存储器子系统110中的控制器115包含数据传送管理器113的至少一部分。在其它实施例中,或组合地,主机系统120中的控制器116和/或处理装置118包含数据传送管理器113的至少一部分。举例来说,控制器115、控制器116和/或处理装置118可包含实施数据传送管理器113的逻辑电路系统。举例来说,控制器115或主机系统120的处理装置118(处理器)可被配置成执行存储于存储器中的指令以用于执行本文所描述的数据传送管理器113的操作。在一些实施例中,数据传送管理器113实施于安置于存储器子系统110中的集成电路芯片中。在其它实施例中,数据传送管理器113是主机系统120的操作系统、装置驱动器或应用程序的部分。
数据传送管理器113可排程从主机系统120到存储器子系统110的数据传送以减少在数据被提交、存储、写入或编程到存储器装置(以下还称为媒体单元或存储器组件)102到104中之前存储器子系统110中的数据缓冲的量和时间。举例来说,当确定媒体单元(例如,102或104)可用(例如,不忙于其它操作)于执行写入命令时,数据传送管理器113起始用于写入命令的数据从主机系统120到存储器子系统110的传送。当确定媒体单元(例如,102或104)忙于针对另一命令的操作时,数据传送管理器113推迟排队的写入命令的数据针对媒体单元(例如,102或104)从主机系统120到存储器子系统110的传送。一般来说,数据传送管理器113被配置成针对媒体单元102到104的被确定为可用于写入操作的子集起始从主机系统120到存储器子系统110的数据传送,并且针对媒体单元102到104的忙于其它操作的剩余子集推迟另外数据的传送。由于从主机系统120提取写入命令的数据以刚好及时用于写入命令的执行,因此数据传送管理器113可根据媒体单元/存储器组件102到104的写入、存储、提交或编程数据以用于存储的带宽,减少和/或最小化正在缓冲于存储器子系统110中的数据的量和时间。下文描述关于数据传送管理器113的操作的另外细节。
图2示出被配置成控制主机系统120和存储器子系统110之间的数据传送的定时的数据传送管理器113。举例来说,图2的数据传送管理器113可实施于图1的计算机系统100中。
在图2中,主机系统120具有存储将写入到存储器子系统110的媒体203中的数据的易失性存储器133。
主机系统120具有电源失效保持电路131,其可为易失性存储器133和/或主机系统120的其它组件(例如,图1中所说明的处理装置118)提供足够电力,使得在电源故障的事件中,可确保易失性存储器133中的数据135安全。举例来说,在电源故障事件期间,电源失效保持电路131可在长到足以允许易失性存储器133中的数据存储到存储器子系统110的非易失性媒体203和/或另一存储器装置中的时间段内为易失性存储器133供电。
任选地,主机系统120可将数据135高速缓存于替换易失性存储器133的非易失性存储器中。因此,存储于非易失性存储器中的数据135防电源失效;且可去除用于易失性存储器133的电源失效保持电路131。然而,使用非易失性存储器替换易失性存储器133可降低数据存取性能和/或增加主机系统120的成本。在一些情况下,可在主机系统120中使用易失性存储器133和非易失性存储器的组合(例如,以在电源故障事件中确保数据和/或提高数据存取性能安全)。
在图2中,存储器子系统110的数据传送管理器113可为从主机系统120的控制器116接收的命令维持至少一个命令队列143。队列143中的命令可存储于存储器子系统110的控制器(例如,图1中所说明的115)的本地存储器119中。可在无数据将写入到媒体203中的情况下,将来自主机系统120的写入命令接受到队列143中。在一些情况下,命令排队允许存储器子系统110中命令的无次序执行以取得性能优化。
在图2中,本地存储器119具有可用以在电源故障事件期间保护本地存储器119中的内容(例如,146和143)的电源失效保持电路141。在电源故障事件期间,电源失效保持电路141可在长到足以允许内容存储到非易失性存储器(例如,媒体203)中的时间段内为本地存储器119供电。
任选地,非易失性存储器可使用实施本地存储器119以消除对电源失效保持电路141的需求,或使用非易失性存储器的组合实施以降低对电源失效保持电路141的需求。
在图2中,数据传送管理器113被配置成将主机系统120和存储器子系统110之间的数据传送定时/排程,且因此降低本地存储器119的大小需求和/或电源失效保持电路141的容量需求。
举例来说,数据传送管理器113不自动接受和/或传送在命令队列143中排队的所有写入命令的数据。为了减少正在缓冲于本地存储器119中的数据145的量,数据传送管理器113推迟写入命令的数据传送并且当确定媒体单元中的一个(例如,109A或109N,例如图1中所说明的存储器装置102和/或104)准备好执行写入命令时起始所述传送。
因此,对于媒体单元109A到109N中的每一个,本地存储器119可缓冲一些写入命令的数据但不缓冲其它写入命令的数据。在一些实施方案中,本地存储器119被配置成缓冲不大于预定数目的命令的数据(例如,每媒体单元一个或两个或另一数目个命令)。然而,与本地存储器119可针对媒体单元109A到109N中的每一个缓冲的写入命令的数据相比,命令队列143可针对相应媒体单元(例如,109A或109N)缓冲更多写入命令(例如,以启用无次序命令执行)。
当命令和其数据之间的大小比率较大时,缓冲命令时将命令的数据缓冲减少的技术可为尤其有利的。
任选地,数据传送管理器113可为媒体单元109A到109N中的每一个配置队列(例如,143)。替代地,数据传送管理器113可为媒体单元109A到109N配置组合式命令队列(例如,143)并且当媒体单元109A到109N变得可用于执行写入命令时为媒体单元109A到109N动态地指配写入命令。举例来说,当写入命令准备好在可用媒体单元(例如,109A或109N)中执行时,可动态地产生用于映射写入命令中识别的逻辑地址的媒体布局的一部分以将逻辑地址映射到目前可用的媒体单元(例如,109A或109N)中的存储器方位。因此,可在可用媒体单元(例如,109A或109N)中执行写入命令。
图3示出具有定时数据传送的存储器子系统的实例。举例来说,图3的存储器子系统可使用图2的数据传送管理器113实施于图1的存储器子系统110中。然而,图1和图2的技术不限于图3中所说明的存储器子系统的实施方案。举例来说,所述技术可实施平面块装置、支持名称空间的装置,或支持分区名称空间的装置(例如,图3中所说明的存储器子系统)。因此,本文中呈现的公开内容不限于图3的实例。
在图3中,名称空间201被配置于存储器子系统110的媒体存储容量上。名称空间201提供可供主机系统120用于指定用于读取或写入操作的存储器方位的逻辑块寻址空间。可在存储器子系统110的媒体存储容量的一部分上,或在存储器子系统110的整体媒体存储容量上分配名称空间201。在一些情况下,可在存储器子系统110的媒体存储容量的单独的不重叠部分上分配多个名称空间。
在图3中,名称空间201配置有多个区带211、213、……、219。名称空间中的每个区带(例如,211)允许对区带(例如,211)中的本地块寻址(LBA)地址的随机读取存取和对区带(例如,211)中的LBA地址的连续写入存取,但不允许对区带(211)中的随机LBA地址的随机写入存取。因此,在名称空间201的LBA地址空间中以预定循序次序执行将数据写入到区带(例如,211)中的操作。
当名称空间201中的区带(例如,211)经配置时,有可能预定区带(例如,211)的媒体媒体(例如为简单起见)。区带(例如,211)中的LBA地址可预映射到存储器子系统110的媒体203。然而,如上文所论述,当存在多个并行写入流时,这类预定的媒体布局可引起媒体存取冲突。使从区带(例如,211)中的LBA地址到媒体203中的存储器方位的映射随机化可减少冲突但无法消除冲突。
优选地,动态数据放置器153被配置于存储器子系统110中以在将写入命令排程以供执行的时间,创建媒体布局130的部分,因而不会完全消除媒体存取冲突。在一些实施方案中,动态数据放置器153可以是数据传送管理器113的部分。
举例来说,存储器子系统110的媒体203可具有多个集成电路裸片205、……、207。集成电路裸片(例如,205)中的每一个可具有多个存储器单元(例如,NAND存储器单元)平面221、……、223。所述平面(例如,221)中的每一个可具有多个存储器单元(例如,NAND存储器单元)块231、……、233。所述块(例如,231)中的每一个可具有多个存储器单元(例如,NAND存储器单元)页241、……、243。每个页(例如,241)中存储器单元被配置成经编程以在原子操作中一起存储/写入/提交数据;且每一块(例如,231)中的存储器单元被配置成在原子操作中被一起擦除数据。
当用于将数据存储于一个区带(例如,211)中的写入命令(例如,123A)和用于将数据存储于另一区带(例如,213)中的另一写入命令(例如,123N)经排程用于并行执行(这是由于两个集成电路裸片(例如,205和207)可用于写入命令(例如,123A和123N)的并行操作)时,动态数据放置器153将写入命令的LBA地址映射到位于不同裸片(例如,205和207)中的页中。因此,可避免媒体存取冲突。
另外,当确定两个集成电路裸片(例如,205和207)可用于执行写入命令(例如,123A和123N)时,数据传送管理器113起始写入命令(例如,123A和123N)的数据145从主机系统120的存储器133到存储器子系统110的本地存储器119的传送。因此,队列143中的写入命令的大部分数据135可存储于主机存储器133中,而在存储器子系统110中的命令队列143所述接受对应的自身写入命令。数据145是针对准备好被执行的写入命令(例如,123A和123N)以用于将数据存储到集成电路裸片(例如,205和207)中可用于服务写入命令(例如,123A和123N)的存储器单元中。由于仅传送数据145刚好及时用于可用集成电路裸片(例如,205和207),因此减小和/或最小化正缓冲于本地存储器119中的数据145的寿命。另外,可减小和/或最小化缓冲于本地存储器119中的数据145的量。写入命令的数据145的寿命和量的减小可降低对在电源故障事件中确保本地存储器119的内容安全的需求。
图4说明被配置成支持主机系统和存储器子系统之间的数据传送的数据结构的实例。举例来说,可使用图4的数据结构实施图3的媒体布局130。
在图4中,区带映射301被配置成提供名称空间(例如,201)中的区带(例如,211)的媒体布局信息。区带映射301可具有多个条目。区带映射301中的每一条目识别关于区带(例如,211)的信息,例如区带(例如,211)的起始LBA地址311、区带(例如,211)的块集识别符313、区带(例如,211)的光标值315、区带(例如,211)的状态317等。
主机系统120在开始于区带起始LBA地址311的区带(例如,211)中写入数据。主机系统120在LBA空间中将数据循序写入于区带(例如,211)中。在某一量的数据已经写入到区带(例如,211)中之后,用于写入后续数据的当前起始LBA地址由光标值315识别。区带的每一写入命令将光标值315移动到新的起始LBA地址以用于区带的下一写入命令。状态317可具有指示区带(例如,211)为空、满、隐式地开放、显式地开放、关闭等等的值。
在图4中,逻辑到物理块映射303被配置成促进LBA地址(例如,331)转译成媒体(例如,203)中的物理地址。
逻辑到物理块映射303可具有多个条目。LBA地址(例如,331)可用作或转换成逻辑到物理块映射303中的条目的索引。所述索引可用以查找LBA地址(例如,331)的条目。逻辑到物理块映射303中的每一条目针对LBA地址(例如,331),识别媒体(例如,203)中的存储器块的物理地址。举例来说,媒体(例如,203)中的存储器块的物理地址可包含裸片识别符333、块识别符335、页映射条目识别符337等。
裸片识别符333识别存储器子系统110的媒体203中的具体集成电路裸片(例如,205或207)。
块识别符335识别使用裸片识别符333识别的集成电路裸片(例如,205或207)内的特定存储器块(例如,NAND快闪存储器)。
页映射条目识别符337识别页映射305中的条目。
页映射305可具有多个条目。页映射305中的每一条目可包含识别存储器单元块(例如,NAND存储器单元)内的存储器单元页的页识别符351。举例来说,页识别符351可包含页的字线编号和NAND存储器单元块中的页的子块编号。此外,页的条目可包含页的编程模式353。举例来说,页可在SLC模式、MLC模式、TLC模式或QLC模式中编程。当配置于SLC模式中时,页中的每一存储器单元将存储一个数据位。当配置于MLC模式中时,页中的每一存储器单元将存储两个数据位。当配置于TLC模式中时,页中的每一存储器单元将存储三个数据位。当配置于QLC模式中时,页中的每一存储器单元将存储四个数据位。集成电路裸片(例如,205或207)中的不同页可具有用于数据编程的不同模式。
在图4中,块集表307存储区带(例如,211)的动态媒体布局的数据控制方面。
块集表307可具有多个条目。块集表307中的每一条目识别在其中存储区带(例如,211)的数据的集成电路裸片(例如,205和207)数目/计数371。对于用于区带(例如,211)的集成电路裸片(例如,205和207)中的每一个,块集表307的条目具有裸片识别符373、块识别符375、页映射条目识别符377等。
裸片识别符373识别存储器子系统110的媒体203中的具体集成电路裸片(例如,205或207),在所述裸片(例如,205或207)上可存储区带(例如,211)的后续数据。
块识别符375识别使用裸片识别符373识别的集成电路裸片(例如,205或207)内的存储器(例如,NAND快闪存储器)的具体块(例如,231或233),在所述块(例如,231或233)中可存储区带(例如,211)的后续数据。
页映射条目识别符337识别页映射305中的条目,其识别可用以存储区带(例如,211)的后续数据的页(例如,241或241)。
图5示出定时数据传送的方法。图5的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,至少部分地通过图1、2或3的数据传送管理器113执行图5的方法。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理程序的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在框401处,存储器子系统110从主机系统120接收多个写入命令流。举例来说,在一个实施例中,所述多个流中的每个相应流被配置成在逻辑地址空间中循序写入数据;且在另一实施例中,所述多个流中的流被配置成伪循序写入数据,或在一个实施例中,在逻辑地址空间中随机写入数据。每一写入流包含经标注以将数据集一起作为群组进行写入、微调、覆写的命令集。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选地,群组中的数据写入到擦除块集合中,其中擦除块集合中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块集合以移除所述流的数据,而不擦除其它流的数据。
举例来说,准许写入流中的每一个循序在存储器子系统110的媒体203上所分配的名称空间(例如,201)中的区带(例如,211)中的LBA地址处写入,但禁止在LBA地址空间中无序写入数据。
在框403处,存储器子系统110的数据传送管理器113识别存储器子系统110中可用于并行写入数据的多个媒体单元(例如,109A到109N)。
在框405处,数据传送管理器113从多个流中选择第一命令以供在可用于写入数据的多个媒体单元中的并行执行。
在框407处,数据传送管理器113响应于第一命令经选择用于多个媒体单元中的并行执行,起始第一命令的第一数据从主机系统120到存储器子系统110的本地存储器119的传达。举例来说,推迟第一数据的传送直到多个媒体单元可用于执行用于存储第一数据的写入操作。传送推迟减少正缓冲第一数据的时间。响应于多个媒体单元可用于执行写入操作,为第一数据分配本地存储器119中的缓冲空间以用于从主机系统120传达到存储器子系统110的第一数据的缓冲。
在框409处,存储器子系统110通过将数据存储到多个存储器单元中来并行执行第一命令。举例来说,一旦第一数据已从本地存储器119传送到多个媒体单元,便可从缓冲第一数据中释放为第一数据分配的缓冲空间。在一些情况下,可在多个媒体单元完成编程/写入第一数据之前释放缓冲空间。
举例来说,在排程第一命令以供执行的时间,在存储器子系统110的媒体203的存储器单元的子集中执行第二命令的操作可正在进行中。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在针对存储器子系统110的媒体203的存储器单元的子集排程第一命令之后,数据传送管理器113起始将经由第一命令写入的数据从主机系统120到存储器子系统110的传送。第一命令的数据的刚好及时传送会减少正缓冲于存储器子系统110的本地存储器119中的数据的量和时间且因此减少本地存储器119的容量需求和被配置成用于本地存储器119的电源失效保持电路141的容量需求。第一命令可在多个媒体单元中并行地执行和/或与在存储器子系统110的剩余媒体单元中执行第二命令的进程并行地执行。
举例来说,存储器子系统110被配置成将不大于预定数目的数据单元缓冲于本地存储器119中。所述预定数目对应于存储器子系统110中的能够在写入数据时彼此独立地操作的媒体单元109A到109N的数目。每个数据单元不大于将响应于单个写入命令而写入于媒体单元(例如,109A或109N)中的最大数据量。因此,本地存储器119的缓冲容量不限制主机系统120可发送到存储器子系统110的写入流的数目。正缓冲于本地存储器133中的数据的量和时间的减少可减少对存储器子系统110的对应电源失效保持电路141的需求。
存储器子系统110可接受写入命令并将所述写入命令在本地存储器119中的一或多个队列143中排队。排队的写入命令的数目可显著大于可缓冲于本地存储器119中的数据单元的预定数目。由于存储器子系统110的性能受到媒体单元109A到109N的在执行并行写入命令时并行地提交、写入、存储或编程数据的带宽限制,因此本地存储器119的用于写入命令的数据的有限缓冲容量不影响存储器子系统110的性能。
当比可并行地执行的命令更多的命令经排队时,存储器子系统110可不按其到达存储器子系统110的次序选择性地执行某些命令。
缓冲存储器需求减少允许本地存储器119配置为控制器115的静态随机存取存储器(SRAM)且因此不需要DRAM缓冲将写入来存储器子系统110的媒体203中的数据。举例来说,静态随机存取存储器(SRAM)缓冲写入命令的数据的容量可小于缓冲在存储器子系统中排队的所有写入命令所需的容量。
任选地,每个相应媒体单元(例如,109A或109N)具有用于被配置成将数据写入到相应媒体单元(例如,109A或109N)中的写入命令的命令队列。所述命令队列可存储多个写入命令;且本地存储器119可被配置成限制其用于写入命令的数据的缓冲存储器。举例来说,缓冲存储器可受限于队列中的命令的一小部分的容量。举例来说,缓冲存储器可受限于可响应于单个写入命令(或小于可针对相应媒体单元排队的写入命令的总数目的预定数目写入命令)编程/写入/存储/提交到相应媒体单元(例如,109A或109N)的数据的大小中。
任选地,响应于确定可在可用媒体单元中并行地执行第一命令,动态地确定媒体布局130的用于第一命令中使用的逻辑地址的部分。
举例来说,在识别出可用于执行接下来的命令的多个存储器单元(例如,集成电路裸片)之后,数据传送管理器113可从块集表307识别可用于存储接下来的命令的数据的物理地址。所述物理地址可用于针对接下来的命令中使用的LBA地址更新逻辑到物理块映射303中的对应条目。
举例来说,当集成电路裸片(例如,205)自由写入数据时,数据传送管理器113可确定可写入/编程到集成电路裸片(例如,205)中的存储器单元中的区带的命令。从块集表307,数据传送管理器113和/或动态数据放置器153可定位用于区带(例如,205)的条目,定位与集成电路裸片(例如,205)的识别符373相关联的块识别符375和页映射条目识别符377,并且使用裸片识别符373、块识别符375和页映射条目识别符377针对区带(例如,211)的命令中使用的LBA地址331更新逻辑到物理块映射303中的条目的对应字段。因此,可针对LBA地址331在无媒体存取冲突的情况下执行区带(例如,211)的命令。
在一些实施方案中,处理装置118与存储器子系统110之间的通信信道包含计算机网络,如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);且处理装置118和存储器子系统可配置成使用与NVMe协议中的那些类似的数据存储管理和使用命令来彼此通信。
存储器子系统110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维护存储在其中的数据/信息。存储器单元可使用各种存储器/存储装置技术来实施,所述存储器/存储装置技术例如NAND逻辑门、NOR逻辑门、相变存储器(PCM)、磁存储器(MRAM)、电阻式随机存取存储器、交叉点存储装置及存储器装置(例如,3D XPoint存储器)。交叉点存储器装置使用具有较少晶体管的存储器元件,所述晶体管中的每一个具有在一起堆叠成立柱的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两个层中的每一层上的一个线路的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。
存储器子系统(例如,110)的控制器(例如,115)可运行固件以响应于来自处理装置118的通信而执行操作。一般来说,固件是一种提供工程化计算装置的控制、监测和数据操纵的计算机程序类型。
涉及控制器115的操作的一些实施例可使用由控制器115执行的计算机指令(如控制器115的固件)来实施。在一些情况下,硬件电路可用于实施功能中的至少一些。固件可最初存储在非易失性存储媒体或另一非易失性装置中,且加载到易失性DRAM和/或处理器内高速缓存存储器中以供控制器115执行。
非暂时性计算机存储媒体可用于存储存储器子系统(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,指令使控制器115和/或处理装置117执行上文所论述的方法。
图6说明计算机系统500的实例机器,可执行所述计算机系统500内的用于致使所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统500可对应于包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行数据传送管理器113的操作(例如,执行指令以执行对应于参考图1-5描述的数据传送管理器113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂巢式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定将由所述机器采取的动作的一组指令的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态随机存取存储器(SRAM)等),以及数据存储系统518,其经由总线530(其可包含多个总线)彼此通信。
处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置502配置成执行指令526,以用于执行本文中所论述的操作和步骤。计算机系统500可另外包含网络接口装置508以在网络520上通信。
数据存储系统518可包含机器可读存储媒体524(也被称作计算机可读媒体),在所述机器可读存储媒体上存储有一或多组指令526或体现本文中所描述的方法或功能中的任何一或多个的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻留在主存储器504内和/或处理装置502内,所述主存储器504和所述处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可对应于图1的存储器子系统110。
在一个实施例中,指令526包含实施对应于数据传送管理器113(例如,参考图1-5描述的数据传送管理器113)的功能性的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
在本说明书中,各种功能和操作被描述为由计算机指令执行或由其引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是功能由一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路来实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用并无软件指令的固线式电路或结合软件指令实施实施例。因此,技术不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

Claims (18)

1.一种方法,其包括:
在存储器子系统中从主机系统接收多个写入命令流;
识别所述存储器子系统中的多个媒体单元,其中所述多个媒体单元经识别为可用于并行地写入来自所述多个流的数据;
从所述多个流中选择第一命令以供在所述多个媒体单元中并行执行;
通过所述存储器子系统响应于从多个写入流中选择所述第一命令以供在所述多个媒体单元中并行执行,起始来自所述多个写入流的所述第一命令的第一数据从所述主机系统到所述存储器子系统的本地缓冲存储器的传达;其中所述存储器子系统将不大于预定数目的数据单元缓冲于所述本地缓冲存储器中;所述预定数目对应于所述存储器子系统中能够在写入数据时彼此独立地操作的媒体单元的数目;且每个数据单元不大于将响应于单个写入命令而写入于媒体单元中的最大数据量;
将大于所述预定数目的写入命令在配置于所述存储器子系统的所述本地缓冲存储器中的至少一个命令队列中排队;和
通过将所述第一数据存储到多个存储器单元中来并行地执行所述第一命令。
2.根据权利要求1所述的方法,其另外包括:
响应于所述多个媒体单元可用于执行写入操作以存储所述第一数据,为所述第一数据分配缓冲空间;
将所述第一数据传送到所述多个媒体单元;和
响应于所述第一数据到所述多个媒体单元的所述传送完成,从缓冲所述第一数据中释放所述缓冲空间。
3.根据权利要求1所述的方法,其中选择所述第一命令的至少一部分不按根据在所述命令队列中接收到所述命令的次序执行。
4.根据权利要求3所述的方法,其中所述多个流中的每个相应流被配置成在逻辑地址空间中循序写入数据;且所述逻辑地址空间经定义于所述存储器子系统的名称空间中。
5.根据权利要求4所述的方法,其中所述名称空间配置有多个区带;且所述每个相应流被配置成写入于所述多个区带中的一个中。
6.根据权利要求5所述的方法,其中所述名称空间中的每个相应区带禁止所述逻辑地址空间中的非循序写入操作。
7.根据权利要求6所述的方法,其中所述名称空间中的所述每个相应区带允许所述逻辑地址空间中的随机读取操作。
8.根据权利要求5所述的方法,其中所述多个媒体单元中的每一个是基于位于存储器单元的单独集成电路裸片上而经识别。
9.一种存储器子系统,其包括:
多个媒体单元,其能够并行写入数据;
本地缓冲存储器;和
至少一个处理装置,其被配置成:
从主机系统接收多个写入命令流;
识别所述多个媒体单元当中的一或多个第一媒体单元,其中所述一或多个第一媒体单元经识别为可用于与所述多个媒体单元当中的一或多个第二媒体单元并行地写入来自所述多个流的数据,其中所述一或多个第二媒体单元正在写入数据的进程中;
从所述多个流中选择一或多个第一命令以与正在所述一或多个第二媒体单元中进行的一或多个第二命令并行执行;
响应于一或多个第一命令经选择用于并行执行,起始来自所述多个流的所述第一命令的第一数据从所述主机系统到所述存储器子系统的所述本地缓冲存储器的传达;和
通过将所述第一数据存储到所述一或多个第一存储器单元中,与所述一或多个第二媒体单元中的正在进行中的所述一或多个第二命令并行地执行所述一或多个第一命令;
其中所述存储器子系统将不大于预定数目的数据单元缓冲于所述本地缓冲存储器中;所述预定数目对应于所述存储器子系统中能够在写入数据时彼此独立地操作的媒体单元的数目;且每个数据单元不大于将响应于单个写入命令而写入于媒体单元中的最大数据量。
10.根据权利要求9所述的存储器子系统,其中所述多个流中的每个相应流被配置成在逻辑地址空间中循序写入数据;所述逻辑地址空间经定义于所述存储器子系统的名称空间中;所述名称空间配置有多个区带;所述每个相应流被配置成写入于所述多个区带中的一个中;所述名称空间中的每个相应区带禁止所述逻辑地址空间中的非循序写入操作但允许所述逻辑地址空间中的随机读取操作。
11.根据权利要求10所述的存储器子系统,其中所述多个媒体单元中的每一个是基于位于存储器单元的单独集成电路裸片上而经识别。
12.根据权利要求11所述的存储器子系统,其中所述本地缓冲存储器是静态随机存取存储器(SRAM)。
13.根据权利要求12所述的存储器子系统,其中所述存储器子系统不具有动态随机存取存储器(DRAM);且所述存储器子系统另外包括:
电源失效保持电路,其被配置成在电源故障事件中为所述静态随机存取存储器(SRAM)供电直到所述静态随机存取存储器(SRAM)中的内容存储到所述多个媒体单元中为止。
14.根据权利要求13所述的存储器子系统,其中所述静态随机存取存储器(SRAM)的用以缓冲写入命令的数据的容量小于缓冲在所述存储器子系统中排队的所有写入命令的容量。
15.一种存储指令的非暂时性计算机存储媒体,所述指令在存储器子系统中执行时,致使所述存储器子系统执行一方法,所述方法包括:
在所述存储器子系统中从主机系统接收多个写入命令流;
识别所述存储器子系统中的多个媒体单元,其中所述多个媒体单元经识别为可用于并行地写入来自所述多个流的数据;
从所述多个流中选择第一命令以供在所述多个媒体单元中并行执行;
通过所述存储器子系统响应于从多个流中选择所述第一命令以供在所述多个媒体单元中并行执行,起始所述第一命令的第一数据从所述主机系统到所述存储器子系统的本地缓冲存储器的传达;其中所述存储器子系统将不大于预定数目的数据单元缓冲于所述本地缓冲存储器中;所述预定数目对应于所述存储器子系统中能够在写入数据时彼此独立地操作的媒体单元的数目;且每个数据单元不大于将响应于单个写入命令而写入于媒体单元中的最大数据量;和
通过将所述第一数据存储到多个存储器单元中来并行地执行所述第一命令。
16.根据权利要求15所述的非暂时性计算机存储媒体,其中所述多个流中的每个相应流被配置成在逻辑地址空间中循序写入数据;所述逻辑地址空间经定义于所述存储器子系统的名称空间中;所述名称空间配置有多个区带;所述每个相应流被配置成写入于所述多个区带中的一个中;且所述名称空间中的每个相应区带禁止所述逻辑地址空间中的非循序写入操作。
17.根据权利要求16所述的非暂时性计算机存储媒体,其中所述方法另外包括:
将大于所述预定数目的写入命令在配置于所述存储器子系统的所述本地缓冲存储器中的至少一个命令队列中排队。
18.根据权利要求15所述的非暂时性计算机存储媒体,其中所述方法另外包括:
在用于所述存储器子系统中的每个相应媒体单元的单独队列中,将被配置成将数据写入到所述相应媒体单元中的写入命令排队,其中所述存储器子系统缓冲在用于所述相应媒体单元的所述单独队列中所缓冲的所述写入命令中的不大于一个的写入命令的数据。
CN202080033441.5A 2019-05-06 2020-05-05 主机系统和存储器子系统之间的定时数据传送 Active CN113906383B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962844059P 2019-05-06 2019-05-06
US62/844,059 2019-05-06
US16/865,244 2020-05-01
US16/865,244 US11113198B2 (en) 2019-05-06 2020-05-01 Timed data transfer between a host system and a memory sub-system
PCT/US2020/031476 WO2020227294A1 (en) 2019-05-06 2020-05-05 Timed data transfer between a host system and a memory sub-system

Publications (2)

Publication Number Publication Date
CN113906383A CN113906383A (zh) 2022-01-07
CN113906383B true CN113906383B (zh) 2024-05-17

Family

ID=73046396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080033441.5A Active CN113906383B (zh) 2019-05-06 2020-05-05 主机系统和存储器子系统之间的定时数据传送

Country Status (3)

Country Link
US (3) US11113198B2 (zh)
CN (1) CN113906383B (zh)
WO (1) WO2020227294A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113198B2 (en) 2019-05-06 2021-09-07 Micron Technology, Inc. Timed data transfer between a host system and a memory sub-system
US11561705B2 (en) * 2021-03-18 2023-01-24 Dell Products L.P. Centralized discovery controller storage provisioning
US11733884B2 (en) * 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11895029B2 (en) * 2021-12-10 2024-02-06 Nokia Solutions And Networks Oy Network processor with external memory protection
US20230186289A1 (en) * 2021-12-14 2023-06-15 Micron Technology, Inc. Solid State Drives with Autonomous Control of Proof of Space Activities
US12026379B2 (en) * 2022-03-14 2024-07-02 Western Digital Technologies, Inc. Data storage device and method for host-initiated transactional handling for large data set atomicity across multiple memory commands
US11868660B2 (en) * 2022-04-14 2024-01-09 Micron Technology Inc. End-to-end quality of service management for memory device
US11880604B2 (en) 2022-05-12 2024-01-23 Western Digital Technologies, Inc. Read fused groups with uniform resource allocation
US11941273B2 (en) 2022-05-12 2024-03-26 Western Digital Technologies, Inc. Variable capacity Zone Namespace (ZNS) flash storage data path
US11922036B2 (en) 2022-05-12 2024-03-05 Western Digital Technologies, Inc. Host data stream assignment with space-leveling across storage block containers
US11803444B1 (en) * 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750226A (zh) * 2011-02-28 2012-10-24 苹果公司 具有非易失性存储器的系统的高效缓冲
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
CN105247478A (zh) * 2013-05-31 2016-01-13 高通股份有限公司 命令指令管理
CN106030518A (zh) * 2014-03-27 2016-10-12 英特尔公司 用于整理和退出存储的指令和逻辑
CN106575259A (zh) * 2014-08-15 2017-04-19 美光科技公司 用于同时存取存储器的不同存储器平面的设备及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836435B2 (en) 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
US7577787B1 (en) * 2006-12-15 2009-08-18 Emc Corporation Methods and systems for scheduling write destages based on a target
US9354887B2 (en) * 2010-06-28 2016-05-31 International Business Machines Corporation Instruction buffer bypass of target instruction in response to partial flush
US8699277B2 (en) 2011-11-16 2014-04-15 Qualcomm Incorporated Memory configured to provide simultaneous read/write access to multiple banks
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9412455B2 (en) * 2013-09-11 2016-08-09 Kabushiki Kaisha Toshiba Data write control device and data storage device
CN105450704A (zh) * 2014-08-28 2016-03-30 北京兆易创新科技股份有限公司 一种用于闪存的网络存储设备及其处理方法
US10338842B2 (en) 2017-05-19 2019-07-02 Samsung Electronics Co., Ltd. Namespace/stream management
CN108984104B (zh) * 2017-06-02 2021-09-17 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备
KR102398186B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
JP7031961B2 (ja) * 2017-08-04 2022-03-08 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
US11113198B2 (en) 2019-05-06 2021-09-07 Micron Technology, Inc. Timed data transfer between a host system and a memory sub-system
US11294820B2 (en) * 2019-06-28 2022-04-05 Micron Technology, Inc. Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US11194521B1 (en) * 2020-05-27 2021-12-07 Western Digital Technologies, Inc. Rate limit on the transitions of streams to open
US11893413B2 (en) * 2020-09-11 2024-02-06 Apple Inc. Virtual channel support using write table

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750226A (zh) * 2011-02-28 2012-10-24 苹果公司 具有非易失性存储器的系统的高效缓冲
CN105247478A (zh) * 2013-05-31 2016-01-13 高通股份有限公司 命令指令管理
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
CN106030518A (zh) * 2014-03-27 2016-10-12 英特尔公司 用于整理和退出存储的指令和逻辑
CN106575259A (zh) * 2014-08-15 2017-04-19 美光科技公司 用于同时存取存储器的不同存储器平面的设备及方法

Also Published As

Publication number Publication date
US20200356484A1 (en) 2020-11-12
US11487666B2 (en) 2022-11-01
WO2020227294A1 (en) 2020-11-12
CN113906383A (zh) 2022-01-07
US20230004495A1 (en) 2023-01-05
US11113198B2 (en) 2021-09-07
US20210374060A1 (en) 2021-12-02

Similar Documents

Publication Publication Date Title
CN113906383B (zh) 主机系统和存储器子系统之间的定时数据传送
CN113785278B (zh) 用于避免并发写入流之间冲突的动态数据放置
CN113924545B (zh) 基于存储器子系统中的媒体单元的可用性的预测性数据传输
US11709632B2 (en) Input/output size control between a host system and a memory sub-system
US11269552B2 (en) Multi-pass data programming in a memory sub-system having multiple dies and planes
US11782841B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US20240036768A1 (en) Partial Execution of a Write Command from a Host System
CN117836751A (zh) 使用存储器装置中的存储器存取命令队列提高存储器性能
US20220404979A1 (en) Managing queues of a memory sub-system

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