CN114586018A - 管理混合dimm的传送管道中的数据依赖性 - Google Patents
管理混合dimm的传送管道中的数据依赖性 Download PDFInfo
- Publication number
- CN114586018A CN114586018A CN202080072207.3A CN202080072207A CN114586018A CN 114586018 A CN114586018 A CN 114586018A CN 202080072207 A CN202080072207 A CN 202080072207A CN 114586018 A CN114586018 A CN 114586018A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- transfer
- sector
- access operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
- G11C14/0018—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
- G11C14/0045—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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
-
- 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/7207—Details relating to flash memory management management of metadata or control data
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开系统及方法,其包含:第一存储器组件;第二存储器组件,其具有比所述第一存储器组件更低的存取延时并充当用于所述第一存储器组件的高速缓存;及处理装置,其操作地耦合到所述第一及第二存储器组件。所述处理装置可执行包含以下的操作:接收数据存取操作;及响应于确定数据结构包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,确定是否计划执行将与所述物理地址相关联的所述数据从所述第一存储器组件复制到所述第二存储器组件的操作。所述处理装置可进一步执行包含以下的操作:确定延迟所述数据存取操作的执行的计划直到执行复制所述数据的所述操作为止。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及管理混合双列直插式存储器模块中的传送管道中的数据依赖性。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。举例来说,所述存储器装置可为非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统将数据存储于存储器装置处及从存储器装置检索数据。
附图说明
从下面给出的详细描述及从本公开的各种实施例的附图中,将更全面地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的用于管理传送管道中的数据依赖性的实例方法的流程图。
图3是根据本公开的一些实施例的用于管理传送管道中的数据依赖性的另一实例方法的流程图。
图4是根据本公开的一些实施例的用于执行与扇区逐出传送相关的操作的实例方法的流程图。
图5是本公开的实施方案可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及管理混合双列直插式存储器模块(DIMM)的传送管道中的数据依赖性。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合体。下面结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个组件的存储器子系统,所述组件例如存储数据的存储器装置。主机系统可提供待存储在存储器子系统处的数据,并且可请求待从存储器子系统检索的数据。
存储器子系统可包含非易失性及易失性存储器装置。非易失性存储器装置的一个实例是“与非”(NAND)存储器装置。另一实例是三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储单元的交叉点阵列。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。封装中的裸片可被指派到用于与存储器子系统控制器通信的一或多个通道。每一裸片可包含一组存储单元(“单元”)。单元是存储信息的电子电路。取决于单元类型,单元可存储一或多个二进制信息位,并具有与所存储的位的数目相关的各种逻辑状态。逻辑状态可由二进制值表示,例如“0”及“1”,或此类值的组合。非易失性存储器装置可包含三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列并且可结合可堆叠交叉网格数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相反,交叉点非易失性存储器可执行就地写入操作,其中可对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。此非易失性存储器装置可跨越裸片及通道对页面进行分组以形成管理单位(MU)。
存储器子系统可为混合DIMM,其包含单个DIMM封装中的第一类型的存储器装置(例如,3D交叉点媒体)及第二类型的存储器装置(例如,动态随机存取存储器(DRAM))。第一类型的存储器装置(例如,第一存储器类型)可具有大的存储容量但具有高存取延时,而第二类型的存储器装置(例如,第二存储器类型)具有较小量的易失性存储器但具有较低存取延时。高速缓存管理器可管理到及从第一类型的存储器装置及第二类型的存储器装置的数据的检索、存储及递送。与高速缓存管理器处理来自主机系统的数据存取命令(例如,读取存取命令及写入存取命令)的处理速度相比,第一类型的存储器装置(例如,3D交叉点)与第二类型的存储器装置(例如,DRAM)之间的数据传送需要更多时间来处理。
高速缓存管理器允许第二类型的存储器充当用于第一存储器类型的高速缓存。因此,如果高速缓存命中率高,那么第一存储器类型的高延时可由第二存储器类型的低延时掩盖。举例来说,DRAM存储器装置或其它易失性存储器可用作用于3D交叉点存储器装置或其它非易失性存储器装置(例如存储类存储器(SCM))的高速缓存存储器。主机系统可利用混合DIMM以在3D交叉点存储器处检索及存储数据。混合DIMM可通过总线接口(例如,DIMM连接器)与主机系统耦合。DIMM连接器可为混合DIMM与主机系统之间的同步或异步接口。当主机系统提供数据存取命令(例如读取存取命令)时,对应数据可从3D交叉点存储器或从混合DIMM的作为针对3D交叉点存储器的高速缓存存储器的另一存储器装置返回到主机系统。
与高速缓存管理器相比,DRAM的延迟也可能较长。举例来说,高速缓存查找可能需要几个循环(例如,4个循环)来确定应如何将数据从一个装置移动到另一装置。当将多个数据传送实施为数据管道时,吞吐量可甚至更高(例如,每一个时钟循环,如果不受组件的吞吐量的限制)。因此,在执行数据传送(例如,数据存取操作,例如读取操作、写入操作、删除操作等)的时间期间,可能存在几十个可用的查找结果,从而导致需要执行更多数据传送。
在常规存储器系统中,所有数据传送可按照由高速缓存查找结果确定的顺序(例如,先进先出,以下简称“FIFO”)排列(例如,排队),以防止与数据依赖性相关的问题。数据依赖性是其中数据传送或数据存取请求涉及由前一数据传送或数据存取请求操作的数据。举例来说,高速缓存管理器可接收针对物理地址的写入存取命令,随后是针对同一物理地址的读取存取命令。如果读取存取命令在写入存取命令之前执行,那么读取存取命令将读取不正确数据,因为写入存取命令尚未被处理。然而,按顺序排列数据传送可能是不合意的,因为并非所有数据传送都具有数据依赖性,且大多数数据传送可被无序发出及完成。无序完成数据存取命令可减少读取操作与写入操作之间的频繁切换所经历的延迟,以及在到不同块或裸片的未处理数据存取命令仍然在排队时切换到所述块或裸片所经历的延迟。
本公开的方面通过实施一组方案来管理数据依赖性来解决上述及其它缺陷。在一些实施例中,混合DIMM的DRAM可经构造为存储从非易失性存储器最近存取及/或高度存取的数据的数据高速缓存,使得此类数据可由主机系统快速存取。在一个实施例中,DRAM数据高速缓存可被分割成以不同数据大小管理的两个不同数据高速缓存。分区中的一者可包含利用较大粒度(较大大小)的页面高速缓存,且第二分区可包含利用较小粒度(较小大小)的扇区高速缓存。因为页面高速缓存利用较大数据大小,所以较少元数据用于管理数据(例如,针对整个页面仅具有单个有效位)。扇区高速缓存的较小数据大小使用较大量的元数据(例如,较大数目个有效位及脏位以及标记等),但可允许更精细地追踪主机存取数据,因此增加DRAM数据高速缓存中的整体高速缓存命中率。命中率可表示与可在DRAM数据高速缓存中找到的数据相关的存储器存取请求而不是与仅在非易失性存储器中可用的数据相关的存储器存取请求的分数或百分比。增加DRAM数据高速缓存中的命中率可提供与仅具有DRAM存储器组件的DIMM相当的性能,但在DIMM上存在非易失性存储器可额外地提供更大容量的存储器、更低成本及对持久性存储器的支持。
在说明性实例中,为在混合DIMM中提供相干存储器,可通过混合DIMM的高速缓存控制器来管理存储器存取操作以及从一个存储器组件到另一存储器组件的相互依赖的传送。特定来说,长延迟传送可能导致依赖性链,且因此依赖操作可被追踪且在其依赖的操作(例如,传送)之后执行。可使用一组方案来管理这些数据相依性以及提供改进DIMM性能。一组内容可寻址存储器(CAM)数据结构可用于追踪交叉点阵列存储器与DRAM之间所有未处理数据传送。所述组CAMS可包含至少扇区CAM及页面CAM。在执行扇区传送(即,DRAM的扇区高速缓存与交叉点阵列存储器之间的传送)之前,控制器可在页面CAM及扇区CAM中执行查找,以确定是否要在同一物理主机地址上执行任何未处理传送。如果存在命中,那么传送将不会在同一物理地址处的未处理传送完成之前开始。如果不存在针对到或从同一物理地址的未处理传送的命中,那么可立即执行传送,因为其不依赖于另一传送。
本公开的优点包含(但不限于)利用混合DIMM的主机系统的改进性能。举例来说,第一存储器组件与第二存储器组件之间的高速缓存操作可在混合DIMM内部。因此,当从交叉点阵列存储器组件传输数据以存储在DRAM数据高速缓存处时,数据的传输将不利用主机系统在接收及传输写入操作及读取操作时也使用的外部总线或接口。另外,尽管混合DIMM的存储器组件之间存在长延迟数据传送,但本公开可在混合DIMM中提供相干存储器。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类存储器装置的组合。
存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合体。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、启用物联网(IoT)的装置、嵌入式计算机(例如,包含在交通工具、工业装备或联网商业装置中的计算机),或包含存储器及处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文使用,“耦合到”或“与…耦合”一般是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中介组件),无论是有线的还是无线的,包含例如电连接、光学连接、磁连接等。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120例如使用存储器子系统110将数据写入存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM插槽接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用NVM快速(NVMe)接口以在存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时存取组件(例如,存储器装置130)。所述物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任一组合。易失性存储器装置(例如,存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格数据存取阵列基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相反,交叉点非易失性存储器可执行就地写入操作,其中可对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3D NAND)。
存储器装置130中的每一者可包含存储器单元的一或多个阵列。一种类型的存储器单元(例如单电平单元(SLC))可每单元存储一个位。其它类型的存储器单元(例如多电平单元(MLC)、三电平单元(TLC)、四电平单元(QLC)及五电平单元(PLC))可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含存储器单元的一或多个阵列,例如SLC、MLC、TLC、QLC、PLC或此类存储器单元的任一组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可被分组为可参考用于存储数据的存储器装置的逻辑单元的页面。对于一些类型的存储器(例如,NAND),页面可经分组以形成块。
尽管描述例如非易失性存储器单元的3D交叉点阵列及NAND型快闪存储器(例如,2D NAND、3D NAND)的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它硫属化物基存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻随机存取存储器(RRAM)、氧化物基RRAM(OxRAM)、“或非”(NOR)快闪存储器以及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为简单起见为控制器115)可与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据的操作以及其它此类操作。存储器子系统控制器115可包含例如一或多个集成电路及/或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适处理器。
存储器子系统控制器115可为处理装置,其包含经配置以执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的指令的嵌入式存储器。
在所说明实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的指令的嵌入式存储器。
在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。尽管图1中的实例存储器子系统110已经说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依赖于外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,并且可将命令或操作转换为指令或适当命令以实现对存储器装置130的期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理MU地址、物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换为命令指令以存取存储器装置130以及将与存储器装置130相关联的响应转换为用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130的高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器)。
在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115结合操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是被管理存储器装置,其包含在裸片上具有控制逻辑(例如,本地控制器132)的原始存储器装置130及用于在同一存储器装置封装内进行媒体管理的控制器(例如,存储器子系统控制器115)。被管理存储器装置的实例是被管理NAND(MNAND)装置。
在一个实施例中,存储器子系统110包含高速缓存管理器113,其可用于追踪及管理存储器装置130及存储器装置140中的数据。在一些实施例中,存储器子系统控制器115包含高速缓存管理器113的至少一部分。在一些实施例中,高速缓存管理器113是主机系统120、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含高速缓存管理器113的至少一部分并且经配置以执行本文描述的功能性。高速缓存管理器113可经由同步接口直接与存储器装置130及140通信。此外,存储器装置130与存储器装置140之间的数据传送可在存储器子系统110内完成而无需存取主机系统120。
存储器装置140可包含存储来自存储器装置130的数据的数据高速缓存,使得可更快地服务对数据的未来请求。高速缓存线是高速缓存存储的基本单元并且可含有多个字节及/或数据字。较小高速缓存线大小具有较高命中率,但需要比大高速缓存大小线更多的标记存储器。标记是针对一群组数据的唯一标识符,其可用于区分经映射存储器的不同区。
在一些实施例中,由存储器子系统110存储的所有数据可存储在存储器装置130处。存储在存储器装置130处的某些数据也可存储在存储器装置140的数据高速缓存处。举例来说,被确定由主机系统120更频繁地或更最近地存取的数据可存储在数据高速缓存处以实现更快的主机存取。当主机系统120提供对存储在数据高速缓存处的数据的读取请求(即,高速缓存命中)时,可从数据高速缓存中检索数据,而不是从存储器装置130检索数据。在数据高速缓存处检索数据的带宽或能力可快于在存储器装置130处检索数据的带宽或能力。
存储器装置140的数据高速缓存可被分割,并且包含用于存储小高速缓存线(以下称为“扇区”)的扇区高速缓存142及用于存储大高速缓存线(以下称为“页面”)的页面高速缓存144。扇区高速缓存142及页高速缓存144可以不同的数据大小进行管理。扇区高速缓存142可利用较小粒度(较小大小),且页面高速缓存144可利用较大粒度(较大大小)。在实例中,页面的大小可为2千字节,且扇区的大小可为64字节。页面可包含一或多个扇区。页面高速缓存144可需要较少元数据来管理数据(例如,针对整个页面仅具有单个有效位)利用较大数据大小。扇区高速缓存142的较小数据大小可能需要更大量的元数据(例如,更大数目个有效位及/或脏位、标记等)。页面高速缓存144中的页面可被组织成一或多个组。在实例中,页面组包含24个页面。类似地,扇区高速缓存142中的扇区可被组织成一或多个组。在实例中,扇区组包含16个扇区。
存储器装置130可以类似于扇区高速缓存的小粒度存储及管理数据。举例来说,数据可以数据有效负载大小存储在存储器装置130处,所述数据有效负载大小可包含扇区高速缓存142中的一或多个扇区。因此,可以数据有效负载大小(例如,一次一或多个扇区)在存储器装置130与扇区高速缓存142之间传送数据。
高速缓存管理器113可管理一组内容可寻址存储器(CAM)数据结构,其追踪存储器装置130与存储器装置140之间的所有未处理数据传送。高速缓存管理器113可包含CAM 152及页面CAM 154。高速缓存管理器113可使用扇区CAM 152及页面CAM 154以追踪所有未处理数据传送(例如,读取命令、写入命令、额外传送等)。举例来说,在高速缓存管理器113执行数据传送之前,高速缓存管理器113可查找扇区CAM 152,以检查是否存在到及/或从同一物理地址的任何未处理的数据传送。如果查找产生命中,那么高速缓存管理器113在命中数据传送完成之前不执行数据传送。如果查找是未命中,那么高速缓存管理器113可执行数据传送。
每一数据传送可与标识符相关联。举例来说,每一主机读命令可包含相关联读取标识符(RID),每一主机写入命令可包含相关联写入标识符(WID),并且维护高速缓存(例如,扇区高速缓存142、页面高速缓存144等)所需的每一额外传送可具有传送标识符(XID)。高速缓存管理器113可包含针对数据依赖性而追踪的一组传送类型。传送类型的实例可包含读取缓冲器传送(存储器装置140到读取缓冲器)、写入缓冲器传送(写入缓冲器到存储器装置140)、页面逐出传送(存储器装置140到存储器装置130页面)、扇区逐出传送(存储器装置140到存储器装置140扇区)、页面填充传送(存储器装置130到存储器装置140)及读取未命中传送(存储器装置130到存储器装置140及读取缓冲器)。除页面逐出传送之外,所列举传送类型中的每一者是扇区传送,且扇区传送可由扇区CAM 152追踪。作为页面传送的页面逐出传送可由页面CAM 154追踪。在传送启动时,由RID、WID或XID指示的地址可存储在其对应CAM(例如,扇区CAM 152及/或页面CAM 154)中直到传送完成。因此,任何未处理传送经由其相关联ID包含在CAM中。另外,如果页面的多于一个扇区一次包含在扇区CAM 152中(即,未处理),那么所述页面也可被添加到页面CAM 154。
当新传送开始时,高速缓存管理器113可搜索扇区CAM 152及页面CAM 154两者以确定在扇区CAM 152或页面CAM 154中是否已经存在对应于同一扇区地址或页面地址的传送。如果新传送是扇区传送,并且在扇区CAM 152中存在命中,那么可将新传送放置在扇区CAM 152中以便在更早的传送完成之后执行。以此方式,多个扇区传送可在扇区CAM 152中链接在一起以按照顺序执行。如果在页面CAM 154中存在命中,那么可将扇区的新传送放置在扇区CAM 152中,但仅在更早的页面传送完成之后执行。类似地,如果一组扇区的页面地址包含在页面CAM 154中,那么新传送可等待直到所述组扇区的传送完成之后再执行。
扇区CAM 152可具有有限大小,这可取决于所支持的未处理数据传送的最大数目。通过实例的方式,由扇区CAM 152支持的读取存取命令的最大数目可为256,并且由扇区CAM152支持的写入存取命令的最大数目可为64。如果所有传送可直接绑定到读取或写入存取命令,那么未处理传送的最大数目可更高(例如,320)。然而,任何数目个读取存取命令及写入存取命令可由扇区CAM 152支持。由于将数据从扇区高速缓存142移动到页面高速缓存144,以及由于逐出扇区群组的多个脏扇区(例如,具有脏位的扇区),一些数据传送可单独识别,并且可不直接绑定到读取存取命令或写入存取命令。脏位可用于指示扇区是否具有与非易失性存储器(例如,存储器装置130)不一致的数据。对于额外数据传送,可使用另一组数据传送ID(XID)。在实例中,可使用192个XID。因此,使用以上实例,数据传送ID的添加组可使数据传送ID的总数目达到512。因此,扇区CAM 152的深度可为512。
为追踪未处理的扇区传送,高速缓存管理器113可使用扇区CAM 152来记录未处理扇区传送的地址。当发出扇区传送时,高速缓存管理器113可执行扇区CAM 152查找。响应于扇区CAM 152查找为未命中,可在扇区CAM 152中由扇区传送的ID(例如,RID、WID及XID)索引的位置处记录所发出扇区传送的扇区地址。响应于扇区CAM 152查找为命中,所发出扇区传送的扇区地址可记录在扇区CAM 152中由扇区传送的ID索引的位置处,并且可使命中条目无效。当扇区传送完成时,高速缓存管理器113可通过使扇区传送的对应条目无效来从扇区CAM 152移除扇区传送。可针对每一个扇区传送使用扇区CAM 152两次(例如,一次用于查找,且一次用于写入)。如果有效位是扇区CAM条目的部分,那么也可使每一扇区传送无效。有效位可用于指示扇区是否有效(例如,与扇区相关联的高速缓存线是分配用于传送(无效)还是接收传送(有效))。扇区CAM 152可利用外部有效位,并且高速缓存管理器113可与扇区CAM查找及写入并行地执行扇区CAM无效化。在一些实施方案中,为改进扇区CAM 152查找性能,可使用两个或更多个扇区CAM。举例来说,第一扇区CAM可用于具有偶数扇区地址的扇区传送,且第二扇区CAM可用于具有奇数扇区地址的扇区传送。
除扇区传送之外,高速缓存管理器113可执行页面传送,以将页面从存储器装置140(例如,DRAM)移动到存储器装置130(例如,存储存储器)。为追踪未处理的页面传送,高速缓存管理器113可使用页面CAM 154来记录未处理页面传送的地址。
响应于高速缓存管理器113接收数据存取命令,高速缓存管理器113可在扇区高速缓存142及/或页面高速缓存144中执行高速缓存查找。如果高速缓存查找导致命中(例如,高速缓存查找命中),那么取决于数据存取命令是读取存取命令还是写入存取命令,可存在两种类型的传送。对于读取存取命令,高速缓存管理器113执行读取缓冲器传送,其中数据从存储器装置140高速缓存(例如,扇区高速缓存142、页面高速缓存144等)移动到读取缓冲器,其接着可由主机系统120读取。对于写入存取命令,高速缓存管理器113执行写入缓冲器传送,其中数据从写入缓冲器移动到存储器装置140高速缓存(例如,扇区高速缓存142或页面高速缓存144),所述写入缓冲器已由主机系统120用写入数据写入。
高速缓存管理器113可使用启发式算法来确定扇区群组应被移动到页面高速缓存144。在此情况下,额外传送可发生,其被定义为“页面填充”。对于页面填充,高速缓存管理器113可基于扇区行及/或页面行关系选择页面。高速缓存管理器113接着可逐出选定页面。从存储器装置130读取原始扇区群组的未命中扇区,以填充新形成的页面。高速缓存管理器113接着可执行额外传送。在一个实例中,高速缓存管理器113可执行页面逐出传送或清除传送,其中如果页面高速缓存线为脏(例如,具有脏位),那么可将整个页面高速缓存线移动到存储器装置130。在另一实例中,高速缓存管理器113可执行页面填充传送,其中将未命中扇区从存储器装置130读取到页面高速缓存线。
当存在高速缓存查找未命中时,高速缓存管理器113可逐出用于传入数据存取命令的基于扇区的高速缓存线。举例来说,逐出可基于LRU数据。LRU数据可包含LRU值,其可用于指示扇区高速缓存线最近是否由主机系统120最少存取。举例来说,当存取扇区时,可将针对所述扇区的LRU值设置为预定值(例如,24)。针对扇区高速缓存142中的每隔一个扇区的LRU值可减少一定量(例如,1)。如果经逐出模式是基于扇区的,那么经逐出扇区高速缓存线的所有脏扇区可移动到存储器装置130,或者如果逐出模式是基于页面的,那么可移动到页面高速缓存144。页面逐出模式包含选择页面高速缓存线以将其逐出以便为经逐出扇区腾出空间,并从存储器装置130读取在经逐出的扇区群组中当前未命中的扇区。通过将新扇区的物理地址与经逐出扇区的物理地址进行交换,可执行将数据从扇区高速缓存142移动到页面高速缓存144,因此不发生实际数据传送。
扇区逐出模式可包含以下数据传送:扇区逐出传送、写入缓冲器传送及读未命中传送。对于扇区逐出传送,高速缓存管理器113可将脏扇区移动到存储器装置130。对于写入缓冲器传送(响应于写入未命中),数据传送直到同一扇区的逐出传送完成后才开始。对于读取未命中传送,从存储器装置130读取未命中扇区,并将其传输到存储器装置140及读取缓冲器。此数据传送直到同一扇区的逐出传送完成后才开始。页面逐出模式可包含以下传送:页面填充传送、页面逐出传送或清除传送、写入缓冲器传送及读未命中传送。对于写入缓冲器传送及读未命中传送,数据传送直到页面逐出传送完成后才开始。
高速缓存管理器113可使用一组方案来管理数据依赖性并产生高性能。数据依赖性可包含读取/写入传送依赖性、扇区逐出传送依赖性、页面逐出传送依赖性及页面填充传送依赖性。
在读取及写入传送依赖性期间,读取传送可发生以从正由未处理写入传送命令写入的扇区读取数据。这可通过针对读取传送的扇区CAM查找命中来指示。写入传送及读取传送可转到不同数据路径,这导致写入传送在读取传送之后完成,即使写入传送发生在读取传送之前也如此。高速缓存管理器113可通过将读取传送放置在由扇区CAM查找命中ID索引的位置处的扇区块传送数据结构中来保持读取传送直到未处理写入传送完成。高速缓存管理器113可将相同或类似机制用于到正在由未处理读取传送读取的扇区的写入传送。
在扇区传送完成时,可在扇区块传送数据结构中检查其对应扇区块传送条目。如果存储在扇区块传送数据结构中的ID与当前传送的ID不同,那么高速缓存管理器113可解除阻止所存储传送。当扇区块传送具有有效传送时,其可通过旗标来指示,可检查所述旗标以查看是否应解除阻止另一传送。
关于扇区逐出传送依赖性,扇区群组可由属于同一页面并在基于扇区的标记存储器中共享同一标记的32个扇区组成。当高速缓存管理器113逐出扇区时,高速缓存管理器113可逐出整个扇区群组,这是因为标签可被替换。高速缓存管理器113可将所有脏扇区发送到存储器装置130,并且可移动每一扇区可作为相异且单独的扇区逐出传送。在将逐出扇区群组之前,至少可进行一次写入传送以致使至少一个扇区为脏。当扇区群组逐出请求在多个写入存取都未完成之前发生时,其可能不会由高速缓存管理器113执行并且可保持,这也意味着所有个别扇区逐出传送都可保持。为保持多个扇区逐出传送,可使用页面块传送数据结构。
在一些实施例中,多个未处理扇区传送共享同一页面地址。高速缓存管理器113可在页面CAM 154中创建页面以表示多个未处理扇区传送。所述页面可称为虚拟页面或“Vpage”(其不表示实际页面传送)。高速缓存管理器113可使用扇区计数数据结构来追踪由Vpage表示的未处理扇区传送的总数目。当发出Vpage的第一扇区传送时,页面CAM查找可为未命中,因此扇区传送的页面地址可写入页面CAM 154中由扇区的传送ID索引的位置处,并且由相同ID索引的扇区计数可初始化为1。当发出Vpage的第二扇区传送时,页面CAM查找可为命中,并且由命中ID索引的扇区计数可递增1。当属于Vpage的未处理扇区传送完成时,对应扇区计数可递减。高速缓存管理器113可知道扇区计数递减,因为每一扇区传送可在Vpage数据结构中记录其Vpage。Vpage与扇区计数一起可保护多个扇区传送,使得在其全部完成之前,相关联页面将不会被逐出。
当发出第一扇区逐出传送时,高速缓存管理器113可执行页面CAM 154查找。如果页面CAM 154查找为未命中,那么高速缓存管理器113可创建Vpage并初始化扇区计数以包含扇区逐出传送的总数目。在实例中,扇区逐出传送可使用第一扇区逐出传送ID作为其Vpage ID。后续扇区逐出传送不需要进行Vpage查找。如果查找为命中,那么高速缓存管理器113可执行与在查找为未命中时执行的步骤类似的步骤,其中高速缓存管理器113使命中Vpage的添加无效,并且可阻止所有扇区逐出传送。高速缓存管理器113可通过将第一扇区逐出传送ID放置在由命中ID索引的位置处的页面阻止的下一传送数据结构中来执行阻止。高速缓存管理器113还可将第一扇区逐出传送ID放置在由新创建的Vpage索引的位置处的另一数据结构(例如,页面阻止的列表尾部数据结构)中。对于第二扇区逐出传送,高速缓存管理器113可使用第一扇区逐出传送ID作为其Vpage ID,并且还可使用页面阻止的列表尾部数据结构来寻找页面阻止的列表的位置来放置其自己的传送ID,从而与第一扇区逐出传送形成链表。页面阻止的列表尾部也可用第二扇区逐出传送ID进行更新。高速缓存管理器113可像第二传送那样处理后续扇区逐出传送,使得所有扇区逐出传送形成链表,并且一旦第一扇区逐出传送被解除阻止就可逐个解除阻止,这可在其阻止Vpage的扇区计数被递减计数为零时发生。
高速缓存管理器113可阻止非逐出扇区传送,直到所有扇区逐出传送在扇区群组被逐出并且另一非逐出扇区传送到达而命中同一扇区群组时都完成为止。高速缓存管理器113可创建新Vpage,使命中条目无效,并将传入传送ID放置在由命中ID索引的位置处的页面阻止的下一传送数据结构中。高速缓存管理器113可设置与Vpage相关联的Vpage清除旗标以指示Vpage表示逐出。一旦创建新Vpage,第二非逐出扇区地址仍然可被阻止,并且可与命中清除Vpage(即,Vpage清除=1)的第一非逐出扇区传送形成阻止列表,除非其命中与第一非逐出扇区传送相同的扇区。为执行此,可使用数据结构将新创建的Vpage指示为被阻止(例如,由页面旗标数据结构阻止)。如果第二非逐出扇区命中由扇区CAM查找(即,命中)确定的第一非逐出扇区传送,那么第二非逐出扇区可放置在由命中ID索引的位置处的扇区阻止的下一传送数据结构中。如果第二非逐出扇区的扇区CAM查找是命中,但命中传送的Vpage不是第一非逐出扇区传送的ID,那么第二非逐出扇区仍然可被阻止,而不是放在由命中ID索引的位置处的扇区阻止的下一传送数据结构中。
关于页面逐出传送,为找到针对页面逐出传送的页面逐出地址,高速缓存管理器113可执行第二页面CAM查找,其可基于由第一查找的扇区高速缓存查找找到的扇区逐出地址来执行。如果页面CAM被划分为可同时查找的两个段,那么可避免第二页面CAM查找。经逐出扇区群组的无效扇区可在经逐出页面被写入存储存储器(例如,存储器装置130)的同时从存储存储器填充。它们为独立的,但针对页面CAM查找未命中的传入扇区传送可能依赖于页面逐出传送或清除传送。
高速缓存管理器113可用页面CAM查找来启动清除传送。如果查找为命中,那么高速缓存管理器113可在由页面逐出传送ID索引的位置处将条目插入页面CAM 154,并且可使命中条目无效。页面逐出传送ID也可放在由命中条目索引的位置处的页面阻止的下一传送数据结构中。由页面逐出传送索引的扇区计数可被设置为1。还将设置对应Vpage清除,以指示所插入条目是针对页面逐出的条目,使得命中此条目的任何传送可被阻止。如果查找为未命中,那么操作可与未命中时类似,区别在于可能不存在命中条目来使其无效。页面CAM113中用于清除传送的条目可表示实际页面传送而不是虚拟页面。如果对应扇区CAM查找为未命中,那么命中针对清除的页面的第一扇区传送可放在页面阻止的下一传送数据结构中。传送也可放在由命中ID索引的位置处的页面阻止的列表尾部数据结构中,使得如果对应扇区CAM查找为未命中,那命中清除页面的第二扇区传送可链接在一起。由命中ID索引的扇区计数也可递增。如果对应扇区CAM查找为命中,那么传入传送可通过将传入传送ID放在由命中传送索引位置处的扇区阻止的下一传送数据结构中来链接到命中传送。
关于页面填充依赖性传送,高速缓存管理器113可处理具有微小差异的类似页面逐出的页面填充。在实例中,页面逐出可由高速缓存查找未命中触发,而页面填充由高速缓存查找命中触发。在另一实例中,页面填充可通过使用扇区行以及基于扇区的标记的最低有效位而不是执行另一页面高速缓存查找(仍然可检查LRU(最近使用最少)来选择页面。在另一实例中,可在页面逐出传送之前进行扇区传送。在又一实例中,多个页面填充传送中的仅第一者执行页面CAM查找,并且可用传送的总数目更新扇区计数。后续扇区传送像扇区逐出传送那样不需要页面CAM查找。如果页面CAM查找为未命中,高速缓存管理器113可创建Vpage。如果页面CAM查找命中清除Vpage,Vpage也可被创建,但可由清除Vpage阻止。如果页面CAM查找命中非清除Vpage,那么将不创建Vpage,而是可进行、链接或阻止相关联扇区传送,这取决于命中Vpage是否被阻止以及是否存在扇区CAM查找命中。清理操作可类似于扇区逐出及页面逐出传送。
对于来自高速缓存管理器113的主机命令,可在第一循环中查找扇区CAM 152,在第二循环中写入扇区CAM 152,并在第四循环中使其无效(命中条目)。由于CAM有效位可在CAM自身的外部,所以扇区CAM 152可针对每一个主机命令使用两次。由于扇区CAM查找的峰值速率可为2个时钟循环,因此也可每2个时钟循环接受主机命令。页面填充及扇区逐出操作可在每一个循环发出命令,但所述命令可用于偶数及奇数扇区地址两者。尽管当第二命令到达时,第一命令可能已经完成扇区CAM更新,但扇区CAM管道仍然可能存在管道危险,因为尚未使命中条目无效。
对于来自高速缓存管理器113的主机命令,可在第一循环中查找页面CAM 154,在第四个循环中写入页面CAM 154并使其无效(命中条目,如果需要)。当与第一命令具有相同页面地址的第二命令在第三循环中到达时,页面CAM 154尚未由第一命令写入或更新,因此其可能看到潜在过时的CAM内容,且不应使用其查找。
在实施例中,高速缓存管理器113可使用管道前馈机制。在实例中,第一命令可获得关于是否在第四循环中更新页面CAM 154的查找结果。待采取的动作也可能发生在第四循环中。第二命令可使用第一命令的查找结果,并且可在知道其是第一命令之后的命令的情况下采取正确动作。与第一命令具有相同页面地址但与第二命令具有不同地址的后续命令可能不需要前馈,因为在命令到达时页面CAM内容已经更新。然而,如果第三命令具有与第二命令相同的地址,那么仍然需要前馈。为检测何时需要前馈,第一命令的地址可延迟2个时钟循环以与第二命令进行比较。如果其为匹配,那么可使用前馈。
在一些实施例中,存储器装置130、140可被组织为错误校正码(ECC)保护的码字(CW),其由多个扇区组成(例如,160字节CW中的两个扇区。多个码字(例如,页面的CW)可通过奇偶校验以独立磁盘冗余阵列(RAID)的方式进行保护。为写入扇区,扇区的对应码字及奇偶校验可由控制器115读取。控制器115可解码旧CW以提取旧扇区。组合的新扇区与另一旧扇区(将不被盖写的扇区)可被编码成新CW,其可与旧CW及旧奇偶校验一起用于产生新奇偶校验。为写入CW的两个扇区,由控制器115执行的操作可类似于写入单个扇区。这是因为可读取旧CW以产生新奇偶校验,且不需要提取旧扇区。因此,将对同一页面的所有写入分组在一起是有利的,因为奇偶校验仅需要被读取及写入一次,而不是多次,每一扇区写入一次。可存在涉及写入存储存储器的两种类型的传送(扇区逐出传送及页面逐出传送),两者都涉及写入属于同一页面的扇区。控制器115可被告知,两个逐出传送的个别扇区属于同一页面,且因此可合并。在实例中,可使用信号来指示扇区写入传送是属于同一页面的最后一个扇区写入,并且应触发针对最后一个扇区之前的所有扇区的实际存储存储器写入。当控制器115具有足够的缓冲来接受挂起的扇区写入直到最后一个扇区同时进行先前接收的扇区写入的实际写入时,写入合并可更好地改进性能。
图2是根据本公开的一些实施例的管理传送管道中的数据依赖性的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的高速缓存管理器113执行。尽管以特定序列或顺序展示,除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,并且所说明过程可以不同顺序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
在操作210处,处理逻辑从主机系统120接收数据存取操作。举例来说,存储器子系统控制器115可接收数据存取操作。存储器子系统控制器115可操作地耦合到第一存储器装置及第二存储器装置。第一存储器装置可为存储器装置130(例如,交叉点阵列),且第二存储器装置可为存储器装置140(例如,DRAM)。第二存储器装置可具有比第一存储其组件更低的存取延时,并且可充当用于第一存储器装置的高速缓存。在实例中,第二存储器装置可包含第一高速缓存组件及第二高速缓存组件。第一高速缓存组件(例如,页面高速缓存144)可利用比第二高速缓存组件(例如,扇区高速缓存142)更大的粒度。数据存取操作可为读取操作或写入操作。
在操作220处,处理逻辑确定在第二存储器组件中是否存在对应于数据存取操作的任何未处理数据传送。举例来说,处理逻辑可确定第一高速缓存组件及/或第二高速缓存组件是否包含与数据存取操作的地址相关联的任何未完成的或挂起的传送。未处理数据传送及其相关联物理地址可存储在扇区CAM 152、页面CAM 154或其组合中的至少一者中。
在操作230处,响应于确定不存在与数据存取操作的地址相关联的未处理数据传送(例如,高速缓存未命中),处理逻辑可执行数据存取操作。在操作240,响应于确定存在与数据存取操作的地址相关联的未处理数据传送(例如,高速缓存命中),处理逻辑确定是否正在执行或计划执行从第一存储器组件到第二存储器组件的未处理数据传送。
在操作250处,当未处理数据传送正被执行时,处理逻辑确定延迟对应于高速缓存命中的数据存取操作的执行的计划。在实例中,处理逻辑可通过将数据传送放置到由CAM(例如,扇区CAM 152,页面CAM 154)查找命中ID索引的位置处的扇区块传送数据结构中来延迟数据存取操作,直到完成未处理数据传送。在扇区传送完成时,可在扇区块传送数据结构中检查其对应扇区块传送条目。如果存储在扇区块传送数据结构中的ID与当前传送的ID不同,那么高速缓存管理器113可解除阻止所存储传送。当扇区块传送具有有效传送时,其可通过旗标来指示,可检查所述旗标以查看是否应解除阻止另一传送。
在操作260处,响应于未处理数据传送的执行,处理逻辑可计划数据存取操作的执行。在一些实施例中,在执行将数据从第一存储器组件复制到第二存储器组件的操作之前,处理逻辑可从第二存储器装置逐出具有第一粒度的旧区段。举例来说,逐出可基于LRU数据。
图3是根据本公开的一些实施例的管理传送管道中的数据依赖性的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的高速缓存管理器113执行。尽管以特定序列或顺序展示,除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,并且所说明过程可以不同顺序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
在操作310处,处理逻辑在存储器装置130处维护一组主机数据。在操作320处,处理逻辑在存储器装置140处维护主机数据的子集。存储器装置140可具有比存储器装置130更低的存取延时,并且可用作用于存储器装置130的高速缓存。存储器装置140维护针对主机数据的子集的第一区段的元数据,第一区段具有第一大小。在实例中,第一区段包含扇区。
在操作330处,处理逻辑接收数据操作。数据操作可为读取存取操作或写入存取操作。在操作340处,处理逻辑确定数据结构包含与数据存取操作的物理地址相关联的未处理数据传送的指示。在实例中,数据结构可为扇区CAM 152、页面CAM 154或其组合中的至少一者。在实例中,处理逻辑可执行扇区CAM 152或页面CAM 154中的至少一者的查找,以确定由数据操作存取的物理地址是否具有未处理数据传送。举例来说,数据结构可具有数个条目,其各自对应于未处理数据传送,且各自具有相关联物理地址。在一个实施例中,高速缓存管理器113可将数据操作的物理地址和与数据结构中的每一条目相关联的物理地址进行比较。当数据操作的物理地址和与数据结构中的条目中的至少一者相关联的物理地址匹配时,高速缓存管理器113可确定数据操作的物理地址具有未处理数据传送。
在操作350处,响应于确定计划执行将与物理地址相关联的至少一个第一区段从第一存储器组件复制到第二存储器组件的操作,处理逻辑可延迟数据存取操作的执行的计划,直到执行复制至少一个第一区段的操作为止。在实例中,处理逻辑可通过将数据传送放置到由CAM(例如,扇区CAM 152,页面CAM 154)查找命中ID索引的位置处的扇区块传送数据结构中来延迟数据存取操作,直到完成未处理数据传送。在扇区传送完成时,可在扇区块传送数据结构中检查其对应扇区块传送条目。如果存储在扇区块传送数据结构中的ID与当前传送的ID不同,那么高速缓存管理器113可解除阻止所存储传送。当扇区块传送具有有效传送时,其可通过旗标来指示,可检查所述旗标以查看是否应解除阻止另一传送。
在操作360处,响应于未处理数据传送的执行,处理逻辑可计划数据存取操作的执行。在一些实施例中,在执行将数据从第一存储器组件复制到第二存储器组件的操作之前,处理逻辑可从第二存储器装置逐出具有第一粒度的旧区段。举例来说,逐出可基于LRU数据。
图4是根据本公开的一些实施例的执行与扇区逐出传送相关的操作的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的高速缓存管理器113执行。尽管以特定序列或顺序展示,除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,并且所说明过程可以不同顺序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
在操作410处,处理逻辑可发出与扇区相关联的扇区逐出传送。在操作420处,处理逻辑可在页面CAM 154中执行针对扇区的查找。响应于页面CAM 154查找未命中,在操作430处,处理逻辑可产生Vpage并初始化扇区计数以确定扇区逐出传送的总数目。Vpage可表示多个未处理扇区传送,并且可使用扇区计数数据结构来追踪由Vpage表示的未处理扇区传送的总数目。在实例中,扇区逐出传送可使用第一扇区逐出传送ID作为其Vpage ID。
响应于页面CAM 154查找命中,在操作440处,处理逻辑可使命中Vpage无效,阻止所有扇区逐出传送,产生新Vpage,并初始化扇区计数以确定扇区逐出传送的总数目。在实例中,处理逻辑可将第一扇区逐出传送ID放置在由命中ID索引的位置处的页面阻止的下一传送数据结构中,以及在由新Vpage索引的位置处的另一数据结构(例如,页面阻止的列表尾部数据结构)中。对于第二扇区逐出传送,处理逻辑可使用第一扇区逐出传送ID作为其Vpage ID,并且还可使用页面阻止的列表尾部数据结构来寻找页面阻止的列表的位置以放置其自己的传送ID,从而与第一扇区逐出传送形成链表。页面阻止列表尾部也可用第二扇区逐出传送ID进行更新。处理逻辑可像第二传送一样处理后续扇区逐出传送,使得所有扇区逐出传送形成链表,并且一旦第一扇区逐出传送被解除阻止,就可逐个解除阻止,这可在其阻止Vpage的扇区计数被递减计数为零时发生。
图5说明计算机系统500的实例机器,在计算机系统500内可执行用于致使所述机器执行本文所论述的方法中的任一或多者的一组指令。在一些实施例中,计算机系统500可对应于主机系统(例如,图1的主机系统120),其包含或利用存储器子系统(例如,图1的存储器子系统110),或者可用以执行控制器的操作(例如,执行操作系统以执行对应于图1的高速缓存管理器113的操作)。在替代实施例中,所述机器可连接(例如,联网)到LAN、内联网、外联网及/或因特网中的其它机器。所述计算机可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器械、服务器、网络路由器、交换机或网桥或能够执行指定待由所述机器采取的动作的一组指令(循序或以其它方式)的任何机器。此外,虽然说明单个机器,但是术语“机器”也应被认为包含机器的任何集合,其个别地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任一者或多者。
实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储器装置518,其经由总线530彼此通信。处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或者是实施其它指令集的处理器,或者是实施指令集的组合的处理器。处理装置502也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似者。处理装置502经配置以执行用于执行本文所论述的操作及步骤的指令526。计算机系统500可进一步包含用于通过网络520进行通信的网络接口装置508。
数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),在其上存储体现本文所描述的方法或功能中的任一者或多者的一或多组指令526或软件。在由计算机系统500执行指令526期间,指令526也可全部或至少部分地驻留在主存储器504内及/或处理装置502内,主存储器504及处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518及/或主存储器504可对应于图1的存储器子系统110。
在一个实施例中,指令526包含指令以实施对应于图1的高速缓存管理器113的功能性。尽管在实例实施例中将机器可读存储媒体524展示为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应被认为包含能够存储或编码一组指令以供机器执行并且致使机器执行本公开的方法中的任一者或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已经根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。此处,算法通常被认为是导致所需结果的自洽操作序列。所述操作是需要对物理量的物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已经证明,有时主要出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数字或类似者是方便的。
然而,应牢记,所有这些及类似术语均应与适当物理量相关联并且仅仅是应用于这些量的方便标签。本公开可指代计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)数的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量。
本公开还涉及用于执行本文的操作的设备。此设备可经专门构造用于预期目的,或者其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文提出的算法及显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专用设备来执行所述方法是方便的。各种这些系统的结构将如下文描述中所阐述那样出现。另外,未参考任何特定编程语言来描述本公开。将了解,可使用各种编程语言来实施如本文所描述的本公开的教示。
本发明可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本发明的过程。机器可读媒体包含用于以由机器(例如,计算机)可读的形式存储信息的任何机制。举例来说,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在前述说明书中,已经参考本发明的特定实例实施例描述本发明的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛精神及范围的情况下,可对其进行各种修改。因此,说明书及图式应被认为是说明意义而不是限制意义的。
Claims (20)
1.一种系统,其包括:
第一存储器装置;
第二存储器装置,其耦合到所述第一存储器装置,其中所述第二存储器装置具有比所述第一存储器装置更低的存取延时,并且是用于所述第一存储器装置的高速缓存;及
处理装置,其操作地耦合到所述第一及第二存储器组件,以执行包括以下的操作:
接收数据存取操作;
响应于确定数据结构包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,确定是否计划执行将与所述物理地址相关联的所述数据从所述第一存储器组件复制到所述第二存储器组件的操作;及
响应于确定计划执行将与所述物理地址相关联的所述数据从所述第一存储器组件复制到所述第二存储器组件的操作,确定延迟所述数据存取操作的执行的计划直到执行将所述数据从所述第一存储器组件复制到所述第二存储器组件的所述操作为止。
2.根据权利要求1所述的系统,其中:
所述数据存取操作包括读取存取操作或写入存取操作中的至少一者;
所述第一存储器组件是交叉点阵列存储器组件;及
所述数据结构包括内容可寻址存储器(CAM)。
3.根据权利要求1所述的系统,其中所述处理装置进一步执行包括以下的操作:
响应于确定所述数据结构不包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,计划所述数据存取操作的执行。
4.根据权利要求1所述的系统,其中延迟所述数据存取操作的所述执行的所述计划包括将所述数据存取操作的指示存储在传送数据结构中。
5.根据权利要求4所述的系统,其中所述处理装置进一步执行包括以下的操作:
响应于将所述数据从所述第一存储器组件复制到所述第二存储器组件的所述操作的执行,通过使所述未处理数据传送的对应条目无效而从所述数据结构移除所述未处理数据传送的所述指示;
从所述传送数据结构检索所述数据存取操作;及
计划所述数据存取操作的执行。
6.根据权利要求1所述的系统,其中所述第二存储器装置以第一粒度存储数据的区段及以第二粒度存储数据的区段,其中所述第二粒度大于所述第一粒度。
7.根据权利要求6所述的系统,其中所述处理装置进一步执行包括以下的操作:
在执行将数据从所述第一存储器组件复制到所述第二存储器组件的所述操作之前,从所述第二存储器装置逐出具有第一粒度的旧区段。
8.一种方法,其包括:
在存储器子系统的第一存储器装置处维护一组主机数据;
在所述存储器子系统的第二存储器装置处维护主机数据的子集,其中所述第二存储器装置具有比所述第一存储器装置更低的存取延时,并且用作用于所述第一存储器装置的高速缓存,且其中所述第二存储器装置维护针对所述主机数据的所述子集的第一区段的元数据,所述第一区段具有第一大小;
接收数据存取操作;
确定数据结构包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示;及
响应于确定计划执行将与所述物理地址相关联的至少一个第一区段从所述第一存储器组件复制到所述第二存储器组件的操作;延迟所述数据存取操作的执行的计划,直到执行复制所述至少一个第一区段的所述操作为止。
9.根据权利要求8所述的方法,其中:
所述数据存取操作包括读取存取操作或写入存取操作中的至少一者;
所述第一存储器组件是交叉点阵列存储器组件;及
所述数据结构包括内容可寻址存储器(CAM)。
10.根据权利要求8所述的方法,其进一步包括:
响应于确定所述数据结构不包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,计划所述数据存取操作的执行。
11.根据权利要求8所述的方法,其中延迟所述数据存取操作的所述执行的所述计划包括将所述数据存取操作的指示存储在传送数据结构中。
12.根据权利要求11所述的方法,其进一步包括:
响应于将与所述物理地址相关联的至少一个第一区段从所述第一存储器组件复制到所述第二存储器组件的所述操作的执行,通过使所述未处理数据传送的对应条目无效而从所述数据结构移除所述未处理数据传送的所述指示;
从所述传送数据结构检索所述数据存取操作;及
计划所述数据存取操作的执行。
13.根据权利要求8所述的方法,其中所述第二存储器装置以第一粒度存储数据的区段及以第二粒度存储数据的区段,其中所述第二粒度大于所述第一粒度,且所述方法进一步包括在执行将所述至少一个第一区段从所述第一存储器组件复制到所述第二存储器组件的所述操作之前,从所述第二存储器装置逐出具有第一粒度的旧区段。
14.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由操作地耦合到第一存储器组件及第二存储器组件的处理装置执行时执行包括以下的操作:
接收数据存取操作;
响应于确定数据结构包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,确定是否计划执行将与所述物理地址相关联的所述数据从所述第一存储器组件复制到所述第二存储器组件的操作;及
响应于确定计划执行将与所述物理地址相关联的所述数据从所述第一存储器组件复制到所述第二存储器组件的操作,确定延迟所述数据存取操作的执行的计划直到执行将所述数据从所述第一存储器组件复制到所述第二存储器组件的所述操作为止。
15.根据权利要求14所述的非暂时性计算机可读存储媒体,其中:
所述数据存取操作包括读取存取操作或写入存取操作中的至少一者;
所述第一存储器组件是交叉点阵列存储器组件;及
所述数据结构包括内容可寻址存储器(CAM)。
16.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步执行包括以下的操作:
响应于确定所述数据结构不包含与所述数据存取操作的物理地址相关联的数据的未处理数据传送的指示,计划所述数据存取操作的执行。
17.根据权利要求14所述的非暂时性计算机可读存储媒体,其中延迟所述数据存取操作的所述执行的所述计划包括将所述数据存取操作的指示存储在传送数据结构中。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步执行包括以下的操作:
响应于将所述数据从所述第一存储器组件复制到所述第二存储器组件的所述操作的执行,通过使所述未处理数据传送的对应条目无效而从所述数据结构移除所述未处理数据传送的所述指示;
从所述传送数据结构检索所述数据存取操作;及
计划所述数据存取操作的执行。
19.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述第二存储器装置以第一粒度存储数据的区段及以第二粒度存储数据的区段,其中所述第二粒度大于所述第一粒度。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步执行包括以下的操作:
在执行将数据从所述第一存储器组件复制到所述第二存储器组件的所述操作之前,从所述第二存储器装置逐出具有第一粒度的旧区段。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962903202P | 2019-09-20 | 2019-09-20 | |
US62/903,202 | 2019-09-20 | ||
US17/003,336 | 2020-08-26 | ||
US17/003,336 US11494306B2 (en) | 2019-09-20 | 2020-08-26 | Managing data dependencies in a transfer pipeline of a hybrid dimm |
PCT/US2020/051391 WO2021055675A1 (en) | 2019-09-20 | 2020-09-18 | Managing data dependencies in a transfer pipeline of a hybrid dimm |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114586018A true CN114586018A (zh) | 2022-06-03 |
Family
ID=74880103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080072207.3A Pending CN114586018A (zh) | 2019-09-20 | 2020-09-18 | 管理混合dimm的传送管道中的数据依赖性 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11494306B2 (zh) |
KR (1) | KR20220065817A (zh) |
CN (1) | CN114586018A (zh) |
DE (1) | DE112020004407T5 (zh) |
WO (1) | WO2021055675A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022143243A (ja) * | 2021-03-17 | 2022-10-03 | キオクシア株式会社 | メモリシステムおよびその制御方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470445B1 (en) | 1999-09-07 | 2002-10-22 | Hewlett-Packard Company | Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write |
US7228402B2 (en) | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
US6925526B2 (en) | 2002-10-31 | 2005-08-02 | International Business Machines Corporation | Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device |
US7117309B2 (en) | 2003-04-14 | 2006-10-03 | Hewlett-Packard Development Company, L.P. | Method of detecting sequential workloads to increase host read throughput |
US20060026371A1 (en) | 2004-07-30 | 2006-02-02 | Chrysos George Z | Method and apparatus for implementing memory order models with order vectors |
JP4819369B2 (ja) | 2005-02-15 | 2011-11-24 | 株式会社日立製作所 | ストレージシステム |
US7467280B2 (en) | 2006-07-05 | 2008-12-16 | International Business Machines Corporation | Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US8161240B2 (en) | 2007-10-10 | 2012-04-17 | Apple Inc. | Cache management |
US8473684B2 (en) * | 2009-12-22 | 2013-06-25 | International Business Machines Corporation | Delayed replacement of cache entries |
JP5296041B2 (ja) | 2010-12-15 | 2013-09-25 | 株式会社東芝 | メモリシステムおよびメモリシステムの制御方法 |
US9122401B2 (en) | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
US9201796B2 (en) | 2012-09-27 | 2015-12-01 | Apple Inc. | System cache with speculative read engine |
US9292294B2 (en) | 2012-09-27 | 2016-03-22 | Intel Corporation | Detection of memory address aliasing and violations of data dependency relationships |
US20140089600A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with data pending state |
TWI470431B (zh) | 2013-06-14 | 2015-01-21 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US20150081981A1 (en) | 2013-09-19 | 2015-03-19 | Netapp, Inc. | Generating predictive cache statistics for various cache sizes |
US9292444B2 (en) | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9594644B2 (en) | 2014-09-19 | 2017-03-14 | Sybase, Inc. | Converting a serial transaction schedule to a parallel transaction schedule |
US10048883B2 (en) | 2014-09-29 | 2018-08-14 | Dell Products, Lp | Integrated page-sharing cache storing a single copy of data where the data is stored in two volumes and propagating changes to the data in the cache back to the two volumes via volume identifiers |
US9442663B2 (en) * | 2014-11-19 | 2016-09-13 | Sandisk Technologies Llc | Independent set/reset programming scheme |
US9529718B2 (en) | 2014-12-12 | 2016-12-27 | Advanced Micro Devices, Inc. | Batching modified blocks to the same dram page |
US10621104B2 (en) | 2015-09-25 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Variable cache for non-volatile memory |
US10623514B2 (en) * | 2015-10-13 | 2020-04-14 | Home Box Office, Inc. | Resource response expansion |
US10019174B2 (en) | 2015-10-27 | 2018-07-10 | Sandisk Technologies Llc | Read operation delay |
US20170371660A1 (en) | 2016-06-23 | 2017-12-28 | Microsoft Technology Licensing, Llc | Load-store queue for multiple processor cores |
US10452598B2 (en) | 2016-10-18 | 2019-10-22 | Micron Technology, Inc. | Apparatuses and methods for an operating system cache in a solid state device |
KR20180044635A (ko) | 2016-10-24 | 2018-05-03 | 삼성전자주식회사 | 저장 시스템 및 그것의 동작 방법 |
GB2563582B (en) | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
US10481913B2 (en) | 2017-08-16 | 2019-11-19 | Mediatek Singapore Pte. Ltd. | Token-based data dependency protection for memory access |
US10725783B2 (en) | 2018-11-02 | 2020-07-28 | International Business Machines Corporation | Splitting load hit store table for out-of-order processor |
US10990534B2 (en) | 2019-01-31 | 2021-04-27 | Intel Corporation | Device, system and method to facilitate disaster recovery for a multi-processor platform |
-
2020
- 2020-08-26 US US17/003,336 patent/US11494306B2/en active Active
- 2020-09-18 KR KR1020227012706A patent/KR20220065817A/ko unknown
- 2020-09-18 WO PCT/US2020/051391 patent/WO2021055675A1/en active Application Filing
- 2020-09-18 CN CN202080072207.3A patent/CN114586018A/zh active Pending
- 2020-09-18 DE DE112020004407.6T patent/DE112020004407T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112020004407T5 (de) | 2022-06-02 |
US20210089449A1 (en) | 2021-03-25 |
WO2021055675A1 (en) | 2021-03-25 |
KR20220065817A (ko) | 2022-05-20 |
US11494306B2 (en) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11119940B2 (en) | Sequential-write-based partitions in a logical-to-physical table cache | |
US11630778B2 (en) | Efficient processing of commands in a memory sub-system | |
JP2023514307A (ja) | 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化 | |
US11741013B2 (en) | Prefetch buffer of memory sub-system | |
US20220300195A1 (en) | Supporting multiple active regions in memory devices | |
CN115934582A (zh) | 冷数据识别 | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113934666B (zh) | 数据接口桥的预取 | |
US20240143511A1 (en) | Dynamically sized redundant write buffer with sector-based tracking | |
US11397683B2 (en) | Low latency cache for non-volatile memory in a hybrid DIMM | |
US11494306B2 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
US11599466B2 (en) | Sector-based tracking for a page cache | |
CN113961482A (zh) | 高速缓存存储器的增强型重复写入数据跟踪 | |
KR20220062399A (ko) | 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리 | |
US11392505B2 (en) | Rebuilding logical-to-physical address mapping with limited memory | |
CN115757205A (zh) | 在高速缓存存储器中合并写入请求 | |
CN115827689A (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 |