CN103562870B - 异构核心的自动加载平衡 - Google Patents

异构核心的自动加载平衡 Download PDF

Info

Publication number
CN103562870B
CN103562870B CN201280023366.XA CN201280023366A CN103562870B CN 103562870 B CN103562870 B CN 103562870B CN 201280023366 A CN201280023366 A CN 201280023366A CN 103562870 B CN103562870 B CN 103562870B
Authority
CN
China
Prior art keywords
instruction
kernel
processor core
architecture
micro
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.)
Active
Application number
CN201280023366.XA
Other languages
English (en)
Other versions
CN103562870A (zh
Inventor
毛里西奥·布莱特尼特斯
帕特里克·卡名斯基
基思·洛韦里
安东·切诺夫
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN103562870A publication Critical patent/CN103562870A/zh
Application granted granted Critical
Publication of CN103562870B publication Critical patent/CN103562870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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]
    • 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/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种用于在多个异构处理器核心之间有效自动调度工作单元的执行的系统和方法。处理节点包括:第一处理器核心,其具有通用微架构;和第二处理器核心,其具有单指令多数据微架构。计算机程序包括一个或多个计算内核或函数调用。编译器计算给定函数调用的预运行时信息。运行时调度程序通过使所述一个或多个内核中的每个匹配相关数据记录来产生一个或多个工作单元。调度程序至少部分基于已计算的预运行时信息将工作单元分配到第一处理器核心或第二处理器核心。此外,调度程序能够基于对应于与等待工作单元相同的内核的其它工作单元的动态运行时行为而改变所述等待工作单元的原始分配。

Description

异构核心的自动加载平衡
技术领域
本发明涉及计算系统,且更特别地涉及在多个异构处理器核心之间自动调度工作单元的执行。
相关技术描述
任务并行化是用来增加计算机系统的吞吐量。为了达到这个目的,编译器或软件程序员可以从程序代码提取并行化任务以并行执行于系统硬件上。在单核架构下,单核可包括深流水线和被配置来执行多线程的多个执行上下文。为了进一步增加硬件上的并行执行,多核架构可包括多个处理器核心。这种类型的架构可称作异构多核架构且可提供高于单核架构的指令吞吐量。然而,计算密集型任务的特别指令可能消耗不成比例份额的共享资源,这又可能延迟共享资源的重新分派。这些特定任务的实例可包括加密、视频图形渲染和无用单元收集。
为了克服常规通用核心的性能限制,计算机系统可将特定任务卸载到专用硬件。这种硬件可包括单指令多数据(SIMD)并行架构、现场可编程门阵列(FPGA)和/或其它专业类型的处理核心。当架构包括多个不同类型的核心时,其可以称作异构多核架构。
当前,还可以称作“调度程序”的操作系统(OS)调度程序或用户级调度程序可以使用多种方案(诸如循环方案)调度正在具有异构多核架构的计算机系统上运行的工作量。此外,调度程序可以基于核心的可用性调度这些工作量。替代地,程序员可结合运行时系统而调度工作量。在这种情况下,程序员可使用软件平台来执行调度。例如,(开放计算语言)框架支持跨异构计算环境进行编程且包括用于异构计算的低级应用程序编程接口(API)。OpenCL框架(本文中一般称作“OpenCL”)包括可用来定义执行队列的类C语言接口,其中每个队列与OpenCL装置相关。OpenCL装置可以是CPU、GPU或异构多核架构内具有至少一个处理器核心的其它单元。在OpenCL框架中,函数调用可以称作OpenCL计算内核或简称为“计算内核”。软件程序员可以按执行队列调度计算内核。计算内核可以匹配一个或多个数据记录以产生计算的一个或多个工作单元。每个工作单元可具有唯一识别符(ID)。
当调度方案与系统资源之间存在不匹配时,上述调度模型可限制可移植性和性能。程序员可以用效率来交换可移植性,同时尝试提供跨越不同系统配置的应用程序。
发明实施方案概述
预期用于执行在多个异构处理器核心之间有效自动调度工作单元的执行的系统和方法。
在一个实施方案中,处理节点包括:第一处理器核心,其具有第一微架构;和第二处理器核心,其具有不同于第一微架构的第二微架构。在一个实施方案中,第一微架构是通用微架构且第二微架构是单指令多数据(SIMD)微架构。处理节点包括耦接到第一处理器核心和第二处理器核心中的每个的存储器。存储器存储包括一个或多个计算内核或函数调用的计算机程序。随着编译器遍历给定函数调用的指令,编译器被配置来计算所述给定函数调用的预运行时信息。操作系统(OS)内的调度程序通过使所述一个或多个内核中的每个匹配相关数据记录来产生一个或多个工作单元。调度程序还至少部分基于已计算的预运行时信息将所述一个或多个工作单元分配到第一处理器核心或第二处理器核心。此外,调度程序能够基于对应于与等待工作单元相同的内核的其它工作单元的动态运行时行为而将等待工作单元的原始分配从第一处理器核心或第二处理器核心改变到另一处理器核心。
在参考下列描述和附图之后将进一步明白这些和其它实施方案。
附图简述
图1是具有异构多核架构的示例性处理节点的一个实施方案的广义方框图。
图2是定义计算内核的源代码的一个实施方案的广义方框图。
图3是用条件语句定义计算内核的源代码的一个实施方案的广义方框图。
图4是硬件资源与计算内核之间的调度分配的一个实施方案的广义方框图。
图5是两种类型的处理器核心的微架构的逻辑布局的一个实施方案的广义方框图。
图6是通用流水线执行流程的一个实施方案的广义方框图。
图7是SIMD流水线执行流程的一个实施方案的广义方框图。
图8是示出使用静态信息将工作单元调度到处理器核心的方法的一个实施方案的广义流程图。
图9是示出使用动态信息将工作单元调度到处理器核心的方法的一个实施方案的广义流程图。
虽然本发明容易具有各种修改和替代形式,但是特定实施方案已通过举例的方式在附图中示出且在本文中详述。然而,应了解附图和附图的详述并非旨在将本发明限于所公开的特别形式,反而本发明涵盖属于如由随附权利要求定义的本发明的精神和范围内的所有修改、等效和替代。
详述
在下文描述中,提出许多特定细节以提供对本发明的完整理解。然而,本领域一般技术人员应认识到,可在没有这些特定细节的情况下实践本发明。在一些实例中,未详细示出熟知电路、结构和技术以避免模糊本发明。
参考图1,示出了具有异构多核架构的示例性处理节点110的一个实施方案。处理节点110可包括一个或多个处理单元115,其可包括一个或多个处理器核心112和相关缓存存储器子系统114。在一个实施方案中,处理器核心112使用通用微架构。
处理节点110还可以包括一个或多个处理单元170,其可包括一个或多个处理器核心172和数据存储缓冲器174。处理器核心172不一定是处理器核心112的镜像硅图像。处理器核心172可具有不同于由处理器核心112使用的微架构的微架构。在一个实施方案中,处理器核心172可以是与处理器核心112相同的处理器系列的不同一代。在另一实施方案中,处理器核心172可以是处理器核心112的电压和/或频率缩放版本。换句话说,处理器核心172并非是具有相同功能和指令集架构(ISA)、相同时钟频率、相同缓存大小、相同存储器模型等等的处理器核心112的硅复制品。
继续就处理器核心172的微架构来说,在又另一实施方案中,处理器核心172可包括对计算密集型任务提供高指令吞吐量的微架构。处理器核心172可具有并行架构。例如,处理器核心172可以是单指令多数据(SIMD)核心。SIMD核心的实例包括图形处理单元(GPU)、数字信号处理(DSP)核心或其它。在一个实施方案中,处理节点110包括单指令集架构(ISA)。通常,如本领域中所熟知,已显示单ISA多核架构对芯片微处理器(CMP)提供较高功率和吞吐量性能。
当有效调度软件应用程序的线程时,可以在给定功率限制内的已测量功耗下实现处理节点110上的高指令吞吐量。可在处理器核心112和172之一上以每个线程具有最高指令吞吐量的方式至少部分基于处理器核心112和172的运行时硬件资源来调度线程。
继续就处理节点110中的组件来说,处理节点110可包括存储器控制器120和接口逻辑140。在一个实施方案中,处理节点110的已图示的功能并入到一个集成电路上。在一个实施方案中,处理器核心112包括用于执行根据预定义通用指令集的指令的电路。例如,可选择指令集架构(ISA)。替代地,可选择x86、 或任何其它指令集架构。通常,处理器核心112分别针对数据和指令存取缓存存储器子系统114。如果缓存存储器子系统114中或共享缓存存储器子系统118中未发现所请求的区块,那么可生成读取请求并将其传输到所述节点内映射到缺失区块的存储器控制器。
在一个实施方案中,处理单元170是图形处理单元(GPU)。现代GPU操控和显示计算机图形的效率极高。GPU的高度并行结构使其在复杂算法的范围内比通用中央处理单元(CPU)(诸如处理单元115)更有效。通常,GPU执行用于图形和视频的计算且CPU执行用于系统进程的计算远多于单独用于图形的计算。常规的GPU使用极广泛的单指令多数据(SIMD)架构以在图像渲染应用中实现高吞吐量。这些应用一般必须对大量对象(顶点或像素)执行相同程序,诸如顶点着色或像素着色。因为每个对象独立于其它对象而处理,但使用相同操作次序,所以SIMD架构提供相当大的性能增强。GPU还一直被视为用于非图形计算。
在一个实施方案中,GPU170可位于视频卡上。在另一实施方案中,GPU170可以集成在母板上。在又另一实施方案中,处理节点110的已图示的功能可以并入到一个集成电路上。在这个实施方案中,CPU115和GPU170可以是来自不同设计中心的专用核心。此外,GPU170现在能够经由存储器控制器120从处理节点110直接存取本地存储器114和118和主存储器两者,而非经由接口140执行芯片外存储器存取。这个实施方案可以降低对GPU170进行的存储器存取的延时,这可以转化成较高性能。
继续就图1中的处理节点110的组件来说,缓存子系统114和118可包括被配置来存储数据区块的高速缓存存储器。缓存存储器子系统114可以集成在各自处理器核心112内。替代地,缓存存储器子系统114可以如期望般以背侧缓存配置或内嵌配置耦接到处理器核心114。此外,缓存存储器子系统114还可以被实施为缓存阶层。如期望,可将被定位在更靠近处理器核心112(阶层内)的缓存集成到处理器核心112中。在一个实施方案中,缓存存储器子系统114每个表示L2缓存结构,且共享缓存子系统118表示L3缓存结构。缓存存储器子系统114和共享缓存存储器子系统118均可以包括耦接到对应缓存控制器的缓存存储器。
通常,数据包处理逻辑116被配置来响应于耦接到处理节点110的链路上接收到的控制数据包、响应于处理器核心112和/或缓存存储器子系统114而生成控制数据包、响应于由存储器控制器120选择用于服务的交易而生成探测命令和响应数据包,且通过接口逻辑140将其节点110是中间节点的数据包路由到其它节点。接口逻辑140可包括接收数据包并将数据包与由数据包处理逻辑116所用的内部时钟同步的逻辑。
现转到图2,示出了使用计算内核的源代码的一个实施方案。OpenCLTM(开放计算语言)是用于异构计算的应用程序编程接口(API)的一个实例。OpenCL包括定义执行队列的类C语言接口,其中每个队列与OpenCL装置相关。OpenCL装置可以是CPU、GPU或异构多核架构内具有至少一个处理器核心的其它单元。函数调用可以称作OpenCL内核或简称为“计算内核”。OpenCL框架可以改善用于游戏、娱乐、科学和医学领域的多种数据并行应用程序的计算性能。对于异构架构,计算机程序通常包括计算内核和内部函数的集合。软件程序员可定义计算内核,而内部函数可在给定库中被定义。
对于数据并行软件应用程序,N维计算域可定义“执行域”的组织。N维计算域还可以称作N维网格或N维范围(“NDRange”)。NDRange可以是一维、二维或三维空间。这种维度空间还可以称作索引空间。例如,软件应用程序可以对二维(2D)数据阵列(诸如图像文件)执行数据处理。软件应用程序可对2D图像以逐个像素为基础执行由软件程序员开发的算法。可在索引空间(NDRange)上调用给定计算内核。
通常在编译之后,设置每个计算内核的自变量和参数。此外,创建相关存储器对象和缓冲器。计算内核的给定实例可被执行为其自身的软件线程。索引空间中的给定点处的计算内核的给定实例可以称作“工作项”。工作项还可以称作工作单元。工作单元可与计算内核中的所述一个或多个指令一起操作对应于2D图像的给定像素(给定索引)的数据记录。通常,工作单元具有相关唯一识别符(ID)。在另一实例中,处理字符串“HelloWorld”的入门计算机程序可以具有用于计算所述字符串中的每个字母的一个工作单元。
NDRange可以定义当存在足够硬件支持时并行执行的工作单元的总数。例如,NDRange可定义280个工作单元,但是GPU可支持在任何给定时间同时执行64个工作单元。工作单元的总数可定义全局工作大小。如本领域一般技术人员所熟知,工作单元还可以分组成工作组。每个工作组可具有唯一识别符(ID)。给定工作组内的工作单元能够相互通信并同步执行且协调存储器存取。可将多个工作单元群集成波前以在GPU上以SIMD方式同时执行。关于上述实例的280个总工作单元,波前可包括64个工作单元。
OpenCL框架是各种计算装置或OpenCL装置的开放编程标准。软件程序员可以避免编写厂商特定的代码,这可导致改善代码可移植性。其它框架是可用的且可以对异构架构提供更多厂商特定的代码。例如,NVIDIA提供统一计算装置架构且AMD提供ATI运用CUDA框架,当编译计算机程序时通常静态地编译计算内核。运用OpenCL框架,通常使用即时(JIT)方法编译计算内核。JIT方法可在获得系统配置之后生成适当二进制代码。运用JIT编译方法,编译时间包括在总执行时间中。因此,编译器优化可以增加执行时间。此外,在运行时,OpenCL编译器可生成多个版本的计算内核。对于OpenCL装置类型中(诸如通用CPU、SIMDGPU等等)的每个类型可生成一个版本的计算内核。
所述两个框架OpenCL和CUDA在其各自执行模型之间存在专业术语上的差别。例如,OpenCL中的工作单元、工作组、波前和NDRange在CUDA中具有对应术语,诸如线程、线程区块、排列线和网格。贯穿本描述的剩余部分,使用对应于OpenCL的术语。然而,所描述的系统和方法可应用于CUDA、ATIStream和其它框架。
如图2中所示,代码210定义一般命名为“doWorkA”和“doWorkB”的两个函数调用。每个函数调用可以称作“计算内核”。计算内核可以匹配一个或多个数据记录以产生计算的一个或多个工作单元。因此,两个或更多个工作单元可以使用单函数调用的相同指令,但操作不同数据记录。例如,代码220中的函数调用“Power2”可用来执行10个工作单元,一个工作单元针对阵列“INPUT”中的每个数据值。在这里,记录包括一个数据值。在其它实例中,记录可包括两个或更多个栏,其中每个栏包括一个数据值。SIMD微架构可有效执行内核“Power2”的指令、计算INPUT阵列中的值的2的幂次方并将输出编写到RESULT阵列。
OpenCL框架可以多次并行调用计算内核的实例。运用JIT编译方法,在运行时编译这些实例以供随后调用。计算内核的每次调用(引用)具有可通过引用名为get_global_id(0)的内部函数取得的一个相关唯一ID(工作单元ID)。关于上述实例,在代码220中,对INPUT阵列中的每个数据值调用一次计算内核“Power2”。在这种情况下,计算内核“Power2”被调用10次。因此,取得了10个唯一工作单元ID。在这些不同实例之间,OpenCL框架由于使用唯一工作ID而可能有所不同。还可以规定要操作的数据(记录),诸如INPUT阵列中的特定数据值。因此,在运行时,随着调度相关计算内核,可默认将工作单元调度到相同OpenCL装置。
现转到图3,示出了用条件语句定义计算内核的源代码的一个实施方案。类似于代码210,图3中所示的代码230定义一般命名为“doWorkA”和“doWorkB”的两个函数调用。再一次说明,每个函数调用可以称作“计算内核”。在这里,在运行时期间仅执行所述两个计算内核之一。基于由函数调用“EvaluateFunction”提供的条件检验执行计算内核的选择。给定指令的结果或是否执行给定指令与对应于相关记录的先前指令和数据的执行存在数据依赖性。如果条件检验的结果在工作单元的波前之中不一致,那么SIMD微架构的优势可能减小。例如,给定SIMD核心可以具有可用于同时执行64个工作单元的64个并行计算单元。然而,如果所述64个工作单元中的一半通过条件检验而另一半未通过条件检验,那么在给定处理阶段期间仅使用并行计算单元中的一半。
现转到图4,示出了图示硬件资源与计算内核之间的调度分配400的一个实施方案的广义方框图。在这里,示出了在一个或多个软件应用程序430的执行期间硬件和软件资源的分区以及其相互关系和分配。在一个实施方案中,操作系统420分派用于计算内核440a至440j和440k至440q的存储器区域。当执行应用程序430或计算机程序时,每个应用程序可包括多个计算内核。例如,第一执行应用程序可包括计算内核440a至440j,且第二执行应用程序可包括计算内核440k至440q。在这些计算内核中的每个内可存在一个或多个工作单元。例如,计算内核440a包括工作单元442a至442d,计算内核440j包括工作单元442e至442h,计算内核440k包括442j至442m,且计算内核440q包括工作单元442n至442q。工作单元可以独立于其它工作单元执行,以及与其它工作单元同时执行。
图4中所示的计算内核中的每个可拥有其自身的资源,诸如存储器图像或执行应用程序之前的指令和数据的实例。计算内核中的每个还可以包括进程特定的信息,诸如寻址代码的地址空间、数据,以及可能的堆阵和堆栈;数据和控制寄存器(诸如堆栈指针、普通寄存器和浮点寄存器、程序计数器等)中的变量;和操作系统描述符(诸如标准输入、标准输出等)以及安全属性(诸如权限集)。
在一个实施方案中,硬件计算系统410并入了通用处理器核心112和SIMD处理器核心172,每个被配置来处理一个或多个工作单元。在另一实施方案中,系统410包括两个其它异构处理器核心。一般来说,对于给定应用程序,当从调度程序请求时,操作系统420为应用程序设置地址空间,将应用程序的代码加载到存储器中,为程序设置堆栈,分支到应用程序内部的给定位置,且开始执行应用程序。通常,操作系统420中管理这些活动的部分是操作系统(OS)计算内核422。OS计算内核422称作“OS计算内核”,以免与计算内核或函数调用混淆。OS计算内核422还可以确定当没有足够存储器可用来执行应用程序时的行动方案。如前所述,可将应用程序分到一个以上计算内核中,且系统410可以运行一个以上的应用程序。因此,可以并行运行多个计算内核。使用OS计算内核422的调度程序可在任何时候决定将同时执行的计算内核中的哪些计算内核分派到处理器核心112和172。OS计算内核422可允许在称作时间片段的给定的时间量内在处理器(其可具有一个或多个核心)的核心上运行进程。操作系统420中的调度程序424可包括用于将计算内核分派到核心的决策逻辑。
在一个实施方案中,仅一个计算内核可在任何时候在硬件计算单元412a至412g和412h至412r中的任何一个上执行。这些硬件计算单元包括可用相关数据处理给定工作单元的给定指令的执行的硬件。这种硬件可包括算术逻辑单元,其被配置来执行加法、乘法、零检测、逐位位移、除法、视频图形和多媒体指令或处理器设计领域中的一般技术人员已知的其它操作。这些硬件计算单元可包括多线程处理器中的硬件线程、SIMD微架构中的并行硬件列,等等。
图4中的虚线标示分配且不一定标示直接物理连接。因此,例如,硬件计算单元412a可被分配来执行工作单元442d。然而,随后(例如,在上下文切换之后),硬件计算单元412a可被分配来执行工作单元442h。在一个实施方案中,调度程序424可用循环方案将工作单元442a至442q调度到硬件计算单元412a至412r。替代地,调度程序424可用循环方案将工作单元442a至442q调度到核心112和172。可由相关处理器核心执行给定工作单元到给定硬件计算单元的分配。在另一实施方案中,调度程序424可基于处理器核心112和172的可用性来执行调度。在又另一实施方案中,调度程序424可根据由程序员使用OpenCLTMAPI或另一类似API创建的分配来执行调度。当工作单元分配与硬件资源之间存在不匹配时,这些调度方案可限制可移植性和性能。
参考图5,示出了图示两种类型的处理器核心的微架构的逻辑布局的一个实施方案的广义方框图。虽然示出了通用核心510和单指令多数据(SIMD)核心560中的每个,但是其它类型的异构核心也可行并且也在预期之内。核心510和560中的每个具有用于存储数据和指令的动态随机存取存储器(DRAM)550a和550b。在一个实施方案中,核心510和560共享同一个DRAM。在另一实施方案中,除了DRAM以外,还共享缓存存储器子系统(未示出)的给定级。例如,再次参考图1,核心112和172共享缓存存储器子系统118。
核心510和560中的每个包括缓存存储器子系统530。如所示,通用核心510在逻辑上具有与控制逻辑520和算术逻辑单元(ALU)540分离的缓存存储器子系统530。虽然为了简化图示而未示出诸如流水线寄存器的存储元件,但是核心510内的数据流可以呈流水线式。在给定流水线阶段中,如果这个阶段中的指令未使用某种类型的ALU或如果另一工作单元(或通用核心的另一线程)在这个阶段期间消耗ALU,那么ALU可以不被使用。
如所示,对于计算单元542的每行,SIMD核心560具有与控制逻辑520分为一组的缓存存储器子系统530。虽然为了简化图示而未示出诸如流水线寄存器的存储元件,但是核心560内的数据流可以呈流水线式。在给定流水线阶段中,如果没有基于先前未通过的检验(诸如未被采用的分支)在这个阶段中执行相关指令,那么计算单元可以不被使用。
现参考图6,示出了图示通用流水线执行流程600的一个实施方案的广义方框图。可取得指令602至608且其进入通用流水线。指令606可以是计算密集型指令。在流水线执行流程的特别阶段期间,指令602至608中的一个或多个消耗通用处理器核心112中的资源,诸如解码器逻辑、指令调度程序条目、重排序缓冲器条目、ALU、寄存器文件条目、分支预测单元等等。
在平衡方案中,指令602至608中的每个在每个阶段消耗相等的资源量。然而,通常通用核心由于占用面积成本、功耗和其它设计考虑而不会对每个指令复制资源。因此,工作量可能变得不平衡。例如,指令606由于其计算密集型行为而可能消耗一个或多个流水线阶段的更多资源。如所示,由这个指令消耗的资源630可以变得远大于由其它指令消耗的资源。实际上,计算密集型指令可阻碍由其它指令使用硬件资源。
一些计算密集型任务可以对通用核心112内的共享资源施压。因此,计算密集型进程和等待共享资源的其它进程均发生吞吐量损失。此外,一些指令占用晶粒上的共享资源和其它资源以支持对共享资源执行的计算。这种长延时指令可同时阻碍其它进程在长延时期间使用多个资源。
现参考图7,示出了图示SIMD流水线执行流程700的一个实施方案的广义方框图。可取得指令702至708且其进入具有相关数据的SIMD流水线。指令704可以是控制流程转移指令,诸如分支。指令706可以是被采用的路径中的第一指令。例如,分支指令704可以与高级语言程序中的IF语句相关。指令706可以与高级语言程序中的THEN语句相关。指令708可以是未被采用的路径中的第一指令。指令708可以与高级语言程序中的ELSE语句相关。
给定行内的计算单元中的每个可以是相同计算单元。这些计算单元中的每个可操作相同指令,但是操作与不同工作单元相关的不同数据。如所示,一些工作单元通过由分支指令704提供的检验且其它工作单元未通过检验。SIMD核心172可执行可用路径中的每个并且选择性地禁用执行单元,诸如对应于未选取当前路径的工作项的计算单元。例如,在If-Then-Else构造语句的执行期间,在SIMD架构的每列内存在被配置来执行“Then”(路径A)和“Else”(路径B)路径的执行单元。由于第一工作单元和第二工作单元在第三工作单元继续其正在进行的执行时停止执行且等待,因此并行执行的效率可能减小。因此,在执行分支指令704之后,并非所有计算单元均是给定行中的活跃计算单元710。如果在给定流水线阶段期间大量计算单元非活跃,那么SIMD核心的效率和吞吐量会减小。
现转到图8,示出了使用静态信息将工作单元调度到处理器核心的方法800的一个实施方案。处理节点110中具体实施的组件和上述图4中所示的硬件资源分配一般可根据方法800进行操作。为了论述,按次序示出这个实施方案和随后描述的方法的后续实施方案中的步骤。然而,一些步骤可能以不同于所示次序的次序发生,一些步骤可同时执行,一些步骤可与其它步骤组合,且另一实施方案中可能缺少一些步骤。
在方框802中,可定位并分析软件程序或子例程。可编写这个软件程序以在异构架构上编译和执行。程序代码可指代软件应用程序、子例程、动态链接库或其它的任何部分。用户可以按命令提示符输入路径名,可从给定目录位置或其它位置读取路径名,以开始编译源代码。可由设计者以高级语言(诸如C语言、类C语言,诸如OpenCLTM等等)编写程序代码。在一个实施方案中,静态编译源代码。在这个实施方案中,在静态前端编译期间,可以将源代码转化成中间表示(IR)。后端编译步骤可以将IR转化成机器代码。静态后端编译可以执行更多变换和优化。编译器可识别程序代码中的内核。
在方框804中,编译器可读取内核的一个或多个指令并对其进行分析。如果识别到条件语句(条件方框806),那么在方框808中可以使多个条件语句的计数递增。条件语句可以是控制流程转移指令,诸如分支。在一个实施方案中,对于不同类型的控制流程转移指令(诸如正向/反向分支、直接/间接分支、跳跃等等)可维持单独计数。编译器或其它工具可以静态地确定分支方向、分支目标或存储器存取操作的地址。然而,在一个实施方案中,通常在运行时期间对相关数据进行的一些处理可在编译期间执行。例如,可执行确定分支方向(被采用、未被采用)的简单检验。虽然编译可以称作“静态编译”,但是也可执行一种或多种小的动态操作。这种编译也可以称作“预运行时编译”。此时执行的动态步骤的另一实例是识别If-Then-ElseIf-Else构造的THEN、ELSEIF和ELSE方框中的每个中要执行的下一个指令。
如果识别到存储器存取指令(条件方框810),那么在方框812中可确定对应存取模式。存储器存取可以是循序、跨步、直接、间接、分组聚集、分散方式等等。再一次说明,在编译期间可以用与工作单元相关的数据执行一些动态计算。编译器可维持不同类别的存储器存取的计数。
在一个实施方案中,在代码执行之前,可执行静态二进制插桩。可检查指令以确定指令是否有资格插桩。插桩允许在随后执行中由分析例程执行测量和错误校验分析。此外,可收集剖析数据。可基于对所得工作单元的动态行为的理解(诸如存储器剖析)而提高应用程序的性能。此外,可执行基于源自于相同内核的完整工作单元的动态行为对工作单元的动态调度。静态编译时间控制流程图和数据流程图的使用可用来检测运行时执行之前的初始化变量和程序行为。然而,动态行为可以提供进一步的信息。因此,可至少对控制流程转移指令和存储器存取指令(诸如加载/读取和存储/编写操作)进行插桩。然而,为了减小要存储的测量数据和要执行的分析的量,即使当给定指令另外有资格插桩时,也可以使用筛选来减小插桩指令的数量。
如果指令确实有资格用于插桩(条件方框814),那么在方框816中,在插桩阶段期间,分析例程可以内嵌或常驻在函数调用中,其中在合格指令被插桩之前或之后函数名被内嵌在代码内。如果到达最后一个指令(条件方框818),那么在方框820中调度程序根据预运行时信息或静态信息调度要在异构架构内的核心112和172中的对应核心上执行的每个工作单元。
异构多核架构中使用的调度程序424可将核心内的硬件资源和组织与工作单元的特性之间的匹配放在优先。例如,可在通用处理器核心112上调度对应于具有低线程级并行性的工作单元。
可在核心112上调度控制流程转移指令的数量大于给定阈值的工作单元。替代地,可在核心112上调度包括方向基于相关数据而变化的相对大量控制流程指令的内核的工作单元。例如,如果内核具有大量控制流程转移指令,但是在大量工作单元之中方向(被采用、未被采用)一致,那么可在SIMD核心172上调度工作单元。否则,如果控制流程转移指令的方向不一致或不同,那么可在核心112上调度相关工作单元。
如果相对大量的存储器存取指令以循序方式或跨步方式执行存储器位置的存取,那么可在SIMD核心172上调度对应工作单元。如果相对大量的存储器存取指令以分散或间接方式执行存储器位置的存取,那么可在通用核心112上调度对应工作单元。在运行时,OpenCLTM编译器可为每个OpenCLTM装置类型生成多个版本的内核,诸如通用核心112和SIMD核心172。在一个实例中,调度程序424可调度要在SIMD核心172上执行的给定内核的前256个工作单元。然而,基于所述工作单元的受监控动态行为,调度程序424可将给定内核的最后16个工作单元调度到通用核心112。
现转到图9,示出了使用动态信息将工作单元调度到处理器核心的方法900的一个实施方案。处理节点110中具体实施的组件和上述图4中所示的硬件资源分配一般可根据方法900进行操作。为了论述,按次序示出这个实施方案和随后描述的方法的后续实施方案中的步骤。然而,一些步骤可能以不同于所示次序的次序发生,一些步骤可同时执行,一些步骤可与其它步骤组合,且另一实施方案中可能缺少一些步骤。
在方框902中,将相关数据记录分配到给定内核的每个工作单元。在方框904中,调度程序424将工作单元调度到异构核心。方法700可以用来执行调度。在方框906中,处理器核心112和172执行经对应调度的工作单元。在方框908中,插桩代码和工具监控并收集执行工作单元的动态行为。已收集的数据可存储在一个或多个表格中。所述一个或多个表格的条目可使用处理器核心识别符(ID)、内核ID和工作单元ID以指示正在被测量的当前系统拓扑。
事件索引可指示由已插桩的代码测量的事件类型。实际测量值可与比率值存储在一起。比率可包括对应的频率或百分比测量。状态栏可用来指示测量值和比率值是否有效。可存储一个或多个可配置的阈值。在一个实施方案中,这些阈值是可编程的。
如果正在等待执行被调度的工作单元(条件方框910),那么在方框912中可分析对应于相同内核的任何执行工作单元的受监控动态行为。在方框914中,确定异构核心之一适用于有效执行给定工作单元。例如,随着每个工作单元的指令数量增加,指令对应于通用功能的机会更高。因此,当已测量的数量超过给定阈值时,通用核心112可能更加适用于等待工作单元的执行。此外,可以使用被采用的分支之间的指令的计数。
代码中的给定循环和循环次数可指示对SIMD微架构的有效执行。多个已执行分支和超出给定阈值的其它类型的控制流程转移指令可指示通用核心112提供更有效执行。类似地,相对大量的缓存缺失可指示通用核心112在执行工作单元方面可能比SIMD核心172更有效。相对大量的已执行浮点运算、已执行的图形处理运算和由于编写缓冲器溢出的流水线延迟可指示SIMD核心172对等待工作单元提供更有效执行。此外,可使用确定执行等待工作单元的优选OpenCLTM装置类型的执行时间。其它运行时准则是可行的并且在预期之内。此外,每个准则都可具有用于所有准则的求和公式的相关权重以确定用于执行的优选OpenCLTM装置类型。
在方框916中,在上文确定的用于有效执行等待工作单元的处理器核心与先前调度的处理器核心之间进行比较。如果存在匹配(条件方框918),那么在方框920中,调度程序424在先前调度的处理器核心上调度等待工作单元。如果不存在匹配(条件方框918),那么在方框922中,调度程序424在从上文使用对应内核的动态行为的分析中发现的处理器核心上调度等待工作单元。
注意,上述实施方案可包括软件。在这个实施方案中,可在计算机可读介质上运送或存储实施方法和/或机制的程序指令。被配置来存储程序指令的许多类型的介质均可用且包括硬盘、软盘、CD-ROM、DVD、闪速存储器、可编程ROM(PROM)、随机存取存储器(RAM)和各种其它形式的易失性或非易失性存储装置。一般来说,计算机可存取存储介质可包括在使用期间可由计算机存取以将指令和/或数据提供到计算机的任何存储介质。例如,计算机可存取存储介质可包括存储介质,诸如磁性或光学介质,例如磁盘(固定或可抽换式)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可以包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、低功率DDR(LPDDR2等)SDRAM、RambusDRAM(RDRAM)、静态RAM(SRAM)等)、ROM、闪速存储器、可经由诸如通用串行总线(USB)接口的外围接口存取的非易失性存储器(例如闪速存储器),等。存储介质可包括微机电系统(MEMS)和可经由诸如网络和/或无线链路的通信介质存取的存储介质。
此外,程序指令可包括以高级编程语言(诸如C)或设计语言(HDL)(诸如Verilog、VHDL或数据库格式(诸如GDSII串流格式(GDSII))对硬件功能进行的行为级描述或寄存器传输级(RTL)描述。在一些情况下,可由综合工具读取本描述,所述综合工具可综合本描述以产生包括来自综合库的门列表的网络列表。网络列表包括还表示包括系统的硬件功能的一组门。然后可以置入并路由网络列表以产生描述将施加于掩膜的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩膜以产生半导体电路或对应于系统的电路。替代地,如期望,计算机可存取存储介质上的指令可以是所述网络列表(具有或不具有综合库)或数据集。此外,出于仿真目的,指令可被来自如和Mentor的这些厂商的基于硬件类型的仿真器使用。
虽然已相当详细地描述了上述实施方案,但是一旦完全明白上述公开,本领域技术人员便将明白许多变化和修改。下列权利要求旨在被解译成包括所有这些变化和修改。

Claims (12)

1.一种用于在异构多核架构中调度工作单元的方法,其包括:
至少部分基于在第一计算内核的编译期间确定的指示所述第一计算内核包括小于第一阈值的数量的分支指令的预运行时静态信息将所述第一计算内核调度到多个处理器核心中的第一处理器核心,其中所述第一处理器核心具有第一微架构,其中所述第一微架构是单指令多数据(SIMD)微架构;
至少部分基于指示分支指令的数量大于所述第一阈值的预运行时静态信息将所述第一计算内核调度到多个处理器核心中的第二处理器核心,其中所述第二处理器核心具有第二微架构,其中所述第二微架构是通用微架构;
接收对应于所述第一或第二处理器核心上的所述第一计算内核的运行时行为的已测量运行时信息;和
至少部分基于指示在被调度的所述第一计算内核内执行的分支指令的数量大于第二阈值数量的已测量运行时信息将所述第一计算内核从所述第一处理器核心重新调度到所述多个处理器核心中的所述第二处理器核心。
2.根据权利要求1所述的方法,其还包括,在所述第一计算内核的编译期间,为所述第一处理器核心和所述第二处理器核心中的每个的所述第一计算内核生成不同版本的二进制代码。
3.根据权利要求1所述的方法,其中所述调度包括:
确定第二计算内核包括进行分散或间接存储器存取的第一数量的指令;
确定所述第二计算内核包括进行循序或跨步存储器存取的第二数量的指令;
响应于确定指令的所述第一数量大于指令的所述第二数量而将所述第二计算内核调度到所述第二处理器核心;和
响应于确定指令的所述第一数量不大于指令的所述第二数量而将所述第二计算内核调度到所述第一处理器核心。
4.根据权利要求1所述的方法,其还包括:
至少部分基于在第二计算内核的编译期间确定的指示所述第二计算内核包括小于第三阈值数量的与以下各项中的至少一个:加密、浮点、无用单元收集和视频图形相对应的第二类型的指令的预运行时静态信息将第二计算内核调度到所述多个处理器核心中的所述第二处理器核心;
至少部分基于指示至少第四阈值数量的所述第二类型的指令已被执行的已测量运行时信息将所述第二计算内核从所述第二处理器核心重新调度到所述第一处理器核心。
5.根据权利要求4所述的方法,其中所述调度包括:
确定第三计算内核包括进行分散或间接存储器存取的第一数量的指令;
确定所述第三计算内核包括进行循序或跨步存储器存取的第二数量的指令;
响应于确定指令的所述第一数量大于指令的所述第二数量而将所述第三计算内核调度到所述第二处理器核心;和
响应于确定指令的所述第一数量不大于指令的所述第二数量而将所述第三计算内核调度到所述第一处理器核心。
6.一种包括异构多核架构的计算系统,其包括:
第一处理器核心,其具有第一微架构,其中所述第一微架构是单指令多数据(SIMD)微架构;
第二处理器核心,其具有不同于所述第一微架构的第二微架构,其中所述第二微架构是通用微架构;
操作系统,其包括调度程序,其中所述调度程序被配置来:
至少部分基于在第一计算内核的编译期间确定的预运行时静态信息将所述第一计算内核调度到所述第一处理器核心,所述预运行时静态信息指示所述第一计算内核包括小于第一阈值的数量的分支指令;
至少部分基于指示分支指令的数量大于所述第一阈值的预运行时静态信息将所述第一计算内核调度到多个处理器核心中的第二处理器核心;
接收对应于所述第一或第二处理器核心上的所述第一计算内核的运行时行为的已测量运行时信息;和
至少部分基于指示被执行的分支指令的数量大于第二阈值数量的已测量运行时信息将所述第一计算内核从所述第一处理器核心重新调度到所述第二处理器核心。
7.根据权利要求6所述的计算系统,其还包括被配置来编译所述第一计算内核的编译器,其中,在所述第一计算内核的编译期间,所述编译器还被配置来为所述第一处理器核心和所述第二处理器核心中的每个的所述第一计算内核生成不同版本的二进制代码。
8.根据权利要求6所述的计算系统,其中为了执行所述调度,所述调度程序还被配置来:
确定第二计算内核包括进行分散或间接存储器存取的第一数量的指令;
确定所述第二计算内核包括进行循序或跨步存储器存取的第二数量的指令;
响应于确定指令的所述第一数量大于指令的所述第二数量而将所述第二计算内核调度到所述第二处理器核心;和
响应于确定指令的所述第一数量不大于指令的所述第二数量而将所述第二计算内核调度到所述第一处理器核心。
9.根据权利要求6所述的计算系统,其中所述调度程序被配置来:
至少部分基于在第二计算内核的编译期间确定的指示所述第二计算内核包括小于第三阈值数量的与以下各项中的至少一个:加密、浮点、无用单元收集和视频图形相对应的第二类型的指令的预运行时静态信息将第二计算内核调度到所述多个处理器核心中的所述第二处理器核心;
至少部分基于指示至少第四阈值数量的所述第二类型的指令已被执行的已测量运行时信息将所述第二计算内核从所述第二处理器核心重新调度到所述第一处理器核心。
10.根据权利要求9所述的计算系统,其中所述调度包括:
确定第三计算内核包括进行分散或间接存储器存取的第一数量的指令;
确定所述第三计算内核包括进行循序或跨步存储器存取的第二数量的指令;
响应于确定指令的所述第一数量大于指令的所述第二数量而将所述第三计算内核调度到所述第二处理器核心;和
响应于确定指令的所述第一数量不大于指令的所述第二数量而将所述第三计算内核调度到所述第一处理器核心。
11.一种用于在异构多核架构中调度工作单元的系统,其包括:
装置,用于至少部分基于在第一计算内核的编译期间确定的指示所述第一计算内核包括小于第一阈值的数量的分支指令的预运行时静态信息将所述第一计算内核调度到多个处理器核心中的第一处理器核心,其中所述第一处理器核心具有第一微架构,其中所述第一微架构是单指令多数据(SIMD)微架构;
装置,用于至少部分基于指示分支指令的数量大于所述第一阈值的预运行时静态信息将所述第一计算内核调度到多个处理器核心中的第二处理器核心,其中所述第二处理器核心具有第二微架构,其中所述第二微架构是通用微架构;
装置,用于接收对应于所述第一或第二处理器核心上的所述第一计算内核的运行时行为的已测量运行时信息;和
装置,用于至少部分基于指示在被调度的所述第一计算内核内执行的分支指令的数量大于第二阈值数量的已测量运行时信息将所述第一计算内核从所述第一处理器核心重新调度到所述多个处理器核心中的所述第二处理器核心。
12.根据权利要求11所述的系统,还包括:
装置,用于确定第二计算内核包括进行分散或间接存储器存取的第一数量的指令;
装置,用于确定所述第二计算内核包括进行循序或跨步存储器存取的第二数量的指令;
装置,用于响应于确定指令的所述第一数量大于指令的所述第二数量而将所述第二计算内核调度到所述第二处理器核心;和
装置,用于响应于确定指令的所述第一数量不大于指令的所述第二数量而将所述第二计算内核调度到所述第一处理器核心。
CN201280023366.XA 2011-05-11 2012-05-11 异构核心的自动加载平衡 Active CN103562870B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/105,250 US8782645B2 (en) 2011-05-11 2011-05-11 Automatic load balancing for heterogeneous cores
US13/105,250 2011-05-11
PCT/US2012/037433 WO2012155010A1 (en) 2011-05-11 2012-05-11 Automatic load balancing for heterogeneous cores

Publications (2)

Publication Number Publication Date
CN103562870A CN103562870A (zh) 2014-02-05
CN103562870B true CN103562870B (zh) 2016-05-18

Family

ID=46124772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280023366.XA Active CN103562870B (zh) 2011-05-11 2012-05-11 异构核心的自动加载平衡

Country Status (6)

Country Link
US (1) US8782645B2 (zh)
EP (1) EP2707797B1 (zh)
JP (1) JP5859639B2 (zh)
KR (1) KR101839544B1 (zh)
CN (1) CN103562870B (zh)
WO (1) WO2012155010A1 (zh)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US10013731B2 (en) * 2011-06-30 2018-07-03 Intel Corporation Maximizing parallel processing in graphics processors
US9195501B2 (en) * 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
US8954017B2 (en) * 2011-08-17 2015-02-10 Broadcom Corporation Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device
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
US9430807B2 (en) 2012-02-27 2016-08-30 Qualcomm Incorporated Execution model for heterogeneous computing
KR20130115574A (ko) * 2012-04-12 2013-10-22 삼성전자주식회사 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
US9626216B2 (en) * 2012-05-09 2017-04-18 Nvidia Corporation Graphics processing unit sharing between many applications
WO2013177765A1 (en) * 2012-05-30 2013-12-05 Intel Corporation Runtime dispatching among heterogeneous group of processors
US8930956B2 (en) * 2012-08-08 2015-01-06 International Business Machines Corporation Utilizing a kernel administration hardware thread of a multi-threaded, multi-core compute node of a parallel computer
US20160162293A1 (en) * 2013-03-26 2016-06-09 Via Technologies, Inc. Asymmetric processor with cores that support different isa instruction subsets
US10423216B2 (en) 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US9479449B2 (en) 2013-06-03 2016-10-25 Advanced Micro Devices, Inc. Workload partitioning among heterogeneous processing nodes
US9170854B2 (en) 2013-06-04 2015-10-27 Advanced Micro Devices, Inc. Thread assignment for power and performance efficiency using multiple power states
US9703696B1 (en) * 2013-09-11 2017-07-11 Altera Corporation Guided memory buffer allocation
KR102326945B1 (ko) * 2014-03-14 2021-11-16 삼성전자 주식회사 태스크 마이그레이션 방법 및 장치
WO2015143641A1 (en) * 2014-03-26 2015-10-01 Empire Technology Development Llc Compilation of application into multiple instruction sets for a heterogeneous processor
US10133572B2 (en) * 2014-05-02 2018-11-20 Qualcomm Incorporated Techniques for serialized execution in a SIMD processing system
KR20150136345A (ko) * 2014-05-27 2015-12-07 삼성전자주식회사 태스크 그룹 전달 방법 및 이를 제공하는 전자 장치
WO2015185071A1 (en) * 2014-06-04 2015-12-10 Giesecke & Devrient Gmbh Method for enhanced security of computational device with multiple cores
US9959142B2 (en) 2014-06-17 2018-05-01 Mediatek Inc. Dynamic task scheduling method for dispatching sub-tasks to computing devices of heterogeneous computing system and related computer readable medium
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
GB2524346B (en) * 2014-09-19 2016-12-21 Imagination Tech Ltd Separating Cores
JP6471456B2 (ja) * 2014-10-23 2019-02-20 日本電気株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10417052B2 (en) 2014-10-31 2019-09-17 Hewlett Packard Enterprise Development Lp Integrated heterogeneous processing units
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US9652817B2 (en) 2015-03-12 2017-05-16 Samsung Electronics Co., Ltd. Automated compute kernel fusion, resizing, and interleave
US9529950B1 (en) 2015-03-18 2016-12-27 Altera Corporation Systems and methods for performing profile-based circuit optimization using high-level system modeling
FR3035243B1 (fr) * 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
US9965343B2 (en) * 2015-05-13 2018-05-08 Advanced Micro Devices, Inc. System and method for determining concurrency factors for dispatch size of parallel processor kernels
US9983857B2 (en) 2015-06-16 2018-05-29 Architecture Technology Corporation Dynamic computational acceleration using a heterogeneous hardware infrastructure
US9501304B1 (en) 2015-06-16 2016-11-22 Architecture Technology Corporation Lightweight application virtualization architecture
US9626295B2 (en) * 2015-07-23 2017-04-18 Qualcomm Incorporated Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9733978B2 (en) 2015-08-27 2017-08-15 Qualcomm Incorporated Data management for multiple processing units using data transfer costs
US9778961B2 (en) 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
US10360063B2 (en) 2015-09-23 2019-07-23 Qualcomm Incorporated Proactive resource management for parallel work-stealing processing systems
US9891926B2 (en) 2015-09-30 2018-02-13 International Business Machines Corporation Heterogeneous core microarchitecture
US9979656B2 (en) 2015-12-07 2018-05-22 Oracle International Corporation Methods, systems, and computer readable media for implementing load balancer traffic policies
WO2017107118A1 (en) * 2015-12-24 2017-06-29 Intel Corporation Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
KR101923210B1 (ko) * 2016-01-14 2018-11-28 서울대학교산학협력단 이종 멀티코어 프로세서를 활용한 암호화 처리 장치 및 암호화 처리 방법
KR102179237B1 (ko) * 2016-01-22 2020-11-16 주식회사 소니 인터랙티브 엔터테인먼트 하위 호환성을 위한 cpuid 스푸핑
JP6658136B2 (ja) * 2016-03-14 2020-03-04 コニカミノルタ株式会社 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム
US10025624B2 (en) * 2016-03-30 2018-07-17 International Business Machines Corporation Processing performance analyzer and process manager
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US11513805B2 (en) * 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
KR101828996B1 (ko) 2016-08-23 2018-02-13 울산과학기술원 이종 멀티프로세싱 환경에서 파이프라인 병렬화를 지원하는 동적 시스템 자원 할당 방법 및 장치
CN106777710A (zh) * 2016-12-22 2017-05-31 中国兵器装备集团自动化研究所 一种在fpga上实现的cuda内核的方法
DE102017109239A1 (de) * 2017-04-28 2018-10-31 Ilnumerics Gmbh Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
CN107193631B (zh) * 2017-04-28 2019-09-13 华中科技大学 一种基于并行应用阶段检测的虚拟时间片调度方法及系统
US11054883B2 (en) * 2017-06-19 2021-07-06 Advanced Micro Devices, Inc. Power efficiency optimization in throughput-based workloads
US10558418B2 (en) * 2017-07-27 2020-02-11 Advanced Micro Devices, Inc. Monitor support on accelerated processing device
JP7245833B2 (ja) * 2017-08-03 2023-03-24 ネクスト シリコン リミテッド 構成可能なハードウェアの実行時の最適化
US10853044B2 (en) * 2017-10-06 2020-12-01 Nvidia Corporation Device profiling in GPU accelerators by using host-device coordination
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
CN109697121B (zh) * 2017-10-20 2023-05-05 伊姆西Ip控股有限责任公司 用于向应用分配处理资源的方法、设备和计算机可读介质
WO2019079994A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 核心调度方法和终端
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
CN109783141A (zh) * 2017-11-10 2019-05-21 华为技术有限公司 异构调度方法
US10719903B2 (en) * 2017-12-22 2020-07-21 International Business Machines Corporation On-the fly scheduling of execution of dynamic hardware behaviors
CN111971663A (zh) * 2018-04-16 2020-11-20 埃米尔·巴登霍斯特 处理器和操作处理器的方法
US20190370059A1 (en) * 2018-05-30 2019-12-05 Advanced Micro Devices, Inc. Multi-kernel wavefront scheduler
CN110716750A (zh) * 2018-07-11 2020-01-21 超威半导体公司 用于部分波前合并的方法和系统
DE102018212686A1 (de) * 2018-07-30 2020-01-30 Siemens Aktiengesellschaft Verfahren zum Betreiben einer Rechenanlage
US11188348B2 (en) * 2018-08-31 2021-11-30 International Business Machines Corporation Hybrid computing device selection analysis
US10798609B2 (en) 2018-10-16 2020-10-06 Oracle International Corporation Methods, systems, and computer readable media for lock-free communications processing at a network node
US10831535B2 (en) 2019-01-01 2020-11-10 International Business Machines Corporation Reducing minimum operating voltage through heterogeneous codes
CN110083469B (zh) * 2019-05-11 2021-06-04 广东财经大学 一种异构硬件组织运行统一内核方法及系统
US12008401B2 (en) * 2019-12-20 2024-06-11 Advanced Micro Devices, Inc. Automatic central processing unit (CPU) usage optimization
US11726823B2 (en) 2020-02-06 2023-08-15 Samsung Electronics Co., Ltd. Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors
CN112199076B (zh) * 2020-10-10 2022-08-09 中国运载火箭技术研究院 一种飞行控制软件架构及其设计方法
KR20220094601A (ko) 2020-12-29 2022-07-06 삼성전자주식회사 스토리지 장치 및 그 구동 방법
US12008363B1 (en) 2021-07-14 2024-06-11 International Business Machines Corporation Delivering portions of source code based on a stacked-layer framework

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09269903A (ja) 1996-04-02 1997-10-14 Hitachi Ltd プロセス管理方式
US6345041B1 (en) 1996-10-24 2002-02-05 Hewlett-Packard Company Method and apparatus for automatic load-balancing on multisegment devices
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6298477B1 (en) * 1998-10-30 2001-10-02 Sun Microsystems, Inc. Method and apparatus for selecting ways to compile at runtime
US6480930B1 (en) 1999-09-15 2002-11-12 Emc Corporation Mailbox for controlling storage subsystem reconfigurations
US6560717B1 (en) 1999-12-10 2003-05-06 Art Technology Group, Inc. Method and system for load balancing and management
US7152170B2 (en) * 2003-02-20 2006-12-19 Samsung Electronics Co., Ltd. Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
US7437536B2 (en) * 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US20080005591A1 (en) * 2006-06-28 2008-01-03 Trautman Mark A Method, system, and apparatus for dynamic thermal management
US8312455B2 (en) * 2007-12-19 2012-11-13 International Business Machines Corporation Optimizing execution of single-threaded programs on a multiprocessor managed by compilation
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US8255669B2 (en) * 2008-01-30 2012-08-28 International Business Machines Corporation Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US9223677B2 (en) * 2008-06-11 2015-12-29 Arm Limited Generation of trace data in a multi-processor system
WO2010067377A2 (en) * 2008-12-08 2010-06-17 Kpit Cummins Infosystems Ltd. Method for reorganizing tasks for optimization of resources
US8528001B2 (en) * 2008-12-15 2013-09-03 Oracle America, Inc. Controlling and dynamically varying automatic parallelization
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US8429635B2 (en) * 2009-10-28 2013-04-23 International Buisness Machines Corporation Controlling compiler optimizations
US8418187B2 (en) * 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US20120079501A1 (en) * 2010-09-27 2012-03-29 Mark Henrik Sandstrom Application Load Adaptive Processing Resource Allocation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Predictive Runtime Code Scheduling for Heterogeneous Architectures;VACTOR J JIMA CR NEZ 等;《FOURTH INTERNATIONAL CONFERENCE ON HIGH-PERFORMANCE EMBEDDED ARCHITECTURES AND COMPILERS(HIPEAC 2009)》;20090125;19-33 *
Software support for heterogeneous computing;HOWARD JAY SIEGEL等;《ACM COMPUTING SURVEYS》;19960301;第28卷(第1期);237-238 *

Also Published As

Publication number Publication date
KR20140027299A (ko) 2014-03-06
EP2707797B1 (en) 2017-11-15
JP2014513373A (ja) 2014-05-29
EP2707797A1 (en) 2014-03-19
JP5859639B2 (ja) 2016-02-10
WO2012155010A1 (en) 2012-11-15
US20120291040A1 (en) 2012-11-15
CN103562870A (zh) 2014-02-05
KR101839544B1 (ko) 2018-03-16
US8782645B2 (en) 2014-07-15

Similar Documents

Publication Publication Date Title
CN103562870B (zh) 异构核心的自动加载平衡
Yan et al. Alleviating irregularity in graph analytics acceleration: A hardware/software co-design approach
KR101559090B1 (ko) 이종 코어를 위한 자동 커널 마이그레이션
Bender et al. Two-level main memory co-design: Multi-threaded algorithmic primitives, analysis, and simulation
Rubin et al. Maps: Optimizing massively parallel applications using device-level memory abstraction
Hosny et al. Characterizing and optimizing EDA flows for the cloud
CN117348929A (zh) 指令执行方法、系统控制器及相关产品
Arima et al. Pattern-aware staging for hybrid memory systems
Boyer Improving Resource Utilization in Heterogeneous CPU-GPU Systems
Govindasamy et al. Instruction-Level Modeling and Evaluation of a Cache-Less Grid of Processing Cells
Marongiu et al. Controlling NUMA effects in embedded manycore applications with lightweight nested parallelism support
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
WO2024065826A1 (en) Accelerate deep learning with inter-iteration scheduling
US20220116284A1 (en) Methods and apparatus for dynamic xpu hardware-aware deep learning model management
Faict Exploring opencl on a cpu-fpga heterogeneous architecture
Mustafa Reducing Processor-Memory Performance Gap and Improving Network-on-Chip Throughput
Pang Leveraging Processor-diversity for Improved Performance in Heterogeneous-ISA Systems
Ross et al. Scaling OpenSHMEM for Massively Parallel Processor Arrays
Hassan Power And Hotspot Modeling For Modern GPUs
CN117349223A (zh) 片上系统、指令系统、编译系统及相关产品
Grannæs Reducing Memory Latency by Improving Resource Utilization
Kim Perfomance evaluation of multi-threaded system vs. chip-multi processor system
Yong et al. Optimization of the SIFT key algorithms on multi-core DSP systems
Akmandor et al. 2017 Index IEEE Transactions on Multi-Scale Computing Systems Vol. 3
Rahimi et al. Work-Unit Tolerance

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