JP7054807B2 - データ転送システム、アダプタ、及びシステムホスト - Google Patents

データ転送システム、アダプタ、及びシステムホスト Download PDF

Info

Publication number
JP7054807B2
JP7054807B2 JP2017143931A JP2017143931A JP7054807B2 JP 7054807 B2 JP7054807 B2 JP 7054807B2 JP 2017143931 A JP2017143931 A JP 2017143931A JP 2017143931 A JP2017143931 A JP 2017143931A JP 7054807 B2 JP7054807 B2 JP 7054807B2
Authority
JP
Japan
Prior art keywords
local device
adapter
unit
system host
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017143931A
Other languages
English (en)
Other versions
JP2019028513A (ja
Inventor
英明 山下
健 大塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2017143931A priority Critical patent/JP7054807B2/ja
Publication of JP2019028513A publication Critical patent/JP2019028513A/ja
Application granted granted Critical
Publication of JP7054807B2 publication Critical patent/JP7054807B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本開示は、システムホストとローカルデバイス間でアダプタを介してデータ転送を行うデータ転送システムに関する。
高速シリアルインターフェースとしてPCI Express(登録商標)(以下、PCIeと称する)が、パーソナルコンピュータ等の様々な電子機器に使用されている。
例えば、ビデオサーバをシステムホストとし、メモリカードをローカルデバイスとするシステム構成においても、PCIeが用いられている。
特開2014-2545号公報 特開2013-45236号公報 特開2013-88879号公報 特開2012-38037号公報
本開示は、システムホストとローカルデバイス間にて、アダプタを介して、PCIeバスを用いてデータ転送を行うデータ転送システムに関する。本開示に係る該システムは、ローカルホストが搭載される(若しくは接続される)アダプタに含まれる高機能スイッチ部を、エンドポイントとして動作させることで二つのホスト(システムホスト、ローカルホスト)のドメインを分離させつつ、高機能スイッチ部でのアドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイスとシステムホストとの間での、ダイレクトの高速データ転送を実現するものである。このシステムでは、アダプタとローカルデバイスとが同一の転送方式(プロトコル)を採用する場合、システムホストからの初期化処理はローカルデバイスに対してダイレクトに行われ得るが、初期化処理後ローカルデバイスが抜去されると、アダプタはシステムホストと応答することができない。
本開示は、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、PCIeバス利用システムを構成するアダプタであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、システムホストに応答し得る、アダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムを提供する。更に、本開示は、上述のデータ転送システムにおいて、ローカルデバイスが32ビット対応DMAを備えるメディアであっても、64ビット対応DMAを備えるメディアであっても、PCIeバス利用システムの全体機能を低下させない、データ転送システムを提供する。
本開示におけるデータ転送システムは、システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
前記ローカルデバイスが抜去された場合、前記システムホストから前記ローカルデバイスへのコマンドは、前記アダプタが応答するように切り替わる。
本開示に係るデータ転送システムは、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、PCIeバス利用システムを構成するアダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、アダプタはシステムホストに応答することができる。更に、本開示に係るデータ転送システムは、用いられるローカルデバイスが32ビット対応DMAを備えるメディアであっても、64ビット対応DMAを備えるメディアであっても、PCIeバス利用システムの全体機能を低下させることがない。
実施の形態1に係るデータ転送システムの概略のブロック図である。 実施の形態1に係るデータ転送システムの詳細なブロック図である。 実施の形態1に係るデータ転送システムの技術的特徴を示す図である。 実施の形態1に係るデータ転送システムにおける動作を示すシーケンス図(1)である。 実施の形態1に係るデータ転送システムにおける動作を示すシーケンス図(2)である。 実施の形態2に係るデータ転送システムの詳細なブロック図である。 実施の形態2に係るデータ転送システムにおける動作を示すフローチャートである。 実施の形態2に係るデータ転送システムにおける動作を示すシーケンス図である。 実施の形態3に係るデータ転送システムの概略のブロック図である。 データ転送システムの詳細なブロック図である。 実施の形態3に係るデータ転送システムの詳細なブロック図である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(1)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(2)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(3)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(4)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(5)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(6)である。 実施の形態3に係る、システムホストにおけるメモリ、アダプタ、及びローカルデバイスにおけるデータ転送の動作を示す図(7)である。 実施の形態3に係るデータ転送システムにおける動作を示すシーケンス図である。
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
なお、発明者(ら)は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
1.実施の形態に至る経緯
PCIeを使用するシステムでは、ホスト機能を有するルートコンプレクスが最上位デバイスとされ、更にローカルデバイスがポイント・ツー・ポイントでツリー状に接続される。通常一つのPCIeデバイスツリーには一つのルートコンプレクスのみ接続される。つまり、PCIeを使用するシステムにおいては、通常、複数のホスト(例えば、システムホストとローカルホスト)の夫々のドメインにて制御を完全に分離することができず、複数のホストが互いに互いの動作を制約する事象が生じ得る。
複数のホストの夫々のドメインにて処理を分離するために、データ転送先を分離するアドレスフィルタが設けられることがあるが、これにより制御が完全に分離されるまでには到らない。
また、この問題を解決するために、ノントランスペアレントポート(以下、NTポート)を有するPCIeスイッチが使用されることがある。つまり、ルートコンプレクスを夫々有するシステムホストとローカルホストとを、NTポートを有するPCIeスイッチを介して接続することにより、システム領域(管理領域)を分離した上でシステムホストとローカルホストが通信を行うことが可能となる。しかしながら、このような構成においては、ローカルデバイスからシステムホストへのデータ転送が、ローカルホストによる制御により低速化してしまう、という別の問題が生じ得る。
この問題を解決するため、システムホストとローカルホストとを含むPCIeシステムにおいて、ローカルホストが搭載される(若しくは接続される)アダプタに含まれる高機能スイッチ部をエンドポイントとして動作させることで二つのホストのドメインを分離させつつ、高機能スイッチ部でのアドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイスとシステムホストとの間での、ダイレクトの高速データ転送を実現することが、提案されている。
このシステムでは、アダプタとローカルデバイスとが同一の転送方式(プロトコル)を採用する場合、システムホストからの初期化処理がローカルデバイスに対してダイレクトに行われることが可能である。しかしながら、このシステムにおいては、初期化処理後ローカルデバイスが抜去されると、アダプタはシステムホストに応答することができない。
実施の形態は、上述の問題を解決するものであり、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイスとシステムホストとの間でのダイレクトの高速データ転送を実現する高機能スイッチ部を含む、PCIeバス利用システムを構成するアダプタであって、システムホストからのローカルデバイスへの初期化処理後にローカルデバイスが抜去されても、システムホストに応答し得る、アダプタを介して、システムホストとローカルデバイス間でデータ転送を行うデータ転送システムを提供する。
更に、実施の形態は、上述の態様のデータ転送システムにおいて、ローカルデバイスが32ビット対応DMAを備えるメディアであっても、64ビット対応DMAを備えるメディアであっても、PCIeバス利用システムの全体機能を低下させない、データ転送を提供する。
なお、以下に示す実施の形態では、PCIeを使用するシステムを例に採って説明を行っているが、共通の類似技術であるPCIバスを有するローカルデバイスに対して、アダプタ内でPCIeとPCIの変換を行うシステムに対しても、以下の実施の形態に係る技術は適用可能である。
2.[実施の形態1]
以下、図1~図4Bを参照して実施の形態1を説明する。
2.1.データ転送システムの構成
図1は、実施の形態1に係るデータ転送システムの概略のブロック図である。図1では、システムホスト2、ローカルホスト10を含むアダプタ4、及び、不揮発性メモリ14を含むローカルデバイス(PCIeデバイス)6が、PCIeバス及びスロット12により接続されて、データ転送システムを構成することを示している。ローカルホスト10は、アダプタ4の内部でも外部でもいずれに設けられていてもよいし、後で説明する高機能スイッチ部8の内部に設けられていてもよい。ローカルデバイス(PCIeデバイス)6は、例えば、リムーバブルメディアであり、更に、特定の種類のものに限定されない。また、本明細書では、ローカルデバイス(PCIeデバイス)6を単に「カード」や「メモリカード」と称することがある。
2.1.1.データ転送システムの詳細な構成
図2は、実施の形態1に係るデータ転送システムのより詳細なブロック図である。まず、システムホスト2は、主記憶であるメモリ20、CPU(プロセッサ)24、及び、ルートコンプレクス22を備える。ルートコンプレクス22は、PCIeのツリーのルートとなるデバイスである。ルートコンプレクス22には、端末側へ向かう方向へ設けられたポートであるDSP(Down Stream Port)26が備わる。なお、USP(Up Stream Port)は、端末側から上流(CPU)へ向かう方向へ設けられたポートである。
メモリ20には、OS(オペレーティングシステム)16及びデバイスドライバ18がロードされ、CPU(プロセッサ)24にて適宜稼動する。
ローカルデバイス6は、コマンド解析部76、データ転送部78、及び、USP74を備える。コマンド解析部76は、データ転送コマンドを受け付けて解釈し、そのコマンドに応じた処理を行う。データ転送部78は、コマンド解析部76におけるコマンド解析の結果、そのコマンドがデータ転送を伴うコマンドである場合に、PCIeバスを介するデータ転送を行う。なお、ローカルデバイス6は、データ転送を行う際に自ら主体となってデータ転送を行う機能であるマスタ(転送)機能部を備えることがある。
アダプタ4に含まれる高機能スイッチ部8は、NT(ノントランスペアレント)ポート(USP)26、NTポート(DSP)28、イベント通知部30、パケット転送部40、PCIeスイッチ50、コマンド応答切替部42、初期化コマンド保持部44、初期化時レジスタ保持部43、及びローカルデバイス初期化部45を備える。
なおPCIeのシステム構成は通常、ルートコンプレクスをルートとして、ツリー構造の形態となる。PCIeに接続される全てのデバイスは、ルートコンプレクスからアクセス可能である。ところで前述のように、基本的にはPCIeのシステムにおいてはホスト毎やデバイス毎にドメインを分離することや、複数のルート(コンプレクス)を設けることができない。そこで、スイッチである高機能スイッチ部8をエンドポイントデバイスとして扱うことにより、スイッチに繋がる二つのホスト(システムホスト、及び、ローカルホスト)のドメインを分離する形態を実現することができる。この形態を実現するためのポートが、NTポート(NTポート(USP)26、及び、NTポート(DSP)28)である。
イベント通知部30は、複数の制御レジスタ(図示せず)、及び、挿抜検出部38を備える。複数の制御レジスタ(図示せず)は、システムホスト2とローカルホスト10とからアクセス可能な通信用のレジスタであり、それぞれの間でメッセージ交換を行うためのレジスタ及びメモリ領域を有する。制御レジスタ(図示せず)はシステムホスト2からアダプタ4への要求コマンドを登録するためや、アダプタ4からシステムホスト2へコマンド完了を通知するために用いられる。挿抜検出部38は、スロット12にローカルデバイス6が挿入されているか、又は、抜き去られているかを示す信号線を監視し、状態の変化が発生した時に、ローカルホスト10やシステムホスト2へ割り込みを発生させる。
パケット転送部40は、アドレス変換部46、及び、Req(リクエスタ)ID変換部48を備える。アドレス変換部46は、システムホストからローカルホスト側へデータが転送される場合に、アドレス領域におけるシステムホスト側の体系とローカルホスト側の体系との対応関係を記述するテーブル(アドレス変換テーブル)を基にして、システムホスト側のアドレスをローカルホスト側のアドレスへ付け替える。更に、ローカルホスト側からシステムホスト側へのデータ転送においても同様に付け替える。Req(リクエスタ)ID変換部48は、システムホストからローカルホスト側へリクエスタ(Requestor)が転送を行う場合、バス番号・デバイス番号・ファンクション番号から成るReqID(Requestor ID)におけるシステムホスト側の体系と、ローカルホスト側の体系との対応関係を記述するテーブル(ReqID変換テーブル)を基にして、システムホスト側のReqIDをローカル側のReqIDへ付け替える。更に、ローカルホスト側からシステムホスト側へのリクエスタ転送においても同様に付け替える。
コマンド応答切替部42は、挿抜検出部38の検出情報に基づいて、システムホスト2からのコマンドに対する応答をアダプタ4が行うのか、若しくはローカルデバイス6が行うのか、の切替を行う。初期化時レジスタ保持部43は、システムホスト2がアダプタ4の初期化を行う際に用いられたアダプタ4のレジスタに、初期化の際設定されていた、レジスタ値を保持する。更に、初期化コマンド保持部44は、システムホスト2がアダプタ4の初期化を行う際にアダプタ4が受信した及び応答したコマンドを保持する。ローカルデバイス初期化部45は、初期化時レジスタ保持部43が保持しているレジスタ値を用い、初期化コマンド保持部44が保持しているコマンドに基づいて、ローカルデバイス6が挿入された際にそのローカルデバイス6を初期化する。
図2に示す構成においてアダプタ4に含まれているローカルホスト10は、ローカル制御部58、ルートコンプレクス68、及び、主記憶であるメモリ70を備える。
ローカル制御部58は、例えば、
(1)ローカルデバイス6のコンフィグレーション空間の初期設定を行い動作可能な状態とすること、
(2)ローカルデバイス6のコンフィグレーションレジスタを読み出して、ローカルデバイス6の種別を判別することにより、その後の処理をデバイスごとの処理に切替ること、
(3)システムホスト側のアドレス体系とローカルホスト側のアドレス体系とを取得して、パケット転送部40のアドレス変換部46のアドレス変換テーブルへアドレスの対応を登録すること、及び、
(4)システムホスト側のReqIDとローカルホスト側のReqIDとを取得して、パケット転送部40のReq(リクエスタ)ID変換部48のReq(リクエスタ)ID変換テーブルへReqIDの対応を登録すること
等を含む、制御動作を行う。
2.1.2.データ転送システムの技術的特徴
図3は、実施の形態1に係るデータ転送システムについての、技術的特徴を概略示す図である。図3において、上側(a)はシステムホスト2、アダプタ4、及び、ローカルデバイス6を示す図であり、システムホスト2がアダプタ4に接続され、同時にローカルデバイス6がアダプタ4に接続されている状態を示している。下側(b)もシステムホスト2、アダプタ4、及び、ローカルデバイス6を示す図であり、システムホスト2がアダプタ4に接続されているが、ローカルデバイス6がアダプタ4から抜去された状態を示している。
これまでに説明したように、アダプタ4は、システムホスト2とローカルデバイス6との間での高速アクセスによるデータ転送のために、アドレス変換及びReq(リクエスタ)ID変換により直接にパケットを転送する仕組みを実現する。特に、システムホスト2とアダプタ4との間のインタフェースプロトコルが、アダプタ4とローカルデバイス6との間のインタフェースプロトコルと同じである場合には、アダプタ4の構成を簡易にして且つ初期化処理を簡略化するために、初期化コマンドを含む管理用コマンドも、アダプタ4によるアドレス変換及びReq(リクエスタ)ID変換を用いて、システムホスト2及びローカルデバイス6間で、直接パケットを転送するのが好ましい。
ここで、同一のプロトコルとして「NVMeプロトコル」を例に採って説明を行う。NVMeプロトコルにおいては、管理用コマンドとしてAdminコマンドが定義されている。このAdminコマンドとして、初期設定コマンドや、デバイス状態を通知する(若しくはデバイス状態の通知を促す)コマンドなどが定義されている。データ転送のコマンドとしては、「NVMコマンド」が定義されており、該「NVMコマンド」にはデータのリードを行うコマンドとデータのライトを行うコマンドが含まれる。
ローカルデバイス6が存在しない(接続しない)場合(図3(b)参照)においても、(システムホスト2から)アダプタ4へのAdminコマンドによる初期化が必要になると共に、初期化完了後も必要に応じてAdminコマンドへの応答がアダプタ4に要求される。
ローカルデバイス6が挿入されている(接続されている)場合には、Adminコマンドに対してはローカルデバイス6が応答することになる。つまり、図3(a)のようにローカルデバイス6が接続されている場合には、ローカルデバイス6が応答する。しかしながら、ここで、突然のローカルデバイス6の抜去が発生した場合には、ローカルデバイス6による応答が物理的に不可能になるので、アダプタ4がAdminコマンドに応答するようにアダプタ4内部において切替が行われなければならない。この切替は、後で説明するように、主として挿抜検出部38及びコマンド応答切替部42により行われる。
2.2.データ転送システムの動作
図4A及び図4Bは、実施の形態1に係るデータ転送システムにおける動作を具体的に説明するシーケンス図(1)~(2)である。実施の形態1では、システムホスト2内には、OS(オペレーティングシステム)16とデバイスドライバ18とが存在している。OS16は、システムホスト2全体の管理及び制御を行う。デバイスドライバ18は、システムホスト2に接続される、アダプタ4を含むデバイスを、夫々制御する。
図4A及び図4Bを用いて、実施の形態1における、電源投入(PowerON)からの動作を説明する。アダプタ4の電源としては、システムホスト2から受ける場合と、ACアダプタ等により単独で賄う場合とが想定されるが、何れの場合でもよい。本実施の形態(、及び、以下の実施の形態)では、ACアダプタによりアダプタ4に電源が供給されており、更に既にアダプタ4に電源が投入されている、という前提で説明を行う。また、ローカルデバイス6への電源についても同じような(複数の)場合が想定されるが、本実施の形態(、及び、以下の実施の形態)では、アダプタ4から供給される、という前提で説明を行う。
2.2.1.アダプタの初期化時の動作
図4Aに示すように、まず、アダプタ4に電源を投入された状態で、PowerON(S1)によりシステムホスト2に対して電源が投入される。OS16は、PCIeのコンフィグレーション空間の初期化を最初に行う。この初期化によりOS16がアダプタ4を検出すると、デバイスドライバ18に対して、アダプタ4の初期化を要求する(S2)。デバイスドライバ18は、この要求を受けると、アダプタ4のデバイス情報に基づいてアダプタ4の初期化を行い利用可能な状態にする(S4)。また、本実施の形態では、システムホスト2とアダプタ4間のプロトコル、及び、アダプタ4とローカルデバイス6間のプロトコルとして「NVMeプロトコル」であることを前提にしており、よって、Adminコマンドを利用して初期化が実行される。
アダプタ4内の初期化時レジスタ保持部43は、システムホスト2がアダプタ4の初期化を行う際に用いられたアダプタ4のレジスタに、初期化の際設定されていた、レジスタ値を保持する。更に、アダプタ4内の初期化コマンド保持部44は、アダプタ4の初期化処理を行う際にアダプタ4が受信した及び応答した初期化コマンドを保持する(S6)。この初期化コマンドの例としては、「システムホスト2のメモリ20に登録されるコマンドのアドレス」、「各コマンドのサイズ」、「キュー(queue)数」が挙げられる。アダプタ4は、初期化処理が終了しアダプタ4が利用可能な状態になったことを、デバイスドライバ18に対して通知する(S8)。デバイスドライバ18は、初期化処理が完了したことをOS16に対して通知する(S10)。
後でも説明するように、本実施の形態では、ローカルデバイス6の挿入未挿入に拘わらず、システムホスト2のOS16が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、OS16はローカルデバイス6の挿抜の状態を確認する(S11a、S11b)。ローカルデバイス6が未挿入である場合、アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が未挿入であることを確認してデバイスドライバ18に通知する(S11c)。それを受けてデバイスドライバ18は、ローカルデバイス(カード)6がアダプタ4に未挿入であることをOS16に通知する(S11d)。
なお、図示していないが、S11a~S11dは、OS16によるポーリング処理として、一定間隔で繰り返される。
次に、ローカルデバイス6がアダプタ4に挿入された際の動作を説明する。なお、システムホスト2の電源投入(PowerON)時にローカルデバイス6が既に挿入されているという場合においても、同様の動作となる(S12~)。つまり、本実施の形態では、アダプタ4(の挿抜検出部38)がローカルデバイス6の検出を行うのは、図4Aに示すタイミング(即ち、アダプタ4及びデバイスドライバ18が、アダプタ4の初期化処理の完了を通知(S10)した後)である、とする。
ローカルデバイス6がアダプタ4に挿入される(S12)と、ローカルデバイス6が初期化される(S14、S16)。ローカルデバイス6の初期化処理の詳細については、以下で(「4.2.2.ローカルデバイスの初期化時の動作」にて)説明する。後でも説明するように、ローカルデバイスの初期化処理後、アダプタ4のコマンド応答切替部42は、システムホスト2からのコマンドに対する応答をローカルデバイス6が行うように切替を行う(S18)。
更に本実施の形態では、システムホスト2のOS16が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、OS16はローカルデバイス6の挿抜の状態を確認する(S20、S22)。アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が挿入されていることを確認してデバイスドライバ18に通知する(S24)。それを受けてデバイスドライバ18は、ローカルデバイス(カード)6がアダプタ4に挿入されていることをOSに通知する(S26)。なお、ローカルデバイスの状態確認に対しては、アダプタ4は、ローカルデバイス(カード)6の挿入状態の情報に加えて、メモリ容量などを通知する。
OS16によりポーリングが行われることから、アダプタ4は、ローカルデバイス6の挿入が確認されるまで確認を繰り返すことになる。OS16は、挿入状態の通知を確認(S26)すると、次のステップへ移行する。つまり、通常のリード処理やライト処理などを行う(S28)。
2.2.2.ローカルデバイスの初期化時の動作
アダプタ4の初期化処理(S2~S10)を経て、図4Aのシーケンス図に示すように、ローカルデバイス6がアダプタ4に挿入されると、若しくは挿入されていると(即ち、挿抜検出部38がローカルデバイス6の挿入を検出すると)(S12)、アダプタ4のローカルデバイス初期化部45は、アダプタ4の初期化時レジスタ保持部43に保持されているレジスタ値、及び、初期化コマンド保持部44内に保持されているコマンドに基づいて、挿入された(若しくは挿入されている)ローカルデバイス6を初期化する(S14)。初期化処理後、ローカルデバイス6は初期化処理が完了したことをアダプタ4に通知する(S16)。ここで同時に、アダプタ4のコマンド応答切替部42は、システムホスト2からのコマンドに対する応答をローカルデバイス6が行うように切替を行う(S18)。なお、ローカルデバイス初期化部45が、システムホスト2がアダプタ4の初期化を行う際に用いられたアダプタ4のレジスタにおけるレジスタ値を用いないで、ローカルデバイス6の初期化を行う形態も想定される。そのような形態では、アダプタ4内に初期化時レジスタ保持部43が設けられなくてもよい。
前述のようにローカルデバイス6のアダプタ4への挿入の後には以下のシーケンス(S20~S26)が行われる。つまり、システムホスト2のOS16が、ポーリングを行うことにより、デバイスドライバ18に対してローカルデバイス6の状態を確認(S20)すると、デバイスドライバ18はアダプタ4に対して、ローカルデバイス6が挿入されているか否かを確認する(S22)。アダプタ4は、デバイスドライバ18からのローカルデバイス状態確認に対して、(挿入されていれば)ローカルデバイス6が挿入されていることを通知し(S24)、デバイスドライバ18は、その通知事項を更にOS16に通知する(S26)。
2.2.3.ローカルデバイス抜去時の動作
次に、図4Bのシーケンス図(2)を用いて、ローカルデバイス6が抜かれた際のシーケンスを説明する。
なお、ローカルデバイス6の抜去の検出は、システムホスト2が担当することも考えられる。しかしながら、本実施の形態では、検出をより高速に行うために、アダプタ4内のハードウェア、即ち、挿抜検出部38が検出する構成を採用する。
まず、アダプタ4が、ローカルデバイス6が抜かれたことを電気信号の変化で挿抜検出部38により検出する(S30)と、アダプタ4のコマンド応答切替部42は、システムホスト2からのコマンドに対する応答をアダプタ4が行うように速やかに切替を行う(S32)。ここでの切替を行わなければ、システムホスト2のデバイスドライバ18がローカルデバイス6へアクセスするとエラー処理となるためである。
図2に示すブロック図に係る本実施の形態では、挿抜検出部38が、ローカルデバイス6が抜かれたことを検出すると、アダプタ4のコマンド応答切替部42は、ローカルデバイス6へ(システムホスト2に係る)コマンドを転送するのではなく、アダプタ4において(システムホスト2に係る)コマンドに応答するように、切替を行う。ローカルデバイス6へアクセスが必要なシステムホスト2からのリードコマンドやライトコマンドについては、アダプタ4は、エラー結果をシステムホスト2へ応答すると共に、ローカルデバイス6の状態が変更されたことを通知し、システムホスト2のOS16へ、ローカルデバイス6へのアクセスが必要なデータのリード(若しくは)ライトコマンドの要求をしないように通知する。
ローカルデバイス6抜去の直後には、更に以下のシーケンス(S34~S40)が行われる。システムホスト2のOS16が、ポーリングを行うことにより、デバイスドライバ18に対してローカルデバイス6の状態を確認(S34)すると、デバイスドライバ18はアダプタ4に対して、ローカルデバイス6が抜去されているか否かを確認する(S36)。アダプタ4は、デバイスドライバ18からのローカルデバイス状態確認に対して、(抜去されていれば)ローカルデバイス6が抜去されていることを通知し(S38)、デバイスドライバ18は、その通知事項を更にOS16に通知する(S40)。
2.2.4.ローカルデバイス再挿入時の動作
ローカルデバイス6の抜去を経て、ローカルデバイス6がアダプタ4に再挿入されると、上述の「2.2.2.ローカルデバイスの初期化時の動作」(S12~S26)が繰り返される。
2.3.効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト2と、及び、ローカルホスト10を備えるアダプタ4とを含むデータ転送システムである。アダプタ4は、ローカルデバイス6が挿入されて該ローカルデバイス6と接続可能である。アダプタ4は、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイス6とシステムホスト2との間でのデータ転送を行う高機能スイッチ部8を備える。ローカルデバイス6が抜去された場合、システムホスト2からローカルデバイス6へのコマンドは、アダプタ4が応答するように切り替わる。
より詳細には、高機能スイッチ部8は、更に、アダプタ4にローカルデバイス6が挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部38と、挿抜検出部38の検出情報に基づいて、システムホスト2からのコマンドに対する応答をアダプタ4が行うのか、若しくはローカルデバイス6が行うのか、の切替を行うコマンド応答切替部42と、システムホスト2がアダプタ4の初期化を行う際に用いられたアダプタ4のレジスタに、初期化の際設定されていた、レジスタ値を保持する初期化時レジスタ保持部43と、システムホスト2がアダプタ4の初期化を行う際にアダプタ4が受信した及び応答したコマンドを保持する初期化コマンド保持部44と、初期化コマンド保持部44が保持するコマンドに基づいて、ローカルデバイス6を初期化するローカルデバイス初期化部45とを備える。アダプタ4は、システムホスト2への電源投入後、アダプタ4の初期化時に、初期化時レジスタ保持部43にシステムホスト2からアダプタ4のレジスタに設定されたレジスタ値を保持するとともに、初期化コマンド保持部44にシステムホスト2からアダプタ4が受信した及び応答したコマンドを保持する。また、アダプタ4は、挿抜検出部38がローカルデバイス6の挿入を検出すると、ローカルデバイス初期化部45により、初期化時のレジスタ保持部43に保持されているレジスタ値と、初期化コマンド保持部44内に保持されているコマンドに基づいて、挿入されたローカルデバイス6を初期化し、ここで同時に、コマンド応答切替部42により、システムホスト2からのコマンドに対する応答をローカルデバイス6が行うように切替を行う。更に、アダプタ4は、挿抜検出部38がローカルデバイス6の抜去を検出すると、コマンド応答切替部42により、システムホスト2からのコマンドに対する応答をアダプタ4が行うように切替を行う。
これにより、データ転送システムにおいて、ローカルデバイス6の初期化処理後にローカルデバイス6が抜去されても、アダプタ4はシステムホスト2に応答することができる。
3.[実施の形態2]
次に、図5~図7を参照して実施の形態2を説明する。
3.1.データ転送システムの構成
図5は、実施の形態2に係るデータ転送システムのブロック図である。図5に示す実施の形態2に係るデータ転送システムは、図2に示す実施の形態1に係るデータ転送システムと、略同様の構成である。
特に、実施の形態2に係るデータ転送システムでは、システムホスト2が挿抜確認部23とドライバリロード部25を有する。挿抜確認部23は、アダプタ4の挿抜検出部38からの検出情報に基づいてローカルデバイス6のアダプタ4への挿抜の状況を確認する。ドライバリロード部25は、挿抜確認部23の確認情報に基づいて、アダプタ4の制御を行うデバイスドライバ18のリロードを行う。なお、挿抜確認部23及びドライバリロード部25は、メモリ20及びCPU24上に適宜のコンピュータプログラムをロードすることにより実現され得る。
3.2.データ転送システムの概略の動作
図6は、実施の形態2に係るデータ転送システム、特に、システムホスト2の動作概要を示すフローチャートである。
まず、アダプタ4に電源を投入された状態で、システムホスト2に対して電源投入、若しくは再起動(PowerON/Reboot)される(S50)。デバイスドライバ18がロードされてデバイスドライバ18の初期化とアダプタ4の初期化が行われる(S52)。このステップS52では、ローカルデバイス6が挿入されている状態であっても、まずアダプタ4の初期化が行われる。初期化が行われると、ローカルデバイス6の挿入を待つ状態になる(S54)。
ローカルデバイス6が既に挿入されていると、又は、ローカルデバイス6が挿入されると(即ち、挿抜確認部23が、ローカルデバイス6がアダプタ4へ挿入されていると確認すると)、ドライバリロード部25によりデバイスドライバ18のリロードが行われることにより、ローカルデバイス6の初期化が行われる(S56)。ここでデバイスドライバ18のリロードとは、一旦デバイスドライバ18をアンロードして削除し、直後に再度ロードすることによって、デバイスドライバ18に関する処理を最初から再び行うシーケンスのことである。
デバイスドライバ18のリロード処理及びローカルデバイス6の初期化処理(S56)が完了すると、ローカルデバイス(カード)6の抜去を待つ状態になる(S58)。ローカルデバイス(カード)6が抜かれると(即ち、挿抜確認部23が、ローカルデバイス6がアダプタ4から抜去されていると確認すると)、このときもデバイスドライバ18のリロードを行い、これによりここではアダプタ4の初期化が行われる(S60)。
デバイスドライバ18のリロード処理及びアダプタ4の初期化処理(S60)が完了すると、ローカルデバイス6の挿入を待つ状態になる(S54)。
3.3.データ転送システムの詳細な動作
図7は、実施の形態2に係るデータ転送システムにおける動作を具体的に説明するシーケンス図である。システムホスト2内には、OS(オペレーティングシステム)16とデバイスドライバ18とが存在する。
また、図7に示すように、システムホスト2内では、アダプタ4への制御を補助するアプリケーション15が常時動作している。例えば、OS(オペレーティングシステム)がMicrosoft Windows(登録商標)であるパソコンの場合、OS起動時に自動で動作し始める常駐アプリケーションに該当する。
3.3.1.ローカルデバイスの初期化時の動作
図7を用いて、電源投入(PowerON)からの動作を説明する。図7に示すように、まず、アダプタ4に電源を投入された状態で、PowerON(S61)によりシステムホスト2に対して電源が投入される。OS16は、PCIeのコンフィグレーション空間の初期化を最初に行う。この初期化後、PCIeのIDが本実施の形態に係るアダプタのIDであることを確認した場合、OS16はアダプタ4のデバイスドライバ18をロードする(S62)。ロードされたデバイスドライバ18は、アダプタ4に初期化を要求し(S64)、アダプタ4はデバイス情報に基づいて初期化を行い、利用可能な状態となる。なお、この時点で既にローカルデバイス6が挿入済みである場合でも、アダプタ4の初期化を行う。
アダプタ4は、初期化処理が終了しアダプタ4が利用可能な状態になったことを、デバイスドライバ18に対して通知する(S66)。デバイスドライバ18は、初期化処理が完了したことをOS16に対して通知する(S68)。
次に、ローカルデバイス6がアダプタ4に挿入された際の動作を説明する。なお、本実施の形態でも、システムホスト2の電源投入(PowerON)時にローカルデバイス6が既に挿入されているという場合において同様の動作となる(S70~)。
ローカルデバイス6がアダプタ4に挿入される(S70)。
本実施の形態では、システムホスト2のアプリケーション15が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、アプリケーション15はローカルデバイス6の挿抜の状態を確認する(S72、S74)。アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が挿入されていることを確認してデバイスドライバ18に通知する(S76)。それを受けてデバイスドライバ18は、ローカルデバイス(カード)6がアダプタ4に挿入されていることをアプリケーション15に通知する(S78)。挿抜確認部23は、ローカルデバイス6がアダプタ4へ挿入されている状況を確認する(把握する)。
アプリケーション15によりポーリングが行われることから、アプリケーション15及びデバイスドライバ18は、挿抜確認部23によりローカルデバイス6の挿入が確認されるまでポーリングによる確認を繰り返すことになる(図6・S54参照)。
挿抜確認部23によるローカルデバイス6の挿入の確認を受けて、ドライバリロード部25は、デバイスドライバ18のリロードを行う(S80~S86、S88~S90、S96~S98)。つまり、先ずアプリケーション15は、OS16に対してデバイスドライバ18のアンロードを要求する(S80)。アプリケーション15からの、デバイスドライバ18のアンロードの要求を受けて、OS16は、デバイスドライバ18のアンロードを行う(S82)。デバイスドライバ18のアンロードが完了すると、完了の通知がOS16に対して為され(S84)、それを受けてOS16は、アプリケーション15にデバイスドライバ18のアンロードの完了を通知する(S86)。
デバイスドライバ18のアンロードの完了を示す通知を受けて、アプリケーション15は、OS16に対してデバイスドライバ18のロードを要求する(S88)。アプリケーション15からの、デバイスドライバ18のロードの要求を受けて、OS16は、デバイスドライバ18のロードを行う(S90)。
デバイスドライバ18のリロード処理、即ち、アンロード処理(S80~S82)及びロード処理(S88~S90)により、デバイスドライバ18はローカルデバイス6へ初期化を要求する(S92)。ローカルデバイス6の初期化処理が完了すると、デバイスドライバ18に対して初期化処理の完了が通知される(S94)。そして、OS16を経由して、アプリケーション15に対して、デバイスドライバ18のロードの完了が通知される(S96、S98)。以上のS80~S90、S96~S98のように、ドライバリロード部25はデバイスドライバ18のリロード処理を実行する。このように、ローカルデバイス6が挿入されると、デバイスドライバ18のリロード処理を経て、ローカルデバイス6が確実に初期化される。
ローカルデバイス6の初期化処理後、通常のリード処理やライト処理などが行われる(S100)。
3.3.2.ローカルデバイス抜去時の動作
次に、ローカルデバイス6が抜かれた際のシーケンスを説明する。まず、アダプタ4が、ローカルデバイス6が抜かれたことを電気信号の変化で挿抜検出部38により検出する(S102)。
ローカルデバイス6抜去の後には、以下のシーケンス(S104~S126)が行われる。システムホスト2のアプリケーション15が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、アプリケーション15はローカルデバイス6の挿抜の状態を確認する(S104)。アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が抜去されていることを確認し、デバイスドライバ18を経由してアプリケーション15に通知する(S106)。挿抜確認部23は、ローカルデバイス6がアダプタ4から抜去されている状況を確認する(把握する)。
アプリケーション15によりポーリングが行われることから、アプリケーション15及びデバイスドライバ18は、ローカルデバイス6の抜去が確認されるまでポーリングによる確認を繰り返すことになる(図6・S58参照)。
挿抜確認部23によるローカルデバイス6の抜去の確認を受けて、ドライバリロード部25は、デバイスドライバ18のリロードを行う(S108~S114、S116~S118、S124~S126)。つまり、まずアプリケーション15は、OS16に対してデバイスドライバ18のアンロードを要求する(S108)。アプリケーション15からの、デバイスドライバ18のアンロードの要求を受けて、OS16は、デバイスドライバ18のアンロードを行う(S110)。デバイスドライバ18のアンロードが完了すると、完了の通知がOS16に対して為され(S112)、それを受けてOS16は、アプリケーション15にデバイスドライバ18のアンロードの完了を通知する(S114)。
デバイスドライバ18のアンロードの完了を示す通知を受けて、アプリケーション15は、OS16に対してデバイスドライバ18のロードを要求する(S116)。アプリケーション15からの、デバイスドライバ18のロードの要求を受けて、OS16は、デバイスドライバ18のロードを行う(S118)。
デバイスドライバ18のリロード処理、即ち、アンロード処理(S108~S110)及びロード処理(S116~S118)により、デバイスドライバ18はアダプタ4へ初期化を要求する(S120)。アダプタ4の初期化処理が完了すると、デバイスドライバ18に対して初期化処理の完了が通知される(S122)。そして、OS15を経由して、アプリケーション15に対して、デバイスドライバ18のロードの完了が通知される(S124、S126)。以上のS108~S118、S124~S126のように、ドライバリロード部25はデバイスドライバ18のリロード処理を実行する。このように、ローカルデバイス6が抜去されると、デバイスドライバ18のリロード処理を経て、アダプタ4が確実に初期化される。
3.3.3.ローカルデバイス再挿入時の動作
ローカルデバイス6の抜去を経て、ローカルデバイス6がアダプタ4に再挿入されると、上述の「3.3.1.ローカルデバイスの初期化時の動作」のうち、「ローカルデバイス6のアダプタ4への挿入」(S70)から「ローカルデバイス6の初期化処理完了の、デバイスドライバ18への通知」(S98)までが繰り返される。つまり、初期化処理により、再挿入されたローカルデバイス6が使用可能な状態となるまでの動作が行われる。
3.4.効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト2と、及び、ローカルホスト10を備えるアダプタ4とを含むデータ転送システムである。アダプタ4は、ローカルデバイス6が挿入されて該ローカルデバイス6と接続可能である。アダプタ4は、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイス6とシステムホスト2との間でのデータ転送を行う高機能スイッチ部8を備える。ローカルデバイス6が抜去された場合、システムホスト2からローカルデバイス6へのコマンドは、アダプタ4が応答するように切り替わる。
より詳細には、高機能スイッチ部8は、更に、アダプタ4にローカルデバイス6が挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部38を備える。システムホスト2は、更に、挿抜検出部38からの検出情報に基づいてローカルデバイス6の挿抜の状況を確認する挿抜確認部23と、挿抜確認部23の確認情報に基づいて、アダプタ4の制御を行うデバイスドライバ18のリロードを行うドライバリロード部25とを備える。システムホスト2は、システムホスト2への電源投入後、デバイスドライバ18のロードを行い、ロードされたデバイスドライバ18により、アダプタ4を初期化する。ここでは、既に、ローカルデバイス6が挿入済みの場合でも、アダプタ4の初期化を行う。また、システムホスト2は、挿抜確認部23がローカルデバイス6の挿入を確認すると、ドライバリロード部25によりデバイスドライバ18のリロードを行い、リロードされたデバイスドライバ18により、挿入されたローカルデバイス6を初期化する。更に、システムホスト2は、挿抜確認部23がローカルデバイス6の抜去を確認すると、ドライバリロード部25によりデバイスドライバ18のリロードを行い、リロードされたデバイスドライバ18により、アダプタ4を初期化する。
これにより、データ転送システムにおいて、ローカルデバイス6の初期化処理後にローカルデバイス6が抜去されても、アダプタ4はシステムホスト2に応答することができる。
4.[実施の形態3]
次に、図8~図17を参照して実施の形態3を説明する。
4.1.データ転送システムの概略の構成
図8は、実施の形態3に係るデータ転送システムの概略のブロック図である。図8に示すように、実施の形態3に係るデータ転送システムは、実施の形態1又は実施の形態2に係るデータ転送システムと略同様に、システムホスト2、ローカルホスト10を含むアダプタ4、及び、不揮発性メモリ14を含むローカルデバイス(PCIeデバイス)6が、PCIeバス及びスロット12により接続されている。ローカルデバイス(PCIeデバイス)6は、例えば、リムーバブルメディアであり、更に、特定の種類のものに限定されない。
特に、実施の形態3に係るデータ転送システムでは、ローカルデバイス6は、DMA(Direct Memory Access)機能を有するDMA部(13a、13b)を含む。例えば、第1のローカルデバイス(ローカルデバイス(1))6aは、32ビット空間内のみへの転送に対応する32ビット対応DMA部13aを有し、第2のローカルデバイス(ローカルデバイス(2))6bは、64ビット空間内への転送に対応する64ビット対応DMA部13bを有する。64ビット対応DMA部13bは、ローカルデバイスがPCIeバスに対してマスタ動作(マスタ転送)を行い、転送先の64ビットアドレス空間のどこに対してもマスタ転送ができる、という機能を有するものである。この64ビット対応DMA部13bに対して、32ビット対応DMA部13aは、ローカルデバイスがPCIeバスに対してマスタ動作(マスタ転送)を行うが、32ビットアドレス空間内での転送に制約され、33ビットを超える領域へは転送ができない、という機能を有するものである。
本実施の形態では、転送先のアドレス空間に制約がある複数種類のDMA機能の例として、32ビットのものと64ビットのものを採り上げている。DMA機能は、16ビットアドレス空間内での転送に制約されるものや、64ビットを超えるビットのアドレス空間内での転送に制約されるものであってもよく、要するに、制約を受けるアドレス空間のビット数には特に制限が無い。
4.2.データ転送システムの詳細な構成
図9は、実施の形態3に係るデータ転送システムのより詳細なブロック図である。図9に示す実施の形態3に係るデータ転送システムは、図2及び図5に示す実施の形態1及び実施の形態2に係るデータ転送システムと、同様の構成である。まず、実施の形態3に係るデータ転送システムでは、アダプタ4の高機能スイッチ部8が32/64ビット検出部36及び32/64ビット通知部34を有する。これら32/64ビット検出部36及び32/64ビット通知部34については、後で詳しく説明する。
また、実施の形態3に係るデータ転送システムでは、システムホスト2のメモリ20が64ビット空間まで存在する。図9では、メモリ20における64ビット領域20bと32ビット領域20aとを明示している。このメモリ20へのアクセスについて、システムホスト2内のCPU24からは64ビット空間の全領域へアクセス可能である。更に、アダプタ4の高機能スイッチ部8からも、64ビット空間の全領域へアクセス可能である。
ここで、第2のローカルデバイス(ローカルデバイス(2))6bにおいては、64ビット対応DMA部13bを有していることにより、高機能スイッチ部8によるアドレス変換及びReq(リクエスタ)ID変換を用いて、システムホスト2及びローカルデバイス6間で直接パケットを転送する場合であっても、システムホスト2内の64ビット空間の全領域へアクセス可能である。しかしながら、第1のローカルデバイス(ローカルデバイス(1))6aにおいては、64ビット空間の全領域への(データ又はパケット)転送に対応しない32ビット対応DMA部13aしか備えないため、システムホスト2内のメモリ20の32ビット領域への(データ又はパケット)転送しか対応できない。
このことを踏まえて、システムホスト2内にはデータコピー部19が設けられている。データコピー部19は、32ビット対応のDMA機能しか有していない第1のローカルデバイス(ローカルデバイス(1))6aによる転送において、システムホスト2内にて32ビット空間と64ビット空間とへの転送を行う、データコピーを実施する。
ここで、図10は、実施の形態3に対する参考例のデータ転送システムを詳細に示すブロック図である。図10に示す参考例のデータ転送システムは、実施の形態3に係るデータ転送システムと同様のものであり、システムホスト2内にデータコピー部19が設けられているが、アダプタ4の高機能スイッチ部8内に32/64ビット検出部36及び32/64ビット通知部34は設けられていない。
図10に示す参考例のデータ転送システムを踏まえて、データコピー部19について更に説明する。システムホスト2でのユーザレベルのアプリケーションは、64ビット空間を全て使って動作するので、ユーザが要求する領域へのダイレクトの転送は、第1のローカルデバイス(ローカルデバイス(1))6aによっては対応することができない。そこで、第1のローカルデバイス(ローカルデバイス(1))6aでの転送時には、システムホスト2内のOS16と、アダプタ4を制御するデバイスドライバ18とにおいて、第1のローカルデバイス(ローカルデバイス(1))6aの32ビット対応DMA部13aにより、32ビット領域への転送を行った後に、データコピー部19が、ユーザにより要求される領域へデータコピーする、というシーケンスにより、対応される。
ここで問題となる点は、アダプタ4の機能としてOS16とデバイスドライバ18との機能が定義されることにより、64ビット対応DMA部13bを有する第2のローカルデバイス(ローカルデバイス(2))6bによっても、データコピー部19によるデータコピーを行う転送でしか動作できない、ということである。このことによるデメリットとして、
(1)データコピーの多発により、システムホスト2内のメモリバスの帯域が余分に使用されること、及び、転送に要する時間が増大することで、ローカルデバイス6とのデータ転送性能が低下する点、並びに、
(2)システムホスト2内のリソースが余計に消費されることで、他のアプリケーションの処理性能が低下する点
などが挙げられる。即ち、第2のローカルデバイス(ローカルデバイス(2))6bが64ビット対応DMA部13bを有しているとしても、その機能が、低機能側の機能(例えば、32ビット対応のDMA機能)に制約されてしまう点が、問題となる。
そこで、図9に示すように、実施の形態3に係るデータ転送システムでは、アダプタ4の高機能スイッチ部8が32/64ビット検出部36及び32/64ビット通知部34を有する。前述のように、ローカル制御部58は、ローカルデバイス6のコンフィグレーションレジスタを読み出して、ローカルデバイス6の種別を判別する。この種別に基づいて、ローカルデバイス6が、32ビット対応DMA部13aを有するのか、又は、64ビット対応DMA部13bを有するのか、32/64ビット検出部36が種別を検出する。32/64ビット通知部34は、32/64ビット検出部36により検出された種別を、システムホスト2のデバイスドライバ18に通知する。
アダプタ4の高機能スイッチ部8が32/64ビット検出部36及び32/64ビット通知部34を有することにより、64ビット対応DMA部13bを有する第2のローカルデバイス(ローカルデバイス(2))6bは、パケット転送において64ビット空間の全領域へダイレクトにアクセスすることができる。
4.3.データ転送システムの動作
4.3.1.32ビット対応DMA部を有するローカルデバイスへの書き込み動作
図11~図13は、システムホスト2から、アダプタ4に挿入されている、32ビット対応DMA部13aを有する第1のローカルデバイス(ローカルデバイス(1))6aへ、データを書き込む際の動きを模式的に示すブロック図である。図11~図13では、(システムホスト2内の)64ビット領域20bと32ビット領域20aを有するメモリ20、アダプタ4、及びローカルデバイス6のみが、示されている。
なお、図11の時点にて、32/64ビット検出部36は、ローカルデバイス6が32ビット対応DMA部13aを有することを検出している。更に、32/64ビット通知部34は、32/64ビット検出部36により、ローカルデバイス6が32ビット対応DMA部13aを有することを検出された、ということを、システムホスト2のデバイスドライバ18に通知している。
まず、図11に示すように、メモリ20の64ビット領域20b内のデータ1(a)、2(a)、3(a)が、ローカルデバイス6に書き込まれるものとする。
次に、図12に示すように、データコピー部19により、メモリ20の64ビット領域20b内のデータ1(a)、2(a)、3(a)が、メモリ20の32ビット領域20a内のデータ1(b)、2(b)、3(b)にコピーされる。
次に、図13に示すように、書き込みを示すコマンドCMD(a)について、64ビット対応のものが、32ビット対応のコマンドCMD(b)へ、再生成される。32ビット領域20a内のデータ1(b)、2(b)、3(b)が、アダプタ4を介して、ローカルデバイス6へ転送される。ローカルデバイス6への転送が完了すると、ローカルデバイス6からシステムホスト2へ完了が通知される。
なお、ローカルデバイス6が64ビット対応DMA部13bを有するものである場合、32/64ビット検出部36は、ローカルデバイス6が64ビット対応DMA部13bを有することを検出する。更に、32/64ビット通知部34は、32/64ビット検出部36により、ローカルデバイス6が64ビット対応DMA部13bを有することを検出された、ということを、システムホスト2のデバイスドライバ18に通知する。このことにより、ローカルデバイス6と、システムホスト2とは、データコピー部19を用いること無く、64ビット空間におけるデータ及びパケット転送を行う。
4.3.2.32ビット対応DMA部を有するローカルデバイスからの読み取り動作
図14~図17は、アダプタ4に挿入されている、32ビット対応DMA部13aを有する第1のローカルデバイス(ローカルデバイス(1))6aから、システムホスト2へ、データを読み取る際の動きを模式的に示すブロック図である。図14~図17でも、(システムホスト2内の)64ビット領域20bと32ビット領域20aを有するメモリ20、アダプタ4、及びローカルデバイス6のみが、示されている。
なお、図14の時点にて、32/64ビット検出部36は、ローカルデバイス6が32ビット対応DMA部13aを有することを検出している。更に、32/64ビット通知部34は、32/64ビット検出部36により、ローカルデバイス6が32ビット対応DMA部13aを有することを検出された、ということを、システムホスト2のデバイスドライバ18に通知している。
まず、図14に示すように、最終的にデータを格納する領域を64ビット領域20b内に確保する(データ1(a)、2(a)、3(a))。同時に、32ビット領域20a内に、対応する領域(データ1(b)、2(b)、3(b))を確保する。これらの「対応する領域」は、ローカルデバイス6から読み取られたデータを一旦格納して、データコピー部19により、64ビット領域20b内の最終領域(データ1(a)、2(a)、3(a))にコピーするための、中間領域である。
次に、図15に示すように、読み取りを示すコマンドCMD(a)について、64ビット対応のものが、32ビット対応のコマンドCMD(b)へ、再生成される。
次に、図16に示すように、ローカルデバイス6のデータが、アダプタ4を介して、32ビット領域20a内へ(即ち、データ1(b)、2(b)、3(b)へ)、転送される。32ビット領域20a内への転送が完了すると、ローカルデバイス6からシステムホスト2へ完了が通知される。
次に、図17に示すように、データコピー部19により、メモリ20の32ビット領域20a内のデータ1(b)、2(b)、3(b)が、メモリ20の64ビット領域20b内のデータ1(a)、2(a)、3(a)にコピーされる。
なお、ローカルデバイス6が64ビット対応DMA部13bを有するものである場合、32/64ビット検出部36は、ローカルデバイス6が64ビット対応DMA部13bを有することを検出する。更に、32/64ビット通知部34は、32/64ビット検出部36により、ローカルデバイス6が64ビット対応DMA部13bを有することを検出された、ということを、システムホスト2のデバイスドライバ18に通知する。このことにより、ローカルデバイス6と、システムホスト2とは、データコピー部19を用いること無く、64ビット空間におけるデータ及びパケット転送を行う。
4.4.データ転送システムの詳細な動作
図18は、実施の形態3に係るデータ転送システムにおける動作を具体的に説明するシーケンス図である。システムホスト2内には、OS(オペレーティングシステム)16とデバイスドライバ18とが存在する。また、図18に示すように、システムホスト2内では、アダプタ4への制御を補助するアプリケーション15が常時動作している。
4.4.1.ローカルデバイスの初期化時の動作
図18を用いて、電源投入(PowerON)からの動作を説明する。図18に示すように、まず、アダプタ4に電源を投入された状態で、PowerON(S131)によりシステムホスト2に対して電源が投入される。OS16は、PCIeのコンフィグレーション空間の初期化を最初に行う。この初期化後、PCIeのIDが本実施の形態に係るアダプタのIDであることを確認した場合、OS16はアダプタ4のデバイスドライバ18をロードする(S132)。このとき、OS16は、アダプタ4へのローカルデバイス(カード)6の挿入確認を行うが、ローカルデバイス6の存在不存在に拘わらず、アダプタ4はまず、ローカルデバイス6の未挿入確認をOS16に返す。ロードされたデバイスドライバ18は、アダプタ4に初期化を要求し(S134)、アダプタ4はデバイス情報に基づいて初期化を行い、利用可能な状態となる。なお、この時点で既にローカルデバイス6が挿入済みである場合でも、アダプタ4の初期化を行う。
アダプタ4は、初期化処理が終了しアダプタ4が利用可能な状態になったことを、デバイスドライバ18に対して通知する(S136)。デバイスドライバ18は、初期化処理が完了したことをOS16に対して通知する(S138)。
次に、ローカルデバイス6がアダプタ4に挿入された際の動作を説明する。なお、本実施の形態でも、システムホスト2の電源投入(PowerON)時にローカルデバイス6が既に挿入されているという場合において同様の動作となる(S140~)。
ローカルデバイス6がアダプタ4に挿入される(S140)。
本実施の形態では、システムホスト2のアプリケーション15が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、アプリケーション15はローカルデバイス6の挿抜の状態を確認する(S142、S144)。アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が挿入されていることを確認してデバイスドライバ18に通知する(S146)。それを受けてデバイスドライバ18は、ローカルデバイス(カード)6がアダプタ4に挿入されていることをアプリケーション15に通知する(S148)。挿抜確認部23は、ローカルデバイス6がアダプタ4へ挿入されている状況を確認する(把握する)。
アプリケーション15によりポーリングが行われることから、アプリケーション15及びデバイスドライバ18は、挿抜確認部23によりローカルデバイス6の挿入が確認されるまでポーリングによる確認を繰り返すことになる。
挿抜確認部23によるローカルデバイス6の挿入の確認を受けて、ドライバリロード部25は、デバイスドライバ18のリロードを行う(S150~S156、S158~S160、S176~S178)。つまり、先ずアプリケーション15は、OS16に対してデバイスドライバ18のアンロードを要求する(S150)。アプリケーション15からの、デバイスドライバ18のアンロードの要求を受けて、OS16は、デバイスドライバ18のアンロードを行う(S152)。デバイスドライバ18のアンロードが完了すると、完了の通知がOS16に対して為され(S154)、それを受けてOS16は、アプリケーション15にデバイスドライバ18のアンロードの完了を通知する(S156)。
デバイスドライバ18のアンロードの完了を示す通知を受けて、アプリケーション15は、OS16に対してデバイスドライバ18のロードを要求する(S158)。アプリケーション15からの、デバイスドライバ18のロードの要求を受けて、OS16は、デバイスドライバ18のロードを行う(S160)。
デバイスドライバ18のリロード処理、即ち、アンロード処理(S150~S152)及びロード処理(S158~S160)により、デバイスドライバ18は、ローカルデバイス6の有するアクセス機能を検出するように、アダプタ4に対して通知する(S162)。
ここでの、ローカルデバイス6の有するアクセス機能とは、ローカルデバイスにおける、ダイレクトメモリアクセス(DMA)機能の転送アドレスのうち転送先アドレスに関する制約であり、例えば、DMAが64ビット空間対応のものか又は32ビット空間対応のものか、を示す種別(64ビット空間対応のカードか又は32ビット空間対応のカードかを示す種別)である。
アダプタ4は、ローカルデバイス6の有するアクセス機能、即ち、ローカルデバイス6の種別を確認して(S164)取得する(S166)。アダプタ4は、ローカルデバイス6の有するアクセス機能(ローカルデバイス(カード)6の種別)をデバイスドライバ18に通知する(S168)。ローカルデバイス(カード)6の種別の通知を受けて、デバイスドライバ18は、OS16に対して、ローカルデバイス6に備わるDMA部が、64ビット対応DMA部13bであるのか、又は32ビット対応DMA部13aであるのか、を通知する(S170)。ここでのローカルデバイス6の種別の確認、及び、ローカルデバイス6の種別の通知は、32/64ビット検出部36及び32/64ビット通知部34を用いて行われる。デバイスドライバ18は、検出された、ローカルデバイス6の有するアクセス機能(ローカルデバイス(カード)6の種別)に基づいて、デバイスドライバ18自身の備える機能の切り替えを行う。
更に、デバイスドライバ18のリロード処理、即ち、アンロード処理(S150~S152)及びロード処理(S158~S160)により、デバイスドライバ18はローカルデバイス6へ初期化を要求する(S172)。ローカルデバイス6の初期化処理が完了すると、デバイスドライバ18に対して初期化処理の完了が通知される(S174)。そして、OS16を経由して、アプリケーション15に対して、デバイスドライバ18のロードの完了が通知される(S176、S178)。以上のS150~S178のように、ドライバリロード部25はデバイスドライバ18のリロード処理を実行する。
ローカルデバイス6の初期化処理後、通常のライト処理やリード処理などが行われる(S180)。ライト処理及びリード処理の内容は、図11~図13(書き込み処理)、及び図14~図17(読み取り処理)に示すものである。
4.4.2.ローカルデバイス抜去時の動作
次に、ローカルデバイス6が抜かれた際のシーケンスを説明する。まず、アダプタ4が、ローカルデバイス6が抜かれたことを電気信号の変化で挿抜検出部38により検出する(S182)。
ローカルデバイス6抜去の後には、以下のシーケンス(S184~S206)が行われる。システムホスト2のアプリケーション15が(例えば、1秒程度の)一定間隔にて定期的にデバイスドライバ18を経由してアダプタ4に対してポーリングを行うことにより、アプリケーション15はローカルデバイス6の挿抜の状態を確認する(S184)。アダプタ4は、挿抜検出部38の検出情報に基づいて、ローカルデバイス6が抜去されていることを確認し、デバイスドライバ18を経由してアプリケーション15に通知する(S186)。挿抜確認部23は、ローカルデバイス6がアダプタ4から抜去されている状況を確認する(把握する)。
アプリケーション15によりポーリングが行われることから、アプリケーション15及びデバイスドライバ18は、ローカルデバイス6の抜去が確認されるまでポーリングによる確認を繰り返すことになる。
挿抜確認部23によるローカルデバイス6の抜去の確認を受けて、ドライバリロード部25は、デバイスドライバ18のリロードを行う(S188~S194、S196~S198、S204~S206)。つまり、まずアプリケーション15は、OS16に対してデバイスドライバ18のアンロードを要求する(S188)。アプリケーション15からの、デバイスドライバ18のアンロードの要求を受けて、OS16は、デバイスドライバ18のアンロードを行う(S190)。デバイスドライバ18のアンロードが完了すると、完了の通知がOS16に対して為され(S192)、それを受けてOS16は、アプリケーション15にデバイスドライバ18のアンロードの完了を通知する(S194)。
デバイスドライバ18のアンロードの完了を示す通知を受けて、アプリケーション15は、OS16に対してデバイスドライバ18のロードを要求する(S196)。アプリケーション15からの、デバイスドライバ18のロードの要求を受けて、OS16は、デバイスドライバ18のロードを行う(S198)。
デバイスドライバ18のリロード処理、即ち、アンロード処理(S188~S190)及びロード処理(S196~S198)により、デバイスドライバ18はアダプタ4へ初期化を要求する(S200)。アダプタ4の初期化処理が完了すると、デバイスドライバ18に対して初期化処理の完了が通知される(S202)。そして、OS15を経由して、アプリケーション15に対して、デバイスドライバ18のロードの完了が通知される(S204、S206)。以上のS188~S198、S204~S206のように、ドライバリロード部25はデバイスドライバ18のリロード処理を実行する。
なお、上述のシーケンスでは、電源投入直後、ローカルデバイス6の存在不存在に拘わらず、アダプタ4はまず、ローカルデバイス6の未挿入確認をOS16に返したが、電源投入時にローカルデバイス6が既に存在していた場合、デバイスドライバ18内でローカルデバイス6の初期化を実施するようにしてもよく、よって、デバイスドライバ18のリロードを回避するようにしてもよい。
4.5.効果等
以上のように、本実施の形態において、データ転送システムは、システムホスト2と、及び、ローカルホスト10を備えるアダプタ4とを含むデータ転送システムである。アダプタ4は、ローカルデバイス6が挿入されて該ローカルデバイス6と接続可能である。アダプタ4は、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、ローカルデバイス6とシステムホスト2との間でのデータ転送を行う高機能スイッチ部8を備える。ローカルホスト10は、ローカルデバイス6のコンフィグレーションレジスタを読み出して、ローカルデバイス6の種別を判別するローカル制御部58を備える。高機能スイッチ部8は、更に、ローカル制御部58により判別されるローカルデバイス6の種別に基づいて、ローカルデバイス6が、32ビット対応DMA部13aを有するのか、又は、64ビット対応DMA部13bを有するのか、の種別を検出する32/64ビット検出部36と、32/64ビット検出部36により検出された種別を、システムホスト2のデバイスドライバ18に通知する32/64ビット通知部34を備える。
これにより、データ転送システムは、ローカルデバイス6が32ビット対応DMAを備えるメディアであっても、64ビット対応DMAを備えるメディアであっても、PCIeバス利用システムの全体機能を低下させない。
5.他の実施の形態
以上のように、本出願において開示する技術の例示として、実施の形態1~3を説明した。しかしながら、本開示における技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、上記実施の形態1~3で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。
上述の実施の形態1~3では、PCIeを使用するシステムを例に採って説明を行ったが、共通の類似技術であるPCIバスを有するローカルデバイスに対して、アダプタ内でPCIeとPCIの変換を行うシステムに対しても、上述の実施の形態に係る技術は適用可能であり、更に、同等の効果を得ることができる。
更に、上述の実施の形態がアダプタに適用されることを説明したが、(例えば、ローカルホスト及び高機能スイッチ部を備える)アダプタは例に過ぎず、アダプタが、システムホストのローカルバス(例えば、PCIeバス)のスロットに直接挿入される(例えば、PCIeコネクタを有する)アドインカード形式のカードであっても、上述の実施の形態に係る技術は適用可能であり、同等の効果を得ることができる。
また、上述の実施の形態では、システムホストとアダプタ間のプロトコルとしてNVMeプロトコルを例に採って説明したが、アダプタの機能をNVMe以外のコマンドやレジスタで拡張する場合に拡張機能は常にアダプタ側で応答する、ということも実施の形態に含めることが可能である。
また、実施の形態を説明するために、添付図面および詳細な説明を提供した。したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
また、上述の実施の形態は、本開示における技術を例示するためのものであるから、特許請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
本開示は、リムーバブルメディアが装着される情報処理装置に適用可能である。具体的には、ビデオサーバなどに本開示は適用可能である。
2・・・システムホスト、4・・・アダプタ、6・・・ローカルデバイス、6a・・・第1のローカルデバイス(ローカルデバイス(1))、6b・・・第2のローカルデバイス(ローカルデバイス(2))、8・・・高機能スイッチ部、10・・・ローカルホスト、12・・・スロット、13a・・・32ビット対応DMA部、13b・・・64ビット対応DMA部、14・・・不揮発性メモリ、16・・・OS(オペレーティングシステム)18・・・デバイスドライバ、20・・・メモリ、22・・・ルートコンプレクス、23・・・挿抜確認部、24・・・CPU、25・・・ドライバリロード部、27・・・NTポート(USP)、28・・・NTポート(DSP)、30・・・イベント通知部、34・・・32/64ビット通知部、36・・・32/64ビット検出部、38・・・挿抜検出部、40・・・パケット転送部、42・・・コマンド応答切替部、43・・・初期化時レジスタ保持部、44・・・初期化コマンド保持部、45・・・ローカルデバイス初期化部、46・・・アドレス変換部、48・・・Req(リクエスタ)ID変換部、50・・・PCIeスイッチ、58・・・ローカル制御部、68・・・ルートコンプレクス、70・・・メモリ、76・・・コマンド解析部、78・・・データ転送部。

Claims (14)

  1. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記ローカルデバイスが抜去された場合、前記システムホストから前記ローカルデバイスへのコマンドは、前記アダプタが応答するように切り替わり、
    前記高機能スイッチ部は、更に、
    前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部と、
    前記挿抜検出部の検出情報に基づいて、前記システムホストからのコマンドに対する応答を前記アダプタが行うのか、若しくはローカルデバイスが行うのか、の切替を行うコマンド応答切替部と、
    前記システムホストがアダプタの初期化を行う際に前記アダプタが受信した及び応答したコマンドを保持する初期化コマンド保持部と、
    前記初期化コマンド保持部が保持するコマンドに基づいて、ローカルデバイスを初期化するローカルデバイス初期化部と
    を備え、
    前記アダプタは、
    前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化コマンド保持部に前記システムホストから前記アダプタが受信した及び応答したコマンドを保持し、
    前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行い、
    前記挿抜検出部がローカルデバイスの抜去を検出すると、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答を前記アダプタが行うように切替を行う、
    データ転送システム。
  2. 請求項1に記載のデータ転送システムであって、
    前記高機能スイッチ部は、更に、
    前記システムホストが前記アダプタの初期化を行う際に、前記アダプタのレジスタに設定されていたレジスタ値を保持する初期化時レジスタ保持部を備え、
    前記アダプタは、
    前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化時レジスタ保持部に前記システムホストから前記アダプタの前記レジスタに設定されたレジスタ値を保持し、
    前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化時レジスタ保持部内に保持されているレジスタ値と、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行う、
    データ転送システム。
  3. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記ローカルデバイスが抜去された場合、前記システムホストから前記ローカルデバイスへのコマンドは、前記アダプタが応答するように切り替わり、
    前記高機能スイッチ部は、更に、
    前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部を備え、
    前記システムホストは、更に、
    前記挿抜検出部からの検出情報に基づいてローカルデバイスの挿抜の状況を確認する挿抜確認部と、
    前記挿抜確認部の確認情報に基づいて、前記アダプタの制御を行うデバイスドライバのリロードを行うドライバリロード部と
    を備え、
    前記システムホストは、
    前記システムホストへの電源投入後、デバイスドライバのロードを行い、ロードされたデバイスドライバにより、前記アダプタを初期化し、
    前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、挿入されたローカルデバイスを初期化し、
    前記挿抜確認部がローカルデバイスの抜去を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記アダプタを初期化する、
    データ転送システム。
  4. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記高機能スイッチ部は、
    前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部と、
    前記挿抜検出部の検出情報に基づいて、前記システムホストからのコマンドに対する応答を前記アダプタが行うのか、若しくはローカルデバイスが行うのか、の切替を行うコマンド応答切替部と、
    前記システムホストがアダプタの初期化を行う際に前記アダプタが受信した及び応答したコマンドを保持する初期化コマンド保持部と
    前記初期化コマンド保持部が保持するコマンドに基づいて、ローカルデバイスを初期化するローカルデバイス初期化部と
    を備える、
    データ転送システムにおいて、
    前記アダプタは、
    前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化コマンド保持部に前記システムホストから前記アダプタが受信した及び応答したコマンドを保持し、
    前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行い、
    前記挿抜検出部がローカルデバイスの抜去を検出すると、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答を前記アダプタが行うように切替を行うものである
    前記データ転送システムに含まれる前記アダプタ。
  5. 請求項4に記載のアダプタであって、
    前記高機能スイッチ部は、更に、
    前記システムホストが前記アダプタの初期化を行う際に、前記アダプタのレジスタに設定されていたレジスタ値を保持する初期化時レジスタ保持部を備え、
    前記アダプタは、
    前記システムホストへの電源投入後、前記アダプタの初期化時に前記初期化時レジスタ保持部に前記システムホストから前記アダプタの前記レジスタに設定されたレジスタ値を保持し、
    前記挿抜検出部がローカルデバイスの挿入を検出すると、前記ローカルデバイス初期化部により、前記初期化時のレジスタ保持部内に保持されているレジスタ値と、前記初期化コマンド保持部内に保持されているコマンドに基づいて、挿入されたローカルデバイスを初期化し、ここで同時に、前記コマンド応答切替部により、前記システムホストからのコマンドに対する応答をローカルデバイスが行うように切替を行うものである
    前記データ転送システムに含まれる前記アダプタ。
  6. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスと前記システムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記高機能スイッチ部は、
    前記アダプタにローカルデバイスが挿入されているか、又は、抜去されているか、の状態の変化を検出する挿抜検出部を備える、
    データ転送システムにおいて、
    前記システムホストは、
    前記挿抜検出部からの検出情報に基づいてローカルデバイスの挿抜の状況を確認する挿抜確認部と、
    前記挿抜確認部の確認情報に基づいて、前記アダプタの制御を行うデバイスドライバのリロードを行うドライバリロード部と
    を備え、
    電源投入後、デバイスドライバのロードを行い、ロードされたデバイスドライバにより、前記アダプタを初期化し、
    前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、挿入されたローカルデバイスを初期化し、
    前記挿抜確認部がローカルデバイスの抜去を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記アダプタを初期化するものである
    前記データ転送システムに含まれる前記システムホスト。
  7. 請求項6に記載のシステムホストであって、
    前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
    システムホスト。
  8. 前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
    請求項3に記載のデータ転送システムであって、
    前記ローカルデバイスの有するアクセス機能は、ダイレクトメモリアクセス機能の転送アドレスの、転送先アドレスに関する制約である、
    データ転送システム。
  9. 前記挿抜確認部がローカルデバイスの挿入を確認すると、前記ドライバリロード部によりデバイスドライバのリロードを行い、リロードされたデバイスドライバにより、前記ローカルデバイスの有するアクセス機能を検出して、デバイスドライバの機能を切り替えると共に、挿入されたローカルデバイスを初期化する、
    請求項3に記載のデータ転送システムであって、
    前記ローカルデバイスの有するアクセス機能は、ダイレクトメモリアクセスが64ビット空間対応のものか、又は32ビット空間対応のものか、を示す種別である、
    データ転送システム。
  10. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスとシステムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記ローカルホストは、前記ローカルデバイスのコンフィグレーションレジスタを読み出して、前記ローカルデバイスの種別を判別するローカル制御部を備え、
    前記高機能スイッチ部は、更に、
    前記ローカル制御部により判別される前記ローカルデバイスの種別に基づいて、前記ローカルデバイスが、32ビット対応DMA(ダイレクトメモリアクセス)部を有するのか、又は、64ビット対応DMA(ダイレクトメモリアクセス)部を有するのか、の種別を検出する32/64ビット検出部と、
    前記32/64ビット検出部により検出された種別を、前記システムホストにおける、前記アダプタの制御を行うデバイスドライバに通知する32/64ビット通知部
    を備える、
    データ転送システム。
  11. システムホストと、及び、ローカルホストを備えるアダプタとを含むデータ転送システムであって、
    前記アダプタは、ローカルデバイスが挿入されて該ローカルデバイスと接続可能であり、
    前記アダプタは、PCIeバスを利用して、アドレス変換及びReq(リクエスタ)ID変換により、前記ローカルデバイスとシステムホストとの間でのデータ転送を行う高機能スイッチ部を備え、
    前記ローカルホストは、前記ローカルデバイスのコンフィグレーションレジスタを読み出して、前記ローカルデバイスの種別を判別するローカル制御部を備える、
    データ転送システムにおいて、
    前記高機能スイッチ部は、更に、
    前記ローカル制御部により判別される前記ローカルデバイスの種別に基づいて、前記ローカルデバイスが、32ビット対応DMA(ダイレクトメモリアクセス)部を有するのか、又は、64ビット対応DMA(ダイレクトメモリアクセス)部を有するのか、の種別を検出する32/64ビット検出部と、
    前記32/64ビット検出部により検出された種別を、前記システムホストにおける、前記アダプタの制御を行うデバイスドライバに通知する32/64ビット通知部
    を備える、
    前記データ転送システムに含まれる前記アダプタ。
  12. 前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
    請求項1~3、8~10のうちのいずれか一に記載のデータ転送システム。
  13. 前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
    請求項4、5、11のうちのいずれか一に記載のアダプタ。
  14. 前記アダプタは、前記システムホストのローカルバスのスロットに直接接続されるカード形式のアドインカードであることを特徴とする
    請求項6又は7に記載のシステムホスト。
JP2017143931A 2017-07-25 2017-07-25 データ転送システム、アダプタ、及びシステムホスト Active JP7054807B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017143931A JP7054807B2 (ja) 2017-07-25 2017-07-25 データ転送システム、アダプタ、及びシステムホスト

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017143931A JP7054807B2 (ja) 2017-07-25 2017-07-25 データ転送システム、アダプタ、及びシステムホスト

Publications (2)

Publication Number Publication Date
JP2019028513A JP2019028513A (ja) 2019-02-21
JP7054807B2 true JP7054807B2 (ja) 2022-04-15

Family

ID=65476310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017143931A Active JP7054807B2 (ja) 2017-07-25 2017-07-25 データ転送システム、アダプタ、及びシステムホスト

Country Status (1)

Country Link
JP (1) JP7054807B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021075154A1 (ja) 2019-10-16 2021-04-22 パナソニックIpマネジメント株式会社 データ転送システム、及びシステムホスト

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046722A (ja) 2006-08-11 2008-02-28 Nec Corp I/o装置及び方法
US20120036306A1 (en) 2010-08-05 2012-02-09 Fujitsu Limited Switching circuit, information processing apparatus, and switching circuit control method
JP2014002545A (ja) 2012-06-18 2014-01-09 Ricoh Co Ltd データ転送装置、及びデータ転送方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046722A (ja) 2006-08-11 2008-02-28 Nec Corp I/o装置及び方法
US20120036306A1 (en) 2010-08-05 2012-02-09 Fujitsu Limited Switching circuit, information processing apparatus, and switching circuit control method
JP2014002545A (ja) 2012-06-18 2014-01-09 Ricoh Co Ltd データ転送装置、及びデータ転送方法

Also Published As

Publication number Publication date
JP2019028513A (ja) 2019-02-21

Similar Documents

Publication Publication Date Title
CN111177029B (zh) 用于管理软件定义的永久性存储器的系统及方法
TWI639919B (zh) 資料儲存系統中的多埠中介件架構
US8589723B2 (en) Method and apparatus to provide a high availability solid state drive
US9052829B2 (en) Methods and structure for improved I/O shipping in a clustered storage system
JP4398386B2 (ja) 複数の処理ノードをシリアルバスにより相互接続する装置
US7028106B2 (en) Remapping routing information entries in an expander
US11573895B2 (en) Storage system with interconnected solid state disks
JP5903801B2 (ja) 通信装置およびid設定方法
KR101781769B1 (ko) 서비스가능한 비휘발성 메모리 모듈들을 인에이블시키는 서버 플랫폼 아키텍처들을 위한 방법 및 장치
KR20170086484A (ko) 기록 요청 처리 방법, 프로세서, 그리고 컴퓨터
US12079506B2 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
JP7054807B2 (ja) データ転送システム、アダプタ、及びシステムホスト
CN118069037A (zh) 存储器控制器、电子系统和控制存储器访问的方法
US20230376216A1 (en) Memory device, storage device, and computing system including memory device and storage device
US8631177B1 (en) Multi-port device with controller for storage media device port
US11782616B2 (en) Storage system and method of operating the same
US20060277326A1 (en) Data transfer system and method
US7418545B2 (en) Integrated circuit capable of persistent reservations
JPWO2017154943A1 (ja) 情報処理装置
JPWO2017154942A1 (ja) 情報処理装置
WO2016006108A1 (ja) ストレージおよびその制御方法
US8386580B1 (en) Shared buffer for data communications routed through hub
US20230376217A1 (en) Storage device, memory device, and computing system including the same
WO2017134795A1 (ja) ストレージシステム及びキャッシュ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220308

R151 Written notification of patent or utility model registration

Ref document number: 7054807

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151