Transactional WaveCache: Towards Speculative and Out-of-Order DataFlow Execution of Memory Operations - Marzulo, Leandro A. J.; Franca, Felipe M. G.; Costa, Vítor Santos (Anais do International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD); 2008: Anais do XX International Symposium on Computer Architecture and High Performance Computing, 2008)
The WaveScalar is the first dataflow architecture that can efficiently provide the sequential memory semantics required by imperative languages. This work presents a speculative memory disambiguation mechanism for this architecture, the transaction WaveCache. Our mechanism maintains the execution order of memory operations within blocks of code, called waves, but adds the ability to speculatively execute, out-of-order, operations from different waves. This mechanism is inspired by progress in supporting transactional memories. Waves are considered as atomic regions and executed as nested transactions. Wave that have finished the execution of all their memory operations are committed, as soon as the previous waves are also committed. If a hazard is detected in a speculative wave, all the following waves (children) are aborted and re-executed. We evaluated the transactional WaveCache on a set of benchmarks from Spec 2000, Mediabench and Mibench (telecomm). Speedups ranging from 1.31 to 2.24 (related to the original WaveScalar) where observed when the benchmark doesn't perform lots of emulated function calls or access memory very often. Low speedups of 1.1 to slowdowns of 0.96 were observed when the opposite happens or when the memory concurrency was high.