[发明专利]一种收集方法及装置有效
申请号: | 201310695010.7 | 申请日: | 2013-12-17 |
公开(公告)号: | CN103729244A | 公开(公告)日: | 2014-04-16 |
发明(设计)人: | 谢江帆;张建华;李继忠;翟季冬 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 广州三环专利代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 收集 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种收集方法及装置。
背景技术
随着半导体工艺的发展,在过去的40多年中,芯片单位面积晶体管数量按照摩尔定律揭示的规律,以指数级速度增长。持续增长的晶体管数量使处理器架构师能够设计更多、更复杂的组件,提高处理器性能。统计数据表明,处理器性能在1980年至1986年间,大约每年增长25%,1986年至2004年,每年增长52%,2004年至今,每年增长20%。在过去的30年中,处理器性能的增长超过了10000倍。相比较而言,内存性能增长缓慢。1980年至今,内存性能每年增长速度大约为7%。在过去的30年,内存性能增长不足10倍,严重滞后于处理器的性能。并且由于增长速度的差异依旧存在并保持相对稳定,内存和处理器之间的性能差距仍将持续增大。因此内存已经成为计算机系统整体性能的瓶颈之一。
现代计算机系统广泛采用缓存技术缓解处理器和内存之间的性能差异。缓存能够有效缓解处理器对内存数据迫切需求的原理在于,程序访问数据的模式并不是随机的。在一段时间中,程序倾向于集中访问全体数据中的一小部分,这一特性被称为程序的局部性。程序的局部性包含两个方面特性,时间局部性和空间局部性,具体地,时间局部性即在某一时刻,如果内存中的某一位置被程序访问到,那么同一位置在不久的将来很可能被程序再次访问到。数据访问序列对同一内存位置具有访问上的时间邻近性。时间局部性对于缓存的意义在于,当前使用到的数据应当从内存复制到缓存中。当该数据下次被访问时,处理器可以自缓存中快速获得数据,避免向内存发出请求。空间局部性即在某一时刻,如果内存中的某一位置被程序访问到,那么与该内存位置临近的位置在不久的将来很可能被程序访问到。空间上邻近的数据往往总是同时被使用。空间局部性对缓存的意义在于,与当前使用到的数据邻近的数据应当从内存复制到缓存中。当这些数据被访问时,处理器可以自缓存中快速获得数据,避免向内存发出请求。因此通过分析程序的时间局部性和空间局部性,可以有效发现程序中影响程序访存性能的瓶颈,帮助优化程序性能,提高程序效率。
在现有技术中,目前获取程序的访问局部性,主要通过动态插桩技术获取。该方法主要是在程序内部插入用户代码,然后在程序运行时定期中断程序的执行,获取程序的访存信息,包括各级缓存访问缺失率、内存带宽利用率等。但是由于所有信息都需要动态获取,收集过程的开销很大;且每次收集时,需要中断程序的执行,导致程序的执行时间变长甚至程序行为发生变化,因此收集的程序访存行为和真实程序的访存行为可能存在差异。
发明内容
本发明实施例所要解决的技术问题在于,提供一种收集方法及装置。以解决收集程序的局部性信息结果不准确且收集过程中开销大的问题。
为了解决上述技术问题,本发明实施例第一方面提供了一种收集方法,包括:
构建程序中每个过程的控制流图和数据流图,识别每个过程的变量访问语句,收集每个过程中的变量访问语句的程序局部性信息;
构建程序的调用流图,根据所述调用流图对所述程序进行遍历,收集各个变量访问语句的访问顺序和亲和性关系。
在第一方面的第一种可能的实现方式中,在所述各个变量访问语句插桩函数,以便在所述程序运行时收集所述各个变量访问语句的访问频率;
以预设频率读取所述程序的函数栈,输出所述程序每次执行时的函数调用路径;
对所述函数调用路径进行排序,获取所述程序的关键路径;
采用处理器计数器技术,收集按照各个变量访问语句访问顺序生成的路径上的访存信息。
结合第一方面或结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在构建程序的调用流图,根据所述调用流图对所述程序进行遍历之后,还包括:
将所述每个过程中的变量访问语句的程序局部性信息传输至所有过程。
结合第一方面或结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述变量访问语句包括全局变量访问语句、预先标记的变量访问语句或堆内存访问语句。
在第一方面的第四种可能的实现方式中,所述根据所述调用流图对所述程序进行遍历,包括:
根据所述调用流图对所述程序进行自顶向下或自底向上的遍历。
相应地,本发明实施例第二方面还提供了一种收集装置,包括:
构建单元,用于构建程序中每个过程的控制流图和数据流图以及构建程序的调用流图;
识别单元,用于识别每个过程的变量访问语句;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310695010.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:注塑模腔体件内环形倒扣脱模机构
- 下一篇:建筑用硅酮结构密封胶试样制作模具