Looks at more recent microarchitectural optimizations to see whether any are as bad as speculative execution. Spoiler alert: yes.
The optimizations they look at are
- computation simplification
- pipeline compression
- silent stores
- computation reuse
- value prediction
- register-file compression
- data memory-dependent prefetches
Implementing some of these in gem5 lets them show that these can leak data at a high rate.
An interesting thing in this paper is the terminology “transmitter” for instructions that leak, “amplifiers” for instructions that make a uarch difference more obvious, and “receivers” for instructions that can observe the difference.