I want to do allocations on a specific
But based on DRAMDig Paper [1] and page 20 of Datasheet, volume 1 (M- and H-processor lines) (i.e., my processor chipset family), my
1) Is it possible to set the channel interleaving bit at a higher order index so as to make
2) Otherwise, is it possible to disable channel interleaving purely in software?
3) Otherwise, is placing both DIMMs in the same-channel slots the only remaining approach? This is equivalent to the following statement: channel interleaving does not allow single rank allocations.
Any help, suggestions and guesses are appreciated. I am stuck and the documentations are rather vague.
----------
[1] Table 2 on page 5 shows mapping functions (from physical addresses to DRAM components). In all dual-channel configurations, a low-order bit (a bit in the range
DRAM
rank. The smallest allocation unit in an OS such as Linux
is at the page size granularity, which is typically 4KB. So I need to be able to place at least a complete page in a DRAM
rank.But based on DRAMDig Paper [1] and page 20 of Datasheet, volume 1 (M- and H-processor lines) (i.e., my processor chipset family), my
Haswell
processor uses channel interleaving when DIMMs are placed in slots belonging to different channels (my system has two DIMM, a 4GB
and a 8GB
). In other words, successive 64-byte
(which is, unfortunately, less than 4KB
) allocations are mapped to different channels and, consequently, different ranks (e.g., physical address 0
is mapped to rank 0 of DIMM 0 which is located at channel 0, while physical address 64
is mapped to rank 0 of DIMM1 which is located at channel 1), for performance reasons. My questions are:1) Is it possible to set the channel interleaving bit at a higher order index so as to make
4KB
single-rank allocations possible?2) Otherwise, is it possible to disable channel interleaving purely in software?
3) Otherwise, is placing both DIMMs in the same-channel slots the only remaining approach? This is equivalent to the following statement: channel interleaving does not allow single rank allocations.
Any help, suggestions and guesses are appreciated. I am stuck and the documentations are rather vague.
----------
[1] Table 2 on page 5 shows mapping functions (from physical addresses to DRAM components). In all dual-channel configurations, a low-order bit (a bit in the range
[6-8]
) is used as the channel interleave bit while it should be at least bit 12 to make 4KB
single-rank allocations possible.