(57)【要約】【課題】  アドレスを指定してデータの読み書きが行われるメモリデバイスとコンピュータとの間でのデータ転送のオーバーヘッドを低減する。【解決手段】  擬似Ｉ／Ｏ装置が、コンピュータからのコマンドを受け取るターゲット用デバイスドライバ手段と、メモリデバイスにコマンドを送るイニシエータ用デバイスドライバ手段と、コンピュータとメモリデバイスとの間のデータ転送のために、ターゲット用デバイスドライバ手段とイニシエータ用デバイスドライバ手段とによって共用されるデータ格納手段とを備える。【選択図】図１
2005250988.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータとメモリデバイスとの間でデータ転送を行う擬似Ｉ／Ｏ装置であって、
前記コンピュータからのコマンドを受け取るターゲット用デバイスドライバ手段と、
メモリデバイスにコマンドを送るイニシエータ用デバイスドライバ手段と、
前記コンピュータとメモリデバイスとの間のデータ転送のために、前記ターゲット用デバイスドライバ手段と前記イニシエータ用デバイスドライバ手段とによって共用されるデータ格納手段とを備えることを特徴とする擬似Ｉ／Ｏ装置。
【請求項２】
前記共用されるデータ格納手段が、前記ターゲット用デバイスドライバ手段側、または、前記イニシエータ用デバイスドライバ手段側に備えられることを特徴とする請求項１記載の擬似Ｉ／Ｏ装置。
【請求項３】
前記コンピュータに備えられるテストプログラムに対応して実際の入出力装置の動作を擬似する擬似入出力手段をさらに備えることを特徴とする請求項１または２記載の擬似Ｉ／Ｏ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータからのコマンドを受け取るターゲットドライバと、メモリデバイスに対してコマンドを送るイニシエータドライバの間で、データ転送用のバッファを共用してデータ転送を行う擬似Ｉ／Ｏ装置に関する。
【背景技術】
【０００２】
本発明は入出力装置の動作を必要とするプログラムのテストのために、実際の入出力装置の代わりに入出力装置を擬似する擬似Ｉ／Ｏ装置によるデータ転送を説明するため、そのような擬似Ｉ／Ｏ装置についてまず説明する。
【０００３】
図８は、そのような擬似Ｉ／Ｏ装置を用いるデータ転送システムの従来例の基本的な構成ブロック図である。同図においてデータ入出力のコマンドを発行するイニシエータ装置としてのコンピュータであるホスト５０（実体はパソコンやサーバ）と、データファイル５２との間に擬似Ｉ／Ｏ装置５１（実体はパソコンやサーバ）が接続されている。この擬似Ｉ／Ｏ装置５１には、ホスト５０側のテストプログラム５４から送られるコマンドに対応して、Ｉ／Ｏ装置の動作を擬似するＰＩＯプロセス５５が備えられ、このプロセス５５によって実際のＩ／Ｏ装置の動作が擬似され、テストプログラム５４のテストが実行される。
【０００４】
このような擬似Ｉ／Ｏ装置においては、ホスト５０との間のバスに接続されるアダプタとＰＩＯプロセス５５との間に、プロセスレベルで実際のＩ／Ｏ装置と同じ動作をさせながら各種試験を実現するためのデバイスドライバが設けられることがある。
【０００５】
このようなデバイスドライバや擬似Ｉ／Ｏ装置については、次のような文献がある。
【特許文献１】特開２００３−４４３６９号公報  「擬似Ｉ／Ｏシステムおよび擬似Ｉ／Ｏ方法」
【特許文献２】特開２００３−４４４２０公報  「デバイスドライバ装置」
【特許文献３】特開２００３−１６７８３６公報  「デバイスドライバ」
【０００６】
特許文献１には、ＰＩＯプロセスに対して設定ファイルが設けられ、その設定ファイルの内容を変更するだけで多種多様なＩ／Ｏ装置を擬似すると共に、実際の運用上と同じ動作をさせながらテストを行うことができるシステムが開示されている。
【０００７】
特許文献２には、前述のように擬似Ｉ／Ｏ装置の内部にデバイスドライバを設け、プロセスレベルで各種の試験を実現するデバイスドライバ装置が開示されている。このデバイスドライバは、図８ではコマンドを発行するイニシエータ装置としてのホスト５０からのコマンドを受け取るターゲットの役割を果たすものであり、その意味でターゲットドライバと呼ばれる。
【０００８】
特許文献３には、アプリケーションプロセスからの要求に応じて、ＳＣＳＩデバイスなどのハードウェアに対してコマンドを発行し、ハードウェアに対してエラー状態を含めた所望の状態を設定可能とするデバイスドライバが開示されている。このデバイスドライバは、前述のターゲットドライバと異なり、ハードウェアに対してコマンドを発行するものであり、イニシエータ機能を有するためにイニシエータドライバと呼ばれる。
【０００９】
図８で説明した擬似Ｉ／Ｏ装置５１を含むシステムでは、データファイル５２は、一般的なファイルシステムであり、アドレスを直接指定してデータの読み書きを行うメモリデバイスに比較して、アクセスのオーバーヘッドが大きい。そのため、アクセスのオーバーヘッドを減少させるには、擬似Ｉ／Ｏ装置５１側にアドレスを指定してデータのリード／ライトのコマンドを発行するイニシエータ機能を有するデバイスドライバが必要となるが、従来においては擬似Ｉ／Ｏ装置の内部に前述のターゲットドライバに加えて、イニシエータドライバを備える技術が提供されていなかった。
【００１０】
しかし、このように擬似Ｉ／Ｏ装置の内部にターゲットドライバ、ＰＩＯプロセス、およびイニシエータドライバを備えて、ホストとメモリデバイスとの間でデータの転送を行う場合（図７参照）には、擬似Ｉ／Ｏ装置の内部でターゲットドライバ、ＰＩＯプロセス、およびイニシエータドライバが持つバッファ間のデータ転送のオーバーヘッドが大きくなることが予想される問題点があった。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の課題は、擬似Ｉ／Ｏ装置に対してメモリデバイス、例えば大容量のディスク装置を接続し、そのディスク装置に対してデータのリード／ライトのコマンドを送るイニシエータの部分を設けた場合に、そのイニシエータ用ドライバとホストからのコマンドを受け取るターゲット用ドライバとの間でバッファを共用することにより、データ転送のオーバーヘッドを減少させることである。
【課題を解決するための手段】
【００１２】
図１は本発明の擬似Ｉ／Ｏ装置、および擬似Ｉ／Ｏシステムの原理構成ブロック図である。同図は、擬似Ｉ／Ｏ装置１とコンピュータ２、およびメモリデバイス３とによって構成される擬似Ｉ／Ｏシステムの構成を示し、擬似Ｉ／Ｏ装置１は、ターゲット用デバイスドライバ手段４、イニシエータ用デバイスドライバ手段５、およびデータ格納手段６を備える。
【００１３】
ターゲット用デバイスドライバ手段４は、コンピュータ２からメモリデバイス３、例えば大容量ディスク装置へのデータリード、またはライトのコマンドを受け取るものであり、例えばターゲットアダプタと３層のドライバとしてのロワードライバ、ミドルドライバ、およびアッパードライバによって構成される。
【００１４】
イニシエータ用デバイスドライバ手段５は、メモリデバイス３にデータのリード、またはライトのコマンドを送るものであり、３層のドライバ、すなわちロワードライバ、ミドルドライバ、およびアッパードライバとイニシエータアダプタによって構成される。
【００１５】
データ格納手段６は、例えばバッファであり、データ転送のためにターゲット用デバイスドライバ手段４とイニシエータ用デバイスドライバとによって共用されるものであり、例えばターゲット用デバイスドライバ手段４側に備えられる。あるいはイニシエータ用デバイスドライバ手段５側に備えられることもできる。
【００１６】
発明の実施の形態においては、擬似Ｉ／Ｏ装置１は、コンピュータ２側のテストプログラムに対応して、実際の入出力装置の動作を擬似する擬似入出力手段をさらに備えることもできる。以上のように本発明によればターゲット用デバイスドライバ手段４とイニシエータ用デバイスドライバ手段５とによってデータ転送用のバッファが共用され、例えばコンピュータ２からこのバッファを介してメモリデバイス３にデータの転送が行われる。
【発明の効果】
【００１７】
本発明によれば、コンピュータからのコマンドを受け取るターゲット用デバイスドライバと、例えば大型ディスク装置にコマンドを送るイニシエータ用デバイスドライバの間でデータ転送用のバッファを共用することによって、データ転送のオーバーヘッドを減少させ、データの転送効率を向上させることができる。
【発明を実施するための最良の形態】
【００１８】
図２は、本発明の擬似Ｉ／Ｏ（データ転送）システムの全体構成ブロック図である。同図においてシステムは、本実施形態においてデータ転送を行うための装置としての、例えば擬似Ｉ／Ｏ装置１０、擬似Ｉ／Ｏ装置１０に対してコマンドを発行するホストとしてのイニシエータ１１、ホスト１１との間でデータの書込み、および読み出しが行われるディスク装置１２、および擬似Ｉ／Ｏ装置１０に接続されたデータファイル１３を備えている。なお、データファイル１３は図８のデータファイル５２に相当するファイルシステムであるが、ディスク装置１２はアドレスを指定してデータを読み書きできるメモリデバイスである。
【００１９】
図２においてホスト１１は、例えばテストプログラム２７を備えており、このホスト１１は擬似Ｉ／Ｏ装置１０のユーザスペースに備えられているＰＩＯプロセス２０を用いて、例えばデータファイル１３のテストに対応するテストプログラムを実行することができる。その意味で装置１０を擬似Ｉ／Ｏ装置と呼ぶ。
【００２０】
図２においてホスト１１は、バス１５を介して擬似Ｉ／Ｏ装置１０に対してコマンドを発行する。このコマンドは装置１０のカーネルスペースに備えられるターゲットアダプタ（Ｔｇｔ−Ａｄａｐｔｏｒ）２１によって受け取られる。そしてそのコマンドに対応して、３層のドライバ２２によって、例えばデバイスとしてのデータファイル１３のドライブが行われることになる。その意味でターゲットアダプタ２１とドライバ２２とは、ホストとしてのイニシエータ１１からコマンドを受け取るターゲットの役割を果たすものである。なおドライバ２２は、アダプタ制御のためのロワードライバ、ＳＣＳＩ共通部としてのミドルドライバ、およびプロセス制御のためのアッパードライバの３層からなるものとする。
【００２１】
本実施形態では、擬似Ｉ／Ｏ装置１０のカーネルスペースに、アダプタ２１、ドライバ２２と異なるイニシエータアダプタ（Ｉｎｉ−Ａｄａｐｔｏｒ）２５とドライバ２６が備えられている。これらのアダプタ、およびドライバはバス１６によって接続されているディスク装置１２に対して、例えばデータのリード、あるいはライトなどのコマンドを発行するものであり、その意味ではこれらもイニシエータの役割を果たすものである。すなわちホスト１１側から送られるデータのリード、あるいはライトのコマンドは、ターゲット用のアダプタ２１、ドライバ２２によって受け取られ、さらにそれらのコマンドに対応するコマンドがイニシエータ用のドライバ、およびアダプタによってディスク装置１２に送られることによって、ホスト１１とディスク装置１２の間でのデータのリード、またはライトの動作が実行され、ホスト１１とディスク装置１２との間でデータの転送が行われる。
【００２２】
このように擬似Ｉ／Ｏ装置１０に備えられる、バス１６側のアダプタ２５はイニシエータアダプタ、ドライバ２６はイニシエータドライバと考えることができる。その意味で区別が必要な時には、ホスト１１を第１のイニシエータ、イニシエータアダプタ２５とイニシエータドライバ２６とを備えるイニシエータを第２のイニシエータと呼ぶことにする。なおイニシエータドライバ２６もターゲットドライバ２２と同様に３層の構成となっている。
【００２３】
図３は本実施形態におけるデータ転送装置、すなわち擬似Ｉ／Ｏ装置１０の内部におけるデータ転送方式の説明図である。図２において、例えば第１のイニシエータとしてのホスト１１側からデータがディスク装置１２に転送される場合には、図３においてそのデータは、ターゲットアダプタ２１を介してＤＭＡ転送され、ＰＩＯプロセス２０からの指示によってターゲットドライバ２２の内部に設けられたバッファ３０に格納される。次にＰＩＯプロセス２０からイニシエータドライバ２６への指示によって、バッファ３０に格納されたデータは、イニシエータアダプタ２５にを介してＤＭＡ転送され、前述の第２のイニシエータからバス１６を介してディスク装置１２に転送されることになる。
【００２４】
これによってターゲットドライバ２２とイニシエータドライバ２６とは、例えばターゲットドライバ２２側に備えられるバッファ３０を共用して、データの転送を行うことになる。図７で後述するように、ターゲットドライバ、イニシエータドライバ、およびＰＩＯプロセス側にそれぞれバッファを設け、例えばホストから送られるデータをターゲットドライバ側のバッファに格納し、ＰＩＯプロセス側のバッファ、イニシエータドライバ側のバッファにデータをコピーしていき、最後にそのデータをディスク装置に転送する場合に比較して高速にデータ転送を行うことができる。
【００２５】
なお図３では、ターゲットドライバ２２とイニシエータドライバ２６によって共用されるバッファ３０をターゲットドライバ側に設けるものとしたが、基本的にはこのバッファはイニシエータドライバ側に備えてもよく、あるいはあらかじめ両方のドライバにバッファを備えておき、例えばデータの書込み、すなわちホスト１１側からデータが送られる場合には、ターゲットドライバ側のバッファを共用し、逆にデータのリード、すなわちディスク装置１２側からデータが送られる場合にはイニシエータ側のバッファを共用することによって、データ転送の制御をより容易にすることも可能である。
【００２６】
図４は、データ出力（Ｄａｔａ  Ｏｕｔ：ＤＯ）、すなわちホスト１１からディスク装置１２へのデータ書込み処理の詳細フローチャートである。同図において処理が開始されると、まずステップＳ１でターゲットアダプタ２１がホスト１１からのデータ出力要求を受信し、その要求がターゲットドライバ２２に通知される。ステップＳ２でターゲットドライバ２２によって受信されたホストからの要求が、ＰＩＯプロセス２０に通知され、ステップＳ３でＰＩＯプロセス２０によって、ホスト１１からのデータ出力要求と識別され、データの受信がｉｏｃｔｌ（ｉｏコントロール関数）でターゲットドライバ２２に指示される。
【００２７】
次にターゲットドライバ２２は、ステップＳ４で図３のようにバッファ３０を確保し、ホスト１１からのデータ受信をターゲットアダプタ２１に指示する。ターゲットアダプタ２１はステップＳ５でホスト１１からデータを受信し、データ受信の終了をターゲットドライバ２２に通知し、ターゲットドライバ２２はステップＳ６で、ＰＩＯプロセス２０側にデータの転送を行うことなく、データ出力終了を通知する。
【００２８】
ＰＩＯプロセス２０はステップＳ７でデータ出力の終了を識別し、デバイス、すなわちディスク装置１２へのデータの書込みをｉｏｃｔｌでイニシエータドライバ２６に指示する。イニシエータドライバ２６は、ステップＳ８でターゲットドライバ２２内に備えられたバッファ３０に関する情報をターゲットドライバ２２から取得し、ステップＳ９でイニシエータアダプタ２５に対してデータの書込みを指示し、イニシエータアダプタ２５はステップＳ１０で指定されたバッファからデバイス、すなわちディスク装置１２にデータを書き込んで処理を終了する。
【００２９】
図５はデータ入力（Ｄａｔａ  Ｉｎ：ＤＩ）、すなわちディスク装置１２からのデータの読み出し処理の詳細フローチャートである。同図において処理が開始されると、ステップＳ１１でターゲットアダプタ２１によってホスト１１からのデータ入力要求が受信され、その要求はターゲットドライバ２２に通知される。ステップＳ１２でその要求は、割り込みによってＰＩＯプロセス２０に通知され、ステップＳ１３でＰＩＯプロセス２０によってデータ入力要求の識別と、イニシエータドライバ２６へのデータ読み取りの指示が行われ、その指示に対応してステップＳ１４でイニシエータドライバ２６からターゲットドライバ２２にバッファの確保が依頼され、ステップＳ１５で確保されたバッファの情報がターゲットドライバ２２からイニシエータドライバ２６に通知され、ステップＳ１６でイニシエータドライバ２６からイニシエータアダプタ２５に対してバッファへのデータの読み込みが指示される。
【００３０】
続いてステップＳ１７でデバイス、すなわちディスク装置１２からデータが読み込まれ、データの終了がイニシエータアダプタ２５からイニシエータドライバ２６に通知され、ステップＳ１８でイニシエータドライバ２６からＰＩＯプロセス２０に対して、データの転送を行うことなく、データの読み込み終了が通知され、ステップＳ１９でＰＩＯプロセス２０によって、バッファ３０からホスト１１へのデータ転送がｉｏｃｔｌでターゲットドライバ２２に指示され、ステップＳ２０でターゲットドライバ２２からターゲットアダプタ２１に対してバッファからホスト１１へのデータ転送が指示され、ステップＳ２１でターゲットアダプタ２１によってバッファ３０からホスト１１へのデータ転送が行われ、処理を終了する。
【００３１】
図６は、本実施形態における転送性能向上効果の説明図である。同図は、図３で説明した転送方式と、図７における転送方式との相違を説明するものである。図７においては、図３と異なり、イニシエータドライバ２６側にもバッファ３１が備えられ、またＰＩＯプロセス２０側にもバッファ３２が備えられ、例えば図２のホスト１１側から出力されたデータは、ターゲットアダプタ２１を介してターゲットドライバ２２内のバッファ３０にＤＭＡ転送され、その内容はＰＩＯプロセス２０側に備えられるバッファ３２にコピーされ、さらにイニシエータドライバ２６側のバッファ３１にその内容がコピーされ、イニシエータアダプタ２５を介してデータがバッファ３１からＤＭＡ転送され、ディスク装置１２に書き込まれる方式でデータ転送が行われる。
【００３２】
図６においては、例えば２２ＭＢ／ｓｅｃ程度のデータ転送性能を持つファイルシステムが用いられ、図３と図７の方式におけるデータ転送レートが比較されている。同図において横軸はデータサイズであり、縦軸は図７の方式の転送レートを１００％としたときの図３の方式の転送レート、すなわち転送レートの向上率がシーケンシャルリード（白棒）とシーケンシャルライト（黒棒）の場合に対して示されている。
【００３３】
図６の結果によると１２８Ｋｂｙｔｅ以上のデータサイズの転送の場合には、図３の方式を用いることにより、図７の方式に比べてほぼ２５％程度の性能向上が実現されることがわかる。この性能向上は、例えばイニシエータドライバ２６側とＰＩＯプロセス２０側でのバッファの確保処理、およびユーザ空間とカーネル空間の間でのデータのコピー処理によるオーバーヘッドがなくなったことによるものと考えられる。
【００３４】
なお、図７の転送方式を用いる場合には、図４と図５のフローチャートの処理の一部が異なってくる。まず図４ではステップＳ６で実際にＰＩＯプロセス側のバッファにデータが転送（コピー）された後にデータ出力終了が通知され、ステップＳ８ではＰＩＯプロセス側のバッファからイニシエータドライバ側のバッファへのデータ転送が行われる。
【００３５】
図５では、ステップＳ１４の処理は不要となり、ステップＳ１５でイニシエータドライバ自身がバッファを確保することになる。ステップＳ１８では、ＰＩＯプロセス側へのデータ転送とデータ出力終了通知がなされ、ステップＳ２０ではターゲットドライバ自身によってバッファが確保され、ＰＩＯプロセス側のバッファからのデータ転送が行われる。
【００３６】
（付記１）
コンピュータとメモリデバイスとの間でデータ転送を行う擬似Ｉ／Ｏ装置であって、
前記コンピュータからのコマンドを受け取るターゲット用デバイスドライバ手段と、
メモリデバイスにコマンドを送るイニシエータ用デバイスドライバ手段と、
前記コンピュータとメモリデバイスとの間のデータ転送のために、該前記ターゲット用デバイスドライバ手段と前記イニシエータ用デバイスドライバ手段とによって共用されるデータ格納手段とを備えることを特徴とする擬似Ｉ／Ｏ装置。
【００３７】
（付記２）
前記共用されるデータ格納手段が、前記ターゲット用デバイスドライバ手段側、または、前記イニシエータ用デバイスドライバ手段側に備えられることを特徴とする付記１記載の擬似Ｉ／Ｏ装置。
【００３８】
（付記３）
前記コンピュータに備えられるテストプログラムに対応して実際の入出力装置の動作を擬似する擬似入出力手段をさらに備えることを特徴とする付記１または２記載の擬似Ｉ／Ｏ装置。
【００３９】
（付記４）
データを格納するメモリデバイスと、
前記メモリデバイスに対するデータ入出力のコマンドを発行するコンピュータと、
前記メモリデバイスと前記コンピュータとの間に備えられ、前記コンピュータからのコマンドを受け取るターゲット用デバイスドライバ手段と、メモリデバイスにコマンドを送るイニシエータ用デバイスドライバ手段と、前記コンピュータと前記メモリデバイスとの間のデータ転送のために該ターゲット用デバイスドライバ手段と該イニシエータ用デバイスドライバ手段とによって共用されるデータ格納手段とを備える擬似Ｉ／Ｏ装置とによって構成されることを特徴とする擬似Ｉ／Ｏシステム。
【産業上の利用可能性】
【００４０】
本発明の擬似Ｉ／Ｏ装置は、例えばＳＣＳＩデバイスを用いるコンピュータシステムに応用可能であり、そのようなコンピュータシステムを使用するすべての産業において利用可能である。
【図面の簡単な説明】
【００４１】
【図１】本発明の擬似Ｉ／Ｏシステムの原理構成ブロック図である。
【図２】本実施形態における擬似Ｉ／Ｏシステムの構成を示すブロック図である。
【図３】本実施形態におけるデータ転送方式の説明図である。
【図４】ホストからのデータ出力処理の詳細フローチャートである。
【図５】ホストへのデータ入力処理の詳細フローチャートである。
【図６】本実施形態におけるデータ転送レート向上効果の説明図である。
【図７】ターゲットドライバとイニシエータドライバとがそれぞれバッファを備える場合のデータ転送方式の説明図である。
【図８】擬似Ｉ／Ｏ装置を用いるデータ転送システムの従来例を示す図である。
【符号の説明】
【００４２】
１      擬似Ｉ／Ｏ装置
２      コンピュータ
３      メモリデバイス
４      ターゲット用デバイスドライバ手段
５      イニシエータ用デバイスドライバ手段
６      データ格納手段
１０      擬似Ｉ／Ｏ装置
１１      イニシエータ（ホスト）
１２      ディスク装置
１３      データファイル
１５、１６      バス
２０      ＰＩＯプロセス
２１      ターゲットアダプタ
２２      ターゲットドライバ
２５      イニシエータアダプタ
２６      イニシエータドライバ
２７      テストプログラム
３０、３１、３２      バッファ
【図１】
2005250988.tif 000003
【図２】
2005250988.tif 000004
【図３】
2005250988.tif 000005
【図４】
2005250988.tif 000006
【図５】
2005250988.tif 000007
【図６】
2005250988.tif 000008
【図７】
2005250988.tif 000009
【図８】
2005250988.tif 000010