缓存一致性测试方法技术

技术编号:13086242 阅读:80 留言:0更新日期:2016-03-30 17:06
本发明专利技术提供了一种缓存一致性测试方法,包括:主进程申请一个共享空间;由主进程创建出多个子进程;在该共享空间中划分出四个共享空间部分;由主进程对读操作和写操作访问的内存块号进行排列,使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值。

【技术实现步骤摘要】

本专利技术涉及多核处理器的缓存一致性验证的
,具体涉及一种缓存一致性测试方法
技术介绍
高速缓存技术的采用是为了匹配处理器的速度和存储器的存取速度,在现代的大多数处理器上,几乎所有的内存访问都需要通过缓存来进行。随着多处理器、多核、众核技术的发展,处理器的速度越来越快,存储器层次结构也越来越复杂,高速缓存一致性(Cachecoherence)的问题也就变得越来越突出。高速缓存一致性是指保留在高速缓存中的共享资源保持数据一致性的机制。随着处理器存储层次的增多,在相邻层次间和同一层之内都可能会出现数据不一致的问题,这个问题在多核、众核系统中特别突出。问题的根源是多核、众核系统往往使用多个层次、不同大小、不同共享属性的高速缓存,那么验证这种设计下的缓存一致性就显得极为复杂。现在业界通常使用模拟仿真方式来进行缓存一致性的协议级验证,但这种验证方式效率低,而且随着状态空间的爆炸,很难保证遍历所有场景。因此高效简单的系统级缓存一致性协议正确性验证方法,已被业界逐渐采用,比如专利CN102681937A,其针对处理器域间缓存一致性芯片的正确性验证,其采用在BIOS代码中嵌入缓存一致性验证程序,在系统初始化初期、内存子系统初始化完成后,即开始执行验证程序。但该方法由于没有操作系统核心的打扰,降低了应用的复杂性,不足以涵盖真实的应用场景。由于系统级验证中人工编写的并行一致性验证程序的访存模式类型有限,不能充分地验证处理器缓存的一致性,因此如何自动地生成涵盖多种访存模式的验证程序来充分地验证处理器的缓存一致性就是亟需要解决的问题。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种缓存一致性测试方法,能够针对多核处理器运行并行程序时缓存一致性场景多、遍历困难等问题,提出通过实现并行访存模式自动生成系统,来生成涵盖多种访存场景的并行验证程序,在芯片设计前期和样片阶段对处理器的缓存一致性进行充分的验证,以保证一次投片成功率,进而降低芯片设计成本,缩短研发周期。根据本专利技术,提供了一种缓存一致性测试方法,包括:由主进程申请一个共享空间,所述共享空间的大小为缓存大小的整数倍;由主进程创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分;由主进程对读操作和写操作访问的内存块号进行排列,并将排列好的序列针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值,如果权值相同则判定缓存一致性不存在问题。优选地,所述主进程利用fork函数创建出多个子进程。优选地,所述主进程是在操作系统引导后用户级测试程序的主进程。优选地,所述操作系统是Linux。优选地,所述主进程对读操作和写操作访问的内存块号进行排列的原则是要使多个进程同时对同一缓存段进行读操作和写操作。优选地,所述第一共享空间部分所对应的物理空间是连续的,所述第二共享空间部分所对应的物理空间也是连续的。附图说明结合附图,并通过参考下面的详细描述,将会更容易地对本专利技术有更完整的理解并且更容易地理解其伴随的优点和特征,其中:图1示意性地示出了根据本专利技术优选实施例的缓存一致性测试方法的流程图。需要说明的是,附图用于说明本专利技术,而非限制本专利技术。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。具体实施方式为了使本专利技术的内容更加清楚和易懂,下面结合具体实施例和附图对本专利技术的内容进行详细描述。本专利技术的基本构思是让多个进程并发地对不重复的内存地址进行读写访问,然后检查访问的结果是否正确,从而判断缓存一致性是否存在问题。但当内存空间很大时,并发访存的内存地址组合很多,因此,本专利技术选择最有可能造成缓存一致性问题的模式来进行遍历,即多个进程并发读写访问可能映射为同一缓存段的内存地址。图1示意性地示出了根据本专利技术优选实施例的缓存一致性测试方法的流程图。如下面将要详细描述的那样,所述缓存一致性测试方法采用了并行访存模式。如图1所示,根据本专利技术优选实施例的缓存一致性测试方法包括:第一步骤S1、由主进程(作业号可以设为0)(主进程指的是在Linux之类的操作系统引导后用户级测试程序的主进程)在内存中申请一个共享空间,该共享空间大小为缓存大小的整数倍;第二步骤S2、由主进程利用fork函数创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;第三步骤S3、在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分。其中,在本专利技术的设定中,使得所述第一共享空间部分所对应的物理空间是连续的,所述第二共享空间部分所对应的物理空间也是连续的。第四步骤S4、由主进程对读操作和写操作访问的内存块号(即,第一共享空间部分和第二共享空间部分中的内存块号)按照一定的规则(访问同一缓存段)进行排列,并将排列好的序列(即,内存地址排列)针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中必须使读操作和写操作访问的内存地址不重叠,而且将其它进程(即所述多个子进程)进入同步接口;第四步骤S4一直持续到等待主进程结束排列操作;具体地,所述主进程对读操作和写操作访问的内存块号进行排列是有原则的,要能使多个进程同时对同一缓存段进行读操作和写操作。第五步骤S5、在所述其它进程(即所述多个子进程)同步成功后,读取所述排列好的序列,让所有进程(即所述主进程和所述多本文档来自技高网
...

【技术保护点】
一种缓存一致性测试方法,其特征在于包括:由主进程申请一个共享空间,所述共享空间的大小为缓存大小的整数倍;由主进程创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分;由主进程对读操作和写操作访问的内存块号进行排列,并将排列好的序列针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值,如果权值相同则判定缓存一致性不存在问题。

【技术特征摘要】
1.一种缓存一致性测试方法,其特征在于包括:
由主进程申请一个共享空间,所述共享空间的大小为缓存大小的
整数倍;
由主进程创建出多个子进程,使所述多个子进程和所述主进程都
可以同时访问所申请的共享空间;
在该共享空间中划分出四个共享空间部分:用于读操作访问的第
一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读
操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作
访问的逻辑内存块号的第四共享空间部分;
由主进程对读操作和写操作访问的内存块号进行排列,并将排列
好的序列针对读操作和写操作分别保存到第三共享空间部分和第四
共享空间部分中,其中使读操作和写操作访问的内存地址不重叠,而
且使所述多个子进程进入同步接口;
在所述多个子进程同步成功后,读取所述排列好的序列,让所述
主进程和所述多个子进程同时进行读写操作;
在所述主进程和所述多个子进程的读写操作都完...

【专利技术属性】
技术研发人员:王丽一尉红梅李岱峰谭坚吴臻相陈伟陈磊蒋丽萍李亚辉
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1