CN113360090B - 相干性锁定方案 - Google Patents
相干性锁定方案 Download PDFInfo
- Publication number
- CN113360090B CN113360090B CN202110220976.XA CN202110220976A CN113360090B CN 113360090 B CN113360090 B CN 113360090B CN 202110220976 A CN202110220976 A CN 202110220976A CN 113360090 B CN113360090 B CN 113360090B
- Authority
- CN
- China
- Prior art keywords
- memory
- write command
- write
- memory address
- 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.)
- Active
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/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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- 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
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明是针对相干性锁定方案。写入类型可与不同写入命令源相关联,例如来自主机***的外部命令或来自垃圾收集程序的内部命令。可针对从主机***接收到的外部写入命令执行相干性锁定,而不针对内部写入命令执行相干性锁定。如果接收到先前已在先前位置处写入的数据的内部写入,则可执行对一或多个物理存储器装置的写入,并且一旦接收到写入完成的确认,就用数据的新位置对映射表执行更新。
Description
交叉参考
本专利申请要求由李(Li)等人于2020年3月4日提交的标题为“相干性锁定方案(COHERENCY LOCKING SCHEMES)”的第16/809,058号美国专利申请案的优先权,所述美国专利申请案转让给本受让人,并且明确地以全文引用的方式并入本文中。
技术领域
技术领域涉及相干性锁定方案。
背景技术
存储器子***可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机***可利用存储器子***以在存储器装置处存储数据且从存储器装置检索数据。
发明内容
描述了一种方法。所述方法可包含:在用于存储器子***的控制器处从主机装置接收第一写入命令以在存储器子***的存储器装置的第一存储器地址处写入第一数据块;响应于接收到第一写入命令而锁定第一存储器地址的第一相干性;以及从控制器的处理核心接收第二写入命令以在存储器装置的第二存储器地址处写入第二数据块,其中在接收到第二写入命令之后第二存储器地址的第二相干性维持在解锁状态中。
描述了一种***。所述***可包含多个存储器组件和与所述多个存储器组件操作性地耦合的处理装置,处理装置用于进行以下操作:从***外部的装置接收第一写入命令,第一写入命令用于在多个存储器组件的第一存储器地址处写入第一数据块;响应于接收到第一写入命令而锁定第一存储器地址的第一相干性;从***的子组件接收第二写入命令,第二写入命令用于在多个存储器组件的第二存储器地址处写入第二数据块;以及在接收到第二写入命令之后将第二存储器地址的第二相干性维持在解锁状态中。
描述了一种非暂时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体可包含指令,所述指令在由处理装置执行时使所述处理装置进行以下操作:从外部装置接收第一写入命令以在存储器装置的第一存储器地址处写入第一数据块;响应于接收到第一写入命令而锁定第一存储器地址的第一相干性;以及从处理装置的内部组件接收第二写入命令以在存储器装置的第二存储器地址处写入第二数据块,其中在接收到第二写入命令之后第二存储器地址的第二相干性保持在解锁状态中。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实例的包含存储器子***的计算***的实例。
图2是根据本公开的一些实例的用于相干性锁定方案的实例方法的方法图。
图3是根据本公开的一些实例的用于相干性锁定方案的实例方法的另一方法图。
图4是根据本公开的一些实例的可实施相干性锁定方案的计算环境的框图。
图5是其中可操作本公开的实例的实例计算机***的框图。
具体实施方式
本公开的方面是针对相干性锁定方案。存储器子***可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机***可利用包含一或多个组件(例如,存储数据的存储器装置)的存储器子***。主机***可提供待存储在存储器子***处的数据且可请求待从存储器子***中检索的数据。
存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,“与非”(NAND)装置),每一平面由物理块集合组成。每一块由页集合组成。每一页由存储数据位的存储器单元集合组成。对于一些存储器装置,例如NAND装置,块是可擦除得最小区域且块内的页无法个别地擦除。对于此类装置,一次一个块地执行擦除操作。
块的页可含有有效数据、无效数据或无数据。无效数据是标记为过时的数据,因为所述数据的新版本存储在存储器装置上。无效数据包含先前写入但不再与有效逻辑地址(例如主机***在物理到逻辑(P2L)映射表中所参考的逻辑地址)相关联的数据。有效数据是正存储在存储器装置上的此类数据的最新版本。存储器子***可基于例如从操作***接收到的信息而将数据标记为无效。不含有数据的页包含先前已擦除且尚未写入到的页。
存储器子***控制器可执行用于媒体管理算法(例如耗损均衡、刷新、垃圾收集、擦除等)的操作。块可具有含有有效数据的一些页和含有无效数据的一些页。为了避免等待块中的所有页具有无效数据以便擦除以及再用所述块,可调用下文称为“垃圾收集”的算法,以允许所述块被擦除及释放,作为用于后续写入操作的闲置块。垃圾收集是一组媒体管理操作,其包含例如:选择含有有效和无效数据的块;选择块中含有有效数据的页;将有效数据复制到新位置(例如,另一块中的自由页);将先前选择的页中的数据标记为无效;以及擦除选定块。
下文的“垃圾收集”是指选择块;将有效数据从选定块重写到另一块;以及擦除存储在选定块处的所有无效数据及有效数据。可将来自多个选定块的有效数据复制到较小数目个其它块,并且可接着擦除选定块。因此,可增加已擦除的块的数目,使得更多的块可用于存储来自主机***的后续数据。
在垃圾收集期间,基于由存储器子***控制器发布的一或多个读取命令,将待擦除的块的有效数据最初读取到缓冲器中且由所述缓冲器存储,并且擦除对应页(例如,其上可含有有效数据的页)。接着可将有效数据写入(例如,重写)到存储器装置(例如,到存储器装置的不同页)。为了将有效数据写入到位置(例如,存储器装置的不同页),由存储器子***控制器发布写入命令,每一写入命令指示待写入有效数据的存储器地址(例如,目的地存储器地址)。在一些垃圾收集程序中,一旦对应的读取命令已完成,就发布写入命令。
另外,在存储器子***的传统存取操作中,与不同存取操作(例如,读取操作、写入操作等)相关联的命令可由主机***恒定地发射且由存储器子***接收。举例来说,主机***可发射待写入的数据的一或多个TU的写入命令。另外,可发射从一或多个TU请求数据的读取命令。常规地,在接收到写入命令之后,存储器子***处的固件可更新映射表(例如,物理到逻辑(P2L)映射表)以使物理存储器位置与TU相关联,并且接着将数据写入到存储器装置(例如,NAND存储器)。因为映射表是在数据实际上物理上写入到NAND存储器之前经更新,所以传统上此类固件将执行相干性程序以防止在数据实际上写入到NAND存储器位置之前从NAND存储器位置读取数据。此外,在传统***中,固件将针对基于来自主机***的写入命令的写入操作以及针对媒体管理(例如,垃圾收集)的写入操作执行此类相干性程序。
举例来说,如果第一写入命令(例如,来自主机***或经起始以用于媒体管理)跨越第一组TU,并且针对与第一组TU重叠的第二组TU接收读取命令,则相干性操作防止重叠TU在其实际上根据写入命令写入之前从NAND存储器读取。在此类传统***中,对于来自主机***或经起始以用于媒体管理的每一写入操作,固件执行操作以更新TU的映射表、锁定TU的相干性、执行对一或多个物理存储器装置的写入、释放相干性锁,以及更新在写入期间数据存储于其中的任何相关联缓冲器。另外,对于每一读取操作,固件执行操作以检查待读取的相关联TU的相干性,接着在未锁定相干性的情况下读取数据,或在锁定相干性的情况下执行另一操作(例如,等待相干性解锁或从缓冲器读取数据)。由固件执行的此类相干性操作因此消耗处理器的用于执行相干性操作的若干处理循环。因此,对于来自主机***或垃圾收集程序的写入操作,传统的相干性操作可导致***资源用于相干性锁定、解锁和检查,这可能会增加待在存储器子***处执行的操作的时延。因此,有效地以硬件等级管理相干性的***可为有益的。
本公开的方面通过提供存储器子***来解决以上和其它缺陷,在所述存储器子***中针对从主机***接收到的写入命令执行相干性操作,而不针对在存储器子***内内部生成的写入命令(例如经起始以用于媒体管理的写入)执行所述相干性操作。如本文所提供的此类相干性锁定方案可大体上减少与相干性检查的实施方案相关联的处理开销。在一些实例中,如果从主机***接收到写入,则存储器子***可通过锁定与主机***写入相关联的一或多个TU的相干性、更新映射表、执行对一或多个物理存储器装置的写入以及解锁一或多个TU的相干性锁而执行如上文所论述的相干性操作。然而,如果从运行媒体管理操作(例如,垃圾收集)的存储器子***的内部处理器接收到写入,则可跳过相干性操作,因此节省了相干性操作的处理开销。
在其中跳过相干性操作的情况下,存储器子***可首先执行对一或多个物理存储器装置的写入,并且一旦接收到写入完成的确认,则用数据的新位置更新映射表。因此,映射表含有数据的先前位置直到其在写入完成之后被更新为止。通过在写入完成之后更新映射表,在写入操作期间接收到的用于此数据的任何读取命令将识别数据的先前位置且从先前位置返回数据。因为数据的先前位置仍含有所述数据,所以针对读取命令返回恰当数据。因此,由于其中TU的相干性被锁定的情况减少,因此可提高***的读取性能,这可提高存储器子***聚合读取操作(例如,到多平面读取中)或执行快照读取或其它快速读取操作的能力。在一些实例中,聚合多个读取操作可使得存储器子***经历功率消耗减少。在完成写入且更新映射表之后,任何未来读取命令将读取新写入数据,并且先前位置可用不同数据擦除或重写。
另外,在一些实例中,硬件相干性块可用于在完成写入命令之后维持相干性锁定以及释放相干性,这可进一步提高含有多个处理核心的存储器子***的效率。举例来说,第一处理核心可对第一TU执行来自主机的写入操作,并且可将与第一TU相关联的相干性锁定在硬件相干性块处。第二处理核心可接着针对第一TU执行读取操作,并且检查在相干性块处的相干性以确定是否针对第一TU锁定相干性。因此,通过具有硬件相干性块,不同处理核心可通过存取共同硬件相干性块来针对独立读取或写入操作执行相干性操作,而不必像在其中每一处理核心单独地执行相干性操作的每一个步骤的情况下将需要的那样在处理核心之间交换消息。因此,多个处理核心可使用硬件相干性块执行独立存储器操作,包含主机读取和写入操作,以及垃圾收集读取和写入操作,这可进一步提高效率且减少与存储器子***相关联的时延。
首先在如参考图1所描述的计算环境的上下文中描述本公开的特征。在如参考图2至4所描述的可实施相干性锁定方案的方法图和计算环境的上下文中描述本公开的特征。通过以及参考如参考图5所描述的涉及相干性锁定方案的计算机***进一步说明以及描述本公开的这些和其它特征。
图1说明根据本公开的一些实施例的包含存储器子***110的实例计算***100。存储器子***110可包含媒体,例如一或多个非易失性存储器装置(例如,一或多个存储器装置130)、一或多个易失性存储器装置(例如,一或多个存储器装置140),或其组合。
存储器子***110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和各种类型的非易失性DIMM(NVDIMM)。
计算***100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算***100可包含与一或多个存储器子***110耦合的主机***105。在一些实例中,主机***105与不同类型的存储器子***110耦合。图1说明与一个存储器子***110耦合的主机***105的一个实例。如本文所使用,“耦合到”或“与耦合”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有介入组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
主机***105可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器),和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机***105使用存储器子***110,例如,将数据写入到存储器子***110以及从存储器子***110读取数据。
主机***105可使用物理主机接口耦合到存储器子***110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、***组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤信道、串行附接SCSI(SAS)、小型计算机***接口(SCSI)、双数据速率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR)或任何其它接口。物理主机接口可用于在主机***105与存储器子***110之间发射数据。在存储器子***110通过PCIe接口与主机***105耦合时,主机***105可进一步利用非易失性存储器快速(NVMe)接口来存取组件(例如,一或多个存储器装置130)。物理主机接口可提供用于在存储器子***110与主机***105之间传送控制、地址、数据和其它信号的接口。图1说明存储器子***110作为实例。一般来说,主机***105可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子***。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,一或多个存储器装置140)可为但不限于随机存取存储器(RAM),例如动态RAM(DRAM)和同步DRAM(SDRAM)。
非易失性存储器装置(例如,一或多个存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。此外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个阵列存储器单元,例如SLC、MLC、TLC、QLC或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,和MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可分组以形成块。
虽然描述了非易失性存储器装置,例如NAND型快闪存储器(例如,2D NAND、3DNAND)和3D交叉点非易失性存储器单元阵列,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、磁RAM(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器和电可擦除可编程ROM(EEPROM)。
存储器子***控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子***控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路***以执行本文所描述的操作。存储器子***控制器115可为微控制器、专用逻辑电路***(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)),或其它合适的处理器。
存储器子***控制器115可包含被配置成执行存储在本地存储器125中的指令的处理器120(例如,处理装置)。在所说明的实例中,存储器子***控制器115的本地存储器125包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子***110的操作(包含处理存储器子***110与主机***105之间的通信)的各种过程、操作、逻辑流和例程。
在一些实例中,本地存储器125可包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器125还可包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子***110已说明为包含存储器子***控制器115,但在本公开的另一个实例中,存储器子***110不包含存储器子***控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子***分开的处理器或控制器提供)。
一般来说,存储器子***控制器115可从主机***105接收命令或操作,并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130和/或存储器装置140的所要存取。存储器子***控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)和物理地址(例如,物理块地址)之间的地址翻译。存储器子***控制器115可进一步包含主机接口电路***以经由物理主机接口与主机***105通信。主机接口电路***可将从主机***接收到的命令转换成命令指令以存取存储器装置130和/或存储器装置140,以及将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机***105的信息。
存储器子***110还可包含未说明的额外电路***或组件。在一些实例中,存储器子***110可包含高速缓存或缓冲器(例如,DRAM)以及地址电路***(例如,行解码器和列解码器),所述地址电路***可从存储器子***控制器115接收地址,并且对地址进行解码以存取存储器装置130。
在一些实例中,存储器装置130包含本地媒体控制器135,其结合存储器子***控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子***控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地控制器135)组合以用于在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子***110包含可执行写入操作的写入管理器150,包含从存储器子***110外部(例如,从主机***105)发起的写入操作和从存储器子***110内部(例如,从垃圾收集程序)发起的写入操作。垃圾收集程序可为借以独立于任何直接主机交互将数据从一个位置(例如,源存储器地址)迁移到另一位置(例如,目标或目的地存储器地址)的过程。
在一些实例中,存储器子***控制器115包含写入管理器150的至少一部分。举例来说,存储器子***控制器115可包含被配置成执行存储在本地存储器125中的用于执行本文所描述的操作的指令(例如,固件)的处理器120(例如,具有两个或更多个处理核心的处理装置)。在一些实例中,写入管理器150是主机***105、应用程序或操作***的部分。
根据本文所描述的各种方面的写入管理器150可针对从存储器子***110外部发起的写入操作执行相干性操作(例如,锁定相干性),而不针对从存储器子***110内部发起的写入操作执行相干性操作。此外,在一些实例中,写入管理器150可使用两个或更多个不同处理核心以用于执行写入操作,其中硬件相干性块可由每一处理核心存取且允许不同处理核心彼此独立地执行读取和写入操作。下文描述关于写入管理器150的操作的其它细节。
图2是根据本公开的一些实例的相干性锁定的实例方法200的方法图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、一或多个处理核心、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,方法200由图1的写入管理器150执行。虽然以特定序列或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所说明的实例应仅作为实例理解,并且所说明的过程可以不同次序执行,并且一些过程可并行执行。此外,可在各种实例中省略一或多个过程。因此,在每一个实例中并不需要所有过程。其它过程流程是可能的。
在操作205处,处理装置可从外部装置(例如,主机装置)接收第一写入命令以在存储器子***的存储器装置的第一存储器地址处写入第一数据块。在一些实例中,处理装置可响应于接收到第一写入命令而更新映射记录以指示第一数据块位于第一存储器地址处。在一些实例中,映射记录可为将物理存储器位置映射到第一存储器地址的P2L映射表。
在操作210处,处理装置可响应于接收到第一写入命令而锁定第一存储器地址的第一相干性。在一些实例中,处理装置可向存储器子***的相干性块提供相干性锁定命令和第一存储器地址。在一些实例中,相干性块可为与两个或更多个不同处理核心耦合且对所述两个或更多个不同处理核心执行相干性操作的基于硬件的相干性块。
在一些实例中,在针对第一存储器地址将数据写入到存储器装置之后,处理装置可解锁或释放第一存储器地址的第一相干性上的锁。在一些实例中,处理装置可接收读取命令以在接收到第一写入命令之后且在释放第一数据块的相干性之前读取第一数据块。在此类情况下,处理装置可响应于读取命令而提供相干性锁定指示。在一些实例中,处理装置可通过从基于硬件的相干性块请求相干性状态而检查是否锁定第一数据块的相干性。在一些实例中,执行读取命令的处理核心可不同于执行第一写入命令的处理核心,并且每一处理核心可使用基于硬件的相干性块以用于进行相干性操作。
在操作215处,处理装置可从存储器子***的子组件(例如,运行垃圾收集程序的处理核心)接收第二写入命令以在存储器装置的第二存储器地址处写入第二数据块,其中在接收到第二写入命令之后第二存储器地址的第二相干性维持在解锁状态中。在一些实例中,处理装置可在更新映射记录以指示第二数据块位于第二存储器地址处之前等待直到第二写入命令完成为止。因此,映射记录指示在更新之前和在第二写入命令操作期间第二数据块位于先前存储器地址处。
在一些实例中,作为垃圾收集程序的部分,第二数据块从先前存储器地址移动到第二存储器地址。在一些实例中,处理装置可在更新第二数据块的映射记录之前接收读取命令以读取第二数据块。在此类实例中,处理装置可响应于读取命令而读取先前存储器地址以提供第二数据块。在一些实例中,在第一处理核心处接收第一写入命令和第二写入命令,并且从存储器子***的第二处理核心接收第二写入命令。
图3说明根据本公开的一些实例的相干性锁定的实例方法300的另一方法图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、一或多个处理核心、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,方法300由图1的写入管理器150执行。虽然以特定序列或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所说明的实例应仅作为实例理解,并且所说明的过程可以不同次序执行,并且一些过程可并行执行。此外,可在各种实例中省略一或多个过程。因此,在每一个实例中并不需要所有过程。其它过程流程是可能的。
在操作305处,处理装置可接收用于第一存储器地址的写入命令。在一些实例中,写入命令可用于待在第一存储器地址处写入的第一数据块。在一些实例中,处理装置可为针对来自内部过程(例如,在存储器子***处执行的垃圾收集)的写入操作以及针对来自外部装置(例如,主机***)的写入操作执行快闪翻译层(FTL)功能的处理核心。
在操作310处,处理装置可确定写入命令是内部写入命令还是外部写入命令。在一些实例中,可基于写入命令是来自主机***还是来自存储器子***内的垃圾收集管理器而作出此类确定。
在操作315处,在其中写入命令是来自外部装置的实例中,处理装置可锁定与第一存储器地址相关联的相干性表中的第一条目。在一些实例中,可通过向与处理装置耦合的相干性块(例如,基于硬件的相干性块)提供相干性锁定指示而锁定相干性表中的第一条目。在一些实例中,相干性表中的第一条目可指示含有第一存储器地址的块,例如含有第一存储器地址的TU的地址(例如,***标签(systag)),并且可将相干性记录维持在基于硬件的相干性块的逻辑地址记录存储块(例如,***标签表)中。
在操作320处,处理装置可更新用于第一存储器地址的映射表。举例来说,第一存储器地址可映射到第一物理地址(例如,通过systag分配块),并且L2P映射表可经更新以指示第一存储器地址对应于一或多个存储器装置的第一物理地址。在一些实例中,可相对快速地更新映射表,而将数据写入到第一物理地址的过程可花费相对较长的时间周期。因此,第一存储器地址的相干性锁可用于在一或多个物理存储器装置处完成写入之前防止读取命令基于更新后的映射表而从第一物理地址读取数据。举例来说,存储器子***处的处理核心(其可不同于执行写入命令的处理核心)可在一或多个物理存储器装置处的写入过程完成之前接收用于第一存储器地址的读取命令。作为读取程序的部分,可检查第一存储器地址的相干性,并且如果所述相干性经锁定,则可采用其它动作,例如从缓冲器读取数据或执行等待程序,而非从一或多个物理存储器装置读取数据。在其中不针对读取命令的地址锁定相干性的情况下,可仅从一或多个物理存储器装置处的映射位置读取数据。
在操作325处,处理装置可起始对一或多个存储器装置的写入。如所指示,在一些实例中,对一或多个存储器装置的写入可包含在映射到第一存储器地址的第一物理地址处写入接收到的数据。
在操作330处,处理装置可接收写入完成指示。在一些实例中,可从在一或多个物理存储器装置处操作的本地媒体控制器提供写入完成指示。
在操作335处,处理装置可响应于写入完成指示而解锁与第一存储器地址相关联的相干性表中的第一相干性条目。在一些实例中,可由基于硬件的相干性块解锁第一相干性条目,所述基于硬件的相干性块可在状态队列中提供状态更新。在一些实例中,可在确认与含有第一存储器地址的块相关联的其它写入命令不具有来源于外部装置的未完成写入操作之后解锁第一相干性条目。
在操作340处,在写入命令为内部写入命令的情况下,处理装置可起始对一或多个物理存储器装置的写入。举例来说,内部写入命令可由将数据从先前物理存储器地址移动到新物理存储器地址的垃圾收集程序生成,并且第一存储器地址在方法300的操作之前映射到先前物理存储器地址(例如,在L2P映射表中)。因此,在此实例中,处理装置并不锁定第一存储器地址的相干性。在此类情况下,如果在一或多个物理存储器装置处完成写入之前接收到用于第一存储器地址的读取命令,则映射表仍指示先前存储器地址,并且读取命令可经执行以从先前存储器地址读取数据。
在操作345处,处理装置可接收写入完成指示。写入完成指示可发信号通知已在一或多个物理存储器装置处完成写入命令,并且新物理存储器地址因此含有来自写入命令的数据。
在操作350处,处理装置可更新用于第一存储器地址的映射表。在一些实例中,可更新映射表以将先前物理存储器地址改变成新物理存储器地址。因此,指示第一存储器地址的任何后续读取命令映射到新物理存储器地址。
因此,例如在此实例中的相干性锁定方案可为来源于外部装置的数据的写入提供锁定相干性,但不为在存储器子***处内部发起的数据的写入提供锁定相干性。因为与内部发起的写入相关联的数据已存在于存储器子***处,所以通过继续提供先前物理存储器地址的映射表提供恰当数据的返回,直到新物理存储器地址实际上具有写入到其上的数据为止。另外,对于从存储器子***外部发起的写入,数据先前未存储,并且因此需要更新映射表以便确定数据的物理存储器位置,且第一存储器地址的相干性经锁定以防止在一或多个物理存储器装置处完成写入之前返回不正确数据(例如,返回空页)的读取。如本文所论述,用于相干性锁定的传统技术将锁定写入命令的相干性,而不管写入是在存储器子***内部还是外部发起的。例如本文所论述的技术因此跳过用于内部写入的相干性操作,并且因此减少与此类内部写入相关联的处理开销的量,并且由此提高***效率以及减少时延。
图4说明根据本公开的一些实例的可实施相干性锁定技术的存储器***400的实例。存储器***400可包含存储器子***405、主机***410和一或多个存储器装置415。在一些实例中,存储器子***405可从主机***410接收存储器命令,并且此类存储器命令可称为外部存储器命令(例如,来自外部装置的写入命令)。在一些实例中,存储器子***405可为图1的存储器子***110的实例,并且可执行例如参考图2或3所描述的操作。
在图4的实例中,存储器子***405可包含写入管理器420和读取管理器425。举例来说,写入管理器420可为执行写入命令处理且针对写入命令与主机***410一起执行数据传递和响应操作的输入/输出(I/O)管理器。在一些实例中,写入管理器420可在存储器子***405内的处理器或处理核心上执行。同样地,读取管理器425可为执行读取命令处理且与主机***410执行用于读取命令的数据传递和响应操作的I/O管理器。在一些实例中,读取管理器425可在与写入管理器420不同的处理器或处理核心(例如,HS核心,其中存储器子***405中存在四个HS核心)上执行。
在图4的实例中,垃圾收集管理器430可与写入管理器420耦合。在一些实例中,垃圾收集管理器430可在存储器子***405处(例如,在HS核心上)用FTL管理器实施。在一些实例中,垃圾收集管理器430可执行管理存储在一或多个存储器装置处的数据的垃圾收集算法。举例来说,垃圾收集管理器430可将在一或多个存储器装置415处与无效或过期数据页互混的有效数据页移动(例如,重写)到一或多个存储器装置415的与其它有效数据页相邻的其它位置。在一些实例中,垃圾收集管理器430可与写入管理器420协调以执行由垃圾收集算法产生的数据的写入。
在图4的实例中,写入管理器420与相干性块435耦合。在一些实例中,相干性块435可为为写入管理器420提供相干性操作的基于硬件的块。在一些实例中,相干性块435可通过直接桥接器(例如,零级高速缓存)与写入管理器420耦合。另外,若干处理CPU 445(例如,EM CPU)可用于执行存储器的存储器命令,所述处理CPU可包含CPU-0 450、CPU-1 455至CPU-n 460。如参考图2和3所描述,在一些实例中,写入管理器420可针对从存储器子***405外部发起的写入命令(例如针对来自主机***410的写入操作)执行相干性操作,但不针对从存储器子***405内发起的写入命令(例如针对垃圾收集管理器430的写入操作)执行相干性操作。在其中相干性锁定的情况下,可在接收到写入命令之后在L2P表440中更新逻辑存取与物理地址之间的映射,并且在其中相干性未锁定的情况下,直到写入命令完成之后才更新在L2P表440处的映射。在一些实例中,如果在垃圾收集写入期间发生功率损耗,则由于L2P表440未更新,与垃圾收集写入相关的信息可能会丢失。在此类事件中,可重新运行垃圾收集算法以在垃圾收集程序的正常进程中重新起始垃圾收集写入。
在一些实例中,读取管理器425和写入管理器420以及垃圾收集管理器430可使用不同核心。另外,在一些实例中,核心中的每一个可独立地执行存储器命令且可向相干性块435提供信息,使得如果第一核心(例如,写入管理器420的第一HS核心)锁定第一存储器地址的相干性,则第二核心(例如,读取管理器425的第二HS核心)可基于由相干性块435提供的状态而检查第一存储器地址的相干性。如本文所论述,垃圾收集管理器430不执行用于垃圾收集写入的相干性操作,并且仅在写入完成时更新L2P表440,并且因此用于垃圾收集写入的相干性锁定或状态是不必要的。另外,在其中相干性块435通过直接桥接器(例如,零级高速缓存)与此类核心耦合的情况下,每一核心可仅检查直接桥接器中的状态队列以确定第一存储器地址是否已锁定相干性。此外或替代地,处理CPU 445中的每一个可存取相干性块435以执行相干性相关操作。因此,在此类情况下,处理核心和/或处理CPU 445中的多个可同时且独立地执行写入和读取操作,而不必交换与存储器地址的相干性相关的信息,如果一个核心维持用于特定写入命令的所有相干性操作,则将需要交换与存储器地址的相干性相关的信息。因此,写入管理器420、读取管理器425和垃圾收集管理器430可使用不同核心和不同处理CPU 445,这可提供存储器子***405处的增强的性能和减少的时延。
图5说明根据本文所公开的实例的支持用于维持序列性的折叠记分牌的计算机***500的实例机器。计算机***500可包含用于使机器执行本文所描述的技术中的任何一或多种的指令集。在一些实例中,计算机***500可对应于主机***(例如,参考图1所描述的主机***105),其包含、耦合有或利用存储器子***(例如,参考图1所描述的存储器子***110)或可用于执行控制器的操作(例如,执行操作***以执行对应于参考图1所描述的写入管理器150的操作)。在一些实例中,机器可与局域网(LAN)、内联网、外联网和/或因特网中的其它机器连接(例如,联网)。机器可作为点对点(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采用的动作的指令集的任何机器。另外,虽然说明了单个机器,但术语“机器”还可包含个别地或共同地执行指令集(或多个指令集)以执行本文所论述的任何一或多种方法的机器的任何集合。
实例计算机***500可包含处理装置505、主存储器510(例如,ROM、快闪存储器、例如SDRAM或Rambus DRAM(RDRAM)等DRAM等)、静态存储器515(例如,快闪存储器、静态RAM(SRAM)等),以及数据存储***525,其经由总线545彼此通信。
处理装置505表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置505还可为一或多个专用处理装置,例如ASIC、FPGA、DSP、网络处理器等。处理装置505被配置成执行用于执行本文所论述的操作和步骤的指令535。计算机***500可进一步包含网络接口装置520以在网络540上通信。
数据存储***525可包含机器可读存储媒体530(也被称作计算机可读媒体),其上存储有一或多个指令集535或体现本文所描述的方法或功能中的任何一或多个的软件。指令535还可在其由计算机***500执行期间完全或至少部分地驻留在主存储器510内和/或处理装置505内,主存储器510和处理装置505也构成机器可读存储媒体。机器可读存储媒体530、数据存储***525和/或主存储器510可对应于存储器子***。
在一个实例中,指令535包含用于实施对应于写入管理器550(例如,参考图描述1所描述的写入管理器150或参考图4所描述的写入管理器420)的功能性的指令。虽然机器可读存储媒体530展示为单个媒体,但术语“机器可读存储媒体”可包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还可包含能够存储或编码供机器执行的指令集且使机器执行本公开的任何一或多种方法的任何媒体。术语“机器可读存储媒体”可包含但不限于固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在此处且通常被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元件、符号、字符、术语、编号等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可指操控和变换计算机***的寄存器和存储器内的表示为物理(电子)量的数据为计算机***存储器或寄存器或其它此类信息存储***内的类似地表示为物理量的其它数据的计算机***或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、ROM、RAM、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机***总线。
本文所呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用***可与根据本文中的教示的程序一起使用,或其可证明构造用于执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些***的结构。此外,不参考任何特定编程语言来描述本公开。将了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于对计算机***(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如ROM、RAM、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其具体实例描述了本公开的实例。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种用于操作存储器子***的方法,其包括:
在用于所述存储器子***的控制器处从主机装置接收第一写入命令以在所述存储器子***的存储器装置的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;以及
接收由所述控制器的处理核心产生的第二写入命令以在所述存储器装置的第二存储器地址处写入第二数据块,其中在接收到所述第二写入命令之后所述第二存储器地址的第二相干性维持在解锁状态中。
2.根据权利要求1所述的方法,其进一步包括:
响应于完成所述第二写入命令,更新映射记录以指示所述第二数据块位于所述第二存储器地址处,其中所述映射记录指示所述第二数据块在所述更新之前位于先前存储器地址处。
3.根据权利要求2所述的方法,其进一步包括:
响应于接收到所述第一写入命令,更新所述映射记录以指示所述第一数据块位于所述第一存储器地址处。
4.根据权利要求3所述的方法,其进一步包括:
接收读取命令以读取所述第一数据块;以及
响应于所述读取命令而发送相干性锁定指示。
5.一种用于操作存储器子***的方法,其包括:
在用于所述存储器子***的控制器处从主机装置接收第一写入命令以在所述存储器子***的存储器装置的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;
从所述控制器的处理核心接收第二写入命令以在所述存储器装置的第二存储器地址处写入第二数据块,其中在接收到所述第二写入命令之后所述第二存储器地址的第二相干性维持在解锁状态中;
接收所述第二数据块的映射记录和读取命令以读取所述第二数据块;
读取先前存储器地址以提供所述第二数据块;以及
响应于完成所述第二写入命令,更新所述映射记录以指示所述第二数据块位于所述第二存储器地址,其中所述映射记录指示所述第二数据块位于所述更新之前的所述先前存储器地址。
6.根据权利要求1所述的方法,其中在所述控制器的第一处理核心处接收所述第一写入命令和所述第二写入命令,并且从所述控制器的第二处理核心接收所述第二写入命令。
7.根据权利要求6所述的方法,其中所述控制器的所述第二处理核心执行与所述第二写入命令相关联的垃圾收集程序。
8.根据权利要求1所述的方法,其中所述锁定所述第一相干性包括:
向所述控制器的相干性块提供相干性锁定命令和所述第一存储器地址。
9.一种存储器子***,其包括:
多个存储器组件;和
处理装置,其与所述多个存储器组件操作性地耦合,所述处理装置经配置以用于进行以下操作:
从所述存储器子***外部的装置接收第一写入命令,所述第一写入命令用于在所述多个存储器组件的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;
接收由所述存储器子***的子组件产生的第二写入命令,所述第二写入命令用于在所述多个存储器组件的第二存储器地址处写入第二数据块;以及
在接收到所述第二写入命令之后将所述第二存储器地址的第二相干性维持在解锁状态中。
10.根据权利要求9所述的存储器子***,其进一步包括:
所述处理装置进一步经配置以用于进行以下操作:
响应于完成所述第二写入命令而更新映射记录以指示所述第二数据块位于所述第二存储器地址处,其中所述映射记录指示所述第二数据块在所述更新之前位于先前存储器地址处。
11.根据权利要求10所述的存储器子***,其进一步包括:
所述处理装置进一步经配置以用于进行以下操作:
响应于接收到所述第一写入命令,更新所述映射记录以指示所述第一数据块位于所述第一存储器地址处。
12.根据权利要求11所述的存储器子***,其进一步包括:
所述处理装置进一步经配置以用于进行以下操作:
接收读取命令以读取所述第一数据块;以及
响应于所述读取命令而发送相干性锁定指示。
13.一种存储器子***,其包括:
多个存储器组件;和
处理装置,其与所述多个存储器组件操作性地耦合,所述处理装置经配置以用于进行以下操作:
从所述存储器子***的外部的装置接收第一写入命令,所述第一写入命令用于在所述多个存储器组件的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;
从所述存储器子***的子组件接收第二写入命令,所述第二写入命令用于在所述多个存储器组件的第二存储器地址处写入第二数据块;
在接收到所述第二写入命令之后将所述第二存储器地址的第二相干性维持在解锁状态中;
接收所述第二数据块的映射记录和读取命令以读取所述第二数据块;
读取先前存储器地址以提供所述第二数据块;以及
响应于完成所述第二写入命令,更新所述映射记录以指示所述第二数据块位于所述第二存储器地址,其中所述映射记录指示所述第二数据块位于所述更新之前的所述先前存储器地址。
14.根据权利要求9所述的存储器子***,其中在所述处理装置的第一处理核心处接收所述第一写入命令和所述第二写入命令,并且从所述处理装置的第二处理核心接收所述第二写入命令。
15.根据权利要求14所述的存储器子***,其中所述第二处理核心执行与所述第二写入命令相关联的垃圾收集程序。
16.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置进行以下操作:
从外部装置接收第一写入命令以在存储器装置的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;以及
接收由所述处理装置的内部组件产生的第二写入命令以在所述存储器装置的第二存储器地址处写入第二数据块,其中在接收到所述第二写入命令之后所述第二存储器地址的第二相干性保持在解锁状态中。
17.根据权利要求16所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步其经配置以用于进行以下操作:
响应于完成所述第二写入命令而更新映射记录以指示所述第二数据块位于所述第二存储器地址处,其中所述映射记录指示所述第二数据块在所述更新之前位于先前存储器地址处。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步其经配置以用于进行以下操作:
响应于所述第一写入命令,更新所述映射记录以指示所述第一数据块位于所述第一存储器地址处。
19.根据权利要求18所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步其经配置以用于进行以下操作:
接收读取命令以读取所述第一数据块;以及
响应于所述读取命令而发送相干性锁定指示。
20.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置进行以下操作:
从外部装置接收第一写入命令以在存储器装置的第一存储器地址处写入第一数据块;
响应于接收到所述第一写入命令而锁定所述第一存储器地址的第一相干性;
从所述处理装置的内部组件接收第二写入命令以在所述存储器装置的第二存储器地址处写入第二数据块,其中在接收到所述第二写入命令之后所述第二存储器地址的第二相干性保持在解锁状态中;
接收所述第二数据块的映射记录和读取命令以读取所述第二数据块;
读取先前存储器地址以提供所述第二数据块;以及
响应于完成所述第二写入命令,更新所述映射记录以指示所述第二数据块位于所述第二存储器地址,其中所述映射记录指示所述第二数据块位于所述更新之前的所述先前存储器地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/809,058 | 2020-03-04 | ||
US16/809,058 US11287987B2 (en) | 2020-03-04 | 2020-03-04 | Coherency locking schemes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360090A CN113360090A (zh) | 2021-09-07 |
CN113360090B true CN113360090B (zh) | 2022-12-06 |
Family
ID=77524729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110220976.XA Active CN113360090B (zh) | 2020-03-04 | 2021-02-26 | 相干性锁定方案 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11287987B2 (zh) |
CN (1) | CN113360090B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240086391A1 (en) * | 2022-09-08 | 2024-03-14 | Vmware, Inc. | Inspection and repair of object metadata in virtual storage area networks |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672151B1 (en) * | 2012-12-17 | 2017-06-06 | EMC IP Holding Company LLC | Block caching between a host device client and storage array in a shared storage environment |
CN109564548A (zh) * | 2016-06-24 | 2019-04-02 | 超威半导体公司 | 争用锁请求省略方案 |
CN110580229A (zh) * | 2018-06-07 | 2019-12-17 | 美光科技公司 | 扩展线宽存储器侧高速缓存***和方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070022647A1 (en) | 2005-07-28 | 2007-02-01 | Miller Craig A | Card with pocket |
JP4993928B2 (ja) * | 2006-03-23 | 2012-08-08 | 株式会社日立製作所 | 記憶システム及び記憶領域解放方法並びにストレージシステム |
US7613860B2 (en) * | 2007-07-02 | 2009-11-03 | International Business Machines Corporation | Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts |
US8539168B2 (en) * | 2009-06-26 | 2013-09-17 | Oracle America, Inc. | Concurrency control using slotted read-write locks |
US20120297256A1 (en) * | 2011-05-20 | 2012-11-22 | Qualcomm Incorporated | Large Ram Cache |
US9417998B2 (en) * | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9632927B2 (en) * | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US9727464B2 (en) * | 2014-11-20 | 2017-08-08 | International Business Machines Corporation | Nested cache coherency protocol in a tiered multi-node computer system |
US10235283B2 (en) * | 2017-03-14 | 2019-03-19 | International Business Machines Corporation | Techniques for supporting in-place updates with a log-structured array controller |
US10902903B2 (en) * | 2018-09-28 | 2021-01-26 | Apple Inc. | Purgeable memory mapped files |
-
2020
- 2020-03-04 US US16/809,058 patent/US11287987B2/en active Active
-
2021
- 2021-02-26 CN CN202110220976.XA patent/CN113360090B/zh active Active
-
2022
- 2022-03-24 US US17/703,818 patent/US11726669B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672151B1 (en) * | 2012-12-17 | 2017-06-06 | EMC IP Holding Company LLC | Block caching between a host device client and storage array in a shared storage environment |
CN109564548A (zh) * | 2016-06-24 | 2019-04-02 | 超威半导体公司 | 争用锁请求省略方案 |
CN110580229A (zh) * | 2018-06-07 | 2019-12-17 | 美光科技公司 | 扩展线宽存储器侧高速缓存***和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11726669B2 (en) | 2023-08-15 |
US20210278976A1 (en) | 2021-09-09 |
US11287987B2 (en) | 2022-03-29 |
CN113360090A (zh) | 2021-09-07 |
US20220283713A1 (en) | 2022-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693768B2 (en) | Power loss data protection in a memory sub-system | |
CN113010449A (zh) | 存储器子***中命令的有效处理 | |
US11561855B2 (en) | Error handling optimization in memory sub-system mapping | |
US11726669B2 (en) | Coherency locking schemes | |
US20230350798A1 (en) | Namespace management for memory sub-systems | |
US11797198B2 (en) | Memory instruction for memory tiers | |
CN115729854A (zh) | 存储器子***地址映射 | |
CN115705159A (zh) | 存储器子***中双字的智能交换和有效编码 | |
CN115048042A (zh) | 启用针对持久性存储器的存储器存取事务 | |
CN113360088B (zh) | 基于硬件的相干性检查技术 | |
CN113918479B (zh) | 用于并行独立线程的低位密度存储器高速缓存的方法及*** | |
US11221949B2 (en) | Multi state purgatory for media management for a memory subsystem | |
US11698856B2 (en) | Maintaining sequentiality for media management of a memory sub-system | |
US11868642B2 (en) | Managing trim commands in a memory sub-system | |
US11789663B2 (en) | Execution of commands addressed to a logical block | |
US20240069758A1 (en) | Shared memory snapshots | |
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 |