  The disclosure of the Spectre speculative-execution attacks in January 2018
has left a severe vulnerability that systems are still struggling with how to
patch. The solutions that currently exist tend to have incomplete coverage,
perform badly, or have highly undesirable edge cases that cause application
domains to break.
  MuonTrap allows processors to continue to speculate, avoiding significant
reductions in performance, without impacting security. We instead prevent the
propagation of any state based on speculative execution, by placing the results
of speculative cache accesses into a small, fast L0 filter cache, that is
non-inclusive, non-exclusive with the rest of the cache hierarchy. This
isolates all parts of the system that can't be quickly cleared on any change in
threat domain.
  MuonTrap uses these speculative filter caches, which are cleared on context
and protection-domain switches, along with a series of extensions to the cache
coherence protocol and prefetcher. This renders systems immune to cross-domain
information leakage via Spectre and a host of similar attacks based on
speculative execution, with low performance impact and few changes to the CPU
design.
