專利名稱:一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法
技術(shù)領(lǐng)域:
本申請涉及嵌入式系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法。
背景技術(shù):
動態(tài)可重構(gòu)處理器是一種新生的處理器構(gòu)架,其較之以往的單核處理器、專用芯片、現(xiàn)場可編程邏輯陣列有著顯著的優(yōu)勢,是未來電路結(jié)構(gòu)發(fā)展的一個方向。首先,動態(tài)可重構(gòu)處理器內(nèi)往往含有多個算數(shù)邏輯單元,且數(shù)量巨大,稱之為眾核陣列。陣列內(nèi)部配以靈活度高的路由單元,實(shí)現(xiàn)算數(shù)邏輯單元之間多樣化的互聯(lián)。因此,經(jīng)路由單元連接后的眾核陣列可實(shí)現(xiàn)對數(shù)據(jù)流的高速處理,較傳統(tǒng)的單核以及少核處理器在性能上有著巨大的優(yōu)勢。同時,較固化的專用電路在靈活性上也有著巨大的優(yōu)勢。其次,較傳統(tǒng)的靜態(tài)可重構(gòu)電路——現(xiàn)場可編程邏輯陣列而言,動態(tài)可重構(gòu)處理器有動態(tài)的特點(diǎn),即在電路運(yùn)行過程中可動態(tài)的切換電路的功能,而非以往靜態(tài)可重構(gòu)電路一成不變的不改變電路功能,只是在電路運(yùn)行之前燒寫電路功能,對電路進(jìn)行初始化。這樣做的好處在于通過時分復(fù)用的方式減少了電路的規(guī)模,原因在于之前的電路結(jié)構(gòu)的全映射現(xiàn)在變?yōu)榉謮K映射,而塊與塊之間恰好采取了動態(tài)切換的方式。動態(tài)可重構(gòu)處理器的核心一般為一個二維的可重構(gòu)算術(shù)邏輯單元(ALU)陣列,該結(jié)構(gòu)是并行計(jì)算以提高處理能力的基礎(chǔ)。同時,可重構(gòu)算術(shù)邏輯單元間必須擁有較為靈活的互聯(lián)結(jié)構(gòu)以保證運(yùn)算通用性,這種可配置的互聯(lián)結(jié)構(gòu)使得動態(tài)可重構(gòu)處理器可以改變數(shù)據(jù)流,實(shí)現(xiàn)了對數(shù)據(jù)流的高速并行處理,相對于傳統(tǒng)單核、少核處理器大大的提升了計(jì)算性能。可重構(gòu)計(jì)算將每個核的計(jì)算單元抽離出來組成陣列結(jié)構(gòu),再通過控制單元動態(tài)改變每個計(jì)算單元的功能來實(shí)現(xiàn)可重構(gòu)的數(shù)據(jù)通路,這種方式簡化了每個核心中取值、譯碼、執(zhí)行的過程,而且重構(gòu)后的計(jì)算陣列可以實(shí)現(xiàn)與專用電路相似的計(jì)算方式。這樣就需要高效的控制模塊來實(shí)現(xiàn)對可重構(gòu)計(jì)算陣列的動態(tài)配置,動態(tài)可重構(gòu)陣列的配置信息主要包括可重構(gòu)單元互聯(lián)信息、可重構(gòu)單元邏輯運(yùn)算信息以及陣列的粒度配置信息和時序配置信肩、ο動態(tài)可重構(gòu)陣列的時序配置信息主要指陣列數(shù)據(jù)流的控制信息,包括輸入次數(shù)、運(yùn)算的次數(shù)、輸出開始時間、輸出次數(shù)、陣列循環(huán)計(jì)算時的循環(huán)間隔以及循環(huán)的次數(shù)等信息。如果這些時序信息配置不合理,就會影響數(shù)據(jù)流的處理過程,降低運(yùn)算效率。例如,在循環(huán)運(yùn)算過程中,如果循環(huán)間隔過小,會出現(xiàn)數(shù)據(jù)污染,導(dǎo)致數(shù)據(jù)出錯;如果循環(huán)間隔過大,則會導(dǎo)致運(yùn)算時間增大,影響可重構(gòu)陣列的執(zhí)行效率。因此,生成合理的時序配置信息是非常有必要的。
發(fā)明內(nèi)容
本申請所要解決的技術(shù)問題是提供一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法,能夠根據(jù)可重構(gòu)陣列單元的運(yùn)算和互聯(lián)的信息,自動生成時序參數(shù)控制信息,以使可重構(gòu)陣列的數(shù)據(jù)通路能夠準(zhǔn)確、高效地處理數(shù)據(jù)流。為了解決上述問題,本申請公開了一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法,包括獲取可重構(gòu)陣列中每個可重構(gòu)單元的輸入信息和輸出信息;依據(jù)所述輸入信息和輸出信息生成可重構(gòu)陣列的連通圖;依據(jù)所述連通圖生成可重構(gòu)陣列的時序配置信息。優(yōu)選的,所述可重構(gòu)單元的輸入信息包括輸入數(shù)據(jù)的來源和輸入數(shù)據(jù)的地址。優(yōu)選的,所述輸入數(shù)據(jù)的來源是輸入數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元上一行的路由單元,或者是可重構(gòu)陣列中的常數(shù)寄存器。優(yōu)選的,所述可重構(gòu)單元的輸出信息包括輸出數(shù)據(jù)的目標(biāo)和輸出數(shù)據(jù)的地址。優(yōu)選的,所述輸出數(shù)據(jù)的目標(biāo)是輸出數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元下一行的路由單元。優(yōu)選的,所述依據(jù)輸入信息和輸出信息生成可重構(gòu)陣列的連通圖,包括依據(jù)所述輸出信息獲取可重構(gòu)陣列中輸出數(shù)據(jù)的目標(biāo)為輸出數(shù)據(jù)緩存器的可重構(gòu)單元,將所述可重構(gòu)單元作為連通圖的根節(jié)點(diǎn);從每個根節(jié)點(diǎn)出發(fā),依據(jù)所述輸入信息獲取與所述根節(jié)點(diǎn)相連的所有可重構(gòu)單元,將每個可重構(gòu)單元作為連通圖中的一個節(jié)點(diǎn);將可重構(gòu)陣列從輸入數(shù)據(jù)緩存器,或者是常數(shù)寄存器獲取的輸入數(shù)據(jù)作為連通圖的葉子節(jié)點(diǎn)。優(yōu)選的,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息包括獲取所有葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù);將所述取數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸入次數(shù)。優(yōu)選的,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括獲取所有根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);將所述存數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸出次數(shù)。優(yōu)選的,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括獲取從每個葉子節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑y(tǒng),每條路徑長度為c[y];計(jì)算每條路徑的輸出開始時間path[y],path[y] = in [ j]+c [y]-out [i]其中,in[j]為該條路徑中每個葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù),out[i]為該條路徑中的根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);計(jì)算可重構(gòu)陣列的輸出開始時間W,W = max (path [y]) -I其中,I為可重構(gòu)陣列的輸入次數(shù)。優(yōu)選的,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括計(jì)算可重構(gòu)陣列的循環(huán)間隔G,G = 0-I+ff-min (path [y])其中,0為可重構(gòu)陣列的輸出次數(shù),I為可重構(gòu)陣列的輸入次數(shù),W為可重構(gòu)陣列的輸出開始時間,path[y]為連通圖中每條路徑的輸出開始時間。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點(diǎn)本申請通過獲取可重構(gòu)陣列中每個可重構(gòu)單元的輸入信息和輸出信息,然后依據(jù)所述輸入信息和輸出信息生成可重構(gòu)陣列的連通圖,再依據(jù)所述連通圖生成可重構(gòu)陣列的時序配置信息。根據(jù)上述方法獲得的連通圖之間的數(shù)據(jù)沒有相關(guān)性,因此利用該連通圖生成的時序配置信息,即陣列的輸入次數(shù)、輸出次數(shù)、輸出開始時間和循環(huán)間隔更加準(zhǔn)確,從而避免在循環(huán)利用陣列計(jì)算數(shù)據(jù)時產(chǎn)生的數(shù)據(jù)污染問題,并且能夠提高可重構(gòu)陣列的運(yùn)算效率。
圖1是本申請一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法實(shí)施例的流程圖;圖2是一種4X4粗粒度動態(tài)可重構(gòu)陣列的結(jié)構(gòu)示意圖;圖3是動態(tài)可重構(gòu)陣列內(nèi)可重構(gòu)單元和路由單元的具體結(jié)構(gòu)示意圖;圖4是本申請一種動態(tài)可重構(gòu)陣列時序控制示意圖;圖5是動態(tài)可重構(gòu)陣列內(nèi)執(zhí)行的一個4X4的配置示意圖;圖6是利用本申請對圖5中的4X4的配置生成的連通圖。
具體實(shí)施例方式為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)一步詳細(xì)的說明。參照圖1,示出了本申請一種動態(tài)可重構(gòu)處理器陣列時序配置信息的生成方法實(shí)施例的流程圖,所述方法包括步驟S101,獲取可重構(gòu)陣列中每個可重構(gòu)單元的輸入信息和輸出信息;參照圖2,示出了一種4X4粗粒度動態(tài)可重構(gòu)陣列的結(jié)構(gòu)示意圖,其中包括輸入/輸出數(shù)據(jù)緩存器,用于緩存需要輸入可重構(gòu)單元進(jìn)行計(jì)算的數(shù)據(jù)以及經(jīng)過可重構(gòu)單元運(yùn)算的結(jié)果數(shù)據(jù);路由單元,用于數(shù)據(jù)路由,可鎖存數(shù)據(jù)送往下層,或者實(shí)現(xiàn)旁路連接,路由單元共有4層,均與輸入/輸出緩存器相連,可進(jìn)行數(shù)據(jù)的雙向交換;陣列單元是一個8/16bit運(yùn)算單元,用于對數(shù)據(jù)進(jìn)行算數(shù)或者邏輯運(yùn)算;配置信息緩沖器,用于完成對路由單元和可重構(gòu)單元的狀態(tài)配置,可存儲多層配直fe息;狀態(tài)控制器是狀態(tài)寄存和流程控制單元,可重構(gòu)陣列外部的主處理器可以從狀態(tài)控制器中的寄存器中讀取工作狀態(tài),切換工作和配置模式、控制運(yùn)算次數(shù)等信息;此外,可重構(gòu)陣列還包括輸入/輸出接口和中斷接口,用于實(shí)現(xiàn)數(shù)據(jù)的傳輸。當(dāng)然,本申請的可重構(gòu)陣列并不限于4X4粒度,其他任何一種粒度的可重構(gòu)陣列均可用于實(shí)現(xiàn)本申請。參照圖3,示出了動態(tài)可重構(gòu)陣列內(nèi)可重構(gòu)單元和路由單元的具體結(jié)構(gòu)示意圖,其中每個可重構(gòu)單元包括2個輸入多路選擇器、1個算術(shù)邏輯單元和1個輸出寄存器。每個輸入多路選擇器為可重構(gòu)單元選擇當(dāng)前運(yùn)算所需要的一個操作數(shù)。
算術(shù)邏輯單元,用于執(zhí)行所述操作數(shù)的算術(shù)或者邏輯運(yùn)算;輸出寄存器用于寄存當(dāng)前運(yùn)算的計(jì)算結(jié)果。動態(tài)可重構(gòu)陣列的配置信息主要包括可重構(gòu)單元的互聯(lián)信息,可重構(gòu)單元的運(yùn)算信息以及陣列的粒度配置信息和時序配置信息。(1)可重構(gòu)單元互聯(lián)信息,包括可重構(gòu)單元的輸入信息和輸出信息i)可重構(gòu)單元的輸入信息可重構(gòu)單元的輸入信息包括輸入數(shù)據(jù)的來源和輸入數(shù)據(jù)的地址,可以分別對輸入數(shù)據(jù)的來源和輸入數(shù)據(jù)的地址進(jìn)行編碼獲得可重構(gòu)單元輸入的配置信息。每個可重構(gòu)單元可以有多組輸入端口,而且每個端口也可以有多個數(shù)據(jù)來源,這里的數(shù)據(jù)來源可以是輸入數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元上一行的路由單元,或者是可重構(gòu)陣列中的常數(shù)寄存器。例如,圖3中的可重構(gòu)單元中共有2個輸入端口 1和2,而且每個輸入都會有三個數(shù)據(jù)來源,分別是輸入數(shù)據(jù)緩存器的數(shù)據(jù)、路由單元中鎖存的上一行數(shù)據(jù)以及陣列的常數(shù)寄存器獲得的常數(shù)。輸入的配置信息可以用2bit表示數(shù)據(jù)來源,再根據(jù)輸入/輸出緩存器取數(shù)單元的深度,路由單元中一行存數(shù)的個數(shù)等信息進(jìn)行編碼,對輸入的數(shù)據(jù)的地址進(jìn)行編碼。ii)可重構(gòu)單元輸出信息可重構(gòu)單元的輸出信息包括輸出數(shù)據(jù)的目標(biāo)和輸出數(shù)據(jù)的地址,可以分別對輸出數(shù)據(jù)的目標(biāo)和輸出數(shù)據(jù)的地址進(jìn)行編碼獲得可重構(gòu)單元輸出的配置信息。每個可重構(gòu)單元的輸出端口也可以有多個數(shù)據(jù)目標(biāo),所述輸出數(shù)據(jù)的目標(biāo)是輸出數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元下一行的路由單元。例如,圖3中可重構(gòu)單元有兩個輸出目標(biāo),分別是輸出數(shù)據(jù)緩存器以及下一行的路由單元。其中路由單元中的數(shù)據(jù)是默認(rèn)存取的,不需進(jìn)行編碼產(chǎn)生配置信息。而輸出數(shù)據(jù)緩存器中的數(shù)據(jù)需要進(jìn)行判斷是否輸出,并且需要輸出的地址信息。(2)可重構(gòu)單元的運(yùn)算信息可重構(gòu)單元選取的運(yùn)算方式,即可重構(gòu)單元的操作符。可重構(gòu)陣列中每一個單元都有獨(dú)立的計(jì)算資源,類似于通用處理器的算術(shù)邏輯單元。這部分的配置信息可以針對可重構(gòu)單元的輸入,經(jīng)過相應(yīng)的運(yùn)算產(chǎn)生結(jié)果。(3)粒度配置信息可重構(gòu)陣列根據(jù)可重構(gòu)單元的粒度,可分為粗粒度、細(xì)粒度和兩種粒度相結(jié)合的混合粒度。所謂粒度是指最小計(jì)算單元的大小,一般粗粒度的可重構(gòu)單元的可能有4bit、8bit,、16bit或者32bit等多種粒度,在不同的應(yīng)用場景下可以把陣列設(shè)計(jì)或配置成不同的粒度。(4)時序配置信息陣列的時序控制信息主要指陣列數(shù)據(jù)流的控制信息,包括輸入次數(shù)、輸出次數(shù)、輸出開始時間和循環(huán)間隔等信息。步驟S102,依據(jù)所述輸入信息和輸出信息生成可重構(gòu)陣列的連通圖,包括以下步驟步驟S1021,依據(jù)所述輸出信息獲取可重構(gòu)陣列中輸出數(shù)據(jù)的目標(biāo)為輸出數(shù)據(jù)緩存器的可重構(gòu)單元,將所述可重構(gòu)單元作為連通圖的根節(jié)點(diǎn);將根節(jié)點(diǎn)向輸出模塊(即輸出數(shù)據(jù)緩存器)存數(shù)的次數(shù)記為out[i],其中i是陣列中所有根節(jié)點(diǎn)的序號。步驟S1022,從每個根節(jié)點(diǎn)出發(fā),依據(jù)所述輸入信息獲取與所述根節(jié)點(diǎn)相連的所有可重構(gòu)單元,將每個可重構(gòu)單元作為連通圖中的一個節(jié)點(diǎn),直到找到一個沒有與上一行相連的節(jié)點(diǎn)為止。其中,所述可重構(gòu)單元的數(shù)據(jù)來源可以是輸入數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元上一行的路由單元,或者是可重構(gòu)陣列中的常數(shù)寄存器。步驟S1023,將可重構(gòu)陣列從輸入數(shù)據(jù)緩存器,或者是常數(shù)寄存器獲取的的輸入數(shù)據(jù)作為連通圖的葉子節(jié)點(diǎn)。將葉子節(jié)點(diǎn)從輸入模塊(即輸入數(shù)據(jù)緩存器或常數(shù)寄存器)取數(shù)的次數(shù)記做in[j],其中參數(shù)j是葉子節(jié)點(diǎn)的序號。這樣所有節(jié)點(diǎn)就構(gòu)成了可重構(gòu)陣列的連通圖。步驟S103,依據(jù)所述連通圖生成可重構(gòu)陣列的時序配置信息。通過上面這些連通圖的研究,就可以生成可重構(gòu)陣列需要的時序配置信息。在分析時序配置信息時,主要通過計(jì)算“圖”中的從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑長度的方法。(a)輸入次數(shù)I 循環(huán)一次的過程中,陣列從輸入模塊(即輸入數(shù)據(jù)緩存器或常數(shù)寄存器)中取數(shù)的次數(shù)。獲取所有葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù);將所述取數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸入次數(shù),即I = max (in[j])其中,in[j]為每個葉子節(jié)點(diǎn)從輸入模塊(即輸入數(shù)據(jù)緩存器或常數(shù)寄存器)取數(shù)的次數(shù)。(b)輸出次數(shù)0 循環(huán)一次過程中,陣列向輸出模塊(即輸出數(shù)據(jù)緩存器)存數(shù)的次數(shù)。獲取所有根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);將所述存數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸出次數(shù),即0 = max (out [i])其中,out[i]為每個根節(jié)點(diǎn)向輸出模塊(即輸出數(shù)據(jù)緩存器)存數(shù)的次數(shù)。(c)輸出開始時間W —次循環(huán)的過程中,最后一次輸入到開始輸出之間的時間間隔。獲取從每個葉子節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑y(tǒng),每條路徑長度為c[y],其中,y為路徑的標(biāo)號;計(jì)算每條路徑的輸出開始時間path[y],path[y] = in [ j]+c [y]-out [i]其中,in [j]為該條路徑中每個葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù),out[i]為該條路徑中的根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);計(jì)算可重構(gòu)陣列的輸出開始時間W,W = max (path [y]) -I其中,I為可重構(gòu)陣列的輸入次數(shù)。如果計(jì)算的W的結(jié)果小于0,則W = 0。(d)循環(huán)間隔G 在對陣列進(jìn)行多次循環(huán)運(yùn)算時,循環(huán)間隔為兩次循環(huán)中第一次循環(huán)中輸入結(jié)束到第二次循環(huán)中輸入開始之間的時間間隔。在運(yùn)算過程中,如果循環(huán)間隔過小,會出現(xiàn)數(shù)據(jù)污染,導(dǎo)致數(shù)據(jù)出錯,循環(huán)間隔過大,則會導(dǎo)致運(yùn)算時間增大,影響可重構(gòu)陣列的執(zhí)行效率。所以,循環(huán)間隔的計(jì)算結(jié)果G(Gap)是陣列時序控制信息的關(guān)鍵。通過上面的計(jì)算,我們可以得到輸入次數(shù)配置I (Input),輸出開始時間配置W(Wait),輸出次數(shù)配置0(Output),這些參數(shù)作為循環(huán)間隔計(jì)算的已知參數(shù),對每個連通圖從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑計(jì)算的值,用于計(jì)算輸入的循環(huán)間隔G(Gap)。由于連通圖之間沒有數(shù)據(jù)相關(guān),所以就不會產(chǎn)生數(shù)據(jù)污染問題,所以可以分別計(jì)算每個連通圖的輸入循環(huán)間隔,并把最大值作為陣列的循環(huán)間隔G(Gap)。參照圖4,示出了本申請一種動態(tài)可重構(gòu)陣列時序控制示意圖,由圖中可以看出,當(dāng)數(shù)據(jù)開始有效時,只要保證前一次輸出結(jié)束,就不會產(chǎn)生數(shù)據(jù)污染,所以應(yīng)滿足G+I+min(path[y]) ^ ff+0因此循環(huán)間隔G應(yīng)為G = 0-I+ff-min (path [y])在循環(huán)N次的情況下,陣列的運(yùn)算時間是T= (1+1) +W+ (0+1) + (N-I) X (G+I+1)對于同拍輸入,同拍輸出的情況,I = 0,0 = 0,路徑輸出開始時間in[j]+c[y]-out[i]都相同,此時G = 0。也就是說輸入連續(xù)進(jìn)行,實(shí)現(xiàn)高效的流水線結(jié)構(gòu)。在進(jìn)行算法映射時,遇到循環(huán)調(diào)用陣列配置信息的情況時,也應(yīng)盡量保證數(shù)據(jù)的路徑長度相同,輸入數(shù)據(jù)和輸出數(shù)據(jù)都分別在同一個周期內(nèi)完成,這樣可以利用流水線得到最優(yōu)的性能,此時的運(yùn)行時間是W+N+1。參照圖5,示出了動態(tài)可重構(gòu)陣列內(nèi)執(zhí)行的一個4X4的配置示意圖,首先根據(jù)可重構(gòu)單元的輸入信息和輸出信息生成該配置的連通圖,如圖6所示,連通圖包括2個根節(jié)點(diǎn)outO和outl,以及4個葉子節(jié)點(diǎn)in0-in3。每個葉子節(jié)點(diǎn)從輸入模塊取數(shù)的次數(shù)為in
= 0in[l] = 1in [2] = 0in[3] = 1每個根節(jié)點(diǎn)向輸出模塊存數(shù)的次數(shù)為out
= 0out[l] = 1因此,可重構(gòu)陣列的輸入次數(shù)為I = 1可重構(gòu)陣列的輸入次數(shù)為0 = 1對于根節(jié)點(diǎn)outO,有3個葉子節(jié)點(diǎn)in0,inl,in2與其相連,其中,每個葉子節(jié)點(diǎn)到根節(jié)點(diǎn)outO的路徑長度為c
=3
c[l] = 3c[2] =2因此,每個路徑的輸出開始時間為path
= 3path[l] = 4path [2] = 2對于根節(jié)點(diǎn)outl,有4個葉子節(jié)點(diǎn)in0,inl,in2,in3與其相連,其中,每個葉子節(jié)點(diǎn)到根節(jié)點(diǎn)outO的路徑長度為c
=3c[l] = 3c[2] = 2c[3] = 2因此,每個路徑的輸出開始時間為path
= 2path[l] = 3path [2] = 1path [3] = 2因此,陣列的輸出開始時間為W = max (path [y] )-1 = 3陣列的循環(huán)間隔為G = 0-I+ff-min(path[y]) = 2即輸出在輸入結(jié)束后3拍后開始,兩次輸入之間的間隔至少是2。以上對本申請所提供的一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
權(quán)利要求
1.一種動態(tài)可重構(gòu)陣列時序配置信息的生成方法,其特征在于,包括獲取可重構(gòu)陣列中每個可重構(gòu)單元的輸入信息和輸出信息;依據(jù)所述輸入信息和輸出信息生成可重構(gòu)陣列的連通圖;依據(jù)所述連通圖生成可重構(gòu)陣列的時序配置信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述可重構(gòu)單元的輸入信息包括輸入數(shù)據(jù)的來源和輸入數(shù)據(jù)的地址。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述輸入數(shù)據(jù)的來源是輸入數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元上一行的路由單元,或者是可重構(gòu)陣列中的常數(shù)寄存器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述可重構(gòu)單元的輸出信息包括輸出數(shù)據(jù)的目標(biāo)和輸出數(shù)據(jù)的地址。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述輸出數(shù)據(jù)的目標(biāo)是輸出數(shù)據(jù)緩存器,或者是當(dāng)前可重構(gòu)單元下一行的路由單元。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述依據(jù)輸入信息和輸出信息生成可重構(gòu)陣列的連通圖,包括依據(jù)所述輸出信息獲取可重構(gòu)陣列中輸出數(shù)據(jù)的目標(biāo)為輸出數(shù)據(jù)緩存器的可重構(gòu)單元,將所述可重構(gòu)單元作為連通圖的根節(jié)點(diǎn);從每個根節(jié)點(diǎn)出發(fā),依據(jù)所述輸入信息獲取與所述根節(jié)點(diǎn)相連的所有可重構(gòu)單元,將每個可重構(gòu)單元作為連通圖中的一個節(jié)點(diǎn);將可重構(gòu)陣列從輸入數(shù)據(jù)緩存器,或者是常數(shù)寄存器獲取的輸入數(shù)據(jù)作為連通圖的葉子節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息包括獲取所有葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù);將所述取數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸入次數(shù)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括獲取所有根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);將所述存數(shù)次數(shù)的最大值作為可重構(gòu)陣列的輸出次數(shù)。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括獲取從每個葉子節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑y(tǒng),每條路徑長度為c[y];計(jì)算每條路徑的輸出開始時間path[y],path[y] = in[j]+c[y]-out[i]其中,in [j]為該條路徑中每個葉子節(jié)點(diǎn)從輸入數(shù)據(jù)緩存器,或者常數(shù)寄存器中取數(shù)的次數(shù),out[i]為該條路徑中的根節(jié)點(diǎn)向輸出數(shù)據(jù)緩存器中存數(shù)的次數(shù);計(jì)算可重構(gòu)陣列的輸出開始時間W,W = max(path[y])-I其中,I為可重構(gòu)陣列的輸入次數(shù)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述依據(jù)連通圖生成可重構(gòu)陣列的時序配置信息還包括計(jì)算可重構(gòu)陣列的循環(huán)間隔G,G = 0-I+ff-min(path[y])其中,0為可重構(gòu)陣列的輸出次數(shù),I為可重構(gòu)陣列的輸入次數(shù),W為可重構(gòu)陣列的輸出開始時間,path[y]為連通圖中每條路徑的輸出開始時間。
全文摘要
本申請?zhí)峁┝艘环N動態(tài)可重構(gòu)陣列時序配置信息的生成方法,包括獲取可重構(gòu)陣列中每個可重構(gòu)單元的輸入信息和輸出信息;依據(jù)所述輸入信息和輸出信息生成可重構(gòu)陣列的連通圖;依據(jù)所述連通圖生成可重構(gòu)陣列的時序配置信息。根據(jù)上述方法獲得的連通圖之間的數(shù)據(jù)沒有相關(guān)性,因此利用該連通圖生成的時序配置信息,即陣列的輸入次數(shù)、輸出次數(shù)、輸出開始時間和循環(huán)間隔更加準(zhǔn)確,從而避免在循環(huán)利用陣列計(jì)算數(shù)據(jù)時產(chǎn)生的數(shù)據(jù)污染問題,并且能夠提高可重構(gòu)陣列的運(yùn)算效率。
文檔編號G06F15/177GK102567279SQ20111043616
公開日2012年7月11日 申請日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者劉雷波, 尹首一, 時龍興, 曹鵬, 朱敏, 楊軍, 王延升, 王星, 魏少軍 申請人:清華大學(xué)