CN107430525A - 用于创建大规模并行化可执行对象的方法、装置以及系统 - Google Patents
用于创建大规模并行化可执行对象的方法、装置以及系统 Download PDFInfo
- Publication number
- CN107430525A CN107430525A CN201680016138.8A CN201680016138A CN107430525A CN 107430525 A CN107430525 A CN 107430525A CN 201680016138 A CN201680016138 A CN 201680016138A CN 107430525 A CN107430525 A CN 107430525A
- Authority
- CN
- China
- Prior art keywords
- subtask
- treatment element
- identified
- treatment
- path
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/457—Communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种用于优化要在装置上执行的机器代码的方法,该装置包括一个或更多个总线和多个处理元件,其中,机器代码被配置为在装置上执行包括多个子任务的任务,其中,该方法包括以下步骤:针对至少一个子任务从多个处理元件识别能够处理子任务的一个或更多个处理元件;识别用于与所识别的一个或更多个处理元件通信的一个或更多个路径;预测用于所识别的处理元件和/或所识别的路径中的一个或更多个的周期长度;从所识别的处理元件选择优选处理元件,和/或从所识别的路径选择优选路径;以及生成包括指令的机器代码序列,所述指令使得装置通过优选路径与优选处理元件通信和/或在优选处理元件上执行子任务。本发明还涉及装置和系统。
Description
技术领域
本发明涉及一种用于优化要在包括一个或更多个总线和多个处理元件的装置上执行的机器代码的方法。进一步地,本发明涉及被配置为决定分配路径的装置和系统。
背景技术
现今,大数据量借助快速发展的通信和计算技术变得可用。然而,已经开发适于高效执行不同种类的处理任务的高度专业化处理元件,因为任务被低效地从控制元件输送到合适的处理元件,所以浪费许多资源。
已知硬件/软件解决方案中的一些可以在一个方向或另一个方向上提供改进。然而,它们仍然不改进上面列出的准则中的任意一个或至少大多数。因此,仍然需要用于优化在若干处理元件上处理任务的一种改进的硬件或软件解决方案。
发明内容
因此,本发明的目的是提供克服上面提及的现有技术的问题中的至少一些的方法、装置以及系统。
具体地,本发明的优点由所附独立权利要求来实现。本发明的另外方面、实施方式以及特征在所附从属权利要求中规定,而且还有助于所述优点的实现。
根据实施方式,本发明涉及一种用于优化机器代码的方法。机器代码可以在包括一个或更多个总线和/或多个处理元件的装置上执行。机器代码被配置为在装置上执行任务。任务包括多个子任务。该方法包括以下步骤:
-针对至少一个子任务从多个处理元件识别能够执行子任务的一个或更多个处理元件;
-识别用于与所识别的一个或更多个处理元件通信的一个或更多个路径;
-预测用于所识别的处理元件和/或所识别的路径中的一个或更多个的周期长度;
-从所识别的处理元件选择优选处理元件,和/或从所识别的路径选择优选路径;
-生成包括指令的机器代码序列,所述指令使得装置通过优选路径与优选处理元件通信和/或在优选处理元件上执行子任务。
本发明基于以下理念(idea):该理念基于选择导致子任务的最快处理的特定路径和处理元件的周期长度预测。由此,本发明的方法避免由于使用用于与处理元件通信的不必要的长路径或由于使用不理想地适于处理给定子任务的处理元件而引起的资源的浪费。
本发明具体可以在至少两个处理元件能够处理子任务的系统中实施。具体地,本发明在至少两个处理元件用于处理子任务的处理时间不同时是特别有利的。
此外,本发明具体可以利用总线系统来实施,在总线系统中,对于至少一个处理元件,用于与该处理元件通信的至少两个路径可用。具体地,本发明在用于至少两个路径的传递时间不同时是特别有利的。
由此,本发明的方法避免由于使用用于与处理元件通信的不必要的长路径或由于使用不理想地适于处理给定子任务的处理元件而引起的资源的浪费。
本发明基于以下另外的理念:周期长度预测和优选处理元件和/或路径的选择在生成机器代码之前和/或在生成机器代码期间(即,在编译之前和/或在编译期间)进行。
因此,方法可以由编译器(优选地为GNU C编译器(GCC))来进行。这种编译器通常构成计算机程序或一组程序,所述计算机程序或一组程序将用编程语言(即,高级编程语言)书写的源代码变换成通常为较低级语言(例如,汇编语言或机器代码)的另一种计算机语言。
优选地,编译器如权利要求1定义地优化机器代码。产生的、将在运行时间期间在装置上运行的软件优选地是编译器的产品和/或如权利要求1的方法。编译器优选地适于鉴于可以并行处理任务的多个处理元件(具体为异构处理器核心(heterogeneous processorcore))的存在根据本发明进行优化。
此外,本发明具有以下优点:方法在生成机器代码之前和/或在生成机器代码期间(即,在编译之前和/或在编译期间)进行。因此,该方法在执行机器代码之前或至少部分在执行机器代码之前(即,在运行时间之前或至少部分在运行时间之前)进行。
根据本发明的另外方面,方法可以被配置为使得确定要执行的机器代码是否包括可以并行执行的任意任务或子任务。在这种分析之后,可以通过所识别的任务或子任务的并行化来优化机器代码。该并行化可以由如权利要求1定义的、根据本发明的方法的步骤来进行。
根据本发明的另外方面,识别一个或更多个处理元件(即,针对至少一个子任务从多个处理元件识别能够处理所述子任务的一个或更多个处理元件)的步骤包括以下另外子步骤:
-将任务分割成子任务;
-识别子任务的逻辑相关性;以及
-基于所述相关性从多个处理元件识别能够处理所述子任务的一个或更多个处理元件。
有利地,在没有子任务的逻辑相关性被确定的情况下,可以并行处理这些子任务。在确定任意相关性的情况下,确定是否可以(例如,通过将依赖子任务转换成独立子任务)消除这些相关性。然后,针对这些子任务中的每一个,可以识别能够处理所述子任务的一个或更多个处理元件。这样,这些子任务中的每一个可以通过另一个处理元件来并行处理。
因此,可以的是,即使是不独立但彼此具有条件关系的这种子任务也可以被转换成彼此构成单个并行实例的并行子任务。
作为将依赖子任务转换成独立子任务的示例,任务中的任意“if-then-else”分支可以被识别并转换成实例选择算法。因此,这些实例可以构成现在独立于彼此的单个子任务。因此,它们可以被并行处理。另外,当处理这些子任务时,一存在这些子任务中的一个中的肯定实例命中(positive case-hit),就可以立即终止所有这些子任务。
对于独立子任务,可以识别能够并行处理子任务的一个或更多个处理元件。然而,还存在半独立子任务,所述半独立子任务各包括可以独立于彼此处理的至少两个步骤。对于这种半独立子任务,可以的是,它们步骤中的一些可以被并行处理(例如,可以已经进行在另一个步骤的仍然未知中间结果之后的迭代)。
此外,可以的是,基于由程序员选择的准则(例如,子任务的优先级和/或重要度)对子任务进行分类。然后,对于这些子任务中的每一个,可以识别处理元件,其中,该识别还可以基于处理元件的当前负载、各个处理元件的性能和/或各个处理元件的输送成本(即,用于与相应处理元件通信的路径的传递时间)。
根据本发明的另一个方面,基于不同准则预测所识别的处理元件和/或所识别的路径(具体为各路径)的周期长度。这些准则可以包括分支预测法,具体地基于先前的预测和/或优选路径的选择。此外,准则还可以包括强力法(brute force method),在该方法中,评估各个所识别的路径的周期长度。凭借这种强力法,可以通过将随机数据用于评估机器代码的最佳(即,最高性能)执行来评估大多数或所有理论上可能的实例(即,到所有可能处理元件的所有可能路径)。这可能在必须处理大量数据(这需要许多不同处理元件上的许多周期)时是特别合适的。
根据本发明的另外方面,选择优选处理元件和/或选择优选路径的步骤基于一个或更多个准则。这些准则可以包括子任务的优先级,其中,小的子任务可以具有更高的优先级。对于具有较高优先级的子任务,可以选择具有短周期长度的处理元件和/或路径。因此,具有高优先级的子任务可以由具有较高性能和/或需要较低输送成本的那些处理元件来处理。然而,具有较低优先级的子任务可以被寻址到不那么高性能和/或具有较高输送成本的处理元件。
此外,选择优选处理元件和/或选择优选路径可以基于子任务的相关性,其中,处理元件和/或路径可以被选择为使得独立子任务可以在若干处理元件上并行进行。因此,可以实现的是,针对可以并行处理的各子任务,识别独立处理元件。因此,这些子任务可以被并行处理。
本发明的主要概念是对于至少一个子任务执行如权利要求1定义的步骤。因此,针对该至少一个子任务,可以在生成机器代码(例如,编译)之前或至少在生成机器代码(例如,编译)期间进行如权利要求1定义的步骤。然而,根据优选实施方式,针对任务所包括的至少一个其他子任务,在生成机器代码的步骤之后进行以下步骤。优选地,这些步骤在执行机器代码时(即,在运行时间期间)进行:
-针对该子任务从多个处理元件识别能够处理子任务的一个或更多个处理元件;
-识别用于与所识别的一个或更多个处理元件通信的一个或更多个路径;
-预测用于所识别的处理元件和/或所识别的路径中的一个或更多个的周期长度;
-从所识别的处理元件选择优选处理元件,和/或从所识别的路径选择优选路径。
因此,同样针对另外的子任务,即使它仅在执行机器代码期间(即,运行时间期间)进行,并行化也是可以的。优选地,已经在编译期间针对所有子任务进行并行化。然而,在这是不可能的情况下,剩余尚未并行化的子任务优选地在生成机器代码之后和/或在执行机器代码和/或任务期间来并行化。
根据本发明的实施方式,所识别的处理元件和/或所识别的路径的周期长度基于以下内容来预测:
-用于在所识别的路径上向处理元件传递指令和输入数据的预测正向传递时间;
-用于在所识别的路径上从处理元件传递输出数据的预测返回传递时间;和/或
-用于在所识别的处理元件上处理子任务的预测处理时间。
因此,用于所识别的处理元件的周期长度可以基于用于在所识别的处理元件上处理子任务的预测处理时间来预测。用于所识别的路径的周期长度可以基于用于在所识别的路径上向处理元件传递指令和输入数据的预测正向传递时间和用于在所识别的路径上从处理元件传递输出数据的预测返回传递时间来预测。
预测正向传递时间和预测返回传递时间可以包括整个输入数据到达处理元件的时间。
根据本发明的实施方式,所预测的周期长度是预测正向传递时间、预测返回传递时间以及预测处理时间的和。
该实施方式具有以下优点:所预测的周期长度特别快且高效地计算。在一些实施方式中,预测正向传递时间、预测返回传递时间以及预测处理时间的和可以为加权和。这在仅可以精确计算预测时间中的一些时是特别有用的。在这种情况下,可以给予精确计算的时间较高的权重。
根据本发明的另外方面,预测周期长度可以基于一个或更多个总线的当前可用性和/或使用。此外,预测周期长度还可以基于所识别的一个或更多个处理元件当前可用性和/或使用。
考虑总线和处理元件的当前可用性和/或使用允许路径时间和处理时间的甚至更精确的预测。
根据本发明的实施方式,方法还包括以下步骤:
-开始在所选择的处理元件上处理子任务;
-更新子任务的所预测的周期长度,以获得子任务的预测剩余周期长度;
-如果确定预测剩余周期长度高于用于在不同处理元件中处理子任务的预测周期长度,则取消在所选择的处理元件上子任务的处理;以及
-将子任务分配到所述不同处理元件。
更新子任务的所预测的周期长度以获得子任务的预测剩余周期长度的步骤具有以下优点:可以考虑仅在已经开始子任务的处理之后变得可用的另外信息。例如,在放慢且预期减慢已经开始处理特定子任务的处理元件的信息变得可用的情况下,可以决定取消该处理元件上子任务的处理,并且将子任务推迟(defer)到不同的处理元件。
本发明的该实施方式具有另外的优点:如果处理花费比所预测的远远更长的时间(这可能是已经错误预测处理元件上的该处理的指示),则可以取消给定处理元件上子任务的该处理。
在本发明的其他实施方式中,如果控制元件确定需要所选择的处理元件以便处理具有更高优先级的子任务,则可以取消该处理元件上子任务的处理。这在预测可能将来子任务的情况下可以是特别相关的。
在本发明的另外优选实施方式中,给定处理元件上子任务的处理已经花费比所预测的更长的时间的信息被存储在表中,并且在预测用于类似子任务的处理元件时被考虑。具体地,如果特定子任务的处理在给定处理元件上失败,则该信息可以被存储在表中。在特定种类的子任务的处理已经在给定处理元件上重复失败的极限情况下,即使处理元件指示它可用,也可以决定不应在该处理元件上处理类似的子任务。
根据本发明的实施方式,该方法还包括以下步骤:
-确定用于子任务的处理的阈值时间;
-开始在所选择的处理元件上处理子任务;
-检查子任务的实际处理时间是否高于阈值时间;
-如果实际处理时间高于阈值时间,则取消子任务的处理;
-将子任务分配到不同处理元件。
该实施方式提供了一种决定何时因为特定子任务的执行花费比预期显著更长的时间(这可能是由于处理故障而引起)而应取消该执行的简单方式。
根据本发明的另外实施方式,提供了一种装置,该装置包括:
-优选地一个或更多个总线;
-一个或更多个控制元件;以及
-多个处理元件。
控制元件中的至少一个适于生成机器代码,该机器代码被配置为在多个处理元件上优选地并行执行任务。
此外,装置包括一个或更多个第一处理元件。这些第一处理元件优选地位于与控制元件相同的管芯(die)上。这意味着它们可以为第一多核处理器(例如,单元处理器)的各处理器核心。第一处理元件和控制元件通过总线(例如,通过环形总线)连接。
而且,装置包括一个或更多个第二处理元件。第二处理元件优选地位于第二管芯上。这意味着它们可以为第二多核处理器(例如,第二单元处理器)的处理器核心。然而,一个或更多个第二处理元件(或第二多核处理器)可以位于与第一处理元件相同的板(例如,印刷电路板(PCB))上。
第一多核处理器和第二多核处理器彼此直接通信。一个或更多个第二处理元件可以通过(直接)布线(wiring)(例如,铜线)连接到控制元件。优选地,布线位于上面放置有第一处理元件和第二处理元件的板上。因此,控制元件以及第一多核处理器和第二多核处理器可以经由该布线通信。由此,一个或更多个第二处理元件可以通过可以构成总线或总线的一部分的点对点线缆(cable)或板对板连接来连接到控制元件。
此外,装置包括一个或更多个第三处理元件。一个或更多个第三处理元件可以位于至少一个另外(第二)板上。
另外,装置可以包括一个或更多个第四处理元件。一个或更多个第四处理元件可以经由网络连接到控制元件。另外,网络可以构成总线或总线的一部分。
优选地,第二处理元件和/或第三处理元件经由现场可编程门阵列(FPGA)连接到控制元件。因此,第一多核处理器和第二多核处理器可以通过FPGA连接。而且,另外(第二)板上的第三处理元件可以经由同一FPGA连接到控制元件(具体为第一板)。现场可编程门阵列(FPGA)可以被配置为实现至少一个第三多核处理器与第一多核处理器之间的通信。
根据本发明的另外方面,任务包括多个子任务。而且,生成机器代码的步骤优选地基于以下内容:
-针对至少一个子任务从多个处理元件识别能够处理子任务的一个或更多个处理元件;
-识别用于与一个或更多个所识别的处理元件通信的一个或更多个路径;
-预测用于所识别的处理元件和/或所识别的路径中的一个或更多个的周期长度;
-从所识别的处理元件选择优选处理元件,和/或从所识别的路径选择优选路径;
-生成包括指令的机器代码序列,所述指令使得装置通过优选路径与优选处理元件通信和/或在优选处理元件上执行子任务。
根据本发明的实施方式,至少一个控制元件适于基于以下内容预测周期长度:
-用于向处理元件传递指令和输入数据的预测正向传递时间;
-用于从处理元件传递输出数据的预测返回传递时间;和/或
-用于在处理元件中处理子任务的预测处理时间。
根据本发明的实施方式,至少一个控制元件适于进行以下步骤:
-开始在所选择的处理元件上执行子任务;
-更新子任务的所预测的周期长度,以获得子任务的预测剩余周期长度;
-如果确定预测剩余周期长度高于用于在不同处理元件中处理子任务的预测周期长度,则取消在所选择的处理元件上子任务的处理;以及
-将子任务重新分配到所述不同处理元件。
根据本发明的实施方式,装置还包括忙表(busy table),该忙表包括关于多个处理元件的当前可用性和/或使用的信息,其中,控制元件适于定期更新忙表中的信息。
根据本发明的实施方式,一个或更多个总线包括一个或更多个环。优选地,第一处理元件和控制元件通过总线(例如,环形总线)连接。优选地另外,第二处理元件通过另外总线(例如,环形总线)连接。优选地另外,第三处理元件通过另外总线(例如,环形总线)连接。优选地另外,第四处理元件通过另外总线(例如,环形总线)连接。至少第一处理元件和第二处理元件的总线而且结合第三处理元件和/或第四处理元件的总线可以形成总线系统。
根据本发明的另外实施方式,一个或更多个总线可以包括用于输送指令的第一组总线和用于输送数据的第二组总线。这具有以下优点:可以针对指令的低时延传输优化第一组总线,并且可以针对潜在大量数据的高带宽传输优化第二组总线。具体地,第一组总线和第二组总线可以在不同的频率下操作(例如,第一组总线可以在较高的频率下操作,而第二组总线在较低的频率下操作,但提供每周期较高的传输容量)。
根据本发明的另外实施方式,一个或更多个总线包括单向且沿相反方向定向的两个环。
这样,因为如果选择两个不同定向的环形总线中更合适的,则可以节省大量数据输送时间,所以本发明可以以特别高效的方式来执行。
根据本发明的实施方式,一个或更多个总线包括元件互连总线。
根据本发明的另外实施方式,多个处理元件中的至少一个连接到一个或更多个总线,并且另外包括到主要处理元件的直接连接。
根据本发明的实施方式,装置还包括预测模块,该预测模块被配置为基于先前处理的子任务预测将来的子任务。
预测将来的子任务具有以下优点:可以在实际执行子任务之前已经预加载将来子任务所需的数据。例如,如果检测到先前的子任务涉及加载数据1.jpg、数据2.jpg以及数据3.jpg,则预测模块可以预测,将来的子任务可能将涉及加载可能现有的数据4.jpg,由此在开始对应的子任务之前已经预加载数据4.jpg。在优选实施方式中,数据的这种预加载仅在系统处于低负载下时(例如,在控制元件的当前负载低于预定阈值时)执行。
根据本发明的另外实施方式,装置适于:如果一个或更多个新的子任务在开始执行一个或更多个预测的将来子任务之后到达,则为了支持执行当前子任务而取消一个或更多个预测的将来子任务。例如,结果可能是预测不准确,并且应执行新子任务,而不是执行预测的将来子任务。
根据本发明的另外实施方式,提供了一种服务器系统,该服务器系统包括根据上述实施方式中的一个的装置。
这样,另外,服务器系统优选地被配置为使得其提供本申请所列的所有积极效果(positive effect)。另外,同时使得能够引入和/或使用现有数据中心基础设施/部件/模块/元件。
根据本发明的实施方式,装置可以包括一组两个多核处理器,所述两个多核处理器彼此直接通信,并且适于进行如上面概述且在下面更详细说明的方法。然而,装置还可以包括三个这种组,所述三个这种组通过FPGA连接(且优选地经由FPGA通信),并且适于一起进行根据本发明的方法。
根据本发明的另外方面,一个或更多个总线、一个或更多个控制元件以及多个处理元件中的至少一些位于同一芯片壳体内部。这具有以下优点:对于与位于同一壳体内的部件通信可以实现特别高的带宽。此外,该设置在批量生成时产生成本节省。
总线的一些元件可以充当控制元件和处理元件这两者。例如,第一控制元件可以向然后充当处理元件的第二控制元件发送子任务。
根据本发明的实施方式,到一个或更多个总线的访问使用时分多址(TDMA)方案来管理。在简单TDMA方案中,总线的有效元件(active element)以固定时间增量来改变。这样,预先确定将允许哪个元件何时访问总线。在本发明的上下文中,这具有以下优点:可以进行关于一个或更多个总线的将来可用性的精确预测。
根据本发明的另外实施方式,到一个或更多个总线的访问使用令牌(tolen)传递方案来管理。具体地,当第一元件完成访问总线时,访问令牌(access token)可以被从总线的第一元件传递到下一元件。因为避免空闲时隙,所以令牌传递方案可以比简单TDMA方案更高效。另一方面,将来总线可用性的预测可以更复杂。为此,控制元件可以包括要在总线上执行的当前和将来子任务的表。这允许将来总线可用性的准确预测并选择处理元件和传递路径(transfer path),使得更高效地使用一个或更多个总线。
根据本发明的另外实施方式,一个或更多个总线被设置为令牌环(即,元件的邻居是该元件的物理邻居)。
本发明还可以与用于控制到一个或更多个总线的访问的其他协议一起使用。这些协议可以包括静态和动态访问控制方案(例如,调度方法和随机访问方法)。
本发明可以与不同种类的拓扑(具体为线性总线、环形总线以及分支拓扑)、星形网络以及树拓扑一起使用。在一些实施方式中,本发明的方法甚至可以连同完全连接的网格一起使用。
任务可以包括一个或更多个指令和数据。子任务可以包括一个指令,或最终还包括任务所包括的一组指令。
识别能够处理子任务的一个或更多个处理元件例如可以通过使用查找表来执行,该查找表对于各处理元件提供它具有的处理能力的信息。例如,对于包括图形处理单元(GPU)的给定处理元件,表可以包括该处理元件可以处理与特定图形处理指令有关的特定子任务的信息。
识别用于与一个或更多个所识别的处理元件通信的一个或更多个路径可以通过在表中查找给定处理元件借助哪些总线与正请求该子任务的处理的控制元件连接来实施。即使仅存在可用于与给定处理元件通信的一个总线,也可以存在控制元件可以与该处理元件通信所借助的两个可用方向。在这种情况下,例如可以存在可用于在环形总线上沿顺时针方向或逆时针方向与处理元件通信的两个路径。此外,总线可以包括分支,这些分支还导致可用于与给定处理元件通信的多个路径。
预测所识别的处理元件和所识别的路径中的一个或更多个的周期长度可以包括使用两个查找表:存储用于控制元件与处理元件之间的不同路径的路径长度的第一查找表和存储关于用于不同子任务和不同处理元件的预期处理时间的信息的第二查找表。例如,第二查找表可以包括特定图形处理指令需要10个时钟周期在第一处理元件上处理而仅需要八个时钟周期在第二处理元件上处理的信息。
在本发明的其他实施方式中,仅存在一个查找表,该查找表包括关于不同种类的子任务在不同处理元件上的期望处理时间的信息。例如,这种表可以包括特定指令在特定处理元件上的期望处理时间,同时具有关于处理时间如何根据用于该指令的输入数据量而变化的另外信息。
换言之,周期长度可以基于以下信息中的一个或更多个来预测:如何结构化总线的知识;总线和/或处理元件此时处于哪个状态或位置;关于需要处理具有哪些数据量的哪些子任务的信息;给定子任务是否包括比可以存储在一个矢量中的数据集更多的数据集使得子任务应理想地分配在可用处理元件上(即,跨独立处理元件和处理步骤的SIMD)的信息。
在一些情况下,预测可以基于确切计算。在其他情况下,预测可以基于启发法(heuristics),并且仅为真实路径时间或处理时间的大致估计。
根据本发明的另外实施方式,提供了一种包括程序代码的计算机可读介质,该程序代码在由计算装置执行时,使得计算装置进行如上面概述且下面更详细说明的方法。
附图说明
另外优点和优选实施方式被包括在从属权利要求中且将参照附图从优选实施方式的下面描述来更好地理解。在附图中:
图1示出了根据本发明的示意装置;
图2示出了具有环结构的总线系统的示意图;
图3a示出了根据本发明的、具有两个环形总线的总线系统的示意图;
图3b示出了根据本发明的总线系统的另外示意图;
图4示出了具有到当前和将来有效元件的指示指针的另外总线系统的示意图;
图5示出了另外总线系统的示意图;
图6示出了具有双向操作的TDMA结构的总线系统的示意图;
图7示出了具有TDMA结构的总线系统的示意图,该TDMA结构具有分支且双向操作;
图7a示出了在主分支中具有全局令牌的、图7的总线系统的示意图;
图7b示出了在次分支中具有全局令牌且可选地在不同的次分支中具有局部令牌的、图7的总线系统的示意图;
图8示出了具有不是所有但一些元件共享相同总线的、双向操作的TDMA结构的总线系统的示意图;以及
图9示出了具有环结构的另外总线系统的示意图。
具体实施方式
图1示出了包括总线系统的、根据本发明的装置的示意图。总线系统包括多个多核处理器120、122、124、126、128、130、132、134、136、138、140、142。这些处理器中的至少一个(例如,被指示为“CPU1主”的处理器120)包括控制元件(未示出)。该控制元件适于生成被配置为在多个另外处理元件上执行的机器代码。控制元件是多核处理器120的一个处理器核心。因此,另外的处理器核心(未示出)(例如,8个另外的核心)根据本发明构成处理元件。多核处理器120的核心通过环形总线连接。
多核处理器120位于与另外多核处理器122相同的PCB板140上。多核处理器120和122彼此直接通信。为了这样做,它们通过位于与处理器120和122相同的PCB140板上的铜线连接。
处理器120和122各连接到构造(Fabric)110。构造110包括FPGA,该FPGA位于优选地与PCB 140分离的PCB上。FPGA与处理器120、122之间的连接是XIO链路。这种XIO链路可以为基于数据包的高性能计算机总线。优选地,被配置为支持根据本发明的方法(例如,支持根据本发明的并行化)的具体协议运行在XIO链路上。XIO链路包括串行化通用输入/输出(GPIO)。FPGA被配置为反串行化这些GPIO。因此,FPGA具有串行化器/反串行化器(SerDes)功能。串行化器/反串行化器(SerDes)功能可以包括用于补偿有限输入/输出的高速通信的一对功能块。这些块可以沿各方向将数据在串行数据与并行接口之间转换。为了使I/O引脚和互连的数量最小化,SerDes有利地通过单个/差分线路(single/differential line)来提供数据传输。
处理器120、122与构造110之间的连接150包括一个或更多个铜线缆。而且,通常在连接150中(即,在处理器所位于的PCB与构造110之间)设置另外的PCB连接器元件(未示出)。PCB连接器元件具有组合处理器120和122的连接(即,线缆)的功能。
处理器120和122形成大规模并行处理器阵列(MPPA)。根据本发明的方法被应用在该MPPA上。因此,MPPA构成本发明的装置(即,总线系统)。包括两个处理器120和122的总线系统可以与图3a所示的总线系统对应。
此外,所述MPPA经由构造110连接到包括多核处理器124、126、128以及130的另外两个或更多个MPPA。如上面在处理器120、122的上下文中描述的相同,处理器124、126、128以及130中的每一个通过XIO链路连接到FPGA。
各个MPPA例如可以独立于彼此进行根据本发明的方法。然而,还可以的是,根据本发明的方法以统一方式在三个MPPA的组合上进行。因此,MPPA的组合还可以构成根据本发明的装置(即,总线系统)。在这种情况下,多核处理器120可以为主CPU(即,它包括作为根据本发明的控制元件的一个核心)。
处理器120至130可以为单元处理器。当然,还可以的是,MPPA的这种组合包括不同的处理器。因此,在根据本发明优化机器代码时,可以考虑不同处理器和各不同处理器核心(即,处理元件)的不同性能和/或由于处理器之间的不同连接而产生的不同输送成本。
此外,MPPA的组合经由网络120(例如,40吉比特光纤)连接到另外的构造(如例如,构造160)。这些构造再次连接到另外的MPPA,这些另外的MPPA与上面说明的内容对应。然而,另外,不同MPPA或计算实体可以经由网络120连接。可以的是,根据本发明的方法在网络层(即,在以统一方式连接到网络的所有MPPA的组合上)进行。图1所示的元件的整个实体优选地形成叶片系统(blade system)。
图2示出了具有环拓扑的总线系统210的示意图。图1的多核处理器120、122、124、126、128、130、132、134、136、138、140、142可以各包括这种总线系统。总线系统210包括适于沿逆时针方向输送指令和数据的第一环形总线212和适于沿顺时针方向输送指令和数据的第二总线214。附接到总线212和214的是充当控制元件的处理核心220。此外,存在连接到总线212、214的、具有各种功能的多个元件222-234。元件222-234包括随机存取存储器(RAM)222、闪存224、大容量存储控制器226、网络接口控制器228、I2C总线230、外围部件互连快速总线(PCIe)232以及另外的杂项装置(miscellaneous device)234。
环形总线212、214被设置为以时移方式操作的所连接元件之间的直接连接。对于图2的系统,元件220-234连接到两个总线212、214。然而,总线之间没有直接连接。类似地,图5和图9所示的系统不包括总线之间的任何直接连接。在本发明的其他实施方式中,总线可以包括直接连接。
相继地,允许所连接元件书写(即,有效状态从一个元件传递到下一个元件,并且读或写操作仅可以由在给定时间点有效的元件来执行)。在一些实施方式中,在一个时钟周期中可以输送多于一个子任务。另外,多于一个数据集可以附接到一个子任务(SIMD)。取决于总线环的数量、所连接元件的数量以及指针的开始位置和方向,可以发生的是多于一个环在一个时间点定址(address)同一元件。对于这种情况,可以设置吸收另外指令和数据的FIFO缓冲器。在图2中,仅针对另一个杂项元件234示出FIFO缓冲器235,但以类似的方式,可以针对所有处理元件设置FIFO缓冲器。
图3a示出了包括两个环312、314的总线系统310的示意图。各个环由多核处理器(例如,单元处理器)来提供。包括总线系统312的多核处理器根据本发明含有控制元件。在该实施方式中,两个环312、314经由FIFO缓冲器320连接。因此,包括相应环312、314的多核处理器可以彼此直接通信。另选地,两个环312、314经由FPGA 320连接且经由该FPGA间接通信。总线系统310可以适于进行根据本发明的方法。
图3b示出了包括四个环形总线312、314、352以及354的总线系统340的示意图。因此,总线系统340包括如图3a所示的总线系统310。各环形总线312、314、352以及354构成多核处理器(例如,单元处理器)。多个不同元件可以连接到环形总线,例如,内部集成电路(I2C)、网络接口控制器(NIC)、随机存取存储器(RAM)、储存器、缓冲器(例如,先入先出缓冲器(FIFO等))。环形总线的元件(例如,RAM、储存器、NIC、I2C等)仅是示例,因此,还可以存在连接到环形总线和/或被多核处理器包括的更多、更少或不同元件。
总线系统340包括两组,各组包括两个多核处理器(即,处理器312、314的组(也如图3a所示)和处理器352、354的组)。一组的处理器如上面说明的通过相应FIFO缓冲器312和362彼此直接通信。该组通过FPGA 361连接到彼此(且优选地经由FPGA 361通信)。为了这样做,各处理器通过相应XIO链路363、364、365以及366连接到FPGA 361。然而,各链路363、364、365以及366还可以包括优选地并行的多个XIO链路。各个处理器与相应XIO链路363、364、365以及366之间的接口由处理器的FIFO缓冲器来提供。
处理器中的一个(例如,处理器312)根据本发明可以包括控制元件。两组一起(即,四个处理器312、314、362、364)可以适于进行根据本发明的方法。换言之,当进行根据本发明的方法时,可以并行使用由四个处理器312、314、362、364包括的各处理元件(即,处理器核心)。
然而,总线系统340优选地还包括第三组(未示出),其中,第三组与图3b所示且上面说明的第一组和第二组对应。因此,三组一起(即,三组所包括的六个处理器)可以适于进行根据本发明的方法。当然,以相同的方式,还可以四、五、六或甚至更多组连接在一起,其中,另外,各组可以包括多于两个处理器,以便一起进行根据本发明的方法。
FPGA 361另外包括可以提供网络接口367的至少一个收发器和/或通用输入/输出(GPIO)。接口367可以为小型可插拔(small form-factor pluggable)(SFP)或增强小型可插拔(SFP+)的(例如,四通道小型可插拔(QSFP或QSFP+))、或多个未键合的8P8C模块式连接器(例如,RJ45)。接口367还可能包括增强小型可插拔(SFP+)和未键合的8P8C模块式连接器(例如,RJ45)的组合。另选地,FPGA还可以连接到包括如上所述的网络接口的至少一个另外FPGA(未示出)。
图4示出了环形总线412的示意图,其中,到当前有效元件的指针被指示为P0,并且到下一有效元件的指针被指示为P1至P7。在该实施方式中,充当控制元件的处理核心420、RAM 422、闪存424、储存器426、NIC 428、I2C总线430、PCIe 432以及其他元件434连接到环形总线412,其中,其他元件434经由FIFO缓冲器435连接到环形总线412。环形总线412被配置为沿顺时针方向输送数据,并且另外指针沿顺时针方向穿过环。在所示示例中,元件间隔一个时钟周期的距离。其他实施方式可以提供,指针位置以在长度上可以相等或可以不相等的不同时间增量穿过环。指针的转发例如可以基于被分配给不同元件的静态优先级来决定。
图5示出了根据本发明的另外总线系统510的示意图。
本发明的操作应用以下示例来例示:假定主处理元件520a充当控制元件且发送可以在次处理元件536-550中的一个上处理的子任务:根据现有技术处理方法,基于存储在查找表中的一个中的先前成功的结果,将使用第一环512向次处理元件540发送子任务,这需要14个时钟周期。在需要4个时钟周期的、次处理元件540中的处理之后,将在第一环512上向主处理元件520a返回输出数据,这将花费另外的3个时钟周期。在有效时隙被返回到主处理元件520a之前,花费另外的13个时钟周期。这产生14+4+13+3=34个时钟周期的总周期时间。根据本发明,理想地将确定,因为设置环514可能具有到环512的确切匹配偏移,所以如果子任务在没有任何总线等待时间的情况下经由第二环514被发送到次处理元件540且经由第一环512返回到主处理元件520a,则预测周期时间仅为3+4+0+3=10个时钟周期。在该示例中,根据本发明的方法导致将周期时间减小至小于根据现有技术方法的周期时间的三分之一。
n个连接元件对应于n个不同的指针位置。
图6示出了根据本发明的另外总线系统610的示意图。总线系统610用具有线性拓扑的两个双向总线612、614以及时分多址方案来设置。图6示出了连接到两个线性总线612、614的三个元件620、622、640。通常,可以存在连接到两个总线的若干n个这种元件。这些元件中的一些可以充当控制元件,其他元件充当受控制元件控制的处理元件。除了控制元件和处理元件之外,其他元件(例如,RAM控制器)也可以连接到总线612、614。
另选地,总线系统610还可以使用令牌传递方案来设置,在该令牌传递方案中,令牌从一个站传递到下一站,其中,“下一”站基于连接到总线的元件的总线接口的地址来限定。
在本发明的另外实施方式中,指针可以由所连接控制元件推或拉以从任意其他所连接元件接收数据或向任意其他所连接元件发送数据。
图7示出了非排他性总线系统710的示意图,该总线系统包括借助分支713连接的三个线性部712a、712b、712c。连接到总线系统710的是:连接到第一线性部712a的两个控制元件720a、720b和RAM 722、连接到第二线性部712b的两个处理元件730、732以及连接到总线系统710的第三线性部712c的两个处理元件740、742。除了图7所示的第二线性部712b和第三线性部712c之外,可以存在也连接到第一线性部712a的任意数量的另外线性部。这些另外线性部可以包括相同数量的所连接元件。
例如,RAM部件722具有总共三个物理邻居:控制元件720b、第二部712b的处理元件730以及第三部712c的处理元件740。因此,对该总线系统710的访问应用令牌传递方案来管理,在该方案中,邻居关系基于所连接元件的地址来限定。应当注意,线性部712b和712c可以同时有效。临时或二级令牌用于分配一个线性部内的有效时隙。关于线性部的当前状态和预测将来可用性的知识可以通过周期预测法且由子任务被分配到哪些处理元件的决策来使用。
在优选实施方式中,为了允许每总线712a、b、c使用多于一个令牌,存在一个主分支部和多个次分支部。图7a和图7b中例示了这一点,其中,第一线性部712a形成主分支,并且第二线性部712b和第三线性部712c形成次分支部。
为了避免冲突,仅可以存在总是具有遍历优先级的一个全局令牌750。全局令牌750在图7a和图7b中被指示为大星,局部令牌752被指示为小星。如果全局令牌750如图7a所示的存在于主分支部上,则无法在任何次分支部上存在任何局部令牌。然而,如果全局令牌750如图7b所示的存在于次分支部中的一个上,则可以允许无法离开它们的独立次分支部的局部令牌752在其他次分支部中的所有或一些中。
图8示出了包括两个双向总线812、814的非排他性总线系统810的示意图。第一控制元件820a、第二控制元件820b以及RAM 822连接到第一总线812和第二总线814二者。若干n个处理元件830、832仅连接到第二总线814,并且若干n个处理元件840、842仅连接到第一总线812。该设置可以被重复n次,使得存在连接到总线系统的总共m*n个处理元件。图8所示的设置具有以下优点:例如,控制元件820a、820b与RAM 822之间的通信可以借助第一总线812和第二总线814两者来发生。这使得与用于与处理元件830、832、840、842通信的带宽相比高达两倍的总带宽,所述处理元件830、832、840、842可以被比RAM更不经常地访问。这样,架构适于典型负载场景。另一个益处是与多于一个SPE的通信可以同时发生。
对总线812、814的访问可以用简单的时分多址方案来实施。另选地,例如,可以使用令牌传递方案或两者的组合。
关于上面说明的实施方式,必须注意,所述实施方式可以彼此组合。此外,应当理解,附图所示的总线系统可以包括附图中未示出的另外元件和另外总线。具体地,如图7所示的分支还可以将环形总线与线性部连接。此外,经由桥接器连接或共享至少一个元件的不同总线可以使用不同的访问方案。
图9示出了包括连接有处理核心920和RAM 922的环形总线912、214的非排他性总线系统910的示意图。此外,处理核心920和RAM 922借助直接连接921来连接。另外元件可以连接到环形总线912、914,但未在图9中示出。
应当注意,在本发明的其他实施方式中,图1和图9所示的环形总线还可以用在第一元件完成访问总线时从第一元件向下一元件传递有效时隙的访问协议来实施。这可以被实施为例如令牌环访问方案,在该方案中,元件在它完成访问总线时将令牌传递至下一元件。
Claims (25)
1.一种用于优化要在装置上执行的机器代码的方法,该装置包括一个或更多个总线(212、214、312、314、412、512、514、612、614、712a、712b、712c、812、814)和多个处理元件(122-134、222、322-334、422-434、522-550、620-640、720a-742、822-842),其中,所述机器代码被配置为在所述装置上执行包括多个子任务的任务,
其中,所述方法包括以下步骤:
-针对至少一个子任务从所述多个处理元件识别能够处理所述子任务的一个或更多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842);
-识别用于与一个或更多个所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)通信的一个或更多个路径;
-预测用于所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或所识别的路径中的一个或更多个的周期长度;
-从所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)选择优选处理元件,和/或从所述所识别的路径选择优选路径;以及
-生成包括指令的机器代码序列,所述指令使得所述装置通过所述优选路径与所述优选处理元件通信和/或在所述优选处理元件上执行所述子任务。
2.根据权利要求1所述的方法,其中,识别一个或更多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)的所述步骤包括:
-将所述任务分割成子任务;
-识别所述子任务的逻辑相关性;以及
-基于所述相关性从所述多个处理元件识别能够处理所述子任务的一个或更多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)。
3.根据权利要求2所述的方法,其中,针对独立子任务,识别能够并行处理所述子任务的、相应数量的处理元件。
4.根据权利要求2或3所述的方法,其中,彼此具有条件关系的子任务被转换成彼此构成单个并行实例的并行子任务。
5.根据前述权利要求中任一项所述的方法,其中,用于所识别的处理元件和/或所识别的路径的所述周期长度基于以下内容来预测:
-分支预测法,具体地基于先前的预测和/或优选路径的选择;
-强力法,在该方法中,评估各个所识别的路径的所述周期长度。
6.根据前述权利要求中任一项所述的方法,其中,选择所述优选处理元件和/或选择所述优选路径的步骤基于以下内容来进行:
-所述任务的优先级,其中,对于小的子任务,选择具有短周期长度的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或路径;
-子任务的所述相关性,其中,处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或路径被选择为使得独立子任务或半独立子任务能够在若干处理元件上被并行进行。
7.根据前述权利要求中任一项所述的方法,其中,在生成所述机器代码的步骤之后和/或在执行所述机器代码期间,所述方法包括以下另外步骤:
-针对所述任务所包括的至少一个其他子任务从所述多个处理元件识别能够处理所述子任务的一个或更多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842);
-识别用于与一个或更多个所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)通信的一个或更多个路径;
-预测用于所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或所识别的路径中的一个或更多个的周期长度;以及
-从所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)选择优选处理元件,和/或从所述所识别的路径选择优选路径。
8.根据前述权利要求中任一项所述的方法,其中,用于所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或所识别的路径的周期长度基于以下内容来预测:
-用于在所述所识别的路径上向所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)传递指令和输入数据的预测正向传递时间;
-用于在所述所识别的路径上从所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)传递输出数据的预测返回传递时间;和/或
-用于在所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上处理子任务的预测处理时间。
9.根据权利要求8所述的方法,其中,所预测的周期长度是所述预测正向传递时间、所述预测返回传递时间以及所述预测处理时间的和。
10.根据前述权利要求中任一项所述的方法,其中,预测所述周期长度的步骤基于以下内容中的至少一个来进行:
-所述一个或更多个总线(212、214、312、314、412、512、514、612、614、712a、712b、712c、812、814)的当前可用性和/或使用;以及
-一个或更多个所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)的当前可用性和/或使用。
11.根据前述权利要求中任一项所述的方法,其中,所述方法还包括以下步骤:
-开始在所选择的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上处理子任务;
-更新所述子任务的所预测的周期长度,以获得所述子任务的预测剩余周期长度;
-如果确定所述预测剩余周期长度高于用于在不同处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)中处理所述子任务的预测周期长度,则取消在所述所选择的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上处理所述子任务;以及
-将所述子任务分配到所述不同处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)。
12.根据前述权利要求中任一项所述的方法,其中,所述方法还包括以下步骤:
-确定用于处理子任务的的阈值时间;
-开始在所述所选择的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上处理所述子任务;
-检查用于所述子任务的实际处理时间是否高于所述阈值时间;
-如果所述实际处理时间高于所述阈值时间,则取消所述子任务的所述处理;
-将所述子任务分配到不同处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)。
13.一种装置,该装置包括:
-一个或更多个总线(212、214、312、314、412、512、514、612、614、712a、712b、712c、812、814);
-一个或更多个控制元件(120、220、320、420、520a、520b、620、720a、720b);以及
-多个处理元件(122-142、222、322-334、372、422-434、522-550、620-640、720a-742、822-842),
其中,所述控制元件(120、220、320、420、520a、520b、620、720a、720b)中的至少一个适于生成机器代码,所述机器代码被配置为在所述多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上并行执行任务,其中,所述装置还包括:
-第一多核处理器,所述第一多核处理器包括一个或更多个第一处理元件(322a、322b、322c)和至少一个控制元件;
-至少一个第二多核处理器,所述至少一个第二多核处理器包括一个或更多个第二处理元件(322d、322e),其中,所述第一多核处理器和所述第二多核处理器位于第一板上,并且通过点对点电缆或板对板连接来连接到彼此;以及
-至少一个第三多核处理器,所述至少一个第三多核处理器包括一个或更多个第三处理元件(372a、372b),所述一个或更多个第三处理元件(372a、372b)经由现场可编程门阵列(FPGA)(361)连接到所述第一多核处理器。
14.根据权利要求13所述的装置,其中,所述装置还包括一个或更多个第四处理元件,所述一个或更多个第四处理元件经由网络连接到所述现场可编程门阵列(FPGA)。
15.根据权利要求13或14中任一项所述的装置,其中,所述现场可编程门阵列(FPGA)(361)被配置为实现所述至少一个第三多核处理器与所述第一多核处理器之间的通信。
16.根据权利要求13至15中任一项所述的装置,其中,所述第一多核处理器、所述第二多核处理器以及所述第三多核处理器中的每一个经由至少一个相应XIO链路(363、364、365、366)连接到所述现场可编程门阵列(FPGA)(361)。
17.根据权利要求13至16中任一项所述的装置,其中,所述多核处理器各包括环形总线(312、314、352、354)。
18.根据权利要求13至17中任一项所述的装置,其中,所述任务包括多个子任务,并且其中,生成所述机器代码基于以下内容:
-针对至少一个子任务从所述多个处理元件识别能够处理所述子任务的一个或更多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842);
-识别用于与一个或更多个所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)通信的一个或更多个路径;
-预测用于所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)和/或所识别的路径中的一个或更多个的周期长度;
-从所述所识别的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)选择优选处理元件,和/或从所述所识别的路径选择优选路径;以及
-生成包括指令的机器代码序列,所述指令使得所述装置通过所述优选路径与所述优选处理元件通信和/或在所述优选处理元件上执行所述子任务。
19.根据权利要求13至18中任一项所述的装置,其中,所述控制元件(120、220、320、420、520a、520b、620、720a、720b)中的至少一个适于基于以下内容来预测所述周期长度:
-用于向所述处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)传递指令和输入数据的预测正向传递时间;
-用于从所述处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)传递输出数据的预测返回传递时间;和/或
-用于在处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)中处理所述子任务的预测处理时间。
20.根据权利要求13至19中任一项所述的装置,其中,所述控制元件(120、220、320、420、520a、520b、620、720a、720b)中的至少一个适于进行以下步骤:
-开始在所选择的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上执行所述子任务;
-更新所述子任务的所预测的周期长度,以获得所述子任务的预测剩余周期长度;
-如果确定所述预测剩余周期长度高于用于在不同处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)中处理所述子任务的预测周期长度,则取消在所述所选择的处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)上处理所述子任务;以及
-将所述子任务重新分配到所述不同处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)。
21.根据权利要求13至20中任一项所述的装置,其中,该装置还包括一个或更多个忙表,所述一个或更多个忙表包括关于所述多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)的能力和/或当前可用性和/或使用的信息,其中,所述控制元件(120、220、320、420、520a、520b、620、720a、720b)中的至少一个适于定期更新所述一个或更多个忙表中的所述信息。
22.根据权利要求13至21中任一项所述的装置,所述装置还包括预测模块,所述预测模块被配置为基于先前处理的子任务预测将来的子任务。
23.根据权利要求22所述的装置,其中,所述装置适于:如果一个或更多个新的子任务在开始执行一个或更多个预测的将来子任务之后到达,则为了支持执行当前子任务而取消一个或更多个预测的将来子任务。
24.根据权利要求13至23中任一项所述的装置,其中,所述一个或更多个总线(212、214、312、314、412、512、514、612、614、712a、712b、712c、812、814)、所述一个或更多个控制元件(120、220、320、420、520a、520b、620、720a、720b)以及所述多个处理元件(122-142、222、322-334、422-434、522-550、620-640、720a-742、822-842)中的至少一些位于同一芯片壳体内部。
25.一种服务器系统,所述服务器系统包括根据权利要求13和24中任意一项所述的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15163717.0 | 2015-04-15 | ||
EP15163717.0A EP3082038A1 (en) | 2015-04-15 | 2015-04-15 | Method, device and system for creating a massively parallelized executable object |
PCT/EP2016/057344 WO2016165969A1 (en) | 2015-04-15 | 2016-04-04 | Method, device and system for creating a massively parallelised executable object |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107430525A true CN107430525A (zh) | 2017-12-01 |
Family
ID=53039217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680016138.8A Pending CN107430525A (zh) | 2015-04-15 | 2016-04-04 | 用于创建大规模并行化可执行对象的方法、装置以及系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20180095738A1 (zh) |
EP (1) | EP3082038A1 (zh) |
KR (1) | KR20170137061A (zh) |
CN (1) | CN107430525A (zh) |
CA (1) | CA2982975A1 (zh) |
IL (1) | IL253506A0 (zh) |
TW (1) | TW201706838A (zh) |
WO (1) | WO2016165969A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9537788B2 (en) | 2014-12-05 | 2017-01-03 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10725826B1 (en) * | 2017-06-21 | 2020-07-28 | Amazon Technologies, Inc. | Serializing duration-limited task executions in an on demand code execution system |
US10541939B2 (en) * | 2017-08-15 | 2020-01-21 | Google Llc | Systems and methods for provision of a guaranteed batch |
DE102017215969A1 (de) * | 2017-09-11 | 2019-03-14 | Siemens Mobility GmbH | Schienenfahrzeug mit Mehrkernrechenleistung |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
TWI672649B (zh) * | 2018-09-27 | 2019-09-21 | 宏碁股份有限公司 | 執行例行工作的方法與電子裝置 |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4748585A (en) * | 1985-12-26 | 1988-05-31 | Chiarulli Donald M | Processor utilizing reconfigurable process segments to accomodate data word length |
WO2004001584A2 (en) * | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3938387B2 (ja) * | 2005-08-10 | 2007-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、制御方法、およびコンパイラ・プログラム |
US7757040B2 (en) * | 2007-01-30 | 2010-07-13 | International Business Machines Corporation | Memory command and address conversion between an XDR interface and a double data rate interface |
WO2008142631A1 (en) * | 2007-05-22 | 2008-11-27 | Philips Intellectual Property & Standards Gmbh | Compiler and compiling method for a networked control system comprising a plurality of devices |
JP4629768B2 (ja) * | 2008-12-03 | 2011-02-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並列化処理方法、システム、及びプログラム |
KR101738641B1 (ko) * | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
US8707314B2 (en) * | 2011-12-16 | 2014-04-22 | Advanced Micro Devices, Inc. | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations |
US20140189330A1 (en) * | 2012-12-27 | 2014-07-03 | Ayal Zaks | Optional branches |
US20140208297A1 (en) * | 2013-01-20 | 2014-07-24 | International Business Machines Corporation | Validation of revised computer programs |
US9348560B2 (en) * | 2013-06-04 | 2016-05-24 | Qualcomm Incorporated | Efficient execution of graph-based programs |
-
2015
- 2015-04-15 EP EP15163717.0A patent/EP3082038A1/en not_active Withdrawn
-
2016
- 2016-04-04 CN CN201680016138.8A patent/CN107430525A/zh active Pending
- 2016-04-04 KR KR1020177025698A patent/KR20170137061A/ko unknown
- 2016-04-04 CA CA2982975A patent/CA2982975A1/en not_active Abandoned
- 2016-04-04 WO PCT/EP2016/057344 patent/WO2016165969A1/en active Application Filing
- 2016-04-14 TW TW105111650A patent/TW201706838A/zh unknown
-
2017
- 2017-07-16 IL IL253506A patent/IL253506A0/en unknown
- 2017-10-13 US US15/783,136 patent/US20180095738A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CA2982975A1 (en) | 2016-10-20 |
KR20170137061A (ko) | 2017-12-12 |
EP3082038A1 (en) | 2016-10-19 |
IL253506A0 (en) | 2017-09-28 |
US20180095738A1 (en) | 2018-04-05 |
WO2016165969A1 (en) | 2016-10-20 |
TW201706838A (zh) | 2017-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430525A (zh) | 用于创建大规模并行化可执行对象的方法、装置以及系统 | |
KR102228501B1 (ko) | 컴파일러 방법 | |
US20220197714A1 (en) | Training a neural network using a non-homogenous set of reconfigurable processors | |
CN109697185B (zh) | 多瓦片处理阵列中的同步 | |
EP0477364B1 (en) | Distributed computer system | |
US6507809B1 (en) | Method and system for simulating performance of a computer system | |
CN103455371A (zh) | 用于优化的管芯内小节点间消息通信的方法和系统 | |
KR20150121108A (ko) | 실행가능 코드를 실행하기 위한 방법, 처리 모듈 및 시스템 | |
Kim et al. | TCCL: Discovering Better Communication Paths for PCIe GPU Clusters | |
US20230134744A1 (en) | Execution State Management | |
JP7342247B2 (ja) | オンチップ動作の明示的なスケジューリング | |
KR20130011805A (ko) | 시뮬레이션 장치 및 그의 시뮬레이션 방법 | |
EP2998864B1 (en) | Method, device and system for deciding on a distribution path of a task | |
Uscumlic et al. | Design space exploration with deterministic latency guarantees for crossbar mpsoc architectures | |
US20220019487A1 (en) | Communication Between Host and Accelerator Over Network | |
US11940940B2 (en) | External exchange connectivity | |
US11726937B2 (en) | Control of data sending from a multi-processor device | |
CN112416053A (zh) | 多核架构的同步信号产生电路、芯片和同步方法及装置 | |
US20220253583A1 (en) | Message passing multi processor network for simulation vector processing | |
EP2703918A1 (en) | Configuration of control applications on multi-host controllers | |
CN118484413A (zh) | Dma数据传输方法、装置、系统级芯片、设备、介质和产品 | |
JP2013174934A (ja) | 計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171201 |
|
WD01 | Invention patent application deemed withdrawn after publication |