In the last article, I described the IBM System / 360 line “as a whole”, without going particularly into the implementation details. This time we will continue the conversation about this computer and consider its internal architecture.
Of course, no revolution System / 360 could not have been accomplished if the new computer family did not have a carefully thought-out and designed architecture (then borrowed by Soviet developers). The two main guides were called “IBM System / 360 Principles of Operation” and “IBM System Equipment / 360 Instruments Manual”.

')
What was offered to developers in System / 360? Sixteen 32-bit general purpose registers named from R0 to R15. Four 64-bit registers for floating-point numbers, they were called FP0, FP2, FP4 and FP6. One 64-bit status register (Program Status Word or PSW), among other things, containing a 24-bit instruction address.
In addition to the address of the current executable instruction, PSW saved bits, enable / disable interrupts, program status, dongle for comparison with device keys and other important parameters. The privileged LPSW command allowed the entire value of this register to be loaded and was used mainly to return from the interrupt handler, restoring the state it had before the handler was called. Also, a number of commands allowed to manipulate individual flags of this register without causing transitions to other parts of the code.
Interruptions were divided into 5 "classes" depending on the priority. Two double-word memory cells were associated with each class: the old PSW and the new PSW. When the interrupt occurred, the current PSW value along with the interrupt code was saved in place of the old PSW, and the register itself loaded the value from the new PSW, causing a transition to the handler. The interrupt classes were as follows (in order of increasing priority).
I / O interrupts: signaled a variety of I / O events, including such time-consuming events as, for example, the completion of film rewinding.
Software interrupts. Signaled about the occurrence of one of 15 exceptions in the course of the program. Some of these interrupts could be suppressed by resetting the corresponding flags in the PSW.
Interrupt call supervisor. Occurred as a result of following instructions addressed to the supervisor.
External interrupts. Occurs as a result of external events, such as a timer triggering or pressing an interrupt button.
The interruption of the machine check occurred in cases of hardware failures, for example, when a parity error occurred while checking the contents of the registers.
As is already clear, 24 bits were used for memory addressing, which allowed addressing 16 megabytes of memory, but starting from model 67, the possibility of 32-bit addressing appeared, which expanded the amount of addressable (theoretically) memory to 4 gigabytes. The big-endian order was used, that is, from older to younger. Various instructions allowed to work with bytes, half-words (2 bytes), full words (4 bytes), double and quadruple words (8 and 16 bytes respectively).
The following data types were routinely supported:
Half or whole word integers
Two kinds of decimal numbers packed in binary format
Fractional numbers with floating point (implementation nuances depended on the version)
Characters stored in one byte each
Addressing was most often used "truncated": the instructions did not contain the full address, but only an offset, relative to the base address contained in one of the general-purpose registers.
The instructions could be 2, 4, or 6 bytes long, with the operation code stored in the zero byte, and the rest was the description of the operands. The instructions were aligned to the limits of the half-word, so the least significant bit in the address of the current instruction was always zero.
Interestingly in System / 360 I / O was implemented. I / O operations were performed by conceptually separate processors, which were called "Channels". The channels had their own instruction sets, and they worked with memory independently of the program that was executed by the central processor. In low-cost models, the “microcode” engine of the central processor was used to support the channels, while the more expensive models used channels in their own cabinets.

Very unusual in IBM came to the management of their computers. They identified a specific set of functions, while not specifying with the help of which physical means they should be implemented. This made it possible to make the control universal, independent of a specific hardware, for giving commands and outputting results any equipment could go: buttons, dials, keyboards, text and graphics on monitors, etc. Any reference to a “button” or “switch” could mean any of the possible inputs, starting with the light pen and ending with selecting an option on the screen using keyboard input.
In various System / 360 models, various additional features were used to expand the base ones.
Write protection If the system supported this option, then each block of external storages of 2 KB in size was assigned a key, which was checked when writing to this storage channel. That is, each channel could only write in "their" blocks. Usually the channel with the zero address was used by the operating system itself, and for it the key verification was not performed. This approach allowed to protect system files from being erased by user programs. In very rare models there was also an opportunity to expose and protection against reading.
Multi-system support. Expansion of instruction set, which allowed several processors to work simultaneously.
Direct control. This option provided support for 6 external signal lines that could be used for the user's needs.
Interval timer. With this option, the processor carried out a periodic decrement of the word in memory at address 0x50, when this value reached zero, an interrupt occurred. The younger models reduced the number with a frequency that matched the frequency of the electrical network (50 or 60 Hz), the older models were equipped with timers with a much higher resolution.
In general, we can talk a lot about System / 360, so if there is interest, I will continue the topic in the next article.