Methods and systems for efficiently processing direct memory access
requests coherently. An external agent requests data from the memory
system of a computer system at a target address. A snoop cache determines
if the target address is within an address range known to be safe for
external access. If the snoop cache determines that the target address is
safe, it signals the external agent to proceed with the direct memory
access. If the snoop cache does not determine if the target address is
safe, then the snoop cache forwards the request on to the processor.
After the processor resolves any coherency problems between itself and
the memory system, the processor signals the external agent to proceed
with the direct memory access. The snoop cache can determine safe address
ranges from such processor activity. The snoop cache invalidates its safe
address ranges by observing traffic between the processor and the memory
system.