CN111052096A - 缓存行数据 - Google Patents
缓存行数据 Download PDFInfo
- Publication number
- CN111052096A CN111052096A CN201880055361.2A CN201880055361A CN111052096A CN 111052096 A CN111052096 A CN 111052096A CN 201880055361 A CN201880055361 A CN 201880055361A CN 111052096 A CN111052096 A CN 111052096A
- Authority
- CN
- China
- Prior art keywords
- cache
- request
- data
- controller
- cache controller
- 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.)
- Withdrawn
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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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
-
- 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/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/0879—Burst 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/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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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
- G06F2212/1021—Hit rate 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/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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/6028—Prefetching based on hints or prefetch instructions
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开包含与具有缓存行数据的存储器数据有关的设备及方法。实例设备可将数据存储于缓存中的多个缓存行中,其中所述多个行中的每一者包含可单独存取的多个数据块。
Description
技术领域
本公开大体上涉及存储器装置,且更确切地说,涉及具有缓存行数据的存储器系统的方法及设备。
背景技术
通常将存储装置提供为计算装置或其它电子装置中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性及非易失性存储器。易失性存储器可能需要电力来保存其数据(例如,用户数据、错误数据等)并且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM),及同步动态随机存取存储器(SDRAM)等等。非易失性存储器可通过当未被供电时保持所存储的数据而提供持久的数据,且可包含NAND快闪存储器、NOR快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)及电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)及磁阻随机存取存储器(MRAM)等等。
存储器系统可包含与系统的其它存储器(例如,可称为主存储器的DRAM、NAND、磁盘存储装置、固态驱动器(SSD)等)相比可更小及/或更快的缓存存储器。举例来说,缓存存储器可包括DRAM存储器。存储器系统可缓存数据以改进存储器系统的性能。因此,需要提供为存储器系统提供改进性能的缓存存储器。改进缓存存储器的等待时间及命中率是可提供存储器系统的改进性能的性能特征。
附图说明
图1是根据本公开的一或多个实施例的计算系统的框图,所述计算系统包含采用主机形式的设备及采用存储器系统形式的设备。
图2是根据本公开的多个实施例的采用存储器系统形式的设备的框图。
图3是根据本公开的多个实施例的包含多个缓存行的采用缓存形式的设备的框图。
图4是根据本公开的多个实施例的缓存行的图式。
具体实施方式
本公开包含与具有缓存行数据的存储器数据有关的设备及方法。实例设备可将数据存储于缓存中的多个缓存行中,其中多个行中的每一者包含可单独存取的多个数据块。
在多个实施例中,缓存行(例如,缓存项)可包含元数据、块元数据、标签信息及多个数据块。可在缓存行级别上管理缓存。举例来说,可在缓存行及/或块级别上进行数据传递动作确定。缓存控制器上的缓冲器可包含地址数据及/或与缓存中的数据相关联的元数据。缓存控制器可使用缓冲器中的地址数据及/或元数据来管理缓存。可在块级别上管理缓存行中的数据。举例来说,可读取缓存行中的数据块及/或将缓存行中的数据块写入到缓存行以服务于请求。缓存行可包含块元数据及数据块,并且缓存控制器可在块级别上管理缓存行。举例来说,除了其它操作之外,缓存控制器可读取、写入、写回及/或提取缓存行的一部分,所述部分包含少于缓存行上的总数据量的多个数据块。而且,一旦已在一或多个操作中将缓存行上的脏数据块中的每一者写回到后备存储装置中,就可认为缓存行已退出。
在多个实施例中,举例来说,缓存行经配置以将4KB数据存储在32个128B块中。实施例不限于特定缓存行及/或块大小可包含任何大小的缓存行及任何大小的块。缓存控制器可管理缓存行中的4KB数据,其对应于存储器装置(例如,后备存储装置)中的特定位置处的4KB数据。可在个别块级别上存取4KB缓存行中的32个128B数据块,使得在服务于请求时可读取及/或写入每个块。
响应于接收到数据请求(例如,读取数据及/或将数据写入到缓存),缓存控制器可存取缓存的缓存行中的多个数据块。缓存控制器可使用缓存控制器上的缓冲器管理请求,并且缓存控制器可通过返回缓存行中对应于请求的多个数据块的一部分来服务于所述请求。缓存控制器可经配置以发出命令,以使缓存在响应于缓存控制器确定请求为命中而接收所述请求时,返回缓存行中对应于请求的多个数据块的部分。缓存控制器可通过使用存储于缓存控制器上的缓冲器(例如,SRAM,以及其它类型的存储器)中的缓存的元数据来确定对应于请求的数据是命中还是未命中。
在多个实施例中,缓存控制器发布命令,以使缓存响应于缓存控制器确定请求为未命中而从存储器装置检索对应于请求的多个数据块的部分。缓存控制器可经配置以发出命令,以使缓存响应于确定请求为未命中,在接收到请求时将缓存行中的脏数据块写入到缓存行中的存储器装置。缓存控制器经配置以发出命令,以使缓存响应于确定请求为未命中而基于缓存行具有比缓存中的其它缓存行更少的脏块来选择缓存行。
缓存控制器可经配置以发出命令,以使缓存响应于确定请求为命中而将缓存行中的脏数据块写入到存储器装置。缓存控制器可经配置以发出命令,以使缓存响应于确定请求为命中替换缓存行中不与请求相关联且而在接收到请求时无效的数据块。
缓存控制器可优先化将不会从缓存行逐出的特定数据块。可基于将存取数据的频率及/或数据的类型来优先化数据块。在接收到对数据块的请求(例如,预提取)之前,缓存控制器可将数据块从存储器装置写入到缓存。可预提取来自存储器装置的一部分的数据块并将其存储于缓存中,以至少部分地填充对应于存储器装置的部分的缓存行。
在多个实施例中,当不服务于命令时,缓存控制器可将脏数据块写入到存储器装置。而且,缓存控制器可基于来自主机的命令来选择要保存在缓存中的数据块。主机可识别希望在缓存中具有的数据的部分,并且缓存控制器可将数据的那些部分固定在缓存中,使得其永远不会从缓存中逐出。
在本公开的以下详细描述中,参考形成本公开的部分的附图,且图中通过说明的方式示出了可实践本公开的一或多个实施例的方式。足够详细地描述这些实施例以使得本领域的普通技术人员能够实践本公开的实施例,且应理解,可利用其它实施例且可在不脱离本公开的范围的情况下进行工艺、电气及/或结构变化。如本文所使用,指定符“M”、“N”及“X”尤其关于附图中的附图标号指示可包含多个如此指定的特定特征。如本文所使用,“多个”特定事物可指此类事物中的一或多者(例如,多个存储器装置可指一或多个存储器装置)。
本文中的图遵循编号定则,其中第一一或多个数字对应于图号,且剩余的数字标识图式中的元件或组件。可通过使用类似数字来识别不同图之间的类似元件或组件。举例来说,120可参考图1中的元件“20”,且类似元件在图2中可标记为220。如将了解,可添加、交换及/或去除在本文中的各种实施例中展示的元件以便提供本公开的多个另外的实施例。
图1是根据本公开的一或多个实施例的计算系统100的功能框图,所述计算系统包含采用主机102形式的设备及采用存储器系统104形式的设备。如本文所使用,“设备”可指但不限于多种结构或结构的组合中的任何一种,例如,电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。在图1A所说明的实施例中,存储器系统104可包含控制器108、缓存控制器120、缓存110,及多个存储器装置111-1、……、111-X。缓存120及/或存储器装置111-1、……、111-X可包含易失性存储器及/或非易失性存储器。
如图1所说明,主机102可耦合到存储器系统104。在多个实施例中,存储器系统104可经由通道耦合到主机102。主机102可为膝上型计算机、个人计算机、数码相机、数字记录及回放装置、移动电话、PDA、存储卡读取器、接口集线器以及其它主机系统,并且可包含存储器存取装置,例如处理器。本领域普通技术人员将了解,“处理器”可为一或多个处理器,例如并行处理系统、多个协处理器等。
主机102可包含主机控制器用于与存储器系统104通信。主机102可经由通道将命令发送到存储器系统104。主机102可与存储器系统104及/或存储器系统104上的控制器108通信,以读取、写入及擦除数据以及其它操作。物理主机接口可提供用于在存储器系统104与具有物理主机接口的兼容受体的主机102之间传递控制、地址、数据及其它信号的接口。信号可例如经由通道在例如数据总线及/或地址总线的多个总线上在主机102与存储器系统104之间传送。
控制器108、主机控制器、缓存110上的控制器及/或控制器可包含控制电路,例如,硬件、固件及/或软件。在一或多个实施例中,控制器108、主机控制器、缓存110上的控制器及/或控制器可为专用集成电路(ASIC),其耦合到包含物理接口的印刷电路板。存储器系统可包含缓存控制器120及缓存110。缓存控制器120及缓存110可用于缓冲及/或缓存在执行读取命令及/或写入命令期间使用的数据。
缓存控制器120可包含缓冲器122。缓冲器122可包含易失性存储器(例如,SRAM)的多个阵列。缓冲器122可经配置以存储信号、地址信号(例如,读取及/或写入命令),及/或数据(例如,元数据及/或写入数据)。当执行命令时,缓冲器122可临时地存储信号及/或数据。缓存110可包含用作缓存的存储器单元(例如,DRAM存储器单元)的阵列,及可经配置以存储还存储于存储器装置中的数据。存储于缓存及存储器装置中的数据由控制器寻址,及可在执行命令期间位于缓存及/或存储器装置中。
存储器装置111-1、……、111-X可提供存储器系统的主存储器或可用作整个存储器系统104中的另外的存储器或存储装置。每个存储器装置111-1、……、111-X可包含存储器单元,例如,非易失性及/或易失性存储器单元的一或多个阵列。举例来说,阵列可为具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。举例来说,存储器装置可包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM及快闪存储器等等。
图1的实施例可包含为避免模糊本公开的实施例而未说明的另外的电路。举例来说,存储器系统104可包含地址电路,以锁存通过I/O电路在I/O连接上提供的地址信号。可通过行解码器及列解码器接收及解码地址信号以存取存储器装置111-1、……、111-X。本领域技术人员应了解,地址输入连接的数目可取决于存储器装置111-1、……、111-X的密度及架构。
图2是根据本公开的多个实施例的采用存储器系统形式的设备的框图。在图2中,存储器系统可经配置以缓存数据及服务于来自主机及/或存储器系统控制器的请求。存储器系统可包含具有缓冲器222的缓存控制器220。举例来说,缓冲器222可包含SRAM存储器。缓冲器222可包含关于缓存210中的数据的信息,包含用于缓存中的数据的元数据及/或地址信息。存储器系统可包含耦合到缓存控制器220的存储器装置211。存储器装置211可包含非易失性存储器阵列及/或易失性存储器阵列,及可充当存储器系统的后备存储。
缓存控制器220、缓存210及/或存储器装置211可各自包含控制器及/或控制电路(例如,硬件、固件,及/或软件),其可用于在缓存控制器220、缓存210及/或存储器装置211上执行命令。控制电路可从主机控制器、存储器系统控制器,及/或缓存控制器220接收命令。控制电路可经配置以执行命令,以在存储器装置211中读取及/或写入数据。
图3是根据本公开的多个实施例的包含多个缓存行的采用缓存形式的设备的框图。在图3中,缓存310可包含多个缓存项,例如,缓存行330-1、……、330-N。缓存行330-1、……、330-N可包含元数据332-1、……332-N、块元数据332-1、……332-N、标签数据336-1、……、336-N,及多个数据块338-1-1、……、338-M-N。每个缓存行330-1、……、330-N可包含用于对应缓存行的元数据332-1、……332-N。元数据332-1、……332-N还可存储于缓冲器(例如,图1中的缓冲器122)中及由缓存控制器用于管理缓存。举例来说,元数据332-1、……332-N可由缓存控制器使用及更新,以针对来自主机的请求做出命中/未命中确定。
每个缓存行可包含用于对应缓存行的块元数据332-1、……332-N。块元数据332-1、……332-N可用于执行命令。举例来说,可通过使用块元数据332-1、……332-N确定请求中的数据的部分是否有效及/或变脏来服务于对缓存行上的数据的一部分的请求,以确定数据的部分在缓存行中的位置,及/或从缓存行检索数据的部分。缓存控制器可存取夹具元数据332-1、……332-N,以服务于用于读取数据及/或将数据写入到缓存的请求。
每个缓存行可包含用于对应缓存行的数据块338-1-1、……、338-M-N。当服务于请求时,可由缓存控制器逐个块地存取数据块338-1-1、……、338-M-N中的数据块。举例来说,每个数据块338-1-1、……、338-M-N可包含128B数据,及缓存行可包含用于存储4KB数据的128个块。
图4是根据本公开的多个实施例的缓存行的图式。缓存行430可包含元数据432、块元数据434、标签数据436,及多个数据块438-1……、438-N。
响应于接收到数据请求(例如,读取数据及/或将数据写入到缓存),缓存控制器可存取缓存行430中的数据块438-1……、438-N。当接收到请求时,可读取缓存行中对应于请求的多个数据块438-1……、438-N的一部分,并将其返回到缓存控制器及/或主机。举例来说,可通过返回块438-2、438-3、438-4,及438-5来服务于数据请求。缓存控制器可通过使用存储于缓存控制器上的缓冲器中的缓存的元数据来确定数据块438-1……、438-N是否对应于请求。
在多个实施例中,缓存可写入变脏的数据块438-1……、438-N的一部分。而且,当选择要从缓存中逐出的缓存行时,可选择脏块最少的缓存行,使得当从缓存逐出缓存行时,将更少数据块写入到存储器装置。
缓存控制器发出命令,以使缓存响应于确定请求为命中而将缓存行中的脏数据块写入到存储器装置。缓存控制器可发出命令,以使缓存响应于确定请求为命中,替换缓存行中不与请求相关联且在接收到请求时无效的数据块。
缓存控制器可优先化将不会从缓存行逐出的特定数据块。可基于将存取数据的频率及/或数据的类型来优先化数据块。在接收到对数据块的请求(例如,预提取)之前,缓存控制器可将数据块从存储器装置写入到缓存。可预提取来自存储器装置的一部分的数据块并将其存储于缓存中,以至少部分地填充对应于存储器装置的部分的缓存行。
在多个实施例中,当不服务于命令时,缓存控制器可将脏数据块写入到存储器装置。而且,缓存控制器可基于来自主机的命令来选择数据块以保存在缓存中。主机可识别希望在缓存中具有的数据的部分,并且缓存控制器可将数据的那些部分固定在缓存中,使得其永远不会从缓存中逐出。
尽管已在本文中说明并描述了具体实施例,但本领域普通技术人员应了解,经计算以实现相同结果的布置可取代所展示的具体实施例。本公开意图覆盖本公开的各种实施例的修改或变化。应理解,以说明方式而非限制方式进行了以上描述。对于本领域的技术人员而言在审阅上述描述之后上述实施例的组合及本文中未具体描述的其它实施例将是显而易见的。本公开的各种实施例的范围包含其中使用以上结构及方法的其它应用。因此,本公开的各种实施例的范围应该参考所附权利要求书以及此权利要求书所授予的等效物的完整范围来确定。
在前述具体实施方式中,出于简化本公开的目的而将各种特征一起分组在单个实施例中。本公开的此方法不应被理解为反映本公开的所公开实施例必须比在每项权利要求中明确叙述那样使用更多特征的意图。相反,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,以下权利要求书特此并入到具体实施方式中,其中每一项权利要求独自作为单独实施例。
Claims (23)
1.一种设备,其包括:
缓存控制器;及
耦合到所述缓存控制器的缓存及存储器装置,其中所述缓存控制器经配置以发布命令以使所述缓存:
将数据存储于所述缓存中的多个缓存行中,其中所述多个缓存行中的每一者包含可单独存取的多个数据块。
2.根据权利要求1所述的设备,其中所述多个缓存行中的每一者包含元数据、块元数据、标签数据,及所述多个数据块。
3.根据权利要求1至2中任一项所述的设备,其中所述缓存控制器经配置以使所述缓存在执行命令时存取特定缓存项中的所述多个数据块的一部分。
4.根据权利要求1所述的设备,其中所述多个缓存行中的每一者包含使用所述缓存控制器上的缓冲器管理的元数据。
5.根据权利要求1、2及4中任一项所述的设备,其中所述多个缓存行中的每一者包含在执行命令时由所述缓存控制器管理及更新的块元数据。
6.一种设备,其包括:
缓存控制器;及
耦合到所述缓存控制器的缓存及存储器装置,其中所述缓存控制器经配置以发布命令以使所述缓存:
响应于接收到请求而存取所述缓存的缓存行中的多个数据块,其中所述缓存控制器使用所述缓存控制器上的缓冲器管理所述请求,并且所述缓存控制器通过返回所述缓存行中对应于所述请求的所述多个数据块的一部分来服务于所述请求。
7.根据权利要求6所述的设备,其中所述缓存控制器经配置以发布命令,以使所述缓存在接收所述请求时响应于缓存控制器确定所述请求为命中,返回所述缓存行中对应于所述请求的所述多个数据块的所述部分。
8.根据权利要求6至7中任一项所述的设备,其中所述缓存控制器经配置以发布命令,以使所述缓存响应于缓存控制器确定所述请求为未命中而从所述存储器装置检索对应于所述请求的所述多个数据块的所述部分。
9.一种设备,其包括:
缓存控制器;及
耦合到所述缓存控制器的缓存及存储器装置,其中所述缓存控制器经配置以:
从主机接收请求;
使用所述缓存控制器上的缓冲器管理所述请求;及
通过将数据块从所述缓存的缓存行返回到所述主机来服务于命令,其中所述数据块是来自所述缓存行的所述数据的一部分。
10.根据权利要求10所述的设备,其中所述缓存控制器经配置以优先化将不会从所述缓存行逐出的特定数据块。
11.根据权利要求9至10中任一项所述的设备,其中所述缓存控制器经配置以在接收到对所述数据块的请求之前,将所述数据块从所述存储器装置写入到所述缓存。
12.根据权利要求9所述的设备,其中所述缓存控制器经配置以在不服务于所述命令时将脏数据块写入到所述存储器装置。
13.根据权利要求9、10及12中任一项所述的设备,其中所述缓存控制器经配置以基于来自所述主机的命令来选择要保存在所述缓存中的数据块。
14.一种方法,其包括:
在缓存控制器处接收数据请求;
使用所述缓存控制器上的缓冲器确定与所述请求相关联的数据是否在缓存中;及
响应于确定所述请求为命中而通过从由所述缓冲器指示的缓存行返回多个数据块来服务于所述请求,其中所述多个数据块是所述缓存行上的所述数据的一部分。
15.根据权利要求14所述的方法,其进一步包含响应于确定所述请求为未命中而通过将与所述请求相关联的多个数据块从存储器装置写入到由所述缓冲器指示的缓存行来服务于所述请求。
16.根据权利要求15所述的方法,其进一步包含响应于确定所述请求为未命中而通过从由所述缓冲器指示的缓存行返回多个数据块来服务于所述请求。
17.根据权利要求14至16中任一项所述的方法,其进一步包含响应于确定所述请求是未命中而在接收到所述请求时,通过将所述缓存行中的多个脏数据块写入到存储器装置来服务于所述请求,所述存储器装置耦合到所述缓存行中的所述缓存及所述缓存控制器。
18.根据权利要求14至16中任一项所述的方法,其进一步包含响应于确定所述请求是未命中而通过基于所述缓存行比所述缓存中的其它缓存行具有更少脏块选择所述缓存行来服务于所述请求。
19.根据权利要求14至16中任一项所述的方法,其进一步包含响应于确定所述请求是命中通过替换所述缓存行中不与所述请求相关联且在接收到所述请求时无效的多个数据块来服务于所述请求。
20.根据权利要求14所述的方法,其中服务于所述请求包含更新与所述多个数据块相关联的块元数据。
21.根据权利要求14至16及20中任一项所述的方法,其进一步包含在执行命令时存取特定缓存项中的所述多个数据块的一部分。
22.根据权利要求14至16及20中任一项所述的方法,其进一步包含使用所述缓存控制器上的所述缓冲器来管理所述缓存中的所述数据。
23.根据权利要求14至16及20中任一项所述的方法,其进一步包含在执行命令时由所述缓存控制器管理块元数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/690,503 | 2017-08-30 | ||
US15/690,503 US11188234B2 (en) | 2017-08-30 | 2017-08-30 | Cache line data |
PCT/US2018/048296 WO2019046268A1 (en) | 2017-08-30 | 2018-08-28 | CACHE LINE DATA |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111052096A true CN111052096A (zh) | 2020-04-21 |
Family
ID=65437624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880055361.2A Withdrawn CN111052096A (zh) | 2017-08-30 | 2018-08-28 | 缓存行数据 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11188234B2 (zh) |
EP (1) | EP3676716A4 (zh) |
KR (1) | KR20200035311A (zh) |
CN (1) | CN111052096A (zh) |
WO (1) | WO2019046268A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN117609314A (zh) * | 2024-01-22 | 2024-02-27 | 北京象帝先计算技术有限公司 | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102456173B1 (ko) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20200104601A (ko) | 2019-02-27 | 2020-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR102406449B1 (ko) | 2020-06-25 | 2022-06-08 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11755476B2 (en) | 2020-04-13 | 2023-09-12 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
KR102435253B1 (ko) | 2020-06-30 | 2022-08-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR102495910B1 (ko) | 2020-04-13 | 2023-02-06 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
WO2022161619A1 (en) * | 2021-01-29 | 2022-08-04 | Huawei Technologies Co., Ltd. | A controller, a computing arrangement, and a method for increasing readhits in a multi-queue cache |
US20230195640A1 (en) * | 2021-12-21 | 2023-06-22 | Advanced Micro Devices, Inc. | Cache Associativity Allocation |
US11836088B2 (en) | 2021-12-21 | 2023-12-05 | Advanced Micro Devices, Inc. | Guided cache replacement |
US11829190B2 (en) | 2021-12-21 | 2023-11-28 | Advanced Micro Devices, Inc. | Data routing for efficient decompression of compressed data stored in a cache |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
US20240134801A1 (en) * | 2022-10-19 | 2024-04-25 | Samsung Electronics Co., Ltd. | Methods and system for efficient access to solid state drive |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238925A1 (en) * | 2008-10-02 | 2011-09-29 | Dan Robinson | Cache controller and method of operation |
US20120210066A1 (en) * | 2011-02-15 | 2012-08-16 | Fusion-Io, Inc. | Systems and methods for a file-level cache |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
US20150356019A1 (en) * | 2014-06-05 | 2015-12-10 | Arm Limited | Dynamic cache allocation policy adaptation in a data processing apparatus |
US20150378919A1 (en) * | 2014-06-30 | 2015-12-31 | Aravindh V. Anantaraman | Selective prefetching for a sectored cache |
CN105446773A (zh) * | 2015-11-18 | 2016-03-30 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 |
US20160246723A1 (en) * | 2015-02-23 | 2016-08-25 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
CN106104499A (zh) * | 2014-06-02 | 2016-11-09 | 美光科技公司 | 高速缓冲存储器架构 |
US20160350227A1 (en) * | 2014-12-14 | 2016-12-01 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542066A (en) | 1993-12-23 | 1996-07-30 | International Business Machines Corporation | Destaging modified data blocks from cache memory |
US6463506B1 (en) * | 2000-04-29 | 2002-10-08 | Hewlett-Packard Company | Arrangement of data within cache lines so that tags are first data received |
US7058789B2 (en) * | 2002-02-04 | 2006-06-06 | Intel Corporation | System and method for packet storage and retrieval |
US20030212865A1 (en) * | 2002-05-08 | 2003-11-13 | Hicken Michael S. | Method and apparatus for flushing write cache data |
US20070079070A1 (en) | 2005-09-30 | 2007-04-05 | Arm Limited | Cache controller |
US8200917B2 (en) | 2007-09-26 | 2012-06-12 | Qualcomm Incorporated | Multi-media processor cache with cache line locking and unlocking |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US8352646B2 (en) | 2010-12-16 | 2013-01-08 | International Business Machines Corporation | Direct access to cache memory |
US9330007B2 (en) * | 2012-11-30 | 2016-05-03 | Dell Products, Lp | Systems and methods for dynamic optimization of flash cache in storage devices |
US9448941B1 (en) | 2012-12-31 | 2016-09-20 | Emc Corporation | System and method for cache management |
CN105190569A (zh) | 2013-06-25 | 2015-12-23 | 惠普发展公司,有限责任合伙企业 | 从缓存存储器清除脏数据 |
US9864698B2 (en) | 2013-11-04 | 2018-01-09 | International Business Machines Corporation | Resolving cache lookup of large pages with variable granularity |
JP2017010396A (ja) | 2015-06-24 | 2017-01-12 | 富士通株式会社 | ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム |
-
2017
- 2017-08-30 US US15/690,503 patent/US11188234B2/en active Active
-
2018
- 2018-08-28 EP EP18850993.9A patent/EP3676716A4/en not_active Withdrawn
- 2018-08-28 KR KR1020207007517A patent/KR20200035311A/ko not_active IP Right Cessation
- 2018-08-28 WO PCT/US2018/048296 patent/WO2019046268A1/en unknown
- 2018-08-28 CN CN201880055361.2A patent/CN111052096A/zh not_active Withdrawn
-
2021
- 2021-11-29 US US17/537,227 patent/US11822790B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238925A1 (en) * | 2008-10-02 | 2011-09-29 | Dan Robinson | Cache controller and method of operation |
US20120210066A1 (en) * | 2011-02-15 | 2012-08-16 | Fusion-Io, Inc. | Systems and methods for a file-level cache |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
CN106104499A (zh) * | 2014-06-02 | 2016-11-09 | 美光科技公司 | 高速缓冲存储器架构 |
US20150356019A1 (en) * | 2014-06-05 | 2015-12-10 | Arm Limited | Dynamic cache allocation policy adaptation in a data processing apparatus |
US20150378919A1 (en) * | 2014-06-30 | 2015-12-31 | Aravindh V. Anantaraman | Selective prefetching for a sectored cache |
US20160350227A1 (en) * | 2014-12-14 | 2016-12-01 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
US20160246723A1 (en) * | 2015-02-23 | 2016-08-25 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
CN105446773A (zh) * | 2015-11-18 | 2016-03-30 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 |
Non-Patent Citations (2)
Title |
---|
BINGCHAO LI等: "Elastic-Cache GPU Cache Architecture for Efficient Fine- and Coarse-Grained Cache-Line Management" * |
张剑飞;: "多处理器共享缓存设计与实现" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538677A (zh) * | 2020-04-26 | 2020-08-14 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN117609314A (zh) * | 2024-01-22 | 2024-02-27 | 北京象帝先计算技术有限公司 | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US11188234B2 (en) | 2021-11-30 |
US20190065072A1 (en) | 2019-02-28 |
US11822790B2 (en) | 2023-11-21 |
KR20200035311A (ko) | 2020-04-02 |
EP3676716A4 (en) | 2021-06-02 |
EP3676716A1 (en) | 2020-07-08 |
US20220083236A1 (en) | 2022-03-17 |
WO2019046268A1 (en) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822790B2 (en) | Cache line data | |
US11055230B2 (en) | Logical to physical mapping | |
US20180129424A1 (en) | Data relocation in hybrid memory | |
US9195579B2 (en) | Page replacement method and memory system using the same | |
KR20170012457A (ko) | 캐시 구조 | |
US11210011B2 (en) | Memory system data management | |
US11853224B2 (en) | Cache filter | |
US8521946B2 (en) | Semiconductor disk devices and related methods of randomly accessing data | |
US11126624B2 (en) | Trie search engine | |
US11995314B2 (en) | Memory management | |
EP3676715B1 (en) | Cache buffer |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200421 |