CN101178692A - 用于提供事务处理存储器的高速缓冲存储器系统和方法 - Google Patents
用于提供事务处理存储器的高速缓冲存储器系统和方法 Download PDFInfo
- Publication number
- CN101178692A CN101178692A CN 200710184977 CN200710184977A CN101178692A CN 101178692 A CN101178692 A CN 101178692A CN 200710184977 CN200710184977 CN 200710184977 CN 200710184977 A CN200710184977 A CN 200710184977A CN 101178692 A CN101178692 A CN 101178692A
- Authority
- CN
- China
- Prior art keywords
- state
- cache
- cache line
- issued transaction
- transaction
- 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
-
- 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/0822—Copy 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)
Abstract
用于提供事务处理存储器高速缓冲存储器系统和方法。高速缓冲存储器相干性协议在包括高速缓冲存储器线的高速缓冲存储器上被实施,其中每个线在修改状态、自身拥有状态、专用状态、共享状态和无效状态之一中。访问所述高速缓冲存储器线中的至少一个的事务处理一启动,所述线中的每一个就被确保是共享的或无效的。在所述事务处理期间,响应于对在修改的、自身拥有或专用状态中的任一高速缓冲存储器线的外部请求,在没有将所述线写入主存储器的情况下,使在修改的或自身拥有状态中的每个线无效。而且每个专用线被降级到共享或无效状态中,而且所述事务处理被异常终止。
Description
技术领域
本发明涉及提供事务处理存储器的高速缓冲存储器系统和提供事务处理存储器方法。
背景技术
很久以来,在一个计算机系统内使用多个并行执行操作的处理器已经被认为是增加系统的计算性能和吞吐量的方法。然而,为了在这种系统中生成正确和可重复的结果,在不同的处理器之间的通信必须以可控制的方式出现。为了方便这种通信,所述处理器经常访问位于一个共享存储空间的相同的数据存储器以便在它们之间转移消息或其它数据,以及访问和可能修改在处理器之间被共享的其它数据。在一个例子中,所述处理器中的每一个可以要求“原子的”读-修改-写访问这些存储器位置中的一个或多个以避免破坏或损害在这些位置内的数据。换句话说,在不允许通过另一个处理器访问这些相同的位置的情况下,所述处理器中的每一个可能必须在特殊的数据上执行多个操作。
在一些计算机系统中,诸如二进制信号灯、计算锁和旋转锁的被称为“锁”的硬件密集的构造已经被用于提供对于处理器之间共享的数据的可控的访问。通常,成功访问一个锁或类似的构造的处理器已经可以不间断访问被所述锁保护的一个或多个存储器位置直到所述处理器决定解除该锁。尽管锁有效控制了访问处理器之间共享的数据,但是锁主要实现一种阻塞方案,意味着要求访问相同数据的其它处理器被临时停止,同时另一个处理器占用该锁,因此,负面地影响系统性能。阻塞数量还受被一个或多个锁保护的被共享数据的间隔尺寸程度的影响。例如,在高间隔尺寸中,其中每个锁保护相对小量的数据,与锁有关的开销数量被增加,但是任何单一的锁争用的数量被减少。相反,低间隔尺寸,其中每个锁保护更多数据,导致较少的锁被实现,但是还导致每个锁更多的争用。如果具有锁的处理器失效,则这种阻塞或争用被加剧。诸如死锁、活锁、和优先反转的与锁有关的其它众所周知的弊病也是有问题的。而且,锁的使用经常明显增加不必要的开销,这是因为在任一时间两个或多个处理器访问相同的被共享的存储器位置的几率在大多数计算机系统中相对是低的。
为解决这些问题,事务处理存储器的概念被发展。替代使用硬件阻塞方案,事务处理存储器利用一种更有利的、面向软件的方法。通常,一个处理器在一个或多个存储器位置上不考虑其它处理器的行动试验性地执行一系列操作,被称为“事务处理”,这样,在该点没有阻塞出现。同时,所述处理器在系统日志中记录所述操作。在所述必要的操作之后,所述处理器随后“确认”,或验证其它处理器未访问所述相同的被共享的数据。如果不是这样,则“提交”对所述数据进行的全部改变,或者使其成为永久的。否则,一种冲突可能已经出现,因此,要求所述处理器反转全部有关的存储器改变并且异常终止所述事务处理。在这种情况中,所述处理器通常能够立即自由地再尝试所述事务处理。
尽管基于软件的事务处理存储器被相信是对于现在的基于硬件的阻塞方案的积极和有效的替代,但是,通常招致大量的软件开销,因此,降低了事务处理存储器提供的一些好处。
发明内容
根据本发明的第一方面,提供了一种用于提供事务处理存储器的方法,包括:在一个包括第一高速缓冲存储器线的高速缓冲存储器上实施一种高速缓冲存储器相干性协议,其中,每个第一高速缓冲存储器线在修改的状态、自身拥有状态、专用状态、共享状态、和无效状态之一中;访问所述第一高速缓冲存储器线中的至少一个的第一事务处理一启动,就确保每个第一高速缓冲存储器线处于共享状态和无效状态之一中;在所述第一事务处理期间,响应于对于在修改的状态、自身拥有状态、和专用状态中的任一第一高速缓冲存储器线的第一外部请求:在没有将所述第一高速缓冲存储器线写入主存储器的情况下,使在修改的状态或自身拥有状态中的每个第一高速缓冲存储器线无效;将在专用状态中的每个第一高速缓冲存储器线降级到共享状态和无效状态之一中;以及异常终止所述第一事务处理。
根据本发明的第二方面,提供了一种用于提供事务处理存储器的高速缓冲存储器系统,包括:一个包括第一高速缓冲存储器线的高速缓冲存储器;以及一个高速缓冲存储器控制器,被配置来:在所述高速缓冲存储器上实施高速缓冲存储器相干性协议,其中,每一个第一高速缓冲存储器线在修改的状态、自身拥有状态、专用状态、共享状态、和无效状态之一中;访问所述第一高速缓冲存储器线中的至少一个的第一事务处理一启动,就确保每个第一高速缓冲存储器线在共享状态和无效状态之一中;以及在所述第一事务处理期间,响应于对于在修改的状态、自身拥有状态或专用状态中的任一第一高速缓冲存储器线的第一外部请求:在没有将所述第一高速缓冲存储器线写入一个主存储器的情况下,使在修改的状态和自身拥有状态中的每个第一高速缓冲存储器线无效;将在专用状态中的每个第一高速缓冲存储器线降级到共享状态和无效状态之一中;以及异常终止所述第一事务处理。
附图说明
图1是一个根据本发明的一个实施方案用于提供事务处理存储器的高速缓冲存储器系统的框图。
图2描述在现有技术中典型的高速缓冲存储器中的高速缓冲存储器线的可能的状态。
图3是一个根据本发明的一个实施方案提供事务处理存储器的方法的流程图。
图4是一个根据本发明的另一个实施方案在提供事务处理存储器的方法中可使用的数据结构的框图。
图5是一个根据本发明的另一个实施方案使用图4的数据结构提供事务处理存储器的方法的流程图。
具体实施方式
图1表示本发明的一个实施方案:一个高速缓冲存储器系统100包括一个高速缓冲存储器104和一个相关的高速缓冲存储器控制器102。高速缓冲存储器104包括多个高速缓冲存储器线106,它们中的每一个可以保留驻留在主存储器(未被显示)的一部分中的数据的复制品。典型地,高速缓冲存储器104是一种比所述主存储器小和快的存储器,允许被耦合到高速缓冲存储器104的处理器更快并且更有效地访问数据。在一个实施方案中,每条高速缓冲存储器线106占有容量以便保留所述主存储器的几个可寻址的存储器位置。如将在下面更详细被描述的,高速缓冲存储器控制器102被配置控制高速缓冲存储器104以便将高速缓冲存储器线106中的一个或多个用作一个事务处理存储器。
高速缓冲存储器系统100可以在任何数量的计算机系统结构中被使用。例如,几个处理器中的每一个可以包括一个高速缓冲存储器104和相关的高速缓冲存储器控制器102,其中,所述处理器中的每一个通过它的高速缓冲存储器104被耦合到一个主存储器。在另一个实现中,一种对称多处理器(SMP)系统可以包括几个处理器,它们中的每一个包括一个高速缓冲存储器104、一个高速缓冲存储器控制器102和一个主存储器。每个主存储器构成所述SMP系统中的任何一个处理器可访问的主存储器的一部分。其中每个处理器结合一个高速缓冲存储器的很多其它的多处理器系统,也可以受益于下面更详细被描述的高速缓冲存储器系统和方法的应用。
高速缓冲存储器控制器102在所述高速缓冲存储器104上实施一种高速缓冲存储器相干性协议。根据所述高速缓冲存储器相干性协议,每个高速缓冲存储器线106驻留在可以根据对于在相关的高速缓冲存储器线106内的数据的访问随时间改变的一种特殊的“状态”中。在一个实施方案中,所述高速缓冲存储器相干性协议是一种修改的-自身拥有-专用-共享-无效(MOESI)协议,被命名用于所述高速缓冲存储器线106中的每一个可以达到的不同的状态。
来自现有技术的MOESI高速缓冲存储器相干性协议的状态设置200在图2中用图表的形式被显示。不同的状态(即,无效状态202、共享状态204、专用状态206、自身拥有状态208、以及修改的状态210)以指示所述高速缓冲存储器线的内容的分级顺序被排列。将高速缓冲存储器线106从较低级状态转移到较高级状态被称为“晋级”,而将高速缓冲存储器线106从较高级状态转移到较低级状态是“降级”。
最低级状态是无效状态202。如果线106不包括来自与它相关的主存储器的任何有效的数据,则高速缓冲存储器线106是无效的。结果,这个高速缓冲存储器线106可用于存储从所述主存储器被读入的数据,通常作为请求读访问来自与所述高速缓冲存储器104耦合的处理器的数据的结果。
如果线106占有被存储在所述主存储器的相关存储位置中的数据的有效的(即,最近的)复制品,则高速缓冲存储器线106驻留在所述共享状态204中。在所述共享状态204中,与其它处理器有关的其它高速缓冲存储器104也可以保留相同的数据的最近的复制品。
如果高速缓冲存储器线106包括只在当前的高速缓冲存储器104中并且不在所述系统的任何其它高速缓冲存储器104中被发现的数据,并且该数据匹配主存储器中相应的数据值,则高速缓冲存储器线106可以驻留在所述专用状态206中。
在自身拥有状态208中,高速缓冲存储器线106包括来自所述主存储器的相关数据的最近的复制品。在所述系统内的其它高速缓冲存储器104也可以包括相同的被更新的复制品。然而,和所述共享状态204不同,在一种自身拥有的高速缓冲存储器线106中的数据可能不匹配在所述主存储器相应的存储位置中的数据。换句话说,在所述主存储器中被保留的相关的数据值是老的,或“陈旧的”。通常,只有一个高速缓冲存储器104在自身拥有状态208中保留所述数据;所有保留相同的所述数据的复制品剩余的高速缓冲存储器104将它们有关的高速缓冲存储器线106维持在所述共享状态204中。
在所述高速缓冲存储器相干性协议状态设置200顶上是所述修改的状态210。在所述修改的状态210中的高速缓冲存储器线106保留相关的数据的最近的复制品,并且在所述主存储器中相应的存储位置是陈旧的。而且,在所述系统中没有其它的高速缓冲存储器104在任一它们的高速缓冲存储器线106中保留所述数据的复制品。
通常由与所述高速缓冲存储器104耦合的处理器发起的在高速缓冲存储器线106上的各种读写操作经常根据所述高速缓冲存储器相干性协议改变所述高速缓冲存储器线106的特殊状态。所述协议允许不同的高速缓冲存储器104增强所述系统处理器并行访问所述主存储器中的数据,同时防止所述处理器使用用于所述相同的数据的不同的数值。在不同的高速缓冲存储器104内的数据值的这种实施部分地通过上面被描述的高速缓冲存储器线状态200发生,其中没有一个允许在一个高速缓冲存储器104中的数据的复制品与被存储在另一个高速缓冲存储器104中的相同的数据不一致。如稍后被描述的,这种性质被采用以便使用所述高速缓冲存储器线106中的至少一部分作为事务处理存储器。
假定使用一种典型的MOESI高速缓冲存储器相干性协议,下面的讨论提供了关于所述高速缓冲存储器104和相关的控制器102如何操作,以及每个高速缓冲存储器线106的状态在操作期间如何可以被晋级或降级的几个细节。这些细节中的一部分从实施方案到实施方案可以改变。
通常,根据这些特殊的MOESI状态200,只要目标数据驻留在所述高速缓冲存储器104中,高速缓冲存储器104就可以满足来自它相应的处理器的读取请求;换句话说,保留数据的特殊高速缓冲存储器线106可以处于除了所述无效状态202的任一状态中。然而,只有所述目标数据存在于在修改的状态210、自身拥有状态208、或专用状态206中的高速缓冲存储器线106之一中,从所述处理器到它的高速缓冲存储器104的写入才可能出现。而且,具有在自身拥有状态208中的高速缓冲存储器线106的高速缓冲存储器系统100通常通知其它高速缓冲存储器104所述写入操作,这样所述数据的复制品可以被更新或者也被无效。
如果高速缓冲存储器104不能满足来自它的处理器的读取请求,则高速缓冲存储器控制器102促使从所述主存储器读取所请求的数据,并且将该数据存储到高速缓冲存储器线106中。典型地,如果可利用,则所述数据被读入到一个无效的高速缓冲存储器线106中。否则,一个有效的高速缓冲存储器线106首先可以从高速缓冲存储器104被“驱逐”或者被消除,以便为新数据提供空间。在这种情况中,被影响的高速缓冲存储器线被(至少临时地)返回到无效状态202。通常,在共享状态204和专用状态206中的高速缓冲存储器线106可以在任何时间被驱逐,而在自身拥有状态208和修改的状态210中的高速缓冲存储器线106被写回到保留所述数据的过时的复制品的主存储器中。
在一种实现中,这种从所述主存储器读入到高速缓冲存储器104可以在一种“共享模式”或一种“专用模式”下被执行。在所述共享模式下,接收所述新数据的高速缓冲存储器线106经常进入共享状态204。如果与高速缓冲存储器104有关的处理器短期没有必要改变所述数据,或者如果所述线的复制品已经被存储在另一个高速缓冲存储器中,则所述共享模式可以被使用。作为替代,如果所述处理器计划为被高速缓存的数据写入一个新值,则所述数据可以在所述专用模式下从所述主存储器被读取,因此,允许接收所述数据的高速缓冲存储器线106达到专用状态206。在专用模式下,通常使与剩余的高速缓冲存储器104的每一个有关的高速缓冲存储器控制器102知道所述专用模式由所述请求高速缓冲存储器控制器102发起。
这种一个高速缓冲存储器控制器102被通知另一个的操作的情况在通过由其它的高速缓冲存储器控制器102启动的“探听(snooping)”或监控总线活动性的例子中出现。在其它的情况中,通过“广播”消息,高速缓冲存储器控制器102发起将它的活动性通知其它的控制器102,或者通过其它的控制器102请求行动。在一些实施方案中,根据要被执行的特殊操作,探听请求和广播消息的混合被使用,因为一些情况通过一个或另一个被最好地解决。在另一个例子中,通常每个高速缓冲存储器控制器102可访问的被存储在主存储器或另一个存储器中的高速缓冲存储器相干性目录可以保留对于保持高速缓冲存储器相干性必要的全部信息。
例如,高速缓冲存储器控制器102可以探听读访问以便确定是否另一个高速缓冲存储器控制器102正试图从驻留在它的相关的高速缓冲存储器104的修改的高速缓冲存储器线106中的主存储器读取数据。如果是,则高速缓冲存储器控制器102通常有责任拖延所述特殊的读取操作,这样,高速缓冲存储器控制器102可以将在修改的高速缓冲存储器线106中的数据写回到所述主存储器。在这种情况下,高速缓冲存储器线106被降级到共享状态204或无效状态202。
在另一个例子中,高速缓冲存储器控制器102可以请求写入到它当前保留在共享状态204中的高速缓冲存储器线106。这样做,高速缓冲存储器控制器102必须将线106晋级到专用状态206或自身拥有状态208。在晋级到专用状态206之前,高速缓冲存储器控制器102可以发布一个“无效”广播到其它的高速缓冲存储器控制器102,这样,它们可以将它们相应的高速缓冲存储器线106降级到无效状态202。
在另一种情况下,保留在专用状态210中的一个或多个高速缓冲存储器线106的高速缓冲存储器控制器102可以探听从其它的控制器102到所述主存储器的读取操作。如果这些读取操作之一涉及专用高速缓冲存储器线106之一,则控制器102通常将所述高速缓冲存储器线106降级到共享状态204。在高速缓冲存储器104和它的导致在所述高速缓冲存储器104和其它高速缓冲存储器104内的高速缓冲存储器线106的状态改变的控制器102内的操作的其它例子存在。
虽然前面的讨论主要集中在MOESI高速缓冲存储器,但是利用在图2中所示的状态200子集的其它高速缓冲存储器相干性协议经常被使用。例如,修改的-共享-无效(MSI)协议、修改的-专用-共享-无效(MESI)协议、或修改的-自身拥有-共享-无效(MOSI)协议可以被结合到本发明的其它实施方案中,导致一种用于高速缓冲存储器控制器102的更简单的设计,但是可能付出的代价是与所述MOESI协议相比较低效率的操作。例如,MOESI协议的自身拥有状态208允许高速缓冲存储器控制器102延迟反写任何它对于所述高速缓冲存储器线106进行的修改,同时允许其它的高速缓冲存储器104共享所述数据。同样地,在没有首先使被保留在其它高速缓冲存储器104中的数据的其它复制品无效的情况下,MOESI和MESI协议的专用状态206允许高速缓冲存储器控制器102修改一个专用高速缓冲存储器线106。
这些高速缓冲存储器相干性协议的任何之一可以在本发明的不同的实施方案中被使用,诸如提供事务处理存储器的方法300,它在图3的流程示意图中被描述。在此,方法300关于图1的高速缓冲存储器系统100被描述,但是其它的高速缓冲存储器系统配置可以在其它的实施方案中被使用。在方法300中,高速缓冲存储器控制器102在包括高速缓冲存储器线106的高速缓冲存储器104上实施一种高速缓冲存储器相干性协议,所述高速缓冲存储器线106中的每一个驻留在图2的状态200(即,无效状态202、共享状态204、专用状态206、自身拥有状态208、或修改的状态210)之一中(操作302)。因此,上面被描述的协议(即,MOESI、MESI、MOSI、或MSI)中的任何一个,或者使用这些状态的其它可能的协议可以被实施。
当与高速缓冲存储器104有关的处理器启动涉及所述高速缓冲存储器线106中的至少一个的事务处理时,高速缓冲存储器控制器102确保高速缓冲存储器线106中的每一个在共享状态204或无效状态202中(操作304)。因此,在一个实施方案中,高速缓冲存储器控制器102降级在修改的状态210、自身拥有状态208、或专用状态206中的任何一个高速缓冲存储器线106。在修改的状态210或自身拥有状态208的情况中,高速缓冲存储器控制器102可以清除或者反写在所述高速缓冲存储器线106中的数据以便更新主存储器中相应的位置。
在所述事务处理期间,对于在修改的状态210、自身拥有状态208、或专用状态206中的任一高速缓冲存储器线106的外部请求(即,不是所述事务处理发起的请求)(操作306)可以出现,因此,需要被影响的高速缓冲存储器线106降级。例如,未被直接耦合到高速缓冲存储器104的另一个处理器可以试图从主存储器读取被高速缓存在这些模式之一中的高速缓冲存储器线106之一中的数据。因此,高速缓冲存储器控制器102可以通过探听请求来检测所述读取尝试。在另一个例子中,所述外部请求可以是一种由于高速缓冲存储器104中自由空间的消耗造成的容量故障,因此,需要驱逐高速缓冲存储器线106之一。结果,在没有写高速缓冲存储器线106到所述主存储器的情况下,高速缓冲存储器控制器102使在修改的状态210或自身拥有状态208中的高速缓冲存储器线106中的每一个无效(即,降级到无效状态202)(操作308)。而且,高速缓冲存储器控制器102将在专用状态206中的每个第一高速缓冲存储器线106降级到共享状态204或无效状态202(操作310)。最后,所述事务处理被异常终止(操作312)。如果在没有异常终止的情况下所述事务处理成功地完成,则高速缓冲存储器控制器102根据正常的高速缓冲存储器相干性协议规则继续操作高速缓冲存储器104。
因此,在方法300的各种可能的实施方案下,高速缓冲存储器控制器102结合所述高速缓冲存储器相干性政策使用高速缓冲存储器104在所述事务处理期间主要延迟反写对于在高速缓冲存储器线106中的数据的任何改变至少直到所述事务处理被完成。
在一个实施方案中,由所述处理器执行的软件为全部高速缓冲存储器104维持一种单一的事务处理的状态。在这种情况中,通过设置所述事务处理状态,所述处理器指示高速缓冲存储器102一个事务处理的开始。同样地,如果高速缓冲存储器控制器102到所述处理器已经完成所述事务处理时未异常终止所述事务处理,则所述处理器清除所述事务处理状态以便向所述控制器102指示该事实。作为替代,如果高速缓冲存储器控制器102必须异常终止所述事务处理,则控制器102可以发布一个中断信号或陷阱到所述处理器来宣告所述事务处理的异常终止。在另一个实现中,一个或多个处理器指令的预测比特可以被设置来指示是否所述指令要被执行。在这个实施方案中,与高速缓冲存储器104有关的处理器每次只执行一个事务处理。在另一个实现中,如果所述事务处理完全独立使得一个事务处理的执行在被另一个处理的数据上没有影响,则每次可以进行超过一个的事务处理。
在另一个实施方案中,所述处理器可以同时处理多个事务处理,同时在所述事务处理之间实施数据独立性。图4提供了一个表示在一个实施方案中可使用的在逐个高速缓冲存储器线的基础上追踪事务处理的一组数据结构400的框图。更特别地,数据结构400通常包括一个与高速缓冲存储器104有关的事务处理标识符(ID)矢量410。在图4的特殊实施方案中,矢量410的每个比特412代表一个特殊的事务处理ID。因此,一个特殊的事务处理ID比特412被设置指示被标识的事务处理当前是使用中的。因此,在任何一个时间可能使用中的事务处理数量等于在所述事务处理ID矢量410中的比特412的数量。
数据结构400还包括一个驻留在与所述高速缓冲存储器104的每一个高速缓冲存储器线106有关的高速缓冲存储器线状态矢量414内的事务处理ID字段416。所述高速缓冲存储器线状态矢量414可以包括用于它的相应的高速缓冲存储器线106的其它状态信息,诸如所述高速缓冲存储器线的当前高速缓冲存储器相干性状态200、和指示来自所述主存储器的哪个数据被存储在所述线106中的用于所述线106的高速缓冲存储器标签。在图4的特殊的实施方案中,事务处理ID字段416提供一个事务处理ID的二进制编码值,所述高速缓冲存储器线106与它相关联。因此,每个高速缓冲存储器线106每次最多与一个事务处理相关联。如果所述事务处理ID字段416是零,则所述高速缓冲存储器线106不与任何事务处理相关联。
图5表示一种方法500,用于提供事务处理存储器,假定使用在图1的高速缓冲存储器系统内的图4的数据结构400。在一个实施方案中,一个事务处理首先将所述事务处理与一个事务处理ID相关联(操作502)并且在所述事务处理ID矢量410中设置相应的事务处理ID比特412(操作504)。在所述事务处理中要被涉及的高速缓冲存储器线106中的每一个被用在相应的高速缓冲存储器线状态矢量414的事务处理ID字段416中的事务处理ID标记(操作506)。
每个事务处理随后如上面被描述的被处理,其中只有与所述事务处理ID相关联的高速缓冲存储器线106被涉及。例如,一旦所述事务处理启动,与所述事务处理ID有关的高速缓冲存储器线106中的每一个被确保在无效状态202或共享状态204中(操作508);在所述高速缓冲存储器104中的其它高速缓冲存储器线106的状态200不必被修改。
在所述事务处理期间,对于具有相同的事务处理ID的在修改的状态210、自身拥有状态208或专用状态206中的任何一个高速缓冲存储器线106的外部请求可能出现,因此,需要所请求的高速缓冲存储器线106降级。作为响应,在没有将这些高速缓冲存储器线106的内容反写到所述主存储器的情况下,所述高速缓冲存储器控制器102可以使具有所述事务处理ID的在修改的状态210或自身拥有状态208中的高速缓冲存储器线106的每一个无效(即,降级到无效状态202)(操作512)。如前所述,未被直接耦合到所述高速缓冲存储器104的另一个处理器可以尝试从所述主存储器读取被高速缓存在这些模式之一中的高速缓冲存储器线106之一中的数据。换句话说,所述高速缓冲存储器控制器102可以检测或探听另一个处理器的读取尝试。而且,在相同的处理器上被执行的不同的事务处理也可以进行被所述高速缓冲存储器102检测的外部请求。可替代地,如上面被描述的,所述外部请求可以是一种容量故障。同样响应于所述外部请求,所述高速缓冲存储器控制器102可以将在专用状态206中的这些高速缓冲存储器线106的每一个降级到共享状态204或无效状态202(操作514)。随后,所述高速缓冲存储器控制器102异常终止用所述事务处理ID标识的事务处理(操作516)。为此目的,所述高速缓冲存储器控制器1 02可以随同正被异常终止的事务处理的事务处理ID一起发布一个中断到所述处理器。在其它的实施方案中,陷阱或预测比特可以被用于同样的目的。否则,如果所述事务处理成功地完成,则所述高速缓冲存储器控制器102继续在正常的高速缓冲存储器相干性协议规则下操作所述高速缓冲存储器104。
无论所述事务处理成功地终止还是被异常终止,所述事务处理ID矢量410的相关联的事务处理ID比特412都被清除(操作518)。因此,所述高速缓冲存储器控制器102为与所述特殊的事务处理ID相关联的每个高速缓冲存储器线106清除所述高速缓冲存储器线状态矢量412的事务处理ID字段416(操作520)。
如上面被描述的,本发明的各种实施方案利用与高速缓冲存储器相关联的控制器逻辑提供事务处理存储器,在过去,这几乎专门地在软件中被实现。因此,一个或多个这些实施方案的应用可以明显减少与纯软件事务处理存储器有关的开发时间和费用,同时通过减少通常与事务处理存储器有关的开销来提供更有效的解决方法。
尽管在此已经讨论了本发明的几个实施方案,但是本发明的范围包含的其它实施方案也是可能的。例如,尽管上面参考SMP计算系统结构描述了本发明的一些实施方案,但是使用多处理系统和高速缓存系统的其它系统也可以受益于本发明的其它实施方案。而且,其它实施方案可以被用于一个被耦合到执行多处理和线程并且因此执行多事务处理的单一的高速缓存系统的单一的处理器。而且,一个实施方案的多个方面可以被与可替代的实施方案的多个方面结合来建立更多的本发明的实现。因此,尽管在特殊的实施方案的上下文中已经描述了本发明,但是这种描述只是被提供用于说明而不是限制目的。因此,只能通过所附权利要求书确定本发明的适当范围。
Claims (10)
1.一种用于提供事务处理存储器的方法(300),包括:
在一个包括第一高速缓冲存储器线的高速缓冲存储器上实施(302)一种高速缓冲存储器相干性协议(200),其中,每个第一高速缓冲存储器线在修改的状态(210)、自身拥有状态(208)、专用状态(206)、共享状态(204)、和无效状态(202)之一中;
访问所述第一高速缓冲存储器线中的至少一个的第一事务处理一启动,就确保(304)每个第一高速缓冲存储器线处于共享状态(204)和无效状态(202)之一中;
在所述第一事务处理(306)期间,响应于对于在修改的状态(210)、自身拥有状态(208)、和专用状态(206)中的任一第一高速缓冲存储器线的第一外部请求:
在没有将所述第一高速缓冲存储器线写入主存储器的情况下,使在修改的状态(210)或自身拥有状态(208)中的每个第一高速缓冲存储器线无效(308);
将在专用状态(206)中的每个第一高速缓冲存储器线降级(310)到共享状态(204)和无效状态(202)之一中;以及异常终止(312)所述第一事务处理。
2.根据权利要求1中所述的方法(300),其中,确保(304)所述第一高速缓冲存储器线中的每一个处于共享状态(204)和无效状态(202)之一中包括:
从所述高速缓冲存储器清除在修改的状态(210)或自身拥有状态(208)中的每个第一高速缓冲存储器线;以及
将在专用状态(206)中的每个第一高速缓冲存储器线降级到共享状态(204)和无效状态(202)之一。
3.根据权利要求1中所述的方法(300),其中,第一个外部事件包括一个发自所述第一事务处理外边的探听请求和一个容量故障之一。
4.根据权利要求1中所述的方法(300),还包括:
通过与所述第一高速缓冲存储器线相关联的第一事务处理标识符接收所述第一事务处理的的执行的指示;
指示所述第一事务处理的异常终止;
通过与所述第二高速缓冲存储器线相关联的第二事务处理标识符接收访问所述高速缓冲存储器的第二高速缓冲存储器线中的至少一个的第二事务处理的执行的指示;以及
指示所述第二事务处理的异常终止。
5.根据权利要求4中所述的方法(300),其中,
接收所述第一事务处理的执行的指示包括检测事务处理标识符矢量(410)的第一个比特被设置,以及检测用于所述第一高速缓冲存储器线中的每一个的高速缓冲存储器线状态矢量(414)的事务处理标识符字段(416)被利用所述第一事务处理标识符而设置;并且
接收所述第二事务处理的执行的指示包括检测事务处理标识符矢量(410)的第二个比特被设置,以及检测用于所述第二高速缓冲存储器线中的每一个的高速缓冲存储器线状态矢量(414)的事务处理标识符字段(416)被利用所述第二事务处理标识符而设置。
6.一种用于提供事务处理存储器的高速缓冲存储器系统(100),包括:
一个包括第一高速缓冲存储器线(106)的高速缓冲存储器(104);以及
一个高速缓冲存储器控制器(102),被配置来:
在所述高速缓冲存储器(104)上实施高速缓冲存储器相干性协议(200),其中,每一个第一高速缓冲存储器线(106)在修改的状态(210)、自身拥有状态(208)、专用状态(206)、共享状态(204)、和无效状态(202)之一中;
访问所述第一高速缓冲存储器线(106)中的至少一个的第一事务处理一启动,就确保每个第一高速缓冲存储器线(106)在共享状态(204)和无效状态(202)之一中;以及
在所述第一事务处理期间,响应于对于在修改的状态(210)、自身拥有状态(208)或专用状态(206)中的任一第一高速缓冲存储器线(106)的第一外部请求:
在没有将所述第一高速缓冲存储器线写入一个主存储器的情况下,使在修改的状态(210)和自身拥有状态(208)中的每个第一高速缓冲存储器线(106)无效;
将在专用状态(206)中的每个第一高速缓冲存储器线(106)降级到共享状态(204)和无效状态(202)之一中;以及
异常终止所述第一事务处理。
7.根据权利要求6中所述的高速缓冲存储器系统(100),其中,为确保所述第一高速缓冲存储器线(106)中的每一个处于共享状态(204)和无效状态(202)之一中,所述高速缓冲存储器控制器(102)被配置来:
从所述高速缓冲存储器(104)清除在修改的状态(210)或自身拥有状态(208)中的每个第一高速缓冲存储器线(106);以及
将在专用状态(206)中的每个第一高速缓冲存储器线(106)降级到共享状态(204)和无效状态(202)之一中。
8.根据权利要求6中所述的高速缓冲存储器系统(100),其中,所述第一个外部请求包括一个发自所述第一事务处理外边的探听请求和一个容量故障之一。
9.根据权利要求6中所述的高速缓冲存储器系统(100),其中,所述高速缓冲存储器控制器(102)还被配置来:
通过与所述第一高速缓冲存储器线(106)相关联的第一事务处理标识符接收所述第一事务处理的执行的指示;
指示所述第一事务处理的异常终止;
通过与所述第二高速缓冲存储器线相关联的第二事务处理标识符接收访问所述高速缓冲存储器(104)的第二高速缓冲存储器线(106)中的至少一个的第二事务处理的执行的指示;以及
指示所述第二事务处理的异常终止。
10.根据权利要求9中所述的高速缓冲存储器系统(100),其中,所述高速缓冲存储器控制器(102)还被配置来:
检测事务处理标识符矢量(410)的第一个比特被设置,以及检测用于所述第一高速缓冲存储器线(106)中的每一个的高速缓冲存储器线状态矢量(414)的事务处理标识符字段(416)被利用所述第一事务处理标识符而设置以便接收所述第一事务处理的执行的指示;并且
检测事务处理标识符矢量(410)的第二个比特被设置,以及检测用于所述第二高速缓冲存储器线(106)中的每一个的高速缓冲存储器线状态矢量(414)的事务处理标识符字段(416)被利用所述第二事务处理标识符而设置以便接收所述第二事务处理的执行的指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/554672 | 2006-10-31 | ||
US11/554,672 US8924653B2 (en) | 2006-10-31 | 2006-10-31 | Transactional cache memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101178692A true CN101178692A (zh) | 2008-05-14 |
CN101178692B CN101178692B (zh) | 2011-08-03 |
Family
ID=39265108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710184977 Active CN101178692B (zh) | 2006-10-31 | 2007-10-31 | 用于提供事务处理存储器的高速缓冲存储器系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8924653B2 (zh) |
CN (1) | CN101178692B (zh) |
DE (1) | DE102007048507B4 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833517A (zh) * | 2009-05-27 | 2010-09-15 | 威盛电子股份有限公司 | 快取存储器系统及其存取方法 |
CN101833518A (zh) * | 2009-05-27 | 2010-09-15 | 威盛电子股份有限公司 | 微处理器及微处理器的数据快取存取方法 |
CN107408096A (zh) * | 2015-03-04 | 2017-11-28 | 高通股份有限公司 | 对硬件块的适应性存取控制 |
CN107967220A (zh) * | 2016-09-09 | 2018-04-27 | 马维尔国际贸易有限公司 | 具有对高速缓存线拥有者cpu的跟踪的多cpu设备 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8364906B2 (en) * | 2009-11-09 | 2013-01-29 | Via Technologies, Inc. | Avoiding memory access latency by returning hit-modified when holding non-modified data |
US9418016B2 (en) * | 2010-12-21 | 2016-08-16 | Intel Corporation | Method and apparatus for optimizing the usage of cache memories |
GB2491350B (en) | 2011-05-27 | 2020-02-12 | Advanced Risc Mach Ltd | Store-exclusive instruction conflict resolution |
US9229879B2 (en) * | 2011-07-11 | 2016-01-05 | Intel Corporation | Power reduction using unmodified information in evicted cache lines |
US9870384B2 (en) * | 2012-03-30 | 2018-01-16 | International Business Machines Corporation | Database system transaction management |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
US9244724B2 (en) * | 2013-08-15 | 2016-01-26 | Globalfoundries Inc. | Management of transactional memory access requests by a cache memory |
US10019354B2 (en) * | 2013-12-09 | 2018-07-10 | Intel Corporation | Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory |
WO2015122925A1 (en) * | 2014-02-14 | 2015-08-20 | Hewlett-Packard Development Company, L.P. | Free flow assurance of atomicity of multiple updates in persistent memory |
US9817693B2 (en) * | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
CN104951240B (zh) | 2014-03-26 | 2018-08-24 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及处理器 |
US10078589B2 (en) * | 2015-04-30 | 2018-09-18 | Arm Limited | Enforcing data protection in an interconnect |
CN107025130B (zh) | 2016-01-29 | 2021-09-03 | 华为技术有限公司 | 处理节点、计算机系统及事务冲突检测方法 |
US10528519B2 (en) * | 2017-05-02 | 2020-01-07 | Mellanox Technologies Ltd. | Computing in parallel processing environments |
US11169921B2 (en) * | 2019-05-09 | 2021-11-09 | Hewlett Packard Enterprise Development Lp | Ternary content addressable memory-enhanced cache coherency acceleration |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5897656A (en) * | 1996-09-16 | 1999-04-27 | Corollary, Inc. | System and method for maintaining memory coherency in a computer system having multiple system buses |
US6658536B1 (en) * | 1997-04-14 | 2003-12-02 | International Business Machines Corporation | Cache-coherency protocol with recently read state for extending cache horizontally |
US6374330B1 (en) * | 1997-04-14 | 2002-04-16 | International Business Machines Corporation | Cache-coherency protocol with upstream undefined state |
US6360231B1 (en) * | 1999-02-26 | 2002-03-19 | Hewlett-Packard Company | Transactional memory for distributed shared memory multi-processor computer systems |
US6374333B1 (en) * | 1999-11-09 | 2002-04-16 | International Business Machines Corporation | Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention |
US6477622B1 (en) * | 2000-09-26 | 2002-11-05 | Sun Microsystems, Inc. | Simplified writeback handling |
US6745297B2 (en) * | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US6775748B2 (en) * | 2002-01-24 | 2004-08-10 | Intel Corporation | Methods and apparatus for transferring cache block ownership |
KR100451211B1 (ko) * | 2002-10-31 | 2004-10-13 | 엘지전자 주식회사 | 이동 컴퓨팅 환경에서 트랜잭션 캐시 일관성 유지 시스템및 방법 |
US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
US7234028B2 (en) * | 2002-12-31 | 2007-06-19 | Intel Corporation | Power/performance optimized cache using memory write prevention through write snarfing |
US7587615B2 (en) * | 2003-09-12 | 2009-09-08 | International Business Machines Corporation | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
US20050086446A1 (en) * | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7685365B2 (en) * | 2004-09-30 | 2010-03-23 | Intel Corporation | Transactional memory execution utilizing virtual memory |
-
2006
- 2006-10-31 US US11/554,672 patent/US8924653B2/en active Active
-
2007
- 2007-10-10 DE DE200710048507 patent/DE102007048507B4/de active Active
- 2007-10-31 CN CN 200710184977 patent/CN101178692B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833517A (zh) * | 2009-05-27 | 2010-09-15 | 威盛电子股份有限公司 | 快取存储器系统及其存取方法 |
CN101833518A (zh) * | 2009-05-27 | 2010-09-15 | 威盛电子股份有限公司 | 微处理器及微处理器的数据快取存取方法 |
CN107408096A (zh) * | 2015-03-04 | 2017-11-28 | 高通股份有限公司 | 对硬件块的适应性存取控制 |
CN107408096B (zh) * | 2015-03-04 | 2020-01-07 | 高通股份有限公司 | 对硬件块的适应性存取控制 |
CN107967220A (zh) * | 2016-09-09 | 2018-04-27 | 马维尔国际贸易有限公司 | 具有对高速缓存线拥有者cpu的跟踪的多cpu设备 |
Also Published As
Publication number | Publication date |
---|---|
US20080104332A1 (en) | 2008-05-01 |
DE102007048507B4 (de) | 2014-07-17 |
US8924653B2 (en) | 2014-12-30 |
CN101178692B (zh) | 2011-08-03 |
DE102007048507A1 (de) | 2008-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101178692B (zh) | 用于提供事务处理存储器的高速缓冲存储器系统和方法 | |
US6456891B1 (en) | System and method for transparent handling of extended register states | |
US7469321B2 (en) | Software process migration between coherency regions without cache purges | |
US7360031B2 (en) | Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
JP3309425B2 (ja) | キャッシュ制御装置 | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US20080005504A1 (en) | Global overflow method for virtualized transactional memory | |
US20080270708A1 (en) | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System | |
US7003635B2 (en) | Generalized active inheritance consistency mechanism having linked writes | |
JP4119380B2 (ja) | マルチプロセッサシステム | |
US20090063782A1 (en) | Method for Reducing Coherence Enforcement by Selective Directory Update on Replacement of Unmodified Cache Blocks in a Directory-Based Coherent Multiprocessor | |
US7620954B2 (en) | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors | |
EP3404537B1 (en) | Processing node, computer system and transaction conflict detection method | |
US7376798B1 (en) | Memory management methods and systems that support cache consistency | |
JPH02141845A (ja) | マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法 | |
US10949292B1 (en) | Memory interface having data signal path and tag signal path | |
US20060294319A1 (en) | Managing snoop operations in a data processing apparatus | |
KR20070040340A (ko) | 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 | |
JP4577729B2 (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
US20040117564A1 (en) | System and method for reducing shared memory write overhead in multiprocessor systems | |
US5737568A (en) | Method and apparatus to control cache memory in multiprocessor system utilizing a shared memory | |
JP3550092B2 (ja) | キャッシュ装置及び制御方法 | |
WO2017074416A1 (en) | Managing cache operations using epochs | |
US8266379B2 (en) | Multithreaded processor with multiple caches |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170120 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: Hewlett Packard Development Co. |