CN111837110A - 基于预取器的推测性动态随机存取存储器读取请求技术 - Google Patents
基于预取器的推测性动态随机存取存储器读取请求技术 Download PDFInfo
- Publication number
- CN111837110A CN111837110A CN201980018182.6A CN201980018182A CN111837110A CN 111837110 A CN111837110 A CN 111837110A CN 201980018182 A CN201980018182 A CN 201980018182A CN 111837110 A CN111837110 A CN 111837110A
- Authority
- CN
- China
- Prior art keywords
- read requests
- memory read
- speculative memory
- request
- speculative
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0653—Monitoring storage devices or 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/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/0656—Data buffering arrangements
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/602—Details relating to cache prefetching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种方法包括监测从倒数第二级高速缓存到主存储器的推测性存储器读取请求的请求率。所述推测性存储器读取请求对应于所述倒数第二级高速缓存中未命中的数据读取请求。监测针对由所述数据读取请求所请求的数据搜索末级高速缓存的命中率。基于所述请求率和所述命中率,与针对对应的核心需求数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的核心需求推测性存储器读取请求。基于所述请求率和所述命中率,与针对对应的预取数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的预取推测性存储器读取请求。
Description
背景技术
通常,为了弥合处理器核心速度与主存储器速度之间的差距,处理器系统使用多级高速缓存层次结构,其中每个高速缓存大于其前导者并且快于其后继者。图1示出示例性处理系统,其包括具有三个高速缓存级别和主存储器的多级高速缓存层次结构。处理系统100包括处理器102,所述处理器102具有耦合到二级高速缓存110的拆分的一级高速缓存(例如,指令高速缓存106和数据高速缓存108)。三级高速缓存112在处理器102的外部并且与主存储器114通信,所述主存储器114可包括常规片外动态随机存取存储器(DRAM)、更快的片上DRAM和/或包括存储器技术,诸如DRAM、静态随机存取存储器(SRAM)、相变存储器、忆阻器或其他存储器类型)的混合。通过访问主存储器114来服务来自末级高速缓存(例如,三级高速缓存112)的未命中具有高的存储器访问等待时间(例如,至少200个时钟周期的存储器访问等待时间),这可显著影响系统性能。因此,期望用于访问存储器的改进的技术。
发明内容
在至少一个实施方案中,一种用于减少存储器系统的存储器访问等待时间的方法包括监测从倒数第二级高速缓存到主存储器的推测性存储器读取请求的请求率。所述推测性存储器读取请求对应于所述倒数第二级高速缓存中未命中的数据读取请求。所述推测性存储器读取请求中的每一个是核心需求推测性存储器读取请求或预取推测性存储器读取请求。所述数据读取请求中的每一个是核心需求数据读取请求或预取数据读取请求。所述方法包括监测针对由所述数据读取请求所请求的数据搜索末级高速缓存的命中率。所述推测性存储器读取请求中的每一个与针对对应数据搜索所述末级高速缓存并行地发出。所述方法包括基于所述请求率和所述命中率,与针对对应的核心需求数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的核心需求推测性存储器读取请求。所述方法包括基于所述请求率和所述命中率,与针对对应的预取数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的预取推测性存储器读取请求。所述推测性存储器读取请求中的每一个可以是与所述搜索并行地发出的实际推测性存储器读取请求或未实现的推测性存储器读取请求。
在至少一个实施方案中,一种存储器系统包括倒数第二级高速缓存、末级高速缓存、主存储器、第一计数器、第二计数器以及与所述倒数第二级高速缓存相关联的控制器。所述第一计数器被配置为存储从所述倒数第二级高速缓存到所述主存储器的推测性存储器读取请求的请求率。所述推测性存储器读取请求中的每一个响应于倒数第二级高速缓存中对应的数据读取请求的未命中。所述第二计数器被配置为存储针对所述倒数第二级高速缓存中未命中的数据读取请求的数据搜索所述末级高速缓存的命中率的指示符。所述控制器被配置为基于所述请求率、所述命中率、预定请求率阈值和预定命中率阈值,与所述搜索并行地选择性地启用到所述主存储器的预取推测性存储器读取请求。所述控制器被配置为基于所述请求率、所述命中率、所述预定请求率阈值和所述预定命中率阈值,与所述搜索并行地选择性地启用到所述主存储器的预取推测性存储器读取请求。所述推测性存储器读取请求中的每一个是核心需求推测性存储器读取请求或预取推测性存储器读取请求。所述推测性存储器读取请求控制器可被配置为响应于所述倒数第二级高速缓存中的每个未命中而使所述第一计数器递增,响应于所述末级高速缓存中的每个命中而使所述第二计数器递增,并且周期性地重置所述第一计数器和所述第二计数器。
在至少一个实施方案中,一种用于操作存储器系统的方法包括与针对由倒数第二级高速缓存中未命中的核心需求数据读取请求所请求的数据搜索末级高速缓存并行地启用到主存储器的核心需求推测性存储器读取请求。所述方法包括针对由所述倒数第二级高速缓存中未命中的预取数据读取请求所请求的数据禁用到所述主存储器的预取推测性存储器读取请求。所述方法包括监测从所述倒数第二级高速缓存发出到所述主存储器的推测性存储器读取请求的请求率。所述请求率是基于核心需求推测性存储器读取请求和针对所述倒数第二级高速缓存中未命中的预取数据读取请求的未实现的预取推测性存储器读取请求。所述方法包括监测所述搜索所述末级高速缓存的命中率。所述方法包括响应于所述请求率小于预定请求率阈值并且所述命中率小于预定命中率阈值:启用所述核心需求推测性存储器读取请求并且启用所述预取推测性存储器读取请求。在至少一个实施方案中,响应于所述请求率大于所述预定请求率阈值或所述命中率大于所述预定命中率阈值,所述方法包括禁用所述核心需求推测性存储器读取请求并且禁用所述预取推测性存储器读取请求。在至少一个实施方案中,响应于所述请求率小于第二预定请求率阈值并且所述命中率小于第二预定命中率阈值,所述方法还包括启用所述核心需求推测性存储器读取请求并且启用所述预取推测性存储器读取请求。所述第二预定请求率阈值小于所述预定请求率阈值,并且所述第二预定命中率阈值小于所述预定命中率阈值。
附图说明
通过参考附图,可更好地理解本发明,并且本发明的许多目标、特征和优点对于本领域技术人员变得显而易见。
图1示出包括一个处理核心和多级存储器系统的处理系统的功能框图。
图2示出包括多级存储器系统的多核心处理系统的功能框图。
图3示出图2的多核心处理系统的另一个功能框图,其示出请求和数据流。
图4示出由图1或图2的处理核心始发的存储器请求的存储器系统事件的序列和相关联的等待时间。
图5示出用于由图2的多核心处理系统发出推测性DRAM读取请求的示例性信息和控制流。
图6示出用于监测图2的多核心处理系统的推测性DRAM读取流量和推测性DRAM读取的准确性的示例性信息和控制流。
图7示出包括在图2的多核心处理系统中的推测性DRAM读取活动控制器的状态机图。
图8示出用于监测图2的处理核心集群的推测性DRAM读取流量和推测性DRAM读取请求的准确性的示例性信息和控制流。
图9示出与本发明的至少一个实施方案一致的图2的多核心处理系统中的基于预取器的推测性DRAM读取控制的状态图。
在不同附图中使用相同附图标号来指示类似或相同项。
具体实施方式
一种用于减小末级高速缓存(例如,三级高速缓存)的未命中等待时间的技术包括发出推测性DRAM读取请求(即,推测性存储器读取请求)。所述技术在实际需求读取请求之前推测性地向主存储器发出DRAM读取请求,以减少平均末级高速缓存未命中等待时间。尽管推测性DRAM读取请求增加系统的每周期指令,但是在执行时,常规的推测性DRAM读取请求可通过增加主存储器接口处的拥塞而对系统性能产生不利影响。因此,常规的推测性DRAM读取请求可能增加而不是减少存储器系统等待时间。随着系统中执行线程的数量增加,共享的末级高速缓存未命中由于争用增加而增加,从而增加存储器系统访问等待时间。
图2和图3示出包括如下处理器集群的多核心处理系统200:分别包括处理核心202、处理核心204、处理核心206和处理核心208的处理器102、处理器104、处理器106和处理器108。每个处理核心可同时执行至少两个线程,包括专用拆分的一级高速缓存(即,拆分成指令高速缓存和数据高速缓存的一级高速缓存)以及对应的专用统一的二级缓存。处理器集群中的处理器102、处理器104、处理器106和处理器108共享三级高速缓存(例如,8MB),所述三级缓存被划分成缓存片218、缓存片220、缓存片224和缓存片226(例如,2MB片)。二级高速缓存210、二级高速缓存212、二级高速缓存214和二级高速缓存216严格地包括对应的一级高速缓存,即,存在于对应的一级高速缓存中的所有行也存在于二级高速缓存中。然而,二级高速缓存大部分不包括三级高速缓存,即,大多数二级高速缓存行不存在于三级高速缓存中。三级高速缓存还将二级标签保持在阴影标签结构中,所述二级标签结构用于确定特定行是否存在于多核心处理系统200的处理器集群中的任何其他二级缓存中。
高速缓存互连230在二级高速缓存与三级高速缓存之间提供通信。集群互连240在三级高速缓存的高速缓存片218、高速缓存片220、高速缓存片224和高速缓存片226与主存储器114之间提供通信。存储器请求和相关联的数据通过集群互连240流动到主存储器114,并且响应通过集群互连240流动返回到三级高速缓存。例如,当存储器请求在二级高速缓存中未命中时,二级高速缓存控制器基于特定地址位将存储器请求发送到三级高速缓存的特定片。如果三级高速缓存的存储所述数据行的片导致三级高速缓存命中,则三级高速缓存将数据发送到请求的二级高速缓存。如果数据行不存在于三级高速缓存中(即,所述行未命中三级高速缓存),则三级高速缓存首先例如通过检查存储在三级高速缓存的阴影标签结构中的二级标签来确定所述行是否存在于处理器集群的其他二级高速缓存中的任一者中。如果所述数据行存在于任何其他核心的二级高速缓存中,则三级高速缓存从二级高速缓存到另一个二级高速缓存发起高速缓存到高速缓存传输,并且不会将所述请求发送到主存储器114。然而,如果数据行不存在于处理器集群的任何二级高速缓存中,则三级高速缓存控制器将所述存储器请求发送到主存储器114。通常,高速缓存到高速缓存传输是罕见的,但可当在在不同处理核心上执行的两个或更多个线程共享数据或指令时发生。
参考图4,时间线表示由处理核心发出的存储器请求的事件序列。指向右边的箭头表示从请求的核心到存储器系统的请求路径,并且指向左边的箭头表示从存储器系统到请求的核心的响应路径。每个箭头具有表示相关联时钟周期的量的相关联权重。响应于未命中,对应的控制器将请求传递到下一个高速缓存或存储器部件。服务存储器请求所需的总时间是对应于请求的核心的节点1与对应于包含所请求数据的存储器系统的第一级的节点之间的闭环的所有边缘之和,即从请求的核心到存储所请求数据行的存储器级别的总等待时间,以及从所述存储器级别返回到请求的核心的响应。等待时间是在存储控制器或互连网络中缺少其他冲突或拥塞的情况下的最小等待时间。例如,从节点3到节点5的等待时间是a3+a4个时钟周期的最小值,这是在检测到二级高速缓存中的未命中到存储器请求在预期到三级高速缓存和处理器集群的其他二级高速缓存中的未命中时被发送到主存储器之间的等待时间。
系统分析(例如,使用SPECint基准程序集)指示平均而言,当单个线程使用整个三级高速缓存在处理核心集群上运行时,未命中二级高速缓存的大多数(例如,54%)存储器请求也未命中三级高速缓存。当多个线程同时执行共享三级高速缓存时,所述未命中率增加。例如,当八个线程执行SPECint基准程序集时,70%的二级高速缓存未命中也未命中三级高速缓存,并且未命中处理器集群中的其他二级高速缓存。主存储器114必须服务所有那些存储器请求,并且将在三级高速缓存中引起额外的等待时间。所述惩罚随着三级高速缓存控制器处的拥塞量增加而增加。
因此,二级高速缓存存储器控制器实现推测性DRAM读取请求以减少存储器等待时间。参考图2、图3和图5,倒数第二级(例如,二级)高速缓存控制器从前一级(例如,一级)高速缓存控制器接收存储器请求。那些接收的存储器请求可以是由对应的处理核心中的预取逻辑生成的预取请求,或者可以是来自对应的处理核心的核心需求请求。
如果目标数据行驻留在二级高速缓存中(即,命中二级高速缓存),则二级高速缓存提供存储器请求响应。如果所请求的数据行并未驻留在二级高速缓存中(即,未命中二级高速缓存)(402),则二级高速缓存控制器与将存储器请求转发到末级高速缓存(例如,三级高速缓存的对应片)并行地向主存储器114发出推测性DRAM读取请求(408)。如果存储器请求未命中三级高速缓存的对应片(404),则三级高速缓存控制器将存储器请求转发到集群互连240以确定所请求的数据行是否驻留在与处理核心集群中的另一个核心相关联的二级高速缓存中。如果所接收的存储器请求在处理核心集群中未命中(406),则三级高速缓存控制器将需求存储器请求(410)转发到主存储器114。从二级高速缓存直接发送到主存储器114(即,绕过三级高速缓存和集群互连240)的存储器请求被认为是推测性的,因为与命中三级高速缓存的推测性DRAM读取请求并行地发送的任何常规存储器请求不需要由主存储器114服务,从而使得不需要推测性DRAM读取请求。然而,推测性DRAM读取请求减少未命中三级高速缓存的存储器请求的等待时间,如上文关于图4所描述。
参考图2和图3,主存储器114类似于从三级高速缓存转发的存储器请求来处置推测性DRAM读取请求,并且从主存储器114读取对应的数据。然而,代替将推测性DRAM请求数据发送回到三级高速缓存,将推测性DRAM读取请求数据存储在主存储器114内部的本地缓冲区中。当核心需求请求到达主存储器114时,如果所述核心需求请求命中具有相同存储器地址的推测性DRAM请求,则存储器控制器从缓冲区发送响应数据。因此,需求请求由于减少的总存储器读取等待时间而受益于推测性DRAM读取请求。对应于需求请求的推测性DRAM读取请求被认为是改进系统性能的有益推测性DRAM读取请求。然而,如果未命中二级高速缓存的存储器请求命中三级缓存或处理核心集群,则不会将需求请求发送到存储器。针对此类存储器请求生成的推测性DRAM读取请求是无用的,并且被认为是有害推测性DRAM读取请求。由有害推测性DRAM读取请求读取的数据驻留在本地缓冲区中,并且最终来自其他推测性DRAM读取请求的数据覆写那些数据。
推测性DRAM请求策略将针对未命中二级高速缓存的所有存储器请求的推测性DRAM读取请求发送到主存储器114。尽管有益推测性DRAM读取请求改进性能,但是有害推测性DRAM读取请求不必要地使本地缓冲区填充有数据。在推测性DRAM请求被有害推测性DRAM读取请求延迟之后发出的核心需求请求使系统减慢。当单个线程在处理核心集群中执行时,有害推测性DRAM读取请求不会使系统性能显著降低。然而,随着在处理核心集群上执行的线程数量增加,网络和存储器系统成为瓶颈,并且有害推测性DRAM读取请求使系统性能显著降低。因此,有害推测性DRAM读取请求干扰其他存储器请求,浪费带宽,使总体系统性能降低并且增加功耗。因此,有害推测性DRAM读取请求的减少将改进推测性DRAM请求准确性、总体系统性能,并且降低功耗。
在至少一个实施方案中,倒数第二级高速缓存控制器实现推测性DRAM请求策略,所述推测性DRAM请求策略控制推测性DRAM读取请求流量和准确性以改进系统性能。所述策略智能地调整由二级高速缓存控制器发出的推测性DRAM读取请求的数量。所述策略改进推测性DRAM读取请求的质量,并且通过末级高速缓存中对应的命中数量来测量推测性DRAM读取请求的准确性(即,质量或有效性)。周期性地,倒数第二级高速缓存控制器将请求率计数器和命中率计数器与对应的预定阈值进行比较。预定阈值可在BIOS或其他系统初始化序列期间被配置。如果计数器中的任一者超过其对应的预定阈值,则倒数第二级高速缓存控制器确定推测性DRAM读取请求对于添加到存储器争用或具有低准确性无效。倒数第二级高速缓存控制器抑制推测性DRAM读取请求的发出,直到每个计数器低于对应的预定阈值为止。倒数第二级高速缓存控制器跟踪需求请求的推测性DRAM读取请求流量和未实现的推测性DRAM读取请求(即,如果推测性DRAM读取请求被启用,则倒数第二级高速缓存控制器将已发出的推测性DRAM读取请求)的准确性,以确定存储器争用和/或准确性问题是否已被解决。一旦这两个问题被解决,倒数第二级高速缓存控制器就恢复发出推测性DRAM读取请求。所述技术有效地减少了因不受控制推测性DRAM读取请求所致的系统性能降低。然而,在一些应用中,所述方案并未完全利用推测性DRAM读取请求。
每个二级高速缓存控制器保持用于二级高速缓存未命中和三级高速缓存未命中的计数器。这些计数器可包括在二级高速缓存或高速缓存互连230中。二级高速缓存控制器使用那些计数器来分别估计推测性DRAM请求率和推测性DRAM请求率准确性。二级高速缓存控制器使用来自三级高速缓存控制器的反馈来更新三级高速缓存未命中计数器,所述反馈与来自三级高速缓存的响应一起接收。二级高速缓存控制器评估由于不准确的推测性DRAM读取请求所致的干扰,并且相应地调整推测性DRAM读取请求的速率,从而改进推测性DRAM读取请求的准确性。
在处理核心集群与主存储器114之间的末级高速缓存控制器(或集群互连网络240)对推测性DRAM读取请求和通过其的需求请求进行计数以测量争用。参照图6,如果所接收的存储器请求未命中二级高速缓存(502),则集群互连网络240使对应的推测性DRAM读取请求流量计数器递增(504)。如果采样周期已结束(506),则倒数第二级高速缓存控制器将推测性DRAM读取请求流量计数器的内容与对应的预定阈值进行比较,使用比较的结果(508),并且重置计数器(510)。其间,如果倒数第二级高速缓存控制器从末级高速缓存(例如,三级高速缓存的片)接收到命中响应,则倒数第二级高速缓存控制器使末级高速缓存命中计数器递增(512)。如果采样周期已结束(506),则倒数第二级高速缓存控制器将末级高速缓存命中率计数器的内容与对应的预定阈值进行比较,使用比较的结果(508),并且重置末级高速缓存命中率计数器(510)。
参考图7,倒数第二级高速缓存控制器使用比较信息。预定阈值指示推测性DRAM读取请求率和末级高速缓存命中率的许用值。如果处理系统处于启用推测性DRAM读取请求的状态(602)并且两个计数器都低于对应的预定阈值(606),则高速缓存控制器继续发出推测性DRAM读取请求。如果计数器中的任一者超过对应的预定阈值(614),则高速缓存控制器禁用推测性DRAM读取请求(604)。在禁用推测性DRAM读取请求的同时,高速缓存控制器继续监测流量和准确性。如果计数器中的任一者超过对应的预定阈值,则推测性DRAM读取请求保持禁用(610)。然而,当计数器中的每一个的值低于对应的第二预定阈值(例如,值低于对应的预定阈值的一半)(612)时,则倒数第二级高速缓存控制器启用推测性DRAM读取请求(602)。
参考图2和图3,在至少一个实施方案中,集群互连240监测从处理核心集群中的任何处理核心发送到主存储器114的推测性DRAM读取请求的总数量。所述信息可被反馈回到对应的倒数第二级高速缓存控制器,所述倒数第二级高速缓存控制器可使用所述信息来调整预定阈值水平。例如,参考图8,集群互连240从集群的所有处理核心接收推测性DRAM读取请求,并且针对每个所接收的推测性DRAM读取请求使集群级推测性DRAM读取请求率计数器递增(702)。如果采样周期已结束(704),则集群互连240将集群级推测性DRAM读取请求率计数器值与预定集群级请求率阈值进行比较(706)。如果集群级推测性DRAM读取请求率计数器值超过预定集群级请求率阈值,则集群互连240向一个或多个核心高速缓存控制器发送信号以减小请求率阈值。如果集群级请求率计数值低于预定阈值(或第二预定集群级请求率阈值,其可基于预定阈值单独地存储或生成),则集群互连240向三级高速缓存的对应片的高速缓存控制器发送信号以放宽对应的推测性DRAM读取请求率阈值。在发送适当信号之后,集群互连240重置集群级推测性DRAM读取请求率计数器(708)。尽管上述策略对于在核心集群上执行一个线程表现良好,但是针对在核心集群上执行的多个线程生成的额外流量使系统性能降低并且致使每周期指令大量丢失。随着处理核心集群的推测性DRAM读取请求流量的增加,阈值水平可变得更加严格,从而使推测性DRAM读取请求注入的速率降低到更低水平。随着处理核心集群的推测性DRAM读取请求流量的减少,高速缓存控制器可放宽阈值水平。
用于控制推测性DRAM读取请求的流的智能策略可改进推测性DRAM读取请求的性能。仅发出将在末级高速缓存中未命中的推测性DRAM读取请求的推测性DRAM请求策略可针对推测性DRAM读取请求保持100%准确性,并且不会在主存储器114处形成任何浪费的流量。然而,倒数第二级高速缓存控制器无法100%准确地预测哪些存储器请求将命中末级高速缓存。需求存储器请求优先于推测性DRAM读取请求可使有益推测性DRAM读取请求延迟并且降低其有效性。注意,甚至有益推测性DRAM读取请求在一些情况下也是有害的。例如,如果存储器密集型线程与计算密集型线程同时执行,则来自存储器密集型线程的有益推测性DRAM读取请求可使来自计算密集型线程的需求存储器请求延迟。推测性DRAM读取请求可对存储器密集型线程提供了轻微改进,但也可致使计算密集型线程的性能显著降低。
处理核心202、处理核心204、处理核心206和处理核心208生成大量的预取请求,以提前将数据从主存储器114加载到高速缓存中以便减少高速缓存未命中的数量。处理核心的预取器预测时间上靠近的应用程序将需要的缓存行,并且基于那些预测来生成预取数据读取请求。预取数据读取请求中的仅一些将有用的数据加载到高速缓存中。由于预取数据读取请求先于实际核心需求请求,因此用推测性DRAM读取请求加快二级预取响应可能不会减少等待时间。因此,优先核心需求请求以用于发出推测性DRAM读取请求可由于推测性DRAM读取请求而限制存储器系统处的额外流量。每个二级高速缓存控制器在整个执行期间调节推测性DRAM读取请求的流并且改进推测性DRAM读取请求的准确性,从而改进总体系统性能。然而,通过长时间禁用推测性DRAM读取请求,系统无法在那些周期期间提取任何性能益处。此外,推测性DRAM读取请求的性能取决于预定阈值的选择,这需要大量的应用程序特定的调整以适当地控制推测性DRAM读取请求的速率。通过监测总体推测性DRAM读取请求流量,所述方案缺乏将有益推测性DRAM读取请求与有害推测性DRAM读取请求分开的能力。
基于预取器的推测性DRAM读取请求技术使用基于计数器的机制来智能地控制将推测性DRAM读取请求注入到存储器系统中,以监测上述推测性DRAM读取流量和准确性。然而,基于预取器的推测性DRAM读取请求技术实施选择性方法来将推测性DRAM读取请求注入到系统中。在基于预取器的推测性DRAM读取请求技术的至少一个实施方案中,如果倒数第二级高速缓存控制器确定推测性DRAM读取请求的末级高速缓存中的请求率或命中率中的至少一者超过对应的预定阈值,则倒数第二级高速缓存控制器首先抑制针对预取的推测性DRAM读取请求。通常,预取在其要求之前发出,并且使用推测性DRAM读取请求来减少其等待时间可能不会提供任何另外的益处。此外,如上所讨论,并非所有预取都是有用的,并且发出推测性DRAM读取请求使存储器争用增加。因此,基于预取器的推测性DRAM读取请求技术首先过滤掉不必要的流量,从而改进推测性DRAM读取请求准确性。上述基于计数器的机制监测推测性DRAM读取请求率和末级高速缓存命中率。当倒数第二级高速缓存控制器检测到推测性DRAM读取请求率或末级高速缓存命中率超过对应的预定阈值时,倒数第二级高速缓存控制器禁用发出预取推测性DRAM读取请求,这显著减少推测性DRAM读取流量。此外,如果预取命中末级高速缓存,则过滤预取推测性DRAM读取请求也改进推测性DRAM读取请求的准确性。因此,选择性技术允许系统提取针对关键核心需求请求的推测性DRAM读取请求的性能益处,并且不会使存储器系统充斥有过量的推测性DRAM读取请求。
在禁用预取推测性DRAM读取请求之后,选择性技术响应于发生另外的阈值违反而禁用剩余已启用的推测性DRAM读取请求(即,核心需求推测性DRAM读取请求)。当倒数第二级高速缓存控制器恢复发出推测性DRAM读取请求时,它首先针对核心需求请求启用推测性DRAM读取请求。如果倒数第二级高速缓存控制器确定系统能够处置完整的推测性DRAM读取流量,则倒数第二级高速缓存控制器也针对预取请求启用推测性DRAM读取请求。
在至少一个实施方案中,基于预取器的推测性DRAM读取请求技术响应于流量(例如,请求率)和准确性(例如,末级高速缓存命中率)的预定阈值违反而按照以下序列选择性地启用推测性DRAM读取请求:
1.如果推测性DRAM读取请求准确性或推测性DRAM读取请求率违反对应的预定阈值,则高速缓存控制器首先禁用针对预取的推测性DRAM读取请求;并且
2.如果仅禁用针对预取的推测性DRAM读取请求,并且推测性DRAM读取请求准确性或推测性DRAM读取请求率违反对应的预定阈值,则高速缓存控制器将禁用所有推测性DRAM读取请求。
选择性技术按照以下阶段恢复推测性DRAM读取请求:
1.如果所有推测性DRAM读取请求均被禁用并且推测性DRAM读取请求准确性在第二目标范围内,则高速缓存控制器仅针对核心需求请求启用推测性DRAM读取请求。针对预取的推测性DRAM读取请求保持禁用。
2.如果仅启用核心需求推测性DRAM读取请求并且推测性DRAM读取流量和推测性DRAM读取请求准确性在第二目标范围内,则控制器将针对倒数第二级高速缓存中的所有未命中启用推测性DRAM读取请求。
参考图9,在基于预取器的推测性DRAM读取请求技术的实施方案中,倒数第二级高速缓存控制器(例如,二级高速缓存控制器)监测推测性DRAM读取请求并且周期性地将由请求率计数器和末级高速缓存命中率计数器生成的信息与可在BIOS或其他系统初始化序列期间配置的对应预定阈值进行比较。预定阈值指示推测性DRAM读取请求率(例如,倒数第二级高速缓存的未命中率)和准确性(例如,末级高速缓存中的命中率)的许用值。如果系统处于启用两种类型的推测性DRAM读取请求的状态(902)并且流量计数器值和准确性计数器值低于对应的预定阈值(908),则高速缓存控制器继续发出针对预取和核心需求请求两者的推测性DRAM读取请求。如果计数器中的任一者超过对应的预定阈值(910),则高速缓存控制器禁用预取推测性DRAM读取请求(904)。在禁用预取推测性DRAM读取请求并且启用核心需求推测性DRAM读取请求的同时,高速缓存控制器继续监测流量和准确性。如果计数器中的任一者超过对应的预定阈值(912),则推测性DRAM读取请求保持禁用,并且高速缓存控制器进一步禁用核心需求推测性DRAM读取请求(906)。然而,当计数器中的每一个的值低于对应的第二预定阈值(916)时,则高速缓存控制器再次启用核心需求推测性DRAM读取请求(904)。第二预定阈值可基于第一预定阈值单独地存储或生成。第二预定阈值可比第一预定阈值更加严格(例如,对应预定阈值的一半)。如果计数器值中的每一个保持低于对应的预定阈值至少一个周期(918),则预取推测性DRAM读取请求保持禁用,而核心推测性DRAM读取请求保持启用(904)。然而,一旦两个计数器值都下降到低于对应的第二预定阈值(例如,对应预定阈值的1/2)(920),倒数第二级高速缓存控制器就再次启用预取推测性DRAM读取请求(902)。需注意,尽管所述技术被描述为在状态902中起动处理系统,但是其他实施方案在启用核心需求推测性DRAM读取请求和禁用预取推测性DRAM读取请求的状态904中或者在禁用核心需求推测性DRAM读取请求和禁用预取推测性DRAM读取请求的状态906中起动处理系统操作。
在基于预取器的推测性DRAM读取请求技术的至少一个实施方案中,如果条件912为真,但在转换到状态906之前,则倒数第二级缓存控制器在禁用针对预取的推测性DRAM读取请求之后,在状态904中收紧流量阈值和准确性阈值。相反地,如果满足条件920,但在启用针对预取的推测性DRAM读取请求之前,则倒数第二级缓存控制器在状态904中放宽流量阈值和准确性阈值。在基于预取器的推测性DRAM读取请求技术的至少一个实施方案中,来自集群互连240的集群级反馈致使倒数第二级高速缓存控制器将阈值调整为更加严格,并且各个核心可更早地违反阈值,从而根据需要致使集群中的处理核心的倒数第二级高速缓存控制器基于每核心抑制预取推测性DRAM读取请求。在基于预取器的推测性DRAM读取请求技术的其他实施方案中,集群级反馈致使集群中的所有处理核心同时禁用预取推测性级DRAM读取请求和/或核心需求推测级DRAM读取请求。
在基于预取器的推测性DRAM读取请求技术的至少一个实施方案中,推测性DRAM读取请求流量基于倒数第二级高速缓存中的未命中来量化,所述未命中包括对实际和未实现的推测性DRAM读取请求的计数并且与推测性DRAM读取请求阈值进行比较。未实现的推测性DRAM读取请求是在推测性DRAM读取请求由倒数第二级高速缓存控制器启用的情形下将已发出到存储器系统的推测性DRAM读取请求。在至少一个实施方案中,准确性基于三级高速缓存(即,末级高速缓存)中命中的计数来量化,并且将所述计数与三级高速缓存命中预定阈值进行比较。
选择性技术可通过减少存储器争用并且加快关键核心需求读取请求来显著改进性能。与上述策略相比,选择性技术减少系统不发出任何推测性DRAM读取请求的时段。通过首先抑制预取推测性DRAM读取请求(因为它们已经提前被发出到所述数据的核心需求),可从潜在的有害推测性DRAM读取请求中过滤有用的推测性DRAM读取请求。因此,倒数第二级高速缓存仅发出核心需求推测性DRAM读取请求,因此减少了不必要的存储器争用,从而改进每周期指令。
在上述基于预取器的推测性DRAM读取请求技术的实施方案中,推测性DRAM读取请求流量由推测性DRAM读取请求的计数指示,并且与推测性DRAM读取请求阈值进行比较,并且推测性DRAM读取请求准确性使用三级高速缓存(即,末级高速缓存)中命中的计数来量化,并且将所述计数与三级高速缓存命中预定阈值进行比较。然而,可使用推测性DRAM读取请求流量和推测性DRAM读取请求准确性的其他指示符。例如,其他实施方案跟踪缓冲区中的推测性请求,并且在末级高速缓存中使用对应的命中率用于获得准确性。
本文所阐述的本发明的描述是说明性的,并且并不意图限制如以下权利要求中阐述的本发明的范围。例如,虽然在存储器系统包括三个级别的高速缓存和主存储器的实施方案中描述了本发明,但是本领域技术人员应了解,本文的教导可与具有其他层次结构的存储器系统一起使用。此外,尽管在主存储器114是DRAM的实施方案中描述了本发明,但本领域技术人员应了解,本文的教导可与包括其他存储器类型(例如,SRAM、相变存储器、忆阻器或其他存储器类型)的主存储器一起使用。在不脱离如以下权利要求中阐述的本发明的范围的情况下,可基于本文所阐述的描述来对本文所公开的实施方案作出变化和修改。
Claims (17)
1.一种用于减少存储器系统的存储器访问等待时间的方法,其包括:
监测从倒数第二级高速缓存到主存储器的推测性存储器读取请求的请求率,所述推测性存储器读取请求对应于所述倒数第二级高速缓存中未命中的数据读取请求,所述推测性存储器读取请求中的每一个是核心需求推测性存储器读取请求或预取推测性存储器读取请求,并且所述数据读取请求中的每一个是核心需求数据读取请求或预取数据读取请求;
监测针对由所述数据读取请求所请求的数据搜索末级高速缓存的命中率,所述推测性存储器读取请求中的每一个与针对对应数据搜索所述末级高速缓存并行地发出;
基于所述请求率和所述命中率,与针对对应的核心需求数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的核心需求推测性存储器读取请求;以及
基于所述请求率和所述命中率,与针对对应的预取数据读取请求的数据搜索所述末级高速缓存并行地选择性地启用到所述主存储器的预取推测性存储器读取请求。
2.如权利要求1所述的方法,
其中响应于启用所述核心需求推测性存储器读取请求,启用所述预取推测性存储器读取请求,并且所述请求率大于预定请求率阈值或所述命中率大于预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括启用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括禁用所述预取推测性存储器读取请求。
3.如权利要求2所述的方法,
其中响应于启用所述核心需求推测性存储器读取请求,禁用所述预取推测性存储器读取请求,所述请求率小于第二预定请求率阈值,并且所述命中率小于第二预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括启用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括启用所述预取推测性存储器读取请求,并且
其中所述第二预定请求率阈值小于所述预定请求率阈值,并且所述第二预定命中率阈值小于所述预定命中率阈值。
4.如权利要求1所述的方法,
其中响应于启用所述核心需求推测性存储器读取请求并且禁用所述预取推测性存储器读取请求,并且所述请求率大于预定请求率阈值或所述命中率大于预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括禁用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括禁用所述预取推测性存储器读取请求。
5.如权利要求4所述的方法,
其中响应于禁用所述核心需求推测性存储器读取请求并且禁用所述预取推测性存储器读取请求,所述请求率小于第二预定请求率阈值,并且所述命中率小于第二预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括启用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括禁用所述预取推测性存储器读取请求,并且
其中所述第二预定请求率阈值小于所述预定请求率阈值,并且所述第二预定命中率阈值小于所述预定命中率阈值。
6.如权利要求1所述的方法,
其中响应于启用所述核心需求推测性存储器读取请求,启用所述预取推测性存储器读取请求并且所述请求率小于预定请求率阈值,并且所述命中率小于预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括启用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括启用所述预取推测性存储器读取请求。
7.如权利要求1所述的方法,
其中响应于启用核心需求推测性存储器读取请求,禁用预取推测性存储器读取请求,所述请求率小于预定请求率阈值,并且所述命中率小于所述预定命中率阈值,所述选择性地启用核心需求推测性存储器读取请求包括启用核心需求推测性存储器读取请求,并且所述选择性地启用预取推测性存储器读取请求包括禁用预取推测性存储器读取请求。
8.如权利要求1所述的方法,
其中响应于禁用所述核心需求推测性存储器读取请求,禁用所述预取推测性存储器读取请求,所述请求率小于预定请求率阈值,并且所述命中率小于预定命中率阈值,所述选择性地启用所述核心需求推测性存储器读取请求包括禁用所述核心需求推测性存储器读取请求,并且所述选择性地启用所述预取推测性存储器读取请求包括禁用所述预取推测性存储器读取请求。
9.如权利要求1、2、3、4、5、6、7或8所述的方法,其还包括:
监测耦合到所述主存储器的多个倒数第二级高速缓存的集群级请求率;以及
监测针对由所述多个倒数第二级高速缓存中未命中的数据读取请求所请求的数据搜索共享末级高速缓存的集群级命中率,
其中所述选择性地启用所述核心需求推测性存储器读取请求进一步基于所述集群级请求率和所述集群级命中率,并且
其中所述选择性地启用所述预取推测性存储器读取请求进一步基于所述集群级请求率和所述集群级命中率。
10.如权利要求9所述的方法,其还包括:
分别基于所述集群级请求率或所述集群级命中率,调整预定请求率阈值或预定命中率阈值,
其中所述选择性地启用所述核心需求推测性存储器读取请求进一步基于所述预定请求率阈值和所述预定命中率阈值,并且
其中所述选择性地启用所述预取推测性存储器读取请求进一步基于所述预定请求率阈值和所述预定命中率阈值。
11.如权利要求中1、2、3、4、5、6、7或8所述的方法,其中所述推测性存储器读取请求中的每一个是与所述搜索并行地发出的实际推测性存储器读取请求或未实现的推测性存储器读取请求。
12.一种存储器系统,其包括:
倒数第二级高速缓存;
末级高速缓存;
主存储器;
第一计数器,所述第一计数器被配置为存储从所述倒数第二级高速缓存到所述主存储器的推测性存储器读取请求的请求率,所述推测性存储器读取请求中的每一个响应于所述倒数第二级高速缓存中对应的数据读取请求的未命中;
第二计数器,所述第二计数器被配置为存储针对所述倒数第二级高速缓存中未命中的数据读取请求的数据搜索所述末级高速缓存的命中率的指示符,以及
控制器,所述控制器与所述倒数第二级高速缓存相关联,所述控制器被配置为:
基于所述请求率、所述命中率、预定请求率阈值和预定命中率阈值,与所述搜索并行地选择性地启用到所述主存储器的核心需求推测性存储器读取请求;并且
基于所述请求率、所述命中率、所述预定请求率阈值和所述预定命中率阈值,与所述搜索并行地选择性地启用到所述主存储器的预取推测性存储器读取请求,
其中所述推测性存储器读取请求中的每一个是核心需求推测性存储器读取请求或预取推测性存储器读取请求。
13.如权利要求中12所述的存储器系统,其中所述控制器被配置为响应于所述倒数第二级高速缓存中的每个未命中而使所述第一计数器递增,响应于所述末级高速缓存中的每个命中而使所述第二计数器递增,并且周期性地重置所述第一计数器和所述第二计数器。
14.如权利要求12所述的存储器系统,
其中针对核心需求数据读取请求选择性地启用所述核心需求推测性存储器读取请求进一步基于第二预定请求率阈值和第二预定命中率阈值,并且
其中选择性地启用预取推测性存储器读取请求进一步基于第二预定请求率阈值和第二预定命中率阈值。
15.如权利要求12所述的存储器系统,其还包括:
集群互连结构,所述集群互连结构耦合在所述末级高速缓存与所述主存储器之间,所述集群互连结构包括:
第三计数器,所述第三计数器被配置为与针对对应的倒数第二级高速缓存中未命中的数据读取请求的所请求数据搜索所述末级高速缓存并行地存储从核心集群中的任何倒数第二级高速缓存到所述主存储器的推测性存储器读取请求的集群级请求率,所述末级高速缓存由所述核心集群中的所述核心共享;
第四计数器,所述第四计数器被配置为针对对应的倒数第二级高速缓冲存储器中未命中的数据读取请求,将所述推测性存储器读取请求的集群级命中率的指示符存储在所述末级高速缓存中。
16.如权利要求12所述的存储器系统,其还包括:
其中所述第一计数器和所述第二计数器与在核心集群中的核心上执行的第一线程相关联,并且
其中所述存储器系统还包括:
第三计数器,所述第三计数器与在所述核心上执行的第二线程相关联并且被配置为存储从所述倒数第二级高速缓冲存储器到所述主存储器的针对所述第二线程的推测性存储器读取请求的请求率,针对所述第二线程的所述推测性存储器读取请求中的每一个响应于所述倒数第二级高速缓存中所述第二线程的对应的数据读取请求的未命中;以及
第四计数器,所述第四计数器与在所述核心上执行的所述第二线程相关联并且被配置为存储针对所述倒数第二级缓冲存储器中未命中的所述第二线程的数据读取请求搜索所述末级高速缓存的命中率的指示符。
17.如权利要求12、13、14、15或16所述的存储器系统,
其中所述推测性存储器读取请求包括与所述搜索所述末级高速缓存并行地发出的实际推测性存储器读取请求以及未实现的推测性存储器读取请求,并且
其中所述命中率是基于所述末级高速缓存中所述搜索的命中数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/925,859 | 2018-03-20 | ||
US15/925,859 US10613983B2 (en) | 2018-03-20 | 2018-03-20 | Prefetcher based speculative dynamic random-access memory read request technique |
PCT/US2019/019766 WO2019182733A1 (en) | 2018-03-20 | 2019-02-27 | Prefetcher based speculative dynamic random-access memory read request technique |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111837110A true CN111837110A (zh) | 2020-10-27 |
CN111837110B CN111837110B (zh) | 2022-04-05 |
Family
ID=67985065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980018182.6A Active CN111837110B (zh) | 2018-03-20 | 2019-02-27 | 一种用于减少存储器系统的存储器访问等待时间的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10613983B2 (zh) |
EP (1) | EP3769226B1 (zh) |
JP (1) | JP6855642B1 (zh) |
KR (1) | KR102231190B1 (zh) |
CN (1) | CN111837110B (zh) |
WO (1) | WO2019182733A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231243A (zh) * | 2020-10-29 | 2021-01-15 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN112540933A (zh) * | 2020-11-26 | 2021-03-23 | 华云数据控股集团有限公司 | 缓存读写方法、装置及电子设备 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534540B2 (en) * | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
US10657057B2 (en) * | 2018-04-04 | 2020-05-19 | Nxp B.V. | Secure speculative instruction execution in a data processing system |
CN110830535B (zh) * | 2018-08-10 | 2021-03-02 | 网宿科技股份有限公司 | 一种超热文件的处理方法、负载均衡设备及下载服务器 |
US10909039B2 (en) * | 2019-03-15 | 2021-02-02 | Intel Corporation | Data prefetching for graphics data processing |
KR20200119059A (ko) | 2019-04-09 | 2020-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200132047A (ko) * | 2019-05-15 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치 |
KR20210011176A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 액세스 동작 방법 및 장치 |
US11237973B2 (en) | 2019-04-09 | 2022-02-01 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20210011216A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 메타 데이터 관리 방법 및 장치 |
KR20210011201A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
KR20210014338A (ko) | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법 |
US11409643B2 (en) | 2019-11-06 | 2022-08-09 | Honeywell International Inc | Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor |
KR20220117747A (ko) * | 2021-02-17 | 2022-08-24 | 삼성전자주식회사 | 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법 |
US20240111420A1 (en) * | 2022-09-29 | 2024-04-04 | Advanced Micro Devices, Inc. | Speculative dram request enabling and disabling |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090024835A1 (en) * | 2007-07-19 | 2009-01-22 | Fertig Michael K | Speculative memory prefetch |
US20090106498A1 (en) * | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
US20090150622A1 (en) * | 2007-12-10 | 2009-06-11 | International Business Machines Corporation | System and method for handling data requests |
CN101689147A (zh) * | 2007-07-10 | 2010-03-31 | 高通股份有限公司 | 数据预取调节 |
US20110078380A1 (en) * | 2009-09-29 | 2011-03-31 | Alexander Gendler | Multi-level cache prefetch |
US20140089592A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with speculative read engine |
US20150089157A1 (en) * | 2007-09-28 | 2015-03-26 | Arm Finance Overseas Limited | Speculative read in a cache coherent microprocessor |
US20180004670A1 (en) * | 2016-06-29 | 2018-01-04 | Oracle International Corporation | Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622222B2 (en) | 2001-04-26 | 2003-09-16 | International Business Machines Corporation | Sequencing data on a shared data bus via a memory buffer to prevent data overlap during multiple memory read operations |
US7051195B2 (en) | 2001-10-26 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset |
US7890738B2 (en) | 2005-01-20 | 2011-02-15 | International Business Machines Corporation | Method and logical apparatus for managing processing system resource use for speculative execution |
US20080028150A1 (en) | 2006-07-28 | 2008-01-31 | Farnaz Toussi | Autonomic Mode Switching for L2 Cache Speculative Accesses Based on L1 Cache Hit Rate |
US20080147977A1 (en) | 2006-07-28 | 2008-06-19 | International Business Machines Corporation | Design structure for autonomic mode switching for l2 cache speculative accesses based on l1 cache hit rate |
US7937533B2 (en) | 2007-12-10 | 2011-05-03 | International Business Machines Corporation | Structure for handling data requests |
US8032713B2 (en) | 2007-12-10 | 2011-10-04 | International Business Machines Corporation | Structure for handling data access |
US9053031B2 (en) | 2007-12-10 | 2015-06-09 | International Business Machines Corporation | System and method for handling data access |
US8443151B2 (en) * | 2009-11-09 | 2013-05-14 | Intel Corporation | Prefetch optimization in shared resource multi-core systems |
US8838906B2 (en) | 2010-01-08 | 2014-09-16 | International Business Machines Corporation | Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution |
US9009414B2 (en) | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
US9836304B2 (en) | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
KR101629879B1 (ko) * | 2012-02-06 | 2016-06-13 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 캐시 사용 기반 어댑티브 스케줄링을 가지는 멀티코어 컴퓨터 시스템 |
US9098418B2 (en) * | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
US9507596B2 (en) | 2014-08-28 | 2016-11-29 | Intel Corporation | Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources |
US10496410B2 (en) | 2014-12-23 | 2019-12-03 | Intel Corporation | Instruction and logic for suppression of hardware prefetchers |
US10180905B1 (en) * | 2016-04-07 | 2019-01-15 | Apple Inc. | Unified prefetch circuit for multi-level caches |
US10430349B2 (en) * | 2016-06-13 | 2019-10-01 | Advanced Micro Devices, Inc. | Scaled set dueling for cache replacement policies |
US9886385B1 (en) * | 2016-08-25 | 2018-02-06 | Apple Inc. | Content-directed prefetch circuit with quality filtering |
US10657059B2 (en) * | 2017-09-12 | 2020-05-19 | International Business Machines Corporation | Controlling a rate of prefetching based on bus bandwidth |
US10606752B2 (en) * | 2017-11-06 | 2020-03-31 | Samsung Electronics Co., Ltd. | Coordinated cache management policy for an exclusive cache hierarchy |
-
2018
- 2018-03-20 US US15/925,859 patent/US10613983B2/en active Active
-
2019
- 2019-02-27 EP EP19772169.9A patent/EP3769226B1/en active Active
- 2019-02-27 WO PCT/US2019/019766 patent/WO2019182733A1/en unknown
- 2019-02-27 JP JP2020549639A patent/JP6855642B1/ja active Active
- 2019-02-27 CN CN201980018182.6A patent/CN111837110B/zh active Active
- 2019-02-27 KR KR1020207029359A patent/KR102231190B1/ko active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689147A (zh) * | 2007-07-10 | 2010-03-31 | 高通股份有限公司 | 数据预取调节 |
US20090024835A1 (en) * | 2007-07-19 | 2009-01-22 | Fertig Michael K | Speculative memory prefetch |
US20150089157A1 (en) * | 2007-09-28 | 2015-03-26 | Arm Finance Overseas Limited | Speculative read in a cache coherent microprocessor |
US20090106498A1 (en) * | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
US20090150622A1 (en) * | 2007-12-10 | 2009-06-11 | International Business Machines Corporation | System and method for handling data requests |
US20110078380A1 (en) * | 2009-09-29 | 2011-03-31 | Alexander Gendler | Multi-level cache prefetch |
US20140089592A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with speculative read engine |
US20180004670A1 (en) * | 2016-06-29 | 2018-01-04 | Oracle International Corporation | Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231243A (zh) * | 2020-10-29 | 2021-01-15 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN112231243B (zh) * | 2020-10-29 | 2023-04-07 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN112540933A (zh) * | 2020-11-26 | 2021-03-23 | 华云数据控股集团有限公司 | 缓存读写方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3769226B1 (en) | 2023-01-11 |
CN111837110B (zh) | 2022-04-05 |
KR102231190B1 (ko) | 2021-03-23 |
JP6855642B1 (ja) | 2021-04-07 |
WO2019182733A1 (en) | 2019-09-26 |
EP3769226A1 (en) | 2021-01-27 |
JP2021510886A (ja) | 2021-04-30 |
EP3769226A4 (en) | 2021-12-22 |
KR20200123844A (ko) | 2020-10-30 |
US20190294546A1 (en) | 2019-09-26 |
US10613983B2 (en) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111837110B (zh) | 一种用于减少存储器系统的存储器访问等待时间的方法和装置 | |
US20190004916A1 (en) | Profiling asynchronous events resulting from the execution of software at code region granularity | |
US7246205B2 (en) | Software controlled dynamic push cache | |
US11675703B2 (en) | Memory request throttling to constrain memory bandwidth utilization | |
KR101902651B1 (ko) | 이용 트렌드에 기초한 다중 세트 그룹들 내의 통로에 의한 캐시 메모리의 동적 전력 공급 | |
US7958316B2 (en) | Dynamic adjustment of prefetch stream priority | |
JP5095820B2 (ja) | データプリフェッチスロットル | |
US8677071B2 (en) | Control of processor cache memory occupancy | |
US20110112798A1 (en) | Controlling performance/power by frequency control of the responding node | |
US20070239940A1 (en) | Adaptive prefetching | |
US20190042331A1 (en) | Power aware load balancing using a hardware queue manager | |
US9772958B2 (en) | Methods and apparatus to control generation of memory access requests | |
US9390010B2 (en) | Cache management | |
US9223701B2 (en) | Data processing apparatus and method for performing load-exclusive and store-exclusive operations | |
CN103235764B (zh) | 线程感知多核数据预取自调方法 | |
US8880809B2 (en) | Memory controller with inter-core interference detection | |
CN110869914B (zh) | 硬件预取器的基于利用率的节流 | |
US20130159739A1 (en) | Power Controller, Processor and Method of Power Management | |
US20240106782A1 (en) | Filtered Responses of Memory Operation Messages | |
CN116662219A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |