CN110308933A - 访问指令确定方法、装置及存储介质 - Google Patents
访问指令确定方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110308933A CN110308933A CN201910337918.8A CN201910337918A CN110308933A CN 110308933 A CN110308933 A CN 110308933A CN 201910337918 A CN201910337918 A CN 201910337918A CN 110308933 A CN110308933 A CN 110308933A
- Authority
- CN
- China
- Prior art keywords
- accessed
- address
- access
- aligned
- instruction
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000005457 optimization Methods 0.000 abstract description 4
- 238000007667 floating Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种访问指令确定方法、装置及存储介质,该方法包括:接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。本发明提供的访问指令确定方法、装置及存储介质,对于无法确定待访问地址的起始地址是否对齐的场景,能够合理的确定访问该待访问地址的起始地址的访问指令,提高了多媒体指令优化的程序的性能。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种访问指令确定方法、装置及存储介质。
背景技术
现有技术中,计算机的多媒体指令支持基于字的整数的并行操作以及基于双字的整数的并行操作。若该计算机使用浮点运算单元(Float Point Unit,FPU)的浮点寄存器来实现整数的并行操作,则该计算机需要使用存取浮点类型数据的访问指令,从内存中存取需要并行计算的整数。存取浮点类型数据的访问指令分为对齐访问指令和非对齐访问指令,对齐访问指令用于访问起始地址为对齐的内存地址,非对齐访问指令用于访问起始地址非对齐的内存地址。计算机在使用存取浮点类型数据的访问指令,从内存中存取需要并行计算的整数时,若该待访问数据所在的内存地址的(简称待访问地址)的起始地址为对齐的起始地址时,则可以通过一条对齐访问指令进行访问。若该待访问地址的起始地址为非对齐的起始地址,则需要通过两条非对齐访问指令进行访问。
目前,开发人员在优化程序中用于“从内存中存取需要并行计算的整数”的多媒体指令时,对于无法确定待访问地址的起始地址是否对齐的场景,开发人员无法准确的确定出使用哪个访问指令访问该待访问地址。若开发人员误将访问对齐数据的访问指令应用于访问起始地址非对齐的内存地址,则会使程序运行失败或程序性能显著下降。由于两条非对齐访问指令的处理时长远大于单个对齐访问指令的处理时长,若开发人员直接使用非对齐访问指令,也会导致程序性能的下降。
因此,对于无法确定待访问地址的起始地址是否对齐的场景,如何确定访问该待访问地址的起始地址的访问指令是一个亟待解决的问题。
发明内容
本发明提供一种访问指令确定方法、装置及存储介质,用于解决现有技术中对于无法确定待访问地址的起始地址是否对齐的场景,如何确定访问该待访问地址的起始地址的访问指令的技术问题。
本发明第一方面提供一种访问指令确定方法,该方法包括:
接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;
根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;
根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令,包括:
若所述数量为1,则确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令,包括:
若所述数量大于1,则根据所述待访问数据的长度,以及,所述起始地址,确定所述起始地址是否对齐;
根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令,包括:
根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口,所述第二类型的访问接口包括:访问所述第一待访问地址所使用的访问指令,所述访问所述第一待访问地址所使用的访问指令为对齐访问指令或非对齐访问指令。
在一种可能的实施方式中,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令之后,所述方法还包括:
根据所确定的访问所述第一待访问地址所使用的访问指令,更新所述程序的多媒体指令。
本发明第二方面提供一种访问指令确定装置,该装置包括:
接收模块,用于接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;
获取模块,用于根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;
确定模块,用于根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述确定模块,具体用于在所述数量为1时,确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述确定模块,具体用于在所述数量大于1时,根据所述待访问数据的长度,以及,所述起始地址,确定所述起始地址是否对齐;并根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。
在一种可能的实施方式中,所述确定模块,具体用于根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口,所述第二类型的访问接口包括:访问所述第一待访问地址所使用的访问指令,所述访问所述第一待访问地址所使用的访问指令为对齐访问指令或非对齐访问指令。
在一种可能的实施方式中,所述装置还包括:
更新模块,用于在所述确定模块根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令之后,根据所确定的访问所述第一待访问地址所使用的访问指令,更新所述程序的多媒体指令。
本发明第三方面提供一种访问指令确定装置,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,以执行第一方面任一项所述的方法。
本发明第四方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时实现第一方面任一项所述的方法。
本发明提供的访问指令确定方法、装置及存储介质,对于无法确定待访问地址的起始地址是否对齐的场景,可以根据所述程序中对应同一起始地址的待访问地址的数量,以及,待访问地址对应的待访问数据的长度,合理的确定所述程序访问所述待访问地址所使用的访问指令,从而在提高该多媒体指令优化后的程序的性能的同时,又可以避免花费过多的时间来判断访问所述待访问地址所使用的访问指令。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种访问指令确定方法的流程示意图;
图2为本发明提供的另一种访问指令确定方法的流程示意图;
图3为本发明提供的一种访问指令确定装置的结构示意图;
图4为本发明提供的另一种访问指令确定装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
位于内存中的基本数据类型的变量,如果它的内存地址的起始地址能够被它的长度整除,则认为它是自然对齐的。该变量可以称为对齐数据,反之称之为不对齐数据。相应地,对齐数据的起始地址可以称为对齐的起始地址,不对齐数据的起始地址可以称为非对齐的起始地址。
应理解,在本发明实施例中,术语对齐的起始地址和对齐数据可以等同,均用于表征该数据为自然对齐的。术语非对齐的起始地址和不对齐数据可以等同,均用于表征该数据为非对齐的。
现有技术中,对于使用无内部互锁流水级的微处理器(Microprocessor withoutinterlocked piped stages,简称MIPS)架构的计算机(下述申请文件简称计算机),计算机的多媒体指令支持基于字的整数的并行操作以及基于双字的整数的并行操作。这里所说的并行操作是指同时对多个整数进行运算处理。应理解,这里所说的字的长度为32位(即四个字节)、双字的长度为64位(即八个字节)。
若该计算机使用浮点运算单元(Float Point Unit,FPU)的浮点寄存器来实现整数的并行操作,则该计算机需要使用存取浮点类型数据的访问指令,从内存中存取需要并行计算的整数。下面来对如何使用存取浮点类型数据的访问指令,从内存中存取需要并行计算的整数进行说明,具体地:
浮点类型数据包括单精度和双精度两种类型的浮点数,其中,单精度的浮点数使用四个字节表示,双精度的浮点数使用八个字节表示。即,可以使用存取浮点类型数据的访问指令存取四个字节的字和八个字节的双字。
存取四个字节的字和八个字节的双字所使用的访问指令可以如下述表1所示:
表1
在本发明实施例中,上述第一写指令、第一读指令、第三写指令和第三读指令可以称为对齐访问指令。上述第二写指令、第二读指令、第四写指令和第四读指令可以称为非对齐访问指令。即,对齐访问指令用于访问起始地址为对齐的内存地址,非对齐访问指令用于访问起始地址非对齐的内存地址。
通过上述表1可以看出,计算机在使用存取浮点类型数据的访问指令,从内存中存取需要并行计算的整数时,若该待访问数据所在的内存地址的(简称待访问地址)起始地址为对齐的起始地址时,则可以通过一条对齐访问指令进行访问。例如,第三读指令。若该待访问地址的起始地址为非对齐的起始地址,则需要通过两条非对齐访问指令进行访问。例如,第二读指令1/第二读指令2。
目前,开发人员在优化程序中用于“从内存中存取需要并行计算的整数”的多媒体指令时,可以基于访问场景,来甄别待访问地址的起始地址是否为对齐的起始地址(即甄别待访问数据是否为对齐数据),从而确定使用哪个访问指令访问该待访问地址,对待访问数据进行存取操作。
对于无法确定待访问地址的起始地址是否对齐的场景,开发人员无法准确的确定出使用哪个访问指令访问该待访问地址。若开发人员误将访问对齐数据的访问指令应用于访问起始地址非对齐的内存地址,则会使程序运行失败或程序性能显著下降(例如,可能会使程序的性能下降10倍以上)。由于两条非对齐访问指令的处理时长远大于单个对齐访问指令的处理时长(例如:两条非对齐访问指令的处理时长是单个对齐访问指令的处理时长的五倍左右),若开发人员直接使用非对齐访问指令,也会导致程序性能的下降。通常情况下,大部分多媒体指令优化的地址的起始地址是对齐的,若所有多媒体指令优化的访问操作都用两条成对的非对齐访问指令来实现的话,会使多媒体指令优化后的程序的运行性能较低。因此,针对应用于“使用MIPS架构的计算机”的程序的多媒体指令,对于无法确定待访问地址的起始地址是否对齐的场景,如何确定访问该待访问地址的访问指令是一个亟待解决的问题。
考虑到上述问题,本发明提供了一种访问指令确定方法,用于解决上述技术问题。其中,本发明所提供的访问指令确定方法的执行主体可以为访问指令确定装置,该访问指令确定装置可以为驱动程序、程序代码软件,也可以为存储有相关执行代码的介质,例如,U盘等;或者,该访问指令确定装置还可以为集成或安装有相关执行代码的实体装置,例如,芯片、微控制单元(Microcontroller Unit,简称MCU)、电脑、计算机等。
应理解,本发明实施例中所涉及的内存地址、地址、待访问地址、起始地址均指内存中的地址,对此不再加以赘述。
另外,本发明实施例所提供的访问指令确定方法,包括但不限于使用MIPS架构的计算机,也可以应用于存在上述问题、但使用其他架构的计算机,对此不再赘述。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明提供的一种访问指令确定方法的流程示意图。本发明所提供的访问指令确定方法的执行主体可以为访问指令确定装置,还可以为集成有访问指令确定装置的电子设备等。下述申请文件以执行主体为集成有访问指令确定装置的电子设备(简称:电子设备)为例,对本申请的方法进行说明。如图1所示,该方法包括:
S101、接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址。
在本实施例中,开发人员在优化程序中用于“从内存中存取需要并行计算的整数”的多媒体指令时,若遇到无法确定待访问地址的起始地址是否对齐的场景,开发人员可以向电子设备输入请求指令,来指示不确定该待访问地址(即第一待访问地址)的起始地址是否对齐。
作为一种可能的实现方式,该请求指令可以通过携带第一待访问地址的方式,来指示不确定第一待访问地址的起始地址是否对齐。或者,该请求指令可以通过携带第一待访问地址和指示“不确定第一待访问地址的起始地址是否对齐”的指示信息的方式,来指示不确定第一待访问地址的起始地址是否对齐。
S102、根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量。
在本实施例中,电子设备可以获取该待优化多媒体指令的程序,例如,开发人员可以预先将该程序输入电子设备中,或者,开发人员可以随同请求指令一起将程序输入给电子设备,或者,该电子设备从其他设备(例如数据库服务器等)预先获取了该程序,或者,请求指令中携带有该程序的标识,以使该电子设备根据该程序的标识,从其他设备获取该程序。
因此,电子设备在接收到用户输入的请求指令后,可以根据该请求指令和程序,获取程序中对应所述起始地址的待访问地址的数量。
例如,程序中包括待访问地址1、待访问地址2、待访问地址3和待访问地址4。其中,待访问地址1、待访问地址2和待访问地址4的起始地址相同、但相对起始地址的偏移量不同。假设开发人员向电子设备发送请求指令,指示无法确定待访问地址1的起始地址是否对齐,则在该情况下,电子设备可以根据该请求指令和该程序,确定该程序中对应该待访问地址1的起始地址的待访问地址的数量为3。
S103、根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
应理解,这里所说的待访问数据为待存取至第一待访问地址的数据。
作为一种可能的实现方式,电子设备根据该数量和第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令可以包括如下几种情况:
第一种情况:若所述数量为1,则确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
若待访问数据为字,即待访问数据的长度为32位,则确定使用访问32位字的第一类型的访问指令访问所述第一待访问地址。若该访问操作为写操作,则该第一类型的访问指令可以为第一类型的写指令。若该访问操作为读操作,则该第一类型的访问指令可以为第一类型的读指令。
若待访问数据为双字,即待访问数据的长度为64位,则确定使用访问64位双字的第一类型的访问指令访问所述第一待访问地址。若该访问操作为写操作,则该第一类型的访问指令可以为第一类型的写指令。若该访问操作为读操作,则该第一类型的访问指令可以为第一类型的读指令。
如前述所说,字的长度为32位、双字的长度为64位。另外,存储变量的内存地址的起始地址若能够被变量的长度整除,则认为该变量是自然对齐的。因此,第一类型的访问接口可以通过判断第一待访问地址的起始地址是否能够被待访问数据的长度整除,来确定第一待访问地址的起始地址是否对齐,进而根据所述第一待访问地址的起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。即,第一类型的访问接口包括判断第一待访问地址的起始地址是否对齐的指令,以及,对齐访问指令和非对齐访问指令。
例如,可以将第一待访问地址的起始地址与待访问数据的长度相除所得到的余数来判断第一待访问地址的起始地址是否对齐。若余数为0,则确定第一待访问地址的起始地址对齐,即,使用该接口中的对齐访问指令访问该第一待访问地址。若余数大于0,则确定第一待访问地址的起始地址不对齐,即,使用该接口中的非对齐访问指令访问该第一待访问地址。
再例如,对于长度为32位的字来说,若第一待访问地址的起始地址的低2位为0,则该第一待访问地址的起始地址能够被32整除。因此,可以将第一待访问地址的起始地址的后2位与3的二进制数(11)进行按位与操作,若结果为00,则确定第一待访问地址的起始地址对齐,即,使用该接口中的对齐访问指令访问该第一待访问地址。若结果不为00(例如01、或10或11),则确定第一待访问地址的起始地址不对齐,即,使用该接口中的非对齐访问指令访问该第一待访问地址。
相应地,对于长度为64位的字来说,若第一待访问地址的起始地址的低3位为0,则该第一待访问地址的起始地址能够被64整除。因此,可以将第一待访问地址的起始地址的后3位与7的二进制数(111)进行按位与操作,若结果为000,则确定第一待访问地址的起始地址对齐,即,使用该接口中的对齐访问指令访问该第一待访问地址。若结果不为000,则确定第一待访问地址的起始地址不对齐,即,使用该接口中的非对齐访问指令访问该第一待访问地址。
第二种情况:若所述数量大于1,则电子设备可以根据所述待访问数据的长度,以及,所述第一待访问地址的起始地址,确定所述第一待访问地址的起始地址是否对齐,进而根据所述第一待访问地址的起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。
关于电子设备如何根据所述待访问数据的长度,以及,所述第一待访问地址的起始地址,确定所述第一待访问地址的起始地址是否对齐的描述,可以参见上述关于第一类型的访问接口如何确定第一待访问地址的起始地址是否对齐的描述。
电子设备在确定所述第一待访问地址的起始地址是否对齐后,可以根据所述第一待访问地址的起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。例如,若第一待访问地址的起始地址对齐,则电子设备确定使用与待访问数据的长度对应的对齐访问指令访问第一待访问地址。若第一待访问地址的起始地址非对齐,则确定使用与待访问数据的长度对应的非对齐访问指令访问第一待访问地址。
在一些实施例中,上述对齐访问指令或非对齐访问指令也可以通过访问接口来实现,在该场景下,为了与上述既包括非对齐访问指令又包括对齐访问指令的第一类型的访问接口进行区分,在此将仅包括非对齐访问指令或对齐访问指令的访问接口称为第二类型的访问接口。则在该实现方式下,上述电子设备可以根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口。
通过上述将访问指令封装至访问接口的方式,可以使开发人员在优化程序中用于“从内存中存取需要并行计算的整数”的多媒体指令时,可以直接通过所确定的访问接口来优化程序中的多媒体指令,无需自己再编写访问指令,可以避免出现因人为编写错误,导致程序中的访问指令出现错误,进而导致程序性能下降的问题。
通过上述方式,对于无法确定第一待访问地址的起始地址是否对齐的场景,在程序中对应第一待访问地址的起始地址的待访问地址的数量大于1时,电子设备可以进一步地结合待访问数据的长度,以及,第一待访问地址的起始地址,来甄别第一待访问地址的起始地址是否对齐,从而可以准确的判断出访问所述第一待访问地址所使用的访问指令。这样,后续在使用该访问指令更新程序后,可以提高该多媒体指令优化后的程序的性能,避免出现因误用访问指令导致程序的性能下降的问题。同时,通过上述一次性确定多个使用该起始地址的待访问地址所使用的访问指令,可以提高多媒体指令优化的效率。而对于程序中对应第一待访问地址的起始地址的待访问地址的数量为1的场景(即只有第一待访问地址的起始地址是否对齐不确定时),电子设备可以直接确定使用自己包括判断动作的访问接口访问该第一待访问地址,以避免花费过多的时间来判断访问所述第一待访问地址所使用的访问指令。
进一步地,电子设备在确定出程序访问第一待访问地址所使用的访问指令之后,可以根据该访问指令,更新程序的多媒体指令,以优化该程序的多媒体指令,提高了多媒体指令优化后的程序的性能。
下面通过一个具体的示例,来对本发明提供的访问指令确定方法进行详细说明。假定,在本示例中,定义有如下述表2所示的第一类型的访问接口和第二类型的访问接口,具体地:
表2
应理解,上述访问指令的名称仅是一种示意,为了便于后续引用,本发明对访问指令的名称不进行限定。
结合上述表2所示的第一类型的访问接口和第二类型的访问接口,下面对对于无法确定待访问地址的起始地址是否对齐的场景,如何确定访问该待访问地址的访问指令进行示意说明。图2为本发明提供的另一种访问指令确定方法的流程示意图。如图2所示,该方法包括:
S201、接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址。
S202、根据所述请求指令,判断第一待访问地址的起始地址是否对齐。若不确定是否对齐,则执行S203,若确定对齐,则执行S212。
若所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,则不确定第一待访问地址的起始地址是否对齐。若所述请求指令用于指示确定第一待访问地址的起始地址对齐,则确定第一待访问地址的起始地址对齐。
S203、获取程序中对应该起始地址的待访问地址的数量。
S204、判断数量是否大于1。若是,则执行S205,若否,则执行S213。
S205、判断待访问数据的长度是否为32位。若是,则执行S206,若否,则执行S209。
S206、判断第一待访问地址的起始地址的后2位是否为0。若是,说明第一待访问地址的起始地址对齐,则执行S207,若否,说明第一待访问地址的起始地址未对齐,则执行S208。
S207、确定使用访问32位字的第二类型的访问接口访问第一待访问地址,所述第二类型的访问接口包括与32位字对应的对齐访问指令。
即,确定使用第二类型的对齐读接口32访问接口或第二类型的对齐写接口32访问接口访问第一待访问地址。
S208、确定使用访问32位字的第二类型的访问接口访问第一待访问地址,所述第二类型的访问接口包括与32位字对应的非对齐访问指令。
即,确定使用第二类型的非对齐读接口32访问接口或第二类型的非对齐写接口32访问接口访问第一待访问地址。
S209、判断第一待访问地址的起始地址的后3位是否为0。若是,说明第一待访问地址的起始地址对齐,则执行S210,若否,说明第一待访问地址的起始地址未对齐,则执行S211。
S210、确定使用访问64位双字的第二类型的访问接口访问第一待访问地址,所述第二类型的访问接口包括与64位双字对应的对齐访问指令。
即,确定使用第二类型的对齐读接口64访问接口或第二类型的对齐写接口64访问接口访问第一待访问地址。
S211、确定使用访问64位双字的第二类型的访问接口访问第一待访问地址,所述第二类型的访问接口包括与64位双字对应的非对齐访问指令。
即,确定使用第二类型的非对齐读接口64访问接口或第二类型的非对齐写接口64访问接口访问第一待访问地址。
S212、确定使用与待访问数据的长度对应的第二类型的访问接口访问第一待访问地址,所述第二类型的访问接口包括与待访问数据的长度对应的对齐访问指令。
即,确定使用第二类型的对齐读接口32访问接口或第二类型的对齐写接口32访问接口或第二类型的对齐读接口64访问接口或第二类型的对齐写接口64访问接口访问第一待访问地址。
S213、确定使用与待访问数据的长度对应的第一类型的访问接口访问第一待访问地址。
即,确定使用第一类型的读接口64访问接口或第一类型的写接口64访问接口或第一类型的读接口32访问接口或第一类型的写接口32访问接口访问第一待访问地址。
作为一种可能的实现方式,可以将上述图2所示的方法封装为一个存取指令函数接口,这样,开发人员在对程序进行多媒体指令优化的过程中,可以调用该存取指令函数接口,达到发现程序数据存取问题以及通过调用上述存取函数接口来准确识别针对每个待访问地址所需使用的访问接口,从而使用正确的访问接口更新程序的多媒体指令,以使多媒体指令优化后的程序的性能得到提升。
本发明提供的访问指令确定方法,对于无法确定待访问地址的起始地址是否对齐的场景,可以根据所述程序中对应同一起始地址的待访问地址的数量,以及,待访问地址对应的待访问数据的长度,合理的确定所述程序访问所述待访问地址所使用的访问指令,从而在提高该多媒体指令优化后的程序的性能的同时,又可以避免花费过多的时间来判断访问所述待访问地址所使用的访问指令。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明提供的一种访问指令确定装置的结构示意图。该访问指令确定装置可以通过软件、硬件或者两者的结合实现电子设备的部分或者全部。如图3所示,该访问指令确定装置可以包括:接收模块11、获取模块12和确定模块13。其中,
接收模块11,用于接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;
获取模块12,用于根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;
确定模块13,用于根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
可选的,所述确定模块13,具体用于在所述数量为1时,确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
或者,所述确定模块13,具体用于在所述数量大于1时,在所述数量大于1时,根据所述待访问数据的长度,以及,所述起始地址,确定所述起始地址是否对齐;并根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。例如,根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口,所述第二类型的访问接口包括:访问所述第一待访问地址所使用的访问指令,所述访问所述第一待访问地址所使用的访问指令为对齐访问指令或非对齐访问指令。
继续参照图3,可选的,在一些实施例中,所述装置还可以包括:更新模块14。其中,
更新模块14,用于在所述确定模块13根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令之后,根据所确定的访问所述第一待访问地址所使用的访问指令,更新所述程序的多媒体指令。
本发明提供的访问指令确定装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图4为本发明提供的另一种访问指令确定装置的结构示意图。如图4所示,该访问指令确定装置可以包括:至少一个处理器21和存储器22。图4示出的是以一个处理器为例的访问指令确定装置,其中,
存储器22,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器22可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器21用于执行所述存储器22存储的计算机执行指令,以实现上述实施例中的访问指令确定方法,其实现原理和技术效果类似,在此不再赘述。
其中,处理器21可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器22和处理器21独立实现,则通信接口、存储器22和处理器21可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器22和处理器21集成在一块芯片上实现,则通信接口、存储器22和处理器21可以通过内部接口完成相同间的通信。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质。具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种访问指令确定方法,其特征在于,所述方法包括:
接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;
根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;
根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令,包括:
若所述数量为1,则确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令,包括:
若所述数量大于1,则根据所述待访问数据的长度,以及,所述起始地址,确定所述起始地址是否对齐;
根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。
4.根据权利要求3所述的方法,其特征在于,所述根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令,包括:
根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口,所述第二类型的访问接口包括:访问所述第一待访问地址所使用的访问指令,所述访问所述第一待访问地址所使用的访问指令为对齐访问指令或非对齐访问指令。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令之后,所述方法还包括:
根据所确定的访问所述第一待访问地址所使用的访问指令,更新所述程序的多媒体指令。
6.一种访问指令确定装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的请求指令,所述请求指令用于指示不确定第一待访问地址的起始地址是否对齐,所述第一待访问地址为程序中任一待访问地址;
获取模块,用于根据所述请求指令和所述程序,获取所述程序中对应所述起始地址的待访问地址的数量;
确定模块,用于根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令。
7.根据权利要求6所述的装置,其特征在于,所述确定模块,具体用于在所述数量为1时,确定使用与所述待访问数据的长度对应的第一类型的访问接口访问所述第一待访问地址,所述第一类型的访问接口包括非对齐访问指令和对齐访问指令,在使用所述第一类型的访问接口访问所述第一待访问地址时,所述第一类型的访问接口根据所述待访问数据的长度,以及,所述起始地址,选择访问所述第一待访问地址所使用的访问指令。
8.根据权利要求6所述的装置,其特征在于,所述确定模块,具体用于在所述数量大于1时,根据所述待访问数据的长度,以及,所述起始地址,确定所述起始地址是否对齐;并根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的访问指令。
9.根据权利要求8所述的装置,其特征在于,所述确定模块,具体用于根据所述起始地址是否对齐,以及,所述待访问数据的长度,确定访问所述第一待访问地址所使用的第二类型的访问接口,所述第二类型的访问接口包括:访问所述第一待访问地址所使用的访问指令,所述访问所述第一待访问地址所使用的访问指令为对齐访问指令或非对齐访问指令。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述装置还包括:
更新模块,用于在所述确定模块根据所述数量和所述第一待访问地址对应的待访问数据的长度,确定所述程序访问所述第一待访问地址所使用的访问指令之后,根据所确定的访问所述第一待访问地址所使用的访问指令,更新所述程序的多媒体指令。
11.一种访问指令确定装置,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,以执行如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有程序指令,所述程序指令被处理器执行时实现权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910337918.8A CN110308933B (zh) | 2019-04-25 | 2019-04-25 | 访问指令确定方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910337918.8A CN110308933B (zh) | 2019-04-25 | 2019-04-25 | 访问指令确定方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110308933A true CN110308933A (zh) | 2019-10-08 |
CN110308933B CN110308933B (zh) | 2021-06-01 |
Family
ID=68074494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910337918.8A Active CN110308933B (zh) | 2019-04-25 | 2019-04-25 | 访问指令确定方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110308933B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732481A (zh) * | 2020-12-31 | 2021-04-30 | 南方电网科学研究院有限责任公司 | 一种处理器的异常修复方法及装置 |
CN113535451A (zh) * | 2021-07-12 | 2021-10-22 | 广州翼辉信息技术有限公司 | 处理器访问异常的处理方法、装置、存储介质及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461925A (zh) * | 2014-11-14 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种存储设备地址对齐的自动纠正方法和装置 |
US20150169252A1 (en) * | 2013-12-13 | 2015-06-18 | Netapp Inc. | Techniques for dynamically aligning a partition with a block size boundary |
CN104866428A (zh) * | 2014-02-21 | 2015-08-26 | 联想(北京)有限公司 | 数据存取方法和数据存取装置 |
CN108255741A (zh) * | 2017-12-19 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘原子写入的方法及固态硬盘 |
CN109408427A (zh) * | 2017-08-18 | 2019-03-01 | 龙芯中科技术有限公司 | 一种跨时钟域数据处理方法及系统 |
-
2019
- 2019-04-25 CN CN201910337918.8A patent/CN110308933B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150169252A1 (en) * | 2013-12-13 | 2015-06-18 | Netapp Inc. | Techniques for dynamically aligning a partition with a block size boundary |
CN104866428A (zh) * | 2014-02-21 | 2015-08-26 | 联想(北京)有限公司 | 数据存取方法和数据存取装置 |
CN104461925A (zh) * | 2014-11-14 | 2015-03-25 | 浪潮(北京)电子信息产业有限公司 | 一种存储设备地址对齐的自动纠正方法和装置 |
CN109408427A (zh) * | 2017-08-18 | 2019-03-01 | 龙芯中科技术有限公司 | 一种跨时钟域数据处理方法及系统 |
CN108255741A (zh) * | 2017-12-19 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘原子写入的方法及固态硬盘 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732481A (zh) * | 2020-12-31 | 2021-04-30 | 南方电网科学研究院有限责任公司 | 一种处理器的异常修复方法及装置 |
CN112732481B (zh) * | 2020-12-31 | 2023-10-10 | 南方电网科学研究院有限责任公司 | 一种处理器的异常修复方法及装置 |
CN113535451A (zh) * | 2021-07-12 | 2021-10-22 | 广州翼辉信息技术有限公司 | 处理器访问异常的处理方法、装置、存储介质及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110308933B (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6995124B2 (ja) | トランザクション実行中の保護ストレージ・イベント処理 | |
WO2009102658A1 (en) | Access rights on a memory map | |
CN111208933B (zh) | 数据访问的方法、装置、设备和存储介质 | |
CN110308933B (zh) | 访问指令确定方法、装置及存储介质 | |
EP2791785A1 (en) | Method and system using exceptions for code specialization in a computer architecture that supports transactions | |
CN112395093A (zh) | 多线程数据处理方法、装置、电子设备及可读存储介质 | |
CN107045436B (zh) | 访问处理方法和装置 | |
CN115640047B (zh) | 指令操作方法及装置、电子装置及存储介质 | |
US20140156978A1 (en) | Detecting and Filtering Biased Branches in Global Branch History | |
CN113342563A (zh) | 程序运行错误时定位源代码的方法、装置及计算设备 | |
JP5490711B2 (ja) | テーブル内のエレメントのアドレスを決定するシステムおよび方法 | |
WO2021042542A1 (zh) | 目录存储方法、装置、计算机设备及存储介质 | |
CN114253619A (zh) | SSD多级Boot的方法、装置、计算机设备及存储介质 | |
CN117008971B (zh) | WebAssembly指令集的转换方法及装置 | |
CN115840618B (zh) | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 | |
CN117313166A (zh) | 一种数据填充方法、装置、计算机设备及存储介质 | |
CN111381905B (zh) | 一种程序处理方法、装置及设备 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US20180004485A1 (en) | Architecture and instruction set to support interruptible floating point division | |
CN117687704B (zh) | 显卡初始化方法、装置、设备及存储介质 | |
US20050149913A1 (en) | Apparatus and methods to optimize code in view of masking status of exceptions | |
CN117130721B (zh) | WebAssembly代码的执行方法及装置 | |
WO2024146218A1 (zh) | 内存访问方法、电子设备及存储介质 | |
CN114896179B (zh) | 内存页的拷贝方法、装置、计算设备及可读存储介质 | |
CN113031908B (zh) | 一种有序数据处理方法及计算设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |