Enabling Branch-Mispredict Level Parallelism by Selectively Flushing Instructions
Stijn Eyerman, Wim Heirman, Sam Van den Steen, Ibrahim Hur · 2021
Conventionally, branch mispredictions are resolved by flushing wrongly speculated instructions from the reorder buffer and refetching instructions along the correct path. However, a large part of the misspeculated instructions could have reconverged with the correct path and executed correctly. Yet, they are flushed to ensure in-order commit. This inefficiency has been recognized in prior work, which proposes either complex additions to a core to reuse the correctly executed instructions, or less intrusive solutions that only reuse part of the converged instructions.