多处理器系统以及多粒度并行化编译程序的制作方法

文档序号:6566349阅读:240来源:国知局
专利名称:多处理器系统以及多粒度并行化编译程序的制作方法
技术领域
本发明涉及一种在由多个处理器单元构成的多处理器系统中,可以使该多个处理器单元高效动作的多处理器系统的硬件结构以及生成程序的编译程序。
背景技术
由于随着半导体制造技术的进步而导致的的元件的微细化,而可以集成数量巨大的集体管。与此同时,处理器的高频率化也在发展,但由于动作时功率的增加,此外还由于泄漏电流引起的待机时功率的增加,现有的处理器通过一步步地提高动作频率以及改善逻辑方式实现的性能提高开始出现局限。
因此,目前作为实现性能改善和低功率化的方法,颇具前景的的是在单片上搭载多个现有的被称为CPU、DSP的处理器单元(以下称为PU),来并行地进行处理,由此,即使不提高动作频率也可以得到较高的运算性能的多处理器系统(单片·多处理器系统)。将来,通过微细化的进一步发展,可以预测还可以在单片上集成100个~1000个PU。
在这样的多处理器系统中,为了得到与PU的数量成比例的运算性能,需要使搭载的PU同时动作来处理程序。但是,因为按时间序列逐一地记述通常的输入程序,所以即使搭载多个PU也无法得到与该多个PU成比例期待的运算性能。
作为解决该问题的一个方法,程序开发者考虑自身程序的并行性,根据执行该程序的多处理器系统的结构,需要附加用于通过多个PU执行该程序的并行化代码。但是,本方法虽然在具有数个PU的系统中有效,但在将来搭载了数十~数千个PU的系统中,此外特别是在具有不同种类的PU的结构中,在开发时间、实效性能方面是不实用的。
因此,已经进行了自动并行化编译程序的研究,该自动并行化编译程序在由结构以及运算性能相同的多个PU构成的多处理器系统中,可以对输入程序进行分析,从该程序中提取可以并行动作的部分,将该部分分配给多个PU来同时执行。例如,在特开2004-252728号公报中公开了一种编译方式,该编译方式,其对输入源程序进行分析,将该程序分割为子程序或循环等各种粒度的块(任务),对该多个任务间的并行性进行分析,并且将任务和这些任务存取的数据分割为适合超高速缓冲存储器或本地存储器的大小,将其对各个PU最佳地分配这些任务,由此,来生成使多处理器系统高效地动作的目的程序。此外,作为支持多粒度并行处理的功能的芯片多处理器的体系结构,在特开2001-175619号公报中进行了公开。
此外,为了降低功率消耗以及降低发热,在多处理器系统中需要各PU的低功率化,但是,关于单个处理器的低功率化方法,已经进行了各种各样的提案。例如,在专利第3138737号公报、特开2004-234126号公报中公开了在实时处理制约内降低处理器的动作时钟,通过动态控制与该时钟频率对应的电压提供给处理器的、频率·电压来实现低功率化的方法。
此外,在特开2004-252900号公报中公开了在判明了图像处理等预处理的顺序的应用程序中,按照各处理的特性来组合CPU、DSP等不同种类的多个处理器,并预先测定给出在该处理器上的处理时间和消耗功率信息,由此,根据该信息动态地将一连串的处理分配给该各个处理器的方法。

发明内容
目前,在汽车的导航系统、移动电话、数字电视等,产生同时处理图像、声音、数据库信息等多种数据的新应用程序的装置中,为了使用对各个该数据最佳的方法来同时处理多个种类的输入数据,可以考虑处理器搭载多个种类的PU。在现有的多处理器系统中,如上述特开2004-252728号公报所公开的那样,为搭载了多个相同结构的PU的同构的处理器系统。
但是,如此,在多个种类的PU上同时处理多种应用程序的面向未来的非同构多处理器系统中,存在以下的问题为了与搭载的PU的种类和数量成比例地得到处理性能,需要考虑PU的种类来进行程序的并行化和配置。
此外,目前,为了在多个PU上高效地执行程序,在小规模的程序或可以始终固定地执处理顺序的情况下,为了得到用于进行调度的执行时间等调度信息,需要在该系统上执行一次程序来测定处理时间等,开发者需要根据该测定值预先手动生成该调度信息,需要较大的劳力和时间。
此时,在事先处理的内容或顺序不明的一般程序的情况下,特别是在规模较大的程序的情况下,难以通过手动事先生成该信息。此外,在PU的种类或数量增加的情况下也同样难以通过手动生成该信息。
此外,在搭载了多个PU的系统中,因为担心全部处理器消耗功率增大,所以特别是在考虑到用于移动电话等移动设备、或家庭使用的数字电视等设备时,不仅需要基于现有的OS的FV(动作频率和驱动电压)控制,还需要根据基于各应用程序内的软件的各个PU的处理状况,进行极细致的电源管理和动作频率控制。
特别是需要不降低处理性能地降低消耗功率。此外,即使在执行要求实时处理的程序时,也必须既要遵守时间制约又要降低功率。
因此,本发明的目的在于提供一种在搭载多个种类的PU的多处理器系统中,从成为处理对象的输入程序中自动地提取具有并行化的任务,按照各PU的特性来配置该任务,由此使该PU高效地动作,而且,通过推测该PU的处理量来生成使动作频率和电源电压最佳化的代码,并将该代码附加给目的程序的译码器以及可以使其最佳化的多处理器系统。
因此,根据本发明,在集成了多个处理器单元的多处理器系统中,通过使该处理器单元高效动作的程序分割装置以及生成控制代码(执行代码)的编译程序,可以最大限度地发挥该处理器系统的性能,同时使处理时间最短,而且可以以低功率高效地进行处理。此外,软件开发者无需意识处理单元的结构,就可以在短时间内高效地生成程序。
此外,在对输入程序进行编译时,根据处理器单元的结构编译程序预先估计事先的处理时间,对于在编译时可以静态地决定处理顺序的部分事先决定处理顺序,此外,对于在不到执行时无法决定处理顺序的部分,编译程序生成动态地进行基于包含了执行时间的处理信息的调度的程序,由此,可以在由多个种类的处理器单元构成的多处理器系统中高效地处理一般的程序。
此外,编译程序对输入程序进行分析,在事先决定了处理顺序后估计处理时间,查看对于时间制约的该处理时间的裕度来对每个处理器单元极细致地进行电压管理、频率控制,由此可以大幅降低功率。
此外,在由不同种类的处理器单元构成的多处理器中,在为了使执行时间最小对输入程序进行并行化并且进行了调度之后,为了使各处理器单元之间处理时间最小,对每个处理器单元极细致地进行动作频率控制以及电源管理,由此,可以无损性能地使功率最佳化。


图1是表示本发明一实施方式的电源·频率生成型多处理器系统的框图。
图2是电源电压生成电路的框图。
图3是降压电路的框图。
图4是供给电压选择电路的框图。
图5是时钟生成电路的框图。
图6是时钟脉冲选择器的框图。
图7是表示多处理器系统其他例子的、汇集了电源电压生成电路和时钟生成电路的电源·频率选择型多处理器系统的框图。
图8是表示多处理器系统其他例子的、汇集了各处理器单元的FV控制寄存器的、具有FV控制表的多处理器系统的框图。
图9是表示基于FV控制的处理器单元的动作模式的说明图。
图10a表示本地存储器的FV控制,是表示由多个存储体构成本地存储器LM对每个存储体进行FV控制的例子的说明图。
图10b表示本地存储器的FV控制,是表示在本地存储器LM中对每个地址空间进行FV控制的例子的说明图。
图10c表示本地存储器的FV控制,是表示对每个在多个存储体中设定的地址空间进行FV控制的例子的说明图。
图11是由纵横开关构成本地总线时的电源控制的说明图。
图12是图11所示的本地总线LBUS的结构图。
图13是表示基于FV控制的本地存储器LM的动作模式的说明图。
图14a表示FV控制寄存器格式,是表示由四个存储体构成本地存储器LM时的寄存器格式的说明图。
图14b表示FV控制寄存器格式,是与图14a相同地表示寄存器的设定例的说明图。
图14c表示FV控制寄存器格式,是表示其他寄存器格式的说明图,是将LM设为4存储体结构,对每个控制对象分配地址的FV控制寄存器格式的例子。
图15是表示图8所示的FV设定表的格式的例子的说明图。
图16是表示FV控制寄存器的映射的整个多处理器系统的存储器映射表的说明图。
图17a表示FV控制寄存器访问的例子,是表示CPU0对DSP0的FV控制寄存器进行访问的例子的说明图。
图17b表示FV控制寄存器访问的例子,是表示CPU0对DSP0的FV控制寄存器进行访问时目标代码的例子的说明图。
图17c表示FV控制寄存器访问的例子,是表示用OS的API操作FV控制寄存器时的目标代码的例子的说明图。
图18a表示并行处理任务时的FV控制的概念,是表示宏任务并行执行依存性的宏任务图。
图18b表示并行处理任务时的FV控制的概念,表示不进行FV控制时(FULL模式)的甘特图。
图18c表示并行处理任务时的FV控制的概念,是表示使CPU持续动作时的FV控制的例子的甘特图。
图18d表示并行处理任务时的FV控制的概念,是表示暂时使CPU停止时的FV控制的例子的甘特图。
图19a表示实时制约时的FV控制,是通常处理的实时处理的甘特图。
图19b表示实时制约时的FV控制,是表示使CPU持续动作时的FV控制的例子的甘特图。
图19c表示实时制约时的FV控制,是表示暂时使CPU停止时的FV控制的例子的甘特图。
图20是表示编译程序的处理的流程图。
图21是表示输入程序的一例的源代码。
图22是编译程序生成的任务之间的依存关系图。
图23是表示任务·FV控制调度结果的时序图。
图24表示编译程序生成的代码的一个例子,是表示面向CPU0、DSP0、DRP0、BRP1的代码的说明图。
图25同样表示编译程序生成的代码的一个例子,是表示面向CPU1、DSP1、BMP0、BMP1的代码的说明图。
具体实施例方式
以下,根据附图对本发明的一实施方式进行说明。
(实施方式的全体结构)图1表示本发明一实施方式的多处理器系统的结构。在图1中,多处理器系统以多个不同种类的处理器单元(以下称为PU)10~17、和这些共享存储器(以下成为SM)18为主体构成。该各个PU10~17经由各自的总线接口(BIF)27与本地总线(称为LBUS)19连接。SM18与LBUS19连接,可以从各PU10~17进行访问。该各PU10~17连接了对该PU供给电源电压以及动作时钟的电源电压生成电路(DCGEN)20以及时钟生成电路(CLKGEN)21。此外,本多处理器系统表示由不同种类的处理器单元构成的非同构多处理器系统的例子。
在本实施方式中,表示由PU的种类以及数量为两个通用处理处理器(以下为CPU)10、11,两个信号处理处理器(以下为DSP)14、15,两个动态可重构处理器(以下为DRP)16、17,以及两个位运算处理处理器(以下为BMP)12、13构成的例子。此外,上述PU的种类以及数量并不限于本实施方式表示的例子,可以采用各种各样的结构。此外,可以是仅由现有相同种类的PU的结构(例如仅由四个CPU构成)。此外,在本实施方式中,将DSP(0、1)14、15,DRP(0、1)16、17以及BMP(0、1)作为特定用途处理器单元,将CPU(0、1)10、11作为通用处理器单元。
此外,动态可重构处理器16、17是指可以动态地重新构成处理电路的处理器,可以在限定的内核内虚拟地变更电路。
上述各PU10~17,具备暂时保存各PU处理的程序、数据的本地存储器(或者超高速缓冲存储器)(LM)24、以及用于进行频率·电源电压(FV)控制和PU间同步控制的系统控制寄存器(R)25,频率·电源电压(FV)控制决定对该PU的供给电压(VL)、动作频率(FL)。此外,本地存储器(LM)24被划分为对其他PU以及具有该LM的自身PU可以访问的全局地址进行了映射的区域,和对只有该自身PU可以访问的专用地址进行了映射的区域。此外,与LBUS19连接的共享存储器(SM)18对全局地址进行了映射,可以从多个PU进行访问。此外,以上只是本发明应用构成的一个例子,作为实施方式并不限于此。例如,虽然在图1中没有表现,但根据需要在LBUS19上可连接输入输出处理、中断处理、计时器、除错电路等周边电路。此外,还可以经由总线桥分级连接相同种类或不同种类的总线。
此外,在各个PU10~17共享的SM18中具备系统控制寄存器(R)181,其用于设定对SM18供给的供给电压(VL)、动作频率(FL),进行频率·电源电压(FV)控制。此外,在相互连接所述PU以及所述SM的本地总线19中具备系统控制寄存器R191,其用于设定对LBUS供给的VL、FL,进行FV控制。此外,还可以取代该系统控制寄存器(R)181,对各个PU10~17的系统控制寄存器(R)25设置SM18以及LBUS19的FV控制用寄存器。此外,系统控制寄存器(R)181由PU10~17中的某一个进行设定。
此外,虽然表示了在一个芯片(LSI)上构成上述PU10~17的情况,但还可以将构成PU10~17的多个LSI进行结合,来作为一个芯片或模块。
此外,SM18可以由每个种类的处理器(每个CPU、DSP、DRP、BMP)共享,例如,如后述的图10a~图10c所示,将SM18的区域分割为存储体,也可以由每个种类的处理器共享各存储体。或者可以由多个PU共享SM18的一部分。
(电压·频率可变电路)然后,对与各个PU连接的电源电压生成电路(DCGEN)20以及时钟生成电路(CLKGEN)21的结构进行说明。
图2表示DCGEN20的结构。DCGEN20由把外部供给的通常的电源电压(VD)降压(或者升压)为预先指定的多个供给电压(VL)205的电路(DCCNV)206、从所生成的多个该供给电压选择向PU供给的电压的供给电压选择电路(VDSEL)203、以及切断电源电压的电路(后述)构成。
此外,降压(或者升压)电路(DCCNV)206,包含多个电压降低部,例如如图2所示,由原样供给电源电压VD的电路22’、将电源电压VD降低至3/4的降压电路(LVCNV)201、将电源电压VD降低至1/2的降压电路(LVCNV)202构成。
各PU10~17,根据在该PU具有的系统控制寄存器(R)25内的FV控制寄存器中设定的FV(驱动频率以及驱动电压)模式经由控制线路(DCCL)204控制供给电压选择电路(VDSEL)203,由此,从降压电路(DCCNV)206生成的多个电压中选择某一个电压,并将该选择出的供给电压VL供给给对应的PU10~17。此外,FV控制寄存器被设定在系统控制寄存器25内的规定区域中。
图3表示降低电源电压的电路(LVCNV)的结构的一例。上述图2的降压电路LVCN201、202,由决定供给电压(3/4VD)的参照电压生成电路(VREF)207以及降压至参照电压指定的电压对PU供给电流的电源生成电路(VGEN)208构成,将电源生成电路208的输出输入给图2的供给电压选择电路203。
降压电路LVCNV输出电压(VCNV)由决定参照电压的参照电压生成电路(VREF)207内的nMOSFET的级数决定,决定LVCNV的结构,以使供给由FV控制寄存器指定的电压。从通过以上电路降压的多个电压中选择由来自PU的由控制线204指定的电压,向各PU10~17进行输出(205)。
图4表示供给电压选择电路(VDSEL)203的结构的一例。供给电压选择线路(VDSEL)203由控制信号解码部2031和电压选择开关2032构成。此外,通过在PU的源电压供给部中插入阈值高的nMOSFET209,可以降低切断该PU的电源时流动的泄漏电流。此外,图3、图4的结构不只是用于实现降压电路LVCNV功能的一个结构,还可以应用其他各种各样的电源电压生成电路方式。
然后,在图5中对时钟生成电路(CLKGEN)21的结构的一例进行说明。CLKGEN21,由时钟脉冲选择器(CLKSEL)214构成,该时钟脉冲选择器,从把内部时钟FC(23)降低为该内部时钟的1/2、1/4等将内部时钟FC降低为整数分之一的分频电路212、213,以及分频生成的多个时钟中,选择向该PU进行供给的时钟(FL)216。此外,在PLL(Phase Locked Loop)电路211中,通过对从外部输入的系统时钟按指定的倍增率进行倍增生成内部时钟FC(23)。
图6表示时钟脉冲选择器(CLKSEL)214的结构的一个例子。CLKSEL214由输入控制信号CKCL的解码部2171和时钟信号选择部2172构成。各个PU通过该PU具有的FV控制寄存器的模式经由控制线路(CKCL)215控制DCSEL214,由此从生成的多个时钟中选择指定的FL,接受该时钟FL216的供给。
此外,除了上述图1所示的结构之外,如图7所示,可以是以下的结构对多个PU(或者全部PU)各附加一个变更电源电压、时钟脉冲的电路(DCCNV206、CLKCNV217),并且还在各个PU一侧附加对生成的多个种类的电源电压以及时钟脉冲进行选择的电路(203、214)。在图7的例子中,表示两组电源电压生成电路206和时钟生成电路217分别对四个PU供给电力和时钟的情况。
如此,生成、供给电源电压以及时钟脉冲的电路可以采取各种结构,其结构并不限于上述表示的结构。例如,可以为以下的结构对多个PU(或者全部PU)附加一个对电源电压进行转换的电路DCCNV206,并在PU一侧对每个PU附加生成时钟脉冲的电路CLKCNV217。此外,例如可以为以下的结构对多个PU(或者全部PU)附加一个生成时钟脉冲的电路CLKCNV217,并在PU一侧对每个PU附加对电源电压进行转换的电路DCCNV206。此外,例如可以为以下的结构不在芯片内搭载DCCNV206,输入在芯片外部生成的多个种类的电源电压,由VDSEL选择供给希望的供给电压VL205。
此外,作为设定FV控制模式的单元,除了图1和图7所示的各PU具有进行该PU的FV控制的FV控制寄存器(系统控制寄存器(R)25)的结构之外,如图8所示,还可以采用将总括保存各PU10~17的FV控制模式的FV控制表(FVTBL)26与LBUS19连接的结构。在图8中,把图1中在系统寄存器25中包含的FV控制寄存器,集合为与本地总线LBUS19连接的FV控制表26。
FV控制表(FVTBL)26可以由各个PU10~17访问,且可以设定在共享存储器SM的一部分中,也可以由与共享存储器SM独立的存储器(或者寄存器)构成。
(总线IF)如上,因为各个PU10~17可以单独地设定电源电压,所以在与该PU连接的LBUS19之间,信号的电压等级不同。因此,在PU10~17与LBUS19之间连接的总新接口(BIF)27具备信号信号电平转换电路(省略图示),进行总线LBUS19和PU10~17之间的信号电平转换。
(针对PU的电压·频率模式的给予方法)然后,对决定由电源电压生成电路(DCGEN)20以及时钟生成电路(CLKGEN)21生成的电源电压(VL)205以及动作时钟(FL)216的硬件结构进行说明。
在设计时预先决定电源电压生成电路(DCGEN)20以及时钟生成电路(CLKGEN)21的动作模式(供给的VL、FL值),各个PU针对所述电路根据该PU具备的FV控制寄存器的值,经由控制线路DCCL、CKCL进行指定。关于VL、FL的设定方法在后面进行详细地叙述,编译程序生成设置FV控制寄存器的控制代码,执行该代码的通用处理器CPU0或CPU1,对存储器映射的FV控制寄存器进行访问来改写值。
本实施方式的PU10~17的FV模式,将VL、FL的组合设定为4个阶段(FV控制寄存器内的2位)。图9表示PU10~17动作模式一览表。即,在FV控制寄存器的2位的值在“00”中设定为VL=0,FL=0的成为电压·频率切断的OFF模式,在上述寄存器值为“11”中,设定VL=VD与系统的电源电压等价、FL=FC与系统的动作频率等价的FULL模式。
此外,在寄存器值为“01”中,设定为VL=(1/2)VD,FL=(1/4)FC的LOW模式,在寄存器值为“10”中,设定为VL=(3/4)VD,FL=(1/2)FC的MIDDLE模式。此外,VL·FL模式的数量、VD·FL值,根据所构筑的系统的形式、应用程序、使用的处理技术等决定。
(PU内的部分的FV控制)以上,假定将FV控制对象的范围设为全部PU,总括设定FV控制模式来进行了说明,但还可以对PU10~17搭载的本地存储器(LM)、FV控制寄存器、其他的处理器周边电路进行各种各样的FV控制模式设定。这可以通过扩展FV控制寄存器的位域,使其具有设定与被FV控制部对应的FV控制模式的域来实现。例如,对于本地存储器LM或系统控制寄存器(R)25数据保存所需要的电路,可以考虑采用独立设定FV、VL的机构。即,通过对本地存储器LM、FV控制寄存器独立地进行FV控制,即使所述PU的FV为切断状态,也可以保存该LM以及R的数据,此外,在对象PU为切断状态时,也可以从其他的PU对该PU的LM进行访问。
此外,还可以根据本地存储器LM的结构,设定多个FV控制对象。图10a~10c表示针对本地存储器LM的FV控制方式。
例如,如图10a所示,使本地存储器LM成为存储体结构,对每个存储体(Bank1~Bank3)分别执行FV控制。因此,对各个Bank1~Bank3分别连接供给电压选择电路(VDSEL)203。
即,只对保存数据所需要的存储体供给通常电压,或者供给保存数据所需要的最低限度的电压,该存储体以外的存储体切断电源,由此可以削减功率,并且因为无需进行数据的退避处理,所以可以高速地进行从电源切断时向通常动作时的恢复。
此外,还如图10b所示,按照一定的连续的地址空间(Area1~Area4)分割本地存储器LM的地址空间,以该空间为单位进行FV控制,由此通过切断不需要的地址空间(存储区域)的电源可以削减功率。
因此,对每个本地存储器LM的各个地址空间(Area1~Area4)连接供给电压选择电路(VDSEL)203。
此外,如图10c所示,在本地存储器LM为存储体结构时,以按照跨越各个存储体(Bank0~3)的一定的连续的地址空间(Area1~Area4)进行分割的单位进行FV控制。
因此,对跨越本地存储器LM的各个Bank0~3的每个地址空间(Area1~Area4)连接供给电压选择电路(VDSEL)203。根据该结构,可以实现活用存储体结构使存储器访问高速化的存储器交叉存取,并且可以实现低功率化。
此外,本地存储器LM,可以分割为仅可以仅由功能性地搭载该LM的PU进行访问的部分(非共享存储器)、和不仅由该PU由其他的PU也可以访问的部分(分散共享存储器)来进行安装,还可考虑按照以上两个存储器功能单位进行FV控制。因此,虽然没有图示,但对每个上述非共享存储器和分散共享存储器的区域分别连接供给电压选择电路(VDSEL)。
此外,图10a~图10c表示的存储器分割方法,对于所述存储器功能单位、还有共享存储器等系统搭载的各种各样的存储器、功能部位单位,也可以同样地适用。例如,对于在PU外配置的共享存储器SM,也可以使其成为多个存储体结构,对应针对各个存储体的访问频度、系统状态(准备、睡眠)进行其他的FV控制。
例如,通过代替本地存储器LM将图10a的结构用于共享存储器SM18,并将共享存储器SM18分割为存储体(Bank0~3),对每个存储体连接供给电压选择电路(VDSEL)203,由此可以以存储体为单位进行功率控制。此外,通过代替本地存储器LM将图10b的结构用于共享存储器SM18,按照一定的连续的地址空间(Area1~Area4)分割共享存储器SM18的地址空间,以该空间为单位进行FV控制,由此,可以通过切断不需要的地址空间(存储区域)的电源来削减功率。此外,还可以代替本地存储器LM将图10c的结构用于共享存储器SM18,以按照跨越各个存储体(Bank0~3)的一定的连续的地址空间(Area1~Area4)进行分割的单位进行FV控制(功率控制)。此外,在将图10a~图10c用于共享存储器SM18的情况下,将图中的[LM]改读作[SM]。
(针对本地存储器LM的FV控制模式)作为将FV控制对象设为PU内的多个部分(功能部分)的例子,在下面对对于本地存储器LM与PU独立地进行FV控制的方法进行说明。在本例中,如图10a所示,本地存储器LM由4个存储体(Bank0~3)构成,FV控制对象是PU以及每个LM存储体。
PU的FV控制模式与上述图9所示的相同。图13表示本地存储器LM的FV控制模式的一览表。关于LM的动作模式,因为对象是存储器,所以在本实施方式中为可以进行通常存储器访问以及数据保存的通常动作模式(VL=VD,FL=FC,寄存器值“11”)、无法进行存储器访问但可以进行数据保存的数据保存模式(VL=1/2VD,FL=0,寄存器值“01”)、以及不进行数据保存完全切断电源的电源切断模式(VL=0,FL=0,寄存器值“00”)的三个模式。
然后,如图10a或者图10c所示,由多个存储体构成本地存储器LM,在图14a中表示与每个存储体的FV控制对应的FV控制寄存器的格式。在本例中,对于每个PU10~17将FV控制寄存器1250映射为一个存储器地址,在该区域(映射的地址)对每个控制对象决定FV控制模式。如图所示,在一个区域为32位时,即,将位1、0作为PU的FV控制模式(PUFV);将位3、2作为LM存储体0(Bank0)的FV控制模式(LM0FV);将位5、4作为LM存储体1(Bank1)的FV控制模式(LM1FV);将位7、6作为LM2(Bank2)的FV控制模式(LM2FV);将位9、8作为LM存储体3(Bank3)的FV控制模式(LM3FV),来访问希望的区域,根据图13的表决定本地存储器LM的动作模式,来进行FV控制。此外,PU的动作模式根据图9的表来决定。
图14b表示FV控制寄存器1250的设定例。在本例中,PU的模式在图14a的PUFV中设定MIDDLE(“1、0”);为了仅激活本地存储器LM的存储体0使其进行通常动作,在LM0FV中设定“1、1”,为了LM的存储体1成为数据保存模式在LM1FV中设定“1、0”;存储体2以及存储体3在LM2FV、LM3FV中设定“0、0”作为电源切断。
此外,除了上述之外,还可以采用对于FV控制寄存器,对每个控制对象分配地址的结构。例如,如图14c所示,表示对每个FV控制对象,将寄存器映射为存储器地址的FV控制寄存器的格式。在图14c中,按照地址的顺序存储表示PU的FV控制模式和LM的FV控制模式的PUFV、LM0FV~LM3FV。
如上述图14a所示,当在FV控制寄存器的位域切断控制对象的FV控制模式时,需要用于设定该域的值的比特运算,但在图14c的结构中,直接访问直接映射了该控制对象寄存器的地址即可,所以可以削减与FV控制寄存器的设定有关的命令数。但是相反,与图14a相比需要较多的地址资源。
以上,作为通过设定各PU具有的FV控制寄存器来设定PU、LM的FV控制模式的例子进行了说明,但如图8所示,在作为与本地总线LBUS19连接的FV控制表(FVTBL)26,具有表示各PU10~17的FV控制模式的FV控制寄存器的情况下,如图15所示,构成该FVTBL。
图15表示图8所示的FV控制表FVTBL的格式。该FVTBL的1行与PU号码(PUN250)、该PU的FV控制模式(PUFV251)、LM的FV控制模式(LM0FV252、LM1FV253、LM2FV254、LM3FV255)、以及后述的本地总线LBUS的FV控制模式(BUSFV)相对应,可以决定对于任意PU的该PU、LM、LBUS的FV控制模式。
而且,CPU0等读入该FV控制表FVTBL后,对每个PU10~17决定PU和本地存储器LM(每个存储体)以及本地总线的FV控制模式,控制电压生成电路(DCGEN)20以及时钟生成电路(CLKGEN)21。
(针对总线的电源控制)此外,对连接各个PU10~17的本地总线(LBUS)19,作为多处理器系统的以功能部位单位的FV控制,还可以部分地进行电源控制(电源切断)。
例如,在PU10~17中的某个PU在非动作时电源被切断的情况下,因为该PU的总线接口(BIF)不被访问,所以可以进行该BIF的电源切断,结果可以削减泄漏电流。此外,在将总线的结构设为纵横交叉开关(crossbar)的情况下,还可以对决定与该PU连接的总线的切换部的电源进行控制,切断。
在图11中表示对于交叉结构总线的电源控制的概念。例如,在将DSP0(14)设为电源切断状态假设没有对于DSP0的通信量时,还切断针对DSP0附带的BIF(27)的电源,以及切断针对开关群(192)的电源,该开关群(192)对DSP0连接来自其他PU以及共享存储器SM的总线网络。
由此,可以削减成为非动作状态的DSP0的开关群192的功率消耗。在图12中表示用于实现针对交叉网络的电源控制的电路结构。此外,在本图中表示将CPU0、DSP0、DSP1以及共享存储器SM与由交叉网络构成的本地总线LBUS19连接的结构。本电路由对各个PU10~17发送出的数据包数据进行分析,进行图11所示的开关群192的控制的网络控制部NWCRL、和将该数据包数据的发送源与发送目的地的网络进行连接的网络开关部(NWSW)构成。
网络控制部NWCRL,由对PU10~17发送出的数据包进行分析,决定数据包的优先度的SHCTL195;对由SHCTL195决定了优先度的该数据包进行选择的选择器(SELC)196;暂时保存该数据包的队列197;以及对分析该数据包连接发送目的地以及发送源的网络的选择开关191~194进行控制的SWCTL198构成。
此外,网络开关NWSW,由连接各个PU之间的网络的选择开关(SEL)191~194构成。
在各个PU10~17和网络控制部NWCRL中,分别设置与电源生成电路DCGEN选择性连接的开关(DCSEL)199。而且,从开关(DCSEL)199对各个PU10~17以及BIF27和连接该PU的选择开关191~194进行电源供给。
例如,在假设将DSP0设为电源切断状态、没有对于DSP0的通信量时,DSP0附加的开关DCSEL199,不仅切断该DSP0的电源,还切断针对与该DSP0连接的BIF27的电源、以及切断针对选择开关SEL1(192)的电源,该选择开关SEL1(192)选择向该DSP0的网络。由此,不仅是成为电源切断状态的DSP0,还可以通过切断向周边电路的功率供给来进一步削减功率消耗。此外,在使整个网络为待机状态,即为电源切断状态时,还对NWCRL通过向该NWCRL供给功率的开关DCSEL199进行电源切断。
(FV控制寄存器的设定方法)然后,对设定FV控制寄存器1250的具体的方法进行说明。以下,将寄存器格式作为图14a的结构进行说明。
分别对各个PU的FV控制寄存器25分配全部PU可以唯一访问的全局地址,编译程序预先决定的任务管理用PU(即,执行调度程序或OS的PU)访问该地址,并变更该寄存器值,由此来设定FV控制模式。
图16表示整个多处理器系统的全局地址空间映射表。在本实施方式中,定义从首地址到规定的地址可以看到PU自身的本地资源(包含LM、FV控制寄存器1250的系统设定寄存器)的区域、以及广播(BC)区域。关于BC区域在后面进行叙述。而且,在BC区域的后面,分配每个PU的地址空间,而且在各个PU内的地址空间分配本地存储器LM地址、以及系统设定寄存器地址。FV控制寄存器,具有所述系统设定寄存器地址内的1个地址,通过访问该地址可设定FV控制模式。另外,在图8中,在按CPU0、CPU1、DSP0、DSP1的顺序,由首端空间映射地址,例如设定DSP0的FV控制寄存器时,就访问地址“DSP0_FVREG_ADRS”。另外,在该空间的各PU区域之后,分配共享存储器SM的地址。
FV控制寄存器的设定,通过编译程序决定的任务管理用PU执行寄存器访问用目标代码,经由本地总线LBUS19访问控制目的地PU的FV控制寄存器来进行。关于编译程序生成该目标代码的具体的方法将在后面进行叙述,下面进行简单的说明,在编译程序将任务分配给多个PU时,对该多个PU进行分组,决定进行分组内的任务的启动、同步处理的任务管理PU。编译程序生成在该管理PU上进行FV控制的代码,通过该管理PU执行该代码来进行分组内的PU的FV控制。此外,上述编译程序在未图示的计算机上执行。
图17a表示设定FV控制寄存器的例子。假设编译程序对CPU0、DSP0、DSP1进行分组,CPU0进行任务管理,该CPU0对DSP0进行FV控制。CPU0通过执行由编译程序生成的进行FV设定的目标代码,来设定DSp0的FV控制模式。
图17b表示设定DSP0的FV控制模式的目标代码的例子。在本例中,预先定义DSP0内的FV控制寄存器的地址,对CPU0内的通用寄存器传送该FV控制寄存器的地址以及FV设定值,然后在该地址指定的寄存器中读入该设定值,由此来完成设定。
此外,作为进行FV设定的方法,设为任务管理PU执行直接访问寄存器的目标代码,例如如图17c所示,在设为OS管理各个PU的FV动作模式的情况下,通过调用OS的FV控制用API,可以在OS的管理下进行PU的FV控制模式设定。
此外,当设置整个系统的FV控制用寄存器,并在该寄存器内设置对全部PU10~17的FV控制模式进行设定的寄存器,来在各个寄存器中设定模式时,可以具有自动设定全部PU10~17的FV模式的机构。例如,如图8的FV控制表26所示,通过设置由全部PU10~17共享的寄存器,对该寄存器进行更新,由此可以变更全部PU10~17的FV控制模式。
此外,可以在该整个系统的控制用寄存器中对应通用处理PU组(CPU)、专用处理PU组(DSP、DRP、BMP)等处理器的种类,设置对该每个种类的PU同步设定FV模式的多个FV控制寄存器。此时,通过在图8的FV控制表26中对处理器的每个种类设置FV控制寄存器,并对各个CPU、DSP、DRP、BMP共享FV控制寄存器,由此可以通过变更一个寄存器来对每个处理器的种类变更FV控制模式。
(BC区域)然后,下面对在上述图16中表示的在存储器映射的前端区域中设置的广播(BC)区域进行说明。该BC区域是写入专用的区域,当一PU对该BC区域的一地址进行数据的写入时,经由本地总线LBUS19在预先与该地址对应的全部PU的各个LM入口(entry)中同时写入该数据。由此,各个PU的本地存储器LM同时具有全部PU共享的数据,各个PU10~17即使不访问共享存储器SM也可以高速地访问LM上的该数据。
此外,在进行FV控制等系统控制时,也可以通过进行该广播对全部PU一起发送控制信息。此外,通过与指定PU范围的任务信息一起进行广播发送,还可以实现限定PU的范围地发送数据、控制信息的广播功能。结果,例如在编译程序,定义由并行处理某个任务的多个PU构成的PU分组时,可以在该PU分组内一起开始任务处理,或者进行FV控制,整个系统的吞吐量提高。
(任务处理时的FV控制概念)然后,使用图18a~图18d,对各PU10~17中的任务处理时的电源电压、动作频率(FV)控制方法的概念进行说明。各个PU执行的任务(程序)通过后述的编译程序由输入程序生成。即,该输入程序首先通过后述的编译对该程序进行分析,由此,作为宏任务(MT)分割仅由赋值语句形成的基本块(BB)、重复块(RB)、子程序(SB)等粒度较大的语句·块。在本例中,假设分割为三个宏任务MT301~303。这里,宏任务是将输入程序(源代码)分割为多个粒度的单位块的任务。即,通过分割为宏任务,来进行多粒度并行处理,在该多粒度并行处理对利用子程序等粗粒度任务之间的并行处理的宏数据流处理、作为循环级别的并行处理的中粒度并行处理中,分级地组合利用基本块内部的语句级别的并行性的近细粒度并行处理来进行进行并行处理的多粒度并行处理。此外,在本实施方式中,假设将程序的构成要素作为宏任务,将宏任务的构成要素作为任务,将任务分配给PU10~17。
然后,通过对该宏任务MT在任意PU中的运算成本等特性信息进行计算,来决定在哪个PU上执行该宏任务MT,此外,通过对该宏任务MT之间的数据依存性、控制依存性进行分析,来决定任务的执行顺序。
图18a是表示任务间的并行执行依存性的宏任务图。本图表示可以同时执行宏任务MT1(301)和宏任务MT2(302),而且还表示了宏任务MT3(303)可以在结束执行宏任务MT1(301)以及宏任务MT2(302)之后执行。此外,在本例中,对PU10(CPU0)配置宏任务MT1,对PU12(BMP0)配置宏任务MT2,对PU10(CPU0)配置宏任务MT3。
图18b表示对如上那样进行了调度的宏任务进行了通常处理(无电压·频率控制)时的处理甘特图。
在图18b中,因为宏任务MT1和MT2可以并行执行,所以MT1由CPU(CPU0)(305),MT2由BMP(BMP0)(306)同时开始处理。在进行通常处理时,作为对CPU、BMP共同供给的电压供给通常的VD,此外,作为动作频率也供给通常的FC。在本例中,CPU中的宏任务MT1的处理周期数小于BMP中的宏任务MT2的处理周期数,所以CPU中的宏任务MT1的处理(305)在BMP中的宏任务MT2的处理(306)之前结束。
CPU因为结束了宏任务MT1的处理(305),所以然后处理宏任务MT3(307),但是根据宏任务MT之间的依存关系,可以在BMP中的宏任务MT2的处理(306)结束之前不执行在CPU中下一个应该处理的宏任务MT3。因此,CPU在BMP中的宏任务MT2的处理结束之前成为空闲状态。因为即使在该空闲状态下,也对CPU供给通常的电源电压VD以及时钟FC,所以消耗多余的功率。
因此,作为解决以上问题的一个方法,当在CPU中执行宏任务MT1时,为了使执行BMP宏任务MT2的处理所需要的时间与CPU执行宏任务MT1的处理时间相等,通过使CPU的动作频率低于通常时(FULL模式)的LOW模式(图9的供给1/4FC的模式)进行驱动(308)。即,通过通常时的FV控制模式(FULL)驱动BMP,另一方面,将CPU的FV控制模式设为LOW模式,降低处理先结束一方的PU的动作频率,并且为了在进行并行处理的PU之间,使FV控制模式不同,进行FV控制寄存器的设定。图18c表示应用本方法的FV控制时的甘特图。编译程序通过对CPU(CPU0)中的宏任务MT1的处理周期数以及BMP(BMP0)中的宏任务MT2的处理周期数进行估计,由此来决定CPU的动作频率以使双方的处理时间相等。结果,因为降低CPU的动作频率,所以还可以降低对该PU的电源电压,可以使消耗功率最佳化。
即,在该例子中,关于宏任务MT1,将CPU的FV控制模式设定为图9的[LOW模式],将并行进行处理的BMP的FV控制模式设定为[FULL]。
此外,作为解决上述图18b的CPU空闲状态的其他方法,在CPU中的宏任务MT1的处理(309)结束的时刻,切断CPU的电源电压以及动作时钟的供给,置为待机状态(310)。即,当CPU结束了宏任务MT1的处理时,将CPU的FV控制模式设定为图9的[OFF]。而且,在开始执行宏任务MT3时,将FV控制模式设定为[FULL],重新开始处理。图18d表示应用本方法的FV控制时的甘特图。
在图18d中,CPU的宏任务MT1的处理在BMP中的宏任务MT2(306)之前结束,但在该结束时刻使CPU为待机状态(OFF),并且在BMP结束了宏任务MT2的处理(306)的时刻,通过供给通常的电源电压以及动作频率再次使CPU恢复通常状态,开始宏任务MT3的处理(307)。结果,因为不使CPU空闲而是使其停止动作,所以可以降低消耗功率。
如此,在对程序(任务)进行编译时,编译程序根据PU的结构预先估计事先的处理时间,关于在编译时可以静态地决定处理顺序的部分事先决定处理顺序,对每个PU细致地进行动作频率控制以及电源管理,由此,可以无损多处理器系统的性能地使功率最佳化。
(任务处理时(实时制约时)的FV控制概念)以上,对宏任务(MT)的执行条件依存于其他宏任务MT时的FV控制方法进行了说明,但除此之外,还可以考虑任务在某一定时间内具有应进行处理的制约的、即如图19a所示的以决定了该任务的处理期限(允许时间)的实时处理任务为对象的FV控制方法。
在图19a例示的宏任务(MT1)311中,当在[FULL]模式下,即通过以通常的电源电压以及时钟频率动作的CPU进行处理时,处理在处理期限(Deadline)之前结束。此时,在处理结束的时刻CPU成为空闲状态,但因为对于本来的处理期限具有富余,所以可以在处理期限制约内降低CPU的动作频率(312)。
图19b表示应用本方法的FV控制时的甘特图。编译程序对在处理期限之前可以结束处理的动作频率进行估计,如图所示,将CPU的FV控制模式决定为[LOW]模式。结果,还可以降低供给电压VL,可以使消耗功率最佳化。
此外,还可以同样地在宏任务MT1的处理(313)结束的时刻切断CPU的电源以及动作时钟(314),由此来降低消耗功率。图19c表示应用本方法的FV控制时的甘特图。此时,CPU通过[FULL]模式处理宏任务MT1,在处理期限之前结束处理,但可以通过在宏任务MT1结束时将动作模式置为[OFF],来避免无用的功率消耗。
(编译程序的处理流程)然后,按照以下的顺序,对在上述多处理器·体系结构上,生成与处理器单元(PU)的特性相符合的调度以及生成根据电压·频率的动态变化进行消耗功率最佳控制的代码的编译方法、和采用了该方法的编译程序的处理进行说明。图20表示采用了本方法的编译程序40的处理流程。
(宏任务的生成)使用C或Fortran等高级语言记述的逐次结构的输入程序400,首先通过对该程序结构进行分析来分割为重复块(RBRepetition Block)、子程序(SBSub Routine)、伪赋值语句块(BPABlock of Pseudo Assignment statements)三个种类的粒度较大的宏任务(MT),生成各宏任务(401)。RB是各循环块中各层最外侧的循环,BPA是考虑调度开销或者并行性,融合或者分割了由赋值语句形成的多个基本块的块。图21中表示上述输入程序(源程序400)的一例。
(Directive指定)此外,在该源程序400中,可以预先记述PU的分配,例如还可以明确地指示将子程序分配给DSP,将另外某个子程序分配给CPU。结果,该DSP子程序通过编译程序被进一步进行并行性的分析,例如在DSP为4个时,编译程序40对该4个DSP执行并行化调度。
(数据依存·控制流分析)然后,对分割生成的该宏任务之间的控制流以及数据依存性进行分析,提取宏任务MT的执行顺序关系(402)。图21的输入程序400因为是被逐次地进行记述,所以与该程序的结构相同地按照逐次的顺序执行由通常的编译程序40生成的执行代码,当在宏任务MT之间来看时,很多情况不一定需要按照记述的顺序来执行。
即,当在宏任务MT之间不存在控制或数据参照的依存性的情况下,特别在多处理器系统中,重要的是对多个PU配置多个宏任务MT,同时或者变更顺序地进行调度,以使全体的动作时间缩短。
为了进行这样的调度,需要对MT之间的并行性进行分析。因此,作为该分析的准备,通过数据依存·控制流分析处理402提取宏任务MT之间的执行顺序关系。
(循环级并行性分析)然后,作为宏任务MT内的中粒度等级的并行性分析,进行循环级的并行化(403)。在循环级并行化403中,对循环的重复(Iteration)单位间的数据依存性进行分析,判断各重复是否可以独立地进行处理,在为可以时,将各重复分配给多个PU来进行并行处理。
此外,通过以下各种各样的方法来实现循环的并行化将单一的循环分割为多个循环来提高并行性;或者通过数据的复制和数组变量的扩张,通过消除各个循环之间的数据依存性来进行并行化;或者将多个循环融合为单一的循环,由此减轻循环控制所需要的开销。
(处理成本分析)然后,进行对由各PU执行了上述生成的宏任务MT时所需要的处理周期进行估计的处理成本分析(404)。作为处理成本(运算成本)的估计方法,例如关于CPU等,将乘法运算或加法运算等命令级需要的周期数作为概要分析(profiling)信息保存在处理成本表420中,通过参照该表420可以估计由该PU执行宏任务MT时的逐次处理周期数。
此外,在为DRP、DSP等,难以对从程序中表现的命令级的周期数进行估计的情况下,该块的程序对生成DRP、DSP用执行代码的各个本地编译程序进行一次调用,根据转换后的执行代码进行概要分析,求出处理成本(413)。此外,本地编译程序对应PU的种类预先进行设定,例如,如果是DSP则使用DSP的本地编译程序分析信息,如果是DRP则使用DRP的本地编译程序概要分析信息。
此外,例如在包含分支的情况下,或者在循环的大小或数组的大小在宏任务MT执行前没有被决定的情况下,还可以通过由本地编译程序进行一次概要分析,来进行精度得到了提高的处理成本计算。此外,在不进行本概要分析,宏任务MT包含分支的情况下,将分支概率设为50%来进行成本计算。此外,在同样不进行概要分析,循环或数组的大小没有被决定的情况下,例如应用以下等方法将循环设为固定次数,此外设为数组宣言时的最大尺寸。
以上,将处理成本定义为处理周期数(时间),此外,还可以通过将成本定义为功率,来进行功率为最小的调度。
例如,根据处理周期数和应该完成宏任务MT的处理期限,在可以设定的FV控制模式(频率、动作电压)中选择在处理期限内为最小消耗功率的动作模式。或者,因为PU的消耗功率可以估计为消耗功率=动作电压2×驱动频率所以可以选择在处理期限内消耗功率为最小的FV控制模式的组合,进行调度。例如,如图19b所示仅通过LOW模式执行处理的情况,和如图19c所示对多个FV控制模式进行组合。或者,还可以选择处理时间最短,并且消耗功率最小的FV控制模式的组合。
(宏任务间并行性分析=最早执行条件分析)编译程序40在宏任务MT的处理成本决定之后,根据同时对数据依存控制流分析处理402中提取出的宏任务MT之间的控制流和数据依存性进行分析后的结果,决定宏任务MT之间的并行性,即,决定可以最早执行各宏任务MT的条件(最早执行条件)(405)。
在图表中可视地表示该最早执行条件的是宏任务图表(MTG)。图22表示对图21的输入程序进行分析生成的MTG。此外,宏任务间并行性分析结果作为宏任务图表表421被保存在外部存储装置中,在后面的编译处理中使用。此外,该外部存储装置是指执行编译程序40的未图示的计算机自身。
(宏任务图表的说明)以下,参照图22对宏任务图表MTG进行说明。本图表中的各个节点表示宏任务MT,节点之间的实线表示宏任务之间的数据依存关系,节点之间的虚线表示宏任务之间的控制依存关系,节点内的小圆表示条件分支。例如,从宏任务MT1_1(501)对MT1_2(502)以及MT1_3(503)实现进行了延伸,这表示存在以下的依存关系粒度大的MT1_2以及MT1_3将执行MT1_1后生成的数据作为输入数据使用,来执行处理。因此,作为执行顺序,表示MT1_2以及MT1_3可以在MT1_1结束之后执行。
此外,从输入程序400求出的宏任务MT1_2(502),因为是由多个循环或子程序构成的粒度较大的块,所以编译程序40将该宏任务MT进一步分层地分割为多个宏任务MT。由此,在该宏任务图表MTG中,在MT1_2中,在其他的分层中进一步构成宏任务图表MTG1_2。宏任务MT1_3(503)也同样地构成其他分层的宏任务图表MTGMTG1_3。
当查看宏任务MT1_2(502)内的宏任务图表MTG1_2(510)时,实线从任务MT1_2_1(511)向任务MT1_2_2(512)、任务MT1_2_4(514)以及任务MT1_2_5(515)进行了延伸,所以可以在MT1_2_1(511)结束之后同时执行这些3个任务512、514、515。
此外,任务MT1_2_2(512)还对任务MT1_2_3(513)存在依存,这可以在MT1_2_2(512)的任务结束之后执行MT1_2_3(513)的任务。此外,实线从任务MT1_2_4(514)以及MT1_2_5(515)对任务MT1_2_6(516)进行延伸,所以可以在任务MT1_2_4(514)以及MT1_2_5(515)双方的执行结束的时刻执行MT1_2_6(516)。
如上所述,在执行宏任务MT1_2之前确定了并行顺序关系,可以预先固定地(静态地)调度任务。
然后,当查看宏任务MT1_3(503)内的宏任务图表MTG(520)时,在宏任务MT1_3_1(521)中存在小圆,这表示任务MT1_3_1(521)包含条件分支。具有箭头的虚线从小圆向任务MT1_3_2(522)、MT1_3_5(525)延伸,此外,对控制依存的OR条件进行表示的点划线的弧线529重合,所以表示该条件分支为任务MT1_3_2或MT1_3_5中的某一个。
此外,没有箭头的虚线向任务MT1_3_3(523)延伸,表示控制依存的AND条件的实线的弧线528在向任务MT1_3_3(523)的没有箭头的该虚线和与任务MT1_3_2(522)连接的虚线上重合。这表示如果在该条件下,向箭头所指的任务MT1_3_2的方向分支,则可以同时执行控制依存于同一分支的任务MT1_3_3。此外,图中的虚线表示了对任务的执行进行确定的控制依存关系,和不执行数据依存的任务时的条件。此外,带有箭头的虚线表示与通过数据依存·控制流解析(402)求出的控制流相同(即,原始的)的情况。
此外,任务MT1_3_1(521)的条件分支因为在不执行该任务MT1_3_1时分支方向不确定,所以需要进行与执行时的状况对应的调度。在该条件分支确定,向任务MT1_3_2(522)以及任务MT1_3_3(523)的方向分支时,具有从任务MT1_3_2(522)以及任务MT1_3_3(523)到任务MT1_3_4(524)表示数据依存关系的实线,因此,可以在任务MT(522、523)双方的处理结束的时刻执行MT1_3_4(524)的处理。
此外,在向任务MT1_3_5(525)的方向分支时,同样地,可以根据依存关系在该任务525结束的时刻执行任务MT1_3_6(526)以及任务MT1_3_7(527)的处理。
(处理器分组)然后,编译程序40参照所生成的宏任务图表MTG表421,进行与宏任务图表的形状、并行性对应的,或者与用户的指定对应的处理器分组(406)。
即,对在宏任务图表MTG中表现的上位层的宏任务MT,例如宏任务MT12(502)、MT13(503)的形状、并行性进行分析,对该宏任务MT的处理所需要的PU10~17进行分组,并对该分组分配任务MT。此外,一个组成为至少包含一个用于对该分组内的特定用途处理器(DSP、DRP、BMP)进行控制的通用处理器(CPU)的集合。具体地说,在可以根据宏任务图表MTG的结构,在进行编译时判断恰当的处理器PU的分组结构时,便宜程序40进行包含了特性用途处理器的分组。
此外,在根据宏任务图表MTG的结构,在编译时无法进行处理器分组时,即,在存在多层应该使用特定用途处理器的任务,无法恰当地进行分组的情况下,在进行编译时,编译程序40或者在执行时起到调度器作用的通用处理器,将任务对特定用途处理器组进行分配。此时,在向特定用途处理器的负荷较大的情况下,由通用处理器代为进行处理。此外,已决定的分组信息,作为处理器分组表422保存在外部存储装置中,在后面的处理中使用。
在本实施方式中,在图22的宏任务图表MTG1(500)中宏任务MT1_2(502)和MT1_3(503)的处理成本相同,为了执行这些宏任务内部的宏任务图表MTG1_2(510)、MTG1_3(520),需要通过通用处理器的特定用途处理器的控制,所以定义两个处理器分组。
然后,根据宏任务MT1_2、MT1_3对于各PU的处理成本、并行性,决定在各处理器分组内所需要的特定用途处理器的构成。在本实施方式中,因为可以通过宏任务图表MTG1上可以利用的资源来实现所需要的处理器构成,所以在编译时将处理器分组决定为CPU0、DSP0、DRP0、DRP1以及CPU1、DSP1、BMP0、BMP1。
(静态调度和动态调度)然后,编译程序40接着作为调度方法,判断是静态调度还是动态调度(407)。在后面对各个调度方法进行详细说明,而在下面先进行简单的说明。首先,如果是在任务MT中没有条件分支可以预先决定最早执行条件的MT流,则应用前者的静态调度,编译程序40预先进行任务MT的调度,在任务之间插入同步代码以及FV控制代码(调度代码)。
此外,如果是在任务MT中具有条件分支,或者任务MT的处理时间在执行时进行变动等,在编译时无法预测的MT流,则应用后者的动态调度,编译程序40生成在执行时进行与分支等的状况对应的控制的调度程序。编译程序40生成调度程序(调度代码)的优点在于,如现有的多处理器那样,在向OS或程序库委托生成粗粒度任务,委托进行调度时,有可能产生数千至数万个时钟的开销,而编译程序40生成调度程序就可以避免该情况。
(静态调度)首先,对静态调度的处理流进行说明。在静态调度中,因为在编译时已经决定了任务MT的分配和执行顺序,所以,首先通过宏任务调度处理408参照宏任务表421以及处理器分组表422,生成用于进行PU之间的执行任务间的同步和进行其他任务的启动等的控制信息,决定该控制信息的插入部位。
此外,还将任务程序或任务所需要的数据与从其他PU的本地存储器LM、共享存储器SM载入该PU的本地存储器LM的数据传送信息一同生成。通过这样的数据定位方法,来有效地使用本地存储器LM,使数据的传输量最小化。通过以上处理生成的调度信息作为宏任务调度表423保存在外部存储装置中。
然后,编译程序40进行静态FV调度处理409。在本处理中,根据图18a~图18d中说明的执行并行处理时的FV控制概念,根据由宏任务调度408生成的调度信息(宏任务调度表)判定由任务的处理成本以及调度期限(处理期限)决定的余裕度,并对决定与该余裕度对应的动作频率·供给电压的PU动作模式进行设定,因此,生成FV控制信息。该FV控制信息作为电源·FV控制调度表被保存在外部存储装置中。此外,余裕度,例如是根据从执行开始到执行结束的处理时间和到处理期限为止的时间求出的,表示各PU10~17性能上的余裕的程度。例如,如图19a所示,在从CPU0的执行结束到处理期限的时间较长时可以判定余裕度较大,相反,在从执行结束到处理期限的时间较短时可以判定余裕度较小。
此外,处理期限(允许时间)可以由输入程序记述,也可以在编译程序40的处理时由未图示的控制台输入。
(动态调度)然后,对动态调度的处理流进行说明。在动态调度时,由于任务MT内的条件分支等不确定要素,无法在编译时决定调度内容。因此,控制程序40根据任务MT的处理结果生成在执行程序时动态地进行调度的调度程序(410)。本程序根据处理结果,进行任务MT的启动和同步、以及该MT所需要的数据的装入。此外,还根据图18a~图18d说明的任务并行处理执行时的FV控制概念,对决定PU的动作频率·供给电压的动作模式(FV控制模式)进行设定。生成的调度程序作为电源·FV控制调度表424保存在外部存储装置中。
(调的代码的生成)编译程序40,通过以上的处理,结束输入程序400的向PU10~17的调度。通过到此的处理生成的调度信息作为表(421~424)保存在外部存储装置中。编译程序40对该表(421~424)进行访问,读入任务的执行顺序和数据传送信息以及FV控制信息,对于输入程序在静态调度部中附加控制代码(调度代码),此外在动态调度部中附加调度程序(411)。例如,使用作为分散存储器型并行计算机中的并行编程标准接口的MPI(Message PassingInterface)等生成控制代码。附加了该代码的输入程序还通过对各个PU的每个种类准备的本地编译程序进行处理,由此转换为该PU中的执行二进制代码。此外,本地编译程序如上所述,预先对CPU、DSP、DRP、BMP的PU的每个种类进行准备,由编译程序40调用与各PU的种类对应的本地编译程序,来生成执行二进制代码。
(调度的结果)图23表示本调度结果的例子。图23以时间轴对每个PU表示MT的调度结果。在本例中,CPU0进行任务的启动、同步以及FV控制等管理,所以最初在CPU0上加载编译程序40生成的控制代码550。该控制代码550由进行各PU的FV控制的代码以及在CPU0中启动宏任务MT1_1的代码来表现。即,CPU0为了对执行宏任务MT1_1的CPU0将动作模式置为FULL,将FV控制寄存器的值设定为“3”。此外,因为对于其他的PU不存在应该处理的MT,所以将FV控制寄存器的值设定为“0”,来将动作模式置为OFF。然后,CPU0通过自身CPU0开始宏任务MT1_1的处理。
在通过CPU0进行的宏任务MT1_1的处理结束之后,执行编译程序40生成的控制代码551,来进行FV控制模式的设定。然后应该处理的任务是由宏任务MT1_2以及MT1_3的下层的宏任务图表MTG指定的任务MT1_2_1以及任务MT1_3_1,前者由CPU0执行,后者由CPU1执行。因此,CPU0将对任务MT1_3_1进行处理的CPU1的FV控制寄存器设定为通常模式(FULL)。此外,关于CPU0,虽然FV控制模式也已经为通常模式,但为了处理后续MT1_2_1,所以置为通常模式(FULL)。此时,在所述任务MT1_2_1以及所述任务MT1_3_1的处理中,因为不存在其他PU上的处理任务,所以该其他的PU将后续动作模式置为OFF。然后,CPU0在自身开始任务MT1_2_1的处理,此外在CPU1中开始任务MT1_3_1的处理。
此外,如上所述,因为宏任务MTG1_2不包含条件分支,所以已经在编译时进行了调度(静态调度),对CPU0、DSP0、DRP0、DP1分组分配任务MT。此外,因为在宏任务MTG1_3中包含条件分支,所以附加在执行时进行调度的程序,根据执行结果对CPU1、DSP1、BMP0、BMP1分组分配任务MT。
然后,对宏任务图表MTG1_2的任务MT分组的调度进行说明。当任务MT1_2_1的执行在CPU0中结束时,CPU0执行控制代码552,为了处理任务MT1_2_2将FV控制寄存器设定为“3”,以使DSP0置为通常动作模式。此外,对于任务MT1_2_4以及MT1_2_5,根据通过编译时的FV调度进行的任务的余裕度判定,将FV控制寄存器设定为“2”,以将DSP0、DRP0以及DRP1置为低功率动作模式MIDDLE。此外,虽然在CPU0中没有应该执行的任务,但为了进行DSP0、DRP0以及DRP1的任务的同步管理,调度程序对于CPU0将FV控制寄存器设定为“1”,以将其置为低功率动作模式LOW。然后,开始进行任务MT1_2_2、任务MT1_2_4以及任务MT1_2_5的处理。此外,因为在任务MT1_2_2的处理结束之后,同样地在DSP0中执行任务MT1_2_3,所以进行任务的启动预约(向任务就绪队列登录任务),以使在该时刻在任务MT1_2_2结束之后启动任务MT1_2_3。
然后,当CPU0判定所述任务MT1_2_04以及任务MT1_2_5的处理双方已经结束时,该CPU0执行控制代码553,CPU0将处理任务MT1_2_6的自身CPU0的动作模式设定为MIDDLE,此外,由于DRP0以及DRP1不存在应该处理的任务,所以将动作模式设定为OFF,在与通常相比降低了电压和动作频率的状态下开始所述任务MT1_2_6的处理。当所述任务MT1_2_6的处理结束时,CPU0执行控制代码554,在判定为任务MT1_2_3的处理结束时,因为MTG1_2分组内的任务处理已经结束,所以CPU0将DSP0的动作模式设定为OFF。
然后,对MTG1_3的任务MT分组进行说明。因为宏任务MT1_3在内部具有分支,所以不执行任务时无法得知分支方向。因此,在CPU1中执行用于根据执行时的状况进行任务、数据的装入、任务的启动、同步以及FV控制代码的管理等的动态调度程序。因为首先执行任务MT1_3_1,所以该调度程序555将CPU1的动作模式设定为FULL,启动任务MT1_3_1。在任务MT1_3_1的执行结束之后,调度程序556判定分支方向,判定然后启动的任务。
在图23表示的调度中,任务MT1_3_2由DSP1处理,任务MT1_3_3由BMP0处理。在该处理启动之前,调度程序556按照FV调度结果将DSP1的动作模式设定为FULL,此外,将BMP0的动作模式设定为LOW。虽然在CPU1中没有应该执行的任务MT,但因为执行调度程序556进行DSP1以及BMP0的任务管理,所以调度程序556将CPU1的动作模式设定为低功率模式LOW。
然后,CPU0上的动态调度程序557在判定为所述任务MT1_3_2以及任务MT1_3_3双方的处理结束时,将接着对任务MT1_3_4进行处理的自身CPU0的动作模式(FV控制模式)设定为FULL,此外,将不存在应该执行的任务的DSP1以及BMP0的动作模式设定为OFF。然后,在自身CPU0中执行所述任务MT1_3_4。
根据以上,在由不同种类的PU10~17构成的多处理器中,在通过多粒度并行处理,为了使执行时间最短而对输入程序进行并行化并进行了调度之后,对每个PU极细致地进行动作频率控制以及电源管理以使在各PU之间处理时间均一,由此,可以以最短的执行时间无损性能地实现消耗功率的降低。
(编译程序生成的目的程序)在图24以及图25中表示通过编译程序40将用于进行如上所述的调度的调度代码附加给输入程序400,对每个PU输出的输出程序(目的代码)的一例。图24、图25对在上述图23中表示的处理进行记述,图24作为对宏任务MTG1_2进行处理的处理器的分组,表示CPU0、DSP0、DRP0、DRP1各个PU用执行代码。此外,图25作为对宏任务MTG1_3进行处理的处理器的分组,表示CPU1、DSP1、BMP0、BMP1各个PU用执行代码。编译程序40的生成代码由伪代码来表现,如上所述,实际上是按照MPI等接口规格进行表现。
(总结)如上所述,根据本发明,在集成多种处理器单元PU的多处理器系统中,通过使PU高效动作的程序的分割配置以及生成控制代码的编译程序40,可以最大限度地发挥该多处理器系统的性能,并且可以在最小限度的处理时间内以低功率高效地进行处理。此外,无需软件开发者识别处理单元的结构,可以在短时间内极其高效地生成程序。
(补充)此外,在上述实施方式中,表示了将本发明用于在一个芯片中具备多个PU10~17的多处理器系统的例子,但还可以用于图1所示的具备多个芯片的并行计算机中,可以得到与上述相同的作用效果。
此外,一种多粒度并行化编译程序,其特征为在权利要求14、权利要求22、权利要求30中,根据对所述每个处理器单元设定的分析信息求出处理所述单位块的处理周期数,根据该处理周期求出所述运算周期时间。
此外,一种多粒度并行化编译程序,其特征为在权利要求14、权利要求22、权利要求30中,所述运算周期时间,通过对所述每个处理器单元设定的本地编译程序将所述单位块转换为执行代码,根据对所述每个处理器单元设定的分析信息求出对所述单位块进行处理的处理周期数,根据该处理周期数求出所述运算周期时间。
此外,一种多粒度并行化编译程序,其特征为在权利要求15、权利要求23、权利要求31中,根据对所述每个处理器单元设定的分析信息求出对所述单位块进行处理的处理周期数,根据该处理周期求出所述功率。
此外,一种多粒度并行化编译程序,其特征为在权利要求15、权利要求23、权利要求31中,所述运算周期时间,通过对所述每个处理器单元设定的本地编译程序将所述单位块转换为执行代码,根据对所述每个处理器单元设定的分析信息求出对所述单位块进行处理的处理周期数,根据该处理周期数求出所述功率。
此外,一种多粒度并行化编译程序,其特征为在权利要求13、权利要求21、权利要求29中,提取所述单位块的并行性的处理包含将所述提取出的单位块存储在宏任务图表表中,对处理所述单位块所需要的处理器单元进行分组,来存储在处理器分组表中的处理,生成所述调度代码的处理,包含参照所述宏任务图表表和处理器分组表以及代码信息,生成处理器单元的控制代码的处理;和对应所述单位块的执行顺序插入所述控制代码的处理。
此外,一种多粒度并行化编译程序,其特征为在权利要求13、权利要求21、权利要求29中,提取所述单位块的并行性的处理包含将所述提取出的单位块存储在宏任务图表表中,对处理所述单位块所需要的处理器单元进行分组,来存储在处理器分组表中的处理,生成所述调度代码的处理,包含参照所述宏任务图表表和处理器分组表以及代码信息,生成动态地进行所述单位块的调度的调度程序的处理;和对应所述单位块的执行顺序插入所述调度程序的处理。
产业上利用的可能性根据本发明,在集成了多个种类的PU的多处理器系统中,通过使该PU高效动作的程序的分割装置以及生成控制代码的编译程序,可以最大限度地发挥该多处理器系统的性能,并且可以以较低的功率高效地进行处理。此外,无需软件开发者意识处理单元的结构,就可以在短时间内高效地生成程序。结果,可以将本发明用于被强烈希望具有高运算性能并且低功率进行处理的、面向车辆导航系统、移动电话、信息家电的LSI,可以实现高质量的动画图像和声音处理、以及图像识别和声音识别等功能。对于面向汽车的信息系统、控制系统的LSI也可以适用,可以实现自动运转、安全运转系统等。此外,还可以用于将来需要具有非常高的运算性能并且低功率化的超级计算机。
权利要求
1.一种多处理器系统,其具有多个单一或者多个种类的处理器单元,其特征在于,所述处理器系统,具有将多个时钟频率中的一个作为动作时钟供给给所述处理器单元的时钟供给部;将多个电压中的一个作为动作电压供给给所述处理器单元的电压供给部;和对供给所述各处理器单元的动作时钟和动作电压进行设定的系统控制寄存器;所述处理器单元中的某一个,根据并行处理的调度,在所述系统控制寄存器中设定供给各处理器单元的动作时钟和动作电压。
2.根据权利要求1所述的多处理器系统,其特征在于,所述时钟供给部,把对该时钟供给部输入的频率的整数分之一的频率作为动作时钟进行供给。
3.根据权利要求1所述的多处理器系统,其特征在于,所述系统控制寄存器,对预先设定的多个时钟频率的各自预先设定最佳化的动作电压,所述处理器单元中的某一个,根据该系统控制寄存器的设定值,选择所述时钟频率,决定与该时钟频率对应的动作电压。
4.根据权利要求1所述的多处理器系统,其特征在于,所述系统控制寄存器,设定多个与构成该多处理器系统的多个功能部位单位中的每一个对应的位域,根据在该位域中设定的值,对每个所述功能部位单位分别设定动作频率和动作电压。
5.根据权利要求4所述的多处理器系统,其特征在于,所述处理器单元具有预先被区分为多个区域的存储器;所述系统控制寄存器,具有与所述功能部位和所述存储器的每个区域对应的位域,根据在该位域中设定的值,对所述存储器的每个区域分别设定动作频率和动作电压。
6.根据权利要求5所述的多处理器系统,其特征在于,所述位域具有独自的地址;所述存储器单元参照该地址来设定值,由此设定与所述位域对应的所述功能部位或所述存储器的一区域的动作频率和动作电压。
7.根据权利要求4或权利要求6所述的多处理器系统,其特征在于,所述功能部位,包含处理器单元内的存储器、由多个处理器单元共享的共享存储器、连接各个处理器单元的本地总线,对于这些功能部位中的至少一个,分别对每个功能部位单位变更动作频率或动作电压。
8.根据权利要求1所述的多处理器系统,其特征在于,具备由所述处理器单元中的多个处理器共享的共享存储器;在所述共享存储器中预先设定的多个区域;和设定对所述共享存储器的所述每个区域供给的动作电压的第二系统控制寄存器;所述处理器单元根据在所述第二系统控制寄存器中设定的值,分别对所述共享存储器的每个区域设定动作电压。
9.根据权利要求1所述的多处理器系统,其特征在于,所述处理器单元中的某一个,根据并行处理的处理时间为最小的调度,在所述系统控制寄存器中设定对各个处理器单元供给的动作时钟和动作电压。
10.根据权利要求1所述的多处理器系统,其特征在于,所述系统控制寄存器,在该多处理器系统的地址区域中对每个处理器单元设定唯一的地址,设定为可以从所述各个处理器单元进行访问。
11.根据权利要求1所述的多处理器系统,其特征在于,对所述每个处理器单元配置所述系统控制寄存器。
12.根据权利要求1所述的多处理器系统,其特征在于,所述处理器单元,经由本地总线连接,所述系统控制寄存器,被配置在与所述本地总线连接的控制表中,存储所述每个处理器单元的设定值。
13.一种多粒度并行化编译程序,其生成在具有多个单一或多种类的处理器单元的多处理器系统上执行的目的程序,其特征在于,使计算机执行以下的处理读入输入程序的处理;对所述输入程序进行分析,将所述输入程序分割为多个粒度的单位块的处理;对所述单位块之间的控制依存性以及数据依存性进行分析,提取所述单位块的并行性的处理;求出在所述多处理器系统具备的各个处理器单元中,所述块单位的运算所需要的成本信息的处理;根据所述成本信息,为使所述输入程序的处理时间成为最小,生成将所述单位块分配给所述处理器单元的调度代码的处理;和将所述调度代码附加给输入程序,生成所述每个处理器单元的执行代码,将其作为目的代码进行输出的处理。
14.根据权利要求13所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的运算周期时间。
15.根据权利要求13所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的功率。
16.根据权利要求13所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,包含以下的处理在用通过调度分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成用于变化或者切断给予处理器单元的动作电压以及动作时钟的控制代码。
17.根据权利要求13所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,对于通过调度分配了所述单位块的处理器单元之外的处理器单元,生成用于切断动作时钟以及动作电压的供给的控制代码。
18.根据权利要求13所述的多粒度并行化编译程序,其特征在于,所述处理器单元,包含特定用途处理器单元和通用处理器单元;所述生成所述调度代码的处理,选择处理所述单位块所需要的所述特定用途处理器单元,并且选择至少一个通用处理器单元,将这些特定用途处理器单元和通用处理器单元作为一个分组来分配所述单位块。
19.根据权利要求13所述的多粒度并行化编译程序,其特征在于,生成所述执行代码、将其作为目的代码进行输出的处理,使用与所述各个处理器单元的种类对应的本地编译程序来生成所述执行代码。
20.根据权利要求16所述的多粒度并行化编译程序,其特征在于,所述多处理器系统,具有将多个时钟频率中的一个作为动作时钟供给所述处理器单元的时钟供给部;将多个电压中的一个作为动作电压供给所述处理器单元的功率供给部;和对所述时钟供给部以及功率供给部对处理器单元供给的动作时钟和动作电压进行设定的系统控制寄存器;生成所述调度代码的处理,包含以下的处理在用通过调度分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成对在所述系统控制寄存器中设定的值进行变更的控制代码。
21.一种多粒度并行化编译程序,其生成在具有多个单一或多种类的处理器单元的多处理器系统上执行的目的程序,其特征在于,使计算机执行以下的处理读入输入程序的处理;设定所述输入程序的执行应该结束的允许时间的处理;对所述输入程序进行分析,将所述输入程序分割为多个粒度的单位块的处理;对所述单位块之间的控制依存性以及数据依存性进行分析,提取所述单位块的并行性的处理;求出在所述多处理器系统具备的各个处理器单元中所述块单位块的运算所需要的成本信息的处理;根据所述成本信息,为使所述输入程序的处理时间在所述允许时间之内,生成将所述单位块分配给所述处理器单元的调度代码的处理;和将所述调度代码附加到输入程序,生成所述每个处理器单元的执行代码,并将其作为目的代码进行输出的处理。
22.根据权利要求21所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的运算周期时间。
23.根据权利要求21所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的功率。
24.根据权利要求21所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,包含以下的处理在用通过调度分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成用于变化或者切断给予处理器单元的动作电压以及动作时钟的控制代码。
25.根据权利要求21所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,对于通过调度分配了所述单位块的处理器单元之外的处理器单元,生成用于切断动作时钟以及动作电压的供给的控制代码。
26.根据权利要求21所述的多粒度并行化编译程序,其特征在于,所述处理器单元,包含特定用途处理器单元和通用处理器单元;所述生成所述调度代码的处理,选择处理所述单位块所需要的所述特定用途处理器单元,并且选择至少一个通用处理器单元,将这些特定用途处理器单元和通用处理器单元作为一个分组来分配所述单位块。
27.根据权利要求21所述的多粒度并行化编译程序,其特征在于,生成所述执行代码、将其作为目的代码进行输出的处理,使用与所述各个处理器单元的种类对应的本地编译程序来生成所述执行代码。
28.根据权利要求21所述的多粒度并行化编译程序,其特征在于,所述多处理器系统,具有将多个时钟频率中的一个作为动作时钟供给所述处理器单元的时钟供给部;将多个电压中的一个作为动作电压供给所述处理器单元的功率供给部;和对所述时钟供给部以及功率供给部对处理器单元供给的动作时钟和动作电压进行设定的系统控制寄存器;生成所述调度代码的处理,包含以下的处理在用通过调度分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成对在所述系统控制寄存器中设定的值进行变更的控制代码。
29.一种多粒度并行化编译程序,其生成在具有多个单一或多种类的处理器单元的多处理器系统上执行的目的程序,其特征在于,使计算机执行以下的处理读入输入程序的处理;设定所述输入程序的执行应该结束的允许时间的处理;对所述输入程序进行分析,将所述输入程序分割为多个粒度的单位块的处理;对所述单位块之间的控制依存性以及数据依存性进行分析,提取所述单位块的并行性的处理;对所述多处理器系统具备的各个处理器单元中所述块单位的运算所需要的功率成本进行估计的处理;为使所述输入程序的处理时间在所述允许时间之内,并且所述功率成本为最小,生成将所述单位块分配给所述处理器单元的调度代码的处理;和将所述调度代码附加给输入程序,生成所述每个处理器单元的执行代码,将其作为目的代码进行输出的处理。
30.根据权利要求29所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的运算周期时间。
31.根据权利要求29所述的多粒度并行化编译程序,其特征在于,求出所述成本信息的处理,作为成本信息求出所述处理器单元为了对所述单位块进行处理所需要的功率。
32.根据权利要求29所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,包含以下的处理在用通过调度分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成用于变化或者切断给予处理器单元的动作电压以及动作时钟的控制代码。
33.根据权利要求29所述的多粒度并行化编译程序,其特征在于,生成所述调度代码的处理,对于通过调度被分配了所述单位块的处理器单元之外的处理器单元,生成用于切断动作时钟以及动作电压的供给的控制代码。
34.根据权利要求29所述的多粒度并行化编译程序,其特征在于,所述处理器单元,包含特定用途处理器单元和通用处理器单元;所述生成所述调度代码的处理,选择处理所述单位块所需要的所述特定用途处理器单元,并且选择至少一个通用处理器单元,将这些特定用途处理器单元和通用处理器单元作为一个分组来分配所述单位块。
35.根据权利要求29所述的多粒度并行化编译程序,其特征在于,生成所述执行代码、将其作为目的代码进行输出的处理,使用与所述各个处理器单元的种类对应的本地编译程序来生成所述执行代码。
36.根据权利要求29所述的多粒度并行化编译程序,其特征在于,所述多处理器系统,具有将多个时钟频率中的一个作为动作时钟供给所述处理器单元的时钟供给部;将多个电压中的一个作为动作电压供给所述处理器单元的功率供给部;和对所述时钟供给部以及功率供给部对处理器单元供给的动作时钟和动作电压进行设定的系统控制寄存器;生成所述调度代码的处理,包含以下的处理在用通过调度被分配了所述单位块的处理器单元进行运算时,在所述运算所需要的时间在所述调度允许的时间之内时,为了降低所述处理器单元进行运算时消耗的功率,生成对在所述系统控制寄存器中设定的值进行变更的控制代码。
全文摘要
在多处理器系统中,由编译程序从成为处理对象的输入程序中自动提取具有并行性的任务,并通过按照各个处理器单元的特性配置该任务,由此,进行使该处理器单元高效动作的调度,而且,通过估计该处理器单元的处理量,生成使动作频率、电源电压最佳化的代码。
文档编号G06F12/06GK101019084SQ20068000066
公开日2007年8月15日 申请日期2006年4月12日 优先权日2005年4月12日
发明者笠原博德, 木村启二, 白子准, 伊藤雅树, 鹿野裕明 申请人:学校法人早稻田大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1