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 |
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 | colspan=3 | | colspan=5 | Status Flags | colspan=3 | | colspan=8 | Data Exception Code | colspan=8 | Rounding Mode |
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 :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 | E | colspan=4 | Key | 1 | M | W | P | colspan=2 | AS | colspan=2 | CC | colspan=4 | Program | 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 |
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
}}
| 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
:*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:Computer-related introductions in 1988