论文部分内容阅读
二进制翻译技术能够在没有源代码的情况下,把源机器的二进制程序移植到目标机器上运行,不仅能够有效解决软硬件兼容问题,在信息安全领域也有重要应用,还对自主设计国产处理器和计算机系统具有重大意义。然而,传统的二进制翻译技术研究仅仅局限于单核架构处理器,随着众核处理器在市场上的需求与占有量越来越大,新型架构计算机系统使二进制翻译领域面临新的挑战。在深入剖析CUDA异构并行计算架构特点的基础上,本文对异构并行架构处理器之间的二进制翻译技术展开研究,提出了针对异构并行架构的二进制翻译框架和线程映射、存储器映射及强制同步算法等技术与算法。本文的主要工作和创新点有:1)针对传统的二进制翻译框架无法适应新型体系架构的需求,提出了CUDA程序的静态二进制翻译框架,实现了面向众核处理器的二进制翻译系统。翻译框架采用分而治之的思想,分别调用不同的翻译器将CUDA程序的CPU代码和GPU代码翻译到目标平台的主核和从核阵列上,然后对GPU程序的二进制翻译关键技术展开研究,设计实现了NVIDIA GPU到某国产众核处理器的二进制翻译原型系统GPUtoM(GPU to Many-core)。2)针对众核处理器之间并行粒度、线程层次的巨大差异,提出众核处理器之间层次化的线程映射模型。该模型首先将GPU程序的Kernel函数映射到目标平台从核阵列的各个从核上,然后从核线程依次循环执行CTA中的细粒度GPU线程。3)针对CTA允许内部线程进行栅栏同步的问题,提出了一种基于线程循环结构的强制同步算法。该算法在不改变CTA栅栏同步语义的基础上,首先删除PTX代码中的同步指令,然后以同步点为界将PTX程序分割为两个子程序段,并保护各线程执行环境,最后将各子程序置于线程循环结构中执行。4)针对众核处理器存储器结构复杂,特殊存储器丰富,不同系统之间存储器层次差异巨大的问题,从生成代码的正确性和高效性出发,提出多层次存储器的映射模型,并完成了NVIDIAGPU到某国产处理器的存储器映射。本文在提出GPU程序二进制翻译过程中的若干关键技术之后,阐述了GPU程序二进制翻译原型系统GPUtoM的设计与实现过程,最后采用Test-gpu、CUDA SDK和Parboil等测试集对GPUtoM及相关技术进行测试,测试结果验证了本文提出的技术与方法的正确性和有效性。