Browse Prior Art Database

Iterative Looping in I/O Channel Programs

IP.com Disclosure Number: IPCOM000112732D
Original Publication Date: 1994-Jun-01
Included in the Prior Art Database: 2005-Mar-27
Document File: 4 page(s) / 140K

Publishing Venue

IBM

Related People

Sachs, MW: AUTHOR

Abstract

Using conventional channel program architectures, such as that of IBM's ESA/390*, there are substantial overheads in transferring long data streams at high bandwidth. Since a single Channel Command Word (CCW) can transfer only 65536 (64K) bytes of data, an 8-byte CCW must be executed for each 64K bytes of data. For minimum processor execution overhead, there must be a separate CCW for each 64K bytes. This consumes significant memory for long data streams. For example, a 2-Gbyte data stream, such as might be used in some multimedia applications, requires 16,384 CCWs, i.e., 128K bytes of CCWs.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 39% of the total text.

Iterative Looping in I/O Channel Programs

      Using conventional channel program architectures, such as that
of IBM's ESA/390*, there are substantial overheads in transferring
long data streams at high bandwidth.  Since a single Channel Command
Word (CCW) can transfer only 65536 (64K) bytes of data, an 8-byte CCW
must be executed for each 64K bytes of data.  For minimum processor
execution overhead, there must be a separate CCW for each 64K bytes.
This consumes significant memory for long data streams.  For example,
a 2-Gbyte data stream, such as might be used in some multimedia
applications, requires 16,384 CCWs, i.e., 128K bytes of CCWs.  Using
the looping techniques provided the ESA/390 architecture, the channel
program can be reduced to a small number of repeated CCWs, but
additional processor overhead is then spent on updating addresses in
CCWs or moving each portion of the long data stream into an I/O
buffer, and on the interrupts which enable software to track the
progress of the transfer and update the buffer or CCWs.

      Disclosed herein is an iterative looping method which enables
the effective data address for a CCW to be updated by the channel
without interrupting the processor to update buffers or CCW
addresses.  This enables the same CCW to be applied repetitively to
successive portions of the I/O data without the use of an
intermediate buffer.  Since the channel program is reduced to a small
number of CCWs which do not have to be updated by software, the
channel is also enabled to keep the entire channel program in its
local store, thus reducing the number of processor main memory
accesses required to transfer the data.  The invention is described
using the specific constructs of the ESA/390 I/O Architecture.
However the invention is applicable to any I/O system which uses a
programmed data channel.

      The invention consists of an index register in the subchannel
and two new CCWs which manipulate the index register.  The width of
the index register is sufficient to hold a processor memory address.
By including the index register in the subchannel, each concurrent
I/O operation chain is enabled to have its own separately managed
index register.  A channel implementation is permitted to maintain
the index register contents in a register local to the channel along
with other state information about ongoing I/O operation chains.

      Two new CCWs are defined by this invention: one to initialize
the indexing and one to modify and test the contents of the index
register (increment and test or decrement and test) and to branch
based on the results of the text.  These new CCWs are described
below.

      Two different algorithms may be used to manage the indexing;  a
typical implementation will provide only one of these.

1.  Increment and Test Index:  The index register is cleared to zero
    and a maximum value of the index register contents is placed in
    an upper limit register in...