Jason Moore3 wrote:
I have a late 2007 Macbook (2.2GHz Intel Core 2 Duo MB062LL/B). When I went to the store to buy 2 sticks of 2GB - they were sold out of the PC2 5300 (667MHz) so I payed a few bucks more for the PC2 6400 (800MHz).
I figured the Macbook would simply run the memory at the lower speed. When I replaced the two 1GB sticks, with the 2GB sticks, it refused to boot. (No sounds. No beeps. Nothing.)
I proceeded to them try various combinations of ram. What I found was that if I had a 512MB stick (PC2-5300) then the 2GB stick (PC2-6400) would work fine. If I just had the PC2-6400, it wouldn't boot at all.
I realize that I probably need to return the PC2-6400 for PC2-5300 - but I'm curious if anyone can explain this behaviour.
How can fast RAM cause problems? (Doesn't the RAM simply operate at whatever speed the bus sends data to it?)
Is this a bug in the MacBook firmware? It detects how fast the memory how fast can run, and then barfs when the memory says 800MHz (instead of the expected 667MHz?)
I doubt it's a problem with the firmware. All the memory stuff is done by the Intel chipset's memory controller. These controllers seem to have certain combinations that work OK, while there are others that don't. I have heard reports that PC2-6400 doesn't work by itself, although I hadn't heard of different combinations being tried.
I've tried different combinations in my MacBook, including dual PC2-4200 modules and mixed PC2-4200 and PC2-5300. The memory controller (chipset) datasheet notes that when two different speeds are used simultaneously, the controller defaults to the slower one for both. That was my experience, as System Profiler said both were running at 533 MHz which indicates PC2-4200 speeds.
Apparently it just doesn't get past power on self test. It theoretically can run at lower clock speeds, but in your case using a PC2-5300 module caused the entire system to revert to PC2-5300 speeds. If there's any limitation, it's all going to be hardwired into Intel's memory controller. When it reads the serial presence detect EEPROM on each module, it probably doesn't like what it sees.