CN1506846A - 在相关的多处理器中支持机会共享的方法和设备 - Google Patents
在相关的多处理器中支持机会共享的方法和设备 Download PDFInfo
- Publication number
- CN1506846A CN1506846A CNA2003101170139A CN200310117013A CN1506846A CN 1506846 A CN1506846 A CN 1506846A CN A2003101170139 A CNA2003101170139 A CN A2003101170139A CN 200310117013 A CN200310117013 A CN 200310117013A CN 1506846 A CN1506846 A CN 1506846A
- Authority
- CN
- China
- Prior art keywords
- processor
- cache line
- replacement block
- signal
- ment
- 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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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
技术领域
本发明一般地涉及微处理器系统,更具体地说,涉及能够在具有相关的高速缓存(coherent cache)的多处理器环境下运行的微处理器系统。
背景技术
处理器可以使用高速缓存(cache),以具有比需要直接从系统存储器访问全部数据时可能的速度更快的数据访问。从高速缓存进行读取可以比从系统存储器快得多。也可以写高速缓存,并延迟对系统存储器内相应数据的更新,直到处理器或其高速缓存方便的时候。当在多处理器环境下使用处理器高速缓存时,必须注意保证数据的各种副本(copy)相同,或至少保证任何改变都能得到跟踪和解释。数据的严格相等并非必要,甚至不是所期望的:如上所述,有时高速缓存会包含修改后的数据,并且以后会更新系统存储器。类似地,几个处理器可以共享数据。如果一个处理器向其高速缓存中写入了数据的更新副本,那么它应当或者告知其它处理器它进行了这样的操作,以使它们将来不要信任它们的数据,或者它应当向其它处理器全都发送一个更新数据的副本。即使不能保证多个处理器的高速缓存中的数据的相同性(equality),也保证这些数据的相关性(coherency)的各套规则称为高速缓存一致性方案。
一种高速缓存一致性方案是使用回写式(write-back)高速缓存的方案。在回写式高速缓存中,一般通过写高速缓存,并把状态设置为已修改(Modified)或“M”状态,或者设置为已持有(Owned)或“O”状态,就可以修改高速缓存中的数据。所述的O状态可被认为是一种修改共享(modified-shared)状态,其允许修改后的共享数据保留在高速缓存中。包含O高速缓存行(cache line)的高速缓存负责以后更新存储器。可以把处于已修改或“M”状态,或者已持有或“O”状态的高速缓存行称作脏(dirty)高速缓存行。但是,存储器内数据的副本可以保持在非脏状态下,避免了立即把脏数据写入存储器的需求。相对于在修改了高速缓存内的数据后,立即把脏数据写入存储器的操作来说,这可以取得性能上的改善。通常,脏数据会在触发事件后被写入存储器。这些触发事件可以包括逐出所述的脏高速缓存行,而逐出的原因是因为另一个高速缓存行想要在高速缓存内部对应的块中取代它,或者是因为另一个处理器想要修改同一个高速缓存行。
发明内容
本发明公开了一种用于改善高速缓存性能的处理器、系统和方法。所述处理器包括:从第一块中逐出第一脏高速缓存行的高速缓冲存储器;和耦合到所述高速缓冲存储器上和处理器间接口上的处理器间接口逻辑,该处理器间接口逻辑开始对耦合到所述处理器间接口上的第二处理器中的第一替代块的监听请求。
在本发明的一个实施例中,所述监听请求在所述第一脏高速缓存行的写行请求之后。在本发明的一个实施例中,所述处理器间接口逻辑从所述第二处理器收到处理器间接口消息信号后,将向所述第二处理器发送所述第一脏高速缓存行。其中,当所述第一替代块处于无效状态或共享状态时可以发送所述处理器间接口消息信号。在本发明另一个实施例中,当所述处理器间接口逻辑从耦合到所述处理器间接口上的第三处理器接收到对用于第二脏高速缓存行的第二替代块的监听请求时,所述高速缓存将发出接受信号。其中,所述接受信号可以表示所述第二替代块处于无效状态或共享状态。在本实施例中,当所述处理器的后退信号输入保持为假时,所述第二替代块可以接收所述第二脏高速缓存行。
本发明所提供的方法包括:从第一处理器的第一高速缓存中逐出脏高速缓存行;向第二处理器发送对第一替代块的监听请求;如果第一替代块是可用的,则从所述第二处理器发送处理器间接口消息,该接口消息表示了所述第一替代块的可用性;以及从所述第一处理器向所述第二处理器的所述第一替代块发送所述第一脏高速缓存行。
在本发明的一个实施例中,上述方法还可以包括:从所述第二处理器发送接受信号以表示所述第二处理器可以接收所述第一脏高速缓存行;还包括接收所述第一脏高速缓存行;确定所述第一替代块是否处于无效状态;确定所述第一替代块是否处于共享状态;或者禁止第三处理器发送表示了第二替代块的可用性的处理器间接口消息。在本发明的一个实施例中,上述禁止所述第三处理器包括从所述第二处理器向所述第三处理器发送所述接受信号。其中,所述第三处理器可以在后退输入端接收所述接受信号。在一个实施例中,所述方法还可以包括禁止存储器控制器接受所述脏高速缓存行。其中,所述禁止所述存储器控制器可以包括从所述第二处理器向所述存储器控制器发送所述接受信号。其中,所述存储器控制器可以在后退输入端接收所述接受信号。
本发明还提供了一种系统,包括处理器间接口;音频输入输出端,其通过接口耦合到所述处理器间接口上;第一处理器,包括要逐出脏高速缓存行的第一高速缓存,和耦合到所述第一高速缓存上和所述处理器间接口上的第一处理器间接口逻辑,所述第一处理器间接口逻辑对应所述脏高速缓存行开始沿着所述处理器间接口的监听请求;和第二处理器,包括具有第一替代块的第二高速缓存,和耦合到所述第二高速缓存上和所述处理器间接口上的第二处理器间接口逻辑,当第一替代块可用于接收所述脏高速缓存行时,所述第二处理器间接口逻辑响应所述监听请求。
在本发明的一个实施例中,所述系统还可以包括第三处理器,该第三处理器包括具有第二替代块的第三高速缓存和耦合到所述第三高速缓存上和所述处理器间接口上的第三处理器间接口逻辑,当第二替代块可用于接收所述脏高速缓存行时,所述第三处理器间接口逻辑响应所述监听请求。
在本实施例中,还可以当所述第一替代块可用时,所述第二处理器在接受信号上发送真值,并且其中,当在所述第三处理器的后退输入端上接收到所述接受信号上的所述真值时,所述第三处理器不表示它能够接收所述脏高速缓存行。
在本发明的一个实施例中,所述系统还可以包括耦合到所述处理器间接口上的存储器控制器,该存储器控制器包括后退输入端以表示所述存储器控制器不能接收所述脏高速缓存行。
在本实施例中,还可以当所述第一替代块可用时,所述第二处理器在接受信号上发送真值,并且其中,当接受信号上的所述真值正被输入所述存储器控制器的所述后退输入端时,所述存储器控制器不接收所述脏高速缓存行。
附图说明
在附图中以示例的方式,而不是以限制性的方式来图示本发明,附图中相似的标号代表类似的元件,其中:
图1是根据本发明一个实施例的多处理器系统的示意图;
图2是根据本发明一个实施例的高速缓存的图,示出了把高速缓存结构分配为组、块和字段的方案;
图3是根据本发明一个实施例,具有接受和后退信号线的处理器的示意图;
图4是根据本发明一个实施例,采用接受和后退信号线的总线连接的多处理器系统的示意图;
图5是根据本发明另一个实施例,采用接受和后退信号线的点对点连接多处理器系统的示意图。
具体实施方式
以下描述将说明用于操作多处理器系统中的高速缓存的技术。在以下描述中,将阐述许多具体的细节,例如逻辑实施、软件模块分配、总线信令技术以及操作的细节,以对本发明有更彻底的了解。然而,本领域的技术人员应当意识到,无需这些具体的细节就可以实现本发明。在其它实例中,就不再详细地示出控制结构、门级电路和全部软件指令序列,以免分散了对本发明内容的注意力。在所包括的说明内容的帮助下,本领域的普通技术人员无需过多的试验就可以实施适当的功能特性。本发明以微处理器系统内的硬件的形式进行公开。然而,还可以用其它形式的处理器来实现本发明,例如数字信号处理器,或者用包含处理器的计算机来实现,例如小型计算机或大型计算机。
参考图1,根据一个实施例示出了多处理器系统100的示意图。图1中的系统可以包括几个处理器,但为了简明起见,这里只示出了其中两个处理器140、160。处理器140、160可以包括一级(L1)高速缓存142、162。在一些实施例中,这些一级高速缓存142、162可以具有相同的高速缓存一致性方案,而在其它的实施例中,它们却可能具有相互不同的高速缓存一致性方案,尽管它们仍然存在于公共的系统总线106上或者另一种形式的处理器间接口上。高速缓存一致性方案常见的例子是有效/无效(VI)高速缓存、已修改/专有/共享/无效(MESI)高速缓存和已修改/已持有/专有/共享/无效(MOESI)高速缓存。“已持有”或O状态可能不如M、E、S或I状态那样众所公知。这种O状态可被认为是一种修改共享状态,其允许已修改的共享数据保留在高速缓存中。包含O高速缓存行(cache line)的高速缓存负责随后更新存储器。
图1中的多处理器系统100可以有几个功能部件(function),这些功能部件通过总线接口144、164、112、108与系统总线106相连。通过总线接口与系统总线相连的功能部件有一个通用的名字叫“代理(agent)”。代理的例子是处理器140和160、总线桥132和存储器控制器134。存储器控制器134可以允许处理器140、160对系统存储器110进行读写操作。总线桥132可以允许系统总线106和总线116之间的数据交换,所述总线116可以是ISA(工业标准结构)总线或PCI(外围元件互连)总线。在总线116上可以存在各种I/O(输入/输出)设备114,包括图形控制器、视频控制器和网络控制器。另一个总线桥118可以用来实现总线116和总线120之间的数据交换。总线120可以是SCSI(小型计算机系统接口)总线、IDE(综合驱动电子设备)总线或USB(通用串行总线)总线。另外的I/O设备可以和总线120相连。这些设备可以包括键盘和指针控制设备122(包括鼠标)、音频I/O 124、包括调制解调器和网络接口在内的通信设备126和包括磁盘驱动器和光盘驱动器在内的数据存储设备128。软件代码130可以存储在数据存储设备128上。
在其它实施例中,可以通过专用点对点接口来连接处理器140、160。例如,处理器140可以通过一个点对点接口与处理器160相连,并且处理器140可以通过第二点对点接口与总线桥132相连。在一些实施例中,可以用其它接口取代总线桥。系统存储器110可以被进一步细分,使其一部分通过第三点对点接口与处理器140相连接。通用术语“处理器间接口”可以用来包括系统总线和点对点接口。
参考图2,示出了一高速缓存的图,示出了根据本发明的一个实施例,把高速缓存结构分配为组(set)、块(block)和字段(field)的方案。高速缓存一般不存储单个存储位置,而是对存储器中的块的内容进行存储,这些内容被称为“高速缓存行”。按常见的说法,与高速缓存相关的术语“块”可以表示位置(location),而与高速缓存相关的“高速缓存行”可以表示对应的块中的内容。可以把高速缓存归类为完全关联的、组关联的和直接映射的三种。在完全关联高速缓存中,来自存储器的块可以进入高速缓存内的任何块位置。在组关联高速缓存中,可以把来自存储器的给定块放入高速缓存的一个特定子集内的任何块中,该特定的子集被称为“组”。最后,在直接映射高速缓存中,来自存储器的给定块只可以放入高速缓存中专门的块内。
在图2的实施例中,具有多个组,每个组有四个块。这可以称作四路组关联高速缓存。一般情况下,如果每个组都有n个块,那么高速缓存就可以被称作n路组关联高速缓存。注意,可以把完全关联高速缓存看作只有一个组,并且总块数为n的n路组关联高速缓存。类似地,可以把直接映射高速缓存看作块的数量等于组的数量的1路组关联高速缓存。
图2示出了许多组,组0 204、组1 208,向上一直延伸超过组6228。展开组3 216以显示其所包括的块,即从块0 230到块3 236。每个块都有数据、地址和状态字段。例如,块2包括数据Dy 264、地址Ay 254和状态E(专有)244。在一些实施例中,地址字段可能包括被称作标签、索引和块的子段,如图2所示。在这些子段中,块指的是块号,索引指的是组号,标签指的是形成地址所需的附加位。在其它实施例中,地址字段可能只包括标签。由于上下文可以提供地址的其它部分,所以仅使用标签可能就足够了。
参考图3,根据本发明的一个实施例,示出了具有接受和后退信号线的处理器300的示意图。处理器300包括高速缓存320和总线接口逻辑310,该总线接口逻辑310带有一个用于连接系统总线的总线抽头(busstub)312。所述总线接口逻辑310是处理器间接口逻辑的一个具体例子,用于与处理器间接口相连接。在其它实施例中,处理器间接口逻辑可能是一个点对点接口逻辑,用于与点对点接口相连接。
高速缓存320可以是一个回写式高速缓存。如果高速缓存320内的高速缓存行是脏的(已修改M或已占有O),则该脏高速缓存行将保留在高速缓存320中而不更新系统存储器,直到被逐出。在一些实施例中,当由于在存储器事务上发生了高速缓存未命中(cache miss)而需要把另一个高速缓存行加载到高速缓存中时,可以逐出一个高速缓存行。可以通过几种策略之一来选择所要逐出的现存高速缓存行,包括随机选择法、近来最少使用选择法和先入先出选择法。在其它情形中,一个脏高速缓存行可能由于另一个处理器中的存储器事务而被逐出,迫使这个脏高速缓存行进入无效状态。在逐出脏高速缓存行时,如果在逐出过程中,该脏高速缓存行未被写到其它某个地方,则该脏高速缓存行内的更新数据可能会丢失。在某些情况下,可以把脏高速缓存行写入系统存储器。然而,在图3的实施例中,高速缓存320可以开始一个写行事务(write-line),其包括监听(snoop)在其它带有高速缓存的代理中的可用替代块。
由于处理器300可以用在包括其它处理器的多处理器系统中,而所述的其它处理器可以开始一个包括监听在其它带有高速缓存的代理中的可用替代块在内的写行事务,所以处理器300可以被设计为响应这样一种监听本身。对这样一种监听的响应可以采用以下形式,即在高速缓存320内寻找可用作另一个处理器的脏高速缓存行的替代块的高速缓存行。为了被认为可用作高速缓存320内的替代块,潜在的替代块应当满足的标准是拥有这样一个高速缓存行。例如,让处理器300和另一处理器使用图2中高速缓存200的设计,并且让另一处理器在其组3内拥有脏高速缓存行。则处理器300可以有四个块作为潜在的替代块:在高速缓存320的组3内的四个块。一般而言,如果处理器具有n路组关联高速缓存,那么它就可以有n个潜在的替代块。
除了要属于正确的组之外,潜在的替代块还应当是可用的。在一个实施例中,如果潜在的替代块处于无效I状态,那么就可以把它用作对其它处理器的性能几乎没有影响的替代块。因此,在那个实施例中,对潜在的替代块的监听可以包括搜索潜在的替代块以发现那些处于无效I状态的块。
在另一个实施例中,对潜在的替代块的监听可以包括搜索潜在的替代块以发现那些处于无效I状态的块,并且,如果没有任何块处于无效I状态,则进一步搜索潜在的替代块以发现处于共享S状态的块。当高速缓存行处于S状态时,在另一处理器的高速缓存中的至少一个高速缓存内存在另一个副本。可以把脏高速缓存行写到处于S状态的高速缓存行的副本上,此高速缓存行的至少一个其它副本保存在处理器的高速缓存之一的某个地方。即使可能需要额外的总线周期来确定S分组的剩余高速缓存行是应处于S状态还是应被转换为专有E状态,但比起把脏高速缓存行写入系统存储器的操作来说,这对系统资源可能还更有效率。
如果处理器300确定它具有用于另一处理器的脏高速缓存行的可用替代块,那么它就可以在通过系统总线发送的消息中给出此可用替代块存在的信号。在其它实施例中,可以通过另一种形式的处理器间接口来发送该消息,例如通过点对点接口。然而,如果要发信号通知以下信息,即处理器300是几个处理器当中想要接受脏高速缓存行进入它的可用替代块,而不是进入其它处理器的高速缓存内的其它可用替代块的一个处理器,那么可以证明,使用另外的信号进行通知是有利的。在一个实施例中,可以使用独立的接受(Accept)信号线。然而,在图3的实施例中,可以在命中/接受信号332上携带接受信号,该命中/接受信号332由高速缓存320内的高速缓存接口逻辑324控制。命中信号线可预先存在于处理器中,以在由存储器读行(read-line)事务所产生的监听操作中发出高速缓存“命中”信号。然而,在诸如高速缓存行逐出等存储器写行事务中,可能不使用该命中信号线。因此,在图3的实施例中,该命中信号线就用组合命中/接受信号332来取代。在存储器读行事务中,命中/接受信号332可以采用逻辑真值来表示高速缓存命中。在存储器写行事务中,命中/接受信号线332可以采用逻辑真值来表示接受脏高速缓存行进入可用替代块的意愿。在其它实施例中,可以用其它形式发出“接受”信号。
在高速缓存接口逻辑324中还可以使用后退输入BOFF IN 336信号线。在一个实施例中,如果在监听替代块的过程中BOFF IN 336保持为真,那么处理器300就不接受脏高速缓存行进入其可用替代块(如果它有的话),而是让给其它处理器。如果在监听替代块的过程中BOFF IN 336保持为假,那么处理器300就可以接受脏高速缓存行进入其可用替代块(如果它有的话)。在一个实施例中,在断言(assert)命中/接受信号332后,可由处理器300对BOFF IN 336进行抽样。在其它实施例中,可以用其它形式发出“后退”信号。
参考图4,根据本发明的一个实施例,示出了采用接受和后退信号线的总线连接的多处理器系统400的示意图。在一个实施例中,处理器A420、处理器B 430、处理器C 440和处理器D 450中的每一个都可以具有和图3实施例的处理器300一样的功能。多处理器系统400还可以包括系统总线410,作为处理器间的接口;以及存储器控制器460,用于和系统400内的存储器470接口。
为了禁止一个以上的处理器从另一个处理器接受脏高速缓存行,处理器A 420、处理器B 430、处理器C 440和处理器D 450各自的命中/接受信号426、436、446、456可以组合起来并给出到后退信号BOFF IN424、434、444、454上。可以使用图4实施例所示的门422、432来完成对命中/接受信号426、436、446、456的组合。然而,可能还有很多其它种组合也能实现禁止一个以上的处理器从另一个处理器接受脏高速缓存行的功能。所示的实施例想让处理器D 450来接受脏高速缓存行,因为它的BOFF IN 454输入端没有被连接上。类似地,如果处理器D 450不可以接受脏高速缓存行,则处理器C 440可以接受脏高速缓存行;如果处理器C440或处理器D 450不可以接受脏高速缓存行,则处理器B 430可以接受脏高速缓存行。最后,只有当没有其它任何处理器可以接受脏高速缓存行时,处理器A 420才可以接受脏高速缓存行。
存储器控制器460还包括BOFF IN 464。在一个实施例中,如果在写行请求之后的监听阶段内BOFF IN 464为真,那么存储器控制器460就不能接受要写入存储器470的脏高速缓存行。在图4的实施例中,命中/接受信号426、436、446、456中的每一个都通过门462而连接到BOFF IN464,并且当命中/接受信号426、436、446、456中的任何一个保持为真时,BOFF IN 464都会保持为真。按照这种方式,当处理器中的任何一个能从另一个处理器接受脏高速缓存行时,存储器控制器460都不能接受那个脏高速缓存行。
在一个示例中,假设处理器B 430包括一个脏高速缓存行,并且发生了导致逐出这个脏高速缓存行的事件。那么处理器B 430就产生写行请求到系统总线410上。假设对于这个例子,处理器A 420和处理器C 440都在它们适当的高速缓存中设置了当前正处于无效I状态的块。然后,当处理器A 420和处理器C 440对可用替代块进行监听时,这些处于无效I状态的块将被确认为可用替代块。这时,可以把带有这方面信息的总线消息发送给处理器B 430。处理器A 420和处理器C 440也可以把命中/接受信号426和命中/接受信号446分别设为真。现在,处理器C 440可以接着在它的BOFF IN 444上读出逻辑假信号。但是处理器A 420在其BOFF IN424上却具有逻辑真信号,这是命中/接受信号446通过门422产生的结果。因此,处理器A 420将“后退”并且不接受脏高速缓存行,但允许处理器C 440接受脏高速缓存行。在命中/接受信号426和命中/接受信号446上的逻辑真值也可以通过门462被传递到存储器控制器460的BOFF IN464,以禁止存储器控制器460用脏高速缓存行更新存储器470。
在对读行请求后的监听阶段做出响应的时候,也可以把命中/接受信号426、436、446、456提供给系统总线410作为命中信号使用。
参考图5,根据本发明另一个实施例,示出了采用接受和后退信号线的点对点连接多处理器系统500。在这个实施例中,系统总线未被用作处理器间接口。取而代之,点对点接口502、504、506、508被用作连接处理器A 510、处理器B 520、处理器C 530和处理器D 540的处理器间接口。每个处理器可以包括两个或更多的用于点对点接口的点对点接口逻辑,例如处理器A 510包括点对点接口逻辑A 516和点对点接口逻辑B518。点对点接口逻辑A 516和B 518可以是等同的,或者可以包括用于给定应用的专门定制。
每个处理器,例如处理器A 510,可以包括一个用于连接一部分系统存储器550的存储器接口512。存储器接口512可以执行许多功能,这些功能通常由存储器控制器支持。处理器可以对其它处理器的存储器进行读或写,但在执行读写操作时可能需要经过一个或多个点对点接口。类似地,每个处理器,例如处理器A 510,可以包括高速缓存514。高速缓存可以对它自己的处理器的存储器进行读或写,或者可以对另一个处理器的存储器进行读或写。例如,处理器A 510的高速缓存514可以从处理器B520的存储器552中通过点对点接口502读取高速缓存行。另外的点对点接口可用于连接处理器的各种输入/输出设备(未示出)。
高速缓存514、524、534、544可以用类似于图3中高速缓存320的方式工作。假设是处理器A 510的高速缓存514。当逐出脏高速缓存行时,高速缓存514可以开始写行事务,其中包括对处理器B 520、处理器C 530和处理器D 540的高速缓存524、534、544中的可用替代块进行监听的请求。该监听请求不是通过总线进行,而是通过点对点接口502、504、506、508进行。如果其它高速缓存524、534、544中的一个或多个在潜在的替代块中具有处于无效I状态的高速缓存行,那么就可以把从高速缓存514逐出的脏高速缓存行写入高速缓存524、534、544中的替代块。在其它实施例中,可用替代块可以包括处于无效I状态或者共享S状态的高速缓存行。这些高速缓存中的一个或多个可以用通过点对点接口502、504、506、508中的一个或多个而发送的处理器间消息来发出信号表示替代块的可用性。
另外,处理器A 510、处理器B 520、处理器C 530和处理器D 540可以分别包括接受信号560、562、564、566。这些接受信号可以表示出相应处理器的高速缓存是否包括脏高速缓存行的可用替代块,其中接受信号的逻辑真值表示了可用替代块的存在。处理器A 510、处理器B 520、处理器C 530和处理器D 540还可以包括后退信号570、572、574、576。在一个实施例中,如果后退信号保持为逻辑真,则对应的处理器将被禁止接受脏高速缓存行进入其自身的可用替代块(如果有的话)。相反,如果后退信号保持为逻辑假,则相应的处理器可以接受脏高速缓存行进入其自身的可用替代块(如果有的话)。所述的接受和后退信号都被示出连接于点对点接口逻辑,但是在其它实施例中则可与处理器内的其它电路相连接。
用和图4实施例相似的方式,可以把接受信号560、562、564、566组合起来并给出到后退信号570、572、574、576上,以禁止一个以上的处理器从另一个处理器中接受脏高速缓存行。可以使用门580、582来完成对接受信号560、562、564、566的组合。然而,可能还有许多其它种组合也可以实现禁止一个以上的处理器从另一个处理器中接受脏高速缓存行的功能。所示的实施例想让处理器D 540来接受脏高速缓存行,因为它的后退信号576输入端没有被连接上。类似地,如果处理器D 540不可以接受脏高速缓存行,则处理器C 530可以接受脏高速缓存行;如果处理器C 530或处理器D 540不可以接受脏高速缓存行,则处理器B 520可以接受脏高速缓存行。最后,只有当没有其它任何处理器可以接受脏高速缓存行时,处理器A 510才可以接受脏高速缓存行。
接受信号560、562、564、566也可以通过门584组合起来以形成存储器后退信号558。在一个实施例中,可以由存储器接口512、522、532、542来监控存储器后退信号558。如果存储器后退信号558为真,则存储器接口512、522、532、542分别不能接受要写入存储器550、552、554、556的脏高速缓存行。在这种方式下,当所述处理器中的任何一个能从另一个处理器接受脏高速缓存行时,存储器接口512、522、532、542不会接受这个脏高速缓存行。
在前面的说明书中,参考其具体的示例性实施例对本发明进行了描述。然而,很显然,在不偏离如所附权利要求所述的本发明更广的精神和范围的条件下,可以对以上内容进行各种修改和改变。因此,本说明书和附图应被视为示意性的而非限制性的。
Claims (25)
1.一种处理器,包括:
高速缓冲存储器,其从第一块中逐出第一脏高速缓存行;和
耦合到所述高速缓冲存储器上和处理器间接口上的处理器间接口逻辑,该处理器间接口逻辑开始对耦合到所述处理器间接口上的第二处理器中的第一替代块的监听请求。
2.如权利要求1所述的处理器,其中,所述监听请求在所述第一脏高速缓存行的写行请求之后。
3.如权利要求1所述的处理器,其中,所述处理器间接口逻辑从所述第二处理器收到处理器间接口消息信号后,将向所述第二处理器发送所述第一脏高速缓存行。
4.如权利要求3所述的处理器,其中,当所述第一替代块处于无效状态时发送所述处理器间接口消息信号。
5.如权利要求3所述的处理器,其中,当所述第一替代块处于共享状态时发送所述处理器间接口消息信号。
6.如权利要求1所述的处理器,其中,当所述处理器间接口逻辑从耦合到所述处理器间接口上的第三处理器接收到对用于第二脏高速缓存行的第二替代块的监听请求时,所述高速缓存将发出接受信号。
7.如权利要求6所述的处理器,其中,所述接受信号表示了所述第二替代块处于无效状态。
8.如权利要求6所述的处理器,其中,所述接受信号表示了所述第二替代块处于共享状态。
9.如权利要求6所述的处理器,其中,当所述处理器的后退信号输入保持为假时,所述第二替代块接收所述第二脏高速缓存行。
10.一种方法,包括:
从第一处理器的第一高速缓存中逐出脏高速缓存行;
向第二处理器发送对第一替代块的监听请求;
如果第一替代块是可用的,则从所述第二处理器发送处理器间接口消
息,该接口消息表示了所述第一替代块的可用性;以及
从所述第一处理器向所述第二处理器的所述第一替代块发送所述第一脏高速缓存行。
11.如权利要求10所述的方法,还包括从所述第二处理器发送接受信号以表示所述第二处理器可以接收所述第一脏高速缓存行。
12.如权利要求11所述的方法,还包括接收所述第一脏高速缓存行。
13.如权利要求11所述的方法,还包括确定所述第一替代块是否处于无效状态。
14.如权利要求11所述的方法,还包括确定所述第一替代块是否处于共享状态。
15.如权利要求11所述的方法,还包括禁止第三处理器发送表示了第二替代块的可用性的处理器间接口消息。
16.如权利要求15所述的方法,其中,所述禁止所述第三处理器包括从所述第二处理器向所述第三处理器发送所述接受信号。
17.如权利要求16所述的方法,其中,所述第三处理器在后退输入端接收所述接受信号。
18.如权利要求11所述的方法,还包括禁止存储器控制器接受所述脏高速缓存行。
19.如权利要求18所述的方法,其中,所述禁止所述存储器控制器包括从所述第二处理器向所述存储器控制器发送所述接受信号。
20.如权利要求19所述的方法,其中,所述存储器控制器在后退输入端接收所述接受信号。
21.一种系统,包括:
处理器间接口;
音频输入输出端,其通过接口耦合到所述处理器间接口上;
第一处理器,包括要逐出脏高速缓存行的第一高速缓存,和耦合到所述第一高速缓存上和所述处理器间接口上的第一处理器间接口逻辑,该第一处理器间接口逻辑对应所述脏高速缓存行开始沿着所述处理器间接口的监听请求;和
第二处理器,包括具有第一替代块的第二高速缓存,和耦合到所述第二高速缓存上和所述处理器间接口上的第二处理器间接口逻辑,当第一替代块可用于接收所述脏高速缓存行时,所述第二处理器间接口逻辑响应所述监听请求。
22.如权利要求21所述的系统,还包括第三处理器,该第三处理器包括具有第二替代块的第三高速缓存及耦合到所述第三高速缓存上和所述处理器间接口上的第三处理器间接口逻辑,当第二替代块可用于接收所述脏高速缓存行时,所述第三处理器间接口逻辑响应所述监听请求。
23.如权利要求22所述的系统,其中,当所述第一替代块可用时,所述第二处理器在接受信号上发送真值,并且其中,当在所述第三处理器的后退输入端上接收到所述接受信号上的所述真值时,所述第三处理器不表示它能够接收所述脏高速缓存行。
24.如权利要求21所述的系统,还包括耦合到所述处理器间接口上的存储器控制器,该存储器控制器包括后退输入端以表示所述存储器控制器不能接收所述脏高速缓存行。
25.如权利要求24所述的系统,其中,当所述第一替代块可用时,所述第二处理器在接受信号上发送真值,并且其中,当接受信号上的所述真值正被输入所述存储器控制器的所述后退输入端时,所述存储器控制器不接收所述脏高速缓存行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/316,785 | 2002-12-10 | ||
US10/316,785 US7464227B2 (en) | 2002-12-10 | 2002-12-10 | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1506846A true CN1506846A (zh) | 2004-06-23 |
CN1287293C CN1287293C (zh) | 2006-11-29 |
Family
ID=32468912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101170139A Expired - Fee Related CN1287293C (zh) | 2002-12-10 | 2003-11-27 | 在相关的多处理器中支持机会共享的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7464227B2 (zh) |
CN (1) | CN1287293C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213524B (zh) * | 2005-06-29 | 2010-06-23 | 英特尔公司 | 能够减少监听访问的方法、装置和系统 |
CN105359485A (zh) * | 2013-06-28 | 2016-02-24 | 汤姆逊许可公司 | 由客户终端获得多媒体内容的内容部分的方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139947B2 (en) * | 2000-12-22 | 2006-11-21 | Intel Corporation | Test access port |
US20040111563A1 (en) * | 2002-12-10 | 2004-06-10 | Edirisooriya Samantha J. | Method and apparatus for cache coherency between heterogeneous agents and limiting data transfers among symmetric processors |
US7234028B2 (en) * | 2002-12-31 | 2007-06-19 | Intel Corporation | Power/performance optimized cache using memory write prevention through write snarfing |
US7290093B2 (en) * | 2003-01-07 | 2007-10-30 | Intel Corporation | Cache memory to support a processor's power mode of operation |
US7249224B2 (en) * | 2003-08-05 | 2007-07-24 | Newisys, Inc. | Methods and apparatus for providing early responses from a remote data cache |
US8612201B2 (en) * | 2006-04-11 | 2013-12-17 | Cadence Design Systems, Inc. | Hardware emulation system having a heterogeneous cluster of processors |
US7774549B2 (en) | 2006-10-11 | 2010-08-10 | Mips Technologies, Inc. | Horizontally-shared cache victims in multiple core processors |
US8296520B2 (en) * | 2007-12-19 | 2012-10-23 | International Business Machines Corporation | System and method for optimizing neighboring cache usage in a multiprocessor environment |
US8108623B2 (en) * | 2008-10-26 | 2012-01-31 | Microsoft Corporation | Poll based cache event notifications in a distributed cache |
US8140767B2 (en) * | 2009-06-04 | 2012-03-20 | International Business Machines Corporation | Cache management through delayed writeback |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100294105B1 (ko) * | 1992-04-29 | 2001-09-17 | 썬 마이크로시스템즈, 인코포레이티드 | 멀티 프로세서 컴퓨터 시스템의 일관성 카피-백 버퍼용 방법 및 장치 |
TW243509B (en) * | 1994-01-31 | 1995-03-21 | Ibm | Data processor with memory cache and method of operation |
US5557769A (en) * | 1994-06-17 | 1996-09-17 | Advanced Micro Devices | Mechanism and protocol for maintaining cache coherency within an integrated processor |
US6378048B1 (en) * | 1998-11-12 | 2002-04-23 | Intel Corporation | “SLIME” cache coherency system for agents with multi-layer caches |
US6678798B1 (en) * | 2000-07-20 | 2004-01-13 | Silicon Graphics, Inc. | System and method for reducing memory latency during read requests |
US6772298B2 (en) * | 2000-12-20 | 2004-08-03 | Intel Corporation | Method and apparatus for invalidating a cache line without data return in a multi-node architecture |
US6697918B2 (en) * | 2001-07-18 | 2004-02-24 | Broadcom Corporation | Cache configured to read evicted cache block responsive to transmitting block's address on interface |
US6801986B2 (en) * | 2001-08-20 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation |
US6898676B2 (en) * | 2002-10-03 | 2005-05-24 | Hewlett-Packard Development Company, L.P. | Computer system supporting both dirty-shared and non-dirty-shared data processing entities |
US7177983B2 (en) * | 2003-08-12 | 2007-02-13 | Intel Corporation | Managing dirty evicts from a cache |
-
2002
- 2002-12-10 US US10/316,785 patent/US7464227B2/en not_active Expired - Fee Related
-
2003
- 2003-11-27 CN CNB2003101170139A patent/CN1287293C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213524B (zh) * | 2005-06-29 | 2010-06-23 | 英特尔公司 | 能够减少监听访问的方法、装置和系统 |
CN105359485A (zh) * | 2013-06-28 | 2016-02-24 | 汤姆逊许可公司 | 由客户终端获得多媒体内容的内容部分的方法 |
CN105359485B (zh) * | 2013-06-28 | 2021-01-22 | 交互数字麦迪逊专利控股公司 | 由客户终端获得多媒体内容的内容部分的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040111566A1 (en) | 2004-06-10 |
CN1287293C (zh) | 2006-11-29 |
US7464227B2 (en) | 2008-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100327935B1 (ko) | 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴 | |
US6021468A (en) | Cache coherency protocol with efficient write-through aliasing | |
KR100274771B1 (ko) | Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법 | |
US5325504A (en) | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system | |
KR100318789B1 (ko) | 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법 | |
US6981106B1 (en) | System and method for accelerating ownership within a directory-based memory system | |
US6571322B2 (en) | Multiprocessor computer system with sectored cache line mechanism for cache intervention | |
KR100293136B1 (ko) | Smp버스의최근판독상태에서의캐시라인들의공유개입방법 | |
CN113853593A (zh) | 支持清空写入未命中条目的受害者高速缓存 | |
CN1677369A (zh) | 用于分级高速缓存行替换的方法、系统及装置 | |
JPH10333985A (ja) | データ供給方法及びコンピュータ・システム | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
KR19980079433A (ko) | 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템 | |
JPH10320283A (ja) | マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 | |
CN1287293C (zh) | 在相关的多处理器中支持机会共享的方法和设备 | |
JPH10289157A (ja) | Smpバスの共用介入優先方法及びシステム | |
EP0834129A1 (en) | Method and apparatus for reducing cache snooping overhead in a multilevel cache system | |
US6615321B2 (en) | Mechanism for collapsing store misses in an SMP computer system | |
CN1506845A (zh) | 异构代理高速缓存一致性和限制数据传输的方法和装置 | |
US8473686B2 (en) | Computer cache system with stratified replacement | |
US5675765A (en) | Cache memory system with independently accessible subdivided cache tag arrays | |
US6950906B2 (en) | System for and method of operating a cache | |
US7496715B1 (en) | Programmable cache management system and method | |
WO2006053334A1 (en) | Method and apparatus for handling non-temporal memory accesses in a cache | |
CN1849594A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061129 Termination date: 20131127 |