A computer system comprising a CPU, a cache, a cache controller, a system memory, a system memory controller, a direct memory access (DMA) controller, a bus interface unit, a first bus linking said CPU, cache controller and system memory controller, a second bus linking said system memory controller, DMA controller and bus interface unit, and a third bus connected to said bus interface unit for linking said system to I/O devices including devices containing addressable memory locations that are directly cacheable in said cache;
- said third bus supporting transfers of data directly between pairs of said I/O devices attached thereto, in which one device of the respective pair of devices operates as an alternate master of said third bus to control the respective data transfer in a manner that is effectively invisible to said first and second buses and said CPU, cache controller and system memory controller;
- said bus interface unit comprising:
- snooping logic operating invisibly to said system memory controller for monitoring said third bus to detect when data is being written by one I/O device to a directly cacheable memory location contained in another I/O device;
- and
- means responsive to detection by said snooping logic that data is being written by said one I/O device to a directly cacheable memory location in said another I/O device, for presenting a cache invalidation signal to said system memory controller on said second bus;
- said cache invalidation signal including address information indicating the address of a respective directly cacheable memory location in said another I/O device to which data is being written;
- said cache invalidation signal being conveyed to said system memory controller via said second bus and passed along to said cache controller via said first bus, to enable said cache controller to determine if said cache contains data derived from the directly cacheable memory location to which data is being written, and in that event to invalidate the cache location containing said derived data;
- said second bus being potentially inaccessible to said means for presenting said cache invalidation signal when data is written to said another I/O device;
- and said means for presenting said cache invalidation signal including at least one buffer register for storing address information to be included in said cache invalidation signal when said means for presenting is ready to present a respective cache invalidation signal but said second bus is inaccessible to receive said respective cache invalidation signal.