监控数据处理设备和概括监控数据的制作方法

文档序号:6578219阅读:203来源:国知局
专利名称:监控数据处理设备和概括监控数据的制作方法
技术领域
本发明涉及数据处理领域,具体地涉及数据处理系统的监控。
背景技术
数据处理设备正变得越来越复杂,因此,不提取和分析大量数据,将 越来越难分析它们的性能,不管是为了最佳化还是发现故障。
而且,数据处理设备越来越多地具有多个处理器。这些多个处理器常 常访问相同的数据存储装置,因此,在一个处理器在与另一个处理器访问 某 一存储的变量的时间大致相同的时间写入到该存储的变量的场合下,出 现竟争条件问题。由于在处理器之间的不足的同步,将出现这样的问题。
当调节多处理器系统的性能时将出现不同但相关的问题。程序员需要 明白由于例如总线竟争在不同的处理器上在同一时间运行两段代码的性 能暗示。
而且,重要的是能够检验函数只在它们的许可范围内访问存储器的某 些部分,而不在这个范围以外访问存储器。
检验竟争条件的一个已知的方法是通过动态竟争检测机制,例如,在
Savage 等人的"Eraser: a dynamic data race detector for multithreaded programs", ACM transactions on computer Systems(TOCS)巻 15,号 4, 1997年11月,第391-411页,1997中描述的擦除器系统。擦除器系统修改 它正在监控的程序,以便监控每个共享的存储器参考和验证观察到一致的 锁定行为。诸如这样的运行时间修改具有与其有关的两个问题。首先,它 可以引起很大的减慢(擦除器典型地使得系统变慢到原来的1/30到1/10), 因此它不能在实时系统中应用,其次,它修改软件,因此它不能被使用来 检测通过与加速器交互而引起的问题,即所述加速器或者是不可编程的(例 如,DMA控制器)或者没有足够丰富的指令组来表示监控代码,或者是在 因为实际的或法律的原因不能修改代码的场合下。
检验竟争条件的另一个方法是通过静态竟争检测机制,例如,由 Detlefs等人在HP实验室技术报告SRC-RR-159中描述的"Extended Static Checking(扩展的静态检验),,(ESC) http:〃丽w.hpl.hp.com/techi印orts /compaq國DEC/SRC-RR誦159.HTML;和在Engels等人的"Checking SystemRules Using System-Specific, Programmer-Written Compiler Extensions", Proceedings of the 4th Symposium on Operating system Design and Implementation中描述的MC系统。
这两个静态方法都通过执行对程序的静态分析而工作,目的是检测在 程序中的大多数竟争条件,而不是证明它们是不存在的。MC是通过检验 在获取锁和释放锁时程序员遵循所建立的(人工验证的)惯用语而工作,而 ESC执行关于程序的更深的推理,它也可以检测诸如超过阵列边界写入那 样的问题。静态分析避免与动态检测相关联的开销,但它不能发现动态检 测可以抓住的某些竟争条件。此外,静态分析工具通常只支持有限的锁定 协定组,而当使用不同的锁定协定时不能进行检测(或报告许多错误肯定)。
有许多可用的工具,用于对处理系统进行简要描述,以便提供它的性 能的指示。例如,许多操作系统具有工具,这些工具产生显示每个CPU 有多忙、有多少存储器在使用中、和这些数目如何随时间变化的图。
这些简要描述工具可以依赖于由系统硬件提供的性能计数器。例如, 大多数现代处理器可以对事件进行计数,如所执行的指令的数目或緩存遗 漏的数目。这些计数器典型地以两个模式被使用。在一个模式中(我们将把 它称为"单触发模式"),程序员(或工具)修改程序,在任务开始时打开计数 器,并在任务结束时读出计数器数值。这个数值呈现给用户或先被存储, 在以后的时间点再呈现给用户。在另 一个模式中(我们把它称为"周期采样 "),周期性中断触发一个库,来读出性能计数器和把数值流出到存储装置, 用于以后检查。它们例如可被显示为图。
在两种情形下,需要处理器读出当前的计数器数值。这个要求使得该 过程受侵害(测量动作可能会毁坏结果)。它也对负责读取性能计数器的处 理器施加开销,这最终限制进行测量的粒度和还可能限制精度。
与单触发模式相比较,在"周期采样"模式下使用性能计数器具有缺 点,即人们希望监控的任务可能在一个采样周期的半途开始,并在另一个 采样周期的半途结束,导致不精确的性能指数。这种不精确性可以通过减 小采样周期而被减小,但这增加了侵害的程度,而且只要有某些不精确性, 就不能确信地说一个事件在某个任务期间肯定发生或在该任务期间肯定 不发生。
性能计数器的周期采样的一个变例是随机采样。这解决了当采样周期 是正在测量的事件的频率的精确的倍数时出现的某些问题,但没有减小不
精确性。精确性和侵害的问题可以通过提供追踪所有的感兴趣的事件的硬件 而被解决。片外的工具可以概括这种追踪,以产生非常详细的、精确的曲 线图。这样的方法的缺点在于,如果事件以高的频率发生,则为了产生追 踪需要很大的带宽,为了存储它需要大量的存储装置,以及需要大量处理 来概括它。如果一个人想要单独地检查事件,那么这是有用的,但对于性 能简要描述或对于检测竟争条件,这是小题大做的。
希望能够在实时期间分析复杂的系统,而不需要收集和从而输出和处 理非常大量的数据。

发明内容
从第一方面看来,本发明提供数据处理设备,其包括监控电路,用于 监控在开始和结束事件之间发生的、在所述数据处理设备内对多个可寻址
的位置的访问,所述监控电路包括用于存储标识要监控的所述多个可寻 址的位置的数据的地址位置存储装置和监控数据存储装置;所述监控电路 响应于所述开始事件的检测,以检测对所述多个可寻址位置的访问和把有 关所述检测的访问的概括的监控数据存储在所述监控数据存储装置中;以 及所述监控电路响应于所述结束事件的检测,以停止收集所述监控数据; 所述监控电路响应于清洗事件的检测,以输出所述存储的监控数据和清洗 所述监控数据存储装置。
本发明认识到,当通过使用传统的追踪方法追踪数据处理系统的活动 时,生成包括代表在系统内的逐步的活动的数据的追踪流,并输出这个数 据,以使得片外工具可以概括它。然而,该方法的缺点在于,活动会以高 的频率发生,从而需要大量的带宽来产生追踪,需要大量的存储装置来存 储它,以及需要大量处理来概括它。对于越来越复杂的系统,这个问题变 得越来越严重。本发明通过使用开始和结束事件作为限制而限制及时监控 的访问,并在空间上进一步限制到特定的地址位置而解决这个问题。而且, 系统然后仅仅收集和输出检测的访问的概括,然后清除监控数据存储装 置。
这样,可以生成与在特定的事件之间出现的和到特定的地址范围的访 问有关的监控数据组。因此,所生成的监控数据可以在时间上和空间上被 瞄准。而且,通过只输出出现的访问的概括,数据输出量的带宽可以大大 地减小,概括的类型的适当的选择可以帮助保证,所输出的减少的数据是说明书第4/16页
有用的数据。
在一些实施例中,所述开始事件、所述结束事件和所述清洗事件是同 一个事件,以使得响应于所述同一个事件,所述监控电路停止监控,输出 所述监控数据,清洗所述监控数据存储装置和开始再次检测对所述多个可 寻址的位置的访问。
如果同一个事件触发数据的开始、结束和清洗,则通过在每个事件时 输出数据,实际上达到对系统的连续监控。因此,监控的数据被分段,并 且收集对于不同的时间段的访问数据的概括。如果需要在两个更宽地间隔 开的事件之间的信息,则这些可被组合在一起。
在其它实施例中,开始、结束和清洗事件可以是不同的事件,或替换 地,可以是,开始事件也是清洗事件,从而触发清洗,或结束事件也是清 洗事件,从而触发数据的输出和数据存储装置的清洗。
在一些实施例中,所述开始、结束和清洗事件,每个包括任务的开始、 任务的结束、存储器阻挡指令、特定的时间消逝、计数器溢出、计数器到 达阈值、写入到控制寄存器、访问预定的区域内的地址、中断、打断点出
现、发送事件指令、等待事件指令、负荷独有的指令(如在例如ARM处理 器中发现的)、存储装置独有的指令(如在例如ARM处理器中发现的)、原 子存储器(atomic memory)操作(诸如基本比较与交换指令)、在总线上的 存储器阻挡指示、在总线上的负荷独有的指示、在总线上的存储装置独有 的指示、在总线上的原子存储器访问指示、和定时器之一。
可以触发数据的输出和数据存储装置的清洗和检测的重新开始的不 同的事件可以是许多事情。实际上可以使用有助于监控其间的访问的任何 事件。如果希望监控在该任务内出现的访问,实例是任务的开始和结束, 以及存储器阻挡指令,即被使用来保证在这个时刻执行对存储器的所有的 待决的访问的指令。替换地,事件可以是预定的时间消逝或计数器溢出或 达到阈值。如果在监控电路中使用计数器,后两种情形是特别有用的,因 为这避免被存储在计数器中的数据丟失。替换地,事件可包括写入到控制 寄存器。这个例子允许在用户的控制下进行触发,因为在处理器中的各种 事件可以由用户选择,以便触发把数值写入到控制触发器。在另一个实施 例中,事件可以是对特定的区域内特定的地址的访问,这个特定的区域可 以是存储对存储器区域的锁定的地方,因此,访问在那里指明存储器范围 是被锁住还是被开锁,或它可以是装置从其开始的区域,在这种情形下,访问在那里指示设备要被开始。替换地,事件可以是出现中断或断点。 在一些实施例中,所述监控数据输出还包括标识所述开始、清洗和结
束事件的至少一项的信号。
可以是,开始事件、结束事件或清洗事件被多个信号触发。在这种情
形下,可能希望发送具有监控数据的信号的指示,因为这将提供与监控数
据有关的、允许它更容易进行分析的附加信息。
在一些实施例中,所述监控数据还包括指示每次访问的时间的时间戳数据。
在监控时有用的另外的数据是时间戳数据,因为知道什么事件在什么 时间出现,常常是有用的,因为然后可以精确地推导出这些事件的次序。 如果处理器包括具有它的访问的时间戳数据,则这个数据对于监控是有用 的,以及在一些实施例中,它和监控数据一起被存储。
在一些实施例中,所述检测的访问的所述概括包括通过散列函数被计 算的所述访问的指印,而在其它实施例中,所述检测的访问的所述概括包 括所述访问的计数。
所述检测的访问可以以许多方式进行概括,这包括把数据组合,以使 得需要输出较少的数据并且数据仍旧是有用的。因此,散列函数可被使用 来组合最新的访问信息。数值序列的散列可被选择为如果两个序列的散列 是相同的,则有非常高的概率是序列也是相同的。也就是,散列函数可被 使用来生成对于数值序列的"签名"。计算数值序列的散列是码片上的概 括数据的数值的良好的说明原始的数值序列是大的(需要高的带宽来进行 追踪和大的空间用来存储),并且是笨拙的(序列可以具有可变的长度和需 要许多操作来进行比较),而概括插进存储器的仅仅一个或两个数据字中, 并且可以通过使用仅仅几个操作进行比较。替换地,数据访问次数的计数 可以是有用的,并且计数器可被使用来计数这个次数,并且可以输出这个 次数,而不是关于每个各个访问的信息。
在一些实施例中,所述监控电路包括计数器,用于计数对所述多个可 寻址的位置的访问的次数。
如果需要访问的计数,则在监控电路中可以使用计数器来计数所述访 问。这样的计数器可以是环绕计数器,或它可以是饱和计数器。饱和计数 器具有优点,即它避免如果在事件之间发生溢出时对于环绕计数器可能出 现的完全错误的信息被输出的风险。在一些实施例中,计数器可以是l比特饱和计数器,这可被使用于其中重要的是检测是否发生特定的访问而不 是访问的次数的场合。
在一些实施例中,所述多个可寻址的位置包括一个地址范围、多个地
址范围、 一组特定的地址和一个地址范围的反(inverse )的至少一项。
多个可寻址的位置可以是一个地址范围或多个地址范围,或它可以是 以不同的方式选择的一组特定的地址。替换地,它可以是一个地址范围的 反,以使得它是特定的范围以外的任何地址。如果希望检验特定的实体或 过程是否访问它允许的范围以外的地址的话,后者可以是有用的。
在一些实施例中,所述多个可寻址的位置包括多个地址范围,以及所 述检测的访问的所述概括包括关于所述访问是对于所述多个地址范围的 哪个地址的指示。
对于其进行访问的多个地址范围可被各个地监控,以使得关于对每个 范围的访问的信息被分开地存储,或对几个范围的访问可被集中在一起, 如果信息是所需要的信息的话。
在一些实施例中,所述检测的访问的所述概括还包括指示访问的类型 的数据、标识作出所述访问的实体的标识符、指示由至少一个所述实体进 行的每种类型的所述访问的次数的数据和关于所述访问是对多个地址范 围中的哪个地址范围的指示的至少 一 项。
除了访问次数以外,^t括还可包括访问的类型、和标识作出访问的实 体的标识符。实体可以是许多事物,诸如某种主体,例如处理器或加速器。 概括还可包括关于例如它是读出还是写入的访问类型的信息。访问的计数 可以是访问的总数的计数,或可以是来自不同的实体的不同的访问类型可 能被分开地计数。当为了性能或为了检错原因分析处理设备时,可以看到, 关于在两个事件之间出现的由每个实体对特定的地址或特定的范围的地 址的访问的次数和类型的信息是有用的信息,因此,这样地概括信息将减 小数据输出而同时保持它的许多价值。
在一些实施例中,所述监控电路包括多个计数器,每个计数器涉及到 一个或多个所述实体、 一个或多个所述多个地址范围和数据访问的类型的 至少一项。
记录实体在其中执行访问的数据的 一个方法是使得计数器与每个实 体有关和每次在实体进行特定的访问时给计数器加增量。对于每个实体可
以有一个计数器,或可能希望计数由两个实体或几个实体一起作出访问,或对于每个实体可以有几个计数器,每个计数不同的类型的访问。计数器 也可以:故使用于不同的地址范围。
在一些实施例中,所述监控电路被耦接到在所述数据处理设备内的总 线端口,所述实体包括多个总线主控器。
虽然数据处理设备可以以许多方式被安排,但可能希望监控电路被耦 接到总线端口,这可以是总线主控器端口或总线受控器端口,监控电路然 后可以通过查看在总线主控器端口上的、表示从其发送信号的主控器的信 号而确定哪个实体发送哪个访问。
虽然在一些实施例中监控数据存储装置可以以许多方式被形成,但所 述监控数据存储装置包括高速緩沖存储器。
在一些实施例中,所述检测的访问的所述概括还包括还包括指示访问
的类型的数据、标识作出所述访问的实体的标识符、指示由至少一个所述
实体进行的每种类型的所述访问的次数的数据和关于所述访问是对多个
地址范围中的哪个地址范围的指示的至少一项,所述高速緩冲存储器被配
置成存储多组监控数据,每组监控数据与一个或多个所述实体、数据访问 类型和一个或多个所述多个地址范围的至少一项有关。
高速緩冲存储器可以有效地存储多组监控数据,由此避免需要许多单 独的数据存储装置,诸如单独的计数器。这可以是存储信息的有效的方式。
在一些实施例中,所述监控电路包括逻辑,用于响应于对所述高速緩 沖存储器已充满的检测和检测的访问,清洗所述多组监控数据中的 一组监 控数据。
使用高速緩沖存储器来存储信息的一个优点在于,要被检测的许多访 问可以不发生。在这样的情形下,在高速緩沖存储器中不使用存储空间, 高速緩冲存储器只存储已出现的访问的计数。如果访问确实出现,并且没 有更多空间来存储它,则在一些实施例中,与不同的访问有关的、已收集 的较早先数据被输出,然后存储空间可被使用来存储新检测的访问。
在一些实施例中,所述数据处理设备包括多个处理单元和多个监控电路。
这里使用的监控电路可被使用来监控具有诸如处理器那样的几个处
理单元、总线主控器和DMA控制器的复杂的数据处理设备。为了做到这 一点,单个监控电路可以与由多个处理器检测访问相结合地使用,或可以 使用多个监控电路,每个监控一个或几个处理器。这些多个电路可以由不同的开始和结束事件触发,或它们可以由同 一个事件触发。
在一些实施例中,所述数据处理设备还包括事件配置存储装置,所述 数据处理设备适配于响应于预定的指令写入到所述事件配置存储装置,所 述监控电路响应于在所述事件配置存储装置中存储的数值,或者开始监控 所述多个可寻址的位置,输出所述监控数据,或者清洗所述监控数据。
监控电路可以响应于在事件配置存储装置中存储的数值,以开始监 控,停止监控,输出和清洗监控数据。在这样的情形下,数据处理设备响 应于特定的指令写入到事件配置存储装置,因此,开始和停止监控可以由 被插入到代码中的指令控制,并由数据处理设备处理。
在一些实施例中,数据处理设备包括用于接收用于更新所述地址位置 存储装置的数据的数据输入端,所述地址位置存储装置用于存储标识所述 多个可寻址的位置的数据。
用于存储标识多个可寻址的位置的数据的地址位置存储装置可被更 新,以使得设备可配置来监控不同的地址。这可以响应于由用户或许经由
调试程序(debugger)输入的、在数据输入端处的信号而完成。替换地,它可 以由来自处理器的信号进行更新。
在一些实施例中,所述数据处理设备还包括来自所述数据处理设备的 输出端,用于响应于所述清洗事件输出所述监控数据,所述清洗事件包括 由所述数据处理设备生成的内部事件。
监控数据可以响应于清洗事件通过例如把该监控数据流出追踪端口 而直接从数据处理设备输出。该清洗事件包括由该数据处理设备生成的内 部事件以便实际上该设备自发输出监控数据而不是对对该监控数据的外 部请求作出反应。替换地,在其它实施例中,它可被存储在数据处理设备 上的存储器中,供以后被访问和分析。
按照本发明的第二方面,提供了监控数据处理设备的方法,包括执行 以下步骤多次检测开始事件;检测对多个可寻址的位置的访问,和把有 关所述检测的访问的概括的监控数据存储在所述监控数据存储装置;检测 结束事件;输出所述存储的监控数据;以及清除所述监控数据存储装置。
按照本发明的第三方面,提供了用于分析由按照本发明的第 一 方面的 数据处理设备生成的监控数据的方法,包括以下步骤
接收在多个开始和结束事件之间生成的、与对多个地址位置作出的访 问的概括有关的多组监控数据;组合来自不同监控数据组的监控数据,以便生成与更宽地间隔开的开
始和结束事件有关的新的监控数据组;以及
结合标识所述开始和结束事件和所述多个地址位置的数据分析所述 监控数据。
由本发明的第 一 方面的数据处理设备输出的监控数据需要进行分析。 这个监控数据被生成为多组监控数据,每组与在特定的事件之间发生的访 问相关。当分析数据时,这些组的有些组-故组合,以便生成与更宽地间隔 开的开始和结束事件有关的新的监控数据组。这样地組合这个监控数据使 得它能够如想要的那样被分析,以使得在直接触发监控组的收集的事件与 开始和结束不同的监控组的其它事件之间发生的访问可被用作为监控信 息。
在一些实施例中,所述监控数据还包括对哪个实体执行所述访问的指 外的地址。
通过选择要被监控的适当的地址范围和区分作出所述访问的实体,监 控数据可被使用来确定特定的实体是否执行对在允许范围以外的地址范 围进行访问。这是有用的信息,它表示在系统中可能有错误的地方。
替换地,在其它实施例中,所述监控数据还包括对哪个实体执行所述 访问的指示;所述分析步骤包括确定不同的实体是否对于在一个所述监控 数据组内的同 一个地址范围执行写入和读出。
分析在两个事件之间从不同的实体对同 一个地址范围的不同的读出 和写入的访问,还可以指示可能有竟争条件的地方。例如,如果当实体开 始任务时或当实体结束任务时所述同一个事件被触发,和如果所述同一个 地址范围对应于应当由一个任务一次独有地访问的变量,则如果一个实体 对地址范围执行非零次数的写入并且其它实体对该地址范围执行非零次 数的读出或写入,则它是错误。应当指出,任务是对于本申请中的处理的 同义词。
替换地,在其它实施例中,监控数据可被用作系统的性能的指示。在 这样的实施例中,所述分析步骤包括通过把访问次数除以在所述事件之间 的时间,而确定在不同的事件之间所述数据处理设备的性能。
本发明的第四方面提供计算机程序产品,其可操作来在数据处理器上 运行时控制数据处理器执行按照本发明的第三方面的方法的步骤。从结合附图被阅读的、以下的说明性实施例的详细说明将明白本发明 的以上的和其它的目的、特征和优点。


图1示出按照本发明的实施例的、具有监控电路的数据处理设备; 图2a示出按照本发明的实施例的、具有存储器观看单元和监控概括
单元的数据处理设备;
图2b示出按照本发明的实施例的、具有存储器观看单元和对应的监
控概括单元的数据处理设备;
图3示出按照本发明的另一个实施例的数据处理设备;
图4示意地示出具有不同的开始和结束事件的不同的处理过程;
图5示出按照本发明的实施例的监控电路;
图6示出按照本发明的实施例的、生成监控数据的方法;以及
图7是示出按照本发明的实施例的、分析监控数据的方法的流程图。
具体实施例方式
图1示出数据处理设备5,包括用于监控连接存储器30与处理器40 和DMA 50的总线20的监控电路10。
来自处理器40和DMA 50的、对从存储器30读出数据和写入数据到 存储器30的数据访问请求沿总线20传递,并被监控电路IO监控。
在本实施例中,监控电路IO被配置成监控对特定的地址范围的访问, 该特定的地址范围由被存储在数据存储装置12中的信息标识。数据存储 装置12由用户使用调试程序(debugger)经由输入60被更新,因此,监控电 路可^f皮重新配置成监控不同的地址范围。
监控电路10响应于特定的"开始"事件,开始收集来自总线的监控数 据。在本实施例中,所收集的监控数据是检测到的对指定的地址范围内的 地址的访问请求。这些请求触发在监控电路10内的"增量计数器"信号, 并且这信号被发送到该电路内的计数器14, 16。在检测到读出的情形下, 信号被发送到读出计数器14,而写入的检测触发要被发送到写入计数器 16的信号。因此,计数器14计数检测到的读出,计数器16计数检测到的 写入。在本实施例中,为了简化起见,只示出了两个计数器,但本领域技 术人员将会看到,可以有更多的计数器,每个计数器或许与不同的地址范 围和/或请求访问的实体相关,以使得可以计数来自不同的实体的在不同的地址范围中的读出和写入。
在本实施例中,另外的事件触发监控电路以输出它的监控数据,在这
种情形下是计数器14和16中的数值。监控数据经由输出端7被输出到分 析逻辑130,在其中分析该数据。此后,计数器被清除,以及当再次检测 到特定的"开始"事件时计数重新开始。
触发监控的开始和数值的输出和计数器的清洗的事件可以是许多事 物,但在本实施例中,它是对DMA开始或结束存储器转移或存储器阻挡 指令由处理器执行的检测。存储器阻挡指令是被使用来保证任何待决的存 储器访问在随后的指令被执行之前被执行的指令。因此,响应于存储器阻 挡指令,将执行对于指定的存储器的任何待决的读出或写入。所以这些指 令当被使用来触发监控数据的输出时可以是有用的,因为可以看到,在这 个时间点将已经执行了所有的待决的读出或写入。因此,处理器40命令 DMA50开始存储器转移,并且该开始指令沿总线行进,并由监控电路IO 检测。当存储器转移是完整时,DMA 50可以藉助于中断将这一点指示给 处理器40。这不是沿总线发送的,因此需要分开的通道来把它路由到监控 电路IO,因为正是这个信号是监控电路的结束事件。应当指出,在本实施 例中,从处理器到DMA的开始信号用作为开始事件,然而,在一些实施 例中,DMA可能没有响应于来自处理器40的开始存储器转移请求,而立 即开始存储器转移。在这样的情形下,DMA可能具有到监控电路10的另 一条线,当它确实开始执行请求的存储器转移时可以沿这条线发送信号, 替换地,监控电路可以检测在总线上的存储器访问请求,并且这个检测可 以用作为开始事件。
在本实施例中,计数器12和14是饱和计数器。在其它实施例中,可 以使用环绕计数器,只要它们是足够大,以使得它们不大可能环绕。在其 它实施例中,如果仅仅希望检测是否已经出现特定的访问而不是检测那些 访问的数目的话,可以使用1比特饱和计数器。
虽然在本实施例中,被存储在数据存储装置12中的地址位置标识符 标识地址范围,但在其它实施例中,它可以标识多个范围。替换地,它可 被使用于比较器,该比较器通过地址不匹配而不是匹配,而被触发,以便 标识在特定的范围以外的任何地址。如果对于处理有已知的允许范围,和 希望检验它没有访问这个范围以外的位置,则这可以是有用的。因此,可 以看到,这个系统可以以许多不同的方式被设计成监控不同的指定的事情,而输出已经被概括的这个数据并不需要高的带宽。
图2a示出按照替换实施例的数据处理设备5。在本实施例中,有几个 监控电路或存储器观看单元70a, b和c。存储器观看单元70a监控由处理 器42进行的访问,而存储器观看单元70b监控由处理器44进行的访问。 存储器观看单元70c监控对数据存储装置46进行的访问,这些各个存储 器观看单元监控被指定的、在特定的地址范围中的访问,并且它们把标识 它们已检测的访问的信号发送到中央概括单元72。概括单元72具有多个 数据存储装置,用于存储来自不同的存储器观看单元的信息。这些可包括 用来计数来自特定的存储器观看单元的特定的类型的访问的数目的计数 器,或它们可包括数据存储装置,用于存储通过访问信号被接收的、表示 访问发生的时间的时间戳信息,或它们可包括散列函数生成器,用于生成 和存储被检测到的访问的散列函数。另外,它们可记录由于竟争造成的停 止(stall)的次数,如果这样的事件被任何存储器观看单元监控的话。概 括单元72还包括用于接收清洗信号的输入。在本实施例中,这个清洗信 号响应于中断而被生成,它既用作"开始"、"结束,,和"清洗,,事件,使得被 存储在不同的计数器和数据存储装置的数据被输出到存储器80,被清洗或 清除;又用作从不同的存储器观看单元70a, 70b, 70c中再次收集的信息。 因此,实际上,中断结束特定的监控组,输出数据,清洗数据存储装置, 和由此开始新的监控组。因为中断不沿总线行进,所以中断需要从处理器 42被分开地发送到概括单元72。
可被使用的示例性散列函数生成器可以使用循环冗余检验(CRC)函 数,以及序列的概括由数据序列的CRC和序列的长度组成。两种情形是 特别感兴趣的
a) 由任务访问的地址序列常常在每次该任务执行时是相同的,所以任 务执行的地址序列的散列可被用作函数的签名,以便或者i)通过比较它与 系统中所有的任务的地址访问的散列而标识任务,或者ii)通过比较地址序 列的散列与任务的先前的执行的地址序列的散列,而认识到任务表现得不 同于正常如果签名是不同的,则任务表现得不同。
b) 如果一个任务把数值序列以与另 一个任务从存储器读出该数值序 列的相同的次序写入到存储器,则第 一任务的输出的散列将匹配于加到第 二任务的输入的散列。如果我们知道任务之间的数据的流动以及该任务以 特定的次序写入/读出它们的一个变量,则这个特性可被使用来通过比较应当匹配(和在数据转移期间例如还没有被毁坏)的数据签名而检验数据正在 从一个任务正确地转移到另一个任务。如果任务仅仅把数据从存储器的一 个区域复制到另 一个区域,则被读出的数据的签名应当与被重写的数据的 签名相同的,这样,我们可以确认通过比较任务的输入和输出签名而正确 地执行存储器复制。
如果我们不知道任务之间的数据的流动,那么这个特性可被使用来通 过查找其中一个任务的输出总是具有与加到以后任务的输入相同的签名 的情形而重建在系统中的部分的数据流动。
在本实施例中,不是把监控数据外部地输出到数据处理设备5,而是
把它发送到数据处理设备内的存储器80,在其中存储它。然后,它可以以 后被访问用于分析。
图2b示出与图2a类似的实施例,但在这个实施例中,每个存储器观 看单元70a和70b具有它自己的概括单元72a和72b。这些概括单元响应 于同一个信号开始和停止收集数据,输出这个收集的数据,并清除它们的 计数器。在本实施例中,数据被输出到输出端口 60a和60b。输出的数据 可被分开地分析,替换地,两个输出数据流可以通过使用软件将它们的对 应的开始/停止/清洗事件进行关联而被合并成单个数据流。
应当指出,虽然在这些实施例中存储器观看单元监控在特定的地址范 围中的被指定的访问,但它们也可以被使用来响应于检测到特定的访问而 触发例外,因此可被使用来实施观看点或存储器保护单元。
图3示出本发明的替换实施例。在这个实施例中,数据处理设备5具 有存储器观看单元80,它观看主总线90和监控由主控器Ml和M2对受 控器Sl和S2的访问。访问也可以由在不同的总线92上的其它主控器作 出,并且如果需要访问在这个总线上的设备,这些可以经由总线桥接器95 被发送到主总线卯。桥接器95发送访问信息,但去除有关哪个主控器生 成信号的信息,因此,为了标识哪些访问来自于总线92上的哪些主控器, 在本实施例中,使用监控主控器M3的总线主控器端口的另外的存储器观 看单元85。
在本实施例中,每个存储器观看单元80, 85收集与对于在地址范围 内指定的特定的地址范围的访问有关的数据,和响应于相同的"结束"事件 动作而输出这个数据。在这种情形下,存储器观看单元80, 85响应于在 控制寄存器97中的、由数据处理设备5设置的特定的数值,这些数值向存储器观看单元指示开始监控或结束监控。在这个控制寄存器97中的数 值由处理器响应于由用户插入在代码中的指令而进行设置。因此,监控的 开始和结束可以由用户控制。
虽然在本实施例中,存储器观看单元80和85被示出为响应于相同的 事件的分开的单元,但在一些实施例中,它们可以由不同的事件触发而开 始和结束监控。在这样的情形下,它们收集的信息将被分开地分析,虽然 它也可以;波组合。
图4示意地示出对于在本实施例中由不同的处理器P0, Pl和P2执行 的不同的处理A, B和C的监控如何被不同的开始和停止事件触发。在这 种情形下,开始和停止事件是特定的过程的开始和停止。因此,对于不同 的过程收集不同的监控数据组。这个信息可被分开地分析,或它可被组合。 例如,如果概括是在开始和停止事件之间的访问的次数,则相邻的概括可 通过相加在每个概括中访问次数而^皮组合。同样地,如果概括是访问序列 的CRC(循环冗余检验函数)和访问次数,则概括可以如下地组合
令〈crcl,M〉是第一概括
其中crcl是访问的CRC,和M是该CRC包括的比特数 令〈crc2,N〉是第二概括
其中crc2是访问的CRC,和N是该CRC包括的比特数,组合的概括 是〈CRC((crcl《N)xor crc2),M+N>
其中'crcK〈N,是第一crc向左移位N比特 xor计算它的自变量(argument)的异或值 以及CRC对它的输入数据计算CRC。
图5更详细地示出用于监控总线90的监控电路10。监控电路10包括 比较器105,用于比较访问的地址与存储的选择的地址范围。在本实施例 中,有两个被存储的不同地址范围,比较器根据哪个地址范围被匹配而输 出不同的信号。响应于检测到在一个范围内的地址,指出产生访问的实体 和所述访问是读出还是写入,以及对应于在这个地址范围内的来自于这种 类型的实体的这种类型的访问的、在高速緩冲存储器110内的计数器110a 被加增量。在本实施例中,有根据地址范围、实体和访问的类型^f皮计数的、 许多不同类型的访问,因此,在监控电路10中有许多计数器。这些计数 器在本实施例中被实施为非零计数器的高速緩沖存储器。当这些计数器的 许多计数器可以在长时间间隔内为零时这被完成,因此不是提供许多计数器,而是保持非零计数器的超高速存储器,当计数器被加增量时,它被加 到这个高速緩冲存储器中。在本实施例中,如果需要新的计数器,但在高 速緩冲存储器内没有更多的未使用的计数器是可用的,则输出一个计数器 值和清除计数器。要输出和清除的计数器可以以许多方式进行选择,例如, 可以使用循环方法。还有定时器,也用作为结束、开始和清洗事件,以使 得如果计数器在指定的时间内没有变为充满的,则在这个时刻,通过输出 端ll输出数据,并且清除计数器。
在本实施例中,比较器105通过找出地址的匹配而检测在指定的范围 内的访问。在其它实施例中,它可被使用来通过检测不匹配而检测在地址 范围以外的访问。如果知道,任务应当只访问特定的地址范围内的地址或 它不应当访问特定的范围(例如存储存储器的锁的地方),则这可以是有 用的。
本领域技术人员应当看到,组合来自每个实施例的不同的单元的不同 的实施例是可能的。例如,如果需要监控由几个处理器或加速器,诸如
DMA引擎,作出的访问,则使用几个监控电路可能是有利的。这些可被 放置在每个处理单元的总线主控器端口上,或放置在总线桥接器上,或放 置在被附加到被监控的存储器的总线上。它们实际上可被放置在其中它们 可以检测访问,如果需要,检测从其发送访问的实体,以及可能地,检测 诸如时间戳那样的附加信息的任何地方。
如果监控的目的是要检测竟争条件,则必须在由可能牵涉到竟争的任 何处理单元进行的访问之间加以区分。因此,在这样的情形下,在不同的 处理单元之间的访问需要在它们之间加以区分,以使得由两个不同的处理 单元在特定的时间内对同 一个地址范围的访问可被标识为潜在的竟争条 件。如果不需要这样做,则可不必在来自不同的处理单元的访问之间加以 区分,并且所需要的全部可以是仅仅计数沿特定的总线的访问。取决于所 需要的事物,可以使用计数不同的事物的不同的监控电路。
就开始和结束特定的检测组的信号而言,取决于所监控的内容,这些 可以是不同的事物。例如,无论何时任务在处理单元上开始时,可以发送 开始信号,以及无论何时任务在处理单元上完成时,可以发送结束信号。 这样,可以检测到在任务处理期间作出的访问。在这种情形下,开始和结 束事件信号可以通过对于来自硬连线加速器的多个开始/停止信号的逻辑
或运算被生成。替换地,它可以是指示功能调用(ftinction call)的开始或结束的中断点。在一些实施例中,开始和/或结束事件的特性可以依赖于环 境而改变,因此,把它与所收集的监控数据一起存储。
允许处理器通过例如把数值写入到诸如图3所示的的硬件上的控制寄 存器而明确地生成开始信号,也可以是有用的。这些通知可被插入到在
RTOS中的任何处理器间同步原语(synchronisation primitive )中的代码, 例如,在处理器内的上下文交换机处,无论何时锁^皮锁或释放时,或当线 程阻挡等待锁时。
就已被监控的地址的范围而言,这些可被存储在监控电路内,通常, 可能有多个感兴趣范围,每个可以使存储的访问概括与它们相关联,以使 得对不同的地址范围的访问可以分开地被标识,替换地,某些范围可以组 合,这样可以监控对这个组合的地址范围的访问。替换地,感兴趣的地址 可能不在特定的范围内,它们可以是以某个其它方式,诸如,例如通过轻 型滤波器(balloon filter)指定的不同的地址组。
图6是示出按照本发明的实施例的、生成监控数据的方法的流程图。 在检测到开始事件后,监控对于某些指定的可寻址的位置的访问,并且以 某种形式,或许作为计数器中的计数值,存储检测的访问的概括。这个过 程继续进行,直至检测的结束事件为止,此后输出在监控期间收集的存储 的数据,并且清洗监控数据存储装置。在检测到随后的开始事件后,处理 过程重新开始。
图7是示出按照本发明的实施例的、分析监控数据的方法的流程图。 在这个方法中,接收例如通过图6的方法生成的监控数据组。这些监控数 据组的某些监控数据互相组合,以便产生在更宽地间隔开的事件之间的新 的监控数据组。然后至少结合标识开始和结束事件和指定的地址位置的数 据,对数据进行分析。也可以收集和存储附加的数据,这也可以被使用于 分析。这样的数据可包括指示每个访问的时间的时间戳数据、指示执行访 问的实体的实体数据、访问数据的类型以及开始和/或结束事件的特性。
虽然这里参照附图详细地描述了本发明的说明性实施例,但应当看 到,本发明不限于那些精确的实施例,以及本领域技术人员可以在那里实 施各种改变和修改,而不背离如由所附权利要求指定的本发明的范围和精 神。
权利要求
1.一种数据处理设备,包括监控电路,用于监控在开始和结束事件之间发生的、对所述数据处理设备内多个可寻址的位置的访问,所述监控电路包括(i)用于存储标识要监控的所述多个可寻址的位置的数据的地址位置存储装置和监控数据存储装置;(ii)所述监控电路响应于所述开始事件的检测,检测对所述多个可寻址位置的访问和把有关所述检测的访问的概括的监控数据存储在所述监控数据存储装置中;(iii)所述监控电路响应于所述结束事件的检测,停止收集所述监控数据;(iv)所述监控电路响应于清洗事件的检测,输出所述存储的监控数据和清洗所述监控数据存储装置。
2. 按照权利要求1的数据处理设备,其中所述开始事件、所述结束事 件和所述清洗事件是同一个事件,以使得响应于所述同一个事件,所述监 控电路输出所述监控数据,清洗所述监控数据存储装置和开始检测对所述 多个可寻址的位置的访问。
3. 按照权利要求1的数据处理设备,其中所述开始、结束和清洗事件, 每个包括任务的开始、任务的结束、存储器阻挡指令、预定的时间消逝、 计数器溢出、计数器到达阈值、写入到控制寄存器、访问特定的区域内的 地址、中断、打断点出现、发送事件指令、等待事件指令、负荷独有的指 令、存储装置独有的指令、原子存储器操作、在总线上的存储器阻挡指示、 在总线上的负荷独有的指示、在总线上的存储装置独有的指示、在总线上 的原子存储器访问指示、和定时器之一。
4. 按照权利要求3的数据处理设备,其中所述监控数据输出还包括标 识所述开始、清洗和结束事件的至少一项的信号。
5. 按照权利要求1的数据处理设备,其中所述监控数据还包括指示每 次访问的时间的时间戳数据。
6. 按照权利要求1的数据处理设备,其中所述检测的访问的所述概括 包括通过散列函数被计算的所述访问的指印。
7. 按照权利要求1的数据处理设备,其中所述检测的访问的所述概括包括所述访问的计数。
8. 按照权利要求7的数据处理设备,其中所述监控电路包括计数器, 用于计数对所述多个可寻址的位置的访问的次数。
9. 按照权利要求1的数据处理设备,其中所述多个可寻址的位置包括 一个地址范围、多个地址范围、 一组特定的地址和一个地址范围的反的至 少一项。
10. 按照权利要求1的数据处理设备,其中所述多个可寻址的位置包 括多个地址范围,以及所述检测的访问的所述概括包括关于所述访问是对 于所述多个地址范围的哪个地址范围的指示。
11. 按照权利要求1的数据处理设备,其中所述检测的访问的所述概 括还包括指示访问的类型的数据、标识作出所述访问的实体的标识符、指示由 至少 一 个所述实体进行的每种类型的所述访问的次数的数据和关于所述访问是 对多个地址范围中的哪个地址范围的指示的至少 一项。
12. 按照权利要求11的数据处理设备,其中所述监控电路包括多个计 数器,每个计数器涉及 一个或多个所述实体、 一个或多个所述多个地址 范围和数据访问的类型的至少 一项。
13. 按照权利要求11的数据处理设备,其中所述监控电路被耦接到在 所述数据处理设备内的总线端口 ,所述实体包括多个总线主控器。
14. 按照权利要求1的数据处理设备,其中所述监控数据存储装置包 括高速緩沖存储器。
15. 按照权利要求14的数据处理设备,其中所述检测的访问的所述概 括还包括指示访问的类型的数据、标识作出所述访问的实体的标识符、指示是对多个地址范围中的哪个地址范围的指示的至少一项,所述高速緩沖存储器 被配置成存储多组监控数据,每组监控数据与一个或多个所述实体、数据 访问类型和一个或多个所述多个地址范围的至少一项有关。
16. 按照权利要求15的数据处理设备,其中所述监控电路包括用于响 应于所述高速緩沖存储器已满的检测和检测的访问,清洗所述多组监控数 据之一的逻辑。
17. 按照权利要求1的数据处理设备,所述数据处理设备包括多个处 理单元和多个监控电路。
18. 按照权利要求1的数据处理设备,所述数据处理设备还包括事件 配置存储装置,所述数据处理设备适配于响应于预定的指令写入到所述事件配置存储装置,所述监控电路响应于在所述事件配置存储装置中存储的 数值,或者开始监控所述多个可寻址的位置,输出所述监控数据,或者清 洗所述监控数据。
19. 按照权利要求1的数据处理设备,包括用于接收用于更新所述地 址位置存储装置的数据的数据输入,所述地址位置存储装置用于存储标识 所述多个可寻址的位置的数据。
20. 按照权利要求1的数据处理设备,包括从所述数据处理设备的输 出,用于响应于所述清洗事件输出所述监控数据,所述清洗事件包括由所 迷数据处理设备生成的内部事件。
21. —种监控数据处理设备的方法,包括多次执行以下步骤 ①检测开始事件;(ii) 检测对多个可寻址的位置的访问,和把有关所述检测的访问的概括 的监控数据存储在所述监控数据存储装置中;(iii) 检测结束事件;(iv) 输出所述存储的监控数据;以及(v) 清除所述监控数据存储装置。
22. —种用于分析由按照权利要求1的数据处理设备生成的监控数据 的方法,包括以下步骤(i) 接收在多个开始和结束事件之间生成的、与对多个地址位置作出的 访问的概括有关的多组监控数据;(ii) 从连接或重叠多组监控数据来组合监控数据,以便生成与更宽地间 隔开的开始和结束事件有关的新的监控数据组;以及(iii) 结合标识所迷开始和结束事件和所述多个地址位置的数据,分析 所述监控数据。
23. 按照权利要求22的方法,(i)其中所述监控数据还包括对哪个实体执行了所述访问的指示;以外的地址。
24. 按照权利要求22的方法,(i) 其中所述监控数据还包括对哪个实体执行了所述访问的指示;(ii) 所述分析步骤包括确定不同的实体是否对于在所述监控数据组之 一内的同 一个地址范围执行了写入和读出。
25. 按照权利要求22的方法,(i)其中所述分析步骤包括通过把访问次数除以在所述事件之间的时 间,而确定在不同的事件之间所述数据处理设备的性能。
26. —种计算机程序产品,其可操作来在数据处理器上运行时控制数 据处理器以执行按照权利要求22的方法的步骤。
全文摘要
本发明涉及监控数据处理设备和概括监控数据。公开了一种数据处理设备,其包括监控电路,用于监控在开始和结束事件之间发生的、对所述数据处理设备内多个可寻址的位置的访问,所述监控电路包括用于存储标识要监控的所述多个可寻址的位置的数据的地址位置存储装置和监控数据存储装置;所述监控电路响应于所述开始事件的检测,检测对所述多个可寻址位置的访问和把有关所述检测的访问的概括的监控数据存储在所述监控数据存储装置中;以及所述监控电路响应于所述结束事件的检测,停止收集所述监控数据;所述监控电路响应于清洗事件的检测,输出所述存储的监控数据和清洗所述监控数据存储装置。
文档编号G06F11/36GK101625657SQ20091014022
公开日2010年1月13日 申请日期2009年7月9日 优先权日2008年7月9日
发明者A·D·赖德, J·古芬斯, K·E·克尼博恩, L·D·史密斯 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1