Maybe some future architecture will allow software to tell CPU which regions it considers to be secret from the point of view of each other region. Something like that could allow the CPU to speculate agressively while preventing information leak exploits.
The CPU hardware already has that feature. It is the VM paging system and the permissions assigned thereto. The bug here is that the CPU is not aborting the speculation when fetches occur to addresses marked as "access denied". Instead the fetch happens and a line of normally inaccessible memory is put into cache by code that should not be able to get it read into the cache normally. One hardware fix would be to plug…
Also maybe the context switching would need to be made faster, because you would need to do that whenever eg javascript calls browser interfaces.