A coprocessor transfers data between media access controllers and a set of cache
memory without accessing main memory. The coprocessor includes a reception media
access controller that receives data from a network and a transmission media access
controller that transmits data to a network. A streaming output data transfer engine
in the coprocessor transfers data from the reception media access controller to
cache memory. A streaming input data transfer engine in the coprocessor transfers
data from cache memory to the transmission media access controller. The coprocessor's
data transfer engines transfer data between cache memory and the media access controllers
in a single data transfer operation-eliminating the need to store data in an intermediary
memory location between the cache memory and data transfer engines. In one implementation,
the coprocessor is employed in a compute engine that performs different network
services, including but not limited to: 1) virtual private networking; 2) secure
sockets layer processing; 3) web caching; 4) hypertext mark-up language compression;
5) virus checking; 6) firewall support; and 7) web switching.