欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法

文檔序號:8298924閱讀:430來源:國知局
基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件領(lǐng)域,尤其涉及一種基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法。
【背景技術(shù)】
[0002]典型的可重構(gòu)處理器架構(gòu)中包含了一個通用處理器和一個或多個可重構(gòu)處理單元(Reconfigurable Processing Unit, RPU)。可重構(gòu)處理器可以說填補了通用處理器與ASIC之間的空白,兼具了通用處理器的靈活性和ASIC (Applicat1n Specific IntegratedCircuit)的高效性。粗粒度可重構(gòu)架構(gòu)中可重構(gòu)處理單元的數(shù)據(jù)通路寬度大于8位,相對于細粒度可重構(gòu)架構(gòu)而言,其有編程方便、編譯速度快等特點。雖然粗粒度可重構(gòu)處理器有如此好的特性,但由于其結(jié)構(gòu)的特殊性,如果沒有高級語言與編譯器的支持,對其編程將會是一種挑戰(zhàn)。因為編程者不僅要知道通用處理器的編程語言,也要掌握硬件編程語言(如Verilog, VHDL),同時還要對底層的硬件有很好的理解。因此,對粗粒度可重構(gòu)處理器編程比較困難,這將極大地阻礙可重構(gòu)計算的發(fā)展。
[0003]為了解決對粗粒度可重構(gòu)處理器編程困難的問題,現(xiàn)有技術(shù)中很多面向粗粒度可重構(gòu)處理器的高級語言已經(jīng)被研宄者提出。這些高級語言的設(shè)計方法主要有兩類:
[0004]第一類方法是像SA-C全新地設(shè)計一套語言,這種方法的缺陷是對原有代碼的兼容性差、對程序員的要求高(重新學(xué)習(xí)一門新的語言)、相應(yīng)編譯器的設(shè)計難度高。
[0005]第二類方法是對原有高級語言進行并行性擴展。該類方法又存在兩種并行性擴展方式。第一種方式是像OpenACC和OpenMP那樣,通過編譯器的預(yù)處理命令來進行高級語言的擴展。這種并行性擴展方式的缺點是需要程序員對預(yù)處理命令有深入理解,而且程序的可讀性差,開發(fā)難度大,除此之外,該種擴展方式很難實現(xiàn)復(fù)雜的并行模式。第二種方式是像OpenCL和CUDA那樣在原語言級基礎(chǔ)上進行并行性擴展,該種擴展方式向下兼容性好,可讀性強,對程序員要求低,編程靈活能實現(xiàn)更多的并行模式。然而,采用這種方式擴展的語言的缺點是只能適用于兩層異構(gòu)結(jié)構(gòu)的計算架構(gòu),對于特殊的三層或多層次異構(gòu)結(jié)構(gòu)不再適用。

【發(fā)明內(nèi)容】

[0006]本發(fā)明要解決的技術(shù)問題是提出一種基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法,能夠在三層或多層次異構(gòu)結(jié)構(gòu)的原語言級基礎(chǔ)上進行并行性擴展?;诖?,本發(fā)明提供一種基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法,其中,所述基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)包括用于可重構(gòu)計算的處理單元陣列、用于控制所述處理單元陣列的協(xié)控制器,以及用于調(diào)度、啟動與運行所述協(xié)控制器的主控制器,并行擴展方法包括
[0007]分別定義運行于所述主控制器上的普通函數(shù)、運行于所述協(xié)控制器上的任務(wù)函數(shù)以及運行于所述處理單元陣列上的子任務(wù)函數(shù),其中所述任務(wù)函數(shù)由所述普通函數(shù)調(diào)用,所述子任務(wù)函數(shù)由所述協(xié)控制器調(diào)用。
[0008]可選的,所述擴展方法是在ANSI C語言的基礎(chǔ)上進行原語言級的擴展。
[0009]可選的,所述函數(shù)的定義方法通過添加關(guān)鍵字的形式來實現(xiàn)。
[0010]可選的,任務(wù)函數(shù)的調(diào)用在程序執(zhí)行過程中包括資源申請、實參傳遞、可執(zhí)行文件傳遞以及協(xié)控制器啟動控制等步驟。
[0011]可選的,子任務(wù)函數(shù)的調(diào)用在程序執(zhí)行過程中包括資源申請、實參傳遞、配置信息傳遞以及處理單元啟動控制等步驟。
[0012]可選的,所述主控制器、協(xié)控制器以及處理單元陣列的內(nèi)存互相獨立。
[0013]可選的,所述任務(wù)函數(shù)和子任務(wù)函數(shù)的實參傳遞為隱式傳遞。
[0014]可選的,所述主存儲器與所述共享存儲器之間實際操作數(shù)據(jù)與計算結(jié)果的傳遞為顯式傳遞。
[0015]可選的,所述任務(wù)函數(shù)與所述子任務(wù)函數(shù)的調(diào)用為異步調(diào)用。
[0016]可選的,所述普通函數(shù)與所述任務(wù)函數(shù)中均包含同步函數(shù),分別用于同步所述協(xié)控制器與所述處理單元陣列進行的異步操作。
[0017]本發(fā)明提供的基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)的并行擴展方法中,所述基于多層次異構(gòu)結(jié)構(gòu)的可重構(gòu)架構(gòu)包括用于可重構(gòu)計算的處理單元陣列、用于控制所述處理單元陣列的協(xié)控制器,以及用于調(diào)度、啟動與運行所述協(xié)控制器的主控制器,面向上述可重構(gòu)架構(gòu),本發(fā)明的擴展方法將ANSI C基礎(chǔ)上擴展并定義三類函數(shù):普通函數(shù)、任務(wù)函數(shù)與子任務(wù)函數(shù),相互之間能實現(xiàn)靈活調(diào)用,因此能充分實現(xiàn)復(fù)雜的并行模式,有效挖掘多層次異構(gòu)結(jié)構(gòu)可重構(gòu)架構(gòu)的并行計算能力。
【附圖說明】
[0018]圖1為本發(fā)明一實施例所述可重構(gòu)架構(gòu)的結(jié)構(gòu)示意圖;
[0019]圖2為本發(fā)明一實施例的主控制器、協(xié)控制器以及處理單元陣列中的程序示意圖;
[0020]圖3為本發(fā)明一實施例所述的程序計算流程示意圖。
【具體實施方式】
[0021]以下結(jié)合附圖和具體實施例對本發(fā)明作進一步詳細說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準(zhǔn)的比率,僅用以方便、明晰地輔助說明本發(fā)明實施例的目的。
[0022]本發(fā)明所述的可重構(gòu)架構(gòu)(處理器計算模型圖)如圖1所示,該可重構(gòu)處理器架構(gòu)主要包括了一個主控制器、多個可重構(gòu)處理單元(Reconfigurable Process Unit, RPU)、主存儲器、直接存儲訪問單元(Direct Memory Access, DMA)和系統(tǒng)總線構(gòu)成。其中主控制器主要用于執(zhí)行程序中不適合RPU處理的串行代碼并負(fù)責(zé)兩個RPU的調(diào)度、啟動與運行,RI3U則負(fù)責(zé)計算程序中一些計算密集的可并行代碼。RI3U主要由I個負(fù)責(zé)可重構(gòu)處理單元陣列(Processing Element Array, PEA)控制的協(xié)控制器、4個負(fù)責(zé)可重構(gòu)計算的PEA和4個用于數(shù)據(jù)存儲的共享存儲器(Shared Memory, SM)所組成,如圖1中的擴展圖所示。協(xié)控制器主要是用來負(fù)責(zé)搬運4個PEA計算所需的數(shù)據(jù)與配置信息,控制PEA的啟動、運行與終止。
[0023]這種特殊的異構(gòu)粗粒度可重構(gòu)架構(gòu)中包括了三部分計算模塊,分別是主控制器、協(xié)控制器和PEA,三者的內(nèi)存空間都是獨立的,不能直接進行相互訪問。其中,所述主存儲器作為主控制器的內(nèi)存,SM作為協(xié)控制器的內(nèi)存。主控制器與協(xié)控制器之間、主控制器與PEA之間以及協(xié)控制器與PEA之間的數(shù)據(jù)傳遞都是通過DMA來完成的。這三部分計算模塊共同組成了一個三層次的可重構(gòu)異構(gòu)架構(gòu)。
[0024]原有的可重構(gòu)處理器并行計算語言不適用該種特定的三層次異構(gòu)可重構(gòu)架構(gòu)。本發(fā)明面向這種粗粒度可重構(gòu)器提出了一種并行標(biāo)記方法。這種并行標(biāo)記方法是在ANSI C語言的基礎(chǔ)上進行的原語言級的擴展,其包括了函數(shù)標(biāo)記、函數(shù)調(diào)用、內(nèi)存操作擴展與同步擴展。其中所有并行標(biāo)記擴展都會以“―gr_XXXX”的形式出現(xiàn)。
[0025]I)函數(shù)標(biāo)記:對應(yīng)計算模型中包括了三部分的計算模塊,本發(fā)明將ANSI C的函數(shù)分為三類。第一類函數(shù)為普通函數(shù),其代碼將會在主控制器上運行;第二類函數(shù)為任務(wù)函數(shù),其代碼將會在協(xié)控制器上運行;第三類函數(shù)為子任務(wù)函數(shù),其代碼將會映射到PEA上運行。本發(fā)明將會以關(guān)鍵字的形式來區(qū)分這三類函數(shù)。為了保持與原有ANSI C的兼容性,這些關(guān)鍵字嵌入到ANSI C文法中非終結(jié)符“funct1n-specifier”的產(chǎn)生式內(nèi),如公式(I)所示。任務(wù)函數(shù)的定義由函數(shù)說明符“—gr_task”來標(biāo)記,子任務(wù)函數(shù)的定義由函數(shù)說明符“―gr_SubtaSk”來標(biāo)記。同時對于任務(wù)函數(shù)與子任務(wù)函數(shù)定義時有一定約束,其函數(shù)不能有返回值,即函數(shù)返回類型為“void”。
[0026]funct1n-specifier:
[0027]inline
[0028]I _gr_task
[0029]I—gr_subtask (I)
[0030]2)函數(shù)調(diào)用:本發(fā)明所定義的三類函數(shù)將分別在三種計算模塊中運行,普通函數(shù)在主控制器上運行,任務(wù)函數(shù)在協(xié)控制器上運行,而子任務(wù)函數(shù)則映射到PEA上運行。由于RPU由主控制器調(diào)用,PEA由協(xié)控制器調(diào)用,因此對應(yīng)到函數(shù)調(diào)用上便有任務(wù)函數(shù)由普通函數(shù)調(diào)用,子任務(wù)函數(shù)由協(xié)控制器調(diào)用。任務(wù)函數(shù)與子任務(wù)函數(shù)的調(diào)用語法分別如公式(2)與公式(3)所示:
[0031]TaskFunc (Args) (2)
[0032]SubTaskFunciPEA_NOi(Args) (3)
[0033]TaskFunc與SubTaskFunc分別表示在協(xié)控制器上運行的任務(wù)函數(shù)名與在PEA上運行的子任務(wù)函數(shù)名;PEA_N0表示所調(diào)用PEA的標(biāo)記號(0-3),Args表示函數(shù)實參。任務(wù)函數(shù)與子任務(wù)函數(shù)的調(diào)用形式都是異步調(diào)用,即普通函數(shù)調(diào)用了任務(wù)函數(shù)后,不需要等待任務(wù)函數(shù)執(zhí)行完便可繼續(xù)執(zhí)行別的操作;任務(wù)函數(shù)調(diào)用了子任務(wù)函數(shù)后,也不需要等待子任務(wù)函數(shù)執(zhí)行完便可繼續(xù)執(zhí)行別的操作。
[0034]3)內(nèi)存操作擴展:本發(fā)明面向的可重構(gòu)架構(gòu)中三部分內(nèi)存空間相互獨立,相互間的數(shù)據(jù)傳遞都是通過DMA來完成,但考慮到對用戶的友好性,本發(fā)明讓這種數(shù)據(jù)傳輸盡可能以隱式傳遞的形式呈現(xiàn)。主存儲器與協(xié)控制器內(nèi)存空間之間的數(shù)據(jù)傳遞是隱式的數(shù)據(jù)傳遞,其傳遞是通過任務(wù)函數(shù)調(diào)用來實現(xiàn)的,傳遞的是任務(wù)函數(shù)的實參;同樣協(xié)控制器內(nèi)存與PEA共享內(nèi)存之間的數(shù)據(jù)傳遞也是隱式的,其傳遞是通過子任務(wù)函數(shù)調(diào)用來實現(xiàn)的,傳遞的是子任務(wù)函數(shù)的實參。而一個例外是,PEA實際操作數(shù)據(jù)及計算結(jié)果在主存儲器與共享內(nèi)存之間的傳遞是通過任務(wù)函數(shù)顯式調(diào)用內(nèi)存操作函數(shù)來實現(xiàn)的,其調(diào)用語法如公式(4)和公式(5)所示,其中公式(4)是將數(shù)據(jù)從主存儲器拷貝至標(biāo)記號為SMId的共享內(nèi)存,公式
(5)是將數(shù)據(jù)從標(biāo)記號為SMId的共享內(nèi)存拷貝至主存儲器:
[0035]void__gr_MemcpyGtoS (int SMId, unsigned
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
特克斯县| 友谊县| 静安区| 泽普县| 山阴县| 贞丰县| 通许县| 徐闻县| 民丰县| 页游| 开鲁县| 泰安市| 锦州市| 蓝田县| 永定县| 彰化市| 利辛县| 河池市| 旌德县| 合肥市| 广东省| 绵阳市| 呼伦贝尔市| 巴楚县| 贵定县| 德昌县| 贵德县| 郴州市| 江达县| 平舆县| 河间市| 茶陵县| 基隆市| 灌云县| 东方市| 电白县| 九龙城区| 临洮县| 新乐市| 延长县| 宝丰县|