1.一種基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,包括:
提取應(yīng)用程序的可重構(gòu)數(shù)據(jù)流圖,所述可重構(gòu)數(shù)據(jù)流圖包括:含有多個(gè)函數(shù)節(jié)點(diǎn)的函數(shù)層數(shù)據(jù)流圖、及由每個(gè)所述函數(shù)節(jié)點(diǎn)所含有的多個(gè)運(yùn)算節(jié)點(diǎn)所構(gòu)成的電路層數(shù)據(jù)流圖;
對(duì)于每個(gè)函數(shù)節(jié)點(diǎn),從其中的起始運(yùn)算節(jié)點(diǎn)起,計(jì)算其余各個(gè)運(yùn)算節(jié)點(diǎn)的運(yùn)算起始時(shí)間和運(yùn)算結(jié)束時(shí)間,據(jù)以計(jì)算每個(gè)函數(shù)節(jié)點(diǎn)的運(yùn)算起始時(shí)間和運(yùn)算結(jié)束時(shí)間;
在不改變各函數(shù)節(jié)點(diǎn)間原本的數(shù)據(jù)依賴的基礎(chǔ)上,將所述函數(shù)層數(shù)據(jù)流圖重新分層,每層包括按照函數(shù)節(jié)點(diǎn)內(nèi)運(yùn)算時(shí)間分開排序時(shí)在同一等級(jí)的電路;
將擁有相同函數(shù)功能的函數(shù)層合并為同一函數(shù)層,合并后的各函數(shù)層依照預(yù)設(shè)規(guī)則結(jié)合,每個(gè)結(jié)合后的函數(shù)層成為一個(gè)獨(dú)立的配置層,同一配置層中的函數(shù)并行運(yùn)行。
2.根據(jù)權(quán)利要求1所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,所述依照預(yù)設(shè)規(guī)則結(jié)合,包括:依照排序順序從低層到高層逐一結(jié)合。
3.根據(jù)權(quán)利要求1所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,所述計(jì)算每個(gè)函數(shù)節(jié)點(diǎn)的運(yùn)算起始時(shí)間和運(yùn)算結(jié)束時(shí)間,包括:
取各起始運(yùn)算節(jié)點(diǎn)的運(yùn)算起始時(shí)間作為各函數(shù)節(jié)點(diǎn)的運(yùn)算起始時(shí)間;
取各運(yùn)算節(jié)點(diǎn)中最大的運(yùn)算結(jié)束時(shí)間作為各函數(shù)節(jié)點(diǎn)的運(yùn)算結(jié)束時(shí)間。
4.根據(jù)權(quán)利要求1所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,還包括方案層生成步驟,從而使同一應(yīng)用能采用不同配置層的組合來完成整個(gè)函數(shù)的執(zhí)行,包括:
每個(gè)配置層根據(jù)配置中排序最高的函數(shù)層級(jí)尋找包含下一函數(shù)層級(jí)的配置層;
包含相同函數(shù)的配置層不能結(jié)合;
每個(gè)結(jié)合形成的方案包含所述應(yīng)用的所有函數(shù)。
5.根據(jù)權(quán)利要求4所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,還包括運(yùn)行時(shí)管理步驟,包括:
提取分層優(yōu)化后的各函數(shù)層的函數(shù)性能模型;
根據(jù)生成的各配置層和各所述函數(shù)性能模型提取每個(gè)配置層的性能模型;
根據(jù)各所述配置層的性能模型提取各方案的性能模型;
根據(jù)各所述方案的性能模型及數(shù)據(jù)處理量計(jì)算每個(gè)所述方案的運(yùn)行時(shí)間;
根據(jù)所述數(shù)據(jù)處理量及每個(gè)所述方案的重構(gòu)次數(shù)估算重構(gòu)成本。
6.根據(jù)權(quán)利要求5所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,所述性能模型包括:表示并行計(jì)算能力的并行度。
7.根據(jù)權(quán)利要求5所述的基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速方法,其特征在于,還包括應(yīng)用步驟,包括:
提取各階段需要處理的數(shù)據(jù)量;
讀取每個(gè)應(yīng)用的所有方案;
預(yù)測每個(gè)方案的運(yùn)行時(shí)間以及重構(gòu)成本;
根據(jù)重構(gòu)成本,選取運(yùn)行時(shí)間最少的方案予以執(zhí)行,其中,執(zhí)行方案在每個(gè)配置層運(yùn)行時(shí)進(jìn)行重構(gòu)操作。
8.一種基于FPGA的動(dòng)態(tài)可重構(gòu)硬件加速系統(tǒng),其特征在于,包括:
提取模塊,用于提取應(yīng)用程序的可重構(gòu)數(shù)據(jù)流圖,所述可重構(gòu)數(shù)據(jù)流圖包括:含有多個(gè)函數(shù)節(jié)點(diǎn)的函數(shù)層數(shù)據(jù)流圖、及每個(gè)所述函數(shù)節(jié)點(diǎn)的含有多個(gè)運(yùn)算節(jié)點(diǎn)的電路層數(shù)據(jù)流圖;
計(jì)算模塊,用于對(duì)于每個(gè)函數(shù)節(jié)點(diǎn),從其中的起始運(yùn)算節(jié)點(diǎn)起,計(jì)算其余各個(gè)運(yùn)算節(jié)點(diǎn)的運(yùn)算起始時(shí)間和運(yùn)算結(jié)束時(shí)間,據(jù)以計(jì)算每個(gè)函數(shù)節(jié)點(diǎn)的運(yùn)算起始時(shí)間和運(yùn)算結(jié)束時(shí)間;
分層模塊,用于在不改變各函數(shù)節(jié)點(diǎn)間原本的數(shù)據(jù)依賴的基礎(chǔ)上,將所述函數(shù)層數(shù)據(jù)流圖重新分層,每層包括按照函數(shù)節(jié)點(diǎn)內(nèi)運(yùn)算時(shí)間分開排序時(shí)在同一等級(jí)的電路;
合并模塊,用于將擁有相同函數(shù)功能的函數(shù)層合并為同一函數(shù)層,合并后的各函數(shù)層依照預(yù)設(shè)規(guī)則結(jié)合,每個(gè)結(jié)合后的函數(shù)層成為一個(gè)獨(dú)立的配置層,同一配置層中的函數(shù)并行運(yùn)行。