Page 137 - A Practical Guide from Design Planning to Manufacturing
P. 137

110   Chapter Four

        translated to different physical addresses, preventing any interference.
        Virtual memory cannot prevent programs from failing or having bugs,
        but it can prevent these errors from causing problems in other programs.
          Programs can assume more virtual memory than there is physical
        memory available because not all the virtual pages need be present in
        physical memory at the same time. If a program attempts to access a
        virtual page not currently in memory, this is called a page fault. The pro-
        gram is interrupted and the operating system moves the needed page
        into memory and possibly moves another page back to the hard drive.
        Once this is accomplished the original program continues from where
        it was interrupted.
          This slight of hand prevents the program from needing to know the
        amount of memory really available. The hard drive latency is huge com-
        pared to main memory, so there will be a performance impact on pro-
        grams that try to use much more memory than the system really has,
        but these programs will be able to run. Perhaps even more important,
        programs will immediately be able to make use of new memory installed
        in the system without needing to be recompiled.
          The architecture defines the size of the virtual address, virtual page
        number, and page offset. This determines the size of a page as well as
        the maximum number of virtual pages. Any program compiled for this
        architecture cannot make use of more memory than allowed by the vir-
        tual address size. A large virtual address makes very large programs pos-
        sible, but it also requires the processor and operating system to support
        these large addresses. This is inefficient if most of the virtual address
        bits are never used. As a result, each architecture chooses a virtual
        address size that seems generous but not unreasonable at the time.
          As Moore’s law allows the cost of memory per bit to steadily drop and
        the speed of processors to steadily increase, the size of programs con-
        tinues to grow. Given enough time any architecture begins to feel con-
        strained by its virtual address size. A 32-bit address selects one of 2 32
        bytes for a total of 4 GB of address space. When the first 32-bit proces-
        sors were designed, 4 GB seemed an almost inconceivably large amount,
        but today some high-performance servers already have more than 4 GB
        of memory storage. As a result, the x86 architecture was extended in
        2004 to add support for 64-bit addresses. A 64-bit address selects one
        of 2  64  bytes, an address space 4 billion times larger than the 32-bit
        address space. This will hopefully be sufficient for some years to come.
          The processor, chipset, and motherboard implementation determine
        the maximum physical address size. It can be larger or smaller than the
        virtual address size. A physical address larger than the virtual address
        means a computer system could have more physical memory than any
        one program could access. This could still be useful for running multi-
        ple programs simultaneously. The Pentium III supported 32-bit virtual
   132   133   134   135   136   137   138   139   140   141   142