CN112602071B - 正向高速缓存应用程序编程接口系统和方法 - Google Patents
正向高速缓存应用程序编程接口系统和方法 Download PDFInfo
- Publication number
- CN112602071B CN112602071B CN201980055491.0A CN201980055491A CN112602071B CN 112602071 B CN112602071 B CN 112602071B CN 201980055491 A CN201980055491 A CN 201980055491A CN 112602071 B CN112602071 B CN 112602071B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- index
- subsystem
- access
- 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
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/10—Address translation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述与存储器系统和操作有关的系统、设备和方法。存储器系统(14)可经由数据总线(20)通信耦合到处理器(12)。所述存储器系统(14)可包含存储器阵列(66),所述存储器阵列在第一存储位置存储第一数据且在第二存储位置存储第二数据。所述存储器可包含存储器控制器(26),所述存储器控制器接收请求返回所述第一数据和所述第二数据的存储器存取请求,确定产生于所述存储器存取请求的数据存取模式,确定识别所述第一数据的所述第一存储位置和所述第二数据的所述第二存储位置的存取指针,且指导所述存储器系统使用所述存取指针识别所述第一数据和所述第二数据且经由所述数据总线(20)输出所述第一数据和所述第二数据,以使所述处理器(12)能够基于所述第一数据和所述第二数据执行操作。
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)装置或其任何组合。
此外,在一些实施例中,多个存储器装置18可在存储器模块上实施,例如双列直插式存储器模块(DIMM)或单列直插式存储器模块(SIMM)。举例来说,存储器模块可包含印刷电路板(PCB)以及各自安置在印刷电路板的平坦或平面的(例如前或后)表面上的多个存储器装置。另外,存储器装置18可经由印刷电路板上形成的导电迹线耦合到沿着印刷电路板的(例如底部)边缘形成的外部接脚。
应了解,存储器装置18中的一或多个可使用其它封装技术实施。举例来说,存储器装置18可耦合到半导体(例如,硅)内插件以实施2.5D配置。另外或替代地,存储器装置18可堆叠以实施3D配置。此外,在一些实施例中,存储器装置18可使用有机封装技术实施。换句话说,本公开中所描述的技术可实施为封装上解决方案。
在任何情况下,如上文所描述,存储器子系统14大体上存储可由处理子系统12存取的数据。为了促进数据通信,存储器子系统14和处理子系统12可经由系统总线20以通信方式,所述系统总线例如包含一或多个数据总线。在一些实施例中,系统总线20可包含一或多个电缆、一或多个导线、一或多个导电迹线、一或多个通信网络,或其任何组合,并且因此可经实施以提供有限通信带宽。在任何情况下,经由系统总线20,处理子系统12可传送(例如输出)数据以存储在存储器子系统14中。另外或替代地,例如响应于对处理子系统12的处理电路16定为目标的数据的请求,存储器子系统14可经由系统总线20传送(例如输出)数据以供处理子系统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。换句话说,在此类实施例中,第一级高速缓冲存储器30A可使用一或多个私用处理器侧高速缓冲存储器32来实施。举例来说,实施于第一高速缓冲存储器层级30A中的第一处理器侧高速缓冲存储器32A可专用于第一处理器核心28A,且实施于第一高速缓冲存储器层级30A中的第N私用处理器侧高速缓冲存储器32N可专用于第N处理器核心28N。换句话说,在一些实施例中,实施于第一高速缓冲存储器层级30A中的私用处理器侧高速缓冲存储器32可包含一或多个L1高速缓冲存储器。
在一些实施例中,较高高速缓冲存储器层级还可以一或多个私用处理器侧高速缓冲存储器32予以实施。举例来说,第二高速缓冲存储器层级30可以专用于第一处理器核心28A的另一私用处理器侧高速缓冲存储器32和专用于第N处理器核心28N的另一私用处理器侧高速缓冲存储器32予以实施。换句话说,在一些实施例中,实施于第二高速缓冲存储器层级30中的私用处理器侧高速缓冲存储器32可包含一或多个L2高速缓冲存储器。
另外或替代地,实施于较高高速缓冲存储器层级中的处理器侧高速缓冲存储器22可在多个处理器核心28之间共享。举例来说,在描绘的实施例中,第K高速缓冲存储器层级30K可以共享的处理器侧高速缓冲存储器34予以实施,其由第一处理器核心28A和第N处理器核心28N共享。换句话说,在一些实施例中,实施于第K高速缓冲存储器层级30K中的共享的处理器侧高速缓冲存储器34可包含L3高速缓冲存储器。
在任何情况下,如上文所描述,与实施于存储器子系统14的存储器装置18中的主存储器阵列相比,高速缓冲存储器大体上提供更快的数据存取(例如,读取和/或写入)速度。然而,高速缓冲存储器的存储容量大体上小于主存储器阵列的存储容量。实际上,在一些实施例中,处理器侧高速缓冲存储器22A的总存储容量可小于一或多个主存储器阵列的存储容量。
因此,为了促进提高数据存取速度且因此计算系统10的操作效率,处理器侧存储器控制器26A可至少部分地基于数据预期何时被处理电路16A定为目标(例如被请求)来控制处理器侧高速缓冲存储器22A中的数据存储。举例来说,处理器侧存储器控制器26A可控制数据存储,使得预期被处理电路16A定为目标的数据的实例(例如副本)在处理电路16A实际将数据定为目标之前存储在处理器侧高速缓冲存储器22A中的一或多个中。另一方面,为了促进节约(例如优化)处理器侧高速缓存22A的存储容量,处理器侧存储器控制器26A可控制数据存储,使得不将预期不会在将至的控制时域(例如持续时间)期间被处理电路16A定为目标的数据块29的执行个体存储在处理器侧高速缓冲存储器22A中。
此外,在一些实施例中,可至少部分地基于阶层式高速缓冲存储器层级控制处理器侧高速缓冲存储器22A中的数据存储。举例来说,处理器侧存储器控制器26A可经实施以专门控制例如第一高速缓冲存储器层级30A等较低高速缓冲存储器层级30中的数据存储。另一方面,在一些实施例中,处理器侧存储器控制器26A可例如与存储器侧存储器控制器26共享对例如第K高速缓冲存储器层级30K等较高高速缓冲存储器层级30中的数据存储的控制。如将在下文更详细地描述,至少在一些情况下,共享对高速缓冲存储器层级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、一或多个相变存储器(例如,3D XPointTM)存储器装置18A、一或多个铁电随机存取存储器(FeRAM)装置18A,或其任何组合。另外或替代地,易失性存储器可包含一或多个动态随机存取存储器(DRAM)装置18A和/或一或多个静态随机存取存储器(SRAM)装置18A。
此外,如上文所描述,实施于存储器子系统14中的易失性存储器可组织成一或多个存储器阵列。举例来说,如将在下文更详细地描述,存储器子系统14可利用索引表存储器阵列。另外,在描绘的实施例中,存储器子系统14A可包含例如与索引表存储器阵列分开(例如,相异)的一或多个主存储器阵列66。
此外,在描绘的实施例中,主存储器阵列66可实施于存储器子系统14A中的每一存储器通道68中。举例来说,第一主存储器阵列66可实施于第一存储器通道68A中,且第M主存储器阵列66可实施于第M存储器通道68M中。为了促进存取其主存储器阵列66(例如,从其读取和/或对其写入),在描绘的实施例中,存储器通道68可包含行选择(例如,解码器)电路70和列选择电路72,其例如分别耦合到主存储器阵列66的行和列。
为了帮助说明,图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对应。举例来说,索引表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可包含索引表行92,其各自对应于不同索引表90。
换句话说,索引表行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)相比可以更少掺杂的处理电路予以实施。使用其寄存器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可产生名称索引条目102以指示数据记录86的存储位置和其名称字段88的值。另外,存储器控制器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)可例如经由对应条目单元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)可在处理子系统未预期将对应数据记录86定为目标时产生和/或更新索引表90。举例来说,存储器子系统14可响应于一或多个数据记录86写入到主存储器阵列66而产生和/或更新索引表90。
为了帮助说明,图10中描述用于操作存储器子系统14以存储和提供对数据记录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可例如在主存储器66中分配连续存储器地址块(例如,&Ptr+(RcdCount*RcdSize)用于存储数据记录86。因此,在一些实施例中,存储器子系统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)可执行经排序存取函数以确定例如一或多个经排序存取指针,所述经排序存取指针各自与数据记录86中的一或多个中包含的索引表90和/或数据字段88对应(过程框146)。为了促进减少经排序存取指针的确定将影响数据检索时延的可能性,在一些实施例中,存储器子系统14可例如响应于一或多个索引表90正产生和/或更新而自动执行经排序存取函数。
以此方式,存储器子系统14可例如通过响应于数据正存储于存储器子系统14中(例如,主存储器阵列66)而自动执行数据处理操作,以数据处理操作将影响(例如,增加)数据检索时延的减少可能性来执行数据处理操作。事实上,在一些实施例中,以此方式实施数据处理操作可例如通过使存储器子系统14能够使用跨步存取指针和/或经排序存取指针识别目标数据来促进改善(例如,减少)后续数据检索时延。此外,如上文所描述,在存储器子系统14中提供地址管理功能可例如通过实现存储器子系统14与计算系统10中的处理子系统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中的处理器侧高速缓冲存储器22,例如L3处理器侧高速缓冲存储器22和/或实施于第K高速缓冲存储器层级30K中的共享的处理器侧高速缓冲存储器34。以此方式,存储器子系统14可操作以将目标数据提供到处理子系统12。
返回到图3的过程46,在处理子系统12请求目标数据之后,存储器控制器26(例如,处理器侧存储器控制器26A)可确定是否已从存储器子系统14接收目标数据(决策框58)。为了促进改善操作效率,在一些实施例中,处理电路16可在处理子系统12等待目标数据返回的同时继续执行其它操作。另外,在一些实施例中,当从存储器子系统14接收到指示目标数据已成功地存储于处理器侧高速缓冲存储器22中的控制信号时,存储器控制器26可确定已接收目标数据。
在任何情况下,在接收目标数据之后,存储器控制器26可指导处理子系统12将目标数据例如从处理器侧高速缓冲存储器22供应到处理电路16(过程框52)。在一些实施例中,处理器侧高速缓冲存储器22可输出具有标记元数据的高速缓冲存储器行,所述标记元数据匹配预期与目标数据相关联的目标标记元数据值。当存储在较高层级的高速缓冲存储器(例如共享的处理器侧高速缓冲存储器34)中时,在一些实施例中,目标数据可在到达处理电路16之前通过一或多个较低层级高速缓冲存储器(例如私用处理器侧高速缓冲存储器32)。
本公开的一或多个具体实施例描述于本文中且描述于对应的图中。这些所描述的实施例仅是当前公开的技术的实例。另外,在努力提供这些实施例的简明说明的过程中,说明书中可能未描述实际实施方案的所有特征。应了解在任何这样的实际实施方案的发展中,如同在任何工程或设计项目中,必须制定许多实施方案特定性的决策以实现研发者的特定目标,例如与系统相关和企业相关约束条件的一致性,这可以从一个实施方案到另一实施方案有所变化。此外,应认识到,这样的开发工作可能是复杂和耗时的,但可能是设计,加工,和制造的普通技术人员从本公开受益的日常工作。
当介绍本公开的各种实施例的要素时,冠词“一”和“所述”旨在表示存在所述要素中的一或多者。术语“包括”、“包含”和“具有”既定是包含性的且意味着可能存在除了所列元件之外的额外元件。另外,应理解,对本公开的“一个实施例”或“实施例”的参考并不意图解释为排除此外并入所叙述特征中的额外实施例的存在。
上文所描述的具体实施例已通过举例方式示出,且应理解,这些实施例可接受各种修改和替代形式。应进一步理解,权利要求并非旨在限于公开的特定形式,而是旨在涵盖属于本公开的精神和范围内的所有修改、等同方案以及替代方案。
Claims (20)
1.一种计算设备,其包括经配置以经由一或多个数据总线以通信方式耦合到处理器的存储器系统,其中所述存储器系统包括:
主存储器阵列,其经配置以在第一存储位置存储第一数据且在第二存储位置存储第二数据;以及
第一存储器控制器,其经配置以:
当所述第一数据和所述第二数据由所述处理器定为目标时接收请求返回所述第一数据和所述第二数据的存储器存取请求;
确定产生于所述存储器存取请求的数据存取模式;
确定识别所述主存储器阵列中的所述第一数据的所述第一存储位置和所述主存储器阵列中的所述第二数据的所述第二存储位置的存取指针,其中所述存取指针包括当所述数据存取模式是跨步存取模式时的跨步存取指针和当所述数据存取模式是经排序存取模式时的经排序存取指针;以及
指导所述存储器系统使用所述存取指针以识别所述第一数据和所述第二数据且经由所述一或多个数据总线输出所述第一数据和所述第二数据,以使得实施于所述处理器中的处理电路能够至少部分地基于所述第一数据和所述第二数据执行操作。
2.根据权利要求1所述的计算设备,其中:
所述主存储器阵列经配置以存储各自包括数据字段的多个数据记录,其中在所述多个数据记录中的第一数据记录的所述数据字段中指示所述第一数据,且在所述多个数据记录中的第二数据记录的所述数据字段中指示所述第二数据;且
所述第一存储器控制器经配置以当所述存储器存取请求将与所述第一数据和所述第二数据对应的所述数据字段识别为所述多个数据记录的目标部分时,确定产生于所述存储器存取请求的所述数据存取模式是所述跨步存取模式。
3.根据权利要求2所述的计算设备,其中所述第一存储器控制器经配置以:
确定由存储于所述主存储器阵列中的所述多个数据记录中的每一个使用的数据结构,其中所述数据结构指定所述多个数据记录中的每一数据记录的位深度以及经分配以指示所述数据字段的所述多个数据记录中的每一数据记录中的位位置;以及
当产生于所述存储器存取请求的所述数据存取模式是所述跨步存取模式时,通过至少部分地基于由所述多个数据记录中的每一个使用的所述数据结构执行跨步存取函数来确定所述跨步存取指针。
4.根据权利要求1所述的计算设备,其中:
所述主存储器阵列经配置以存储各自包括数据字段的多个数据记录,其中所述多个数据记录中的第一数据记录包括所述第一数据,且所述多个数据记录中的第二数据记录包括所述第二数据;且
所述第一存储器控制器经配置以当所述存储器存取请求将所述数据字段识别为目标存取索引和与所述数据字段对应的索引表中的目标索引条目位置的向量时确定产生于所述存储器存取请求的所述数据存取模式是所述经排序存取模式。
5.根据权利要求4所述的计算设备,其中:
所述存储器系统包括与所述主存储器阵列分开的索引表存储器阵列;且
所述第一存储器控制器经配置以:
将与所述数据字段对应的所述索引表存储在所述索引表存储器阵列中的第三存储位置;以及
通过执行经排序存取函数确定所述经排序存取指针,其中所述经排序存取指针指示所述索引表存储器阵列中的所述索引表的所述第三存储位置。
6.根据权利要求5所述的计算设备,其中当所述数据存取模式是所述经排序存取模式时,所述第一存储器控制器经配置以:
通过从由所述经排序存取指针指示的所述索引表存储器阵列中的所述第三存储位置读取所述索引表来确定所述索引表;以及
通过读取在所述索引表中的目标索引条目位置的所述向量处指示的索引条目来确定所述第一数据的所述第一存储位置和所述第二数据的所述第二存储位置。
7.根据权利要求1所述的计算设备,其中:
所述存储器系统经配置以接收存储于所述主存储器阵列中的多个数据记录;且
所述第一存储器控制器经配置以:
确定由所述多个数据记录中的每一个使用的数据结构,其中所述数据结构指定所述多个数据记录中的每一数据记录的大小、包含于所述多个数据记录中的每一数据记录中的数据字段,以及用以指示所述数据字段的所述多个数据记录中的每一数据记录中的多个位位置;
响应于接收到所述多个数据记录,通过至少部分地基于由所述多个数据记录中的每一个使用的所述数据结构执行分配函数来指导所述存储器系统分配所述主存储器阵列中的连续存储器地址块;以及
响应于所述连续存储器地址块的分配,而指导所述存储器系统将所述多个数据记录存储于所述主存储器阵列中的所述连续存储器地址块中。
8.根据权利要求7所述的计算设备,其中所述第一存储器控制器经配置以响应于所述多个数据记录存储于所述主存储器阵列中,通过至少部分地基于由所述多个数据记录中的每一个使用的所述数据结构执行跨步存取函数来确定所述跨步存取指针。
9.根据权利要求7所述的计算设备,其中所述第一存储器控制器经配置以:
响应于所述多个数据记录存储于所述主存储器阵列中,而产生各自与所述多个数据记录中的对应数据记录相关联的多个索引条目;
确定将存储于不同于所述主存储器阵列的索引表存储器阵列中的第三存储位置处的索引表,其中所述索引表与所述数据字段对应且包括所述多个索引条目;以及
响应于所述索引表的确定,通过执行经排序存取函数来确定所述经排序存取指针,其中所述经排序存取指针指示所述索引表存储器阵列中的所述索引表的所述第三存储位置。
10.根据权利要求1所述的计算设备,其中所述处理器包括第二存储器控制器和与所述处理电路集成的一或多个高速缓冲存储器,所述第二存储器控制器经配置以:
确定所述第一数据是否当前存储于实施于所述处理器中的所述一或多个高速缓冲存储器中;
当所述第一数据未当前存储于实施于所述处理器中的所述一或多个高速缓冲存储器中时,确定所述第一数据未当前高速缓冲存储于所述处理器中;以及
当所述第一数据未当前高速缓冲存储于所述处理器中时,经由所述一或多个数据总线输出所述存储器存取请求。
11.一种用于计算设备的方法,其包括:
使用存储器控制器确定由将存储于存储器子系统中的多个数据记录中的每一数据记录使用的数据结构;
使用所述存储器控制器,通过至少部分地基于由所述多个数据记录中的每一数据记录使用的所述数据结构执行分配函数,响应于所述存储器子系统从处理子系统接收所述多个数据记录而分配所述存储器子系统中的存储器地址块;
使用所述存储器控制器,响应于所述多个数据记录存储于所述存储器地址块中,而确定识别所述存储器子系统中的所述多个数据记录的一部分的第一存取指针;以及
使用所述存储器控制器,当随后接收的存储器存取请求将所述多个数据记录的所述部分定为目标时,指导所述存储器子系统使用所述第一存取指针将所述多个数据记录的所述部分输出到所述处理子系统,以使所述处理子系统能够至少部分地基于所述多个数据记录的所述部分执行第一操作,
其中确定所述第一存取指针包括以下至少一者:
通过至少部分地基于由所述多个数据记录中的每一数据记录使用的所述数据结构来执行跨步存取函数,来确定识别包含于所述多个数据记录中的每一个中的目标数据字段的存储位置的跨步存取指针;以及
通过执行经排序存取函数,来确定识别来自所述多个数据记录的数据记录子集的存储位置的经排序存取指针。
12.根据权利要求11所述的方法,其中:
如果确定所述第一存取指针包括确定跨步存取指针,则指导所述存储器子系统输出所述多个数据记录的所述部分包括:指导所述存储器子系统从由所述跨步存取指针识别的所述目标数据字段的所述存储位置输出所述多个数据记录的所述部分。
13.根据权利要求11所述的方法,其中:
如果确定所述第一存取指针包括确定经排序存取指针,则指导所述存储器子系统输出所述多个数据记录的所述部分包括:指导所述存储器子系统从由所述经排序存取指针识别的所述数据记录子集的所述存储位置输出所述多个数据记录的所述部分。
14.根据权利要求13所述的方法,其中确定所述经排序存取指针包括:
产生各自与所述多个数据记录中的对应数据记录相关联的多个索引条目,其中所述多个索引条目中的每一索引条目指示所述对应数据记录的第一存储位置;
将所述多个索引条目存储在所述存储器子系统中的第二存储位置处作为索引表;以及
通过执行所述经排序存取函数,确定所述经排序存取指针以识别所述存储器子系统中的所述索引表的所述第二存储位置。
15.根据权利要求14所述的方法,其包括:
当所述随后接收的存储器存取请求将与所述索引表对应的数据字段识别为目标存取索引时,选择所述索引表作为目标索引表;
通过使用所述经排序存取指针读取所述存储器子系统中的所述第二存储位置,来确定所述索引表;
通过读取在由所述随后接收的存储器存取请求识别的所述索引表中的目标索引条目位置处指示的所述多个索引条目的子集,来识别所述数据记录子集中的每一数据记录的所述第一存储位置;以及
通过从所述存储器子系统中的所述第一存储位置输出所述数据记录子集,来指导所述存储器子系统输出所述多个数据记录的所述部分。
16.一种包括存储器子系统的计算系统,其中所述存储器子系统包括:
一或多个存储器装置,其经配置以实施第一存储器阵列和不同于所述第一存储器阵列的第二存储器阵列,其中:
所述第一存储器阵列经配置以在所述第一存储器阵列中的第一存储位置处存储包括第一数据字段的第一数据记录;且
所述第二存储器阵列经配置以在所述第二存储器阵列中的第二存储位置处存储与所述第一数据字段对应的第一索引表,其中所述第一索引表包括第一索引条目,所述第一索引条目指示所述第一存储器阵列中的所述第一数据记录的所述第一存储位置和所述第一数据记录中指示的所述第一数据字段的第一值;以及
存储器侧存储器控制器,其以通信方式耦合到所述一或多个存储器装置,其中所述存储器侧存储器控制器经配置以:
指导所述一或多个存储器装置在所述第一存储器阵列中的第三存储位置处存储包括所述第一数据字段的第二数据记录;
产生第二索引条目,所述第二索引条目指示所述第一存储器阵列中的所述第二数据记录的所述第三存储位置和所述第二数据记录中指示的所述第一数据字段的第二值;
至少部分地基于所述第一索引条目中指示的所述第一数据字段的所述第一值和所述第二索引条目中指示的所述第一数据字段的所述第二值的第一经排序次序,将所述第一索引表更新为包含所述第二索引条目;以及
当由实施于所述计算系统中的处理子系统请求以执行操作时,确定识别所述第二存储器阵列中的第一索引表的所述第二存储位置的第一经排序存取指针,以使所述存储器子系统能够使用所述第一经排序存取指针根据所述第一经排序次序识别包括所述第二数据记录的多个数据记录。
17.根据权利要求16所述的计算系统,其中响应于接收到将所述多个数据记录定为目标的存储器存取请求,所述存储器侧存储器控制器经配置以:
当所述存储器存取请求将所述第一数据字段识别为目标存取索引时:
将所述第一索引表识别为目标索引表;以及
通过使用所述第一经排序存取指针从所述第二存储器阵列读取所述第一索引表来确定所述第一索引表;
通过读取由所述存储器存取请求识别的所述目标索引表中的多个目标索引条目位置,来确定所述第一存储器阵列中的所述多个数据记录中的每一数据记录的存储位置;以及
指导所述一或多个存储器装置经由耦合于所述处理子系统与所述存储器子系统之间的系统总线从所述第一存储器阵列中的所述第一存储位置和所述第三存储位置输出所述多个数据记录,以使所述处理子系统能够至少部分地基于所述多个数据记录执行所述操作。
18.根据权利要求16所述的计算系统,其中所述存储器侧存储器控制器经配置以:
确定由所述第二数据记录使用的数据结构,其中所述数据结构指定所述第二数据记录的位深度和用以指示所述第一数据字段的所述第二数据记录中的一或多个位位置;
响应于从耦合于所述处理子系统与所述存储器子系统之间的系统总线接收到所述第二数据记录,而指导所述一或多个存储器装置至少部分地基于由所述第二数据记录使用的所述数据结构来分配所述第一存储器阵列中的所述第三存储位置;以及
响应于所述第三存储位置的分配,而指导所述一或多个存储器装置在所述第一存储器阵列中的所述第三存储位置处存储所述第二数据记录。
19.根据权利要求18所述的计算系统,其中所述存储器侧存储器控制器经配置以:
通过至少部分地基于由所述数据结构指定的第二数据记录的所述位深度执行分配函数,来指导所述一或多个存储器装置分配所述第一存储器阵列中的所述第三存储位置;
通过读取由所述数据结构指定的所述一或多个位位置,来确定将在所述第二索引条目中指示的所述第一数据字段的所述第二值;以及
通过响应于所述第一索引表的产生、所述第一索引表更新为包含所述第二索引条目或这两者而执行经排序存取函数,来确定识别所述第二存储器阵列中的所述第一索引表的所述第二存储位置的所述第一经排序存取指针。
20.根据权利要求16所述的计算系统,其中:
所述第一数据记录包括不同于所述第一数据字段的第二数据字段且所述第二数据记录包括所述第二数据字段;
所述第二存储器阵列经配置以在所述第二存储器阵列中的第四存储位置处存储与所述第二数据字段对应的第二索引表,其中所述第二索引表包括第三索引条目,所述第三索引条目指示所述第一存储器阵列中的所述第一数据记录的所述第一存储位置和所述第一数据记录中指示的所述第二数据字段的第三值;且
所述存储器侧存储器控制器经配置以:
产生第四索引条目,所述第四索引条目指示所述第一存储器阵列中的所述第二数据记录的所述第三存储位置和所述第二数据记录中指示的所述第二数据字段的第四值;
至少部分地基于所述第一索引条目中指示的所述第二数据字段的所述第三值和所述第二索引条目中指示的所述第二数据字段的所述第四值的第二经排序次序,将所述第二索引表更新为包含所述第四索引条目;以及
当由实施于所述计算系统中的所述处理子系统请求以执行所述操作时,确定识别所述第二存储器阵列中的第二索引表的所述第四存储位置的第二经排序存取指针,以使所述存储器子系统能够使用所述第二经排序存取指针根据所述第二经排序次序识别包括所述第二数据记录的所述多个数据记录。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862725002P | 2018-08-30 | 2018-08-30 | |
US62/725,002 | 2018-08-30 | ||
US16/428,168 US10705762B2 (en) | 2018-08-30 | 2019-05-31 | Forward caching application programming interface systems and methods |
US16/428,168 | 2019-05-31 | ||
PCT/US2019/044362 WO2020046527A1 (en) | 2018-08-30 | 2019-07-31 | Forward caching application programming interface systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112602071A CN112602071A (zh) | 2021-04-02 |
CN112602071B true CN112602071B (zh) | 2022-03-04 |
Family
ID=69641103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980055491.0A Active CN112602071B (zh) | 2018-08-30 | 2019-07-31 | 正向高速缓存应用程序编程接口系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10705762B2 (zh) |
EP (1) | EP3827355B1 (zh) |
KR (1) | KR102254066B1 (zh) |
CN (1) | CN112602071B (zh) |
WO (1) | WO2020046527A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11900161B2 (en) * | 2020-03-24 | 2024-02-13 | Advanced Micro Devices, Inc. | Memory allocation for processing-in-memory operations |
EP4092674B1 (en) * | 2021-05-19 | 2024-08-07 | Commissariat à l'Energie Atomique et aux Energies Alternatives | A non-volatile memory programming circuit and a method of programming non-volatile memory devices |
US11836128B1 (en) | 2023-07-21 | 2023-12-05 | Sadram, Inc. | Self-addressing memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778434A (en) * | 1995-06-07 | 1998-07-07 | Seiko Epson Corporation | System and method for processing multiple requests and out of order returns |
US6311260B1 (en) | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
US7421545B1 (en) | 2002-12-27 | 2008-09-02 | Unisys Corporation | Method and apparatus for multiple sequence access to single entry queue |
US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
US7917701B2 (en) * | 2007-03-12 | 2011-03-29 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation |
JP5707911B2 (ja) | 2010-01-27 | 2015-04-30 | 富士通セミコンダクター株式会社 | データ転送制御装置 |
US9250954B2 (en) | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9697136B2 (en) * | 2014-09-23 | 2017-07-04 | Arm Limited | Descriptor ring management |
US9442801B2 (en) * | 2014-09-26 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Platform error correction |
US10318423B2 (en) * | 2016-12-14 | 2019-06-11 | Macronix International Co., Ltd. | Methods and systems for managing physical information of memory units in a memory device |
US11853244B2 (en) | 2017-01-26 | 2023-12-26 | Wisconsin Alumni Research Foundation | Reconfigurable computer accelerator providing stream processor and dataflow processor |
US10387160B2 (en) * | 2017-04-01 | 2019-08-20 | Intel Corporation | Shared local memory tiling mechanism |
-
2019
- 2019-05-31 US US16/428,168 patent/US10705762B2/en active Active
- 2019-07-31 WO PCT/US2019/044362 patent/WO2020046527A1/en unknown
- 2019-07-31 EP EP19856218.3A patent/EP3827355B1/en active Active
- 2019-07-31 CN CN201980055491.0A patent/CN112602071B/zh active Active
- 2019-07-31 KR KR1020217006505A patent/KR102254066B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP3827355A1 (en) | 2021-06-02 |
US20200073594A1 (en) | 2020-03-05 |
US10705762B2 (en) | 2020-07-07 |
EP3827355A4 (en) | 2021-10-06 |
KR20210029832A (ko) | 2021-03-16 |
WO2020046527A1 (en) | 2020-03-05 |
CN112602071A (zh) | 2021-04-02 |
EP3827355B1 (en) | 2022-09-21 |
KR102254066B1 (ko) | 2021-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12111764B2 (en) | Forward caching memory systems and methods | |
CN112639748B (zh) | 异步正向缓存存储器系统和方法 | |
CN110580229B (zh) | 扩展线宽存储器侧高速缓存系统和方法 | |
CN112602071B (zh) | 正向高速缓存应用程序编程接口系统和方法 | |
CN114175001B (zh) | 存储器感知预取和高速缓存旁路系统和方法 | |
US11354246B2 (en) | Memory-side transaction context memory interface systems and methods based on clock cycles and wires | |
US10877889B2 (en) | Processor-side transaction context memory interface systems and methods |
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 |