欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

面向異種多處理器的全局編譯程序的制作方法

文檔序號(hào):6574321閱讀:300來源:國(guó)知局
專利名稱:面向異種多處理器的全局編譯程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及在由多個(gè)異種處理器單元構(gòu)成的多處理器系統(tǒng)中、生成能夠使該多個(gè)處理器單元高效動(dòng)作的執(zhí)行程序的編譯方法以及編譯程序。
背景技術(shù)
由于通過半導(dǎo)體制造技術(shù)的進(jìn)步引起的元件的微小化,能夠集成龐大數(shù)目的晶體管。與此同時(shí)處理器的高頻化也正在發(fā)展,但是由于動(dòng)作時(shí)電力的增加、另外由泄漏電流引起的待機(jī)時(shí)的電力的增加,在通過現(xiàn)有技術(shù)的處理器一路走來的動(dòng)作頻率的提高和邏輯方式的改善所實(shí)現(xiàn)的性能提高上開始出現(xiàn)界限。另一方面,汽車的導(dǎo)航系統(tǒng)、便攜電話、數(shù)字電視等,同時(shí)處理圖像、聲音、數(shù)據(jù)庫信息等多種數(shù)據(jù)的數(shù)字民用設(shè)備面市,強(qiáng)烈要求在短的時(shí)間而且以低的電力處理特性不同的龐大的數(shù)據(jù)。
因此現(xiàn)在,作為實(shí)現(xiàn)性能改善和低電力化的手段,通過把多個(gè)用現(xiàn)有技術(shù)的單一芯片提供的通用處理器(CPU)集成在多個(gè)單一芯片上、并行進(jìn)行處理,即使不提高動(dòng)作頻率也能得到高運(yùn)算性能的多處理器系統(tǒng)前景廣闊。將來,通過微小化的進(jìn)一步發(fā)展,預(yù)測(cè)可能在單芯片上集成100~1000個(gè)PU。另外,特別在面向嵌入設(shè)備的系統(tǒng)中,大多要處理無線或者圖像、聲音等定型的數(shù)字信號(hào)處理、作為性能改善和低電力化并存的方法,現(xiàn)在提出了在集成多個(gè)同一通用處理器(CPU)、亦即用同一命令集構(gòu)成以及運(yùn)算性能相同的通用處理器的同種的多處理器系統(tǒng)外,除多個(gè)CPU外、在多個(gè)單一芯片上搭載能夠以非常高的效率(高速而且低的電力)處理某特定處理的專用處理器、加速器這些命令集不同的、各種各樣種類的PU,特別以一定的應(yīng)用作為對(duì)象,目標(biāo)為高運(yùn)算效率的異種多處理器系統(tǒng)(HCMP)。作為專用處理器的一例,有非專利文獻(xiàn)1那樣的可動(dòng)態(tài)再構(gòu)成的處理器(DRP)。
在這樣的多處理器系統(tǒng)中,為得到與PU數(shù)成比例的運(yùn)算性能,需要使裝載的PU同時(shí)運(yùn)行來處理程序。但是,因?yàn)橥ǔ5妮斎氤绦蚱涮幚硪詴r(shí)間序列逐次記述的,所以盡管裝載多個(gè)PU,也不能得到與該多個(gè)PU成比例的期待的運(yùn)算性能。作為為解決該問題的一種方法,需要程序開發(fā)者自己考慮程序的并行性,根據(jù)使該程序執(zhí)行的多處理器系統(tǒng)的結(jié)構(gòu),附加為使用多個(gè)PU執(zhí)行該程序的并行化代碼。但是,本方法在PU是幾個(gè)的系統(tǒng)中有效,但是在將來的集成數(shù)十~數(shù)千數(shù)目的PU的系統(tǒng)中,另外特別是PU是異種構(gòu)成的HCMP的場(chǎng)合,在開發(fā)時(shí)間、有效性能方面是不實(shí)用的。
<公知例多粒度并行化編譯程序>
因此,提出了在同種多處理器中,自動(dòng)抽出程序的并行性,向多個(gè)PU分散處理,提高處理性能的自動(dòng)并行化編譯程序。亦即,已經(jīng)在研究能夠解析輸入程序,從該程序中抽出可并行動(dòng)作的部分,把該部分分配給多個(gè)PU同時(shí)執(zhí)行的、自動(dòng)并行化編譯程序。例如,在專利文獻(xiàn)1中公開了通過解析輸入源程序,把該程序分割為子程序或者循環(huán)等各種粒度的塊(任務(wù)),解析該多個(gè)任務(wù)之間的并行性,同時(shí),把任務(wù)和它們?cè)L問的數(shù)據(jù)分割為適合超高速緩沖存儲(chǔ)器或者本地存儲(chǔ)器的大小,對(duì)于各PU使其最佳分配相應(yīng)任務(wù),這樣來生成高效運(yùn)行多處理器系統(tǒng)的目標(biāo)程序的編譯方式。另外,在專利文獻(xiàn)2中公開了支持多粒度并行處理的功能的芯片多處理器的體系結(jié)構(gòu)。
<公知例非對(duì)稱多處理器、電力調(diào)度>
另外,在專利文獻(xiàn)3中公開了在異種多處理器(HCMP)中,作為為發(fā)揮該異種結(jié)構(gòu)的處理器群的性能的任務(wù)分配方法,在圖像處理等預(yù)處理的過程判明的應(yīng)用中,通過按照各處理的特性組合CPU或者DSP等種類不同的多個(gè)處理器,預(yù)先測(cè)定給出在相應(yīng)處理器上的處理時(shí)間或者消費(fèi)電力信息,通過該信息動(dòng)態(tài)給相應(yīng)各處理器分配一系列處理的方法。
<公知例自動(dòng)矢量編譯程序>
另外,在HCMP中需要對(duì)于每一種處理器生成專用的執(zhí)行程序,但是作為其生成方法,例如在專用處理器是矢量運(yùn)算器的場(chǎng)合,在非專利文獻(xiàn)2以及非專利文獻(xiàn)3中公開了通過數(shù)據(jù)依存解析抽出通過程序可進(jìn)行矢量運(yùn)算的部分(循環(huán)),生成矢量運(yùn)算命令的自動(dòng)矢量編譯程序。
專利文獻(xiàn)1特開2004-252728專利文獻(xiàn)2特開2001-175619
專利文獻(xiàn)3特開2004-252900非專利文獻(xiàn)1津野田等“面向數(shù)字媒體的再構(gòu)成型處理器FE-GA的概要”,電氣電子信息通信學(xué)會(huì)技術(shù)報(bào)告,RECONF-非專利文獻(xiàn)2田中、巖澤“用于矢量計(jì)算機(jī)的編譯技術(shù)”,信息處理,第31卷,第6號(hào),平成2年6月5日發(fā)行非專利文獻(xiàn)3Kuck,D.J.,等人,Dependence Graphs and CompilerOptimizations,Proc.8thAnnual ACM Symposium on Principles of ProgrammingLanguages,pp.177-189(1981)發(fā)明內(nèi)容現(xiàn)在,在產(chǎn)生諸如汽車的導(dǎo)航系統(tǒng)、便攜電話、數(shù)字電視等,同時(shí)處理圖像、聲音、數(shù)據(jù)庫信息等多種數(shù)據(jù)的新的應(yīng)用中,為以對(duì)于各數(shù)據(jù)最適合的方法同時(shí)處理各種各樣種類的輸入數(shù)據(jù),認(rèn)為處理器裝載多種PU的HCMP是最有前途的。在現(xiàn)有技術(shù)的多處理器系統(tǒng)中,如專利文獻(xiàn)2中公開的那樣,是裝載多個(gè)相同結(jié)構(gòu)的PU的同種處理器系統(tǒng)。但是,這樣在多種應(yīng)用同時(shí)在多種PU上被處理的將來的異種多處理器系統(tǒng)中,為與裝載的PU的種類和數(shù)目成比例得到處理性能,發(fā)明人注意到必須進(jìn)行考慮了PU的種類的程序的并行化和配置。
另外,在現(xiàn)有技術(shù)中,為在多個(gè)PU上高效執(zhí)行程序,為得到為對(duì)于小規(guī)模的程序或者處理序列經(jīng)常能夠固定決定的應(yīng)用進(jìn)行調(diào)度的執(zhí)行時(shí)間等的調(diào)度信息,需要在該系統(tǒng)上一次執(zhí)行程序進(jìn)行測(cè)定,需要以該測(cè)定值作為基礎(chǔ)開發(fā)者預(yù)先手動(dòng)生成相應(yīng)調(diào)度信息。在這種場(chǎng)合,在事前處理內(nèi)容或者順序不明的一般的程序的場(chǎng)合,特別是規(guī)模大的場(chǎng)合,事前手動(dòng)生成該信息困難。另外,在PU的種類或者數(shù)量增加的場(chǎng)合手動(dòng)生成該信息也同樣困難。因此,發(fā)明人注意到通過在編譯程序時(shí),根據(jù)PU的結(jié)構(gòu)編譯程序預(yù)先估計(jì)預(yù)處理時(shí)間,關(guān)于在編譯時(shí)能夠靜態(tài)決定處理順序的部分決定預(yù)處理過程,另外,關(guān)于不到執(zhí)行時(shí)不能決定處理順序的部分,編譯程序生成動(dòng)態(tài)進(jìn)行根據(jù)包含執(zhí)行時(shí)間的處理信息的調(diào)度的程序,這樣,就能夠在用多種PU構(gòu)成的多處理器系統(tǒng)上高效處理一般的程序。
因此,本發(fā)明的目的在于,通過提供編譯程序和可使其最優(yōu)化的面向異種多處理器的并行編譯系統(tǒng),用戶能夠不意識(shí)到與HCMP一致的并行化,在短時(shí)期內(nèi)最大限度發(fā)揮HCMP的性能,所述編譯程序,在裝載多種PU的HCMP中,通過從成為處理對(duì)象的輸入程序中根據(jù)用戶的指定,抽出用該HCMP具有的專用處理器(或者加速器)能夠處理的程序部分,或者生成面向該專用處理器的執(zhí)行代碼的編譯程序在該專用處理器上可高效執(zhí)行的部分,以包含該指定以及該抽出的任務(wù)的形式,并行化編譯程序自動(dòng)抽出具有并行性的任務(wù),按照各PU的特性配置相應(yīng)任務(wù),由此,使相應(yīng)PU高效運(yùn)行,進(jìn)一步估計(jì)該P(yáng)U的處理量,這樣來生成使動(dòng)作頻率和電源電壓優(yōu)化的代碼,附加在目標(biāo)程序上。
本發(fā)明提供一種全局編譯程序,其為在異種多處理器上把程序分割為與相應(yīng)處理器裝載的各種處理器單元的處理特性一致的程序分割單元。另外,還提供一種全局編譯程序,其為這樣的單元即為使分割后的程序能夠有效利用各種處理器的性能,使該多個(gè)處理器單元同時(shí)并行動(dòng)作,這樣來調(diào)度所述分割程序,以使能高效進(jìn)行處理。
作為其具體的方法,在具有多個(gè)單一或者多種處理器單元的異種多處理器中,把所述輸入程序,在對(duì)于所述系統(tǒng)具有的每一種處理器單元預(yù)先準(zhǔn)備的所述處理器單元專用的代碼生成編譯程序中,解析所述輸入程序,由此,抽出對(duì)于所述每一處理器單元可執(zhí)行的程序的部分,生成指定該程序部分的處理處理器信息。另外,進(jìn)行所述輸入程序的解析后抽出該輸入程序的并行性,根據(jù)所述處理處理器信息,進(jìn)行對(duì)于所述處理器單元的進(jìn)行程序部分的分配(調(diào)度)的處理、和把所述分配的程序部分作為所述每一處理器單元的輸出代碼輸出的處理。在使計(jì)算機(jī)執(zhí)行以上的處理為特征的面向異種多處理器的全局編譯程序中,解決本課題。
另外,在所述全局編譯程序中,通過進(jìn)行把指定要執(zhí)行程序的部分的處理器的所述處理器信息作為指示語句在輸入程序中插入的處理,解決課題。
另外,在所述全局編譯程序中,除所述處理器信息之外,還進(jìn)行把在所述處理器中執(zhí)行時(shí)的執(zhí)行時(shí)間、數(shù)據(jù)傳送時(shí)間、控制時(shí)間等作為成本信息生成的處理,由此來解決課題。
再者,通過進(jìn)行把所述成本信息作為指示語句插入輸入程序中的處理,解決課題。
根據(jù)本發(fā)明,在集成多種PU的多處理器系統(tǒng)中,通過使相應(yīng)PU高效動(dòng)作的程序的分割配置以及生成控制代碼的多個(gè)編譯程序聯(lián)合程序并行化方法,能夠最大限度有效利用該處理器系統(tǒng)的性能,同時(shí)能夠以低電力高效率進(jìn)行處理。再有,軟件開發(fā)者不用意識(shí)到處理器的結(jié)構(gòu),就能夠在短的時(shí)間內(nèi)制作高效率的程序。


圖1是說明成為執(zhí)行代碼的生成對(duì)象的異種多處理器(HCMP1)的結(jié)構(gòu)的框圖。
圖2a是表示HCMP1全局編譯程序的處理過程的一例的流程圖。
圖2b是表示HCMP1全局編譯程序的處理過程的另一例的流程圖。
圖2c是表示HCMP1全局編譯程序的處理過程的另一例的流程圖。
圖3是表示輸入程序例子的圖。
圖4是說明HCMP1硬件結(jié)構(gòu)信息的框圖。
圖5a是說明面向各種處理器的代碼生成編譯程序的圖。
圖5b是說明面向各種處理器的代碼生成編譯程序的圖。
圖5c是說明面向各種處理器的代碼生成編譯程序的圖。
圖6是表示面向DSP的代碼生成編譯程序輸出結(jié)果的圖。
圖7是表示面向DRP的代碼生成編譯程序輸出結(jié)果的圖。
圖8是表示對(duì)于用戶指定塊的成本信息的指定結(jié)果的圖。
圖9是表示并行化編譯程序的處理過程的一例的流程圖。
圖10是表示編譯程序生成的任務(wù)間依從關(guān)系圖的宏任務(wù)圖表。
圖11是表示HCMP任務(wù)調(diào)度的結(jié)果的時(shí)間圖。
符號(hào)說明200~202程序203、205、206執(zhí)行代碼204結(jié)構(gòu)構(gòu)成信息207、208編譯信息231執(zhí)行概要信息
210~212、220處理230面向各種處理器的庫231成本信息300~303、310、311、320~323指示語句400輸入程序401~411處理412輸出代碼413處理420~424表500、510、520宏任務(wù)圖表501~503、511~515、521~525、551宏任務(wù)522OR條件550任務(wù)間同步控制代碼552任務(wù)同步控制用動(dòng)態(tài)調(diào)度器代碼具體實(shí)施方式
下面根據(jù)

本發(fā)明的一個(gè)實(shí)施形態(tài)。
<實(shí)施形態(tài)的全體結(jié)構(gòu)>
作為本發(fā)明的實(shí)施形態(tài),首先參照?qǐng)D1的框圖說明作為在本發(fā)明中提供的并行編譯方式的適用對(duì)象的異種多處理器系統(tǒng)(以下,HCMP)1的結(jié)構(gòu)。在HCMP1中,用多個(gè)異種的處理器單元(PU)、共有存儲(chǔ)器(CSM)構(gòu)成。該各PU都連接到互聯(lián)·網(wǎng)絡(luò)(LBUS)上。另外,該各SM連接到LBUS上。該各PU連接對(duì)于該各PU的處理器核、存儲(chǔ)器等各部位供給電源電壓以及動(dòng)作時(shí)鐘的電源電壓·時(shí)鐘頻率控制電路。在本實(shí)施形態(tài)中,PU的種類和個(gè)數(shù),用兩個(gè)通用處理處理器(CPU)、一個(gè)信號(hào)處理處理器(DSP)、兩個(gè)可動(dòng)態(tài)再構(gòu)成的處理器(DRP)構(gòu)成,但是PU的種類和數(shù)目不限于本實(shí)施形態(tài)所示,可以采取各種各樣的結(jié)構(gòu)。
各PU具有臨時(shí)保存在該P(yáng)U中處理的程序或者數(shù)據(jù)的本地存儲(chǔ)器(或者超高速緩沖存儲(chǔ)器)(LM)以及決定對(duì)于該P(yáng)U的電源電壓動(dòng)作或者動(dòng)作頻率的頻率·電源電壓控制寄存器(FVR)。此外,本地存儲(chǔ)器(LM)24被分割為映射由其他PU以及具有該LM的自身PU可訪問的全局地址的空間、和映射僅該自身PU可訪問的專用地址的空間。此外,在LBUS上連接的共有存儲(chǔ)器(CSM)映射全局地址,可由全部PU訪問。此外以上只不過是本發(fā)明中的適用結(jié)構(gòu)的一例,作為實(shí)施方法不限于此。例如,雖然在圖1中未表示,但是在LBUS上根據(jù)需要連接輸入輸出處理、中斷處理、定時(shí)器、調(diào)試電路、等外圍電路。另外,也可以考慮通過總線橋分層連接同種或者異種總線。
這樣,為發(fā)揮多種PU具有的性能,需要分配使各PU并行動(dòng)作、或者特別在作為專用處理器的DRP或者DSP中使有關(guān)處理器高效運(yùn)行可能的處理。
<全局編譯程序的結(jié)構(gòu)>
圖2a圖示表示面向HCMP1的程序并行化以及執(zhí)行代碼的生成的處理的一例的流程圖。輸入的程序200(以下稱輸入程序)通常逐次記述,但是通過本流程圖實(shí)施輸入程序200的任務(wù)分割和并行性解析、以及調(diào)度,使能夠最大限度有效利用HCMP1具有的PU。在本發(fā)明中假定把根據(jù)圖2a所示的流程圖的處理過程稱為全局編譯程序2。以下首先簡(jiǎn)單說明圖2a所示的全局編譯程序2的全體的流程圖,接著詳細(xì)說明各編譯階段中的流程。此外,圖2a所示的處理,通過預(yù)先準(zhǔn)備的計(jì)算機(jī)執(zhí)行。
對(duì)于全局編譯程序2的輸入,成為用戶使用C語言或者FORTRAN等高級(jí)語言逐次記述處理步驟的輸入程序200。再有,全局編譯程序2也一并輸入作為目標(biāo)的HCMP1的結(jié)構(gòu)信息204。圖3表示輸入程序200的一例。輸入程序200這樣具有循環(huán)、子程序、條件分支等的控制結(jié)構(gòu),在HCMP1并行化編譯程序中以該結(jié)構(gòu)為線索用構(gòu)造單位進(jìn)行任務(wù)分割。
<HCMP結(jié)構(gòu)構(gòu)成信息>
接著在圖4中表示HCMP1的構(gòu)成信息的例子。在圖2a所示的結(jié)構(gòu)構(gòu)成信息204中,把圖1所示的HCMP1的構(gòu)成的結(jié)構(gòu)信息作為通過全局編譯程序并行化必要的參數(shù)信息預(yù)先輸入。作為對(duì)于結(jié)構(gòu)構(gòu)成信息204輸入的通常的參數(shù)信息,定義PU的種類、數(shù)目、PU的對(duì)總線動(dòng)作速度比、各PU具有的存儲(chǔ)器的種類、存儲(chǔ)器大小、以及存儲(chǔ)器訪問訪問延遲、HCMP1具有的存儲(chǔ)器種類、大小、延遲等。例如,圖4的第一行,“pu 0 cpu clock=2 1dm=128KB,2cyc dsm=16KB,1cyc icache=8KB,2way”,從開始說明其意義,“PU”通過表示參數(shù)的種類表現(xiàn)關(guān)于處理器單元的屬性。“0”表示PU號(hào)碼,“cpu”作為處理器種類表示是CPU。接著“clock=2”表示PU對(duì)于該總線的速度比是2倍,“1dm=128KB,2cyc”表示保持本地?cái)?shù)據(jù)存儲(chǔ)器(LDM)、其大小是128KB、訪問延遲是2周期。
再有,“dsm=16KB,1cyc”表示保持分散共有存儲(chǔ)器、其大小是16KB,訪問延遲是1周期,“icache=8KB,2way”表示具有8KB的2路命令超高速緩沖存儲(chǔ)器。另外,第九行表示HCMP1具有的集中共有存儲(chǔ)器(CSM),“onchip”意味著在芯片上裝載。
亦即,通過該構(gòu)成信息,HCMP1如圖1所示,用通用處理器CFU×4、信號(hào)處理處理器DSP×2、以及可動(dòng)態(tài)再構(gòu)成處理器(DRP)×2構(gòu)成,各PU保持本地存儲(chǔ)器。此外,作為構(gòu)成信息,在圖4所示的以外,例如也可以考慮指定總線的構(gòu)成、各PU具有的電力方式的類別等的信息。例如作為總線的網(wǎng)絡(luò)構(gòu)成,可以表示雙向的的一根總線或者3根總線、環(huán)狀的總線、縱橫連接等。另外有總線事務(wù)處理方式(是原子事務(wù)處理,還是能夠分離總線的要求和應(yīng)答的分離事務(wù)處理)的指定。也可以指定各PE連接哪個(gè)總線,或者在采用集群結(jié)構(gòu)的場(chǎng)合指定屬于哪個(gè)域的總線。
另外,作為電力方式的類別,可以考慮時(shí)鐘停止或者電源切斷等的電力控制方式的定義或者在各方式中的電力控制時(shí)的效果的記述。本構(gòu)成信息,是為導(dǎo)出對(duì)于在全局編譯程序并行化調(diào)度時(shí)所需要的處理時(shí)間或者電力這樣的成本所需。另外,在進(jìn)行為并行化的程序分割時(shí),也因?yàn)樾枰紤]PU具有的存儲(chǔ)器容量,所以使用本構(gòu)成文件的信息。
<全局編譯程序的處理流程>
下面說明聯(lián)合各面向處理器的代碼生成編譯程序210和并行化編譯程序211、把輸入程序200變換為在異種多處理器(HCMP)1上并行執(zhí)行的執(zhí)行代碼206的、全局編譯程序2的處理流程。首先,輸入程序200在對(duì)于HCMP1具有的每種處理器準(zhǔn)備的多個(gè)面向各種處理器的代碼生成編譯程序ACCCPL210上被順序處理。特別,HCMP1具有的專用處理器因?yàn)槊罴屯ǔ5腃PU不同,所以需要另外估計(jì)在并行化調(diào)度時(shí)所需要的處理成本,另外因?yàn)楦鶕?jù)PU的類別可有效處理的程序結(jié)構(gòu)大多受限,所以通過用對(duì)于HCMP1具有的每種處理器準(zhǔn)備的面向各種處理器的代碼生成編譯程序ACCCPL210進(jìn)行處理,生成下一段的并行化編譯程序211需要的信息。
此外,在異種多處理器1中可以具有多個(gè)命令集不同的通用處理器。此時(shí),也因?yàn)殡m說是通用處理器然而由于結(jié)構(gòu)不同、可高效處理的程序結(jié)構(gòu)不同,所以也可以生成對(duì)于程序結(jié)構(gòu)的執(zhí)行時(shí)間等的各種信息。
亦即,ACCPL210對(duì)于輸入程序200,求各種處理器中的最優(yōu)處理部的指定,以及在有關(guān)處理部的有關(guān)各種處理器中進(jìn)行處理時(shí)的處理時(shí)間(處理成本=執(zhí)行周期數(shù)),作為對(duì)象處理器信息附加在該輸入程序200上。此外,在處理階段中的ACCPL210的輸出,成為在輸入程序200上附加了上述信息的程序201。另外,也可以考慮不向輸入程序200附加所述對(duì)象處理器信息,除所述信息之外,用另外的文件等(209)生成表示對(duì)于該信息的該輸入程序200的位置的信息。另外,在預(yù)先由用戶進(jìn)行的處理處理器指定等中,對(duì)于預(yù)先固定地決定處理處理器的程序部分,在該階段另外生成面向該處理器的執(zhí)行代碼205中,也可在并行化調(diào)度后鏈接該執(zhí)行代碼作為面向HCMP1的執(zhí)行代碼。
接著,利用ACCPL210中的處理結(jié)果(對(duì)象處理器信息附加程序)201,并行化編譯程序(PRLCPL)解析程序結(jié)構(gòu),抽出程序的分割和分割后的程序單位(任務(wù))的并行性,求在通常CPU中處理時(shí)的成本,進(jìn)行任務(wù)的分割,使把以并行性為基礎(chǔ)同時(shí)可執(zhí)行的處理在多個(gè)PU上縮短全體的處理時(shí)間,此時(shí),關(guān)于在HCMP1上的專用處理器中可處理的部位,有效利用在輸入程序200上附加的信息,在可判斷為通過給專用處理器分配處理全體的結(jié)束時(shí)間提早的場(chǎng)合,對(duì)該專用處理器進(jìn)行任務(wù)分配。
另外,在由于專用處理器資源的制約該專用處理器擁擠的場(chǎng)合,在可判斷為用通常的CPU處理較早的場(chǎng)合,給通用處理器分配任務(wù)。對(duì)于調(diào)度的結(jié)果,對(duì)于與每一被分割的任務(wù)對(duì)應(yīng)的輸入程序200,通過并行編譯程序插入·附加表示成為任務(wù)的標(biāo)記的指示語句、表示成為處理對(duì)象的PU的指示語句(并行化信息)。另外,表示與各任務(wù)對(duì)應(yīng)的程序中使用的數(shù)據(jù)的、HCMP1上的存儲(chǔ)器配置的指示語句也一并被插入。
接著附加表示該任務(wù)分割、配置的指示語句的輸入程序202,再次通過用包含通用處理器CPU以及專用處理器的每一PU類別的面向?qū)S锰幚砥鞯木幾g程序ACCPL210處理,生成各PU的執(zhí)行代碼。在向ACCCPL輸入的程序中,因?yàn)槊鞔_表示成為處理對(duì)象的PU,所以面向各PU的代碼生成編譯程序,可以僅解析指定各編譯程序作為對(duì)象的PU中的處理的部分,變換為執(zhí)行代碼203。
此外,為進(jìn)一步進(jìn)行調(diào)度全體的最優(yōu)化,也可以把用并行化編譯程序PRLCPL211生成的調(diào)度信息等的編譯程序信息208、另外在ACCPL210中通過并行化編譯程序PRLCPL211的基于調(diào)度的執(zhí)行代碼生成的結(jié)果得到的、包含更正確的成本信息的編譯程序信息207,輸入并行化編譯程序PRLCPL211(221),再次執(zhí)行調(diào)度。在想更深地進(jìn)行HCMP1中的執(zhí)行代碼的最優(yōu)化時(shí),通過重復(fù)該處理(210),執(zhí)行程序全體的最優(yōu)化。
此外,如圖2b所示,也可以把該編譯程序信息207、208,向位于全局編譯程序2的處理的開始階段的面向各種處理器的代碼生成編譯程序210輸入(203),再次進(jìn)行通過代碼生成編譯程序210的面向各種處理器的任務(wù)抽出和執(zhí)行時(shí)間評(píng)價(jià)。
用ACCPL210生成的執(zhí)行代碼203,在鏈接程序212中指定各程序或者數(shù)據(jù)的HCMP1上的存儲(chǔ)器位置,另外,使用在第一階段的用面向?qū)S锰幚砥鞯木幾g程序ACCPL210生成的執(zhí)行代碼這件事,在并行化編譯程序211的輸出程序202中被指定的場(chǎng)合,包含該執(zhí)行代碼,作為單一的面向HCMP1的的執(zhí)行代碼(目標(biāo))206進(jìn)行合并。執(zhí)行目標(biāo)206放置在盤裝置或芯片外共有存儲(chǔ)器(CSM)上,在執(zhí)行時(shí)通過加載目標(biāo)代碼,把每一PU的程序讀入各PU中,開始執(zhí)行。
此外,也可以在HCMP1芯片或者HCMP模擬器上執(zhí)行,把其結(jié)果得到的任務(wù)(調(diào)度)執(zhí)行時(shí)間、數(shù)據(jù)傳送時(shí)間、總線利用時(shí)間、電力控制效果、超高速緩沖存儲(chǔ)器故障率等信息作為執(zhí)行程序概要信息231收集,在下次的編譯中利用。亦即也可以把該執(zhí)行程序概要信息輸入并行化編譯程序PRLCPL211,以更加縮短執(zhí)行時(shí)間、另外更加降低消費(fèi)電力為目的,進(jìn)行調(diào)度全體的最優(yōu)化。此外,如圖2b所示,也可以把該編譯程序信息程序概要信息231輸入位于全局編譯程序的流程的開始階段的面向各種處理器的代碼生成編譯程序210(222),在通過代碼生成編譯程序210的面向各種處理器的任務(wù)的抽出和執(zhí)行時(shí)間評(píng)價(jià)中利用。
<使用面向各種處理器的庫的編譯流程>
各種專用處理器,把記述的程序在面向各處理器的代碼生成編譯程序210中變換為各每一處理器的執(zhí)行代碼,處理該執(zhí)行代碼,但是不一定限于準(zhǔn)備通過專用處理器變換為執(zhí)行代碼的代碼生成編譯程序。例如,在信號(hào)處理處理器(DSP)那樣的處理器中,難于把用通常的C語言的形式書寫的程序變換為面向DSP的執(zhí)行代碼。
一般,把實(shí)現(xiàn)某功能的執(zhí)行代碼不預(yù)先使用編譯程序用匯編等作為庫記述,在用戶使用該處理器的場(chǎng)合采取調(diào)用該庫的形式。另外,通常不解釋程序、以硬件方式定義動(dòng)作的專用處理電路,作為庫定義對(duì)于該電路給予數(shù)據(jù)起動(dòng)處理這樣的控制動(dòng)作。
這樣在庫中使用各種處理器的場(chǎng)合,全局編譯程序2也能應(yīng)對(duì)。具體說,如圖2c所示,導(dǎo)入各種處理器庫230。該庫230存儲(chǔ)面向各種處理器的執(zhí)行代碼或者控制代碼、以及該處理的執(zhí)行時(shí)間這樣的成本信息232。用戶能夠在程序200中以子程序調(diào)用的形式調(diào)用庫230。例如,在圖3的輸入程序例子中可以和“func3”的子程序調(diào)用301同樣記述。此時(shí),把成本信息232如圖3的“#promga hcmp assign dsp”(300)那樣用指示語句在程序中明示,或者后階段的并行化編譯程序PRLCPL211參照各種處理器庫的成本信息232。并行化編譯程序211以下的處理和圖2a、圖2b所示的流程同樣。
<面向各種處理器的編譯程序的處理流程>
以上為面向HCMP1的全局編譯程序2的處理流程。下面說明面向各種專用處理器的編譯程序的ACCCPL210的處理過程。首先,為向并行化編譯程序PRLCPL211輸入,所以在圖5a圖示生成ACCCPL210的輸出程序201的處理流程。
以下作為處理器以DRP等專用處理處理器為例進(jìn)行說明。ACCCPL210首先進(jìn)行程序200的結(jié)構(gòu)的解析,在編譯程序內(nèi)部生成變量或運(yùn)算、分割為控制結(jié)構(gòu)單位的中間代碼(2101)。接著著眼于解析后的程序結(jié)構(gòu)、特別是循環(huán)這樣的結(jié)構(gòu),進(jìn)行循環(huán)內(nèi)的運(yùn)算數(shù)據(jù)流或循環(huán)的迭代間的依從性解析,判定可否連續(xù)地高效率地在成為對(duì)象的PU上處理該循環(huán)(2102,2103)。例如,在如非專利文獻(xiàn)1中那樣的DRP的場(chǎng)合,例如把通過用8×4的ALU陣列構(gòu)成的、8×4的運(yùn)算器在縱向并行地而且在橫向以流水線方式使用可以高效率地處理。亦即如果在循環(huán)的迭代間有并行性,則可以把ALU陣列在縱向上分割,在ALU陣列的一面上一次處理多個(gè)迭代數(shù)量。另外,在循環(huán)的代入句這樣的語句級(jí)上有并行性的場(chǎng)合,通過以語句單位在縱向并行分割運(yùn)算器,能夠一次處理多個(gè)語句。另外,在語句間存在數(shù)據(jù)依從的場(chǎng)合,通過像以流水線方式利用ALU陣列的橫向那樣映射運(yùn)算,對(duì)于每次一個(gè)到數(shù)個(gè)進(jìn)行命令和數(shù)據(jù)的處理的CPU,能夠使速度有大的提高。這樣,在步驟2102、2103、2104能夠進(jìn)行與專用處理器的架構(gòu)一致的最優(yōu)化。
此外,在輸入程序200內(nèi)存在由用戶的指示語句的場(chǎng)合也與其一致進(jìn)行解析。作為指示語句,有指示用戶應(yīng)該用HCMP1上的某特定的專用處理器進(jìn)行處理的指示語句。亦即,如果ACCCPL210例如是DRP用的代碼生成編譯程序,則假定當(dāng)作為指示語句某程序·塊由用戶指定在DRP上的處理時(shí),該塊作為DRP處理部對(duì)待。亦即在用指示語句指定的地方(如果有用循環(huán)或者子程序等的程序構(gòu)造單位指定的場(chǎng)合,則也有在面向該DRP的處理部的其前后用指示語句指定的場(chǎng)合),在DRP中作為可處理的對(duì)待,生成該部分的處理成本或者執(zhí)行代碼。
接著,對(duì)于判定為用該P(yáng)U可處理的塊,根據(jù)在該P(yáng)U的結(jié)構(gòu)中在中間代碼級(jí)上最優(yōu)化的結(jié)果,計(jì)算用該P(yáng)U進(jìn)行處理時(shí)對(duì)該塊的處理成本(2105)。此外,該處理成本根據(jù)成為對(duì)象的PU的結(jié)構(gòu)導(dǎo)出方法不同,而根據(jù)在通常的處理器類型中以執(zhí)行程序的命令時(shí)消費(fèi)的平均的時(shí)鐘數(shù)進(jìn)行計(jì)算。另外,在DRP等的信號(hào)處理處理器中,如果知道成為處理對(duì)象的數(shù)據(jù)量,則根據(jù)流過數(shù)據(jù)總線上的運(yùn)算器的數(shù)據(jù)供給的周期數(shù),能夠計(jì)算出正確的時(shí)鐘數(shù)。另外,在專用處理器是矢量運(yùn)算器的場(chǎng)合,可以使用在非專利文獻(xiàn)2中公開的通過自動(dòng)矢量化編譯程序的程序的矢量化技術(shù)。矢量化技術(shù),通過進(jìn)行循環(huán)結(jié)構(gòu)的數(shù)據(jù)依從分析,進(jìn)行循環(huán)的矢量化判定,對(duì)于可矢量化的部位插入矢量運(yùn)算命令。決定為矢量化的程序變換是否可能的方法,如非專利文獻(xiàn)3中公開的那樣通過使用數(shù)據(jù)依從圖表是可能的。另外,處理成本通過成為矢量命令以及運(yùn)算對(duì)象的數(shù)據(jù)數(shù),可以作為矢量運(yùn)算時(shí)鐘數(shù)得到。
此外,專用處理器如上述那樣,通常成為具有多個(gè)運(yùn)算器群和連續(xù)供給數(shù)據(jù)的路徑,運(yùn)算器控制或者數(shù)據(jù)供給控制由分開設(shè)置的順序器和控制用處理器進(jìn)行。亦即,需要向該處理器上的存儲(chǔ)器從CSM或者其他的處理器內(nèi)的本地存儲(chǔ)器等、專用處理器外部的存儲(chǔ)器傳送數(shù)據(jù)的、進(jìn)行決定從專用處理器內(nèi)的存儲(chǔ)器向運(yùn)算器的數(shù)據(jù)的供給、或者決定運(yùn)算器的功能的程序供給、決定供給運(yùn)算器的功能或者數(shù)據(jù)的定時(shí)的控制的時(shí)間,代碼生成編譯程序210例如也包含從CSM對(duì)于該P(yáng)U內(nèi)的本地存儲(chǔ)器的數(shù)據(jù)加載時(shí)間、為設(shè)定該P(yáng)U上的運(yùn)算器功能所需要的控制時(shí)間等,決定處理成本。計(jì)算出來的處理成本,對(duì)于輸入程序作為指示語句附加(2106)。
此外,也可以把以上計(jì)算出來的處理成本作為編譯信息207另外輸出。在圖5b的步驟2111~2116中表示生成編譯信息207的流程。所述編譯信息207,被用于如上述通過再次用并行化編譯程序PRLCPL211處理(220)來最優(yōu)化程序全體。
另外,代碼生成編譯程序211除在輸入程序200上附加成本等信息外,生成有關(guān)程序執(zhí)行代碼、數(shù)據(jù)傳送·專用處理器控制代碼。在圖5c的步驟2121~2126中表示生成執(zhí)行代碼的面向各種處理器的代碼生成編譯程序處理流程。
<面向各種處理器的編譯程序輸出的程序>
首先說明圖3所示的、向面向各種處理器的代碼生成編譯程序210輸入、遵從上述處理過程解析的輸入程序。在圖3的輸入程序上存在來自用戶的指示語句。指示語句,是用“#pragma HCMP1”這樣的關(guān)鍵字開始的行。300的“#pragma HCMP1 assign dsp”指定緊跟該指示語句后面的子程序“func3(d,e,f)”(301)是給DSP分配處理。亦即,所述子程序表示在DSP上的處理是可能的,同時(shí)用戶指定在DSP中的處理。此外,在判定即使有本指示而并行化編譯程序例如DSP因?yàn)樵谔幚砥渌蝿?wù)中所以用通常CPU處理結(jié)束時(shí)間快的場(chǎng)合,結(jié)果有時(shí)用CPU處理,不一定限于強(qiáng)制用通過該指示語句指定的處理器進(jìn)行處理。另外,用圖3的302“#pragma HCMP1 assign drpprocess_a_01”以及303的“#pragma assign process_a_01”圍起來的部分指定給DRP分配處理。指示語句的末尾成為指定的唯一的ID,如前例那樣有用對(duì)于循環(huán)或者分支的構(gòu)造單位指定的方式,以及另外用指示語句指定開始點(diǎn)和結(jié)束點(diǎn)的方式。
接著在圖6中表示對(duì)于所述輸入程序200首先在面向DSP的代碼生成編譯程序中進(jìn)行處理的結(jié)果。在面向DSP的代碼生成編譯程序中,由程序構(gòu)造確定在DSP中可處理的塊,同時(shí)用DSP在輸入程序中插入處理該塊時(shí)的成本。例如圖6的310“#pragma HCMP1 exec dsp exec_cyc=700,000data=20,000”表示對(duì)于用下行311的“#pragma HCMP1 assign dsp”指定的DSP處理塊的、通過面向DSP的代碼生成編譯程序計(jì)算出來的處理成本?!癳xec_cyc=700,000”表示執(zhí)行時(shí)間花費(fèi)700K周期,另外“data=20,000”表示數(shù)據(jù)傳送時(shí)間花費(fèi)20K周期。
接著在圖7中表示把通過面向DSP的代碼生成編譯程序210的輸出程序輸入到面向DRP的代碼生成編譯程序、處理(201)的結(jié)果。例如圖7的320“#pragma HCMP1 exec drp exec_cyc=200,000data_cyc=10,000config_cyc=3,000”表示對(duì)于用321“#pragma HCMP1 assign drp”指定的DRP處理塊的、通過面向DRP的代碼生成編譯程序計(jì)算出來的處理成本?!癳xec_cyc=200,000”表示執(zhí)行時(shí)間花費(fèi)200K周期,“data_cyc=10,000”表示數(shù)據(jù)傳送時(shí)間花費(fèi)10K周期,“config_cyc=3,000”表示在DRP用的程序信息(配置)的加載上花費(fèi)3K周期。另外,在判定某塊可由多個(gè)專用處理器處理的場(chǎng)合,面向可處理的各個(gè)專用處理器的成本以多行插入。例如,圖7的322“#pragma HCMP1 exec drp”以及323“#pragma HCMP1 exec dsp”被連續(xù)插入,這表示下行的循環(huán)用DRP以及DSP兩者都可執(zhí)行。并行化編譯程序211根據(jù)雙方的執(zhí)行成本以及調(diào)度時(shí)的各PU的狀況,最終決定分配該循環(huán)的PU。
另外,也可以根據(jù)全局編譯程序選項(xiàng)的指定,用戶用“#pragma HCMP1assign***”明確指定處理處理器,僅求該處理處理器的成本,插入指示語句。圖8表示根據(jù)本方法處理圖3的輸入程序的結(jié)果(成本信息209)。
<并行化編譯程序的處理流程>
下面說明在全局編譯程序2中的并行化編譯程序211的處理流程。圖9表示并行化編譯程序211的處理流程。
<宏任務(wù)的生成>
用C語言或者Fortran等高級(jí)語言記述的逐次構(gòu)造的輸出程序201,首先通過并行化編譯程序211解析該程序的結(jié)構(gòu),分割、生成重復(fù)塊(RBRepetition Block)、子程序(SBSub Routine)、偽賦值語句塊(BPABlockof Pseudo Assignment statements)三種粒度大的宏任務(wù)(MT)(401)。RB是循環(huán)塊中各階層的最外側(cè)的循環(huán),BPA是考慮調(diào)度開銷或者并行性、融合或者分割由賦值語句組成的多個(gè)基本塊的塊。如圖3的“#pragma HCMP1 assign***”那樣,指定專用處理器中的處理的塊,作為一個(gè)宏任務(wù)對(duì)待。
<數(shù)據(jù)依從·控制流程解析>
接著,并行化編譯程序211,解析分割生成的該宏任務(wù)間的控制流程以及數(shù)據(jù)依從性,抽出MT的執(zhí)行順序關(guān)系(402)。因?yàn)檩斎氤绦蛑鸫斡浭?,所以通過通常的編譯程序的執(zhí)行代碼以和該程序的構(gòu)造相同的逐次的順序執(zhí)行,但是在MT之間觀察時(shí)大多不一定需要以記述的順序執(zhí)行。亦即,在MT之間沒有控制或者數(shù)據(jù)參照的依從性的場(chǎng)合,特別在多處理器系統(tǒng)中,在多個(gè)PU上配置多個(gè)MT同時(shí)或者變更順序,使全體的執(zhí)行時(shí)間縮短進(jìn)行調(diào)度很重要。為進(jìn)行這樣的調(diào)度,需要解析MT間的并行性。因此作為為此目的的準(zhǔn)備,通過數(shù)據(jù)依從·控制流程解析處理402,抽出MT之間的執(zhí)行順序關(guān)系。
<循環(huán)級(jí)并行性解析>
接著并行化編譯程序211,作為宏任務(wù)內(nèi)的中粒度級(jí)的并行性解析,進(jìn)行循環(huán)級(jí)并行化(403)。在循環(huán)級(jí)并行化403中,解析循環(huán)的重復(fù)(迭代)單位間的數(shù)據(jù)依從性,判斷能否獨(dú)立處理各迭代,在可能的場(chǎng)合把各迭代分配給多個(gè)PU進(jìn)行并行處理。另外,通過把單一循環(huán)分割為多個(gè)循環(huán)提高并行性,或者通過數(shù)據(jù)的復(fù)制或者數(shù)組變量的擴(kuò)張消除循環(huán)間的數(shù)據(jù)依從性,或者通過融合多個(gè)循環(huán)為單一的循環(huán)減輕循環(huán)控制需要的開銷等各種方法,實(shí)現(xiàn)循環(huán)的并行化。
<處理成本解析>
接著并行化編譯程序211,通過預(yù)先附加的指示信息求在各PU上執(zhí)行生成的宏任務(wù)MT時(shí)需要的處理周期。此外,關(guān)于CPU的處理周期,通常通過參照并行化編譯程序內(nèi)的CPU命令成本表求(404)。作為CPU處理成本的估計(jì)方法,例如關(guān)于CPU等在表420中保存在乘法或加法等命令級(jí)需要的周期數(shù),通過參照該表420,能夠估計(jì)在有關(guān)PU上執(zhí)行MT時(shí)的逐次處理周期數(shù)。
此外,在編譯時(shí)存在不能決定成本的要素的場(chǎng)合,例如MT包含分支的場(chǎng)合,把分支概率作為50%進(jìn)行成本計(jì)算。另外,例如在循環(huán)或者數(shù)組的大小不定的場(chǎng)合,使用取循環(huán)為固定次數(shù)、取數(shù)組宣告時(shí)的最大尺寸等方法。
<宏任務(wù)間并行性解析=最快執(zhí)行條件解析>
編譯程序211在宏任務(wù)MT的處理成本決定后,從同時(shí)解析在數(shù)據(jù)依從·控制流程解析處理402抽出的MT間的控制流程和數(shù)據(jù)依從性的結(jié)果,決定MT間的并行性,亦即能夠最快執(zhí)行各MT的執(zhí)行的條件(最快執(zhí)行條件)(405)。用圖表以可視方式表示該最快執(zhí)行條件的是宏任務(wù)圖表(MTG)。圖10表示解析圖3的輸入程序200生成的MTG。此外,宏任務(wù)間并行性解析結(jié)果作為宏任務(wù)圖表表421在外部存儲(chǔ)裝置中保存,在后階段的編譯處理中使用。
<宏任務(wù)圖表的說明>
以下說明宏任務(wù)圖表MTG。本圖表中的各節(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)的小圓表示條件分支。例如從MT1_1(501)對(duì)于MT1_2(502)以及MT1_3(503)延伸實(shí)線,這表示MT1_2以及MT1_3有把執(zhí)行MT1_1的結(jié)果生成的數(shù)據(jù)作為輸入數(shù)據(jù)使用執(zhí)行處理這樣的依從關(guān)系。因此,表示作為執(zhí)行順序,MT1_2以及MT1_3在MT1_1任務(wù)結(jié)束后可以執(zhí)行。
另外,因?yàn)镸T1_2(502)是通過輸入程序200用多個(gè)循環(huán)或者子程序的塊,所以編譯程序把該MT進(jìn)一步以層次方式分割為多個(gè)MT。于是,在該MTG中在MT1_2中用別的層次構(gòu)成MTG。MTG1_3(503)也同樣。
當(dāng)觀看MT1_2(502)內(nèi)的MTG(510)時(shí),因?yàn)閺腗T1_2_1(511)向MT1_2_2(512)、MT1_2_3(513)、MT1_2_4(514)延伸實(shí)線,所以在MT1_2_1(511)結(jié)束后可以同時(shí)并行執(zhí)行這3個(gè)任務(wù)512、514、515。另外,因?yàn)閺腗T1_2_3(513)以及MT1_2_4(514)對(duì)于MT1_2_5(515)延伸實(shí)線,所以在MT1_2_3(513)以及MT1_2_4(514)雙方的執(zhí)行結(jié)束的時(shí)刻可以執(zhí)行MT1_2_5(515)。如上,MT1_2在執(zhí)行前確定好并行順序關(guān)系,在編譯時(shí)能夠靜態(tài)地調(diào)度。亦即任務(wù)的PU上的執(zhí)行順序在編譯時(shí)決定。
接著,當(dāng)觀看MT1_3(503)內(nèi)的MTG(520)時(shí),在MT1_3_1(521)內(nèi)存在小圓,這表示任務(wù)MT1_3_1(521)包含分支條件。因?yàn)閺男A向MT1_3_2(523)、MT1_3_3(524)延伸有箭頭的虛線,另外,表示控制依從的OR條件的點(diǎn)線的弧522重合,所以該條件表示在MT1_3_2或者M(jìn)T1_3_3的任何一個(gè)中有分支。此外,虛線表示確定任務(wù)的執(zhí)行的控制依從關(guān)系和不執(zhí)行數(shù)據(jù)依從的任務(wù)的場(chǎng)合的條件。另外,附有箭頭的虛線表示和用數(shù)據(jù)依從·控制流程解析(402)求得的控制過程相同(亦即原始的)。此外,MT1_3_1(521)的分支條件,因?yàn)楫?dāng)不執(zhí)行該任務(wù)MT1_3_1(521)時(shí)分支方向不確定,所以需要進(jìn)行對(duì)應(yīng)執(zhí)行時(shí)的狀況的調(diào)度。
<處理器分組>
接著,編譯程序,參照生成的MTG表421,在考慮HCMP1的PU資源的基礎(chǔ)上,以通用處理器CPU為對(duì)象進(jìn)行與宏任務(wù)圖表的形狀或者并行性對(duì)應(yīng)的或者與來自用戶的指定對(duì)應(yīng)的處理器的分組(406)。DSP、DRP等專用處理器群在組內(nèi)不包含,在各組中的處理需要時(shí)給專用處理器群隨時(shí)分配任務(wù)。
亦即,解析用MTG表現(xiàn)的上位層的MT,例如MT1_2(502)、MT1_3(503)的形狀、并行性,分組該MT的處理需要的PU,給有關(guān)組分配MT。此外,一個(gè)組成為包含為控制有關(guān)組內(nèi)的特定用途處理器(DSP,DRP,BMP)的通用處理器(CPU)的集合。例如在圖1所示的HCMP1結(jié)構(gòu)上進(jìn)行調(diào)度的場(chǎng)合,因?yàn)镃PU是兩個(gè),所以把MT1_2和MT1_3分別分組到各一個(gè)CPU中。所述MT1_2以及MT1_3內(nèi)的層次的任務(wù)組基本上對(duì)于被分組的CPU進(jìn)行任務(wù)的分配。其時(shí),在指定專用處理器的場(chǎng)合,判定在專用處理器中處理任務(wù)時(shí)該任務(wù)的結(jié)束時(shí)間是否比用CPU執(zhí)行快,而且在能夠判定該組內(nèi)任務(wù)全體的處理時(shí)間為最短的場(chǎng)合,給指定的專用處理器分配處理。
<靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度>
編譯程序211接著作為調(diào)度方法判斷是靜態(tài)調(diào)度還是動(dòng)態(tài)調(diào)度(407)。關(guān)于各個(gè)調(diào)度方法的詳情后述,以下簡(jiǎn)單說明。首先,如果是在MT中無條件分支能夠預(yù)先決定最快執(zhí)行條件的MT流程,則使用前者的靜態(tài)調(diào)度,編譯程序預(yù)先進(jìn)行MT的調(diào)度,在編譯時(shí)在任務(wù)間插入同步代碼。另外如果是在MT中有條件分支,另外MT的處理時(shí)間在執(zhí)行時(shí)變動(dòng)等,在編譯時(shí)不能預(yù)測(cè)的MT流程,則使用后者的動(dòng)態(tài)調(diào)度,編譯程序,通過生成執(zhí)行時(shí)進(jìn)行對(duì)應(yīng)分支等的狀況的控制的調(diào)度程序在CPU上執(zhí)行,在執(zhí)行時(shí)進(jìn)行任務(wù)的分配。
<靜態(tài)調(diào)度>
首先說明靜態(tài)調(diào)度的處理流程。在靜態(tài)調(diào)度中,因?yàn)樵诰幾g時(shí)已經(jīng)決定了MT的分配和執(zhí)行順序,所以首先通過宏任務(wù)調(diào)度處理408,參照宏任務(wù)表421以及處理器分組表422的信息,生成進(jìn)行在PU間的執(zhí)行任務(wù)間的同步或者其他任務(wù)的起動(dòng)等的控制信息,決定該信息的插入位置。進(jìn)而還一并生成把任務(wù)程序或者任務(wù)需要的數(shù)據(jù)從其他PU的LM或者共有存儲(chǔ)器SM加載到該P(yáng)U的本地存儲(chǔ)器LM中這樣的數(shù)據(jù)傳送信息。這樣,通過數(shù)據(jù)本地化方法,有效利用本地存儲(chǔ)器,使數(shù)據(jù)的傳送量最小化。通過以上的處理生成的調(diào)度信息,作為宏任務(wù)調(diào)度表423在外部存儲(chǔ)裝置中保存。
接著,編譯程序進(jìn)行靜態(tài)FV調(diào)度處理409。在本處理中,任務(wù)的并行調(diào)度的結(jié)果,對(duì)于PU成為空閑狀態(tài)的部分,生成切斷電源、停止時(shí)鐘、或者降低時(shí)鐘使電源電壓下降等的電源控制代碼。
<動(dòng)態(tài)調(diào)度>
下面說明動(dòng)態(tài)調(diào)度的處理流程。在動(dòng)態(tài)調(diào)度時(shí),由于MT內(nèi)的分支條件等不確定要素在編譯時(shí)不能決定調(diào)度內(nèi)容。因此編譯程序根據(jù)MT的處理結(jié)果在程序執(zhí)行時(shí)動(dòng)態(tài)生成進(jìn)行調(diào)度的調(diào)度程序(410)。本程序根據(jù)處理結(jié)果進(jìn)行MT的起動(dòng)或者同步以及該MT需要的數(shù)據(jù)的加載。另外,進(jìn)而根據(jù)在圖18中說明的任務(wù)并行處理執(zhí)行時(shí)的FV控制概念設(shè)定決定PU的動(dòng)作頻率·供給電壓的動(dòng)作方式。生成的調(diào)度程序作為電源·FV控制調(diào)度表424在外部存儲(chǔ)裝置中保存。
<調(diào)度代碼的生成>
編譯程序通過以上的處理,結(jié)束輸入程序向PU的調(diào)度。把在迄今的處理中生成的調(diào)度信息作為表(421~424)在外部存儲(chǔ)裝置中保存。編譯程序訪問該表(421~424),讀入任務(wù)的執(zhí)行順序或者數(shù)據(jù)傳送信息、以及FV控制信息,對(duì)于輸入程序在靜態(tài)調(diào)度部上附加控制代碼(調(diào)度代碼),另外在動(dòng)態(tài)調(diào)度部上附加調(diào)度程序(411)。
<調(diào)度的結(jié)果>
圖11表示本調(diào)度結(jié)果的例子。圖11對(duì)于每一PU以時(shí)間軸表示MT的調(diào)度結(jié)果。圖中的斜的影線表示在靜態(tài)調(diào)度中埋入的同步代碼。圖中的縱的影線表示為進(jìn)行任務(wù)分配而用動(dòng)態(tài)調(diào)度生成的調(diào)度代碼。在本例中因?yàn)镃PU0進(jìn)行任務(wù)的起動(dòng)或同步、FV電力控制等的管理,所以最初在CPU0上加載編譯程序生成的控制代碼550??刂拼a開始在CPU0上起動(dòng)MT1_1。在MT1_1處理結(jié)束后,執(zhí)行編譯程序生成的控制代碼551,接著要處理的任務(wù)是用MT1_2以及MT1_3的下位層的MTG指定的MT1_2_1以及MT1_3_1,前者在CPU0中、后者在DRP0中執(zhí)行。
此外,如上所述,因?yàn)镸TG1_2不包含分支條件,所以編譯時(shí)已經(jīng)進(jìn)行了調(diào)度(靜態(tài)調(diào)度),在編譯時(shí)已經(jīng)向CPU0、DRP0、DRP1、DSP0調(diào)度MT。另外,因?yàn)镸TG1_3包含分支條件,所以在執(zhí)行時(shí)附加進(jìn)行調(diào)度的程序,根據(jù)執(zhí)行結(jié)果向CPU1、以及必要時(shí)向DRP、DSP的專用處理器群分配MT。
接著說明MTG1_2的MT組的調(diào)度。和MT1_2_1的執(zhí)行在DRP0中結(jié)束的同時(shí)向CPU0通知MT1_2_1的處理結(jié)束。CPU0的控制代碼在DRP0上起動(dòng)MT1_2_2,在DRP1上起動(dòng)MT1_2_3,在DSP上起動(dòng)MT1_2_4。和各PU上的任務(wù)處理結(jié)束同時(shí)向CPU0通知其結(jié)束。在該時(shí)刻未處理的任務(wù)是MT1_2_5,但是MT1_2_5是DSP處理任務(wù),在MT1_2_4結(jié)束后在CPU0內(nèi)起動(dòng)MT1_2_2。
接著說明MTG1_3的MT組。因?yàn)镸T1_3在內(nèi)部具有分支,所以若不執(zhí)行任務(wù)就不知道分支方向。因此,根據(jù)執(zhí)行時(shí)的狀況在CPU1中執(zhí)行進(jìn)行任務(wù)、數(shù)據(jù)的加載、任務(wù)的起動(dòng)、同步以及電力控制代碼的管理的動(dòng)態(tài)調(diào)度程序552。該動(dòng)態(tài)調(diào)度程序552首先在CPU1上起動(dòng)執(zhí)行。在本例中,當(dāng)假定根據(jù)MT1_3_1的執(zhí)行結(jié)果向MT1_3_2分支時(shí),MT1_3_2因?yàn)槭荄RP執(zhí)行任務(wù),所以本來用DRP執(zhí)行能夠高效率處理,但是在分配MT1_3_1時(shí),因?yàn)镈RP0、DRP1執(zhí)行MT1_3的任務(wù),所以通過求預(yù)想結(jié)束時(shí)間、決定在該任務(wù)結(jié)束后是在DRP0或者DRP1上執(zhí)行,還是效率降低而在CPU1上執(zhí)行。在本例中,因?yàn)镈RP正在執(zhí)行進(jìn)程而判定在CPU1上執(zhí)行結(jié)束時(shí)刻快,所以給在CPU1分配任務(wù)。
根據(jù)本發(fā)明,在集成多種PU的多處理器系統(tǒng)中,通過生成使該P(yáng)U高效率動(dòng)作的程序的分割配置以及控制代碼的編譯程序,能夠最大限度有效利用該處理器系統(tǒng)的性能,同時(shí)以低的電力有效進(jìn)行處理。再有,軟件開發(fā)者能夠無需意識(shí)到處理器的結(jié)構(gòu)可在短時(shí)間內(nèi)高效率制作程序。其結(jié)果,在面向強(qiáng)烈期望具有高的運(yùn)算性能而且以低電力處理的汽車導(dǎo)航或者形象電話、信息家電的LSI中可以使用本發(fā)明,能夠?qū)崿F(xiàn)高質(zhì)量的動(dòng)畫圖像或者聲音處理、另外圖像識(shí)別或者聲音識(shí)別這樣的功能。另外,對(duì)于面向汽車中的信息系統(tǒng)、控制系統(tǒng)的LSI也可以使用,能夠?qū)崿F(xiàn)自動(dòng)運(yùn)行或者安全運(yùn)行系統(tǒng)等。再有也可以應(yīng)用于將來具有非常高的運(yùn)算性能而且必須低電力的超級(jí)計(jì)算機(jī)。
權(quán)利要求
1.一種面向異種多處理器的全局編譯程序,其在具有單一或者多種處理器單元的系統(tǒng)中,從輸入程序抽出并行性,生成與所述多個(gè)處理器單元對(duì)應(yīng)的目標(biāo)程序,其特征在于,使計(jì)算機(jī)執(zhí)行如下處理把所述輸入程序,在對(duì)于所述系統(tǒng)具有的每一種處理器單元預(yù)先準(zhǔn)備的所述處理器單元專用的代碼生成編譯程序中,通過解析所述輸入程序,抽出在所述每一處理器單元中可執(zhí)行的程序的部分,生成指示該程序部分的處理處理器信息的處理;進(jìn)行所述輸入程序的解析后抽出該輸入程序的并行性,根據(jù)所述處理處理器信息,進(jìn)行對(duì)于所述處理器單元的程序部分的分配的處理;和把所述分配的程序部分,作為所述每一處理器單元的輸出代碼輸出的處理。
2.根據(jù)權(quán)利要求1所述的面向異種多處理器的全局編譯程序,其特征在于,包含如下處理輸出在與所述處理處理器信息對(duì)應(yīng)的所述輸入程序的部分中、插入了表示用所述處理器單元可執(zhí)行的指示語句的中間程序的處理;和進(jìn)行所述中間程序的解析后抽出程序單位的并行性,根據(jù)用所述指示語句指定的所述程序部分的處理處理器單元信息、進(jìn)行對(duì)于所述處理器單元的處理的分配的處理。
3.根據(jù)權(quán)利要求1所述的面向異種多處理器的全局編譯程序,其特征在于,包含如下處理在對(duì)于所述每一專用處理器單元從所述輸入程序抽出可執(zhí)行的部分時(shí),生成估計(jì)出在把所述抽出的程序作為對(duì)象的在處理器單元中的執(zhí)行時(shí)間的執(zhí)行時(shí)間信息的處理;和進(jìn)行所述輸入程序的解析后抽出程序單位的并行性,使用所述執(zhí)行時(shí)間信息進(jìn)行對(duì)于所述處理器單元的處理的分配的處理。
4.根據(jù)權(quán)利要求3所述的面向異種多處理器的全局編譯程序,其特征在于,包含如下處理輸出在與所述執(zhí)行時(shí)間信息對(duì)應(yīng)的所述輸入程序的部分中插入了表示在用所述處理器單元執(zhí)行時(shí)的執(zhí)行時(shí)間的指示語句的中間程序的處理;和進(jìn)行所述中間程序的解析后抽出處理的并行性,使用用所述指示語句指定的所述程序部分的處理執(zhí)行時(shí)間信息進(jìn)行對(duì)于所述處理器單元的處理的分配的處理。
5.根據(jù)權(quán)利要求3所述的面向異種多處理器的全局編譯程序,其特征在于,包含如下處理除用生成所述執(zhí)行時(shí)間信息的處理求的執(zhí)行時(shí)間之外,還計(jì)算所述各每一處理器單元需要的數(shù)據(jù)的共有存儲(chǔ)器和處理器單元內(nèi)的本地存儲(chǔ)器之間的數(shù)據(jù)傳送時(shí)間,并生成數(shù)據(jù)傳送時(shí)間信息的處理。
6.根據(jù)權(quán)利要求5所述的面向異種多處理器的全局編譯程序,其特征在于,包含如下處理生成把所述數(shù)據(jù)傳送時(shí)間信息作為表示數(shù)據(jù)傳送的指示語句插入與該信息對(duì)應(yīng)的輸入程序的部分中的中間程序的處理。
7.根據(jù)權(quán)利要求3所述的面向異種多處理器的全局編譯程序,其特征在于,生成所述執(zhí)行時(shí)間信息的處理,進(jìn)一步包含如下處理根據(jù)成為所述對(duì)象的處理器單元的硬件體系結(jié)構(gòu),計(jì)算程序加載時(shí)間、以及所述處理器單元內(nèi)的運(yùn)算器控制時(shí)間,生成程序加載時(shí)間信息以及運(yùn)算器控制時(shí)間信息的處理。
8.根據(jù)權(quán)利要求4所述的面向異種多處理器的全局編譯程序,其特征在于,生成把所述程序加載時(shí)間信息以及運(yùn)算器控制時(shí)間信息作為表示程序加載時(shí)間以及運(yùn)算器控制時(shí)間的指示語句在與該信息對(duì)應(yīng)的輸入程序部分中插入的中間程序。
全文摘要
本發(fā)明的目的是無需意識(shí)到與異種多處理器的結(jié)構(gòu)一致的并行化,而在短時(shí)間內(nèi)最大限度發(fā)揮HCMP1的性能。在異種多處理器系統(tǒng)中,通過用編譯程序自動(dòng)地抽出具有并行性的任務(wù),同時(shí)進(jìn)行從成為處理對(duì)象的輸入程序抽出能夠用專用處理器高效率地處理的部分和處理時(shí)間的估計(jì),由此,通過按照PU的特性配置該任務(wù),實(shí)施使該多個(gè)PU并行、高效率運(yùn)行的調(diào)度。
文檔編號(hào)G06F9/46GK101086710SQ20071008482
公開日2007年12月12日 申請(qǐng)日期2007年2月27日 優(yōu)先權(quán)日2006年6月6日
發(fā)明者笠原博德, 木村啟二, 鹿野裕明 申請(qǐng)人:學(xué)校法人早稻田大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
华池县| 中江县| 河间市| 杭锦旗| 曲阳县| 西乌珠穆沁旗| 曲阳县| 紫金县| 普陀区| 航空| 胶州市| 蒲江县| 乃东县| 抚松县| 陆良县| 乌拉特后旗| 定陶县| 西丰县| 清镇市| 保山市| 黄浦区| 柳州市| 诏安县| 苏尼特右旗| 简阳市| 尚志市| 渑池县| 辛集市| 黄冈市| 平武县| 林口县| 西贡区| 共和县| 神农架林区| 汕头市| 南宫市| 开远市| 通海县| 扶沟县| 全南县| 同江市|