With all the news about these attacks lately, this is one of the best posts I've seen in explaining to less knowledgable people how exactly speculation causes a problem. One question I still have that gets glossed over is how timing of instructions is captured.
Recently a shared-memory extension has been proposed. one javascript thread just increments a counter in the shared memory, functioning as a clock for the other thread.
In both cases, (Spectre) attacks can be prevented by browser updates, so any performance impact is not system wide.
This is different from Meltdown, which (only?) affects intel. That one requires kernel changes which cause system-wide performance degradation.