掌桥专利:专业的专利平台
掌桥专利
首页

高速缓存媒体中的动态存取粒度

文献发布时间:2023-06-19 11:22:42


高速缓存媒体中的动态存取粒度

技术领域

本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及高速缓存媒体中的动态存取粒度。

背景技术

存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。

发明内容

在一个方面中,本申请案提供一种方法,其包括:接收包括待存取数据的地址的存储器存取请求;基于所述待存取数据的所述地址,确定所述待存取数据的存取粒度;响应于确定所述待存取数据具有第一存取粒度,产生与所述第一存取粒度相关联的第一高速缓存行元数据;响应于确定所述待存取数据具有第二存取粒度,产生与所述第二存取粒度相关联的第二高速缓存行元数据;和将所述第一高速缓存行元数据和所述第二高速缓存行元数据存储于单个高速缓冲存储器组件中。

在另一方面中,本申请案另外提供一种系统,其包括:存储器组件;处理装置,其以操作方式耦合到所述存储器组件,所述处理装置用于进行以下操作:接收包括待存取数据的地址的存储器存取请求;确定所述待存取数据的存取粒度;基于所述地址,识别包括所述待存取数据的高速缓存行和与所述高速缓存行相关联的高速缓存行元数据;和基于所述待存取数据的所述存取粒度和所述高速缓存行元数据的一或多个状态位,确定所述高速缓存行的状态。

在另一方面中,本申请案另外提供一种包括指令的非暂时性计算机可读存储媒体,所述指令当由处理装置执行时致使所述处理装置执行包括以下操作的操作:接收包括待存取数据的地址的存储器存取请求;基于所述待存取数据的所述地址,确定所述待存取数据的存取粒度;响应于确定所述待存取数据具有第一存取粒度,产生与所述第一存取粒度相关联的第一高速缓存行元数据;响应于确定所述待存取数据具有第二存取粒度,产生与所述第二存取粒度相关联的第二高速缓存行元数据;和将所述第一高速缓存行元数据和所述第二高速缓存行元数据存储于单个高速缓冲存储器组件中。

附图说明

根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。

图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。

图2是根据本公开的一些实施例的动态地产生用于多个存取粒度的高速缓存行元数据的实例方法的流程图。

图3是根据本公开的一些实施例的以不同存取粒度存取高速缓存行的实例方法的流程图。

图4说明根据本公开的一些实施例的使用两个不同数据存取粒度的系统。

图5A说明根据本公开的一些实施例的高速缓存媒体的实例数据存取粒度。

图5B说明根据本公开的一些实施例的用于不同存取粒度的实例高速缓存行元数据。

图5C说明根据本公开的一些实施例的实例高速缓存行元数据。

图5D说明根据本公开的一些实施例的实例高速缓存行元数据。

图6说明根据本公开的一些实施例的具有用于不同数据存取粒度的分区的高速缓存媒体。

图7是其中可操作本公开的实施例的实例计算机系统的框图。

具体实施方式

本公开的方面针对于存储器子系统的高速缓存媒体中的动态数据存取粒度。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(例如,存储数据的存储器装置)的存储器子系统。主机系统可以提供数据以存储在存储器子系统处并且可以请求从存储器子系统检索数据。

主机系统的多个处理组件可存取存储器模块。在一些情况下,处理组件(例如,中央处理单元(CPU)或图形处理单元(GPU))可具有不同的最优或偏好数据存取粒度。举例来说,CPU可最优地在大小为64字节的片段中从存储器检索数据,而GPU可最优地在大小为32字节的片段中从存储器检索数据。可在其中具有不同存取粒度的两个处理组件正在从同一存储器模块存取数据的情形下产生存取粒度管理冲突。常规存储器模块不直接将多个存取粒度提供给主机系统。在常规存储器模块中,如果两个处理组件使用不同存取粒度,那么存储器模块将数据在单个大小的片段中提供给主机系统。主机系统的组件接着必须识别不同存取粒度并且根据每一处理组件的正确存取粒度来格式化数据片段。因此,除非主机系统包含额外组件和/或逻辑,否则常规存储器模块不支持多个存取粒度。额外组件和/或逻辑可增加存取等待时间,增加成本,并且减少主机系统内(例如处理器上)的可用空间。

本公开的方面通过提供存储器子系统的高速缓存媒体中的动态存取粒度来解决上述和其它缺陷。高速缓冲存储器组件可通过根据每一对应高速缓存行的存取粒度来调整高速缓存行元数据的状态位,支持具有不同存取粒度的高速缓存行。取决于特定高速缓存行的存取粒度,高速缓存控制器可管理高速缓存行元数据的某些状态位以识别高速缓存行内的扇区的状态。举例来说,高速缓存行元数据可包含模式位,其可指示高速缓存行的存取粒度。根据模式位,并且因此根据存取粒度,高速缓存控制器可使用高速缓存行元数据的特定状态位管理高速缓存行。高速缓存行可包含相同数目个状态位且高速缓存控制器可使用模式位或粒度确定使用哪个状态位管理高速缓存行。举例来说,如果存取粒度是较小大小,那么高速缓存控制器可管理高速缓存行元数据的每一状态位。举例来说,如果存取粒度是较大大小,那么高速缓存控制器可管理刚好一半的状态位。替代地,如果不使用模式位,那么高速缓存控制器可设置高速缓存行元数据的每一位而不管存取粒度为何。由于在较大存取粒度高速缓存行中存在较少扇区且可用状态位的数目是恒定的,因此高速缓存控制器可设置用于每一扇区的更多状态位。举例来说,2个状态位可用于32字节扇区,而4个状态位可用于64字节扇区。在另一实例中,高速缓冲存储器组件可物理上划分成各自以单个存取粒度存储高速缓存行的单独分区。

因此,提供存储器子系统内的动态存取粒度的能力可减少包含使用不同数据粒度的装置的主机系统的数据存取等待时间。另外,存储器子系统中的动态存取粒度可减少提供多个存取粒度所需的开销并且可提供跨使用单个存取粒度或多个存取粒度的多个不同主机装置的兼容性。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或这类的组合。

存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储装置(UFS)驱动器以及硬盘驱动器(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)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可提供接口以用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号。

存储器装置可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。

尽管描述了例如3D交叉点型和NAND型快闪存储器等非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、“或非”(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM),以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。

一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)和四层级单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为页,页可指用以存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可分组以形成块。

存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它这类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。

存储器子系统控制器115可包含处理器(处理装置)117,其被配置成执行存储在本地存储器119中的指令。在所说明的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流和例程的指令,包含处置存储器子系统110与主机系统120之间的通信。

在一些实施例中,本地存储器119可以包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110可能不包含存储器子系统控制器115,且可改为依靠(例如由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。

一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可以包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。

在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130可以是受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。

存储器子系统110包含存取粒度管理组件113,其可用以提供高速缓存媒体中的动态存取粒度。在一些实施例中,存储器子系统控制器115包含存取粒度管理组件113的至少一部分。举例来说,存储器子系统控制器115可包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,存取粒度管理组件113是主机系统110、应用程序或操作系统的部分。

存取粒度管理组件113可产生包含与高速缓冲存储器组件中的高速缓存行的扇区相关联的状态位的高速缓存行元数据。存取粒度管理组件113可根据相关联高速缓存行的存取粒度,管理高速缓存行的扇区的状态位。存取粒度管理组件113可另外存取并读取高速缓存行元数据的状态位以确定高速缓存行的扇区的状态。下文描述关于存取粒度管理组件113的操作的另外细节。

图2是根据本公开的一些实施例的产生用于多个存取粒度的高速缓存行元数据的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的存取粒度管理组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。另外,在各种实施例中可以省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。

在操作210处,存储器子系统的处理逻辑接收包含待存取数据的地址的存储器存取请求。所述地址可识别例如3DXP、快闪存储器、DRAM或任何其它存储器或存储媒体等后端存储器中的方位。存储器存取请求可为读取操作或写入操作或任何其它数据操作。另外,待存取数据可存储于后端存储器以及与后端存储器相比具有较低存取等待时间的单独高速缓冲存储器组件中。

在操作220处,存储器子系统的处理逻辑基于待存取数据的地址,确定待存取数据的存取粒度。处理逻辑可将待存取数据的地址与地址范围或存储器的区进行比较,从而识别不同存取粒度。举例来说,处理逻辑可查询查找表、地址映射、寄存器集等以确定地址处于存储器的哪个区内。存储器的一个区可与一个存取粒度(例如,用于CPU)相关联且存储器的另一区可与另一存取粒度(例如,用于GPU)相关联。

在操作230处,处理逻辑响应于确定待存取数据具有第一存取粒度,产生与第一存取粒度相关联的第一高速缓存行元数据。第一高速缓存行元数据可包含指示待存取数据的高速缓存行是否为脏和/或有效的一或多个位。如果待存取数据具有第一存取粒度,那么处理逻辑可管理高速缓存行元数据中所定义数目个状态位以指示有效状态和脏状态。举例来说,第一存取粒度可为32字节,且对于高速缓冲存储器组件中的每一32字节扇区,高速缓存行元数据的一个状态位可指示脏且高速缓存行元数据的一个状态位可指示有效。因此,当从具有第一粒度的高速缓冲存储器组件存取数据时,处理逻辑可使用一个脏位和一个有效位确定高速缓存行的状态。

在操作240处,处理逻辑响应于确定待存取数据具有第二存取粒度,产生与第二存取粒度相关联的第二高速缓存行元数据。第二高速缓存行元数据可与第一高速缓存行元数据包含相同数目个状态位,但处理逻辑可根据第二存取粒度以不同方式设置和解译第二高速缓存行元数据的位。举例来说,第二存取粒度可为64字节(即,两个连续32字节区段)且处理逻辑可相应地设置第二高速缓存行元数据的状态位。

在一个实例中,处理逻辑可识别高速缓存行元数据的模式位。模式位可指示高速缓存行的存取粒度以及使用高速缓存行元数据的哪个状态位用于高速缓存行的存取粒度。举例来说,设置为1的模式位可指示第一存取粒度且设置为0的模式位可指示第二存取粒度。

在另一实例中,在任何数据存取之前,处理逻辑可使用地址映射或查找表确定待存取数据的高速缓存行的存取粒度。接着,处理逻辑可根据识别的存取粒度,管理高速缓存行元数据的状态位。举例来说,对于32字节存取粒度,处理逻辑可使用位集用于每一32字节数据扇区。对于64字节存取粒度,处理逻辑可使用两对状态位用于64字节数据扇区,其中所述两对状态位设置为相同的(即,64字节扇区中的每一32字节部分可设置为相同的)。

在又另一实例中,高速缓冲存储器组件可物理上分割成具有不同存取粒度的单独高速缓冲存储器。每一分区可另外包含其自身的对应高速缓存行元数据。因此,处理逻辑可在存取粒度之间切换而无需额外状态位。

在操作250处,处理逻辑将第一高速缓存行元数据和第二高速缓存行元数据存储于单个高速缓冲存储器组件。虽然第一高速缓存行元数据和第二高速缓存行元数据与经高速缓存数据的不同存取粒度相关联,但由于处理逻辑识别存取粒度并且基于所述存取粒度确定高速缓存行的状态,因此处理逻辑可存储和存取来自同一高速缓冲存储器组件的相关联数据。

图3是根据本公开的一些实施例的以不同存取粒度存取高速缓存行的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的存取粒度管理组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序进行,且一些过程可并行进行。另外,在各种实施例中可以省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。

在操作310处,存储器子系统的处理逻辑接收包含待存取数据的地址的存储器存取请求。所述地址可识别例如3DXP、快闪存储器、DRAM或任何其它存储器或存储媒体等后端存储器中的方位。存储器存取请求可为读取操作或写入操作或任何其它数据操作。另外,待存取数据可存储于后端存储器以及与后端存储器相比具有较低存取等待时间的单独高速缓冲存储器组件中。

在操作320处,处理逻辑确定待存取数据的存取粒度。为确定待存取数据的存取粒度,处理逻辑可将数据地址与两个或更多个相异的存储器地址范围进行比较。每一存储器地址范围可以特定存取粒度存储数据。举例来说,第一存储器地址范围可与可由CPU存取的数据相关联,而第二存储器地址范围可与可由GPU存取的数据相关联。可由CPU存取的数据可具有一个存取粒度(例如,64字节),而可由GPU存取的数据可具有不同存取粒度(例如,32字节)。存储器范围和存取粒度之间的关联可存储于例如查找表或地址映射表的数据结构中。

在操作330处,处理逻辑基于待存取数据的地址,识别待存取数据的高速缓存行和与高速缓存行相关联的高速缓存行元数据。待存取数据的高速缓存行可包含来自后端媒体的地址的数据,所述数据暂时存储在高速缓冲存储器组件处。高速缓冲存储器组件中的高速缓存行可通过从主机系统接收的写入操作进行修改并且可响应于读取操作而转发到主机系统。为识别高速缓存行和高速缓存行元数据,处理逻辑可将从主机系统的存储器存取请求接收的待存取数据的地址与包含在高速缓存行元数据中的元数据标记进行匹配。在一个实例中,处理逻辑可仅使用地址的一部分识别高速缓存行元数据和对应高速缓存行。

与高速缓存行相关联的高速缓存行元数据可包含指示高速缓存行的状态的元数据、关于高速缓存行的存取信息,以及与高速缓存行相关的任何其它数据。高速缓存行的状态元数据可至少包含脏位和有效位。脏位可指示高速缓存行已被修改且因此含有与后端媒体中的数据不一致的数据。当高速缓存行被指示为脏时,可在从高速缓冲存储器组件移除高速缓存行之前,将高速缓存行写回到后端媒体以确保所述修改保持在所存储的数据中。有效位可指示高速缓存行含有有效数据并且可用于数据存取操作中。

在操作340处,处理逻辑基于待存取数据的存取粒度和高速缓存行元数据的一或多个位,确定高速缓存行的状态。处理逻辑可识别将使用高速缓存行元数据的哪个位基于数据的存取粒度确定高速缓存行的状态。存取粒度可指示高速缓存行元数据的哪些位以及多少个位指示高速缓存行的状态。

在一个实例中,处理逻辑可识别高速缓存行元数据的模式位。模式位可指示高速缓存行的存取粒度以及使用高速缓存行元数据的哪个状态位用于高速缓存行的存取粒度。举例来说,设置为1的模式位可指示第一存取粒度且设置为0的模式位可指示第二存取粒度。

在另一实例中,在任何数据存取之前,处理逻辑可使用地址映射或查找表确定待存取数据的高速缓存行的存取粒度。接着,处理逻辑可根据识别的存取粒度,管理高速缓存行元数据的状态位。举例来说,对于32字节存取粒度,处理逻辑可使用位集用于每一32字节数据扇区。对于64字节存取粒度,处理逻辑可使用两对状态位用于64字节数据扇区,其中所述两对状态位设置为相同的(即,64字节扇区中的每一32字节部分可设置为相同的)。

在又另一实例中,高速缓冲存储器组件可物理上分割成具有不同存取粒度的单独高速缓冲存储器。每一分区可另外包含其自身的对应高速缓存行元数据。因此,处理逻辑可在存取粒度之间切换而无需额外状态位。

图4描绘包含主机系统410和存储器子系统430的实例计算环境。主机系统包含CPU412和GPU 416两者,其各自具有相关联高速缓存器、CPU高速缓存器414和GPU高速缓存器418。CPU高速缓存器414和GPU高速缓存器418可各自包含相异高速缓存阶层结构和不同数据存取粒度。主机系统410的存储器控制器420可将存储器存取请求(包含读取和写入)发送到存储器子系统430。存储器存取请求可包含对CPU 412或GPU 416的存取请求。在一个实例中,来自CPU 412的存储器存取请求可请求一个大小的数据,而GPU 416请求另一大小的数据(例如,分别为64字节和32字节)。

存储器子系统430包含高速缓存控制器432、高速缓冲存储器组件434和后端存储器436A-C。高速缓存控制器432可包含用以确定来自后端存储器436A-C的数据将高速缓存于高速缓冲存储器组件434处以供主机系统410快速存取所述数据的高速缓存策略。另外,高速缓存控制器432可识别高速缓冲存储器组件434中已变脏并且应从高速缓冲存储器组件434逐出的数据。高速缓存控制器432可将高速缓冲存储器组件434的脏高速缓存行写回到后端存储器436A-C以确保正确地维持数据并且保持一致。高速缓冲存储器组件434可包含高速缓存行数据和高速缓存行元数据两者。替代地,高速缓存行元数据可包含在单独高速缓存元数据组件中,例如包含在SRAM或CAM中,以供快速存取元数据。所述元数据可包含用以识别高速缓存行的标记和用以指示高速缓存行的每一可存取部分是否含有有效数据以及高速缓存行是否为脏(即,与后端存储器436A-C不一致)的状态位。后端存储器436A-C可为与高速缓冲存储器组件434相比具有较大能力和较高存取等待时间的类型的存储器。后端存储器436A-C可为永久性存储器形式,例如3DXP、快闪或NAND存储器,或任何其它形式的永久性存储器。高速缓存控制器可包含用以根据存取粒度管理高速缓存行的元数据的存取粒度管理组件113。

在一个实例中,存取粒度管理组件113可识别高速缓存行元数据的模式位。模式位可指示高速缓存行的存取粒度以及使用高速缓存行元数据的哪个状态位用于高速缓存行的存取粒度。举例来说,设置为1的模式位可指示第一存取粒度且设置为0的模式位可指示第二存取粒度。

在另一实例中,在任何数据存取之前,存取粒度管理组件113可使用地址映射或查找表确定待存取数据的高速缓存行的存取粒度。存取粒度管理组件113可根据所识别的存取粒度管理高速缓存行元数据的状态位。举例来说,对于32字节存取粒度,存取粒度管理组件113可使用位集用于每一32字节数据扇区。对于64字节存取粒度,存取粒度管理组件113可使用两对状态位用于64字节数据扇区,其中所述两对状态位设置为相同的(即,64字节扇区中的每一32字节部分可设置为相同的)。

在又另一实例中,高速缓冲存储器组件可物理上分割成具有不同存取粒度的单独高速缓冲存储器。每一分区可另外包含其自身的对应高速缓存行元数据。因此,存取粒度管理组件113可在存取粒度之间切换而无需额外状态位。

图5A说明具有两个不同存取粒度的两个实例高速缓存行。虽然所描绘的32字节粒度高速缓存行具有6个不同32字节数据扇区,但32字节粒度高速缓存行可包含任何数目个数据扇区(例如,8个扇区、16个扇区等)。类似地,虽然所描绘的64字节粒度高速缓存行具有3个不同的64字节数据扇区,但64字节粒度高速缓存行可包含任何数目个数据扇区(例如,4个扇区、8个扇区、16个扇区等)。如下文关于图5B-D所描述,高速缓存行可具有例如存取粒度管理组件所使用的相关联高速缓存行元数据来指示高速缓存行中的每一数据扇区的状态并且可包含关于高速缓存行的其它元数据(例如,用于高速缓存方案的存取数据)。

图5B说明用于32字节存取粒度高速缓存行和64字节粒度高速缓存行的高速缓存行元数据的一个实例。因为具有不同存取粒度的高速缓存行包含在同一高速缓冲存储器组件中,因此存取粒度管理组件可首先确定高速缓存行包含什么存取粒度。一旦存取粒度管理组件确定存取粒度,便可确定使用高速缓存行元数据的哪些位确定高速缓存行的扇区的状态以及其它信息。

举例来说,图5B描绘32字节高速缓存行元数据,其包含用以识别元数据的标记以及相关联高速缓存行、模式位和6个状态位集(一个集用于图5A的每一32字节扇区)。存取粒度管理组件可通过将数据存取请求的地址(或所述的一部分)与高速缓存行元数据的标记进行匹配,识别高速缓存行元数据。一旦高速缓存行元数据经识别,高速缓存控制器可根据模式位确定高速缓存行的存取粒度是什么。在一个实例中,设置为1的模式位指示32字节高速缓存粒度,而设置为0的模式位指示64字节高速缓存粒度。应注意,可使用任何其它粒度(例如,8字节和16字节)且可包含额外模式位以提供对额外存取粒度的支持。

在另一实例中,存取粒度管理组件可根据高速缓存行的数据的存取粒度,产生高速缓存行元数据。高速缓存控制器可基于数据的地址来确定数据的存取粒度,并且根据存取粒度设置高速缓存行元数据的模式位。另外,存取粒度管理组件可根据存取粒度,设置用于高速缓存行的扇区的状态位。举例来说,如所描绘,可针对32字节高速缓存行设置高速缓存行元数据中的每一状态位,每一状态位集对应于高速缓存行的32字节扇区。对于64字节存取粒度高速缓存行元数据,存取粒度管理组件可设置(并且稍后读取)每隔一个状态位集。因此,设置64字节高速缓存行元数据的仅一半的状态位。在一个实例中,高速缓存控制器仅设置每两个状态位集中的第一集。当存取高速缓存行元数据时,存取粒度管理组件可使用每两个状态位集中的第一集确定64字节扇区的状态。

图5C说明包含六个状态位集的实例32字节存取粒度高速缓存行元数据。每一状态位集可对应于图5A中描绘的32字节存取粒度高速缓存行的32字节扇区中的一个。在一个实例中,图5C的状态位是由高速缓存控制器设置和管理。并非当存取数据时设置模式位并检查模式位,而是存取粒度管理组件可使用待存取数据的地址确定在存取时间的存取粒度。

图5D说明包含六个状态位集的实例64字节存取粒度高速缓存行元数据。每一状态位集可对应于图5A中描绘的64字节存取粒度高速缓存行的64字节扇区中的一个。在一个实例中,图5D的状态位是由高速缓存控制器设置和管理。并非当存取数据时设置模式位并检查模式位,而是存取粒度管理组件可使用待存取数据的地址确定在存取时间的存取粒度。因此,高速缓存控制器使用64字节存取粒度高速缓存行元数据的高速缓存行元数据的每一状态位。举例来说,如图5D中所描绘,如果64字节扇区的状态有效并且脏,那么可将四个位设置为指示64字节有效并且脏。当高速缓存行元数据用于具有64字节存取粒度的数据时,第一的两个状态位可设置为有效并且脏,且第二的两个状态位可以与第一的两个状态位相同的方式设置。在相同或不同实例中,第二64字节扇区可为有效并且不脏(1-0)并且因此第一的两个状态位和第二的两个状态位两者均可设置为有效并且不脏(1-0)。

图6是说明分割成不同存取粒度的高速缓冲存储器组件434的图式。高速缓冲存储器组件434可分割成64字节高速缓存粒度分区620和32字节高速缓存粒度分区610。替代地,高速缓存器组件434可分割成任何数目个不同分区并且可包含不同于32字节和64字节的高速缓存粒度。在32字节高速缓存粒度分区610中,可在32字节部分中从高速缓存行存取数据,同时可在64字节部分中从高速缓存行存取64字节高速缓存粒度分区620中的数据。32字节高速缓存粒度分区610因而可具有与存储于32字节高速缓存粒度分区610中的高速缓存行中的每一个相关联的相异高速缓存行元数据615。类似地,64字节高速缓存粒度分区620因而可具有与存储于64字节高速缓存粒度分区620中的高速缓存行中的每一个相关联的相异高速缓存行元数据625。用于高速缓存行的每一高速缓存行元数据可包含用以识别高速缓存行的标记。用于32字节缓存元数据615的每一高速缓存行的元数据可包含状态位,例如用于32字节分区的每一个别32字节部分的有效位和脏位(即,如图6所示,可存在用于高速缓存行的6-32字节部分中的每一个的6个状态位集)。用于64字节缓存元数据625的每一高速缓存行的元数据可包含状态位,例如用于64字节分区的每一个别64字节部分的有效位和脏位(即,如图6所示,可存在用于高速缓存行的3-64字节部分中的每一个的3个状态位集)。应注意,高速缓存行和用于每一高速缓存行的位数不限于图6中描绘的数目。

图7说明计算机系统700的实例机器,所述实例机器内可执行用于致使所述机器执行本文中所论述的方法中的任一或多种方法的指令集。在一些实施例中,计算机系统700可对应于包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,以执行操作系统以执行对应于图1的存取粒度管理组件113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如,网络连接)到LAN、内联网、外联网或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。

机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器、汽车或能够(依序或以其它方式)执行指定由机器采取的动作的一组指令的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多个)指令集以进行本文中所论述的方法中的任何一或多种。

实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,闪存存储器、静态随机存取存储器(SRAM)等),以及数据存储系统718,其经由总线730彼此通信。

处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702被配置成执行指令726以用于执行本文中所论述的操作和步骤。计算机系统700可另外包含网络接口装置708以在网络720上通信。

数据存储系统718可包含机器可读存储媒体724(也称为计算机可读媒体),其上存储有一或多组指令726或体现本文中所描述的方法或功能中的任一或多种的软件。指令726还可在由计算机系统700执行期间完全或至少部分地驻存在主存储器704内和/或处理装置702内,主存储器704和处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718和/或主存储器704可对应于图1的存储器子系统110。

在一个实施例中,指令726包含实施对应于编程脉冲控制组件(例如,图1的存取粒度管理组件113)的功能性的指令。尽管在实例实施例中将机器可读存储媒体724展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。

已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是导致期望的结果的操作的自洽序列。操作是要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、项、数目等是方便的。

然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。

本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。

本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可以使用各种编程语言来实施如本文所描述的本公开的教示内容。

本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。

在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

相关技术
  • 高速缓存媒体中的动态存取粒度
  • 异构虚拟云高速缓存环境中的动态高速缓存分区管理器
技术分类

06120112901330