买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】面向异构平台的多层次存储结构内存检测方法_无锡江南计算技术研究所_201910903842.0 

申请/专利权人:无锡江南计算技术研究所

申请日:2019-09-24

公开(公告)日:2021-04-09

公开(公告)号:CN112631893A

主分类号:G06F11/36(20060101)

分类号:G06F11/36(20060101)

优先权:

专利状态码:有效-授权

法律状态:2022.11.15#授权;2021.04.27#实质审查的生效;2021.04.09#公开

摘要:本发明公开一种面向异构平台的多层次存储结构内存检测方法,基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理;S4、编译器将S3中处理过的中间代码,编译、汇编、链接,生成可执行代码,进而生成可执行文件并运行。本发明在拥有多指令集、多层次存储结构的异构众核处理器上实现内存错误的动态检测,检测的错误类型多,且错误信息描述详尽,定位精准,检测效果较好。

主权项:1.一种面向异构平台的多层次存储结构内存检测方法,其特征在于:基于异构众核处理器的编译器和运行时库,包括以下步骤:S1、实现自定义动态运行时库,提供接口函数,主核、从核可以通过接口函数,调用自定义动态运行时库,在该自定义动态运行时库中实现内存检测及相关工作,具体过程如下:S11、在内存映射的过程中,建立阴影内存,阴影内存与主存之间的关系是:N=ChooseBlock;shadow=3)+shadowbeg[N],即阴影内存与主存之间存在一一对应的映射关系;S12、基于多层次存储结构,自定义动态运行时库按访问权限和功能特性,对主存和阴影内存的虚拟空间进行重新划分,把虚拟空间分为只读数据和共享数据段、动态空间段、私有空间段;S13、毒化和去毒化阴影内存区,即定义阴影内存中每个字节存取一个数字k,k小于0表示该阴影内存对应的主存空间地址会发生非法内存访问错误;k等于0表示该阴影内存对应的8个字节内存可以访问;k大于0小于7表示该阴影内存对应的8个字节内存中前k个字节内存可以访问;S14、使用自定义动态运行时库中的__asan_memset、__asan_memmove、__asan_memcpy、asan_malloc、asan_calloc、asan_realloc、asan_free接口分别替换标准c库中的memset、memmove、memcpy、malloc、calloc、realloc、free接口;用户可以通过上述替换后的接口申请堆变量和释放堆变量;当申请堆变量时,将堆变量的隔离区毒化,并使用数据结构,记录哪些堆变量可以分配、哪些堆变量不可以分配,形成trunk记录;当释放堆变量时,将堆变量去毒化,并去除数据结构中对应的trunk记录;释放掉的堆变量可以继续分配;S15、根据毒化值及trunk记录,生成内存错误检测报告;S2、在自定义动态运行时库中,当从核程序发生段为例异常或终止异常时,从核向主核发送异常中断信号,主核代理从核进行异常处理;S3、主核、从核各自的编译器分别对源程序进行编译分析,将源程序处理为中间代码,并在中间代码上对需要插桩的位置进行插桩处理,具体过程如下:S31、编译分析源程序,根据访存指令,发现需要检测的变量数据,在访存指令前后对需要检测的变量数据进行插桩,所述需要检测的变量数据包括全局变量、栈变量和堆变量;S32、编译器对全局变量进行插桩,对全局变量前后插入隔离区,将原全局变量与隔离区打包成新的结构体全局变量,并用新的结构体全局变量替换原全局变量,编译器判断所述新的结构体全局变量是否可访问,如果可以访问,将打包后的新的结构体全局变量对应的阴影内存去毒化,如果不可以访问,将打包后的新的结构体全局变量对应的阴影内存毒化,在全局变量读写操作时,将用于判定该全局变量是否可以访问的代码,分别插入主核、从核的访存指令前;S33、对栈变量前后插入隔离区,在函数入口处,编译器判断该栈变量是否可访问,如果可以访问,将该栈变量和隔离区对应的阴影内存去毒化,如果不可以访问,将该栈变量和隔离区对应的阴影内存毒化,在栈变量读写操作时,将用于判定该栈变量空间是否可访问的代码,分别插入主核、从核的访存指令前,在函数返回前,编译器将该栈变量去毒化;S34、编译器对堆变量进行去毒化,编译器将内存操作相关的标准库接口,替换为运行时库中对应的库接口,自定义动态运行时库中的库接口在实现标准库接口功能的同时,增加对阴影区内存值的设置与判定功能,从而实现对堆变量的内存访问检测;S4、编译器将S3中处理过的中间代码,编译、汇编、与自定义动态运行时库链接,生成可执行代码,进而生成可执行文件并运行,运行时通过插桩的接口调用自定义运行时库中功能模块实现动态内存检测。

全文数据:

权利要求:

百度查询: 无锡江南计算技术研究所 面向异构平台的多层次存储结构内存检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。