Memory is important part of a present PC's performance. Much news has been made about "dual channel", "low latency", and other buzzwords. Many people out there do not rather understand what they mean, or how they affect performance. This explanation is not to confuse electrical engineers, but it is a hard topic to bring down to a high school level. Consecutively to do that I am skipping on some of technical language, and I will attempt to use common terms as much as possible.
Memory Basics
"What IS memory, and what does it do?" This is a usual question from somebody who actually never has opened their case, and just looks at the 512MB rating, or DDR 400 one that sold them on their current PC to decide that it's good. I know that even more people than that don't really know what it does, they just don't ask. Well, here it is.
The Random Access Memory or RAM that you plug into your main board is the most popular memory. This performs as a high speed buffer for active programs that are being utilized by CPU, so that you have an intermediary between the very slow hard disk drives, and full speed cache and registers inside the processor itself. Programs, and all the data that they need to read and write to, cannot be stored fully in changing amounts of onboard cache in a processor. This is due to cost and size restrictions, and that is why hierarchy is present in storage systems. Registers, cache, and RAM also are volatile, in that once the electricity that drives them is eliminated, so too is the data that they had stored. Hard drives are a permanent storage solution, sadly as they are a mechanical device, their access and transfer times are really slower than their electrical counterparts. Now, when a CPU operates, it reads an instruction pointed to by program counter, decodes the instruction, and does an operation, then reads next instruction. Repeatedly, this breaks down just to:
----->Read instruction
----->Recover data A
----->Recover data B
----->Add B to A
----->Store A to C
See how much of that deal with reads and writes? What would be most efficient is to have instruction, data A, B and C in cache. Though, those do have to come from wherever, as nothing can permanently be stored in cache, nor can it hold ALL the data necessary for operating PC. Main memory is big and hard drive space much larger still. So CPU searches first its side area, the cache. If there is a "hit", then data is directly sent to register where it can execute the add. If a "miss" happens, then it has to move to next biggest space. Now RAM comes in. If your application is loaded in ram, a read happens, and it's transported to cache, and from there into an internal register. If a "miss" is recorded again, then it has to search your hard drive, and even more time is lost earlier than instruction can be finished. This is a basic overview of how a CPU accesses data, and how your memory fits in to that picture.
Next question is "how does data get from memory to the CPU?" The answer is Busses. A bus is a set of data lines, each one capable of sending one bit (a 1 or a 0) in one direction at a time. The bus itself is able of sending one "word", a mixture of bits into a recognized whole. The speed of that interconnect is where your 800MHz and such numbers come into play. That means speed at which data is able of being sent along bus from memory chip to north bridge memory controller. Busses are highways in one direction, and have one "car" or word, on them. They got all over in PC; the possibly being Front Side Bus. The next path the data takes after leaving North Bridge. This interconnects carries data right into CPU's cache, from which it can take other bus into processors execution units.
Here explained what DDR means and how it compares to SDR. It's apparent, but it little more difficult. Generally, a "clock" drives rate of transfer of information in an SDRAM module. That clock is just a voltage signal that goes from 0 (ground) to signal voltage on a set frequency. That frequency is speed at which module is running at. On increasing edge, data can be sent in or out, and then module waits for the next increasing edge before repeating the process. In a DDR, data is sent or received on both the increasing AND the falling edges of clock. So capability to send "double" amount of data.
The next issue is "How is memory addressed?" This is rather easy. Consider matrix, a set of rows and columns. Each cell having a 1 or 0 is given by a place that is junction of a particular row and column, within a certain "bank". The older i845 Brookdale chipsets only had 4 banks, and could only address 2GB of memory. New Springdale and Canterwood chipsets are able of addressing 8 banks, with a total of 4GB's of memory. How a bank is defined is mainly by memory utilized. Generally modules are "double sided". Thus in a Brookdale, you have one double sided module and two single sided modules, one, two, three or four single sided modules, or two double sided ones. With an i865/i875 based chipset, the mixtures are much big, particularly relating to use of double sided modules.
Finally, "what do all these buzzwords imply? Latency, bandwidth? Those are advanced topics.



Reply With Quote
Bookmarks