论文部分内容阅读
由于处理器性能和存储器性能的巨大差异,导致了“存储墙”问题的出现,使得存储系统成为系统的瓶颈。传统计算机体系结构均采用硬件管理的cache来解决存储墙问题。然而,随着应用和工艺的发展,Cache逐渐暴露出一些问题。相比之下,软件管理的片上存储器以其面积、功耗和访问时间等方面的优势,被认为是解决存储墙问题的一个有效途径。目前,软件管理的片上存储器已被普遍运用于嵌入式系统、流处理器和图形处理器中,并被逐渐运用到新型高性能计算机体系结构中。与硬件管理的cache不同,软件管理的片上存储器需要由软件通过数据传输语句显式地管理所有片上与片外存储器之间的数据传输,决定数据进入存储器的时机和位置。软件管理的片上存储器给编译提出了重要的挑战。如何在保证程序正确性的基础上,尽可能提高有限的片上存储器空间的利用率,尽量避免存储器碎片;充分捕获数据复用,优化存储层次间的通信,从而最小化存储器带宽需求;开发计算与访存并行,有效隐藏存储器访问延迟,是提高基于软件管理片上存储器的系统上程序性能的关键。本文重点研究了面向软件管理片上存储器的编译优化问题。本文的主要工作和创新概述如下:(1)提出了基于置换图着色的便笺存储器分配算法。现代嵌入式系统中,广泛地将片上存储器组织为软件管理的便笺存储器(Scratchpad Memory, SPM)。本文深入研究了面向嵌入式应用的SPM分配问题,首次发现了大部分嵌入式应用的相干图(Interference Graph)为置换图(Permutation Graph),从而能在线性时间内获得最优的SPM分配。本文首次提出了一个基于置换图着色的SPM分配算法。理论分析和实验表明,基于置换图着色的SPM分配算法与国际上最新的基于超完美图(Superperfect Graph)的SPM分配算法相比,流程更简洁,复杂度更低,性能更优。(2)提出了基于存储器着色的流寄存器文件分配框架。流体系结构是一种新兴的面向流应用的高性能计算机体系结构。流体系结构采用软件管理的片上存储器,称为流寄存器文件(Stream Register File, SRF),作为数据的核心存储部件。SRF是不可旁路的存储层次,软件必须保证计算需要的输入流提前加载到SRF中,并为输出流分配足够的SRF空间。优良的SRF分配方案还应能在避免引入额外的片外存储器传输的前提下,有效地捕获流应用中广泛存在的生产者消费者局部性,并尽可能地开发计算与访存并行。本文提出了一套基于存储器着色(即存储器划分加上图着色寄存器分配)技术的SRF分配框架。本文研究的新颖之处在于将开发重用和并行巧妙地整合到传统的图着色寄存器分配框架中。此外,针对应用的特点,本文对传统的图着色寄存器分配技术做出了一些改进,如提出了渐增的联合技术,寄存器排序技术。实验表明基于存储器着色的SRF分配框架能够在不引入溢出的前提下,有效地开发复用和并行。(3)提出了基于最佳有向路径寻找的流寄存器文件分配算法。基于存储器着色的SRF分配框架能够有效地开发复用和并行。但是,存储器着色技术在划分SRF以及对相干图进行着色时有一定的缺陷,容易引入SRF空间浪费。本文的另一个研究重点是在相干图确定的情况下(即操作流相干图开发复用和并行后),如何最小化需要的SRF空间,避免引入存储碎片。本文首次发现了大部分的流应用的相干图为可比图(Comparability Graph),或可以降解为多个可比子图,从而能够获得多项式时间的最优SRF分配。本文首次将SRF分配问题建模为最佳有向路径寻找问题,提出了一个新颖的SRF分配算法。严格的理论分析和大量的实验表明,我们的算法能获得最优或近似最优的SRF分配。相对目前普遍采用的基于First-Fit的启发式算法,我们的算法具有更好的性能。(4)提出了基于层次图着色的软件管理多级存储层次分配算法。现代的高性能计算机体系结构中,为了更有效地实现计算与访存的平衡,优化访存带宽和延迟,越来越多地采用软件管理的多级存储层次来替代硬件管理的多级cache存储层次。传统的编译优化研究大都面向单一存储层次,缺乏对存储层次全局的综合考虑,对存储层次间通信等的优化不足。而最小化存储层次间的通信,能大大减少存储器带宽需求,是影响性能的一个重要因素。本文扩展了图着色寄存器分配算法,首次将其运用到多级存储层次分配上。通过将存储层次建模为一个带权图,我们的方法可以运用到任何多级软件管理存储层次组织上。我们对传统数据相干图进行扩展,提出路径合并和路径消解技术,有效地减少存储层次间通信。通过数据生存期扩展技术,还能有效地进行计算与访存并行的开发,从而隐藏存储访问延迟。以上的优化都跟扩展后的图着色寄存器分配框架巧妙地整合在一起。实验表明,我们的算法有良好的性能。