Hardware Reference
In-Depth Information
The original PC had a total of 1MB of addressable memory, and the top 384KB of that was reserved
for use by the system. Placing this reserved space at the top (between 640KB and 1,024KB, instead
of at the bottom, between 0KB and 640KB) led to what is often called the conventional memory
barrier . The constant pressures on system and peripheral manufacturers to maintain compatibility by
never breaking from the original memory scheme of the first PC has resulted in a system memory
structure that is (to put it kindly) a mess. Almost two decades after the first PC was introduced, even
the newest systems are limited in many important ways by the memory map of the first PCs.
The original PC used an Intel 8088 processor that could run only 16-bit instructions or code, which
ran in what was called the real mode of the processor. These early processors had only enough
address lines to access up to 1MB of memory, and the last 384KB of that was reserved for use by the
video card as video RAM, other adapters (for on-card ROM BIOS or RAM buffers), and finally the
motherboard ROM BIOS.
The 286 processor brought more address lines, enough to allow up to 16MB of RAM to be used, and
a new mode called protected mode that you had to be in to use. One area of confusion was that RAM
was now noncontiguous; that is, the OS could use the first 640KB and the last 15MB, but not the
384KB of system reserved area that sat in between.
When Intel released the first 32-bit processor in 1985 (the 386DX), the memory architecture of the
system changed dramatically. There were now enough address lines for the processor to use 4GB of
memory, but this was accessible only in 32-bit protected mode, in which only 32-bit instructions or
code could run. Unfortunately, it took 10 years for the industry to transition from 16-bit to 32-bit OSs
and applications. From a software instruction perspective, all the 32-bit processors since the 386 are
really just faster versions of the same.
When AMD released the first x86-64 processor in 2003 (Intel followed suit in 2004), the 64-bit era
was born. In addition to 16-bit and 32-bit modes, these chips have a 64-bit mode (commonly referred
to as x64). 64-bit processors have three distinctly different modes, with unique memory architectures
in each. For backward compatibility, 64-bit processors can run in 64-bit, 32-bit, or 16-bit modes, and
32-bit processors can run in 32-bit or 16-bit modes, each with different memory limitations. For
example, a 64-bit processor running in 32-bit mode can only address 4GB of RAM, and a 64-bit or
32-bit processor running in 16-bit mode can only address 1MB of RAM. All Intel-compatible PC
processors begin operation in 16-bit real mode when they are powered on. When a 32-bit or 64-bit
OS loads, it is that OS code that instructs the processor to switch into 32-bit or 64-bit protected
mode.
When a 32-bit OS such as Windows is loaded, the processor is switched into 32-bit protected mode
early in the loading sequence. Then, 32-bit drivers for all the hardware can be loaded, and the rest of
the OS can load. In 32-bit protected mode, the OSs and applications can access all the memory in the
system up to 4GB. Similarly, on a 64-bit OS, the system switches into 64-bit protected mode early in
the boot process and loads 64-bit drivers, followed by the remainder of the OS.
The 32-bit editions of Windows support 4GB of physical memory (RAM). What many don't realize is
that the PC system hardware uses some or all of the fourth gigabyte for the BIOS, motherboard
resources, memory mapped I/O, PCI configuration space, device memory (graphics aperture), VGA
memory, and so on. This means that if you install 4GB (or more) RAM, none of it past 4GB will be
seen at all, and most or all of the fourth gigabyte (that is, the RAM between 3GB and 4GB) will be
disabled because it is already occupied by other system hardware. This is called the 3GB limit ,
which is analogous to the 640K memory limit we had on 16-bit systems in the 1980s. The 16-bit
Search WWH ::




Custom Search