1. A method for detecting and resolving virtual memory address synonyms in a multi-level cache hierarchy, the multi-level cache hierarchy comprising a first-level cache and a second-level cache wherein the first-level cache comprises a plurality of virtually indexed first-level cache lines each configured to store a physical memory address tag and state information, the method comprising: maintaining a plurality of Dtags in the second-level cache, wherein each first-level cache line has an associated Dtag, and each Dtag includes state information for the first-level cache line and a copy of the physical memory address tag for the first-level cache line; first searching the first-level cache for a targeted physical memory address tag at an original first-level cache line, wherein the targeted physical memory address tag and original first-level cache line correspond to a requested virtual memory address; upon the first searching resulting in a miss, second searching the Dtags in the second-level cache to locate a synonym first-level cache line corresponding to the requested virtual memory address; and upon the second searching resulting in a hit, copying contents of the synonym first-level cache line to the original first-level cache line; invalidating the synonym first-level cache line; and updating the Dtags associated with the synonym first-level cache line and the original first-level cache line to reflect the copying and the invalidating.