I think I can institute a discipline within Keykos, and perhaps other platforms, where calculations are deterministic. You can detect no noise in a deterministic environment and the environment is thus immune from a rather large interpretation of Spectre bugs. At the same time you can exploit multiprogramming. Sharing varying resources is out. The key example is a primitive (trusted) gadget that waits for two pieces of data X and Y produced by two ‘calculations’ and then passes those values to another calculation to work on. None of the calculations can learn which finished first. This provides a style of deterministic multi programming.

I am not yet convinced that this is practical; many useful MP patterns are ruled out. Many physics applications remain feasible, even convenient. Sisal fits this plan and Sisal was motivated by easing the development of a class of applications that defined super computing; it can’t be all bad.

One pattern that is prohibited is shared memory writable by either calculation. Another is any mutable object that can be invoked by both calculations.

Keykos claims to support all useful patterns supported by the bare hardware. This deterministic MP does not.

For now