Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

My office computer has 8 cores. I recently upgraded the system from 4Gb of RAM (in two modules) to 24Gb of RAM (in six modules) and noticed a considerable increase in performance when multiple cores are active. In particular when all (or near all) cores are active and running programs that demand more than what each core's cache (8Mb) provides.

The old and new RAM have the same speed (FSB 1333MHz). So I suspect that's not what's going on.

Is it possible that (some?) PC architectures allow cores to simultaneously access the system RAM if the memory they're using is sufficiently "far apart"? I'm not sure what "far apart" might mean but perhaps there is way for one core to read/write to card 1 (or chip 3 on card 1) while another core could simultaneously read/write on card 2 (or chip 1 on card 1)? Are PC architectures (and perhaps operating systems) this smart?

share|improve this question
add comment

2 Answers

up vote 2 down vote accepted

Assuming that the motherboard supports triple-channel operation, then the performance increase is, at least partly, due to moving from dual-channel to triple-channel.

share|improve this answer
    
Thanks. Is there an easy way in Linux to check to see whether or not the DDR3 spec is active in a given computer? Your explanation sounds plausible. "sudo lshw -c memory" doesn't appear to have that kind of information. –  Ryan Budney Sep 5 '10 at 21:47
    
@Ryan One way to find out would be look up the spec for the motherboard. If the motherboard supports triple-channel, then it is probably active because you have filled all six memory slots (assuming there are six in total). The BIOS might also be able to confirm that triple-channel is enabled. –  sblair Sep 6 '10 at 10:03
    
Ah, okay, that confirms it. The 6 memory cards are identical and support DDR3, and the motherboard does, too. –  Ryan Budney Sep 7 '10 at 21:53
add comment

Well there is NUMA. When it is used, every core gets a piece of RAM assigned to it. This way exactly what you described happens. One processor will work with RAM assigned to it and another will work with different part of RAM. Some motherboards will not even detect RAM unless there are enough CPUs present to use it all. I don't know if this is the case with computer mentioned here, but if it's workstation level computer, than it is possible.

Another option is memory interleaving. Some computers can access memory faster if memory is "spread apart". The principle is that while one module is executing writing operation, another module can accept commands, so there is no need to wait for writing operation to finish in one module before starting in in another module.

So imagine an array of numbers. Each number represents a memory location. Let's say that in this example oversimplified each location is one byte in size. So if processor needs to write 4 bytes, it will write data to first 4 memory locations. Normally the wold be on same memory module and probably on same memory chip. Computer would need to wait for each writing operation to complete before sending next datum into memory. If interleaving is used, addressed are differently mapped. If we have computer with 4 memory slots, address 1 will be on first slot, 2 on second, 3 on third and 4 on fourth. This way when processor needs to write 4 bytes, it would send them to first 4 memory addresses, but because they are on different modules, it does not need to wait for each write operation to complete. Instead it will send datum to first location and then to second and so on. This way by the time first write operation is over, other 3 are nearing their ends, so data can be written faster into memory.

share|improve this answer
    
Ah, okay, so NUMA is what I was talking about. And from the links on the Wikipedia page you supply, it sounds like Intel i7 (my office computer) implements some NUMA-type protocols. –  Ryan Budney Sep 5 '10 at 21:54
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.