面向异种多处理器的全局编译程序的制作方法

文档序号:6574321阅读:260来源:国知局
专利名称:面向异种多处理器的全局编译程序的制作方法
技术领域
本发明涉及在由多个异种处理器单元构成的多处理器系统中、生成能够使该多个处理器单元高效动作的执行程序的编译方法以及编译程序。
背景技术
由于通过半导体制造技术的进步引起的元件的微小化,能够集成庞大数目的晶体管。与此同时处理器的高频化也正在发展,但是由于动作时电力的增加、另外由泄漏电流引起的待机时的电力的增加,在通过现有技术的处理器一路走来的动作频率的提高和逻辑方式的改善所实现的性能提高上开始出现界限。另一方面,汽车的导航系统、便携电话、数字电视等,同时处理图像、声音、数据库信息等多种数据的数字民用设备面市,强烈要求在短的时间而且以低的电力处理特性不同的庞大的数据。
因此现在,作为实现性能改善和低电力化的手段,通过把多个用现有技术的单一芯片提供的通用处理器(CPU)集成在多个单一芯片上、并行进行处理,即使不提高动作频率也能得到高运算性能的多处理器系统前景广阔。将来,通过微小化的进一步发展,预测可能在单芯片上集成100~1000个PU。另外,特别在面向嵌入设备的系统中,大多要处理无线或者图像、声音等定型的数字信号处理、作为性能改善和低电力化并存的方法,现在提出了在集成多个同一通用处理器(CPU)、亦即用同一命令集构成以及运算性能相同的通用处理器的同种的多处理器系统外,除多个CPU外、在多个单一芯片上搭载能够以非常高的效率(高速而且低的电力)处理某特定处理的专用处理器、加速器这些命令集不同的、各种各样种类的PU,特别以一定的应用作为对象,目标为高运算效率的异种多处理器系统(HCMP)。作为专用处理器的一例,有非专利文献1那样的可动态再构成的处理器(DRP)。
在这样的多处理器系统中,为得到与PU数成比例的运算性能,需要使装载的PU同时运行来处理程序。但是,因为通常的输入程序其处理以时间序列逐次记述的,所以尽管装载多个PU,也不能得到与该多个PU成比例的期待的运算性能。作为为解决该问题的一种方法,需要程序开发者自己考虑程序的并行性,根据使该程序执行的多处理器系统的结构,附加为使用多个PU执行该程序的并行化代码。但是,本方法在PU是几个的系统中有效,但是在将来的集成数十~数千数目的PU的系统中,另外特别是PU是异种构成的HCMP的场合,在开发时间、有效性能方面是不实用的。
<公知例多粒度并行化编译程序>
因此,提出了在同种多处理器中,自动抽出程序的并行性,向多个PU分散处理,提高处理性能的自动并行化编译程序。亦即,已经在研究能够解析输入程序,从该程序中抽出可并行动作的部分,把该部分分配给多个PU同时执行的、自动并行化编译程序。例如,在专利文献1中公开了通过解析输入源程序,把该程序分割为子程序或者循环等各种粒度的块(任务),解析该多个任务之间的并行性,同时,把任务和它们访问的数据分割为适合超高速缓冲存储器或者本地存储器的大小,对于各PU使其最佳分配相应任务,这样来生成高效运行多处理器系统的目标程序的编译方式。另外,在专利文献2中公开了支持多粒度并行处理的功能的芯片多处理器的体系结构。
<公知例非对称多处理器、电力调度>
另外,在专利文献3中公开了在异种多处理器(HCMP)中,作为为发挥该异种结构的处理器群的性能的任务分配方法,在图像处理等预处理的过程判明的应用中,通过按照各处理的特性组合CPU或者DSP等种类不同的多个处理器,预先测定给出在相应处理器上的处理时间或者消费电力信息,通过该信息动态给相应各处理器分配一系列处理的方法。
<公知例自动矢量编译程序>
另外,在HCMP中需要对于每一种处理器生成专用的执行程序,但是作为其生成方法,例如在专用处理器是矢量运算器的场合,在非专利文献2以及非专利文献3中公开了通过数据依存解析抽出通过程序可进行矢量运算的部分(循环),生成矢量运算命令的自动矢量编译程序。
专利文献1特开2004-252728专利文献2特开2001-175619
专利文献3特开2004-252900非专利文献1津野田等“面向数字媒体的再构成型处理器FE-GA的概要”,电气电子信息通信学会技术报告,RECONF-非专利文献2田中、岩澤“用于矢量计算机的编译技术”,信息处理,第31卷,第6号,平成2年6月5日发行非专利文献3Kuck,D.J.,等人,Dependence Graphs and CompilerOptimizations,Proc.8thAnnual ACM Symposium on Principles of ProgrammingLanguages,pp.177-189(1981)发明内容现在,在产生诸如汽车的导航系统、便携电话、数字电视等,同时处理图像、声音、数据库信息等多种数据的新的应用中,为以对于各数据最适合的方法同时处理各种各样种类的输入数据,认为处理器装载多种PU的HCMP是最有前途的。在现有技术的多处理器系统中,如专利文献2中公开的那样,是装载多个相同结构的PU的同种处理器系统。但是,这样在多种应用同时在多种PU上被处理的将来的异种多处理器系统中,为与装载的PU的种类和数目成比例得到处理性能,发明人注意到必须进行考虑了PU的种类的程序的并行化和配置。
另外,在现有技术中,为在多个PU上高效执行程序,为得到为对于小规模的程序或者处理序列经常能够固定决定的应用进行调度的执行时间等的调度信息,需要在该系统上一次执行程序进行测定,需要以该测定值作为基础开发者预先手动生成相应调度信息。在这种场合,在事前处理内容或者顺序不明的一般的程序的场合,特别是规模大的场合,事前手动生成该信息困难。另外,在PU的种类或者数量增加的场合手动生成该信息也同样困难。因此,发明人注意到通过在编译程序时,根据PU的结构编译程序预先估计预处理时间,关于在编译时能够静态决定处理顺序的部分决定预处理过程,另外,关于不到执行时不能决定处理顺序的部分,编译程序生成动态进行根据包含执行时间的处理信息的调度的程序,这样,就能够在用多种PU构成的多处理器系统上高效处理一般的程序。
因此,本发明的目的在于,通过提供编译程序和可使其最优化的面向异种多处理器的并行编译系统,用户能够不意识到与HCMP一致的并行化,在短时期内最大限度发挥HCMP的性能,所述编译程序,在装载多种PU的HCMP中,通过从成为处理对象的输入程序中根据用户的指定,抽出用该HCMP具有的专用处理器(或者加速器)能够处理的程序部分,或者生成面向该专用处理器的执行代码的编译程序在该专用处理器上可高效执行的部分,以包含该指定以及该抽出的任务的形式,并行化编译程序自动抽出具有并行性的任务,按照各PU的特性配置相应任务,由此,使相应PU高效运行,进一步估计该PU的处理量,这样来生成使动作频率和电源电压优化的代码,附加在目标程序上。
本发明提供一种全局编译程序,其为在异种多处理器上把程序分割为与相应处理器装载的各种处理器单元的处理特性一致的程序分割单元。另外,还提供一种全局编译程序,其为这样的单元即为使分割后的程序能够有效利用各种处理器的性能,使该多个处理器单元同时并行动作,这样来调度所述分割程序,以使能高效进行处理。
作为其具体的方法,在具有多个单一或者多种处理器单元的异种多处理器中,把所述输入程序,在对于所述系统具有的每一种处理器单元预先准备的所述处理器单元专用的代码生成编译程序中,解析所述输入程序,由此,抽出对于所述每一处理器单元可执行的程序的部分,生成指定该程序部分的处理处理器信息。另外,进行所述输入程序的解析后抽出该输入程序的并行性,根据所述处理处理器信息,进行对于所述处理器单元的进行程序部分的分配(调度)的处理、和把所述分配的程序部分作为所述每一处理器单元的输出代码输出的处理。在使计算机执行以上的处理为特征的面向异种多处理器的全局编译程序中,解决本课题。
另外,在所述全局编译程序中,通过进行把指定要执行程序的部分的处理器的所述处理器信息作为指示语句在输入程序中插入的处理,解决课题。
另外,在所述全局编译程序中,除所述处理器信息之外,还进行把在所述处理器中执行时的执行时间、数据传送时间、控制时间等作为成本信息生成的处理,由此来解决课题。
再者,通过进行把所述成本信息作为指示语句插入输入程序中的处理,解决课题。
根据本发明,在集成多种PU的多处理器系统中,通过使相应PU高效动作的程序的分割配置以及生成控制代码的多个编译程序联合程序并行化方法,能够最大限度有效利用该处理器系统的性能,同时能够以低电力高效率进行处理。再有,软件开发者不用意识到处理器的结构,就能够在短的时间内制作高效率的程序。


图1是说明成为执行代码的生成对象的异种多处理器(HCMP1)的结构的框图。
图2a是表示HCMP1全局编译程序的处理过程的一例的流程图。
图2b是表示HCMP1全局编译程序的处理过程的另一例的流程图。
图2c是表示HCMP1全局编译程序的处理过程的另一例的流程图。
图3是表示输入程序例子的图。
图4是说明HCMP1硬件结构信息的框图。
图5a是说明面向各种处理器的代码生成编译程序的图。
图5b是说明面向各种处理器的代码生成编译程序的图。
图5c是说明面向各种处理器的代码生成编译程序的图。
图6是表示面向DSP的代码生成编译程序输出结果的图。
图7是表示面向DRP的代码生成编译程序输出结果的图。
图8是表示对于用户指定块的成本信息的指定结果的图。
图9是表示并行化编译程序的处理过程的一例的流程图。
图10是表示编译程序生成的任务间依从关系图的宏任务图表。
图11是表示HCMP任务调度的结果的时间图。
符号说明200~202程序203、205、206执行代码204结构构成信息207、208编译信息231执行概要信息
210~212、220处理230面向各种处理器的库231成本信息300~303、310、311、320~323指示语句400输入程序401~411处理412输出代码413处理420~424表500、510、520宏任务图表501~503、511~515、521~525、551宏任务522OR条件550任务间同步控制代码552任务同步控制用动态调度器代码具体实施方式
下面根据

本发明的一个实施形态。
<实施形态的全体结构>
作为本发明的实施形态,首先参照图1的框图说明作为在本发明中提供的并行编译方式的适用对象的异种多处理器系统(以下,HCMP)1的结构。在HCMP1中,用多个异种的处理器单元(PU)、共有存储器(CSM)构成。该各PU都连接到互联·网络(LBUS)上。另外,该各SM连接到LBUS上。该各PU连接对于该各PU的处理器核、存储器等各部位供给电源电压以及动作时钟的电源电压·时钟频率控制电路。在本实施形态中,PU的种类和个数,用两个通用处理处理器(CPU)、一个信号处理处理器(DSP)、两个可动态再构成的处理器(DRP)构成,但是PU的种类和数目不限于本实施形态所示,可以采取各种各样的结构。
各PU具有临时保存在该PU中处理的程序或者数据的本地存储器(或者超高速缓冲存储器)(LM)以及决定对于该PU的电源电压动作或者动作频率的频率·电源电压控制寄存器(FVR)。此外,本地存储器(LM)24被分割为映射由其他PU以及具有该LM的自身PU可访问的全局地址的空间、和映射仅该自身PU可访问的专用地址的空间。此外,在LBUS上连接的共有存储器(CSM)映射全局地址,可由全部PU访问。此外以上只不过是本发明中的适用结构的一例,作为实施方法不限于此。例如,虽然在图1中未表示,但是在LBUS上根据需要连接输入输出处理、中断处理、定时器、调试电路、等外围电路。另外,也可以考虑通过总线桥分层连接同种或者异种总线。
这样,为发挥多种PU具有的性能,需要分配使各PU并行动作、或者特别在作为专用处理器的DRP或者DSP中使有关处理器高效运行可能的处理。
<全局编译程序的结构>
图2a图示表示面向HCMP1的程序并行化以及执行代码的生成的处理的一例的流程图。输入的程序200(以下称输入程序)通常逐次记述,但是通过本流程图实施输入程序200的任务分割和并行性解析、以及调度,使能够最大限度有效利用HCMP1具有的PU。在本发明中假定把根据图2a所示的流程图的处理过程称为全局编译程序2。以下首先简单说明图2a所示的全局编译程序2的全体的流程图,接着详细说明各编译阶段中的流程。此外,图2a所示的处理,通过预先准备的计算机执行。
对于全局编译程序2的输入,成为用户使用C语言或者FORTRAN等高级语言逐次记述处理步骤的输入程序200。再有,全局编译程序2也一并输入作为目标的HCMP1的结构信息204。图3表示输入程序200的一例。输入程序200这样具有循环、子程序、条件分支等的控制结构,在HCMP1并行化编译程序中以该结构为线索用构造单位进行任务分割。
<HCMP结构构成信息>
接着在图4中表示HCMP1的构成信息的例子。在图2a所示的结构构成信息204中,把图1所示的HCMP1的构成的结构信息作为通过全局编译程序并行化必要的参数信息预先输入。作为对于结构构成信息204输入的通常的参数信息,定义PU的种类、数目、PU的对总线动作速度比、各PU具有的存储器的种类、存储器大小、以及存储器访问访问延迟、HCMP1具有的存储器种类、大小、延迟等。例如,图4的第一行,“pu 0 cpu clock=2 1dm=128KB,2cyc dsm=16KB,1cyc icache=8KB,2way”,从开始说明其意义,“PU”通过表示参数的种类表现关于处理器单元的属性。“0”表示PU号码,“cpu”作为处理器种类表示是CPU。接着“clock=2”表示PU对于该总线的速度比是2倍,“1dm=128KB,2cyc”表示保持本地数据存储器(LDM)、其大小是128KB、访问延迟是2周期。
再有,“dsm=16KB,1cyc”表示保持分散共有存储器、其大小是16KB,访问延迟是1周期,“icache=8KB,2way”表示具有8KB的2路命令超高速缓冲存储器。另外,第九行表示HCMP1具有的集中共有存储器(CSM),“onchip”意味着在芯片上装载。
亦即,通过该构成信息,HCMP1如图1所示,用通用处理器CFU×4、信号处理处理器DSP×2、以及可动态再构成处理器(DRP)×2构成,各PU保持本地存储器。此外,作为构成信息,在图4所示的以外,例如也可以考虑指定总线的构成、各PU具有的电力方式的类别等的信息。例如作为总线的网络构成,可以表示双向的的一根总线或者3根总线、环状的总线、纵横连接等。另外有总线事务处理方式(是原子事务处理,还是能够分离总线的要求和应答的分离事务处理)的指定。也可以指定各PE连接哪个总线,或者在采用集群结构的场合指定属于哪个域的总线。
另外,作为电力方式的类别,可以考虑时钟停止或者电源切断等的电力控制方式的定义或者在各方式中的电力控制时的效果的记述。本构成信息,是为导出对于在全局编译程序并行化调度时所需要的处理时间或者电力这样的成本所需。另外,在进行为并行化的程序分割时,也因为需要考虑PU具有的存储器容量,所以使用本构成文件的信息。
<全局编译程序的处理流程>
下面说明联合各面向处理器的代码生成编译程序210和并行化编译程序211、把输入程序200变换为在异种多处理器(HCMP)1上并行执行的执行代码206的、全局编译程序2的处理流程。首先,输入程序200在对于HCMP1具有的每种处理器准备的多个面向各种处理器的代码生成编译程序ACCCPL210上被顺序处理。特别,HCMP1具有的专用处理器因为命令集和通常的CPU不同,所以需要另外估计在并行化调度时所需要的处理成本,另外因为根据PU的类别可有效处理的程序结构大多受限,所以通过用对于HCMP1具有的每种处理器准备的面向各种处理器的代码生成编译程序ACCCPL210进行处理,生成下一段的并行化编译程序211需要的信息。
此外,在异种多处理器1中可以具有多个命令集不同的通用处理器。此时,也因为虽说是通用处理器然而由于结构不同、可高效处理的程序结构不同,所以也可以生成对于程序结构的执行时间等的各种信息。
亦即,ACCPL210对于输入程序200,求各种处理器中的最优处理部的指定,以及在有关处理部的有关各种处理器中进行处理时的处理时间(处理成本=执行周期数),作为对象处理器信息附加在该输入程序200上。此外,在处理阶段中的ACCPL210的输出,成为在输入程序200上附加了上述信息的程序201。另外,也可以考虑不向输入程序200附加所述对象处理器信息,除所述信息之外,用另外的文件等(209)生成表示对于该信息的该输入程序200的位置的信息。另外,在预先由用户进行的处理处理器指定等中,对于预先固定地决定处理处理器的程序部分,在该阶段另外生成面向该处理器的执行代码205中,也可在并行化调度后链接该执行代码作为面向HCMP1的执行代码。
接着,利用ACCPL210中的处理结果(对象处理器信息附加程序)201,并行化编译程序(PRLCPL)解析程序结构,抽出程序的分割和分割后的程序单位(任务)的并行性,求在通常CPU中处理时的成本,进行任务的分割,使把以并行性为基础同时可执行的处理在多个PU上缩短全体的处理时间,此时,关于在HCMP1上的专用处理器中可处理的部位,有效利用在输入程序200上附加的信息,在可判断为通过给专用处理器分配处理全体的结束时间提早的场合,对该专用处理器进行任务分配。
另外,在由于专用处理器资源的制约该专用处理器拥挤的场合,在可判断为用通常的CPU处理较早的场合,给通用处理器分配任务。对于调度的结果,对于与每一被分割的任务对应的输入程序200,通过并行编译程序插入·附加表示成为任务的标记的指示语句、表示成为处理对象的PU的指示语句(并行化信息)。另外,表示与各任务对应的程序中使用的数据的、HCMP1上的存储器配置的指示语句也一并被插入。
接着附加表示该任务分割、配置的指示语句的输入程序202,再次通过用包含通用处理器CPU以及专用处理器的每一PU类别的面向专用处理器的编译程序ACCPL210处理,生成各PU的执行代码。在向ACCCPL输入的程序中,因为明确表示成为处理对象的PU,所以面向各PU的代码生成编译程序,可以仅解析指定各编译程序作为对象的PU中的处理的部分,变换为执行代码203。
此外,为进一步进行调度全体的最优化,也可以把用并行化编译程序PRLCPL211生成的调度信息等的编译程序信息208、另外在ACCPL210中通过并行化编译程序PRLCPL211的基于调度的执行代码生成的结果得到的、包含更正确的成本信息的编译程序信息207,输入并行化编译程序PRLCPL211(221),再次执行调度。在想更深地进行HCMP1中的执行代码的最优化时,通过重复该处理(210),执行程序全体的最优化。
此外,如图2b所示,也可以把该编译程序信息207、208,向位于全局编译程序2的处理的开始阶段的面向各种处理器的代码生成编译程序210输入(203),再次进行通过代码生成编译程序210的面向各种处理器的任务抽出和执行时间评价。
用ACCPL210生成的执行代码203,在链接程序212中指定各程序或者数据的HCMP1上的存储器位置,另外,使用在第一阶段的用面向专用处理器的编译程序ACCPL210生成的执行代码这件事,在并行化编译程序211的输出程序202中被指定的场合,包含该执行代码,作为单一的面向HCMP1的的执行代码(目标)206进行合并。执行目标206放置在盘装置或芯片外共有存储器(CSM)上,在执行时通过加载目标代码,把每一PU的程序读入各PU中,开始执行。
此外,也可以在HCMP1芯片或者HCMP模拟器上执行,把其结果得到的任务(调度)执行时间、数据传送时间、总线利用时间、电力控制效果、超高速缓冲存储器故障率等信息作为执行程序概要信息231收集,在下次的编译中利用。亦即也可以把该执行程序概要信息输入并行化编译程序PRLCPL211,以更加缩短执行时间、另外更加降低消费电力为目的,进行调度全体的最优化。此外,如图2b所示,也可以把该编译程序信息程序概要信息231输入位于全局编译程序的流程的开始阶段的面向各种处理器的代码生成编译程序210(222),在通过代码生成编译程序210的面向各种处理器的任务的抽出和执行时间评价中利用。
<使用面向各种处理器的库的编译流程>
各种专用处理器,把记述的程序在面向各处理器的代码生成编译程序210中变换为各每一处理器的执行代码,处理该执行代码,但是不一定限于准备通过专用处理器变换为执行代码的代码生成编译程序。例如,在信号处理处理器(DSP)那样的处理器中,难于把用通常的C语言的形式书写的程序变换为面向DSP的执行代码。
一般,把实现某功能的执行代码不预先使用编译程序用汇编等作为库记述,在用户使用该处理器的场合采取调用该库的形式。另外,通常不解释程序、以硬件方式定义动作的专用处理电路,作为库定义对于该电路给予数据起动处理这样的控制动作。
这样在库中使用各种处理器的场合,全局编译程序2也能应对。具体说,如图2c所示,导入各种处理器库230。该库230存储面向各种处理器的执行代码或者控制代码、以及该处理的执行时间这样的成本信息232。用户能够在程序200中以子程序调用的形式调用库230。例如,在图3的输入程序例子中可以和“func3”的子程序调用301同样记述。此时,把成本信息232如图3的“#promga hcmp assign dsp”(300)那样用指示语句在程序中明示,或者后阶段的并行化编译程序PRLCPL211参照各种处理器库的成本信息232。并行化编译程序211以下的处理和图2a、图2b所示的流程同样。
<面向各种处理器的编译程序的处理流程>
以上为面向HCMP1的全局编译程序2的处理流程。下面说明面向各种专用处理器的编译程序的ACCCPL210的处理过程。首先,为向并行化编译程序PRLCPL211输入,所以在图5a图示生成ACCCPL210的输出程序201的处理流程。
以下作为处理器以DRP等专用处理处理器为例进行说明。ACCCPL210首先进行程序200的结构的解析,在编译程序内部生成变量或运算、分割为控制结构单位的中间代码(2101)。接着着眼于解析后的程序结构、特别是循环这样的结构,进行循环内的运算数据流或循环的迭代间的依从性解析,判定可否连续地高效率地在成为对象的PU上处理该循环(2102,2103)。例如,在如非专利文献1中那样的DRP的场合,例如把通过用8×4的ALU阵列构成的、8×4的运算器在纵向并行地而且在横向以流水线方式使用可以高效率地处理。亦即如果在循环的迭代间有并行性,则可以把ALU阵列在纵向上分割,在ALU阵列的一面上一次处理多个迭代数量。另外,在循环的代入句这样的语句级上有并行性的场合,通过以语句单位在纵向并行分割运算器,能够一次处理多个语句。另外,在语句间存在数据依从的场合,通过像以流水线方式利用ALU阵列的横向那样映射运算,对于每次一个到数个进行命令和数据的处理的CPU,能够使速度有大的提高。这样,在步骤2102、2103、2104能够进行与专用处理器的架构一致的最优化。
此外,在输入程序200内存在由用户的指示语句的场合也与其一致进行解析。作为指示语句,有指示用户应该用HCMP1上的某特定的专用处理器进行处理的指示语句。亦即,如果ACCCPL210例如是DRP用的代码生成编译程序,则假定当作为指示语句某程序·块由用户指定在DRP上的处理时,该块作为DRP处理部对待。亦即在用指示语句指定的地方(如果有用循环或者子程序等的程序构造单位指定的场合,则也有在面向该DRP的处理部的其前后用指示语句指定的场合),在DRP中作为可处理的对待,生成该部分的处理成本或者执行代码。
接着,对于判定为用该PU可处理的块,根据在该PU的结构中在中间代码级上最优化的结果,计算用该PU进行处理时对该块的处理成本(2105)。此外,该处理成本根据成为对象的PU的结构导出方法不同,而根据在通常的处理器类型中以执行程序的命令时消费的平均的时钟数进行计算。另外,在DRP等的信号处理处理器中,如果知道成为处理对象的数据量,则根据流过数据总线上的运算器的数据供给的周期数,能够计算出正确的时钟数。另外,在专用处理器是矢量运算器的场合,可以使用在非专利文献2中公开的通过自动矢量化编译程序的程序的矢量化技术。矢量化技术,通过进行循环结构的数据依从分析,进行循环的矢量化判定,对于可矢量化的部位插入矢量运算命令。决定为矢量化的程序变换是否可能的方法,如非专利文献3中公开的那样通过使用数据依从图表是可能的。另外,处理成本通过成为矢量命令以及运算对象的数据数,可以作为矢量运算时钟数得到。
此外,专用处理器如上述那样,通常成为具有多个运算器群和连续供给数据的路径,运算器控制或者数据供给控制由分开设置的顺序器和控制用处理器进行。亦即,需要向该处理器上的存储器从CSM或者其他的处理器内的本地存储器等、专用处理器外部的存储器传送数据的、进行决定从专用处理器内的存储器向运算器的数据的供给、或者决定运算器的功能的程序供给、决定供给运算器的功能或者数据的定时的控制的时间,代码生成编译程序210例如也包含从CSM对于该PU内的本地存储器的数据加载时间、为设定该PU上的运算器功能所需要的控制时间等,决定处理成本。计算出来的处理成本,对于输入程序作为指示语句附加(2106)。
此外,也可以把以上计算出来的处理成本作为编译信息207另外输出。在图5b的步骤2111~2116中表示生成编译信息207的流程。所述编译信息207,被用于如上述通过再次用并行化编译程序PRLCPL211处理(220)来最优化程序全体。
另外,代码生成编译程序211除在输入程序200上附加成本等信息外,生成有关程序执行代码、数据传送·专用处理器控制代码。在图5c的步骤2121~2126中表示生成执行代码的面向各种处理器的代码生成编译程序处理流程。
<面向各种处理器的编译程序输出的程序>
首先说明图3所示的、向面向各种处理器的代码生成编译程序210输入、遵从上述处理过程解析的输入程序。在图3的输入程序上存在来自用户的指示语句。指示语句,是用“#pragma HCMP1”这样的关键字开始的行。300的“#pragma HCMP1 assign dsp”指定紧跟该指示语句后面的子程序“func3(d,e,f)”(301)是给DSP分配处理。亦即,所述子程序表示在DSP上的处理是可能的,同时用户指定在DSP中的处理。此外,在判定即使有本指示而并行化编译程序例如DSP因为在处理其他任务中所以用通常CPU处理结束时间快的场合,结果有时用CPU处理,不一定限于强制用通过该指示语句指定的处理器进行处理。另外,用图3的302“#pragma HCMP1 assign drpprocess_a_01”以及303的“#pragma assign process_a_01”围起来的部分指定给DRP分配处理。指示语句的末尾成为指定的唯一的ID,如前例那样有用对于循环或者分支的构造单位指定的方式,以及另外用指示语句指定开始点和结束点的方式。
接着在图6中表示对于所述输入程序200首先在面向DSP的代码生成编译程序中进行处理的结果。在面向DSP的代码生成编译程序中,由程序构造确定在DSP中可处理的块,同时用DSP在输入程序中插入处理该块时的成本。例如图6的310“#pragma HCMP1 exec dsp exec_cyc=700,000data=20,000”表示对于用下行311的“#pragma HCMP1 assign dsp”指定的DSP处理块的、通过面向DSP的代码生成编译程序计算出来的处理成本。“exec_cyc=700,000”表示执行时间花费700K周期,另外“data=20,000”表示数据传送时间花费20K周期。
接着在图7中表示把通过面向DSP的代码生成编译程序210的输出程序输入到面向DRP的代码生成编译程序、处理(201)的结果。例如图7的320“#pragma HCMP1 exec drp exec_cyc=200,000data_cyc=10,000config_cyc=3,000”表示对于用321“#pragma HCMP1 assign drp”指定的DRP处理块的、通过面向DRP的代码生成编译程序计算出来的处理成本。“exec_cyc=200,000”表示执行时间花费200K周期,“data_cyc=10,000”表示数据传送时间花费10K周期,“config_cyc=3,000”表示在DRP用的程序信息(配置)的加载上花费3K周期。另外,在判定某块可由多个专用处理器处理的场合,面向可处理的各个专用处理器的成本以多行插入。例如,图7的322“#pragma HCMP1 exec drp”以及323“#pragma HCMP1 exec dsp”被连续插入,这表示下行的循环用DRP以及DSP两者都可执行。并行化编译程序211根据双方的执行成本以及调度时的各PU的状况,最终决定分配该循环的PU。
另外,也可以根据全局编译程序选项的指定,用户用“#pragma HCMP1assign***”明确指定处理处理器,仅求该处理处理器的成本,插入指示语句。图8表示根据本方法处理图3的输入程序的结果(成本信息209)。
<并行化编译程序的处理流程>
下面说明在全局编译程序2中的并行化编译程序211的处理流程。图9表示并行化编译程序211的处理流程。
<宏任务的生成>
用C语言或者Fortran等高级语言记述的逐次构造的输出程序201,首先通过并行化编译程序211解析该程序的结构,分割、生成重复块(RBRepetition Block)、子程序(SBSub Routine)、伪赋值语句块(BPABlockof Pseudo Assignment statements)三种粒度大的宏任务(MT)(401)。RB是循环块中各阶层的最外侧的循环,BPA是考虑调度开销或者并行性、融合或者分割由赋值语句组成的多个基本块的块。如图3的“#pragma HCMP1 assign***”那样,指定专用处理器中的处理的块,作为一个宏任务对待。
<数据依从·控制流程解析>
接着,并行化编译程序211,解析分割生成的该宏任务间的控制流程以及数据依从性,抽出MT的执行顺序关系(402)。因为输入程序逐次记述,所以通过通常的编译程序的执行代码以和该程序的构造相同的逐次的顺序执行,但是在MT之间观察时大多不一定需要以记述的顺序执行。亦即,在MT之间没有控制或者数据参照的依从性的场合,特别在多处理器系统中,在多个PU上配置多个MT同时或者变更顺序,使全体的执行时间缩短进行调度很重要。为进行这样的调度,需要解析MT间的并行性。因此作为为此目的的准备,通过数据依从·控制流程解析处理402,抽出MT之间的执行顺序关系。
<循环级并行性解析>
接着并行化编译程序211,作为宏任务内的中粒度级的并行性解析,进行循环级并行化(403)。在循环级并行化403中,解析循环的重复(迭代)单位间的数据依从性,判断能否独立处理各迭代,在可能的场合把各迭代分配给多个PU进行并行处理。另外,通过把单一循环分割为多个循环提高并行性,或者通过数据的复制或者数组变量的扩张消除循环间的数据依从性,或者通过融合多个循环为单一的循环减轻循环控制需要的开销等各种方法,实现循环的并行化。
<处理成本解析>
接着并行化编译程序211,通过预先附加的指示信息求在各PU上执行生成的宏任务MT时需要的处理周期。此外,关于CPU的处理周期,通常通过参照并行化编译程序内的CPU命令成本表求(404)。作为CPU处理成本的估计方法,例如关于CPU等在表420中保存在乘法或加法等命令级需要的周期数,通过参照该表420,能够估计在有关PU上执行MT时的逐次处理周期数。
此外,在编译时存在不能决定成本的要素的场合,例如MT包含分支的场合,把分支概率作为50%进行成本计算。另外,例如在循环或者数组的大小不定的场合,使用取循环为固定次数、取数组宣告时的最大尺寸等方法。
<宏任务间并行性解析=最快执行条件解析>
编译程序211在宏任务MT的处理成本决定后,从同时解析在数据依从·控制流程解析处理402抽出的MT间的控制流程和数据依从性的结果,决定MT间的并行性,亦即能够最快执行各MT的执行的条件(最快执行条件)(405)。用图表以可视方式表示该最快执行条件的是宏任务图表(MTG)。图10表示解析图3的输入程序200生成的MTG。此外,宏任务间并行性解析结果作为宏任务图表表421在外部存储装置中保存,在后阶段的编译处理中使用。
<宏任务图表的说明>
以下说明宏任务图表MTG。本图表中的各节点表示宏任务MT,节点间的实线表示宏任务间的数据依从关系,节点间的虚线表示宏任务间的控制依从关系,节点内的小圆表示条件分支。例如从MT1_1(501)对于MT1_2(502)以及MT1_3(503)延伸实线,这表示MT1_2以及MT1_3有把执行MT1_1的结果生成的数据作为输入数据使用执行处理这样的依从关系。因此,表示作为执行顺序,MT1_2以及MT1_3在MT1_1任务结束后可以执行。
另外,因为MT1_2(502)是通过输入程序200用多个循环或者子程序的块,所以编译程序把该MT进一步以层次方式分割为多个MT。于是,在该MTG中在MT1_2中用别的层次构成MTG。MTG1_3(503)也同样。
当观看MT1_2(502)内的MTG(510)时,因为从MT1_2_1(511)向MT1_2_2(512)、MT1_2_3(513)、MT1_2_4(514)延伸实线,所以在MT1_2_1(511)结束后可以同时并行执行这3个任务512、514、515。另外,因为从MT1_2_3(513)以及MT1_2_4(514)对于MT1_2_5(515)延伸实线,所以在MT1_2_3(513)以及MT1_2_4(514)双方的执行结束的时刻可以执行MT1_2_5(515)。如上,MT1_2在执行前确定好并行顺序关系,在编译时能够静态地调度。亦即任务的PU上的执行顺序在编译时决定。
接着,当观看MT1_3(503)内的MTG(520)时,在MT1_3_1(521)内存在小圆,这表示任务MT1_3_1(521)包含分支条件。因为从小圆向MT1_3_2(523)、MT1_3_3(524)延伸有箭头的虚线,另外,表示控制依从的OR条件的点线的弧522重合,所以该条件表示在MT1_3_2或者MT1_3_3的任何一个中有分支。此外,虚线表示确定任务的执行的控制依从关系和不执行数据依从的任务的场合的条件。另外,附有箭头的虚线表示和用数据依从·控制流程解析(402)求得的控制过程相同(亦即原始的)。此外,MT1_3_1(521)的分支条件,因为当不执行该任务MT1_3_1(521)时分支方向不确定,所以需要进行对应执行时的状况的调度。
<处理器分组>
接着,编译程序,参照生成的MTG表421,在考虑HCMP1的PU资源的基础上,以通用处理器CPU为对象进行与宏任务图表的形状或者并行性对应的或者与来自用户的指定对应的处理器的分组(406)。DSP、DRP等专用处理器群在组内不包含,在各组中的处理需要时给专用处理器群随时分配任务。
亦即,解析用MTG表现的上位层的MT,例如MT1_2(502)、MT1_3(503)的形状、并行性,分组该MT的处理需要的PU,给有关组分配MT。此外,一个组成为包含为控制有关组内的特定用途处理器(DSP,DRP,BMP)的通用处理器(CPU)的集合。例如在图1所示的HCMP1结构上进行调度的场合,因为CPU是两个,所以把MT1_2和MT1_3分别分组到各一个CPU中。所述MT1_2以及MT1_3内的层次的任务组基本上对于被分组的CPU进行任务的分配。其时,在指定专用处理器的场合,判定在专用处理器中处理任务时该任务的结束时间是否比用CPU执行快,而且在能够判定该组内任务全体的处理时间为最短的场合,给指定的专用处理器分配处理。
<静态调度和动态调度>
编译程序211接着作为调度方法判断是静态调度还是动态调度(407)。关于各个调度方法的详情后述,以下简单说明。首先,如果是在MT中无条件分支能够预先决定最快执行条件的MT流程,则使用前者的静态调度,编译程序预先进行MT的调度,在编译时在任务间插入同步代码。另外如果是在MT中有条件分支,另外MT的处理时间在执行时变动等,在编译时不能预测的MT流程,则使用后者的动态调度,编译程序,通过生成执行时进行对应分支等的状况的控制的调度程序在CPU上执行,在执行时进行任务的分配。
<静态调度>
首先说明静态调度的处理流程。在静态调度中,因为在编译时已经决定了MT的分配和执行顺序,所以首先通过宏任务调度处理408,参照宏任务表421以及处理器分组表422的信息,生成进行在PU间的执行任务间的同步或者其他任务的起动等的控制信息,决定该信息的插入位置。进而还一并生成把任务程序或者任务需要的数据从其他PU的LM或者共有存储器SM加载到该PU的本地存储器LM中这样的数据传送信息。这样,通过数据本地化方法,有效利用本地存储器,使数据的传送量最小化。通过以上的处理生成的调度信息,作为宏任务调度表423在外部存储装置中保存。
接着,编译程序进行静态FV调度处理409。在本处理中,任务的并行调度的结果,对于PU成为空闲状态的部分,生成切断电源、停止时钟、或者降低时钟使电源电压下降等的电源控制代码。
<动态调度>
下面说明动态调度的处理流程。在动态调度时,由于MT内的分支条件等不确定要素在编译时不能决定调度内容。因此编译程序根据MT的处理结果在程序执行时动态生成进行调度的调度程序(410)。本程序根据处理结果进行MT的起动或者同步以及该MT需要的数据的加载。另外,进而根据在图18中说明的任务并行处理执行时的FV控制概念设定决定PU的动作频率·供给电压的动作方式。生成的调度程序作为电源·FV控制调度表424在外部存储装置中保存。
<调度代码的生成>
编译程序通过以上的处理,结束输入程序向PU的调度。把在迄今的处理中生成的调度信息作为表(421~424)在外部存储装置中保存。编译程序访问该表(421~424),读入任务的执行顺序或者数据传送信息、以及FV控制信息,对于输入程序在静态调度部上附加控制代码(调度代码),另外在动态调度部上附加调度程序(411)。
<调度的结果>
图11表示本调度结果的例子。图11对于每一PU以时间轴表示MT的调度结果。图中的斜的影线表示在静态调度中埋入的同步代码。图中的纵的影线表示为进行任务分配而用动态调度生成的调度代码。在本例中因为CPU0进行任务的起动或同步、FV电力控制等的管理,所以最初在CPU0上加载编译程序生成的控制代码550。控制代码开始在CPU0上起动MT1_1。在MT1_1处理结束后,执行编译程序生成的控制代码551,接着要处理的任务是用MT1_2以及MT1_3的下位层的MTG指定的MT1_2_1以及MT1_3_1,前者在CPU0中、后者在DRP0中执行。
此外,如上所述,因为MTG1_2不包含分支条件,所以编译时已经进行了调度(静态调度),在编译时已经向CPU0、DRP0、DRP1、DSP0调度MT。另外,因为MTG1_3包含分支条件,所以在执行时附加进行调度的程序,根据执行结果向CPU1、以及必要时向DRP、DSP的专用处理器群分配MT。
接着说明MTG1_2的MT组的调度。和MT1_2_1的执行在DRP0中结束的同时向CPU0通知MT1_2_1的处理结束。CPU0的控制代码在DRP0上起动MT1_2_2,在DRP1上起动MT1_2_3,在DSP上起动MT1_2_4。和各PU上的任务处理结束同时向CPU0通知其结束。在该时刻未处理的任务是MT1_2_5,但是MT1_2_5是DSP处理任务,在MT1_2_4结束后在CPU0内起动MT1_2_2。
接着说明MTG1_3的MT组。因为MT1_3在内部具有分支,所以若不执行任务就不知道分支方向。因此,根据执行时的状况在CPU1中执行进行任务、数据的加载、任务的起动、同步以及电力控制代码的管理的动态调度程序552。该动态调度程序552首先在CPU1上起动执行。在本例中,当假定根据MT1_3_1的执行结果向MT1_3_2分支时,MT1_3_2因为是DRP执行任务,所以本来用DRP执行能够高效率处理,但是在分配MT1_3_1时,因为DRP0、DRP1执行MT1_3的任务,所以通过求预想结束时间、决定在该任务结束后是在DRP0或者DRP1上执行,还是效率降低而在CPU1上执行。在本例中,因为DRP正在执行进程而判定在CPU1上执行结束时刻快,所以给在CPU1分配任务。
根据本发明,在集成多种PU的多处理器系统中,通过生成使该PU高效率动作的程序的分割配置以及控制代码的编译程序,能够最大限度有效利用该处理器系统的性能,同时以低的电力有效进行处理。再有,软件开发者能够无需意识到处理器的结构可在短时间内高效率制作程序。其结果,在面向强烈期望具有高的运算性能而且以低电力处理的汽车导航或者形象电话、信息家电的LSI中可以使用本发明,能够实现高质量的动画图像或者声音处理、另外图像识别或者声音识别这样的功能。另外,对于面向汽车中的信息系统、控制系统的LSI也可以使用,能够实现自动运行或者安全运行系统等。再有也可以应用于将来具有非常高的运算性能而且必须低电力的超级计算机。
权利要求
1.一种面向异种多处理器的全局编译程序,其在具有单一或者多种处理器单元的系统中,从输入程序抽出并行性,生成与所述多个处理器单元对应的目标程序,其特征在于,使计算机执行如下处理把所述输入程序,在对于所述系统具有的每一种处理器单元预先准备的所述处理器单元专用的代码生成编译程序中,通过解析所述输入程序,抽出在所述每一处理器单元中可执行的程序的部分,生成指示该程序部分的处理处理器信息的处理;进行所述输入程序的解析后抽出该输入程序的并行性,根据所述处理处理器信息,进行对于所述处理器单元的程序部分的分配的处理;和把所述分配的程序部分,作为所述每一处理器单元的输出代码输出的处理。
2.根据权利要求1所述的面向异种多处理器的全局编译程序,其特征在于,包含如下处理输出在与所述处理处理器信息对应的所述输入程序的部分中、插入了表示用所述处理器单元可执行的指示语句的中间程序的处理;和进行所述中间程序的解析后抽出程序单位的并行性,根据用所述指示语句指定的所述程序部分的处理处理器单元信息、进行对于所述处理器单元的处理的分配的处理。
3.根据权利要求1所述的面向异种多处理器的全局编译程序,其特征在于,包含如下处理在对于所述每一专用处理器单元从所述输入程序抽出可执行的部分时,生成估计出在把所述抽出的程序作为对象的在处理器单元中的执行时间的执行时间信息的处理;和进行所述输入程序的解析后抽出程序单位的并行性,使用所述执行时间信息进行对于所述处理器单元的处理的分配的处理。
4.根据权利要求3所述的面向异种多处理器的全局编译程序,其特征在于,包含如下处理输出在与所述执行时间信息对应的所述输入程序的部分中插入了表示在用所述处理器单元执行时的执行时间的指示语句的中间程序的处理;和进行所述中间程序的解析后抽出处理的并行性,使用用所述指示语句指定的所述程序部分的处理执行时间信息进行对于所述处理器单元的处理的分配的处理。
5.根据权利要求3所述的面向异种多处理器的全局编译程序,其特征在于,包含如下处理除用生成所述执行时间信息的处理求的执行时间之外,还计算所述各每一处理器单元需要的数据的共有存储器和处理器单元内的本地存储器之间的数据传送时间,并生成数据传送时间信息的处理。
6.根据权利要求5所述的面向异种多处理器的全局编译程序,其特征在于,包含如下处理生成把所述数据传送时间信息作为表示数据传送的指示语句插入与该信息对应的输入程序的部分中的中间程序的处理。
7.根据权利要求3所述的面向异种多处理器的全局编译程序,其特征在于,生成所述执行时间信息的处理,进一步包含如下处理根据成为所述对象的处理器单元的硬件体系结构,计算程序加载时间、以及所述处理器单元内的运算器控制时间,生成程序加载时间信息以及运算器控制时间信息的处理。
8.根据权利要求4所述的面向异种多处理器的全局编译程序,其特征在于,生成把所述程序加载时间信息以及运算器控制时间信息作为表示程序加载时间以及运算器控制时间的指示语句在与该信息对应的输入程序部分中插入的中间程序。
全文摘要
本发明的目的是无需意识到与异种多处理器的结构一致的并行化,而在短时间内最大限度发挥HCMP1的性能。在异种多处理器系统中,通过用编译程序自动地抽出具有并行性的任务,同时进行从成为处理对象的输入程序抽出能够用专用处理器高效率地处理的部分和处理时间的估计,由此,通过按照PU的特性配置该任务,实施使该多个PU并行、高效率运行的调度。
文档编号G06F9/46GK101086710SQ20071008482
公开日2007年12月12日 申请日期2007年2月27日 优先权日2006年6月6日
发明者笠原博德, 木村启二, 鹿野裕明 申请人:学校法人早稻田大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1