I found physical address space mapping for Arm from DEN0001C_principles_of_arm_memory_maps.pdf:
32-bit, 36-bit and 40-bit ARM Address Maps
Address map in use in ARM development systems today
- 32-bit - - 36-bit - - 40-bit -
1024GB+ + +--------------+ <- 40-bit
| | DRAM |
~ ~ ~ ~
| | |
| | |
| | |
| | |
544GB + + +--------------+
| | Hole or DRAM |
| | |
512GB + + +--------------+
| | Mapped |
| | I/O |
~ ~ ~ ~
| | |
256GB + + +--------------+
| | Reserved |
~ ~ ~ ~
| | |
64GB + +--------------+--------------+ <- 36-bit
| | DRAM |
~ ~ ~ ~
| | |
| | |
34GB + +--------------+--------------+
| | Hole or DRAM |
32GB + +--------------+--------------+
| | Mapped I/O |
~ ~ ~ ~
| | |
16GB + +--------------+--------------+
| | Reserved |
~ ~ ~ ~
4GB +--------------+--------------+--------------+ <- 32-bit
| 2GB of DRAM |
| |
2GB +--------------+--------------+--------------+
| Mapped I/O |
1GB +--------------+--------------+--------------+
| ROM & RAM & I/O |
0GB +--------------+--------------+--------------+ 0
- 32-bit - - 36-bit - - 40-bit -
Figure 1 32-bit, 36-bit and 40-bit Address Map
But I cannot find any mapping of arm64, is there any official doc?
The Arm architecture does not standardize the CPU’s view of the physical address space indeed, DRAM may start at address 0x0, but often it does not. SoC designers can decide their AXI address space layout.
=============================================================
256TB +-----------------+ <- 48-bit
| DRAM |
~ ~
| |
| |
| |
| |
136TB +-----------------+
| Hole or DRAM |
| |
128TB +-----------------+
| Mapped |
| I/O |
~ ~
| |
64TB +-----------------+
| Reserved |
~ ~
| |
16TB +-----------------+ <- 44-bit
~ ~
~ ~
~ ~
0GB +-----------------+ 0
So, the address space below 48bits just follows the layout in the question description.