I understand that there are 8 Memorycontrollers (at least to my knowledge) and some amount of memory. Right now I assume that the memory is not partitioned into 8 (gigantic) chunks, but several small chunks, which then will eventually be handled by the various controllers. If this is wrong - please tell me. I assume this partitioning due to better load balancing (and it would make much sense).
Otherwise the (remaining) question is: What is the size of such a chunk? Is there a fixed size? If not: In what order is the size of a typical chunk?
I am asking this question since I am getting a weird behavior with an array. If I insert unncessary elements in the array the overall performance is getting better. The only explanation that I have right now is that the inserted padding helps splitting the array between various memory controllers. This is then beneficial when the array is being read by multiple cores (I have 1 thread per core), since more memory controllers can handle the requests.