IBM Enterprise Systems Architecture explained

IBM Enterprise Systems Architecture is an instruction set architecture introduced by IBM as ESA/370 in 1988. It is based on the IBM System/370-XA architecture.

It extended the dual-address-space mechanism introduced in later IBM System/370 models by adding a new mode in which general-purpose registers 1-15 are each associated with an access register referring to an address space, with instruction operands whose address is computed with a given general-purpose register as a base register will be in the address space referred to by the corresponding address register.

The later ESA/390, introduced in 1990, added a facility to allow device descriptions to be read using channel commands and, in later models, added instructions to perform IEEE 754 floating-point operations and increased the number of floating-point registers from 4 to 16.

Enterprise Systems Architecture is essentially a 32-bit architecture; as with System/360, System/370, and 370-XA, the general-purpose registers are 32 bits long, and the arithmetic instructions support 32-bit arithmetic. Only byte-addressable real memory (Central Storage) and Virtual Storage addressing is limited to 31 bits, as is the case with 370-XA. (IBM reserved the most significant bit to easily support applications expecting 24-bit addressing, as well as to sidestep a problem with extending two instructions to handle 32-bit unsigned addresses.) It maintains problem state backward compatibility dating back to 1964 with the 24-bit-address/32-bit-data (System/360 and System/370) and subsequent 24/31-bit-address/32-bit-data architecture (System/370-XA). However, the I/O subsystem is based on System/370 Extended Architecture (S/370-XA), not on the original S/370 I/O instructions.

ESA/370 architecture

ESA/370
Designer:IBM
Bits:32-bit
Design:CISC
Type:Register–Register
Register–Memory
Memory–Memory
Encoding:Variable (2, 4 or 6 bytes long)
Branching:Condition code, indexing, counting
Endianness:Big
Predecessor:System/370-XA
Successor:ESA/390
Gpr:16
Fpr:4 64-bit
IBM S/370-ESA and S/390-ESA registers
General Registers 0-15

Two's complement value
0<-- 1 --><-- 2 --><-- 3 --><-- 4 --><-- 5 --><-- 6 --><-- 7 --><-- 8 --><-- 9 --><-- 10 --><-- 11 --><-- 12 --><-- 13 --><-- 14 --><-- 15 --><-- 16 --><-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31
Access Registers 0-15

0000000PALESNALEN
0<-- 1 --><-- 2 --><-- 3 --><-- 4 --><-- 5 -->678<-- 9 --><-- 10 --><-- 11 --><-- 12 --><-- 13 --><-- 14 -->15<-- 16 -->16<-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31
BitsFieldMeaning
0-60000000
7PPrimary
0=use dispatchable-unit access list
1=use primary-space access list
8-15ALESNaccess-list-entry sequence number
16-31ALENaccess-list-entry number
Control Registers 0-15

See Principles of Operation or Control Registers
0<-- 1 --><-- 2 --><-- 3 --><-- 4 --><-- 5 --><-- 6 --><-- 7 --><-- 8 --><-- 9 --><-- 10 --><-- 11 --><-- 12 --><-- 13 --><-- 14 --><-- 15 --><-- 16 --><-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31
style="width:.5%; text-align:left; border-style: none none none none;"
Interrupt Masks
(IM)
Status Flags
(SF)
Data Exception Code
(DXC)
Rounding Mode
(RM)
izoux000izoux000izouxy00000000RM
012345<-- 6 -->78910111213<-- 14 -->15161718192021222324<-- 25 --><-- 26 --><-- 27 --><-- 28 -->293031
Floating Point Registers (hexadecimal) 0-6/0-15

SBiased exponentMantissa
01<-- 2 --><-- 3 --><-- 4 --><-- 5 --><-- 6 -->78<-- 9 --><-- 10 --><-- 11 --><-- 12 --><-- 13 --><-- 14 --><-- 15 --><-- 16 --><-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31

Mantissa (continued)
32<-- 33 --><-- 34 --><-- 35 --><-- 36 --><-- 37 --><-- 38 --><-- 39 --><-- 40 --><-- 41 --><-- 42 --><-- 43 --><-- 44 --><-- 45 --><-- 46 --><-- 47 --><-- 48 --><-- 49 --><-- 50 --><-- 51 --><-- 52 --><-- 53 --><-- 54 --><-- 55 --><-- 56 --><-- 57 --><-- 58 --><-- 59 --><-- 60 --><-- 61 --><-- 62 -->63
Floating Point Registers (binary, single precision) 0-15

SBiased exponentMantissa
01<-- 2 --><-- 3 --><-- 4 --><-- 5 --><-- 6 --><-- 7 -->89<-- 10 --><-- 11 --><-- 12 --><-- 13 --><-- 14 --><-- 15 --><-- 16 --><-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31
Floating Point Registers (binary, double precision) 0-15

SBiased exponentMantissa
01<-- 2 --><-- 3 --><-- 4 --><-- 5 --><-- 6 --><-- 7 --><-- 8 --><-- 9 --><-- 10 -->1112<-- 13 --><-- 14 --><-- 15 --><-- 16 --><-- 17 --><-- 18 --><-- 19 --><-- 20 --><-- 21 --><-- 22 --><-- 23 --><-- 24 --><-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31

Mantissa (continued)
32<-- 33 --><-- 34 --><-- 35 --><-- 36 --><-- 37 --><-- 38 --><-- 39 --><-- 40 --><-- 41 --><-- 42 --><-- 43 --><-- 44 --><-- 45 --><-- 46 --><-- 47 --><-- 48 --><-- 49 --><-- 50 --><-- 51 --><-- 52 --><-- 53 --><-- 54 --><-- 55 --><-- 56 --><-- 57 --><-- 58 --><-- 59 --><-- 60 --><-- 61 --><-- 62 -->63
Enterprise Systems Architecture Extended Control mode PSW

0R000TI
O
E
X
Key1MWPASCCProgram
Mask
00000000
012<-- 3 -->45678<-- 9 --><-- 10 -->11121314151617181920<-- 21 --><-- 22 -->2324<-- 25 --><-- 26 --><-- 27 --><-- 28 --><-- 29 --><-- 30 -->31

AInstruction Address
3233<-- 34 --><-- 35 --><-- 36 --><-- 37 --><-- 38 --><-- 39 --><-- 40 --><-- 41 --><-- 42 --><-- 43 --><-- 44 --><-- 45 --><-- 46 --><-- 47 --><-- 48 --><-- 49 --><-- 50 --><-- 51 --><-- 52 --><-- 53 --><-- 54 --><-- 55 --><-- 56 --><-- 57 --><-- 58 --><-- 59 --><-- 60 --><-- 61 --><-- 62 -->63
BitsFieldMeaning
1RPER Mask
5TDAT mode
6IOI/O Mask; subject to channel mask in CR2
7EXExternal Mask; subject to external subclass mask in CR0
8-11KeyPSW key
12E=1Extended Control mode
13MMachine-check mask
14WWait state
15PProblem state
16-17ASAddress-Space Control
00=primary-space mode
01=Access-register mode
10=Secondary-space mode
11=Home-space mode
18-19CCCondition Code
20-23PM
! Bit! Meaning
20Fixed-point overflow
21Decimal overflow
22Exponent underflow
23Significance
32AAddressing mode
0=24 bit; 1=31 bit
33-63IAInstruction Address

On February 15, 1988, IBM announced[1] [2] Enterprise Systems Architecture/370 (ESA/370) for 3090 enhanced ("E") models and for 4381 model groups 91E and 92E.

In addition to the primary-space and secondary-space addressing modes that later System/370 models, and System/370 Extended Architecture (S/370-XA) models, support, ESA has an access register mode in which each use of general register 1-15 as a base register uses an associated access register to select an address space. In addition to the normal address spaces that machines with the dual-address-space facility support, ESA also allows data spaces, which contain no executable code.

A machine may be divided into Logical Partitions (LPARs), each with its own virtual system memory so that multiple operating systems may run concurrently on one machine.

ESA/390 architecture

ESA/390
Designer:IBM
Bits:32-bit
Design:CISC
Type:Register–Register
Register–Memory
Memory–Memory
Encoding:Variable (2, 4 or 6 bytes long)
Branching:Condition code, indexing, counting
Endianness:Big
Predecessor:ESA/370
Successor:z/Architecture
Gpr:16
Fpr:4 64-bit up to the G4; 16 64-bit starting with the G5[3] [4]
Registers:Access 16× 32, Control 16×32, Floating Point Control (FPC) 32-bit, Prefix 32 bit, PSW 64-bit

An important capability to form a Parallel Sysplex was added to the architecture in 1994.

ESA/390 also extends the Sense ID command to provide additional information about a device, and additional device-dependent channel commands, the command codes for which are provided in the Sense ID information, to allow device description information to be fetched from a device.[5]

Starting with the System/390 G5, IBM introduced:

Some PC-based IBM-compatible mainframes which provide ESA/390 processors in smaller machines have been released over time, but are only intended for software development.

New facilities

ESA/390 adds the following facilities

All models
Some models

New channel commands

The following channel commands are new, or have their functionality changed, in ESA/390:

ESA/390 I/O-Device Commands
CommandBit Position
01234567
Read configuration dataDDDDDDD0
Read node identifierDDDDDDD0
Sense ID11100100
Set interface identifierDDDDDDD1
Note:
D Device dependent. The command code, if any, recognized by an I/O device may be obtained by using a sense-ID command.

References

S370-ESA
  • Book: IBM Enterprise Systems Architecture/370 Principles of Operation . SA22-7200-0 . August 1988 . First . . IBM .
    S/390-ESA
  • Book: IBM Enterprise Systems Architecture/390 Principles of Operation . SA22-7201-08 . June 2003 . Ninth . . IBM.

    Notes and References

    1. Web site: IBM 3090 PROCESSOR UNIT MODELS 280E AND 500E AND IBM 3090 PROCESSOR UNIT MODEL 300E TO 400E UPGRADE . 188-038 . February 15, 1988 . Announcement Letters . IBM .
    2. Web site: ENTERPRISE SYSTEMS ARCHITECTURE/370 (TM) AND MVS/SYSTEM PRODUCT VERSION 3 . 288-059 . February 15, 1988 . Announcement Letters . IBM .
    3. Web site: Slegel . Timothy J. . IBM S/390 G5 Microprocessor . . August 17, 1998.
    4. The S/390 G5 floating-point unit . E. M. . Schwarz . C. A. . Krygowski . IBM Journal of Research and Development . 43 . 5. 707-721 . September 1, 1999 . 10.1147/rd.435.0707.
    5. Book: IBM . Enterprise Systems Architecture/390 Common I/O-Device Commands . SA22-7204-01 . Second Edition . April 1992 . cs2.