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

指令流一致性测试方法与流程

2022-03-22 20:19:44 来源:中国专利 TAG:


1.本发明涉及一种指令流一致性测试方法,属于国产处理器的功能正确性验证领域。


背景技术:

2.同一个cpu上以及不同cpu上,一部分核心装填指令、另一些核心执行所装填的指令时会产生指令流的一致性,这在java解释执行的场景下会经常发生,在芯片设计阶段,由于模拟仿真环境的速度很慢,使用java程序来验证指令流的一致性不仅效率低下,而且查错困难。在cache一致性验证中,常见的是对数据cache的一致性验证,少见对指令cache的一致性验证。目前cpu的核数不断增多,指令cache的验证工作也不可或缺。


技术实现要素:

3.本发明的目的是提供一种指令流一致性测试方法,以解决指令cache一致性验证困难的问题。
4.为达到上述目的,本发明采用的技术方案是:提供一种指令流一致性测试方法,包括以下步骤:s1、初始化各项参数,所述参数包括总的执行遍数、校验次数、校验失败次数、全局变量的初始值,在以下步骤中对各项参数进行更改并赋新值;s2、读入命令行参数,包括cpu数、每个cpu的核的位图;s3、设置共享空间的大小,申请共享的可执行空间;s4、fork进程,并将进程绑定在不同核心上;s5、进入指令cache测试入口模块,初始化由随机数组成的数组,并添加前缀指令;s6、进入自动测试模块,首先初始化寄存器区域和内存区域,然后根据指令模板装填随机指令序列到可执行空间,装填完随机指令序列之后,跳转到执行指令模块;s7、进入执行指令模块,首先加载整型寄存器、浮点寄存器和浮点控制寄存器的值,然后执行所装填的随机指令序列;将随机指令序列的最后几条指令装填为返回指令,使得随机指令序列执行完毕后,返回到执行指令模块;s8、执行指令模块运行结束,返回自动测试模块,然后返回到指令cache测试入口模块,并进入结束测试模块;s9、在结束测试模块中,判断自动测试遍数是否超过设定的执行遍数,如果超过,则进行结果校验,如果没超过,则再次进入自动测试模块;s10、结束测试后,汇报测试结果并回收进程,然后退出并结束。
5.上述技术方案中进一步改进的方案如下:1. 上述方案中,s9中通过将各个核心执行后的共享空间中的值与寄存器值进行比较,进行结果校验。
6.2. 上述方案中,s6中,指令的装填方式包括:偶数进程装填,所有进程一起执行;奇数进程装填,偶数进程执行;某些进程装填,所有进程一起执行;一半进程装填,一半进程执行。
7.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明设计了一种指令流一致性测试的框架,通过构建指令流一致性验证的模型,支持多种指令块装填的方式,灵活控制指令流一致性测试的场景,能在流片前增强指令流一致性的验证,确保芯片功能的正确性。
附图说明
8.附图1为本发明一种指令流一致性测试方法的示意图。
具体实施方式
9.实施例:本发明提供一种指令流一致性测试方法,具体包括以下步骤:s1、初始化各项参数,所述参数包括总的执行遍数、校验次数、校验失败次数、指令数等全局变量的初始值,在以下步骤中对各项参数进行更改并赋新值;s2、读入命令行参数,包括cpu数、每个cpu的核的位图等;s3、设置共享空间的大小,申请共享的可执行空间;s4、fork进程,并将进程绑定在不同核心上,为实现一个或多个cpu的不同核心的不同装填方法打下基础;s5、进入指令cache测试入口模块,初始化由随机数组成的数组,并添加前缀指令;s6、进入自动测试模块,首先初始化寄存器区域和内存区域,然后根据指令模板装填随机指令序列到可执行空间,装填完随机指令序列之后,跳转到执行指令模块;s7、进入执行指令模块,首先加载整型寄存器、浮点寄存器和浮点控制寄存器的值,然后执行所装填的随机指令序列;将随机指令序列的最后几条指令装填为返回指令,使得随机指令序列执行完毕后,返回到执行指令模块;s8、执行指令模块运行结束,返回自动测试模块,然后返回到指令cache测试入口模块,并进入结束测试模块;s9、在结束测试模块中,判断自动测试遍数是否超过设定的执行遍数,如果超过,则进行结果校验,如果没超过,则再次进入自动测试模块;s10、结束测试后,汇报测试结果并回收进程,然后退出并结束。
10.s9中通过将各个核心执行后的共享空间中的值与寄存器值进行比较,进行结果校验。
11.s6中,指令的装填方式由编程人员自定义,包括:偶数进程装填,所有进程一起执行;奇数进程装填,偶数进程执行;某些进程装填,所有进程一起执行;一半进程装填,一半进程执行。
12.对上述实施例的进一步解释如下:本发明形成的指令序列具有随机性,对常用寄存器的操作不易预测,使得测试验证可以覆盖更多的实际应用场景,利用随机指令序列装填指令cache,通过进程绑定实现同
一个cpu上以及不同cpu上,一部分核心写指令流,另一些核心(可以跟写的核心号相同,也可不同)执行所写的指令,达到指令流一致性测试的目的。
13.本发明主要分为五个部分,具体细节如下:1、初始化共享的可执行空间,设置各项参数,利用指令格式生成指令模板;2、通过进程绑定实现同一个cpu上以及不同cpu上,不同核心组合方式及不同装填方法,利用自动生成随机数和指令模板形成不同的随机指令序列,将指令序列装填到可执行空间;3、加载常用寄存器,将寄存器值进行备份,以便程序结束后恢复寄存器,还原系统状态;4、进入指令执行端口,设置不同核心组合方式执行已装填的指令序列;5、指令序列执行完毕后,将常用寄存器值装填进共享访存空间,不同核心可重复装填共享空间,将各个核心执行后的共享访存空间中的值与寄存器值进行比较,验证指令流的一致性。
14.采用上述一种指令流一致性测试方法时,其设计了一种指令流一致性测试的框架,通过构建指令流一致性验证的模型,支持多种指令块装填的方式,灵活控制指令流一致性测试的场景,能在流片前增强指令流一致性的验证,确保芯片功能的正确性。
15.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。


技术特征:
1.一种指令流一致性测试方法,其特征在于,包括以下步骤:s1、初始化各项参数,所述参数包括总的执行遍数、校验次数、校验失败次数、全局变量的初始值,在以下步骤中对各项参数进行更改并赋新值;s2、读入命令行参数,包括cpu数、每个cpu的核的位图;s3、设置共享空间的大小,申请共享的可执行空间;s4、fork进程,并将进程绑定在不同核心上;s5、进入指令cache测试入口模块,初始化由随机数组成的数组,并添加前缀指令;s6、进入自动测试模块,首先初始化寄存器区域和内存区域,然后根据指令模板装填随机指令序列到可执行空间,装填完随机指令序列之后,跳转到执行指令模块;s7、进入执行指令模块,首先加载整型寄存器、浮点寄存器和浮点控制寄存器的值,然后执行所装填的随机指令序列;将随机指令序列的最后几条指令装填为返回指令,使得随机指令序列执行完毕后,返回到执行指令模块;s8、执行指令模块运行结束,返回自动测试模块,然后返回到指令cache测试入口模块,并进入结束测试模块;s9、在结束测试模块中,判断自动测试遍数是否超过设定的执行遍数,如果超过,则进行结果校验,如果没超过,则再次进入自动测试模块;s10、结束测试后,汇报测试结果并回收进程,然后退出并结束。2.根据权利要求1所述的一种指令流一致性测试方法,其特征在于:s9中通过将各个核心执行后的共享空间中的值与寄存器值进行比较,进行结果校验。3.根据权利要求1所述的一种指令流一致性测试方法,其特征在于:s6中,指令的装填方式包括:偶数进程装填,所有进程一起执行;奇数进程装填,偶数进程执行;某些进程装填,所有进程一起执行;一半进程装填,一半进程执行。

技术总结
本发明公开一种指令流一致性测试方法,S1、初始化各项参数;S2、读入命令行参数;S3、设置共享空间的大小,申请共享的可执行空间;S4、Fork进程,并将进程绑定在不同核心上;S5、进入指令Cache测试入口模块,初始化由随机数组成的数组,并添加前缀指令;S6、进入自动测试模块;S7、进入执行指令模块;S8、执行指令模块运行结束,并进入结束测试模块;S9、在结束测试模块中,判断是否超过设定的执行遍数,如果超过,则进行结果校验,如果没超过,则再次进入自动测试模块;S10、结束测试后,汇报测试结果并回收进程,然后退出并结束。本发明解决了指令Cache一致性验证困难的问题。Cache一致性验证困难的问题。Cache一致性验证困难的问题。


技术研发人员:刘鑫 王丽一 陈德训 谭坚 胡夏晖 陈明津
受保护的技术使用者:无锡江南计算技术研究所
技术研发日:2021.04.26
技术公布日:2022/3/21
再多了解一些

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

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

相关文献