Overview What is a memory model, and why is it needed? Describing memory in AArch64 Memory access ordering Memory Types Normal memory Device memory Describing the memory type Cacheability and shareability attributes Permissions attributes Access Flag Alignment and endianness Memory aliasing and mismatched memory types Combining Stage 1 and Stage 2 attributes Check your knowledge Related information Next steps
Overview
This guide introduces the memory model in Armv8-A. It begins by explaining where attributes that describe memory come from and how they are assigned to regions of memory. Then it introduces the different attributes that are available and explains the basics of memory ordering.
This information is useful for anyone developing low level code, like boot code or drivers. It is particularly relevant to anyone writing code to setup or manage the Memory Management Unit (MMU).
At the end of this guide, you can check your knowledge. You will have learned about the different memory types and their key differences. You will be able to describe the memory ordering rules for Normal and Device memory types. And you will also be able to list the memory attributes that can be applied to a given address.