Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
up vote 1 down vote accepted

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?

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .