用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置制造方法
【專利摘要】本發(fā)明公開了一種用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置及處理器配置裝置,其中動態(tài)可重構(gòu)處理器由處理單元陣列構(gòu)成,處理單元陣列包括多個處理單元,該方法包括:讀取待執(zhí)行任務(wù)的信息,并根據(jù)信息生成處理單元陣列的陣列配置信息頂層;根據(jù)信息分別生成與多個處理單元對應(yīng)的多個處理單元配置信息;以及將陣列配置信息頂層和多個處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息。根據(jù)本發(fā)明實(shí)施例的方法由于每個處理單元都有自己獨(dú)立的配置信息,因此在對陣列進(jìn)行配置時,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,這樣避免了處理單元重復(fù)配置,實(shí)現(xiàn)了部分配置和選擇性配置,提高配置的靈活性。
【專利說明】用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及處理器【技術(shù)領(lǐng)域】,尤其涉及一種用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置及處理器配置裝置。
【背景技術(shù)】
[0002]動態(tài)可重構(gòu)處理器是一種新生的處理器構(gòu)架,其較之以往的單核處理器、專用芯片、現(xiàn)場可編程邏輯陣列有著顯著的優(yōu)勢,是未來電路結(jié)構(gòu)發(fā)展的一個方向。
[0003]首先,動態(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)勢。
[0004]其次,較傳統(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)切換的方式。
[0005]然而,目前動態(tài)可重構(gòu)處理器的動態(tài)切換設(shè)計中至少存在以下問題:
[0006]I)配置技術(shù)中往往存在配置信息量大的問題,這將導(dǎo)致相應(yīng)的配置時間的延長,以及對配置存儲器容量需求的增加;
[0007]2)由于動態(tài)可重構(gòu)處理器中頻繁的對配置信息進(jìn)行切換,勢必將造成配置功耗的增加;
[0008]3)在對可重構(gòu)處理器陣列進(jìn)行配置時,只要其中一個處理單元的功能發(fā)生變化,那么整個陣列都將需要重新進(jìn)行配置,不能對單個處理單元進(jìn)行配置切換而其他處理單元配置保持不變,這就進(jìn)行了大量的重復(fù)、盲目配置。
【發(fā)明內(nèi)容】
[0009]本發(fā)明旨在至少在一定程度上解決上述的技術(shù)缺陷之一。
[0010]為此,本發(fā)明的第一個目的在于提出一種用于生成動態(tài)可重構(gòu)處理器的配置信息的方法。該方法只需對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,這樣避免了處理單元重復(fù)配置,實(shí)現(xiàn)了部分配置和選擇性配置,提高配置的靈活性。
[0011]本發(fā)明的第二個目的在于提出一種用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置。
[0012]本發(fā)明的第三個目的在于提出一種處理器配置裝置。
[0013]為了實(shí)現(xiàn)上述目的,本發(fā)明第一方面實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法,所述動態(tài)可重構(gòu)處理器由處理單元陣列構(gòu)成,所述處理單元陣列包括多個處理單元,所述方法包括:S1、讀取待執(zhí)行任務(wù)的信息,并根據(jù)所述信息生成所述處理單元陣列的陣列配置信息頂層;S2、根據(jù)所述信息分別生成與所述多個處理單元對應(yīng)的多個處理單元配置信息;以及S3、將所述陣列配置信息頂層和所述多個處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息。
[0014]根據(jù)本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法,可讀取待執(zhí)行任務(wù)的信息,并根據(jù)該信息生成陣列配置信息頂層和每個處理單元對應(yīng)的處理單元配置信息,之后可將陣列配置信息頂層和每個處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3)訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0015]為了實(shí)現(xiàn)上述目的,本發(fā)明第二方面實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置,所述動態(tài)可重構(gòu)處理器由處理單元陣列構(gòu)成,所述處理單元陣列包括多個處理單元,所述裝置包括:待執(zhí)行任務(wù)存儲模塊,用于存儲待執(zhí)行任務(wù)的信息;讀取模塊,用于讀取所述待執(zhí)行任務(wù)的信息;第一生成模塊,用于根據(jù)所述信息生成所述處理單元陣列的陣列配置信息頂層;第二生成模塊,用于根據(jù)所述信息分別生成與所述多個處理單元對應(yīng)的多個處理單元配置信息;以及裝配模塊,用于將所述陣列配置信息頂層和所述多個處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息。
[0016]根據(jù)本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置,可通過第一生成模塊根據(jù)讀取的待執(zhí)行任務(wù)的信息生成陣列配置信息頂層,第二生成模塊根據(jù)該信息分別生成與每個處理單元對應(yīng)的處理單元配置信息,裝配模塊將陣列配置信息頂層和每個處理單元的處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3 )訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0017]為了實(shí)現(xiàn)上述目的,本發(fā)明第三方面實(shí)施例的處理器配置裝置,包括:第一配置模塊,用于讀取配置信息中的陣列配置信息頂層,并將所述陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元陣列;第二配置模塊,用于讀取所述配置信息中的多個處理單元配置信息,并將所述多個處理單元配置信息分別配置至對應(yīng)的處理單元,其中,每個處理單元配置信息包括處理單元配置信息頂層和多個算子配置信息;以及配置控制模塊,用于根據(jù)運(yùn)行參數(shù)控制所述第一配置模塊讀取所述陣列配置信息頂層,且根據(jù)所述運(yùn)行參數(shù)控制所述第二配置模塊讀取所述多個處理單元配置信息。
[0018]根據(jù)本發(fā)明實(shí)施例的處理器配置裝置,可通過第一配置模塊讀取陣列配置信息頂層,并將該陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元,第二配置模塊讀取多個處理單元配置信息,并將該多個處理單元配置信息分別配置至對應(yīng)的處理單元,配置控制模塊根據(jù)運(yùn)行參數(shù)控制第一配置模塊讀取陣列配置信息頂層,且根據(jù)該運(yùn)行參數(shù)控制第二配置模塊讀取多個處理單元配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3)訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0019]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說明】
[0020]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中,
[0021]圖1是基于模調(diào)度算法的兩種配置信息組織結(jié)構(gòu)的示意圖;
[0022]圖2是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法的流程圖;
[0023]圖3是根據(jù)本發(fā)明一個具體實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法的流程圖;
[0024]圖4是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置的結(jié)構(gòu)不意圖;
[0025]圖5是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置的不意圖;
[0026]圖6是根據(jù)本發(fā)明實(shí)施例的三維配置信息中各具體配置信息的內(nèi)容的示意圖;
[0027]圖7是根據(jù)本發(fā)明一個實(shí)施例的處理器配置裝置的結(jié)構(gòu)示意圖;
[0028]圖8是根據(jù)本發(fā)明一個實(shí)施例的配置控制模塊中運(yùn)行參數(shù)之間的關(guān)系示意圖;
[0029]圖9是根據(jù)本發(fā)明一個實(shí)施例的每個機(jī)器周期可重構(gòu)處理單元功能的示意圖;以及
[0030]圖10是根據(jù)本發(fā)明一個具體實(shí)施例的三維配置信息中各具體配置信息的內(nèi)容的示意圖。
【具體實(shí)施方式】
[0031]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0032]目前,在模調(diào)度算法的基礎(chǔ)上,動態(tài)可重構(gòu)處理器中的處理單元陣列的配置信息應(yīng)體現(xiàn)出模調(diào)度算法結(jié)果所涵蓋的信息。如圖1左圖所示,該圖展示了如何將模調(diào)度算法在四個處理單元(PE1、PE2、PE3及PE4)上進(jìn)行映射的示例。從橫向的角度觀察,模調(diào)度算法的結(jié)果為處理單元陣列在每個機(jī)器周期所對應(yīng)的一系列操作。因此,可直觀想到的動態(tài)可重構(gòu)處理器的配置信息的組織結(jié)構(gòu)如圖1右上圖所示,其中以處理單元陣列為單位,描述處理單元陣列在每個機(jī)器周期所執(zhí)行的操作。
[0033]如圖1左圖所示,從縱向的角度觀察,模調(diào)度算法的結(jié)果可以理解為處理單元陣列內(nèi)的各個處理單元在每個機(jī)器周期所對應(yīng)的操作。因此,如圖1的右下圖所示,第二種動態(tài)可重構(gòu)處理器的配置信息的組織結(jié)構(gòu)中以處理單元為單位,描述每個處理單元在每個機(jī)器周期所完成的操作。這兩種配置信息的組織結(jié)構(gòu)在邏輯上是想等價的,只是各自的出發(fā)點(diǎn)不同,一種是從處理單元陣列的總體的角度去描述配置信息,而另一種則是從底層的處理單元的角度去描述配置信息。如圖1左圖所示,單個處理單元在運(yùn)行時往往會出現(xiàn)在連續(xù)的機(jī)器周期執(zhí)行相同操作的情況(如運(yùn)行循環(huán)體),這就為配置信息的壓縮提供了可行性。
[0034]為此,本發(fā)明提出了一種用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置及處理器配置裝置。下面參考附圖描述根據(jù)本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置及處理器配置裝置。
[0035]圖2是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法的流程圖。
[0036]需要說明的是,在本發(fā)明的實(shí)施例中,動態(tài)可重構(gòu)處理器可由處理單元陣列構(gòu)成,處理單元陣列可包括多個處理單元。此外,在本發(fā)明的一個實(shí)施例中,多個可理解為兩個或兩個以上。如圖2所示,該用于生成動態(tài)可重構(gòu)處理器的配置信息的方法可以包括:
[0037]S201,讀取待執(zhí)行任務(wù)的信息,并根據(jù)信息生成處理單元陣列的陣列配置信息頂層。
[0038]具體而言,可先讀取待執(zhí)行任務(wù)的信息,之后可從該待執(zhí)行任務(wù)的信息中提取待執(zhí)行任務(wù)的計算粒度和循環(huán)迭代次數(shù),以生成陣列配置信息頂層。其中,在本發(fā)明的實(shí)施例中,計算粒度和循環(huán)迭代次數(shù)可構(gòu)成陣列配置信息頂層,計算粒度可對應(yīng)于處理單元內(nèi)的ALU (Arithmetic Logic Unit,算術(shù)邏輯單元)的計算粒度,循環(huán)迭代次數(shù)可為處理單元陣列處理循環(huán)時的循環(huán)體(即待執(zhí)行任務(wù))的迭代次數(shù)。需要說明的是,在本發(fā)明的實(shí)施例中,當(dāng)待執(zhí)行任務(wù)不是循環(huán)任務(wù)時,從該待執(zhí)行任務(wù)的信息中提取的循環(huán)迭代次數(shù)可為0,即循環(huán)體的迭代次數(shù)為I,此時為循環(huán)的特例,不產(chǎn)生迭代。
[0039]S202,根據(jù)信息分別生成與多個處理單元對應(yīng)的多個處理單元配置信息。
[0040]需要說明的是,在本發(fā)明的實(shí)施例中,對于多個處理單元,每個處理單元的處理單元配置信息的生成方法均相同。
[0041]具體而言,可根據(jù)讀取出的待執(zhí)行任務(wù)的信息確定映射到每個處理單元上的執(zhí)行指令,并根據(jù)該執(zhí)行指令生成與每個處理單元對應(yīng)的處理單元配置信息。其中,在本發(fā)明的一個實(shí)施例中,處理單元配置信息可包括處理單元配置信息頂層和多個算子配置信息,其中處理單元配置信息頂層可包括開始機(jī)器周期數(shù)、算子個數(shù)和配置變化選擇等。
[0042]需要說明的是,在本發(fā)明的實(shí)施例中,開始機(jī)器周期可指每個處理單元在哪個機(jī)器周期開始計算;算子個數(shù)可為每個處理單元配置信息中包含的算子配置信息的個數(shù);配置變化選擇對應(yīng)于處理單元配置信息變化時,可在改變互聯(lián)的配置信息還是改變ALU操作碼的配置信息之間做選擇。
[0043]應(yīng)當(dāng)理解,在本發(fā)明的一個實(shí)施例中,多個算子配置信息的個數(shù)與算子個數(shù)相同,且每個算子具有對應(yīng)的算子配置信息。其中,在本發(fā)明的實(shí)施例中,每個算子配置信息均可包括輸入、ALU操作碼、連續(xù)運(yùn)行周期數(shù)、間隔周期數(shù)和存儲器寫訪問等。
[0044]需要說明的是,在本發(fā)明的實(shí)施例中,輸入可用于指示輸入來自Router (陣列內(nèi)互聯(lián))或存儲器讀訪問以及其地址;ALU操作碼可表示作用于可重構(gòu)處理單元的各種ALU操作;連續(xù)運(yùn)行周期數(shù)可表示當(dāng)前的算子配置信息連續(xù)運(yùn)行的機(jī)器周期數(shù);間隔周期數(shù)可表示兩個相鄰的算子之間的空閑機(jī)器周期數(shù);存儲器寫訪問可表示存儲器是否能寫訪問以及存儲器寫地址。
[0045]還需要說明的是,在本發(fā)明的實(shí)施例中,通過采用連續(xù)運(yùn)行周期數(shù)將映射在當(dāng)前處理單元上的一系列順序的計算中相鄰且相同的計算,只通過一個算子配置信息來表達(dá),起到了壓縮配置信息動態(tài)切換量的作用。
[0046]S203,將陣列配置信息頂層和多個處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息。
[0047]具體而言,可按照預(yù)設(shè)順序?qū)㈥嚵信渲眯畔㈨攲雍兔總€處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息。可以理解,每一個陣列配置信息頂層對應(yīng)多個處理單元配置信息,且所組裝的配置信息不可不進(jìn)行任何數(shù)據(jù)壓縮。
[0048]根據(jù)本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法,可讀取待執(zhí)行任務(wù)的信息,并根據(jù)該信息生成陣列配置信息頂層和每個處理單元對應(yīng)的處理單元配置信息,之后可將陣列配置信息頂層和每個處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3)訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0049]下面將舉例說明本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法的流程。
[0050]舉例而言,如圖3所示,首先,可讀取待執(zhí)行任務(wù)的信息,并根據(jù)該信息生成處理單元陣列的陣列配置信息頂層(步驟1),其中,該步驟I可包括:生成計算粒度(步驟1.1);以及生成循環(huán)迭代次數(shù)(步驟1.2)。之后,可根據(jù)待執(zhí)行任務(wù)的信息分別生成與多個處理單元對應(yīng)的多個處理單元配置信息,這里個處理單元配置信息的個數(shù)對應(yīng)于陣列中處理單元的個數(shù),假設(shè)個數(shù)為η (步驟2)。其中,該步驟2可包括:生成第I個處理單元的處理單元配置信息(步驟2.1),該步驟2.1可包括生成該處理單元的處理單元配置信息頂層(步驟2.1.1)、生成該處理單元的多個算子配置信息(步驟2.1.2)。
[0051]其中,該步驟2.1.1可包括:生成開始機(jī)器周期數(shù)(步驟2.1.1.1)、生成算子個數(shù)(步驟2.1.1.2)以及生成配置變化選擇(步驟2.1.1.3)。此外,步驟2.1.2可包括:生成該處理單元的第I個算子配置信息(步驟2.1.2.1),步驟2.1.2.1可包括:生成輸入信息(步驟2.1.2.1.1)、生成ALU操作碼信息(步驟2.1.2.1.2)、生成連續(xù)運(yùn)行周期數(shù)信息(步驟2.1.2.1.3)、生成間隔周期數(shù)信息(步驟2.1.2.1.4)以及生成存儲器寫訪問信息(步驟
2.1.2.1.5)。
[0052]如圖3所示,步驟2.1.2.2?步驟2.1.2.m:生成該處理單元的其余算子配置信息,其中m為算子配置信息的個數(shù),方法可參照步驟2.1.2.1。步驟2.2?步驟2.η:生成其余的處理單元的處理單元配置信息,其中η為處理單元個數(shù),方法可參照步驟2.1。最后,將陣列配置信息頂層和所有處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息(步驟3 )。
[0053]為了實(shí)現(xiàn)本發(fā)明實(shí)施例的方法,本發(fā)明的實(shí)施例還提出一種用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置。
[0054]圖4是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置的結(jié)構(gòu)示意圖。
[0055]需要說明的是,在本發(fā)明的實(shí)施例中,動態(tài)可重構(gòu)處理器可由處理單元陣列構(gòu)成,該處理單元陣列可包括多個處理單元。具體地,如圖4所示,該用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置可以包括:待執(zhí)行任務(wù)存儲模塊110、讀取模塊120、第一生成模塊130、第二生成模塊140和裝配模塊150。
[0056]具體地,待執(zhí)行任務(wù)存儲模塊110可用于存儲待執(zhí)行任務(wù)的信息。其中,在本發(fā)明的實(shí)施例中,待執(zhí)行任務(wù)為經(jīng)過模調(diào)度算法處理后的任務(wù),即編譯后的宏指令。
[0057]讀取模塊120可用于讀取待執(zhí)行任務(wù)的信息。第一生成模塊130可用于根據(jù)信息生成處理單元陣列的陣列配置信息頂層。
[0058]具體而言,第一生成模塊130可從待執(zhí)行任務(wù)的信息中提取待執(zhí)行任務(wù)的計算粒度和循環(huán)迭代次數(shù)。其中,在本發(fā)明的實(shí)施例中,計算粒度和循環(huán)迭代次數(shù)可構(gòu)成陣列配置信息頂層,計算粒度可對應(yīng)于處理單元內(nèi)的ALU的計算粒度,循環(huán)迭代次數(shù)可為處理單元陣列處理循環(huán)時的循環(huán)體(即待執(zhí)行任務(wù))的迭代次數(shù)。需要說明的是,在本發(fā)明的實(shí)施例中,當(dāng)待執(zhí)行任務(wù)不是循環(huán)任務(wù)時,第一生成模塊130從該待執(zhí)行任務(wù)的信息中提取的循環(huán)迭代次數(shù)可為0,即循環(huán)體的迭代次數(shù)為1,此時為循環(huán)的特例,不產(chǎn)生迭代。
[0059]第二生成模塊140可用于根據(jù)信息分別生成與多個處理單元對應(yīng)的多個處理單元配置信息。需要說明的是,在本發(fā)明的實(shí)施例中,對于多個處理單元,每個處理單元的處理單元配置信息的生成實(shí)現(xiàn)的過程均相同。
[0060]具體而言,第二生成模塊140可根據(jù)待執(zhí)行任務(wù)的信息確定映射到每個處理單元上的執(zhí)行指令,并可根據(jù)該執(zhí)行指令生成處理單元對應(yīng)的處理單元配置信息。其中,在本發(fā)明的一個實(shí)施例中,處理單元配置信息可包括處理單元配置信息頂層和多個算子配置信息,其中處理單元配置信息頂層可包括開始機(jī)器周期數(shù)、算子個數(shù)和配置變化選擇等。
[0061]需要說明的是,在本發(fā)明的實(shí)施例中,開始機(jī)器周期可指每個處理單元在哪個機(jī)器周期開始計算;算子個數(shù)可為每個處理單元配置信息中包含的算子配置信息的個數(shù);配置變化選擇對應(yīng)于處理單元配置信息變化時,可在改變互聯(lián)的配置信息還是改變ALU操作碼的配置信息之間做選擇。
[0062]應(yīng)當(dāng)理解,在本發(fā)明的一個實(shí)施例中,多個算子配置信息的個數(shù)與算子個數(shù)相同,且每個算子具有對應(yīng)的算子配置信息。其中,在本發(fā)明的實(shí)施例中,每個算子配置信息均可包括輸入、ALU操作碼、連續(xù)運(yùn)行周期數(shù)、間隔周期數(shù)和存儲器寫訪問等。
[0063]需要說明的是,在本發(fā)明的實(shí)施例中,輸入可用于指示輸入來自Router (陣列內(nèi)互聯(lián))或存儲器讀訪問以及其地址;ALU操作碼可表示作用于可重構(gòu)處理單元的各種ALU操作;連續(xù)運(yùn)行周期數(shù)可表示當(dāng)前的算子配置信息連續(xù)運(yùn)行的機(jī)器周期數(shù);間隔周期數(shù)可表示兩個相鄰的算子之間的空閑機(jī)器周期數(shù);存儲器寫訪問可表示存儲器是否能寫訪問以及存儲器寫地址。
[0064]還需要說明的是,在本發(fā)明的實(shí)施例中,通過采用連續(xù)運(yùn)行周期數(shù)將映射在當(dāng)前處理單元上的一系列順序的計算中相鄰且相同的計算,只通過一個算子配置信息來表達(dá),起到了壓縮配置信息動態(tài)切換量的作用。 [0065]裝配模塊150可用于將陣列配置信息頂層和多個處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息。更具體地,裝配模塊150可按照預(yù)設(shè)順序?qū)㈥嚵信渲眯畔㈨攲雍兔總€處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息。可以理解,每一個陣列配置信息頂層對應(yīng)多個處理單元配置信息,且所組裝的配置信息不可不進(jìn)行任何數(shù)據(jù)壓縮。
[0066]進(jìn)一步地,在本發(fā)明的一個實(shí)施例中,如圖4所示,該用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置還可以包括配置存儲模塊160,配置存儲模塊160可用于存儲裝配模塊150生成的配置信息。
[0067]圖5是根據(jù)本發(fā)明一個實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置的示意圖。舉例而言,如圖5所示,第一生成模塊130根據(jù)從待執(zhí)行任務(wù)存儲模塊110中存儲的待執(zhí)行任務(wù)的信息,生成處理單元陣列的陣列配置信息頂層,其中,待執(zhí)行任務(wù)存儲模塊110可由只讀存儲器ROM構(gòu)成。如圖5所示,第二生成模塊140可包括生成單元141、生成單元142、…、生成單元14η,η可對應(yīng)于處理單元的個數(shù),且生成單元141、生成單元142、...、生成單元14η的功能均相同。現(xiàn)以生成單元141為例,讀取模塊120讀取待執(zhí)行任務(wù)存儲模塊110中存儲的待執(zhí)行任務(wù)的信息,生成單元141可根據(jù)該信息確定映射到第一個處理單元上的執(zhí)行指令,并根據(jù)該執(zhí)行指令生成第一個處理單元的處理單元配置信息。
[0068]如圖5所示,生成單元142、…、生成單元14η與生成單元141具有相同的結(jié)構(gòu),可以同時并行地為其余(η-1)個處理單元生成對應(yīng)的處理單元配置信息。裝配模塊150可將第一生成模塊130生成的陣列配置信息頂層、生成單元141、生成單元142、…、生成單元14η對應(yīng)生成的處理單元配置信息裝配在一起,每一個陣列配置信息頂層對應(yīng)N個處理單元配置信息,配置存儲模塊160存儲裝配模塊150生成的配置信息。
[0069]根據(jù)本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置,可通過第一生成模塊根據(jù)讀取的待執(zhí)行任務(wù)的信息生成陣列配置信息頂層,第二生成模塊根據(jù)該信息分別生成與每個處理單元對應(yīng)的處理單元配置信息,裝配模塊將陣列配置信息頂層和每個處理單元的處理單元配置信息進(jìn)行裝配以生成動態(tài)可重構(gòu)處理器的配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3)訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0070]應(yīng)當(dāng)理解,在本發(fā)明的一個實(shí)施例中,動態(tài)可重構(gòu)處理器的配置信息可理解為三維配置信息,即包括陣列配置信息頂層、處理單元配置信息頂層、算子配置信息。如圖6所示,為三維配置信息中各具體配置信息的內(nèi)容,基于可重構(gòu)處理器系統(tǒng)的特點(diǎn),配置信息的單位可為Word (即32bits)。
[0071 ] 為了實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例還提出一種處理器配置裝置。
[0072]圖7是根據(jù)本發(fā)明一個實(shí)施例的處理器配置裝置的結(jié)構(gòu)示意圖。如圖7所示,該處理器配置裝置可以包括:第一配置模塊210、第二配置模塊220和配置控制模塊230。
[0073]具體地,第一配置模塊210用于讀取配置信息中的陣列配置信息頂層,并將陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元陣列。舉例而言,第一配置模塊210可從配置存儲器中讀出配置信息中的陣列配置信息頂層,并可將該陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元陣列。其中,在本發(fā)明的實(shí)施例中,計算粒度和循環(huán)迭代次數(shù)可分別被寫入處理單元陣列內(nèi)的計算粒度寄存器和循環(huán)迭代次數(shù)寄存器。
[0074]第二配置模塊220用于讀取配置信息中的多個處理單元配置信息,并將多個處理單元配置信息分別配置至對應(yīng)的處理單元,其中,每個處理單元配置信息包括處理單元配置信息頂層和多個算子配置信息。其中,在本發(fā)明的實(shí)施例中,處理單元配置信息頂層中的算子個數(shù)、開始機(jī)器周期數(shù)和配置變化選擇分別被寫入處理單元內(nèi)的算子個數(shù)寄存器、開始機(jī)器周期數(shù)寄存器和配置變化選擇寄存器;處理單元配置信息中的算子配置信息被逐個被寫入處理單元內(nèi)的配置RAM。
[0075]配置控制模塊230用于根據(jù)運(yùn)行參數(shù)控制第一配置模塊讀取陣列配置信息頂層,且根據(jù)運(yùn)行參數(shù)控制第二配置模塊讀取多個處理單元配置信息。其中,在本發(fā)明的一個實(shí)施例中,運(yùn)行參數(shù)可包括對開始機(jī)器周期數(shù)進(jìn)行計數(shù)、對連續(xù)周期數(shù)進(jìn)行計數(shù)、對間隔周期數(shù)進(jìn)行計數(shù)、對算子個數(shù)進(jìn)行計數(shù)和對循環(huán)迭代次數(shù)進(jìn)行計數(shù)。
[0076]舉例而言,如圖8所示,配置控制模塊230對三維配置信息中的5個運(yùn)行參數(shù)進(jìn)行計數(shù),其計數(shù)步驟如下:(I)整個計數(shù)過程始于對開始機(jī)器周期數(shù)的計數(shù),當(dāng)完成該參數(shù)的計數(shù)后處理單元開始執(zhí)行算子配置信息。(2)對應(yīng)于一次算子配置信息的執(zhí)行,配置存儲器中的第一個算子配置信息被讀出,其中的連續(xù)運(yùn)行周期數(shù)和間隔周期數(shù)分別被寫入到連續(xù)運(yùn)行周期數(shù)寄存器和間隔周期數(shù)寄存器,算子配置信息中的其余部分被寫入到處理單元。對連續(xù)運(yùn)行周期數(shù)進(jìn)行計數(shù),在此過程中,每一個機(jī)器周期都會使能處理單元,但不會從配置存儲器中讀出新的算子配置信息。(3)開始進(jìn)行間隔周期數(shù)的計數(shù)。在此過程中,與連續(xù)運(yùn)行周期數(shù)的計數(shù)過程中的區(qū)別在于,不僅不會從配置存儲器中讀出新的算子配置信息,在每一個機(jī)器周期處理單元都不會被使能。因此,處理單元將被連續(xù)的閑置多個機(jī)器周期,直至該參數(shù)的計數(shù)完成。(4)對算子個數(shù)的進(jìn)行計數(shù),并將計數(shù)后的算子個數(shù)作為配置存儲器的讀地址,讀取出新的算子配置信息,之后的配置流程與第一個算子配置信息的配置流程控制相同。當(dāng)處理單元執(zhí)行完三維配置信息中的所有的算子配置信息后,算子個數(shù)計數(shù)完成。(5)進(jìn)入循環(huán)迭代次數(shù)的計數(shù)。循環(huán)迭代中的下一次迭代中的配置流程與以上所敘述的第一次迭代的配置流程相同。對循環(huán)迭代次數(shù)進(jìn)行計數(shù),直至循環(huán)迭代中的所有迭代被執(zhí)行完,循環(huán)迭代次數(shù)計數(shù)完成,即表示當(dāng)前的處理單元完成運(yùn)行。
[0077]需要說明的是,在本發(fā)明的實(shí)施例中,配置控制模塊230采用三維配置信息中的5個運(yùn)行參數(shù)來對配置存儲器的讀訪問進(jìn)行控制。從自頂向下的順序這5個參數(shù)分別為對循環(huán)迭代次數(shù)進(jìn)行計數(shù)、對算子個數(shù)進(jìn)行計數(shù)、對開始機(jī)器周期數(shù)進(jìn)行計數(shù)、對開始機(jī)器周期數(shù)進(jìn)行計數(shù)和對間隔周期數(shù)進(jìn)行計數(shù)。除此之外,配置控制模塊230被處理單元陣列內(nèi)的同步控制單元發(fā)出的全局同信號所使能。其中,同步控制單元用于產(chǎn)生在某個機(jī)器周期內(nèi)處理單元陣列中的全部處理單元均執(zhí)行完算子配置信息的全局同步信號,之后,處理單元陣列的運(yùn)行才進(jìn)入下一個機(jī)器周期。通過這種方式,處理單元陣列中的各個處理單元即可按照模調(diào)度結(jié)果中的順序有序的運(yùn)行。
[0078]進(jìn)一步地,在本發(fā)明的一個實(shí)施例中,如圖7所示,第二配置模塊220可包括第一配置單元221、第二配置單元222和第三配置單元223。第一配置單元221可用于分別讀取多個處理單元配置信息中的處理單元配置信息頂層,并將處理單元配置信息頂層配置至對應(yīng)的處理單元,其中,處理單元配置信息頂層包括開始機(jī)器周期數(shù)。第二配置單元222可用于在開始機(jī)器周期數(shù)的計數(shù)結(jié)束時,分別讀取多個處理單元配置信息中的第一個算子配置信息,并將第一個算子配置信息配置至對應(yīng)的處理單元。第三配置單元223可用于在滿足預(yù)設(shè)條件時,分別讀取下一個算子配置信息并配置至對應(yīng)的處理單元。
[0079]其中,在本發(fā)明的一個實(shí)施例中,滿足預(yù)設(shè)條件可包括:算子配置信息中的連續(xù)運(yùn)行周期數(shù)的計數(shù)結(jié)束、間隔周期數(shù)的計數(shù)結(jié)束、處理單元配置信息頂層中的算子個數(shù)的計數(shù)未結(jié)束。
[0080]具體而言,第一配置單元221可讀取出處理單元配置信息頂層,其中可包含開始機(jī)器周期數(shù)、算子個數(shù)和配置變化選擇。對開始機(jī)器周期數(shù)進(jìn)行計數(shù),第二配置單元222可在開始機(jī)器周期數(shù)的技術(shù)結(jié)束時,分別讀取多個處理單元配置信息中的第一個算子配置信息,并將該算子配置信息配置至對應(yīng)的處理單元。其中,對該算子配置信息中的連續(xù)運(yùn)行周期數(shù)進(jìn)行計數(shù),在連續(xù)運(yùn)行周期數(shù)的計數(shù)結(jié)束之后,對該算子配置信息中的間隔周期數(shù)進(jìn)行計數(shù)。在間隔周期數(shù)的計數(shù)結(jié)束后,對處理單元配置信息頂層中的算子個數(shù)進(jìn)行計數(shù)。若算子個數(shù)的計數(shù)未結(jié)束(即滿足了預(yù)設(shè)條件),則第三配置單元223可分別讀取配置信息選擇位上數(shù)據(jù),并根據(jù)處理單元配置信息頂層中的配置變化選擇判斷下一個算子配置信息主要修改的是互聯(lián)配置還是ALU操作碼配置,并分別根據(jù)判斷結(jié)果讀取下一個算子配置信息并配置至對應(yīng)的處理單元,讀取下一個算子配置信息的過程與第一個算子配置信息的過程相同。
[0081]需要說明的是,在本發(fā)明的實(shí)施例中,若算子個數(shù)的計數(shù)結(jié)束,即算子配置信息已都被配置到了對應(yīng)的處理單元內(nèi),則對陣列配置信息頂層中的循環(huán)迭代次數(shù)進(jìn)行計數(shù),若循環(huán)迭代次數(shù)的計數(shù)未結(jié)束,則第二配置單元222可重新讀取第一個算子配置信息并配置至對應(yīng)的處理單元。
[0082]根據(jù)本發(fā)明實(shí)施例的處理器配置裝置,可通過第一配置模塊讀取陣列配置信息頂層,并將該陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元,第二配置模塊讀取多個處理單元配置信息,并將該多個處理單元配置信息分別配置至對應(yīng)的處理單元,配置控制模塊根據(jù)運(yùn)行參數(shù)控制第一配置模塊讀取陣列配置信息頂層,且根據(jù)該運(yùn)行參數(shù)控制第二配置模塊讀取多個處理單元配置信息,至少存在以下優(yōu)點(diǎn):1)由于每個處理單元都有自己獨(dú)立的配置信息,因此在對可重構(gòu)處理器陣列進(jìn)行配置時,若其中一個或者一部分處理單元的功能發(fā)生變化,不需要對整個陣列進(jìn)行重新配置,只對需要配置切換的處理單元進(jìn)行配置,其他處理單元配置保持不變,即根據(jù)每個處理單元的配置信息中配置持續(xù)周期數(shù)和間隔周期數(shù)來確定每個處理單元功能是否改變,這樣避免了處理單元重復(fù)配置,從而實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性:2)合理地壓縮了動態(tài)切換配置信息量,從而縮短了配置時間,并且降低了對配置存儲器容量的要求;3)訪問配置存儲器次數(shù)降低,從而降低了功耗。
[0083]為了使得本領(lǐng)域的技術(shù)人員更加清楚地了解本發(fā)明,下面將舉例說明本發(fā)明。
[0084]舉例而言,為便于說明,首先對于一些參數(shù)進(jìn)行設(shè)定,具體如下:1)動態(tài)可重構(gòu)處理器內(nèi)子單元內(nèi)的處理單元陣列的規(guī)模為4*4,即有16個處理單元。2)動態(tài)可重構(gòu)處理器內(nèi)子單元的個數(shù)為I。3)陣列配置信息頂層占用位數(shù)為Iword ;處理單元配置信息頂層占用位數(shù)為Iword ;每個處理單元的處理單元配置信息占用位數(shù)為2words。4)進(jìn)行Iword的動態(tài)切換配置信息的功耗為InW。5)處理單元陣列內(nèi)只有第I個處理單元的功能在10個機(jī)器周期內(nèi)每個周期都變化,而其余15個處理單元的功能在10個周期內(nèi)都保持不變,如圖9所示。6)處理單元內(nèi)ALU計算粒度為32bits ;循環(huán)迭代次數(shù)位O。7)處理單元開始機(jī)器周期數(shù)為第I個機(jī)器周期;算子個數(shù)10。8)配置變化選擇18位,算子個數(shù)總共為10,配置變化需要切換次數(shù)為9,對于前4次切換為互聯(lián)的配置信息變化,對于后5次切換為ALU操作碼的配置信息變化。9)輸入1、輸入2、輸入3均是來自存儲器讀訪問,存儲器中的讀地址為[1111100000]2 ;ALU操作碼加:0,減:1,乘:2 ;連續(xù)運(yùn)行周期數(shù)為I或10 ;間隔周期數(shù)為O ;存儲器寫訪問地址為[0000011111]2。
[0085]因此,根據(jù)上述設(shè)定的參數(shù)、三維配置信息組織結(jié)構(gòu)和配置信息生成方法及裝置,僅以處理單元I為例,可得到PEl (處理單元I)的配置信息,如圖10所示。陣列配置信息頂層包括:(I)計算粒度,占用位為O?I位,位數(shù)為2,它對應(yīng)于處理單元內(nèi)的ALU的計算粒度,具體如下:2,bOO, 32bits;2,bOl, 16bits;2,blO, 8bits;2,bll:4bits ; (2)循環(huán)迭代次數(shù),占用位為2?11位,位數(shù)為10,O表示迭代I次,即不循環(huán);1?1023表示循環(huán)迭代2?1024次。處理單元配置信息頂層包括:(I)開始機(jī)器周期,占用位為O?3位,位數(shù)為4,O?15表示從第I?16個機(jī)器周期開始進(jìn)行計算;(2)算子個數(shù),占用位為4?7位,位數(shù)為4,O?15表示算子配置信息部分包含的算子配置信息個數(shù);如果為0,則表示此處理單元未被激活;(3)配置變化選擇,占用位為第8?25位,位數(shù)為18,對于每一個算子,都有2bits來對配置信息的變化做選擇,其中01表示改變互聯(lián)的配置信息,10表示改變ALU操作碼的配置信息,11表示互聯(lián)配置信息和ALU操作碼配置信息均變化,00則是不會出現(xiàn)的情況。算子配置信息包括:(1)輸入1,占用位為O?10位,位數(shù)為11, bito用于指示輸入來自Router (陣列內(nèi)互聯(lián))或存儲器讀訪問;如果來自Router, bitsl?5有效,表示對ixniter的32個輸入的選擇信號;如果來自存儲器,bitsl?10有效,表示存儲器中的讀地址;(2)輸入2,占用位為11?21位,位數(shù)為11,bitO用于指示輸入來自Router (陣列內(nèi)互聯(lián))或存儲器讀訪問;如果來自Router, bitsl?5有效,表示對router的32個輸入的選擇信號;如果來自存儲器,bitsl?10有效,表示存儲器中的讀地址;(3)輸入3,占用位為22?32位,位數(shù)為11, bitO用于指示輸入來自Router (陣列內(nèi)互聯(lián))或存儲器讀訪問;如果來自Router, bitsl?5有效,表不對router的32個輸入的選擇信號;如果來自存儲器,bitsl?10有效,表示存儲器中的讀地址;(4) ALU操作碼,占用位為33?37位,位數(shù)為5,O?31表示32種ALU操作;(5)連續(xù)運(yùn)行周期數(shù),占用位為38?47位,位數(shù)為10,I?1024cycles表示當(dāng)前的算子配置信息連續(xù)運(yùn)行的機(jī)器周期數(shù);(6)間隔周期數(shù),占用位為48?51位,位數(shù)為4,0?15cycles表示兩個相鄰的算子之間的空閑機(jī)器周期數(shù),
(7)存儲器寫訪問(輸出),占用位為52?62位,位數(shù)為ll,bit52用于使能存儲器寫訪問,bits53?62表示存儲器寫地址。
[0086]其中,配置控制器中對三維配置信息中的5個運(yùn)行參數(shù)進(jìn)行計數(shù)的步驟如下:首先,對整個計數(shù)過程始于對開始機(jī)器周期數(shù)的計數(shù),開始機(jī)器周期數(shù)為I。然后,對每個處理單元中的一次算子配置信息進(jìn)行配置:(I)配置存儲器中的第一個算子配置信息被讀出,其中的連續(xù)運(yùn)行周期數(shù)I (處理單元I)或者10 (處理單元2?16)和間隔周期數(shù)O分別被寫入到連續(xù)運(yùn)行周期數(shù)寄存器和間隔周期數(shù)寄存器,算子配置信息中的其余部分被寫入到處理單元。(2)對連續(xù)運(yùn)行周期數(shù)進(jìn)行計數(shù),在此過程中,每一個機(jī)器周期都會使能處理單元,但不會從配置存儲器中讀出新的算子配置信息。因此處理單元將在連續(xù)的機(jī)器周期內(nèi)執(zhí)行相同的算子配置信息,直至該參數(shù)的計數(shù)完成。(3)開始進(jìn)行間隔周期數(shù)的計數(shù)。在此過程中,與連續(xù)運(yùn)行周期數(shù)的計數(shù)過程中的區(qū)別在于,不僅不會從配置存儲器中讀出新的算子配置信息,在每一個機(jī)器周期處理單元都不會被使能。因此,處理單元將被連續(xù)的閑置多個機(jī)器周期,直至該參數(shù)的計數(shù)完成。需說明的是,當(dāng)間隔周期數(shù)為O時,此步驟的計數(shù)將被跳過。在完成了間隔周期數(shù)的計數(shù)后,即完成了一次算子配置信息的執(zhí)行。(4)將對算子個數(shù)10的進(jìn)行計數(shù),并將計數(shù)后的算子個數(shù)作為配置存儲器的讀地址,讀取出新的算子配置信息,之后的配置流程與第一個算子配置信息的配置流程控制相同。當(dāng)處理單元執(zhí)行完三維配置信息中的所有的算子配置信息后,算子個數(shù)計數(shù)完成。(5 )進(jìn)入循環(huán)迭代次數(shù)的計數(shù)。循環(huán)迭代中的下一次迭代中的配置流程與以上所敘述的第一次迭代的配置流程相同。對循環(huán)迭代次數(shù)進(jìn)行計數(shù),直至循環(huán)迭代中的所有迭代被執(zhí)行完,循環(huán)迭代次數(shù)計數(shù)完成,即表示當(dāng)前的處理單元完成運(yùn)行。由于采用了同步控制單元對所有的處理單元進(jìn)行同步,當(dāng)前的處理單元完成運(yùn)行即表示所有的處理單元完成運(yùn)行,也就是處理單元陣列執(zhí)行完整個三維配置信息。
[0087]通過本發(fā)明實(shí)施例的用于生成動態(tài)可重構(gòu)處理器的配置信息的方法、裝置及處理器配置裝置,總體的動態(tài)切換配置信息量得到了壓縮,功耗得到降低,配置靈活性得到提高。只有處理單元I的功能在不同機(jī)器周期內(nèi)發(fā)生變化,而處理單元2?處理單元16的功能在不同機(jī)器周期內(nèi)均不發(fā)生變化。通過這種方法和裝置可以對處理單元2?處理單元16的動態(tài)切換配置信息進(jìn)行壓縮。
[0088]經(jīng)過分析可知,采用本發(fā)明實(shí)施例的方法及裝置得到的動態(tài)切換配置信息量為l+l+2*10+2*15=52wordS ;不采用本發(fā)明實(shí)施例的方法及裝置的動態(tài)切換配置信息量為2*16*10=320words。采用本發(fā)明實(shí)施例的方法及裝置得到的動態(tài)切換配置信息功耗為52*l=52nW ;不采用這種方法及裝置的動態(tài)切換配置信息功耗為320*l=320nW。
[0089]綜上所述,通過本發(fā)明實(shí)施例的方法及裝置可以對動態(tài)可重構(gòu)陣列內(nèi)部每一個處理單元進(jìn)行配置,不需要對整個陣列進(jìn)行重新配置,只需要配置改變的處理單元即可,實(shí)現(xiàn)了部分配置和選擇性配置,提高了配置的靈活性。[0090]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0091]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機(jī)盤盒(磁裝置),隨機(jī)存取存儲器(RAM),只讀存儲器(R0M),可擦除可編輯只讀存儲器(EPR0M或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(⑶ROM)。另外,計算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲在計算機(jī)存儲器中。
[0092]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
[0093]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實(shí)施例的步驟之一或其組合。
[0094]此外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。
[0095]上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0096]此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個該特征。在本發(fā)明的描述中,“多個”的含義是至少兩個,例如兩個,三個等,除非另有明確具體的限定。
[0097]在本說明書的描述中,參考術(shù)語“一個實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個或多個實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
[0098]盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。
【權(quán)利要求】
1.一種用于生成動態(tài)可重構(gòu)處理器的配置信息的方法,其特征在于,所述動態(tài)可重構(gòu)處理器由處理單元陣列構(gòu)成,所述處理單元陣列包括多個處理單元,所述方法包括: 51、讀取待執(zhí)行任務(wù)的信息,并根據(jù)所述信息生成所述處理單元陣列的陣列配置信息頂層; 52、根據(jù)所述信息分別生成與所述多個處理單元對應(yīng)的多個處理單元配置信息;以及 53、將所述陣列配置信息頂層和所述多個處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息。
2.如權(quán)利要求1所述的方法,其特征在于,根據(jù)所述信息生成所述處理單元陣列的陣列配置信息頂層包括: 從所述待執(zhí)行任務(wù)的信息中提取所述待執(zhí)行任務(wù)的計算粒度和循環(huán)迭代次數(shù),其中所述計算粒度和循環(huán)迭代次數(shù)構(gòu)成所述陣列配置信息頂層。
3.如權(quán)利要求1所述的方法,其特征在于,根據(jù)所述信息分別生成與所述多個處理單元對應(yīng)的多個處理單元配置信息包括: 根據(jù)所述待執(zhí)行任務(wù)的信息確定映射到每個處理單元上的執(zhí)行指令,并根據(jù)所述執(zhí)行指令生成與所述處理單元對應(yīng)的處理單元配置信息。
4.如權(quán)利要求3所述的方法,其特征在于,所述處理單元配置信息包括處理單元配置信息頂層和多個算子配置信息。
5.如權(quán)利要求4所述的方法,其特征在于,所述處理單元配置信息頂層包括開始機(jī)器周期數(shù)、算子個數(shù)和配置變化選擇。
6.如權(quán)利要求4所述的方法,其特征在于,每個算子配置信息包括輸入、ALU操作碼、連續(xù)運(yùn)行周期數(shù)、間隔周期數(shù)和存儲器寫訪問。
7.如權(quán)利要求5所述的方法,其特征在于,所述多個算子配置信息的個數(shù)與所述算子個數(shù)相同,且每個算子具有對應(yīng)的算子配置信息。
8.如權(quán)利要求1所述的方法,其特征在于,將所述陣列配置信息頂層和所述多個處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息包括: 按照預(yù)設(shè)順序?qū)⑺鲫嚵信渲眯畔㈨攲雍退龆鄠€處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息。
9.一種用于生成動態(tài)可重構(gòu)處理器的配置信息的裝置,其特征在于,所述動態(tài)可重構(gòu)處理器由處理單元陣列構(gòu)成,所述處理單元陣列包括多個處理單元,所述裝置包括: 待執(zhí)行任務(wù)存儲模塊,用于存儲待執(zhí)行任務(wù)的信息; 讀取模塊,用于讀取所述待執(zhí)行任務(wù)的信息; 第一生成模塊,用于根據(jù)所述信息生成所述處理單元陣列的陣列配置信息頂層; 第二生成模塊,用于根據(jù)所述信息分別生成與所述多個處理單元對應(yīng)的多個處理單元配置信息;以及 裝配模塊,用于將所述陣列配置信息頂層和所述多個處理單元配置信息進(jìn)行裝配以生成所述動態(tài)可重構(gòu)處理器的配置信息。
10.如權(quán)利要求9所述的裝置,其特征在于,所述第一生成模塊具體用于:從所述待執(zhí)行任務(wù)的信息中提取所述待執(zhí)行任務(wù)的計算粒度和循環(huán)迭代次數(shù),其中所述計算粒度和循環(huán)迭代次數(shù)構(gòu)成所述陣列配置信息頂層。
11.如權(quán)利要求9所述的裝置,其特征在于,所述第二生成模塊具體用于:根據(jù)所述待執(zhí)行任務(wù)的信息確定映射到每個處理單元上的執(zhí)行指令,并根據(jù)所述執(zhí)行指令生成所述處理單元對應(yīng)的處理單元配置信息。
12.如權(quán)利要求11所述的裝置,其特征在于,所述處理單元配置信息包括處理單元配置信息頂層和多個算子配置信息。
13.如權(quán)利要求12所述的裝置,其特征在于,所述處理單元配置信息頂層包括開始機(jī)器周期數(shù)、算子個數(shù)和配置變化選擇。
14.如權(quán)利要求12所述的裝置,其特征在于,每個算子配置信息包括輸入、ALU操作碼、連續(xù)運(yùn)行周期數(shù)、間隔周期數(shù)和存儲器寫訪問。
15.如權(quán)利要求13所述的裝置,其特征在于,所述多個算子配置信息的個數(shù)與所述算子個數(shù)相同,且每個算子具有對應(yīng)的算子配置信息。
16.如權(quán)利要求9所述的裝置,其特征在于,還包括: 配置存儲模塊,用于存儲所述裝配模塊生成的所述配置信息。
17.一種處理器配置裝置,其特征在于,包括: 第一配置模塊,用于讀取配置信息中的陣列配置信息頂層,并將所述陣列配置信息頂層中的計算粒度和循環(huán)迭代次數(shù)配置至處理單元陣列; 第二配置模塊,用于讀 取所述配置信息中的多個處理單元配置信息,并將所述多個處理單元配置信息分別配置至對應(yīng)的處理單元,其中,每個處理單元配置信息包括處理單元配置信息頂層和多個算子配置信息;以及 配置控制模塊,用于根據(jù)運(yùn)行參數(shù)控制所述第一配置模塊讀取所述陣列配置信息頂層,且根據(jù)所述運(yùn)行參數(shù)控制所述第二配置模塊讀取所述多個處理單元配置信息。
18.如權(quán)利要求17所述的裝置,其特征在于,所述運(yùn)行參數(shù)包括對開始機(jī)器周期數(shù)進(jìn)行計數(shù)、對連續(xù)周期數(shù)進(jìn)行計數(shù)、對間隔周期數(shù)進(jìn)行計數(shù)、對算子個數(shù)進(jìn)行計數(shù)和對所述循環(huán)迭代次數(shù)進(jìn)行計數(shù)。
19.如權(quán)利要求17所述的裝置,其特征在于,所述第二配置模塊包括: 第一配置單元,用于分別讀取所述多個處理單元配置信息中的處理單元配置信息頂層,并將所述處理單元配置信息頂層配置至對應(yīng)的處理單元,其中,處理單元配置信息頂層包括所述開始機(jī)器周期數(shù); 第二配置單元,用于在所述開始機(jī)器周期數(shù)的計數(shù)結(jié)束時,分別讀取所述多個處理單元配置信息中的第一個算子配置信息,并將所述第一個算子配置信息配置至對應(yīng)的處理單元; 第三配置單元,用于在滿足預(yù)設(shè)條件時,分別讀取下一個算子配置信息并配置至對應(yīng)的處理單元。
【文檔編號】G06F15/177GK103942181SQ201410126188
【公開日】2014年7月23日 申請日期:2014年3月31日 優(yōu)先權(quán)日:2014年3月31日
【發(fā)明者】劉雷波, 王延升, 彭貴強(qiáng), 李兆石, 尹首一, 魏少軍 申請人:清華大學(xué)