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; and routing a 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.