一种支持精确访存检测的多核处理器随机验证方法及装置的制造方法

文档序号:10569816阅读:367来源:国知局
一种支持精确访存检测的多核处理器随机验证方法及装置的制造方法
【专利摘要】本发明提出一种支持精确访存检测的多核处理器随机验证方法及其装置,该方法包括步骤1,将待验证的多核处理器中的用户约束与指令库相结合,生成存在访存冲突的并行程序作为验证向量;运行验证向量,记录验证向量的执行结果及访存操作的时间信息;步骤2,根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则执行步骤3;步骤3,将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,继续执行多核处理器随机验证。
【专利说明】
一种支持精确访存检测的多核处理器随机验证方法及装置
技术领域
[0001]本发明涉及超大规模集成电路设计验证领域,特别涉及一种支持精确访存检测的多核处理器随机验证方法及其装置。
【背景技术】
[0002]单核处理器的存储模型的语义很直观,即对任何内存单元的读操作将返回最近对该单元进行写操作所写入的值,而写操作则唯一确定了此后对同一单元读操作的结果。用仿真方法对单核处理器进行随机验证时,通常采用参考模型给出验证向量的参考执行结果,通过将参考模型给出的结果与实际RTL(register-transfer level)执行结果比较来判断对错,对单核处理器环境下的串行程序来说,每次运行的结果具有唯一确定性,这使得处理器随机验证可以顺利进行。
[0003]与单核处理器不同,片上多核处理器采用共享存储系统,多个处理器核可以读写同一存储单元,这就意味着多核处理器共享存储访存事件发生次序及其结果可以不唯一,其正确性由存储一致性模型确定,存储一致性模型作为片上多核处理器的硬件与软件、操作系统与应用程序的接口,详细规定了共享存储系统中访存事件之间的次序要求,保证系统的正确性,学术界对存储一致性验证的复杂性进行了大量的研究,认为多核共享存储情况下并行程序执行结果的正确性依赖于程序中冲突操作的访问次序,并给出了并行程序执行正确的标准:用全局序表示的并行程序结果的有向图无环(参考文献:胡伟武,《共享存储系统结构》,高等教育出版社,2001)。同时,学术界也证明了不加任何限制的存储一致性验证是一个NP难的问题,这使得片上多核处理器的正确性验证成为一个高度困难的问题。
[0004]随后,有学者提出在多核处理器中,每条访存操作都有一段执行时间:这个时间从操作进入处理器开始,到操作提交时结束,在时间序上位于前面的操作的结果会被后面的操作所观察到,只有执行时间有重叠部分的操作之间才存在顺序的不确定性,由于多核处理器实现时操作窗口、访存队列、写缓存等部件的大小限制,和一个访存操作的执行时间相重叠的操作的数量也是有限的,因此,在验证存储一致性时,序关系的推导及执行图中环的检测都可以被限定在一定的操作范围内,这使得多核处理器存储一致性验证可以降为线性时间复杂度(参考文献:Yun j i Chen,etc.〃Fast Complete Memory ConsistencyVerificat1n",in Proceedings of the 15th IEEE Internat1nal Symposium onHigh-Performance Computer Architecture , 2009.),这一结论使得在实践中验证多核处理器存储一致性成为可能,依照该方法可以检测有限范围内多核处理器并行程序访存顺序的有向图是否无环,并据此判断多核处理器存储一致性设计是否正确。
[0005]然而,上述方法并不能解决多核处理器仿真验证中的结果正确性比较问题,即使证明了多核处理器并行程序访存顺序的有向图无环,也只能说明多核处理器存储一致性设计符合存储一致性模型规范,而符合存储一致性模型规范情况下的多核处理器访存次序及结果仍可以不唯一,当访存指令与并行程序中更多复杂指令随机组合在一起时,这种访存结果的不唯一性会引起执行结果状态空间爆炸,使得多核处理器执行随机仿真验证时指令执行结果的正确性很难判断。
[0006]随机验证技术是处理器仿真验证流程中的重要支撑技术,图1中描述了处理器随机验证方法的常用框架,将用户约束102和指令库101相结合,通过随机生成引擎103生成验证向量,生成的验证向量被分别送入指令级模拟器104和待验证设计仿真环境105中执行,并对执行结果进行比较,比较结果不一致时可以检测出处理器设计中的错误,对于多核处理器来说,当并行程序中访存指令与其它复杂指令随机组合在一起,访存结果的不唯一性会引起执行结果状态空间爆炸问题,使得随机验证时结果比较环节很难完成,导致很难直接使用传统随机验证技术进行多核处理器仿真验证,这一问题一直未得到解决。目前验证多核处理器常用模式是:首先运用传统随机验证技术对多核处理器中每个处理器核进行验证,再针对连接各个处理器核的片上网络进行仿真验证,最后对多核处理器系统进行存储一致性验证,这种多核处理器验证模式常常会出现设计错误逃逸现象,特别是当多核处理器存储一致性设计正确,多核交叉访存与其它指令混合执行会发生错误时,多核处理器验证常常无法准确检测和定位错误。
[0007]综上,当前多核处理器仿真验证中,访存结果的不唯一性引起结果状态空间爆炸问题,使得随机验证时结果比较环节很难完成,无法准确检测和定位错误,在多核处理器芯片实际运行时,由于操作系统的调度及共享存储访存冲突的随机性使得并行程序执行结果无法唯一确定。

【发明内容】

[0008]针对现有技术的不足,本发明提出一种支持精确访存检测的多核处理器随机验证方法及其装置。
[0009]本发明提出一种支持精确访存检测的多核处理器随机验证方法,包括:
[0010]步骤I,将待验证的多核处理器中的用户约束与指令库相结合,通过并行程序产生器,生成存在访存冲突的并行程序作为验证向量;在待验证的多核处理器仿真环境中运行所述验证向量,记录所述验证向量的执行结果及访存操作的时间信息;
[0011]步骤2,根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则执行步骤3,否则发现设计错误,停止本次随机验证并执行错误调试;
[0012]步骤3,将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次随机验证通过,继续执行多核处理器随机验证,否则进行错误调试。
[0013]所述步骤I之前还包括:
[0014]步骤11,设置全局时钟,用于记录所述访存操作的时间信息;
[0015]步骤12,设置所述并行程序产生器,支持通过伪随机方法生成所述验证向量;
[0016]步骤13,记录每条访存操作的进入时间与提交时间并写入到文件中;
[0017]步骤14,通过所述文件,进行存储一致性设计正确性检查;
[0018]步骤15,改进指令级模拟器,使所述指令级模拟器能够按照访存操作的时间顺序执行所述验证向量,并将执行结果与多核处理器模拟仿真后的执行结果进行比较。
[0019]所述步骤14包括检测有限范围内所述待验证的多核处理器的所述验证向量访存顺序的有向图是否无环,并判断所述待验证的多核处理器存储一致性设计是否正确。
[0020]所述全局时钟包括设置一个64位的计数器,从O时刻开始每个时钟节拍自增I。
[0021]所述步骤13包括通过引线方式监听所述待验证的多核处理器的各个处理器核的每条访存操作的进入时间与提交时间。
[0022]本发明还提出一种支持精确访存检测的多核处理器随机验证装置,包括:
[0023]获取验证向量模块,用于将待验证的多核处理器中的用户约束与指令库相结合,通过并行程序产生器,生成存在访存冲突的并行程序作为验证向量;在待验证的多核处理器仿真环境中运行所述验证向量,记录所述验证向量的执行结果及访存操作的时间信息;
[0024]存储一致性检查模块,用于根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则进入执行结果比较模块,否则发现设计错误,停止本次随机验证并执行错误调试;
[0025]执行结果比较模块,用于将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次随机验证通过,继续执行多核处理器随机验证,否则进行错误调试。
[0026]所述获取验证向量模块之前还包括:
[0027]设置全局时钟模块,用于设置全局时钟,用于记录所述访存操作的时间信息;
[0028]设置所述并行程序产生器模块,用于设置所述并行程序产生器,支持通过伪随机方法生成所述验证向量;
[0029]进入时间与提交时间模块,用于记录每条访存操作的进入时间与提交时间并写入到文件中;
[0030]检查模块,用于通过所述文件,进行存储一致性设计正确性检查;
[0031]改进指令级模拟器模块,用于改进指令级模拟器,使所述指令级模拟器能够按照访存操作的时间顺序执行所述验证向量,并将执行结果与多核处理器模拟仿真后的执行结果进行比较。
[0032]所述检查模块包括检测有限范围内所述待验证的多核处理器的所述验证向量访存顺序的有向图是否无环,并判断所述待验证的多核处理器存储一致性设计是否正确。
[0033]所述全局时钟包括设置一个64位的计数器,从O时刻开始每个时钟节拍自增I。
[0034]所述进入时间与提交时间模块包括通过引线方式监听所述待验证的多核处理器的各个处理器核的每条访存操作的进入时间与提交时间。
[0035]由以上方案可知,本发明的优点在于:
[0036]本发明提出了一种支持精确访存检测的多核处理器随机验证方法及其装置,通过在随机验证环境中设置全局时钟及运行后比较机制,支持多核处理器随机验证中的精确结果比较,解决了长期困扰多核处理器随机验证的错误准确检测和定位的问题。
【附图说明】
[0037]图1为现有技术中单核处理器随机验证系统结构示意图;
[0038]图2为本发明中多核处理器随机验证环境改进流程示例图;
[0039]图3为本发明中多核处理器随机验证执行流程示意图。
【具体实施方式】
[0040]本发明的目的是解决多核处理器随机验证中的精确结果比较问题,支持多核处理器随机验证的错误准确检测和定位,为了解决上述技术问题,提出了一种支持精确访存检测的多核处理器随机验证方法及其装置。
[0041]为了达到上述目的,本发明提出一种支持精确访存检测的多核处理器随机验证方法及其装置,包括多核处理器随机验证环境改进方法和多核处理器随机验证执行方法两部分,通过以下技术方案实现:
[0042]多核处理器随机验证环境改进方法,包括如下步骤:
[0043]1.在随机验证测试平台顶层模块中设置全局时钟;
[0044]2.将单核处理器随机验证环境中的随机生成引擎改造为并行程序产生器,支持用伪随机方法产生有访存冲突的并行程序;
[0045]3.在随机验证测试平台顶层模块中设置对待验证的多核处理器中每个处理器核访存操作的监听机制,记录每条访存操作的进入时间和提交时间并写入到文件中;
[0046]4.在随机验证环境的结果比较中增加存储一致性设计正确性检测机制,利用上述记录每条访存操作的进入时间和提交时间的文件,进行存储一致性设计正确性检查;
[0047]5.改进指令级模拟器,使其能够按照此前记录的访存操作时间顺序执行并行程序,并将结果与待验证的多核处理器模拟仿真后的执行结果进行比较。
[0048]多核处理器随机验证执行方法,包括如下步骤:
[0049]1.将用户约束和指令库相结合,通过并行程序产生器,用伪随机方法生成有访存冲突的并行程序作为验证向量;
[0050]2.在待验证的多核处理器仿真环境中运行前述有访存冲突的并行程序,记录并行程序的执行结果及访存操作的时间信息;
[0051]3.根据前述并行程序的执行结果及访存操作的时间信息,进行存储一致性设计正确性检查。如果待验证的多核处理器存储一致性设计不符合需求规范要求的存储一致性模型,则发现设计错误,停止本次随机验证执行错误调试;否则继续执行下一步骤;
[0052]4.将前述有访存冲突的并行程序及访存操作的时间信息送入指令级模拟器,指令级模拟器按照此前记录的访存操作时间顺序执行并行程序,并将结果与待验证的多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次模拟仿真验证通过,继续执行多核处理器随机验证;如果比较结果不一致,则发现设计错误,进行错误调试。
[0053]下面结合附图和【具体实施方式】对本发明做进一步详细描述。
[0054]一种支持精确访存检测的多核处理器随机验证方法及其装置,具体实施流程包括多核处理器随机验证环境改进流程和多核处理器随机验证执行流程两部分。
[0055]多核处理器随机验证环境改进流程,如图2所示:
[0056]步骤S201.在随机验证测试平台顶层模块中设置全局时钟。在具体实施时,可以在随机验证测试平台顶层模块中,设置一个64位的计数器,从O时刻开始每个时钟节拍自增I,即可获得全局时钟;
[0057]步骤S202.将单核处理器随机验证环境中的随机生成引擎改造为并行程序产生器,支持用伪随机方法产生有访存冲突的并行程序。并行程序中访问的内存地址是虚拟地址,而访存冲突是指对相同物理内存地址的访问,需要在程序的实际运行中把相同的访存虚拟地址映射到同样的物理地址,这样才会产生真正的冲突,在待验证的多核处理器随机验证环境中没有操作系统支持,在具体实施时,可以在随机验证环境中将并行程序中每个进程的代码段分配到不同的物理地址,而将所有进程的数据段都分配到相同的物理地址,以便产生真正的访存冲突;
[0058]步骤S203.在随机验证测试平台顶层模块中设置对待验证的多核处理器中每个处理器核访存操作的监听机制,记录每条访存操作的进入时间和提交时间并写入到文件中。在具体实施时,随机验证测试平台顶层模块可以通过引线方式监听各个处理器核模块的访存信息,例如:在顶层模块中设置对某个处理器核cache写操作的监听,使用assign dcw_valid = top.cpu_corel......dcache_0.dcw_valid,其它访存操作监听方式可以此类推;
[0059]步骤S204.在随机验证环境的结果比较中增加存储一致性设计正确性检测机制,利用上述记录每条访存操作的进入时间和提交时间的文件,进行存储一致性设计正确性检查。在具体实施时,采用传统方法检测有限范围内待验证的多核处理器并行程序访存顺序的有向图是否无环,并据此判断待验证的多核处理器存储一致性设计是否正确;
[0060]步骤S205.改进指令级模拟器,使其能够按照此前记录的访存操作时间顺序执行并行程序,并将结果与待验证的多核处理器模拟仿真后的执行结果进行比较。
[0061 ]多核处理器随机验证执行流程,如图3所示:
[0062]步骤S301.将用户约束和指令库相结合,通过并行程序产生器,用伪随机方法生成有访存冲突的并行程序作为验证向量;
[0063]步骤S302.在待验证的多核处理器仿真环境中运行前述有访存冲突的并行程序,记录并行程序的执行结果及访存操作的时间信息;
[0064]步骤S303.根据前述并行程序的执行结果及访存操作的时间信息,进行存储一致性设计正确性检查;
[0065]步骤S304.判断待验证的多核处理器存储一致性设计是否符合需求规范要求的存储一致性模型,如果不符合需求规范要求的存储一致性模型,则发现设计错误,停止本次随机验证执行,进行错误调试;否则执行步骤S305;
[0066]步骤S305.将前述有访存冲突的并行程序及访存操作的时间信息送入指令级模拟器;
[0067]步骤S306.指令级模拟器按照此前记录的访存操作时间顺序执行并行程序,并将结果与待验证的多核处理器模拟仿真后的执行结果进行比较;
[0068]步骤S307.判断前述比较结果是否一致,如果比较结果一致,则执行步骤S308;如果比较结果不一致,则发现设计错误,进行错误调试;
[0069]步骤308本次模拟仿真验证通过,继续执行多核处理器随机验证。
[0070]本发明还提出一种支持精确访存检测的多核处理器随机验证装置,包括:
[0071]获取验证向量模块,用于将待验证的多核处理器中的用户约束与指令库相结合,通过并行程序产生器,生成存在访存冲突的并行程序作为验证向量;在待验证的多核处理器仿真环境中运行所述验证向量,记录所述验证向量的执行结果及访存操作的时间信息;
[0072]存储一致性检查模块,用于根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则进入执行结果比较模块,否则发现设计错误,停止本次随机验证并执行错误调试;
[0073]执行结果比较模块,用于将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次随机验证通过,继续执行多核处理器随机验证,否则进行错误调试。
[0074]所述获取验证向量模块之前还包括:
[0075]设置全局时钟模块,用于设置全局时钟,用于记录所述访存操作的时间信息;
[0076]设置所述并行程序产生器模块,用于设置所述并行程序产生器,支持通过伪随机方法生成所述验证向量;
[0077]进入时间与提交时间模块,用于记录每条访存操作的进入时间与提交时间并写入到文件中;
[0078]检查模块,用于通过所述文件,进行存储一致性设计正确性检查;
[0079]改进指令级模拟器模块,用于改进指令级模拟器,使所述指令级模拟器能够按照访存操作的时间顺序执行所述验证向量,并将执行结果与多核处理器模拟仿真后的执行结果进行比较。
[0080]所述检查模块包括检测有限范围内所述待验证的多核处理器的所述验证向量访存顺序的有向图是否无环,并判断所述待验证的多核处理器存储一致性设计是否正确。[0081 ]所述全局时钟包括设置一个64位的计数器,从O时刻开始每个时钟节拍自增I。
[0082]所述进入时间与提交时间模块包括通过引线方式监听所述待验证的多核处理器的各个处理器核的每条访存操作的进入时间与提交时间。
【主权项】
1.一种支持精确访存检测的多核处理器随机验证方法,其特征在于,包括: 步骤I,将待验证的多核处理器中的用户约束与指令库相结合,通过并行程序产生器,生成存在访存冲突的并行程序作为验证向量;在待验证的多核处理器仿真环境中运行所述验证向量,记录所述验证向量的执行结果及访存操作的时间信息; 步骤2,根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则执行步骤3,否则发现设计错误,停止本次随机验证并执行错误调试; 步骤3,将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次随机验证通过,继续执行多核处理器随机验证,否则进行错误调试。2.如权利要求1所述的支持精确访存检测的多核处理器随机验证方法,其特征在于,所述步骤I之前还包括: 步骤11,设置全局时钟,用于记录所述访存操作的时间信息; 步骤12,设置所述并行程序产生器,支持通过伪随机方法生成所述验证向量; 步骤13,记录每条访存操作的进入时间与提交时间并写入到文件中; 步骤14,通过所述文件,进行存储一致性设计正确性检查; 步骤15,改进指令级模拟器,使所述指令级模拟器能够按照访存操作的时间顺序执行所述验证向量,并将执行结果与多核处理器模拟仿真后的执行结果进行比较。3.如权利要求2所述的支持精确访存检测的多核处理器随机验证方法,其特征在于,所述步骤14包括检测有限范围内所述待验证的多核处理器的所述验证向量访存顺序的有向图是否无环,并判断所述待验证的多核处理器存储一致性设计是否正确。4.如权利要求2所述的支持精确访存检测的多核处理器随机验证方法,其特征在于,所述全局时钟包括设置一个64位的计数器,从O时刻开始每个时钟节拍自增I。5.如权利要求2所述的支持精确访存检测的多核处理器随机验证方法,其特征在于,所述步骤13包括通过引线方式监听所述待验证的多核处理器的各个处理器核的每条访存操作的进入时间与提交时间。6.一种支持精确访存检测的多核处理器随机验证装置,其特征在于,包括: 获取验证向量模块,用于将待验证的多核处理器中的用户约束与指令库相结合,通过并行程序产生器,生成存在访存冲突的并行程序作为验证向量;在待验证的多核处理器仿真环境中运行所述验证向量,记录所述验证向量的执行结果及访存操作的时间信息; 存储一致性检查模块,用于根据所述执行结果及所述访存操作的时间信息,进行存储一致性设计正确性检查,如果所述待验证的多核处理器的存储一致性设计符合存储一致性模型,则进入执行结果比较模块,否则发现设计错误,停止本次随机验证并执行错误调试;执行结果比较模块,用于将所述验证向量及所述访存操作的时间信息送入指令级模拟器,所述指令级模拟器按照访存操作的时间顺序执行所述验证向量,并将结果与多核处理器模拟仿真后的执行结果进行比较,如果比较结果一致,则本次随机验证通过,继续执行多核处理器随机验证,否则进行错误调试。7.如权利要求6所述的支持精确访存检测的多核处理器随机验证装置,其特征在于,所述获取验证向量模块之前还包括: 设置全局时钟模块,用于设置全局时钟,用于记录所述访存操作的时间信息; 设置所述并行程序产生器模块,用于设置所述并行程序产生器,支持通过伪随机方法生成所述验证向量; 进入时间与提交时间模块,用于记录每条访存操作的进入时间与提交时间并写入到文件中; 检查模块,用于通过所述文件,进行存储一致性设计正确性检查; 改进指令级模拟器模块,用于改进指令级模拟器,使所述指令级模拟器能够按照访存操作的时间顺序执行所述验证向量,并将执行结果与多核处理器模拟仿真后的执行结果进行比较。8.如权利要求7所述的支持精确访存检测的多核处理器随机验证装置,其特征在于,所述检查模块包括检测有限范围内所述待验证的多核处理器的所述验证向量访存顺序的有向图是否无环,并判断所述待验证的多核处理器存储一致性设计是否正确。9.如权利要求7所述的支持精确访存检测的多核处理器随机验证装置,其特征在于,所述全局时钟包括设置一个64位的计数器,从O时刻开始每个时钟节拍自增I。10.如权利要求7所述的支持精确访存检测的多核处理器随机验证装置,其特征在于,所述进入时间与提交时间模块包括通过引线方式监听所述待验证的多核处理器的各个处理器核的每条访存操作的进入时间与提交时间。
【文档编号】G06F11/263GK105930242SQ201610299336
【公开日】2016年9月7日
【申请日】2016年5月6日
【发明人】沈海华, 赵跃辉, 谭华哲
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1