[发明专利]一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法有效
申请号: | 201310018123.3 | 申请日: | 2013-01-18 |
公开(公告)号: | CN103150264A | 公开(公告)日: | 2013-06-12 |
发明(设计)人: | 王恩东;胡雷钧;陈继承;张峰;周恒钊;符云越;甘小伟 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F11/26 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 扩展 cache coherence 协议 多级 一致性 仿真 验证 测试 方法 | ||
1.一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法,其特征在于,包括:多层Cache一致性协议模型模拟测试结构;可扩展的拓扑结构;节点仿真模型;协议表查询与状态转换执行方法;协议表执行流程;事务生成器;测试评价方法和提高覆盖率方法,使用覆盖率驱动的验证策略构建一套基于伪随机模拟验证系统,以及由覆盖率驱动的测试激励自动产生器组成的模拟验证系统,其中:
为实现大规模的CC-NUMA多处理器系统,需借助节点控制器NC扩大一致性域空间,节点控制器具有维护全局Cache一致性和扩展系统规模两种功能:首先,每个节点控制器连接1至4颗处理器,组成一个节点和第一级Cache一致性域,域内一致性由处理器和节点控制器共同维护;其次,节点控制器直接互连或通过节点路由器连接以组成大规模CC-NUMA系统;节点间的第二级Cache一致性由节点控制器维护,这样构成的大规模的CC-NUMA 系统需要在处理器直联Cache一致性协议基础上扩展建立多层次的协议,并维护全局一致性,为了构建一种基于扩展型Cache Coherence协议的多级一致性域CC-NUMA系统协议的仿真模型,需构建系统关键节点内协议表查询和状态转换执行机制,确保多一致性域内与域间之间传输的准确性、稳定性;提出一种可信的协议入口转换覆盖率评价驱动验证方法,通过加载经优化的事务发生器推动模型进行事务处理,在运行结束时获得覆盖率指标,较之随机事务推进机制提高验证效率,通过构建一个多处理器验证系统模型并开展相关仿真验证,进一步确认该方法的适用性和有效性;
1)多层Cache一致性协议模型模拟测试结构
使用SystemC语言设计一种基于扩展型Cache Coherence协议的多级一致性域模型的系统模拟器和与系统模拟器并行执行的模型验证系统,模型验证系统通过构建伪随机事务发生器进行测试,通过全局检查器进行系统正确性判断;模型验证系统包括:总线功能模型、协议参考模型、节点控制器模拟器、网络模拟器、全局检查器、协议入口查询机制,其中:
(1)总线功能模型:是一个时钟精确的功能模型,模拟实现了处理器中Cache 、存控、以及处理器内部和处理器间的互连网络,提供了对访存行为的事务级模拟支持,支持自定义系统拓扑结构,提供外部API接口,可与外部模块进行消息交互,运行中按照处理器直联Cache 一致性协议模拟并提供系统中各访存事务、Cache、存控的实时行为和状态;
(2)协议参考模型:与总线功能模型紧密集成,对模拟系统中的系统状态和消息流进行实时检查,用于发现模拟过程中系统偏离协议的行为;
(3)节点控制器模拟器:通过总线功能模型的API 接口挂接在其上,模拟实现了节点控制器NC自有的Cache一致性协议;以处理器直联Cache一致性协议消息与处理器进行通信,并以自有的Cache一致性协议消息通过网络模拟器在各NC模拟器间进行通信;
(4)网络模拟器:模拟了一个简单的不保序全交换网络,通过此网络进行扩展Cache 一致性协议的消息通信;
(5)全局检查器:运行在整个系统之上,通过总线功能模型的API 检查全局的数据Cache一致性;
(6)随机/定点测试激励自动发生器:通过总线功能模型的API 接口挂接,在模拟过程中持续产生随机/定点的访存事务,并通过总线功能模型的API 接口发送到总线功能模型中的Cache 上;
2)可扩展的拓扑结构
节点间通信通过域间互连网络,由网络接口NI进行报文传输,每个域包含两个CPU,每个CPU挂接一个存储器,创建基于4 Clumps 可扩展的基本拓扑结构,每个Clump域内带有4 个节点的多节点多处理器系统拓扑结构,根据系统规模对一致性空间、非一致性空间、IO空间的地址进行划分设定,NC代理所有远端的地址空间,据系统地址映射方案,每一个Clump NC节点的地址区域与其它NC节点的地址区域不重叠,因此输入到NC的报文如果地址区域不在本Clump之内,则必然需要进行跨Clump的转换操作;
3)节点仿真模型
NC是接受处理从Clump内与Clump间的报文,并经过相应的记录与处理后,向Clump内与Clump间发出报文,NC实现了一个从配置文件中预读取协议表具体操作的协议表模拟器,当节点模拟器收到一条消息时,协议表模拟器即被激活,首先入口条件查询器按照收到的消息和当前系统的状态进行查找,找到一个入口后转到对应的状态转换执行器执行相应的状态转换代码,如果无法找到对应的入口,则报告模拟出错并结束模拟;
4)协议表查询与状态转换执行方法,包括协议表模拟器和入口条件查询器,其中:
协议表模拟器作为系统模拟器的核心,协议表模拟器是多层Cache一致性协议模型能够正常工作的关键,协议表是被验证的目标,在整个验证过程中协议表可能被修改,因而要设置一个从配置文件中预读取协议表具体操作的协议表模拟器,该模拟器包括两个部分:入口条件查询器和状态转换执行器,当节点模拟器收到一条消息时,协议表模拟器即被激活,首先入口条件查询器按照收到的消息和当前系统的状态进行查找,找到一个入口后转到对应的状态转换执行器执行相应的状态转换代码,如果无法找到对应的入口,则报告模拟出错并结束模拟;
入口条件查询器是执行域间一致性的关键模块,节点控制器收到的一致性报文均由这两个模块依据其协议表执行转换,入口条件查询器收到报文,根据自身状态查询协议表,更新本地状态并发出新报文,入口条件查询器中记录有协议表若干项,同时记录事件状态的结构有Trk/Rdt/Wrt/Orb/Dir,实现状态结构存储与查询;
首先定义系统状态寄存器的编码方法:由于每个状态寄存器的取值位数是固定的,所以将所有状态寄存器转换为对应的二进制数后,向左补齐最大位数,将全部的补齐后二进制数串起来即获得对应的编码值,如果在协议表中给出的取值为不确定,则在编码时需将不确定值展开为所有取值,编码后所有取值均指向同一个入口,在每种消息的配置文件中,首先根据入口条件值进行排序,每个条件对应一个入口;
入口条件查询器,采用分级设计,第一级针对收到的消息进行查询,该部分使用Strategy设计模式进行设计,为每种消息实现了一个消息处理类,并继承公共的消息处理类,当北桥模拟器收到一条消息时,使用哈希查找表模式中的匹配方法对消息进行匹配快速找到对应的入口;
5)协议表执行流程
协议表中所有可能进行的状态转换包括寄存器值的填写和消息的发送两类,寄存器的填写使用通用的填写函数,将寄存器的值作为参数传入;而消息的发送则根据发送消息的不同编写不同消息发送函数,并将各类要发送的消息函数编码,将编码与对应的消息发送函数的函数指针绑定,这样,在每个消息的操作配置文件中,每个入口有对应寄存器值,和需要调用的消息发送函数编码;
实际模拟器执行过程中,当入口条件查询器查询到对应的入口时,将控制权转交到状态转换执行器,状态转换执行器根据预先从配置文件中读入的操作列表分别调用对应的寄存器填写函数和消息发送函数进行工作;
6)事务生成器
事务生成器的工作为随机测试,随机测试是保证测试覆盖完整性的有效方式和过程, 随机测试主要是对协议的所有重要条目进行复测,也包括测试那些当前的测试样例没有覆盖到的部分,每个环节都有可供选择的几项内容,通过大量的随机环节,产生出各个协议条目,通过随机组合的方式来达到协议验证的目的;
7)测试评价方法与提高覆盖率方法
建模测试过程中,模拟验证不断被进行,如果发现有违背设计参考的验证模拟结果出现,则修改模拟实现,并再次投入模拟;如果没有违背设计参考的模拟出现,则分析是否已经达成了目标覆盖率,如果未达成,则修改测试激励,并再次投入模拟;如果已经达成目标覆盖率,则验证工作完成,覆盖率驱动验证方法的核心技术是覆盖率测度报告与测试激励自动生成;
根据选择的覆盖率驱动的模拟验证方法,建立如下模拟验证流程模型:在验证过程中,测试由若干模拟周期构成,每个周期开始时,测试激励自动发生器产生若干访存事务并将其注入系统模拟器,系统模拟器通过模拟运行完成产生的访存事务,当一次产生的访存事务全部完成时,系统完成一个模拟周期,每个模拟周期结束后,系统统计协议表项覆盖率情况,重置模拟器,并进入下一个模拟周期;
在模拟验证过程中,显然每个周期都会有若干个协议表项被覆盖到,除去已经在此前的模拟周期中覆盖过的协议表项,新被覆盖的协议表项即为增加的协议表覆盖项,设第i个周期增加的协议表为K,则第i个周期的覆盖率增长速率为Ki/N(N为协议表的总项数),设第t个周期覆盖的协议表集合为{Ki},则T个周期后的覆盖率为Card{KT = K1∪K2……KT }/N ;
考察一个模拟周期,测试激励完全随机产生,则对于协议表中的每一项,在任何一个周期中被覆盖到的概率均相等,对于各协议表项,一个模拟周期看作一个单重贝努利实验,如果在此周期内模拟器的输出覆盖到了该协议表项,则认为实验成功,否则实验失败;
协议表中有相当多表项是专为解决小概率死锁事件设计的,即协议表中各项在产生的概率是不相同的,当模拟周期数增加时,每周期新被覆盖的协议表项数必然是持续下降的,在长期运行过程中,有效测试激励的产生必然会迅速下降并趋向于0;
覆盖率驱动的测试激励自动产生器,通过上述分析可知,使用纯粹的随机测试激励产生器,必然无法进行高效的验证,要提高测试的效率,必须使每次产生的测试激励具有针对性,使其能够以较大概率使模拟器覆盖到尚未被覆盖到的协议表项,同时这也是对覆盖率驱动验证方法的必然要求,对此,两种根据覆盖率变化使用覆盖率驱动的测试激励自动产生器对测试激励产生进行调整方法如下:
(1)由于验证目标协议的复杂性,以及不保序网络带来的访存事务完成过程的多变性,几乎不可能分析特定输入测试激励和输出覆盖目标之间的关系,在此中条件下,考虑引入一个测试激励分类器,该分类器能给出概率性的输入测试激励和输出覆盖率间的关系,使用此分类器对随机产生的测试激励进行过滤,遴选出有大概率产生新的覆盖目标的测试激励作为有效激励送入模拟器中执行,而将无效的测试激励予以抛弃;
(2)通过分析协议表,协议表中有大量表项具有相似项,包括很多专为小概率事件设计的协议表项,因此在基于相关分析的方法在测试激励的产生中引入偏置思想,在每个周期的模拟结束以后,对该周期的测试激励施加偏置,将带偏置的测试激励再次送入模拟器中运行,以迅速覆盖与上一个周期所产生的模拟验证结果相似的协议表条目。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310018123.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:乒乓球多球训练集球装置
- 下一篇:仰卧健腹器