CN113377466B - 算法执行方法、装置和电子设备 - Google Patents
算法执行方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113377466B CN113377466B CN202110729505.1A CN202110729505A CN113377466B CN 113377466 B CN113377466 B CN 113377466B CN 202110729505 A CN202110729505 A CN 202110729505A CN 113377466 B CN113377466 B CN 113377466B
- Authority
- CN
- China
- Prior art keywords
- stack
- executed
- functions
- function
- processor
- 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.)
- Active
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/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
Abstract
本申请提出了一种算法执行方法、装置和电子设备,涉及终端技术领域。其中,上述算法执行方法包括:首先,确定第一算法,第一算法包含的N个待执行函数中包括至少一对栈切换函数。然后,执行第一算法包含的N个待执行函数,其中,位于栈切换函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行。第一调用栈和第二调用栈中的其中一个位于处理器的外部存储器,另一个位于处理器的内部存储器。从而,能够在保证算法执行效率的基础上,有效提高栈空间利用率,节约内存资源。
Description
【技术领域】
本申请涉及终端技术领域,尤其涉及一种算法执行方法、装置和电子设备。
【背景技术】
算法执行过程涉及函数调用,相关函数的调用参数会保存在调用栈中。算法越复杂、调用的函数越多,所需的栈空间就越大,需要占用的处理器的内存越多。
由于同一处理器会执行多种算法,因此,为了满足复杂算法对栈空间的需求,在目前的技术方案中,通常会把调用栈配置得足够大。但是,在复杂算法较少的情况下,此种方法导致栈空间的利用率低,造成处理器内存资源的浪费。
【发明内容】
本申请实施例提供了一种算法执行方法、装置和电子设备,可在保证算法执行效率的基础上,有效提高栈空间利用率,节约内存资源。
第一方面,本申请实施例提供一种算法执行方法,包括:确定第一算法,所述第一算法包含N个待执行函数,所述N个待执行函数包括至少一对栈切换函数,每对所述栈切换函数包括栈切出函数和栈切入函数,每对所述栈切出函数和所述栈切入函数之间包括至少一个待执行函数;执行所述N个待执行函数,其中,位于每对所述栈切出函数和所述栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行;所述第一调用栈和所述第二调用栈中的其中一个位于处理器的外部存储器,另一个位于所述处理器的内部存储器。
其中一种可能的实现方式中,所述第一算法为处理器配置的各个算法中,任意一个所需栈深大于所述第二调用栈大小的算法。
其中一种可能的实现方式中,所述第二调用栈位于处理器的内部存储器;所述第二调用栈的大小是根据处理器中配置的各个算法所需的栈深确定的。
其中一种可能的实现方式中,根据处理器中配置的各个算法所需的栈深,确定所述第二调用栈的大小,包括:如果所述各个算法所需的栈深的标准差小于标准差阈值,则根据所述各个栈深的平均值确定所述第二调用栈的大小;如果所述各个算法所需的栈深的标准差大于标准差阈值,则根据所述各个栈深的中值确定所述第二调用栈的大小。
其中一种可能的实现方式中,所述栈切出函数和所述栈切入函数的添加位置是根据所述第二调用栈的大小确定的。
其中一种可能的实现方式中,根据所述第二调用栈的大小确定所述栈切出函数和所述栈切入函数的添加位置,包括:根据所述第二调用栈的大小,从所述N个待执行函数中确定出使所述第二调用栈溢出的各个待执行函数;在所述各个待执行函数之前添加所述栈切出函数,在所述各个待执行函数之后添加所述栈切入函数。
第二方面,本申请实施例提供一种算法执行装置,包括:确定模块,用于确定第一算法,所述第一算法包含N个待执行函数,所述N个待执行函数包括至少一对栈切换函数,每对所述栈切换函数包括栈切出函数和栈切入函数,每对所述栈切出函数和所述栈切入函数之间包括至少一个待执行函数;执行模块,用于执行所述N个待执行函数,其中,位于每对所述栈切出函数和所述栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行;所述第一调用栈和所述第二调用栈中的其中一个位于处理器的外部存储器,另一个位于所述处理器的内部存储器。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面所述的方法。
第四方面,本申请实施例提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,能够执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面所述的方法。
以上技术方案中,首先,确定第一算法,第一算法包含的N个待执行函数中包括至少一对栈切换函数。然后,执行第一算法包含的N个待执行函数,其中,位于栈切换函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行。第一调用栈和第二调用栈中的其中一个位于处理器的外部存储器,另一个位于处理器的内部存储器。从而,能够在保证算法执行效率的基础上,有效提高栈空间利用率,节约内存资源。
【附图说明】
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种算法执行设备的结构示意图;
图2为本申请实施例提供的一种算法执行方法的流程图;
图3为本申请实施例提供的一种算法执行方法的场景示意图;
图4为本申请实施例提供的一种算法执行装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
【具体实施方式】
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
本申请实施例可提供一种算法执行设备,该算法执行设备可用于执行本申请实施例提供的算法执行方法。该算法执行设备例如可以是个人计算机(Personal Computer;以下简称:PC)、个人数字助理(Personal Digital Assistant;以下简称:PDA)、平板电脑(Tablet Computer)、手机等,本申请对此不进行限制。
图1为本申请实施例提供的一种算法执行设备的结构示意图。如图1所示,本申请实施例提供的算法执行设备10可包括外部存储器11、处理器12、以及处理器12的内部存储器13。
图2为本申请实施例提供的一种算法执行方法的流程图,如图2所示,上述算法执行方法可以包括:
步骤101,确定第一算法,第一算法包含的N个待执行函数中包括至少一对栈切换函数。
本申请实施例中,算法执行过程中,所需的调用栈可以包括第一调用栈和第二调用栈。其中一个调用栈位于处理器的外部存储器,另一个位于处理器的内部存储器。在一个具体的实现过程中,第一调用栈可位于处理器的外部存储器,第二调用栈可位于处理器的内部存储器。
第一调用栈和第二调用栈的大小,可根据处理器配置的各个算法所需的栈深确定。具体的实现方法将在后续实施例进行说明。
进一步的,第一算法可以是处理器配置的各个算法中,任意一个所需栈深大于第二调用栈大小的算法。第一算法可以包含N个待执行函数。第一算法的N个待执行函数中,可包括至少一对栈切换函数。每对栈切换函数包括栈切出函数和栈切入函数。每对栈切出函数和栈切入函数之间包括至少一个待执行函数。栈切换函数可用于实现第一调用栈和第二调用栈的切换,防止算法执行过程中,出现栈溢出。
步骤102,基于第一调用栈执行每对栈切换函数之间的待执行函数,基于第二调用栈执行其余待执行函数。
本申请实施例中,位于每对栈切出函数和栈切入函数之间的待执行函数可基于第一调用栈执行。其余待执行函数可基于第二调用栈执行。基于第一调用栈执行可以是,待执行函数调用过程中,将待执行函数相关的调用参数、返回地址等,存储于第一调用栈。相应的,基于第二调用栈执行,可以是将待执行函数相关的调用参数、返回地址等存储于第二调用栈。
本申请实施例中,可将调用栈划分为位于不同存储位置的第一调用栈和第二调用栈。进而,在执行第一算法的过程中,可使得位于每对栈切出函数和栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行。由此,可以在保证算法执行效率的基础上,有效提高栈空间的利用率,节约内存资源。
本申请另一实施例中,对确定第一调用栈和第二调用栈的大小的方法作进一步说明。
本申请实施例中,第一调用栈位于处理器的外部存储器,第二调用栈位于处理器的内部存储器。第二调用栈可根据处理器配置的各个算法所需的栈深确定。
具体的,首先,可根据处理器配置的各个算法的函数调用流程,确定各个算法所需的栈深。各个算法所需的栈深指的是,在各个算法执行过程中,占用调用栈的最大深度。
然后,可根据各个算法所需栈深,确定第二调用栈的大小。
可根据实际情况的需要选择具体的确定方法。本申请实施例对几种示例性的确定方法进行说明。
一种可能的实现方式中,可根据各个算法所需栈深的统计特征,确定第二调用栈的大小。
具体的,如果各个算法所需的栈深的标准差小于标准差阈值,可认为各个算法所需栈深的离散性较小。此时,可根据各个栈深的平均值确定第二调用栈的大小。本申请实施例中,根据各个栈深的平均值确定第二调用栈的大小可以是,将各个栈深的平均值确定为第二调用栈的大小。还可以是,将各个栈深的平均值与预设冗余值的和值,确定为第二调用栈的大小。相反的,如果各个算法所需的栈深的标准差大于标准差阈值,可认为各个算法所需栈深的离散型较大。此时,可根据各个栈深的中值确定第二调用栈的大小。根据各个栈深的中值确定第二调用栈的大小可以是,将各个栈深的中值确定为第二调用栈的大小。还可以是,将各个栈深的中值与预设冗余值的和值,确定为第二调用栈的大小。
其中,标准差阈值以及预设冗余值的大小可根据实际情况的需要进行设置。预设冗余值可用于防止第二调用栈溢出。
另一种可能的实现方式中,可根据各个算法所需栈深的最大值,确定第二调用栈的大小。示例性的,可将最大值的二分之一确定为第二调用栈的大小。或者,可将最大值的二分之一与上述预设冗余值的和值,确定为第二调用栈的大小。
通过本申请实施例提供的方法,可以提高第二调用栈的栈空间利用率,减少对处理器内部存储器资源的浪费。
进一步的,由于外部存储器的存储资源相对丰富,因而第一调用栈的大小可根据用户需要进行设置。可选的,根据各个算法所需栈深的最大值,与第一调用栈大小的差值,确定第一调用栈的大小。
本申请另一实施例中,对栈切换函数的添加方法作进一步说明。
根据前述实施例可以理解,处理器配置的各个算法中,部分算法所需栈深大于第二调用栈大小,部分算法所需栈深小于第二调用栈大小。其中,如果算法所需栈深小于第二调用栈的大小,那么该算法可基于第二调用栈执行。无需设置栈切换函数。相反的,如果算法所需栈深大于第二调用栈的大小,那么该算法的执行会使得第二调用栈溢出。此时,需要在该算法中设置栈切换函数。
本申请实施例中,将任意一个所需栈深大于第二调用栈大小的算法称为第一算法。可根据第二调用栈的大小确定第一算法中栈切换函数的添加位置。
首先,可根据第二调用栈的大小,从第一算法包含的N个待执行函数中,确定出使第二调用栈溢出的各个待执行函数。
具体的,可根据第一算法的函数调用流程,确定执行至各个待执行函数处时,所占用的栈深。进而,确定出使第二调用栈溢出的各个待执行函数。
示例性的,假设第一算法包含的待执行函数包括待执行函数A、B、C、D、E以及待执行函数F。具体的函数调用流程为,待执行函数A调用待执行函数B,待执行函数B调用待执行函数C,待执行函数C调用待执行函数D,待执行函数D调用待执行函数E。待执行函数E执行完毕之后,执行待执行函数F。执行至待执行D时,所占用的栈深大于第二调用栈的大小。那么,可将待执行函数D及其调用的待执行函数E确定为使第二调用栈溢出的待执行函数。
然后,在确定出的各个待执行函数之前添加栈切出函数,在各个待执行函数之后添加栈切入函数。
本申请实施例中,栈切出函数可用于使各个待执行函数切换至第一调用栈执行。在执行栈切出函数时,可保存当前堆栈寄存器(stack pointer,SP)指针所在位置。切换至第一调用栈之后,可切换指针到第一调用栈栈底,进而调用相应的栈内参数。栈切入函数用于在各个待执行函数返回之后,切换栈指针,切回之前保存的SP指针位置,继续执行后续的待执行函数。
需要说明的是,由于芯片架构的不同,栈切换函数的具体执行流程可能有所差异。上述仅为一种示例性说明,本申请实施例不对此进行限制。
结合前述实例,如图3所示,执行栈切出函数可使待执行函数D以及待执行函数E切换至第一调用栈302执行。待执行函数D以及待执行函数E返回之后,可执行栈切入函数,切回第二调用栈301。从而,后续的待执行函数F可基于第二调用栈301继续执行。
进一步的,在确定出使第二调用栈溢出的各个待执行函数之后,还可根据各个待执行函数的被调用频率,确定栈切换函数的添加位置。
具体的,如果确定出的待执行函数的被调用频率较高,那么,为了避免在算法执行过程中频繁地进行栈切换,可将栈切出函数添加在前一待执行函数前。
结合前述实例,如果待执行函数D的被调用频率较高,那么,可在待执行函数C之前添加栈切出函数。
本申请实施例中,如果待执行函数F之后还包括其余待执行函数,且其余待执行函数所占用的栈深使得第二调用栈溢出,那么,可继续为相应的待执行函数添加栈切换函数。具体方法与上述相同,不作赘述。
本申请实施例中,可根据第二调用栈的大小,为所需栈深大于第二调用栈大小的算法添加栈切换函数,从而可基于第二调用栈和第一调用栈共同完成算法执行流程。本申请实施例提供的方法可在保证算法执行效率的基础上,提高第二调用栈的利用率,节约处理器的内部存储资源。
图4为本申请实施例提供的一种算法执行装置的结构示意图。如图4所示,上述算法执行装置可以包括:确定模块31以及执行模块32。
确定模块31,用于确定第一算法。第一算法包含N个待执行函数,N个待执行函数包括至少一对栈切换函数,每对栈切换函数包括栈切出函数和栈切入函数。每对栈切出函数和栈切入函数之间包括至少一个待执行函数。
执行模块32,用于执行N个待执行函数。其中,位于每对栈切出函数和栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行。第一调用栈和第二调用栈中的其中一个位于处理器的外部存储器,另一个位于处理器的内部存储器。
一种具体的实现方式中,第一算法为处理器配置的各个算法中,任意一个所需栈深大于第二调用栈大小的算法。
一种具体的实现方式中,上述算法执行装置30还可以包括第一配置模块33。第二调用栈位于处理器的内部存储器。第二调用栈的大小是配置模块33根据处理器中配置的各个算法所需的栈深确定的。
一种具体的实现方式中,第一配置模块33具体用于,如果各个算法所需的栈深的标准差小于标准差阈值,则根据各个栈深的平均值确定第二调用栈的大小;如果各个算法所需的栈深的标准差大于标准差阈值,则根据各个栈深的中值确定第二调用栈的大小。
一种具体的实现方式中,上述算法执行装置30还可以包括第二配置模块34。栈切出函数和栈切入函数的添加位置是第二配置模块34根据第二调用栈的大小确定的。
一种具体的实现方式中,第二配置模块34具体用于,根据第二调用栈的大小,从N个待执行函数中确定出使第二调用栈溢出的各个待执行函数;在各个待执行函数之前添加栈切出函数,在各个待执行函数之后添加栈切入函数。
本申请实施例中,首先,确定模块31用于确定第一算法,第一算法包含N个待执行函数。然后,执行模块32用于执行第一算法包含的N个待执行函数,其中,位于栈切出函数和栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行。第一调用栈和第二调用栈中的其中一个位于处理器的外部存储器,另一个位于处理器的内部存储器。从而,能够在保证算法执行效率的基础上,有效提高栈空间利用率,节约内存资源。
图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,上述电子设备可以包括至少一个处理器;以及与上述处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,上述处理器调用上述程序指令能够执行本申请实施例提供的算法执行方法。
其中,上述电子设备可以为算法执行设备,本实施例对上述电子设备的具体形态不作限定。
图5示出了适于用来实现本申请实施方式的示例性电子设备的框图。图5显示的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:一个或者多个处理器410,存储器430,连接不同系统组件(包括存储器430和处理器410)的通信总线440。
通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read Only Memory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read Only Memory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与通信总线440相连。存储器430可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器430中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本申请所描述的实施例中的功能和/或方法。
电子设备也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过通信接口420进行。并且,电子设备还可以通过网络适配器(图5中未示出)与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide AreaNetwork;以下简称:WAN)和/或公共网络,例如因特网)通信,上述网络适配器可以通过通信总线440与电子设备的其它模块通信。应当明白,尽管图5中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Drives;以下简称:RAID)系统、磁带驱动器以及数据备份存储系统等。
处理器410通过运行存储在存储器430中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例提供的算法执行方法。
本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质存储计算机指令,上述计算机指令使上述计算机执行本申请实施例提供的算法执行方法。
上述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ReadOnly Memory;以下简称:ROM)、可擦式可编程只读存储器(Erasable Programmable ReadOnly Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于个人计算机(Personal Computer;以下简称:PC)、个人数字助理(Personal Digital Assistant;以下简称:PDA)、无线手持设备、平板电脑(Tablet Computer)、手机、MP3播放器、MP4播放器等。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (8)
1.一种算法执行方法,其特征在于,包括:
确定第一算法,所述第一算法包含N个待执行函数,所述N个待执行函数包括至少一对栈切换函数,每对所述栈切换函数包括栈切出函数和栈切入函数,每对所述栈切出函数和所述栈切入函数之间包括至少一个待执行函数;
执行所述N个待执行函数,其中,位于每对所述栈切出函数和所述栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行;
所述第一调用栈和所述第二调用栈中的其中一个位于处理器的外部存储器,另一个位于所述处理器的内部存储器;
所述第二调用栈位于处理器的内部存储器,所述第二调用栈的大小是根据处理器中配置的各个算法所需的栈深确定的,包括:
如果所述各个算法所需的栈深的标准差小于标准差阈值,则根据所述各个栈深的平均值确定所述第二调用栈的大小;
如果所述各个算法所需的栈深的标准差大于所述标准差阈值,则根据所述各个栈深的中值确定所述第二调用栈的大小。
2.根据权利要求1所述的方法,其特征在于,所述第一算法为处理器配置的各个算法中,任意一个所需栈深大于所述第二调用栈大小的算法。
3.根据权利要求1所述的方法,其特征在于,所述栈切出函数和所述栈切入函数的添加位置是根据所述第二调用栈的大小确定的。
4.根据权利要求3所述的方法,其特征在于,根据所述第二调用栈的大小确定所述栈切出函数和所述栈切入函数的添加位置,包括:
根据所述第二调用栈的大小,从所述N个待执行函数中确定出使所述第二调用栈溢出的各个待执行函数;
在所述各个待执行函数之前添加所述栈切出函数,在所述各个待执行函数之后添加所述栈切入函数。
5.一种算法执行装置,其特征在于,包括:
确定模块,用于确定第一算法,所述第一算法包含N个待执行函数,所述N个待执行函数包括至少一对栈切换函数,每对所述栈切换函数包括栈切出函数和栈切入函数,每对所述栈切出函数和所述栈切入函数之间包括至少一个待执行函数;
执行模块,用于执行所述N个待执行函数,其中,位于每对所述栈切出函数和所述栈切入函数之间的待执行函数基于第一调用栈执行,其余待执行函数基于第二调用栈执行;
所述第一调用栈和所述第二调用栈中的其中一个位于处理器的外部存储器,另一个位于所述处理器的内部存储器;
所述装置还包括第一配置模块,所述第二调用栈位于处理器的内部存储器,所述第二调用栈的大小是所述第一配置模块根据处理器中配置的各个算法所需的栈深确定的;
所述第一配置模块具体用于,如果所述各个算法所需的栈深的标准差小于标准差阈值,则根据所述各个栈深的平均值确定所述第二调用栈的大小;
如果所述各个算法所需的栈深的标准差大于所述标准差阈值,则根据所述各个栈深的中值确定所述第二调用栈的大小。
6.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至4任一所述的方法。
7.一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,能够执行如权利要求1至4任一所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729505.1A CN113377466B (zh) | 2021-06-29 | 2021-06-29 | 算法执行方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729505.1A CN113377466B (zh) | 2021-06-29 | 2021-06-29 | 算法执行方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377466A CN113377466A (zh) | 2021-09-10 |
CN113377466B true CN113377466B (zh) | 2022-11-25 |
Family
ID=77579940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110729505.1A Active CN113377466B (zh) | 2021-06-29 | 2021-06-29 | 算法执行方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377466B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729523A (zh) * | 2002-12-19 | 2006-02-01 | 皇家飞利浦电子股份有限公司 | 双堆栈光学数据存储介质及其使用 |
CN103294517A (zh) * | 2012-02-22 | 2013-09-11 | 国际商业机器公司 | 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7124251B2 (en) * | 2002-06-24 | 2006-10-17 | Microsoft Corporation | Stack allocation system and method |
CN101847096B (zh) * | 2010-02-05 | 2012-12-12 | 中国科学院计算技术研究所 | 包含栈变量函数的优化方法 |
US8769233B2 (en) * | 2011-06-14 | 2014-07-01 | International Business Machines Corporation | Adjusting the amount of memory allocated to a call stack |
CN107643943A (zh) * | 2016-07-20 | 2018-01-30 | 大唐移动通信设备有限公司 | 一种任务栈的管理方法及装置 |
CA3073525C (en) * | 2017-08-24 | 2022-07-05 | Lutron Technology Company Llc | Stack safety for independently defined operations |
CN112131032B (zh) * | 2020-08-28 | 2022-02-11 | 北京大学 | 一种基于混合内存系统的故障快速恢复方法 |
CN112182559A (zh) * | 2020-10-09 | 2021-01-05 | Oppo广东移动通信有限公司 | 堆栈溢出检测方法、装置、电子设备和存储介质 |
CN112631510B (zh) * | 2020-12-02 | 2023-05-12 | 海光信息技术股份有限公司 | 堆栈区域扩充的方法、装置及硬件平台 |
-
2021
- 2021-06-29 CN CN202110729505.1A patent/CN113377466B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729523A (zh) * | 2002-12-19 | 2006-02-01 | 皇家飞利浦电子股份有限公司 | 双堆栈光学数据存储介质及其使用 |
CN103294517A (zh) * | 2012-02-22 | 2013-09-11 | 国际商业机器公司 | 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置 |
Non-Patent Citations (2)
Title |
---|
一种组合式基于调用栈的程序切片方法;戚晓芳等;《东南大学学报(自然科学版)》;20111120(第06期);全文 * |
基于栈结构恢复的固件栈溢出漏洞相似性检测;王工博等;《信息工程大学学报》;20190415(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113377466A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110764906B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN107635078B (zh) | 游戏控制方法及设备 | |
CN110865888A (zh) | 一种资源加载方法、装置、服务器及存储介质 | |
EP2869190A1 (en) | Method for starting activity of mobile terminal and the mobile terminal | |
EP3171274A1 (en) | Resource leak detecting method, device, and system | |
CN110460647B (zh) | 网络节点的调度方法、装置、电子设备和存储介质 | |
US8726287B2 (en) | Method for reducing inter-process communication latency | |
WO2019076254A1 (zh) | 游戏应用控制方法及设备 | |
CN113377466B (zh) | 算法执行方法、装置和电子设备 | |
CN112817428A (zh) | 任务运行方法、装置、移动终端和存储介质 | |
CN112558872A (zh) | 数据处理方法和装置、存储介质和电子设备 | |
CN111625180B (zh) | 数据写入方法及装置、存储介质 | |
CN116467235A (zh) | 一种基于dma的数据处理方法、装置、电子设备及介质 | |
CN108804258A (zh) | 数据恢复方法、装置、移动终端和存储介质 | |
CN114546171A (zh) | 数据分发方法、装置、存储介质及电子设备 | |
CN113379038A (zh) | 数据处理方法和电子设备 | |
CN115599287A (zh) | 一种数据处理方法、装置及电子设备和存储介质 | |
US20150178186A1 (en) | Method and apparatus for swapping in data to memory | |
CN112306371A (zh) | 存储管理的方法、设备和计算机程序产品 | |
CN113535660B (zh) | 安卓日志存储方法和装置 | |
CN111522606B (zh) | 一种数据处理的方法、装置、设备及存储介质 | |
US11431349B2 (en) | Method, electronic device and computer program product for processing data | |
CN113986134B (zh) | 存储数据的方法、读取数据的方法和装置 | |
CN112732568B (zh) | 一种系统日志获取方法、装置、存储介质及终端 | |
CN111046378B (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 |