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.
So why is an index to a register used instead of encoding the memory type directly into the translation table entries? The reason is because the number of bits in the translation table entries is limited. It requires 8 bits to encode the memory type, but only 3 bits to encode the index into
MAIR_ELx. This way the architecture efficiently uses less bits in the table entries.