CN112912857B - 对存储器子系统的写入原子性管理 - Google Patents

对存储器子系统的写入原子性管理 Download PDF

Info

Publication number
CN112912857B
CN112912857B CN201980067747.XA CN201980067747A CN112912857B CN 112912857 B CN112912857 B CN 112912857B CN 201980067747 A CN201980067747 A CN 201980067747A CN 112912857 B CN112912857 B CN 112912857B
Authority
CN
China
Prior art keywords
write
logical block
data
memory component
block address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980067747.XA
Other languages
English (en)
Other versions
CN112912857A (zh
Inventor
N·J·休斯
K·D·舒
T·耶于肯思
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 CN112912857A publication Critical patent/CN112912857A/zh
Application granted granted Critical
Publication of CN112912857B publication Critical patent/CN112912857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

例示性方法、设备和系统包含接收将数据以原子方式写入到存储器组件的指令。生成第一数据的多个写入命令,包含原子结束指示符。将第一多个写入命令发送到所述存储器组件,同时累加对应于所述写入命令的多个转换表更新。响应于确定最终写入命令已经成功地发送到所述存储器组件,利用所述多个转换表更新来更新一或多个转换表。

Description

对存储器子系统的写入原子性管理
技术领域
本公开大体上涉及存储器子系统,且更具体来说,涉及存储器子系统中的写入原子性管理。
背景技术
存储器子系统可以是存储系统,例如固态驱动器(SSD),并且可包含存储数据的一或多个存储器组件。存储器组件可以例如是非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件中检索数据。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2是根据本公开的一些实施例的管理写入的原子性的实例方法的流程图。
图3是根据本公开的一些实施例的管理重叠写入的原子性的实例方法的流程图。
图4是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及存储器子系统中的表更新累加器。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的实例是存储系统,例如,固态驱动器(SSD)。在一些实施例中,存储器子系统是混合式存储器/存储子系统。一般来说,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可以提供将存储在存储器子系统处的数据且可以请求将从存储器子系统中检索的数据。
原子写入操作的常规方法是在将整个数据段发送到存储器组件以进行写入之前在工作存储器中聚合整个数据段,然后更新逻辑到物理转换表以反映写入操作。此方法会产生不一致的性能,因为在等待整个数据段聚合时,存储器组件未被充分利用。
本公开的方面通过使到存储器组件的数据写入与对转换表的更新分离来解决上述及其它缺陷。当从主机系统或主机进程接收到数据时,对应于原子写入操作的数据区块(chunks of data)被写入到存储器组件中的非易失性存储装置中,而当数据区块被发送到存储器组件时,对转换表的更新由存储器子系统累加。发送到存储器子系统的每个数据区块与原子性指示符相关联,所述原子性指示符例如原子开始、原子中间和原子结束。一旦与原子结束指示符相关联的数据区块成功地发送到存储器组件,就将累加转换表更新应用于转换表,从而完成原子写入操作。此方法通过以下操作来改进常规方法:通过在接收到数据时将所述数据发送到存储器组件而使性能平稳,同时通过暂停(withhold)转换表更新直到所有数据都被写入之后为止,来维持写入操作的原子性。
图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接收地址且对地址进行解码以存取存储器组件H2A到112N。
存储器子系统110包含表更新累加器113,其可累加对逻辑到物理地址表的更新,直到完成对存储器组件112A到112N的原子写入操作为止。在一些实施例中,控制器115包含表更新累加器113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,表更新累加器113是主机系统110、应用程序或操作系统的一部分。
表更新累加器113累加转换表更新,直到整个数据原子被确认为发送到存储器组件以进行写入为止。下文描述关于表更新累加器113的操作的其它细节。
图2是根据本公开的一些实施例的管理写入原子性的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,使用图1的表更新累加器113来执行方法200。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,不是每个实施例中都需要所有过程。其它处理流程是可能的。
在框205处,处理装置接收将数据的一部分写入到存储器组件的第一指令。在一个实施例中,第一指令请求将第一数据原子写入到逻辑块地址范围。在一个实施例中,处理装置使用可存储在本地存储器119中的转换表(未说明)将逻辑块地址转换成物理地址。举例来说,处理装置可使用快闪转换层(FTL)表或另一逻辑到物理转换表。在一个实施例中,第一数据的大小需要将多于一个写入命令发送到存储器组件(例如,存储器组件112A)。
在框210处,处理装置生成第一数据的第一多个写入命令,包含一或多个原子性指示符。举例来说,处理装置将数据划分成区块,使得每个数据区块可以经由单个写入命令写入到存储器组件。在一个实施例中,处理装置将“原子结束”指示符分配给最后一个写入命令和数据区块。在另一实施例中,向与第一数据相关联的每个写入命令分配原子性指示符,例如原子开始、原子中间和原子结束。写入命令还可包含原子性区段标识符,其指示写入命令与哪一个原子写入指令相关联。处理装置添加一或多个原子性指示符作为待连同对应数据区块写入的元数据。
在框215处,处理装置将第一多个写入命令发送到存储器组件。在一个实施例中,在将写入命令发送到存储器组件之前,处理装置将待发送到存储器组件的写入命令中的数据聚合到一定的数据量(例如,64kb)。相比之下,在一个实例中,从例如主机系统110接收的原子写入指令可包含至多256kb的待以原子方式写入的数据。在此实例中,处理装置将写入指令分成四个64kb的写入命令。所述四个写入命令中的每一个包含原子性指示符,包含最后一个写入命令中的原子结束指示符。举例来说,原子性指示符可包含原子开始指示符、原子性继续指示符、原子结束指示符和全原子指示符(例如,如果写入指令未被拆分并且适于单个命令)。在其它实施例中,原子写入指令可包含至多原子大小限制的可以原子方式写入的数据(例如,256kb)。到存储器组件的写入命令可包含至多最优写入命令大小限制的数据(例如,64kb),处理装置可在将写入命令发送到存储器组件之前将所述数据聚合在写入命令中。写入命令可经由总线发送到存储器组件以供存储器组件中的逻辑处理。在一个实施例中,写入命令以对于存储器组件最高效的速率发送到存储器组件,所述速率可通过调整在发送写入命令之前累加数据的量(在以上实例中为64kb)来调节。在一个实施例中,并行地处理来自主机系统的多个写入指令,包含多个不同的原子写入指令。
在框220处,处理装置累加对应于第一多个写入命令的多个转换表更新。在一个实施例中,与原子写入指令相关联的每个写入命令使数据区块写入到存储器组件。数据区块的成功写入需要对转换表进行对应更新,使得主机系统预期的逻辑地址指向存储器组件中写入区块的物理位置。原子写入中的数据被完全写入或根本未写入。在一个实施例中,在数据的区块或部分在被接收时写入到存储器组件的情况下,通过延迟对转换表的更新直到确认整个数据原子已经写入到存储器组件来实现写入的原子性质。在处理装置更新转换表之前,来自主机110的请求不能够存取原子写入中包含的数据的写入部分,从而维持原子性。
在框225处,处理装置响应于确定最终写入命令已经成功地发送到存储器组件而利用多个转换表更新来更新一或多个转换表。在一个实施例中,当存储器组件确认与原子相关联的所有写入命令时,原子被视为完全写入。举例来说,当存储器组件确认包含“原子结束”指示符的最后一个数据区块成功写入时,处理装置可检测到整个原子被写入。在一个实施例中,原子写入可能被故障(例如,意外的功率损耗)中断,所述故障防止存储器子系统从主机系统接收原子写入的所有数据或阻止处理装置将与写入指令相关联的一或多个写入命令发送到存储器组件。当从故障中恢复时,如果处理装置确定在故障之前存储器组件未完成由原子结束原子性指示符指示的最后一个写入命令,那么处理装置将通过丢弃累加的转换表更新来中止原子写入。举例来说,处理装置标记经历不完全原子写入的任何数据以用于垃圾收集。在恢复的另一实施例中,如果处理装置确定与原子写入指令相关联的写入命令成功地写入到存储器组件但转换表未更新,那么处理装置可在从故障中恢复时更新转换表以完成原子写入。举例来说,处理装置可以读取存储器组件,并检测到包含“原子结束”指示符的最后一个数据区块写入到一或多个存储器组件。在此实施例中,累加转换表存储在非易失性媒体(例如,存储器组件112A到112N)中。
图3是根据本公开的一些实施例的管理写入原子性的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,使用图1的表更新累加器113来执行方法300。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,不是每个实施例中都需要所有过程。其它处理流程是可能的。
在框305处,处理装置接收将包含逻辑块地址范围的第二数据写入到存储器组件的第二原子写入指令,所述逻辑块地址与第一写入指令的逻辑块地址范围重叠(例如,参考图2所描述)。举例来说,处理装置可检测针对重叠逻辑块地址范围的写入指令。为了维持两个原子写入指令的原子性质,处理装置对两个原子写入指令进行串行化,使得存储器中的所得数据反映第一原子写入指令且随后反射第二原子写入指令,或反映第二原子写入指令且随后反射第一原子写入指令。在一个实施例中,处理装置保证将来自第一原子写入指令的所有数据写入到存储器组件且随后将来自第二原子写入指令的所有数据写入到存储器组件,或将来自第二原子写入指令的所有数据写入到存储器组件且随后将来自第一原子写入指令的所有数据写入到存储器组件,但不交错。在另一实施例中,处理装置使写入指令交错,并通过防止同时写入重叠逻辑块地址范围并确定在所有重叠逻辑块地址范围中哪一个写入指令占主导来确保数据一致性(例如,经由锁定或一致性管理器)。
在一个实施例中,处理装置通过针对以原子写入指令为目标的存储器区创建锁定而对原子写入指令进行串行化。锁定使得处理装置阻止继续处理其它写入命令,包含锁定存储器区的一部分,直到负责锁定的写入指令完成之后为止。举例来说,处理装置可锁定以第一写入指令为目标的存储器区,并阻止第二写入指令继续,直到第一写入指令完成之后为止。
在框310处,处理装置以与关于图2的块210所描述的生成第一多个写入命令的方式类似的方式生成第二数据的第二多个写入命令。
在框315处,处理装置将第二多个写入命令发送到存储器组件。在一个实施例中,处理装置在第二多个写入命令之前将第一多个写入命令发送到存储器组件。举例来说,处理装置可响应于第一多个写入命令的完成或第一多个写入命令的重叠部分的完成而将第二多个写入命令发送到存储器组件。在此实施例中,存储器组件将第二写入指令中的所有数据部分存储在非易失性存储器中,而存储器控制器将存储包含在第一写入指令中的数据部分的一或多个块,所述数据部分不与第二写入指令中的数据部分重叠。在一个实施例中,处理装置响应于解除对与第一多个写入命令重叠的块地址的锁定而开始发送第二多个写入命令。
图4说明计算机系统400的实例机器,所述实例机器内可执行用于使得所述机器执行本文中所论述的方法中的任一或多种的指令集。在一些实施例中,计算机系统400可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的表更新累加器113的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的一组指令的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以执行本文中所论述的方法中的任一或多种。
实例计算机系统400包含处理装置402、主存储器404(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器406(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统418,它们经由总线430彼此通信。
处理装置402表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置402也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。处理装置402经配置以执行用于执行本文中所论述的操作和步骤的指令426。计算机系统400可进一步包含网络接口装置408以经由网络420通信。
数据存储系统418可包含机器可读存储媒体424(也称为计算机可读媒体),其上存储有一或多组指令426或体现本文中所描述的方法或功能中的任一或多种的软件。指令426还可在由计算机系统400执行期间完全或至少部分地驻留在主存储器404内和/或处理装置402内,主存储器404和处理装置402也构成机器可读存储媒体。机器可读存储媒体424、数据存储系统418和/或主存储器404可对应于图1的存储器子系统110。
在一个实施例中,指令426包含实施对应于表更新累加器(例如,图1的表更新累加器组件113)的功能性的指令。尽管在实例实施例中机器可读存储媒体424展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且使机器执行本公开的方法中的任一种或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般来说,将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可涉及将计算机系统的寄存器及存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。举例来说,计算机系统或其它数据处理系统(例如控制器115)可响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中所含的计算机程序(例如,指令序列)而执行计算机实施的方法200和300。这种计算机程序可存储在计算机可读存储媒体中,所述计算机可读存储媒体例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

Claims (20)

1.一种计算机实施的方法,其包括:
从主机系统接收将第一数据部分写入到存储器组件的第一指令,其中所述第一指令是所述第一数据部分的原子写入,且其中所述第一数据部分的大小需要将多于一个写入命令发送到所述存储器组件;
响应于接收到所述第一指令,生成所述第一数据部分的第一多个写入命令,其中最终写入命令包含原子结束原子性指示符;
将所述第一多个写入命令发送到所述存储器组件;
累加对应于所述第一多个写入命令的多个转换表更新;以及
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,利用所述多个转换表更新来更新一或多个转换表。
2.根据权利要求1所述的方法,其中所述一或多个转换表包含所述存储器组件中从逻辑块地址到物理地址的映射。
3.根据权利要求1所述的方法,其中每个写入命令包含原子性指示符。
4.根据权利要求1所述的方法,其中所述第一指令包含指定写入所述第一数据部分的位置的第一逻辑块地址范围,且所述方法进一步包括:
获得对所述第一逻辑块地址范围的锁定,其中所述锁定防止所述主机系统写入到所述第一逻辑块地址范围。
5.根据权利要求4所述的方法,其进一步包括:
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,解除对所述第一逻辑块地址范围的所述锁定。
6.根据权利要求5所述的方法,其进一步包括:
从所述主机系统接收将第二数据部分写入到所述存储器组件的第二写入指令,其中所述第二写入指令包含第二逻辑块地址范围,且其中所述第二逻辑块地址范围与所述第一逻辑块地址范围重叠;
生成所述第二数据部分的第二多个写入命令;以及
将所述第二多个写入命令发送到所述存储器组件,其中所述第一多个写入指令和所述第二多个写入指令使所述存储器组件连续地将所有所述第一数据部分和少于所有的所述第二数据部分存储在所述第二逻辑块地址范围中的一或多个逻辑块地址中,其中所述一或多个逻辑块地址不与所述第一逻辑块地址范围重叠。
7.根据权利要求6所述的方法,其中所述第一写入指令是从在所述主机系统上执行的第一进程接收的,且其中所述第二写入指令是从在所述主机系统上执行的第二进程接收的。
8.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时使所述处理装置进行以下操作:
从主机系统接收将第一数据部分写入到存储器组件的第一指令,其中所述第一指令是所述第一数据部分的原子写入,且其中所述第一数据部分的大小需要将多于一个写入命令发送到所述存储器组件;
响应于接收到所述第一指令,生成所述第一数据部分的第一多个写入命令,其中最终写入命令包含原子结束原子性指示符;
将所述第一多个写入命令发送到所述存储器组件;
累加对应于所述第一多个写入命令的多个转换表更新;以及
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,利用所述多个转换表更新来更新一或多个转换表。
9.根据权利要求8所述的非暂时性计算机可读存储 媒体,其中所述一或多个转换表包含所述存储器组件中从逻辑块地址到物理地址的映射。
10.根据权利要求8所述的非暂时性计算机可读存储 媒体,其中每个写入命令包含原子性指示符。
11.根据权利要求8所述的非暂时性计算机可读存储 媒体,其中所述第一指令包含指定写入所述第一数据部分的位置的第一逻辑块地址范围,且所述非暂时性计算机可读媒体进一步包括:
获得对所述第一逻辑块地址范围的锁定,其中所述锁定防止所述主机系统写入到所述第一逻辑块地址范围。
12.根据权利要求11所述的非暂时性计算机可读存储 媒体,
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,解除对所述第一逻辑块地址范围的所述锁定。
13.根据权利要求12所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步用以进行以下操作:
从所述主机系统接收将第二数据部分写入到所述存储器组件的第二写入指令,其中所述第二写入指令包含第二逻辑块地址范围,且其中所述第二逻辑块地址范围与所述第一逻辑块地址范围重叠;
生成所述第二数据部分的第二多个写入命令;以及
将所述第二多个写入命令发送到所述存储器组件,其中所述第一多个写入指令和所述第二多个写入指令使所述存储器组件连续地将所有所述第一数据部分和少于所有的所述第二数据部分存储在所述第二逻辑块地址范围中的一或多个逻辑块地址中,其中所述一或多个逻辑块地址不与所述第一逻辑块地址范围重叠。
14.根据权利要求13所述的非暂时性计算机可读存储 媒体,其中所述第一写入指令是从在所述主机系统上执行的第一进程接收的,且其中所述第二写入指令是从在所述主机系统上执行的第二进程接收的。
15.一种系统,其包括:
存储器组件;以及
处理装置,其与所述存储器组件操作性地耦合以进行以下操作:
从主机系统接收将第一数据部分写入到所述存储器组件的第一指令,其中所述第一指令是所述第一数据部分的原子写入,且其中所述第一数据部分的大小需要将多于一个写入命令发送到所述存储器组件,且其中所述第一指令包含指定写入所述第一数据部分的位置的第一逻辑块地址范围;
获得对所述第一逻辑块地址范围的锁定,其中所述锁定防止所述主机系统写入到所述第一逻辑块地址范围;
响应于接收到所述第一指令,生成所述第一数据部分的第一多个写入命令,其中最终写入命令包含原子结束原子性指示符;
将所述第一多个写入命令发送到所述存储器组件;
累加对应于所述第一多个写入命令的多个转换表更新;以及
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,利用所述多个转换表更新来更新一或多个转换表。
16.根据权利要求15所述的系统,其中所述一或多个转换表包含所述存储器组件中从逻辑块地址到物理地址的映射。
17.根据权利要求15所述的系统,其中每个写入命令包含原子性指示符。
18.根据权利要求17所述的系统,其中所述处理装置进一步用以进行以下操作:
响应于确定所述最终写入命令已经成功地发送到所述存储器组件,解除对所述第一逻辑块地址范围的所述锁定。
19.根据权利要求18所述的系统,其中所述处理装置进一步用以进行以下操作:
从所述主机系统接收将第二数据写入到所述存储器组件的第二写入指令,其中所述第二写入指令包含第二逻辑块地址范围,且其中所述第二逻辑块地址范围与所述第一逻辑块地址范围重叠;
生成所述第二数据的第二多个写入命令;以及
将所述第二多个写入命令发送到所述存储器组件,其中所述第一多个写入指令和所述第二多个写入指令使所述存储器组件连续地将所有第一数据和少于所有的所述第二数据存储在所述第二逻辑块地址范围中的一或多个逻辑块地址中,其中所述一或多个逻辑块地址不与所述第一逻辑块地址范围重叠。
20.根据权利要求19所述的系统,其中所述第一写入指令是从在所述主机系统上执行的第一进程接收的,且其中所述第二写入指令是从在所述主机系统上执行的第二进程接收的。
CN201980067747.XA 2018-10-25 2019-09-30 对存储器子系统的写入原子性管理 Active CN112912857B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/171,261 2018-10-25
US16/171,261 US10761978B2 (en) 2018-10-25 2018-10-25 Write atomicity management for memory subsystems
PCT/US2019/053905 WO2020086220A1 (en) 2018-10-25 2019-09-30 Write atomicity management for memory subsystems

Publications (2)

Publication Number Publication Date
CN112912857A CN112912857A (zh) 2021-06-04
CN112912857B true CN112912857B (zh) 2022-07-29

Family

ID=70328684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980067747.XA Active CN112912857B (zh) 2018-10-25 2019-09-30 对存储器子系统的写入原子性管理

Country Status (5)

Country Link
US (1) US10761978B2 (zh)
EP (1) EP3871097A4 (zh)
KR (1) KR102336335B1 (zh)
CN (1) CN112912857B (zh)
WO (1) WO2020086220A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922022B2 (en) * 2019-03-13 2021-02-16 Samsung Electronics Co., Ltd. Method and system for managing LBA overlap checking in NVMe based SSDs
US11615020B2 (en) * 2021-08-12 2023-03-28 Micron Technology, Inc. Implementing mapping data structures to minimize sequentially written data accesses
US20230063057A1 (en) * 2021-08-27 2023-03-02 Micron Technology, Inc. Memory access managment
CN114327815A (zh) * 2021-12-10 2022-04-12 龙芯中科技术股份有限公司 原子性保持方法、处理器及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122220A (zh) * 2013-03-15 2015-12-02 西部数据技术公司 固态驱动器中的原子写入命令支持

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347010B1 (en) 2005-12-02 2013-01-01 Branislav Radovanovic Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
TW201111986A (en) * 2009-09-29 2011-04-01 Silicon Motion Inc Memory apparatus and data access method for memories
US20140143476A1 (en) 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US9170938B1 (en) * 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
GB2527529B (en) 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
JP2017107318A (ja) * 2015-12-08 2017-06-15 株式会社東芝 メモリシステム、情報処理装置および処理方法
JP6414853B2 (ja) 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US20170185354A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device
US9977626B2 (en) * 2016-06-30 2018-05-22 Seagate Technology Llc Implementing scattered atomic I/O writes
US10372346B2 (en) * 2016-07-29 2019-08-06 Western Digital Technologies, Inc. Extensible storage system controller
US10656872B2 (en) * 2018-03-15 2020-05-19 Western Digital Technologies, Inc. Storage device with multi-die management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122220A (zh) * 2013-03-15 2015-12-02 西部数据技术公司 固态驱动器中的原子写入命令支持

Also Published As

Publication number Publication date
EP3871097A4 (en) 2022-07-20
WO2020086220A1 (en) 2020-04-30
US10761978B2 (en) 2020-09-01
KR102336335B1 (ko) 2021-12-09
KR20210050581A (ko) 2021-05-07
EP3871097A1 (en) 2021-09-01
CN112912857A (zh) 2021-06-04
US20200133833A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
CN112912857B (zh) 对存储器子系统的写入原子性管理
CN113126907B (zh) 用于存储器装置的异步电力损失恢复
US11693768B2 (en) Power loss data protection in a memory sub-system
US11443811B2 (en) Data erase operations for a memory system
CN113010449A (zh) 存储器子系统中命令的有效处理
WO2020176832A1 (en) Eviction of a cache line based on a modification of a sector of the cache line
KR20220049027A (ko) 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행
WO2022204061A1 (en) Supporting multiple active regions in memory devices
US11222673B2 (en) Memory sub-system managing remapping for misaligned memory components
US11971816B2 (en) Host system notification based on entry miss
US11797198B2 (en) Memory instruction for memory tiers
CN113168289B (zh) 使用逐出和恢复管理存储装置中的冗余上下文
CN114077404B (zh) 使存储器单元与主机系统解除关联
US20240004641A1 (en) Memory system firmware update using virtual slots
US20230396270A1 (en) Dynamic decoding for memory systems
CN115729858A (zh) 存储器中用于数据分享的散列操作
CN114550780A (zh) 存储器中编程或擦除操作的恢复
CN113064548A (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