Parallelizing compiler can parallelize regular applications because data dependence information is available at compile time. Dependence information of irregular applications is only available at run-time. Run-time parallelization is a way to speedup irregular applications.

Speculative execution technique can be used to do run-time parallelization. Software speculative execution need additional information about data dependence and do analysis after the execution finish. It introduces large parallelization overhead because of additional information arrays, operations on additional arrays, and dependence analysis.

Cache coherence protocol can provide shared data information. With some extension, we can let coherence protocol also handle date dependence information. With hardware support and extended coherence protocol, run-time parallelization can be done efficiently, and most overhead of software method can be removed.

Hardware support for run-time parallelization provide same functions as software method and with fast failure detection. It consumes less memory than software, does not need insert new additional instructions in applications, and naturally embed in coherence protocol.

NEXT