CN115309499A - 虚拟机中数组处理方法、装置、电子设备及可读存储介质 - Google Patents
虚拟机中数组处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115309499A CN115309499A CN202210818052.4A CN202210818052A CN115309499A CN 115309499 A CN115309499 A CN 115309499A CN 202210818052 A CN202210818052 A CN 202210818052A CN 115309499 A CN115309499 A CN 115309499A
- Authority
- CN
- China
- Prior art keywords
- access instruction
- memory access
- processed
- address
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种虚拟机中数组处理方法、装置、电子设备及可读存储介质,方法通过响应待处理元素对应的第一访存指令,基于第一访存指令获取待处理数组的边界地址;将边界地址写入指定的范围寄存器,基于第一访存指令中携带的指令参数以及范围寄存器的相关信息,重组形成第二访存指令;向宿主机发送第二访存指令;宿主机基于第二访存指令对待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于第二访存指令对待处理元素进行加载或存储。直接利用带有范围寄存器信息的访存指令实现访存操作,避免可能存在的指令跳转,提高宿主机的程序性能。
Description
技术领域
本发明属于网络技术领域,特别是涉及一种虚拟机中数组处理方法、装置、电子设备及可读存储介质。
背景技术
在网络技术领域中,通常通过编译器或解释器将虚拟机指令翻译成宿主机本地的CPU指令,以使硬件直接执行翻译后的本地方法。
当虚拟机指令指示从数组中加载一个数组元素或者将一个值作为一个数组元素存储到数组中时,称该指令为访存指令。而当需要执行访存指令时,通常会对翻译后的访存指令插入一组检测指令,用于检测该数组元素所在内存地址或目标存储地址是否超过了该数组的有效边界,也称数组越界检查。
然而现有技术中,所采用的检测指令往往包含多条转移指令、比较指令和分支指令,在访存指令实际执行过程中,由于存在多条转移指令、比较指令和分支指令,因此,会降低宿主机的程序性能。
发明内容
本发明提供一种虚拟机中数组处理方法、装置、电子设备及可读存储介质,以便解决在访存指令实际执行过程中,由于多条转移指令、比较指令和分支指令的存在,降低宿主机的程序性能的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明提供一种虚拟机中数组处理方法,所述方法包括:
响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址;
将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令;
向宿主机发送所述第二访存指令;
所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
第二方面,本发明提供一种虚拟机中数组处理装置,所述装置包括:
第一获取模块,用于响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址;
重组模块,用于将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令;
发送模块,用于向宿主机发送所述第二访存指令;
检测模块,用于使所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
第三方面,本发明提供一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述虚拟机中数组处理方法。
第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述虚拟机中数组处理方法。
在本发明实施例中,通过响应待处理元素对应的第一访存指令,基于第一访存指令获取第一访存指令对应的待处理数组的边界地址;将边界地址写入指定的范围寄存器,以及,基于第一访存指令中携带的指令参数以及范围寄存器的相关信息,重组形成第二访存指令;向宿主机发送第二访存指令;宿主机基于第二访存指令对待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于第二访存指令对待处理元素进行加载或存储。这样,当虚拟机接收到访存指令时,会基于原访存指令形成带有范围寄存器信息的访存指令(即第二访存指令),从而在宿主机实际执行访存指令时,直接利用带有范围寄存器信息的访存指令实现数组元素的访存,无需插入多条转移指令、比较指令和分支指令,因此,可以减少宿主机所需执行的指令数量,避免可能存在的指令跳转,提高宿主机的程序性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种虚拟机中数组处理方法的步骤流程图;
图2是本发明实施例提供的一种虚拟机中数组处理方法的示例流程图;
图3是本发明实施例提供的一种虚拟机中数组处理装置的结构图;
图4是本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先对本发明实施例涉及的一种应用场景进行说明:
虚拟机(VM,Virtual Machine)主要通过软件或者辅以少量硬件支持的方法虚拟出一台计算机,其依托于本地的物理机(宿主机),通过其执行引擎对给定的虚拟机指令序列在本地机器上模拟执行。在虚拟机编译技术领域,执行引擎一般为解释器或编译器,在将虚拟机指令翻译为本地CPU指令后,由本地的物理机直接执行翻译后的本地方法。在一种方式中,编译器或解释器遇到加载一个数组元素的虚拟机指令或者存储一个值到数组元素中的虚拟机指令(即访存指令)时,会插入一组检测指令,用以进行数组越界检查,此时,当宿主机执行翻译后的访存指令时,需要先执行检测指令,再执行实际的访存指令,而该检测指令中通常包含了多条转移指令、比较指令和分支指令,存在较多的指令跳转,导致宿主机在实际执行时,需要对多条指令进行预先加载,从而降低了程序性能,因此,本发明实施例提供了一种虚拟机中数组处理方法,用以解决上述问题。
图1是本发明实施例提供的一种虚拟机中数组处理方法的步骤流程图,如图1所示,该方法包括:
步骤101、响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址。
其中,访存指令指的是从既定的数组结构中加载一个数组元素的指令或者以数组元素的形式存储一个值到既定的数组结构中的指令。本实施例中,第一访存指令为虚拟机的访存指令,该访存指令中携带有进行访问、存储操作所需要的相关参数,可以包括该数组元素在内存中的存储地址、所需存储的值的存储地址和待处理数组的数据类型以及可存储的空闲空间等信息。
其中,当第一访存指令指示加载一个数组元素时,则待处理数组指的是在内存中存储该待加载元素的数组,从这个数组中查找并读取这个特定的待处理元素。当第一访存指令指示存储一个值到数组中时,则待处理数组指的是该值将要存储的数组,该值则为将要存储至待处理数组的待处理元素。其中,待处理数组的边界地址可以为该数组的起始地址和/或最大地址,即,该数组在内存中的第一个元素的地址和/或最后一个元素的地址。
具体的,当虚拟机接收到第一访存指令时,由于该访存指令中包含了待处理数组的类型、名称、可存储空间和起始地址等相关信息,可以基于上述信息计算得到待处理数组的边界地址。示例地,以一个整型int的待处理数组array[100],起始地址为0为例,可以得到该数组的起始地址,即最小边界地址为0,内存中的16进制表示最小边界地址为0x0000。又由于整型数值的长度为4字节且该数组的长度为100,可以根据数组长度*类型长度+起始地址计算得到该数组的最大边界地址,即&array[99]=400,以内存中的16进制表示最大边界地址为:0x0000+4*8bit*100=0x0C80,本实施例中为便捷示意,均以十进制的字节数表示。
步骤102、将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令。
其中,第二访存指令指的是本地物理机(即宿主机)执行的访存指令,是基于第一访存指令创建的。具体的,在将第一访存指令翻译成本地CPU访存指令时,形成第二访存指令,以使宿主机直接执行第二访存指令。上述第二访存指令中定义有范围寄存器的相关信息,可以是该寄存器的编号或名称等信息。上述范围寄存器用于存储上述待处理数组的边界地址,具体的,在将虚拟机访存指令翻译成本地CPU访存指令的过程中,即在形成第二访存指令时,可以为该指令分配寄存器作为范围寄存器,并将上述边界地址直接写入到上述为第二访存指令所分配的范围寄存器中,相应地,上述范围寄存器的相关信息指的是为该指令所分配的寄存器的编号或名称。
步骤103、向宿主机发送所述第二访存指令。
步骤104、所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
其中,数组越界检测指的是检测访存指令指示的数组元素所在内存地址是否超出了数组的有效边界,如果该内存地址超过了数组有效边界范围,则视为访问无效。以上述数组array[100]为例,有效数组元素为array[0]至array[99],其中数组元素下标0-99就是这个数组array的有效边界,array[0]-array[99]所在内存地址&array[0]-&array[99]即为有效边界地址,也就是该数组的最小边界地址至最大边界地址。
其中,上述向宿主机发送第二访存指令指的是使宿主机执行第二访存指令。具体的,在形成第二访存指令后,宿主机通过执行第二访存指令,可以基于第二访存指令中指示的范围寄存器进行数组越界检测,具体的,可以通过检测待处理元素的访存地址是否超出范围寄存器中指示的数组有效边界地址来判断。若超出数组有效边界地址,则判断该待处理元素在待处理数组的有效边界的对应范围内产生了越界现象。若未超出,则判断该待处理元素在待处理数组的有效边界的对应范围内未产生越界现象,可以基于第二访存指令对该待处理元素进行加载或存储操作。
综上所述,本发明实施例提供的虚拟机中数组处理方法,通过响应待处理元素对应的第一访存指令,基于第一访存指令获取第一访存指令对应的待处理数组的边界地址;将边界地址写入指定的范围寄存器,以及,基于第一访存指令中携带的指令参数以及范围寄存器的相关信息,重组形成第二访存指令;向宿主机发送第二访存指令;宿主机基于第二访存指令对待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于第二访存指令对待处理元素进行加载或存储。这样,当虚拟机接收到访存指令时,会基于原访存指令形成带有范围寄存器信息的访存指令(即第二访存指令),从而在宿主机实际执行访存指令时,直接利用带有范围寄存器信息的访存指令实现数组元素的访存,无需插入多条转移指令、比较指令和分支指令,因此,可以减少宿主机所需执行的指令数量,避免可能存在的指令跳转,提高宿主机的程序性能。
可选的,本发明实施例中在重组形成第二访存指令之前,还可以包括下述步骤:
步骤S21、获取所述宿主机采用的操作系统架构。
其中,操作系统架构指的是运行环境所在的系统架构,具体的,虚拟机可以通过API(应用程序编程接口)来获取宿主机的操作系统结构。
步骤S22、在所述操作系统架构为指定架构的情况下,执行所述将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令的步骤;其中,所述指定架构的指令集支持所述第二访存指令。
其中,指定架构指的是该架构的指令集支持上述第二访存指令的系统架构。示例的,在操作系统架构为loongarch时,该系统架构的指令集支持上述第二访存指令,在操作系统架构为x86时,该系统架构的指令集不支持上述第二访存指令。
具体的,在操作系统架构的指令集支持上述第二访存指令的情况下,才可以执行上述重组形成第二访存指令的步骤。
本发明实施例通过获取所述宿主机采用的操作系统架构;在所述操作系统架构为指定架构的情况下,执行所述将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令的步骤;其中,所述指定架构的指令集支持所述第二访存指令。这样,通过在系统架构支持第二访存指令的情况下,直接重组形成第二访存指令实现数组元素的访存,可以充分利用系统结构的特性,避免在系统不支持第二访存指令的情况下,执行不必要的重组操作。
可选的,本发明实施例中还可以包括下述步骤:
步骤S31、基于所述第一访存指令获取所述待处理元素在所述待处理数组中对应的目标地址。
其中,当第一访存指令指示加载一个数组元素时,待处理元素指的是该待加载元素,待处理数组指的是存储该待加载元素的数组,目标地址指的是待处理元素在待处理数组中的存储地址。当第一访存指令指示存储一个值到数组中时,待处理元素指的是该待存储的值,待处理数组指的是该待存储的值将要存储的数组,目标地址指的是待处理元素将要存储到待处理数组中的存储地址。
具体的,由于第一访存指令中携带了进行访存操作所需要的相关参数,可以基于上述相关参数获取目标地址。示例的,以第一访存指令指示加载array数组中的下标为i的待处理元素为例,可以基于下标i获取该待处理元素在在内存中的目标地址,以&array[i]表示。
可选的,基于所述第一访存指令还可以获取所述待处理元素的目的地址。其中,当第一访存指令指示加载一个数组元素时,目的地址指的是上述待加载元素将要存储至内存中的特定地址。当第一访存指令指示存储一个值到待处理数组中时,目的地址指的是上述待存储的值当前在内存中的存储地址。
步骤S32、上述重组形成第二访存指令的操作,具体还可以包括:
基于所述范围寄存器的相关信息、地址寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令;其中,所述地址寄存器用于存储所述目标地址。
其中,第一访存指令表征的操作码指的是表征该指令是读取指令还是存储指令的标识码,上述相关信息可以是寄存器对应的编号或名称,基于上述相关信息可以得到该寄存器具体的存储地址。具体的,第二访存指令可以携带操作码、范围寄存器的相关信息、以及地址寄存器的相关信息。上述地址寄存器用于存储上述目标地址,具体的,在将虚拟机访存指令翻译成本地CPU访存指令的过程中,即在生成第二访存指令时,虚拟机可以将上述目标地址直接写入到第二访存指令所指示的地址寄存器中。
示例的,以第一访存指令为读取指令为例,上述操作码可以为Load(读取),范围寄存器的相关信息可以为Src1,地址寄存器的相关信息可以为Src2,从而可以将这些参数重组,形成第二访存指令的格式为LoadSrc1Src2,在其他实施例中,也可以为Load Src2Src1,同时将目标地址写入至Src2中,将上述待处理数组的边界地址写入至Src1中。需要说明的是,上述第二访存指令的格式顺序可以不作限制,但将操作码放在首位可以使虚拟机第一时间读取到该指令的操作类型,从而可以提高执行第二访存指令的效率。
可选的,上述创建第二访存指令的操作,还可以包括基于所述范围寄存器的相关信息、所述地址寄存器的相关信息、目的寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令,其中,所述目的寄存器用于存储所述目的地址。
具体的,第二访存指令可以携带操作码、范围寄存器的相关信息、地址寄存器的相关信息以及目的寄存器的相关信息。上述目的寄存器用于存储上述目的地址,具体的,在将虚拟机访存指令翻译成本地CPU访存指令的过程中,即在生成第二访存指令时,虚拟机可以将上述目的地址直接写入到第二访存指令所指示的目的寄存器中。
示例的,以待处理数组为array[100]为例,当第一访存指令指示读取array数组中的下标为i的待处理元素array[i]到地址&A时,写入到地址寄存器中的目标地址即为上述待处理元素array[i]的地址&array[i],写入到目的寄存器中的目的地址即为上述&A。当第一访存指令指示存储一个值A到数组array[j]中时,写入到地址寄存器中的目标地址即为上述array[j]的地址&array[j],写入到目的寄存器中的目的地址即为上述&A。
本发明实施例通过基于所述第一访存指令获取所述待处理元素在所述待处理数组中对应的目标地址;所述基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令,包括:基于所述范围寄存器的相关信息、地址寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令;其中,所述地址寄存器用于存储所述目标地址。这样,在将虚拟机访存指令翻译成本地CPU访存指令时,可以基于虚拟机访存指令的信息生成携带有范围寄存器和地址寄存器信息的第二访存指令,该第二访存指令通过直接对比范围寄存器与地址寄存器中所存储的地址可以更加快捷地进行数组越界检测,进一步提高宿主机的性能。
可选的,上述待处理数组的边界地址为上述待处理数组的最大边界地址,本发明实施例还可以包括下述步骤:
步骤S41、基于所述第一访存指令获取所述待处理元素的标识。
其中,第一访存指令中携带有访存操作所需的参数,包括待处理元素的标识。当第一访存指令指示加载一个数组元素时,待处理元素的标识指的是该待加载元素在待处理数组中对应的下标,示例的,以第一访存指令指示加载array数组中的下标为i的待处理元素array[i]为例,待处理元素的标识即为上述下标i。当第一访存指令指示存储一个值到数组中时,待处理元素的标识指的是该待存储数值将要存储到该数组中的位置所对应的下标,示例的,以第一访存指令指示将B值存储到array数组中的下标为j的地址&array[j]时,待处理元素B的标识即为上述下标j。
步骤S42、基于所述标识判断所述目标地址是否不小于所述待处理数组的最小边界地址且不大于所述范围寄存器中的最大边界地址;若是,则确定所述待处理元素未越界。
其中,边界地址为最大边界地址时,第二访存指令可以通过对比范围寄存器与地址寄存器中所存储的地址来判断待处理元素是否超出最大边界地址,在这种情况下,在形成第二访存指令之前,可以通过待处理元素的标识来判断待处理元素的目标地址是否不小于待处理数组的最小边界地址。具体的,由于数组中的第一个元素标识为0,即数组的最小有效边界标识为0,因此可以基于待处理元素的标识是否为非负数进行判断,若待处理元素的标识非负数,则认为待处理元素的目标地址不小于上述最小边界地址,若待处理元素的标识为负数,则认为待处理元素的目标地址小于最小边界地址,此时,可以中止重组形成第二访存指令的操作。需要说明的是,上述步骤S41以及步骤S42中的基于标识判断目标地址是否不小于待处理数组的最小边界地址的操作可以均由虚拟机执行,从而使宿主机在实际执行第二访存指令过程中,不需要再对待处理元素的目标地址是否小于数组的最小边界地址进行判断。
其中,在成功创建第二访存指令之后,即,已经确定待处理元素未超出数组的最小边界地址之后,宿主机可以通过执行第二访存指令判断待处理元素是否超出数组的最大边界地址。具体的,可以通过检测地址寄存器中的目标地址是否不大于范围寄存器中的最大边界地址来判断。若不大于,则判断该待处理元素未越界,此时可以基于第二访存指令对该待处理元素进行正常的加载或存储操作。若大于,则判断该待处理元素越界,此时可以由系统执行异常处理,例如,发出数组越界的提示信息,本发明实施例对此不作限制。
本发明实施例通过所述待处理数组的边界地址为所述待处理数组的最大边界地址时,基于所述第一访存指令获取所述待处理元素的标识;基于所述标识判断所述目标地址是否不小于所述待处理数组的最小边界地址且不大于所述范围寄存器中的最大边界地址;若是,则确定所述待处理元素未越界。这样,在形成第二访存指令之前,通过待处理元素的标识可以快速判断出待处理元素的目标地址是否不大于数组的最小边界地址,这种情况下,宿主机在执行第二访存指令时,只需通过地址寄存器和范围寄存器判断是否不小于最大边界地址即可,无需再对最小边界地址进行判断,宿主机可以更加快捷地进行数组越界检测,同时由于宿主机只需执行第二访存指令,避免了转移指令或者比较/分支指令的使用,减少了所需执行的指令数量,提高宿主机的程序性能。
图2是本发明实施例提供的一种虚拟机中数组处理方法的示例流程图,如图2所示,本发明实施例包括:
步骤a、基于第一访存指令获取待处理元素下标i、待处理数组长度L等相关参数。
上述相关参数均是进行访存操作所需的参数,由第一访存指令携带。
步骤b、判断上述待处理元素下标i是否为非负数。
通过判断待处理元素下标是否为非负数来判断待处理元素的目标地址是否不小于待处理数组的最小边界地址。在待处理元素下标为非负数的情况下,才能形成第二访存指令。
步骤c、基于待处理数组长度L获取待处理数组的最大边界地址&array[L-1]。
最大边界地址&array[L-1]可以基于数组长度*类型长度+起始地址来计算。
步骤d、基于待处理元素下标i获取目标地址&array[i]。
需要说明的是,上述步骤b、c、d可以同时执行,本发明实施例对具体执行顺序不作限制。
步骤e、形成第二访存指令。
在待处理元素下标为非负数的情况下,形成第二访存指令,同时将上述最大边界地址写入范围寄存器中,将上述目标地址写入地址寄存器中,基于上述范围寄存器的相关信息、上述地址寄存器的相关信息以及第一访存指令表征的操作码,形成第二访存指令。
步骤f、执行第二访存指令。
通过执行第二访存指令,可以基于第二访存指令中指示的范围寄存器、地址寄存器的信息自动进行数组越界检测,在未越界的情况下,执行加载或存储操作。
需要说明的是,上述步骤a-e由虚拟机执行,步骤f由宿主机执行。
可选的,上述范围寄存器包括第一寄存器以及第二寄存器,第一寄存器用于存储所述待处理数组的最小边界地址,第二寄存器用于存储所述待处理数组的最大边界地址;宿主机对所述待处理元素进行数组越界检测时,判断地址寄存器中的目标地址是否不大于第二寄存器中的最大边界地址且不小于第一寄存器中的最小边界地址;若是,则确定所述待处理元素未越界。
本发明实施例通过第一寄存器和第二寄存器,可以在宿主机执行第二访存指令的时候,同时对最小边界地址和最大边界地址进行越界检测,进一步提高了数组越界检测的效率,同时也避免了转移指令或者比较/分支指令的使用,提高宿主机的程序性能。
图3是本发明实施例提供的一种虚拟机中数组处理装置的结构图,该装置30可以包括:
第一获取模块301,用于响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址;
重组模块302,用于将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令;
发送模块303,用于向宿主机发送所述第二访存指令;
检测模块304,用于使所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
可选的,所述装置30,还包括:
第二获取模块,用于在所述重组模块重组形成第二访存指令之前,获取所述宿主机采用的操作系统架构;
执行模块,用于在所述操作系统架构为指定架构的情况下,执行所述将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令的步骤;
其中,所述指定架构的指令集支持所述第二访存指令。
可选的,所述装置30,还包括:
第三获取模块,用于基于所述第一访存指令获取所述待处理元素在所述待处理数组中对应的目标地址;
所述重组模块,具体用于:基于所述范围寄存器的相关信息、地址寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令;其中,所述地址寄存器用于存储所述目标地址。
可选的,所述待处理数组的边界地址为所述待处理数组的最大边界地址;所述装置30还包括:
第四获取模块,用于基于所述第一访存指令获取所述待处理元素的标识;
判断模块,用于基于所述标识判断所述目标地址是否不小于所述待处理数组的最小边界地址且不大于所述范围寄存器中的最大边界地址;若是,则确定所述待处理元素未越界。
可选的,所述范围寄存器包括第一寄存器以及第二寄存器,所述第一寄存器用于存储所述待处理数组的最小边界地址,所述第二寄存器用于存储所述待处理数组的最大边界地址;
所述宿主机对所述待处理元素进行数组越界检测时,判断所述地址寄存器中的目标地址是否不大于所述第二寄存器中的最大边界地址且不小于所述第一寄存器中的最小边界地址;
若是,则确定所述待处理元素未越界。
综上所述,本发明实施例提供的虚拟机中数组处理装置,通过响应待处理元素对应的第一访存指令,基于第一访存指令获取第一访存指令对应的待处理数组的边界地址;将边界地址写入指定的范围寄存器,以及,基于第一访存指令中携带的指令参数以及范围寄存器的相关信息,重组形成第二访存指令;向宿主机发送第二访存指令;宿主机基于第二访存指令对待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于第二访存指令对待处理元素进行加载或存储。这样,当虚拟机接收到访存指令时,会基于原访存指令形成带有范围寄存器信息的访存指令(即第二访存指令),从而在宿主机实际执行访存指令时,直接利用带有范围寄存器信息的访存指令实现数组元素的访存,无需插入多条转移指令、比较指令和分支指令,因此,可以宿主机减少所需执行的指令数量,避免可能存在的指令跳转,提高宿主机的程序性能。
本发明还提供了一种电子设备,参见图4,包括:处理器401、存储器402以及存储在所述存储器上并可在所述处理器上运行的计算机程序4021,所述处理器执行所述程序时实现前述实施例的虚拟机中数组处理方法。
本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的虚拟机中数组处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种虚拟机中数组处理方法,其特征在于,所述方法包括:
响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址;
将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令;
向宿主机发送所述第二访存指令;
所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
2.根据权利要求1所述方法,其特征在于,所述重组形成第二访存指令之前,所述方法还包括:
获取所述宿主机采用的操作系统架构;
在所述操作系统架构为指定架构的情况下,执行所述将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令的步骤;
其中,所述指定架构的指令集支持所述第二访存指令。
3.根据权利要求1所述方法,其特征在于,所述方法还包括:
基于所述第一访存指令获取所述待处理元素在所述待处理数组中对应的目标地址;
所述基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令,包括:
基于所述范围寄存器的相关信息、地址寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令;其中,所述地址寄存器用于存储所述目标地址。
4.根据权利要求3所述方法,其特征在于,所述待处理数组的边界地址为所述待处理数组的最大边界地址;所述方法还包括:
基于所述第一访存指令获取所述待处理元素的标识;
基于所述标识判断所述目标地址是否不小于所述待处理数组的最小边界地址且不大于所述范围寄存器中的最大边界地址;
若是,则确定所述待处理元素未越界。
5.根据权利要求3所述方法,其特征在于,所述范围寄存器包括第一寄存器以及第二寄存器,所述第一寄存器用于存储所述待处理数组的最小边界地址,所述第二寄存器用于存储所述待处理数组的最大边界地址;
所述宿主机对所述待处理元素进行数组越界检测时,判断所述地址寄存器中的目标地址是否不大于所述第二寄存器中的最大边界地址且不小于所述第一寄存器中的最小边界地址;
若是,则确定所述待处理元素未越界。
6.一种虚拟机中数组处理装置,其特征在于,所述装置包括:
第一获取模块,用于响应待处理元素对应的第一访存指令,基于所述第一访存指令获取所述第一访存指令对应的待处理数组的边界地址;
重组模块,用于将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令;
发送模块,用于向宿主机发送所述第二访存指令;
检测模块,用于使所述宿主机基于所述第二访存指令对所述待处理元素进行数组越界检测,并在检测结果为所述待处理元素未越界的情况下,基于所述第二访存指令对所述待处理元素进行加载或存储。
7.根据权利要求6所述装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述重组模块重组形成第二访存指令之前,获取所述宿主机采用的操作系统架构;
执行模块,用于在所述操作系统架构为指定架构的情况下,执行所述将所述边界地址写入指定的范围寄存器,以及,基于所述第一访存指令中携带的指令参数以及所述范围寄存器的相关信息,重组形成第二访存指令的步骤;
其中,所述指定架构的指令集支持所述第二访存指令。
8.根据权利要求6所述装置,其特征在于,所述装置还包括:
第三获取模块,用于基于所述第一访存指令获取所述待处理元素在所述待处理数组中对应的目标地址;
所述重组模块,具体用于:基于所述范围寄存器的相关信息、地址寄存器的相关信息以及所述第一访存指令表征的操作码,重组形成所述第二访存指令;其中,所述地址寄存器用于存储所述目标地址。
9.根据权利要求8所述装置,其特征在于,所述待处理数据的边界地址为所述待处理数组的最大边界地址;所述装置还包括:
第四获取模块,用于基于所述第一访存指令获取所述待处理元素的标识;
判断模块,用于基于所述标识判断所述目标地址是否不小于所述待处理数组的最小边界地址且不大于所述范围寄存器中的最大边界地址;若是,则确定所述待处理元素未越界。
10.根据权利要求8所述装置,其特征在于,所述范围寄存器包括第一寄存器以及第二寄存器,所述第一寄存器用于存储所述待处理数组的最小边界地址,所述第二寄存器用于存储所述待处理数组的最大边界地址;
所述宿主机对所述待处理元素进行数组越界检测时,判断所述地址寄存器中的目标地址是否不大于所述第二寄存器中的最大边界地址且不小于所述第一寄存器中的最小边界地址;
若是,则确定所述待处理元素未越界。
11.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一项所述的方法。
12.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210818052.4A CN115309499A (zh) | 2022-07-12 | 2022-07-12 | 虚拟机中数组处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210818052.4A CN115309499A (zh) | 2022-07-12 | 2022-07-12 | 虚拟机中数组处理方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115309499A true CN115309499A (zh) | 2022-11-08 |
Family
ID=83857016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210818052.4A Pending CN115309499A (zh) | 2022-07-12 | 2022-07-12 | 虚拟机中数组处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115309499A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075966A (zh) * | 2023-08-31 | 2023-11-17 | 中科驭数(北京)科技有限公司 | 指令处理方法、装置、设备及可读存储介质 |
-
2022
- 2022-07-12 CN CN202210818052.4A patent/CN115309499A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075966A (zh) * | 2023-08-31 | 2023-11-17 | 中科驭数(北京)科技有限公司 | 指令处理方法、装置、设备及可读存储介质 |
CN117075966B (zh) * | 2023-08-31 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 指令处理方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101665219B1 (ko) | 네스티드 에뮬레이션 및 동적 링킹 환경 | |
US20100257608A1 (en) | Apparatus and method for preventing virus code execution | |
WO2018040270A1 (zh) | 在Windows系统中加载Linux系统ELF文件的方法及装置 | |
CN111208933B (zh) | 数据访问的方法、装置、设备和存储介质 | |
US9697120B2 (en) | Execution using multiple page tables | |
CN111158756A (zh) | 用于处理信息的方法和装置 | |
CN114924810A (zh) | 一种异构程序执行方法、装置、计算设备及可读存储介质 | |
CN115309499A (zh) | 虚拟机中数组处理方法、装置、电子设备及可读存储介质 | |
JP5318197B2 (ja) | ホストデータ処理装置内におけるデバイスエミュレーションのサポート | |
CN116257552A (zh) | 数据库查询语句的优化方法、存储介质与设备 | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
US20120324430A1 (en) | Aliasing buffers | |
CN107861807B (zh) | 程序调用的优化方法及装置 | |
US10970227B2 (en) | Data processing apparatus for handling page fault using predefind bit patterns and a method thereof | |
US9342319B1 (en) | Accelerated class check | |
CN110134438B (zh) | 指令排序方法、装置、移动终端及存储介质 | |
CN107977282B (zh) | 一种SPI-Nand读取数据页的方法及装置 | |
JP2011501286A (ja) | ジャババイトコード変換方法 | |
CN112486570B (zh) | 一种不同类型CPU的Glibc兼容方法 | |
CN113220334B (zh) | 程序故障定位方法、终端设备及计算机可读存储介质 | |
CN112631672B (zh) | 一种重定位方法、装置、电子设备及可读介质 | |
CN113821456A (zh) | 存储器数据读取方法、装置、电子设备及可读介质 | |
CN107193757B (zh) | 数据预取方法、处理器和设备 | |
JP2008191824A (ja) | プリフェッチ方法、及びキャッシュ機構用ユニット | |
CN116956270A (zh) | 应用程序运行方法、运行环境re、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |