System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及仿真,尤其涉及一种应针对simd指令的仿真验证方法及存储介质。
技术介绍
1、在对simd(single instruction multiple data,单指令多数据流)指令进行仿真验证时,通过仿真的方式生成simd指令及指令序列的执行结果,然后进行正确性验证。能够帮助芯片设计人员在设计阶段快速地确定simd指令集设计的合理性及部分功能实现的可行性,并且能够帮助快速确定编译器所生成的指令或指令序列的正确性,以及快速地定位错误的指令或指令序列。
2、目前simd指令或指令序列的运行过程仿真方式主要有两种:一种方式是按成型的电路设计在电路硬件仿真器上搭建电路,真实地执行指令或指令序列,然后对结果进行正确性验证;另一种方式是使用专业电路仿真软件进行rtl仿真,通过软件模拟硬件的每一个时钟周期的运行状态进行仿真执行,然后对结果进行正确性验证。
3、前述两种仿真方式都要求都需要整个simd或部分指令的设计完成度达到完全可运行状态才可进行仿真运行,无法在更早的框架设计阶段进行验证。
4、上述现有的仿真验证方式均存在弊端,第一种方式的仿真环境搭建流程复杂、难度很高,且仿真验证阶段需要专业人员,人力成本和时间成本高。第二种方式需要专业电路仿真软件的支持,此类专业软件也难以对接到真实的测试环境中,同时在芯片电路规模较大或指令序列较长时,存在仿真时间太长的问题。且上述两种方式均需要整个simd或部分指令的设计完成度达到完全可运行状态才可进行仿真运行,无法在更早的框架设计阶段进行验证。
5
技术实现思路
1、为了解决simd指令仿真校验低效、成本高且不具前瞻性的技术问题,本公开的目的在于提供一种针对simd指令的仿真验证方法及存储介质。
2、本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
3、根据本公开的一个方面,提供一种针对simd指令的仿真验证方法,所述方法包括:
4、仿真程序开始,从指令序列中依次取出指令,投递到simd执行单元的指令暂存数组中;
5、在当前时钟周期开始后,根据程序计数器的值从所述指令暂存数组的对应位置以超长指令字vliw为单位取出数条simd指令;
6、根据每条所述simd指令分别构造一个对应的执行对象,获得执行对象数组;
7、将各所述执行对象按照其对应的指令延迟数挂载到所述执行对象数组的相应位置上;
8、将所述执行对象数组上挂载的全部执行对象均执行一个时钟周期的操作;
9、等待所述全部执行对象的操作均执行完毕;
10、将所述执行对象数组中挂载在第0位的所述全部执行对象释放,并将后续位置所挂载的执行对象均前移1位;
11、对程序控制模块进行状态更新,结束所述当前时钟周期的仿真程序,其中,所述程序控制模块与硬件的循环指令和分支跳转指令对应设置。
12、在本公开一个实施例中,包括:
13、在所述当前时钟周期开始前,将所述程序计数器置0。
14、在本公开一个实施例中,所述方法包括:
15、解析所述各执行对象对应的simd指令;
16、根据解析结果确定执行的操作,其中,所述操作包括寄存器读写、内存拷贝、计算、循环、退出以及函数调用和分支跳转。
17、在本公开一个实施例中,所述根据所述目标操作指令执行目标操作,包括:
18、若所述操作为所述寄存器读写,则调用寄存器管理模块的接口,从对应的寄存器中读取或者写入所需数据;
19、若所述操作为所述内存拷贝,则调用内存管理模块的接口,从对应的目标内存地址载入数据或者将数据存储到所述目标内存地址中;
20、若所述操作为所述计算,则根据从目标寄存器获取的计算数据以及对应的计算公式进行计算操作;
21、若所述操作为所述循环,则获取循环语句块的信息,调用程序控制模块的接口将所述循环语句块的信息存储在循环信息栈中;
22、若所述操作为所述退出,则调用所述程序控制模块的接口将程序退出标志位置1;
23、若所述操作为所述分支跳转,则获取跳转位置信息,当分支条件成立时调用所述程序控制模块的接口将所述程序计数器的值修改为跳转位置对应的值;
24、若所述操作为所述函数调用,则获取对应的跳转位置的信息,将所述当前时钟周期内的所述程序计数器的值保存在预设寄存器中,调用所述程序控制模块的接口将所述程序计数器的值修改为跳转位置对应的值。
25、在本公开一个实施例中,还包括:
26、预先根据每条所述simd指令所要实现的计算功能以及硬件计算单元的特性,获取计算公式,以使软件的所述计算公式的计算结果与所述硬件指令的期望计算结果一致。
27、在本公开一个实施例中,所述方法还包括:
28、在内存数据参与计算时,根据数据载入指令,将数据从所述内存中将对应位置的计算数据拷贝到所述目标寄存器中;
29、在储存计算结果时,根据数据存储指令,将所述计算结果数据从所述寄存器中拷贝到所述内存中。
30、在本公开一个实施例中,所述对程序控制模块进行状态更新,结束所述当前时钟周期的仿真程序,包括:
31、若所述当前时钟周期内程序退出标志位已生效,则程序退出;
32、若所述程序计数器的值超出vliw总数且所述执行对象数组为空,则程序退出;
33、若所述当前时钟周期内循环信息栈不为空,且所述程序计数器所对应的是循环语句块的末尾指令位置,判断剩余循环次数;其中,若所述剩余循环次数不为0,则将所述程序计数器修改为循环语句块的起始指令位置,并将所述循环信息栈栈顶所保存的剩余循环次数减1;若所述剩余循环次数为0,则将循环信息栈栈顶所保存的信息弹出,并将所述程序计数器加1,执行下一个时钟周期的仿真操作;
34、若所述当前时钟周期内有跳转类指令执行完毕,所述程序计数器被修改,则执行所述下一个时钟周期的仿真操作;
35、若所述当前时钟周期内,所述程序控制模块无额外操作,则所述程序计数器的值加1,并执行所述下一个时钟周期的仿真操作。
36、在本公开一个实施例中,还包括:
37、检查内存仿真模块、存储器仿真模块及寄存器仿真模块中的数据是否符合预期。
38、在本公开一个实施例中,还包括:
39、将软件计算获得的输出数据,转换为第二预设格式存储至所述内存仿真模块、所述存储器仿真模块或所述内部寄存器仿真模块中。
40、根据本公开的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的针对simd指令的仿真验证方法。
41、本公开的实施例所提供的仿真程序开始,从本文档来自技高网...
【技术保护点】
1.一种针对SIMD指令的仿真验证方法,其特征在于,所述方法包括:
2.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,包括:
3.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,所述将所述执行对象数组上挂载的全部执行对象均执行一个时钟周期的操作,包括:
4.如权利要求3针对SIMD指令的仿真验证方法,其特征在于,所述方法包括:
5.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,还包括:
6.如权利要求4针对SIMD指令的仿真验证方法,其特征在于,所述方法还包括:
7.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,所述对程序控制模块进行状态更新,结束所述当前时钟周期的仿真程序,包括:
8.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,还包括:
9.如权利要求1针对SIMD指令的仿真验证方法,其特征在于,还包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~9中任意一
...【技术特征摘要】
1.一种针对simd指令的仿真验证方法,其特征在于,所述方法包括:
2.如权利要求1针对simd指令的仿真验证方法,其特征在于,包括:
3.如权利要求1针对simd指令的仿真验证方法,其特征在于,所述将所述执行对象数组上挂载的全部执行对象均执行一个时钟周期的操作,包括:
4.如权利要求3针对simd指令的仿真验证方法,其特征在于,所述方法包括:
5.如权利要求1针对simd指令的仿真验证方法,其特征在于,还包括:
6.如权利要求4针对simd指令的仿真验...
【专利技术属性】
技术研发人员:张奕玮,刘洪运,王雨顺,陆天翼,于谦,梁爽,
申请(专利权)人:北京超星未来科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。