CN102541628A - 多核***的编译装置和方法 - Google Patents
多核***的编译装置和方法 Download PDFInfo
- Publication number
- CN102541628A CN102541628A CN2011101193012A CN201110119301A CN102541628A CN 102541628 A CN102541628 A CN 102541628A CN 2011101193012 A CN2011101193012 A CN 2011101193012A CN 201110119301 A CN201110119301 A CN 201110119301A CN 102541628 A CN102541628 A CN 102541628A
- Authority
- CN
- China
- Prior art keywords
- task
- nuclear
- groups
- task groups
- execution time
- 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
Links
Images
Classifications
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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
-
- 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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
提供一种多核***的编译装置和方法。一种能够将多核***中的空闲资源最小化以及将多核***中的可用资源最大化的设备和方法。所述设备包括:静态调度单元,被配置生成一个或多个任务组,每个任务组包括至少一个任务,并且通过根据所述任务组的执行时间估计,分割或组合包括在所述任务组中的任务来将所述任务组分配给虚拟核;和动态调度单元,被配置将虚拟核映射到物理核,动态调度单元将已分配给第一物理核的任务组的部分再分配给第二物理核,所述第一物理核已被分配执行时间估计最高的任务组,而所述第二物理核与第一物理核连接,并且已被分配执行时间估计最低的任务组。
Description
本申请要求于2010年12月17日在韩国知识产权局提交的第10-2010-0130254号韩国专利申请的优先权,该公开完全包含于此以资参考。
技术领域
以下描述涉及多核***的编译和调度(scheduling)技术。
背景技术
多核***是配有两个或多个处理核,并因此能够同时处理多个任务的处理器。多核处理器在性能和功耗方面较单核处理器更为有效,并且越来越引起公众的关注。
多核***被分为配备有多个同类核的对称多处理(SMP)***和配备有多种可以用作数字信号处理器(DSP)、图形处理单元(GPU)或通用处理器(GPP)的异类核的非对称多处理(AMP)***。
多核***中的每个处理核独立地执行任务。因此,多核***中的一些处理核可变得空闲。例如,可能有一些核停止执行任务并且待命,直到其他的处理核完成它们的任务。将空闲而不执行任务的核称为空闲核。空闲核可造成***资源的浪费。
发明内容
根据本发明的一个总的方面,提供一种编译设备,包括:静态调度单元,被配置生成一个或多个任务组,并且通过根据所述任务组的执行时间估计,分割或组合包括在所述任务组中的任务来将所述任务组分配给虚拟核,其中,每个任务组包括至少一个任务;和动态调度单元,被配置将虚拟核映射到物理核,动态调度单元将已分配给第一物理核的执行时间估计最高的任务组的部分再分配给第二物理核,所述第二物理核与第一物理核连接,并且已被分配执行时间估计最低的任务组。
所述编译设备还可包括:任务状态匹配单元,被配置从数据流图表检测在前任务和具有并行关系的一组后续任务。其中,如果所述后续任务之一被分配给不同于在前任务被分配的物理核的物理核,则任务状态匹配单元匹配所述后续任务的流水线级,从而能够在同一流水线级执行所述后续任务。
根据本发明的另一方面,提供一种编译方法,包括:生成一个或多个任务组,并且通过根据任务组的执行时间估计,分割或组合包括在所述任务组中的任务来将所述任务组分配给虚拟核,其中,每个任务组包括至少一个任务;和将虚拟核映射到物理核,并且将分配给第一物理核的执行时间估计最高的任务组的部分再分配给的第二物理核,所述第二物理核与第一物理核连接,并且已被分配执行时间估计最低的任务组。
所述编译方法还可包括:从数据流图表检测在前任务和具有并行关系的一组后续任务;和如果所述后续任务之一被分配给不同于在前任务被分配的物理核的物理核,则匹配所述后续任务的流水线级,从而能够在同一流水线级执行所述后续任务。
从以下的详细描述、附图和权利要求,其他特征和方面会是明显的。
附图说明
图1是示出多核***的示例的示图;
图2是示出编译器的示例的示图;
图3是示出静态调度单元的示例的示图;
图4A至图4H是示出静态调度单元的操作的示例的示图;
图5是示出动态调度单元的示例的示图;
图6A至图6C是示出动态调度单元的操作的示例的示图;
图7是示出任务状态匹配单元的示例的示图;
图8A至图8E是示出任务状态匹配单元的操作的示例的示图;并且
图9是示出一种编译方法的示例的流程图。
在全部附图和详细描述中,除非另外提及,应该将相同的附图标号理解为指示相同的元件、特征和结构。为简洁、图解和方便起见,可以夸张描述这些元素的相对大小和叙述。
具体实施方式
提供以下描述来帮助读者全面理解在此描述的方法、装置和/或***。因而,将向本领域的普通技术人员提示对在此描述的方法、装置和/或***的各种改变、修改及等同物。此外,为了加强清楚和简明,可省略公知的功能和构造的描述。
图1示出多核***的示例。
参照图1,多核***100包括多个核。所述多个核可同时执行不同的任务。因此,多核***100可使用能够相互独立操作的所述多个核并行地执行多个任务。例如,当任务A和任务B之间具有并行关系或者当任务A和任务B为并行时,可以例如分别由核1和核2同时并行地执行任务A和任务B。
可以将多核***100的每个核置于空闲状态。空闲状态可以指示当多核***100的核空闲而不执行任务时的状态。空闲核可造成资源的浪费。例如,假设任务C应在执行任务A和任务B之后被执行。在这种情况下,如果核1完成了任务A的执行,但是核2仍需完成任务B的执行,则核1可变为空闲,并且因此直到核2完成任务B的执行,才能够开始执行任务C。简短地讲,多核***100的多个核根据他们的境况可变为空闲。
图2示出编译器的示例。
参照图2,可以将编译器应用到具有多个核的多核***。例如,编译器200可编译程序,从而可以将可能由多核***100中的空闲核导致的资源浪费最小化。编译器200可包括静态调度单元201、动态调度单元202和任务状态匹配单元203。
静态调度单元201根据多个任务中的每个需要的资源的量在多个虚拟核之间均匀地分配任务,从而能够防止由任务的不均匀分布造成的资源浪费。例如,静态调度单元201生成一个或多个任务组,重新生成任务组,并且将任务组分配给虚拟核,其中,每个任务组包括至少一个任务,通过分割或组合包括在任务组中的任务,直到所述任务组在执行时间上几乎相同来重新生成任务组。
动态调度单元202将所述任务分配给多个物理核,从而所述物理核能够在执行任务时将可用资源的使用最大化。例如,动态调度单元202可通过将虚拟核映射到物理核来将任务分配给物理核。如果执行时间估计最高的任务组被分配给第一物理核,并且执行时间估计最低的任务组被分配给与第一物理核连接的第二物理核,则动态调度单元202可将执行时间估计最高的任务组的部分分配给第二物理核。
任务状态匹配单元203匹配任务的流水线级(pipeline stage),从而能够防止多核***100的核由于在分配给不同的物理核的任务的流水线级之间执行时间的差异变为空闲。例如,任务状态匹配单元203从数据流图表检测在前任务和具有并行关系的后续任务。然后,如果所述后续任务的至少一个被分配给不同于在前任务被分配的物理核的物理核,则可以匹配所述后续任务的流水线级,从而能够在同一流水线级执行所述后续任务。
图3示出静态调度单元的示例。参照图3,静态调度单元201可包括任务分类器301、大任务分配器302和小任务分配器303。图4A至图4H示出静态调度单元201的操作的示例。
稍后将参照图3和图4A至图4H详细描述静态调度单元201的结构和操作。
任务分类器301接收多个任务。例如,参照图4A,任务分类器301可接收任务A至任务J。
任务分类器301计算任务的执行时间估计。术语“执行时间估计”指示一个核或一组核用于执行任务或包括一个或多个任务的任务组所需的时间的估计。可以基于从执行测试文件获得的概述(profile)数据计算任务的执行时间估计。例如,参照图4A,任务A至任务J旁的数值指示任务A至任务J的执行时间估计。
任务分类器301根据任务的执行时间估计将任务分类为大任务和小任务。任务分类器301可以将执行时间估计高于阈值的任务分类为大任务,而将其他任务分类为小任务。例如,参照图4A,如果阈值是20,则任务A至任务F可被分类为大任务,而任务H至任务J可被分类为小任务。
一旦所述任务被分类为大任务和小任务,大任务分配器302就将大任务分配给虚拟核。大任务分配器302可以将其每个具有至少一个大任务的任务组分配给虚拟核。在这种情况下,大任务分配器302可以继续分割或组合包括在任务组中的任务,直到所述任务组在执行时间上变为几乎相同,稍后将参照图4B至图4G进一步详细描述所述分割或组合任务。
参照图4B,大任务分配器302将任务分组到一个或多个任务组,并且将所述任务组分配给虚拟核。可以将单个任务解释为仅包括一个任务的任务组。因此,参照图4B,也可以将任务A称为任务组A。
参照图4C,大任务分配器302计算任务组A至任务组F的执行时间估计。大任务分配器302可以根据分配给任务组A至任务组F中的每个的虚拟核的个数来计算任务组A至任务组F的执行时间估计。由于第零至第五虚拟核V_CORE0至V_CORE5分别被分配给任务组A至任务组F中的每个,所以大任务分配器302可计算单个虚拟核用于执行任务组A至任务组F中的每个所需的时间。
一旦任务组A至任务组F的执行时间估计被获得,大任务分配器302从任务组A至任务组F搜索执行时间估计最高的MAX任务组和执行时间估计最低的MIN任务组。例如,可以将任务组E识别为MAX任务组,并且将任务组A或任务组F识别为MIN任务组。
一旦找到MAX任务组和MIN任务组,大任务分配器302确定MAX任务组和MIN任务组的执行时间估计之间的差是否小于阈值(例如120)。由于MAX任务组的执行时间估计是466,而MIN任务组的执行时间估计是20,MAX任务组和MIN任务组的执行时间估计之间的差是446,不小于120的阈值。在这种情况下,大任务分配器302增加分配给MAX任务组的虚拟核的个数。例如,大任务分配器302可以如图4C所示,将MAX任务组(即任务组E)在第四核V_CORE4和第六核V_CORE6之间分割。
参照图4D,大任务分配器302根据例如分配给任务组A至任务组F的每个的虚拟核的个数,再次计算任务组A至任务组F的执行时间估计。由于如图4C和图4D所示,任务组E被分配两个虚拟核,任务组E的执行时间估计从466减少到350。
大任务分配器302从任务组A至任务组F搜索新的MAX任务组和新的MIN任务组。例如,可以将任务组E识别为新的MAX任务组,并且将任务组A或任务组F识别为新的MIN任务组。
大任务分配器302计算新的MAX任务组和MIN任务组的执行时间估计之间的差,并且确定计算的结果是否小于120的阈值。由于新的MAX任务组和MIN任务组的执行时间估计之间的差是320,仍然不小于120的阈值,所以大任务分配器302将新的MAX任务组(即任务组E)在第四核V_CORE4、第五核V_CORE5、第六核V_CORE6和第七核V_CORE7之间分割。分配给任务组的虚拟核的个数根据多核***的架构的规格需要从一个增加到两个、从两个提高到四个、从四个增加到六个和六个提高到八个。因此,大任务分配器302可以向任务组E分配四个虚拟核。
如果,作为增加分配给MAX任务组的虚拟核的个数的结果,已经被另一任务组占用的虚拟核被新分配给MAX任务组,则大任务分配器302将相应的任务组和MIN任务组组合到单个任务组,然后将所述单个任务组分配给最初被分配给MIN任务组的虚拟核。例如,参照图4D,作为MIN任务组的任务组A和任务组F可以被组合到单个任务组(即任务组AF),并且如图4E所示,任务组AF可以被分配给第零虚拟核V_CORE0。
参照图4E,大任务分配器302计算任务组AF、B、C、D和E的执行时间估计。由于任务组E在四个虚拟核之间被分配,所以任务组E的执行时间估计由350减少到200。
大任务分配器302搜索另一MAX任务组和MIN任务组。例如,可以将任务组D识别为另一新的MAX任务组,并且将任务组AF识别为另一新的MIN任务组。大任务分配器302确定任务组D和任务组AF的执行时间估计之间的差是否小于120的阈值。由于任务组D和任务组AF的执行时间估计之间的差是266,仍不小于120的阈值,所以大任务分配器302执行任务组D的再分配。例如,大任务分配器302可以向任务组D额外分配虚拟核。由于第零核V_CORE0至第七核V_CORE7都已经被各任务组占用,所以大任务分配器302可以将任务组AF和执行时间估计第二低的另一任务组(即任务组B)组合到单个任务组中,因此生成任务组BAF。然后,如图4F所示,大任务分配器302可以在第零核V_CORE0和第三核V_CORE3之间分配任务组D。
参照图4F,由于作为MAX任务组的任务组C和作为MIN任务组的任务组BAF的执行时间估计之间的差是100,小于120的阈值,因此完成大任务分配器302的全部操作(即大任务分配操作)。
图4G示出表格,所述表格示出作为大任务分配器302的操作的结果,任务A至任务E如何在第零虚拟核V_CORE0至第七虚拟核V_CORE7之间被分配的示例。参照图4F和图4G,包括任务A、B和F的任务组BAF被分配给第一虚拟核V_CORE1,包括任务C的任务组C被分配给第二虚拟核V_CORE2,包括任务D的任务组D在第零虚拟核V_CORE0和第三虚拟核V_CORE3之间被分配,并且包括任务E的任务组E在第四虚拟核V_CORE4、第五虚拟核V_CORE5、第六虚拟核V_CORE6和第七虚拟核V_CORE7之间被分配。
一旦完成大任务的分配,小任务分配器303可以在第零虚拟核V_C0RE0至第七虚拟核V_CORE7之间分配小任务,即任务G、H、I和J。小任务分配器303可检测小任务的主任务,并且可以将小任务分配给已被分配了检测到的主任务的虚拟核。
例如,参照图4H,如果任务D是任务G、H、I和J的主任务,则小任务分配器303可从任务D检测循环码D4和非循环码D0至D3、D5和D6。循环码是任务的部分,诸如可以同时被多个核处理的循环指令(loop)。例如,如果任务D在第零虚拟核V_CORE0和第三虚拟核V_CORE3之间被分配,则可以由第零虚拟核V_CORE0和第三虚拟核V_CORE3处理循环码D4,而可以仅由第零虚拟核V_CORE0处理非循环码D0至D3、D5和D6。也就是说,当非循环码D0至D3、D5和D6被执行时,可以将第三虚拟核V_CORE3置于空闲状态。小任务分配器303将小任务(即任务G、H、I和J)分配给第三虚拟核V_CORE3,因此利用可用的资源。
图5示出动态调度单元的示例。参照图5,动态调度单元202包括核映射器501和附加分配器502。
图6A至图6C示出动态调度单元202的操作的示例。稍后将参照图5和图6A至图6C详细描述动态调度单元202的结构和操作。
核映射器501通过将虚拟核映射到物理核将任务组分配给物理核。核映射器501可以将第一虚拟核映射到被分配了MAX任务组的第一物理核,并且将与第一物理核连接并且被分配了MIN任务组的第二虚拟核映射到第二物理核。
例如,参照图4F,核映射器501可将被分配了MAX任务组(即任务组C)的第二虚拟核V_CORE2映射到特定物理核,并且可将被分配了MIN任务组(即任务组BAF)的第一虚拟核V_CORE1映射到与所述特定物理核物理连接的物理核。
也就是说,参照图6A,核映射器501可将任务组BAF和任务组C分别分配给第零物理核P_CORE0和第一物理核P_CORE1。由于第零物理核P_CORE0和第一物理核P_CORE1被物理连接,任务组BAF和任务组C在运行期间可共享第零物理核P_CORE0和第一物理核P_CORE1。
当核映射器501完成任务组到物理核的映射时,附加分配器502可将MAX任务组的部分再分配给被分配了MIN任务组的物理核。例如,附加分配器502可以从MAX任务组检测一个或多个受限于资源的部分(如果有),并且可以将检测到的受限于资源的部分再分配给被分配了MIN任务组的物理核。
参照图6C,当如图6B所示,分别作为MIN任务组和MAX任务组的任务组BAF和任务组C被核映射器501分别分配给第零物理核P_CORE0和第一物理核P_CORE1时,附加分配器502从任务组C搜索一个或多个受限于资源的部分。受限于资源的部分是其执行时间根据其被分配的资源的数量被确定的任务的部分,例如,根据其被分配的资源的数量执行效率提高的循环指令。附加分配器502可从任务组C检测循环指令C1和C3,并且可将循环指令C1和C3分配给第零物理核P_CORE0,从而在分配给第零物理核P_CORE0的任务之间循环指令C1和C3都能被执行。
当完成将MAX任务组的部分分配给被分配了MIN任务组的物理核时,附加分配器502计算分配给每个物理核的任务组的执行时间估计。例如,参照图6A和图6C,作为将任务组C的部分分配给第零物理核P_CORE0的结果,分配给第零物理核P_CORE0的任务组的执行时间估计从146提高到197。另一方面,由于将任务组C的部分分配给第零物理核P_CORE0,分配给第一物理核P_CORE1的任务组的执行时间估计从246降低到200。因此,总的时限(deadline)从246降低到200。
附加分配器502可确定时限的变动是否落在预定范围内。如果相邻物理核之间的MAX任务组的分配仅产生少量时限的降低,则附加分配器502可以不执行MAX任务组的再分配。
图7示出任务状态匹配单元的示例。参照图7,任务状态匹配单元303可包括图表分析器701和级调整器702。图8A至图8E示出任务状态匹配单元303的操作的示例。稍后将参照图7和图8A至图8E详细描述任务状态匹配单元303的结构和操作。
图表分析器701执行数据流图表的状态校正。例如,图表分析器701可分析数据流图表。然后,图表分析器701可确定任务组的次序并且基于分析的结果检测所述任务组之间的一个或多个并行关系(如果有)。例如,参照图8A,图表分析器701可检测具有并行关系的任务B和任务C以及它们在前任务(即任务A)。
级调整器702确定具有并行关系的一组任务中的至少一个是否被分配给不同于分配给其在前任务的物理核的物理核。例如,参照图8B,与任务B具有并行关系的任务C被分配给不同于分配给其在前任务(即任务A)的物理核的物理核。
如果如图8B所示,不管输入数据的类型,任务的流水线级的执行时间一致,则如图8C所示,核1和核2都不变为空闲。然而,现实中,根据输入数据的类型,任务的流水线级的执行时间不同。例如,参照图8D,根据输入数据的类型,任务B可具有较长的第二阶段。在这种情况下,未分配给任务B的物理核(即核2)可变为空闲。
参照图8E,如果具有并行关系的一组任务中的至少一个被分配给不同于分配给其在前任务的物理核的物理核,则级调整器702可匹配任务的流水线级,从而可以在相同的流水线级执行所述任务。例如,考虑到具有并行关系的任务的执行时间根据输入数据的类型趋于具有相似的改变模式,级调整器702可延迟任务B的流水线级(所述任务B被分配给与分配给其在前任务(即任务A)的物理核相同的物理核),从而任务B的流水线级能够与任务C的流水线级一致。
图9示出一种编译方法的示例。参照图2和图9,编译器200以任务组为单位执行静态调度。例如,参照图3和图4A至图4H,静态调度单元201生成一个或多个任务组,并且通过根据任务组的执行时间估计分割或组合包括在任务组中的任务,将任务组分配给虚拟核,其中,每个任务组包括至少一个任务。
编译器200将虚拟核映射到物理核,并且执行动态调度(902)。例如,参照图5和图6A至图6C,动态调度单元202通过将虚拟核映射到物理核将任务组分配给物理核。如果执行时间估计最高的MAX任务组被分配给第一物理核,并且执行时间估计最低的MIN任务组被分配给与第一物理核物理连接的第二物理核,则动态调度单元202可将MAX任务组的部分再分配给第二物理核。
编译器200可匹配任务组中的任务的流水线级(903)。例如,参照图7和图8A至图8E,任务状态匹配单元303从数据流图表检测具有并行关系的一组任务以及它们的在前任务。然后,如果具有并行关系的任务之一被分配给不同于分配给其在前任务的物理核的物理核,则任务状态匹配单元303匹配具有并行关系的任务的流水线级,从而能够在同一流水线级执行所述任务。
如上所述,通过在多核***中将空闲核最少化,能够防止多核***中的资源浪费,并且将多核***中的可用资源的使用最大化。
可以上述的方法和/或操作记录、存储或固化在一个或多个包括将被计算机执行的程序指令的计算机可读存储介质中,以使得处理器运行或执行这些程序指令。所述介质还可单独包括数据文件、数据结构等,或者数据文件、数据结构等与程序指令的组合。计算机可读存储介质的示例包括磁介质(如硬盘、软盘和磁带)、光介质(如CD-ROM盘和DVD)、磁光介质(如光盘)和被特殊配置存储并执行程序指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括如编译器生成的机器码和包含可由计算机使用解释程序执行的高级代码的文件。可以配置所述的硬件装置为一个或多个软件模块,以执行上述的操作和方法,或者配置一个或多个软件模块为硬件装置。此外,可以在通过网络连接的计算机***当中分布计算机可读存储介质,并且以分布的方式存储和执行计算机可读代码或程序指令。
已描述了一些示例。但是,应该理解,可以进行各种修改。例如,如果以不同的次序执行所述的技术,和/或如果以不同的方式组合所述***、架构、装置或电路中的组件,和/或用其他的组件或等同物替代或补充所述组件,能够取得适宜的结果。因而,其他的实施在所附权利要求的范围内。
Claims (15)
1.一种编译设备,包括:
静态调度单元,被配置生成一个或多个任务组,并且通过根据所述任务组的执行时间估计,分割或组合包括在所述任务组中的任务来将所述任务组分配给虚拟核,其中,每个任务组包括至少一个任务;和
动态调度单元,被配置将虚拟核映射到物理核,动态调度单元将已分配给第一物理核的任务组的执行时间估计最高的部分再分配给第二物理核,所述第二物理核与第一物理核连接,并且已被分配执行时间估计最低的任务组。
2.如权利要求1所述的编译设备,其中,静态调度单元基于虚拟核的个数计算所述任务组的执行时间估计,以执行所述任务组的每个,并且通过根据计算的结果分割或组合包括在所述任务组中的任务来重新生成所述任务组。
3.如权利要求2所述的编译设备,其中,静态调度单元检测执行时间估计最高的任务组和执行时间估计最低的任务组,并且以以下方式继续重新生成所述任务组:分割或组合包括在所述任务组中的任务,直到最高执行时间估计和最低执行时间估计之间的差变为小于预定的阈值。
4.如权利要求3所述的编译设备,其中,如果所述差不小于预定的阈值,则静态调度单元增加分配给执行时间估计最高的任务组的虚拟核的个数。
5.如权利要求4所述的编译设备,其中,如果所述差不小于预定的阈值,则静态调度单元将执行时间估计最低的任务组与另一任务组合并。
6.如权利要求1所述的编译设备,其中,静态调度单元包括:
任务分类器,被配置根据任务的执行时间估计将任务分类为大任务和小任务;
大任务分配器,被配置生成一个或多个任务组,基于将被分配给所述任务组中的每个的虚拟核的个数计算所述任务组的执行时间估计,通过根据所述任务组的执行时间估计分割或组合包括在所述任务组中的大任务,来重新生成所述任务组,并且将所述任务组分配给所述虚拟核,其中,每个任务组包括至少一个任务;和
小任务分配器,被配置从大任务当中检测所述小任务的主任务,并且将所述小任务分配给分配了检测到的主任务的虚拟核,从而当检测到的主任务的非循环代码被执行时,能够执行所述小任务。
7.如权利要求1所述的编译设备,其中,动态调度单元将第一虚拟核映射到第一物理核,并且将第二虚拟核映射到与第一物理核连接的第二物理核,所述第一虚拟核被分配执行时间估计最高的任务组,而所述第二虚拟核被分配执行时间估计最低的任务组。
8.如权利要求1所述的编译设备,其中,动态调度单元从执行时间估计最高的任务组检测受限于资源的部分,并且根据每个物理核的执行时间估计,将检测到的受限于资源的部分再分配给第二物理核。
9.如权利要求1所述的编译设备,还包括:
任务状态匹配单元,被配置从数据流图表检测在前任务和具有并行关系的一组后续任务,
其中,如果所述后续任务之一被分配给不同于分配给在前任务的物理核的物理核,则任务状态匹配单元调整所述后续任务的流水线级,从而能够在同一流水线级执行所述后续任务。
10.如权利要求9所述的编译设备,其中,任务状态匹配单元延迟被分配给与分配给在前任务的的物理核相同的物理核的流水线级,从而能够在同一流水线级执行后续任务。
11.一种编译方法,包括:
生成一个或多个任务组,并且通过根据任务组的执行时间估计,分割或组合包括在所述任务组中的任务来将所述任务组分配给虚拟核,其中,每个任务组包括至少一个任务;和
将虚拟核映射到物理核,并且将分配给第一物理核的执行时间估计最高的任务组的部分再分配给的第二物理核,其中,所述第二物理核与第一物理核连接,并且已被分配执行时间估计最低的任务组。
12.如权利要求11所述的编译方法,还包括:
从数据流图表检测在前任务和具有并行关系的一组后续任务;和
如果所述后续任务之一被分配给不同于分配给在前任务的物理核的物理核,则匹配所述后续任务的流水线级,从而能够在同一流水线级执行所述后续任务。
13.一种处理器,包括:
多个物理处理核,被配置处理任务;
静态调度单元,被配置生成其每个包括至少一个任务的多个任务组,并且通过基于所述多个任务组的执行时间估计,分割或组合包括在所述多个任务组中的任务来将所述多个任务组分配给虚拟核;和
动态调度单元,被配置将所述虚拟核映射到多个物理核。
14.如权利要求13所述的处理器,其中,动态调度单元识别被分配给第一物理核的执行时间估计最高的任务组,并且将执行时间估计最高的所述任务组的部分映射到被分配给执行时间估计最低的任务的第二物理核。
15.如权利要求13所述的处理器,还包括:任务状态匹配单元,被配置检测在前任务和彼此具有并行关系的一组后续任务,并且如果所述后续任务之一被分配给不同于分配给在前任务的物理核的物理核,则任务状态匹配单元匹配所述后续任务的的每个的流水线级,从而能够在同一流水线级执行所述后续任务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100130254A KR101738641B1 (ko) | 2010-12-17 | 2010-12-17 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
KR10-2010-0130254 | 2010-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541628A true CN102541628A (zh) | 2012-07-04 |
CN102541628B CN102541628B (zh) | 2016-12-14 |
Family
ID=
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252391A (zh) * | 2013-06-28 | 2014-12-31 | 国际商业机器公司 | 用于在分布式计算***中管理多个作业的方法和装置 |
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN108446125A (zh) * | 2018-03-23 | 2018-08-24 | 北京潘达互娱科技有限公司 | 应用程序安装包生成方法、装置、设备及*** |
CN109857562A (zh) * | 2019-02-13 | 2019-06-07 | 北京理工大学 | 一种众核处理器上访存距离优化的方法 |
CN110958183A (zh) * | 2019-10-24 | 2020-04-03 | 中国科学院计算技术研究所 | 一种异构***的带宽利用率提升方法及*** |
CN112395234A (zh) * | 2019-08-16 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 一种请求处理方法及装置 |
CN113360259A (zh) * | 2021-05-28 | 2021-09-07 | 清华大学 | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 |
CN115470915A (zh) * | 2022-03-16 | 2022-12-13 | 合肥本源量子计算科技有限责任公司 | 量子计算机的服务器***及其实现方法 |
WO2024125402A1 (zh) * | 2022-12-16 | 2024-06-20 | 华为技术有限公司 | 芯片资源调度方法及相关装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030212731A1 (en) * | 2000-02-17 | 2003-11-13 | Brenner Larry Bert | Apparatus and method for periodic load balancing in a multiple run queue system |
CN101482831A (zh) * | 2008-01-08 | 2009-07-15 | 国际商业机器公司 | 多线程计算机***中对共存线程相伴调度的方法和设备 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030212731A1 (en) * | 2000-02-17 | 2003-11-13 | Brenner Larry Bert | Apparatus and method for periodic load balancing in a multiple run queue system |
CN101482831A (zh) * | 2008-01-08 | 2009-07-15 | 国际商业机器公司 | 多线程计算机***中对共存线程相伴调度的方法和设备 |
Non-Patent Citations (1)
Title |
---|
SALVATORE ORLANDO ETC.: "《A template for non-uniform parallel loops based on dynamic scheduling and prefetching techniques》", 《PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》, 25 May 1996 (1996-05-25) * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252391A (zh) * | 2013-06-28 | 2014-12-31 | 国际商业机器公司 | 用于在分布式计算***中管理多个作业的方法和装置 |
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
CN107045456B (zh) * | 2016-02-05 | 2020-03-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN107045456A (zh) * | 2016-02-05 | 2017-08-15 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN108446125A (zh) * | 2018-03-23 | 2018-08-24 | 北京潘达互娱科技有限公司 | 应用程序安装包生成方法、装置、设备及*** |
CN109857562A (zh) * | 2019-02-13 | 2019-06-07 | 北京理工大学 | 一种众核处理器上访存距离优化的方法 |
CN112395234A (zh) * | 2019-08-16 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 一种请求处理方法及装置 |
CN110958183A (zh) * | 2019-10-24 | 2020-04-03 | 中国科学院计算技术研究所 | 一种异构***的带宽利用率提升方法及*** |
CN110958183B (zh) * | 2019-10-24 | 2022-02-25 | 中国科学院计算技术研究所 | 一种异构***的带宽利用率提升方法及*** |
CN113360259A (zh) * | 2021-05-28 | 2021-09-07 | 清华大学 | 一种应用于面向云端深度学习推理的分布式fpga多任务调度算法 |
CN115470915A (zh) * | 2022-03-16 | 2022-12-13 | 合肥本源量子计算科技有限责任公司 | 量子计算机的服务器***及其实现方法 |
CN115470915B (zh) * | 2022-03-16 | 2024-04-05 | 本源量子计算科技(合肥)股份有限公司 | 量子计算机的服务器***及其实现方法 |
WO2024125402A1 (zh) * | 2022-12-16 | 2024-06-20 | 华为技术有限公司 | 芯片资源调度方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
US20120159507A1 (en) | 2012-06-21 |
EP2466460A1 (en) | 2012-06-20 |
KR101738641B1 (ko) | 2017-05-23 |
KR20120068572A (ko) | 2012-06-27 |
EP2466460B1 (en) | 2018-07-04 |
US8813073B2 (en) | 2014-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2466460B1 (en) | Compiling apparatus and method for a multicore device | |
Wang et al. | Budget-driven scheduling algorithms for batches of MapReduce jobs in heterogeneous clouds | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Liu et al. | Power-efficient time-sensitive mapping in heterogeneous systems | |
CN103119580B (zh) | 异构多处理器计算平台中的应用调度 | |
CN109117264B (zh) | 容器工作负载调度器以及调度容器工作负载的方法 | |
US8990827B2 (en) | Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels | |
CN102521056B (zh) | 任务分配装置和任务分配方法 | |
US9436512B2 (en) | Energy efficient job scheduling in heterogeneous chip multiprocessors based on dynamic program behavior using prim model | |
CN103970609A (zh) | 一种基于改进蚁群算法的云数据中心任务调度方法 | |
US20080244611A1 (en) | Product, method and system for improved computer data processing capacity planning using dependency relationships from a configuration management database | |
CN104778079A (zh) | 用于调度、执行的装置和方法以及分布式*** | |
CN109254836B (zh) | 面向云计算***优先依赖任务的期限约束成本优化调度方法 | |
CN103473120A (zh) | 一种基于加速因子的多核实时***任务划分方法 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
Xie et al. | Massively parallel constraint programming for supercomputers: Challenges and initial results | |
CN106991006A (zh) | 支持依赖和时间平衡的云工作流任务聚类方法 | |
CN103856548A (zh) | 动态资源调度方法和动态资源调度器 | |
US20120192168A1 (en) | Compiler device | |
Sharma et al. | A study of BNP parallel task scheduling algorithms metric's for distributed database system | |
CN108885546B (zh) | 一种基于异构***的程序处理方法和装置 | |
CN108139929B (zh) | 用于调度多个任务的任务调度装置和方法 | |
Porto et al. | Performance evaluation of a parallel tabu search task scheduling algorithm | |
Zhu et al. | Energy-efficient independent task scheduling in cloud computing | |
KR101770234B1 (ko) | 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템 |
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 |