CN1601489A - 利用共享专用高速缓存减少高速缓存失误率的方法和系统 - Google Patents

利用共享专用高速缓存减少高速缓存失误率的方法和系统 Download PDF

Info

Publication number
CN1601489A
CN1601489A CN200410082689.3A CN200410082689A CN1601489A CN 1601489 A CN1601489 A CN 1601489A CN 200410082689 A CN200410082689 A CN 200410082689A CN 1601489 A CN1601489 A CN 1601489A
Authority
CN
China
Prior art keywords
cache
processor
fault rate
speed cache
request
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
Application number
CN200410082689.3A
Other languages
English (en)
Other versions
CN100345124C (zh
Inventor
戴维·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.)
IBM China Co Ltd
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1601489A publication Critical patent/CN1601489A/zh
Application granted granted Critical
Publication of CN100345124C publication Critical patent/CN100345124C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/6042Allocation of cache space to multiple users or processors

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

公开了用来减少高速缓存失误率的方法、系统以及介质。实施方式可以包含具有一或多个处理器的计算机系统并且每个处理器都与专用高速缓存耦合。实施方式根据处理器的负荷或者预期负荷,选择性地使能并实现对于专用高速缓存的高速缓存行的高速缓存重新分配方案。具体地将,高速缓存失误率监视器可以对每个处理器的高速缓存失误数目计数。高速缓存失误率比较器可以比较高速缓存失误率,以确定处理器的一或多个是否具有显著高于处理器模块内或者总体平均高速缓存失误率的高速缓存失误率。如果一或多个处理器具有显著较高的高速缓存失误率,则将来自这些处理器的高速缓存请求转发给具有较低高速缓存失误率并且具有最近最少使用的高速缓存行的专用高速缓存。

Description

利用共享专用高速缓存减少高速缓存失误率的方法和系统
技术领域
一般地讲,本发明涉及多处理器计算机系统。更具体地讲,本发明涉及减少对诸如专用高速缓存(cache)之类的高速存的处理器的高速缓存失误率(cache miss rate)的方法、系统以及介质。
背景技术
并行处理一般指并行地进行多个计算任务。传统上,并行处理需要多个计算机系统,每个计算机系统的资源专用于特定任务或者被分配来进行共同任务的一部分。例如,一个计算机系统可以专用于销售系统,另一个专用于营销系统,另一个专用于工资系统等等。
然而,计算机硬件与软件技术的近期进展已经产生了以下单一计算机系统:其通过将系统资源逻辑地分区给不同任务,能够进行高度复杂的并行处理。例如,在被逻辑分区(LPAR)的计算机系统,诸如处理器之类的可用系统资源在多个分区中分配,从而允许每个分区相互独立地运行。
多个处理器可以位于一或多个诸如对称多处理(SMP)模块之类的处理器模块上,这些模块一般包含至少两级高速缓存。存取高速缓存一般比主存储器快,高速缓存一般位于处理器模块之上或者在处理器之内。高速缓存作为缓冲器,用来保存最近使用的指令与数据,从而降低与每当需要指令和数据时都从主存储器收回指令和数据有关的延迟。更具体地讲,高速缓存一般通过保持来自主存储器的较经常被使用的存储器行(memory line)来运行。存储器行是主存储器的最小可读数据单位,例如8字节,并且高速缓存行(cache line)是高速缓存中的相应单位。实现高速缓存行来存储存储器行,以便不用每当使用存储器行时都要从主存储器中收回存储器行。
较经常使用的存储器行将被存储在高速缓存中,这是因为高速缓存一般小于主存储器。这一般通过以下方法完成:跟踪最近最少使用(least recentlyused,LRU)项或者高速缓存行,并且用以下存储器行替换LRU高速缓存行,该存储器行与不能由高速缓存的当前内容满足的最近高速缓存请求相关联。这样的请求一般被称为高速缓存失误,这是因为处理器向高速缓存发送了该请求,并且失去了从高速缓存收回存储器行内容的机会。
处理器可以包含一级(L1)高速缓存,用来保持(例如)来自主存储器的被反复存取的指令的拷贝,从而将存取主存储器的可能是千万个周期的延迟降低至存取高速缓存时的几个周期。然而L1高速缓存一般较小,因为在处理器中使用的面积较昂贵。
二级(L2)高速缓存通常位于处理器模块之上,其在物理上靠近处理器,提供相对于主存储器的存取来说显著减少了的延迟。L2高速缓存可以大于L1高速缓存,这是因为其对制造商较来说便宜,并且可以被配置来维护(例如)更多数目的最近使用的存储器行。
L2高速缓存可以实现为用于处理器模块中的多个处理器(more than onecomputer)的大型共享高速缓存,或者实现为用于该模块中每个处理器的独立的专用高速缓存。对于涉及存取大量存储器行的处理器负荷要求,大型共享高速缓存有利。例如,当处理器存取大型数据库时,可以反复存取大量存储器行。然而,如果L2高速缓存大小不足以保持大量反复被存取的存储器行,则首先被存取的存储器行将被覆盖,并且处理器可能必须再次向主存储器请求这些存储器行。由此,大型共享高速缓存有利于允许某些处理器在高速缓存中存储大量存储器行。
在另一方面,存取小型专用高速缓存比大型共享高速缓存涉及更小的延迟,这是因为小型专用L2高速缓存可以在物理上靠近生成请求的处理器。由此,当处理器反复存取少量存储器行并且专用高速缓存大小足以容纳该少量被反复存取的存储器行时,专用高速缓存是有利的。
因此,需要用来减少高速缓存失误率的方法、系统以及介质,最好根据各个处理器的实际的或者预期的负荷提供大型共享高速缓存与专用高速缓存两者的优点。
发明内容
一般来讲,本发明的实施方式提供了减少高速缓存失误率的方法、系统以及介质。一种实施方式提供一种用来减少对于多个处理器的高速缓存失误率的方法,其中该多个处理器与专用高速缓存耦合。一般来讲,该方法包含:确定多个处理器的高速缓存失误率;比较多个处理器的高速缓存失误率;以及根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从多个专用高速缓存中分配高速缓存行给该处理器。
另一种实施方式提供一种用来减少对于多个处理器的高速缓存失误率的方法,其中该多个处理器与专用高速缓存耦合。该方法包含:监视多个处理器的高速缓存失误率;比较多个处理器的高速缓存失误率,以确定与多个专用高速缓存中的第一专用高速缓存失误率相关联的第一处理器的高速缓存失误率何时超过对于多个处理器的门限高速缓存失误率;作为对确定高速缓存失误率超过门限高速缓存失误率的响应,将与第一处理器相关联的高速缓存请求转发给多个专用高速缓存中的第二专用高速缓存;将第二专用高速缓存中的高速缓存行替换为作为对高速缓存请求的响应而接收的存储器行;以及作为对来自第一处理器的指令的响应,存取该高速缓存行。
另一种实施方式提供一种用来减少对于多个处理器的高速缓存失误率的装置,其中该多个处理器与专用高速缓存耦合。一般来讲,该装置包含:高速缓存失误率监视器,用来确定多个处理器的高速缓存失误率;高速缓存失误率比较器,用来比较高速缓存失误率;以及高速缓存请求转发器,用来根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从多个专用高速缓存中分配高速缓存行给该处理器的高速缓存请求。
另一种实施方式提供一种用来减少高速缓存失误率的装置。一般来讲,该装置包含:发出高速缓存请求的多个处理器;多个专用高速缓存,每一个与多个处理器之一耦合;高速缓存失误率监视器,用来将高速缓存失误率与多个处理器的每一个相关联;高速缓存失误率比较器,用来确定何时至少一个高速缓存失误率超过门限值;以及高速缓存请求转发器,用来将来自多个处理器中与被确定超过门限值的高速缓存失误率相关联的处理器的高速缓存请求,转发给多个专用高速缓存中与多个处理器中的另一处理器相关联的专用高速缓存。
另一种实施方式提供一种用来减少高速缓存失误率的系统。该系统包含:包含与第一专用高速缓存耦合的第一处理器以及与第二专用高速缓存耦合的第二处理器的处理器模块;高速缓存失误率监视器,用来对与第一处理器以及第二处理器相关联的高速缓存失误计数;高速缓存失误率比较器,用来将与第一处理器相关联的高速缓存失误和与第二处理器相关联的高速缓存失误进行比较;以及高速缓存请求转发器,用来:当与第一专用高速缓存相关的、与第一处理器相关联的高速缓存失误数目超过与第二处理器相关联的高速缓存失误数目时,将来自第一处理器的高速缓存请求转发给第二专用高速缓存。
另一种实施方式提供一种包含程序的计算机可读介质,当该程序被执行时执行包含以下步骤的操作:确定多个处理器的高速缓存失误率;比较高速缓存失误率;以及根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从专用高速缓存中分配高速缓存行给该处理器。
另一种实施方式提供一种包含程序的计算机可读介质,当该程序被执行时执行包含以下步骤的操作:监视多个处理器的高速缓存失误率;比较多个处理器的高速缓存失误率,以确定与第一专用高速缓存失误率相关联的第一处理器的高速缓存失误率何时超过对于多个处理器的门限高速缓存失误率;作为对确定高速缓存失误率超过门限高速缓存失误率的响应,将与第一处理器相关联的高速缓存请求转发给第二专用高速缓存;将第二专用高速缓存中的高速缓存行替换为作为对高速缓存请求的响应而接收的存储器行;以及作为对来自第一处理器的指令的响应,存取该高速缓存行。
附图说明
为了详细地理解本发明的上述特征、优点以及目的,可以通过存照附图中所示的实施方式,获得对本发明进行更具体地描述。
然而,应该注意附图只是用来说明本发明的典型实施方式,因此不能认为是限定本发明的范围,因为本发明也允许等效实施方式。
图1为用来减少专用L2高速缓存的系统的实施方式。
图2显示用来减少与和多个处理器耦合的高速缓存相关的高速缓存失误率的、具有多个处理器的装置的例子。
图3显示用来减少高速缓存的高速缓存失误率的示范性方法的流程图。
具体实施方式
以下是对于在附图中示出的本发明实施方式的详细描述。这些实施方式是实例,并且其详细到足以用来清楚地揭示本发明。然而,所提供的细节的多少不是用来限制实施方式的预想变体,相反,本发明覆盖落入权利要求所限定的本发明的原理与范围内的所有修改、等效以及替换。以下的详细描述用来使这些实施方式对本领域技术人员能够实现。
一般而言,设想了用来减少高速缓存的高速缓存失误率的方法、系统以及介质。实施方式可以包含具有一或多个处理器的计算机系统,并且每个处理器可以与专用高速缓存耦合。实施方式根据处理器的负荷或者预期负荷,选择性地使能(enable)并实现对于专用高速缓存的高速缓存行的重新分配方案。具体地讲,某些实施方式可以包含高速缓存失误率监视器、高速缓存失误率比较器以及高速缓存请求转发器。高速缓存失误率监视器可以对每个处理器的高速缓存失误次数计数。高速缓存失误率比较器比较高速缓存失误率,以确定一或多个处理器是否具有比处理器模块内或总体平均高速缓存失误率明显较高的高速缓存失误率。如果一或多个处理器具有明显较高的高速缓存失误率,则高速缓存转发器将来自这些处理器的高速缓存请求转发给具有较低高速缓存失误率并且具有最近最少使用的高速缓存行的专用高速缓存。
高速缓存转发器可以根据与处理器相关的高速缓存失误率中的差,选择用于重新分配的最近最少使用的高速缓存行的数目。然后,高速缓存转发器将最近最少使用的高速缓存行替换为与来自具有较高高速缓存失误率的处理器的、到来请求相关联的存储器行的内容。与使用与处理器直接耦合的专用高速缓存相比,使用相邻的专用高速缓存的高速缓存行将涉及两到三倍的延迟,但是该延迟仍然显著小于存取主存储器所涉及的延迟。
在某些实施方式中,具有较高高速缓存失误率的处理器的高速缓存请求被赋予优先级,并且根据所赋予的优先级选择性地转发至具有较低高速缓存失误率的处理器的专用高速缓存。例如,与对要执行的指令或者执行指令的数据的高速缓存请求相比,意在修改存储器行的高速缓存请求可以具有较低的优先级,这是因为涉及对指令或者执行指令的数据的请求的延迟对于相应处理器的处理能力具有较大的影响。存取紧密耦合至处理器的专用高速缓存涉及较少延迟。类似地,预测的高速缓存请求可以收回可能不被使用的数据,从而进一步的实施方式将预测的高速缓存请求与较低优先级相关联。
在许多实施方式中,诸如操作系统之类的软件应用可以确定何时使能处理器的高速缓存重新分配方案。例如,操作系统可以维护先前被特性化的负荷,或者对于特定任务的高速缓存请求历史。当该历史指示任务需要大量存储器行或者通常引起大量高速缓存失误时,该软件应用可以使能所选择处理器的高速缓存重新分配方案。具体地讲,该软件应用可以与高速缓存请求转发器通信,以指示对于分配到该任务的处理器的高速缓存请求应该被转发到其他处理器的专用高速缓存。
在进一步的实施方式中,处理器可以维护用来指示任务的冷启动预热期何时已经结束的周期计数,并且与高速缓存失误率监视器结合以启动在冷启动预热期之后的高速缓存失误计数。软件可以设置指示何时向处理器分配新任务的位,每当处理器收到中断时,处理器可以用来重置冷启动计数。或者,处理器可以用来识别指示任务切换的指令序列。结果,在处理器的高速缓存失误率达到稳定状态之前,可以不将高速缓存请求转发给其他处理器的专用高速缓存。例如,当处理器开始新任务时,存储在专用高速缓存中的高速缓存行没有一个或者很少几个可以满足高速缓存请求。因此,对于任务的瞬态高速缓存失误率可能不同寻常地高,而该任务的稳态高速缓存失误率可能并不显著地高于所有处理器的平均高速缓存失误率。在确定每个处理器的高速缓存失误率之前等待多个周期将避免过早确定运行在处理器上的任务由于对额外高速缓存行的访问而会更有效地运行。
虽然以下描述将功能融入计算机系统中诸如具有四个处理器的处理器模块之类的特定硬件配置中的特定实施方式,但是本领域普通技术人员应该知道,本发发明的实施方式可以借助硬件或者软件有利地实现对于两个或更多个处理器的类似功能,从而有利地减少高速缓存失误率。更一般地讲,本发明的实施方式实现以下功能:允许处理器共享专用高速缓存的高速缓存行,以减少从主存储器存取存储器行所涉及的总体延迟。
本发明的一种实施方式实现为用于计算机系统的程序产品,该计算机系统例如图1所示的以下描述的系统100。该程序产品的(多个)程序定义了本实施方式的功能(包含此处所描述的方法),并且可以包含于各种信号承载介质之上。示范性的信号承载介质包含但不限于:(i)永久存储在不可写存储介质(例如计算机内的只读存储设备,诸如可由CD-ROM驱动器读取的CD-ROM盘片)上的信息;(ii)存储在可写存储介质(例如软盘驱动器中的软盘或者硬盘驱动器)上的可改动信息;以及(iii)通过通信介质(诸如通过计算机或电话网络,包含无线网络)传送给计算机的信息。后一种实施方式特别包含从因特网以及其他网络下载的信息。此类信号承载介质当承载引导本发明功能的计算机可读指令时表示本发明的实施方式。
一般地,执行用来实现本发明的例程可以是操作系统或者特定应用的一部分、组件、程序、模块、对象或者指令序列。本发明的计算机程序一般包含将由本地计算机翻译为计算机可读格式以及由此而得的可执行指令的大量指令。另外,程序包含或者驻留该程序本地或者在存储器中或者存储设备之上找到的变量与数据结构。另外,根据其在本发明特定实施方式中实现的应用,可以标识此后描述的各种程序。然而,应该理解此后的任何特定程序术语只是为方便的目的而使用,由此本发明不只限于由这些术语所标识和/或暗示的任何特定应用。
                        示范性系统
现在转到附图,图1显示处理器模块110至150中用来介绍高速缓存失误的系统100的实施方式。在这一实施方式中,减少高速缓存失误涉及:通过高速缓存行重新分配方案,减少诸如处理器112之类的处理器对专用二级(L2)高速缓存122的高速缓存失误,该高速缓存行重新分配方案允许任意选定的处理器在专用L2高速缓存122中存储高速缓存行,即使专用L2高速缓存122起初(或者缺省地)被分配为处理器112的专用高速缓存也如此。在一种运行模式下,该高速缓存重新分配方案将来自导致高速缓存失误的处理器的高速缓存请求转发到另一专用高速缓存的最近最少使用的高速缓存行。实际上,该高速缓存重新分配方案将专用L2高速缓存122-125呈现为较大的共享型“L2.5”高速缓存121。
在一种运行模式下,根据处理器正在执行的任务、在计算机系统上运行的应用、登录进入或者使用计算机系统的具体用户或者任务、应用、用户的使用历史,通过重新分配最近最少使用的高速缓存行给另一处理器,诸如软件191之类的软件应用可以实现高速缓存行重新分配方案。在进一步的运行模式下,作为对执行特定任务的特定处理器所实现的高速缓存失误次数的响应,软件或者硬件可以使能高速缓存行重新分配方案。例如,可以监视每个处理器的高速缓存失误率,并且当高速缓存失误率超过诸如高于其他处理器的平均高速缓存失误率的比率之类的门限率时,可以为该处理器使能高速缓存行重新分配方案。
不论哪种情况,系统100可以包含处理器模块110与150、背板总线185以及主存储器190。通过背板总线185,处理器模块110与150可以相互通信并与主存储器190通信。例如,当处理器产生高速缓存失误时,可以通过背板总线185将对于相应存储器行的请求传送到主存储器,并且该存储器行的内容可以通过背板总线185被返回至该处理器和/或该处理器的高速缓存。
处理器模块110与150可以包含基本相似的硬件,所以以下将讨论处理器模块110的硬件,以说明硬件如何周来实现本发明。在进一步的实施方式中,可以向背板总线185接入任意数目的处理器模块,并且在每个处理器模块中可以包含任意数目的处理器。
作为说明,处理器模块110包含处理器112至115,专用L2高速缓存122至125、高速缓存失误率监视器130、高速缓存失误率比较器135、使能器140以及高速缓存请求转发器145。处理器112至115的每一个与一个专用L2高速缓存122至125耦合,并且被设计来执行与软件应用有关的一或多个任务。具体地讲,为了执行任务的指令,处理器112至115从存储器请求指令以及执行这些指令所需的任何数据。当从存储器接收所述指令与数据时,在寄存器中存储这些指令与数据并且执行它们。经常或者最近被请求的指令与数据可以存储在高速缓存的一或多个级别上,以减少收回执行的指令与数据所涉及的延迟。具体地讲,每个处理器在处理器芯片上包含一级(L1)高速缓存,以存储最经常使用的指令与数据。与处理器112至115耦合的专用L2高速缓存112至115维护其他经常被使用的指令与数据。例如,当处理器需要执行一任务的指令或者数据时,该处理器生成高速缓存请求,该请求被首先转发给L1高速缓存。当L1高速缓存不具有该数据(即高速缓存失误)时,该高速缓存请求被转发至与该处理器直接耦合的专用L2高速缓存。当该专用L2高速缓存失误时,在本实施方式中,该高速缓存请求可以发送到另一专用L2高速缓存、转发至主存储器190或者两者。
高速缓存失误率监视器130跟踪与每个处理器112至115相关的高速缓存失误率。每当在专用L2高速缓存中遇到的高速缓存失误时,高速缓存失误率监视器130可以递增计数器。例如,导致高速缓存失误的处理器112的高速缓存请求被转发至专用L2高速缓存122。如果该高速缓存请求导致在专用L2高速缓存122中的高速缓存失误,则递增高速缓存失误率监视器130中的计数器。
每个处理器的高速缓存失误率被转发至高速缓存失误率比较器135,以确定一或多个高速缓存失误率是否超过门限。在某些实施方式中,该门限基于求得的与每个处理器112至125相关的瞬时高速缓存失误率的平均值。高速缓存失误率比较器135将每个处理器112至125的高速缓存失误率与门限比较,并且如果一或多个高速缓存失误率超过门限,则高速缓存失误率比较器135在使能器140中设置一位以使能对于相应(多个)存储器的高速缓存行重新分配方案。
使能器140可以包含存储与每个处理器112至115相关的标志的寄存器。每个标志表示关于对于处理器112至115中的一或多个是否使能高速缓存行重新分配方案的状态。例如,在本实施方式中,使能器140可以包含四位。第一位可以对应于是否对处理器112使能高速缓存行重新分配方案。类似地,二至四位可以指示是否对处理器113至115使能高速缓存行重新分配方案。
使能器140的标志可以借助高速缓存失误率比较器135或者由软件191设置。例如,软件191可以根据处理器正在执行的任务、在计算机系统上运行的应用、使用计算机系统的具体用户或者先前被特性化的负荷192、应用或者用户,在使能器140中设置标志。软件191还可以根据具体处理器在执行具体任务时产生的高速缓存失误次数来设置处理器的标志。
例如,当用户登录到计算机系统时,该系统执行的软件应用,即软件191,可以访问诸如先前表征的负荷192之类的历史使用文件,并且确定当局限于专用L2高速缓存时该用户一般运行使处理器模块110与115的处理器生成显著数目的高速缓存失误的应用。然后,软件191可以在使能器140以及模块150的相应使能器中设置标志,以使导致高速缓存失误的高速缓存请求被转发到另一专用L2高速缓存的最近最少使用的高速缓存行,从而实际上将专用L2高速缓存当作单一的大型L2高速缓存(例如L2.5高速缓存121)。
然而,在某些实施方式中,高速缓存请求转发器145选择性地转发高速缓存请求给另一专用L2高速缓存,从而在与该处理器直接耦合的专用L2高速缓存中维护最经常使用的高速缓存行,诸如用于指令的哪些高速缓存行。较不经常使用的高速缓存行被移动到相同处理器模块或者远程处理器模块中的替换专用L2高速缓存,从而有利地提供了专用L2高速缓存的众多优点以及单一大型L2高速缓存的益处。
高速缓存请求转发器145可以根据处理器模块110与150上的处理器的实际或者预期的负荷,将高速缓存行分布给处理器模块110和/或150的处理器。高速缓存请求转发器145可以基于最近最少使用的高速缓存行,选择专用L2高速缓存来接收高速缓存请求,并且将高速缓存请求转发给该专用L2高速缓存。具体地讲,当使能器140的标志指示对于处理器112使能高速缓存行重新分配方案时,高速缓存请求转发器145可以将在专用L2高速缓存122中失误的高速缓存请求从处理器112转发给处理器模块110或者诸如处理器模块150之类的另一处理器模块中的另一专用L2高速缓存。
例如,在稳定状态,每一个处理器112至115,以及处理器模块150的每一个都保持基本相同的高速缓存失误率,诸如每1000个周期一次高速缓存失误。然后,处理器112开始执行数据库应用,并且处理器122的高速缓存失误率增加到每1000个周期四次高速缓存失误。高速缓存失误率比较器135或者操作系统识别相对于其他处理器高速缓存失误率,处理器112的高速缓存失误次数的增加,并且在使能器140中设置位以使能对于处理器112的高速缓存重新分配方案。高速缓存请求转发器145现在选择最近最少使用的高速缓存行,以向处理器112提供与其他处理器相关的专用L2高速缓存的高速缓存行的访问。例如基于高速缓存失误率,任何分配都是可变的。例如,对于处理器112的分配可以包含处理器模块110的专用L2高速缓存中高速缓存行的总数的七分之四,或者处理器模块110与150上的专用L2高速缓存中高速缓存行的七分之四。
高速缓存请求转发器145可以根据包含专用L2高速缓存的处理器模块,选择目标专用L2高速缓存。例如,在一种运行模式下,高速缓存请求转发器145可以选择来自专用L2高速缓存122、123、124以及125的最近最少使用的高速缓存行,而处理器模块150上的高速缓存请求转发器将从来自处理器模块150上的专用L2高速缓存的最近最少使用的高速缓存行中作出选择。在另一运行模式下,高速缓存请求转发器145可以根据最近最少使用的高速缓存行来选择专用L2高速缓存,而不考虑专用L2高速缓存所位于的处理器模块。在进一步的运行模式下,高速缓存请求转发器145可以选择来自没有使能高速缓存行重新分配方案的处理器的最近最少使用的高速缓存行。
在几种实施方式中,硬件(诸如处理器112至115)或者软件应用可以向高速缓存请求分配优先级。在这些实施方式中,高速缓存请求转发器145可以根据与高速缓存请求相关的优先级以及包含专用L2高速缓存的模块,选择高速缓存请求以转发至另一专用L2高速缓存,或者选择专用L2高速缓存来接收高速缓存请求。例如,对于要执行的指令与数据的高速缓存请求可以与一或多个高优先级相关联,而预测的高速缓存请求以及对于载入存储器行从而可以修改该存储器行的请求可以与一或多个低优先级相关联。当对于处理器112使能高速缓存行重新分配方案时,例如,高速缓存请求转发器145可以不将与最高优先级相关联的高速缓存请求转发到另一L2高速缓存。因此,对于这些请求的存储器行可以从主存储器中收回,并且存储在专用L2高速缓存122的最近最少使用的高速缓存行中。高速缓存请求转发器145可以将被分类为次最低高优先级的高速缓存请求转发到与专用L2高速缓存123、124以及125相关的最近最少使用的高速缓存行。并且高速缓存请求转发器145可以将具有低优先级的高速缓存请求转发到处理器模块150的最近最少使用的高速缓存行,或者不管相应的专用L2高速缓存驻留的哪个处理器模块的最近最少使用的高速缓存行。
在某些实施方式中,处理器或者软件可以通过在(例如)对于每个专用L2高速缓存的翻译备用缓冲器(TLB)中存储位,为高速缓存请求设置优先级。例如,软件应用可以将这些位存储在用来翻译与由处理器执行的指令与数据相关的地址的页表中。然后,当处理器执行与这些指令与数据相关的任务时,这些位被拷贝到TLB中。类似地,处理器可以设置TLB中的控制位。这些位可以(例如)指示与高速缓存请求相关的存储器行何时将保留在与处理器直接耦合的专用L2高速缓存中,以及与高速缓存请求相关的存储器行何时可以被重新分配到另一专用L2高速缓存。
                示范性处理器模块
图2显示实现本发明的处理器模块200(诸如图1中的处理器模块110)的更详细的实施方式。处理器模块200包含处理器210至212、高速缓存接口单元(CIU)220至222、仲裁器230至232、高速缓存240至242、监视器250、比较器260、转发器270以及基本接口单元280。处理器210至212生成对于执行任务的存储器行的请求。在某些实施方式中,处理器210可以包含一或多级内部高速缓存,诸如L1高速缓存,并且当存储器行在该一或多级内部高速缓存中不可用时生成对于存储器行的外部请求。
处理器210至212还包含冷启动计数器213至215。冷启动计数器213至215从开始新任务起对周期计数,以确定何时开始对高速缓存失误计数。具体地讲,当诸如操作系统之类的软件应用向处理器分配新任务或者中断正在处理器上执行的当前任务以执行不同的任务时,该软件可以设置寄存器的位以向处理器通报该任务切换,并且开始对于高速缓存失误的计数。从任务切换可以预期有大量的高速缓存失误,所以为避免过早地确定由处理器正在执行的任务由于较多高速缓存行而会更有效地运行,冷启动计数器213至214与监视器250的计数器252至254耦合,以响应收到新任务来重置这些计数器,并且防止这些计数器为相应处理器确定高速缓存失误率,直至经过了冷启动预热期。例如,在引入新任务后,冷启动计数器213可以设置来延迟对于10000个周期、处理器210的高速缓存失误率的预期。
在某些实施方式中,为每个或所有冷启动计数器213至215设置的延迟期可以是预定的,由软件应用根据所执行的任务来设置、启发式地确定或者通过其他方式确定。例如,软件应用可以保存有关与任务相关的高速缓存失误次数的历史数据,以确定在高速缓存失误达到稳定状态之前的周期平均数目。然后,在下一次向处理器分配该任务时,该软件应用可以在寄存器中存储该周期数目,并且将该周期数目载入冷启动计数器。
当处理器210至212作为对开始新任务的响应而重置冷启动计数器时,也可以向转发器270发送对于新任务的指示。在某些实施方式中,对于处理器的指示可以重置使能器272中相应于处理器的位,以对该处理器禁用高速缓存行重新分配方案。具体地讲,当新任务开始在处理器210中执行时,重置冷启动计数器212以延迟确定处理器210的高速缓存失误率,并且向转发器270发送信号,以对处理器210禁用高速缓存行重新分配方案,直至冷启动计数器过期。
CIU 220至222为保持来自处理器的高速缓存请求直至可以将这些高速缓存请求转发至诸如高速缓存240至242之类的高速缓存的队列或者缓冲器。例如,当处理器210生成对于存储器行的请求并且不能满足来自处理器210内的高速缓存的请求时,处理器210将个这些请求发送给CIU 220。CIU 220可以包含保持顺序发送给高速缓存240的高速缓存请求的先进先出(FIFO)队列。当高速缓存请求达到队列顶部时,该高速缓存请求被转发给高速缓存240以确定相应的存储器行是否存储在高速缓存240的高速缓存行中。当高速缓存240的高速缓存行包含存储器行的内容时,则记录对于该高速缓存行的访问以更新最近最少使用的高速缓存行表,例如转发器270的LRU表274,并且将该存储器行返回给处理器210以备处理。在另一方面,当高速缓存240没有满足高速缓存请求的高速缓存行并且该高速缓存请求与处理器210相关时,则将高速缓存失误的指示转发到监视器250。然后,将该高速缓存请求转发给转发器270。
监视器250跟踪处理器210至212的高速缓存失误。监视器250可以包含计数器252至254,以对与每个处理器相关的高速缓存失误计数。例如,当冷启动213已经使能计数器252开始对处理器210的高速缓存失误计数时,计数器252可以在从高速缓存240收到每个对于高速缓存失误的指示时递增数目。
比较器260访问计数器252至254,以比较处理器210至212的高速缓存失误率。比较器260可以包含平均器262,用来确定对于处理器210至212的平均高速缓存失误率,然后可以将该平均值与处理器210至212的每个各自高速缓存失误率进行比较。如果一或多个对于各自处理器的高速缓存失误率超过平均高速缓存失误率一预定的门限水平,则比较器260向转发器270指示具有高高速缓存失误率的处理器。例如,比较器260可以为每个具有显著高于平均的高速缓存失误率的处理器,在使能器272中设置位。
转发器270一般被配置来确定何时实现对于处理器的高速缓存行重新分配方案,重新分配针对哪个(哪些)高速缓存,以及重新分配的范围。在特定实施方式中,转发器包含使能器272与LRU表274。使能器272包含每个处理器210至212的位。当位被设置时,转发器270可以从LRU表274选择最近最少使用的高速缓存行,并且将与该位相关的处理器的高速缓存请求导向标记为最近最少使用的高速缓存行的CIU。例如,根据LRU表274,可以设置处理器211与212的位,并且高速缓存240具有两个最近最少使用的高速缓存行。当转发器270收到两个高速缓存请求,一个来自处理器211,一个来自处理器212时,转发器270借助仲裁器230将这两个高速缓存请求转发给CIU 220。对于某些实施方式,转发器270可以继续增加分配给处理器212的高速缓存行的数目,直至由处理器212使用的高速缓存行相对于其他处理器使用的比率正比于处理器112与其他处理器高速缓存失误率之间的差。
仲裁器230与232协调放置一或多个高速缓存请求到CIU 220至222。例如,仲裁器230可以以如下顺序转发两个高速缓存请求到CIU 220,使得来自处理器211的高速缓存请求位于奇数周期上,而来自处理器212的高速缓存请求位于偶数周期上。例如在某些实施方式中,当在CIU 220中的未决(pending)高速缓存请求与相同存储器行相关联时,仲裁器230可以将高速缓存请求与未决高速缓存请求相关联。在进一步的实施方式中,仲裁器230可以将每个高速缓存请求转发给为仲裁器230保留的队列项中。
基本接口单元(BIU)280在主存储器与高速缓存请求转发器270之间提供接口。更具体地讲,当高速缓存无法满足高速缓存请求,即在高速缓存没有存储与高速缓存请求相关联的存储器行时,该高速缓存请求被转发给主存储器以收回相应的存储器行。在其他实施方式中,在主存储器与高速缓存240、242以及242之间可能存在一或更多额外的高速缓存级(例如级3或者更高)。
                         示范性方法
图3显示例如通过使用上述的技术与装置减少高速缓存失误率的方法的流程图300。该方法开始于步骤310,其中在相应的冷启动预热期之后开始对于每个处理器的高速缓存失误的计数。具体地讲,在处理器开始新任务之后,开始表示冷启动预热期的计数。在冷启动预热期结束之后,计数器开始对与该处理器相关的高速缓存失误计数,以确定高速缓存失误率。
对每个处理器的高速缓存失误率平均(步骤315),并且将该平均高速缓存失误率与每个处理器的各自高速缓存失误率比较(步骤320),以确定对于处理器的一或多个是否实现高速缓存行重新分配方案。当一或多个处理器的高速缓存失误率显著超过平均高速缓存失误率(例如)一预定的门限(步骤325)时,可以对每个相应的处理器使能高速缓存行重新分配方案。在许多实施方式中,可以不使能高速缓存行重新分配方案,除非处理器的高速缓存失误率高于基于平均高速缓存失误率的门限高速缓存失误率,例如平均高速缓存失误率加百分之十。在某些实施方式中,当高速缓存失误率全部高于预定的门限高速缓存失误率时,可以对每个处理器使能高速缓存行重新分配方案。例如,可以在寄存器中设置标志以使能处理器的高速缓存行重新分配方案。
当不对于处理器的一或多个使能高速缓存行重新分配方案时,与这些处理器相关的高速缓存请求可以被转发给主存储器以收回与这些高速缓存请求相关的存储器行。在这种情况下,在步骤315与320,可以持续监视这些处理器每一个的高速缓存失误率,以确定瞬时高速缓存失误率何时超过瞬时高速缓存失误率的平均值。
当对一个处理器使能高速缓存行重新分配方案并且该处理器产生高速缓存失误时,通过二级高速缓存行替换方案,标识多个专用高速缓存中具有最近最少使用的高速缓存行(LRU)的专用高速缓存(步骤330)。在许多实施方式中,该二级高速缓存行替换方案持续跟踪每个专用高速缓存的LRU表中的LRU高速缓存行。由此,当被使能了高速缓存行重新分配方案的处理器遇到高速缓存失误时,相应的高速缓存请求被转发给具有LRU高速缓存行的专用高速缓存,以将高速缓存行替换为具有与该高速缓存请求相关的存储器行(步骤335),直至该处理器所使用的高速缓存行数目与该处理器与其他处理的高速缓存失误率之间的差成比例。
然而,在替换高速缓存行之前,检查专用高速缓存以查看相应于该请求的存储器行是否已经存储在高速缓存行中(步骤340)。如果该存储器行已经可用,则从该专用高速缓存中返回该存储器行给处理器(步骤350)。在另一方面,当存储器行没有存储在专用高速缓存的高速缓存行中时,将高速缓存请求转发给主存储器以收回存储器行(步骤345),将存储器行返回给处理器(步骤350),并且在专用高速缓存的LRU高速缓存行中存储存储器行(步骤355)。然后,对于来自该处理器或其他处理器的后续高速缓存请求,该存储器行在该专用高速缓存中可用。一旦对于后续高速缓存请求,该存储器行可用,则与该存储器行相关的高速缓存请求就被转发给该专用高速缓存以存取该存储器行(步骤360)。
虽然上述针对本发明的实施方式,但是在脱离的本发明的基本范围的情况下,可以设想本发明的其他及进一步的实施方式,因此本发明的范围由权利要求限定。

Claims (42)

1.一种用来减少与对于多个处理器访问存储器相关的延迟的方法,其中每个处理器都与相关的专用高速缓存耦合,该方法包含:
当针对一或多个专用高速缓存发出高速缓存请求时,确定多个处理器的高速缓存失误率;
比较多个处理器的高速缓存失误率;以及
根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从多个专用高速缓存中分配高速缓存行给该处理器。
2.根据权利要求1的方法,其中确定高速缓存失误率包含:对多个处理器中的每一个处理器的高速缓存失误计数。
3.根据权利要求1的方法,其中分配高速缓存行包含:将来自该处理器的高速缓存请求转发给与另一处理器相关联的专用高速缓存。
4.根据权利要求1的方法,其中分配高速缓存行包含:根据与该处理器的高速缓存请求相关联的优先级,选择性地分配高速缓存行。
5.一种用来减少对于多个处理器的高速缓存失误率的方法,其中多个处理器与专用高速缓存耦合,该方法包含:
监视多个处理器的高速缓存失误率;
比较多个处理器的高速缓存失误率,以确定与多个专用高速缓存中的第一专用高速缓存失误率相关联的第一处理器的高速缓存失误率何时超过对于多个处理器的门限高速缓存失误率;
作为对确定高速缓存失误率超过门限高速缓存失误率的响应,将与第一处理器相关联的高速缓存请求转发给多个专用高速缓存中的第二专用高速缓存;
将第二专用高速缓存中的高速缓存行替换为作为对高速缓存请求的响应而接收的存储器行;以及
作为对来自第一处理器的指令的响应,存取该高速缓存行。
6.根据权利要求5的方法,其中监视高速缓存失误率包含:在冷启动预热期之后,对高速缓存失误计数。
7.根据权利要求5的方法,其中比较高速缓存失误率包含:比较与多个处理器模块相关联的多个高速缓存失误率。
8.根据权利要求5的方法,其中门限高速缓存失误率基于对于多个处理器的平均高速缓存失误率。
9.根据权利要求5的方法,其中转发高速缓存请求包含:根据与多个专用高速缓存相关联的最近最少使用的高速缓存行,选择第二专用高速缓存。
10.根据权利要求9的方法,其中选择第二高速缓存包含:根据第一处理器所在的处理器模块,选择最近最少使用的高速缓存行。
11.根据权利要求5的方法,其中转发高速缓存请求包含:根据与高速缓存请求相关联的优先级,选择高速缓存请求。
12.根据权利要求5的方法,其中转发高速缓存请求响应超越比较高速缓存失误率的结果来转发高速缓存请求给第二专用高速缓存的软件指令。
13.一种用来减少对于多个处理器的高速缓存失误率的装置,其中多个处理器与专用高速缓存耦合,该装置包含:
高速缓存失误率监视器,用来当针对专用高速缓存发出高速缓存请求时,确定多个处理器的高速缓存失误率;
高速缓存失误率比较器,用来比较高速缓存失误率;以及
高速缓存请求转发器,用来根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从多个专用高速缓存中分配高速缓存行给该处理器的高速缓存请求。
14.根据权利要求13的装置,其中高速缓存失误率监视器包含多个计数器,每个计数器用来对多个处理器中的相应一个处理器的高速缓存失误计数。
15.根据权利要求13的装置,其中高速缓存请求转发器可用来:将来自该处理器的高速缓存请求转发给与另一处理器相关联的专用高速缓存。
16.根据权利要求13的装置,其中高速缓存请求转发器可用来:根据与该处理器的高速缓存请求相关联的优先级,选择性地分配高速缓存行。
17.根据权利要求13的装置,其中高速缓存请求转发器包含最近最少使用的高速缓存行表,用来确定分配哪个高速缓存行供该处理器使用。
18.一种用来减少存取耦合其上的存储器的延迟的装置,包含:
发出高速缓存请求的多个处理器;
多个专用高速缓存,每一个与多个处理器之一耦合;
高速缓存失误率监视器,用来确定多个处理器的每一个的高速缓存失误率;
高速缓存失误率比较器,用来确定何时至少一个高速缓存失误率超过门限值;以及
高速缓存请求转发器,用来将来自多个处理器中与被确定超过门限值的高速缓存失误率相关联的处理器的高速缓存请求,转发给多个专用高速缓存中与多个处理器中的另一处理器相关联的专用高速缓存。
19.根据权利要求18的装置,其中多个处理器与多个专用高速缓存驻留在多个处理器模块之上。
20.根据权利要求18的装置,其中高速缓存失误率监视器包含多个高速缓存失误计数器,每个计数器与多个处理器之一耦合,用来在冷启动预热期之后开始对高速缓存失误计数。
21.根据权利要求18的装置,其中高速缓存失误率比较器包含比率平均器,用来比较高速缓存失误率,以确定处理器的高速缓存失误率何时超过与多个处理器相关联的平均高速缓存失误率。
22.根据权利要求18的装置,其中高速缓存请求转发器响应将来自多个处理器之一的高速缓存请求转发给专用高速缓存的软件指令。
23.根据权利要求18的装置,其中高速缓存请求转发器用来:根据与多个专用高速缓存相关联的最近最少使用的高速缓存行,选择专用高速缓存。
24.根据权利要求23的装置,其中高速缓存请求转发器用来:根据专用高速缓存所在的处理器模块,选择专用高速缓存。
25.根据权利要求18的装置,其中高速缓存请求转发器用来:根据与高速缓存请求相关联的优先级,选择高速缓存请求。
26.根据权利要求18的装置,其中高速缓存请求转发器在专用高速缓存的高速缓存请求队列中插入高速缓存请求,以在该专用高速缓存中存储存储器行。
27.根据权利要求26的装置,其中高速缓存请求转发器包括仲裁器,用来在高速缓存请求与来自多个处理器的另一处理器的另一高速缓存请求之间进行仲裁,以将高速缓存请求转发给高速缓存请求队列。
28.一种系统,包含:
处理器模块,包含与第一专用高速缓存耦合的第一处理器以及与第二专用高速缓存耦合的第二处理器;
高速缓存失误率监视器,用来对与第一处理器以及第二处理器相关联的高速缓存失误计数;
高速缓存失误率比较器,用来将与第一处理器相关联的高速缓存失误和与第二处理器相关联的高速缓存失误进行比较;以及
高速缓存请求转发器,用来:当与第一专用高速缓存相关的、与第一处理器相关联的高速缓存失误数目超过与第二处理器相关联的高速缓存失误数目时,将来自第一处理器的高速缓存请求转发给第二专用高速缓存。
29.根据权利要求28的系统,还包含:包含一组一或多个任务以及相关的高速缓存失误率信息的历史使用文件。
30.根据权利要求29的系统,还包含:用来根据与第一处理器相关联的高速缓存失误数目和与第二处理器相关联的高速缓存失误数目之间的差,使能高速缓存请求转发器以转发高速缓存请求的软件应用。
31.根据权利要求28的系统,其中高速缓存请求转发器根据与第一处理器以及第二处理器的高速缓存失误率之间的差,分配第一专用高速缓存以及第二专用高速缓存的高速缓存行。
32.根据权利要求28的系统,其中高速缓存请求转发器将来自多个处理器模块中的第一处理器模块的高速缓存请求转发给多个处理器模块中的第二处理器模块,其中第二模块具有最近最少使用的高速缓存行。
33.一种包含程序的计算机可读介质,当该程序被执行时执行包含以下步骤的操作:
当针对一或多个专用高速缓存发出高速缓存请求时,确定多个处理器的高速缓存失误率;
比较高速缓存失误率;以及
根据多个处理器中的一个处理器的高速缓存失误率与其他处理器的高速缓存失误率之间的差,从专用高速缓存中分配高速缓存行给该处理器。
34.根据权利要求33的计算机可读介质,其中分配高速缓存行包含:将来自该处理器的高速缓存请求转发给多个专用高速缓存中的专用高速缓存,其中该专用高速缓存与另一处理器相关联。
35.根据权利要求33的计算机可读介质,其中分配高速缓存行包含:根据与该处理器的高速缓存请求相关联的优先级,选择性地分配高速缓存行。
36.一种包含程序的计算机可读介质,当该程序被执行时执行包含以下步骤的操作:
监视多个处理器的高速缓存失误率;
比较多个处理器的高速缓存失误率,以确定与第一专用高速缓存失误率相关联的第一处理器的高速缓存失误率何时超过对于多个处理器的门限高速缓存失误率;
作为对确定高速缓存失误率超过门限高速缓存失误率的响应,将与第一处理器相关联的高速缓存请求转发给第二专用高速缓存;
将第二专用高速缓存中的高速缓存行替换为作为对高速缓存请求的响应而接收的存储器行;以及
作为对来自第一处理器的指令的响应,存取该高速缓存行。
37.根据权利要求36的计算机可读介质,其中比较高速缓存失误率包含:比较与多个处理器模块相关联的多个高速缓存失误率。
38.根据权利要求36的计算机可读介质,其中门限高速缓存失误率基于对于多个处理器的平均高速缓存失误率。
39.根据权利要求36的计算机可读介质,其中转发高速缓存请求包含:根据与多个专用高速缓存相关联的最近最少使用的高速缓存行,选择第二专用高速缓存。
40.根据权利要求39的计算机可读介质,其中选择第二高速缓存包含:根据第一处理器所在的处理器模块,选择最近最少使用的高速缓存行。
41.根据权利要求36的计算机可读介质,其中转发高速缓存请求包含:在高速缓存请求在第一专用高速缓存中失误之后,根据与高速缓存请求相关联的优先级,选择高速缓存请求。
42.根据权利要求36的计算机可读介质,其中转发高速缓存请求响应超越比较高速缓存失误率的结果来转发高速缓存请求给第二专用高速缓存的软件指令。
CNB2004100826893A 2003-09-25 2004-09-27 利用共享专用高速缓存减少高速缓存失误率的方法和系统 Expired - Fee Related CN100345124C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,715 US20050071564A1 (en) 2003-09-25 2003-09-25 Reduction of cache miss rates using shared private caches
US10/670,715 2003-09-25

Publications (2)

Publication Number Publication Date
CN1601489A true CN1601489A (zh) 2005-03-30
CN100345124C CN100345124C (zh) 2007-10-24

Family

ID=34375988

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100826893A Expired - Fee Related CN100345124C (zh) 2003-09-25 2004-09-27 利用共享专用高速缓存减少高速缓存失误率的方法和系统

Country Status (2)

Country Link
US (1) US20050071564A1 (zh)
CN (1) CN100345124C (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101135994B (zh) * 2007-09-07 2010-06-23 杭州华三通信技术有限公司 一种划分缓存空间的方法和装置以及缓存控制器
CN101295274B (zh) * 2007-04-29 2011-03-23 国际商业机器公司 用于降低共享存储器的数据讹误的方法和设备
WO2014083442A1 (en) * 2012-11-27 2014-06-05 International Business Machines Corporation Coherent proxy for attached processor
US8938587B2 (en) 2013-01-11 2015-01-20 International Business Machines Corporation Data recovery for coherent attached processor proxy
US8990513B2 (en) 2013-01-11 2015-03-24 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US9021211B2 (en) 2013-01-11 2015-04-28 International Business Machines Corporation Epoch-based recovery for coherent attached processor proxy
US9135174B2 (en) 2012-11-27 2015-09-15 International Business Machines Corporation Coherent attached processor proxy supporting master parking
CN105573660A (zh) * 2014-09-30 2016-05-11 伊姆西公司 用于改善分簇磁盘阵列的性能的方法和装置
US9367458B2 (en) 2012-11-27 2016-06-14 International Business Machines Corporation Programmable coherent proxy for attached processor
US9547597B2 (en) 2013-03-01 2017-01-17 International Business Machines Corporation Selection of post-request action based on combined response and input from the request source
CN107003946A (zh) * 2014-12-26 2017-08-01 英特尔公司 存储器中的成本感知的页交换和替换
CN108351834A (zh) * 2015-09-26 2018-07-31 英特尔公司 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4327669B2 (ja) * 2004-06-29 2009-09-09 徳元 王 キャッシュ装置及び方法
US7366871B2 (en) 2004-11-18 2008-04-29 Sun Microsystems, Inc. Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table
US7373480B2 (en) * 2004-11-18 2008-05-13 Sun Microsystems, Inc. Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table
US7818747B1 (en) * 2005-11-03 2010-10-19 Oracle America, Inc. Cache-aware scheduling for a chip multithreading processor
US20070283095A1 (en) * 2006-06-06 2007-12-06 Alcor Micro, Corp. Method to access storage device through universal serial bus
US20080263279A1 (en) * 2006-12-01 2008-10-23 Srinivasan Ramani Design structure for extending local caches in a multiprocessor system
US7844779B2 (en) * 2007-12-13 2010-11-30 International Business Machines Corporation Method and system for intelligent and dynamic cache replacement management based on efficient use of cache for individual processor core
US20090165004A1 (en) * 2007-12-21 2009-06-25 Jaideep Moses Resource-aware application scheduling
US7457920B1 (en) * 2008-01-26 2008-11-25 International Business Machines Corporation Method and system for cache eviction
JP2009181484A (ja) * 2008-01-31 2009-08-13 Panasonic Corp 計算機システムとその制御方法
US7890700B2 (en) * 2008-03-19 2011-02-15 International Business Machines Corporation Method, system, and computer program product for cross-invalidation handling in a multi-level private cache
US8285950B2 (en) 2010-06-03 2012-10-09 International Business Machines Corporation SMT/ECO mode based on cache miss rate
US9703706B2 (en) * 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
US20120324481A1 (en) * 2011-06-16 2012-12-20 Samsung Electronics Co. Ltd. Adaptive termination and pre-launching policy for improving application startup time
US9830272B2 (en) * 2011-12-28 2017-11-28 Intel Corporation Cache memory staged reopen
US9244853B2 (en) * 2012-08-10 2016-01-26 Qualcomm Incorporated Tunable multi-tiered STT-MRAM cache for multi-core processors
US8812489B2 (en) 2012-10-08 2014-08-19 International Business Machines Corporation Swapping expected and candidate affinities in a query plan cache
CN103729248B (zh) * 2012-10-16 2017-12-15 华为技术有限公司 一种基于缓存感知的确定待迁移任务的方法和装置
US9158669B2 (en) 2012-12-17 2015-10-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Presenting enclosure cache as local cache in an enclosure attached server
WO2015130291A1 (en) * 2014-02-27 2015-09-03 Empire Technology Development, Llc Thread and data assignment in multi-core processors
JP6039772B1 (ja) * 2015-09-16 2016-12-07 株式会社東芝 メモリシステム
US11016695B2 (en) * 2016-12-20 2021-05-25 Intel Corporation Methods and apparatus to perform memory copy operations
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10705590B2 (en) 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355478A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for avoiding cache misses during external tournament tree replacement sorting procedures
EP0689141A3 (en) * 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US6269426B1 (en) * 1997-06-24 2001-07-31 Sun Microsystems, Inc. Method for operating a non-blocking hierarchical cache throttle
CN1168025C (zh) * 1999-03-10 2004-09-22 国际商业机器公司 用于多线程处理机的指令高速缓存器
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache
US6918012B2 (en) * 2001-08-28 2005-07-12 Hewlett-Packard Development Company, L.P. Streamlined cache coherency protocol system and method for a multiple processor single chip device

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295274B (zh) * 2007-04-29 2011-03-23 国际商业机器公司 用于降低共享存储器的数据讹误的方法和设备
CN101135994B (zh) * 2007-09-07 2010-06-23 杭州华三通信技术有限公司 一种划分缓存空间的方法和装置以及缓存控制器
WO2014083442A1 (en) * 2012-11-27 2014-06-05 International Business Machines Corporation Coherent proxy for attached processor
US9454484B2 (en) 2012-11-27 2016-09-27 International Business Machines Corporation Integrated circuit system having decoupled logical and physical interfaces
US9442852B2 (en) 2012-11-27 2016-09-13 International Business Machines Corporation Programmable coherent proxy for attached processor
US9367458B2 (en) 2012-11-27 2016-06-14 International Business Machines Corporation Programmable coherent proxy for attached processor
US9069674B2 (en) 2012-11-27 2015-06-30 International Business Machines Corporation Coherent proxy for attached processor
US9086975B2 (en) 2012-11-27 2015-07-21 International Business Machines Corporation Coherent proxy for attached processor
US9135174B2 (en) 2012-11-27 2015-09-15 International Business Machines Corporation Coherent attached processor proxy supporting master parking
US9146872B2 (en) 2012-11-27 2015-09-29 International Business Machines Corporation Coherent attached processor proxy supporting master parking
US9251077B2 (en) 2013-01-11 2016-02-02 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US8938587B2 (en) 2013-01-11 2015-01-20 International Business Machines Corporation Data recovery for coherent attached processor proxy
US9229868B2 (en) 2013-01-11 2016-01-05 International Business Machines Corporation Data recovery for coherent attached processor proxy
US9251076B2 (en) 2013-01-11 2016-02-02 International Business Machines Corporation Epoch-based recovery for coherent attached processor proxy
US9021211B2 (en) 2013-01-11 2015-04-28 International Business Machines Corporation Epoch-based recovery for coherent attached processor proxy
US8990513B2 (en) 2013-01-11 2015-03-24 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US9547597B2 (en) 2013-03-01 2017-01-17 International Business Machines Corporation Selection of post-request action based on combined response and input from the request source
US9606922B2 (en) 2013-03-01 2017-03-28 International Business Machines Corporation Selection of post-request action based on combined response and input from the request source
CN105573660A (zh) * 2014-09-30 2016-05-11 伊姆西公司 用于改善分簇磁盘阵列的性能的方法和装置
CN105573660B (zh) * 2014-09-30 2019-05-17 伊姆西公司 用于改善分簇磁盘阵列的性能的方法和装置
CN107003946A (zh) * 2014-12-26 2017-08-01 英特尔公司 存储器中的成本感知的页交换和替换
CN107003946B (zh) * 2014-12-26 2021-09-07 英特尔公司 用于管理从存储器设备回收的方法、装置、设备和介质
CN108351834A (zh) * 2015-09-26 2018-07-31 英特尔公司 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器
CN108351834B (zh) * 2015-09-26 2022-09-23 英特尔公司 用于针对核到核数据传送优化指令减少性能逆转的低开销硬件预测器

Also Published As

Publication number Publication date
US20050071564A1 (en) 2005-03-31
CN100345124C (zh) 2007-10-24

Similar Documents

Publication Publication Date Title
CN100345124C (zh) 利用共享专用高速缓存减少高速缓存失误率的方法和系统
CN1128406C (zh) 数据处理系统及其中断处理方法
US10268588B2 (en) Methods of cache preloading on a partition or a context switch
US20190340154A1 (en) Multi-Threaded, Self-Scheduling Processor
CN100346318C (zh) 根据存储器占用动态调整预读值的系统和方法
CN1278235C (zh) 用于向一处理器让与资源的系统
US8176220B2 (en) Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US9575889B2 (en) Memory server
US9280474B2 (en) Adaptive data prefetching
CN1179276C (zh) 配置不同的高速缓存分区以具有不同属性的系统和方法
CN102365625B (zh) 用于虚拟机的虚拟非一致存储器体系结构
US7953951B2 (en) Systems and methods for time division multiplex multithreading
WO2019217304A1 (en) Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion
WO2019217290A1 (en) Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric
US10459661B2 (en) Stream identifier based storage system for managing an array of SSDs
US9244980B1 (en) Strategies for pushing out database blocks from cache
CN101042679A (zh) 维护存储器一致性的方法和系统
US7930483B2 (en) Associativity implementation in a system with directly attached processor memory
US11093410B2 (en) Cache management method, storage system and computer program product
US8874853B2 (en) Local and global memory request predictor
US20130138885A1 (en) Dynamic process/object scoped memory affinity adjuster
US7197605B2 (en) Allocating cache lines
US11579888B2 (en) Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor
CN101046774A (zh) 使用替代页池管理dma写入页错误的计算机实现方法和装置
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: IBM (CHINA) CO., LTD.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP.

Effective date: 20101101

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: NEW YORK STATE, UNITED STATES TO: 201203 7/F, BUILDING 10, ZHANGJIANG INNOVATION PARK, NO.399, KEYUAN ROAD, HIGH-TECH PARK, ZHANGJIANG, PUDONG NEW DISTRICT, SHANGHAI

TR01 Transfer of patent right

Effective date of registration: 20101101

Address after: 201203 Shanghai city Pudong New Area Keyuan Road No. 399 Zhang Jiang Zhang Jiang high tech Park Innovation Park 10 Building 7 layer

Patentee after: International Business Machines (China) Co., Ltd.

Address before: American New York

Patentee before: International Business Machines Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071024

Termination date: 20170927

CF01 Termination of patent right due to non-payment of annual fee