CN101937401A - 基于监听响应信息的目录高速缓存分配 - Google Patents
基于监听响应信息的目录高速缓存分配 Download PDFInfo
- Publication number
- CN101937401A CN101937401A CN201010227058.1A CN201010227058A CN101937401A CN 101937401 A CN101937401 A CN 101937401A CN 201010227058 A CN201010227058 A CN 201010227058A CN 101937401 A CN101937401 A CN 101937401A
- Authority
- CN
- China
- Prior art keywords
- destination address
- agency
- cache proxy
- directory caching
- subclauses
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了涉及基于监听响应消息的目录高速缓存分配的方法和装置。在一个实施例中,可响应于确定另一个高速缓存代理具有与一地址相对应的数据的副本而在目录高速缓存中分配关于该地址的条目。还公开了其它实施例。
Description
发明领域
本公开一般涉及电子领域。更具体地,本发明的实施例涉及基于监听响应信息的目录高速缓存分配。
背景技术
可使用监听总线或基于目录的协议来使计算机系统中的高速缓存保持一致。在任一种情形中,存储器地址都与系统中的特定位置相关联。该位置一般被称为存储器地址的“归属节点”。
在基于目录的协议中,处理/高速缓存代理可向归属节点发送请求以访问与相应的“主代理(home agent)”相关联的存储器地址。因此,此类计算机系统的性能可直接取决于维持相应的基于目录的协议的高效程度。
附图说明
参考附图来提供详细描述。在附图中,参考标号中最左边的数字标识该参考标号首次出现的附图。在不同附图中使用相同的参考标号来指示相似或相同的项。
图1和4-5示出可用来实现本文中讨论的各种实施例的计算系统的实施例的框图。
图2示出根据一实施例的目录高速缓存的条目。
图3示出根据一实施例的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各种实施例的透彻理解。然而,在没有这些具体细节的情况下也可实现一些实施例。在其它实例中,并未对公知方法、程序、组件以及电路进行详细描述以免淡化特定实施例。
本文中讨论的一些实施例一般涉及对目录高速缓存(在本文中也被引述为“Dir$”)的分配策略。使用这些策略可通过减小目录高速缓存的大小来提高性能和/或节省设计预算。目录高速缓存(在一实施例中,其可以与主代理位于同一集成电路管芯上)存储关于可由系统中的一个或多个代理存储的地址的信息。例如,该高速缓存可指示哪些代理可能正存储着与给定地址相关联的被请求数据。因此,假定目录包含关于系统的高速缓存代理中的一致性单元(例如,存储器或高速缓存的高速缓存线或高速缓存块或另一部分)的高速缓存状态的信息,例如出于减少监听话务,诸如减少或避免监听广播的目的。另外,由于高效地维持目录高速缓存,因此可通过较小的目录高速缓存来减少设计预算。
一般而言,可使用监听总线或基于目录的协议来使计算系统中的高速缓存保持一致。在任一种情形中,存储器地址都与系统中的特定位置相关联。该位置一般被称为存储器地址的“归属节点”。在基于目录的协议中,处理/高速缓存代理可向归属节点发送请求以访问与“主代理”相关联的存储器地址。
在分布式高速缓存一致性协议中,高速缓存代理可向控制对相应存储器空间的一致访问的主代理发送请求。主代理进而负责确保被请求数据的最新副本从拥有被请求数据的存储器或高速缓存代理返回给请求方。例如,如果该请求是针对排他性副本,则主代理还可负责使其他高速缓存代理处的数据副本无效。出于这些目的,主代理一般可监听每个高速缓存代理或依靠目录来跟踪可能驻留有数据的一组高速缓存代理。在一些实现中,所有读取或查找请求可导致目录高速缓存的分配。这样,如何进行这些分配可能对总体系统性能具有显著影响。
在一些实施例中,目录信息可包含每高速缓存代理的一比特,指示高速缓存代理处目标数据的存在或不存在(例如,分别取决于实现“1”或“0”,或者反之),例如在源于高速缓存代理的先前请求或监听响应期间所记录。在一个实施例中,目录信息可基于压缩格式,其中那些比特可编码高速缓存代理簇中目标数据的存在/不存在和/或其他状态信息(诸如共享的或排他的)。不管目录信息的具体实现如何,本文中将其称为存在性向量(PV)。
各种计算系统可用来实现本文中所讨论的实施例,诸如参照图1和4-5所讨论的系统。更具体而言,图1示出了根据本发明一实施例的计算系统100的框图。系统100可包括一个或多个代理102-1到102-M(本文中统称为“各代理102”或更一般地称为“代理102”)。在一实施例中,代理102中的一个或多个可以是诸如参照图4-5讨论的计算系统之类的计算系统的任何组件。
如图1所示,各代理102可经由网络结构104通信。在一个实施例中,网络结构104可包括允许各种代理(诸如计算设备)传达数据的计算机网络。在一实施例中,网络结构104可包括经由串行(例如,点对点)链路通信的一个或多个互连(或互连网络)和/或共享通信网络。例如,一些实施例可便于在允许与满缓冲的双列存储器模块(FBD)通信的链路上进行组件调试或验证,例如,其中FBD链路是用于将存储器模块耦合到主控制器设备(诸如处理器或存储器中枢)的串行链路。可从FBD通道主机传送调试信息以使得可通过通道话务踪迹捕捉工具(诸如一个或多个逻辑分析器)沿该通道观察该调试信息。
在一个实施例中,系统100可支持分层协议方案,其可包括物理层、链路层、路由层、传输层、和/或协议层。结构104可进一步便于针对点对点或共享网络从一种协议(例如,高速缓存处理器或高速缓存感知存储器控制器)向另一种协议传送数据(例如,以分组的形式)。另外,在一些实施例中,网络结构104可提供遵循一种或多种高速缓存一致协议的通信。
此外,如图1中的箭头方向所示,代理102可经由网络结构104传送和/或接收数据。因此,一些代理可利用单向链路而其他代理可利用双向链路来通信。例如,一个或多个代理(诸如代理102-M)可传送数据(例如,经由单向链路106),其他代理(诸如代理102-2)可接收数据(例如,经由单向链路108),而一些代理(诸如代理102-1)可既传送又接收数据(例如,经由双向链路110)。
另外,代理102中的至少一个可以是主代理,且代理102中的一个或多个可以是如本文中将例如参照图3来进一步讨论的请求或高速缓存代理。例如,在一实施例中,代理102中的一个或多个(仅关于代理102-1示出一个)可维持一个或多个存储设备(仅关于代理102-1示出一个,诸如实现为表、队列、缓冲器、链表等的目录高速缓存120)中的条目以跟踪关于PV的信息。在一些实施例中,代理102中的每一个或至少一个可耦合到与该代理位于同一管芯上或该代理能以其他方式访问的相应的目录高速缓存120。
参照图2,示出根据一个实施例的示例目录高速缓存120。如图所示,目录高速缓存120可存储例如关于一个或多个地址202-1到202-Y的一个或多个存在性向量(PV)208。更具体地,目录高速缓存120的每一行可代表关于由计算系统(诸如参照图1讨论的系统100)中的代理所存储的给定地址的PV。
在一些实施例中,目录高速缓存120可包含每高速缓存代理(例如,代理1、代理2、……、代理X)的一比特(例如,存储在204-1到206-1、204-2到206-2、直至204-Y到206Y),指示给定的高速缓存代理处与地址(例如,分别为地址202-1到202-Y)相关联的目标数据的存在或不存在(例如,分别取决于实现“1”或“0”,或者反之),例如在先前请求或源于高速缓存代理的监听响应期间所记录。在一个实施例中,目录信息可基于压缩格式,其中比特可编码高速缓存代理簇中目标数据的存在/不存在。不管目录信息的具体实现如何,本文中将其称为存在性向量(PV)。此外,在一实施例中,假定PV比特在存储器中具有永久备份(例如,在其所属的一致性单元旁边的ECC(误差校正码)比特中)。然而,不要求永久备份;也不要求存储器中备份条目的格式,但倘若存在永久备份,则该格式可不同于Dir$PV。例如,在一个实施例中,存储器中的永久备份可包括单个比特,指示该地址由一些未指明的代理高速缓存或没有由代理高速缓存。
此外,在一些实施例中,关于某些列的PV比特可存储在芯载目录高速缓存中(例如,与主代理相同的管芯上)。在管芯上高速缓存PV比特可加速由主代理发送出监听请求的过程,如本文中将进一步讨论的。在不存在目录高速缓存的情况下,PV比特可仅在冗长的存储器访问之后才可用。在许多情况下,监听请求可位于等待时间很关键的路径上,由此加速该过程对于总体系统性能而言是有益的。例如,在发现数据的最新副本在第三方高速缓存代理中的情况下,主代理所接收的许多请求可能导致高速缓存-高速缓存转移。相反,可能存在存储器副本被清空且没有其他高速缓存代理需要被监听的情况。在这些情况下,从存储器获得PV比特不会造成附加开销,因为这是与数据访问本身并行进行的。
图3示出根据一实施例的用于分配目录高速缓存中的条目的方法300的流程图。在一个实施例中,参照图1-2和4-5讨论的各种组件可用来执行参照图3所讨论的操作中的一个或多个。例如,在一实施例中,主代理可执行方法300的操作。
参照图1-5,在操作302,可确定主代理是否已从另一个高速缓存代理接收到对目标数据(例如,由地址标识的)的请求。在操作304,可在目录高速缓存(例如,Dir$120)中查找目标数据的地址。如果目录高速缓存不包括与目标地址相对应的条目,则在操作308,主代理可访问主存储器(例如,存储器412和/或存储器510或512)以从存储在主存储器中的目录(例如,目录401)获得关于目标地址的PV。在一个实施例中,存储在主存储器中的目录401可包括与参照目录高速缓存120所讨论的关于系统中的高速缓存代理的信息相同或相似的信息。在一些实施例中,目录401可仅包括关于系统中的高速缓存代理子集的信息。
在操作310,可例如基于在操作308获得的信息来确定是否要执行监听操作。例如,如果从主存储器获得的PV指示另一个高速缓存代理正共享目标地址(例如,如由目录401中与目标地址相对应的比特所指示的),则在操作312,可(例如,向共享目标地址的高速缓存代理中的每一个)发送一个或多个监听并接收响应。例如,如果操作302的请求是对目标地址的写操作,则可使得共享目标地址的其他高速缓存代理(按照操作308的PV)处的副本无效。替换地,如果目录401仅包括关于系统中的高速缓存代理子集的信息,则可在操作312向该子集中的所有高速缓存代理广播监听。
如果在操作314存在任何有效副本(例如,目标地址实际上是由除在操作302发送请求的高速缓存代理外的另一个高速缓存代理存储的),则在操作316,在目录高速缓存120中分配条目。基于请求和监听响应,所分配的条目包含对与目标地址相关联的PV中的相应比特的更新。否则,如果在操作314不存在有效副本,则在操作318,在目录高速缓存120中不进行分配,但更新目录401中的PV以指示在操作302发送请求的高速缓存代理正共享该目标地址。另外,如图3中所示,如果在操作310将不执行监听,则方法300继续到操作318。
在操作306,如果确定目录高速缓存120中的条目对应于目标地址,则从目录高速缓存120读取PV信息例如以确定哪些高速缓存代理正共享该目标地址。在操作322,可例如基于在操作320获得的PV信息来确定是否要执行监听。例如,如果PV信息指示高速缓存代理(例如,除在操作302发送请求的高速缓存代理以外的其他高速缓存代理)共享相同的地址,则可向由在操作320获得的PV信息所标识的高速缓存代理发送一个或多个监听并接收响应。例如,如果操作302的请求是对该目标地址的写操作,则可在操作322使得共享该目标地址的其他高速缓存代理(按照操作320的PV)处的副本无效。在操作324,更新目录高速缓存120中对应于该目标地址的PV(例如,基于操作322的监听响应或操作302的请求类型(例如,若为排他性的则使其他副本无效))。
在一些实施例中,提供了目录高速缓存分配策略,其使用共享信息来确定目录高速缓存是否应为地址分配条目。具体而言,一实施例为遭遇未来的监听很关键的访问的概率相对高的列或块分配条目。相反,监听很关键的访问的概率低的列/块可不被分配。例如,这样的实施例采用的推断法规定,若列以往被存储过,则其有可能在将来被存储。由此,用于决定需要分配哪些条目的策略可使用PV比特与监听响应的组合。例如,如果主代理收集到指示另一个高速缓存代理具有有效副本的至少一个监听响应(例如,响应转发或降级指示),则在目录高速缓存中为地址分配条目。在某些情况下,PV比特将先验包含没有其他高速缓存代理需要被监听的信息,直接导致不分配决定。
在一些实施例中,例如,在对PV比特的快速查找很关键的情况下,以上讨论的分配策略可在目录高速缓存中为被多个高速缓存代理存储或竞争的条目提供更多空间。另一方面,趋于保持专有的列(由单个高速缓存代理访问)将错过目录高速缓存,但目录查找将不造成任何等待时间惩罚,因为数据和PV比特同时从存储器被访问且PV比特指示不需要监听。由此,对不必被监听的列(诸如专用数据)的引用是有效命中的一部分(并非真正的目录高速缓存命中,但也对性能没有影响)。
图4示出计算系统400的实施例的框图。图1的代理102中的一个或多个可包括计算系统400的一个或多个组件。另外,系统400的各种组件可包括目录高速缓存(诸如图1-3的目录高速缓存120)。计算系统400可包括耦合到互连网络(或总线)404的一个或多个中央处理单元(CPU)402(其可在本文中统称为“各处理器402”或更一般地称为“处理器402”)。处理器402可以是任何类型的处理器,诸如通用处理器、网络处理器(其可处理在计算机网络405上传达的数据)等(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。而且,处理器402可具有单核或多核设计。具有多核设计的处理器402可在同一集成电路(IC)管芯上集成不同类型的处理器核。另外,具有多核设计的处理器402可实现为对称或不对称的多处理器。
处理器402可包括一个或多个高速缓存(例如,除所示出的目录高速缓存120以外的高速缓存),其在各种实施例中可以是专用的和/或共享的。一般而言,高速缓存存储与其他地方所存储的或较早计算的原始数据相对应的数据。为了减少存储器访问等待时间,一旦数据被存储在高速缓存中,未来的使用就可通过访问所高速缓存的副本来进行,而非重新取出或重新计算原始数据。高速缓存可以是任何类型的高速缓存,诸如1级(L1)高速缓存、2级(L2)高速缓存、3级(L3)高速缓存、中级高速缓存、终级高速缓存(LLC)等,用于存储由系统400的一个或多个组件使用的电子数据(例如,包括指令)。另外,这样的高速缓存可处于各种位置(例如,本文中所讨论的包括图1或5的系统在内的计算系统的其他组件内)。
芯片组406可另外耦合到互连网络404。此外,芯片组406可包括图形存储器控制中枢(GMCH)408。GMCH 408可包括耦合到存储器412的存储器控制器410。存储器412可存储数据,例如包括由处理器402或与计算系统400的组件通信的任何其他设备执行的指令序列。另外,在本发明的一个实施例中,存储器412可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)等。也可以利用非易失性存储器,诸如硬盘。其他设备可耦合到互联网络404,诸如多个处理器和/或多个系统存储器。
GMCH 408可进一步包括(例如,在一个实施例中,经由图形加速器)耦合到显示设备416的图形接口414。在一个实施例中,图形接口414可经由加速图形端口(AGP)耦合到显示设备416。在本发明的一实施例中,显示设备416(诸如平板显示器)可通过例如信号转换器耦合到图形接口414,该信号转换器将存储在诸如视频存储器或系统存储器(例如,存储器412)之类的存储设备中的图像的数字表示转换成显示器416解释和显示的显示信号。
如图4中所示,中枢接口418可将GMCH 408耦合到输入/输出控制中枢(ICH)420。ICH 420可向耦合至计算系统400的输入/输出(I/O)设备提供接口。ICH 420可通过诸如可顺应PCIe规范的外围组件互连(PCI)桥或通用串行总线(USB)控制器等外围桥(或控制器)424耦合到总线422。桥424可提供处理器402与外围设备之间的数据通路。可使用其它类型的拓扑。另外,多条总线可例如通过多个桥或控制器耦合到ICH 420。此外,总线422可包括其他类型和配置的总线系统。而且,在本发明的各实施例中,耦合到ICH 420的其他外围设备可包括集成驱动电子(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI))等。
总线422可耦合到音频设备426、一个或多个盘驱动器428、以及网络适配器430(其在一个实施例中可以是NIC)。在一个实施例中,网络适配器430或耦合到总线422的其他设备可与芯片组406通信。另外,在本发明的一些实施例中,各种组件(诸如网络适配器430)可耦合到GMCH 408。此外,处理器402和GMCH 408可被组合以形成单个芯片。在一实施例中,存储器控制器410可设在CPU 402中的一个或多个中。此外,在一个实施例中,GMCH 408和ICH 420可被组合成外围控制中枢(PCH)。
另外,计算系统400可包括易失性和/或非易失性存储器(或存储)。例如,非易失性存储器可包括以下的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、盘驱动器(例如,428)、软盘、压缩盘ROM(CD-ROM)、数字多用盘(DVD)、闪存、磁光盘、或能够存储电子数据(例如,包括指令)的其他类型的非易失性机器可读介质。
在一实施例中,存储器412可包括以下的一个或多个:操作系统(O/S)432、应用程序434、目录401、和/或设备驱动程序436。存储器412还可包括专用于存储器映射I/O(MMIO)操作的区域。作为存储器管理操作的一部分,存储在存储器412中的程序和/或数据可被交换到盘驱动器428中。应用程序434可(例如,在处理器402上)运行以与耦合到网络405的一个或多个计算设备传达一个或多个分组。在一个实施例中,分组可以是可用从至少一个发送方(例如,在诸如网络405之类的网络上)向至少一个接收方传送的一个或多个电信号来编码的一个或多个码元和/或值的序列。例如,每个分组可具有包括可用来路由和/或处理该分组的各种信息(诸如源地址、目的地址、分组类型等)的报头。每个分组还可具有包括该分组正在计算机网络(诸如网络405)上的各种计算设备之间传递的原始数据(或内容)的有效载荷。
在一个实施例中,应用程序434可利用O/S 432例如通过设备驱动程序436与系统400的各种组件通信。因此,设备驱动程序436可包括网络适配器430专用命令以例如通过芯片组406提供O/S 432与网络适配器430或耦合到系统400的其他I/O设备之间的通信接口。
在一实施例中,O/S 432可包括网络协议栈。协议栈一般是指可运行以处理在网络405上发送的分组的过程或程序集合,其中分组可遵守指定协议。例如,可以使用TCP/IP(传输控制协议/网际协议)栈来处理TCP/IP分组。设备驱动程序436可例如经由协议栈来指示将要处理的存储器412中的缓冲器。
网络405可包括任何类型的计算机网络。网络适配器430可进一步包括直接存储器访问(DMA)引擎,其向指派给可用描述符(例如,存储在存储器412中)的缓冲器(例如,存储在存储器412中)写入分组以在网络405上传送和/或接收数据。另外,网络适配器430可包括网络适配器控制器,其可包括用于执行适配器相关操作的逻辑(诸如一个或多个可编程处理器)。在一个实施例中,适配器控制器可以是MAC(媒体接入控制)组件。网络适配器430可进一步包括存储器,诸如任何类型的易失性/非易失性存储器(例如,包括一个或多个高速缓存和/或参照存储器412讨论的其他存储器类型)。
图5示出根据本发明一实施例的以点对点(PtP)配置安排的计算系统500。具体而言,图5示出其中处理器、存储器、以及输入/输出设备由多个点对点接口来互连的系统。参照图1-4所讨论的操作可由系统500的一个或多个组件来执行。
如图5所示,系统500可包括若干处理器,但为了清楚起见仅示出了其中两个处理器502和504。处理器502和504各自可包括本地存储器控制器中枢(GMCH)506和508以实现与存储器510和512的通信。存储器510和/或512可存储各种数据,诸如参照图4的存储器412所讨论的那些数据。如图5所示,处理器502和504(或系统500的其他组件,诸如芯片组520、I/O设备543等)还可包括一个或多个高速缓存,诸如参照图1-4所讨论的那些高速缓存。
在一个实施例中,处理器502和504可以是参照图4讨论的处理器402之一。处理器502和504可以分别使用点对点(PtP)接口电路516和518经由PtP接口514来交换数据。另外,处理器502和504可各自使用点对点接口电路526、528、530和532经由单独的PtP接口522和524来与芯片组520交换数据。芯片组520还可例如使用PtP接口电路537经由高性能图形接口536来与高性能图形电路534交换数据。
在至少一个实施例中,目录高速缓存120可设在处理器502、504和/或芯片组520中的一个或多个里。然而,本发明的其他实施例可存在于图5的系统500内的其他电路、逻辑单元、或设备中。此外,本发明的其他实施例可以分布在图5所示的若干电路、逻辑单元、或设备中。
芯片组520可使用PtP接口电路541与总线540通信。总线540可具有与之通信的一个或多个设备,诸如总线桥542和I/O设备543。经由总线544,总线桥542可与其他设备通信,诸如键盘/鼠标545、通信设备546(诸如调制解调器、网络接口设备、或可与计算机网络405通信的其他通信设备)、音频I/O设备、和/或数据存储设备548。数据存储设备548可存储可由处理器502和/或504运行的代码549。
在本发明的各实施例中,本文中例如参照图1-5讨论的操作可实现为硬件(例如,电路)、软件、固件、微代码、或其组合,它们可作为计算机程序产品来提供,例如包括其上存储有用于将计算机编程为执行本文中所讨论的过程的指令(或软件程序)的机器可读或计算机可读介质。另外,术语“逻辑”可包括,作为示例,软件、硬件或软件与硬件组合。机器可读介质可包括诸如关于图1-5所讨论的那样的存储设备。另外,这样的计算机可读介质可以作为计算机程序产品来下载,其中可用载波或其它传播介质中提供的数据信号经由通信链路(例如,总线、调制解调器或网络连接)将该程序从远程计算机(例如,服务器)传输到请求计算机(例如,客户机)。
说明书中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可被包含于至少一个实现中。在本说明书各处中出现的短语“在一个实施例中”可以全部或可以并非全部都指代同一实施例。
另外,在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其变形。在本发明的一些实施例中,可使用术语“连接的”来指示两个或更多元件彼此直接物理或电气接触。“耦合的”可表示两个或多个元件直接物理或电气接触。然而,“耦合的”也可表示两个或多个元件可能彼此并不直接接触,但是仍可彼此协作或交互。
因此,虽然已经用结构特征和/或方法动作专用的语言描述了本发明的实施例,但应当理解所要求保护的主题可以不受限于所描述的具体特征和动作。更确切地说,所公开的具体特征和动作是作为实现所要求保护的主题的示例性形式。
Claims (20)
1.一种装置,包括:
第一代理,用于从第二代理接收对应于目标地址的请求;以及
目录高速缓存,其耦合到所述第一代理,用于存储与耦合到所述第一代理的多个高速缓存代理相对应的数据,其中所存储的数据用于指示所述多个高速缓存代理中哪一个具有与所述目标地址相对应的数据的副本,
其中响应于确定所述多个高速缓存代理中的另一个高速缓存代理具有与所述目标地址相对应的数据的副本,在所述目录高速缓存中分配关于所述目标地址的条目。
2.如权利要求1所述的装置,其特征在于,所述第一代理用于响应于从所述多个高速缓存代理中的一个或多个接收的一个或多个监听响应来更新所述目录高速缓存。
3.如权利要求1所述的装置,其特征在于,所述第一代理用于响应于接收到所述请求来确定所述目录高速缓存中是否存在与所述目标地址相对应的条目。
4.如权利要求1所述的装置,其特征在于,还包括用于存储目录的存储器,其中所述目录用于存储与所述多个高速缓存代理中的至少一部分相对应的数据,其中所述第一代理用于响应于所述目录高速缓存中不存在与所述目标地址相对应的条目来确定所述目录中是否存在与所述目标地址相对应的条目。
5.如权利要求4所述的装置,其特征在于,所述第一代理用于响应于确定所述目录中不存在与所述目标地址相对应的条目基于所述请求来更新所述目录。
6.如权利要求1所述的装置,其特征在于,所述第一代理用于向所述多个高速缓存代理中被所述目录高速缓存标识为具有与所述目标地址相对应的数据的副本的一个或多个高速缓存代理发送一个或多个监听。
7.如权利要求1所述的装置,其特征在于,响应于确定所述目录高速缓存中存在与所述目标地址相对应的条目,所述第一代理用于确定是否向所述多个高速缓存代理中被所述目录高速缓存标识为具有与所述目标地址相对应的数据的副本的一个或多个高速缓存代理发送监听。
8.如权利要求1所述的装置,其特征在于,所述第一代理是所述目标地址的主代理。
9.如权利要求1所述的装置,其特征在于,还包括用于耦合所述第一代理和第二代理的串行链路。
10.如权利要求1所述的装置,其特征在于,所述第一代理和所述第二代理位于同一集成电路管芯上。
11.一种方法,包括:
在第一代理处接收对应于目标地址的请求;以及
响应于确定耦合到所述第一代理的多个高速缓存代理中的另一个高速缓存代理具有与所述目标地址相对应的数据的副本,在目录高速缓存中分配关于所述目标地址的条目。
12.如权利要求11所述的方法,其特征在于,还包括在所述目录高速缓存中存储数据以指示所述多个高速缓存代理中哪一个具有与所述目标地址相对应的数据的副本。
13.如权利要求11所述的方法,其特征在于,还包括响应于从所述多个高速缓存代理中的一个或多个接收的一个或多个监听响应来更新所述目录高速缓存。
14.如权利要求11所述的方法,其特征在于,还包括响应于接收到所述请求确定所述目录高速缓存中是否存在与所述目标地址相对应的条目。
15.如权利要求11所述的方法,其特征在于,还包括:
在存储器中存储目录,其中所述目录用于存储与所述多个高速缓存代理中的至少一部分相对应的数据;以及
响应于所述目录高速缓存中不存在与所述目标地址相对应的条目来确定所述目录中是否存在与所述目标地址相对应的条目。
16.如权利要求11所述的方法,其特征在于,还包括向所述多个高速缓存代理中被所述目录高速缓存标识为具有与所述目标地址相对应的数据的副本的一个或多个高速缓存代理发送一个或多个监听。
17.一种系统,包括:
存储器,用于存储目录;
第一代理,用于接收对应于目标地址的请求;以及
目录高速缓存,其耦合到所述第一代理,用于存储与耦合到所述第一代理的多个高速缓存代理相对应的数据,其中所存储的数据用于指示所述多个高速缓存代理中哪一个具有与所述目标地址相对应的数据的副本,
其中所述目录用于存储与所述多个高速缓存代理中的至少一部分相对应的数据,并且响应于确定所述多个高速缓存代理中的另一个高速缓存代理具有与所述目标地址相对应的数据的副本,在所述目录高速缓存中分配关于所述目标地址的条目。
18.如权利要求17所述的系统,其特征在于,所述第一代理用于响应于从所述多个高速缓存代理中的一个或多个接收的一个或多个监听响应来更新所述目录高速缓存。
19.如权利要求17所述的系统,其特征在于,所述第一代理用于向所述多个高速缓存代理中被所述目录高速缓存标识为具有与所述目标地址相对应的数据的副本的一个或多个高速缓存代理发送一个或多个监听。
20.如权利要求17所述的系统,其特征在于,还包括耦合到所述第一代理的音频设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/495,722 | 2009-06-30 | ||
US12/495,722 US20100332762A1 (en) | 2009-06-30 | 2009-06-30 | Directory cache allocation based on snoop response information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101937401A true CN101937401A (zh) | 2011-01-05 |
CN101937401B CN101937401B (zh) | 2012-10-24 |
Family
ID=43382018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102270581A Active CN101937401B (zh) | 2009-06-30 | 2010-06-29 | 基于监听响应信息的目录高速缓存分配的装置、方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20100332762A1 (zh) |
CN (1) | CN101937401B (zh) |
DE (1) | DE112010002777T5 (zh) |
TW (1) | TWI502346B (zh) |
WO (1) | WO2011008403A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521163A (zh) * | 2011-12-08 | 2012-06-27 | 华为技术有限公司 | 目录替换方法及设备 |
US8392665B2 (en) | 2010-09-25 | 2013-03-05 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN112579480A (zh) * | 2020-12-09 | 2021-03-30 | 海光信息技术股份有限公司 | 存储管理方法、存储管理装置以及计算机系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447934B2 (en) * | 2010-06-30 | 2013-05-21 | Advanced Micro Devices, Inc. | Reducing cache probe traffic resulting from false data sharing |
US9436972B2 (en) * | 2014-03-27 | 2016-09-06 | Intel Corporation | System coherency in a distributed graphics processor hierarchy |
US10007606B2 (en) * | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1196130A (zh) * | 1995-09-14 | 1998-10-14 | 诺基亚电信公司 | 在双工计算机部件中控制共享磁盘数据 |
US20050198187A1 (en) * | 2004-01-15 | 2005-09-08 | Tierney Gregory E. | System and method for providing parallel data requests |
US20060156155A1 (en) * | 2004-12-29 | 2006-07-13 | Sudhanva Gurumurthi | Detecting errors in directory entries |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6625694B2 (en) * | 1998-05-08 | 2003-09-23 | Fujitsu Ltd. | System and method for allocating a directory entry for use in multiprocessor-node data processing systems |
US6826651B2 (en) * | 1998-05-29 | 2004-11-30 | International Business Machines Corporation | State-based allocation and replacement for improved hit ratio in directory caches |
US6779036B1 (en) * | 1999-07-08 | 2004-08-17 | International Business Machines Corporation | Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system |
US6687789B1 (en) * | 2000-01-03 | 2004-02-03 | Advanced Micro Devices, Inc. | Cache which provides partial tags from non-predicted ways to direct search if way prediction misses |
FR2820850B1 (fr) * | 2001-02-15 | 2003-05-09 | Bull Sa | Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur |
US6681292B2 (en) * | 2001-08-27 | 2004-01-20 | Intel Corporation | Distributed read and write caching implementation for optimized input/output applications |
US20040022094A1 (en) * | 2002-02-25 | 2004-02-05 | Sivakumar Radhakrishnan | Cache usage for concurrent multiple streams |
US7096323B1 (en) * | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
US7296121B2 (en) * | 2002-11-04 | 2007-11-13 | Newisys, Inc. | Reducing probe traffic in multiprocessor systems |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
US7991966B2 (en) * | 2004-12-29 | 2011-08-02 | Intel Corporation | Efficient usage of last level caches in a MCMP system using application level configuration |
US20070079072A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Preemptive eviction of cache lines from a directory |
US7451277B2 (en) * | 2006-03-23 | 2008-11-11 | International Business Machines Corporation | Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation |
US7624234B2 (en) * | 2006-08-31 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | Directory caches, and methods for operation thereof |
FR2927437B1 (fr) * | 2008-02-07 | 2013-08-23 | Bull Sas | Systeme informatique multiprocesseur |
US8041898B2 (en) * | 2008-05-01 | 2011-10-18 | Intel Corporation | Method, system and apparatus for reducing memory traffic in a distributed memory system |
US8392665B2 (en) * | 2010-09-25 | 2013-03-05 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
-
2009
- 2009-06-30 US US12/495,722 patent/US20100332762A1/en not_active Abandoned
-
2010
- 2010-06-11 TW TW099119102A patent/TWI502346B/zh not_active IP Right Cessation
- 2010-06-17 DE DE112010002777T patent/DE112010002777T5/de not_active Ceased
- 2010-06-17 WO PCT/US2010/038956 patent/WO2011008403A2/en active Application Filing
- 2010-06-29 CN CN2010102270581A patent/CN101937401B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1196130A (zh) * | 1995-09-14 | 1998-10-14 | 诺基亚电信公司 | 在双工计算机部件中控制共享磁盘数据 |
US20050198187A1 (en) * | 2004-01-15 | 2005-09-08 | Tierney Gregory E. | System and method for providing parallel data requests |
US20060156155A1 (en) * | 2004-12-29 | 2006-07-13 | Sudhanva Gurumurthi | Detecting errors in directory entries |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392665B2 (en) | 2010-09-25 | 2013-03-05 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
US8631210B2 (en) | 2010-09-25 | 2014-01-14 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
CN102521163A (zh) * | 2011-12-08 | 2012-06-27 | 华为技术有限公司 | 目录替换方法及设备 |
CN102521163B (zh) * | 2011-12-08 | 2014-12-10 | 华为技术有限公司 | 目录替换方法及设备 |
US9208100B2 (en) | 2011-12-08 | 2015-12-08 | Huawei Technologies Co., Ltd. | Directory replacement method and device |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN107870871B (zh) * | 2016-09-23 | 2021-08-20 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN112579480A (zh) * | 2020-12-09 | 2021-03-30 | 海光信息技术股份有限公司 | 存储管理方法、存储管理装置以及计算机系统 |
CN112579480B (zh) * | 2020-12-09 | 2022-12-09 | 海光信息技术股份有限公司 | 存储管理方法、存储管理装置以及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
TWI502346B (zh) | 2015-10-01 |
WO2011008403A2 (en) | 2011-01-20 |
DE112010002777T5 (de) | 2012-10-04 |
WO2011008403A3 (en) | 2011-03-31 |
CN101937401B (zh) | 2012-10-24 |
TW201106159A (en) | 2011-02-16 |
US20100332762A1 (en) | 2010-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101937401B (zh) | 基于监听响应信息的目录高速缓存分配的装置、方法和系统 | |
CN103119571B (zh) | 用于目录高速缓存的分配和写策略的装置和方法 | |
CN102033715B (zh) | 在本地代理的存储器镜像和迁移 | |
US7707383B2 (en) | Address translation performance in virtualized environments | |
US9137179B2 (en) | Memory-mapped buffers for network interface controllers | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US8234407B2 (en) | Network use of virtual addresses without pinning or registration | |
US6973543B1 (en) | Partial directory cache for reducing probe traffic in multiprocessor systems | |
US7194517B2 (en) | System and method for low overhead message passing between domains in a partitioned server | |
US8055805B2 (en) | Opportunistic improvement of MMIO request handling based on target reporting of space requirements | |
US7797588B2 (en) | Mechanism to provide software guaranteed reliability for GSM operations | |
JPH1185710A (ja) | サーバ装置およびファイル管理方法 | |
CN101868786A (zh) | 虚拟化环境中的地址转换缓存和i/o高速缓存性能改进 | |
US20090157979A1 (en) | Target computer processor unit (cpu) determination during cache injection using input/output (i/o) hub/chipset resources | |
US11669453B2 (en) | Data prefetching method and apparatus | |
US7657724B1 (en) | Addressing device resources in variable page size environments | |
US20130111142A1 (en) | Method for accessing cache and pseudo cache agent | |
US8495091B2 (en) | Dynamically routing data responses directly to requesting processor core | |
US20130007376A1 (en) | Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems | |
CN103124962B (zh) | 优化环协议和技术 | |
US7958313B2 (en) | Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources | |
US6757793B1 (en) | Reducing probe traffic in multiprocessor systems using a victim record table | |
CN116802620A (zh) | 用于远程直接内存访问的设备和方法 |
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 |