1. Field of the Invention
This invention relates generally to data processing systems and, more particularly, to data processing systems in which a data processing unit identifies a data group by a first (virtual) address while the same data group is identified in the memory unit by a second (real) address.
2. Description of the Related Art
In the multiprocessor, multiprogramming data processing systems, the allocation of memory locations for each program, formerly under the control of the programmer, has now become the province of the operating system. The program identifies data groups by virtual addresses, the virtual addresses being only indirectly related to a physical location in the memory space of the data processing system. The use of the virtual addressing technique permits the data processing unit to have access to a large data storage facility even though only a small fraction of the available data groups will be resident in the memory unit at any one time. On the other hand, the real address of a data group relates to a physical memory location. The operating system has the responsibility for establishing the correspondence of the virtual addresses used by the executing program and the real addresses having significance for the data processing system. In the data processing system, a translation unit, typically referred to as the virtual memory management unit, provides an address in the memory unit in response to a virtual address used by the executing program. The virtual memory management unit includes apparatus for insuring that a data processing system program does not access inappropriate data groups.
In the modern data processing system, the data groups are typically organized into consecutive blocks. Because data groups which are potentially capable of being processed in close temporal proximity are stored in neighboring memory locations, a high probability exists that a data group of a neighboring memory location will be required relatively soon after the originally required data group is processed. The transfer of blocks of consecutive data groups to a data processing system for each memory read operation can reduce the number of memory accesses required to execute a program sequence. In the preferred embodiment, a block of data includes two double words, or 32 bits. Each word is addressed by a 32 bit address of the form illustrated in FIG. 4. The bits 0 and 1 identify a ring number that relates to execution privileges (parameters) of the program. Bits 2 through 11 identify the segment number, the coursest granularity for the identification of storage addresses. Bits 12 through 21 relate to a page number, the page being the unit of storage in the memory unit. Bits 22 through 31 identify the address offset, the offset address defining the relative location of the data group within the page.
The execution unit is implemented to process properly aligned double word operands. When the double word boundary is strictly enforced in a data processing system, then bit 31 of the virtual address would be redundant. As a practical matter, a double word can begin with the second word of the double word, or when bit 31 is a logic "1" signal. When bit 31 is a logic "1", then the second word is across the normal double word boundary and is the first word of the next double word. As a practical matter, this boundary crossing can cause problems with respect to the access of the second word. First, the addition of a logic "1" to the logic "1" of bit 31 can result in a memory address that is currently stored in the memory unit. Second, when the address offset consists of all logic "1"s in bit positions 22 through 31, the addition of a logic "1" to determine the second word of the double word will fall in a next page, a page that may not be present in the main memory. In this situation, the operating system be invoked to move the missing page into main memory. Finally, if the page number and the address offset, i.e., bits 12 through 31 are all logic "1"s, then the addition of a logic "1" to the 31 bit position results in a new segment being identified. Each segment can have different privileges associated therewith so that the second word of the double word may not be accessible to the currently executing instruction.
Therefore, a need has been felt for a virtual memory management unit in a data processing system that can provide the two words of a double word that cross a double word boundary or, in the alternative indicate why the double word can not be provided.