Associative memories are different from conventional memory systems in that they do not require explicit addresses to the information the authors are interested in. They store paired patterns. When an associative memory is given an input pattern as the probe, the content of the input itself addresses the paired output pattern directly. The parallel nature of the associative memory and its ability to perform pattern queries efficiently makes it suitable in a variety of application domains. For instance, in communication networks, routers need to determine quickly the destination port of an incoming data frame based on IP addresses.