确定系统性能特征的方法和系统的制作方法

文档序号:6561077阅读:191来源:国知局
专利名称:确定系统性能特征的方法和系统的制作方法
技术领域
本发明一般涉及在连接两个设备的互连总线上交换数据包,尤其涉及测量和验证这种交换的性能。
背景技术
片上系统(SOC)通常在单个芯片上包括一个或多个集成处理器核心、某种类型的嵌入存储器例如在处理器核心之间共享的高速缓存、以及外围接口例如外部总线接口以形成完整的(或几乎完整的)系统。外部总线接口经常用于通过外部总线在这些系统与诸如外部存储控制器、输入/输出(I/O)控制器或图形处理单元(GPU)等外部设备之间以包的形式传递数据。
这样一种系统的性能可能取决于可能包括设备特性、互连总线特性、存储器层次结构、操作系统和多种其他因素在内的几个因素。考虑这些因素之后,仍可以对系统性能的范围做出合理的预测。但是,人们通常希望在模拟(simulation)期间验证性能落入这些范围。例如,人们可能希望验证发送和接收设备之间通过互连总线进行通信的吐量(或带宽)以及等待时间(或响应时间)落入它们的预测范围。
通常,模拟牵涉到运行预先规定的测试用例,这些预先规定的测试用例被建模为对正常系统运行进行仿真(emulate)。在模拟期间,监视总线通信流(traffic),捕获总线上令人感兴趣的事件,并且基于所捕获的事件测量性能。所捕获的事件以及它们的性能度量被记录在模拟日志中。只有在模拟之后用户才能查看模拟日志中的所有总线事件并识别落在所预测的性能范围之外的事件的类别。然而,由于模拟日志中所包含的信息颇为隐晦,因此需要付出相当大的努力来对那些没有落在其性能范围内的事件的类别进行人工分析、识别和解析(parse)。传统模拟的另一问题在于预先规定的测试用例可能不足以测试总线事件的给定类别。例如,测试用例可能不包含足够数量的读操作。结果,对读操作的性能测量可能不具备统计意义上的显著性。
传统测试方法的又一问题是当性能的预测范围过于宽泛时,如果不进行繁琐的人工分析,不太可能检测出性能的恶化。例如,如果与两设备之间的特定事务相关联的平均等待时间被预测为1秒,但测量出的平均等待事件仅为0.2秒,那么,不太可能捕获到平均等待时间从0.2秒到0.8秒的恶化,即使性能上存在显著的、不合意的改变。
因此,需要用于测量和验证通过互连总线连接的设备之间基于包的数据交换的性能的改进的方法和设备。

发明内容
本发明实施例一般提供了用于测量和验证设备间通过互连总线的、基于包的通信事务的性能的方法、计算机可读存储介质以及系统。
一个实施例提供了用于确定系统性能特性的方法。该方法一般包括执行程序以使得数据在系统中至少两个设备间经由总线被交换,通过至少一个接口监视器捕获指示在该至少两个设备间交换的数据的事件,基于在程序执行期间所捕获的事件计算出一个或多个性能度量,将计算出的性能度量存储在数据库中,以及确定计算出的性能度量是否落在所确定的性能范围之内。
另一个实施例提供了一种计算机可读存储介质,其包含一种用于确定系统性能特性的程序。当该程序由处理器执行时,其执行一般包括以下内容的操作生成将在系统中至少两个设备间通过总线被交换的数据,通过至少一个接口监视器捕获指示在该至少两个设备间交换的数据的事件,基于在程序执行期间所捕获的事件计算出一个或多个性能度量,将计算出的性能度量存储在数据库中,以及确定计算出的性能度量是否落在所确定的性能范围之内。
又一个实施例提供了一种一般包括以下内容的系统第一处理设备,通过总线与第一处理设备相耦合的第二处理设备,用于捕获指示经由总线在该至少两个处理设备间交换的数据的事件的至少一个接口监视器,以及性能监视器,其中,该性能监视器被配置为基于所捕获的事件计算出一个或多个性能度量,将计算出的一个或多个性能度量存储在数据库中,以及确定计算出的性能度量是否落在所确定的性能范围之内。


为了可以更详细地明了获得本发明的上述特征、优点以及目标的方式,可通过参照在附图中示出的本发明的实施例,阅读对上面简短总结过的本发明的详细描述。
然而,由于本发明允许其他等同的、有效的实施例,要注意到的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限定。
图1示出了根据本发明一个实施例的示例性测试环境;图2为用于捕获总线事件以及为那些事件计算性能度量的示例性操作的流程图;图3为用于验证所捕获的总线事件落在预先规定的性能范围内的示例性操作的流程图;图4为用于验证所捕获的事件落在自学习的性能范围内的、所执行的操作的流程图。
具体实施例方式
本发明的实施例使得可以捕获设备间通过互连总线的、基于包的通信事务以测量性能。当事件经过系统时,通过在不同节点上捕获事件可确定性能度量。通过计算所捕获的事件的性能度量并将这种性能度量与预先规定的性能范围和/或自学习的性能范围进行比较可以在运行时间验证性能。另外,本发明的实施例提供总线通信流的动态适应调整(tailoring)以生成潜在的失败情况。
下面参照本发明的实施例。但是应当明了,本发明并不限于所介绍的具体实施例。相反,可以考虑用下述特征和要素的任意组合来实施和实现本发明,而无论它们是否牵涉到不同的实施例。另外,在不同的实施例中,本发明提供了优于现有技术的大量优点。然而,尽管本发明的实施例可获得优于其他可能的解决方案和/或现有技术的优点,但某个特定的优点是否由给出的实施例获得并不对本发明构成限制。因此,下面的方面、特征、实施例和优点仅作说明之用,而不应被当作是所附权利要求的要素或限制,除非权力要求中明确提出。类似地,谈到“本发明”不应被解释为对这里所公开的任何发明主题的概括,也不应被当作是所附权利要求的要素或限制,除非权力要求中明确提出。
示例性测试系统图1示出了一种示例性测试系统,其中,性能监视器100监视互连总线180(例如,通常被称为前端总线)上两设备(或节点)120与130之间的性能。举例而言,两设备120与130可以为中央处理单元(CPU)和图形处理单元(GPU)。对于某些实施例,总线180可以为双向多位总线,例如具有用于从CPU到GPU的通信的八条或八条以上的线以及用于从GPU到CPU的通信的另外八条或八条以上的线。
设备120与130之间的通信可以被链路接口监视器(IM)140监视。链路IM140可以为被配置为连同时钟信号对互连总线180的数据线进行采样的软件和/或硬件的任意组合。链路IM可被进一步配置为检查所采样的数据并识别预先规定的事件类别。如果捕获到已知的事件,链路IM可通知性能监视器在互连总线180上出现该事件。举例而言,通过在连接CPU和GPU的互连总线上发送读取包,CPU可在GPU的特定位置上进行读操作。当总线上出现读取包时,用于互联总线的链路IM可捕获该读取包并通知性能监视器在总线上发现了读取包。
在本发明的某些实施例中,链路IM可被配置为向互连总线180上注入噪声。可执行这种噪声注入以模拟系统正常运行期间互连总线上的实际噪声。在其他实施例中,链路IM还可被配置为在总线上所捕获的事件被分派到目的设备之前将错误引入到该事件中。例如,链路IM可切换(toggle)包中的某些位。如同噪声注入一样,可执行这种错误引入以模拟系统正常运行期间在传递包的时候可能发生的实际错误。引入这些错误的目的可以是验证目的设备是否正确地确定包中的错误(例如,通过采用循环冗余校验(CRC)),并执行可能包括校正错误位或请求重新发送该包的错误校正步骤。尽管上述实施例介绍了由链路IM执行噪声和错误注入,本领域技术人员可以认识到,可以由分开的和独立的设备例如刺激(irritator)设备来执行这种噪声和错误注入。
每一设备120与130可分别由单元驱动器160与161驱动。每一单元驱动器可以为这样的软件,该软件被配置为使所关联的设备执行包括向其他设备发送包在内的一系列功能。举例而言,单元驱动器160可以生成对设备120指令以通过互连总线180向设备130发送读取包。由单元160与161到设备120与130的这种指令可分别由应用接口监视器(IM)150与151监视。每一应用IM可以为被配置为连同时钟信号对连接应用IM与所关联设备的数据线进行采样的软件和/或硬件的任意组合。另外,每一应用IM可被配置为检验所采样的数据并识别出预先规定的指令类别。如同链路IM一样,如果捕获到已知的指令,应用IM可通知性能监视器出现到所关联设备的事件。
链路IM140和应用IM150以及151所捕获的事件可被性能监视器100接收并存储在共享数据库170中。在本发明的某些实施例中,性能监视器可在数据库170中存储与每一所捕获的事件相关联的时间戳。例如,性能监视器可在数据库中存储由接口监视器所捕获的每一事件的模拟时间。
性能监视器100可被配置为基于所捕获的事件为系统计算几种性能度量。例如,为了计算读操作穿过设备120的等待时间,性能监视器可以将由单元驱动器160发布并由应用IM150捕获的读指令以及由链路IM140捕获的、相关联的读取包的事件戳相减。类似地,性能监视器还可通过将由链路IM140捕获的读取包以及相关联的数据包的时间戳相减来计算通过互连总线180在设备1与设备2之间的读响应的等待时间。可定义几种其它类似的性能度量来测量系统的等待时间与吐量。
性能监视器还可被进一步配置为在共享数据库170中存储所计算的性能度量。例如,性能监视器可在数据库170中存储写和读操作的等待时间。可允许用户查询数据库170以产生表示不同总线事件的性能结果的图表。这样的图表可允许用户容易地比较同一测试运行和/或不同测试运行中的总线事件之间的结果。
性能监视器100可被配置为基于预先规定的或自学习的性能范围101将模拟测试评定为失败。性能范围101可规定上下范围界限或上阈值或下阈值。预先规定的范围可由用户在系统上运行测试之前规定。预先规定的范围可任意选择或按照考虑诸如设备特性、系统体系结构、系统软件等因素所计算出的理想性能度量来选择。另一方面,自学习范围可根据数据库170中包含的、历史的系统性能数据来计算。例如,自学习范围可通过计算先前获得的性能度量的平均值或通过选择位于或接近表示历史性能结果的钟形曲线波峰的值来确定。用于计算性能范围的任何其他合理的方法可被用于基于历史性能来确定预期的性能。
图2为根据本发明实施例所执行以捕获和存储总线事件的示例性操作的流程图。这些操作可由例如图1所示的部件在执行某个特定程序的同时执行,该程序被设计为仿真正常系统操作(并产生典型的总线通信流)。然而,本领域技术人员将会认识到,图2的操作可由其他部件来执行,另外,图1所示的部件可具有执行其他操作的能力。
通过捕获总线上的事件,操作开始于步骤201。如前所述,链路IM或应用IM可检测指示设备之间或单元驱动器与所关联的设备之间的事务的事件,捕获这样一种事件并将其发送给性能监视器。在本发明某些实施例中,链路IM和应用IM可以为性能监视器的一部分,因此,事件可以由性能监视器直接捕获。如同所示出的那样,所捕获的事件可被存储在共享数据库170中。
在步骤202中,性能监视器可解释所捕获的事件并为该事件计算性能度量。这可能要求性能监视器查询数据库以找到与所捕获事件相关联的其他事件。例如,当性能监视器捕获到互连总线180上的读取包时,为了计算读操作穿过设备120的等待时间,其可以从数据库170中查询从单元驱动器160所发出的读指令。此时,还可能计算几种其他性能度量。
在步骤203中,性能监视器可在共享数据库中存储所计算的性能度量。被存储在数据库中的性能度量此后可被用于为系统性能计算自学习范围。
图3为为了在运行时间期间验证系统性能是否落入预先规定的范围而执行的典型操作的流程图。通过获取用户规定的范围,该操作开始于步骤301。在该步骤中,可提示用户为一个或多个性能度量规定范围。或者,也可允许用户选择在先前的模拟中使用过的、预先规定的范围。还可将预先规定的范围集组织成测试概要(test profile)。每一测试概要可包含性能范围设置的唯一组合。可提示用户在模拟一开始时选择这些概要中的一个。在本发明的一个实施例中,可为多个模拟测试选择预先规定的范围,以便利用相同的、预先规定的参数进行批测试。
在步骤302中,通过单元驱动器为设备生成激励、以便模拟系统正常运行并产生典型的总线通信流,模拟开始。随着模拟的继续,性能监视器执行图2中所概述的步骤以捕获事件并测量性能。在本发明的某些实施例中,性能监视器可只在模拟运行预先确定的一段时间之后才计算性能结果。当每一事件被捕获且性能度量被计算时,执行步骤303中的测试以确定所计算的性能度量是否落入预先规定的范围。如果对所捕获事件的、所计算的性能度量落在其预先规定的范围之外,可停止模拟并可生成系统失败消息。在本发明的某些实施例中,只有当某个特定阈值数量的事件落在预先规定的范围之外时才可停止模拟。在失败情况发生的时停止模拟可节省珍贵的模拟时间并使性能验证更有效率。
另一方面,如果性能度量被认为落入预先规定的范围,性能监视器继续捕获事件并为事件计算性能度量,直到另一性能度量落在预先规定的范围以外或在步骤304中检测到测试结束(end-of-test)。如果检测到测试结束且所有性能度量落入预先规定的范围,则模拟运行被认为是成功的。
图4为所执行的用于在运行时期间验证系统的性能落入由系统确定的范围(自学习的范围)的示例性操作的流程图。通过确定将被用于验证性能度量的范围,操作开始于步骤401。所述范围可通过从数据库170中查询由先前运行的模拟所存储的性能度量并基于这样的历史数据计算自学习的范围来确定。如同上文讨论的那样,例如计算平均值和正态曲线波峰的任何方法可被用于基于历史数据来确定所预期的性能范围。
在步骤402中,一旦确定了自学习的性能范围,模拟可开始。如同对图3的介绍中那样,当事件在运行时期间被捕获时,性能监视器可监视事件以及为事件计算性能度量。可以为其后的对自学习范围的计算存储这些所计算出的性能度量。然而,在本发明的某些实施例中,性能监视器可将用于所捕获事件的计算出的性能度量用于动态更新正被应用在当前模拟中的自学习范围。
在步骤403中,如果用于所捕获的事件的计算出的性能度量落在自学习范围之外,可停止模拟并可生成系统失败消息。在本发明某些实施例中,仅当某个特定阈值数量的事件落在自学习的范围之外时才可停止模拟。另一方面,如果性能度量被认为落在预先规定的范围内,性能监视器继续捕获事件并为事件计算性能度量,直到另一性能落在自学习范围之外或在步骤404中检测到测试结束。如果检测到测试结束且所有性能度量落在预先规定的范围内,则模拟运行被认为是成功的。
在本发明的某些实施例中,可允许用户配置性能监视器以比较所捕获事件的性能度量与预先规定的范围、自学习的范围或预先规定的范围及自学习的范围两者。例如,当数据库170不包含足够的信息以计算出具有统计意义上的显著性的自学习范围时,用户可以选择根据用户规定的范围来运行模拟。另一方面,当怀疑预先规定的范围过于宽泛时,用户可根据自学习范围运行模拟以便检测在性能上的任何剧烈变化。或者,用户可选择根据预先规定的和自学习范围两者来运行模拟以获得对性能进行验证的两种方法的好处。
动态命令加权在模拟期间采用预先规定的测试用例来生成通信流的一个普遍问题在于导致事件的问题可能不能由测试用例充分测试。例如,测试用例可能仅具有少许读操作,其可能不足以引起失败情况。因此,必须编写具有足够读操作的另一测试用例。然而,在这种方法下,为考虑到失败情况的所有不同的排列和组合,将不得不写入不计其数的测试用例。
本发明提供了通过基于运行时结果给命令加权,来动态适应调整由单元驱动器生成的事件。例如,如果写操作等待时间被认为接近失败情况,可动态调节与该写操作相关联的权重参数,使得更为频繁地产生该写操作。一种确定性能度量是否接近失败情况的方法可以为确定性能度量是否落在预先规定的范围和/或自学习的范围之内和阈值范围之外。
再次参照图1,性能检测器100可包含基于运行时结果计算不同类别的事件的权重并向单元驱动器160和161提供反馈的必要逻辑。响应于该反馈,单元驱动器可分派指令以反映指令的动态调节后的权重。
结论通过在模拟期间实时监视关键性能度量,并接着使用该信息以及预先规定的和/或自学习的性能范围以及基于实时结果的用来使模拟失败的动态命令加权,本发明可通知用户存在潜在的问题并识别出引起问题的事件。结果,可获得对系统性能的更有效率且更为有效的验证。
尽管前述内容针对本发明的实施例,在不脱离本发明基本范围的情况下可设计出本发明其他的以及进一步的实施例,且本发明的范围由所附权利要求书确定。
权利要求
1.一种用于确定系统性能特性的方法,包括执行程序以使得数据通过总线在所述系统的至少两个设备之间被交换;由至少一个接口监视器捕获指示在所述至少两个设备之间被交换的数据的事件;在程序执行期间基于所述捕获的事件计算一个或多个性能度量;将所述计算得出的性能度量存储在数据库中;以及确定所述计算得出的性能度量是否落入确定的性能范围。
2.根据权利要求1的方法,其中,所述确定的性能范围由用户规定。
3.根据权利要求2的方法,进一步包括判断所述计算得出的性能度量是否落入在所述程序执行期间计算得出的自学习性能范围。
4.根据权利要求1的方法,其中,所述确定的性能范围为通过以下步骤生成的自学习性能范围查询所述数据库以接收先前存储的性能度量的样本;以及基于先前存储的性能度量的所述样本的值,计算所述自学习性能范围。
5.根据权利要求4的方法,其中,先前存储的性能度量的所述样本包括在执行所述程序前存储的至少一些性能度量。
6.根据权利要求5的方法,其中,先前存储的性能度量的所述样本进一步包括在执行所述程序期间存储的至少一些性能度量。
7.根据权利要求1的方法,进一步包括响应于确定计算得出的性能度量落在所述预先确定的性能范围之内和阈值范围之外,在程序执行期间改变一个或多个事件发生的速率。
8.一种包含用于确定系统性能特性的程序的、计算机可读存储介质,该程序在其被执行时执行前述方法权利要求的任何一个方法。
9.一种系统,包括第一处理设备;通过总线与所述第一处理设备相耦合的第二处理设备;用于捕获指示在至少两个所述处理设备之间通过所述总线交换的数据的事件的至少一个接口监视器;性能监视器,其被配置为基于所述捕获的事件计算一个或多个性能度量,将一个或多个所述计算出的性能度量存储在数据库中,以及确定所述计算出的性能度量是否落入确定的性能范围。
10.根据权利要求9的系统,其中,所述确定的性能范围由用户规定。
11.根据权利要求10的系统,其中,所述性能监视器被进一步配置为确定所述计算出的性能度量是否落入在所述程序执行期间计算得出的自学习的性能范围。
12.根据权利要求9的系统,其中,所述性能监视器被配置为通过以下步骤生成所述确定的性能范围查询所述数据库以接收先前存储的性能度量的样本;以及基于先前存储的性能度量的所述样本的值,计算自学习性能范围。
13.根据权利要求12的系统,其中,先前存储的性能度量的所述样本包括在执行所述程序之前存储的至少一些性能度量。
14.根据权利要求13的系统,其中,先前存储的性能度量的所述样本进一步包括在执行所述程序期间存储的至少一些性能度量。
15.根据权利要求9的系统,其中,所述性能监视器进一步被配置为响应于确定计算得出的性能度量落在所述预先确定的性能范围之内和阈值范围之外,在程序执行期间改变一个或多个事件发生的速率。
16.根据权利要求9的系统,其中,所述第一处理设备为中央处理单元(CPU)且所述第二处理设备为图形处理单元(GPU)。
17.根据权利要求9的系统,其中,所述第一处理设备为输入/输出(I/O)桥芯片。
全文摘要
一种使得能够捕获设备之间通过互连总线进行的基于包的通信事务、以便测量性能的方法和装置。当事件经过系统时,通过在不同位置捕获事件可确定性能度量。通过为所捕获的事件计算性能度量并将这样的度量与预先规定的性能范围和/或自学习的性能范围进行比较,可在运行时间验证性能。另外,本发明的实施例提供总线通信流的动态适应调整以生成潜在的失败情况。对于某些实施例,可在模拟环境中执行这里所介绍的性能验证。
文档编号G06F11/00GK1955935SQ20061011572
公开日2007年5月2日 申请日期2006年8月11日 优先权日2005年10月26日
发明者T·M·阿姆斯特德, L·R·迈耶, P·E·沙尔特, R·A·希勒 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1