Installed V.S. Usable Memory

Most people don't realize that not all the RAM you purchase and install in a system is available. Because of some quirks in system design, the system usually has to "throw away" up to 384KB of RAM to make way for the Upper Memory Area.

For example, most systems with 16MB of RAM (which is 16,384KB) installed show a total of only 16,000KB installed during the POST or when running Setup. This indicates that 16,384KB–16,000KB = 384KB of missing memory! Some systems might show 16,256KB with the same 16MB installed, which works out to 16,384KB–16,256KB = 128KB missing.

If you run your Setup program and check out your base and extended memory values, you will find more information than just the single figure for the total shown during the POST. In most systems with 4,096KB (4MB), you have 640KB base and 3,072KB extended.

In some systems, Setup reports 640KB base and 3,328KB extended memory, which is a bonus. In other words, most systems come up 384KB short, but some come up only 128KB short. This shortfall is not easy to explain, but it is consistent from system to system.

Say that you have a 486 system with two installed 72-pin (32-bit) 16MB SIMMs. This results in a total installed memory of 32MB in two separate banks because the processor has a 32-bit data bus. Each SIMM is a single bank in this system.

The first bank (or SIMM, in this case) starts at address 0000000h (the start of the first megabyte), and the second starts at 1000000 (the start of the seventeenth megabyte). One of the cardinal rules of memory is that you absolutely cannot have two hardware devices wired to the same address.

This means that 384KB of the first memory bank in this system would be in direct conflict with the video RAM (segments A000 and B000), any adapter card ROMs (segments C000 and D000), and of course the motherboard ROM (segments E000 and F000).

This means all SIMM RAM that occupies these addresses must be shut off; otherwise, the system will not function! Actually, a motherboard designer can do three things with the SIMM memory that would overlap from A0000–FFFFF:

  • Use the faster RAM to hold a copy of any slow ROMs (shadowing), disabling the ROM in the process

  • Turn off any RAM not used for shadowing, eliminating any UMA conflicts

  • Remap any RAM not used for shadowing, adding to the stack of currently installed extended memory

Most systems shadow the motherboard ROM (usually 64KB) and the video ROM (32KB) and simply turn off the rest. Some motherboard ROMs allow additional shadowing to be selected between C8000 and DFFFF, usually in 16KB increments.

Most motherboards do not do any remapping, which means that any of the 384KB not shadowed is simply turned off. That is why enabling shadowing does not seem to use any memory. The memory used for shadowing would otherwise be discarded in most systems.

These systems would appear to be short by 384KB compared to what is physically installed in the system. For example, in a system with 32MB, no remapping would result in 640KB of base memory and 31,744KB of extended memory, for a total of 32,384KB of usable RAM—384KB short of the total (32,768KB–384KB).

Systems that show 384KB of "missing" memory do not do remapping. If you want to determine whether your system has any missing memory, all you need to know are three things. One is the total physical memory actually installed. Running your Setup program can discover the other two items.

You want to know the total base and extended memory numbers recognized by the system. Then simply subtract the base and extended memory from the total installed to determine the missing memory. You usually will find that your system is missing 384KB, but you could be lucky and have a system that remaps 256KB of what is missing and thus shows only 128KB of memory missing.

Virtually all systems use some of the missing memory for shadowing ROMs, especially the motherboard and video BIOS, so what is missing is not completely wasted. Systems missing 128KB will find that it is being used to shadow your motherboard BIOS (64KB from F0000 to FFFFF) and video BIOS (32KB from C0000 to C8000).

The remainder of segment C0000 (32KB from C8000 to CFFFF) is simply being turned off. All other segments (128KB from A0000 to BFFFF and 128KB from D0000 to EFFFF) are being remapped to the start of the fifth megabyte (400000–43FFFF).

Most systems simply disable these remaining segments rather than take the trouble to remap them. Note that with the relatively large amount of memory in modern PCs, losing a paltry 384KB hardly has an impact on performance.

Also, because shadowing has a performance benefit only when running under a 16-bit OS such as DOS, systems running Windows aren't affected by any changes to the shadowing settings. If these settings are present in your BIOS Setup, I usually recommend they be left at default settings.