A lookup engine having a lookup table data structure, usually an array or associative array, is often used to replace a runtime computation with an array indexing operation. A lookup table typically matches an input request against a list of a plurality of entries in the array, each entry associated with a “key”. A given key might match one or more entries in the look up table. The lookup engine might typically process requests to access the lookup table by receiving a key, searching the lookup table, and returning either a miss (the key is not in the table) or a hit (the key is in the table) along with the index of the table entry that hit and possibly some associated data. A content-addressable memory (CAM) (either binary or ternary) is an example of such a lookup engine. A CAM might often be employed, for example, in network routers to determine a route corresponding to a received data packet by looking up a destination network address in a network routing table stored in the CAM.
Increased performance of a lookup engine might be achieved by allowing multiple lookup requests to be “in-flight” or pending at a time. However, when multiple lookup requests are pending at a time, maintaining coherency between the pending lookup requests could introduce significant processing delays, erroneous duplicate keys, or erroneous misses being returned.