專利名稱:多處理器系統(tǒng)以及多粒度并行化編譯程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在由多個(gè)處理器單元構(gòu)成的多處理器系統(tǒng)中,可以使該多個(gè)處理器單元高效動(dòng)作的多處理器系統(tǒng)的硬件結(jié)構(gòu)以及生成程序的編譯程序。
背景技術(shù):
由于隨著半導(dǎo)體制造技術(shù)的進(jìn)步而導(dǎo)致的的元件的微細(xì)化,而可以集成數(shù)量巨大的集體管。與此同時(shí),處理器的高頻率化也在發(fā)展,但由于動(dòng)作時(shí)功率的增加,此外還由于泄漏電流引起的待機(jī)時(shí)功率的增加,現(xiàn)有的處理器通過(guò)一步步地提高動(dòng)作頻率以及改善邏輯方式實(shí)現(xiàn)的性能提高開(kāi)始出現(xiàn)局限。
因此,目前作為實(shí)現(xiàn)性能改善和低功率化的方法,頗具前景的的是在單片上搭載多個(gè)現(xiàn)有的被稱為CPU、DSP的處理器單元(以下稱為PU),來(lái)并行地進(jìn)行處理,由此,即使不提高動(dòng)作頻率也可以得到較高的運(yùn)算性能的多處理器系統(tǒng)(單片·多處理器系統(tǒng))。將來(lái),通過(guò)微細(xì)化的進(jìn)一步發(fā)展,可以預(yù)測(cè)還可以在單片上集成100個(gè)~1000個(gè)PU。
在這樣的多處理器系統(tǒng)中,為了得到與PU的數(shù)量成比例的運(yùn)算性能,需要使搭載的PU同時(shí)動(dòng)作來(lái)處理程序。但是,因?yàn)榘磿r(shí)間序列逐一地記述通常的輸入程序,所以即使搭載多個(gè)PU也無(wú)法得到與該多個(gè)PU成比例期待的運(yùn)算性能。
作為解決該問(wèn)題的一個(gè)方法,程序開(kāi)發(fā)者考慮自身程序的并行性,根據(jù)執(zhí)行該程序的多處理器系統(tǒng)的結(jié)構(gòu),需要附加用于通過(guò)多個(gè)PU執(zhí)行該程序的并行化代碼。但是,本方法雖然在具有數(shù)個(gè)PU的系統(tǒng)中有效,但在將來(lái)搭載了數(shù)十~數(shù)千個(gè)PU的系統(tǒng)中,此外特別是在具有不同種類的PU的結(jié)構(gòu)中,在開(kāi)發(fā)時(shí)間、實(shí)效性能方面是不實(shí)用的。
因此,已經(jīng)進(jìn)行了自動(dòng)并行化編譯程序的研究,該自動(dòng)并行化編譯程序在由結(jié)構(gòu)以及運(yùn)算性能相同的多個(gè)PU構(gòu)成的多處理器系統(tǒng)中,可以對(duì)輸入程序進(jìn)行分析,從該程序中提取可以并行動(dòng)作的部分,將該部分分配給多個(gè)PU來(lái)同時(shí)執(zhí)行。例如,在特開(kāi)2004-252728號(hào)公報(bào)中公開(kāi)了一種編譯方式,該編譯方式,其對(duì)輸入源程序進(jìn)行分析,將該程序分割為子程序或循環(huán)等各種粒度的塊(任務(wù)),對(duì)該多個(gè)任務(wù)間的并行性進(jìn)行分析,并且將任務(wù)和這些任務(wù)存取的數(shù)據(jù)分割為適合超高速緩沖存儲(chǔ)器或本地存儲(chǔ)器的大小,將其對(duì)各個(gè)PU最佳地分配這些任務(wù),由此,來(lái)生成使多處理器系統(tǒng)高效地動(dòng)作的目的程序。此外,作為支持多粒度并行處理的功能的芯片多處理器的體系結(jié)構(gòu),在特開(kāi)2001-175619號(hào)公報(bào)中進(jìn)行了公開(kāi)。
此外,為了降低功率消耗以及降低發(fā)熱,在多處理器系統(tǒng)中需要各PU的低功率化,但是,關(guān)于單個(gè)處理器的低功率化方法,已經(jīng)進(jìn)行了各種各樣的提案。例如,在專利第3138737號(hào)公報(bào)、特開(kāi)2004-234126號(hào)公報(bào)中公開(kāi)了在實(shí)時(shí)處理制約內(nèi)降低處理器的動(dòng)作時(shí)鐘,通過(guò)動(dòng)態(tài)控制與該時(shí)鐘頻率對(duì)應(yīng)的電壓提供給處理器的、頻率·電壓來(lái)實(shí)現(xiàn)低功率化的方法。
此外,在特開(kāi)2004-252900號(hào)公報(bào)中公開(kāi)了在判明了圖像處理等預(yù)處理的順序的應(yīng)用程序中,按照各處理的特性來(lái)組合CPU、DSP等不同種類的多個(gè)處理器,并預(yù)先測(cè)定給出在該處理器上的處理時(shí)間和消耗功率信息,由此,根據(jù)該信息動(dòng)態(tài)地將一連串的處理分配給該各個(gè)處理器的方法。
發(fā)明內(nèi)容
目前,在汽車的導(dǎo)航系統(tǒng)、移動(dòng)電話、數(shù)字電視等,產(chǎn)生同時(shí)處理圖像、聲音、數(shù)據(jù)庫(kù)信息等多種數(shù)據(jù)的新應(yīng)用程序的裝置中,為了使用對(duì)各個(gè)該數(shù)據(jù)最佳的方法來(lái)同時(shí)處理多個(gè)種類的輸入數(shù)據(jù),可以考慮處理器搭載多個(gè)種類的PU。在現(xiàn)有的多處理器系統(tǒng)中,如上述特開(kāi)2004-252728號(hào)公報(bào)所公開(kāi)的那樣,為搭載了多個(gè)相同結(jié)構(gòu)的PU的同構(gòu)的處理器系統(tǒng)。
但是,如此,在多個(gè)種類的PU上同時(shí)處理多種應(yīng)用程序的面向未來(lái)的非同構(gòu)多處理器系統(tǒng)中,存在以下的問(wèn)題為了與搭載的PU的種類和數(shù)量成比例地得到處理性能,需要考慮PU的種類來(lái)進(jìn)行程序的并行化和配置。
此外,目前,為了在多個(gè)PU上高效地執(zhí)行程序,在小規(guī)模的程序或可以始終固定地執(zhí)處理順序的情況下,為了得到用于進(jìn)行調(diào)度的執(zhí)行時(shí)間等調(diào)度信息,需要在該系統(tǒng)上執(zhí)行一次程序來(lái)測(cè)定處理時(shí)間等,開(kāi)發(fā)者需要根據(jù)該測(cè)定值預(yù)先手動(dòng)生成該調(diào)度信息,需要較大的勞力和時(shí)間。
此時(shí),在事先處理的內(nèi)容或順序不明的一般程序的情況下,特別是在規(guī)模較大的程序的情況下,難以通過(guò)手動(dòng)事先生成該信息。此外,在PU的種類或數(shù)量增加的情況下也同樣難以通過(guò)手動(dòng)生成該信息。
此外,在搭載了多個(gè)PU的系統(tǒng)中,因?yàn)閾?dān)心全部處理器消耗功率增大,所以特別是在考慮到用于移動(dòng)電話等移動(dòng)設(shè)備、或家庭使用的數(shù)字電視等設(shè)備時(shí),不僅需要基于現(xiàn)有的OS的FV(動(dòng)作頻率和驅(qū)動(dòng)電壓)控制,還需要根據(jù)基于各應(yīng)用程序內(nèi)的軟件的各個(gè)PU的處理狀況,進(jìn)行極細(xì)致的電源管理和動(dòng)作頻率控制。
特別是需要不降低處理性能地降低消耗功率。此外,即使在執(zhí)行要求實(shí)時(shí)處理的程序時(shí),也必須既要遵守時(shí)間制約又要降低功率。
因此,本發(fā)明的目的在于提供一種在搭載多個(gè)種類的PU的多處理器系統(tǒng)中,從成為處理對(duì)象的輸入程序中自動(dòng)地提取具有并行化的任務(wù),按照各PU的特性來(lái)配置該任務(wù),由此使該P(yáng)U高效地動(dòng)作,而且,通過(guò)推測(cè)該P(yáng)U的處理量來(lái)生成使動(dòng)作頻率和電源電壓最佳化的代碼,并將該代碼附加給目的程序的譯碼器以及可以使其最佳化的多處理器系統(tǒng)。
因此,根據(jù)本發(fā)明,在集成了多個(gè)處理器單元的多處理器系統(tǒng)中,通過(guò)使該處理器單元高效動(dòng)作的程序分割裝置以及生成控制代碼(執(zhí)行代碼)的編譯程序,可以最大限度地發(fā)揮該處理器系統(tǒng)的性能,同時(shí)使處理時(shí)間最短,而且可以以低功率高效地進(jìn)行處理。此外,軟件開(kāi)發(fā)者無(wú)需意識(shí)處理單元的結(jié)構(gòu),就可以在短時(shí)間內(nèi)高效地生成程序。
此外,在對(duì)輸入程序進(jìn)行編譯時(shí),根據(jù)處理器單元的結(jié)構(gòu)編譯程序預(yù)先估計(jì)事先的處理時(shí)間,對(duì)于在編譯時(shí)可以靜態(tài)地決定處理順序的部分事先決定處理順序,此外,對(duì)于在不到執(zhí)行時(shí)無(wú)法決定處理順序的部分,編譯程序生成動(dòng)態(tài)地進(jìn)行基于包含了執(zhí)行時(shí)間的處理信息的調(diào)度的程序,由此,可以在由多個(gè)種類的處理器單元構(gòu)成的多處理器系統(tǒng)中高效地處理一般的程序。
此外,編譯程序?qū)斎氤绦蜻M(jìn)行分析,在事先決定了處理順序后估計(jì)處理時(shí)間,查看對(duì)于時(shí)間制約的該處理時(shí)間的裕度來(lái)對(duì)每個(gè)處理器單元極細(xì)致地進(jìn)行電壓管理、頻率控制,由此可以大幅降低功率。
此外,在由不同種類的處理器單元構(gòu)成的多處理器中,在為了使執(zhí)行時(shí)間最小對(duì)輸入程序進(jìn)行并行化并且進(jìn)行了調(diào)度之后,為了使各處理器單元之間處理時(shí)間最小,對(duì)每個(gè)處理器單元極細(xì)致地進(jìn)行動(dòng)作頻率控制以及電源管理,由此,可以無(wú)損性能地使功率最佳化。
圖1是表示本發(fā)明一實(shí)施方式的電源·頻率生成型多處理器系統(tǒng)的框圖。
圖2是電源電壓生成電路的框圖。
圖3是降壓電路的框圖。
圖4是供給電壓選擇電路的框圖。
圖5是時(shí)鐘生成電路的框圖。
圖6是時(shí)鐘脈沖選擇器的框圖。
圖7是表示多處理器系統(tǒng)其他例子的、匯集了電源電壓生成電路和時(shí)鐘生成電路的電源·頻率選擇型多處理器系統(tǒng)的框圖。
圖8是表示多處理器系統(tǒng)其他例子的、匯集了各處理器單元的FV控制寄存器的、具有FV控制表的多處理器系統(tǒng)的框圖。
圖9是表示基于FV控制的處理器單元的動(dòng)作模式的說(shuō)明圖。
圖10a表示本地存儲(chǔ)器的FV控制,是表示由多個(gè)存儲(chǔ)體構(gòu)成本地存儲(chǔ)器LM對(duì)每個(gè)存儲(chǔ)體進(jìn)行FV控制的例子的說(shuō)明圖。
圖10b表示本地存儲(chǔ)器的FV控制,是表示在本地存儲(chǔ)器LM中對(duì)每個(gè)地址空間進(jìn)行FV控制的例子的說(shuō)明圖。
圖10c表示本地存儲(chǔ)器的FV控制,是表示對(duì)每個(gè)在多個(gè)存儲(chǔ)體中設(shè)定的地址空間進(jìn)行FV控制的例子的說(shuō)明圖。
圖11是由縱橫開(kāi)關(guān)構(gòu)成本地總線時(shí)的電源控制的說(shuō)明圖。
圖12是圖11所示的本地總線LBUS的結(jié)構(gòu)圖。
圖13是表示基于FV控制的本地存儲(chǔ)器LM的動(dòng)作模式的說(shuō)明圖。
圖14a表示FV控制寄存器格式,是表示由四個(gè)存儲(chǔ)體構(gòu)成本地存儲(chǔ)器LM時(shí)的寄存器格式的說(shuō)明圖。
圖14b表示FV控制寄存器格式,是與圖14a相同地表示寄存器的設(shè)定例的說(shuō)明圖。
圖14c表示FV控制寄存器格式,是表示其他寄存器格式的說(shuō)明圖,是將LM設(shè)為4存儲(chǔ)體結(jié)構(gòu),對(duì)每個(gè)控制對(duì)象分配地址的FV控制寄存器格式的例子。
圖15是表示圖8所示的FV設(shè)定表的格式的例子的說(shuō)明圖。
圖16是表示FV控制寄存器的映射的整個(gè)多處理器系統(tǒng)的存儲(chǔ)器映射表的說(shuō)明圖。
圖17a表示FV控制寄存器訪問(wèn)的例子,是表示CPU0對(duì)DSP0的FV控制寄存器進(jìn)行訪問(wèn)的例子的說(shuō)明圖。
圖17b表示FV控制寄存器訪問(wèn)的例子,是表示CPU0對(duì)DSP0的FV控制寄存器進(jìn)行訪問(wèn)時(shí)目標(biāo)代碼的例子的說(shuō)明圖。
圖17c表示FV控制寄存器訪問(wèn)的例子,是表示用OS的API操作FV控制寄存器時(shí)的目標(biāo)代碼的例子的說(shuō)明圖。
圖18a表示并行處理任務(wù)時(shí)的FV控制的概念,是表示宏任務(wù)并行執(zhí)行依存性的宏任務(wù)圖。
圖18b表示并行處理任務(wù)時(shí)的FV控制的概念,表示不進(jìn)行FV控制時(shí)(FULL模式)的甘特圖。
圖18c表示并行處理任務(wù)時(shí)的FV控制的概念,是表示使CPU持續(xù)動(dòng)作時(shí)的FV控制的例子的甘特圖。
圖18d表示并行處理任務(wù)時(shí)的FV控制的概念,是表示暫時(shí)使CPU停止時(shí)的FV控制的例子的甘特圖。
圖19a表示實(shí)時(shí)制約時(shí)的FV控制,是通常處理的實(shí)時(shí)處理的甘特圖。
圖19b表示實(shí)時(shí)制約時(shí)的FV控制,是表示使CPU持續(xù)動(dòng)作時(shí)的FV控制的例子的甘特圖。
圖19c表示實(shí)時(shí)制約時(shí)的FV控制,是表示暫時(shí)使CPU停止時(shí)的FV控制的例子的甘特圖。
圖20是表示編譯程序的處理的流程圖。
圖21是表示輸入程序的一例的源代碼。
圖22是編譯程序生成的任務(wù)之間的依存關(guān)系圖。
圖23是表示任務(wù)·FV控制調(diào)度結(jié)果的時(shí)序圖。
圖24表示編譯程序生成的代碼的一個(gè)例子,是表示面向CPU0、DSP0、DRP0、BRP1的代碼的說(shuō)明圖。
圖25同樣表示編譯程序生成的代碼的一個(gè)例子,是表示面向CPU1、DSP1、BMP0、BMP1的代碼的說(shuō)明圖。
具體實(shí)施例方式
以下,根據(jù)附圖對(duì)本發(fā)明的一實(shí)施方式進(jìn)行說(shuō)明。
(實(shí)施方式的全體結(jié)構(gòu))圖1表示本發(fā)明一實(shí)施方式的多處理器系統(tǒng)的結(jié)構(gòu)。在圖1中,多處理器系統(tǒng)以多個(gè)不同種類的處理器單元(以下稱為PU)10~17、和這些共享存儲(chǔ)器(以下成為SM)18為主體構(gòu)成。該各個(gè)PU10~17經(jīng)由各自的總線接口(BIF)27與本地總線(稱為L(zhǎng)BUS)19連接。SM18與LBUS19連接,可以從各PU10~17進(jìn)行訪問(wèn)。該各PU10~17連接了對(duì)該P(yáng)U供給電源電壓以及動(dòng)作時(shí)鐘的電源電壓生成電路(DCGEN)20以及時(shí)鐘生成電路(CLKGEN)21。此外,本多處理器系統(tǒng)表示由不同種類的處理器單元構(gòu)成的非同構(gòu)多處理器系統(tǒng)的例子。
在本實(shí)施方式中,表示由PU的種類以及數(shù)量為兩個(gè)通用處理處理器(以下為CPU)10、11,兩個(gè)信號(hào)處理處理器(以下為DSP)14、15,兩個(gè)動(dòng)態(tài)可重構(gòu)處理器(以下為DRP)16、17,以及兩個(gè)位運(yùn)算處理處理器(以下為BMP)12、13構(gòu)成的例子。此外,上述PU的種類以及數(shù)量并不限于本實(shí)施方式表示的例子,可以采用各種各樣的結(jié)構(gòu)。此外,可以是僅由現(xiàn)有相同種類的PU的結(jié)構(gòu)(例如僅由四個(gè)CPU構(gòu)成)。此外,在本實(shí)施方式中,將DSP(0、1)14、15,DRP(0、1)16、17以及BMP(0、1)作為特定用途處理器單元,將CPU(0、1)10、11作為通用處理器單元。
此外,動(dòng)態(tài)可重構(gòu)處理器16、17是指可以動(dòng)態(tài)地重新構(gòu)成處理電路的處理器,可以在限定的內(nèi)核內(nèi)虛擬地變更電路。
上述各PU10~17,具備暫時(shí)保存各PU處理的程序、數(shù)據(jù)的本地存儲(chǔ)器(或者超高速緩沖存儲(chǔ)器)(LM)24、以及用于進(jìn)行頻率·電源電壓(FV)控制和PU間同步控制的系統(tǒng)控制寄存器(R)25,頻率·電源電壓(FV)控制決定對(duì)該P(yáng)U的供給電壓(VL)、動(dòng)作頻率(FL)。此外,本地存儲(chǔ)器(LM)24被劃分為對(duì)其他PU以及具有該LM的自身PU可以訪問(wèn)的全局地址進(jìn)行了映射的區(qū)域,和對(duì)只有該自身PU可以訪問(wèn)的專用地址進(jìn)行了映射的區(qū)域。此外,與LBUS19連接的共享存儲(chǔ)器(SM)18對(duì)全局地址進(jìn)行了映射,可以從多個(gè)PU進(jìn)行訪問(wèn)。此外,以上只是本發(fā)明應(yīng)用構(gòu)成的一個(gè)例子,作為實(shí)施方式并不限于此。例如,雖然在圖1中沒(méi)有表現(xiàn),但根據(jù)需要在LBUS19上可連接輸入輸出處理、中斷處理、計(jì)時(shí)器、除錯(cuò)電路等周邊電路。此外,還可以經(jīng)由總線橋分級(jí)連接相同種類或不同種類的總線。
此外,在各個(gè)PU10~17共享的SM18中具備系統(tǒng)控制寄存器(R)181,其用于設(shè)定對(duì)SM18供給的供給電壓(VL)、動(dòng)作頻率(FL),進(jìn)行頻率·電源電壓(FV)控制。此外,在相互連接所述PU以及所述SM的本地總線19中具備系統(tǒng)控制寄存器R191,其用于設(shè)定對(duì)LBUS供給的VL、FL,進(jìn)行FV控制。此外,還可以取代該系統(tǒng)控制寄存器(R)181,對(duì)各個(gè)PU10~17的系統(tǒng)控制寄存器(R)25設(shè)置SM18以及LBUS19的FV控制用寄存器。此外,系統(tǒng)控制寄存器(R)181由PU10~17中的某一個(gè)進(jìn)行設(shè)定。
此外,雖然表示了在一個(gè)芯片(LSI)上構(gòu)成上述PU10~17的情況,但還可以將構(gòu)成PU10~17的多個(gè)LSI進(jìn)行結(jié)合,來(lái)作為一個(gè)芯片或模塊。
此外,SM18可以由每個(gè)種類的處理器(每個(gè)CPU、DSP、DRP、BMP)共享,例如,如后述的圖10a~圖10c所示,將SM18的區(qū)域分割為存儲(chǔ)體,也可以由每個(gè)種類的處理器共享各存儲(chǔ)體。或者可以由多個(gè)PU共享SM18的一部分。
(電壓·頻率可變電路)然后,對(duì)與各個(gè)PU連接的電源電壓生成電路(DCGEN)20以及時(shí)鐘生成電路(CLKGEN)21的結(jié)構(gòu)進(jìn)行說(shuō)明。
圖2表示DCGEN20的結(jié)構(gòu)。DCGEN20由把外部供給的通常的電源電壓(VD)降壓(或者升壓)為預(yù)先指定的多個(gè)供給電壓(VL)205的電路(DCCNV)206、從所生成的多個(gè)該供給電壓選擇向PU供給的電壓的供給電壓選擇電路(VDSEL)203、以及切斷電源電壓的電路(后述)構(gòu)成。
此外,降壓(或者升壓)電路(DCCNV)206,包含多個(gè)電壓降低部,例如如圖2所示,由原樣供給電源電壓VD的電路22’、將電源電壓VD降低至3/4的降壓電路(LVCNV)201、將電源電壓VD降低至1/2的降壓電路(LVCNV)202構(gòu)成。
各PU10~17,根據(jù)在該P(yáng)U具有的系統(tǒng)控制寄存器(R)25內(nèi)的FV控制寄存器中設(shè)定的FV(驅(qū)動(dòng)頻率以及驅(qū)動(dòng)電壓)模式經(jīng)由控制線路(DCCL)204控制供給電壓選擇電路(VDSEL)203,由此,從降壓電路(DCCNV)206生成的多個(gè)電壓中選擇某一個(gè)電壓,并將該選擇出的供給電壓VL供給給對(duì)應(yīng)的PU10~17。此外,F(xiàn)V控制寄存器被設(shè)定在系統(tǒng)控制寄存器25內(nèi)的規(guī)定區(qū)域中。
圖3表示降低電源電壓的電路(LVCNV)的結(jié)構(gòu)的一例。上述圖2的降壓電路LVCN201、202,由決定供給電壓(3/4VD)的參照電壓生成電路(VREF)207以及降壓至參照電壓指定的電壓對(duì)PU供給電流的電源生成電路(VGEN)208構(gòu)成,將電源生成電路208的輸出輸入給圖2的供給電壓選擇電路203。
降壓電路LVCNV輸出電壓(VCNV)由決定參照電壓的參照電壓生成電路(VREF)207內(nèi)的nMOSFET的級(jí)數(shù)決定,決定LVCNV的結(jié)構(gòu),以使供給由FV控制寄存器指定的電壓。從通過(guò)以上電路降壓的多個(gè)電壓中選擇由來(lái)自PU的由控制線204指定的電壓,向各PU10~17進(jìn)行輸出(205)。
圖4表示供給電壓選擇電路(VDSEL)203的結(jié)構(gòu)的一例。供給電壓選擇線路(VDSEL)203由控制信號(hào)解碼部2031和電壓選擇開(kāi)關(guān)2032構(gòu)成。此外,通過(guò)在PU的源電壓供給部中插入閾值高的nMOSFET209,可以降低切斷該P(yáng)U的電源時(shí)流動(dòng)的泄漏電流。此外,圖3、圖4的結(jié)構(gòu)不只是用于實(shí)現(xiàn)降壓電路LVCNV功能的一個(gè)結(jié)構(gòu),還可以應(yīng)用其他各種各樣的電源電壓生成電路方式。
然后,在圖5中對(duì)時(shí)鐘生成電路(CLKGEN)21的結(jié)構(gòu)的一例進(jìn)行說(shuō)明。CLKGEN21,由時(shí)鐘脈沖選擇器(CLKSEL)214構(gòu)成,該時(shí)鐘脈沖選擇器,從把內(nèi)部時(shí)鐘FC(23)降低為該內(nèi)部時(shí)鐘的1/2、1/4等將內(nèi)部時(shí)鐘FC降低為整數(shù)分之一的分頻電路212、213,以及分頻生成的多個(gè)時(shí)鐘中,選擇向該P(yáng)U進(jìn)行供給的時(shí)鐘(FL)216。此外,在PLL(Phase Locked Loop)電路211中,通過(guò)對(duì)從外部輸入的系統(tǒng)時(shí)鐘按指定的倍增率進(jìn)行倍增生成內(nèi)部時(shí)鐘FC(23)。
圖6表示時(shí)鐘脈沖選擇器(CLKSEL)214的結(jié)構(gòu)的一個(gè)例子。CLKSEL214由輸入控制信號(hào)CKCL的解碼部2171和時(shí)鐘信號(hào)選擇部2172構(gòu)成。各個(gè)PU通過(guò)該P(yáng)U具有的FV控制寄存器的模式經(jīng)由控制線路(CKCL)215控制DCSEL214,由此從生成的多個(gè)時(shí)鐘中選擇指定的FL,接受該時(shí)鐘FL216的供給。
此外,除了上述圖1所示的結(jié)構(gòu)之外,如圖7所示,可以是以下的結(jié)構(gòu)對(duì)多個(gè)PU(或者全部PU)各附加一個(gè)變更電源電壓、時(shí)鐘脈沖的電路(DCCNV206、CLKCNV217),并且還在各個(gè)PU一側(cè)附加對(duì)生成的多個(gè)種類的電源電壓以及時(shí)鐘脈沖進(jìn)行選擇的電路(203、214)。在圖7的例子中,表示兩組電源電壓生成電路206和時(shí)鐘生成電路217分別對(duì)四個(gè)PU供給電力和時(shí)鐘的情況。
如此,生成、供給電源電壓以及時(shí)鐘脈沖的電路可以采取各種結(jié)構(gòu),其結(jié)構(gòu)并不限于上述表示的結(jié)構(gòu)。例如,可以為以下的結(jié)構(gòu)對(duì)多個(gè)PU(或者全部PU)附加一個(gè)對(duì)電源電壓進(jìn)行轉(zhuǎn)換的電路DCCNV206,并在PU一側(cè)對(duì)每個(gè)PU附加生成時(shí)鐘脈沖的電路CLKCNV217。此外,例如可以為以下的結(jié)構(gòu)對(duì)多個(gè)PU(或者全部PU)附加一個(gè)生成時(shí)鐘脈沖的電路CLKCNV217,并在PU一側(cè)對(duì)每個(gè)PU附加對(duì)電源電壓進(jìn)行轉(zhuǎn)換的電路DCCNV206。此外,例如可以為以下的結(jié)構(gòu)不在芯片內(nèi)搭載DCCNV206,輸入在芯片外部生成的多個(gè)種類的電源電壓,由VDSEL選擇供給希望的供給電壓VL205。
此外,作為設(shè)定FV控制模式的單元,除了圖1和圖7所示的各PU具有進(jìn)行該P(yáng)U的FV控制的FV控制寄存器(系統(tǒng)控制寄存器(R)25)的結(jié)構(gòu)之外,如圖8所示,還可以采用將總括保存各PU10~17的FV控制模式的FV控制表(FVTBL)26與LBUS19連接的結(jié)構(gòu)。在圖8中,把圖1中在系統(tǒng)寄存器25中包含的FV控制寄存器,集合為與本地總線LBUS19連接的FV控制表26。
FV控制表(FVTBL)26可以由各個(gè)PU10~17訪問(wèn),且可以設(shè)定在共享存儲(chǔ)器SM的一部分中,也可以由與共享存儲(chǔ)器SM獨(dú)立的存儲(chǔ)器(或者寄存器)構(gòu)成。
(總線IF)如上,因?yàn)楦鱾€(gè)PU10~17可以單獨(dú)地設(shè)定電源電壓,所以在與該P(yáng)U連接的LBUS19之間,信號(hào)的電壓等級(jí)不同。因此,在PU10~17與LBUS19之間連接的總新接口(BIF)27具備信號(hào)信號(hào)電平轉(zhuǎn)換電路(省略圖示),進(jìn)行總線LBUS19和PU10~17之間的信號(hào)電平轉(zhuǎn)換。
(針對(duì)PU的電壓·頻率模式的給予方法)然后,對(duì)決定由電源電壓生成電路(DCGEN)20以及時(shí)鐘生成電路(CLKGEN)21生成的電源電壓(VL)205以及動(dòng)作時(shí)鐘(FL)216的硬件結(jié)構(gòu)進(jìn)行說(shuō)明。
在設(shè)計(jì)時(shí)預(yù)先決定電源電壓生成電路(DCGEN)20以及時(shí)鐘生成電路(CLKGEN)21的動(dòng)作模式(供給的VL、FL值),各個(gè)PU針對(duì)所述電路根據(jù)該P(yáng)U具備的FV控制寄存器的值,經(jīng)由控制線路DCCL、CKCL進(jìn)行指定。關(guān)于VL、FL的設(shè)定方法在后面進(jìn)行詳細(xì)地?cái)⑹?,編譯程序生成設(shè)置FV控制寄存器的控制代碼,執(zhí)行該代碼的通用處理器CPU0或CPU1,對(duì)存儲(chǔ)器映射的FV控制寄存器進(jìn)行訪問(wèn)來(lái)改寫值。
本實(shí)施方式的PU10~17的FV模式,將VL、FL的組合設(shè)定為4個(gè)階段(FV控制寄存器內(nèi)的2位)。圖9表示PU10~17動(dòng)作模式一覽表。即,在FV控制寄存器的2位的值在“00”中設(shè)定為VL=0,F(xiàn)L=0的成為電壓·頻率切斷的OFF模式,在上述寄存器值為“11”中,設(shè)定VL=VD與系統(tǒng)的電源電壓等價(jià)、FL=FC與系統(tǒng)的動(dòng)作頻率等價(jià)的FULL模式。
此外,在寄存器值為“01”中,設(shè)定為VL=(1/2)VD,F(xiàn)L=(1/4)FC的LOW模式,在寄存器值為“10”中,設(shè)定為VL=(3/4)VD,F(xiàn)L=(1/2)FC的MIDDLE模式。此外,VL·FL模式的數(shù)量、VD·FL值,根據(jù)所構(gòu)筑的系統(tǒng)的形式、應(yīng)用程序、使用的處理技術(shù)等決定。
(PU內(nèi)的部分的FV控制)以上,假定將FV控制對(duì)象的范圍設(shè)為全部PU,總括設(shè)定FV控制模式來(lái)進(jìn)行了說(shuō)明,但還可以對(duì)PU10~17搭載的本地存儲(chǔ)器(LM)、FV控制寄存器、其他的處理器周邊電路進(jìn)行各種各樣的FV控制模式設(shè)定。這可以通過(guò)擴(kuò)展FV控制寄存器的位域,使其具有設(shè)定與被FV控制部對(duì)應(yīng)的FV控制模式的域來(lái)實(shí)現(xiàn)。例如,對(duì)于本地存儲(chǔ)器LM或系統(tǒng)控制寄存器(R)25數(shù)據(jù)保存所需要的電路,可以考慮采用獨(dú)立設(shè)定FV、VL的機(jī)構(gòu)。即,通過(guò)對(duì)本地存儲(chǔ)器LM、FV控制寄存器獨(dú)立地進(jìn)行FV控制,即使所述PU的FV為切斷狀態(tài),也可以保存該LM以及R的數(shù)據(jù),此外,在對(duì)象PU為切斷狀態(tài)時(shí),也可以從其他的PU對(duì)該P(yáng)U的LM進(jìn)行訪問(wèn)。
此外,還可以根據(jù)本地存儲(chǔ)器LM的結(jié)構(gòu),設(shè)定多個(gè)FV控制對(duì)象。圖10a~10c表示針對(duì)本地存儲(chǔ)器LM的FV控制方式。
例如,如圖10a所示,使本地存儲(chǔ)器LM成為存儲(chǔ)體結(jié)構(gòu),對(duì)每個(gè)存儲(chǔ)體(Bank1~Bank3)分別執(zhí)行FV控制。因此,對(duì)各個(gè)Bank1~Bank3分別連接供給電壓選擇電路(VDSEL)203。
即,只對(duì)保存數(shù)據(jù)所需要的存儲(chǔ)體供給通常電壓,或者供給保存數(shù)據(jù)所需要的最低限度的電壓,該存儲(chǔ)體以外的存儲(chǔ)體切斷電源,由此可以削減功率,并且因?yàn)闊o(wú)需進(jìn)行數(shù)據(jù)的退避處理,所以可以高速地進(jìn)行從電源切斷時(shí)向通常動(dòng)作時(shí)的恢復(fù)。
此外,還如圖10b所示,按照一定的連續(xù)的地址空間(Area1~Area4)分割本地存儲(chǔ)器LM的地址空間,以該空間為單位進(jìn)行FV控制,由此通過(guò)切斷不需要的地址空間(存儲(chǔ)區(qū)域)的電源可以削減功率。
因此,對(duì)每個(gè)本地存儲(chǔ)器LM的各個(gè)地址空間(Area1~Area4)連接供給電壓選擇電路(VDSEL)203。
此外,如圖10c所示,在本地存儲(chǔ)器LM為存儲(chǔ)體結(jié)構(gòu)時(shí),以按照跨越各個(gè)存儲(chǔ)體(Bank0~3)的一定的連續(xù)的地址空間(Area1~Area4)進(jìn)行分割的單位進(jìn)行FV控制。
因此,對(duì)跨越本地存儲(chǔ)器LM的各個(gè)Bank0~3的每個(gè)地址空間(Area1~Area4)連接供給電壓選擇電路(VDSEL)203。根據(jù)該結(jié)構(gòu),可以實(shí)現(xiàn)活用存儲(chǔ)體結(jié)構(gòu)使存儲(chǔ)器訪問(wèn)高速化的存儲(chǔ)器交叉存取,并且可以實(shí)現(xiàn)低功率化。
此外,本地存儲(chǔ)器LM,可以分割為僅可以僅由功能性地搭載該LM的PU進(jìn)行訪問(wèn)的部分(非共享存儲(chǔ)器)、和不僅由該P(yáng)U由其他的PU也可以訪問(wèn)的部分(分散共享存儲(chǔ)器)來(lái)進(jìn)行安裝,還可考慮按照以上兩個(gè)存儲(chǔ)器功能單位進(jìn)行FV控制。因此,雖然沒(méi)有圖示,但對(duì)每個(gè)上述非共享存儲(chǔ)器和分散共享存儲(chǔ)器的區(qū)域分別連接供給電壓選擇電路(VDSEL)。
此外,圖10a~圖10c表示的存儲(chǔ)器分割方法,對(duì)于所述存儲(chǔ)器功能單位、還有共享存儲(chǔ)器等系統(tǒng)搭載的各種各樣的存儲(chǔ)器、功能部位單位,也可以同樣地適用。例如,對(duì)于在PU外配置的共享存儲(chǔ)器SM,也可以使其成為多個(gè)存儲(chǔ)體結(jié)構(gòu),對(duì)應(yīng)針對(duì)各個(gè)存儲(chǔ)體的訪問(wèn)頻度、系統(tǒng)狀態(tài)(準(zhǔn)備、睡眠)進(jìn)行其他的FV控制。
例如,通過(guò)代替本地存儲(chǔ)器LM將圖10a的結(jié)構(gòu)用于共享存儲(chǔ)器SM18,并將共享存儲(chǔ)器SM18分割為存儲(chǔ)體(Bank0~3),對(duì)每個(gè)存儲(chǔ)體連接供給電壓選擇電路(VDSEL)203,由此可以以存儲(chǔ)體為單位進(jìn)行功率控制。此外,通過(guò)代替本地存儲(chǔ)器LM將圖10b的結(jié)構(gòu)用于共享存儲(chǔ)器SM18,按照一定的連續(xù)的地址空間(Area1~Area4)分割共享存儲(chǔ)器SM18的地址空間,以該空間為單位進(jìn)行FV控制,由此,可以通過(guò)切斷不需要的地址空間(存儲(chǔ)區(qū)域)的電源來(lái)削減功率。此外,還可以代替本地存儲(chǔ)器LM將圖10c的結(jié)構(gòu)用于共享存儲(chǔ)器SM18,以按照跨越各個(gè)存儲(chǔ)體(Bank0~3)的一定的連續(xù)的地址空間(Area1~Area4)進(jìn)行分割的單位進(jìn)行FV控制(功率控制)。此外,在將圖10a~圖10c用于共享存儲(chǔ)器SM18的情況下,將圖中的[LM]改讀作[SM]。
(針對(duì)本地存儲(chǔ)器LM的FV控制模式)作為將FV控制對(duì)象設(shè)為PU內(nèi)的多個(gè)部分(功能部分)的例子,在下面對(duì)對(duì)于本地存儲(chǔ)器LM與PU獨(dú)立地進(jìn)行FV控制的方法進(jìn)行說(shuō)明。在本例中,如圖10a所示,本地存儲(chǔ)器LM由4個(gè)存儲(chǔ)體(Bank0~3)構(gòu)成,F(xiàn)V控制對(duì)象是PU以及每個(gè)LM存儲(chǔ)體。
PU的FV控制模式與上述圖9所示的相同。圖13表示本地存儲(chǔ)器LM的FV控制模式的一覽表。關(guān)于LM的動(dòng)作模式,因?yàn)閷?duì)象是存儲(chǔ)器,所以在本實(shí)施方式中為可以進(jìn)行通常存儲(chǔ)器訪問(wèn)以及數(shù)據(jù)保存的通常動(dòng)作模式(VL=VD,F(xiàn)L=FC,寄存器值“11”)、無(wú)法進(jìn)行存儲(chǔ)器訪問(wèn)但可以進(jìn)行數(shù)據(jù)保存的數(shù)據(jù)保存模式(VL=1/2VD,F(xiàn)L=0,寄存器值“01”)、以及不進(jìn)行數(shù)據(jù)保存完全切斷電源的電源切斷模式(VL=0,F(xiàn)L=0,寄存器值“00”)的三個(gè)模式。
然后,如圖10a或者圖10c所示,由多個(gè)存儲(chǔ)體構(gòu)成本地存儲(chǔ)器LM,在圖14a中表示與每個(gè)存儲(chǔ)體的FV控制對(duì)應(yīng)的FV控制寄存器的格式。在本例中,對(duì)于每個(gè)PU10~17將FV控制寄存器1250映射為一個(gè)存儲(chǔ)器地址,在該區(qū)域(映射的地址)對(duì)每個(gè)控制對(duì)象決定FV控制模式。如圖所示,在一個(gè)區(qū)域?yàn)?2位時(shí),即,將位1、0作為PU的FV控制模式(PUFV);將位3、2作為L(zhǎng)M存儲(chǔ)體0(Bank0)的FV控制模式(LM0FV);將位5、4作為L(zhǎng)M存儲(chǔ)體1(Bank1)的FV控制模式(LM1FV);將位7、6作為L(zhǎng)M2(Bank2)的FV控制模式(LM2FV);將位9、8作為L(zhǎng)M存儲(chǔ)體3(Bank3)的FV控制模式(LM3FV),來(lái)訪問(wèn)希望的區(qū)域,根據(jù)圖13的表決定本地存儲(chǔ)器LM的動(dòng)作模式,來(lái)進(jìn)行FV控制。此外,PU的動(dòng)作模式根據(jù)圖9的表來(lái)決定。
圖14b表示FV控制寄存器1250的設(shè)定例。在本例中,PU的模式在圖14a的PUFV中設(shè)定MIDDLE(“1、0”);為了僅激活本地存儲(chǔ)器LM的存儲(chǔ)體0使其進(jìn)行通常動(dòng)作,在LM0FV中設(shè)定“1、1”,為了LM的存儲(chǔ)體1成為數(shù)據(jù)保存模式在LM1FV中設(shè)定“1、0”;存儲(chǔ)體2以及存儲(chǔ)體3在LM2FV、LM3FV中設(shè)定“0、0”作為電源切斷。
此外,除了上述之外,還可以采用對(duì)于FV控制寄存器,對(duì)每個(gè)控制對(duì)象分配地址的結(jié)構(gòu)。例如,如圖14c所示,表示對(duì)每個(gè)FV控制對(duì)象,將寄存器映射為存儲(chǔ)器地址的FV控制寄存器的格式。在圖14c中,按照地址的順序存儲(chǔ)表示PU的FV控制模式和LM的FV控制模式的PUFV、LM0FV~LM3FV。
如上述圖14a所示,當(dāng)在FV控制寄存器的位域切斷控制對(duì)象的FV控制模式時(shí),需要用于設(shè)定該域的值的比特運(yùn)算,但在圖14c的結(jié)構(gòu)中,直接訪問(wèn)直接映射了該控制對(duì)象寄存器的地址即可,所以可以削減與FV控制寄存器的設(shè)定有關(guān)的命令數(shù)。但是相反,與圖14a相比需要較多的地址資源。
以上,作為通過(guò)設(shè)定各PU具有的FV控制寄存器來(lái)設(shè)定PU、LM的FV控制模式的例子進(jìn)行了說(shuō)明,但如圖8所示,在作為與本地總線LBUS19連接的FV控制表(FVTBL)26,具有表示各PU10~17的FV控制模式的FV控制寄存器的情況下,如圖15所示,構(gòu)成該FVTBL。
圖15表示圖8所示的FV控制表FVTBL的格式。該FVTBL的1行與PU號(hào)碼(PUN250)、該P(yáng)U的FV控制模式(PUFV251)、LM的FV控制模式(LM0FV252、LM1FV253、LM2FV254、LM3FV255)、以及后述的本地總線LBUS的FV控制模式(BUSFV)相對(duì)應(yīng),可以決定對(duì)于任意PU的該P(yáng)U、LM、LBUS的FV控制模式。
而且,CPU0等讀入該FV控制表FVTBL后,對(duì)每個(gè)PU10~17決定PU和本地存儲(chǔ)器LM(每個(gè)存儲(chǔ)體)以及本地總線的FV控制模式,控制電壓生成電路(DCGEN)20以及時(shí)鐘生成電路(CLKGEN)21。
(針對(duì)總線的電源控制)此外,對(duì)連接各個(gè)PU10~17的本地總線(LBUS)19,作為多處理器系統(tǒng)的以功能部位單位的FV控制,還可以部分地進(jìn)行電源控制(電源切斷)。
例如,在PU10~17中的某個(gè)PU在非動(dòng)作時(shí)電源被切斷的情況下,因?yàn)樵揚(yáng)U的總線接口(BIF)不被訪問(wèn),所以可以進(jìn)行該BIF的電源切斷,結(jié)果可以削減泄漏電流。此外,在將總線的結(jié)構(gòu)設(shè)為縱橫交叉開(kāi)關(guān)(crossbar)的情況下,還可以對(duì)決定與該P(yáng)U連接的總線的切換部的電源進(jìn)行控制,切斷。
在圖11中表示對(duì)于交叉結(jié)構(gòu)總線的電源控制的概念。例如,在將DSP0(14)設(shè)為電源切斷狀態(tài)假設(shè)沒(méi)有對(duì)于DSP0的通信量時(shí),還切斷針對(duì)DSP0附帶的BIF(27)的電源,以及切斷針對(duì)開(kāi)關(guān)群(192)的電源,該開(kāi)關(guān)群(192)對(duì)DSP0連接來(lái)自其他PU以及共享存儲(chǔ)器SM的總線網(wǎng)絡(luò)。
由此,可以削減成為非動(dòng)作狀態(tài)的DSP0的開(kāi)關(guān)群192的功率消耗。在圖12中表示用于實(shí)現(xiàn)針對(duì)交叉網(wǎng)絡(luò)的電源控制的電路結(jié)構(gòu)。此外,在本圖中表示將CPU0、DSP0、DSP1以及共享存儲(chǔ)器SM與由交叉網(wǎng)絡(luò)構(gòu)成的本地總線LBUS19連接的結(jié)構(gòu)。本電路由對(duì)各個(gè)PU10~17發(fā)送出的數(shù)據(jù)包數(shù)據(jù)進(jìn)行分析,進(jìn)行圖11所示的開(kāi)關(guān)群192的控制的網(wǎng)絡(luò)控制部NWCRL、和將該數(shù)據(jù)包數(shù)據(jù)的發(fā)送源與發(fā)送目的地的網(wǎng)絡(luò)進(jìn)行連接的網(wǎng)絡(luò)開(kāi)關(guān)部(NWSW)構(gòu)成。
網(wǎng)絡(luò)控制部NWCRL,由對(duì)PU10~17發(fā)送出的數(shù)據(jù)包進(jìn)行分析,決定數(shù)據(jù)包的優(yōu)先度的SHCTL195;對(duì)由SHCTL195決定了優(yōu)先度的該數(shù)據(jù)包進(jìn)行選擇的選擇器(SELC)196;暫時(shí)保存該數(shù)據(jù)包的隊(duì)列197;以及對(duì)分析該數(shù)據(jù)包連接發(fā)送目的地以及發(fā)送源的網(wǎng)絡(luò)的選擇開(kāi)關(guān)191~194進(jìn)行控制的SWCTL198構(gòu)成。
此外,網(wǎng)絡(luò)開(kāi)關(guān)NWSW,由連接各個(gè)PU之間的網(wǎng)絡(luò)的選擇開(kāi)關(guān)(SEL)191~194構(gòu)成。
在各個(gè)PU10~17和網(wǎng)絡(luò)控制部NWCRL中,分別設(shè)置與電源生成電路DCGEN選擇性連接的開(kāi)關(guān)(DCSEL)199。而且,從開(kāi)關(guān)(DCSEL)199對(duì)各個(gè)PU10~17以及BIF27和連接該P(yáng)U的選擇開(kāi)關(guān)191~194進(jìn)行電源供給。
例如,在假設(shè)將DSP0設(shè)為電源切斷狀態(tài)、沒(méi)有對(duì)于DSP0的通信量時(shí),DSP0附加的開(kāi)關(guān)DCSEL199,不僅切斷該DSP0的電源,還切斷針對(duì)與該DSP0連接的BIF27的電源、以及切斷針對(duì)選擇開(kāi)關(guān)SEL1(192)的電源,該選擇開(kāi)關(guān)SEL1(192)選擇向該DSP0的網(wǎng)絡(luò)。由此,不僅是成為電源切斷狀態(tài)的DSP0,還可以通過(guò)切斷向周邊電路的功率供給來(lái)進(jìn)一步削減功率消耗。此外,在使整個(gè)網(wǎng)絡(luò)為待機(jī)狀態(tài),即為電源切斷狀態(tài)時(shí),還對(duì)NWCRL通過(guò)向該NWCRL供給功率的開(kāi)關(guān)DCSEL199進(jìn)行電源切斷。
(FV控制寄存器的設(shè)定方法)然后,對(duì)設(shè)定FV控制寄存器1250的具體的方法進(jìn)行說(shuō)明。以下,將寄存器格式作為圖14a的結(jié)構(gòu)進(jìn)行說(shuō)明。
分別對(duì)各個(gè)PU的FV控制寄存器25分配全部PU可以唯一訪問(wèn)的全局地址,編譯程序預(yù)先決定的任務(wù)管理用PU(即,執(zhí)行調(diào)度程序或OS的PU)訪問(wèn)該地址,并變更該寄存器值,由此來(lái)設(shè)定FV控制模式。
圖16表示整個(gè)多處理器系統(tǒng)的全局地址空間映射表。在本實(shí)施方式中,定義從首地址到規(guī)定的地址可以看到PU自身的本地資源(包含LM、FV控制寄存器1250的系統(tǒng)設(shè)定寄存器)的區(qū)域、以及廣播(BC)區(qū)域。關(guān)于BC區(qū)域在后面進(jìn)行敘述。而且,在BC區(qū)域的后面,分配每個(gè)PU的地址空間,而且在各個(gè)PU內(nèi)的地址空間分配本地存儲(chǔ)器LM地址、以及系統(tǒng)設(shè)定寄存器地址。FV控制寄存器,具有所述系統(tǒng)設(shè)定寄存器地址內(nèi)的1個(gè)地址,通過(guò)訪問(wèn)該地址可設(shè)定FV控制模式。另外,在圖8中,在按CPU0、CPU1、DSP0、DSP1的順序,由首端空間映射地址,例如設(shè)定DSP0的FV控制寄存器時(shí),就訪問(wèn)地址“DSP0_FVREG_ADRS”。另外,在該空間的各PU區(qū)域之后,分配共享存儲(chǔ)器SM的地址。
FV控制寄存器的設(shè)定,通過(guò)編譯程序決定的任務(wù)管理用PU執(zhí)行寄存器訪問(wèn)用目標(biāo)代碼,經(jīng)由本地總線LBUS19訪問(wèn)控制目的地PU的FV控制寄存器來(lái)進(jìn)行。關(guān)于編譯程序生成該目標(biāo)代碼的具體的方法將在后面進(jìn)行敘述,下面進(jìn)行簡(jiǎn)單的說(shuō)明,在編譯程序?qū)⑷蝿?wù)分配給多個(gè)PU時(shí),對(duì)該多個(gè)PU進(jìn)行分組,決定進(jìn)行分組內(nèi)的任務(wù)的啟動(dòng)、同步處理的任務(wù)管理PU。編譯程序生成在該管理PU上進(jìn)行FV控制的代碼,通過(guò)該管理PU執(zhí)行該代碼來(lái)進(jìn)行分組內(nèi)的PU的FV控制。此外,上述編譯程序在未圖示的計(jì)算機(jī)上執(zhí)行。
圖17a表示設(shè)定FV控制寄存器的例子。假設(shè)編譯程序?qū)PU0、DSP0、DSP1進(jìn)行分組,CPU0進(jìn)行任務(wù)管理,該CPU0對(duì)DSP0進(jìn)行FV控制。CPU0通過(guò)執(zhí)行由編譯程序生成的進(jìn)行FV設(shè)定的目標(biāo)代碼,來(lái)設(shè)定DSp0的FV控制模式。
圖17b表示設(shè)定DSP0的FV控制模式的目標(biāo)代碼的例子。在本例中,預(yù)先定義DSP0內(nèi)的FV控制寄存器的地址,對(duì)CPU0內(nèi)的通用寄存器傳送該FV控制寄存器的地址以及FV設(shè)定值,然后在該地址指定的寄存器中讀入該設(shè)定值,由此來(lái)完成設(shè)定。
此外,作為進(jìn)行FV設(shè)定的方法,設(shè)為任務(wù)管理PU執(zhí)行直接訪問(wèn)寄存器的目標(biāo)代碼,例如如圖17c所示,在設(shè)為OS管理各個(gè)PU的FV動(dòng)作模式的情況下,通過(guò)調(diào)用OS的FV控制用API,可以在OS的管理下進(jìn)行PU的FV控制模式設(shè)定。
此外,當(dāng)設(shè)置整個(gè)系統(tǒng)的FV控制用寄存器,并在該寄存器內(nèi)設(shè)置對(duì)全部PU10~17的FV控制模式進(jìn)行設(shè)定的寄存器,來(lái)在各個(gè)寄存器中設(shè)定模式時(shí),可以具有自動(dòng)設(shè)定全部PU10~17的FV模式的機(jī)構(gòu)。例如,如圖8的FV控制表26所示,通過(guò)設(shè)置由全部PU10~17共享的寄存器,對(duì)該寄存器進(jìn)行更新,由此可以變更全部PU10~17的FV控制模式。
此外,可以在該整個(gè)系統(tǒng)的控制用寄存器中對(duì)應(yīng)通用處理PU組(CPU)、專用處理PU組(DSP、DRP、BMP)等處理器的種類,設(shè)置對(duì)該每個(gè)種類的PU同步設(shè)定FV模式的多個(gè)FV控制寄存器。此時(shí),通過(guò)在圖8的FV控制表26中對(duì)處理器的每個(gè)種類設(shè)置FV控制寄存器,并對(duì)各個(gè)CPU、DSP、DRP、BMP共享FV控制寄存器,由此可以通過(guò)變更一個(gè)寄存器來(lái)對(duì)每個(gè)處理器的種類變更FV控制模式。
(BC區(qū)域)然后,下面對(duì)在上述圖16中表示的在存儲(chǔ)器映射的前端區(qū)域中設(shè)置的廣播(BC)區(qū)域進(jìn)行說(shuō)明。該BC區(qū)域是寫入專用的區(qū)域,當(dāng)一PU對(duì)該BC區(qū)域的一地址進(jìn)行數(shù)據(jù)的寫入時(shí),經(jīng)由本地總線LBUS19在預(yù)先與該地址對(duì)應(yīng)的全部PU的各個(gè)LM入口(entry)中同時(shí)寫入該數(shù)據(jù)。由此,各個(gè)PU的本地存儲(chǔ)器LM同時(shí)具有全部PU共享的數(shù)據(jù),各個(gè)PU10~17即使不訪問(wèn)共享存儲(chǔ)器SM也可以高速地訪問(wèn)LM上的該數(shù)據(jù)。
此外,在進(jìn)行FV控制等系統(tǒng)控制時(shí),也可以通過(guò)進(jìn)行該廣播對(duì)全部PU一起發(fā)送控制信息。此外,通過(guò)與指定PU范圍的任務(wù)信息一起進(jìn)行廣播發(fā)送,還可以實(shí)現(xiàn)限定PU的范圍地發(fā)送數(shù)據(jù)、控制信息的廣播功能。結(jié)果,例如在編譯程序,定義由并行處理某個(gè)任務(wù)的多個(gè)PU構(gòu)成的PU分組時(shí),可以在該P(yáng)U分組內(nèi)一起開(kāi)始任務(wù)處理,或者進(jìn)行FV控制,整個(gè)系統(tǒng)的吞吐量提高。
(任務(wù)處理時(shí)的FV控制概念)然后,使用圖18a~圖18d,對(duì)各PU10~17中的任務(wù)處理時(shí)的電源電壓、動(dòng)作頻率(FV)控制方法的概念進(jìn)行說(shuō)明。各個(gè)PU執(zhí)行的任務(wù)(程序)通過(guò)后述的編譯程序由輸入程序生成。即,該輸入程序首先通過(guò)后述的編譯對(duì)該程序進(jìn)行分析,由此,作為宏任務(wù)(MT)分割僅由賦值語(yǔ)句形成的基本塊(BB)、重復(fù)塊(RB)、子程序(SB)等粒度較大的語(yǔ)句·塊。在本例中,假設(shè)分割為三個(gè)宏任務(wù)MT301~303。這里,宏任務(wù)是將輸入程序(源代碼)分割為多個(gè)粒度的單位塊的任務(wù)。即,通過(guò)分割為宏任務(wù),來(lái)進(jìn)行多粒度并行處理,在該多粒度并行處理對(duì)利用子程序等粗粒度任務(wù)之間的并行處理的宏數(shù)據(jù)流處理、作為循環(huán)級(jí)別的并行處理的中粒度并行處理中,分級(jí)地組合利用基本塊內(nèi)部的語(yǔ)句級(jí)別的并行性的近細(xì)粒度并行處理來(lái)進(jìn)行進(jìn)行并行處理的多粒度并行處理。此外,在本實(shí)施方式中,假設(shè)將程序的構(gòu)成要素作為宏任務(wù),將宏任務(wù)的構(gòu)成要素作為任務(wù),將任務(wù)分配給PU10~17。
然后,通過(guò)對(duì)該宏任務(wù)MT在任意PU中的運(yùn)算成本等特性信息進(jìn)行計(jì)算,來(lái)決定在哪個(gè)PU上執(zhí)行該宏任務(wù)MT,此外,通過(guò)對(duì)該宏任務(wù)MT之間的數(shù)據(jù)依存性、控制依存性進(jìn)行分析,來(lái)決定任務(wù)的執(zhí)行順序。
圖18a是表示任務(wù)間的并行執(zhí)行依存性的宏任務(wù)圖。本圖表示可以同時(shí)執(zhí)行宏任務(wù)MT1(301)和宏任務(wù)MT2(302),而且還表示了宏任務(wù)MT3(303)可以在結(jié)束執(zhí)行宏任務(wù)MT1(301)以及宏任務(wù)MT2(302)之后執(zhí)行。此外,在本例中,對(duì)PU10(CPU0)配置宏任務(wù)MT1,對(duì)PU12(BMP0)配置宏任務(wù)MT2,對(duì)PU10(CPU0)配置宏任務(wù)MT3。
圖18b表示對(duì)如上那樣進(jìn)行了調(diào)度的宏任務(wù)進(jìn)行了通常處理(無(wú)電壓·頻率控制)時(shí)的處理甘特圖。
在圖18b中,因?yàn)楹耆蝿?wù)MT1和MT2可以并行執(zhí)行,所以MT1由CPU(CPU0)(305),MT2由BMP(BMP0)(306)同時(shí)開(kāi)始處理。在進(jìn)行通常處理時(shí),作為對(duì)CPU、BMP共同供給的電壓供給通常的VD,此外,作為動(dòng)作頻率也供給通常的FC。在本例中,CPU中的宏任務(wù)MT1的處理周期數(shù)小于BMP中的宏任務(wù)MT2的處理周期數(shù),所以CPU中的宏任務(wù)MT1的處理(305)在BMP中的宏任務(wù)MT2的處理(306)之前結(jié)束。
CPU因?yàn)榻Y(jié)束了宏任務(wù)MT1的處理(305),所以然后處理宏任務(wù)MT3(307),但是根據(jù)宏任務(wù)MT之間的依存關(guān)系,可以在BMP中的宏任務(wù)MT2的處理(306)結(jié)束之前不執(zhí)行在CPU中下一個(gè)應(yīng)該處理的宏任務(wù)MT3。因此,CPU在BMP中的宏任務(wù)MT2的處理結(jié)束之前成為空閑狀態(tài)。因?yàn)榧词乖谠摽臻e狀態(tài)下,也對(duì)CPU供給通常的電源電壓VD以及時(shí)鐘FC,所以消耗多余的功率。
因此,作為解決以上問(wèn)題的一個(gè)方法,當(dāng)在CPU中執(zhí)行宏任務(wù)MT1時(shí),為了使執(zhí)行BMP宏任務(wù)MT2的處理所需要的時(shí)間與CPU執(zhí)行宏任務(wù)MT1的處理時(shí)間相等,通過(guò)使CPU的動(dòng)作頻率低于通常時(shí)(FULL模式)的LOW模式(圖9的供給1/4FC的模式)進(jìn)行驅(qū)動(dòng)(308)。即,通過(guò)通常時(shí)的FV控制模式(FULL)驅(qū)動(dòng)BMP,另一方面,將CPU的FV控制模式設(shè)為L(zhǎng)OW模式,降低處理先結(jié)束一方的PU的動(dòng)作頻率,并且為了在進(jìn)行并行處理的PU之間,使FV控制模式不同,進(jìn)行FV控制寄存器的設(shè)定。圖18c表示應(yīng)用本方法的FV控制時(shí)的甘特圖。編譯程序通過(guò)對(duì)CPU(CPU0)中的宏任務(wù)MT1的處理周期數(shù)以及BMP(BMP0)中的宏任務(wù)MT2的處理周期數(shù)進(jìn)行估計(jì),由此來(lái)決定CPU的動(dòng)作頻率以使雙方的處理時(shí)間相等。結(jié)果,因?yàn)榻档虲PU的動(dòng)作頻率,所以還可以降低對(duì)該P(yáng)U的電源電壓,可以使消耗功率最佳化。
即,在該例子中,關(guān)于宏任務(wù)MT1,將CPU的FV控制模式設(shè)定為圖9的[LOW模式],將并行進(jìn)行處理的BMP的FV控制模式設(shè)定為[FULL]。
此外,作為解決上述圖18b的CPU空閑狀態(tài)的其他方法,在CPU中的宏任務(wù)MT1的處理(309)結(jié)束的時(shí)刻,切斷CPU的電源電壓以及動(dòng)作時(shí)鐘的供給,置為待機(jī)狀態(tài)(310)。即,當(dāng)CPU結(jié)束了宏任務(wù)MT1的處理時(shí),將CPU的FV控制模式設(shè)定為圖9的[OFF]。而且,在開(kāi)始執(zhí)行宏任務(wù)MT3時(shí),將FV控制模式設(shè)定為[FULL],重新開(kāi)始處理。圖18d表示應(yīng)用本方法的FV控制時(shí)的甘特圖。
在圖18d中,CPU的宏任務(wù)MT1的處理在BMP中的宏任務(wù)MT2(306)之前結(jié)束,但在該結(jié)束時(shí)刻使CPU為待機(jī)狀態(tài)(OFF),并且在BMP結(jié)束了宏任務(wù)MT2的處理(306)的時(shí)刻,通過(guò)供給通常的電源電壓以及動(dòng)作頻率再次使CPU恢復(fù)通常狀態(tài),開(kāi)始宏任務(wù)MT3的處理(307)。結(jié)果,因?yàn)椴皇笴PU空閑而是使其停止動(dòng)作,所以可以降低消耗功率。
如此,在對(duì)程序(任務(wù))進(jìn)行編譯時(shí),編譯程序根據(jù)PU的結(jié)構(gòu)預(yù)先估計(jì)事先的處理時(shí)間,關(guān)于在編譯時(shí)可以靜態(tài)地決定處理順序的部分事先決定處理順序,對(duì)每個(gè)PU細(xì)致地進(jìn)行動(dòng)作頻率控制以及電源管理,由此,可以無(wú)損多處理器系統(tǒng)的性能地使功率最佳化。
(任務(wù)處理時(shí)(實(shí)時(shí)制約時(shí))的FV控制概念)以上,對(duì)宏任務(wù)(MT)的執(zhí)行條件依存于其他宏任務(wù)MT時(shí)的FV控制方法進(jìn)行了說(shuō)明,但除此之外,還可以考慮任務(wù)在某一定時(shí)間內(nèi)具有應(yīng)進(jìn)行處理的制約的、即如圖19a所示的以決定了該任務(wù)的處理期限(允許時(shí)間)的實(shí)時(shí)處理任務(wù)為對(duì)象的FV控制方法。
在圖19a例示的宏任務(wù)(MT1)311中,當(dāng)在[FULL]模式下,即通過(guò)以通常的電源電壓以及時(shí)鐘頻率動(dòng)作的CPU進(jìn)行處理時(shí),處理在處理期限(Deadline)之前結(jié)束。此時(shí),在處理結(jié)束的時(shí)刻CPU成為空閑狀態(tài),但因?yàn)閷?duì)于本來(lái)的處理期限具有富余,所以可以在處理期限制約內(nèi)降低CPU的動(dòng)作頻率(312)。
圖19b表示應(yīng)用本方法的FV控制時(shí)的甘特圖。編譯程序?qū)υ谔幚砥谙拗翱梢越Y(jié)束處理的動(dòng)作頻率進(jìn)行估計(jì),如圖所示,將CPU的FV控制模式?jīng)Q定為[LOW]模式。結(jié)果,還可以降低供給電壓VL,可以使消耗功率最佳化。
此外,還可以同樣地在宏任務(wù)MT1的處理(313)結(jié)束的時(shí)刻切斷CPU的電源以及動(dòng)作時(shí)鐘(314),由此來(lái)降低消耗功率。圖19c表示應(yīng)用本方法的FV控制時(shí)的甘特圖。此時(shí),CPU通過(guò)[FULL]模式處理宏任務(wù)MT1,在處理期限之前結(jié)束處理,但可以通過(guò)在宏任務(wù)MT1結(jié)束時(shí)將動(dòng)作模式置為[OFF],來(lái)避免無(wú)用的功率消耗。
(編譯程序的處理流程)然后,按照以下的順序,對(duì)在上述多處理器·體系結(jié)構(gòu)上,生成與處理器單元(PU)的特性相符合的調(diào)度以及生成根據(jù)電壓·頻率的動(dòng)態(tài)變化進(jìn)行消耗功率最佳控制的代碼的編譯方法、和采用了該方法的編譯程序的處理進(jìn)行說(shuō)明。圖20表示采用了本方法的編譯程序40的處理流程。
(宏任務(wù)的生成)使用C或Fortran等高級(jí)語(yǔ)言記述的逐次結(jié)構(gòu)的輸入程序400,首先通過(guò)對(duì)該程序結(jié)構(gòu)進(jìn)行分析來(lái)分割為重復(fù)塊(RBRepetition Block)、子程序(SBSub Routine)、偽賦值語(yǔ)句塊(BPABlock of Pseudo Assignment statements)三個(gè)種類的粒度較大的宏任務(wù)(MT),生成各宏任務(wù)(401)。RB是各循環(huán)塊中各層最外側(cè)的循環(huán),BPA是考慮調(diào)度開(kāi)銷或者并行性,融合或者分割了由賦值語(yǔ)句形成的多個(gè)基本塊的塊。圖21中表示上述輸入程序(源程序400)的一例。
(Directive指定)此外,在該源程序400中,可以預(yù)先記述PU的分配,例如還可以明確地指示將子程序分配給DSP,將另外某個(gè)子程序分配給CPU。結(jié)果,該DSP子程序通過(guò)編譯程序被進(jìn)一步進(jìn)行并行性的分析,例如在DSP為4個(gè)時(shí),編譯程序40對(duì)該4個(gè)DSP執(zhí)行并行化調(diào)度。
(數(shù)據(jù)依存·控制流分析)然后,對(duì)分割生成的該宏任務(wù)之間的控制流以及數(shù)據(jù)依存性進(jìn)行分析,提取宏任務(wù)MT的執(zhí)行順序關(guān)系(402)。圖21的輸入程序400因?yàn)槭潜恢鸫蔚剡M(jìn)行記述,所以與該程序的結(jié)構(gòu)相同地按照逐次的順序執(zhí)行由通常的編譯程序40生成的執(zhí)行代碼,當(dāng)在宏任務(wù)MT之間來(lái)看時(shí),很多情況不一定需要按照記述的順序來(lái)執(zhí)行。
即,當(dāng)在宏任務(wù)MT之間不存在控制或數(shù)據(jù)參照的依存性的情況下,特別在多處理器系統(tǒng)中,重要的是對(duì)多個(gè)PU配置多個(gè)宏任務(wù)MT,同時(shí)或者變更順序地進(jìn)行調(diào)度,以使全體的動(dòng)作時(shí)間縮短。
為了進(jìn)行這樣的調(diào)度,需要對(duì)MT之間的并行性進(jìn)行分析。因此,作為該分析的準(zhǔn)備,通過(guò)數(shù)據(jù)依存·控制流分析處理402提取宏任務(wù)MT之間的執(zhí)行順序關(guān)系。
(循環(huán)級(jí)并行性分析)然后,作為宏任務(wù)MT內(nèi)的中粒度等級(jí)的并行性分析,進(jìn)行循環(huán)級(jí)的并行化(403)。在循環(huán)級(jí)并行化403中,對(duì)循環(huán)的重復(fù)(Iteration)單位間的數(shù)據(jù)依存性進(jìn)行分析,判斷各重復(fù)是否可以獨(dú)立地進(jìn)行處理,在為可以時(shí),將各重復(fù)分配給多個(gè)PU來(lái)進(jìn)行并行處理。
此外,通過(guò)以下各種各樣的方法來(lái)實(shí)現(xiàn)循環(huán)的并行化將單一的循環(huán)分割為多個(gè)循環(huán)來(lái)提高并行性;或者通過(guò)數(shù)據(jù)的復(fù)制和數(shù)組變量的擴(kuò)張,通過(guò)消除各個(gè)循環(huán)之間的數(shù)據(jù)依存性來(lái)進(jìn)行并行化;或者將多個(gè)循環(huán)融合為單一的循環(huán),由此減輕循環(huán)控制所需要的開(kāi)銷。
(處理成本分析)然后,進(jìn)行對(duì)由各PU執(zhí)行了上述生成的宏任務(wù)MT時(shí)所需要的處理周期進(jìn)行估計(jì)的處理成本分析(404)。作為處理成本(運(yùn)算成本)的估計(jì)方法,例如關(guān)于CPU等,將乘法運(yùn)算或加法運(yùn)算等命令級(jí)需要的周期數(shù)作為概要分析(profiling)信息保存在處理成本表420中,通過(guò)參照該表420可以估計(jì)由該P(yáng)U執(zhí)行宏任務(wù)MT時(shí)的逐次處理周期數(shù)。
此外,在為DRP、DSP等,難以對(duì)從程序中表現(xiàn)的命令級(jí)的周期數(shù)進(jìn)行估計(jì)的情況下,該塊的程序?qū)ι蒁RP、DSP用執(zhí)行代碼的各個(gè)本地編譯程序進(jìn)行一次調(diào)用,根據(jù)轉(zhuǎn)換后的執(zhí)行代碼進(jìn)行概要分析,求出處理成本(413)。此外,本地編譯程序?qū)?yīng)PU的種類預(yù)先進(jìn)行設(shè)定,例如,如果是DSP則使用DSP的本地編譯程序分析信息,如果是DRP則使用DRP的本地編譯程序概要分析信息。
此外,例如在包含分支的情況下,或者在循環(huán)的大小或數(shù)組的大小在宏任務(wù)MT執(zhí)行前沒(méi)有被決定的情況下,還可以通過(guò)由本地編譯程序進(jìn)行一次概要分析,來(lái)進(jìn)行精度得到了提高的處理成本計(jì)算。此外,在不進(jìn)行本概要分析,宏任務(wù)MT包含分支的情況下,將分支概率設(shè)為50%來(lái)進(jìn)行成本計(jì)算。此外,在同樣不進(jìn)行概要分析,循環(huán)或數(shù)組的大小沒(méi)有被決定的情況下,例如應(yīng)用以下等方法將循環(huán)設(shè)為固定次數(shù),此外設(shè)為數(shù)組宣言時(shí)的最大尺寸。
以上,將處理成本定義為處理周期數(shù)(時(shí)間),此外,還可以通過(guò)將成本定義為功率,來(lái)進(jìn)行功率為最小的調(diào)度。
例如,根據(jù)處理周期數(shù)和應(yīng)該完成宏任務(wù)MT的處理期限,在可以設(shè)定的FV控制模式(頻率、動(dòng)作電壓)中選擇在處理期限內(nèi)為最小消耗功率的動(dòng)作模式?;蛘?,因?yàn)镻U的消耗功率可以估計(jì)為消耗功率=動(dòng)作電壓2×驅(qū)動(dòng)頻率所以可以選擇在處理期限內(nèi)消耗功率為最小的FV控制模式的組合,進(jìn)行調(diào)度。例如,如圖19b所示僅通過(guò)LOW模式執(zhí)行處理的情況,和如圖19c所示對(duì)多個(gè)FV控制模式進(jìn)行組合?;蛘?,還可以選擇處理時(shí)間最短,并且消耗功率最小的FV控制模式的組合。
(宏任務(wù)間并行性分析=最早執(zhí)行條件分析)編譯程序40在宏任務(wù)MT的處理成本決定之后,根據(jù)同時(shí)對(duì)數(shù)據(jù)依存控制流分析處理402中提取出的宏任務(wù)MT之間的控制流和數(shù)據(jù)依存性進(jìn)行分析后的結(jié)果,決定宏任務(wù)MT之間的并行性,即,決定可以最早執(zhí)行各宏任務(wù)MT的條件(最早執(zhí)行條件)(405)。
在圖表中可視地表示該最早執(zhí)行條件的是宏任務(wù)圖表(MTG)。圖22表示對(duì)圖21的輸入程序進(jìn)行分析生成的MTG。此外,宏任務(wù)間并行性分析結(jié)果作為宏任務(wù)圖表表421被保存在外部存儲(chǔ)裝置中,在后面的編譯處理中使用。此外,該外部存儲(chǔ)裝置是指執(zhí)行編譯程序40的未圖示的計(jì)算機(jī)自身。
(宏任務(wù)圖表的說(shuō)明)以下,參照?qǐng)D22對(duì)宏任務(wù)圖表MTG進(jìn)行說(shuō)明。本圖表中的各個(gè)節(jié)點(diǎn)表示宏任務(wù)MT,節(jié)點(diǎn)之間的實(shí)線表示宏任務(wù)之間的數(shù)據(jù)依存關(guān)系,節(jié)點(diǎn)之間的虛線表示宏任務(wù)之間的控制依存關(guān)系,節(jié)點(diǎn)內(nèi)的小圓表示條件分支。例如,從宏任務(wù)MT1_1(501)對(duì)MT1_2(502)以及MT1_3(503)實(shí)現(xiàn)進(jìn)行了延伸,這表示存在以下的依存關(guān)系粒度大的MT1_2以及MT1_3將執(zhí)行MT1_1后生成的數(shù)據(jù)作為輸入數(shù)據(jù)使用,來(lái)執(zhí)行處理。因此,作為執(zhí)行順序,表示MT1_2以及MT1_3可以在MT1_1結(jié)束之后執(zhí)行。
此外,從輸入程序400求出的宏任務(wù)MT1_2(502),因?yàn)槭怯啥鄠€(gè)循環(huán)或子程序構(gòu)成的粒度較大的塊,所以編譯程序40將該宏任務(wù)MT進(jìn)一步分層地分割為多個(gè)宏任務(wù)MT。由此,在該宏任務(wù)圖表MTG中,在MT1_2中,在其他的分層中進(jìn)一步構(gòu)成宏任務(wù)圖表MTG1_2。宏任務(wù)MT1_3(503)也同樣地構(gòu)成其他分層的宏任務(wù)圖表MTGMTG1_3。
當(dāng)查看宏任務(wù)MT1_2(502)內(nèi)的宏任務(wù)圖表MTG1_2(510)時(shí),實(shí)線從任務(wù)MT1_2_1(511)向任務(wù)MT1_2_2(512)、任務(wù)MT1_2_4(514)以及任務(wù)MT1_2_5(515)進(jìn)行了延伸,所以可以在MT1_2_1(511)結(jié)束之后同時(shí)執(zhí)行這些3個(gè)任務(wù)512、514、515。
此外,任務(wù)MT1_2_2(512)還對(duì)任務(wù)MT1_2_3(513)存在依存,這可以在MT1_2_2(512)的任務(wù)結(jié)束之后執(zhí)行MT1_2_3(513)的任務(wù)。此外,實(shí)線從任務(wù)MT1_2_4(514)以及MT1_2_5(515)對(duì)任務(wù)MT1_2_6(516)進(jìn)行延伸,所以可以在任務(wù)MT1_2_4(514)以及MT1_2_5(515)雙方的執(zhí)行結(jié)束的時(shí)刻執(zhí)行MT1_2_6(516)。
如上所述,在執(zhí)行宏任務(wù)MT1_2之前確定了并行順序關(guān)系,可以預(yù)先固定地(靜態(tài)地)調(diào)度任務(wù)。
然后,當(dāng)查看宏任務(wù)MT1_3(503)內(nèi)的宏任務(wù)圖表MTG(520)時(shí),在宏任務(wù)MT1_3_1(521)中存在小圓,這表示任務(wù)MT1_3_1(521)包含條件分支。具有箭頭的虛線從小圓向任務(wù)MT1_3_2(522)、MT1_3_5(525)延伸,此外,對(duì)控制依存的OR條件進(jìn)行表示的點(diǎn)劃線的弧線529重合,所以表示該條件分支為任務(wù)MT1_3_2或MT1_3_5中的某一個(gè)。
此外,沒(méi)有箭頭的虛線向任務(wù)MT1_3_3(523)延伸,表示控制依存的AND條件的實(shí)線的弧線528在向任務(wù)MT1_3_3(523)的沒(méi)有箭頭的該虛線和與任務(wù)MT1_3_2(522)連接的虛線上重合。這表示如果在該條件下,向箭頭所指的任務(wù)MT1_3_2的方向分支,則可以同時(shí)執(zhí)行控制依存于同一分支的任務(wù)MT1_3_3。此外,圖中的虛線表示了對(duì)任務(wù)的執(zhí)行進(jìn)行確定的控制依存關(guān)系,和不執(zhí)行數(shù)據(jù)依存的任務(wù)時(shí)的條件。此外,帶有箭頭的虛線表示與通過(guò)數(shù)據(jù)依存·控制流解析(402)求出的控制流相同(即,原始的)的情況。
此外,任務(wù)MT1_3_1(521)的條件分支因?yàn)樵诓粓?zhí)行該任務(wù)MT1_3_1時(shí)分支方向不確定,所以需要進(jìn)行與執(zhí)行時(shí)的狀況對(duì)應(yīng)的調(diào)度。在該條件分支確定,向任務(wù)MT1_3_2(522)以及任務(wù)MT1_3_3(523)的方向分支時(shí),具有從任務(wù)MT1_3_2(522)以及任務(wù)MT1_3_3(523)到任務(wù)MT1_3_4(524)表示數(shù)據(jù)依存關(guān)系的實(shí)線,因此,可以在任務(wù)MT(522、523)雙方的處理結(jié)束的時(shí)刻執(zhí)行MT1_3_4(524)的處理。
此外,在向任務(wù)MT1_3_5(525)的方向分支時(shí),同樣地,可以根據(jù)依存關(guān)系在該任務(wù)525結(jié)束的時(shí)刻執(zhí)行任務(wù)MT1_3_6(526)以及任務(wù)MT1_3_7(527)的處理。
(處理器分組)然后,編譯程序40參照所生成的宏任務(wù)圖表MTG表421,進(jìn)行與宏任務(wù)圖表的形狀、并行性對(duì)應(yīng)的,或者與用戶的指定對(duì)應(yīng)的處理器分組(406)。
即,對(duì)在宏任務(wù)圖表MTG中表現(xiàn)的上位層的宏任務(wù)MT,例如宏任務(wù)MT12(502)、MT13(503)的形狀、并行性進(jìn)行分析,對(duì)該宏任務(wù)MT的處理所需要的PU10~17進(jìn)行分組,并對(duì)該分組分配任務(wù)MT。此外,一個(gè)組成為至少包含一個(gè)用于對(duì)該分組內(nèi)的特定用途處理器(DSP、DRP、BMP)進(jìn)行控制的通用處理器(CPU)的集合。具體地說(shuō),在可以根據(jù)宏任務(wù)圖表MTG的結(jié)構(gòu),在進(jìn)行編譯時(shí)判斷恰當(dāng)?shù)奶幚砥鱌U的分組結(jié)構(gòu)時(shí),便宜程序40進(jìn)行包含了特性用途處理器的分組。
此外,在根據(jù)宏任務(wù)圖表MTG的結(jié)構(gòu),在編譯時(shí)無(wú)法進(jìn)行處理器分組時(shí),即,在存在多層應(yīng)該使用特定用途處理器的任務(wù),無(wú)法恰當(dāng)?shù)剡M(jìn)行分組的情況下,在進(jìn)行編譯時(shí),編譯程序40或者在執(zhí)行時(shí)起到調(diào)度器作用的通用處理器,將任務(wù)對(duì)特定用途處理器組進(jìn)行分配。此時(shí),在向特定用途處理器的負(fù)荷較大的情況下,由通用處理器代為進(jìn)行處理。此外,已決定的分組信息,作為處理器分組表422保存在外部存儲(chǔ)裝置中,在后面的處理中使用。
在本實(shí)施方式中,在圖22的宏任務(wù)圖表MTG1(500)中宏任務(wù)MT1_2(502)和MT1_3(503)的處理成本相同,為了執(zhí)行這些宏任務(wù)內(nèi)部的宏任務(wù)圖表MTG1_2(510)、MTG1_3(520),需要通過(guò)通用處理器的特定用途處理器的控制,所以定義兩個(gè)處理器分組。
然后,根據(jù)宏任務(wù)MT1_2、MT1_3對(duì)于各PU的處理成本、并行性,決定在各處理器分組內(nèi)所需要的特定用途處理器的構(gòu)成。在本實(shí)施方式中,因?yàn)榭梢酝ㄟ^(guò)宏任務(wù)圖表MTG1上可以利用的資源來(lái)實(shí)現(xiàn)所需要的處理器構(gòu)成,所以在編譯時(shí)將處理器分組決定為CPU0、DSP0、DRP0、DRP1以及CPU1、DSP1、BMP0、BMP1。
(靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度)然后,編譯程序40接著作為調(diào)度方法,判斷是靜態(tài)調(diào)度還是動(dòng)態(tài)調(diào)度(407)。在后面對(duì)各個(gè)調(diào)度方法進(jìn)行詳細(xì)說(shuō)明,而在下面先進(jìn)行簡(jiǎn)單的說(shuō)明。首先,如果是在任務(wù)MT中沒(méi)有條件分支可以預(yù)先決定最早執(zhí)行條件的MT流,則應(yīng)用前者的靜態(tài)調(diào)度,編譯程序40預(yù)先進(jìn)行任務(wù)MT的調(diào)度,在任務(wù)之間插入同步代碼以及FV控制代碼(調(diào)度代碼)。
此外,如果是在任務(wù)MT中具有條件分支,或者任務(wù)MT的處理時(shí)間在執(zhí)行時(shí)進(jìn)行變動(dòng)等,在編譯時(shí)無(wú)法預(yù)測(cè)的MT流,則應(yīng)用后者的動(dòng)態(tài)調(diào)度,編譯程序40生成在執(zhí)行時(shí)進(jìn)行與分支等的狀況對(duì)應(yīng)的控制的調(diào)度程序。編譯程序40生成調(diào)度程序(調(diào)度代碼)的優(yōu)點(diǎn)在于,如現(xiàn)有的多處理器那樣,在向OS或程序庫(kù)委托生成粗粒度任務(wù),委托進(jìn)行調(diào)度時(shí),有可能產(chǎn)生數(shù)千至數(shù)萬(wàn)個(gè)時(shí)鐘的開(kāi)銷,而編譯程序40生成調(diào)度程序就可以避免該情況。
(靜態(tài)調(diào)度)首先,對(duì)靜態(tài)調(diào)度的處理流進(jìn)行說(shuō)明。在靜態(tài)調(diào)度中,因?yàn)樵诰幾g時(shí)已經(jīng)決定了任務(wù)MT的分配和執(zhí)行順序,所以,首先通過(guò)宏任務(wù)調(diào)度處理408參照宏任務(wù)表421以及處理器分組表422,生成用于進(jìn)行PU之間的執(zhí)行任務(wù)間的同步和進(jìn)行其他任務(wù)的啟動(dòng)等的控制信息,決定該控制信息的插入部位。
此外,還將任務(wù)程序或任務(wù)所需要的數(shù)據(jù)與從其他PU的本地存儲(chǔ)器LM、共享存儲(chǔ)器SM載入該P(yáng)U的本地存儲(chǔ)器LM的數(shù)據(jù)傳送信息一同生成。通過(guò)這樣的數(shù)據(jù)定位方法,來(lái)有效地使用本地存儲(chǔ)器LM,使數(shù)據(jù)的傳輸量最小化。通過(guò)以上處理生成的調(diào)度信息作為宏任務(wù)調(diào)度表423保存在外部存儲(chǔ)裝置中。
然后,編譯程序40進(jìn)行靜態(tài)FV調(diào)度處理409。在本處理中,根據(jù)圖18a~圖18d中說(shuō)明的執(zhí)行并行處理時(shí)的FV控制概念,根據(jù)由宏任務(wù)調(diào)度408生成的調(diào)度信息(宏任務(wù)調(diào)度表)判定由任務(wù)的處理成本以及調(diào)度期限(處理期限)決定的余裕度,并對(duì)決定與該余裕度對(duì)應(yīng)的動(dòng)作頻率·供給電壓的PU動(dòng)作模式進(jìn)行設(shè)定,因此,生成FV控制信息。該FV控制信息作為電源·FV控制調(diào)度表被保存在外部存儲(chǔ)裝置中。此外,余裕度,例如是根據(jù)從執(zhí)行開(kāi)始到執(zhí)行結(jié)束的處理時(shí)間和到處理期限為止的時(shí)間求出的,表示各PU10~17性能上的余裕的程度。例如,如圖19a所示,在從CPU0的執(zhí)行結(jié)束到處理期限的時(shí)間較長(zhǎng)時(shí)可以判定余裕度較大,相反,在從執(zhí)行結(jié)束到處理期限的時(shí)間較短時(shí)可以判定余裕度較小。
此外,處理期限(允許時(shí)間)可以由輸入程序記述,也可以在編譯程序40的處理時(shí)由未圖示的控制臺(tái)輸入。
(動(dòng)態(tài)調(diào)度)然后,對(duì)動(dòng)態(tài)調(diào)度的處理流進(jìn)行說(shuō)明。在動(dòng)態(tài)調(diào)度時(shí),由于任務(wù)MT內(nèi)的條件分支等不確定要素,無(wú)法在編譯時(shí)決定調(diào)度內(nèi)容。因此,控制程序40根據(jù)任務(wù)MT的處理結(jié)果生成在執(zhí)行程序時(shí)動(dòng)態(tài)地進(jìn)行調(diào)度的調(diào)度程序(410)。本程序根據(jù)處理結(jié)果,進(jìn)行任務(wù)MT的啟動(dòng)和同步、以及該MT所需要的數(shù)據(jù)的裝入。此外,還根據(jù)圖18a~圖18d說(shuō)明的任務(wù)并行處理執(zhí)行時(shí)的FV控制概念,對(duì)決定PU的動(dòng)作頻率·供給電壓的動(dòng)作模式(FV控制模式)進(jìn)行設(shè)定。生成的調(diào)度程序作為電源·FV控制調(diào)度表424保存在外部存儲(chǔ)裝置中。
(調(diào)的代碼的生成)編譯程序40,通過(guò)以上的處理,結(jié)束輸入程序400的向PU10~17的調(diào)度。通過(guò)到此的處理生成的調(diào)度信息作為表(421~424)保存在外部存儲(chǔ)裝置中。編譯程序40對(duì)該表(421~424)進(jìn)行訪問(wèn),讀入任務(wù)的執(zhí)行順序和數(shù)據(jù)傳送信息以及FV控制信息,對(duì)于輸入程序在靜態(tài)調(diào)度部中附加控制代碼(調(diào)度代碼),此外在動(dòng)態(tài)調(diào)度部中附加調(diào)度程序(411)。例如,使用作為分散存儲(chǔ)器型并行計(jì)算機(jī)中的并行編程標(biāo)準(zhǔn)接口的MPI(Message PassingInterface)等生成控制代碼。附加了該代碼的輸入程序還通過(guò)對(duì)各個(gè)PU的每個(gè)種類準(zhǔn)備的本地編譯程序進(jìn)行處理,由此轉(zhuǎn)換為該P(yáng)U中的執(zhí)行二進(jìn)制代碼。此外,本地編譯程序如上所述,預(yù)先對(duì)CPU、DSP、DRP、BMP的PU的每個(gè)種類進(jìn)行準(zhǔn)備,由編譯程序40調(diào)用與各PU的種類對(duì)應(yīng)的本地編譯程序,來(lái)生成執(zhí)行二進(jìn)制代碼。
(調(diào)度的結(jié)果)圖23表示本調(diào)度結(jié)果的例子。圖23以時(shí)間軸對(duì)每個(gè)PU表示MT的調(diào)度結(jié)果。在本例中,CPU0進(jìn)行任務(wù)的啟動(dòng)、同步以及FV控制等管理,所以最初在CPU0上加載編譯程序40生成的控制代碼550。該控制代碼550由進(jìn)行各PU的FV控制的代碼以及在CPU0中啟動(dòng)宏任務(wù)MT1_1的代碼來(lái)表現(xiàn)。即,CPU0為了對(duì)執(zhí)行宏任務(wù)MT1_1的CPU0將動(dòng)作模式置為FULL,將FV控制寄存器的值設(shè)定為“3”。此外,因?yàn)閷?duì)于其他的PU不存在應(yīng)該處理的MT,所以將FV控制寄存器的值設(shè)定為“0”,來(lái)將動(dòng)作模式置為OFF。然后,CPU0通過(guò)自身CPU0開(kāi)始宏任務(wù)MT1_1的處理。
在通過(guò)CPU0進(jìn)行的宏任務(wù)MT1_1的處理結(jié)束之后,執(zhí)行編譯程序40生成的控制代碼551,來(lái)進(jìn)行FV控制模式的設(shè)定。然后應(yīng)該處理的任務(wù)是由宏任務(wù)MT1_2以及MT1_3的下層的宏任務(wù)圖表MTG指定的任務(wù)MT1_2_1以及任務(wù)MT1_3_1,前者由CPU0執(zhí)行,后者由CPU1執(zhí)行。因此,CPU0將對(duì)任務(wù)MT1_3_1進(jìn)行處理的CPU1的FV控制寄存器設(shè)定為通常模式(FULL)。此外,關(guān)于CPU0,雖然FV控制模式也已經(jīng)為通常模式,但為了處理后續(xù)MT1_2_1,所以置為通常模式(FULL)。此時(shí),在所述任務(wù)MT1_2_1以及所述任務(wù)MT1_3_1的處理中,因?yàn)椴淮嬖谄渌鸓U上的處理任務(wù),所以該其他的PU將后續(xù)動(dòng)作模式置為OFF。然后,CPU0在自身開(kāi)始任務(wù)MT1_2_1的處理,此外在CPU1中開(kāi)始任務(wù)MT1_3_1的處理。
此外,如上所述,因?yàn)楹耆蝿?wù)MTG1_2不包含條件分支,所以已經(jīng)在編譯時(shí)進(jìn)行了調(diào)度(靜態(tài)調(diào)度),對(duì)CPU0、DSP0、DRP0、DP1分組分配任務(wù)MT。此外,因?yàn)樵诤耆蝿?wù)MTG1_3中包含條件分支,所以附加在執(zhí)行時(shí)進(jìn)行調(diào)度的程序,根據(jù)執(zhí)行結(jié)果對(duì)CPU1、DSP1、BMP0、BMP1分組分配任務(wù)MT。
然后,對(duì)宏任務(wù)圖表MTG1_2的任務(wù)MT分組的調(diào)度進(jìn)行說(shuō)明。當(dāng)任務(wù)MT1_2_1的執(zhí)行在CPU0中結(jié)束時(shí),CPU0執(zhí)行控制代碼552,為了處理任務(wù)MT1_2_2將FV控制寄存器設(shè)定為“3”,以使DSP0置為通常動(dòng)作模式。此外,對(duì)于任務(wù)MT1_2_4以及MT1_2_5,根據(jù)通過(guò)編譯時(shí)的FV調(diào)度進(jìn)行的任務(wù)的余裕度判定,將FV控制寄存器設(shè)定為“2”,以將DSP0、DRP0以及DRP1置為低功率動(dòng)作模式MIDDLE。此外,雖然在CPU0中沒(méi)有應(yīng)該執(zhí)行的任務(wù),但為了進(jìn)行DSP0、DRP0以及DRP1的任務(wù)的同步管理,調(diào)度程序?qū)τ贑PU0將FV控制寄存器設(shè)定為“1”,以將其置為低功率動(dòng)作模式LOW。然后,開(kāi)始進(jìn)行任務(wù)MT1_2_2、任務(wù)MT1_2_4以及任務(wù)MT1_2_5的處理。此外,因?yàn)樵谌蝿?wù)MT1_2_2的處理結(jié)束之后,同樣地在DSP0中執(zhí)行任務(wù)MT1_2_3,所以進(jìn)行任務(wù)的啟動(dòng)預(yù)約(向任務(wù)就緒隊(duì)列登錄任務(wù)),以使在該時(shí)刻在任務(wù)MT1_2_2結(jié)束之后啟動(dòng)任務(wù)MT1_2_3。
然后,當(dāng)CPU0判定所述任務(wù)MT1_2_04以及任務(wù)MT1_2_5的處理雙方已經(jīng)結(jié)束時(shí),該CPU0執(zhí)行控制代碼553,CPU0將處理任務(wù)MT1_2_6的自身CPU0的動(dòng)作模式設(shè)定為MIDDLE,此外,由于DRP0以及DRP1不存在應(yīng)該處理的任務(wù),所以將動(dòng)作模式設(shè)定為OFF,在與通常相比降低了電壓和動(dòng)作頻率的狀態(tài)下開(kāi)始所述任務(wù)MT1_2_6的處理。當(dāng)所述任務(wù)MT1_2_6的處理結(jié)束時(shí),CPU0執(zhí)行控制代碼554,在判定為任務(wù)MT1_2_3的處理結(jié)束時(shí),因?yàn)镸TG1_2分組內(nèi)的任務(wù)處理已經(jīng)結(jié)束,所以CPU0將DSP0的動(dòng)作模式設(shè)定為OFF。
然后,對(duì)MTG1_3的任務(wù)MT分組進(jìn)行說(shuō)明。因?yàn)楹耆蝿?wù)MT1_3在內(nèi)部具有分支,所以不執(zhí)行任務(wù)時(shí)無(wú)法得知分支方向。因此,在CPU1中執(zhí)行用于根據(jù)執(zhí)行時(shí)的狀況進(jìn)行任務(wù)、數(shù)據(jù)的裝入、任務(wù)的啟動(dòng)、同步以及FV控制代碼的管理等的動(dòng)態(tài)調(diào)度程序。因?yàn)槭紫葓?zhí)行任務(wù)MT1_3_1,所以該調(diào)度程序555將CPU1的動(dòng)作模式設(shè)定為FULL,啟動(dòng)任務(wù)MT1_3_1。在任務(wù)MT1_3_1的執(zhí)行結(jié)束之后,調(diào)度程序556判定分支方向,判定然后啟動(dòng)的任務(wù)。
在圖23表示的調(diào)度中,任務(wù)MT1_3_2由DSP1處理,任務(wù)MT1_3_3由BMP0處理。在該處理啟動(dòng)之前,調(diào)度程序556按照FV調(diào)度結(jié)果將DSP1的動(dòng)作模式設(shè)定為FULL,此外,將BMP0的動(dòng)作模式設(shè)定為L(zhǎng)OW。雖然在CPU1中沒(méi)有應(yīng)該執(zhí)行的任務(wù)MT,但因?yàn)閳?zhí)行調(diào)度程序556進(jìn)行DSP1以及BMP0的任務(wù)管理,所以調(diào)度程序556將CPU1的動(dòng)作模式設(shè)定為低功率模式LOW。
然后,CPU0上的動(dòng)態(tài)調(diào)度程序557在判定為所述任務(wù)MT1_3_2以及任務(wù)MT1_3_3雙方的處理結(jié)束時(shí),將接著對(duì)任務(wù)MT1_3_4進(jìn)行處理的自身CPU0的動(dòng)作模式(FV控制模式)設(shè)定為FULL,此外,將不存在應(yīng)該執(zhí)行的任務(wù)的DSP1以及BMP0的動(dòng)作模式設(shè)定為OFF。然后,在自身CPU0中執(zhí)行所述任務(wù)MT1_3_4。
根據(jù)以上,在由不同種類的PU10~17構(gòu)成的多處理器中,在通過(guò)多粒度并行處理,為了使執(zhí)行時(shí)間最短而對(duì)輸入程序進(jìn)行并行化并進(jìn)行了調(diào)度之后,對(duì)每個(gè)PU極細(xì)致地進(jìn)行動(dòng)作頻率控制以及電源管理以使在各PU之間處理時(shí)間均一,由此,可以以最短的執(zhí)行時(shí)間無(wú)損性能地實(shí)現(xiàn)消耗功率的降低。
(編譯程序生成的目的程序)在圖24以及圖25中表示通過(guò)編譯程序40將用于進(jìn)行如上所述的調(diào)度的調(diào)度代碼附加給輸入程序400,對(duì)每個(gè)PU輸出的輸出程序(目的代碼)的一例。圖24、圖25對(duì)在上述圖23中表示的處理進(jìn)行記述,圖24作為對(duì)宏任務(wù)MTG1_2進(jìn)行處理的處理器的分組,表示CPU0、DSP0、DRP0、DRP1各個(gè)PU用執(zhí)行代碼。此外,圖25作為對(duì)宏任務(wù)MTG1_3進(jìn)行處理的處理器的分組,表示CPU1、DSP1、BMP0、BMP1各個(gè)PU用執(zhí)行代碼。編譯程序40的生成代碼由偽代碼來(lái)表現(xiàn),如上所述,實(shí)際上是按照MPI等接口規(guī)格進(jìn)行表現(xiàn)。
(總結(jié))如上所述,根據(jù)本發(fā)明,在集成多種處理器單元PU的多處理器系統(tǒng)中,通過(guò)使PU高效動(dòng)作的程序的分割配置以及生成控制代碼的編譯程序40,可以最大限度地發(fā)揮該多處理器系統(tǒng)的性能,并且可以在最小限度的處理時(shí)間內(nèi)以低功率高效地進(jìn)行處理。此外,無(wú)需軟件開(kāi)發(fā)者識(shí)別處理單元的結(jié)構(gòu),可以在短時(shí)間內(nèi)極其高效地生成程序。
(補(bǔ)充)此外,在上述實(shí)施方式中,表示了將本發(fā)明用于在一個(gè)芯片中具備多個(gè)PU10~17的多處理器系統(tǒng)的例子,但還可以用于圖1所示的具備多個(gè)芯片的并行計(jì)算機(jī)中,可以得到與上述相同的作用效果。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求14、權(quán)利要求22、權(quán)利要求30中,根據(jù)對(duì)所述每個(gè)處理器單元設(shè)定的分析信息求出處理所述單位塊的處理周期數(shù),根據(jù)該處理周期求出所述運(yùn)算周期時(shí)間。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求14、權(quán)利要求22、權(quán)利要求30中,所述運(yùn)算周期時(shí)間,通過(guò)對(duì)所述每個(gè)處理器單元設(shè)定的本地編譯程序?qū)⑺鰡挝粔K轉(zhuǎn)換為執(zhí)行代碼,根據(jù)對(duì)所述每個(gè)處理器單元設(shè)定的分析信息求出對(duì)所述單位塊進(jìn)行處理的處理周期數(shù),根據(jù)該處理周期數(shù)求出所述運(yùn)算周期時(shí)間。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求15、權(quán)利要求23、權(quán)利要求31中,根據(jù)對(duì)所述每個(gè)處理器單元設(shè)定的分析信息求出對(duì)所述單位塊進(jìn)行處理的處理周期數(shù),根據(jù)該處理周期求出所述功率。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求15、權(quán)利要求23、權(quán)利要求31中,所述運(yùn)算周期時(shí)間,通過(guò)對(duì)所述每個(gè)處理器單元設(shè)定的本地編譯程序?qū)⑺鰡挝粔K轉(zhuǎn)換為執(zhí)行代碼,根據(jù)對(duì)所述每個(gè)處理器單元設(shè)定的分析信息求出對(duì)所述單位塊進(jìn)行處理的處理周期數(shù),根據(jù)該處理周期數(shù)求出所述功率。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求13、權(quán)利要求21、權(quán)利要求29中,提取所述單位塊的并行性的處理包含將所述提取出的單位塊存儲(chǔ)在宏任務(wù)圖表表中,對(duì)處理所述單位塊所需要的處理器單元進(jìn)行分組,來(lái)存儲(chǔ)在處理器分組表中的處理,生成所述調(diào)度代碼的處理,包含參照所述宏任務(wù)圖表表和處理器分組表以及代碼信息,生成處理器單元的控制代碼的處理;和對(duì)應(yīng)所述單位塊的執(zhí)行順序插入所述控制代碼的處理。
此外,一種多粒度并行化編譯程序,其特征為在權(quán)利要求13、權(quán)利要求21、權(quán)利要求29中,提取所述單位塊的并行性的處理包含將所述提取出的單位塊存儲(chǔ)在宏任務(wù)圖表表中,對(duì)處理所述單位塊所需要的處理器單元進(jìn)行分組,來(lái)存儲(chǔ)在處理器分組表中的處理,生成所述調(diào)度代碼的處理,包含參照所述宏任務(wù)圖表表和處理器分組表以及代碼信息,生成動(dòng)態(tài)地進(jìn)行所述單位塊的調(diào)度的調(diào)度程序的處理;和對(duì)應(yīng)所述單位塊的執(zhí)行順序插入所述調(diào)度程序的處理。
產(chǎn)業(yè)上利用的可能性根據(jù)本發(fā)明,在集成了多個(gè)種類的PU的多處理器系統(tǒng)中,通過(guò)使該P(yáng)U高效動(dòng)作的程序的分割裝置以及生成控制代碼的編譯程序,可以最大限度地發(fā)揮該多處理器系統(tǒng)的性能,并且可以以較低的功率高效地進(jìn)行處理。此外,無(wú)需軟件開(kāi)發(fā)者意識(shí)處理單元的結(jié)構(gòu),就可以在短時(shí)間內(nèi)高效地生成程序。結(jié)果,可以將本發(fā)明用于被強(qiáng)烈希望具有高運(yùn)算性能并且低功率進(jìn)行處理的、面向車輛導(dǎo)航系統(tǒng)、移動(dòng)電話、信息家電的LSI,可以實(shí)現(xiàn)高質(zhì)量的動(dòng)畫圖像和聲音處理、以及圖像識(shí)別和聲音識(shí)別等功能。對(duì)于面向汽車的信息系統(tǒng)、控制系統(tǒng)的LSI也可以適用,可以實(shí)現(xiàn)自動(dòng)運(yùn)轉(zhuǎn)、安全運(yùn)轉(zhuǎn)系統(tǒng)等。此外,還可以用于將來(lái)需要具有非常高的運(yùn)算性能并且低功率化的超級(jí)計(jì)算機(jī)。
權(quán)利要求
1.一種多處理器系統(tǒng),其具有多個(gè)單一或者多個(gè)種類的處理器單元,其特征在于,所述處理器系統(tǒng),具有將多個(gè)時(shí)鐘頻率中的一個(gè)作為動(dòng)作時(shí)鐘供給給所述處理器單元的時(shí)鐘供給部;將多個(gè)電壓中的一個(gè)作為動(dòng)作電壓供給給所述處理器單元的電壓供給部;和對(duì)供給所述各處理器單元的動(dòng)作時(shí)鐘和動(dòng)作電壓進(jìn)行設(shè)定的系統(tǒng)控制寄存器;所述處理器單元中的某一個(gè),根據(jù)并行處理的調(diào)度,在所述系統(tǒng)控制寄存器中設(shè)定供給各處理器單元的動(dòng)作時(shí)鐘和動(dòng)作電壓。
2.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述時(shí)鐘供給部,把對(duì)該時(shí)鐘供給部輸入的頻率的整數(shù)分之一的頻率作為動(dòng)作時(shí)鐘進(jìn)行供給。
3.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述系統(tǒng)控制寄存器,對(duì)預(yù)先設(shè)定的多個(gè)時(shí)鐘頻率的各自預(yù)先設(shè)定最佳化的動(dòng)作電壓,所述處理器單元中的某一個(gè),根據(jù)該系統(tǒng)控制寄存器的設(shè)定值,選擇所述時(shí)鐘頻率,決定與該時(shí)鐘頻率對(duì)應(yīng)的動(dòng)作電壓。
4.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述系統(tǒng)控制寄存器,設(shè)定多個(gè)與構(gòu)成該多處理器系統(tǒng)的多個(gè)功能部位單位中的每一個(gè)對(duì)應(yīng)的位域,根據(jù)在該位域中設(shè)定的值,對(duì)每個(gè)所述功能部位單位分別設(shè)定動(dòng)作頻率和動(dòng)作電壓。
5.根據(jù)權(quán)利要求4所述的多處理器系統(tǒng),其特征在于,所述處理器單元具有預(yù)先被區(qū)分為多個(gè)區(qū)域的存儲(chǔ)器;所述系統(tǒng)控制寄存器,具有與所述功能部位和所述存儲(chǔ)器的每個(gè)區(qū)域?qū)?yīng)的位域,根據(jù)在該位域中設(shè)定的值,對(duì)所述存儲(chǔ)器的每個(gè)區(qū)域分別設(shè)定動(dòng)作頻率和動(dòng)作電壓。
6.根據(jù)權(quán)利要求5所述的多處理器系統(tǒng),其特征在于,所述位域具有獨(dú)自的地址;所述存儲(chǔ)器單元參照該地址來(lái)設(shè)定值,由此設(shè)定與所述位域?qū)?yīng)的所述功能部位或所述存儲(chǔ)器的一區(qū)域的動(dòng)作頻率和動(dòng)作電壓。
7.根據(jù)權(quán)利要求4或權(quán)利要求6所述的多處理器系統(tǒng),其特征在于,所述功能部位,包含處理器單元內(nèi)的存儲(chǔ)器、由多個(gè)處理器單元共享的共享存儲(chǔ)器、連接各個(gè)處理器單元的本地總線,對(duì)于這些功能部位中的至少一個(gè),分別對(duì)每個(gè)功能部位單位變更動(dòng)作頻率或動(dòng)作電壓。
8.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,具備由所述處理器單元中的多個(gè)處理器共享的共享存儲(chǔ)器;在所述共享存儲(chǔ)器中預(yù)先設(shè)定的多個(gè)區(qū)域;和設(shè)定對(duì)所述共享存儲(chǔ)器的所述每個(gè)區(qū)域供給的動(dòng)作電壓的第二系統(tǒng)控制寄存器;所述處理器單元根據(jù)在所述第二系統(tǒng)控制寄存器中設(shè)定的值,分別對(duì)所述共享存儲(chǔ)器的每個(gè)區(qū)域設(shè)定動(dòng)作電壓。
9.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述處理器單元中的某一個(gè),根據(jù)并行處理的處理時(shí)間為最小的調(diào)度,在所述系統(tǒng)控制寄存器中設(shè)定對(duì)各個(gè)處理器單元供給的動(dòng)作時(shí)鐘和動(dòng)作電壓。
10.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述系統(tǒng)控制寄存器,在該多處理器系統(tǒng)的地址區(qū)域中對(duì)每個(gè)處理器單元設(shè)定唯一的地址,設(shè)定為可以從所述各個(gè)處理器單元進(jìn)行訪問(wèn)。
11.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,對(duì)所述每個(gè)處理器單元配置所述系統(tǒng)控制寄存器。
12.根據(jù)權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,所述處理器單元,經(jīng)由本地總線連接,所述系統(tǒng)控制寄存器,被配置在與所述本地總線連接的控制表中,存儲(chǔ)所述每個(gè)處理器單元的設(shè)定值。
13.一種多粒度并行化編譯程序,其生成在具有多個(gè)單一或多種類的處理器單元的多處理器系統(tǒng)上執(zhí)行的目的程序,其特征在于,使計(jì)算機(jī)執(zhí)行以下的處理讀入輸入程序的處理;對(duì)所述輸入程序進(jìn)行分析,將所述輸入程序分割為多個(gè)粒度的單位塊的處理;對(duì)所述單位塊之間的控制依存性以及數(shù)據(jù)依存性進(jìn)行分析,提取所述單位塊的并行性的處理;求出在所述多處理器系統(tǒng)具備的各個(gè)處理器單元中,所述塊單位的運(yùn)算所需要的成本信息的處理;根據(jù)所述成本信息,為使所述輸入程序的處理時(shí)間成為最小,生成將所述單位塊分配給所述處理器單元的調(diào)度代碼的處理;和將所述調(diào)度代碼附加給輸入程序,生成所述每個(gè)處理器單元的執(zhí)行代碼,將其作為目的代碼進(jìn)行輸出的處理。
14.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的運(yùn)算周期時(shí)間。
15.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的功率。
16.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成用于變化或者切斷給予處理器單元的動(dòng)作電壓以及動(dòng)作時(shí)鐘的控制代碼。
17.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,對(duì)于通過(guò)調(diào)度分配了所述單位塊的處理器單元之外的處理器單元,生成用于切斷動(dòng)作時(shí)鐘以及動(dòng)作電壓的供給的控制代碼。
18.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,所述處理器單元,包含特定用途處理器單元和通用處理器單元;所述生成所述調(diào)度代碼的處理,選擇處理所述單位塊所需要的所述特定用途處理器單元,并且選擇至少一個(gè)通用處理器單元,將這些特定用途處理器單元和通用處理器單元作為一個(gè)分組來(lái)分配所述單位塊。
19.根據(jù)權(quán)利要求13所述的多粒度并行化編譯程序,其特征在于,生成所述執(zhí)行代碼、將其作為目的代碼進(jìn)行輸出的處理,使用與所述各個(gè)處理器單元的種類對(duì)應(yīng)的本地編譯程序來(lái)生成所述執(zhí)行代碼。
20.根據(jù)權(quán)利要求16所述的多粒度并行化編譯程序,其特征在于,所述多處理器系統(tǒng),具有將多個(gè)時(shí)鐘頻率中的一個(gè)作為動(dòng)作時(shí)鐘供給所述處理器單元的時(shí)鐘供給部;將多個(gè)電壓中的一個(gè)作為動(dòng)作電壓供給所述處理器單元的功率供給部;和對(duì)所述時(shí)鐘供給部以及功率供給部對(duì)處理器單元供給的動(dòng)作時(shí)鐘和動(dòng)作電壓進(jìn)行設(shè)定的系統(tǒng)控制寄存器;生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成對(duì)在所述系統(tǒng)控制寄存器中設(shè)定的值進(jìn)行變更的控制代碼。
21.一種多粒度并行化編譯程序,其生成在具有多個(gè)單一或多種類的處理器單元的多處理器系統(tǒng)上執(zhí)行的目的程序,其特征在于,使計(jì)算機(jī)執(zhí)行以下的處理讀入輸入程序的處理;設(shè)定所述輸入程序的執(zhí)行應(yīng)該結(jié)束的允許時(shí)間的處理;對(duì)所述輸入程序進(jìn)行分析,將所述輸入程序分割為多個(gè)粒度的單位塊的處理;對(duì)所述單位塊之間的控制依存性以及數(shù)據(jù)依存性進(jìn)行分析,提取所述單位塊的并行性的處理;求出在所述多處理器系統(tǒng)具備的各個(gè)處理器單元中所述塊單位塊的運(yùn)算所需要的成本信息的處理;根據(jù)所述成本信息,為使所述輸入程序的處理時(shí)間在所述允許時(shí)間之內(nèi),生成將所述單位塊分配給所述處理器單元的調(diào)度代碼的處理;和將所述調(diào)度代碼附加到輸入程序,生成所述每個(gè)處理器單元的執(zhí)行代碼,并將其作為目的代碼進(jìn)行輸出的處理。
22.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的運(yùn)算周期時(shí)間。
23.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的功率。
24.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成用于變化或者切斷給予處理器單元的動(dòng)作電壓以及動(dòng)作時(shí)鐘的控制代碼。
25.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,對(duì)于通過(guò)調(diào)度分配了所述單位塊的處理器單元之外的處理器單元,生成用于切斷動(dòng)作時(shí)鐘以及動(dòng)作電壓的供給的控制代碼。
26.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,所述處理器單元,包含特定用途處理器單元和通用處理器單元;所述生成所述調(diào)度代碼的處理,選擇處理所述單位塊所需要的所述特定用途處理器單元,并且選擇至少一個(gè)通用處理器單元,將這些特定用途處理器單元和通用處理器單元作為一個(gè)分組來(lái)分配所述單位塊。
27.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,生成所述執(zhí)行代碼、將其作為目的代碼進(jìn)行輸出的處理,使用與所述各個(gè)處理器單元的種類對(duì)應(yīng)的本地編譯程序來(lái)生成所述執(zhí)行代碼。
28.根據(jù)權(quán)利要求21所述的多粒度并行化編譯程序,其特征在于,所述多處理器系統(tǒng),具有將多個(gè)時(shí)鐘頻率中的一個(gè)作為動(dòng)作時(shí)鐘供給所述處理器單元的時(shí)鐘供給部;將多個(gè)電壓中的一個(gè)作為動(dòng)作電壓供給所述處理器單元的功率供給部;和對(duì)所述時(shí)鐘供給部以及功率供給部對(duì)處理器單元供給的動(dòng)作時(shí)鐘和動(dòng)作電壓進(jìn)行設(shè)定的系統(tǒng)控制寄存器;生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成對(duì)在所述系統(tǒng)控制寄存器中設(shè)定的值進(jìn)行變更的控制代碼。
29.一種多粒度并行化編譯程序,其生成在具有多個(gè)單一或多種類的處理器單元的多處理器系統(tǒng)上執(zhí)行的目的程序,其特征在于,使計(jì)算機(jī)執(zhí)行以下的處理讀入輸入程序的處理;設(shè)定所述輸入程序的執(zhí)行應(yīng)該結(jié)束的允許時(shí)間的處理;對(duì)所述輸入程序進(jìn)行分析,將所述輸入程序分割為多個(gè)粒度的單位塊的處理;對(duì)所述單位塊之間的控制依存性以及數(shù)據(jù)依存性進(jìn)行分析,提取所述單位塊的并行性的處理;對(duì)所述多處理器系統(tǒng)具備的各個(gè)處理器單元中所述塊單位的運(yùn)算所需要的功率成本進(jìn)行估計(jì)的處理;為使所述輸入程序的處理時(shí)間在所述允許時(shí)間之內(nèi),并且所述功率成本為最小,生成將所述單位塊分配給所述處理器單元的調(diào)度代碼的處理;和將所述調(diào)度代碼附加給輸入程序,生成所述每個(gè)處理器單元的執(zhí)行代碼,將其作為目的代碼進(jìn)行輸出的處理。
30.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的運(yùn)算周期時(shí)間。
31.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,求出所述成本信息的處理,作為成本信息求出所述處理器單元為了對(duì)所述單位塊進(jìn)行處理所需要的功率。
32.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成用于變化或者切斷給予處理器單元的動(dòng)作電壓以及動(dòng)作時(shí)鐘的控制代碼。
33.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,生成所述調(diào)度代碼的處理,對(duì)于通過(guò)調(diào)度被分配了所述單位塊的處理器單元之外的處理器單元,生成用于切斷動(dòng)作時(shí)鐘以及動(dòng)作電壓的供給的控制代碼。
34.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,所述處理器單元,包含特定用途處理器單元和通用處理器單元;所述生成所述調(diào)度代碼的處理,選擇處理所述單位塊所需要的所述特定用途處理器單元,并且選擇至少一個(gè)通用處理器單元,將這些特定用途處理器單元和通用處理器單元作為一個(gè)分組來(lái)分配所述單位塊。
35.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,生成所述執(zhí)行代碼、將其作為目的代碼進(jìn)行輸出的處理,使用與所述各個(gè)處理器單元的種類對(duì)應(yīng)的本地編譯程序來(lái)生成所述執(zhí)行代碼。
36.根據(jù)權(quán)利要求29所述的多粒度并行化編譯程序,其特征在于,所述多處理器系統(tǒng),具有將多個(gè)時(shí)鐘頻率中的一個(gè)作為動(dòng)作時(shí)鐘供給所述處理器單元的時(shí)鐘供給部;將多個(gè)電壓中的一個(gè)作為動(dòng)作電壓供給所述處理器單元的功率供給部;和對(duì)所述時(shí)鐘供給部以及功率供給部對(duì)處理器單元供給的動(dòng)作時(shí)鐘和動(dòng)作電壓進(jìn)行設(shè)定的系統(tǒng)控制寄存器;生成所述調(diào)度代碼的處理,包含以下的處理在用通過(guò)調(diào)度被分配了所述單位塊的處理器單元進(jìn)行運(yùn)算時(shí),在所述運(yùn)算所需要的時(shí)間在所述調(diào)度允許的時(shí)間之內(nèi)時(shí),為了降低所述處理器單元進(jìn)行運(yùn)算時(shí)消耗的功率,生成對(duì)在所述系統(tǒng)控制寄存器中設(shè)定的值進(jìn)行變更的控制代碼。
全文摘要
在多處理器系統(tǒng)中,由編譯程序從成為處理對(duì)象的輸入程序中自動(dòng)提取具有并行性的任務(wù),并通過(guò)按照各個(gè)處理器單元的特性配置該任務(wù),由此,進(jìn)行使該處理器單元高效動(dòng)作的調(diào)度,而且,通過(guò)估計(jì)該處理器單元的處理量,生成使動(dòng)作頻率、電源電壓最佳化的代碼。
文檔編號(hào)G06F12/06GK101019084SQ20068000066
公開(kāi)日2007年8月15日 申請(qǐng)日期2006年4月12日 優(yōu)先權(quán)日2005年4月12日
發(fā)明者笠原博德, 木村啟二, 白子準(zhǔn), 伊藤雅樹(shù), 鹿野裕明 申請(qǐng)人:學(xué)校法人早稻田大學(xué)