There are so many things a modern computer does that we simply take for granted, but sometimes it is fun to peek under the hood and see how everything works. Today we’re investigating how exactly your computer knows what kind and amount of RAM you have installed.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.
SuperUser reader Celeritas wants to know how his computer can instantly detect what kind of RAM is inside:
How can Mac OS X tell what kind of RAM is in the machine? For example I was working on one that had DDR3 RAM @ 1600MHz and I thought it wasn’t possible to know the RAM without physically opening the case and looking at it.How can this be done on other systems?
Clearly it’s quite useful for the operating system to know what kind of RAM it has access to, but by what mechanism does it determine this information?
SuperUser contributor UltraSawBlade offers the following explanation:
RAM sticks have a small chip on them called the Serial Presence Detect, which contains information such as capacity, preferred timings, manufacturer, and even a serial number.
SPD information is accessible by OSes using the i2c bus (which also includes things like temperature sensors). I think you can directly read the SPDs from Linux using various i2c utilities.
This image from the Wikipedia article has a good picture of it [seen above].
Other contributors offer up ways the end user can access the i2c information for themselves. AthomSfere writes:
wmic memoryChip get /?
Will give you various RAM information you can ask for right from the command prompt.
wmic memorychip get serialnumber
Gives you the serial number. You can also use
WMI is the Windows method of querying SMBIOS data. Apple, Linux, Windows and anyone else who wants to run on most hardware made needs to support SMBIOS at some level, for different reasons.
You can use SMBIOS (e.g. through WMI or WMIC in Windows) to also gather hard drive information, network information (is it a 10/100 or 10/100/1000 card?).
To take it one step further, every manufacturer has a code for MAC addresses on NICs. RAM also has a manufacturers code. So all you have to do to get their code, for example my 2 x2GB in this laptop are 830B, is build a database for the manufacturers (830B might be one brand and then resold too!) and also what models mean what. That is how CPUz works I believe—basic queries and a really complete and current database.
For more examples of how to access this information on Windows, Linux, and OS X machines, check out all the contributor responses here.
Have something to add to the explanation? Sound off in the the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.