專利名稱:為程序定制的可重構加速器實現(xiàn)方法
技術領域:
本發(fā)明涉及程序優(yōu)化設計、FPGA設計領域,尤其涉及一種為程序定制的可 重構加速器實現(xiàn)方法。
背景技術:
隨著新材料的應用和新技術的發(fā)展,超大規(guī)模集成電路技術取得長足進步, 現(xiàn)處理器相當面積上集成的晶體管數(shù)目即將超過100億。但是由于晶體管利用 效率、漏電、散熱和功耗問題,以提高處理器主頻來獲得性能提升變的得不償 失。因此,多核體系結構技術取而代之成為處理器的主流技術,通過在單芯片 內封裝多個處理核,在物理上實現(xiàn)了真正的并行,因而相對提高了晶體管的利 用效率、緩解了散熱和功耗問題,為計算機帶來了較大的性能提升。從當前的 趨勢看,處理器芯片內集成的核的數(shù)目將會繼續(xù)迅速增多。然而,由于一般應 用并行度難以提高的限制,當處理器通用核的數(shù)目超過16個后,再增加通用處 理核的數(shù)目就難以帶來更大的性能提升,因此單純增加同構的通用處理核的數(shù) 目雖然能用盡迅速增多的晶體管,應用程序卻并不能充分利用數(shù)量日增的通用 處理核,計算性能自然也不會簡單地隨著處理核數(shù)目的增加而提高。
定制的協(xié)處理器和加速器是滿足用戶對性能不斷增加的需求的另一種技術 手段,現(xiàn)代計算系統(tǒng)中常包括一些專用的協(xié)處理器或加速器,包括面向科學計 算等的"領域專用協(xié)處理器"、圖形圖像處理和數(shù)字信號處理等"行業(yè)專用處理 器",如Cell的輔助處理核、英特爾⑧圖形媒體加速器950等。這些專用協(xié)處理 器和加速器的體系結構利用特定應用的特征進行定制,從而可以達到定制應用 的高性能和高效率。但是這種專用化的協(xié)處理器和加速器設計只有在運行所面 向的應用時才會獲得好的性能,利用率和靈活性不高,而且專門化的定制將極 大地增加了設計成本。
在這種情況下,在傳統(tǒng)計算機系統(tǒng)中增加由可重構設備多構成的可重構加 速器為提升計算性能提供了另一種途徑。通過可重構設備的動態(tài)重配置,可重 構加速器可以支持各種不同類型應用,從而能在更加廣泛的范圍內達到較高性 能,提高可重構硬件資源的利用率,同時獲得通用處理器適應多數(shù)應用的高靈 活性與專用處理器的高性能和高效率。在解決應用的多樣性問題的同時,還可 解決加速器硬件資源利用率、設計復雜性、系統(tǒng)可靠性以及降低成本和功耗等多方面的問題。
發(fā)明內容
為了獲得更好的利用可重構資源、設計定制的加速器,為了提高應用程序 的執(zhí)行性能,本發(fā)明的目的在于提供一種為程序定制的可重構加速器實現(xiàn)方法。 本發(fā)明解決技術問題所采用的技術方案是 一種為程序定制的可重構加速器實現(xiàn)方法
1) 可重構加速器輔助計算
可重構加速器接受程序的調用,負責處理程序中計算密集的部分,在可重構 加速器的計算過程中,程序掛起等待可重構加速器返回;
2) 程序定制可重構加速器實現(xiàn)過程-.
① 程序剖析程序剖析過程包括2個步驟
I. 確定函數(shù)熱點
確定函數(shù)熱點是一個動態(tài)剖析過程,確定程序中占用執(zhí)行時間最多的部分函 數(shù);利用剖析器對運行時的程序進行跟蹤,以函數(shù)為粒度對運行時程序進行采 樣,然后以函數(shù)為基本單元對采樣數(shù)據(jù)的統(tǒng)計,得出各函數(shù)的調用次數(shù)和執(zhí)行 時間,由執(zhí)行時間從多到少進行排序,其中執(zhí)行時間最多的函數(shù),就是程序的 熱點函數(shù),可以作為實現(xiàn)為可重構加速器的候選函數(shù);
II. 分析數(shù)據(jù)依賴
數(shù)據(jù)依賴分析是一個靜態(tài)分析過程,對熱點函數(shù)進行數(shù)據(jù)依賴分析確定函數(shù) 的并行度;如果循環(huán)迭代之間的不存在數(shù)據(jù)依賴,那么循環(huán)的不同迭代就能并 行展開,從而充分利用FPGA的物理高并發(fā)性;如果熱點函數(shù)通過預測評估獲 得性能提升,那么就實現(xiàn)為可重構加速器,以加速程序的執(zhí)行;
② 軟硬件劃分
確定實現(xiàn)為可重構加速器的函數(shù)之后,實際上已經(jīng)完成了劃分,軟硬件劃分 歩驟主要負責定義程序與可重構加速器之間的接口和參數(shù);由于程序調用可重 構加速器需要額外代價,應該在可重構加速器中增加數(shù)據(jù)緩存,將多次調用合 并使通信集中以消除多次調用的額外代價,增加每次調用的執(zhí)行時間,減少程 序調用可重構加速器的次數(shù);
③ 熱點函數(shù)在FPGA上的實現(xiàn)
根據(jù)②中定義的程序與可重構加速器之間的接口和參數(shù),實現(xiàn)可重構加速器 的硬件接口,并增加緩存,支持在軟件上減少可重構加速器的調用次數(shù);通過 增加緩存,將多次調用可重構加速器的輸入數(shù)據(jù)通過一次調用傳輸?shù)娇芍貥嫾?br>
5速器的緩存,減少總體的通信代價;
利用可重構邏輯并行實現(xiàn)與熱點函數(shù)相同的功能,并滿足提高頻率和減少執(zhí) 行周期的目的;提高可重構加速器的頻率和減少執(zhí)行周期,都能直接提高可重 構加速器的性能;
④修改程序調用加速器;實現(xiàn)步驟 最后,需要在程序中調用FPGA上的加速器
I. 在程序中可重構加速器加速的熱點前增加代碼,完成可重構加速器輸入 數(shù)據(jù)的準備;
II. 通過可重構加速器軟件接口調用執(zhí)行可重構加速器,程序掛起,等待可 重構加速器返回結果;
III. 接收可重構加速器的返回結果,整理返回給程序,程序再繼續(xù)執(zhí)行。 本發(fā)明具有的有益效果是
本發(fā)明是一種基于FPGA為程序定制可重構加速器的實現(xiàn)方法,其主要功 能是在傳統(tǒng)計算機體系結構上使用FPGA將程序的熱點函數(shù)實現(xiàn)為可重構加速 器,并將程序中熱點函數(shù)的調用修改為對應可重構加速器的調用,加速熱點函 數(shù)的執(zhí)行。
1) 使用可重構加速器實現(xiàn)程序的熱點函數(shù),提高程序總體加速比;
2) 使用FPGA實現(xiàn)可重構加速器,在達到近似應用定制集成電路的性能的 同時,保持了通用處理器的靈活性。
附圖是本發(fā)明的總體流程圖。
具體實施例方式
為程序定制的可重構加速器實現(xiàn)方法的具體實現(xiàn)流程如下。
1) 增加可重構加速器輔助計算-
在傳統(tǒng)通用計算機系統(tǒng)上,增加FPGA作為可重構部件,F(xiàn)PGA通過PCI-E 總線連接到傳統(tǒng)計算機系統(tǒng)。
可重構加速器負責處理程序中計算密集的部分,接受程序的調用,當程序調 用可重構加速器之后,可重構加速器開始處理輸入數(shù)據(jù),在可重構加速器的計 算期間,程序掛起;當可重構加速器執(zhí)行結束,將結果返回給程序,程序再繼 續(xù)執(zhí)行。
2) 程序定制可重構加速器實現(xiàn)過程,如附圖所示 ①程序剖析I. 確定函數(shù)熱點
確定函數(shù)熱點是一個動態(tài)剖析過程,可以確定程序中占用執(zhí)行時間最多的部 分函數(shù);
a. 利用剖析器對運行時的程序進行跟蹤,跟蹤記錄函數(shù)的調用次數(shù),以及每 次調用的開始時間和返回時間;
b. 以函數(shù)為基本單元對采樣所得數(shù)據(jù)的統(tǒng)計,得出各函數(shù)的調用次數(shù)和執(zhí)行 時間,由執(zhí)行時間從多到少進行排序,記為隊列々,;
c. 排在隊列々,第1位的函數(shù)為執(zhí)行時間最多的函數(shù),是程序的熱點函數(shù), 可以作為實現(xiàn)可重構加速器的候選函數(shù)。
II. 分析數(shù)據(jù)依賴
數(shù)據(jù)依賴分析是一個靜態(tài)分析過程,對熱點函數(shù)進行數(shù)據(jù)依賴分析可以確定 函數(shù)的并行度,通常循環(huán)是函數(shù)中占用最多執(zhí)行時間的部分,因此循環(huán)是優(yōu)先 加速的部分;
a. 對隊列^,中排序第1位的函數(shù)中的循環(huán)進行數(shù)據(jù)依賴分析,迭代之間的 不存在數(shù)據(jù)依賴,那么循環(huán)的不同迭代就能并行展開,對函數(shù)對應可重構加速 器進行性能預測評估;
b. 對熱點函數(shù)進行性能預測評估,如果預測獲得性能提升,可以實現(xiàn)為可重 構加速器;如果預測不能獲得性能提升,從隊列々 依次選擇下一個函數(shù)進行 分析,直到下一個函數(shù)的執(zhí)行時間占程序總執(zhí)行時間少于10%,說明此程序中 所有函數(shù)不。
性能預測評估如下-
a.計算函數(shù)的處理器執(zhí)行時間,表示為T7w化to :
其中
C/ocK^c/^CTt;表示CPU完成一次執(zhí)行的周期數(shù); /"Wrwc^"iVww表示CPU完成一次執(zhí)行的指令數(shù); C尸/為每條指令周期數(shù)(Cycles Per Instruction);
i^%Me"c_vCT〃為處理器主頻。 當CPI為1時,執(zhí)行時間近似為<formula>formula see original document page 8</formula>
b.計算函數(shù)對應可重構加速器的執(zhí)行時間,表示為7)'me^t; 7Y靴- C/ocfccXc/e Vu
其中
C/odCyc/e^^表示FPGA加速器完成一次執(zhí)行周期數(shù), Fre^朋c;^t;為FPGA加速器的頻率。
c.比較函數(shù)的處理器執(zhí)行時間和對應可重構加速器執(zhí)行時間,當7 m^^; < r/附ec/51/時,艮卩-
根據(jù)經(jīng)驗統(tǒng)計可得,處理器的主頻大約是FPGA加速器頻率的20倍,因此
C/wA:Qvc/e5^ 〈-^-
這說明如果FPGA加速器的加速比要大于1,那么可重構加速器的執(zhí)行周期 數(shù)應該小于程序執(zhí)行指令數(shù)的1/20,也就是可重構加速器的一個周期內要完成 20條以上的指令所需要完成的工作。
②軟硬件劃分-
軟硬件劃分步驟主要負責定義程序與可重構加速器之間的接口和參數(shù),包括 下列步驟;
I. 定義可重構加速器的軟件調用接口,提供給程序調用的軟件接口,應該 減少可重構加速器輸入數(shù)據(jù)的準備時間;
II. 定義可重構加速器的硬件接口,在可重構加速器中增加數(shù)據(jù)緩存,將多 次調用合并使通信集中以消除多次調用的額外代價,增加每次調用的執(zhí)行時間, 減少程序調用可重構加速器的次數(shù);
◎熱點函數(shù)在FPGA上的實現(xiàn)
I.實現(xiàn)可重構加速器的硬件接口,根據(jù)②中定義的程序與可重構加速器之 間的接口和參數(shù),并增加緩存,支持在軟件上減少可重構加速器的調用次數(shù); 通過增加緩存,可以將多次調用可重構加速器的輸入數(shù)據(jù)通過一次調用傳輸?shù)?可重構加速器的緩存,減少總體的通信代價;II.利用可重構邏輯并行實現(xiàn)與熱點函數(shù)相同的功能,并滿足提高頻率和減 少執(zhí)行周期的目的;提高可重構加速器的頻率和減少執(zhí)行周期,都能直接提高 可重構加速器的性能;
④修改程序調用加速器;實現(xiàn)步驟 最后,需要在程序中調用FPGA上的加速器
I. 在程序中可重構加速器加速的熱點前增加代碼,完成可重構加速器輸入 數(shù)據(jù)的準備;
II. 通過可重構加速器軟件接口調用執(zhí)行可重構加速器,程序掛起,等待 可重構加速器返回結果;
III. 接收可重構加速器的返回結果,整理返回給程序,程序再繼續(xù)執(zhí)行。
權利要求
1、一種為程序定制的可重構加速器實現(xiàn)方法,其特征在于1)可重構加速器輔助計算可重構加速器接受程序的調用,負責處理程序中計算密集的部分,在可重構加速器的計算過程中,程序掛起等待可重構加速器返回;2)程序定制可重構加速器實現(xiàn)過程①程序剖析程序剖析過程包括2個步驟I. 確定函數(shù)熱點確定函數(shù)熱點是一個動態(tài)剖析過程,確定程序中占用執(zhí)行時間最多的部分函數(shù);利用剖析器對運行時的程序進行跟蹤,以函數(shù)為粒度對運行時程序進行采樣,然后以函數(shù)為基本單元對采樣數(shù)據(jù)的統(tǒng)計,得出各函數(shù)的調用次數(shù)和執(zhí)行時間,由執(zhí)行時間從多到少進行排序,其中執(zhí)行時間最多的函數(shù),就是程序的熱點函數(shù),可以作為實現(xiàn)為可重構加速器的候選函數(shù);II. 分析數(shù)據(jù)依賴數(shù)據(jù)依賴分析是一個靜態(tài)分析過程,對熱點函數(shù)進行數(shù)據(jù)依賴分析確定函數(shù)的并行度;如果循環(huán)迭代之間的不存在數(shù)據(jù)依賴,那么循環(huán)的不同迭代就能并行展開,從而充分利用FPGA的物理高并發(fā)性;如果熱點函數(shù)通過預測評估獲得性能提升,那么就實現(xiàn)為可重構加速器,以加速程序的執(zhí)行;②軟硬件劃分確定實現(xiàn)為可重構加速器的函數(shù)之后,實際上已經(jīng)完成了劃分,軟硬件劃分步驟主要負責定義程序與可重構加速器之間的接口和參數(shù);由于程序調用可重構加速器需要額外代價,應該在可重構加速器中增加數(shù)據(jù)緩存,將多次調用合并使通信集中以消除多次調用的額外代價,增加每次調用的執(zhí)行時間,減少程序調用可重構加速器的次數(shù);③熱點函數(shù)在FPGA上的實現(xiàn)根據(jù)②中定義的程序與可重構加速器之間的接口和參數(shù),實現(xiàn)可重構加速器的硬件接口,并增加緩存,支持在軟件上減少可重構加速器的調用次數(shù);通過增加緩存,將多次調用可重構加速器的輸入數(shù)據(jù)通過一次調用傳輸?shù)娇芍貥嫾铀倨鞯木彺妫瑴p少總體的通信代價;利用可重構邏輯并行實現(xiàn)與熱點函數(shù)相同的功能,并滿足提高頻率和減少執(zhí)行周期的目的;提高可重構加速器的頻率和減少執(zhí)行周期,都能直接提高可重構加速器的性能;④修改程序調用加速器;實現(xiàn)步驟最后,需要在程序中調用FPGA上的加速器I. 在程序中可重構加速器加速的熱點前增加代碼,完成可重構加速器輸入數(shù)據(jù)的準備;II. 通過可重構加速器軟件接口調用執(zhí)行可重構加速器,程序掛起,等待可重構加速器返回結果;III. 接收可重構加速器的返回結果,整理返回給程序,程序再繼續(xù)執(zhí)行。
全文摘要
本發(fā)明公開了一種為程序定制的可重構加速器實現(xiàn)方法。是通過為傳統(tǒng)通用計算機系統(tǒng)增加FPGA,在FPGA上實現(xiàn)為程序定制的可重構加速器對程序進行加速,其主要功能是對程序進行剖析,以函數(shù)為粒度采樣程序的運行時統(tǒng)計信息,獲取程序中計算密集的熱點函數(shù),并在FPGA上將熱點函數(shù)實現(xiàn)為可重構加速器,并將程序中熱點函數(shù)的調用修改為對應可重構加速器的調用,加速熱點函數(shù)的執(zhí)行。本發(fā)明使用可重構加速器實現(xiàn)程序的熱點函數(shù),提高程序總體加速比;使用FPGA實現(xiàn)可重構加速器,在達到近似應用定制集成電路的性能的同時,保持了通用處理器的靈活性。
文檔編號G06F9/44GK101441564SQ20081016290
公開日2009年5月27日 申請日期2008年12月4日 優(yōu)先權日2008年12月4日
發(fā)明者嚴力科, 罡 王, 王勇剛, 度 陳, 陳天洲 申請人:浙江大學