IBM's
operating systems
z/OS,
z/VSE,
z/TPF, and
z/VM are versions of
MVS,
VSE,
Transaction Processing Facility (TPF), and
VM that support z/Architecture. Older versions of z/OS, z/VSE, and z/VM continued to support 32-bit systems; z/OS version 1.6 and later, z/VSE Version 4 and later, and
z/VM Version 5 and later require z/Architecture.
Linux also supports z/Architecture with
Linux on IBM Z. z/Architecture supports running multiple concurrent operating systems and applications even if they use different address sizes. This allows software developers to choose the address size that is most advantageous for their applications and data structures. On July 7, 2009, IBM on occasion of announcing a new version of one of its operating systems implicitly stated that
Architecture Level Set 4 (
ALS 4) exists, and is implemented on the System z10 and subsequent machines. The ALS 4 is also specified in LOADxx as
ARCHLVL 3, whereas the earlier z900, z800, z990, z890, System z9 specified ARCHLVL 2. Earlier announcements of System z10 simply specified that it implements z/Architecture with some additions: 50+ new machine instructions, 1 MB page frames, and hardware decimal floating-point unit (HDFU). Most
operating systems for the z/Architecture, including
z/OS, generally restrict code execution to the first 2 GB (31 address bits, or 231 addressable bytes) of each
virtual address space for reasons of efficiency and compatibility rather than because of architectural limits. Linux on IBM Z allows code to execute within 64-bit address ranges.
z/OS Each z/OS
address space, called a 64-bit address space, is 16
exabytes in size.
Code (or mixed) spaces The z/OS implementation of the
Java programming language is an exception. The z/OS
virtual memory implementation supports multiple address spaces, permitting more than of concurrently resident program code.
Data-only spaces Data-only spaces are memory regions that can be read from and written to, but not used as executable code. (Similar to the
NX bit on other modern processors.) By default, the z/Architecture memory space is indexed by 64-bit pointers, allowing up to 16 exabytes of memory to be visible to an executing program.
Dataspaces and hiperspaces Applications that need more than a 16
exabyte data address space can employ extended
addressability techniques, using additional address spaces or data-only spaces. The data-only spaces that are available for user programs are called: •
dataspaces (sometimes referred to as "data spaces") and •
hiperspaces (High performance space). These spaces are similar in that both are areas of virtual storage that a program can create, and can be up to 2
gigabytes. Unlike an address space, a dataspace or hiperspace contains only user data; it does not contain system control blocks or common areas. Program code cannot run in a dataspace or a hiperspace. A dataspace differs from a hiperspace in that dataspaces are byte-addressable, whereas hiperspaces are page-addressable.
IBM mainframe expanded storage Traditionally, memory has been
byte-addressable in
IBM System/360 mainframes and their successors, including z/Architecture mainframes. This kind of memory is termed "Central Storage". IBM mainframe processors through much of the 1980s and 1990s supported another kind of memory: Expanded Storage. It was first introduced with the
IBM 3090 high-end mainframe series in 1985. Expanded Storage is 4KB-page addressable. When an application wants to access data in Expanded Storage it must first be moved into Central Storage. Similarly, data movement from Central Storage to Expanded Storage is done in multiples of 4 KB pages. Initially page movement was performed using relatively expensive instructions, by paging subsystem code. The overhead of moving single and groups of pages between Central and Expanded Storage was reduced with the introduction of the
MVPG (Move Page) instruction and the
ADMF (Asynchronous Data Mover Facility) capability. The MVPG instruction and ADMF are explicitly invoked—generally by middleware in
z/OS or
z/VM (and ACP?)—to access data in expanded storage. Some uses are namely: • MVPG is used by
VSAM Local Shared Resources (LSR) buffer pool management to access buffers in a hiperspace in Expanded Storage. • Both MVPG and ADMF are used by
IBM Db2 to access hiperpools. Hiperpools are portions of a buffer pool located in a hiperspace. • VM Minidisk Caching. Until the mid-1990s Central and Expanded Storage were physically different areas of memory on the processor. Since the mid-1990s Central and Expanded Storage were merely assignment choices for the underlying processor memory. These choices were made based on specific expected uses: For example, Expanded Storage is required for the Hiperbatch function (which uses the MVPG instruction to access its hiperspaces). In addition to the hiperspace and paging cases mentioned above there are other uses of expanded storage, including: • Virtual I/O (VIO) to Expanded Storage which stored temporary data sets in simulated devices in Expanded Storage. (This function has been replaced by VIO in Central Storage.) • VM Minidisk Caching.
z/OS removed the support for Expanded Storage. All memory in z/OS is now Central Storage.
z/VM 6.4 fulfills Statement of Direction to drop support for all use of Expanded Storage.
MVPG and ADMF MVPG IBM described
MVPG as "moves a single page and the central processor cannot execute any other instructions until the page move is completed." The MVPG mainframe instruction (
Mo
Ve
Pa
Ge, opcode X'B254') has been compared to the
MVCL (
Mo
Ve
Character
Long) instruction, both of which can move more than 256 bytes within main memory using a single instruction. These instructions do not comply with definitions for
atomicity, although they can be used as a single instruction within documented timing and non-overlap restrictions. The need to move more than 256 bytes within main memory had historically been addressed with software (MVC loops), MVCL, which was introduced with the 1970 announcement of the
System/370, and MVPG, patented and announced by IBM in 1989, each have advantages.
ADMF ADMF (Asynchronous Data Mover Facility), which was introduced in 1992, goes beyond the capabilities of the MVPG (Move Page) instruction, which is limited to a single page, and can move groups of pages between Central and Expanded Storage. A
macro instruction named IOSADMF, which has been described as an
API that avoids "direct, low-level use of ADMF", can be used to read or write data to or from a hiperspace. Hiperspaces are created using DSPSERV CREATE. To provide
reentrancy, IOSADMF is used together with a "List form" and "Execute form." ==Non-IBM implementations==