CN103345392A - 处理信息的方法及其装置 - Google Patents
处理信息的方法及其装置 Download PDFInfo
- Publication number
- CN103345392A CN103345392A CN2013102595619A CN201310259561A CN103345392A CN 103345392 A CN103345392 A CN 103345392A CN 2013102595619 A CN2013102595619 A CN 2013102595619A CN 201310259561 A CN201310259561 A CN 201310259561A CN 103345392 A CN103345392 A CN 103345392A
- Authority
- CN
- China
- Prior art keywords
- function
- window length
- target
- compile
- initial
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种处理信息的方法及其装置,该方法包括:确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度;根据该目标划窗长度,确定该待编译函数的汇编代码。根据本发明实施例的处理信息的方法和装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
Description
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及处理信息的方法及其装置。
背景技术
在目前的编译技术中,常用的函数调用方式通过栈来实现参数和返回值传递,具体而言,当调用函数需要向被调函数传递参数时,调用函数从被调函数的栈空间开始位置起逐个存入参数内容,相应地,被调函数从自己的栈空间开始位置起写入传递给它的参数,并在寄存器中对该参数内容执行操作,这种方式的实现需要额外增加读写指令,同时由于寄存器和栈之间的存取操作时延较大,会使得系统性能消耗较大。
由于上述完全用栈来传参的方式效率较低,为此使用寄存器来传参成为了一种新的方式,滑窗机制是一种在兼顾成本的情况下通过寄存器传递参数的方式,比如tensalica公司的芯片,它提供了32个通用物理寄存器,依次编号为A0-A31,而在汇编代码中直接操作的只有16个寄存器,称为初始窗口。初始窗口的16个寄存器依次编号为a0-a15,该a0-a15可称为逻辑寄存器,当父函数调用子函数时,需要进行窗口滑动,每次滑动的寄存器数固定,例如4和8,分别被称作call4和call8调用。以call8调用为例,当父函数通过call8指令调用子函数时,父函数中的a0-a7是子函数不能访问到的,这样,这8个寄存器就不需要由父函数或者子函数显式的压栈保存,窗口划动后自然对这8个寄存器进行保护,其中,a0-a3寄存器称为父函数的基本寄存器,a4-a7寄存器为子函数的扩展寄存器;对父函数的a8-a15,在窗口划动后又变成了子函数窗口的a0-a7寄存器,这部分寄存器(称为滑动寄存器)的内容直接被子函数看到,因此可以用他们来存储一些函数间传递用到的参数。这样避免了将参数保存到栈传递导致的存储时间耗费。
虽然滑窗机制能减少对栈空间的存取操作,然而,在现有技术中,当编译器配置完成后,使用该编译器编译的所有函数均采用默认的划窗长度,且此默认划窗长度在任何情况下都是固定不变的。因此,当该默认划窗长度较大时,例如,8或12,当函数调用次数大到一定深度的时候,就会不断的产生溢出,导致我们并不能从滑窗机制中获取好处。而当该默认划窗长度较小时,例如4,虽然减少了溢出的概率,但是当函数调用不会产生溢出时,与较大的划窗长度相比,较小的划窗长度增加了存入栈中寄存器的个数,因而增加了程序运行时延。因此,现有技术中采用固定的划窗长度使得处理信息过程中还会由于存取数据耗费时间,函数的运行速率较慢,对内存空间的利用率和系统的整体性能较差。
发明内容
本发明实施例提供了一种处理信息的方法及其装置,能够解决现有技术中由于固定的划窗长度而造成的存取数据的时间耗费。
第一方面,提供了一种处理信息的方法,包括:确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度;根据该目标划窗长度,确定该待编译函数的汇编代码。
结合第一方面,在第一种可能的实现方式中,该确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度,包括:根据用于指示该待编译函数的划窗长度的用户编译指令,确定该待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
结合第一方面,在第二种可能的实现方式中,该确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度,包括:获取该待编译函数的函数调用信息;根据该函数调用信息,确定该目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
结合第一方面或结合第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,该根据该目标划窗长度,确定该待编译函数的汇编代码,包括:根据该目标划窗长度,进行寄存器分配;根据该寄存器分配和该目标划窗长度,生成该待编译函数的汇编代码。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,该根据该寄存器分配和该目标划窗长度,生成该待编译函数的汇编代码,包括:调整该待编译函数的调用指令,使得该待编译函数的划窗长度为该目标划窗长度。
结合第一方面或结合第一方面的第一种或第二种可能的实现方式,在第五种可能的实现方式中,该根据该目标划窗长度,确定该待编译函数的汇编代码,包括:根据该初始划窗长度,生成该待编译函数的初始汇编代码;调整该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,该调整该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度,包括:压栈保存该待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;将该待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至该当前调用子函数的目标滑动寄存器中;根据该目标划窗长度,调整该待编译函数的调用指令;将该当前调用子函数的目标返回寄存器中的返回值移动至该当前调用子函数的初始返回寄存器中;将该压栈保存的信息写入该当前被调用子函数的初始扩展寄存器中。
第二方面,提供了一种处理信息的装置,包括:第一确定模块,用于确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度;第二确定模块,用于根据该第一确定模块确定的该目标划窗长度,确定该待编译函数的汇编代码。
结合第二方面,在第一种可能的实现方式中,该第一确定模块具体用于根据用于指示该待编译函数的划窗长度的用户编译指令,确定该待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
结合第二方面,在第二种可能的实现方式中,该第一确定模块包括:获取单元,用于获取该待编译函数的函数调用信息;确定单元,用于根据该获取单元获取的该函数调用信息,确定该目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
结合第二方面或结合第二方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,该第二确定模块包括:分配单元,用于根据该目标划窗长度,进行寄存器分配;第一生成单元,用于根据该分配单元分配的寄存器和该目标划窗长度,生成该待编译函数的汇编代码。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,该第一生成单元具体用于调整该待编译函数的调用指令,使得该待编译函数的划窗长度为该目标划窗长度。
结合第二方面或结合第二方面的第一种或第二种可能的实现方式,在第五种可能的实现方式中,该第二确定模块包括:第二生成单元,用于根据该初始划窗长度,生成该待编译函数的初始汇编代码;调整单元,用于调整该第二生成单元生成的该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,该调整单元包括:保存子单元,用于压栈保存该待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;第一移动子单元,用于将该待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至该当前调用子函数的目标滑动寄存器中;调整子单元,用于根据该目标划窗长度,调整该待编译函数的调用指令;第二移动子单元,用于将该当前调用子函数的目标返回寄存器中的返回值移动至该当前调用子函数的初始返回寄存器中;读取子单元,用于将该保存子单元压栈保存的信息写入该当前被调用子函数的初始扩展寄存器中。
因此,根据本发明实施例的处理信息的方法和装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的处理信息的方法的示意性流程图。
图2是根据本发明实施例的处理信息的方法的另一示意性流程图。
图3是根据本发明实施例的处理信息的方法的再一示意性流程图。
图4是根据本发明实施例的处理信息的方法的再一示意性流程图。
图5是根据本发明实施例的处理信息的方法的再一示意性流程图。
图6是根据本发明实施例的寄存器的示意图。
图7是根据本发明实施例的处理信息的装置的示意性流程图。
图8是根据本发明实施例的处理信息的装置的另一示意性流程图。
图9是根据本发明实施例的处理信息的装置的再一示意性流程图。
图10是根据本发明实施例的处理信息的装置的再一示意性流程图。
图11是根据本发明实施例的处理信息的装置的再一示意性流程图。
图12是根据本发明另一实施例的处理信息的装置的示意性流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
应理解,本发明实施例的技术方案可以应用于各种计算机系统,例如,个人计算机(Personal Computer,简称为“PC”)、计算机集群系统、大型计算机系统或各种超级计算机(Supercomputer)等等,本发明对此并不作限定。此外,本发明还可以应用于各种编译器,例如,gcc,g++,c++,open64,等等,本发明实施例对此不作限定。
图1示出了根据本发明实施例的处理信息的方法100的流程性示意图,该方法可以由任何合适的装置执行,例如编译器,为了便于描述,下面以编译器执行为例进行说明,但本发明实施例不限于此。如图1所示,该方法100包括:
S110,确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度;
S120,根据该目标划窗长度,确定该待编译函数的汇编代码。
因此,根据本发明实施例的处理信息的方法,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
在S110中,该初始划窗长度可以为预设的固定划窗长度,可选地,编译器可以将预设划窗长度设置为一个较大的值,例如,8或12,以使得存入栈中的寄存器个数较少。当编译器需要编译调度次数较多的函数时,该预设划窗长度可能会造成寄存器溢出,此时可以调整该函数的调用划窗长度,例如,调整为4,以降低寄存器溢出的概率,但本明实施例不限于此。
在S120中,该编译器默认采用该初始划窗长度编译该待编译函数,因此,当该目标划窗长度不等于该初始划窗长度时,该编译器需要将该初始划窗长度调整为该目标划窗长度,可选地,该编译器可以在执行寄存器分配前调整该划窗长度,并根据调整后的目标划窗长度分配寄存器以及生成该待编译函数的汇编代码;或者该编译器在执行寄存器分配后调整该划窗长度,即按照初始划窗长度生成该待编译函数的汇编文件,然后通过修改该汇编文件来调整划窗长度,但本发明实施例不限于此。
可选地,该编译器可以通过多种方式确定是否需要调整函数调用的划窗长度,例如,该编译器可以通过编译接口“#program”中的用户编译指令,来确定是否需要调整函数调用的划窗长度;或者该编译器可以通过过程间(IPA)分析来确定是否需要调整函数调用的划窗长度,但本发明实施例不限于此。
可选地,S110,确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度,包括:
S111,根据用于指示该待编译函数的划窗长度的用户编译指令,确定该待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
其中,该用户编译指令可以通过编译接口获取,例如,通过“#program”接口可以使用户设置函数调用的划窗长度,一个用户通过“#program”接口设置划窗长度的源代码例子如下:
其中,“windows_length”用于设定函数调用的划窗长度,这里用户指定的划窗长度为4,如果编译器的初始划窗长度不为4,则确定需要将函数调用的划窗长度调整为4,但本发明实施例不限于此。
可选地,作为另一实施例,该编译器也可以通过进行IPA分析确定是否需要调整函数调用的划窗长度。相应地,如图2所示,S110,确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度,包括:
S112,获取该待编译函数的函数调用信息;
S113,根据该函数调用信息,确定该目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
其中,该函数调用信息可以具体为函数调用图,该编译器可以根据该函数调用信息确定该待编译函数的调用深度,并根据该调用深度确定该待编译函数的目标划窗长度,例如,当该待编译函数的调用深度大于4时,其目标划窗长度为4,更大的划窗长度会造成寄存器溢出。当该编译器的初始划窗长度为4时,那么该编译器可以不调整划窗长度;否则,该编译器需要将划窗长度调整为4,但本发明实施例不限于此。
可选地,该编译器可以在执行寄存器分配前调整该待编译函数的划窗长度,操作简单方便,易于实现,如图3所示,S120,编译器该根据该目标划窗长度,确定该待编译函数的汇编代码,包括:
S121,根据该目标划窗长度,进行寄存器分配;
S122,根据该寄存器分配和该目标划窗长度,生成该待编译函数的汇编代码。
其中,在S121中,该编译器可以根据该目标划窗长度,调整该待编译函数的传参寄存器和返回寄存器,并利用该传参寄存器和返回寄存器生成该待编译函数的汇编代码,例如,该初始划窗长度为8,该编译器将该待编译函数的当前调用子函数的逻辑寄存器a8-a15作为传参寄存器,逻辑寄存器a8作为返回寄存器;而当函数调用的划窗长度调整为4时,该编译器需要将该待编译函数的当前调用子函数的逻辑寄存器a6-a11作为传参寄存器,逻辑寄存器a6作为返回寄存器,但本发明实施例不限于此。
可选地,相应地,S122,根据该寄存器分配和该目标划窗长度,生成该待编译函数的汇编代码,包括:
S122a,调整该待编译函数的调用指令,使得该待编译函数的划窗长度为该目标划窗长度。
具体地,该编译器可以将该待编译函数的初始调用指令修改为该待编译函数的目标调用指令,其中,该初始调用指令的调用划窗长度为初始划窗长度,目标调用指令的调用划窗长度为目标划窗长度,例如,当初始划窗长度和目标划窗长度分别为8和4时,初始调用指令和目标调用指令分别为call4和call8,但本发明实施例不限于此。
可选地,作为另一实施例,该编译器也可以在执行寄存器分配之后再调整函数调用的划窗长度,相应地,如图4所示,S120,根据该目标划窗长度,确定该待编译函数的汇编代码,包括:
S123,根据该初始划窗长度,生成该待编译函数的初始汇编代码;
S124,调整该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度。
其中,在S124中,该编译器可以通过修改该初始汇编代码中的调用指令,并相应根据该调用指令的修改对该初始汇编代码做调整。
可选地,作为另一实施例,如图5所示,S124,调整该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度,包括:
S124a,压栈保存该待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;
S124b,将该待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至该当前调用子函数的目标滑动寄存器中;
S124c,根据该目标划窗长度,调整该待编译函数的调用指令;
S124d,将该当前调用子函数的目标返回寄存器中的返回值移动至该当前调用子函数的初始返回寄存器中;
S124e,将该压栈保存的信息写入该当前被调用子函数的初始扩展寄存器中。
在执行寄存器分配之后再调整函数调用的划窗长度虽然会带来一些冗余的操作,不过在寄存器分配后的优化中会见冗余指令被删除掉。并且,这样可以根据实际需要选择性地调整该待编译函数的一个或多个子函数的函数调用的划窗长度,提高编译器处理信息的灵活度。
下面通过具体例子来详细阐述在生成初始汇编代码后调整函数调用的划窗长度的方法,如图6所示,该编译器需要将待编译函数中的第一调用子函数调用第一被调用子函数时的划窗长度由8调整为4,而该待编译函数的其它子函数均采用初始划窗长度8进行函数调用,为了便于描述,下面将该第一调用子函数称为父函数,将第一被调用子函数称为子函数;并将采用该初始划窗长度的函数调用称为call8调用,采用目标划窗长度的函数调用称为call4调用。首先,该编译器可以为修改调用指令做前期准备工作,具体地,该编译器首先为寄存器a4-a7开辟一块栈空间,并将寄存器a4-a7中存放的数值压栈保存;然后,该编译器将call8调用的传参寄存器a8-a15中存放的数值移动到call4调用的传参寄存器a4-a11中。上述步骤执行后,该编译器可以将汇编代码中的call8指令修改为call4指令,使得该函数调用的划窗长度为4。最后,该编译器需要将call4调用的返回寄存器a4中的函数返回值移动到call8调用的返回寄存器a8中,并将压栈保存的原来在寄存器a4-a7中存放的数值重新读回寄存器a4-a7,该编译器恢复预设的初始划窗长度编译其它子函数。
因此,根据本发明实施例的处理信息的方法,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
应注意,图6的这个例子是为了帮助本领域技术人员更好地理解本发明实施例,而非要限制本发明实施例的范围。本领域技术人员根据所给出的图6的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。
应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中结合图1至图6,详细描述了根据本发明实施例的处理信息的方法,下面将结合图7至图12,描述根据本发明实施例的处理信息的装置。
图7示出了根据本发明实施例的处理信息的装置300的示意性框图,包括:
第一确定模块310,用于确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度;
第二确定模块320,用于根据该第一确定模块310确定的该目标划窗长度,确定该待编译函数的汇编代码。
因此,根据本发明实施例的处理信息的装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
可选地,该第一确定模块310具体用于根据用于指示该待编译函数的划窗长度的用户编译指令,确定该待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
可选地,作为另一实施例,如图8所示,该第一确定模块310包括:
获取单元311,用于获取该待编译函数的函数调用信息;
确定单元312,用于根据该获取单元311获取的该函数调用信息,确定该目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
可选地,作为另一实施例,如图9所示,该第二确定模块320包括:
分配单元321,用于根据该目标划窗长度,进行寄存器分配;
第一生成单元322,用于根据该分配单元321分配的寄存器和该目标划窗长度,生成该待编译函数的汇编代码。
可选地,作为另一实施例,该第一生成单元322具体用于调整该待编译函数的调用指令,使得该待编译函数的划窗长度为该目标划窗长度。
可选地,作为另一实施例,如图10所示,该第二确定模块320包括:
第二生成单元323,用于根据该初始划窗长度,生成该待编译函数的初始汇编代码;
调整单元324,用于调整该第二生成单元323生成的该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度。
可选地,作为另一实施例,如图11所示,该调整单元324包括:
保存子单元324a,用于压栈保存该待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;
第一移动子单元324b,用于将该待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至该当前调用子函数的目标滑动寄存器中;
调整子单元324c,用于根据该目标划窗长度,调整该待编译函数的调用指令;
第二移动子单元324d,用于将该当前调用子函数的目标返回寄存器中的返回值移动至该当前调用子函数的初始返回寄存器中;
写入子单元325e,用于将该保存子单元324a压栈保存的信息写入该当前被调用子函数的初始扩展寄存器中。
因此,根据本发明实施例的处理信息的装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
图12示出了根据本发明实施例的处理信息的装置400的示意性框图,如图12所示,该处理信息的装置400包括处理器410、存储器420和总线系统430。其中,处理器410和存储器420通过总线系统430相连,该存储器420用于存储指令,该处理器410通过该总线系统430,调用该存储器420中存储的该指令,用于确定待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度,以及根据该第一确定模块确定的该目标划窗长度,确定该待编译函数的汇编代码。
因此,根据本发明实施例的处理信息的装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
应理解,在本发明实施例中,该处理器410可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器410还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器420可以包括只读存储器和随机存取存储器,并向处理器410提供指令和数据。存储器420的一部分还可以包括非易失性随机存取存储器。例如,存储器420还可以存储设备类型的信息。
该总线系统430除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统430。
在实现过程中,上述方法的各步骤可以通过处理器410中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器420,处理器410读取存储器420中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
可选地,该处理器410具体用于根据用于指示该待编译函数的划窗长度的用户编译指令,确定该待编译函数的目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
可选地,作为另一实施例,该处理器410还用于获取该待编译函数的函数调用信息;根据该函数调用信息,确定该目标划窗长度,该目标划窗长度不等于该待编译函数的初始划窗长度。
可选地,作为另一实施例,该处理器410还用于根据该目标划窗长度,进行寄存器分配;根据该分配的寄存器和该目标划窗长度,生成该待编译函数的汇编代码。
可选地,作为另一实施例,该处理器410具体用于调整该待编译函数的调用指令,使得该待编译函数的划窗长度为该目标划窗长度。
可选地,作为另一实施例,该处理器410还用于根据该初始划窗长度,生成该待编译函数的初始汇编代码;以及调整该初始汇编代码以获得目标汇编代码,使得该目标汇编代码中该待编码函数的划窗长度为该目标划窗长度。
可选地,作为另一实施例,该处理器410还用于压栈保存该待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;将该待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至该当前调用子函数的目标滑动寄存器中;根据该目标划窗长度,调整该待编译函数的调用指令;将该当前调用子函数的目标返回寄存器中的返回值移动至该当前调用子函数的初始返回寄存器中;以及将该压栈保存的信息写入该当前被调用子函数的初始扩展寄存器中。
因此,根据本发明实施例的处理信息的装置,通过根据实际情况灵活地确定函数调用的划窗长度,能够降低由于使用固定的划窗长度而造成的时间和内存消耗,提高处理信息的运行速率,提高对内存空间的利用率,提升系统的整体性能,提高用户体验。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称为“ROM”)、随机存取存储器(Random Access Memory,简称为“RAM”)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种处理信息的方法,其特征在于,包括:
确定待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度;
根据所述目标划窗长度,确定所述待编译函数的汇编代码。
2.根据权利要求1所述的方法,其特征在于,所述确定待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度,包括:
根据用于指示所述待编译函数的划窗长度的用户编译指令,确定所述待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度。
3.根据权利要求1所述的方法,其特征在于,所述确定待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度,包括:
获取所述待编译函数的函数调用信息;
根据所述函数调用信息,确定所述目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述目标划窗长度,确定所述待编译函数的汇编代码,包括:
根据所述目标划窗长度,进行寄存器分配;
根据所述寄存器分配和所述目标划窗长度,生成所述待编译函数的汇编代码。
5.根据权利要求4所述的方法,其特征在于,所述根据所述寄存器分配和所述目标划窗长度,生成所述待编译函数的汇编代码,包括:
调整所述待编译函数的调用指令,使得所述待编译函数的划窗长度为所述目标划窗长度。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述目标划窗长度,确定所述待编译函数的汇编代码,包括:
根据所述初始划窗长度,生成所述待编译函数的初始汇编代码;
调整所述初始汇编代码以获得目标汇编代码,使得所述目标汇编代码中所述待编码函数的划窗长度为所述目标划窗长度。
7.根据权利要求6所述的方法,其特征在于,所述调整所述初始汇编代码以获得目标汇编代码,使得所述目标汇编代码中所述待编码函数的划窗长度为所述目标划窗长度,包括:
压栈保存所述待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;
将所述待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至所述当前调用子函数的目标滑动寄存器中;
根据所述目标划窗长度,调整所述待编译函数的调用指令;
将所述当前调用子函数的目标返回寄存器中的返回值移动至所述当前调用子函数的初始返回寄存器中;
将所述压栈保存的信息写入所述当前被调用子函数的初始扩展寄存器中。
8.一种处理信息的装置,其特征在于,包括:
第一确定模块,用于确定待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度;
第二确定模块,用于根据所述第一确定模块确定的所述目标划窗长度,确定所述待编译函数的汇编代码。
9.根据权利要求8所述的装置,其特征在于,所述第一确定模块具体用于根据用于指示所述待编译函数的划窗长度的用户编译指令,确定所述待编译函数的目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度。
10.根据权利要求8所述的装置,其特征在于,所述第一确定模块包括:
获取单元,用于获取所述待编译函数的函数调用信息;
确定单元,用于根据所述获取单元获取的所述函数调用信息,确定所述目标划窗长度,所述目标划窗长度不等于所述待编译函数的初始划窗长度。
11.根据权利要求8至10中任一项所述的装置,其特征在于,所述第二确定模块包括:
分配单元,用于根据所述目标划窗长度,进行寄存器分配;
第一生成单元,用于根据所述分配单元分配的寄存器和所述目标划窗长度,生成所述待编译函数的汇编代码。
12.根据权利要求11所述的装置,其特征在于,所述第一生成单元具体用于调整所述待编译函数的调用指令,使得所述待编译函数的划窗长度为所述目标划窗长度。
13.根据权利要求8至10中任一项所述的装置,其特征在于,所述第二确定模块包括:
第二生成单元,用于根据所述初始划窗长度,生成所述待编译函数的初始汇编代码;
调整单元,用于调整所述第二生成单元生成的所述初始汇编代码以获得目标汇编代码,使得所述目标汇编代码中所述待编码函数的划窗长度为所述目标划窗长度。
14.根据权利要求13所述的装置,其特征在于,所述调整单元包括:
保存子单元,用于压栈保存所述待编译函数的当前被调用子函数的初始扩展寄存器中存储的信息;
第一移动子单元,用于将所述待编译函数的当前调用子函数的初始滑动寄存器中的参数值移动至所述当前调用子函数的目标滑动寄存器中;
调整子单元,用于根据所述目标划窗长度,调整所述待编译函数的调用指令;
第二移动子单元,用于将所述当前调用子函数的目标返回寄存器中的返回值移动至所述当前调用子函数的初始返回寄存器中;
读取子单元,用于将所述保存子单元压栈保存的信息写入所述当前被调用子函数的初始扩展寄存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310259561.9A CN103345392B (zh) | 2013-06-26 | 2013-06-26 | 处理信息的方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310259561.9A CN103345392B (zh) | 2013-06-26 | 2013-06-26 | 处理信息的方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345392A true CN103345392A (zh) | 2013-10-09 |
CN103345392B CN103345392B (zh) | 2017-02-22 |
Family
ID=49280190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310259561.9A Expired - Fee Related CN103345392B (zh) | 2013-06-26 | 2013-06-26 | 处理信息的方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345392B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111095198A (zh) * | 2019-06-28 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 用于数据处理的系统和方法 |
WO2022095430A1 (zh) * | 2020-11-06 | 2022-05-12 | 平安科技(深圳)有限公司 | 一种滑动窗口的配置方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020099872A1 (en) * | 2001-01-19 | 2002-07-25 | Vinodha Ramasamy | Allocating registers for use in programming code modification |
US20050132171A1 (en) * | 2003-12-12 | 2005-06-16 | Jayashankar Bharadwaj | Method for register allocation during instruction scheduling |
CN102693210A (zh) * | 2011-03-21 | 2012-09-26 | 中兴通讯股份有限公司 | 一种处理器间传递参数的方法及装置 |
CN102831005A (zh) * | 2012-07-13 | 2012-12-19 | 天津国芯科技有限公司 | 针对C*core处理器寄存器分配的编译方法及编译器 |
-
2013
- 2013-06-26 CN CN201310259561.9A patent/CN103345392B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020099872A1 (en) * | 2001-01-19 | 2002-07-25 | Vinodha Ramasamy | Allocating registers for use in programming code modification |
US20050132171A1 (en) * | 2003-12-12 | 2005-06-16 | Jayashankar Bharadwaj | Method for register allocation during instruction scheduling |
CN102693210A (zh) * | 2011-03-21 | 2012-09-26 | 中兴通讯股份有限公司 | 一种处理器间传递参数的方法及装置 |
CN102831005A (zh) * | 2012-07-13 | 2012-12-19 | 天津国芯科技有限公司 | 针对C*core处理器寄存器分配的编译方法及编译器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111095198A (zh) * | 2019-06-28 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 用于数据处理的系统和方法 |
CN111095198B (zh) * | 2019-06-28 | 2023-06-30 | 创新先进技术有限公司 | 用于数据处理的系统和方法 |
WO2022095430A1 (zh) * | 2020-11-06 | 2022-05-12 | 平安科技(深圳)有限公司 | 一种滑动窗口的配置方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103345392B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5765748B2 (ja) | Rdmaセマンティクスの高速記憶装置へのマッピング | |
CN105808328A (zh) | 任务调度的方法、装置和系统 | |
TW200515189A (en) | System and method for preference application installation and execution | |
CN101196738A (zh) | 基于pc机的开放式数控系统 | |
US20170116037A1 (en) | Resource-aware backfill job scheduling | |
US9471387B2 (en) | Scheduling in job execution | |
KR101601399B1 (ko) | 광대역 무선 주파수 간섭을 완화하는 방법, 장치, 및 시스템 | |
JP6042454B2 (ja) | ユーザ生成によるデータセンターの省電力 | |
CN105808346A (zh) | 一种任务调度方法与装置 | |
US10996860B2 (en) | Method to improve mixed workload performance on storage devices that use cached operations | |
CN103345392A (zh) | 处理信息的方法及其装置 | |
TW201805809A (zh) | 用於異構並行結構的細細微性功率最佳化 | |
CN103543982A (zh) | 一种时钟频率管理方法及移动设备 | |
US11561798B2 (en) | On-the-fly adjustment of issue-write back latency to avoid write back collisions using a result buffer | |
CN103077032A (zh) | 应用程序的操作方法及应用程序的客户端 | |
CN109196484B (zh) | 在具有多个存储器的系统中灵活的优化数据处理 | |
CN111338777B (zh) | 一种低延时高稳定性的自主平台中断响应方法及设备 | |
US9792135B2 (en) | Differential voltage and frequency scaling (DVFS) switch reduction | |
US20160252974A1 (en) | Communicating with an unsupported input device | |
US9411569B1 (en) | System and method for providing a climate data analytic services application programming interface distribution package | |
CN105353985A (zh) | 一种提高虚拟机临时文件读取速度的方法 | |
CN111192063A (zh) | 一种在线客服排队处理方法、装置及电子设备 | |
CN110520842B (zh) | 针对传统应用兼容性的地址空间拆分系统及方法 | |
WO2024060256A1 (en) | Self-evolving and multi-versioning code | |
KR101771351B1 (ko) | 프로그램실행장치, 네트워크장치 및 자원분산 처리방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170222 Termination date: 20180626 |