1. A method, comprising: searching a first directory located within a first processor to determine if a first cache memory associated with the first processor contains data necessary to perform an instruction executed by the first processor, wherein the first directory comprises an index of the data stored in the first cache memory; searching a second directory located within the first processor to determine if a second cache memory associated with a second processor contains the necessary data, wherein the second directory comprises an index of the data stored in the second cache memory; upon determining that the data is located in the second cache memory, transmitting a request from the first processor to the second processor to retrieve the data from the second cache memory; and upon determining that the data is not located in the first and second cache memories, transmitting a request to a different memory associated with the first processor to retrieve the data.