CN102541657A - 用于对硬件加速器进行运行时功能分配的方法和设备 - Google Patents

用于对硬件加速器进行运行时功能分配的方法和设备 Download PDF

Info

Publication number
CN102541657A
CN102541657A CN2011103613583A CN201110361358A CN102541657A CN 102541657 A CN102541657 A CN 102541657A CN 2011103613583 A CN2011103613583 A CN 2011103613583A CN 201110361358 A CN201110361358 A CN 201110361358A CN 102541657 A CN102541657 A CN 102541657A
Authority
CN
China
Prior art keywords
function
accelerator
hardware accelerator
processor
computer program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011103613583A
Other languages
English (en)
Other versions
CN102541657B (zh
Inventor
R·K·哈尼
J·M·桑托索斯索
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102541657A publication Critical patent/CN102541657A/zh
Application granted granted Critical
Publication of CN102541657B publication Critical patent/CN102541657B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的实施例提出用于对硬件加速器进行运行时功能分配的方法和设备。一种加速器工作分配机制基于定义的加速器策略并基于在运行时执行的分析,在运行时确定哪些功能分配给硬件加速器。分析包括读取加速器策略,以及确定特定功能是否满足该加速器策略。如果是,功能被分配给硬件加速器。否则,功能被分配给处理器。

Description

用于对硬件加速器进行运行时功能分配的方法和设备
技术领域
本公开一般地涉及计算机系统,并且更具体地涉及在计算机系统中使用硬件加速器。
背景技术
已经开发了各种类型的硬件加速器来加速计算机系统中某些功能的执行。例如,图形加速器在本领域是公知的,并且允许图形功能从处理器卸载到专用硬件加速器,所述专用硬件加速器能够在比所述处理器少得多的时间内执行这些图形功能。浮点处理器是另一类型的硬件加速器,其允许处理器卸载浮点运算。更近来的发展已经产生了其他类型的硬件加速器,包括用于处理可扩展标记语言(XML)的加速器、用于执行压缩和解压缩的加速器,以及用于执行加密和解密的加速器。如这里所使用的那样,术语“硬件加速器”扩展到处理器可以把功能分配给其执行的任何硬件。
在现有技术中,要求程序员了解硬件加速器将存在于系统中,并且然后将在代码中决定哪些功能分配给该硬件加速器。参考图2,现有技术方法200示出了这样的方法。程序员编写计算机程序(步骤210)。程序员决定哪些功能分配给硬件加速器(步骤220)。然后,程序员编写代码把功能分配给硬件加速器(步骤230)。因此,在现有技术中,关于什么功能由硬件加速器执行的所有决策由人类程序员在该程序员编写代码时做出。结果就是代码不灵活且不能充分利用硬件加速器。缺少动态地在运行时确定分配给硬件加速器的功能的方法,具有硬件加速器的计算机系统的性能将不会被优化。
发明内容
一种加速器工作分配机制在运行时基于定义的加速器策略并基于在运行时执行的分析来确定哪些功能分配给硬件加速器。该分析包括:读取加速器策略,并确定特定功能是否满足该加速器策略。如果是,则该功能被分配给硬件加速器。否则,该功能被分配给处理器。
如附图中所示,从下面更具体的描述,前述以及其他特征和益处将会清晰。
附图说明
将结合附图描述本公开,其中相同的指示代表相同的元素,并且:
图1是包括硬件加速器和在运行时确定计算机程序中的哪些功能分配给硬件加速器的加速器工作分配机制的设备的框图;
图2是用于在编程时确定计算机程序中的哪些功能被分配给硬件加速器的现有技术方法的流程图;
图3是用于在运行时把计算机程序中的功能分配给硬件加速器的流程图;
图4是第一样本加速器策略的表;
图5是第二样本加速器策略的表;
图6是用于基于估计的执行时间把功能分配给硬件加速器的方法的流程图;
图7是用于在计算机程序运行时收集简档(profile)数据的方法的流程图;
图8是示出在处理器上某些功能的执行时间的表;
图9是示出在硬件加速器上某些功能的执行时间的表;
图10是示出取决于被功能操作的数据的大小,处理器上的某些功能在处理器上的执行时间的表;
图11是示出取决于被功能操作的数据的大小,处理器上的某些功能在硬件加速器上的执行时间的表;和
图12是可用来确定什么功能在运行时分配给硬件加速器的简档数据的样本日志(log)。
具体实施例
这里的权利要求和公开提供了一种在运行时确定计算机程序中的哪些功能分配给硬件加速器的加速器工作分配机制。分析包括:读取加速器策略,并确定特定功能是否满足该加速器策略。如果是,则该功能被分配给硬件加速器。否则,该功能被分配给处理器。
参考图1,计算机系统100是包括硬件加速器和加速器工作分配机制的计算机系统的一个合适的实施方案。计算机系统100是IBMeServer System i计算机系统。但是,本领域技术人员将会理解这里的公开同样地适用于任何计算机系统,无论该计算机系统是复杂的多用户计算设备、单用户工作站还是嵌入式控制系统。如图1中所示,计算机系统100包含一个或更多个处理器110、硬件加速器112、主存储器120、大容量存储器接口130、显示器接口140和网络接口150。这些系统部件通过使用系统总线160互连。大容量存储器接口130用来把例如直接存取存储装置155的大容量存储装置连接到计算机系统100。直接存取存储装置155的一种具体类型是可读可写CD-RW驱动器,其可以把数据存储到CD-RW 195并从其读取数据。
主存储器120优选地包含数据121、操作系统122、计算机程序123和加速器工作分配机制124。数据121代表起到计算机系统100中的任何程序的输入或者输出的作用的任何数据。操作系统122是多任务操作系统。计算机程序123代表可以具有能被分配给硬件加速器112的功能的任何计算机程序。加速器工作分配机制124在运行时确定计算机程序123中的哪些功能分配给硬件加速器112。加速器工作分配机制124包括加速器策略125、代码仪表化(code instrumentation)机制126和运行时分析机制127。加速器策略125规定了确定计算机程序123中的功能何时被分配给硬件加速器112的标准。代码仪表化机制126把称作钩子(hook)的指令插入计算机程序123以便可以收集运行时数据。然后这个运行时数据可被加速器工作分配机制124用于确定何时将计算机程序123中的功能分配给硬件加速器112。运行时分析机制127在运行时执行分析,其允许加速器工作分配机制124确定何时将计算机程序123中的功能分配给硬件加速器112。运行时分析机制127包括属性分析机制128,属性分析机制128分析功能的属性以便在确定功能是否被分配给硬件加速器112时可以把属性纳入考虑。被属性分析机制128分析的属性可以包括例如当功能被调用时传递的参数。属性分析机制可以纳入考虑的属性的一个恰当的例子是被功能操作的数据的大小。
计算机系统100采用公知的虚拟寻址机制,该机制允许计算机系统100的程序表现得如同其只访问大的单个存储实体而非访问多个较小的存储实体例如主存储器120和DASD设备155。因此,虽然数据121、操作系统122、计算机程序123和加速器工作分配机制124被示出为驻留在主存储器120中,本领域技术人员将认识到这些项目不一定全都同时完全被包含在主存储器120中。也应该注意术语“存储器”在这里用来一般性地指示计算机系统100的整个虚拟存储器,并且可以包括耦合到计算机系统100的其他计算机系统的虚拟存储器。
处理器110可以从一个或更多个微处理器和/或集成电路构造。处理器110执行存储在主存储器120中的程序指令。主存储器120存储处理器110可以访问的程序和数据。当计算机系统100启动时,处理器110首先执行组成操作系统122的程序指令。处理器110也执行计算机程序123和加速器工作分配机制124。
尽管计算机系统100被示出为只包含单个处理器和单个系统总线,但是本领域技术人员将理解可以使用具有多个处理器和/或多个总线的计算机系统来实施加速器工作分配机制。此外,所使用的接口优选地均包括单独的、完全编程的用来从处理器110卸载计算密集处理的微处理器。但是,本领域技术人员将理解这些功能也可以使用I/O适配器执行。
显示器接口140用来直接把一个或更多个显示器165连接到计算机系统100。这些显示器165可以是非智能终端(即哑终端)或者全可编程工作站,它们被用来给系统管理员和用户提供与计算机系统100通信的能力。但是注意,虽然提供了显示器接口140来支持与一个或更多个显示器165的通信,但是计算机系统100不一定需要显示器165,因为所有需要的与用户和其他处理的交互作用可以通过网络接口150发生。
网络接口150用来通过网络170把计算机系统100连接到其他计算机系统或者工作站175。网络接口150广泛地代表任何适当的互连电子装置的方法,无论网络170是包含当前的模拟和/或数字技术还是通过未来的某种联网机制。网络接口150优选地包括允许在网络170上通信的硬件和软件的组合。网络接口150中的软件优选地包括通信管理器,其使用合适的网络协议管理通过网络170与其他计算机系统175的通信。可以使用很多不同的网络协议来实施网络。这些协议是专用的计算机程序,其允许计算机跨网络通信。TCP/IP(传输控制协议/互联网协议)是可被网络接口150内的通信管理器使用的适当网络协议的例子。
本领域技术人员将理解,本发明的各方面可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的方面可能具有完全硬件实施例的形式、完全软件实施例(包括固件、驻留软件、微码,等等)的形式,或者把软件和硬件方面组合的实施例的形式,它们全都可以在这里被一般性地称为“电路”、“模块”或者“系统”。此外,本发明的方面可以具有具体实施在一个或更多个其上具体实施了计算机可读程序代码的计算机可读介质中的计算机程序产品的形式。
可以采用一个或更多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁性、光学、电磁、红外或者半导体系统、设备或者装置,或者前述的任意适当组合。计算机可读存储介质的更具体的例子(非穷举列表)将包括以下:具有一个或更多个电线的电气连接、便携式计算机盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式紧制只读盘存储器(CD-ROM)、光学存储装置、磁性存储装置或者前述的任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其能够包含或者存储供指令执行系统、设备或者装置使用或者与其结合使用的程序。
计算机可读信号介质可以包括传播数据信号,计算机可读程序代码具体实施于其中,例如在基带中或者作为载波的一部分。这样的传播信号可以具有各种形式中的任一种,包括但不限于电磁、光学或者其任意的适当组合。计算机可读信号介质可以是任何并非计算机可读存储介质并且能够传递、传播或者传输供指令执行系统、设备或者装置使用或者与其结合使用的程序的计算机可读存储介质。
可以使用任何适当介质传送具体实施在计算机可读介质上的程序代码,包括但不限于无线、有线、光缆、RF等,或者前述的任意适当组合。
用于执行本发明方面的操作的计算机程序代码可以用一个或更多个编程语言的任意组合编写,编程语言包括例如Java、Smalltalk、C++等的面向对象编程语言以及例如“C”编程语言的常规过程编程语言或者类似的编程语言。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独软件包执行、部分在用户的计算机上并且部分在远程计算机上或者完全在远程计算机或者服务器上执行。在后者的场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或者广域网(WAN),或者,可以连接到外部计算机(例如使用互联网服务提供商通过互联网)。
在这里参考根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图解和/或框图描述本发明的方面。将会理解,这些流程图和/或框图的每一块,以及这些流程图解和/或框图中的块的组合,可以由计算机程序指令实施。这些计算机程序指令可以被提供给通用计算机、专用计算机的处理器或者其他可编程数据处理设备以便产生机器,使得通过计算机处理器或者其他可编程数据处理设备执行的指令生成用于实施在这些流程图和/或框图块中指定的功能/动作的装置。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理设备或者其他以特定方式运行的装置的计算机可读介质中,使得存储在计算机可读介质中的指令产生制造物,所述制造物包括实施在这些流程图和/或框图块中指定的功能/动作的指令。
计算机程序指令也可以被加载到计算机、其他可编程数据处理设备或者导致在计算机、其他可编程设备或者其他装置上执行一系列操作步骤的其他装置上以产生计算机实施的过程,使得在计算机或者其他可编程设备上执行的指令提供用于实施在流程图和/或框图块中指定的功能/动作的过程。
如在上面的背景技术部分中所讨论的那样,图2中的现有技术方法200要求程序员在编制计算机程序时做出关于哪些功能将被分配给硬件加速器的决定。这要求程序员的大量知识和经验。此外,根据运行时条件其不灵活。例如,假设程序员决定允许XML硬件加速器总是进行XML文件的“加载”操作。虽然这在正在加载大XML文件时可能节省时间,但是,如果加载操作的大部分是针对能够被处理器更有效地处理的小XML文件,则程序员的选择可能实际上损害运行时性能。此外,在程序内定义哪些功能被分配给硬件加速器不允许根据运行时条件进行调整的灵活性。如这里详细讨论的那样,通过把功能在运行时分配给硬件加速器来解决这些问题。
参考图3,方法300优选地由图1中所示的加速器工作分配机制124执行。方法300通过读取加速器策略(步骤310)开始。加速器策略优选地由程序员或者用户定义,并规定允许加速器工作分配机制124在运行时决定何时把功能分配给硬件加速器的标准。计算机程序被分析(步骤320)。然后,选择功能(步骤330)。当功能满足加速器策略时(步骤340=YES),该功能被分配给硬件加速器(步骤350)。当被选择的功能不满足加速器策略时(步骤340=NO),功能被分配给处理器(步骤360)。在最优选的实施方案中,在步骤360中,不需要出现特定动作来把功能分配给处理器。所有功能缺省由处理器执行,所以如果功能未被分配给硬件加速器,这意味着该功能将由处理器执行,其意味着简单地通过不把功能分配给硬件加速器而将功能分配给处理器(步骤360)。注意步骤330-360可以被针对计算机程序中有可能被分配给硬件加速器的每一功能重复。
参考图4,第一样本加速器策略400规定了哪些功能分配给硬件加速器。这里的例子假设硬件加速器是XML加速器。图4中的加速器策略400规定了把所有XML加载功能分配给XML加速器,而不把XML解析和XML选择节点(selectNode)功能分配给XML加速器。这个简单样本加速器策略400提供了相对于在代码中硬编码分配给硬件加速器的现有技术方法的优点,因为可以改变加速器策略而不改变程序代码。这允许计算机程序的用户通过简单地改变加速器策略400来改变计算机程序的功能,无需改变和重新编译计算机程序。
参考图5,第二样本加速器策略500包括允许在运行时确定哪些功能分配给硬件加速器时的更多灵活性的启发式表示。因此,对于XML加载功能,当正被加载的XML文件的大小大于100,000字节时,功能被分配给XML加速器。当正被加载的XML文件的大小是100,000字节或者更少时,加载功能被分配给处理器。以类似方式,当文档中的节点数量大于20时,XML选择节点功能被分配给XML加速器,而当被选择的节点数量是20或者更少时,分配给处理器。XML解析功能不被分配给硬件加速器。虽然图5中所示的逻辑表示很简单,但是这里的概念扩展到可在加速器策略中规定的任何适当的标准,与该标准可能多简单或者多复杂无关。
参考图6,方法600是在图3的方法300的范围内的一种具体方法的一个适当的实施方案。首先,确定处理器执行功能的时间(步骤610)。接着,确定硬件加速器执行相同的功能的时间(步骤620)。当加速器时间小于处理器时间时(步骤630=YES),并且无需等待更重要的功能时(步骤632=NO),在运行时把该功能分配给硬件加速器(步骤640)。当加速器时间不小于处理器时间(步骤630=NO)时,在运行时把该功能分配给处理器(步骤650)。当加速器时间小于处理器时间(步骤630=YES)但是需要等待更重要的功能(步骤632=YES)时,把该功能分配给处理器(步骤650)。下面参考图12描述“更重要的功能”的概念。注意,在步骤610和步骤620中的时间估计可以用任何适当方法导出。一个方法是基于系统资源,例如处理器的数量、处理器速度、存储器大小等来估计时间。另一方法是基于当代码被仪表化时的实际执行时间来估计时间,如下面更详细地讨论。在最优选的实施方案中,硬件加速器执行其功能的时间估计包括处理器把工作卸载到硬件加速器所花费的额外时间(开销)。
参考图7,方法700通过仪表化计算机程序开始(步骤710)。仪表化计算机程序意味着把称为钩子的指令插入计算机程序中,所述钩子允许在计算机程序执行时收集简档数据。这样,所有XML加载指令可以被仪表化,因此其执行每一XML加载指令所花费的时间能够被确定。一旦计算机程序被仪表化,则计算机程序被执行(步骤720)。当计算机程序运行时,收集从计算机程序的执行产生的简档数据(步骤730)。简档数据可以包括任何适当的信息,包括其执行每一被仪表化的功能花费的时间、执行每一被仪表化的功能的平均时间、执行每一被仪表化的功能的时间的范围、每一功能的属性,等等。然后,在步骤610和步骤620中,基于所述简档数据可以估计用于执行功能的时间。注意,简档收集可以包括利用迫使所有功能被处理器执行的代码的一次运行,以及利用导致一些或者全部功能被硬件加速器执行的代码的第二次运行。或者,简档收集可以包括单次运行,根据计算机程序如何被编码和仪表化,功能中的一些被处理器执行,而其他的被硬件加速器执行。
图8和图9中示出了估计执行时间的例子。参考图8,由处理器执行XML加载功能的时间是1.0秒。由处理器执行XML解析功能的时间是0.36秒。由处理器执行XML选择节点功能的时间是0.74秒。优选地从被仪表化的计算机程序执行时收集的简档数据导出这些估计的执行时间。参考图9,由硬件加速器执行XML加载功能的时间是0.52秒。由硬件加速器执行XML解析功能的时间是0.23秒。由硬件加速器执行XML选择节点功能的时间是0.80秒。
现在我们把图8和图9中的时间估计用于图6中的方法600。步骤610中的估计在图8的表800中示出。步骤620中的估计在图9中的表900中示出。对于XML加载功能,0.52秒的加速器时间小于1.0秒的处理器时间(步骤630=YES),所以XML加载功能被分配给硬件加速器(步骤640)。对于XML解析功能,0.23秒的加速器时间小于0.36秒的处理器时间(步骤630=YES),所以XML解析功能被分配给硬件加速器(步骤640)。对于XML选择节点功能,0.80秒的加速器时间大于0.74秒的处理器时间(步骤630=NO),所以XML选择节点功能被分配给处理器(步骤650)。人们可能想知道为什么选择节点功能在硬件加速器上会具有大于处理器上的估计执行时间的估计执行时间。把功能分配给硬件加速器需要一些系统开销,所以对于能够在大致相同的时间量内被执行的功能,由于把功能分配给硬件加速器以及从硬件加速器接收数据的开销所致,硬件加速器的总体执行时间可能更长。此外,硬件加速器对于某些功能可能执行得不好。结果,时间估计允许既确定何时把工作分配给硬件加速器,也确定何时不把工作分配给硬件加速器。为了这个简单例子的目的,我们假设图9中的表900中的估计执行时间包括用于把功能分配给硬件加速器以及从硬件加速器接收数据的系统开销。
当决定是否把功能分配给硬件加速器时,可以把其他属性纳入考虑。例如,对于XML加速器,正被处理的XML文件的大小可能大大影响执行XML功能所要求的时间。图10示出了表1000,其把处理器上XML加载和解析功能的执行时间的估计作为正被处理的XML文件的大小的函数示出,并把处理器上XML选择节点功能的执行时间估计作为正被处理的节点数量的函数示出。类似地,图11把硬件加速器上XML加载和解析功能的执行时间的估计作为正被处理的XML文件的大小的函数示出,并把硬件加速器上XML选择节点功能的执行时间的估计作为正被处理的节点数量的函数示出。利用这些根据功能属性的增强估计,加速器工作分配机制能够做出关于何时在运行时把功能分配给硬件加速器的更为智能的决策。
参考图12,表1200以运行时日志的形式示出了样本简档数据。表1200包括功能列表、功能何时被启动的时间戳,以及功能执行所花费的时间。这个数据可被加速器工作分配机制用来进一步优化硬件加速器的使用。例如,我们从图12中所示的样本简档数据看到XML加载指令经常被XML解析指令跟随。加速器工作分配机制可以分析表1200中的运行时日志中的简档数据,并做出关于哪些功能分配给硬件加速器的决策。例如,使用图6中的方法600,加载功能将总是被分配给硬件加速器。但是注意,启动时间戳使得解析功能在硬件加速器能够完成前导的加载指令之前出现。加速器工作分配机制可以基于运行时日志确定利用处理器处理加载功能将更有益处,所以硬件加速器可用于执行解析功能而无需等待。在这个意义上,解析功能将是比加载功能更重要的要分配给硬件加速器的功能。结果,加载功能将被分配给处理器而更重要的解析功能被分配给硬件加速器。在另一例子中,运行时日志可能揭示来自很多不同线程的调用的频率,其导致为照顾将得益更多的另一功能而跳过通常可能被分配给硬件加速器的功能有大得多的益处。因此,加速器工作分配机制可以检测简档数据中的影响何时把计算机程序中的功能分配给硬件加速器的决策的一个或更多个模式。这里的公开和权利要求明确地扩展到分析简档数据以确定如何最好地优化硬件加速器的使用以使计算机程序的性能最大化的任何适当的方法。
虽然这里的具体例子涉及XML硬件加速器,但是这里的原理同样地适用于任何适当的硬件加速器,非限制性地包括数学加速器、图形加速器、压缩/解压缩加速器和加密/解密加速器。也注意虽然图中1示出了单个硬件加速器112,但是这里的公开和权利要求也明确地扩展到使用多个硬件加速器。
本公开和权利要求涉及基于定义的加速器策略并基于在运行时执行的分析,在运行时确定哪些功能分配给硬件加速器的加速器工作分配机制。分析包括读取加速器策略,以及确定特定功能是否满足该加速器策略。如果是,功能被分配给硬件加速器。否则,功能被分配给处理器。
本领域技术人员将理解,在权利要求的范围内很多变化是可能的。因此,虽然在上面具体示出和描述了本公开,但是本领域技术人员将会理解,不偏离权利要求的精神和范围,可以对其做出形式和细节上的这些以及其他的改变。

Claims (15)

1.一种设备,包含:
至少一个处理器;
耦合到所述至少一个处理器的硬件加速器;
耦合到所述至少一个处理器的存储器;
驻留在所述存储器中的计算机程序;
驻留在所述存储器中的加速器策略,该加速器策略规定了确定功能何时被分配给硬件加速器的标准;和
驻留在所述存储器中并由所述至少一个处理器执行的加速器工作分配机制,当基于针对所述计算机程序中的功能的处理器性能估计和针对所述功能的硬件加速器性能估计,所述加速器策略中的所述标准被满足时,所述加速器工作分配机制在运行时把所述功能分配给所述硬件加速器。
2.如权利要求1所述的设备,其中,所述加速器策略中的所述标准包括功能的至少一个属性。
3.如权利要求1所述的设备,其中,所述至少一个属性包括文件的大小。
4.如权利要求1所述的设备,其中,所述加速器工作分配机制包含代码仪表化机制,所述代码仪表化机制把当所述计算机程序被执行时提供简档数据的多个指令插入所述计算机程序中,其中,针对所述功能的所述处理器性能估计和针对所述功能的所述硬件加速器性能估计从所述简档数据被导出。
5.如权利要求4所述的设备,其中,所述加速器工作分配机制执行所述简档数据的分析以优化把功能分配给所述硬件加速器。
6.如权利要求1所述的设备,其中,当针对所述功能的所述硬件加速器性能估计小于针对所述功能的所述处理器性能估计时,所述加速器工作分配机制把所述功能分配给所述硬件加速器。
7.如权利要求1所述的设备,其中,当把后续功能分配给所述硬件加速器将对所述设备的性能具有更大益处并且当把所述功能分配给所述硬件加速器将干扰把所述后续功能分配给所述硬件加速器时,所述加速器工作分配机制不把所述功能分配给所述硬件加速器。
8.一种由至少一个处理器执行的用于把工作分配给计算机系统中的硬件加速器的计算机实施的方法,所述计算机系统包括所述硬件加速器和至少一个执行计算机程序的处理器,所述方法包含步骤:
读取规定了确定功能何时被分配给所述硬件加速器的标准的加速器策略;
分析所述计算机程序;和
当基于针对所述计算机程序中的功能的处理器性能估计和针对所述功能的硬件加速器性能估计,所述加速器策略中的所述标准被满足时,在运行时把所述功能分配给所述硬件加速器。
9.如权利要求8所述的方法,其中,所述加速器策略中的所述标准包括功能的至少一个属性。
10.如权利要求8的所述的方法,其中,所述至少一个属性包括文件的大小。
11.如权利要求8所述的方法,还包含步骤:
把当所述计算机程序被执行时提供简档数据的多个指令插入所述计算机程序中;和
从所述简档数据导出针对所述功能的所述处理器性能估计和针对所述功能的所述硬件加速器性能估计。
12.如权利要求11所述的方法,还包含执行所述简档数据的分析以优化把功能分配给所述硬件加速器的步骤。
13.如权利要求8所述的方法,还包含当针对所述功能的所述硬件加速器性能估计小于针对所述功能的所述处理器性能估计时,把功能分配给所述硬件加速器的步骤。
14.如权利要求8所述的方法,还包含当把后续功能分配给所述硬件加速器将对所述设备的性能具有更大益处并且当把所述功能分配给所述硬件加速器将干扰把所述后续功能分配给所述硬件加速器时,不把所述功能分配给所述硬件加速器的步骤。
15.一种由至少一个处理器执行的用于把工作分配给计算机系统中的硬件加速器的计算机实施的方法,所述计算机系统包括所述硬件加速器和至少一个执行计算机程序的处理器,所述方法包含步骤:
读取规定了确定功能何时被分配给所述硬件加速器的标准的加速器策略,所述标准包括被所述功能操作的文件的大小;
分析所述计算机程序;
把当所述计算机程序被执行时提供简档数据的多个指令插入所述计算机程序中;
从所述简档数据导出针对所述功能的处理器性能估计和针对所述功能的硬件加速器性能估计;
分析所述简档数据以确定所述简档数据中的至少一个模式;和
当针对所述计算机程序中的功能的所述硬件加速器性能估计小于针对所述功能的所述处理器性能估计并且所述至少一个模式满足所述加速器策略时,在运行时把所述功能分配给所述硬件加速器。
CN201110361358.3A 2010-12-20 2011-11-15 用于对硬件加速器进行运行时功能分配的方法和设备 Expired - Fee Related CN102541657B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/972,710 US8957903B2 (en) 2010-12-20 2010-12-20 Run-time allocation of functions to a hardware accelerator
US12/972,710 2010-12-20

Publications (2)

Publication Number Publication Date
CN102541657A true CN102541657A (zh) 2012-07-04
CN102541657B CN102541657B (zh) 2015-08-19

Family

ID=46233784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110361358.3A Expired - Fee Related CN102541657B (zh) 2010-12-20 2011-11-15 用于对硬件加速器进行运行时功能分配的方法和设备

Country Status (3)

Country Link
US (2) US8957903B2 (zh)
JP (1) JP5911286B2 (zh)
CN (1) CN102541657B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105579996A (zh) * 2013-10-10 2016-05-11 国际商业机器公司 硬件加速器的性能测量
CN107122243A (zh) * 2017-04-12 2017-09-01 杭州远算云计算有限公司 用于cfd仿真计算的异构集群系统及cfd计算方法
US11487585B1 (en) * 2016-12-14 2022-11-01 Xilinx, Inc. Dynamic load balancing and configuration management for heterogeneous compute accelerators in a data center

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902581B (zh) * 2011-07-29 2016-05-11 国际商业机器公司 硬件加速器及方法、中央处理单元、计算设备
WO2014002412A1 (ja) * 2012-06-26 2014-01-03 日本電気株式会社 プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法
EP2767905A1 (en) * 2013-02-15 2014-08-20 Samsung Electronics Co., Ltd Terminal apparatus, server, browser of terminal apparatus operating system and method of operating browser
US9747185B2 (en) * 2013-03-26 2017-08-29 Empire Technology Development Llc Acceleration benefit estimator
US9465618B2 (en) * 2014-01-08 2016-10-11 Oracle International Corporation Methods and systems for optimally selecting an assist unit
US20150256645A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - Network Server With Dedicated Co-processor Hardware Implementation of Storage Target Application
JP6369170B2 (ja) * 2014-07-02 2018-08-08 富士通株式会社 実行時間推定装置及び方法
US9836473B2 (en) 2014-10-03 2017-12-05 International Business Machines Corporation Hardware acceleration for a compressed computation database
US10929189B2 (en) 2015-10-21 2021-02-23 Intel Corporation Mobile edge compute dynamic acceleration assignment
US10860499B2 (en) 2016-03-22 2020-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dynamic memory management in workload acceleration
US10884761B2 (en) * 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
WO2018111224A1 (en) * 2016-12-12 2018-06-21 Hitachi, Ltd. System and method of dynamic allocation of hardware accelerator
CN106874059B (zh) * 2016-12-30 2019-08-06 长沙湘计海盾科技有限公司 一种硬件加速OpenCV库中图像处理函数的方法
KR102066212B1 (ko) * 2017-01-19 2020-01-14 서울대학교산학협력단 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
JP6992343B2 (ja) * 2017-09-13 2022-01-13 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
CN110825530B (zh) * 2018-08-10 2022-12-23 昆仑芯(北京)科技有限公司 用于人工智能芯片的指令执行方法和装置
US11327798B1 (en) * 2019-05-08 2022-05-10 Meta Platforms, Inc. Accelerating an application code portion based on a received configuration
US20230367640A1 (en) * 2020-12-08 2023-11-16 Intel Corporation Program execution strategies for heterogeneous computing systems
US11669331B2 (en) * 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249351B1 (en) * 2000-08-30 2007-07-24 Broadcom Corporation System and method for preparing software for execution in a dynamically configurable hardware environment
CN101236601A (zh) * 2008-03-11 2008-08-06 董亮 图像识别加速装置及具有图像识别加速装置的微处理器芯片
US20090096481A1 (en) * 2007-10-10 2009-04-16 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
US7370311B1 (en) * 2004-04-01 2008-05-06 Altera Corporation Generating components on a programmable device using a high-level language
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8856753B2 (en) * 2008-04-18 2014-10-07 International Business Machines Corporation Granular measurement of processor performance in executing sections of software code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249351B1 (en) * 2000-08-30 2007-07-24 Broadcom Corporation System and method for preparing software for execution in a dynamically configurable hardware environment
US20090096481A1 (en) * 2007-10-10 2009-04-16 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines
CN101236601A (zh) * 2008-03-11 2008-08-06 董亮 图像识别加速装置及具有图像识别加速装置的微处理器芯片

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105579996A (zh) * 2013-10-10 2016-05-11 国际商业机器公司 硬件加速器的性能测量
CN105579996B (zh) * 2013-10-10 2018-01-05 国际商业机器公司 硬件加速器的性能测量的方法、系统和计算机可读介质
US11487585B1 (en) * 2016-12-14 2022-11-01 Xilinx, Inc. Dynamic load balancing and configuration management for heterogeneous compute accelerators in a data center
CN107122243A (zh) * 2017-04-12 2017-09-01 杭州远算云计算有限公司 用于cfd仿真计算的异构集群系统及cfd计算方法
CN107122243B (zh) * 2017-04-12 2018-07-24 浙江远算云计算有限公司 用于cfd仿真计算的异构集群系统及计算cfd任务的方法

Also Published As

Publication number Publication date
JP2012133778A (ja) 2012-07-12
US8970607B2 (en) 2015-03-03
US8957903B2 (en) 2015-02-17
US20120154412A1 (en) 2012-06-21
US20130104143A1 (en) 2013-04-25
JP5911286B2 (ja) 2016-04-27
CN102541657B (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
CN102541657A (zh) 用于对硬件加速器进行运行时功能分配的方法和设备
US20190294978A1 (en) Inferring digital twins from captured data
KR101406693B1 (ko) 실행시간 추정방법, 실행시간 추정 프로그램 및 실행시간 추정장치
Huang et al. When backpressure meets predictive scheduling
Flores et al. Evidence-aware mobile computational offloading
Tong et al. Application-aware traffic scheduling for workload offloading in mobile clouds
US11489735B2 (en) Dynamic network allocation apparatus, dynamic network allocation method and non-transitory computer-readable medium
CN110058936B (zh) 用于确定专用处理资源的资源量的方法、设备和计算机程序产品
US20060242633A1 (en) Compiling computer programs to exploit parallelism without exceeding available processing resources
CN106557369A (zh) 一种多线程的管理方法及系统
US20180101404A1 (en) Resource and latency estimation-based scheduling
CN109558248B (zh) 一种用于确定面向海洋模式计算的资源分配参数的方法及系统
CN112667405B (zh) 信息处理方法、装置、设备及存储介质
CN115269108A (zh) 一种数据处理方法、装置及设备
CN114895773A (zh) 异构多核处理器的能耗优化方法、系统、装置及存储介质
CN116467061A (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN114337920A (zh) 编码解析方法、装置及电子设备
US10503548B2 (en) Resource and latency estimation-based scheduling in a distributed computing environment
US9577869B2 (en) Collaborative method and system to balance workload distribution
CN111694670B (zh) 资源分配方法、装置、设备和计算机可读介质
CN115437794A (zh) I/o请求调度方法、装置、电子设备及存储介质
CN110825920B (zh) 数据处理方法和装置
CN112732979A (zh) 信息写入方法、装置、电子设备和计算机可读介质
CN108512711B (zh) 得到瞬时接口访问统计量的方法、装置和设备
CN113032168B (zh) 数据传输速率动态调整方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150819

Termination date: 20201115