Compiler-Driven Software Speculation for Thread-Level Parallelism

Compiler-Driven Software Speculation for Thread-Level Parallelism
复制标题

编译器驱动的软件推测线程级并行性

DOI:
--
复制
发表时间:
2015
影响因子:
1.3
通讯作者:
M. Luján
M. Luján
中科院分区:
计算机科学2区
文献类型:
--
作者:
Paraskevas Yiapanis;Gavin Brown;M. Luján

文献摘要

参考文献

被引文献

相似文献

当前的并行编译器可以处理对数组或仿射索引执行常规访问模式的应用程序,其中数据依赖性可以以线性形式表示。不幸的是,在某些情况下,无法保证代码语句之间的独立性,因此编译器会保守地生成顺序代码。涉及大量指针使用、不规则访问模式以及迭代次数未知的循环的程序就是此类情况的示例。在运行时很少或从不触发依赖项的情况下,这限制了并行性的提取。推测并行是指在程序执行期间采用的方法,旨在为不受静态并行化影响的程序生成有效的并行执行调度。本文的目的是回顾编译器驱动的线程级并行软件推测领域的最新进展以及它们是如何产生的。文章分为两部分。在第一部分中,解释了线程级并行的推测并行化的基础知识以及用于实现此类系统的设计选择分类。设计选择包括处理推测数据的方式、如何检测和解决数据依赖性违规、如何使正确的数据对其他线程可见,或者如何调度推测线程。第二部分围绕这些设计选择构建,提供文献中的进展和趋势,并参考该领域的关键发展。尽管本文的重点是软件推测并行化,但其中有一个部分专门为感兴趣的读者提供探索类似主题(例如硬件线程级推测、事务内存和自动并行化)的指导和参考。
Current parallelizing compilers can tackle applications exercising regular access patterns on arrays or affine indices, where data dependencies can be expressed in a linear form. Unfortunately, there are cases that independence between statements of code cannot be guaranteed and thus the compiler conservatively produces sequential code. Programs that involve extensive pointer use, irregular access patterns, and loops with unknown number of iterations are examples of such cases. This limits the extraction of parallelism in cases where dependencies are rarely or never triggered at runtime. Speculative parallelism refers to methods employed during program execution that aim to produce a valid parallel execution schedule for programs immune to static parallelization. The motivation for this article is to review recent developments in the area of compiler-driven software speculation for thread-level parallelism and how they came about. The article is divided into two parts. In the first part the fundamentals of speculative parallelization for thread-level parallelism are explained along with a design choice categorization for implementing such systems. Design choices include the ways speculative data is handled, how data dependence violations are detected and resolved, how the correct data are made visible to other threads, or how speculative threads are scheduled. The second part is structured around those design choices providing the advances and trends in the literature with reference to key developments in the area. Although the focus of the article is in software speculative parallelization, a section is dedicated for providing the interested reader with pointers and references for exploring similar topics such as hardware thread-level speculation, transactional memory, and automatic parallelization.
DOI: 10.1109/iiswc.2010.5649169
发表时间: 2010
期刊: --
影响因子: --
作者:
Ioannou N
通讯作者: Ioannou N