專利名稱:一種動態(tài)可重構(gòu)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)的技術(shù)領(lǐng)域,特別涉及一種動態(tài)可重構(gòu)處理器。
背景技術(shù):
動態(tài)可重構(gòu)處理器是一種新型的處理器構(gòu)架,其結(jié)合了軟件的靈活性和硬件的高效性。和傳統(tǒng)單核微處理器相比,不僅可以改變控制流,還可以改變數(shù)據(jù)通路,具有高性能、 低功耗、靈活性好、擴(kuò)展性好的優(yōu)點(diǎn),尤其適合于處理計算密集型的算法,例如媒體處理、模式識別、基帶處理等。因此動態(tài)可重構(gòu)處理器也成為目前處理器結(jié)構(gòu)的一個重要發(fā)展方向, 如歐洲微電子中心(IMEC)的ADRES處理器和惠普(HP)的CHESS處理器,前者由緊耦合的超長指令字(Very Long Instruction fford,VLIff)處理器內(nèi)核和粗顆粒度并行矩陣計算的可重構(gòu)硬件構(gòu)成,后者由大量可重構(gòu)算術(shù)計算單元陣列構(gòu)成。動態(tài)可重構(gòu)處理器的核心一般為一個二維的可重構(gòu)算術(shù)邏輯單元(ALU)陣列,該結(jié)構(gòu)是并行計算以提高處理能力的基礎(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)單核、少核處理器大大的提升了計算性能。另一方面,相對于傳統(tǒng)的靜態(tài)可重構(gòu)電路,如用大部分的現(xiàn)場可編程邏輯陣列(FPGA) 來實(shí)現(xiàn)處理器功能時,動態(tài)的可重構(gòu)特性使得處理器能夠通過時分復(fù)用以大大減少所需的電路面積。對于大部分算法流圖,其結(jié)構(gòu)都是不規(guī)則的,當(dāng)把它們布局到一個規(guī)則的可重構(gòu)算術(shù)邏輯陣列時,由于陣列的規(guī)模限制,很容易出現(xiàn)算法的部分結(jié)構(gòu)無法布局進(jìn)陣列,如圖 1所示的算法就是不可能布局進(jìn)一個4x4的陣列當(dāng)中,所以必然需要分割成兩次配置順序執(zhí)行,而這兩次配置之間的數(shù)據(jù)相關(guān),包括圖1中圓塊1所示的縱向邊界數(shù)據(jù)和圓塊2所示的橫向邊界數(shù)據(jù),這些邊界數(shù)據(jù)是需要緩存的。其中,橫向的邊界數(shù)據(jù)傳遞可以通過陣列內(nèi)部的旁路結(jié)構(gòu)傳遞至輸出端口,和縱向的邊界數(shù)據(jù)一樣進(jìn)入數(shù)據(jù)輸出通路,寫到存儲器。在它們被下次配置調(diào)用時再從外部存儲器中讀取。這樣做的優(yōu)點(diǎn)是系統(tǒng)配置簡單而且規(guī)則,但其缺點(diǎn)也在于,第一,由于外部存儲器的讀寫速度比較慢,使得運(yùn)算切換效率不高。第二,由于通常的可重構(gòu)陣列沒有縱向的互聯(lián)線,所以橫向的邊界數(shù)據(jù)需要旁路很多運(yùn)算單元以傳遞至下方的輸出端口,浪費(fèi)了可重構(gòu)硬件的資源。因此,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是提供一種動態(tài)可重構(gòu)處理器系統(tǒng)中批量數(shù)據(jù)緩存的裝置,以提高動態(tài)可重構(gòu)處理器對于算法流圖切割后的切換效率,節(jié)省可重構(gòu)硬件資源。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種動態(tài)可重構(gòu)處理器系統(tǒng)中批量數(shù)據(jù)緩存的裝置,以提高動態(tài)可重構(gòu)處理器對于算法流圖切割后的切換效率,節(jié)省可重構(gòu)硬件資源。
為了解決上述問題,本發(fā)明公開了一種動態(tài)可重構(gòu)處理器,包括可重構(gòu)單元陣列;與所述可重構(gòu)單元陣列相連的寄存器堆;所述可重構(gòu)單元陣列根據(jù)配置信息向所述寄存器堆寫入輸出數(shù)據(jù),以及,從所述寄存器堆讀取輸入數(shù)據(jù)。優(yōu)選的,所述動態(tài)可重構(gòu)處理器還包括輸入FIFO、輸出 FIFO ;連接在所述輸入FIFO與可重構(gòu)單元陣列之間的預(yù)輸入單元;連接在所述可重構(gòu)單元陣列與輸出FIFO之間的輸出選擇單元;所述寄存器堆與所述預(yù)輸入單元和輸出選擇單元相連;所述輸出選擇單元根據(jù)配置信息向所述寄存器堆寫入可重構(gòu)單元陣列的運(yùn)算結(jié)果數(shù)據(jù),所述預(yù)輸入單元根據(jù)配置信息從所述寄存器堆讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù)。優(yōu)選的,所述寄存器堆用于緩存算法流圖分割時的邊界數(shù)據(jù)。優(yōu)選的,其特征在于,所述寄存器堆位于可重構(gòu)單元陣列內(nèi)部。優(yōu)選的,所述的動態(tài)可重構(gòu)處理器還包括與所述寄存器堆相連的常數(shù)存儲器;所述可重構(gòu)單元陣列在執(zhí)行運(yùn)算前,從所述常數(shù)存儲器中讀取常數(shù)更新其內(nèi)部寄存器堆的內(nèi)容。優(yōu)選的,所述配置信息包括所述預(yù)輸入單元讀取數(shù)據(jù)的寄存器堆地址,以及,輸出選擇單元寫入數(shù)據(jù)的寄存器堆地址。優(yōu)選的,所述預(yù)輸入單元根據(jù)配置信息從所述寄存器堆讀取的運(yùn)算所需的數(shù)據(jù)為,所述輸出選擇單元上一次向所述寄存器堆寫入的運(yùn)算結(jié)果數(shù)據(jù)。優(yōu)選的,所述輸出選擇單元還用于根據(jù)配置信息向所述輸出FIFO輸出運(yùn)算結(jié)果數(shù)據(jù),所述預(yù)輸入單元還用于根據(jù)配置信息從所述輸入FIFO讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù)。優(yōu)選的,所述寄存器堆與輸入FIFO、輸出FIFO具有相同的接口寬度。優(yōu)選的,所述可重構(gòu)單元陣列用于根據(jù)配置信息執(zhí)行運(yùn)算。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明提出了動態(tài)可重構(gòu)處理器內(nèi)批量數(shù)據(jù)緩存的結(jié)構(gòu),在動態(tài)可重構(gòu)陣列內(nèi)部添加通用寄存器堆,不用再通過外部存儲器,而是使用通用寄存器堆來批量存儲動態(tài)可重構(gòu)處理器的中間數(shù)據(jù),對于陣列而言擁有極高的讀寫速度。同時寄存器堆與可重構(gòu)運(yùn)算邏輯陣列是全互聯(lián)的,即是說,陣列中所有的運(yùn)算邏輯單元都能從該寄存器堆讀取輸入數(shù)據(jù), 也可以將其輸出數(shù)據(jù)寫入該寄存器堆,一次運(yùn)算的結(jié)果即中間數(shù)據(jù)可以直接保存到內(nèi)部寄存器堆中,避免了浪費(fèi)硬件資源將該結(jié)果傳遞至輸出端口,下一次運(yùn)算輸入直接從內(nèi)部寄存器堆讀取,從而方便配置的切換,提高數(shù)據(jù)切換的效率,節(jié)省了硬件開銷。本發(fā)明可以應(yīng)用于緩存算法流圖切割時的邊界數(shù)據(jù),以提高動態(tài)可重構(gòu)處理器對于算法流圖切割后的切換效率,并節(jié)省可重構(gòu)硬件資源。在本發(fā)明實(shí)施例的結(jié)構(gòu)中,寄存器堆可以設(shè)置在可重構(gòu)運(yùn)算邏輯陣列內(nèi)部,同時寄存器堆與可重構(gòu)運(yùn)算邏輯陣列是全互聯(lián)的,即是說,陣列中所有的運(yùn)算邏輯單元都能從該寄存器堆讀取輸入數(shù)據(jù),也可以將其輸出數(shù)據(jù)寫入該寄存器堆,一次運(yùn)算的結(jié)果即中間數(shù)據(jù)可以直接保存到內(nèi)部寄存器堆中,避免了浪費(fèi)硬件資源將該結(jié)果傳遞至輸出端口,下一次運(yùn)算輸入直接從內(nèi)部寄存器堆讀取,從而方便配置的切換,提高數(shù)據(jù)切換的效率,節(jié)省了硬件資源。
圖1是一種算法流圖分割中的邊界數(shù)據(jù)示意圖;圖2是一種典型動態(tài)可重構(gòu)處理器中可重構(gòu)單元陣列的結(jié)構(gòu)示意圖;圖3是一種算法流圖的示例;圖4是圖3所示的算法流圖到可重構(gòu)單元陣列的映射示意圖;圖5是本發(fā)明的一種動態(tài)可重構(gòu)處理器實(shí)施例1的一個結(jié)構(gòu)框圖;圖6是本發(fā)明的一種動態(tài)可重構(gòu)處理器實(shí)施例2的一個結(jié)構(gòu)框圖;圖7是本發(fā)明的一種動態(tài)可重構(gòu)處理器實(shí)施例3的一個結(jié)構(gòu)框圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下對算法流圖的布局原理進(jìn)一步說明。算法或者應(yīng)用,最終都可以劃歸成圖的表示形式??芍貥?gòu)處理器內(nèi)計算單元一般采用陣列的結(jié)構(gòu),參考圖2表示一個計算資源;方框和方框之間有路由邏輯,實(shí)現(xiàn)之間的數(shù)據(jù)傳遞。算法流圖可以由可重構(gòu)單元陣列來實(shí)現(xiàn),如圖3中,圓圈表示運(yùn)算或者操作,連線表示數(shù)據(jù)傳遞。圓圈可以用方框?qū)崿F(xiàn),聯(lián)系可以用陣列的路由實(shí)現(xiàn),體現(xiàn)“圖即電路,電路即圖”的思想,這種實(shí)現(xiàn)方式叫做算法流圖到可重構(gòu)單元陣列的映射。圖4即為一次映射后的示意圖。在具體實(shí)現(xiàn)中,不是所有的圖都可以直接向一個具體的可重構(gòu)單元陣列映射。當(dāng)圖的寬度(并行度)或者深度(關(guān)鍵路徑)大于可重構(gòu)單元陣列的寬度或者深度時,則無法直接映射(資源不夠了)。需要將圖分解成兩個或者多個子圖再分別進(jìn)行映射。當(dāng)圖被分解成多個子圖,子圖之間有連線(即數(shù)據(jù)傳遞)時,需要保存邊界上的數(shù)據(jù)(即運(yùn)算的中間數(shù)據(jù))到緩存結(jié)構(gòu)中。邊界數(shù)據(jù)可能同時有多個輸入、多個輸出。均需要考慮到緩存結(jié)構(gòu)的實(shí)現(xiàn)中來。公知的是,處理器由計算單元和存儲單元兩部分組成。計算單元的數(shù)據(jù)按照被使用的頻度劃分,連續(xù)使用的數(shù)據(jù)(頻度最高)存儲在寄存器堆中,間歇使用的數(shù)據(jù)存放在片上的memory中,很長時間也不使用的數(shù)據(jù)放置在片外(比如硬盤中),這里和計算單元配合使用的存儲裝置就稱為緩存。在具體實(shí)現(xiàn)中,通用處理器和動態(tài)可重構(gòu)處理器都需要緩存裝置。具體而言,通用處理器內(nèi)部的數(shù)據(jù)緩存結(jié)構(gòu)主要包括緩存(Cache Memory)和寄存器堆。Cache是處理器和內(nèi)存間的臨時存儲器,容量較小但是讀寫速度快于內(nèi)存,可以緩解內(nèi)存讀寫速度和處理器的不匹配。緩存中的所有數(shù)據(jù)都是內(nèi)存中的一小部分,而且該部分較大可能即將被處理器訪問,所以當(dāng)處理器調(diào)用大量數(shù)據(jù)時,內(nèi)存被避開,讀取速度被加快。寄存器堆是處理器的重要組成部分,用于高速暫存指令、數(shù)據(jù)和地址,是系統(tǒng)獲取資料最快捷的途徑。寄存器的讀寫速度也非常快,是處理器的架構(gòu)單元,是一條指令的輸出和輸入能夠索引到的寄存器群組。通用處理器是單一運(yùn)算單元,串行運(yùn)算,單次運(yùn)算一般需要兩到三個輸入,一個輸出。動態(tài)可重構(gòu)處理器,通常是陣列形式,并行運(yùn)算,一般需要較多的輸入輸出。對于動態(tài)可重構(gòu)處理器的現(xiàn)有結(jié)構(gòu)而言,由于動態(tài)可重構(gòu)處理器的運(yùn)算邏輯單元陣列減少了很多數(shù)據(jù)緩存的必要,運(yùn)算的中間數(shù)據(jù)都可以直接傳輸?shù)较乱患夁\(yùn)算邏輯單元的輸入寄存器。而陣列的整體計算結(jié)果通??梢灾苯訉懭胪獠康拇鎯ζ?。因而,本領(lǐng)域技術(shù)人員通常認(rèn)為不需要在動態(tài)可重構(gòu)處理器中設(shè)置批量數(shù)據(jù)緩存裝置,而本專利發(fā)明人發(fā)現(xiàn)這種現(xiàn)有動態(tài)可重構(gòu)處理器的設(shè)計將極大的影響運(yùn)算切換效率。以通用處理器舉例而言,如果計算輸出數(shù)據(jù)很久以后才需要使用(數(shù)據(jù)使用頻度低),或者,片內(nèi)寄存器堆已滿(已經(jīng)用完),則需要將數(shù)據(jù)保存到緩存(cache)或者片上sdram (同步動態(tài)隨機(jī)存儲器),甚至片外memory (如 u盤、硬盤等)。對于通用處理器而言,計算時間可能只要1個周期,但是到cache的保存需要兩個周期,sdram需要 10個周期,片外的ddr需要 100周期,硬盤需要 1000周期。下一次計算的時候同樣需要花費(fèi)很多時間讀入計算單元,并進(jìn)行計算。其中,這里定義的運(yùn)算切換效率=1_(數(shù)據(jù)切換時間/數(shù)據(jù)計算時間)。數(shù)據(jù)切換時間包括上一次計算完成之后數(shù)據(jù)保存到緩存裝置的時間,加上,下一次計算開始之前數(shù)據(jù)從緩存裝置中讀取的時間。數(shù)據(jù)計算時間指,當(dāng)前讀入數(shù)據(jù)要進(jìn)行的計算周期數(shù)。可以看出,對于通用處理器,數(shù)據(jù)保存到外部memory再讀入的情況下,運(yùn)算切換效率很低。由于memory通常帶寬有限(比如8bit、16bit、32bit等);加上動態(tài)可重構(gòu)處理器的子圖邊界數(shù)據(jù)很多,可能同時有多個輸出結(jié)果(比如10個32bit,20個32bit等)。則可重構(gòu)處理器的運(yùn)算切換效率要比通用處理器來的惡化很多(比如10倍,20倍)。正是由于本專利發(fā)明人發(fā)現(xiàn)了以上問題,因而創(chuàng)造性地提出本發(fā)明的核心構(gòu)思之一在于,提出了動態(tài)可重構(gòu)處理器內(nèi)批量數(shù)據(jù)緩存的結(jié)構(gòu),在動態(tài)可重構(gòu)陣列內(nèi)部添加通用寄存器堆,主要用于緩存算法流圖切割時的邊界數(shù)據(jù),以提高動態(tài)可重構(gòu)處理器對于算法流圖切割后的切換效率,并節(jié)省可重構(gòu)硬件資源。參考圖5,示出了本發(fā)明的一種動態(tài)可重構(gòu)處理器實(shí)施例1的一個結(jié)構(gòu)框圖,具體可以包括以下單元可重構(gòu)單元陣列501 ;與所述可重構(gòu)單元陣列501相連的寄存器堆502 ;其中,所述可重構(gòu)單元陣列是動態(tài)可重構(gòu)處理器的核心,用于根據(jù)配置信息執(zhí)行數(shù)據(jù)運(yùn)算。在本發(fā)明實(shí)施例中,可重構(gòu)單元陣列還可以根據(jù)配置信息向所述寄存器堆寫入輸出數(shù)據(jù),以及,從所述寄存器堆讀取輸入數(shù)據(jù)。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述寄存器堆可以用于緩存算法流圖分割時的邊界數(shù)據(jù)。并且,所述寄存器堆可以設(shè)置在可重構(gòu)單元陣列內(nèi)部?,F(xiàn)有技術(shù)中,運(yùn)算切換時,數(shù)據(jù)需要從輸出FIFO輸出,然后等再次使用時從輸入 FIFO輸入,數(shù)據(jù)切換效率不高。因此在設(shè)計可重構(gòu)處理器的緩存裝置時盡可能不使用外部存儲器,使用寄存器堆的時候也要仔細(xì)設(shè)計,盡可能設(shè)計成訪問速度快、訪問帶寬大的結(jié)構(gòu)。在本發(fā)明實(shí)施例的結(jié)構(gòu)中,寄存器堆位于可重構(gòu)運(yùn)算邏輯陣列內(nèi)部,因此數(shù)據(jù)不用再通過外部存儲器,而是使用通用寄存器堆來批量存儲動態(tài)可重構(gòu)處理器的中間數(shù)據(jù), 對于陣列而言擁有極高的讀寫速度。同時寄存器堆與可重構(gòu)運(yùn)算邏輯陣列是全互聯(lián)的,即是說,陣列中所有的運(yùn)算邏輯單元都能從該寄存器堆讀取輸入數(shù)據(jù),也可以將其輸出數(shù)據(jù)寫入該寄存器堆,一次運(yùn)算的結(jié)果即中間數(shù)據(jù)可以直接保存到內(nèi)部寄存器堆中,避免了浪費(fèi)硬件資源將該結(jié)果傳遞至輸出端口,下一次運(yùn)算輸入直接從內(nèi)部寄存器堆讀取,從而方便配置的切換,提高數(shù)據(jù)切換的效率,節(jié)省了硬件開銷。當(dāng)需要對可重構(gòu)陣列進(jìn)行流水線設(shè)計時,陣列內(nèi)部的緩存寄存器堆可以提高流水的效率。因?yàn)槿绻麅纱闻渲瞄g存在數(shù)據(jù)相關(guān)性,全互聯(lián)的寄存器堆能夠提早將下一拍的數(shù)據(jù)準(zhǔn)備好,避免插入空泡,提高流水的效率。參考圖6,示出了本發(fā)明的一種動態(tài)可重構(gòu)處理器實(shí)施例2的一個結(jié)構(gòu)框圖,具體可以包括以下單元輸入FIF0601、輸出FIF0606、可重構(gòu)單元陣列603 ;連接在所述輸入FIFO與可重構(gòu)單元陣列之間的預(yù)輸入單元602 ;連接在所述可重構(gòu)單元陣列與輸出FIFO之間的輸出選擇單元604 ;與所述可重構(gòu)單元陣列相連的寄存器堆605,所述寄存器堆還與所述預(yù)輸入單元和輸出選擇單元相連;其中,所述輸出選擇單元根據(jù)配置信息向所述寄存器堆寫入可重構(gòu)單元陣列的運(yùn)算結(jié)果數(shù)據(jù),所述預(yù)輸入單元根據(jù)配置信息從所述寄存器堆讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù)。在具體實(shí)現(xiàn)中,所述動態(tài)可重構(gòu)處理器可以與外部存儲器相連。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述輸入FIF0501可以用于外部數(shù)據(jù)的輸入;所述預(yù)輸入單元還可以根據(jù)配置信息從所述輸入FIF0501讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù);所述輸出選擇單元 504還可以根據(jù)配置信息向所述輸出FIFO輸出運(yùn)算結(jié)果數(shù)據(jù);所述輸出FIFO可以向外部存儲器輸出數(shù)據(jù)。更具體而言,所述配置信息可以包括所述預(yù)輸入單元讀取數(shù)據(jù)的寄存器堆地址, 以及,輸出選擇單元寫入數(shù)據(jù)的寄存器堆地址。輸入FIFO讀入外部數(shù)據(jù),將數(shù)據(jù)傳遞給預(yù)輸入單元處理,預(yù)輸入單元根據(jù)配置信息中讀取數(shù)據(jù)的寄存器堆地址,從對應(yīng)地址中提取數(shù)據(jù),可重構(gòu)單元陣列預(yù)輸入單元提取的數(shù)據(jù)進(jìn)行運(yùn)算,然后輸出運(yùn)算結(jié)果,運(yùn)算結(jié)果數(shù)據(jù)將由輸出選擇單元根據(jù)配置信息中寫入數(shù)據(jù)的寄存器堆地址,寫入寄存器堆的對應(yīng)地址?;蛘撸鲚敵鲞x擇單元根據(jù)配置信息向所述輸出FIFO輸出運(yùn)算結(jié)果數(shù)據(jù)。當(dāng)需要對可重構(gòu)陣列進(jìn)行流水線設(shè)計時,陣列內(nèi)部的緩存寄存器堆可以提高流水的效率。因?yàn)槿绻麅纱闻渲瞄g存在數(shù)據(jù)相關(guān)性,全互聯(lián)的寄存器堆能夠提早將下一拍的數(shù)據(jù)準(zhǔn)備好,避免插入空泡,提高流水的效率。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述動態(tài)可重構(gòu)處理器還可以包括與所述寄存器堆相連的常數(shù)存儲器;所述可重構(gòu)單元陣列在執(zhí)行運(yùn)算前,從所述常數(shù)存儲器中讀取常數(shù)更新其內(nèi)部寄存器堆的內(nèi)容。在具體實(shí)現(xiàn)中,所述寄存器堆與輸入FIFO、輸出FIFO具有相同的接口寬度。為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下結(jié)合圖7所示的動態(tài)可重構(gòu)處理器的結(jié)構(gòu)圖,通過一個具體示例進(jìn)一步說明本發(fā)明。在本例中,所述動態(tài)可重構(gòu)處理器具體可以包括以下單元輸入FIF0(INPUT_FIF0) 701 ;預(yù)輸入單元(PRE_INPUT_x88)702 ;可重構(gòu)單元陣列(RC_LINEx8) 703 ;輸出選擇單元(0utput_Select)704;寄存器堆(Constant Reg Group) 705 ;
輸出 FIFO (0UTPUT_FIF0) 706 ;因?yàn)閳D分割的邊界數(shù)據(jù)和常數(shù)等效,本示例中,所述動態(tài)可重構(gòu)處理器還可以包括與所述寄存器堆相連的常數(shù)存儲器。所述預(yù)輸入單元根據(jù)配置信息從所述輸入FIFO和寄存器堆讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù),將數(shù)據(jù)傳遞給可重構(gòu)單元陣列。其中,配置信息為預(yù)輸入單元讀取數(shù)據(jù)的寄存器堆地址,讀取的數(shù)據(jù)包括輸出選擇單元上一次向所述寄存器堆寫入的運(yùn)算結(jié)果數(shù)據(jù)。本示例中可重構(gòu)單元陣列,是一個8x8 RCA陣列,用于根據(jù)配置信息執(zhí)行運(yùn)算,向輸出選擇單元輸入數(shù)據(jù)。所述8x8 RCA每次根據(jù)配置信息進(jìn)行計算前,從與所述寄存器堆相連的常數(shù)存儲器中讀取常數(shù)更新可重構(gòu)單元陣列8x8 RCA內(nèi)容。數(shù)據(jù)進(jìn)入輸出選擇單元后,輸出選擇單元根據(jù)配置信息將RC_LINE_x8的數(shù)據(jù)輸出,包括根據(jù)配置信息向所述輸出FIFO輸出運(yùn)算結(jié)果數(shù)據(jù),還根據(jù)配置信息向寄存器堆寫入可重構(gòu)單元陣列的運(yùn)算結(jié)果數(shù)據(jù),這是使用通用寄存器堆批量緩存數(shù)據(jù)的比較好的一種實(shí)現(xiàn)方法,節(jié)省了硬件開銷,易于實(shí)現(xiàn)。其中輸入FIFO,輸出FIFO是整個計算單元的10 buffer,用來隔離外部數(shù)據(jù)和陣列數(shù)據(jù),使得可重構(gòu)單元陣列可以獨(dú)立、流暢的進(jìn)行并行運(yùn)算,外部數(shù)據(jù)是進(jìn)入輸入FIFO, 再由輸入FIFO進(jìn)入預(yù)輸入單元的。本示例中,輸出選擇單元提供64個RC結(jié)果寄存器到輸出FIFO或者內(nèi)部緩存(常數(shù)寄存器組)的通路。該示例中寄存器堆與輸入FIFO、輸出FIFO具有相同的接口寬度。接下來對本示例的技術(shù)效果進(jìn)行說明,假設(shè)運(yùn)算1輸出16個數(shù),運(yùn)算2輸入其中 8個數(shù)據(jù),輸出FIFO和輸入FIFO的寬度均為4,寄存器堆寬度等同F(xiàn)IFO寬度。原本可重構(gòu)單元陣列的數(shù)據(jù)結(jié)果經(jīng)過從輸出FIFO輸出需要4個周期,保存到外部存儲器需要16個周期,從外部存儲器讀出需要8個周期,輸入FIFO輸入2個周期,數(shù)據(jù)切換時間總計30個周期;利用本專利結(jié)構(gòu)將數(shù)據(jù)保存到可重構(gòu)單元陣列內(nèi)部的寄存器堆中,保存到寄存器堆需要4個周期,寄存器堆從讀出需要2個周期,數(shù)據(jù)切換時間總共6個周期。由此可見,本專利的結(jié)構(gòu)通過在動態(tài)可重構(gòu)處理器的可重構(gòu)單元陣列中添加寄存器堆,使得數(shù)據(jù)不需要經(jīng)過外部存儲器,直接寫入寄存器堆,下次運(yùn)算時可以直接從常數(shù)存儲器讀取常數(shù)更新其內(nèi)部寄存器堆的內(nèi)容,從而提高了數(shù)據(jù)切換效率,節(jié)省了硬件資源。本發(fā)明在動態(tài)可重構(gòu)處理器的可重構(gòu)單元陣列中添加寄存器堆,所述可重構(gòu)單元陣列根據(jù)配置信息向所述寄存器堆寫入輸出數(shù)據(jù),以及,從所述寄存器堆讀取輸入數(shù)據(jù)。所述寄存器堆位于可重構(gòu)單元陣列的內(nèi)部,因此數(shù)據(jù)不用再通過外部存儲器,提高了數(shù)據(jù)切換效率,節(jié)省了硬件資源。需要說明的是,所述內(nèi)部寄存器堆,可以選擇用也可以選擇不用。依據(jù)數(shù)據(jù)使用的頻度。數(shù)據(jù)頻繁使用,則盡可能放置到內(nèi)部寄存器堆。另外,這種緩存裝置,同時也可以用于其他數(shù)據(jù)類別的管理。比如,如果寄存器堆可以由可重構(gòu)單元陣列外部的接口改寫,則通過此接口可以快速寫入立即數(shù)或者常數(shù)。這和cache的強(qiáng)制更新特性是相似的。本說明書中的各個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似的部分互相參見即可。以上對本發(fā)明所提供的一種動態(tài)可重構(gòu)處理器進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種動態(tài)可重構(gòu)處理器,其特征在于,包括可重構(gòu)單元陣列;與所述可重構(gòu)單元陣列相連的寄存器堆;所述可重構(gòu)單元陣列根據(jù)配置信息向所述寄存器堆寫入輸出數(shù)據(jù),以及,從所述寄存器堆讀取輸入數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的動態(tài)可重構(gòu)處理器,其特征在于,還包括輸入FIFO、輸出FIFO ;連接在所述輸入FIFO與可重構(gòu)單元陣列之間的預(yù)輸入單元;連接在所述可重構(gòu)單元陣列與輸出FIFO之間的輸出選擇單元;所述寄存器堆與所述預(yù)輸入單元和輸出選擇單元相連;所述輸出選擇單元根據(jù)配置信息向所述寄存器堆寫入可重構(gòu)單元陣列的運(yùn)算結(jié)果數(shù)據(jù),所述預(yù)輸入單元根據(jù)配置信息從所述寄存器堆讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述寄存器堆用于緩存算法流圖分割時的邊界數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的動態(tài)可重構(gòu)處理器,其特征在于,所述寄存器堆位于可重構(gòu)單元陣列內(nèi)部。
5.根據(jù)權(quán)利要求4所述的動態(tài)可重構(gòu)處理器,其特征在于,還包括與所述寄存器堆相連的常數(shù)存儲器;所述可重構(gòu)單元陣列在執(zhí)行運(yùn)算前,從所述常數(shù)存儲器中讀取常數(shù)更新其內(nèi)部寄存器堆的內(nèi)容。
6.根據(jù)權(quán)利要求2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述配置信息包括所述預(yù)輸入單元讀取數(shù)據(jù)的寄存器堆地址,以及,輸出選擇單元寫入數(shù)據(jù)的寄存器堆地址。
7.根據(jù)權(quán)利要求6所述的動態(tài)可重構(gòu)處理器,其特征在于,所述預(yù)輸入單元根據(jù)配置信息從所述寄存器堆讀取的運(yùn)算所需的數(shù)據(jù)為,所述輸出選擇單元上一次向所述寄存器堆寫入的運(yùn)算結(jié)果數(shù)據(jù)。
8.根據(jù)權(quán)利要求2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述輸出選擇單元還用于根據(jù)配置信息向所述輸出FIFO輸出運(yùn)算結(jié)果數(shù)據(jù),所述預(yù)輸入單元還用于根據(jù)配置信息從所述輸入FIFO讀取可重構(gòu)單元陣列運(yùn)算所需的數(shù)據(jù)。
9.根據(jù)權(quán)利要求2所述的動態(tài)可重構(gòu)處理器,其特征在于,所述寄存器堆與輸入FIFO、 輸出FIFO具有相同的接口寬度。
10.根據(jù)權(quán)利要求1所述的動態(tài)可重構(gòu)處理器,其特征在于,所述可重構(gòu)單元陣列用于根據(jù)配置信息執(zhí)行運(yùn)算。
全文摘要
本發(fā)明提供了一種動態(tài)可重構(gòu)處理器,包括可重構(gòu)單元陣列;與所述可重構(gòu)單元陣列相連的寄存器堆;所述可重構(gòu)單元陣列根據(jù)配置信息向所述寄存器堆寫入輸出數(shù)據(jù),以及,從所述寄存器堆讀取輸入數(shù)據(jù)。本發(fā)明可以提高動態(tài)可重構(gòu)處理器對于算法流圖切割后的切換效率,節(jié)省可重構(gòu)硬件資源。
文檔編號G06F15/80GK102253921SQ20111015951
公開日2011年11月23日 申請日期2011年6月14日 優(yōu)先權(quán)日2011年6月14日
發(fā)明者劉雷波, 尹首一, 時龍興, 曹鵬, 朱建峰, 朱敏, 楊軍, 王延升, 魏少軍 申請人:清華大學(xué)