1. Fully associative caches
Fully associative caches, as illustrated in Fig. 3, allow any address to be stored in any line in the cache. When a memory operation is sent to the cache, the address of the request must be compared to each entry in the tag array to determine whether the data referenced by the operation is contained in the cache. Note that fully associative caches are generally still implemented with separate tag and data arrays. The diagram attaches the tag entry and data line to make it clearer which line is associated with each tag.