1. A method for data transfer in a multi-core processor device, the method comprising: receiving, by a first core of the multi-core processor device, a request for a data block, wherein the data block is stored in a private cache of the first core, and wherein receiving the request for the data block includes receiving a first request from a second core of the multi-core processor device; evaluating the data block stored in the private cache to determine whether the stored data block is in a ready state; receiving, from the second core, a second request for the data block; incrementing a counter associated with the data block after the data block is determined to be in an unavailable state; identifying a dynamic program slice associated with the data block in response to the determination that the stored data block is in the unavailable state, wherein the dynamic program slice is identified during an execution of a program that includes the dynamic program slice; executing the identified dynamic program slice by the first core effective to update the stored data block from the unavailable state to the ready state; determining whether the stored data block is in the ready state after the execution of the identified dynamic program slice; sending the data block to an interconnect network after the stored data block is determined to be in the ready state; and processing the second request after the data block is determined to be in the ready state.