專(zhuān)利名稱(chēng):數(shù)據(jù)流圖處理方法及具備可重構(gòu)電路的處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的數(shù)據(jù)流圖處理方法、以及具備了能夠進(jìn)行功能變更的可重構(gòu)電路的處理裝置。
背景技術(shù):
近年來(lái),正在進(jìn)行將使用了具備多個(gè)稱(chēng)為ALU(Arithmetic Logic Unit)的基本運(yùn)算功能的多功能元件的可重構(gòu)處理器的開(kāi)發(fā)(例如參照專(zhuān)利文獻(xiàn)1)。在可重構(gòu)處理器中,通過(guò)在ALU電路中順次設(shè)定命令數(shù)據(jù),從而作為整體可以實(shí)現(xiàn)所期望的運(yùn)算處理電路。
命令數(shù)據(jù)是從以C語(yǔ)言等高級(jí)程序語(yǔ)言記述的源程序制作被稱(chēng)為DFG(數(shù)據(jù)流圖)的數(shù)據(jù)流,作為將該DFG映射到ALU電路的數(shù)據(jù)而制作的。命令數(shù)據(jù)根據(jù)ALU電路上構(gòu)成的電路的處理順序制作,存儲(chǔ)在地址連續(xù)的存儲(chǔ)區(qū)域中。
專(zhuān)利文獻(xiàn)1特開(kāi)2004-220377號(hào)公報(bào)在以往的可重構(gòu)處理器中,從存儲(chǔ)器順次讀出命令數(shù)據(jù)并供給到ALU電路,設(shè)定ALU電路的功能。因此,在源程序中存在if語(yǔ)句等條件判定處理的情況下,需要在ALU電路上設(shè)定執(zhí)行分支的多個(gè)處理的命令數(shù)據(jù)后預(yù)先執(zhí)行運(yùn)算,執(zhí)行完條件判定后,選擇根據(jù)判定結(jié)果的運(yùn)算處理結(jié)果。
該情況下,實(shí)際使用的只是分支的一方的運(yùn)算處理結(jié)果,另一方的運(yùn)算處理結(jié)果不被使用。因此,結(jié)果導(dǎo)致運(yùn)算處理的時(shí)間延長(zhǎng)為必要時(shí)間以上。
另外,在源程序中存在for語(yǔ)句等規(guī)定次數(shù)的循環(huán)運(yùn)算的情況下,在以往的可重構(gòu)處理器中,需要使存儲(chǔ)器的連續(xù)地址存儲(chǔ)相同循環(huán)運(yùn)算的命令數(shù)據(jù)組規(guī)定次數(shù)份。
例如,若循環(huán)數(shù)為10次,則需要在存儲(chǔ)器中存儲(chǔ)相同的命令數(shù)據(jù)組10次,導(dǎo)致命令數(shù)據(jù)的數(shù)據(jù)量增大。此外,在循環(huán)數(shù)不定的情況下,命令數(shù)據(jù)的生成本身變得困難。
發(fā)明內(nèi)容
本發(fā)明是鑒于以上的問(wèn)題點(diǎn)而進(jìn)行的,其目的在于,提供一種可以對(duì)可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行有效處理的數(shù)據(jù)流圖處理方法。另外,本發(fā)明的目的在于,提供一種具備了可以有效執(zhí)行運(yùn)算處理的電路再構(gòu)成功能的處理裝置。
為了解決上述課題,本發(fā)明的某一形態(tài)涉及對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的方法。該數(shù)據(jù)流圖處理方法包括將記述了所希望的運(yùn)算處理的程序分割為2個(gè)以上子程序的步驟;將2個(gè)以上子程序各自變換為表現(xiàn)算符的處理順序的依存關(guān)系的數(shù)據(jù)流圖的步驟。分割步驟根據(jù)程序的記述內(nèi)容來(lái)分割程序。此時(shí),也可以檢測(cè)程序所包含的分支處理,將分支對(duì)象的處理分別作為子程序來(lái)提取。
根據(jù)該數(shù)據(jù)流圖處理方法,通過(guò)將程序分割為多個(gè)子程序,從而可以減少循環(huán)語(yǔ)句的執(zhí)行所需的數(shù)據(jù)流圖的數(shù)量。因此,可以削減變換數(shù)據(jù)流圖而生成的設(shè)定數(shù)據(jù)量,可以減小存儲(chǔ)設(shè)定數(shù)據(jù)量的存儲(chǔ)器容量。另外,可以將可重構(gòu)電路的電路規(guī)模減小設(shè)定數(shù)據(jù)量被削減的份兒,可以縮短分支語(yǔ)句的處理時(shí)間。
本發(fā)明的其他形態(tài)涉及對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的方法。該數(shù)據(jù)流圖處理方法具備根據(jù)程序中所含的條件分支,將記述了所期望的運(yùn)算處理的程序變換為2個(gè)以上數(shù)據(jù)流圖的步驟。
根據(jù)該數(shù)據(jù)流圖處理方法,通過(guò)按每個(gè)條件分支來(lái)生成數(shù)據(jù)流圖,從而在將數(shù)據(jù)流圖的設(shè)定數(shù)據(jù)映射到可重構(gòu)電路的情況下,可以每次根據(jù)條件的判定結(jié)果來(lái)選擇分支對(duì)象的數(shù)據(jù)流圖。因此,可以縮短處理時(shí)間,在提高處理效果的同時(shí)可以降低消耗電力。
本發(fā)明的另一形態(tài)是一種對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的方法,其中包括將記述了所希望的運(yùn)算處理的程序分割為2個(gè)以上子程序的步驟;生成2個(gè)以上子程序各自對(duì)應(yīng)的、表示表現(xiàn)算符處理順序的依存關(guān)系的數(shù)據(jù)流圖的處理順序的數(shù)據(jù)流圖流數(shù)據(jù)的步驟。
根據(jù)該數(shù)據(jù)流圖處理方法,通過(guò)確定多個(gè)子程序所對(duì)應(yīng)的數(shù)據(jù)流圖的處理順序,從而可以將數(shù)據(jù)流圖所對(duì)應(yīng)的設(shè)定數(shù)據(jù)有效地映射到可重構(gòu)電路。
在上述形態(tài)中,可重構(gòu)電路可以具有能夠選擇性地執(zhí)行多種的多位運(yùn)算的算術(shù)邏輯電路。
本發(fā)明的其他形態(tài)是一種對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的數(shù)據(jù)流圖處理方法,其特征在于,可重構(gòu)電路按照?qǐng)?zhí)行每一步驟來(lái)順次執(zhí)行功能所對(duì)應(yīng)的處理,其中包括根據(jù)可以執(zhí)行所希望的運(yùn)算處理的程序中的特定的記述內(nèi)容,將該程序變換為表現(xiàn)算符處理順序的依存關(guān)系的所述數(shù)據(jù)流圖的步驟;根據(jù)變換后的所述數(shù)據(jù)流圖所對(duì)應(yīng)的所述可重構(gòu)電路的所述執(zhí)行步驟個(gè)數(shù),將所述程序分割為2個(gè)以上子程序的步驟。
在上述數(shù)據(jù)流圖處理方法中,在分割步驟中,也可以在變換后的數(shù)據(jù)流圖所對(duì)應(yīng)的可重構(gòu)電路的所述執(zhí)行步驟的個(gè)數(shù)超過(guò)基準(zhǔn)數(shù)的情況下,將程序分割為2個(gè)以上子程序。該基準(zhǔn)數(shù)可以根據(jù)可重構(gòu)電路的處理能力來(lái)設(shè)定。
在上述數(shù)據(jù)流圖處理方法中,在從一個(gè)運(yùn)算處理分支為其他多個(gè)運(yùn)算處理的情況下,特定的記述內(nèi)容可以包含表示用于使運(yùn)算處理移向其他多個(gè)運(yùn)算處理中的任一個(gè)的條件的記述內(nèi)容。
在上述數(shù)據(jù)流圖處理方法中,特定的記述內(nèi)容也可以包含表示用于使同一運(yùn)算處理反復(fù)執(zhí)行多次的條件的記述內(nèi)容。
另外,本發(fā)明的又一形態(tài)提供一種處理裝置,其中具備能夠進(jìn)行功能變更的可重構(gòu)電路;設(shè)定數(shù)據(jù)保持部,其保持用于在可重構(gòu)電路上構(gòu)成所希望電路的設(shè)定數(shù)據(jù),并將設(shè)定數(shù)據(jù)供給到所述可重構(gòu)電路;和定序(sequencer)裝置,其選擇從設(shè)定數(shù)據(jù)保持部供給到可重構(gòu)電路的設(shè)定數(shù)據(jù)。
根據(jù)該處理裝置,定序裝置可以選擇向可重構(gòu)電路供給的設(shè)定數(shù)據(jù)。由此,例如在運(yùn)算中進(jìn)行了確定分支處理的移行對(duì)象的條件判定的情況下,能夠根據(jù)條件的判定結(jié)果,選擇定序裝置接著執(zhí)行的設(shè)定數(shù)據(jù),可以縮短處理時(shí)間。
而且,本發(fā)明不僅適用于方法,即使作為裝置、電路、系統(tǒng)、計(jì)算機(jī)程序也當(dāng)然適用。
根據(jù)本發(fā)明,可以有效處理可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖。另外,根據(jù)本發(fā)明,可以提供具備了可有效執(zhí)行運(yùn)算處理的電路再構(gòu)成功能的處理裝置。
圖1是實(shí)施例涉及的處理裝置的構(gòu)成圖。
圖2是表示可重構(gòu)電路的構(gòu)成之一例的圖。
圖3是表示編譯部的構(gòu)成的圖。
圖4是本實(shí)施例中的DFG處理方法的流程圖。
圖5是表示源程序之一例的圖。
圖6是表示展開(kāi)函數(shù)、歸納為一個(gè)程序的形態(tài)的圖。
圖7是表示次序(sequence)處理部的動(dòng)作的流程圖。
圖8是表示在圖6所示的程序的if語(yǔ)句之前附加了判定運(yùn)算命令的程序的圖。
圖9是表示分割部的動(dòng)作的流程圖。
圖10是表示分割圖8所示的程序而最終生成的多個(gè)子程序的圖。
圖11是表示由DFG生成部生成的DFG的圖。
圖12是表示流數(shù)據(jù)生成部的動(dòng)作的流程圖。
圖13是表示流用程序的圖。
圖14是表示DFG流數(shù)據(jù)的圖。
圖15是表示帶有次序指定的程序的圖。
圖16是表示由分割部生成的多個(gè)子程序的圖。
圖17是由流數(shù)據(jù)生成部生成的DFG流數(shù)據(jù)。
圖18是表示相對(duì)一個(gè)子程序生成的多個(gè)DFG的圖。
圖19是表示DFG流數(shù)據(jù)的圖。
圖20是表示源程序之一例的圖。
圖21是表示帶有次序指定的程序的例子的圖。
圖22是表示次序處理部的動(dòng)作的流程圖。
圖23是表示源程序之一例的圖。
圖24是表示子程序?qū)?yīng)的DFG的圖。
圖25是表示子程序?qū)?yīng)的DFG的圖。
圖26是表示附加了判定運(yùn)算命令的程序的圖。
圖27是表示被分割后的多個(gè)子程序的圖。
圖28是表示由DFG生成部生成的DFG的圖。
圖29是表示流用數(shù)據(jù)的圖。
圖30是表示DFG流數(shù)據(jù)的圖。
圖31是表示變形例涉及的處理裝置的構(gòu)成圖。
圖32是表示設(shè)定數(shù)據(jù)及定序器控制數(shù)據(jù)的生成順序的圖。
圖33是表示DFG流數(shù)據(jù)的例子的圖。
圖34是表示圖33的DFG流數(shù)據(jù)所對(duì)應(yīng)的設(shè)定數(shù)據(jù)保持部中的設(shè)定數(shù)據(jù)的存儲(chǔ)例的圖。
圖35是表示定序裝置的詳細(xì)內(nèi)容的圖。
圖36是表示設(shè)定數(shù)據(jù)選擇部中的讀出地址的生成算法的圖。
圖37是表示定序控制部中的動(dòng)作算法的圖。
圖38是表示定序控制數(shù)據(jù)選擇部中的動(dòng)作算法的圖。
具體實(shí)施例方式
圖1是實(shí)施例涉及的處理裝置10的構(gòu)成圖。處理裝置10具備具有能夠?qū)﹄娐窐?gòu)成進(jìn)行重新構(gòu)成的功能的集成電路裝置26。集成電路裝置26構(gòu)成為1個(gè)芯片,具備可重構(gòu)電路12、設(shè)定數(shù)據(jù)保持部14、定序裝置20、輸出數(shù)據(jù)保持部30和路徑部32??芍貥?gòu)電路12通過(guò)變更設(shè)定,從而能夠進(jìn)行功能變更。本實(shí)施例中的可重構(gòu)電路12按照每個(gè)執(zhí)行步驟(后述的圖2中表示的級(jí))順次執(zhí)行功能所對(duì)應(yīng)的處理。
設(shè)定數(shù)據(jù)保持部14保持多個(gè)用于在可重構(gòu)電路12中構(gòu)成所希望的電路的設(shè)定數(shù)據(jù),以規(guī)定的時(shí)間間隔向可重構(gòu)電路12順次供給設(shè)定數(shù)據(jù)。設(shè)定數(shù)據(jù)保持部14可以構(gòu)成為以所指定的地址值為基礎(chǔ)輸出所存儲(chǔ)的設(shè)定數(shù)據(jù)的命令存儲(chǔ)器。該情況下,設(shè)定數(shù)據(jù)可以稱(chēng)為命令數(shù)據(jù)。定序裝置20具有從存儲(chǔ)于設(shè)定數(shù)據(jù)保持部14的多個(gè)設(shè)定數(shù)據(jù)中選擇向可重構(gòu)電路12供給的設(shè)定數(shù)據(jù)的功能。
路徑部32起反饋通路的作用,將可重構(gòu)電路12的輸出連接到可重構(gòu)電路12的輸入上。輸出數(shù)據(jù)保持部30具有用于存儲(chǔ)從可重構(gòu)電路12輸出的數(shù)據(jù)信號(hào)和/或從外部輸入的數(shù)據(jù)信號(hào)的存儲(chǔ)區(qū)域。輸出數(shù)據(jù)保持部30所存儲(chǔ)的數(shù)據(jù)信號(hào)通過(guò)路徑部32而傳遞到可重構(gòu)電路12的輸入,另外根據(jù)來(lái)自圖中未示出的控制部的輸出指示而輸出到處理裝置10的外部。
可重構(gòu)電路12構(gòu)成為具有多個(gè)能夠進(jìn)行功能變更的邏輯電路。具體而言,可重構(gòu)電路12具有將可選擇性地執(zhí)行多個(gè)運(yùn)算功能的邏輯電路排列為多級(jí)的構(gòu)成??芍貥?gòu)電路12具有能夠?qū)η凹?jí)的邏輯電路列的輸出與后級(jí)的邏輯電路列的輸入的連接關(guān)系進(jìn)行設(shè)定的連接部。多個(gè)邏輯電路可以配置為矩陣狀。
各邏輯電路的功能與邏輯電路間的連接關(guān)系,根據(jù)由設(shè)定數(shù)據(jù)保持部14供給的設(shè)定數(shù)據(jù)來(lái)設(shè)定。設(shè)定數(shù)據(jù)以規(guī)定的時(shí)間間隔供給到可重構(gòu)電路12。因此,可重構(gòu)電路12執(zhí)行對(duì)應(yīng)于所供給的設(shè)定數(shù)據(jù)的運(yùn)算處理。
定序裝置20以可重構(gòu)電路12中的運(yùn)算結(jié)果、具體為分支條件的判定結(jié)果為基礎(chǔ),管理設(shè)定數(shù)據(jù)保持部14供給到可重構(gòu)電路12的設(shè)定數(shù)據(jù)。定序裝置20根據(jù)從應(yīng)執(zhí)行的程序生成的控制數(shù)據(jù),使所希望的設(shè)定數(shù)據(jù)從設(shè)定數(shù)據(jù)保持部14輸出。設(shè)定數(shù)據(jù)及控制數(shù)據(jù)按照以下的順序生成。
應(yīng)該由集成電路裝置26實(shí)現(xiàn)的程序保持在存儲(chǔ)部40中。程序記述可重構(gòu)電路12中的所希望的運(yùn)算處理,具體為以C語(yǔ)言等高級(jí)語(yǔ)言記述了信號(hào)處理電路或信號(hào)處理算法等。
編譯部50讀出存儲(chǔ)在存儲(chǔ)部40中的程序。編譯部50對(duì)讀出的程序進(jìn)行編譯處理,生成多個(gè)數(shù)據(jù)流圖(DFG)和表示DFG處理順序的流數(shù)據(jù)。編譯部50將所生成的DFG及其流數(shù)據(jù)存儲(chǔ)在存儲(chǔ)部40中。
DFG表現(xiàn)電路中的算符(運(yùn)算之間)的處理順序的依存關(guān)系,以圖結(jié)構(gòu)來(lái)表示輸入變量及常數(shù)的運(yùn)算流程。一般,DFG形成為從上向下進(jìn)行運(yùn)算。
多個(gè)DFG通過(guò)將一個(gè)程序分割為多個(gè)子程序并對(duì)該子程序的每一個(gè)進(jìn)行變換而生成。DFG流數(shù)據(jù)生成為決定多個(gè)子程序所對(duì)應(yīng)的DFG的處理順序,特別決定條件分支發(fā)生時(shí)的分支源與分支對(duì)象的DFG的處理順序。
設(shè)定數(shù)據(jù)生成部51將DFG變換為對(duì)應(yīng)的設(shè)定數(shù)據(jù),并存儲(chǔ)在設(shè)定數(shù)據(jù)保持部14中??刂茢?shù)據(jù)生成部54將DFG流數(shù)據(jù)變換為控制數(shù)據(jù)并存儲(chǔ)在定序裝置20中。設(shè)定數(shù)據(jù)是用于將DFG映射到可重構(gòu)電路12的數(shù)據(jù),其決定可重構(gòu)電路12中的邏輯電路的功能或邏輯電路間的連接關(guān)系。
控制數(shù)據(jù)是表現(xiàn)映射到可重構(gòu)電路12的設(shè)定數(shù)據(jù)(DFG)的連接關(guān)系的數(shù)據(jù)??刂茢?shù)據(jù)根據(jù)可重構(gòu)電路12的運(yùn)算執(zhí)行中,作為分支條件的判定結(jié)果的分支控制數(shù)據(jù)SEQ來(lái)決定成為分支對(duì)象的DFG。
定序裝置20向設(shè)定數(shù)據(jù)保持部14供給讀出地址。此時(shí),根據(jù)從可重構(gòu)電路12供給的分支控制數(shù)據(jù)SEQ等的值,決定接下來(lái)供給到可重構(gòu)電路12的設(shè)定數(shù)據(jù)的讀出地址。設(shè)定數(shù)據(jù)保持部14如果接受讀出地址,則將該地址中存儲(chǔ)的設(shè)定數(shù)據(jù)供給到可重構(gòu)電路12。
圖2表示可重構(gòu)電路12的構(gòu)成之一例。可重構(gòu)電路12具備分別能夠選擇性執(zhí)行多個(gè)運(yùn)算功能的邏輯電路的多級(jí)排列;和可以任意設(shè)定前級(jí)的邏輯電路的輸出與后級(jí)的邏輯電路的輸入的連接關(guān)系的連接部52。
在可重構(gòu)電路12中,根據(jù)邏輯電路的多級(jí)排列結(jié)構(gòu),運(yùn)算從上級(jí)向下級(jí)進(jìn)行。而且,在本說(shuō)明書(shū)中,所謂的“多級(jí)”是指多個(gè)級(jí)。并且,可重構(gòu)電路12的電路構(gòu)成并不一定具有多級(jí)排列,但為了削減電路規(guī)模,不是使所有邏輯電路之間的連接成為可能,優(yōu)選可以實(shí)現(xiàn)一部分邏輯電路之間的連接。
作為邏輯電路,可重構(gòu)電路12具有ALU(Arithmetic Logic Unit)。ALU是能夠選擇性執(zhí)行多種的多位運(yùn)算的算術(shù)邏輯電路,通過(guò)設(shè)定能夠選擇性執(zhí)行邏輯和、邏輯積、位移位等多種的多位運(yùn)算。各ALU構(gòu)成為具有用于設(shè)定多種運(yùn)算功能的選擇器。在圖示的例子中,ALU構(gòu)成為具有2個(gè)輸入端子與1個(gè)輸出端子。
可重構(gòu)電路12構(gòu)成為縱向配置了X個(gè)、橫向配置了Y個(gè)ALU的X級(jí)Y列的ALU陣列。在此,示出縱向配置了3個(gè)、橫向配置了6個(gè)ALU的3級(jí)6列的ALU陣列。
可重構(gòu)電路12具備連接部52與ALU列53。ALU列53設(shè)置為多級(jí),連接部52設(shè)置在前后級(jí)的ALU列53之間,設(shè)定前級(jí)的ALU的輸出與后級(jí)的ALU的輸入的連接關(guān)系。
在圖2所示的例子中,在第1級(jí)的ALU列53a與第2級(jí)的ALU列53b之間設(shè)有構(gòu)成第2級(jí)的連接部52b。在第2級(jí)的ALU列53b與第3級(jí)的ALU列53c之間設(shè)置構(gòu)成第3級(jí)的連接部52c。而且,構(gòu)成第1級(jí)的連接部52a設(shè)置在第1級(jí)的ALU列53a的上側(cè)。
向第1級(jí)的ALU11、ALU12、…、ALU16輸入輸入變量或常數(shù),進(jìn)行所設(shè)定的規(guī)定的運(yùn)算。運(yùn)算結(jié)果的輸出根據(jù)第2級(jí)的連接部52b所設(shè)定的連接,而輸入到第2級(jí)的ALU21、ALU22、…、ALU26中。
在第2級(jí)的連接部52b中,構(gòu)成連接用接線,以便可以實(shí)現(xiàn)第1級(jí)的ALU列53a的輸出與第2級(jí)的ALU列53b的輸入之間的任意連接關(guān)系或者從預(yù)先確定的連接關(guān)系的組合中選擇出的連接關(guān)系,通過(guò)設(shè)定使所希望的接線有效。
向第2級(jí)的ALU21、ALU22、…、ALU26輸入ALU列53a的輸出,以進(jìn)行所設(shè)定的規(guī)定運(yùn)算。運(yùn)算結(jié)果的輸出根據(jù)第3級(jí)的連接部52c的連接用接線上所設(shè)定的連接,而輸入到第3級(jí)的ALU31、ALU32、…、ALU36中。
來(lái)自成為最終級(jí)的第3級(jí)的ALU列53c的輸出數(shù)據(jù)被輸出到輸出數(shù)據(jù)保持部30。輸出數(shù)據(jù)保持部30經(jīng)由路徑部32而將輸出數(shù)據(jù)輸出到連接部52a。連接部52a設(shè)定連接用接線,向第1級(jí)的ALU11、ALU12、…ALU16供給數(shù)據(jù)。在生成了運(yùn)算處理的最終結(jié)果的情況下,輸出數(shù)據(jù)保持部30將數(shù)據(jù)輸出到處理裝置10的外部。
圖3表示編譯部50的構(gòu)成。編譯部50具備程序分析部100、次序處理部102、分割部104、DFG生成部106、流數(shù)據(jù)生成部108。
實(shí)施例中的數(shù)據(jù)流圖處理功能,在處理裝置10中可以通過(guò)CPU、存儲(chǔ)器、裝載在存儲(chǔ)器中的DFG處理用程序等來(lái)實(shí)現(xiàn),在此描述了通過(guò)這些的協(xié)同來(lái)實(shí)現(xiàn)的功能塊。DFG處理用程序可以?xún)?nèi)置在處理裝置10中,也可以以存儲(chǔ)在記錄介質(zhì)中的形態(tài)從外部供給。因此,本領(lǐng)域的技術(shù)人員可以理解這些功能塊可以?xún)H通過(guò)硬件、僅通過(guò)軟件或者這些的組合而以各種形式來(lái)實(shí)現(xiàn)。
圖4表示本實(shí)施例中的DFG處理方法的流程圖。首先,程序分析部100讀出存儲(chǔ)在存儲(chǔ)部40中的程序(S10),執(zhí)行程序的分析(S12)。
程序分析部100是用于有效執(zhí)行以后的處理的前處理部,執(zhí)行程序所包含的函數(shù)的展開(kāi)等。次序處理部102根據(jù)程序記述內(nèi)容在程序中附加次序處理指定與分支條件的運(yùn)算(S14)。
在本實(shí)施例中,次序處理是用于將程序分割為多個(gè)子程序的前處理,檢測(cè)程序中的分支處理,以執(zhí)行次序處理指定。分割部104根據(jù)由次序處理部102附加的次序處理指定,而將程序分割為多個(gè)子程序(S16)。此時(shí),分割部104將分支對(duì)象的每個(gè)處理作為子程序提取。
DFG生成部106按照每個(gè)子程序,生成適于可重構(gòu)電路12的電路構(gòu)成的DFG(S18),并存儲(chǔ)在存儲(chǔ)部40中。流數(shù)據(jù)生成部108根據(jù)附加了次序處理指定與分支條件的程序和子程序,生成DFG的流數(shù)據(jù)(S22)。
設(shè)定數(shù)據(jù)生成部51從所生成的DFG生成可重構(gòu)電路12用的設(shè)定數(shù)據(jù)(S20),控制數(shù)據(jù)生成部54從DFG的流數(shù)據(jù)生成用于在定序裝置20中進(jìn)行設(shè)定的控制數(shù)據(jù)(S24)。
圖5表示源程序之一例。在該程序中,如果執(zhí)行func0,則調(diào)出func1。圖6表示在func0中展開(kāi)func1而綜合為一個(gè)程序的形式。程序分析部100執(zhí)行該函數(shù)的展開(kāi)處理。通過(guò)展開(kāi)函數(shù),從而能夠有效地執(zhí)行后面執(zhí)行的次序處理指定或程序的分割處理。次序處理部102在由程序分析部100分析過(guò)的程序中附加次序處理的指定和分支條件的運(yùn)算。
圖7是表示次序處理部102的動(dòng)作的流程圖。首先,次序處理部102將m設(shè)定為程序的行數(shù)(S100)。次序處理部102參照?qǐng)D6所示的程序,由于程序的行數(shù)為10行,故設(shè)定為m=10。次序處理部102設(shè)定i=1(S102)。次序處理部102分析程序的第i行(S104),調(diào)查是否為執(zhí)行次序處理的部分(S106)。
次序處理是用于分割程序的前處理,是在如循環(huán)數(shù)不定的循環(huán)運(yùn)算那樣,僅進(jìn)行DFG化是不能執(zhí)行運(yùn)算處理的情況下,或者通過(guò)執(zhí)行次序處理來(lái)提高電路規(guī)模、處理速度等特性的情況下執(zhí)行的處理,是否執(zhí)行是用程序中的功能或者處理內(nèi)容等來(lái)判斷的。
在本實(shí)施例中,在分支語(yǔ)句(if語(yǔ)句等)的語(yǔ)句中的運(yùn)算數(shù)為2個(gè)以上、循環(huán)語(yǔ)句(for語(yǔ)句等)的循環(huán)數(shù)不定或?yàn)?0次以上的情況下,執(zhí)行次序處理。這樣,通過(guò)根據(jù)分支對(duì)象的處理量是否超過(guò)規(guī)定量來(lái)判斷次序處理的執(zhí)行,從而可以有效生成供給到可重構(gòu)電路12的設(shè)定數(shù)據(jù)。
在圖6的程序中,程序第1行的記述內(nèi)容為“int i;”由于該記述內(nèi)容不是分支語(yǔ)句或循環(huán)語(yǔ)句,故次序處理部102不執(zhí)行次序處理(S106的否)。此時(shí),次序處理部102判斷i與m是否相等(S114)。在此,由于i=1、m=10(S114的否),故次序處理部102在i上加1(S116),設(shè)定為i=2。
步驟返回S104,由于程序第2行的記述內(nèi)容為“x+=1;”故次序處理部102同樣判斷為不執(zhí)行次序處理(S106的否)。次序處理部102在i上加1(S116),設(shè)定為i=3。程序第3行的記述內(nèi)容為“if(*y>0){}”。
如上所述,if語(yǔ)句的次序處理的執(zhí)行條件為存在2個(gè)以上運(yùn)算數(shù)。在此,若參照if語(yǔ)句中的運(yùn)算,則為“x=x>>2”、“*y=x+3”,由于運(yùn)算數(shù)為2以上,故次序處理部102判斷為執(zhí)行次序處理(S106的是)。
接著,次序處理部102執(zhí)行程序的語(yǔ)法分析程序,執(zhí)行次序處理的范圍與分支條件的選定(S108)。該情況下,次序處理的范圍為“if(){…}”,分支條件為“*y>0”。接下來(lái),次序處理部102在程序中附加判斷分支條件的運(yùn)算命令(S110)。
圖8表示在圖6所示的程序的if語(yǔ)句之前附加了判斷運(yùn)算命令的程序。在該例中,判斷運(yùn)算命令為“_SEQ_=*y>0;”。分支條件為“*y>0”。因此,由于表示是執(zhí)行次序處理的部分,故次序處理部102將if語(yǔ)句記述為“if(_SEQ_)”(S112)。
“if(_SEQ_)”是表示是執(zhí)行次序處理的部分的“次序處理指定”。在此,“_SEQ_”成為相當(dāng)于分支選擇所需的來(lái)自可重構(gòu)電路12的輸出信號(hào)的變量。
在可重構(gòu)電路12的運(yùn)算處理的執(zhí)行時(shí),_SEQ_作為分支控制數(shù)據(jù),從可重構(gòu)電路12供給到定序裝置20。定序裝置20若接收分支控制數(shù)據(jù)_SEQ_,則根據(jù)保持的控制數(shù)據(jù),生成接下來(lái)要執(zhí)行的DFG的設(shè)定數(shù)據(jù)的讀出地址,并供給到設(shè)定數(shù)據(jù)保持部14。
S112之后,次序處理部102判斷i與m是否相等(S114)。在此,由于i=3、m=10(S114的否),故在i上加1(S116),設(shè)定為i=4。
次序處理部102,由于程序第4行的記述內(nèi)容為“x=x>>2”,故不執(zhí)行次序處理(S106的否)。次序處理部102在i上加1,設(shè)定為i=5(S116)。以后同樣執(zhí)行流程。在i=8時(shí),程序第8行的記述內(nèi)容為“for(i=0;i<100;i++){”。如上所述,for語(yǔ)句的次序處理的條件為循環(huán)次數(shù)不定或10次以上。在此,若參照f(shuō)or語(yǔ)句的循環(huán)次數(shù),則循環(huán)次數(shù)為100次。因此,次序處理部102判斷為執(zhí)行次序處理(S106的是)。
次序處理部102執(zhí)行程序的語(yǔ)法分析程序,執(zhí)行次序處理的范圍與分支條件的選定(S108)。該情況下,次序處理的范圍為“for(){…}”,分支條件為“i<100”。接下來(lái),在程序中附加判斷分支條件的運(yùn)算命令(S110)。由于分支條件為“i<100”,故如圖8所示,次序處理部102在for語(yǔ)句中的最末尾處附加判斷運(yùn)算命令“_SEQ_=i<100”。另外,在for語(yǔ)句之前附加i的初始化用的“i=0;”。
而且,由于是執(zhí)行次序處理的部分,故次序處理部102將for語(yǔ)句記述為“do{…}while(_SEQ_);”(S112)?!癲o{…}while(_SEQ_);”是表示為執(zhí)行次序處理的部分的“次序處理指定”。該情況下,循環(huán)次數(shù)固定為100次,但例如在分支條件為“i<*y”這樣的循環(huán)次數(shù)不定的情況下,在for語(yǔ)句中的最末尾與for語(yǔ)句之前附加判斷運(yùn)算命令“_SEQ_=i<*y;”。
接著,次序處理部102判斷i與m是否相等(S114)。在此,由于i=8、m=10(S114的否),故次序處理部102在i上加1(S116),設(shè)定為i=9。以后同樣執(zhí)行流程,由于次序處理部102在i=10時(shí)成為i=m(S114的是),故結(jié)束次序處理部102中的處理。根據(jù)以上的次序處理,生成圖8所示的附帶有次序指定的程序。分割部104根據(jù)次序處理指定,將程序分割為子程序。
圖9是表示分割部104的動(dòng)作的流程圖。首先,分割部104將m設(shè)定為次序處理指定的程序部分的總數(shù)(S200)。在圖8所示的附帶有次序指定的程序中,次序處理部分為“if(_SEQ_){…}”和“do{…}while(_SEQ_)”兩處。因此,分割部104設(shè)定m=2。
接著,分割部104判斷m是否為0(S202)。如果m=0,則分割部104將整個(gè)程序作為一個(gè)子程序(S212),結(jié)束分割處理。在此,由于m=2(S202的否),故分割部104設(shè)定為i=1(S204)。
接下來(lái),分割部104將第1次序處理指定的程序部分作為一個(gè)子程序進(jìn)行分割(S206)。參照?qǐng)D8,由于第1次序處理部分為“if(_SEQ_){…}”,故分割部104將該部分作為一個(gè)子程序。
圖10表示分割圖8所示的程序后最終生成的多個(gè)子程序,“if(_SEQ_){…}”作為圖10的func02所示的子程序被分出。
程序中的“if(_SEQ_)”相當(dāng)于是否執(zhí)行func02的判斷,但該判斷可以根據(jù)從圖1所示的可重構(gòu)電路12輸出的_SEQ_的值,由定序裝置20來(lái)執(zhí)行。因此,由于DFG化的運(yùn)算為“x=x>>2”、“*y-=x+3”,“if(_SEQ_)”沒(méi)有DFG化的必要,故不加到子程序上。
然后,分割部104判斷i與m是否相等(S208)。由于i=1、m=2(S208的否),故分割部104在i上加1(S210),設(shè)定i=2。
步驟返回S206,由于第2次序處理部分為“do{…}while(_SEQ_);”,故分割部104同樣將該部分作為一個(gè)子程序?!癲o{…}while(_SEQ_);”作為圖10的func04所示的子程序被分出。
接著,分割部104判斷i與m是否相等(S208)。由于i=2、m=2(S208的是),故分割部104移向S214。以到此為止的處理,次序處理指定的程序部分的子程序化結(jié)束。
接下來(lái),分割部104執(zhí)行剩下的程序部分的子程序化。首先,分割部104判斷在第1次序處理指定的程序之前是否有程序(S214)。由于在第1次序處理指定的程序“if(_SEQ_){…}”之前有程序(S214的是),分割部104將該程序作為一個(gè)子程序(S216)。由此,生成圖10的func01所示的子程序。
然后,分割部104判斷m是否等于1(S218)。而且,在第1次序處理指定的程序之前沒(méi)有程序的情況下(S214的否),分割部104直接執(zhí)行S218的判斷。在該例中,由于m=2(S218的否),故分割部104設(shè)定j=1(S220)。
接著,分割部104執(zhí)行在第j次序處理指定的程序與第(j+1)次序處理指定的程序之間是否有程序的判斷(S222)。在此,由于在第1次序處理指定的程序“if(_SEQ_){…}”與第2次序處理指定的程序“do{…}while(_SEQ_);”之間有程序(S222的是),故分割部104將該程序作為一個(gè)子程序(S224)。由此,生成圖10的func03所示的子程序。
然后,分割部104判斷j是否等于m-1(S226),在該例中,由于j=1、m=2,j=m-1(S226的是),故分割部104執(zhí)行在第m次序處理指定的程序之后是否有程序的判斷(S230)。在此,由于在第2次序處理指定的程序“do{…}while(_SEQ_);”之后沒(méi)有程序(S230的否),故分割部104結(jié)束本流程。
而且,在S218中,在m=1的情況下(S218的是),分割部104移向S230,執(zhí)行第1次序處理指定的程序之后是否有程序的判斷。在程序存在的情況下(S230的是),分割部104將第m次序處理指定的程序之后的部分作為一個(gè)子程序進(jìn)行分割(S232)。
另外,在S226中,在j不等于(m-1)的情況下(S226的否),分割部104在j上加1(S228),返回S222,執(zhí)行在次序處理指定的程序之間是否有程序的判斷。
根據(jù)以上的分割處理,生成圖10所示的子程序。DFG生成部106將圖10的子程序分別DFG化。圖11表示由DFG生成部106生成的DFG。設(shè)定數(shù)據(jù)生成部51根據(jù)這些DFG,生成用于向可重構(gòu)電路12供給的設(shè)定數(shù)據(jù)。
接著,流數(shù)據(jù)生成部108根據(jù)圖8所示的附帶有次序指定的程序和圖10所示的子程序,生成DFG流數(shù)據(jù)。
圖12是表示流數(shù)據(jù)生成部108的動(dòng)作的流程圖。首先,流數(shù)據(jù)生成部108針對(duì)圖10所有的子程序調(diào)查相當(dāng)于圖8的附帶有次序指定的程序中的哪一部分(S300)。由此,流數(shù)據(jù)生成部108調(diào)查子程序的連接關(guān)系、即DFG的連接關(guān)系。此時(shí),流數(shù)據(jù)生成部108將圖8的程序中的運(yùn)算從圖10的func01置換為func04圖13表示將程序中的運(yùn)算從func01置換為func04的流用程序。
接下來(lái),流數(shù)據(jù)生成部108根據(jù)S300中的調(diào)查結(jié)果,從位于流用程序上游的子程序開(kāi)始按順序排列配置(S302)。由此,DFG間的執(zhí)行順序被決定,進(jìn)行按照?qǐng)?zhí)行順序的DFG的配置。
圖14表示DFG流數(shù)據(jù)。在圖13的流用程序中,由于位于最上游的子程序?yàn)閒unc01,故如圖14所示,流數(shù)據(jù)生成部108將func01配置在DFG流數(shù)據(jù)的最上級(jí)。而且,由于接下來(lái)出現(xiàn)的子程序是func02,故流數(shù)據(jù)生成部108如圖14所示,將func02配置在第2級(jí)。以后同樣,流數(shù)據(jù)生成部108將func03配置在第3級(jí),將func04配置在第4級(jí)。
接著,流數(shù)據(jù)生成部108將m設(shè)定為子程序的總數(shù)(S304)。由于圖10所示的子程序的總數(shù)為4,故流數(shù)據(jù)生成部108設(shè)定m=4。另外,流數(shù)據(jù)生成部108設(shè)定i=1(S306)。而且,流數(shù)據(jù)生成部108針對(duì)第I子程序,調(diào)查有從調(diào)查結(jié)果接著向幾個(gè)子程序移行的可能性(S308)。
在此,i=1,若參照?qǐng)D13的流用程序,則第1子程序func01接著要執(zhí)行的子程序?yàn)閒unc02或func03。因此,有從func01移行的可能性的子程序的總數(shù)為2個(gè),流數(shù)據(jù)生成部108設(shè)定n=2(S310)。另外,流數(shù)據(jù)生成部108設(shè)j=1(S312)。
接下來(lái),流數(shù)據(jù)生成部108在DFG流數(shù)據(jù)中附加表示處理從第i子程序向第j移行對(duì)象的子程序進(jìn)行的信息(S314)。在此,如圖14所示,流數(shù)據(jù)生成部108從第1子程序func01向第1移行對(duì)象的子程序func02連線。
然后,流數(shù)據(jù)生成部108判斷n是否大于1(S316)。在此,由于n=2(S316的否),故流數(shù)據(jù)生成部108在DFG流數(shù)據(jù)中附加表示移行條件的信息(S318)。若參照?qǐng)D13,則由于在_SEQ_=1的情況下移行到func02,故流數(shù)據(jù)生成部108,作為從func01向func02的移行條件,附加“_SEQ_=1”。
流數(shù)據(jù)生成部108判斷j是否等于n(S320)。在此,由于j=1、n=2(S320的否),故流數(shù)據(jù)生成部108在j上加1(S322),使j=2。
返回S314,與上述同樣,流數(shù)據(jù)生成部108執(zhí)行用于表示處理從第1子程序func01向第2移行對(duì)象的子程序func03進(jìn)行的連線。流數(shù)據(jù)生成部108附加表示移行條件的信息“_SEQ_=0”。流數(shù)據(jù)生成部108判斷j是否等于n(S320)。由于j=2、m=2(S320的是),故流數(shù)據(jù)生成部108判斷i與m是否相等(S324)。此時(shí),由于i=1、m=4(S324的否),故流數(shù)據(jù)生成部108在i上加1(S326),設(shè)i=2。
返回S308,參照?qǐng)D13的流用程序,第2子程序func02僅移行到子程序func03。從func02開(kāi)始的移行對(duì)象子程序的總數(shù)為1個(gè)(S310),流數(shù)據(jù)生成部108設(shè)定n=1。另外,流數(shù)據(jù)生成部108設(shè)定j=1(S312)。而且,流數(shù)據(jù)生成部108從func02向func03連線(S314)。
流數(shù)據(jù)生成部108判斷n是否大于1(S316)。在此,n=1(S316的否),流數(shù)據(jù)生成部108無(wú)需附加表示移行條件的信息。流數(shù)據(jù)生成部108判斷j是否等于n(S320)。此時(shí),由于j=1、n=1(S320的是),故流數(shù)據(jù)生成部108接著判斷i是否等于m(S324)。由于i=2、m=4,故流數(shù)據(jù)生成部108在i上加1(S326),使i=3。
返回S308,第3子程序func03也同樣地從func03向func04連線。而且,流數(shù)據(jù)生成部108在i上加1,使i=4。第4子程序func04,如果參照?qǐng)D13的流用程序,則第4子程序func04接下來(lái)要執(zhí)行的子程序?yàn)閒unc04或<結(jié)束處理>。
因此,從func04開(kāi)始的移行對(duì)象的子程序總數(shù)為2個(gè),設(shè)n=2(S310)。流數(shù)據(jù)生成部108通過(guò)附加連線及移行條件,從而最終生成圖14所示的DFG流數(shù)據(jù)。而且,由于i等于m(S324的是),故流數(shù)據(jù)生成部108的全部處理結(jié)束。
圖14的DFG流數(shù)據(jù)是概念圖,實(shí)際上可以生成將圖14的信息數(shù)值數(shù)據(jù)化了的DFG流數(shù)據(jù)??刂茢?shù)據(jù)生成部54根據(jù)圖14的DFG流數(shù)據(jù),生成在定序裝置中用于設(shè)定數(shù)據(jù)的選擇的控制數(shù)據(jù)??刂茢?shù)據(jù)被供給到定序裝置20并被存儲(chǔ)。
在實(shí)施例中,雖然說(shuō)明了將2個(gè)次序處理指定的程序間的程序作為子程序進(jìn)行提取的處理,但編譯部50即使在次序處理指定的程序中還存在次序處理指定的情況下也是可以對(duì)應(yīng)的。
例如,在次序處理指定的for語(yǔ)句中存在次序處理指定的for語(yǔ)句那樣的情況下,次序處理部102生成如圖15所示的附帶有次序指定的程序。而且,分割部104將程序<A>、<B>、<C>這3個(gè)作為次序處理指定的程序來(lái)處理、分割。圖16表示由分割部生成的多個(gè)子程序。圖17表示由流數(shù)據(jù)生成部108生成的DFG流數(shù)據(jù)。
另外,DFG生成部106在以適于可重構(gòu)電路12的電路構(gòu)成的方式從子程序生成DFG時(shí),也能從一個(gè)子程序生成多個(gè)DFG。例如,如圖18所示,DFG生成部106從圖16所示的子程序開(kāi)始,相對(duì)一個(gè)子程序可以生成多個(gè)DFG。
即使在這種情況下,funcA、funcB、funcC的流的關(guān)系也與圖17所示的同樣。此時(shí),圖17的“funcA”的部分置換為屬于按照?qǐng)?zhí)行順序排列的funcA的3個(gè)DFG。對(duì)于funcB、funcC來(lái)說(shuō)也是同樣的。因此,這種情況下,流數(shù)據(jù)生成部108針對(duì)funcA、funcB、funcC生成DFG流數(shù)據(jù)后,通過(guò)追加該置換處理而可以對(duì)應(yīng)。
在屬于funcA的DFG中,若將執(zhí)行順序設(shè)為DFGA-1、DFGA-2、DFGA-3,將funcB、funcC也設(shè)為同樣,則DFG流數(shù)據(jù)成為如圖19所示的那樣。funcA、funcB、funcC內(nèi)的DFG的執(zhí)行與SEQ無(wú)關(guān)地被決定,在func之間發(fā)生分支的情況下,根據(jù)_SEQ_來(lái)決定下一func。
在本實(shí)施例中,程序分析部100將圖5的func1展開(kāi)為func0,如圖6所示,使其成為1個(gè)函數(shù)。假設(shè)對(duì)func0與func1獨(dú)立地進(jìn)行DFG處理,則由于“x+=1;”與“_SEQ_=*y>0;”被分別子程序化,故如func01那樣,并未成為一個(gè)子程序,變?yōu)樽映绦蛟黾印?br>
如果子程序增加,則最終生成的DFG增加,有導(dǎo)致處理效率降低、電路規(guī)模增加的可能性。因此,為了盡可能減少分割數(shù)、減少子程序,程序分析部100將多個(gè)函數(shù)匯總為一個(gè)函數(shù)來(lái)執(zhí)行處理。
以上,以實(shí)施例為基礎(chǔ)對(duì)本發(fā)明進(jìn)行了說(shuō)明。本領(lǐng)域的技術(shù)人員應(yīng)該理解實(shí)施例只是例示,這些各構(gòu)成要素或各處理過(guò)程的組成能夠進(jìn)行各種變形例,還有這些變形例也包括在本發(fā)明的范圍內(nèi)。
圖20表示源程序之一例。在該源程序中,在C記述中添加有“/*_SEQ_*/”這樣的命令。該命令是在編寫(xiě)程序時(shí)作為用于指定次序處理的次序處理指定命令而由程序設(shè)計(jì)人員(programmer)插入的。
在C語(yǔ)言中,由2個(gè)斜線(slash)“/…/”包圍的字符串作為命令而被處理,通常的編譯程序在編譯時(shí)忽略命令部分。在該變形例中,次序處理部102作為所希望的運(yùn)算處理,判斷是否存在未記述的命令部分,在添加有次序處理指定命令的情況下,將該命令部分識(shí)別為次序處理指定。
由此,用戶(hù)能夠自由地進(jìn)行次序處理指定。另外,通過(guò)作為命令來(lái)進(jìn)行次序處理指定,從而對(duì)C記述中的動(dòng)作不會(huì)造成影響。
圖21表示附帶有次序指定的程序的例子。在如圖20的“func1/*_SEQ_*/();”所示,由程序設(shè)計(jì)人員記述的次序處理指定存在于函數(shù)中的情況下,分割部104將該函數(shù)部分辨識(shí)為次序處理指定,將由命令部分確定的范圍作為子程序提取出來(lái)。
在一個(gè)函數(shù)在多處被調(diào)用的情況下,以往全部展開(kāi)來(lái)生成相同運(yùn)算內(nèi)容存在于多處的DFG,但通過(guò)在函數(shù)中進(jìn)行次序處理指定,從而可以只生成函數(shù)的一個(gè)DFG,由于該DFG被多次調(diào)用,故可以減少最終生成的DFG數(shù)。
在函數(shù)中進(jìn)行次序處理指定的情況下,由于函數(shù)DFG被調(diào)用時(shí)自變量的值(變量)不同,故需要執(zhí)行func1的自變量數(shù)據(jù)的交接。在此,圖21所示的附帶有次序指定的程序“func1/*_SEQ_*/();”的上2行與下1行相當(dāng)于其。在交接數(shù)據(jù)是排列的情況下,交接排列的地址,在是變量的情況下,交接變量(數(shù)值)。該數(shù)據(jù)交接運(yùn)算命令的追加處理可以在圖7的S110中執(zhí)行。
圖22是表示次序處理部102的動(dòng)作的其他例子的流程圖。首先,次序處理部102將m設(shè)定為程序的行數(shù)(S400)。具體是,次序處理部102參照?qǐng)D23所示的程序,由于程序的全部行數(shù)為14行,故設(shè)定為m=14。而且,次序處理部102設(shè)定i=1(S402)。
接著,次序處理部102分析程序第i行(S404)。次序處理部102判斷程序第i行是否為特定的記述內(nèi)容(S406)。另外,次序處理部102在該判斷為是的情況下,移向S408的處理,在為否的情況下移向S420的處理。
該特定的記述內(nèi)容包含在從一個(gè)運(yùn)算處理分支為其他的多個(gè)運(yùn)算處理的情況下,表示用于使運(yùn)算處理移向其他的多個(gè)運(yùn)算處理的其中一個(gè)的條件的記述內(nèi)容(在此為if語(yǔ)句等分支語(yǔ)句);表示用于使同一運(yùn)算處理多次反復(fù)執(zhí)行的條件的記述內(nèi)容(在此為for語(yǔ)句等循環(huán)語(yǔ)句)等。
在S406中,由于程序第1行的記述內(nèi)容為“int i;”,不是特定的記述內(nèi)容(分支語(yǔ)句或循環(huán)語(yǔ)句),故次序處理部102移向S420的處理。次序處理部102判斷i與m是否相等(S420)。在此,由于i=1、m=14(S420的否),故次序處理部102在i上加1(S422),設(shè)定為i=2。
返回到上述S404的處理,由于程序第2行的記述內(nèi)容為“x+=1;”故次序處理部102判斷為該記述內(nèi)容不是特定的記述內(nèi)容(分支語(yǔ)句或循環(huán)語(yǔ)句)(S406的否)。次序處理部102在i上加1(S420),設(shè)定為i=3。
返回到上述S404的處理,由于程序第3行的記述內(nèi)容為表示特定的記述內(nèi)容的“if(*y>0){”,故次序處理部102執(zhí)行該記述內(nèi)容的分析,執(zhí)行次序處理的范圍與分支條件的選定(S408)。該情況下,次序處理的范圍為“if(){…}”、“else{…}”,分支條件為“y>0”。
該次序處理是用于分割程序的前處理,在通過(guò)分割程序,從而提高可重構(gòu)電路12的電路規(guī)模、處理速度等特性的情況下被執(zhí)行。
接著,次序處理部102生成特定的記述內(nèi)容中的子程序所對(duì)應(yīng)的DFG(S410)。在此,次序處理部102制作特定的記述內(nèi)容if語(yǔ)句中的“x=x>>2;”、“y-=3;”、“*z+=4;”所對(duì)應(yīng)的DFG1(參照?qǐng)D24所示的DFG1)。另外,次序處理部102制作特定的記述內(nèi)容else語(yǔ)句中的“x=5;”所對(duì)應(yīng)的DFG2(參照?qǐng)D24所示的DFG2)。
次序處理部102根據(jù)所制作的DFG1(或DFG2)所對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟數(shù),判斷是否執(zhí)行次序處理。而且,執(zhí)行步驟在本實(shí)施方式中是圖2所示的每一級(jí)中執(zhí)行的處理。其中,執(zhí)行步驟可以是2以上的每一級(jí)中執(zhí)行的處理。
在本實(shí)施方式中,次序處理部102在所生成的DFG1(DFG2)所對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟(圖2所示的級(jí))的數(shù)目超過(guò)第1基準(zhǔn)數(shù)(在此為3)的情況下,執(zhí)行次序處理,在所制作的DFG1(DFG2)所對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟的數(shù)目不超過(guò)第1基準(zhǔn)數(shù)的情況下不執(zhí)行次序處理。
例如,圖24所示的DFG1中、“x=x>>2;”所對(duì)應(yīng)的運(yùn)算對(duì)應(yīng)于可重構(gòu)電路12的第1級(jí)的ALU11。另外,DFG1中、“y-=3;”所對(duì)應(yīng)的運(yùn)算對(duì)應(yīng)于可重構(gòu)電路12的第1級(jí)的ALU12。此外,DFG1中、“*z+=4;”所對(duì)應(yīng)的運(yùn)算對(duì)應(yīng)于可重構(gòu)電路12的第1級(jí)的ALU13。
因此,DFG1對(duì)應(yīng)于可重構(gòu)電路12的第1級(jí)的各ALU,僅對(duì)應(yīng)于1個(gè)執(zhí)行步驟(1級(jí)的處理)。另外,DFG2也與上述同樣,僅對(duì)應(yīng)于1個(gè)執(zhí)行步驟。由此,由于所制作的DFG1或DFG2各自對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟的數(shù)目為1,沒(méi)有超過(guò)第1基準(zhǔn)數(shù)(在此為3),故次序處理部102判斷為不執(zhí)行次序處理。
接下來(lái),次序處理部102判斷i與m是否相等(S420)。在此,由于i=3、m=14(S420的否),故次序處理部102在i上加1(S422),設(shè)定為i=4。由于程序第4行的記述內(nèi)容為“x=x>>2;”,不是特定的記述內(nèi)容(S406的否),故在i上加1,設(shè)定為i=5(S422)。以后同樣地執(zhí)行流程。
返回上述步驟S404的處理,次序處理部102在i=12中,為程序第12行的記述內(nèi)容表示特定的記述內(nèi)容的“for(i=0;i<100;i++){”(S406的是)。次序處理部102執(zhí)行程序的語(yǔ)法分析程序,執(zhí)行次序處理的范圍與分支條件的選定(S408)。該情況下,次序處理的范圍為“for(){…}”,分支條件為“i<100”。
接著,次序處理部102制作for語(yǔ)句所包含的記述內(nèi)容對(duì)應(yīng)的DFG3(S410,參照?qǐng)D25所示的DFG3)。在DFG3中,執(zhí)行100次的重復(fù)處理。
另外,DFG3中、第1次處理中的運(yùn)算對(duì)應(yīng)于可重構(gòu)電路12的第1級(jí)的ALU11,第2次處理中運(yùn)算對(duì)應(yīng)于可重構(gòu)電路12的第2級(jí)的ALU21。
因此,由于DFG3的100次的重復(fù)處理在可重構(gòu)電路12的各級(jí)中順序執(zhí)行,故DFG3所對(duì)應(yīng)的可重構(gòu)電路12的級(jí)(也包括重復(fù)利用的級(jí))的數(shù)目變?yōu)?00,執(zhí)行步驟數(shù)變?yōu)?00。由此,由于所制作的DFG3對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟數(shù)為100,超過(guò)第2基準(zhǔn)數(shù)(在此為10),故次序處理部102判斷為執(zhí)行次序處理(S414的是)。
接著,次序處理部102在程序中附加判斷分支條件的判斷運(yùn)算命令(S416)。由于分支條件為“i<100”,故如圖26所示,次序處理部102在for語(yǔ)句的最末尾附加判斷運(yùn)算命令“_SEQ_=i<100;”另外,在for語(yǔ)句之前附加用于i的初始化的“i=0;”。
而且,由于表示是執(zhí)行次序處理的部分,故次序處理部102將for語(yǔ)句記述為“do{…}while(_SEQ_);”(S418)?!癲o{…}while(_SEQ_);”是表示是執(zhí)行次序處理的部分的“次序處理指定”。
接下來(lái),次序處理部判斷i與m是否相等(S420)。在此,由于i=12、m=14(S420的否),故次序處理部102在i上加1(S422),設(shè)定為i=13。次序處理部102以后同樣地執(zhí)行流程,在i=14時(shí)判斷為i=m(S420的是),結(jié)束次序處理部102中的次序處理。
通過(guò)以上的次序處理,生成圖26所示的附帶有次序指定的程序。分割部104根據(jù)次序處理指定,將程序分割為子程序。
圖26表示在圖23所示的程序的for語(yǔ)句中附加了判斷運(yùn)算命令的程序。在該例中,“_SEQ_=i<100;”為判斷運(yùn)算命令,“do{…}while(_SEQ_);”為次序處理指定。分割部104與上述圖9所示的處理同樣,參照?qǐng)D26所示的次序處理指定“do{…}while(_SEQ_);”,分割為沒(méi)有附加次序處理指定的子程序(func01)和除此以外的子程序(func02)(參照?qǐng)D27)。
然后,DFG生成部106生成對(duì)應(yīng)于子程序(func01)的DFG以及對(duì)應(yīng)于子程序(func02)的DFG(參照?qǐng)D28)。設(shè)定數(shù)據(jù)生成部51根據(jù)所生成的DFG,生成用于向可重構(gòu)電路12供給的設(shè)定數(shù)據(jù)。另外,流數(shù)據(jù)生成部108與上述圖12所示的處理同樣,根據(jù)圖29所示的附帶有次序指定的程序和圖27所示的子程序,生成DFG流數(shù)據(jù)(參照?qǐng)D30)。關(guān)于設(shè)定數(shù)據(jù)生成部51及流數(shù)據(jù)生成部108中的詳細(xì)處理,由于與上述同樣,故在此省略。
在上述圖22乃至圖30中,生成特定的記述內(nèi)容(分支語(yǔ)句或循環(huán)語(yǔ)句)所對(duì)應(yīng)的DFG,根據(jù)該DFG所對(duì)應(yīng)的可重構(gòu)電路12的執(zhí)行步驟數(shù),將程序分割為多個(gè)子程序。
因此,上述圖22乃至圖30中的處理,比上述圖7乃至圖14中的處理更可以使DFG數(shù)增大到必要以上,可以減少DFG所對(duì)應(yīng)的設(shè)定數(shù)據(jù)的存儲(chǔ)量,可以進(jìn)一步縮小電路規(guī)模。
進(jìn)而,上述圖22乃至圖30中的處理,由于可以使DFG數(shù)增大到需要以上,故可以使可重構(gòu)電路12中的處理有效地執(zhí)行。因此,上述圖22乃至圖30中的處理由于在可重構(gòu)電路12中不會(huì)執(zhí)行無(wú)用的處理,故可以較低地抑制消耗電力。
圖31是本發(fā)明的變形例涉及的處理裝置200的構(gòu)成圖。處理裝置200具備可重構(gòu)電路212、設(shè)定數(shù)據(jù)保持部214、定序裝置220、輸出數(shù)據(jù)保持部230及路徑部232。處理裝置200可以具有作為1個(gè)芯片而構(gòu)成的集成電路裝置的構(gòu)成??芍貥?gòu)電路212通過(guò)變更設(shè)定而可以進(jìn)行功能的變更。
設(shè)定數(shù)據(jù)保持部214保持多個(gè)用于在可重構(gòu)電路212中構(gòu)成所希望的電路的設(shè)定數(shù)據(jù),以規(guī)定的時(shí)間間隔向可重構(gòu)電路212順次供給設(shè)定數(shù)據(jù)。設(shè)定數(shù)據(jù)保持部214,也可以構(gòu)成為以所指定的地址值為基礎(chǔ)來(lái)輸出所存儲(chǔ)的設(shè)定數(shù)據(jù)的命令存儲(chǔ)器。該情況下,設(shè)定數(shù)據(jù)可以稱(chēng)為命令數(shù)據(jù)。定序裝置220具有從設(shè)定數(shù)據(jù)保持部214所存儲(chǔ)的多個(gè)設(shè)定數(shù)據(jù)中選擇供給到可重構(gòu)電路212的設(shè)定數(shù)據(jù)的功能。
可重構(gòu)電路212構(gòu)成為具有能夠進(jìn)行功能變更的多個(gè)邏輯電路。具體是,可重構(gòu)電路212具有使可選擇性執(zhí)行多個(gè)運(yùn)算功能的邏輯電路排列為多級(jí)的構(gòu)成,包括能夠設(shè)定前級(jí)的邏輯電路列的輸出與后級(jí)的邏輯電路的輸入的連接關(guān)系的連接部。多個(gè)邏輯電路可以配置為矩陣狀。各邏輯電路的功能和邏輯電路間的連接關(guān)系根據(jù)由設(shè)定數(shù)據(jù)保持部214供給的設(shè)定數(shù)據(jù)來(lái)設(shè)定。設(shè)定數(shù)據(jù)以規(guī)定的時(shí)間間隔向可重構(gòu)電路212供給,因此,可重構(gòu)電路212執(zhí)行所供給的設(shè)定數(shù)據(jù)對(duì)應(yīng)的運(yùn)算處理功能。可重構(gòu)電路212也可以與圖2所示的可重構(gòu)電路12相同。
路徑部232起反饋路徑的作用,將可重構(gòu)電路212的輸出連接到可重構(gòu)電路212的輸入上。輸出數(shù)據(jù)保持部230具有用于存儲(chǔ)從可重構(gòu)電路212輸出的數(shù)據(jù)信號(hào)和/或從外部輸入的數(shù)據(jù)信號(hào)的存儲(chǔ)區(qū)域。輸出數(shù)據(jù)保持部230所存儲(chǔ)的數(shù)據(jù)信號(hào)通過(guò)路徑部232而傳達(dá)到可重構(gòu)電路212的輸入,另外根據(jù)來(lái)自未圖示的控制部的輸出指示而向處理裝置200的外部輸出。
定序裝置220具有定序控制數(shù)據(jù)保持部222、設(shè)定數(shù)據(jù)選擇部224、定序控制部226及定序控制數(shù)據(jù)選擇部228。設(shè)定數(shù)據(jù)選擇部224向設(shè)定數(shù)據(jù)保持部214供給選擇設(shè)定數(shù)據(jù)的第1選擇信號(hào)。具體是,第1選擇信號(hào)是指定設(shè)定數(shù)據(jù)保持部214的讀出地址的信號(hào),設(shè)定數(shù)據(jù)保持部214以該讀出地址為基礎(chǔ),向可重構(gòu)電路212輸出所希望的設(shè)定數(shù)據(jù)。定序控制數(shù)據(jù)保持部222保持用于使設(shè)定數(shù)據(jù)選擇部224生成第1選擇信號(hào)的定序控制數(shù)據(jù),并將該定序控制數(shù)據(jù)供給到設(shè)定數(shù)據(jù)選擇部224。定序控制數(shù)據(jù)保持部222由RAM等存儲(chǔ)器構(gòu)成。由此,通過(guò)改寫(xiě)定序控制數(shù)據(jù)而可以容易地變更定序裝置220的處理內(nèi)容,可以執(zhí)行各種控制,同時(shí)可以提高定序裝置220的通用性。
定序控制數(shù)據(jù)選擇部228將選擇對(duì)設(shè)定數(shù)據(jù)選擇部224供給的定序控制數(shù)據(jù)的第2選擇信號(hào)供給到定序控制數(shù)據(jù)保持部222。具體是,第2選擇信號(hào)是指定定序控制數(shù)據(jù)保持部222的讀出地址的信號(hào),定序控制數(shù)據(jù)保持部222以該讀出地址為基礎(chǔ),向設(shè)定數(shù)據(jù)選擇部224輸出所希望的定序控制數(shù)據(jù)。
而且,雖然對(duì)圖35進(jìn)行了詳述,但定序控制數(shù)據(jù)不只是包含控制設(shè)定數(shù)據(jù)選擇部224的動(dòng)作的數(shù)據(jù),也包含控制定序控制部226及定序控制數(shù)據(jù)選擇部228的動(dòng)作的數(shù)據(jù)。定序控制數(shù)據(jù)選擇部228以從定序控制數(shù)據(jù)保持部222供給的控制數(shù)據(jù)、從定序控制部226供給的數(shù)據(jù)、從可重構(gòu)電路212供給的數(shù)據(jù)為基礎(chǔ),生成第2選擇信號(hào),并供給到定序控制數(shù)據(jù)保持部222。在本實(shí)施例中,定序控制數(shù)據(jù)選擇部228接收從可重構(gòu)電路212輸出的分支控制數(shù)據(jù)。分支控制數(shù)據(jù)是表示在源程序中的if語(yǔ)句或for語(yǔ)句等的處理之際執(zhí)行的條件判斷的結(jié)果的數(shù)據(jù)。
在本實(shí)施例中,定序裝置220以可重構(gòu)電路212中的運(yùn)算結(jié)果、具體是條件的判斷結(jié)果為基礎(chǔ),管理設(shè)定數(shù)據(jù)保持部214向可重構(gòu)電路212供給的設(shè)定數(shù)據(jù)。在本實(shí)施例中,為了使定序裝置220的設(shè)定數(shù)據(jù)的管理有效,以下面的順序生成設(shè)定數(shù)據(jù)保持部214存儲(chǔ)的設(shè)定數(shù)據(jù)及定序控制數(shù)據(jù)保持部222存儲(chǔ)的定序控制數(shù)據(jù)。
圖32表示設(shè)定數(shù)據(jù)及定序控制數(shù)據(jù)的生成順序。該生成流程由圖中未示出的編譯裝置來(lái)執(zhí)行。
編譯裝置從規(guī)定的存儲(chǔ)區(qū)域讀出應(yīng)該由可重構(gòu)電路212執(zhí)行的程序(S500)。程序表示記述了電路中的處理動(dòng)作的動(dòng)作記述,用C語(yǔ)言等高級(jí)語(yǔ)言記述了信號(hào)處理電路或信號(hào)處理算法。程序構(gòu)成為包括條件語(yǔ)句或循環(huán)語(yǔ)句等。而且,在條件語(yǔ)句與循環(huán)語(yǔ)句中存在用于確定運(yùn)算的移行對(duì)象的條件判斷處理,根據(jù)條件判斷的結(jié)果來(lái)決定接下來(lái)執(zhí)行的運(yùn)算處理。例如,以if語(yǔ)句及else語(yǔ)句表現(xiàn)的條件語(yǔ)句在if條件成立時(shí)執(zhí)行if語(yǔ)句,在if條件不成立時(shí)執(zhí)行else語(yǔ)句。另外,循環(huán)語(yǔ)句如果所決定的次數(shù)的處理結(jié)束,則退出該循環(huán)語(yǔ)句開(kāi)始新的運(yùn)算處理,如果所決定的次數(shù)的處理沒(méi)有結(jié)束,則繼續(xù)重復(fù)處理。在本實(shí)施例的定序裝置220中,利用決定這種分支條件的條件判定的結(jié)果,執(zhí)行有效的運(yùn)算處理。
編譯裝置編譯處理已經(jīng)讀出的程序(S502),在變換為數(shù)據(jù)流圖(DFG)的同時(shí)(S504),生成表示DFG的處理流程的流數(shù)據(jù)(S508)。DFG表現(xiàn)電路中的運(yùn)算間的執(zhí)行順序的依存關(guān)系,以圖表結(jié)構(gòu)來(lái)表示輸入變量與常數(shù)的運(yùn)算流程。DFG流數(shù)據(jù)是以將DFG整體分解為執(zhí)行規(guī)定的一系列處理的多個(gè)DFG組、組合DFG組并表示處理整體的流程的方式生成。DFG組將處理順序確定的1個(gè)以上的DFG匯總為一個(gè)單位。而且,在DFG組中,DFG存在一個(gè)的情況下,作為僅處理該DFG的DFG組,可以認(rèn)為處理順序是確定的;在DFG存在2個(gè)以上的情況下,則需要確定2個(gè)以上的DFG間的處理順序。DFG被變換為對(duì)應(yīng)的設(shè)定數(shù)據(jù)(S506),DFG流數(shù)據(jù)被變換為對(duì)應(yīng)的定序控制數(shù)據(jù)(S510)。設(shè)定數(shù)據(jù)是用于將DFG映射到可重構(gòu)電路212的數(shù)據(jù),確定可重構(gòu)電路212中的邏輯電路的功能或邏輯電路間的連接關(guān)系。設(shè)定數(shù)據(jù)存儲(chǔ)在設(shè)定數(shù)據(jù)保持部214中,定序控制數(shù)據(jù)存儲(chǔ)在定序控制數(shù)據(jù)保持部222中。
圖33表示DFG流數(shù)據(jù)的例子。以往的DFG,在存在分支處理的情況下,制作為執(zhí)行兩方的分支對(duì)象的處理,但在本實(shí)施例中,將處理順序確定的連續(xù)的DFG作為一個(gè)DFG組定位,將多個(gè)DFG組的處理關(guān)系表現(xiàn)為DFG流數(shù)據(jù)。即,DFG組內(nèi)的運(yùn)算處理不依存于判斷了DFG組的分支的結(jié)果而進(jìn)行了確定。DFG組的條件分支的判斷結(jié)果由從可重構(gòu)電路212輸出的分支控制數(shù)據(jù)c來(lái)表示。而且,該判斷可以由DFG組內(nèi)位于中間的DFG來(lái)進(jìn)行,也可以由作為最后的DFG來(lái)進(jìn)行。在圖33中,根據(jù)分支控制數(shù)據(jù)c的值,示出決定下一DFG的流程。而且,來(lái)自可重構(gòu)電路212的分支控制數(shù)據(jù)c采取標(biāo)志值等數(shù)據(jù)形式,在二分支的情況下,取1或0的其中之一。
例如,參照DFG組3,在進(jìn)行for語(yǔ)句等循環(huán)處理的情況下,在到循環(huán)結(jié)束條件成立為止的期間,分支控制數(shù)據(jù)c為1,在將分支控制數(shù)據(jù)c設(shè)定為1的期間內(nèi),反復(fù)執(zhí)行DFG組3的運(yùn)算處理。另一方面,在執(zhí)行規(guī)定次數(shù)的循環(huán)處理、循環(huán)結(jié)束條件成立時(shí),分支控制數(shù)據(jù)c變?yōu)?,開(kāi)始DFG組4的運(yùn)算處理。另外,參照DFG組1,在進(jìn)行用于判斷DFG組的分支的if語(yǔ)句等條件處理的情況下,例如在if條件成立時(shí)分支控制數(shù)據(jù)c變?yōu)?;在if條件不成立時(shí)或else條件成立時(shí)分支控制數(shù)據(jù)c變?yōu)?。相反而言,針對(duì)for語(yǔ)句或if語(yǔ)句等判斷DFG組分支的條件分支判斷發(fā)生的處理,預(yù)先生成供給到可重構(gòu)電路212的設(shè)定數(shù)據(jù),以便制作上述那樣的分支控制數(shù)據(jù)c。如上所述,設(shè)定數(shù)據(jù)的生成由圖中未示出的編譯裝置來(lái)進(jìn)行。
例如,在DFG組1中,從DFG1-1到DFG1-12為止,是不依存分支控制數(shù)據(jù)而順次處理的DFG,DFG1-12的接下來(lái)被處理的DFG根據(jù)通過(guò)在可重構(gòu)電路212上執(zhí)行運(yùn)算處理而執(zhí)行的分支控制數(shù)據(jù)c的值而選擇為DFG2-1或DFG7-1的其中之一。這樣,在本實(shí)施例中,將不依存分支控制數(shù)據(jù)c而決定處理順序的從DFG1-1到DFG1-12設(shè)定為1個(gè)DFG組1。在DFG組中最后處理的DFG配置在DFG組的最后,對(duì)于DFG組1來(lái)說(shuō),DFG1-12配置在DFG組1的最后。同樣將剩下的DFG分割到中間不包含最后要處理的DFG的DFG組中。而且,圖示的DFG流數(shù)據(jù)是一例,例如也能將DFG組2與DFG組3設(shè)定為1個(gè)DFG組。在圖示的例子中,在DFG組3中,形成有從最終級(jí)的DFG3-10返回到最前級(jí)的DFG3-1的自循環(huán),但在結(jié)合了DFG組2與DFG組3的情況下,該自循環(huán)變?yōu)榉祷刂虚g級(jí)的DFG。即使在這種情況下,最后處理發(fā)生的DFG也是最終級(jí)的DFG,不會(huì)從中間的DFG移向其他DFG組。
圖34表示圖33的DFG流數(shù)據(jù)所對(duì)應(yīng)的設(shè)定數(shù)據(jù)保持部214中的設(shè)定數(shù)據(jù)的存儲(chǔ)例。在此,一個(gè)DFG設(shè)為對(duì)應(yīng)于一個(gè)設(shè)定數(shù)據(jù),一個(gè)DFG的設(shè)定數(shù)據(jù)存儲(chǔ)在設(shè)定數(shù)據(jù)保持部214的一個(gè)地址中。以下,也有將DFG和設(shè)定數(shù)據(jù)不進(jìn)行特別區(qū)別而處理的情況。在本實(shí)施例中,如圖34所示,將設(shè)定數(shù)據(jù)按DFG組、即設(shè)定數(shù)據(jù)組進(jìn)行存儲(chǔ)。
即,設(shè)定數(shù)據(jù)保持部214將供給到可重構(gòu)電路212的順序確定的1個(gè)以上的設(shè)定數(shù)據(jù)作為1個(gè)設(shè)定數(shù)據(jù)組,以設(shè)定數(shù)據(jù)組為單位保持多個(gè)設(shè)定數(shù)據(jù)。而且,在設(shè)定數(shù)據(jù)為1個(gè)的情況下,由于僅將該設(shè)定數(shù)據(jù)供給到可重構(gòu)電路212,故從這方面來(lái)說(shuō),可以認(rèn)為供給到可重構(gòu)電路212的順序是確定的。另外,在設(shè)定數(shù)據(jù)為2個(gè)以上的情況下,在這些設(shè)定數(shù)據(jù)之間需要確定供給到可重構(gòu)電路212順序。在此,設(shè)定數(shù)據(jù)保持部214將用于在可重構(gòu)電路212上構(gòu)成所希望的電路的多個(gè)設(shè)定數(shù)據(jù)分解為7個(gè)設(shè)定數(shù)據(jù)群進(jìn)行保持。此時(shí),設(shè)定數(shù)據(jù)保持部214按照向可重構(gòu)電路212的供給順序,將設(shè)定數(shù)據(jù)組中的1個(gè)以上的設(shè)定數(shù)據(jù)保持在連續(xù)的地址的存儲(chǔ)區(qū)域內(nèi)。即,DFG組內(nèi)的2個(gè)以上的DFG的排列與對(duì)可重構(gòu)電路212供給的順序相同。由此,在將某個(gè)DFG組的設(shè)定數(shù)據(jù)供給到可重構(gòu)電路212時(shí),只要將設(shè)定保持部214的讀出地址逐一增加即可,可以將從設(shè)定數(shù)據(jù)選擇部224向設(shè)定數(shù)據(jù)保持部214供給的讀出地址(第1選擇信號(hào))的生成單純化。這樣,雖然優(yōu)選按照處理順序?qū)⒁粋€(gè)DFG組內(nèi)的設(shè)定數(shù)據(jù)存儲(chǔ)在設(shè)定數(shù)據(jù)保持部214中,但只要DFG組間的地址分配是恰當(dāng)?shù)募纯伞A硗?,設(shè)定數(shù)據(jù)保持部214保持構(gòu)成可重構(gòu)電路212的設(shè)定數(shù)據(jù)以外的時(shí)間調(diào)整用設(shè)定數(shù)據(jù)(E_DFG)。
圖35表示定序裝置220的詳細(xì)內(nèi)容。定序控制數(shù)據(jù)保持部222將以下數(shù)據(jù)作為定序控制數(shù)據(jù)保持設(shè)定數(shù)據(jù)保持部214中的DFG組的前端DFG的RAM地址(COMaddr1);分支控制數(shù)據(jù)c=1的情況下,在定序控制數(shù)據(jù)保持部222中向接下來(lái)讀出的地址的移動(dòng)數(shù)(a);在分支控制數(shù)據(jù)c=0的情況下、在定序控制數(shù)據(jù)保持部222中向接下來(lái)讀出的地址的移動(dòng)數(shù)(b);DFG組的DFG數(shù)(step);DFG組內(nèi)輸出分支控制數(shù)據(jù)c的DFG的順序(pos_c);對(duì)DFG組的全部DFG進(jìn)行處理后增加為時(shí)間調(diào)整用的E_DFG的數(shù)(empty)。在本實(shí)施例中,將這些定序控制數(shù)據(jù)作為一個(gè)控制數(shù)據(jù)組,與DFG組(設(shè)定數(shù)據(jù)組)相對(duì)應(yīng)后存儲(chǔ)在一個(gè)地址中。示出在圖35的定序控制數(shù)據(jù)保持部222中,在一個(gè)地址內(nèi),從左開(kāi)始按照順序存儲(chǔ)有RAM地址(COMaddr1)、移動(dòng)數(shù)(a)、移動(dòng)數(shù)(b)、DFG組的DFG數(shù)(step)、輸出分支控制數(shù)據(jù)c的DFG的順序(pos_c)、E_DFG的數(shù)(empty)。
定序控制數(shù)據(jù)根據(jù)圖33所示的DFG流數(shù)據(jù)而生成。在圖35的例子中,將DFG組1的定序控制數(shù)據(jù)組存儲(chǔ)在定序控制數(shù)據(jù)保持部222的地址0中。同樣,將DFG組2的定序控制數(shù)據(jù)組存儲(chǔ)在地址1中,將DFG組3的定序控制數(shù)據(jù)組存儲(chǔ)在地址2中,將DFG組4的定序控制數(shù)據(jù)組存儲(chǔ)在地址3中,將DFG組5的定序控制數(shù)據(jù)組存儲(chǔ)在地址4中,將DFG組6的定序控制數(shù)據(jù)組存儲(chǔ)在地址5中,將DFG組7的定序控制數(shù)據(jù)組存儲(chǔ)在地址6中。而且,存儲(chǔ)定序控制數(shù)據(jù)組的地址無(wú)需按照DFG流數(shù)據(jù)中的DFG編號(hào)的順序來(lái)存儲(chǔ),可以是隨機(jī)的。
在定序控制數(shù)據(jù)保持部222的地址7中,存儲(chǔ)E_DFG的定序控制數(shù)據(jù)組。該E_DFG的設(shè)定數(shù)據(jù)是對(duì)在可重構(gòu)電路212中構(gòu)成的所希望的電路的運(yùn)算結(jié)果不會(huì)造成影響的設(shè)定數(shù)據(jù),利用于在處理完全部的DFG組之后進(jìn)行時(shí)間調(diào)整。例如,處理裝置200中的時(shí)鐘速率為外部時(shí)鐘速率的100倍時(shí),相對(duì)于外部的1個(gè)時(shí)鐘,在可重構(gòu)電路212中能夠處理的DFG數(shù)變?yōu)?00。外部時(shí)鐘速率對(duì)外部裝置與可重構(gòu)電路212之間輸入輸出數(shù)據(jù)的定時(shí)有影響。如果處理的DFG數(shù)(設(shè)定數(shù)據(jù)數(shù))預(yù)先決定,則可以預(yù)先確定與外部之間的數(shù)據(jù)輸入輸出定時(shí),但在本實(shí)施例的運(yùn)算處理中,由于發(fā)生分支處理,故根據(jù)條件的判斷狀況,整體的處理DFG數(shù)變化。例如,參照?qǐng)D33,由于在DFG組1的處理結(jié)束后,根據(jù)條件的判斷結(jié)果來(lái)執(zhí)行DFG組2或DFG組7的處理,所以作為結(jié)果,處理的DFG數(shù)變化。因此,在本實(shí)施例中,在處理完作為最后的DFG的DFG7-9之后,不變更所保持的運(yùn)算結(jié)果,為了實(shí)現(xiàn)與外部裝置的定時(shí)調(diào)整,使E_DFG的設(shè)定數(shù)據(jù)執(zhí)行100次以?xún)?nèi)的次數(shù),以調(diào)整處理時(shí)間。
定序控制數(shù)據(jù)COMaddr1是設(shè)定數(shù)據(jù)保持部214中的DFG組的前端DFG的地址。而且,在圖35所示的例子中,雖然定序控制數(shù)據(jù)COMaddr1指定DFG組的前端DFG的地址,但例如在根據(jù)DFG組內(nèi)的自循環(huán)而返回到DFG組的中間DFG的情況下,與定序控制數(shù)據(jù)COMaddr1不同,可以設(shè)定該中間的DFG的地址。定序控制數(shù)據(jù)COMaddr1是選擇設(shè)定數(shù)據(jù)組的數(shù)據(jù),也可以稱(chēng)為組選擇控制數(shù)據(jù)。由于DFG組1中的前端DFG是DFG1-1,故定序控制數(shù)據(jù)保持部222的地址0中的COMaddr1變?yōu)?(參照?qǐng)D34)。即使對(duì)于其他DFG組來(lái)說(shuō)也是同樣的,參照?qǐng)D34,定序控制數(shù)據(jù)保持部222的地址1中的COMaddr1為13,地址2中的COMaddr1為16,地址3中的COMaddr1為26,地址4中的COMaddr1為32,地址5中的COMaddr1為38,地址6中的COMaddr1為48。另外,地址7存儲(chǔ)了E_DFG所對(duì)應(yīng)的定序控制數(shù)據(jù)組,COMaddr1變?yōu)?。
定序控制數(shù)據(jù)a及b是向接下來(lái)要讀出的定序控制數(shù)據(jù)保持部222的地址的移動(dòng)數(shù),可以設(shè)定相對(duì)當(dāng)前地址的下一DFG組的定序控制數(shù)據(jù)保持部22的地址的相對(duì)值。定序控制數(shù)據(jù)a及b根據(jù)分支控制數(shù)據(jù)c而由定序控制數(shù)據(jù)選擇部228選擇性地讀出。參照?qǐng)D33,在DFG組1的處理結(jié)束后,如果分支控制數(shù)據(jù)c=1,則下一處理變?yōu)镈FG組2。DFG組1的地址0與DFG組2的地址1的相對(duì)值為1,因此定序控制數(shù)據(jù)保持部222的地址0中的定序控制數(shù)據(jù)a為1。另外,如果分支控制數(shù)據(jù)c=0,則下一處理變?yōu)镈FG組7,由于DFG組1的地址0與DFG組7的地址6的相對(duì)值為6,故定序控制數(shù)據(jù)b變?yōu)?。對(duì)于其他DFG組也同樣。例如,在DFG組3中,c=1的情況下,由于接下來(lái)處理的DFG組是相同的DFG組3,故定序控制數(shù)據(jù)a變?yōu)?。在c=0的情況下,由于下一處理變?yōu)镈FG4,故定序控制數(shù)據(jù)b變?yōu)?。另外,在DFG組6中,c=1的情況下,由于接下來(lái)處理的DFG組為DFG組2,在DFG流數(shù)據(jù)上反饋,故定序控制數(shù)據(jù)a變?yōu)?4。而且,定序控制數(shù)據(jù)a及b可以是接下來(lái)讀出的定序控制數(shù)據(jù)保持部222的地址本身。
定序控制數(shù)據(jù)step是DFG組的DFG數(shù),在DFG組1中,由于具有12個(gè)DFG,故step為12。在其他DFG組也同樣。
定序控制數(shù)據(jù)pos_c是DFG組內(nèi)的輸出分支控制數(shù)據(jù)c的DFG的順序。例如,在DFG組1中,若設(shè)分支控制數(shù)據(jù)c在將DFG1-5的設(shè)定數(shù)據(jù)映射了的可重構(gòu)電路212中生成,則定序控制數(shù)據(jù)pos_c變?yōu)?。對(duì)于其他DFG組也同樣。
定序控制數(shù)據(jù)empty是對(duì)當(dāng)前的DFG組的全部DFG進(jìn)行處理后增加為時(shí)間調(diào)整用的E_DFG的數(shù)。具體是,從可重構(gòu)電路212輸出分支控制數(shù)據(jù)c之后,定序控制數(shù)據(jù)選擇部228以分支控制數(shù)據(jù)c為基礎(chǔ),指定定序控制數(shù)據(jù)保持部222的地址,進(jìn)行所希望的定序控制數(shù)據(jù)的讀出,設(shè)定數(shù)據(jù)選擇部224指定設(shè)定數(shù)據(jù)保持部214的地址,比可以向可重構(gòu)電路212供給所希望的設(shè)定數(shù)據(jù)的時(shí)間還提前,在將當(dāng)前的設(shè)定數(shù)據(jù)組中的設(shè)定數(shù)據(jù)全部供給到可重構(gòu)電路212的情況下,設(shè)定數(shù)據(jù)保持部214為了調(diào)整時(shí)間而將E_DFG的必要數(shù)的設(shè)定數(shù)據(jù)供給到可重構(gòu)電路212。
例如,在DFG組4中,若參照定序控制數(shù)據(jù)pos_c,則DFG組4內(nèi)的最后的DFG雖然生成并輸出分支控制數(shù)據(jù)c,但根據(jù)分支控制數(shù)據(jù)c,定序控制數(shù)據(jù)選擇部228生成定序控制數(shù)據(jù)保持部222的讀出地址,設(shè)定數(shù)據(jù)選擇部224從所讀出的定序控制數(shù)據(jù)中選擇設(shè)定數(shù)據(jù),使該設(shè)定數(shù)據(jù)從設(shè)定數(shù)據(jù)保持部214向可重構(gòu)電路212供給為止需要規(guī)定的時(shí)間。而且,在圖35的硬件構(gòu)成中,需要3個(gè)DFG的處理時(shí)間份。在此期間,如果不向可重構(gòu)電路212供給設(shè)定數(shù)據(jù),則有運(yùn)算結(jié)果被覆寫(xiě)的可能性。因此,在到接下來(lái)的DFG組中的設(shè)定數(shù)據(jù)被供給到可重構(gòu)電路212為止的期間內(nèi),通過(guò)使可重構(gòu)電路212執(zhí)行對(duì)運(yùn)算結(jié)果沒(méi)有影響的E_DFG的設(shè)定數(shù)據(jù),從而回避運(yùn)算結(jié)果被覆寫(xiě)的可能性。因此,在本實(shí)施例中,DFG組4中的定序控制數(shù)據(jù)empty變?yōu)?。
另外,在DFG組6中,參照定序控制數(shù)據(jù)pos_c,以DFG組6內(nèi)的10個(gè)DFG中的第8DFG生成分支控制數(shù)據(jù)c,由于在到最后的DFG被處理為止的期間經(jīng)過(guò)2個(gè)DFG份的時(shí)間,故需要插入一個(gè)E_DFG(3-2=1)。因此,DFG組6中的定序控制數(shù)據(jù)empty變?yōu)?。
如以上所了解的,在某個(gè)DFG組中,在輸入分支控制數(shù)據(jù)c的DFG之后的DFG數(shù)為3個(gè)以上的情況下,定序控制數(shù)據(jù)empty變?yōu)?。
定序控制部226具有對(duì)DFG組的當(dāng)前DFG的順序進(jìn)行計(jì)數(shù)的計(jì)數(shù)器。該計(jì)數(shù)器與從設(shè)定數(shù)據(jù)保持部214輸出設(shè)定數(shù)據(jù)的定時(shí)同步,逐一增加輸出。計(jì)數(shù)值在設(shè)定數(shù)據(jù)選擇部224中作為選擇設(shè)定數(shù)據(jù)組內(nèi)的設(shè)定數(shù)據(jù)的組內(nèi)選擇控制數(shù)據(jù)而被利用。
計(jì)數(shù)值在與從定序控制數(shù)據(jù)保持部222讀出的定序控制數(shù)據(jù)step、empty的合計(jì)值相等時(shí)復(fù)位為初始值1。例如,從定序控制數(shù)據(jù)保持部222讀出的定序控制數(shù)據(jù),在從DFG組3變?yōu)镈FG組4時(shí),計(jì)數(shù)值設(shè)定為1,計(jì)數(shù)器增量8次,在計(jì)數(shù)值變?yōu)?(step+empty=6+3)的下一個(gè)時(shí)鐘,計(jì)數(shù)值復(fù)位為初始值1。若計(jì)數(shù)值變?yōu)槌跏贾?,則定序控制數(shù)據(jù)保持部222根據(jù)由定序控制數(shù)據(jù)選擇部228供給的選擇信號(hào)addr,將DFG組5或DFG組6的定序控制數(shù)據(jù)讀出到設(shè)定數(shù)據(jù)選擇部224、定序控制部226、定序控制數(shù)據(jù)選擇部228的每一個(gè)。
定序控制部226生成判斷在設(shè)定數(shù)據(jù)選擇部224中是否生成E_DFG的信號(hào)flag_empty。在計(jì)數(shù)值>step時(shí)將flag_empty設(shè)為1,除此以外將flag_empty設(shè)為0。flag_empty是判斷了在DFG組的全部DFG被處理后作為時(shí)間調(diào)整用而需要使E_DFG插入的情況的結(jié)果,在為1時(shí),設(shè)定數(shù)據(jù)選擇部224生成E_DFG的地址。例如,在DFG組4中,step=6,計(jì)數(shù)值從1增加到9,但計(jì)數(shù)值=7、8、9時(shí),flag_empty變?yōu)?,除此以外時(shí)flag_empty變?yōu)?。
設(shè)定數(shù)據(jù)選擇部224生成從設(shè)定數(shù)據(jù)保持部214讀出的設(shè)定數(shù)據(jù)的讀出地址COMaddr2。在flag_empty為1時(shí),COMaddr2被設(shè)定為E_DFG的地址(EMPTYDFG_ADDR),在flag_empty為0時(shí)、COMaddr2被設(shè)定為(COMaddr1+計(jì)數(shù)值-1)。這樣,在flag_empty為0時(shí),設(shè)定數(shù)據(jù)選擇部224以COMaddr1(組選擇控制數(shù)據(jù))及計(jì)數(shù)值(組內(nèi)選擇控制數(shù)據(jù))為基礎(chǔ),生成讀出地址COMaddr2。而且,EMPTYDFG_ADDR為0(參照?qǐng)D34)。設(shè)定數(shù)據(jù)選擇部224從定序控制部226接收計(jì)數(shù)值,(COMaddr1+計(jì)數(shù)值-1)與計(jì)數(shù)值的增量配合而逐一變大。圖36表示設(shè)定數(shù)據(jù)選擇部224中的讀出地址的生成算法。
如針對(duì)圖34所進(jìn)行的說(shuō)明,設(shè)定數(shù)據(jù)保持部214將1個(gè)DFG組內(nèi)的DFG配合其處理順序存儲(chǔ)在連續(xù)的地址內(nèi)。因此,設(shè)定數(shù)據(jù)選擇部224將1個(gè)DFG組內(nèi)的設(shè)定數(shù)據(jù)的地址以規(guī)定的定時(shí)從最初的設(shè)定數(shù)據(jù)的地址(COMaddr1)開(kāi)始逐一增加,從而可以將該DFG組內(nèi)的DFG順序地供給到可重構(gòu)電路212。例如,在DFG組4中,計(jì)數(shù)器一直增加到9。在計(jì)數(shù)值=7、8、9時(shí),flag_empty變?yōu)?。由于COMaddr1=26,故設(shè)定數(shù)據(jù)選擇部226是COMaddr2按順序變化為26、27、28、29、30、31、0、0、0,并供給到設(shè)定數(shù)據(jù)保持部214。通過(guò)按照該順序從設(shè)定數(shù)據(jù)保持部214中讀出設(shè)定數(shù)據(jù),從而在可重構(gòu)電路212上,以最初的6個(gè)時(shí)鐘生成DFG4-1、…、DFG4-6,以最后的3個(gè)時(shí)鐘生成E_DFG。
定序控制部226生成表示從可重構(gòu)電路212向定序控制數(shù)據(jù)選擇部228供給分支控制數(shù)據(jù)c的定時(shí)的信號(hào)fla_c;和表示在定序控制數(shù)據(jù)選擇部228中變更為定序控制數(shù)據(jù)保持部222的下一DFG組的地址的定時(shí)的信號(hào)change_addr,并供給到定序控制數(shù)據(jù)選擇部228。fla_c是生成在設(shè)定數(shù)據(jù)選擇部224中生成分支控制數(shù)據(jù)c的設(shè)定數(shù)據(jù)的地址之后,加入分支控制數(shù)據(jù)c被供給到定序控制數(shù)據(jù)選擇部228為止的延遲時(shí)間等(DELAYTIME1)而生成的,在計(jì)數(shù)值為(pos_c+DELAYTIME1)時(shí),fla_c被設(shè)定為從0到1。change_addr是在定序控制數(shù)據(jù)選擇部228中加入向定序控制數(shù)據(jù)保持部222輸入讀出地址的延遲時(shí)間等(DELAYTIME2)而生成的,在計(jì)數(shù)值為(step+empty-DELAYTIME2)時(shí),change_addr被設(shè)定為從0到1。例如,在設(shè)為DELAYTIME1=2、DELAYTIME2=1時(shí),在DFG組1中,由于pos_c=5,故在計(jì)數(shù)值=5+2=7時(shí)fla_c變?yōu)?。另外,由于step=12、empty=0,故在計(jì)數(shù)值=12+0-1=11時(shí)change_addr變?yōu)?。圖37表示定序控制部226中的動(dòng)作算法。
定序控制數(shù)據(jù)選擇部228生成從定序控制數(shù)據(jù)保持部222讀出的定序控制數(shù)據(jù)的讀出地址addr。另外,保持有fla_c=1時(shí)的定序控制數(shù)據(jù)保持部222的定序控制數(shù)據(jù)a或b的值set_c、和當(dāng)前的定序控制數(shù)據(jù)保持部222的讀出地址addr。在變?yōu)閺目芍貥?gòu)電路212供給分支控制數(shù)據(jù)c的定時(shí)時(shí)(fla_c=1),定序控制數(shù)據(jù)選擇部228,如果分支控制數(shù)據(jù)c為0,則使定序控制數(shù)據(jù)b保持為set_c,如果分支控制數(shù)據(jù)c為1,則使定序控制數(shù)據(jù)a保持為set_c。而且,在變?yōu)樽兏x出地址addr的定時(shí)時(shí)(change_addr=1),則定序控制數(shù)據(jù)選擇部228,如果pos_c為0以外的值,則在addr上增加所保持的set_c。另一方面,如果pos_c為0,則是不依存于分支控制數(shù)據(jù)c的值而唯一決定接下來(lái)要讀出的DFG組的情況,在addr中增加分支控制數(shù)據(jù)a。所謂pos_c為0的情況,參照?qǐng)D33及圖35,是指DFG組2、DFG組,該情況下不供給分支控制數(shù)據(jù),預(yù)先確定預(yù)先處理的DFG組。
在change_addr為0時(shí),由于是不變更DFG組的時(shí)候,故定序控制數(shù)據(jù)選擇部228直接保持addr的值。而且,通過(guò)將在此生成的addr設(shè)為定序控制數(shù)據(jù)保持部222的讀出地址,從而可以讀出所希望的定序控制數(shù)據(jù)。例如,在DFG組1中,在上述的例子中,計(jì)數(shù)值=7時(shí)fla_c為1,若此時(shí)change_addr變?yōu)?,則set_c=b=6。而且,在計(jì)數(shù)值=11時(shí)change_addr變?yōu)?,此時(shí)由于當(dāng)前的addr為0、pos_c為5(?。?),故通過(guò)在addr中加入set_c(=6),從而設(shè)定新的addr(=6)。因此,接下來(lái)從定序控制數(shù)據(jù)保持部222讀出的定序控制數(shù)據(jù)稱(chēng)為存儲(chǔ)在定序控制數(shù)據(jù)保持部222的地址6中的DFG組7。在change_addr=0時(shí),由于addr不會(huì)變更,故讀出相同的DFG組1的定序控制數(shù)據(jù)。圖38表示定序控制數(shù)據(jù)選擇部228中的動(dòng)作算法。
這樣,如上述DFG組1的例子所示,在以DFG組的前級(jí)的DFG生成分支控制數(shù)據(jù)c的情況下,由于在將剩下的DFG的設(shè)定數(shù)據(jù)供給到可重構(gòu)電路212的期間,可以生成決定下一DFG組的信號(hào)并作為set_c來(lái)保持,故在DFG組的變更時(shí)不會(huì)產(chǎn)生因選擇而導(dǎo)致的延遲。因此,不僅是DFG組內(nèi),即使在DFG組之間也可以沒(méi)有間斷地供給DFG,可以提高處理效率,可以削減消耗電力。另外,定序控制數(shù)據(jù)保持部222的控制數(shù)據(jù)不是以DFG為單位,而是通過(guò)使其以DFG組為單位來(lái)保持,從而可以削減定序控制數(shù)據(jù)數(shù),因此定序控制數(shù)據(jù)保持部222的存儲(chǔ)器容量變小,可削減電路規(guī)模。
接著,以圖33為例說(shuō)明具備這種定序裝置220的優(yōu)點(diǎn)。
例如,在DFG組4中,根據(jù)if語(yǔ)句的條件分支來(lái)處理DFG組5或DFG組6的其中之一的情況下,如果存在定序裝置220,則只要接收表示條件分支的方向的分支控制數(shù)據(jù)c,處理DFG組5或DFG組6的其中之一即可。在如以往的處理裝置那樣,定序裝置220不存在的情況下,則需要處理DFG組5與DFG組6雙方,根據(jù)if語(yǔ)句的條件分支的判斷結(jié)果來(lái)選擇該結(jié)果,處理時(shí)間變長(zhǎng)。本實(shí)施例的處理裝置200通過(guò)具備定序裝置220,從而可以提高處理速度,削減消耗電力。另外,在分支處理中,由于即使在if語(yǔ)句與else語(yǔ)句較大不同的情況下,也可以用相同大小的DFG做成具有與處理量對(duì)應(yīng)的DFG數(shù)的DFG組,順次執(zhí)行DFG,故可以削減不工作的電路部分,可以提高處理效率。
另外,例如在根據(jù)for語(yǔ)句的循環(huán)處理而多次調(diào)用DFG組3的情況下,本實(shí)施例的處理裝置200通過(guò)具備定序裝置220,從而接收表示for語(yǔ)句的循環(huán)判斷結(jié)果的條件分支的方向的分支控制數(shù)據(jù)c,繼續(xù)DFG組3的循環(huán)處理或退出循環(huán)處理而處理DFG組4。因此,在處理裝置200中,通過(guò)使設(shè)定數(shù)據(jù)保持部214只具有循環(huán)處理1次份的DFG組3的設(shè)定數(shù)據(jù),調(diào)用循環(huán)次數(shù)份的該數(shù)據(jù),從而可以實(shí)現(xiàn)循環(huán)處理。另一方面,在不存在定序裝置220的情況下,需要使設(shè)定數(shù)據(jù)保持部214具有全部循環(huán)次數(shù)份的設(shè)定數(shù)據(jù)并順次處理該數(shù)據(jù),從而設(shè)定數(shù)據(jù)的容量變大。本實(shí)施例的處理裝置200通過(guò)具備定序裝置220,從而可以減小設(shè)定數(shù)據(jù)保持部214的容量,可以削減電路規(guī)模。進(jìn)而,循環(huán)次序由循環(huán)內(nèi)的運(yùn)算結(jié)果來(lái)確定的、循環(huán)次數(shù)不定的循環(huán)處理,如果不具備定序裝置220,則事先確定處理順序是非常困難的,但如果有定序裝置,則使用作為循環(huán)內(nèi)的運(yùn)算結(jié)果的分支控制數(shù)據(jù)c,可以每次都進(jìn)行是否繼續(xù)進(jìn)行循環(huán)處理的判斷,也可以容易地實(shí)現(xiàn)循環(huán)次數(shù)不定的循環(huán)處理。
最后,對(duì)具備定序裝置220的電路與不具備的電路的實(shí)際規(guī)模進(jìn)行比較。在此,假設(shè)使用了MPEG-4的IDCT處理部的DFG的情況,將設(shè)定數(shù)據(jù)保持部214、定序控制數(shù)據(jù)保持部222都設(shè)為1端口RAM,作為1位=1.5個(gè)門(mén)電路(gate)進(jìn)行換算。在不具備定序裝置220的電路中,設(shè)定數(shù)據(jù)保持部214的門(mén)電路數(shù)為28.5萬(wàn)個(gè)門(mén)電路。與此相對(duì),在具備定序裝置220的電路中,定序裝置220的門(mén)電路數(shù)為0.5萬(wàn)個(gè)門(mén)電路,設(shè)定數(shù)據(jù)保持部214的門(mén)電路數(shù)為6.7萬(wàn)個(gè)門(mén)電路,定序控制數(shù)據(jù)保持部222的門(mén)電路數(shù)為0.03萬(wàn)個(gè)門(mén)電路,全部為7.2萬(wàn)個(gè)門(mén)電路。因此,具備了定序裝置220的電路與不具備的電路相比,可以將電路規(guī)模削減為0.25倍。特別是,在將處理裝置200作為便攜式終端裝置而存在的情況下,可以削減電路規(guī)模是非常重要的,另外,即使在不是便攜式的情況下,電路規(guī)模的削減也與消耗電力的削減有關(guān)系,能夠?qū)崿F(xiàn)有用性高的處理裝置200。
以上,對(duì)處理裝置的變形例進(jìn)行了說(shuō)明。在該變形例中,將分支控制數(shù)據(jù)c作為可重構(gòu)電路212的輸出而生成,但分支控制數(shù)據(jù)c也可以有外部裝置的狀態(tài)來(lái)決定。該情況下,從外部供給分支控制數(shù)據(jù)c。
應(yīng)該認(rèn)為這次所公開(kāi)的實(shí)施例在所有方面都只是例示,并不是限制性的內(nèi)容。本發(fā)明的范圍并不是由上述所說(shuō)明的內(nèi)容來(lái)表現(xiàn),而是由技術(shù)方案的范圍來(lái)表現(xiàn),意旨包括與技術(shù)方案的范圍均等的含義及范圍內(nèi)所有變更。
權(quán)利要求
1.一種數(shù)據(jù)流圖處理方法,其中對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理,其特征在于,具備將記述了所希望的運(yùn)算處理的程序分割為2個(gè)以上的子程序的分割步驟;將所述2個(gè)以上的子程序的每一個(gè)變換為表現(xiàn)算符的處理順序的依存關(guān)系的所述數(shù)據(jù)流圖的步驟。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)流圖處理方法,其特征在于,所述分割步驟根據(jù)所述程序的記述內(nèi)容來(lái)分割該程序。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)流圖處理方法,其特征在于,所述分割步驟檢測(cè)所述程序所包含的分支處理,將分支對(duì)象的處理的每一個(gè)作為所述子程序進(jìn)行提取。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)流圖處理方法,其特征在于,還具備判斷分支對(duì)象的處理量是否超過(guò)規(guī)定量的步驟;所述分割步驟在判斷為分支對(duì)象的處理量超過(guò)規(guī)定量的情況下,將分支對(duì)象的處理作為所述子程序進(jìn)行提取。
5.根據(jù)權(quán)利要求3所述的數(shù)據(jù)流圖處理方法,其特征在于,還具備判斷作為所述所希望的運(yùn)算處理、是否存在沒(méi)有被記述的命令部分的步驟;所述分割步驟在所述命令部分存在的情況下,將由該命令部分確定的范圍作為所述子程序進(jìn)行提取。
6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)流圖處理方法,其特征在于,還具備在所述程序中追加用于選擇條件分支中的分支對(duì)象的所述子程序所需的運(yùn)算處理的步驟。
7.一種可重構(gòu)電路,其特征在于,該電路根據(jù)從權(quán)利要求1所述的數(shù)據(jù)流圖處理方法的結(jié)果而得到的數(shù)據(jù)進(jìn)行動(dòng)作。
8.一種數(shù)據(jù)流圖處理方法,其中對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理,其特征在于,包括根據(jù)記述了所希望的運(yùn)算處理的程序所包含的條件分支,將該程序變換為2個(gè)以上的數(shù)據(jù)流圖的步驟。
9.一種可重構(gòu)電路,其特征在于,該電路根據(jù)從權(quán)利要求8所述的數(shù)據(jù)流圖處理方法的結(jié)果而得到的數(shù)據(jù)進(jìn)行動(dòng)作。
10.一種數(shù)據(jù)流圖處理方法,其中對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理,其特征在于,具備將記述了所希望的運(yùn)算處理的程序分割為2個(gè)以上的子程序的分割步驟;生成所述2個(gè)以上的子程序的每一個(gè)所對(duì)應(yīng)的、表現(xiàn)算符的處理順序的依存關(guān)系的所述數(shù)據(jù)流圖的生成步驟。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)流圖處理方法,其特征在于,所述生成步驟具有確認(rèn)所述數(shù)據(jù)流圖的連接關(guān)系的確認(rèn)步驟;和根據(jù)確認(rèn)結(jié)果,決定所述數(shù)據(jù)流圖之間的執(zhí)行順序的步驟。
12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)流圖處理方法,其特征在于,所述確認(rèn)步驟針對(duì)一個(gè)數(shù)據(jù)流圖來(lái)決定有接下來(lái)處理的可能性的全部數(shù)據(jù)流圖。
13.根據(jù)權(quán)利要求12所述的數(shù)據(jù)流圖處理方法,其特征在于,還具備在有接下來(lái)處理的可能性的所述數(shù)據(jù)流圖存在多個(gè)的情況下,在該數(shù)據(jù)流圖中附加分支條件的步驟。
14.一種可重構(gòu)電路,其特征在于,該電路根據(jù)從權(quán)利要求10所述的數(shù)據(jù)流圖處理方法的結(jié)果而得到的數(shù)據(jù)進(jìn)行動(dòng)作。
15.一種數(shù)據(jù)流圖處理方法,其中對(duì)能夠進(jìn)行功能變更的可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理,其特征在于,所述可重構(gòu)電路按照每個(gè)執(zhí)行步驟來(lái)順次執(zhí)行與所述功能對(duì)應(yīng)的處理,該方法具備根據(jù)使所希望的運(yùn)算處理執(zhí)行的程序中的特定的記述內(nèi)容,將該程序變換為表現(xiàn)算符的處理順序的依存關(guān)系的所述數(shù)據(jù)流圖的步驟;根據(jù)變換后的所述數(shù)據(jù)流圖所對(duì)應(yīng)的所述可重構(gòu)電路的所述執(zhí)行步驟數(shù),將所述程序分割為2個(gè)以上的子程序的分割步驟。
16.根據(jù)權(quán)利要求15所述的數(shù)據(jù)流圖處理方法,其特征在于,在所述分割步驟中,在變換后的所述數(shù)據(jù)流圖所對(duì)應(yīng)的所述可重構(gòu)電路的所述執(zhí)行步驟數(shù)超過(guò)基準(zhǔn)數(shù)的情況下,將所述程序分割為2個(gè)以上的子程序。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)流圖處理方法,其特征在于,所述基準(zhǔn)數(shù)根據(jù)所述可重構(gòu)電路的處理能力來(lái)設(shè)定。
18.根據(jù)權(quán)利要求15所述的數(shù)據(jù)流圖處理方法,其特征在于,所述特定的記述內(nèi)容在從一個(gè)運(yùn)算處理分支為其他多個(gè)運(yùn)算處理的情況下,包括表示用于使運(yùn)算處理移向該其他的多個(gè)運(yùn)算處理的其中一個(gè)的條件的記述內(nèi)容。
19.根據(jù)權(quán)利要求15所述的數(shù)據(jù)流圖處理方法,其特征在于,所述特定的記述內(nèi)容包括表示用于使相同的運(yùn)算處理反復(fù)執(zhí)行多次的條件的記述內(nèi)容。
20.一種可重構(gòu)電路,其特征在于,該電路根據(jù)從權(quán)利要求15所述的數(shù)據(jù)流圖處理方法的結(jié)果而得到的數(shù)據(jù)進(jìn)行動(dòng)作。
21.一種處理裝置,其特征在于,具備能夠進(jìn)行功能變更的可重構(gòu)電路;設(shè)定數(shù)據(jù)保持部,其保持用于在所述可重構(gòu)電路中構(gòu)成所希望的電路的設(shè)定數(shù)據(jù),并將所述設(shè)定數(shù)據(jù)供給到所述可重構(gòu)電路;和定序裝置,其選擇從所述設(shè)定數(shù)據(jù)保持部向所述可重構(gòu)電路供給的設(shè)定數(shù)據(jù)。
22.根據(jù)權(quán)利要求21所述的處理裝置,其特征在于,所述定序裝置具備設(shè)定數(shù)據(jù)選擇部,其向所述設(shè)定數(shù)據(jù)保持部供給選擇設(shè)定數(shù)據(jù)的第1選擇信號(hào);控制數(shù)據(jù)保持部,其保持用于使所述設(shè)定數(shù)據(jù)選擇部生成第1選擇信號(hào)的控制數(shù)據(jù),并將所述控制數(shù)據(jù)供給到所述設(shè)定數(shù)據(jù)選擇部。
23.根據(jù)權(quán)利要求21所述的處理裝置,其特征在于,所述設(shè)定數(shù)據(jù)保持部,將向所述可重構(gòu)電路供給的順序所確定的1個(gè)以上設(shè)定數(shù)據(jù)作為1個(gè)設(shè)定數(shù)據(jù)組,將多個(gè)設(shè)定數(shù)據(jù)以設(shè)定數(shù)據(jù)組為單位來(lái)保持。
24.根據(jù)權(quán)利要求23所述的處理裝置,其特征在于,所述設(shè)定數(shù)據(jù)保持部按照向可重構(gòu)電路供給的順序,將設(shè)定數(shù)據(jù)組中的1個(gè)以上的設(shè)定數(shù)據(jù)保持在連續(xù)地址的存儲(chǔ)區(qū)域中。
25.根據(jù)權(quán)利要求23所述的處理裝置,其特征在于,所述控制數(shù)據(jù)保持部具有選擇設(shè)定數(shù)據(jù)組的組選擇控制數(shù)據(jù)。
26.根據(jù)權(quán)利要求25所述的處理裝置,其特征在于,所述設(shè)定數(shù)據(jù)選擇部,以從所述控制數(shù)據(jù)保持部供給的組選擇控制數(shù)據(jù)為基礎(chǔ),生成第1選擇信號(hào)。
27.根據(jù)權(quán)利要求26所述的處理裝置,其特征在于,還具備生成選擇所述設(shè)定數(shù)據(jù)組內(nèi)的設(shè)定數(shù)據(jù)的組內(nèi)選擇控制數(shù)據(jù)的控制部;所述設(shè)定數(shù)據(jù)選擇部,以組選擇控制數(shù)據(jù)與組內(nèi)選擇控制數(shù)據(jù)為基礎(chǔ),生成第1選擇選擇信號(hào)。
28.根據(jù)權(quán)利要求27所述的處理裝置,其特征在于,所述控制部使用對(duì)輸出逐一增加的計(jì)數(shù)器來(lái)生成組內(nèi)選擇控制數(shù)據(jù)。
29.根據(jù)權(quán)利要求21所述的處理裝置,其特征在于,還具備以從所述可重構(gòu)電路輸出的分支控制數(shù)據(jù)為基礎(chǔ),向所述控制數(shù)據(jù)保持部供給選擇控制數(shù)據(jù)的第2選擇信號(hào)的控制數(shù)據(jù)選擇部。
30.根據(jù)權(quán)利要求29所述的處理裝置,其特征在于,所述控制數(shù)據(jù)保持部根據(jù)所述分支控制數(shù)據(jù),保持被所述控制數(shù)據(jù)選擇部選擇性讀出的控制數(shù)據(jù);所述控制數(shù)據(jù)選擇部,將讀出的控制數(shù)據(jù)為基礎(chǔ)來(lái)生成所述第2選擇信號(hào)。
31.根據(jù)權(quán)利要求29所述的處理裝置,其特征在于,具備控制部,其加入所述控制數(shù)據(jù)選擇部中的延遲時(shí)間,生成使所述第2選擇信號(hào)從所述控制數(shù)據(jù)選擇部向所述控制數(shù)據(jù)保持部供給的定時(shí)信號(hào);所述控制數(shù)據(jù)選擇部根據(jù)從所述控制部供給的定時(shí)信號(hào),將所述第2選擇信號(hào)供給到所述控制數(shù)據(jù)保持部。
32.根據(jù)權(quán)利要求22所述的處理裝置,其特征在于,所述設(shè)定數(shù)據(jù)保持部保持對(duì)可重構(gòu)電路中已構(gòu)成的所希望的電路的運(yùn)算結(jié)果沒(méi)有影響的設(shè)定數(shù)據(jù),在所述分支控制數(shù)據(jù)從可重構(gòu)電路輸出后,基于所述分支控制數(shù)據(jù)的設(shè)定數(shù)據(jù)組中的設(shè)定數(shù)據(jù)從所述設(shè)定數(shù)據(jù)保持部供給到可重構(gòu)電路為止的期間內(nèi),在將用于構(gòu)成所希望的電路的設(shè)定數(shù)據(jù)全部供給到可重構(gòu)電路的情況下,所述設(shè)定數(shù)據(jù)保持部將對(duì)運(yùn)算結(jié)果沒(méi)有影響的設(shè)定數(shù)據(jù)供給到可重構(gòu)電路。
全文摘要
本發(fā)明提供一種對(duì)可重構(gòu)電路的動(dòng)作設(shè)定所需的數(shù)據(jù)流圖進(jìn)行處理的技術(shù)。本發(fā)明的數(shù)據(jù)流圖處理方法,將記述了所希望的運(yùn)算處理的程序分割為2個(gè)以上的子程序(S16),將2個(gè)以上的子程序各自變換為表現(xiàn)算符的處理順序的依存關(guān)系的數(shù)據(jù)流圖(DFG)(S18)。同時(shí),生成表示子程序的每一個(gè)所對(duì)應(yīng)的DFG的處理順序的流數(shù)據(jù)(S22)。DFG被變換為設(shè)定數(shù)據(jù)(S20),流數(shù)據(jù)被變換為控制數(shù)據(jù)(S24)。
文檔編號(hào)G06F9/38GK1744093SQ200510095979
公開(kāi)日2006年3月8日 申請(qǐng)日期2005年8月29日 優(yōu)先權(quán)日2004年8月30日
發(fā)明者小曾根真, 中島洋, 平松達(dá)夫, 平瀨勝典, 岡田誠(chéng) 申請(qǐng)人:三洋電機(jī)株式會(huì)社