IBM System/360 architecture: Difference between revisions

Content deleted Content added
Input/Output: link; instructions
Line 683:
* {{anchor|IBM_Blk_Mux}}A '''block multiplexer channel''' is capable of concurrently running multiple channel programs, but only one at a time can be active. The control unit can request suspension at the end of a channel command and can later request resumption. This is intended for devices in which there is a mechanical delay after completion of data transfer, e.g., for seeks on moving-head DASD. The block multiplexer channel was a late addition to the System/360 architecture; early machines had only byte multiplexer channels and selector channels. The block multiplexer channel was an optional feature only on the models 85 and 195. The block multiplexor channel was also available on the later [[IBM System/370|System/370]] computers.
 
Conceptually peripheral equipment is attached to a S/360 through ''control units'', which in turn are attached through channels. However, the architecture does not require that control units be physically distinct, and in practice they are sometimes integrated with the devices that they control. Similarly, the architecture does not require the channels to be physically distinct from the processor, and the smaller S/360 models (through 360/50) have integrated channels that [[Cycle stealing|steal cycles]] from the processor.
 
Peripheral devices are addressed with 16-bit<ref group=NB>Because of the limits on the channel number, S/360 and early S/370 software only used 12 bits to store device addresses.</ref> addresses.,<ref name=A22-6821-7/>{{rp|page=89}} referred to as ''cua'' or ''cuu''; this article will use the term ''cuu''. The high 8 bits identify a channel, numbered from 0 to 6,<ref group=NB name=ChanNum/> while the low 8 bits identify a device on that channel. A device may have multiple ''cuu'' addresses.
Line 934:
* The '''Status''' field contains one byte of [[#Channel status|Channel status]] bits, indicating conditions detected by the channel<sup class=reference>[[#PoOps|PoOps]]</sup>,{{rp|pages=116–118}} and one byte of [[#Unit status|Unit status]] bits, indicating conditions detected by the I/O unit<sup class=reference>[[#PoOps|PoOps]]</sup>.{{rp|pages=113–116}} There is no distinction between conditions detected by the control unit and conditions detected by the device.
* The '''Residual Count''' is a half word that gives the number of bytes in the area described by the CCW that have not been transferred to or from the channel<sup class=reference>[[#PoOps|PoOps]]</sup>.{{rp|page=120}} The difference between the count in the CCW and the residual count gives the number of bytes transferred.
 
===I/O instructions===
 
The S/360 has four{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=105 Control of Input/Output Devices]|pp=93-98}} I/O instructions: Start I/O (SIO), Test I/O (TIO), Halt I/O (HIO) and Test
Channel (TCH). All four are are privileged and thus will cause a privilidged operation program interruption if used in problem state. The B<sub>1</sub> (base) and D<sub>1</sub> (displacement) fields are used to calculate the cuu (channel and device number); bits 8-15 of the instructions are unused and should be zero for compatibility with the S/370.
 
====Start I/O (SIO)====
SIO{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=106 Halt I/O]|pp=94-95}} attempts to start the channel program pointed to by the [[#Channel Address Word|CAW]], using the storage protection key in the CAW.
 
====Test I/O (TIO)====
TIO{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=107 Halt I/O]|pp=95-96}} tests the status of a channel and device. It may also store a [[# Channel Status Word|CSW]], in which case it completes with condition code 1.
 
====Halt I/O (HIO)====
HIO{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=108 Halt I/O]|pp=96-98}} attempt to terminate an active channel program. It may also store a [[# Channel Status Word|CSW]], in which case it completes with condition code 1.
 
====Test Channel (TCH)====
TCH{{sfn|S360|loc=[http://bitsavers.org/pdf/ibm/360/princOps/A22-6821-7_360PrincOpsDec67.pdf#page=110 Test Channel]|p=98}} tests the status of a channel. It does not affect the status of an active channel program and does not store a [[# Channel Status Word|CSW]],
 
==Operator controls==