IBM System/370

From Wikipedia, the free encyclopedia - View original article

System/370
DesignerIBM
Bits32-bit
Introduced1970
DesignCISC
TypeRegister-Register
Register-Memory
Memory-Memory
EncodingVariable (2, 4 or 6 bytes long)
BranchingCondition code, indexing, counting
EndiannessBig
Registers
General purpose16
Floating point4 64-bit
 
Jump to: navigation, search
"IBM 370" redirects here. For the printer, see IBM 370 printer.
System/370
DesignerIBM
Bits32-bit
Introduced1970
DesignCISC
TypeRegister-Register
Register-Memory
Memory-Memory
EncodingVariable (2, 4 or 6 bytes long)
BranchingCondition code, indexing, counting
EndiannessBig
Registers
General purpose16
Floating point4 64-bit

The IBM System/370 (S/370) was a model range of IBM mainframes announced on June 30, 1970 as the successors to the System/360 family. The series maintained backward compatibility with the S/360, allowing an easy migration path for customers; this, plus improved performance, were the dominant themes of the product announcement. Improvements over the S/360 first released in the S/370 model range included:

Evolution[edit]

The original System/370 line underwent several architectural improvements during its roughly 20-year lifetime. One very significant change was the introduction of virtual memory, which was first made generally available in 1972 via IBM's "System/370 Advanced Function" announcement. IBM had initially (and controversially) chosen to exclude virtual storage from the S/370 line.[3][4] The August 2, 1972 announcement included:

System/370-145 system console.
System/370-145 system console.
System/370-145
System/370-145
Computer center with IBM System/370-145 and IBM 2401 tape drives

Virtual memory had in fact been delivered on S/370 hardware before this announcement:

Shortly after the August 2, 1972 announcement, DAT box (address relocation hardware) upgrades for the S/370-155 and S/370-165 were quietly announced, but were available only for purchase by customers who already owned a Model 155 or 165.[citation needed] After installation, these models were known as the S/370-155-II and S/370-165-II. IBM wanted customers to upgrade their 155 and 165 systems to the widely-sold S/370-158 and -168.[6] These upgrades were surprisingly expensive ($200,000 and $400,000, respectively) and had long ship date lead times after being ordered by a customer; consequently, they were never popular with customers, the majority of whom leased their systems via a third-party leasing company.[citation needed] This led to the original S/370-155 and S/370-165 models being described as "boat anchors". The upgrade, required to run OS/VS1 or OS/VS2, was not cost effective for most customers by the time IBM could actually deliver and install it, so many customers were stuck with these machines running MVT until their lease ended. It was not unusual for this to be another four, five or even six years for the more unfortunate ones, and turned out to be a significant factor[citation needed] in the slow adoption of OS/VS2 MVS, not only by customers in general, but for many internal IBM sites as well.

1980s[edit]

Later architectural changes primarily involved expansions in memory (central storage) – both physical memory and virtual address space – to enable larger workloads and meet client demands for more storage. This was the inevitable trend as Moore's Law eroded the unit cost of memory. As with all IBM mainframe development, preserving backward compatibility was paramount.[citation needed]

Expanding the address space[edit]

As described above, the S/370 product line underwent a major architectural change: expansion of its address space from 24 to 31 bits.

The evolution of S/370 addressing was always complicated by the basic S/360 instruction set design, and its large installed code base, which relied on a 24-bit logical address. (In particular, a heavily-used machine instruction, "Load Address" (LA), explicitly cleared the top eight bits of the address being placed in a register. This created enormous migration problems for existing software.)

The strategy chosen was to implement expanded addressing in three stages:

  1. First at the physical level (to enable more memory hardware per system)
  2. Then at the operating system level (to let system software access multiple address spaces and utilize larger address spaces)
  3. Finally at the application level (to let new applications access larger address spaces)

Since the core S/360 instruction set remained geared to a 24-bit universe, this third step would require a real break from the status quo; existing assembly language applications would of course not benefit, and new compilers would be needed before non-assembler applications could be migrated. Most shops thus continued to run their 24-bit applications in a higher-performance 31-bit world.

This evolutionary implementation (repeated in z/Architecture) had the characteristic of solving the most urgent problems first: relief for real memory addressing being needed sooner that virtual memory addressing.[citation needed]

31 versus 32 bits[edit]

IBM's choice of 31-bit (versus 32-bit) addressing for 370-XA involved various factors. The System/360 Model 67 had included a full 32-bit addressing mode, but this feature was not carried forward to the System/370 series, which began with only 24-bit addressing. When IBM later expanded the S/370 address space in S/370-XA, several reasons are cited for the choice of 31 bits:

  1. The desire to retain the high-order bit as a "control or escape bit."[7] In particular, the standard subroutine calling convention marked the final parameter word by setting its high bit.
  2. Interaction between 32-bit addresses and two instructions (BXH and BXLE) that treated their arguments as signed numbers (and which was said to be the reason TSS used 31-bit addressing on the Model 67). (Varian 1997:p26, note 85[5])
  3. Input from key initial Model 67 sites, which had debated the alternatives during the initial system design period, and had recommended 31 bits (instead of the 32-bit design that was ultimately chosen at the time). (Varian 1997:pp8–9, note 21,[5] includes other comments about the "Inner Six" Model 67 design disclosees)

Series and models[edit]

The following table summarizes the major S/370 series and models. The second column lists the principal architecture associated with each series. Many models implemented more than one architecture; thus, 308x processors initially shipped as S/370 architecture, but later offered XA; and many processors, such as the 4381, had microcode that allowed customer selection between S/370 or XA (later, ESA) operation.

Note also the confusing term "System/370-compatible", which appeared in IBM source documents to describe certain products. Outside IBM, this term would more often describe systems from Amdahl Corporation, Hitachi Ltd., and others, that could run the same S/370 software. This choice of terminology by IBM may have been a deliberate attempt to ignore the existence of those plug compatible manufacturers (PCMs), because they competed aggressively against IBM hardware dominance.

First year
of series
ArchitectureMarket
level
SeriesModels
1970System/370 (no DAT)high-endSystem/370-xxx-155, -165, -195
1970System/370 (DAT)mid-range-145[1] and -135
1972System/370high-end-158 and -168
entry-115 and -125
mid-range-138 and -148
1977System/370-compatible[8]high-end303x3031, 3032, 3033
1979entry/mid43xx4331, 4341, 4361
1980high-end308x3081, 3083, 3084
1981System/370-XA
1983mid-range43814381
1986high-end3090-120 to -600
1986System/370-compatible[9]entry937x9370, ...
1988ESA/370high-endES/3090ES/3090
1988mid-rangeES/4381-90, -91, -92

Notable machines in the 370 range include the IBM 370/195, the IBM 370/168, the IBM 3033, the IBM 3090 mainframe/supercomputer with its optional vector facility (VF) extension, and the relatively inexpensive IBM 9370 tailored for small-to-medium size businesses.

Clones[edit]

In the 360 era, a number of manufacturers had already standardized upon the IBM/360 instruction set and, to a degree, 360 architecture. Notable computer makers included Univac with the UNIVAC 9000 series, RCA with the RCA Spectra 70 series, English Electric with the English Electric System 4, and the Soviet ES EVM. These computers were not perfectly compatible, nor (except for the Russian efforts[citation needed]) were they intended to be.

That changed in the 1970s with the introduction of the IBM/370 and Gene Amdahl's launch of his own company. About the same time, Japanese giants began eying the lucrative mainframe market both at home and abroad. One Japanese consortium focused upon IBM and two others from the BUNCH (Burroughs/Univac/NCR/Control Data/Honeywell) group of IBM's competitors.[citation needed] The latter efforts were abandoned and eventually all Japanese efforts focused on the IBM mainframe lines.

Some of the era's clones included:

S/370 replacement[edit]

The System/370 line was replaced by the IBM System/390 in the 1990s, and the architecture was similarly renamed from ESA/370 to ESA/390. This was essentially just a rename for marketing reasons, rather than major architectural change.[citation needed]

In 2000, the System/390 was replaced by the zSeries (now called IBM System z). The zSeries mainframes introduced the 64-bit z/Architecture, the most significant design improvement since the 31-bit transition.[citation needed] All have retained essential backward compatibility with the original S/360 architecture and instruction set.

GCC and Linux on the S/370[edit]

The GNU Compiler Collection (GCC) had a backend for S/370, but it became obsolete over time and was finally replaced by the S/390 backend. Although the S/370 and S/390 instruction sets are essentially the same (and have been consistent since the introduction of the S/360), GCC operability on older systems has been abandoned.[10] GCC currently works on machines that have the full instruction set of System/390 Generation 5 (G5), the hardware platform for the initial release of Linux/390. However, a separately-maintained version of GCC 3.2.3 that works for the S/370 is available, known as GCCMVS.[11]

I/O evolutions[edit]

Architecture details[edit]

IBM S/370 registers
31. . .23. . .15. . .07. . .00(bit position)*
General-purpose registers
0R0
1R1
2R2
3R3
4R4
5R5
6R6
7R7
8R8
9R9
10R10
11R11
12R12
13R13
14R14
15R15
Floating-point registers
FP0 (bits 32–63)FP0
FP0 (bits 0–31)
FP2 (bits 32–63)FP2
FP2 (bits 0–31)
FP4 (bits 32–63)FP4
FP4 (bits 0–31)
FP6 (bits 32–63)FP6
FP6 (bits 0–31)
Control registers
CR0 
CR1 
CR2 
CR3 
CR4 
CR5 
CR6 
CR7 
CR8 
CR9 
CR10 
CR11 
CR12 
CR13 
CR14 
CR15 
Program status word
PSW (bits 0-31)Program Status Word (upper)
(bits 32-39)IA (bits 40-63)  Instruction address

* Note that IBM documentation numbers the bits in reverse order to that shown
  above, i.e., the most significant (leftmost) bit is designated as bit number 0.

S/370 also refers to a computer system architecture specification,[13] and is a direct and mostly backward compatible evolution of the System/360 architecture[14][15] from which it retains most aspects. This specification does not make any assumptions on the implementation itself, but rather describes the interfaces and the expected behavior of an implementation. The architecture describes mandatory interfaces that must be available on all implementations and optional interfaces which may or may not be implemented.

Some of the aspects of this architecture are:

Some of the optional features are:

Because of the extensible nature of the interface specification, new interface could be devised without breaking the initial interface contract. Such examples are:

Great care was taken in order to ensure that further modifications to the architecture would remain compatible, at least as far as non-privileged programs were concerned. This philosophy predates the definition of the S/370 architecture and started with the S/360 architecture. If certain rules are adhered to, a program written for this architecture will run with the intended results on the successors of this architecture.

One of the key aspect that allows this compatibility is to define that unused fields are to be set to a predetermined value (usually 0) - and that using another value leads to an exception condition being recognized.[16] When the interface is modified, this unused field can then be used to alter the interface contract. A well formed program can then still produce the expected result even when executing on an implementation of the new interface.

Such an example is that the S/370 architecture specifies that the 64 bit PSW register bit number 32 has to be set to 0 and that doing otherwise leads to an exception. Subsequently when the S/370 XA architecture was defined, it was stated that this bit would indicate whether the program was a program expecting a 24 bit address architecture or 31 bit address architecture. Thus, most programs running on the 24 bit architecture can still run on 31 bit systems and the new 64 bit system.

However, not all of the interfaces can remain compatible. Emphasis was put on having non control programs (called problem state programs) remain compatible.[17] Thus, operating systems have to be ported to the new architecture because the control interfaces can (and were) redefined in an incompatible way. For example, the I/O interface was redesigned in S/370 XA making S/370 program issuing I/O operations unusable as-is.

See also[edit]

Notes[edit]

  1. ^ The 360/85 had extended precison floating point.

References[edit]

  1. ^ a b "System/370 Model 145". IBM Data Processing Division press release. IBM. September 23, 1970. Retrieved 2009-10-21. 
  2. ^ a b IBM, IBM Maintenance Library 3145 Processing Unit Theory - Maintenance, pp. CPU 117–129, SY24-3581-2. 
  3. ^ Pugh, E.W.; L.R. Johnson, John H. Palmer (1991). IBM's 360 and early 370 systems. Cambridge: MIT Press. ISBN 0-262-16123-0. 
  4. ^ "Information technology industry timeline, 1964-1974". 
  5. ^ a b c Varian, Melinda Varian (1997). "VM and the VM community, past present, and future,". SHARE 89 Sessions 9059-9061. 
  6. ^ A. Padegs (September 1981). "System/360 and Beyond" (PDF). IBM Journal of Research & Development (IBM) 25 (5): 377–390. doi:10.1147/rd.255.0377.  – tables include model characteristics (Table 1) and announcement/shipment dates (Table 2). The S/370-155-II and -165-II are listed under the former but not the latter, because the upgraded systems were not formally announced as separate models. The "System/370 Advanced Function" announcement, including the -158 and -168, was the main public event.
  7. ^ A. Padegs (May 1983). "System/370 Extended Architecture: design considerations". IBM Journal of Research & Development (IBM) 27 (3): 198–205. doi:10.1147/rd.273.0198.  [available on-line at www.research.ibm.com – a subsection titled "31-bit addressing" begins on page 201.
  8. ^ "IBM timeline of S/370 series".  with surprising term 'System/370-compatible' for the 3xxx and 4xxx series
  9. ^ "IBM 9370 announcement letter".  to explain why the 9370 is categorized as a System/370 compatible system
  10. ^ "Removed architectures and systems removed from GCC 3.4". 
  11. ^ "GCCMVS (GCC 3.2.3 for S/370)". 
  12. ^ IBM (June 1970), IBM System/370 Principles of Operation, First Edition, GA22-7000-0. 
  13. ^ GA22-7000: System/370 principles of operation
  14. ^ GA22-6821: System/360 principles of operation
  15. ^ GA22-7000-4: System/370 principles of operation, p. 9, chapter 1 – describes philosophy of evolution from S/360 to S/370, available from "System/370 Principles of Operation, IBM, GA22-7000-4" (PDF). September 1975. 
  16. ^ GA22-7000-4: System/370 principles of operation, p. 10, Note 4 of Compatibility section; describes use of unassigned fields
  17. ^ SA22-7201-08: ESA/390 principles of operation, chapter 1.3.2.2 Problem state program compatibility with S/370 available from "SA22-7201-08 ESA/390 Principles of Operation". 

External links[edit]