论文部分内容阅读
计算机体系结构发展至今,多核处理器已经得到广泛应用,而且单个芯片内的核心数量还在快速增长。但与此同时,客户端系统(桌面系统和移动系统)一般应用程序的并行度却基本保持不变,近十年来没有增长。这就使得多核处理器的计算资源不能得到充分利用。本文的研究目标就是更好地解决这一矛盾。 投机多线程(SpMT)是一种自动并行化的技术,又称为线程级投机(TLS)。SpMT可以自动发掘程序中的线程级并行性(TLP),通过编译器或处理器硬件的支持将单个线程拆分为多个轻量级线程。本文首先提出一种基于代码块乱序执行的SpMT模型(称为BOOOST),并以代码块重排序缓存(Meta-RB)的方式实现了一个动态的代码块乱序执行框架。总体而言,跟现有SpMT模型相比,本文的模型可以达到更高的理论加速比。实验模拟显示,SPEC2006程序有的可以获得16核13倍、64核44倍的理论加速比,明显超过Multiscalar等现有的SpMT架构。 在研究中发现,SpMT的线程间数据依赖关系对整体性能影响很大,为了提高并行执行的效率,本文的研究重点就集中于优化线程间的数据通信。SpMT线程间的数据依赖分为寄存器读写依赖和内存读写依赖。本文针对SpMT线程间寄存器读写依赖和内存读写依赖,分别设计了一些解决方案。 寄存器的读写可以离线分析,因为寄存器编号是直接编码在指令中的。于是我们提出一种针对寄存器访问的“读写无冲突”的代码块调度策略(Conflict-FreeScheduling,即CFS),从而降低线程间读写依赖造成的开销,并设计了全局寄存器重命名表(Global Register Renaming Table,即GRRT)实现核间寄存器数据同步。研究表明,CFS一般可以提升20%左右的性能。为了降低核间数据同步,我们还提出了一种基于寄存器数据亲和性的代码块调度策略。实验证明这种调度策略可以降低5%~28%左右的核间数据同步,大约可以折算为0.7%~3.7%的整体性能提升。 内存读写地址一般只有在运行时才能确定,所以无法离线分析。我们提出一种支持投机读写的核间共享写缓存(Shared Write Buffer,即SWB)来解决内存数据读写依赖。实验证明,跟一般Cache架构相比,引入SWB可以减少20%左右的CacheSnooping开销,减少7%左右的访问延迟;我们还研究了多核处理器的cache组织方式,提出簇状层次型cache结构以优化核间数据同步效率。研究表明簇状层次型cache组织则比一般的平铺组织方式能降低几个数量级的核间通讯延迟。