采用无探针跟踪捕获的重播体系结构执行的制作方法

文档序号:6360769阅读:174来源:国知局
专利名称:采用无探针跟踪捕获的重播体系结构执行的制作方法
技术领域
实施例一般涉及软件故障的评估。更具体地,实施例涉及被捕获的体系结构数据的重放以评估软件故障。讨论调试软件的现有技术可涉及在所讨论的平台上执行测试内容并手动地修剪测试内容以隔离故障源。此类方法在问题解决之前可能需要多次迭代。此外,修剪测试内容可能仅在内容源可用时才是可行的。调试软件的其他技术可涉及使用逻辑分析器来跟踪所执行的软件逻辑,其中进行跟踪数据的全面分析。然而,多核和/或多线程处理器的趋势可引 起探针通道的数量的增加和逻辑分析器的成本和复杂度的增加。简言之,调试软件的传统方法可能是耗时且昂贵的。


通过阅读以下说明书和所附权利要求,以及通过参照以下附图,本发明的实施例的各个优点对本领域普通技术人员而言是显而易见的,其中图I是根据一实施例的评估软件的方案的示例的框图;图2是根据一实施例的捕获存储器事务的方法的示例的流程图;图3是根据一实施例的系统的示例的框图。
具体实施例方式实施例可提供一种方法,在该方法中捕获在系统上执行的软件体系结构数据。体系结构数据可在模拟器中重放,其中可从模拟器获得对应于软件的故障信息。其他实施例可包括具有一组存储的指令的计算机可读存储介质,该指令在被处理器执行时使得计算机捕获在系统上执行的软件的体系结构数据并在模拟器中重放该体系结构数据。指令还可使得计算机从模拟器获得故障信息,其中故障信息对应于软件。此外,实施例可提供一种方法,其中利用系统的固件以响应于多个中断周期性地捕获在系统上执行的软件的体系结构数据。体系结构数据可包括状态数据和事件数据。体系结构数据的格式可被转换为与模拟器相关联的格式,其中体系结构数据可在模拟器中被重放。该方法还可提供从模拟器获得故障信息,其中故障信息对应于软件。现转到图1,示出了在系统上执行的评估软件的方案10。方案10可用于支持、管理和/或提高诸如所评估软件的调试、验证和优化之类的各种各样的操作。此外,在其上执行软件的系统可包括诸如膝上型计算机、个人数字助理(PDA)、移动互联网设备(MID)、无线智能手机、媒体播放器、成像设备等等或其任何组合之类的移动平台。系统也可以是诸如个人计算机计算机(PC)、服务器、工作站等的固定平台的一部分。一般而言,所示方案10包括硅执行序列12和模拟器执行序列14。硅执行序列12可与通过诸如通用处理器的单核或多核、固定功能硬件(例如,嵌入式微处理器)等集成电路的软件执行相关联,其中,集成电路可使用诸如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术或其任何组合之类的电路技术来制造。在一个示例中,由于诸如多线程或多核环境之类的复杂执行环境,软件具有很多交互和依赖关系O在所示示例中,通过开始在执行处理框16的系统上执行软件,将系统置于测试下。箭头实例18 (18a-18b)表示以周期方式或以其它方式发出中断,其中中断可发起通过转储处理程序20对体系结构状态数据22的捕获。被捕获的体系结构状态数据22可包括与诸如取指令单元、指令解码器、高速缓存、执行单元、寄存器等等系统体系结构的多个方 面相关的数据。随着软件的执行在后续执行处理框30和34继续,体系结构事件数据24还可分别经由事件捕获处理框26和32捕获。体系结构事件数据可包括存储器事务(例如,力口载一存储)数据和其他数据。所示序列12继续直至在框28遇到故障点。图2示出捕获存储器事务数据的方法42。方法42可在作为储存在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM (PR0M)、闪存等存储器的机器或计算机可读介质中的一组逻辑指令的可执行软件中实现,也可以在使用诸如ASIC、CMOS或TTL技术或其中任何组合的电路技术的固定功能硬件中实现。举例而言,可以用一种或多种编程语言的任意组合来编写用于实施在方法42中所示的操作的计算机程序代码,这些编程语言包括诸如Java、Smalltalk、C++等面向对象的编程语言以及诸如“C”编程语言或类似的编程语言的传统程序的编程语言。另一方面,诸如汇编语言编程或机器代码之类的固定功能硬件或更低级固件指令可用于实施在方法42中所示的操作。实际上,上述体系结构状态转储处理器20操作、体系结构事件捕获框26、32和中断箭头实例18 (图I)均可在被测试系统的固件(例如,定制微码)中全部自动化。因此,所示方法不需要手动调试或使用复杂的逻辑分析器(例如,提供无外部设备的“无探针”测试布置)来获得被测试软件的故障信息。所示的处理框44提供确定存储器事务数据捕获固件是否启用。如果启用,通过测试软件的操作访问的一个或多个地址可在框46中被标识并捕获。捕获可包括在每次存储器访问中涉及的物理以及线性地址。还可收集诸如尝试每个存储器访问的执行流中的指令之类的其他执行数据和在加载操作的情况(例如对标志、寄存器的改变,等等)下的每个存储器操作的结果。如下所讨论的,框48提供封装被捕获的地址和执行数据,以及框50提供存储经封装的信息以用于后续转换和/或传输至模拟器。此外,在框52可退出存储器操作,而不引起被测试软件的宏观或微观操作流的任何变化。返回至图1,被捕获的体系结构状态数据22和事件数据24可被转换为与模拟器相关联的格式,其中模拟器处理框36提供利用被捕获的体系结构状态数据22来初始化模拟器。体系结构模拟器的示例包括但不限于从新罕布什尔州纳舒厄市的Gambit通信公司购买的MlMlCwi模拟器、Bochs开源仿真器(例如,Bochs IA-32仿真器v2. 4. 5, 2010年4月25日,Geeknet公司)以及QEMU开源仿真器(例如,QEMU vO. 12. 4,2010年5月4日)。处理框38提供使用被捕获的事件数据24在模拟器中重放软件,其中可在框40从模拟器获得被测试软件的故障信息。故障信息可被用于进行诸如调试操作、验证操作和优化操作之类的附加操作。例如,在系统调试使用模型中,体系结构重放可启用对被归类为软件故障的问题的快速分类。一个副产品可能是在需要更详细的调制时对问题的隔离。同样,从环境和BIOS(基本输入/输出系统)相关原因所显现的故障问题可使用所示方法来标识。在验证的情况下,故障信息可对互操作性和/或兼容性有影响,尤其在多核/多线程环境下操作时。可能浮现的问题包括但不限于核/线程之间的同步问题、处理器间加载/存储问题、处理器间中断的排序,等等。因此,体系结构重放可便于对潜在故障进行根本原因分析。此外,所示方法可被包含在软件开发包中,当与诸如编译器和线程化工具之类的其他工具相联系时,软件开发包可由设备制造商和软件供应商使用以启用和优化软件工具链。图3示出了计算系统54,其中系统54可以是诸如膝上型计算机、PDA、MID、无线 智能电话、媒体播放器、成像设备等等或其任何组合之类的移动平台的一部分。系统54也可以是诸如PC、服务器、工作站等固定平台的一部分。所示系统10包括主机处理器56,该主机处理器56可包括提供对系统存储器60的访问的集成存储器控制器58,该系统存储器60可包括双数据率(DDR)同步动态随机存取存储器(SDRAM,例如DDR3 SDRAMJEDEC标准JESD79-3C,2008年4月)模块。系统存储器60的模块可被合并为单列直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)、小型DIMM (SODIMM),等等。处理器56也可具有一个或多个处理器核62,其中每个核62可具有取指令单元、指令解码器、一级(LI)高速缓存、执行单元等等的全部功能。在一个示例中,处理器56的内部高速缓存可用静态RAM(SRAM)实现。处理器56也可执行诸如Microsoft ffindows>Linux或Mac (Macintosh) OS等操作系统(OS)以及各种其它软件应用,其中此类软件可遭受一点或多点故障。所示处理器56与平台控制器中枢(PCH)64通信,在某些系统中该PCH也被称作南桥。PCH 64可具有内部控制器(未示出),诸如USB (通用串行总线,例如,USB规范2. 0,USB实现者论坛)、串行ATA (SATA,例如,SATA Rev. 3. O规范,2009年5月27日,SATA国际组织/SATA-I0)、高清晰度音频以及其它控制器。PCH 64可与网络控制器70通信,网络控制器70可提供平台外通信功能以用于诸如蜂窝电话(例如,ff-CDMA(UMTS)、CDMA2000(IS-856/IS-2000)等)、WiFi (例如,IEEE 802. 11,1999 年版,LAN/MAN 无线 LANS)、蓝牙(例如,IEEE802. 15. 1-2005,无线个域网)、WiMax (例如,IEEE 802. 16-2004,LAN/MAN 宽带无线 LANS)、全球定位系统(GPS)、扩展频谱(例如,900MHz)以及其他射频(RF)电话目的之类的各种各样的目的。所示PCH 64也耦合到一个或多个大容量存储设备,该大容量存储设备可包括硬盘驱动器(HDD) 66、ROM、光盘、闪存等。此外,PCH 64可为诸如话筒、显示器、键盘、鼠标、扬声器等用户接口(UI)设备68提供支持,以允许用户与系统54交互和从系统54感知信息。核62可执行无探针逻辑指令集(例如,微码/固件)74,该指令74可最初从BIOS72(例如,作为补丁从PR0M、基于NAND的固态盘(SSD),或闪存)加载、经由工具动态地加载、或已驻留在处理器56的UROM (微R0M,未示出)中。在所示的示例中,该组无探针逻辑指令74使得系统54捕获在系统54上所执行的软件(例如,OS和其他应用程序代码)的体系结构数据,而不影响被测试软件的执行。此外,逻辑指令74可在模拟器中重放被捕获的体系结构数据,并从模拟器获得故障信息,其中故障信息对应于在系统54上所执行的软件。如上所述,体系结构数据可包括状态数据和事件数据,其中,在一个示例中,事件数据包括存储器事务数据。
本发明的实施例可适用于所有类型的半导体集成电路(“1C”)芯片。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等等。此外,在一些附图中,采用线条表示信号导线。一些线条可更粗以指示更多的组成信号路径,具有数字标记以指示组成信号路径的数量,和/或具有在一端或多端的箭头以指示主要信息流方向。然而,这不应以限制的方式来理解。相反,此类附加细节可与一个或多个示例性实施例结合使用以便于更容易理解电路。任何所表示的信号线路(不论是否具有附加信息)可实际包括可在多个方向传送的一个或多个信号并可采用任何合适类型的信号方案实现 ,例如,采用差分对实现的数字或模拟线路、光纤线路和/或单端线路。可能已经给出示例尺寸/模型/值/范围,但是本发明的实施例不限于此。制造技术(例如,光刻)随时间日趋成熟,可预期可制造尺寸越来越小的设备。此外,为了简化说明和讨论起见,且为了不混淆本发明的实施例的某些方面,众所周知的到IC芯片和其他部件的电源/接地连接可能会或可能不会在附图中示出。更进一步地,为了避免混淆本发明的实施例,并鉴于与框图布置的实现有关的细节高度依赖于实施例的实现平台的事实,即这些细节应在本领域普通技术人员所知的范围之内,因此布置以框图的形式示出。在陈述了具体细节(例如,电路)以描述本发明的示例实施例的情况下,本领域普通技术人员应当显而易见的是,本发明实施例可在不利用这些具体细节或利用这些具体细节的变型的情况下实现。因此,本说明书被视为说明性的而不是限制性的。一些实施例可例如利用机器或有形的计算机可读介质或物品来实现,该介质或物品可存储指令或一组指令,该指令或该组指令被机器执行时可使得机器执行根据实施例的方法和/或操作。这样的机器可包括,例如,任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器或类似物,且可利用任何合适的硬件和/或软件组合实现。机器可读介质或物品可包括例如任何适合类型的存储器单元、存储器器件、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元,例如存储器、可移动的或不可移动的介质、可擦除或不可擦除的介质、可写入或可反复写入的介质、数字或模拟介质、硬盘、软盘、光盘只读存储器(⑶-ROM)、可记录光盘(⑶-R)、可重写光盘(⑶-RW)、光盘、磁介质、磁光介质、可移动存储卡或盘、各种类型的数字多功能盘(DVD)、带、盒式带等等。指令可包括利用任何合适的高级、低级、面向对象、可视、汇编和/或解释编程语言实现的诸如源代码、汇编代码、解释代码、可执行代码、静态代码、动态代码、加密代码等任何适合类型的代码。除非特别声明,否则应当理解的是,诸如“处理”、“计算”、“运算”、“确定”等等之类的术语指的是计算机或计算机系统或相似的电子计算设备的动作和/或处理,这些系统或设备操纵和/或将寄存器和/或存储器中被表示为物理量(例如电子)的数据转换成同样在存储器、寄存器或其它此类信息存储、传输或显示器件中被表示为物理量的其它数据。各实施例不限于此上下文的情况。术语“耦合”在本文中被用于指代所讨论的部件之间的任何类型的直接或间接关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其它连接。此外,术语“第一”、“第二”等在本文中仅被用于便于讨论,且没有特殊时间或年代顺序意义,除非另外指明。根据以上的描述,本领域普通技术人员应当理解,本发明的实施例一般技术可通过各种形式实现。因此,虽然已结合具体示例描述了本发明的实施例,但是本发明实施例的真实范围不应当局限于此,因为经过研究附图、说明书以及所附权利要求书,其它修改对本领域普通技术人员而言是显而 易见的。
权利要求
1.一种方法,包括 使用系统的固件以响应于多个中断周期性地捕获在所述系统上执行的软件的体系结构数据,其中所述体系结构数据包括状态数据和事件数据; 将所述体系结构数据的格式转换为与模拟器相关联的格式; 在所述模拟器中重放所述体系结构数据;以及 从模拟器获得故障信息,其中所述故障信息对应于所述软件。
2.如权利要求I所述的方法,其特征在于,进一步包括 标识由所述软件的操作访问的一个或多个地址;以及 将所述一个或多个地址与对应于软件的执行数据封装在一起。
3.如权利要求I所述的方法,其特征在于,进一步包括基于所述故障信息执行调试操作、验证操作和优化操作中的至少一个。
4.如权利要求I所述的方法,其特征在于,捕获在包括多核处理器和多线程处理器中的至少一个的系统上执行的软件的体系结构数据。
5.一种计算机可读存储介质,包括一组指令,所述指令在被处理器执行使得计算机 捕获在系统上执行的软件的体系结构数据; 在模拟器中重放所述体系结构数据;以及 从所述模拟器获得故障信息,其中所述故障信息对应于所述软件。
6.如权利要求5所述的介质,其特征在于,所述指令在被执行时进一步使得所述计算机使用所述系统的固件来捕获体系结构数据。
7.如权利要求5所述的介质,其特征在于,所述体系结构数据包括状态数据和事件数据中的至少一个,以及所述事件数据包括存储器事务数据。
8.如权利要求7所述的介质,其特征在于,所述指令在被执行时进一步使得所述计算机 标识由所述软件的操作访问的一个或多个地址;以及 将所述一个或多个地址与对应于所述软件的执行数据封装在一起,其中所述一个或多个地址包括线性地址和物理地址中的至少一个。
9.如权利要求5所述的介质,其特征在于,所述指令在被执行时进一步使得所述计算机响应于多个中断周期性地捕获所述体系结构数据。
10.如权利要求5所述的介质,其特征在于,所述指令在被执行时进一步使得所述计算机基于所述故障信息执行调试操作、验证操作和优化操作中的至少一个。
11.如权利要求5所述的介质,其特征在于,所述指令在被执行时进一步使得计算机将所述体系结构数据的格式转换为与所述模拟器相关联的格式。
12.如权利要求5所述的介质,其特征在于,所述系统包括多核处理器和多线程处理中的至少一个。
13.—种方法,包括 捕获在系统上执行的软件的体系结构数据; 在模拟器中重放所述体系结构数据;以及 从模拟器获得故障信息,其中所述故障信息对应于所述软件。
14.如权利要求13所述的方法,其特征在于,进一步包括使用所述系统的固件来捕获所述体系结构数据。
15.如权利要求13所述的方法,其特征在于,所述体系结构数据包括状态数据和事件数据中的至少一个,以及所述事件数据包括存储器事务数据。
16.如权利要求15所述的方法,其特征在于,进一步包括 标识由所述软件的操作访问的一个或多个地址;以及 将所述一个或多个地址与对应于所述软件的执行数据封装在一起,其中所述一个或多个地址包括线性地址和物理地址中的至少一个。
17.如权利要求13所述的方法,其特征在于,还包括响应于多个中断周期性地捕获所述体系结构数据。
18.如权利要求13所述的方法,其特征在于,进一步包括基于所述故障信息执行调试操作、验证操作和优化操作中的至少一个。
19.如权利要求13所述的方法,其特征在于,进一步包括将所述体系结构数据的格式转换为与所述模拟器相关联的格式。
20.如权利要求13所述的方法,其特征在于,捕获在包括多核处理器和多线程处理器中的至少一个的系统上执行的软件的体系结构数据。
全文摘要
一种用于捕获在系统上执行的软件的体系结构数据的系统和方法,其中体系结构数据可包括状态数据和事件数据。被捕获的体系结构数据可在模拟器中重放,其中可从模拟器获得对应于软件的故障信息。
文档编号G06F11/36GK102918508SQ201180027185
公开日2013年2月6日 申请日期2011年6月20日 优先权日2010年6月28日
发明者R·德瓦拉杰, J·D·弗兰科 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1