An apparatus and method provide simultaneous local and global addressing capabilities in a computer
system. A
global address space is defined that may be accessed by all processes. In addition, each process has a local
address space that is local (and therefore available) only to that process. An
address space processor is implemented in
software to perform
system functions that distinguish between local addresses and global addresses. In the preferred embodiments, the local
address space has a size that is a multiple of the size of a segment of
global address space. When the hardware indicates a
page fault, the address space processor determines whether the address being translated is a local address or a global address. If the address is a local address, the address space processor uses a local
directory to process the
page fault. If the address is a global address, the address space processor uses a global
directory to process the
page fault. When the hardware indicates an addressing error because a computed address crosses a global segment boundary, the address space processor determines whether the address is a local address or a global address. If the address is a global address, the address space processor indicates an addressing error. If the address is a local address, the address space processor determines whether the address is within the process' local address space, and indicates an addressing error if the address is outside the process' local address space. Instructions are allowed to operate on both local and global addresses because the address space processor handles either type of address whenever
software assistance is required, such as for servicing a page fault or checking a segment
boundary crossing. In addition, the address space processor dynamically checks the addressing compatibility of called code before passing control to the called code.