Technician Field Notes (Legacy Systems) DEBUG

Technician Field Notes (Legacy Systems) DEBUG
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
DEBUG Capabilities:
1. Display or change memory and files. DEBUG can show any part
of memory including any part of a program or binary file. It can
change the contents as well. If the contents of memory represent a
file, you can write the changed file back out to disk.
-D Hex Dump
2. Display or change the contents of all CPU registers.
3. Fill a region of memory with a single value. If there is an area of
memory that you want blanked out, DEBUG will allow you to fill that
area of memory with any character or binary value.
4. Search memory for sequences of binary values. You can search
any area of memory for a specific sequence of characters or binary
value, including names stored in memory or sequences of machine
instructions. You can then examine or change something that you
know exists somewhere in memory but not where.
5. Assemble new machine instructions into memory. DEBUG
contains a simple assembler that does much of what TASM can do,
one machine instruction at a time. If you want to replace a machine
instruction within the program, you can now type MOV AX,BX rather
than having to look up and type 8BH 0C3H.
6. Unassemble binary machine instructions into their mnemonics
and operands. DEBUG can take the tow hexadecimal values 8BH
and 0C3H and tell you that they represent the assembly language
mnemonic MOV AX,BX. This is essential for tracing a program in
7. Single step a program under test. DEBUG can run a program
one machine instruction at a time, pausing between each instruction.
During the pause, you can look at or change memory, registers,
search for things in memory, or patch the program by replacing
existing machine instructions with new one.
Revised November 28, 2008
View Memory Area (May Use
Specific Seg:Offset 0000:C800)
Enter New Data (Change Bytes In
Register (Register Dump or -R
Specific Register)
Assemble (Assemble Directly To
Memory Incrementing CS:IP)
Instructions At CS:IP)
GO (Begins Execution At The
Address CS:IP)
Write (Save Altered Memory
Image Back To Disk)
OF - Overflow Flag
DF - Direction flag
IE - Interrupt enable
SF - Sign Flag
ZF - Zero Flag
AF - Auxiliary carry
PF - Parity flag
CF - Carry flag
Set Symbol
Clear Symbol
Open and View A File With DEBUG
Type DEBUG filename. To view the file in hexdump ENTER D at the
hash prompt -.
1 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Changing Memory With DEBUG
The DEBUG command to change bytes in memory is E. In response to
the E command is: 38E3:010E 61
The cursor waits after the period for input. What is showing is the value
already at address 01EH so you can decide to change or not. If not,
press ENTER, and the dash prompt will return. Otherwise, enter a
hexadecimal value to replace 61H. Once you have entered a
replacement value, you have a choice of completing the change by
pressing ENTER and returning to the dash prompt, or changing the byte
at the next address by pressing SPACEBAR.
Examining and Changing Registers
The DEBUG command to examine and change register values is R.
The line beneath the register and flag summaries is a disassembly of the
byte at the address contained by the instruction pointer (IP). If memory
contains data instead of machine instructions, the disassembly line must
be ignored. A register value can be changed by specifying the register
name after typing R: -r cx
1. Type A at the DEBUG dash prompt and press ENTER. DEBUG
responds by displaying the current value of CS:IP, and then waits for
you to enter an assembly language instruction.
2. Type MOV AX,1 and press ENTER. DEBUG again displays CS:IP
and waits for a second instruction. It will continue waiting for
instructions until you press ENTER without typing anything. Then
you get the dash prompt again.
3. Use the R command to display registers. The registers haven’t
changed, but now the third line shows that the MOV instruction
entered is displayed. Nothing has been executed yet. DEBUG has
just been used to write a machine instruction into memory.
4. The G command can be used to execute, but only one instruction
has thus far been entered. The T command (Trace) can be used for
executing one machine instruction at a time. The T command will
execute the machine instruction at CS:IP. NOTE: DEBUG G
command executes programs in memory starting at CS:IP, while the
T command executes a single instruction at CS:IP.
DEBUG responds by displaying the name CX, its current value, and a
colon prompt on the next line:
5. Type T to execute the single instruction assembled.
CX 0014
DEBUG Applications
Inspecting Video Refresh Buffer
Enter the new value and press to return to the dash prompt.
Assembling/Executing Machine Instructions
DEBUG contains a simple assembler that takes assembly language
mnemonics and converts them to their machine code form one
instruction at a time into memory at CS:IP. A is the command for
assemble. The following example takes the MOV instruction to move
Writing a character to the display screen can be done by writing the
ASCII code for that character into the correct address in the video
refresh buffer portion of memory. For color screens, the segment
address 0B800H, and for monochrome, the segment address is
0B000H. It takes two bytes of memory to display a character. The first
byte is the attribute byte. The second is the character itself.
1. Clear the screen (CLS) at the DOS prompt and invoke DEBUG.
2. Enter the segment address of the video refresh buffer (without the
leading zero) into the ES register.
Revised November 28, 2008
2 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
3. Enter D ES:0 to dump the first 128 bytes of the video refresh buffer.
Continue dumping as needed to view the rest of buffer area.
-r es
ES 1980
: b800
-d es:0
you will see text letters that correspond to these codes. For most
video cards, you will see the name of the manufacturer and
information about the video chipset type and version number.
3. Scroll Down If Necessary: On some systems you may need to scroll
down further to find the information. Do this by typing just "d" and
then {Enter}, one or more times. More information will display on the
Reading The BIOS Revision Date
4. Exit "DEBUG": Press "q" and then {Enter} to quit the debug program.
The BIOS is kept in ROM at the very top of the PC’s megabyte of
address space. The BIOS revision date is always at the same address
and can be displayed with the DEBUG D command. The address of the
date is 0ffff:0005 (end of BIOS code).
Using Debug to Remove a Non-DOS Partition
JMP To Cold Boot
The JMP instruction for cold boot is located at address 0ffff:0. Load this
number into the code segment register CS, and 0 into instruction pointer
IP. This now becomes the next code to execute. Dump register to view
disassembly of code. Execute with the G command:
The following Debug script, used with the MS-DOS Debug program,
deletes non-DOS partitions when you upgrade to a new version of MSDOS, enabling the entire hard disk to be used by MS-DOS. It does so,
however, by clearing out the entire partition table on the hard disk, which
results in the deletion of ALL partitions on the hard disk. You need to use
this method if your current version of MS-DOS cannot delete non-DOS
There are two ways to use the following Debug script:
-r cs
CS 1980
: ffff
-r ip
IP 0100
: 0
Video BIOS Area - Identifying Video Card
1. Enter the "DEBUG" Program: From the DOS prompt, type "debug"
and then {Enter}. The system will display a single dash ("-").
2. Display the Video Card BIOS Area. Type the following: "d
c000:0010". This will display the contents of the beginning part of
the video BIOS ROM. The system will display a bunch of
hexadecimal digits across most of the screen. On the left-hand side
Revised November 28, 2008
Run Debug and type the Debug commands from the center column
of Table 1 at the corresponding Debug prompt. (The left column of
the table shows the prompts that are displayed by Debug. You do
not need to type the comments in the right column).
Type the command in the center column of Table 1 into a file using a
text editor such as MS-DOS Editor and then use input redirection to
feed the resulting file into Debug. For example, if you typed the
commands into a file called HDPART.SCR, you would clear your
partition table by typing the following at the MS-DOS command
prompt and then pressing ENTER: debug < hdpart.scr
3 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Table 1:
Debug Script to Erase Hard-Disk Partition Table
Assemble from CS:0100
A 100
Call interrupt 13
INT 13
nnnn in the segment
press the
Replace AX register
AX 0000
Write on sector
Replace BX register
BX 000
Start from ES:200
We want to write zeros
F 200 L 200 0
Replace CX register
CX 0000
Cylinder, 0, sector 1
Replace DX register
DX 0000
First physical hard disk,
head 0. (Substitute 0081
for this entry if you are
clearing the table on the
second physical hard
disk, 0082 if you are
physical hard disk, and
so forth).
Proceed (Debug will
display several lines of
This script completely clears the partition table on your hard disk,
preparing the hard disk for repartitioning using the MS-DOS Fdisk
Revised November 28, 2008
Low Level Format
Run DEBUG from the DOS prompt, and at the prompt, give the following
command: G=C800:5
This should trigger a low level format utility that is stored in the hard disk
controller’s ROM. Most disks have the sector and track information
already encoded on the drive, though the controller may do a translation
where it sees more sectors per track in order to keep the number of
tracks within the old DOS limit of 1,024 cylinders. After the drive has
been low level formatted, you should be able to FDISK and FORMAT
the drive normally.
Segment : Offset
For convenience, it is easier to refer to a memory address using a
standard or linear address. So for example we say that the IDE hard disk
BIOS usually starts at memory location C8000h. However, it is not how
PC processors refer to memory locations.
In x86 CPUs, memory addresses are composed of two parts: the
segment address and the offset. These two are added together to
produce the "real" address of the memory location, by shifting the
segment address one hex digit to the left (which is the same as
multiplying it by 16, since memory addresses are expressed in
hexadecimal notation) and then adding the segment address to it. The
address itself is often referred to using the notation segment:offset.
Because of the peculiarity of this scheme, there are in fact many
combinations of segments and offsets that can result in the same linear
address. Let's take C8000h again. The standard way to refer to this
address is C000:8000. To get to the linear address you take C000, shift
it one digit to the left to get C0000, and then add 8000 to get C8000.
However, C800:0000 results in the same linear address.
4 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Segment:Offset Explained
The Megabyte - The 8088 and 8086 CPU’s can see a full megabyte of
memory. They have 20 address pins and can pass a full 20 bit address
(One megabyte) to the memory system. The address of a byte in a
memory bank is just the number of that byte starting from zero. The
addresses in a megabyte of memory run from 00000H to 0FFFFFH. A
megabyte of memory is some arrangement of memory chips within the
computer, connected by an address bus of 20 lines.
The Paragraph - A paragraph is a measure of memory equal to 16
bytes. The term paragraph is almost never used except in connection
with the places where segments begin. Any memory address evenly
divisible by 16 is called a paragraph boundary. The first paragraph
boundary is address 0. The second is address 10H. The third address
20H, and so on (10H is equal to decimal 16). Any paragraph boundary
may be considered the start of a segment. An assembly language
program may make use of only four or five segments, but each of those
segments may begin at any of the 65,536 paragraph boundaries existing
in the 8088/8086 megabyte of memory. There are 64K different
paragraph boundaries where a segment may begin.
The Segment - Although the CPU can see a full megabyte of memory, it
is constrained to look at that megabyte through 16 bit blinders. In other
words, it can only look at a consecutive 65,536 bytes at one time (for 16
bit registers). A segment is a region of memory that begins on a
paragraph boundary and extends for some number of bytes less than or
equal to 64K (65,536). A segment may be up to 64K bytes in size but it
doesn’t have to be. A segment may be only 1 byte long, or 256 bytes
long, 21,378 bytes, or an length at all short of 64K bytes.
Collective Terms For Memory
Revised November 28, 2008
Double word
Quad word
Ten byte
Each paragraph boundary has a number. Because a segment may
begin at any paragraph boundary, the number of the paragraph
boundary at which a segment begins is called the segment address of
that particular segment. We rarely speak of paragraphs or paragraph
boundaries. When you see the term segment address, keep in mind
that each segment address is 16 bytes (one paragraph) farther along in
memory than the segment address before it. In short, segments may
begin at any segment address. There are 65,536 segment addresses
evenly distributed across the full megabyte of memory, 16 bytes apart.
You define a segment by starting where it begins. Once you define
where a segment begins, that segment can encompass any location in
memory between that starting point and the horizon, which is 65,536
bytes down the line. Nothing says that a segment must use all of that
memory. In most cases, when you define a segment to exist at some
segment address, you only end up considering the next few hundred
bytes as part of that segment.
A segment is not a memory allocation or a protected region of memory
with walls on both sides, reserved for some specific use. Nothing is
protected within a segment, and segments are not reserved for any
specific register or access method. Segments can overlap. Segments
don’t really exist, in a real sense, except as horizons beyond which a
certain type of reference cannot go. A segment is the location in
Page 5 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
memory at which the CPU’s 64K blinders are positioned. In looking at
memory through blinders, you can see bytes starting at the segment
address, and going on until the blinders cut you off, 64K bytes down the
The 8088 and 8086 are called 16 bit CPU’s because their internal
registers are almost all 16 bits in size. A register is a memory location
inside the CPU chip rather than outside in a memory bank. Registers do
many things, but one of the most important is hold addresses of
important locations in memory.
The Segment:Offset
Since the 8088/8086 have 20 bit address, there must be a way to put a
20 bit address in a 16 bit register. This is done by putting a 20 bit
address is put in two 16 bit registers. All locations within the megabyte
of memory have not one address, but two. Every byte of memory is
assumed to reside in a segment. A byte’s complete address, then,
consists of the address of its segment, along with the distance of the
byte from the start of that segment. The address of the segment is the
byte’s segment address. The byte’s distance from the start of the
segment is the byte’s offset address. Both addresses must be specified
to completely describe any single byte’s location within the full megabyte
of memory. When written, the segment address comes first, followed by
the offset address. The two are separated with a colon. Segment:Offset
addresses area always written in hexadecimal.
Example: A byte of data in memory is given the address 0001:001D. It
fall within segment 0001H, and is located 001D bytes from the start of
that segment. Note that when two numbers are used to specify an
address with a colon between them, you do not end each of the two
numbers with the hexadecimal suffix. You can omit the leading zeros
too unless it begins with the hex digits A through F. 00B2:0004 could
also be written 0B2:4. 0000:0061 can then be abbreviated to 0: 0061
and 0B00:0000 to 0B00:0. The byte in the example above could also
have two other legal addresses: 0:002D and 0002:000D.
Revised November 28, 2008
All the Same:
Example: The PC keeps its time and date information in a series of
memory bytes that starts at address 0040:006C. There is also a series
of memory bytes containing PC timer information located at 0000:046C.
This is the same starting byte, and two ways of speaking of the same
byte in memory.
To express a 20 bit address in two 16 bit registers is to put the segment
address into one 16 bit register, and the offset address into another 16
bit register. The two bytes taken together identify one byte among all
1,048,576 bytes in one megabyte.
Segment Registers
The 8088, 8086, and 80286 have exactly four segment registers
specifically designated as holders of segment addresses ( the 386, 486,
and Pentium have more). Each segment register is a 16 bit memory
location existing within the CPU chip itself. No matter when the CPU is
doing, if it’s addressing some location in memory, the segment address
of that location is present in one of the four segment registers. The four
segment registers are CS, DS, SS, and ES. The segment registers can
be forced to do other things, but they exist as specialists to hold
segment addresses.
CS - stands for Code Segment. Machine instructions exist at some
offset into a code segment. The segment address of the code segment
of the currently executing instruction is contained in CS.
DS - stands for Data Segment. Variables and other data exists at some
offset into a data segment. There may be many data segments, but the
CPU may only use one at a time, by placing the segment address of that
segment in register DS.
6 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
The stack is used for temporary
whose segment address is currently stored in code segment register
CS. IP is the only register that cannot be written to directly.
ES - stands for Extra Segment. The extra segment is a spare segment
that may be used for specifying a location in memory.
Flags Register
The Flags register is 16 bits in size, and most of those 16 bits are single
bit registers called flags. Each of these individual flags has a name such
as CF, DF, OF and so on. When the program performs a test, it tests
one or another of the single bit flags in the Flags register. Since a single
bit may contain one of only two values, 1 or 0. If the flag is set to 1, the
program takes one action, but if it is set to 0, it takes a different action.
SS - stands for Stack Segment.
storage of data and addresses.
General Purpose Registers
The 8088, 8086, and 80286 have exactly eight segment registers. They
are: AX, BX, CX DX, SP, BP, SI, and DI. They all have a set of tasks to
perform. BX, BP, SP, SI, and DI are able to hold offset addresses that
must be paired with segment addresses to pin down a single location in
memory. For example:
Register Halves
Registers AX, BX, CX, and DX can be cut in half. Assemblers recognize
special names for the two halves of these four registers. The A, B, C,
and D are retained, but instead of the X, a half is specified with an H for
High half or an L for Low half. Thus, making up the 16 bit register AX
are the byte sized register halves AH and AL. Each register half can be
considered a separate register. Good for manipulating 8 bit quantities.
Instruction Pointer (IP)
IP contains the next machine instruction to be executed. The CPU uses
IP to keep track of where it is. Each time an instruction is executed, IP
is incremented by some number of bytes. The number of bytes is the
size of the instruction just executed. The segment address is kept in
CS. Together, CS and IP contain the full 20 bit address of the next
machine instruction to be executed.
A code segment is an area of memory where machine instructions are
stored. The steps and tests of which a program is made are contained
in code segments. The current code segment is that code segment
Revised November 28, 2008
Memory Configuration
As a result of the design decisions made in the earliest PCs, memory is
broken into the following four basic pieces (with some of the pieces
being divided further):
Conventional Memory: The first 640 KB of system memory. This is the
area that is available for use by standard DOS programs, along with
many drivers, memory-resident programs, and most anything else that
has to run under standard DOS. It is found at addresses 00000h to
9FFFFh. The name refers to the fact that this is where DOS, and DOS
programs, conventionally run. Originally, this was the only place that
programs could run. Today, despite much more memory being added to
the PC, this 640 KB area remains the most important in many cases.
The reason is that without special software support, DOS cannot run
programs that are not in this special area.
Under normal circumstances, you can expect the first 90K or so to
consist of:
An Interrupt Vector Table, which is 1K in size, including the name
and address of the program providing the interrupt service. Interrupt
vectors point to routines in the BIOS or DOS that programs can use
to perform low level hardware access. DOS uses io.sys and
msdos.sys for the BIOS and DOS respectively.
7 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
ROM BIOS Tables, which are used by system ROMs to keep track
of what is going on. This will include I/O addresses and possibly
user defined hard disk data.
DOS itself, plus any associated data files it needs to operate.
Upper Memory Area (UMA): This is the upper 384 KB of the first
megabyte of system memory (immediately above conventional memory).
It is reserved for use by system devices and for special uses such as
ROM shadowing and drivers. It uses addresses A0000h to FFFFFh.
One of the reasons that the UMA is so confusing is that it actually is two
overlapping sets of memory. There is 384 KB of system RAM occupying
addresses A0000h to FFFFFh. However, there are also different types of
system ROM that are mapped into many of the same addresses. The
RAM corresponding to those addresses where there is ROM, is hidden
from the system (and thus wasted, unless it is used by the BIOS for
ROM shadowing).
Why is this the case? Part of it is practicality: while the PC system has
structures like a 640 KB conventional memory and then 384 KB of UMA,
the physical RAM you put onto the motherboard is contiguous--there is
no practical way to construct a SIMM to leave a 384 KB block where the
UMA goes. (Or rather, it could be done, but it's much cheaper and easier
to include the 384 KB even if it lies totally unused). The other main
reason is that having the RAM there gives you performance-enhancing
options such as using the UMA for drivers, or for ROM shadowing.
You can think of the RAM and ROM in the UMA like this: the RAM
covers the entire 384 KB area. The different ROMs only cover part of it.
So the RAM is like a blank sheet of colored paper on a table, and the
ROM is an identical-sized white piece of paper with holes cut in it, laid on
top of the colored paper. Where the holes are (there is no ROM) the
colored paper shows through; this is available UMA RAM. Where the
colored paper is covered by the white paper, this represents addresses
where ROM is present, and therefore the RAM at those addresses is
Revised November 28, 2008
Note: Some adapters not only map their ROM into a particular address,
they also use RAM in that area as well. There is no practical difference
in terms of how the system is set up except that shadowing cannot be
enabled for any adapter that is using part of its area for RAM, because
shadowing write-protects the memory.
Usage Map of the Upper Memory Area
VGA Graphics Mode Video RAM: The 64 KB block from A0000h to
FFFFh is reserved for use as VGA video graphics memory. (Original
VGA is 320x200 in 256 colors, which requires 64,000 bytes). Of course
modern video cards use much more memory than this, built into the card
itself. This area of RAM is reserved and unavailable.
VGA Monochrome Text Mode Video RAM: This 32 KB of memory is
used when the video card is in monochrome text mode. However, in
modern systems the video card is almost never in monochrome text
mode; even when displaying monochrome text the color text mode is
used and a white or gray color is just used for the text. Under some
circumstances this block of memory can be recovered and used for
drivers, to save conventional memory. See here for details.
VGA Color Text Mode Video RAM: This 32 KB of memory is used by
the video card when displaying color text. This area of RAM is reserved
and unavailable.
VGA Video BIOS ROM: C0000-C7FFFh is the normal memory location
for the Video BIOS ROM, which contains the code used by your video
card. (This is the code, in ROM, as opposed to the data displayed by the
card, which of course changes and is stored in RAM). The RAM that
underlies this ROM can be used to shadow the video BIOS.
IDE Hard Disk BIOS ROM: C8000h is the default location for the BIOS
that controls the IDE hard disk. It is referenced when the system is
Optional Adapter ROM BIOS or RAM UMBs: The blocks of memory
from CC000h to DFFFFh are available for optional use. This memory
8 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
can be used by hardware adapters for their ROM code (for example,
some network cards, or SCSI host adapters). Or, the memory can be
used as upper memory block RAM for loading drivers. Usually this
memory is referred to in chunks of 16 KB (4000h) but a device does not
need to use this much if it does not need it. This address space is
normally empty unless you are using specialized hardware such as the
devices I just mentioned.
System BIOS Plug and Play Extended
Information: The area of memory from E0000 to EFFFFh is used by
Plug and Play BIOSes to hold its Extended System Configuration Data
System BIOS ROM: The last 64 KB of the upper memory area holds
the system BIOS code itself. RAM in this vicinity is normally used to
shadow the system BIOS.
Expanded Memory (EMS)
In modern systems, the memory that is above 1MB is used as extended
memory (XMS). Extended memory is the most "natural" way to use
memory beyond the first megabyte, because it can be addressed directly
and efficiently. This is what isused by all protected-mode operating
systems(including all versions of Microsoft Windows) and programs
such as DOS games that use protected mode. There is, however, an
older standard for accessing memory above 1 MB which is called
expanded memory. It uses a protocol called the Expanded Memory
Specification or EMS.
EMS was originally created to overcome the 1 MB addressing limitations
of the first generation 8088 and 8086 CPUs. In the mid-80s, when these
early systems were still in common use, many users became distressed
that they were constantly running out of memory. This happened
particularly when using large spreadsheets in Lotus 1-2-3, then probably
the most popular application on the PC. However, there really was no
easy way to make more memory available due to the 1 MB barrier.
Revised November 28, 2008
To address this problem, a new standard was created by Lotus, Intel
and Microsoft called the LIM EMS standard, where "LIM" of course is the
initials of the companies involved. (I wonder how they ever agreed to get
Microsoft to put its name last. I'll bet they couldn't pull that off today. To
use EMS, a special adapter board was added to the PC containing
additional memory and hardware switching circuits. The memory on the
board was divided into 16 KB logical memory blocks, called pages or
banks. Both of these terms are used in other contexts as well, so don't
confuse them.
What the circuitry on the board does is to make use of a 64 KB block of
real memory in the UMA, which is called the EMS Page Frame. This
frame, or window, is normally located at addresses D0000-DFFFFh, and
is capable of holding four 16 KB EMS pages. When the contents of a
particular part of expanded memory is needed by the PC, it is switched
into one of these areas, where it can be accessed by programs
supporting the LIM specification. After changing the contents of a page,
it is swapped out and a new one swapped in. Pages that have been
swapped out cannot be seen by the program until they are swapped
back in.
This concept is called bank-switched memory, and in a way is not all that
different from virtual memory, except here the swapping isn't being done
to disk but rather to other areas of memory. But here, a lot more
swapping is being done than in virtual memory. Because of all the
swapping, EMS is horribly inefficient. If you have 4 MB of EMS memory,
you can only access 64 KB of it at a time, or 1.5%. This means a great
deal of time is spent just shuffling memory around.
With the creation of newer processors that support extended memory
above 1 MB, expanded memory is very obsolete. Note that EMS and
XMS are physically different; an expanded memory card cannot be used
as extended memory, and extended memory cannot be used directly as
expanded memory. These EMS cards have been obsolete for over 10
years now and are rarely if ever seen except in left-over relics from the
mid-80s. However, the software that uses them persists more stubbornly
(of course).
9 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Included in MS-DOS is a driver called EMM386.EXE that you can use in
your CONFIG.SYS file to allocate a portion of extended memory to be
used to emulate expanded memory, for programs that still use it.
Running EMM386.EXE (as long as you don't use the "NOEMS"
parameter) will set up a page frame and dedicate a portion of extended
memory for use as expanded memory. EMM386 has a host of options
that can be used to change how much memory is set aside, the location
of the page frame, etc.
It is recommended that if at all possible, you avoid using programs that
still require EMS. In addition to being slow and cumbersome, using
extended memory for EMS makes it unavailable for use as extended
memory by other applications, and the page frame wastes 64 KB of the
upper memory area that could be used for drivers. This means that
indirectly, up to 64 KB of conventional memory can be lost when using
EMS. At the present time, most programs have been updated to use
more modern, faster extended memory, but some persist in using EMS.
The biggest culprits in this area seem to be games whose authors are
still using EMS so they can run in DOS real mode. Even these are few
and far between now.
Note: EMM386.EXE is also used to provide access to UMBs.
Upper Memory Blocks (UMBs)
Those parts of the upper memory area that are not used by ROM or for
video RAM are generally available for use by other programs. These are
called upper memory blocks or UMBs. They cannot typically be used by
regular programs, since they are too small and since regular code is
supposed to be run in conventional memory. However, they are ideal for
loading memory-resident programs and drivers.
To make UMBs available for drivers requires a driver program to provide
access to them. In a DOS environment, the driver used is
EMM386.EXE, which is loaded in the CONFIG.SYS file. When this driver
is loaded including either the "RAM" or "NOEMS" parameters, the areas
of open memory in the UMA are made available for use by drivers and
memory-resident programs. A driver in CONFIG.SYS can be told to load
into the UMA by specifying it using "DEVICEHIGH=" instead of
Revised November 28, 2008
"DEVICE=". A program in the AUTOEXEC.BAT file can be loaded into
the UMA using "LOADHIGH" or "LH" at the front of the command line.
See the section on optimizing conventional memory for more details.
Note: Despite the name "LOADHIGH", this commands loads into the
upper memory area, not the high memory area.
By default, EMM386.EXE selects certain areas for use as UMBs, and
other areas that it considers reserved. It will usually allow the use of
unused portions of the UMA between C8000h and EFFFFh; it assumes
A0000-BFFFFh is used for video memory, C0000-C7FFFh for the VGA
BIOS ROM, and F0000-FFFFFh by the system BIOS ROM. If you are
using an adapter that puts its ROM into one of the areas that EMM386
normally uses, you should tell EMM386 to leave it alone by using the "X"
parameter. For example, if you are using a device that uses addresses
D8000-D9FFF, put "X=D800-D9FF" as a parameter to EMM386. (The
last digit is left off).
Similarly, if there is an area that EMM386 normally reserves and you are
sure you aren't using it, you can tell EMM386 to add it back into the UMB
pool. The best example of this is the monochrome text mode video
RAM. In modern systems with modern software, this area is never used.
When displaying monochrome text the color text mode is used and a
white or gray color is just used for the text instead. Unless you are using
a very old DOS program that makes use of text mode (a few do), you
can reclaim this 32 KB block for use by EMM386 by specifying "I=B000B7FF" as a parameter to EMM386.
Because of the differing locations of ROMs, the UMBs that EMM386
makes available aren't always contiguous. However, a program cannot
be loaded in two pieces; it must go into a single UMB. This means that
some UMBs can be wasted; if you have a 16 KB program you are trying
to load high and you have two 8 KB UMBs left, the program cannot be
loaded high. Sometimes changing the order that drivers are specified in
the AUTOEXEC.BAT file can allow better use of the UMBs.
Finally, unless you really need to use EMS memory, you should specify
the "NOEMS" parameter with EMM386.EXE. Using the "RAM"
Page 10 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
parameter sets up EMS emulation and this means that 64 KB worth of
UMA is spent on the EMS page frame, which means it isn't available for
use as UMBs. 64 KB is a substantial chunk of the free memory in the
Warning: ROM shadowing should be disabled in the memory vicinity
where EMM386 is using the UMA for UMBs, or problems will result.
ROM Shadowing
As described in the section on UMA ROM and RAM, in most PCs, there
is a full 384 KB area of RAM in the UMA. When any addresses in the
UMA region are used by ROMs, the RAM underlying them is hidden.
However, that doesn't mean that it has to be wasted. One problem with
ROMs such as those used for the system BIOS and video BIOS, is that
it is relatively slow. The access time of ROMs is usually between 120
and 200 ns, compared to system RAM which is typically 50 to 70 ns.
Also, system RAM is accessed 32 bits at a time, while ROMs are usually
16 bits wide. The result of this is that accesses to the BIOS code are
very slow relative to accesses to code in the system memory.
I'm sure you can see where this is heading. Since there is RAM hiding
underneath the ROMs anyway, most systems have the ability to "mirror"
the ROM code into this RAM to improve performance. This is called
ROM Shadowing, and is controlled using a set of BIOS parameters.
There is normally a separate parameter to control the shadowing of the
system BIOS, the video BIOS and adapter ROM areas.
When shadowing of a region of memory is enabled, at boot time the
BIOS copies the contents of the ROM into the underlying RAM, writeprotects the RAM and then disables the ROM. To the system the
shadow RAM appears as if it is ROM, and it is also write-protected the
way ROM is. This write-protection is important to remember, because if
you enable shadowing of memory addresses that are being used for
RAM, the device using it will cease to function when the RAM can no
longer be written to (it is locked out by the shadowing). Some network
cards for example use parts of the memory region they occupy for both
ROM and RAM functions. Enabling shadowing there will cause the card
to hang up due to the write-protection. Similarly, you should never turn
Revised November 28, 2008
on shadowing of the regions of memory being used for an EMS frame
buffer or for UMBs.
In normal circumstances, the system BIOS and video BIOS are the only
areas shadowed. This can in theory cause problems with some
operating systems, though I have never personally encountered this. I
have also heard rumors of video cards that don't function correctly when
video BIOS shadowing is off, but I haven't encountered that myself
High Memory Area (HMA): This is the first 64 KB (less 16 bytes) of the
second megabyte of system memory. Technically this is the first 64 KB
of extended memory, but it can be accessed when the processor is in
real mode, which makes it different from the rest of extended memory. It
is usually used for DOS, to allow more conventional memory to be
preserved. It occupies addresses 100000h to 10FFEFh.
The story of the high memory area is probably one of the strangest.
Here we actually have a very useful feature that is the result of a bug!
The original IBM PC had only 20 address lines and so its highest
memory address was FFFFFh. However, the weird segment:offset
addressing makes it possible to generate a linear address that is higher
than this number.
Take the address FFFF:FFFF. To convert this to a linear address you
take the segment and multiply it by 16, to get FFFF0. Then you add the
offset, FFFF. FFFF0+FFFF in hexadecimal results in 10FFEFh. There's
a problem with this: that "1" at the front requires a 21st address line to
represent it, and that doesn't exist on the 8088 or 8086 processors used
in the first PCs. They deal with this problem by ignoring the "1". They
treat the address simply as 0FFEFh. Software must be able to handle
this "wrap around" of the memory addresses.
The 80286 does have a 21st address line (it has 24), and due to a bug in
its design it didn't do the wrap around in the same way as the 8088 when
in real mode. When it used address FFFF:FFFF and came up with
10FFEFh for a linear address, it kept it as 10FFEFh instead of wrapping
it around to 0FFEFh like on the older CPUs. This allowed the first FFEFh
Page 11 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
of extended memory (100000-10FFEFh) to be accessed by the chip
even while still in real mode. This block of memory is the high memory
area (HMA).
There was still the problem of ensuring compatibility of the 80286 when
in real mode. IBM solved this in the original AT by using spare lines in
the keyboard controller chip to manage the 21st address line (which is
called the A20 line because address bits are numbered starting with
zero). The keyboard controller turns off the A20 line when the processor
is running in real mode, to allow for full compatibility with the older PC’s.
It turns it back on when running in protected mode.
The use of the keyboard controller to operate the A20 line is why you
sometimes see an error message relating to the A20 line when you have
a keyboard problem with your PC. Microsoft developed a special driver
called HIMEM.SYS that allowed the A20 line to be manipulated under
software control. This allows the high memory area to be put to good
The final step in institutionalizing this former bug as an official PC
feature was removing manipulation of the A20 line from the keyboard
controller. Since that was originally a hack anyway, the controller was
used because there was no better way to do it, after all, it has nothing to
do with the keyboard. In many newer PC’s there is a BIOS option to
allow the chipset to control the A20 line directly. This provides a small
performance increase compared to letting the keyboard controller
manage the line.
Extended Memory: This is all the memory above the high memory area
until the end of system memory. It is used for programs and data when
using an operating system running in protected mode, such as any
version of Windows. Extended memory is found from address 10FFF0h
to the last address of system memory. (Technically, the high memory
area is part of extended memory, it all depends on how you are looking
at things). Extended memory is different from expanded memory (EMS),
which uses bank switching and a page frame in the upper memory area
to access memory over 1 MB.
Revised November 28, 2008
A true, full protected mode operating system like Windows NT, can
access extended memory directly. However, operating systems or
applications that run in real mode, including DOS programs that need
access to extended memory, Windows 3.x, and also Windows 95, must
coordinate their access to extended memory through the use of an
extended memory manager. The most commonly used manager is
HIMEM.SYS, which sets up extended memory according to the
extended memory specification (XMS). XMS is the standard that PC
programs use for accessing extended memory. (HIMEM.SYS is also
used to enable access to the high memory area, which is part of
extended memory). In practical terms, extended memory is usually
referred to as XMS and vice-versa, even though technically XMS is
really a protocol for using extended memory.
Processor Modes
Processor modes refer to the various ways that the processor creates
an operating environment for itself. Specifically, the processor mode
controls how the processor sees and manages the system memory and
the tasks that use it. There are three different modes of operation, that
resulted from the evolution of the PC.
Real Mode
The original IBM PC could only address 1 MB of system memory, and
the original versions of DOS created to work on it were designed with
this in mind. DOS is by its nature a single-tasking operating system,
meaning it can only handle one program running at a time. The
decisions made in these early days have carried forward until now, and
in each new processor, care had to be taken to be able to put the
processor in a mode that would be compatible with the original Intel
8088 chip. This is called real mode.
Real mode is of course used by DOS and "standard" DOS applications.
In fact, today there are relatively few simple DOS programs that just use
the standard 640K that DOS makes available. Even within DOS now
there are special programs available that will "extend" DOS to allow
access to extended memory (over 1 MB) and faster 32-bit access.
These are sometimes called DOS extenders. The protocol that
12 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
describes how to make DOS work in protected mode is called DPMI
(DOS protected mode interface). DOS extenders are used by most DOS
called 386 Enhanced Mode, since it became mainstream with that family
of processors.
Virtual Real Mode
Protected Mode
Starting with the 80286 chip in the IBM AT, a new processor mode was
introduced called protected mode. This is a much more powerful mode
of operation than real mode, and is used in all modern multitasking
erating systems. The advantages of protected mode (compared to real
mode) are:
Full access to all of the system's memory; there is no 1 MB limit in
protected mode.
Ability to multitask, meaning having the operating system manage
the execution of multiple programs simultaneously.
Support for virtual memory, which allows the system to use the hard
disk to emulate additional system memory when needed.
Faster (32-bit) access to memory, and faster 32-bit drivers to do I/O
The third mode of processor operation is actually an additional
capability, an enhancement, of protected mode. In essence, it emulates
real mode from within protected mode, allowing DOS programs to run. A
protected mode operating system such as Windows can in fact create
multiple virtual real mode machines, each of which appear to the
software running them as if they are the only software running on the
machine. Each virtual machine gets its own 1 MB address space, an
image of the real hardware BIOS routines, everything.
Virtual real mode is what is used when you use a DOS box or run a DOS
game in Windows 95. When you start a DOS application, Windows 95
creates a virtual DOS machine for it to run under. Virtual real mode was
introduced starting with the 386 family of processors.
The name of this mode comes from its primary use, which is by
multitasking operating systems. Each program that is running has its
own assigned memory locations, which are protected from conflict with
other programs. If a program tries to use a memory address that it isn't
allowed to, a "protection fault" is generated. DOS, which normally runs in
real mode, can access protected mode using DPMI (DOS protected
mode interface), which is often used by DOS games to break the 640
KB DOS conventional memory barrier.
All processors from the 286 on can use protected mode. 386 and later
processors can switch on the fly from real to protected mode and
vice-versa; the 286 can only switch from real to protected mode once
(switching back requires a reboot). Protected mode is also sometimes
Revised November 28, 2008
13 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Memory Charts
1084 KB
1024 KB
1024 KB
Extended Memory
1 MB
Network ROM BIOS
Hard Disk ROM BIOS
Upper Memory
640 KB
DOS Barrier
Video RAM
Available For
Configuration Files
System Data Files
Revised November 28, 2008
14 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Memory Access of Firmware and Devices
There are three standard BIOS present in most systems and located
pretty much at the same place:
Extended Memory
1 MB to Total Available
High Memory Area
1 MB to 1064 KB
Upper Memory
640 KB to 1 MB
Expanded Memory
System BIOS: The main system BIOS is located in a 64KB block of
memory from F0000h to FFFFFh.
VGA Video BIOS: This is the BIOS that controls your video card. It
is normally in the 32KB block from C0000h to C7FFFh.
IDE Hard Disk BIOS: The BIOS that controls your IDE hard disk
located from C8000h to CBFFFh.
The most common add-in device to use a dedicated memory address
space for its own BIOS is a SCSI host adapter. This may default to
C8000-CBFFFh, which will conflict with an IDE drive that is also in the
system, but can be configured to use a different address space instead,
such as D0000-D7FFFh. In addition, network cards that have the ability
to boot the computer over the network typically also use a memory area
for the boot BIOS.
Expanded Memory Page Form
Upper Memory
640 KB to 1 MB
Conventional Memory
(Base Memory)
0 KB to 640 KB
Input / Output (I/O) Addresses
Input/output addresses (usually called I/O addresses for short) are
resources used by virtually every device in the computer. They represent
locations in memory that are designated for use by various devices to
exchange information between themselves and the rest of the PC.
Memory-Mapped I/O
You can think of I/O addresses like a bunch of small two-way
"mailboxes" in the system's memory. Take for example a
communications (COM) port that has a modem connected to it. When
information is received by the modem, it needs to get this information
into the PC. Where does it put the data it pulls off the phone line?
I/O Address Space Width
Unlike IRQs and DMA channels, which are of uniform size and normally
assigned one per device, sound cards use more than one because they
Revised November 28, 2008
15 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
are really many devices wrapped into one package, I/O addresses vary
in size. The reason is simple: some devices (e.g., network cards) have
much more information to move around than others (e.g., keyboards).
The size of the I/O address is also in some cases dictated by the design
of the card and (as usual) compatibility reasons with older devices. Most
devices use an I/O address space of 4, 8 or 16 bytes. Some use as few
as 1 byte and others as many as 32 or more. The wide variance in the
size of the I/O addresses can make it difficult to determine and resolve
resource conflicts, because often I/O addresses are referred to only by
the first byte of the I/O address.
For example, people may say to "put your network card at 360h", which
may seem not to conflict with your LPT1 parallel port at address 378h. In
fact many network cards take up 32 bytes for I/O;
this means they use up 360-37Fh, which totally overlaps with the parallel
port (378-37Fh). The I/O address summary map helps you to see which
I/O addresses are most used, and to visualize and
avoid potential conflicts.
One additional note about parallel ports. The I/O addresses used for the
different parallel ports (LPT1, LPT2, LPT3) are not universal. Originally
IBM defined different defaults for monochrome-based PCs and for color
PCs. Of course, all new systems have been color for many years, but
even some new systems still default LPT1 to 3BCh. Here is how the two
different labeling schemes typically work:
Parallel Port Addresses
Com Port Addresses
I/O Address
Revised November 28, 2008
I/O Address Details By Number
060h and 064h: These two addresses are used by the keyboard
controller, which operates both the keyboard and the PS/2 style
mouse (on devices that use it).
130-14Fh, 140-15Fh: These addresses are sometimes offered as
options for SCSI host adapters. Note that these options partially
overlap (from 140-14Fh).
220-22Fh: This is the default address for many sound cards. It is
also an option for some SCSI host adapters (first 16 bytes).
240-24Fh: This is an optional address for sound cards and network
cards (first 16 bytes for NE2000 cards).
260-26Fh and 270-27Fh: This is an optional address for sound
cards and network cards. NE2000-compatible network cards take 32
bytes. If set to use this I/O address, they will conflict with several
system devices as well as the I/O address for either LPT2 or LPT3
in the 270-27Fh area.
280-28Fh: This is an optional address for sound cards and network
cards (first 16 bytes for NE2000 cards).
300-30Fh: This is the default for many network cards (NE2000
cards extend to 31Fh). 300-301h is also an option for the MIDI port
on many sound cards.
320-32Fh and 330-33Fh: This is a busy area in the I/O memory
map. First, 330-331h is the default for the MIDI port on many sound
cards. 320-33Fh is an option for some NE2000-compatible network
cards and will conflict with the MIDI port at this setting. Some SCSI
host adapters also offer 330-34Fh as an option. Finally, the old
PC/XT hard disk controller also uses 320-323h.
16 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
340-34Fh: Optional areas for several device types overlap here,
including two options for SCSI host adapters (330-34Fh and
340-35Fh) as well as network cards.
360-36Fh and 370-37Fh: This is another "high traffic" area.
378-37Fh: This is used on most systems for the first parallel port,
and 376-377h is used for the secondary IDE controller's slave drive.
These can conflict with an NE2000-compatible network card placed
at location 360h. Tape accelerator cards often default to 370h, which
will also conflict with a network card placed at 360h).
3B0-3BBh and 3C0-3DFh: These are used by VGA video adapters.
They take all of the areas originally assigned for monochrome cards
(3B0-3BBh), CGA adapters (3D0-3DFh) and EGA adapters
3E8-3EFh: There is a potential conflict here in locations 3EE-3EFh if
you are using a third serial port (COM3) and a tertiary IDE controller.
3F0-3F7h: There is actually a "standard" resource conflic there: the
floppy disk controller and the slave drive on the primary IDE
controller "share" locations 3F6-3F7h. These devices are actually
both present in many systems. Fortunately, this conflict (which exists
for historical reasons) is fairly well known and compensated for, so it
will not result in problems in a typical system. Note that some tape
accelerator cards also offer the use of 3F0h as an option, which will
conflict with the floppy disk controller.
Memory Management
The CONFIG.SYS is used to customize DOS. The CONFIG.SYS can
load special device drivers for optional PC equipment, such as a mouse,
or for software, such as a virus detection program. The CONFIG.SYS
can change DOS system parameters, such as FILES and BUFFERS.
The CONFIG.SYS file does not exist until it is created with a text editor.
Revised November 28, 2008
The CONFIG.SYS must be placed in the root directory of the boot drive.
While the computer is booting, DOS checks for the presence of the
CONFIG.SYS file. The specified device drivers are then loaded into
RAM, and the system parameters are changed as requested. If no
CONFIG.SYS exists, the default values for the system parameters are
Syntax: DEVICE=drive:\directory\devicedrivername
The BUFFERS statement sets the number of disk buffers. Disk buffers
create a cache in RAM, containing information recently read from disk.
This data is scanned by DOS prior from transferring data from the hard
drive. A complex program may require 20 or even 30 buffers. A simple
one, such as a word processor, will probably only require 10 or 15. If
another disk cache program, such as SMARTDRV is being used, the
buffers statement can be set very low. A typical buffers statement looks
like this: BUFFERS=20
The FCBS (File Control Block System) is an area in RAM that stores
information about open files. The default is 4 files control blocks which is
normally sufficient. Therefore, it is unlikely that the FCBS statement will
be needed in CONFIG.SYS. If it is included, consider setting it to 1 with
the command: FCBS=1
The FILES statement is also used to track open files. The default is 8.
Most programs specify the number of file handles they need. Set the
FILES statement to the highest of those numbers, such as: FILES=20
The STACKS statement is used to track interrupts. If the stack area is
not large enough to record all of the interrupts that occur (but have not
been handled by the CPU), the error message Internal Stack Failure,
System Halted may occur. The default number of stacks is frequently
set to STACKS=9,128, which creates a stack area of nine stacks of 128
bytes each. Most programs create their own private stacks in memory,
so the stack area may be set to zero to save RAM.
17 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Syntax: STACKS=numberofstacks, sizeofstacks
Example: STACKS=9,128
The SHELL statement specifies where COMMAND.COM, the DOS
command interpreter, is located on the boot disk. It also may be used to
determine the amount of environment space that is required (PATH and
SET options).
The PATH statement provides DOS with a list of directories to search for
program files not located in the current directory. The PATH statement is
copied into the DOS environmental space. Each directory in the PATH
statement is separated by a semi-colon.
Example: SHELL=C:\COMMAND.COM \p \E:256
RAM cache, with certain programs such as SMARTDRV, may be
created and loaded through the AUTOEXEC.BAT. The PROMPT
command, used to customize the DOS prompt, is also loaded with
AUTOEXEC.BAT. TSRs may also be loaded through AUTOEXEC.BAT.
A typical CONFIG.SYS may appear as follows:
A typical AUTOEXEC.BAT file appears as the following:
@echo off
prompt $P$G
Syntax: SHELL=drive:\directory\commandinterpeter \p
The AUTOEXEC.BAT is a special file that automatically executes
commands when the system is booted. It can be used to make changes
to the DOS environment or to start programs. Some commands typically
found in the AUTOEXEC.BAT use RAM. The AUTOEXEC.BAT is
created with a test editor and placed in the root directory of the boot
Revised November 28, 2008
The high memory area (HMA), found in the first 64K of extended
memory, can be used for DOS, device drivers, and TSRs with the use of
device driver HIMEM.SYS.
Once high memory is made available by loading HIMEM.SYS through
CONFIG.SYS, DOS can be moved out of conventional memory into the
18 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
HMA. The command DOS=HIGH is used after the driver HIMEM.SYS is
Unused areas of upper memory (UMBs) can be used to load TSRs and
device drivers into expanded memory through the following process:
HIMEM.SYS has several advanced options that can be used to specify:
Load HIMEM.SYS (the driver that provides access to the high
memory area).
The minimum number of kilobytes a program must request before
being allowed to use high memory.
Load EMM386.EXE (the driver that controls expanded memory).
The number of extended memory block handles that can be used at
one time.
Use the DOS=UMB command (which transfers the command of the
expanded memory areas in upper memory to DOS.
The amount of memory allocated to the 15H interrupt interface
(applications use the 15H interrupt to access extended memory).
Once the UMBs have been created, use the DOS command
LOADHIGH to load TSRs, and the DOS command DEVICEHIGH to
load device drivers into high memory.
Whether shadow RAM is enabled.
Whether a great deal of information is displayed on the screen when
HIMEM.SYS is loaded and run.
To make extended memory available, load the EMM386.EXE device
Extended memory can be made to simulate expanded memory through
a two step process:
Load HIGMEM.SYS to provide access to the high memory areas.
Load EMM386.EXE to create the page frame in upper memory and
to control expanded memory.
The device driver HIMEM.SYS is used in the CONFIG.SYS to provide
access to the high memory area. The command that loads the
HIMEM.SYS driver should be the first within CONFIG.SYS, unless the
system loads a device driver that provides access to the hard disk drive
(it would then be the first).
Revised November 28, 2008
The EMM386.EXE driver:
Fills UMBs (upper memory blocks) with expanded memory so
device drivers can be loaded there.
Provides access to extended memory for programs that use it.
Simulates expanded memory with extended memory.
Excludes Windows from accessing UMA.
19 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
EMM386.EXE is loaded through CONFIG.SYS, and it must be located
after the HIMEM.SYS command, but before any expanded memory
How much of the UMA is to be dedicated for use by Windows and
not EMM386.
Whether EMM386 is to load itself entirely into conventional memory.
Whether EMM386 should exclude the use of the UMA in the event
that a memory error messages from an application that resides in
the UMA.
If a detailed display should be given when EMM386 is executed.
DEVICE=[drive:\directory\]EMM386.EXE [mem]
Mem is the number specifying the amount of extended memory (in K)
that simulates expanded memory from 16 to 32,786. The default is
RAM or NOEMS activates upper memory blocks. If RAM is used, upper
memory blocks and expanded memory are available. If NOEMS is used,
upper memory blocks are available, but no expanded memory is
simulated and all extended memory remains extended.
EMM386.EXE has several advanced options that can be used to specify:
The exact upper memory address where the page frame starts.
The exact upper memory address for a page.
A range of addresses in upper memory to exclude when creating the
page frame.
The lowest address in extended memory to be used.
The amount of extended memory (in K) that is not to be used as
expanded memory.
The number of fast alternate register sets to be used for tracking
expanded memory.
The number of page handles used.
Revised November 28, 2008
The DOS=HIGH command is used somewhere in the CONFIG.SYS
after the HIMEM.SYS command to load DOS into high memory. This
command can also be used to load device drivers and TSRs into upper
HIGH or LOW controls whether DOS loads into high memory. If HIGH is
specified, then DOS loads into high memory. If LOW is specified, then
DOS loads into conventional memory. The default is LOW.
UMB or NOUMB controls whether device drivers and TSRs load into
upper memory. If UMB is specified, DOS controls upper memory blocks
and lets device drivers and TSRs load there. If NOUMB is specified,
extended memory controls any UMBs created, and device drivers and
TSRs are not allowed to load into upper memory.
20 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
To load DOS into high memory, two commands are needed:
To load device drivers and TSRs into upper memory, several commands
are needed:
The DEVICEHIGH command is used in the CONFIG.SYS to load device
drivers into upper memory if there is enough room for them. If a device
driver is too large to fit into upper memory, it loads into conventional
memory automatically. DEVICEHIGH won’t work without HIMEM.SYS,
Use the MEM/C command to see which device drivers in conventional
memory are the largest and to load them into upper memory according
to size (from largest to smallest). DEVICEHIGH estimates the size of a
device driver and loads it into an appropriate open space in upper
memory. However, some device drivers request additional memory after
they have been loaded and cause the system to lockup.
To load the device driver, ANSI.SYS into upper memory, use the
following commands:
LOADHIGH is the AUTOEXEC.BAT file’s equivalent of DEVICEHIGH.
The LOADHIGH command is used by both DOS 5 and DOS 6 to load
TSRs and certain device drivers into upper memory through
AUTOEXEC.BAT. The same conditions for use apply with
must first be set up.
Syntax: LOAD HIGH=[drive:\directory\]driverfilename
To load the DOS TSR DOSKEY.COM into upper memory, include these
commands in the CONFIG.SYS:
Then include this command in the AUTOEXEC.BAT:
SIZE=size size is used to specify (in hexadecimal) the minimum amount
of upper memory required to load this device. A device will not be loaded
if the minimum amount specified is not available. If size is not specified,
DOS will estimate the amount of upper memory to allocate.
Revised November 28, 2008
There are several things that can be done to streamline memory
useable under the Windows 3.X environment:
Use all of extended memory as extended memory, not expanded.
Windows cannot make use of expanded memory unless it is running
Page 21 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
in standard, and not enhanced, mode. Use the following in the
provides two services. It acts as a disk cache when loaded from the
AUTOEXEC.BAT file, and it provides double buffering if it is loaded from
the CONFIG.SYS. If the hard drive is SCSI or ESDI, or another drive
identified as needing double buffering, SMARTDRV should be loaded
into both the AUTOEXEC.BAT and CONFIG.SYS files to enable both
disk caching and double buffering.
Set FILES at 30.
Set BUFFERS at 30 if not using SMARTDRV, or from 1 to 15 if
If loading a device driver, put it in UMB as follows:
DOScache specifies the size (in K) of extended memory the cache
should occupy prior to Windows starting. WINcache specifies the
maximum size (in K) of extended memory that the cache can occupy
once Windows has started.
Set STACKS to zero because Windows does not need a STACKS
statement: STACKS=0,0
To set up double buffering in the CONFIG.SYS:
In the AUTOEXEC.BAT, load TSRs into UMBs (or consider loading
them with the WINSTART.BAT if the TSRs are to be used with
Windows programs only).
To create a disk cache with the AUTOEXEC.BAT:
SMARTDRV is a program that creates a disk cache in RAM. A disk
cache is a buffer in memory that stores copies of information read from
the hard disk. IF the same information is requested later, it can quickly
be read form RAM, rather than from the Hard disk. When the cache gets
full, the least requested information is overwritten, ensuring that only the
most needed information is kept on the cache. SMARTDRV do not
cache floppy disk operations, so a BUFFERS statement is still needed in
the CONFIG.SYS for those purposes.
RAMDRV.SYS is a program that creates a RAM disk in memory. A RAM
disk looks and acts like any other disk drive (such as C), but the
computer can quickly read and write information to it because it is made
in RAM Treat a RAM disk like any other disk drive by copying files,
deleting files, making directories, and so on. RAMDRV comes with DOS
5, DOS 6, and Windows 3.1. Prior versions provided the utility
VDISK.SYS which accomplished the same thing. Both RAMDRV.SYS
and VDRIVE.SYS are loaded through the CONFIG.SYS file.
The SMARTDRV cache is created using extended memory, unless the
/A parameter is used, and then expanded memory is used. SMARTDRV
Revised November 28, 2008
22 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Whether any programs that require expanded memory are used. If
not sure, answer NO.
Which drivers and TSRs (currently listed in the configuration files)
are to optimized, if not all of them.
Whether or not to scan aggressively. This may result in better
memory management, but if MemMaker makes an error, the system
may lockup.
Whether or not to use the region of memory reserved for
monochrome display adapters as available memory for programs.
Whether or not to keep current command lines for both EMM386
and HIMEM.
Once a RAM disk is created, be sure to include this statement (the drive
letter of the RAM disk) in the AUTOEXEC.BAT file: SET TEMP=D:\
Whether to copy BIOS instructions from conventional memory to the
[sectorsize] [direntries] [/E] {/A]
disksize is the size of the RAM disk in K. Allowable values are from 16
to 4,096. The default is 64. sectorsize is the size of the sectors (in
bytes) used for the RAM disk. Allowable values are 128, 256, and 512.
The default is 512. If this parameter is used, disksize must be specified.
direntries puts a limit on the number of files and directories that can be
placed in the root directory of the RAM disk. Allowable values are from 2
to 1,024. The default is 64. If this parameter is used, disksize and
sectorsize must also be specified. /E tells RAMDRV to place the RAM
disk in extended memory, while /A tells RAMDRV to put it in expanded
MemMaker is a DOS program that will set up the system’s memory
management program. MemMaker actually interviews to determine the
type of work done with the computer, and then configures the
CONFIG.SYS and AUTOEXEC.BAT files for optimum performance. It
can analyze hardware and software to determine the best fit for
programs, device drivers, and TSRs that can be loaded into upper
memory. To run MEMMAKER type: MEMMAKER
It will then ask to choose between Express or Custom setup options.
Express Setup makes the choices for you while the Custom Setup
prompts for informed choices. Some of the questions that may be asked
Whether or not Windows is used.
Revised November 28, 2008
Each column
carries a value 10
times that of the
column on its right
Each column
carries a value 2
times that of the
column on its right
Each column
carries a value 8
times that of the
column on its right l
# of 10000s
# of 1000s
# of 100s
# of 10s
# of 1s
# of 16s
# of 8s
# of 4s
# of 2s
# of 1s
# of 4096s
# of 512s
# of 64s
# of 8s
# of 1s
# of 65536s
# of 4096s
# of 256s
# of 16s
# of 1s
23 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Each column
carries a value 16
times that of the
column on its right
Value in Column 5
+ Value in Column
4 + Value in
Column 3 + Value
in Column 2 +
Value in Column 1
= Decimal Equiv.
1. Choose the largest power of 16 that is less than the decimal number
to be converted.
2. Find out how many times that power of 16 is present in the decimal
number and write it down as the left most converted Hex digit.
3. Subtract the total value represented by that Hex digit from the
decimal number.
4. Repeat the process using the next smallest power of 16 until you’ve
subtracted the decimal number down to nothing.
Example: 449
1. 449 ÷ 256 (largest power of 16) = 1.7539
2. Write down 1
3. 449 - 256 = 193 (save 193)
4. Move to 16s column
5. 193 ÷ 16 = 12.0625
6. 12 = C in Hex. Write C to right of the 1 = 1C
7. C x 16 = 12 x 16 = 192
8. 193 - 192 = 1
9. 1C1
16 x 2 =
32 x 2 =
64 x 2 =
128 x 2 =
256 x 2 =
512 x =
1024 x 2 =
2048 x 2 =
4096 x 2 =
8192 x 2 =
16394 x 2 =
32768 x 2 =
65536 x 2 =
131072 x 2 =
262144 x 2 =
524288 x 2 =
1048567 x 2 =
2097152 x 2 =
4194304 x 2 =
8388608 x 2 =
16777216 x 2 =
33554432 x 2 =
67108864 x 2 =
134217728 x 2 =
268435456 x 2 =
536870912 x 2 =
1073741824 x
2147483648 x =
4294967296 x
Electrical Formulas
Revised November 28, 2008
24 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Electrical Formulas
Power (Watts)
P=I xR
Resistance (Ohms)
Electrical Power Basics
Electricity is described using four main characteristics: voltage, current,
volt-amps and power. The reason why volt-amps and power are of
interest to the computer user is that the amount of power used by your
computer equipment is typically expressed in watts, while the power
supplied by uninterruptible power supplies, for example, is usually
expressed in volt-amps. You must use a conversion factor to make sure
you are not comparing apples and oranges.
The voltage on the line represents the force of the electricity, in terms of
how much "push" it is making across the wire. If you compare the flow of
electricity to the flow of water in a waterfall, the voltage represents how
high the waterfall is; the higher, the stronger the flow of water. Voltage is
measured in volts, abbreviated "V".
E=. PxR
Current (Amperes)
Inductive Reactance
Capacitive Reactance
1φ Voltage Drops
3φ Voltage Drops
3φ Voltage Drops
XL = 2 x Π x f x L
L is in Henries
XC = 1
2x ΠxfxC
C is in Farads
Z = . R + (XL ∀ XC)
VD = 2 x k x L x I
VD = .3 x k x L x I
VD = 1 x k x L x I
Revised November 28, 2008
Current is a measure of how much electricity is in the line; how many
electrons are moving through in a given unit of time. In the waterfall
analogy, the current is how much water is going over the edge of the fall
every second. Current is measured in amperes, or amps, abbreviated
This is the product of voltage and current, and represents the total "raw"
amount of power being supplied by the electrical source. It is measured
(not surprisingly) in volt-amps ("VA").
Power is the amount of actual electrical work being performed over a
period of time. It is measured in watts ("W"). If the load on the electrical
line is a simple one (like a light bulb), power is equal to volt-amps, and
the amount of power consumed is equal to the amount of power
supplied. However, the PC power supply is a complex load, because of
the way that it works to convert the power from the power line to the type
25 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
used inside the PC. In this case, converting between volt-amps and
wattage requires a conversion factor, which companies that make power
equipment usually use as 1.4. Thus, volt-amps would be 1.4 times
power in this case.
Power Supply Wiring
Pin-Out & Function Chart
Power Good
+5V DC
+12V DC
-12V DC
-5V DC
+5V DC
+5V DC
+5V DC
Power Supply Functions and Signals
The power supply's main function is simple: take the power input to it
from the power system of your home or office, and turn it into a form that
the PC can use. However, the PC power supply's job isn't as simple as
that of a standard power converter, such as the kind you might plug into
your car's lighter socket to let you run a TV off your car battery. The PC
power supply must provide several different voltages, at different
strengths, and must also manage some additional signals that the
motherboard uses.
Revised November 28, 2008
AC-DC Voltage Conversion
Standard household current is supplied as an alternating current (AC) of
110 volts (in North America) or 220 volts (pretty much everywhere else).
Alternating current is so named because the signal actually alternates
between positive and negative 60 or so times per second. This type of
power is suitable for many types of devices, but totally unsuited for use
within low-voltage devices such as computers.
The power supply in your system converts this line power into direct
current (DC), which is what the computer requires for operation.
Voltages Provided
A PC power supply provides the following voltages to the motherboard
and drives:
+5V: This is the standard voltage that is used by the motherboard
and most of the circuitry on peripheral cards in the computer. Wires
carrying +5V power are normally red in color.
+12V: This voltage is mostly used to power disk drive motors and
similar devices. It is in most cases not used by the motherboard in a
modern PC but is passed on to the ISA system bus slots for any
cards that might need it. Wires carrying +12V power are normally
yellow in color (but are also sometimes red).
-5V and -12V: These were once used on older systems and are
included for compatibility reasons, but are not generally used in a
modern machine. If you look at the output specifications printed on
your power supply, you'll see that these voltages are supplied with
very low current (less than 1 amp normally) because they are not
usually used for much of anything at all.
+3.3V: Older processors ran at the same +5V that most of the
motherboard runs at. However, most 486 class chips that are 100
MHz or above, and all Pentium, Pentium Pro or equivalent chips, are
actually 3.3V chips (and the newest ones use even lower voltages
internally). Older boards must further convert the 5V signal from the
power supply into the 3.3V that the processor needs. This requires
Page 26 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
a voltage regulator on the motherboard, which adds to its cost and
generates a substantial amount of heat. The newer style ATX power
supply can provide the 3.3V power for the CPU directly, which is
more efficient and reduces heat and cost for the motherboard.
Power Good Signal
When the power supply first starts up, it takes some time for the
components to get "up to speed" and start generating the proper DC
voltages that the computer needs to operate. Before this time, if the
computer were allowed to try to boot up, strange results could occur
since the power might not be at the right voltage. It can take a halfsecond or longer for the power to stabilize, and this is an eternity to a
processor that can run 200 million instructions per second! To prevent
the computer from starting up prematurely, the power supply puts out a
signal to the motherboard called "Power Good" after the power is ready
for use. Until this signal is sent, the motherboard will refuse to start up
the computer.
In addition, the power supply will turn off the Power Good signal if a
power surge or glitch causes it to malfunction. It will then turn the signal
back on when the power is OK again, which will reset the computer. If
you've ever had a brownout where the lights flicker off for a split-second
and the computer seems to keep running but resets itself, that's
probably what happened. Sometimes a power supply may shut down
and seem "blown" after a power problem but will reset itself if the power
is turned off for 15 seconds and then turned back on.
Power On and 5V Standby Signals
In addition to 3.3V power for the processor, the new ATX style power
supply also adds functionality to permit software control of the power
supply, for motherboards and software that support it. The "Power On"
signal can be controlled by the motherboard to tell the power supply
when to turn itself off. The "5V Standby" is a special 5V source to the
motherboard separate from the normal 5V. It remains on even when the
rest of the system is powered down, which lets special circuitry in the
motherboard function even when the normal power is off. This could be
used, for example, to allow a software re-start of the computer even
from a totally off condition.
Revised November 28, 2008
Power Supply Loading
A PC power supply will only function properly if it has a load to drive.
Because of the method used to generate the DC voltage (called
switching), the supply must have something to draw at least some power
or it will not function at all. This is why a system without a hard drive of
some sort in it will normally fail to function properly: there is nothing to
draw power from the +12V line. (The fan built in to the power supply
does draw some of this 12V power but typically not very much).
Warning: Do not turn on the power to the power supply to "test it" without
having at least the motherboard and the hard drive connected to the
power. Doing so will result in either the power supply shutting itself
down, or in the case of some cheaper units, damage or destruction of
the power supply itself. Better power supplies have special resistors built
in to prevent this from happening, but it isn't worth the risk, particularly
since there is really no reason to even try doing it.
Parts of the Power Supply
Power Cord - A standard black power cord to plug the power supply into
the wall.
Power Pass-Through - Some power supplies have a "pass-through"
connector on the back into which you can plug the monitor's power cord
(if it has the right shape). You can also buy adapters that will convert a
standard outlet plug into the shape needed to go into the back of the
computer's supply. When you do this, the monitor is turned on and off
using the computer's power switch. Note: The monitor is not driven by
the computer's internal power supply when you do this; the ability to
have the switch turn the monitor on and off with the PC is the only thing
you gain.
Power Switch - The older style PC case had the power switch at the
back of the machine, usually on the right side of the case. This switch
was actually inside the power supply itself, with a hole cut out in the case
so that it could be reached from the outside. Users hated having to
27 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
reach to the back of the machine to turn it on or off, so modern
machines move the power switch to the front of the case.
Today's AT form factor systems use a remote, physical toggle power
switch that is connected to the power supply using a four-wire cable
(sometimes with a fifth wire, a grounding line). The switch is normally
mounted to the front of the case. Some "slimline" cases actually use a
mechanical plastic stick that is pushed on by the button on the front of
the case and presses against the real switch on the power supply itself,
in the back of the machine.
Warning: The remote power switch wires on an AT system carry live
110V (or 220V) AC power whenever the power supply is plugged in,
even when the power is off! You should not work inside the computer
with the power plugged in.
The newer ATX form factor changes how the power switch works
altogether. Instead of using a physical toggle switch connected to the
power supply, on ATX systems the power switch is electronic. It
connects to the motherboard, much the way that the reset switch does.
So on an ATX system, when you press the power switch, you aren't
really turning on the power supply; it is more like sending a "request" to
the motherboard to turn the system on. This design has several
advantages over the older AT style power switch, including giving the PC
the ability to turn itself on and off under software control, if the
appropriate supporting hardware and software are used.
External Voltage Selector Switch - Power supplies support 110V input,
220V input or both. Dual-voltage supplies normally have a selector in the
back that controls which voltage you are using; obviously, you want to
make sure it is set correctly. There are also some supplies that will
automatically support either 110V or 220V without a selector switch, but
they are uncommon.
Power supplies that support dual voltage input are preferable since they
are more flexible, although few people transport their PCs overseas
(other than notebooks, for which this discussion isn't relevant).
Revised November 28, 2008
Warning: If the power supply has a 110/220 switch, make sure it is set
correctly, or else! This is usually done for you by the manufacturer of
the case (which normally contains the power supply), but I have seen
cases that were originally intended for one part of the world end up in a
different part, with the wrong external voltage set as the default.
Power Conversion Circuitry - The "guts" of the power supply is usually
a circuit board with various electrical components on it, mounted inside
the metal box of the supply. All the cables going into and out of the
power supply go to this circuit.
Motherboard Power Connectors - The older style AT or baby AT
power supplies use two 6-wire connectors, attached to the motherboard
adjacently. The problem with these connectors is that they look almost
identical, and swapping them by mistake will fry your motherboard! The
correct orientation of these connectors is with all four black wires
(grounds) together in the middle. This is how the wires are laid out for
this type of connector:
Wire #
Connector #1
Power Good
Connector #2
The new ATX style power supply and motherboard eliminates this
confusion by using a single 20-wire keyed connector, which can only be
inserted into the motherboard one way. The ATX connector is wired like
Wire #
Wire #
Power On
28 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Power Good
+5 Standby
Warning: Since the ATX form factor power supply is controlled by
signalling from the motherboard, this means that power is being supplied
to the motherboard even when the system is "off". Never work on the PC
without first disconnecting the power cord from the back of the case.
Drive Power Connectors - There are usually three or four 4-wire power
connectors for drives. They come in the standard, larger size that is
used for almost all hard drives as well as CD-ROM drives and 5.25"
floppies, and the smaller mini-plug used by most 3.5" floppies. Both
connectors are keyed so they can only be installed in one way. Both
connectors are also wired the same way:
Wire #
+12V (Yellow)
Ground (Black)
Ground (Black)
+5V (Red)
Note: Fans inside your computer normally use +12V for power, but use a
red wire, not a yellow one.
Power Supply Fan - The power supply includes a fan for cooling
purposes. This fan is critical to preventing overheating of the overall
system; it not only cools the power supply, it creates the flow of air in the
case that cools all of the components. On a standard AT power supply,
the fan blows air out of the case. On an ATX power supply it blows air
into the case and over the processor, which is mounted on the
motherboard next to the power supply. The fan is powered using a +12V
wire within the power supply.
Power Supply Form Factors
The form factor of the power supply refers to its general shape and
dimensions. The form factor of the power supply must match that of the
Revised November 28, 2008
case that it is supposed to go into, and the motherboard it is to power.
You may not find too many people discussing form factors as they relate
to power supplies--this is because power supplies normally come
included in system cases, so people talk about the form factor of the
case instead.
As with cases, the most common form factors are the Baby AT, which is
the older standard used by most PCs up until recently, and the ATX,
which is the new form factor introduced by Intel in 1995.
Baby AT Form Factor
The baby AT form factor is probably found on more machines built over
the last 10 years than any other. The name comes from the fact that it is
a smaller version of the case and power supply style used on the original
IBM AT system. The baby AT form factor will be around for a long time,
due to the large installed base of systems that use it. However, it is now
out of favor for building new PCs, having been replaced by the ATX form
ATX Form Factor
The ATX form factor was the most significant change in case and
motherboard design since the invention of the PC. It is currently gaining
in popularity and is now used on the majority of name-brand massproduced PCs, though it is less popular amongst home builders and
smaller clone shops. The ATX design has several significant advantages
over the older designs, but the enormous installed base of existing Baby
AT cases and motherboards will mean the change to ATX will take some
time. Led by Intel's own motherboard designs, this change will occur
over the next two years and by the end of the century the majority of
modern systems, and almost all new systems, will be using ATX.
The ATX power supply differs from the Baby AT power supply in several
important ways. First, it has the additional voltage and power lines that
are described here. Second, the fan is reversed so that it blows into the
case instead of out of it. This helps keep the case clean by pressurizing
the inside of the case, and also eliminates the need for CPU fans, since
the air blows directly onto the processor. Third and perhaps most
significant, the ATX power supply is turned on and off using electronic
Page 29 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
signalling instead of a physical toggle switch, and can also be turned on
and off under software control. ATX power supplies must be matched
with ATX cases and motherboards. An overall review of the ATX design
is in the form factor chapter on motherboards.
The total output from the power supply should be close to its rating. The
only way to verify this is to use electrical test equipment, but fortunately
there really isn't a need to do this in most cases.
System Power Requirements
Note: Apparently there are some ATX cases out there that don't use the
standard ATX power supply form factor. Electrically the power supply
has the same connections, etc. but the fan blows out the back of the
case, just like on a regular baby AT power supply.
Power Supply Output and Ratings
Power supplies are normally rated based on their total power output, in
watts. For example, you can buy a 200W, 250W or 300W power supply.
Purchased systems often skimp on the power supply's output, and
cheaper slimline models can have units that provide only 100W, greatly
limiting their ability to be expanded. This section takes a look at power
supply output, ratings and related issues.
Output Power
As explained in the section on power basics, power is a function of the
voltage level and the amount of current (electrical flow) in the wire. For
the direct current electricity inside the computer, the relationship is
simple: power (in watts) = voltage (in volts) times current (in amps). A
power supply splits this total power over each of the different voltages it
provides. For example, a 200W power supply might provide its power as
shown in this chart:
Total Power
Provided At The
Voltage Level
Revised November 28, 2008
Power Provided
At The Voltage
199.2 Watts
Determining how much power your system needs can be either simple
or difficult, depending on whether you want to make a crude estimation
or a more exact calculation.
Calculate the Requirements: Calculate your requirements from the
power use specifications of the components inside your machine. For
each of the +5V and +12V power supplies, determine how much current
is required by each device, add them up, and
get a power supply that
can handle the load.
Peak vs. Continuous Power: When you read the current (or power)
rating of a device such as a hard disk, you are usually seeing the
manufacturer's claim of how much the device uses during normal,
continuous operation. The actual peak draw of the device is at its
maximum, however, at startup. A hard disk can take up to double the
normal amount of current when it is spinning up. If you have 3 or 4 hard
disks in your system and all of them start up at the same time, this can
be a tremendous demand on your power supply.
Determining Power Requirement
To determine what your power requirement is, first find your power
supply's maximum wattage capacity. It should be written on the outside
of the supply case or in your system documentation. Compare this
number to your PC's power needs by adding up the individual wattage
requirements of each component (including any new devices you intend
to add). Look under the technical specifications in your PC's manual or
in the documentation for the peripheral. If you can't find the wattage
numbers for a component, look for the voltage and amperage, then
calculate the power usage in watts by multiplying the volts times the
amps. You can also calculate your own estimates by consulting the
table below:
30 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Cases come in several different major styles. Despite the commonlyused names, such as "tower", "mini-tower", etc. There are no standards
for case size or shape, and one company's full tower case can be very
different in details from another. Some of the companies that make highquality high-end cases incorporate very interesting features into their
cases that stretch their capabilities for the same amount of space taken.
Determining Your Power Requirements
Wattage It Typically Uses
CD-ROM Drive
Hard Disk
Graphics Board
Tape Drive
Bus Card
Network Adapter
Zip Drive
Floppy Drive
The two basic styles for the case are the tower case and the desktop
case. The desktop is a rectangular case that is wider than it is tall and
sits on the desk. The tower is like a desktop flipped on its side and can
sit on the floor or on the desk.
Full Tower
After adding up all the component wattage, increase that number by 20
percent. Too much capacity is better than not enough. Also, you need a
little extra power during start-up.
Notebook Batteries
Comparison of Battery Basics
1.2 volts
1.2 volts
3.7 volts
3.7 volts
2.1 volts
3 volts
1.05 volts
3 volts
NiCD = nickel cadmium; NiMH = nickel-metal hydride; Li =
Lithium; Wh = watt hour; Wh/kg = watt hours per kilogram; Wh/l =
watt hours per liter.
System Case Styles and Sizes
Revised November 28, 2008
A full tower case is the largest standard PC case available on the
market. These units are big, heavy and at two to three feet in height, are
intended to be installed on the floor. They are the most flexible,
expandable cases, with many drive bays to support a large number of
internal devices. They normally come with larger power supplies to
support these devices (but not always) and since they are so roomy,
they are the easiest to work in and the best at keeping components from
overheating. They are, naturally, also the most expensive type of case.
For servers and other high-end machines, bigger cases than standard
full towers are available. These large cases often incorporate special
features such as locking front covers, slide-out drive bays and wheels
(since they are heavy). They can cost as much as an entire regular PC
by themselves.
Mid Tower
A mid tower case is similar to a tower case, but slightly smaller. This size
seems to be all over the place; some companies make mid tower cases
that are no larger than others' mini towers. A mid tower is a good
compromise for those that want more space than a mini tower offers,
without going to the expense of a full tower case.
Mini Tower
Currently one of the most popular styles for new PCs, and the most
popular of the stand-up style case, the mini tower is the case of choice
Page 31 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
for most homebuilders. It is roughly the same size as a desktop case,
but due to its design is generally easier to use and often has more
capacity. It also tends to keep components cooler than a desktop case.
Since it is not nearly as large as a full tower case, many people put the
mini tower on the desktop, next to the monitor. This is particularly
preferable if you are using a larger (17" or larger) monitor. Putting an 80
pound 20" monitor on top of your desktop case is not good for your eyes
or the case.
The desktop has been the de facto standard for PC cases since the
original IBM PC, XT and AT machines, which came in a desktop case
only. Today's desktops are different than those ones were, both in size
and construction, but the idea is the same: the box sits on the desk, and
the monitor sits on the box. For those who don't want to (or cannot) put
the case on the floor, the desktop actually saves space compared to a
tower case, since the monitor won't sit on top of a tower case. A desktop
doesn't, in general, let components cool as well as a similarly-sized
tower, and the monitor sitting upon it can be part of this equation.
A further disadvantage of the desktop case is that often, one or more of
the internal drive bays is vertical. Hard disk drives are allowed to be
mounted vertically but it is better to mount them horizontally. In addition,
it can be confusing to many users to use a 3.5" floppy disk mounted on
its side, as it's hard to figure out which way the disk goes (it will only go
in one way).
Note: Virtually all desktop cases sold today are really "mini" desktops,
meaning they are smaller than the old full-size desktop cases used on
the original PC, XT and AT. The designation "mini" is often not used any
more simply because it has been so many years that these "mini" cases
have been the standard.
Also sometimes called "low profile" or even "pizza box", this is a smaller
version of the desktop case. It was invented in part as a cost-cutting
measure but at least as much in order to reduce the amount of space
the box takes up on the desk. For many people, this case is aesthetically
Revised November 28, 2008
pleasing because it takes up the least space on the desktop.
Unfortunately, it fares rather poorly in every other regard. These cases
have little capacity for additional drives, have the poorest expandability,
are hard to work in, and have the worst cooling. The Slimline style is also
in some ways a form factor, because it requires a specific type of
motherboard to work in it.
Proprietary Designs
In addition to the standard case styles, there are some machines that
use totally unique designs. Some Compaq models for example have the
monitor and case in one large box. These machines are generally
marketed to the home user or first-time buyer as a "home appliance"
and the idea is supposed to be that this is "simpler" than having the
monitor be in a separate box. The disadvantage of this design, aside
from the fact that it is totally proprietary and therefore hard to upgrade, is
that if you want to upgrade your PC you lose your monitor, and similarly,
if you decide your monitor is too small and want a larger one, you have a
problem because your PC is in the same box. I strongly recommend
against integrated units because of their inflexibility.
Comparison of Case Styles
The table below compares and summarizes the different case styles and
their advantages and disadvantages.
Note: The number of bays depends on the case, but the numbers given
are typical ranges based on what I usually see. For external bays, the
first number is how many 3.5" bays the case typically will have, and the
second is how many 5.25" bays. Internal bays are usually 3.5". Power
supply ratings are measured in watts (W) and are just what is typical for
the style. Getting a full tower case is no guarantee of a 300 watt power
supply, but it's much more likely to find one in a full tower than a
2 + 4 or
3 to 5 or
250 to 375
32 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
2 to 4
200 to 300
2 or 3
170 to 250
1 or 2
1 or 2
150 to 230
100 to 200
System Case Form Factors
In addition to coming in different styles, cases also come in different
form factors. The form factor describes the general layout of the case,
the positioning of the slots in the back of the case, and other concerns
that must be taken into account when matching the case to a
motherboard. (This is also true of the internal power supply, though
since most cases come with a power supply this is less of a concern).
The most popular case form factors currently are the "Baby AT" and
ATX styles. These cases are not interchangeable as they work
differently and require motherboards with a different form factor. If you
are building your own system you must ensure your motherboard and
case/power supply form factors match. There are some cases that can
handle both baby AT and ATX motherboards, but I've not used one
enormous installed base of existing Baby AT cases and motherboards
has caused the change to ATX to take some time.
The ATX case is similar to a Baby AT case except that the holes in the
back are altered to fit the changed design of the ATX form factor
motherboard, in particular the integrated I/O ports. The ATX case also
uses a different, ATX power supply. Most ATX cases have more
features than AT cases because they are newer, and they are usually
more expensive for the same reason. The advantages of the ATX
design are discussed in the form factor chapter on motherboards.
Note: Some high-quality ATX cases will also
accommodate baby AT
Slimline Form Factor
The Slimline case, also sometimes called "Low Profile" can be
considered a form factor as well, because it requires a specific type of
motherboard and power supply to fit into it. These are the LPX and NLX
form factors.
Motherboard Form Factors
Baby AT Form Factor
This is the most popular form factor for machines built within the last few
years. The name comes from the fact that it is a smaller version of the
case style used on the original IBM AT system. Baby AT cases are used
with baby AT style motherboards, which can be recognized based on
their dimensions and placement of components.
The form factor of the motherboard describes its general shape, what
sorts of cases and power supplies it can use, and its physical
organization. For example, a company can make two motherboards that
have basically the same functionality but that use a different form factor,
and the only real differences will be the physical layout of the board, the
position of the components, etc. In fact, many companies do exactly this,
they have for example a baby AT version and an ATX version.
ATX Form Factor
The first significant change in case and motherboard design in many
years, the ATX form factor was invented by Intel in 1995. It is continuing
to gain in popularity and is just now beginning to surpass the AT form
factor for use by small PC shops and homebuilders; it has been the form
factor of choice for brand-name systems for some time. The ATX design
has several significant advantages over the older designs, but the
AT and Baby AT
Up until recently, the AT and baby AT form factors were the most
common form factor in the motherboard world. These two variants differ
primarily in width: the older full AT board is 12" wide. This means it won't
typically fit into the commonly used "mini" desktop or minitower cases.
There are very few new motherboards on the market that use the full AT
size. It is fairly common in older machines, 386 class or earlier. One of
Revised November 28, 2008
33 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
the major problems with the width of this board (aside from limiting its
use in smaller cases) is that a good percentage of the board "overlaps"
with the drive bays. This makes installation, troubleshooting and
upgrading more difficult.
The Baby AT motherboard was, through 1997, the most common form
factor on the market. After three years and a heavy marketing push from
Intel, the ATX form factor is now finally overtaking the AT form factor
and from here out will be the most popular form factor for new systems.
AT and Baby AT are not going anywhere, however, because there are
currently just so many baby AT cases, power supplies and
motherboards on the market. These will need an upgrade path and I
believe that at least some companies will make motherboards for the
newer technology in AT form factor for some time, to fill this upgrade
market demand.
A Baby AT motherboard is 8.5" wide and nominally 13" long. The
reduced width means much less overlap in most cases with the drive
bays, although there usually is still some overlap at the front of the case.
There are three rows of mounting holes in the board; the first runs along
the back of the board where the bus slots and keyboard connector are;
the second runs through the middle of the board; and the third runs
along the front of the board near where the drives are mounted.
One problem with baby AT boards is that many newer ones reduce cost
by reducing the size of the board. While the width is quite standard,
many newer motherboards are only 11" or even 10" long. This can lead
to mounting problems, because the third row of holes on the
motherboard won't line up with the row on the case. (Some reduce or
skip the third row entirely). Fortunately, it is almost always possible to
solidly mount the motherboard using only the first two rows of holes, and
then using stubbed spacers for the third row. See the Motherboard
Physical Installation Procedure for more perspective on these issues.
Baby AT motherboards are distinguished by their shape, and usually by
the presence of a single, full-sized keyboard connector soldered onto the
board. The serial and parallel port connectors are almost always
Revised November 28, 2008
attached using cables that go between the physical connectors mounted
on the case, and pin "headers" located on the motherboard.
The AT and Baby AT form factors put the processor socket(s)/slot(s)
and memory sockets at the front of the motherboard, and long
expansion cards were designed to extend over them. When this form
factor was designed, over ten years ago, this worked fine: processors
and memory chips were small and put directly onto the motherboard,
and clearance wasn't an issue. However, now we have memory in
SIMM/DIMM sockets, not directly inserted onto the motherboard, and we
have larger processors that need big heat sinks and fans mounted on
them. Since the processor is still often in the same place, the result can
be that the processor+heat sink+fan combination often blocks as many
as three of the expansion slots on the motherboard! Most newer Baby
AT style motherboards have moved the SIMM or DIMM sockets out of
the way, but the processor remains a problem. ATX was designed in
part to solve this issue.
ATX and Mini ATX
The first significant change in case and motherboard design in many
years, the ATX form factor was invented by Intel in 1995. After three
years, ATX is now finally overtaking AT as the default form factor choice
for new systems (although AT remains popular for compatibility with
older PCs, with homebuilders, and with some smaller PC shops). Newer
Pentium Pro and Pentium II motherboards are the most common users
of the ATX style motherboard (not surprisingly, since the Pentium II is
the newest processor and uses the newest chipset families). Intel
makes the motherboards for many major name brands, and Intel only
uses ATX.
The ATX design has several significant advantages over the older
motherboard styles. It addresses many of the annoyances that system
builders have had to put up with. As the Baby AT form factor has aged, it
has increasingly grown unable to elegantly handle the new requirements
of motherboard and chipset design. Since the ATX form factor specifies
changes to not just the motherboard, but the case and power supply as
well, all of the improvements are examined here:
34 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Integrated I/O Port Connectors - Baby AT
motherboards use
headers which stick up from the board, and a cable that goes from
them to the physical serial and parallel port connectors mounted on
to the case. The ATX has these connectors soldered directly onto
the motherboard. This improvement reduces cost, saves installation
time, improves reliability (since the ports can be tested before the
motherboard is shipped) and makes the board more standardized.
Integrated PS/2 Mouse Connector: On most retail baby AT style
motherboards, there is either no PS/2 mouse port, or to get one you
need to use a cable from the PS/2 header on the motherboard, just
like the serial and parallel ports. (Of course most large OEMs have
PS/2 ports built in to their machines, since their boards are custom
built in large quantities). ATX motherboards have the PS/2 port built
into the motherboard. Reduced Drive Bay Interference: Since the
board is essentially "rotated" 90 degrees from the baby AT style,
there is much less "overlap" between where the board is and where
the drives are. This means easier access to the board, and fewer
cooling problems.
Reduced Expansion Card Interference - The processor
socket/slot and memory sockets are moved from the front of the
board to the back right side, near the power supply. This eliminates
the clearance problem with baby AT style motherboards and allows
full length cards to be used in most (if not all) of the system bus
slots. Better Power Supply Connector: The ATX motherboard uses
a single 20-pin connector instead of the confusing pair of nearidentical 6-pin connectors on the baby AT form factor. You don't
have the same risk of blowing up your motherboard by connecting
the power cables backwards that most PC homebuilders are familiar
Soft Power Support - The ATX power supply is turned on and off
using signalling from the motherboard, not a physical toggle switch.
This allows the PC to be turned on and off under software control,
allowing much improved power management. For example, with an
ATX system you can configure Windows 95 so that it will actually
turn the PC off when you tell it to shut down.
Revised November 28, 2008
3.3V Power Support - The ATX style motherboard has support for
3.3V power from the ATX power supply. This voltage (or lower) is
used on almost all newer processors, and this saves cost because
the need for voltage regulation to go from 5V to 3.3V is removed.
Better Air Flow - The ATX power supply blows air into the case
instead of out of it. This means that air is pushed out of all the small
cracks in the PC case instead of being drawn in through them,
cutting down on dust accumulation. Further, since the processor
socket or slot is on the motherboard right next to the power supply,
the power supply fan can be used to cool the processor's heat sink.
In many cases, this eliminates the need to use (notoriously
unreliable) CPU fans. See here for more on system air flow and
cooling. Improved Design for Upgradability: In part because it is the
newest design, the ATX is the choice "for the future". More than that,
its design makes upgrading easier because of more efficient access
to the components on the motherboard.
LPX and Mini LPX
Conventionally used in mass-produced "name brand" retail systems, the
LPX motherboard form factor goes into the small Slimline or "low profile"
cases typically found on these sorts of desktop systems. The primary
design goal behind the LPX form factor is reducing space usage (and
cost). This can be seen in its most distinguishing feature: the riser card
that is used to hold expansion slots.
Instead of having the expansion cards go into system bus slots on the
motherboard, like on the AT or ATX motherboards, LPX form factor
motherboards put the system bus on a riser card that plugs into the
motherboard. Then, the expansion cards plug into the riser card; usually,
a maximum of just three. This means that the expansion cards are
parallel to the plane of the motherboard. This allows the height of the
case to be greatly reduced, since the height of the expansion cards is
the main reason full-sized desktop cases are as tall as they are. The
problem is that you are limited to only two or three expansion slots!
LPX form factor motherboards also often come with video display
adapter cards built into the motherboard. If the card built in is of good
Page 35 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
quality, this can save the manufacturer money and provide the user with
a good quality display. However, if the user wants to upgrade to a new
video card, this can cause a problem unless the integrated video can be
disabled. LPX motherboards also usually come with serial, parallel and
mouse connectors attached to them, like ATX.
While the LPX form factor can be used by a manufacturer to save
money and space in the construction of a custom product, these
systems suffer from non-standardization, poor expandability, poor
upgradability, poor cooling and difficulty of use for the do-it-yourselfer.
They are not recommended for the homebuilder, but if you are
upgrading one of these systems, you may not have many alternatives.
Much the way the AT form factor eventually became outdated and less
suitable for use with the newest technologies, the LPX form factor has
over time begun to show the same weaknesses. The need for a
modern, small motherboard standard has lead to the development of the
new NLX form factor. In many ways, NLX is to LPX what ATX is to AT: it
is generally the same idea as LPX, but with improvements and updates
to make it more appropriate for the latest PC technologies. Also like
ATX, the NLX standard was developed by Intel Corporation and is being
promoted by Intel. Intel of course is a major producer of large-volume
motherboards for the big PC companies.
NLX still uses the same general design as LPX, with a smaller
motherboard footprint and a riser card for expansion cards. Read the
section on LPX for a basic understanding of this design concept. To this
basic idea, NLX makes the following main changes, most of which are
familiar to those who have read about the enhancements introduced by
Support for AGP video cards.
Better thermal characteristics, to support modern CPUs that run
hotter than old ones.
More optimal location of CPU on the board to
and better cooling.
More flexibility in how the motherboard can be set up and
Enhanced design features, such as the ability to mount the
motherboard so it can slide in or out of the system case easily.
Cables, such as the floppy drive interface
cable, now attach to
the riser card instead of
the motherboard itself, reducing cable
and clutter.
Support for desktop and tower cases.
The NLX form factor is, like the LPX, designed primarily for commercial
PC makers mass-producing machines for the retail market. Many of the
changes made to it are based on improving flexibility to allow for various
PC options and flavors, and to allow easier assembly and reduced cost.
For homebuilders and small PC shops, the ATX form factor is the design
of choice heading into the future.
Comparison of Form Factors
This table is a summary comparison of the sizes of the various
motherboard form factors, and compatibility factors:
Revised design to support larger memory modules and modern
DIMM memory packaging.
Support for the newest processor technologies, including the new
Pentium II using SEC packaging.
Revised November 28, 2008
allow easier access
Full AT
Baby AT
Very Old
Older PCs
Match To
Case and
Power Supply
Full AT
Full Tower
36 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Mini APX
Mini ATX
Retail PCs
Retail PCs
Retail PCs
Note: Some ATX cases will accept baby AT form factor motherboards.
The Passive Backplane Concept
While "real" motherboards are the norm for PCs, there is another similar
(but yet different) way to construct a PC. In many custom machines-high-end servers and the like, instead of having an integrated
motherboard, a passive backplane design is used. In this design, the
chipset, processor and cache are moved to their own separate
"expansion card", and the motherboard is reduced to little more than a
physical place for everything to plug into. Some theorize that Intel may
lead the PC market back in this direction, as it increasingly integrates
more and more in its packaging. The Pentium II has the processor and
cache on a daughtercard, called Single-Edge Card or SEC packaging,
which begins this trend. It is rumored that future processors may
incorporate the chipset as well; this is to be called Mobile Module or
MMO packaging. At that point it will be hard to draw the line between
what is a daughtercard and what is the actual motherboard itself, since
the chipset is really the intelligence of the motherboard.
The MMO package is for the notebook market, with the goal of making
notebook manufacturing easier, but there is no reason to believe the
trend couldn't easily spread to the desktop world, especially since SEC is
already a step in that direction.
Parts of the Motherboard
I/O Cables / Connectors - If your motherboard uses the ATX, LPX or
NLX form factors, it has integrated serial and parallel port connectors. If
it is AT or Baby AT style, then you normally should get three ribbon
Revised November 28, 2008
cables with the motherboard to connect the serial and parallel
connectors to the motherboard. The serial cables normally have 9 wires
each (even if they go to 25-pin connectors) and the parallel cable has
25. These connectors normally come pre-mounted into metal inserts
intended to be installed into the case where expansion cards go. See
this procedure for instructions on mounting these connectors to the case
and attaching them to the motherboard.
Warning: These cables are not entirely "universal". In most cases using
older cables with a newer motherboard or swapping motherboards
between machines while leaving the cables behind in the case will work.
However, it is possible that it will not. If you are doing this type of swap,
beware of problems with the I/O ports and install new cables if
Floppy Cable - The motherboard should come with one standard 34-pin
floppy disk cables. This is the unusual-looking cable with 5 connectors
on it (one plus two pairs), with a half-twist in 7 of the wires in the middle
of the cable.
IDE/ATA Interface Cable - A motherboard normally comes with one
standard 40-pin IDE (ATA) hard disk / CD-ROM cable. It should have 3
connectors on it, but sometimes will only have 2. If you want to use two
IDE channels (which is preferred in most cases for performance
reasons), you will usually have to purchase an additional interface cable.
Motherboard Integrated Components
Printed Circuit Board - Motherboards are multiple layer printed circuit
boards, also sometimes called PCBs. The physical board that you see is
actually a sandwich of several thinner layers, each containing some of
the circuitry required to connect the various components on the board.
At one time this was expensive, difficult-to-manufacture technology, but
time and automation has reduced this complexity to the point where the
board itself is a minor component of overall cost.
Still, good motherboards are solid and well designed, while cheaper
ones tend to be flimsy, and increase the chance of a (virtually impossible
to diagnose) electrical problem on the board. In addition, better boards
Page 37 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
reduce interference problems because of their design, and reduce the
chances of problems in assembling the PC. Thin boards are more
subject to damage from flexing when inserting peripherals; the thicker
the board, the better.
Processor Sockets or Slots - The motherboard has one or more
sockets or slots to hold the processor(s).
motherboards are by far the most common, but dual processor and even
quad processor boards are not hard to find. (Quad boards often use
special, proprietary designs employing riser cards.) The type of socket or
slot used dictates the type of processor (and in some cases the speed)
that can be used by the motherboard. Not surprisingly, the standards for
processor sockets and slots have been generally defined by Intel. See
this discussion of processor sockets and slots, including which support
which processors. Most older Intel processors, up to the Pentium Pro,
use a square-shaped socket for the processor. The newest processors
from Intel, starting with the Pentium II, are mounted on a daughterboard,
which plugs into an SEC ("single-edge connector") slot to connect to the
Note: With the invention of the SEC slot for the Pentium II, new
motherboards are appearing that use just the one slot for either the
Pentium II or the Pentium Pro. Of course the Pentium Pro uses a socket
and not a slot, so these manufacturers create a daughterboard similar to
the Pentium II's, that just contains a socket for the Pentium Pro chip.
This gives great flexibility since either chip can then be used with the
same motherboard.
Most modern motherboards that have a socket use the ZIF (zero
insertion force) style socket, that allows the processor to be inserted or
removed from the motherboard by using a lever that tightens or loosens
the processor's pins in the socket. This is a vast improvement over the
older style sockets, which required you to exert considerable force on
the surface of a delicate (and expensive) processor, just to get it into the
Memory Sockets - Most motherboards today come with between 2 and
8 sockets for the insertion of memory. These are usually either SIMMs
Revised November 28, 2008
(single inline memory modules) or DIMMs (dual inline memory modules).
These can come in different sizes. See here for details on memory
packaging technologies. The motherboard usually labels these sockets
"SIMM0" through "SIMM7" or "DIMM1" through DIMM3", etc. The
sockets are almost always filled starting with the lowest numbered
socket first. Most Pentium class or higher motherboards require SIMMs
to be inserted in pairs, but DIMMs may be inserted individually. See here
for details on memory bank size and selecting appropriate memory.
Note: The maximum number of memory modules on a motherboard is
dictated by the design of the motherboard's chipset. However, not all
motherboards have the maximum number of sockets that the chipset
allows for, so you need to shop around if memory expansion is an
important issue to you.
Cache and/or Cache Sockets - Virtually all newer 486 or Pentium class
motherboards come with either integrated secondary cache or sockets
for secondary cache to be inserted. Also called "Level 2" or "L2" cache,
secondary cache is high-speed memory that is used to buffer processor
requests to the regular system memory; it is discussed in some detail
here. Either 256 KB or 512 KB of cache is most common, with larger
sizes such as 1 MB and higher now coming onto the market.
Motherboards for Pentium Pro and Pentium II PCs don't have level 2
cache on them; it is already integrated into the processor itself for the
Pentium Pro, and into the processor package for the Pentium II.
Motherboards typically have either cache chips soldered directly into the
board, sockets for cache chips, or a socket for COASt, or "cache on a
stick". Yeah, it's really called that. :^) This socket is sometimes called a
CELP ("card edge low profile"). It takes a module with cache chips on it,
that looks something like a memory SIMM (except it is usually inserted
differently into the motherboard). There are also motherboards that have
both: they come with 256 KB of built-in cache and a COASt module for
the addition of 256 KB more. These are now becoming less common
with many companies deciding it is cheaper to just put 512 KB on the
motherboard to begin with.
38 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Having level 2 cache on the motherboard may eventually be a thing of
the past. The trend is toward putting the L2 cache either on the chip
itself (a la Pentium Pro) or on a daughterboard (Pentium II and future
Intel processors).
I/O Bus Slots - All motherboards have one or more system I/O buses,
that are used to expand the computer's capabilities. The slots in the
back of the machine are where expansion cards are placed (like your
video card, sound card, network card, etc.). These slots allow you to
expand the capabilities of your machine in many different ways, and the
proliferation of both general purpose and very specific expansion cards
is part of the success story of the PC platform.
Most modern PCs have two different types of bus slots. The first is the
standard ISA (Industry Standard Architecture) slot; most PCs have 3 or
4 of these. These slots have two connected sections and start about a
half-inch from the back of the motherboard, extending to around its
middle. This is the oldest (and slowest) bus type and is used for cards
that don't require a lot of speed: for example, sound cards and modems.
Older systems (generally made well before 1990) may have ISA slots
with only a single connector piece on each; these are 8-bit ISA slots and
will (of course) only support 8-bit ISA cards.
Pentium systems and newer 486-class motherboards also have PCI
(Peripheral Component Interconnect) bus slots, again, usually 3 or 4.
They are distinguished from ISA slots in two ways. First, they are
shorter, and second, they are offset from the back edge of the
motherboard by about an inch. PCI is a high-speed bus used for devices
like video cards, hard disk controllers, and high-speed network cards.
Note: Newer PCI motherboards have the connectors for the hard disks
coming directly from the motherboard. These connectors are part of the
PCI bus, even though the hard disks aren't connected to a physical PCI
The newest PCs add another, new connector to the motherboard: an
Accelerated Graphics Port slot. AGP is not really a bus, but is a singledevice port used for high-performance graphics. The AGP slot looks
Revised November 28, 2008
similar to a PCI slot, except that it is offset further from the back edge of
the motherboard.
Older 486 systems use VESA Local Bus, or VLB slots instead of PCI to
connect high-speed devices. This is an older bus which began to be
abandoned in favor of PCI at around the time the Pentium was
introduced. VLB slots look like ISA slots, only they add third and fourth
sections beyond the first two. This makes their connectors very long,
and for that reason VLB cards are notoriously difficult to insert into or
remove from the motherboard. Care must be exercised to avoid
Some motherboards incorporate a so-called "shared" ISA and PCI slot.
This name implies a single slot that can take either type of card, but that
isn't possible because the two slot types are physically incompatible. In
order to save space while maximizing the number of expansion slots,
some designers put an ISA slot on the board right next to a PCI slot; you
then have the choice to use either the ISA or the PCI slot, but not both.
This design is possible because ISA cards mount on the left-hand side
of a slot position, while PCI slots mount on the right-hand side.
Power Connector(s) - The motherboard has a socket to attach the
power cables coming from the power supply. As discussed in the power
supply section, ATX form factor motherboards and power supplies use a
single, keyed 20-wire motherboard power cable. All others use a pair of
6-wire cables. The cables are connected to the motherboard so that the
black wires (grounds) are together in the middle. This connector is
usually found near the back right-hand side of the motherboard, near the
power supply.
Voltage Regulators - The advent of processors and other devices
running at different voltages, in the "old days" they all used to run at the
5V provided by a standard power supply, has led to the necessity of one
or more voltage regulators on most modern motherboards. These
regulators reduce the 5V signal to those voltages typically needed by
processors: 3.3V or lower.
39 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Processor manufacturers, in their never-ending battle to cram more on
the chip without making it melt due to the heat generated by its millions
of transistors, incorporate a dual voltage or "split rail" voltage scheme
into their latest designs. The processor is fed two voltages: the external
or "I/O" voltage is typically 3.3V, while the internal or "core" voltage is
lower: usually 2.8 to 3.2 volts. The voltage regulator (and the jumpers
that control it) is responsible for generating the correct voltage for the
The voltage regulator can normally be identified by the large heatsinks
that are placed on it; voltage conversion generates a great deal of heat.
The regulator is controlled via processor voltage jumpers, which are set
to the appropriate voltage for the processor being used. On many
motherboards the cooling level of the entire system case is important to
ensuring that the voltage regulators are cooled satisfactorily.
Overheating regulators can cause lockups and other problems.
Capacitors - Capacitors are electrical components that are used to filter
and smooth signals on the motherboard. For the mostpart, they receive
relatively little attention since they are passive and not very exciting.
However, recently many motherboard manufacturers have been
skimping on capacitors by either reducing the number on the board, or
using smaller or cheaper ones. Over time, cheaper capacitors tend to
dry out and lose their effectiveness. The result of this corner-cutting is
possibly spurious signals on the board (causing problems that are
virtually impossible to troubleshoot) and reduced motherboard life.
The only real way to protect against this sort of cheap construction is to
avoid buying motherboards only on the basis of price. If you buy a quality
board you will generally get what you are paying for. Look for name
brands on the capacitors, and to make sure that they are a good size.
Capacitors of the type used on motherboards generally come in two
flavors: tantalum or electrolytic. There has been a lot of banter back and
forth about whether tantalum capacitors are better than electrolytic ones.
As with most things, sticking to assessing the overall quality of the board
is probably better than making a decision solely on the basis of what
type of capacitors is used.
Revised November 28, 2008
Keyboard and Mouse Connectors - The types of keyboard and mouse
connectors your PC will have depend on the style and form factor of your
motherboard. There are generally two arrangements. Newer PCs, PCs
using the ATX, LPX or NLX form factors, and many proprietary (brand
name) machines, use a pair of small 6-pin connectors for the keyboard
and dedicated (PS/2) mouse. Older PCs using the AT form factor use
the older, large, 5-pin keyboard connector, and do not have a dedicated
mouse port connector. These PCs use a serial port for the mouse.
These connectors are located at the back of the motherboard.
Tip: Some motherboards don't come with a built-in PS/2 mouse port, but
include a header for a PS/2 mouse port, which you can use to add a
PS/2 mouse port yourself.
Chipset Chips - You will in most cases see between two and four chips
labeled with the name of the company that supplied the chipset for your
motherboard. For example, the Intel Triton II "HX" Pentium chipset
comprises two chips: the Intel 82439HX, and the Intel 82371AB. The
chipset normally controls data flow to and from the processor, memory
and cache, as well as the system buses.
Keyboard Controller - The keyboard controller does what the name
implies. It also controls the built-in PS/2 port, if it exists on the
motherboard. On some newer PCs, this controller is in fact further
integrated into the Super I/O controller chip, so your motherboard may
not have a separate chip for it.
Real-Time Clock and CMOS Memory Chip - This chip is holds the
real-time clock that keeps the date and time on your PC, as well as the
CMOS RAM that holds your PC's BIOS settings. It is powered by the
PC's built in battery, which may in some cases be built into the real-time
clock package itself. This chip is often marked "Dallas", after Dallas
Semiconductor, the company that makes a large number of them.
Super I/O Controller - The Super I/O controller chip performs many of
the standard input/output functions that used to be done by multiple
smaller chips. National Semiconductor makes a large number of these
Page 40 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
chips, and they can sometimes be identified by looking for this name on
the surface of the chip.
purchasing a motherboard with a replaceable battery is a very wise
idea. Unfortunately, they are getting harder and harder to find.
BIOS Chips - Your system BIOS is coded into read-only memory
(ROM) chips that are placed on your motherboard. There are usually
one or two BIOS chips, depending on the board, and often labeled with
the name of the BIOS software company (usually Award or AMI).
Jumpers - Jumpers are pins on a motherboard or other device, that are
used to provide configuration information to the hardware. A single
jumper consists of a pair of pins, with a small rectangular shunt that can
be placed over both pins to short them together. The hardware is
programmed to act one way when the jumper is shorted, and another
way when it is left open. The jumpers are normally numbered JP1, JP2
etc.. For some functions, a group of jumpers is used.
Battery - The PC uses a low-power battery to maintain certain
information when the power is off; for example, your BIOS settings, the
current date and time, and resource assignment for Plug and Play
systems. This battery can take one of several forms:
On many older PCs, it is a large rectangular box that is attached to
the motherboard with wires, and often velcroed to the power supply
inside the case.
Some PCs use a battery soldered to the board that looks like a small
cylinder or barrel. It is not generally detachable.
Some PCs use a flat round watch battery in a
Some PCs don't appear to have a battery at
all. In this case, the
battery may be a lithium type that is within one of the other packages
(typically the real-time clock package). It may also be an integrated
rechargeable Nickel-Cadmium battery (sometimes called an
"accumulator") that is recharged whenever the line power is
connected to the machine. These batteries cannot be replaced,
although they are rated for a long life (5 to 10 years). My personal
opinion is that having an integrated, life-limited, non-replaceable
component like a battery on a motherboard is bad design. There are
many, many PCs with perfectly functional motherboards that are
more than 5 years old, and having to throw them away over a bad
battery is just a waste. Also, if you ever need to clear the CMOS
memory on the motherboard due to corruption or a lost password, it
is much more difficult to do with an integrated battery unless there is
a CMOS clear jumper on the motherboard. For this reason,
Revised November 28, 2008
metal holder.
Every motherboard differs in its jumper numbering, positioning, and
most importantly, what the settings for each jumper mean. This is why
having the motherboard manual is so crucial for anyone who wants to
work on their PC. This procedure provides specific instructions and
caveats for configuring your motherboard.
One of the newest innovations on the market is the "jumperless"
motherboard, such as the IT5H made by Abit. With these boards you
make many of the hardware settings, such as CPU type and speed, and
even CPU voltage, using BIOS settings, while some others are retained
as regular jumpers (typically, CMOS clear and cache size). This
arrangement lets you change the clock speed of the CPU as easily as
you would change any other BIOS setting, and makes upgrading the
processor a snap. It also makes it easier for motherboard manufacturers
to add support for new processor types as they are put onto the market.
Many people think that "jumperless" is the new wave of motherboard
design, and certainly the ability to change more settings without opening
up the box is a great advantage. Others like the control of being able to
physically set a jumper (recalling with frustration some of the problems
with new technologies like Plug and Play that remove this control to
software with sometimes mixed results). Frankly, considering that most
people set their motherboard jumpers only once (or at most, once a year
or so when they upgrade) I consider the whole jumperless motherboard
thing more of a fad than a real evolution in design. For those that like to
overclock, jumperless designs have obvious advantages.
41 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Here is a list and brief explanation of the settings that you are most likely
to find in your manual:
Processor/CPU Voltage - Almost all newer boards have one or more
jumpers to set the voltage for the processor. Obviously, this needs to be
set correctly or you risk destroying the chip. In addition, newer
processors use two voltages: an "external" I/O voltage and an "internal"
core voltage. For your motherboard to support these newer processors,
it must have jumpers to set both of these voltage types. Sometimes
there can be a mismatch between the voltage that the processor
requires and the voltage that the motherboard supplies. This often
happens because the motherboard is designed to support a new
processor based on the spec, but the voltage is changed for design
reasons later on. You should contact the motherboard manufacturer in
this case. Usually you can still use the processor if the motherboard can
supply a voltage close to the number required--say, within 0.1V-because processors have a range of voltages they can use, not just a
single number. See here for more on processor voltages.
Processor Speed / Bus Speed / Multiplie - Every 486 class or later
motherboard (excluding jumperless designs) has a way to specify the
speed of the processor. There are two main methods for selecting
processor speed, and your manual will show you which your
motherboard uses. Some motherboards provide a list of the various
speeds supported, and a diagram of how to set the jumpers to match
that speed. Others instead require you to set two separate jumpers: one
controls the memory bus speed, and the other sets the processor
"multiplier" (how many times the memory bus speed the processor
Processor Type - You may find this instead of, or in addition to, the two
settings listed above. In an effort to save the user the hassle of figuring
out voltages and speeds, some motherboards combine the jumpers into
one jumper set or group. Then, they provide a long list with each
processor type and speed that the board supports, and tell you how to
set each of a group of jumpers so that it works appropriately. If you are
setting up a Pentium 133, you'll find it on the list and be told how to set
jumpers 1, 3, 7, 12, and 18, for example. The only problem with this
Revised November 28, 2008
arrangement is that unless they also tell you what each of the individual
jumpers is actually controlling, it can be difficult to set up a newer
processor that may be supported just fine by the board but not be listed
in their documentation. You have less information about how the board
actually works. You can sometimes find help in this case on the
manufacturer's web site. Cache Size and Type: Some boards can have
different amounts of cache, and some can have cache either built in or
on a COASt module. There is often a jumper or two to set which is used
and how much is on the board. Other boards only come with one
arrangement of cache or can auto-detect when you insert a COASt
module, so they will lack these jumpers.
Memory Size/Type - Almost all newer PCs auto-detect the amount and
type of RAM in the system, but many older 486 (and earlier) models
require jumpers to be changed when changing the amount of memory.
Flash BIOS Enable - Many boards require you to set a jumper to a
special position in order to enable the flash BIOS update feature. This
jumper is usually set to the "normal" position except when doing a BIOS
CMOS Clear - One of the most famous of annoying PC problems is the
"lost BIOS setup password" problem, that locks the user out of the BIOS
setup program. Some newer PCs have built into the motherboard the
ability to clear the BIOS by temporarily setting a jumper and then
replacing it (in essence this disconnects the CMOS memory from the
battery so it discharges and resets). This jumper is also usually set to
the "normal" position.
Battery Source - Some boards let you switch the battery from an
internal to an external source, and a jumper is used to control the
Disable Jumpers - Some motherboards use special jumpers to enable
you to disable parts of the circuitry. This is entirely board-dependent.
Ports and Headers - Ports are connectors used to connect external
cables and devices to the motherboard. In addition to the keyboard and
Page 42 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
PS/2 mouse connectors, some types of motherboards (such as the
ATX) have on the back edge of the motherboard integrated serial and
parallel ports.
Primary and Secondary IDE/ATA Hard Disk Interface: Most
newer motherboards have integrated headers for two IDE channels.
Each has 40 pins.
Motherboards that don't use integrated ports, use headers on the
motherboard instead. Headers are groups of pins used to connect
devices or ports to the motherboard. A cable runs from the port and is
plugged into the header on the board. The following are the headers that
are commonly found on a typical Baby AT style motherboard (though
some of the functions are provided as headers to ATX style boards as
well, if an integrated port is not provided):
Floppy Disk Interface: Most newer
motherboards provide a 34pin header for the
floppy disk cable.
SCSI: Some motherboards have integrated SCSI ports or headers,
though they are uncommon. They are either 50 or 68 pins in size,
depending on the flavor of SCSI implemented.
Serial Ports: As mentioned, there are usually two serial port
headers. Each has 9 or 10 pins (only the first 9 are used, however).
Parallel Port: This header is used for the external parallel port and
has 26 pins (25 are actually used).
PS/2 Mouse Port: Some good motherboards provide a header for a
PS/2 mouse port when this port is not already on the board. This lets
you add a PS/2 port yourself so you can enjoy its advantages. The
PS/2 mouse header has 5 pins.
USB (Universal Serial Bus): A new technology, USB is proposed to
be the new standard for connecting devices such as keyboards,
mice and external modems to the PC. Since it is not in common use
yet, many motherboards provide a header for your to run a port for it
in the future if needed, instead of an actual port (which will appear
on future boards if and when USB catches on). This header has 10
IR (Infrared) Port: Some motherboards have a header to allow you
to run a connection for an infrared communications port, typically
used for wireless communication to printers and similar devices.
Infrared ports are far more common on laptop computers than
desktop machines. These headers have 4 or 5 pins.
Revised November 28, 2008
Note: Older motherboards that don't have integrated serial, parallel,
floppy disk and IDE hard disk headers or ports use an I/O controller
board that plugs into an expansion slot, to provide these functions. The
connections are almost identical, although in some cases additional
jumpers have to be set. Consult the manual for the I/O controller board
for details.
Pin Connectors
The motherboard provides several connectors that are attached to the
case LEDs, indicators, and switches. These (as usual) vary by
motherboard, but the ones described here are typical. The physical
layout of these connectors can vary a lot as well; some motherboards
physically separate these connectors on the board while others group
many together into a large "multifunction connector". Functionally there
is no difference but it is easier to make an "off by one" connection
mistake on a multifunction connector.
Note: The LEDs on the case are a form of diode, and this means in part
that they will only conduct electricity in one direction. This means that if
you connect them backwards, they will not work. However, they usually
have a protection circuit in them so that if you connect
them backwards they will not be damaged, and you can just switch
them. Your manual or (less commonly) the board itself may provide an
indication of which pin is positive and which is negative on the
43 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
These are the pin connectors you will typically find on a modern
Power LED and Keylock Switch: These are two different
functions, each requiring two pins, but for historical reasons, they
are often combined into a single 5-pin connector. Older cases had
the keylock and power LED wires going to a single 5-pin plastic
connector. On newer cases they are often separated (in fact many
newer cases have no keylock switch) but the 5-pin motherboard
connector remains for compatibility. Here is its usual configuration.
Note the unused pin between the two power LED pins:
Pin #
Power LED Output (+)
No Connection (NC)
Power LED Ground (-)
Keylock Signal (+)
Keylock Ground (-)
Reset Switch: This 2-pin switch has no polarity so you can connect
it either way.
Turbo Switch: Another relic of the past, many motherboards still
include this connector, even though it ceased having any real
meaningful purpose after the early part of the 486 generation of
motherboards. In most cases it is best just to leave it unconnected.
Warning: Some motherboards (especially older ones) default to "turbo
off" if not connected to a switch. If you are installing a motherboard of
this type, you must jumper (short) the turbo switch pins if you are not
going to connect the turbo switch.
Turbo LED: This is the counterpart to the turbo switch of course. I
sometimes connect the LED to this connector if the case has one
even if there is no turbo switch, as then the light will come on (which
avoids confusion as to "why the turbo light is off").
IDE/ATA Hard Disk Activity LED: This connector signals the LED
when the motherboard detects activity on any of the system's IDE
hard disks. Some motherboards have four pins for this connector.
On many of these the four pins represent two different pairs, both of
which work: pins 1 and 2 are one pair and 3 and 4 are another, and
either pair can be used. On other motherboards, only two of the pins
can be used; you need to check your motherboard manual.
Speaker: This is a 4-pin connector for the case speaker, but only
the two outer wires are used. There is no polarity here either, you
can connect the speaker either way.
CPU Fan: Some motherboards have a 2-pin connector for powering
the processor's fan, if the fan has the right type of power connector.
Many fans just connect to the regular power connectors from the
power supply.
Suspend Mode Switch: Some systems have a two-pin connector
for a toggle switch to put the system into suspend mode. The turbo
switch button on the case can be used for this function on newer
Suspend Mode LED: Some systems have a connection for an LED
that is lit when the system enters suspend mode, either by using the
suspend mode switch or through automatic power management.
Power Switch: On ATX systems there will be a connector for
attaching two leads from the case power on/off button. On ATX PCs
the power switch sends a signal to the motherboard to turn on the
PC; it doesn't attach directly to the power supply as it does on older
AT style systems.
Revised November 28, 2008
44 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Bus Types
Expansion (I/O) Bus Architectures & Performance
Type I
Type II
Revised November 28, 2008
IRQ Assignments
Standard Function
System Timer
Keyboard Controller
2 IRQ Cascade
Real Time Clock
(Appears as IRQ 2)
MB Mouse Port/A
Math Coprocessor
Primary IDE
Secondary IDE/A
Serial Port 2 (COM 2)
Serial Port 1 (COM 1)
Sound/Parallel Port 2 (LPT 2)
Floppy Disk Controller
Parallel Port 1 (LPT 1)
16 bit
16 bit
16 bit
16 bit
16 bit
DMA Channel Assignments
FD Controller
ECP Parallel/A
16 bit
8 bit
8 bit
8 bit
8 bit
45 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
16 bit
There are two kinds of external connections to the Input/Output unit.
These are called the data bus and the address bus.
16 bit
16 bit
16 bit
16 bit
16 bit
16 bit
The data bus conveys data and instructions. The number of bits in
the data bus directly influences how quickly it can move information.
Data bus widths range from 8 bit, to 64 bit in the latest Pentium
The address bus sends memory locations of data or instructions to
or from the microprocessor. The number of bits available on the
address bus influences how much memory the microprocessor can
address. A micro processor with 16 address lines can directly work
with 216 addresses, or 65,536 (64K) different memory locations
(1x2 binary). The different microprocessors used in various PC’s
span a range of address bus widths from 20 to 32 bits.
Input/Output Unit
Control Unit
Arithmetic/Logic Unit
All three parts of the microprocessor interact together.. The I/O Unit is
under the control of the Control Unit, and the operation of the Control
Unit may be determined by the Arithmetic/Logic Unit.
The I/O Unit determines the bus width of the microprocessor, which
influences how quickly data and instructions can be moved in and
out of the microprocessor.
The Control Unit operates the microprocessor’s internal clock,
which determines the rate at which the chip operates.
The Arithmetic/Logic Control Unit and its registers within
determine how much data the microprocessor can operate on at one
The Input/Output Unit
 Links the microprocessor to the rest of the circuitry on the computer,
passing along program instructions and data to the registers of the
control unit and the arithmetic/logic unit.
Each signal leaving the microprocessor goes through a signal buffer
in the I/O unit that boosts its current capacity.
Revised November 28, 2008
The Control Unit
 Consists of the Data Cache, the Code Cache, the Branch Predictor
Unit, and the Instruction Prefetch Buffer and Decode Unit.
The Control Unit is a clocked logic circuit that controls the operation
of the entire chip.
Follows the instructions contained in an external program and tells
the Arithmetic/Logic Unit what to do.
Receives instructions from the I/O Unit, translates them into a form
that can be understood by the Arithmetic/Logic Unit, and keeps
track of which step of the program is being executed.
The Arithmetic/Logic Unit
 The Arithmetic/Logic Unit handles all the decision making (the
mathematical computations and logic functions) that are performed
by the microprocessor. The unit takes the instructions decoded by
the control unit and either caries them out directly or executes the
appropriate microcode to modify the data contained in its registers.
The results are passed back out of the microprocessor through the
I/O Unit.
Page 46 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
There are two ways to speed up the execution of instructions (other
than internal clock rate increase). These both involve reducing the
number of internal steps required for execution. This can be done
by making the microprocessor more complex so that steps can be
combined (CISC) or by making the instructions simpler so that fewer
steps are required (RISC).
Other ways of trimming the cycles required by programs is to
operate on more than one instruction simultaneously. Three
approaches to processing more instructions at once are pipelining,
Superscalar, and dynamic execution architectures.
3. Microcode has made machines more complex, but it has also made
them more flexible by allowing backward compatibility. This allows
the data processing circuitry of the chip to be designed
independently of the instructions it must carry out. In effect, the
microcode in a microprocessor is a secondary set of instructions
that run invisibly inside the chip on a nanoprocessor (essentially a
microprocessor within a microprocessor). However, microcodes
makes computers and microprocessors more complicated. RISC
(Reduced Instruction Set Computers) design computers have a
reduced need for microcode and have reduced instructions sets.
CISC (Complex Instruction Set Computers) computer require
more complex instructions sets and more microcode.
There are eleven main factors that determine the speed and
performance of a CPU. They are as follows:
1. Internal Clock Speed - Measured in MHZ (millions of cycles per
second), this is sometimes referred to as the internal bus speed.
The first IBM computer, the 8088 PC, had an internal clock speed of
4.77 MHZ. To prevent the microprocessor from reacting to invalid
electrical signals, the chip waits for an indication that it has a valid
command to carry out. This indication is provided by the system
clock. The microprocessor checks the instructions given to it each
time it receives a clock pulse. Except for the latest Superscalar,
pipelined microprocessors, most chips carry out one instruction
every clock cycle. Despite different frequencies inside (internal
clock) and outside (external, or system bus clock), the system clock
is used to synchronize logic operations. The only time that clock
speed gives a reliable indication of relative performance is when you
compare two identical chip designs that operate at different
frequencies, i.e. 133 and 166 MHZ.
2. Microcode Efficiency - The number of steps required to multiply
two numbers. Microcode contain the instructions that tell the
processor what to do, and in what order. The unit of measure is in
clocks. Table 1 below shows the variations in microcode efficiency
between some of the INTEL X86 CPU’s.
Revised November 28, 2008
Pentium Pro
Add Two Numbers
Add Two Numbers
Add Two Numbers
Add Two Numbers
Add Three Numbers
4. Word Size - The largest number (bits) that can be worked on at one
time by the CPU. Also commonly referred to as the register size or
register width. To put this in perspective, it is necessary to fully
understand the terms bit, nibble, byte, word, and double word.
(Please refer to these definitions in Glossary A at the end of this
paper). A register size can range from 16 bits to 32 bits. With the
forthcoming Inter Merced CPU currently under design, 64 bit
registers are right around the corner.
5. The register is a part of the CPU that acts as both memory and a
workbench. It holds bit patterns until they can be worked on or
output. In modern microprocessors, all registers are nearly equal in
composition. Most modern RISC computers have 32 registers. The
width of the registers has a substantial impact on the performance of
the CPU. The more bits assigned to each register, the more
Page 47 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
information that can be processed in every microprocessor
operation. The performance advantage of using wider registers
depends on the software being run. For example, if a computer
program tells the microprocessor to work on 16 bits at a time, the full
power of the 32 bit registers will not be used.
6. Floating Point Capability - The Floating Point Unit (FPU), also
referred to as math coprocessor, off loads complex math
calculations and operations, freeing up the CPU for other tasks. The
concern her is, does the CPU have a math coprocessor, and if so,
what are its capabilities.
7. Cache RAM - Does the CPU have Level 1 (on board) or Level 2
(system board) cache RAM? If so, what is the size and the quality?
Cache Ram enables the CPU to have both data and instructions
readily available, so it can avoid going to the slower, and more
distant, main memory. RAM cache sizes may range from 8K
Megabytes, to 32K Megabytes found in the AMD K6 and Pentium II
processors. Most cache RAM is of the static (SRAM) design, but it
can be either asynchronous or synchronous. Synchronous SRAM is
normally quick enough in nanoseconds (Ns) to synchronize
operation with the CPU.
8. Data Bus - This should say data bus width, or width of the data bus.
The number of data lines reflects how much information can be
carried to the CPU at one time, or the largest number of bits that can
enter the CPU at one time. Data bus widths range from 8bit, to 64
bit found in the Pentium and Pentium Pro processors.
9. Address Bus - The size or width of the address bus or address
path. This determines how much memory the CPU can address or
use. The larger the address, the more memory the CPU can
address. Address bus widths range from 20 to 32 bit in the most
modern microprocessors. Table 2 shows how the address bus
width affects CPU memory addressing capabilities. Widths may
range from 20 bit to 32 bit. In the not to future, 64 bit address bus’s
will be a reality.
Revised November 28, 2008
10. Pipeline, Superscalar, & Dynamic Execution Pipelining enables
a microprocessor to read an instruction, start to process it, and then,
before finishing with the first instruction, read another instruction.
Because every instruction requires several steps each in a different
part of the chip, several instructions can be worked on at once, and
passed along through the chip like a bucket brigade. Intel’s Pentium
has four levels of pipelining, so up to four different instructions may
be undergoing different phases of execution at one time inside the
In general, the more stages of pipelining, the greater the
acceleration. But, the bigger the pipelining, the more time wasted.
The waste resulting from branching begins to outweigh the benefits
of bigger pipelines in the vicinity of five stages. The most powerful
microprocessors use a technology called branch prediction logic,
where the microprocessor makes its best guess at which branch a
program will take as it is filling up the pipeline.
Superscalar systems provide two or more execution paths for
programs, and thus, can process two or more program parts
simultaneously. The Pentium has two parallel pipelined execution
Dynamic Execution involves optimally adjusting instruction
execution by predicting program flow, analyzing the program's
dataflow graph to choose the best order to execute the instructions,
then speculatively executing instructions in the preferred order.
Address Bus
Addressable Memory
4 GB
48 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
11. Main (Core) Memory Type & Timing
When the CPU is unable to find the instructions or data it wants in
the RAM cache, it then must go to the main memory to find what it
needs to proceed onward. The speed at which the CPU can access
this information has a large affect on its performance. Hence, the
type of memory will determine the memory’s ability to send data and
instructions to the CPU expeditiously. Important factors here are the
memory timing sequences, and the speed of the memory in
nanoseconds. Table 3 summarizes the various types of DRAM and
their performance factors.
12. Density
Density refers to the transistor technology involved in the design and
manufacture of the microprocessor. Considering that CPU’s consist
of millions of tiny transistors, their size (in microns) and spacing
(also in microns) has much to do with the performance of the device.
Smaller transistors can be more tightly packed. Consequently, they
can be spaced closer together. The closer the spacing, the less
distance electrical signals have to travel. Thus, the relative speed of
the CPU increases. Table 4 shows the relative change in transistor
technology over the years. The current standard is .35 micron.
However, .28 micron, and even .25 micron chips are currently under
design and being tested.
Pentium Pro
Pentium II
Revised November 28, 2008
To better understand how these ten performance factors apply in the
real world, we will take a short look at how the microprocessor has
developed historically. I will attempt to keep this in very basic terms.
However, when the Pentium, Pentium Pro, and AMD K6 processors are
reviewed, the discussion may become a little more technical. With these
chips, the culmination and integration of performance enhancing
technology will be seen and realized. It must be kept in mind that these
chips are of an advanced and complex architecture. It would be
impossible to describe how they work and how they perform in simple
Intel 4004/8080 Family
 Introduced in 1971
 4 bit bus and registers
 Designed to run at 108 kHz
 8080 had the register and data bus width doubled to 8 bits
Intel 8086 Family
 Introduced in 1978
 Doubled the register size to 16 bits
 Doubled the data bus to 16 bits
 20 bit address bus
 Designed to run at 4.77 MHz
INTEL 286 Family
 Introduced in 1984
 Full 16 bit data bus and registers
 Designed to run from 6 to 10 MHz
 Address lines increased to 24
 Protected mode memory available
INTEL 386 Family
 Introduced in 1985
 Full 32 bit processor (address bus, data bus, and registers)
 Protected and virtual memory with enhanced MMU
 Designed to run at 16 to 33 MHz
49 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Floating Point Unit optional
Added 16byte L1 cache
INTEL 486 Family
 Introduced in 1989
Full 32 bit
Improved macrocode efficiency with reduced instruction set
execution time
Piplined internal structure
Designed to run at 33 MHz
Utilized clock doubling and clock tripling
8K L1 cache
Built in synchronous math coprocessor
VL bus introduced
Intel Pentium
 Introduced in 1993
Doubled data bus to 64 bits
Address bus increased to 36 bits
32 bit registers (word size processing)
Utilizes pipelining, and Superscalar architecture. Consequently, the
Pentium is essential two 486 CPU together, with only one half
having a math coprocessor
L2 RAM cache added
Revised November 28, 2008
Here is how the Pentium works in the simplest terms:
The bus interface unit (BIU) sends and receives both data and coded
instructions from the computer’s random access memory (RAM), or L2
(Level 2) cache. The processor is connected to RAM by the PC’s
motherboard circuits, which are known as the bus. In this case, we are
speaking of the system, or external bus. Data moves into the processor
64 bits at a time.
The bus interface unit sends and receives data and code along two
separate paths that can each handle 64 bits at a time. One path leads
to an 8K storage unit, or cache, used for data. The other path leads to
an identical cache used only for code that tells the processor what to do
with the data. The data and code stay in the caches until other parts of
the microprocessor need them.
While the code is waiting in its cache, another part of the CPU called the
branch prediction unit inspects the instructions to determine which of
the two arithmetic logic units (ALUs) can handle them more efficiently.
This inspection ensures that one of the ALUs isn’t waiting while the other
ALU finishes execution another instruction.
The instruction prefetch buffer retrieves the code tagged by the
branch prediction unit and the decode unit translates the software code
into the type of instructions that the ALUs can understand.
If any floating point numbers, or numbers with decimal fractions need
processing, they are passed to the specialized processor called the
FPU, or Floating Point Unit.
Within the execution unit, two arithmetic logic units process all data
consisting only of integers. Each of the ALUs receives instructions up to
32 bits at a time from the instruction decode unit. Each ALU processes
its own instructions simultaneously using data moved from the data
cache to the electronic scratch pad know as a register.
The two arithmetic logic units and the floating point unit send the results
of their processing to the data cache. The data cache send the results
Page 50 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
to the bus interface unit, which, in turn, sends the results to RAM, or the
L2 cache.
Intel Pentium Pro Processor
The new approach used by the Pentium Pro processor removes the
constraint of linear instruction sequencing between the traditional fetch
and execute phases, and opens up a wide instruction window using an
instruction pool. This approach allows the execute phase of the Pentium
Pro processor to have much more visibility into the program's instruction
stream so that better scheduling may take place. It requires the
instruction fetch/decode phase of the Pentium Pro processor to be
much more intelligent in terms of predicting program flow. Optimized
scheduling requires the fundamental execute phase to be replaced by
decoupled dispatch/execute and retire phases.
This allows
instructions to be started in any order but always be completed in the
original program order.
interface unit to read this data from main memory and return it before
moving on to instruction 2. The CPU stalls while waiting for this data
and is thus being under-utilized.
While CPU speeds have increased at least 10 times over the past 10
years, the speed of main memory devices has only increased by 60
percent. This increasing memory latency, relative to the CPU core
speed, is a fundamental problem that the Pentium Pro processor solves.
The Pentium Pro processor is designed from an overall system
implementation perspective which will allow higher performance systems
to be designed with cheaper memory subsystem designs.
The Pentium Pro processor is implemented as three independent
engines coupled with an instruction pool as shown in Figure 1. It is
important to note why this three independent-engine approach was
One of the fundamental facts of today's microprocessor
implementations is that most CPU cores are not fully utilized. Consider
the code fragment (courtesy of Intel) in Figure 2 below.
The first instruction in this example is a load of r1 that, at run time,
causes a cache miss. A traditional CPU core must wait for its bus
Revised November 28, 2008
51 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
To avoid this memory latency problem the Pentium Pro processor looksahead into its instruction pool at subsequent instructions and will do
useful work rather than be stalled. In the example, instruction 2 is not
executable since it depends upon the result of instruction 1. But, both
instructions 3 and 4 are executable. The Pentium Pro processor
speculatively executes instructions 3 and 4. Since it cannot commit the
results of this execution, the results are instead stored back in the
instruction pool awaiting in-order retirement.
The core executes
instructions depending upon their readiness to execute and not on their
original program order.
This approach has the side effect that
instructions are typically executed out-of-order.
The cache miss on instruction 1 will take many internal clocks, so the
Pentium Pro processor core continues to look ahead for other
instructions that could be speculatively executed. The fetch/decode unit
must correctly predict if the dispatch/execute unit is to do useful work.
The register set and results are only committed to permanent machine
state when it removes completed instructions from the pool in original
program order.
Dynamic Execution Technology can be summarized as optimally
adjusting instruction execution by predicting program flow, analyzing the
program's dataflow graph to choose the best order to execute the
instructions, and having the ability to speculatively execute instructions in
the preferred order. The Pentium Pro processor dynamically adjusts its
work, as defined by the incoming instruction stream to minimize overall
execution time. The Pentium Pro processor has the unique combination
of improved branched prediction (the offering of the core many
instructions), data flow analysis (choosing the most efficient order), and
speculative execution (executing instructions in the preferred order) that
enables it to deliver a 33% performance boost over the Pentium
processor. This unique combination is called Dynamic Execution, and
similar in impact as Superscalar was to the Pentium) P5 generation of
The K6 is in large part comparable to the Pentium Pro in terms of design
elements, but it has trappings of the Pentium processor as well. Like the
Revised November 28, 2008
Pentium Pro, the K6 can perform speculative and out-of-order execution
of instructions. The big difference between the two chips is in cache
architecture. Each chip has an on-chip L-1 cache, but the K6's is 64 KB
instead of the Pentium Pro's 16 KB. The Pentium Pro does have an
advantage in that its L-2 cache is part of the processor package and
runs at the chip's core frequency. A large L-1 cache yields a significant
performance boost, as can be seen when comparing the performance of
Pentium and MMX Pentium processors on applications that haven't
been optimized for the MMX instruction set.
The Pentium-like element of the K6 processor is its Socket 7 pinout,
which means the K6 can use the same processor socket as the Pentium
processor. This means systems manufacturers will be able to easily
integrate the chip without making major modifications to their
motherboard design.
Memory Types
Read-Only Memory (ROM)
One major type of memory that is used in PCs is called read-only
memory, or ROM for short. ROM is a type of memory that normally can
only be read, as opposed to RAM which can be both read and written.
52 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
There are two main reasons that read-only memory is used for certain
functions within the PC:
Permanence: The values stored in ROM are
always there, whether
the power is on or not. A ROM can be removed from the PC, stored for
an indefinite period of time, and then replaced, and the data it contains
will still be there. For this reason, it is called non-volatile storage. A hard
disk is also non-volatile, for example, but regular RAM is not.
Security: The fact that ROM cannot easily be modified provides a
measure of security against accidental (or malicious) changes to its
contents. You are not going to get viruses infecting ROMs, for example.
Read-only memory is most commonly used to store system-level
programs that we want to have available to the PC at all times. The most
common example is the system BIOS program, which is stored in a
ROM called the system BIOS ROM. Having this in a permanent ROM
means it is available when the power is turned on so that the PC can use
it to boot up the system. Remember that when you first turn on the PC
the system memory is empty, so there has to be something for the PC to
use when it starts up.
While the whole point of a ROM is supposed to be that the contents
cannot be changed, there are times when being able to change the
contents of a ROM can be very useful. There are several ROM variants
that can be changed under certain circumstances; these can be thought
of as "mostly read-only memory". :^) The following are the different types
of ROMs with a description of their relative modifiability:
ROM: A regular ROM is constructed from hard-wired logic much the way
that a processor is. It is designed to perform a specific function and
cannot be changed. This is inflexible and so regular ROMs are only
used generally for programs that are static (not changing often) and
Programmable ROM (PROM): This is a type of ROM that can be
programmed using special equipment; it can be written to, but only once.
This is useful for companies that make their own ROMs from software
Revised November 28, 2008
they write, because when they change their code they can create new
PROMs without requiring expensive equipment. This is similar to the
way a CD-ROM recorder works by letting you "burn" programs onto
blanks once and then letting you read from them many times. In fact,
programming a PROM is also called burning, just like burning a CD-R.
Erasable Programmable ROM (EPROM): An EPROM is a ROM that
can be erased and reprogrammed. A little glass window is installed in
the top of the ROM package, through which you can actually see the
chip that holds the memory. Ultraviolet light of a specific frequency can
be shined through this window for a specified period of time, which will
erase the EPROM and allow it to be reprogrammed again. Obviously this
is much more useful than a regular PROM, but it does require the
erasing light.
Electrically Erasable Programmable ROM (EEPROM): The next level
of erasability is the EEPROM, which can be erased under software
control. This is the most flexible type of ROM, and is now commonly
used for holding BIOS programs. When you hear reference to a "flash
BIOS" or doing a BIOS upgrade by "flashing", this refers to
reprogramming the BIOS EEPROM with a special software program.
Here we are blurring the line a bit between what "read-only" really
means, but remember that this rewriting is done maybe once a year or
so, compared to real read-write memory (RAM) where rewriting is done
often many times per second!
Note: One thing that sometimes confuses people is that since RAM is
the "opposite" of ROM (since RAM is read-write and ROM is read-only),
and since RAM stands for "random access memory", they think that
ROM is not random access. This is not true; any location can be read
from ROM in any order, so it is random access as well, just not
writeable. RAM gets its name because earlier read-write memories were
sequential, and did not allow random access.
Finally, one other characteristic of ROM, compared to RAM, is that it is
much slower, typically having double the access time of RAM or more.
This is one reason why the code in the BIOS ROM is often shadowed to
improve performance.
Page 53 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Random Access Memory (RAM)
The kind of memory used for holding programs and data being executed
is called random access memory or RAM. RAM differs from read-only
memory (ROM) in that it can be both read and written. It is considered
volatile storage because unlike ROM, the contents of RAM are lost when
the power is turned off. RAM is also sometimes called read-write
memory or RWM, which is actually a much better name so of course it is
hardly ever used. :^) It's a better name because calling RAM "random
access" implies to some people that ROM isn't random access, which
isn't so. RAM is called "random access" because earlier read-write
memories were sequential and did not allow random access. Sometimes
old acronyms persist even when they don't make much sense any more
(e.g., the "AT" in the old IBM AT stands for "advanced technology).
RAM is much faster than ROM is, due to the nature of how it stores
information. This is why RAM is often used to shadow the BIOS ROM to
improve performance when executing BIOS code. There are many
different types of RAMs, including static RAM (SRAM) and many flavors
of dynamic RAM (DRAM).
Static RAM (SRAM)
Static RAM is a type of RAM that holds its data without external refresh,
for as long as power is supplied to the circuit. This is contrasted to
dynamic RAM (DRAM), which must be refreshed many times per
second in order to hold its data contents. SRAMs are used for specific
applications within the PC, where their strengths outweigh their
weaknesses compared to DRAM.
These advantages and disadvantages taken together obviously show
that performance-wise, SRAM is superior to DRAM, and we would use it
exclusively if only we could do so economically. Unfortunately, 32 MB of
SRAM would be prohibitively large and costly, which is why DRAM is
used for system memory. SRAMs are used instead for level 1 cache and
level 2 cache memory, for which it is perfectly suited; cache memory
needs to be very fast, and not very large.
SRAM is manufactured in a way rather similar to how processors are:
highly integrated transistor patterns photo-etched into silicon. Each
Revised November 28, 2008
SRAM bit is comprised of between four and six transistors, which is why
SRAM takes up much more space compared to DRAM, which uses only
one (plus a capacitor). Because an SRAM chip is comprised of
thousands or millions of identical cells, it is much easier to make than a
CPU, which is a large die with a non-repetitive structure. This is one
reason why RAM chips cost much less than processors do. See this
discussion of how processors are manufactured; this process is similar
(but simplified somewhat) for making memory circuits.
Dynamic RAM (DRAM)
Dynamic RAM is a type of RAM that only holds its data if it is
continuously accessed by special logic called a refresh circuit. Many
hundreds of times each second, this circuitry reads and then re-writes
the contents of each memory cell, whether the memory cell is being
used at that time by the computer or not. If this is not done, then the
DRAM will lose its contents, even if it continues to have power supplied
to it. This refreshing action is why the memory is called dynamic.
All PCs use DRAM for their main system memory, instead of SRAM,
even though DRAMs are slower than SRAMs and require the overhead
of the refresh circuitry. It may seem weird to want to make the
computer's memory out of something that can only hold a value for a
fraction of a second. In fact, DRAMs are both more complicated and
slower than SRAMs.
The reason that DRAMs are used is simple: they are much cheaper and
take up much less space, typically 1/4 the silicon area of SRAMs or less.
To build a 32 MB core memory from SRAMs would be very expensive.
The overhead of the refresh circuit is tolerated in order to allow the use
of large amounts of inexpensive, compact memory. The refresh circuitry
itself is almost never a problem; many years of using DRAM has caused
the design of these circuits to be all but perfected.
The reason that DRAMs are smaller and less expensive than SRAMs is
that while SRAMs are made from four to six transistors per bit, DRAMs
use only one, plus a capacitor. The capacitor, when energized, holds an
electrical charge if the bit contains a "1" or no charge if it contains a "0".
The transistor is used to read the contents of the capacitor. The problem
Page 54 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
with capacitors is that they only hold a charge for a short period of time,
and then it fades away. These capacitors are tiny, so their charges fade
particularly quickly. This is why the refresh circuitry is needed: to read
the contents of every cell and refresh them with a fresh "charge" before
the contents fade away and are lost.
DRAM is manufactured using a similar process to how processors are: a
silicon substrate is etched with the patterns that make the transistors
and capacitors (and support structures) that comprise each bit. DRAM
costs much less than a processor because it is a series of simple,
repeated structures, so there isn't the complexity of making a single chip
with several million individually-located transistors.
Memory Speed-Access-Timing
This section describes the details on how the system memory works.
This includes the particulars of how memory is accessed, and important
issues related to system timing. The speed of the system memory is
also very important because it is a contributing factor to overall
performance. There are many different aspects that influence the realworld speed of memory.
The Memory Controller
Every computer has within it a hardware logic circuit called the memory
controller. This is the part of the system that, well, controls the memory.
It generates the necessary signals to control the reading and writing of
information from and to the memory, and interfaces the memory with the
other major parts of the system. The memory controller is normally
integrated into the system chipset.
Memory Access and Access Time
When memory is read or written, this is called a memory access. A
specific procedure is used to control each access to memory, which
consists of having the memory controller generate the correct signals to
specify which memory location needs to be accessed, and then having
the data show up on the data bus to be read by the processor or
whatever other device requested it.
Revised November 28, 2008
Instead of being organized as a long string of individual bytes, memory is
actually laid out as a matrix, with rows and columns. To select a byte of
memory, the memory controller first specifies the row that is required
and then the column. These are determined from the memory's
address, as provided to the memory controller on the address bus (part
of the memory bus.) Using a matrix makes it possible to create DRAM
chips with fewer pins, since half the address is sent at a time, although it
slows down the access since the row and column addresses cannot be
sent simultaneously. Once again here, performance is traded off for
The amount of time that it takes for the memory to produce the data
required, from the start of the access until when the valid data is
available for use, is called the memory's access time. It is normally
measured in nanoseconds (ns). Today's memory normally has access
time ranging from 5 to 70 nanoseconds. This is the speed of the DRAM
memory itself, which is not necessarily the same as the true speed of the
overall memory system.
Asynchronous and Synchronous DRAM
Conventional DRAM, of the type that has been used in PCs since the
original IBM PC days, is said to be asynchronous. This refers to the fact
that the memory is not synchronized to the system clock. A memory
access is begun, and a certain period of time later the memory value
appears on the bus. The signals are not coordinated with the system
clock at all. Asynchronous memory works fine in lower-speed memory
bus systems but is not nearly as suitable for use in high-speed (>66
MHz) memory systems.
A newer type of DRAM, called "synchronous DRAM" or "SDRAM", is
synchronized to the system clock; all signals are tied to the clock so
timing is much tighter and better controlled. This type of memory is
much faster than asynchronous DRAM and can be used to improve the
performance of the system. It is more suitable to the higher-speed
memory systems of the newest PCs.
55 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
The Memory Bus
The memory bus is the set of wires that is used to carry memory
addresses and data to and from the system RAM. The memory bus in
most PCs is also shared with the processor bus, connecting the system
memory to the processor and the system chipset. The memory bus is
part of the PC's hierarchy of buses, which are high-speed
communications channels used within the computer to transfer
information between its components. See here for more details on
buses, and here for a description of the memory bus in relation to the
processor, as well as memory bus specifics for different processors.
The memory bus is made up of two parts: the data bus and the address
bus. When people just make reference to "the memory bus" they are
usually referring to the data bus, which carries actual memory data
within the PC. The address bus is used to select the memory address
that the data will come from or go to on a read or write.
The wider the data part of the bus, the more information that can be
transmitted simultaneously. Wider data buses generally mean higher
performance. The speed of the bus is dictated by the system clock
speed and is the other main driver of bus performance. The bandwidth
of the data bus is how much information can flow through it, and is a
function of the bus width (in bits) and its speed (in MHz).
DRAM Speed, System Timing and Overall Memory Speed
It is important to understand the relationship between the two main
factors that control the true speed that your system memory runs at. The
two factors are:
Memory Timing Settings: The memory's real speed is determined by
the timing that the system is told to use, via settings in the BIOS setup
program. These settings control how quickly the system will try to read or
write to the memory.
DRAM Speed: This is the minimum access time that your DRAM can
physically handle, and is rated in nanoseconds (ns). The speed of the
DRAM sets the limits for how fast your memory timing can be set.
The relationship between these two is as follows. The faster the physical
DRAM is, the faster the system timing can be set. If you increase the
system timing (by reducing the number of clock cycles required to
access the memory using the appropriate BIOS settings) then the
system will run faster--but if you set them too fast for the DRAM you are
using, errors will result. The speed of the DRAMs does not directly
control the speed of the memory system. It just sets the upper limit.
You can think of the data bus as a highway; its width is the number of
lanes and its speed is how fast the cars are traveling. The bandwidth
then is the amount of traffic the highway can carry in a given unit of time,
which is a function of how many lanes there are and how fast the cars
can drive in them. More bandwidth means better performance.
An analogy would be that the DRAM speed represents your car's
maximum speed, how fast your car can go if there is no traffic on the
road. You can increase how fast you drive (real speed) as long as you
don't exceed this limit. However, if the traffic flow is going at 40 MPH
then you are stuck going at 40 MPH. If you replace your current car with
a faster one, it won't make any difference because you still can't go
faster then 40 MPH in this situation.
The width of the address bus controls the addressability of the system
memory, which is how much system memory the processor can read or
write to. Continuing the highway analogy, the address bus carries
information about the different exit numbers on the highway. The wider
the address bus, the more digits the exit number could have, and the
more exits that could be supported on the highway. Most systems can
address far more memory than they will ever use.
What this all means is that if you replace your system's 70 ns DRAM
with 60 ns DRAM, the system will not run faster unless you also increase
the system timing speed so that it tries to access the faster memory,
faster. Conversely, replacing faster memory with slower memory won't
cause the system to run any slower unless the system timing is
decreased; however, if the new slower memory is too slow for the timing
settings, memory errors (crashes, lockups) will result.
Revised November 28, 2008
56 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Note: Some systems automatically set the memory timing based on the
speed of the memory, which they can detect. This in fact causes some
of the confusion in this matter, because with this type of system putting
faster DRAMs in will automatically cause the system to run faster.
However, the principle still holds: the system timing is what is making the
memory run faster. It's just that the system timing is being increased
automatically and transparently to the user.
DRAM Speed Ratings
DRAM chips have a rated speed in nanoseconds (ns, or a billionth of a
second), a speed which represents the minimum access time for doing a
read or write to memory. Most memory in modern systems is 50, 60 or
70 ns in speed. Older systems (386 and earlier) use usually 70 or 80 ns
RAM. Very old systems use even slower memory: 100, 120 or even 150
ns. Systems running with a clock speed of 60 MHz or higher generally
require 60 ns or faster memory to function at peak efficiency. 70 ns is
fine for 486 or older PCs.
DRAM chips are usually marked with their speed via a suffix at the end
of the part number. If you look at the chips themselves, you'll see
something like "-6" or "-60". This usually means 60 nanosecond DRAM.
SDRAM memory is much faster than conventional asynchronous RAM.
It is usually rated at 12, 10 or even 7 nanoseconds. The suffix for these
chips is often "-12", "-10" or "-07". Note that older memory running at
100 or 120 ns also used "-10" and "-12" sometimes. This memory hasn't
been used in years so there really shouldn't be any confusion between
the two types. However, 70 ns memory uses "-7" and this can be readily
confused with 7 ns memory if you are not careful.
The rated speed of the memory is a maximum. In theory, the memory
cannot support memory timing that requires a faster speed of RAM.
However, in practice many companies rate their DRAM conservatively,
so that the memory will function at a higher speed than what is indicated.
This is why many Pentium systems running on a 66 MHz bus will work
with 70 ns memory, even when set to 60 ns timing. However, this is not
reliable and cannot be counted on (in a way, it is a form of overclocking)
and is not recommended. You can usually compensate for slower
Revised November 28, 2008
memory by turning down the system timing level, which will cause a
small performance decrease but give you better reliability.
Mixing DRAM Speeds
Mixing memory speeds refers to the use of DRAM of more than one
speed in the same computer. For example, you might have bought a
machine in 1994 that came with 70 ns DRAM (the fastest speed
generally available then) and later upgraded with more memory in 1997
that was 60 ns. While it's generally preferable to avoid doing this, it can
work without problems as long as certain caveats are followed:
Use Identical Memory Within a Bank: PCs read a certain bit width of
memory at a time, typically 32 or 64, and the memory making up this
width is called a bank. PCs always read data from more than one chip at
a time within a single bank of memory. If different memory is used within
a bank, some of the bits may
arrive later than others and all sorts of
system problems can result. For this reason you should only use the
same type and speed of memory within a bank. This also means using
the same technology--never mix EDO and FPM memory (for example)
within a bank.
Put The Slowest Memory in the First Bank: Some memory systems
automatically detect the speed of the memory being used, and set the
system timing accordingly. They usually only look at the speed of the
memory in the first bank when setting the timing. If you have 60 ns RAM
in the first bank and 70 ns in the second bank, the system may set the
timing at a rate that works fine for the 60 ns memory, but causes
problems for the 70 ns. You should put the 70 ns memory in the first
bank instead. (If your system doesn't do autodetection this won't be an
issue but it is still good practice). Note that the first bank of memory is
often called "Bank 0".
Some systems just generally have a hard time working with dissimilar
banks of memory. I once tried to upgrade a system that had a pair of 8
MB, fast page mode 60 ns SIMMs, with another pair of 8 MB, fast page
mode 60 ns SIMMs of another brand. The two pairs just would not work
together in any configuration, even though they worked fine separately.
57 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
See this section of the Troubleshooting Expert for more on RAM
Memory Bus Speed and Required DRAM Speed
Most modern systems generally require the DRAMs they use to be a
certain minimum speed. The speed required is normally a function of
the speed of the memory bus. Faster memory buses require faster
speed DRAMs and in some cases, faster technologies.
System Timing and Wait States
The true speed that the memory subsystem runs at is referred to as the
system timing. The timing that the system uses to control access to the
memory is specified using a number of settings in the BIOS setup
System timing is normally specified as the number of clock cycles
required to do a read or write to memory. The fewer clock cycles
required, the faster the memory runs. If the timing is set too low (also
called setting using aggressive timing) then memory errors or corruption
can result. The maximum speed that the system timing can be set to
depends on the following factors:
DRAM Speed: Faster physical memory lets the timing be set more
aggressively. DRAM Technology: Some types of memory allow faster
access than others. For example, EDO memory is faster than FPM.
Chipset Speed: Some chipsets allow faster timing than others due to
better design or more performance-enhancing internal features.
Memory System Quality: High quality motherboards, chipsets and
memory allow the use of faster timing. Poor-quality components often
act "flaky" under tight timing settings and it becomes necessary to
reduce the timing level so the machine will run reliably.
The timing setting is also sometimes specified through the use of wait
states. A wait state is a setting that refers to how many clock cycles
must be inserted into the memory access process to wait for the
memory. This number is basically the same as specifying the total
Revised November 28, 2008
number of clock cycles needed for the access, except that it is one lower
because it represents extra clock cycles. In other words, zero wait states
represents the fastest memory access you can have, which still must
take one cycle. So, memory that takes three clock cycles is said to have
two wait states.
Memory Speed and the System Cache
It is important to remember that the use of large, efficient primary and
secondary caches in modern PCs means that most requests for
instructions or data by the processor are satisfied from cache and not
the system memory. While increasing the speed of memory definitely
has a positive performance impact, often that improvement is masked
by the fact that typically, only 5-10% of all memory requests actually
result in memory accesses. This means that using memory that is 50%
faster than an older kind will only result in a system-level performance
gain of 2.5-5%. This phenomenon is the main reason why SDRAM,
despite being much faster than its predecessors, has not revolutionized
the PC.
Burst Mode Access and Timing
As described in an earlier section, memory is stored as a matrix; to
access it you must address it by supplying the row and column that
represents what you are trying to read or write. In fact, memory is not
read one bit or one byte at a time; usually, it is read 32 or 64 bits at a
time (64 on modern PCs).
There are a number of steps that must be taken when performing the
initial access to memory that make it relatively slow. There are certain
signals that have to be set to begin the access. Then the row address
must be sent to the memory, followed by the column address. This tells
the memory which cells to use. Then, finally, the data itself is
transferred. Because of this overhead, the first access to memory takes
a long time--usually from 5 to 7 clock cycles. The amount of time
required to perform this first access is called the latency of the memory.
As you can see, most of the overhead is not actually transferring the
data itself but telling the memory what and how to do the transfer. If we
could somehow lower this overhead, we could greatly increase
Page 58 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
performance. In particular, what if we read four consecutive 64-bit
chunks of memory? In this case, we wouldn't need to supply the address
for the second, third and fourth accesses, because they would be
consecutive to the first one. This would save a lot of time and improve
performance a great deal.
many cases speed is the only practical difference between the various
kinds. For example, in most Pentium systems, regular fast page mode
(FPM) memory has a burst cycle time of 3 clock cycles, while extended
data out (EDO) memory will run with only 2 clock cycles. This is
discussed in detail here.
This is exactly what is done in modern computer systems. Four
consecutive 64-bit pieces of memory are read one after the other (256
bits or 32 bytes). This is called burst mode access or bursting. The great
advantage is that most of the overhead of the first access doesn't have
to be repeated for the other three. So instead of those taking 5 to 7 clock
cycles, they take only 1 to 3 clock cycles. The system's secondary cache
is set to use a width of 256 bits to match this access mode, so it can
store all of the 32 bytes read from memory during an access. Modern
caches also do this type of burst access.
System Timing Settings
There are a number of settings that control the timing of your system
memory. There are many different ways to set your system's memory
timing, which depend on how the system and the BIOS are set up.
These settings are important; they are discussed in full detail in the
section on "Advanced Chipset Features" BIOS settings. Some systems
incorporate automatic timing settings, while others require manual
adjustment of the individual parameters that control the timing level. It is
normal for the BIOS to allow tweaking of the two main numbers that
control system timing: the time for the initial access ("x" in the "x-y-y-y"
notation) and the time for subsequent accesses ("y"). Being able to set
the "x" and "y" independently gives more flexibility. Many BIOSes use
different terms to refer to these numbers however. For example, some
BIOSes refer to the time for the first access as "leadoff". Some use wait
state notation instead of clock cycles.
The timing of burst mode access is generally stated using this type of
shorthand: "x-y-y-y". The first number ("x") represents the number of
clock cycles to do the first 64-bit read/write. The other numbers are how
many clock cycles to do the second, third and fourth reads/writes. An
example would be "5-2-2-2", which means 11 clock cycles to do the
whole burst. (Without burst mode this access would take at least 20
clock cycles: "5-5-5-5"). It is important to compare memory system
timing looking at the amount of time for the full 4-access burst.
Note that all types of memory still have the latency on the first access.
This doesn't go away, even with fast memory. Some people for example
think that with fast SDRAM you don't need to use secondary cache,
because both of them will do a burst transfer in one clock cycle (they
both have burst accesses of the form "x-1-1-1"). However, the need to
address the memory is still there for the SDRAM and not for the cache.
This is why there is still the difference in the first number, the "x":
SDRAM is at best 5-1-1-1, while cache is 3-1-1-1 or 2-1-1-1.
System Timing and Memory Technologies
The maximum timing level that you can specify for the system depends
a great deal on the kind of DRAM technology being used. Newer DRAM
is organized specifically to increase the speed that it can run at; in fact in
Revised November 28, 2008
Most systems now also have a type of automatic setting, which will set
the system timing for you. These come in two flavors: one will actually
autodetect the type and speed of memory installed in the PC and set the
timing accordingly. The other will let you tell the PC what type and speed
of DRAM you are using (in nanoseconds) and adjust the timing to
maximize performance.
Speculative Leadoff
Speculative leadoff is a performance-enhancing feature of some
chipsets. When enabled, it speeds up the first access to memory
("leadoff") by overlapping the start of the read request with the
determination of the address for the read. This results in a small
performance increase but does not work with all systems.
59 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Interleaving is an advanced technique used by high-end
motherboards/chipsets to improve memory performance. Memory
interleaving increases bandwidth by allowing simultaneous access to
more than one chunk of memory. This improves performance because
the processor can transfer more information to/from memory in the
same amount of time, and helps alleviate the processor-memory
bottleneck that is a major limiting factor in overall performance.
Interleaving works by dividing the system memory into multiple blocks.
The most common numbers are two or four, called two-way or four-way
interleaving, respectively. Each block of memory is accessed using
different sets of control lines, which are merged together on the memory
bus. When a read or write is begun to one block, a read or write to other
blocks can be overlapped with the first one. The more blocks, the more
that overlapping can be done. As an analogy, consider eating a plate of
food with a fork. Two-way interleaving would mean dividing the food onto
two plates and eating with both hands, using two forks. (Four-way
interleaving would require two more hands. Remember that here the
processor is doing the "eating" and it is much faster than the forks
(memory) "feeding" it (unlike a person, whose hands are generally
In order to get the best performance from this type of memory system,
consecutive memory addresses are spread over the different blocks of
memory. In other words, if you have 4 blocks of interleaved memory, the
system doesn't fill the first block, and then the second and so on. It uses
all 4 blocks, spreading the memory around so that the interleaving can
be exploited.
Interleaving is an advanced technique that is not generally supported by
most PC motherboards, most likely due to cost. It is most helpful on
high-end systems, especially servers, that have to process a great deal
of information quickly. The Intel Orion chipset is one that does support
memory interleaving.
Revised November 28, 2008
DRAM Technologies
DRAM Technologies and Relative Performance
The most important factor that controls the type of memory that can be
used in a motherboard is the system chipset. In fact, chipset support can
be the difference between a technology being rapidly and universally
accepted (i.e., EDO) and one lingering with little support and never
becoming a popular standard (i.e., BEDO). The documentation for the
motherboard will normally indicate what types of memory are supported
by the board.
Here's an example of a commonly-made comparison from the Pentium
world. For all of 1996, the two most popular Pentium chipsets were the
430HX and 430VX chipsets from Intel (confusingly, both sometimes
called "Triton II"). The 430VX supports SDRAM while the 430HX does
not. Many people said that the VX was superior for this reason, since
SDRAM can transfer memory in 1 clock cycle ideally, while the 430HX
must use EDO, with a 2 clock cycle ideal transfer rate. SDRAM provides
an improvement of 50%! Well, not really. Because when you look at the
full burst timing, you see the VX's timing for SDRAM is 7-1-1-1, and the
HX's for EDO is 5-2-2-2. When you add up the clock cycles, the VX
comes to 10 and the HX 11. When you add in the HX's other improved
features compared to the VX, the HX is actually considered by many to
be faster than the VX even using slower EDO memory. (Intel's 430TX
changed this whole equation when it was introduced since it supports
SDRAM at 5-1-1-1).
Conventional DRAM
The oldest and slowest DRAM technology is so-called "regular" or
conventional DRAM. It uses the standard memory addressing method,
where first the row address is sent to the memory, and then the column
address. It is the most "vanilla" type of memory and doesn't require any
special compatibility. This type of DRAM is now quite obsolete and is
not used on any new systems, having been replaced by fast page mode
memory and newer technologies.
Fast Page Mode (FPM) DRAM
Fast page mode or FPM memory is slightly faster than conventional
DRAM. While standard DRAM requires that a row and column be sent
Page 60 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
for each access, FPM works by sending the row address just once for
many accesses to memory in locations near each other, improving
access time.
Despite its name ("fast" page mode), FPM is actually the slowest
memory technology used in modern PCs. Virtually every PC made in the
last several years will support FPM, and it is a "safe" technology choice
since using it doesn't require any special compatibility or support.
However, it offers lower performance than most other memory
technologies. It is also not suitable for high-speed memory buses over
66 MHz. FPM DRAM typically allows burst system timings as fast as 5-33-3 at 66 MHz.
Extended Data Out (EDO) DRAM
The most common type of DRAM used is called extended data out or
EDO memory. It is slightly faster than FPM memory due to another
evolutionary tweak in how the memory access works. EDO memory has
had its timing circuits modified so one access to the memory can begin
before the last one has finished. It is therefore slightly faster than FPM
memory, giving a performance boost of around 3-5% over FPM in most
systems. EDO memory has been hyped up a great deal, but in real world
performance it offers a minimal speed increase over FPM memory.
EDO memory is still not usually suitable for high-speed (75 MHz and
higher) memory buses, since it is really not that different than FPM
overall. EDO typically allows burst system timings as fast as 5-2-2-2 at
66 MHz, when using an optimized chipset. It will run on faster buses but
the memory timing may need to be reduced.
EDO memory requires support from the system chipset. Invented in
1994, most newer Pentium systems, as well as some of the latest PCIbased 486 motherboards will support EDO. Older systems will not work
properly with EDO; some are "EDO tolerant", meaning that they will work
with EDO but will run it at as if it were FPM memory (slower). Others will
not work at all with EDO memory.
and FPM
Some will
Some systems allow the use of EDO in one bank of memory
in another, but others will not work with this sort of setup.
work with it but will run all of the memory at the slower speed
November 28, 2008
used for FPM. The motherboard manual or manufacturer should be able
to supply the particular information you need about your board.
Burst Extended Data Out (BEDO) DRAM
Burst EDO or BEDO memory is another evolutionary improvement in
conventional asynchronous RAM. In this case, EDO memory is
combined with pipelining technology and special latches to allow for
much faster access time than regular EDO. BEDO memory allows the
use of much higher memory bus speeds than EDO. BEDO allows
system timings of 5-1-1-1 when used with a supporting chipset.
BEDO memory allows for improved DRAM performance at very little
additional manufacturing cost to the producer. In fact, BEDO arguably
provides more improvement over EDO than EDO does over FPM.
Despite this, BEDO has never caught on and remains a standard with
little real support.
Synchronous DRAM (SDRAM)
A relatively new and different kind of RAM, Synchronous DRAM or
SDRAM differs from earlier types in that it does not run asynchronously
to the system clock the way other types of memory do. SDRAM is tied to
the system clock and is designed to be able to read or write from
memory in burst mode (after the initial read or write latency) at 1 clock
cycle per access (zero wait states) at memory bus speeds up to 100
MHz or even higher. SDRAM supports 5-1-1-1 system timing when used
with a supporting chipset. As 100 MHz bus system PCs become
mainstream, SDRAM will largely replace older technologies, since it is
designed to work at these higher operating speeds and conventional
asynchronous DRAM is not.
There are several important characteristics and concerns regarding
SDRAMs that are relatively unique to the technology:
Speed and Speed Matching: SDRAM modules are generally rated in
two different ways: First, they have a "nanosecond" rating like
conventional asynchronous DRAMs, so SDRAMs are sometimes refered
to as being "12 nanosecond" or "10 nanosecond". Second, they have a
"MHz" rating, so they are called "83 MHz" or "100 MHz" SDRAMs.
Page 61 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Because SDRAMs are, well, synchronous, they must be fast enough for
the system in which they are being used. With asynchronous DRAMs
such as EDO or FPM, it was common to add extra wait states to the
access timing for the memory to compensate for memory that was too
slow. With SDRAM however, the whole point of the technology is to be
able to run with zero wait states. In order to do this, the memory must be
fast enough for the bus speed of the system. One place where people
run into trouble in this regard is that they take the reciprocal of the
"nanosecond" rating of the module and conclude that the module can
run at that speed. For example, the reciprocal of 10 ns is 100 MHz, so
people assume that 10 ns modules will definitely be able to run on a 100
MHz system. The problem is that this allows absolutely no room for
slack. In practice, you really want memory rated slightly higher than what
is required, so 10 ns modules are really intended for 83 MHz operation.
100 MHz systems will most likely use modules rated to 8 ns.
controls 2 different DRAM chips on the module, while a 4-clock SDRAM
has clock signals that can control 4 different chips each.
Speed Rating: Due to the confusion inherent in the speed rating system
described immediately above, and the likelihood of problems running
slower SDRAM modules on new 100 MHz system bus motherboards,
Intel created a formal specification for SDRAM capable of being used in
these new PCs. Dubbed PC100, these modules generally are rated at 8
ns as previously mentioned. While relying on a specification is never
foolproof, it is definitely a good idea to ensure that any SDRAM you
intend to use on a 100 MHz system bus motherboard is in fact PC100
specification compliant.
Intel is currently in the development stages with a company named
RAMBus, working to develop a new memory system for future PCs.
RAMBus memory, sometimes called RDRAM, works very differently
from the way the memory setup in the current PC does. While the
current memory bus in the PC is typically 32 or 64 bits wide, RAMBus
works over a narrow, 8-bit bus, using it more as an intelligent
communication channel than as just a set of wires. It may seem
counterproductive to narrow the channel since that reduces bandwidth,
however the channel is capable of running at very high speeds. In
particular, the goal with RDRAM is to reduce latency, which is the timeconsuming initial access to memory that takes many clock cycles even
with fast SDRAM. RAMBus memory may become the next standard for
future PCs, sold near the end of the decade. It is also speculated that
RDRAM will be sold using a new packaging format, different from
SIMMs and DIMMs.
Latency: SDRAMs are still DRAMs, and therefore still have latency. The
fast 12, 10 and 8 nanosecond numbers that everyone talks about refer
only to the second, third and fourth accesses in a four-access burst.
The first access is still a relatively slow 5 cycles, just as it is for
conventional EDO and FPM memory.
2-Clock and 4-Clock Circuitry: There are two slight variations in the
composition of SDRAM modules; these are commonly called 2-clock
and 4-clock SDRAMs. They are almost exactly the same, and they use
the same DRAM chips, but they differ in how they are laid out and
accessed. A 2-clock SDRAM is structured so that each clock signal
Revised November 28, 2008
Serial Presence Detect: Some motherboards are now being created
that require the use of special SDRAM modules that include something
called a Serial Presence Detect (SPD) chip. This is an EEPROM that
contains speed and design information about the module. The
motherboard queries the chip for information about the module and
makes adjustments to system operation based on what it finds. A great
idea in theory, but you won't think it's great if you buy an SDRAM module
without the chip on it when your board requires SPD.
Packaging Concerns: To make matters even more confusing, SDRAM
usually comes in DIMM packaging, which itself comes in several
different formats (buffered and unbuffered, 3.3 volts and 5 volts).
Video RAM (VRAM)
Modern video adapters use their own, specialized RAM that is separated
from the main system memory. The demands placed on video memory
are far greater than those placed on system memory. In addition to the
video image being accessed and changed by the processor on a
Page 62 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
continual basis (many times a second when you are running a game for
instance), the video card also must access the memory contents
between 50 and 100 times per second to display the information on the
monitor. Video cards have therefore spawned the creation of several
new, innovative memory technologies, many of them designed to allow
the memory to be accessed by the processor and read by the video
card's refresh circuitry simultaneously. This is called dual porting and is
found on Video RAM or VRAM memory. Cards using this type of
memory are faster and more expensive than ones using FPM or EDO
Comparison of System Timing for Technologies
The table below shows the ideal system timing characteristics for the
various technologies discussed in this section, when run at 66 MHz.
They are ideal ratings because they are the best the technology can
normally support. In order to achieve these timings the chipset must be
optimized to deliver them. Older chipsets will require slower timing. For
example, 5-1-1-1 SDRAM timing is possible using Intel's 430TX chipset,
but the older 430VX only delivers 7-1-1-1 timing with SDRAM.
System Bus
DRAM Speed (ns)
5-5-5-5 or
Memory Packaging
Dual Inline Packages (DIPs) and Memory Modules Most memory
chips are packaged into small plastic or ceramic packages called dual
inline packages or DIPs. A DIP is a rectangular package with rows of
pins running along its two longer edges. These are the small black
boxes you see on SIMMs, DIMMs or other larger packaging styles.
motherboard. At that time most systems had a small amount of memory
(less than one megabyte) and this was the simplest way to do things.
However, this arrangement caused many problems. Chips directly
soldered onto the motherboard would mean the entire motherboard had
to be trashed if any of the memory chips ever went bad.
Newer systems do not use DIP memory packaging directly. The DIPs
are soldered onto small circuit boards called memory modules; the two
most common being the single inline memory module or SIMM and the
dual inline memory module or DIMM. The circuit boards are inserted into
special sockets on the motherboard that are designed to eliminate the
chip creep problem.
Parity, Non-Parity and ECC Memory
Most memory modules are available as either non-parity or parity. Some
also are available as dedicated ECC-only modules. Non-parity is
"regular" memory, including one bit of storage for each bit of data. Parity
memory includes one extra bit of storage for every eight bits of data,
used to store information about the data that the system can later use
for error detection or correction. It can be used in parity or ECC mode.
ECC modules are newer and also include extra bits of information, but
can only be used in ECC mode. Parity memory will usually work in a
non-parity system; the extra parity bits are ignored. However, non-parity
memory will not work in a parity system (unless parity checking is turned
off in the BIOS setup program, and some older systems don't even allow
that). If you use non-parity memory in a parity system, a parity error will
be generated as soon as the system boots up.
Standard and Proprietary Memory Modules
The three common sizes of memory modules are 30-pin and 72-pin
SIMMs and 168-pin DIMMs. The vast majority of PCs use the "standard"
or generic type of SIMM/DIMM. There are still some companies
however, that insist on using proprietary memory module formats. In
many cases it can be difficult to distinguish these from industry standard
Older computer systems used DIP memory directly, either soldering it to
the motherboard or placing it in sockets that had been soldered to the
Revised November 28, 2008
63 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Single Inline Memory Modules (SIMMs)
The single inline memory module or SIMM is still the most common
memory module format in use in the PC world, largely due to the
enormous installed base of PCs that use them. SIMMs are available in
two flavors: 30 pin and 72 pin. 30-pin SIMMs are the older standard, and
were popular on third and fourth generation motherboards. 72-pin
SIMMs are used on fourth, fifth and sixth generation PCs.
Most motherboards support either 30-pin or 72-pin SIMMs, but not both.
Some 486 motherboards do support both, however. In many cases
these motherboards have significant restrictions on how these SIMMs
can be used. For example, only one 72-pin socket may be usable if the
30-pin sockets are in use, or double-sided SIMMs may not be usable.
The 30 pin SIMMs are generally available in sizes from 1 to 16 MB. Each
one has 30 pins of course, and provides one byte of data (8 bits), plus 1
additional bit for parity with parity versions. 72-pin SIMMs provide four
bytes of data at a time (32 bits) plus 4 bits for parity/ECC in parity/ECC
versions. Package bit width is discussed in detail here.
Dual Inline Memory Modules (DIMMs)
The dual inline memory module or DIMM is a newer memory module,
intended for use in fifth- and sixth-generation computer systems. They
are 168 pins in size, and provide memory 64 bits in width. They are a
newer standard and becoming the de facto standard for new PCs; they
are not used on older motherboards. They are also not generally
available in smaller sizes such as 1 MB or 4 MB for similar reasons.
SIMMs are available in two styles: single-sided or double-sided. This
refers to whether or not DRAM chips are found on both sides of the
SIMM or only on one side. 30-pin SIMMs are all (I am pretty sure) singlesided. 72-pin SIMMs are either single-sided or double-sided. Some
double-sided SIMMs are constructed as composite SIMMs. Internally,
they are wired as if they were actually two single-sided SIMMs back to
back. This doesn't change how many bits of data they put out or how
many you need to use. However, some motherboards cannot handle
composite SIMMs because they are slightly different electrically.
72-pin SIMMs that are 1 MB, 4 MB and 16 MB in size are normally
single-sided, while those 2 MB, 8 MB and 32 MB in size are generally
double-sided. This is why there are so many motherboards that will only
work with 1 MB, 4 MB and 16 MB SIMMs. You should always check your
motherboard to see what sizes of SIMMs it supports. Composite SIMMs
will not work in a motherboard that doesn't support them. SIMMs with 32
chips on them are almost always composite.
Warning: Lately, some 16 MB and 64 MB SIMMs have been seen that
are composite. These can cause significant problems with some
motherboards, since they are specified to support 16 MB SIMMs on the
expectation that 16 MB SIMMs will all be single-sided. You may not be
able to use double-sided 16 MB SIMMs in some systems, especially
older or cheaper ones.
Revised November 28, 2008
Physically, DIMMs differ from SIMMs in an important way. SIMMs have
contacts on either side of the circuit board but they are tied together. So
a 30-pin SIMM has 30 contacts on each side of the circuit board, but
each pair is connected. This gives some redundancy and allows for
more forgiving connections since each pin has two pads. This is also
true of 72-pin SIMMs. DIMMs however have different connections on
each side of the circuit board. So a 168-pin DIMM has 83 pads on each
side and they are not redundant. This allows the packaging to be made
smaller, but makes DIMMs a bit more sensitive to correct insertion and
good electrical contact.
DIMMs are inserted into special sockets on the motherboard, similar to
those used for SIMMs. They are generally available in 8 MB, 16 MB, 32
MB and 64 MB sizes, with larger DIMMs also available at a higher cost
per megabyte. DIMMs are the memory format of choice for the newest
memory technology, SDRAM. DIMMs are also used for EDO and other
technologies as well.
DIMMs come in different flavors, and it is important to ensure that you
get the right kind for the machine that you are using. They come in two
different voltages: 3.3V and 5.0V, and they come in either buffered or
unbuffered versions. This yields of course a total of four different
combinations. The standard today is the 3.3 volt unbuffered DIMM, and
Page 64 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
most machines will use these. Consult your motherboard or system
168-Pin DIMMs: The latest packaging technology, DIMMs are generally
found only with gold contacts.
A smaller version of the DIMM is also sometimes seen; called the small
outline DIMM or SODIMM, these packages are used primarily in laptop
computers where miniaturization is key.
Memory Banks and Package Bit Width
As discussed in the section on memory buses in the memory section
and processor section, data from the memory flows to and from the
processor along the data bus. The width of the data bus dictates how
much information can flow in each clock cycle. In order to take
advantage of the full width of the processor's data bus, it is necessary to
arrange the system memory so that each clock cycle, the full data bus
width can be transferred at once. In fact, most systems require the
system memory to be arranged so that this is the case.
Gold and Tin Connectors and Sockets
Most people don't pay attention to the color of their memory module
connectors and sockets, but they should. :^) There are in fact two
different types of metal used. Most older motherboards use gold sockets
for SIMMs. Newer ones use tin sockets (which is a silvery color).
It is important to make sure that you use gold memory modules in gold
sockets, and tin modules in tin sockets. When gold and tin are mixed by
putting gold in a tin socket or vice-versa, the direct contact between the
two dissimilar metals causes a chemical reaction over time. It can take
months or even years to happen, but tin oxide will build up on the gold
and eventually, cause the electrical connection between the socket and
connector to become unreliable.
The current standard in newer systems using SIMMs is tin; the change
from gold was made mainly as a cost-savings measure, but tin can be
just as reliable as gold when used properly. Interestingly, gold is now
coming back in vogue in most of the newest PCs, which use the DIMM
memory packaging format. This is likely due to how "picky" SDRAM can
be, which uses the DIMM format. Here are the three most common
memory packaging styles and an assessment of their general availability
in gold or tin:
30-Pin SIMMs: The oldest module type, these are most often found with
gold contacts. I have seen tin ones, but they are not easy to find today.
72-Pin SIMMs: These are usually, in my experience, found with tin
contacts. Gold ones are available for use in older systems and not too
hard to find.
Revised November 28, 2008
A quantity of memory that is wide enough to match the bit width of the
data bus is called a bank of memory. Most of today's PCs have a data
bus width of 32 bits (fourth generation processors) or 64 bits (fifth and
sixth generation CPUs). A computer will not read a partial bank of
memory; the result of setting up a partial bank ranges from the memory
in it being ignored, to the system not booting at all. The PC definitely will
not start if the first bank is incomplete, since then it has no usable
memory at all.
Most PCs have room for more than one bank of memory; some support
two banks, some three or more. Banks are usually numbered starting
from zero, although sometimes starting with bank one. The lowestnumbered bank should always be filled first, and they should always be
filled sequentially.
Each of the different types of memory modules arranges its memory so
that a certain bit width can be accessed simultaneously. 30-pin SIMMs
have a width of 8 data bits, 72-pin SIMMs have 32 data bits, and DIMMs
have 64 bits. In addition, when parity is used, an extra bit is added for
error detection. So 30-pin parity SIMMs have 9 bits, 72-pin parity or ECC
SIMMs 36, and parity or ECC DIMMs 72 bits. Each module can be made
up of various types of DRAM chips, as long as the right width is
maintained. Choosing memory packaging is an exercise in matching the
width of the packaged RAM to the data bus width of the processor to
make sure that a full bank of memory is provided.
Page 65 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Note that a PC with a 64 bit data bus could use 8 30-pin SIMMs, except
that this older technology is not supported on these newer machines; too
much motherboard "real estate" is required with 30-pin SIMMs. Also, a
486 motherboard could actually make use of a single 168-pin DIMM to
make up 2 banks of memory since the DIMM is 64 bits and the
motherboard 32, but in practice this isn't done.
Pentium-class and later PCs require two 72-pin SIMMs to make up a
single bank. This is why you are always told to use a pair of SIMMs
when buying memory for these machines. While this is generally true,
there are in fact some Pentium motherboards that don't require a pair of
72-pin SIMMs. How is this possible? Basically, the chipset "cheats" by
doing two consecutive accesses to 32 bits of memory at a time, allowing
these machines to use a 32-bit bank size. This is a non-standard setup
and leads to lower performance. It is found generally in older designs
and is done mostly as a corner-cutting measure. In doing this, the
bandwidth of the memory is cut in half for really no good reason. All else
being equal, these motherboards should generally be avoided.
You should always use identical SIMMs when you require more than one
to comprise a bank. Using different brands or speeds, or SIMMs with
different types or quantities of DRAM chips, can cause motherboard
system timing problems.
Memory Size Specifications
A specific notation is used to indicate the size and bit width of memory
modules. Memory modules have a specific width. Each module of the
same type has the same width, so all 72-pin parity SIMMs for example
have the same width and all 72-pin non-parity SIMMs have the same
width. Larger SIMMs of the same format (say a 16 MB 72-pin SIMM as
opposed to an 8 MB 72-pin SIMM) have more storage because they
have a greater depth of storage for each bit of width. A memory SIMM or
DIMM is usually specified using a notation that looks something like this:
"2x32-60". The "x" is read as "by", just as a "2x4" in the lumber yard is
called a "two by four", so this SIMM would be a "two by thirty-two sixty".
A more generic way to express the notation is "DxW-S". Here is what
each of the numbers means:
Revised November 28, 2008
D: This is the depth of the module in millions. For each bit of width,
there are this many megabits (not bytes) of storage. This number is
usually 1, 2, 4 or 8. For smaller SIMMs, it can be 256 or 512; in this case
it represent the number of kilobits of depth, instead of megabits.
W: This is the width of the module in bits. Each SIMM or DIMM type has
the same width. This number is usually 8, 32 or 64 for non-parity
modules, or 9, 36 or 72 for parity or ECC modules.
S: This is the speed of the module in nanoseconds. It is sometimes not
specified directly as part of the specification but each module should be
rated with its speed.
What is confusing is that the actual amount of storage in megabytes is
usually not shown. You have to be able to figure that out from the
numbers given, although it's not that hard once you get used to it. So
how do you interpret a "2x32-60"? This is a 72-pin SIMM (because it has
32 bits of width). The size of the SIMM is 2 million (depth) x 32 bits
(width). 32 bits is 4 bytes, so the size of the SIMM is 8 MB (2 million
times 4). The speed of the SIMM is 60 ns. To take another example,
let's look at a "4x9-70". This is a 30 pin SIMM (because it has only 9 bits
of width). The depth is 4 million bits. The size of the SIMM is therefore 4
million x 9 bits. The "9" tells us that it is a parity SIMM; only 8 of the bits
are used to store data, and the ninth is for error detection. So the total
size is 4 million x 8 bits which is 4 MB. The speed is 70 nanoseconds.
This table shows the different size specifications for common modules.
Note that not all of these modules are necessarily available; I don't think
that 8 MB 30-pin SIMMs even exist, as 1 MB and 4 MB are the only ones
I ever see used. 2 MB SIMMs existed at one point but now are almost
never seen. Notice the difference between the specifications of a 4 MB
30-pin module (4x8) and a 4 MB 72-pin module (1x32). This shows how
the 30-pin module is narrower than the 72-pin (only 8 bits) but deeper
(4M instead of 1M):
66 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Size in
1 MB
2 MB
4 MB
8 MB
16 MB
32 MB
64 MB
Tip: A simple rule of thumb to find the size in
megabytes of any
module from its "DxW" specification is as follows: take the D and W
numbers and multiply them together (if D is 256 or 512, use 0.25 or 0.5
instead). Then, take the product and divide by 8 (for non-parity memory)
or 9 (for parity). The result is the size in megabytes.
DRAM Size and Quality
Much as SIMMs are specified using a "depth x width" notation, the
individual DRAM chips are as well. There are DRAM chips of various
sizes available on the market, which have different depths and widths as
well, and a SIMM can be made up (in general) of any combination of
DRAM chips that adds up to the proper depth and width. For example, a
1x9 30-pin 1 MB parity SIMM is typically made up of either 9 1Mx1
DRAMs, or 2 1Mx4 DRAMs plus 1 1Mx1. In both cases, the total
memory is the same: 1Mx9.
DRAMs are labeled using part numbers, usually a long string of letters
and numbers. The exact part number is manufacturer-specific; however,
many manufacturers' part numbers are similar in their last few digits,
which can help you to identify the exact chip type and size if you need it.
However, first, you have to be able to identify the manufacturer! This
isn't always that easy, for two reasons.
Revised November 28, 2008
First, they use a short code instead of the company name in many
cases. Second, manufacturers often resell lesser-quality parts under a
different name, a little-known fact. Manufacturers will often sell their topquality parts (sometimes called "A grade") to their bigger customers and
label them with their primary name. They will also have lower-quality
parts (sometimes called "C grade"), perhaps not with as much margin on
their marked speed or maybe not tested as well, that they will sell under
a different label (for less money of course). The exact difference
between high and low quality parts depends on the manufacturer. The
high-quality parts may have passed more tests, or may have more
speed margin compared to their rating. Either way, know that there is a
This table shows common DRAM manufacturers and what the codes
are that they typically use on their chips. I only know of some of the
codes for the second-quality chips; another thing to look for in general is
the name of a country on a chip. If it just says "JAPAN" or "KOREA",
then the manufacturer has decided to leave their name off of their
Texas Instruments
Code On First Quality
MB plus stylized "F"
HM plus Hitachi logo
M5M plus Mitsubishi logo
MCM plus Motorola logo
Oki M5
Code On
Second Quality
LGS (may also
befirst quality)
The following table shows the different sizes of DRAM chips commonly
used in memory modules, and the different bit widths that each size is
67 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
typically available in. For each one, the configuration of the chip is shown
(depth x width) and then in parentheses, the most commonly found last
four digits of the part number found on the chip:
Size in
0.25 Mbits
(256 Kbits)
1 Mbits
4 Mbits
16 Mbits
64 Mbits
1 Bit
4 Bit
8 Bit
16 Bit
(1000 or
(4000 or
(6100 or
(256 or
(4400 or
(6400 or
(4800 or
(7800 or
16Mx4 (!?)
(4800 or
or 8160)
4Mx16 (!?)
Note: The four digit codes above are the typical ones you'll find on FPM
memory modules. EDO memory chips will have different numbers, and
usually the pattern with 16 Mbit EDO chips is that they have a non-zero
last digit where the FPM digit is zero. For example, a 4Mx4 FPM chip
may have a 7400 code, while an EDO chip may have a code like 7404 or
7405. See this web site for a pretty comprehensive list of chip part
numbers that you can use to find out specifically what's in your modules.
Chip Composition of Memory Modules
Better quality SIMMs/DIMMs generally speaking use fewer, highercapacity DRAM chips. Cheaper modules generally use more, lowercapacity DRAM chips, because older technology costs less. Since SIMM
sockets are close together, using modules with many chips makes it
harder for them to cool. This is especially true of double-sided SIMMs.
Also, more chips means more of an electrical load on the motherboard.
Cheap 8 MB SIMMs are often made with 16 4Mbit DRAMs. Many lowerquality motherboards will croak if you try to put 4 of these SIMMs in
Revised November 28, 2008
them, because they can't handle driving 64 individual DRAM chips.
(They almost never mention this in the manual, either.) Some 64 MB
SIMMs are made with 36 DRAMs a piece--try getting 4 of those to work
on a motherboard! In addition, many SIMMs with tons of chips on them
(24 or more) are composite, and these present other problems for many
Despite the fact that better modules use fewer chips, some older
motherboards can have problems with them. In particular, some older
PCs that use 30-pin parity SIMMs will not work with 3-chip versions. This
has to do with the additional complexity of using different-sized DRAMs
on the same SIMM: a 9-chip 30-pin SIMM uses 9 chips each 1 Mbit in
size, but a 3-chip SIMM uses two 4-Mbit chips and one 1-Mbit chip. The
motherboard manual may say if 3-chip SIMMs will work (or you may find
that your system is already using them). If unsure, use the 9-chip
SIMMs; 9 isn't a large number of chips for a SIMM in any event.
This table shows the typical chip composition of non-parity 30-pin and
72-pin SIMMs, which are usually found in 2, 4, 8, 16 or 32 chip
configurations. Note that some of these are more commonly found than
others, and that there are also other combinations that can exist.
Manufacturers will tend to use whatever chips they can buy economically
that will make up the right blend of depth and width; in particular for
many SIMMs there isn't much difference between a 4Mx4 and a 1Mx16
for example, so there may be several different ways to set up the larger
2 Chips
4 Chips
8 Chips
16 Chips
68 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Here is the same table for parity or ECC SIMMs, usually found as 3, 9,
12, 18, 24 or even 36 chip modules:
1) +
4) +
x4) +
16) +
Revised November 28, 2008
69 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Memory Module Quality Factors
Here are some quality factors to bear in mind specifically when
evaluating memory modules:
DRAM Quality: Inspect the manufacturer of the DRAMs used on each
module. If you can't determine who made the DRAMs, or if they are not
marked as first quality DRAMs made by one of the big manufacturers
listed in the table in the section on DRAM size and quality, keep
Number of Chips on the Module: Avoid SIMMs that have more than
12 chips on them if at all possible.
Module Quality: Do not assume that because you buy a SIMM that has
chips saying "Toshiba" all over them, that the module itself was made by
Toshiba. While DRAMs are made by big companies in large plants, the
SIMMs themselves are assembled by many different kinds of
companies. Some of them are rather unscrupulous and will cut corners
in any way possible to save on cost.
Warning: Beware of parity modules that are actually what is called "logic
parity"; they are not real parity memory and provide no error detection
capabilities at all.
One final tip: beware of modules that have too many chips on them. I
have seen (and even bought, before I realized what they were) 4x36
SIMMs with 12 DRAM chips on them. Now 12 chips is a normal
configuration for a parity SIMM, but 4 of the chips should be smaller than
the other 8. These chips were all the same size, and turned out to be
Revised November 28, 2008
4Mx4 DRAMs, yielding a total of 4Mx48 bits worth of memory. Since the
SIMM only eeds 36 bits of width, why would they waste money putting
the extra chips on the SIMM? The reason is simple: because only part of
the DRAMs actually works. Some companies will sell damaged 4Mx4
DRAMs, where 3 of the 4 quadrants are still functional, as 4Mx3 chips.
Then 12 of these can be used to make a 4x36 SIMM. You can see small
resistors on these SIMMs which are used to control which portions of
these damaged 4Mx4 are actually used.
Memory Errors, Detection and Correction
Memory Errors
Memory is an electronic storage device, and all electronic storage
devices have the potential to incorrectly return information different than
what was originally stored. Some technologies are more likely than
others to do this. DRAM memory, because of its nature, is likely to return
occasional memory errors. DRAM memory stores ones and zeros as
charges on small capacitors that must be continually refreshed to ensure
that the data is not lost. This is less reliable than the static storage used
by SRAMs.
Every bit of memory is either a zero or a one, the standard in a digital
system. This in itself helps to eliminate many errors, because slightly
distorted values are usually recoverable. For example, in a 5 volt
system, a "1" is +5V and a "0" is 0V. If the sensor that is reading the
memory value sees +4.2V, it knows that this is really a "1", even though
the value isn't +5V. Why? Because the only other choice would be a "0"
and 4.2 is much closer to 5 than to 0. However, on rare occasions a+5V
might be read as +1.9V and be considered a "0" instead of a "1". When
this happens, a memory error has occurred.
There are two kinds of errors that can typically occur in a memory
system. The first is called a repeatable or hard error. In this situation, a
piece of hardware is broken and will consistently return incorrect results.
A bit may be stuck so that it always returns "0" for example, no matter
what is written to it. Hard errors usually indicate loose memory modules,
blown chips, motherboard defects or other physical problems. They are
relatively easy to diagnose and correct because they are consistent and
Page 70 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
The second kind of error is called a transient or soft error. This occurs
when a bit reads back the wrong value once, but subsequently functions
correctly. These problems are, understandably, much more difficult to
diagnose! They are also, unfortunately, more common. Eventually, a soft
error will usually repeat itself, but it can take anywhere from minutes to
years for this to happen. Soft errors are sometimes caused by memory
that is physically bad, but at least as often they are the result of poor
quality motherboards, memory system timings that are set too fast, static
shocks, or other similar problems that are not related to the memory
directly. In addition, stray radioactivity that is naturally present in
materials used in PC systems can cause the occasional soft error. On a
system that is not using error detection, transient errors often are written
off as operating system bugs or random glitches.
The exact rate of errors returned by modern memory is a matter of some
debate. It is agreed that the DRAMs used today are far more reliable
than those of five to ten years ago. This has been the chief excuse used
by system vendors who have dropped error detection support from their
PCs. However, there are factors that make the problem worse in modern
systems as well. First, more memory is being used; 10 years ago the
typical system had 1 MB to 4 MB of memory; today's systems usually
have 8 MB to 64 MB. Second, systems today are running much faster
than they used to; the typical memory bus is running from 3 to 10 times
the speed of those of older machines. Finally, the quality level of the
average PC is way down from the levels of 10 years ago. Cheaply
thrown-together PCs, made by assembly houses whose only concern is
to get the price down and the machine out the door, often use RAM of
very marginal quality.
Regardless of how often memory errors occur, they do occur. How much
damage they occur depends on when they occur and what it is that they
get wrong. If you are playing your favorite game and one of the bits
controlling the color of the pixel at screen location (520, 277) is inverted
from a one to a zero on one screen redraw, who cares, right? However,
if you are defragmenting your hard disk and the memory location
containing information to be written to the file allocation table is
corrupted, it's a whole different ball game.
Revised November 28, 2008
The only protection from memory errors is to use some sort of memory
detection or correction protocol. (Well, that's not totally true. The other
form of protection is prevention: buying quality components and not
abusing or neglecting your system.) Some protocols can only detect
errors in one bit of an eight-bit data byte; others can detect errors in
more than one bit automatically. Others can both detect and correct
memory problems, seamlessly.
Non-Parity, Parity and ECC Memory
Memory modules have traditionally been available in two basic flavors:
non-parity and parity. (Actually, some sizes and styles are only available
in non-parity, but most are available either way.) Non-parity is "regular"
memory--it contains exactly one bit of memory for every bit of data to be
stored. 8 bits are used to store each byte of data. Parity memory adds
an extra single bit for every eight bits of data, used only for error
detection and correction. 9 bits of data are used to store each byte.
Parity memory can be used for parity checking, a basic form of error
detection, on PCs that support it. It can also be used for an advanced
form of error detection and correction called ECC on Pentium class or
later systems that support it. Non-parity memory provides no error
detection capabilities at all unless these are provided through external
circuitry (which is basically never done on regular PCs.)
In recent years, a new type of memory has become popular: ECC
memory. As the name implies, this is memory specifically designed to
allow the use of ECC on modern systems that have a chipset that
supports it, much the way that parity memory can on some systems.
Due to the fact that both types of memory support ECC, there has been
a great deal of confusion about the difference between ECC and parity
memory, especially since they often are quoted with the same
The biggest difference between the two types of memory is that ECC
memory works in ECC mode and so does parity memory, but ECC
memory does
71 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
not work in plain parity checking mode. The reason is that while an ECC
module contains one extra bit per byte the way parity ones do, the extra
bits cannot be individually accessed, which is required for parity
operation. To make matters more confusing, some systems cannot use
the ECC modules at all, because they are wired differently than parity
Warning: Most ECC and parity modules have
the same designation
and bit widths, which means that a 4x72-60 DIMM could be either an
ECC module or a parity module, depending on how it has been
manufactured. Make sure you find out exactly what it is that you are
buying and what your system supports before purchasing. ECC-only
modules are usually labelled "ECC". Some systems will work fine with
them, but others will not.
Parity memory was once the only kind sold; it is now sold much less
frequently than non-parity memory, especially the faster and newer types
of memory. This is because of the de-emphasis on error detection in
newer systems and the number of popular chipsets that don't support
parity checking. Parity memory uses 12.5% more DRAM memory than
non-parity (1 bit extra for every 8) which makes it more expensive, but
the major reason that it costs more is simply that it is produced in much
smaller quantities today. With processors increasing in speed and more
high-end applications coming into prominence on the PC platform, errorchecking memory is now again on the increase.
Parity Checking
Parity checking is a rudimentary method of detecting simple, single-bit
errors in a memory system. It in fact has been present in PCs since the
original IBM PC in 1981, and until the early 1990s was used in every PC
sold on the market. It requires the use of parity memory, which provides
an extra bit for every byte stored. This extra bit is used to store
information to allow error detection. Parity checking on newer systems
normally requires the appropriate BIOS setting to be enabled. ECC-only
modules cannot be used in straight parity-checking mode.
Warning: Don't assume that ordering a new computer system with
parity memory means that parity checking will be turned on for you by
Revised November 28, 2008
the technicians who build the PC. Many companies that build PCs take
the attitude of "if we leave the BIOS settings on their defaults then we
minimize the chances of the PC having a problem". Parity memory is
worse than useless if parity checking is disabled! I say "worse" because
it fools you into thinking you have protection that you don't really have.
Every byte of data that is stored in the system memory contains 8 bits of
real data, each one a zero or a one. It is possible to count up the number
of zeros or ones in a byte. For example, the byte 10110011 has 3 zeros
and 5 ones. The byte 00100100 has 6 zeros and 2 ones. As you can
see, some bytes will have an even number of ones, and some will have
an odd number.
When parity checking is enabled, each time a byte is written to memory,
a logic circuit called a parity generator/checker examines the byte and
determines whether the data byte had an even or an odd number of
ones. If it had an even number of ones, the ninth (parity) bit is set to a
one, otherwise it is set to a zero. The result is that no matter how many
ones there were in the original eight data bits, there are an odd number
of ones when you look at all nine bits together. This is called odd parity.
(It is also possible to have even parity, where the generator makes the
sum always come out even, but the standard in PC memory is odd
As you can see, when all nine bits are taken together, there are always
an odd number of ones. When the data is read back from memory, the
parity circuit this time acts as a checker. It reads back all nine bits and
determines again if there are an odd or an even number of ones. If there
are an even number of ones, there must have been an error in one of
the bits, because when it stored the byte the circuit set the parity bit so
that there would always be an odd number of ones. This is how parity
memory is used to detect errors--the system knows one bit is wrong,
although it doesn't know which one it is. When a parity error is detected,
the parity circuit generates what is called a "non-maskable interrupt" or
"NMI", which is usually used to instruct the processor to immediately
halt. This is done to ensure that the incorrect memory does not end up
corrupting anything.
72 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
What happens if there is an error in two of the bits? Let's say we have a
data byte of 00100100 and this is stored as "00100100 1" including the
parity bit. Now let's say this is read back as "01100000 1". Here we have
two bits that have flipped, one of them from 1 to 0 and the other from 0
to 1. But the number of ones is still odd! As you can see, parity does not
protect against double-bit errors. Fortunately, if the odds of a single-bit
memory error are like those of being struck by lightning, the odds of a
double-bit error are comparable to those of being struck by lightning
twice at the same time. :^)
protection to eight bits, ECC uses larger groupings: 7 bits to protect 64
bits. There are special ECC memory modules designed specifically for
use in ECC mode, but most modern motherboards that support ECC will
in fact work in that mode using standard parity memory modules as well.
Since parity memory includes one extra bit for every eight bits of data,
this means 64 bits worth of parity memory is 72 bits wide, which means
there is enough to do ECC. In fact, parity SIMMs are 36 bits wide (two
are used in a fifth or sixth generation system) and parity DIMMs are 72
Incidentally, contrary to popular myth, parity checking does not slow
down the operation of the memory system. At all. The parity bit
generation and detection is done in parallel with the writing or reading of
the system memory, in transistor-to-transistor logic that is much faster
than the DRAM memory circuits being used. Nothing in the system ever
waits on a "go ahead" signal from the parity checking circuit. It only does
anything if it finds an error and when it does, it uses an interrupt.
Note: ECC requires special chipset support. When supported and
enabled, ECC will function using ordinary parity memory modules; this is
the standard way that most motherboards that support ECC operate.
The chipset "groups" together the parity bits into the 7-bit block needed
for ECC. Many of these motherboards also support the special ECC-only
modules, but some boards support parity modules in ECC mode but not
the ECC-only modules. See this section for more on the difference
between the two types.
Parity checking provides single-bit error detection for the system
memory, but does not handle multi-bit errors, and provides no way to
correct memory errors. An advanced error detection and correction
protocol was invented to go a step beyond simple parity checking. Called
ECC, which stands for error correcting circuits, error correcting code, or
error correction code, this protocol not only detects both
single-bit and multi-bit errors, it will actually correct single-bit errors on
the fly, transparently. Like parity checking, ECC requires a setting in the
BIOS program to be enabled. Often there are two; one turns on parity
checking and the other tells the system to use ECC mode.
Warning: Don't assume that ordering a PC with ECC memory means
that it will be properly configured for you in the BIOS setup. Very often it
isn't; a lot of smaller PC vendors don't even understand what ECC is,
never mind how to enable it.
ECC uses a special algorithm to encode information in a block of bits,
that contains sufficient detail to permit the recovery of a single bit error in
the protected data. Unlike parity, which uses a single bit to provide
Revised November 28, 2008
ECC has the ability to correct a detected single-bit error in a 64-bit block
of memory. When this happens, the computer will continue without a
hiccup; it will have no idea that anything even happened. However, if you
have a corrected error, it is useful to know this; a pattern of errors can
indicate a hardware problem that needs to be addressed. Chipsets
allowing ECC normally include a way to report corrected errors to the
operating system, but it is up to the operating system to support this.
Windows NT and Linux do detect these messages, but Windows 95
does not. In the latter case, you will not know when ECC has corrected a
single-bit error. The user must decide if this is a concern or not; setting
the system for simple parity checking will cause notification when an
error occurs, but on-the-fly correction will be lost.
ECC will detect (but not correct) errors of 2, 3 or even 4 bits, in addition
to detecting (and correcting) single-bit errors. ECC memory handles
these multi-bit errors similarly to how parity handles single-bit errors: a
non-maskable interrupt (NMI) that instructs the system to shut down to
avoid data corruption. Multi-bit errors are extremely rare in memory.
73 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
Unlike parity checking, ECC will cause a slight slowdown in system
operation. The reason is that the ECC algorithm is more complicated,
and a bit of time must be allowed for ECC to correct any detected errors.
The penalty is usually one extra wait state per memory read. This
translates in most cases to a real world decrease in performance of
approximately 2-3%.
A 80286 computer that has a Maxtor XT 4380E hard drive. The drive
should have a 380MB capacity, but the PC thinks it has only 1MB of
storage. The hard disk is connected to a Western Digital controller that
has its own BIOS onboard.
The Maxtor X4380E is an ESDI drive, with 15 heads, 1,224 cylinders,
and 36 sectors per track. The 80286 class machines had tables of hard
disk configurations in ROM, but these were only for MFM and RLL hard
For an ESDI drive, you typically set the CMOS Drive Table setting to 1.
You then may need to low level format the drive. Run DEBUG from the
DOS prompt, and at the prompt, give the following command:
This should trigger a low level format utility that is stored in the hard disk
controller’s ROM. Most disks have the sector and track information
already encoded on the drive, though the controller may do a translation
where it sees more sectors per track in order to keep the number of
tracks within the old DOS limit of 1,024 cylinders. After the drive has
been low level formatted, you should be able to FDISK and FORMAT
the drive normally.
DOS Version Partition Capabilities
Revised November 28, 2008
There are currently several different versions of MS-DOS in the
personal-computer environment, both in the OEM-licensed versions and
in the Microsoft packaged-product versions. The hard-disk-management
capabilities of MS-DOS vary from one version to another. For example,
MS-DOS versions 3.2 and 3.21 can address a single hard-disk partition
of up to 32 megabytes (MB); MS-DOS version 3.3 can address multiple
hard-disk partitions, with a primary DOS partition of up to 32 MB and an
extended DOS partition containing logical drives of up to 32 MB each;
and MS-DOS versions 4.0, 4.01, 5.0, 6.0, and 6.2 can address multiple
hard-disk partitions with sizes up to 2 gigabytes (GB).
RAID (Redundant Array of Inexpensive Disks) is a storage technology
that groups multiple hard drives into what appears to be one logical
volume. The term RAID was introduced in a late-1987 paper by
Patterson, Gibson, and Katz of the University of California-Berkley
entitled "A Case for Redundant Arrays of Inexpensive Disks (RAID)."
The paper compared RAID to SLED (Single Large Expensive Disk) and
described five-disk array architectures, or levels. RAID technology is
currently the hottest mass storage topic in the literature.
Disk arrays generally improve system performance by supporting
multiple simultaneous read and/or write operations as well as by
increasing capacity and providing fault tolerance. The use of multiple
drives in an array actually increases the chances that a drive failure will
occur. However, the data redundancy of RAID allows the array to
tolerate a drive failure. Originally, there were five basic levels of RAID
defined. Others, and combinations of levels, have since been added.
Below is a basic description of each level of RAID:
RAID Level 0
This form of RAID is not RAID as described in the Berkley paper
because there is no data redundancy. Most disk arrays use striping, or
distribution of data across multiple drives. RAID 0 implements striping
without redundancy and is, therefore, less reliable than a single drive.
The only advantage is increased speed.
74 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
RAID Level I
RAID I implements mirroring, or shadowing, of disks. Each drive in the
system has a copy, or "mirror, of itself. If a drive falls, the duplicate drive
keeps working with no lost data or downtime. Since there are two
sources of data, the average access time for a read request will be
faster than that for a single drive. For a write request, which is almost
always preceded by a read, the decrease in read seek time of RAID I is
offset by the increase in write seek time (since the data has to be written
to two disks). A read and two writes takes the same time as a read/write
for a single drive. RAID 1, with an optimized controller, has slightly lower
overall access times than a single drive.
The main advantage of RAID I over other RAID architectures is
simplicity. It only requires a dual channel controller or a minimal device
driver using one or two controllers to implement. No change to the
operating system is needed. RAID I is relatively expensive to implement
because only half the available disk space is used for data storage. In
addition, the necessity of duplicate drives requires more power and more
space for the same storage capacity.
RAID Level 2
RAID 2 is an architecture that succeeds in reducing disk overhead (the
cost of storage space lost to redundancy) by using Hamming codes to
detect and correct errors. Check disks are required in addition to the
data disks. The data is striped across the disks along with an
Interleaved Hamming code. Because all of the data disks must seek
before a read starts, and because for a write the data disks must seek,
read data, all drives (including check disks) must seek again, and then
the data is written, seek times are very slow compared to a single drive.
However, once the seek is completed, data transfer rates are very high.
For an array with 8 data drives, the drives will transmit data in parallel.
The transfer rate of the array will be 8 times that of a single drive.
RAID 2 is best for reading and writing large data blocks at high data
transfer rates. In the microcomputer environment the existing error
detection/ correction features result in redundant error isolation data for
RAID 2 and make RAID 2 impractical for microcomputers. By letting the
Revised November 28, 2008
drives manage error detection, it is possible to Implement RAID
requiring only one check disk for error correction.
RAID Level 3
By assuming that each disk drive in the array can detect and report
errors, the RAID system only has to maintain redundancy in the data
necessary to correct errors. RAID 3 employs a single check disk (parity
disk) for each group of drives. Data is striped across each of the data
disks. The check disk receives the XOR (exclusive OR) of all the data
written to the data drives. Data for a failed drive can be reconstructed by
computing the XOR of all the remaining drives. This approach reduces
disk overhead from RAIDs I and 2. For a five-disk array, four of the
drives store data; providing 4 GB of data storage in a S GB array. RAID
3 also has the same high transfer rates as RAID 2. However, because
every data drive is involved in every read or write, a penalty is paid.
RAID 3 can process only one 1/0 transaction at a time. In addition, the
minimum amount of data that can be written or read from a RAID 3 array
is the number of data drives multiplied by the number of bytes per
sector, referred to as a transfer unit. A typical five-drive array would
have four data disks, one parity disk, and might have a 512-byto sector
size on each disk. The transfer unit would be 2048 bytes (4 x 512).
When a data read is smaller than the transfer unit, the entire unit is read
anyway, increasing the length of a read operation. For a data write
smaller than the transfer unit, although only a portion of a sector of each
disk needs to be modified, the array must still deal with complete
transfer units. A complete unit must be read from the array; the data
must be rewritten where necessary; and the modified data must be
written back to the data disks and the check disk updated. RAID 3
works well in applications that process large chunks of data.
RAID Level 4
RAID 4 addresses the problems associated with bit-striping a transfer
block of data across the array. As in RAID 3, one drive in the array is
reserved as the check disk. This architecture, however, utilizes block or
sector striping to the drives, resulting in read transactions involving only
one drive and timing comparable to a single drive. In addition, multiple
read requests can be handled at the same time. However, since every
Page 75 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
write accesses the parity disk, only one write at a time is possible. RAID
4 is most useful in an environment where the ratio of reads to writes is
very high.
technology achieves the benefits of both of its individual layers. Its chief
drawback is cost. As with simple mirroring, it doubles the amount of
physical storage needed for a given amount of logical storage.
RAID Level 5
Because RAID levels 2 through 4 each use a dedicated check disk, only
one write transaction is possible at any time. RAID 5 overcomes the
write bottleneck by distributing the error correcting codes (ECC) across
each of the disks in the array. Therefore, each disk in the array contains
both data and check-data. Distributing check-data across the array
allows reads and writes to be done in parallel. Data recovery and seek
times are comparable to RAID 4.
RAID Level 53
This level represents a layering of RAID Level 0 and RAID Level 3-the
incoming data is striped between two RAID Level 3 arrays. The capacity
of the RAID Level 53 array is the total of the capacity of the individual
underlying RAID Level 3 arrays. Input/output performance is enhanced
by the striping between multiple arrays. Throughput is improved by the
underlying RAID Level 3 arrays. Because the simple striping of the top
RAID Level 0 layer adds no redundant data, reliability falls. RAID Level
3 arrays, however, are inherently so fault tolerant that the overall
reliability of the RAID Level 53 array far exceeds that of an individual
hard disk drive. As with a RAID Level 3 array, the failure of a single
drive will not adversely affect data integrity.
RAID Level 6
To further improve the fault tolerance of RAID Level 5, the same
Berkeley researchers who developed the initial five RAID levels
proposed one more, now known as RAID Level 6. This level adds a
second parity drive to the RAID level 5 array. The chief benefit is that
any two drives in the array can fail without the loss of data. This enables
an array to remain in active service while an individual physical drive is
being repaired yet still remain fault tolerant. In effect, a RAID Level 6
array with a single failed physical disk becomes a RAID Level 5 array.
The drawback of the RAID Level 6 design is that it requires two parity
blocks to be written during every write operation. Its write performance
is extremely low, although read performance can achieve levels on par
with RAID Level 5.
RAID Level 10
Some arrays employ multiple RAID technologies. RAID Level 10
represents a layering of RAID Levels 0 and I to combine the benefits of
each. (Sometimes RAID Level 10 is called RAID Level O& I to more
specifically point at its origins). To improve input/output performance,
RAID Level 10 employs data striping, splitting data blocks between
multiple drives. Moreover, the Array Management Software can further
speed read operations by filling multiple operations simultaneously from
the two mirrored arrays (at times when both halves of the mirror are
functional, of course). To improve reliability, the RAID level uses
mirroring so that the striped arrays are exactly duplicated. This
Revised November 28, 2008
Disk Array Implementations
Actual disk array implementations are not always as simple or
straightforward as described above. Some manufacturers combine
features of different RAID levels to create a hybrid, as in RAID 0/1.
RAID implementations that are extremely fault-tolerant provide
redundancy beyond that of the drives. Additional redundancy is
accomplished by providing a system with redundant drive controllers,
redundant power supplies, redundant SCSI controllers, and so on.
Some manufacturers offer "hot swappability," the ability to replace a
failed drive (or other hardware units) without shutting the system down.
Other manufacturers offer a spare drive that is automatically put into use
rebuilding the failed drive as soon as the system senses a failure.
Still other RAID manufacturers offer only software-based RAID. The
RAID architecture is contained in software that the customer implements
with his own hardware. And finally, some RAID systems offer more than
one level of RAID in the same package to handle mixed applications
more efficiently. A listing of RAID vendors and information about the
products they offer appears at the end of this section in 9.5 RAID
Vendors Database., although not all information
76 of 77
Technician Field Notes
(Legacy Systems)
Mark E. Donaldson
make it a binary copy, in case the print stream has binary
information such as graphics or macros.
Desired to Print a Web page To File. The system created a large PRN
file that was assumed was a rendering of the print image to be sent to
my inkjet printer, but now don’t know how to print it. Under DOS, you
would use the command COPY FILE.PRN LPT. There must be a was
to print the within Windows 95. By double clicking on the file, Windows
95 asks for a file association.
The PRN file contains printer commands for various functions such as
fonts and graphics, so the file must be sent directly to the printer. If you
try to use an existing application, the program will run the file through the
Windows driver for that printer, and you will get an unintelligible mess.
The solution is closely related to the DOS printing method you
mentioned. You need to create an application that will perform that
simple DOS COPY command, and then create a desktop shortcut icon
for it. You c can create a small program made up of DOS commands (a
batch file):
1. Start by opening a DOS window and type in the following command:
2. Press ENTER. The cursor will move down to the next line, but
nothing will happen.
3. Next type the following line: COPY %1 PRN /B
6. Close the DOS window (type exit) and right click on the Desktop.
Create a new shortcut for PRINTFILE.BAT. Choose a name and
icon for the shortcut so that it can be found easily.
7. Now, open the Windows Explorer, find the PRN file, and drag and
drop it on the shortcut.
Windows Distribution Disks
To copy and extract the Windows distribution disks (CAB files):
1. Copy files to desired harddisk, removable disk, or floppy disk.
2. Extract individual files using DOS EXTRACT utility:
EXTRACT [/Y] [/A] [/D] [/E] <CABfile> [<filename>]
[/L <destination folder>]
The /Y switch causes the program to skip warning prompts about
overwriting existing files. The /A switch causes the program to search
the named CAB file, and if it can’t find the desired file there, it will search
all higher numbered CAB files as well. The /D switch causes the
program to display the contents of the named cabinet file. The /E switch
causes all files from the named cabinet file to be extracted (equivalent to
using *.* as the <filename>). The /L switch is used to indicate the
destination folder. If one is not specified, it will go into the current
4. Press ENTER.
5. Finally, press CTRL-Z (^Z will appear) to signal the end of file, and
DOS will respond with One File Copied. The %1 is a batch file
parameter that will accept the filename, and the /B is required to
Revised November 28, 2008
77 of 77
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF