Ram 101

Status
Not open for further replies.

Praetor

Administrator
Staff member
Definitions Part 01

Section 1 -- Definitions
RAM. Random-access-memory (the single term 'memory' also refers to RAM); RAM is available to a system in order for the operating system and various applications to store data temporarily. There are various different incarnations of 'RAM' which can be somewhat grouped together either by speed or by the inclusion (or omission) of certain functions and capabilities. Data stored in RAM/memory is only available until the system is powered down (at which point all the memory is flushed).

Yes there are types of memory that do not lose their data upon losing power and these are generally classed under NVRAM (NV for non-volatile); for the remainder of this document the terms "RAM", "system memory" and "main memory" will not refer to this type of memory; that is, whenever NVRAM needs to be discussed it will be explicitly noted as such.

Memory Clock Speed. Memory is a clock-driven "thing" (be it a device or interface) and all operations are initiated with respect to a "clock" (a device present on the motherboard called a clock-generator provides the clock). Since all operates occur with respect to the clock, increasing the clock speed of the memory will undoubtably increase it's performance (albeit at a cost of stability/reliability).

SRAM, DRAM and SDRAM. Static-RAM (SRAM) is RAM "the way it was meant to be": very fast and doesnt require 'reminding'. In techie terms this means that SRAM, being a transister based design, does not require constant refreshing (which wastes time) and furthermore, this feature of not-having-to-be-constantly-updated makes it, by nature more stable. The downside of SRAM is that it is extremely expensive and not very space-efficient. Dynamic-RAM (DRAM) was introduced as a technology to deal with this: the use of capacitors provides for a very space- and cost-effective method of creating 'memory' however at a cost of constant refreshing (without which the data would be destroyed). DRAM is mostly implemented as system memory where "general purpose speed" is required (even though this speed is several orders of manitude faster than the interface it was designed to supplement, the harddrive) and SRAM is used in small amounts to operate as a very high speed temporary storage interface for various devices.. Noting that DRAM is very slow, SDRAM was introduced: SDRAM or synchronous-DRAM improves and differs from DRAM by providing two things:
  1. It operates on it's own clock and as such we can pair a relatively slow system clock (say, on a budget machine) with a slightly faster memory clock in order to provide performance jumps at minimal cost, The other advanatage is that we can now run the memory clock and the 'main' clock at different speeds in order to facilitage certain requirements/demands
  2. Burst operations (see definition) are now supported which help to mitigate the effects of delays introduced by latencies and timings

Burst. It is logical to assume that if the CPU requires data from location X in memory, it is highly likely that data from location X+1, X+2 and so on is also desireable and so to save time (by reducing the number of commands tossed around), the memory, when asked for data, will provide the contents of the next four or eight locations automatically. This ingeniuos design decision is known as "burst mode"

Timings, Latency. From the basic design nature of memory, it (the memory) cannot be accessed "right away" (think of a library: you may know exactly what the call-number for a book may be however you cant just walk in pooof have the book, gotta find or at least, get to the book). Everytime a [major] operative command is sent to memory there is a delay required before it can be completely processed and collectively these delays are known as timings or latencies and they are measured in clock cycles. While there are about a dozen or two timings related to memory, only a few are significant enough to mention (and they are dealt with in VFAQ Section). In general, the lower the timings, the better performance.

Continue to Part 02 ...
 
Last edited:

Praetor

Administrator
Staff member
Definitions Part 02

DDR, SDR, DDR2, GDDR etc.
  • SDRAM is a very old design and by modern standards, very slow; commands/responses are done with respect to the rising edge of a clock signal and as such the full designation for this classic architecture is SDR SDRAM for single-data-rate-SDRAM. It doesnt take much to see that by limiting operations exclusively to one side of a clock signal is wasteful (it wasnt required nor noticeable back in the day) and as such, by processing commands on the falling edge provides a significant improvement to performance without all that much complexity: this improved memory design is known as DDR SDRAM for double-data-rate-SDRAM. On it's own, "SDRAM" implies SDR SDRAM and by a similar token, "DDR" implies DDR SDRAM. Differentiating between the two is fairly simple: SDRAM is a 168 pin interface with two notches, DDR memory uses a is a 184 pin interface with a single notch.
  • When talking about clock-speeds, "DDR" can refer to the process of "double-data-rate" (which is available to other things than just the memory). To limit confusion, for the remainder of this guide when using this second interpretation it will be in the form of DDR### denoting the doubled-clockspeed.
  • With CPU clock speeds going through the roof, even the venerable DDR memory is beginning to show signs of becomming a bottleneck, As such, DDR2 was developed with the goal of allowing for significantly improved memory speeds (at a cost of latencies, see VFAQ for more info). DDR2 uses a single notch 240 pin interface
  • The 'G' designation on GDDR (and GDDR2, GDDR3 etc) is there to note that the memoy used is specifically tailored to video cards (this is important because GDDR2 and DDR2 are not the same architecture).

Dual Channel. A popular buzzword, dual channel refers to the idea of running two memory controllers to feed data to the CPU thus providing a theoretical doubling of the throughput capacity (currently only available on select DDR and DDR2 configurations). The reasoning for this is simple:
  • DDR/DDR2 memory uses a 64bit interface to commuinicate with the memory controller. For 200MHz (DDR400) clock, the maximum throughput becomes 64bits x 200MHz x 2 ÷ 8bits/byte = 3200MB/s ~= 3.2GB/s (note here that MB is defined as 1-million)
  • The most straightforward way to improve performance (as demonstrated in the videocard market) is to double the memory interface to 128bits. Doing so would provide for 128bits x 200MHz x 2 ÷ 8bits/byte = 6400MB/s ~= 6.4GB/s of throughput. This however is too electrically complex to be implememented.
  • Now suppose we have two (or four) sticks of memory, each with it's own private connection to a memory controller (i.e., each stick or pair of sticks would have it's own 3.2GB/s connection to the memory controller). This would mean that the aggregate throughput is roughly 6.4GB/s. This is the principle behind dual-channel memory.
  • A comparison of single vs dual-channel memory is in VFAQ

RDRAM. This is an interesting (albeit virtually discontinued) memory architecture introduced by Rambus. Introduced in the era of classic SDRAM (that is, SDR memory), Rambus DRAM (RDRAM) operates on a smaller 16-18bit bus however it operates at significantly increased speeds (much like the principle behind SATA vs PATA). With an (initial) clock speed of 400MHz (DDR800) comapred to 100MHz (and lack of DDR) on the prevelent SDRAM of the time, RDRAM is definitively noted as the choice performance (albeit almost prohibitively expensive) memory of its time and is found on Intel Willimette based systems.

RDRAM is available a RDRAM and Concurrent RDRAM however due to (a) high cost of RDRAM (b) significantly reduced cost of DDR memory which offered passable/comparable performance at its introduction (and significantly improved performance now) and (c) Intel backing out of a deal with Rambus to make RDRAM the memory of choice for it's Pentium4 platform for the above reasons, RDRAM was a very shortlived novelty. Lastly, Rambus's attempts to sue the DDR Consortium because it (Rambus) thinks it has patent rights to DDR resulted in a backlash in the consumer industry and was viewed as a cry-baby move by Rambus. Recent incarnations of RDRAM (it just refuses to die) use a 32bit internal interface an offer DDR level performance however cost-effectiveness remains an issue

Looking at the available bandwidth [classic] Rambus memory has to offer 16bits x 400MHz x 2 ÷ 8bits/byte = 1600MB/s ~= 1.6GB/s. Later revisions of with 32bit interfaces offered 32bits x 600MHz x 2 ÷ 8bits/byte = 4800MB/s ~= 4.8GB/s). Comapred to the zero-point PC3200 systems, RDRAM still seems to be the performance oriented option. Those ideas should be quashed when noting that performance DDR memory can offer in the ballpark of 5.0GB/s and DDR2 in throwing range of 10.0GB/s.

SPD. This is 8bit the serial presence detect chip present on memory and acts very much like an information tag for that stick of memory and stores information such as default clock speed, default timings, manufacturer information, capacity information etc.

DIMM, SIMM, RIMM, SoDIMM. These referr to the physical package the memory conforms to.
  • SIMMs (Single In-line Memory Module) are a 32bit interfaced used to connect older [much] DRAM modules (and they are connected in pairs).
  • DIMMs (Dual In-line Memory Module) are a 64bit interface used to connect current-generation memory modules (essentially any non-Rambus memory marketed with a "PC#" designation).
  • RIMMS (Rambus In-line Memory Module) are a 16-32bit package used to connect Rambus memory
  • SODIMM (Small Outline In-line Memory Module) is a 64bit 144pin version of DIMMs used in laptops

Heatspreaders
Heatspreaders are essentially, a chunk of metal that is in contact with the memory stick to provide a greater surface area for dissipitating heat (much like a heatsink but heatspreaders seems to be a flashier word). When reality kicks in one is quick to note that (a) RAM doesnt give off enough heat to even be remotely in jeopardy -- yes even at 250MHz (b) the argument that if you OC your memory to like 300MHz and push 3.0v+ through it doesnt really hold because if you have memory that can handle that ... it coindicentally has a heatspreader (there arent really any modules that can do that kind of OC and not have heeatspreader)

ECC, Parity, Buffered, Registered Memory
  • Buffered memory refers to memory featuring a mechanism to redrive signals to and from the module (this means that the memory module can have more modules. This term mostly refers to FPM/EDO memory (i.e., very old). In a modern context buffered and registered memory refer to the same thing.
  • Registered memory is a type of buffered memory that has a register (much like a CPU register) which holds data for an extra cycle before passing it on to the rest of the memory. What this means is that all data being sent from the memory controller is received (i.e., the memory isnt 'rushed').
  • In a modern context, Buffered Memory is synonymous with Registered Memory
  • Parity memory used to refer to a type of memory that is able to detect odd-bit errors however it should be noted that parity memory does not have the ability to correct these errors. In a modern context, almost all RAM has some form of error detection capacity and it takes special RAM to be able to correct them
  • ECC or Error-Correcting-Code memory is a step up from parity memory in that it is able to correct (on the fly) errors found with memory transactions. You can telll a memory module has ECC capabilities by looking at it: while most DIMMs will have eight memory chips, an ECC capable stick will have nine
  • To explictly address two common misconceptions, ECC memory is not the same as parity memory (although many manufacturers usually 'affiliate' the two terms) and ECC memory does not have be buffered/registered although that is a very common occurance
  • What does this all mean? If you're looking to build a server system where data integrity is important, the best you can get is registered-ECC memory (second best would probably be registered-non-ECC memory since the odds of getting memory errors is slim as it is and the presence of the data registers helps to minimize that already small chance). If you're not looking for server memory, unbuffered-non-ECC is the way to go (best performance route)

Virtual, Physical Memory
Physical memory refers to the actual memory, physically installed in the computer (i.e., the memory modules). Virtual memory (aka swap, pagefile) refers to harddrive space set aside by the operating system to act like physical memory (so when the physical memory runs out ... i.e., gets full, the OS uses that harddrive space like memory).

SLI Memory
This is a term coined by nVidia. It is unrelated to Scalable Link Interface (making 2 or more video cards work together). SLI Memory is just like normal memory except it has an EPP (Enhanced Performance Profile) programmed into the SPD chip. For motherboards that support it, this profile can set things like more aggressive timings, higher clock speeds and voltage settings for the RAM.
 
Last edited by a moderator:

Praetor

Administrator
Staff member
Section 2 -- What to Look for When Buying Memory
Budget Machine
  • Generally shoot for PC3200 (even if your board supports only PC2700). The reasoning is (a) running budget PC3200 on a PC2700 board may allow for tighter timings and thus a wee bit more performance, (b) the price delta is not significant between one or two speed grades and (c) PC3200 allows for a bit more upgrading
  • There is almost no argument for buying anything faster than PC3200 memory for a budget system (unless the price delta is like $2 or something)
  • Heatspreaders are not required. There may be some exceptions but "budget memory" with heatspreaders means either (a) it's on sale or (b) it's not budget memory
  • Also don't bother buying "kits", it's just marketing and of not much use for a budget system
  • While a CAS Latency of 2.0 is nice, it's usually outside of the budget (or comes at a cost of capacity), look for CAS2.5 or CAS3.0 memory but go after the largest module you can afford first before you
  • Even though it should be obvious, I'll state it explicitly, don't buy Corsair XMS memory for a budget system

Server Machine
Naturally this really depends on the budget, capacity requirement and data integrity requirement and generally speaking, purchasing server memory favors "capacity and functionality over speed". For a 512MB module, the difference between registered+ECC and registered+nonECC is usually in the ballpark of $50 so for a server system that's not an unreasonable expense. Server mermory does generally require a case-by-case analysis though.

Stock Gaming Machine
  • CAS Latency of 2.0 is pretty much the de-facto standard. In fact a 2-2-2 standard is ideal however the other latencies dont play so much a factor as the CAS. Don't stress things too much if your budget can only accomodate CAS2.5 memory.
  • Again heatspreaders arent quite neccesary although generally gaming RAM will come with it
  • Since there's no OCing involved, PC3200 is the order of the day

Overclocked Gaming Machine
  • Stick to the big names: Corsair (XMS), Crucial (Ballistix), Geil (Ulta, Platinum, Golden Dragon), GSkill (Samsung TCCD), Kingston (HyperX), Mushkin (HiPerf, Level Two), OCz (Platinum, VX, EB, EL), PDP/Patriot (LL/XBL, Extreme Performance), PQi (Turbo)
  • There isnt much of a choice here with no-heatspreaders. Anything worth anything will have heatspreaders
  • Two producA few lines do stand out from the crowd however (and are readily available): the new OCz VX series, Corsair PC4400C25, Crucial Ballistix, GSkill 3200 UltraX, Kingston HyperX
 
Last edited:

Praetor

Administrator
Staff member
Very FAQ Part 01

Section 3 -- VFAQ
Memory Timings Examined
Timings are usually listed something like 2-2-2-6-1 or 1-6-2-2-2. What the numbers stand for are CAS-tRC-tRP-tRAS-CMD
  1. tRAS Active Precharge Delay, this is the delay between a command being received (from the memory controller) and firing up the RAS.
  2. tRP RAS Precharge. Memory is stored in a gridlike array and at the end of every row (memory is searched cell by cell), there is a delay associated with "moving to the next row".
  3. tRCD RAS to CAS Delay: memory is stored in a gridlike array and this latency represents the time that must pass between locating the row and then starting to look for the column.
  4. CAS. Column Acces Strobe, this number represents the number of cycles that must pass before the memory can locate the exact hex addresss of the memory cell required.
  5. CMD Command Rate is the delay time associated with locating which bank of memory to search through (this explains why having say, four DIMMs usually results in CMD-2T: a lot more virtual memory locations need to be searched through to translate to a physical location for further searching)
This page has a look at the advantages of tweaking each individual timing

64bit memory? Does this mean I need a 64bit processor?
Modern memory operates on a 64bit interface to the memory controller -- not neccesarily the CPU. So as long as your memory controller is a 64bit one (i.e.,. you have a motherboard featuring DIMM slots), you'll be fine.

Is CAS2.0 Really all that?
While CAS 2.0 is nice to have it doesnt present a world of performance change, often unnoticeable by end-users without the use of benchmarks and even then its usually a small change (and sure benchmarks are important ... but unless all you plan to do with the machine ever is to run benchmarks day and night....). From Corsair we have a comment:
Corsair said:
So, the bottom line is, moving from CAS-3 to CAS-2 will offer a percentage performance increase in the low single digits for most applications. Programs which are known to be memory intensive (you gamers might know of some...) will see the best improvement.

Overclocking: Clockspeed or Timings?
Overclockers have seemingly always been given the option of low-latencies or high-clock speeds .... so between the two, which is better? In my opinion, I'd favor the clockspeed -- provided the latencies arent stupidly high. Ironically, this also happens to be the approach taken by DDR2 as they are now closing in on DDR-level latencies but significantly improved clockspeeds). I think a fair general rule is "If you are going for low-clocked memory, grab the tightest timing you can however if you're looking for higher clocked memory, dont stress the timings so much" Techware Labs has done a decent review of timings vs clock speed.

Contrary to what Corsair says (below), with modern systems, it generally is a balancing act between low-latencies and high-bandwdith (in their defence, they made that statement several years before PC4400C25 ever came out)
Corsair said:
The other thing to keep in mind is that CAS-2 memory will run FASTER ( some review sites have taken it to 160MHz!) than CAS-3 memory. So, if you're thinking of overclocking your system (now or in the future), CAS-2 is your best bet for speed and stability.

See Section 5 -- Addendum for a comparison of latencies vs clockspeed in actual time.

Budget Memory for Overclocks?
Unless you are hunting down extreme overclocks (at which point you wouldnt have to be reading this thread), then dont discount value RAM. I've had some very nice overclocks with cheapo standard RAM and while it's not as easy, the bottom line is still the same as if I had bought pricey premium RAM.

What's Better: Brand X Product A or Brand Y Product B
Unless you're trying to do something like compare Corsair ValueSelect to OCz VX or something equally silly, the answer is "you probably wont notice the difference". One can argue that "benchmarks matter" ... and sure, let's go with that for a second: what to do? Logically to get the highest benchmark scores one would have to buy the best parts and OC the piss out of them. So far so good (assuming for sake of argument that money isnt an issue). Ok so we manage to find a review on "Brand X Product A" and it shows that it can overclock from 200Mhz to like 286MHz which (for the sake of the argument), is higher than everything else in that review. So we run out and buy this RAM, come home, install and try to overclock ... and surprise surprise we only get 252MHz....:D The point is, just because some review site managed to get a certain overclock and some benchmark number doesnt mean (a) everyone will nor does it mean (b) every single one of those products being reviewed will perform as the review found them to.

Can I install <typeX memory> with <typeY>?
The answer is generically "No" and applies to "DDR/SDR", "DDR2/DDR" and "Rambus/Non-Rambus". This rule applies whether you have two different types of memory slots on your motherboard or if you have a different type of memory than the slot. It also applies to mixing ECC/Registered memory with non-ECC/unbuffered memory.

Can I Run My Machine in Dual Channel?
Dual channel support is dictated by the chipset or in the case of some setups, the CPU

Intel
  • E7500, E7501, E7505, E7205, E7525, E7520, E7320
  • i875P, i865PE, i865P, i865GL, i865G, i915P, i915PL, i915G, i915GV, i910GL, 925XE, 925X, 945GZ, 945GT, 945PL, 945P, 945G, 946GZ, 946PL, 955X, Q963, P965, G965, Q965, 975X, all newer chipsets support dual channel.
  • PT894Pro, PT894, PT880Pro, PT880, PM880
  • SiS656, SiS655TX, SiS655FX, SiS655
  • ATI Radeon Xpress 200, ATI Radeon 9100IGP, ATI Radeon 9100IGP Pro, ATI RX330

AMD
  • KT880
  • K8T890, K8T800Pro
  • SiS756, SiS755FX,
  • AMD-8131, AMD-8132, AMD-8151
  • nForce
  • nForce Professional 2050, nForce Professional 2200MCP
  • nForce4SLI, nForce4Ultra, select nForce4 boards
  • nForce3Ultra
  • nForce2, nForce2 [MCP+IGP], nForce2 [MCP-T + SPP], nForce2Ultra400
  • nForce 415
  • ATI Radeon Xpress 200P, ATI Radeon Xpress 200
  • No Socket754 Processor can run Dual Chanell. All Socket939, 940, AM2, AM2+ and AM3 processors can

Continue to Part 2...
 
Last edited by a moderator:

Praetor

Administrator
Staff member
Very FAQ Part 02

Is Dual Channel Worth It? Will I Notice?
Dual Channel is a neato way of improving performance but that's really only for instances where it's really needed (see definition of Dual Channel). An easy example of where dual channel will give zero benifit is if the memory operations are exclusively within one of the channels (i.e., for small stuff). Even when you do stuff that dual channel has a benifit, the most you'll see is like 10% (less for AMD-Socket754 processors since they have an on-die memory controller which gives it the majority of it's gaming performance).

To avoid misinterpretation, what i mean is that "comparing a Dual Channel system to a Single Channel system will result in a performance delta of no more than 10% -- even less if we specifically choose a Socket754 processor since the impact of having an ondie memory controller is much more significant than the lack of dual channel"

Dual Channel Kit... What's That?
Memory manufacturers, jumping on the dual-channel buzzword are releasing ... "two sticks of memory in one box". That's essentially what Dual Channel kits are: when building a dual channel system, to use dual channel you'll have to have two (or four) sticks of memory so buying kits with two sticks of memory will save the number of boxes you'll have to open. Of course according to the manufacurers they say they test the two sticks together on a motherboard to see if they overclock and run stable (nothing about being able to run faster than if you bought two sticks separately yourself).

Unless you've got a lot of money to blow and want that "extra assurance", you're best off buying two sticks on their own: as long as they are the same specs you can dual channel it up :)

What Do I Need to Run Dual Channel?
  1. A dual channel capable motherboard/CPU
  2. Two or four sticks of identically spec'd memory (they dont need to be the same brand and make although that helps but they need to have the same clock and timings or be capable of the same clock and timings)
  3. See motherboard manual for how to install it but generally speaking the slots will be color coded: fill one color first before moving to the next

Can I Mix Between Memory Speeds?
There are some motherboards that are really finicky with their memory however in general if you mix two (compatible) memory modules (or more) they will all run at the speed of the slowest module so you'll be ok. This also applies to installing higher speed memory than the slot is rated for. Another option of course, is to overclock the modules so that, in effect, you force the slower module to run at the same speed as the faster module :)

DDR or DDR2?
If you're running a board where this is an option, the budget and bang-for-buck option is probably to go with DDR as the high performance DDR2 stuff is quite expensive. The gist of it is DDR2 features higher clocks but also at significantly increased latencies (with the exception of the really pricey stuff There are some good reviews to read about the progression of DDR2 vs DDR:

I have 4GB of RAM but Windows is showing less than 4GB. What's going on?
http://www.computerforum.com/150015-32bit-4gb-barrier-demystified-much-possible-pics.html
 
Last edited by a moderator:

Praetor

Administrator
Staff member
Section 5 -- Addendum
Number of Sticks?
Whether to get 1x1024 or 2x512 ... the choice is dependent on the platform. Assuming the sticks are all comparable, if you are using a dual-channel capable system the 2x512 allows the system to actually use the second memory controller so it would be adviseable there. If on the other hand you are using a single channel system (i.e., an older system or a S754 setup) then a 1x1024 will give you slightly (albeit almost nonnoticeable) performance improvement (because the command rate, CR, will be 1 instead of 2) and allows for future upgrading.

What Happens When I Run a System with 4 DIMMs Filled?
What happens when you have all 4 DIMMS populated with RAM? In many cases, your memory clock will drop to the second highest clock speed (provided the memory was able to run at the highest supported clock speed natively). Just look at any older motherboard manual for evidence of this.

With respect to the Athlon64 with on-die memory controlers, those running with "Venice/SanDiego" cores (or newer) will be able to run with all DIMM slots populated at the full speed. With the exception of Athlon64-based processors (i.e., on-die memory controllers), this isnt a concrete rule in that some memory controllers will only drop the speed depending on the type of DDR (and i would imagine DDR2) memory installed (i.e., double sided or single sided).

Generally double-sided (DS) memory is a bit more finicky than single-sided (SS) meaning DS memory will tend to downclock (i.e., 4 sticks of PC3200 will run at PC2700). How do servers, which require craploads of memory ... deal with this? They [generally] use something called Registered Memory which, to simply state, improves signal stability (thus allowing the memory to run at the higher clock)

Timings Examined in Actual Time
As RAM speeds increase so do the timings. DDR-400 can be readily found with a CAS latency of 2, and many DDR2 modules can run a CAS latency of 4 at DDR2-800. And now with the release of DDR3-1333, the common CAS latency is 9 (Kingston has released some that can run CAS7 at DDR3-1333). The question is, how much slower is it really? To answer it we will do some math:

First, a definition: Hertz - A measurement of frequency in cycles per second. One Hertz is one cycle per second.

With that in mind:
DDR-400 (or 200 MHz) completes 1 cycle in 5 nanoseconds.

To actually do the math:
1 second / 200,000,000 Hertz = 0.000000005 seconds / hertz (5 nanoseonds per cycle)

DDR2-800 (400 MHz) completes 1 cycle in 2.5ns.
DDR3-1333 (667MHz) completes 1 cycle in 1.5ns.

DDR-400 @ CAS2 the latency is 10ns.
DDR2-800 @ CAS4 the latency is still 10ns.
DDR3-1333 @ CAS9 is 13.5ns.
DDR3-1333 @ CAS7 is 10.5ns.

This is the same thing that happened with DDR2 when it was first released. The initial speeds have higher real/relative latencies but as it matures the relative latency and the real latency will come down as the clock speed can be raised high enough to cover the gap.
 
Last edited by a moderator:
Status
Not open for further replies.
Top