(57)【要約】【課題】システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、アダプタはシステムホストに応答することができる、データ転送システムを提供する。【解決手段】システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムにおいて、アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、ローカルデバイスが抜去された場合、システムホストからローカルデバイスへのコマンドは、アダプタが応答するように切り替わる。【選択図】図２
2019028513.tif 000002
【特許請求の範囲】
【請求項１】
システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記ローカルデバイスが抜去された場合、前記システムホストから前記ローカルデバイスへのコマンドは、前記アダプタが応答するように切り替わる、
データ転送システム。
【請求項２】
請求項１に記載のデータ転送システムであって、
前記高機能スイッチ部は、更に、
前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部と、
前記挿抜検出部の検出情報に基づいて、前記システムホストからのコマンドに対する応答を前記アダプタが行うのか、若しくはローカルデバイスが行うのか、の切替を行うコマンド応答切替部と、
前記システムホストがアダプタの初期化を行う際に前記アダプタが受信した及び応答したコマンドを保持する初期化コマンド保持部と、
前記初期化コマンド保持部が保持するコマンドに基づいて、ローカルデバイスを初期化するローカルデバイス初期化部と
を備え、
前記アダプタは、
前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化コマンド保持部に前記システムホストから前記アダプタが受信した及び応答したコマンドを保持し、
前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行い、
前記挿抜検出部がローカルデバイスの抜去を検出すると、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答を前記アダプタが行うように切替を行う、
データ転送システム。
【請求項３】
請求項２に記載のデータ転送システムであって、
前記高機能スイッチ部は、更に、
前記システムホストが前記アダプタの初期化を行う際に、前記アダプタのレジスタに設定されていたレジスタ値を保持する初期化時レジスタ保持部を備え、
前記アダプタは、
前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化時レジスタ保持部に前記システムホストから前記アダプタの前記レジスタに設定されたレジスタ値を保持し、
前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化時レジスタ保持部内に保持されているレジスタ値と、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行う、
データ転送システム。
【請求項４】
請求項１に記載のデータ転送システムであって、
前記高機能スイッチ部は、更に、
前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部を備え、
前記システムホストは、更に、
前記挿抜検出部からの検出情報に基づいてローカルデバイスの挿抜の状況を確認する挿抜確認部と、
前記挿抜確認部の確認情報に基づいて、前記アダプタの制御を行うデバイスドライバのリロードを行うドライバリロード部と
を備え、
前記システムホストは、
前記システムホストへの電源投入後、デバイスドライバのロードを行い、ロードされたデバイスドライバにより、前記アダプタを初期化し、
前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、挿入されたローカルデバイスを初期化し、
前記挿抜確認部がローカルデバイスの抜去を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記アダプタを初期化する、
データ転送システム。
【請求項５】
システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記高機能スイッチ部は、
前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部と、
前記挿抜検出部の検出情報に基づいて、前記システムホストからのコマンドに対する応答を前記アダプタが行うのか、若しくはローカルデバイスが行うのか、の切替を行うコマンド応答切替部と、
前記システムホストがアダプタの初期化を行う際に前記アダプタが受信した及び応答したコマンドを保持する初期化コマンド保持部と
前記初期化コマンド保持部が保持するコマンドに基づいて、ローカルデバイスを初期化するローカルデバイス初期化部と
を備える、
データ転送システムにおいて、
前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化コマンド保持部に前記システムホストから前記アダプタが受信した及び応答したコマンドを保持し、
前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行い、
前記挿抜検出部がローカルデバイスの抜去を検出すると、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答を前記アダプタが行うように切替を行う、
アダプタ。
【請求項６】
請求項５に記載のアダプタであって、
前記高機能スイッチ部は、更に、
前記システムホストが前記アダプタの初期化を行う際に、前記アダプタのレジスタに設定されていたレジスタ値を保持する初期化時レジスタ保持部を備え、
前記アダプタは、
前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化時レジスタ保持部に前記システムホストから前記アダプタの前記レジスタに設定されたレジスタ値を保持し、
前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化時のレジスタ保持部内に保持されているレジスタ値と、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行う、
アダプタ。
【請求項７】
システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記高機能スイッチ部は、
前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部を備える、
データ転送システムにおいて、
前記挿抜検出部からの検出情報に基づいてローカルデバイスの挿抜の状況を確認する挿抜確認部と、
前記挿抜確認部の確認情報に基づいて、前記アダプタの制御を行うデバイスドライバのリロードを行うドライバリロード部と
を備え、
電源投入後、デバイスドライバのロードを行い、ロードされたデバイスドライバにより、前記アダプタを初期化し、
前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、挿入されたローカルデバイスを初期化し、
前記挿抜確認部がローカルデバイスの抜去を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記アダプタを初期化する、
システムホスト。
【請求項８】
請求項７に記載のシステムホストであって、
前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
システムホスト。
【請求項９】
前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
請求項４に記載のデータ転送システムであって、
前記ローカルデバイスの有するアクセス機能は、ダイレクトメモリアクセス機能の転送アドレスの、転送先アドレスに関する制約である、
データ転送システム。
【請求項１０】
前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
請求項４に記載のデータ転送システムであって、
前記ローカルデバイスの有するアクセス機能は、ダイレクトメモリアクセスが６４ビット空間対応のものか、又は３２ビット空間対応のものか、を示す種別である、
データ転送システム。
【請求項１１】
システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスとシステムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記ローカルホストは、前記ローカルデバイスのコンフィグレーションレジスタを読み出して、前記ローカルデバイスの種別を判別するローカル制御部を備え、
前記高機能スイッチ部は、更に、
前記ローカル制御部により判別される前記ローカルデバイスの種別に基づいて、前記ローカルデバイスが、３２ビット対応ＤＭＡ（ダイレクトメモリアクセス）部を有するのか、又は、６４ビット対応ＤＭＡ（ダイレクトメモリアクセス）部を有するのか、の種別を検出する３２／６４ビット検出部と、
前記３２／６４ビット検出部により検出された種別を、前記システムホストの前記デバイスドライバに通知する３２／６４ビット通知部
を備える、
データ転送システム。
【請求項１２】
システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスとシステムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記ローカルホストは、前記ローカルデバイスのコンフィグレーションレジスタを読み出して、前記ローカルデバイスの種別を判別するローカル制御部を備える、
データ転送システムにおいて、
前記高機能スイッチ部は、更に、
前記ローカル制御部により判別される前記ローカルデバイスの種別に基づいて、前記ローカルデバイスが、３２ビット対応ＤＭＡ（ダイレクトメモリアクセス）部を有するのか、又は、６４ビット対応ＤＭＡ（ダイレクトメモリアクセス）部を有するのか、の種別を検出する３２／６４ビット検出部と、
前記３２／６４ビット検出部により検出された種別を、前記システムホストの前記デバイスドライバに通知する３２／６４ビット通知部
を備える、
アダプタ。
【請求項１３】
前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
請求項１〜４、９〜１１のうちのいずれか一に記載のデータ転送システム。
【請求項１４】
前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
請求項５、６、１２のうちのいずれか一に記載のアダプタ。
【請求項１５】
前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
請求項７又は８に記載のシステムホスト。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、システムホストとローカルデバイス間でアダプタを介してデータ転送を行うデータ転送システムに関する。
【０００２】
高速シリアルインターフェースとしてＰＣＩ Ｅｘｐｒｅｓｓ（登録商標）（以下、ＰＣＩｅと称する）が、パーソナルコンピュータ等の様々な電子機器に使用されている。
【０００３】
例えば、ビデオサーバをシステムホストとし、メモリカードをローカルデバイスとするシステム構成においても、ＰＣＩｅが用いられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２５４５号公報
【特許文献２】特開２０１３−４５２３６号公報
【特許文献３】特開２０１３−８８８７９号公報
【特許文献４】特開２０１２−３８０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本開示は、システムホストとローカルデバイス間にて、アダプタを介して、ＰＣＩｅバスを用いてデータ転送を行うデータ転送システムに関する。本開示に係る該システムは、ローカルホストが搭載される（若しくは接続される）アダプタに含まれる高機能スイッチ部を、エンドポイントとして動作させることで二つのホスト（システムホスト、ローカルホスト）のドメインを分離させつつ、高機能スイッチ部でのアドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイスとシステムホストとの間での、ダイレクトの高速データ転送を実現するものである。このシステムでは、アダプタとローカルデバイスとが同一の転送方式（プロトコル）を採用する場合、システムホストからの初期化処理はローカルデバイスに対してダイレクトに行われ得るが、初期化処理後ローカルデバイスが抜去されると、アダプタはシステムホストと応答することができない。
【０００６】
本開示は、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、ＰＣＩｅバス利用システムを構成するアダプタであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、システムホストに応答し得る、アダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムを提供する。更に、本開示は、上述のデータ転送システムにおいて、ローカルデバイスが３２ビット対応ＤＭＡを備えるメディアであっても、６４ビット対応ＤＭＡを備えるメディアであっても、ＰＣＩｅバス利用システムの全体機能を低下させない、データ転送システムを提供する。
【課題を解決するための手段】
【０００７】
本開示におけるデータ転送システムは、システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記ローカルデバイスが抜去された場合、前記システムホストから前記ローカルデバイスへのコマンドは、前記アダプタが応答するように切り替わる。
【発明の効果】
【０００８】
本開示に係るデータ転送システムは、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、ＰＣＩｅバス利用システムを構成するアダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、アダプタはシステムホストに応答することができる。更に、本開示に係るデータ転送システムは、用いられるローカルデバイスが３２ビット対応ＤＭＡを備えるメディアであっても、６４ビット対応ＤＭＡを備えるメディアであっても、ＰＣＩｅバス利用システムの全体機能を低下させることがない。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るデータ転送システムの概略のブロック図である。
【図２】実施の形態１に係るデータ転送システムの詳細なブロック図である。
【図３】実施の形態１に係るデータ転送システムの技術的特徴を示す図である。
【図４Ａ】実施の形態１に係るデータ転送システムにおける動作を示すシーケンス図（１）である。
【図４Ｂ】実施の形態１に係るデータ転送システムにおける動作を示すシーケンス図（２）である。
【図５】実施の形態２に係るデータ転送システムの詳細なブロック図である。
【図６】実施の形態２に係るデータ転送システムにおける動作を示すフローチャートである。
【図７】実施の形態２に係るデータ転送システムにおける動作を示すシーケンス図である。
【図８】実施の形態３に係るデータ転送システムの概略のブロック図である。
【図９】データ転送システムの詳細なブロック図である。
【図１０】実施の形態３に係るデータ転送システムの詳細なブロック図である。
【図１１】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（１）である。
【図１２】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（２）である。
【図１３】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（３）である。
【図１４】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（４）である。
【図１５】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（５）である。
【図１６】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（６）である。
【図１７】実施の形態３に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図（７）である。
【図１８】実施の形態３に係るデータ転送システムにおける動作を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
【００１１】
なお、発明者（ら）は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
【００１２】
１．実施の形態に至る経緯
ＰＣＩｅを使用するシステムでは、ホスト機能を有するルートコンプレクスが最上位デバイスとされ、更にローカルデバイスがポイント・ツー・ポイントでツリー状に接続される。通常一つのＰＣＩｅデバイスツリーには一つのルートコンプレクスのみ接続される。つまり、ＰＣＩｅを使用するシステムにおいては、通常、複数のホスト（例えば、システムホストとローカルホスト）の夫々のドメインにて制御を完全に分離することができず、複数のホストが互いに互いの動作を制約する事象が生じ得る。
【００１３】
複数のホストの夫々のドメインにて処理を分離するために、データ転送先を分離するアドレスフィルタが設けられることがあるが、これにより制御が完全に分離されるまでには到らない。
【００１４】
また、この問題を解決するために、ノントランスペアレントポート（以下、ＮＴポート）を有するＰＣＩｅスイッチが使用されることがある。つまり、ルートコンプレクスを夫々有するシステムホストとローカルホストとを、ＮＴポートを有するＰＣＩｅスイッチを介して接続することにより、システム領域（管理領域）を分離した上でシステムホストとローカルホストが通信を行うことが可能となる。しかしながら、このような構成においては、ローカルデバイスからシステムホストへのデータ転送が、ローカルホストによる制御により低速化してしまう、という別の問題が生じ得る。
【００１５】
この問題を解決するため、システムホストとローカルホストとを含むＰＣＩｅシステムにおいて、ローカルホストが搭載される（若しくは接続される）アダプタに含まれる高機能スイッチ部をエンドポイントとして動作させることで二つのホストのドメインを分離させつつ、高機能スイッチ部でのアドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイスとシステムホストとの間での、ダイレクトの高速データ転送を実現することが、提案されている。
【００１６】
このシステムでは、アダプタとローカルデバイスとが同一の転送方式（プロトコル）を採用する場合、システムホストからの初期化処理がローカルデバイスに対してダイレクトに行われることが可能である。しかしながら、このシステムにおいては、初期化処理後ローカルデバイスが抜去されると、アダプタはシステムホストに応答することができない。
【００１７】
実施の形態は、上述の問題を解決するものであり、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、ＰＣＩｅバス利用システムを構成するアダプタであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、システムホストに応答し得る、アダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムを提供する。
【００１８】
更に、実施の形態は、上述の態様のデータ転送システムにおいて、ローカルデバイスが３２ビット対応ＤＭＡを備えるメディアであっても、６４ビット対応ＤＭＡを備えるメディアであっても、ＰＣＩｅバス利用システムの全体機能を低下させない、データ転送を提供する。
【００１９】
なお、以下に示す実施の形態では、ＰＣＩｅを使用するシステムを例に採って説明を行っているが、共通の類似技術であるＰＣＩバスを有するローカルデバイスに対して、アダプタ内でＰＣＩｅとＰＣＩの変換を行うシステムに対しても、以下の実施の形態に係る技術は適用可能である。  
【００２０】
２．［実施の形態１］
以下、図１〜図４Ｂを参照して実施の形態１を説明する。
【００２１】
２．１．データ転送システムの構成
図１は、実施の形態１に係るデータ転送システムの概略のブロック図である。図１では、システムホスト２、ローカルホスト１０を含むアダプタ４、及び、不揮発性メモリ１４を含むローカルデバイス（ＰＣＩｅデバイス）６が、ＰＣＩｅバス及びスロット１２により接続されて、データ転送システムを構成することを示している。ローカルホスト１０は、アダプタ４の内部でも外部でもいずれに設けられていてもよいし、後で説明する高機能スイッチ部８の内部に設けられていてもよい。ローカルデバイス（ＰＣＩｅデバイス）６は、例えば、リムーバブルメディアであり、更に、特定の種類のものに限定されない。また、本明細書では、ローカルデバイス（ＰＣＩｅデバイス）６を単に「カード」や「メモリカード」と称することがある。
【００２２】
２．１．１．データ転送システムの詳細な構成
図２は、実施の形態１に係るデータ転送システムのより詳細なブロック図である。まず、システムホスト２は、主記憶であるメモリ２０、ＣＰＵ（プロセッサ）２４、及び、ルートコンプレクス２２を備える。ルートコンプレクス２２は、ＰＣＩｅのツリーのルートとなるデバイスである。ルートコンプレクス２２には、端末側へ向かう方向へ設けられたポートであるＤＳＰ（Ｄｏｗｎ  Ｓｔｒｅａｍ  Ｐｏｒｔ）２６が備わる。なお、ＵＳＰ（Ｕｐ  Ｓｔｒｅａｍ  Ｐｏｒｔ）は、端末側から上流（ＣＰＵ）へ向かう方向へ設けられたポートである。
【００２３】
メモリ２０には、ＯＳ（オペレーティングシステム）１６及びデバイスドライバ１８がロードされ、ＣＰＵ（プロセッサ）２４にて適宜稼動する。
【００２４】
ローカルデバイス６は、コマンド解析部７６、データ転送部７８、及び、ＵＳＰ７４を備える。コマンド解析部７６は、データ転送コマンドを受け付けて解釈し、そのコマンドに応じた処理を行う。データ転送部７８は、コマンド解析部７６におけるコマンド解析の結果、そのコマンドがデータ転送を伴うコマンドである場合に、ＰＣＩｅバスを介するデータ転送を行う。なお、ローカルデバイス６は、データ転送を行う際に自ら主体となってデータ転送を行う機能であるマスタ（転送）機能部を備えることがある。
【００２５】
アダプタ４に含まれる高機能スイッチ部８は、ＮＴ（ノントランスペアレント）ポート（ＵＳＰ）２６、ＮＴポート（ＤＳＰ）２８、イベント通知部３０、パケット転送部４０、ＰＣＩｅスイッチ５０、コマンド応答切替部４２、初期化コマンド保持部４４、初期化時レジスタ保持部４３、及びローカルデバイス初期化部４５を備える。
【００２６】
なおＰＣＩｅのシステム構成は通常、ルートコンプレクスをルートとして、ツリー構造の形態となる。ＰＣＩｅに接続される全てのデバイスは、ルートコンプレクスからアクセス可能である。ところで前述のように、基本的にはＰＣＩｅのシステムにおいてはホスト毎やデバイス毎にドメインを分離することや、複数のルート（コンプレクス）を設けることができない。そこで、スイッチである高機能スイッチ部８をエンドポイントデバイスとして扱うことにより、スイッチに繋がる二つのホスト（システムホスト、及び、ローカルホスト）のドメインを分離する形態を実現することができる。この形態を実現するためのポートが、ＮＴポート（ＮＴポート（ＵＳＰ）２６、及び、ＮＴポート（ＤＳＰ）２８）である。
【００２７】
イベント通知部３０は、複数の制御レジスタ（図示せず）、及び、挿抜検出部３８を備える。複数の制御レジスタ（図示せず）は、システムホスト２とローカルホスト１０とからアクセス可能な通信用のレジスタであり、それぞれの間でメッセージ交換を行うためのレジスタ及びメモリ領域を有する。制御レジスタ（図示せず）はシステムホスト２からアダプタ４への要求コマンドを登録するためや、アダプタ４からシステムホスト２へコマンド完了を通知するために用いられる。挿抜検出部３８は、スロット１２にローカルデバイス６が挿入されているか、又は、抜き去られているかを示す信号線を監視し、状態の変化が発生した時に、ローカルホスト１０やシステムホスト２へ割り込みを発生させる。
【００２８】
パケット転送部４０は、アドレス変換部４６、及び、Ｒｅｑ（リクエスタ）ＩＤ変換部４８を備える。アドレス変換部４６は、システムホストからローカルホスト側へデータが転送される場合に、アドレス領域におけるシステムホスト側の体系とローカルホスト側の体系との対応関係を記述するテーブル（アドレス変換テーブル）を基にして、システムホスト側のアドレスをローカルホスト側のアドレスへ付け替える。更に、ローカルホスト側からシステムホスト側へのデータ転送においても同様に付け替える。Ｒｅｑ（リクエスタ）ＩＤ変換部４８は、システムホストからローカルホスト側へリクエスタ（Ｒｅｑｕｅｓｔｏｒ）が転送を行う場合、バス番号・デバイス番号・ファンクション番号から成るＲｅｑＩＤ（Ｒｅｑｕｅｓｔｏｒ  ＩＤ）におけるシステムホスト側の体系と、ローカルホスト側の体系との対応関係を記述するテーブル（ＲｅｑＩＤ変換テーブル）を基にして、システムホスト側のＲｅｑＩＤをローカル側のＲｅｑＩＤへ付け替える。更に、ローカルホスト側からシステムホスト側へのリクエスタ転送においても同様に付け替える。
【００２９】
コマンド応答切替部４２は、挿抜検出部３８の検出情報に基づいて、システムホスト２からのコマンドに対する応答をアダプタ４が行うのか、若しくはローカルデバイス６が行うのか、の切替を行う。初期化時レジスタ保持部４３は、システムホスト２がアダプタ４の初期化を行う際に用いられたアダプタ４のレジスタに、初期化の際設定されていた、レジスタ値を保持する。更に、初期化コマンド保持部４４は、システムホスト２がアダプタ４の初期化を行う際にアダプタ４が受信した及び応答したコマンドを保持する。ローカルデバイス初期化部４５は、初期化時レジスタ保持部４３が保持しているレジスタ値を用い、初期化コマンド保持部４４が保持しているコマンドに基づいて、ローカルデバイス６が挿入された際にそのローカルデバイス６を初期化する。
【００３０】
図２に示す構成においてアダプタ４に含まれているローカルホスト１０は、ローカル制御部５８、ルートコンプレクス６８、及び、主記憶であるメモリ７０を備える。
【００３１】
ローカル制御部５８は、例えば、
（１）ローカルデバイス６のコンフィグレーション空間の初期設定を行い動作可能な状態とすること、
（２）ローカルデバイス６のコンフィグレーションレジスタを読み出して、ローカルデバイス６の種別を判別することにより、その後の処理をデバイスごとの処理に切替ること、
（３）システムホスト側のアドレス体系とローカルホスト側のアドレス体系とを取得して、パケット転送部４０のアドレス変換部４６のアドレス変換テーブルへアドレスの対応を登録すること、及び、
（４）システムホスト側のＲｅｑＩＤとローカルホスト側のＲｅｑＩＤとを取得して、パケット転送部４０のＲｅｑ（リクエスタ）ＩＤ変換部４８のＲｅｑ（リクエスタ）ＩＤ変換テーブルへＲｅｑＩＤの対応を登録すること
等を含む、制御動作を行う。
【００３２】
２．１．２．データ転送システムの技術的特徴
図３は、実施の形態１に係るデータ転送システムについての、技術的特徴を概略示す図である。図３において、上側（ａ）はシステムホスト２、アダプタ４、及び、ローカルデバイス６を示す図であり、システムホスト２がアダプタ４に接続され、同時にローカルデバイス６がアダプタ４に接続されている状態を示している。下側（ｂ）もシステムホスト２、アダプタ４、及び、ローカルデバイス６を示す図であり、システムホスト２がアダプタ４に接続されているが、ローカルデバイス６がアダプタ４から抜去された状態を示している。
【００３３】
これまでに説明したように、アダプタ４は、システムホスト２とローカルデバイス６との間での高速アクセスによるデータ転送のために、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により直接にパケットを転送する仕組みを実現する。特に、システムホスト２とアダプタ４との間のインタフェースプロトコルが、アダプタ４とローカルデバイス６との間のインタフェースプロトコルと同じである場合には、アダプタ４の構成を簡易にして且つ初期化処理を簡略化するために、初期化コマンドを含む管理用コマンドも、アダプタ４によるアドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換を用いて、システムホスト２及びローカルデバイス６間で、直接パケットを転送するのが好ましい。
【００３４】
ここで、同一のプロトコルとして「ＮＶＭｅプロトコル」を例に採って説明を行う。ＮＶＭｅプロトコルにおいては、管理用コマンドとしてＡｄｍｉｎコマンドが定義されている。このＡｄｍｉｎコマンドとして、初期設定コマンドや、デバイス状態を通知する（若しくはデバイス状態の通知を促す）コマンドなどが定義されている。データ転送のコマンドとしては、「ＮＶＭコマンド」が定義されており、該「ＮＶＭコマンド」にはデータのリードを行うコマンドとデータのライトを行うコマンドが含まれる。
【００３５】
ローカルデバイス６が存在しない（接続しない）場合（図３（ｂ）参照）においても、（システムホスト２から）アダプタ４へのＡｄｍｉｎコマンドによる初期化が必要になると共に、初期化完了後も必要に応じてＡｄｍｉｎコマンドへの応答がアダプタ４に要求される。
【００３６】
ローカルデバイス６が挿入されている（接続されている）場合には、Ａｄｍｉｎコマンドに対してはローカルデバイス６が応答することになる。つまり、図３（ａ）のようにローカルデバイス６が接続されている場合には、ローカルデバイス６が応答する。しかしながら、ここで、突然のローカルデバイス６の抜去が発生した場合には、ローカルデバイス６による応答が物理的に不可能になるので、アダプタ４がＡｄｍｉｎコマンドに応答するようにアダプタ４内部において切替が行われなければならない。この切替は、後で説明するように、主として挿抜検出部３８及びコマンド応答切替部４２により行われる。
【００３７】
２．２．データ転送システムの動作
図４Ａ及び図４Ｂは、実施の形態１に係るデータ転送システムにおける動作を具体的に説明するシーケンス図（１）〜（２）である。実施の形態１では、システムホスト２内には、ＯＳ（オペレーティングシステム）１６とデバイスドライバ１８とが存在している。ＯＳ１６は、システムホスト２全体の管理及び制御を行う。デバイスドライバ１８は、システムホスト２に接続される、アダプタ４を含むデバイスを、夫々制御する。
【００３８】
図４Ａ及び図４Ｂを用いて、実施の形態１における、電源投入（ＰｏｗｅｒＯＮ）からの動作を説明する。アダプタ４の電源としては、システムホスト２から受ける場合と、ＡＣアダプタ等により単独で賄う場合とが想定されるが、何れの場合でもよい。本実施の形態（、及び、以下の実施の形態）では、ＡＣアダプタによりアダプタ４に電源が供給されており、更に既にアダプタ４に電源が投入されている、という前提で説明を行う。また、ローカルデバイス６への電源についても同じような（複数の）場合が想定されるが、本実施の形態（、及び、以下の実施の形態）では、アダプタ４から供給される、という前提で説明を行う。
【００３９】
２．２．１．アダプタの初期化時の動作
図４Ａに示すように、まず、アダプタ４に電源を投入された状態で、ＰｏｗｅｒＯＮ（Ｓ１）によりシステムホスト２に対して電源が投入される。ＯＳ１６は、ＰＣＩｅのコンフィグレーション空間の初期化を最初に行う。この初期化によりＯＳ１６がアダプタ４を検出すると、デバイスドライバ１８に対して、アダプタ４の初期化を要求する（Ｓ２）。デバイスドライバ１８は、この要求を受けると、アダプタ４のデバイス情報に基づいてアダプタ４の初期化を行い利用可能な状態にする（Ｓ４）。また、本実施の形態では、システムホスト２とアダプタ４間のプロトコル、及び、アダプタ４とローカルデバイス６間のプロトコルとして「ＮＶＭｅプロトコル」であることを前提にしており、よって、Ａｄｍｉｎコマンドを利用して初期化が実行される。
【００４０】
アダプタ４内の初期化時レジスタ保持部４３は、システムホスト２がアダプタ４の初期化を行う際に用いられたアダプタ４のレジスタに、初期化の際設定されていた、レジスタ値を保持する。更に、アダプタ４内の初期化コマンド保持部４４は、アダプタ４の初期化処理を行う際にアダプタ４が受信した及び応答した初期化コマンドを保持する（Ｓ６）。この初期化コマンドの例としては、「システムホスト２のメモリ２０に登録されるコマンドのアドレス」、「各コマンドのサイズ」、「キュー（ｑｕｅｕｅ）数」が挙げられる。アダプタ４は、初期化処理が終了しアダプタ４が利用可能な状態になったことを、デバイスドライバ１８に対して通知する（Ｓ８）。デバイスドライバ１８は、初期化処理が完了したことをＯＳ１６に対して通知する（Ｓ１０）。
【００４１】
後でも説明するように、本実施の形態では、ローカルデバイス６の挿入未挿入に拘わらず、システムホスト２のＯＳ１６が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、ＯＳ１６はローカルデバイス６の挿抜の状態を確認する（Ｓ１１ａ、Ｓ１１ｂ）。ローカルデバイス６が未挿入である場合、アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が未挿入であることを確認してデバイスドライバ１８に通知する（Ｓ１１ｃ）。それを受けてデバイスドライバ１８は、ローカルデバイス（カード）６がアダプタ４に未挿入であることをＯＳ１６に通知する（Ｓ１１ｄ）。
【００４２】
なお、図示していないが、Ｓ１１ａ〜Ｓ１１ｄは、ＯＳ１６によるポーリング処理として、一定間隔で繰り返される。
【００４３】
次に、ローカルデバイス６がアダプタ４に挿入された際の動作を説明する。なお、システムホスト２の電源投入（ＰｏｗｅｒＯＮ）時にローカルデバイス６が既に挿入されているという場合においても、同様の動作となる（Ｓ１２〜）。つまり、本実施の形態では、アダプタ４（の挿抜検出部３８）がローカルデバイス６の検出を行うのは、図４Ａに示すタイミング（即ち、アダプタ４及びデバイスドライバ１８が、アダプタ４の初期化処理の完了を通知（Ｓ１０）した後）である、とする。
【００４４】
ローカルデバイス６がアダプタ４に挿入される（Ｓ１２）と、ローカルデバイス６が初期化される（Ｓ１４、Ｓ１６）。ローカルデバイス６の初期化処理の詳細については、以下で（「４．２．２．ローカルデバイスの初期化時の動作」にて）説明する。後でも説明するように、ローカルデバイスの初期化処理後、アダプタ４のコマンド応答切替部４２は、システムホスト２からのコマンドに対する応答をローカルデバイス６が行うように切替を行う（Ｓ１８）。
【００４５】
更に本実施の形態では、システムホスト２のＯＳ１６が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、ＯＳ１６はローカルデバイス６の挿抜の状態を確認する（Ｓ２０、Ｓ２２）。アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が挿入されていることを確認してデバイスドライバ１８に通知する（Ｓ２４）。それを受けてデバイスドライバ１８は、ローカルデバイス（カード）６がアダプタ４に挿入されていることをＯＳに通知する（Ｓ２６）。なお、ローカルデバイスの状態確認に対しては、アダプタ４は、ローカルデバイス（カード）６の挿入状態の情報に加えて、メモリ容量などを通知する。
【００４６】
ＯＳ１６によりポーリングが行われることから、アダプタ４は、ローカルデバイス６の挿入が確認されるまで確認を繰り返すことになる。ＯＳ１６は、挿入状態の通知を確認（Ｓ２６）すると、次のステップへ移行する。つまり、通常のリード処理やライト処理などを行う（Ｓ２８）。
【００４７】
２．２．２．ローカルデバイスの初期化時の動作
アダプタ４の初期化処理（Ｓ２〜Ｓ１０）を経て、図４Ａのシーケンス図に示すように、ローカルデバイス６がアダプタ４に挿入されると、若しくは挿入されていると（即ち、挿抜検出部３８がローカルデバイス６の挿入を検出すると）（Ｓ１２）、アダプタ４のローカルデバイス初期化部４５は、アダプタ４の初期化時レジスタ保持部４３に保持されているレジスタ値、及び、初期化コマンド保持部４４内に保持されているコマンドに基づいて、挿入された（若しくは挿入されている）ローカルデバイス６を初期化する（Ｓ１４）。初期化処理後、ローカルデバイス６は初期化処理が完了したことをアダプタ４に通知する（Ｓ１６）。ここで同時に、アダプタ４のコマンド応答切替部４２は、システムホスト２からのコマンドに対する応答をローカルデバイス６が行うように切替を行う（Ｓ１８）。なお、ローカルデバイス初期化部４５が、システムホスト２がアダプタ４の初期化を行う際に用いられたアダプタ４のレジスタにおけるレジスタ値を用いないで、ローカルデバイス６の初期化を行う形態も想定される。そのような形態では、アダプタ４内に初期化時レジスタ保持部４３が設けられなくてもよい。
【００４８】
前述のようにローカルデバイス６のアダプタ４への挿入の後には以下のシーケンス（Ｓ２０〜Ｓ２６）が行われる。つまり、システムホスト２のＯＳ１６が、ポーリングを行うことにより、デバイスドライバ１８に対してローカルデバイス６の状態を確認（Ｓ２０）すると、デバイスドライバ１８はアダプタ４に対して、ローカルデバイス６が挿入されているか否かを確認する（Ｓ２２）。アダプタ４は、デバイスドライバ１８からのローカルデバイス状態確認に対して、（挿入されていれば）ローカルデバイス６が挿入されていることを通知し（Ｓ２４）、デバイスドライバ１８は、その通知事項を更にＯＳ１６に通知する（Ｓ２６）。
【００４９】
２．２．３．ローカルデバイス抜去時の動作
次に、図４Ｂのシーケンス図（２）を用いて、ローカルデバイス６が抜かれた際のシーケンスを説明する。
【００５０】
なお、ローカルデバイス６の抜去の検出は、システムホスト２が担当することも考えられる。しかしながら、本実施の形態では、検出をより高速に行うために、アダプタ４内のハードウェア、即ち、挿抜検出部３８が検出する構成を採用する。
【００５１】
まず、アダプタ４が、ローカルデバイス６が抜かれたことを電気信号の変化で挿抜検出部３８により検出する（Ｓ３０）と、アダプタ４のコマンド応答切替部４２は、システムホスト２からのコマンドに対する応答をアダプタ４が行うように速やかに切替を行う（Ｓ３２）。ここでの切替を行わなければ、システムホスト２のデバイスドライバ１８がローカルデバイス６へアクセスするとエラー処理となるためである。
【００５２】
図２に示すブロック図に係る本実施の形態では、挿抜検出部３８が、ローカルデバイス６が抜かれたことを検出すると、アダプタ４のコマンド応答切替部４２は、ローカルデバイス６へ（システムホスト２に係る）コマンドを転送するのではなく、アダプタ４において（システムホスト２に係る）コマンドに応答するように、切替を行う。ローカルデバイス６へアクセスが必要なシステムホスト２からのリードコマンドやライトコマンドについては、アダプタ４は、エラー結果をシステムホスト２へ応答すると共に、ローカルデバイス６の状態が変更されたことを通知し、システムホスト２のＯＳ１６へ、ローカルデバイス６へのアクセスが必要なデータのリード（若しくは）ライトコマンドの要求をしないように通知する。
【００５３】
ローカルデバイス６抜去の直後には、更に以下のシーケンス（Ｓ３４〜Ｓ４０）が行われる。システムホスト２のＯＳ１６が、ポーリングを行うことにより、デバイスドライバ１８に対してローカルデバイス６の状態を確認（Ｓ３４）すると、デバイスドライバ１８はアダプタ４に対して、ローカルデバイス６が抜去されているか否かを確認する（Ｓ３６）。アダプタ４は、デバイスドライバ１８からのローカルデバイス状態確認に対して、（抜去されていれば）ローカルデバイス６が抜去されていることを通知し（Ｓ３８）、デバイスドライバ１８は、その通知事項を更にＯＳ１６に通知する（Ｓ４０）。
【００５４】
２．２．４．ローカルデバイス再挿入時の動作
ローカルデバイス６の抜去を経て、ローカルデバイス６がアダプタ４に再挿入されると、上述の「２．２．２．ローカルデバイスの初期化時の動作」（Ｓ１２〜Ｓ２６）が繰り返される。
【００５５】
２．３．効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト２と、及び、ローカルホスト１０を備えるアダプタ４とを含むデータ転送システムである。アダプタ４は、ローカルデバイス６が挿入されて該ローカルデバイス６と接続可能である。アダプタ４は、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイス６とシステムホスト２との間でのデータ転送を行う高機能スイッチ部８を備える。ローカルデバイス６が抜去された場合、システムホスト２からローカルデバイス６へのコマンドは、アダプタ４が応答するように切り替わる。
【００５６】
より詳細には、高機能スイッチ部８は、更に、アダプタ４にローカルデバイス６が挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部３８と、挿抜検出部３８の検出情報に基づいて、システムホスト２からのコマンドに対する応答をアダプタ４が行うのか、若しくはローカルデバイス６が行うのか、の切替を行うコマンド応答切替部４２と、システムホスト２がアダプタ４の初期化を行う際に用いられたアダプタ４のレジスタに、初期化の際設定されていた、レジスタ値を保持する初期化時レジスタ保持部４３と、システムホスト２がアダプタ４の初期化を行う際にアダプタ４が受信した及び応答したコマンドを保持する初期化コマンド保持部４４と、初期化コマンド保持部４４が保持するコマンドに基づいて、ローカルデバイス６を初期化するローカルデバイス初期化部４５とを備える。アダプタ４は、システムホスト２への電源投入後、アダプタ４の初期化時に、初期化時レジスタ保持部４３にシステムホスト２からアダプタ４のレジスタに設定されたレジスタ値を保持するとともに、初期化コマンド保持部４４にシステムホスト２からアダプタ４が受信した及び応答したコマンドを保持する。また、アダプタ４は、挿抜検出部３８がローカルデバイス６の挿入を検出すると、ローカルデバイス初期化部４５により、初期化時のレジスタ保持部４３に保持されているレジスタ値と、初期化コマンド保持部４４内に保持されているコマンドに基づいて、挿入されたローカルデバイス６を初期化し、ここで同時に、コマンド応答切替部４２により、システムホスト２からのコマンドに対する応答をローカルデバイス６が行うように切替を行う。更に、アダプタ４は、挿抜検出部３８がローカルデバイス６の抜去を検出すると、コマンド応答切替部４２により、システムホスト２からのコマンドに対する応答をアダプタ４が行うように切替を行う。
【００５７】
これにより、データ転送システムにおいて、ローカルデバイス６の初期化処理後にローカルデバイス６が抜去されても、アダプタ４はシステムホスト２に応答することができる。
【００５８】
３．［実施の形態２］
次に、図５〜図７を参照して実施の形態２を説明する。
【００５９】
３．１．データ転送システムの構成
図５は、実施の形態２に係るデータ転送システムのブロック図である。図５に示す実施の形態２に係るデータ転送システムは、図２に示す実施の形態１に係るデータ転送システムと、略同様の構成である。
【００６０】
特に、実施の形態２に係るデータ転送システムでは、システムホスト２が挿抜確認部２３とドライバリロード部２５を有する。挿抜確認部２３は、アダプタ４の挿抜検出部３８からの検出情報に基づいてローカルデバイス６のアダプタ４への挿抜の状況を確認する。ドライバリロード部２５は、挿抜確認部２３の確認情報に基づいて、アダプタ４の制御を行うデバイスドライバ１８のリロードを行う。なお、挿抜確認部２３及びドライバリロード部２５は、メモリ２０及びＣＰＵ２４上に適宜のコンピュータプログラムをロードすることにより実現され得る。
【００６１】
３．２．データ転送システムの概略の動作
図６は、実施の形態２に係るデータ転送システム、特に、システムホスト２の動作概要を示すフローチャートである。
【００６２】
まず、アダプタ４に電源を投入された状態で、システムホスト２に対して電源投入、若しくは再起動（ＰｏｗｅｒＯＮ／Ｒｅｂｏｏｔ）される（Ｓ５０）。デバイスドライバ１８がロードされてデバイスドライバ１８の初期化とアダプタ４の初期化が行われる（Ｓ５２）。このステップＳ５２では、ローカルデバイス６が挿入されている状態であっても、まずアダプタ４の初期化が行われる。初期化が行われると、ローカルデバイス６の挿入を待つ状態になる（Ｓ５４）。
【００６３】
ローカルデバイス６が既に挿入されていると、又は、ローカルデバイス６が挿入されると（即ち、挿抜確認部２３が、ローカルデバイス６がアダプタ４へ挿入されていると確認すると）、ドライバリロード部２５によりデバイスドライバ１８のリロードが行われることにより、ローカルデバイス６の初期化が行われる（Ｓ５６）。ここでデバイスドライバ１８のリロードとは、一旦デバイスドライバ１８をアンロードして削除し、直後に再度ロードすることによって、デバイスドライバ１８に関する処理を最初から再び行うシーケンスのことである。
【００６４】
デバイスドライバ１８のリロード処理及びローカルデバイス６の初期化処理（Ｓ５６）が完了すると、ローカルデバイス（カード）６の抜去を待つ状態になる（Ｓ５８）。ローカルデバイス（カード）６が抜かれると（即ち、挿抜確認部２３が、ローカルデバイス６がアダプタ４から抜去されていると確認すると）、このときもデバイスドライバ１８のリロードを行い、これによりここではアダプタ４の初期化が行われる（Ｓ６０）。
【００６５】
デバイスドライバ１８のリロード処理及びアダプタ４の初期化処理（Ｓ６０）が完了すると、ローカルデバイス６の挿入を待つ状態になる（Ｓ５４）。
【００６６】
３．３．データ転送システムの詳細な動作
図７は、実施の形態２に係るデータ転送システムにおける動作を具体的に説明するシーケンス図である。システムホスト２内には、ＯＳ（オペレーティングシステム）１６とデバイスドライバ１８とが存在する。
【００６７】
また、図７に示すように、システムホスト２内では、アダプタ４への制御を補助するアプリケーション１５が常時動作している。例えば、ＯＳ（オペレーティングシステム）がＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）であるパソコンの場合、ＯＳ起動時に自動で動作し始める常駐アプリケーションに該当する。
【００６８】
３．３．１．ローカルデバイスの初期化時の動作
図７を用いて、電源投入（ＰｏｗｅｒＯＮ）からの動作を説明する。図７に示すように、まず、アダプタ４に電源を投入された状態で、ＰｏｗｅｒＯＮ（Ｓ６１）によりシステムホスト２に対して電源が投入される。ＯＳ１６は、ＰＣＩｅのコンフィグレーション空間の初期化を最初に行う。この初期化後、ＰＣＩｅのＩＤが本実施の形態に係るアダプタのＩＤであることを確認した場合、ＯＳ１６はアダプタ４のデバイスドライバ１８をロードする（Ｓ６２）。ロードされたデバイスドライバ１８は、アダプタ４に初期化を要求し（Ｓ６４）、アダプタ４はデバイス情報に基づいて初期化を行い、利用可能な状態となる。なお、この時点で既にローカルデバイス６が挿入済みである場合でも、アダプタ４の初期化を行う。
【００６９】
アダプタ４は、初期化処理が終了しアダプタ４が利用可能な状態になったことを、デバイスドライバ１８に対して通知する（Ｓ６６）。デバイスドライバ１８は、初期化処理が完了したことをＯＳ１６に対して通知する（Ｓ６８）。
【００７０】
次に、ローカルデバイス６がアダプタ４に挿入された際の動作を説明する。なお、本実施の形態でも、システムホスト２の電源投入（ＰｏｗｅｒＯＮ）時にローカルデバイス６が既に挿入されているという場合において同様の動作となる（Ｓ７０〜）。
【００７１】
ローカルデバイス６がアダプタ４に挿入される（Ｓ７０）。
【００７２】
本実施の形態では、システムホスト２のアプリケーション１５が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、アプリケーション１５はローカルデバイス６の挿抜の状態を確認する（Ｓ７２、Ｓ７４）。アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が挿入されていることを確認してデバイスドライバ１８に通知する（Ｓ７６）。それを受けてデバイスドライバ１８は、ローカルデバイス（カード）６がアダプタ４に挿入されていることをアプリケーション１５に通知する（Ｓ７８）。挿抜確認部２３は、ローカルデバイス６がアダプタ４へ挿入されている状況を確認する（把握する）。
【００７３】
アプリケーション１５によりポーリングが行われることから、アプリケーション１５及びデバイスドライバ１８は、挿抜確認部２３によりローカルデバイス６の挿入が確認されるまでポーリングによる確認を繰り返すことになる（図６・Ｓ５４参照）。
【００７４】
挿抜確認部２３によるローカルデバイス６の挿入の確認を受けて、ドライバリロード部２５は、デバイスドライバ１８のリロードを行う（Ｓ８０〜Ｓ８６、Ｓ８８〜Ｓ９０、Ｓ９６〜Ｓ９８）。つまり、先ずアプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のアンロードを要求する（Ｓ８０）。アプリケーション１５からの、デバイスドライバ１８のアンロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のアンロードを行う（Ｓ８２）。デバイスドライバ１８のアンロードが完了すると、完了の通知がＯＳ１６に対して為され（Ｓ８４）、それを受けてＯＳ１６は、アプリケーション１５にデバイスドライバ１８のアンロードの完了を通知する（Ｓ８６）。
【００７５】
デバイスドライバ１８のアンロードの完了を示す通知を受けて、アプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のロードを要求する（Ｓ８８）。アプリケーション１５からの、デバイスドライバ１８のロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のロードを行う（Ｓ９０）。
【００７６】
デバイスドライバ１８のリロード処理、即ち、アンロード処理（Ｓ８０〜Ｓ８２）及びロード処理（Ｓ８８〜Ｓ９０）により、デバイスドライバ１８はローカルデバイス６へ初期化を要求する（Ｓ９２）。ローカルデバイス６の初期化処理が完了すると、デバイスドライバ１８に対して初期化処理の完了が通知される（Ｓ９４）。そして、ＯＳ１６を経由して、アプリケーション１５に対して、デバイスドライバ１８のロードの完了が通知される（Ｓ９６、Ｓ９８）。以上のＳ８０〜Ｓ９０、Ｓ９６〜Ｓ９８のように、ドライバリロード部２５はデバイスドライバ１８のリロード処理を実行する。このように、ローカルデバイス６が挿入されると、デバイスドライバ１８のリロード処理を経て、ローカルデバイス６が確実に初期化される。
【００７７】
ローカルデバイス６の初期化処理後、通常のリード処理やライト処理などが行われる（Ｓ１００）。
【００７８】
３．３．２．ローカルデバイス抜去時の動作
次に、ローカルデバイス６が抜かれた際のシーケンスを説明する。まず、アダプタ４が、ローカルデバイス６が抜かれたことを電気信号の変化で挿抜検出部３８により検出する（Ｓ１０２）。
【００７９】
ローカルデバイス６抜去の後には、以下のシーケンス（Ｓ１０４〜Ｓ１２６）が行われる。システムホスト２のアプリケーション１５が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、アプリケーション１５はローカルデバイス６の挿抜の状態を確認する（Ｓ１０４）。アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が抜去されていることを確認し、デバイスドライバ１８を経由してアプリケーション１５に通知する（Ｓ１０６）。挿抜確認部２３は、ローカルデバイス６がアダプタ４から抜去されている状況を確認する（把握する）。
【００８０】
アプリケーション１５によりポーリングが行われることから、アプリケーション１５及びデバイスドライバ１８は、ローカルデバイス６の抜去が確認されるまでポーリングによる確認を繰り返すことになる（図６・Ｓ５８参照）。
【００８１】
挿抜確認部２３によるローカルデバイス６の抜去の確認を受けて、ドライバリロード部２５は、デバイスドライバ１８のリロードを行う（Ｓ１０８〜Ｓ１１４、Ｓ１１６〜Ｓ１１８、Ｓ１２４〜Ｓ１２６）。つまり、まずアプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のアンロードを要求する（Ｓ１０８）。アプリケーション１５からの、デバイスドライバ１８のアンロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のアンロードを行う（Ｓ１１０）。デバイスドライバ１８のアンロードが完了すると、完了の通知がＯＳ１６に対して為され（Ｓ１１２）、それを受けてＯＳ１６は、アプリケーション１５にデバイスドライバ１８のアンロードの完了を通知する（Ｓ１１４）。
【００８２】
デバイスドライバ１８のアンロードの完了を示す通知を受けて、アプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のロードを要求する（Ｓ１１６）。アプリケーション１５からの、デバイスドライバ１８のロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のロードを行う（Ｓ１１８）。
【００８３】
デバイスドライバ１８のリロード処理、即ち、アンロード処理（Ｓ１０８〜Ｓ１１０）及びロード処理（Ｓ１１６〜Ｓ１１８）により、デバイスドライバ１８はアダプタ４へ初期化を要求する（Ｓ１２０）。アダプタ４の初期化処理が完了すると、デバイスドライバ１８に対して初期化処理の完了が通知される（Ｓ１２２）。そして、ＯＳ１５を経由して、アプリケーション１５に対して、デバイスドライバ１８のロードの完了が通知される（Ｓ１２４、Ｓ１２６）。以上のＳ１０８〜Ｓ１１８、Ｓ１２４〜Ｓ１２６のように、ドライバリロード部２５はデバイスドライバ１８のリロード処理を実行する。このように、ローカルデバイス６が抜去されると、デバイスドライバ１８のリロード処理を経て、アダプタ４が確実に初期化される。
【００８４】
３．３．３．ローカルデバイス再挿入時の動作
ローカルデバイス６の抜去を経て、ローカルデバイス６がアダプタ４に再挿入されると、上述の「３．３．１．ローカルデバイスの初期化時の動作」のうち、「ローカルデバイス６のアダプタ４への挿入」（Ｓ７０）から「ローカルデバイス６の初期化処理完了の、デバイスドライバ１８への通知」（Ｓ９８）までが繰り返される。つまり、初期化処理により、再挿入されたローカルデバイス６が使用可能な状態となるまでの動作が行われる。
【００８５】
３．４．効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト２と、及び、ローカルホスト１０を備えるアダプタ４とを含むデータ転送システムである。アダプタ４は、ローカルデバイス６が挿入されて該ローカルデバイス６と接続可能である。アダプタ４は、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイス６とシステムホスト２との間でのデータ転送を行う高機能スイッチ部８を備える。ローカルデバイス６が抜去された場合、システムホスト２からローカルデバイス６へのコマンドは、アダプタ４が応答するように切り替わる。
【００８６】
より詳細には、高機能スイッチ部８は、更に、アダプタ４にローカルデバイス６が挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部３８を備える。システムホスト２は、更に、挿抜検出部３８からの検出情報に基づいてローカルデバイス６の挿抜の状況を確認する挿抜確認部２３と、挿抜確認部２３の確認情報に基づいて、アダプタ４の制御を行うデバイスドライバ１８のリロードを行うドライバリロード部２５とを備える。システムホスト２は、システムホスト２への電源投入後、デバイスドライバ１８のロードを行い、ロードされたデバイスドライバ１８により、アダプタ４を初期化する。ここでは、既に、ローカルデバイス６が挿入済みの場合でも、アダプタ４の初期化を行う。また、システムホスト２は、挿抜確認部２３がローカルデバイス６の挿入を確認すると、ドライバリロード部２５によりデバイスドライバ１８のリロードを行い、リロードされたデバイスドライバ１８により、挿入されたローカルデバイス６を初期化する。更に、システムホスト２は、挿抜確認部２３がローカルデバイス６の抜去を確認すると、ドライバリロード部２５によりデバイスドライバ１８のリロードを行い、リロードされたデバイスドライバ１８により、アダプタ４を初期化する。
【００８７】
これにより、データ転送システムにおいて、ローカルデバイス６の初期化処理後にローカルデバイス６が抜去されても、アダプタ４はシステムホスト２に応答することができる。
【００８８】
４．［実施の形態３］
次に、図８〜図１７を参照して実施の形態３を説明する。
【００８９】
４．１．データ転送システムの概略の構成
図８は、実施の形態３に係るデータ転送システムの概略のブロック図である。図８に示すように、実施の形態３に係るデータ転送システムは、実施の形態１又は実施の形態２に係るデータ転送システムと略同様に、システムホスト２、ローカルホスト１０を含むアダプタ４、及び、不揮発性メモリ１４を含むローカルデバイス（ＰＣＩｅデバイス）６が、ＰＣＩｅバス及びスロット１２により接続されている。ローカルデバイス（ＰＣＩｅデバイス）６は、例えば、リムーバブルメディアであり、更に、特定の種類のものに限定されない。
【００９０】
特に、実施の形態３に係るデータ転送システムでは、ローカルデバイス６は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を有するＤＭＡ部（１３ａ、１３ｂ）を含む。例えば、第１のローカルデバイス（ローカルデバイス（１））６ａは、３２ビット空間内のみへの転送に対応する３２ビット対応ＤＭＡ部１３ａを有し、第２のローカルデバイス（ローカルデバイス（２））６ｂは、６４ビット空間内への転送に対応する６４ビット対応ＤＭＡ部１３ｂを有する。６４ビット対応ＤＭＡ部１３ｂは、ローカルデバイスがＰＣＩｅバスに対してマスタ動作（マスタ転送）を行い、転送先の６４ビットアドレス空間のどこに対してもマスタ転送ができる、という機能を有するものである。この６４ビット対応ＤＭＡ部１３ｂに対して、３２ビット対応ＤＭＡ部１３ａは、ローカルデバイスがＰＣＩｅバスに対してマスタ動作（マスタ転送）を行うが、３２ビットアドレス空間内での転送に制約され、３３ビットを超える領域へは転送ができない、という機能を有するものである。
【００９１】
本実施の形態では、転送先のアドレス空間に制約がある複数種類のＤＭＡ機能の例として、３２ビットのものと６４ビットのものを採り上げている。ＤＭＡ機能は、１６ビットアドレス空間内での転送に制約されるものや、６４ビットを超えるビットのアドレス空間内での転送に制約されるものであってもよく、要するに、制約を受けるアドレス空間のビット数には特に制限が無い。
【００９２】
４．２．データ転送システムの詳細な構成
図９は、実施の形態３に係るデータ転送システムのより詳細なブロック図である。図９に示す実施の形態３に係るデータ転送システムは、図２及び図５に示す実施の形態１及び実施の形態２に係るデータ転送システムと、同様の構成である。まず、実施の形態３に係るデータ転送システムでは、アダプタ４の高機能スイッチ部８が３２／６４ビット検出部３６及び３２／６４ビット通知部３４を有する。これら３２／６４ビット検出部３６及び３２／６４ビット通知部３４については、後で詳しく説明する。
【００９３】
また、実施の形態３に係るデータ転送システムでは、システムホスト２のメモリ２０が６４ビット空間まで存在する。図９では、メモリ２０における６４ビット領域２０ｂと３２ビット領域２０ａとを明示している。このメモリ２０へのアクセスについて、システムホスト２内のＣＰＵ２４からは６４ビット空間の全領域へアクセス可能である。更に、アダプタ４の高機能スイッチ部８からも、６４ビット空間の全領域へアクセス可能である。
【００９４】
ここで、第２のローカルデバイス（ローカルデバイス（２））６ｂにおいては、６４ビット対応ＤＭＡ部１３ｂを有していることにより、高機能スイッチ部８によるアドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換を用いて、システムホスト２及びローカルデバイス６間で直接パケットを転送する場合であっても、システムホスト２内の６４ビット空間の全領域へアクセス可能である。しかしながら、第１のローカルデバイス（ローカルデバイス（１））６ａにおいては、６４ビット空間の全領域への（データ又はパケット）転送に対応しない３２ビット対応ＤＭＡ部１３ａしか備えないため、システムホスト２内のメモリ２０の３２ビット領域への（データ又はパケット）転送しか対応できない。
【００９５】
このことを踏まえて、システムホスト２内にはデータコピー部１９が設けられている。データコピー部１９は、３２ビット対応のＤＭＡ機能しか有していない第１のローカルデバイス（ローカルデバイス（１））６ａによる転送において、システムホスト２内にて３２ビット空間と６４ビット空間とへの転送を行う、データコピーを実施する。
【００９６】
ここで、図１０は、実施の形態３に対する参考例のデータ転送システムを詳細に示すブロック図である。図１０に示す参考例のデータ転送システムは、実施の形態３に係るデータ転送システムと同様のものであり、システムホスト２内にデータコピー部１９が設けられているが、アダプタ４の高機能スイッチ部８内に３２／６４ビット検出部３６及び３２／６４ビット通知部３４は設けられていない。
【００９７】
図１０に示す参考例のデータ転送システムを踏まえて、データコピー部１９について更に説明する。システムホスト２でのユーザレベルのアプリケーションは、６４ビット空間を全て使って動作するので、ユーザが要求する領域へのダイレクトの転送は、第１のローカルデバイス（ローカルデバイス（１））６ａによっては対応することができない。そこで、第１のローカルデバイス（ローカルデバイス（１））６ａでの転送時には、システムホスト２内のＯＳ１６と、アダプタ４を制御するデバイスドライバ１８とにおいて、第１のローカルデバイス（ローカルデバイス（１））６ａの３２ビット対応ＤＭＡ部１３ａにより、３２ビット領域への転送を行った後に、データコピー部１９が、ユーザにより要求される領域へデータコピーする、というシーケンスにより、対応される。
【００９８】
ここで問題となる点は、アダプタ４の機能としてＯＳ１６とデバイスドライバ１８との機能が定義されることにより、６４ビット対応ＤＭＡ部１３ｂを有する第２のローカルデバイス（ローカルデバイス（２））６ｂによっても、データコピー部１９によるデータコピーを行う転送でしか動作できない、ということである。このことによるデメリットとして、
（１）データコピーの多発により、システムホスト２内のメモリバスの帯域が余分に使用されること、及び、転送に要する時間が増大することで、ローカルデバイス６とのデータ転送性能が低下する点、並びに、
（２）システムホスト２内のリソースが余計に消費されることで、他のアプリケーションの処理性能が低下する点
などが挙げられる。即ち、第２のローカルデバイス（ローカルデバイス（２））６ｂが６４ビット対応ＤＭＡ部１３ｂを有しているとしても、その機能が、低機能側の機能（例えば、３２ビット対応のＤＭＡ機能）に制約されてしまう点が、問題となる。
【００９９】
そこで、図９に示すように、実施の形態３に係るデータ転送システムでは、アダプタ４の高機能スイッチ部８が３２／６４ビット検出部３６及び３２／６４ビット通知部３４を有する。前述のように、ローカル制御部５８は、ローカルデバイス６のコンフィグレーションレジスタを読み出して、ローカルデバイス６の種別を判別する。この種別に基づいて、ローカルデバイス６が、３２ビット対応ＤＭＡ部１３ａを有するのか、又は、６４ビット対応ＤＭＡ部１３ｂを有するのか、３２／６４ビット検出部３６が種別を検出する。３２／６４ビット通知部３４は、３２／６４ビット検出部３６により検出された種別を、システムホスト２のデバイスドライバ１８に通知する。
【０１００】
アダプタ４の高機能スイッチ部８が３２／６４ビット検出部３６及び３２／６４ビット通知部３４を有することにより、６４ビット対応ＤＭＡ部１３ｂを有する第２のローカルデバイス（ローカルデバイス（２））６ｂは、パケット転送において６４ビット空間の全領域へダイレクトにアクセスすることができる。
【０１０１】
４．３．データ転送システムの動作
４．３．１．３２ビット対応ＤＭＡ部を有するローカルデバイスへの書き込み動作
図１１〜図１３は、システムホスト２から、アダプタ４に挿入されている、３２ビット対応ＤＭＡ部１３ａを有する第１のローカルデバイス（ローカルデバイス（１））６ａへ、データを書き込む際の動きを模式的に示すブロック図である。図１１〜図１３では、（システムホスト２内の）６４ビット領域２０ｂと３２ビット領域２０ａを有するメモリ２０、アダプタ４、及びローカルデバイス６のみが、示されている。
【０１０２】
なお、図１１の時点にて、３２／６４ビット検出部３６は、ローカルデバイス６が３２ビット対応ＤＭＡ部１３ａを有することを検出している。更に、３２／６４ビット通知部３４は、３２／６４ビット検出部３６により、ローカルデバイス６が３２ビット対応ＤＭＡ部１３ａを有することを検出された、ということを、システムホスト２のデバイスドライバ１８に通知している。
【０１０３】
まず、図１１に示すように、メモリ２０の６４ビット領域２０ｂ内のデータ１（ａ）、２（ａ）、３（ａ）が、ローカルデバイス６に書き込まれるものとする。
【０１０４】
次に、図１２に示すように、データコピー部１９により、メモリ２０の６４ビット領域２０ｂ内のデータ１（ａ）、２（ａ）、３（ａ）が、メモリ２０の３２ビット領域２０ａ内のデータ１（ｂ）、２（ｂ）、３（ｂ）にコピーされる。
【０１０５】
次に、図１３に示すように、書き込みを示すコマンドＣＭＤ（ａ）について、６４ビット対応のものが、３２ビット対応のコマンドＣＭＤ（ｂ）へ、再生成される。３２ビット領域２０ａ内のデータ１（ｂ）、２（ｂ）、３（ｂ）が、アダプタ４を介して、ローカルデバイス６へ転送される。ローカルデバイス６への転送が完了すると、ローカルデバイス６からシステムホスト２へ完了が通知される。
【０１０６】
なお、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有するものである場合、３２／６４ビット検出部３６は、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有することを検出する。更に、３２／６４ビット通知部３４は、３２／６４ビット検出部３６により、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有することを検出された、ということを、システムホスト２のデバイスドライバ１８に通知する。このことにより、ローカルデバイス６と、システムホスト２とは、データコピー部１９を用いること無く、６４ビット空間におけるデータ及びパケット転送を行う。
【０１０７】
４．３．２．３２ビット対応ＤＭＡ部を有するローカルデバイスからの読み取り動作
図１４〜図１７は、アダプタ４に挿入されている、３２ビット対応ＤＭＡ部１３ａを有する第１のローカルデバイス（ローカルデバイス（１））６ａから、システムホスト２へ、データを読み取る際の動きを模式的に示すブロック図である。図１４〜図１７でも、（システムホスト２内の）６４ビット領域２０ｂと３２ビット領域２０ａを有するメモリ２０、アダプタ４、及びローカルデバイス６のみが、示されている。
【０１０８】
なお、図１４の時点にて、３２／６４ビット検出部３６は、ローカルデバイス６が３２ビット対応ＤＭＡ部１３ａを有することを検出している。更に、３２／６４ビット通知部３４は、３２／６４ビット検出部３６により、ローカルデバイス６が３２ビット対応ＤＭＡ部１３ａを有することを検出された、ということを、システムホスト２のデバイスドライバ１８に通知している。
【０１０９】
まず、図１４に示すように、最終的にデータを格納する領域を６４ビット領域２０ｂ内に確保する（データ１（ａ）、２（ａ）、３（ａ））。同時に、３２ビット領域２０ａ内に、対応する領域（データ１（ｂ）、２（ｂ）、３（ｂ））を確保する。これらの「対応する領域」は、ローカルデバイス６から読み取られたデータを一旦格納して、データコピー部１９により、６４ビット領域２０ｂ内の最終領域（データ１（ａ）、２（ａ）、３（ａ））にコピーするための、中間領域である。
【０１１０】
次に、図１５に示すように、読み取りを示すコマンドＣＭＤ（ａ）について、６４ビット対応のものが、３２ビット対応のコマンドＣＭＤ（ｂ）へ、再生成される。
【０１１１】
次に、図１６に示すように、ローカルデバイス６のデータが、アダプタ４を介して、３２ビット領域２０ａ内へ（即ち、データ１（ｂ）、２（ｂ）、３（ｂ）へ）、転送される。３２ビット領域２０ａ内への転送が完了すると、ローカルデバイス６からシステムホスト２へ完了が通知される。
【０１１２】
次に、図１７に示すように、データコピー部１９により、メモリ２０の３２ビット領域２０ａ内のデータ１（ｂ）、２（ｂ）、３（ｂ）が、メモリ２０の６４ビット領域２０ｂ内のデータ１（ａ）、２（ａ）、３（ａ）にコピーされる。
【０１１３】
なお、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有するものである場合、３２／６４ビット検出部３６は、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有することを検出する。更に、３２／６４ビット通知部３４は、３２／６４ビット検出部３６により、ローカルデバイス６が６４ビット対応ＤＭＡ部１３ｂを有することを検出された、ということを、システムホスト２のデバイスドライバ１８に通知する。このことにより、ローカルデバイス６と、システムホスト２とは、データコピー部１９を用いること無く、６４ビット空間におけるデータ及びパケット転送を行う。
【０１１４】
４．４．データ転送システムの詳細な動作
図１８は、実施の形態３に係るデータ転送システムにおける動作を具体的に説明するシーケンス図である。システムホスト２内には、ＯＳ（オペレーティングシステム）１６とデバイスドライバ１８とが存在する。また、図１８に示すように、システムホスト２内では、アダプタ４への制御を補助するアプリケーション１５が常時動作している。
【０１１５】
４．４．１．ローカルデバイスの初期化時の動作
図１８を用いて、電源投入（ＰｏｗｅｒＯＮ）からの動作を説明する。図１８に示すように、まず、アダプタ４に電源を投入された状態で、ＰｏｗｅｒＯＮ（Ｓ１３１）によりシステムホスト２に対して電源が投入される。ＯＳ１６は、ＰＣＩｅのコンフィグレーション空間の初期化を最初に行う。この初期化後、ＰＣＩｅのＩＤが本実施の形態に係るアダプタのＩＤであることを確認した場合、ＯＳ１６はアダプタ４のデバイスドライバ１８をロードする（Ｓ１３２）。このとき、ＯＳ１６は、アダプタ４へのローカルデバイス（カード）６の挿入確認を行うが、ローカルデバイス６の存在不存在に拘わらず、アダプタ４はまず、ローカルデバイス６の未挿入確認をＯＳ１６に返す。ロードされたデバイスドライバ１８は、アダプタ４に初期化を要求し（Ｓ１３４）、アダプタ４はデバイス情報に基づいて初期化を行い、利用可能な状態となる。なお、この時点で既にローカルデバイス６が挿入済みである場合でも、アダプタ４の初期化を行う。
【０１１６】
アダプタ４は、初期化処理が終了しアダプタ４が利用可能な状態になったことを、デバイスドライバ１８に対して通知する（Ｓ１３６）。デバイスドライバ１８は、初期化処理が完了したことをＯＳ１６に対して通知する（Ｓ１３８）。
【０１１７】
次に、ローカルデバイス６がアダプタ４に挿入された際の動作を説明する。なお、本実施の形態でも、システムホスト２の電源投入（ＰｏｗｅｒＯＮ）時にローカルデバイス６が既に挿入されているという場合において同様の動作となる（Ｓ１４０〜）。
【０１１８】
ローカルデバイス６がアダプタ４に挿入される（Ｓ１４０）。
【０１１９】
本実施の形態では、システムホスト２のアプリケーション１５が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、アプリケーション１５はローカルデバイス６の挿抜の状態を確認する（Ｓ１４２、Ｓ１４４）。アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が挿入されていることを確認してデバイスドライバ１８に通知する（Ｓ１４６）。それを受けてデバイスドライバ１８は、ローカルデバイス（カード）６がアダプタ４に挿入されていることをアプリケーション１５に通知する（Ｓ１４８）。挿抜確認部２３は、ローカルデバイス６がアダプタ４へ挿入されている状況を確認する（把握する）。
【０１２０】
アプリケーション１５によりポーリングが行われることから、アプリケーション１５及びデバイスドライバ１８は、挿抜確認部２３によりローカルデバイス６の挿入が確認されるまでポーリングによる確認を繰り返すことになる。
【０１２１】
挿抜確認部２３によるローカルデバイス６の挿入の確認を受けて、ドライバリロード部２５は、デバイスドライバ１８のリロードを行う（Ｓ１５０〜Ｓ１５６、Ｓ１５８〜Ｓ１６０、Ｓ１７６〜Ｓ１７８）。つまり、先ずアプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のアンロードを要求する（Ｓ１５０）。アプリケーション１５からの、デバイスドライバ１８のアンロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のアンロードを行う（Ｓ１５２）。デバイスドライバ１８のアンロードが完了すると、完了の通知がＯＳ１６に対して為され（Ｓ１５４）、それを受けてＯＳ１６は、アプリケーション１５にデバイスドライバ１８のアンロードの完了を通知する（Ｓ１５６）。
【０１２２】
デバイスドライバ１８のアンロードの完了を示す通知を受けて、アプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のロードを要求する（Ｓ１５８）。アプリケーション１５からの、デバイスドライバ１８のロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のロードを行う（Ｓ１６０）。
【０１２３】
デバイスドライバ１８のリロード処理、即ち、アンロード処理（Ｓ１５０〜Ｓ１５２）及びロード処理（Ｓ１５８〜Ｓ１６０）により、デバイスドライバ１８は、ローカルデバイス６の有するアクセス機能を検出するように、アダプタ４に対して通知する（Ｓ１６２）。
【０１２４】
ここでの、ローカルデバイス６の有するアクセス機能とは、ローカルデバイスにおける、ダイレクトメモリアクセス（ＤＭＡ）機能の転送アドレスのうち転送先アドレスに関する制約であり、例えば、ＤＭＡが６４ビット空間対応のものか又は３２ビット空間対応のものか、を示す種別（６４ビット空間対応のカードか又は３２ビット空間対応のカードかを示す種別）である。
【０１２５】
アダプタ４は、ローカルデバイス６の有するアクセス機能、即ち、ローカルデバイス６の種別を確認して（Ｓ１６４）取得する（Ｓ１６６）。アダプタ４は、ローカルデバイス６の有するアクセス機能（ローカルデバイス（カード）６の種別）をデバイスドライバ１８に通知する（Ｓ１６８）。ローカルデバイス（カード）６の種別の通知を受けて、デバイスドライバ１８は、ＯＳ１６に対して、ローカルデバイス６に備わるＤＭＡ部が、６４ビット対応ＤＭＡ部１３ｂであるのか、又は３２ビット対応ＤＭＡ部１３ａであるのか、を通知する（Ｓ１７０）。ここでのローカルデバイス６の種別の確認、及び、ローカルデバイス６の種別の通知は、３２／６４ビット検出部３６及び３２／６４ビット通知部３４を用いて行われる。デバイスドライバ１８は、検出された、ローカルデバイス６の有するアクセス機能（ローカルデバイス（カード）６の種別）に基づいて、デバイスドライバ１８自身の備える機能の切り替えを行う。
【０１２６】
更に、デバイスドライバ１８のリロード処理、即ち、アンロード処理（Ｓ１５０〜Ｓ１５２）及びロード処理（Ｓ１５８〜Ｓ１６０）により、デバイスドライバ１８はローカルデバイス６へ初期化を要求する（Ｓ１７２）。ローカルデバイス６の初期化処理が完了すると、デバイスドライバ１８に対して初期化処理の完了が通知される（Ｓ１７４）。そして、ＯＳ１６を経由して、アプリケーション１５に対して、デバイスドライバ１８のロードの完了が通知される（Ｓ１７６、Ｓ１７８）。以上のＳ１５０〜Ｓ１７８のように、ドライバリロード部２５はデバイスドライバ１８のリロード処理を実行する。
【０１２７】
ローカルデバイス６の初期化処理後、通常のライト処理やリード処理などが行われる（Ｓ１８０）。ライト処理及びリード処理の内容は、図１１〜図１３（書き込み処理）、及び図１４〜図１７（読み取り処理）に示すものである。
【０１２８】
４．４．２．ローカルデバイス抜去時の動作
次に、ローカルデバイス６が抜かれた際のシーケンスを説明する。まず、アダプタ４が、ローカルデバイス６が抜かれたことを電気信号の変化で挿抜検出部３８により検出する（Ｓ１８２）。
【０１２９】
ローカルデバイス６抜去の後には、以下のシーケンス（Ｓ１８４〜Ｓ２０６）が行われる。システムホスト２のアプリケーション１５が（例えば、１秒程度の）一定間隔にて定期的にデバイスドライバ１８を経由してアダプタ４に対してポーリングを行うことにより、アプリケーション１５はローカルデバイス６の挿抜の状態を確認する（Ｓ１８４）。アダプタ４は、挿抜検出部３８の検出情報に基づいて、ローカルデバイス６が抜去されていることを確認し、デバイスドライバ１８を経由してアプリケーション１５に通知する（Ｓ１８６）。挿抜確認部２３は、ローカルデバイス６がアダプタ４から抜去されている状況を確認する（把握する）。
【０１３０】
アプリケーション１５によりポーリングが行われることから、アプリケーション１５及びデバイスドライバ１８は、ローカルデバイス６の抜去が確認されるまでポーリングによる確認を繰り返すことになる。
【０１３１】
挿抜確認部２３によるローカルデバイス６の抜去の確認を受けて、ドライバリロード部２５は、デバイスドライバ１８のリロードを行う（Ｓ１８８〜Ｓ１９４、Ｓ１９６〜Ｓ１９８、Ｓ２０４〜Ｓ２０６）。つまり、まずアプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のアンロードを要求する（Ｓ１８８）。アプリケーション１５からの、デバイスドライバ１８のアンロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のアンロードを行う（Ｓ１９０）。デバイスドライバ１８のアンロードが完了すると、完了の通知がＯＳ１６に対して為され（Ｓ１９２）、それを受けてＯＳ１６は、アプリケーション１５にデバイスドライバ１８のアンロードの完了を通知する（Ｓ１９４）。
【０１３２】
デバイスドライバ１８のアンロードの完了を示す通知を受けて、アプリケーション１５は、ＯＳ１６に対してデバイスドライバ１８のロードを要求する（Ｓ１９６）。アプリケーション１５からの、デバイスドライバ１８のロードの要求を受けて、ＯＳ１６は、デバイスドライバ１８のロードを行う（Ｓ１９８）。
【０１３３】
デバイスドライバ１８のリロード処理、即ち、アンロード処理（Ｓ１８８〜Ｓ１９０）及びロード処理（Ｓ１９６〜Ｓ１９８）により、デバイスドライバ１８はアダプタ４へ初期化を要求する（Ｓ２００）。アダプタ４の初期化処理が完了すると、デバイスドライバ１８に対して初期化処理の完了が通知される（Ｓ２０２）。そして、ＯＳ１５を経由して、アプリケーション１５に対して、デバイスドライバ１８のロードの完了が通知される（Ｓ２０４、Ｓ２０６）。以上のＳ１８８〜Ｓ１９８、Ｓ２０４〜Ｓ２０６のように、ドライバリロード部２５はデバイスドライバ１８のリロード処理を実行する。
【０１３４】
なお、上述のシーケンスでは、電源投入直後、ローカルデバイス６の存在不存在に拘わらず、アダプタ４はまず、ローカルデバイス６の未挿入確認をＯＳ１６に返したが、電源投入時にローカルデバイス６が既に存在していた場合、デバイスドライバ１８内でローカルデバイス６の初期化を実施するようにしてもよく、よって、デバイスドライバ１８のリロードを回避するようにしてもよい。
【０１３５】
４．５．効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト２と、及び、ローカルホスト１０を備えるアダプタ４とを含むデータ転送システムである。アダプタ４は、ローカルデバイス６が挿入されて該ローカルデバイス６と接続可能である。アダプタ４は、ＰＣＩｅバスを利用して、アドレス変換及びＲｅｑ（リクエスタ）ＩＤ変換により、ローカルデバイス６とシステムホスト２との間でのデータ転送を行う高機能スイッチ部８を備える。ローカルホスト１０は、ローカルデバイス６のコンフィグレーションレジスタを読み出して、ローカルデバイス６の種別を判別するローカル制御部５８を備える。高機能スイッチ部８は、更に、ローカル制御部５８により判別されるローカルデバイス６の種別に基づいて、ローカルデバイス６が、３２ビット対応ＤＭＡ部１３ａを有するのか、又は、６４ビット対応ＤＭＡ部１３ｂを有するのか、の種別を検出する３２／６４ビット検出部３６と、３２／６４ビット検出部３６により検出された種別を、システムホスト２のデバイスドライバ１８に通知する３２／６４ビット通知部３４を備える。
【０１３６】
これにより、データ転送システムは、ローカルデバイス６が３２ビット対応ＤＭＡを備えるメディアであっても、６４ビット対応ＤＭＡを備えるメディアであっても、ＰＣＩｅバス利用システムの全体機能を低下させない。
【０１３７】
５．他の実施の形態
以上のように、本出願において開示する技術の例示として、実施の形態１〜３を説明した。しかしながら、本開示における技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、上記実施の形態１〜３で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。
【０１３８】
上述の実施の形態１〜３では、ＰＣＩｅを使用するシステムを例に採って説明を行ったが、共通の類似技術であるＰＣＩバスを有するローカルデバイスに対して、アダプタ内でＰＣＩｅとＰＣＩの変換を行うシステムに対しても、上述の実施の形態に係る技術は適用可能であり、更に、同等の効果を得ることができる。
【０１３９】
更に、上述の実施の形態がアダプタに適用されることを説明したが、（例えば、ローカルホスト及び高機能スイッチ部を備える）アダプタは例に過ぎず、アダプタが、システムホストのローカルバス（例えば、ＰＣＩｅバス）のスロットに直接挿入される（例えば、ＰＣＩｅコネクタを有する）アドインカード形式のカードであっても、上述の実施の形態に係る技術は適用可能であり、同等の効果を得ることができる。
【０１４０】
また、上述の実施の形態では、システムホストとアダプタ間のプロトコルとしてＮＶＭｅプロトコルを例に採って説明したが、アダプタの機能をＮＶＭｅ以外のコマンドやレジスタで拡張する場合に拡張機能は常にアダプタ側で応答する、ということも実施の形態に含めることが可能である。
【０１４１】
また、実施の形態を説明するために、添付図面および詳細な説明を提供した。したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
【０１４２】
また、上述の実施の形態は、本開示における技術を例示するためのものであるから、特許請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
【産業上の利用可能性】
【０１４３】
本開示は、リムーバブルメディアが装着される情報処理装置に適用可能である。具体的には、ビデオサーバなどに本開示は適用可能である。
【符号の説明】
【０１４４】
２・・・システムホスト、４・・・アダプタ、６・・・ローカルデバイス、６ａ・・・第１のローカルデバイス（ローカルデバイス（１））、６ｂ・・・第２のローカルデバイス（ローカルデバイス（２））、８・・・高機能スイッチ部、１０・・・ローカルホスト、１２・・・スロット、１３ａ・・・３２ビット対応ＤＭＡ部、１３ｂ・・・６４ビット対応ＤＭＡ部、１４・・・不揮発性メモリ、１６・・・ＯＳ（オペレーティングシステム）１８・・・デバイスドライバ、２０・・・メモリ、２２・・・ルートコンプレクス、２３・・・挿抜確認部、２４・・・ＣＰＵ、２５・・・ドライバリロード部、２７・・・ＮＴポート（ＵＳＰ）、２８・・・ＮＴポート（ＤＳＰ）、３０・・・イベント通知部、３４・・・３２／６４ビット通知部、３６・・・３２／６４ビット検出部、３８・・・挿抜検出部、４０・・・パケット転送部、４２・・・コマンド応答切替部、４３・・・初期化時レジスタ保持部、４４・・・初期化コマンド保持部、４５・・・ローカルデバイス初期化部、４６・・・アドレス変換部、４８・・・Ｒｅｑ（リクエスタ）ＩＤ変換部、５０・・・ＰＣＩｅスイッチ、５８・・・ローカル制御部、６８・・・ルートコンプレクス、７０・・・メモリ、７６・・・コマンド解析部、７８・・・データ転送部。
【図１】
2019028513.tif 000003
【図２】
2019028513.tif 000004
【図３】
2019028513.tif 000005
【図４Ａ】
2019028513.tif 000006
【図４Ｂ】
2019028513.tif 000007
【図５】
2019028513.tif 000008
【図６】
2019028513.tif 000009
【図７】
2019028513.tif 000010
【図８】
2019028513.tif 000011
【図９】
2019028513.tif 000012
【図１０】
2019028513.tif 000013
【図１１】
2019028513.tif 000014
【図１２】
2019028513.tif 000015
【図１３】
2019028513.tif 000016
【図１４】
2019028513.tif 000017
【図１５】
2019028513.tif 000018
【図１６】
2019028513.tif 000019
【図１７】
2019028513.tif 000020
【図１８】
2019028513.tif 000021