SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
In the case of 512 MiB interleaved at 128-byte boundaries and 256 MiB noninterleaved on the second memory controller, one address space per memory controller, we have the following results (see Table 15-21).
Address Range | Memory Controller | Memory Controller Address Space(1) | Memory Controller Address Range |
---|---|---|---|
0x8000_0000 to 0x9FFF_FFFF | EMIF1 and EMIF2, interleaved at 128-byte boundaries | 0x0 on both controllers | 0x0000_0000 to 0x0FFF_FFFF on both controllers |
0xA000_0000 to 0xAFFF_FFFF | EMIF2 only | 0x0 | 0x1000_0000 to 0x1FFF_FFFF |
Two sections are used to map such a configuration (see Table 15-22).
Bit Field | Section 0 (DMM_LISA_MAP_0) | Section 1 (DMM_LISA_MAP_1) |
---|---|---|
[31:24] SYS_ADDR | 0x80 | 0xA0 |
[22:20] SYS_SIZE | 0x5 | 0x4 |
[19:18] SDRC_INTL | 0x1 | 0x0 (not applicable) |
[17:16] SDRC_ADDRSPC | 0x0 | 0x0 |
[9:8] SDRC_MAP | 0x3 | 0x2 |
[7:0] SDRC_ADDR | 0x00 | 0x10 |
Detecting a section hit is the same for the interleaved case as for the single controller case: To check whether an address hits a section, use the 8 upper address bits of the address and mask them with the hit mask: 28–2SYS_SIZE. If the result is equal to SYS_ADDR, the section is hit.
The physical address generation is modified for the interleaved case. In case of 256-byte interleaving, the first chunk of 256 bytes is mapped to the first controller, the second chunk to the second controller, and so on. This results in system address bit 8 to be decoded as the controller indicator, 0 for the first controller, and 1 for the second controller (system address bit 7 is used for interleaving at the 128-byte boundary, and bit 9 for 512 bytes). This bit is not included in the computed physical address, meaning the upper system address bits [31:9] are shifted to bits [30:8] when generating the physical address.
The rest of the address generation is handled the same as for the single controller case: to define the physical address to be issued to the memory controller, use the 8 upper address bits of the system address, mask them with the address mask: 2SYS_SIZE–1, and OR them with SDRC_ADDR. This gives the resulting 8 upper physical address bits. All lower address bits are forwarded unchanged.
Request to address 0x99AE_37F0:
This request is forwarded to address 0x0CD7_1BF0, address space 0, of the second memory controller.