CN112639748B - 异步正向缓存存储器系统和方法 - Google Patents
异步正向缓存存储器系统和方法 Download PDFInfo
- Publication number
- CN112639748B CN112639748B CN201980056134.6A CN201980056134A CN112639748B CN 112639748 B CN112639748 B CN 112639748B CN 201980056134 A CN201980056134 A CN 201980056134A CN 112639748 B CN112639748 B CN 112639748B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- subsystem
- index
- records
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/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/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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- 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
- G06F13/1684—Details of memory controller using multiple buses
-
- 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
- G06F13/1689—Synchronisation and timing concerns
-
- 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/1024—Latency reduction
-
- 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/1028—Power efficiency
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了与一或多个存储器系统(14)和操作有关的系统、设备和方法。一种存储器系统(14)可以经由一或多个数据总线(20)通信地耦合到处理器(12)。另外,所述存储器系统(14)可以包含存储数据的一或多个存储器装置(18),所述数据待由所述处理器(12)中实施的处理电路系统(16)使用以进行操作。此外,所述存储器系统(14)可以包含存储器控制器(26),所述存储器控制器经由所述一或多个数据总线(20)接收请求返回所述数据的存储器访问请求,并且作为响应,至少部分地基于所述存储器访问请求来确定所述数据在所述一或多个存储器装置(18)中的存储位置,并指示所述存储器系统(14)将所述数据直接存储到与所述处理电路系统(16)集成的处理器侧缓存(22)中,以使所述处理器(12)中实施的所述处理电路系统(16)基于所述数据来进行所述操作。
Description
背景技术
本公开总体上涉及存储器装置,并且更具体地,涉及在存储器子系统中实施的地址管理技术。
通常,计算系统包含处理子系统和存储器子系统,所述存储器子系统可以存储可由处理子系统的处理电路系统访问的数据。例如,为了进行操作,处理电路系统可以执行从存储器子系统的存储器装置检索的相对应指令。在一些实例中,也可以从存储器装置检索操作的数据输入。另外或可替代地,可以将操作的(例如,由其产生的)数据输出存储在存储器装置中,例如以实现后续的检索。然而,至少在一些实例中,计算系统的操作效率可能受限于其架构,例如所述架构掌控着计算系统中进行的操作的顺序。
附图说明
通过阅读以下详细描述并参考附图,可以更好地理解本公开的各个方面,其中:
图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 XPointTM)存储器装置、铁电随机存取存储器(FeRAM)装置或其任何组合)。
此外,在一些实施例中,可以在存储器模块(例如,双列直插式存储器模块(DIMM)或单列直插式存储器模块(SIMM))上实施多个存储器装置18。例如,存储模块可以包含印刷电路板(PCB)和多个存储器装置,每个存储器装置设置在印刷电路板的平坦或平面(例如,前或后)表面上。另外,存储器装置18可以经由印刷电路板上形成的导电迹线耦合到沿着印刷电路板的(例如,底部)边缘形成的外部引脚。
应当理解,可以使用其它包装技术来实施一或多个存储器装置18。例如,存储器装置18可以耦合到半导体(例如,硅)中介层以实施2.5D配置。另外或可替代地,存储器装置18可以被堆叠以实施3D配置。此外,在一些实施例中,可以使用有机封装技术来实施存储器装置18。换句话说,本公开中描述的技术可以被实施为封装上解决方案(on-packagesolution)。
在任何情况下,如上所述,存储器子系统14通常存储处理子系统12可访问的数据。为了促进数据通信,存储器子系统14和处理子系统12可以经由系统总线20(例如,包含一或多个数据总线)通信。在一些实施例中,系统总线20可以包含一或多个电缆、一或多个电线、一或多个导电迹线、一或多个通信网络或其任何组合,并且因此可以被实施为提供有限的通信带宽。在任何情况下,经由系统总线20,处理子系统12可以通信(例如,输出)数据以存储在存储器子系统14中。另外或可替代地,经由系统总线20,存储器子系统14可以例如响应于对由处理子系统12的处理电路系统16靶向的数据的请求而通信(例如,输出)数据以供处理子系统12进行处理和/或执行。
然而,如上所述,不同计算子系统之间的数据通信通常比计算子系统内的数据通信更慢。换句话说,与处理子系统12和存储器子系统14之间的数据通信相比,处理子系统12内(例如,其内部)的数据通信可以更快,并且因此促进减少数据检索延迟,这是例如由于系统总线20与其它计算子系统共享、处理子系统12和存储器子系统14之间的时序差异和/或处理子系统12与存储器子系统14之间的通信距离。因此,为了促进改善操作效率,可以在处理子系统12的处理电路系统16和存储器子系统14的存储器装置18之间实施缓存,例如以存储数据的实例(例如,拷贝),所述数据还存储在存储器装置18中。
如在所描绘的实例中,缓存可以包含处理子系统12中实施的一或多个处理器侧缓存22。在一些实施例中,一或多个处理器侧缓存22可以与处理电路系统16集成。例如,处理器侧缓存22可以包含L1缓存、L2缓存和/或L3缓存。为了促进减少数据检索延迟,在一些实施例中,与存储器子系统14中实施的存储器装置18相比,可以使用不同的存储器来实施处理器侧缓存22。例如,处理器侧缓存22可以用静态随机存取存储器(SRAM)来实施,而存储器装置18用动态随机存取存储器(DRAM)和/或非易失性存储器来实施。
为了促进控制缓存和/或存储器装置18中的数据存储,计算系统10可以包含一或多个存储器控制器26(例如,其经由指令总线20A通信地耦合到缓存和/或存储器装置18)。在一些实施例中,可以在存储器子系统14中实施一或多个存储器控制器26,例如作为存储器侧存储器控制器26。另外或可替代地,可以在处理子系统12中实施一或多个存储器控制器26,例如作为处理器侧存储器控制器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来实施更高的缓存级别。例如,可以用专用于第一处理器核28A的另一专用处理器侧缓存32和专用于第N处理器核28N的另一专用处理器侧缓存32来实施第二缓存级别30。换句话说,在一些实施例中,以第二缓存级别30实施的专用处理器侧缓存32可以包含一或多个L2缓存。
另外或可替代地,可以在多个处理器核28之间共享以更高的缓存级别实施的处理器侧缓存22。例如,在所描绘的实施例中,可以用由第一处理器核28A和第N处理器核28N共享的共享处理器侧缓存34来实施第K缓存级别30K。换句话说,在一些实施例中,以第K缓存级别30K实施的共享处理器侧缓存34可以包含L3缓存。
在任何情况下,如上所述,与存储器子系统14的存储器装置18中实施的主存储器阵列相比,缓存通常提供更快的数据访问(例如,读取和/或写入)速度。然而,缓存的存储容量通常小于主存储器阵列的存储容量。实际上,在一些实施例中,处理器侧缓存22A的总存储容量可以小于一或多个主存储器阵列的存储容量。
因此,为了促进改善数据访问速度并因此改善计算系统10的操作效率,处理器侧存储器控制器26A可以至少部分地基于数据何时期望为由处理电路系统16A靶向(例如,请求)来控制处理器侧缓存22A中的数据存储。例如,处理器侧存储器控制器26A可以控制数据存储,使得期望为由处理电路系统16A靶向的数据的实例(例如,拷贝)在处理电路系统16A实际上靶向数据之前被存储在一或多个处理器侧缓存22A中。另一方面,为了促进保存(例如,优化)处理器侧缓存22A的存储容量,处理器侧存储器控制器26A可以控制数据存储,使得不期望为由处理电路系统16A在即将到来的控制时域(例如,持续时间)期间靶向的数据块29的实例不存储在处理器侧缓存22A中。
此外,在一些实施例中,可以至少部分地基于分层缓存级别来控制处理器侧缓存22A中的数据存储。例如,处理器侧存储器控制器26A可以被实施成排他地控制较低缓存级别30(例如,第一缓存级别30A)的数据存储。另一方面,在一些实施例中,处理器侧存储器控制器26A可以例如与存储器侧存储器控制器26共享对较高缓存级别30(例如,第K缓存级别30K)的数据存储的控制。如将在下面更详细地描述,至少在一些实例中,例如通过使存储器子系统14直接和/或预测性地将数据存储到处理器侧缓存22中,共享对缓存级别30的数据存储的控制可以促进改善计算系统10的操作效率。
在图3中描述了用于操作存储器控制器26(例如,处理器侧存储器控制器26A)的过程46的一个实例。通常,过程46包含确定由处理电路系统靶向的数据(过程框48),确定目标数据是否导致处理器侧缓存未命中(判定框50)和将目标数据提供给处理电路系统(过程框52)。另外,当目标数据导致处理器侧缓存未命中时,过程46包含从存储器子系统请求目标数据(过程框56)和确定是否已经从存储器子系统接收目标数据(判定框58)。
尽管以表示一个特定实施例的特定顺序进行描述,但是应当注意,可以以任何适当的顺序来进行过程46。另外,过程46的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程46可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
因此,在一些实施例中,存储器控制器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、一或多个相变存储器(例如,3D XPointTM)存储器装置18A、一或多个铁电随机存取存储器(FeRAM)装置18A或其任何组合。另外或可替代地,易失性存储器可以包含一或多个动态随机存取存储器(DRAM)装置18A和/或一或多个静态随机存取存储器(SRAM)装置18A。
此外,如上所述,在存储器子系统14中实施的易失性存储器可以被组织为一或多个存储器阵列。例如,如将在下面更详细地描述,存储器子系统14可以利用索引表存储器阵列。另外,如在所描绘的实施例中,存储器子系统14A可以包括一或多个主存储器阵列66,例如,与索引表存储器阵列分开(例如,不同)。
此外,如在所描绘的实施例中,主存储器阵列66可以在存储器子系统14A中的每个存储器通道68中实施。例如,可以在第一存储器通道68A中实施第一主存储器阵列66,并且可以在第M存储器通道68M中实施第M主存储器阵列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读取和/或写入存储器单元列。换句话说,为了从第一存储器单元列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相对应。例如,当一或多个数据记录86包含名称字段88时,索引表90可以包含名称索引表;当一或多个数据记录86包含街道地址字段88时,索引表可以包含街道地址索引表;和/或当一或多个数据记录86包含邮政编码字段88时,索引表可以包含邮政编码索引表。
另外,在一些实施例中,索引表90可以包含一或多个索引项,每个索引项都与包含相对应数据字段88的数据记录86相对应。例如,当第一数据记录86A包含名称字段时,名称索引表90可以包含与第一数据记录86A相对应的第一名称索引项;当第二数据记录86B包含名称字段时,名称索引表可以包含与第二数据记录86B相对应的第二名称索引项;以此类推。另外,当第一数据记录86A包含街道地址字段88时,街道地址索引表90可以包含与第一数据记录86A相对应的第一街道地址索引项;当第二数据记录86B包含街道地址字段88时,街道地址索引表可以包含与第二数据记录86B相对应的第二街道地址索引项;以此类推。此外,当第一数据记录86A包含邮政编码字段88时,邮政编码索引表90可以包含与第一数据记录86A相对应的第一邮政编码索引项;当第二数据记录86B包含邮政编码字段88时,邮政编码索引表可以包含与第二数据记录86B相对应的第二邮政编码索引项;依此类推。
为了促进标识相对应的数据记录86,在一些实施例中,索引项可以例如经由指向存储器子系统14中的存储器地址的指针来标识相对应的数据记录86的存储位置。换句话说,与第一数据记录86A相对应的第一索引项可以指示第一数据记录86A在存储器子系统14中的存储位置,与第二数据记录86B相对应的第二索引项可以指示第二数据记录86B在存储器子系统14中的存储位置,依此类推。另外,为了促进排序,在一些实施例中,索引项可以指示相对应的数据字段88的值。例如,第一邮政编码索引项可以指示第一数据记录86A中的邮政编码字段88的值,第二邮政编码索引项可以指示第二数据记录86B中的邮政编码字段88的值,以此类推。
为了帮助进一步说明,在图6中示出了示范性索引表90的图示。如所描绘,索引表90可以包含索引数据字段列94和一或多个索引项位置列96,它们各自与索引项位置相对应。另外,如在所描绘的实例中,索引表90可以包含索引表行92,其各自对应于不同的索引表90。
换句话说,索引表行92可以指示索引数据字段列94中的相对应的索引数据字段(例如,访问索引)。例如,第一索引表行92A中的索引数据字段列94可以指示第一索引表行92A与第一数据字段88A相对应。另外,第F索引表行92F中的索引数据字段列94可以指示第F索引表行92F与第F数据字段88F相对应。
此外,索引表行92可以指示索引项,每个索引项与包含索引项位置列96中的索引数据字段的数据记录85相对应。例如,当第一数据记录86A包含第一数据字段88A时,第一索引表行92A中的索引项位置列96可以包含与第一数据记录86A相对应的索引项;当第W数据记录86W包含第一数据字段88A时,第一索引表行中的索引项位置列可以包含与第W数据记录86W相对应的索引项;依此类推。另外,当第R数据记录86R包含第F数据字段88F时,第F索引表行92F中的索引项位置列96可以包含与第R数据记录86R相对应的索引项;当第一数据记录86A包含第一数据字段88A时,第F索引表行中的索引项位置列可以包含与第一数据记录86A相对应的索引项;依此类推。
而且,如上所述,索引表90中的索引项可以指示相对应数据记录86在存储器子系统14中的存储位置和数据记录86中的相对应索引数据字段88的值。第一索引表行92A中的与第一数据记录86A相对应的索引项可以标识第一数据记录86A的存储位置和第一数据记录86中指示的第一数据字段88A的值,第一索引表行92A中的与第W数据记录86W相对应的索引项可以标识第W数据记录86W的存储位置和第W数据记录86W中指示的第一数据字段88A的值,依次类推。另外,第F索引表行92F中的与第R数据记录86R相对应的索引项可以标识第R数据记录86R的存储位置和第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)可以确定包含相对应的索引数据字段的数据记录86在存储器子系统14中的存储位置。例如,通过读取第一索引表行92A中的索引项位置列96,存储器控制器26可以确定第一数据记录86A的存储位置和第W数据记录86W的存储位置,并且因此确定它们两者都包含第一数据字段88A。另外,通过读取第F索引表行92F中的索引项位置列96,存储器控制器26可以确定第R数据记录86R的存储位置和第一数据记录86A的存储位置,并且因此确定它们都包含第F数据字段88F。在任何情况下,如上所述,在一些实施例中,索引表90更多地存储在例如单独的存储(例如,存储器)装置中实施的专用存储器中,和/或存储在与一或多个主存储器阵列66不同(例如,分开)的索引表存储器阵列中。
为了帮助说明,在图7中示出了包含索引表存储器阵列100的存储器子系统14的一部分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,所述第V-1项单元对应于索引表存储器阵列100中的第V-1存储器单元列84。另一方面,第二项单元104B可以通信地耦合到第一项单元104A和第三项单元104,所述第三项单元对应于索引表存储器阵列100中的第三存储器单元列84。另外,在一些实施例中,项单元104可以包含在存储器控制器26(例如,存储器子系统14中实施的存储器侧存储器控制器26B)中。
在任何情况下,如将在下面更详细地描述,项单元104(例如,存储器控制器26)可以进行数据处理操作(例如,函数),例如以通过向索引表90加入新索引项102N来促进更新索引表90。然而,如上所述,被实施为进行更复杂的数据处理操作的处理电路系统通常更高程度地掺杂(相较于存储器电路系统)。另外,较高程度的掺杂通常会增加产生泄漏电流的可能性,至少在一些实例中,这可能会例如通过导致存储器子系统14中存储的数据的损坏而影响存储器子系统14的操作可靠性。
因此,如在所描绘的实施例中,项单元104可以包含寄存器106和比较逻辑电路系统108,至少在一些实例中,所述比较逻辑电路系统可以用较少掺杂的处理电路系统来实施(例如,相较于处理子系统12和/或完全成熟的存储器内置处理器(PIM)相比)。使用其寄存器106,项单元104可以存储例如从索引表存储器阵列100读取的索引项102。在一些实施例中,寄存器106中的一或多个可以是六十四字节寄存器。
另外,使用其比较逻辑电路系统108,项单元104可以将当前存储在其寄存器106中的索引项102与所接收的(例如,输入的)索引项102(例如,从另一项单元104移位)和/或待加入到相对应的索引表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的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程110可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可以确定数据记录86在存储器子系统14中的存储位置(过程框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可以生成名称索引项102以指示数据记录86的存储位置和其名称字段88的值。另外,存储器控制器26可以生成街道地址索引项以指示数据记录86的存储位置和其街道地址字段88的值。此外,存储器控制器26可以生成邮政编码索引项以指示数据记录86的存储位置和其邮政编码字段88的值。在任何情况下,如上所述,为了促进提供排序访问,可以更新索引表90,例如以加入一或多个新索引项102N。
为了帮助说明,在图9中描述了用于生成和/或更新以升序排序的索引表90的过程120的一个实例。通常,过程120包含接收当前索引项(过程框122);接收另一索引项(过程框124);确定另一数据字段值是否大于当前数据字段值(判定框126);和当另一数据字段值大于当前数据字段值时,将当前索引项保持在当前索引项位置处(过程框128)。另外,当另一数据字段值不大于当前数据字段值时,过程120包含将当前索引项移位到下一索引项位置(过程框130),并且将另一索引项存储在当前索引项位置处(过程框132)。
尽管以表示一个特定实施例的特定顺序进行描述,但是应当注意,可以以任何适当的顺序来进行过程120。另外,过程120的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程120可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
因此,在一些实施例中,存储器控制器26(例如,存储器侧存储器控制器26B)可以例如经由相对应的项单元104从索引表存储器阵列100接收当前存储在索引表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)生成和/或更新索引表90,同时不期望处理子系统靶向相对应的数据记录86。例如,存储器子系统14可以响应于一或多个数据记录86写入主存储器阵列66而生成和/或更新索引表90。
为了帮助说明,在图10中描述了用于操作存储器子系统14以存储和提供对数据记录86的访问的过程134的一个实例。通常,过程134包含接收数据记录(过程框135),将数据记录作为块存储在存储器子系统中(过程框136),确定是否期望跨步访问(判定框138),和确定排序访问指针(过程框142)。另外,当期望跨步访问时,过程134包含确定跨步访问指针(过程框140)。
尽管以表示一个特定实施例的特定顺序进行描述,但是应当注意,可以以任何适当的顺序进行过程134。另外,过程134的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程134可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
在任何情况下,存储器子系统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可以分配存储器地址的连续块(例如,&Ptr+(RcdCount*RcdSize)),以用于将数据记录86存储在例如主存储器66中。因此,在一些实施例中,存储器子系统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)来提供跨步访问。在一些实施例中,跨步访问指针可以标识数据记录86的相对应部分在存储器子系统14中的存储位置。例如,名称跨步访问指针可以标识名称字段88在第一数据记录86A、第二数据记录86B等中的存储位置。另外或可替代地,邮政编码跨步访问指针可以标识邮政编码字段88在第一数据记录86A、第二数据记录86B等中的存储位置。
为了促进确定跨步访问指针,在一些实施例中,存储器子系统14可以提供包含跨步访问函数的应用编程接口(API)。跨步访问函数的一个实例如下:
StPtr=Striding(Ptr,FieldOffset,FieldLength,StrideLength) (2)
其中StPtr是跨步访问指针,Striding()是跨步访问函数,Ptr是指向存储器子系统14中的起始存储位置的指针,FieldOffset是目标数据字段88在数据记录86中的起始位位置,FieldLength是目标数据字段88的大小,并且StrideLength是连续的数据记录86之间的步幅长度。换句话说,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可以至少部分地基于由所接收的数据记录86使用的数据结构来执行跨步访问函数,以确定一或多个跨步访问指针,例如每个跨步访问指针与每个数据记录86中包含的数据字段88相对应(过程框144)。为了促进减少跨步访问指针的确定将影响数据检索延迟的可能性,在一些实施例中,存储器子系统14可以例如响应于将一或多个数据记录86存储在存储器子系统14(例如,主存储器阵列66)中而自动地执行跨步访问函数。
另外或可替代地,为了促进提供对所存储的数据的排序访问,存储器子系统14可以确定排序访问指针(过程框142)。如上所述,存储器子系统14可以通过以例如与地址顺序不同的排序顺序标识数据记录86来提供排序访问。在一些实施例中,排序访问指针可以以照排序顺序来标识数据记录86在存储器子系统14中的存储位置。例如,名称排序访问指针可以以基于每个数据记录86中包含的名称字段88的值的排序的顺序来标识数据记录86的存储位置。另外或可替代地,邮政编码排序访问指针可以以基于每个数据记录86中包含的邮政编码字段88的值的排序的顺序来标识数据记录86的存储位置。换句话说,在一些实施例中,排序访问指针可以标识相对应索引表90在例如索引表存储器阵列100中的存储位置。
为了促进确定排序访问指针,在一些实施例中,存储器子系统14可以提供包含排序访问函数的应用编程接口(API)。排序访问函数的一个实例如下:
SoPtr=Sorted(Ptr,IndexField) (3)
其中SoPtr是排序访问指针,Sorted()是排序访问函数,Ptr是指向存储器子系统14中的起始存储位置的指针,并且IndexField指示待索引的具体数据字段88。因此,在一些实施例中,存储器子系统14(例如,存储器侧存储器控制器26B)可以执行排序访问函数以确定一或多个排序访问指针,例如每个排序访问指针与索引表90和/或一或多个数据记录86中包含的数据字段88相对应(过程框146)。为了促进减少排序访问指针的确定将影响数据检索延迟的可能性,在一些实施例中,存储器子系统14可以例如响应于生成和/或更新一或多个索引表90而自动地执行排序访问函数。
以这种方式,例如通过响应于数据存储在存储器子系统14(例如,主存储器阵列66)中而自动地进行数据处理操作,存储器子系统14可以在减少数据处理操作将影响(例如,增加)数据检索延迟的可能性的情况下进行数据处理操作。实际上,在一些实施例中,以这种方式实施数据处理操作可以例如通过使存储器子系统14使用跨步访问指针和/或排序访问指针标识目标数据来促进改善(例如,减少)随后的数据检索延迟。此外,如上所述,例如通过减少计算系统10中的存储器子系统14和处理子系统12之间的数据通信,在存储器子系统14中提供地址管理功能可以促进改善计算系统10的操作效率。
为了帮助说明,在图11中描述了用于操作存储器控制器26(例如,存储器侧存储器控制器26B)的过程148的一个实例。通常,过程148包含接收存储器访问请求(过程框150),确定目标数据(过程框152),确定目标数据是否导致主存储器阵列未命中(判定框154),和将目标数据输出到处理子系统(过程框158)。另外,当目标数据导致主存储器阵列未命中时,过程148包含从非易失性存储器检索目标数据(过程框156)。
尽管以表示一个特定实施例的特定顺序进行描述,但是应当注意,可以以任何适当的顺序来进行过程148。另外,过程148的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程148可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
因此,在一些实施例中,存储器控制器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的实施例可以省略过程框和/或包含另外的过程框。此外,在一些实施例中,过程166可以至少部分地通过使用处理电路系统(例如,存储器控制器26中实施的处理器)执行有形非暂时性计算机可读媒体(例如,存储器控制器26中实施的存储器)中存储的指令来实施。
因此,在一些实施例中,存储器控制器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实施的处理器侧缓存22(例如,以第K缓存级别30K实施的L3处理器侧缓存22和/或共享处理器侧缓存34)中。以这种方式,存储器子系统14可以操作以将目标数据提供给处理子系统12。
返回图3的过程46,在处理子系统12请求目标数据之后,存储器控制器26(例如,处理器侧存储器控制器26A)可以确定是否已经从存储器子系统14接收目标数据(判定框58)。为了促进改善操作效率,在一些实施例中,在处理子系统12等待目标数据的返回的同时,处理电路系统16可以继续进行其它操作。另外,在一些实施例中,当从存储器子系统14接收指示目标数据已经成功地存储在处理器侧缓存22中的控制信号时,存储器控制器26可以确定已经接收目标数据。
在任何情况下,在接收目标数据之后,存储器控制器26可以指示处理子系统12将目标数据例如从处理器侧缓存22供应给处理电路系统16(过程框52)。在一些实施例中,处理器侧缓存22可以输出具有标签元数据的缓存线,所述标签元数据与期望为与目标数据相关联的目标标签元数据值匹配。在一些实施例中,当在较高级别缓存(例如,共享处理器侧缓存34)中存储时,目标数据可以在到达处理电路系统16之前经过一或多个较低级别缓存(例如,专用处理器侧缓存32)。
本文描述了本公开的一或多个具体实施例,并且在相对应的附图中对其进行了描绘。这些描述的实施例仅仅是本公开技术的实例。另外,为了提供对这些实施例的简要描述,可能未在说明书中描述实际实施方案的所有特征。应当理解,在任何此类实际实施方案的开发中,例如在任何工程或设计项目中,都必须做出许多特定于实施方案的决策,以实现开发人员的特定目标,例如符合系统相关和业务相关的约束,这在实施方案之间可能会有所不同。此外,应当理解,这种开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言可能仍是设计、制作和制造的例行工作。
当介绍本公开的各个实施例的元素时,冠词“一个/一种”和“所述”旨在表示存在一或多个元素。术语“包括”、“包含”和“具有”旨在是包含性的,并且表示除所列要素之外可能还存在其它元素。另外,应当理解,对本公开的“一个实施例”的引用不旨在被解释为排除也并入了所述特征的另外的实施例的存在。
已经通过实例的方式示出了上述具体实施例,并且应当理解,这些实施例可能易于进行各种修改和替代形式。应当进一步理解,权利要求书并不旨在限于所公开的特定形式,而是覆盖落入本公开的精神和范围内的所有修改、等同和替代。
Claims (30)
1.一种计算设备,其包括:
处理器子系统;
一或多个数据总线;以及
存储器子系统,所述存储器系统被配置成经由所述一或多个数据总线通信地耦合到所述处理器子系统,其中所述存储器子系统包括一或多个存储器装置以及存储器侧存储器控制器,其中所述存储器侧存储器控制器被配置成:
根据排序顺序来使用第一一或多个字段存储第一数据以及使用第二一或多个字段存储第二数据,所述排序顺序至少部分地基于对所述第一数据的第一部分的第一值和所述第一数据的第二部分的第二值进行排序,所述第一数据待由所述处理器子系统中实施的处理电路系统使用以进行第一操作;
经由所述一或多个数据总线接收第一存储器访问请求,所述第一存储器访问请求指示所述第一一或多个数据字段的位置;
至少部分地基于所述第一存储器访问请求和所述排序顺序来确定所述第一数据在所述一或多个存储器装置中的存储位置;
指示所述存储器子系统将所述第一数据直接存储到与所述处理电路系统集成的第一处理器侧缓存中,以使所述处理器子系统中实施的所述处理电路系统经由所述一或多个数据总线至少部分地基于所述第一数据来进行所述第一操作;
基于所述第一存储器访问请求和所述排序顺序,预测将由所述处理电路系统随后靶向的所述第二数据的所述第二一或多个数据字段的存储位置;和
指示所述存储器子系统将所述第二数据直接存储到与所述处理电路系统集成的所述第一处理器侧缓存中,以使所述处理电路系统经由所述一或多个数据总线至少部分地基于所述第二数据来进行所述第一操作、第二操作或两者。
2.根据权利要求1所述的计算设备,其中所述存储器侧存储器控制器被配置成响应于所述第一存储器访问请求而指示所述存储器子系统将所述第一数据直接存储到所述第一处理器侧缓存中而无需来自所述处理器子系统的另外的指令。
3.根据权利要求1所述的计算设备,其中:
所述处理器子系统包括第二处理器侧缓存,所述第二处理器侧缓存以比所述第一处理器侧缓存更低的缓存级别实施;并且
所述存储器子系统被配置成通过经由所述一或多个数据总线将所述第一数据输出到所述第一处理器侧缓存来将所述第一数据直接存储到所述第一处理器侧缓存中,以使所述第一处理器侧缓存存储所述第一数据的第一实例;
所述处理器子系统包括处理器侧存储器控制器,所述处理器侧存储器控制器被配置成:
响应于控制信号而指示所述第一处理器侧缓存将所述第一数据的所述第一实例输出到所述第二处理器侧缓存,以使所述第二处理器侧缓存存储所述第一数据的第二实例;和
指示所述第二处理器侧缓存输出所述第一数据的所述第二实例,以使所述处理电路系统至少部分地基于所述第一数据来进行所述第一操作。
4.根据权利要求1所述的计算设备,其中所述第一处理器侧缓存包括三级(L3)缓存、由所述处理器子系统中实施的多个处理器子系统核共享的处理器侧缓存或两者。
5.根据权利要求1所述的计算设备,其中:
所述第一数据包括与所述一或多个存储器装置中存储的第一数据记录相关联的所述第一一或多个数据字段的第一数据字段中指示的所述第一部分和与所述一或多个存储器装置中存储的第二数据记录相关联的所述第一一或多个数据字段的第一数据字段中指示的所述第二部分,其中所述第一数据记录和所述第二数据记录各自均包括第二数据字段;并且
当所述第一存储器访问请求请求以地址顺序返回所述第一一或多个数据字段时,所述存储器侧存储器控制器被配置成预测将由所述处理电路系统随后靶向的所述第二数据的所述存储位置包括所述第一数据记录的第二数据字段中指示的第三部分和所述第二数据记录的第二数据字段中指示的第四部分,其中所述第一数据记录的所述第二数据字段和所述第二数据记录的所述第二数据字段与所述第二一或多个数据字段相关联。
6.根据权利要求1所述的计算设备,其中所述处理器子系统包括处理器侧存储器控制器,当所述第二数据由所述处理电路系统靶向时,所述处理器侧存储器控制器被配置成:
确定靶向所述第二数据是否导致处理器侧缓存未命中;和
当靶向所述第二数据导致所述处理器侧缓存未命中时,经由所述一或多个数据总线将请求返回所述第二数据的第二存储器访问请求输出到所述存储器子系统,以使所述处理电路系统至少部分地基于所述第二数据来进行所述第一操作、所述第二操作或两者。
7.根据权利要求1所述的计算设备,其中:
所述第一数据包括与所述一或多个存储器装置中存储的第一数据记录相关联的所述第一一或多个数据字段的数据字段中指示的所述第一部分和与所述一或多个存储器装置中存储的第二数据记录相关联的所述第一一或多个数据字段的数据字段中指示的所述第二部分;
所述一或多个存储器装置被配置成存储包括数据字段的第三数据记录和包括数据字段的第四数据记录;并且
所述存储器侧存储器控制器被配置成:
至少部分地基于所述第一数据记录的所述数据字段中指示的所述第一值、所述第二数据记录的所述数据字段中指示的所述第二值、所述第三数据记录的数据字段中指示的第三值和所述第四数据记录的所述数据字段中指示的第四值的排序来确定排序顺序;和
当所述第一存储器访问请求请求根据所述排序顺序返回所述第二数据时,预测将由所述处理电路系统随后靶向的所述第二数据包括所述第三数据记录的所述数据字段中指示的一部分和所述第四数据记录的所述数据字段中指示的另一部分,其中所述第三数据记录的所述数据字段和所述第四数据记录的所述数据字段与所述第二一或多个数据字段相关联。
8.根据权利要求7所述的计算设备,其中所述存储器侧存储器控制器被配置成响应于所述第一数据记录、所述第二数据记录、所述第三数据记录、所述第四数据记录或其任何组合存储在所述一或多个存储器装置中而确定所述排序顺序。
9.根据权利要求7所述的计算设备,其中所述存储器侧存储器控制器被配置成:
确定指示所述排序顺序的索引表,所述索引表包括:
与所述第一数据记录相对应的并且在所述索引表中的第一索引项位置处指示的第一索引项;
与所述第二数据记录相对应的并且在所述索引表中的第二索引项位置处指示的第二索引项;
与所述第三数据记录相对应的并且在所述索引表中的第三索引项位置处指示的第三索引项;和
与所述第四数据记录相对应的并且在所述索引表中的第四索引项位置处指示的第四索引项;和
通过以下来预测将由所述处理电路系统随后靶向的所述第二数据包括所述第三数据记录的所述数据字段中指示的所述部分和所述第四数据记录的所述数据字段中指示的所述另一部分:
当所述第一存储器访问请求指示包括所述第一索引项位置和所述第二索引项位置的靶向索引项位置的向量时,预测随后将靶向所述第三索引项位置和所述第四索引项位置;
通过读取所述索引表中的所述第三索引项位置来标识所述第三索引项,并且通过读取所述第四索引项位置来标识所述第四索引项;和
通过读取指向所述第三索引项中指示的所述第三数据记录的存储位置的指针来标识所述一或多个存储器装置中的所述第三数据记录,并且通过读取指向所述第四索引项中指示的所述第四数据记录的存储位置的另一指针来标识所述一或多个存储器装置中的所述第四数据记录。
10.根据权利要求9所述的计算设备,其中所述存储器侧存储器控制器被配置成响应于所述第三数据记录存储在所述一或多个存储器装置中:
生成所述第三索引项以指示指向所述第三数据记录在所述一或多个存储器装置中的所述存储位置的所述指针和所述第三数据记录中的所述数据字段的所述第三值;和
通过比较第三索引项中指示的所述第三数据记录的所述数据字段的所述第三值和所述第一索引项中指示的所述第一数据记录的所述数据字段的所述第一值、所述第二索引项中指示的所述第二数据记录的所述数据字段的所述第二值、所述第四索引项中指示的所述第四数据记录的所述数据字段的所述第四值或其任何组合来更新所述索引表以包含所述第三索引项。
11.根据权利要求1所述的计算设备,其中:
所述存储器侧存储器控制器经配置成响应于所述第一数据存储到所述第一处理器侧缓存中而经由所述一或多个数据总线向所述处理器子系统输出指示所述第一数据成功地缓存在所述处理器子系统中的控制信号;并且
所述处理器子系统包括处理器侧存储器控制器,所述处理器侧存储器控制器被配置成在从所述存储器子系统接收所述控制信号之后,指示所述第一处理器侧缓存将所述第一数据输出到所述处理电路系统,以使所述处理电路系统至少部分地基于所述第一数据来进行所述第一操作。
12.根据权利要求1所述的计算设备,其中:
由所述一或多个存储器装置使用的所述排序顺序包括:
在多个数据记录中的每个数据记录中用于指示第一数据字段的第一一或多个位位置;和
在所述多个数据记录中的每个数据记录中用于指示第二数据字段的第二一或多个位位置;
所述第一一或多个数据字段包括所述多个数据记录的所述第一数据字段;且
所述第二一或多个数据字段包括所述多个数据记录的所述第二数据字段。
13.一种操作计算系统的方法,其中所述方法包括:
使用存储器子系统的存储器控制器,经由系统总线接收存储器访问请求,其中所述存储器访问请求指示根据排序顺序由所述存储器控制器存储在所述存储器子系统的多个数据记录上的第一数据的位置,所述排序顺序待由处理子系统使用以进行操作;
使用所述存储器控制器,至少部分地基于所述存储器访问请求和所述排序顺序来标识所述存储器子系统的所述多个数据记录中的所述第一数据;
使用所述存储器控制器,指示所述存储器子系统经由所述系统总线将所述第一数据输出到所述处理子系统中实施的一或多个缓存;
使用所述存储器控制器,确定由所述存储器子系统使用来存储所述多个数据记录的排序顺序包括所述第一数据,其中所述排序顺序至少部分基于对存储在所述多个数据记录上的所述第一数据和第二数据的值进行排序;
使用所述存储器控制器,至少部分地基于存储在所述多个数据记录上的第一数据的所述位置和用于存储所述多个数据记录的所述排序顺序来预测将被靶向由所述处理子系统使用的所述存储器子系统的所述多个数据记录上存储的所述第二数据的位置;和
使用所述存储器控制器,指示所述存储器子系统经由所述系统总线将所述第二数据输出到所述处理子系统中实施的所述一或多个缓存,然后由所述处理子系统靶向所述第二数据以进行所述操作。
14.根据权利要求13所述的方法,其包括:
响应于所述存储器访问请求并且无需来自所述处理子系统的另外的指令,指示所述存储器子系统将所述第一数据存储到所述处理子系统中实施的所述一或多个缓存中;和
响应于所述存储器访问请求并且无需来自所述处理子系统的另外的指令,指示所述存储器子系统将所述第二数据存储到所述处理子系统中实施的所述一或多个缓存中。
15.根据权利要求13所述的方法,其中:
确定由所述存储器子系统用于存储所述多个数据记录的所述排序顺序包括:
在所述多个数据记录中的每个数据记录中确定用于指示第一数据字段的第一一或多个位位置;和
在所述多个数据记录中的每个数据记录中确定用于指示第二数据字段的第二一或多个位位置;并且
当所述存储器访问请求请求返回所述多个数据记录中的每个数据记录中指示的所述第一数据字段时:
标识所述第二数据包括预测所述第二数据包括所述多个数据记录中的每个数据记录中指示的所述第二数据字段;和
指示所述存储器子系统输出所述第二数据包括指示所述存储器子系统经由所述系统总线输出所述多个数据记录中的每个数据记录中指示的所述第二数据字段。
16.根据权利要求15所述的方法,其包括:当所述存储器访问请求标识所述多个数据记录在所述存储器子系统中的存储位置并且将所述第一数据字段标识为所述多个数据记录的靶向位置时,使用所述存储器控制器,确定所述存储器访问请求请求返回所述多个数据记录中的每个数据记录中指示的所述第一数据字段。
17.根据权利要求13所述的方法,其中:
确定由所述多个数据记录使用的所述排序顺序包括在所述多个数据记录中的每个数据记录中确定用于指示数据字段的一或多个位位置,其中所述多个数据记录的每一数据记录的每一数据字段包括所述第一数据的至少一部分;并且
当所述存储器访问请求请求根据所述排序顺序从所述多个数据记录返回第一数据记录子集时,其中所述排序顺序包括使用所述多个数据记录的每一数据记录中指示的所述数据字段对存储的所述第一数据的每一部分的值进行排序:
标识所述第二数据包括预测第二数据包括与所述第一数据记录子集不重叠的来自所述多个数据记录的第二数据记录子集;和
指示所述存储器子系统输出所述第二数据包括指示所述存储器子系统经由所述系统总线输出来自所述多个数据记录的所述第二数据记录子集。
18.根据权利要求17所述的方法,其包括:当所述存储器访问请求将所述数据字段标识为目标访问索引并且多个目标索引项位置各自对应于所述第一数据记录子集的一个数据记录时,使用所述存储器控制器,确定所述存储器访问请求请求根据所述排序顺序从所述多个数据记录返回所述第一数据记录子集。
19.根据权利要求17所述的方法,其中当所述存储器访问请求请求根据所述排序顺序返回所述第一数据记录子集时:
标识所述存储器子系统中的所述第一数据包括:
标识与所述存储器访问请求中指示的目标访问索引相对应的索引表;和
标识所述存储器访问请求中指示的第一多个目标索引项位置;和
标识所述第二数据包括:
预测所述处理子系统将靶向与所述第一多个目标索引项位置相邻的第二多个目标索引项位置;和
通过读取所述索引表中的所述第二多个目标索引项位置来预测所述第二数据包括来自所述多个数据记录的所述第二数据记录子集。
20.根据权利要求17所述的方法,其包括:
使用所述存储器控制器,确定多个索引项,所述多个索引项各自与所述多个数据记录中的相对应数据记录相关联,其中生成所述多个索引项中的索引项包括响应于所述相对应数据记录存储在所述存储器子系统中而:
确定所述相对应数据记录在所述存储器子系统中的存储位置;
通过读取由所述排序顺序分配的指示所述数据字段的所述相对应数据记录中的所述一或多个位位置来确定使用所述相对应数据记录中指示的所述数据字段存储的所述第一数据的一部分的值;和
生成所述索引项以指示所述相对应数据记录的所述存储位置和使用所述相对应数据记录中指示的所述数据字段存储的所述第一数据的所述部分的所述值;
使用所述存储器控制器,确定与所述数据字段相对应的索引表,其中所述索引表包括所述多个索引项,所述多个索引项至少部分地基于所述排序顺序而各自在所述索引表中的索引项位置处指示;和
当所述存储器访问请求请求根据所述排序顺序返回所述第一数据记录子集时:
标识所述存储器子系统中的所述第一数据包括读取由所述存储器访问请求靶向的所述索引表中的第一多个索引项位置;和
标识所述第二数据包括所述第二数据记录子集包括读取所述索引表中的与所述第一多个索引项位置相邻的第二多个目标索引项位置。
21.一种计算系统,其包括
处理子系统:
系统总线;
存储器子系统,其被配置成经由系统总线通信地耦合到所述处理子系统,其中所述存储器子系统包括被配置成实施第一存储器阵列的一或多个存储器装置以及通信地耦合到所述一或多个存储器装置的存储器侧存储器控制器,其中所述存储器侧存储器控制器被配置成:
根据排序顺序将多个数据记录存储在所述第一存储器阵列上,所述排序顺序在所述多个数据记录中的每个数据记录中分配第一多个位位置记录以指示第一数据字段,其中所述排序顺序至少部分基于对所述多个数据记录的所述第一数据字段和第二数据字段的值进行排序;
经由所述系统总线接收存储器访问请求,所述存储器访问请求请求返回所述多个数据记录的所述第一数据字段,所述第一数据字段待由所述计算系统中实施的所述处理子系统使用以进行操作;
至少部分地基于所述存储器访问请求和所述排序顺序来确定由所述存储器访问请求产生的数据访问模式;
外推所述数据访问模式以预测所述多个数据记录的所述第二数据字段将由所述处理子系统使用以进行所述操作;和
指示所述存储器子系统经由所述系统总线输出所述多个数据记录的所述第二数据字段,以将所述多个数据记录的所述第二数据字段存储在所述处理子系统中实施的一或多个缓存中,然后由所述处理子系统靶向所述多个数据记录的所述第二数据字段以进行所述操作。
22.根据权利要求21所述的计算系统,其中:
所述一或多个存储器装置被配置成实施不同于所述第一存储器阵列的第二存储器阵列;和
所述存储器侧存储器控制器被配置成:
在所述第二存储器阵列中存储与所述第一数据字段相对应的索引表,其中所述索引表包括第一多个索引项和第二多个索引项,所述第一多个索引项各自标识所述多个数据记录的相对应第一数据字段,并且所述第二多个索引项各自标识所述多个数据记录的相对应第二数据字段;
当所述存储器访问请求靶向所述索引表中的所述第一多个索引项时,确定由所述存储器访问请求产生的所述数据访问模式是排序访问模式;和
外推所述排序访问模式以预测所述多个数据记录的所述第二数据字段对应于所述索引表中的所述第二多个索引项。
23.根据权利要求22所述的计算系统,其中所述存储器侧存储器控制器被配置成:
响应于所述多个数据记录中的相对应数据记录存储在所述第一存储器阵列中而生成与所述相对应数据记录相关联的索引项;和
至少部分地基于所述多个数据记录中的所述相对应数据记录中指示的所述第一数据字段的第一值和另一数据记录中指示的所述第一数据字段的第二值的排序,更新所述索引表以包含所述索引项。
24.根据权利要求21所述的计算系统,其中:
由所述多个数据记录使用的所述排序顺序在所述多个数据记录中的每个数据记录中分配第二多个位位置以指示第二数据字段;和
所述存储器侧存储器控制器被配置成:
当所述存储器访问请求将所述第一数据字段标识为所述多个数据记录的靶向部分时,确定由所述存储器访问请求产生的所述数据访问模式是跨步访问模式;和
外推所述跨步访问模式以预测所述多个数据记录的所述第二数据字段将由所述处理子系统使用以进行所述操作。
25.根据权利要求21所述的计算系统,其中所述存储器侧存储器控制器被配置成:
响应于所述存储器访问请求并且无需来自所述处理子系统的另外的指令,自动地指示所述存储器子系统将所述多个数据记录的所述第一数据字段直接存储到所述处理子系统中实施的所述一或多个缓存中;和
响应于所述存储器访问请求以及所述排序顺序并且无需来自所述处理子系统的另外的指令,通过指示所述存储器子系统将所述多个数据记录的所述第二数据字段直接存储到所述处理子系统中实施的所述一或多个缓存中来指示所述存储器子系统输出所述多个数据记录的所述第二数据字段。
26.一种有形非暂时性计算机可读媒体,其存储可由计算系统中的一或多个处理器执行的指令,其中所述指令包括用于进行以下的指令:
使用所述一或多个处理器,确定第一数据,所述第一数据待由所述一或多个处理器中实施的处理电路系统与第二数据一起使用以进行操作;
使用所述一或多个处理器,确定所述第一数据当前是否存储在与所述处理电路系统集成的一或多个缓存中;和
当所述第一数据当前未存储在所述一或多个缓存中时:
使用所述一或多个处理器,经由一或多个数据总线将存储器访问请求输出到所述计算系统中实施的存储器子系统,所述存储器访问请求请求由所述存储器子系统的存储器控制器返回存储在所述存储器子系统上的所述第一数据,其中所述存储器子系统基于接收所述数据访问请求以及基于排序顺序来存储所述第一数据来确定数据访问模式,以预测将在即将到来的控制时域期间靶向所述第二数据来进行所述操作,其中所述排序顺序至少部分基于对所述第一数据和所述第二数据的值进行排序;
使用所述一或多个处理器,响应于所述存储器访问请求而指示所述一或多个缓存缓存经由所述一或多个数据总线从所述存储器子系统接收的所述第一数据的第一实例和所述第二数据的第二实例;和
使用所述一或多个处理器,指示所述一或多个缓存将所述第一数据的所述第一实例和所述第二数据的所述第二实例输出到所述处理电路系统,以使所述处理电路系统经由所述一或多个数据总线至少部分地基于所述第一数据和所述第二数据来进行所述操作。
27.根据权利要求26所述的有形非暂时性计算机可读媒体,其中所述用于指示所述一或多个缓存输出所述第一数据的所述第一实例和所述第二数据的所述第二实例的指令包括用于指示所述一或多个缓存在从所述存储器子系统接收指示所述第一数据的所述第一实例和所述第二数据的所述第二实例成功地缓存在所述一或多个缓存中的一或多个控制信号之后将所述第一数据的所述第一实例和所述第二数据的所述第二实例输出到所述处理电路系统。
28.根据权利要求26所述的有形非暂时性计算机可读媒体,其中所述存储器子系统预测将在即将到来的控制时域期间靶向所述第二数据,以基于确定所述排序顺序和通过外推所述数据访问模式来进行所述操作。
29.根据权利要求26所述的有形非暂时性计算机可读媒体,其中当所述第一数据包括所述存储器子系统中存储的多个数据记录中的每一个中包含的第一数据字段时,所述用于输出所述存储器访问请求的指令包括用于标识所述多个数据记录在所述存储器子系统中的存储位置并且标识所述第一数据字段是所述存储器访问请求中的所述多个数据记录的当前靶向部分的指令,以使所述存储器子系统:
基于确定所述排序顺序来确定所述存储器访问请求导致跨步访问模式;和
外推所述跨步访问模式以预测由所述处理电路系统靶向的所述第二数据包括所述多个数据记录中的每一个中包含的第二数据字段。
30.根据权利要求26所述的有形非暂时性计算机可读媒体,其中当所述第一数据包括所述存储器子系统中存储的多个数据记录的第一子集时,所述用于输出所述存储器访问请求的指令包括用于将所述多个数据记录中的每一个中包含的数据字段标识为目标访问索引并且标识所述存储器访问请求中的多个靶向索引项的指令,以使所述存储器子系统:
基于确定所述排序顺序来确定所述存储器访问请求导致排序访问模式;和
外推所述排序访问模式以预测由所述处理电路系统靶向的所述第二数据包括所述多个数据记录的第二子集,每个数据记录与对应于所述数据字段的索引表中的另外多个索引项中的一个相对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210699195.8A CN114924997A (zh) | 2018-08-30 | 2019-07-29 | 异步正向缓存存储器系统和方法 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862725012P | 2018-08-30 | 2018-08-30 | |
US62/725,012 | 2018-08-30 | ||
US16/428,144 | 2019-05-31 | ||
US16/428,144 US11281589B2 (en) | 2018-08-30 | 2019-05-31 | Asynchronous forward caching memory systems and methods |
PCT/US2019/043978 WO2020046517A1 (en) | 2018-08-30 | 2019-07-29 | Asynchronous forward caching memory systems and methods |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210699195.8A Division CN114924997A (zh) | 2018-08-30 | 2019-07-29 | 异步正向缓存存储器系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112639748A CN112639748A (zh) | 2021-04-09 |
CN112639748B true CN112639748B (zh) | 2022-06-28 |
Family
ID=69642275
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210699195.8A Pending CN114924997A (zh) | 2018-08-30 | 2019-07-29 | 异步正向缓存存储器系统和方法 |
CN201980056134.6A Active CN112639748B (zh) | 2018-08-30 | 2019-07-29 | 异步正向缓存存储器系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210699195.8A Pending CN114924997A (zh) | 2018-08-30 | 2019-07-29 | 异步正向缓存存储器系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11281589B2 (zh) |
EP (1) | EP3827349A4 (zh) |
KR (1) | KR102319248B1 (zh) |
CN (2) | CN114924997A (zh) |
WO (1) | WO2020046517A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220110295A (ko) | 2019-12-26 | 2022-08-05 | 마이크론 테크놀로지, 인크. | 적층 메모리 시스템을 위한 진리표 확장 |
WO2021133687A1 (en) | 2019-12-26 | 2021-07-01 | Micron Technology, Inc. | Techniques for non-deterministic operation of a stacked memory system |
CN115427925A (zh) | 2019-12-26 | 2022-12-02 | 美光科技公司 | 用于堆叠存储器系统的主机技术 |
TR202009944A1 (tr) * | 2020-06-25 | 2022-01-21 | Loodos Bilisim Teknolojileri Sanayi Ve Ticaret Ltd Sirketi | Önbellek güncelleme sistemi ve yöntemi. |
US11836128B1 (en) | 2023-07-21 | 2023-12-05 | Sadram, Inc. | Self-addressing memory |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6076150A (en) * | 1995-08-10 | 2000-06-13 | Lsi Logic Corporation | Cache controller with improved instruction and data forwarding during refill operation |
US6438650B1 (en) * | 1998-12-16 | 2002-08-20 | Intel Corporation | Method and apparatus for processing cache misses |
US6976147B1 (en) | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
KR100703357B1 (ko) * | 2003-08-16 | 2007-04-03 | 삼성전자주식회사 | 보조제어부를 구비하는 휴대용 단말기의 캐시메모리구현장치 및 방법 |
US7238218B2 (en) * | 2004-04-06 | 2007-07-03 | International Business Machines Corporation | Memory prefetch method and system |
JP4520788B2 (ja) * | 2004-07-29 | 2010-08-11 | 富士通株式会社 | マルチスレッドプロセッサ |
KR100987832B1 (ko) | 2004-08-17 | 2010-10-13 | 엔비디아 코포레이션 | 캐시 메모리에 연결된 메모리로의 다양한 액세스 유형의예측을 관리하는 시스템, 장치 및 방법 |
US20060095679A1 (en) | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
US8200905B2 (en) | 2008-08-14 | 2012-06-12 | International Business Machines Corporation | Effective prefetching with multiple processors and threads |
US8866640B2 (en) | 2008-12-22 | 2014-10-21 | Lenovo (Singapore) Pte. Ltd. | Prioritizing user input devices |
US10831721B2 (en) * | 2009-03-23 | 2020-11-10 | Riverbed Technology, Inc. | Virtualized data storage system architecture |
US8140759B2 (en) | 2009-04-16 | 2012-03-20 | International Business Machines Corporation | Specifying an access hint for prefetching partial cache block data in a cache hierarchy |
US8380680B2 (en) * | 2010-06-23 | 2013-02-19 | International Business Machines Corporation | Piecemeal list prefetch |
US9390018B2 (en) | 2012-08-17 | 2016-07-12 | Advanced Micro Devices, Inc. | Data cache prefetch hints |
US10282482B2 (en) * | 2013-03-29 | 2019-05-07 | Rakuten, Inc. | Data provision device, data provision method, and data provision program |
KR102070136B1 (ko) | 2013-05-03 | 2020-01-28 | 삼성전자주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
KR102074329B1 (ko) * | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9934148B2 (en) * | 2015-06-23 | 2018-04-03 | Advanced Micro Devices, Inc. | Memory module with embedded access metadata |
JP2017072929A (ja) * | 2015-10-06 | 2017-04-13 | 富士通株式会社 | データ管理プログラム、データ管理装置、およびデータ管理方法 |
US10339060B2 (en) * | 2016-12-30 | 2019-07-02 | Intel Corporation | Optimized caching agent with integrated directory cache |
-
2019
- 2019-05-31 US US16/428,144 patent/US11281589B2/en active Active
- 2019-07-29 WO PCT/US2019/043978 patent/WO2020046517A1/en unknown
- 2019-07-29 EP EP19855060.0A patent/EP3827349A4/en not_active Withdrawn
- 2019-07-29 KR KR1020217005622A patent/KR102319248B1/ko active IP Right Grant
- 2019-07-29 CN CN202210699195.8A patent/CN114924997A/zh active Pending
- 2019-07-29 CN CN201980056134.6A patent/CN112639748B/zh active Active
-
2022
- 2022-02-15 US US17/672,356 patent/US20220171711A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN112639748A (zh) | 2021-04-09 |
WO2020046517A1 (en) | 2020-03-05 |
US20200073811A1 (en) | 2020-03-05 |
EP3827349A4 (en) | 2021-11-03 |
KR20210030984A (ko) | 2021-03-18 |
KR102319248B1 (ko) | 2021-11-02 |
CN114924997A (zh) | 2022-08-19 |
EP3827349A1 (en) | 2021-06-02 |
US20220171711A1 (en) | 2022-06-02 |
US11281589B2 (en) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112639748B (zh) | 异步正向缓存存储器系统和方法 | |
US11281585B2 (en) | Forward caching memory systems and methods | |
CN110580229B (zh) | 扩展线宽存储器侧高速缓存系统和方法 | |
CN112602071B (zh) | 正向高速缓存应用程序编程接口系统和方法 | |
CN114175001B (zh) | 存储器感知预取和高速缓存旁路系统和方法 | |
US10877889B2 (en) | Processor-side transaction context memory interface systems and methods | |
US11354246B2 (en) | Memory-side transaction context memory interface systems and methods based on clock cycles and wires |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |