I/O SYNCHRONIZATION CONTROL
Original Publication Date: 2002-Apr-02
Included in the Prior Art Database: 2003-Jun-19
The FICON architecture is designed to execute existing S/360, S/370, and S/390 channel programs with full compatibility to the parallel OEMI and ESCON channel interfaces. However, certain modifications to the system architecture, operating system, application programs and channel programs are required in order to obtain the maximum efficiency possible. This maximal efficiency is achieved by pipelining the execution of the channel program. This means that the CCWs and associated data (for output operations) are continuously sent to the control unit without an explicit interlocked exchange between the channel and control unit for each CCW. This pipelining of the CCW execution reduces the link overheads and improves the execution efficiency of the channel program. Not all channel programs can be executed with CCW pipelining. One example of a channel program that cannot be executed in a pipelined fashion is a channel program that modifies itself by reading additional CCWs into the CCW stream. If the channel program was prefetched the channel program would terminate prematurely due to executing a CCW that was not modified and did not have the command chaining flag on, or terminate in error because the channel fetched the CCW from storage and tried to execute it before the CCW was actually read in. Another example of a channel program that can not be automatically prefetched is one where the program changes the channel program while it is executing. If prefetching were always done, the timings would change such that the program would always miss the opportunity to change the channel program before it executes. Some channel programs may always be prefetched. When unauthorized applications make an I/O request, the operating system needs to translate the virtual channel program into a real channel program. By definition, virtual channel programs cannot be self modifying. This is because at the time the channel program is built, the application cannot know the real location of the storage that will contain the translated CCWs. Thus, the channel program cannot possibly be constructed to read data into the location where the real channel program will be constructed. Additionally, the application cannot modify the channel program once it has started execution since the application cannot know where the real channel program resides once it has been passed to the operating system for execution. Therefore, the operating system may always specify that CCW prefteching is allowed for the execution of virtual channel programs.