EOS memory (Error correcting code-On-Single in-line memory modules memory) is a type of Random Access Memory (RAM) computer memory module that contains a built-in error checking device. This is a bit like having another tiny processor located on the RAM chips themselves, whose only responsibly is ensuring the integrity of the data moving to and from the computer's RAM memory. EOS memory functions by calculating a checksum for each bit of data in memory. Comparing the known valid checksum against the checksum when data is leaving the EOS memory allows the memory modules to know whether data has been corrupted.
The focal point for understanding how EOS memory functions is the checksum. The checksum is either a seven-bit — for 32-bit data paths — or an eight-bit — for 64-bit data paths — validation sequence, generated by the EOS memory when data is first received in memory. It is generated based on the binary sequence in the bytes of the data, creating a unique sequence of characters to represent that specific piece of data.
As long as the data resides in the EOS memory, the checksum value is stored alongside it. The EOS memory holds it there until the data is called for by a program or the operating system. At that point, it regenerates the checksum based on the stored information, comparing it against the known valid checksum. If the two values match, the memory module knows that the data has not been corrupted during storage. But if they do not, the memory module knows that something has happened to the data.
If the data in the memory module has been corrupted — in other words, if the checksums no longer match — the memory module can attempt to correct the data on its own. EOS memory is capable of self-correcting errors of no more than one bit per word. While it can detect errors greater than a single bit, it cannot correct them on its own; in that case, an error message is typically generated, stating that the data is corrupt and alerting the computer's user to a possible problem with either the hardware or software in the system.
The primary downside to using this type of memory is that storing the checksum value requires a bit of additional overhead in the memory module. This means that when storing, for example, one megabyte of data in RAM, the computer is actually storing one megabyte plus the checksum value. Although this has a minimal impact in most circumstances, it means that with each new bit of data--and each new checksum stored--, the amount of available RAM is being slowly cannibalized by the error-checking mechanism.