硬件加速器的性能测量的制作方法_3

文档序号:9816392阅读:来源:国知局
接受多个N个提交的任务所经历的时间段。
[0028]但是,我们发现^与如之间的这个接受时间还追踪在任务之间完成时间上的实际差异(312)。出现这种情况的原因是,在时间to的任务接受必须与来自该加速器的较早任务的实际完成相一致。这是因为在较早的尝试中任务无法立即被加速器接受。因此,任务可以被接受的唯一方式是在某个其它任务完成之后。因此,对饱和的加速器的接受速率可以被用来测量在加速器处的完成速率。
[0029]为了进一步解释,图4阐述了示出用于根据本发明实施例的硬件加速器的性能测量的另一示例方法的流程图。在图4的方法的开始处,与要被提交以供加速的N个任务相对应的N个特定于加速器的控制块结构(210)(也被称为协处理器请求块或CRB)在存储器中被预先分配并被初始化(402) A应当被选择以使得N足够大以便溢出目标加速器的接受任务队列。如果这个信息不可用,则可能需要用对数增加的N进行若干次实验,以便识别什么N使加速器充分(comfortably)饱和。使加速器饱和是指加速器队列填满并且利用BUSY信号或RETRY信号作出响应,并且不接受提交的任务的状况。
[0030]任务(208)在紧凑循环中被足够快地提交(410)给加速器,以便使加速器饱和。这个步骤可能需要多个线程接合,以便达到可以使加速器饱和的足够高的提交速率。在每个任务被提交之后,可能通过读取状态寄存器,诸如IBM PowerPC?处理器中的CRO,来确定任务的状态(412)。如果状态寄存器指示任务被接受,则该方法使成功提交的任务的计数递增(414)并继续下一个任务。如果任务是在加速器达到饱和状况之后被接受的第一个任务,SP变量“saturated”为真,则通过在时基寄存器中读取系统时钟的值,当前时间被记入“time_busy”变量(404,406)。条件寄存器状态还可以指示加速器不能接受任务,因为它是BUSY。在那种情况下,图4的方法将包括重新提交被拒绝的任务。
[0031]此外,如果任务是得到这种BUSY响应的第一个任务,S卩,被初始化为FALSE的变量“saturated”仍然是FALSE(416),则变量“saturated”被设置为真(418)。在一次或多次重试之后,当任务被加速器接受时,变量“time_buSy”被用来从系统时钟的时间寄存器值中记录当前时间(406)。这是在达到饱和状态后任务被加速器接受的第一时间。此外,变量“N_busy”被设置为此时“tasksSubmitted”变量的值。这个变量在总共N个任务当中识别在被加速器接受之前遭遇来自加速器的BUSY信号的第一个任务。任务提交继续进行,直到所有N个任务都被接受。对于被提交并接受的最后一个任务(408),通过读取时间寄存器,系统时间值被记录到变量“time_last”中(420)。在所有任务都被接受之后,该方法等待所有任务完成(422)。
[0032]对结果进行错误检查(424)。如果有错误,则错误被报告(426)并且测试用例、应用或硬件被调试。但是,如果没有任何错误,这是底层硬件和应用工作正常的典型情形,则利用下面的公式来计算以每秒的操作计的加速器吞吐量性能(428):
[0033]以每秒的任务计的吞吐量=
[0034](N_N_busy)氺time_base_frequency/(time_last_time_busy)。
[0035]time_base_frequency指每秒的定时器滴答数。以每秒的字节数计的输入带宽和输出带宽可以基于平均任务对多少输入数据和输出数据进行工作的知识而被进一步计算。公式如下所示:
[0036]以每秒的字节数计的Input_Bandwidth =吞吐量*每个任务处理的平均输入数据字节数
[0037]以每秒的字节数计的Output_Bandwidth =吞吐量*每个任务生成的平均输出数据字节数
[0038]本发明的示例实施例主要是在用于硬件加速器的性能测量的全功能计算机系统的上下文中描述的。但是,本领域技术人员的读者将认识到,本发明也可以在部署在计算机可读存储介质上的、用于与任何合适的数据处理系统一起使用的计算机程序产品中体现。这种计算机可读存储介质可以是用于机器可读信息的任何存储介质,包括磁介质、光学介质或其它合适的介质。这种介质的示例包括硬盘驱动器中的磁盘、或软盘、用于光学驱动器的光盘、磁带、以及本领域技术人员将想到的其它介质。本领域技术人员将立即认识到,具有合适的编程部件的任何计算机系统将能够执行本发明的方法的步骤,如在计算机程序产品中所体现的那样。本领域的技术人员还将认识到,虽然本说明书中描述的一些示例实施例面向安装的、在计算机硬件上执行的软件,但是,被实现为固件或硬件的替代实施例也在本发明的范围之内。
[0039]如本领域技术人员将理解的那样,本发明的各方面可以被体现为方法、装置或系统、或计算机程序产品。因此,本发明的各方面可以采取完全硬件的实施例或组合软件和硬件方面的实施例的形式(固件、驻留软件、微代码、微控制器嵌入式代码等等),所有这些在本文中一般可以被称为“电路”、“模块”、“系统”或“装置”。此外,本发明的各方面可以采取计算机程序产品的形式,该计算机程序产品被体现在其上包含计算机可读程序代码的一个或多个计算机可读介质中。
[0040]可以使用一种或多种计算机可读介质的任何组合。这种计算机可读介质可以是计算机可读的信号介质或者计算机可读的存储介质。计算机可读的存储介质可以是例如,但不限于电、磁、光、电磁、红外线或者半导体系统、装置或设备、或者以上所述的任何合适的组合。计算机可读的存储介质的更具体的示例(非穷尽列表)将包括以下:具有一条或多条电线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(R0M)、可擦除可编程只读存储器(EPR0M或者闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁性存储设备、或者以上所述的任何合适组合。在本文件的上下文中,计算机可读存储介质可以是可包含或存储由指令执行系统、装置或设备使用或者与其相关的程序的任何有形介质。
[0041]计算机可读信号介质可以包括具有例如在基带中或者作为载波的一部分体现的计算机可读程序代码的传播数据信号。这种传播信号可以采取各种形式中的任何一种,包括但不限于电磁、光或者其任何合适组合。计算机可读信号介质可以是非计算机可读存储介质、并且可以传送、传播或者运输由指令执行系统、装置或设备使用或者与其相关的程序的任何计算机可读介质。体现在计算机可读介质上的程序代码可以利用任何适当的介质而被传送,该适当的介质包括但不限于无线、有线线路、光纤电缆、RF等、或者以上的任何合适组合。
[0042]用于执行本发明各方面的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,该一种或多种编程语言包括诸如Java,Smal ltalk、C++等之类的面向对象的编程语言,以及诸如“C”语言或类似的编程语言之类的常规的过程式编程语言。程序代码可以完全在用户计算机上执行、部分在用户计算机上执行、作为独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后者涉及远程计算机的情形中,远程计算机可以通过任意类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可以连接到外部计算机(例如使用因特网服务提供商通过因特网来建立连接)。
[0043]参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图,在本说明书中描述了本发明的各个方面。将理解的是,流程图说明和/或框图的每个方框,以及流程图说明和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而产生一种机器,以使得经由计算机或其它可编程数据处理装置的处理器执行的指令生成用于实现流程图和/或框图中的一个或多个方框中指定的功能/动作的装置。
[0044]也可以把这些计算机程序指令存储在计算机可读存储介质中,这些指令可以指导计算机、可编程数据处理装置、或其他设备以特定方式工作,以使得存储在计算机可读介质中的指令产生制造品,其包括实现流程图和/或框图中的一个或多个方框中指定的功能/动作的指令。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1