(57)【特許請求の範囲】
【請求項１】
周辺装置からデータを取得してローカルメモリに保持するデータ取得部と、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成部と、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信部と、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持された前記データを前記上位装置に転送するデータ転送部と、
を備えたチャネル装置。
【請求項２】
前記周辺装置が、ネットワークを介して通信先の端末に接続される装置であるとき、
前記雛形生成部は、前記通信先の端末毎に、受信されるデータに関するデータ関連情報である端末毎データ関連情報を生成して前記雛形に含め、
前記データ転送部は、前記端末毎データ関連情報に基づいて前記通信先の端末に応じて前記主記憶装置上での格納位置が指定された前記チャネルプログラムにしたがって、前記データを転送することを特徴とする請求項１に記載のチャネル装置。
【請求項３】
請求項１または請求項２に記載のチャネル装置との間で転送される情報を格納する主記憶装置を有する装置であって、
前記チャネル装置から前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて前記主記憶装置上でのデータの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成部と、
前記チャネルプログラムの生成を前記チャネル装置に通知するチャネルプログラム通知部と、
を備えた情報処理装置。
【請求項４】
前記チャネルプログラム生成部は、前記データの格納位置として、前記データを利用するアプリケーションにより使用される前記主記憶装置上の領域において前記データを格納可能な位置を、前記雛形に含まれる前記データ関連情報に基づいて指定した前記チャネルプログラムを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
請求項１または請求項２に記載のチャネル装置と、
請求項３または請求項４に記載の情報処理装置と、
を備えたコンピュータシステム。
【請求項６】
周辺装置からデータを取得してローカルメモリに保持し、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記上位装置に転送する、データ転送制御方法。
【請求項７】
請求項６に記載のデータ転送制御方法において送信される前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、
前記チャネルプログラムの生成を前記雛形の送信元の装置に通知する、データ転送制御方法。
【請求項８】
チャネル装置は、
周辺装置からデータを取得してローカルメモリに保持し、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、
前記上位装置は、
前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、前記主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、
前記チャネルプログラムの生成を前記チャネル装置に通知し、
前記チャネル装置は、
前記上位装置から通知されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記格納位置に格納するよう前記上位装置に転送する、データ転送制御方法。
【請求項９】
周辺装置からデータを取得してローカルメモリに保持するデータ取得ステップと、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成ステップと、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信ステップと、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持したデータを前記上位装置に転送するデータ転送ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【請求項１０】
請求項９に記載のコンピュータ・プログラムの実行により送信される前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成ステップと、
前記チャネルプログラムの生成を前記雛形の送信元の装置に通知するチャネルプログラム通知ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置および周辺装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータシステムにおけるＣＰＵ（Central Processing Unit）処理時間やメモリアクセス時間がナノ秒（nsec）単位であるのに対して、Ｉ／Ｏ（Input/Output）処理時間はミリ秒（msec）単位である。このため、Ｉ／Ｏ処理性能は、コンピュータシステムの性能を決定する大きな要因となっている。年々、コンピュータシステムが取り扱うデータ量は増加しており、高いＩ／Ｏ処理性能が求められている。
【０００３】
大規模なコンピュータシステム（メインフレーム等）では、ＣＰＵが直接Ｉ／Ｏ処理を制御するのではなく、チャネル装置が、ＣＰＵから送信されるチャネルプログラムに従ってＩ／Ｏ処理（Ｉ／Ｏデバイスおよび主記憶装置間のデータ転送処理）を担うものがある（例えば、特許文献１参照）。したがって、このようなコンピュータシステムのＩ／Ｏ処理性能を向上させるためには、チャネルプログラムによるＩ／Ｏ処理性能を向上させる必要がある。なお、このようなコンピュータシステムにおいて、チャネル装置に対してチャネルプログラムを発行する装置を、以降、チャネル装置の上位装置とも記載する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０６−１１０８１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されたようなコンピュータシステムにおいて、チャネル装置が、上位装置によるチャネルプログラム発行と同期せずにＩ／Ｏデバイスからデータを受信するものがある。例えば、チャネル装置が通信処理装置である場合、通信処理装置は、上位装置によるチャネルプログラム発行と同期せずに、Ｉ／Ｏデバイスとしてのネットワークアダプタ等を介して通信先の端末からのデータを受信する。したがって、上位装置は、通信処理装置内のデータを主記憶装置に格納するため、定期的に投機的なチャネルプログラムを発行して通信処理装置にデータ転送を要求している。
【０００６】
これに対して、通信処理装置は、端末から受信したデータを内部に保持しておく。そして、通信処理装置は、チャネルプログラムへの応答として、保持しておいたデータを上位装置へ転送する。このとき、通信処理装置は、内部に保持しているデータが無い場合、チャネルプログラムには応答しない。このため、そのチャネルプログラムはタイムアウトし、チャネルプログラムの発行ロスとなる。
【０００７】
このような問題は、チャネル装置によるＩ／Ｏデバイスからのデータ受信が、上位装置によるチャネルプログラム発行と同期していないために生じる。
【０００８】
また、特許文献１に記載されたようなコンピュータシステムで発行されるチャネルプログラムにおいて、主記憶装置上でのデータの格納位置として、一時的格納エリア内の格納位置が指定される場合がある。また、そのような一時的な格納位置に格納するよう指定されるデータサイズは、実際に格納されるデータサイズを反映していないことも多い。例えば、チャネル装置が通信処理装置である場合、通信処理装置は、上位装置によって発行されるチャネルプログラムにおいて指定される主記憶装置上の一時的格納エリア内の格納位置に、端末から受信したデータを格納する。このため、上位装置は、主記憶装置上に受信したデータを、実際に使用される他の格納位置に格納し直す処理（すなわち、主記憶装置上でのデータコピー処理）を行う必要がある。このようなデータコピー処理は、対象となるデータサイズが大きければ大きいほど上位装置へ負荷を掛け、データ転送性能を悪化させる要因となる。
【０００９】
このような問題は、上位装置が、チャネル装置の内部に保持されているデータの詳細を、事前に把握できないために生じていた。
【００１０】
このように、上位装置および周辺装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムでは、チャネルプログラムの発行ロスや主記憶装置上でのデータコピーによりデータ転送性能が低下するという問題があった。
【００１１】
本発明は、上述の課題を解決するためになされたもので、上位装置および周辺装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムにおいて、データ転送処理性能をより向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のチャネル装置は、周辺装置からデータを取得してローカルメモリに保持するデータ取得部と、前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成部と、所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信部と、前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持された前記データを前記上位装置に転送するデータ転送部と、を備える。
【００１３】
また、本発明の情報処理装置は、前記チャネル装置との間で転送される情報を格納する主記憶装置を有する装置であって、前記チャネル装置から前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて前記主記憶装置上でのデータの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成部と、前記チャネルプログラムの生成を前記チャネル装置に通知するチャネルプログラム通知部と、を備える。
【００１４】
また、本発明のコンピュータシステムは、前記チャネル装置と、前記情報処理装置と、を備える。
【００１５】
また、本発明のデータ転送制御方法は、周辺装置からデータを取得してローカルメモリに保持し、前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記上位装置に転送する。
【００１６】
また、本発明の他のデータ転送制御方法は、前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、前記チャネルプログラムの生成を前記雛形の送信元の装置に通知する。
【００１７】
また、本発明の他のデータ転送制御方法は、チャネル装置は、周辺装置からデータを取得してローカルメモリに保持し、前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、前記上位装置は、前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、前記主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、前記チャネルプログラムの生成を前記チャネル装置に通知し、前記チャネル装置は、前記上位装置から通知されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記格納位置に格納するよう前記上位装置に転送する。
【００１８】
また、本発明のコンピュータ・プログラムは、周辺装置からデータを取得してローカルメモリに保持するデータ取得ステップと、前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成ステップと、所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信ステップと、前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持したデータを前記上位装置に転送するデータ転送ステップと、をコンピュータ装置に実行させる。
【００１９】
また、本発明の他のコンピュータ・プログラムは、前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成ステップと、前記チャネルプログラムの生成を前記雛形の送信元の装置に通知するチャネルプログラム通知ステップと、をコンピュータ装置に実行させる。
【発明の効果】
【００２０】
本発明は、上位装置および周辺装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムにおいて、データ転送性能をより向上させる技術を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態としてのコンピュータシステムを構成する各装置のハードウェア構成図である。
【図２】本発明の第１の実施の形態としてのコンピュータシステムを構成する各装置の機能ブロック図である。
【図３】本発明の第１の実施の形態としてのチャネル装置の雛形生成動作を説明するフローチャートである。
【図４】本発明の第１の実施の形態としての上位装置のチャネルプログラム生成動作を説明するフローチャートである。
【図５】本発明の第１の実施の形態としてのチャネル装置のデータ転送動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としてのコンピュータシステムを構成する各装置のハードウェア構成図である。
【図７】本発明の第２の実施の形態としてのコンピュータシステムを構成する各装置上で動作するソフトウェア構成図である。
【図８】本発明の第２の実施の形態としてのコンピュータシステムを構成する各装置の機能ブロック図である。
【図９】本発明の第２の実施の形態におけるチャネルプログラムおよび雛形のデータ構造の一例を示す図である。
【図１０】本発明の第２の実施の形態としてのコンピュータシステムの動作の概略を説明するための模式図である。
【図１１】本発明の第２の実施の形態としての通信処理装置の雛形生成動作を説明するフローチャートである。
【図１２】本発明の第２の実施の形態において生成されるチャネルコマンドエントリの雛形およびチャネルプログラムの一例を示す図である。
【図１３】本発明の第２の実施の形態としての上位装置のチャネルプログラム生成動作を説明するフローチャートである。
【図１４】本発明の第２の実施の形態としての通信処理装置のデータ転送動作を説明するフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２３】
（第１の実施の形態）
本発明の第１の実施の形態としてのコンピュータシステム１を構成する各装置のハードウェア構成を図１に示す。
【００２４】
図１において、コンピュータシステム１は、情報処理装置１０と、チャネル装置２０とを備える。情報処理装置１０は、チャネル装置２０の上位装置であり、以下、情報処理装置１０を上位装置１０とも記載する。また、チャネル装置２０は、周辺装置３０に接続されている。
【００２５】
上位装置１０は、ＣＰＵ１００１と、主記憶装置１００２と、メモリコントローラ１００３とを含んで構成される。
【００２６】
ＣＰＵ１００１は、ＲＯＭ（Read Only Memory）やハードディスク等の記憶装置（図示せず）に格納されたオペレーティングシステムやアプリケーションプログラムを主記憶装置１００２に読み込んで実行することにより、周辺装置３０に対するＩ／Ｏ処理をチャネル装置２０に要求する。
【００２７】
主記憶装置１００２は、ＣＰＵ１００１による処理を実行する際の作業領域として用いられる。また、主記憶装置１００２は、チャネル装置２０を介して周辺装置３０との間で転送されるデータや、チャネル装置２０に対して発行されるチャネルプログラムを格納する。
【００２８】
メモリコントローラ１００３は、主記憶装置１００２に対するデータの読み書きを制御する。
【００２９】
チャネル装置２０は、Ｉ／Ｏプロセッサ２００１と、ローカルメモリ２００２と、Ｉ／Ｏコントローラ（ＩＯＣ）２００３と、スイッチ（ＳＷ）２００４と、周辺装置接続インタフェース２００５とを含んで構成される。
【００３０】
Ｉ／Ｏプロセッサ２００１は、ローカルメモリ２００２からファームウェア（ＦＷ）を読み込んで実行することにより、ローカルメモリ２００２へのアクセスや、ＩＯＣ２００３および周辺装置３０に対する制御を行う。
【００３１】
ローカルメモリ２００２は、チャネル装置２０の動作を制御するファームウェア、各種制御情報、主記憶装置１００２から読み出されるデータ、および、周辺装置３０から受信されるデータ等を格納する。
【００３２】
ＩＯＣ２００３は、上位装置１０のメモリコントローラ１００３とのインタフェースである。ＩＯＣ２００３は、Ｉ／Ｏプロセッサ２００１の制御の基に、周辺装置３０およびメモリコントローラ１００３間のトランザクション送受信を行う。
【００３３】
ＳＷ２００４は、ＩＯＣ２００３とＩ／Ｏプロセッサ２００１と周辺装置３０とを接続し、それぞれからのトランザクションを目的の宛先にスイッチする。
【００３４】
周辺装置接続インタフェース２００５は、周辺装置３０に接続するためのインタフェースである。
【００３５】
次に、コンピュータシステム１を構成する各装置の機能ブロック構成を図２に示す。
【００３６】
図２において、上位装置１０は、チャネルプログラムを生成して主記憶装置１００２に格納するチャネルプログラム生成部１１と、チャネルプログラム通知部１２とを備える。ここで、チャネルプログラム生成部１１およびチャネルプログラム通知部１２は、ＲＯＭやハードディスク等の記憶装置（図示せず）に記憶されたコンピュータ・プログラムを実行するＣＰＵ１００１およびメモリコントローラ１００３によって構成される。なお、上位装置１０およびその各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【００３７】
チャネルプログラム生成部１１は、チャネル装置２０から後述のチャネルプログラムの雛形を受信すると、その雛形に含まれるデータ関連情報に基づいてチャネルプログラムを生成する。具体的には、チャネルプログラム生成部１１は、雛形に含まれているデータ関連情報を反映して主記憶装置１００２上でのデータの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成する。チャネルプログラム生成部１１は、生成したチャネルプログラムを、主記憶装置１００２に格納しておく。
【００３８】
チャネルプログラム通知部１２は、チャネルプログラムの生成をチャネル装置２０に通知する。
【００３９】
また、図２において、チャネル装置２０は、データを取得してローカルメモリ２００２に保持するデータ取得部２１と、雛形生成部２２と、雛形送信部２３と、データ転送部２４とを備える。ここで、データ取得部２１は、ローカルメモリ２００２に記憶されたファームウェアを実行するＩ／Ｏプロセッサ２００１および周辺装置接続インタフェース２００５によって構成される。また、雛形生成部２２は、ローカルメモリ２００２に記憶されたファームウェアを実行するＩ／Ｏプロセッサ２００１によって構成される。また、雛形送信部２３およびデータ転送部２４は、ローカルメモリ２００２に記憶されたファームウェアを実行するＩ／Ｏプロセッサ２００１およびＩＯＣ２００３によって構成される。なお、チャネル装置２０およびその各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【００４０】
データ取得部２１は、周辺装置３０からデータを取得する。データ取得部２１による周辺装置３０からのデータ取得は、上位装置１０によるチャネルプログラムの発行とは同期しない。そのため、データ取得部２１は、取得したデータをローカルメモリ２００２に格納しておく。
【００４１】
雛形生成部２２は、データを上位装置１０の主記憶装置１００２に転送するためのチャネルプログラムの雛形として、データ取得部２１によって取得されたデータに関するデータ関連情報を含む雛形を生成する。ここで、上位装置１０によって実際に生成されるチャネルプログラムを表す情報は、例えば、データ転送要求コマンドと、転送対象データの主記憶装置１００２上での格納位置を指定する情報とを含むものである。この場合、雛形生成部２２は、このようなチャネルプログラムを表す情報のうち、主記憶装置１００２上での格納位置を表す情報の代わりに、周辺装置３０から受信されるデータに関連するデータ関連情報を含むものを、雛形として生成してもよい。また、データ関連情報とは、例えば、周辺装置３０から受信されたデータのサイズであってもよい。また、データ関連情報とは、例えば、データの送信元である周辺装置３０に関する情報であってもよい。雛形生成部２２は、生成した雛形を、ローカルメモリ２００２に格納しておく。
【００４２】
また、雛形生成部２２は、後述の雛形送信部２３により雛形通知条件が満たされたと判断されるまで、データ取得部２１によってデータが取得される度に、そのデータのデータ関連情報を雛形に追加して含めていくようにしてもよい。例えば、データ関連情報としてデータサイズを採用している場合、雛形生成部２２は、雛形を生成してからデータ取得部２１によって取得されたデータの合計サイズを、雛形に含めるようにしてもよい。
【００４３】
雛形送信部２３は、所定の雛形通知条件が満たされると、雛形生成部２２によって生成された雛形を、上位装置１０に送信する。具体的には、雛形送信部２３は、上位装置１０の主記憶装置１００２上に雛形を格納する。ここで、雛形通知条件とは、例えば、雛形が作成されてから一定時間経過したことであってもよい。また、雛形通知条件とは、受信データの合計サイズが閾値を超えたことであってもよい。その他、雛形通知条件としては、各種条件またはそれらの組み合わせを採用可能である。なお、雛形送信部２３は、雛形の送信が完了すると、雛形通知条件を初期化するとともに、雛形を初期化するよう雛形生成部２２に通知する。雛形通知条件の初期化とは、例えば、雛形通知条件が「雛形の生成からの一定時間の経過」であれば、雛形の生成からの経過時間をカウントするタイマーをゼロにすることであってもよい。あるいは、雛形通知条件の初期化とは、例えば、雛形通知条件が「受信データの合計サイズが閾値を超えること」であれば、受信データの合計サイズをカウントするための変数をゼロにすることであってもよい。また、雛形の初期化とは、雛形そのものを削除することであってもよいし、雛形に含まれるデータ関連情報の部分をクリアすることであってもよい。
【００４４】
データ転送部２４は、上位装置１０から通知されるチャネルプログラムにしたがって、周辺装置３０から受信されたデータを、上位装置１０の主記憶装置１００２上で指定された格納位置に転送する。このチャネルプログラムは、前述の上位装置１０のチャネルプログラム生成部１１によって雛形の受信に応じて生成されたものであり、データ関連情報に基づいて決定された主記憶装置１００２上でのデータの格納位置を含んでいる。
【００４５】
以上のように構成されたコンピュータシステム１の動作について説明する。
【００４６】
まず、チャネル装置２０が雛形を生成する動作について、図３を参照して説明する。
【００４７】
図３では、まず、雛形生成部２２は、雛形を初期化し、雛形送信部２３は、雛形通知条件を初期化する（ステップＳ１）。
【００４８】
次に、雛形生成部２２は、データ取得部２１によって周辺装置３０からデータが受信されたか否か判断する（ステップＳ２）。データが受信されていなければ、雛形生成部２２は、再度ステップＳ２を実行する。
【００４９】
そして、周辺装置３０からのデータが受信されると（ステップＳ２でＹｅｓ）、雛形生成部２２は、受信されたデータに関するデータ関連情報を含む雛形を生成する（ステップＳ３）。
【００５０】
このとき、もし、既に雛形が生成されていれば、雛形生成部２２は、既に生成されている雛形に、新たに受信されたデータのデータ関連情報を追加して含めるようにする。例えば、データ関連情報としてデータサイズを採用している場合、雛形生成部２２は、雛形に既に含まれているデータサイズを、新たに受信されたデータのサイズを加算したものに更新すればよい。
【００５１】
次に、雛形送信部２３は、雛形通知条件が成立したか否かを判断する（ステップＳ４）。例えば、前述のように、雛形送信部２３は、雛形生成から所定期間が経過したか否かを判断してもよいし、受信データの合計サイズが閾値を超えたか否かを判断してもよい。
【００５２】
ここで、雛形通知条件が成立していない場合、チャネル装置２０は、ステップＳ２からの動作を繰り返す。
【００５３】
一方、雛形通知条件が成立した場合、雛形送信部２３は、雛形を上位装置１０に送信する（ステップＳ５）。すなわち、雛形送信部２３は、雛形を上位装置１０の主記憶装置１００２上に格納する。そして、チャネル装置２０は、ステップＳ１からの動作を繰り返す。
【００５４】
以上で、チャネル装置２０の雛形生成動作の説明を終了する。
【００５５】
次に、上位装置１０が、雛形に基づいてチャネルプログラムを生成する動作について、図４を参照して説明する。
【００５６】
図４では、まず、チャネルプログラム生成部１１は、チャネル装置２０から雛形が受信されているか否かを判断する（ステップＳ１１）。雛形が受信されていなければ、チャネルプログラム生成部１１は、再度ステップＳ１１を実行する。
【００５７】
そして、雛形が受信されると（ステップＳ１１でＹｅｓ）、チャネルプログラム生成部１１は、主記憶装置１００２上に格納されている雛形に含まれるデータ関連情報の部分を、主記憶装置１００２上の格納位置を表す情報で上書きする（ステップＳ１２）。このとき、チャネルプログラム生成部１１は、データ関連情報の内容に基づいて格納位置を決定する。例えば、チャネルプログラム生成部１１は、データ関連情報が示すデータサイズやデータ送信元の周辺装置３０に関する情報に基づいて、該当するデータを利用するアプリケーションにより主記憶装置１００２上で利用される領域内で、該当するサイズのデータを格納可能な位置を決定してもよい。
【００５８】
次に、チャネルプログラム生成部１１は、データ格納位置を上書きした雛形を用いてチャネルプログラムを生成し、主記憶装置１００２に格納する（ステップＳ１３）。
【００５９】
次に、チャネルプログラム通知部１２は、チャネルプログラムの生成をチャネル装置２０に通知する（ステップＳ１４）。例えば、チャネルプログラム通知部１２は、プロセッサ間通信によりチャネルプログラムの生成をチャネル装置２０に通知すればよい。
【００６０】
以上で、上位装置１０のチャネルプログラム生成動作の説明を終了する。
【００６１】
次に、チャネル装置２０が、通知されたチャネルプログラムにしたがって、周辺装置３０からの受信データを上位装置１０に転送する動作について、図５を参照して説明する。
【００６２】
図５では、まず、データ転送部２４は、上位装置１０からチャネルプログラムが通知されたか否かを判断する（ステップＳ２１）。通知されていなければ、データ転送部２４は、ステップＳ２１の動作を繰り返す。
【００６３】
そして、チャネルプログラムが通知されると（ステップＳ２１でＹｅｓ）、データ転送部２４は、主記憶装置１００２に格納されているチャネルプログラムをローカルメモリ２００２に取得する（ステップＳ２２）。
【００６４】
次に、データ転送部２４は、取得したチャネルプログラムを解析する（ステップＳ２３）。
【００６５】
次に、データ転送部２４は、解析したチャネルプログラムにしたがって、ローカルメモリ２００２に格納されている周辺装置３０からの受信データを、チャネルプログラム内で指定された主記憶装置１００２上の格納位置へ格納するよう転送する（ステップＳ２４）。このとき、ローカルメモリ２００２に周辺装置３０からの複数の受信データが格納されていれば、データ転送部２４は、それらのデータをまとめて該当する格納位置へ格納するよう転送する。
【００６６】
以上で、チャネル装置２０のデータ転送動作の説明を終了する。
【００６７】
次に、本発明の第１の実施の形態の効果について述べる。
【００６８】
本発明の第１の実施の形態としてのコンピュータシステムは、上位装置および周辺装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムにおいて、データ転送性能をより向上させる。
【００６９】
その理由は、チャネル装置の雛形生成部が、周辺装置から受信されるデータに関するデータ関連情報を含むようチャネルプログラムの雛形を生成し、雛形送信部が、雛形通知条件が満たされたときに雛形を上位装置に送信し、上位装置のチャネルプログラム生成部が、雛形に含まれるデータ関連情報に基づいて決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、チャネルプログラム通知部が、生成したチャネルプログラムをチャネル装置に通知するからである。そして、チャネル装置は、そのようなチャネルプログラムにしたがうことにより、データ関連情報を反映した主記憶装置上の格納位置に直接データを格納するよう転送するからである。
【００７０】
これにより、上位装置は、チャネル装置内に周辺装置からの受信されているデータがあるときに確実にチャネルプログラムを発行できるので、チャネルプログラムの発行ロスを防止することができ、コンピュータシステムのデータ転送性能を向上させることができる。
【００７１】
また、上位装置は、データ関連情報を反映した主記憶装置上の格納位置に、周辺装置からの受信データを直接受信することになるので、主記憶装置の領域をより効率的に使用でき、コンピュータシステムのデータ転送性能を向上させる。
【００７２】
特に、上位装置が、データ関連情報を反映した主記憶装置上の格納位置として、データを利用するアプリケーションにより利用される領域内の格納位置を指定したチャネルプログラムを作成する場合、上位装置は、チャネル装置から受信するデータを主記憶装置上でコピーする処理を行う必要がなく、データコピーのオーバヘッドを減らしてコンピュータシステムのデータ転送性能をさらに向上させる。
【００７３】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明のチャネル装置に通信処理装置を適用した例について説明する。なお、本実施の形態では、通信処理装置が、本発明のチャネル装置が接続される周辺装置の一実施形態であるネットワークアダプタを内部に含む例について説明するが、本発明のチャネル装置が、周辺装置を内部に含むことを限定するものではない。また、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００７４】
まず、本発明の第２の実施の形態としてのコンピュータシステム２のハードウェア構成を図６に示す。図６において、コンピュータシステム２は、情報処理装置４０と、通信処理装置５０とを備える。以降、情報処理装置４０を、通信処理装置５０の上位装置４０とも記載する。通信処理装置５０は、ネットワークを介して端末９０ａおよび９０ｂ（以降、総称して端末９０とも記載する）に接続される。なお、図６には、２つの端末９０を示したが、本実施の形態において通信処理装置５０が接続される端末の数を限定するものではない。
【００７５】
図６において、上位装置４０は、本発明の第１の実施の形態の上位装置１０と同様に、ＣＰＵ１００１と、主記憶装置１００２と、メモリコントローラ１００３とを含んで構成される。
【００７６】
通信処理装置５０は、Ｉ／Ｏプロセッサ２００１と、ローカルメモリ２００２と、ＩＯＣ２００３と、ＳＷ２００４と、ネットワークアダプタ５００５とを含んで構成される。
【００７７】
ネットワークアダプタ５００５は、ネットワークに接続し、通信先の端末９０との間でデータを送受信するためのデバイスである。
【００７８】
次に、コンピュータシステム２を構成する各装置上で動作するソフトウェアおよびファームウェア構成の例を図７に示す。
【００７９】
図７において、上位装置４０で動作するソフトウェアは、オペレーティングシステム（ＯＳ）４０１と、通信管理ソフトウェア４０２と、１つ以上のアプリケーション４０３ａおよび４０３ｂ（以降、総称してアプリケーション４０３とも記載する）とによって構成される。これらのソフトウェアは、図示しないハードディスク等の記憶装置に格納され、ＣＰＵ１００１によって主記憶装置１００２上に読み出されて実行される。なお、図７の例では、２つのアプリケーション４０３ａおよび４０３ｂが上位装置４０で動作する例を示しているが、本発明の情報処理装置において動作するアプリケーションの数を限定するものではない。
【００８０】
ＯＳ４０１は、ＣＰＵ１００１の動作を制御する。また、ＯＳ４０１は、通信管理ソフトウェア４０２の指示により、チャネルプログラムの生成処理を行う機能を有する。
【００８１】
通信管理ソフトウェア４０２は、アプリケーション４０３からのネットワークＡＰＩ（Application Program Interface）コマンドを解析して実行する機能を有する。具体的には、通信管理ソフトウェア４０２は、ネットワークＡＰＩコマンドの解析結果に応じて、通信用のエンドポイントを作成する機能と、それに伴いバッファ領域を主記憶装置１００２に確保する機能と、ＯＳ４０１に対してチャネルプログラム作成を指示する機能等を有する。また、通信管理ソフトウェア４０２は、チャネルプログラムの雛形からチャネルプログラムを生成する機能を有する。
【００８２】
アプリケーション４０３は、ネットワークを利用するユーザアプリケーションである。例えば、アプリケーション４０３は、ＦＴＰ（File Transfer Protocol）サーバまたはクライアント等のような各種サーバクライアントシステムにおけるサーバアプリケーションまたはクライアントアプリケーションであってもよい。
【００８３】
また、図７において、通信処理装置５０上で動作するファームウェアは、Ｉ／Ｏドライバ５０１と、ネットワークドライバ５０２と、ネットワークスタック５０３と、ＯＳ５０４とによって構成される。
【００８４】
Ｉ／Ｏドライバ５０１は、上位装置４０によって作成されたチャネルプログラムを、ＩＯＣ２００３を制御することにより取得して解析し、解析結果に応じて通信処理装置５０の動作を制御する。また、Ｉ／Ｏドライバ５０１は、端末９０との通信用のエンドポイントの生成をネットワークスタック５０３に指示する機能と、エンドポイント毎のデータの受信状態等を管理する機能とを有する。なお、エンドポイントとは、通信先の端末９０毎に作成される論理的な通信経路であって、各端末９０との間で通信を行うための機能の単位である。また、Ｉ／Ｏドライバ５０１は、ＩＯＣ２００３を制御することにより、主記憶装置１００２に格納されているデータを取り出してローカルメモリ２００２に格納する機能と、ローカルメモリ２００２に格納されているデータを主記憶装置１００２に格納する機能とを有する。また、Ｉ／Ｏドライバ５０１は、チャネルプログラムの基となる雛形を生成し、ＩＯＣ２００３を制御することにより上位装置４０に送信する機能を有している。
【００８５】
ネットワークドライバ５０２は、ネットワークアダプタ５００５を制御する機能を有している。
【００８６】
ネットワークスタック５０３は、ＴＣＰ（Transmission Control Protocol）やＩＰ（Internet Protocol）、ＵＤＰ（User Datagram Protocol）等の各種ネットワークプロトコルを実現する機能を有している。ネットワークスタック５０３は、Ｉ／Ｏドライバ５０１の指示に応じて、通信用のエンドポイントを生成し、端末９０とのコネクションを確立してデータ通信を行う機能を有している。
【００８７】
ＯＳ５０４は、Ｉ／Ｏプロセッサ２００１の動作を制御する。
【００８８】
次に、コンピュータシステム２を構成する各装置の機能ブロック構成を図８に示す。
【００８９】
まず、上位装置４０の各機能ブロックの詳細について説明する。
【００９０】
図８において、上位装置４０は、チャネルプログラムを生成して主記憶装置１００２に格納するチャネルプログラム生成部４１と、チャネルプログラム通知部１２とを備える。
【００９１】
チャネルプログラム生成部４１およびチャネルプログラム通知部１２は、通信管理ソフトウェア４０２をＯＳ４０１上で実行するＣＰＵ１００１、および、メモリコントローラ１００３によって実現される。
【００９２】
チャネルプログラム生成部４１は、アプリケーション４０３からの要求に応じて、通信処理装置５０に対して、端末９０との通信を指示するチャネルプログラムを生成する。このチャネルプログラムは、チャネルプログラム通知部１２によって通信処理装置５０へ通知される。
【００９３】
例えば、チャネルプログラム生成部４１を実現する通信管理ソフトウェア４０２は、アプリケーション４０３からネットワークＡＰＩコマンドを受信すると、主記憶装置１００２上にバッファ領域Ｗｏｒｋを確保する。そして、通信管理ソフトウェア４０２は、Ｗｏｒｋ領域に、通信処理装置５０へ端末９０との通信を指示するための通信制御コマンド情報を格納する。そして、通信管理ソフトウェア４０２は、ＯＳ４０１に対してチャネルプログラム作成を指示する。そして、ＯＳ４０１は、通信制御コマンド情報が格納された主記憶装置１００２のＷｏｒｋ領域のアドレスと、そのサイズを指定したチャネルプログラムを作成する。
【００９４】
また、チャネルプログラム生成部４１は、通信処理装置５０から受信されるチャネルプログラムの雛形に基づいて、チャネルプログラムを生成する。ここで、チャネルプログラム生成部４１によって生成されるチャネルプログラムの一例を図９に示す。
【００９５】
図９において、チャネルプログラムは、１つのチャネルプログラムヘッダと、１つ以上のチャネルコマンドエントリとによって構成される。
【００９６】
チャネルコマンドエントリは、実行動作を指定するコマンドと、コマンド実行順序などの制御指示情報を指定するフラグと、転送データのサイズと、転送データを格納する主記憶装置１００２上での実効アドレスとを含む。
【００９７】
また、チャネルプログラム生成部４１は、通信処理装置５０から、チャネルプログラムの雛形として、チャネルコマンドエントリの雛形を主記憶装置１００２上に受信する。図９において、チャネルコマンドエントリの雛形は、実行動作を指定するコマンドと、制御指示情報を示すフラグと、転送データのサイズと、エンドポイント情報とを含む。エンドポイント情報とは、通信先の端末９０毎に生成されるエンドポイントを識別可能な情報であればよい。このチャネルコマンドエントリの雛形については詳細を後述する。
【００９８】
また、チャネルプログラム生成部４１は、図９に示したようなチャネルコマンドエントリの雛形を主記憶装置１００２上に受信すると、雛形におけるエンドポイント情報を、主記憶装置１００２上の実効アドレスに置き換える。このとき、チャネルプログラム生成部４１は、各エンドポイント情報に対応するアプリケーション４０３用に主記憶装置１００２上に用意された領域内で、該当するサイズのデータを格納可能な位置の実効アドレスに置き換える。そして、チャネルプログラム生成部４１は、雛形のエンドポイント情報を実効アドレスに置き換えたチャネルコマンドエントリを用いて、チャネルプログラムを生成する。
【００９９】
次に、通信処理装置５０の各機能ブロックの詳細について説明する。
【０１００】
図８において、通信処理装置５０は、データを取得してローカルメモリ２００２に保持するデータ取得部５１と、雛形生成部５２と、雛形送信部５３と、データ転送部５４とを備える。
【０１０１】
データ取得部５１は、ネットワークドライバ５０２およびネットワークスタック５０３を用いてＯＳ５０４上でＩ／Ｏドライバ５０１を実行することによりネットワークアダプタ５００５を制御するＩ／Ｏプロセッサ２００１によって構成される。また、雛形生成部５２は、ＯＳ５０４上でＩ／Ｏドライバ５０１を実行するＩ／Ｏプロセッサ２００１によって構成される。また、雛形送信部５３およびデータ転送部５４は、ＯＳ５０４上でＩ／Ｏドライバ５０１を実行することによりＩＯＣ２００３を制御するＩ／Ｏプロセッサ２００１によって構成される。
【０１０２】
データ取得部５１は、通信先の端末９０からネットワークアダプタ５００５を介してデータを受信し、ローカルメモリ２００２に保持しておく。具体的には、例えば、データ取得部５１を実現するＩ／Ｏドライバ５０１は、上位装置４０からのチャネルプログラムを実行することにより端末９０毎に通信用のエンドポイントを作成し、各エンドポイントと端末９０との通信コネクションを確立する。Ｉ／Ｏドライバ５０１は、例えば、ＴＣＰ／ＩＰのプロトコルに従って各エンドポイントと端末９０との通信を確立すればよい。
【０１０３】
雛形生成部５２は、端末９０から受信されるデータを上位装置４０の主記憶装置１００２に転送するためのチャネルコマンドエントリの雛形を生成する。このとき、雛形生成部５２は、該当するデータの送信元である端末９０毎に、チャネルコマンドエントリの雛形を生成する。また、雛形生成部５２は、端末９０毎に受信されるデータに関連する情報をまとめて端末毎データ関連情報を生成し、各雛形に含めるようにする。このようなチャネルコマンドエントリの雛形の一例は、図９に示したとおりである。各チャネルコマンドエントリにおいて、転送データのサイズは、該当するエンドポイント情報に対応する端末９０から受信されるデータの合計サイズを表している。雛形生成部５２は、雛形送信部５３により雛形通知条件が満たされたと判断されるまで、データ取得部５１によって端末９０からデータが取得される度に、該当するチャネルコマンドエントリの雛形の転送サイズを更新する。
【０１０４】
雛形送信部５３は、雛形通知条件が満たされると、端末９０毎に生成したチャネルコマンドエントリの雛形を、上位装置４０の主記憶装置１００２上に送信する。具体的には、雛形送信部５３を実現するＩ／Ｏドライバ５０１は、生成した雛形を主記憶装置１００２上に格納するようＩＯＣ２００３に指示すればよい。なお、雛形通知条件は、各チャネルコマンドエントリの雛形に含まれる転送サイズの総和が閾値を超えたことであってもよい。また、雛形通知条件は、チャネルコマンドエントリの雛形の作成開始から一定時間経過したことであってもよい。また、雛形通知条件は、チャネルコマンドエントリの雛形のエントリ数が閾値を超えたことであってもよい。その他、雛形通知条件には各種条件またはその組み合わせを採用可能である。
【０１０５】
データ転送部５４は、上位装置４０からのチャネルプログラムの通知を検出する。通知の検出は、例えば、上位装置４０からのプロセッサ間通信を検出したＩ／Ｏプロセッサ２００１によって、データ転送部５４を実現するＩ／Ｏドライバ５０１に対して割込み等により行われる。
【０１０６】
データ転送部５４は、上位装置４０において雛形に基づいて生成されたチャネルプログラムにしたがって、端末９０から受信されたデータを、端末９０毎にまとめて上位装置４０に送信する。このとき、データ転送部５４は、主記憶装置１００２上で、各端末９０からのデータを利用する各アプリケーション４０３用に用意された領域内で指定された格納位置に、該当する端末９０からのデータをまとめて転送する。具体的には、例えば、データ転送部５４を実現するＩ／Ｏドライバ５０１は、主記憶装置１００２上に格納されているチャネルプログラムを読み出すようＩＯＣ２００３に指示してローカルメモリ２００２に格納する。そして、Ｉ／Ｏドライバ５０１は、チャネルプログラムに含まれる各チャネルコマンドエントリにおいて指定される格納位置へ、該当する端末９０から受信されたデータをまとめて格納するよう、ＩＯＣ２００３に指示すればよい。
【０１０７】
以上のように構成されたコンピュータシステム２の動作について説明する。
【０１０８】
まず、図１０を参照して、コンピュータシステム２の動作の概要について説明する。
【０１０９】
図１０では、まず、通信処理装置５０は、端末９０からのデータが受信されたタイミングで、チャネルコマンドエントリの雛形を作成し、雛形通知条件が成立すると、上位装置４０の主記憶装置１００２に雛形を送信する（ステップＳ３１）
次に、上位装置４０は、チャネルコマンドエントリの雛形を受信すると、受信した雛形の一部を、アプリケーション４０３のデータ格納バッファのアドレス情報に置き換えることによりチャネルプログラムを作成し、主記憶装置１００２に格納する（ステップＳ３２）。
【０１１０】
次に、通信処理装置５０は、主記憶装置１００２に格納されたチャネルプログラムを取得する（ステップＳ３３）。
【０１１１】
次に、通信処理装置５０は、取得したチャネルプログラムにしたがって、各端末９０からの受信データをそれぞれまとめて、主記憶装置１００２上で指定された各格納位置に格納する（ステップＳ３４）。
【０１１２】
次に、ステップＳ３１〜Ｓ３４における各動作の詳細について説明する。なお、以下の動作の説明では、図１０に示すように、端末９０ａからデータａ１およびａ２が順次受信され、端末９０ｂからデータｂ１が受信されるものとして説明を行う。また、端末９０ａからの受信データはアプリケーション４０３ａによって利用され、端末９０ｂからの受信データはアプリケーション４０３ｂによって利用されるものとする。また、以下の説明において、通信処理装置５０では、エンドポイントＡおよびエンドポイントＢが既に作成され、エンドポイントＡおよび端末９０ａの通信コネクションと、エンドポイントＢおよび端末９０ｂの通信コネクションとは、既に確立されているものとする。また、上位装置４０の主記憶装置１００２上では、アプリケーション４０３ａ用のデータ格納バッファＡＰ−ａが用意され、アプリケーション４０３ｂ用のデータ格納バッファＡＰ−ｂが用意されているものとする。
【０１１３】
まず、ステップＳ３１における雛形生成動作の詳細を図１１に示す。
【０１１４】
図１１では、まず、雛形生成部５２および雛形送信部５３は、雛形および雛形通知条件を初期化する（ステップＳ４１）。
【０１１５】
次に、雛形生成部５２は、データ取得部５１によって端末９０からデータが受信されたか否かを判断する（ステップＳ４２）。もし、いずれの端末９０からもデータが受信されていなければ、雛形生成部５２は、ステップＳ４２を再度実行する。
【０１１６】
そして、端末９０からデータが受信されると（ステップＳ４２でＹｅｓ）、雛形生成部５２は、ローカルメモリ２００２に、受信データの送信元の端末９０に対応するエンドポイント情報を含むチャネルコマンドエントリの雛形があるか否かを判断する（ステップＳ４３）。
【０１１７】
例えば、端末９０ａからのデータａ（サイズ１０００）がエンドポイントＡで検出されたとする。この場合、雛形生成部５２は、エンドポイント情報「Ａ」を含むチャネルコマンドエントリの雛形を検索する。この場合、雛形が初期化されたばかりであり、そのような雛形はなかったものとする（ステップＳ４３でＮｏ）。
【０１１８】
次に、雛形生成部５２は、ステップＳ４２で受信が検出されたデータのエンドポイント情報およびデータ関連情報を含む新規のチャネルコマンドエントリを作成する（ステップＳ４４）。ここでは、雛形生成部５２は、エンドポイント情報として「Ａ」と、転送データサイズとして受信データａ１のサイズ「１０００」とを登録したチャネルコマンドエントリの雛形を生成する。
【０１１９】
次に、雛形送信部５３は、雛形通知条件が成立したか否かを判断する。ここでは、雛形通知条件は、成立していないものとする（ステップＳ４６でＮｏ）。
【０１２０】
そこで、通信処理装置５０の動作はステップＳ４２に戻り、次のデータが受信されたか否かを判断する。ここでは、端末９０ｂからのデータｂ１（サイズ５００）がエンドポイントＢで検出されたとする（ステップＳ４２でＹｅｓ）。そこで、雛形生成部５２は、ステップＳ４３〜Ｓ４４まで先ほどと同様に動作して、エンドポイント情報として「Ｂ」と、転送データサイズとして受信データｂ１のサイズ「５００」とを登録したチャネルコマンドエントリの雛形を生成する。
【０１２１】
次に、雛形送信部５３は、雛形通知条件が成立したか否かを判断する。ここでは、雛形通知条件は、成立していないものとする（ステップＳ４６でＮｏ）。
【０１２２】
そこで、通信処理装置５０の動作はステップＳ４２に戻り、次のデータが受信されたか否かを判断する。ここでは、端末９０ａからのデータａ２（サイズ５００）がエンドポイントＡで検出されたとする（ステップＳ４２でＹｅｓ）。
【０１２３】
次に、雛形生成部５２は、ローカルメモリ２００２に、受信データの送信元の端末９０に対応するエンドポイント情報を含むチャネルコマンドエントリの雛形があるか否かを判断する。ここでは、雛形生成部５２は、端末９０ａに対応するエンドポイント情報「Ａ」を含むチャネルコマンドエントリの雛形が既にあると判断する（ステップＳ４３でＹｅｓ）。
【０１２４】
そこで、雛形生成部５２は、該当するチャネルコマンドエントリに、新たに受信されたデータａ２のデータ関連情報を追加して含める（ステップＳ４５）。ここでは、雛形生成部５２は、エンドポイントＡのチャネルコマンドエントリの転送サイズを、それまでの「１０００」に新たに受信されたデータａ２のサイズ「５００」を加算した「１５００」に更新する。
【０１２５】
次に、雛形送信部５３は、雛形通知条件が成立したか否かを判断する。ここでは、雛形通知条件が、成立しているものとする（ステップＳ４６でＹｅｓ）。
【０１２６】
次に、雛形送信部５３は、送信対象となる雛形を確認する（ステップＳ４７）。ここでは、雛形送信部５３は、２つの雛形（エンドポイントＡおよびエンドポイントＢ）があることを確認する。
【０１２７】
そこで、雛形送信部５３は、該当するチャネルコマンドエントリを上位装置４０に送信する（ステップＳ４８）。具体的には、雛形送信部５３は、上位装置４０の主記憶装置１００２に、エンドポイントＡの雛形とエンドポイントＢの雛形とを格納する。これにより、図１２に示すようなチャネルコマンドエントリの雛形が作成され、主記憶装置１００２に格納された。
【０１２８】
以上で、通信処理装置５０が雛形を生成するステップＳ３１の動作の詳細な説明を終了する。
【０１２９】
次に、ステップＳ３２におけるチャネルプログラム生成動作の詳細を図１３に示す。
【０１３０】
図１３では、チャネルプログラム生成部４１は、チャネルコマンドエントリの雛形の受信の有無を確認する（ステップＳ５１）。もし、チャネルコマンドエントリの雛形が受信されていなければ、チャネルプログラム生成部４１は、ステップＳ５１を繰り返す。ここでは、主記憶装置１００２に、チャネルコマンドエントリの２つの雛形（エンドポイントＡおよびエンドポイントＢ）が格納されており、チャネルプログラム生成部４１は、雛形が受信されていると判断したものとする（ステップＳ５１でＹｅｓ）。
【０１３１】
次に、チャネルプログラム生成部４１は、チャネルコマンドエントリの雛形に含まれるエンドポイント情報およびデータサイズに基づいて、主記憶装置１００２上でのデータの格納位置の実効アドレスを決定する。そして、チャネルプログラム生成部４１は、雛形に含まれるエンドポイント情報を、決定した実効アドレスで上書きする（ステップＳ５２）。
【０１３２】
ここでは、チャネルプログラム生成部４１は、１つ目の雛形に含まれるエンドポイント情報「Ａ」に基づいて、エンドポイント「Ａ」に対応するアプリケーション４０３ａ用のデータ格納バッファＡＰ−ａにおいて、該当するサイズ「１５００」のデータを格納可能な位置のアドレス情報（ＡｄｄｒｅｓｓＡ）を決定する。そして、チャネルプログラム生成部４１は、この雛形に含まれるエンドポイント情報「Ａ」を実効アドレス「ＡｄｄｒｅｓｓＡ」で上書きする。
【０１３３】
次に、チャネルプログラム生成部４１は、次の雛形があるか否かを判断する。ここでは、チャネルプログラム生成部４１は、２つ目の雛形があると判断する（ステップＳ５３でＹｅｓ）。
【０１３４】
そこで、チャネルプログラム生成部４１は、再度ステップＳ５２を実行する。ここでは、チャネルプログラム生成部４１は、２つ目の雛形に含まれるエンドポイント情報「Ｂ」に基づいて、エンドポイント「Ｂ」に対応するアプリケーション４０３ｂ用のデータ格納バッファ（ＡＰ−ｂ）において、該当するサイズ「５００」のデータを格納可能な位置のアドレス情報（ＡｄｄｒｅｓｓＢ）を決定する。そして、チャネルプログラム生成部４１は、この雛形に含まれるエンドポイント情報「Ｂ」を実効アドレス「ＡｄｄｒｅｓｓＢ」で上書きする。
【０１３５】
次に、チャネルプログラム生成部４１は、次の雛形があるか否かを判断する。ここでは、チャネルプログラム生成部４１は、次の雛形はもうないと判断する（ステップＳ５３でＮｏ）。
【０１３６】
次に、チャネルプログラム生成部４１は、エンドポイント情報を実効アドレスに置換した雛形を用いて、チャネルプログラムを作成する（ステップＳ５４）。これにより、図１２に示したようなチャネルプログラムが生成され、主記憶装置１００２に格納された。
【０１３７】
次に、チャネルプログラム通知部１２は、通信処理装置５０に対してチャネルプログラムの作成を通知する（ステップＳ５５）。具体的には、チャネルプログラム通知部１２は、プロセッサ間通信を用いて、チャネルプログラムの生成を通知すればよい。
【０１３８】
以上で、上位装置４０がチャネルプログラムを生成するステップＳ３２の動作の詳細な説明を終了する。
【０１３９】
次に、ステップＳ３３〜Ｓ３４におけるチャネルプログラムの取得動作およびデータ転送動作の詳細を図１４に示す。
【０１４０】
図１４では、まず、データ転送部５４は、上位装置４０からチャネルプログラムの通知を検出したか否かを判断する。ここでは、チャネルプログラムの通知が検出されたものとする（ステップＳ６１でＹｅｓ）。
【０１４１】
次に、データ転送部５４は、主記憶装置１００２に格納されているチャネルプログラムをローカルメモリ２００２に取得する（ステップＳ６２）。ここでは、図１２に示したようなチャネルプログラムが取得されたものとする。
【０１４２】
次に、データ転送部５４は、チャネルプログラムに含まれるチャネルコマンドエントリを解析する（ステップＳ６３）。
【０１４３】
次に、データ転送部５４は、チャネルコマンドエントリにしたがって、上位装置４０にデータ転送を行う（ステップＳ６４）。具体的には、データ転送部５４は、ＩＯＣ２００３を制御することにより、チャネルコマンドエントリの示す端末９０からの受信データをまとめて、そのチャネルコマンドエントリで指示される主記憶装置１００２上の実効アドレスに格納する。
【０１４４】
ここでは、データ転送部５４は、図１２に示す１つ目のチャンネルコマンドエントリにしたがい、ローカルメモリ２００２に格納されている端末９０ａからの受信データａ１およびａ２をまとめて、主記憶装置１００２上の実効アドレス「ＡｄｄｒｅｓｓＡ」の示す位置に格納する。
【０１４５】
次に、データ転送部５４は、チャネルプログラムに次のチャネルコマンドエントリがあるか否かを判断する。ここでは、データ転送部５４は、次のチャネルコマンドエントリがあると判断する（ステップＳ６５でＹｅｓ）。
【０１４６】
そこで、データ転送部５４は、再度ステップＳ６３〜Ｓ６４を実行する。ここでは、データ転送部５４は、図１２の２つ目のチャネルコマンドエントリにしたがって、ローカルメモリ２００２に格納されている端末９０ｂからの受信データｂ１を、主記憶装置１００２上の実効アドレス「ＡｄｄｒｅｓｓＢ」の示す位置に格納する。
【０１４７】
次に、データ転送部５４は、チャネルプログラムに次のチャネルコマンドエントリがあるか否かを判断する。ここでは、データ転送部５４は、次のチャネルコマンドエントリはもう無いと判断する（ステップＳ６５でＮｏ）。
【０１４８】
以上で、通信処理装置５０のチャネルプログラム取得動作およびデータ転送動作の詳細な説明を終了する。
【０１４９】
次に、本発明の第２の実施の形態の効果について述べる。
【０１５０】
本発明の第２の実施の形態としてのコンピュータシステムは、上位装置および通信処理装置間のデータ転送をチャネルプログラムで実現しているコンピュータシステムにおいて、データ転送性能をより向上させることができる。
【０１５１】
その理由は、通信処理装置の雛形生成部が、通信先の端末からのデータ受信のタイミングで、端末毎に、受信データに関連するデータ関連情報をまとめて含めたチャネルコマンドエントリの雛形を生成し、雛形通知条件が成立すると、端末毎に生成したチャネルコマンドエントリの雛形を上位装置に送信するからである。そして、上位装置が、受信したチャネルコマンドエントリの雛形に基づいて、各端末からの受信データを利用するアプリケーション毎に用意されたデータ格納バッファ内に、データ関連情報を反映した格納位置を決定し、決定した格納位置を含めた端末毎のチャネルコマンドエントリを含むチャネルプログラムを生成するからである。そして、そのようなチャネルプログラムを受信した通信処理装置が、チャネルプログラムに含まれる各チャネルコマンドエントリに基づいて、各端末からの受信データをそれぞれまとめて、上位装置の主記憶装置上に用意された対応するアプリケーションのデータ格納バッファ内に格納するよう転送するからである。
【０１５２】
これにより、上位装置は、通信処理装置内に端末から受信されているデータがあるときに確実にチャネルプログラムを発行できるので、チャネルプログラムの発行ロスを防止することができ、コンピュータシステムにおけるデータ転送性能を向上させることができる。
【０１５３】
また、関連技術の通信処理装置では、１回のチャネルプログラムに対する応答で、出来るだけ多くのデータを効率よく主記憶装置に格納するために、複数のデータを１つのデータの塊として（混在させて）主記憶装置に格納することがあった。例えば、関連技術の通信処理装置は、端末とのコネクション毎に受信したデータをチャネルプログラム毎に主記憶装置に格納するのではなく、複数のコネクションでそれぞれ受信したデータを１つのデータの塊として（混在させて）、主記憶装置上に指定された一時的格納エリアに格納していた。
【０１５４】
このような場合、関連技術の上位装置は、チャネルプログラムで指定した主記憶装置上の一時的格納エリアに格納されたデータを解析する処理を行う必要があった。そして、関連技術の上位装置は、解析の結果得られた複数のデータを、それらのデータをそれぞれ使用する各アプリケーションにより使用される他の各可能位置にコピーする処理を実行する必要があった。
【０１５５】
このような問題は、関連技術の上位装置が、通信処理装置の内部に保持されている端末からの受信データの詳細（受信データサイズやどの端末からの受信データか等）を、事前に把握できないために生じていた。
【０１５６】
これに対して、本実施の形態の上位装置は、端末毎のデータ関連情報を反映した主記憶装置上の格納位置として、各端末からのデータを利用するアプリケーションにより利用される領域内の各格納位置を指定したチャネルコマンドエントリを含むチャネルプログラムを作成する。したがって、上位装置は、通信処理装置から受信するデータを主記憶装置上でコピーする処理を行う必要がない。その結果、本実施の形態のコンピュータシステムは、データコピーのオーバヘッドを減らしてデータ転送性能をさらに向上させる。
【０１５７】
また、本実施の形態の上位装置は、端末からの受信データを利用するアプリケーションに用意された主記憶装置上のデータ格納バッファに、通信処理装置からの受信データを直接格納することになるので、主記憶装置の領域をより効率的に使用できる。
【０１５８】
なお、本実施の形態において、チャネル装置が雛形に含めるデータ関連情報として、データサイズおよびエンドポイント情報を含める例を中心に説明したが、通信処理装置は、上位装置において主記憶装置上でのデータ格納位置を決定可能なその他のデータ関連情報を含めるようにしてもよい。
【０１５９】
また、上述した本発明の各実施の形態において、チャネルプログラムのデータ構造の一例を示したが、本発明におけるチャネルプログラムは、その他のデータ構造であってもよい。
【０１６０】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した上位装置およびチャネル装置（通信処理装置）の動作を、本発明のコンピュータ・プログラムとして記憶装置（記憶媒体）に格納しておき、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０１６１】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１６２】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１６３】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
周辺装置からデータを取得してローカルメモリに保持するデータ取得部と、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成部と、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信部と、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持された前記データを前記上位装置に転送するデータ転送部と、
を備えたチャネル装置。
（付記２）
前記雛形生成部は、前記雛形通知条件が満たされるまで、前記データ取得部によりデータが取得される度に該データに関するデータ関連情報を前記雛形に追加して含めることを特徴とする付記１に記載のチャネル装置。
（付記３）
前記雛形生成部は、前記データ関連情報として、前記雛形通知条件が満たされるまでに前記データ取得部により取得されたデータの合計サイズを表す情報を前記雛形に含め、
前記データ転送部は、前記合計サイズのデータを格納可能な前記主記憶装置上での格納位置が指定された前記チャネルプログラムにしたがって、前記データを転送することを特徴とする付記１または付記２に記載のチャネル装置。
（付記４）
前記周辺装置が、ネットワークを介して通信先の端末に接続される装置であるとき、
前記雛形生成部は、前記通信先の端末毎に、受信されるデータに関するデータ関連情報である端末毎データ関連情報を生成して前記雛形に含め、
前記データ転送部は、前記端末毎データ関連情報に基づいて前記通信先の端末に応じて前記主記憶装置上での格納位置が指定された前記チャネルプログラムにしたがって、前記データを転送することを特徴とする付記１から付記３のいずれか１つに記載のチャネル装置。
（付記５）
付記１から付記４のいずれか１つに記載のチャネル装置との間で転送される情報を格納する主記憶装置を有する装置であって、
前記チャネル装置から前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて前記主記憶装置上でのデータの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成部と、
前記チャネルプログラムの生成を前記チャネル装置に通知するチャネルプログラム通知部と、
を備えた情報処理装置。
（付記６）
前記チャネルプログラム生成部は、前記データの格納位置として、前記データを利用するアプリケーションにより使用される前記主記憶装置上の領域において前記データを格納可能な位置を、前記雛形に含まれる前記データ関連情報に基づいて指定した前記チャネルプログラムを生成することを特徴とする付記５に記載の情報処理装置。
（付記７）
前記雛形に含まれる前記データ関連情報に前記データのサイズを表す情報が含まれるとき、
前記チャネルプログラム生成部は、前記サイズのデータを格納可能な主記憶装置上での格納位置を指定した前記チャネルプログラムを生成することを特徴とする付記５または付記６に記載の情報処理装置。
（付記８）
付記１から付記４のいずれか１つに記載のチャネル装置と、
付記５から付記７のいずれか１つに記載の情報処理装置と、
を備えたコンピュータシステム。
（付記９）
周辺装置からデータを取得してローカルメモリに保持し、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記上位装置に転送する、データ転送制御方法。
（付記１０）
付記９に記載のデータ転送制御方法において送信される前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、
前記チャネルプログラムの生成を前記雛形の送信元の装置に通知する、データ転送制御方法。
（付記１１）
チャネル装置は、
周辺装置からデータを取得してローカルメモリに保持し、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成し、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信し、
前記上位装置は、
前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、前記主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成し、
前記チャネルプログラムの生成を前記チャネル装置に通知し、
前記チャネル装置は、
前記上位装置から通知されたチャネルプログラムにしたがって、前記ローカルメモリに保持した前記データを前記格納位置に格納するよう前記上位装置に転送する、データ転送制御方法。
（付記１２）
周辺装置からデータを取得してローカルメモリに保持するデータ取得ステップと、
前記データを上位装置の主記憶装置に転送するためのチャネルプログラムの雛形として、前記データに関するデータ関連情報を含む雛形を生成する雛形生成ステップと、
所定の雛形通知条件が満たされると、前記雛形を前記上位装置に送信する雛形送信ステップと、
前記上位装置により前記雛形の受信に応じて生成されたチャネルプログラムであって、前記データ関連情報に基づいて決定された前記主記憶装置上での格納位置に前記データを転送するよう指示されたチャネルプログラムにしたがって、前記ローカルメモリに保持したデータを前記上位装置に転送するデータ転送ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
（付記１３）
付記１２に記載のコンピュータ・プログラムの実行により送信される前記雛形を受信すると、前記雛形に含まれる前記データ関連情報に基づいて、主記憶装置上での前記データの格納位置を決定し、決定した格納位置にデータを転送するよう指示するチャネルプログラムを生成するチャネルプログラム生成ステップと、
前記チャネルプログラムの生成を前記雛形の送信元の装置に通知するチャネルプログラム通知ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【符号の説明】
【０１６４】
１、２    コンピュータシステム
１０、４０    上位装置
１０、４０    情報処理装置
１１、４１    チャネルプログラム生成部
１２    チャネルプログラム通知部
２０    チャネル装置
２１、５１    データ取得部
２２、５２    雛形生成部
２３、５３    雛形送信部
２４、５４    データ転送部
３０    周辺装置
５０    通信処理装置
９０、９０ａ、９０ｂ    端末
４０１、５０４    オペレーティングシステム（ＯＳ）
４０２    通信管理ソフトウェア
４０３、４０３ａ、４０３ｂ    アプリケーション
５０１    Ｉ／Ｏドライバ
５０２    ネットワークドライバ
５０３    ネットワークスタック
１００１    ＣＰＵ
１００２    主記憶装置
１００３    メモリコントローラ
２００１    Ｉ／Ｏプロセッサ
２００２    ローカルメモリ
２００３    Ｉ／Ｏコントローラ（ＩＯＣ）
２００４    スイッチ（ＳＷ）
２００５    周辺装置接続インタフェース
５００５    ネットワークアダプタ
【図１】
0005617889.tif 000002
【図２】
0005617889.tif 000003
【図３】
0005617889.tif 000004
【図４】
0005617889.tif 000005
【図５】
0005617889.tif 000006
【図６】
0005617889.tif 000007
【図７】
0005617889.tif 000008
【図８】
0005617889.tif 000009
【図９】
0005617889.tif 000010
【図１０】
0005617889.tif 000011
【図１１】
0005617889.tif 000012
【図１２】
0005617889.tif 000013
【図１３】
0005617889.tif 000014
【図１４】
0005617889.tif 000015