一種面向類仿射數(shù)組下標應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模版的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及的是在可重構(gòu)編譯領(lǐng)域,基于LLVM的CPU-FPGA異構(gòu)體系結(jié)構(gòu)面向 C2VHDL的可重構(gòu)編譯器ASCRA中一種面向類仿射數(shù)組下標應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模 版。
【背景技術(shù)】
[0002] 目前,國內(nèi)外針對CPU-FPGA計算平臺的自動化編譯工具的研究已經(jīng)取得了一些 可喜的研究成果,主要分為兩類:一類是采用類C語言作為程序設(shè)計語言,但這些類C語言 已將ANSI C擴充得面目全非,程序開發(fā)人員相當于重新學習一種新的語言,增加了設(shè)計難 度;另外一類是由C語言作為程序設(shè)計語言,由編譯器將C語言中待加速的代碼編譯成為 VHDL語言,再由ISE等綜合工具生成硬件電路。本發(fā)明主要研究應(yīng)用于后一類面向C2VHDL 編譯器的相關(guān)技術(shù)。
[0003] 目前一些國內(nèi)外大學、科研機構(gòu)及工業(yè)界對這類編譯器已經(jīng)進行了初步的研究, 但是在為循環(huán)流水陣列生成硬件存儲結(jié)構(gòu)時這些編譯器對數(shù)據(jù)重用及并行支持的不夠完 善,影響了計算性能的提高。文獻[1]提出了一種可重構(gòu)編譯器,利用猜測和前瞻執(zhí)行方 式開發(fā)指令級并行,主要針對無循環(huán)攜帶相關(guān)的計數(shù)類循環(huán)進行加速,采用迭代模調(diào)度 IMS(Iterative Modulo Scheduling)方式實現(xiàn)循環(huán)流水,根據(jù)迭代模調(diào)度算法確定啟動 間距后,相隔一定的啟動間距IlQnitiation interval)插入段間寄存器,根據(jù)數(shù)據(jù)流圖 DFG (Data Flow Graph)生成相應(yīng)的數(shù)據(jù)通路,流水化執(zhí)行循環(huán);文獻[2]在文獻[1]的基 礎(chǔ)上,主要研究編譯優(yōu)化技術(shù)挖掘循環(huán)并行性,如循環(huán)展開、循環(huán)流水等傳統(tǒng)的軟件編譯優(yōu) 化技術(shù)實現(xiàn)循環(huán)的加速;文獻[3]針對計數(shù)類循環(huán),利用迭代模調(diào)度消除存儲調(diào)度沖突,實 現(xiàn)最內(nèi)層能循環(huán)的軟件流水,當流水失敗時增大啟動間距避免數(shù)據(jù)沖突,該方法不利于吞 吐率的提高,文獻[1,2, 3]中提出的編譯器只生成了為循環(huán)流水陣列提供數(shù)據(jù)的單體串行 存儲結(jié)構(gòu),沒有提出并行的存儲結(jié)構(gòu)概念。文獻[4]使用ARM處理器作為目標嵌入式平臺, 針對單存儲端口且無循環(huán)攜帶相關(guān)的循環(huán),采用軟件流水技術(shù)以固定的啟動間距II,執(zhí)行 流水,流水時,首先調(diào)度訪存指令,然后調(diào)度非訪存指令,并沒有并行存儲系統(tǒng)的設(shè)計。文 獻[5]設(shè)計的編譯器針對類仿射數(shù)組下標應(yīng)用中的面向滑動窗口類特殊應(yīng)用提出了有針 對性的存儲結(jié)構(gòu)模板,其存儲結(jié)構(gòu)由片外存儲器MEM、片存儲器Block RAM和Smart Buffer 構(gòu)成,數(shù)據(jù)首先從片外存儲器MEM流入Block RAM,然后調(diào)入支持數(shù)據(jù)重用的輸入Smart Buffer,為流水通路供應(yīng)輸入數(shù)據(jù),運算完成后,結(jié)果存入輸出Smart Buffer并經(jīng)Block RAM傳回片外存儲器,Smart Buffer根據(jù)總線大小、滑動窗口大小、數(shù)據(jù)大小和滑動距離 自動生成,但是此模板無法用于具有循環(huán)迭代間流依賴的應(yīng)用,同時由于其生成的Smart Buffer結(jié)構(gòu)采用寄存器和計算單元完全互連的方法,導(dǎo)致仲裁機制較為復(fù)雜。文獻[6]針 對文獻[5]中存在的問題提出了優(yōu)化后的參數(shù)化三層存儲體系結(jié)構(gòu)模板,但是此模板為只 有層內(nèi)數(shù)據(jù)重用特征的循環(huán)展開程序生成存儲結(jié)構(gòu)時,其并行性還存在可以改進的空間, 此模板僅針對滑動窗口類型的應(yīng)用,無法為具有循環(huán)迭代間流依賴的應(yīng)用生成存儲結(jié)構(gòu)。 文獻[7, 8]提出的編譯器主要采用多Cache結(jié)構(gòu)提供并行訪問數(shù)據(jù),當循環(huán)展開時,編譯 器為每個循環(huán)迭代復(fù)制一份Cache數(shù)據(jù),在提升程序性能的同時明顯的增加了硬件面積開 銷,尤其當程序中存在循環(huán)迭代間流依賴時,生成的硬件存儲結(jié)構(gòu)會出現(xiàn)Cache -致性的 問題。文獻[9, 10]提出的編譯器主要研究如何為類仿射數(shù)組下標應(yīng)用自動生成并行存儲 體及防止數(shù)據(jù)并行訪問沖突的調(diào)度方法。文獻[11]提出了一種粗粒度可重構(gòu)協(xié)處理器體 系結(jié)構(gòu),用于加速計算密集或數(shù)據(jù)密集類算法,其在ALU運算部件前后加入輸入輸出FIFO, 利用數(shù)據(jù)選擇指令和非平衡廣播指令配合FIFO實現(xiàn)數(shù)據(jù)重用,通過拷貝多分RAM消除結(jié)構(gòu) 相關(guān),實現(xiàn)數(shù)據(jù)的并行讀取,該結(jié)構(gòu)雖然可以實現(xiàn)數(shù)據(jù)重用及數(shù)據(jù)的并行傳輸,但是耗費了 大量寶貴的片上存儲資源。
[0004] 存儲系統(tǒng)的設(shè)計直接影響運算系統(tǒng)潛在并行性的發(fā)揮,制約著循環(huán)流水的整體性 能,在文獻[1,2, 3, 4]等編譯器中均無優(yōu)化的存儲結(jié)構(gòu)設(shè)計,調(diào)度訪存指令時,需耗費大量 的時鐘周期讀取所需的數(shù)據(jù),為避免訪存沖突,只能增大啟動間距II,導(dǎo)致循環(huán)流水吞吐率 的大大降低,訪存指令的調(diào)度成為制約循環(huán)流水性能提升的瓶頸。存儲系統(tǒng)研究的關(guān)鍵問 題是提高存儲帶寬,減少存儲器的訪存次數(shù)和沖突,數(shù)據(jù)重用是目前廣泛采用的方法。目前 可重構(gòu)編譯系統(tǒng)中,存儲結(jié)構(gòu)的設(shè)計存在一定的缺陷:
[0005] (1)僅具有能為某類特定應(yīng)用程序設(shè)計存儲結(jié)構(gòu),其存儲結(jié)構(gòu)的可配置及靈活性 較差,文獻[5, 6]提出的存儲體系結(jié)構(gòu)模型,僅面向滑動窗口類型的應(yīng)用,開發(fā)輸入相關(guān)數(shù) 據(jù)重用,存儲容量可配置,存儲結(jié)構(gòu)固定不變。
[0006] (2)循環(huán)攜帶流相關(guān)數(shù)據(jù)重用支持能力弱,除了文獻[11]之外,均不支持此類數(shù) 據(jù)重用。
[0007] (3)忽略了不可數(shù)據(jù)重用訪存節(jié)點的并行訪問。目前普遍基于數(shù)據(jù)重用方式開發(fā) 存儲結(jié)構(gòu),對數(shù)據(jù)重用之外的存儲結(jié)構(gòu)研究甚少。文獻[11]通過拷貝多份RAM實現(xiàn)不可重 用節(jié)點數(shù)據(jù)的并行讀取,但是片上存儲資源有限,拷貝多份RAM的方式對存儲資源需求大 量增加,有可能超出片上存儲資源數(shù)目。
[0008] 類仿射數(shù)組下標的應(yīng)用是指參與循環(huán)運算的數(shù)組元素下標為類仿射型應(yīng)用,在 實際應(yīng)用中很多程序都是類仿射型。如圖1的示例代碼為一個典型的類仿射型數(shù)組下標 應(yīng)用,循環(huán)邊界和數(shù)組下標是循環(huán)變量或常數(shù)的仿射函數(shù)。如果數(shù)組每維的下標都具有 ain+c(inl,…,Li1)的形式,其中a為整數(shù),η為循環(huán)嵌套層數(shù),Li 2,…,in為循環(huán)索引 變量,c (in i,…,i2, D為由L i2,…,in派構(gòu)成的函數(shù)(若η = 1,c (i η η…,i2, h)為常 數(shù)),稱該數(shù)組的下標為類仿射型。在圖1中的示例代碼中,只有數(shù)組A參與循環(huán)運算,當循 環(huán)關(guān)鍵變量i步進時,數(shù)據(jù)訪問軌跡如圖2所示,存在箭頭所指的循環(huán)迭代間數(shù)據(jù)重用。在 充分挖掘數(shù)據(jù)重用后,執(zhí)行每次迭代空間時只需從RAM中讀取陰影方框表示的數(shù)據(jù),其他 輸入數(shù)據(jù)可以重用上次循環(huán)迭代時讀取或生成的數(shù)據(jù),進而提高流水線的執(zhí)行效率,加速 應(yīng)用。如何為仿射類型數(shù)組下標應(yīng)用生成數(shù)據(jù)重用和并行性高的存儲結(jié)構(gòu)是可重構(gòu)編譯技 術(shù)的關(guān)鍵任務(wù)。
[0009] 對于類仿射型數(shù)組下標應(yīng)用,上述文獻中所列舉的可重構(gòu)編譯器在自動生成具有 并行性和數(shù)據(jù)可重用性的存儲結(jié)構(gòu)時,都存在各自的局限性。本發(fā)明主要采用模板方法為 只有層內(nèi)數(shù)據(jù)重用的仿射類數(shù)組下標應(yīng)用編譯生成高效的模塊化多層次存儲結(jié)構(gòu),編譯時 采用模塊化設(shè)計思想,根據(jù)應(yīng)用程序訪存特征自動組合各子存儲模塊,生成多層次并行存 儲結(jié)構(gòu)體。
[0010] 相關(guān)對比文件包括:
[0011] (I)Callahan T.Kernel Formation in Garpcc.Proceedings of the Ilth Annual IEEE Symposium on Field-Programmable Custom Computing Machines. Napa,CA, USA,2003. 04:308-309
[0012] (2)Li Yanbin,Callahan T,Darnell Ej et al. Hardware-Software Co-Design of Embedded Reconfigurable Architectures,Proceedings of 37th Conference on Design Automation. Los Angeles, California, 2000:507-512
[0013] (3)Gokhale MBjStone JM. NAPA C:compiling for a hybrid RISC/FPGA architecture,Proceedings of IEEE Symposium on FPGAs for Custom Computing Machines. Napa Valley, California, 1998:126-135
[0014] (4) Alex J.,Debabrata B.,Sartajit P. et al. PACT HDL:A C Compiler Targeting ASICs and FPGAs with Power and Performance Optimizations. Power aware computing. Kluwer Academic Publishers,2002:169-190
[0015] (5)Guo Zj Najjar ff. A compiler intermediate representation for reconfigurable fabrics, Proceedings of the Conf. on Field Programmable Logic and Applications. Madrid, Pain, 2006:1-4
[0016] (6) Dou YjDong YZjXu JH et al. Automatic Generation of IPCore for Sliding-Window Operations Based on a Parameterized Memory Architecutre. Journal of Software, 2009, 20 (2):246-255(in Chinese)
[0017] (7) Seung J.Lee,David K. Railaj Voelodymyr V. Kindratenko. LLVM-CHiMPS:Compilation Environment for FPGAs Using LLVM Compiler Infrastructure and CHiMPS Computational Model,Proceedings of 4th Annual Reconfigurable Systems Summer Institute. Urbanaj USA, 2008:1-10
[0018] (8) Andrew P., Susan E., Dave B. et al. Performance and power of cache-based reconfigurable computing,Proceedings of the 36th annual international symposium on Computer architecture. Austin, Texas, USA, 2009:395-405
[0019] (9) Zhang Z,F(xiàn)an Y.,Jiang W. et al. AutoPilot: a platform based ESL