MRM's Performance | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
You use it everyday, you read from it...and you write to it, you know that the more of it you have the better your system is...but you never fully understood why. No, I'm not talking about hard disk space...although it is a type of storage, I'm talking about the one, the only, the great Random Access Memory...otherwise known as RAM or Memory. Special thanks goes out to David Marks for completing this RAM Guide, feel free to email him with any questions, comments, or praise as he did much for this guide. BEDO DRAM | DRAM | ECC | EDO DRAM | EEPROM | EPROM | Flash
Memory | MDRAM | Parity RAM
How much is that Megabyte in the Window? RAM, at least for now, is sold by the Megabyte...but how much space are you REALLY getting? And why is it that when you have 16MB of RAM your BIOS reports a number with a 15 in front of it? Lets take a look at what a Megabyte is. In computer science, a bit is the amount of space necessary to account for a single comparison's outcome. Confused? A bit is the amount of space needed to store one digit in a binary number system (see Binary Number System), a 1 or a 0. A byte then is a combination of 8 bits, or 8 1's and 0's (i.e. 10010010). A megabyte, is the most misunderstood measurement of storage. A kilobyte is in fact, 210 bytes, or 1024 bytes. In that case, a Kilobit (not a kilobyte) is 1/8 of a kilobyte (8 bits in a byte) or 128 bytes. Meaning that a megabyte, is 210 kilobytes, or 1024 kilobytes (KB), a megabyte is NOT 1000 kilobytes, although it is often easier to call it that. In turn, a megabit is equal to 1/8 of a megabyte, or 128 kilobytes (KB). Therefore, as you might expect, a gigabyte is equal to 210 megabytes, or 1024 megabytes. Therefore a gigabit is 1/8 of a gigabyte, or 128 megabytes (MB). Now until sometime next year, we'll be dealing with RAM in terms of Megabytes and every now and then in Kilobytes, NOT Gigabytes. So now why is it that some programs say you only have 15744KB of RAM, when you should have 16384KB (16MB x 1024KB = 16834KB)? In order to understand that we have to look at the history of the PC. A now very famous man was once quoted as saying "I can't imagine anyone ever using more than 640K of RAM..." Ring any bells? It should...that quote was made by none other than the CEO of Microsoft, Bill Gates. Let me give you a scenario: You just got your high powered system up and running, you boot up Win95, with 32MB of RAM you feel prepared to run anything you could possibly want to. You quickly open 5 or 6 applications then, feeling lucky open another one, an old Sierra game from your 386 days...but to you're amazement you can't run it. Not enough memory?!?! You hurriedly close all of your instances of Netscape and Internet Explorer...to try again, same error! You reboot...same error! What is causing this? No, its not that 32MB of RAM isn't enough...you're merely battling with the 640KB bottleneck that was bestowed on us back when the PC was first being developed. You're not out of system memory, you're simply out of conventional memory. Conventional memory, is non-upgradable memory, which is the very first 640KB of your system RAM. Since this bottleneck was first realized in a real world situation, there have been work-arounds programmers use, however there was a time where all systems were equal in that you had 640KB of Conventional memory to work with...and that was it. As I mentioned before, some programs are designed to use Extended Memory, or all of the RAM above the first 640KB. In cases like that, the program you're running may or may not consider the first 640KB (Conventional Memory) part of its allocated memory space, so therefore subtracts it from your total system RAM. Show me the Money...or should I say "Cache" Cache Memory, pronounced like Cash, is an ultra-fast type of RAM (Random Access Memory) which can quickly store and retrieve data. It is because of the Cache on your processor and on your motherboard that you experience the true performance of your system, just another reason to believe that your $500 processor isn't all that its cracked up to be without some relatively inexpensive modules =) The best way to explain Cache Memory would be from the point of view of a person that uses and addresses them every day of his/her life, a programmer (Courtesy of Avinash Baliga of Vzzrzzn's Programming Homepage). There are currently two types of caches, L1 (level 1) and L2 (guess...). The L1 cache is built into the processor, so there are no bus-lines to go through; the L2 cache is an external piece, although on some of the newer processors like the Pentium Pro, Pentium II, and DEC Alpha it is also integrated onto the processor (or the processor card in the case of the Pentium II). As you might be able to guess an integrated L2 cache means faster performance, due to the absence of bus-lines (see Bus) like the L1 cache and also operates at or near the clock speed of the processor. The cache is a layer between system RAM and your processor. Think of it like a salesperson in a department store. If there is a model on the shelf then it will be handed to you with little hassle; but if the shelf is empty then they will have to go to the storage area. Well the cache keeps track of the most recently used memory addresses (locations) within it and the values they contain. When the processor requests an access to memory (trust me, it will) then that address and value must be in the cache. If it is not, then the cache will load that value from memory, and replace some previously cached memory address with this new one (if necessary). If a program is not optimized to take advantage of the cache's ability to make repeated access to the same address, then severe performance hits result. For instance, to speed itself up, the L1 cache on the Pentium loads strips of 32 bytes at a time from the L2 cache. If the address the program is looking for is not in the L1 cache, approximately 75 nanoseconds will be wasted on a P200. If this value is not in the L2 cache either, then an additional 1.5 to 2.5 microseconds will be wasted in "cache thrashing". All this for one add instruction that uses a seldom-used RAM location! Think about the number of adds, subtracts, and moves that are done in code. Microseconds are certainly an insignificant measure of time for you and me, but now think about whether your 50ns EDO RAM or your 10ns SDRAM is performing up to par! It is for those reasons that when you exceed your cacheable area by using more System RAM (i.e. using 128MB of RAM on a chipset that can only cache 64MB) you experience a noticeable loss of performance. Ouch...look at all of those pins! Back in the early days of the Intel 386 processor a number of firsts were made, Intel released their first 32 bit processor (yes the 386 was a 32bit processor) and motherboard manufacturers started experimenting with different types of memory technology...the result? The Single In-Line Memory Module, or SIMM for short. Since SIMMs became popular a variety of styles, sizes and speeds have been released. The most popular with the 386 was the classic 30-pin SIMM, at first only available in a 8/9chip version (the 9 chip version being a Parity version) and later in a 2/3 chip version (the 3 chip version being a Parity version). Below you can see the physical differences between a 9 and a 3 chip 30-pin SIMM, as well as the markings on the individual chips. Although they lasted until late in the 486 days, the 30-pin SIMMs quickly became obsolete, mainly due to their 16 bit bandwidth. With the Pentium and its advanced 64 bit bus on the way, and the 32 bit 486 taking control of the market a new solution was necessary, therefore the 72 pin SIMM was created. Boasting twice the bandwidth of a 32 pin SIMM, the 72 pin SIMM could be easily used in single modules with any 32 bit processor/bus. Also with the 72 pin SIMM emerged Extended Data Out or EDO SIMMs which became quite popular with the Pentium and Pentium Pro class machines (and now Pentium II systems). As you can tell a 72 pin SIMM is about 0.75" longer than a standard 30 pin SIMM, and like a 30 pin SIMM can only be installed one way (courtesy of the tiny notch at the left side of the SIMM). However, with Pentium and Pentium Pro/II systems, due to their 64 bit wide bus, the 32 bit wide 72 pin SIMMs must be installed in pairs, therefore somewhat limiting memory expansion. The market's solution? The Dual In-Line Memory Module, or DIMM. The DIMM is, as the name implies, basically a double sided SIMM. Not double sided in that both sides of the DIMM have chips on them, but double sided in that there are pin contacts on both sides of the connector. Much like SIMMs, DIMMs can be found in a variety of sizes, the most common being 72 pin DIMMs (36 pins per side, very small, used in laptops), 144 pin DIMMs (72 pins per side), and the now standard 168 pin DIMMs (84 pins per side, used in desktop systems). Below you can see an illustration of a 168-pin SDRAM DIMM. The 168 pin DIMM is a full inch longer than a 72 pin SIMM, and unlike most normal SIMMs isn't meant to be installed at a 45 degree angle. You simply push it into the DIMM Socket at a 90 degree angle and snap the two opposite levers into the notches on the DIMM (shown at the left and right of the module by a semi-circle). As I mentioned before, DIMMs are found only in Pentium and Pentium Pro/II class systems and do not need to be installed in pairs to function properly since they have a 64 bit wide data path which is perfectly paired with the 64 bit bus of the Pentium and Pentium Pro/II systems today. It is very obvious that DIMMs are the future, it will just be a little while until they become more mainstream. When dealing with the "packaging" RAM comes in, you also must consider single and double sided modules, sometimes referred to as single and double RAS SIMMs/DIMMs. Here is a small chart which illustrates chip sizes, and memory configurations:
How do you calculate memory sizes? Lets take a 4MB 32 bit 72 pin SIMM for example, 1 x 32, or 1MB x 32 bits. If you divide the 32 bits by 8 you get a total of 4 bytes (8 bits in a byte, see Bits, Bytes, and Transfer Rates). Therefore 1MB x 4 = 4MB. The same applies for 64 bit DIMMS, you take a 8MB 64 bit 168 pin DIMM, 1 x 64, or 1MB x 64 bits. And if you divide the 64 bits by 8 you get a total of 8 bytes (8 bits in a byte, see Bits, Bytes, and Transfer Rates), therefore 1MB x 8 = 8MB or an 8MB DIMM. When dealing with SIMMs you usually want to avoid modules with over 24 chips, as most motherboards haven't been tested with them and you may experience system instability as a result. Be sure to ask your salesman how many chips will be on your modules before ordering! So What's in Style? Aside from sizes, there are many different "styles" of RAM, classified according to their mode of data transfer. A few years ago, the most common type of RAM was called Fast Page Mode or FPM DRAM. We have come to refer to FPM RAM as "normal" or "non-EDO" DRAM. FPM DRAM gets its name, from the mode by which it transfers data, via a type of transfer style called Fast Paging. For most users, FPM DRAM was sufficient, and it pushed the access time down to an amazing 60ns! Although, Fast Page Mode DRAM was more than enough for the 486 class of systems, Pentium users demanded more. Once again the market responded by implementing a new type of transfer technology, called Extended Data Out Transfer Mode, or EDO for short. EDO has been popular ever since it was first introduced, mainly because of its superb performance and relatively low cost however its compatibility with nearly every system made it a very popular choice among new system builders. The highest quality EDO DRAM pushed the access time barrier down to 45ns, and thoroughly satisfied Pentium as well as Pentium Pro/II users. An even faster type of EDO DRAM was developed originally for use with the Intel 82430HX chipset, which was Intel's first chipset to support it. That type of DRAM boasted greater performance than EDO, mainly because it could transfer in bursts, much like cache, hence the name Burst Extended Data Out DRAM or BEDO DRAM. So why are we moving away from EDO and BEDO? With higher clock speeds, we require higher memory bus speeds to compensate, otherwise we would have extremely high clock multipliers with our bus speeds holding us back. Officially, EDO and BEDO DRAM is only spec'd for Bus Speeds up to 66MHz, however people have been able to use the 75 and 83.3MHz bus speeds successfully with EDO DRAM, so a faster type of RAM is still not "required" but one would be nice...that's why SDRAM was created. SDRAM, short for Synchronous transfer Dynamic Random Access Memory, transfers data synchronously instead of the old asynchronous methods used with FPM, EDO, and BEDO. Although SDRAM pushed the access times down to a meager 10ns (!!!) lack of proper support by a chipset caused it to perform only a tad better than EDO. The only reason people have for purchasing SDRAM over EDO is that SDRAM is spec'd for bus speeds up to 100MHz, and most likely can operate at speeds much higher. Their official support for bus speeds in excess of 83MHz makes SDRAM a more stable solution when overclocking, and therefore makes SDRAM the ideal choice...or does it? Look at these wonderful brands...Panaphonics, Sorny, and Magnet Box! How much are you really willing to pay for a stable system? This is where the ongoing "Generic vs Brand Name" debate comes into play. Generic EDO is usually stable enough for most systems, and sometimes works flawlessly at 75 and 83MHz bus speeds with a little tweaking of your BIOS Timings. However, problems can be experienced when you are using SDRAM, especially in pairs. Some modules simply don't work with some motherboards, and work perfectly fine with others. Since SDRAM is not yet a standardized technology, manufacturers sometimes manufacture poor quality modules, that although work perfectly in single modules (courtesy of their DIMM packaging) fail to function in pairs. It is for that reason that many motherboard manufacturers are packaging SDRAM with their motherboards that have been completely tested when using both single and multiple modules. Currently, chips (not modules) made by NEC are the most compatible, however Toshiba, Micron, and SmarTech (all of which DO NOT use NEC chips) manufacture SDRAM which has a very high compatibility rate. As far as EDO is concerned, Micron EDO is considered the best and most stable, with Toshiba as well as some other manufacturers close behind. With EDO however you can feel much safer when using generic modules than when using generic SDRAM since EDO has been around for much longer. In time we'll see generic SDRAM improve in quality, but that will take action by one company to set the standard in quality SDRAM. Basically, with system memory, you get what you pay for. I personally use Micron EDO for all of my tests involving EDO DRAM, and I use Advanced Megatrends SDRAM for my SDRAM tests unless otherwise specified by the motherboard manufacturer. Here's a small chart to help you decipher those pesky little ID numbers on chips. Below are manufacturer's ID Strings which can be found on the invidual chips of your RAM modules. If you have any more to add to this list please email me.
How do you write to Read-Only Memory?!? Read-Only Memory. Sounds pretty definite, you're never writing to it. And, believe it or not, regular ROM is never written to. The information stored in regular ROM is placed there as the memory is being fabricated. So anything that's written into the memory is there for good. If it's wrong, the entire thing has to be done again. This is where PROM has an advantage. Programmable ROM can be written after fabrication, so if you're not sure what you want on it, you can go ahead and make the physical memory and worry about what's stored on it later. But, like regular ROM, you can only write to PROM once, and after you've finished loading the information onto the memory, it's not coming off. This disadvantage lead to the development of two different types of PROM. EPROM and EEPROM. Both of these types of memory are PROM's, since the information is written to them after fabrication. EPROM can be erased using ultra-violet rays. This allows the manufacturer of the memory to change any flaws in the information without having to replace the memory. The problem is that the user cannot change this information, unless he was an ultraviolet PROM burner. The cure for this is EEPROM. Similar to EPROM, EEPROM can be erased, but, as the name implies (see the EEPROM section above), it is much easier to do so. EEPROM can be erased by electricity, making it the preferable memory for BIOS's. If you have a flash BIOS, your BIOS is using flash EEPROM, an even more advanced form of PROM. So, as you can see, not all ROM is truly read-only. You could probably change your BIOS right now since I'll bet it has EEPROM inside. :) Parity, Non-Parity, ECC - How does an extra chip correct errors with my memory? In the glossary, I briefly described Parity and Non-Parity and ECC Memory. But I didn't really explain them in depth and tell you quite how they worked. I hope that this will help out. Remember that Non-Parity RAM does no error checking for you. If some how your data was corrupted, Non-Parity will still feed it into your CPU as if nothing had happened. Parity RAM does. As mentioned in my definition of Parity RAM, there is an extra chip on a Parity module, known as the Parity Bit. This is because each byte coming from Parity RAM has 9, not 8 bits. Naturally, if your computer doesn't support Parity RAM, your computer won't know what to do with that extra bit. Don't worry about your CPU though, this other bit of information, a 1 or 0 is removed before the data is sent to your processor. Parity RAM works by comparing a byte before and after going to DRAM. As the byte is entering memory, the Parity Bit is changed to either a one or a zero to make the total number of ones in the 9-bit byte even or odd depending on what type of Parity memory it is. Some types of Parity OK a byte if it has an even number of 1's, others if it has an odd number. Therefore, if you have even Parity, and you have a byte 10011011 your Parity Bit will be 1, making the number of 1's 6. When it is time for that address to go to the CPU, if the data was corrupted, making the bit 10010011 instead, the Parity Bit would make the number of 1's equal to 5, therefore indicating a memory error. The biggest disadvantage to Parity RAM is that there is no way of knowing where the error occurred. In the example above, your computer just knows that the bit isn't the same as when it came in. So what can you do? Nothing. The information is gone, there isn't a record of the byte stored somewhere. That's why more important jobs are left to ECC. ECC stores more information about your byte of memory. The module keeps information about the bits, so that it can identify errors in memory to an accuracy of 1 bit. These errors can even be correct, thus the name Error Correcting Code. This makes ECC a much more advanced type of error checking than Parity RAM, but is also much more expensive. Memory timings are also known as refresh rates. Since your memory is sustained electrically, it must be recharged constantly. Memory timing is how many rows of memory much be recharged at once. Without refreshing your memory, you'd lose the information stored in the memory addresses. A useful technology used in your laptop is self-refreshing memory. This memory can, well, refresh itself. This means the CPU or other devices don't have to be involved, making less need to power. This helps conserve your battery, so you can play games longer on the airplane. :) Whenever data is moved from your main memory onto a disk (your hard disk, a floppy), it is called writing. There is a usual rate that your computer moves data from your memory to the disk. This is, naturally, the normal transfer rate. But there are certain times that something called burst mode exists. Burst mode occurs when your memory temporarily "takes control of your computer." What happens is that the bus is reserved just for the transfer occurring between the disk and RAM. In this situation, your RAM produces a burst of information, getting transfer rates much higher than normal. This burst speed cannot be sustained for long, as other devices in your system also need access to the bus. But during this tiny period of time, information shoots through your system with transfer rates skyrocketing. Generally your CPU is running much faster than your RAM. This means that your CPU cannot accesses your RAM every clock cycle. Though not limited to RAM, I'll discuss wait states in this context. As your CPU gets ahead of your RAM, if has to wait for the RAM to "catch up". This causes a temporary pause in your system. Though one maybe far too small to notice, as they begin to pile up, you'll find your applications running slower. This is why SDRAM, and BEDO DRAM to a lesser degree, are so much more advanced than regular RAM. These two types of RAM are able to keep up with clock speed, allowing your CPU to interface with the memory at every clock cycle and eliminate wait states. BEDO DRAM is capable of keeping up at this rate for only short periods of time, called bursts (hence the name Burst EDO DRAM). SDRAM, however, can keep up with your CPU for much longer periods of time, synchronizing itself with your CPU at bus speeds of up to 100 MHz, maybe even more! So be prepared to watch SDRAM or one of its successors take over the market. RDRAM is new type of dynamic memory invented by Rambus. RDRAM is incredible break through in memory technology. It is an extremely high-speed type of memory, running at 64 megabits. RDRAM is capable of bursts as fast as 2 ns a byte! In addition, RDRAM can handle transfer rates in excess of 533 MHz, making it the obvious choice for anyone wanting to handle the next wave of P2's (see the CPU comparison page). RDRAM can also handle multiple Rambus Channels. Each of these channels can achieve transfer rates of up to 533 MB a second. This means that if you're running four channels (the maximum supported for one controller), you could get transfer rates over 2 GB / sec! After reading the SDRAM section, you might have thought EDO DRAM sounded ancient since it only supported bus speeds of up to 83.3 MHz (and only 66 MHz officially). SDRAM seems far superior with bus speeds supported up to 100 MHz. RDRAM can support bus speeds up to 267 MHz! RDRAM can synchronize itself with your CPU bus as high as 133 MHz! This means incredible performance. RDRAM will soon be appearing in PCs everywhere. Don't be surprised if your next computer uses RDRAM. After reading so much able to virtues of SDRAM (see the entry above), you're probably wondering why anyone would want anything but SDRAM. FPM RAM can only get access speeds down to 60 ns, EDO DRAM can only get to 45 ns, but SDRAM has gotten the time it takes your processor to access a memory address down to only 10 ns! And SDRAM almost eliminates those pesky wait states (see above). By synchronizing itself to your CPU, SDRAM can interface with your processor at ever clock cycle! It can even support bus speeds higher than any type of EDO DRAM. SDRAM sounds incredible. If you've seen benchmarks on RAM though, you might have noticed something. SDRAM only gives you about a 5-10% performance increase over EDO DRAM. There are two main reasons why SDRAM fails to perform. If you've read above, you know at least a little of EEPROM. This type of ROM is absent from the SDRAM DIMMs. Used in RAM, EEPROM helps the memory function properly. Without, SDRAM has taken a performance hit. The second reason that SDRAM just doesn't perform is that it does not have proper chipset support. Like many other types of RAM, SDRAM needs the support of the chipset to function at its best. Since the chipsets used today are optimized for EDO and not SDRAM, SDRAM once again is put at a disadvantage. Well, it looks like SDRAM isn't destined to take over the market like it should have. But I feel that one of its successors might. If only a better variant of SDRAM could be made maybe they could tack on that wonderful "II" to the name (hint hint) We all know that
today's SDRAM is rated at a 100 MHz speed but I'm sure a few of
us gamers and 3d developers are wondering whether or not this RAM
can keep up with our Deschutes coupled with our 4x AGP video
cards which we all say we are going to buy (or K-6 with a VP3
AGP) ... Taking into consideration that Deschutes will run at 100
MHz bus speed and your AGP card at 2x mode is going to have a 200
MHz pipeline to your main RAM, it seems like SDRAM just isn't
good enough. What are you looking for now? RDRAM you might say,
but considering the standards are still being argued about and
that the RDRAM won't be manufactured probably around 1Q or 2Q 98'
and that you can't wait that long to buy RAM for your Deschutes
which doesn't come out until Q4, what will you do??? Well thanks
to the decisions of the Jedec Consortium (Joint Electron Devices
Engineering Councils), we now have another alternative - DDR
SDRAM. DDR SDRAM is a new type of SDRAM that simply put has a
Double Data Rate (hence DDR) similar to the AGP 2x mode
essentially doubling the speed of the memory and DDR is the
predecessor to SLDRAM (Sync-Link DRAM) the only difference is
that SLDRAM has burst transfers upping the transfer rate to 400
MB/s. The DDR SDRAM spec will have them rated at 83.3 MHz, 100
MHz, and 125 MHz - in my personal opinion they should drop the
83.3 MHz version (those 100 MHz bus speed CPUs!!) keep the 100
MHz and 125 MHz and add 133 MHz version and the chips will
perform like a 200 MHz, 250 MHz and 266 MHz parts!. If
Implemented properly you can expect to see DDR SDRAM supported in
Intel's Deschutes chipset (i440BX and i450NX) and possible in a
later revision of the VIA VP3 (for K6 supporters). DDR's expected
average Data Transfer rate is ~256 MB/s versus the SDRAM data
transfer rate of ~128 MB/s. the average access time is <10 ns
for DDR SDRAM and SDRAM is 8-12 ns. Both the faster access times
and faster transfer rates give you a high speed solution for
those of us who demand the fastest processors NOW :). Virtual Memory and Memory Swapping Everyone reading this has probably been in the Start Menu, gone to Control Panel and looked at the System Icon. At that back little tab you saw something called virtual memory. Sounds interesting, doesn't it? So you click on the button, and you're confronted about which hard drive you should use and the amount of space free you want for virtual memory. You might be thinking by now, "What do my HDDs have to do with memory? We're not talking about hard drive space, so what does it mean?" Virtual memory is a way to cut down on the constant memory swapping that's always going on inside your system. When you want to run a program, your computer has to load up the values and instructions into RAM. But what happens when you're running a program that needs more memory than you have? This is where memory swapping comes into play. With memory swapping, the portions of the data you want is broken down into pieces. When the program needs to access a particular piece of this chunk of data, it swaps it into memory in exchange for some code that you aren't using at the moment. The problem with this is that your HDD access speed is pretty slow when compared to the rate your RAM and CPU are working at. Virtual memory helps cut down on the problem. Now, as I mentioned earlier, when you are setting virtual memory in Win95 or Win3.1 (DOS doesn't support virtual memory), you have to choose what HDD you want, assuming you have more than one like me. Well, this is because virtual memory is still on your HDD. Isn't that confusing? Basically, what your CPU does is take a part of your HDD as make it into RAM. It uses the HDD to store memory addresses, and although this isn't as fast as your physical RAM, it does go much faster than having to take it from your HDD when it isn't in the virtual memory form. This maybe why when your HDD is almost to its capacity you noticed your system performance take a hit. Your computer didn't have as much virtual memory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||