A network services processor receives, stores, and modifies incoming
packets and transmits them to their intended destination. The network
services processor stores packets as buffers in main and cache memory for
manipulation and retrieval. A memory subsystem stores packets as linked
lists of buffers. Each bank of memory includes a separate memory
management controller for controlling accesses to the memory bank. The
memory management controllers, a cache management unit, and free list
manager shift the scheduling of read and write operations to maximize
overall system throughput. For each packet, packet context registers are
assigned, including a packet handle that points to the location in memory
of the packet buffer. The contents of individual packets can be accessed
through the use of encapsulation pointer registers that are directed
towards particular offsets within a packet, such as the beginning of
different protocol layers within the packet.