针对CPU-FPGA异构多核片上系统的自动化数据布局研究
发布时间:2020-07-19 10:04
【摘要】:随着深度学习与大数据应用的兴起,传统的基于CPU的架构已经难以满足这些新型应用的计算要求。对此,工业界与学术界开始使用硬件加速器来弥补传统CPU架构的弊端。FPGA凭借其高能效比以及灵活的动态可重构功能(dynamic reconfiguration)得到了越来越多的关注。然而,传统的基于FPGA的设计往往需要花费大量的时间并且调试难度很大。随着FPGA的不断发展,高级综合(High Level Synthesis,HLS)工具得到了极其广泛的应用,其有效地解决了FPGA设计难于实现的问题。高级综合工具将C\C++等高级语言自动转换为相对应的硬件描述语言模块,大大减少了设计实现基于FPGA的系统应用的难度,特别是针对大量的软件工程师而言。同时,高级综合工具提供了许多优化技术以便于系统设计者针对包括硬件资源消耗,性能,功耗等在内的不同优化目标进行系统优化。此外,不同于以往基于CPU的系统架构,异构系统中的存储子系统通常要复杂的多。具体而言,纯CPU系统架构下的存储体系一般由多级Cache与主存构成。而针对异构系统来说,有着软件可控的便笺式存储器(Scratchpad Memory,SPM)以及CPU端与加速器端均可访问的共享Cache。这些存储体系各具特点,对其进行合理地利用对提高整个系统性能有着重要的作用。针对CPU-FPGA异构多核片上系统.(Heterogeneous Multiprocessor system-on-chip,HMPSoC)而言,片上存储资源极其有限。因此,对其进行合理地利用尤为重要。然而当今最先进的高级综合工具都依赖于系统设计者人工决定复杂存储体系下的数据布局。在这篇论文中,我们提出了一个可以与商业化工具Vivado HLS无缝结合的自动化的数据布局框架。首先,我们基于Zedboard异构多核片上系统设计了一系列微测试程序来测量各种类型的访存延迟,如Cache命中,Cache miss,或者直接访问主存等。基于对上述存储子系统模型中数据的分析,我们得出了一些不同于传统CPU架构环境的结论:如Cache所发挥的作用没有传统环境下的那么大;针对突发模式访存来说,其访存延迟与存储资源的选择基本没有关系。因此基于这些结论,我们发现基于频率与局部性的,针对传统的CPU架构的数据布局策略直接应用于CPU-FPGA异构多核片上系统上所取得的性能并不理想。依赖于我们的存储延迟分析模型并结合LLVM编译框架,我们提出了一个基于整数线性规划(Integer linear programming,ILP)的自动化数据布局框架来决定了每一个数组对象应该经由以下哪种存储被访问:片上块存储(Block RAM,BRAM),CPU-FPGA共享的第二级存储(Level 2 Cache,L2 Cache)或者直接访问双倍速率(Double Date Rate,DDR)存储器。此外,我们设计了一个基于贪心策略的基准算法来进行比较,在Zedboard平台上得到的实验结果表明相较于基准算法,我们所提出的策略有1.39X的性能加速比。
【学位授予单位】:山东大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP332;TN791
【图文】:
V逦^逡逑图2-1高级综合工具基本工作机制逡逑如图2-1所示,高级综合工具对该内核程序做出的调度方案为:第一个时钟逡逑周期执行*和+,第二个时钟周期执行+以及结果输出。在最终的硬件实现逡逑中,高级综合将形参实现为对应的输入输出端口,在图2-1中,x、a、b、c最终逡逑被实现为8位的输入端口,而y则实现为32位的输出端口。在刚开始的绑定阶逡逑段,高级综合使用组合乘法器(Multiplier,邋Mul)来做乘法,使用组合加法器/减逡逑法器(Adder/Subtractor,邋AddSub)来实现加法。然而在最终的绑定阶段,高级综逡逑11逡逑
在串行执行模式下,如传统的C/C++语言程序,下一次的循环迭代必须等到逡逑当前迭代的最后一个操作结束之后才能开始。当用优化之后,循逡逑环体中的操作可以如图2-2所示的方式并行执行。逡逑Without邋Pipelining逦With邋Pipelining逡逑Loop'for(i=1;i<3;i-*-*-)邋{逦逦逡逑op_Read:逦—逡逑逦邋op_Compu!e:逦CMP逡逑op_V/rite;逡逑f逦f逡逑Initiation邋Interval邋=邋3邋cycles逦Initiation邋Interval邋=邋1邋cycle逡逑RD邋CMP邋|邋WR邋|邋R0邋CMP邋f邋WR逦RD邋CMP邋["wr"*逡逑RD邋CMP邋WR逡逑?逦?邋?逦?逡逑Latency邋=邋3邋cycles逦Latency邋=邋3邋cycles逡逑m逦?逦?逦逦逦?逡逑Loop邋Latency邋=邋6邋cycles逦Loop邋Latency邋=邋4邋cycles逡逑图2-2逦优化技术不例逡逑如图2-2所示,在没有用/o%;7扣///7//7g优化时,两个RD操作之间需要经过逡逑12逡逑
逦Oj^imizer逦Backend邋?逡逑图2-5传统编译器架构逡逑其中前端(Frontend)主要包括词法分析、语法分析、语义分析以及生成中间逡逑代码。优化器(Optmiizer)主要是指中间代码优化。后端(Backend)主要指生逡逑成机器码。逡逑而LLVM邋(Low邋Level邋Virtual邋Machine)的主要架构如下所示:逡逑r逦Clang邋0/0??/0句C逦UVM逦y邋A逡逑^ronftnd逦^\s逦f逦KS6邋Baek_d逡逑Fortran-*.邋Hvm^ccFronsena邋—|逦^邋PowerPC^Back*^邋PowetPC逡逑HasKefi邋^逦OHC邋fr0r\mm逦'逦、逦^逦AHM逡逑avM邋m逦U.VMIR逡逑图2-6邋LLVM架构逡逑14逡逑
本文编号:2762269
【学位授予单位】:山东大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP332;TN791
【图文】:
V逦^逡逑图2-1高级综合工具基本工作机制逡逑如图2-1所示,高级综合工具对该内核程序做出的调度方案为:第一个时钟逡逑周期执行*和+,第二个时钟周期执行+以及结果输出。在最终的硬件实现逡逑中,高级综合将形参实现为对应的输入输出端口,在图2-1中,x、a、b、c最终逡逑被实现为8位的输入端口,而y则实现为32位的输出端口。在刚开始的绑定阶逡逑段,高级综合使用组合乘法器(Multiplier,邋Mul)来做乘法,使用组合加法器/减逡逑法器(Adder/Subtractor,邋AddSub)来实现加法。然而在最终的绑定阶段,高级综逡逑11逡逑
在串行执行模式下,如传统的C/C++语言程序,下一次的循环迭代必须等到逡逑当前迭代的最后一个操作结束之后才能开始。当用优化之后,循逡逑环体中的操作可以如图2-2所示的方式并行执行。逡逑Without邋Pipelining逦With邋Pipelining逡逑Loop'for(i=1;i<3;i-*-*-)邋{逦逦逡逑op_Read:逦—逡逑逦邋op_Compu!e:逦CMP逡逑op_V/rite;逡逑f逦f逡逑Initiation邋Interval邋=邋3邋cycles逦Initiation邋Interval邋=邋1邋cycle逡逑RD邋CMP邋|邋WR邋|邋R0邋CMP邋f邋WR逦RD邋CMP邋["wr"*逡逑RD邋CMP邋WR逡逑?逦?邋?逦?逡逑Latency邋=邋3邋cycles逦Latency邋=邋3邋cycles逡逑m逦?逦?逦逦逦?逡逑Loop邋Latency邋=邋6邋cycles逦Loop邋Latency邋=邋4邋cycles逡逑图2-2逦优化技术不例逡逑如图2-2所示,在没有用/o%;7扣///7//7g优化时,两个RD操作之间需要经过逡逑12逡逑
逦Oj^imizer逦Backend邋?逡逑图2-5传统编译器架构逡逑其中前端(Frontend)主要包括词法分析、语法分析、语义分析以及生成中间逡逑代码。优化器(Optmiizer)主要是指中间代码优化。后端(Backend)主要指生逡逑成机器码。逡逑而LLVM邋(Low邋Level邋Virtual邋Machine)的主要架构如下所示:逡逑r逦Clang邋0/0??/0句C逦UVM逦y邋A逡逑^ronftnd逦^\s逦f逦KS6邋Baek_d逡逑Fortran-*.邋Hvm^ccFronsena邋—|逦^邋PowerPC^Back*^邋PowetPC逡逑HasKefi邋^逦OHC邋fr0r\mm逦'逦、逦^逦AHM逡逑avM邋m逦U.VMIR逡逑图2-6邋LLVM架构逡逑14逡逑
【相似文献】
相关硕士学位论文 前3条
1 李世清;针对CPU-FPGA异构多核片上系统的自动化数据布局研究[D];山东大学;2019年
2 郑凌;基于CPU-FPGA的异构多核系统设计及并行编程模型研究[D];西安电子科技大学;2014年
3 杨慧德;层叠式多CPU-FPGA微服务器体系架构的研究与实现[D];东南大学;2017年
本文编号:2762269
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2762269.html