一种目录维护方法及装置制造方法

文档序号:6539456阅读:195来源:国知局
一种目录维护方法及装置制造方法
【专利摘要】本发明公开了一种目录维护方法及装置,所述方法包括:主存根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息;所述缓存行对应的每一个缓存接收所述侦听信息,根据所述侦听信息发送侦听响应;所述主存接收所述侦听响应,根据所述侦听响应更新所述目录;所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。通过本发明公开的一种目录维护方法及装置,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
【专利说明】一种目录维护方法及装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种目录维护方法及装置。
【背景技术】
[0002]在多处理器系统中,每个处理器都有一或两级缓存(cache)。同一个数据的多个副本可能同时存于不同的缓存中。若处理器自由地修改的本地副本,则会导致不同处理器观察到的结果不一致。另外IO对主存的修改也可能引起不一致性问题。为了解决缓存一致性问题而引入了 MESI协议。缓存中包括多个缓存行,在MESI中规定,每个缓存行中的数据有四种状态:M (Modified,修改)态、E (Exclusive,专有)态、S (Shared,共享)态、I(Invalid,无效)态,其中,M态是指该缓存行被修改,并仅存在与本缓存中;E态是指该缓存行与主存相同,并仅存在于本缓存中;S态是指该缓存行与主存相同,有可能也存在于其他缓存中态是指该缓存行无效,本缓存中无此数据。
[0003]一般计算机系统的主存请求以一个缓存行为单位进行访问。当前的目录设计为每一个缓存行提供了一个目录项来记录远端节点占用该缓存行的信息。当前计算机系统的缓存一致性协议通常基于目录的一致性协议。主存与缓存之间采用包含策略,当主存的存储空间不够时就需要产生替换,将原有的一个目录条目进行无效侦听,然后将该条目回写或者丢弃。对于M态数据,因为整个系统的唯一副本在缓存中,当M态数据被替换时会产生回写命令,将数据写入缓存中,而对于E态或S态的数据,在缓存中并没有修改过,主存中也有相同的副本,如果被替换的是S态或E态数据,则按照协议要求丢弃或者产生驱除命令,将空间空出来存储新请求所需要的数据。
[0004]目前不少系统采用了直接丢弃的策略,会导致主存的目录信息不准确。主存目录满之后也会导致替换。不论采用何种替换策略,都有可能将缓存正在使用的数据替换出去,从而影响整个系统的性能。
[0005]主存的目录的存储空间都是有限的,仅存储缓存中存在过的数据。由于主存的目录信息不准确,主存存储了一些在缓存已经失效的内容,从而导致主存目录的空间浪费。当存储空间不够时,会发生替换。不论采用何种替换算法,被替换的缓存行总有可能是处理器内部正在使用的数据,当这个数据被替换时,就会打断处理器的正常工作,从而影响到系统性能。

【发明内容】

[0006]本发明实施例提供了一种目录维护方法,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
[0007]为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0008]第一方面,本发明提供了一种目录维护方法,所述方法包括:
[0009]主存根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息;[0010]所述缓存行对应的每一个缓存接收所述侦听信息,根据所述侦听信息发送侦听响应;
[0011]所述主存接收所述侦听响应,根据所述侦听响应更新所述目录;
[0012]所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
[0013]在第一方面的第一种可能的实现方式中,所述主存为下级缓存,所述缓存为上级缓存。
[0014]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述侦听响应更新所述目录,包括:
[0015]根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
[0016]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述侦听响应更新所述目录,包括:
[0017]当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
[0018]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述目录中缓存行与缓存的对应关系,包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态。
[0019]第二方面,本发明提供了一种目录维护装置,所述装置包括:
[0020]主存,至少一个缓存;
[0021]所述主存,用于根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息,并接收缓存发来的侦听响应,根据所述侦听响应更新所述目录;
[0022]所述缓存行对应的每一个缓存,用于接收主存发来的所述侦听信息,根据所述侦听信息发送侦听响应;
[0023]所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
[0024]在第二方面的第一种可能的实现方式中,所述主存为下级缓存,所述缓存为上级缓存。
[0025]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述主存,用于根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
[0026]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述主存,用于当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
[0027]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述目录中缓存行与缓存的对应关系,包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态。
[0028]通过本发明实施例提供的一种目录维护方法及装置,主存接收所有缓存发来的侦听响应,根据该侦听响应中携带的缓存行的状态,更新对应的缓存行的状态,当缓存行的状态全部为无效时,主存删除对该缓存行的记录,能够为目录释放存储空间,减少了替换掉处理器正在使用的数据的发生条件,减少了由于目录导致的替换频度,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
【专利附图】

【附图说明】
[0029]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]图1是本发明实施例1中的一种目录维护方法流程图;
[0031]图2是本发明实施例2中的一种目录维护方法流程图;
[0032]图3是本发明实施例3中的一种目录维护装置结构示意图。
【具体实施方式】
[0033]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034]实施例1:
[0035]本发明实施例提供了一种目录维护方法,参见图1,所述方法包括:
[0036]步骤101:主存根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息;
[0037]步骤102:所述缓存行对应的每一个缓存接收所述侦听信息,根据所述侦听信息发送侦听响应;
[0038]步骤103:所述主存接收所述侦听响应,根据所述侦听响应更新所述目录;
[0039]其中,所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
[0040]通过本发明实施例提供的一种目录维护方法,定期查询缓存中缓存行的状态,根据缓存的侦听响应来更新目录,能够使目录中信息实时更新,保持准确,能够降低当目录存储空间不够,发生替换时,替换掉处理器正在使用的数据的发生条件,减少了由于目录导致的替换频度,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
[0041]其中,所述主存可以为下级缓存,所述缓存可以为上级缓存。
[0042]其中,缓存行与缓存的对应关系包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态,其中,所述至少一个缓存都存储有该缓存行。
[0043]其中,所述根据所述侦听响应更新所述目录,包括:根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
[0044]所述根据所述侦听响应更新所述目录,包括:
[0045]当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
[0046]主存按照一定的频度依次读取目录中的有效条目,并向当前读取的缓存行对应缓存发送侦听信息,而且对于一个缓存只需发送一个侦听信息,收到侦听信息的缓存将对应的缓存行的状态携带在侦听响应中,无需改变该缓存行在缓存中的状态。
[0047]其中,侦听响应可以采用如下标识方式:RspI表示缓存中对应的缓存行状态为I态,RspS表示缓存中对应的缓存行状态为S态,RspE表示缓存中对应的缓存行状态为E态,RspM表示缓存中对应的缓存行状态为M态。侦听响应接收到上述字符可以解析出该缓存行的状态。
[0048]通过本发明实施例提供的方法,主存接收所有缓存发来的侦听响应,根据该侦听响应中携带的缓存行的状态,更新对应的缓存行的状态,当缓存行的状态全部为无效时,主存删除对该缓存行的记录,能够为目录释放存储空间,减少了替换掉处理器正在使用的数据的发生条件,减少了由于目录导致的替换频度,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
[0049]实施例2:
[0050]对应下级缓存和上级缓存,本发明实施例提供了一种目录维护方法,参见图2,所述方法包括:
[0051]步骤201:下级缓存根据目录中缓存行与上级缓存的对应关系按照预先设定的频度向缓存行对应的每一个上级缓存发送侦听信息;
[0052]步骤202:所述缓存行对应的每一个上级缓存接收所述侦听信息,根据所述侦听信息发送侦听响应;
[0053]步骤203:所述下级缓存接收所述侦听响应,根据所述侦听响应更新所述目录;
[0054]其中,缓存行与缓存的对应关系包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态,其中,所述至少一个缓存都存储有该缓存行。
[0055]其中,所述侦听响应包括:发送所述侦听响应的上级缓存中的所述缓存行的状态。
[0056]其中,所述根据所述侦听响应更新所述目录,包括:根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
[0057]所述根据所述侦听响应更新所述目录,包括:
[0058]当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
[0059]实施例3:
[0060]本发明实施例提供了 一种目录维护装置,参见图3,所述装置包括:
[0061]主存301,至少一个缓存302 ;
[0062]所述主存301,用于根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存302发送侦听信息,并接收缓存302发来的侦听响应,根据所述侦听响应更新所述目录;
[0063]所述缓存行对应的每一个缓存302,用于接收主存301发来的所述侦听信息,根据所述侦听信息发送侦听响应;
[0064]所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
[0065]其中,所述主存301可以为下级缓存,所述缓存302可以为上级缓存。
[0066]其中,所述主存301,用于根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
[0067]所述主存301,用于当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
[0068]所述目录中缓存行与缓存的对应关系,包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态。
[0069]上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0070]需要说明的是:本发明实施例提供的方法适用于多级缓存结构中,上级缓存和下级缓存之间,也适用于NC (Node Controller,节点控制器)之间。具体的实现过程与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0071]通过上述描述可见,本发明实施例提供的方法及装置具有如下有益效果:
[0072]1、通过本发明实施例提供的方法及装置,主存接收所有缓存发来的侦听响应,根据该侦听响应中携带的缓存行的状态,更新对应的缓存行的状态,当缓存行的状态全部为无效时,主存删除对该缓存行的记录,能够为目录释放存储空间,减少了替换掉处理器正在使用的数据的发生条件,减少了由于目录导致的替换频度,能够降低替换产生的侦听对处理器正常处理的影响,减少系统性能的下降。
[0073]2、通过本发明实施例提供的方法及装置,实时更新目录状态,删除目录中无效的缓存行,能够提高目录和缓存的真实利用率,并且侦听信息不会影响缓存中数据的状态,不会影响处理器的数据处理。
[0074]本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此夕卜,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
[0075]计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
[0076]计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
[0077]计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
[0078]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种目录维护方法,其特征在于,所述方法包括: 主存根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息; 所述缓存行对应的每一个缓存接收所述侦听信息,根据所述侦听信息发送侦听响应; 所述主存接收所述侦听响应,根据所述侦听响应更新所述目录; 所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
2.根据权利要求1所述的方法,其特征在于,所述主存为下级缓存,所述缓存为上级缓存。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述侦听响应更新所述目录,包括: 根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
4.根据权利要求1或2所述的方法,其特征在于,所述根据所述侦听响应更新所述目录,包括: 当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
5.根据权利要求1或2所述的方法,其特征在于,所述目录中缓存行与缓存的对应关系,包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态。
6.一种目录维护装置,其特征在于,所述装置包括: 主存,至少一个缓存; 所述主存,用于根据目录中缓存行与缓存的对应关系按照预先设定的频度向缓存行对应的每一个缓存发送侦听信息,并接收缓存发来的侦听响应,根据所述侦听响应更新所述目录; 所述缓存行对应的每一个缓存,用于接收主存发来的所述侦听信息,根据所述侦听信息发送侦听响应; 所述侦听响应包括:发送所述侦听响应的缓存中的所述缓存行的状态。
7.根据权利要求6所述的装置,其特征在于,所述主存为下级缓存,所述缓存为上级缓存。
8.根据权利要求6或7所述的装置,其特征在于,所述主存,用于根据接收到所述侦听响应更新所述目录中的所述缓存行对应的缓存中的所述缓存行的状态。
9.根据权利要求6或7所述的装置,其特征在于,所述主存,用于当接收到的所述缓存行在所有侦听响应中的状态为无效态时,则所述主存删除所述目录中的所述缓存行的记录。
10.根据权利要求6或7所述的装置,其特征在于,所述目录中缓存行与缓存的对应关系,包括:每一个缓存行对应至少一个缓存,所述至少一个缓存中的每一个缓存对应该缓存中的所述缓存行的状态。
【文档编号】G06F12/08GK103870395SQ201410076650
【公开日】2014年6月18日 申请日期:2014年3月4日 优先权日:2014年3月4日
【发明者】贺成洪, 程永波, 兰可嘉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1