In some embodiments, on a periodic basis, the network-attached memory may request a secondary copy of every memory page. On planned or unplanned shutdown, if there is sufficient time, the network-attached memory may request exclusive ownership of all pages, after guest virtual processors are stopped.
In this way, the network-attached memory always contains a sufficiently recent copy to preserve the semantics of strong coherency.
Description of State Transitions and Cache Coherency Protocol
As described above, the network-attached memory (“NAM”) may be another node in a TidalScale Pod (centralized node or distributed across other nodes in the pod), with the exception that no virtual processors (also referred to herein as “vcpu's”) can be started on it, and to which no vcpu's can ever migrate.
In this example, the NAM is transactional in nature, given that no vcpu's are present on the NAM. There is no requirement or need to keep the contents of the NAM up to date in real time, except, in some embodiments, for well-defined synchronization points defined by the execution of the guest software (e.g., “I need this page in order to progress the computation and until I get it I cannot progress the computation”). Thus, reads and writes to the NAM can be performed in a “l(fā)azy” manner. As long as requests for pages and requests to update pages are satisfied, in order, consistent von Neumann semantics can be maintained or preserved, without having to perform then in real-time. It may also be the case that some processor families have additional constraints that must be satisfied, for example, Intel's “memory storage order” constraints.