Memory management
Memory management is the name for the hardware (sometimes called the Memory Management Unit, or MMU) in a CPU which controls which areas in physical main memory a given user process is allowed to use. In other words, it controls what the process' address space looks like.
This hardware is needed for two reasons. First, in a time-sharing operating systems, to prevent one user's erroneous (or hostile) program from interfering with the memory of another user (or the OS itself); i.e. to confine it to that area of main memory to which it had been assigned. Second, it is useful in the allocation of main memory, particularly in virtual memory systems, where memory is allocated in pages of equal size, which makes allocation of physical memory much simpler - unlike in earlier base and bounds memory management.
Early IBM System/360 machines exposed the actual physical memory addresses to users (hence the ubiquitous use of BALR instructions to load index registers), although the protection mechanism in their case was not a bounds register, but protection keys on each block of memory. Also, the need for an adder in the addressing logic was not done away with entirely - to prevent the need to re-link a program each time it was loaded, indexing registers were used extensively, requiring an adder there.