專利名稱:一種動態(tài)可重構(gòu)處理器及其固定數(shù)的調(diào)用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)的技術(shù)領(lǐng)域,特別是涉及一種動態(tài)可重構(gòu)處理器以及這種動態(tài)重構(gòu)處理器的固定數(shù)調(diào)用方法。
背景技術(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)部配以靈活度高的路由單元,實現(xiàn)算術(shù)邏輯單元之間多樣化的互聯(lián)。因此,經(jīng)路由單元連接后的眾核陣列可實現(xiàn)對數(shù)據(jù)流的高速處理,較傳統(tǒng)的單核以及少核處理器在性能上有著巨大的優(yōu)勢。同時,較固化的專用電路在靈活性上也有著巨大的優(yōu)勢。其次,較傳統(tǒng)的靜態(tài)可重構(gòu)電路——現(xiàn)場可編程邏輯陣列而言,動態(tài)可重構(gòu)處理器有動態(tài)的特點,即在電路運行過程中可動態(tài)的切換電路的功能,而非以往靜態(tài)可重構(gòu)電路一成不變的不改變電路功能,只是在電路運行之前燒寫電路功能,對電路進(jìn)行初始化。這樣做的好處在于通過時分復(fù)用的方式減少了電路的規(guī)模,原因在于之前的電路結(jié)構(gòu)的全映射現(xiàn)在變?yōu)榉謮K映射,而塊與塊之間恰好采取了動態(tài)切換的方式。動態(tài)可重構(gòu)處理器內(nèi)的算術(shù)邏輯單元(處理單元)陣列在執(zhí)行一段算法的過程中,往往會遇到這樣的情況參與運算的操作數(shù)是一個常數(shù),并且該常數(shù)的值在執(zhí)行算法之前就已經(jīng)確定,本發(fā)明將這樣的常數(shù)定義為固定數(shù)。在現(xiàn)有技術(shù)中,需要從處理器外部去獲取固定數(shù),這將必然導(dǎo)致在數(shù)據(jù)傳輸時會占用總線周期,影響處理器效率的問題。因此,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是提供一種動態(tài)可重構(gòu)處理器內(nèi)固定數(shù)的存儲裝置及調(diào)用機(jī)制,用以在盡可能減小片內(nèi)存儲面積的情況下, 提高調(diào)用效率,以實現(xiàn)固定數(shù)的高速讀取。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種動態(tài)可重構(gòu)處理器以及這種動態(tài)重構(gòu)處理器的固定數(shù)調(diào)用方法,用以在盡可能減小片內(nèi)存儲面積的情況下,提高調(diào)用效率,以實現(xiàn)固定數(shù)的高速讀取。為了解決上述問題,本發(fā)明公開了一種動態(tài)可重構(gòu)處理器,所述動態(tài)可重構(gòu)處理器包括多個子單元,各個子單元內(nèi)部設(shè)置有處理單元陣列,所述動態(tài)可重構(gòu)處理器還包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,其中,所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;根據(jù)配置信息從不變固定數(shù)組存儲器的指定位置提取所需的不變固定數(shù)組,并存儲至不變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述不變固定數(shù)寄存器提取所需的不變固定數(shù);和/或,根據(jù)配置信息從可變固定數(shù)組存儲器的指定位置提取所需的可變固定數(shù)組,并存儲至可變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述可變固定數(shù)寄存器提取所需的可變固定數(shù)。優(yōu)選的,所述固定數(shù)為子算法執(zhí)行過程中參與運算的固定值常數(shù);所述不變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù);所述可變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù)。優(yōu)選的,所述不變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部不變固定數(shù)組;每個不變固定數(shù)組包含一個子算法對應(yīng)的全部不變固定數(shù);或者,每個不變固定數(shù)組包含多個子算法對應(yīng)的不變固定數(shù);或者,每個不變固定數(shù)組包含一個子算法對應(yīng)的部分不變固定數(shù)。優(yōu)選的,所述可變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部可變固定數(shù)組;每個可變固定數(shù)組包含子算法的一個步驟在某一次執(zhí)行過程中對應(yīng)的全部可變固定數(shù)。優(yōu)選的,所述不變固定數(shù)寄存器的大小等同于一個不變固定數(shù)組。優(yōu)選的,所述可變固定數(shù)寄存器的大小等同于一個可變固定數(shù)組。優(yōu)選的,所述處理單元陣列包括多個算術(shù)邏輯運算單元,所述多個算術(shù)邏輯運算單元通過路由單元連接,所述處理單元陣列通過時序控制單元控制。本發(fā)明實施例還公開了一種動態(tài)可重構(gòu)處理器的固定數(shù)調(diào)用方法,所述動態(tài)可重構(gòu)處理器包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,其中, 所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;所述固定數(shù)為子算法執(zhí)行過程中參與運算的固定值常數(shù),所述固定數(shù)包括不變固定數(shù)與可變固定數(shù),所述不變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù),所述可變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù);所述的方法包括在針對某一應(yīng)用進(jìn)行初始化時,把該應(yīng)用中所需使用的不變固定數(shù)組存儲到不變固定數(shù)組存儲器中,把該應(yīng)用中所需使用的可變固定數(shù)組存儲到可變固定數(shù)組存儲器中;解析配置信息,若需要調(diào)用不變固定數(shù),則根據(jù)配置信息從不變固定數(shù)組存儲器中的指定位置讀出所需要的不變固定數(shù)組,并將其存儲到不變固定數(shù)寄存器中;若需要調(diào)用可變固定數(shù),則根據(jù)配置信息從可變固定數(shù)組存儲器中的指定位置讀出所需要的可變固定數(shù)組,并將其存儲到可變固定數(shù)寄存器中;處理單元陣列按照配置信息從不變固定數(shù)寄存器中調(diào)用需要的不變固定數(shù),以及,按照配置信息從可變固定數(shù)寄存器中調(diào)用需要的可變固定數(shù)。優(yōu)選的,所述配置信息包括1)是否調(diào)用固定數(shù);2)調(diào)用不變固定數(shù)還是可變固定數(shù);3)所需要的不變固定數(shù)在不變固定數(shù)寄存器中的位置信息;4)所需要的可變固定數(shù)在可變固定數(shù)寄存器中的位置信息。
優(yōu)選的,所述不變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部不變固定數(shù)組;每個不變固定數(shù)組包含一個子算法對應(yīng)的全部不變固定數(shù);或者,每個不變固定數(shù)組包含多個子算法對應(yīng)的不變固定數(shù);或者,每個不變固定數(shù)組包含一個子算法對應(yīng)的部分不變固定數(shù);所述可變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部可變固定數(shù)組;每個可變固定數(shù)組包含子算法的一個步驟在某一次執(zhí)行過程中對應(yīng)的全部可變固定數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點本發(fā)明通過對固定數(shù)的作用范圍進(jìn)行了深入分析,在此基礎(chǔ)上將其分為不變固定數(shù)和可變固定數(shù),通過對不同類別的固定數(shù)進(jìn)行分離存儲,達(dá)到了節(jié)省片內(nèi)存儲資源,提高調(diào)用效率的目的。
圖1是一種典型動態(tài)可重構(gòu)處理器的結(jié)構(gòu)示意圖;圖2是本發(fā)明的一種動態(tài)可重構(gòu)處理器實施例的結(jié)構(gòu)圖;圖3是本發(fā)明中固定數(shù)組、固定數(shù)組存儲器以及固定數(shù)寄存器之間的關(guān)系示意圖;圖4是本發(fā)明的一種動態(tài)可重構(gòu)處理器的固定數(shù)調(diào)用方法實施例的步驟流程圖;圖5是本發(fā)明的一種具體示例中固定數(shù)組的存儲示意圖;圖6是本發(fā)明的一種具體示例中配置信息的格式示意圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下對典型動態(tài)可重構(gòu)處理器的結(jié)構(gòu)及數(shù)據(jù)運轉(zhuǎn)流程簡單說明。參考圖1所示的典型動態(tài)可重構(gòu)處理器的結(jié)構(gòu)示意圖,一般而言,典型的動態(tài)可重構(gòu)處理器的運轉(zhuǎn)流程可概括為如下步驟Si、由外部數(shù)據(jù)讀入裝置101將處理器外存儲器內(nèi)(圖中未示出)待處理的數(shù)據(jù)讀入動態(tài)可重構(gòu)處理器10內(nèi),分發(fā)至多個子單元(子單元1、子單元2,...,子單元η)內(nèi)的外部數(shù)據(jù)緩存器102 ;S2、子單元將數(shù)據(jù)從外部數(shù)據(jù)緩存器102讀入,再進(jìn)行處理。多個子單元同時處理,以達(dá)并行處理的效果。各個子單元處理完后,將結(jié)果數(shù)據(jù)存儲于各自的內(nèi)部數(shù)據(jù)緩存器 103 ;S3、外部數(shù)據(jù)寫出裝置104將結(jié)果數(shù)據(jù)從各子單元的內(nèi)部數(shù)據(jù)緩存器103讀入,并寫出到處理器外部存儲器(圖中未示出)。除上述步驟外,還需說明的是1、子單元間的同步機(jī)制通過子單元間同步控制器105來實現(xiàn);2、子單元間的數(shù)據(jù)交互通過子單元1向子單元間數(shù)據(jù)交互暫存器106寫入數(shù)據(jù),子單元2從子單元間數(shù)據(jù)交互暫存器讀出此數(shù)據(jù)來實現(xiàn)。使用時還需結(jié)合子單元間的同步機(jī)制,即子單元1向子單元間數(shù)據(jù)交互暫存器寫完數(shù)據(jù)后,子單元2才可開始讀取子單元間數(shù)據(jù)交互暫存器?;跀?shù)據(jù)流的角度(從對數(shù)據(jù)流處理的角度出發(fā),遍歷數(shù)據(jù)流所經(jīng)過的動態(tài)可重構(gòu)處理器內(nèi)的各模塊,提出各模塊所需的功能),動態(tài)可重構(gòu)處理器在結(jié)構(gòu)上可分為以下四個部分第一部分?jǐn)?shù)據(jù)存儲裝置,包括(1)外部數(shù)據(jù)緩存器102 用于將讀入的外部數(shù)據(jù)緩存,待需要時被讀出。(2)內(nèi)部數(shù)據(jù)存儲器107 用于暫存處理單元陣列20運算所要使用的數(shù)據(jù),待需要時數(shù)據(jù)被讀出,輸出到處理單元陣列20。(3)內(nèi)部數(shù)據(jù)緩存器103 用于對處理單元陣列20的結(jié)果數(shù)據(jù)進(jìn)行緩存,待輸出至可動態(tài)重構(gòu)處理器外。(4)子單元間數(shù)據(jù)交互暫存器106 用于暫存子單元1的結(jié)果數(shù)據(jù),待子單元2讀出,以實現(xiàn)子單元間的數(shù)據(jù)交互。(5)處理器間數(shù)據(jù)交互暫存器108 用于暫存動態(tài)可重構(gòu)處理器A子單元1的結(jié)果數(shù)據(jù),待動態(tài)可重構(gòu)處理器B子單元2讀出,以實現(xiàn)動態(tài)可重構(gòu)處理器之間的數(shù)據(jù)交互。第二部分?jǐn)?shù)據(jù)轉(zhuǎn)移裝置,用于將數(shù)據(jù)從數(shù)據(jù)存儲裝置讀出,并寫入另一數(shù)據(jù)存儲裝置,使數(shù)據(jù)在數(shù)據(jù)存儲裝置之間轉(zhuǎn)移。最終實現(xiàn)將數(shù)據(jù)寫入處理單元陣列20,處理單元陣列運行完后,將處理單元陣列的結(jié)果數(shù)據(jù)讀出。具體包括(1)外部數(shù)據(jù)讀入裝置101 用于將動態(tài)可重構(gòu)處理器外待處理的數(shù)據(jù)讀入動態(tài)可重構(gòu)處理器內(nèi),緩存于外部數(shù)據(jù)緩存器102。(2)片內(nèi)數(shù)據(jù)交互裝置109 用于將子單元間數(shù)據(jù)交互暫存器106或者處理器間數(shù)據(jù)交互暫存器108內(nèi)存儲的其他子單元的結(jié)果數(shù)據(jù)讀出,分發(fā)至當(dāng)前子單元的內(nèi)部數(shù)據(jù)存儲器103或直接分發(fā)至處理單元陣列20,這取決于此子單元的結(jié)果數(shù)據(jù)是否可直接被處理單元陣列處理。(3)內(nèi)外部數(shù)據(jù)轉(zhuǎn)換裝置110 用于將外部數(shù)據(jù)緩存器102內(nèi)緩存的外部數(shù)據(jù)分發(fā)至內(nèi)部數(shù)據(jù)存儲器103或直接分發(fā)至處理單元陣列20,這取決于此外部數(shù)據(jù)是否可直接被處理單元陣列處理。(4)內(nèi)部數(shù)據(jù)讀入裝置111 用于將內(nèi)部數(shù)據(jù)存儲器107里存儲的當(dāng)前子單元的內(nèi)部數(shù)據(jù)讀出,并且在需要時將多塊2D數(shù)據(jù)拼接成一塊2D數(shù)據(jù),最終將拼接后的數(shù)據(jù)(如果需要拼接的話)發(fā)送到處理單元陣列20。需要說明的是,在本發(fā)明實施例中,以2D的方式描述數(shù)據(jù),一塊2D數(shù)據(jù)塊每行數(shù)據(jù)個數(shù)相同,并且以行對齊的方式存儲在存儲器中。(5)內(nèi)部數(shù)據(jù)寫出裝置112 用于將處理單元陣列20的結(jié)果數(shù)據(jù)讀出,再寫入至處理單元陣列,以供緊接著運行處理單元陣列時使用,或?qū)懭胫羶?nèi)部數(shù)據(jù)存儲器107將數(shù)據(jù)緩存起來,或?qū)懭胱訂卧g數(shù)據(jù)交互暫存器106供子單元間數(shù)據(jù)交互使用,或?qū)懭胩幚砥鏖g數(shù)據(jù)交互暫存器108供處理器間數(shù)據(jù)交互使用,或?qū)懭雰?nèi)部數(shù)據(jù)緩存器103待輸出至處理器外。(6)外部數(shù)據(jù)寫出裝置104 用于將緩存于內(nèi)部數(shù)據(jù)緩存器103的子單元的結(jié)果數(shù)據(jù)輸出至處理器外。第三部分運算單元運算單元即處理單元陣列20,處理單元是一個算術(shù)邏輯運算單元,可實現(xiàn)基本的算術(shù)運算功能和邏輯運算功能,以及一些定制的算術(shù)邏輯運算功能。 處理單元之間通過路由單元連接,以實現(xiàn)處理單元之間的靈活且快速的數(shù)據(jù)傳遞。整個處理單元陣列通過時序控制單元控制,以協(xié)調(diào)處理單元陣列的輸入、運算、輸出之間的時序關(guān)系。處理單元陣列可實現(xiàn)對大批量數(shù)據(jù)進(jìn)行循環(huán)操作的快速處理。第四部分同步控制裝置同步控制裝置即子單元間同步控制器。其實現(xiàn)多個子單元(1個至η個,η為子單元個數(shù))均完成其各自的指定子任務(wù)后,多個子單元才可執(zhí)行其各自子任務(wù)序列中的下一個子任務(wù)。子單元間同步控制器105實現(xiàn)了某任務(wù)在被劃分為多個子任務(wù)后,分發(fā)至多個子單元并行執(zhí)行,多個子單元并行執(zhí)行完多個子任務(wù)后的同步。同步后才可開始下一任務(wù)的并行化執(zhí)行。本發(fā)明實施例的核心構(gòu)思之一在于,對固定數(shù)的作用范圍進(jìn)行了深入分析,在此基礎(chǔ)上將其分為不變固定數(shù)和可變固定數(shù),通過對不同類別的固定數(shù)進(jìn)行分離存儲,達(dá)到了節(jié)省片內(nèi)存儲資源,提高調(diào)用效率的目的。參考圖2,示出了本發(fā)明的一種動態(tài)可重構(gòu)處理器實施例的結(jié)構(gòu)圖,所述動態(tài)可重構(gòu)處理器10包括多個子單元(1,2,. . .,η),各個子單元內(nèi)部設(shè)置有處理單元陣列20,所述動態(tài)可重構(gòu)處理器10還可以包括與所述處理單元陣列20連接的不變固定數(shù)寄存器201和可變固定數(shù)寄存器202, 其中,所述不變固定數(shù)寄存器201與不變固定數(shù)組存儲器203相連接,所述可變固定數(shù)寄存器202與可變固定數(shù)組存儲器204相連接;根據(jù)配置信息從不變固定數(shù)組存儲器的指定位置提取所需的不變固定數(shù)組,并存儲至不變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述不變固定數(shù)寄存器提取所需的不變固定數(shù);和/或,根據(jù)配置信息從可變固定數(shù)組存儲器的指定位置提取所需的可變固定數(shù)組,并存儲至可變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述可變固定數(shù)寄存器提取所需的可變固定數(shù)。在本發(fā)明實施例中,所述固定數(shù)可以為子算法執(zhí)行過程中參與運算的固定值常數(shù);所述不變固定數(shù)可以為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù);所述可變固定數(shù)可以為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù)。具體而言,在具體實現(xiàn)中,一個具體的應(yīng)用可以分為若干個子算法,每一個子算法又可以分為若干個步驟,根據(jù)固定數(shù)在應(yīng)用中的作用范圍,可以將其分為不變固定數(shù)和可變固定數(shù)。固定數(shù)的存儲和調(diào)用是以組為單位進(jìn)行的。一、不變固定數(shù)如果一個固定數(shù)在一個子算法中出現(xiàn)的概率是百分之百,即在執(zhí)行這個子算法時,其中的一個或者幾個步驟一定會用到這個固定數(shù),那么在本發(fā)明實施例中把這樣的固定數(shù)稱為對應(yīng)于該子算法的不變固定數(shù)。對應(yīng)于一個子算法的全部不變固定數(shù)以不變固定數(shù)組的形式進(jìn)行存儲和調(diào)用。每一個不變固定數(shù)組包含若干個不變固定數(shù),調(diào)用時,處理單元陣列根據(jù)配置信息從不變固定數(shù)組中找到當(dāng)前需要的不變固定數(shù)。不變固定數(shù)組的長度可以根據(jù)不同的應(yīng)用進(jìn)行調(diào)整,但是在同一個應(yīng)用中,所有的不變固定數(shù)組的長度是統(tǒng)一的。根據(jù)每個子算法對應(yīng)的不變固定數(shù)的個數(shù)以及不變固定數(shù)組的長度,子算法與不變固定數(shù)組的對應(yīng)關(guān)系有以下三種情況(a)子算法對應(yīng)的不變固定數(shù)的個數(shù)等于或者略小于不變固定數(shù)組的長度,這是比較理想情況,那么該子算法對應(yīng)的全部不變固定數(shù)存儲在一個不變固定數(shù)組中,即該子算法對應(yīng)于一個不變固定數(shù)組。(b)子算法對應(yīng)的不變固定數(shù)的個數(shù)遠(yuǎn)小于不變固定數(shù)組的長度,這種情況下,一個不變固定數(shù)組可以存儲多個子算法對應(yīng)的不變固定數(shù),即多個子算法共享一個不變固定數(shù)組。(c)子算法對應(yīng)的不變固定數(shù)的個數(shù)大于不變固定數(shù)組的長度,這種情況下,將子算法對應(yīng)的不變固定數(shù)按照調(diào)用的先后順序分為若干個部分(具體分為幾個部分需要根據(jù)不變固定數(shù)的個數(shù)和不變固定數(shù)組的長度的長度進(jìn)行計算),每個部分占用一個不變固定數(shù)組,所以一個子算法對應(yīng)多個不變固定數(shù)組。二、可變固定數(shù)在執(zhí)行子算法的一個具體步驟時,除了不變固定數(shù),還會用到可變固定數(shù),即每次執(zhí)行該步驟時(在一個應(yīng)用中,每一個步驟都可能被多次執(zhí)行),可能會用到不同的固定數(shù),但是,所有可能會被用到的這些固定數(shù)的集合事先可知,不需要從外部傳遞,所以在本發(fā)明實施例中稱之為可變固定數(shù)。該步驟的某一次執(zhí)行所用到的全部可變固定數(shù)構(gòu)成一個可變固定數(shù)組,一個步驟的多次執(zhí)行對應(yīng)著多個可變固定數(shù)組,在當(dāng)前運算中具體需要調(diào)用哪一個可變固定數(shù)組由配置信息決定??勺児潭〝?shù)組的長度可以根據(jù)不同的應(yīng)用進(jìn)行調(diào)整,但是在同一個應(yīng)用中,所有的可變固定數(shù)組的長度是固定不變的。在確定了對固定數(shù)的分類之后,本發(fā)明實施例還設(shè)計了固定數(shù)的存儲裝置,包括不變固定數(shù)組存儲器,可變固定數(shù)組存儲器,不變固定數(shù)寄存器,可變固定數(shù)寄存器。一、不變固定數(shù)組存儲器不變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部不變固定數(shù)組,每個不變固定數(shù)組可能包含一個子算法對應(yīng)的全部不變固定數(shù),也可能包含多個子算法對應(yīng)的不變固定數(shù),還可能只包含一個子算法對應(yīng)的部分不變固定數(shù)。不變固定數(shù)組存儲器放置在動態(tài)可重構(gòu)處理器的子單元內(nèi)部,對應(yīng)于一個處理單元陣列。二、可變固定數(shù)組存儲器可變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部可變固定數(shù)組,每個可變固定數(shù)組包含子算法的一個步驟在某一次執(zhí)行過程中對應(yīng)的全部可變固定數(shù)。當(dāng)執(zhí)行該步驟時, 如果配置信息選擇了某一個可變固定數(shù)組,則該組可變固定數(shù)全部參與當(dāng)前運算。可變固定數(shù)組存儲器放置在動態(tài)可重構(gòu)處理器的子單元內(nèi)部,對應(yīng)于一個處理單元陣列。三、不變固定數(shù)寄存器在調(diào)用不變固定數(shù)時,首先將不變固定數(shù)組從不變固定數(shù)組存儲器中讀出,然后存儲到不變固定數(shù)寄存器,供處理單元調(diào)用。不變固定數(shù)寄存器的大小等同于一個不變固定數(shù)組。不變固定數(shù)寄存器放置在動態(tài)可重構(gòu)處理器的子單元內(nèi)部,對應(yīng)于一個處理單元陣列。
四、可變固定數(shù)寄存器在調(diào)用可變固定數(shù)時,首先將可變固定數(shù)組從可變固定數(shù)組存儲器中讀出,然后存儲到可變固定數(shù)寄存器,供處理單元調(diào)用。可變固定數(shù)寄存器的大小等同于一個可變固定數(shù)組??勺児潭〝?shù)寄存器放置在動態(tài)可重構(gòu)處理器的子單元內(nèi)部,對應(yīng)于一個處理單元陣列。之所以將不變固定數(shù)組和可變固定數(shù)組分離存儲,是因為一個子算法可能只對應(yīng)著一個或者少數(shù)幾個不變固定數(shù)組,將不變固定數(shù)組單獨存儲,只需要一個或者少數(shù)幾個不變固定數(shù)組大小的存儲空間。如果將不變固定數(shù)組和可變固定數(shù)組放在一起存儲,則為了滿足同時調(diào)用的需要,每存儲一個可變固定數(shù)組都要同時存儲一個相應(yīng)的不變固定數(shù)組,會大大增加對存儲空間的需求。固定數(shù)組(包括不變固定數(shù)組、可變固定數(shù)組)、固定數(shù)組存儲器(包括不變固定數(shù)組存儲器、可變固定數(shù)組存儲器)以及固定數(shù)寄存器(包括不變固定數(shù)寄存器、可變固定數(shù)寄存器)之間的關(guān)系示意圖如圖3所示。其中,固定數(shù)組,包括固定數(shù)1、固定數(shù)2、固定數(shù)3等存儲在固定數(shù)組存儲器中,固定數(shù)組存儲器中包括固定數(shù)組1、固定數(shù)組2、固定數(shù)組 3等,在固定數(shù)調(diào)用時,從固定數(shù)組存儲器中提取對應(yīng)固定數(shù)組并寫入固定數(shù)寄存器中,即固定數(shù)寄存器中存儲的是由固定數(shù)1、固定數(shù)2、固定數(shù)3等組成的固定數(shù)組。在本發(fā)明實施例中,不變固定數(shù)的集合對應(yīng)的是一個子算法,即子算法需要的全部不變固定數(shù)都在這個集合中。每個子算法包含若干個步驟,那么可變固定數(shù)組對應(yīng)的就是一個步驟,且這種對應(yīng)不是一一對應(yīng)的關(guān)系,而是多對一的對應(yīng)關(guān)系,每一個步驟對應(yīng)多個可變固定數(shù)組,具體執(zhí)行的時候,從多個可變固定數(shù)組中選擇需要的那一個。所以可以看出來,如果把一個步驟需要的不變固定數(shù)和可變固定數(shù)放在一起存儲,那么一個步驟對應(yīng)多少個可變固定數(shù)組,相應(yīng)的不變固定數(shù)就要同時被存儲多少次(不管該步驟選擇哪一組固定數(shù),其中不變固定數(shù)的部分都是一樣的);而如果采取分離存儲的方法,不變固定數(shù)只需要被存儲一次。參考圖4,示出了本發(fā)明的一種動態(tài)可重構(gòu)處理器的固定數(shù)調(diào)用方法實施例的步驟流程圖,其中,所述動態(tài)可重構(gòu)處理器包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;所述固定數(shù)為子算法執(zhí)行過程中參與運算的固定值常數(shù),所述固定數(shù)包括不變固定數(shù)與可變固定數(shù),所述不變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù),所述可變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù);本實施例具體可以包括以下步驟步驟401、在針對某一應(yīng)用進(jìn)行初始化時,把該應(yīng)用中所需使用的不變固定數(shù)組存儲到不變固定數(shù)組存儲器中,把該應(yīng)用中所需使用的可變固定數(shù)組存儲到可變固定數(shù)組存儲器中;步驟402、解析配置信息,若需要調(diào)用不變固定數(shù),則根據(jù)配置信息從不變固定數(shù)組存儲器中的指定位置讀出所需要的不變固定數(shù)組,并將其存儲到不變固定數(shù)寄存器中; 若需要調(diào)用可變固定數(shù),則根據(jù)配置信息從可變固定數(shù)組存儲器中的指定位置讀出所需要的可變固定數(shù)組,并將其存儲到可變固定數(shù)寄存器中;
步驟403、處理單元陣列按照配置信息從不變固定數(shù)寄存器中調(diào)用需要的不變固定數(shù),以及,按照配置信息從可變固定數(shù)寄存器中調(diào)用需要的可變固定數(shù)。在本發(fā)明的一種優(yōu)選實施例中,所述配置信息具體可以包括1)是否調(diào)用固定數(shù);2)調(diào)用不變固定數(shù)還是可變固定數(shù);3)所需要的不變固定數(shù)在不變固定數(shù)寄存器中的位置信息;4)所需要的可變固定數(shù)在可變固定數(shù)寄存器中的位置信息。在具體實現(xiàn)中,一個子算法的執(zhí)行可以劃分為若干個步驟,其中有固定數(shù)參與的步驟就會涉及到固定數(shù)的調(diào)用問題,本發(fā)明實施例中固定數(shù)調(diào)用機(jī)制涉及以下操作1、初始化系統(tǒng)在針對某一應(yīng)用進(jìn)行初始化的時候,會把該應(yīng)用中所使用到的全部固定數(shù)以組為單位存儲到固定數(shù)組存儲器中,其中,不變固定數(shù)組存儲到不變固定數(shù)組存儲器,可變固定數(shù)組存儲到可變固定數(shù)組存儲器。2、更新固定數(shù)寄存器(a)每一個步驟開始之前,處理器首先解析配置信息,如果該步驟需要調(diào)用固定數(shù),則處理器根據(jù)配置信息更新固定數(shù)寄存器。(b)根據(jù)配置信息從不變固定數(shù)組存儲器中的指定位置讀出所需要的不變固定數(shù)組,將其存儲到不變固定數(shù)寄存器,供處理單元調(diào)用。(c)根據(jù)配置信息從可變固定數(shù)組存儲器中的指定位置讀出所需要的可變固定數(shù)組,將其存儲到可變固定數(shù)寄存器,供處理單元調(diào)用。(d)在每一個有固定數(shù)參與的步驟執(zhí)行之前,不變固定數(shù)寄存器和可變固定數(shù)寄存器都會被更新。3、處理單元調(diào)用固定數(shù)固定數(shù)寄存器中的數(shù)據(jù)更新之后,處理單元按照配置信息從固定數(shù)寄存器中調(diào)用需要的固定數(shù)。每個處理單元的配置信息包括(1)是否調(diào)用固定數(shù)。(2)調(diào)用不變固定數(shù)還是可變固定數(shù)。(3)所需要的不變固定數(shù)在不變固定數(shù)寄存器中的序號。(4)所需要的可變固定數(shù)在可變固定數(shù)寄存器中的序號。根據(jù)以上信息,處理單元即可從固定數(shù)寄存器中調(diào)用所需要的固定數(shù)。為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下通過一個簡單的例子來說明本發(fā)明固定數(shù)的存儲和調(diào)用機(jī)制。假設(shè)在一個處理單元陣列上三次執(zhí)行同一個子算法的同一步驟,每一次用到的固定數(shù)如下第一次al,a2,bl,b2,b3第二次al,a2,b4,b5,b6第三次al,a2,b7,b8,b9al和a2是該子算法對應(yīng)的不變固定數(shù),即每一次執(zhí)行該子算法的該步驟時al和 a2都會被調(diào)用,它們和該子算法的其它不變固定數(shù)組成一個不變固定數(shù)組(此例中不考慮多個子算法共享一個不變固定數(shù)組的情況以及一個子算法對應(yīng)多個不變固定數(shù)組的情況),在初始化時被寫入不變固定數(shù)組存儲器。bl、1^2、b3,b4、b5、M和b7、b8、b9分別組成三個可變固定數(shù)組,每一次執(zhí)行該步
驟時從三個可變固定數(shù)組中選擇一個參與運算(假設(shè)三個可變固定數(shù)組已經(jīng)囊括了該步驟可能需要的全部可變固定數(shù)組),在初始化時這三個可變固定數(shù)組都被寫入可變固定數(shù)組存儲器。假設(shè)當(dāng)前應(yīng)用中,不變固定數(shù)組的長度是5,可變固定數(shù)組的長度是3,則固定數(shù)組存儲示意圖如圖5所示,圖中,χ代表其它不變固定數(shù)固定數(shù)的調(diào)用過程包括1、在執(zhí)行這一步驟之前,首先要對固定數(shù)寄存器進(jìn)行更新。a)根據(jù)配置信息,在不變固定數(shù)組存儲器中找到所需的不變固定數(shù)組,即X,al, a2,X,X,將其存儲到不變固定數(shù)寄存器中。b)根據(jù)配置信息,在可變固定數(shù)組存儲器中找到所需的可變固定數(shù)組,假設(shè)此次運算需要第三組可變固定數(shù)b7,b8,b9,則將其存儲到可變固定數(shù)寄存器中。2、固定數(shù)寄存器更新完畢后,每個處理單元根據(jù)配置信息調(diào)用所需的固定數(shù)?,F(xiàn)規(guī)定處理單元配置信息格式如圖6所示左起第1位1-調(diào)用固定數(shù);0不調(diào)用固定數(shù)。
左起第2位1-調(diào)用不變固定數(shù);0——調(diào)用可變固定數(shù)。
左起第3 5位不變固定數(shù)在不變固定數(shù)寄存器中的序號。
左起第6 7位可變固定數(shù)在可變固定數(shù)寄存器中的序號。
左起第8位預(yù)留。
做了以上規(guī)定后,則每一個處理單元可根據(jù)以下配置信息調(diào)用所需的固定數(shù)
11011XXX:調(diào)用不變固定數(shù)al.
11010XXX:調(diào)用不變固定數(shù)3-2 ο
10ΧΧΧ00Χ 調(diào)用可變固定數(shù)b9。
10XXX01X:調(diào)用可變固定數(shù)b8。
10XXX10X:調(diào)用可變固定數(shù)b7。
本實施例的描述中未詳盡之處,可以參見前述實施例中的相關(guān)說明,在此就不贅述了。
以上對本發(fā)明所提供的一種動態(tài)可重構(gòu)處理器以及這種動態(tài)重構(gòu)處理器的固定
數(shù)調(diào)用方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種動態(tài)可重構(gòu)處理器,其特征在于,所述動態(tài)可重構(gòu)處理器包括多個子單元,各個子單元內(nèi)部設(shè)置有處理單元陣列,所述動態(tài)可重構(gòu)處理器還包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,其中,所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;根據(jù)配置信息從不變固定數(shù)組存儲器的指定位置提取所需的不變固定數(shù)組,并存儲至不變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述不變固定數(shù)寄存器提取所需的不變固定數(shù);和/或,根據(jù)配置信息從可變固定數(shù)組存儲器的指定位置提取所需的可變固定數(shù)組, 并存儲至可變固定數(shù)寄存器,所述處理單元陣列根據(jù)配置信息從所述可變固定數(shù)寄存器提取所需的可變固定數(shù)。
2.如權(quán)利要求1所述的動態(tài)可重構(gòu)處理器,其特征在于,所述固定數(shù)為子算法執(zhí)行過程中參與運算的固定值常數(shù);所述不變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù);所述可變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù)。
3.如權(quán)利要求2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述不變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部不變固定數(shù)組;每個不變固定數(shù)組包含一個子算法對應(yīng)的全部不變固定數(shù);或者,每個不變固定數(shù)組包含多個子算法對應(yīng)的不變固定數(shù);或者,每個不變固定數(shù)組包含一個子算法對應(yīng)的部分不變固定數(shù)。
4.如權(quán)利要求2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述可變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部可變固定數(shù)組;每個可變固定數(shù)組包含子算法的一個步驟在某一次執(zhí)行過程中對應(yīng)的全部可變固定數(shù)。
5.如權(quán)利要求3所述的動態(tài)可重構(gòu)處理器,其特征在于,所述不變固定數(shù)寄存器的大小等同于一個不變固定數(shù)組。
6.如權(quán)利要求4所述的動態(tài)可重構(gòu)處理器,其特征在于,所述可變固定數(shù)寄存器的大小等同于一個可變固定數(shù)組。
7.如權(quán)利要求1所述的動態(tài)可重構(gòu)處理器,其特征在于,所述處理單元陣列包括多個算術(shù)邏輯運算單元,所述多個算術(shù)邏輯運算單元通過路由單元連接,所述處理單元陣列通過時序控制單元控制。
8.一種動態(tài)可重構(gòu)處理器的固定數(shù)調(diào)用方法,其特征在于,所述動態(tài)可重構(gòu)處理器包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,其中,所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;所述固定數(shù)為子算法執(zhí)行過程中參與運算的固定值常數(shù),所述固定數(shù)包括不變固定數(shù)與可變固定數(shù),所述不變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的同一固定數(shù),所述可變固定數(shù)為在執(zhí)行子算法的具體步驟時用到的不同固定數(shù);所述的方法包括在針對某一應(yīng)用進(jìn)行初始化時,把該應(yīng)用中所需使用的不變固定數(shù)組存儲到不變固定數(shù)組存儲器中,把該應(yīng)用中所需使用的可變固定數(shù)組存儲到可變固定數(shù)組存儲器中;解析配置信息,若需要調(diào)用不變固定數(shù),則根據(jù)配置信息從不變固定數(shù)組存儲器中的指定位置讀出所需要的不變固定數(shù)組,并將其存儲到不變固定數(shù)寄存器中;若需要調(diào)用可變固定數(shù),則根據(jù)配置信息從可變固定數(shù)組存儲器中的指定位置讀出所需要的可變固定數(shù)組,并將其存儲到可變固定數(shù)寄存器中;處理單元陣列按照配置信息從不變固定數(shù)寄存器中調(diào)用需要的不變固定數(shù),以及,按照配置信息從可變固定數(shù)寄存器中調(diào)用需要的可變固定數(shù)。
9.如權(quán)利要求8所述的方法,其特征在于,所述配置信息包括1)是否調(diào)用固定數(shù);2)調(diào)用不變固定數(shù)還是可變固定數(shù);3)所需要的不變固定數(shù)在不變固定數(shù)寄存器中的位置信息;4)所需要的可變固定數(shù)在可變固定數(shù)寄存器中的位置信息。
10.如權(quán)利要求8或9所述的方法,其特征在于,所述不變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部不變固定數(shù)組;每個不變固定數(shù)組包含一個子算法對應(yīng)的全部不變固定數(shù);或者,每個不變固定數(shù)組包含多個子算法對應(yīng)的不變固定數(shù);或者,每個不變固定數(shù)組包含一個子算法對應(yīng)的部分不變固定數(shù);所述可變固定數(shù)組存儲器用于存儲一個應(yīng)用中的全部可變固定數(shù)組每個可變固定數(shù)組包含子算法的一個步驟在某一次執(zhí)行過程中對應(yīng)的全部可變固定
全文摘要
本發(fā)明提供了一種動態(tài)可重構(gòu)處理器及其固定數(shù)的調(diào)用方法,所述動態(tài)可重構(gòu)處理器包括與所述處理單元陣列連接的不變固定數(shù)寄存器和可變固定數(shù)寄存器,其中,所述不變固定數(shù)寄存器與不變固定數(shù)組存儲器相連接,所述可變固定數(shù)寄存器與可變固定數(shù)組存儲器相連接;所述處理單元陣列根據(jù)配置信息從所述不變固定數(shù)寄存器提取所需的不變固定數(shù);和/或,從所述可變固定數(shù)寄存器提取所需的可變固定數(shù)。本發(fā)明可以在盡可能減小片內(nèi)存儲面積的情況下,提高調(diào)用效率,以實現(xiàn)固定數(shù)的高速讀取。
文檔編號G06F9/34GK102184090SQ20111014037
公開日2011年9月14日 申請日期2011年5月27日 優(yōu)先權(quán)日2011年5月27日
發(fā)明者劉雷波, 尹首一, 戚斌, 時龍興, 曹鵬, 朱敏, 楊軍, 王延升, 魏少軍 申請人:清華大學(xué)