z/Architecture
Designer | IBM |
---|---|
Bits | 64-bit |
Introduced | 2000 |
Version | ARCHLVL 2 and ARCHLVL 3 (2008) |
Design | CISC |
Type |
Register-Memory Memory-Memory |
Encoding | Variable (2, 4 or 6 bytes long) |
Branching | Condition code, indexing, counting |
Endianness | Big |
Registers | |
General purpose | 16× 64-bit |
Floating point | 16× 64-bit (plus 32× 128-bit vector registers in latest version) |
History of IBM mainframes, 1952–present |
---|
Market name |
Architecture |
z/Architecture, initially and briefly called ESA Modal Extensions (ESAME), is IBM's 64-bit instruction set architecture implemented by its mainframe computers. IBM introduced its first z/Architecture-based system, the z900, in late 2000.[1] Later z/Architecture systems include the IBM z800, z990, z890, System z9, System z10, zEnterprise 196, and zEnterprise 114. z/Architecture retains backward compatibility with previous 32-bit-data/31-bit-addressing architecture ESA/390 and its predecessors all the way back to the 32-bit-data/24-bit-addressing System/360.
Each z/OS address space, called a 64-bit address space, is 16 exabytes in size. A z/OS address space is 8 billion times the size of the former 2-gigabyte address space.
Code (or mixed) spaces
Most operating systems, 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. The z/OS implementation of the Java programming language is an exception. The z/OS's virtual memory implementation supports multiple 2 GB address spaces, permitting more than 2 GB of concurrently resident program code. The 64-bit version of Linux on System z allows code to execute within 64-bit address ranges.
Data-only spaces
For programmers who need to store large amounts of data, the 64-bit address space usually suffices.
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")[2][3][4][5] and
- hiperspaces (High performance space).[6][7]
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.[8]
A dataspace differs from a hiperspace in that dataspaces are byte-addressable, whereas hiperspaces are page-addressable.
IBM mainframe expanded storage
Traditionally IBM Mainframe memory has been byte-addressable. 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.
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 4KB 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 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 continues to support 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."[9]
The MVPG mainframe instruction[10] (MoVe PaGe, opcode X'B254') has been compared to the MVCL (MoVe Character Long) instruction, both of which can move more than 256 bytes within main memory using a single instruction. These instructions are Atomic.
The need to move more than 256 bytes within main memory had historically been addressed with software[11] (MVC loops), MVCL,[12] which was introduced with the 1970 announcement of the System/370, and MVPG, patented[13] and announced by IBM in 1989, each have advantages.[14]
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,[15] 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,"[16][17] can be used to read[NB 1] or write data to or from a hiperspace.[18] Hiperspaces are created using DSPSERV CREATE.
To provide reentrancy, IOSADMF is used together with a "List form" and "Execute form."[19]
z/Architecture Operating systems
The z/VSE Version 4, z/TPF Version 1 and z/VM Version 5 operating systems, and presumably their successors, require z/Architecture.
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.
Platform Solutions Inc. (PSI) previously marketed Itanium-based servers which were compatible with z/Architecture. IBM bought PSI in July, 2008, and the PSI systems are no longer available.[20] FLEX-ES, zPDT and the Hercules emulator also implement z/Architecture. Hitachi mainframes running newer releases of the VOS3 operating system implement ESA/390 plus Hitachi-unique CPU instructions, including a few 64-bit instructions. While Hitachi was likely inspired by z/Architecture, and formally collaborated with IBM on the z900-G2/z800 cpus introduced in 2002, Hitachi's machines are not z/Architecture-compatible.
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.[21][22] 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).[23][24]
Notes
- ↑ AREAD - transfer data from a hiperspace to the program's primary address space.
References
- ↑ Development and Attributes of z/Architecture, IBM Journal of Research and Development, 2002.
- ↑ Hoskins, Jim; Frank, Bob (2002). Exploring IBM Eserver Zseries and S/390 Servers. Maximum Press. ISBN 1885068913.
- ↑ "VM Data Spaces architecture is standard on all System/390 processors. System/390 Data ... The Asynchronous Data Mover Facility (ADMF) uses ..."
- ↑ InformationWeek, Oct. 21, 1991, p. 15, headline "CA Defends VSE Policy"
- ↑ "Computer Associates International is now providing data space technology to VSE/ESA or System/370 users."
- ↑ "Analyzing data in memory". IBM (Rochester). IBM.
- ↑ hemanth.nandas (October 15, 2007). "What is hiperspace? Which was the first OS to support hiperspace?". Newsgroup: ibmmainframes.com. HIGH PERFORMANCE SPACE or "High Performance Dataspace" (author Anuj Dhawan, same date)
- ↑ http://idcp.marist.edu/pdfs/ztidbitz/54%20zTidBits%20(zOS%20ExtendedAddressability).pdf
- ↑ US 5442802 Asynchronous co-processor data mover method and means
- ↑ "HLASM - MVPG = MoVe PaGe".
- ↑ "$MVCL – Move more than 256 bytes of storage".
- ↑ "Move Long".
- ↑ US 5237668 Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media
- ↑ "MVPG faster than MVCL for aligned pages?". IBM-MAIN (Mailing list).
- ↑ IBM's patent EP0549924A1 describes MVPG as "moves a single page."
- ↑ "admf". IBM-MAIN (Mailing list).
- ↑ http://ppdbooks.pok.ibm.com:80/cgi-bin/bookmgr/bookmgr.cmd/BOOKS/DZ9AR003
- ↑ z/OS MVS Programming: Extended Addressability Guide - SA23-1394-00
- ↑ "IOSADMF — Transfer hiperspace data".
- ↑ "IBM Acquires Platform Solutions" (Press release). IBM. 2008-07-02. Retrieved 2008-09-06.
- ↑ Preview: IBM z/VM V6.1 - Foundation for future virtualization growth, IBM United States Software Announcement 209-207, dated July 7, 2009
- ↑ ALS 1 was 9672 G2; ALS 2 was 9672 G5; ALS 3 was the original z/Architecture: "IBM CMOS Processor Table".
- ↑ "IBM System z10 Business Class (z10 BC) Reference Guide" (PDF). 2008.
- ↑ z/Architecture Principles of Operation