针对性能和正确性使多线程软件程序的已记录执行可视化的制作方法

文档序号:9252384阅读:208来源:国知局
针对性能和正确性使多线程软件程序的已记录执行可视化的制作方法
【专利说明】
【背景技术】
[0001]随着多核处理器技术的到来,并行编程已变得无所不在。然而,由于并行程序的不确定性,具有相同输入的相同的并行程序的多次执行可以产生不同的结果。
[0002]存储器竞争记录(MRR)技术使得能够记录多线程程序的执行,从而记录存储器访问交织(interleave)的顺序。可以出于调试的目的重放该记录。当重放时,该记录产生与由原始执行获得的那些结果相同的结果。尽管点到点MRR技术在单独共享存储器指令层级跟踪存储器访问交织,但基于块的技术通过观察原子地执行(例如,在没有与冲突远程存储器访问交织的情况下)的存储器操作的次数来跟踪存储器访问交织。
【附图说明】
[0003]在附图中以示例的方式而非以限制的方式图示出本文所述的概念。为了图示的简单和明了起见,图中所示的元件不一定按比例描绘。在认为适当的情况下,在图之中已重复附图标记以指示相应或类似的元件。
[0004]图1是用于使多线程软件程序的执行的性能和/或正确性特征可视化的系统的至少一个实施例的简化框图;
图2是图1的可视化系统的至少一个实施例的简化框图;
图3是图2的动态重放模块的至少一个实施例的简化框图;
图4是关于多线程软件程序的执行的日志文件的简化图示;
图5是用于使多线程软件程序的已记录执行的性能和/或正确性特征可视化的方法的至少一个实施例的简化流程图;
图6是用于使记录的软件程序执行数据准备好用于可视化的方法的至少一个实施例的简化流程图;
图7是用于控制多线程软件程序的已记录执行的可视化的方法的至少一个实施例的简化流程图;
图8是用于以图形方式呈现多线程软件程序的已记录执行的可视化的方法的至少一个实施例的简化流程图;
图9是多线程软件程序的已记录执行的图形可视化的至少一个实施例的简化图示;
图10是图9的图形可视化的“缩小”版本的简化图示;以及图11是图9的图形可视化的“放大”版本的简化图示。
【具体实施方式】
[0005]虽然本公开的概念易受各种修改和替换形式的影响,但在图中已以示例的方式示出了其特定实施例并将在本文中详细地描述。然而,应理解的是不存在使本公开的概念局限于所公开的特定形式的意图,相反地,意图是涵盖符合本公开和所附权利要求的所有修改、等价物以及替换。
[0006]本说明书中的对“一个实施例”、“实施例”、“说明性实施例”等的参考指示所述实施例可包括特定特征、结构或特性,但每个实施例可包括该特定特征、结构或特性也可不一定如此。此外,此类短语不一定参考相同的实施例。此外,当结合实施例来描述特定特征、结构或特性时,认为与无论是否明确地描述的其他实施例相结合地实现此类特征、结构或特性在本领域的技术人员的认知内。
[0007]在一些情况下,可用硬件、固件、软件或其任何组合来实现所公开的实施例。还可将所公开的实施例实现为由临时或非临时机器可读(例如,计算机可读)存储介质承载或存储在其上面的指令,该指令可被一个或多个处理器读取和执行。可将机器可读存储介质体现为用于以机器(例如,易失性或非易失性存储器、介质磁盘或其他介质设备)可读的形式存储或传输信息的任何存储设备、机制或其他物理结构。
[0008]在图中,可以特定布置和/或排序示出某些结构或方法特征。然而,应认识到的是可不要求此类特定布置和/或排序。相反地,在一些实施例中,可以与说明性图中所示不同的方式和/或顺序来布置此类特征。另外,特定图中的结构或方法特征的包括并不意图暗示在所有实施例中都要求此类特征,并且在一些实施例中,可不包括或者可将其与其他特征组合。
[0009]现在参考图1,在一些实施例中,一种用于使多线程软件程序126的执行可视化的系统124基于在软件程序126的执行期间由基于块的存储器竞争记录器118生成的日志文件130来准备指令跟踪(instruct1n traces) 132,并在显示器120上向诸如程序员或软件分析员之类的观察者显示已记录执行的动画图形表示134,如下面更详细地讨论的。动画图形表示134包括被布置成突出显示软件程序126的已记录执行的性能和正确性特征的视觉特征,诸如形状和色彩。如本文所使用的,术语“突出显示”意指可以用于在观察者的眼中引起对该性能和正确性特征的注意的视觉特征的任何布置或组合。例如,在一些实施例中,已记录执行的多个线程的视觉特征全部在相同的上下文中显示。在使用中,如下面更详细地讨论的,可视化系统124响应于由例如一个或多个用户控制机构122完成(made)的来自观察者的输入而交互式地调整动画图形表示134的显示。例如,在一些实施例中,系统124提供交互式控制机构,其允许观察者增加或减小放大倍率(例如,“放大”或“缩小”),增加或减小动画速度(例如,“快进”或“倒带”),或者旋转图形表示134。通过在相同的上下文中以图形方式描绘所有同时地执行的线程的执行,可视化系统124使得能够以可以帮助软件开发者识别仅仅从执行的文本表示将难以或不可能识别的性能和/或正确性特征的方式来使多个线程之间的交互可视化。
[0010]可将计算设备100体现为用于向观察者显示动画图形信息并执行本文所述功能的任何类型的计算设备。虽然在图1中示出了一个计算设备,但应认识到的是在其它实施例中,可在多个计算设备100中体现系统124。说明性计算设备100包括处理器110、存储器112、输入/输出子系统114、数据存储设备116、存储器竞争记录器118、显示器120、用户控制机构122、可视化系统124以及软件程序126。当然,在其它实施例中,计算设备100可包括其它或附加部件,诸如一般地在计算机中发现的那些(例如,各种输入/输出设备)。另夕卜,在一些实施例中,说明性部件中的一个或多个可被并入到另一部件中或者以其他方式来自其一部分。例如,在一些实施例中,可将存储器112或其各部分并入到处理器110中。
[0011]可将处理器110体现为当前已知或者未来开发且能够执行本文所述功能的任何类型的处理器。例如,可将处理器体现为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,可将存储器112体现为当前已知或未来开发且能够执行本文所述功能的任何类型的易失性或非易失性存储器或数据储存器。在操作中,存储器112可存储在系统124的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库以及驱动程序。存储器112经由I/O子系统114被通信耦合到处理器110,可将其体现为电路和/或部件以促进与处理器110、存储器112以及计算设备100的其它部件的输入/输出操作。例如,I/O子系统114可被体现为或者以其他方式包括存储器控制器集线器、输入/输出控制机构集线器、固件设备、通信链路(即,点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或其它部件和子系统以促进输入/输出操作。在一些实施例中,I/O子系统114可形成芯片上系统(SoC)的一部分,并且连同处理器110、存储器112以及计算设备100的其它部件一起并入在单个集成电路芯片上。
[0012]可将数据储存器116体现为被配置成用于数据的短期或长期存储的任何类型的一个或多个设备,例如,存储器设备和电路、记忆卡、硬盘驱动器、固态驱动器或其他数据存储设备。在说明性实施例中,可视化系统124和/或存储器竞争记录器118可将程序执行数据128,包括MRR日志文件130、指令跟踪132、图形表示134、其各部分和/或其它信息保持在数据储存器116中。如下面更详细地讨论的,可使用日志文件130和指令跟踪132来创建图形表示134。可将程序执行数据128的各部分体现为能够在显示器120上显示的任何类型的数字数据。例如,可将程序执行数据128的各部分体现为二进制码、机器或组件级代码、文本、图形和/或其它类型的内容。可用数字文件、阵列、数据库、表格和/或其它适当数据结构来存储程序执行数据128的各部分。
[0013]可将存储器竞争记录器118体现为用于以基于块的方式来记录多线程软件程序的执行的任何适当类型的系统。例如,可将存储器竞争记录器118体现为硬件或软件系统,例如在处理器110的架构中实现的硬件系统。存储器竞争记录器118记录多线程软件程序126的执行以用于稍后的确定性重放。存储器竞争记录器118被配置成使得当重放已记录执行时,以与在原始执行期间将其记录的相同方式来将其再现。为此,存储器竞争记录器118记录跨线程的存储器访问交织,使得在重放期间,可以以与在原始执行中相同的方式来使那些线程重新同步。存储器竞争记录器118记录存储器访问交织的顺序。
[0014]如上所述,存储器竞争记录器118通过观察在没有冲突共享存储器相关性的介入的情况下能够执行的存储器操作的次数而使用基于块的方法来跟踪存储器访问交织。“块”表示隔离地执行的指令块;亦即没有与来自另一线程的冲突存储器访问的任何交织。换言之,块捕捉在引起多个线程之间的冲突的相邻高速缓存相干请求之间发生的共享存储器访问。共享存储器指的是可以被不同处理器或处理器核(例如,在多核处理器中)访问的存储器(例如,随机存取存储器或RA
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1