IBM Enterprise Systems Architecture

{{more citations needed|date=April 2023}}

{{IBM mainframes}}

IBM Enterprise Systems Architecture is an instruction set architecture introduced by IBM as Enterprise Systems Architecture/370 (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 Enterprise Systems Architecture/390 (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

{{stub-section|date=April 2023}}

{{Infobox CPU architecture

| name = ESA/370

| designer = IBM

| bits = 32-bit

| introduced = {{Start date and age|1988}}

| design = CISC

| type = Register–Register
Register–Memory
Memory–Memory

| encoding = Variable (2, 4 or 6 bytes long)

| branching = Condition code, indexing, counting

| endianness = Big

| extensions =

| open =

| predecessor = System/370-XA

| successor = ESA/390

| gpr = 16× 32-bit

| fpr = 4× 64-bit

}}

class="infobox" style="font-size:88%"

|+ align="center" | IBM S/370-ESA and S/390-ESA registers

style="border-style: none;" |

{| class="wikitable" style="font-size:75%"

|+ General Registers 0–15

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| colspan=32 | Two's complement value

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Access Registers 0–15{{sfn|S370-ESA|loc=[https://bitsavers.org/pdf/ibm/370/princOps/SA22-7200-0_370-ESA_Principles_of_Operation_Aug88.pdf#page=147 Access-list-Entry Token]|p=5-30}}

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| 0

| 0

| 0

| 0

| 0

| 0

| 0

| P

| colspan=8 | ALESN

| colspan=16 | ALEN

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 6

| style="width:1%; text-align:left; border-style: none none none none;" | 7

| style="width:1%; text-align:left; border-style: none none none none;" | 8

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 15

| style="width:1%; text-align:left; border-style: none none none none;" | 16

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

colspan="34" style="border-style: none;"|

{| class="wikitable mw-collapsible autocollapse"

|+ {{nowrap|ESA Access register abbreviations}}

style="width:10%; text-align:left;"| Bits

! style="width:10%; text-align:left;"| Field

! style="width:80%; text-align:left;"| Meaning

0–6

|

| 0000000

7

| P

| Primary
0=use dispatchable-unit access list
1=use primary-space access list

8–15

| ALESN

| access-list-entry sequence number

16–31

| ALEN

| access-list-entry number

|}

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Control Registers 0–15

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| colspan=32 | See Principles of Operation{{sfn|S370-ESA|loc=[https://bitsavers.org/pdf/ibm/370/princOps/SA22-7200-0_370-ESA_Principles_of_Operation_Aug88.pdf#page=84 Figure 4-3 Assignment of Control-Register Fields]|pp=4{{hyp}}7 – 4{{hyp}}9}}{{sfn|S390-ESA|loc=[https://publibfp.dhe.ibm.com/epubs/pdf/dz9ar008.pdf#page=118 Figure 4-3 Assignment of Control-Register Fields]|pp=4{{hyp}}8 – 4{{hyp}}10}} or Control Registers

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Floating-Point Control (FPC) Register

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| colspan=5 | Interrupt Masks
(IM)

| colspan=3 |

| colspan=5 | Status Flags
(SF)

| colspan=3 |

| colspan=8 | Data Exception Code
(DXC)

| colspan=8 | Rounding Mode
(RM)

style="width:.5%; text-align:left; border-style: none none none none;" |

| i

| z

| o

| u

| x

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| i

| z

| o

| u

| x

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| i

| z

| o

| u

| x

| y

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none solid solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid solid;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| style="width:1%; text-align:left; border-style: none none solid none;" | 0

| colspan=2 | RM

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" | 1

| style="width:1%; text-align:left; border-style: none none none none;" | 2

| style="width:1%; text-align:left; border-style: none none none none;" | 3

| style="width:1%; text-align:left; border-style: none none none none;" | 4

| style="width:1%; text-align:left; border-style: none none none none;" | 5

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 7

| style="width:1%; text-align:left; border-style: none none none none;" | 8

| style="width:1%; text-align:left; border-style: none none none none;" | 9

| style="width:1%; text-align:left; border-style: none none none none;" | 10

| style="width:1%; text-align:left; border-style: none none none none;" | 11

| style="width:1%; text-align:left; border-style: none none none none;" | 12

| style="width:1%; text-align:left; border-style: none none none none;" | 13

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 15

| style="width:1%; text-align:left; border-style: none none none none;" | 16

| style="width:1%; text-align:left; border-style: none none none none;" | 17

| style="width:1%; text-align:left; border-style: none none none none;" | 18

| style="width:1%; text-align:left; border-style: none none none none;" | 19

| style="width:1%; text-align:left; border-style: none none none none;" | 20

| style="width:1%; text-align:left; border-style: none none none none;" | 21

| style="width:1%; text-align:left; border-style: none none none none;" | 22

| style="width:1%; text-align:left; border-style: none none none none;" | 23

| style="width:1%; text-align:left; border-style: none none none none;" | 24

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 29

| style="width:1%; text-align:left; border-style: none none none none;" | 30

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Floating-Point Registers (hexadecimal) 0–6/0–15{{efn

|The number and format of floating-point registers depends on the installed features:

;ESA/370
ESA/390 without the new floating-point facilities

:Only the hexadecimal floating-point (HFP) registers FP0, FP2, FP4 and FP6 exist

;ESA/390 with the new floating-point facilities

:FP0_FP15 may be HFP or IEEE floating point

}}

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| S

| colspan=7 | Biased exponent

| colspan=24 | Mantissa

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" | 1

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 7

| style="width:1%; text-align:left; border-style: none none none none;" | 8

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| colspan=32 | Mantissa (continued)

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 32

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 63

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Floating-Point Registers (binary, single precision) 0–15{{efn|ESA/390 with the new floating-point facilities}}

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| S

| colspan=8 | Biased exponent

| colspan=23 | Mantissa

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" | 1

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 8

| style="width:1%; text-align:left; border-style: none none none none;" | 9

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Floating-Point Registers (binary, double precision) 0–15{{efn|ESA/390 with the new floating-point facilities}}

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| S

| colspan=11 | Biased exponent

| colspan=20 | Mantissa

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" | 1

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 11

| style="width:1%; text-align:left; border-style: none none none none;" | 12

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| colspan=32 | Mantissa (continued)

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 32

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 63

| style="width:.5%; text-align:left; border-style: none none none none;" |

|-

| style="border-style: none;" |

class="wikitable" style="font-size:75%"

|+ Enterprise Systems Architecture Extended Control mode PSW

{{sfn|S370-ESA|loc=[https://bitsavers.org/pdf/ibm/370/princOps/SA22-7200-0_370-ESA_Principles_of_Operation_Aug88.pdf#page=82 Program-Status-Word Format]|p=4-5}}

{{sfn|S390-ESA|loc=[https://publibfp.dhe.ibm.com/epubs/pdf/dz9ar008.pdf#page=115 Program-Status-Word Format]|p=4-5}}

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| 0

| R

| style="border-style: solid none solid solid" | 0

| style="border-style: solid none solid | 0

| style="border-style: solid solid solid none" | 0

| T

| I
O

| E
X

| colspan=4 | Key

| 1

| M

| W

| P

| colspan=2 | AS

| colspan=2 | CC

| colspan=4 | Program
Mask

| style="border-style: solid none solid solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid none solid;" | 0

| style="border-style: solid solid solid none;" | 0

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 0

| style="width:1%; text-align:left; border-style: none none none none;" | 1

| style="width:1%; text-align:left; border-style: none none none none;" | 2

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 4

| style="width:1%; text-align:left; border-style: none none none none;" | 5

| style="width:1%; text-align:left; border-style: none none none none;" | 6

| style="width:1%; text-align:left; border-style: none none none none;" | 7

| style="width:1%; text-align:left; border-style: none none none none;" | 8

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 11

| style="width:1%; text-align:left; border-style: none none none none;" | 12

| style="width:1%; text-align:left; border-style: none none none none;" | 13

| style="width:1%; text-align:left; border-style: none none none none;" | 14

| style="width:1%; text-align:left; border-style: none none none none;" | 15

| style="width:1%; text-align:left; border-style: none none none none;" | 16

| style="width:1%; text-align:right; border-style: none none none none;" | 17

| style="width:1%; text-align:left; border-style: none none none none;" | 18

| style="width:1%; text-align:right; border-style: none none none none;" | 19

| style="width:1%; text-align:left; border-style: none none none none;" | 20

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;" | 23

| style="width:1%; text-align:left; border-style: none none none none;" | 24

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;' | 31

| style="width:.5%; text-align:left; border-style: none none none none;" |

colspan=34 style="border-style: none;" |
style="width:.5%; text-align:left; border-style: none none none none;" |

| A

| colspan=31 | Instruction Address

| style="width:.5%; text-align:left; border-style: none none none none;" |

style="width:.5%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" | 32

| style="width:1%; text-align:left; border-style: none none none none;" | 33

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:left; border-style: none none none none;" |

| style="width:1%; text-align:right; border-style: none none none none;' | 63

| style="width:.5%; text-align:left; border-style: none none none none;" |

colspan="34" style="border-style: none;"|

{| class="wikitable mw-collapsible autocollapse"

|+ {{nowrap|ESA EC mode PSW abbreviations}}

style="width:10%; text-align:left;"| Bits

! style="width:10%; text-align:left;"| Field

! style="width:80%; text-align:left;"| Meaning

1

| R

| PER Mask

5

| T

| DAT mode

6

| IO

| I/O Mask; subject to channel mask in CR2

7

| EX

| External Mask; subject to external subclass mask in CR0

8–11

| Key

| PSW key

12

| E=1

| Extended Control mode

13

| M

| Machine-check mask

14

| W

| Wait state

15

| P

| Problem state

16–17

| AS

| Address-Space Control
00=primary-space mode
01=Access-register mode
10=Secondary-space mode
11=Home-space mode

18–19

| CC

| Condition Code

20–23

| PM

|

{| class="wikitable mw-collapsible autocollapse"

|+ style="text-align: left;" | {{nowrap|Program Mask}}

! Bit

! Meaning

20

| Fixed-point overflow

21

| Decimal overflow

22

| Exponent underflow{{efn|Bit 22 is renamed as HFP exponent underflow in ESA/390}}

23

| Significance{{efn|Bit 23 is renamed as HFP significance in ESA/390}}

|-

| 32

| A

| Addressing mode
0=24 bit; 1=31 bit

|-

| 33-63

| IA

| Instruction Address

|}

|}

|}

On February 15, 1988, IBM announced{{cite web

| title = IBM 3090 PROCESSOR UNIT MODELS 280E AND 500E AND IBM 3090 PROCESSOR UNIT MODEL 300E TO 400E UPGRADE

| id = 188-038

| date = February 15, 1988

| url = https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/8/897/ENUS188-038/index.html

| work = Announcement Letters

| publisher = IBM

}}

{{cite web

| title = ENTERPRISE SYSTEMS ARCHITECTURE/370 (TM) AND MVS/SYSTEM PRODUCT VERSION 3

| id = 288-059

| date = February 15, 1988

| url = https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/897/ENUS288-059/index.html

| work = Announcement Letters

| publisher = IBM

}}

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.{{sfn|S370-ESA}} 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.

{{anchor}}ESA/390 architecture

{{Infobox CPU architecture

| name = ESA/390

| designer = IBM

| bits = 32-bit

| introduced = {{Start date and age|1990}}

| design = CISC

| type = Register–Register
Register–Memory
Memory–Memory

| encoding = Variable (2, 4 or 6 bytes long)

| branching = Condition code, indexing, counting

| endianness = Big

| extensions =

| open =

| predecessor = ESA/370

| successor = z/Architecture

| gpr = 16× 32-bit

| fpr = 4× 64-bit (hexadecimal) up to the G4; 16× 64-bit (hexadecimal and IEEE binary) starting with the G5{{cite web |last1=Slegel |first1=Timothy J. |title=IBM S/390 G5 Microprocessor |url=https://old.hotchips.org/wp-content/uploads/hc_archives/hc10/2_Mon/HC10.S5/HC10.5.1.pdf |website=Hot Chips |date=August 17, 1998}}{{cite journal |title=The S/390 G5 floating-point unit |first1=E. M. |last1=Schwarz |first2=C. A. |last2=Krygowski |journal=IBM Journal of Research and Development |volume=43 |issue=5

|pages=707-721 |date=September 1, 1999 |doi=10.1147/rd.435.0707}}

| 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.{{sfn|S390-ESA|pp=1{{hyp}}8}}{{cite book

| publisher = IBM

| title = Enterprise Systems Architecture/390 Common I/O-Device Commands

| id = SA22-7204-01

| version = Second Edition

| date = April 1992

| mode = cs2}}

Starting with the System/390 G5, IBM introduced:{{sfn|S390-ESA|loc=[https://publibfp.dhe.ibm.com/epubs/pdf/dz9ar008.pdf#page=35 Highlights of ESA/390]|pp=1{{hyp}}3 – 1{{hyp}}4}}

  • the basic floating-point extensions facility, which increases the number of floating-point registers from 4 (0, 2, 4, 6) to 16 (0–15);
  • the binary floating-point (BFP) extensions facility, which supports IEEE 754 binary floating-point numbers, with an additional floating-point control (FPC) register to support IEEE 754 modes and errors;
  • the floating-point support (FPS) extensions facility, which adds instructions to load and store floating-point numbers regardless of whether they're in hexadecimal or IEEE 754 format and to convert between those formats;
  • the hexadecimal floating-point (HFP) extensions facility, which adds new hexadecimal floating-point instructions corresponding to some binary floating-point instructions.

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{{sfn|S390-ESA|loc=Appendix D. Comparison between ESA/370 and ESA/390|pp=D{{hyp}}1 – D{{hyp}}7}} facilities

;All models

:*Access-list-controlled protection

;Some models

:*Concurrent sense

:*PER 2

:*Storage-protection override

:*Move-page facility 2

:*Square root

:*String instruction

:*Suppression on protection with virtual-address enhancement

:*Set address space control fast

:*Subspace group

:*Called-space identification

:*Checksum

:*Compare and move extended

:*Immediate and relative instruction

:*Branch and set authority

:*Perform locked operation

:*Additional floating-point

:*Program call fast

:*Resume program

:*Trap

:*Extended TOD clock

:*TOD-clock-control override

:*Store system information

:*Extended translation 1

:*Extended translation 2

:*z/Architecture (certain instructions)

:*Enhanced input/output

=New channel commands=

The following channel commands{{efn|The data returned by Sense ID include the command codes for Read configuration data, Read node identifier and Set interface identifier.}} are new, or have their functionality changed, in ESA/390:

class="wikitable"

|+ ESA/390 I/O-Device Commands

scope="col" rowspan="2" | Command

! scope="col" colspan="8" | Bit Position

scope="col" style="text-align: right;" | 0

! scope="col" style="text-align: right;" | 1

! scope="col" style="text-align: right;" | 2

! scope="col" style="text-align: right;" | 3

! scope="col" style="text-align: right;" | 4

! scope="col" style="text-align: right;" | 5

! scope="col" style="text-align: right;" | 6

! scope="col" style="text-align: right;" | 7

Read configuration data

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | 0

Read node identifier

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | 0

Sense ID

| style="text-align: right;" | 1

| style="text-align: right;" | 1

| style="text-align: right;" | 1

| style="text-align: right;" | 0

| style="text-align: right;" | 0

| style="text-align: right;" | 1

| style="text-align: right;" | 0

| style="text-align: right;" | 0

Set interface identifier

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | D

| style="text-align: right;" | 1

colspan="9" | Note:
D Device dependent. The command code, if any, recognized by an I/O device may be obtained by using a sense-ID command.

Notes

{{notelist}}

References

:;S370-ESA

::{{cite book

| title = IBM Enterprise Systems Architecture/370 Principles of Operation

| id = SA22-7200-0

| date = August 1988

| edition = First

| url = https://bitsavers.org/pdf/ibm/370/princOps/SA22-7200-0_370-ESA_Principles_of_Operation_Aug88.pdf

| ref = {{sfnref|S370-ESA}}

| publisher = IBM

}}

:;S/390-ESA

::{{cite book

| title = IBM Enterprise Systems Architecture/390 Principles of Operation

| id = SA22-7201-08

| date = June 2003

| edition = Ninth

| url = https://publibfp.dhe.ibm.com/epubs/pdf/dz9ar008.pdf

| ref = {{sfnref|S390-ESA}}

| publisher = IBM

}}

{{reflist}}

Enterprise Systems Architecture

Category:Computing platforms

Category:Computer-related introductions in 1988

Category:2000s disestablishments

Category:32-bit computers