CN113424165A - 在存储器子系统处的编程操作的中断 - Google Patents

在存储器子系统处的编程操作的中断 Download PDF

Info

Publication number
CN113424165A
CN113424165A CN201980091745.4A CN201980091745A CN113424165A CN 113424165 A CN113424165 A CN 113424165A CN 201980091745 A CN201980091745 A CN 201980091745A CN 113424165 A CN113424165 A CN 113424165A
Authority
CN
China
Prior art keywords
operations
memory
programming
interrupted
data
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.)
Granted
Application number
CN201980091745.4A
Other languages
English (en)
Other versions
CN113424165B (zh
Inventor
R·马希加
H·C·西苗内斯库
P-C·陈
J·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 CN113424165A publication Critical patent/CN113424165A/zh
Application granted granted Critical
Publication of CN113424165B publication Critical patent/CN113424165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)

Abstract

当在存储器子系统处执行一或多个编程操作时可以接收到读取操作。响应于接收到所述读取操作,在所述存储器子系统处执行的所述一或多个编程操作可以被中断。可以确定与所述一或多个中断的编程操作相关联的上下文数据并且可以将所述上下文数据提供到与所述存储器子系统相关联的固件。可以基于所述上下文数据从所述固件接收控制序列。基于来自所述固件的所述控制序列可以执行所述读取操作并且可以恢复所述一或多个中断的编程操作。

Description

在存储器子系统处的编程操作的中断
技术领域
本公开大体上涉及存储器子系统,且更确切地说,涉及在存储器子系统处的编程操作的中断。
背景技术
存储器子系统可以是存储系统,例如,固态驱动器(SSD),或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,例如,双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),或非易失性双列直插式存储器模块(NVDIMM)。存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统将数据存储在存储器组件处且从存储器组件检索数据。
附图说明
根据下文给出的详细描述并且根据本公开的各种实施方案的附图,将更充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2说明根据本公开的一些实施例的当中断用于存储器组件的编程操作时控制器的固件组件与控制器的硬件组件之间的交互。
图3是根据一些实施例的中断编程操作以执行读取操作的实例方法的流程图。
图4说明根据本公开的一些实施例的编程操作的接收和读取操作的后续接收。
图5是根据本公开的一些实施例的当在执行一或多个编程操作时接收读取操作时在控制模式中操作的实例方法的流程图。
图6是本公开的实施方案可以在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及在存储器子系统处的编程操作的中断。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的实例是经由外围互连件(例如,输入/输出总线、存储区域网络)耦合到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器,以及硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线耦合到CPU的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。存储器子系统可以是混合式存储器/存储子系统。一般来说,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可以提供将存储在存储器子系统处的数据且可以请求将从存储器子系统检索的数据。
常规存储器子系统可以执行关于包含在存储器子系统中的一或多个存储器组件的各种操作。举例来说,可以在一或多个存储器组件处执行读取操作、编程(即,写入)操作和擦除操作。在常规存储器子系统中,各种操作可以按接收到每个对应的操作的序列来执行。与在存储器组件处的读取操作的执行相比通过常规存储器子系统在存储器组件处的编程操作的执行可以利用基本上较长的时间量来完成。因此,如果在常规存储器子系统在存储器组件处执行编程操作时接收到对存储器组件的读取操作,那么读取操作可以被延迟直到编程操作已经完成为止。在读取操作的执行中的此类延迟可以引起针对常规存储器子系统的额外的读取时延。
本公开的方面通过中断在存储器子系统处的编程操作来解决上述和其它缺陷。存储器子系统的控制器可以包含硬件组件和固件组件。存储器子系统的控制器的硬件组件可以确定当接收到后续读取操作时编程操作的暂停或中断是否应该发生。此外,当由于后续读取操作编程操作已经被中断时硬件组件可以将指示提供给固件组件。如下文进一步详细描述,固件组件可以接收与在硬件组件处的编程操作相关联的上下文数据并且可以基于上下文数据来确定操作的序列。操作的序列可以被提供到硬件组件并且通过硬件组件来执行以便执行读取操作并且恢复中断的编程操作。举例来说,操作的序列可以指定将通过控制器的硬件组件来执行的一系列操作以便安全地执行读取操作并且恢复暂停的或中断的编程操作而不给中断的编程操作的数据造成数据完整性问题。
本公开的优点包含但不限于存储器子系统的改进的性能,这是因为可以较少时间来执行读取操作。举例来说,因为可以执行读取操作而无须等待编程操作的完成,所以可以减小存储器子系统的读取时延。读取时延的减小可以使得存储器子系统能够满足服务质量(QoS)要求,所述要求指定当在存储器子系统处执行读取操作时的各种操作要求。此外,在存储器子系统中可以利用更加复杂的存储器组件。更加复杂的存储器组件可以具有更大容量来存储数据并且在此类存储器组件上完成编程操作的时间量也可以是更长的,这是因为将写入更多数据作为单个编程操作的部分。因此此类编程操作的中断可以允许读取操作将以减小的时延来执行,尽管需要增加的时间来完成编程操作。
另外,因为控制器的固件组件可以确定将通过控制器的硬件组件来执行的操作的序列,所以与控制器的硬件组件的修改相反,由存储器子系统使用的存储器组件的类型的改变可以需要固件组件的更新。举例来说,基于在存储器子系统中使用的存储器组件的类型、容量和各种其它特性通过固件组件确定的操作的序列可以是不同的。因此,当不同的或新的存储器组件由存储器子系统利用时控制器的硬件组件并不需要被重新设计,这是因为固件可以经过更新以确定可以适合用于新的存储器组件的操作的经修改的序列。因此,本公开可以包含具有可以提供编程操作的中断以用于存储器组件的不同的配置的硬件组件和灵活的固件组件的控制器。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可以包含媒体,例如,存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件,或此类组件的组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储子系统。一般来说,计算环境100可以包含使用存储器子系统110的主机系统120。举例来说,主机系统120可以将数据写入到存储器子系统110并且从存储器子系统110读取数据。
主机系统120可以是计算装置,例如,桌上型计算机、膝上型计算机、网络服务器、移动装置,或包含存储器和处理装置的此类计算装置。主机系统120可以包含或耦合到存储器子系统110,使得主机系统120可以从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可以经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁性连接等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM高速(NVMe)接口来存取存储器组件112A到112N。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)类型快闪存储器。存储器组件112A到112N中的每一个可以包含一或多个存储器单元阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可以存储由主机系统120使用的一或多个数据位(例如,数据块)。虽然描述了例如NAND类型快闪存储器的非易失性存储器组件,但是存储器组件112A到112N可以基于任何其它类型的存储器,例如,易失性存储器。在一些实施例中,存储器组件112A到112N可以是但不限于,随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM),以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可以执行就地写入操作,其中可以在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可以分组为存储器页或数据块,所述存储器页或数据块可以指用于存储数据的存储器组件的单元。
存储器系统控制器115(下文称为“控制器”)可以与存储器组件112A到112N通信以执行操作,例如,在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它此类操作。控制器115可以包含硬件,例如,一或多个集成电路和/或离散组件、缓冲存储器,或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。控制器115可以包含经配置以执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、所提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子系统110已经说明为包含控制器115,但是在本公开的另一实施例中,存储器子系统110可不包含控制器115,且可替代地依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,控制器115可以从主机系统120接收命令或操作,并且可以将命令或操作转换成指令或适当的命令以实现对存储器组件112A到112N的所需存取。控制器115可以负责其它操作,例如,耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及在与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转译。控制器115可以进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可以包含未说明的额外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可以从控制器115接收地址并且对地址进行解码以存取存储器组件112A到112N。
存储器子系统110包含操作中断组件113,其可以用于中断或暂停在存储器组件112A到112N处执行的一或多个编程操作。在一些实施例中,控制器115包含操作中断组件113的至少一部分。举例来说,控制器115可以包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,操作中断组件113是主机系统120、应用程序或操作系统的部分。
当一或多个编程操作正通过控制器的硬件组件(例如,控制器115的硬件组件)执行时操作中断组件113可以接收读取操作。硬件组件可以确定暂停或中断一或多个编程操作并且可以提供对将执行的操作的序列的请求以便完成读取操作并且恢复暂停的或中断的编程操作。响应于接收到操作的序列,可以执行读取操作并且可以恢复暂停的或中断的编程操作。下文描述了关于操作中断组件113的操作的其它细节。
图2说明根据本公开的一些实施例的当中断用于存储器组件的编程操作时控制器的固件组件与控制器的硬件组件之间的交互。控制器220可以对应于图1的控制器115。
如图2中所示,控制器220可以包含控制器固件组件221和控制器硬件组件222。控制器硬件组件222可以是控制器220的电路系统,其用于将数据发射到存储器子系统的存储器组件并且从存储器子系统的存储器组件接收数据。控制器固件组件221可以是控制器220的固件,其提供控制器220的硬件的一些控制。控制器220可以接收将在存储器组件处执行的读取操作、写入操作和擦除操作。存储器组件210可以是与控制器220耦合的多个存储器组件中的一个存储器组件。
存储器组件210可以包含:存储器单元211,其用于存储来自主机系统的数据;以及缓冲器212,其用于提供对将作为编程操作的部分写入到存储器单元211的数据的临时存储或者提供对作为读取操作的部分从存储器单元211检索到的数据的临时存储。在一些实施例中,存储器组件210可以在缓冲器212之间移动或复制数据。举例来说,当执行第一编程操作以在存储器单元211处写入数据时用于第一编程操作的数据可以存储在第一缓冲器处。类似地,用于第二编程操作的数据可以存储在第二缓冲器处。当将执行读取操作时第三缓冲器可以用于存储用于编程操作的数据。作为实例,当将执行读取操作并且第一和第二编程操作将暂停或中断时,在第一缓冲器处的用于第一编程操作的数据可以被复制到第三缓冲器。读取操作可以随后被执行并且对应的数据可以被从存储器单元211检索并且放置在缓冲器212中的第一缓冲器处。检索到的数据可以随后被从第一缓冲器返回到控制器220,并且随后用于第一编程操作的数据可以被从第三缓冲器返回到第一缓冲器,且第一编程操作可以在读取操作已经完成之后恢复。
在不同的缓冲器之间移动数据的操作、应该被移动的特定编程操作的数据的确定等可以由通过控制器固件组件221确定的操作的序列来指定。举例来说,当在执行编程操作时接收到读取操作时控制器硬件组件222可以暂停或中断编程操作的执行。响应于接收到读取操作,控制器硬件组件222可以通知控制器固件组件221编程操作已经被暂停或中断。在一些实施例中,控制器硬件组件222可以进一步提供通过控制器硬件组件222接收到的编程操作的上下文数据。如下文进一步详细描述,上下文数据可以指定已经通过控制器硬件组件222接收到的哪些编程操作已经被执行、哪些编程操作尚未被执行、当对应的编程操作被中断时哪些编程操作被执行、关于存储器组件210的每个编程操作的状态,以及存储器组件210的状态等。
控制器固件组件221可以从控制器硬件组件222接收上下文数据并且可以基于上下文数据产生操作的序列。在一些实施例中,操作的序列可以进一步基于存储器组件210的类型或配置。存储器组件210的类型或配置可以识别可供使用的存储器组件210的资源,例如,可以用于存储与编程操作或读取操作相关联的数据的缓冲器的数目,或存储器组件210的任何其它资源或特性。举例来说,控制器固件组件221可以产生操作的序列以确定将由控制器硬件组件222执行的步骤或操作以便执行读取操作并且恢复中断的编程操作的执行。在一些实施例中,操作的序列可以指定将复制到不同的缓冲器或其它此类存储器位置的特定编程操作的特定数据、何时执行序列中的操作等。因此,操作的序列可以指定操作的任何组合,所述操作的任何组合可以指定控制器硬件组件222将如何与存储器组件210交互以执行读取操作并且恢复中断的编程操作。
在一些实施例中,当编程操作被中断时控制器硬件组件222可以被视为在控制模式中操作。控制模式可以指定控制器硬件组件222可以受到来自控制器固件组件221的操作的序列的控制。一旦操作的序列已经通过控制器硬件组件222来执行,则控制器硬件组件222可以从控制模式返回到在自身控制模式中操作,其中控制器硬件组件222可以操作而无需来自控制器固件组件221的操作的另一序列。
在相同或替代实施例中,控制器硬件组件222可以接收操作的序列或在关于出自存储器子系统的多个存储器组件中的特定存储器组件的控制模式操作中。举例来说,可以接收到用于特定存储器组件的读取操作并且用于特定存储器组件的编程操作可以被中断同时用于其它存储器组件的其它编程操作可以仍然被执行而没有被中断。此外,控制器硬件组件222可以关于特定存储器组件在控制模式中操作同时在正常条件下操作而没有来自用于其它存储器组件的控制器固件组件221的输入。
图3是根据一些实施例的中断编程操作以执行读取操作的实例方法300的流程图。方法300可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法300通过图1的操作中断组件113来执行。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
如图3中所示,在操作310处,处理逻辑执行用于存储器组件的一或多个编程操作。举例来说,控制器的硬件组件(即,硬件部分或电路系统)可以从主机系统和/或控制器的固件组件接收编程操作和对应的数据。接收到的编程操作中的一或多个可以随着硬件组件将对应的数据发射到存储器组件被当前执行。举例来说,存储器组件的一或多个缓冲器可以用于存储来自已经执行的编程操作的数据。由硬件组件接收到的其它编程操作可能尚未在存储器组件处被执行。在操作320处,当针对存储器组件执行一或多个编程操作时处理逻辑接收用于存储器组件的读取操作。举例来说,读取操作可以是从主机系统和/或控制器的固件组件接收到的。因此,当硬件组件执行先前接收到的一或多个编程操作时读取操作可以通过控制器的硬件组件被接收到。
如所示出,在操作330处,响应于接收到读取操作处理逻辑中断用于存储器组件的剩余的编程操作。举例来说,在相同存储器组件处通过硬件组件执行的任何编程操作可以被暂停或中断。针对其它存储器组件执行的其它编程操作可能未被暂停或中断。在一些实施例中,编程操作的暂停或中断可以包含从控制器的硬件组件到存储器组件(例如,存储器组件的缓冲器)的编程操作的数据的发射的停止。编程操作可以经由子操作或命令的序列来执行。举例来说,编程操作可以通过以子操作或命令之间的某些计时条件来执行的子操作或命令的序列来执行。因此,编程操作的中断可以引起被执行以完成编程操作的多个子操作或命令的中断。在一些实施例中,此类子操作或命令可以是被传送到存储器组件的存储器单元的数据的中断、编程子操作或命令的中断、擦除子操作或命令的中断、将数据从存储器组件的缓冲器发射到控制器的硬件组件的数据召回子操作或命令等。在操作340处,响应于中断剩余的编程操作处理逻辑将与剩余的编程操作相关联的上下文数据发射到固件。
在一些实施例中,当硬件组件并不能够确定用于执行读取操作且用于恢复中断的编程操作的操作的序列时可以将上下文数据发射到固件(即,控制器的固件组件)。举例来说,中断的或暂停的编程操作的状态或进展可以在编程操作中的点处,其中硬件组件无法确定可以被执行以安全地恢复中断的或暂停的编程操作使得当编程操作被恢复时被写入到存储器组件的存储器单元的数据可以是有效的操作或操作的排序。举例来说,由控制序列指定的额外的操作可以用于保留中断的编程操作的数据使得当恢复中断的编程操作时可以使用所保留的数据。在一些实施例中,所保留的数据可以被存储在存储器组件的缓冲器中的一或多个处。所保留的数据可以随后被返回到已经先前存储已经被中断的编程操作的数据的缓冲器。在相同或替代实施例中,数据可以从存储器组件的缓冲器被返回到控制器的硬件组件,并且数据可以随后被保留或存储在硬件组件存储器缓冲器处。随后,当将恢复编程操作时,用于编程操作的所保留的数据可以被返回到存储器组件的缓冲器或已经先前存储编程操作的数据的存储器组件的缓冲器。
上下文数据可以指定涉及一或多个编程操作、被中断的剩余的编程操作、存储器组件的状态等的信息。举例来说,上下文数据可以指定当被执行时哪些编程操作已经被中断以及在编程操作中的哪个点对应的编程操作已经被中断、哪些编程操作已经通过硬件组件到存储器组件来执行、编程操作已经被中断处的存储器组件的状态信息等中的任何一个或全部。因此,上下文数据可以识别编程操作的状态以及存储器组件的状态。
如图3中所示,在操作350处,处理逻辑基于上下文数据从固件接收控制序列。控制序列可以是已经通过固件产生的并且在编程操作已经被中断之后将通过控制器的硬件组件来执行的额外的操作的序列。操作的序列可以指定将通过硬件组件与存储器组件来执行的一系列操作以便恢复中断的编程操作的执行。在一些实施例中,操作的序列可以指定将执行读取操作并且将恢复中断的编程操作的一系列操作。举例来说,操作的序列可以指定当将执行读取操作时用于在存储器组件的缓冲器处的特定中断的编程操作的数据将被复制到何处。举例来说,读取操作的执行可以引起来自存储器组件的存储器单元的数据被存储在当前存储中断的编程操作的数据的存储器组件的第一缓冲器处。操作的序列可以指定将复制中断的编程操作的数据的另一位置。举例来说,存储器组件的另一缓冲器(或存储器组件的其它此类位置)可以用于复制中断的编程操作的数据。随后,第一缓冲器可以用于检索读取操作的数据并且将数据返回到控制器的硬件组件。操作的序列可以进一步指定中断的编程操作的数据随后将从其它位置(例如,其它缓冲器)复制到先前存储编程操作的数据的第一缓冲器。关于控制器的硬件组件和存储器组件的操作的任何其它组合可以由操作的序列指定使得中断的编程操作的数据可以是有效的。
在一些实施例中,操作的序列可以进一步基于存储器组件的类型或配置。举例来说,固件可以存储或检索指定存储器组件的类型或配置的数据结构。存储器组件的类型或配置可以指定存储器组件的架构或设计的信息。在一些实施例中,存储器组件的类型或配置可以用于确定可以用于读取操作和编程操作的存储器组件的资源(例如,缓冲器的量)。在一些实施例中,操作的序列可以基于读取操作的优先级的识别。举例来说,如果读取操作是高优先级读取操作(例如,来自主机系统的应用程序),那么操作的序列可以进一步确认编程操作的中断并且可以指示将执行读取操作。否则的话,如果读取操作是低优先级读取,那么操作的序列可以指示编程操作将完成或者可以指定编程操作的一部分将完成而另一部分将被中断以便执行读取操作。
在操作360处,处理逻辑执行控制序列的操作以执行读取操作并且以恢复中断的编程操作。举例来说,控制器的硬件组件可以执行由固件指定的系列的操作以便执行读取操作并且在读取操作的完成之后安全地恢复中断的编程操作的执行。此外,在中断的编程操作已经完成之后也可以恢复已经通过控制器的硬件组件接收到但是尚未执行的任何编程操作。
图4说明根据本公开的一些实施例的编程操作的接收和读取操作的后续接收。编程操作和读取操作的接收可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,编程操作和读取操作的接收通过图1的操作中断组件113来执行。
如图4中所示,可以通过存储器子系统的控制器的硬件组件来接收一系列编程操作410。硬件组件可以执行编程操作中的一或多个而其它编程操作在将通过硬件组件执行的队列中。举例来说,硬件组件可以当前执行第一编程操作P0和第二编程操作P1。编程操作P2、P3和P4可以排队但是编程操作P2、P3和P4的对应的数据并不被发射到存储器子系统的存储器组件的缓冲器。当第一和第二编程操作被执行时,读取操作420可以通过控制器的硬件组件被接收到。第一和第二编程操作可以随后被中断或暂停使得读取操作420可以被执行。编程操作的上下文数据可以随后被提供到控制器的固件。举例来说,可以提供第一和第二编程操作已经被中断的识别。所述识别可以指定编程操作被中断的编程操作的特定步骤或状态。举例来说,上下文数据可以识别在编程操作被中断之前已经写入到存储器单元的编程操作的数据的量和/或尚未写入到存储器组件的存储器单元的数据的量。上下文数据可以进一步指示编程操作P2、P3和P4的执行尚未开始。在第一编程操作P0和第二编程操作P1已经被中断之后,可以执行读取操作420。
图5是根据本公开的一些实施例的当在执行一或多个编程操作时接收读取操作时在控制模式中操作的实例方法500的流程图。方法500可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500通过图1的操作中断组件113来执行。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
如图5中所示,在操作510处,当执行一或多个编程操作时处理逻辑接收读取操作。举例来说,读取操作可以是从主机系统接收到的。读取操作可以指定将从经受一或多个编程操作的存储器组件检索数据。在操作520处,响应于接收到读取操作处理逻辑中断一或多个编程操作并且进入控制模式。举例来说,可以中断当前在存储器组件处被执行的编程操作。控制模式可以是控制器的硬件组件的状态,其中来自固件的操作的序列(例如,控制序列)将被用于确定硬件组件的行为或操作。在编程操作被中断之前控制器的硬件组件可以在正常模式中。正常模式可以指一种操作状态,其中控制器的硬件组件可以执行操作而没有来自固件的控制序列。
在操作530处,响应于进入控制模式处理逻辑从固件接收操作的序列。举例来说,固件可以是包含硬件组件的控制器的固件。在一些实施例中,当在控制模式中时操作的序列可以是将通过控制器的硬件组件执行的一系列操作或步骤。因此,当接收到读取操作并且一或多个编程操作已经被中断时硬件组件可以进入控制模式。如先前所描述,操作的序列或控制序列可以基于中断的编程操作的上下文数据。因此,操作的序列或控制序列可以基于一或多个中断的编程操作。在操作540处,处理逻辑执行来自固件的操作的序列以执行读取操作。举例来说,如先前所描述,操作的序列可以指定在存储器组件的缓冲器处的数据将被复制到另一位置或缓冲器使得读取操作的数据可以存储在缓冲器处。因此,当硬件组件在控制模式中操作时控制器的硬件组件可以基于来自固件的指令操作。
此外,在操作550处,响应于执行操作的序列处理逻辑退出控制模式并且恢复中断的一或多个编程操作。在一些实施例中,操作的序列可以指定用于硬件组件退出控制模式的最后的命令。在已经执行读取操作之后,中断的编程操作的数据可以经复制和/或经修改使得编程操作可以在存储器组件处恢复和完成。
图6说明计算机系统600的实例机器,在所述实例机器内可以执行用于使所述机器执行本文中所论述的方法中的任何一或多个的指令的集合。在一些实施例中,计算机系统600可以对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或者可以用于执行控制器的操作(例如,以执行操作系统来执行对应于图1的操作中断组件113的操作)。在替代实施例中,机器可以连接(例如,网络连接)到LAN、内联网、外联网和/或因特网中的其它机器。机器可以作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器、数字或非数字电路系统,或能够执行(依序地或以其它方式)指定将由此机器进行的动作的指令的集合的任何机器。此外,虽然说明单个机器,但是还应认为术语“机器”包含机器的任何集合,所述集合单独地或联合地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多个。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统618,其经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如,微处理器、中央处理单元,或类似者。更确切地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器,或类似者。处理装置602经配置以执行指令626以用于执行本文中所论述的操作和步骤。计算机系统600可以进一步包含网络接口装置608以在网络620上通信。
存储系统618可以包含机器可读存储媒体624(也被称为计算机可读媒体),其上存储有指令626的一或多个集合或体现本文中所描述的方法或功能中的任何一或多个的软件。指令626也可以在由计算机系统600执行期间完全地或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可以对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于操作中断组件(例如,图1的操作中断组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624示出为单个媒体,但是应认为术语“机器可读存储媒体”包含存储指令的一或多个集合的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令的集合且使得机器执行本公开的方法中的任何一或多个的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已经就计算机存储器内的数据位的操作的算法和符号表示而言呈现了之前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在这里并且通常被认为是引起所需结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。已经证明有时候,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、术语、数字或类似者是方便的。
然而,应牢记,所有这些和类似术语应与适当的物理量相关联,且仅仅是应用于这些量的方便标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于预期目的而专门构造,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,例如,但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或者它可证明构造用于执行所述方法的更加专业化的设备是方便的。将如下文描述中所阐述的那样来呈现各种各样的这些系统的结构。另外,不参考任何特定编程语言来描述本公开。将了解,可以使用各种各样的编程语言来实施如本文中所描述的本公开的教示。
本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已经参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义而非限制性意义上看待说明书和图式。

Claims (20)

1.一种方法,其包括:
当在存储器子系统处执行一或多个编程操作时接收读取操作;
响应于接收到所述读取操作,中断在所述存储器子系统处执行的所述一或多个编程操作;
确定与所述一或多个中断的编程操作相关联的上下文数据;
将所述上下文数据提供到与所述存储器子系统相关联的固件;
基于所述上下文数据从所述固件接收控制序列;以及
基于来自所述固件的所述控制序列通过处理装置执行所述读取操作并且恢复所述一或多个中断的编程操作。
2.根据权利要求1所述的方法,其中所述上下文数据识别当所述一或多个编程操作已经被中断时所述一或多个编程操作的点。
3.根据权利要求1所述的方法,其中所述上下文数据是基于当所述一或多个编程操作已经被中断时与所述一或多个编程操作相关联的存储器组件的状态的。
4.根据权利要求1所述的方法,其中基于来自所述固件的所述控制序列执行所述读取操作并且恢复所述一或多个中断的编程操作包括:
执行通过来自所述固件的所述控制序列指定的一或多个额外的操作,其中所述一或多个额外的操作与将数据从所述存储器子系统的存储器组件的缓冲器复制到所述存储器组件的另一缓冲器相关联,其中所述所复制的数据与所述一或多个中断的编程操作相关联。
5.根据权利要求4所述的方法,其中所述一或多个额外的操作对应于保留与所述一或多个中断的编程操作相关联的数据,所述保留的数据用于恢复所述一或多个中断的编程操作。
6.根据权利要求1所述的方法,其中所述控制序列进一步基于与所述一或多个编程操作相关联的所述存储器子系统的存储器组件的类型。
7.根据权利要求1所述的方法,其中所述固件对应于所述存储器子系统的控制器的固件,并且其中所述一或多个编程操作的所述中断是基于所述控制器的硬件组件的。
8.一种系统,其包括:
存储器组件;以及
处理装置,其与所述存储器组件以操作方式耦合以进行以下操作:
当在所述存储器组件处执行编程操作时接收读取操作;
响应于当在所述存储器组件处执行所述编程操作时接收到所述读取操作,中断所述编程操作;
从与所述存储器组件相关联的控制器的固件组件接收操作的序列,所述操作的序列是基于所述中断的编程操作的;
执行包含所述读取操作的所述操作的序列;以及
响应于执行所述操作的序列恢复所述中断的编程操作。
9.根据权利要求8所述的系统,其中所述操作的序列进一步基于当所述编程操作已经被中断时所述编程操作的点的识别。
10.根据权利要求8所述的系统,其中所述上下文数据进一步基于所述存储器组件的状态。
11.根据权利要求8所述的系统,其中为了执行所述操作的序列以执行所述读取操作,所述处理装置进一步进行以下操作:
执行通过所述操作的序列指定的一或多个额外的操作,其中所述一或多个额外的操作与将数据从所述存储器组件的缓冲器复制到所述存储器组件的另一缓冲器相关联,其中所述所复制的数据与所述中断的编程操作相关联。
12.根据权利要求11所述的系统,其中所述一或多个额外的操作对应于保留与所述中断的编程操作相关联的所述数据,所述保留的数据用于恢复所述中断的编程操作。
13.根据权利要求8所述的系统,其中所述操作的序列进一步基于所述存储器组件的配置。
14.一种系统,其包括:
存储器组件;以及
处理装置,其与所述存储器组件以操作方式耦合以进行以下操作:
当在存储器子系统处执行一或多个编程操作时接收读取操作;
响应于接收到所述读取操作,中断在所述存储器子系统处执行的所述一或多个编程操作;
确定与所述一或多个中断的编程操作相关联的上下文数据;
将所述上下文数据提供到与所述存储器子系统相关联的固件;
基于所述上下文数据从所述固件接收控制序列;以及
基于来自所述固件的所述控制序列执行所述读取操作并且恢复所述一或多个中断的编程操作。
15.根据权利要求14所述的系统,其中所述上下文数据识别当所述一或多个编程操作已经被中断时所述一或多个编程操作的点。
16.根据权利要求14所述的系统,其中所述上下文数据是基于当所述一或多个编程操作已经被中断时与所述一或多个编程操作相关联的存储器组件的状态的。
17.根据权利要求14所述的系统,其中为了基于来自所述固件的所述控制序列执行所述读取操作并且恢复所述一或多个中断的编程操作,所述处理装置进一步进行以下操作:
执行通过来自所述固件的所述控制序列指定的一或多个额外的操作,其中所述一或多个额外的操作与将数据从所述存储器子系统的存储器组件的缓冲器复制到所述存储器组件的另一缓冲器相关联,其中所述所复制的数据与所述一或多个中断的编程操作相关联。
18.根据权利要求17所述的系统,其中所述一或多个额外的操作对应于保留与所述一或多个中断的编程操作相关联的数据,所述保留的数据用于恢复所述一或多个中断的编程操作。
19.根据权利要求14所述的系统,其中所述控制序列进一步基于与所述一或多个编程操作相关联的所述存储器子系统的存储器组件的类型。
20.根据权利要求14所述的系统,其中所述固件对应于所述存储器子系统的控制器的固件,并且其中所述一或多个编程操作的所述中断是基于所述控制器的硬件组件的。
CN201980091745.4A 2018-12-28 2019-12-27 在存储器子系统处的编程操作的中断 Active CN113424165B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/235,474 2018-12-28
US16/235,474 US10929056B2 (en) 2018-12-28 2018-12-28 Interruption of program operations at a memory sub-system
PCT/US2019/068796 WO2020140069A1 (en) 2018-12-28 2019-12-27 Interruption of program operations at a memory sub-system

Publications (2)

Publication Number Publication Date
CN113424165A true CN113424165A (zh) 2021-09-21
CN113424165B CN113424165B (zh) 2024-05-28

Family

ID=71122907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980091745.4A Active CN113424165B (zh) 2018-12-28 2019-12-27 在存储器子系统处的编程操作的中断

Country Status (3)

Country Link
US (3) US10929056B2 (zh)
CN (1) CN113424165B (zh)
WO (1) WO2020140069A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036544B2 (en) * 2019-02-12 2021-06-15 Samsung Electronics Co., Ltd. Memory controller and method controlling suspend mode
JP2021174566A (ja) * 2020-04-27 2021-11-01 キオクシア株式会社 半導体記憶装置
CN113031863B (zh) * 2021-03-19 2023-08-29 深圳忆联信息系统有限公司 Ssd命令相关性管理方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110026318A1 (en) * 2009-07-31 2011-02-03 International Business Machines Corporation Iterative write pausing techniques to improve read latency of memory systems
US20140075241A1 (en) * 2012-09-07 2014-03-13 Samsung Electronics Co., Ltd. Recovery code management method and memory system using same
CN104995608A (zh) * 2013-03-15 2015-10-21 高通股份有限公司 保存及存储系统存储器管理单元上下文的方法、设备及程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001338458A (ja) 2000-05-26 2001-12-07 Ricoh Co Ltd 情報記録装置、情報記録システム及び情報記憶媒体
JP2002229744A (ja) 2001-01-31 2002-08-16 Mitsubishi Electric Corp データ書き込み装置及びそのデータ書き込み方法
DE112009004900T5 (de) 2009-06-10 2012-08-16 Micron Technology, Inc. Vertagen von Speicheroperationen zum Reduzieren von Leselatenz in Speicherfeldern
US8645637B2 (en) 2010-11-16 2014-02-04 Micron Technology, Inc. Interruption of write memory operations to provide faster read access in a serial interface memory
US9218025B2 (en) 2012-09-11 2015-12-22 Logitech Europe S.A. Protective cover for a tablet computer
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110026318A1 (en) * 2009-07-31 2011-02-03 International Business Machines Corporation Iterative write pausing techniques to improve read latency of memory systems
US20140075241A1 (en) * 2012-09-07 2014-03-13 Samsung Electronics Co., Ltd. Recovery code management method and memory system using same
CN104995608A (zh) * 2013-03-15 2015-10-21 高通股份有限公司 保存及存储系统存储器管理单元上下文的方法、设备及程序产品

Also Published As

Publication number Publication date
US11803321B2 (en) 2023-10-31
CN113424165B (zh) 2024-05-28
WO2020140069A1 (en) 2020-07-02
US20200210098A1 (en) 2020-07-02
US10929056B2 (en) 2021-02-23
US20230014869A1 (en) 2023-01-19
US20210173585A1 (en) 2021-06-10
US11442656B2 (en) 2022-09-13

Similar Documents

Publication Publication Date Title
US11442656B2 (en) Interruption of program operations at a memory sub-system
CN112805676B (zh) 基于数据总线模式对读取操作和写入操作的调度
US11726869B2 (en) Performing error control operation on memory component for garbage collection
US11282567B2 (en) Sequential SLC read optimization
US20210357153A1 (en) Controller Command Scheduling in a Memory System to Increase Command Bus Utilization
US20210365395A1 (en) Direct memory access (dma) commands for noncontiguous source and destination memory addresses
WO2020041745A1 (en) Memory sub-system supporting non-deterministic commands
US11995338B2 (en) Performing operation on data blocks concurrently and based on performance rate of another operation on data blocks
US10956344B2 (en) Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system
WO2022027578A1 (en) Memory overlay using host memory buffer
US11886346B2 (en) Cache read context switching in a memory sub-system
US11669275B2 (en) Controller with distributed sequencer components
CN114550780A (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