IBM Enterprise Systems Architecture


IBM Enterprise Systems Architecture is an instruction set architecture introduced by IBM as Enterprise Systems Architecture/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, 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 binary 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 and Virtual Storage addressing is limited to 31 bits, as is the case with 370-XA. It maintains problem state backward compatibility dating back to 1964 with the 24-bit-address/32-bit-data and subsequent 24/31-bit-address/32-bit-data architecture. However, the I/O subsystem is based on System/370 Extended Architecture, not on the original S/370 I/O instructions.

ESA/370 architecture

On February 15, 1988, IBM announced
Enterprise Systems Architecture/370 for 3090 enhanced 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 models, support, ESA has an access register mode in which each use of general register 1–15 as a base register uses an associated access register to select an address space. In addition to the normal address spaces that machines with the dual-address-space facility support, ESA also allows data spaces, which contain no executable code.
A machine may be divided into Logical Partitions, each with its own virtual system memory so that multiple operating systems may run concurrently on one machine.

ESA/390 architecture

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.
Starting with the System/390 G5, IBM introduced:
  • the basic floating-point extensions facility, which increases the number of floating-point registers from 4 to 16 ;
  • the binary floating-point extensions facility, which supports IEEE 754 binary floating-point numbers, with an additional floating-point control register to support IEEE 754 modes and errors;
  • the floating-point support 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 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 facilities
;All models
;Some models

New instruction formats

Some of the ESA/390 facilities introduce new instruction formats. This includes the RI, RIL and RSI formats used for relative branches. The immediate field for relative branches is always signed and in units of a halfword.

New channel commands

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