I have an early 2011 17" MacBook Pro (MacBookPro8,3). I opted for the CPU upgrade (2.3 GHz), but decided to put in the extra memory myself. I briefly checked that the Intel specifications stated that my CPU should support memory speeds at DDR3-1600, so I ordered a Kingston KHX1600C9S3K2_8GX (http://www.valueram.com/datasheets/KHX1600C9S3K2_8GX.pdf)

Sadly, when I was booted into either OSX Lion or Windows 7 Ultimate (both 64-bit) the memory was still only running at DDR3-1333. It turns out that this particular memory module relies on something called the SPD XMP Extension. This is something the Apple BIOS/EFI doesn't support.

But people are running MacBook Pros at DDR3-1600! Even with a slightly different version (http://www.valueram.com/datasheets/KHX1600C9S3K2_8G.pdf) of this memory module.

This lead me to the question of whether one could flash the SPD table and make modifications to it. Yes, you can. There are a few tools available for the job. I found SPDTool (http://www.techpowerup.com/spdtool/) and Thaiphoon Burner (http://www.softnology.biz/index.html), where the former does not work on a MacBook Pro but the latter does.

I did succeed in grabbing the XMP timings and overwrote the standard timings. CPU-Z identifies my memory as PC3-12800H (800 MHz), which seems to be correct.

I accidentally overwrote the "lower" XMP profile, but that doesn't matter to me since the computer doesn't read XMP profiles anyway.

But now that I've got my timings flashed with the XMP profile data, I figured it would run at DDR3-1600 and show as 800 MHz in CPU-Z and 1600 MHz in OSX's System Profiler. It didn't. Somehow, it still makes the modules run at DDR3-1333.

Help me, Obi-Wans of the memory world. You're my only hope.

Screenshot of CPU-Z: