Questions tagged [ecc]

Error-correcting code, as in a type of memory that can correct single-bit errors. ECC memory is typically found on servers and workstations, where maximum reliability is required.

Information in modern computers is often stored in fixed quantities. E.g. eight bits may be stores as one byte.

Memory is reasonably stable and it is possible to just store the information as it is. However in rare cases the information becomes corrupted. In order to detect this corruption you need to store additional information.

This can be done by adding an extra bit, the so-called parity bit. This allows you to detect single bit errors. It does not detect double bit errors nor can you reconstruct the information lost.

This is not always good enough. In those cases ECC is used. ECC uses an intelligent method to store 8 bits of information in 10 bits (thus is needs more cells and is more expensive). This allows it to correct a single bit error or detect up to two bit errors.


A simplified explanation of how this worked taken from this post here on SU

Imagine a 0 or an 1. If I read either then I just have to hope I read the right thing. If a 0 got flipped to a 1 by some cosmic radiation or by a bad chip then I will never know.

In the past we tried to solve that with parity. Parity was adding a ninth bit per 8 bits stored. We checked how many zeros and how many 1 were in the byte. The ninth was set to make that an even number. (for even parity) If you ever read a byte and the number was wrong, then you knew something was wrong. You do not know which bit was wrong though.

ECC expanded on that. It uses 10 bits and a complex algorithm to discover when a single bit has flipped. It also knows what the original value was. A very simple way to explain how it does that would be this:

Replace all 0s with 000. Replace all 1s with 111.

Now you can read six combinations:

000
001
010
100
101
111

We are never 100% sure what was originally stored. If we read 000 then that might have been just the 000 which we were expecting, or all three bits might have flipped. The latter is very unlikely. Bits do not randomly flip, though it does happen. Let say that happens one in ten times for some easy calculations (reality is much less). That works out to the following chances of reading the correct value:

000 -> Either 000 (99.9% sure), or a triple flip (1/1000 chance)

001 -> We know something has gone wrong. But it either was 000 and one bit flipped (1:10 chance), or it was 111 and two bits have flipped (a 1:100 chance). So let's treat it as if we read 000 but log the error.

010 -> Same as above.

100 -> Same as above.

011 -> Same as above, but assuming it was a 111

101 -> Same as above, but assuming it was a 111

110 -> Same as above, but assuming it was a 111

111 -> Either 111 (99.9% sure), or a triple flip (1/1000 chance)
111 -> Either 000 (99.9% sure), or a triple flip (1/1000 chance)

ECCs does similar tricks but does it more efficiently. For 8 bits (one byte) they only use 10 bits to detect and correct.

88 questions
68
votes
6 answers

How do I tell if my Memory is ECC or Non-ECC?

I need to replace the memory in my system and I'm not quite sure how to determine if the memory is ECC or Non-ECC. How do I determine this?
James Mertz
  • 26,224
  • 41
  • 111
  • 163
63
votes
6 answers

What happened to ECC RAM?

A decade or two ago I could buy ECC (Error Correction Code) RAM for PCs I assembled. ECC RAM provided SEC-DED, I guess from bit flips caused by ionizing radiation (I don't know what else could cause transient bit errors to pop up in RAM or I/O…
feetwet
  • 1,451
  • 5
  • 18
  • 30
30
votes
3 answers

ECC registered vs ECC unbuffered

I would like to build a storage server (based on GNU/Linux or FreeBSD) which will be on all the time. To prevent data corruption (which is unlikely to happen as I never had such a problem, but better be safe than sorry) I would like to use ECC…
user51166
  • 698
  • 2
  • 8
  • 14
21
votes
4 answers

Is there a certain or measurable advantage to using ECC RAM in a desktop PC?

I fuss a lot over building stable machines -- in that I absolutely hate crashes, reboots, funny behaviour, etc. -- and so error-correcting a.k.a. ECC RAM would seem to solve a big problem: memory errors. But does it really work? Is there a…
Chris W. Rea
  • 10,740
  • 16
  • 76
  • 95
18
votes
1 answer

How to get ECSDA with p-256 and SHA256 in openSSL?

Apple requests to its APNS must use JWT (JSON Web Token) signed using a Elliptic Curve Digital Signature Algorithm aka ECSDA using a p-256 curve and a SHA256 hash. How can you sign with such params in openssl? openssl ecparam…
Nicolas Manzini
  • 335
  • 1
  • 3
  • 9
17
votes
5 answers

What exactly is the cause of RAM incompatibility?

I'm looking at rather short QVL lists from manufacturers, and I'm wondering what is the underlying cause of RAM incompatibility aside from the obvious: Obvious Reasons for Incompatibility RAM Generation (DDR, DDR2, DDR3, DDR4) Form Factor / pin…
Ehryk
  • 300
  • 2
  • 7
  • 19
14
votes
3 answers

Can I use non-ECC memory in a machine that already has some DDR2 ECC memory?

I have a developer workstation that has registered DDR2 ECC DIMMs already installed. I'm planning on getting some more RAM. Can I add memory modules that aren't ECC and/or registered? I mean, does the machine work with both ECC and non-ECC modules…
Kaitsu
  • 398
  • 1
  • 4
  • 6
13
votes
1 answer

get x and y components of ec public key using openssl

I am generating a KeyPair for ECC from curve 'secp128r1' using openssl Steps I followed : first I generated a private key using the command openssl ecparam -genkey -name secp128r1 -noout -out private.pem then i viewed the corresponding public…
Dhruv Agarwal
  • 131
  • 1
  • 4
11
votes
1 answer

Is ECC mandatory in SSD technology?

While shopping for an SSD I have noticed that some manufacturers promote their "Pro" models as the ones sporting ECC data protection. Those manufacturers do not mention ECC in their budget models descriptions. However, Wikipedia article on flash…
10
votes
2 answers

How can I use GnuPG with ECDSA keys?

I'd like to generate an ECDSA (rather than RSA, DSA, or ElGamal) key using GnuPG, and use it as I might otherwise use an OpenPGP-compatible master key. I've read that gpg2has support for ECDSA keys, but I haven't been able to use that functionality.…
flamsmark
  • 249
  • 1
  • 2
  • 5
9
votes
1 answer

How come bit flips aren't destroying my computer?

Tech YouTuber ThioJoe made a video about ECC memory, in which he explained how bits in memory can randomly change and can lead to data corruption if you don't have ECC memory. Here's what an article says about random bit errors: "So the probability…
clickbait
  • 930
  • 3
  • 11
  • 24
4
votes
2 answers

Why am I seeing Zero errors in non-ECC RAM?

According to sources, memory errors are a very probable event: Some say the probability of a DRAM error is 95% in just 3 days of operation of a computer with just 4 GB of RAM, others say 32% of servers experience at least one error in a month with…
4
votes
3 answers

Can I use Unbuffered ECC memory with a non-ECC CPU?

I recently purchased the Supermicro X9SCL-F with a Core i5-3350P. I realize that the 3350P does not support ECC, and the motherboard requires unbuffered ECC memory. I do not need ECC. Will unbuffered ECC memory work at all with the 3350P?
4
votes
1 answer

Can registered ECC memory go into a desktop mother board?

Can registered ECC memory typically go into a desktop mother board? I don't really need ECC RAM, but the reason for asking is that I'm looking at a mother board that has 4 memory slots and supports up to 64gb of memory. This means that in order to…
Chris Dutrow
  • 400
  • 1
  • 7
  • 21
4
votes
3 answers

Xeons with IMC (Integrated Memory Controller) -- does ECC support depend on the chipset also?

Intel has released Ivy Bridge Xeon processors with PCIe 3.0, ECC, and VT-d support. However, there aren't yet any PCIe 3.0 + USB 3.0 C21x (Panther Point) boards available, while B75 and Z77 desktop motherboards are widely available with a huge…
Ben Voigt
  • 7,204
  • 3
  • 37
  • 58
1
2 3 4 5 6