一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现多核缓存一致性验证的方法与流程

2022-04-30 06:26:33 来源:中国专利 TAG:


1.本发明涉及cpu多核验证的技术领域,特别涉及一种实现多核缓存一致性验证的方法。


背景技术:

2.cpu多核验证中,缓存的一致性验证至关重要,但目前没有一种很有效的方法来保证缓存一致性的正确性,对于多核系统,目前没有一种很有效且统一的方法来验证缓存的一致性,市场上没有一种工具能验证缓存一致性。


技术实现要素:

3.针对现有技术中存在的不足之处,本发明的目的是提供一种实现多核缓存一致性验证的方法,通过监测一级缓存和二级缓存的更新信息,同时通过查看内存中的数据,能够保证缓存遵守mesi一致性协议,同时能够保证数据的正确性。为了实现根据本发明的上述目的和其他优点,提供了一种实现多核缓存一致性验证的方法,包括以下步骤:
4.s1、当一个核更新缓存行到m状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是i状态,否则报错;
5.s2、当个核更新缓存行到e状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是i状态,否则报错;同时检查缓存行更新的数据是否与内存中的数据一致,若不同,则报错;
6.s3、当一个核更新缓存行到s状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是s或者i态,否则报错;若其他核的状态是s,则检查两个核的缓存行数据是否一致,同时检查与内存中的数据是否一致;
7.s4、当一个核更新缓存行到i状态时,其他核在任何状态都有可能,不需要检查。
8.优选的,应用于多核环境,所述多核环境包括两个cluster,所述cluster包括1个二级缓存,所述二级缓存连接有多个核,且每个所述核包括一级数据缓存,所述一级数据缓存与二级缓存同时进行一致性验证。
9.优选的,所述一级数据缓存的一致性验证包括以下步骤:
10.(1)在一级数据缓存检查器中同时监测多核系统中每个核的一级数据缓存更新信息,获得更新状态,更新缓存行的tag,index以及bank信息,同时保存缓存行数据;
11.(2)在一级数据缓存检查器中同时监测多核系统中每个核的一级数据缓存,根据当前更新核的tag,index和bank信息,获得其他核在当前时刻是否存在相同缓存行的信息,若存在,通过访问缓存directory,获得缓存行状态,通过访问缓存data,获得缓存行数据;
12.(3)若更新核的状态是m,则根据步骤s1进行监测判断;
13.(4)若更新核的状态是e,则根据步骤s2进行监测判断;
14.(5)若更新核的状态是s,则根据步骤s3进行监测判断;
15.(6)若更新核的状态是i,则根据步骤s4进行监测判断。
16.优选的,所述二级缓存的一致性验证包括以下步骤:
17.(1)在二级缓存检查器中同时监测多核系统中每个cluster的二级缓存更新信息,获得更新状态,更新缓存行的tag,index以及bank信息;由于二级缓存中会记录连接在二级缓存上的一级缓存的状态,在更新二级缓存的时刻可同时获得一级缓存的状态信息;
18.(2)检查当前cluster的二级缓存和一级缓存状态是否合理,由于两级缓存的关系是inclusive,两级状态应符合以下原则:
19.当二级缓存更新状态是i态时,每个核的一级缓存的状态必须也为i态,否则报错;
20.当二级缓存更新状态是m态时,若其中一个核的一级缓存更新状态是m或者e,则其他核的一级缓存状态必须是i,否则报错;
21.当二级缓存更新状态是s态时,每个核的一级缓存状态不能是m态或e态,否则报错;
22.当二级缓存更新状态是e态时,每个核的一级缓存有可能是mesi中任何一种,不做检测;
23.(3)检查另外cluster二级缓存,根据当前更新的二级缓存的tag,index和bank信息,获得其他二级缓存的状态和数据,不同cluster之间的检测应符合以下原则:
24.若更新cluster二级缓存状态是m态,则其他cluster二级缓存状态必须为i态,否则报错;
25.若更新cluster二级缓存状态是e态,则其他cluster二级缓存状态必须为i态,否则报错;
26.若更新cluster二级缓存状态是s态,则其他cluster二级缓存状态必须为i态或者s态,否则报错;
27.若更新cluster二级缓存状态是i态,则其他cluster二级缓存状态可为mesi任意态。
28.本发明与现有技术相比,其有益效果是:
29.(1)适用于多核以及多cluster验证,并且核与cluster的个数可配,具有可扩展性
30.(2)同时支持一级缓存和二级缓存的mesi一致性验证
31.(3)支持inclusive模式的两级缓存mesi一致性验证
32.(4)不仅能检查缓存的mesi状态,还能检查缓存中数据的正确性
33.(5)基于时钟的检查器,可以实时的报告错误,验证人员能够准确快速的定位错误时刻,获得错误信息。
附图说明
34.图1为根据本发明的实现多核缓存一致性验证的方法的流程图;
35.图2为根据本发明的实现多核缓存一致性验证的方法的一级数据缓存更新流程框图;
36.图3为根据本发明的实现多核缓存一致性验证的方法的二级缓存更新流程框图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.statusmodifyexclusivesharedinvalidmodifynononoyesexclusivenononoyessharednonoyesyesinvalidyesyesyesyes
39.mesi表示缓存行的四种状态,在多核系统中,每个核的cacheline状态必须符合以下规则:
40.当其中一个核的缓存行状态在m态时,其他核同一条缓存行的状态只能是i态,不能是其他态;
41.当其中一个核的缓存行状态在e态时,其他核同一条缓存行的状态只能是i态,不能是其他态;
42.当其中一个核的缓存行状态在s态时,其他核同一条缓存行的状态可以是s态,也可以是i态,但是不能是m和e态;
43.当其中一个核的缓存行状态在i态时,其他核同一条缓存行的状态可以是m,e,s或i态
44.参照图1-3,一种实现多核缓存一致性验证的方法,包括以下步骤:s1、当一个核更新缓存行到m状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是i状态,否则报错;
45.s2、当个核更新缓存行到e状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是i状态,否则报错;同时检查缓存行更新的数据是否与内存中的数据一致,若不同,则报错;
46.s3、当一个核更新缓存行到s状态时,检查该缓存行是否存在在其他核的缓存中,如果存在,则该缓存行的状态只能是s或者i态,否则报错;若其他核的状态是s,则检查两个核的缓存行数据是否一致,同时检查与内存中的数据是否一致;
47.s4、当一个核更新缓存行到i状态时,其他核在任何状态都有可能,不需要检查。
48.本验证方法可实时报错,能根据报错信息精确定位报错时间,检查器会实时报告缓存行地址,更新状态和数据等信息,帮助验证人员快速有效的找到错误场景,定位bug。
49.进一步的,应用于多核环境,所述多核环境包括两个cluster,所述cluster包括1个二级缓存,所述二级缓存连接有多个核,且每个所述核包括一级数据缓存,所述一级数据缓存与二级缓存同时进行一致性验证,本验证方法支持多核系统中对一级缓存和二级缓存一致性的同时检测,本验证方法支持对inclusive模式的两级缓存一致性检测,本验证方法支持对核以及cluster数量的可配性,适用于多个多核验证系统,具有可扩展性。
50.进一步的,所述一级数据缓存的一致性验证包括以下步骤:
51.(1)在一级数据缓存检查器中同时监测多核系统中每个核的一级数据缓存更新信息,获得更新状态,更新缓存行的tag,index以及bank信息,同时保存缓存行数据;
52.(2)在一级数据缓存检查器中同时监测多核系统中每个核的一级数据缓存,根据
当前更新核的tag,index和bank信息,获得其他核在当前时刻是否存在相同缓存行的信息,若存在,通过访问缓存directory,获得缓存行状态,通过访问缓存data,获得缓存行数据;
53.(3)若更新核的状态是m,则根据步骤s1进行监测判断;
54.(4)若更新核的状态是e,则根据步骤s2进行监测判断;
55.(5)若更新核的状态是s,则根据步骤s3进行监测判断;
56.(6)若更新核的状态是i,则根据步骤s4进行监测判断。
57.进一步的,所述二级缓存的一致性验证包括以下步骤:
58.(1)在二级缓存检查器中同时监测多核系统中每个cluster的二级缓存更新信息,获得更新状态,更新缓存行的tag,index以及bank信息;由于二级缓存中会记录连接在二级缓存上的一级缓存的状态,在更新二级缓存的时刻可同时获得一级缓存的状态信息;
59.(2)检查当前cluster的二级缓存和一级缓存状态是否合理,由于两级缓存的关系是inclusive,两级状态应符合以下原则:
60.当二级缓存更新状态是i态时,每个核的一级缓存的状态必须也为i态,否则报错;
61.当二级缓存更新状态是m态时,若其中一个核的一级缓存更新状态是m或者e,则其他核的一级缓存状态必须是i,否则报错;
62.当二级缓存更新状态是s态时,每个核的一级缓存状态不能是m态或e态,否则报错;
63.当二级缓存更新状态是e态时,每个核的一级缓存有可能是mesi中任何一种,不做检测;
64.(3)检查另外cluster二级缓存,根据当前更新的二级缓存的tag,index和bank信息,获得其他二级缓存的状态和数据,不同cluster之间的检测应符合以下原则:
65.若更新cluster二级缓存状态是m态,则其他cluster二级缓存状态必须为i态,否则报错;
66.若更新cluster二级缓存状态是e态,则其他cluster二级缓存状态必须为i态,否则报错;
67.若更新cluster二级缓存状态是s态,则其他cluster二级缓存状态必须为i态或者s态,否则报错;
68.若更新cluster二级缓存状态是i态,则其他cluster二级缓存状态可为mesi任意态。
69.对一级缓存或二级缓存单独进行建模,模拟rtl缓存行为,根据rtl缓存收到的信息做出相应的逻辑判断,并且监测rtl缓存的输出,对rtl输出与模型输出进行比较。但是该方案必须监测大量rtl信号,做到与rtl缓存行为完全一致,需耗费大量时间和精力,且该方案只能对一级缓存或者二级缓存分开监测,不能验证inclusive模式的两级缓存的一致性。
70.这里说明的设备数量和处理规模是用来简化本发明的说明的,对本发明的应用、修改和变化对本领域的技术人员来说是显而易见的。
71.尽管本发明的实施方案已公开如上,但其并不仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献