Is there a way to programmatically/universally determine the maximum RAM speed a computer supports?

0

Say I have a computer, standard 32 or 64-bit architecture. I can put any OS on it (*nix, Windows, etc). Is there some way for the computer to interrogate the hardware as to what the maximum RAM speed supported is, that works universally?

By "universally", I mean that this solution should work even on devices which aren't known to it/in its internal dictionary of parts/chipsets/processors/whatever. Right now, I can run dmidecode on a random MB and 9/10 times it will give me the correct current system specs. But that doesn't tell me the max supported RAM speed, and it is also wrong more than I'd like: especially on newer motherboards running older OSes, and in strange UEFI/BIOS compatibility environments.

Is this possible? If not, why not?

Zac B

Posted 2013-02-14T05:09:02.523

Reputation: 2 653

Answers

1

I would say it's easy to show it's impossible.

On a modern system, the memory controller is on the CPU. The maximum supported memory frequency is the lower of what the CPU supports and what the motherboard supports. Without a CPU database, the only way to tell the maximum frequency the CPU supports is for the BIOS to tell you. While BIOSes are supposed to report the actual clock frequency in the DMI table, there's no standard entry for the maximum supported frequency.

Another problem is that the DMI table has the actual clock frequency. If you are looking for the effective frequency (which is how RAM speed is usually reported), that would also require the program to understand the RAM technology's effective-to-actual ratio. What if QDR RAM becomes popular? Can you write a program today that can accurately detect QDR SDRAM that doesn't even exist as a specification yet?

David Schwartz

Posted 2013-02-14T05:09:02.523

Reputation: 58 310