[发明专利]弱内存序的检测修复方法、系统及相关设备在审
申请号: | 202111160173.6 | 申请日: | 2021-09-30 |
公开(公告)号: | CN115904768A | 公开(公告)日: | 2023-04-04 |
发明(设计)人: | 侯凯;张汝涛 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F8/76 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 熊永强;李稷芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 检测 修复 方法 系统 相关 设备 | ||
本申请提供了弱内存序的检测修复方法、系统及相关设备,其特征在于,该方法包括以下步骤:提供程序输入接口,程序输入接口用于获取用户上传的程序,对程序进行弱内存序检测,输出检测结果,检测结果包括需要修复的代码在程序中的位置信息,根据位置信息,输出程序进行弱内存序修复的范围信息,范围信息对应的代码至少包括需要修复的代码,对范围信息对应的代码进行弱内存序修复。根据范围信息进行弱内存序的修复,可以减少弱内存序修复时内存屏障指令插入的数量,提高程序运行效率,而且当程序的规模较大时,通过对范围信息对应的代码进行修复,可以提高修复的效率。
技术领域
本申请涉及计算机领域,尤其涉及弱内存序的检测修复方法、系统及相关设备。
背景技术
中央处理器(central processing unit,CPU)为了使得处理器内部的运算单元尽量被充分利用,处理器可能会对输入代码进行乱序执行(out-of order excution)优化,也就是改变程序中部分语句执行的先后顺序。但是在多处理器系统中,处理器上运行的多线程在不同内存模型的处理器上可能会具有不同的指令执行顺序,从而导致多线程程序运行出现逻辑上的错误。
举例来说,当基于非弱内存模型开发的多线程,在采用弱内存模型(weak memorymodel)的处理器中运行时,由于不同内存模型下硬件所支持的指令语义不同,因此可能会导致多线程关联的程序中并行运行的线程在执行用于访存的读写指令时乱序,从而出现弱内存序的问题。这样的话,该程序所要实现的功能可能会出现逻辑上的错误,从而导致该程序运行后输出的结果不准确。
对于上述弱内存序问题,通常可以在访存指令之前插入内存屏障指令,以保证该两条访存指令能够按照程序要求的顺序执行。然而,对于程序中需要插入内存屏障指令的位置的确定,一般是通过开发人员基于经验确定的。当程序的规模较大时,该方法的效率极为低下,影响处理器所在系统的处理效率。因此,如何提供一种高效的弱内存序检测修复方法成为亟待解决的技术问题。
发明内容
本申请提供了一种弱内存序的检测修复方法、系统及相关设备,用于解决弱内存序检测修复方法效率低、影响处理器所在系统处理效率的问题。
第一方面,提供了一种弱内存序的检测修复方法,该方法包括以下步骤:提供程序输入接口,程序输入接口用于获取用户上传的程序,对程序进行弱内存序检测,输出检测结果,检测结果包括需要修复的代码在程序中的位置信息,根据位置信息,输出程序进行弱内存序修复的范围信息,范围信息对应的代码至少包括需要修复的代码,最后对范围信息对应的代码进行弱内存序修复。
具体实现中,该程序输入接口可以是GUI也可以是API本申请不作具体限定。上述用户上传的程序可包括至少一个程序文件,程序文件的数量为多个时,上述多个程序文件还可以包括多个文件类别,比如用户提供5个程序文件,其中3个程序文件属于类别1,剩余2个程序文件属于类别2;上述多个程序文件还可以属于不同的程序函数库(比如so库),比如用户提供45个程序文件,其中15个程序文件属于第一so库,剩余30个程序文件属于第二so库;上述多个程序文件还可以归属于不同的软件模块,比如用户提供150个程序文件,其中50个程序文件属于第一软件模块,剩余100个程序文件属于第二软件模块,应理解,上述举例用于说明,本申请不作具体限定。
实施第一方面描述的方法,通过对程序进行弱内存序检测,获得检测结果,并根据检测结果确定弱内存序修复的修复范围,然后针对修复范围对应的代码进行弱内存序的修复,可以减少参与弱内存序修复的程序数量,减少不必要的内存屏障指令的插入,从而提高修复后的多线程程序的运行性能。
在一种可能的实现方式中,可以获取用户输入的修复粒度,根据修复粒度对上述需要修复的代码的位置进行扩大,获得范围信息,使得扩大后的范围信息对应的代码至少包括上述需要修复的代码。
可选地,该范围信息可以包括文件列表,该文件列表可包括待修复文件的文件名称和/或文件路径,还可包括其他供修复单元获取上述待修复文件的获取方式,本申请不作具体限定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111160173.6/2.html,转载请声明来源钻瓜专利网。