1. A method of maintaining coherency of data accessed by a remote device, comprising: maintaining, on the remote device, a remote cache directory indicative of memory locations residing in a cache on a processor which shares access to some portion of a memory device; routing a first memory request issued at the remote device to the memory device without sending snoop requests to the processor if information contained in the remote cache directory indicates a valid copy of data targeted by the request does not reside in the processor cache; routing a second memory request to the memory device when the remote cache directory indicates that a memory location targeted by the second memory request is cached in an L2 cache in a shared coherency state; and sending a bus command to the processor if information contained in the remote cache directory indicates a valid copy of data targeted by the first memory request resides in the processor cache.