A technique for managing a cache memory coupled to an intermediate node's
processor. Packets acquired by the intermediate node that are destined
for processing by the processor are tracked, without the processor's
intervention, to determine if the processor is lagging in processing the
acquired packets. If so, data associated with unprocessed packets are
pre-fetched from an external memory and placed in the cache memory
without the processor's intervention. Moreover, packets destined for
processing by the processor and placed into the cache memory are tracked,
without the processor's intervention, to determine if the processor has,
in fact, completed the processing of those packets. If so, data contained
in the cache memory that is associated with the processed packets are
invalidated, again without the processor's intervention.