Difference between revisions of "IBM System/360"
m (Add some links) |
|||
Line 6: | Line 6: | ||
== History == | == History == | ||
− | Before the IBM 360, in 1959 - 1964, IBM provided four major product lines of computers. They had small business computers like the 1401, large business computers like the 7070, small scientific computers like the 1620, and large scientific machines like the 709x series. All were incompatible, and so 4 complete sets of operating | + | Before the IBM 360, in 1959 - 1964, IBM provided four major product lines of computers. They had small business computers like the 1401, large business computers like the 7070, small scientific computers like the 1620, and large scientific machines like the [[IBM 7094|709x]] series. All were incompatible, and so 4 complete sets of [[operating system]]s and development tools were being supported simultaneously. This was becoming a problem as manufacturers were providing more and more complex software. So, they came up with the idea of ONE computer product line that would satisfy both business and scientific computing users. The name System 360 came from supporting the full circle of computing needs. |
IBM literally bet the company on the success of the 360. If it had been a flop, they very well could have gone out of business. But, it was a VERY well thought-out bet, and of course, history shows that it was one of the most successful products of all time. They DID have some serious trouble getting machines into user's hands, however. | IBM literally bet the company on the success of the 360. If it had been a flop, they very well could have gone out of business. But, it was a VERY well thought-out bet, and of course, history shows that it was one of the most successful products of all time. They DID have some serious trouble getting machines into user's hands, however. | ||
− | |||
− | The second issue was software, most specifically operating system software. | + | First, they had decided to make everything possible themselves. Previous IBM computers used commercial components ([[resistor]]s, [[diode]]s, [[transistor]]s) but for the 360, IBM was going to make their own transistors and diodes, and fabricate the circuit modules themselves. In 1965 then made one million SLT modules, the next year it was about six million, and in 1967 through 1969 they made between 11 and 12 million SLT modules per year! Ramping production up to this level was a major project. |
− | For machines of the 360/50 class, there was OS/360 MFT, which had memory partitions that were set by the operators. | + | |
− | OS/360 MVT, which could dynamically alter the memory partitions based on the mix of jobs to be run. | + | The second issue was software, most specifically operating system software. There were two lower-level systems for the smallest machines, Disk OS and Tape OS. |
+ | |||
+ | For machines of the 360/50 class, there was OS/360 MFT, which had memory partitions that were set by the operators. And, then, there was the top of the line system, OS/360 MVT, which could dynamically alter the [[main memory]] partitions based on the mix of jobs to be run. | ||
+ | |||
+ | IBM did not adequately think out all the implications of this, and memory fragmentation could build up, turning memory into a checkerboard of unused space. There were tricks to avoid this, like requiring all jobs to occupy regions with integral relationships (like 50 K, 100 K, 150 K, 200 K, etc.) But, the MVT system was so complicated that IBM was VERY late in delivering it. It led to some books such as Fred Brooks' "The Mythical Man-Month" which described some of the issues in scaling up very large software projects. | ||
+ | |||
== Specs == | == Specs == | ||
*The 360 is a 32bit machine | *The 360 is a 32bit machine | ||
− | *16 general purpose 32-bit | + | *16 general purpose 32-bit [[register]]s, 0 to 15 (usually Equated to the labels "R0" through "R15") |
− | *4 floating point 64-bit registers numbered 0, 2, 4 and 6, and | + | *4 [[floating point]] 64-bit registers numbered 0, 2, 4 and 6, and |
− | *a Program Status Word (PSW). The program status word is composed of the privileged bit, the program counter, and the memory protection key. | + | *a [[Processor Status Word|Program Status Word]] (PSW). The program status word is composed of the privileged bit, the [[program counter]], and the memory protection key. |
The 360 is a BIG endian machine, with values stored as high to low. | The 360 is a BIG endian machine, with values stored as high to low. | ||
− | The 360 instruction set had 3 major classes of | + | The 360 instruction set had 3 major classes of [[instruction]]s, register to register, specified in a 16-bit field; register to indexed storage, specified in 32 bits; |
and storage to storage, specified in 48 bits. There was a 2-bit instruction length field in the op-code to specify the length of the instruction. The op-code always occupied 8 bits. | and storage to storage, specified in 48 bits. There was a 2-bit instruction length field in the op-code to specify the length of the instruction. The op-code always occupied 8 bits. | ||
Line 31: | Line 35: | ||
The 360 series spanned a wide range of performance, with 6 major models, plus a few special machines. | The 360 series spanned a wide range of performance, with 6 major models, plus a few special machines. | ||
+ | |||
The 360/20 was a "half-size" 360, it only implemented 16-bit size operations, and had only 8 general purpose registers, so I don't include that as a real member of the 360 series. | The 360/20 was a "half-size" 360, it only implemented 16-bit size operations, and had only 8 general purpose registers, so I don't include that as a real member of the 360 series. | ||
− | Most 360's used microcode, but the 360/44 did not, and 360/91 and /95 and /195 were superscalar machines and were not | + | Most 360's used [[microcode]], but the 360/44 did not, and 360/91 and /95 and /195 were superscalar machines and were not micro-coded. |
Other than the model /20, all 360's used I/O processors called channels. On lower machines (/30 through the /50) the channels were emulated in microcode. On higher machines (/65 and up) the channels were separate boxes connected to the memory interface. | Other than the model /20, all 360's used I/O processors called channels. On lower machines (/30 through the /50) the channels were emulated in microcode. On higher machines (/65 and up) the channels were separate boxes connected to the memory interface. | ||
− | The 360/30 internally had 8-bit wide memory and 8-bit data paths, but emulated the full 32-bit instruction set. It was rated at 30K to 40K instructions/second, | + | The 360/30 internally had 8-bit wide memory and 8-bit data paths, but emulated the full 32-bit instruction set. It was rated at 30K to 40K instructions/second, depending on instruction mix. The processor was so slow that when I/O was operating, the CPU was totally dedicated to handling the channel operation. The 360/30 had the local storage (register set) in a separately addressed section of main storage. |
− | depending on instruction mix. The processor was so slow that when I/O was operating, the CPU was totally dedicated to handling the channel operation. The 360/30 had the local storage (register set) in a separately addressed section of main storage. | ||
The 360/40 internally had 16-bit memory and data paths, and was rated at about 80K instructions/second. | The 360/40 internally had 16-bit memory and data paths, and was rated at about 80K instructions/second. | ||
Line 46: | Line 50: | ||
The 360/40 and 360/50 also used a separate core storage for the registers. | The 360/40 and 360/50 also used a separate core storage for the registers. | ||
− | The 360/65 had 64-bit memory, and a 56-bit ALU, so it could process double-precision floating point in one cycle. It allowed pairs of identical memory units to be interleaved, increasing performance even more. Memory cycle time was 640 ns, pretty fast for its time. It was possible to connect two /65s to one memory system to create a | + | The 360/65 had 64-bit memory, and a 56-bit [[Arithmetic logic unit|ALU]], so it could process double-precision floating point in one cycle. It allowed pairs of identical memory units to be [[interleaved]], increasing performance even more. Memory cycle time was 640 ns, pretty fast for its time. It was possible to connect two /65s to one memory system to create a [[multi-processor]] system, although it was not twice as fast as a single CPU, due to memory interference. It did save some cost as you did not have to duplicate memory and peripherals. A special version of the OS/MVT system called MP65 was developed for the dual processor system, but a lot of installations used it on a single processor because it had enhanced error recovery. The /65 was rated over 600 K IPS. |
− | A variant of the 360/65 was the 360/67, which added base and limit registers to relocate programs. A feature of the 360 instruction set was that all object program files were relocatable, due to the use of the base register. The OS could load a program at any place in memory, and then set the base register to the beginning of that memory partition. But, a limitation of that was that once a program started running, it began to use physical addresses for data, and the return address from a subroutine call. | + | A variant of the 360/65 was the 360/67, which added [[Base and bounds|base and limit]] registers to relocate programs. A feature of the 360 instruction set was that all object program files were relocatable, due to the use of the base register. The OS could load a program at any place in memory, and then set the base register to the beginning of that memory partition. But, a limitation of that was that once a program started running, it began to use physical addresses for data, and the return address from a [[subroutine]] call. |
− | Therefore, once started, the program could not be relocated to a different memory area. By adding a special (invisible to the program) base register that was added to all memory references, the program could be fooled into seeing itself as always running at location zero. Thus the program could be moved around in memory as needed, after being swapped out and back in. This was used by several | + | |
+ | Therefore, once started, the program could not be relocated to a different memory area. By adding a special (invisible to the program) base register that was added to all memory references, the program could be fooled into seeing itself as always running at location zero. Thus the program could be moved around in memory as needed, after being [[swapping|swapped]] out and back in. This was used by several [[time-sharing]] systems. | ||
The 360/75 was the top end of the classic 360 machines. | The 360/75 was the top end of the classic 360 machines. | ||
Line 55: | Line 60: | ||
All of these models were built with SLT (Solid Logic Technology) a hybrid technology where thin film resistors were deposited on 1/2" square ceramic substrates, then thick film silver conductors were deposited, and finally discrete transistor and diode die were flip-chip bonded to the traces. This was pretty low-density technology, generally there were 2 2-input gates per SLT module, consisting of 4 diodes, 4-6 resistors and 2 transistors. IBM did not use flip-flops, but they made D-latches for registers. These occupied 2 1/2 SLT modules for one D-latch. | All of these models were built with SLT (Solid Logic Technology) a hybrid technology where thin film resistors were deposited on 1/2" square ceramic substrates, then thick film silver conductors were deposited, and finally discrete transistor and diode die were flip-chip bonded to the traces. This was pretty low-density technology, generally there were 2 2-input gates per SLT module, consisting of 4 diodes, 4-6 resistors and 2 transistors. IBM did not use flip-flops, but they made D-latches for registers. These occupied 2 1/2 SLT modules for one D-latch. | ||
− | The 360/85 was a prototype for the 370/165, which was a very similar machine. It was the first IBM machine to use a cache memory ("storage buffer") in static RAM, as well as the first of their commercial machines to use monolithic integrated circuits (called MST for Monolithic Solid Technology). | + | The 360/85 was a prototype for the 370/165, which was a very similar machine. It was the first IBM machine to use a [[cache]] memory ("storage buffer") in static RAM, as well as the first of their commercial machines to use monolithic integrated circuits (called MST for Monolithic Solid Technology). |
The models 360/91 and 360/95 and the model 195 were very high end systems which could execute up to 8 instructions in parallel, using all the supercomputing techniques available. | The models 360/91 and 360/95 and the model 195 were very high end systems which could execute up to 8 instructions in parallel, using all the supercomputing techniques available. | ||
+ | |||
== Emulation == | == Emulation == | ||
I don't think there is any direct S/360 emulators out there... However I'm pretty sure that [[Hercules]] will run System 360 software as the 370 is upwards compatible with the 360. | I don't think there is any direct S/360 emulators out there... However I'm pretty sure that [[Hercules]] will run System 360 software as the 370 is upwards compatible with the 360. |
Revision as of 16:14, 11 June 2018
The System/360 is a groundbreaking mainframe computer introduced by IBM on April 7, 1964. It ran a variety of software, such as MVS.
The System/360 was supplanted by the System/370.
History
Before the IBM 360, in 1959 - 1964, IBM provided four major product lines of computers. They had small business computers like the 1401, large business computers like the 7070, small scientific computers like the 1620, and large scientific machines like the 709x series. All were incompatible, and so 4 complete sets of operating systems and development tools were being supported simultaneously. This was becoming a problem as manufacturers were providing more and more complex software. So, they came up with the idea of ONE computer product line that would satisfy both business and scientific computing users. The name System 360 came from supporting the full circle of computing needs.
IBM literally bet the company on the success of the 360. If it had been a flop, they very well could have gone out of business. But, it was a VERY well thought-out bet, and of course, history shows that it was one of the most successful products of all time. They DID have some serious trouble getting machines into user's hands, however.
First, they had decided to make everything possible themselves. Previous IBM computers used commercial components (resistors, diodes, transistors) but for the 360, IBM was going to make their own transistors and diodes, and fabricate the circuit modules themselves. In 1965 then made one million SLT modules, the next year it was about six million, and in 1967 through 1969 they made between 11 and 12 million SLT modules per year! Ramping production up to this level was a major project.
The second issue was software, most specifically operating system software. There were two lower-level systems for the smallest machines, Disk OS and Tape OS.
For machines of the 360/50 class, there was OS/360 MFT, which had memory partitions that were set by the operators. And, then, there was the top of the line system, OS/360 MVT, which could dynamically alter the main memory partitions based on the mix of jobs to be run.
IBM did not adequately think out all the implications of this, and memory fragmentation could build up, turning memory into a checkerboard of unused space. There were tricks to avoid this, like requiring all jobs to occupy regions with integral relationships (like 50 K, 100 K, 150 K, 200 K, etc.) But, the MVT system was so complicated that IBM was VERY late in delivering it. It led to some books such as Fred Brooks' "The Mythical Man-Month" which described some of the issues in scaling up very large software projects.
Specs
- The 360 is a 32bit machine
- 16 general purpose 32-bit registers, 0 to 15 (usually Equated to the labels "R0" through "R15")
- 4 floating point 64-bit registers numbered 0, 2, 4 and 6, and
- a Program Status Word (PSW). The program status word is composed of the privileged bit, the program counter, and the memory protection key.
The 360 is a BIG endian machine, with values stored as high to low.
The 360 instruction set had 3 major classes of instructions, register to register, specified in a 16-bit field; register to indexed storage, specified in 32 bits; and storage to storage, specified in 48 bits. There was a 2-bit instruction length field in the op-code to specify the length of the instruction. The op-code always occupied 8 bits.
The register to indexed storage instruction had a 4-bit field to specify the base register, a 4-bit field for the index register and a 12-bit field for the offset. The contents of the base register, the index register and the offset were added to produce the physical address of the operand. If the base register was zero, then it was not added to the effective address.
The storage to storage instructions specified two storage locations, and were used for instructions that moved byte strings, compared byte strings and translated byte strings to different character encodings.
The 360 series spanned a wide range of performance, with 6 major models, plus a few special machines.
The 360/20 was a "half-size" 360, it only implemented 16-bit size operations, and had only 8 general purpose registers, so I don't include that as a real member of the 360 series.
Most 360's used microcode, but the 360/44 did not, and 360/91 and /95 and /195 were superscalar machines and were not micro-coded.
Other than the model /20, all 360's used I/O processors called channels. On lower machines (/30 through the /50) the channels were emulated in microcode. On higher machines (/65 and up) the channels were separate boxes connected to the memory interface.
The 360/30 internally had 8-bit wide memory and 8-bit data paths, but emulated the full 32-bit instruction set. It was rated at 30K to 40K instructions/second, depending on instruction mix. The processor was so slow that when I/O was operating, the CPU was totally dedicated to handling the channel operation. The 360/30 had the local storage (register set) in a separately addressed section of main storage.
The 360/40 internally had 16-bit memory and data paths, and was rated at about 80K instructions/second.
The 360/50 was a full 32-bit implementation, and rated at about 160K IPS.
The 360/40 and 360/50 also used a separate core storage for the registers.
The 360/65 had 64-bit memory, and a 56-bit ALU, so it could process double-precision floating point in one cycle. It allowed pairs of identical memory units to be interleaved, increasing performance even more. Memory cycle time was 640 ns, pretty fast for its time. It was possible to connect two /65s to one memory system to create a multi-processor system, although it was not twice as fast as a single CPU, due to memory interference. It did save some cost as you did not have to duplicate memory and peripherals. A special version of the OS/MVT system called MP65 was developed for the dual processor system, but a lot of installations used it on a single processor because it had enhanced error recovery. The /65 was rated over 600 K IPS.
A variant of the 360/65 was the 360/67, which added base and limit registers to relocate programs. A feature of the 360 instruction set was that all object program files were relocatable, due to the use of the base register. The OS could load a program at any place in memory, and then set the base register to the beginning of that memory partition. But, a limitation of that was that once a program started running, it began to use physical addresses for data, and the return address from a subroutine call.
Therefore, once started, the program could not be relocated to a different memory area. By adding a special (invisible to the program) base register that was added to all memory references, the program could be fooled into seeing itself as always running at location zero. Thus the program could be moved around in memory as needed, after being swapped out and back in. This was used by several time-sharing systems.
The 360/75 was the top end of the classic 360 machines.
All of these models were built with SLT (Solid Logic Technology) a hybrid technology where thin film resistors were deposited on 1/2" square ceramic substrates, then thick film silver conductors were deposited, and finally discrete transistor and diode die were flip-chip bonded to the traces. This was pretty low-density technology, generally there were 2 2-input gates per SLT module, consisting of 4 diodes, 4-6 resistors and 2 transistors. IBM did not use flip-flops, but they made D-latches for registers. These occupied 2 1/2 SLT modules for one D-latch.
The 360/85 was a prototype for the 370/165, which was a very similar machine. It was the first IBM machine to use a cache memory ("storage buffer") in static RAM, as well as the first of their commercial machines to use monolithic integrated circuits (called MST for Monolithic Solid Technology).
The models 360/91 and 360/95 and the model 195 were very high end systems which could execute up to 8 instructions in parallel, using all the supercomputing techniques available.
Emulation
I don't think there is any direct S/360 emulators out there... However I'm pretty sure that Hercules will run System 360 software as the 370 is upwards compatible with the 360.