Today, the vast majority of memory used by desktops, notebooks, and mobile devices is unbuffered non-ECC (Error Checking and Correction) DRAM. In fact, unless one is running an Intel or AMD CPU that can support ECC memory unbuffered ECC DRAM is the only choice for most users. Intel Xeons, for example, support ECC memory, while even the new Core i7’s do not. AMD has much broader ECC support at the CPU level, but many AMD motherboards do not support ECC memory features so it is not universal.
ECC Memory What it Does
Error Checking and Correction (ECC) memory is mostly considered essential in enterprise environments these days. Single bit error checking and correction within an 8-bit byte allows for single bit errors to be both detected and corrected when they occur. Interestingly enough, the way this single bit ECC works is not all that unlike RAID 4 and RAID 5 where an XOR algorithm is used to generate parity bits. Instead of losing usable memory capacity, memory makers tend to add an additional chip to ECC memory for every eight storage chips. When a single bit error is detected, the parity information is used to reconstruct the data with an error. Again, this is conceptually similar to how RAID 4 and RAID 5 can scrub and fix data errors in storage arrays. Larger errors than multi-bit can be detected but not corrected by the single bit ECC type of parity scheme.
For desktops, this is less important as a lot of figures put single-bit errors in the range of 1 per 1GB or 1 per 2GB of memory each month. To a desktop user, this may cause a program to crash, or at worst require a reboot. In servers, ECC is essential to maintaining both data integrity and uptime. With the current minor cost differential of ECC versus non-ECC unbuffered DIMMs, there is little reason to get non-ECC memory for a server.
Unbuffered ECC versus Registered ECC Memory
Adding to the ECC concept, there are two concepts at play, unbuffered and registered ECC memory modules. The basic difference is that memory commands in unbuffered memory configurations go directly from the controller to the memory module, while in registered memory configurations the commands are sent first to the memory banks’ registers prior to being sent to the modules. This concept may sound difficult, but here is the very simple/ conceptual view regarding what is going on.
In the above example the memory controller accesses the memory banks directly. The above assumes that the memory controller resides within the CPU package as it does in modern CPU architectures. Looking at older systems, the memory controller resided within the CPU northbridge. Compare this to the registered memory example below.
Here the CPU communicates with the registers for the banks of memory on each module. From there, these registers communicate with the DRAM. The implications of this are twofold. First, on a negative side, instructions take approximately one CPU cycle longer due to the intermediary of the bank register. On the positive side, this buffering reduces the strain on the CPU’s memory controller because it points to the dedicated intermediary register versus accessing the DRAM directly. It is easier on the memory controller to deal with a fewer number of targets.
This feature is very important in server scenarios because, for example, an Intel 3400 series platform, such as the Supermicro X8SI6-F or Intel S3420GPLC supports 16GB unbuffered ECC and 32GB registered ECC memory. Likewise, in dual processor systems, such as the E5600 series based Supermicro X8DTH-6F recently reviewed on ServeTheHome, the delta is much greater with up to 48GB of unregistered ECC or 192GB of registered ECC memory. For virtualization environments where memory, and memory bandwidth is key to achieving high consolidation and density metrics, Registered ECC memory is generally the way to go. If one purchases a server with unregistered ECC DIMMs, then requires additional capacity, then the upgrade operation will require a pull and replace all UDIMM modules making it an expensive proposition.
In this article hopefully one can get a conceptual view of the difference between the unbuffered ECC memory and registered ECC memory to help inform selection decisions. This was not an overly technical article because memory modules tend to be items that people order with or add to their systems and do little work on until they need more memory.
So basically it’s only a question of how much RAM you want? No data integrity differences?
There are other considerations like performance that come into play. As far as reliability and/ or data integrity I have heard people argue both ways.
Good article and overview.
The reason to go registered boils down to capacity and reliability. Speed is often the same, but can a negligibly slower when using registered memory.
The main issue with having a large number of memory chips connected to a memory controller (whether in a chipset or in the CPU) is the amount of electrical loading. Each chip takes a bit of electrical current from the memory controller affects the impedance memory bus. In unbuffered memory, the RAS, CAS, Data and other control lines must connect to multiple memory chips. By the time 4 DIMMS are added, that loading starts to get pretty high because 4 DIMMS might equal 4×18=72 chips. All other things equal, the more memory CHIPS (not just DIMMs) connected to the memory controller, the higher the electrical load.
Registered memory has a “register” or a buffer. Digitally, registered and unregistered look almost the same to the memory controller, but electrically, registered memory looks like a single chip rather than a series of chips. The register “hides” the effects of all the chips that are behind it. This improvement in electrical load also improves stability and thus reliability.
There is registered ram that is parallel and then there is FBDRAM which is serial in nature. The _minimum_ additional delay for parallel registered memory compared to unbufferred memory is likely to be about 2 clock cycle. (a clock cycle can be less than a CPU cycle. ie. multiple clock cycles form 1 CPU cycle, especially on CISC processors, but I don’t know how the memory controller is clocked or synchronized with the Intel CPUs to know how much additional delay this works out to be.) With FBDRAM, because it’s serial in implementation, there’s much higher latency than with regular registered memory. When the CPU no longer wants a burst of data and wants to change to a new address, the new address has to be serially clocked to the FBDRAM. Multiple serial lines are used, like PCIe, so it’s not a 64-clock delay, but it’ll be more several clocks of latency that the memory system must wait before it can put out any data. Thus, FBDRAM can be noticeably slower in random access because of it’s higher latency, but it can makes up for some of that via higher bandwidth which increases with each FBDIMM added.
Unless you need to put in a lot of DIMMs, I’d recommend using unbuffered ECC memory. It’s cheaper, arguably faster, and uses less energy. ECC will protect from random errors so reliability is less of a consideration when choosing between the two.
I recently tried to upgrade a DELL T110 server with a 2GB registered RAM ( HMT125R7TFR8C-H9 2GB 2Rx8 PC3-10600R-9-10-B0 ) and the server would not boot correctly. DELL tell me that their motherboard will not recognise the ‘registered’ memory module and that ‘unbuffered’ memory is needed. Is there any explanation for this?
Thats because Dell servers are not worth a shit, they want to make things so you have to use thier hardware and software in them and non else…..Only Dell would use un buffered in a server …What brain child at Dell came up with that? …..Use it for a boat anchor.. T 110 is old school dump it….
MagnOx – the Sandy Bridge LGA1155 based CPUs only take unbuffered DDR3. LGA1156 Xeons can use registered ECC DIMMs. If you are going to 32GB+ on a UP platform, there is still some great value in the previous generation parts.
so on an ASUS A8N-SLI Deluxe mobo… the Registered DRAM wont work? I currently use 4x512MB unbuffered-ECC, but wish to install some cheaply available (ebay) ecc-registered before I upgrade to a new system.
SeverPro, I think you’ll find all the DEll 1950’s running FB-DIMMS. Not a Dell fan but your statement was completely unfounded.
Just to add an update on this.
From Sandy bridge through to Ivy Bridge, Unbuffered ECC compatibility is dependent on the motherboard chipset and actual wiring to the ram socket. It is no longer based on the processor.
Intel try to hide this fact to stop people using i3s and the like in ECC UDimm server boards which support Unbuffered ECC ram.
If you take a look at the technical specs for the Sandy Bridge processors you will see this statement.
” The type of memory supported by the processor is dependent on the PCH SKU in the target platform— Desktop PCH platforms support non-ECC un-buffered DIMMs only”
What it does not mention is boards using Server PCH SKUs.
The Sandy Bridge Server PCH SKUs C20(2/4/6) all support the G6XX, i3-21XX and E3 Xeon processors. Only the C206 supports unbuffered Dimms (i.e. non ECC) as well as uDIMM ECC ram. I have had both an i3 and an E3 Xeon in a Supermicro X9SCM board with ECC ram without any issue. Both reported the same ECC ram details in the BIOS. The major players also provide servers using desktop processors (G620s or i3-21XX models) with ECC ram.
Sandy Bridge server PCHs were restricted so they would fail to boot with an i5 or i7 which effectively meant you could not run an i5 or i7 on a motherboard with ECC support.
The original gen 1 LGA1156 processors had the support on the processor it’self though. I believe this is where a lot of the confusion comes from. That and Intel refusing to state the fact clearly.
Registered ECC is a whole different ballgame however.
Thank you very much for this useful article. I’m trying to know if my servers are equipped with rdimm or udimm, but cant find a way to do it using wmi. Do you know anyway to get this info ?
I’m not an expert, so after reading many endless and conflicting expert opinions regarding whether server-type DDR2 buffered ECC RAM could in fact be used in my home PC’s (one has an Intel mobo, and the other is AMD), I’ve concluded that the simplest way to see is probably to just try it and see! Wish me luck..
Does your CPU support ECC? Does your motherboard chipset support ECC? Do you have the correct type of ECC ram for your mobo (udimm vs rdimm)?
It’s as simple as this to use ECC..
I am about to buy a ‘Asrock C2750D4I Mini-ITX Motherboard’ for testing VMWARE Esxi 5.5 and I already have some spare ram modules available which we purchased for ‘Dell PowerEdge T320’ .
This is the link of the actual 16GB Ram modules we have from dell – http://accessories.us.dell.com/sna/productdetail.aspx?c=us&l=en&s=bsd&cs=04&sku=a6996789
It says on the specifications > Featutes > Dual rank, Low Voltage , registered.
I am very confused whether these modules are supported by the motherboard or not.
Thank you in advance for your time.
Those will not work. You need unbuffered ECC DIMMs rather than registered (RDIMMs)
Hello, I believe there’s a typo in your article which may lead to reader confusion. I believe the second sentence in the article should read “…NON-ECC DRAM is the only choice for most users.” and NOT “… ECC DRAM is the only choice for most users”
Except the initial confusion when I read it, the rest of the article was very helpful. Thanks
Can someone explain which memory can be easily extended ?? e.g. I have 16 RAM slots, want to have 128GB now (4x32GB), but later I would like to add additional 4×32. Which memory allows me this ugrade ??
(Dual Xeon E5-26xx V4, Intel chipset, asus workstation board with dual socket 2011-3. )
Petar – with an E5-2600 V4 you an use 32GB DDR4 ECC RDIMMs.
Hello from May of 2017! You should be glad to know that it’s still a great read and full of useful information even 6 years after it was posted. I’ve decided to go with Unbuffered ECC memory on my C3558 😉
Still the best comparison of ECC and unbuffered I could find. I did find a video that went a bit further and talked about fully buffered as well, but that’s a whole different animal. I was actually trying to do a bit of research to create a similar article talking about different server memory types for our website.
This is still the best article I could find on registered and unbuffered ECC DIMMs in January 2022!
I’ve read everything on this site. And I can hereby state that. None of it has. Made any sense? It seems to be double talk.
is it that Both registered and unregistered memory. Are. ECC error checking and correcting?
it almost makes it sound as though non-registered memory use the physical address on the buss of the CPU to store the information and retrieve instructions and information from an exact physical address indicated by the bus of the CPU ,
whereas the registered memory acts more like register indirect addressing and actually contains a buffer that acts like an IXIY register with an arithmetic adder that sums the offset with the cpu buss’s value.
And the fact that it’s called server memory un conjunction with the tripe i read in this blog , queues Me into believing that that might be because a server accesses 10’s of thousands of clients with the exact same function for every single client and in order to switch clients all they have to do is push a number into some offset index resister instead of using 100% offset addressing inside the CPU. But yet that’s all speculation.
but yet I guess if it did it would do things like: delete expired files and change files that are updated which are accessed by the entire network.
yet in conclusion I’d have to say that the entire institution of registered memory is a simple is a simple method of bring the cost of servers which number in less than one for every 1000 users, into the marketing cost of all RAM which actually only benefits probably one out of every 10 users, yet server memory is so prolific dad it just seems like a scam since it’s only usable by a server system operator. Yet at the same time, I guess the whole computer industry is demographically paradigm. In other words there would be no computers unless there was an Internet with lots of servers on it, even though there’s probably only one server for every hundred thousand users.
But yet I wonder why nobody actually publishes a real explanation. I appreciate your efforts in attempting to explain.
Maybe if I would offer a suggestion. perhaps if you would make a flow chart and show us the physical memory location that is operated on by the processor and the sequence of T cycles for both instances of registered and unregistered memory.
Yet I will let you know that I have read every word on this blog and that none of it made sense. It’s just a conundrum. Which makes me even more wary.
Yeah like I said, I appreciate your attempt. Thank you for reading. Your friend Jonathan.