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

正向高速缓存存储器系统和方法

文献发布时间:2023-06-19 10:25:58


正向高速缓存存储器系统和方法

背景技术

本公开大体上涉及存储器装置,且更具体地说,涉及实施于存储器子系统中的地址管理技术。

一般来说,计算系统包含处理子系统和存储器子系统,存储器子系统可存储可由处理子系统的处理电路存取的数据。举例来说,为了执行操作,处理电路可执行从存储器子系统的存储器装置检索到的对应指令。在一些情况下,还可从存储器装置中检索所述操作的数据输入。另外或替代地,来自所述操作(例如从中产生)的数据输出可存储在存储器装置中以例如实现后续检索。然而,至少在一些情况下,计算系统的操作效率可能受其架构限制,例如,所述架构管控计算系统中执行的操作的序列。

附图说明

在阅读以下详细描述且在参考附图之后,可更好地理解本公开的各个方面,在附图中:

图1是根据本公开的实施例的包含处理子系统和存储器子系统的计算系统的框图;

图2是根据本公开的实施例的图1的处理子系统的实例的框图;

图3是根据本公开的实施例的用于操作图2的处理子系统的实例过程的流程图;

图4是根据本公开的实施例的图1的使用一或多个索引表的存储器子系统的实例的框图;

图5是根据本公开的实施例的可实施于图4的存储器子系统中的实例易失性存储器阵列的框图;

图6是根据本公开的实施例的可供图4的存储器子系统使用的索引表的图形表示;

图7是根据本公开的实施例的存储图6的索引表的索引表存储器阵列和与索引表存储器阵列耦合的存储器控制器的一部分的框图;

图8是根据本公开的实施例的用于产生将包含在索引表中的索引条目的实例过程的流程图;

图9是根据本公开的实施例的用于产生和/或更新索引表的实例过程的流程图;

图10是根据本公开的实施例的用于将数据记录存储于图4的存储器子系统的实例过程的流程图;

图11是根据本公开的实施例的用于操作图4的存储器子系统的实例过程的流程图;和

图12是根据本公开的实施例的用于预测性地识别预期为随后的目标的数据的实例过程的流程图。

具体实施方式

本公开提供例如通过减轻原本可能限制操作效率的架构特征来促进提高计算系统操作效率的技术。一般来说,计算系统的处理子系统包含例如使用一或多个处理器和/或一或多个处理器核心实施的处理电路。另外,计算系统的存储器子系统可包含例如在一或多个存储器模块(例如双列直插式存储器模块(DIMM))中实施的一或多个存储器装置(例如芯片或集成电路)。

一般来说,实施于存储器装置中的存储器单元可组织成例如各自与存储器通道对应的一或多个主存储器阵列。为了实施存储器阵列,存储单元可耦合到第一(例如水平)方向上形成的字线,且耦合到第二(例如竖直)方向上形成的位线。举例来说,存储器阵列的行可包含耦合到一个字线的存储器单元。另外,在一些实施例中,存储器阵列的列可包含耦合到多个位线的存储器单元。

换句话说,在行地址和列地址配对处连接的存储器单元(例如存储位置)可存储数据块,所述数据块具有取决于通过列地址识别的列中包含的位线数目的位深度(例如大小)。举例来说,当每一列包含1024个位线时,每一行地址和列地址配对处实施的存储器单元可存储64字节(例如1024位)的数据块。另外,当存储器阵列包含十六个列时,存储器阵列的每一行可存储高达十六个数据块。

在任何情况下,在计算系统操作期间,处理电路系统可通过执行对应指令执行各种操作,例如通过对输入数据执行操作来确定输出数据。至少在一些情况下,处理电路系统可存取的数据可存储在存储器子系统中。举例来说,存储器子系统可存储输入到所述操作的数据、从所述操作输出(例如,所得)的数据、指示可执行指令的数据或其任何组合。

因此,处理子系统和存储器子系统可经由系统(例如,数据)总线以通信方式耦合。一般来说,可实施系统总线以提供有限通信带宽。实际上,至少在一些情况下,可与计算系统的其它子系统(例如射频(RF)子系统)共享系统总线。换句话说,处理子系统和存储器子系统之间的经由系统总线的数据通信可限制可用于其它计算子系统和/或其它操作的通信带宽量,至少在一些情况下,所述通信带宽量可限制计算系统的操作效率。

在任何情况下,经由系统总线,处理子系统可输出数据以存储于存储器子系统中。另外或替代地,经由系统总线,存储器子系统可将数据输出(例如,返回)到处理子系统,例如以供实施于处理子系统中的处理电路系统进行处理和/或执行。换句话说,存储器子系统可存储数据(例如,存储于主存储器阵列中)以后续供处理子系统存取。

为存取存储于存储器子系统中的数据,处理子系统可经由系统总线将存储器存取请求输出到存储器子系统,所述存储器存取请求例如经由虚拟存储器地址识别数据。一般来说,每一存储器存取请求可包含附加项(例如,标头数据和/或元数据)。举例来说,由于系统总线可与其它计算子系统共享,因此存储器存取请求可包含指示存储器存取请求旨在用于存储器子系统的附加项。

至少部分地基于存储器存取请求,存储器子系统可例如通过将虚拟存储器地址映射到物理存储器地址(例如,行地址和列地址配对),确定存储器子系统中的数据的存储方位。至少部分地基于其存储方位,存储器子系统可例如从实施于存储器子系统中的主(例如,易失性)存储器阵列和/或非易失性存储器装置检索数据。以此方式,存储器子系统可经由系统总线将目标数据输出(例如,返回)到处理子系统,例如以供实施于处理子系统中的处理电路系统处理和/或执行。

至少在一些情况下,处理电路系统可至少部分地基于来自多个数据块的数据执行操作,以例如执行应用程序或算法。因此,在一些情况下,处理子系统可依次输出各自识别多个数据块中的一个的存储器存取请求。举例来说,处理子系统可经由系统总线将识别第一数据块的第一存储器存取请求以及随后的识别第二数据块的第二存储器存取请求输出到存储器子系统。

然而,如上文所描述,经由系统总线的数据通信通常使用(例如,消耗)系统总线提供的有限通信带宽的至少一部分。此外,经由系统总线的数据通信通常消耗电力。实际上,所得电力消耗和/或带宽用量通常取决于正在传送的数据的大小(例如,量)。举例来说,用以经由系统总线传送数据的电力消耗可随着数据大小增加而增加。另外或替代地,用以传送数据的系统总线所提供的有限通信带宽的量可随着数据大小增加而增加。换句话说,由于经由系统总线传送,存储器存取请求可例如归因于每一存储器存取请求包含附加项(例如,标头数据和/或元数据)而将下限置于计算系统的操作(例如,通信和/或电力)效率上,尤其是当依次传送时。

因此,为了有助于改进操作(例如,通信和/或电力)效率,本公开提供用于实施和/或操作计算系统以经由其存储器子系统提供地址管理功能(例如,操作或过程)的技术。为了提供地址管理功能,存储器子系统可包含存储器控制器。另外,为了有助于提供地址管理功能,存储器子系统可将数据块存储为数据记录,所述数据记录使用分配用于指示一或多个特定数据字段的特定位位置的数据结构。

仅作为说明性实例,第一数据记录数据结构可分配用于指示名称(例如,第一)字段的位[0,X]、用于指示街道地址(例如,第二)字段的位[X+1,Y],以及用于指示邮政编码(例如,第三)字段的位[Y+1,Z]。换句话说,使用第一数据结构的第一数据记录可指示其名称字段中的第一实体的名称、其街道地址字段中的第一实体的街道地址,以及其邮政编码字段中的第一实体的邮政编码。另外,使用第一数据结构的第二数据记录可指示其名称字段中的第二实体的名称、其街道地址字段中的第二实体的街道地址,以及其邮政编码字段中的第二实体的邮政编码。

在一些实施例中,不同数据记录可利用例如包含一或多个不同数据字段的不同数据结构。作为说明性实例,第二数据记录数据结构可分配用于指示邮政编码字段的位[0,Z-(Y+1)+1]。因此,使用第二数据结构的第三数据记录可指示其邮政编码字段中的第三实体的邮政编码。

通过使用数据记录数据结构来存储数据,存储器子系统(例如,存储器控制器)可经由例如存储于单独存储(例如,存储器)装置中和/或存储于与一或多个主存储器阵列相异(例如,分开)的索引表存储器阵列中的对应索引表,将各自包含特定数据字段的数据记录分组。为了促进将数据记录分组,存储器子系统可产生与包含特定数据字段的数据记录中的每一个对应的索引条目。举例来说,存储器子系统可产生与第一数据记录对应的第一邮政编码索引条目和与第二数据记录对应的第二邮政编码索引条目。另外或替代地,存储器子系统可产生与第三数据记录对应的第三邮政编码索引条目。

在一些实施例中,与数据记录对应的索引条目可例如经由指向主存储器阵列或非易失性存储器装置中的数据记录的存储方位的指针,指示存储器子系统中的数据记录的存储方位。换句话说,继续以上实例,存储器子系统可产生指示存储器子系统中的第一数据记录的存储方位的第一邮政编码索引条目和指示第二数据记录的存储方位的第二邮政编码索引条目。另外或替代地,存储器子系统可产生与第三数据记录对应的第三邮政编码索引条目以指示存储器子系统中的第三数据记录的存储方位。

为了将各自包含特定数据字段的数据记录分组,存储器子系统(例如,存储器控制器)可将对应索引条目存储于对应索引表的索引条目位置中。举例来说,在邮政编码索引表中,存储器子系统可将第一邮政编码索引条目存储于第一索引条目位置处并且将第二邮政编码索引条目存储于第二索引条目位置处。另外或替代地,存储器子系统可将第三邮政编码索引条目存储于邮政编码索引表中的第三索引条目位置处。

如上文所描述,在一些实施例中,索引表可存储于例如与实施于存储器子系统中的一或多个主存储器阵列相异(例如,分开)的索引表存储器阵列中。实际上,在一些实施例中,索引表存储器阵列可以与主存储器阵列相比不同的存储器类型予以实施。举例来说,索引表存储器阵列可以相对更快速的存储器类型(例如静态随机存取存储器(SRAM))予以实施,而主存储器阵列以相对较慢存储器类型(例如动态随机存取存储器(DRAM))予以实施。

此外,在一些实施例中,可实施索引表存储器阵列以使得索引表各自存储于对应存储器单元行中。举例来说,邮政编码索引表可存储于索引表存储器阵列的第一存储器单元行中,而街道地址索引表存储于索引表存储器阵列的第二存储器单元行中。另外,在一些实施例中,可实施索引表存储器阵列以使得索引表条目各自存储于对应存储器单元列中。换句话说,索引表存储器阵列中的每一行地址和列地址配对处的存储器单元可实施为索引表条目位置。举例来说,邮政编码索引表的第一索引条目位置可实施于第一存储器单元行的第一列处,且邮政编码索引表的第二索引条目位置可实施于第一存储器单元行的第二列处。

在任何情况下,通过遍历包含在索引表中的索引条目,存储器子系统(例如,存储器控制器)可识别各自包含对应数据字段的数据记录。举例来说,存储器子系统可读取邮政编码索引表中的第一索引条目位置以确定第一邮政编码索引条目,读取邮政编码索引表中的第二索引条目位置以确定第二邮政编码索引条目,等。另外,存储器子系统可读取包含在第一邮政编码索引条目中的第一指针,所述第一指针指示第一数据记录的存储方位,以识别第一数据记录,且因此识别第一数据记录包含邮政编码字段。类似地,存储器子系统可读取包含在第二邮政编码索引条目中的第二指针,所述第二指针指示第二数据记录的存储方位以识别第二数据记录,且因此识别第二数据记录包含邮政编码字段。另外或替代地,存储器子系统可读取包含在第三邮政编码索引条目中的第三指针,所述第三指针指示第三数据记录的存储方位以识别第三数据记录,且因此识别第三数据记录包含邮政编码字段。

为了有助于存取(例如,读取和/或写入)索引表条目,在一些实施例中,存储器子系统可包含例如经由对应列放大器耦合到索引表存储器阵列的每一存储器单元列的条目单元。换句话说,第一条目单元可耦合到索引表存储器阵列的第一存储器单元列,第二条目单元可耦合到索引表存储器阵列的第二存储器单元列,等。另外,在一些实施例中,每一条目单元可以(例如,64字节)寄存器予以实施,进而使得条目单元能够从索引表存储器阵列读取(例如,检索)索引条目和/或将索引条目写入(例如,存储)到索引表存储器阵列中。

在一些实施例中,除了对应数据记录的存储方位之外,索引条目还可指示包含在数据记录中的一或多个数据字段的值。举例来说,第一邮政编码索引条目可包含由第一数据记录的邮政编码字段指示的第一邮政编码值,且第二邮政编码索引条目可包含由第二数据记录的邮政编码字段指示的第二邮政编码值。另外或替代地,第三邮政编码索引条目可包含由第三数据记录的邮政编码字段指示的第三邮政编码值。

在一些实施例中,在索引条目中包含数据字段值可使得存储器子系统(例如,存储器控制器)能够仅通过以下操作来自适应地(例如,动态地)调整数据记录之间的相互关系:调整索引表中的索引条目的次序(例如,索引条目位置),例如无需调整对应数据记录。特定来说,存储器子系统可将索引条目排序以使得由索引条目指示的数据字段值按升序、降序或任何其它合适的次序。举例来说,当按降序进行排序时,存储器子系统可指示包含对应索引表的第一索引条目位置中的最大数据字段值的索引条目,以此类推到包含最后一个索引条目位置中的最小数据字段值的索引条目等。

另一方面,当按升序排序时,存储器子系统可指示包含对应索引表的第一索引条目位置中的最小数据字段值的索引条目,以此类推到包含最后一个索引条目位置中的最大数据字段值的索引条目。举例来说,当按升序排序时,当第一邮政编码字段的值是“83704”且第二邮政编码字段的值是“83707”时,可在第一索引条目位置处指示第一邮政编码索引条目,并且可在第二(例如,最后一个)索引条目位置处指示第二邮政编码索引条目。另外或替代地,当按升序排序时,当第三邮政编码字段的值是“83713”时,可在第三索引条目位置处指示第三邮政编码索引条目。

为了促进产生索引条目,在一些实施例中,存储器子系统可提供包含分配函数的应用程序编程接口(API)。在一些实施例中,发到分配函数的输入参数(例如,操作符)可包含指向存储器子系统中的一或多个数据记录块的存储方位的指针、包含在所述块中的数据记录的数目、数据记录中的每一个的大小、将索引化的数据字段的数目和/或将索引化的特定数据字段。换句话说,可至少部分地基于数据记录实施的数据结构的参数,确定发到分配函数的输入参数(例如,数据记录大小、将索引化的数据字段的数目和/或将索引化的特定数据字段)。

在一些实施例中,数据记录的数据结构可为预定义的,例如使得将数据结构的指示事先存储于存储器子系统中。另外或替代地,可例如经由与数据记录包含在一起的元数据(例如,标头数据)和/或与数据记录一起接收到的单独控制信号(例如,命令或请求)明确地指示数据记录的数据结构。在任何情况下,通过执行分配函数,存储器子系统可分配由输入参数(例如,块的开始存储方位+(块中的数据记录数目*每一数据记录的大小))指示的存储方位以用于存储利用数据结构的一或多个数据记录。

此外,为了促进在索引表中包含索引条目,存储器子系统可例如通过将索引条目与已经包含在索引表中的另一索引条目进行比较,处理(例如,分析、评估和/或调整)索引条目。因此,在一些实施例中,存储器子系统以处理电路系统予以实施,例如实施于存储器控制器和/或与处理子系统相异(例如,分开)的其它处理电路系统中。然而,为了能够执行更复杂的数据处理操作,处理电路系统与存储器电路系统相比通常更高度掺杂。另外,较高掺杂通常增加产生泄漏电流的可能性,至少在一些情况下,所述泄漏电流可例如通过损坏存储于存储器子系统中的数据而影响存储器子系统的操作可靠性。

因此,在一些实施例中,举例来说,相比于处理子系统和/或存储器内处理器(PIM),存储器子系统可以受限处理能力予以实施。在一些实施例中,由存储器子系统执行的处理可以比较逻辑电路系统予以实施。举例来说,耦合到索引表存储器阵列的条目单元可包含比较逻辑电路系统,其经实施以将存储于其寄存器中的数据字段值与输入数据字段值(例如,包含在不同索引条目中)进行比较。在一些实施例中,比较逻辑电路系统可指示存储于条目单元的寄存器中的数据字段值是否大于输入数据字段值。另外或替代地,比较逻辑电路系统可指示存储于条目单元的寄存器中的数据字段值是否小于输入数据字段值。

为了促进排序,相邻条目单元可以通信方式耦合,例如以使得第一条目单元能够将存储于其寄存器中的索引条目移位到第二条目单元。如上文所描述,可将包含在索引表中的索引条目排序以使得由索引条目指示的数据字段值按升序、降序或任何其它合适的次序。举例来说,当按升序排序且新(例如,输入)邮政编码索引条目指示新邮政编码字段值“83706”时,第一条目单元可将由新邮政编码索引条目指示的邮政编码字段值与存储于邮政编码索引表的第一索引条目位置处的第一邮政编码索引条目进行比较。当第一邮政编码索引条目指示第一邮政编码字段值“83704”时,第一条目单元可确定由新邮政编码索引条目指示的新邮政编码字段值大于由第一邮政编码索引条目指示的第一邮政编码字段值。

另外,举例来说,在第一条目单元确定新邮政编码字段值大于第一邮政编码字段值之后,第二条目单元可将由新邮政编码索引条目指示的邮政编码字段值与存储于邮政编码索引表的第二索引条目位置处的第二邮政编码索引条目进行比较。当新邮政编码索引条目指示新邮政编码字段值为“83706”且第二邮政编码索引条目指示第二邮政编码字段值“83707”时,第二条目单元可确定新邮政编码字段值不大于第二邮政编码字段值。因而,第二条目单元可将第二邮政编码索引条目移位到与邮政编码索引表中的第三索引条目位置耦合的第三条目单元,进而将第二邮政编码索引条目从第二索引条目位置移位到第三索引条目位置。

以类似方式,下游条目单元可将索引条目进行比较和/或移位。举例来说,第三索引条目单元可将由第二(例如,输入)邮政编码索引条目指示的邮政编码字段值与存储于邮政编码索引表的第三索引条目位置处的第三邮政编码索引条目进行比较。当第二邮政编码索引条目指示第二邮政编码字段的值是“83707”且第三邮政编码索引条目指示第三邮政编码字段值“83713”时,第三条目单元可确定第二邮政编码字段值不大于第三邮政编码字段值。因而,第三条目单元可将第三邮政编码索引条目移位到与邮政编码索引表中的第四索引条目位置耦合的第四条目单元,进而将第三邮政编码索引条目从第三索引条目位置移位到第四索引条目位置。

然而,在一些实施例中,举例来说,归因于条目单元的缓冲器相对于索引条目大小的大小,将索引条目存储于条目单元中可覆写先前存储于条目单元的索引条目。因此,在一些实施例中条目单元可在将先前存储于其寄存器中的条目单元输出到例如另一条目单元和/或索引表存储器阵列之后,将索引条目存储到其寄存器中。换句话说,继续上述实例,第二条目单元可在第二邮政编码索引条目移位到第三条目单元之后将新邮政编码索引条目存储到其寄存器中,第三条目单元可在第三邮政编码索引条目移位到第四条目单元之后将第二邮政编码索引条目存储到其寄存器中等。

为降低地址管理功能影响数据检索时延的可能性,在一些实施例中,在处理子系统预期不以数据记录为目标时,存储器子系统(例如,存储器控制器)可索引化所述数据记录。举例来说,存储器子系统可响应于数据记录写入到存储器子系统的主存储器阵列(例如,存储器通道)而索引化数据记录。换句话说,存储器子系统可有机会执行索引操作以降低索引操作延迟目标数据返回到处理子系统的可能性,至少在一些情况下,这可有助于改进计算系统的操作效率。

此外,以此方式实施地址管理功能可有助于减小在处理子系统和存储器子系统之间传送以例如请求来自多个数据记录的数据和/或返回目标数据的数据量。特定来说,在一些实施例中,以此方式实施地址管理功能可使得存储器子系统能够仅返回一或多个数据记录的目标部分(例如,一或多个数据字段),至少在一些情况下,这可有助于减小经由系统总线从存储器子系统到处理系统的数据通信。另外或替代地,以此方式实施地址管理功能可使得处理子系统能够使用较少存储器存取请求请求来自多个数据记录的数据,至少在一些情况下,这可有助于减小经由系统总线从处理子系统到存储器子系统的数据通信。

举例来说,代替单独地(例如,依次)请求来自多个数据记录的数据,处理子系统可输出识别目标数据的单存储器存取请求。在一些实施例中,为了根据经排序次序存取多个数据记录,处理子系统可输出识别目标存取索引和包含在目标索引表中的一或多个目标索引条目位置的存储器存取请求。举例来说,处理子系统可输出将邮政编码字段识别为目标存取索引并且识别目标索引条目位置的向量[N,M]的存储器存取请求。

基于目标存取索引,存储器子系统(例如,存储器控制器)可识别对应索引表。举例来说,当目标存取索引是邮政编码字段时,存储器控制器可识别邮政编码索引表。另外或替代地,当目标存取索引是名称字段时,存储器控制器可识别名称索引表。

为了促进识别目标索引表,在一些实施例中,存储器子系统可提供包含经排序存取函数的应用程序编程接口(API)。在一些实施例中,经排序存取函数的输入参数(例如,操作符)可包含指向存储器子系统中的一或多个数据记录块的存储方位的指针和将索引化的特定数据字段。另外,通过执行经排序存取函数,存储器子系统可确定经排序存取指针,举例来说,指示索引表存储器阵列中的对应索引表的存储方位。换句话说,为了促进识别目标索引表,存储器子系统可确定与存储器存取请求指示的目标存取索引对应的经排序存取指针。

另外,至少部分地基于存储器存取请求,存储器子系统(例如,存储器控制器)可识别将读取目标索引表中的哪些索引条目位置。举例来说,当存储器存取请求包含向量[M,N]时,存储器子系统可确定索引条目将从第M+1索引条目位置读取到目标索引表中的第N+1索引条目位置。作为说明性实例,当存储器存取请求包含向量[0,1]时,存储器子系统可确定将从所识别索引表的第一索引条目位置和第二索引条目位置读取索引。

此外,至少部分地基于存储于所识别的索引条目位置处的索引条目,存储器子系统(例如,存储器控制器)可识别(例如,检索)对应数据记录。举例来说,至少部分地基于第一邮政编码索引条目,存储器子系统可识别第一数据记录。类似地,至少部分地基于第二邮政编码索引条目,存储器子系统可识别第二数据记录。以此方式,处理子系统可使用较少存储器存取请求请求根据经排序次序存取多个数据记录,至少在一些情况下,这可有助于减小经由系统总线从处理子系统到存储器子系统的数据通信。

此外,在一些实施例中,处理子系统可以来自多个数据记录的例如存储为主存储器阵列中的连续块的特定部分或子集(例如,一或多个数据字段)为目标。为存取多个数据记录的特定部分,在一些实施例中,处理子系统可输出识别数据记录块的存储方位和数据记录中的每一个的目标部分的存储器存取请求。举例来说,处理子系统可输出识别主存储器阵列中的存储器地址块并且以邮政编码字段为目标的存储器存取请求。

为了促进存取多个数据记录的目标部分,在一些实施例中,存储器子系统可提供包含跨步存取函数的应用程序编程接口(API)。在一些实施例中,跨步存取函数的输入参数(例如,操作符)可包含指向存储器子系统中的一或多个数据记录块的存储方位的指针、数据记录中的目标数据字段的开始位位置、目标数据字段的大小和后续数据记录之间的跨步长度。因此,在一些实施例中,可至少部分地基于数据记录的数据结构确定跨步存取函数的输入参数(例如,数据记录中的目标数据字段的开始位位置、目标数据字段的大小和/或后续数据记录之间的跨步长度)。

另外,通过执行跨步存取函数,存储器子系统可确定跨步存取指针,举例来说,所述跨步存取指针指示多个数据记录的目标部分的存储方位。换句话说,使用跨步存取指针,存储器子系统可识别(例如,检索)多个数据记录的目标部分。以此方式,处理子系统可使用较少存储器存取请求来请求存取多个数据记录的特定部分(例如,根据地址次序),至少在一些情况下,这可有助于减小经由系统总线从处理子系统到存储器子系统的数据通信。

如上文所描述,在识别目标数据之后,存储器子系统可经由系统总线将目标数据输出(例如,返回)到处理子系统,举例来说,以供实施于处理子系统中的处理电路系统处理和/或执行。实际上,在一些实施例中,提供对所存储的数据的跨步存取也可有助于减小经由系统总线从存储器子系统到处理子系统的数据通信。举例来说,通过提供跨步存取,存储器子系统可仅输出数据记录的目标部分而非包含除目标部分以外的数据的完整数据记录。

在任何情况下,不同计算子系统之间的数据通信一般比计算子系统内的数据通信慢,举例来说,这归因于不同计算子系统的定时、与其它计算子系统共享数据总线和/或不同子系统之间的通信距离。换句话说,处理子系统内(例如其内部)的数据通信可比处理子系统与存储器子系统之间的数据通信快。因此,为了促进提高操作效率,可在处理子系统中实施一或多个高速缓存。举例来说,处理子系统可实施有一或多个处理器侧高速缓存器,例如与处理电路集成的L1高速缓存器、L2高速缓存器和/或L3高速缓存器。

为了促进利用高速缓存器提供的更快速数据通信,在一些实施例中,存储器子系统可将目标数据直接存储到处理器侧高速缓存器中。实际上,在一些实施例中,存储器子系统可自动将目标数据直接存储到较高层级(例如,共享的)处理器侧高速缓存器,例如L3高速缓存器中。换句话说,在这类实施例中,存储器子系统可在例如无来自处理子系统的另外指令的情况下响应于存储器存取请求而将被存储器存取请求定为目标的数据直接存储到处理器侧高速缓存器中。

实际上,在一些实施例中,存储器子系统可例如以无次序方式非确定性地返回目标数据。因此,当实施为自动将目标数据直接存储到处理器侧高速缓存器中时,存储器子系统可将控制信号输出到处理子系统,所述控制信号指示目标数据到处理器侧高速缓存器中的存储何时完成。在一些实施例中,存储器子系统可每当来自数据记录的目标数据成功地存储于处理器侧高速缓存器中时输出控制信号。另外或替代地,存储器子系统可在存储器存取请求识别的所有目标数据成功地存储于处理器侧高速缓存器中之后输出控制信号。

为了促进进一步利用高速缓存器提供的更快速数据通信,在一些实施例中,存储器子系统(例如,存储器控制器)可预测性地识别预期随后被处理子系统定为目标的数据(例如,数据记录或数据字段)。换句话说,存储器子系统可预测预期随后出现并且事先识别数据的数据存取模式,因此,在一些实施例中,所述数据存取模式可使得存储器子系统能够在处理子系统已将数据定为目标之前将目标数据直接存储到处理器侧高速缓存器中。因而,当处理电路系统实际上将数据定为目标(例如,以供处理和/或执行)时,处理子系统可确定目标数据已经存储于处理器侧高速缓存器中,且因此经由处理器侧高速缓存器将目标数据提供到处理电路系统,例如而非请求来自存储器子系统的目标数据并且等待返回目标数据。

在一些实施例中,存储器子系统(例如,存储器控制器)可至少部分地基于什么数据目前被处理子系统定为目标和/或按照何次序定为目标来预测随后将什么数据定位目标。如上文所描述,处理子系统可例如经由单存储器存取请求将来自多个数据记录的数据定为目标。因此,在一些实施例中,存储器子系统可确定使得以来自多个数据记录的数据为目标的数据存取模式并且推断预测什么数据随后将被处理子系统定为目标的数据存取模式。

举例来说,当存储器存取请求以索引条目位置的向量[0,1]为目标时,存储器子系统可预测处理子系统随后将第三索引条目位置和第四索引条目位置处的索引条目定为目标。换句话说,以此方式,存储器子系统可在处理子系统实际上请求数据之前识别目标索引条目和对应数据记录。实际上,在一些实施例中,存储器子系统可事先将预期随后将被处理子系统定为目标的数据记录直接存储到处理器侧高速缓存器中,至少在一些情况下,这可有助于减小数据检索时延。

此外,在一些实施例中,存储器子系统(例如,存储器控制器)可至少部分地基于存储于存储器子系统中的数据记录的数据结构预测随后将什么数据定为目标。如以上说明性实例中所描述,第一数据记录数据结构可分配用于指示名称字段的位[0,X]、用于指示街道地址字段的位[X+1,Y]以及用于指示邮政编码(例如,第三)字段的位[Y+1,Z]。因此,当存储器存取请求以街道地址字段为目标时,举例来说,存储器子系统可预测处理子系统随后将邮政编码字段定为目标,原因为第一数据记录数据结构分配紧接在用于指示邮政编码的街道地址字段之后的位位置。以此方式,存储器子系统可在实际上被处理子系统请求之前识别数据记录的目标部分。实际上,在一些实施例中,存储器子系统可事先将预期随后将被处理子系统定为目标的数据记录的部分直接存储到处理器侧高速缓存器中。

换句话说,如将在下文更详细地描述,本公开描述用于以下操作的技术:实施和/或操作存储器子系统以使得数据记录可存储于主存储器阵列中,而与数据记录相关联的索引条目(例如,元数据)存储于存储器子系统的专门化部分中,所述专门化部分例如使用高级查找技术管理元数据的索引表存储器阵列。在一些实施例中,这些技术使得存储器子系统能够执行代表处理子系统的大量(例如,高级)存储器寻址操作。举例来说,存储器子系统可实施正向高速缓存技术,借以存储器子系统预计(例如,预测)即将来自处理子系统的存储器存取请求并且在存储器存取请求之前准备预期将请求的数据。因此,至少在一些情况下,以此方式实施和操作存储器子系统可例如通过解除地址计算的处理子系统和/或降低处理子系统经历的有效数据检索时延,有助于改进操作(例如,电力和/或通信)效率。

另外或替代地,存储器子系统可实施快速(例如,改进的)正向高速缓存技术,借以存储器子系统将所请求的数据异步传送到处理子系统。在正向高速缓存技术的基础上,在一些实施例中,存储器子系统可事先将预期被预计的存储器存取请求定为目标的数据传送到处理子系统,进而在存储器存取请求之前递送预期将被处理子系统请求的数据。因此,至少在一些情况下,以此方式实施和操作存储器子系统可例如通过进一步降低处理子系统经历的有效数据检索时延(例如,在理想情形中降低到零),进一步有助于改进操作(例如,电力和/或通信)效率。

此外,如将在下文更详细地描述,应用程序编程接口(API)可提供工具(例如,函数)以便于支持高级存储器寻址技术,例如正向高速缓存技术和/或快速正向高速缓存技术。在一些实施例中,编程技术可涵盖在存取轴的概念下提取的不同存储器存取模式。举例来说,存取轴可提供足以使得存储器子系统能够以竖直(例如,地址)次序、跨步次序和/或经排序次序存取所存储的数据的信息(例如,元数据)。在任何情况下,至少在一些情况下,以此方式实施和操作计算系统可例如通过减小数据检索时延,减小经由系统总线的数据通信和/或增加可用于其它计算子系统的通信带宽,有助于改进操作(例如,电力和/或通信)效率。

为了帮助说明,图1中展示包含处理子系统12和存储器子系统14的计算系统10(例如设备)的实例。应了解,所描绘的实施例仅旨在说明而非限制。确切地说,计算系统10可另外或替代地包含其它计算子系统。举例来说,计算系统10可另外包含联网子系统、射频子系统、用户输入子系统和/或显示子系统。

此外,在一些实施例中,计算系统10可在单个电子装置中实施,例如桌上型计算机、工作站计算机、笔记本电脑、服务器、移动电话、虚拟现实头戴装置和/或其类似者。在其它实施例中,计算系统10可分布于多个电子装置之间。举例来说,处理子系统12和存储器子系统14可在主机装置中实施,而其它计算子系统,例如用户输入子系统和/或显示子系统,在客户端(例如远程)装置中实施。实际上,在一些实施例中,计算子系统可分布于多个电子装置之间。举例来说,处理子系统12的第一部分和/或存储器子系统14的第一部分可在主机装置中实施,而处理子系统12的第二部分和/或存储器子系统14的第二部分在客户端装置中实施。

在任何情况下,处理子系统12总的来说在计算系统10的操作期间执行各种操作,以例如通过执行对输入数据执行对应操作的指令来确定输出数据。因此,如在所描绘的实例中,处理子系统12可包含处理电路16。在一些实施例中,处理电路16可包含一或多个中央处理单元(CPU)、一或多个图形处理单元(GPU)、一或多个处理器核心,或其任何组合。

另外,如上文所描述,存储器子系统14通常存储处理子系统12可存取的数据,例如包含输出数据、输入数据和/或指示可执行指令的数据。因此,如在所描绘的实例中,存储器子系统14可包含一或多个存储器装置18(例如芯片或集成电路)。如将在下文更详细地描述,在一些实施例中,存储器装置18可包含组织成一或多个存储器阵列的存储器单元(例如电路),且因此可包含一或多个有形的非暂时性计算机可读媒体。举例来说,存储器子系统14可包含一或多个易失性存储器装置,例如动态随机存取存储器(DRAM)装置或静态随机存取存储器(SRAM)装置,和/或一或多个非易失性存储器装置,例如快闪(例如,NAND)存储器装置、相变存储器(例如,3D XPoint

此外,在一些实施例中,多个存储器装置18可在存储器模块上实施,例如双列直插式存储器模块(DIMM)或单列直插式存储器模块(SIMM)。举例来说,存储器模块可包含印刷电路板(PCB)以及各自安置在印刷电路板的平坦或平面的(例如前或后)表面上的多个存储器装置。另外,存储器装置18可经由印刷电路板上形成的导电迹线耦合到沿着印刷电路板的(例如底部)边缘形成的外部接脚。

应了解,存储器装置18中的一或多者可使用其它封装技术实施。举例来说,存储器装置18可耦合到半导体(例如,硅)内插件以实施2.5D配置。另外或替代地,存储器装置18可堆叠以实施3D配置。此外,在一些实施例中,存储器装置18可使用有机封装技术实施。换句话说,本公开中所描述的技术可实施为封装上解决方案。

在任何情况下,如上文所描述,存储器子系统14通常存储处理子系统12可存取的数据。为了促进数据通信,存储器子系统14和处理子系统12可经由例如包含一或多个数据总线的系统总线20以通信方式耦合。在一些实施例中,系统总线20可包含一或多个电缆、一或多个线材、一或多个导电迹线、一或多个通信网络或其任何组合,且因此可实施以提供有限通信带宽。在任何情况下,经由系统总线20,处理子系统12可传送(例如,输出)数据以用于存储于存储器子系统14中。另外或替代地,经由系统总线20,存储器子系统14可例如响应于对被处理子系统12的处理电路系统16定为目标的数据的请求而传送(例如,输出)数据以供处理子系统12处理和/或执行。

然而,如上文所描述,不同计算子系统之间的数据通信一般比计算子系统内的数据通信慢。换句话说,例如归因于与其它计算子系统共享通信总线20、处理子系统12与存储器子系统14之间的定时差异和/或处理子系统12与存储器子系统14之间的通信距离,处理子系统12内(例如在其内部)的数据通信可能更快,且因此与处理子系统12与存储器子系统14之间的数据通信相比,有助于减小数据检索时延。因此,为了促进改进操作效率,可在处理子系统12的处理电路16与存储器子系统14的存储器装置18之间实施高速缓存器,以例如存储还存储于存储器装置18中的数据的执行个体(例如副本)。

如在所描绘的实例中,高速缓存器可包含实施于处理子系统12中的一或多个处理器侧高速缓存器22。在一些实施例中,处理器侧高速缓存22中的一或多个可与处理电路系统16集成。举例来说,处理器侧高速缓存器22可包含L1高速缓存器、L2高速缓存器和/或L3高速缓存器。为有助于减小数据检索时延,在一些实施例中,可使用与实施于存储器子系统14中的存储器装置18相比不同的存储器实施处理器侧高速缓存器22。举例来说,处理器侧高速缓存器22可以静态随机存取存储器(SRAM)予以实施,而存储器装置18以动态随机存取存储器(DRAM)和/或非易失性存储器予以实施。

为了促进控制高速缓存器和/或存储器装置18中的数据存储,计算系统10可包含例如经由指令总线20A以通信方式耦合到高速缓存器和/或存储器装置18的一或多个存储器控制器26。在一些实施例中,存储器控制器26中的一或多个可实施于存储器子系统14中,例如实施为存储器侧存储器控制器26。另外或替代地,存储器控制器26中的一或多个可实施于处理子系统12中,例如实施为处理器侧存储器控制器26。

为了帮助说明,图2中展示包含处理器侧存储器控制器26A的处理子系统12A的实例。如上文所描述,可使用一或多个处理器核心28实施处理电路系统16。举例来说,在描绘的实施例中,处理子系统12A的处理电路系统16A可包含第一处理器核心28A和第N处理器核心28N。

另外,在描绘的实施例中,高速缓存器可在阶层上组织成不同高速缓存层级30。举例来说,处理器侧高速缓存器22A可组织成第一(例如,较低)高速缓存层级30A和第K(例如,较高)高速缓存层级30K,所述层级可经由系统总线20以通信方式耦合到存储器系统。在一些实施例中,可使用易失性存储器(例如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM))实施处理器侧高速缓存器22A。

另外,在一些实施例中,实施于第一高速缓存层级30A中的处理器侧高速缓存器22A可专用于对应处理器核心28。换句话说,在这类实施例中,可使用一或多个私用处理器侧高速缓存器32实施第一层级高速缓存器30A。举例来说,实施于第一高速缓存层级30A中的第一处理器侧高速缓存器32A可专用于第一处理器核心28A,且实施于第一高速缓存层级30A中的第N私用处理器侧高速缓存器32N可专用于第N处理器核心28N。换句话说,在一些实施例中,实施于第一高速缓存层级30A中的私用处理器侧高速缓存器32可包含一或多个L1高速缓存器。

在一些实施例中,较高高速缓存层级可还以一或多个私用处理器侧高速缓存器32予以实施。举例来说,第二高速缓存层级30可以专用于第一处理器核心28A的另一私用处理器侧高速缓存器32和专用于第N处理器核心28N的另一私用处理器侧高速缓存器32予以实施。换句话说,在一些实施例中,实施于第二高速缓存层级30中的私用处理器侧高速缓存器32可包含一或多个L2高速缓存器。

另外或替代地,可在多个处理器核心28之间共享实施于较高高速缓存层级中的处理器侧高速缓存器22。举例来说,在描绘的实施例中,第K高速缓存层级30K可以共享的处理器侧高速缓存器34予以实施,第一处理器核心28A和第N处理器核心28N共享所述处理器侧高速缓存器34。换句话说,在一些实施例中,实施于第K高速缓存层级30K中的共享的处理器侧高速缓存器34可包含L3高速缓存器。

在任何情况下,如上文所描述,与实施于存储器子系统14的存储器装置18中的主存储器阵列相比,高速缓存器通常提供更快速的数据存取(例如,读取和/或写入)速度。然而,高速缓存器的存储容量通常小于主存储器阵列的存储容量。实际上,在一些实施例中,处理器侧高速缓存器22A的总存储容量可小于一或多个主存储器阵列的存储容量。

因此,为了促进改进数据存取速度并且因此改进计算系统10的操作效率,处理器侧存储器控制器26A可至少部分地基于当数据预期将被处理电路系统16A定为目标(例如,被请求)时控制处理器侧高速缓存器22A中的数据存储。举例来说,处理器侧存储器控制器26A可控制数据存储以使得在处理电路系统16A实际上将预期将被处理电路系统16A定为目标的数据定为目标之前,将所述数据的执行个体(例如,副本)存储于处理器侧高速缓存器22A中的一或多个中。另一方面,为了促进节约(例如,优化)处理器侧高速缓存器22A的存储容量,处理器侧存储器控制器26A可控制数据存储以使得在即将到来的控制时域(controlhorizon)(例如,持续时间)期间预期不被处理电路系统16A定为目标的数据块29的执行个体不存储于处理器侧高速缓存器22A中。

此外,在一些实施例中,可至少部分地基于阶层式高速缓存层级控制处理器侧高速缓存器22A中的数据存储。举例来说,处理器侧存储器控制器26A可经实施以唯一地控制较低高速缓存层级30(例如第一高速缓存层级30A)中的数据存储。另一方面,在一些实施例中,处理器侧存储器控制器26A可与例如存储器侧存储器控制器26共享对较高高速缓存层级30(例如第K高速缓存层级30K)中的数据存储的控制。如将在下文更详细地描述,至少在一些情况下,共享对高速缓存层级30中的数据存储的控制可例如通过使得存储器子系统14能够直接和/或预测性地将数据存储到处理器侧高速缓存器22中,有助于改进计算系统10的操作效率。

在图3中描述用于操作存储器控制器26(例如处理器侧存储器控制器26A)的过程46的实例。一般来说,过程46包含确定被处理电路系统定为目标的数据(过程框48),确定目标数据是否引起处理器侧高速缓存未命中(决策框50),以及将目标数据提供到处理电路系统(过程框52)。另外,当目标数据引起处理器侧高速缓存未命中时,过程46包含从存储器子系统请求目标数据(过程框56)并确定是否已从存储器子系统接收到目标数据(决策框58)。

尽管以表示特定实施例的特定次序描述,但应注意,过程46可以任何合适的次序执行。另外,过程46的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程46。

因此,在一些实施例中,存储器控制器26(例如,处理器侧存储器控制器26A)可确定被计算系统10的处理电路系统16定为目标的数据(例如,数据记录或一或多个数据字段)(过程框48)。在一些实施例中,处理电路系统16可使用例如包含在存储器存取请求中的对应(例如,目标)虚拟存储器地址识别目标数据。至少部分地基于目标虚拟存储器地址,存储器控制器26可确定指示计算系统10中的目标数据的存储方位的对应(例如,目标)物理存储器地址。

另外,存储器控制器26可确定目标数据是否引起处理器侧高速缓存未命中(决策框50)。在一些实施例中,存储器控制器26可至少部分地基于与数据相关联的虚拟存储器地址和/或物理存储器地址,确定数据是否存储于高速缓存器中。举例来说,至少部分地基于其虚拟存储器地址和物理存储器地址,存储器控制器26可确定预期将与目标数据相关联的标记元数据的目标值。

通过基于目标标记元数据值搜索处理器侧高速缓存器22,存储器控制器26可确定目标数据是否引起处理器侧高速缓存未命中。举例来说,当目标标记元数据值不匹配包含在处理器侧高速缓存器22中的任一个中的标记元数据33时,存储器控制器26可确定目标数据引起处理器侧高速缓存未命中。另一方面,当标记元数据33包含在处理器侧高速缓存器22中的一或多个中时,存储器控制器26可确定目标数据引起处理器侧高速缓存器命中且因此不引起处理器侧高速缓存未命中。

当目标数据不引起处理器侧高速缓存未命中时,存储器控制器26可指示处理器侧高速缓存器22将目标数据供应到处理电路系统16,以便有助于改进数据检索速度并且因此改进计算系统10的操作效率(过程框52)。在一些实施例中,处理器侧高速缓存器22可输出具有匹配预期将与目标数据相关联的目标标记元数据值的标记元数据的高速缓存行。当存储于较高(例如,第K)高速缓存层级30中时,在一些实施例中,目标数据可在到达处理电路系统16之前通过一或多个较低(例如,第一)高速缓存层级。

另一方面,当引起处理器侧高速缓存未命中时,存储器控制器26可从计算系统10的存储器子系统14请求目标数据(过程框56)。在一些实施例中,存储器控制器26可指示存储器子系统14通过输出识别目标数据的存储器存取请求来检索目标数据。为了有助于改进计算系统10的操作效率,在一些实施例中,存储器控制器26可指示存储器子系统14经由单存储器存取请求从存储于存储器子系统14中的多个数据记录检索目标数据。

举例来说,为按经排序次序存取多个数据记录,存储器控制器26可输出识别目标存取索引和目标索引条目位置的向量[N,M]的存储器存取请求(过程框60)。另外或替代地,为存取数据记录块的特定部分(例如,一或多个数据字段)(例如,按地址次序),存储器控制器26可输出识别数据记录块的存储方位和数据记录中的每一个的目标部分的存储器存取请求(过程框62)。在任何情况下,至少部分地基于存储器存取请求,存储器子系统14可例如经由实施于存储器子系统14中的存储器侧存储器控制器26识别目标数据。

为了帮助说明,图4中展示包含存储器侧存储器控制器26B的存储器子系统14A的实例。如上文所描述,在一些实施例中,实施于存储器子系统14中的存储器装置18可包含易失性存储器和/或非易失性存储器64。举例来说,非易失性存储器64可包含一或多个快闪(例如,NAND)存储器装置18A、一或多个相变存储器(例如,3DXPoint

此外,如上文所描述,实施于存储器子系统14中的易失性存储器可组织成一或多个存储器阵列。举例来说,如将在下文更详细地描述,存储器子系统14可利用索引表存储器阵列。另外,在描绘的实施例中,存储器子系统14A可包含例如与索引表存储器阵列分开(例如,相异)的一或多个主存储器阵列66。

此外,在描绘的实施例中,主存储器阵列66可实施于存储器子系统14A中的每一存储器通道68中。举例来说,第一主存储器阵列66可实施于第一存储器通道68A中,且第M主存储器阵列66可实施于第M存储器通道68M中。为了有助于存取其主存储器阵列66(例如,从其主存储器阵列66读取和/或写入到其主存储器阵列66),在描绘的实施例中,存储器通道68可包含分别耦合到主存储器阵列66的行和列的行选择(例如,解码器)电路系统70和列选择电路系统72。

为了帮助说明,图5中展示可用于实施存储器通道68中的主存储器阵列66的存储器阵列66A的实例。在所描绘的实例中,存储器阵列66A可包含耦合到在第一(例如,水平)方向上形成的字线76的存储器单元74。换句话说,存储器单元行78可包含耦合到对应字线76的存储器单元74中的每一个。举例来说,第一存储器单元行78A可包含耦合到第一字线76A的存储器单元74中的每一个,第二存储器单元行78B可包含耦合到第二字线76B的存储器单元74中的每一个,以此类推到第H存储器单元行78H包含耦合到第H字线76H的存储器单元74中的每一个。

另外,在所描绘的实例中,存储器单元74可经由在第二(例如,竖直)方向上形成的位线82耦合到列放大器80。换句话说,存储器单元列84可包含耦合到对应列放大器80的每一存储器单元74。举例来说,第一存储器单元列84A可包含经由第一位线82A耦合到第一列放大器80A的每一存储器单元74,第二存储器单元列84B可包含经由第二位线82B耦合到第二列放大器80B的每一存储器单元74,以此类推到第W存储器单元列84W包含经由第W位线82W耦合到第W列放大器的每一存储器单元74。

在任何情况下,存储器单元74大体上包含开关组件,例如金属氧化物半导体场效应晶体管(MOSFET),以及存储组件,例如电容器。举例来说,可实施存储器单元74以使得其MOSFET耦合于位线82与其存储电容器之间,且其MOSFET的栅极耦合到字线76。因此,在一些实施例中,每一存储器单元74可用于存储一位的数据。举例来说,存储器单元74可指示当存储于存储器单元74中的电荷产生大于阈值电压的电压时的1位和当存储于存储器单元74中的电荷产生小于阈值电压的电压时的0位。在其它实施例中,存储器单元74可实施为存储多个位的数据。举例来说,四层级单元(QLC)NAND存储器中的存储器单元74可实施为存储两个位的数据。

在任何情况下在描绘的实施例中,存储器阵列66A中的存储器单元74可分组成存储数据记录的存储方位(例如,块)86。举例来说,第一数据记录86A可存储于包含第一存储器单元行78A和第一存储器单元列84A中的存储器单元74的第一存储方位处,第二数据记录86B可存储于包含第二存储器单元行78B和第一存储器单元列84A中的存储器单元74的第二存储方位处等。换句话说,在一些实施例中,多个数据记录86可存储为存储器阵列66A中的例如连续存储器地址处的(例如,连续)块。

另外或替代地,一或多个数据记录86可存储于不连续存储器地址处(例如,稀疏阵列中)。举例来说,第R数据记录86R可存储于包含第一存储器单元行78A和第二存储器单元列84B中的存储器单元74的第R存储方位处,且/或第W数据记录86W可存储于包含第H存储器单元行78H和第W存储器单元列84W中的存储器单元的第W存储方位处。为了有助于存取存储器阵列66A中的存储方位,可各自经由对应行地址(例如,物理存储器地址)识别存储器单元行78,且可各自经由列地址(例如,物理存储器地址)识别存储器单元列84。

另外,为了有助于存取存储器阵列66A中的存储方位,如上文所描述,行选择电路系统70可连接到存储器阵列66A的行。换句话说,行选择电路系统70可经由第一字线76A耦合到第一存储器单元行78A,经由第二字线76B耦合到第二存储器单元行78B,以此类推到行选择电路系统70经由第H字线76H耦合到第H存储器单元行78H。因此,为了使得能够读取和/或写入存储器单元74,行选择电路系统70可例如通过经由对应字线76输出激活(例如,逻辑高)信号激活存储器单元74,致使存储器单元74的开关组件将存储器单元74的存储组件电耦合到相应位线82。

此外,如上文所描述,列选择电路系统72可耦合到存储器阵列66A的列。换句话说,列选择电路系统72可经由第一位线82A和第一列放大器80A耦合到第一存储器单元列84A,经由第二位线82B和第二列放大器80B耦合到第二存储器单元列84B,以此类推到列选择电路系统72经由第W位线82W和第W列放大器耦合到第W存储器单元列84W。在一些实施例中,列放大器80可包含促进将数据存储(例如,写入)到存储器单元74中的驱动器和/或促进从存储器单元74输出(例如,读取)数据的感测放大器。

在一些实施例中,列选择电路系统72可例如通过将列选择输出到对应列放大器80,选择性地使得能够从存储器单元列84读取和/或写入到存储器单元列84。换句话说,为了从第一存储器单元列84A读取数据(例如,第一数据记录86A和/或第二数据记录86B)和/或将数据记录86A写入到第一存储器单元列84A,列选择电路系统72可将列选择(例如,逻辑高)信号输出到第一列放大器80A。另外,为了从第二存储器单元列84B读取数据(例如,第R数据记录86R)和/或将数据写入到第二存储器单元列84B,列选择电路系统72可将列选择信号输出到第二列放大器80B。此外,为了从第W存储器单元列84W读取数据(例如,第W数据记录86W)和/或将数据写入到第W存储器单元列84W,列选择电路系统72可将列选择信号输出到第W列放大器80W。

在任何情况下,如上文所描述,数据记录86可包含一或多个数据字段88。举例来说,在所描绘实施例中,数据记录86中的一或多个可包含第一数据字段88A和第F数据字段88F。如上文所描述,在一些实施例中,数据记录86可利用分配用于指示特定数据字段88的特定位位置的数据结构。举例来说,数据结构可分配数据记录86中的用于指示名称字段88的位[0,X]、数据记录86中的用于指示街道地址字段88的位[X+1,Y],以及数据记录86中的用于指示邮政编码字段88的位[Y+1,Z]。如上文所描述,在一些实施例中,一或多个数据字段88可索引化,以例如促进按经排序次序存取对应数据记录86。

返回到图6的存储器子系统14A,为了有助于按经排序次序存取数据,存储器侧存储器控制器26B可利用一或多个索引表90。在一些实施例中,每一索引表90可与包含在存储于存储器子系统14A中的一或多个数据记录86中的不同数据字段88对应。举例来说,索引表90可包含当一或多个数据记录86包含名称字段88时的名称索引表、当一或多个数据记录86包含街道地址字段88时的街道地址索引表和/或当一或多个数据记录86包含邮政编码字段88时的邮政编码索引表。

另外,在一些实施例中,索引表90可包含各自与包含对应数据字段88的数据记录86对应的一或多个索引条目。举例来说,名称索引表90可包含当第一数据记录86A包含名称字段时与第一数据记录86A对应的第一名称索引条目、当第二数据记录86B包含名称字段时与第二数据记录86B对应的第二名称索引条目等。另外,街道地址索引表90可包含当第一数据记录86A包含街道地址字段88时与第一数据记录86A对应的第一街道地址索引条目、当第二数据记录86B包含街道地址字段88时与第二数据记录86B对应的第二街道地址索引条目等。此外,邮政编码索引表90可包含当第一数据记录86A包含邮政编码字段88时与第一数据记录86A对应的第一邮政编码索引条目、当第二数据记录86B包含邮政编码字段88时与第二数据记录86B对应的第二邮政编码索引条目等。

为了有助于识别对应数据记录86,在一些实施例中,索引条目可例如经由指向存储器子系统14中的存储器地址的指针识别对应数据记录86的存储方位。换句话说,与第一数据记录86A对应的第一索引条目可指示存储器子系统14中的第一数据记录86A的存储方位,与第二数据记录86B对应的第二索引条目可指示存储器子系统14中的第二数据记录86B的存储方位等。另外,为了有助于排序,在一些实施例中,索引条目可指示对应数据字段88的值。举例来说,第一邮政编码索引条目可指示第一数据记录86A中的邮政编码字段88的值,第二邮政编码索引条目可指示第二数据记录86B中的邮政编码字段88的值等。

为了帮助进一步说明,在图6中示出实例索引表90的图形表示。如所描绘,索引表90可包含各自与索引条目位置对应的索引化数据字段列94和一或多个索引条目位置列96。另外,在所描绘的实例中,索引表90可包含各自对应于不同索引表90的索引表行92。

换句话说,索引表行92可指示索引化数据字段列94中的对应索引化数据字段(例如,存取索引)。举例来说,第一索引表行92A中的索引化数据字段列94可指示第一索引表行92A与第一数据字段88A对应。另外,第F索引表行92F中的索引化数据字段列94可指示第F索引表行92F与第F数据字段88F对应。

此外,索引表行92可指示各自与包含索引条目位置列96中的索引化数据字段的数据记录85对应的索引条目。举例来说,第一索引表行92A中的索引条目位置列96可包含当第一数据记录86A包含第一数据字段88A时与第一数据记录86A对应的索引条目、当第W数据记录86W包含第一数据字段88A时与第W数据记录86W对应的索引条目等。另外,第F索引表行92F中的索引条目位置列96可包含当第R数据记录86R包含第F数据字段88F时与第R数据记录86R对应的索引条目、当第一数据记录86A包含第一数据字段88A时与第一数据记录86A对应的索引条目等。

此外,如上文所描述,索引表90中的索引条目可指示存储器子系统14中的对应数据记录86的存储方位和数据记录86中的对应索引化数据字段88的值。举例来说,第一索引表行92A中与第一数据记录86A对应的索引条目可识别第一数据记录86A的存储方位和第一数据记录86中所指示的第一数据字段88A的值,第一索引表行92A中与第W数据记录86W对应的索引条目可识别第W数据记录86W的存储方位和第W数据记录86W中所指示的第一数据字段88A的值等。另外,第F索引表行92F中与第R数据记录86R对应的索引条目可识别第R数据记录86F的存储方位和第R数据记录86R中所指示的第F数据字段88F的值,第F索引表行92F中与第一数据记录86A对应的索引条目可识别第一数据记录86A的存储方位和第一数据记录86A中所指示的第F数据字段88F的值。

如上文所描述,在一些实施例中,指示对应索引条目中的索引化数据字段88的值可有助于改进对对应数据记录86A的经排序存取。特定来说,在一些实施例中,指示对应索引条目中的索引化数据字段88的值可使得存储器侧存储器控制器26B能够例如在无需调整实际数据记录86下仅通过调整索引条目的索引条目位置,按升序、降序或任何其它合适的次序将对应数据记录86排序。举例来说,在所描绘的实例中,可通过指示包含第一索引条目位置列106A中的第一索引条目位置中的索引化数据字段的最低(例如,最小)值的索引条目和包含第V(例如,最后一个)索引条目位置列106V中的第V(例如,最后一个)索引条目位置中的索引化数据字段的最高(例如,最大)值的索引条目,按升序将索引条目排序。

换句话说,通过读取(例如,遍历)包含在索引表行92中的索引条目位置列96,存储器控制器26(例如,存储器侧存储器控制器26B)可确定存储器子系统14中的包含对应索引化数据字段的数据记录86的存储方位。举例来说,通过读取第一索引表行92A中的索引条目位置列96,存储器控制器26可确定第一数据记录86A的存储方位和第W数据记录86W的存储方位,并且因此确定所述两个存储方位均包含第一数据字段88A。另外,通过读取第F索引表行92F中的索引条目位置列96,存储器控制器26可确定第R数据记录86R的存储方位和第一数据记录86A的存储方位,且因此确定所述两个存储方位均包含第F数据字段88F。在任何情况下,如上文所描述,在一些实施例中,索引表90存储于专用存储器中,例如实施于单独存储(例如,存储器)装置中和/或与一或多个主存储器阵列66相异(例如,分开)的索引表存储器阵列。

为帮助说明,在图7中示出包含存储器子系统14的索引表存储器阵列100的部分108的实例。在描绘的实施例中,索引表90可各自存储于索引表存储器阵列100的存储器单元行78中。举例来说,第一索引表90A可存储于索引表存储器阵列100的第一存储器单元行78A中,且第F索引表90F可存储于索引表存储器阵列100的第F存储器单元行78F中。换句话说,第一索引表90A可与第一索引表行92A对应,且第F索引表90F可与第F索引表行92F对应。

另外,在描绘的实施例中,索引条目102可各自存储于索引表存储器阵列100的存储器单元列84中。举例来说,第一索引条目102A可存储于索引表存储器阵列100的第一存储器单元列84A中,第二索引条目102B可存储于索引表存储器阵列100的第二存储器单元列84B中,以此类推到第V索引条目102V存储于索引表存储器阵列100的第V存储器单元列84V中。换句话说,在一些实施例中,索引表存储器阵列100中的存储器单元列84可各自与索引条目位置列96对应并且因此与对应的索引条目位置对应。举例来说,由于存储于第一存储器单元行78A的第一存储器单元列84A中,存储器控制器26(例如,存储器侧存储器控制器26B)可确定第一索引条目102A包含在第一索引表90A中第一(例如,最小或最低)索引条目位置处。另外,由于存储于第一存储器单元行78A的第V存储器单元列84V中,存储器控制器26可确定第V索引条目102V包含在第一索引表90A中第V(例如,最大或最高)索引条目位置处。

为了有助于存取索引条目位置,在描绘的实施例中,条目单元104可例如经由对应列放大器80耦合到索引表存储器阵列100中的每一存储器单元列84。换句话说,第一条目单元104A可耦合到索引表存储器阵列100中的第一存储器单元列84A,第二条目单元104B可耦合到索引表存储器阵列100中的第二存储器单元列84B,以此类推到第V条目单元104V耦合到索引表存储器阵列100中的第V存储器单元列84V。另外,在描绘的实施例中,不同条目单元104可以通信方式耦接,例如以实现其间的数据移位。

在一些实施例中,与存储器单元列84对应的条目单元104可以通信方式耦合到与相邻存储器单元列84对应的条目单元104。举例来说,第一条目单元104A可仅以通信方式耦合到第二条目单元104B且/或第V条目单元104V可仅以通信方式耦合到第V-1条目单元104,其对应于索引表存储器阵列100中的第V-1存储器单元列84。另一方面,第二条目单元104B可以通信方式耦合到第一条目单元104A和第三条目单元104两者,其对应于索引表存储器阵列100中的第三存储器单元列84。另外,在一些实施例中,条目单元104可包含在存储器控制器26(例如实施于存储器子系统14中的存储器侧存储器控制器26B)中。

在任何情况下,如将在下文更详细地描述,条目单元104(例如,存储器控制器26)可执行数据处理操作(例如,功能),例如以有助于通过将新索引条目102N添加到索引表90来更新索引表90。然而,如上文所描述,经实施以执行更复杂数据处理操作的处理电路系统与存储器电路系统相比通常更高度掺杂。另外,较高掺杂通常增加产生泄漏电流的可能性,至少在一些情况下,这可例如通过损坏存储于存储器子系统14中的数据,影响存储器子系统14的操作可靠性。

因此,在描绘的实施例中,条目单元104可包含寄存器106和比较逻辑电路系统108,至少在一些情况下,举例来说,与处理子系统12和/或完整熔断存储器内处理器(PIM)相比,所述比较逻辑电路系统108可以较低经掺杂处理电路系统予以实施。使用其寄存器106,条目单元104可存储例如从索引表存储器阵列100读取的索引条目102。在一些实施例中,寄存器106中的一或多个可为六十四字节寄存器。

另外,使用其比较逻辑电路系统108,条目单元104可将目前存储于其寄存器106中的索引条目102与接收到的(例如,输入的)例如从另一条目单元104移位的索引条目102和/或将添加到对应索引表90的新索引条目102N进行比较。在一些实施例中,实施于条目单元104中的比较逻辑电路系统108可将由存储于其寄存器106中的索引条目102指示的数据字段88的值与由所接收的索引条目102指示的数据字段88的值进行比较。举例来说,比较逻辑电路系统108可指示由所接收的索引条目102指示的数据字段88的值是否大于存储于条目单元104的寄存器106中的数据字段88的值。至少部分地基于所述比较,对应索引表90可经更新以例如包含新索引条目102N。

在图8中描述用于产生索引条目的过程110的实例。一般来说,过程110包含确定数据记录的存储方位(过程框112),识别数据记录中的数据字段(过程框114),以及产生与数据记录对应的索引条目(过程框116)。尽管以表示特定实施例的特定次序描述,但应注意,过程110可以任何合适的次序执行。另外,过程110的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程110。

因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可确定存储器子系统14中的数据记录86的存储方位(过程框112)。如上文所描述,在一些实施例中,可经由例如实施于存储器子系统14中的主存储器阵列66和/或非易失性存储器64中的存储数据的(例如,虚拟和/或物理)存储器地址来指示数据的存储方位。作为说明性实例,关于图5,存储器控制器26可确定第一数据记录86A存储于第一行地址和列地址配对处,所述第一行地址和列地址配对识别存储器阵列66A中的第一存储器单元行78A和第一存储器单元列84A。

返回到图6的过程110,存储器控制器26可另外识别包含在数据记录86中的数据字段88并且确定数据字段88的值(过程框114)。如上文所描述,在一些实施例中,数据记录86可包含一或多个数据字段88。另外,如上文所描述,在一些实施例中,数据记录86可利用分配用于指示特定数据字段88的特定位位置的数据结构。

因此,为了有助于确定数据字段88的值,存储器控制器26可确定供数据记录86使用的数据结构。在一些实施例中,数据记录86的数据结构可预定义,例如以使得数据结构的指示先前存储于存储器子系统14中。另外或替代地,可例如经由与数据记录86包含在一起的元数据(例如,标头数据)和/或与数据记录86一起接收到的单独控制信号(例如,命令或请求)明确指示数据记录86的数据结构。

至少部分地基于数据结构,存储器控制器26可读取数据记录86中的位位置以确定由数据记录86中的数据字段88指示的值。举例来说,当数据结构分配用于指示名称字段88(例如,第一数据字段88A)的位[0,X]时,存储器控制器26可通过读取数据记录86中的位[0,X],确定名称字段88的值。另外,当数据结构分配用于指示街道地址字段88的位[X+1,Y]时,存储器控制器26可通过读取数据记录86中的位[X+1,Y],确定地址字段88的值。此外,当数据结构分配用于指示邮政编码字段(例如,第F数据字段88F)的位[Y+1,Z]时,存储器控制器26可通过读取数据记录86中的位[Y+1,Z],确定邮政编码字段88的值。

至少部分地基于其存储方位和由其数据字段88指示的值,存储器控制器26可产生与数据记录86对应的(例如,新)索引条目102(过程框116)。如上文所描述,在一些实施例中,索引条目102可指示对应数据记录86的存储方位和包含在数据记录86中的对应数据字段88的值。举例来说,存储器控制器26可产生指示数据记录86的存储方位和其名称字段88的值的名称索引条目102。另外,存储器控制器26可产生指示数据记录86的存储方位和其街道地址字段88的值的街道地址索引条目。此外,存储器控制器26可产生指示数据记录86的存储方位和其邮政编码字段88的值的邮政编码索引条目。在任何情况下,如上文所描述,为了有助于提供经排序存取,可更新索引表90以例如添加一或多个新索引条目102N。

为了帮助说明,在图9中描述用于产生和/或更新按升序经排序的索引表90的过程120的实例。一般来说,过程120包含接收当前索引条目(过程框122),接收另一索引条目(过程框124),确定另一数据字段值是否大于当前数据字段值(决策框126),以及当另一数据字段值大于当前数据字段值时维持当前索引条目位置处的当前索引条目(过程框128)。另外,当另一数据字段值不大于当前数据字段值时,过程120包含使当前索引条目移位到下一索引条目位置(过程框130)并且将另一索引条目存储于当前索引条目位置处(过程框132)。

尽管以表示特定实施例的特定次序描述,但应注意,过程120可以任何合适的次序执行。另外,过程120的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程120。

因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可例如从索引表存储器阵列100经由对应条目单元104接收目前存储于索引表90中之每一索引条目位置处的索引条目102(过程框122)。为帮助说明,关于图7,第一条目单元104A可从第一存储器单元列84A接收目前存储于第一索引表90A中的第一索引条目位置处的第一索引条目102A并且将第一索引条目102A存储于其寄存器106中。另外,第二条目单元104B可从第二存储器单元列84B接收目前存储于第一索引表90A中的第二索引条目位置处的第二索引条目102B并且将第二索引条目102B存储于其寄存器106中。

返回到图9的过程120,除了当前索引条目102之外,存储器控制器26还可接收另一索引条目102(过程框135)。在一些实施例中,另一索引条目102可为将添加到对应索引表90的新索引条目102N。另外或替代地,另一索引条目102可为从另一条目单元104接收到(例如,移位)的索引条目102。为帮助说明,关于图7,举例来说,当第一条目单元104A确定新索引条目102N中所指示的数据字段88的值不大于第一索引条目102A中所指示的数据字段88的值时,第二条目单元104B可从第一条目单元104A接收第一索引条目102A。

返回到图9的过程120,存储器控制器26接着可确定另一索引条目102中所指示的数据字段88的值是否大于当前索引条目102中所指示的数据字段88的值(决策框126)。举例来说,关于图7,第一条目单元104A可经由其比较逻辑电路系统108,将第一索引条目102A中所指示的数据字段88的值与新索引条目102N中所指示的数据字段88的值进行比较。另外,当第一索引条目102A移位到第二条目单元104B时,第二条目单元104B可经由其比较逻辑电路系统108,将第一索引条目102A中所指示的数据字段88的值与第二索引条目102B中所指示的数据字段88的值进行比较。另一方面,当第一索引条目102A不移位到第二条目单元104B时,第二条目单元104B可经由其比较逻辑电路系统108,将新索引条目102N中所指示的数据字段88的值与第二索引条目102B中所指示的数据字段88的值进行比较。

在任何情况下,返回到图9的过程120,当另一索引条目102中所指示的另一数据字段值大于当前索引条目102中所指示的当前数据字段值时,存储器控制器26可维持其当前索引条目位置处的当前索引条目102(过程框128)。另一方面,当另一数据字段值不大于当前数据字段值时,存储器控制器26可将当前索引条目102移位到下一索引条目位置(过程框130)并且将另一索引条目存储于当前索引条目位置处(过程框132)。举例来说,关于图7,当新索引条目102N中所指示的数据字段值不大于第一索引条目102A中所指示的数据字段值时,第一条目单元104A可将第一索引条目102A输出到第二条目单元104B,进而将第一索引条目102A从第一索引条目位置移位到第一索引表90A中的第二(例如,下一)索引条目位置。另外,当新索引条目102N中所指示的数据字段值不大于第一索引条目102A中所指示的数据字段值时,第一条目单元104A可用新索引条目102N覆写其寄存器106,进而将新索引条目102N存储于第一索引表90A的第一索引条目位置中。以此方式,存储器子系统14可产生和/或更新索引表90,例如以便于提供对存储于存储器子系统14中的数据的经排序存取。

然而,如上文所描述,为了有助于产生和/或更新索引表90,存储器子系统14可执行数据处理操作。虽然可限制数据处理操作的计算复杂性(例如,减小产生泄漏电流的可能性),但至少在一些情况下,数据处理操作的性能并非瞬时的。为减小此类数据处理操作影响数据检索时延的可能性,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可在处理子系统预期不以对应数据记录86为目标产生和/或更新索引表90。举例来说,存储器子系统14可响应于一或多个数据记录86写入到主存储器阵列66而产生和/或更新索引表90。

为帮助说明,在图10中描述用于操作存储器子系统14以存储数据记录86并且提供对数据记录86的存取的过程134的实例。一般来说,过程134包含接收数据记录(过程框135),将数据记录存储为存储器子系统中的块(过程框136),确定是否期望跨步存取(决策框138),以及确定经排序存取指针(过程框142)。另外,当期望跨步存取时,过程134包含确定跨步存取指针(过程框140)。

尽管以表示特定实施例的特定次序描述,但应注意,过程134可以任何合适的次序执行。另外,过程134的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程134。

在任何情况下,存储器子系统14可例如从处理子系统12接收数据记录86以用于存储于其存储器装置18(过程框135)。为了有助于将数据记录86存储于其存储器装置18中,在一些实施例中,存储器子系统14可提供包含分配函数的应用程序编程接口(API)。分配函数的实例如下:

Alloc(Ptr,RcdCount,RcdSize,IndexCount,[IndexField]*) (1)

其中Alloc()是分配函数,Ptr是指向存储器子系统14中的开始存储方位的指针,RcdCount是将包含在块中的数据记录86的数目,RcdSize是数据记录86中的每一个的大小,IndexCount是将索引化的数据字段88的数目,且[IndexField]*指示将索引化的一或多个特定数据字段88。

换句话说,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可至少部分地基于供所接收数据记录86使用的数据结构执行分配函数(过程框142)。如上文所描述,在一些实施例中,数据记录86的数据结构可预定义,例如以使得数据结构的指示先前存储于存储器子系统14中。另外或替代地,可例如经由与数据记录86包含在一起的元数据(例如,标头数据)和/或与数据记录86一起接收到的单独控制信号(例如,命令或请求)明确指示数据记录86的数据结构。在任何情况下,通过执行分配函数,存储器子系统14可分配用于将数据记录86存储于例如主存储器66中的连续存储器地址块(例如,&Ptr+(RcdCount*RcdSize))。因此,在一些实施例中,存储器子系统14可响应于接收到数据记录86而自动执行分配函数。

存储器子系统14接着可例如响应于分配函数的执行而自动将数据记录86存储于分配的存储器地址中(过程框136)。在一些实施例中,存储器子系统14可将数据记录86存储为连续块。换句话说,在这类实施例中,存储器子系统14可将数据记录存储于连续存储方位(例如,存储器地址)处。另外,在一些实施例中,存储器子系统14可例如响应于对应数据记录86存储于存储器子系统14(例如,主存储器阵列66)中而自动产生一或多个索引条目102。

在一些实施例中,针对数据记录86产生的索引条目102的数目可等于输入到分配函数的IndexCount参数的值。另外,在一些实施例中,针对数据记录86产生的索引条目102可各自对应于由输入到分配函数的[IndexField]*参数指示的特定数据字段88中的一个不同数据字段。此外,在一些实施例中,存储器子系统14可例如响应于产生对应索引条目102而自动产生和/或更新一或多个索引表90。

为了便于提供对所存储的数据的跨步存取,在一些实施例中,存储器子系统14可确定跨步存取指针(过程框140)。如上文所描述,存储器子系统14可通过识别一或多个数据记录86的特定部分(例如,一或多个数据字段88)提供跨步存取。在一些实施例中,跨步存取指针可识别存储器子系统14中的数据记录86的对应部分的存储方位。举例来说,名称跨步存取指针可识别第一数据记录86A、第二数据记录86B等中的名称字段88的存储方位。另外或替代地,邮政编码跨步存取指针可识别第一数据记录86A、第二数据记录86B等中的邮政编码字段88的存储方位。

为了便于确定跨步存取指针,在一些实施例中,存储器子系统14可提供包含跨步存取函数的应用程序编程接口(API)。跨步存取函数的实例如下:

StPtr = Striding (Ptr, FieldOffset, FieldLength, StrideLength) (2)

其中StPtr是跨步存取指针,Striding()是跨步存取函数,Ptr是指向存储器子系统14中的开始存储方位的指针,FieldOffset是数据记录86中的目标数据字段88的开始位位置,FieldLength是目标数据字段88的大小,且StrideLength是后续数据记录86之间的跨步长度。换句话说,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可至少部分地基于供所接收的数据记录86使用的数据结构执行跨步存取函数,以确定例如各自与包含在数据记录86中的每一个中的数据字段88对应的一或多个跨步存取指针(过程框144)。为了促进减小跨步存取指针的确定影响数据检索时延的可能性,在一些实施例中,存储器子系统14可例如响应于一或多个数据记录86存储于存储器子系统14(例如,主存储器阵列66)中而自动执行跨步存取函数。

另外或替代地,为了促进提供对所存储的数据的经排序存取,存储器子系统14可确定经排序存取指针(过程框142)。如上文所描述,存储器子系统14可通过以例如不同于地址次序的经排序次序识别数据记录86来提供经排序存取。在一些实施例中,经排序存取指针可以经排序次序来识别存储器子系统14中的数据记录86的存储方位。举例来说,名称经排序存取指针可以基于包含在数据记录86中的每一个中的名称字段88的值的排序的次序来识别数据记录86的存储方位。另外或替代地,邮政编码经排序存取指针可以基于包含在数据记录86中的每一个中的邮政编码字段88的值的排序的次序来识别数据记录86的存储方位。换句话说,在一些实施例中,经排序存取指针可识别例如索引表存储器阵列100中的对应索引表90的存储方位。

为了促进确定经排序存取指针,在一些实施例中,存储器子系统14可提供包含经排序存取函数的应用程序编程接口(API)。经排序存取函数的实例如下:

SoPtr = Sorted (Ptr, IndexField) (3)

其中SoPtr是经排序存取指针,Sorted()是经排序存取函数,Ptr是指向存储器子系统14中的开始存储方位的指针,且IndexField指示将索引化的特定数据字段88。因此,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可执行经排序存取函数以确定例如各自与索引表90和/或包含在数据记录86中的一或多个中的数据字段88对应的一或多个经排序存取指针(过程框146)。为了有助于减小经排序存取指针的确定影响数据检索时延的可能性,在一些实施例中,存储器子系统14可例如响应于产生和/或更新一或多个索引表90而自动执行经排序存取函数。

以此方式,存储器子系统14可例如通过响应于数据存储于存储器子系统14(例如,主存储器阵列66)中而自动执行数据处理操作,在数据处理操作影响(例如,增加)数据检索时延的可能性减小的情况下执行数据处理操作。实际上,在一些实施例中,以此方式实施数据处理操作可例如通过使得存储器子系统14能够使用跨步存取指针和/或经排序存取指针识别目标数据,有助于改进(例如,减小)后续数据检索时延。此外,如上文所描述,在存储器子系统14中提供地址管理功能可例如通过实现计算系统10中的存储器子系统14和处理子系统12之间的数据通信减少,促进改进计算系统10的操作效率。

为帮助说明,在图11中描述用于操作存储器控制器26(例如存储器侧存储器控制器26B)的过程148的实例。一般来说,过程148包含接收存储器存取请求(过程框150),确定目标数据(过程框152),确定目标数据是否引起主存储器阵列未命中(决策框154),以及将目标数据输出到处理子系统(过程框158)。另外,当目标数据引起主存储器阵列未命中时,过程148包含从非易失性存储器检索目标数据(过程框156)。

尽管以表示特定实施例的特定次序描述,但应注意,过程148可以任何合适的次序执行。另外,过程148的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程148。

因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可例如从处理电路系统16或处理器侧存储器控制器26A接收存储器存取请求,所述存储器存取请求识别目前被计算系统10的处理电路系统16定为目标的数据(过程框150)。在一些实施例中,存储器存取请求可经由其虚拟存储器地址识别目标数据。另外或替代地,存储器存取请求可经由其物理存储器地址识别目标数据,所述物理存储器地址指示存储器子系统14中的目标数据的存储方位。举例来说,物理存储器地址可包含行地址和列地址配对,所述行地址和列地址配对识别主存储器阵列66中的存储目标数据的存储器单元行78和存储器单元列84。

因而,至少部分地基于存储器存取请求,存储器控制器26可确定目前被处理电路系统16定为目标的数据(过程框160)。在一些实施例中,存储器控制器26可另外或替代地预测随后处理电路系统将什么数据定为目标(过程框162)。如上文所描述,至少在一些情况下,预测性地识别预期随后将被定为目标的数据可例如通过避免后续存储器存取请求和/或减小当数据实际上被定为目标时的检索时间,有助于改进计算系统10的操作效率。

为帮助说明,在图12中描述预测性地识别预期随后将被定为目标的数据的过程166的实例。一般来说,过程166包含基于目前被定为目标的数据确定数据存取模式(过程框168),推断控制时域内的数据存取模式(过程框170),以及随后基于推断的数据存取模式预测被定为目标的数据(过程框172)。

尽管以表示特定实施例的特定次序描述,但应注意,过程166可以任何合适的次序执行。另外,过程166的实施例可省略过程框和/或包含额外过程框。此外,在一些实施例中,可至少部分地通过使用处理电路(例如在存储器控制器26中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器26中实施的存储器)中的指令来实施过程166。

因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可至少部分地基于目前将什么数据定为目标来确定数据存取模式(过程框168)。如上文所描述,存储器存取请求可例如通过实施于处理子系统12中的处理电路系统16识别目前被定为目标的数据。换句话说,在一些实施例中,存储器控制器26可至少部分地基于一或多个对应存储器存取请求来确定数据存取模式。

另外,如上文所描述,在一些实施例中,处理子系统12可使用单存储器存取请求识别来自多个数据记录86的数据。举例来说,第一存储器存取请求可指示目标存取索引和目标索引条目位置的向量[N,M]。因此,存储器控制器26可确定第一存储器存取请求产生第一数据存取模式,所述第一数据存取模式以与对应于目标存取索引的索引表90中的第N+1索引条目位置到第M+1索引条目位置处的索引条目102对应的数据记录86为目标。另外或替代地,第二存储器存取请求可指示数据记录块86的存储方位和数据记录86中的每一个中的目标数据字段88。因此,存储器控制器26可确定第二存储器存取请求产生第二数据存取模式,所述第二数据存取模式以存储于所述块中的每一数据记录86中的特定数据字段88为目标。

在任何情况下,存储器控制器26接着可推断在即将到来的控制时域内的数据存取模式(过程框170)。在一些实施例中,控制时域可为从当前时间到预期将接收到另一存储器存取请求的未来时间的时间段(例如,一或多个时钟循环)。换句话说,通过推断数据存取模式,存储器控制器26可预测随后将什么数据定为目标(过程框172)。举例来说,通过推断由第一存储器存取请求产生的第一数据存取模式,存储器控制器26可预测处理电路系统16随后将与对应于目标存取索引的索引表90中的索引条目位置的向量[M+1,2M-N+1]对应的数据记录86定为目标。

除了推断的数据存取模式之外,在一些实施例中,存储器控制器26还可至少部分地基于供存储于存储器子系统14中的数据记录86使用的数据结构预测随后将什么数据定为目标。举例来说,通过推断由第二存储器存取请求产生的第二数据存取模式,存储器控制器26可预测处理电路系统16随后将存储于块中的数据记录86中的每一个中的另一数据字段88定为目标。另外,至少部分地基于供数据记录86使用的数据结构,存储器控制器26可预测另一数据字段88是与被第二存储器存取请求定为目标的数据字段88相邻的数据字段88。以此方式,存储器子系统14可预测性地识别预期随后将被例如实施于处理子系统12中的处理电路系统16定为目标的数据。

返回到图11的过程148,存储器控制器26可确定(例如,当前和/或预测的)目标数据是否引起主存储器阵列未命中(决策框154)。如上文所描述,在一些实施例中,存储器控制器26可至少部分地基于与数据相关联的(例如,虚拟和/或物理)存储器地址确定存储器子系统14中的数据的存储方位。举例来说,当对应存储器地址实施于主存储器阵列66中时,存储器控制器26可确定目标数据不引起主存储器阵列未命中,且因此指示存储器子系统14从主存储器阵列66检索(例如,读取)目标数据。另一方面,当对应存储器地址不实施于主存储器阵列66中的任一个中时,存储器控制器26可确定目标数据引起主存储器阵列未命中,且因此指示存储器子系统14从非易失性存储器64检索(例如,读取)目标数据(过程框156)。

在任何情况下,在从存储器装置18检索之后,存储器控制器26可指示存储器子系统14经由系统总线20将目标数据输出到处理子系统12(过程框158)。为了有助于进一步改进操作效率,在一些实施例中,存储器子系统14可例如响应于存储器存取请求和/或无需来自处理子系统12的单独(例如,另外)指令将目标数据直接存储到处理器侧高速缓存器22中(过程框164)。换句话说,在一些实施例中,存储器子系统14可事先将预期随后将被定为目标的数据直接存储到处理器侧高速缓存器22中,至少在一些情况下,这可通过当数据实际上被定为目标时使得能够从处理器侧高速缓存器22提供数据,有助于进一步改进操作效率

然而,如上文所描述,处理子系统12也可例如经由处理器侧存储器控制器26A控制其处理器侧高速缓存器22中的数据存储。因而,在一些实施例中,在目标数据存储于处理器侧高速缓存器22中之后,存储器控制器26可将控制信号输出到处理子系统12,所述控制信号指示目标数据已成功地存储于处理器侧高速缓存器22中且因此准备好进行处理和/或执行。此外,至少在一些情况下,将目标数据直接存储到处理器侧高速缓存器22中可与实施于处理子系统12中的数据存储控制发生冲突。举例来说,预测性地将预期随后将被定为目标的数据直接存储到处理器侧高速缓存器22中可无意中覆写仍被处理子系统12使用的其它数据,且因此当所述其它数据被定为目标时可引起处理器侧高速缓存未命中。为了有助于减小此类冲突影响数据检索时延的可能性,在一些实施例中,存储器子系统14可将目标数据直接存储到实施于较高高速缓存层级30(例如L3处理器侧高速缓存器22)中的处理器侧高速缓存器22和/或实施于第K高速缓存层级30K中的共享的处理器侧高速缓存器34中。以此方式,存储器子系统14可操作以将目标数据提供到处理子系统12。

返回到图3的过程46,在处理子系统12请求目标数据之后,存储器控制器26(例如,处理器侧存储器控制器26A)可确定是否已从存储器子系统14接收到目标数据(决策框58)。为了有助于改进操作效率,在一些实施例中,处理电路系统16可在处理子系统12等待返回目标数据时继续执行其它操作。另外,在一些实施例中,存储器控制器26可确定当从存储器子系统14接收到指示目标数据已成功地存储于处理器侧高速缓存器22中的控制信号时已接收到目标数据。

在任何情况下,在接收到目标数据之后,存储器控制器26可指示处理子系统12将例如来自处理器侧高速缓存器22的目标数据供应到处理电路系统16(过程框52)。在一些实施例中,处理器侧高速缓存器22可输出匹配预期与目标数据相关联目标标记元数据值的标记元数据的高速缓存行。当存储于较高层级高速缓存器(例如,共享的处理器侧高速缓存器34)中时,在一些实施例中,目标数据可在到达处理电路系统16之前通过一或多个较低层级高速缓存器(例如,私用处理器侧高速缓存器32)。

本公开的一或多个具体实施例描述于本文中且描述于对应的图中。这些描述的实施例仅是当前公开的技术的实例。另外,在努力提供这些实施例的简明说明的过程中,说明书中可能未描述实际实施方案的所有特征。应了解,在任何此类实际实施方案的展开中,如在任何工程或设计项目中一样,必须制定许多实施方案特定的决策以实现研发者的具体目标,例如服从系统相关的和商业相关的约束,所述约束可以从一个实施方案到另一个实施方案变化。此外,应认识到,这样的开发工作可能是复杂和耗时的,但对于从本公开受益的普通技术人员来说可能是日常设计、加工和制造工作。

当介绍本公开的各种实施例的要素时,冠词“一”和“所述”旨在表示存在所述要素中的一或多个。术语“包括(comprising)”、“包含(including)”和“具有”意图为包含性的且意味着可能存在除了所列元件之外的额外元件。另外,应理解,引用本公开“一个实施例”并非意图被解释为排除也结合所叙述特征的另外的实施例的存在。

上文所描述的具体实施例已通过举例方式展示,且应理解,这些实施例可接受各种修改和替代形式。应进一步理解,权利要求并非旨在限于公开的特定形式,而是旨在涵盖属于本公开的精神和范围内的所有修改、等同方案以及替代方案。

相关技术
  • 正向高速缓存存储器系统和方法
  • 正向高速缓存应用程序编程接口系统和方法
技术分类

06120112549017