Learn about the technologies behind the Internet with The TCP/IP Guide!
NOTE: Using robot software to mass-download the site degrades the server and is prohibited. See here for more.
Find The PC Guide helpful? Please consider a donation to The PC Guide Tip Jar. Visa/MC/Paypal accepted.
View over 750 of my fine art photos any time for free at DesktopScenes.com!

[ The PC Guide | Systems and Components Reference Guide | System Memory | Memory Errors, Detection and Correction ]

Parity vs. Non-Parity: Pros and Cons

For many people, like me, the decision to use parity memory is clear-cut; for many others the decision to not bother with it is. Others are willing to consider the arguments and make a decision--this section is for you. While I make no secret that I think it is an unwise risk to not use parity memory, there are situations where it makes sense, and valid technical arguments against using it. There are also a lot of bogus misconceptions about it that cause people to make poor decisions in this regard. It is these that I wish to dispel here.

First, the easy cases. If your system requires the use of parity memory and parity checking cannot be disabled, you must use parity memory, unless you want to use the heinous false parity memory. This is not recommended, although if you know what it is, using it is no worse than running a parity system with checking turned off. If your system doesn't support parity checking, you can't do parity checking, obviously. The rest of this section assumes that you have a choice of which to use.

I would state the following as the advantages of using parity checking/ECC:

  • Data Integrity: You run far less risk of a memory problem causing corruption and possible data loss. With ECC errors can be corrected on the fly. Even with regular parity checking you avoid writing bad data to your disk and accumulating errors that can cause long-term data loss. See here for details on the types and causes of memory errors.
  • Easier Troubleshooting: If you don't use parity checking, any time you have a strange glitch in your system you cannot rule out a memory problem being the cause. When you run with parity checking in place you know most of the time when a problem is related to memory.
  • Advance Warning of Hardware Failure: Many hardware failures over time can manifest themselves through parity errors in a parity checking system. Without parity, these can remain hidden and hard to diagnose.

These I consider disadvantages of parity checking or ECC:

  • Greater Expense: Parity memory costs more than non-parity in most cases.
  • Harder to Find: Parity memory can be more difficult to buy, especially in the newer technologies.
  • Occasional False Positives: Any time a parity error occurs, there is a 1 in 9 chance that the bit that was inverted to cause the error was actually the parity bit itself. This means that the 8 data bits themselves were fine, and if parity had not been in use there would have been no problem at all. This really does not apply to ECC, which would handle this situation with no difficulty.
  • Poor Error Handling: Regular parity checking deals with a parity error by sending a non-maskable interrupt (NMI) to the processor, halting the system immediately. Depending on the timing of this, it can cause lost data. (But not the accumulation of data errors over time as with non-parity). This does not apply to ECC (except in the very rare case of a double-bit error).
  • Performance Penalty For ECC: ECC does cause a minor slowdown in system performance.

Here are some of the arguments I have heard against using parity checking or ECC (other than the disadvantages listed above) and what I have to say about them:

  • "Parity checking is overkill, I don't need it, and it's too expensive": This may be true for some people. You have to decide for yourself if using parity memory is important enough to justify the additional cost. It all comes down to how important your data is to you; a lot of people don't care very much about their data it seems (just look at how many never back up their hard disks).
  • "You are more likely to encounter a software bug than a memory error, so why bother?": This is a rather silly argument; the whole point of parity memory is that you get some idea if you are really having software problems or not--wouldn't you want to know? How are you going to figure out if you have a hardware problem or just a buggy or corrupted program? Just because there are other problems that can occur with a PC system doesn't mean that protecting yourself against ones that you can protect against makes no sense.
  • "If parity checking is so important, why don't other parts of the PC use it?": Guess what: they do. In fact, on a PC with no parity memory, the memory is one of the few components that is running without protection from data corruption. Hard disks, CD-ROM drives, even floppy drives all use error detecting and correcting circuitry. Newer Pentium II processors have added it for the secondary cache bus; if error detection is such overkill, why is Intel adding it to the cache bus, something that hasn't had error detection on it before, I must wonder? Modem and network communications devices are similarly protected. Even the system BIOS has a checksum that provides memory error detection for its settings.
  • "Modern RAM rarely has errors, parity was only needed for older systems": Partially true; I'd say it's more that parity was more needed for older systems. Newer memory is more reliable but also newer systems are more likely to run at the margin of reliable performance, due to increased speed, heat inside the box, and the overall lower quality of components used in many cheaper machines today.
  • "Parity errors cause the system to halt so they cause just as much data loss as unchecked memory errors, because you lose whatever you were working on when the system is halted": This is in my opinion the most valid reason for not using parity checking, but there is still one difference: at least you know you have a problem. You won't continue using a corrupted version of that big report your boss is waiting for. Also, this argument does not apply to ECC, which will correct the vast majority of errors seamlessly.
  • "Parity checking slows down the PC": This is a myth. Parity-checked memory is no slower than regular non-parity memory, although ECC is a bit slower. Read this section.
  • "Parity checking is unreliable because the parity checking circuit could fail": This is a bogus argument, for two reasons. First, the parity checking circuit is built into other components that are far more complicated than it is; parity checking is extremely simple logic that has been basically unchanged for 20 years. The chances of it failing in isolation from the rest of the motherboard are infinitesimally small. Second, arguing that using no protection is better than using protection that will almost always work, makes no sense. In a way, this is like arguing that having an emergency brake in your car is a bad idea because some day there is a remote chance that you might pull it and have it not work. Is it better to have a 99.999% chance of it working or a 0% chance of it working?
  • "Parity checking isn't worthwhile because it doesn't even detect double-bit errors": Somewhat surprisingly, I hear this one a lot. Surprisingly because it's so silly. First, single-bit errors are by far the most common problem. Second, virtually every Pentium-class or later PC today that supports parity checking also supports ECC, which will detect double-bit errors. Finally, again, it does not make sense to discard protection against something relatively common (single-bit errors) just because it doesn't protect against something relatively rare (double-bit errors).

So where does this leave you? Well, you must decide what is important to you. If you are running a 50-user server, or working on a million-dollar project plan, saving a few bucks using non-parity memory is insane. If you are trying to put together a bargain machine for running games and doing light word processing, the situation is rather different. Still, I read all the time about people setting up file servers on overclocked PCs with non-parity memory. Where exactly are the savings if someone's work is corrupted?

You must decide based on the information presented, whether going with non-parity memory makes sense for your situation. Just remember that having memory protection is kind of like having a fire detector. Most people will never need theirs, but the few that do will be very glad they had them when the time arises. I personally have had parity memory save me a lot of headaches on more than one occasion.

Next: False Parity Memory (a.k.a. "Logic Parity")

Home  -  Search  -  Topics  -  Up

The PC Guide (http://www.PCGuide.com)
Site Version: 2.2.0 - Version Date: April 17, 2001
Copyright 1997-2004 Charles M. Kozierok. All Rights Reserved.

Not responsible for any loss resulting from the use of this site.
Please read the Site Guide before using this material.
Custom Search