一种多核环境并行程序Cache性能在线获取系统及方法
【专利摘要】本发明公开了一种多核环境并行程序Cache性能在线获取系统及方法,在多核情况下,并行程序运行时,Cache性能的在线获取,通过使用二进制代码插桩法与模拟模块的结合,比传统的基于硬件性能计数器的性能分析器统的并行程序分析方法采集到更加详细的Cache性能指标。并可以通过将这些数据反馈给程序员来帮助程序员修改并提高其程序的性能。整个方法可以划分为三个主要阶段:访存信息获取,Cache行为模拟以及性能信息统计及可视化。本发明能够在线的详细的处理Cache的性能数据。
【专利说明】一种多核环境并行程序Cache性能在线获取系统及方法
【技术领域】
[0001]本发明涉及计算机程序性能设计与分析中的多核情况下并行程序的高速缓存性能的在线处理方法。
【背景技术】
[0002]高速缓冲存储器(Cache)简称高速缓存,是存在于中央处理器与内存之间的存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比内存高得多,接近于中央处理器的速度。
[0003]随着处理器的结构向着多核甚至众核发展,多核处理器的性能越来越成为未来计算机系统的决定性因素。运行在多核处理器上的程序以并行程序为主,并行程序能否有效的利用多核处理器上丰富的硬件资源成为影响程序性能的关键,这就对并行程序的设计提出了更高的要求。然而,由于并行程序本身的特点,其执行过程的复杂性以及不可预测性,使得并行程序不一定能够达到预期的加速要求。并且,随着处理器的核数越来越多,并行程序的线程也越来越多,不同线程之间会产生交互作用,这种交互作用可以是线程间对资源的竞争或共享,一般发生在共享资源上,对程序的性能产生重要的影响。而Cache正是处理器上一种最重要的共享资源。
[0004]现有的Cache性能分析更多的关注程序局部性,统计的是Cache缺失率和命中率,这是远远不够的。获取更详尽的Cache性能数据十分困难,利用性能计数器等方法所提供的Cache性能事件局限于缺失率以及一些指令信息,不能够发现到底是什么原因引起的缺失率。另外,多核处理器上存在一些特殊的Cache行为,针对单核处理器的Cache性能分析不能很好的移植到多核架构上。因此,我们希望能够通过采用一种新的方法对并行程序Cache性能进行深入的分析来确定影响程序访存性能的原因,从而指导程序设计者优化程序。
[0005]并行程序性能分析工具在帮助程序设计者迅速确定性能瓶颈上发挥了重要的作用。国内外已有一些对程序Cache性能进行分析的工具,也有一些研究关注于程序的Cache行为以及其对程序性能的影响。
[0006]论文[IntelCorp.VTune (TM) Performance Analyzer for Linux [R].USA:1ntelCorp, 2008]和[Performance Analysis Tools:A Look at VTune]提出了一种 Cache 不命中方程。主要分析程序的源代码,并结合存储层次结构的模型参数,得到一组方程,解这组方程就能够得到循环等代码的Cache缺失次数等指标。这种方法可以在循环替换,循环分块等优化方法中被用于选择参数等。CME的优点是分析速度快,但是,这种方法分析的精确性同模型的建立相关,不能保证,而且这种方法仅仅是对缺失情况作了建模,不能够得到更多的Cache性能信息。
[0007]论文[J.Tuck et.al.Scalable Cache Miss Handling for High Memory-LevelParallelism.1n MICR039,pages409 - 422, Washington, DC, USA, 2006.1EEE ComputerSociety.]提出了一款在线动态程序性能分析工具Vtune,它利用取样的方式获取程序的性能信息,取样是指周期性的中断处理器的执行并获取程序执行的上下文。原理是在一定数量的事件发生后中断处理器,同时将运行信息存储到一个缓冲区中去。当缓冲区满了之后,将信息复制到文件中。保存好后,再继续执行。取样的开销较小,时间开销不到5%,而且对程序的指令没有特殊的要求。在分析程序的Cache性能方面,Vtune提供了许多性能参考指标。如各级Cache缺失数,各级Cache访问数等。利用Vtune分析Cache行为的优点是,提供良好的可视化界面,能够从多种视图查看程序的执行情况,例如以函数划分,以线程划分等等,方便程序设计者定位瓶颈。但Vtune的运行本身影响了源程序的行为,另外Vtune没有给出程序缺失率高的原因,对程序在Cache上的交互作用也没有进行分析。
[0008]论文[C.Xu, X.Chen, R.P.Dick, Z.M.Ma0.Cache contention and applicationperformance prediction for Mult1-Core systems[A].1n Proceedings ofInternational Symposium on Performance Analysis of Systems and Software(ISPASS)[C], White Plains,USA,2010:76-86]提出了一种在多核处理器上利用建立模型的方法来分析程序的Cache性能的工具CAMP。这种方法首先需要获得程序的访存踪迹(memoryaccess trace),然后利用复用距离直方图,Cache访问次数同Cache缺失率的关系建立模型,进而分析Cache性能,并给出了处理器核之间由于Cache竞争而产生的性能下降。这种方法的分析过程不用多次执行程序,就可以预测多种配置Cache上的程序性能。这种方法只适合采用最近最少使用替换策略的Cache上,而且,这种方法只适合于对缺失率进行建模,对其他性能指标的建模较为复杂,很难找到合适的方法。
[0009]上述几种方法都不能获得目标程序的详细Cache性能数据。这些工具对程序在多核处理器上表现出的特殊Cache行为考虑不足。最后这些工具不能对程序运行在不同Cache架构上的性能进行分析和处理。
【发明内容】
[0010]本发明主要解决的技术问题是:克服现有技术的不足,提供一种多核环境并行程序Cache性能在线处理方法,能够在线的详细的处理Cache的性能数据。
[0011]为解决上述技术问题,本发明采用的一个技术方案是:
[0012]一种多核环境并行程序Cache性能在线处理系统,将二进制代码插装法与Cache软件模拟相结合,在线的获得目标程序在多种Cache架构上的性能指标,它包括:访存踪迹在线获取模块、消息传递模块、Cache行为模拟模块和Cache性能分析及输出模块;
[0013]访存踪迹在线获取模块,其输入为已经完成二进制插装的目标程序,所述目标程序通过在实际计算机上运行,根据插装粒度动态的产生访存踪迹,并将产生的访存踪迹传送至消息传递模块;同时接收消息传递模块发送的响应信息后继续运行目标程序,以产生下一条访存踪迹,并发送给消息传递模块,如此循环直到目标程序运行结束;
[0014]消息传递|旲块,将访存踪迹在线获取|旲块获得的访存踪迹传递给Cache行为I旲拟模块;同时接收Cache行为模拟模块完成一条访存踪迹时产生的响应信息;
[0015]Cache行为模拟模块,在模拟开始前配置计算机的参数,包括Cache大小,替换策略,是否共享;用户能够根据自己需要修改模拟模块的Cache配置,即模拟目标程序在任意Cache架构上的性能;配置完成后,根据消息传递模块传来的访存踪迹的内容,模拟目标程序的Cache行为,并记录在模拟行为中所产生的各种数据,包括访存类型,访存地址,访存时间,访存次数;在模拟完成后返回一条消息至消息传递模块,由消息传递模块通知访存踪迹在线获取模块中的目标程序继续执行;
[0016]在模拟开始前根据宿主计算机的参数,进行配置,包括Cache大小,替换策略,是否共享,通过输入目标并行程序的访存的踪迹,进行Cache行为的模拟;Cache行为模拟模块在模拟过程中记录并保存所需的Cache行为数据模拟模块在模拟完成一条踪迹后,产生一个完成的消息;
[0017]Cache性能分析及输出模块,当整个模拟过程结束后,根据Cache行为模拟模块记录的行为数据,统计分析并输出用户需要的Cache性能数据,包括=Cache缺失率,工作集大小,共享性能分析,冲突性能分析,抖动信息分析,获得各种详细的Cache性能数据。
[0018]一种多核环境并行程序Cache性能在线处理方法,实现步骤如下:
[0019]( I)将目标并行通过插装软件自动完成插装;
[0020](2)将插装后的目标程序输入到访存踪迹在线获取模块运行,将一条产生的访存踪迹发送给消息传递模块;
[0021](3)消息传递模块将接收的访存踪迹转发给Cache行为模拟模块;
[0022](4)Cache行为模拟模块收到访存踪迹后进行模拟,模拟完成后产生一条响应信息返回给消息传递模块;
[0023](5)消息传递模将响应信息转发给访存踪迹在线获取模块;
[0024](6)访存踪迹在线获取模块收到响应信息后继续运行目标程序产生下一条访存踪迹并发送给消息传递模块,如此循环直到目标程序运行结束;
[0025](7)目标程序运行结束后,基于访存踪迹的Cache行为模拟将模拟的数据发送给性能分析及输出模块;
[0026](8)性能分析及输出模块在收到基于访存踪迹的Cache行为模拟数据后,进行分析并将结果输出到指定文件。
[0027]本发明与现有技术相比的优点在于:
[0028](I)本发明通过将二进制代码插装法与Cache软件模拟相结合,可以在线的获得目标程序在多种Cache架构上的性能指标。与传统的基于硬件性能计数器的性能采集统计方法相比,能够即时获得更多且更详细的Cache性能数据。
[0029](2)本发明一种多核环境并行程序Cache性能在线处理系统,通过将二进制代码插装法与Cache软件模拟相结合,在收集到数据之后通过Cache性能分析模块的分析,能够产生比传统基于硬件性能技术器的性能分析方法更多的性能指标,如复用距离,工作集预测,抖动信息,共享信息及访问冲突信息统计等。
【专利附图】
【附图说明】
[0030]图1为本发明中系统组成模块图;
[0031]图2为本发明中方法的实现流程图。
【具体实施方式】
[0032]下面结合附图和实施例对本发明进行详细说明。
[0033]如图1所示,本发明系统包括:[0034]110、访存踪迹获取模块。
[0035]首先获得目标程序,对目标程序进行二进制代码插装。因为需要获取详尽的Cache访问信息,所以通常选择的插桩粒度为指令级的插桩。插桩可以使用Intel公司提供的Pin工具来自动完成。插装完成后,将目标并行程序直接运行在实际的计算机上,因为进行过插装,所以每当CPU发出一条访存指令时都会动态的产生访存踪迹。访存踪迹在线获取模块收集这些信息,每产生一条访存踪迹就会发送给消息传递模块,并等待响应信息。当收到响应信息后继续执行目标并行程序产生下一条访存踪迹。
[0036]120、消息传递模块。
[0037]消息传递模块主要负责访存踪迹在线获取模块与Cache行为模拟模块的交互工作。当收到一条访存踪迹在线获取模块产生的访存踪迹时,会直接交付给Cache行为模拟模块进行处理。然后等待Cache行为模拟模块产生的响应信息,收到响应信息后通知访存踪迹在线获取模块继续产生下一条访存踪迹。
[0038]130、Cache行为模拟模块。
[0039]Cache模拟模块是一个用软件实现的模拟程序Cache行为的模拟器。Cache行为模拟在目标并行程序开始执行前要对模拟的目标平台进行配置。包括拥有几级Cache,Cache大小,替换策略,是否共享,使用何种一致性协议等。配置完成后等待接收消息传递模块发送来的访存踪迹,在收到一条访存踪迹后Cache行为模拟模块开始对该条访存踪迹进行模拟,并记录模拟该条访存踪迹产生的各项数据信息。该条访存踪迹模拟完成后发送响应信息到消息传递模块,并等待接收并模拟访存踪迹在线获取模块产生的下一条访存踪迹。
[0040]140、性能分析及输出模块。
[0041]当程序运行结束后,性能分析及输出模块根据Cache行为模拟模块记录的数据(如Cache行的访问次数,访问类型,访问时间等)加以分析,对这些数据进行特定的处理或运算,可以获得各种详细的Cache性能数据(如工作集预测,Cache的共享或冲突性能分析等)。数据分析完成后,该模块负责将结果输出到指定文件。
[0042]如图2所示,本发明多核环境并行程序Cache性能在线处理方法流程如下:
[0043](I)对要进行模拟的并行程序进行二进制插装。
[0044](2)插装完成后,由用户手动输入要模拟的目标平台的配置信息。Cache行为模拟模块在输入配置信息后进行初始化。
[0045](3)初始化完成后开始运行已经完成插装的目标程序。
[0046](4)运行过程中会动态的产生访存踪迹。
[0047](5) Cache行为模拟模块对访存踪迹进行模拟并记录相关数据。
[0048](6)判断是否为最后一条访存踪迹信息,不是则继续产生并模拟下一条访存踪迹,是则结束模拟过程。
[0049](7)根据模拟过程中记录的基本数据信息,包括Cache Miss Rate, Cache行生命周期,Cache行访问日志等,分析目标程序的工作集大小、共享Cache数量等指标。工作集大小可按以下方式获得:从某一任意设定的时刻起,找到第一个被重复访问的数据块,在对该数据块的两次访问之间,程序访问的数据块集合即为该时段的工作集。共享Cache数量可以按照以下方式获得:对所有Cache数据块,查看访问日志,将被至少两个处理器核访问过的数据块标记为共享数据块,所有共享数据块的大小之和即为共享Cache数量。[0050]通过将在线的获取访存信息并进行模拟,最终得到了较基于硬件计数器并行程序性能分析方法不能获得的详细的Cache性能数据。程序员通过再次手动的分析结果对程序进行修改(如根据获得的工作集大小,改变并行程序的线程执行部分的划分),使程序的性能势必获得提闻。
[0051]本发明未详细阐述部分属于本领域公知技术。
[0052]以上所述,仅为本发明部分【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【权利要求】
1.一种多核环境并行程序Cache性能在线处理系统,将二进制代码插装法与Cache软件模拟相结合,在线的获得目标程序在多种Cache架构上的性能指标,其特征在于包括:访存踪迹在线获取模块、消息传递模块、Cache行为模拟模块和Cache性能分析及输出模块; 访存踪迹在线获取模块,其输入为已经完成二进制插装的目标程序,所述目标程序通过在实际计算机上运行,根据插装粒度动态的产生访存踪迹,并将产生的访存踪迹传送至消息传递模块;同时接收消息传递模块发送的响应信息后继续运行目标程序,以产生下一条访存踪迹,并发送给消息传递模块,如此循环直到目标程序运行结束; 消息传递模块,将访存踪迹在线获取模块获得的访存踪迹传递给Cache行为模拟模块;同时接收Cache行为模拟模块完成一条访存踪迹时产生的响应信息; Cache行为模拟模块,在模拟开始前配置计算机的参数,包括Cache大小,替换策略,是否共享;用户能够根据自己需要修改模拟模块的Cache配置,即模拟目标程序在任意Cache架构上的性能;配置完成后,根据消息传递模块传来的访存踪迹的内容,模拟目标程序的Cache行为,并记录在模拟行为中所产生的各种数据,包括访存类型,访存地址,访存时间,访存次数;在模拟完成后返回一条消息至消息传递模块,由消息传递模块通知访存踪迹在线获取模块中的目标程序继续执行; 在模拟开始前根据宿主计算机的参数,进行配置,包括Cache大小,替换策略,是否共享,通过输入目标并行程序的访存的踪迹,进行Cache行为的模拟;Cache行为模拟模块在模拟过程中记录并保存所需的Cache行为数据模拟模块在模拟完成一条踪迹后,产生一个完成的消息; Cache性能分析及输出模块,当整个模拟过程结束后,根据Cache行为模拟模块记录的行为数据,统计分析并输出用户需要的Cache性能数据,包括=Cache缺失率,工作集大小,共享性能分析,冲突性能分析,抖动信息分析,获得各种详细的Cache性能数据。
2.一种多核环境并行程序Cache性能在线处理方法,其特征在于: (1)将目标并行通过插装软件自动完成插装; (2)将插装后的目标程序输入到访存踪迹在线获取模块运行,将一条产生的访存踪迹发送给消息传递模块; (3)消息传递模块将接收的访存踪迹转发给Cache行为模拟模块; (4)Cache行为模拟模块收到访存踪迹后进行模拟,模拟完成后产生一条响应信息返回给消息传递模块; (5)消息传递模将响应信息转发给访存踪迹在线获取模块; (6)访存踪迹在线获取模块收到响应信息后继续运行目标程序产生下一条访存踪迹并发送给消息传递模块,如此循环直到目标程序运行结束; (7)目标程序运行结束后,基于访存踪迹的Cache行为模拟将模拟的数据发送给性能分析及输出模块; (8)性能分析及输出模块在收到基于访存踪迹的Cache行为模拟数据后,进行分析并将结果输出到指定文件。
【文档编号】G06F12/08GK103455364SQ201310401267
【公开日】2013年12月18日 申请日期:2013年9月5日 优先权日:2013年9月5日
【发明者】王锐, 高原, 栾钟治, 钱德沛 申请人:北京航空航天大学