Describing the memory type
The memory type is not directly encoded into the translation table entry. Instead, the Index field in the translation table entry is used to select an entry from the
MAIR_ELx (Memory Attribute Indirection Register).
The selected field determines the memory type and cacheability information.
Why is an index to a register used, instead of encoding the memory type directly into the translation table entries? Because the number of bits in the translation table entries is limited. It requires eight bits to encode the memory type, but only three bits to encode the index into
MAIR_ELx. This allows the architecture to efficiently use fewer bits in the table entries.