(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備え、
前記ＣＰＵは、データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、
ことを特徴とするコンピュータ装置。
【請求項２】
前記データ転送の実行に必要なパラメータを格納する記憶装置を更に備え、
前記ＣＰＵが、前記起動の指示によって、前記入出力コントローラに、前記記憶装置からの前記パラメータの読み出しを行わせ、更に、読み出した前記パラメータを前記ホストチャネルアダプタに書き込ませ、前記ホストチャネルアダプタに前記データ転送を開始させる、
請求項１に記載のコンピュータ装置。
【請求項３】
前記ＣＰＵは、
前記ホストチャネルアダプタを用いたデータ転送を実行する場合に、前記記憶装置に格納されている前記パラメータに、転送対象となるデータを付随させ、
前記起動の指示によって、前記入出力コントローラに、前記記憶装置から、前記パラメータと共に前記転送対象となるデータの読み出しを行わせ、読み出した前記パラメータ及び前記転送対象となるデータを前記ホストチャネルアダプタに書き込ませる、
請求項２に記載のコンピュータ装置。
【請求項４】
前記バス、前記入出力コントローラ及び前記ホストチャネルアダプタが、前記ＣＰＵが実装された基板とは別の基板に実装されている、請求項１〜３のいずれかに記載のコンピュータ装置。
【請求項５】
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置を用いたデータ転送方法であって、
（ａ）データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、前記ＣＰＵによって、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを有する、
ことを特徴とするデータ転送方法。
【請求項６】
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置によって、データ転送方法を行うためのプログラムであって、
（ａ）データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを、前記ＣＰＵに実行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストチャネルアダプタを用いてデータ転送を実行するコンピュータ装置及びデータ転送方法、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、大規模な汎用のコンピュータシステムにおいては、ホストコンピュータに他の拡張記憶装置が接続された構成が採用されることがある。拡張記憶装置は、ホストコンピュータの主記憶装置を拡張するための装置であり、拡張した主記憶として位置づけられる。
【０００３】
このようなコンピュータシステムの具体例としては、２台のホストコンピュータを用いたコンピュータシステムが挙げられる（例えば、特許文献１参照。）。特許文献１に開示されたコンピュータシステムでは、ホストコンピュータそれぞれのホストチャネルアダプタ（ＨＣＡ：Host Channel Adapter）が、光ファイバーケーブルによって、ポイント・ツー・ポイント接続される。そして、一方のホストコンピュータが、拡張記憶装置として機能する。
【０００４】
また、特許文献１に開示されたコンピュータシステムでは、ホストコンピュータと拡張記憶装置との間のデータ転送は、ＲＤＭＡ（Remote Direct Memory Access）転送によって高速に実行される。そして、拡張記憶装置は、拡張記憶として動作するため、転送データの転送長が短い転送命令（例えば、転送長が８Ｋバイト以内）が発行される頻度がとても高くなっている。このような転送長が短い転送命令の発行においては、ホストコンピュータのＣＰＵ（Central Processing Unit）が、ＲＤＭＡ転送の終了を待って次の処理を実行する同期転送が採用される。
【０００５】
一方、特許文献１に開示されたコンピュータシステムであっても、転送長が長い転送命令が発行される場合は、ＣＰＵがＲＤＭＡ転送の起動後にＣＰＵリソースを解放する非同期転送が採用される。非同期転送では、ＣＰＵには他の処理の実行が許可されるため、ＣＰＵは、ＲＤＭＡ転送の終了を待つ必要がない。
【０００６】
但し、非同期転送が実行される割合は、データ転送全体の１割未満であるのに対して、同期転送が実行される割合は、９割以上である。従って、近年のＣＰＵの高速化に対応するためには、コンピュータシステムにおいては、同期転送の高速化が求められている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２１７２１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＨＣＡを備えたホストコンピュータでは、ＣＰＵとＩ／Ｏとが分離され、ＣＰＵとは別に、ＨＣＡを制御するためのプロセッサ（以下「ＨＣＡ制御プロセッサ」と表記する。）が備えられている。このため、ＣＰＵは、ＨＣＡに対して、データ転送を直接指示することができず、ＨＣＡ制御プロセッサに対して、データ転送指示を出力する必要がある。結果、ＣＰＵがデータ転送を指示してからＨＣＡがデータ転送を開始するまでの時間の短縮に限界があり、上述した同期転送の高速化の求めに応じることは困難である。
【０００９】
本発明の目的の一例は、上記問題を解消し、ホストチャネルアダプタを用いたデータ転送の開始までの時間を短縮化して、データ転送の遅延を抑制し得る、コンピュータ装置、データ転送方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一側面におけるコンピュータ装置は、
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備え、
前記ＣＰＵは、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、
ことを特徴とする。
【００１１】
また、上記目的を達成するため、本発明の一側面におけるデータ転送方法は、ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置を用いたデータ転送方法であって、
（ａ）前記ＣＰＵによって、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを有する、
ことを特徴とする。
【００１２】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置によって、データ転送方法を行うためのプログラムであって、
（ａ）前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを、前記ＣＰＵに実行させる、
ことを特徴とする。
【発明の効果】
【００１３】
以上のように本発明によれば、ホストチャネルアダプタを用いたデータ転送の開始までの時間を短縮化して、データ転送の遅延を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態１におけるコンピュータ装置の構成を示すブロック図である。
【図２】図２は、本発明の実施の形態１におけるコンピュータ装置の動作を示すタイムチャートである。
【図３】図３は、従来からのコンピュータ装置の動作を示すタイムチャートである。
【図４】図４は、本発明の実施の形態２におけるコンピュータ装置の動作を示すタイムチャートである。
【発明を実施するための形態】
【００１５】
（実施の形態１）
以下、本発明の実施の形態１における、コンピュータ装置、データ転送方法、及びプログラムについて、図１及び図２を参照しながら説明する。
【００１６】
［装置構成］
最初に、本実施の形態１におけるコンピュータ装置の構成について図１を用いて説明する。図１は、本発明の実施の形態１におけるコンピュータ装置の構成を示すブロック図である。
【００１７】
図１に示す本実施の形態１におけるコンピュータ装置１００及び２００は、それぞれのホストチャネルアダプタ（ＨＣＡ）２５によって、光ファイバーケーブル３００を介して、互いに接続されている。また、コンピュータ装置１００及び２００は、同一の構成を備えたホストコンピュータであり、それぞれは他方の拡張記憶装置として機能することができる。
【００１８】
以下においては、コンピュータ装置２００が、コンピュータ装置１００の拡張記憶装置として機能する場合について、コンピュータ装置１００を中心に説明する。また、この場合、コンピュータ装置１００は、コンピュータ２００との間でＲＤＭＡ転送を行なうため、コンピュータ２００に対して、ＲＤＭＡライトリクエスト又はＲＤＭＡリードリクエストを出力する。
【００１９】
なお、「ＲＤＭＡライト」とは、リクエスト元の主メモリのデータを、リクエスト先の主メモリに書き込む、データ転送処理である。また、「ＲＤＭＡリード」とは、リクエスト先の主メモリのデータを、リクエスト元の主メモリに書き込む、データ転送処理である。
【００２０】
図１に示すように、コンピュータ装置１００は、ＣＰＵ１１と、データ転送用のバス２４と、入出力コントローラ（ＩＯＣ：In/Out Controller）２１と、外部との通信を行うためのホストチャネルアダプタ（ＨＣＡ：Host Channel Adapter）２５とを備えている。
【００２１】
このうち、入出力コントローラ２１は、バス２４に接続された機器とＣＰＵ１１との間の入出力を制御する。ＨＣＡ２５は、バス２４に接続され、更に、光ファイバーケーブル３００を介して、拡張記憶装置として機能するコンピュータ装置２００のＨＣＡ２５に接続される。
【００２２】
また、コンピュータ装置１００において、ＣＰＵ１１は、ＨＣＡ２５を用いたデータ転送を行なう場合に、そのデータ転送の起動を、ＩＯＣ２１に対して指示し、ＩＯＣ２１を介して、ＨＣＡ２５にデータ転送を開始させる。具体的には、ＣＰＵ１１は、ＩＯＣ２１に対し、ＲＤＭＡ起動命令を送信する。
【００２３】
このように、コンピュータ装置１００では、ＣＰＵ１１がＩＯＣ２１に対して指示を行なうことにより、ＨＣＡ２５によるデータ転送が開始され、ＣＰＵ１１は、後述するＨＣＡ制御プロセッサ２２に対してデータ転送を指示しなくても良い。このため、ＣＰＵ１１がデータ転送を指示してからＨＣＡ２５がデータ転送を開始するまでの時間が短縮されるので、ＨＣＡ２５を用いたデータ転送の遅延（レイテンシ）が抑制される。
【００２４】
ここで、コンピュータ装置１００の構成について更に具体的に説明する。まず、図１に示すように、本実施の形態１では、バス２４、ＩＯＣ２１、及びＨＣＡ２５は、ＣＰＵ１１が実装された基板とは別の基板に実装されている。具体的には、コンピュータ装置１００は、ＣＰＵ用の基板（以下「ＣＰＵボード」と表記する。）１０と、Ｉ／Ｏ用の基板（以下「Ｉ／Ｏボード」と表記する。）２０とを備えている。
【００２５】
そして、コンピュータ装置１００は、ＣＰＵボード１０上に、上述したＣＰＵ１１に加え、主メモリ１２と、メモリ制御部１３と、Ｉ／Ｏ制御部１４とを備えている。また、コンピュータ装置１００は、Ｉ／Ｏボード２０上に、上述したＩＯＣ２１、バス２４、及びＨＣＡ２５に加えて、ＨＣＡ制御プロセッサ２２と、ＨＣＡ制御用ローカルメモリ２３とを備えている。
【００２６】
また、本実施の形態１において、ＣＰＵ１１と主メモリ１２は、一般的なコンピュータで用いられているＣＰＵおよび主メモリと同様のものである。更に、ＣＰＵ１１は、複数個備えられていても良い。メモリ制御部１３は、ＣＰＵ１１及びＩ／Ｏ制御部１４からの要求に従い、主メモリ１２に対する書き込み、及び主メモリ１２からの読み出しを実行する。
【００２７】
Ｉ／Ｏ制御部１４は、ＣＰＵボード１０をＩ／Ｏボード２０に接続するためのユニットであり、ケーブルを介して、ＩＯＣ２１に接続されている。また、Ｉ／Ｏ制御部１４は、Ｉ／Ｏボード２０から要求されるトランザクションと、Ｉ／Ｏボード２０に要求するトランザクションとを制御する。
【００２８】
バス２４は、本実施の形態１では、一般的な「ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｗｉｔｃｈ（ＰＣＩ−ＳＷ）」であり、ＰＣＩデバイスを接続可能なスロット２６〜２８を備えている。また、図１においては、バス２４は「ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｗｉｔｃｈ」と表記され、スロット２６〜２８は「ＰＣＩｅスロット」と表記されている。また、以降の説明では、バス２４は「ＰＣＩ−ＳＷ」２４と表記する。
【００２９】
ＩＯＣ２１は、ＣＰＵボード１０に対するＩ／Ｆとして機能し、ＰＣＩ−ＳＷ２４のスロットに接続されたＰＣＩデバイスとＣＰＵ１１との間の入出力を制御する。ＩＯＣ２１は、ＰＣＩ−ＳＷ２４と上述のＩ／Ｏ制御部１４とに加え、ＨＣＡ制御プロセッサ２２と、ＨＣＡ制御用ローカルメモリ２３とにも接続されている。
【００３０】
具体的には、ＩＯＣ２１は、各スロット２６〜２８に接続された各ＰＣＩデバイスからの要求と、ＨＣＡ制御プロセッサ２２からの要求とを受け取り、受け取った要求をＩ／Ｏ制御部１４に送信する。また、ＩＯＣ２１は、反対に、Ｉ／Ｏ制御部１４から要求を受け取った場合は、この要求を、各ＰＣＩデバイス及びＨＣＡ制御プロセッサ２２に送信する。
【００３１】
ＨＣＡ２５は、ＰＣＩ−ＳＷ２４に接続されたＰＣＩデバイスであり、上述したように、光ファイバーケーブル３００を介して、他のコンピュータ装置２００のＨＣＡ２５に接続されている。ＨＣＡ２５は、コンピュータ装置１００における主メモリ１２又はＨＣＡ制御用ローカルメモリ２３と、コンピュータ装置２００における主メモリ１２又はＨＣＡ制御用ローカルメモリ２３のメモリとの間でのデータ転送を実行する。
【００３２】
また、本実施の形態１では、データ転送長が設定値以下（例えば、８Ｋｂｙｔｅ以内）のデータがデータ転送される場合、即ち、同期転送が行なわれる場合に、ＣＰＵ１１は、データ転送の起動を、ＩＯＣ２１に対して指示することができる。これは、ＨＣＡ２５を用いたデータ転送では、データ転送長が設定値以下となるデータ転送の割合が高く、この場合における高速化が最も求められているためである。
【００３３】
更に、本実施の形態では、ＣＰＵ１１は、データ転送の起動を指示する際に、データ転送の実行に必要なパラメータ（以下「データ転送パラメータ」と表記する。）を主メモリ１２に格納する。続いて、ＣＰＵ１１は、起動の指示によって、ＩＯＣ２１に、主メモリ１２からのデータ転送パラメータの読み出しを行わせ、更に、読み出したパラメータをＨＣＡ２５に書き込ませる。これにより、ＨＣＡ２５は、要求されたデータ転送を開始する。
【００３４】
また、本実施の形態１において、データ転送パラメータは、例えば、データ転送がＲＤＭＡライト及びＲＤＭＡリードのいずれであるかを示すコマンド、データ転送元のアドレス、データ転送先のアドレス、データ転送長、及び主メモリ上の終了フラグの書き込み先アドレス等を含むデータである。
【００３５】
［装置動作］
次に、本実施の形態１におけるコンピュータ装置１００が、コンピュータ装置２００に対して、データ転送リクエスト（ＲＤＭＡライトリクエスト又はＲＤＭＡリードリクエスト）を出力した場合の動作について図２を用いて説明する。図２は、本発明の実施の形態１におけるコンピュータ装置の動作を示すタイムチャートである。
【００３６】
また、本実施の形態１では、コンピュータ装置１００を動作させることによって、データ転送方法が実施される。よって、本実施の形態１におけるデータ転送方法の説明は、以下のコンピュータ装置１００の動作説明に代える。また、以下の説明では、適宜図１を参照する。
【００３７】
図２に示すように、最初に、コンピュータ装置１００において、ＣＰＵ１１は、データ転送パラメータを主メモリ１２に格納し（ステップＡ１）、続いて、ＩＯＣ２１に対して、ＲＤＭＡ起動命令を送信する（ステップＡ２）。
【００３８】
次に、ＩＯＣ２１は、ＲＤＭＡ起動命令を受信すると、主メモリ１２から、ステップＡ１で格納されたデータ転送パラメータを読み出し（ステップＡ３）、読み出したデータ転送パラメータをＨＣＡ２５に書き込み、ＤＭＡ転送を起動させる（ステップＡ４）。なお、データ転送パラメータが格納されている主メモリ１２のアドレスは、初期設定時において、ＨＣＡ制御プロセッサ２２から読み出され、ＩＯＣ２１内に予め登録されている。
【００３９】
次に、ステップＡ４によってデータ転送パラメータが書き込まれると、ＨＣＡ２５は、データ転送パラメータに従ったＤＭＡ（Direct Memory Access）転送を実行する（ステップＡ５）。これにより、コンピュータ装置１００の主メモリ１２と、コンピュータ装置２００の主メモリ１２との間で、データ転送が行なわれる。
【００４０】
次に、ＨＣＡ２５は、ステップＡ５によるデータ転送が終了すると、データ転送の終了を示すデータ、即ち、終了フラグ（例えば「０ｘ８０」）を、終了フラグの書き込み先アドレスとして指定されている主メモリ１２上のアドレスに書き込む（ステップＡ６）。
【００４１】
ＣＰＵ１１は、ステップＡ２の実行後から、ステップＡ６によって、主メモリ１２上の終了フラグの書き込み先のアドレスに０ｘ８０等の終了フラグが書き込まれるまで、待機状態となっている。そして、ＣＰＵ１１は、ステップＡ６によって終了フラグの書き込み先アドレスに終了フラグが書き込まれると、それを読み出し、データ転送を終了する（ステップＡ７）。
【００４２】
［従来例の動作］
続いて、図３を用いて、ＣＰＵがＨＣＡ制御プロセッサを介してＨＣＡにデータ転送を実行させる従来例について説明する。図３は、従来からのコンピュータ装置の動作を示すタイムチャートである。なお、図３の動作を実行するコンピュータ装置も、図１に示す本実施の形態１におけるコンピュータ装置１００と同様の構成を備えているため、以下の説明では、図１を参酌する。
【００４３】
最初に、ＣＰＵは、データ転送パラメータを主メモリに格納し（ステップＳ１）、続いて、ＨＣＡ制御プロセッサに対して、ＲＤＭＡ起動命令を送信する（ステップＳ２）。
【００４４】
次に、ＨＣＡ制御プロセッサは、アイドル状態にあり、ＲＤＭＡ起動命令を受信すると、割込処理を実行し、ＲＤＭＡ起動命令をデコードする（ステップＳ３）。続いて、ＨＣＡ制御プロセッサは、ＲＤＭＡ起動命令に従って、主メモリから、ステップＳ１で格納されたデータ転送パラメータを読み出す（ステップＳ４）。
【００４５】
次に、ＨＣＡ制御プロセッサは、ステップＳ４で読み出したデータ転送パラメータをＨＣＡ２５に書き込み、ＤＭＡ転送を起動させる（ステップＳ５）。更に、ステップＳ５では、ＨＣＡ制御プロセッサは、データ転送パラメータにおいて、終了フラグの書き込み先として指定されている主メモリ上のアドレスを、ＨＣＡ制御用ローカルメモリのアドレスに書き換える。なお、データ転送パラメータが格納されている主メモリ１２のアドレスは、ＨＣＡ制御プロセッサ２２内に予め登録されている。
【００４６】
次に、ステップＳ５によってデータ転送パラメータが書き込まれると、ＨＣＡ２５は、データ転送パラメータに従ったＤＭＡ転送を実行する（ステップＳ６）。これにより、コンピュータ装置１００の主メモリ１２と、コンピュータ装置２００の主メモリ１２との間で、データ転送が行なわれる。
【００４７】
次に、ＨＣＡ２５は、ステップＳ６によるデータ転送が終了すると、データ転送の終了を示す終了フラグ（例えば「０ｘ８０」）を、終了フラグの書き込み先アドレスとして書き換えられた、ＨＣＡ制御用ローカルメモリ上のアドレスに書き込む（ステップＳ７）。
【００４８】
ＨＣＡ制御プロセッサは、ステップＳ５の実行後から、ステップＳ７によって、ＨＣＡ制御用ローカルメモリ上の終了フラグの書き込み先のアドレスに終了フラグが書き込まれるまで、待機状態となっている。
【００４９】
そして、ＨＣＡ制御プロセッサは、ステップＳ７によって終了フラグの書き込み先アドレスに終了フラグが書き込まれると、それを読み出す（ステップＳ８）。続いて、ＨＣＡ制御プロセッサは、ＣＰＵが終了フラグの書き込み先のアドレスとして指定する、主メモリ上のアドレスに、終了フラグを書き込み（ステップＳ９）、処理を終了する。
【００５０】
また、ＣＰＵは、ステップＳ２の実行後から、ステップＳ９によって、主メモリ１２上の終了フラグの書き込み先のアドレスに終了フラグが書き込まれるまで、待機状態となっている。そして、ＣＰＵは、ステップＳ９によって終了フラグの書き込み先アドレスに終了フラグが書き込まれると、それを読み出し（ステップＳ１０）、データ転送を終了する。
【００５１】
［実施の形態１における効果］
以上、図３に示すＨＣＡ制御プロセッサによってＨＣＡのデータ転送を起動する場合は、図２に示すＩＯＣによってＨＣＡのデータ転送を起動する場合に比べて、処理が複雑化し、ＣＰＵの指示からＨＣＡがデータ転送を開始するまでの時間の短縮化が困難となる。
【００５２】
図２に示す本実施の形態１の場合が、図３に示す従来の場合に比べて、処理が複雑化しないのは、ＩＯＣは、ＨＣＡ制御プロセッサと異なり、プログラミングが必要のないコントローラ（非プロセッサ）だからである。つまり、ＩＯＣは、ＦＰＧＡでＩ／Ｏボード２０に実装されたハードウェアであり、ファームウェア又は組み込みソフトウェアを用いずに、電子回路だけで高速に処理を行うことができるからである。
【００５３】
従って、本実施の形態１によれば、ＨＣＡ２５を用いたデータ転送の起動にかかる時間を短縮化できる。特に、データ転送長が短いデータを転送する場合においては、データ転送全体にかかる時間に対して、データ転送の起動時間が占める割合が高くなるため、本実施の形態１によれば、データ転送の遅延（レイテンシ）の抑制が可能となる。
【００５４】
なお、本実施の形態１では、データ転送長が設定値を超えている場合は、ＣＰＵは、データ転送の起動命令を、ＨＣＡ制御プロセッサに対して発行し、ＨＣＡ制御プロセッサ２２を介して、ＨＣＡ２５にデータ転送を開始させることもできる。
【００５５】
［プログラム］
また、本実施の形態１におけるプログラムは、コンピュータ装置に、図２に示すステップＡ１〜Ａ７を実行させるプログラムであれば良い。また、本実施の形態１におけるプログラムは、例えば、コンピュータのオペレーティングシステムを構成するモジュールであっても良い。そして、本実施の形態１におけるプログラムは、主メモリに展開された後、ＣＰＵによって所定の順序で実行され、これにより、本実施の形態１におけるコンピュータ装置とデータ転送方法とが実現される。
【００５６】
更に、本実施の形態１におけるプログラムは、コンピュータ読み取り可能な記録媒体に格納された状態で提供されても良いし、インターネット等のネットワーク経由で提供されても良い。前者の場合、記録媒体の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【００５７】
（実施の形態２）
次に、本発明の実施の形態２における、コンピュータ装置、データ転送方法、及びプログラムについて、図４を参照しながら説明する。
【００５８】
本実施の形態２におけるコンピュータ装置の構成は、実施の形態１において図１に示したコンピュータ装置１００及び２００と同様であるが、本実施の形態２は、ＣＰＵ及びＩＯＣにおける処理の点で、実施の形態１と異なっている。以下、実施の形態１との相違点について説明する。なお、以降の説明では、図１を参酌する。
【００５９】
まず、本実施の形態におけるコンピュータ装置では、主メモリ１２はＣＰＵボード１０上に存在するため、ＨＣＡ２５又はＩＯＣ２１が主メモリ１２のデータをリードするよりも、ＣＰＵ１１が主メモリ１２のデータをリードする方が、高速にデータを読み出すことができる。従って、ＨＣＡ２５が主メモリ１２にアクセスする回数を削減すれば、データ転送速度の向上を実現できる。
【００６０】
従って、本実施の形態２では、データ転送コマンドがＲＤＭＡライトであり、且つ、データ転送長が短い場合に、ＣＰＵ１１は、主メモリ１２から予め転送対象となるデータ（転送データ）を読み出し、これをデータ転送パラメータに付随させる。そして、ＣＰＵ１１は、ＩＯＣ１２に、データ転送パラメータと転送データとを、主メモリ１２から１回のリードによって読み出させ、これらをＨＣＡに受け渡させる。
【００６１】
具体的には、データ転送パラメータは、３２バイト程度のデータ構造であるが、ＩＯＣ２１は、１回のリードリクエストにおいて、６４バイトのデータを読み出すことができる。よって、ＩＯＣ２１は、３２バイトのデータ転送パラメータをリードする際に、同時に３２バイトの転送データもリードして、ＨＣＡ２５に対して、データ転送パラメータと転送データとを書き込むことができる。
【００６２】
そして、この結果、ＨＣＡ２５による主メモリ１２のデータリードが不要となり、ＨＣＡ２５は、データ転送パラメータに格納されたデータを、相手方のＨＣＡ２５に転送するだけで良いため、本実施の形態２によれば、データ転送の速度がいっそう向上する。
【００６３】
以下、図４を用いて、実施の形態１との相違点を説明する。図４は、本発明の実施の形態２におけるコンピュータ装置の動作を示すタイムチャートである。また、以下の説明では、実施の形態１と同様に、コンピュータ装置２００が、コンピュータ装置１００の拡張記憶装置として機能するものとする。
【００６４】
最初に、ＣＰＵ１１は、データ転送コマンドがＲＤＭＡライトであり、且つ、データ転送長が短い（例えば、３２ｂｙｔｅ以内）場合に該当するかどうかを判断する。そして、図４に示すように、該当する場合は、ＣＰＵ１１は、主メモリ１２からの転送データの読み出しを実行する（ステップＢ１）。
【００６５】
次に、ＣＰＵ１１は、データ転送パラメータを主メモリ１２に格納し（ステップＢ２）、更に、ステップＢ１で読み出した転送データを、データ転送パラメータに付随させる（ステップＢ３）。更に、ＣＰＵ１１は、ＩＯＣ２１に対して、ＲＤＭＡ起動命令を送信する（ステップＢ４）。
【００６６】
次に、ＩＯＣ２１は、ＲＤＭＡ起動命令を受信すると、主メモリ１２から、ステップＢ２で格納されたデータ転送パラメータと、ステップＢ３で格納された転送データとを読み出し（ステップＢ５）、これらをＨＣＡ２５に書き込み、ＤＭＡ転送を起動させる（ステップＢ６）。このように、ステップＢ５及びＢ６が実行されると、ＩＯＣ２１により、データ転送パラメータと転送データとは、１回のリード（６４バイト）で全て読み出され、ＨＣＡ２５に書き込まれる。
【００６７】
次に、ステップＢ６によってデータ転送パラメータ及び転送データが書き込まれると、ＨＣＡ２５は、データ転送パラメータに従ったＤＭＡ（Direct Memory Access）転送を実行する（ステップＢ７）。そして、ＲＤＭＡライトが実行されているので、コンピュータ装置１００のＨＣＡ２５に書き込まれた転送データは、コンピュータ装置２００の主メモリ１２に、そのＨＣＡ２５を経由して書き込まれる。
【００６８】
次に、ＨＣＡ２５は、ステップＢ７によるデータ転送が終了すると、データ転送の終了を示す終了フラグ（例えば「０ｘ８０」）を、終了フラグの書き込み先アドレスとして指定されている主メモリ１２上のアドレスに書き込む（ステップＢ８）。
【００６９】
ＣＰＵ１１は、ステップＢ４の実行後から、ステップＢ８によって、主メモリ１２上の終了フラグの書き込み先のアドレスに０ｘ８０等の終了フラグが書き込まれるまで、待機状態となっている。そして、ＣＰＵ１１は、ステップＢ８によって終了フラグの書き込み先アドレスに終了フラグが書き込まれると、それを読み出し、データ転送を終了する（ステップＢ９）。
【００７０】
［実施の形態２における効果］
以上、図４に示すように、本実施の形態２では、ＣＰＵ１１は、予め転送データをリードして、データ転送パラメータと転送データとで構成された６４バイトデータを用意する。そして、ＩＯＣ１２は、データ転送パラメータ（３２バイト）と転送データ（３２バイト）とを１回でリードし、これらのデータ（６４バイト）をＨＣＡ２５にライトする。このため、ＨＣＡ２５は、ライトされた３２バイトの転送データを相手側の主メモリ１２に書き込むだけで良く、ＨＣＡ２５によるデータ転送時のリード動作が削減される。結果、本実施の形態２によれば、データ転送速度のいっそうの高速化が図られる。
【００７１】
［プログラム］
また、本実施の形態２におけるプログラムは、コンピュータ装置に、図４に示すステップＢ１〜Ｂ９を実行させるプログラムであれば良い。また、本実施の形態２におけるプログラムは、例えば、コンピュータのオペレーティングシステムを構成するモジュールであっても良い。そして、本実施の形態２におけるプログラムは、主メモリに展開された後、ＣＰＵによって所定の順序で実行され、これにより、本実施の形態２におけるコンピュータ装置とデータ転送方法とが実現される。
【００７２】
また、本実施の形態２におけるプログラムも、実施の形態１と同様に、コンピュータ読み取り可能な記録媒体に格納された状態で提供されても良いし、インターネット等のネットワーク経由で提供されても良い。記録媒体の具体例としては、実施の形態１で述べたものが挙げられる。
【００７３】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１５）によって表現することができるが、以下の記載に限定されるものではない。
【００７４】
（付記１）
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備え、
前記ＣＰＵは、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、
ことを特徴とするコンピュータ装置。
【００７５】
（付記２）
前記ＣＰＵは、データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、前記データ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、付記１に記載のコンピュータ装置。
【００７６】
（付記３）
前記データ転送の実行に必要なパラメータを格納する記憶装置を更に備え、
前記ＣＰＵが、前記起動の指示によって、前記入出力コントローラに、前記記憶装置からの前記パラメータの読み出しを行わせ、更に、読み出した前記パラメータを前記ホストチャネルアダプタに書き込ませ、前記ホストチャネルアダプタに前記データ転送を開始させる、
付記１または２に記載のコンピュータ装置。
【００７７】
（付記４）
前記ＣＰＵは、
前記ホストチャネルアダプタを用いたデータ転送を実行する場合に、前記記憶装置に格納されている前記パラメータに、転送対象となるデータを付随させ、
前記起動の指示によって、前記入出力コントローラに、前記記憶装置から、前記パラメータと共に前記転送対象となるデータの読み出しを行わせ、読み出した前記パラメータ及び前記転送対象となるデータを前記ホストチャネルアダプタに書き込ませる、
付記３に記載のコンピュータ装置。
【００７８】
（付記５）
前記バス、前記入出力コントローラ及び前記ホストチャネルアダプタが、前記ＣＰＵが実装された基板とは別の基板に実装されている、付記１〜４のいずれかに記載のコンピュータ装置。
【００７９】
（付記６）
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置を用いたデータ転送方法であって、
（ａ）前記ＣＰＵによって、前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを有する、
ことを特徴とするデータ転送方法。
【００８０】
（付記７）
前記（ａ）のステップが、データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、実行される、付記６に記載のデータ転送方法。
【００８１】
（付記８）
前記コンピュータ装置が、前記データ転送の実行に必要なパラメータを格納する記憶装置を更に備えており、
前記（ａ）のステップにおいて、前記起動の指示によって、前記入出力コントローラに、前記記憶装置からの前記パラメータの読み出しを行わせ、更に、読み出した前記パラメータを前記ホストチャネルアダプタに書き込ませ、前記ホストチャネルアダプタに前記データ転送を開始させる、
付記６または７に記載のデータ転送方法。
【００８２】
（付記９）
（ｂ）前記ホストチャネルアダプタを用いたデータ転送を実行する場合に、前記ＣＰＵによって、前記記憶装置に格納されている前記パラメータに、転送対象となるデータを付随させる、ステップを更に有し、
前記（ａ）のステップにおいて、前記起動の指示によって、前記入出力コントローラに、前記記憶装置から、前記パラメータと共に前記転送対象となるデータの読み出しを行わせ、読み出した前記パラメータ及び前記転送対象となるデータを前記ホストチャネルアダプタに書き込ませる、
付記８に記載のデータ転送方法。
【００８３】
（付記１０）
前記バス、前記入出力コントローラ及び前記ホストチャネルアダプタが、前記ＣＰＵが実装された基板とは別の基板に実装されている、付記６〜９のいずれかに記載のデータ転送方法。
【００８４】
（付記１１）
ＣＰＵと、データ転送用のバスと、前記バスに接続された機器と前記ＣＰＵとの間の入出力を制御する入出力コントローラと、前記バスに接続され、且つ外部と通信を行うためのホストチャネルアダプタとを備えた、コンピュータ装置によって、データ転送方法を行うためのプログラムであって、
（ａ）前記ホストチャネルアダプタを用いたデータ転送の起動を、前記入出力コントローラに対して指示し、前記入出力コントローラを介して、前記ホストチャネルアダプタに前記データ転送を開始させる、ステップを、前記ＣＰＵに実行させる、
プログラム。
【００８５】
（付記１２）
前記（ａ）のステップが、データ転送長が設定値以下のデータを、前記ホストチャネルアダプタを用いてデータ転送する場合に、実行される、付記１１に記載のプログラム。
【００８６】
（付記１３）
前記コンピュータ装置が、前記データ転送の実行に必要なパラメータを格納する記憶装置を更に備えており、
前記（ａ）のステップにおいて、前記起動の指示によって、前記入出力コントローラに、前記記憶装置からの前記パラメータの読み出しを行わせ、更に、読み出した前記パラメータを前記ホストチャネルアダプタに書き込ませ、前記ホストチャネルアダプタに前記データ転送を開始させる、
付記１１または１２に記載のプログラム。
【００８７】
（付記１４）
（ｂ）前記ホストチャネルアダプタを用いたデータ転送を実行する場合に、前記ＣＰＵによって、前記記憶装置に格納されている前記パラメータに、転送対象となるデータを付随させる、ステップを、更に前記ＣＰＵに実行させ、
前記（ａ）のステップにおいて、前記起動の指示によって、前記入出力コントローラに、前記記憶装置から、前記パラメータと共に前記転送対象となるデータの読み出しを行わせ、読み出した前記パラメータ及び前記転送対象となるデータを前記ホストチャネルアダプタに書き込ませる、
付記１３に記載のプログラム。
【００８８】
（付記１５）
前記バス、前記入出力コントローラ及び前記ホストチャネルアダプタが、前記ＣＰＵが実装された基板とは別の基板に実装されている、付記１１〜１４のいずれかに記載のプログラム。
【産業上の利用可能性】
【００８９】
以上のように、本発明によれば、ホストチャネルアダプタを用いたデータ転送を行なう場合において、その開始までの時間を短縮化して、データ転送の遅延を抑制できる。本発明は、ホストコンピュータのホストチャネルアダプタ同士を光ファイバーケーブルによって接続して、ＲＤＭＡ転送を行なう場合に有用である。
【符号の説明】
【００９０】
１０  ＣＰＵボード
１１  ＣＰＵ
１２  主メモリ
１３  メモリ制御部
１４  Ｉ／Ｏ制御部
２０  Ｉ／Ｏボード
２１  入出力コントローラ（ＩＯＣ）
２２  ＨＣＡ制御プロセッサ
２３  ＨＣＡ制御用ローカルメモリ
２４  バス（ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｗｉｔｃｈ）
２５  ホストチャネルアダプタ（ＨＣＡ）
２６〜２８  スロット（ＰＣＩｅスロット）
１００  コンピュータ装置
２００  コンピュータ装置
３００  光ファイバーケーブル
【図２】
0005541544.tif 000002
【図３】
0005541544.tif 000003
【図４】
0005541544.tif 000004
【図１】
0005541544.tif 000005