Input/Output Configuration Program

The Input/Output Configuration Program is a program on IBM mainframes.

History
In the original S/360 and S/370 architectures, each processor had its own set of I/O channels and addressed I/O devices with a 12-bit cuu address, containing a 4-bit channel number and an 8-bit unit (device) number to be sent on the channel bus in order to select the device; the operating system had to be configured to reflect the processor and cuu address for each device. The operating system had logic to queue pending I/O on each channel and to handle selection of alternate channels. Initiating an I/O to a channel on a different processor required causing a shoulder tap interrupt on the other processor so that it could initiate the I/O.

Starting with the IBM 3081 and IBM 4381 in S/370-Extended Architecture mode, IBM changed the I/O architecture to allow the Channel Subsystem to handle the channel scheduling that the operating system handled in S/370 mode. The new I/O architecture used a 16-bit subchannel number, a 16-bit device number and an 8-bit Channel Path Identifier (Channel Path Id or CHPID); the Channel Subsystem was responsible for mapping the subchannel number to the channel and device numbers, for queuing I/O requests and for selecting from the available paths.

Starting with z990, IBM introduced the concept of a Logical Channel Subsystem (LCSS); each physical channel (of 1024) has a unique Physical Channel Path Identifier (PCHPID), each LCSS has a CHPID to PCHPID mapping and each LPAR is assigned to one LCSS.

Starting with System z9 running z/OS 1.7, IBM offered the multiple-subchannel set facility, which allowed up to four independent sets of 64 Ki subchannels.

The installation was responsible for defining the Input/Output Configuration Data Sets (IOCDS's), and the operator could select a specific IOCDS as part of a power on reset (POR). Input/Output Configuration Program (IOCP)  is a program for IBM mainframes that compiles a description of the Channel Subsystem and LPAR configuration, optionally loading it into an Input/Output Configuration Data Set (IOCDS); it recognizes the syntax of MVS Configuration Program (MVSCP) input, and there is no need to maintain separate input files.

The direct use of IOCP and MVSCP has been mostly supplanted by Hardware Configuration Definition (HCD).