用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法

文档序号:6654878阅读:196来源:国知局
专利名称:用于在回写高速缓存中同时窥探推入或窥探取消操作过程中取消回写操作的系统和方法
技术领域
本发明总体上涉及计算机系统领域,并且更具体地,涉及微处理器中的高速缓存系统。
背景技术
为了快速处理数据,高性能处理系统要求快速的存储器存取和低的存储器等待时间。由于系统存储器向处理器提供数据很慢,所以高速缓存被设计为用于提供一种保持数据靠近处理器且以较快时间存取其数据的方法。较大的高速缓存具有较好的全面系统性能,但是与较小的高速缓存相比,可能无意地导致更多的等待时间和设计复杂度。通常较小的高速缓存被设计成为处理器提供一种与系统应用级的其它处理器同步或通信的快速方法,尤其是在网络或图形环境中。
处理器通过加载和存储向存储器存放数据和从存储器取回数据。来自系统存储器的数据及时填满高速缓存。最优情况为大多数或所有处理器存取数据都在高速缓存中。如果应用数据大小等于或小于高速缓存大小,则这是可能发生的。一般来说,高速缓存大小通常受设计或技术的限制,并且不能包含整个应用数据。当处理器存取不在高速缓存中的新数据并且没有高速缓存空间可以用来存放该新数据时,这就成为问题。因此,高速缓存控制器需要在新数据从存储器到达时为其在高速缓存中找到合适的空间。在高速缓存控制器中使用LRU(近期最少使用)算法,以便处理这种情况。LRU基于数据存取历史确定哪个位置用于新数据。如果LRU选择与系统存储器一致的线,例如共享状态,则新数据将被重写到该位置。当LRU选择标记为“修改”的线时,这意味着数据与系统存储器不一致,且是唯一的,高速缓存控制器强制将该位置的“修改”数据回写到系统存储器。该操作称为“回写”或“驱逐(cast out)”,包含回写数据的高速缓存位置称为“牺牲(victim)高速缓存线”。
在典型的高速缓存设计中,LRU算法用来通过除去最近最少使用的数据来最佳地估计软件对未来数据的再使用。然而,LRU可能做出不正确的选择,那可能导致未来的对该同一数据的高速缓存未命中(miss)。则这就需要另一个长等待时间从主存储器重载未命中数据。
除了该长等待时间回写和重载,另一种情况也可能导致性能下降。高速缓存控制器企图通过经由指定总线操作将数据发送给系统存储器,从而方便地完成回写操作。在回写操作过程中,总线窥探操作开始,其地址与回写地址匹配;将重试窥探操作。换句话说,直到回写数据在系统存储器中之前,都将重试对相同回写数据的所有后续窥探的命中。在系统总线上,窥探操作是必需的,以便保持多处理器高速缓存和系统存储器之间的存储器一致性。
由于回写操作是长等待时间的总线操作,命中回写地址的所有窥探操作都将重试。这就产生了系统性能问题,并且有时可能产生活锁情况。因此,通过尽可能避免该长等待时间的回写操作,系统性能将会更好。
实现一种示例性的回写高速缓存,为处理器提供以最优性能在任务之间存取数据、通信和同步的快速方法。即使进出该高速缓存的数据量很小,为了获得更好的性能,也需要尽可能取消回写操作的机制。有两种类型的操作在高速缓存中产生空闲空间,“窥探推入(snooppush)”或“窥探取消(snoop kill)”。窥探推入操作的一个实例来自于从不具有高速缓存的另一总线代理,例如系统总线上的IO控制器,对修改的高速缓存命中数据的存储。高速缓存控制器将重试总线上该IO控制器的存储请求,并且修改数据的最近的拷贝会被推出到存储器,以便IO控制器可以向存储器更新最近的修改数据。窥探推入操作将修改数据推出到系统存储器并且将该数据保持为共享或无效。窥探取消操作,例如,如在高速缓存刷新(flush)中,使一个条目失效,这在高速缓存中为后续高速缓存未命中重载产生空间。因此,由于窥探推入或窥探取消操作产生了空闲空间,因此回写对于并行高速缓存未命中重载是不必要的。
使用该机制提高了系统性能,因为取消的回写又消除了后续可能的高速缓存未命中以及在回写过程中原本可能命中牺牲的窥探重试。此外,取消像回写这样的长等待时间总线操作减轻了总线的紧张程度,尤其是当窥探推入操作同时发生时。因此,如果窥探状态机忙于进行窥探推入或窥探取消,则期望能够取消未决的回写操作。

发明内容
本发明提供执行高速缓存系统中回写操作的延迟取消。回写高速缓存经由系统总线连接到较低层的存储器。高速缓存未命中的重载操作把数据从较低或相同层存储器传送到高速缓存。回写操作把数据从高速缓存传送到较低层存储器。识别有效牺牲,确定窥探推入或窥探取消的进展状态,并对进展中的回写周期进行验证。确定基于对同时发生的窥探取消或窥探推入以及回写操作的结果响应的回写延迟取消的发展和起始的阶段。


为了更完整地理解本发明及其优点,现在参考下列结合附图的详细描述,其中图1以框图形式描述一种典型的多处理计算系统,其显示处理单元、高速缓存单元和总线接口单元如何串行和并行工作,以及本发明可以应用于何处;图2说明示例性回写高速缓存系统的基本框图;图3描述回写操作的流程图;图4详细说明对高速缓存未命中的回写操作的高速缓存线流;图5详细说明高速缓存中回写和窥探推入操作的高速缓存线流;以及图6说明通过窥探推入或窥探取消操作进行回写延迟取消的最终高速缓存数据队列操作。
具体实施例方式
在下列讨论中,叙述了许多具体细节以提供对本发明的完整理解。然而,本领域技术人员将理解,可以实现本发明而无需这样的具体细节。在其它实例中,公知元素以示意图或框图形式进行说明,以便不因为不必要的细节而使本发明模糊不清。此外,对于大多数部分,省略了关于网络通信、电磁信令技术等的细节,因为认为这样的细节对于获得对本发明的完整理解不是必需的,并且认为这样的细节在相关领域普通技术人员的理解范围内。
在本说明书的剩余部分中,示例性的高速缓存可以是数字逻辑操作的单个高速缓存,用于在窥探推入或窥探取消在某一器件中进行的中途防止回写操作。示例性的高速缓存也可以是根据为给定计算器件开发的某方法或算法而共享数据处理的许多处理单元之一。还要注意,除非另外指明,这里描述的所有功能都可以按硬件或软件或其某种结合来执行。然而,在优选实施例中,这些功能按硬件高速缓存数字器件来执行。离散数据的移动依照诸如计算机程序代码的代码、软件和/或被编码为执行这些功能的集成电路,除非另外指明。
参见图1,所公开的是示例性的多处理器系统100的框图,说明了多个处理器、高速缓存和交互工作子系统。
本领域技术人员应该理解子系统的相互关系和复杂度,包含处理器、系统总线、存储器控制器、存储器总线、主存储器模块、高速缓存等。整个系统依赖于正确的定时、布局和进出存储器器件的数据替换。数据可以同时被传送或存储。处理器中的动态存储大多经常发生在高速缓存中。在高速缓存内通常包含带有专用于窥探的端口的专用目录。窥探是一种处理,借此从(slave)高速缓存监视系统总线并比较传送的地址与高速缓存目录中的地址。在发现匹配的情况下可以执行额外的操作。术语“总线窥探”或“总线监视”是等同的。
图1呈现了带有通用中央处理器单元CPU 1105和CPU2 110的示例性多处理器系统的视图,通用中央处理器单元CPU1 105和CPU2110例如可以包括指令单元、指令高速缓存、数据高速缓存、定点单元、浮点和本地存储器。处理器CPU1 105和CPU2 110通过总线耦合或包围较低级高速缓存,例如高速缓存115和高速缓存142所代表的那些高速缓存。高速缓存115和高速缓存142耦合到总线接口单元BusIF 125和BusIF 144,它们又耦合到公共系统总线150。其它处理器的高速缓存可以经由另外的总线接口单元耦合到系统总线150,以便具有处理器间的通信。除了“n”个处理器,存储器控制器,MEM CTL160也耦合到系统总线150。系统存储器170耦合到MEM CTL 160,用于处理器CPU1 105和CPU2 110共享的公共存储,这对于系统中任意个数的“n”个处理器都是正确的。
然后转向图2,系统100的视图被放大以便从图1中查看代表性的高速缓存142的位置。高速缓存142包括数据队列电路(CDA),CDA 146用于数据存储,及其控制逻辑。控制逻辑包括目录DIR 147、“读取和声明”有限状态机RC 143,用于处理来自处理器核的可高速缓存的存储器存取、WB 144(回写)状态机,用于处理到存储器的数据回写、和窥探状态机Snoop 145。目录147保存高速缓存数据标签和高速缓存数据状态。
RC 143状态机执行可高速缓存的存储器存取指令。这包括锁定捕获或原子指令调用、加载和保留、存储条件性和指令用于处理间同步。这一系列指令的目的是通过把公共数据的所有权给予处理器而在多处理器系统中以顺序方式同步处理器之间的操作。一般来说,这一系列指令的目的是通过把数据的所有权每次给予一个处理器而在多处理器系统中同步处理器之间的操作。
在由于上述指令之一而发生高速缓存未命中时,以及在高速缓存142满时,WB 144状态机处理RC 143状态机的回写,并且牺牲条目为修改的状态。
窥探机(Snoop)145处理来自于系统总线150的窥探操作以保持整个系统的存储器一致性。
图3以本发明的一个示例性实施例的流程图说明回写操作。该流程图描述对关于是否需要回写的决定过程。一般来讲,该示例实现是高速缓存(142)只有一个回写(WB 144)状态机的情况。当执行可高速缓存存储器存取指令,RC 143未命中DIR 147(目录)查找并且高速缓存142中没有空间时,“读取和声明”(RC 143)状态机指派回写请求。就在DIR 147目录查找301,并发现未命中,且高速缓存数据阵列146中没有空闲空间(目录未命中302和空闲条目303)之后,RC 143指派WB 144状态机。如果所指定的最近最少使用牺牲条目304被修改,WB 144必须把该条目被修改线305回写到存储器中,以便在高速缓存142中产生空间。
接下来,WB 144状态机检查未决的窥探306。WB 144检查回写延迟取消进展。该情况在窥探机忙于处理窥探推入无效或窥探取消操作时发生。当WB 144延迟取消有效时,WB 144状态机转到空闲状态,因为回写是外来功能。如果WB 144延迟取消不是有效的,WB 144状态机继续将牺牲条目存储到存储器中,以在307完成回写操作。
转到图4,所公开的是示例性的五线高速缓存400。图4说明由于高速缓存未命中因此牺牲线回写的情况下的回写的高速缓存管理。高速缓存142的第一操作发生在列“A”,显示高速缓存400的初始状态。
高速缓存未命中是未被满足的从高速缓存读取的请求,需要程序来请求数据从较低存储器或同级的高速缓存重新载入。由于该未命中,如果没有用于重新载入的数据的空间,以及如果牺牲条目被修改,牺牲条目通过回写命令被逐出到较低存储器。被修改的线是数据修改的结果,其中该数据在系统中的任何地方都没有拷贝。换句话说,当前高速缓存和从主存储器位置取回的条目之间是无效的匹配。
LRU算法可以用来选择用于回写的牺牲条目,它是在后续加载或存储操作中最不可能存取的数据。当存在来自可高速缓存存储器存取指令的未命中但原子高速缓存中的所有条目仍然有效时,使用牺牲指针来回写被修改条目。
仅为了说明性目的,假定五个条目用有效的可高速缓存存储器数据填充。由于在可高速缓存存储器存取指令执行时的高速缓存未命中,RC 143状态机指派WB 144状态机回写牺牲线。在高速缓存数据阵列400的列“B”中,LRU选择被修改的需要回写的牺牲线。在高速缓存数据阵列400的列“C”中,牺牲线被发送到系统存储器。在回写之后,使牺牲线无效,并且使牺牲线可用于重新载入。
最近最少使用寄存器(LRU)选择一个牺牲条目403(LRU是一种逻辑电路,它不断分析高速缓存存取历史并确定哪一线是最近最少使用的条目)。然后,WB机去除最少使用的数据线,以使为新条目释放该线。这一新条目用于高速缓存未命中重载。因此,除非牺牲线403处于共享状态,回写机进行回写工作并使每个牺牲条目无效。在最后的操作中,牺牲线403用于下一个高速缓存未命中的重载。
在图4中,本领域的普通技术人员理解,使得在高速缓存数据阵列中有效和无效条目的入口和出口之间存在差别。目前的说明只是高速缓存数据阵列400中牺牲线403的位置的一个实例。另外的实施例可以包括在单个处理器中或在多个协处理器之中及之间并行或串行工作的多个高速缓存。
而且,这只是若干组合安排中的一个实施例。高速缓存并不局限于五线高速缓存系统。然而,当固定元素的数量增大时,矩阵的尺寸将增大并且组合可能性的总数也会增大,导致等待时间增大。
图5继续高速缓存400数据阵列模式的实施例的视图。当回写和窥探推入或窥探取消操作在高速缓存数据阵列CDA 400的不同条目同时发生时,回写是不必要的,因为窥探推入或窥探取消会产生无效条目。这在CDA 400中是非常重要的,因为CDA 400只有五个条目可用于可高速缓存存储器存取操作(如前面在图4中讨论的)。如果允许回写和窥探推入同时发生,则五个条目中的两个将变为无效,并且严重降低性能。
为了解决这个问题,如果窥探机忙于进行窥探推入或窥探取消,延迟取消逻辑添加到WB 144中,以取消未决回写。如CDA 400的列“C”所示,如果回写保持未取消,则它在回写之后留下两个无效的条目。因此,该回写是不必要的,因为窥探推入或窥探取消的清除操作已经清除了一条线。当收到窥探取消或窥探推入时,有效牺牲403线为高速缓存未命中回写到存储器,留下两个无效条目。WB 144具有检测执行过程中同时的窥探推入或窥探取消操作的机制。如果状态机检测到一个窥探推入或中止,则未决回写被“延迟取消”。
图6代表最终的高速缓存142(以及在本实例中类似地,高速缓存115或任意数量的n个处理器)的高速缓存状态。由于WB 144的延迟取消,回写不发生并在高速缓存数据阵列400中保留这四个有效线。然后它等待数据的重载,这是窥探推入或窥探取消条目。明显地,五个条目中的四个在WB 144状态机的最后仍然有效,这是预期的和期望的结果。
已经通过参考一些实施例描述了本发明,应该注意,所公开的实施例本质上是说明性的,而非限制性的。在前述公开中预期范围很宽的变更、修改、变化和代替,并且在一些实例中,可以应用本发明的一些特征而无需相应使用其它特征。可以认为本领域的技术人员希望基于对这些实施例的前述描述的回顾进行许多这样的变更和修改。因此,广义地并且以本发明范围一致的方式解释所附权利要求书是合适的。
权利要求
1.一种系统,用于在线的并发的窥探推入或窥探取消过程中启动回写的延迟取消,该系统包括处理器,其耦合到回写高速缓存,该高速缓存进一步耦合到系统总线;多个一致的高速缓存数据阵列,其附着在回写高速缓存中;高速缓存管理,其使用目录为高速缓存数据阵列中的每个条目存储状态信息。
2.权利要求1中的系统,其中回写操作控制器处理延迟取消操作。
3.权利要求2中的系统,其中牺牲选择机制基于处理器过去的存取历史定位可能的回写牺牲。
4.权利要求2中的系统,其中窥探推入或窥探取消操作检测机制取消同时的回写操作。
5.权利要求4中的系统,其中窥探推入或窥探取消继续执行,以便制造一个空槽来补偿回写延迟取消。
6.权利要求2中的系统,其中回写延迟取消停止把被修改的牺牲数据传送到较低层存储器以及保持牺牲条目有效。
7.一种执行高速缓存系统中回写操作的延迟取消的方法,包括将回写高速缓存耦合到总线;解析处理器的可高速缓存存储器存取历史;识别回写高速缓存中的有效牺牲;确定回写高速缓存中窥探推入或窥探取消的进展状态;验证进行中的回写周期和回写高速缓存内的发展阶段;以及基于对并发的窥探取消或窥探推入以及回写高速缓存内的回写操作的结果响应,启动回写状态的延迟取消。
8.权利要求7中的方法,其中延迟取消操作包括回写高速缓存中的窥探控制器与用于延迟取消回写的回写控制器之间的组合处理。
9.权利要求7中的方法,其中,如果有进行中的窥探推入或中止类型,则延迟取消回写被激活。
10.权利要求9中的方法,其中,如果有进行中的回写,则延迟取消回写被激活。
11.权利要求9中的方法,其中对于延迟取消回写的决定包括确定窥探推入或窥探取消操作的同时进展以及回写高速缓存内的回写操作。
12.权利要求9中的方法,其中延迟取消回写的处理还包括传递这样的验证代码,即预期的牺牲对于延迟取消回写是一个有效牺牲。
13.一种计算机程序产品,用于在计算机系统中验证代码,该计算机程序产品具有包括计算机程序的介质,该计算机程序包括用于确定与回写同时的窥探推入或窥探取消的计算机代码;用于验证有效的牺牲线的计算机代码;用于从回写高速缓存数据阵列空间逐出被修改的牺牲的计算机代码。
14.一种计算机程序,用于在计算机系统中提供延迟取消回写,该延迟取消回写包括计算机程序,该计算机程序包括用于确定同时的窥探推入或窥探取消以及回写的计算机代码;用于从回写高速缓存数据阵列刷新未修改的牺牲的计算机代码。
全文摘要
一种高速缓存回写操作,把被修改的数据从高速缓存数据阵列回写到存储器以解决它们之间的不一致,可以通过回写与窥探推入或窥探取消操作之间进展的比较结果来取消回写操作。回写的目的是使空槽由于高速缓存未命中而容纳重载数据,且由于窥探推入或窥探取消操作在高速缓存中创建无效的条目,因此不需要回写。如果存在与回写操作同时的推入或中止,那么延迟取消回写机。由于在高速缓存数据阵列中保留了更多的高速缓存线以备可能的未来重用,系统性能提高。
文档编号G06F12/12GK1910560SQ200580002354
公开日2007年2月7日 申请日期2005年6月1日 优先权日2004年6月3日
发明者罗伊·金文石, 大川保吉, 张光赏 申请人:索尼计算机娱乐公司, 国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1