一种面向类仿射数组下标应用的参数化并行存储结构模版的制作方法_4

文档序号:8942896阅读:来源:国知局
所以只能划分成一个集合Sn。= {LA[i],LA[i+l], LA[i+3],LA[i+6],SA[i+2]} 〇
[0107] (4)将集合SllO中的数组元素 XA[ai+b]按类仿射数组下标的截距从小到大进行 排序,得到集合Sn。= {LA[i],LA[i+l],SA[i+2],LA[i+3],LA[i+6]},当循环迭代空间存在 写后读相关,删除进行Load操作的数组元素;当进行Load操作的数组元素与进行Store操 作的数组元素具有相同数组下标时,将进行Store操作的数组元素排在进行Load操作的数 组元素前面,如果这两个数组元素之间存在迭代内写后读相关,则从集合中删除进行Load 操作的数组元素。得到最终集合 Sn。= {LA[i],LA[i+l],SA[i+2],LA[i+3],LA[i+6]}。
[0108] (5)遍历集合S110中的数组元素,每当遍历到进行Store操作的数组元素时,都将 其及之前的所有数组元素构成一个新的集合S xamnS S xftm (n = I. .. N,表示第η个新集合), 按此规则继续遍历剩余的数组元素,直到遍历完集合中的所有数组元素,如果不存在进行 Store操作的数组元素,则剩余的数组元素构成一个新的集合,最终得到两个集合S1im = {LA[i],LA[i+l],SA[i+2]}和 S1102= {LA[i+3],LA[i+6]}。
[0109] (6)计算每个集合中相邻节点间的数据重用度:R〈LA[i],LA[i+l]> = 1, R〈LA[i+l],SA[i+2]> = 1,R〈LA[i+3],LA[i+6]> = 3。
[0110] (7)依次遍历数据重用度R,因为不存在数据重用度R = 0的情况,所以不用继续 划分集合。
[0111] ⑶生成的访存数据依赖图的个数等于集合Sx_j S xamv的个数,为两个集合S _ 和Sllt^v别生成两个访存数据依赖图MDDG 11Q1。和MDDG 11Q2。,集合中的数组元素为访存数据 依赖图的节点,其中第一个数组元素为根节点,最后一个数组元素为叶子节点,每条边上的 权值为数据重用度R。访存数据依赖图MDDG 1101。中叶子节点为SA[i+2],访存数据依赖图 MDDG1102。中叶子节点为LA[i+6].最终生成如图4所示的访存数据依赖图集合。
[0112] 2、模板参数的计算
[0113] 根据参数计算公式得出:多体交叉存取度Ram_num = 1,Ram_depth = 100,Ram_ width = 32,RAW Bufffer的个数RBuffer_num = 1,如图1所不代码,其进行Store操作 的数组元素的流水段号为1,因此,RAW Bufffer的深度RBuffer_depth = 0 ;Smart Buffer 的个数SBuffer_num = 2 ;其中含有流依赖的访存数据的Smart Buffer中寄存器的个数 Register_num = 2,不含有流依赖的访存数据的Smart Buffer中寄存器的个数Register_ num = 4 〇
[0114] 3、参数化并行存储结构模板使用方法
[0115] 根据参数化的并行存储结构模板,最终为图1所示的程序段生成如图5所示的存 储结构。RAW Buffer用来存储写后读相关度的重用数据,与ALU和Smart Buffer相连, Smart Buffer和运算单元相连,存储输入可重用数据,为运算提供并行输入数据,其数据来 源于RAW Buffer缓存结构和RAM存储体。其中,Smart Buffer采用寄存器平移策略传递数 据,保证其和运算单元之间连接关系固定不变,降低了硬件复杂度。在流水线建立阶段,MUX 选择器从RAM存储体接受数据,为Smart BufferO提供A [1]和A [2] ;RAM存储体为Smart Bufferl提供A[4]至A[7],其中A[5]和A[6]是下次迭代所需要的数据。第1次迭代(i =1),厶[3]=厶[1]+厶[2]+厶[4]+厶[7],第2次迭代(1 = 2),厶[4]=厶[2]+厶[3]+厶[5]+厶[8], 其中A[2]由Smart BufferO中的寄存器平移获得,新的A[3]由RAW Buffer提供,A[5]由 Smart Bufferl中的寄存器平移获得,A [8]由RAM存储体提供存入Smart BufferL以次类 推,整个运算过程只需要对RAM进行106次访问,且没有访存冲突,流水线效率得到充分发 挥。
【主权项】
1. 一种面向类仿射数组下标应用的参数化并行存储结构模版,其特征在于:采用模块 化设计思想的参数化并行存储结构模版在处理参与循环程序运算的数组下标为类仿射型 时,为新数据自动生成基于RAM的多体交叉并行访存结构或单体串行访存结构,为输入依 赖的复用数据生成Smart Buffer缓存结构,为循环迭代间的流依赖的复用数据自动生成 RAW Buffer缓存结构,其中Smart Buffer直接服务于运算单元,RAW Buffer和RAM为运算 单元和Smart Buffer服务;所述访存数据依赖图MDDG = (V,E,R),其中V为节点集合,E为 连接相邻节点的有向边,R为数据重用度,,ihLsk即循环迭代空间内数 组元素 进行了 Load 或 Store 操作,每个''(Μ?,,+也 一个数据重用度: 表示节点It 每隔# ( Λ > =#:>次循环迭代就会同 节点l生对同一存储地址的读写;访存数据依赖图的生成包括: (1) 遍历程序中进行Load和Store操作的所有数组元素,根据数组名,分别将其划分到 不同的集合Gx中,X = 1…n,表示有程序中存在不同名的数组个数,根据操作属性将数组元 素 A[ai+b]表不为 LA [ai+b]或 SA [ai+b], 将其插入到集合Gx中; (2) 遍历集合&中的元素,获得数组元素下标斜率A= {a I a为数组元素下标斜率}, 当所有进行Store操作的数组元素 SA[ai+b]具有相同的下标斜率,或不存在进行Store操作 的数组元素,则将集合&中数组元素按不同下标斜率划分到不同集合Sxa中,a = 1···Ν,表 示不同的数组下标斜率,如果存在η个不同的数组下标斜率,则需要备份η份访存数据,之 后执行步骤(3);当数组元素 SA[al+b]存在不同的下标斜率a时,将集合Gx*数组元素按不 同下标斜率划分到不同集合Sxan中,m = a,执行步骤(4); (3) 依次遍历不同集合Sxa中的数组元素,R表示数组下标截距模数据步长k同余 的数组元素之间的关系,数据步长表示每次循环迭代时数组元素增加的地址间隔,k = a*Stepi,Stepi表示循环步长.R为集合Sa上的等价关系,对任何数组元素 XA [ai+b]e Sxk,集 合[XA[ai+b]]R = {x|x e Sxa,ARx},[XA[ai+b]]R 简化表示为 Sxam,m = 1···1?-1,表示模数据步长 k 的余数,S5a,eSs"; (4) 将每个集合SxaniS S Λ中的数组元素 XA [al+b]按类仿射数组下标的截距从小到大进 行排序,当循环迭代空间存在写后读相关,删除进行Load操作的数组元素;当进行Load操 作的数组元素与进行Store操作的数组元素具有相同数组下标时,将进行Store操作的数 组元素排在进行Load操作的数组元素前面,如果这两个数组元素之间存在迭代内写后读 相关,则从集合中删除进行Load操作的数组元素; (5) 遍历集合Sxam或S xftll中的数组元素,每当遍历到进行Store操作的数组元素时,都 将其及之前的所有数组元素构成一个新的集合SxamnS S xam,n = I. . .N,表示第η个新集合, 按此规则继续遍历剩余的数组元素,直到遍历完集合中的所有数组元素,如果不存在进行 Store操作的数组元素,则剩余的数组元素构成一个新的集合; (6) 计算集合Sx_或Sxftm中每两个相邻数组元素之间的数据重用度R〈XA[al+b],XA [al+d>, 如果集合Sx_中只有一个数组元素,则不计算数据重用度: R〈XA[ai+b],XA[ai+c] >=Δ d<XA[ai+b], XA[ai+c]>/k 不能整除时,R〈XA[ai+b],XA[ai+(:]> = 0. Ad〈XA[ai+b],XA[ai+(:]>表示一次循环迭代内数组元 素之间的距离:|c_b| ; (7) 依次遍历数据重用度R,如果存在R〈XA[al+b],XA[al+d> = 0,则继续划分集合,将 XA[ai+b]及之前的所有数组元素构成一个新的集合Sxamnv或Sxftmv,V = I. . .N,表示第V个新集 合,按此规则继续遍历剩余的数组元素,直到遍历完集合中的所有数组元素,如果不存在数 据重用度R = 0的情况,则集合Sx_或S xftm中剩下的数组元素构成一个新的集合S x_j O · 〇x0mnv, (8) 生成访存数据依赖图MDDGxamnv集合:每个集合S X_VS S xftmv中的数组元素为 访存数据依赖图MDDGxamnv或MDDG xQ_中一个节点,其中第一个节点为根节点,从根节点 开始依次指向其后序节点,最后一个节点为叶子节点,每条边上的权值为数据重用度 R〈XA[al+b],XA[al+d>,生成的访存数据依赖图的个数等于集合S xamnvS S xamv的个数。2.根据权利要求1所述的一种面向类仿射数组下标应用的参数化并行存储结构模版, 其特征在于:计算生成参数化并行存储结构时所需的参数值包括: 多体交叉存取度:Ram_num ; 存储体深度:Ram_depth ; 存储体位宽:Ram_width ; RAW Bufffer 个数:RBuff er_num ; RAW Bufffer 深度:RBuffer_depth ; Smart Buffer 个数:SBuffer_num ; Smart Buffer 深度:Register_num〇
【专利摘要】本发明涉及的是在可重构编译领域,基于LLVM的CPU-FPGA异构体系结构面向C2VHDL的可重构编译器ASCRA中一种面向类仿射数组下标应用的参数化并行存储结构模版。面向类仿射数组下标应用的参数化并行存储结构模版,采用模块化设计思想的参数化并行存储结构模版在处理参与循环程序运算的数组下标为类仿射型时,为新数据自动生成基于RAM的多体交叉并行访存结构或单体串行访存结构。此模板结构不仅充分挖掘了输入数据重用和循环迭代间数据重用,还为了提高硬件执行频率,采用了寄存器平移策略,简化了硬件设计,保证Smart?buffer缓存结构与计算单元的连接固定不变。
【IPC分类】G06F9/45
【公开号】CN105159737
【申请号】CN201510447925
【发明人】吴艳霞, 郭振华, 张国印, 谢东良
【申请人】哈尔滨工程大学
【公开日】2015年12月16日
【申请日】2015年7月28日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1