A mechanism receives memory reads and writes from a packet processing
engine, each memory access having an associated packet identifier or
sequence number. The mechanism is placed between a processing engine and
a memory system such that write data is buffered and information based
upon reads and writes is recorded. Memory read data is returned
speculatively since the packet processing engine is processing packets in
parallel and not necessarily in sequence. Information is maintained
allowing the detection of a speculative read that was incorrect (i.e. a
memory conflict). When a memory conflict is detected, a restart signal is
generated and the information for the associated packet identifier or
sequence number is flushed.