SRF Coloring: 一种基于图着色的流寄存器文件分配方法
SRF Coloring: Stream Register File Allocation via Graph Coloring
-
摘要: 1.本文的创新点流处理器在众多领域表现出巨大的应用潜力。FT64流处理器是一个面向科学计算的64位流处理器,流寄存器文件 (Stream Register File, SRF)是FT64上的大容量局部存储器。由于存储墙的存在,SRF的有效管理对FT64的性能至关重要。本文提出了一种编译方法,称为SRF Coloring,来自动分配SRF空间。本文的创新点在于:1. 第一次将图着色寄存器分配算法有效地应用于流处理器的SRF的分配。2. 提出了基于FT64体系结构的SRF coloring算法框架,该框架基于一个被广泛理解的图着色寄存器分配算法框架,并针对SRF的访问特点进行了扩充,提高了分配SRF的效率。3. 在SF95Compiler编译框架下实现了该算法。2.实现方法本文的基本想法是按照程序中流的长度将SRF划分为一个带有别名的伪寄存器文件,然后采用一个从一个经典的图着色寄存器分配算法扩充而来的分配算法进行分配。由于SRF的访问方式与传统的标量寄存器、向量寄存器以及便签存储器(scratchpad memory)存在本质的区别,已有的图着色寄存器分配算法不能有效的应用于SRF的分配。针对SRF访问的特点,本文对经典的图着色寄存器分配算法进行了两点扩充:1. 积极的生命周期扩充。2. 基流与派生流共享SRF空间。以经典的图着色寄存器分配算法框架为基础,通过修改少量步骤和增加部分步骤来实现SRF Coloring算法。首先,对Build步骤进行了扩充,增加了一些相干边的构造条件,实现了积极的生命周期扩充;然后在原Coalesce步骤后增加一个Coalesce2步骤,用于合并基流及其派生流对应的结点,实现其空间共享;其次,在Coalesce2后面增加了一个Relax步骤,在相干图不可化简时,取消某些由于生命周期扩充引入的相干边。在实现SRF Coloring算法的同时,还保持了原算法的简洁和高效。3.结论及未来待解决的问题我们在SF95Compiler编译框架中实现了SRF Coloring算法。从fft等8个测试程序的初步测试结果来看,我们的分配方法确实是一种有效的方法。在这方面还有很多富于挑战的工作要完成。例如,由于寄存器到寄存器的streamcopy操作涉及访存操作,开销很大(而一般的寄存器到寄存器的move操作开销很小),因此我们可以考虑采取一个先积极合并再考虑溢出(但不是任何地方)的算法框架。当前我们的分配方法还没有考虑对长流(例如超过SRF大小的流)的支持。解决长流问题的方法有两个,一个是程序级的strip-mining,另一个是运行时的双缓冲技术。我们将考虑把这两个步骤都纳入我们的框架,从而更有效的管理SRF。SRF的分配结果与流操作在控制流图上的顺序有很大关系,我们还将考虑变换语句的顺序,寻找一种能够得到最优分配方案的方法。4.实用价值或应用前景本文的工作完成了FT64流处理器的一个重要的编译环节,即在编译时对FT6的片上存储器SRF的管理。现有的流编程语言向程序员暴露了存储层次细节,这种编程风格增加了程序员的负担,不利于继承已有代码,因此不易被程序员接受。FT64的解决思路是向程序员隐藏存储层次细节,由编译器来完成片上存储器的管理。随着工艺的进步,片外访存延迟相对处理器速度不断加大,越来越多的处理器采用了大容量片上存储器。本文所提出的方法不仅针对FT64中的SRF,对其它处理器的片上存储器的编译时管理同样也具有指导意义。Abstract: Stream Register File (SRF) is a large on-chip memoryof the stream processor and its efficient management is essential forgood performance. Current stream programming languages expose themanagement of SRF to the programmer, incurring heavy burden onthe programmer and bringing difficulties to inheriting the legacy codes.SF95 is the language developed for FT64 which is the first 64-bitstream processor designed for scientific applications. SF95 concealsSRF from the programmer and leaves the management of SRF to itscompiler. In this paper, we present a compiler approach named SRFColoring to manage SRF automatically. The novelties of this paperare: first, it is the first time to use the graph coloring-basedalgorithm for the SRF management; second, an algorithm framework forSRF Coloring that is well suited to the FT64 architecture is proposed--- this framework is based on a well-understood graph coloring algorithmfor register allocation, together with some modifications to deal withthe unusual aspects of SRF problem; third, the SRF Coloringalgorithm is implemented in SF95Compiler, a compiler designed for FT64and SF95. The experimental results show that our approach represents apractical and promising solution to SRF allocation.