CN113826083A - 处理器侧事务上下文存储器接口系统和方法 - Google Patents

处理器侧事务上下文存储器接口系统和方法 Download PDF

Info

Publication number
CN113826083A
CN113826083A CN202080035493.6A CN202080035493A CN113826083A CN 113826083 A CN113826083 A CN 113826083A CN 202080035493 A CN202080035493 A CN 202080035493A CN 113826083 A CN113826083 A CN 113826083A
Authority
CN
China
Prior art keywords
memory
data
context
access request
block
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.)
Pending
Application number
CN202080035493.6A
Other languages
English (en)
Inventor
D·A·罗伯茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113826083A publication Critical patent/CN113826083A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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)

Abstract

本发明提供用于实施和/或操作一种设备的技术,所述设备包含经由存储器总线以通信方式耦合到存储器系统(14)的处理系统(12)。所述处理系统包含处理电路系统(16)、一或多个高速缓存器(24)和存储器控制器(34)。当被所述处理电路系统(16)定为目标的数据块导致处理器侧未命中时,所述存储器控制器(34)发指令给所述处理系统(12)以至少部分地通过以下操作输出请求传回所述数据块的存储器存取请求:在第一时钟循环期间输出供所述存储器系统(14)用以将所述数据块定位在一或多个阶层式存储器层级中的存取参数,以及在不同于所述第一时钟循环的第二时钟循环期间输出指示与所述数据块的当前目标化相关联的上下文信息的上下文参数,以使所述存储器系统(14)能够至少部分地基于所述上下文信息预测性地控制数据存储。

Description

处理器侧事务上下文存储器接口系统和方法
背景技术
本公开大体上涉和计算系统,且更特定来说,涉和实施于计算系统中的存储器接口。
一般来说,计算系统包含处理子系统和存储器子系统,存储器子系统可存储可由处理子系统的处理电路系统存取的数据。举例来说,为执行操作,处理电路系统可执行从在存储器子系统中实施的存储器装置检索的对应指令。在一些情况下,还可从存储器装置检索操作的数据输入。另外或替代地,来自操作(例如从中产生)的数据输出可存储在存储器装置中以例如实现后续检索。然而,至少在一些情况下,计算系统的操作效率可受其架构限制,例如,所述架构管控计算系统中进行的操作的序列。
附图说明
在阅读以下详细描述后且在参考附图后,可更好地理解本公开的各种方面,在附图中:
图1是根据本公开的实施例的包含处理子系统和存储器子系统的计算系统的框图;
图2是根据本公开的实施例的图1的处理子系统的实例的框图;
图3是根据本公开的实施例的用于操作图2的处理子系统的实例过程的流程图;
图4是根据本公开的实施例的依据事务上下文组织的历史数据存取信息的图形表示;
图5是根据本公开的实施例的用于预测性地控制图1的计算系统中的数据存储的实例过程的流程图;
图6是根据本公开的实施例的用于请求存取图1的存储器子系统的实例过程的流程图;
图7是根据本公开的实施例的从图2的处理子系统输出的实例存储器存取请求的图形表示;
图8是根据本公开的实施例的实施于图2的处理子系统中的实例请求队列的图形表示;
图9是根据本公开的实施例的图1的存储器子系统的实例的框图;
图10是根据本公开的实施例的可实施于图9的存储器子系统中的实例存储器阵列的框图;
图11是根据本公开的实施例的实例数据对象的图形表示,所述数据对象包含数据块和指示与所述数据块相关联的事务上下文的一或多个上下文参数;
图12是根据本公开的实施例的实施于图1的计算系统中的实例高速缓存器的框图;
图13是根据本公开的实施例的用于操作图9的存储器子系统的实例过程的流程图;
图14是根据本公开的实施例的实施于图1的计算系统中的实例存储器总线和存储器总线接口的框图;和
图15是根据本公开的实施例的在图1的处理子系统与存储器子系统之间的实例通信的定时图。
具体实施方式
本公开提供例如通过减轻原本可能限制操作效率的架构特征以有助于提高计算系统操作效率的技术。通常,计算系统可包含各种子系统,例如处理子系统和/或存储器子系统。特定来说,处理子系统可包含例如实施于一或多个处理器和/或一或多个处理器核心中的处理电路系统。存储器子系统可包含一或多个存储器装置(例如,芯片或集成电路),所述一或多个存储器装置例如实施于如双列直插式存储器模块(DIMM)的存储器模块上,以及/或组织成实施一或多个存储器阵列(例如,存储器单元阵列)。
通常,在计算系统的操作期间,实施于其处理子系统中的处理电路系统可通过执行当前存储于其寄存器中的一或多个中的对应指令来执行各种操作。举例来说,当应用程序(例如,程序)正在计算系统中运行时,处理电路系统可执行应用程序指令被对输入数据执行数据处理操作。至少在一些情况下,处理子系统中的处理电路系统可存取的数据可存储于计算系统所述的存储器子系统的一或多个存储器装置中。举例来说,存储器子系统可存储输入到操作的数据、从所述操作输出(例如,得到)的数据,以及/或经由实施于其存储器装置中的一或多个中的存储器阵列指示可执行应用程序指令的数据。换句话说,在计算系统的操作期间,处理子系统可存取所述存储器子系统,例如以将数据存储(例如,写入)到存储器子系统和/或检索(例如,读取)先前存储于存储器子系统中的数据。
为了能够存取存储器子系统,处理子系统可经由一或多个通信总线(例如存储器总线和/或通信(例如,以太网)网络)以通信方式耦合到存储器子系统。另外,为存取存储器子系统,在一些情况下,处理子系统可输出存储器存取请求,所述存储器存取请求指示将供存储器子系统用于提供处理子系统存储器存取的一或多个存取参数。举例来说,为将数据块存储(例如,写入)到存储器子系统,处理子系统可输出指示一或多个写入存取参数的写入存储器存取请求,所述写入存取参数例如供处理电路系统使用以识别数据块的虚拟存储器地址、存储器子系统中将存储数据块的物理存储器地址、数据块的大小(例如,位计数)和/或写入存取指示符(例如,位)。另外或替代地,为从存储器子系统检索(例如,读取)数据块,处理子系统可输出指示读取存取参数的读取存储器存取请求,所述读取存取参数例如供处理电路系统用以识别数据块的虚拟存储器地址、存储器子系统中期望将存储数据块的物理存储器地址、数据块的大小(例如,位深度或位长度)和/或读取存取指示符(例如,位)。
响应于接收到读取存储器存取请求,存储器子系统可至少部分地基于其中指示的读取存取参数来搜索被读取存储器存取请求定为目标的数据块。举例来说,存储器子系统可至少部分地基于读取存储器存取请求中所指示的虚拟存储器地址和/或物理存储器地址来确定预期将与目标数据块相关联的标记参数(例如,元数据)的目标值。存储器子系统接着可通过依次将目标标记参数值和与存储在其中的有效数据块相关联的标记参数的值进行比较来识别(例如,找出)目标数据块。一旦检测到匹配,则存储器子系统可将相关联数据块识别为目标数据块,且因此将相关联数据块传回到处理子系统,例如,以供其处理电路系统进行处理和/或执行。因此,至少在一些情况下,计算系统的操作效率可能取决于其存储器子系统所提供的数据检索延时(例如,传回目标数据之前的持续时间)。
然而,不同计算子系统之间的数据通信一般比计算子系统内的数据通信慢,举例来说,这归因于不同计算子系统的定时(例如,时钟域)、与其它计算子系统共享耦合于不同子系统之间的数据总线和/或不同子系统之间的通信距离。换句话说,处理子系统内(例如其内部)的数据通信可比处理子系统与存储器子系统之间的数据通信快。因此,为了有助于改进(例如,减小或缩短)数据检索延时,一或多个高速缓存器可实施于处理子系统中。举例来说,处理子系统可包含与其处理电路系统集成在一起的一级(L1)高速缓存器、二级(L2)高速缓存器和/或三级(L3)高速缓存器。
更具体地,在一些情况下,高速缓存器可经实施和/或操作以存储(例如,高速缓存器)从处理电路系统输出的数据、处理电路系统请求(例如,输入到处理电路系统和/或被处理电路系统定为目标)的数据和/或从存储器子系统中的存储器阵列预取的数据。另外或替代地,计算系统可包含与实施于计算系统中的高速缓存器相异(例如,分开)的一或多个缓冲器,例如预取缓冲器。在一些情况下,预取缓冲器可经实施和/或操作以存储(例如,缓冲)从存储器阵列预取的数据。实际上,为了有助于减小高速缓存器污染,在一些情况下,计算系统可保持预取的数据存储于预取缓冲器中,例如而非将预取的数据传送到高速缓存器。
为了有助于进一步改进(例如,减小或缩短)数据检索延时,在一些情况下,存储器子系统的总存储容量可分布于多个阶层式存储器层级(例如,层)上。通常,阶层式存储器子系统可包含最靠近处理电路系统的最低(例如,第一)存储器层级和最远离处理电路系统的最高(例如,最后一个)存储器层级。另外,在一些情况下,阶层式存储器子系统可包含处于最低存储器层级和最高存储器层级之间的一或多个中间存储器层级。换句话说,中间存储器层级可实施于相较于最低存储器层级距离处理电路系统较远且相较于最高存储器层级更接近处理电路系统处。
通常,可实施阶层式存储器层级,使得例如至少部分地通过实施与较高存储器层级相比具有较少(例如,较小)存储容量的较低存储器层级,较低存储器层级与较高存储器层级相比提供更快速的数据存取(例如,读取和/或写入)速度。由此,为了在设定目标(例如,请求)数据时有助于改进数据检索延时,如果目标数据导致未命中(例如,目标标记参数值与任何有效的标记参数值都不匹配),则计算系统可尝试先从最低的阶层式存储器层级检索目标数据,接着再逐步行进到较高的存储器层级。举例来说,计算系统可检查目标数据块当前是否存储在最低(例如,第一)存储器层级中。当目标数据块导致最低存储器层级中的未命中时,计算系统可接着检查目标数据块当前是否存储在下一最低(例如,第二)存储器层级中,依此类推。
此外,在一些情况下,在目标数据当前并未存储在较低存储器层级中时,计算系统可在从较高存储器层级检索之后将目标数据的副本(例如,个例)存储(例如,高速缓存器和/或缓冲)在较低存储器层级中。实际上,至少在一些情况下,与从较高存储器层级直接检索目标数据相比,未命中较低存储器层级实际上可能导致较慢的(例如,较高的)数据检索延时。换句话说,对数据检索延时的影响,以及因此实施多个阶层式存储器层级所导致的计算系统操作效率,在很大程度上可能取决于当实际将数据作为目标时存储数据的存储器层级。
因此,为了有助于提高计算系统操作效率,本公开提供了用于实施和/或操作计算系统以减少其处理电路系统定为目标的数据未命中较低存储器层级(例如,层)的可能性的技术。在一些实施例中,与由其存储器子系统中的存储器阵列实施的存储器层级相比,计算系统可将在其处理子系统中实施的高速缓存器和/或缓冲器视为一或多个较低存储器层级。举例来说,处理子系统中的第一(例如,L1)高速缓存器可被视为最低存储器层级,处理子系统中的第二(例如,L2)高速缓存器可被视为下一最低存储器层级,依此类推。另外或替代地,当实施和/或操作计算系统以保持将预取的数据存储在预取缓冲器中时,处理子系统中的高速缓存器可被视为较低存储器层级,且预取缓冲器可被视为较高存储器层级。
在一些实施例中,计算系统可另外包含在其存储器子系统中实施的一或多个高速缓存器和/或缓冲器,例如预取缓冲器。换句话说,在此类实施例中,计算系统可包含一或多个处理器侧高速缓存器以及一或多个存储器侧高速缓存器,其经实施以与一或多个处理器侧高速缓存器相比提供较高存储器层级。另外或替代地,计算系统可包含处理器侧预取缓冲器以及存储器侧预取缓冲器,其经实施以与处理器侧预取缓冲器相比提供较高存储器层级。此外,在一些实施例中,与(例如,处理器侧和/或存储器侧)高速缓存器存储器层级和/或(例如,处理器侧和/或存储器侧)预取存储器层级相比,存储器子系统中的一或多个存储器阵列可经实施以提供较高存储器层级。举例来说,存储器子系统可包含经实施以提供最高存储器层级的非易失性存储器阵列和经实施以提供下一最高存储器层级的易失性存储器阵列,例如动态随机存取存储器(DRAM)阵列。
为了有助于减小未命中较低存储器层级的可能性,在一些实施例中,计算系统可包含一或多个存储器控制器,其经实施和/或操作以控制其中的数据存储。举例来说,计算系统可包含控制其处理子系统中的数据存储的第一(例如,处理器侧)存储器控制器和控制其存储器子系统中的数据存储的第二(例如,存储器侧)存储器控制器。换句话说,如本文中所使用,“存储器控制器”意在描述经实施和/或操作以控制计算系统中的数据存储的控制器(例如,控制电路和/或控制逻辑)。实际上,在一些实施例中,可使用多个控制器来实施存储器控制器,例如,控制高速缓存器存储器层级中的数据存储的高速缓存控制器、控制预取存储器层级中的数据存储的预取控制器以及/或控制DRAM存储器层级中的数据存储的DRAM(例如,主)存储器控制器。
为了有助于减小未命中较低存储器层级的可能性,在一些实施例中,存储器控制器可预测地控制一或多个阶层式存储器层级中的数据存储。换句话说,至少在此类实施例中,存储器控制器可预测预期在即将到来的控制范围(例如,时间段或一或多个时钟循环)内发生的数据存取模式,且相应地控制一或多个阶层式存储器层级中的数据存储。实际上,由于处理电路系统经常展现某种循环性的(例如,重复的)数据存取模式,因此在一些实施例中,存储器控制器可至少部分地基于一或多个先前(例如,历史)数据存取模式来预测后续数据存取模式。
在一些实施例中,存储器控制器可通过确定先前存取(例如,定为目标和/或请求)什么数据、何时先前存取数据和/或先前存取数据的次序来确定先前的数据存取模式。因此,为了有助于确定先前的数据存取模式,在一些实施例中,存储器控制器可历史地跟踪与数据(例如,存储器)存取相关联的存取信息(例如,参数),例如,经由历史数据存取信息表中的条目。作为说明性实例,当第一数据块被存取(例如,定为目标和/或写入)时,存储器控制器可存储识别历史数据存取信息表中的第一条目的块识别符字段中的第一数据块的第一块识别符参数(例如,对应的标记参数、物理存储器地址或虚拟存储器地址)。
为了有助于历史跟踪,在一些实施例中,存储器控制器可例如经由历史数据存取信息表中的连续条目按时间次序存储由多个数据存取定为目标的数据块的指示。为了帮助说明,继续以上实例,当在第一数据块之后存取第二数据块时,存储器控制器可将识别第二数据块的第二块识别符参数存储在历史数据存取信息表中的第二条目的块识别符字段中。另外,当在第二数据块之后存取第三数据块时,存储器控制器可将识别第三数据块的第三块识别符参数存储在历史数据存取信息表中的第三条目的块识别符字段中。
由此,在一些实施例中,存储器控制器可至少部分地通过读取其历史数据存取信息表的条目来确定先前的数据存取模式。举例来说,通过读取历史数据存取信息表中的条目的块识别符字段,存储器控制器可确定先前的数据存取模式存取了第一数据块、第二数据块和第三数据块。换句话说,通过读取其历史数据存取信息表的条目,存储器控制器可确定通过先前的数据存取模式存取(例如,定为目标和/或写入)了什么数据块。
另外或替代地,至少部分地基于历史数据存取信息表中指示的对应块识别符,存储器控制器可确定第一数据块的第一(例如,物理或虚拟)存储器地址与第二数据块的第二存储器地址之间的第一步长(例如,距离)、第二数据块的第二存储器地址与第三数据块的第三存储器地址之间的第二步长和/或第一数据块的第一存储器地址与第三数据块的第三存储器地址之间的第三步长。此外,基于历史数据存取信息表中的对应条目的次序,存储器控制器可确定先前数据存取模式在第一数据块之后存取了第二数据块,先前数据存取模式在第二数据块之后存取了第三数据块,以及/或先前数据存取模式在第一数据块之后存取了第三数据块。换句话说,通过读取其历史数据存取信息表的条目,存储器控制器可确定在先前数据存取模式期间数据块的相对存取时间。
在一些实施例中,存储器控制器可另外在先前数据存取模式期间跟踪数据块的绝对存取时间。为了有助于历史地跟踪绝对存取时间,在一些实施例中,历史数据存取信息可包含一或多个写入时间参数,其各自指示何时初始写入(例如,存储)对应的数据块和/或对应的存储器地址,以及/或一或多个上次存取时间参数,其各自指示何时最近存取(例如,定为目标和/或请求)对应数据块和/或对应存储器地址。举例来说,当存取第一数据块时,存储器控制器可将指示当前时间的第一上次存取时间参数存储在历史数据存取信息表中的第一条目的上次存取时间字段中。类似地,存储器控制器可在存取第二数据块时将指示当前时间的第二上次存取时间参数存储在历史数据存取信息表中的第二条目的上次存取时间字段中,以及/或在存取第三数据块时将指示当前时间的第三上次存取时间参数存储在历史数据存取信息表中的第三条目的上次存取时间字段中。
另外或替代地,存储器控制器可跟踪在先前数据存取模式期间数据块被存取(例如,定为目标或请求)的次数。为了有助于历史地跟踪存取计数,在一些实施例中,历史数据存取信息可包含一或多个存取计数参数,其各自指示对应数据块和/或对应存储器地址已被存取的次数。举例来说,当存取第一数据块时,存储器控制器可递增在历史数据存取信息表中的第一条目的存取计数字段中所指示的第一存取计数参数的值。类似地,当存取第二数据块时,存储器控制器可递增在历史数据存取信息表中的第二条目的存取计数字段中所指示的第二存取计数参数的值,以及/或当存取第三数据块时递增在历史数据存取信息表中的第三条目的存取计数字段中所指示的第三存取计数参数的值。
由于数据存取模式通常在某种程度上是重复的(例如,循环的),因此在一些实施例中,存储器控制器可至少部分地基于与一或多个先前数据存取模式相关联的历史数据存取信息来预测后续数据存取模式。换句话说,至少部分地基于历史数据存取信息,存储器控制器可预测随后将存取什么数据、何时将随后存取数据和/或随后将存取数据的次序。为了帮助说明,继续以上实例,存储器控制器可预测,由于历史数据存取信息指示第一数据块和第二数据块已按照先前数据存取模式存取,因此第一数据块和第二数据块将再次按后续数据存取模式存取。另外或可替代地,存储器控制器可预测,由于历史数据存取信息指示先前数据存取模式在存取第一数据块之后存取第二数据块,因此后续数据存取模式将在存取第一数据块之后再次存取第二数据块。
换句话说,在一些实施例中,存储器控制器可通过预测下一目标数据块来预测后续数据存取模式。举例来说,当存取第一数据块时,存储器控制器可预测接下来将存取第二数据块。另外或替代地,由于历史数据存取信息指示第二数据块的第二存储器地址距第一数据块的第一存储器地址为第一步长(例如,距离),因此存储器控制器可预测下一目标数据块是与距当前或先前存取的数据块第一步长的(例如,物理和/或虚拟)存储器地址相关联的数据块。
然而,至少在一些情况下,例如,由于与不相关数据块和/或不相关(例如虚拟和/或物理)存储器地址相关联的历史数据存取信息也在预测中权重过大,因此仅基于时间顺序的数据存取信息来预测后续数据存取模式可能导致对后续数据存取模式的预测不恰当。为了帮助说明,继续以上实例,第一数据块的先前目标化和第三数据块的先前目标化可能是由于在计算系统中运行特定应用程序(例如,程序或线程)引起的。另一方面,第二数据块的先前目标化可能是由独立于特定应用程序的系统中断引起的。
由于独立于特定应用程序,因此系统中断可能并不总是在以第一数据块为目标与以第三数据块为目标之间发生。换句话说,至少在一些情况下,系统中断以及由此导致的第二数据块的目标化可能不会在按照后续数据存取模式的第一数据块的目标化与第三数据块的目标化之间发生。因此,至少在这种情况下,对与第一数据块、第二数据块和第三数据块相关联的历史数据存取信息进行同等加权可能导致后续数据存取模式的预测不当,例如使得第三数据块的预测下一目标时间出现在相对于其实际下一目标时间而言过迟的时间,以致于无法在其下一目标化之前将第三数据块预取到较低存储器层级。
为了有助于提高预测准确性,在一些实施例中,存储器控制器可至少部分地通过鉴于与一或多个数据(例如,存储器)存取相关联的事务上下文来分析历史数据存取信息以此来预测后续的数据存取模式。特定来说,在一些实施例中,可经由上下文信息(例如,一或多个参数)来指示与数据存取相关联的事务上下文,所述上下文信息识别与(例如,所产生和/或定为目标的)数据块和/或数据存取定为目标的(例如,物理和/或虚拟)存储器地址相关联的计算系统的一或多个方面。举例来说,上下文信息可包含处理器上下文参数,所述处理器上下文参数识别产生数据块的计算系统中的处理器、当前以数据块为目标的计算系统中的处理器和/或以前以数据块为目标的计算系统中的处理器。
此外,在一些实施例中,可用变化的特定性层级来指示上下文信息。举例来说,上下文信息可另外或替代地包含处理器核心上下文参数,所述处理器核心上下文参数识别产生数据块的处理器中的处理器核心、当前以数据块为目标的处理器中的处理器核心和/或先前以数据块为目标的处理器中的处理器核心。在一些实施例中,上下文信息可另外或替代地包含应用程序(例如,程序或线程)上下文参数,其识别导致产生数据块的应用程序、导致当前将数据块定为目标的应用程序,以及/或导致先前将数据块定为目标的应用程序。另外或替代地,上下文信息可包含应用程序指令(例如,程序计数器)上下文参数,其识别导致产生数据块的应用程序指令、导致当前以数据块为目标的应用程序指令,以及/或导致先前将数据块定为目标的应用程序指令。
因此,在一些实施例中,例如由于处理子系统中的处理电路系统是产生存储在计算系统中的数据块和/或将其定为目标的实体,因此与一或多个先前数据存取相关联的上下文信息可直接用于计算系统的处理子系统。另外,在一些实施例中,存储器控制器可将不同的上下文信息识别为与不同的事务上下文相关联。换句话说,在一些实施例中,不同的事务上下文可与不同的上下文参数集相关联,例如,其在所包含的上下文参数的类型、所包含的上下文参数的数目和/或一或多个上下文参数的值方面不同。
如上所述,在一些实施例中,与数据存取相关联的上下文参数的值可识别与(例如,所产生和/或被定为目标的)数据块和/或被数据存取定为目标的(例如,物理和/或虚拟)存储器地址相关联的计算系统的一或多个方面。实际上,在一些实施例中,存储器控制器可预测产生数据块的计算系统的方面随后将以所述数据块为目标。另外或替代地,存储器控制器可预测先前将数据块定为目标的计算系统的方面随后将再次将数据块定为目标。换句话说,在一些实施例中,与数据存取相关联的上下文信息可指示计算的一或多个方面,所述计算的一或多个方面预期随后例如在即将来临的控制范围期间以对应数据块为目标。
由此,在一些实施例中,鉴于对应上下文信息来分析历史数据存取信息可使存储器控制器能够识别与计算系统的不同方面(例如,事务上下文)相关联的数据存取模式。为了有助于鉴于上下文信息进行分析,在一些实施例中,存储器控制器可按照事务上下文来组织其历史数据存取信息。举例来说,历史数据存取信息表可组织成多个区段(例如,部分),每个区段专用于不同的事务上下文。换句话说,历史数据存取信息可包含用以指示与第一事务上下文相关联的历史数据存取信息的第一区段、经实施以用以指示与第二(例如,不同)事务上下文相关联的历史数据存取信息的第二区段,等等。
作为说明性实例,当第一上下文是导致以第一数据块和第三数据块为目标的特定应用程序(例如,程序或线程)时,存储器控制器可将与第一数据块相对应的第一条目数据块和与第三数据块相对应的第三条目存储在历史数据存取信息表的第一区段中,例如,相对于彼此和/或和与特定应用程序相关联的数据块相对应的其它条目按时间次序。另外或替代地,当第二上下文是导致以第二数据块为目标的系统中断时,存储器控制器可将与第二数据块相对应的第二条目存储在历史数据存取信息表的第二区段中,例如,相对于与系统中断相关联的数据块对应的一或多个其它条目按时间次序。以此方式,存储器控制器可区分与计算系统的不同方面相关联(例如,由其产生)的数据存取,从而使存储器控制器能够确定各自与计算系统的特定方面(例如,事务上下文)相关联的先前数据存取模式。至少在一些情况下,这可例如通过使存储器控制器能够在其预测中自适应地调整历史数据存取信息的加权来有助于提高后续数据存取模式的预测准确度。
为了帮助说明,继续以上实例,存储器控制器可确定,由于与第一数据块相对应的第一条目和与第三数据块相对应的第三条目两者皆包含在历史数据存取信息表的第一区段中,因此第一数据块的先前目标化和第三数据块的先前目标化与特定应用程序(例如,程序或线程)相关联。另外,存储器控制器可确定,由于与第二数据块相对应的第二条目包含在历史数据存取信息表的第二区段中,因此第二数据块的先前目标化与系统中断相关联。由于系统中断独立于特定应用程序而发生,因此在预测与特定应用程序相关联的后续数据存取模式(例如,第一事务上下文)时,存储器控制器可更重地加权与第一数据块和第二数据块相关联的历史数据存取信息,而较少地加权与第三数据块相关联的历史数据存取信息,例如,使得与第三数据块相关联的历史数据存取信息从预测中排除。
另外,由于在处理子系统中可用,因此在一些实施例中,处理器侧存储器(例如,高速缓存器和/或预取)控制器可至少部分地基于上下文信息来预测性地控制处理子系统中的数据存储。举例来说,至少部分地基于处理子系统中可用的上下文信息和历史数据存取信息,处理器侧存储器控制器可预测后续数据存取模式。为了有助于提高计算系统的操作效率,处理器侧存储器控制器可接着至少部分地基于预测的后续数据存取模式来自适应地调整处理子系统的一或多个存储器(例如,高速缓存器和/或缓冲器)层级中的数据存储。
举例来说,处理器侧存储器控制器可控制处理器侧高速缓存器中的数据存储,从而将预期在即将到来的控制范围内定为目标的数据块在实际由处理电路系统定为目标之前存储(例如,预取和/或保持)在处理器侧高速缓存器中。另外或替代地,处理器侧存储器控制器可控制处理器侧高速缓存器中的数据存储,使得在即将到来的控制范围期间不预期被定为目标的数据块从处理器侧高速缓存器中逐出,例如以腾出空间用于预期在即将到来的控制范围内定为目标的另一数据块。以此方式,可实施和/或操作处理器侧存储器控制器,以预测性地控制对应处理子系统的一或多个存储器层级中的数据存储,这至少在一些情况下可有助于改进计算系统的操作。举例来说,通过降低目标数据块将导致较低存储器层级未命中的可能性。
为了有助于进一步提高计算系统的操作效率,在一些实施例中,可实施和/或操作存储器侧存储器控制器以预测性地控制存储器子系统的一或多个存储器层级中的数据存储。如上所述,在一些实施例中,与数据存取相关联的上下文信息可直接用于处理子系统,且因此可用于其处理侧存储器控制器。然而,在一些实施例中,上下文信息可能不是直接可用于存储器子系统,且因此不可用于其存储侧存储器控制器。如上所述,至少在一些情况下,在不考虑事务上下文的情况下预测后续数据存取模式可能会影响(例如,减少或限制)预测准确度,从而影响计算系统的操作效率。
因此,为了有助于提高存储器子系统中的预测准确度,在一些实施例中,处理子系统可经由存储器接口将上下文信息传达到存储器子系统,例如,存储器接口包含耦合在处理子系统与存储器子系统之间的存储器总线、耦合到存储器总线的处理器侧总线接口、耦合到存储器总线的存储器侧总线接口和/或控制处理子系统与存储器子系统之间的通信的通信协议。实际上,在一些实施例中,处理子系统可例如随着一或多个存取参数在存储器存取请求中指示一或多个上下文参数。换句话说,在此类实施例中,处理子系统可输出存储器存取请求,所述存储器存取请求指示与数据块相关联的一或多个上下文参数以及存取参数,例如由处理电路系统用以识别数据块的虚拟存储器地址、用以或将用以在存储器子系统中存储数据块的物理存储器地址、数据块的大小和/或存取类型(例如,写入或读取)指示符(例如,位)。
然而,至少在一些情况下,计算系统在其处理子系统与其存储器子系统之间传达上下文参数的能力可能受到其中实施的存储器接口(例如,硬件和/或软件)的限制。特定来说,在一些实施例中,存储器接口可包含耦合于在处理子系统和存储器子系统中实施的总线接口之间的存储器总线。通常,存储器总线可用固定数目的导线(例如,导电路径或迹线)来实施,而耦合到存储器总线的总线接口可用固定数目的引脚来实施。由此,由存储器接口提供的通信带宽通常可为固定的,例如,使得可操作存储器接口以在每个时钟循环内并行地传达多达固定(例如,最大)位数。
另外或替代地,存储器接口可包含通信协议,所述通信协议控管存储器存取请求的格式化和/或通信(例如,定时和/或路由)。举例来说,为了有助于存储器子系统的恰当解译,通信协议可控管存储器存取请求到一或多个参数字段中的格式化,每个参数字段可用以指示对应参数的值。此外,在一些实施例中,通信协议可控管在处理子系统与存储器子系统之间传达的一或多个参数字段的定时和/或路由。举例来说,通信协议可控管在其期间传达(例如,发射或接收)参数字段的时钟循环和/或经由其传达参数字段的总线接口引脚。
然而,至少在一些情况下,例如与不包含上下文参数的另一(例如,传统的)存储器存取请求相比,在存储器存取请求中包含一或多个上下文参数可能导致用以指示存储器存取请求的位数增加。实际上,在一些实施例中,存储器存取请求可另外或可替代地包含一或多个实现参数,至少在一些情况下,这可导致用以指示存储器存取请求的位数的进一步增加。举例来说,存储器存取请求可包含优先级参数和/或高速缓存器旁路参数,所述优先级参数指示存储器存取请求的实现优先级。在一些实施例中,包含在读存储器存取请求中的高速缓存器旁路参数可指示是否应将从较低存储器层级中检索到的目标数据块的个例存储在较低(例如,高速缓存器)存储器层级中。另外或替代地,包含在写入存储器存取请求中的高速缓存器旁路参数可指示是否还应将待存储在较高存储器层级中的目标数据块的个例存储在较低(例如,高速缓存器)存储器层级中。
在一些实施例中,处理子系统可包含在经由存储器总线输出到存储器子系统之前存储存储器存取请求的请求(例如,命令)队列。换句话说,至少在此类实施例中,处理器侧存储器控制器可产生存储器存取请求并将所述存储器存取请求存储在请求队列中。接着可从请求队列中检索存储器存取请求,并经由处理器侧总线接口将其输出到存储器总线。为了有助于在存储器存取请求中包含上下文参数和/或实现参数,在一些实施例中,请求队列中的条目位宽度可扩展以适应每个存储器存取请求增加的位数。
此外,为了有助于在存储器存取请求中包含上下文参数和/或实现参数,可调整计算系统中的存储器接口以适应每个存储器存取请求的位数的增加。特定来说,在一些实施例中,可调整存储器接口使用的通信协议以分配可各自用以指示对应上下文参数的值的一或多个上下文参数字段,例如除了一或多个存取参数字段之外,每个存取参数字段可用以指示对应存取参数的值。另外或替代地,可调整通信协议以分配一或多个实现参数字段,其可各自用以指示对应实现参数的值。
此外,如上所述,由存储器接口提供的通信带宽通常具有固定的上限,例如,由存储器总线中实施的导线的数目和/或在耦合到存储器总线的总线接口中实施的引脚的数目控管。为了有助于在存储器存取请求中包含上下文参数和/或实现参数,在一些实施例中,可调整通信协议以增加在其期间传达(例如,发射和/或接收)存储器存取请求的时钟循环的数目。举例来说,处理子系统可在第一时钟循环期间输出存储器存取请求的存取参数字段,且在第二(例如,不同的、先前或后续)时钟循环期间输出存储器存取请求的上下文参数字段。然而,至少在一些情况下,增加在其间传达存储器存取请求的时钟循环的数目可能会延迟存储器子系统的响应,并且因此影响计算系统的操作效率。
因此,为了有助于在存储器存取请求中包含上下文参数和/或实现参数,在一些实施例中,可另外地或替代地调整存储器接口以增加在处理子系统与存储器子系统之间提供的通信带宽。在一些实施例中,可通过增加并行数据路径的数目来增加通信带宽,所述并行数据路径各自包含一对总线接口引脚和在存储器接口中实施的耦合在所述对总线接口引脚之间的存储器总线导线。换句话说,至少在此类实施例中,可调整存储器接口以增加包含在存储器总线中的导线的数目且增加在耦合到存储器总线的每个总线接口中的引脚的数目。
在一些实施例中,通过增加数据路径的数目,可增加每个时钟循环传达的位数,从而可增加由存储器接口提供的通信带宽。实际上,利用增加的通信带宽,在一些实施例中,可实施和/或操作计算系统以经由存储器接口中的不同数据路径(例如,总线接口引脚和存储器总线导线组)并行地传达不同的参数字段。举例来说,存储器接口可包含第一数据路径以及第二数据路径,所述第一数据路径包含第一处理器侧总线接口引脚、第一存储器侧总线接口引脚以及耦合在其间的第一存储器总线导线,所述第二数据路径包含第二处理器侧总线接口引脚、第二存储器侧总线接口引脚和耦合在其间的第二存储器总线导线。在一些实施例中,可实施和/或操作计算系统以经由第一数据路径传达存取参数字段,同时经由第二数据路径传达上下文参数字段。
换句话说,至少在此类实施例中,可实施和/或操作计算系统以在与存取参数字段中指示的存取参数相同的时钟循环期间(例如,而非在不同的(例如,连续的)时钟循环期间)传达在上下文参数字段中指示的上下文参数。实际上,在一些实施例中,增加由存储器接口提供的通信带宽可有助于减少在其间传达存储器存取请求的时钟循环的数目,且因此至少在一些情况下,可有助于提高计算系统的操作效率。然而,至少在一些情况下,增加通信带宽可能会例如由于导致其物理占地面积、其组件计数和/或用以实施计算系统的制造步骤的数目的增加而影响(例如,增加)计算系统的实施关联成本。
为了有助于减少上下文信息的包含对操作效率和/或实施关联成本的影响,在一些实施例中,处理子系统可在将一或多个上下文参数发射(例如,输出或供应)到存储器子系统之前对其值进行哈希。举例来说,处理器侧存储器控制器可对一或多个上下文参数的值执行哈希运算(例如,函数)以确定具有固定位长度的经哈希上下文参数。在此类实施例中,可调整存储器接口的通信协议以分配一或多个经哈希上下文参数字段,每个经哈希上下文参数字段可用以指示对应的经哈希上下文参数的值。
另外,在一些实施例中,经哈希上下文参数的固定位深度可小于经哈希以产生经哈希上下文参数的一或多个上下文参数的组合位深度。换句话说,在一些实施例中,在将一或多个上下文参数发射到存储器子系统之前对其进行哈希可有助于减少经由存储器接口传达的位的总数,且因此,上下文参数的包含对计算系统的操作效率和实施关联成本有影响。特定来说,减少用以指示存储器存取请求的位的总数可使得能够在存储器接口中实施更少的数据路径,这至少在一些情况下可例如通过减少其存储器接口的物理占据面积和/或组件计数而有助于减少计算系统的实施关联成本。另外或替代地,减少用以指示存储器存取请求的位的总数可使存储器存取请求能够使用更少的时钟循环进行传达,这至少在一些情况下可例如通过减少存储器子系统响应存储器存取请求之前的延迟来有助于提高计算系统的操作效率。
在一些实施例中,当使用经哈希上下文参数接收上下文信息时,例如替代显式地重新确定用以产生经哈希上下文参数值的上下文参数的原始值,存储器子系统可使用经哈希上下文参数值来跟踪数据存取的上下文。换句话说,至少在此类实施例中,存储器侧存储器控制器可确定与不同的经哈希上下文参数值相关联的数据块和/或存储器地址对应于不同的事务上下文。举例来说,存储器侧存储器控制器可组织其历史数据存取信息表,使得不同区段各自与不同的经哈希上下文参数值相关联。
然而,在一些实施例中,对一或多个上下文参数的值进行哈希以产生具有较低位深度的经哈希上下文参数可能会导致一定量的精度损失。举例来说,在一些情况下,对识别第一应用程序指令的第一应用程序指令上下文参数和识别与第一应用程序指令不同的第二应用程序指令的第二应用程序指令上下文参数执行哈希运算仍然可能导致相同的经哈希上下文参数值。因此,至少在此类情况下,由存储器控制器执行的哈希运算可能导致存储器侧存储器控制器不当地识别存储器存取请求的上下文。
换句话说,在一些实施例中,处理器侧存储器控制器使用的哈希函数可在所得的预测准确度与用以指示存储器存取请求的位总数之间进行取舍。实际上,在一些实施例中,处理器侧存储器控制器可例如选择性地利用不同的哈希函数,这导致不同的输出位深度,且因此在预测准确度与每个存储器存取请求的位数之间进行不同的取舍。为了有助于对包含在存储器存取请求中的经哈希上下文参数的恰当解译,至少在此类实施例中,处理器侧存储器控制器可例如经由在存储器存取请求的额外上下文参数字段中指示的哈希函数上下文参数来指示用以产生经哈希上下文参数的哈希函数。
此外,为了有助于提高操作灵活性,在一些实施例中,可调整存储器接口的通信协议以启用待在不同存储器存取请求中指示的不同类型的上下文参数。举例来说,第一存储器存取请求和第二存储器存取请求两者皆可包含上下文参数字段。然而,第一存储器存取请求中的上下文参数字段可用以指示应用程序指令上下文参数的值,而第二存储器存取请求中的上下文参数字段用以指示处理器上下文参数的值。为了有助于对包含在不同存储器存取请求中的上下文参数的恰当解译,至少在此类实施例中,处理器侧存储器控制器可例如经由在存储器存取请求的额外上下文参数字段中指示的上下文类型上下文参数来指示在存储器存取请求的上下文字段中指示的上下文参数的类型。
以此方式,如将在下文更详细地描述,可根据本公开实施和/或操作计算系统,以有助于在其处理子系统与其存储器子系统之间传达上下文信息。如将在下文更详细地描述,在一些实施例中,将上下文信息传递到存储器子系统可使存储器子系统能够至少部分地基于上下文信息来预测后续(例如即将到来的)数据存取模式,且相应地控制存储器子系统中的数据存储,例如使得将预期由后续数据存取模式定为目标的数据块存储在较低存储器层级中和/或将不预期由后续数据存取模式定为目标的数据块逐出到较高存储器层级。换句话说,至少在一些情况下,以此方式实施和/或操作计算系统可有助于改进由其存储器子系统提供的数据检索延时,且因此提高计算系统的操作效率。
为了帮助说明,图1中展示包含处理子系统12(例如,系统)和存储器子系统14(例如,系统)的计算系统10(例如设备)的实例。应了解,所描绘的实例仅意在说明而非限制。确切地说,计算系统10可另外或替代地包含其它计算子系统。举例来说,计算系统10可另外包含联网子系统、射频子系统、用户输入子系统和/或显示子系统。
此外,在一些实施例中,计算系统10可在单个电子装置中实施,如台式计算机、工作站计算机、笔记本计算机、服务器、移动电话、虚拟现实头戴装置等等。在其它实施例中,计算系统10可分布于多个电子装置之间。举例来说,处理子系统12和存储器子系统14可在主机装置中实施,而其它计算子系统,例如用户输入子系统和/或显示子系统,可在客户端(例如远程)装置中实施。实际上,在一些实施例中,计算子系统可分布于多个电子装置之间。举例来说,处理子系统12的第一部分和/或存储器子系统14的第一部分可在主机装置中实施,而处理子系统12的第二部分和/或存储器子系统14的第二部分在客户端装置中实施。
在任何情况下,在计算系统10的操作期间,处理子系统12通常执行各种操作,例如以通过在处理器中执行指令以对输入数据执行对应数据处理操作来确定输出数据。因此,如在所描绘的实例中,处理子系统12可包含处理电路系统16。在一些实施例中,处理电路系统16可包含在一或多个中央处理单元(CPU)、一或多个图形处理单元(GPU)、一或多个处理器核心或其任何组合中。
另外,如在所描绘的实例中,处理电路系统16可包含一或多个寄存器22。在一些实施例中,寄存器22可提供一或多个可直接由处理电路系统16存取的存储位置。寄存器22的存储容量通常受到限制。由此,处理子系统12可经由一或多个通信总线20通信地耦合到提供额外数据存储容量的存储器子系统14。在一些实施例中,通信总线20可包含一或多个缆线、一或多个导线、一或多个导电迹线、一或多个通信网络,或其任何组合。
换句话说,处理子系统12与存储器子系统14可经由一或多个通信总线20进行通信。举例来说,处理子系统12可传达(例如,输出或传输)写入存储器存取请求以及用于存储在存储器子系统14中的数据和/或将先前存储在存储器子系统14中的数据定为目标的读取存储器存取请求。另外或替代地,存储器子系统14可例如响应于读取存储器存取请求而传达(例如,输出或传回)先前存储在其中的目标数据以使得能够由在处理子系统12中实施的处理电路系统16进行处理和/或执行。
为了能够经由通信总线20通信,如在所描绘的实例中,处理子系统12和存储器子系统14可各自包含一或多个总线接口32。另外,为提供数据存储,如在所描绘的实例中,存储器子系统14可包含一或多个存储器装置18(例如芯片或集成电路)。如将在下文更详细地描述,在一些实施例中,存储器装置18可包含组织成一或多个存储器阵列28的存储器单元(例如电路系统),且因此可包含一或多个有形的非暂时性计算机可读媒体。举例来说,存储器子系统14可包含经由存储器(例如,外部)总线20以通信方式耦合到处理子系统12的一或多个存储器装置18。
然而,如上文所描述,不同计算子系统之间的通信一般比计算子系统内的数据通信慢。换句话说,处理子系统12内(例如,内部)的数据通信可更快速并且因此有助于相较于处理子系统12和存储器子系统14之间的数据通信减小数据检索延时,所述减小例如归因于与其它计算子系统共享通信总线20、处理子系统12和存储器子系统14之间的定时差和/或处理子系统12和存储器子系统14之间的通信距离。因此,为了有助于提高操作效率,可在处理子系统12的处理电路系统16和存储器子系统14的存储器装置18之间实施一或多个高速缓存器和/或一或多个缓冲器。如将在下文更详细地描述,在一些实施例中,高速缓存器可提供组织成一或多个高速缓存行30的存储方位,例如以存储也存储于一或多个存储器装置18中所实施的存储器阵列28中的数据的个例(例如,副本)。
如在所描绘的实例中,计算系统10可包含在处理子系统12中实施的一或多个处理器侧高速缓存器24。在一些实施例中,处理器侧高速缓存器24中的一或多个可与处理电路系统16集成在一起。举例来说,处理器侧高速缓存器24可包含一级(L1)高速缓存器、二级(L2)高速缓存器和/或三级(L3)高速缓存器。为了有助于减少数据检索延时,在一些实施例中,与在存储器子系统14中实施的存储器装置18相比,可使用不同的存储器类型来实施处理器侧高速缓存器24。举例来说,处理器侧高速缓存器24可由静态随机存取存储器(SRAM)实施,而存储器装置18由动态随机存取存储器(DRAM)和/或非易失性存储器实施。
另外,如在所描绘的实例中,计算系统10可包含在存储器子系统14中实施的一或多个存储器侧高速缓存器26。尽管在存储器子系统14中实施,但存储器侧高速缓存器26与存储器装置18中实施的存储器阵列28相比仍可提供更快数据通信,举例来说,这是由于存储器侧高速缓存器26利用静态随机存取存储器(SRAM)实施,而存储器装置18利用动态随机存取存储器(DRAM)实施。另外或替代地,存储器侧高速缓存器26和在一或多个存储器装置18中实施的存储器阵列28可利用相同的存储器类型(例如DRAM)。实际上,在一些实施例中,存储器侧高速缓存器26中的一或多个可在存储器装置18中实施。
此外,如在所描绘的实例中,计算系统10可包含一或多个预取缓冲器31。举例来说,处理子系统12可包含与其处理器侧高速缓存器24相异(例如,分开)的处理器侧预取缓冲器31A。另外或替代地,存储器子系统14可包含与其存储器侧高速缓存器26相异(例如,分开)的存储器侧预取缓冲器31B。在一些实施例中,可实施和/或操作预取缓冲器31,以存储从较高存储器层级预取的(例如,在由处理电路系统16实际定为目标之前提取的)数据(例如在将预取的数据传送到高速缓存器之前)。在其它实施例中,可将预取的数据直接存储到高速缓存器中,且因此,预取缓冲器31可为任选的。
在任何情况下,为了有助于控制其中的数据存储,计算系统10可包含例如经由指令总线20A通信地耦合到高速缓存器、预取缓冲器31和/或存储器装置18的一或多个存储器控制器34。在一些实施例中,存储器控制器34可包含经实施和/或操作以控制一或多个缓存存储器层级中的数据存储的高速缓存控制器35。另外或替代地,存储器控制器34可包含经实施和/或操作以控制一或多个预取缓冲存储器级中的数据存储的预取控制器37。
此外,在一些实施例中,存储器控制器34可另外或替代地包含主存储器控制器41,例如DRAM存储器控制器34,其经实施和/或操作以控制一或多个存储器阵列存储器层级中的数据存储。因此,在一些实施例中,可在存储器子系统14中实施一或多个存储器控制器34,例如,作为存储器侧存储器控制器34。另外或替代地,可在处理子系统12中实施一或多个存储器控制器34,例如作为处理器侧存储器控制器34。
为了帮助说明,图2中展示包含处理器侧存储器控制器34A的处理子系统12A的实例。如上所述,在一些实施例中,处理子系统12的处理电路系统16可使用一或多个处理器核心36实施。举例来说,处理子系统12A中的处理电路系统16A可至少包含第一处理器核心36A和第N处理器核心36N。然而,应了解,所描绘的实例仅意在说明而非限制。举例来说,在其它实施例中,处理子系统12可包含单个处理器核心36或两个以上(例如,四个、八个或十六个)处理器核心36。
此外,如上文所描述,在一些实施例中,处理子系统12可包含提供其处理电路系统16可直接存取的存储方位的一或多个寄存器22。举例来说,处理子系统12A可至少包含第一寄存器22A,其可提供第一处理器核心36A可直接存取的存储方位,以及第N寄存器22N,其可提供第N处理器核心36N可直接存取的存储方位。为了有助于增加存储器总线20B的处理器侧提供的存储,如上文所描述,处理子系统12可包含一或多个处理器侧高速缓存器24和/或处理器侧预取缓冲器31A。在一些实施例中,可使用易失性存储器(例如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM))实施处理器侧高速缓存器24和/或处理器侧预取缓冲器31A。
此外,在一些实施例中,处理器侧高速缓存器24可经组织以实施一或多个阶层式存储器(例如,高速缓存器)层级。举例来说,处理器侧高速缓存器24A可包含专用处理器侧高速缓存器38和共享处理器侧高速缓存器40,所述专用处理器侧高速缓存器可用以实施一或多个较低(例如,最低)存储器层级,所述共享处理器侧高速缓存器可用以实施较高(例如,中间)存储器层级。在一些实施例中,由共享处理器侧高速缓存器40提供的数据存储可至少由第一处理器核36A和第N处理器核36N共享。举例来说,共享处理器侧高速缓存器40可包含一或多个三级(L3)处理器侧高速缓存器24A。
另一方面,在一些实施例中,由专用处理器侧高速缓存器38提供的数据存储可专用于对应的处理器核心36。举例来说,第一的一或多个专用处理器侧高速缓存器38A可包含专用于第一处理器核心36A的一级(L1)处理器侧高速缓存器24A和专用于第一处理器核心36A的二级(L2)处理器侧高速缓存器24A。另外或替代地,第N一或多个专用处理器侧高速缓存器38N可包含专用于第N处理器核心36N的一级(L1)处理器侧高速缓存器24A和专用于第N处理器核心36N的二级(L2)处理器侧高速缓存器24A。
在任何情况下,处理器侧存储器控制器34A通常可控制处理子系统12A中的数据存储。举例来说,处理器侧存储器控制器34A可控制数据存储,使得处理电路系统16A定为目标的数据传回到其寄存器22中的一或多个。换句话说,在一些实施例中,处理器侧存储器控制器34A控制处理器侧高速缓存器24A、处理器侧预取缓冲器31A和/或在处理子系统12A中实施的寄存器22中的数据存储。因此,如在所描绘的实例中,处理器侧存储器控制器34A可经由一或多个处理器侧内部总线20C通信地耦合到处理电路系统16A、处理器侧高速缓存器24A和/或处理器侧预取缓冲器31A,例如以使处理器侧存储器控制器34A能够确定由处理电路系统16A定为目标的数据和/或输出发指令给(例如,致使)处理子系统12A调整其中的数据存储的控制(例如,命令)信号。
实际上,为了有助于提高数据存取速度且因此提高计算系统10的操作效率,在一些实施例中,处理器侧存储器控制器34A可预测性地控制处理子系统12A中的数据存储,例如至少部分地基于处理器侧历史数据存取信息39A。换句话说,在此类实施例中,处理器侧存储器控制器34A可至少部分地基于预期将由处理电路系统16A定为目标(例如,请求)的数据和/或预期将由处理电路系统16A将数据定为目标(例如,请求)的时间来控制处理子系统12A中的数据存储。举例来说,处理器侧存储器控制器34A可控制数据存储,使得预期将在即将来临的控制范围(例如,一或多个时钟循环)期间由处理电路系统16A作为目标的数据块的个例(例如,副本)在处理电路系统16A实际上将数据块29定为目标(例如,请求)之前存储在处理器侧高速缓存器24中的一或多个中。
然而,如上所述,在处理子系统12中实施的存储容量通常小于在对应存储器子系统14中实施的存储容量。实际上,在一些实施例中,处理器侧高速缓存器24的总存储容量可小于在存储器子系统14中实施的存储器阵列28的存储容量。由此,为了有助于节省(例如,优化)处理器侧高速缓存器24的存储容量,在一些实施例中,处理器侧存储器控制器34A可控制处理子系统12A中的数据存储,使得未预期在即将到来的控制范围期间由处理电路系统16A作为目标的数据块29的个例不存储在处理器侧高速缓存器24中。
然而,由存储器控制器34预测的数据存取模式通常不尽如意。换句话说,至少在一些情况下,由处理器侧存储器控制器34A确定的预测数据存取模式可至少部分地与处理电路系统16A的实际数据存取模式不同。因此,至少在此类情况下,由处理电路系统16A定为目标的数据可能当前并未存储在处理子系统12A中,且因此导致处理器侧未命中。
如上所述,当导致处理器侧未命中时,处理子系统12A可从耦合到存储器总线20B的存储器子系统14请求传回目标数据。举例来说,处理器侧存储器控制器34A可输出读取存储器存取,所述读取存储器存取请求传回由处理电路系统16A定为目标的数据。另外或替代地,处理器侧存储器控制器34A可将写入存储器存取请求连同请求将数据存储在存储器子系统14中的数据一起输出。在一些实施例中,处理器侧存储器控制器34A可将存储器存取请求存储在请求(例如,命令)队列42中,随后经由存储器总线20B供应到存储器子系统14。
此外,在一些实施例中,处理器侧存储器控制器34A可控制处理子系统12A中的数据存储,使得经由存储器总线20B接收(例如,传回)的数据存储在处理电路系统16A的寄存器22和/或处理器侧高速缓存器24A中。举例来说,处理子系统12A可将经由存储器总线20B传回的数据块的副本存储在一或多个处理器侧高速缓存器24A中,以在处理电路系统16A再次将数据块作为目标的情况下有助于减少数据检索延时。另外或替代地,例如,当由应用程序(例如,程序或线程)的存储器存取指令(例如,非临时性加载指令)设定了高速缓存器旁路参数(例如,高或“1位”)时,处理子系统12A可将经由存储器总线20B传回的数据块的副本直接存储到处理电路系统16A的一或多个寄存器22中。
因此,如在所描绘的实例中,处理器侧总线接口32A可耦合在存储器总线20B与一或多个处理器侧内部总线20C之间。另外,如在所描绘的实例中,处理器侧总线接口32A可包含一或多个引脚44。如将在下文更详细地描述,在一些实施例中,总线接口32的每个引脚44可耦合到存储器总线20B中的对应导线。通过以此方式实施处理子系统12,处理器侧存储器控制器34A可经操作以例如在对应计算系统10的操作期间预测性地控制处理子系统12中的数据存储。
为了帮助进一步说明,在图3中描述了用于操作处理子系统12的过程46的实例。通常,过程46包含确定由处理电路系统定为目标的数据块(处理框48),确定目标数据块是否导致处理器侧未命中(决策框50),以及当目标数据块未导致处理器侧未命中时,将目标数据块从处理器侧高速缓存器输出到处理电路系统(处理框52)。另外,当目标数据块导致处理器侧未命中时,过程46包含从存储器子系统请求目标数据块(处理框56),确定目标数据块是否已从存储器子系统传回(决策框58),且在从存储器子系统传回目标数据块之后,将目标数据块供应到处理电路系统(处理框60)。此外,过程46包含更新历史数据存取信息(处理框61)。
尽管以表示特定实施例的特定次序描述,但应注意,过程46可以任何合适的次序执行。另外,过程46的实施例可省略处理框和/或包含额外处理框。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程46。
因此,在一些实施例中,计算系统10的处理子系统12中的处理器侧(例如,高速缓存器和/或预取)存储器控制器34A可确定被处理子系统12的处理电路系统16定为目标的数据块(处理框48)。在一些实施例中,处理电路系统16可使用对应(例如,目标)虚拟存储器地址识别目标数据块。至少部分地基于目标虚拟存储器地址,在一些实施例中,处理器侧存储器控制器34A可确定指示计算系统10中的目标数据的存储方位的对应(例如,目标)物理存储器地址。
另外,处理器侧存储器控制器34A可确定目标数据是否引起处理器侧未命中(决策框50)。在一些实施例中,存储器控制器34可至少部分地基于与数据块相关联的虚拟存储器地址和/或物理存储器地址,确定数据块是否存储于高速缓存器中。举例来说,至少部分地基于其虚拟存储器地址和物理存储器地址,存储器控制器34可确定预期将与目标数据块相关联的标记参数(例如,元数据)的目标值。
通过基于目标标记参数值搜索处理器侧高速缓存器24中包含的有效高速缓存行30,处理器侧(例如,高速缓存)存储器控制器34A可确定目标数据块是否导致处理器侧未命中。举例来说,当目标标记参数值与处理器侧高速缓存器24中的任何高速缓存行30中包含的标记参数值不匹配时,处理器侧存储器控制器34A可确定目标数据块导致处理器侧未命中。另一方面,当目标标记参数值包含在处理器侧高速缓存器24的一或多个高速缓存行30中时,处理器侧存储器控制器34A可确定目标数据块导致处理器侧高速缓存命中,且因此不会导致处理器侧高速缓存未命中。
当目标数据块不导致处理器侧未命中时,处理器侧存储器控制器34A可发指令给处理器侧高速缓存器24以将目标数据块供应到处理电路系统16,例如以有助于提高数据检索速度且因此提高计算系统10的操作效率(处理框52)。在一些实施例中,处理器侧高速缓存器24可输出具有与预期将与目标数据块相关联的目标标记参数值匹配的标记参数值的高速缓存行30。在一些实施例中,当存储在较高存储器(例如,高速缓存)层级(例如,共享处理器侧高速缓存器40)中时,目标数据块可在到达处理电路系统16之前传递经过处理子系统12中的一或多个较低存储器层级(例如,专用处理器侧高速缓存38)。
另一方面,当导致处理器侧未命中时,处理器侧存储器控制器34A可向计算系统10的存储器子系统14请求目标数据块(处理框56)。举例来说,处理器侧存储器控制器34A可通过输出包含供存储器子系统14用以检索目标数据块的一或多个存取参数的存储器存取请求,请求传回目标数据块。如上文所描述,在一些实施例中,处理器侧存储器控制器34A产生的存储器存取请求可在经由存储器总线20B输出到存储器子系统14之前存储于请求(例如,命令)队列42中。
另外,如将在下文更详细地描述,在一些实施例中,可在存储器存取请求中包含的对应存取参数字段中指示存取参数的值。举例来说,可在第一存取参数字段中指示由处理电路系统16用以识别目标数据块的虚拟存储器地址,可在第二存取参数字段中指示识别目标数据块在存储器子系统14中的存储位置的物理存储器地址,可在第三存取参数字段中指示目标数据块的大小(例如,位深度),可在第四存取参数字段中指示写入存取指示符(例如,位),或其任何组合。因此,如将在下文更详细地描述,存储器子系统14可至少部分地基于在存储器存取请求中指示的一或多个存取参数的值来识别并传回目标数据块。
一旦从存储器子系统14传回目标数据块,处理器侧存储器控制器34A就可发指令给处理子系统12以将目标数据块供应到处理电路系统16(处理框60)。在一些实施例中,处理器侧存储器控制器34A可发指令给处理子系统12以将从存储器子系统14传回的目标数据块的副本存储在处理电路系统16的一或多个寄存器22中。另外,在一些实施例中,处理器侧存储器控制器34A可发指令给处理子系统12以将目标数据块的副本存储在一或多个处理器侧高速缓存器24中,例如以有助于在处理电路系统16随后再次将数据块定为目标的情况下减少数据检索延时。
以此方式,计算系统10中的处理子系统12可经操作以将目标数据提供到其处理电路系统16,例如以使处理电路系统16能够执行和/或处理目标数据。如上所述,为了有助于提高计算系统的操作效率,在一些实施例中,处理器侧存储器控制器34A可预测性地控制处理子系统12中的数据存储。举例来说,处理器侧存储器控制器34A可预测性地控制什么数据存储在处理子系统12中和/或数据存储在处理子系统12中的存储器(例如,高速缓存和/或预取缓冲器)层级。
如将在下文更详细地描述,在一些实施例中,存储器控制器34可至少部分地基于指示一或多个先前数据存取模式的历史数据存取信息来预测性地控制数据存储。因此,为了有助于在后续控制范围(例如,一或多个时钟循环)期间预测性控制数据存储,处理器侧存储器控制器34A可更新其处理器侧历史数据存取信息39A以指示与存取(例如,定为目标和/或请求)目标数据相关联的信息(处理框61)。在一些实施例中,可使用表结构来指示(例如,存储和/或读取)历史数据存取信息39。
为了帮助说明,图4中展示历史数据存取信息表69的实例,其可由(例如,处理器侧或存储器侧)存储器控制器34监视和/或利用。如在所描绘的实例中,历史数据存取信息表69可包含一或多个条目(例如,行)71。另外,如在所描绘的实例中,每个条目71可包含块识别符字段(例如,列)73、写入时间字段75、上次存取时间字段77和存取计数字段79。然而,应了解,所描绘的实例仅意在说明而不是限制。举例来说,在其它实施例中,历史数据存取信息表69可另外或替代地包含其它类型的数据、字段和/或信息。
在任何情况下,关于所描述的实例,历史数据存取信息表69中的每个条目71可在其块识别符字段73中识别相关联的数据块。举例来说,第一条目71A中的第一块识别符参数可指示第一条目与第一数据块相关联。类似地,第二条目71B中的第二块识别符参数可指示第二条目71B与第二数据块相关联,且第J条目71J中的第J块识别符参数可指示第J条目71J与第J数据相关联块。在一些实施例中,条目71可经由其虚拟存储器地址、其物理存储器地址和/或标记参数值(例如,基于对应数据块的虚拟存储器地址和/或物理存储器地址确定)来识别对应的数据块。
另外,如在所描绘的实例中,历史数据存取信息表69中的每个条目71可使对应的数据块与写入时间字段75中指示的写入时间参数、上次存取时间字段77中指示的上次存取时间参数以及在存取计数字段79中指示的存取计数参数相关联。举例来说,第一条目71A可使第一数据块与指示第一数据块何时最初存储在存储器子系统14中的写入时间参数、指示最近存取(例如,定为目标或请求)第一数据块的时间的上次存取时间参数以及指示第一数据块已被存取的次数的存取计数参数相关联。另外,第二条目71A可使第二数据块与指示第二数据块何时最初存储在存储器子系统14中的写入时间参数参数、指示最近存取第二数据块的时间的上次存取时间参数以及指示第二数据块已被存取的次数的存取计数参数相关联。此外,第J条目71J可使第J数据块与指示第J数据块何时最初存储在存储器子系统14中的写入时间参数、指示最近存取第J数据块的时间的上次存取时间参数以及指示已存取第J数据块的次数的存取计数参数相关联。
此外,如在所描绘的实例中,历史数据存取信息表69中的条目71可组织成多个表区段81。在一些实施例中,历史数据存取信息表69中的不同表区段81可专用于不同的事务上下文。举例来说,第一表区段81A可专用于指示和与第一事务上下文相关联的数据块相对应的条目71,而第I表区段81I可专用于指示和与第I(例如,第二或不同)事务上下文相关联的数据块相对应的条目71。然而,又应了解,所描绘的实例仅意在说明而非限制。举例来说,在其它实施例中,历史数据存取信息表69中的条目71可组织成两个以上表区段81。
如将在下文更详细地描述,在一些实施例中,可经由上下文信息(例如,一或多个参数)指示与数据块相关联的事务上下文,所述上下文信息识别与数据块相关联(例如,产生数据块和/或将数据块定为目标)的计算系统的一或多个方面和/或(例如,物理和/或虚拟)对应存储器地址。举例来说,与数据块相关联的上下文信息可包含处理器上下文参数,其识别产生所述数据块、当前将所述数据块定为目标和/或先前将所述数据块定为目标的计算系统10中的一或多个处理器。另外,在一些实施例中,与数据块相关联的事务上下文信息可包含处理器核心上下文参数,其识别产生所述数据块、当前将所述数据块定为目标和/或先前将所述数据块定为目标的计算系统10中的一或多个处理器核心36。此外,在一些实施例中,与数据块相关联的事务上下文信息可包含识别一或多个应用程序的应用程序(例如,程序或线程)上下文参数,所述应用程序当在计算系统10中运行时,产生所述数据块、当前将所述数据块定为目标和/或先前将所述数据块定为目标。此外,在一些实施例中,与数据块相关联的事务上下文信息可包含识别一或多个应用程序指令的应用程序指令(例如,程序计数器)上下文参数,所述应用程序指令当由计算系统10执行时产生所述数据块、当前将所述数据块定为目标和/或先前将所述数据块定为目标。
在一些实施例中,不同上下文参数集可对应于不同的事务上下文。举例来说,与第一表区段81A相关联的第一事务上下文可对应于第一上下文参数集,所述第一上下文参数集包含处理器上下文参数和应用程序上下文参数,所述处理器上下文参数识别与第一数据块和第二数据块相关联的处理器,所述应用程序上下文参数识别与第一数据块和第二数据块相关联的应用程序。另一方面,与第I表区段81I相关联的第I事务上下文可对应于包含处理器上下文参数的第I组上下文参数,所述处理器上下文参数识别与第J数据块相关联的处理器。
换句话说,在一些实施例中,(例如,处理器侧和/或存储器侧)存储器控制器34可通过比较与数据存取相关联的一或多个上下文参数的值与相关联于一或多个候选事务上下文的对应上下文参数值来确定与数据存取相关联的事务上下文。在一些实施例中,与数据存取和候选事务上下文相关联的每个上下文参数的值可明确地(例如,具体地或直接地)识别计算系统10的对应方面。因此,在此类实施例中,存储器控制器34可识别与上下文参数值相关联的候选事务上下文,每个上下文参数值匹配与数据存取相关联的对应上下文参数值,作为数据存取的事务上下文。
在其它实施例中,可对与数据存取相关联的一或多个上下文参数的值进行哈希以产生经哈希上下文参数。换句话说,在此类实施例中,与数据存取和候选事务上下文相关联的经哈希上下文参数的值可间接地识别计算系统10的一或多个方面。由此,在一些实施例中,存储器控制器34可识别与不同的事务上下文相对应的不同经哈希上下文参数值。换句话说,在此类实施例中,存储器控制器34可将与经哈希上下文参数值相关联的候选事务上下文识别为数据存取的事务上下文,所述经哈希上下文参数值匹配与数据存取相关联的经哈希上下文参数值。
至少部分地基于数据存取的事务上下文,例如响应于接收到存储器存取请求和/或满足存储器存取请求,存储器控制器34可相应地更新其历史数据存取信息39。特定来说,在一些实施例中,存储器控制器34可例如以相对于表区段81中的其它条目71按时间顺序将与由数据存取定为目标的数据块相对应的条目71添加到与数据存取的事务上下文相关联的表区段81,以有助于识别与事务上下文相关联的先前数据存取模式。另外或替代地,存储器控制器34可更新上次存取时间参数和/或递增与由数据存取定为目标的数据块相关联的条目71中指示的存取计数参数。以此方式,历史数据存取信息39可至少部分地基于事务上下文来组织,这至少在一些情况下可有助于提高预测准确性,且因此有助于预测数据存储控制技术的有效性。
为了帮助说明,在图5中描述用于预测性地控制数据存储的过程62的实例。通常,过程62包含确定历史数据存取信息(处理框64),并基于历史数据存取信息来预测后续数据存取模式(处理框66)。另外,过程62包含基于预测的数据存取模式来控制存储器层级中的数据存储(处理框68)。
尽管以表示特定实施例的特定次序描述,但应注意,过程62可以任何合适的次序执行。另外,过程62的实施例可省略处理框和/或包含额外处理框。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程62。
因此,在一些实施例中,(例如,处理器侧和/或存储器侧)存储器控制器34可确定历史数据存取信息(处理框64)。举例来说,处理器侧(例如,高速缓存和/或预取)存储器控制器34A可确定与按事务上下文组织的一或多个先前数据(例如,存储器)存取相关联的处理器侧历史数据存取信息39A。另外或替代地,如将在下文更详细地描述,存储器侧(例如,主)存储器控制器34可确定与按事务上下文组织的一或多个先前数据(例如,存储器)存取相关联的存储器侧历史数据存取信息39。
此外,在一些实施例中,历史数据存取信息39可存储在有形的、非暂时性计算机可读媒体中,例如实施于或耦合到(例如,处理器侧和/或存储器侧)存储器控制器34的静态随机存取存储器(SRAM)。因此,在此类实施例中,存储器控制器34可从有形的、非暂时性计算机可读媒体检索历史数据存取信息39。此外,如上所述,在一些实施例中,历史数据存取信息39可经由历史数据存取信息表69按事务上下文来组织,所述历史数据存取信息表指示与不同表区段81中的不同事务上下文相对应的条目71。
至少部分地基于历史数据存取信息39,存储器控制器34可预测预期在即将到来的控制范围(例如,时间周期或一或多个时钟循环)期间发生的数据存取模式(处理框66))。如上所述,在一些实施例中,历史数据存取信息39可指示先前存取(例如,定为目标或请求)过什么数据、先前存取数据的时间和/或先前存取数据的次序。换句话说,至少在此类实施例中,存储器控制器34可至少部分地基于历史数据存取信息39来确定一或多个先前数据存取模式。由于数据存取模式通常在某种程度上是重复的(例如,循环的),因此在一些实施例中,存储器控制器34可至少部分地基于指示先前数据存取模式的历史数据存取信息39来预测后续数据存取模式。
具体地说,在一些实施例中,存储器控制器34可预测在即将来临的控制范围内将以什么数据为目标、何时在即将来临的控制范围内将以所述数据为目标,以及/或在即将到来的控制范围内以什么次序将数据定为目标。举例来说,当历史数据存取信息39指示第一数据块和第二数据块由先前数据存取模式定为目标时,存储器控制器34可预测第一数据块和第二数据块将再次由后续数据存取模式定为目标。另外地或替代地,当历史数据存取信息39指示在先前数据存取模式期间在第一数据块之后将第二数据块定为目标时,存储器控制器34可预测第二数据块在后续数据存取模式期间将在第一数据块之后再次被定为目标。
换句话说,在一些实施例中,存储器控制器34可相对于当前或先前定为目标的数据块预测下一目标数据块。为了帮助说明,继续以上实例,在当前将第一数据块定为目标时,存储器控制器34可预测第二数据块将是下一目标数据块。实际上,在一些实施例中,历史数据存取信息39可使存储器控制器34能够预测未按先前数据存取模式存取的数据块将是下一目标数据块。举例来说,当历史数据存取信息39指示第一数据块的第一(例如,物理或虚拟)存储器地址与第二数据块的第二存储器地址分开一定步长时,存储器控制器34可预测与距当前定为目标的数据块的存储器地址所述步长的存储器地址相关联的数据块将为下一目标数据块。
另外或替代地,在一些实施例中,存储器控制器34可更明确地预测一或多个数据块的下一目标时间。举例来说,至少部分地基于与第一数据块相关联的上次存取时间参数和与第二数据块相关联的上次存取时间参数之间的差,存储器控制器34可确定第一数据块与第二数据块的先前目标化之间的时间差,且因此预测第二数据块的下一目标时间将在第一数据块的另一目标化之后的时间差出现。另外或替代地,存储器控制器34可至少部分地通过将上次存取时间参数和与数据块相关联的写入时间参数之间的差除以与所述数据块相关联的存取计数参数来确定数据块的连续存取之间的平均周期。由此,存储器控制器34可预测数据块的下一目标时间将在数据块的先前目标化之后的平均时间周期出现。
然而,至少在一些情况下,仅基于时间顺序的数据存取信息来预测后续数据存取模式可能会导致对后续数据存取模式的预测不当。为了帮助说明,继续以上实例,在计算系统10中运行的应用程序可导致第一数据块被定为目标且第二数据块随后被定为目标。然而,在第一数据块与第二数据块的目标化之间,独立于特定应用程序的系统中断可能导致第J(例如,不同的)数据块被定为目标。
因此,至少在一些情况下,在不考虑事务上下文的情况下预测后续数据存取模式可能导致存储器控制器34预测在第一数据块的另一目标化之后,第J数据块将是下一目标数据块。然而,由于独立于特定应用程序,系统中断可能不会总是在以第一数据块为目标与以第二数据块为目标之间发生。换句话说,当在即将来临的控制范围内未发生系统中断时,对与第一数据块、第二数据块和第J数据块相关联的历史数据存取信息39进行同等加权可能会导致后续数据存取模式预测不当,例如使得第二数据块被预测为在其实际目标时间之后的某个时间被定为目标。至少在一些情况下,例如由于计算系统10在实际设定目标之前没有足够注意在较低存储器(例如,高速缓存)层级中存储数据块的个例且因此替代地从较高存储器层级检索数据块,确定比数据的实际下一目标时间晚得多的预测下一目标时间可能会降低计算系统的操作效率。
另外,如上所述,与较高存储器层级相比,较低存储器层级通常可用较小的存储容量来实施。因此,如将在下文更详细地描述,在一些实施例中,较低存储器层级可逐出在即将到来的控制范围期间不预期被定为目标的数据块,以腾出空间用于存储在即将到来的控制范围内预期将被定为目标的另一数据块。然而,基于比数据块的实际目标时间早得多出现的预测下一目标时间逐出另一数据块可能会导致另一数据块逐出过早,这至少在一些情况下可能会降低计算系统的操作效率,例如由于另一数据块实际上是在所述数据块之前被定为目标,且因此,从较高存储器层级而非较低存储器层级检索所述另一数据块。
为了有助于提高预测准确度,在一些实施例中,存储器控制器34可通过鉴于对应事务上下文分析历史数据存取信息39来预测后续数据存取模式。特定来说,在一些实施例中,存储器控制器34可确定多个数据存取模式,例如,每个数据存取模式与不同的事务上下文(例如,计算系统10的一或多个方面)相关联。作为说明性实例,存储器控制器34可至少部分地基于在第一表区段81A的一或多个条目71中指示的历史数据存取信息39来确定与第一事务上下文相关联的第一(例如,应用程序)数据存取模式。另外,存储器控制器34可至少部分地基于在第I表区段81I的一或多个条目71中指示的历史数据存取信息39来确定与第I事务上下文相关联的第I(例如,系统中断)数据存取模式。
以此方式,存储器控制器34可至少部分地基于与事务上下文相关联的先前数据存取模式来预测事务上下文的后续数据存取模式。换句话说,在一些实施例中,在与特定事务上下文相对应的后续数据模式的预测中考虑上下文信息可使存储器控制器34能够自适应地(例如动态地)调整与不同数据块相关联的历史数据存取信息39对其预测的影响。至少在一些实施例中,这可例如通过使存储器控制器34能够滤除原本可能影响其预测的噪声(例如,以及与特定方面事务上下文无关的数据块相关联的历史数据存取信息39)来有助于提高预测准确度。作为说明性实例,在预测与第一事务上下文相关联的后续数据存取模式时,以及与第j数据块相关联的历史数据存取信息39相比,存储器控制器34可更重地加权与第一数据块和第二数据块相关联的历史数据存取信息39,例如使得与第J数据块相关联的历史数据存取信息39被从预测中排除。
为了有助于提高计算系统的操作效率,如上所述,存储器控制器34可至少部分地基于预测的数据存取模式来预测性地控制一或多个存储器层级中的数据存储(处理框68)。特定来说,在一些实施例中,存储器控制器34可至少部分地基于数据块的预测存取次序和/或数据块的下一预测目标时间来控制将什么数据块存储在存储器层级中。举例来说,存储器控制器34可将在即将到来的控制范围期间预期将被定为目标的数据块的副本(例如,个例)从较高存储器等级预取到较低(例如,最低或L1)存储器等级(在实际上将所述数据块定为目标之前)(处理框78)。另外或替代地,例如当预期在即将到来的控制范围期间不预期将数据块定为目标时,存储器控制器34可抢先(例如,预测性地)发指令给较低存储器层级以逐出数据块以腾出空间由于在即将到来的控制范围内预期将被定为目标的另一数据块(处理框80)。以此方式,(例如,处理器侧和/或存储器侧)存储器控制器34可操作以至少部分地基于与一或多个先前数据存取相关联的上下文信息而预测性地控制计算系统10(例如,处理子系统12和/或存储器子系统14)中的一或多个存储器层级中的数据存储。
如上所述,在一些实施例中,上下文信息在计算系统10的处理子系统12中可能是可用的,例如由于处理子系统12中的处理电路系统16产生数据块和/或将数据块定为目标。换句话说,在此类实施例中,上下文信息可直接可用于处理器侧存储器控制器34A,从而使得处理器侧存储器控制器34A能够至少部分地基于上下文信息而预测性地控制处理子系统12的一或多个存储器(例如,高速缓存)层级中的数据存储。然而,在一些实施例中,上下文信息可能不可直接用于计算系统10中的存储器子系统14。因此,至少在此类实施例中,为了有助于提高存储器子系统14中的预测准确度,处理子系统12可在经由存储器总线20B输出到存储器子系统14的存储器存取请求中指示上下文信息。
为了帮助说明,图6中描述用于操作处理子系统12以请求存取存储器子系统14的过程82的实例。通常,过程82包含确定将用以存取数据的存取参数(处理框84)和确定数据的事务上下文(处理框86)。另外,过程82包含输出指示存取参数和上下文的存储器存取请求(处理框88)。
尽管以表示特定实施例的特定次序描述,但应注意,过程82可以任何合适的次序执行。另外,过程82的实施例可省略处理框和/或包含额外处理框。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程82。
因此,在一些实施例中,处理器侧存储器控制器34A可确定将用以存取数据的存取参数(处理框84)。在一些实施例中,确定存取参数可包含确定与数据相关联的存储器地址(处理框90)。举例来说,当数据块待存储在存储器子系统14中时,写入存取参数可包含由处理电路系统16用以识别数据块的虚拟存储器地址和/或存储器子系统14中存储数据块的物理存储器地址。另外或替代地,当要从存储器子系统14检索数据块时,读取存取参数可包含由处理电路系统16用以识别数据块的虚拟存储器地址和/或存储器子系统14中预期将存储数据块的物理存储器地址。在一些实施例中,处理器侧存储器控制器34A还可至少部分地基于数据的虚拟存储器地址和/或数据的物理存储器地址来确定与数据相关联的标记参数值。
另外,在一些实施例中,确定存取参数可包含确定数据的大小(例如,位深度)(处理框92)。举例来说,当数据块将被存储在存储器子系统14中时,写入存取参数可指示数据块的大小。另外或替代地,当要从存储器子系统14检索数据块时,读取存取参数可指示数据块的预期大小。
此外,在一些实施例中,确定存取参数可包含确定存取类型(处理框94)。举例来说,当要将数据块存储在存储器子系统14中时,写入存取参数可包含写入启用指示符(例如,位)。另外或替代地,当要从存储器子系统14检索数据块时,读取存取参数可包含读取启用指示符(例如,位)。
为了有助于提高存储器子系统14中的预测准确度,处理器侧存储器控制器34A可确定与待存储在存储器子系统14中和/或从所述存储器子系统检索的数据相关联的事务上下文(处理框86)。如上所述,在一些实施例中,可经由上下文信息(例如,一或多个参数)来指示与数据存取相关联的事务上下文,所述上下文信息识别与(例如,所产生和/或定为目标的)数据块和/或由数据存取定为目标的(例如,物理和/或虚拟)存储器地址相关联的计算系统的一或多个方面。举例来说,上下文信息可包含处理器上下文参数、处理器核心上下文参数、应用程序(例如,程序或线程)上下文参数和/或应用程序指令(例如,程序计数器)上下文参数。
因此,在一些实施例中,确定数据存取的事务上下文可包含确定处理器上下文参数,所述处理器上下文参数识别计算系统10中的一或多个处理器(处理框70)。举例来说,处理器侧存储器控制器34A可确定处理器上下文参数的值以识别计算系统10中产生数据块的处理器。另外或替代地,处理器侧存储器控制器34A可确定处理器上下文参数的值以识别当前将数据块定为目标和/或先前将数据块定为目标的处理器。
在一些实施例中,确定数据存取的事务上下文可另外或替代地包含确定处理器核心上下文参数,所述处理器核心上下文参数识别计算系统10中的一或多个处理器核心36(处理框72)。举例来说,处理器侧存储器控制器34A可确定处理器核心上下文参数的值,以识别计算系统10中产生数据块的处理器核心36。另外或替代地,处理器侧存储器控制器34A可确定处理器核心上下文参数的值以识别当前将数据块定为目标和/或先前将数据块定为目标的处理器核心36。
此外,在一些实施例中,确定数据存取的事务上下文可另外或替代地包含确定识别计算系统10中的一或多个应用程序的应用程序(例如,程序或线程)上下文参数(处理框74)。举例来说,处理器侧存储器控制器34A可确定应用上下文参数的值以识别应用程序,所述应用程序在计算系统10中运行时导致数据块的产生。另外或替代地,处理器侧存储器控制器34A可确定应用上下文参数的值以识别应用程序,所述应用程序在计算系统10中运行时导致数据块的当前目标化和/或先前目标化。
此外,在一些实施例中,确定数据存取的事务上下文可另外或替代地包含确定应用程序指令(例如,程序计数器)上下文参数,所述应用程序指令上下文参数识别计算系统10中的一或多个应用程序指令(处理框76)。举例来说,处理器侧存储器控制器34A可确定应用程序指令上下文参数的值以识别应用程序指令,所述应用程序指令在由计算系统10执行时导致数据块的产生。另外或替代地,处理器侧存储器控制器34A可确定应用程序指令上下文参数的值以识别应用程序指令,所述应用程序指令在由计算系统10执行时导致数据块的当前目标化和/或先前目标化。然而,如上所述,至少在一些实施例中,在存储器存取请求中包含一或多个上下文参数可增加用以指示存储器存取请求的位的总数。
为了有助于适应增加的位数,如将在下文更详细地描述,在一些实施例中,可调整在计算系统10中实施的存储器接口,例如以增加由存储器接口提供的通信带宽和/或增加发射存储器存取请求的时钟循环数。然而,至少在一些情况下,例如由于增加了时钟循环的数目而延迟了其存储器子系统14的响应和/或由于增加了通信带宽而增加了组件计数和/或存储器接口的物理占用空间,因此调整存储器接口可能会影响计算系统10的实施关联成本和/或操作效率。
为了有助于减少包含一或多个上下文参数对与实施关联成本和/或计算系统操作效率的影响,在一些实施例中,处理器侧存储器控制器34A可在将上下文参数中的一或多个输出到存储器总线20B之前对其值对进行哈希。换句话说,在一些实施例中,处理器侧存储器控制器34A可通过哈希函数传递一或多个上下文参数的值,以确定具有固定位长度(例如,位深度)的经哈希上下文参数。实际上,在一些实施例中,例如由于哈希运算无关于其输入而输出具有相同位长度的经哈希上下文参数,因此对上下文参数的值执行哈希运算(例如,函数)可使不同类型和/或不同数目的上下文参数能够被包含在不同的存储器存取请求中。。
然而,至少在一些情况下,与直接(例如,明确地)指示上下文参数相比,例如由于无意地对上下文参数值的不同集合进行哈希以得到相同的经哈希上下文参数值,经哈希上下文参数可能导致一定程度的精度损失。作为说明性实例,处理器侧存储器控制器34A可通过哈希函数传递待包含在第一存储器存取请求中的第一应用程序指令(例如,程序计数器)上下文参数的值,以确定第一经哈希上下文参数。另外,处理器侧存储器控制器34A可通过相同的哈希函数传递待包含在第二存储器存取请求中的第二应用程序指令上下文参数的值,以确定第二经哈希上下文参数。然而,至少在一些情况下,即使当第一应用程序指令上下文参数与第二应用程序指令上下文参数的值识别不同的应用程序指令时,哈希函数也可能导致第一经哈希上下文参数值与第二经哈希上下文参数值相同。换句话说,至少在此类情况下,对上下文参数进行哈希可能影响存储器子系统14恰当地解译在存储器存取请求中指示的上下文信息的能力,且因此影响在存储器存取请求中指示上下文信息的精度。
在一些实施例中,精度的损失可至少部分地取决于所应用的哈希函数。换句话说,在一些实施例中,所得的精度损失可在不同的哈希函数之间变化。实际上,为了有助于减小哈希对存储器子系统14恰当地解译上下文信息的能力的影响,在一些实施例中,处理器侧存储器控制器34A可选择性地实施不同的哈希函数。举例来说,处理器侧存储器控制器34A可使用第一哈希函数来对待包含在第一存储器存取请求中的第一一或多个上下文参数进行哈希,且使用第二(例如,不同的)哈希函数来对待包含在第二存储器存取中的第二一或多个上下文参数进行哈希。
因此,为了有助于对包含在存储器存取请求中的经哈希上下文参数的恰当解译,在一些实施例中,处理器侧存储器控制器34A还可识别用以在存储器存取请求中产生经哈希上下文参数值的哈希函数。换句话说,在一些实施例中,存储器存取请求可包含一或多个上下文参数,其指示存储器存取请求中所包含的另一上下文参数的上下文。举例来说,存储器存取请求可包含哈希函数上下文参数,其识别用以产生包含在存储器存取请求中的经哈希上下文参数的一或多个哈希函数。
另外或替代地,为了有助于改变包含在不同的存储器存取请求中的上下文参数的类型,存储器存取请求可包含上下文类型上下文参数,其识别包含在存储器存取请求中的一或多个其它上下文参数的上下文参数类型。举例来说,第一存储器存取请求可包含第一上下文类型上下文参数,其指示第一存储器存取请求包含处理器上下文参数。另一方面,第二存储器存取请求可包含第二上下文类型上下文参数,其指示第二存储器存取请求包含应用程序指令上下文参数。
至少部分地基于上下文参数和存取参数,处理器侧存储器控制器34A可发指令给处理子系统12以经由存储器总线20B将存储器存取请求输出到存储器子系统14(处理框88)。为了有助于对各种参数的恰当解译,在一些实施例中,例如根据在处理子系统12与存储器子系统14之间通信耦合的存储器接口所使用的通信协议,可将存储器存取请求组织成一或多个参数字段。换句话说,至少在此类实施例中,存储器存取请求可包含一或多个参数字段,每个参数字段可用以指示相应参数的值。
为了帮助说明,图7中展示存储器存取请求98的实例。如所描绘,存储器存取请求98包含多个参数字段100。在一些实施例中,例如当存储器存取请求98是写入(例如,存储)存储器存取请求98时,存储器存取请求98可另外包含数据块102。然而,应了解,所描绘的实例仅意在说明而不是限制。举例来说,当存储器存取请求98是读取(例如,加载)存储器存取请求98时,存储器存取请求98可不包含数据块102。
在任何情况下,如在所描绘的实例中,存储器存取请求98可包含一或多个存取参数字段104,其可各自用以指示对应的存取参数的值。特定来说,在一些实施例中,存储器存取请求98可包含第一(例如,存取类型)存取参数字段104,其可用以指示所请求的存储器存取的类型(例如,读取或写入)。举例来说,通过指示正在请求写入(例如,存储)存取,存取类型存取参数可将存储器存取请求98识别为写入存储器存取请求98。另一方面,通过指示正在请求读取(例如,加载)存取,存取类型存取参数将存储器存取请求98识别为读取存储器存取请求98。
另外,在一些实施例中,存储器存取请求98可包含第二(例如,存储器地址)存取参数字段104,其可用以指示正在请求存取的(例如,物理和/或虚拟)存储器地址。举例来说,在写入存储器存取请求中,地址存取参数可用以指示由处理电路系统16用来识别数据块102的虚拟存储器地址和/或存储器子系统14中将存储数据块102的物理存储器地址。另一方面,在读取存储器存取请求中,地址存取参数可用以指示由处理电路系统用来识别请求检索的数据块102的虚拟存储器地址和/或存储器子系统14中当前存储请求检索的数据块102的物理存储器地址。
此外,在一些实施例中,存储器存取请求98可包含第三(例如,大小)存取参数字段104,其用以指示例如被请求存储在存储器子系统14中和/或被请求传回到处理子系统12的相关联数据的大小(例如,位位深度)。换句话说,在一些实施例中,写入存储器存取请求中的大小存取参数可用以指示待存储于存储器子系统14中的数据块102的大小。另一方面,读取存储器存取请求中的大小存取参数可用以指示请求从存储器子系统14检索的数据块102的大小。
如在所描绘的实例中,存储器存取请求98可另外包含一或多个上下文参数字段106,其可各自用以指示对应上下文参数的值。特定来说,在一些实施例中,存储器存取请求98可包含第一(例如,处理器)上下文参数字段106,其可用以专门地识别计算系统10中的一或多个处理器。举例来说,在写入存储器存取请求中,处理器上下文参数可用以识别计算系统10中产生数据块102的处理器。另一方面,在读取存储器存取请求中,读取存储器存取请求中的处理器上下文参数可用以识别计算系统10中当前以数据块102为目标的处理器。
另外,在一些实施例中,存储器存取请求98可包含第二(例如,处理器核心)上下文参数字段106,其可用以专门地识别计算系统10中的一或多个处理器核心36。举例来说,在写入存储器存取请求中,处理器核心上下文参数可用以识别计算系统10中产生数据块102的处理器核36。另一方面,在读取存储器存取请求中,读取存储器存取请求中的处理器核心上下文参数可用以识别计算系统10中当前以数据块102为目标的处理器核心36。
此外,在一些实施例中,存储器存取请求98可包含第三(例如,应用程序)上下文参数字段106,其可用以专门地识别计算系统10中的一或多个应用程序(例如,程序)。举例来说,在写入存储器存取请求中,应用上下文参数可用以识别计算系统10中导致数据块102的产生的应用程序。另一方面,在读取存储器存取请求中,应用上下文参数可用以识别计算系统10中导致当前以数据块102为目标的应用程序。
此外,在一些实施例中,存储器存取请求98可包含第四(例如,应用程序指令)上下文参数字段106,其可用以识别在计算系统10中运行的应用程序中的特定应用程序指令(例如,程序计数器)。举例来说,在写入存储器存取请求中,应用程序指令上下文参数可用以识别在由计算系统10执行时导致数据块102的产生的应用程序指令。另一方面,在读取存储器存取中在请求时,应用程序指令上下文参数可用以识别由计算系统10执行的导致当前以数据块102为目标的应用程序指令。
在一些实施例中,存储器存取请求98可包含不同于存取参数字段104和上下文参数字段106的一或多个参数字段100。举例来说,参数字段100可包含一或多个实现参数字段108,每个实现参数字段可用以指示对应实现参数的值。在一些实施例中,实现参数可包含指示存储器存取请求98的实施优先级的优先级参数和/或高速缓存旁路参数。在一些实施例中,包含在读取存储器存取请求98中的高速缓存旁路参数可指示是否应将从较低存储器层级中检索的目标数据块102的个例存储在较低(例如,高速缓存)存储器层级中。另外或替代地,包含在写入存储器存取请求98中的高速缓存旁路参数可指示是否应将存储在较高存储器层级中的目标数据块102的个例也存储在较低(例如,高速缓存)存储器层级中。因此,至少在此类实施例中,存储器存取请求98可包含可用以指示高速缓存旁路参数的值的第一(例如,高速缓存旁路)实现参数字段108和/或可用以指示优先级参数的值的第二(例如,优先级)实现参数字段108。以此方式,可例如经由在存储器存取请求98的对应上下文参数字段106中指示的一或多个上下文参数来格式化存储器存取请求98(例如,由处理器侧存储器控制器34A产生)以指示相关联的上下文信息。
返回到图6的过程82,在一些实施例中,在产生存储器存取请求98之后,处理器侧存储器控制器34可将存储器存取请求98存储在请求(例如,命令)队列42中。换句话说,至少在此类实施例中,一或多个存储器存取请求98可在经由在计算系统10中实施的存储器接口从处理子系统12发射到存储器子系统14之前存储在请求队列42的条目中。此外,如上所述,在一些实施例中,存储器接口可包含在处理子系统12中实施的处理器侧总线接口32A、在存储器子系统14中实施的存储器侧总线接口32、耦合在处理器侧总线接口32A的引脚44与存储器侧总线接口32的引脚44之间的存储器总线20B。换句话说,至少在此类实施例中,可从请求队列42检索存储器存取请求,且经由处理器侧总线接口32A将其从处理子系统12输出到存储器总线20B。
此外,如上所述,至少在一些实施例中,在存储器存取请求98中包含一或多个上下文参数可导致用以指示存储器存取请求98的位总数增加。为了有助于适应位总数的增加,如将在下文更详细地描述,在一些实施例中,可调整用以将存储器存取请求98从处理子系统12传达到存储器子系统14的存储器接口。举例来说,为了有助于降低增加位总数对计算系统操作效率的影响,可增加(例如,扩展)由存储器接口提供的通信带宽。为了有助于增加通信带宽,在一些实施例中,可增加由存储器接口提供的数据路径的数目。举例来说,可通过实施额外的数据路径来增加通信带宽,所述额外的数据路径包含存储器总线20B中的额外导线、耦合至额外导线的额外处理器侧总线接口引脚44以及耦合到额外导线的额外存储器侧总线接口引脚44。
实际上,在一些实施例中,在存储器接口中实施的一或多个数据路径可专用于传达特定上下文参数字段106。因此,在一些实施例中,将存储器存取请求98输出到存储器子系统14可包含经由在存储器接口中实施的额外数据路径来输出上下文参数的值(处理框110)。至少在一些情况下,例如通过使上下文参数能够与存取参数和/或另一个上下文参数并行(例如,并行地)传达,经由额外数据路径传达上下文参数可有助于降低上下文参数的包含对计算系统操作效率的影响。
另外或替代地,为了有助于减小增加位的总数对实施关联成本的影响,可调整存储器接口的通信协议。举例来说,为了有助于适应用以指示存储器存取请求98的位数的增加,可调整通信协议以增加在其上(例如,在其间)传达(例如,发射和/或接收)存储器存取请求98的时钟循环的数目。换句话说,在一些实施例中,可调整存储器接口的通信协议以添加一或多个时钟循环,以有助于适应每个存储器存取请求98的位数的增加。
实际上,在一些实施例中,由存储器接口的通信协议提供的一或多个时钟循环可专用于传达特定上下文参数字段106。因此,在一些实施例中,将存储器存取请求98输出到存储器子系统14可包含经由由存储器接口提供的额外时钟循环输出上下文参数的值(处理框112)。至少在一些情况下,例如通过减少和/或避免扩展由存储器接口提供的通信带宽,经由额外时钟循环传达上下文参数可有助于减少上下文参数的包含对与实施关联成本的影响。除了存储器接口之外,在一些实施例中,可调整请求队列42的实施以有助于适应包含一或多个上下文参数字段106的存储器存取请求98和/或每个存储器存取请求98的位数的增加。
为了帮助说明,图8中展示请求队列42A的实例,所述请求队列可用以在处理子系统12中存储一或多个存储器存取请求98。如在所描绘的实例中,请求队列42A可包含多个条目113,每个条目可用以对存储器存取请求98进行排队(例如存储)。举例来说,第一条目113A可用以对第一存储器存取请求98A进行排队,且第Q条目113Q可用以对第Q存储器存取请求98Q进行排队。
然而,应了解,所描绘的实例仅意在说明而非限制。举例来说,在一些实施例中,请求队列42可包含单个条目113或两个以上的条目113。另外或替代地,例如当请求队列42包含比尚未从处理子系统12输出到存储器子系统14的存储器存取请求98的数目多的条目113时,请求队列42中的一或多个条目113可保持未填充(例如,空值或无效)。
在任何情况下,如在所描绘的实例中,在请求队列42中排队的每个存储器存取请求98可包含一或多个存取参数字段104和一或多个上下文参数字段。举例来说,第一存储器存取请求98A可包含第一一或多个存取参数字段104A和第一一或多个上下文参数字段106A。另一方面,第Q存储器存取请求98Q可包含第Q一或多个存取参数字段104Q和第Q一或多个上下文参数字段106Q。
为了有助于提高操作灵活性,在一些实施例中,包含在不同存储器存取请求98中的上下文参数字段106的数目和/或上下文参数的类型可变化。举例来说,第一存储器存取请求98A可包含单个上下文参数字段106,而第Q存储器存取请求98Q可包含四个上下文参数字段106。另外地或替代地,可在第一存储器存取请求98A的上下文参数字段106中指示处理器核心上下文参数,而第Q存储器存取请求98Q中的相同上下文参数字段106用以指示应用程序指令上下文参数。
然而,如上所述,在存储器存取请求98中包含一或多个上下文参数字段106可能导致用以指示存储器存取请求98的位数的增加。换句话说,为使得请求队列42A能够将包含一或多个上下文参数字段106的存储器存取请求98排队,在一些实施例中,例如与经实施以使仅包含存取参数字段104的存储器存取请求98排队的另一请求队列42相比,请求队列42A中的条目113的位宽度可增加(例如,扩展)。在存储器存取请求98被排队之后,在一些实施例中,处理子系统12可从其请求队列42检索(例如,读取)对应条目113,且经由存储器接口输出存储器存取请求98。如上所述,耦合到存储器接口的存储器子系统14接着可至少部分地基于包含在存储器存取请求98中的一或多个存取参数字段104的值来向处理子系统12提供存储器(例如,数据)存取。
为了帮助说明,图9中展示包含存储器侧存储器控制器34B的存储器子系统14A的实例。如在所描绘的实例中,存储器子系统14A可包含存储器侧高速缓存器26A、存储器侧预取缓冲器31和存储器装置18A。然而,应了解,所描绘的实例仅意在说明而非限制。举例来说,在其它实施例中,存储器侧高速缓存器26和/或存储器侧预取缓冲器31可被排除(例如,任选),且因此不包含在存储器子系统14中。
在任何情况下,如上所述,在一些实施例中,存储器子系统14可包含一或多个非易失性存储器装置18和/或一或多个易失性存储器装置18。通常,非易失性存储器装置18可使用非易失性存储器提供数据存储。举例来说,非易失性存储器装置18可包含闪存(例如,NAND)存储器装置、相变存储器(例如3D XPointTM)装置、铁电随机存取存储器(FeRAM)装置、固态驱动器(SSD)、硬盘驱动器(HDD)或其任何组合。另一方面,易失性存储器装置18通常可使用易失性存储器来提供数据存储。举例来说,易失性存储器装置18可包含动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置或两者。
此外,在一些实施例中,多个存储器装置18可在如双列直插式存储器模块(DIMM)或单列直插式存储器模块(SIMM)的存储器模块上实施。举例来说,存储器模块可包含印刷电路板(PCB)和安置在印刷电路板的平坦或平面(例如前或后)表面上的多个存储器装置18。另外,存储器装置18可经由在印刷电路板上形成的导电迹线耦合到沿着印刷电路板的(例如底部)边缘形成的外部引脚。
应了解,存储器装置18中的一或多个可使用其它封装技术实施。举例来说,存储器装置18可耦合到(例如,硅)内插件以实施2.5D配置。另外或替代地,存储器装置18可堆叠以实施3D配置。此外,在一些实施例中,存储器装置18可使用有机封装技术实施。换句话说,本公开中所描述的技术可实施为封装上解决方案。
在任何情况下,如上所述,不同的存储器类型通常提供变化的取舍,这些取舍影响存储器子系统14且因此影响在其中实施存储器子系统14的计算系统10的操作效率和/或实施关联成本,例如组件计数、制造步骤和/或物理占据面积。举例来说,与易失性存储器相比,非易失性存储器通常提供更高(例如,更大)的数据存储密度。另外,与易失性存储器单元相比,非易失性存储器单元即使在未通电状态下也可维持数据的存储。另一方面,与非易失性存储器相比,易失性存储器通常提供更快的数据通信(例如,读取和/或写入)速度。实际上,与动态随机存取存储器(DRAM)相比,静态随机存取存储器(SRAM)通常提供更快的数据通信速度。
因此,为了有助于提高数据存取速度,在一些实施例中,例如与实施最高(例如,最大和最慢)存储器层级的非易失性存储器装置18相比,易失性存储器装置18可用以实施较低(例如,较小和较快)存储器层级。如上所述,在一些实施例中,一或多个存储器装置18中的存储器单元可组织成存储器阵列28以实施对应存储器层级。举例来说,存储器子系统14A中的非易失性存储器单元可组织成与存储器子系统14A中的存储装置(例如,最高和/或非易失性)存储器层级相对应的存储装置存储器阵列114。
另外,在一些实施例中,易失性存储器单元可组织成一或多个存储器通道存储器阵列116,例如,各自对应于不同的存储器(例如,DRAM)通道。作为说明性实例,存储器子系统14A中的易失性存储器单元可组织成与第一存储器通道相对应的第一存储器通道存储器阵列116A。另外或替代地,可将存储器子系统14A中的易失性存储器单元组织成与第M存储器通道相对应的第M存储器通道存储器阵列116M。为了有助于预测性地控制存储器子系统14中的数据存储,在一些实施例中,存储器子系统14可将上下文信息例如连同对应数据块102作为数据对象一起存储在存储器阵列28A中。
为了帮助说明,图10中展示可在一或多个存储器装置18中实施的存储器阵列28A的实例。如在所描绘的实例中,存储器阵列28A可耦合到行选择(例如,解码器)电路系统118和列选择(例如,解码器)电路系统120。另外,如在所描绘的实例中,存储器阵列28A可包含存储器单元122,其经由在第一(例如,水平)方向上形成的字线124耦合到行选择电路系统118,且经由在第二(例如,垂直)方向上形成的位线128耦合到放大器电路系统126。
在一些实施例中,每一存储器单元122可包含开关组件,如金属氧化物半导体场效应晶体管(MOSFET),以及存储组件,如电容器。举例来说,存储器单元122可经实施以使得其MOSFET耦合于位线128与其存储电容器之间,且其MOSFET的栅极耦合到字线124。因而,在一些实施例中,每一存储器单元122可用于存储一个位的数据。
举例来说,存储器单元122可在存储于存储器单元122中的电荷产生大于阈值电压的电压时指示1位。另一方面,存储器单元122可在存储于存储器单元122中的电荷产生小于阈值电压的电压时指示0位。在其它实施例中,存储器单元122可经实施存储多个数据位。举例来说,四层级单元(QLC)NAND存储器中的存储器单元122可经实施以存储两个数据位。
在任何情况下,如在所描绘的实例中,可将存储器单元122组织成可各自由对应行地址(例如,物理存储器地址)识别的一或多个存储器单元行130以及可各自由对应列地址(例如,物理存储器地址)识别的一或多个存储器单元列132。在一些实施例中,存储器单元行130可包含耦合到(例如,一个)字线124的存储器单元122中的每一个。举例来说,第一存储器单元行130A可包含耦合到第一字线124A的存储器单元122中的每一个,且第L存储器单元行130L可包含耦合到第L字线124L的存储器单元122中的每一个。
如在所描绘的实例中,以此方式组织存储器阵列28A可使存储器单元122能够被分组到各自适合于存储数据对象134的存储位置中。举例来说,第一数据对象134A可存储在包含第一存储器单元行130A和第一存储器单元列132A中的存储器单元122的第一存储位置中,第二数据对象134B可存储在包含第L存储器单元行130L和第二存储器单元列132B中的存储器单元122的第二存储位置中,且第O数据对象134O可存储在包含第一存储器单元行130A和第K存储器单元列132K中的存储器单元122的第O存储位置。在一些实施例中,数据对象134可包含数据块102以及相关联的元数据,例如,其识别与数据块102相关联的上下文信息。
为了帮助说明,图11中展示数据对象134的实例。如在所描绘的实例中,数据对象134可包含在数据块102的前面(例如,在其之前)串接的元数据136。然而,应了解,所描绘的实例仅意在说明而不是限制。举例来说,在其它实施例中,元数据136可在数据块102的后面串接(例如,附接到所述数据块)或以其它方式与数据块102相关联(例如,多路复用和/或交插)。
在任何情况下,数据块102通常包含例如相关数据,例如,其预期将一起进行处理(例如,分析和/或解译)。为了有助于识别数据块102,如在所描绘的实例中,元数据136可包含标记参数138。在一些实施例中,标记参数138可指示数据块102和/或数据对象134在地址空间中的存储位置,且因此可用以识别数据块102和/或数据对象134。换句话说,在一些实施例中,标记参数138可指示数据块102的虚拟存储器地址、数据块102的物理存储器地址,或基于数据块102的虚拟存储器地址和物理存储器地址确定的值。
另外,如在所描绘的实例中,元数据136可包含有效性参数140,其指示数据块102的有效性。在一些实施例中,有效性参数140可包含有效性位,其指示数据块在被设定(例如,“1”位或高)时是有效的,而在未设定(例如,“0”位或低)时是无效的。另外或替代地,有效性参数140可有助于检测数据块102是否有效和/或在无效时校正数据块102。举例来说,有效性参数140可包含一或多个错误检查码,例如反转位、毒物位、奇偶校验位、错误检测码(EDC)、错误校正码(ECC)、博斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,BCH)码、消息认证码(MAC)、循环冗余校验(CRC)码或其任何组合。
此外,如在所描绘的实例中,元数据136可包含脏参数141,所述脏参数指示数据块102是否已相对于存储在较高存储器层级中的版本进行了修改。在一些实施例中,脏参数141可包含脏位,所述脏位在设定(例如,“1”位或高)时指示数据块已经被修改,且在未设定(例如,“0”位或低)时指示数据块未被修改。换句话说,至少在此类实施例中,当相对于存储在较高存储器层级中的数据块102的版本最初修改数据块102时,可切换脏参数141。
此外,如在所描绘的实例中,元数据136可包含一或多个上下文参数142,其识别指示与数据块102的事务上下文的上下文信息。举例来说,元数据136可包含处理器上下文参数142,其识别产生数据块102的处理器、当前将数据块102定为目标的处理器、先前将数据块102定为目标的处理器和/或预期随后将数据块102定为目标的处理器。另外,在一些实施例中,元数据136可包含处理器核心上下文参数142,所述处理器核心上下文参数识别产生数据块102的处理器核心36、当前将数据块102定为目标的处理器核心36、先前将数据块102定为目标的处理器核心36,以及/或预期随后将数据块102定为目标的处理器核心36。
此外,在一些实施例中,元数据136可包含应用程序上下文参数142,其识别导致产生数据块102的应用程序(例如,程序或线程)、导致当前将数据块定为目标的应用程序、导致先前将数据块定为目标的应用程序,以及/或预期将导致随后将数据块定为目标的应用程序。此外,在一些实施例中,元数据136可包含应用程序指令上下文参数142,所述应用程序指令上下文参数识别导致产生数据块102的应用程序指令(例如,程序计数器)、导致当前将数据块102定为目标的应用程序指令、导致先前将数据块102定为目标的应用程序指令,以及/或预期导致随后将数据块102定为目标应用程序指令。以此方式,数据块102可与指示数据块102的事务上下文的元数据136相关联,作为数据对象134。
返回到图10的存储器阵列28A,如上所述,可将数据(例如,数据对象134)存储在存储器阵列28A中的存储位置处和/或从所述存储位置检索。另外,如上所述,行选择电路系统118可经由对应的字线124连接到存储器阵列28A的行。因此,为了能够读取和/或写入存储器单元122,行选择电路系统118可激活存储器单元122,例如通过经由对应字线124输出激活(例如,逻辑高)信号,所述信号致使存储器单元122的切换组件将存储器单元122的存储组件电耦合到对应位线128。
此外,如上所述,列选择电路系统120可耦合到存储器阵列28A的列。换句话说,列选择电路系统120可经由第一位线128A和第一放大器电路系统126A耦合到第一存储器单元列132A,经由第二位线128B和第二放大器电路系统126B耦合到第二存储器单元列132B,且经由第K位线128K和第K放大器电路系统126K耦合到第K存储器单元列132K。在一些实施例中,放大器电路系统126可包含有助于将数据存储(例如,写入)到存储器单元122中的驱动器和/或有助于从存储器单元122中输出(例如,读取)数据的感测放大器。
另外,在一些实施例中,列选择电路系统120可例如通过将列选择信号(例如,逻辑高)输出到对应的放大器电路系统126来选择性地启用从存储器单元列132的读取和/或到所述存储器单元列的写入。换句话说,为了从第一存储器单元列132A读取数据(例如,第一数据对象134A)和/或向第一存储器单元列写入数据,列选择电路系统120可将列选择信号输出到第一放大器电路系统126A。类似地,为了从第二存储器单元列132B读取数据(例如,第二数据对象134B)和/或向第二存储器单元列写入数据,列选择电路系统120可将列选择信号输出到第二放大器电路系统126B。此外,为了从第K存储器单元列132K读取数据(例如,第O数据对象134O)和/或向第K存储器单元列写入数据,列选择电路系统120可将列选择信号输出到第K放大器电路系统126K。以此方式,可组织一或多个存储器装置18中的存储器单元122以在存储器子系统14中实施存储器阵列28。
返回到图9的存储器子系统14A,如上所述,在一些实施例中,除了存储器装置18之外,存储器子系统14A还可包含一或多个存储侧高速缓存器26A。如上所述,可在存储器子系统14中实施存储器侧高速缓存器26,以提供与在存储器子系统14中实施的存储器阵列28相比较低的存储器层级。换句话说,在一些实施例中,与存储器阵列28相比,存储器侧高速缓存器26可经实施以平均地提供更快的数据通信速度。
因此,在一些实施例中,还可使用易失性存储器来实施存储器侧高速缓存器26。举例来说,存储器侧高速缓存器26A可用静态随机存取存储器(SRAM)来实施,而易失性存储器装置18可用动态随机存取存储器(DRAM)来实施。另外或替代地,存储器侧高速缓存器26A和易失性存储器装置18可使用相同的存储器类型(例如,DRAM)来实施。实际上,在一些实施例中,可在易失性存储器装置18中实施一或多个存储器侧高速缓存器26。在任何情况下,如上所述,可实施高速缓存以提供组织成一或多个高速缓存行30的存储位置,以例如存储也存储在存储器阵列28中的数据的个例(例如,副本)。
为了帮助说明,图12中展示高速缓存器144(例如,存储器侧高速缓存器26和/或处理器侧高速缓存器24)的实例。如在所描绘的实例中,高速缓存器144可提供被组织成多个高速缓存行30(即第一高速缓存行30A、第F高速缓存行30F等等)的存储位置。另外,如在所描绘的实例中,可分配包含在高速缓存行30中的存储位置以使得能够存储一或多个数据对象134(例如134A-134N)。举例来说,第一高速缓存行30A可以使得能够存储N个有效数据对象134的线宽来实施。然而,应了解,所描绘的实例仅意在说明而不是限制。举例来说,在其它实施例中,可为高速缓存行30分配线宽度,所述线宽度使得能够存储单个有效数据对象134或两个以上有效数据对象134。
在任何情况下,如上文参考图11所述,数据对象134可包含数据块102和元数据136。举例来说,如上所述,元数据136可包含有效性参数140,其指示数据块102以及因此数据对象134是否有效。另外,如上所述,在一些实施例中,元数据136可包含一或多个上下文参数142,其指示与数据块102相关联的上下文信息。举例来说,上下文参数142可包含处理器上下文参数142、处理器核心上下文参数142、应用程序(例如程序或线程)上下文参数142、应用程序指令(例如,程序计数器)上下文参数142,或其任何组合。
此外,如上所述,在一些实施例中,元数据136可包含标记参数138,其指示数据块102和/或数据对象134在地址空间中的存储位置。举例来说,可至少部分地基于处理电路系统16用来识别数据块102和/或存储或待在存储器阵列28在存储数据块的物理存储器地址的虚拟存储器地址来确定与数据块102相关联的标记参数138。由此,在一些实施例中,标记参数138可用以识别数据块102和/或数据对象134。
实际上,在一些实施例中,存储器子系统14可至少部分地基于预期将与数据块102相关联的标记参数138的目标值来搜索被读取存储器存取请求98定为目标的数据块102。举例来说,存储器子系统14可至少部分地基于读取存储器存取请求98中指示的虚拟存储器地址和/或物理存储器地址而确定预期将与目标数据块102相关联的标记参数138的目标值。至少部分地基于所述目标值,存储器子系统14可通过搜索与当前存储在高速缓存器144中的有效数据块102相关联的标记参数138来确定目标数据块102是否导致高速缓存未命中。
举例来说,当目标标记参数138和与存储在其中的有效数据块102相关联的标记参数138匹配时,存储器子系统14可确定目标数据块102当前存储在高速缓存器144中,且因此导致高速缓存命中。另一方面,当目标标记参数138和与存储在其中的任何有效数据块102相关联的标记参数138不匹配时,存储器子系统14可确定目标数据块102当前未存储在高速缓存器144中,且因此导致高速缓存未命中。因此,平均而言,例如由于增加的存储容量使得能够将更多有效数据对象134存储在其中,由高速缓存器144提供的数据检索延时可随其存储容量而变化。
实际上,为了有助于改进数据检索延时,在一些实施例中,不同的高速缓存器144可用以实施具有变化的存储容量的不同的阶层式存储器(例如,高速缓存)层级。举例来说,可用不同数目的高速缓存行30来实施不同的存储器层级。作为说明性实例,与用以提供较高存储器层级的高速缓存器144相比,可使用较少高速缓存行30来实施用于提供较低存储器层级的高速缓存器144。另外或替代地,可分配在较低存储器层级中实施的高速缓存行30的线宽,以使得与在较高存储器层级中实施的高速缓存行30相比,能够存储较少的有效数据对象134。在任何情况下,以此方式,可实施高速缓存器144(例如,存储器侧高速缓存器26和/或处理器侧高速缓存器24)以提供被组织成一或多个高速缓存行30的存储位置。
实际上,返回到图9的存储器子系统14A,在一些实施例中,存储器侧高速缓存器26A可经阶层式组织。举例来说,存储器侧高速缓存器26A可包含一或多个存储器通道高速缓存器146和共享存储器侧高速缓存器148。在一些实施例中,存储器通道高速缓存器146可专用于对应的存储器通道,而共享存储器侧高速缓存器148可在多个存储器通道之间共享。举例来说,第一一或多个存储通道高速缓存器146A可专用于由第一存储器通道存储器阵列116A实施的第一存储器通道,而第M一或多个存储器通道高速缓存器146M可专用于由第M存储器通道存储器阵列116M实施的第M存储器通道。另一方面,共享存储器侧高速缓存器148可至少由第一存储器通道和第M存储器通道共享。因此,在一些实施例中,共享存储器侧高速缓存器148可经实施以与存储器通道高速缓存器146相比在存储器子系统14A中提供较低(例如,最低)的存储器(例如,高速缓存)层级。
在任何情况下,如上所述,存储器侧存储器控制器34B通常可控制存储器子系统14A中的数据存储。举例来说,存储器侧存储器控制器34B可控制是否将数据存储在存储器侧高速缓存器26、易失性存储器装置18、非易失性存储器装置18或其任何组合中。换句话说,在一些实施例中,存储器侧存储器控制器34B可控制数据是否存储于在存储器侧高速缓存器26中实施的(例如,较低中间)存储器层级、在非易失性存储器装置18中实施的(例如,较高中间)存储器层级、在非易失性存储器装置18中实施的(例如,最高)存储器层级或其任何组合中。因此,如在所描绘的实例中,存储器侧存储器控制器34B可经由一或多个存储器侧内部总线20D通信地耦合到存储器侧高速缓存器26A、存储器侧预取缓冲器31B和/或存储器装置18A,例如以使存储器侧存储器控制器34B能够搜索目标数据和/或输出发指令给(例如,致使)存储器子系统14A以调整其中的数据存储的控制(例如,命令)信号。
另外,如上所述,响应于经由存储器接口接收到存储器存取请求98,存储器子系统14可向处理子系统12提供存储器存取。举例来说,响应于接收到写入存储器存取请求98,存储器侧存储器控制器34B可发指令给存储器子系统14A以将写入存储器存取请求98中指示的数据块102的个例存储在存储器子系统14A的一或多个存储器层级中。另外或替代地,响应于接收到读取存储器存取请求98,存储器侧存储器控制器34B可识别由读取存储器存取请求98定为目标的数据块102,并发指令给存储器子系统14A以经由存储器接口传回目标数据块102。
因此,如在所描绘的实例中,存储器侧总线接口32B可耦合在存储器总线20B与一或多个存储器侧内部总线20D之间。另外,如在所描绘的实例中,存储器侧总线接口32B可包含一或多个引脚44。如将在下文更详细地描述,在一些实施例中,总线接口32的每一引脚44可耦合到存储器总线20B中的对应导线。通过以此方式实施存储器子系统14,存储器侧存储器控制器34B可经操作以至少部分地基于存储器侧历史数据存取信息39B而控制存储器子系统14中的数据存储,例如在对应计算系统10的操作期间预测性地控制。
为了帮助进一步说明,在图13中描述用于操作存储器子系统14的过程150的实例。通常,过程150包含:从处理子系统接收存储器存取请求(处理框152);确定由所述存储器存取请求指示的存取参数和上下文参数(处理框154);以及确定所述存储器存取请求是否是读取存取请求(决策框156)。另外,过程150包含:当存储器存取请求不是读取存取请求时,基于存取参数将数据块存储在存储器子系统中(处理框158),当存储器存取请求是读取存取请求时,基于存取参数将目标数据块输出到处理子系统(处理框160),基于上下文参数更新历史数据存取信息(处理框161),且确定是否已接收到另一存储器存取请求(决策框162)。当尚未接收到另一存储器存取请求时,过程150包含基于上下文参数预测后续数据存取模式(处理框164),且基于预测的数据存取模式来控制存储器子系统中的数据存储(处理框166)。
尽管以表示特定实施例的特定次序描述,但应注意,过程150可以任何合适的次序执行。另外,过程150的实施例可省略处理框和/或包含额外处理框。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程150。
因此,在一些实施例中,在计算系统10的存储器子系统14中实施的存储器侧存储器控制器34B可确定从计算系统10中的处理子系统12输出到存储器子系统14的存储器存取请求98(处理框152)。如上所述,在一些实施例中,处理子系统12可经由存储器总线20B输出存储器存取请求98。另外,如上所述,在一些实施例中,存储器子系统14可包含存储器侧总线接口32B,其耦合在存储器总线20B与一或多个存储器侧内部总线20D之间。由此,在一些实施例中,存储器侧总线接口32可经由存储器总线20B接收从处理子系统12输出的存储器存取请求98,且经由一或多个存储器侧内部总线20D将存储器存取请求98投送到存储器侧存储器控制器34B。
另外,存储器侧存储器控制器34B可确定由存储器存取请求98指示的一或多个存取参数和一或多个上下文参数142(处理框154)。如上所述,在一些实施例中,存储器存取请求98可包含一或多个参数字段100,其各自可用以指示对应的(例如,存取或上下文)参数的值。另外,如上所述,在一些实施例中,与在计算系统10中实施的存储器接口相关联的通信协议可控管存储器存取请求98的格式化。举例来说,通信协议可控管待包含于存储器存取请求98中的参数的数目和/或类型。通信协议可控管位分配,以指示存储器存取请求98中的参数字段100。
因此,在一些实施例中,存储器侧存储器控制器34B可通过根据存储器接口的通信协议剖析存储器存取请求98来确定一或多个上下文参数142的值。举例来说,存储器侧存储器控制器34B可通过读取由通信协议分配的用于指示存储器存取请求98中的处理器上下文参数字段106的一或多个位来确定处理器上下文参数142的值。另外或替代地,存储器侧存储器控制器34B可通过读取由通信协议分配的用于指示存储器存取请求98中的处理器核心上下文参数字段106的一或多个位来确定处理器核心上下文参数142的值。通过读取由通信协议分配的用于指示存储器存取请求98中的应用程序上下文参数字段106的一或多个位来确定应用程序(例如,程序或线程)上下文参数142的值,通过读取由通信协议分配的用于指示存储器存取请求98中的应用程序指令上下文参数字段106的一或多个位的值来确定应用程序指令(例如程序计数器)上下文参数142的值,或其任何组合。
如上所述,在一些实施例中,可在将一或多个上下文参数142作为经哈希上下文参数142包含在存储器存取请求98中之前对其进行哈希。因此,至少在此类实施例中,存储器侧存储器控制器34B可通过读取由通信协议分配的用于指示存储器存取请求98中的经哈希上下文参数字段106的一或多个位来确定对一或多个上下文参数142的指示。另外,为了有助于由存储器子系统14进行的恰当解译,在一些实施例中,存储器存取请求98可包含哈希函数上下文参数142,所述哈希函数上下文参数识别用于产生经哈希上下文参数142的哈希函数。
类似地,在一些实施例中,存储器侧存储器控制器34B可根据存储器接口的通信协议通过剖析存储器存取请求98来确定一或多个存取参数。举例来说,存储器侧存储器控制器34B可通过读取由通信协议分配的用于指示存储器存取请求98中的存储器地址存取参数字段104的一或多个位来确定存储器地址存取参数的值。另外,存储器侧存储器控制器34B可通过读取由通信协议分配的用于指示存储器存取请求98中的存取类型存取参数字段104的一或多个位来确定存取类型存取参数的值。
至少部分地基于存取类型存取参数,存储器侧存储器控制器34B可确定存储器存取请求98是否正在请求读取存取(决策框156)。举例来说,当存取类型存取参数未设定(例如,低或“0位”)时,存储器侧存储器控制器34B可确定正在请求读取存取,且因此,从处理子系统12接收的存储器存取请求98是读取存储器存取请求98。另一方面,当存取类型存取参数被设定(例如,高或“1位”)时,存储器侧存储器控制器34B可确定从处理子系统12接收的存储器存取请求98正在请求写入存取。换句话说,当设定了存取类型存取参数时,存储器侧存储器控制器34B可确定存储器存取请求98是写入存储器存取请求98,且因此不请求读取存取。
响应于接收到写入存储器存取请求98,存储器侧存储器控制器34B可发指令给存储器子系统14以在一或多个存储器层级中存储由写入存储器存取请求98指示的数据块102(处理框158)。如上所述,在一些实施例中,数据块102和与数据块102相关联的一或多个上下文参数142可一起存储为数据对象134。另外,如上所述,在一些实施例中,在写入存储器存取请求98中指示的存储器地址存取参数可识别存储对应数据块102的(例如,物理)存储器地址。换句话说,响应于接收到写入存储器存取请求98,存储器侧存储器控制器34B可发指令给存储器子系统14以在由其存储器地址存取参数所识别的存储器地址处存储数据块102的个例。在一些实施例中,存储器侧存储器控制器34B可另外发指令给存储器子系统14以将数据块102的个例存储在一或多个其它(例如,较低)存储器层级中,例如以有助于当由写入存储器存取请求98识别的存储器地址处于较高(例如,存储器通道和/或存储装置)存储器层级时减少数据检索延时。
另一方面,响应于接收到读取存储器存取请求98,存储器侧存储器控制器34B可识别由读取存储器存取请求98定为目标的数据块102,并发指令给存储器子系统14以将目标数据块102传回到处理子系统12(处理框160)。如上所述,在一些实施例中,与在存储器子系统14的一或多个存储器装置18中实施的存储器阵列28相比,存储器子系统14可包含用以实施较低存储器层级的一或多个存储器侧高速缓存器26。因此,当存储器子系统14包含存储器侧高速缓存器26时,存储器侧存储器控制器34B可确定目标数据块102当前是否存储在存储器侧高速缓存器26中,且因此确定目标数据是否会导致存储器侧高速缓存未命中。举例来说,存储器侧存储器控制器34B可至少部分地基于预期将与目标数据块102相关联的标记参数138的目标值来搜索与当前存储在存储器侧高速缓存器26中的有效数据块102相关联的标记参数138。特定来说,当标记参数138的目标值包含在存储器侧高速缓存器26中时,存储器侧存储器控制器34B可确定目标数据块102不会导致存储器侧高速缓存未命中,且因此发指令给存储器侧高速缓存器26以输出目标数据块102。
当目标数据块102导致存储器侧高速缓存未命中或存储器子系统14不包含存储器侧高速缓存器26时,存储器侧存储器控制器34B可定位在一或多个存储器装置18中实施的存储器阵列28中的目标数据块102,并发指令给存储器阵列28以输出目标数据块102。举例来说,存储器侧存储器控制器34B可发指令给行选择电路系统118以激活存储了目标数据块102的存储器阵列28的存储器单元行130。在一些实施例中,行选择电路系统118可激活由与目标数据块102相关联的行地址识别的存储器单元行130。另外,在一些实施例中,行选择电路系统118可通过将激活(例如,逻辑高)信号输出到耦合到存储器单元行130的存储器单元122的字线124来激活存储器单元行130。此外,在一些实施例中,列选择电路系统120可通过选择耦合到由与目标数据块102相关联的列地址识别的存储器单元列132的放大器电路系统126来从激活的存储器单元行130读取目标数据块102。另外或替代地,列选择电路系统120可基于与目标数据块102相关联的列地址来多路复用来自每个存储器单元列132的输出。
如上所述,在一些实施例中,可经由存储器侧总线接口32B将从存储器子系统14中的存储器层级检索的数据块102传回(例如,输出)到处理子系统12。换句话说,至少在此类实施例中,存储器侧存储器控制器34B可发指令给存储器侧总线接口32B以经由耦合在处理子系统12与存储器子系统14之间的存储器总线20B输出数据块102。另外,为了有助于改进后续数据检索延时,在一些实施例中,存储器子系统14可将从较高存储器层级检索的目标数据块102的个例(例如,副本)存储在一或多个较低存储器(例如,高速缓存)层级中。举例来说,当从存储器阵列28检索目标数据块时,存储器侧存储器控制器34B可发指令给存储器子系统14以将目标数据块102的个例存储在一或多个存储器侧高速缓存器26中。另外或替代地,当从存储器子系统14传回目标数据块102时,处理器侧存储器控制器34A可发指令给处理子系统12以将目标数据块102的个例存储在一或多个处理器侧高速缓存器24中。
在任何情况下,为了有助于预测性地控制存储器子系统14中的数据存储,存储器侧存储器控制器34B可至少部分地基于存储器存取请求98中所指示的上下文参数142而更新其存储器侧历史数据存取信息39B。如上所述,在一些实施例中,可经由历史数据存取信息表69中的一或多个对应条目71来指示与数据块102相关联的历史数据存取信息39。另外,如上所述,在一些实施例中,可组织历史数据存取信息表69,使得在不同的表区段81中指示与不同的事务上下文相对应的条目71。
因此,在一些实施例中,存储器侧存储器控制器34B可至少部分地通过将条目71添加到与由上下文参数142指示的事务上下文相对应的表区段81来至少部分地更新存储器侧历史数据存取信息39B(处理框171)。举例来说,当存储器存取请求98是写入存储器存取请求98时,存储器侧存储器控制器34B可添加条目71,所述条目经由其块识别符字段73中的块识别符参数来识别经接收以供存储在存储器子系统14中的数据块102。另一方面,当存储器存取请求98是读取存储器存取请求98时,存储器侧存储器控制器34B可添加条目71,所述条目经由其块识别符字段73中指示的块识别符参数识别从存储器子系统14传回的目标数据块102。在一些实施例中,条目71可添加到表区段81,使得条目71相对于与相同事务上下文相关联的一或多个其它条目71按时间次序被指示。
除了块识别符字段73外,如上所述,在一些实施例中,历史数据存取信息表69中的条目71还可包含写入时间字段75、上次存取时间字段77和/或存取计数字段79。因此,在一些实施例中,存储器侧存储器控制器34B可至少部分地通过更新包含在其历史数据存取信息表69的条目71中的一或多个字段的值来更新存储器侧历史数据存取信息39B(处理框173)。举例来说,当存储器存取请求98是读取存储器存取请求98时,存储器侧存储器控制器34B可更新在其上次存取时间字段77中的上次存取时间参数的值以指示当前时间,以及/或递增其存取计数字段79中的存取计数参数的值。另一方面,当存储器存取请求98是写入存储器存取请求98时,存储器侧存储器控制器34B可经由其写入时间字段75中的写入时间参数来指示当前时间。
在实现存储器存取请求98之后,存储器侧存储器控制器34B可确定是否已经从处理子系统12接收到另一存储器存取请求98(决策框162)。当已经接收到另一存储器存取请求98时,存储器控制器再次确定另一存储器存取请求98中指示的一或多个存取参数、确定另一存储器存取请求98中指示的一或多个上下文参数142,依此类推(箭头169)。另一方面,当尚未接收到另一存储器存取请求98时,存储器侧存储器控制器34B可利用机会来预测性地调整存储器子系统14中的数据存储,例如以有助于改进(例如,减少)由存储器子系统14提供的后续数据检索延时,且因此提高计算系统的操作效率。
特定来说,当尚未接收到另一存储器存取请求98时,存储器侧存储器控制器34B可至少部分地基于存储器侧历史数据存取信息39B来预测预期在即将到来的控制范围(例如,时间周期或一或多个时钟循环)内发生的数据存取模式。换句话说,存储器侧存储器控制器34B可预测在即将到来的控制范围内将以什么数据为目标、何时在即将到来的控制范围期间将数据定为目标,以及/或在即将到来的控制范围期间将数据定为目标的次序。实际上,由于在处理子系统12中将上下文信息用于预测,所以在一些实施例中,存储器子系统14中的存储器侧存储器控制器34B可以类似的方式预测一或多个后续数据存取模式。
换句话说,在一些实施例中,存储器侧存储器控制器34B可通过鉴于例如经由包含在从处理子系统12接收的存储器存取请求98中和/或与对应数据块102一起包含在数据对象134中的一或多个上下文参数142指示的事务上下文来分析存储器侧历史数据存取信息39B来预测后续数据存取模式。然而,至少在一些实施例中,可用于存储器子系统14与对应处理子系统12的历史数据存取信息39可能不同,这例如是由于从处理器侧高速缓存器24存取一或多个目标数据块102且因此不在存储器子系统14中存取。换句话说,至少在此类实施例中,存储器侧历史数据存取信息39B与处理器侧历史数据存取信息39A可能不同,从而导致由存储器子系统14预测的后续数据存取模式不同于由处理子系统12预测的后续数据存取模式,即使它们实施类似的预测技术也是如此。
为了有助于提高计算系统的操作效率,存储器侧存储器控制器34B可至少部分地基于预测的数据存取模式来预测性地控制存储器子系统14中的数据存储(处理框166)。特定来说,在一些实施例中,存储器侧存储器控制器34B可至少部分地基于数据块的预测存取次序和/或数据的下一预测目标时间来控制什么数据块存储在存储器层级中。举例来说,存储器侧存储器控制器34B可预取在从存储装置存储器阵列114到存储器通道存储器阵列116和/或从存储器通道存储器阵列116到存储器侧高速缓存器26或存储器侧预取缓冲器31B的即将到来的控制范围期间预期将被定为目标的数据块102的副本(在将数据块102实际作为目标之前)。另外或替代地,例如当在即将到来的控制范围期间不预期将数据块定为目标时,存储器侧存储器控制器34B可发指令给存储器侧高速缓存器26和/或存储器通道存储器阵列116以逐出数据块102,以腾出空间用于在即将到来的控制范围期间预期将被定为目标的另一数据块102。以此方式,存储器侧存储器控制器34B可操作以至少部分地基于上下文信息来预测性地控制在存储器子系统14中实施的一或多个存储器层级中的数据存储。
如上所述,在一些实施例中,为了有助于由存储器子系统14考虑,可在例如经由存储器接口从对应处理子系统12输出的存储器存取请求98中指示上下文信息,其包含有助于根据使得能够在处理子系统12与存储器子系统14之间进行通信的存储器接口和/或硬件(例如,总线接口引脚44和存储器总线20B)的通信协议来格式化存储器存取请求98的软件。然而,如上所述,至少在一些实施例中,例如由于在存储器存取请求98中添加一或多个上下文参数字段106,在存储器存取请求98中包含上下文信息可能导致每个存储器存取请求98的位数增加。如上所述,为了有助于适应包含一或多个上下文参数字段106的存储器存取请求98和/或每个存储器存取请求98的位数的所得增大,在一些实施例中,可调整在计算系统10中部署的存储器接口的实施。
为了帮助进一步说明,图14中展示可部署在计算系统10中的存储器接口170的实例。如在所描绘的实例中,存储器接口170可包含总线接口32和耦合到总线接口32的存储器总线20B。因此,在一些实施例中,存储器接口170可为基于总线的接口,例如双数据速率(DDR)接口、图形双数据速率(GDDR)接口、高带宽存储器(HBM)接口等。
然而,应了解,所描绘的实例仅意在说明而非限制。举例来说,在其它实施例中,存储器接口170可为包化接口,例如混合存储器立方体(HMC)接口、Z代接口等。此外,存储器接口170可另外包含耦合到存储器总线20B的相对末端(例如,侧)的另一总线接口32。
在一些实施例中,总线接口32可在处理子系统12中实施为处理器侧总线接口32A。在其它实施例中,总线接口32可在存储器子系统14中实施为存储器侧总线接口32B。在任何情况下,如上所述,总线接口32可包含可耦合到存储器总线20B的一或多个引脚44。举例来说,总线接口32可包含第一引脚44A和第P引脚44P。
另外,如上所述,存储器总线20B可包含一或多个导线176(例如,导电路径或迹线)。实际上,在一些实施例中,存储器总线20B的每个导线176可耦合到总线接口32中的对应引脚44。为了帮助说明,在所描绘的实例中,存储器总线20B包含第一导线176,其可耦合到总线接口32的第一引脚44A。存储器总线20B还包含第P导线176P,其可耦合到总线接口32的第P引脚44P。
换句话说,在一些实施例中,存储器接口170可包含例如多个(例如,并行)数据路径178,其各自包含一组(例如,成对的)总线接口引脚44和耦合在其间的存储器总线导线176。作为说明性实例,存储器接口170中的第一数据路径178A可包含总线接口32的第一引脚44A和存储器总线20B的第一导线176A。类似地,存储器接口170中的第P数据路径178P可包含总线接口32的第P引脚44P和存储器总线20B的第P导线176P。尽管未描绘,但第一数据路径178A可另外包含另一总线接口32的引脚44(例如,部署在不同的计算子系统中),且第P数据路径178P可另外包含另一总线接口32的另一引脚44。
此外,在一些实施例中,在存储器存取请求98的传达期间,存储器接口170中的不同数据路径178可专用于传达存储器存取请求98中的不同参数字段100。举例来说,第一数据路径178A可经实施以传达在存储器存取请求98的存取参数字段104中指示的存取参数174的值。另一方面,第P数据路径178P可经实施以传达在存储器存取请求98的上下文参数字段106中所指示的上下文参数142的值。
换句话说,在存储器存取请求98中不包含上下文参数字段106的其它实施例中,第P数据路径178P可被排除且因此不包含在存储器接口170中,例如以有助于减少与实施关联成本,例如存储器接口170的物理占据面积和/或组件计数。也就是说,在存储器存取请求98中包含上下文参数字段106的实施例中,可将第P数据路径178P添加到存储器接口170。
如上所述,在一些实施例中,调整存储器接口170以包含一或多个额外数据路径178可有助于增加其(例如,最大)通信带宽。换句话说,为了有助于适应包含一或多个上下文参数字段106的存储器存取请求98,在一些实施例中,例如与存储器存取请求98中不包含上下文参数字段106的实施例相比,可实施存储器接口170以提供更高的通信带宽。如上所述,至少在一些情况下,增加由存储器接口170提供的通信带宽可例如通过使存取参数174和上下文参数142能够至少部分地在相同的一或多个时钟循环内并行地传达来有助于提高计算系统的操作效率。
然而,如上所述,在存储器接口170中实施的数据路径178的数目可能会影响其实施关联成本。举例来说,将引脚44添加到总线接口32可能会增加总线接口32且因此增加其中部署了总线接口32的存储器接口170的物理占据面积和/或组件计数。类似地,将导线176添加到存储器总线20B可能会增加存储器总线20B且因此增加其中部署了存储器总线20B的存储器接口170的物理占据面积和/或组件计数。如上所述,为了有助于适应包含一或多个上下文参数字段106的存储器存取请求98,同时减少对与实施关联成本的影响,在一些实施例中,可调整用以经由存储器接口170传达的通信协议。
为了帮助说明,图15中展示实例定时图180,其描述可在存储器接口170中实施的经由存储器总线20的通信。特定来说,定时图180描述经由多个时钟循环182的存储器存取请求98的通信定时(例如,格式化),所述多个时钟循环至少包含第一时钟循环182A和第R时钟循环182R。然而,应了解,所描绘的实例仅意在说明而非限制。特定来说,在其它实施例中,例如在扩展存储器接口170的通信带宽以使得能够并行地(例如,平行)传达存储器存取请求98中的每一参数字段100时,可在单个时脉循环182内传达存储器存取请求98。
如上所述,在一些实施例中,可在不同时钟循环182期间传达(例如,发射和/或接收)存储器存取请求98中的不同参数字段100。为了帮助说明,如在所描绘的实例中,可在第一时钟循环182A期间传达在存储器存取请求98的存取参数字段104中指示的存取参数174的值。另一方面,可在第R时钟循环182R期间传达在存储器存取请求98的上下文参数字段106中指示的上下文参数142的值。
换句话说,在存储器存取请求98中不包含上下文参数字段106的其它实施例中,可在到达第R时钟循环182R之前完成存储器存取请求98的传达。也就是说,至少在此类情况下,可排除且因此不执行在第R时钟循环182R期间的存储器存取请求98的传达,以例如有助于提高计算系统的操作效率。
如上所述,在一些实施例中,可由通信协议控管经由存储器接口170的通信的定时和/或格式化。举例来说,通信协议可控管在每个时钟循环182期间传达什么参数字段100。另外或替代地,通信协议可控管为每个存储器存取请求98的传达分配的时钟循环182的数目。
换句话说,在存储器存取请求98中包含上下文参数字段106的实施例中,可调整通信协议以为存储器存取请求98的传达另外分配第R时钟循环182R。为了适应包含一或多个上下文参数字段106的存储器存取请求98,可调整待用以经由存储器接口170进行通信的通信协议,以增加在其间传达每个存储器存取请求98的时钟循环182的数目(例如与在存储器存取请求98中不包含上下文参数字段106的实施例相比)。如上所述,至少在一些情况下,增加经分配用于存储器存取请求98的传达的时钟循环182的数目可有助于减少实施关联成本,例如通过避免在存储器接口170中包含一或多个数据路径178。
然而,如上所述,用以将存储器存取请求98从处理子系统12传达到存储器子系统14的时钟循环182的数目可能会影响计算系统的操作效率。特定来说,在一些实施例中,在对存储器存取请求98采取行动之前,存储器子系统14可等待存储器存取请求98被完全接收。由此,在一些实施例中,设定通信协议以增加传达存储器存取请求98的时钟循环182的数目可延迟存储器子系统14的响应,且因此影响(例如降低)计算系统的操作效率。
换句话说,在一些实施例中,对存储器接口170的不同调整可在操作效率与实施关联成本之间呈现不同取舍。为了有助于平衡(例如,优化)所述取舍,在一些实施例中,可调整存储器接口170的通信带宽和通信协议两者。举例来说,为了有助于适应包含一或多个上下文参数字段106的存储器存取请求98,可增加在存储器接口170中实施的数据路径178的数目和为每个存储器存取请求98分配的时钟循环182的数目两者。以此方式,本公开中描述的技术可有助于将与数据存取相关联的上下文信息从处理子系统12传达到存储器子系统14,这至少在一些情况下可有助于提高计算系统的操作效率,例如通过使存储器子系统14至少部分地基于对处理子系统12可用的上下文信息来预测性地控制数据存储。
本公开的一或多个具体实施例描述于本文中且描述于对应的图中。这些所描述的实施例仅是当前公开的技术的实例。另外,在努力提供这些实施例的简明说明的过程中,说明书中可能未描述实际实施方案的所有特征。应了解在任何这样的实际实施方案的发展中,如同在任何工程或设计项目中,必须制定许多实施方案特定性的决策以实现研发者的特定目标,例如与系统相关和企业相关约束条件的一致性,这可以从一个实施方案到另一实施方案有所变化。此外,应认识到,这样的开发工作可能是复杂和耗时的,但可能是设计、加工和制造的普通技术人员从本公开受益的日常工作。
当介绍本公开的各种实施例的要素时,冠词“一”和“所述”意在表示存在所述要素中的一或多个。术语“包括”、“包含”和“具有”意在为包含性的并且意味着可以存在除所列元件之外的另外元件。另外,应理解,对本公开的“一个实施例”或“实施例”的参考并不意图解释为排除此外并入所叙述特征中的额外实施例的存在。
上文所描述的具体实施例已借助于实例展示,且应理解,这些实施例可接受各种修改和替代形式。应进一步理解,权利要求并不预期限于所公开的特定形式,而是涵盖属于本公开的精神和范围内的所有修改、等效物和替代方案。

Claims (20)

1.一种包括处理系统的设备,所述处理系统被配置成经由存储器总线以通信方式耦合到存储器系统,其中所述处理系统包括:
处理电路系统,其被配置成执行数据处理操作;
一或多个处理器侧高速缓存器,其被配置成经由第一一或多个阶层式存储器层级提供数据存储;和
处理器侧存储器控制器,其中当被所述处理电路系统定为目标的第一数据块导致处理器侧未命中时,处理器侧存储器控制器被配置成指示所述处理系统至少部分地通过以下操作来输出请求传回所述第一数据块的第一存储器存取请求:
在第一时钟循环期间输出第一存取参数以供所述存储器系统用以将实施于所述存储器系统中的第二一或多个阶层式存储器层级中的所述第一数据块定位到所述存储器总线;和
在不同于所述第一时钟循环的第二时钟循环期间将指示与所述第一数据块的当前目标化相关联的第一上下文信息的第一上下文参数输出到所述存储器总线,以使所述存储器系统能够至少部分地基于所述第一上下文信息预测性地控制所述第二一或多个阶层式存储器层级中的数据存储。
2.根据权利要求1所述的设备,其中当被所述处理电路系统定为目标的所述第一数据块导致处理器侧未命中时,所述处理器侧存储器控制器被配置成:
确定所述第一存取参数以指示供所述处理电路系统用以识别所述第一数据块、存储于存储器系统中的所述第一数据块所处的物理存储器地址或这两者的虚拟存储器地址;和
确定所述第一上下文参数以识别所述处理电路系统中的当前将所述第一数据块定为目标的处理器、所述处理电路系统中的当前将所述第一数据块定为目标的处理器核心、在所述处理电路系统中运行的导致所述第一数据块当前被定为目标的应用程序、在由所述处理电路系统执行时导致所述第一数据块当前被定为目标的应用程序指令,或其任何组合。
3.根据权利要求1所述的设备,其中:
所述存储器系统中的所述第二一或多个阶层式存储器层级包括较低存储器层级和较高存储器层级;且
所述存储器系统包括被配置成进行以下操作的存储器侧存储器控制器:
至少部分地基于经由所述第一存储器存取请求中的所述第一上下文参数指示的所述第一上下文信息而预测存储在所述较高存储器层级中的第二数据块将为下一目标数据块;和
在预期将所述下一目标数据块定为目标之前,发指令给所述存储器系统从所述较高存储器层级预取所述第二数据块,使得所述第二数据块复制在所述较低存储器层级中。
4.根据权利要求1所述的设备,其中:
所述处理器侧存储器控制器被配置成至少部分地基于与所述第一数据块的所述当前目标化相关联的所述第一上下文信息和所述处理系统中可用的第一历史数据存取信息而预测性地控制所述处理系统的所述第一一或多个阶层式存储器层级中的数据存储;且
所述存储器系统包括存储器侧存储器控制器,所述存储器侧存储器控制器被配置成至少部分地基于所述第一存储器存取请求中指示的所述第一上下文信息和所述存储器系统中可用的第二历史数据存取信息而预测性地控制所述存储器系统的所述第二一或多个阶层式存储器层级中的数据存储,其中在先前被所述处理电路系统定为目标的一或多个数据块导致处理器侧命中时,所述存储器系统中可用的所述第二历史数据存取信息不同于所述处理系统中可用的所述第一历史数据存取信息。
5.根据权利要求1所述的设备,其中所述第一存储器存取请求的所述第一上下文参数输出到所述存储器总线期间的所述第二时钟循环出现于所述第一存储器存取请求的所述第一地址参数输出到所述存储器总线期间的所述第一时钟循环之后。
6.根据权利要求1所述的设备,其中当被所述处理电路系统定为目标的所述第一数据块导致处理器侧未命中时,所述处理器侧存储器控制器被配置成:
至少部分地通过对所述第一上下文参数执行哈希函数来确定经哈希上下文参数值;和
指示所述处理系统:
在所述第二时钟循环期间将所述经哈希上下文参数值输出到所述存储器总线;和
输出识别所述哈希函数的第二上下文参数,所述哈希函数供所述处理器侧存储器控制器用以产生所述经哈希上下文参数值使所述存储器系统能够根据所述哈希函数跟踪上下文信息。
7.根据权利要求6所述的设备,其中当被所述处理电路系统定为目标的所述第一数据块导致处理器侧未命中时,所述处理器侧存储器控制器被配置成:
确定所述第一上下文参数以识别所述处理电路系统中的当前将所述第一数据块定为目标的处理器、所述处理电路系统中的当前将所述第一数据块定为目标的处理器核心,或这两者;
确定第三上下文参数以识别在所述处理电路系统中运行的导致所述第一数据块当前被定为目标的应用程序、在由所述处理电路系统执行时导致所述第一数据块当前被定为目标的应用程序指令,或这两者;和
至少部分地通过对所述第一上下文参数和所述第三上下文参数执行所述哈希函数来确定所述经哈希上下文参数值。
8.根据权利要求1所述的设备,其中所述处理器侧存储器控制器被配置成发指令给所述处理系统以至少部分地通过以下操作来输出请求将所述第一数据块存储于所述存储器系统中的第二存储器请求:
将指示将存储于存储器系统中的所述第一数据块所处的目标存储方位的第二存取参数输出到所述存储器总线;和
将指示与所述第一数据块的产生相关联的第二上下文信息的第二上下文参数输出到所述存储器总线,以使所述存储器系统能够至少部分地基于与所述第一数据块的产生相关联的所述第二上下文信息和与所述第一数据块的目标化相关联的所述第一上下文信息来预测性地控制所述第二一或多个阶层式存储器层级中的数据存储。
9.根据权利要求1所述的设备,其中当被所述处理电路系统定为目标的第二数据块导致处理器侧未命中时,所述处理器侧存储器控制器被配置成发指令给所述处理系统以至少部分地通过以下操作来输出请求传回所述第二数据块的第二存储器存取请求:
在第三时钟循环期间输出第二存取参数以供所述存储器系统用以将所述第二一或多个阶层式存储器层级中的所述第二数据块定位到所述存储器总线;和
在第四时钟循环期间将指示与所述第二数据块的当前目标化相关联的第二上下文信息的第二上下文参数输出到所述存储器总线,以使所述存储器系统能够至少部分地基于与所述第二数据块的目标化相关联的所述第二上下文信息和与所述第一数据块的目标化相关联的所述第一上下文信息来预测性地控制所述第二一或多个阶层式存储器层级中的数据存储,其中:
所述第四时钟循环不同于所述第三时钟循环;且
所述第二上下文参数与所述第一存储器存取请求中所指示的所述第一上下文参数相比指示不同类型的上下文信息。
10.根据权利要求1所述的设备,其中:
所述处理系统包括具有经扩展条目位宽的请求队列,所述经扩展条目位宽使得能够存储包含一或多个上下文参数字段的存储器存取请求;且
当被所述处理电路系统定为目标的所述第一数据块导致处理器侧未命中时,所述处理器侧存储器控制器被配置成:
在所述第一存储器存取请求输出到所述存储器总线之前将所述第一存储器存取请求存储于所述请求队列中;和
发指令给所述处理系统以在从所述请求队列检索之后将所述第一存储器存取请求输出到所述存储器总线。
11.根据权利要求1所述的设备,其中所述存储器总线包括:
多个导线,其被配置成:
在所述第一时钟循环期间传达所述第一存取参数;和
在所述第二时钟循环期间传达指示与所述第一数据块的所述当前目标化相关联的所述第一上下文信息的所述第一上下文参数;以及
额外导线,其被配置成:
至少部分地在所述第一时钟循环期间传达指示与所述第一数据块的所述当前目标化相关联的第二上下文信息的第二上下文参数;
至少部分地在所述第二时钟循环期间传达指示与所述第一数据块的所述当前目标化相关联的所述第二上下文信息的所述第二上下文参数;或
这两者。
12.一种操作计算系统的方法,其包括:
使用存储器控制电路系统确定被所述计算系统的处理子系统中的处理电路系统定为目标以执行第一数据处理操作的第一数据块当前是否存储于所述处理子系统中;和
响应于确定所述第一数据块当前不存储于所述处理子系统中:
使用所述存储器控制电路系统指示第一存储器存取请求的存取参数字段中与所述第一数据块相关联的第一存储器地址;
使用所述存储器控制电路系统指示所述第一存储器存取请求的第一上下文参数字段中与所述处理电路系统将所述第一数据块定为目标相关联的第一上下文信息;和
使用所述存储器控制电路系统发指令给所述处理子系统将所述第一存储器存取请求经由存储器接口供应到存储器子系统以使所述存储器子系统能够进行以下操作:
至少部分地基于所述第一存储器存取请求的所述存取参数字段中所指示的所述第一存储器地址来定位所述第一数据块;
将所述第一数据块经由所述存储器接口传回给所述处理子系统以有助于所述第一数据处理操作的执行;和
至少部分地基于所述第一存储器存取请求的所述第一上下文参数字段中所指示的所述第一上下文信息,控制实施于所述存储器子系统中的多个阶层式存储器层级中的数据存储。
13.根据权利要求12所述的方法,其中发指令给所述处理子系统以将所述第一存储器存取请求供应给所述存储器子系统包括:
至少部分地在第一时钟循环期间发指令给所述处理子系统以将所述存取参数字段中所指示的所述第一存储器地址输出到所述存储器接口的通信总线;和
至少部分地在不同于所述第一时钟循环的第二时钟循环期间发指令给所述处理子系统以将所述第一上下文参数字段中所指示的所述第一上下文信息输出到所述存储器接口的所述通信总线。
14.根据权利要求13所述的方法,其包括响应于确定所述第一数据块当前不存储于所述处理子系统中:
使用所述存储器控制电路系统指示所述第一存储器存取请求的第二上下文参数字段中与所述处理电路系统将所述第一数据块定为目标相关联的第二上下文信息,其中所述第二上下文信息与所述第一上下文信息相比指示在不同特定性层级与所述第一数据块的目标化相关联的上下文;和
使用所述存储器控制电路系统发指令给所述处理子系统以将所述第一存储器存取请求经由所述存储器接口供应给所述存储器子系统,以使所述存储器子系统能够至少部分地基于所述第一存储器存取请求的所述第二上下文参数字段中所指示的所述第二上下文信息和所述第一存储器存取请求的所述第一上下文参数字段中所指示的所述第一上下文信息来控制所述多个阶层式存储器层级中的数据存储。
15.根据权利要求12所述的方法,其包括:
使用所述存储器控制电路系统确定被所述处理子系统中的所述处理电路系统定为目标以执行第二数据处理操作的第二数据块当前是否存储于所述处理子系统中;和
响应于确定所述第二数据块当前不存储于所述处理子系统中:
使用所述存储器控制电路系统指示第二存储器存取请求的所述存取参数字段中与所述第二数据块相关联的第二存储器地址;
使用所述存储器控制电路系统指示所述第二存储器存取请求的所述第一上下文参数字段中与所述处理电路系统将所述第二数据块定为目标相关联的第二上下文信息,其中所述第二上下文信息和所述第一上下文信息包括不同类型的上下文信息;和
使用所述存储器控制电路系统指示所述处理子系统将所述第二存储器存取请求经由所述存储器接口供应到存储器子系统以使所述存储器子系统能够进行以下操作:
至少部分地基于所述第二存储器存取请求的所述存取参数字段中所指示的所述第二存储器地址来定位所述第二数据块;
将所述第二数据块经由所述存储器接口传回给所述处理子系统以有助于所述第二数据处理操作的执行;和
至少部分地基于所述第二存储器存取请求的所述第一上下文参数字段中所指示的所述第二上下文信息,控制实施于所述存储器子系统中的所述多个阶层式存储器层级中的数据存储。
16.根据权利要求12所述的方法,其包括:
使用所述存储器控制电路系统产生请求将所述第一数据块存储于所述存储器子系统中的第二存储器存取请求,其中产生所述第二存储器存取请求包括:
指示所述第二存储器存取请求的所述存取参数字段中与所述第一数据块相关联的所述第一存储器地址;和
指示所述第二存储器存取请求的所述第一上下文参数字段中与所述处理电路系统产生所述第一数据块相关联的第二上下文信息;和
使用所述存储器控制电路系统指示所述处理子系统将所述第一存储器存取请求经由所述存储器接口供应到存储器子系统以使所述存储器子系统能够进行以下操作:
至少部分地基于所述第二存储器存取请求的所述存取参数字段中所指示的所述第一存储器地址,将所述第一数据块存储于在所述存储器子系统中实施的所述多个阶层式存储器层级中的一或多个阶层式存储器层级中;和
至少部分地基于所述第二存储器存取请求的所述第一上下文参数字段中所指示的所述第二上下文信息和所述第一存储器存取请求的所述第一上下文参数字段中所指示的所述第一上下文信息来控制所述多个阶层式存储器层级中的数据存储。
17.根据权利要求12所述的方法,其中发指令给所述处理子系统以将所述第一存储器存取请求供应给所述存储器子系统包括:
发指令给实施于处理子系统中的总线接口以经由实施于所述存储器接口中的第一一或多个数据路径输出所述第一存储器存取请求的所述存取参数字段中所指示的所述第一存储器地址;和
发指令给所述总线接口以经由实施于所述存储器接口中的第二一或多个数据路径输出所述第一存储器存取请求的所述第一上下文参数字段中所指示的所述第一上下文信息,以使所述存储器接口能够并行地传达与所述第一数据块相关联的所述第一上下文信息和所述第一存储器地址。
18.一种包括处理子系统的计算系统,其中所述处理子系统包括:
存储器控制器,其被配置成产生请求经由外部通信总线存取耦合到所述处理子系统的存储器子系统的存储器存取请求,其中所述存储器存取请求包括:
地址参数字段,其用以指示与被所述存储器存取请求定为目标的数据块相关联的存储器地址;和
上下文参数字段,其用以指示供所述存储器控制器用以预测性地控制实施于处理子系统中的一或多个阶层式存储器层级中的数据存储的上下文信息;和
总线接口,其经由一或多个内部通信总线耦合到所述存储器控制器,其中所述总线接口包括:
第一一或多个引脚,其被配置成至少部分地通过将所述存储器存取请求的所述地址参数字段输出到所述外部通信总线来有助于所述存储器存取请求发射到所述存储器子系统;和
第二一或多个引脚,其被配置成至少部分地通过将所述存储器存取请求的所述上下文参数字段输出到所述外部通信总线来有助于所述存储器存取请求发射到所述存储器子系统。
19.根据权利要求18所述的计算系统,其中:
所述存储器存取请求的所述地址参数字段中所指示的所述存储器地址包括供所述处理子系统中的处理电路系统用以识别所述数据块的虚拟存储器地址、期望将存储于所述存储器子系统中的所述第一数据块所处的物理存储器地址,或这两者;且
所述存储器存取请求的所述上下文参数字段中所指示的所述上下文信息识别所述处理电路系统中当前将所述数据块定为目标的第一处理器、所述处理电路系统中产生所述数据块的第二处理器、所述处理电路系统中当前将所述数据块定为目标的第一处理器核心、所述处理电路系统中产生所述数据块的第二处理器核心、在所述处理电路系统中运行的导致当前将所述数据块定为目标的第一应用程序、在所述处理电路系统中运行的导致产生所述数据块的第二应用程序、当由所述处理电路系统执行时导致当前将所述数据块定为目标的第一应用程序指令、当由所述处理电路系统执行时导致产生数据块的第二应用程序指令,或其任何组合。
20.根据权利要求18所述的计算系统,其中:
所述第一一或多个引脚被配置成在一或多个时钟循环期间将所述存储器存取请求的所述地址参数字段输出到所述外部通信总线;且
所述第二一或多个引脚被配置成在所述一或多个时钟循环期间将所述存储器存取请求的所述上下文参数字段并行输出到所述外部通信总线。
CN202080035493.6A 2019-05-16 2020-04-20 处理器侧事务上下文存储器接口系统和方法 Pending CN113826083A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/414,485 2019-05-16
US16/414,485 US10877889B2 (en) 2019-05-16 2019-05-16 Processor-side transaction context memory interface systems and methods
PCT/US2020/028939 WO2020231604A1 (en) 2019-05-16 2020-04-20 Processor-side transaction context memory interface systems and methods

Publications (1)

Publication Number Publication Date
CN113826083A true CN113826083A (zh) 2021-12-21

Family

ID=73228341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080035493.6A Pending CN113826083A (zh) 2019-05-16 2020-04-20 处理器侧事务上下文存储器接口系统和方法

Country Status (5)

Country Link
US (1) US10877889B2 (zh)
EP (1) EP3970021A4 (zh)
KR (1) KR102422654B1 (zh)
CN (1) CN113826083A (zh)
WO (1) WO2020231604A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877894B2 (en) 2019-05-16 2020-12-29 Micron Technology, Inc. Memory-side transaction context memory interface systems and methods, wherein first context and first address are communicated on plural wires during different clock cycles and second context (of block of the first context) is communicated on additional wire during one of the different clock cycles
US11379376B2 (en) 2020-05-20 2022-07-05 Micron Technologies, Inc. Embedding data in address streams

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173392B1 (en) * 1997-04-12 2001-01-09 Nec Corporation Prefetch controller automatically updating history addresses
US20070067602A1 (en) * 2005-09-16 2007-03-22 Callister James R Mitigating context switch cache miss penalty
US20090300340A1 (en) * 2008-06-02 2009-12-03 Chou Yuan C Accuracy of Correlation Prefetching Via Block Correlation and Adaptive Prefetch Degree Selection
CN102436422A (zh) * 2010-09-02 2012-05-02 爱特梅尔卢梭公司 与处理器无关的循环条目高速缓冲存储器
US20160048452A1 (en) * 2011-05-20 2016-02-18 International Business Machines Corporation Dynamic hierarchical memory cache awareness within a storage system
CN106575257A (zh) * 2014-06-02 2017-04-19 美光科技公司 用于改进存储器系统的效率的系统及方法
US20190004954A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Application and processor guided memory prefetching

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
US6938132B1 (en) 2002-04-04 2005-08-30 Applied Micro Circuits Corporation Memory co-processor for a multi-tasking system
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7430650B1 (en) * 2004-06-17 2008-09-30 Richard Ross Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters
US7865570B2 (en) 2005-08-30 2011-01-04 Illinois Institute Of Technology Memory server
US8521944B2 (en) 2010-08-31 2013-08-27 Intel Corporation Performing memory accesses using memory context information
US9286221B1 (en) * 2012-06-06 2016-03-15 Reniac, Inc. Heterogeneous memory system
JP6488711B2 (ja) 2015-01-14 2019-03-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9934148B2 (en) 2015-06-23 2018-04-03 Advanced Micro Devices, Inc. Memory module with embedded access metadata
US10108549B2 (en) * 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US9767028B2 (en) 2015-10-30 2017-09-19 Advanced Micro Devices, Inc. In-memory interconnect protocol configuration registers
US11061572B2 (en) 2016-04-22 2021-07-13 Advanced Micro Devices, Inc. Memory object tagged memory monitoring method and system
US10389839B2 (en) * 2016-06-01 2019-08-20 Intel Corporation Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173392B1 (en) * 1997-04-12 2001-01-09 Nec Corporation Prefetch controller automatically updating history addresses
US20070067602A1 (en) * 2005-09-16 2007-03-22 Callister James R Mitigating context switch cache miss penalty
US20090300340A1 (en) * 2008-06-02 2009-12-03 Chou Yuan C Accuracy of Correlation Prefetching Via Block Correlation and Adaptive Prefetch Degree Selection
CN102436422A (zh) * 2010-09-02 2012-05-02 爱特梅尔卢梭公司 与处理器无关的循环条目高速缓冲存储器
US20160048452A1 (en) * 2011-05-20 2016-02-18 International Business Machines Corporation Dynamic hierarchical memory cache awareness within a storage system
CN106575257A (zh) * 2014-06-02 2017-04-19 美光科技公司 用于改进存储器系统的效率的系统及方法
US20190004954A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Application and processor guided memory prefetching

Also Published As

Publication number Publication date
WO2020231604A1 (en) 2020-11-19
KR20210141782A (ko) 2021-11-23
US20200364146A1 (en) 2020-11-19
KR102422654B1 (ko) 2022-07-20
EP3970021A1 (en) 2022-03-23
EP3970021A4 (en) 2023-01-25
US10877889B2 (en) 2020-12-29

Similar Documents

Publication Publication Date Title
CN111338980B (zh) 预测性数据存储分级存储器系统及方法
CN110580229B (zh) 扩展线宽存储器侧高速缓存系统和方法
US11281585B2 (en) Forward caching memory systems and methods
US11934317B2 (en) Memory-aware pre-fetching and cache bypassing systems and methods
US11281589B2 (en) Asynchronous forward caching memory systems and methods
US10705762B2 (en) Forward caching application programming interface systems and methods
KR102422654B1 (ko) 프로세서 측 트랜잭션 콘텍스트 메모리 인터페이스 시스템 및 방법
US11354246B2 (en) Memory-side transaction context memory interface systems and methods based on clock cycles and wires
CN112397113B (zh) 要求延迟及数据值相关的存储器预提取系统及方法

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20211221

WD01 Invention patent application deemed withdrawn after publication