面向嵌入式异构多核上执行动态分配指令的方法

文档序号:6607559阅读:234来源:国知局
专利名称:面向嵌入式异构多核上执行动态分配指令的方法
技术领域
本发明涉及的是一种计算机技术领域的方法,具体是一种面向嵌入式异构多核上 执行动态分配指令的方法。
背景技术
近几年来,由于人们对计算能力的要求越来越高,CPU的处理能力也需要进一步提 高。最初,提高CPU的性能主要是通过提高主频和前端总线频率以及扩大缓存来实现。但 是,提高主频对CPU功耗及散热的问题提出了很大的挑战,单纯扩大缓存也需要增加成本, 单核心处理器的发展已经达到一个极限。为了进一步提高CPU的处理能力,多核处理器技 术逐渐进入市场。从2006年以来,Intel和AMD等公司分别发布了双核、四核等多核处理 器。随着多核处理器全线进入市场,计算机多核时代已经来临。在单芯片内集成多个微处理器核,可以完全并行地执行程序代码,在不提升工作 频率的情况下,不但可以提高处理性能,而且很好地解决了功耗的问题,成为未来处理器的 发展方向。但是,单纯增加微处理器内核的数量并不能理想地提高CPU的处理能力,在增强 处理器的并行处理能力方面,最重要的还是程序本身的并行化,但大多数程序的串行执行 部分仍会阻碍处理性能的提升。一般认为,在这种同构多核的处理器架构中,4-8个内核可 能是多核处理器能够获得较好性能提升效果的极限。为了进一步提高CPU的处理能力,出现了一种异构处理器架构,即在一个芯片内 集成多个异构的处理器核。在这种架构中,不同的处理器核对于特定应用能够发挥更高的 处理效能(考虑性能、功耗、工艺及成本等因素),比如有的核心擅长处理浮点运算,而有的 内核擅长信号处理等工作。充分利用异构多核的功能差异性,能够更加充分地满足不同领 域不同应用的需求。由IBM、索尼和东芝等联手打造的芯片Cell正是这种异构处理器的 典范,它是一枚拥有9个硬件核心的多核处理器。在Cell芯片中,只有一个是IBM标准的 Power处理器,其余8个内核都是为处理图像而专门设计的、用于浮点运算的协处理器。其 中,主处理器的主要职能就是负责任务的分配,实际的浮点运算工作都是由协处理器来完 成。由于Cell中的协处理器只负责浮点运算任务,所需的运算规则非常简单,对应的电路 逻辑同样如此,只要CPU运行频率足够高,Cell就能够获得惊人的浮点效能。目前,异构多核处理器主要有三类,根据指令集的差异,有指令集完全相同但硬件 配置不同、指令集完全不同以及部分指令集核心相同等种类。其中对于有通用指令集核心 的异构多核处理器,其各自不同的部分设计为扩展的指令集,适合于处理不同需求的应用。 为了跟上异构多核处理器的发展步伐,在面向异构多核处理器时需要设计更先进的编译系 统及运行时处理方法,包括程序设计语言、编译模型及运行库的设计等。在这方面,主要的 工作集中在任务调度策略和线程级并行的优化上。现有的任务的静态调度主要有两种方法一种是在编译期将不同的代码编译成适 合不同的处理核执行的二进制代码;另一种是在运行时链接不同处理核的运行库。这两种 方法都是静态地将任务指派到特定的处理核上执行,因此要求程序在编写时就考虑不同核的异构性,编程人员必须对异构核有充分地了解。另外该方法没有考虑到异构多核的负载 均衡和功耗等问题,任务的不当分配可能会使程序的执行时间增加,而负载均衡等信息需 要在运行时才能知道。从现有技术文献的检索发现,为了克服这种编程的复杂度和运行时问题,出现了 线程级动态调度方法,现有的这种方法对任务进行不同粒度的线程划分,使得不同的线程 能够并行地执行在不同的核心上,进而提高了执行效率。但是该方法需要考虑数据依赖性, 实际上很难将串行执行的程序划分成并行执行的多线程任务,另外由于不同线程的数据依 赖性,还需要考虑数据同步及缓存一致性等问题,可能会使线程调度变得更加复杂,导致程 序的性能进一步下降。

发明内容
本发明的目的在于克服现有技术中的上述不足,提供一种面向嵌入式异构多核上 执行动态分配指令的方法。本发明根据系统多核的处理能力及负载情况等因素动态地分配 指令到各异构多核上执行,从而弥补了静态调度的不能动态分配资源的不足,也降低了动 态线程划分的复杂性,从而进一步提高了程序在异构多核上的执行效率。本发明是通过以下技术方案实现的,本发明包括以下步骤第一步,在载入二进制代码程序的过程中,对二进制代码程序进行划分处理,得到 若干基本块。所述的划分处理,是将第i条入口指令与第i+Ι条跳转指令间的程序作为第i+1 个基本块,其中0 ^ i,入口指令是跳转指令转到的指令或紧跟跳转指令后的指令。第二步,分别对每个基本块进行选择处理,得到执行每个基本块的目标处理核。所述的选择处理,包括以下步骤2. 1)得到与第i个基本块中的第j条指令A具有同等功能的指令Α* ;2. 2)得到所有处理指令A或指令A*的处理核A,进而得到同时处理第i个基本块 中每条指令的处理核集合I ;2. 3)根据ρ = 1/N,得到处理核集合I中每个处理核执行每条指令的执行性能,并 将每个处理核执行每条指令的执行性能相加,得到该集合中每个处理核执行第i个基本块 的平均性能,其中P是处理器执行指令的执行性能,N是该处理器执行该指令所需的指令 周期数;2. 4)根据η = P/L,得到每个处理核的性能负载比,其中m是性能负载比,L是该 处理核的运行负载,P是该处理核执行第i个基本块的平均性能;2. 5)从处理核集合I中选出性能负载比最大的处理核作为第i个基本块的目标处理核。第三步,对第二步得到的目标处理核相应的基本块进行翻译处理,得到在该目标 处理核上翻译后的二进制代码。所述的翻译处理,包括以下步骤3. 1)当高速缓存中存在已翻译至该目标处理核的二进制代码时,直接执行3. 3); 否则,执行3. 2)后再执行3. 3);3. 2)将该基本块动态的翻译成该目标处理核处理时对应的二进制代码;
3. 3)当二进制代码与正在执行的前序基本块存在数据依赖性时,执行3. 4)后再 执行3. 5);否则,直接执行3. 5);3. 4)前序基本块执行结束后,得到相应的处理核上的执行结果,当前序基本块被 分配到其它处理核上执行时,则切换系统上下文;3. 5)在该目标处理核上执行该基本块对应的二进制代码。第四步,统计各基本块的执行频率,将执行频率大于阈值T的基本块标记为热点 基本块,并把热点基本块翻译后的二进制代码缓存至高速缓存中。第五步,返回第二步,进行下一个基本块的动态调度。与现有技术相比,本发明的有益效果是无需充分了解异构多核的指令特征,编译 器也因此获得了平台透明性,不需要针对不同的体系架构编写程序或编译不同的二进制代 码。同时,该方法在具有通用指令集的异构多核系统中,发挥动态指令调度的功能,根据系 统多核的处理能力及负载情况等因素动态地分配指令到各异构多核上执行,从而弥补了静 态调度的不能动态分配资源的不足,也降低了动态线程划分的复杂性,从而进一步提高了 程序在异构多核上的执行效率。本方法不需要进行线程划分,在无数据依赖的情况下能够 最大程度地并行,因此降低了大约15%的线程同步开销。


图1是实施例的方法流程示意图。
具体实施例方式以下结合附图对本发明的方法进一步描述本实施例在以本发明技术方案为前提 下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述 的实施例。实施例如图1所示,本实施例包括以下步骤第一步,在载入二进制代码程序的过程中,对二进制代码程序进行划分处理,得到 若干基本块。所述的划分处理,是将第i条入口指令与第i+Ι条跳转指令间的程序作为第i+1 个基本块,其中0 ^ i,入口指令是跳转指令转到的指令或紧跟跳转指令后的指令。本实施例中根据二进制程序代码的跳转指令,定义基本块的入口指令和出口指 令,每一个基本块是一组顺序执行的指令序列,入口指令到出口指令间的指令代码划分为 一个基本块。基本块的入口指令为基本块的第一条指令,即跳转指令之后的指令或跳转到 的指令,出口指令为其它基本块入口指令的上一条指令或跳转指令。不同的基本块之间保 持前后偏序关系。第二步,分别对每个基本块进行选择处理,得到执行每个基本块的目标处理核。所述的选择处理,包括以下步骤2. 1)得到与第i个基本块中的第j条指令A具有同等功能的指令Α* ;2. 2)得到所有处理指令A或指令A*的处理核A,进而得到同时处理第i个基本块 中每条指令的处理核集合I ;
2. 3)根据ρ = 1/N,得到处理核集合I中每个处理核执行每条指令的执行性能,并 将每个处理核执行每条指令的执行性能相加,得到该集合中每个处理核执行第i个基本块 的平均性能,其中P是处理器执行指令的执行性能,N是该处理器执行该指令所需的指令 周期数;2. 4)根据η = P/L,得到每个处理核的性能负载比,其中m是性能负载比,L是该 处理核的运行负载,P是该处理核执行第i个基本块的平均性能;2. 5)从处理核集合I中选出性能负载比最大的处理核作为第i个基本块的目标处理核。第三步,对第二步得到的目标处理核相应的基本块进行翻译处理,得到在该目标 处理核上翻译后的二进制代码。所述的翻译处理,包括以下步骤3. 1)当高速缓存中存在已翻译至该目标处理核的二进制代码时,直接执行3. 3); 否则,执行3. 2)后再执行3. 3);3. 2)将该基本块动态的翻译成该目标处理核处理时对应的二进制代码;3. 3)当二进制代码与正在执行的前序基本块存在数据依赖性时,执行3. 4)后再 执行3. 5);否则,直接执行3. 5);3. 4)前序基本块执行结束后,得到相应的处理核上的执行结果,当前序基本块被 分配到其它处理核上执行时,则切换系统上下文;3. 5)在该目标处理核上执行该基本块对应的二进制代码。本实施例中利用二进制翻译技术将原二进制代码映射到目标处理核的指令,存在 两种情况一种情况是指令映射到目标处理核的指令的结构类似,它们存在一一对应关系, 并能完成同样的功能;另一种情况是目标处理核上拥有一条或一组更有优势的指令具备与 原基本块中一组指令等价的功能,比如Intel的AVX(高级矢量扩展指令集)。翻译后的指 令或指令组拥有更高的执行效率或功耗比。第四步,统计各基本块的执行频率,将执行频率大于阈值T的基本块标记为热点 基本块,并把热点基本块翻译后的二进制代码缓存至高速缓存中。本实施例能直接从高速缓存中取出频繁执行的代码,从而大大降低了代码翻译映 射的开销。第五步,返回第二步,进行下一个基本块的动态调度。本实施例在指令级动态优化的过程中,目标处理核的选择、二进制指令的翻译映 射以及处理核上代码的执行组成流水线结构,明显降低了指令分配到异构多核的切换开 销,与动态线程级调度方法相比,本方法不需要进行线程划分,在无数据依赖的情况下能够 最大程度地并行,因此降低了大约15%的线程同步开销。另外,采用高速缓存翻译后的目标 处理核代码,进一步降低了开销,提升了系统性能,在一种具有DSP处理核的芯片上进行视 频压缩例程运算,平均达到了 1.8倍的加速比。
权利要求
一种面向嵌入式异构多核上执行动态分配指令的方法,其特征在于,包括以下步骤第一步,在载入二进制代码程序的过程中,对二进制代码程序进行划分处理,得到若干基本块;第二步,分别对每个基本块进行选择处理,得到执行每个基本块的目标处理核;第三步,对第二步得到的目标处理核相应的基本块进行翻译处理,得到在该目标处理核上翻译后的二进制代码;第四步,统计各基本块的执行频率,将执行频率大于阈值T的基本块标记为热点基本块,并把热点基本块翻译后的二进制代码缓存至高速缓存中;第五步,返回第二步,进行下一个基本块的动态调度。
2.根据权利要求1所述的面向嵌入式异构多核上执行动态分配指令的方法,其特征 是,第一步中所述的划分处理,是将第i条入口指令与第i+Ι条跳转指令间的程序作为第 i+1个基本块,其中0 ^ i,入口指令是跳转指令转到的指令或紧跟跳转指令后的指令。
3.根据权利要求1所述的面向嵌入式异构多核上执行动态分配指令的方法,其特征 是,第二步中所述的选择处理,包括以下步骤(2. 1)得到与第i个基本块中的第j条指令A具有同等功能的指令Α* ; 2. 2)得到所有处理指令A或指令A*的处理核A,进而得到同时处理第i个基本块中每 条指令的处理核集合I ;(2. 3)根据ρ = 1/N,得到处理核集合I中每个处理核执行每条指令的执行性能,并将每 个处理核执行每条指令的执行性能相加,得到该集合中每个处理核执行第i个基本块的平 均性能,其中P是处理器执行指令的执行性能,N是该处理器执行该指令所需的指令周期 数;(2. 4)根据η = P/L,得到每个处理核的性能负载比,其中η是性能负载比,L是该处理 核的运行负载,P是该处理核执行第i个基本块的平均性能;(2.5)从处理核集合I中选出性能负载比最大的处理核作为第i个基本块的目标处理核。
4.根据权利要求1所述的面向嵌入式异构多核上执行动态分配指令的方法,其特征 是,第三步中所述的翻译处理,包括以下步骤(3.1)当高速缓存中存在已翻译至该目标处理核的二进制代码时,直接执行3.3);否 则,执行3. 2)后再执行3. 3);(3. 2)将该基本块动态的翻译成该目标处理核处理时对应的二进制代码; 3.3)当二进制代码与正在执行的前序基本块存在数据依赖性时,执行3. 4)后再执行 (3.5);否则,直接执行3. 5);(3. 4)前序基本块执行结束后,得到相应的处理核上的执行结果,当前序基本块被分配 到其它处理核上执行时,则切换系统上下文;(3. 5)在该目标处理核上执行该基本块对应的二进制代码。
全文摘要
一种计算机技术领域的面向嵌入式异构多核上执行动态分配指令的方法,包括以下步骤对二进制代码程序进行划分处理,得到若干基本块;分别对每个基本块进行选择处理,得到执行每个基本块的目标处理核;对得到的目标处理核相应的基本块进行翻译处理,得到在该目标处理核上翻译后的二进制代码;统计各基本块的执行频率,将执行频率大于阈值T的基本块标记为热点基本块,并把热点基本块翻译后的二进制代码缓存至高速缓存中。本发明根据系统多核的处理能力及负载情况等因素动态地分配指令到各异构多核上执行,从而弥补了静态调度的不能动态分配资源的不足,也降低了动态线程划分的复杂性,从而进一步提高了程序在异构多核上的执行效率。
文档编号G06F15/16GK101923492SQ20101025126
公开日2010年12月22日 申请日期2010年8月11日 优先权日2010年8月11日
发明者伍倩, 唐飞龙, 娄林, 朱寅, 沈耀, 过敏意, 马曦 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1