论文部分内容阅读
随着深度学习与大数据应用的兴起,传统的基于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的性能加速比。