首页> 中国专利> 用于监测数据处理系统中的事件的装置和方法

用于监测数据处理系统中的事件的装置和方法

摘要

提供了一种用于监测数据处理系统中的事件的装置和方法。该装置包括第一事件监测电路,用于监测数据处理系统内的第一事件的发生,并断言指示该第一事件的每第m次发生的第一信号,其中,m为1或更大的整数。此外,第二事件监测电路被用于监测数据处理系统内的第二事件的发生,并断言指示该第二事件的每第n次发生的第二信号,其中,n为1或更大的整数。然后,历史维护电路维护事件历史信息,该事件历史信息根据所断言的第一信号和第二信号进行更新。此外,历史分析电路响应于分析触发来分析事件历史信息,以在事件历史信息指示第一事件的发生与第二事件的发生之间的比率在可接受范围之外时检测到报告条件。然后,历史分析电路响应于检测到报告条件,断言报告信号。这提供了用于监测数据处理系统内的事件的比率的特别有效和高效的机制。

著录项

  • 公开/公告号CN112639744A

    专利类型发明专利

  • 公开/公告日2021-04-09

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN201980055717.7

  • 申请日2019-08-30

  • 分类号G06F11/30(20060101);G06F11/34(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人陈蒙

  • 地址 英国剑桥

  • 入库时间 2023-06-19 10:32:14

说明书

技术领域

本技术涉及用于监测数据处理系统中的事件的装置和方法。

背景技术

已知提供一种具有性能监测电路的数据处理系统,该性能监测电路用于生成指示数据处理系统的处理性能的性能监测数据。例如,性能监测电路可以对在数据处理系统内发生的事件的发生进行计数,例如,指令的执行或缓存未命中。当计数器达到给定值时可能生成中断,使得当出现性能问题(例如,大量的缓存未命中)时,可以触发处理系统基于性能监测数据来执行给定操作,例如,解决由性能监测数据标识的性能问题的操作。

性能监测电路可以为多个事件维护单独的事件计数。在一些情况下,希望能够在监测数据处理系统内的性能时高效且可靠地监测事件的比率。

发明内容

在一个示例布置中,提供了一种装置,该装置包括:第一事件监测电路,用于监测数据处理系统内的第一事件的发生,并断言(assert)指示该第一事件的每第m次发生的第一信号,其中,m为1或更大的整数;第二事件监测电路,用于监测数据处理系统内的第二事件的发生,并断言指示该第二事件的每第n次发生的第二信号,其中,n为1或更大的整数;历史维护电路,用于维护事件历史信息,该事件历史信息根据所断言的第一信号和第二信号进行更新;以及历史分析电路,用于响应于分析触发来分析事件历史信息,以在事件历史信息指示第一事件的发生与第二事件的发生之间的比率在可接受范围之外时检测到报告条件;其中,历史分析电路响应于检测到报告条件,断言报告信号。

在另一示例布置中,提供了一种监测数据处理系统中的事件的方法,该方法包括:监测数据处理系统内的第一事件的发生,并断言指示该第一事件的每第m次发生的第一信号,其中,m为1或更大的整数;监测数据处理系统内的第二事件的发生,并断言指示该第二事件的每第n次发生的第二信号,其中,n为1或更大的整数;采用历史维护电路来维护事件历史信息,该事件历史信息根据所断言的第一信号和第二信号进行更新;响应于分析触发,采用历史分析电路来分析事件历史信息,以在事件历史信息指示第一事件的发生与第二事件的发生之间的比率在可接受范围之外时检测到报告条件;以及响应于检测到报告条件,断言报告信号。

在又一示例布置中,提供了一种装置,包括:第一事件监测装置,用于监测数据处理系统内的第一事件的发生,并断言指示该第一事件的每第m次发生的第一信号,其中,m为1或更大的整数;第二事件监测装置,用于监测数据处理系统内的第二事件的发生,并断言指示该第二事件的每第n次发生的第二信号,其中,n为1或更大的整数;历史维护装置,用于维护事件历史信息,该事件历史信息根据所断言的第一信号和第二信号进行更新;以及历史分析装置,用于响应于分析触发来分析事件历史信息,以在事件历史信息指示第一事件的发生与第二事件的发生之间的比率在可接受范围之外时检测到报告条件;其中,历史分析装置响应于检测到报告条件,断言报告信号。

附图说明

将参考如附图中所示的示例仅以说明的方式来进一步描述本技术,在附图中:

图1示意性地示出了具有性能监测电路的数据处理系统;

图2是示出根据一个示例的在图1的性能管理单元内提供的组件的框图;

图3和图4示出了根据一个特定示例实施方式的在图2的性能管理单元内提供的组件;

图5是示出根据一个示例实施方式的图2的事件监测电路的操作的流程图;

图6是示出根据一个示例实施方式的历史维护电路的操作的流程图;

图7是示出根据一个示例实施方式的历史分析电路的操作的流程图;

图8是示出根据一个示例实施方式的预热限定电路(warmup qualificationcircuitry)的操作的流程图;

图9是示出根据一个示例实施方式的异常信号生成电路的操作的流程图;

图10示出了表联接(join)操作;以及

图11是示出在一个示例实施方式中可以如何使用本文描述的性能监测技术来确定是否在可用于执行图10的表联接操作的不同算法之间进行切换的流程图。

具体实施方式

如前所述,在一些情况下,希望能够在监测数据处理系统内的性能时高效且可靠地监测事件的比率。US 2014/0013020描述了一种系统,该系统可以针对多个事件维护单独的事件计数,其中,可以在特定时间点确定两个事件的事件计数的比率,并且如果比率超过期望水平,则触发异常。在使用性能监测时考虑事件的比率可能有用,因为此类信息例如可以用于进行动态系统配置更改,以更好地匹配应用的运行时行为。然而,上述技术仅允许在受限的离散时间点执行比率分析。具体地,在第一事件计数达到阈值的点处,然后确定第二事件计数是否也已经达到其阈值,并且如果是,则可以发出异常触发。然而,如果不是这种情况,则两个计数器都被重置。因此,将认识到,上述技术要求在离散的有界间隔内超过该比率。尽管这种方法可以提供可在多种情况下使用的、用于检查比率的简单机制,但由于分母(denominator)跨有界间隔达到其临界值,因此可能导致从未检测到超过比率的特定情况。

本文描述的技术提供了一种改进的机制,用于在数据处理系统内的性能监测期间分析事件的比率。

在示例布置中,提供了一种用于在数据处理系统内执行性能监测的装置。该装置具有第一事件监测电路,用于监测数据处理系统内的第一事件的发生,并且用于断言指示该第一事件的每第m次发生的第一信号,其中,m为1或更大的整数。此外,使用第二事件监测电路来监测数据处理系统内的第二事件的发生,并断言指示该第二事件的每第n次发生的第二信号,其中,n为1或更大的整数。此外,提供历史维护电路以维护事件历史信息,该事件历史信息根据所断言的第一信号和第二信号进行更新。

历史分析电路然后响应于分析触发来分析事件历史信息,以便在事件历史信息指示第一事件的发生与第二事件的发生之间的比率在可接受范围之外时检测到报告条件。历史分析电路然后可以布置为在检测到报告条件时断言报告信号。然后例如可以使用报告信号来确定向中断控制器断言异常信号是否是适当的。

根据上述技术,不同于试图评估在特定的离散时间点(例如,在第一事件计数已经达到预定水平时)是否已经超过比率,对事件历史信息的使用使得能够执行期望比率的连续监测,因此减轻了对前面讨论的技术的限制。根据所描述的技术,事件历史信息由历史维护电路根据由第一事件监测电路和第二事件监测电路断言的第一信号和第二信号在持续的基础上进行维护。每次接收到分析触发时,都会分析事件历史信息,以检测比率已超出可接受范围的情况。这提供了一种用于持续监测两个事件的发生比率的高效机制,从而在实时监测采用上述装置的系统的性能方面提供了显著改进。

历史分析电路可以通过多种方式确定该比率何时在可接受范围之外。然而,在一个示例布置中,历史分析电路被布置为当事件历史信息指示该比率已经达到所选阈值时,检测到该比率在可接受范围之外。如果需要,可以通过上阈值和下阈值对可接受范围进行编码,但是在一种实施方式中,可以通过单个阈值来标识所选阈值,并推断范围的另一端,例如,逻辑0值。所选阈值可以以多种方式来标识,例如,根据需要使用整数值或分数值。

用于使历史分析电路分析事件历史信息的分析触发可以采取多种形式。然而,在一个示例中,每次事件历史信息被更新时,生成分析触发。因此,这允许连续监测感兴趣的比率,确保每次生成可能影响比率的信息时都可以重新评估比率。

历史维护电路可以采取多种形式,但是在一个示例实施方式中,包括具有多个条目的历史存储装置,其中,每个条目被布置为存储历史数据项,并且其中,每个历史数据项指示对第一信号的断言或对第二信号的断言。因此,历史存储装置中的各个历史数据项标识对第一信号或第二信号的各个断言,然后该信息用于分析第一事件和第二事件的发生比率。

在一个示例实施方式中,历史维护电路还包括更新电路,该更新电路被布置为接收第一信号和第二信号,并使得历史存储装置根据接收到的第一信号和第二信号被更新。

更新电路可以以多种方式操作。例如,这可使得历史存储装置在每次断言第一信号或第二信号时被更新。然而,如本文后面将讨论的,在一个示例实施方式中,在一些特定情况下,当断言第一信号和第二信号时可能不会使得发生更新。具体地,如果在同时断言第一信号和第二信号二者时不包括更新,则可以实现装置的显著简化。尽管这可能潜在得导致一些信息的丢失,但是可以通过选择m和n的值(不是彼此的倍数)来大大缓解这种情况。

可以以多种方式来组织历史存储装置,但是在一个示例实施方式中,其被布置为包括p个条目的移位寄存器,并且响应于来自更新电路的更新触发,将新的历史数据项添加到移位寄存器的头部条目。

在这样的实施方式中,历史存储装置可以被布置为使得在添加每个新的历史数据项时,丢弃移位寄存器内的最旧的历史数据项,使得移位寄存器保持p个最新的历史数据项。因此,在这种布置中,移位寄存器可以有效地维持历史信息的滑动窗口,其中,所保持的历史数据的量取决于移位寄存器所提供的条目的数量。这意味着在移位寄存器中的条目的初始填充之后的任何时间点,历史信息的量被保持是相同的,这可以简化历史分析电路所执行的用于确定比率是否在可接受范围之外的分析。然而,在替代布置中,可以维护不同形式的历史存储装置,其允许历史信息的量随时间增加,并且然后历史分析电路在执行比率分析时,将需要考虑在存储装置内维护的历史信息的总量。

在其中历史存储装置由移位寄存器形成的实施方式中,则可以以多种方式来组织移位寄存器。在一个具体实施方式中,移位寄存器是串行输入并行输出(serial-in-parallel-out)移位寄存器,并且历史分析电路连接到移位寄存器的输出,以便响应于分析触发而接收p个历史数据项。因此,在这种布置中,历史分析电路可以从移位寄存器并行地获得所有历史数据项,改善了比率分析操作的性能。

移位寄存器的输入被耦合到第一信号和第二信号信息的方式可以采取多种形式。例如,可以提供多路复用布置,使得可以在任何时间点将第一信号或第二信号提供给移位寄存器的输入,例如,根据第一信号被断言还是第二信号被断言。然而,在一个具体示例实施方式中,可以通过仅将移位寄存器的输入布置为耦合到第一信号来实现显著简化。然后,在发生更新触发时,添加到移位寄存器的头部条目中的新的历史数据项指示第一信号的当前值。

在一个示例实施方式中,第一信号可以具有逻辑1或逻辑0值,取决于其是否被断言。例如,逻辑1值可以指示第一信号被断言,而逻辑0值可以指示第一信号被去断言(deassert)。在其中断言第一信号并触发对移位寄存器的更新的情况下,在该情况下可以将逻辑1值写入移位寄存器的头部条目,以标识对第一信号的断言。相反,如果第二信号被断言而第一信号未被断言,则这可能使得在由第二信号的断言而触发的更新操作期间,将逻辑0值(即未断言的第一信号的值)存储到移位寄存器的头部条目中。在这样的布置中,移位寄存器的条目中的逻辑0值将被解释为指示第二信号的断言的实例。

在这样的布置中,更新电路可以被布置为在第一信号被断言或第二信号被断言之一时发出更新触发,但在第一信号和第二信号同时被断言时省略更新触发。如前所述,虽然这在原则上可能会导致一些信息丢失,但是在大多数实际情况下,可以通过适当选择m和n来大大缓解这种情况,从而通过要求仅第一信号连接到移位寄存器的输入来实现电路的显著简化。

在一个示例布置中,每个历史数据项存储用于指示对第一信号的断言的第一值和用于指示对第二信号的断言的第二值,并且历史分析电路包括阈值指示存储装置,该阈值指示存储装置用于标识阈值信息,该阈值信息被用于通过参考历史存储装置的条目中所存储的值来确定比率何时在可接受范围之外。

阈值信息可以采用多种形式。例如,它可以为第一值和第二值指定单独的阈值。然而,在其中历史存储装置中有预定的固定数量的条目的情况下(例如,在较早讨论的移位寄存器示例中),则可以仅通过使用单个阈值来提供阈值信息,例如以标识历史存储装置的条目中的第一值的发生次数。

在一个示例实施方式中,该装置还包括异常信号生成电路,该异常信号生成电路被布置为根据报告信号是否被断言来向数据处理系统的中断控制器断言异常信号。异常信号生成电路可以例如被布置为每次报告信号被断言时,断言异常信号。然而,替代地,在存在所断言的报告信号的情况下,当确定是否断言异常信号时,它可以考虑许多其他信号。如果需要,这可以例如涉及参考一个或多个指示其他事件的发生次数的信号。替代地,或者另外地,还可以向异常信号生成电路提供限定信号,并且在存在所断言的报告信号的情况下,可能需要在断言异常信号之前断言该限定信号。

具体地,在一个示例布置中,该装置还包括预热限定电路,该预热限定电路用于基于报告信号来抑制异常信号的生成,直到已经对由历史维护电路所维护的事件历史信息进行了确定次数的更新为止。因此,这种方法可以确保在历史存储装置的填充的早期阶段期间不会触发任何异常。因此,在该情况下,存储装置中的每个条目被初始化为什么值并不重要,因为通过适当地设置预热限定电路,可以确保在至少所有条目已经基于对第一信号和第二信号的断言被有效地更新之前,不会生成异常信号。

可以以多种方式来组织预热限定电路,但在一个示例中,包括更新计数器存储装置,用于维护指示已经对事件历史信息进行的更新次数的更新计数值,并且预热限定电路被布置为当更新次数达到限定阈值时断言限定信号。然后,异常信号生成电路被布置为当报告信号和限定信号二者被断言时断言异常信号。因此,通过适当地指定限定阈值,可以确保在对所断言的报告信号进行任何依赖以生成所断言的异常信号之前,相对于历史存储装置发生预定最小数目的更新。

第一事件监测电路和第二事件监测电路可以以各种方式来组织。在一个简单的实施方式中,m和n二者可以设置为1,以便在每次发生第一事件和第二事件时,断言第一信号和第二信号。然而,在替代布置中,m和/或n可被选择为大于1的整数。

例如,在一个示例实施方式中,m大于1,并且第一事件监测电路包括第一事件计数器存储装置,用于维护第一事件计数值,该第一事件计数值指示自重置事件以来观察到的第一事件的发生次数,并且第一事件监测电路被布置为当发生次数达到值m时断言第一信号,然后重置事件被触发,以将第一事件计数值重置为初始值。类似地,在一个示例布置中,n大于1,并且第二事件监测电路包括第二事件计数器存储装置,用于维护第二事件计数值,该第二事件计数值指示自重置事件以来观察到的第二事件的发生次数,并且第二事件监测电路被布置为当发生次数达到值n时断言第二信号,然后重置事件被触发,以将第二事件计数值重置为初始值。

由于每个历史数据项都可以与第一信号或第二信号的断言相关联,并且将仅在分别观察到第一事件或第二事件的某些多次发生之后才断言第一信号和第二信号,因此通过使用较大的m和n值,可以增加在历史存储装置中维护的有效的历史信息的量。然后,与历史分析电路相关联地维护的阈值信息可以适于考虑由第一事件监测电路和第二事件监测电路所使用的m和n的值,从而确保在第一事件的发生和第二事件的发生之间的比率在期望范围之外时,检测到报告条件。

可以以多种方式来维护m和n的值,但在一个示例实施方式中,该装置具有可配置阈值存储装置,用于维护对m和n的值的指示。因此,这使得可以根据需要来调整m和n的值。

现在将参考附图描述具体示例。

图1示出了数据处理系统2,其具有用于执行数据处理的处理器4、用于存储要由处理器4处理的数据的缓存6、以及存储器8。系统2还具有用于存储虚拟到物理地址转换数据的转换后备缓冲器(TLB)10,该虚拟到物理地址转换数据用于将处理器4所使用的虚拟地址映射到存储器8所使用的物理地址,以及分支预测器12,用于预测是否采用分支指令。图1中所示的布置是示例,并且将理解,系统2还可以包括图1中未示出的其他元件,或者实际上一些示例系统可能不包括图1中示出的所有组件。

系统2包括性能监测单元20,用于生成指示数据处理系统2的处理性能的性能监测数据。性能监测单元20从数据处理系统2的其他元件4、6、8、10、12接收事件信号22,每个信号22指示相应事件的发生。例如,可以从处理器4接收指示处理周期的经过或指令的执行的事件信号22,或者可以从缓存6或TLB 10接收指示缓存或TLB访问或未命中的事件信号。还可以从存储器8接收指示存储器访问的事件信号22,或者从分支预测器12接收指示分支预测或分支错误预测的事件信号22。将理解,这些示例不是穷举的,并且性能监测单元20还可以接收指示许多其他种类的事件的信号。响应于信号22,性能监测单元20生成性能监测数据。性能监测数据可以稍后被捕获和分析,以确定系统2的性能。

系统2还包括中断控制器30,用于生成中断信号。响应于中断信号,处理器4中断其当前处理,并执行与该中断信号相对应的中断处理例程。可以出于不同的目的生成许多不同的中断信号,例如,触发处理器来执行特定任务或发信号通知错误。一种中断信号是性能监测中断信号,其由中断控制器30响应于由性能监测单元20生成的性能监测数据而生成。因此,如果性能监测数据指示特定性能条件,则中断控制器30可以中断处理器4的处理,并触发处理器4来执行与检测到的性能条件相关联的预定操作。

图2是示出根据一个示例的在图1的性能监测单元(PMU)20内提供的组件的框图。来自数据处理系统内的各个组件的事件由事件过滤器/路由器组件100接收,其可以确定PMU当前是否设置为监测每个此类事件,并然后可以将被监测的每个事件路由到适当的事件监测电路。在该示例中,提供第一事件监测电路105和第二事件监测电路110以分别监测第一事件的发生和第二事件的发生。具体地,图2所示的电路用于监测第一事件的发生与第二事件的发生的比率。PMU可以被布置为仅监测这两个事件,或者替代地,可以具有附加电路(未示出),用于监测系统内其他事件的发生。

第一事件监测电路105被布置为断言第一信号以指示第一事件的每第m次发生,并且类似地,第二事件监测电路被布置为断言第二信号以指示第二事件的每第n次发生。m和n的值可以是固定的,或者替代地,可以是可配置的,通过提供适当的存储元件以保持m和n的值。此外,m可以是一或更大的任何整数值,并且类似地,n可以是一个或更大的任何整数值。应当理解,当m或n被设置为等于1时,相应的事件监测电路将针对相关联事件的每次发生断言信号。然而,在以下讨论的示例中,将假定m和n均为复数整数值,使得不会分别在每个第一事件或第二事件的发生时断言第一信号和第二信号,而是仅分别在第一事件或第二事件的某些多次发生时才进行断言。这可以增加可在系统内维护的历史信息的量。

如图2所示,来自第一事件监测电路105和第二事件监测电路110的所断言的第一信号和第二信号被路由到历史维护电路115,其提供具有多个条目的历史存储装置125,其中,每个条目可用于存储历史数据项。在本文讨论的示例中,每个历史数据项指示对第一信号的断言或对第二信号的断言。

历史维护电路115内的更新电路120被布置为分析接收到的第一信号和第二信号,并确定何时更新历史存储装置125的内容。在一个实施方式中,更新电路可以被布置为每次第一信号或第二信号被断言时更新历史存储装置。然而,在稍后参考图3和图4讨论的具体示例实施方式中,通过在同时断言第一信号和第二信号二者时不包括对历史存储装置的更新,可以实现装置的显著简化。

更新电路120可以直接向历史存储装置125标识要存储在历史存储装置内的每个新的历史数据项,或者替代地,历史存储装置可以直接从第一信号和/或第二信号导出该信息,并且更新电路120仅向历史存储装置125发出触发信号,以标识何时应更新历史存储装置的内容。

历史存储装置可以采用多种形式。例如,可以以如下方式布置,使得当第一信号和第二信号的断言的新实例发生时,所维护的历史信息的总量随时间增加。然而,在下文参考图3和图4讨论的具体实施方式中,历史存储装置包括预定数量的条目,使得在任何特定时间点,所维护的历史信息的量是恒定的。这可以简化由历史分析电路130执行的历史信息的分析。在一个示例实施方式中,历史存储装置125由移位寄存器形成,使得每个新的历史数据项被添加在移位寄存器内的头部位置处,同时丢弃最旧的历史信息项。

更新电路120还被布置为向历史分析电路130发出分析触发,以使历史分析电路来分析历史存储装置的当前内容。可以以多种方式生成分析触发,但在一个示例中,每次历史存储装置被更新时,分析触发被发送到历史分析电路130,从而允许连续监测第一事件和第二事件的发生之间的比率,确保每次生成可能影响比率的信息时都可以重新评估该比率。

历史分析电路130可以访问阈值信息135,该阈值信息135用于参考存储在历史存储装置125的条目中的值来确定比率何时在可接受范围之外。在一个实施方式中,历史信息项具有指示第一信号的断言的第一值,并具有指示第二信号的断言的第二值。阈值信息可以采取各种形式,并且可以例如为第一值和第二值指定单独的阈值。此外,可以以分数或整数形式指定阈值信息。然而,在其中历史存储装置中的条目总数为固定的一个具体实例中,可以仅通过使用单个阈值来提供阈值信息,例如,以标识历史存储装置125的条目中的第一值的发生次数,其将被认为指示该比率已经超出可接受范围。

一旦响应于分析触发,历史分析电路130确定该比率已经超过允许范围,则其向异常信号生成电路140断言报告信号。在这种情况下,异常信号生成电路140可以被布置为直接向中断控制器30断言异常信号,或者替代地,在存在所断言的报告信号的情况下,在确定是否断言异常信号时可以考虑一个或多个其他信号。

例如,异常信号生成电路140还可以从PMU内的其他组件接收指示相对于其他事件计数已达到阈值的信号,并且可以将该信息与所断言的报告信号结合使用,以确定何时生成异常信号。

替代地,报告信号可以直接用于生成异常信号,但异常信号的生成可以由限定信号限定,如图2中虚线所示的组件所示。具体地,可以提供预热限定电路145,其接收来自更新电路120的信息,该信息用于标识自重置事件以来对历史存储装置125进行的更新次数。基于该信息,预热限定电路145可以被布置为一旦某个预热时间段已经过去,则断言限定信号。预热时间段例如可以等同于对历史存储装置125进行的更新次数。这种方法可以确保例如不断言限定信号,直到已经对历史存储装置进行了一定数量的更新为止,例如,至少足以确保历史存储装置中的每个条目已经基于由历史维护电路接收的所断言的第一信号和/或第二信号被直接填充的更新次数。因此,历史存储装置中的条目被初始化为什么值并不重要,因为使用限定信号将确保异常信号生成电路不会根据任何所断言的报告信号而动作,直到预热时间段已经过去为止。

在一个示例实施方式中,在存在所断言的限定信号的情况下,在每次断言报告信号时,异常信号生成电路140都将向中断控制器30断言异常信号,如先前所讨论的,其然后可以使中断控制器中断CPU 4所执行的处理,以使CPU 4执行与检测到的性能条件相关联的预定操作。例如,这样的预定操作可以使得能够对系统进行动态系统配置更改,以更好地匹配应用的运行时行为,例如,通过增加处理器频率。作为另一示例,如将在下文中参考图10和图11所讨论的,由中断控制器触发的这种预定操作可以使得关于是否在用于执行数据处理系统内的特定处理的不同算法之间切换进行评估。

图3和图4示出了图2的装置的具体示例实施方式。由PMU执行的处理在概念上可以分为两个阶段,第一阶段如图3所示并且第二阶段如图4所示。

如图3所示,来自系统200内的事件由多路复用组件205接收,其实现图2的事件过滤器/路由器100的功能,并且其操作可以由配置块230控制。具体地,配置块允许PMU中的特定硬件计数器被配置为维护特定事件的计数,因此,通过配置块230中的适当配置,事件计数器210可以设置为第一事件的计数器,并且事件计数器215可以设置为第二事件的计数器,并且多路复用组件205被配置为将第一事件的每次发生路由到第一事件计数器210,并且将第二事件的每次发生路由到第二事件计数器215。如从前面的讨论中明显的,事件可以采取多种形式,与系统中的各种不同组件内发生的动作有关,并且出于本文所述的技术的目的,跟踪哪些事件并不重要。然而,在本文示出的示例中,假设期望监测第一事件的发生与第二事件的发生的比率。

图2的第一事件监测电路105由图3中的组件210、220和235实现,而第二事件监测电路110由图3中的组件215、225和240实现。具体地,配置块230可用于设置阈值存储元件220、225内的m和n的值。如前所述,这些值可被设置为1,但在下文讨论的示例中,将假设m和n二者均为复数整数。

如图3所示,第一事件计数器210和阈值存储装置220的内容被提供给比较电路235。当比较电路235检测到第一事件计数器已经达到值m时,第一信号在路径237上断言,并然后在后续时钟周期,第一事件计数器被重置为初始值,例如,重置为0。

类似地,比较器240将第二事件计数器210中保持的计数值与存储元件225中的阈值n进行比较,并在第二事件计数器达到n时断言第二信号,此后在后续时钟周期,第二事件计数器被重置。

图5是示出每个事件监测电路的操作的流程图。在步骤300处,等待事件的发生,这由从多路复用块205传播到相关的事件计数器210、215的信号来指示。一旦检测到事件的发生,则在步骤305处,事件计数器元件210、215内的计数器递增,然后使用比较组件235、240将该计数器值与阈值进行比较。作为该比较的结果,然后在步骤315处,确定是否已经达到阈值水平。

如果未达到阈值水平,则处理返回到步骤300,以等待事件的另一次发生。然而,一旦达到阈值,则将相关联的信号断言为第二阶段,此后在步骤325处,重置计数器,并且处理然后返回到步骤300。

第一信号237和第二信号239被转发到图4所示的阶段2。在图3和图4所示的示例中,假定信号的逻辑0值指示未断言状态,而逻辑1值指示断言状态。然而,将认识到,这是设计选择的问题,并且通过对图4所示的组件的适当调整,与未断言状态和断言状态相关联的值可被翻转。

如图4所示,在该示例中,历史维护电路的更新电路由XOR门250形成,其被用于控制移位然后写入(shift then write)组件255。因此,应当理解,在每次第一信号被断言或第二信号被断言时,向移位然后写入组件255发出逻辑1值,以触发对历史存储装置的更新。然而,当第一信号和第二信号都未被断言时,或者如果两个信号同时被断言,则从XOR门250输出逻辑0值,并且不执行更新。此方法在图4的特定实施方式中采用,因为它允许历史存储装置的显著简化。具体地,如图所示,历史存储装置可以仅由信号237、239之一直接馈送,在所示的示例中,第一信号237被用于该目的。当第一信号被断言时,它将具有逻辑1值,而当第一信号未断言时,它将具有逻辑0值。因此,当通过第一信号的断言来触发对历史存储装置的更新时,这将使得将逻辑1值被写入历史存储装置,而如果通过第二信号的断言来触发更新操作,则将使得逻辑0值将被添加到历史存储装置,因为由于XOR门250的较早讨论的操作,仅当第一信号未断言时才发生基于第二信号的断言的更新。

历史存储装置可以采用多种形式,但在一种实施方式中,为p位移位寄存器245,并且每个新的历史数据项被插入移位寄存器中的头部位置,而同时最旧的历史数据项从移位寄存器的尾部条目中被丢弃。按照图4所示的示例,移位寄存器被布置为串行输入并行输出移位寄存器,以便在分析触发被用于使得历史分析电路来分析历史存储装置中所保持的历史信息时,所有p个历史数据项可被并行地提供给历史分析电路。

历史维护电路的操作由图6中的流程图示出。在步骤350处,确定第一信号是否已经被断言,并且如果是,则然后在步骤355处,检查第二信号是否被断言。如果是这种情况,则处理进行到步骤365,其中,在历史存储装置中触发移位和写入操作,以便对寄存器执行移位操作,使得最旧的历史数据项被从历史存储装置中丢弃,并将第一信号的当前值写入历史存储装置的头部条目。此后,在步骤370处断言分析触发,以使得历史分析电路来分析历史存储装置的当前内容。

如图6所示,如果第一信号未被断言,则在步骤360处,确定第二信号是否被断言,并且如果是,则处理也进行到步骤365、370。然而,如果第一信号和第二信号均未被断言,则不采取动作,并且处理返回到步骤350,以在下一时钟周期中分析第一信号和第二信号。类似地,如果在特定的时钟周期中断言了第一信号并且还断言了第二信号,则不采取动作,并且替代地,处理循环回到步骤350,以在下一时钟周期重新评估信号。

如图4所示,历史分析电路包括弹出计数(popcount)电路260,该弹出计数电路260响应于分析触发来读取移位寄存器的每个条目的内容,并对存储预定值(该特定示例中为逻辑1值)的条目的总数进行计数。如前所述,存储逻辑1值的条目将与第一信号的断言相关联,而存储逻辑0值的条目将与第二信号的断言相关联,因此通过对移位寄存器内容内的逻辑1值的数量进行计数,这指示在移位寄存器内容所维护的历史窗口内第一信号已被断言的次数。然后提供第一值阈值寄存器265,其值可以由配置块230来设置,并且比较电路270确定由弹出计数电路检测到的值是否大于或等于存储元件265中的第一阈值。如果是,则认为这指示其中第一事件的发生与第二事件的发生的比率在可接受范围之外的情况,并且因此,向异常信号生成电路断言报告信号。

应当理解,存储在存储元件265内的第一值阈值可被设置为考虑m和n的值,并因此考虑分别基于第一事件和第二事件的发生而断言第一信号和第二信号的频率。

图7是示出图4的历史分析电路的操作的流程图。在步骤400处,确定是否已经断言分析触发。如前所述,在一种实施方式中,分析触发在每次在历史存储装置中执行更新时被断言,并因此可以直接从移位然后写入电路255的输出中导出。

一旦断言了分析触发,则历史存储装置中的每个条目的值由弹出计数电路260获得,在图4的实施方式中,这些值从移位寄存器的输出接口并行地获得。在步骤410处,然后对其值对应于事件1的条目的数量进行计数,此后在步骤415处,使用比较电路270确定计数值是否已经达到第一阈值。如果否,则不采取进一步的动作,并且报告信号保持未断言,并且该处理返回到步骤400,以等待接收下一分析触发。然而,如果计数值已达到第一值阈值,则在步骤420处,断言报告信号。

如前所述,异常信号生成电路可以被布置为每次报告信号被断言时,在路径295上断言异常信号。然而,在图4所示的特定示例中,异常信号生成电路的动作被从预热限定电路接收到的限定信号限定,如图4所示,在该示例中,包括有效计数块275、限定阈值存储装置280和比较电路285。

如图4所示,每次XOR门250断言逻辑1值时,有效计数块275内的计数递增。因此,将认识到,有效计数块275维护自重置事件以来已对历史存储装置执行的更新次数的计数。

在配置块230的控制下,限定阈值可被存储在存储元件280内,并且限定阈值和当前有效计数值二者被路由到比较电路285。比较电路285被布置为仅在有效计数大于或等于存储在存储元件280内的限定阈值时,断言限定信号。通过适当选择限定阈值,可以理解,预热时间段可被指定为使得异常信号生成电路将不会不管报告信号的值而引发异常,直到已经对历史存储装置进行了一定数量的更新为止。例如,阈值可被设置为使得在限定信号被断言之前,响应于对第一信号或第二信号的断言而至少需要写入历史存储装置中的每个条目。

图8是示出预热限定电路的操作的流程图。在步骤450处,在重置触发时初始化有效计数块275(在本文中也称为更新计数器)。重置触发可以采用多种形式。例如,重置触发可在PMU的重置时出现,或者可在其他情况下发生,即使PMU本身未被重置。

在更新计数器的重置之后,处理前进到步骤455,其中,确定是否对历史存储装置进行更新,如先前所讨论的,这在图4的示例中由XOR门250的输出来指示。每次历史存储装置被更新时,在步骤460处,更新计数器275递增。此后,在步骤465处,更新计数器值与限定阈值进行比较,此后在步骤470处,确定是否达到限定阈值。

如果未达到限定阈值,则处理返回到步骤455,以等待对历史存储装置的下一更新。然而,一旦达到阈值,则在每个时钟周期在步骤475处断言限定信号,直到发生重置触发为止,然后处理返回到步骤450。

图9示出了图4的示例中的异常信号生成电路的操作,如图4所示,该组件由AND门290实现。在步骤500处,确定报告信号是否被断言,如果否,则不采取任何动作。然而,当报告信号被断言时,确定限定信号是否被断言,如果否,则不采取任何动作。然而,如果在步骤505处确定限定信号被断言,则然后在步骤510处,异常信号生成电路向中断控制器30断言异常信号。

将理解,参考较早的附图描述的性能监测单元布置可以在多种情况下使用,以监测各种不同的事件之间的比率。还将理解,PMU不一定限于仅监测事件的单个比率,而替代地,通过适当地复制电路组件,PMU可以被组织为同时监测多个比率。

仅通过示例说明的方式,将考虑这样的用例,其中,通过监测第一事件和第二事件的比率而获得的性能监测信息被用于确定用于表联接操作的适当算法。在例如使用关系数据库的数据库管理系统中,可以使用各种不同的机制来实现表联接操作,例如,使用排序合并联接算法或散列联接算法。这些算法中的任何一个都不一定优于另一个,并且每种算法的强项和缺点都取决于许多因素,而这些因素并不总是先验的。因此,可能希望尝试这些算法之一,同时监测其性能,从而如果其执行时次优的,则能够切换到替代算法。例如,散列联接算法可能在微架构中生成许多负载存储别名(alias)事件,而排序合并联接算法可能潜在地生成许多分支错误预测。

图10示意性地示出了表联接操作。在该示例中,维护两个表550、560。表550是订单表,其维护关于每个订单的订单ID和相关联客户ID的信息。在此特定示例中,它指示客户ID为33的客户下了两个订单,具有订单ID 1001和1501。第二表560是客户表,并且标识与每个客户ID相关联的客户。在此示例中,它指示具有ID 33的客户是XYZ Ltd。

将理解,在图10的示例中,两个表都提供了关于客户ID的信息。在关系数据库术语中,与表560关联的客户ID被称为主键(primary key),因为在客户表中提供的每个客户ID将是唯一的,即对于XYZ Ltd仅存在单个条目。然而,订单表550中的客户ID字段被称为外键(foreign key),因为另一个表的主键(在此示例中为客户ID)的多个实例可能在该表中出现。

如框570示意性所示,可以使用散列联接算法或排序合并联接算法来执行内部表联接操作,以便产生标识由XYZ Ltd下的订单的结果输出表580。

如前所述,可能无法先验地知道哪种可能的算法在特定情况下会表现得更好。因此,系统可以设置为使得选择算法之一被选为起始算法,但其中,PMU 20被用于针对性能问题来监测其行为。图11的流程图示出了这样的方法。因此,在初始化时,例如可以在步骤600处选择散列联接算法,以在执行表联接操作时使用。如前所述,散列联接算法可能潜在地生成大量的负载存储别名事件。

因此,在步骤605处,PMU被设置为监测由于别名而产生的负载重播事件(作为事件1),以及退休(retired)指令(作为事件2)。此外,阈值被设置为使得在负载重播与退休指令的比率达到一定水平时生成异常。这可以通过适当设置存储元件220、225内的值m、n,以及存储元件265内的第一值阈值来实现。如前所述,还可以在存储元件280内指定限定阈值,以确保在预热时间段期间不会生成异常。

因此,仅通过非常具体的示例的方式,负责配置PMU的实体可能知道算法的一个循环包含100条指令,并且有11条加载指令可能与其他存储具有别名问题。如此,可以选择一个循环迭代的测量粒度,其中m设置为等于11,并且n设置为等于100。因此,将针对每11个别名事件断言第一信号,并将针对每100条退休指令断言第二信号。

此外,可以理解,由于预热,算法的第一次迭代可能无法反映其总体行为,因此可以将限定阈值设置为足够大的值,以确保在算法已经进行了一定数量的迭代,并且已在历史存储装置中进行了相应的更新之前,不生成异常触发。仅作为示例,限定阈值可以设置为20,因此在可生成任何异常信号之前,至少需要对历史存储装置进行20次更新。最后,用户可能认为如果由于别名而导致一些负载重播并不重要,但如果这些别名非常频繁,则希望向系统发出警报。作为特定示例,利用包含8个条目的移位寄存器,第一值阈值然后可以设置为3,因此意味着如果8个历史位中的三个或更多个被设置为1,则断言报告信号。对于上面讨论的具体示例,这表示在引发异常之前,由于在500条退休指令的窗口内发生别名,因此必须存在至少33次加载重播。

应当理解,仅出于说明的目的而提供了以上数字,并且可以针对任何特定情况根据需要来设置这些值。

返回图11,在步骤610处,确定是否触发了异常,并且如果是,则在步骤615处,中断控制器30触发在CPU 4上执行用户定义的处理程序,该用户定义的处理程序的执行确定是否将算法切换到排序合并联接算法以进行表联接操作,或者是否继续进行散列联接算法。例如,如果确定切换到排序合并算法是适当的,则处理程序可以选择修改其返回地址并恢复(resteer)应用的控制流,以便移动到使用排序合并算法。替代地,根据已经执行了多少工作,可以确定继续进行散列联接算法是适当的。

基于在步骤615处做出的决定,然后在步骤620处,还可以确定在从异常返回之后,重置还是禁用PMU的事件监测。例如,如果在步骤615处处理切换到排序合并算法,则可以确定禁用事件监测是适当的,而如果确定继续进行散列联接算法,则可以确定重置事件监测机制是适当的。

根据上面的描述,将认识到,本文描述的技术提供了一种轻量级且可配置的机制,以用于应用来实时检查其执行,并用于将采取的任何必要的纠正动作。所描述的机制允许连续监测感兴趣的比率。此外,仅当比率超过可配置阈值时才通知应用,从而避免执行任何不必要的计算来确定是否已超出比率。因此,所描述的机制提供了一种用于在数据处理系统内执行实时性能监测/信令的特别有效和高效的机制。

在本申请中,词语“被配置为……”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可被编程为执行功能的处理器或其他处理设备。“被配置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。

尽管本文已经参考附图详细描述了本发明的说明性实施例,但应理解,本发明不限于那些精确的实施例,并且本领域技术人员可以在其中进行各种改变、增加和修改,而不脱离所附权利要求所限定的本发明的范围和精神。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号