0

Can somebody explain why some amount of memory always reserved for hardware? How is this related to memory addressing?

Picture - windows resource monitor

4
  • 1
    The most common use of main memory for hardware is for on-board graphics. Modern CPUs provide graphics handling within the chip, but there is no on-board memory for this, so some main memory is reserved as graphics memory. The amount allocated can generally be controlled within the BIOS, where you should find information on any other reserved memory.
    – AFH
    Nov 11, 2016 at 14:19
  • I don't know enough to write up an answer, nor can I easily find anything that isn't a forum post with dubious conflicting answers and statements, but I believe that this is a "symptom" of what is called "memory mapped IO." Without BIOS support/workarounds, some of this memory is actually unused, since the basic design requires a specific range to be open for hardware use.
    – Yorik
    Nov 11, 2016 at 15:23
  • post some hardware details Nov 11, 2016 at 15:45
  • @Yorik so it means that memory unavailable to use just because address range is ised by CPU to communicate with some hardware? Nov 12, 2016 at 10:50

2 Answers 2

0

A great deal depends on whether this is a 32 or 64 bit OS.

With a 64 bit OS the biggest user of hardware reserved memory is typically the video system. For reasons of economy many video systems have no or very little memory of their own but rely on system memory for it's needs. This is particularly common in laptops. This memory would be reserved by the BIOS for video use before Windows even starts.

All of the above applies to a 32 bit OS but there is an additional factor. A 32 bit OS has a fixed 4 GB physical address space. RAM is the biggest user of this address space but it is not the only one. For performance reasons a substantial portion of this space is used for memory mapped IO. This allows the CPU to quickly communicate with hardware devices by reading and writing to them the same as it does with memory. Typically this would require about 500 MB and more address space. There are other methods available but they are much too slow for high performance devices like video.

Memory mapped IO appears in the same address space as RAM. That introduces a problem. You can't have 4 GB RAM and 500 MB+ of memory mapped devices in a 4 GB address space. It just won't fit. Thus, whatever space is used for memory mapped devices is unavailable for use by RAM. Typically about 500 to 750 MB is lost but the exact amount depends on the hardware.

64 bit operating systems have a physical address space measured in terabytes so there is plenty of room for RAM and memory mapped IO.

5
  • and one more question please. For example I have GPU with 2 GB memory and RAM 8 GB. Does it mean that available RAM for Windows will be 8-2 = 6 GB ? Nov 12, 2016 at 11:06
  • @Gleb Voronchikhin
    – LMiller7
    Nov 12, 2016 at 16:13
  • @Gleb Voronchikhin
    – LMiller7
    Nov 12, 2016 at 16:13
  • @LMiller7 You wrote "A 32 bit OS has a fixed 4 GB physical address space." While this is true of 32-bit Windows "client" (i.e. not Server) editions it is not true in general. The "bitness" of an x86 or x64 OS or CPU limits the size of virtual address space, but not of physical address space (RAM). Windows 32-bit Server versions can... well, could, since there are no current ones any longer... address far more than 4 GB RAM via PAE. So can many other OSs. That 32-bit Windows client editions refuse to look at RAM addresses above 0xFFFFFFFF limit wired into the OS. It is not architectural. Nov 16, 2016 at 6:37
  • @GlebVoronchikhin > "For example I have GPU with 2 GB memory and RAM 8 GB. Does it mean that available RAM for Windows will be 8-2 = 6 GB ?" No, you'll be fine. x64 CPUs have a minimum of 40 bits of physical address, theoretically enough for 1 TiB of RAM, though most platforms don't support that much. (Check the max RAM your motherboard allows. If it's more than 8 GB, you're fine.) Also, a "GPU with 2 GB memory" almost never needs 2 GB of address space. Instead they present a much smaller "window" to the host CPU which the host can then "map" into various pieces of the card's full RAM. Nov 16, 2016 at 6:41
1
why some amount of memory always reserved for hardware?

Because this is a part of contemporary personal computer architecture, called "PCI", Peripheral Component Interconnect. This architecture was originally developed in early 1990s to make a progress in configuration and performance of expanding number of PC add-on devices, to provide also Plug-And-Play functionality (to eliminate awkward explicit configuration process and allocate peripheral resources automatically)

Each peripheral device needs means to communicate with CPU, to transfer data back and forth. So the PCI architecture provides the legacy I/O access space (an outdated form of peripheral communication in X86 architecture, which is less and less utilized nowadays), and a MEMORY-MAPPED space, which provides much faster access and data exchange. Obviously, if some window of communication is mapped to common memory space, it gets excluded from the address area of regular RAM. Although this resource allocation schema is flexible, there are some achitectural restictions (I believe at OS level as well) on how to decode and map this space, so some portion of upper memory is "reserved".

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .