Many newer multi-core servers from Intel and AMD come with multiple DRAM memory controllers on each socket. (Compared to desktops/laptops with one dual-channel controller.)
When an OS (say Linux) needs memory to service an application's request, how is one DRAM controller chosen to service the request? I see three possibilities:
- Linux chooses it using some algorithm.
- The hardware is wired in such a way that a particular core will use a particular memory controller.
- There is a third component that makes this decision.
I haven't found any definitive answer.