專利名稱:考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)軟件技術(shù)領(lǐng)域,涉及一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法。
背景技術(shù):
根據(jù)劃分層次和粒度,有關(guān)動態(tài)軟硬件劃分的研究主要分成兩種思路。
第一種思路由喬治等人在2003年設(shè)計(jì)自動化會議上提出,并在其后期工作中不斷發(fā)展,主要是利用專門高速緩沖存儲器記錄軟件程序中循環(huán)執(zhí)行的頻度,選擇執(zhí)行頻度最高的循環(huán),將其機(jī)器代碼反匯編后提取數(shù)據(jù)流圖,在額外的微處理器上運(yùn)行一個(gè)在線綜合程序?qū)?shù)據(jù)流圖綜合為邏輯電路,并配置到可編程器件上。這樣設(shè)計(jì)人員無需考慮軟硬件劃分,可以直接設(shè)計(jì)純軟件實(shí)現(xiàn)的應(yīng)用系統(tǒng),而由動態(tài)軟硬件劃分來決定實(shí)際的劃分方案。因這種思路從底層入手,可以稱之為指令級動態(tài)軟硬件劃分方法。
另一種思路從高層著眼,把配置到可編程器件的硬件電路看作一種硬件進(jìn)(線)程,通過構(gòu)建支持硬件進(jìn)(線)程的操作系統(tǒng),實(shí)現(xiàn)軟硬件進(jìn)(線)程的相互遷移和切換。因此,可以稱之為進(jìn)(線)程級動態(tài)軟硬件劃分。面向部分可重構(gòu)FPGA的在線綜合(On-Line Synthesis for Partially Reconfigurable FPGAs.)詳細(xì)討論了面向可重構(gòu)系統(tǒng)的操作系統(tǒng)中硬件進(jìn)程調(diào)度的在線布局問題;設(shè)計(jì)了一個(gè)稱為BORPH的操作系統(tǒng),利用Unix進(jìn)程來表示硬件任務(wù),并通過擴(kuò)展Unix系統(tǒng)進(jìn)程服務(wù)接口實(shí)現(xiàn)對硬件任務(wù)的支持。國內(nèi)復(fù)旦大學(xué)的周博、邱衛(wèi)東、彭澄廉研究了利用軟硬件多任務(wù)模型來降低軟硬件進(jìn)程遷移開銷,并通過擴(kuò)展μCOS-II嵌入式操作系統(tǒng)實(shí)現(xiàn)了一個(gè)原型系統(tǒng)。
指令級和進(jìn)(線)程級動態(tài)軟硬件劃各有優(yōu)劣。
劃分方法的不足 指令級動態(tài)軟硬件劃分方法 由于需要額外的專用微處理器進(jìn)行在線反匯編、綜合和布局布線,硬件開銷比較大。
另一方面指令級動態(tài)軟硬件劃分粒度目前局限在基本塊內(nèi),結(jié)構(gòu)也局限于單循環(huán)結(jié)構(gòu),性能提升效果有限。
另外,雖然設(shè)計(jì)人員只需提供軟件實(shí)現(xiàn)方案,而把軟硬件劃分和硬件綜合交給專門軟硬件執(zhí)行,但這樣未能利用已有的硬件設(shè)計(jì)資源,這在目前第三方IP(IntellectualProperty知識產(chǎn)權(quán))核十分豐富的情況下,顯得有些浪費(fèi)。進(jìn)(線)程級動態(tài)軟硬件劃分 相對指令級動態(tài)軟硬件劃分而言,進(jìn)(線)程調(diào)度、通信、同步基本由軟件完成,時(shí)間開銷較大。
雖然在一些研究中提出了支持可重構(gòu)計(jì)算操作系統(tǒng)的專門硬件,但主要負(fù)責(zé)配置信息和可重配置資源管理,進(jìn)程調(diào)度和切換還是由軟件完成。
另外,目前的進(jìn)(線)程級動態(tài)軟硬件劃分研究中對軟硬件透明編程模型還關(guān)注不夠,軟件和硬件進(jìn)(線)程對設(shè)計(jì)人員是可見的,程序員創(chuàng)建一個(gè)軟件或硬件進(jìn)(線)程的同時(shí),實(shí)際已暗示了相應(yīng)功能的軟硬件劃分,雖然有可能增加專門代碼和電路來進(jìn)行軟硬件進(jìn)(線)程遷移,但需要同時(shí)修改操作系統(tǒng)和底層硬件以提供支持,對開發(fā)人員的綜合能力要求極高,并非一個(gè)理想的方案。
發(fā)明內(nèi)容
本發(fā)明的所要解決的技術(shù)問題是提供一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法,采用該方法,任務(wù)的執(zhí)行效率顯著提高。
為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案為 一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法,其特征在于,在程序運(yùn)行過程中,進(jìn)行動態(tài)的軟硬件劃分,在可重構(gòu)硬件資源上進(jìn)行一個(gè)或多個(gè)函數(shù)的配置,對待劃分函數(shù)維護(hù)一個(gè)待劃分函數(shù)列表list(f1,…,fm),其中fk為硬件加速比,k為待劃分的一個(gè)函數(shù);k=1,…,m,m為待劃分函數(shù)個(gè)數(shù),硬件加速比定義為
F對應(yīng)待劃分函數(shù)的集合;Ck為函數(shù)k在程序運(yùn)行過程中被調(diào)用的次數(shù),Timeswk為函數(shù)k的軟件執(zhí)行時(shí)間;
為0時(shí)表示函數(shù)k當(dāng)前劃分為硬件,反之表示函數(shù)k當(dāng)前為軟件;Trfk對應(yīng)函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的配置時(shí)間;Timehwk為函數(shù)k的硬件執(zhí)行時(shí)間;Commk為函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的軟硬件通信代價(jià),為硬件與軟件的參數(shù)傳遞時(shí)間;參數(shù)傳遞時(shí)間可以用傳統(tǒng)的仿真工具仿真出來,函數(shù)的軟件執(zhí)行時(shí)間可以由系統(tǒng)中統(tǒng)計(jì)函數(shù)執(zhí)行時(shí)間的函數(shù)得到,具體的一種實(shí)現(xiàn)方法為進(jìn)入函數(shù)時(shí)調(diào)用了dl_update_time_front和dl_get_time函數(shù),在函數(shù)結(jié)尾時(shí)調(diào)用了dl_hw_update_time函數(shù),這些函數(shù)將自動測量和保存該硬件函數(shù)的執(zhí)行時(shí)間; 具體劃分步驟如下 步驟1從列表list(f1,…,fm)中選出最大值fi; 步驟2如果fi已經(jīng)被劃分為硬件,則從列表中刪除fi,更新列表,返回步驟1,否則,進(jìn)入下一步; 步驟3檢測當(dāng)前的可重構(gòu)資源是否足夠,是則將函數(shù)i劃分為硬件,并配置到可重構(gòu)資源上,從列表中刪除fi,更新列表,返回步驟1; 否則,進(jìn)入下一步; 步驟4fi與fj比較,fj為函數(shù)j的硬件加速比,函數(shù)j為已經(jīng)配置在可重構(gòu)資源上的函數(shù)中的一個(gè)函數(shù),且在所有的已經(jīng)配置在可重構(gòu)資源上的函數(shù)中,函數(shù)j所對應(yīng)的加速比最?。蝗绻鹒i大于fj,則將函數(shù)j劃分為軟件,從可重構(gòu)資源中刪除函數(shù)j,返回步驟3;如果fi小于fj,則進(jìn)入步驟4.1; 步驟4.1檢測list是否為空,不空,則保存本次劃分結(jié)果,結(jié)束;如果是空,則計(jì)算關(guān)系矩陣Cst,選出該關(guān)系矩陣Cst中最大值元素cst,將cst對應(yīng)的函數(shù)t加入到待劃分函數(shù)列表list(f1,…,fm)中更新待劃分函數(shù)列表list(f1,…,fm),進(jìn)入步驟4.2; 所述的Cst記錄函數(shù)調(diào)用次序信息,關(guān)系矩陣Cst為m*N個(gè)元素,N為m個(gè)待劃分的函數(shù)可能調(diào)用的所有函數(shù)的個(gè)數(shù);s元素表示當(dāng)前劃分的所有函數(shù),元素cij表示函數(shù)i被調(diào)用后立刻就調(diào)用了函數(shù)j的次數(shù)。
步驟4.2判斷硬件資源對應(yīng)函數(shù)t是否足夠,是則將函數(shù)t配置到硬件中,在列表list(f1,…,fm)中刪除函數(shù)t,否則,返回步驟4.1。
發(fā)明的有益效果 本發(fā)明的技術(shù)主要構(gòu)思是在軟硬件動態(tài)劃分過程中,提出了考慮硬件預(yù)配置的方法,通過衡量軟硬件執(zhí)行某一函數(shù)或任務(wù)的花費(fèi)時(shí)間比值的硬件加速比,某一函數(shù)的硬件加速比越大,說明該函數(shù)越適宜于采用硬件執(zhí)行,在此過程中,并考慮函數(shù)間的調(diào)用關(guān)系,預(yù)先將執(zhí)行概率最大的函數(shù)配置到硬件資源上,基于硬件加速比對函數(shù)進(jìn)行動態(tài)軟硬件配置,充分利用了系統(tǒng)的硬件資源,并且考慮了函數(shù)間的調(diào)用關(guān)系,從而顯著提高整個(gè)系統(tǒng)的任務(wù)處理效率。關(guān)于采用本方法的速度與其他配置方法比較,具體見實(shí)施例中的測試?yán)?br>
另外,從時(shí)間復(fù)雜度分析該算法的時(shí)間復(fù)雜度相較其他算法而言具有較低的時(shí)間復(fù)雜度。對于一個(gè)應(yīng)用實(shí)例,假設(shè)其設(shè)計(jì)中總共調(diào)用了n個(gè)函數(shù),在調(diào)用算法時(shí),List中包含有m個(gè)待劃分的函數(shù)(m≤n),劃分算法的時(shí)間主要花銷在對函數(shù)隊(duì)列的查找、刪除操作上。通常,隊(duì)列的查找和刪除操作的時(shí)間復(fù)雜度可以維持在O(logn),從而算法的復(fù)雜度可以維持在O(mlogm),由于m≤n,算法最差時(shí)間復(fù)雜度可以維持在O(nlog n)。隊(duì)列中每個(gè)函數(shù)對包含有多個(gè)固定大小的屬性值,假設(shè)每個(gè)函數(shù)對占用的空間大小為K,則算法的空間復(fù)雜度為O(Km),由于m≤n,算法最差空間復(fù)雜度可以維持在O(Kn)。遠(yuǎn)低于傳統(tǒng)的一些迭代劃分算法而言,如遺傳算法最好情況下的時(shí)間復(fù)雜度為O(rn^2)等.
圖1為考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法的流程圖; 圖2為軟硬件劃分?jǐn)?shù)據(jù)流圖; 圖3為不同配置下程序的執(zhí)行時(shí)間對照圖; 圖4為JPEG編碼系統(tǒng); 圖5為過程級軟硬件劃分算法三種情況的性能比較圖。
具體實(shí)施例方式 以下結(jié)合附圖對本發(fā)明作進(jìn)一步說明。
問題描述和作何改進(jìn) 軟硬件劃分主要是決定抽象函數(shù)在運(yùn)行時(shí)是動態(tài)鏈接到軟件,還是硬件實(shí)現(xiàn)代碼上。在進(jìn)行劃分前,首先需要確定劃分的對象。而待劃分的函數(shù)可能很多,這樣就需要從中選擇一組,使系統(tǒng)在滿足資源約束的條件下獲得最優(yōu)性能,所以這是一個(gè)約束組合優(yōu)化問題。由于動態(tài)軟硬件劃分在運(yùn)行時(shí)進(jìn)行,需要能根據(jù)劃分后系統(tǒng)運(yùn)行情況改進(jìn)原有劃分。
過程級劃分算法的主要優(yōu)點(diǎn)是1)面積/性能的折中。相比之下,過程級粒度占用面積適中,通信代價(jià)固定。2)對象數(shù)量較小。由于抽象層次較高,而且劃分對象只限于同時(shí)具有軟硬件實(shí)現(xiàn)的過程,從而劃分對象較小,使算法的性能得到提高。采用如下思路來設(shè)計(jì)動態(tài)劃分流程。
算法具體實(shí)現(xiàn) 一.劃分算法問題描述 在滿足體系結(jié)構(gòu)和資源限制的前提下,軟硬件劃分算法的目標(biāo)在于最小化應(yīng)用程序的運(yùn)行時(shí)間,其工作重點(diǎn)在通過將硬件過程遷移到FPGA上執(zhí)行來優(yōu)化序列化的軟件應(yīng)用程序。與通用的多進(jìn)程的軟硬劃分模型不同,動態(tài)鏈接控制可以保證軟硬件執(zhí)行過程串行執(zhí)行,而且硬件過程的通信代價(jià)是固定的。
首先定義相關(guān)概念如下問題的輸入用三元組<F,Areatotal,Tall_software>來表示。其中Areatotal代表系統(tǒng)中最大可用的硬件面積;Tall_software是純軟件的方式來執(zhí)行應(yīng)用程序所花費(fèi)的時(shí)間;F對應(yīng)著應(yīng)用中包含的軟硬件函數(shù)對,其由四元組<C,Timesw,HW,Xnow>組成,其中C是對應(yīng)函數(shù)對總的調(diào)用次數(shù),Timesw表示軟件函數(shù)執(zhí)行時(shí)間;Xnow則為函數(shù)的當(dāng)前劃分結(jié)果,其中Xnow=0或1,為1時(shí)表示函數(shù)i當(dāng)前劃分為硬件,反之為軟件;HW代表硬件實(shí)現(xiàn)方案,其可由三元組<Areahw,Chw,Comm,Timehw,Trf>表示,Areahw代表硬件函數(shù)面積;Chw是該硬件函數(shù)執(zhí)行的次數(shù);Comm是軟硬件通信代價(jià);Timehw為硬件執(zhí)行時(shí)間,Trf對應(yīng)硬件函數(shù)的配置時(shí)間。整個(gè)劃分算法的目標(biāo)是使得公式
具有最小值。其中Chw,HW表示選中函數(shù)的硬件方案執(zhí)行次數(shù);Timesw,F(xiàn)代表F集合中選中的函數(shù)的軟件函數(shù)執(zhí)行時(shí)間;Timehw,HW代表F集合中選中的函數(shù)的硬件函數(shù)執(zhí)行時(shí)間;CommHW代表F集合中選中的函數(shù)的硬件函數(shù)的通信時(shí)間。
由于硬件資源非常有限,所以對任務(wù)的資源占用需要一定的約束條件,在任意時(shí)刻j滿足 二、算法設(shè)計(jì) 上述問題可以看成是一個(gè)0/1背包問題,可采用貪婪法則進(jìn)行最優(yōu)化。在約束條件下,假設(shè)系統(tǒng)已經(jīng)根據(jù)當(dāng)前劃分執(zhí)行了一段時(shí)間。對于每個(gè)函數(shù),下一次劃分決策會受諸多因素影響,將這些因素綜合起來,可計(jì)算出本函數(shù)的劃分傾向度
分析Fi函數(shù)中各項(xiàng)的形式,主要考慮硬件函數(shù)的加速比。如果劃分為硬件實(shí)現(xiàn)能使函數(shù)執(zhí)行得到加速,那么該函數(shù)顯然傾向于劃分為硬件實(shí)現(xiàn),相應(yīng)的子項(xiàng)為
Ci在新一輪劃分完成后將清零,重新統(tǒng)計(jì)函數(shù)i的被調(diào)用次數(shù)。f的值越大,函數(shù)越傾向于劃分為硬件實(shí)現(xiàn)。在劃分過程中,函數(shù)調(diào)用次數(shù)對劃分傾向度有影響,調(diào)用次數(shù)越多,越傾向于劃分為硬件實(shí)現(xiàn)。矩陣C記錄函數(shù)調(diào)用次序信息,cij表示函數(shù)i被調(diào)用后立刻就調(diào)用了函數(shù)j的次數(shù)。獲得Fi的計(jì)算方法后,每次進(jìn)行劃分時(shí),可計(jì)算出所有函數(shù)的Fi值,然后按以下方法選擇劃分為硬件實(shí)現(xiàn)的函數(shù) 顯然,上述軟硬件劃分算法可以根據(jù)系統(tǒng)運(yùn)行的當(dāng)前情況進(jìn)行調(diào)整,因?yàn)槊看蝿澐謺r(shí)xixi如果為0時(shí)表示函數(shù)k當(dāng)前劃分為硬件,反之表示函數(shù)k當(dāng)前為軟件;參數(shù)的值可能由于系統(tǒng)運(yùn)行情況的改變而與前一次不同??紤]獲得系統(tǒng)運(yùn)行信息需要一定時(shí)間,可以采用周期性的方式調(diào)用該算法。另外,還在算法中加入了預(yù)配置機(jī)制,這主要是考慮硬件配置較為耗時(shí),如果能利用其它函數(shù)執(zhí)行時(shí)提前配置需要的硬件模塊,便可能大大降低有效計(jì)算外的開銷。采用啟發(fā)式預(yù)配置方法并利用運(yùn)行時(shí)記錄的函數(shù)調(diào)用次序信息進(jìn)行預(yù)配置,假設(shè)利用一個(gè)矩陣C記錄,cij表示函數(shù)i被調(diào)用后立刻就調(diào)用了函數(shù)j的次數(shù)。如果函數(shù)i當(dāng)前被劃分為硬件實(shí)現(xiàn),并已配置到可重構(gòu)資源上,應(yīng)該考慮將對應(yīng)的函數(shù)k進(jìn)行預(yù)配置,原因是函數(shù)k在下一輪劃分中被劃分為硬件實(shí)現(xiàn)的可能性較高,其中函數(shù)k可通過以下公式確定
如果滿足以上四個(gè)條件,即代表函數(shù)k當(dāng)前劃分為軟件實(shí)現(xiàn),且此時(shí)空閑可重構(gòu)資源足夠,則將函數(shù)k進(jìn)行預(yù)配置。其中Areanow代表系統(tǒng)在當(dāng)前時(shí)刻可用的硬件面積。圖1顯示了預(yù)配置與過程級軟硬件劃分結(jié)合的劃分過程。
評價(jià)函數(shù)將用來評估軟硬件劃分算法解方案的優(yōu)劣,在軟硬件劃分方案給出后,可以經(jīng)過調(diào)度得出該方案的耗時(shí),根據(jù)耗時(shí)情況來判斷本次劃分是否優(yōu)于前次的劃分方案并取而代之。假設(shè)P為當(dāng)前劃分,P’為新的劃分,T為P的時(shí)間函數(shù)(通過調(diào)度獲取)即T(P)。若T(P)≤T(P),則評價(jià)新的劃分為一個(gè)更優(yōu)的解,否則丟棄新劃分。軟硬件劃分經(jīng)過評價(jià)函數(shù)來接受或拒絕新解,使最終結(jié)果趨于最優(yōu)。
三、動態(tài)劃分流程 程序運(yùn)行過程中將自動加載相應(yīng)的硬件函數(shù),軟硬件函數(shù)的執(zhí)行選擇由劃分算法決定,圖2顯示了整個(gè)運(yùn)行時(shí)環(huán)境的數(shù)據(jù)流。
當(dāng)應(yīng)用程序調(diào)用某一函數(shù)時(shí),運(yùn)行時(shí)環(huán)境需對函數(shù)名進(jìn)行分析,從而判斷是否具有相應(yīng)的硬件函數(shù)實(shí)現(xiàn),如果沒有,則繼續(xù)運(yùn)行軟件代碼,否則在軟硬件函數(shù)運(yùn)行時(shí)信息表中為其創(chuàng)建一個(gè)新的記錄并從硬件函數(shù)庫中讀入相應(yīng)的配置信息。這一數(shù)據(jù)結(jié)構(gòu)中主要包括軟硬件函數(shù)執(zhí)行時(shí)間、函數(shù)調(diào)用次數(shù)、硬件函數(shù)面積等將被提供給軟硬件劃分算法的參數(shù)信息。
軟硬件動態(tài)鏈接過程根據(jù)劃分結(jié)果為函數(shù)選擇一種執(zhí)行位置(要么在微處理器上,要在FPGA上),如果調(diào)用的是硬件函數(shù),則首先查詢可重構(gòu)資源管理器,若該硬件函數(shù)尚未配置,則需要進(jìn)行動態(tài)重構(gòu),接著運(yùn)行硬件加速器,最后將執(zhí)行結(jié)果寫入數(shù)據(jù)區(qū)域。
算法性能測評 使用C語言描述我們提出的過程級軟硬件劃分算法。由于實(shí)際已有的軟硬件劃分算法大多采用進(jìn)程作為劃分單位,或采用基本塊(指令級劃分),而我們提出的是在過程級進(jìn)行軟硬件劃分,以自定義的軟硬件抽象函數(shù)為劃分對象,與這些算法難以直接進(jìn)行比較實(shí)驗(yàn)。所以本文考慮平臺的特點(diǎn),設(shè)計(jì)了以下三種方法來評估本文算法的性能,一個(gè)是無動態(tài)重構(gòu)支持;二是加入部分動態(tài)可重構(gòu)后的劃分;三是引入預(yù)配置后的劃分。三種方法都使用JPEG編碼系統(tǒng)(如圖4)進(jìn)行驗(yàn)證。
錯(cuò)誤!未找到引用源。展示了三種方式實(shí)現(xiàn)JPEG編碼所需要的時(shí)間。無動態(tài)重構(gòu)支持的軟硬件劃分性能最差,動態(tài)重構(gòu)下的劃分性能比前者提高了9.93%。引入預(yù)配置后,過程級軟硬件劃分的性能比無動態(tài)重構(gòu)支持的劃分提高了18.44%,比動態(tài)重構(gòu)下的劃分提高了9.45%。實(shí)驗(yàn)表明,隨著可重構(gòu)資源利用效率的不斷提高,過程級軟硬件劃分的優(yōu)勢將更為明顯。
實(shí)施例1 一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法,其特征在于,在程序運(yùn)行過程中,在可重構(gòu)硬件資源上已配置一個(gè)或多個(gè)函數(shù),對待劃分函數(shù)維護(hù)一個(gè)待劃分函數(shù)列表list(f1,…,fm),其中fk為硬件加速比,k為待劃分的一個(gè)函數(shù);k=1,…,m,m為待劃分函數(shù)個(gè)數(shù)
F對應(yīng)待劃分函數(shù)的集合;Ck為函數(shù)k被調(diào)用的次數(shù),Timeswk為函數(shù)k的軟件執(zhí)行時(shí)間;
為0時(shí)表示函數(shù)k當(dāng)前劃分為硬件,反之表示函數(shù)k當(dāng)前為軟件;Trfk對應(yīng)函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的配置時(shí)間;Timehwk為函數(shù)k的硬件執(zhí)行時(shí)間;Commk為函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的軟硬件通信代價(jià),為硬件與軟件的參數(shù)傳遞時(shí)間(可以用傳統(tǒng)的仿真工具仿真出來,函數(shù)的軟件執(zhí)行時(shí)間可以由系統(tǒng)中統(tǒng)計(jì)函數(shù)執(zhí)行時(shí)間的函數(shù)得到); 3DES加密函數(shù)和解密函數(shù)使用一個(gè)硬件加速器,配置時(shí)間為Commk=9.40E-05s;Hamming編碼函數(shù)和解碼函數(shù)使用另一個(gè)加速器,
Commk=7.6E-06s對于一個(gè)復(fù)雜的嵌入式系統(tǒng),一次運(yùn)行可能調(diào)用,這些函數(shù)上千次以上,所以Ck設(shè)為2000,根據(jù)以上參數(shù)可以算出3DES的f=2.07,Hamming編碼的f=0.01。
具體劃分步驟如下 步驟1從列表list(f1,…,fm)中選出最大值fi; 步驟2如果fi已經(jīng)被劃分為硬件,則從列表中刪除fi,更新列表,返回步驟1,否則,進(jìn)入下一步; 步驟3檢測當(dāng)前的可重構(gòu)資源是否足夠,是則將函數(shù)i劃分為硬件,并配置到可重構(gòu)資源上,從列表中刪除fi,更新列表,返回步驟1; 否則,進(jìn)入下一步; 步驟4fi與fj比較,fj為函數(shù)j的硬件加速比,函數(shù)j為已經(jīng)配置在可重構(gòu)資源上的函數(shù)中的一個(gè)函數(shù),且在所有的已經(jīng)配置在可重構(gòu)資源上的函數(shù)中,函數(shù)j所對應(yīng)的加速比最小;如果fi大于fj,則將函數(shù)j劃分為軟件,從可重構(gòu)資源中刪除函數(shù)j,返回步驟3;如果fi小于fj,則進(jìn)入步驟4.1; 步驟4.1檢測list是否為空,不空,則保存本次劃分結(jié)果,結(jié)束;如果是空,則計(jì)算關(guān)系矩陣Cst,選出該關(guān)系矩陣Cst中最大值元素cst,將cst對應(yīng)的函數(shù)t加入到待劃分函數(shù)列表list(f1,…,fm)中更新待劃分函數(shù)列表list(f1,…,fm),進(jìn)入步驟4.2; 所述的Cst記錄函數(shù)調(diào)用次序信息,關(guān)系矩陣Cst為m*N個(gè)元素,N為m個(gè)待劃分的函數(shù)可能調(diào)用的所有函數(shù)的個(gè)數(shù);s元素表示當(dāng)前劃分的所有函數(shù),元素cij表示函數(shù)i被調(diào)用后立刻就調(diào)用了函數(shù)j的次數(shù)。
步驟4.2判斷硬件資源對應(yīng)函數(shù)t是否足夠,是則將函數(shù)t配置到硬件中,在列表list(f1,…,fm)中刪除函數(shù)t,否則,返回步驟4.1。
測試?yán)龑?shí)驗(yàn)同時(shí)運(yùn)行兩項(xiàng)任務(wù),3DES加密函數(shù)和解密函數(shù)使用一個(gè)硬件加速器,配置時(shí)間為3.0179526s,Hamming編碼函數(shù)和解碼函數(shù)使用另一個(gè)加速器,配置時(shí)間為2.3684901秒,分別測試它們對1K或1M數(shù)據(jù)進(jìn)行處理,在不同配置下程序所消耗的時(shí)間,實(shí)驗(yàn)結(jié)果如圖3所示。其中static表示程序運(yùn)行時(shí)加速器已經(jīng)靜態(tài)配置完畢,而dynamic表示加速器將在程序運(yùn)行時(shí)動態(tài)配置;all software表示上四個(gè)函數(shù)執(zhí)行方式為純軟件執(zhí)行,all hardware為純硬件執(zhí)行,3des hardware表示3DES加/解密函數(shù)用純硬件執(zhí)行,而hamming編/解碼則用純軟件執(zhí)行,hamming hardware則正好相反,random hardware表示這四個(gè)函數(shù)的執(zhí)行方式是隨機(jī)的,這五個(gè)不同的配置可以通過替換劃分算法庫來實(shí)現(xiàn)。
由于軟件執(zhí)行速度慢,從而導(dǎo)致動態(tài)重構(gòu)情況下全軟件實(shí)現(xiàn)模式性能最差。從圖中還可以看到3DES的軟硬件實(shí)現(xiàn)是影響程序性能的關(guān)鍵,在處理的數(shù)據(jù)較大的情況下,只將它動態(tài)劃分到硬件實(shí)現(xiàn),取得幾乎與靜態(tài)配置同樣高的性能,比純軟件實(shí)現(xiàn)至少快一個(gè)數(shù)量級,這是因?yàn)棰?DES的加速比和執(zhí)行時(shí)間比Hamming更大(如圖3示);②3DES配置時(shí)間與運(yùn)行時(shí)間比可以忽略。
權(quán)利要求
1.一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法,其特征在于,在程序運(yùn)行過程中,進(jìn)行動態(tài)的軟硬件劃分,在可重構(gòu)硬件資源上進(jìn)行一個(gè)或多個(gè)函數(shù)的配置,對待劃分函數(shù)維護(hù)一個(gè)待劃分函數(shù)列表list(f1,…,fm),其中fk為硬件加速比,k為待劃分的一個(gè)函數(shù);k=1,…,m,m為待劃分函數(shù)個(gè)數(shù),硬件加速比定義為
F對應(yīng)待劃分函數(shù)的集合;Ck為函數(shù)k在程序運(yùn)行過程中被調(diào)用的次數(shù),Timeswk為函數(shù)k的軟件執(zhí)行時(shí)間;
為0時(shí)表示函數(shù)k當(dāng)前劃分為硬件,反之表示函數(shù)k當(dāng)前為軟件;Trfk對應(yīng)函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的配置時(shí)間;Timehwk為函數(shù)k的硬件執(zhí)行時(shí)間;Commk為函數(shù)k的硬件實(shí)現(xiàn)函數(shù)的軟硬件通信代價(jià),為硬件與軟件的參數(shù)傳遞時(shí)間;
具體劃分步驟如下
步驟1從列表list(f1,…,fm)中選出最大值fi;
步驟2如果fi已經(jīng)被劃分為硬件,則從列表中刪除fi,更新列表,返回步驟1,否則,進(jìn)入下一步;
步驟3檢測當(dāng)前的可重構(gòu)資源是否足夠,是則將函數(shù)i劃分為硬件,并配置到可重構(gòu)資源上,從列表中刪除fi,更新列表,返回步驟1;
否則,進(jìn)入下一步;
步驟4fi與fj比較,fj為函數(shù)j的硬件加速比,函數(shù)j為已經(jīng)配置在可重構(gòu)資源上的函數(shù)中的一個(gè)函數(shù),且在所有的已經(jīng)配置在可重構(gòu)資源上的函數(shù)中,函數(shù)j所對應(yīng)的加速比最?。蝗绻鹒i大于fj,則將函數(shù)j劃分為軟件,從可重構(gòu)資源中刪除函數(shù)j,返回步驟3;如果fi小于fj,則進(jìn)入步驟4.1;
步驟4.1檢測list是否為空,不空,則保存本次劃分結(jié)果,結(jié)束;如果是空,則計(jì)算關(guān)系矩陣Cst,選出該關(guān)系矩陣Cst中最大值元素cst,將cst對應(yīng)的函數(shù)t加入到待劃分函數(shù)列表list(f1,…,fm)中更新待劃分函數(shù)列表list(f1,…,fm),進(jìn)入步驟4.2;
所述的Cst記錄函數(shù)調(diào)用次序信息,關(guān)系矩陣Cst為m*N個(gè)元素,N為m個(gè)待劃分的函數(shù)可能調(diào)用的所有函數(shù)的個(gè)數(shù);s元素表示當(dāng)前劃分的所有函數(shù),元素cij表示函數(shù)i被調(diào)用后立刻就調(diào)用了函數(shù)j的次數(shù)。
步驟4.2判斷硬件資源對應(yīng)函數(shù)t是否足夠,是則將函數(shù)t配置到硬件中,在列表list(f1,…,fm)中刪除函數(shù)t,否則,返回步驟4.1。
全文摘要
本發(fā)明提供了一種考慮硬件預(yù)配置因素的動態(tài)軟硬件劃分方法,其特征在于,在程序運(yùn)行過程中,進(jìn)行動態(tài)的軟硬件劃分,在可重構(gòu)硬件資源上進(jìn)行一個(gè)或多個(gè)函數(shù)的配置,對待劃分函數(shù)維護(hù)一個(gè)待劃分函數(shù)列表list(f1,…,fm),其中fk為定義硬件加速比,k為待劃分的一個(gè)函數(shù);k=1,…,m,m為待劃分函數(shù)個(gè)數(shù),基于硬件加速比對函數(shù)配置,并且考慮到硬件預(yù)配置因素。本發(fā)明基于硬件加速比對函數(shù)進(jìn)行動態(tài)軟硬件配置,充分利用了系統(tǒng)的硬件資源,從而顯著提高整個(gè)系統(tǒng)的任務(wù)處理效率。
文檔編號G06F9/50GK101763288SQ20101002208
公開日2010年6月30日 申請日期2010年1月19日 優(yōu)先權(quán)日2010年1月19日
發(fā)明者李仁發(fā), 陳宇, 徐成, 吳強(qiáng), 劉彥, 朱海, 袁虎, 鐘俊, 劉滔, 鄺繼順, 李蕊, 李肯立, 羅娟, 趙歡, 楊科華, 任小西, 楊書凡, 彭日光, 李春江, 黃瑜臣, 張維, 李浪 申請人:湖南大學(xué)