Enabling branch-mispredict level parallelism by selectively flushing instructions

5Citations
Citations of this article
18Readers
Mendeley users who have this article in their library.
Get full text

Abstract

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. We propose a hardware-software cooperative mechanism to recover correctly executed instructions, avoiding the need to refetch and re-execute them. It combines relatively limited additions to the core architecture with a high reuse of reconverged instructions. Adding the software hints to enable our mechanism is a similar effort as parallelizing an application, which is already necessary to extract high performance from current multicore processors. We evaluate the technique on emerging graph applications and sorting, applications that are known to perform poorly on conventional CPUs, and report an average 29% increase in performance.

Cite

CITATION STYLE

APA

Eyerman, S., Heirman, W., Van Den Steen, S., & Hur, I. (2021). Enabling branch-mispredict level parallelism by selectively flushing instructions. In Proceedings of the Annual International Symposium on Microarchitecture, MICRO (pp. 767–778). IEEE Computer Society. https://doi.org/10.1145/3466752.3480045

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free