函数调用方法、装置和终端设备制造方法及图纸

技术编号:11490337 阅读:102 留言:0更新日期:2015-05-21 11:18
本发明专利技术实施例提供了一种函数调用方法、装置和终端设备,涉及计算机技术领域,所述方法包括:当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;根据所述调用函数指令调用第二函数;当所述第二函数运行结束时,将所述第一函数的数据和指令解锁。本发明专利技术通过在发生函数调用时,将第一函数的数据和指令锁定在缓存中,当第二函数运行结束时,再将该第一函数的数据和指令解锁,避免了在发生函数调用时该第一函数的数据和指令在该缓存中被替换的问题,减小了后续返回第一函数时的高速缓存缺失率,提高了程序运行速度和系统性能。

【技术实现步骤摘要】
【国外来华专利技术】函数调用方法、装置和终端设备
本专利技术涉及计算机
,特别涉及一种函数调用方法、装置和终端设备。
技术介绍
函数的调用和被调用是软件编程时常用的方法,通过调用函数可以实现模块化程序设计,使程序结构更加清晰,并且每个模块都可以独立设计,便于实现大程序。在函数运行时,将函数的数据和指令从主存加载到缓存,当在运行当前函数的过程中发生函数调用时,PC(ProgramCounter,程序计数器)指针从主调函数跳向被调用函数,开始运行被调用函数,被调用函数在运行时,需要将被调用函数的数据和指令加载到缓存中。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:在加载被调用函数的数据和指令的过程或被调用函数的运行过程中,主调函数的数据和指令均可能会被替换,当被调用函数运行结束,PC指针返回到主调函数时,可能出现缓存缺失(Cachemiss),需要重新将主调函数的数据和指令加载到缓存,降低了程序运行的速度,影响操作性能,提高了CPU的负载率。
技术实现思路
为了解决出现缓存缺失的问题,本专利技术实施例提供了一种函数调用的方法、装置和终端设备。所述技术方案如下:第一方面,提供了一种函数调用方法,所述方法包括:当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;根据所述调用函数指令调用第二函数;当所述第二函数运行结束时,将所述第一函数的数据和指令解锁。假设上述为第一方面的第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,所述当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中,包括:当接收到调用函数指令,所述第一函数包含锁定标识时,将所述第一函数的数据和指令锁定在所述缓存中;或,当接收到调用函数指令,所述第一函数包含锁定指令时,将所述第一函数的数据和指令锁定在所述缓存中。在第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,所述当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中之前,所述方法还包括:当所述第一函数的调用次数超过预设阈值时,确定所述第一函数为频繁调用函数;在所述第一函数中设置锁定标识,所述锁定标识用于指示编译器在接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;或,在所述第一函数的指令中嵌入锁定指令,所述锁定指令用于将第一函数的数据和指令锁定在缓存中。结合上述任一可能的实现方式,本专利技术实施例的第四种可能实现方式中,所述当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中包括:当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和当前PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址。在第一种、第二种和第三种任一项可能的实施方式作为基础而提供的第五种可能的实施方式中,所述当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中包括:当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和第一PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址,所述第一PC指针为当前PC指针与预设间隔之和。第二方面,提供了一种函数调用装置,所述装置包括:锁定模块,用于当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;调用函数模块,用于根据所述调用函数指令调用第二函数;解锁模块,用于当所述第二函数运行结束时,将所述第一函数的数据和指令解锁。假设上述为第二方面的第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,所述锁定模块包括:第一锁定单元,用于当接收到调用函数指令,所述第一函数包含锁定标识时,将所述第一函数的数据和指令锁定在所述缓存中;第二锁定单元,用于当接收到调用函数指令,所述第一函数包含锁定指令时,将所述第一函数的数据和指令锁定在所述缓存中。在第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,所述装置还包括:频繁函数确定模块,用于当所述第一函数的调用次数超过预设阈值时,确定所述第一函数为频繁调用函数;标识设置模块,用于在所述第一函数中设置锁定标识,所述锁定标识用于指示编译器在接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中;指令嵌入模块,用于在所述第一函数的指令中嵌入锁定指令,所述锁定指令用于将所述第一函数的数据和指令锁定在所述缓存中。结合上述任一可能的实现方式,本专利技术实施例的第四种可能实现方式中,所述锁定模块包括:第三锁定单元,用于当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和当前PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址。在第一种、第二种和第三种任一项可能的实施方式作为基础而提供的第五种可能的实施方式中,所述锁定模块包括:第四锁定单元,用于当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和第一PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址,所述第一PC指针为当前PC指针与预设间隔之和。第三方面,提供了一种终端设备,包括:处理器和存储器,所述处理器和所述存储器耦合,处理器,用于当接收到调用函数指令时,将第一函数的数据和指令锁定在所述存储器中;所述处理器,还用于根据所述调用函数指令调用第二函数;所述处理器,还用于当所述第二函数运行结束时,将所述存储器中锁定的所述第一函数的数据和指令解锁。本专利技术实施例提供的技术方案的有益效果是:本专利技术实施例提供的方法、装置和终端设备,通过当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;根据该调用函数指令调用第二函数;当该第二函数运行结束时,将该第一函数的数据和指令解锁。采用本专利技术的技术方案,通过在发生函数调用时,将第一函数的数据和指令锁定在缓存中,当第二函数运行结束时,再将该第一函数的数据和指令解锁,避免了在发生函数调用时该第一函数的数据和指令在该缓存中被替换的问题,减小了后续返回第一函数时的高速缓存缺失率,提高了程序运行速度和系统性能。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种函数调用方法的流程图;图2是本专利技术实施例提供的一种函数调用方法的流程图;图3是本专利技术实施例提供的一种函数锁定示意图;图4是本专利技术实施例提供的一种函数调用装置的结构示意图;图5是本专利技术实施例提供的一种终端设备的结构方框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。本专利技术实施例中,终端设备指向用户提供语音和/或数据连通性的设备,包括无线终端或有线终端。无线终端可以是具有无线连接功能的手持式设备、本文档来自技高网...
函数调用方法、装置和终端设备

【技术保护点】
一种函数调用方法,其特征在于,所述方法包括:当接收到调用函数指令时,将第一函数的数据和指令锁定在缓存中;根据所述调用函数指令调用第二函数;当所述第二函数运行结束时,将所述第一函数的数据和指令解锁。

【技术特征摘要】
【国外来华专利技术】1.一种函数调用方法,其特征在于,所述方法包括:在开始运行第一函数时,将所述第一函数的数据和指令加载到缓存中;在所述第一函数的运行过程中,当接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中;根据所述调用函数指令调用第二函数,在运行所述第二函数时,将所述第二函数的数据和指令加载到所述缓存中;当所述第二函数运行结束时,将所述第一函数的数据和指令解锁。2.根据权利要求1所述的方法,其特征在于,所述当接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中,包括:当接收到调用函数指令,所述第一函数包含锁定标识时,将所述第一函数的数据和指令锁定在所述缓存中;或,当接收到调用函数指令,所述第一函数包含锁定指令时,将所述第一函数的数据和指令锁定在所述缓存中。3.根据权利要求1所述的方法,其特征在于,所述当接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中之前,所述方法还包括:当所述第一函数的调用次数超过预设阈值时,确定所述第一函数为频繁调用函数;在所述第一函数中设置锁定标识,所述锁定标识用于指示编译器在接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中;或,在所述第一函数的指令中嵌入锁定指令,所述锁定指令用于将所述第一函数的数据和指令锁定在所述缓存中。4.根据权利要求1-3任一项所述的方法,其特征在于,所述当接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中包括:当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和当前PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址。5.根据权利要求1-3任一项所述的方法,其特征在于,所述当接收到调用函数指令时,将所述第一函数的数据和指令锁定在所述缓存中包括:当接收到调用函数指令时,将所述第一函数在所述缓存中的前栈帧指针和堆栈指针之间缓存的数据锁定在所述缓存中,并将辅助PC指针和第一PC指针对应的地址之间缓存的指令锁定在所述缓存中,所述辅助PC指针用于记录所述第一函数的入口地址,所述第一PC指针为当前PC指针与预设间隔之和。6.一种函数调用装置,其特征在于,所述装置包括:加载模块,用于在开始运行第一函数时,将所述第一函数的数据和指令加载到缓存中;锁定模块,用于在所述第一函数的运行过程中,当接收到调用函数指令时,将所述第一函数的数据和指令锁定在...

【专利技术属性】
技术研发人员:毕波刘强
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1