1. An apparatus, comprising: a processor core configured to execute a non-blocking flush instruction in response to migration of a program from a first computing device to a second computing device; proactive flush logic configured to perform a proactive flush operation to flush data from a first memory in the first computing device to a second memory external to the first computing device in response to the execution of the non-blocking flush instruction; and reactive flush logic coupled with the first memory and the second memory and configured to, in response to a memory request issued prior to completion of the proactive flush operation: interrupt the proactive flush operation, and perform a reactive flush operation to flush requested data identified by the memory request from the first memory to the second memory.