TVeblen said:
We are seeing more and more cases of new systems in which RAM modules
that are compatible by specification to a motherboard are not recognized
and freeze the system from booting unless a BIOS version upgrade is
performed.
This is new to me - getting a BIOS to recognize to-spec modules. I rehab
a lot of older systems and mix and match modules willy-nilly without
much issue. But I haven't built a new system since 2009 (X58) so
probably just a noob (once again). I get that this is now common, I'd
like to know why.
What is different in modern RAM modules, or modern motherboards or BIOS
that would make RAM unrecognized? The size? The chips?
(The case in point were two new 4GB modules - same voltage, speed, and
timings as the two 2G modules in the board already, dual channel board.
updating the BIOS and the modules were recognized).
The SPD chip, should follow established JEDEC standards, whether a module
is newer or older. That's why JEDEC exists, to bring some order to things.
There are some geniuses, who have added unofficial extensions to
the SPD, but as far as I know, the design of the extension means
the "bonus parts" are ignored by BIOS not designed to read them.
http://en.wikipedia.org/wiki/Serial_Presence_Detect
Enhanced Performance Profiles (EPP)
Extreme Memory Profile (XMP)
The BIOS does not have to pay attention to the SPD. The BIOS uses
peek and poke, to confirm module size (so if the SPD EEPROM chip
is coded to say a module contains 256MB and the module only has 128MB,
the BIOS can detect this and prevent a disaster). But I don't know
how the BIOS would handle the timing settings, if none were provided.
I suppose it can open up the timing parameters to max, and make
the memory extremely slow. I can't say I've run into a situation
like that, to find out.
So as far as I'm concerned, the BIOS should always have
some kind of answer to what it finds. Whether the SPD
checksums are corrupt, or some of the info doesn't make
sense, the BIOS can have code added to deal with it.
*******
Some BIOS designs, the code that handles memory, comes
from the processor manufacturer. For example, something like
an S939 system with AMD processor, the BIOS RAM handling code
may have been written by AMD. There was an issue with
"detecting matching modules" back in those days, where
some pairs of modules would "get ignored". And eventually,
via BIOS updates, it got fixed. Not all the code that
handles memory modules, necessarily comes from Award or
Phoenix or the like.
*******
To do your own researches, grab a tool like CPUZ, and use
the "dump" feature, to dump the SPD tables. Then, study
the 256 byte SPD table, to reach your own conclusions
as to why it failed. You'll need the appropriate JEDEC
document, to decode it all. (This example, is a DDR2 module)
CPU-Z TXT Report
...
Memory SPD
...
DIMM # 1
...
SPD registers
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 80 08 08 0E 0A 61 40 00 05 30 45 00 82 08 00 00
10 0C 04 38 01 02 00 03 3D 50 50 60 3C 1E 3C 2D 80
20 20 27 10 17 3C 1E 1E 00 00 3C 69 80 18 22 00 00
30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 72
40 7F 98 00 00 00 00 00 00 04 39 39 43 35 33 31 36
50 2D 30 31 39 2E 41 30 30 4C 46 00 00 00 08 25 A9
60 1A 20 86 00 00 00 00 00 00 00 00 00 00 00 00 00
70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F0 39 39 43 35 33 31 36 2D 30 31 39 2E 41 30 30 4C
Using CPUZ is how you go about studying these things.
http://www.cpuid.com/softwares/cpu-z.html
Use the "Save report" button here.
http://www.cpuid.com/medias/images/en/softwares-cpuz-07.jpg
Paul