Notes on upgrading system with Asus M3A rev 1.x motherboard

The Asus M3A 1.xx (not to be confused with the M3A-H) is a decent Socket AM2+ motherboard.  Despite being dated (having been released in 2007), it’s still part of a usable — if trailing-edge — desktop system today.  The main limitations are DDR2 RAM, SATA II, PCIe 2.0, HyperTransport 3.0, and those of the Phenom CPU platform itself.  Here is a small guide for upgrading this system to the maximum.

CPU

While the M3A is a Socket AM2+ motherboard, as long as the BIOS is compatible and the motherboard supports the voltage requirements, a socket AM3 CPU can be used in it.  The caveats as versus a native AM3 system will be that it is physically impossible to use DDR3 RAM in a system without DDR3 slots.

The best CPUs that are available for this system are:

* Phenom II “Thuban” hexa-core – the Phenom II X6 1065T is the fastest 95W TDP model

* Phenom II “Deneb” quad-core – the Phenom II X4 B99 is the fastest 95W TDP model.

Several faster 125W TDP models are available and should work, but the best price/performance and operating cost come in the 95W range.

The Phenom II X4 B99 (AMD part number HDXB99WFK4DGM) can be found for around $50 on eBay today, and I have tested it to be fully compatible with the last BIOS (1206) released by Asus in 2010, despite that the CPU release date came after that BIOS release.

There is one caveat with this CPU: Cool ‘n Quiet, AMD’s dynamic clock scaling feature, may have to be disabled to prevent the system from occasionally, and randomly, hanging.  No other solution was found, even improving cooling or attempting to restrict the range of clock speeds available for scaling.  However, if a load is placed on the CPU such that it never scales the frequency down, no such system freezes were observed!

The reason frequency scaling doesn’t work is probably that the BIOS was written before this CPU was released, and thus an incorrect scaling table is written out with incorrect voltages.

With Cool ‘n Quiet disabled in BIOS:

Vcore Voltage: 1.41 V (min = +0.85 V, max = +1.60 V)

With Cool ‘n Quiet enabled in BIOS and frequency scaling enabled:

Vcore Voltage: 768.00 mV (min = +0.85 V, max = +1.60 V) [at min frequency]
Vcore Voltage: 1.36 V (min = +0.85 V, max = +1.60 V) [at max frequency]

The voltage appears to be at least 0.05V too low.  Unfortunately, modifying the voltage manually in the BIOS does not override the scaling table voltage.  The only way to get this to work would likely be to patch the scaling table at runtime as I’ve done on other machines.

Cool ‘n Quiet can be disabled in the BIOS settings. To disable Cool ‘n Quiet at runtime on Linux instead, simply add the following to /etc/rc.local or other startup script:

$ for core_policy in /sys/devices/system/cpu/cpufreq/policy*; do echo performance > ${core_policy}/scaling_governor; done

CPU cooler

I found that despite the Phenom II X4 B99 being rated for 70C maximum case temperature in the AMD Power and Thermal Data Sheet (see section 2.3.13), it becomes unstable once the motherboard thermal diode reads above 62C or the internal sensor reads above 49C or so.

As it turns out, the Phenom internal temperature sensor cannot be trusted due to Erratum 319 (discussion here). The Linux k10temp driver tries to blacklist the known non-working cores (stepping C2 and below), but the blacklist does not include the X4 B99 because it’s a C3 stepping.

To reason about this, you can safely assume that the core temperature is actually higher than whatever temperature the external motherboard thermal diode is reporting, even if the on-die sensor presumes to report a lower temperature.  So ignore k10temp in that case (and I filed a bug to investigate this).

One very effective CPU cooler for the M3A is the Arctic Freezer 13 CO. It is easy to install; just make sure it is oriented in such a way that the fan airflow direction is correct. With this cooler the motherboard thermal diode temperature stayed consistently at or under 60C even while the CPU was at max clockspeed, eight burnP6/burnMMX instances were running, and two HD 60fps fullscreen YouTube videos were simultaneously playing. One thing to note with this cooler is that the DIMM clearance is tight; the fan will have to be popped off to access the 1st DIMM slot. If your DIMMs have heat spreaders that extend past the top of a normal-height DIMM stick, the first DIMM slot will likely be unusable. Otherwise it is a great choice.

RAM

Both Socket AM2+ and Socket AM3 CPUs support DDR2-1066 (PC2-8500) RAM.  However, I was unable to make any PC2-8500 RAM that I tried actually work reliably at 1066MHz speed, regardless of limiting the number of modules, setting looser timings, or adding voltage.  All modules would eventually fail memtest86 or become unstable in operation.

The best configuration I was able to install is this:

Any attempt to run this or any other memory at 1066MHz, regardless of slower timings and higher voltage, eventually failed, even using a C3 stepping Phenom II which improved the integrated memory controller signal integrity.

It is conceivable that 1066MHz actually cannot work on this motherboard.  While Asus’ marketing material advertises that “Dual Channel DDR2 1066” is possible, no 1066MHz module is actually listed as qualified in the “Qualified Vendor List” in the motherboard manual.

If you can figure out how to make this work, tell me!

Note: the same RAM also doesn’t work in an Asus P5B-E at PC2-8500 speed (1066/533MHz).  It passes Memtest86+ at 444MHz, but only at 2.0V or above, but then experiences ZFS checksum errors in operation.  So perhaps the RAM itself is incorrectly labeled, or there’s something in common about the design of these two Asus motherboards of similar vintage preventing higher speed operation.

Upgrading to 16GB RAM with dual rank DDR2 UDIMMs found on Ebay

There are numerous listings for 4GiB DDR2 UDIMMs on Ebay, some of which are counterfeit (made to look like legitimate vendor modules) and some of which are proud of their inherent dodginess and brand themselves accordingly.  However, they’re uniformly dirt cheap (US$30 for a 4x4GiB set), and by installing 4 of these DIMMs, it would be possible to stuff 16GiB into this old system, so it’s worth a shot at least!

These DIMMs are different from typical ones though because they’re “dual rank”.  That is, instead of using higher density memory chips (which the Phenom DDR2 integrated memory controller can’t use or which might not even be available), additional DRAM chips are stacked on the same module and addressed using a chip select line.  Electrically, other than the DIMM module layout itself and the chip select mechanism, there is no difference between adding ranks and adding additional DIMMs to the memory bus.  One might argue that using multi-rank DIMMs could confer a small performance advantage if the memory controller utilized the ability to do I/O to one rank while another rank is changing I/O direction.

RDIMMs (registered DIMMs) will not work on this system (and most other consumer hardware) due to the memory controller not handling the additional register component.  That’s informative, because the reason the register exists is to reduce the electrical load and signal degradation that additional DRAM chips on the bus would otherwise introduce at the expense of a small latency increase.  So we know that adding ranks is as much of a risk to signal integrity as adding DIMMs, and effectively we are doubling the number of DIMMs from 4 (the designed capacity of the motherboard) to 8 (the virtual number of DIMMs when using 4 dual rank DIMMs).

Another interesting thing to note is that if a DIMM is installed in slot 4 (the furthest from the CPU), the BIOS automatically reduces the memory speed (667MHz -> 640MHz, 533MHz -> 400MHz, etc).  So Asus may have already had some consciousness of DIMM stability issues with this motherboard.

With that in mind, I ran the following tests:

  • Memtest86+ v5.x for a basic CPU and RAM check
  • “glmark2” in a loop to stress the PCIe bus while running “stress-ng –matrix 0 –tz –vm 1 –vm-bytes 13G –verify -v” to stress the CPU and RAM

After eliminating the confounding factors of PSU malfunctions (masquerading as boot failures) and Cool ‘n Quiet frequency scaling bugs (masquerading as system freezes under moderate load), I found that the following are the best configurations that will work (“1R” denotes OCZ single-rank 2GB DIMMs, “2R” denotes generic dual-rank 4GB DIMMs):

Dual channel (same color slots):

  • Slot 1+2+3+4 OCZ 1R: 800MHz
  • Slot 1 + 3 generic 2R: 533Mhz
  • Slot 1+2+3 generic 2R: 533Mhz
  • Slot 1+2 generic 2R / 3+4 OCZ 1R: 640MHz
  • Slot 1+2+3+4 generic 2R: 400MHz

Single channel (same color clots):

  • Slot 1+2 generic 2R: 800MHz (!)
  • Slot 3 generic 2R: 533Mhz (!)
  • Slot 4 generic 2R: 400Mhz (!)
  • Slot 3+4 generic 2R: 400Mhz

Interestingly, there was no effect in changing DIMM voltage or timings, northbridge (Phenom IMC) voltage or frequency, or forcing 2T/”slow access mode” instead of allowing the BIOS to configure it.

So what’s going on?  Well, given that the single channel results are the constraining factor for a full dual channel DIMM population, we know the following:

  • Single rank DIMMs work in all four slots at 800MHz
  • Dual rank DIMMs work in the first two slots at 800MHz
  • The BIOS is programmed to reduce the memory frequency whenever a DIMM is installed in slot 4
  • A dual rank DIMM in slot 3 reduces the globally stable memory clock frequency to 533MHz, and a dual rank DIMM in slot 4 reduces the globally stable memory clock frequency to 400MHz
  • The same dual rank DIMM can run in slot 1+2 at 800MHz

My conclusion is that there is an existing electrical stability problem in DIMM slots 3 and 4 which marginally works with single rank DIMMs, but is fully exposed with dual rank DIMMs.  The longer traces and cheaper board design of the dual rank DIMMs certainly don’t help their case, but however marginal their design: if the same DIMMs work at 800MHz in slots 1 and 2, only the board design could finally render them incapable of full speed operation in slots 3 and 4.

Conclusion: Stuffing 16GB RAM into a Phenom socket AM2+ DDR2 system is indeed possible, but with the following caveats:

  • Some memory performance will have to be sacrificed depending on motherboard quality (in the case of the M3A, the memory must be configured for half speed)
  • Relying on the BIOS and SPD EEPROM settings to establish system stability is probably not going to work.

Use the above knowledge and ensure the configuration passes multiple rounds of Memtest86+ before proceeding with this type of memory.  Have fun!

Leave a Reply