CN115757208A - 程序暂停协议期间改进的存储器性能 - Google Patents
程序暂停协议期间改进的存储器性能 Download PDFInfo
- Publication number
- CN115757208A CN115757208A CN202211064839.2A CN202211064839A CN115757208A CN 115757208 A CN115757208 A CN 115757208A CN 202211064839 A CN202211064839 A CN 202211064839A CN 115757208 A CN115757208 A CN 115757208A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory device
- read command
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
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 Of A Hierarchy Structure (AREA)
Abstract
本公开涉及程序暂停协议期间改进的存储器性能。公开了包含以操作方式耦合到存储器装置的处理装置的系统和方法。处理装置执行包括以下的操作:从存储器子系统控制器接收读取命令序列;通过执行一组读取命令中的第一读取命令而检索第一数据;将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;响应于确定所述存储器装置处于暂停状态,确定由所述第一读取命令指定的第一地址范围是否与由所述一组读取命令中的第二读取命令指定的第二地址范围重叠;响应于确定所述第一地址范围不与所述第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;将第一数据和第二数据传送到控制器。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及程序暂停协议期间改进的存储器性能。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置存储器装置可例如为非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
发明内容
本公开的一方面涉及一种系统,其包括:存储器装置;及处理装置,其以操作方式与所述存储器装置耦合,以执行包括以下的操作:从存储器子系统控制器接收读取命令序列;通过执行一组读取命令中的第一读取命令而检索第一数据;将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;响应于确定所述存储器装置处于暂停状态,确定由所述第一读取命令指定的第一地址范围是否与由所述一组读取命令中的第二读取命令指定的第二地址范围重叠;响应于确定所述第一地址范围不与所述第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;以及将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
本公开的另一方面涉及一种方法,其包括:由存储器装置的本地媒体控制器从存储器子系统控制器接收第一读取命令;通过执行第一读取命令而检索第一数据;将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;响应于从所述存储器子系统控制器接收到第二读取命令,确定所述存储器装置处于暂停状态;响应于确定由所述第一读取命令指定的第一地址范围不与由所述第二读取命令指定的第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;及将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
本公开的另一方面涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在由以操作方式耦合到存储器装置的处理装置执行时执行包括以下的操作:从存储器子系统控制器接收读取命令序列;通过执行一组读取命令中的第一读取命令而检索第一数据;将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;响应于确定所述存储器装置处于暂停状态,确定由所述第一读取命令指定的第一地址范围是否与由所述一组读取命令中的第二读取命令指定的第二地址范围重叠;响应于确定所述第一地址范围不与所述第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;以及将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
附图说明
将从下文给出的实施方式和从本公开的各种实施例的附图更充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2为说明根据本公开的一些实施例的在程序暂停协议期间实施多个读取操作的存储器子系统的框图。
图3为根据本公开的一些实施例的在程序暂停协议期间的多读取操作执行的实例存储器装置方法的流程图。
图4为根据本公开的一些实施例的在程序暂停协议期间的多读取操作执行的存储器子系统控制器方法的流程图。
图5为根据本公开的一些实施例的从多个读取操作接收数据的页高速缓存的图示。
图6为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的各方面涉及程序暂停协议期间改进的存储器性能。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供要存储在存储器子系统处的数据,且可请求要从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中当没有电力被供应到存储器装置时需要数据的保持。非易失性存储器装置的一个实例为与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由一组存储器单元(“单元”)组成。所述单元为存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一或多个位,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(例如“0”和“1”)或这些值的组合表示。
存储器装置可包含以二维网格布置的多个存储器单元。存储器单元以列(下文也称为位线)和行(下文也称为字线)阵列的形式蚀刻到硅晶片上。字线可指存储器装置的存储器单元的一或多个行,所述一或多个行与一或多个位线一起使用以产生存储器单元中的每一者的地址。位线和字线的相交点构成存储器单元的地址。下文中,块是指用于存储数据的存储器装置的单元,并且可包含存储器单元群组、字线群组、字线或个别存储器单元。可将一或多个块分组在一起以形成存储器装置的平面,以便允许在每一平面上进行并发操作。存储器装置可包含执行两个或更多个存储器平面的并发存储器页存取的电路系统。举例来说,存储器装置可包含用于存储器装置的每一平面的相应存取线驱动器电路和电力电路以促进对包含不同页类型的两个或更多个存储器平面的页进行并发存取。为易于描述,这些电路通常可称为独立的平面驱动器电路。取决于所采用的存储架构,可跨越存储器平面(即,在条带中)存储数据。因此,读取数据的片段(例如,对应于一或多个数据地址)的一个请求可产生对存储器装置的存储器平面中的两者或更多者执行的读取操作。
页高速缓存(或缓冲器)为包括数个存储器元件和额外电路系统的电路块。每一页高速缓存可耦合到位线,且用于在读取操作期间锁存从存储器阵列感测到的数据,且存储待编程到存储器阵列中的数据(例如,页高速缓存存储从存储器阵列读取的数据或待写入到存储器阵列的主机数据)。页高速缓存包含静态存储器元件,例如主数据高速缓存(PDC)和辅助数据高速缓存(SDC)。PDC保持数据,所述数据用于将位线保持在足以在编程期间移位存储器单元的阈值电压的电压电平,或在读取操作期间从位线感测数据。SDC为可由主机系统存取且用作数据读取/写入缓冲器的存储器元件。PDC和SDC彼此独立。页高速缓存可进一步包含感测放大器以从存储器单元和动态存储器元件读取数据。存储器子系统控制器可将PDC中的数据移动到SDC以允许所述数据由主机系统读取,或移动到动态存储器元件中的任一者以供在逻辑运算中使用。
可由存储器子系统执行存储器存取操作。存储器存取操作可为主机起始的操作或存储器子系统控制器起始的操作。举例来说,主机系统可起始存储器子系统上的存储器存取操作(例如,写入操作、读取操作、擦除操作等)。主机系统可将存储器存取命令(例如,写入命令、读取命令)发送到存储器子系统,以例如在存储器子系统处的存储器装置上存储数据以及从存储器子系统上的存储器装置读取数据。如由主机请求指定,待读取或写入的数据在下文中被称为“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名称空间),其为主机系统与主机数据相关联的位置。逻辑地址信息(例如,LBA、名称空间)可为用于主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的期限)、有效位图(其LBA或逻辑传送单元包含有效数据)等。存储器子系统控制器起始的存储器存取操作可涉及维护操作,例如垃圾收集、耗损均衡、不良块管理、块刷新操作等。
存储器子系统可接收执行存储器存取操作的请求,例如对由主机供应的数据进行编程的写入操作,且接着在已完成程序操作之前,接收执行另一存储器存取操作的请求,例如对同一地址的读取操作。当存储器子系统的存储器装置(例如,与非(NAND)型快闪存储器)被编程时,存储器子系统可将被编程的数据保持在控制器存储器(例如,动态随机存取存储器(DRAM))中,且接着在程序操作完成时刷新控制器存储器。只要编程时间(即,用于执行存储器装置的程序操作的时间)相对较短,合理大小的控制器存储器就可适应待编程的数据。然而,如果存储器装置使用某些类型的存储器单元,例如三层级单元(TLC)或四层级单元(QLC),那么编程时间可显著增加。因而,与随后接收到的存储器存取操作相关联的命令处理时延显著增加。如果在程序操作仍在进行时接收到执行读取操作的后续请求,那么一些存储器子系统将在对存储器装置执行读取操作之前等待直到程序操作完成为止。这可导致在对主机系统的请求作出响应时出现显著时延。
为了减少混合工作负载中的时延(例如,写入操作和读取操作的组合,例如紧接着写入操作的读取操作),某些存储器子系统利用程序暂停协议以允许随后接收到的存储器存取命令(例如,读取命令)存取当前正在其上执行写入操作的存储器装置。程序暂停协议可临时暂停写入操作以允许对存储器阵列的存取。确切地说,当存储器子系统在写入操作进行时接收到对存储在存储器装置的特定页中的数据执行存储器存取操作的请求时,存储器子系统控制器可发布程序暂停命令,所述命令使得存储器装置进入暂停状态。
在一些存储器子系统中,暂停协议可要求存储器装置在存储器子系统处理后续读取命令之前完全处理一个读取命令。举例来说,当处于暂停状态时,存储器装置可接收读取命令,将所请求的数据从存储器阵列检索到页高速缓存(例如,SDC)中,且将所检索的主机数据从页高速缓存传送到存储器子系统控制器。一旦数据已经传送,存储器装置便可处理后续读取命令。然而,当存储器装置处于暂停状态时,此过程可增加在对主机系统的多个读取命令作出响应时出现的时延,且因此可不利地影响由存储器子系统提供的服务质量。举例来说,虽然页高速缓存可具有存储器空间以存储来自多个读取命令的数据(例如,页高速缓存可包含16千字节(KiB)的页,而读取命令可请求4或8KiB的数据),但存储器装置需要等待直到每一读取命令经完全处理,直到可初始化任何后续读取命令为止。
本公开的各方面通过实施能够在存储器装置处于暂停状态时将来自多个读取命令的数据存储在页高速缓存中的存储器装置来解决以上和其它缺陷。确切地说,存储器装置从存储器子系统控制器接收读取命令序列。读取命令可请求驻存于存储器装置上的主机数据。存储器装置可经由存储器装置的存储器存取组件起始一组读取命令中的读取命令。确切地说,使用与由初始读取命令指定的逻辑地址范围对应的物理地址范围,存储器存取组件可从存储器装置的存储器阵列检索数据。存储器存取组件接着可将数据高速缓存在存储器装置的页高速缓存的一部分中。举例来说,来自四KiB读取命令的数据可存储于16KiB的页高速缓存的第一四KiB部分中。在(向存储器子系统控制器)传送高速缓存于页高速缓存中的数据之前,存储器存取组件可确定存储器装置是否处于暂停状态。在一些实施例中,存储器存取组件可在不发布后续恢复程序操作的情况下检查存储器子系统控制器是否发布暂停程序命令。在一些实施例中,存储器存取组件可在数据结构中维持指示存储器装置的暂停状态的指示符(例如,位旗标)。如果存储器装置不处于暂停状态,那么存储器存取组件可将高速缓存的数据传送到存储器子系统控制器,且起始所述一组的下一读取命令。
如果存储器装置处于暂停状态,那么存储器存取组件可检查对应于初始读取命令的地址范围是否与序列的下一读取命令的地址范围重叠。如果一个读取命令的地址范围与另一读指令的地址范围重叠,那么读取命令与另一读取命令重叠。如果地址范围重叠,那么存储器存取组件可将高速缓存的数据传送到存储器子系统控制器,且起始所述一组的下一读取命令。当地址范围不重叠时,存储器存取组件可通过从存储器装置的存储器阵列检索对应数据而起始下一读取命令。存储器存取组件接着可将数据高速缓存在存储器装置的页高速缓存的另一部分中。举例来说,八KiB读取命令可存储于16KiB的页高速缓存的第二四KiB部分中。因此,在16KiB的页高速缓存的空间的前12个KiB中高速缓存数据。存储器存取组件可从序列的额外不重叠读取命令检索数据,直到页高速缓存为满的或不具有足够存储器空间来从任何额外不重叠读取命令高速缓存数据为止。此时,存储器装置可在单个传送操作中将所有数据从页高速缓存传送到存储器子系统控制器。
本公开的优点包含但不限于通过将来自多个存储器存取命令的数据高速缓存在存储器装置的页高速缓存中并通过单个传送操作传送数据提高了存储器装置的性能并提高了主机系统的服务质量。这允许存储器装置处理多个存储器存取命令,而不具有从每一存储器存取命令立即传送数据所产生的时延。除了可能存在足够的锁存器以存储来自多个读取存取命令的数据的暂停状态之外,本公开的实施例还实现共享单个高速缓存以存储来自多次读取的数据。通过将数据从两个或更多个读取命令读取到SDC中,存储器装置避免必须将数据从PDC传送到SDC。在存储器子系统中,其中当存储器装置处于暂停状态时缺乏存储来自多个读取存取命令的数据的锁存器资源(可用锁存器可用于存储暂停写入操作的数据),本公开使存储器装置能够存储来自多个读取存取命令的读取数据。此外,在存储器子系统控制器忙于在其它裸片上执行操作且无法容易地转出数据的情境中,将数据读取到同一锁存器中防止裸片空闲。因此,本公开的实施例减少存储器装置可处理多个存储器存取命令的时间量,这减少了时延且改进了存储器装置的性能。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类媒体的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与…耦合”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110以例如将数据写入到存储器子系统110和从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。在存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3DNAND)。
存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如,多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC、PLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可分组为可指用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可经分组以形成块。
虽然描述了非易失性存储器组件,例如3D交叉点非易失性存储器单元阵列和NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它这类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可包含具有用以执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等)或其它合适的处理器。
存储器子系统控制器115可为处理装置,其包含经配置以执行存储于本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在所说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可改为依靠外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名称空间)与物理地址(例如,物理MU地址、物理块地址)之间的地址转换。存储器子系统控制器115还可包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成命令指令以存取存储器装置130以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110为包含原始存储器装置130的受管理存储器装置,所述原始存储器装置具有在裸片上的控制逻辑(例如,本地控制器132)和用于同一存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器子系统110包含存储器接口组件113,其包含存储器存取管理器114。存储器接口组件113负责处理存储器子系统控制器115与存储器子系统110的存储器装置(例如,存储器装置130)的交互。举例来说,存储器接口组件113可将与从主机系统120接收到的请求对应的存储器存取命令发送到存储器装置130,所述存储器存取命令例如为写入(程序)命令、读取命令、擦除命令或其它命令。另外,存储器接口组件113可从存储器装置130接收数据,例如响应于读取命令或成功地执行写入(程序)命令的确认而检索的数据。在一些实施例中,存储器子系统控制器115包含存储器存取管理器114的至少一部分。举例来说,存储器子系统控制器115可包含处理器117(处理装置),所述处理器经配置以执行存储在本地存储器119中的指令以用于执行本文所描述的操作。在一些实施例中,存储器接口组件113为主机系统120、应用程序或操作系统的部分。在一个实施例中,存储器接口组件113包含存储器存取管理器114以及其它子组件。存储器存取管理器114可将包含暂停命令及恢复命令的特定命令引导到存储器装置130,以管理不同存储器存取操作之间的冲突。当接收到对同一数据块、子块和字线的单元执行后续存储器存取操作的请求时,在对存储器装置130的特定数据块、子块和字线的单元执行待决存储器存取操作时可能发生冲突。响应于此类冲突,存储器存取管理器114可确定如何进行。在一些实施例中,存储器存取管理器114可通过将指定暂停命令发布到存储器装置130且接着在暂停待决存储器存取操作时发布执行后续存储器存取操作的请求而暂停待决存储器存取操作。
在一些实施例中,虽然对存储器装置130的某一数据块、子块和字线的单元执行待决存储器存取操作,但存储器接口113可接收额外存储器存取命令以对相同数据块、子块和字线的单元执行多个额外存储器存取操作。在此类情况下,存储器存取管理器114可首先确定额外存储器存取命令中的一者的地址范围是否与额外存储器存取命令中的另一者的地址范围重叠。响应于确定至少两个额外存储器存取命令的地址范围重叠,存储器存取管理器114可一次一个地将额外存储器存取命令呈现给存储器装置130。举例来说,存储器存取管理器114可将第一额外存储器存取命令呈现给存储器装置130,接收与第一额外存储器存取命令相关联的主机数据,接着将第二额外存储器存取命令呈现给存储器装置130,接收与第二额外存储器存取命令相关联的主机数据等等。通过一次一个地发布额外存储器存取命令,存储器存取管理器114防止在页高速缓存中发生读取覆写。响应于确定额外存储器存取命令的地址范围并不重叠(在此称为“不重叠存储器存取命令”),存储器存取管理器114可共同地将额外存储器存取命令呈现给存储器装置130。存储器装置130可检索与额外存储器存取命令相关联的主机数据并将其存储到存储器装置130的页高速缓存中,且在单个传送操作(例如,计时输出)中将主机数据发送到存储器接口113。下文描述关于存储器存取管理器114的操作的其它细节。
在一个实施例中,存储器装置130包含经配置以响应于从存储器存取管理器114接收到存储器存取命令而实行对应的存储器存取操作的存储器存取组件134。在一些实施例中,本地媒体控制器135包含存储器存取组件134的至少一部分,且经配置以执行本文中所描述的功能性。在一些实施例中,存储器存取组件134使用固件、硬件组件或以上各者的组合实施于存储器装置130上。在一些实施例中,存储器存取组件134从例如存储器存取管理器114等请求方接收暂停具有长操作时间的进行中的存储器存取操作(例如,TLC程序操作)的执行的请求。作为响应,存储器存取组件134可使存储器装置130进入暂停状态,其中在暂停状态期间暂停待决存储器存取操作。存储器存取组件134可进一步在存储器装置130处于暂停状态时接收执行额外存储器存取操作(例如,多个读取操作)的一或多个请求。存储器存取组件134可起始多个额外存储器存取操作,可在额外存储器存取操作完成时通知存储器存取管理器114,且存储器存取管理器114可发送恢复暂停的存储器存取操作的请求。下文描述关于存储器存取组件134的操作的其它细节。
图2为说明根据本公开的一些实施例的在程序暂停协议期间实施多个存储器存取操作的存储器子系统的框图200。在一个实施例中,存储器接口113以操作方式与存储器装置130耦合。在一个实施例中,存储器装置130包含页高速缓存240和存储器阵列250。存储器阵列250可包含在例如字线252的字线与位线(未展示)的相交点处形成的存储器单元阵列。在一个实施例中,存储器单元经分组为块,所述块可进一步划分为子块,其中例如字线252的给定字线例如跨越数个子块254a、254b、254c、254d共享。在一个实施例中,每一子块对应于存储器阵列250中的单独平面。与子块内的字线相关联的存储器单元群组称为物理页。子块中的一者中的每一物理页可包含多个页类型。举例来说,由单层级单元(SLC)形成的物理页具有称为较低逻辑页(LP)的单个页类型。多层级单元(MLC)物理页类型可包含LP和上部逻辑页(UP),TLC物理页类型是LP、UP和额外逻辑页(XP),并且QLC物理页类型是LP、UP、XP和顶部逻辑页(TP)。举例来说,由QLC存储器类型的存储器单元形成的物理页可具有总共四个逻辑页,其中每一逻辑页可存储不同于存储在与所述物理页相关联的其它逻辑页中的数据的数据。
取决于所使用的编程方案,存储器单元的每一逻辑页可在单独的编程遍次中进行编程,或者多个逻辑页可以一起进行编程。举例来说,在QLC物理页中,LP可在一个遍次上进行编程,且UP、XP和TP可在第二遍次上进行编程。其它编程方案也是可能的。然而,在此实例中,在第二遍次中对UP、XP和TP进行编程之前,首先从存储器阵列250中的物理页读取来自LP的数据,并且可以将所述数据存储在存储器装置130的页高速缓存240中。页高速缓存240是用于临时存储从存储器装置130的存储器阵列250读取或写入到所述存储器阵列的数据的缓冲器,并且可包含高速缓存寄存器242和一或多个数据寄存器244到246。对于读取操作,将数据从存储器阵列250读取到数据寄存器244到246中的一者中,且接着读取到高速缓存寄存器242中。存储器接口113接着可从高速缓存寄存器242读出数据。对于程序操作,存储器接口113将数据写入到高速缓存寄存器242,所述数据随后被传递到数据寄存器244到246中的一者且最后被编程到存储器阵列250。如果程序操作包含多个页(例如,UP、XP和TP),那么每一页可具有保持对应页数据的专用数据寄存器。
在一些实施例中,存储器存取管理器114可在当前正执行存储器存取操作时将暂停存储器存取操作的请求(例如,暂停命令)发送到存储器装置130。暂停命令可由存储器存取组件134接收,所述暂停命令可使存储器装置130进入暂停状态。在暂停状态下,暂停正对存储器阵列250(例如,对存储器阵列250的字线252)执行的进行中的存储器存取操作。在一个实施例中,存储器存取组件134将与暂停的存储器存取操作相关联的进程信息存储在页高速缓存240中。举例来说,存储器存取组件134可响应于接收到暂停命令而将已经编程到存储器阵列250的数据存储在页高速缓存240中(例如,存储在数据寄存器244到246中的一者中),其中此类数据可用于在稍后时间恢复暂停的存储器存取操作。
一旦暂停原始存储器存取操作,存储器存取管理器114便可在存储器装置130处于暂停状态时发送执行两个或更多个其它存储器存取操作(例如,对存储器阵列250的多个读取操作)的请求。存储器存取组件134可接收请求且起始对存储器阵列250的读取操作。两个或更多个读取存取操作(或任何其它操作)中的每一者可具有就绪/忙碌信号以指示每一读取存取操作的完成。在完成读取操作中的至少一者后,存储器存取组件134可将指示读取操作中的一或多者完成的通知提供到请求方。举例来说,存储器存取组件134可将就绪/忙碌信号设置到某一水平(例如,表示逻辑“1”的高电压)以指示存储器装置130准备好接收后续命令。存储器存取组件134指示何时可指示何时完成每一个别读取存取操作,或何时完成一组读取存取操作。
作为响应,存储器存取管理器114可将恢复先前暂停的存储器存取操作的请求(例如,恢复命令)发送到存储器装置130。存储器存取组件134可接收请求,使存储器装置130退出暂停状态,且使用来自页高速缓存240的进程信息来恢复对存储器阵列250的原始存储器存取操作。举例来说,存储器存取组件134可读取先前写入到存储器阵列250的页高速缓存240中存储的数据,且将所述数据与恢复命令中的数据进行比较以确定当暂停时存储器存取操作在何处停止。因此,存储器存取组件134可从所述点恢复将用于存储器存取操作的数据编程到存储器阵列250。
虽然存储器装置130处于暂停状态且响应于接收到两个或更多个读取命令,存储器存取组件134或存储器存取管理器114可确定两个或更多个存储器存取命令是否重叠。当一个存储器存取命令的地址范围的至少一部分与另一存储器存取命令的地址范围重叠时,存储器存取命令与另一存储器存取命令重叠。不重叠存储器存取命令(例如,读取命令)可在平面的不同字线和/或存储器页上。当两个或更多个读取操作重叠时,存储器存取组件134可一次一个地处理读取操作。确切地说,存储器存取组件134可通过从存储器阵列250检索与第一读取命令相关联的主机数据、在页高速缓存240中高速缓存主机数据、将主机数据从页高速缓存240传送到存储器子系统控制器115且接着处理下一读取命令而处理第一读取操作。
当两个或更多个读取命令不重叠(例如,其地址范围不重叠)时,存储器存取组件134从存储器阵列250检索与两个或更多个读取命令中的每一者相关联的主机数据(取决于空间高速缓存限制),将主机数据高速缓存在页高速缓存240中,且在单个传送操作中将主机数据从页高速缓存240传送到存储器子系统控制器115。
在一些实施例中,当存储器装置130不处于暂停状态时,存储器存取组件134可从更多不重叠的读取命令中的两者高速缓存数据。确切地说,当存储器装置不处于暂停状态且响应于从存储器子系统控制器接收到两个或更多个读取命令时,存储器存取组件134可确定所述两个或更多个读取命令是否重叠。响应于确定读取命令不重叠,存储器存取组件134可将与读取命令相关联的数据存储在页高速缓存240中,且在单个传送操作中将来自读取命令的数据传送到存储器子系统控制器115。
图3为根据本公开的一些实施例的在程序暂停协议期间的多读取操作执行的实例存储器装置方法的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1和图2的存储器存取组件134执行。虽然以特定顺序或次序来展示,但是除非另外指定,否则可修改过程的次序。因此,所说明的实施例应理解为仅作为实例,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作310处,处理逻辑从存储器子系统控制器接收读取命令序列。举例来说,处理逻辑(例如,存储器存取组件134)可从存储器存取管理器114接收对存储器装置130的存储器阵列250执行读取操作的多个请求。在一些实施例中,存储器存取管理器114将执行存储器存取操作的请求发送到存储器装置130,所述请求由存储器存取组件134接收。在一些实施例中,存储器存取管理器114响应于从例如主机系统120等一些其它组件接收到的请求而发送所述请求。
在操作320中,处理逻辑处理来自读取命令序列的初始读取命令。举例来说,处理逻辑可起始对存储器阵列250的初始读取命令。在一个实施例中,存储器存取组件134可将由初始读取命令的地址范围指定的一或多个读取参考电压施加到存储器阵列250的对应字线。从存储器阵列250检索的对应数据读取可存储在高速缓存页240的一部分中。举例来说,页高速缓存240可包含16KiB的存储器页,而初始读取命令可请求四KiB的数据。因此,存储器存取组件134可将由初始读取命令检索的四KiB的数据存储在16KiB的存储器页的第一部分(例如,第一四KiB)上。
在操作330处,处理逻辑(例如,存储器存取组件134)确定存储器装置(例如,存储器装置130)是否处于暂停状态。在一些实施例中,处理逻辑可基于处理逻辑先前从存储器存取管理器114接收到程序暂停命令来确定存储器装置130处于暂停状态,所述程序暂停命令请求存储器装置130在没有后续恢复命令的情况下进入暂停状态。在一些实施例中,处理逻辑可在数据结构中维持指示存储器装置130是否处于暂停状态的指示符(例如,位旗标)。举例来说,可响应于处理逻辑接收到程序暂停命令而将旗标设置为1,且响应于处理逻辑接收到程序恢复命令而将旗标设置为0。响应于存储器存取组件134确定存储器装置130不处于暂停状态,处理逻辑进行到操作340。响应于确定存储器装置130处于暂停状态,处理逻辑进行到操作350。
在操作340处,处理逻辑将数据从页高速缓存240传送到存储器子系统控制器115。举例来说,处理逻辑可执行传送数据的传送操作。处理逻辑接着可处理来自读取命令序列的下一读取命令。
在操作350处,处理逻辑确定来自读取命令序列的下一读取命令是否与初始读取命令重叠。举例来说,处理逻辑可确定与初始读取命令相关联的地址范围是否与相关联于下一读取命令的地址范围重叠。响应于确定读取命令重叠,处理逻辑进行到操作340。响应于确定读取命令不重叠,处理逻辑进行到操作360。
在操作360处,处理逻辑处理来自读取命令序列的下一读取命令。举例来说,处理逻辑可通过将由下一读取命令的地址范围指定的一或多个读取参考电压施加到存储器阵列250的对应字线而对存储器阵列250起始下一读取命令。从存储器阵列250读取的对应数据可存储在高速缓存页240的另一部分中。举例来说,下一读取命令还可请求四KiB的数据。因此,存储器存取组件134可将由下一读取命令检索的四KiB的数据存储在16KiB的存储器页的第二部分(例如,第二四KiB)上。
处理逻辑可针对读取命令序列的每一额外读取命令重复操作350,直到页高速缓存240为满的或不具有存储器空间来存储另一读取命令为止,此时处理逻辑可将存储在页高速缓存240中的数据传送到存储器子系统控制器115。
在一些实施例中,处理逻辑可接收单个读取命令且高速缓存页高速缓存中检索到的对应数据。处理逻辑接着可在将高速缓存数据传送到存储器子系统控制器115之前接收另一读取命令。作为响应,处理逻辑可确定存储器装置130是否处于暂停状态,以及对应于每一读取命令的相应地址范围是否重叠。响应于确定读取命令不重叠,处理逻辑可检索并高速缓存页高速缓存240的另一部分中的对应于另一读取命令的数据。处理逻辑接着可在单个传送操作中将来自两个读取命令的数据传送到存储器子系统控制器115。
图4为根据本公开的一些实施例的在程序暂停协议期间的多读取操作执行的实例控制器方法的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由图1和图2的存储器存取管理器114执行。虽然以特定顺序或次序来展示,但是除非另外指定,否则可修改过程的次序。因此,所说明的实施例应理解为仅作为实例,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作410处,处理逻辑从主机系统接收读取命令序列。举例来说,处理逻辑(例如,存储器存取管理器114)可从主机系统120接收对存储器装置的存储器阵列(例如,存储器装置130的存储器阵列250)执行读取操作的多个请求。
在操作420处,处理逻辑确定存储器装置(例如,存储器装置130)处于暂停状态。在一些实施例中,处理逻辑(例如,存储器存取管理器114)可基于处理逻辑先前利用程序暂停协议且发布请求存储器装置130进入暂停状态的程序暂停命令而确定存储器装置130处于暂停状态。举例来说,存储器存取管理器114可跟踪先前是否发布程序暂停状态命令以及是否发布后续程序恢复命令。当在没有后续程序恢复命令的情况下发布程序暂停命令时,处理逻辑可确定存储器装置130处于暂停状态。在一些实施例中,处理逻辑可维持指示存储器装置130是否处于暂停状态的旗标(例如,位)。举例来说,可响应于处理逻辑发布程序暂停命令而将旗标设置为1,且响应于处理逻辑发布程序恢复命令而将旗标设置为0。
在操作430处,处理逻辑确定读取命令是否重叠。举例来说,处理逻辑可确定由一个读取命令指定的地址范围是否与由另一读取命令指定的地址范围重叠。响应于确定读取命令重叠,处理逻辑进行到操作440。响应于确定读取命令不重叠,处理逻辑进行到操作450。
在操作440处,处理逻辑一次一个地将每一读取命令(来自读取命令序列)发布到存储器装置。举例来说,存储器存取组件134可将来自读取命令序列的第一读取命令发布到存储器装置130,接收与第一读取命令的地址范围对应的主机数据,接着从读取命令序列发布另一读取命令等等,直到处理来自序列的每一读取命令为止。对于每一读取命令,存储器装置130可从存储器阵列250检索与读取命令相关联的主机数据,在页高速缓存240中高速缓存主机数据,且将主机数据从页高速缓存240传送到存储器存取组件134。
在操作450处,处理逻辑共同地将每一读取命令(来自读取命令序列)发布到存储器装置。举例来说,存储器存取组件134可将来自读取命令序列的每一读取命令发布到存储器装置130,而不需要从存储器装置130计时输出(传送)数据。对于每一所接收的读取命令,存储器装置130(经由存储器存取组件134)。
对于每一读取命令,存储器装置130可从存储器阵列250检索与读取命令相关联的数据,在页高速缓存240中高速缓存数据,且在单个传送操作中将数据从页高速缓存240传送到存储器存取组件134。
图5为根据本公开的一些实施例的从多个读取操作接收数据的页高速缓存500的图示。在一些实施例中,页高速缓存500可与页高速缓存240类似或相同。页高速缓存500可包含能够高速缓存16KiB的数据的存储器页。如所说明,存储器存取组件134可执行读取操作A 510以从存储器阵列(例如,存储器阵列250)检索四KiB的数据且将四KiB的数据存储在页高速缓存500的第一四KiB部分处。读取操作B 512可为从存储器阵列250请求四KiB的数据的读取命令。响应于存储器子系统控制器115(经由存储器存取管理器114)或存储器装置130(经由存储器存取组件134)确定与读取操作B 512相关联的存储器范围不与同读取操作A 510相关联的存储器范围重叠,存储器存取组件134可执行读取操作B以从存储器阵列250检索四KiB的数据且将四KiB的数据存储在页高速缓存500的第二四KiB部分处。
读取操作C 514可为还从存储器阵列250请求四KiB的数据的读取命令。响应于存储器子系统控制器115(经由存储器存取管理器114)或存储器装置130(经由存储器存取组件134)确定与读取操作C 514相关联的存储器范围不与同读取操作A510或读取操作B 512相关联的存储器范围重叠,存储器存取组件134可执行读取操作C以从存储器阵列250检索四KiB的数据且将四KiB的数据存储在页高速缓存500的第三四KiB部分处。读取操作D 516可为还从存储器阵列250请求四KiB的数据的读取命令。响应于存储器子系统控制器115(经由存储器存取管理器114)或存储器装置130(经由存储器存取组件134)确定与读取操作D516相关联的存储器范围不与同读取操作A 510、读取操作B 512或读取操作C 514相关联的存储器范围重叠,存储器存取组件134可执行读取操作D以从存储器阵列250检索四KiB的数据且将四KiB的数据存储在页高速缓存500的最后四KiB部分处。存储器存取组件134接着可将来自页高速缓存240的16KiB的数据传送到子系统控制器115。
应注意,读取命令和页高速缓存部分大小可变化。举例来说,16KiB的页高速缓存可存储四个不重叠的4-KiB读取、两个不重叠的8-KiB读取、两个不重叠的4-KiB读取和一个不重叠的8-KiB读取等。类似地,32-KiB或64-KiB存储器页可存储不同大小的不重叠读取的任何组合。
图6说明计算机系统600的实例机器,在所述计算机系统内可执行用于使得机器执行本文中所论述方法中的任何一或多种的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的存储器存取组件134和/或存储器存取管理器114(未展示)的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的能力进行操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行将由所述机器采取的指定动作的一组指令的任何机器。此外,虽然说明单个机器,但应认为术语“机器”还包含机器的任何集合,所述机器单独地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多种。
实例计算机系统600包含经由总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统618。处理装置602表示一或多个通用处理装置,如微处理器、中央处理单元等。更确切地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602经配置以执行用于执行本文中所论述的操作和步骤的指令626。计算机系统600可进一步包含经由网络620通信的网络接口装置608。
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有体现本文所描述的任何一或多个方法或功能的一或多组指令626或软件。指令626还可在由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用以实施对应于图1的存储器存取组件134和/或存储器存取管理器114(未展示)的功能性的指令。尽管机器可读存储媒体624在实例实施例中展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的一组指令且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其他技术人员的方式。本文的算法通常是指产生所要结果的操作的自洽序列。操作为要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数字等有时是便利的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中所呈现的算法和显示本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是便利的。将如下文描述中所示呈现用于多种这些系统的结构。另外,不参考任何特定编程语言描述本公开。将了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。举例来说,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在前述说明书中,已参考本公开的特定实例实施例描述本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本发明进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
Claims (20)
1.一种系统,其包括:
存储器装置;及
处理装置,其以操作方式与所述存储器装置耦合,以执行包括以下的操作:
从存储器子系统控制器接收读取命令序列;
通过执行一组读取命令中的第一读取命令而检索第一数据;
将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;
响应于确定所述存储器装置处于暂停状态,确定由所述第一读取命令指定的第一地址范围是否与由所述一组读取命令中的第二读取命令指定的第二地址范围重叠;
响应于确定所述第一地址范围不与所述第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;以及
将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
2.根据权利要求1所述的系统,其中所述处理装置基于所述存储器装置接收到程序暂停命令而确定所述存储器装置处于所述暂停状态。
3.根据权利要求1所述的系统,其中所述处理装置在数据结构中维持指示存储器装置是否处于暂停状态的位旗标。
4.根据权利要求1所述的系统,其中所述处理装置将进一步执行包括以下的操作:
响应于确定所述第一地址范围与所述第二地址范围重叠,将所述第一数据传送到所述存储器子系统控制器。
5.根据权利要求1所述的系统,其中所述高速缓存包括用以临时存储正从所述存储器装置的存储器阵列读取或写入到所述存储器阵列的数据的页高速缓存。
6.根据权利要求1所述的系统,其中响应于接收到请求大于所述高速缓存的剩余未使用部分的数据的后续读取命令而执行传送所述第一数据和所述第二数据。
7.根据权利要求1所述的系统,其中响应于所述高速缓存不具有剩余未使用部分而执行传送所述第一数据和所述第二数据。
8.一种方法,其包括:
由存储器装置的本地媒体控制器从存储器子系统控制器接收第一读取命令;
通过执行第一读取命令而检索第一数据;
将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;
响应于从所述存储器子系统控制器接收到第二读取命令,确定所述存储器装置处于暂停状态;
响应于确定由所述第一读取命令指定的第一地址范围不与由所述第二读取命令指定的第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;及
将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
9.根据权利要求8所述的方法,其中基于所述存储器装置接收到程序暂停命令而确定所述存储器装置处于所述暂停状态。
10.根据权利要求8所述的方法,其进一步包括:
在数据结构中维持指示存储器装置是否处于暂停状态的位旗标。
11.根据权利要求8所述的方法,其进一步包括:
响应于确定所述第一地址范围与所述第二地址范围重叠,将所述第一数据传送到所述存储器子系统控制器。
12.根据权利要求8所述的方法,其中所述高速缓存包括用以临时存储正从所述存储器装置的存储器阵列读取或写入到所述存储器阵列的数据的页高速缓存。
13.根据权利要求8所述的方法,其中响应于接收到请求大于所述高速缓存的剩余未使用部分的数据的后续读取命令而执行传送所述第一数据和所述第二数据。
14.根据权利要求8所述的方法,其中响应于所述高速缓存不具有剩余未使用部分而执行传送所述第一数据和所述第二数据。
15.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由以操作方式耦合到存储器装置的处理装置执行时执行包括以下的操作:
从存储器子系统控制器接收读取命令序列;
通过执行一组读取命令中的第一读取命令而检索第一数据;
将所述第一数据存储在所述存储器装置的高速缓存的第一部分中;
响应于确定所述存储器装置处于暂停状态,确定由所述第一读取命令指定的第一地址范围是否与由所述一组读取命令中的第二读取命令指定的第二地址范围重叠;响应于确定所述第一地址范围不与所述第二地址范围重叠,通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中;以及
将所述第一数据和所述第二数据传送到所述存储器子系统控制器。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置基于所述存储器装置接收到程序暂停命令而确定所述存储器装置处于所述暂停状态。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置在数据结构中维持指示存储器装置是否处于暂停状态的位旗标。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步执行包括以下的操作:
响应于确定所述第一地址范围与所述第二地址范围重叠,将所述第一数据传送到所述存储器子系统控制器。
19.根据权利要求15所述的非暂时性计算机可读存储媒体,其中响应于接收到请求大于所述高速缓存的剩余未使用部分的数据的后续读取命令或所述高速缓存不具有剩余未使用部分中的至少一者而执行传送所述第一数据和所述第二数据。
20.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步执行包括以下的操作:
响应于确定所述存储器装置不处于所述暂停状态,确定所述第一地址范围不与所述第二地址范围重叠;以及
通过执行所述第二读取命令来检索第二数据且将所述第二数据存储在所述高速缓存的第二部分中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/465,033 US11604732B1 (en) | 2021-09-02 | 2021-09-02 | Memory performance during program suspend protocol |
US17/465,033 | 2021-09-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757208A true CN115757208A (zh) | 2023-03-07 |
Family
ID=85285599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211064839.2A Pending CN115757208A (zh) | 2021-09-02 | 2022-09-01 | 程序暂停协议期间改进的存储器性能 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11604732B1 (zh) |
CN (1) | CN115757208A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230130884A1 (en) * | 2021-10-26 | 2023-04-27 | Samsung Electronics Co., Ltd. | Method of scheduling commands for memory device and memory system performing the same |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822244A (en) * | 1997-09-24 | 1998-10-13 | Motorola, Inc. | Method and apparatus for suspending a program/erase operation in a flash memory |
US7280398B1 (en) * | 2006-08-31 | 2007-10-09 | Micron Technology, Inc. | System and memory for sequential multi-plane page memory operations |
KR20110110106A (ko) * | 2008-12-09 | 2011-10-06 | 램버스 인코포레이티드 | 병행 및 파이프라인화 메모리 동작을 위한 비휘발성 메모리 디바이스 |
US8850103B2 (en) * | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
EP3295310A4 (en) * | 2015-05-14 | 2018-12-26 | Adesto Technologies Corporation | Concurrent read and reconfigured write operations in a memory device |
US10621091B2 (en) * | 2018-05-04 | 2020-04-14 | Micron Technology, Inc. | Apparatuses and methods to perform continuous read operations |
US10509747B2 (en) * | 2018-05-17 | 2019-12-17 | Seagate Technology Llc | Memory access operation suspend/resume |
US10871923B2 (en) * | 2019-03-06 | 2020-12-22 | Micron Technology, Inc. | Management of program suspend and resume operations of a memory sub-system |
JP2021022414A (ja) * | 2019-07-29 | 2021-02-18 | キオクシア株式会社 | 半導体記憶装置 |
KR20210068734A (ko) * | 2019-12-02 | 2021-06-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11126369B1 (en) * | 2020-02-28 | 2021-09-21 | Western Digital Technologies, Inc. | Data storage with improved suspend resume performance |
US11726704B2 (en) * | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
-
2021
- 2021-09-02 US US17/465,033 patent/US11604732B1/en active Active
-
2022
- 2022-09-01 CN CN202211064839.2A patent/CN115757208A/zh active Pending
-
2023
- 2023-02-02 US US18/104,897 patent/US20230176972A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230130884A1 (en) * | 2021-10-26 | 2023-04-27 | Samsung Electronics Co., Ltd. | Method of scheduling commands for memory device and memory system performing the same |
US12019916B2 (en) * | 2021-10-26 | 2024-06-25 | Samsung Electronics Co., Ltd. | Method of scheduling commands for memory device and memory system performing the same |
Also Published As
Publication number | Publication date |
---|---|
US20230176972A1 (en) | 2023-06-08 |
US20230066951A1 (en) | 2023-03-02 |
US11604732B1 (en) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113006B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
US11662939B2 (en) | Checking status of multiple memory dies in a memory sub-system | |
CN113795820A (zh) | 主机系统与存储器子系统之间的输入/输出大小控制 | |
US11836076B2 (en) | Implementing mapping data structures to minimize sequentially written data accesses | |
US11385820B2 (en) | Command batching for a memory sub-system | |
CN113590023A (zh) | 在多平面存储器装置的单独平面上存储区名称空间中的区 | |
CN115905057A (zh) | 存储器装置中用于媒体管理命令的高效缓冲器管理 | |
US20240103770A1 (en) | Improved memory performance using memory access command queues in memory devices | |
US11681467B2 (en) | Checking status of multiple memory dies in a memory sub-system | |
US20230176972A1 (en) | Memory performance during program suspend protocol | |
CN115552531A (zh) | 共享字线上的存储器存取冲突管理 | |
CN113360091B (zh) | 用于存取操作的内部命令 | |
CN114429777A (zh) | 在编程操作暂停期间的编程操作执行 | |
CN115437973A (zh) | 多平面存储器装置中的并发页高速缓存资源存取 | |
CN114724611A (zh) | 存储器子系统中的存储器装置的双交错编程 | |
WO2021179163A1 (en) | Methods, systems and readable storage mediums for managing queues of amemory sub-system | |
CN113590022A (zh) | 用于存储器装置的系统和方法 | |
CN114442921B (zh) | 用于存储器子系统中的高速缓存读取的高速缓存释放命令 | |
CN113495695B (zh) | 用于存取命令的高速缓存标识符 | |
CN115273925B (zh) | 存储器子系统刷新 | |
US12026395B2 (en) | Operation based on consolidated memory region description data | |
US11221949B2 (en) | Multi state purgatory for media management for a memory subsystem | |
US11449272B1 (en) | Operation based on consolidated memory region description data | |
US20230056287A1 (en) | Dynamic partition command queues for a memory device | |
CN115705853A (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 |