将主存储器视为跟踪日志记录的标记高速缓存行的集合的制作方法

文档序号:35705328发布日期:2023-10-12 05:50阅读:27来源:国知局
将主存储器视为跟踪日志记录的标记高速缓存行的集合的制作方法


背景技术:

1、追踪并纠正不期望的软件行为是软件开发中的核心活动。不期望的软件行为可包括许多事情,诸如执行崩溃、运行时异常、缓慢的执行性能、不正确的数据结果、数据损坏等等。不期望的软件行为由多种因素触发,诸如数据输入、用户输入、竞争条件(例如,当访问共享资源时)等。考虑到各种各样的触发因素,不受欢迎的软件行为通常很少见,而且看起来是随机的,并且极难再现。如此,开发人员标识给定的不期望的软件行为通常是非常耗时且困难的。一旦标识出不期望的软件行为,确定其根本原因(或多种原因)通常又是耗时且困难的。

2、开发人员使用多种方法标识不期望的软件行为,然后标识应用代码中导致不期望的软件行为的一个或多个位置。例如,开发人员通常针对不同的输入来测试应用代码的不同部分(例如,单元测试)。作为另一示例,开发人员通常在调试器中推理应用代码的执行(例如,通过设置断点/观察点,通过在代码执行时步进执行代码行等)。作为另一示例,开发人员通常在剖析器中观察代码执行行为(例如,计时、覆盖率)。作为另一示例,开发人员通常将诊断代码(例如,跟踪语句)插入到应用的代码中。

3、虽然常规诊断工具(例如,调试器、剖析器等)已经对“实时”正向执行代码进行了操作,但是一种新兴形式的诊断工具实现了“历史”调试(也称为“时间旅行”或“反向”调试),其中执行上下文的至少一部分的执行被记载到一个或多个跟踪文件中(即,执行跟踪)。使用一些跟踪技术,执行跟踪可包括“位精确的”的历史执行跟踪数据分页,这使得被跟踪的执行上下文的任何记载部分能够被虚拟地“重放”(例如,经由仿真)到单独指令(例如,机器代码指令、中间语言代码指令等)的粒度。因此,使用“位精确的”的跟踪数据,诊断工具使开发人员能够对记载的主题上下文的先前执行进行推理,这与限于“现场”正向执行的常规调试相反。例如,使用可重放的执行跟踪,一些历史调试器提供了支持正向和反向断点/观察点的用户体验,这使得代码能够正向和反向步进执行等。另一方面,一些历史剖析器能够从先前执行的代码中导出代码执行行为(例如,计时、覆盖率)。

4、用于记载执行跟踪的一些技术主要基于记载对微处理器(处理器的)存储器高速缓存的流入来操作。然而,由于现代处理器常常以数万到数十万mips(每秒数百万条指令)的速度执行,因此程序线程的可回放执行跟踪可捕获大量信息,即使只捕获线程执行的几分之一秒。如此,可重放的执行跟踪在存储器和/或磁盘上迅速变得非常大。


技术实现思路

1、本文所描述的至少一些实施例通过使用较高存储器层中的标签执行基于高速缓存的跟踪日志记录,减少了可重放执行跟踪的大小。一般而言,这些实施例操作以将流入日志记录到记载的第一高速缓存级别,但是利用较高存储器层内的标签来追踪给定高速缓存行流入的值是否已经被执行跟踪捕获(或者以其他方式可恢复)。在一些实施例中,在高速缓存行向第一高速缓存级别的流入期间,跟踪逻辑咨询较高存储器层中的标签,以确定正在流入的值是否可从先前的跟踪日志记录,诸如结合高速缓存行向第一高速缓存级别的先前流入而执行的跟踪日志记录中重构。如果是这样,这些实施例在将高速缓存行流入第一高速缓存级别时,避免将高速缓存行的当前值捕获到执行跟踪中。附加地,在从第一高速缓存级别逐出期间,这些实施例确定被逐出的高速缓存行是否处于第一高速缓存级别内的“日志记录状态”(即,高速缓存行的当前值可从先前记载的跟踪获得,和/或可通过重放先前记载的跟踪来构建),并且在较高的存储器层中适当地设置标签,以指示被逐出的高速缓存行是否被日志记录。在实施例中,执行基于高速缓存的跟踪日志记录以追踪给定高速缓存行流入的值是否已经被执行跟踪捕获具有减少记载到执行跟踪中的高速缓存流入的数目的技术效果,这又具有与现有跟踪技术相比减少执行跟踪的大小以及与现有跟踪技术相比减少用于执行高速缓存流入的记载的处理器利用率的附加技术效果。

2、在一些实施例中,较高存储器层内的标签跟踪从上级高速缓存流入的高速缓存行的值是否已经被执行跟踪捕获。在实施例中,较高存储器层内的标签中的一个或多个存储在上级第二高速缓存级别中,并且这些标签中的每一个均指示第二高速缓存级别中的对应高速缓存行的值是否已经被执行跟踪捕获。附加地或另选地,在实施例中,较高存储器层内的标签中的一个或多个存储在主存储器中,并且这些标签中的每一个均指示第二高速缓存级别中的对应高速缓存行的值是否已经被执行跟踪捕获。在实验上,当与在较高存储器层中不使用标签的现有跟踪技术相比时,使用标签(无论存储在第二高速缓存级别中还是主存储器中)来指示第二高速缓存级别中的对应高速缓存行的值是否已经被执行跟踪捕获,已经显示出将跟踪文件大小减少了3-4倍。

3、附加地或另选地,在一些实施例中,较高存储器层内的标签中的一个或多个存储在主存储器中,并且这些标签(多个)中的每一个均指示主存储器中的存储器块的值是否已经被执行跟踪捕获(或者以其他方式可恢复)。因此,这些实施例可操作地将主存储器视为用于跟踪日志记录的标记高速缓存行的集合。在这些实施例中,计算机系统在主存储器内分配多个存储器块,以及对应的多个标签——这些标签中的每一个指示存储在其相关联的存储器块中的数据是否已经被执行跟踪捕获(或者以其他方式可恢复)。计算机系统将这些标签与存储器高速缓存同步(使得前述标记技术保持可操作),并且根据影响存储器块的存储器操作来管理这些标签,诸如直接存储器访问(dma)操作、存储器分页操作、存储器初始化操作和/或文件映射操作。在实施例中,将主存储器视为用于跟踪日志记录的标记高速缓存行的集合具有使用存储器来增加可被跟踪为先前被捕获或未被捕获的值的数目的另一技术效果。这又另外减少了记载到执行跟踪中的高速缓存流入的数目(另外减少了执行跟踪的大小,并且另外减少了用于执行高速缓存流入的记载的处理器使用)。在实验上,与使用标签来指示第二高速缓存级别中的对应高速缓存行的值是否已经被执行跟踪捕获相比,将主存储器视为用于跟踪日志记录的标记高速缓存行的集合已经显示出将跟踪文件大小减少了10-100倍。

4、根据前述内容,一些实施例涉及用于将主存储器视为用于跟踪日志记录的标记高速缓存行的集合的方法、系统和计算机程序产品。在这些实施例中,计算机系统分配主存储器内的多个存储器块,包括为多个存储器块中的每一个分配存储器量,该存储器量是存储器高速缓存中的多个高速缓存行中的每一个的大小。计算机系统还在主存储器内分配多个标签。每个标签与多个存储器块中的一个相关联,并且指示存储在其相关联的存储器块中的数据是否已经被执行跟踪捕获。计算机系统还将主存储器内的多个标签中的至少一个与存储器高速缓存内的至少一个高速缓存行标签同步,并且管理至少一个存储器块的被跟踪状态。在一些实施例中,管理至少一个存储器块的被跟踪状态包括,至少基于标识修改多个存储器块中的特定存储器块的dma操作,将多个标签中与特定存储器块相关联的特定标签设置为指示存储在特定存储器块中的数据尚未被执行跟踪捕获的值。在一些实施例中,管理至少一个存储器块的被追踪状态包括,至少基于标识影响特定存储器块的存储器页入操作,基于页入值是否已经被执行追踪捕获来设置特定标签。在一些实施例中,管理至少一个存储器块的被跟踪状态包括,至少基于初始化存储在特定存储器块中的数据,执行以下各项中的一项或多项:(i)设置包括特定存储器块的存储器页未被日志记录的指示,或者(ii)将特定标签设置为指示存储在特定存储器块中的数据已经被执行跟踪捕获的值。在一些实施例中,管理至少一个存储器块的被跟踪状态包括,至少基于将特定存储器块与文件相关联,执行以下一项或多项:(i)设置包括特定存储器块的存储器页未被日志记录的指示,或者(ii)将特定标签设置为指示存储在特定存储器块中的数据已经被执行跟踪捕获的值。

5、提供本
技术实现要素:
是为了以简化的形式介绍一些概念,这些概念将在下文的详细说明中另外描述。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护主题的范围的辅助。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1