Last Updated: 29 July 2019

z/Architecture CMS



 

z/Architecture CMS Introduction

z/Architecture CMS (z/CMS), previously shipped as a sample program, is now a fully supported part of z/VM. z/CMS runs in IBM z/Architecture 31-bit addressing mode in an ESA or XA virtual machine and enables CMS programs to use z/Architecture instructions, including those that operate on 64-bit registers, while permitting existing ESA/390 architecture CMS programs to continue to function without change.

z/CMS protects customers' existing investment in CMS-based applications and infrastructure, and enables new applications to be developed which exploit features and instructions available only in z/Architecture.

z/CMS is intended to provide compatible support for ESA/390 CMS programs running in 24-bit or 31-bit addressing mode. Several z/VM-provided service machines (e.g., TCP/IP MPROUTE, Performance Toolkit) require z/CMS in order to function.


Compatibility

While there are architecturally necessary differences between ESA/390 CMS and z/CMS, for the most part programs operate identically and need not know or care in which environment they are running. In fact, even programs that exploit low-level techniques such as replacing the ESA/390 interruption PSWs continue to operate without change. However, programs that rely on some internal CMS data structures or make assumptions about their locations might not function properly. For example, the z/Architecture Prefix Storage Area is 8K, so memory from location 0 to 1FFF16 is now reserved, pushing other CMS fixed areas to higher locations.

A few programs have had latent bugs exposed when run on z/CMS. For example, some programs erroneously test a byte in low storage that in ESA/390 CMS always happens to have a value that produces correct behavior, whereas in z/CMS, the value and the behavior are different.


Exploitation

z/CMS enables exploitation of z/Architecture. However, there are some restrictions and limitations.


z/Architecture Instructions

z/CMS programs can take advantage of the z/Architecture instruction set. This includes 64-bit arithmetic and logical instructions, long-displacement memory references, relative addressing, and specialized instructions for compression, sorting, and string manipulation. As IBM Z evolves further, so will the list of new architectural facilities available to programs running on z/CMS. In contrast, the ESA/390 instruction architecture has been stabilized since about 2003.


64-bit Registers

Using large general-purpose registers is tolerated by z/CMS. Its interruption handlers and SVC linkage save and restore large registers. However, it is the application program's responsibility to switch to 31-bit addressing mode and to provide 31-bit addresses when invoking CMS services. CMS Multithreading is no exception: it does not preserve or restore the high halves of registers. Some CMS data structures (e.g., the ABEND save area) provide only the low halves of registers.


Storage Above 2G

CMS will not load code above 2G and provides only rudimentary storage management above 2G by managing requests to allocate and release memory in a special USERG subpool in 4K increments. The REXX STORAGE() function supports 64-bit memory addresses.


New Architectural Facilities

z/CMS does not provide support for preserving state associated with z/Architecture constructs that introduce new machine registers such as the vector instructions or guarded storage, though it does not prevent use of such facilities by applications that are aware of this limitation. It also does not support facilities such as transactional execution that would require enablement and additional support in the CMS Nucleus.


Limitations

There are various architectural limitations of the current z/CMS implementation.


XC Mode

XC mode (MACHINE XC) is not currently supported by the Control Program for z/Architecture guests, so there is no direct access to VM Data Spaces. This means that FCBs for files in an SFS DIRCONTROL directory must be copied into private storage below 16MB and cannot be shared. As well, the CMS Pipelines Data Spaces functions such as ADRSPACE and MAPMDISK and the associated CMS and Control Program interfaces are not supported.


370 Accommodation

The z/VM Control Program does not support this facility for guests in z/Architecture mode, so there is no ability to emulate S/370-unique instructions, such as TIO and SIO, no support for S/370 forms of Diagnose instructions, no support of BC-mode PSWs, no presentation of S/370-unique interruption parameters, and no emulation of the interval timer. Programs that requires 370 Accommodation support must continue to run on ESA/390 or ESA/XC CMS.


Support

If a program fails in the z/CMS environment but works on ESA/390 CMS, open a problem report with the IBM Service Center, as for any z/VM defect.


Summary

Almost all CMS programs will run on z/CMS without change. A few that have deep hooks into CMS internals will need some minor surgery but should be readily discoverable as they will probably fail spectacularly before running for very long. Many IBM z/VM developers use z/CMS regularly, sometimes switching to MACHINE XC and IPLing CMS if they are expecting to access DIRCONTROL directories with many files, which might not otherwise fit in memory, or read heavily from such directories, which would still work but could perform unacceptably poorly.