CN113094293B - 存储器系统及相关方法和计算机可读存储介质 - Google Patents
存储器系统及相关方法和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113094293B CN113094293B CN202011491775.5A CN202011491775A CN113094293B CN 113094293 B CN113094293 B CN 113094293B CN 202011491775 A CN202011491775 A CN 202011491775A CN 113094293 B CN113094293 B CN 113094293B
- Authority
- CN
- China
- Prior art keywords
- write command
- identifier
- data
- write
- memory
- 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
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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及链接存储器子系统的存取命令。可以接收包含第一数据的第一写入命令。所述第一写入命令可与第一标识符相关联。可以基于接收所述第一写入命令发出内部读取命令以检索存储在所述存储器子系统的传送单元中的数据。可以接收包含第二数据的第二写入命令。所述第二写入命令可与第二标识符相关联。可以基于接收所述第二写入命令将所述第一标识符与所述第二标识符链接,并且可以发出内部写入命令,其包含与所述第一写入命令相关联的所述第一数据和与所述第二写入命令相关联的所述第二数据。
Description
交叉引用
本专利申请主张赵(Zhao)等人于2019年11月23日提交的题为“链接存储器子系统的存取命令(LINKING ACCESS COMMANDS FOR A MEMORY SUB-SYSTEM)”的第16/726,124号美国专利申请的优先权,该专利申请已转让给本申请的受让人,并且其全部内容通过引用明确并入本文。
技术领域
本技术领域涉及链接存储器子系统的存取命令。
背景技术
存储器子系统可包含一或多个存储数据的存储器装置。存储器装置可为(例如)非易失性存储器装置和易失性存储器装置。通常,主机系统可利用存储器子系统以在存储器装置处存储数据并从存储器装置检索数据。
发明内容
描述了一种方法。在一些实例中,该方法可包含:从主机系统接收第一写入命令,第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,第一写入命令与第一标识符相关联;至少部分地基于接收第一写入命令发出内部读取命令以检索存储在存储器子系统的传送单元中的数据;从主机系统接收第二写入命令,第二写入命令包括用于在存储器子系统的传送单元的第二地址处进行写入的第二数据,第二写入命令与第二标识符相关联;至少部分地基于接收第二写入命令将第一标识符与第二标识符链接;以及至少部分地基于将第一标识符与第二标识符链接发出内部写入命令,内部写入命令包含与第一写入命令相关联的第一数据和与第二写入命令相关联的第二数据。
描述了一种系统。在一些实例中,该系统可包含多个存储器组件和处理装置,处理装置可操作地与多个存储器组件耦合以从主机系统接收第一写入命令,第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,第一写入命令与第一标识符相关联;至少部分地基于接收第一写入命令发出内部读取命令以检索存储在存储器子系统的传送单元中的数据;从主机系统接收第二写入命令,第二写入命令包括用于在存储器子系统的传送单元的第二地址处进行写入的第二数据,第二写入命令与第二标识符相关联;至少部分地基于接收第二写入命令将第一标识符与第二标识符链接;以及至少部分地基于将第一标识符与第二标识符链接发出内部写入命令,内部写入命令包含与第一写入命令相关联的第一数据和与第二写入命令相关联的第二数据。
描述了一种非暂时性计算机可读存储介质。在一些实例中,非暂时性计算机可读存储介质可包含指令,该指令在由处理装置执行时致使处理装置从主机系统接收第一写入命令,第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,第一写入命令与第一标识符相关联;至少部分地基于接收第一写入命令发出内部读取命令以检索存储在存储器子系统的传送单元中的数据;从主机系统接收第二写入命令,第二写入命令包括用于在存储器子系统的传送单元的第二地址处进行写入的第二数据,第二写入命令与第二标识符相关联;至少部分地基于接收第二写入命令将第一标识符与第二标识符链接;以及至少部分地基于将第一标识符与第二标识符链接发出内部写入命令,内部写入命令包含与第一写入命令相关联的第一数据和与第二写入命令相关联的第二数据。
附图说明
从以下给出的详细描述和从本公开的各种实例的附图中将更全面地理解本公开。然而,不应将附图视为将本公开限于特定实例,而仅用于解释和理解。
图1示出了根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的用于链接存储器子系统的存取命令的实例方法的流程图。
图3A是根据本公开的一些实施例的支持链接存储器子系统的存取命令的系统的实例。
图3B是根据本公开的一些实施例的支持链接存储器子系统的存取命令的链接系统标签的实例。
图4A是根据本公开的一些实施例的支持链接存储器子系统的存取命令的系统的实例。
图4B是根据本公开的一些实施例的支持链接存储器子系统的存取命令的链接系统标签的实例。
图5是根据本公开的一些实施例的支持链接存储器子系统的存取命令的计算机系统的实例机器。
具体实施方式
本公开的各方面涉及链接存储器子系统的存储器子系统的存取命令。存储器子系统可为存储装置、存储器模块或者存储装置和存储器模块的混合体。下面结合图1描述存储装置和存储器模块的实例。通常,主机系统可利用包含一或多个组件的存储器子系统,诸如存储数据的存储器装置。主机系统可提供将被存储在存储器子系统处的数据,并且可请求将从存储器子系统被检索的数据。
存储器装置可为非易失性存储器装置,其是一或多个管芯的封装。封装中的管芯可分配给一或多个通道用于与存储器子系统控制器通信。非易失性存储器装置的实例是负与(NAND)存储器装置。下面结合图1描述非易失性存储器装置的其它实例。
主机系统可在存储器子系统上发起存取操作(例如,写入、读取、擦除等)。主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,(诸如)将数据存储在存储器子系统处的存储器装置上并从存储器子系统上的存储器装置读取数据。
在诸如NAND存储器单元(例如,NAND快闪存储器单元)等存储器单元的传统存取操作中,可将命令从主机系统传输到存储器子系统上的各种管芯。这些命令可与要在一或多个传送单元(TU)上执行的不同存取操作(例如,读取操作、写入操作等)相关联。TU可指可一次写入NAND装置中的一部分数据(例如,4k数据)。TU可包含一或多个逻辑块地址(LBA),其中LBA可指可由主机系统一次写入的一部分数据。在一些实例中,TU的大小和LBA的大小可以不同。每个LBA可与唯一的标识符(例如,系统标签)相关联。因此,主机系统可传输命令(例如,写入命令)以写入TU的一或多个LBA。
在一些实例中,写入操作可与TU的LBA子集相关联。在一些NAND存储器装置中,逐个TU地存取数据。在这种情况下,如果仅存取TU的一部分LBA,则还存取TU的其它未存取的LBA。例如,为了将数据写入到TU的一个LBA,读取存储在TU的每个LBA处的数据并且可用“新”数据(例如,与写入操作相关联的数据)覆盖存储在目标LBA中的“旧”数据(例如,先前存储到NAND单元的数据),同时将其它LBA中的“旧”数据重写到相应LBA。因此,传统的存取操作(例如,写入操作)可导致完成存取操作的时间和周期数量增加。
本公开的各方面解决了上述和其它缺陷以通过链接标识符(例如,系统标签)在TU级别处有效对齐存取命令。例如,存储器子系统可接收与TU的一或多个LBA相关联的写入命令。在接收到命令后,存储器子系统可分配(例如,存储)与LBA相关联的系统标签并开始TU的读取操作。然后,存储器子系统可开始发出内部读取命令以检索TU的数据并用新数据覆盖目标LBA。然而,内部读取操作可能花费数个周期,并且在此期间,存储器子系统可继续接收与同一TU相关联的写入命令。存储器子系统可在给定持续时间期间将与单个TU相关联的写入命令合并为单个内部写入命令,而不是针对从主机系统接收到的每个写入命令发出内部读取命令。为了执行合并或链接,可将与不同写入命令相关联的系统标签存储在(例如)存储器子系统的缓冲器中。每个系统标签可以链接在一起,以便TU的每个LBA可以按顺序次序写入。如果存储器子系统未接收到针对TU的特定LBA的写入命令,则可包含与从该TU读取的数据(例如,在TU的内部读取操作期间)相关联的系统标签。一旦链接了TU的每个LBA,或者由于存储器子系统接收写入命令,或者由于TU的读取操作,存储器子系统可以生成用于写入TU的单个内部写入命令。在链接与TU相关联的系统标签之后发出单个写入命令可允许执行单个存取操作(例如,单个内部写入操作),这可以减少完成存取操作的时间和周期数量。
图1示出了根据本公开的一些实施例的包含存储器子系统110的计算系统100的实例。存储器子系统110可包含介质,诸如一或多个非易失性存储器装置(例如,存储器装置130)、一或多个易失性存储器装置(例如,存储器装置140)或其组合。
存储器子系统110可为存储装置、存储器模块或者存储装置和存储器模块的混合体。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM),以及各种类型的非易失性DIMM(NVDIMM)。
计算系统100可为计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、物联网(IoT)启用装置、嵌入式计算机(例如,包含于交通工具、工业设备或联网商业装置中的嵌入式计算机),或包含存储器和处理装置的此计算装置。
计算系统100可包含主机系统105,其与一或多个存储器子系统110耦合。在一些实例中,主机系统105与不同类型的存储器子系统110耦合。图1示出了主机系统105与一个存储器子系统110耦合的一个实例。如本文所使用的,“耦合到”或“与……耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线的还是无线的,包含诸如电的、光的、磁的等连接。
主机系统105可包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统105使用存储器子系统110,(例如)以将数据写入存储器子系统110并从存储器子系统110读取数据。
主机系统105可使用物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、USB接口、光纤通道、串行连接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM插座接口)等。物理主机接口可用于在主机系统105与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统105耦合时,主机系统105可进一步利用非易失性存储器高速(NVMe)接口以存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统105之间传递控制、地址、数据和其它信号的接口。图1示出了作为实例的存储器子系统110。通常,主机系统105可经由相同的通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),诸如动态RAM(DRAM)和同步DRAM(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含NAND型闪速存储器和现场写入存储器,诸如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列,基于体电阻的变化执行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可执行现场写入操作,其中可在不预先擦除非易失性存储单元的情况下对非易失性存储器单元进行编程。NAND型闪速存储器包含(例如)二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元(例如,单级单元(SLC))可每单元存储一位。其它类型的存储器单元,诸如多级单元(MLC)、三级单元(TLC)和四级单元(QLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,诸如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定的存储器装置可包含存储器单元的SLC部分、MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可被分组为页,其可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),可将页分组以形成块。
尽管描述了非易失性存储器组件,诸如非易失性存储器单元的3D交叉点阵列和NAND型闪速存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,诸如ROM、相变存储器(PCM)、自选择存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、自旋转移矩(STT)-MRAM、导电桥接RAM(CBRAM)、阻变随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、负或(NOR)闪速存储器,以及电可擦除可编程ROM(EEPROM)。
存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以执行诸如在存储器装置130处读取数据、写入数据或擦除数据等操作和其它此类操作。存储器子系统控制器115可包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。硬件可包含具有专用(即,硬编码)逻辑的数字电路以执行本文所述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP))或另一合适的处理器。
存储器子系统控制器115可包含处理器120(例如,处理装置),其被配置成执行存储在本地存储器125中的指令。在所示的实例中,存储器子系统控制器115的本地存储器125包含嵌入式存储器,其被配置成存储用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统105之间的通信)的各种过程、操作、逻辑流程和例程的指令。
在一些实例中,本地存储器125可包含存储存储器指针、获取数据等的存储器寄存器。本地存储器125还可包含用于存储微代码的ROM。虽然图1中的实例存储器子系统110被示为包含存储器子系统控制器115,但是在本公开的另一实例中,存储器子系统110不包含存储器子系统控制器115,而是可以依赖于外部控制(例如,由外部主机提供,或者由与存储器子系统分离的处理器或控制器提供)。
通常,存储器子系统控制器115可从主机系统105接收命令或操作,并可将命令或操作转换为指令或适当的命令以实现对存储器装置130的期望存取。存储器子系统控制器115可负责其它操作,诸如损耗均衡操作、垃圾收集程序、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含主机接口电路,以经由物理主机接口与主机系统105通信。主机接口电路可将从主机系统接收到的命令转换为用以存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换为用于主机系统105的信息。
存储器子系统110还可包含未示出的附加电路或组件。在一些实例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址并解码地址以存取存储器装置130。
在一些实例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可从外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是受管存储器装置,其是与本地控制器(例如,本地媒体控制器135)组合以用于同一存储器装置封装内的媒体管理的原始存储器装置。受管存储器装置的实例是受管NAND(MNAND)装置。
存储器子系统110包含链接与TU相关联的系统标签的命令合并管理器150。在一些实例中,命令合并管理器150链接与TU相关联的系统标签并将链接的系统标签作为单个命令(例如,单个内部命令)发出。例如,主机系统105可将写入命令传输到存储器子系统110。当存储器子子系统接收命令时,链接管理器可将与命令的LBA相关联的系统标签分配给缓冲器。一旦存储在缓冲器中,系统标签可与和同一TU的不同LBA相关联的其它系统标签链接。其它系统标签可与由存储器子系统接收到的写入命令和/或在读取操作(例如,内部读取操作)期间从TU读出的数据相关联。一旦TU的每个系统标签被存储到缓冲器并被链接,命令合并管理器150可发出单个命令(例如,内部命令)以进行单个存取操作(例如,单个写入操作),这可以减少存取本地存储器125的时间和周期数量。
在一些实例中,存储器子系统控制器115包含命令合并管理器150的至少一部分。例如,存储器子系统控制器115可包含处理器120(例如,处理装置),其被配置成执行存储在本地存储器125中的指令以执行本文所述的操作。在一些实例中,命令合并管理器150是主机系统105、应用程序或操作系统的一部分。
图2是根据本公开的一些实施例的用于链接存储器子系统的存取命令的实例方法200的流程图。方法200可由处理逻辑执行,处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,方法200由图1的命令合并管理器150执行。尽管以特定顺序或次序示出,但除非另有说明,否则可修改过程的次序。因此,所示出的实例应仅理解为实例,并且所示出的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实例中可省略一或多个过程。因此,并非在每个实例中都需要所有的过程。其它方法流程也是可能的。
在操作205处,处理逻辑接收写入命令(例如,第一写入命令),其包含用于在存储器子系统的传送单元的地址处进行写入的数据。写入命令可与第一标识符相关联。在一些实施例中,存储器子系统包含用于存储传送单元的缓冲器。与写入命令相关联的信息可存储到缓冲器。处理逻辑可基于各个传送单元的地址将标识符分配给写入命令。例如,处理逻辑可基于各个传送单元的地址将第一标识符分配给第一写入命令。本文所述的与写入命令或写入操作相关联的特征和功能也可应用于其它存取操作、存取命令、存储器操作,或诸如读取命令、读取操作或其它的存储器操作。
在操作210处,处理逻辑基于接收写入命令发出内部读取命令以检索存储在存储器子系统的传送单元中的数据。内部读取命令可发起持续一段时间的内部读取操作。
在操作215处,处理逻辑接收写入命令(例如,第二写入命令),其包含用于在存储器子系统的传送单元的地址处进行写入的数据。写入命令可与第二标识符相关联。在操作215处接收到的写入命令可在内部读取操作发生的持续时间期间接收。在一些实施例中,写入命令与传送单元的顺序逻辑块地址相关联。处理逻辑可将与写入命令(例如,第一写入命令和第二写入命令)相关联的数据存储到写入缓冲器。基于将相应数据存储到写入缓冲器,可将第一标识符与第二标识符链接。
在操作220处,处理逻辑基于接收写入命令(例如,第二写入命令)将第一标识符与第二标识符链接。处理逻辑可将标识符(例如,第二标识符)与存储在写入缓冲器中的传送单元进行比较。处理逻辑可以确定标识符(例如,第二标识符)存储在写入缓冲器中,并且基于确定标识符(例如,第二标识符)存储在写入缓冲器中发出内部读取命令。
在操作225处,基于将第一标识符与第二标识符链接,处理逻辑发出包含与写入命令(例如,第一写入命令和第二写入命令)相关联的数据的内部写入命令。在识别内部读取操作完成之后(例如,在内部读取操作的持续时间之后),处理逻辑可以发出内部写入命令。
在一些实施例中,处理逻辑可从主机系统接收附加的写入命令(例如,第三写入命令)。写入命令可包含用于在存储器子系统的传送单元的地址处进行写入的数据,并且可与第三标识符相关联。处理逻辑可将第三标识符与第一标识符和第二标识符链接,使得内部写入命令包含与第三标识符相关联的数据。在一些实施例中,处理逻辑可接收用于在存储器子系统的不同传送单元(例如,第二传送单元)的地址处进行写入的附加写入命令。处理逻辑可基于接收用于在不同传送单元的地址处进行写入的附加写入命令发出内部写入命令。
在发出内部读取命令之后,处理逻辑可接收包含存储器子系统的数据的多个写入命令。命令可各自包含用于在相应传输单元的地址处进行写入的数据,并且可各自与相应标识符相关联。处理逻辑可基于接收写入命令将相应标识符中的每一个与第一标识符和第二标识符链接。内部写入命令可包含与接收到的写入命令中的每一个相关联的数据。在一些实例中,每个标识符包含传送单元的顺序地址。
另外或替代地,处理逻辑可基于相应的传送单元的地址将第二标识符分配给第二写入命令。处理逻辑可基于分配相应的标识符将第一标识符与第二标识符链接。在一些实施例中,处理逻辑识别以非顺序次序接收的至少一个标识符。处理逻辑可按顺序次序对标识符中的每一个进行排序,然后可相应地链接标识符中的每一个。
图3A示出了根据本公开的一些实施例的支持链接存储器子系统的存取命令的系统300-a的实例。系统可包含被配置成与存储器子系统通信的主机系统305。存储器子系统可包含相干性检查器315、缓冲器325(例如,写入缓冲器325)和本地存储器340。由相干性检查器执行的操作可由例如本地存储器控制器执行(即,相干性检查器315可以是或可包含本地存储器控制器)。在一些实例中,主机系统305可将命令(例如,写入命令)传输到存储器子系统,并且存储器子系统的组件可在执行相关联的存取操作时链接与命令相关联的一或多个标识符。标识符可为或者可指能够识别TU的各种LBA的系统标签。例如,TU可与八(8)个LBA相关联,并且每个LBA可与唯一的标识符(例如,系统标签)相关联。链接与存取操作相关联的标识符可允许执行单个存取操作(例如,单个写入操作),这可以减少完成存取操作的时间和周期数量。本文所述的与写入命令或写入操作相关联的特征和功能也可应用于其它存取操作、存取命令、存储器操作,或诸如读取命令、读取操作或其它的存储器操作。
主机系统305可将命令传输到存储器子系统。在一些实例中,命令可包含写入命令,其包含用于在本地存储器340的地址处进行写入的数据。例如,命令可包含用于在本地存储器340的TU的地址处进行写入的数据。TU可以是用于存取存储器装置(例如,诸如本地存储器340等NAND存储器装置)的最小存取大小,并且可包含可与标识符(例如,系统标签)相关联的一或多个LBA。在一些实例中,LBA可以指用于主机系统305的最小存取大小。因此,当主机系统305将命令传输到存储器子系统时,该命令可包含TU的单个LBA。本文所述的系统被配置成将系统标签分配给存取命令的LBA,然后合并这些LBA,使得可以在单个内部存取操作中写入TU的连续LBA。
例如,单个TU可包含八(8)个LBA。LBA可连续编号(例如,0至7),并且每个LBA可与相应的系统标签相关联(例如,系统标签W0至W7)。当主机系统305传输具有特定LBA的命令时,存储器子系统可分配与LBA相关联的系统标签。不管LBA在TU内的位置如何,存储器子系统可在单个写入操作中写入整个TU。即,存储器子系统被配置成链接或合并连续系统标签(例如,系统标签W0到W7),使得可写入整个TU而不管主机系统305接收到的LBA的排序。
当从主机系统305接收到写入命令时,可将与写入命令相关联的数据存储在TU的相应LBA处(例如,TU可包含数据)。在一些实例中,存储器子系统可发出内部读取310,以读出存储到TU的每个系统标签的数据。在内部读取310期间从TU读取的数据可在主机系统305不提供相应系统标签的更新数据时在写入操作中写回到TU。即,来自主机系统305的写入命令可不包含TU的每个系统标签的更新(例如,新的)数据。因此,存储器子系统可链接与新数据(例如,来自主机系统305)和先前存储到TU的数据相关联的系统标签。通过链接系统标签,单个内部写入命令可用于写入TU的每个LBA。内部写入命令可由存储器子系统基于从主机装置接收到的写入命令生成。因此,内部写入命令(或内部命令)可指由存储器子系统生成的命令和/或发布到本地存储器340的命令。
虽然一些实例可包含链接与从TU检索的数据相关联的系统标签作为内部读取操作的一部分,但是一些实例可包含基于内部读取操作合并缓冲器325的槽。例如,在内部读取操作310期间,可将先前存储到一或多个TU的数据存储到特定的缓冲槽(例如,第二缓冲槽335)。存储的数据随后可与存储在不同缓冲槽(例如,第一缓冲槽330)中的系统标签合并(例如,链接)。另外或替代地,其它实例可包含将新数据写入TU的每个LBA。在此类实例中,仍然可以发生内部读取310,但是在存取操作中,从TU读取的数据可能不会被写(例如,重写)回TU。
在一些实例中,相干性检查器315可以确定存储器子系统是否已接收到与TU相关联的任何命令。例如,当从主机系统305接收到与TU的LBA相关联的写入命令时,相干性检查器315可以确定存储器子系统是否已接收到与同一TU相关联的任何其它命令。如果存储器子系统先前没有接收到与同一TU相关联的命令,则相干性检查器315(或存储器子系统的另一组件)可分配缓冲器325中的槽用于链接与TU相关联的系统标签。如果存储器子系统先前已接收到与TU相关联的命令,则相干性检查器315(或存储器子系统的另一组件)可将系统标签分配给所分配的缓冲槽用于与相关系统标签链接。即,可将系统标签分配给缓冲器,其中系统标签和与新的或先前写入的数据(例如,来自内部读取310的数据)相关联的系统标签链接。一旦链接系统标签,相关联的数据可被写入TU。如本文所讨论的,由相干性检查器315执行的操作可由例如本地存储器控制器执行(即,相干性检查器315可以是或可包含本地存储器控制器)。
相干性检查器315可包含用于比较接收到的LBA(例如,与接收到的LBA相关联的系统标签)和存储到相干性检查器315的条目的表320。在一些实例中,相干性检查器315可以存储来自先前存取操作的条目。当(例如,从主机系统305)接收到写入命令时,相干性检查器315可将与写入命令的LBA相关联的系统标签与存储在表320中的系统标签进行比较。例如,相干性检查器315可接收与TU的第一LBA(例如,LBA 0)相关联的写入命令。LBA可与系统标签(例如,系统标签W0)相关联。当接收到写入命令时,相干性检查器315可将系统标签W0与存储在表中的其它系统标签进行比较,以确定与TU相关联的存取操作是否正在进行。正在进行的存取操作可指内部读取操作310未完成的存取操作。即,内部读取操作310可持续一段时间,并且在持续时间期间,存储器子系统可接收附加的写入命令。
如果存储器子系统先前没有接收到与同一TU相关联的命令,则可针对接收到的命令分配缓冲器325中的槽。在一些实例中,缓冲器325中的槽可由存储器控制器(例如,本地存储器控制器)或存储器子系统的其它组件分配。如果存储器子系统先前已接收到与TU相关联的命令,则存储器子系统的组件可分配缓冲器中的槽。因此,如果系统标签W0不包含在表中,则存储器子系统可分配缓冲器325中的槽。当接收到与同一TU相关联的附加LBA时,相干性检查器315可利用该表来确定与系统标签W0相关联的存取操作是否仍在进行。例如,相干性检查器315可将与同一TU相关联的系统标签(例如,系统标签W1、W2、Wn)与系统标签W0进行比较。只要系统标签W0位于表320中(和缓冲器325中),与同一TU相关联的系统标签可分配给缓冲器用于链接。
在一些实例中,缓冲器325可用于链接与单个TU的LBA的写入命令相关联的系统标签。为了链接系统标签,可以使用缓冲器325的多个槽。例如,缓冲器325的第一槽330可存储与从主机系统305接收到的同一TU的写入命令相关联的一或多个系统标签。当相干性检查器315确定与同一TU相关联的存取操作正在进行时,可将与LBA相关联的系统标签分配给缓冲器325的第一槽330。在一些实例中,缓冲器的第二槽335可存储与在内部读取310期间从TU读取的数据相关联的系统标签。当从TU读取数据时,数据可存储到第二槽335并可与系统标签R相关联。在一些实例中,可在读取数据(例如,在滚动基础上)时存储数据或可选择性地存储数据。即,只有在存取操作中使用数据时,才可将数据存储到第二槽335。在一些实例中,当在内部读取310期间读取的数据用于存取操作时,可以合并缓冲器325的第一槽330和第二槽335。即,存储到第二槽335的系统标签(例如,系统标签R)可与存储到第一槽330的系统标签组合。因此,可链接合并的系统标签(例如,按顺序次序链接),并且可在TU上执行单个存取操作。在一些实例中,可在包含多个存储器单元(例如,NAND存储器单元)的本地存储器340上执行存取操作。
例如,可以根据以下所示的表1在本地存储器340上执行单个存取操作。可以使用参考图3A所述的系统300-a描述的组件和/或操作来执行存取操作。
表1
主机系统305可传输包含用于在存储器子系统的LBA 0处进行写入的数据的写入命令。在一些实例中,LBA 0可与系统标签W0相关联。当存储器子系统接收写入命令时,相干性检查器315可以确定与TU(例如,包含LBA 0的TU)相关联的任何存取命令是否正在进行。即,相干性检查器315可将LBA 0与存储在表320处的多个系统标签进行比较,以确定相关联的系统标签(例如,系统标签W0)是否存储在该表处。在该实例中,系统标签W0可能不存储在表320中,这可能导致存储器子系统分配缓冲器325中的第一槽330用于链接系统标签。
当相干性检查器315确定未将系统标签W0存储到表320时,存储器子系统可以开始相关联TU的内部读取310。在内部读取期间,可读取与TU相关联的系统标签(例如,系统标签R)并将其存储到缓冲器的第二槽335。根据从主机系统305接收到的特定写入命令,这些系统标签可与存储在缓冲器325的第一槽330中的系统标签链接。
如表1所示,主机系统305可继续将写入命令传输到存储器子系统。例如,主机系统305可将与LBA 1至7相关联的写入命令传输到存储器子系统。在一些实例中,可在内部读取310正在进行时由存储器子系统接收写入命令。即,内部读取310可持续一段时间,并且存储器子系统可在该持续时间期间继续接收写入命令。当存储器子系统接收与LBA 1至7相关联的写入命令时,相干性检查器315可使用表320来确定与同一TU相关联的存取操作正在进行(例如,通过将相关联的系统标签与存储到表320的系统标签进行比较)。基于相干性检查器315的操作,存储器子系统可将系统标签分配给缓冲器325的第一槽330。
在主机系统305传输与LBA 7相关联的写入命令,并且相关联的系统标签分配给缓冲器325之后,存储器子系统可能不再接收与TU相关联的任何存取命令。存储器子系统然后可链接与TU的LBA相关联的每个系统标签。可以通过指示(例如,指向)前一个系统标签来链接系统标签。例如,系统标签W3(与LBA 3相关联)可指向系统标签W2,后者可指向系统标签W1,后者可指向系统标签W0。因此,当将数据写入TU时,可以按顺序次序将其写入(例如,基于系统标签链接)。然后可将与每个系统标签相关联的数据写入本地存储器340的TU。
图3B示出了根据本公开的一些实施例的支持链接存储器子系统的存取命令的链接系统标签300-b的实例。系统标签可包含系统标签R,以及系统标签W0至系统标签W7,如参考图3A所讨论的。在一些实例中,每个系统标签与TU的LBA相关联。TU可包含例如对应于系统标签W0至W7的八(8)个LBA。
如参考图3A所讨论的,主机系统305可传输包含用于在存储器子系统的LBA 0处进行写入的数据的写入命令。在一些实例中,LBA 0可与系统标签W0相关联。当存储器子系统接收写入命令时,相干性检查器315可以确定与TU(例如,包含LBA 0的TU)相关联的任何存取命令是否正在进行。如果系统标签W0没有存储在表320中,则存储器子系统可分配缓冲器325中的第一槽330用于链接系统标签。
主机系统305可继续将写入命令传输到存储器子系统(例如,在传输用于LBA 0的数据之后)。例如,主机系统305可将与LBA 1至7相关联的写入命令传输到存储器子系统。在一些实例中,可在内部读取310正在进行时由存储器子系统接收写入命令。当存储器子系统接收与LBA 1至7相关联的写入命令时,相干性检查器315可使用表320来确定与同一TU相关联的存取操作正在进行(例如,通过将相关联的系统标签与存储到表320的系统标签进行比较)。基于相干性检查器315的操作,存储器子系统可将系统标签分配给缓冲器325的第一槽330。
在参考图3A所述并在图3B中所示的实例中,存储器子系统可接收用于TU的LBA的每一个(例如,用于LBA 0至LBA 7)的写入命令。在将相关联系统标签的每一个分配给缓冲器325之后,存储器子系统可链接与TU的LBA相关联的每个系统标签。系统标签可按顺序次序链接,其中每个系统标签指向链中的前一个系统标签。例如,图3B示出了接收到的(和链接的)命令,其中系统标签W0至W7按顺序次序链接。因此,系统标签W7可指向系统标签W6,后者可指向系统标签W5,以此类推。在一些实例中,链接的系统标签可包含可与内部读取操作310相关联的系统标签R。链接列表可为循环链接列表,从而系统标签R与系统标签W0和系统标签W7链接。在主机系统305不传输针对特定LBA的写入命令的情况下,由于链接列表中包含系统标签R,因此可从TU读取数据(例如,在内部读取操作310)并将其写入TU。在一些实例中,即使主机系统305针对每个LBA传输写入命令,也仍可包含系统标签R(例如,与系统标签W0和系统标签W7链接)。
在链接系统标签中的每一个之后,可发出单个存取命令(例如,内部存取命令;内部写入命令),然后与每个系统标签相关联的数据写入本地存储器340的TU。如下面参考图4A和4B所述的,还可以以非顺序次序接收系统标签。
图4A示出了根据本公开的一些实施例的支持链接存储器子系统的存取命令的系统400-a的实例。系统可包含被配置成与存储器子系统通信的主机系统405。存储器子系统可包含相干性检查器415、缓冲器425(例如,写入缓冲器425)和本地存储器440。主机系统405、相干性检查器415、缓冲器425和本地存储器440可以是参考图3A所述的主机系统305、相干性检查器315、缓冲器325和本地存储器340的实例。由相干性检查器执行的操作可由例如本地存储器控制器执行(即,相干性检查器415可以是或可包含本地存储器控制器)。在一些实例中,主机系统405可将命令(例如,写入命令)传输到存储器子系统,并且存储器子系统的组件可在执行相关联的存取操作时链接与命令相关联的一或多个标识符。标识符可为或者可指能够识别TU的各种LBA的系统标签。例如,TU可与八(8)个LBA相关联,并且每个LBA可与唯一的标识符(例如,系统标签)相关联。链接与存取操作相关联的标识符可允许执行单个存取操作(例如,单个写入操作),这可以减少完成存取操作的时间和周期数量。
主机系统405可将命令传输到存储器子系统。在一些实例中,命令可包含写入命令,其包含用于在本地存储器440的地址处进行写入的数据。例如,命令可包含用于在本地存储器440的TU的地址处进行写入的数据。如本文所讨论的,TU可以是用于存取存储器装置(例如,诸如本地存储器440等NAND存储器装置)的最小存取大小并且可包含可与标识符(例如,系统标签)相关联的一或多个LBA。因此,当主机系统405将命令传输到存储器子系统时,该命令可包含TU的单个LBA。本文所述的系统被配置成链接与TU的连续LBA相关联的系统标签,使得可以在单个存取操作中写入整个TU(例如,TU的每个LBA)。在参考图4A所示的实例中,主机系统405可传输针对TU的非顺序次序的LBA的写入命令和/或传输针对TU的LBA子集的写入命令。即,主机系统405可传输针对数量小于TU的LBA的总数的LBA的写入命令。
在一些实例中,与写入命令相关联的数据可存储在TU的相应LBA处(例如,TU可包含数据)。在一些实例中,存储器子系统可发出内部读取410,以读出存储到TU的每个系统标签的数据。在内部读取410期间从TU读取的数据可在主机系统405不提供相应系统标签的更新数据时在写入操作中写回到TU。即,来自主机系统405的写入命令可不包含用于TU的每个系统标签的更新(例如,新的)数据。因此,存储器子系统可链接与新数据(例如,来自主机系统405)和先前存储到TU的数据相关联的系统标签。通过链接系统标签,单个写入命令可用于写入TU的每个LBA。在一些实例中,内部读取410可发生直到读取来自TU的每个LBA的数据。
在一些实例中,相干性检查器415可以确定存储器子系统是否已接收到与TU相关联的任何命令。例如,当从主机系统405接收到与TU的LBA相关联的写入命令时,相干性检查器415可以确定存储器子系统是否已接收到与同一TU相关联的任何其它命令。如果存储器子系统先前未接收到与同一TU相关联的命令,则存储器控制器(例如,本地存储器控制器)或存储器子系统的另一组件可分配缓冲器425中的槽用于链接与TU相关联的系统标签。如果存储器子系统先前已接收到与TU相关联的命令,则存储器子系统可将系统标签分配给所分配的缓冲槽用于与相关系统标签链接。即,可将系统标签分配给缓冲器,其中系统标签和与新的或先前写入的数据(例如,来自内部读取410的数据)相关联的系统标签链接。一旦链接系统标签,相关联的数据可被写入TU。如本文所讨论的,由相干性检查器415执行的操作可由例如本地存储器控制器执行(即,相干性检查器415可以是或可包含本地存储器控制器)。
相干性检查器415可包含用于比较接收到的LBA(例如,与接收到的LBA相关联的系统标签)和存储到相干性检查器415的条目的表420。在一些实例中,相干性检查器415可以存储来自先前存取操作的条目。当(例如,从主机系统405)接收到写入命令时,相干性检查器415可将与写入命令的LBA相关联的系统标签与存储到表420的系统标签进行比较。例如,相干性检查器415可接收与TU的第一LBA(例如,LBA 0)相关联的写入命令。LBA可与系统标签(例如,系统标签W0)相关联。当接收到写入命令时,相干性检查器415可将系统标签W0与存储在表中的其它系统标签进行比较,以确定与TU相关联的存取操作是否正在进行。正在进行的存取操作可指内部读取操作310未完成的存取操作。即,内部读取操作310可持续一段时间,并且在持续时间期间,存储器子系统可接收附加的写入命令。
在一些实例中,缓冲器425可用于链接与TU的LBA相关联的系统标签。为了链接系统标签,可以使用缓冲器425的多个槽。例如,缓冲器425的第一槽430可存储与从主机系统405接收到的同一TU的写入命令相关联的系统标签。当相干性检查器415确定与同一TU相关联的存取操作正在进行时,可将与LBA相关联的系统标签分配给缓冲器425的第一槽430。在一些实例中,缓冲器的第二槽435可存储与在内部读取410期间从TU读取的数据相关联的系统标签。当从TU读取数据时,数据可存储到第二槽435并可与系统标签R相关联。在一些实例中,可在读取数据(例如,在滚动基础上)时存储数据或可选择性地存储数据。即,只有在存取操作中使用数据时,才可将数据存储到第二槽435。在一些实例中,当在内部读取410期间读取的数据用于存取操作时,可以合并缓冲器425的第一槽430和第二槽435。即,存储到第二槽435的系统标签(例如,系统标签R)可与存储到第一槽430的系统标签组合。因此,可链接合并的系统标签(例如,按顺序次序链接),并且可在TU上执行单个存取操作。在一些实例中,可在包含多个存储器单元(例如,NAND存储器单元)的本地存储器440上执行存取操作。
在一些实例中,相干性检查器415可继续确定接收到的命令是否与正在进行的存取命令相关联。每次接收到命令(例如,写入命令)时,相干性检查器415可将与LBA相关联的系统标签与存储在表420中的系统标签进行比较。在一些实例中,当接收到与正在进行的存取操作的LBA不相关联的系统标签时,相干性检查器415可指示(例如,向本地存储器控制器)应当合并缓冲槽430和435并且应当发出内部写入命令。例如,当接收到与正在进行的存取操作的LBA不相关联的系统标签时,相干性检查器415可指示缓冲器425的第一槽430中的系统标签应当与缓冲器425的第二槽435中的系统标签合并(例如,在内部读取410完成之后)。因此,可在单个写入命令中(例如,在单个内部命令中)将从主机系统405的命令中接收到的数据和在内部读取410期间从TU读出的数据写入本地存储器440。
例如,可以根据以下所示的表2在本地存储器440上执行单个存取操作。可以使用参考图4A所述的系统400-a描述的组件和/或操作来执行存取操作。
表2
主机系统405可传输包含用于在存储器子系统的LBA 0处进行写入的数据的写入命令。在一些实例中,LBA 0可与系统标签W0相关联。当存储器子系统接收写入命令时,相干性检查器415可以确定与TU(例如,包含LBA 0的TU)相关联的任何存取命令是否正在进行。即,相干性检查器415可将LBA 0与存储在表420处的多个系统标签进行比较,以确定相关联的系统标签(例如,系统标签W0)是否存储在该表处。在该实例中,系统标签W0可能不存储在表420中,这可能导致存储器子系统分配缓冲器425中的第一槽430用于链接系统标签。
当相干性检查器415确定未将系统标签W0存储到表420时,存储器子系统可以开始相关联TU的内部读取410。在内部读取期间,可以读取与TU相关联的系统标签(例如,系统标签R)并将其存储到缓冲器的第二槽435。根据从主机系统405接收到的特定写入命令,这些系统标签可与存储在缓冲器425的第一槽330中的系统标签链接。
如表2所示,主机系统405可继续将写入命令传输到存储器子系统。例如,主机系统405可将与LBA 3和5相关联的写入命令传输到存储器子系统。在一些实例中,可在内部读取410正在进行时由存储器子系统接收写入命令。即,内部读取410可持续一段时间,并且存储器子系统可在该持续时间期间继续接收写入命令。当存储器子系统接收与LBA 3和5相关联的写入命令时,相干性检查器415可使用表420来确定与同一TU相关联的存取操作正在进行(例如,通过将相关联的系统标签与存储到表420的系统标签进行比较)。基于相干性检查器415的操作,存储器子系统可将系统标签分配给缓冲器425的第一槽430。
在主机系统405传输与LBA 5相关联的写入命令,并且相关联的系统标签分配给缓冲器425之后,存储器子系统可能不再接收与TU相关联的任何存取命令。然后,存储器子系统可以合并缓冲槽(例如,第一槽430和第二槽435)。即,因为存储器子系统未接收到与TU的每个LBA相关联的写入命令,所以存储器子系统可包含(例如,合并)从未接收到写入命令的LBA读出的数据。通过合并缓冲器,可链接与TU的每个LBA相关联的系统标签。可以通过指示(例如,指向)前一个系统标签来链接系统标签。例如,系统标签W3(与LBA 3相关联)可指向系统标签W2,后者可指向系统标签W1,后者可指向系统标签W0。因此,当将数据写入TU时,可以按顺序次序将其写入(例如,基于系统标签链接)。然后可将与每个系统相关联的数据写入本地存储器440的TU。
图4B示出了根据本公开的一些实施例的支持链接存储器子系统的存取命令的链接系统标签400-b的实例。系统标签可包含系统标签R,以及系统标签W0至系统标签W7,如参考图4A所讨论的。在一些实例中,每个系统标签与TU的LBA相关联。TU可包含例如对应于系统标签W0至W7的八(8)个LBA。
如参考图4A所讨论的,主机系统405可传输包含用于在存储器子系统的LBA 0处进行写入的数据的写入命令。在一些实例中,LBA 0可与系统标签W0相关联。当存储器子系统接收写入命令时,相干性检查器415可以确定与TU(例如,包含LBA 0的TU)相关联的任何存取命令是否正在进行。如果系统标签W0没有存储在表420中,则存储器子系统可分配缓冲器425中的第一槽430用于链接系统标签。
主机系统405可继续将写入命令传输到存储器子系统(例如,在传输用于LBA 0的数据之后)。例如,主机系统305可将与LBA 1和2相关联的写入命令传输到存储器子系统。在一些实例中,可在内部读取410正在进行时由存储器子系统接收写入命令。当存储器子系统接收与LBA 1和2相关联的写入命令时,相干性检查器415可使用表420来确定与同一TU相关联的存取操作正在进行(例如,通过将相关联的系统标签与存储到表320的系统标签进行比较)。基于相干性检查器415的操作,存储器子系统可将系统标签分配给缓冲器425的第一槽430。
在一些实例中,主机系统405可不传输与LBA 3至7相关联的写入命令。相反,存储器子系统可基于内部读取410分配与这些LBA相关联的系统标签。即,存储器子系统可将与LBA相关联的系统标签分配给缓冲器425的第二槽435,并可随后合并缓冲器条目。例如,链接的系统标签可包括系统标签R,其可与内部读取操作410相关联。链接列表可为循环链接列表,从而系统标签R与系统标签W0和系统标签W7链接。在主机系统305不传输针对与系统标签W3、W4、W5、W6和/或W7相关联的LBA的写入命令的情况下,由于链接列表中包含系统标签R,因此可从每个TU读取数据(例如,在内部读取操作410期间)并将其写入相应的TU。
在将每个相关联的系统分配给缓冲器325并且随后合并缓冲器条目之后,存储器子系统可链接与TU的LBA相关联的每个系统标签。系统标签可按顺序次序链接,其中每个系统标签指向链中的前一个系统标签。例如,图3B示出了接收的(和链接的)命令,其中系统标签W0至W2与从主机系统405接收到的写入命令相关联,而系统标签W2至W7与内部读取410相关联。通过链接系统标签,系统标签W7可指向系统标签W6,后者可指向系统标签W5,以此类推。在链接系统标签中的每一个之后,可发出单个存取命令(例如,内部存取命令;内部写入命令),然后与每个系统标签相关联的数据写入本地存储器440的TU。
图5示出了根据本文公开的实施例的支持链接存储器子系统的存取命令的计算机系统500的实例机器。计算机系统500可包含一组指令,用于致使机器执行本文所述的任何一或多种技术。在一些实例中,计算机系统500可对应于主机系统(例如,参考图1所述的主机系统105),其包含、耦合于或利用存储器子系统(例如,参考图1所述的存储器子系统110),或可用于执行控制器的操作(例如,执行操作系统以执行对应于参考图1所述的命令合并管理器150的操作)。在一些实例中,机器可与局域网(LAN)、内联网、外联网和/或因特网中的其它机器连接(例如,联网)。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份运行,可作为对等(或分布式)网络环境中的对等机器运行,或可作为云计算基础设施或环境中服务器或客户端机器运行。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者能够执行指定该机器要采取的动作的一组指令(顺序或其它方式)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还可包含单独地或共同地执行一组(或多组)指令以执行本文所讨论的方法中的任何一或多个的任何机器集合。
实例计算机系统500可包含处理装置505,主存储器510(例如,ROM、闪速存储器、诸如SDRAM或Rambus DRAM(RDRAM)等的DRAM)、静态存储器515(例如,闪速存储器、静态RAM(SRAM)等),以及数据存储系统525,它们经由总线545彼此通信。
处理装置505表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者实施其它指令集的处理器,或者实施指令集组合的处理器。处理装置505还可以是一或多个专用处理装置,诸如ASIC、FPGA、DSP、网络处理器等。处理装置505被配置成执行用于执行本文所讨论的操作和步骤的指令535。计算机系统500可进一步包含网络接口装置520以通过网络540进行通信。
数据存储系统525可包含机器可读存储介质530(也被称为计算机可读介质),在其上存储了体现本文所述的方法或功能中的任何一或多种的一或多组指令535或软件。指令535还可完全地或至少部分地驻留在主存储器510内和/或处理装置505内,在其由计算机系统500执行期间,主存储器510和处理装置505也构成机器可读存储介质。机器可读存储介质530、数据存储系统525和/或主存储器510可对应于存储器子系统。
在一个实例中,指令535包含用于实施对应于命令合并管理器550(例如,参考图1所述的命令合并管理器150)的功能的指令。虽然机器可读存储介质530被示出为单个介质,但是术语“机器可读存储介质”可包含存储一或多组指令的单个介质或多个介质。术语“机器可读存储介质”还可包含能够存储或编码一组指令以供机器执行并且致使机器执行本公开的方法中的任一或多种的任何介质。术语“机器可读存储介质”可包含但不限于固态存储器、光学介质和磁介质。
根据对计算机存储器内的数据位的操作的算法和符号表示,已经给出了前述详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员通常使用的,从而最有效地将它们的工作实质传递到其它领域的技术人员。本文的算法通常是指得到期望结果的操作的自相容序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采用能够被存储、组合、比较以及以其它方式被操纵的电或磁信号的形式。有时主要是为了公共使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字、或者类似名称,经证实这是方便的。
然而,应当记住,所有这些和类似术语将与适当物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可涉及计算机系统或类似的电子计算设备的动作和过程,其操纵计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成计算机系统存储器或寄存器或其它这样的信息存储系统内类似地表示为物理量的其它数据。
本公开还涉及用于执行本文的操作的设备。该设备可为预期目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,每个都耦合到计算机系统总线。
本文提出的算法和显示并不固有地与任何特定的计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者其可证明构造更专用的设备来执行方法是方便的。各种这些系统的结构从以下的描述将是显而易见的。另外,没有参考任何特定编程语言来描述本公开。应理解,可使用多种编程语言来实施本文所述的本公开的教示。
本公开可被提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读介质,指令可用于对计算机系统(或其它电子装置)编程以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读形式存储信息的任何机制。在一些实例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如ROM,RAM,磁盘存储介质、光存储介质、闪速存储器组件等。
在前述说明书中,已经参考其具体实例描述了本公开的实例。显然,在不脱离所附权利要求中阐述的本公开的实例的较宽精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (20)
1.一种用于操作存储器系统的方法,其包括:
从主机系统接收第一写入命令,所述第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,所述第一写入命令与第一标识符相关联;
至少部分地基于接收所述第一写入命令发出内部读取命令以检索存储在所述存储器子系统的所述传送单元中的数据;
从所述主机系统接收第二写入命令,所述第二写入命令包括用于在所述存储器子系统的所述传送单元的第二地址处进行写入的第二数据,所述第二写入命令与第二标识符相关联;
至少部分地基于接收所述第二写入命令,确定由所述内部读取命令发起的内部读取操作未完成;
至少部分地基于确定所述内部读取操作未完成,将所述第一标识符与所述第二标识符链接;以及
至少部分地基于将所述第一标识符与所述第二标识符链接发出内部写入命令,所述内部写入命令包含与所述第一写入命令相关联的所述第一数据和与所述第二写入命令相关联的所述第二数据。
2.根据权利要求1所述的方法,其进一步包括:
至少部分地基于接收所述第二写入命令,将所述第二标识符与存储在写入缓冲器中的所述存储器子系统的多个传送单元的标识符进行比较;以及
至少部分基于将所述第二标识符与所述存储器子系统的所述多个传送单元的所述标识符进行比较而确定所述第二标识符存储在所述写入缓冲器中,其中发出所述内部读取命令是至少部分地基于确定所述第二标识符存储在所述写入缓冲器中。
3.根据权利要求2所述的方法,其进一步包括:
至少部分地基于接收所述第二写入命令将所述第一数据和所述第二数据存储到所述写入缓冲器,其中将所述第一标识符与所述第二标识符链接是至少部分地基于将所述第一数据和所述第二数据存储到所述写入缓冲器。
4.根据权利要求1所述的方法,其进一步包括:
至少部分地基于所述第一地址将所述第一标识符分配给所述第一写入命令,其中发出所述内部读取命令是至少部分地基于分配所述第一标识符;以及
至少部分地基于所述第二地址将所述第二标识符分配给所述第二写入命令,其中将所述第一标识符与所述第二标识符链接是至少部分地基于分配所述第二标识符。
5.根据权利要求1所述的方法,其进一步包括:
从所述主机系统接收第三写入命令,所述第三写入命令包括用于在所述存储器子系统的所述传送单元的第三地址处进行写入的第三数据,所述第三写入命令与第三标识符相关联;以及
将所述第三标识符与所述第一标识符和所述第二标识符链接,其中所述内部写入命令包含与所述第三写入命令相关联的所述第三数据。
6.根据权利要求1所述的方法,其进一步包括:
识别所述内部读取操作已完成,其中发出所述内部写入命令发生在所述内部读取操作完成之后并且至少部分地基于识别所述内部读取操作已完成。
7.根据权利要求6所述的方法,其中在所述内部读取操作完成之前接收所述第二写入命令。
8.根据权利要求1所述的方法,其进一步包括:
从所述主机系统接收用于在所述存储器子系统的第二传送单元的地址处进行写入的写入命令,其中发出所述内部写入命令是至少部分地基于接收用于在所述第二传送单元的所述地址处进行写入的所述写入命令。
9.根据权利要求1所述的方法,其进一步包括:
在发出所述内部读取命令之后从所述主机系统接收多个写入命令,所述多个写入命令包括用于所述存储器子系统的数据,所述多个写入命令中的每一个与相应标识符相关联;以及
至少部分地基于接收所述多个写入命令将所述相应标识符中的每一个与所述第一标识符和所述第二标识符链接,其中所述内部写入命令包含与从所述主机系统接收到的所述多个写入命令中的每一个相关联的所述数据。
10.根据权利要求9所述的方法,其中所述相应标识符中的每一个指示用于写入数据的所述存储器子系统的所述传送单元的顺序地址,所述方法进一步包括:
识别以非顺序次序接收的至少一个相应标识符;以及
至少部分地基于识别以非顺序次序接收的所述至少一个相应标识符来以顺序次序对所述相应标识符中的每一个进行排序,其中将所述相应标识符中的每一个与所述第一标识符和所述第二标识符链接包括以所述顺序次序链接所述相应标识符。
11.根据权利要求1所述的方法,其中所述第一地址和所述第二地址是所述传送单元的顺序逻辑块地址。
12.一种存储器系统,其包括:
多个存储器组件;以及
处理装置,其可操作地与所述多个存储器组件耦合,以:
从主机系统接收第一写入命令,所述第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,所述第一写入命令与第一标识符相关联;
至少部分地基于接收所述第一写入命令发出内部读取命令以检索存储在所述存储器子系统的所述传送单元中的数据;
从所述主机系统接收第二写入命令,所述第二写入命令包括用于在所述存储器子系统的所述传送单元的第二地址处进行写入的第二数据,所述第二写入命令与第二标识符相关联;
至少部分地基于接收所述第二写入命令,确定由所述内部读取命令发起的内部读取操作未完成;
至少部分地基于确定所述内部读取操作未完成,将所述第一标识符与所述第二标识符链接;以及
至少部分地基于将所述第一标识符与所述第二标识符链接发出内部写入命令,所述内部写入命令包含与所述第一写入命令相关联的所述第一数据和与所述第二写入命令相关联的所述第二数据。
13.根据权利要求12所述的存储器系统,其进一步包括:
所述处理装置用以:
至少部分地基于接收所述第二写入命令,将所述第二标识符与存储在写入缓冲器中的所述存储器子系统的多个传送单元的标识符进行比较;以及
至少部分基于将所述第二标识符与所述存储器子系统的所述多个传送单元的所述标识符进行比较而确定所述第二标识符存储在所述写入缓冲器中,其中发出所述内部读取命令是至少部分地基于确定所述第二标识符存储在所述写入缓冲器中。
14.根据权利要求13所述的存储器系统,其进一步包括:
所述处理装置用以:
至少部分地基于接收所述第二写入命令将所述第一数据和所述第二数据存储到所述写入缓冲器,其中将所述第一标识符与所述第二标识符链接是至少部分地基于将所述第一数据和所述第二数据存储到所述写入缓冲器。
15.根据权利要求12所述的存储器系统,其进一步包括:
所述处理装置用以:
至少部分地基于所述第一地址将所述第一标识符分配给所述第一写入命令,其中发出所述内部读取命令是至少部分地基于分配所述第一标识符;以及
至少部分地基于所述第二地址将所述第二标识符分配给所述第二写入命令,其中将所述第一标识符与所述第二标识符链接是至少部分地基于分配所述第二标识符。
16.根据权利要求12所述的存储器系统,其进一步包括:
所述处理装置用以:
从所述主机系统接收第三写入命令,所述第三写入命令包括用于在所述存储器子系统的所述传送单元的第三地址处进行写入的第三数据,所述第三写入命令与第三标识符相关联;以及
将所述第三标识符与所述第一标识符和所述第二标识符链接,其中所述内部写入命令包含与所述第三写入命令相关联的所述第三数据。
17.根据权利要求12所述的存储器系统,其中所述处理装置进一步用以:
识别所述内部读取操作已完成,其中发出所述内部写入命令发生所述内部读取操作完成之后并且至少部分地基于识别所述内部读取操作已完成。
18.根据权利要求17所述的存储器系统,其中在所述内部读取操作完成之前接收所述第二写入命令。
19.根据权利要求12所述的存储器系统,其进一步包括:
所述处理装置用以:
从所述主机系统接收用于在所述存储器子系统的第二传送单元的地址处进行写入的写入命令,其中发出所述内部写入命令是至少部分地基于接收用于在所述第二传送单元的所述地址处进行写入的所述写入命令。
20.一种非暂时性计算机可读存储介质,其包括指令,所述指令在由处理装置执行时致使所述处理装置:
从主机系统接收第一写入命令,所述第一写入命令包括用于在存储器子系统的传送单元的第一地址处进行写入的第一数据,所述第一写入命令与第一标识符相关联;
至少部分地基于接收所述第一写入命令发出内部读取命令以检索存储在所述存储器子系统的所述传送单元中的数据;
从所述主机系统接收第二写入命令,所述第二写入命令包括用于在所述存储器子系统的所述传送单元的第二地址处进行写入的第二数据,所述第二写入命令与第二标识符相关联;
至少部分地基于接收所述第二写入命令,确定由所述内部读取命令发起的内部读取操作未完成;
至少部分地基于确定所述内部读取操作未完成,将所述第一标识符与所述第二标识符链接;以及
至少部分地基于将所述第一标识符与所述第二标识符链接发出内部写入命令,所述内部写入命令包含与所述第一写入命令相关联的所述第一数据和与所述第二写入命令相关联的所述第二数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/726,124 | 2019-12-23 | ||
US16/726,124 US11099785B2 (en) | 2019-12-23 | 2019-12-23 | Linking access commands for a memory sub-system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113094293A CN113094293A (zh) | 2021-07-09 |
CN113094293B true CN113094293B (zh) | 2022-09-09 |
Family
ID=76438101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011491775.5A Active CN113094293B (zh) | 2019-12-23 | 2020-12-17 | 存储器系统及相关方法和计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11099785B2 (zh) |
CN (1) | CN113094293B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815160A (zh) * | 2017-11-21 | 2019-05-28 | 美光科技公司 | 最后写入页搜索 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024545B2 (en) * | 2007-10-19 | 2011-09-20 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
TW201009577A (en) * | 2008-08-27 | 2010-03-01 | Phison Electronics Corp | Data transfer method for flash memory and flash memory storage system and controller using the same |
US20100061207A1 (en) * | 2008-09-09 | 2010-03-11 | Seagate Technology Llc | Data storage device including self-test features |
KR20100082185A (ko) * | 2009-01-08 | 2010-07-16 | 삼성전자주식회사 | 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치 |
US8407403B2 (en) * | 2009-12-07 | 2013-03-26 | Microsoft Corporation | Extending SSD lifetime using hybrid storage |
US20110276746A1 (en) * | 2010-05-05 | 2011-11-10 | Arvind Pruthi | Caching storage adapter architecture |
JP2013061795A (ja) * | 2011-09-13 | 2013-04-04 | Toshiba Corp | 記憶装置、コントローラ、およびリードコマンド実行方法 |
US9280497B2 (en) * | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
JP6319607B2 (ja) * | 2015-12-03 | 2018-05-09 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法 |
KR20180011376A (ko) * | 2016-07-21 | 2018-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2019
- 2019-12-23 US US16/726,124 patent/US11099785B2/en active Active
-
2020
- 2020-12-17 CN CN202011491775.5A patent/CN113094293B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815160A (zh) * | 2017-11-21 | 2019-05-28 | 美光科技公司 | 最后写入页搜索 |
Also Published As
Publication number | Publication date |
---|---|
US11099785B2 (en) | 2021-08-24 |
CN113094293A (zh) | 2021-07-09 |
US20210191652A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656983B2 (en) | Host-resident translation layer write command | |
US11216364B2 (en) | Sequential read optimization in a memory sub-system that programs sequentially | |
CN113785278A (zh) | 用于避免并发写入流之间冲突的动态数据放置 | |
CN113795820A (zh) | 主机系统与存储器子系统之间的输入/输出大小控制 | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
US20220214830A1 (en) | Accelerated read translation path in memory sub-system | |
CN113010449A (zh) | 存储器子系统中命令的有效处理 | |
US11681629B2 (en) | Direct cache hit and transfer in a memory sub-system that programs sequentially | |
CN112948284A (zh) | 高速缓存媒体中的动态存取粒度 | |
CN112947852A (zh) | 受存储器子系统限制的存储器功能 | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
CN113360091B (zh) | 用于存取操作的内部命令 | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
CN115705159A (zh) | 存储器子系统中双字的智能交换和有效编码 | |
US20230129363A1 (en) | Memory overlay using a host memory buffer | |
CN113094293B (zh) | 存储器系统及相关方法和计算机可读存储介质 | |
CN113127385A (zh) | 对存储器子系统的性能控制 | |
CN113811847A (zh) | 来自主机系统的写入命令的部分执行 | |
CN113495695B (zh) | 用于存取命令的高速缓存标识符 | |
US20240078048A1 (en) | Dynamic partition command queues for a memory device | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN115843379A (zh) | 用来改进顺序存储器命令性能的存储器命令聚合 | |
CN115775580A (zh) | 使用内容可寻址存储器的双地址命令管理 | |
CN113253917A (zh) | 用于存储器子系统的媒体管理的多状态炼狱 | |
CN113126900A (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 |