访存越界检测方法、装置及存储介质与流程

文档序号:37436958发布日期:2024-03-25 19:35阅读:20来源:国知局
访存越界检测方法、装置及存储介质与流程

本申请实施例涉及编译技术和人工智能,尤其涉及一种访存越界检测方法、装置及存储介质。


背景技术:

1、在面向流式计算的硬件中,每一流式计算指令通常需要从存储单元中读取输入数据进行某种处理(例如相加、卷积等)后,再将输出数据写回存储单元,该存储单元可以由程序员显式管理,每一流式计算指令处理的数据的起始地址以及长度也可以由程序员显式指定。当程序员为流式计算指令指定的地址非法,或者数据量超过实际需要处理的规模,此种非法情况被称之为访存越界,指令的访存越界通常会触发硬件中断或者存储踩踏。

2、针对可能存在的访存越界问题,可以对代码进行访存越界的检查。现有技术中检查访存越界的常用方法是利用shadow memory(影子内存)或者redzone(红区)记录程序实际的访存行为,这种在运行时对程序进行越界检查的方式均会带来存储空间的占用,且应用场景有局限、可能影响程序的执行效率。例如,基于redzone的方法需要在程序员申请的存储空间前后预留空间,其并不适用于片上存储空间有限的情况;再如,shadow memory的方法需要在片外ddr(双倍速率同步动态随机存储器)上预留足够的shadow memory空间,若硬件缓存容量较小而且访存延迟较大,在程序执行过程中频繁访问shadow memory空间会严重影响实时核函数(kernel)的执行时间,极易触发超时中断。


技术实现思路

1、本申请实施例提供一种访存越界检测方法、装置及存储介质,以降低访存越界检测的成本,具有较高的灵活性和兼容性。

2、第一方面,本申请实施例提供一种访存越界检测方法,包括:

3、获取程序代码中声明的全局数组;

4、获取所述程序代码中的访存操作的操作数信息;

5、根据所述操作数信息以及所述全局数组,生成访存越界检查代码;

6、将所述访存越界检查代码插入所述访存操作的代码之前,生成程序代码的目标代码,其中所述访存越界检查代码用于在执行所述访存操作的代码前执行以进行访存越界检查。

7、第二方面,本申请实施例提供一种访存越界检测装置,包括:

8、全局数组获取模块,用于获取程序代码中声明的全局数组;

9、操作数信息获取模块,用于获取所述程序代码中的访存操作的操作数信息;

10、生成模块,用于根据所述操作数信息以及所述全局数组,生成访存越界检查代码;

11、插桩模块,用于将所述访存越界检查代码插入所述访存操作的代码之前,生成程序代码的目标代码,其中所述访存越界检查代码用于在执行所述访存操作的代码前执行以进行访存越界检查。

12、第三方面,本申请实施例提供一种访存越界检测装置,包括:至少一个处理器及存储器;

13、所述存储器存储计算机执行指令;

14、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面所述的方法。

15、第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被至少一个处理器执行时,实现如第一方面所述的方法。

16、本申请实施例提供的访存越界检测方法、装置及存储介质,通过获取程序代码中声明的全局数组;获取程序代码中的访存操作的操作数信息;根据操作数信息以及全局数组,生成访存越界检查代码;将访存越界检查代码插入访存操作的代码之前,生成程序代码的目标代码,其中访存越界检查代码用于在执行访存操作的代码前执行以进行访存越界检查。在编译期针对访存操作生成访存越界检查代码并插桩到访存操作的代码之前,可以在执行访存操作前先执行访存越界检查代码进行访存越界检查,不占用额外存储空间,以较低的运行时开销实现检查程序中的访存越界行为。



技术特征:

1.一种访存越界检测方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,还包括:

3.根据权利要求2所述的方法,其特征在于,所述根据所述操作数信息以及所述全局数组,生成访存越界检查代码,包括:

4.根据权利要求2所述的方法,其特征在于,所述根据所述操作数信息以及所述目标存储空间对应的数组集合,生成所述访存越界检查代码,包括:

5.根据权利要求4所述的方法,其特征在于,所述操作数信息包括第一起始地址和操作数长度,所述根据所述操作数信息以及所述目标存储空间对应的数组集合,生成将所述操作数信息对应的存储空间与所述目标存储空间对应的数组集合中各数组对应的存储空间范围比较的代码,包括:

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:

7.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述访存越界检查代码插入所述访存操作的代码之前,包括:

8.根据权利要求7所述的方法,其特征在于,所述根据所述操作数信息以及所述全局数组,生成访存越界检查代码,包括:

9.根据权利要求8所述的方法,其特征在于,所述操作数信息集合包括不同存储空间对应的操作数信息集合;

10.根据权利要求8所述的方法,其特征在于,还包括:

11.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述访存越界检查代码插入所述访存操作的代码之前后,还包括:

12.一种访存越界检测装置,其特征在于,包括:

13.一种访存越界检测装置,其特征在于,包括:至少一个处理器及存储器;

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被至少一个处理器执行时,实现如权利要求1-11任一项所述的方法。


技术总结
本申请实施例提供一种访存越界检测方法、装置及存储介质,根据程序代码中的访存操作的操作数信息以及程序代码中声明的全局数组,生成访存越界检查代码;将访存越界检查代码插入访存操作的代码之前,生成程序代码的目标代码,其中访存越界检查代码用于在执行访存操作的代码前执行以进行访存越界检查。在编译期针对访存操作生成访存越界检查代码并插桩到访存操作的代码之前,可以在执行访存操作前先执行访存越界检查代码进行访存越界检查,不占用额外存储空间,以较低的运行时开销实现检查程序中的访存越界行为。

技术研发人员:请求不公布姓名,请求不公布姓名
受保护的技术使用者:中科寒武纪科技股份有限公司
技术研发日:
技术公布日:2024/3/24
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1