Out-of-order execution is essential for high performance, general-purpose computation, as it can find and execute useful work instead of stalling. However, it is limited by the requirement of visibly sequential, atomic instruction execution --- in other words in-order instruction commit. While in-order commit has its advantages, such as providing precise interrupts and avoiding complications with the memory consistency model, it requires the core to hold on to resources (reorder buffer entries, load/store queue entries, registers) until they are released in program order. In contrast, out-of-order commit releases resources much earlier, yielding improved performance with fewer traditional hardware resources. However, out-of-order commit is limited in terms of correctness by the conditions described in the work of Bell and Lipasti. In this paper we revisit out-of-order commit from a different perspective, not by proposing another hardware technique, but by examining these conditions one by one and in combination with respect to their potential performance benefit for both non-speculative and speculative out-of-order commit. While correctly handling recovery for all out-of-order commit conditions currently requires complex tracking and expensive checkpointing, this work aims to demonstrate the potential for selective, speculative out-of-order commit using an oracle implementation without speculative rollback costs. We learn that: a) there is significant untapped potential for aggressive variants of out-of-order commit; b) it is important to optimize the commit depth, or the search distance for out-of-order commit, for a balanced design: smaller cores can benefit from shorter depths while larger cores continue to benefit from aggressive parameters; c) the focus on a subset of out-of-order commit conditions could lead to efficient implementations; d) the benefits for out-of-order commit increase with higher memory latency and works well in conjunction with prefetching to continue to improve performance.
[1]
Alexander V. Veidenbaum,et al.
Compiler-assisted, selective out-of-order commit
,
2013,
IEEE Computer Architecture Letters.
[2]
Amir Roth,et al.
BOLT: Energy-efficient Out-of-Order Latency-Tolerant execution
,
2010,
HPCA - 16 2010 The Sixteenth International Symposium on High-Performance Computer Architecture.
[3]
Josep Llosa,et al.
Out-of-order commit processors
,
2004,
10th International Symposium on High Performance Computer Architecture (HPCA'04).
[4]
Mikko H. Lipasti,et al.
Deconstructing commit
,
2004,
IEEE International Symposium on - ISPASS Performance Analysis of Systems and Software, 2004.
[5]
Andrew R. Pleszkun,et al.
Implementing Precise Interrupts in Pipelined Processors
,
1988,
IEEE Trans. Computers.
[6]
S.P. Marti,et al.
A Complexity-Effective Out-of-Order Retirement Microarchitecture
,
2009,
IEEE Transactions on Computers.
[7]
Gurindar S. Sohi,et al.
Instruction issue logic for high-performance, interruptable pipelined processors
,
1987,
ISCA '98.
[8]
Hui Zeng,et al.
A group-commit mechanism for ROB-based processors implementing the X86 ISA
,
2013,
2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA).
[9]
Margaret Martonosi,et al.
DeSC: Decoupled supply-compute communication management for heterogeneous architectures
,
2015,
2015 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).
[10]
Michael C. Huang,et al.
Cherry: checkpointed early resource recycling in out-of-order microprocessors
,
2002,
MICRO.
[11]
Mateo Valero,et al.
Toward kilo-instruction processors
,
2004,
TACO.
[12]
Somayeh Sardashti,et al.
The gem5 simulator
,
2011,
CARN.
[13]
Onur Mutlu,et al.
Tiered-latency DRAM: A low latency and low cost DRAM architecture
,
2013,
2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA).