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

文档序号:8942896阅读:360来源:国知局
一种面向类仿射数组下标应用的参数化并行存储结构模版的制作方法
【技术领域】
[0001] 本发明涉及的是在可重构编译领域,基于LLVM的CPU-FPGA异构体系结构面向 C2VHDL的可重构编译器ASCRA中一种面向类仿射数组下标应用的参数化并行存储结构模 版。
【背景技术】
[0002] 目前,国内外针对CPU-FPGA计算平台的自动化编译工具的研究已经取得了一些 可喜的研究成果,主要分为两类:一类是采用类C语言作为程序设计语言,但这些类C语言 已将ANSI C扩充得面目全非,程序开发人员相当于重新学习一种新的语言,增加了设计难 度;另外一类是由C语言作为程序设计语言,由编译器将C语言中待加速的代码编译成为 VHDL语言,再由ISE等综合工具生成硬件电路。本发明主要研究应用于后一类面向C2VHDL 编译器的相关技术。
[0003] 目前一些国内外大学、科研机构及工业界对这类编译器已经进行了初步的研究, 但是在为循环流水阵列生成硬件存储结构时这些编译器对数据重用及并行支持的不够完 善,影响了计算性能的提高。文献[1]提出了一种可重构编译器,利用猜测和前瞻执行方 式开发指令级并行,主要针对无循环携带相关的计数类循环进行加速,采用迭代模调度 IMS(Iterative Modulo Scheduling)方式实现循环流水,根据迭代模调度算法确定启动 间距后,相隔一定的启动间距IlQnitiation interval)插入段间寄存器,根据数据流图 DFG (Data Flow Graph)生成相应的数据通路,流水化执行循环;文献[2]在文献[1]的基 础上,主要研究编译优化技术挖掘循环并行性,如循环展开、循环流水等传统的软件编译优 化技术实现循环的加速;文献[3]针对计数类循环,利用迭代模调度消除存储调度冲突,实 现最内层能循环的软件流水,当流水失败时增大启动间距避免数据冲突,该方法不利于吞 吐率的提高,文献[1,2, 3]中提出的编译器只生成了为循环流水阵列提供数据的单体串行 存储结构,没有提出并行的存储结构概念。文献[4]使用ARM处理器作为目标嵌入式平台, 针对单存储端口且无循环携带相关的循环,采用软件流水技术以固定的启动间距II,执行 流水,流水时,首先调度访存指令,然后调度非访存指令,并没有并行存储系统的设计。文 献[5]设计的编译器针对类仿射数组下标应用中的面向滑动窗口类特殊应用提出了有针 对性的存储结构模板,其存储结构由片外存储器MEM、片存储器Block RAM和Smart Buffer 构成,数据首先从片外存储器MEM流入Block RAM,然后调入支持数据重用的输入Smart Buffer,为流水通路供应输入数据,运算完成后,结果存入输出Smart Buffer并经Block RAM传回片外存储器,Smart Buffer根据总线大小、滑动窗口大小、数据大小和滑动距离 自动生成,但是此模板无法用于具有循环迭代间流依赖的应用,同时由于其生成的Smart Buffer结构采用寄存器和计算单元完全互连的方法,导致仲裁机制较为复杂。文献[6]针 对文献[5]中存在的问题提出了优化后的参数化三层存储体系结构模板,但是此模板为只 有层内数据重用特征的循环展开程序生成存储结构时,其并行性还存在可以改进的空间, 此模板仅针对滑动窗口类型的应用,无法为具有循环迭代间流依赖的应用生成存储结构。 文献[7, 8]提出的编译器主要采用多Cache结构提供并行访问数据,当循环展开时,编译 器为每个循环迭代复制一份Cache数据,在提升程序性能的同时明显的增加了硬件面积开 销,尤其当程序中存在循环迭代间流依赖时,生成的硬件存储结构会出现Cache -致性的 问题。文献[9, 10]提出的编译器主要研究如何为类仿射数组下标应用自动生成并行存储 体及防止数据并行访问冲突的调度方法。文献[11]提出了一种粗粒度可重构协处理器体 系结构,用于加速计算密集或数据密集类算法,其在ALU运算部件前后加入输入输出FIFO, 利用数据选择指令和非平衡广播指令配合FIFO实现数据重用,通过拷贝多分RAM消除结构 相关,实现数据的并行读取,该结构虽然可以实现数据重用及数据的并行传输,但是耗费了 大量宝贵的片上存储资源。
[0004] 存储系统的设计直接影响运算系统潜在并行性的发挥,制约着循环流水的整体性 能,在文献[1,2, 3, 4]等编译器中均无优化的存储结构设计,调度访存指令时,需耗费大量 的时钟周期读取所需的数据,为避免访存冲突,只能增大启动间距II,导致循环流水吞吐率 的大大降低,访存指令的调度成为制约循环流水性能提升的瓶颈。存储系统研究的关键问 题是提高存储带宽,减少存储器的访存次数和冲突,数据重用是目前广泛采用的方法。目前 可重构编译系统中,存储结构的设计存在一定的缺陷:
[0005] (1)仅具有能为某类特定应用程序设计存储结构,其存储结构的可配置及灵活性 较差,文献[5, 6]提出的存储体系结构模型,仅面向滑动窗口类型的应用,开发输入相关数 据重用,存储容量可配置,存储结构固定不变。
[0006] (2)循环携带流相关数据重用支持能力弱,除了文献[11]之外,均不支持此类数 据重用。
[0007] (3)忽略了不可数据重用访存节点的并行访问。目前普遍基于数据重用方式开发 存储结构,对数据重用之外的存储结构研究甚少。文献[11]通过拷贝多份RAM实现不可重 用节点数据的并行读取,但是片上存储资源有限,拷贝多份RAM的方式对存储资源需求大 量增加,有可能超出片上存储资源数目。
[0008] 类仿射数组下标的应用是指参与循环运算的数组元素下标为类仿射型应用,在 实际应用中很多程序都是类仿射型。如图1的示例代码为一个典型的类仿射型数组下标 应用,循环边界和数组下标是循环变量或常数的仿射函数。如果数组每维的下标都具有 ain+c(inl,…,Li1)的形式,其中a为整数,η为循环嵌套层数,Li 2,…,in为循环索引 变量,c (in i,…,i2, D为由L i2,…,in派构成的函数(若η = 1,c (i η η…,i2, h)为常 数),称该数组的下标为类仿射型。在图1中的示例代码中,只有数组A参与循环运算,当循 环关键变量i步进时,数据访问轨迹如图2所示,存在箭头所指的循环迭代间数据重用。在 充分挖掘数据重用后,执行每次迭代空间时只需从RAM中读取阴影方框表示的数据,其他 输入数据可以重用上次循环迭代时读取或生成的数据,进而提高流水线的执行效率,加速 应用。如何为仿射类型数组下标应用生成数据重用和并行性高的存储结构是可重构编译技 术的关键任务。
[0009] 对于类仿射型数组下标应用,上述文献中所列举的可重构编译器在自动生成具有 并行性和数据可重用性的存储结构时,都存在各自的局限性。本发明主要采用模板方法为 只有层内数据重用的仿射类数组下标应用编译生成高效的模块化多层次存储结构,编译时 采用模块化设计思想,根据应用程序访存特征自动组合各子存储模块,生成多层次并行存 储结构体。
[0010] 相关对比文件包括:
[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,Fan Y.,Jiang W. et al. AutoPilot: a platform based ESL
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1