面向多核多处理器平台的Cache一致性协议的设计方法

文档序号:6634237阅读:358来源:国知局
面向多核多处理器平台的Cache一致性协议的设计方法
【专利摘要】本发明公开了一种面向多核多处理器平台的高速缓存(Cache)一致性协议的设计方法,其中,位于两个Cache一致性同步域的Cache行具有两种共享态,所述两种共享态分别用于指示所述Cache行在两个Cache一致性同步域中的共享情况。本发明公开的面向多核多处理器平台的Cache一致性协议的设计方法,能够减少部分写操作及无效操作引起的数据同步消息数量,降低数据同步消息延迟,从而提升协议的数据同步效率。
【专利说明】面向多核多处理器平台的Cache —致性协议的设计方法

【技术领域】
[0001]本发明涉及计算机系统结构领域,尤其涉及一种面向多核多处理器平台的高速缓存(Cache) —致性协议的设计方法。

【背景技术】
[0002]多核多处理器平台已经成为一种常见的计算机结构。在此结构中,多核多处理器系统由多个处理器构成,且每个处理器具有至少两个处理器核。在处理器内部,每个处理器核通常具有私有的数据/指令Cache,并可能共享最后一级Cache。举例而言,如图1所示,多核多处理器系统包括两个处理器(处理器O及处理器I),且每个处理器具有两个处理器核,每个处理器核具有私有分立的数据/指令LI Cache,同时处理器内部的两个处理器核共享一个统一的L2 Cache。
[0003]在上述系统中,于处理器内部,多个处理器核的私有Cache可能共享数据,需要维护数据一致性,同时,不同处理器之间同样可能共享数据,也需要维护数据一致性。因此,多核多处理器系统具有两个Cache —致性同步域:处理器内及处理器间。这种处理器内及处理器间的Cache —致性需要维护两级一致性。如图1所示,斜线阴影标示区域为处理器内同步域;点划线标示区域为处理器间同步域,可见,L2 Cache同时位于处理器内及处理器间两个同步域,处理器内同步域针对处理器内部各个处理器核的Cache内容的一致性进行同步;处理器间同步域进行处理器间的Cache —致性维护。
[0004]图2所示为传统单共享态(即:S态)的Cache—致性同步过程示意图。其中,写操作引起的无效操作除了需要在处理器内同步域内广播无效消息外,还需发往下层目录,并根据目录记录的数据共享信息向其它具有数据副本的处理器发送无效消息。可见,传统的Cache —致性协议(如MESI协议)使用单一的共享态(即:S态),由于无法区分数据是在一个同步域内共享抑或为多个同步域同时共享,因此,为了保证Cache —致性,在进行数据同步时,需要发送一些非必需的同步消息,从而增加了系统通信负担,降低协议的性能。


【发明内容】

[0005]本发明提供一种面向多核多处理器平台的Cache —致性协议的设计方法,用来减少部分写操作及无效操作引起的数据同步消息数量,降低数据同步消息延迟,从而提升协议的数据同步效率。
[0006]为了解决上述技术问题,本发明提供一种面向多核多处理器平台的高速缓存(Cache) 一致性协议的设计方法,包括以下内容:位于两个Cache —致性同步域的Cache行具有两种共享态,所述两种共享态分别用于指示所述Cache行在两个Cache —致性同步域中的共享情况。
[0007]进一步地,所述两个共享态为第一共享态及第二共享态,所述第一共享态指示数据在多个处理器上的共享状态,所述第二共享态指示数据在一个处理器的至少一个处理器核上的共享状态。
[0008]进一步地,当执行数据写操作或无效操作时,处于第二共享态的Cache行的同步消息只在处理器内部传播,而处于第一共享态的Cache行的同步消息在处理器内部及多个处理器之间传播。
[0009]本发明通过设置两种共享态,更准确地记录了同时位于两个Cache —致性同步域的Cache行的共享信息,可简化部分由写操作或无效操作引起的同步消息的处理,降低同步消息响应延迟。当处于第二共享态(即:SS态)的Cache行收到无效消息时,仅向属于同一处理器的、其它具有数据副本的私有Cache发送无效消息,此外,如果数据被修改过(即dirty位被置位),则回写Cache行;当Cache行处于第一共享态(即:S态)时,不仅需要向同一处理器的、其它具有数据副本的私有Cache发送无效消息,还需根据目录记录的共享信息,向其它处理器发送无效消息。与现有技术中只设置一种共享态相比,本发明使用双共享态可减少部分发往上层目录的消息,减小消息同步延迟,从而提升Cache —致性协议的同步效率。

【专利附图】

【附图说明】
[0010]图1所示为多核多处理器平台中两层Cache —致性同步域的示意图;
[0011]图2所示为传统单一共享态的Cache —致性同步过程示意图;
[0012]图3所示为本发明较佳实施例中第一共享态(即S态)与第二共享态(即SS态)的不意图;
[0013]图4所示为本发明较佳实施例中第二共享态(即SS态)的Cache —致性同步过程不意图;
[0014]图5所示为本发明较佳实施例中第一共享态(即S态)的Cache —致性同步过程示意图;
[0015]图6所示为本发明较佳实施例中Cache行处于SS态时写操作引起的协议处理流程不意图;
[0016]图7所示为本发明较佳实施例中Cache行处于S态时写操作引起的协议处理流程示意图;
[0017]图8所示为本发明较佳实施例的S态及SS态的相互转换条件示意图。

【具体实施方式】
[0018]下面结合附图对本发明进行进一步的详细说明。
[0019]根据实现方式的不同,处理器内部可使用基于总线监听或基于目录的Cache —致性协议实现。本发明的实施方式说明以总线监听为例进行说明,在处理器之间使用目录记录共享信息。
[0020]于本实施例中,以图1所示的多核多处理器结构为例说明处于S及SS态的Cache行的同步过程以及SS与S两个共享态的相互转换。为说明简洁准确,使用(处理器编号,处理核编号)表不一个处理器核。例如,(O, I)表不处理器O的编号为I的处理器核,(I, O)表示处理器I的编号为O的处理器核,以此类推。dLl表示处理器核私有的数据LI Cache。处理器核对应的dLl表示与该处理器核直接相连的数据LI Cache。请求者指发起数据同步消息的处理器核。本地L2 Cache指当前处理器私有的L2 Cache,远端L2 Cache指属于其它处理器私有的L2 Cache。
[0021]如图3所示,数据X在处理器O的本地L2 Cache中的Cache行处于SS状态;数据Y在处理器I的L2 Cache中处于S态。关于S态及SS态的一致性同步过程如下详述。
[0022]如图4所示,数据X在处理器O的本地L2 Cache中的Cache行处于SS状态,只在处理器O上具有只读副本。此时,写操作引起的无效消息只在本处理器内部广播,无需发往下层目录。具体处理步骤如图6所示,其中,图6中(a)对应处理器核(0,0)具有X的副本的情况,图6中(b)对应处理器核(0,O)没有X副本的情况,MT态表示数据在私有LI中可能被修改过,L2中的对应副本可能过时。上述过程详细描述如下:
[0023]步骤1:处理器核(0,0)发出对数据地址X的写请求,若X在dLl中的Cache行的状态为S,向处理器O的L2 Cache发送Upgrade消息,请求写权限(升级后的状态为M);若X在dLl中无副本,则向处理器O的L2 Cache发送GETX消息,请求数据行及写权限(升级后的状态为M);
[0024]步骤2:处理器O的L2 Cache收到Upgrade/GETX消息后,向位于本处理器的所有其它处理器核(于此,为处理器核(0,I))发送无效消息(即Inv消息);
[0025]步骤3:处理器核(0,I)接收到该无效消息后,查找本地dLl,如果存在X的副本则无效,并返回应答消息(即Ack消息);否则直接返回应答消息;
[0026]步骤4:本地L2 Cache收集到所有无效消息应答后,根据请求者消息类型(Upgrade/GETX)向请求者dLl发送写权限(及数据)应答消息,同时将对应Cache行的状态修改为独占(对应MESI协议的M态),消息处理过程完成。
[0027]如图5所示,数据X在处理器O的L2 Cache中处于S态,同时在处理器O及处理器I上具有只读副本。此时,写操作引起的无效消息只在本处理器内部广播,无需发往目录。具体处理过程如图7所示,其中,图7中(a)对应处理器核(0,O)具有X的副本的情况,图7中(b)对应处理器核(0,0)没有X副本的情况。MT态表示数据在私有LI中可能被修改过,L2中的对应副本可能过时。上述过程详细描述如下:
[0028]步骤1:处理器核(0,0)发出对数据地址X的写请求,若X在dLl中的Cache行的状态为S态,向处理器O的L2 Cache发送Upgrade消息,请求写权限(升级后的状态为M);若X在dLl中无副本,则向处理器O的L2 Cache发送GETX消息,请求数据行及写权限(升级后的状态为M);
[0029]步骤2:处理器O的L2 Cache收到Upgrade/GETX消息后,向位于本处理器的所有其它处理器核(于此,为处理器核(0,I))发送无效消息(即Inv消息);同时向目录发送Upgrade 消息;
[0030]步骤3.1:处理器核(0,I)接收到该无效消息后,查找本地dLl,如果存在X的副本则无效,并返回应答消息(即Ack消息);否则直接返回应答消息;
[0031]步骤3.2:目录接收到该Upgrade消息后,根据其记载的X所在Cache行的共享状态,向所有其它处理器(于此,为处理器I)发送无效消息;
[0032]步骤4:处理器I接收到无效消息后,查找X所在Cache行共享信息,并向处理器核(1,0)发送无效消息,待其返回应答消息后,向目录返回无效应答消息;更新目录(删除处理器I对于X的共享记录),向请求者所在的处理器返回写权限应答消息;
[0033]步骤5:本地L2 Cache收集到所有来自本地其它dLl的无效应答消息及来自目录的写权限应答消息后,根据请求者消息类型(Upgrade/GETX)向请求者dLl发送写权限(及数据)应答消息,同时将对应Cache行的状态修改为独占(对应MESI协议的M态),消息处理过程完成。
[0034]与传统Cache —致性协议,如MESI协议相比,如图8所示,本发明的双共享态Cache—致性协议设计方法增加两个共享状态(S态及SS态)的相互转换。当所有远端副本失效时,L2对应行状态从S态转换为SS态;当远端请求只读副本时,L2对应行状态从SS态转换为S态。需要注意的是,图8仅仅给出了 S态与SS态转换的条件,在具体协议实现中,两种状态的相互转换可能会经历其它的状态,如修改态等。
[0035]综上所述,本发明为同时处于两个Cache —致性同步域的Cache行设置两种具有不同权限的共享态。当数据在多个处理器中存在副本时,设置共享态S态。共享态S态指示数据自加载至Cache中后未进行修改,因此,数据与内存对应内容一致,不允许直接修改。另一方面,当数据仅在一个处理器的一个或以上个处理器核上具有只读副本时,设置共享态SS态。共享态SS态同样不允许直接对数据进行修改,但是数据与内存对应内容可能不—致。
[0036]以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
【权利要求】
1.一种面向多核多处理器平台的高速缓存(Cache) —致性协议的设计方法,其特征在于:位于两个Cache —致性同步域的Cache行具有两种共享态,所述两种共享态分别用于指示所述Cache行在两个Cache —致性同步域中的共享情况。
2.如权利要求1所述的面向多核多处理器平台的Cache—致性协议的设计方法,其特征在于:所述两个共享态为第一共享态及第二共享态,所述第一共享态指示数据在多个处理器上的共享状态,所述第二共享态指示数据在一个处理器的至少一个处理器核上的共享状态。
3.如权利要求2所述的面向多核多处理器平台的Cache—致性协议的设计方法,其特征在于:当执行数据写操作或无效操作时,处于第二共享态的Cache行的同步消息只在处理器内部传播,而处于第一共享态的Cache行的同步消息在处理器内部及多个处理器之间传播。
【文档编号】G06F13/42GK104360981SQ201410645855
【公开日】2015年2月18日 申请日期:2014年11月12日 优先权日:2014年11月12日
【发明者】王恩东, 倪璠, 陈继承 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1