What is the 64-bit address space?

Because of changes in the architecture that supports the Multiple Virtual Storage (MVS™) operating system, there have been two different address spaces prior to the 64-bit address space. The address space of the 1970s began at address 0 and ended at 16 megabytes. The architecture that created this address space provided 24-bit addresses.

In the early 1980s, XA (extended architecture) introduced an address space that began at address 0 and ended at two gigabytes. The architecture that created this address space provided 31-bit addresses. To maintain program compatibility, MVS provided two addressing modes (AMODEs):
  • Programs that run in AMODE 24 can use only the first 16 megabytes of the address space
  • Programs that run in AMODE 31 can use the entire 2 gigabytes.

Today, the address space begins at address 0 and ends at 16 exabytes. The architecture that creates this address space provides 64-bit addresses. The address space structure below the 2 gigabyte address has not changed; all programs in AMODE 24 and AMODE 31 continue to run without change. In some fundamental ways, the address space is much the same as the XA address space.

In the 31-bit address space, a virtual line marks the 16-megabyte address. The 64-bit address space also includes the virtual line at the 16-megabyte address; additionally, it includes a second virtual line called the bar that marks the 2-gigabyte address. The bar separates storage below the 2-gigabyte address, called below the bar, from storage above the 2-gigabyte address, called above the bar. The area above the bar is intended for data; no programs run above the bar. IBM® reserves an area of storage above the bar for special uses to be developed in the future.

You can set a limit on how much virtual storage above the bar each address space can use. This limit is called the MEMLIMIT. If you do not set a MEMLIMIT, the system default is 2G, meaning that the address space can use up to 2G of virtual storage above the bar. If you want an address space to have access to more or less virtual storage above the bar, you must explicitly set the MEMLIMIT to the limit you want. You can set an installation default MEMLIMIT through System Management Facility (SMF). You can also set a MEMLIMIT for a specific address space in the job control language (JCL) that creates the address space or by using SMF exit IEFUSI or the SMFLIMxx parmlib member. For information about how to set MEMLIMIT explicitly, see Limiting the use of private memory objects.

Figure 1 shows a z/OS® address space, including the line that marks the 16-megabyte address, the bar that marks the 2-gigabyte address, and the default shared area starting at 2 terabytes and ending at 512 terabytes.

Figure 1. z/OS address space
The z/OS 64-bit address space memory map, showing the 16-megabyte line, the 2-gigabyte bar, low user private area, 64-bit common area, shared area, high user private area.

Before z/OS Version 1 Release 3, all programs in AMODE 31 or AMODE 24 were unable to work with data above the bar. To use virtual storage above the bar, a program must request storage above the bar, be in AMODE 64, and use the z/Architecture® assembler instructions.

As of z/OS Version 1 Release 5, the following enhancements for 64-bit virtual storage have been added:
  • 64-bit shared memory support
  • Multiple guard area support for private high virtual storage
  • Default shared memory addressing area between 2 terabytes and 512 terabytes

As of z/OS Version 1 Release 10, support for 64-bit common virtual storage has been added. The size of the 64-bit common area can be specified using the HVCOMMON keyword in the IEASYSxx member of parmlib or during system IPL in response to the IEA101A message. The 64-bit common area will reside on a 2-gigabyte boundary and the total size will be a multiple of 2 GB. The minimum size is 2 GB, the maximum is 1 TB, and the default is 64 GB.