Our PC memory can hold a number of interesting characteristics. In this video, you’ll learn parity memory, ECC memory, registered memory, multi-channel memory, and single- and double-sided memory.
The memory that’s inside of our computers is not infallible. You can have electrical hiccups, there could be memory that is not seated properly, or there just might be bad connections for the memory that’s inside of your system, and occasionally there might be a bit that accidentally gets flipped from a one to a zero, or vice versa. If you have a critical computer system, however, you really can’t afford to have memory that might be changing some of the values as it’s going through the computer, regardless of how rare that might be. So your virtual machines, you might have database servers, or web servers, or systems that are required to be up and running all the time.
Because of that, we have a type of memory that’s able to check itself. One of these types is called parity memory, where it adds an additional parity bit to the information that’s associated with a byte that’s going through your computer. Parity memory is great, but it won’t find every possible scenario. For example, if your memory becomes corrupted in a way that the parity is still correct, then it’s not going to notice that there is anything wrong with the information that’s inside of that memory. And parity memory is not designed to actually correct anything. It can only inform you that a problem has occurred with your memory.
A type of memory that is able to make a correction is called error correcting code memory, or ECC memory. This is not only identifying that there has been an error with the memory of your computer, but it’s able to correct that memory on the fly. Not all of your computers are using ECC memory. In fact, very few of your computers are probably using memory that is ECC memory.
The ECC memory’s a bit more expensive, and it’s really designed for those enterprise type systems. So a very large server may have a motherboard that requires ECC memory. In fact, it won’t work unless you install ECC memory into that device. It’s sometimes difficult to tell, though, because the memory looks identical to non-ECC memory, so make sure you keep your memory modules together with the documentation that came with them, so you’ll know exactly what memory type you’re working with.
A lot of people have asked me what this parity bit really means. So I created this diagram to show how parity works inside of our computer. These parity bits inside memory are usually even parity. That means that the parity bit is making an even number across all of these bits that are inside of our systems. Let’s take an example. For instance, this first bite that we have at the top, and a byte is these eight bits. So with these bits, one through eight are 1, 1, 1, 0, 0, 1, 1, 1. The way that parity works is it will examine how many ones happen to be in that byte. So there’s 1, 2, 3, 4, 5, 6. And since that number is an even number, the six value is even, we don’t need another one associated with that. So the parity bit is going to be zero.
Let’s look at the next byte. We have 0, 0, 0, 0, 0, 0, 1, 0. Well we can see we only have a single one. So this is currently odd number of ones, so to make this an even number of ones, our parity bit would now be a one. And that’s how we’re able to determine whether the parity inside of this particular byte is correct.
Let’s do the last byte. We have 1, 0, 0, 1, 1, 0, 0, 0. If we count the number of ones, we have 1, 2, 3 ones. That is an odd number. So we know that we need to add an additional one for this entire string, that makes this an even parity.
So now that you have this parity bit associated with this data, how do you determine if anything has gone wrong with the particular memory byte. Well let’s have a look, for instance, at these examples. As you can see, we have a byte and a parity bit associated with it. So let’s do our calculation again. Let’s count the number of ones inside of this byte.
We have 0, 0, 0, 0, 0, 1, 1, 1. There’s three bits, and a single parity bit was added to make this an even number. And since we have even parity, that particular piece of memory is exactly correct.
Let’s do the next one. 0, 0, 0, 0, 0, 0, 1, 0 with a parity bit of zero. And if we’re evaluating that, you can see that we have an odd number of ones, which means something has gone wrong with this memory, because our parity bit was zero and we have an odd number of ones. We know that something went wrong with that section of memory.
And let’s do one more. 0, 1, 1, 0, 0, 1, 0, 0 with a parity bit of one. And if we count the number of ones, we have 1, 2, 3, 4 ones which is an even number. So we know that piece of information in memory is absolutely correct.
Another memory characteristic you may run into is memory that’s described as registered memory. This is memory that has a buffer inside of the memory. There is an additional register inside of the memory. And there’s a buffer between the memory itself and the memory controller. You’ll see this sometimes referred to as buffered memory, because that really is describing what’s going on. This is obviously one that’s used on very high end systems. So you’ll see this on servers, on systems that need a stable operating environment. You will rarely find registered memory requirements on a machine that’s simply a laptop or a desktop computer.
You can sometimes identify visually when you’re using a registered memory, because there may be additional chips right in the middle that’s used as the buffer itself. In this case, this particular memory has a sticker on it that shows the type of model. And you can see this is a 512 megabyte memory. It’s DDR memory running at 333 megahertz. It has a CL value of 2.5. This is ECC memory, so this is error correcting memory, but it is also registered memory. You can see the REG that’s right there. And these things can be used together. You can have ECC memory that is not registered, and you can have non-ECC memory that is registered. But it’s very common to see ECC memory and registered memory being used together in this way, especially if it’s going to be used on a high end system.
If you’re putting memory inside of your computer, you may want to see if your motherboard supports multichannel memory. This is where we can install memory in pairs or in trios, and it maximizes the throughput of that memory in and out of those memory modules. And this may be important, especially if you’re doing some high performance computing. You’re going to want to have the fastest possible throughput by simply adding the proper number of modules onto your motherboard. These memory combinations should also match. You should ideally have exactly the same memory types that will be used in these different channels of memory. You’ll often see that the memory module channels are also colored. So you would put the same type of memory modules in for each of the colors.
In this example, this is a motherboard I have that is a dual channel motherboard. And you can see that you would put one of the memory modules in black, and the other part of the dual channel would be in the other black module. So if I wanted to maximize the throughput in and out of memory on my motherboard, and I only had two memory modules, I would make sure that they are installed into the two memory module slots that are colored exactly the same.
One characteristic of memory is whether it is single-sided or double-sided memory. And there are unfortunately a couple of ways that this can be interpreted. One is very literally. You can have a memory module that only has chips on one side of the module, and no chips on the other. So in that case, it would be a single-sided memory module. But some memory modules will have memory chips on both sides of the physical module, and some people will refer to that as double-sided memory.
But there’s another way to interpret single-sided versus double-sided memory that really doesn’t describe the physical package of the memory itself. In this case we’re really referring to the ranks of memory. Ranks is how we separate memory on a single module so that they can be accessed with the memory controller. Sometimes these separate ranks are called sides. So you might have a single-sided or double-sided memory referring to a single rank or a double rank on a memory. These would really be separated out into two different pieces. This, for instance, might be a memory module with two ranks, and you could easily describe that also as two sides.
So you really have to ask a person who’s talked to you about single-sided and double-sided memory of what they’re referring to. Are they referring to the physical package of the memory on the memory module, or are they referring to the ranks of memory as it’s accessed by the memory controller?
If you’re looking to upgrade the memory inside of your computer or install some onto a new computer build, you may go online and see what’s available. And then you can very quickly see there are many different kinds of memory specifications. Memory has a very tight tolerance. You need exactly the right memory for your motherboard, so your first stop should be your motherboard documentation. This will be the absolute authority to determine what type of memory you need to purchase for your motherboard.
If I look at the manual I have for my motherboard, I can see that mine says four X DIMM, which means there are four DIMM slots in my motherboard. It will take a maximum of 32 gigabytes of memory. It is expecting DDR3 1600 slash 1333 megahertz. So I can get either speed of memory to go inside of my motherboard. And it’s requiring non-ECC, so it’s non error correcting code memory. And it is unbuffered memory, or non-registered memory modules. I have to make sure I get exactly this specification so that it will work properly when I install it into my motherboard.
Fortunately, a lot of the sites where you can purchase memory online will also have online guides. So you can put into their website the make and the model of your computer, and it will give you a number of options that are available. And you can then cross-reference the options that they are telling you against what you see on your motherboard documentation and make sure that they sync up. If you look at the search results online, you may find that you have many different options available.
Even for my motherboard, I could put DDR3 1600 memory, or I can put DDR3 1333 memory. So it’s different speeds available. Of course, the 1600 memory is faster, and it’s probably going to be more expensive, but if all I need is a system that is performing simple web browsing, maybe I can save a few dollars and get the slower memory, but still be able to have a memory upgrade and capacity that I’m looking for.