Memory
This page provides some technical and historical background on the various types and sizes of memory that were used in DOS computers, both on the motherboard and on graphics cards.
Before we delve into the different formats of memory chips and memory modules, it is important to understand some terminology.
Terminology Explained
Sometimes when we talk about memory modules (a collection of memory chips grouped together), there are certain terms that are used. These are described below:
Memory Density
This is the total memory capacity of the chip. Example: 128 MB (megabytes).
Memory Depth × Memory Width
Memory Depth is the Memory Density divided by Memory Width.
Example: A memory chip with 128 MB (megabytes) capacity and 8 bit wide data bus can be specified as: 16 Meg × 8. Sometimes the "Meg" or "Mi" is dropped, as in 16×8.
(Memory Depth per bank × Memory Width) × Number of Banks
Example: a chip with the same capacity and memory width as above but constructed with 4 banks would be specified as (4 MB x 8) x 4.
Note that there are two sizes of RAM chip; 256Kbit (kilobit) and 1Mbit (megabit). It is important to distinguish between bits and bytes here. The "bit" measurement is for individual chips, the "byte" measurement is for memory size.
All the RAM chips function in sets of eight (or nine with parity) whether
they are installed individually or are part of a module. The individual chip measurement e.g. 256Kbit, represents the total amount
of memory in one set of eight (or nine chips). Eight or Nine 256Kbit chips will therefore total 256K bytes (kilobytes) of memory and eight (or nine) 1Mbit chips will total 1MB (megabyte).
Only one size chip can be used in any one bank.
SRAM (Cache chips)
The first caches on DOS PCs started to appear on later 80386-based motherboards. Since the 386DX or 386SX didn't come with any cache on the CPU die itself, this motherboard-based cache would typically provide a boost in overall system performance. Cache sizes started at 64 KB and went up to 512 KB. Some CPUs made by Cyrix (Cx486DLC/DRx2), IBM (IBM DLC3) and Texas Instruments (TI486DLC/SXL) that were compatible with 386/486 hybrid motherboards came with a small on-die cache of 1 KB, 8 KB or 16 KB.
With the introduction of the 80486 CPU, the concept of L1 (level 1) and L2 (level 2) caches arrived. Whilst L1 cache was on the CPU itself, L2 cache was a set of chips on the motherboard. Sometimes they are referred to as Internal Cache and External Cache These are typically SRAM (Static Random Access Memory) chips and are the fastest RAM chips.
To see the differences between SRAM and DRAM:
DRAM
Before there were memory modules (or "sticks"), we simply plugged individual Dynamic RAM "DIP" chips directly into sockets on the board. Each chip would typically store anywhere from 16 KB up to 128 KB. DRAM chips were very common from the first IBM PC, through to the XT, and early AT machines, with some budget 386 boards still supporting DRAMs alongside SIPP sockets in 1992.
DRAMs were always stamped with a speed rating, which refers to the time it takes for the chip to read, modify and write some data. Typical DRAM chips came in speeds from 150 nanoseconds (150ns) at the slower end of the spectrum, to 60 nanoseconds (60ns) at the fastest.
SIPP
SIPPs (Single Inline Pin Packages) allowed motherboard manufacturers to store larger amounts of memory on modules, rather than via individual DRAM ICs.
They are comprised of chips mounted in a set on a strip that plugs in as a unit. SIPs pre-date SIMMs as a means of grouping memory chips together. SIPPs had their heyday during the 80286 era. I have never seen a SIPP socket on an XT motherboard (probably because XTs were limited to 640 KB in most cases), but my late 80286 motherboard from 1992 has them.
SIPP modules had 30 pins that plugged into matching holes in the motherboard, and are pin-compatible with the later 30-pin SIMMs.
SIPP modules came in two sizes depending on which size chip they use. One SIPP module can total either 256 KB or 1 MB. Around 1990 SIPPs were succeeded by the more durable SIMM design.
I have permission to link to Martin @ Marten Electric's awesome SIMM/SIPP module database - do check it out if you're struggling to identify any of your modules!
SIMM
30-pin SIMM
SIMM cards came in around 1989, overlapping the period when SIPPs were still around. It was not uncommon to have SIMM slots and DRAM sockets on the same motherboard, just as it was common to have SIPPs alongside DRAMs too.
The first SIMMs (Single Inline Memory Module) had 30 pins (the same as the SIPPs they directly replaced), with either a tin or gold edge connector - this made them less prone to breaking than SIPPs. The edge connector contacts are redundant on both sides of the module (their opposite pin does the same thing). The physical size of a 30-pin SIMM is approximately 3.5 x .75 inches (about 9 x 2 cm). They are also 'keyed' to prevent insertion the wrong way around in a slot.
These SIMMs provide 8 bits of data plus a 9th error-detection bit in the case of parity SIMM modules. These were used in AT-compatible (286-based, 386-based, and 486-based) computers, as well as the Atari ST and numerous early Apple Macintosh computers. In the early days, module capacities were just 256 KB and 1 MB, but as memory technology improved and costs reduced, 4 MB and even 16 MB 30-pin SIMMs were produced.
During the time of 30-pin SIMMs, parity became supported by motherboards and their BIOS. For memory modules with parity, the DRAM controller would store a checksum (for error checking) of what had been written, and read it back to ensure what had been stored was 100% accurate.
All 30-pin SIMMs use the "Fast Page Mode" (FPM) DRAM technology.
:
Two 30-pin SIMM slots on a motherboard. Installation of a 30-pin SIMM [in the case above] is vertical, using the two black plastic end-guides to ensure it goes in correctly. Most SIMM slots use a different design where the module is inserted at a slight angle (about 30 degrees) and then tilted vertically until it snaps into place via two metal springs on each end of the slot.
A 30-pin SIMM with a tin edge connector, and holds 256 KB of RAM. It has 100ns (nanosecond) DRAM chips, with no parity
A 3-chip module that has 1 MB of RAM, and uses 70ns chips with parity
A 9-chip module that has 1 MB of RAM with 70ns chips with parity
Because 30-pin SIMMs were 8-bits wide, you would need two of them to fill a memory "bank" on 16-bit systems (80286 and 80386SX). This 'banking' was necessary due to the different data bus widths that existed between processors and their motherboards. For 32-bit systems (386DX, i486, etc), a bank would require four of these 8-bit-wide 30-pin SIMMs to be filled (4 x 8 = 32). The golden rule with 30-pin SIMM slots is that all slots in a single bank are populated - what a motherboards calls a "bank" differs depending on whether it supports memory interleaving or not.
A Word on Memory Interleaving
Some 286-, 386- and 486-based systems used what was known as "memory interleaving", where it would split the memory into two to permit parallel access - this would result in great performance improvements on memory read operations. A fast 286 motherboard that supported interleaving would usually accept slower RAM (100 or 120ns), but without interleaving it would require 60-80ns RAM to achieve decent throughput.
You can usually tell if a SIMM module supports parity (error) checking or not by how many chips there are. If it's an odd number, you have a parity SIMM. If it's an even number, it's non-parity.
30-pin SIMMs ranged from 60ns (nanoseconds) to 100ns, with 70ns being the most common - the smaller the number, the faster the memory can operate. Bear in mind the speed stamped on each memory chip denotes the MAXIMUM speed that chip can run at - your ACTUAL memory speed is affected by your BIOS [memory timing and wait state] settings and your motherboard's chipset (some are faster/more efficient than others). To ensure system stability all SIMMs installed in a motherboard should be the same speed, ideally from the same manufacturer, and don't mix parity with non-parity SIMMs. Parity SIMMs tend to be those with an odd number of chips while non-parity tend to be an even number of chips.
I have permission to link to Martin @ Marten Electric's awesome SIMM/SIPP module database - do check it out if you're struggling to identify any of your modules!
72-pin SIMM
The second variant of SIMMs has 72 pins, and provides 32 bits of data (36 bits in parity versions). These appeared in the early 1990s in the IBM PS/2, and later in systems based on the 486, Pentium, Pentium Pro, and early Pentium II era. By the mid-90s, 72-pin SIMMs had completely replaced 30-pin SIMMs in new-build computers, and were starting to be replaced themselves by DIMMs (see below). Physically a 72-pin is approximately 4.25 x 1 inch (about 110 x 25mm). To ensure that a 72-pin SIMM is correctly installed in a memory slot, there is a notch next to pin 1 (seen on the far right in the picture above).
The earlier 72-pin SIMMs continued to use Fast Page Mode (FPM) DRAM technology. This was slow, and as technology progressed, higher performance EDO (Extended Data Out) DRAM technology was used in later 72-pin modules. This had more advanced timing features, extending the amount of time data could be stored and had a reduced refresh rate which alleviated the CPU and RAM from timing constraints and improved performance.
Capacities of 72-pin SIMMs started at 1 MB and rose gradually up to 128 MB, with versions that held 2 MB, 4 MB, 8 MB, 16 MB, 32 MB and 64 MB in between.
Typically, a single 72-pin SIMM was required to fill a memory bank on 32-bit systems such as the 80386DX, or i486. For Pentium-class systems (which had a 64-bit data bus), two 72-pin SIMMs were required to fill a bank.
With 72-pin SIMMs also came the first more intelligent means of a motherboard identifying what was installed. The JEDEC standard on which the 72-pin SIMM was based called for a number of 'Presence Detect' pins on the memory board to allow motherboards to recognise the board's capacity and speed.
Two 72-pin SIMMs, each holding 64 MB (making up a bank that has 128 MB). These use the older FPM DRAM technology, and have parity.
64 MB (2 sticks of 32 MB each) EDO SIMM. The chips are 8 Mbit x 32.
72-pin SIMMs ranged from 60ns (nanoseconds) to 70ns, with 70ns being the most common for FPM RAM and 60ns for EDO.
DIMM
The third type of memory for PCs (chronologically) was DIMMs - Dual Inline Memory Modules. They began to take over from 72-pin SIMMs during the later Pentium era (around 1996). The limitation with SIMMs was that they were designed for a 32-bit data bus width. On systems with a 64-bit data bus, SIMMs were installed in matching pairs and the CPU would access the two SIMMs in parallel. DIMMs were introduced to eliminate this limitation (no more "banks" of memory).
Physically a DIMM is approximately 133mm x 40mm in size. DIMM modules for laptop computers were also introduced, called SODIMM - these are about half the length of a DIMM module.
The first DIMMs had 168 pins, 84 on each side, so both sides' pins were not redundant as with SIMMs. They all have a "voltage-alignment key" notch which is used in a different location depending on the technology used on that memory stick. Initially the technology used with DIMMs was SDRAM (Synchronised Dynamic RAM) - this was significantly faster than FPM and even EDO RAM - if your Super Socket 7 motherboard's chipset supported SDRAM you had . With SDRAM the memory was synchronised with the system bus/clock speed, so it could run at faster speeds (up to around 133 MHz) than the older unsynchronised DRAM. A problem that was becoming more prevalent with DRAM was that the memory couldn't keep up with the demands being made upon it by the CPU. By running synchronously, it could queue up one instruction while processing another. This was later referred to a SDR (Single Data Rate) SDRAM when DDR (Double Data Rate) SDRAM arrived.
Due to the ubiquity of the DIMM form factor over a long time frame, DIMM modules started to be referred to not just by their size but also the speed of the bus they could run on. For example, a 256 MB SDRAM PC133 DIMM 168-pin memory module contains 256 MB of RAM, it uses the SDRAM technology, and supports a front side bus speed of 133 MHz.
The DIMM form factor was continued for many years into the new milennium, with the introduction of DDR (Double Data Rate) RAM in June 2000 which made faster data transfer rates possible, and later DDR2 (mid-2003 with Intel's introduction of their 9xxx series of chipsets), DDR3 (2007) and DDR4 (2014). All used the faster SDRAM technology.
None of these are forward- or backward-compatible with each other, and motherboards support only one of these types of DIMM module. Having said that, within a single module's technology, speeds are interchangeable. For example:
a PC133 DDR DIMM module on a motherboard that supports PC133 DDR modules = OK, and runs at 133 MHz.
a PC100 DDR DIMM module on a motherboard that supports PC133 DDR modules = OK, and runs at 100 MHz.
a PC133 DDR DIMM module on a motherboard that supports only PC100 DDR modules = OK, and also runs at 100 MHz.
In other words the memory cannot run faster than the slowest element, either motherboard limitation or memory module limitation.
DDR Module Terminology
From 1996, JEDEC set standards for DDR SDRAM memory modules and their names to allow people to ensure compatibility across the industry and to give consumers an understanding of peak memory transfer rates, as follows:-
Technology | Year It Went Mainstream | Standard Name | Module Name | Peak Transfer Rate |
---|---|---|---|---|
DDR SDRAM (1997) | 1998 | DDR-200 | PC-1600 | 1600 MB/sec |
1999 | DDR-266 | PC-2100 | 2133.33 MB/sec | |
2000 | DDR-333 | PC-2700 | 2666.67 MB/sec | |
2002 | DDR-400 | PC-3200 | 3200 MB/sec | |
DDR2 SDRAM (2003) | 2004 | DDR2-400 | PC2-3200 | 3200 MB/sec |
2005 | DDR2-533 | PC2-4200 | 4266.67 MB/sec | |
2007 | DDR2-667 | PC2-5300 | 5333.33 MB/sec | |
2008 | DDR2-800 | PC2-6400 | 6400 MB/sec | |
2008 | DDR2-1066 | PC2-8500 | 8533.33 MB/sec | |
DDR3 SDRAM (2007) | 2007 | DDR3-800 | PC3-6400 | 6400 MB/sec |
2008 | DDR3-1066 | PC3-8500 | 8533.33 MB/sec | |
2009 | DDR3-1333 | PC3-10600 | 10667 MB/sec | |
2010 | DDR3-1600 | PC3-12800 | 12800 MB/sec | |
2010 | DDR3-1800 | PC3-15000 | 15000 MB/sec | |
2011 | DDR3-2000 | PC3-16000 | 16000 MB/sec |
Memory Technology Used by Graphics Cards
FPM and EDO DRAM
For all of the 1980s, graphics cards used exactly the same type of memory as that found on PC motherboards - DRAM chips. In the early 90s the introduction of 72-pin SIMMs for main system memory also brought in the new EDO (Extended Data Out) DRAM technology. Graphics cards soon started making use of the same underlying EDO DRAM ICs on their cards.
VRAM
In 1991, Texas Instruments pioneered the first VRAM (video RAM) technology, and these became more commonly used on more expensive graphics cards. VRAM is dual-port memory technology - the ability to fetch the contents of memory for display at the same time that new bytes are being pumped into memory - and was quite expensive, requiring special technology in the memory controllers. The first port, the DRAM port, behaved in much the same way as standard DRAMs. The second port, the video port, was typically read-only and was dedicated to providing a high throughput, serialized data channel for the graphics chipset. Through the 1990s, many graphic subsystems used VRAM, with the number of megabits touted as a selling point.
WRAM
In 1995, Samsung came out with a newer, less expensive WRAM (Windows RAM, unrelated to Microsoft’s Windows), which was a further development on VRAM that came before it. WRAM was a high-performance dual-ported video RAM that had about 25% more bandwidth than VRAM. It had features that made it more efficient to read data for use in block fills and text drawing and could be used for very high resolution (such as 1600 × 1200) using true color. WRAM was cheaper than VRAM, despite it being better/faster. It was only used by Matrox (for their Millennium and Millennium II), Number Nine (for their Revolution 3D) and ATi (for their 3D Rage Pro). Because it was patented, Samsung did not release the specs for others to build their own WRAM chips - this caused a chip shortage for WRAM and ultimately, its reduced adoption.
MDRAM
Multibank DRAM (MDRAM) is a type of specialized DRAM developed by MoSys. It is constructed from small memory banks of 256 kB, which are operated in an interleaved fashion, providing bandwidths suitable for graphics cards at a lower cost to memories such as SRAM. It was used on cards such as those based on the Tseng Labs ET6000. Boards based upon this chipset often had the unusual capacity of 2.25 MB because of MDRAM's ability to be implemented more easily with such capacities. A graphics card with 2.25 MB of MDRAM had enough memory to provide 24-bit color at a resolution of 1024×768—a very popular setting at the time.
SDRAM
In the late 1990s, SDRAM technology gradually became affordable, dense, and fast enough to displace VRAM. It had been around for a long time, but up to this point didn't see widespread use in graphics adapters due to cost.
It was only single-ported and more overhead was required than that of VRAM and WRAM. Nevertheless, many of the VRAM concepts of internal, on-chip buffering and organization have been used and improved in modern graphics adapters.
SGRAM
Synchronous graphics RAM (SGRAM) was a specialized form of SDRAM for graphics adaptors. It added functions such as bit masking (writing to a specified bit plane without affecting the others) and block write (filling a block of memory with a single colour). Unlike VRAM and WRAM, SGRAM was single-ported. However, it could open two memory pages at once, which simulated the dual-port nature of other video RAM technologies.
GDDR
In 2000, GDDR memory was introduced, making both VRAM and WRAM obsolete.