发明名称 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
摘要 本发明提出了一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法。构建了一种基于扩展型Cache Coherence协议的多级一致性域CC-NUMA系统协议的仿真模型,发明系统关键节点内协议表查询与状态转换执行机制,确保单计算域内维护Cache Coherence协议并且多个计算域之间也同时维护Cache Coherence协议,域内与域间的传输确保准确性、稳定性;提出一种可信的协议入口转换覆盖率评价驱动验证方法,通过加载经优化的事务发生器推动模型进行事务处理,在运行结束时获得覆盖率指标,较之随机事务推进机制提高验证效率。通过构建一个多处理器多一致性域验证系统模型并开展相关仿真验证,进一步确认该方法的适用性和有效性。
申请公布号 CN103150264B 申请公布日期 2014.09.17
申请号 CN201310018123.3 申请日期 2013.01.18
申请人 浪潮电子信息产业股份有限公司 发明人 王恩东;胡雷钧;陈继承;张峰;周恒钊;符云越;甘小伟
分类号 G06F12/08(2006.01)I;G06F11/26(2006.01)I 主分类号 G06F12/08(2006.01)I
代理机构 代理人
主权项 一种基于模型转换的扩展型Cache Coherence协议多级一致性域仿真验证和测试方法,其特征在于,利用节点控制器NC扩大一致性域空间,用于实现大规模CC‑NUMA多处理器系统,该节点控制器用于维护全局Cache一致性和扩展系统规模:首先,每个节点控制器连接1至4颗处理器,组成一个节点和第一级Cache一致性域,域内一致性由处理器和节点控制器共同维护;其次,节点控制器直接互连或通过节点路由器连接以组成大规模CC‑NUMA系统;节点间的第二级Cache一致性由节点控制器维护,所述大规模CC‑NUMA 系统在处理器直联Cache一致性协议基础上扩展建立多层次的协议,并维护全局一致性,为了构建一种基于扩展型Cache Coherence协议的多级一致性域CC‑NUMA系统协议的仿真模型,需构建系统关键节点内协议表查询和状态转换执行机制;使用可信的协议入口转换覆盖率评价驱动验证方法,通过加载经优化的事务发生器推动模型进行事务处理,在运行结束时获得覆盖率指标;该方法进一步包括:1)使用SystemC语言设计一种基于扩展型Cache Coherence协议的多级一致性域模型的系统模拟器和与系统模拟器并行执行的模型验证系统,模型验证系统通过构建伪随机事务发生器进行测试,通过全局检查器进行系统正确性判断;该模型验证系统利用总线功能模型、协议参考模型、节点控制器模拟器、网络模拟器、全局检查器、随机/定点测试激励自动发生器,其中:(1)总线功能模型是一个时钟精确的功能模型,模拟实现了处理器中Cache 、存控、以及处理器内部和处理器间的互连网络,提供了对访存行为的事务级模拟支持,支持自定义系统拓扑结构,提供外部API接口,与外部模块进行消息交互,运行中按照处理器直联Cache 一致性协议模拟并提供系统中各访存事务、Cache、存控的实时行为和状态;(2)协议参考模型与总线功能模型紧密集成,对模拟系统中的系统状态和消息流进行实时检查,用于发现模拟过程中系统偏离协议的行为;(3)节点控制器模拟器通过总线功能模型的API 接口挂接,模拟实现了节点控制器NC自有的Cache一致性协议;以处理器直联Cache一致性协议消息与处理器进行通信,并以自有的Cache一致性协议消息通过网络模拟器在各NC模拟器间进行通信,通过节点控制器挂接内存作为CPU cache之外的节点本地、远端数据缓存;(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)设置一个从配置文件中预读取协议表操作的协议表模拟器,该协议表模拟器作为系统模拟器的核心,包括两个部分:入口条件查询器和状态转换执行器,当节点模拟器收到一条消息时,协议表模拟器即被激活,首先入口条件查询器按照收到的消息和当前系统的状态进行查找,找到一个入口后转到对应的状态转换执行器执行相应的状态转换代码,如果无法找到对应的入口,则报告模拟出错并结束模拟;入口条件查询器是执行域间一致性的模块,节点控制器收到的一致性报文依据其协议表执行转换,入口条件查询器收到报文,根据自身状态查询协议表,更新本地状态并发出新报文,入口条件查询器中记录有协议表项,同时记录事件状态的结构,执行状态结构存储与查询;其中,系统状态寄存器的编码过程定义为:将所有状态寄存器转换为对应的二进制数后,向左补齐最大位数,将全部的补齐后二进制数串起来即获得对应的编码值,如果在协议表中给出的取值为不确定,则在编码时需将不确定值展开为所有取值,编码后所有取值均指向同一个入口,在每种消息的配置文件中,首先根据入口条件值进行排序,每个条件对应一个入口;入口条件查询器采用分级设计,第一级针对收到的消息进行查询,使用Strategy设计模式进行设计,为每种消息实现一个消息处理类,并继承公共的消息处理类,当北桥模拟器收到一条消息时,使用哈希查找表模式中的匹配方法对消息进行匹配快速找到对应的入口;所述协议表中所有可能进行的状态转换包括寄存器值的填写和消息的发送两类,寄存器的填写使用通用的填写函数,将寄存器的值作为参数传入;而消息的发送则根据不同的发送消息编写不同消息发送函数,并将各类要发送的消息函数编码,将编码与对应的消息发送函数的函数指针绑定,在每个消息的操作配置文件中,每个入口有对应寄存器值,和需要调用的消息发送函数编码;实际模拟器执行过程中,当入口条件查询器查询到对应的入口时,将控制权转交到状态转换执行器,状态转换执行器根据预先从配置文件中读入的操作列表分别调用对应的寄存器填写函数和消息发送函数进行工作;利用事务生成器执行随机测试,该随机测试对协议的所有重要条目进行复测,并测试当前的测试样例没有覆盖到的部分,以产生出各个协议条目,通过随机组合的方式来进行协议验证;在建模测试过程中进行模拟验证时,如果出现违背设计参考的验证模拟结果,则修改模拟实现,并再次投入模拟;如果没有出现违背设计参考的模拟,则分析是否已经达成了目标覆盖率,如果未达成,则修改测试激励,并再次投入模拟;如果已经达成目标覆盖率,则验证工作完成,覆盖率驱动验证方法包括覆盖率测度报告与测试激励自动生成;根据选择的覆盖率驱动的模拟验证方法,建立如下模拟验证流程模型:在验证过程中,测试由多个模拟周期构成,每个周期开始时,测试激励自动发生器产生访存事务并将其注入系统模拟器,系统模拟器通过模拟运行完成产生的访存事务,当一次产生的访存事务全部完成时,系统完成一个模拟周期,每个模拟周期结束后,系统统计协议表项覆盖率情况,重置模拟器,并进入下一个模拟周期;在模拟验证过程中,每个周期都有多个协议表项被覆盖到,除去已经在此前的模拟周期中覆盖过的协议表项,新被覆盖的协议表项即为增加的协议表覆盖项,设第i个周期增加的协议表为K<sub>i</sub>,则第i个周期的覆盖率增长速率为K<sub>i</sub> /N,其中N为协议表的总项数,设第t个周期覆盖的协议表集合为{K<sub>i</sub>},则T个周期后的覆盖率为Card{K<sub>T</sub> = K<sub>1</sub>∪K<sub>2</sub><sub>……</sub>K<sub>T</sub> }/N ;在一个模拟周期中,随机产生测试激励,对于各协议表项,如果在一个模拟周期内模拟器的输出覆盖到了该协议表项,则认为实验成功,否则实验失败;根据覆盖率变化使用覆盖率驱动的测试激励自动产生器对测试激励产生进行调整的方法包括以下任意一种:(1)引入一个测试激励分类器,该分类器给出概率性的输入测试激励和输出覆盖率间的关系,使用此分类器对随机产生的测试激励进行过滤,将无效的测试激励予以抛弃;或(2)在每个周期的模拟结束以后,对该周期的测试激励施加偏置,将带偏置的测试激励再次送入模拟器中运行。
地址 250014 山东省济南市高新区舜雅路1036号