High-Performance Packet Processing Engines Using Set-Associative Memory Architectures