一种基于即时编译器的非对界访存动态处理方法、装置及存储介质制造方法及图纸

技术编号:36983136 阅读:32 留言:0更新日期:2023-03-25 18:02
本发明专利技术公开了一种基于即时编译器的非对界访存动态处理方法、装置及存储介质,包括:通过在所述即时编译器内注册非对界信号标志,对所采集到的异常信号中的非对界信号进行标志;信号处理函数通过识别所述标志对非对界信号进行抓取;根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列;根据生成的加载指令序列完成所述非对界信号的拼接处理后,放入目的寄存器。本发明专利技术能够在保证程序多线程执行状态正确性的同时,有效提高了即时编译器的运行效率。率。率。

【技术实现步骤摘要】
一种基于即时编译器的非对界访存动态处理方法、装置及存储介质


[0001]本专利技术涉及即使编译优化
,特别涉及一种基于即时编译器的非对界访存动态处理方法、装置及存储介质。

技术介绍

[0002]计算机系统通常对基本数据类型的合法地址做出了限制,要求存放类型数据的地址必须是按照该数据类型长度对界的值;一般来说,对于各种不同的访存类型,其访存粒度通常包括2字节、4字节、8字节等字节数。当一个处理器总是从内存中取long类型数据,那么地址必须为8字节的倍数(如果是二进制表示的地址,那么要求地址的低3位为0),这就是对界访存;反之,如果这个数据不在8字节对界的内存地址上,它可能会被分放在两个8字节内存块中;当不支持非对界访存的硬件平台上对该数据进行访存时,就会引发硬件非对界信号异常,发生系统调用,内核抓取到该异常信号之后,执行线程从用户态切换到内核态,通过内核处理非对界访存,处理结束再返回用户态继续执行;而每一次对非对界地址进行访存,都会使用该方式通过内核进行处理,如此反复陷入内核造成巨大的性能开销,从而导致即时编译器运行时的性能降低。

技术实现思路

[0003]本专利技术的目的在于克服现有技术中的不足,提供一种基于即时编译器的非对界访存动态处理方法,通过在即时编译器设置信号处理函数抓取非对界信号,使用不会引发非对界异常的访存指令进行拼接实现,从而避免了现有技术中由用户态切换到内核态进行处理而带来的性能损耗问题。
[0004]为达到上述目的,本专利技术是采用下述技术方案实现的:第一方面,本专利技术提供一种基于即时编译器的非对界访存动态处理方法,所述方法包括:通过在所述即时编译器内注册非对界信号标志,对所采集到的异常信号中的非对界信号进行标志;信号处理函数通过识别所述标志对非对界信号进行抓取;根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列;根据生成的加载指令序列完成所述非对界信号的拼接处理后,放入目的寄存器。
[0005]结合第一方面,优选地,所述加载指令序列包括功能指令、跳转指令、占位指令和加载移位指令。
[0006]结合第一方面,优选地,所述非对界信号的访存粒度包括2字节、4字节、和8字节。
[0007]结合第一方面,优选地,所述根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列包括以下6条指令:
指令1为访存指令,用于将内存地址addr放入tmp0寄存器;指令2为跳转指令,用于将内存地址addr前一个相应字节对界地址处tmp的相应字节数据存入val1寄存器;指令3为占位指令,用于将内存地址addr后一个相应字节对界地址处的相应字节数据存入val2寄存器;指令4为占位指令,用于通过加载移位指令从所述val1寄存器中取出待拼接的相应字节的高段high;指令5为占位指令,用于通过加载移位指令从所述val2寄存器中取出待拼接的相应字节的低段low;指令6为占位指令,用于对所取出的相应字节的高段high和低段low进行拼接,得到拼接好的相应字节的数据后,放入目的寄存器dst_reg中。
[0008]结合第一方面,优选地,所述即时编译器为Java虚拟机。
[0009]第二方面,本专利技术提供一种基于即时编译器的非对界访存动态处理装置,所述装置包括:注册标志模块,用于通过在所述即时编译器内注册非对界信号标志,对所采集到的异常信号中的非对界信号进行标志;识别抓取模块,用于信号处理函数通过识别所述标志对非对界信号进行抓取;生成加载指令序列模块,用于根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列;拼接处理模块,用于根据生成的加载指令序列完成所述非对界信号的拼接处理后,放入目的寄存器。
[0010]第三方面,本专利技术提供一种基于即时编译器的非对界访存动态处理装置,包括处理器及存储介质;所述存储介质用于存储指令;所述处理器用于根据所述指令进行操作以执行第一方面任一项所述的基于即时编译器的非对界访存动态处理方法的步骤。
[0011]第四方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如第一方面任一项所述的基于即时编译器的非对界访存动态处理方法的步骤。
[0012]与现有技术相比,本专利技术所达到的有益效果:本专利技术结构清晰,具体实现较为简单,适用于不支持非对界访存的处理器发生不同访存类型、访存粒度的非对界访存场景进行优化;通过在即时编译器内部注册非对界信号标志,当访存指令遇到非对界地址时,硬件抛出非对界信号异常,使得信号处理函数能够通过识别标志抓取到非对界信号,并根据非对界字节的粒度进行相应加载指令序列的修改,使用不会引发非对界异常信号的访存指令进行拼接实现,消避免了原始方式中执行访存指令时每一次遇到非对界信号都会陷入内核造成的性能开销的问题;通过设计加载指令序列,使得即时编译器在后续执行过程中直接执行优化后的指令序列,不再引发非对界异常信号,在保证程序多线程执行状态下正确性的同时显著提升了即时编译器运行时性能。
附图说明
[0013]图1是本专利技术实施例提供的一种基于即时编译器的非对界访存动态处理方法的流程图;图2是本专利技术实施例提供的针对8字节生成的加载指令序列在小端机器上拼接非对界8字节数据的示意图;图3本专利技术实施例提供的一种基于即时编译器的非对界访存动态处理装置的结构原理框图。
具体实施方式
[0014]下面通过附图以及具体实施例对本专利技术技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
[0015]本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符"/",一般表示前后关联对象是一种“或”的关系。
[0016]实施例一:如图1所示,本实施例介绍一种基于即时编译器的非对界访存动态处理方法,适用于不支持非对界访存的处理器发生不同访存类型、访存粒度的非对界访存场景进行优化,包括实现指令序列的优化以及保证多线程条件下的一致性;所述方法具体包括如下步骤:步骤S1:通过在所述即时编译器内注册非对界信号标志,对所采集到的异常信号中的非对界信号进行标志;步骤S2:号处理函数通过识别所述标志对非对界信号进行抓取;步骤S3:据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列;步骤S4:据生成的加载指令序列完成所述非对界信号的拼接处理后,放入目的寄存器。
[0017]作为本专利技术的一种实施例,步骤S3中生成相应字节数所需的加载指令序列包括以下6条指令:指令1为访存指令,用于将内存地址addr放入tmp0寄存器;指令2为跳转指令,用于将内存地址addr前一个相应字节对界地址处tmp的相应字本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于即时编译器的非对界访存动态处理方法,其特征在于,所述方法包括:通过在所述即时编译器内注册非对界信号标志,对所采集到的异常信号中的非对界信号进行标志;信号处理函数通过识别所述标志对非对界信号进行抓取;根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列;根据生成的加载指令序列完成所述非对界信号的拼接处理后,放入目的寄存器。2.根据权利要求1所述的基于即时编译器的非对界访存动态处理方法,其特征在于,所述加载指令序列包括功能指令、跳转指令、占位指令和加载移位指令。3.根据权利要求1所述的基于即时编译器的非对界访存动态处理方法,其特征在于,所述非对界信号的访存粒度包括2字节、4字节和8字节。4.根据权利要求1至3任一所述的基于即时编译器的非对界访存动态处理方法,其特征在于,所述根据所抓取到的非对界信号的访存粒度,在相应字节对界的指令地址处生成相应字节数所需的加载指令序列包括以下6条指令:指令1为访存指令,用于将内存地址addr放入tmp0寄存器;指令2为跳转指令,用于将内存地址addr前一个相应字节对界地址处tmp的相应字节数据存入val1寄存器;指令3为占位指令,用于将内存地址addr后一个相应字节对界地址处的相应字节数据存入val2寄存器;指令4为占位指令,用于通过加载移位指令从所述val1寄存器中取出待拼接的相应字节的高段high;指令5...

【专利技术属性】
技术研发人员:叶俊梁淑萍邵宁远朱海周意杰
申请(专利权)人:无锡先进技术研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1