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

一種面向類仿射數(shù)組下標(biāo)應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模版的制作方法_2

文檔序號:8942896閱讀:來源:國知局
synthesis system. High Level Synthesis: From Algorithm to Digital Circuit, Springer Netherlands, 2008:99-112
[0020] (10)Cong,J,Bin Liu,Neuendorffer S ea al. High-Level Synthesis for FPGAsiFrom Prototyping to Deployment. Computer-Aided Design of Integrated Circuits and Systems, 201130(4):473-491
[0021] (11)徐進(jìn)輝,楊夢夢,竇勇,周興銘.粗粒度可重構(gòu)平臺中循環(huán)自流水硬件實(shí) 現(xiàn).計(jì)算機(jī)學(xué)報(bào),2009, 32 (6) : 1080-1088

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

[0022] 本發(fā)明的目的是提供一種基于LLVM設(shè)計(jì)的ASCRA可重構(gòu)編譯器,可以為只有層內(nèi) 數(shù)據(jù)重用的仿射類數(shù)組下標(biāo)應(yīng)用編譯生成高效的模塊化多層次存儲結(jié)構(gòu)的面向類仿射數(shù) 組下標(biāo)應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模版。
[0023] 本發(fā)明的目的是這樣實(shí)現(xiàn)的:
[0024] 面向類仿射數(shù)組下標(biāo)應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模版,采用模塊化設(shè)計(jì)思想的參 數(shù)化并行存儲結(jié)構(gòu)模版在處理參與循環(huán)程序運(yùn)算的數(shù)組下標(biāo)為類仿射型時,為新數(shù)據(jù)自動 生成基于RAM的多體交叉并行訪存結(jié)構(gòu)或單體串行訪存結(jié)構(gòu),為輸入依賴的復(fù)用數(shù)據(jù)生 成Smart Buffer緩存結(jié)構(gòu),為循環(huán)迭代間的流依賴的復(fù)用數(shù)據(jù)自動生成RAW Buffer緩存 結(jié)構(gòu),其中Smart Buffer直接服務(wù)于運(yùn)算單元,RAW Buffer和RAM為運(yùn)算單元和Smart Buffer服務(wù);所述訪存數(shù)據(jù)依賴圖MDDG = (V,E,R),其中V為節(jié)點(diǎn)集合,E為連接相鄰節(jié) 點(diǎn)的有向邊,R為數(shù)據(jù)重用度,X= {L,S},即循環(huán)迭代空間內(nèi)數(shù)組元素 進(jìn)行了 Load 或 Store 操作,
[0025]
[0026]
[0027] 次循環(huán)迭代就 會同節(jié)點(diǎn)抑發(fā)生對同一存儲地址的讀寫;訪存數(shù)據(jù)依賴圖的生成包括:
[0028] (1)遍歷程序中進(jìn)行Load和Store操作的所有數(shù)組元素,根據(jù)數(shù)組名,分別將其劃 分到不同的集合&中,X = 1…n,表示有程序中存在不同名的數(shù)組個數(shù),根據(jù)操作屬性將數(shù) 組元素 A
[ai+b] 表示為LA [ai+b] SA [ai+b] ' 將其插入到集合Gx中;
[0029] (2)遍歷集合&中的元素,獲得數(shù)組元素下標(biāo)斜率A = {a I a為數(shù)組元素下標(biāo)斜 率},當(dāng)所有進(jìn)行Store操作的數(shù)組元素 SA[ai+b]具有相同的下標(biāo)斜率,或不存在進(jìn)行Store 操作的數(shù)組元素,則將集合&中數(shù)組元素按不同下標(biāo)斜率劃分到不同集合Sxa中,a = 1··· N,表示不同的數(shù)組下標(biāo)斜率,如果存在η個不同的數(shù)組下標(biāo)斜率,則需要備份η份訪存數(shù) 據(jù),之后執(zhí)行步驟(3);當(dāng)數(shù)組元素 SA[al+b]存在不同的下標(biāo)斜率a時,將集合6:(中數(shù)組元素 按不同下標(biāo)斜率劃分到不同集合S xan中,m = a,執(zhí)行步驟(4);
[0030] (3)依次遍歷不同集合Sxa中的數(shù)組元素,R表示數(shù)組下標(biāo)截距模數(shù)據(jù)步長k同 余的數(shù)組元素之間的關(guān)系,數(shù)據(jù)步長表示每次循環(huán)迭代時數(shù)組元素增加的地址間隔,k = a*Stepi,Stepi表示循環(huán)步長.R為集合Sa上的等價(jià)關(guān)系,對任何數(shù)組元素 XA [ai+b]e Sxk,集 合[XA[ai+b]]R = {x|x e Sxa,ARx},[XA[ai+b]]R 簡化表示為 Sxam,m = 1···1?-1,表示模數(shù)據(jù)步長 k 的余數(shù),
[0031] (4)將每個集合Sxall^ S xQni中的數(shù)組元素 XA [al+b]按類仿射數(shù)組下標(biāo)的截距從小 到大進(jìn)行排序,當(dāng)循環(huán)迭代空間存在寫后讀相關(guān),刪除進(jìn)行Load操作的數(shù)組元素;當(dāng)進(jìn)行 Load操作的數(shù)組元素與進(jìn)行Store操作的數(shù)組元素具有相同數(shù)組下標(biāo)時,將進(jìn)行Store操 作的數(shù)組元素排在進(jìn)行Load操作的數(shù)組元素前面,如果這兩個數(shù)組元素之間存在迭代內(nèi) 寫后讀相關(guān),則從集合中刪除進(jìn)行Load操作的數(shù)組元素;
[0032] (5)遍歷集合Sxam或Sxftll中的數(shù)組元素,每當(dāng)遍歷到進(jìn)行Store操作的數(shù)組元素時, 都將其及之前的所有數(shù)組元素構(gòu)成一個新的集合S x_或S xftm,n = I. . . N,表示第η個新集 合,按此規(guī)則繼續(xù)遍歷剩余的數(shù)組元素,直到遍歷完集合中的所有數(shù)組元素,如果不存在進(jìn) 行Store操作的數(shù)組元素,則剩余的數(shù)組元素構(gòu)成一個新的集合;
[0033] (6)計(jì)算集合Sx_或S xam中每兩個相鄰數(shù)組元素之間的數(shù)據(jù)重用度 R〈XA[al+b], XA[al+(:]>,如果集合Sx_中只有一個數(shù)組元素,則不計(jì)算數(shù)據(jù)重用度:
[0034]
[0035] 不能整除時,R〈XA[ai+b], XA[ai+c]> = 0· Δ d〈XA[ai+b], XA[ai+c]> 表示一次循環(huán)迭代內(nèi)數(shù) 組元素之間的距離:|c_b| ;
[0036] (7)依次遍歷數(shù)據(jù)重用度R,如果存在R〈XA[al+b],XA[al+d> = 0,則繼續(xù)劃分集合,將 XA[ai+b]及之前的所有數(shù)組元素構(gòu)成一個新的集合Sxamnv或Sxftmv,V = I. . .N,表示第V個新集 合,按此規(guī)則繼續(xù)遍歷剩余的數(shù)組元素,直到遍歷完集合中的所有數(shù)組元素,如果不存在數(shù) 據(jù)重用度R = 0的情況,則集合Sx_或S xftm中剩下的數(shù)組元素構(gòu)成一個新的集合S x_j O · 〇x0mnv,
[0037] (8)生成訪存數(shù)據(jù)依賴圖MDDGxaninv集合:每個集合S x_^ S xQ_中的數(shù)組元素 為訪存數(shù)據(jù)依賴圖MDDGxaninv或MDDGxamv中一個節(jié)點(diǎn),其中第一個節(jié)點(diǎn)為根節(jié)點(diǎn),從根節(jié) 點(diǎn)開始依次指向其后序節(jié)點(diǎn),最后一個節(jié)點(diǎn)為葉子節(jié)點(diǎn),每條邊上的權(quán)值為數(shù)據(jù)重用度 R〈XA[al+b],XA[al+d>,生成的訪存數(shù)據(jù)依賴圖的個數(shù)等于集合S xamnvS S xamv的個數(shù)。
[0038] 計(jì)算生成參數(shù)化并行存儲結(jié)構(gòu)時所需的參數(shù)值包括:
[0039] 多體交叉存取度:Ram_num ;
[0040] 存儲體深度:Ram_depth ;
[0041 ]存儲體位寬:Ram_width ;
[0042] RAW Bufffer 個數(shù):RBuff er_num ;
[0043] RAW Bufffer 深度:RBuff er_depth ;
[0044] Smart Buffer 個數(shù):SBuffer_num ;
[0045] Smart Buffer 深度:Register_num〇
[0046] 本發(fā)明的有益效果在于:
[0047] 此模板結(jié)構(gòu)不僅充分挖掘了輸入數(shù)據(jù)重用和循環(huán)迭代間數(shù)據(jù)重用,還為了提高硬 件執(zhí)行頻率,采用了寄存器平移策略,簡化了硬件設(shè)計(jì),保證Smart buffer緩存結(jié)構(gòu)與計(jì)算 單元的連接固定不變。在編譯生成硬件存儲結(jié)構(gòu)時,不僅可以根據(jù)應(yīng)用程序計(jì)算量匹配存 儲容量,更可以根據(jù)程序特征,靈活生成由多體交叉并行存儲結(jié)構(gòu)、單體串行訪存結(jié)構(gòu)、RAW Buffer緩存結(jié)構(gòu)及Smart Buffer緩存結(jié)構(gòu)組成的存儲體系。循環(huán)攜帶流相關(guān)數(shù)據(jù)重用支 持能力,除了文獻(xiàn)[11]之外,均不支持此類數(shù)據(jù)重用。忽略了不可數(shù)據(jù)重用訪存節(jié)點(diǎn)的并 行訪問。
【附圖說明】
[0048] 圖1是類仿射型數(shù)組下標(biāo)應(yīng)用示例代碼;
[0049] 圖2是圖1中示例代碼的數(shù)據(jù)訪問軌跡圖;
[0050] 圖3是參數(shù)化并行存儲結(jié)構(gòu)模板;
[0051] 圖4是訪存數(shù)據(jù)依賴圖集合;
[0052] 圖5是根據(jù)圖1中示例代碼生成的并行存儲結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0053] 下面結(jié)合附圖舉例對本發(fā)明做更詳細(xì)的描述:
[0054] 本發(fā)明針對只有層內(nèi)數(shù)據(jù)重用的仿射類數(shù)組下標(biāo)應(yīng)用程序,提出一種參數(shù)化并行 存儲模板,結(jié)構(gòu)如圖3所示。主要包括多體交叉并行存儲結(jié)構(gòu)、Smart Buffer、RAW Buffer、 地址產(chǎn)生單元和存儲控制器,在多體交叉并行存儲結(jié)構(gòu)中,地址流解析單元生成訪問多個 并行RAM存儲體模塊使用的內(nèi)部訪問地址流,通過外部的地址產(chǎn)生單元給多體交叉并行存 儲結(jié)構(gòu)提供數(shù)據(jù)索引地址流;在類仿射數(shù)組下標(biāo)應(yīng)用流水執(zhí)行時,通過存儲卡控制器控制 RAW Buffer的讀寫、地址產(chǎn)生單元控制多體交叉并行存儲結(jié)構(gòu)中的數(shù)據(jù)訪問,然后兩者將 數(shù)據(jù)流以流水方式傳遞給Smart Buffer,為程序中的運(yùn)算單元流水執(zhí)行提供流水的數(shù)據(jù)支 撐,從而提升整個應(yīng)用的流水性能。
[0055] 在自動生成硬件存儲結(jié)構(gòu)時,采用模塊化設(shè)計(jì)思想,先將參與循環(huán)迭代空間運(yùn)算 的數(shù)組元素按數(shù)組名劃分為不同的對象,再采用訪存數(shù)據(jù)依賴圖表示同名數(shù)組的數(shù)據(jù)訪存 特征;接下來,根據(jù)訪存數(shù)據(jù)依賴圖計(jì)算生成各個子模塊的參數(shù)值,自動生成各個獨(dú)立的存 儲模塊,包括多體交叉并行存儲結(jié)構(gòu)、單體串行存儲結(jié)構(gòu)(并行度為1的多體交叉并行存儲 結(jié)構(gòu))、RAW Buffer緩存結(jié)構(gòu)及Smart Buffer緩存結(jié)構(gòu);最后生成各個子模塊的連線模塊, 構(gòu)成多層次存儲體系。本發(fā)明主要論述自動生成硬件存儲結(jié)構(gòu)過程中的訪存數(shù)據(jù)依賴圖生 成算法和各子模塊參數(shù)值計(jì)算方法。
[0056] 本發(fā)明的一種面向類仿射數(shù)組下標(biāo)應(yīng)用的參數(shù)化并行存儲結(jié)構(gòu)模板的工作原理 如下:
[0057] 當(dāng)參與循環(huán)程序運(yùn)算的數(shù)組下標(biāo)為類仿射型時,每次循環(huán)迭代需要訪存的數(shù)組數(shù) 據(jù)分為新數(shù)據(jù)和復(fù)用數(shù)據(jù)兩類。在編譯程序時,根據(jù)數(shù)組數(shù)據(jù)依賴關(guān)系,為新數(shù)據(jù)自動生成 基于RAM的多體交叉并行訪存結(jié)構(gòu)或單體串行訪存結(jié)構(gòu),為流水線提供并行的輸入數(shù)據(jù)讀 取(Load)與輸出數(shù)據(jù)寫回(Store)操作。同時,由于FPGA器件具有較多的寄存器資源,可 以盡量復(fù)用運(yùn)算數(shù)據(jù),為復(fù)用數(shù)據(jù)生成RAW Buffer、Smart Buffer結(jié)構(gòu),專用于存儲需要復(fù) 用的數(shù)據(jù),從而消除對RAM的訪問沖突,保證流水線的效率。根據(jù)需要訪存的復(fù)用數(shù)據(jù)依賴 類型編譯器會自動生成不同的緩存結(jié)構(gòu):為輸入依賴的復(fù)用數(shù)據(jù)生成Smart Buffer緩存 結(jié)構(gòu),為循環(huán)迭代間的流依賴(寫后讀相關(guān))的復(fù)用數(shù)據(jù)自動生成RAW Buffer緩存結(jié)構(gòu)。 其中Smart Buffer直接服務(wù)于運(yùn)算單元,RAW Buffer和RAM為運(yùn)算單元和Smart Buffer 服務(wù)。在編譯時,根據(jù)應(yīng)用程序訪存特征,組合各子存儲結(jié)構(gòu),生成多層次存儲結(jié)構(gòu)。需要 為參與循環(huán)運(yùn)算的不同的數(shù)組確定的參數(shù)有:多體交叉并行訪存結(jié)構(gòu)的分體數(shù)Ram_num ; 存儲體深度Ram_depth,存儲體位寬Ram_width ;Smart Buffer緩存結(jié)構(gòu)的個數(shù)SBuffer_ num,Smart Buffer 的深度 Register_num;RAW Buffer 緩存結(jié)構(gòu)的個數(shù) RBuffer_num,RAW Bufffer深度RBufTe
當(dāng)前第2頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
丰台区| 洪江市| 奉新县| 潮州市| 伊通| 唐海县| 当阳市| 邢台市| 尖扎县| 广河县| 衡阳县| 顺平县| 申扎县| 新田县| 偏关县| 特克斯县| 波密县| 泰兴市| 元谋县| 开平市| 黄平县| 石河子市| 彰武县| 宁强县| 武安市| 博罗县| 临朐县| 东至县| 邵武市| 玉树县| 平顺县| 工布江达县| 威信县| 紫云| 扶沟县| 营山县| 成都市| 祁东县| 浏阳市| 嘉兴市| 彰武县|