一种预取函数段的方法以及网络设备技术

技术编号:39239634 阅读:12 留言:0更新日期:2023-10-30 11:52
一种预取函数段的方法包括:接收启动程序指令后,根据启动程序指令获取加载脚本,根据加载脚本将包括第一函数段和第二函数段的动态库文件加载到内存,执行第一函数段以及从内存预取第二函数段。第一函数段调用第二函数段的次数大于第一函数段调用其他函数段的次数,将对应不同函数库的第一函数段和第二函数段根据函数调用次数放在内存中的相邻位置,使得预取库间函数段时能够提高缓存命中率,提高程序处理效率。本申请还提供一种能够实现上述方法的网络设备。法的网络设备。法的网络设备。

【技术实现步骤摘要】
一种预取函数段的方法以及网络设备


[0001]本申请涉及计算机
,尤其涉及一种预取函数段的方法以及网络设备。

技术介绍

[0002]函数库是具有一定功能的函数的集合。根据业务需求可以建立不同类型的函数库。
[0003]目前有一种预取函数段的方法大致如下:接收启动程序指令后,将同一函数库的文件预先加载到内存的一个存储空间,按照程序的函数顺序执行当前函数段以及从内存中预取下一个函数段。
[0004]在跨库调用函数时由于被调用函数段与当前函数段处于不同函数库,因此预取的下一个函数段不是被调用函数段,这样会出现未命中L1缓存的情况,此时需要重新在内存中查找被调用函数段,影响程序处理效率。

技术实现思路

[0005]有鉴于此,本申请提供一种预取函数段的方法,该方法可以将来自不同函数库且调用次数高的函数段在内存中连续排列,减少跨库调用导致的未命中缓存的情况,从而提高预取函数段的命中率,由此提高程序处理效率。本申请还提供一种能够实现上述方法的网络设备。
[0006]第一方面提供一种预取函数段的方法,在该方法中,接收启动程序指令后,根据启动程序指令获取加载脚本,根据加载脚本将包括第一函数段和第二函数段的动态库文件加载到内存,执行第一函数段以及从内存预取第二函数段。其中,加载脚本包括第一函数段的地址偏移量和第二函数段的地址偏移量,第一函数段对应的函数和第二函数段对应的函数来自不同的函数库。第二函数段的地址偏移量等于第二函数段的地址偏移量与第一函数段的存储空间大小之和,即表明第一函数段和第二函数段存储在内存的相邻位置。
[0007]由于第一函数段调用第二函数段的次数大于第一函数段调用其他函数段的次数而且第一函数段和第二函数段在内存中相邻,因此可以提高库间函数段的预取命中率,降低未命中缓存的情况,从而提高程序处理效率。
[0008]在第一种可能的实现方式中,上述方法还包括:在加载脚本还包括第三函数段的地址偏移量和第四函数段的地址偏移量,以及动态库文件还包括第三函数段和第四函数段的情况下,执行第三函数段以及从内存预取第四函数段。第三函数段对应的函数和第四函数段对应的函数来自同一函数库。第四函数段的地址偏移量等于第四函数段的地址偏移量与第四函数段的存储空间大小之和,即表明第三函数段和第四函数段存储在内存的相邻位置。由于第三函数段调用第四函数段的次数大于第三函数段调用其他函数段的次数且第三函数段和第四函数段在内存中相邻,因此可以提高预取库内函数段的命中率,提高程序处理效率。
[0009]基于第一方面或第一种可能的实现方式,在第二种可能的实现方式中,在接收启
动程序指令之前,上述方法还包括:获取程序跟踪文件后,根据程序跟踪文件生成调用关系图,接着根据调用关系图确定包括第一函数段和第二函数段的第一函数段序列,根据第一函数段序列的序列信息创建链接脚本,以及将程序编译为多个函数段,再根据链接脚本从多个函数段中获取第一函数段序列;生成包含第一函数段序列的动态库文件。调用关系图包括函数调用顺序和函数调用次数,链接脚本包括第一函数段序列的序列信息,序列信息包括序列标识,序列中函数段的标识和函数段的次序。依此可以生成包括第一函数段序列的动态库文件。第一函数段序列包括对应不同函数库的函数段,同理可以将全部或部分不同函数库的函数段按照函数调用次数和函数调用顺序组成函数段序列,由此可推知动态库文件可以包括多个目标函数段序列,每个目标函数段序列对应的函数来自至少两个函数库。
[0010]基于第一方面或第一种可能的实现方式,在第三种可能的实现方式中,获取程序跟踪文件后,根据程序跟踪文件生成调用关系图,再根据调用关系图确定第二函数段序列,根据第一函数段序列的序列信息和第二函数段序列的序列信息创建链接脚本。这样提供了另一种创建链接脚本的方法。
[0011]基于第一方面或第一种可能的实现方式,在第四种可能的实现方式中,在根据启动程序指令获取加载脚本之前,上述方法还包括:获取程序跟踪文件后,根据程序跟踪文件生成调用关系图,再根据调用关系图确定包括第一函数段和第二函数段的第一函数段序列;为第一函数段序列的每个函数段分配地址偏移量;根据第一函数段序列中每个函数段的地址偏移量创建加载脚本。调用关系图包括函数调用顺序和函数调用次数。这样提供了一种创建加载脚本的方法。
[0012]基于第四种可能的实现方式,在第五种可能的实现方式中,根据程序跟踪文件生成调用关系图之后,从调用关系图中选取多个目标函数,为目标函数对应的目标函数段分配地址偏移量,根据第一函数段序列中每个函数段的地址偏移量和目标函数段的地址偏移量创建加载脚本。多个目标函数中任意两个目标函数不具有函数调用关系且每个目标函数的被调用次数大于或等于预设阈值,目标函数段与目标函数段的地址偏移量包括的缓存集映射比特一一对应。缓存集映射比特用于映射缓存集。目标函数段可以理解为与其他热函数不存在调用关系的热函数段,依此可以将不存在调用关系的热函数段加载到不同的缓存集,从而减少缓存冲突,提高缓存命中率。
[0013]基于第一方面或第一种可能的实现方式,在第六种可能的实现方式中,在根据启动程序指令获取加载脚本之前,上述方法还包括:获取程序跟踪文件后,根据程序跟踪文件生成调用关系图,再根据调用关系图确定第一函数段序列和第二函数段序列;为第一函数段序列和第二函数段序列中的每个函数段分配地址偏移量;根据第一函数段序列中每个函数段的地址偏移量以及第二函数段序列中每个函数段的地址偏移量创建加载脚本。这样提供了另一种创建加载脚本的方法。
[0014]第二方面提供一种网络设备,该网络设备包括接收单元,加载单元和处理单元,接收单元用于接收启动程序指令;加载单元用于根据启动程序指令获取加载脚本;根据加载脚本将包括第一函数段和第二函数段的动态库文件加载到内存;处理单元用于执行第一函数段以及从内存预取第二函数段。其中,加载脚本包括第一函数段的地址偏移量和第二函数段的地址偏移量,第一函数段对应的函数和第二函数段对应的函数来自不同的函数库,
第一函数段调用第二函数段的次数大于第一函数段调用其他函数段的次数,第二函数段的地址偏移量是第一函数段的地址偏移量与第一函数段的存储空间大小之和。该网络设备能够根据函数调用次数将对应不同函数库的函数段放在内存的相邻位置,从而提高预取库间函数段的命中率。
[0015]在第二方面的第一种可能的实现方式中,加载脚本还包括第三函数段的地址偏移量和第四函数段的地址偏移量,动态库文件还包括第三函数段和第四函数段;处理单元还用于执行第三函数段以及从内存预取第四函数段。其中,第三函数段对应的函数和第四函数段对应的函数来自同一函数库,第三函数段调用第四函数段的次数大于第三函数段调用其他函数段的次数,第四函数段的地址偏移量是第三函数段的地址偏移量与第三函数段的存储空间大小之和。这样的网络设备不仅能够提高预取库间函数段的命中率,能够提高预取库内函数段的命中率。
[0016]在第二种可能的实现方式中,处理单元还用于获取程序跟踪文件;根据程序跟踪文件生成本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种预取函数段的方法,其特征在于,包括:接收启动程序指令;根据所述启动程序指令获取加载脚本,所述加载脚本包括第一函数段的地址偏移量和第二函数段的地址偏移量,所述第二函数段的地址偏移量等于所述第一函数段的地址偏移量与所述第一函数段的存储空间大小之和,所述第一函数段对应的函数和所述第二函数段对应的函数来自不同的函数库,所述第一函数段调用所述第二函数段的次数大于所述第一函数段调用其他函数段的次数;根据所述加载脚本将包括第一函数段和第二函数段的动态库文件加载到内存;执行所述第一函数段以及从所述内存预取所述第二函数段。2.根据权利要求1所述的方法,其特征在于,所述加载脚本还包括第三函数段的地址偏移量和第四函数段的地址偏移量,所述第三函数段对应的函数和所述第四函数段对应的函数来自同一函数库,所述第三函数段调用所述第四函数段的次数大于所述第三函数段调用其他函数段的次数,所述第四函数段的地址偏移量等于所述第四函数段的地址偏移量与第四函数段的存储空间大小之和;所述动态库文件还包括所述第三函数段和所述第四函数段;所述方法还包括:执行所述第三函数段以及从内存预取所述第四函数段。3.根据权利要求1或2所述的方法,其特征在于,在所述接收启动程序指令之前,所述方法还包括:获取程序跟踪文件;根据所述程序跟踪文件生成调用关系图,所述调用关系图包括函数调用顺序和函数调用次数;根据所述调用关系图确定包括所述第一函数段和所述第二函数段的第一函数段序列;根据所述第一函数段序列的序列信息创建所述链接脚本;将程序编译为多个函数段;根据链接脚本从所述多个函数段中获取所述第一函数段序列;生成包含所述第一函数段序列的动态库文件。4.根据权利要求1或2所述的方法,其特征在于,在所述根据所述启动程序指令获取加载脚本之前,所述方法还包括:获取程序跟踪文件;根据所述程序跟踪文件生成调用关系图,所述调用关系图包括函数调用顺序和函数调用次数;根据所述调用关系图确定包括所述第一函数段和所述第二函数段的第一函数段序列;为所述第一函数段序列的每个函数段分配地址偏移量;根据所述第一函数段序列中每个函数段的地址偏移量创建加载脚本。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:从所述调用关系图中选取多个目标函数,所述多个目标函数中任意两个目标函数不具有函数调用关系且每个目标函数的被调用次数大于或等于预设阈值;为所述目标函数对应的目标函数段分配地址偏移量,所述目标函数段与所述地址偏移
量包括的缓存集映射比特一一对应;所述根据所述第一函数段序列中每个函数段的地址偏移量创建加载脚本包括:根据所述第一函数段序列中每个函数段的地址偏移量和所述目标函数段的地址偏移量创建加载脚本。6.一种网络设备,其特征在于,包括:接收单元,用于接收启动程序指令;...

【专利技术属性】
技术研发人员:陈辉陈运生陈计亮白崇吉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1