CPC G06F 12/0815 (2013.01) [G06F 12/0804 (2013.01); G06F 12/0891 (2013.01); G06F 12/10 (2013.01); G06F 2212/1032 (2013.01); G06F 2212/657 (2013.01)] | 28 Claims |
1. A method performed in a processor for virtual cache coherency, comprising:
receiving a snoop for a physical address from a coherent processing device, wherein the snoop is associated with a type of snoop;
receiving the physical address and a portion of a corresponding virtual address from a system memory management unit (SMMU);
determining whether an entry for the physical address corresponding to the virtual address in a virtual cache exists in a snoop filter;
determining a type of cache coherency operation based on the type of snoop;
sending a cache coherency operation of the type of cache coherency operation to the virtual cache bypassing the SMMU in response to determining that the entry exists in the snoop filter;
updating a counter of the entry configured to track a number of lines in the virtual cache having a location including the portion of the corresponding virtual address;
determining whether the counter indicates that the there are no lines in the cache for the entry having a location including the portion of the corresponding virtual address; and
removing the entry from the snoop filter in response to determining that the counter indicates that the there are no lines in the cache for the entry having a location including the portion of the corresponding virtual address.
|