Each processor (101, 102, 103) in a multiple processor system (100)
includes a contingent response unit (121, 122, 123). Each contingent
response unit (121, 122, 123) includes a pending operation unit (200) for
identifying each pending address bus operation from the respective
processor which specifies an address matching a snoop address from another
processor. A snoop pipeline is associated with the pending operation unit
(200) and includes a plurality of pipeline stages (206). Each snoop
pipeline stage (206) has a contingent response flag location (207) and an
identifier location (208). When a pending operation from the processor
specifies an address which is matched by a younger operation from another
processor, a contingent response flag control arrangement uses information
from the pending operation unit (200) to set a contingent response flag in
a first snoop pipeline stage (206). The contingent response flag control
also stores in the first snoop pipeline stage (206) an identifier for the
matched pending operation. If the matched pending operation finishes the
address bus pipeline unsuccessfully and is itself retried, the contingent
response flag control arrangement clears the contingent response flag in
the snoop pipeline stage (206) in which the flag then resides. Otherwise
the contingent response flag is used to provide a snoop response to the
younger operation which matched the pending operation.