Memory Reference Code

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

The Memory Reference Code (or MRC) is a fundamental component in the design of some computers, and is "one of the most important aspects of the BIOS" for an Intel-based motherboard.[1]:8 It is the part of an Intel motherboard's firmware that determines how the computer's memory (RAM) will be read and written, and adjusts memory timing algorithms correctly for the effects of any modifications set by the user or computer hardware.


Intel has defined the Memory Reference Code (MRC) as follows:[2]

"The MRC is responsible for initializing the memory as part of the POST process at power-on. Intel provides support in the MRC for all fully validated memory configurations. For non-validated configurations, a system designer should work with their BIOS vendor to produce a working MRC solution ... The MRC in the system BIOS needs to know the specification of the attached system memory. Most of this info should be contained in the onboard SPD. With this in mind care needs to be taken when programming the appropriate values into the SPD [the part of a memory module that contains its operating requirements and specification]. A system designer should work with their memory and BIOS vendors to implement a suitable SPD programming."

As such, the MRC is a part of the BIOS (or firmware) of an Intel motherboard. George Chen, a research and development (R&D) director at ASUS, described it in 2007 as follows:[1]

"The MRC is part of reference BIOS code, which relates to memory initialisation in the BIOS. It includes information about memory settings, frequency, timing, driving and detailed operations of the memory controller. The MRC is written in a C-language code, which can be edited and compiled by board makers. It provides a space to develop advanced features, and the ability to tune memory. We try to look into [Intel's] Memory Reference Code to try to understand its behaviour ... Sometimes, there are some remarks inside the source code, while on other occasions, we just try to change the arguments to see what effect it has. If we take the time to understand the MRC then we can get more out of it. If we put in more effort than our competitors, we can find more information."
"The MRC usually only provides support for industry-standard memory configurations. For instance, under a 1,066MHz FSB, the only choices regarding memory speed in the MRC are DDR2-667 and DDR2-800. We have to provide additional choices. For people who want higher memory frequency, we used the setting of 800MHz FSB:DDR2-800 in MRC, but overclocked it to work with a 1,066MHz FSB, so we could implement support for DDR2-1066."

The article author describes the MRC as "One of the most important aspects of the BIOS for an Intel board" and the reason why "one [board might be] a brilliant overclocker and another [is] as stable as a plate of jelly on a bouncy castle"; adding that "When you're overclocking, you're literally running clocks faster than normal. Working out the effect of this on the various different components on the board is a task that a good BIOS must be able to handle." [1]


  1. ^ a b c Posted by Alex Watson, possibly repost from original content on [unclear]. "The life and times of the modern motherboard". 2007-11-27. Retrieved 2 February 2013.
  2. ^ David Hilber Jr. (August 2009). "Considerations for Designing an Embedded Intel Architecture System with System Memory Down ®" (PDF). Intel. Retrieved 14 April 2015.