CN113010449A - 存储器子系统中命令的有效处理 - Google Patents
存储器子系统中命令的有效处理 Download PDFInfo
- Publication number
- CN113010449A CN113010449A CN202011519388.8A CN202011519388A CN113010449A CN 113010449 A CN113010449 A CN 113010449A CN 202011519388 A CN202011519388 A CN 202011519388A CN 113010449 A CN113010449 A CN 113010449A
- Authority
- CN
- China
- Prior art keywords
- command
- write
- write command
- processing device
- lba range
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 158
- 238000012545 processing Methods 0.000 title claims abstract description 103
- 238000013507 mapping Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 11
- 238000013519 translation Methods 0.000 claims description 3
- 230000001427 coherent effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
-
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/10—Address translation
-
- 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/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及存储器系统内命令的有效处理。从主机系统接收读取命令,所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址LBA范围重叠的第一LBA范围。确定与所述写入命令相关联的状态,其中所述状态指示是否已经基于所述写入命令更新逻辑到物理L2P映射表。基于与所述写入命令相关联的所述状态,将对应于所述第一LBA范围的数据传输到所述主机系统。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体地说,涉及存储器子系统中的有效处理。
背景技术
一种存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
发明内容
在一方面,本申请提供一种方法,其包括:由存储器子系统的处理装置从主机系统接收读取命令;由所述处理装置确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址(LBA)范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;由所述处理装置确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理(L2P)映射表;以及由所述处理装置基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
在另一方面,本申请提供一种系统,其包括:存储器装置;处理装置,其以操作方式与所述存储器装置耦合以进行以下操作:从主机系统接收读取命令;确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址(LBA)范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理(L2P)映射表;以及基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
在另一方面,本申请提供一种系统,其包括:逻辑到物理(L2P)映射表,用于维持逻辑块地址到物理地址的映射;高速缓冲存储器,其经配置以存储与写入命令相关联的写入数据;快闪转换层(FTL)单元,其经配置以将来自逻辑块地址的写入数据映射到物理地址并更新和维持所述L2P映射表;以及处理装置,其以操作方式与所述存储器子系统耦合以执行包括以下各项的操作:从主机系统接收写入命令和解除分配命令;将与从命令队列接收的写入命令相关联的写入数据存储在所述高速缓冲存储器中;确定所述L2P映射表已经基于所述写入命令由所述FTL单元更新;以及响应于从在与所述写入命令相同的LBA范围的所述主机系统接收读取命令,取决于从所述主机系统接收所述写入命令和所述解除分配命令的次序而将存储在所述高速缓冲存储器中的所述写入数据或经零填充的数据传输到所述主机系统。
在另一方面,本申请提供一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置进行以下操作:从主机系统接收读取命令;确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址(LBA)范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理(L2P)映射表;以及基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,附图不应视为将本公开限制于特定实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的用以基于与从主机系统接收到的写入命令相关联的状态而处理读取命令的实例方法的流程图。
图3是根据本公开的一些实施例的用于取决于从主机系统接收到的写入命令和解除分配命令的次序而处理读取命令的实例方法的流程图。
图4是说明根据本公开的一些实施例的利用L2P跟踪组件的系统的图。
图5是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的各方面是针对存储器子系统中的命令的有效处理。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可以利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可以提供要存储在存储器子系统处的数据,并且可以请求从存储器子系统中检索数据。
存储器装置可为非易失性存储器装置,其为一或多个裸片的封装。非易失性存储器装置的一个实例是与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。数据操作可由存储器子系统执行。所述数据操作可为主机起始的操作。例如,主机系统可起始存储器子系统上的数据操作(例如,写入、读取、擦除、解除分配等)。主机系统可将存取请求(例如,写入命令、读取命令、解除分配命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上并从存储器子系统上的存储器装置读取数据。如由主机请求指定,待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名称空间),其为主机系统与主机数据相关联的位置。逻辑地址信息(例如,LBA、名称空间)可为主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的寿命)、有效位图(其LBA或逻辑传送单元含有有效数据)等。
存储器子系统可按从主机系统接收到的命令的次序处理读取、写入和解除分配命令。在完成这些命令之后,存储器子系统将完成通知发送回到主机系统,主机系统将所述完成通知解译为按相同次序完成命令的指示,其中将所述相同次序发送到存储器子系统。此次序尤其在由存储器子系统接收的命令作用于相同LBA范围或作用于与相同LBA范围重叠的范围的情形下是重要的。例如,如果解除分配命令被发送到存储器子系统且接着是写入命令再接着是读取命令被发送到存储器子系统,所述写入命令和读取命令两者都与所述解除分配命令具有相同LBA范围,则主机系统期望由读取命令发送回最新数据,在此情况下,所述最新数据将为来自写入命令的写入数据。另一方面,如果写入命令被发送且接着是解除分配命令再接着是读取命令被发送,所述解除分配命令和读取命令两者都与所述写入命令具有相同LBA范围,则读取命令应将经解除分配的数据(通常为零)发送回到主机。
为了维持命令的运行,存储器子系统可采用指向写入数据的两个表,所述两个表由存储器子系统控制器实施并维持。第一表被称作“逻辑到物理(L2P)映射表”,所述映射表的每一条目将LBA映射到存储器装置上的数据块的对应物理地址。在L2P映射表中可含有对物理地存储在存储器装置中的数据的参考或指标。当基于写入命令更新L2P映射表时,对应的L2P条目将指向存储在存储器装置中的实际数据。相比之下,当基于解除分配命令更新L2P映射表时,所述L2P映射表将不指向存储在存储器装置上的数据,而是将含有特定于解除分配的标记,所述标记导致响应于后续读取命令而将零发送回到主机系统。
第二表被称作“相干表”,其维持关于临时高速缓冲存储在存储器子系统的易失性存储器中的未完成写入数据的信息。在更新L2P映射表并将数据写入到存储器装置(例如,NAND存储器装置)后,可从高速缓冲存储器收回对应的写入数据并从相干表清除对应的写入数据。解除分配命令并不具有实际数据内容,而是仅包含待解除分配的LBA范围。由于实际上没有数据通过解除分配命令从主机传送,因此高速缓冲存储器中不存在要存储的数据,且不更新相干表。替代地,解除分配命令绕过相干表操作,且用指示不存在要写入到存储器装置的数据的特定于解除分配的标记来更新L2P映射表。
与解除分配命令相比,写入命令的处理涉及处理相干表更新的额外步骤。此额外步骤可能会导致写入命令当前处于相干性状态且尚未经处理以更新L2P映射表的情形,同时从主机系统接收绕过相干表更新以在L2P层级处进行处理的重叠解除分配命令。如果接收到后续读取命令,则存储器子系统无法调和哪个数据是要发送回到主机系统的正确数据,因为没有维持次序的指示。
一些常规存储器子系统可调和这些命令的次序,使得一旦接收到解除分配命令,存储器子系统的控制器便将所有未完成写入数据刷新到存储器装置。这确保L2P映射表为最新的并清除相干表。虽然这是确保命令的确定性处理的相对简单的解决方案,但此解决方案可通过迫使数据在数据完全聚合之前刷新到存储器装置而不利地影响过量供应,这在封闭块中留下空白空间。如果高速缓冲存储器中存在小缓冲器,则对存储器装置的刷新将消耗整个数据块。
常规存储器子系统的另一缺点为将数据刷新到存储器装置所需的时间量。对于大的高速缓冲存储器大小,这通常需要在可处理解除分配命令之前刷新大量数据,从而产生延迟。此类操作可延迟解除分配命令的处理,使其超出一些系统所需的最大时间500毫秒。
本公开的各方面通过提供基于写入命令跟踪对L2P映射表的更新以维持处理命令的次序的存储器子系统来解决以上及其它不足。并非迫使写入数据被刷新到存储器装置,存储器子系统使用相干表和L2P映射表以确定响应于读取命令而返回到主机系统的正确数据。存储器子系统可执行相干检查操作以确定传入读取命令是否对由相干表参考的高速缓冲的写入数据进行操作。当此发生时(在本文中被称作“相干命中”),存储器子系统接着基于写入命令确定是否已经更新L2P映射表。如果是,则读取命令通过L2P映射表返回存储器装置中指向的数据,所述指向的数据将对应于最新数据,而不管写入命令是先于解除分配命令还是后于解除分配命令。如果尚未基于写入命令更新L2P映射表,则读取命令返回本地高速缓冲的写入数据。
本公开的优点包含但不限于避免响应于解除分配命令而将写入数据刷新到存储器装置,这允许更快且更有效的命令处理。这有利地减小对过量供应的影响,因为在数据完全聚合之前,不需要将数据写入到存储器装置。这还有利地避免了与刷新操作相关联的时间延迟。本公开的另一优点是在尚未更新L2P映射表的情形下,存储器子系统能够直接从高速缓冲存储器读取。这允许存储器子系统绕过直接存储器装置读取,且因此提高系统的总效率。另外,存储器子系统能够通过利用在更新L2P映射表后设置的标志来跟踪写入命令的状态并维持次序。
图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可包含处理器芯片组(例如处理装置118)和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,控制器115)(例如,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)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置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之间的通信)的各种过程、操作、逻辑流程及例程。
在一些实施例中,本地存储器119可以包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、误差检测和误差校正码(ECC)操作、加密操作、高速缓冲存储操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名称空间)和物理地址(例如,物理块地址)之间的地址。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含L2P跟踪组件113,所述L2P跟踪组件可通过跟踪对由存储器子系统110维持的L2P映射表的更新的状态而维持从主机系统120接收到的命令的次序。在一些实施例中,存储器子系统控制器115包含L2P跟踪组件113的至少一部分。例如,存储器子系统控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中以用于执行本文中所描述的操作的指令。在一些实施例中,L2P跟踪组件113是主机系统120、应用程序或操作系统的部分。
L2P跟踪组件113可确定读取命令何时在与先前所接收到的写入命令相同的数据范围(例如LBA范围)内操作,并基于写入命令跟踪对L2P映射表的更新(即,确定是否已经更新L2P映射表以包含指向对应于LBA范围的写入数据将要写入到的物理地址的L2P映射条目)。可由L2P跟踪组件113,例如,使用受系统管理的标签(也被称作“SysTag”)数据结构来跟踪与写入命令相关联的更新的状态。SysTag数据结构可由存储器子系统110存储,例如,存储在管理与写入命令相关的数据的相干表中。SysTag数据结构可包含可用于存储识别L2P映射表更新的状态的信息的一或多个数据位。使用此信息,L2P跟踪组件113跟踪要执行的读取、写入和解除分配命令的次序,并基于对L2P映射表的更新的状态而执行读取命令,而对写入命令和解除分配命令的次序保持不可知。这消除了常规存储器子系统所依赖的刷新操作以维持命令的次序。
下文描述关于L2P跟踪组件113的操作的其它细节。
图2是根据本公开的一些实施例的用于基于与从主机系统(例如,主机系统120)接收到的写入命令(即,基于写入命令对L2P映射表的更新的状态)相关联的状态而处理读取命令的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的L2P跟踪组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。此外,可在各种实施例中省略一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流程是可能的。
在操作210处,处理装置从主机系统接收读取命令。读取命令包含从中读取数据的地址的指示。在实施例中,地址为LBA范围。
在操作220处,处理装置确定读取命令作用于至少部分地和与写入命令相关联的第二LBA范围重叠的LBA范围。在读取命令之前由处理装置接收写入命令,并且在读取命令之前可存在由处理装置接收的一或多个命令,例如其它解除分配命令、其它写入命令或其它读取命令。在实施例中,第一LBA范围和第二LBA范围完全重叠(即,读取对由写入命令写入的完全相同的数据进行操作)。在另一实施例中,第一LBA范围和第二LBA范围仅部分地重叠。
在实施例中,当处理装置接收到读取命令时,处理装置将与读取命令相关联的第一LBA范围与相干表中的条目进行比较以识别具有重叠LBA范围的写入命令(“相干命中”)。相干表含有指向临时存储在高速缓冲存储器中的写入数据的指针(直到写入数据被写入到存储器装置,例如NAND存储器装置)。在实施例中,一旦将特定写入命令的写入数据写入到存储器装置,便从高速缓冲存储器数据清除写入数据,并从相干表清除指向写入数据的指针。
在操作230处,处理装置确定与写入命令相关联的状态,所述状态指示是否已经基于写入命令更新L2P映射表(例如,已经更新L2P映射表以指向写入数据将要写入到的存储器装置中的物理地址)。在实施例中,L2P映射表的状态表示为处于第一状态或第二状态中的二进制标志。二进制标志的第一状态指示已经基于写入命令更新L2P映射表。二进制标志的第二状态指示尚未基于写入命令更新L2P映射表。在实施例中,一旦L2P映射表已经更新,处理装置就更新二进制标志。在此类实施例中,写入数据被连续地存储在高速缓冲存储器中,直到所述写入数据被写入到存储器装置。在实施例中,标志作为位存储在由存储器子系统110维持的SysTag数据结构中。
在操作240处,处理装置基于与写入命令相关联的状态将对应于第一LBA范围(即,由读取命令指定的LBA范围)的数据传输到主机系统。在实施例中,处理装置确定二进制标志是处于第一状态还是处于第二状态。如果处理装置确定二进制标志处于第一状态(其表示已经基于写入命令更新L2P映射表),则处理装置接着识别对应于写入命令的L2P映射表中的L2P映射条目。L2P映射条目作为L2P映射表中的更新而生成,所述L2P映射条目指向写入数据(即,与写入命令相关联的本地高速缓冲的写入数据)将要写入到的存储器装置中的物理地址。甚至在写入数据实际上写入到存储器装置之前,也可存在L2P映射条目。在实施例中,如果处理装置确定L2P映射条目指向存储器装置中对应于第一LBA范围的物理位置,则处理装置接着将对应于第一LBA范围的本地高速缓冲的写入数据传输到主机系统。
在写入命令之后由处理装置接收解除分配命令的实施例中,用于由读取命令(即,第一LBA范围)指定的特定LBA范围的L2P映射条目可指向未映射标记而不是存储器装置中的实际物理地址。在此实施例中,如果处理装置确定L2P映射条目包括未映射标记,则处理装置接着将对应于第一LBA范围的经零填充的数据传输到主机装置。
在实施例中,如果处理装置确定二进制标志处于第二状态(即,表示尚未基于写入命令更新L2P映射表),则处理装置将对应于第一LBA范围的本地高速缓冲的写入数据传输到主机系统。这将例如在接收写入命令与读取命令之间未接收到解除分配命令的情境中发生。
处理装置可在接收读取命令之前且在接收写入命令之后接收解除分配命令,并且所述解除分配命令可在至少部分地与第二LBA范围重叠的第三LBA范围(例如,与写入命令相关联的LBA范围)内操作。在此实施例中,处理装置基于如上所述的L2P映射表的所确定的状态而传输对应于第一LBA范围的数据,但在接收读取命令之前不将高速缓冲的写入数据刷新到存储器装置。
图3是根据本公开的一些实施例的用于取决于从主机系统接收到的写入命令和解除分配命令的次序而处理读取命令的示例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的L2P跟踪组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述处理过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。此外,可在各种实施例中省略一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流程是可能的。
在操作310处,处理装置接收读取命令。可按与参考图2所描述的操作210相同的方式执行操作310。
在操作320处,处理装置例如通过识别作用于与读取命令相同LBA范围的写入命令而确定是否已经发生相干命中。如果尚未发生相干命中,则方法300接着进行到操作330,其中处理装置使得从存储器装置直接读取数据并将数据传输到主机系统(例如,主机系统120)。例如,处理装置可使用L2P映射表以基于读取命令的LBA范围而确定L2P映射表是否参考存储器装置中的物理地址(在本文中被称作“L2P查询”)。接着直接从存储器装置读取所述物理地址的数据并将所述物理地址的数据传输到主机系统。
如果已经发生相干命中,则方法300接着进行到操作340,其中处理装置确定是否已经基于所识别的写入命令更新L2P映射表。如果尚未基于写入命令更新L2P映射表(例如,仍在处理写入命令),则方法300接着进行到操作350,其中读取命令将存储在高速缓冲存储器中的数据(针对由读取命令指定的LBA范围)返回到主机系统。
如果已经基于写入命令更新L2P映射表,则方法300接着进行到操作360,其中处理装置针对读取命令的LBA范围执行L2P查询。
在操作370处,处理装置确定L2P查询产生了对存储器装置中的有效物理数据的参考还是未映射标记。如果L2P查询产生对存储器装置中的有效物理位置的参考,则方法300接着进行到操作350。如果L2P查询产生未映射标记(即,特定于解除分配的标记),则方法300接着进行到操作380,其中读取命令将表示解除分配的经零填充的数据返回到主机系统。
图4是说明根据本公开的一些实施例的利用L2P跟踪组件113的系统400的图。系统400包含重叠检查器410、命令队列420、输入/输出写入(IOW)单元430和快闪转换层(FTL)队列440。系统400进一步包含FTL单元450、相干表460和L2P映射表470,在实施例中,所述FTL单元、相干表和L2P映射表都由L2P跟踪组件113控制。在实施例中,重叠检查器410在硬件中实施,而系统400中的其余组件在固件中实施。在其它实施例中,系统400中的组件中的一些或全部可在硬件中实施,且系统400中的组件中的一些或全部可在固件中实施。
系统400从主机系统(例如,主机系统120)接收命令405。命令405可包含读取、写入和解除分配命令,且将由系统400按主机系统要求其执行的次序接收。在系统400中,命令405首先由重叠检查器410处理。在实施例中,重叠检查器410维持通过阻止作用于与先前命令相同的数据范围的后续命令而接收到的命令的次序,直到完成先前的命令。例如,如果系统400接收到传入命令,则重叠检查器410确定传入命令是否作用于与进行中的命令相同的数据范围重叠的数据范围。如果存在重叠,则传入命令将由重叠检查器410推迟并维持,直到完成进行中的命令,在此之后传入命令将引入到命令队列420中并被发送到IOW单元430。在实施例中,重叠检查器410通过防止命令队列420包含作用于相同LBA范围的两个或更多个命令来维持次序。
一般来说,主机系统认为读取命令和写入命令在进行中直到所述主机系统从系统400接收到对应的完成通知。一旦与写入命令相关联的写入数据已经被本地高速缓冲,即使尚未基于写入命令更新L2P映射表470,写入命令也可被视为已完成。解除分配命令被认为在进行中直到其由FTL单元450处理并相应地更新L2P映射表470。
在实施例中,IOW单元430控制用于写入命令的数据传送(例如,通过在写入数据被写入到存储器装置之前,将所述写入数据临时存储在本地高速缓冲器中),并更新相干表460以维持描述经高速缓冲的写入数据的信息。在处理完写入命令之后,IOW单元430将所述写入命令引入到FTL队列440中。
在实施例中,FTL单元450处理从FTL队列440接收到的命令。针对所接收到的每个写入命令,FTL单元450将计算与写入命令相关联的LBA与存储器装置中的物理地址范围之间的映射。所计算的映射可存储在L2P映射表470中。一般来说,一旦命令进入FTL队列440,FTL单元450将一次一个地处理命令以维持次序。
一般来说,完成的写入命令将以三个状态中的一者存在:(1)相关联的写入数据经本地高速缓冲;尚未更新L2P映射表470并且所述L2P映射表指向存储器装置中的旧数据;(2)相关联的写入数据经本地高速缓冲;已经基于写入命令L2P映射表470并且所述L2P映射表指向写入数据将写入到的存储器装置中的地址;以及(3)已经将相关联的写入数据写入到存储器装置,并且已经从相干表460清除所述相关联的写入数据。
针对状态(1)中的写入命令,如果接收到作用于与写入命令的LBA范围重叠的LBA范围的解除分配命令,则重叠检查器410可阻止由所述解除分配命令在LBA范围内的操作。在实施例中,解除分配命令经延迟直到写入命令被引入到FTL队列440中,并且所述解除分配命令将在所述写入命令之后被引入到FTL队列440中以确保所述写入命令首先由FTL单元450处理。在实施例中,当由FTL单元450处理写入并相应地更新L2P映射表470(即,写入命令现在处于状态(2))时,L2P跟踪组件113更新标志以指示已经基于写入命令更新L2P映射表470。
图5示出计算机系统500的实例机器,所述实例机器内可执行用于使所述机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统500可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的L2P跟踪组件113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多种。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统518,它们经由总线530彼此通信。
处理装置502表示一或多个通用处理装置,如微处理器、中央处理单元或类似物。更具体地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置502经配置以执行指令526以用于执行本文中所论述的操作和步骤。计算机系统500可进一步包含网络接口装置508以在网络520上通信。
数据存储系统518可包含机器可读存储媒体524(也被称作计算机可读媒体),其上存储有一或多个指令集526或体现本文中所描述的任何一或多种方法或功能的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可对应于图1的存储器子系统110。
在一个实施例中,指令526包含实施对应于L2P跟踪组件(例如,图1的L2P跟踪组件113)的功能性的指令。尽管在实例实施例中机器可读存储媒体524示出为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是产生期望的结果的操作的自洽序列。操作为要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示在本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所示呈现用于各种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种方法,其包括:
由存储器子系统的处理装置从主机系统接收读取命令;
由所述处理装置确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址LBA范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;
由所述处理装置确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理L2P映射表;以及
由所述处理装置基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
2.根据权利要求1所述的方法,其中与所述写入命令相关联的所述状态由二进制标志表示,其中所述二进制标志的第一状态指示已经基于所述写入命令更新所述L2P映射表,且其中所述二进制标志的第二状态指示尚未基于所述写入命令更新所述L2P映射表。
3.根据权利要求2所述的方法,其进一步包括:
响应于确定所述二进制标志处于所述第一状态,由所述处理装置识别所述L2P映射表中对应于所述第一LBA范围的L2P映射条目,
其中基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的数据包括:
响应于确定所述L2P映射条目指向对应于所述第一LBA范围的存储器装置中的物理位置,由所述处理装置将对应于所述第一LBA范围的本地高速缓冲的写入数据传输到所述主机系统;或
响应于确定所述L2P映射条目包括未映射标记,由所述处理装置将经零填充的数据传输到所述主机系统。
4.根据权利要求2所述的方法,其进一步包括:
响应于确定所述二进制标志处于所述第二状态,基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据包括由所述处理装置将对应于所述第一LBA范围的在本地高速缓冲的写入数据传输到所述主机系统。
5.根据权利要求1所述的方法,其进一步包括:
在接收到所述读取命令之前且在接收到所述写入命令之后接收解除分配命令,其中所述解除分配命令作用于至少部分地与所述第二LBA范围重叠的第三LBA范围,且其中执行传输对应于所述第一LBA范围的所述数据而无需将高速缓冲的写入数据刷新到存储器装置。
6.一种系统,其包括:
存储器装置;
处理装置,其以操作方式与所述存储器装置耦合以进行以下操作:
从主机系统接收读取命令;
确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址LBA范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;
确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理L2P映射表;以及
基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
7.根据权利要求6所述的系统,其中与所述写入命令相关联的所述状态由二进制标志表示,其中所述二进制标志的第一状态指示已经基于所述写入命令更新所述L2P映射表,且其中所述二进制标志的第二状态指示尚未基于所述写入命令更新所述L2P映射表。
8.根据权利要求7所述的系统,其中所述处理装置将进一步执行以下操作:
响应于确定所述二进制标志处于所述第一状态,识别所述L2P映射表中对应于所述第一LBA范围的L2P映射条目,其中为了基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据,所述处理装置将进一步执行以下操作:
响应于确定所述L2P映射条目指向对应于所述第一LBA范围的所述存储器装置中的物理位置,将对应于所述第一LBA范围的在本地高速缓冲的写入数据传输到所述主机系统;或
响应于确定所述L2P映射条目包括未映射标记,将经零填充的数据传输到所述主机系统。
9.根据权利要求7所述的系统,其中所述处理装置将进一步执行以下操作:
响应于确定所述二进制标志处于所述第二状态,为了基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的数据,所述处理装置将对应于所述第一LBA范围的高速缓冲的写入数据传输到所述主机系统。
10.根据权利要求6所述的系统,其中所述处理装置将进一步执行以下操作:
在接收到所述读取命令之前且在接收到所述写入命令之后接收解除分配命令,其中所述解除分配命令作用于至少部分地和与所述第二LBA范围重叠的第三LBA范围,且其中所述处理装置将基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据而无需在接收到所述读取命令之前将高速缓冲的写入数据刷新到NAND存储器。
11.一种系统,其包括:
存储器子系统,其包括:
逻辑到物理L2P映射表,用于维持逻辑块地址到物理地址的映射;
高速缓冲存储器,其经配置以存储与写入命令相关联的写入数据;
快闪转换层FTL单元,其经配置以将写入数据从逻辑块地址映射到物理地址并更新和维持所述L2P映射表;以及
处理装置,其以操作方式与所述存储器子系统耦合以执行包括以下各项的操作:
从主机系统接收写入命令和解除分配命令;
将与从命令队列接收的写入命令相关联的写入数据存储在所述高速缓冲存储器中;
确定所述L2P映射表已经基于所述写入命令由所述FTL单元更新;以及
响应于从所述主机系统接收作用于与所述写入命令相同的LBA范围的读取命令,取决于从所述主机系统接收所述写入命令和所述解除分配命令的次序而将存储在所述高速缓冲存储器中的所述写入数据或经零填充的数据传输到所述主机系统。
12.根据权利要求11所述的系统,其中所述处理装置将执行包括以下各项的操作:
当在所述解除分配命令之前接收到所述写入命令时,传输所述经零填充的数据;或
当在所述写入命令之前接收到所述解除分配命令时,传输存储在所述高速缓冲存储器中的所述写入数据。
13.根据权利要求11所述的系统,其中所述存储器子系统进一步包括:
相干表,其经配置以维持关于存储在所述高速缓冲存储器中的写入数据的信息。
14.根据权利要求11所述的系统,其中所述存储器子系统进一步包括:
命令队列,其经配置以接收并维持来源于主机系统的命令的次序。
15.根据权利要求11所述的系统,其中所述存储器子系统进一步包括:
输入/输出写入IOW单元,其经配置以处理命令并将与写入命令相关联的写入数据存储在所述高速缓冲存储器中;以及
FTL队列,其经配置以接收并维持由所述IOW单元处理的命令的次序。
16.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置进行以下操作:
从主机系统接收读取命令;
确定所述读取命令作用于至少部分地和与写入命令相关联的第二逻辑块地址LBA范围重叠的第一LBA范围,所述写入命令在所述读取命令之前由所述处理装置接收;
确定与所述写入命令相关联的状态,所述状态指示是否已经基于所述写入命令更新逻辑到物理L2P映射表;以及
基于与所述写入命令相关联的所述状态将对应于所述第一LBA范围的数据传输到所述主机系统。
17.根据权利要求16所述的非暂时性计算机可读存储媒体,其中与所述写入命令相关联的所述状态由二进制标志表示,其中所述二进制标志的第一状态指示已经基于所述写入命令更新所述L2P映射表,且其中所述二进制标志的第二状态指示尚未基于所述写入命令更新所述L2P映射表。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步执行以下操作:
响应于确定所述二进制标志处于所述第一状态,识别所述L2P映射表中对应于所述第一LBA范围的L2P映射条目,其中为了基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据,所述处理装置将进一步执行以下操作:
响应于确定所述L2P映射条目指向对应于所述第一LBA范围的存储器装置中的物理位置,将对应于所述第一LBA范围的在本地高速缓冲的写入数据传输到所述主机系统;或
响应于确定所述L2P映射条目包括未映射标记,将经零填充的数据传输到所述主机系统。
19.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步执行以下操作:
响应于确定所述二进制标志处于所述第二状态,为了基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据,所述处理装置将对应于所述第一LBA范围的高速缓冲的写入数据传输到所述主机系统。
20.根据权利要求16所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步执行以下操作:
在接收到所述读取命令之前且在接收到所述写入命令之后接收解除分配命令,其中所述解除分配命令作用于至少部分地和与所述第二LBA范围重叠的第三LBA范围,且其中所述处理装置将基于与所述写入命令相关联的所述状态传输对应于所述第一LBA范围的所述数据而无需在接收到所述读取命令之前将高速缓冲的写入数据刷新到存储器装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/720,674 | 2019-12-19 | ||
US16/720,674 US11042481B1 (en) | 2019-12-19 | 2019-12-19 | Efficient processing of commands in a memory sub-system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113010449A true CN113010449A (zh) | 2021-06-22 |
CN113010449B CN113010449B (zh) | 2024-03-29 |
Family
ID=76383478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011519388.8A Active CN113010449B (zh) | 2019-12-19 | 2020-12-21 | 用于存储器子系统中命令的有效处理的方法、系统和非暂时性计算机可读存储媒体 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11042481B1 (zh) |
CN (1) | CN113010449B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042481B1 (en) * | 2019-12-19 | 2021-06-22 | Micron Technology, Inc. | Efficient processing of commands in a memory sub-system |
US11733918B2 (en) * | 2020-07-28 | 2023-08-22 | Samsung Electronics Co., Ltd. | Systems and methods for processing commands for storage devices |
US20220413755A1 (en) * | 2021-06-23 | 2022-12-29 | Western Digital Technologies, Inc. | Handling Urgent Commands in a Data Storage Device |
US20240061769A1 (en) * | 2022-08-16 | 2024-02-22 | Micron Technology, Inc. | Memory device hardware host read actions based on lookup operation results |
US20240143512A1 (en) * | 2022-11-01 | 2024-05-02 | Western Digital Technologies, Inc. | Write buffer linking for easy cache reads |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140223079A1 (en) * | 2013-02-05 | 2014-08-07 | Via Technologies, Inc. | Non-volatile memory apparatus and operating method thereof |
CN104794063A (zh) * | 2014-01-17 | 2015-07-22 | 光宝科技股份有限公司 | 一种具备电阻式存储器的固态储存装置的控制方法 |
CN104809075A (zh) * | 2015-04-20 | 2015-07-29 | 电子科技大学 | 一种存取实时并行处理的固态记录装置及方法 |
US20170083451A1 (en) * | 2015-09-23 | 2017-03-23 | Phison Electronics Corp. | Buffer memory management method, memory control circuit unit and memory storage device |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
US20170242603A1 (en) * | 2014-08-29 | 2017-08-24 | Netapp Inc. | Overlapping write detection and processing for sync replication |
CN108762989A (zh) * | 2018-06-05 | 2018-11-06 | 郑州云海信息技术有限公司 | 固态硬盘的数据存储方法、装置、设备及可读存储介质 |
CN109032958A (zh) * | 2017-06-12 | 2018-12-18 | 西部数据技术公司 | 用于在控制同步操作期间读取数据的方法和设备 |
CN110023939A (zh) * | 2016-12-30 | 2019-07-16 | 英特尔公司 | 用于存储装置中基于范围的检查点的方法和设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1966701A2 (en) * | 2005-12-21 | 2008-09-10 | Nxp B.V. | Memory with block-erasable locations |
US8433880B2 (en) * | 2009-03-17 | 2013-04-30 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
TW201111986A (en) * | 2009-09-29 | 2011-04-01 | Silicon Motion Inc | Memory apparatus and data access method for memories |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
US9639459B2 (en) * | 2013-06-04 | 2017-05-02 | Globalfoundries Inc. | I/O latency and IOPs performance in thin provisioned volumes |
WO2019105029A1 (zh) * | 2017-11-29 | 2019-06-06 | 北京忆恒创源科技有限公司 | 去分配命令处理方法及其存储设备 |
US11216218B2 (en) * | 2019-07-15 | 2022-01-04 | Micron Technology, Inc. | Unmap data pattern for coarse mapping memory sub-system |
US11042481B1 (en) * | 2019-12-19 | 2021-06-22 | Micron Technology, Inc. | Efficient processing of commands in a memory sub-system |
-
2019
- 2019-12-19 US US16/720,674 patent/US11042481B1/en active Active
-
2020
- 2020-12-21 CN CN202011519388.8A patent/CN113010449B/zh active Active
-
2021
- 2021-05-17 US US17/322,522 patent/US11630778B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140223079A1 (en) * | 2013-02-05 | 2014-08-07 | Via Technologies, Inc. | Non-volatile memory apparatus and operating method thereof |
CN104794063A (zh) * | 2014-01-17 | 2015-07-22 | 光宝科技股份有限公司 | 一种具备电阻式存储器的固态储存装置的控制方法 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
US20170242603A1 (en) * | 2014-08-29 | 2017-08-24 | Netapp Inc. | Overlapping write detection and processing for sync replication |
CN104809075A (zh) * | 2015-04-20 | 2015-07-29 | 电子科技大学 | 一种存取实时并行处理的固态记录装置及方法 |
US20170083451A1 (en) * | 2015-09-23 | 2017-03-23 | Phison Electronics Corp. | Buffer memory management method, memory control circuit unit and memory storage device |
CN110023939A (zh) * | 2016-12-30 | 2019-07-16 | 英特尔公司 | 用于存储装置中基于范围的检查点的方法和设备 |
CN109032958A (zh) * | 2017-06-12 | 2018-12-18 | 西部数据技术公司 | 用于在控制同步操作期间读取数据的方法和设备 |
CN108762989A (zh) * | 2018-06-05 | 2018-11-06 | 郑州云海信息技术有限公司 | 固态硬盘的数据存储方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113010449B (zh) | 2024-03-29 |
US11630778B2 (en) | 2023-04-18 |
US20210191870A1 (en) | 2021-06-24 |
US11042481B1 (en) | 2021-06-22 |
US20210271601A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113553099A (zh) | 主机常驻转换层写入命令 | |
CN113010449B (zh) | 用于存储器子系统中命令的有效处理的方法、系统和非暂时性计算机可读存储媒体 | |
US11693768B2 (en) | Power loss data protection in a memory sub-system | |
US20220300195A1 (en) | Supporting multiple active regions in memory devices | |
CN115080458A (zh) | 在存储器子系统中高速缓存逻辑到物理映射信息 | |
CN112948284A (zh) | 高速缓存媒体中的动态存取粒度 | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113934666B (zh) | 数据接口桥的预取 | |
CN114942893A (zh) | 物理存储器位置的反转刷新 | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
US11971816B2 (en) | Host system notification based on entry miss | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
US11797198B2 (en) | Memory instruction for memory tiers | |
CN115048042A (zh) | 启用针对持久性存储器的存储器存取事务 | |
CN113961482A (zh) | 高速缓存存储器的增强型重复写入数据跟踪 | |
CN114303137A (zh) | 使用主机存储器缓冲器的存储器叠加 | |
CN114077404B (zh) | 使存储器单元与主机系统解除关联 | |
US11868642B2 (en) | Managing trim commands in a memory sub-system | |
US11221949B2 (en) | Multi state purgatory for media management for a memory subsystem | |
CN113094293B (zh) | 存储器系统及相关方法和计算机可读存储介质 | |
CN113064548A (zh) | 存储器子系统中的逻辑到物理页转译中的相干性问题解决方案 | |
CN115512749A (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 |