A method of maintaining address translation data within an address translation cache having a plurality of entries, each entry to store address translation data used when converting a virtual address into a corresponding physical address of a memory system, the method comprising:
- performing an allocation process to determine the address translation data to be stored in each entry;
- storing within the address translation cache address translation data of a plurality of different types representing address translation data specified at respective different levels of address translation within a multiple-level page table walk, said plurality of different types comprises a final level type of address translation data that identifies a full translation from the virtual address to the physical address, and at least one intermediate level type of address translation data that identifies a partial translation of the virtual address;
- and
- when performing the allocation process, applying an allocation policy that permits each of the entries to be used for any of said plurality of different types of address translation data, and storing type identification data in association with each entry to enable the type of the address translation data stored therein to be determined;
- wherein each entry has virtual address data associated therewith, and the method further comprises:
- performing, in response to a received virtual address, a lookup process to determine with reference to the virtual address data of at least a subset of the entries whether a hit condition is detected;
- and
- selecting, in the presence of the hit condition being detected for multiple entries, one of the multiple entries whose address translation data represents a most complete address translation for the received virtual address.