(57)【要約】  ストレージコントローラのデータ再分配方法、装置およびシステムを開示する。一実施形態では、方法は、ストレージコントローラのデータセットを収得するステップと、ストレージコントローラメモリモジュールにデータセットを格納する前に１つの追加のデータセットを生成するステップと、ストレージコントローラメモリモジュールにデータセットを格納する前にその追加のデータセットを追加のストレージコントローラに通信するステップと、ストレージコントローラのメモリモジュールにデータセットを格納するステップと、追加のストレージコントローラメモリモジュールに追加のデータセットを格納するステップとを含む。追加のデータセットは、同一のデータペイロードを持った個別のメモリ書き込みパケットを作成することによって生成することができる。個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成することができる。追加のストレージコントローラへの追加のデータセットによって、メモリ読み取り動作を回避することができる。【選択図】図１【特許請求の範囲】
【請求項１】
ストレージコントローラのデータ再分配方法であって、
ストレージコントローラのデータセットを取得するステップと、
ストレージコントローラメモリモジュールに前記データセットを格納する前に、少なくとも１つの追加のデータセットを生成するステップと、
前記ストレージコントローラメモリモジュールに前記データセットを格納する前に、前記少なくとも１つの追加のデータセットを追加のストレージコントローラに通信するステップと、
前記データセットを、前記ストレージコントローラメモリモジュールに格納するステップと、
前記少なくとも１つの追加のデータセットを追加のストレージコントローラメモリモジュールに格納するステップとを備える方法。
【請求項２】
請求項１の方法であって、
前記少なくとも１つの追加のデータセットは、同一のデータペイロードを持った少なくとも１つの個別のメモリ書き込みパケットを作成することによって生成される、方法。
【請求項３】
請求項２の方法であって、
前記少なくとも１つの個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成される、方法。
【請求項４】
請求項１の方法であって、
前記追加のデータセットを前記追加のストレージコントローラに通信することによって、メモリ読み取り動作を回避する、方法。
【請求項５】
請求項４の方法であってさらに、
メモリ読み取り動作を回避することによって前記ストレージコントローラのメモリ帯域幅の負荷を削減するステップを備える、方法。
【請求項６】
請求項５の方法であって、
前記追加のデータセットは、転送モジュールを使用して前記追加のストレージコントローラに通信され、前記転送モジュールは、前記ストレージコントローラおよび前記追加のストレージコントローラに結合される、方法。
【請求項７】
請求項５の方法であってさらに、
前記ストレージコントローラメモリモジュールに前記データセットの格納を完了する前に、前記追加データセットの格納を開始するステップを備える、方法。
【請求項８】
請求項７の方法であってさらに、
補足データセットを生成するステップと、前記補足データセットを補足ストレージコントローラに通信するステップと、補足ストレージコントローラメモリモジュールに前記補足データセットを格納するステップとを備える、方法。
【請求項９】
請求項１の方法であってさらに、
前記ストレージコントローラメモリモジュールに前記データセットを格納する前に、追加のストレージコントローラに前記追加のデータセットを通信することによって、ホストコントローラへの初期書き込み信号を加速するステップを備える、方法。
【請求項１０】
請求項１の方法であって、
前記ストレージコントローラの前記データセットは、ホストモジュールとストレージコントローラメモリとの間の再分配モジュールによって取得される、方法。
【請求項１１】
請求項１０の方法であって、
前記ストレージコントローラは前記再分配モジュールで構成される、方法。
【請求項１２】
ストレージコントローラのデータ再分配システムであって、
ストレージコントローラのデータセットを取得し、ストレージコントローラメモリモジュールに前記データセットを格納する前に追加のデータセットを生成する再分配モジュールと、
前記ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のストレージコントローラに前記追加のデータセットを通信する通信モジュールと、
前記データセットを格納するためのストレージコントローラメモリモジュールと、
前記追加のデータセットを格納するための追加のストレージコントローラメモリモジュールとを備えるシステム。
【請求項１３】
請求項１２のシステムであって、
前記少なくとも１つの追加データセットは、同一のデータペイロードを持った少なくとも１つの個別のメモリ書き込みパケットを作成することによって生成される、システム。
【請求項１４】
請求項１３のシステムであって、
前記少なくとも１つの個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成される、システム。
【請求項１５】
請求項１２のシステムであって、
前記追加のデータセットを追加のストレージコントローラに通信することによってメモリ読み取り動作を回避する、システム。
【請求項１６】
請求項１５のシステムであって、
メモリ読み取り動作を回避することによって、前記ストレージコントローラのメモリ帯域幅の負荷を削減する、システム。
【請求項１７】
請求項１６の方法であって、
前記追加のデータセットは、バスを使用して前記追加のストレージコントローラに通信され、前記バスは、前記ストレージコントローラおよび前記追加のストレージコントローラに結合される、方法。
【請求項１８】
ストレージコントローラのデータセットを取得して、ストレージコントローラメモリモジュールに前記データセットを格納する前に少なくとも１つの追加のデータセットを生成する再分配モジュールを形成するステップと、
前記再分配モジュールに結合され、ストレージコントローラメモリモジュールに前記データセットを格納する前に、追加のストレージコントローラに前記少なくとも１つの追加のデータセットを通信する通信モジュールを作成するステップと、
前記ストレージコントローラにおける前記再分配モジュールに結合され、コントローラ前記データセットを格納するためのストレージコントローラメモリモジュールを配置するステップと、
前記追加のストレージコントローラにおける前記通信モジュールに結合され、前記少なくとも１つの追加データセットを格納するコントローラ、追加のストレージコントローラメモリモジュールを配置するステップとを備える方法。
【請求項１９】
請求項１８の方法であって、
前記少なくとも１つの追加データセットは、同一のデータペイロードを持った少なくとも１つの個別のメモリ書き込みパケットを作成することによって生成される、方法。
【請求項２０】
請求項１９の方法であって、
前記少なくとも１つの個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、一般的には、企業方法、ソフトウェアおよび／またはハードウェアの技術分野に関連し、一実施形態においては、ストレージコントローラのデータの再分配に関連するものである。
【背景技術】
【０００２】
ストレージコントローラは、１つの追加のストレージコントローラ（例えば、デュアルコントローラ、ミラードコントローラ）を併用してストレージデバイスを作動することができる。ストレージコントローラは、ホストシステムの情報 （例えば、データセット、I/O 書き込みなど） を取得できる。情報はストレージコントローラのメモリ（例えば、RAM、DRAM、SDRAMなど)に書き込まれ（例えば、格納され)、追加のストレージコントローラへ転送され得る。情報の転送は、ストレージコントローラメモリの情報の読み取り、追加のストレージコントローラへの通信、追加のストレージコントローラメモリへの格納を含むことができる。
【０００３】
ストレージコントローラの情報を読み取るためには、メモリ帯域幅の使用、電力の使用、および／またはストレージコントローラのシステムハードウェアを必要とすることがある。情報の読み取りは、熱を発生することがあり、これは電子機器の寿命を減らし、かつ／または追加の冷却機構（例えば、ファン、ヒートシンク、ヒートパイプ、水冷却システムなど）を必要とすることがある。追加の冷却機構は、機器のコストおよび／または電力コスト（例えば、ファンのための電気、電気の費用など）を追加することがある。ストレージコントローラの情報を読みこむのは、時間を消耗することがあり、これは以後のストレージコントローラのアクティビティ（例えば、追加の情報を受信および／または処理、書き込み完了信号をホストシステムに通信する、など)を遅延することがある。情報読み取りは、したがって、システムコストの増加、遅延および／またはその他の非能率を引き起こすことがある。
【０００４】
ストレージコントローラの性能を向上するひとつの方法は、ストレージコントローラメモリの量および／または速度を増加することを含み得る。しかし、ストレージコントローラメモリを追加することは、メモリコストの増加につながることがあり経済的利点を超えてしまう恐れがある。その結果、ストレージコントローラメモリを追加することは、コストの上で難しくなることがある。
【発明の概要】
【０００５】
ストレージコントローラのデータの再分配の方法、装置およびシステムを開示する。
【０００６】
一局面において、方法は、ストレージコントローラのデータセットを取得するステップと、ストレージコントローラメモリモジュールにデータセットを格納する前に、１つの追加のデータセットを生成するステップと、ストレージコントローラメモリモジュールにデータセットを格納する前に、その追加のデータセットを追加のストレージコントローラに通信するステップと、ストレージコントローラメモリモジュールにデータセットを格納するステップと、追加のストレージコントローラメモリモジュールに追加のデータセットを格納するステップとを含む。
【０００７】
同一のデータペイロードを持つ個別のメモリ書き込みパケットを作成することによって追加のデータセットが生成され得る。個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成することができる。追加のストレージコントローラへの追加データセットにより、メモリ読み取り動作を回避することができる。ストレージコントローラのデータ再分配の方法は、メモリの読み取り動作を回避することによって、ストレージコントローラのメモリ帯域幅の負荷を削減するステップを含むことができる。任意の数の追加データセットを生成することができる。
【０００８】
転送モジュールを使用して追加のデータセットを追加のストレージコントローラに通信することができる。転送モジュールは、ストレージコントローラおよび追加のストレージコントローラに結合することができる。ストレージコントローラのデータ再分配方法は、ストレージコントローラメモリモジュールにデータセットの格納を完了する前に、追加データセットの格納を開始するステップを含むことができる。
【０００９】
さらに、この方法は、補足データセットを生成するステップと、補足データセットを補足ストレージコントローラに通信するステップと、補足ストレージコントローラメモリモジュールに補足データセットを格納するステップとを含むことができる。この方法は、ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のストレージコントローラに追加のデータセットを通信することによって、ホスト コントローラへの初期書き込み信号を加速するステップを含むことができる。これらのデータセット（例えば、すなわち、データセットおよび追加のデータセット）は、加速された初期書き込み信号がホスト コントローラに送信される前に、２つ以上のストレージコントローラメモリに格納する必要がある場合がある。ストレージコントローラメモリの読み取り動作を排除することによって、追加ストレージコントローラメモリへの後続の書き込み動作を延期することを回避し、初期の書き込み信号を加速することができる。また、１つ以上のストレージコントローラメモリにメモリ書き込み動作を一時に実行し（これは最初の書き込み動作が完了した後に初めて、追加の書き込み動作を開始することができる場合には不可能になることがある）、初期の書き込み信号を加速することもできる。
【００１０】
初期の書き込み信号を加速することにより、書き込み状態の待機時間を減らし、ホストシステムがより効率的に作動するようにすることができる。書き込み状態の待機時間を減らすことにより、ホストシステムは通常の動作をより短い時間で続行することができる。
【００１１】
ストレージコントローラのデータセットは、ホストモジュールとストレージコントローラメモリとの間の再分配モジュールによって取得することができる。この方法は、再分配モジュールも含みうるストレージコントローラを含むことができる。
【００１２】
もう１つの局面では、ストレージコントローラのデータ再分配システムは、ストレージコントローラのデータセットを取得し、ストレージコントローラメモリモジュールにデータセットを格納する前に追加のデータセットを生成する再分配モジュールと、ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のストレージコントローラに追加のデータセットを通信する通信モジュールと、データセットを格納するストレージコントローラメモリモジュールと、追加のデータセットを格納する追加のストレージコントローラメモリモジュールとを含む。
【００１３】
同一のデータペイロードを持つ個別のメモリ書き込みパケットを作成することによって、追加のデータセットを生成することができる。個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成することができる。ストレージコントローラのデータ再分配システムは、追加のデータセットを追加のストレージコントローラに通信することを含むことができ、これによりメモリ読み取り動作を回避することができる。このシステムは、ストレージコントローラのメモリ帯域幅の負荷を減らし得るメモリ読み取り動作を含むことができる。追加のデータセットは、バスを使用して追加のストレージコントローラに通信することができる。バスは、ストレージコントローラおよび追加のストレージコントローラに結合することができる。
【００１４】
もう１つの局面において、この方法は、ストレージコントローラのデータセットを取得し、ストレージコントローラメモリモジュールにデータセットを格納する前に追加のデータセットを生成する、再分配モジュールを形成するステップと、再分配モジュールに結合され、ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のデータセットを追加のストレージコントローラに通信する通信モジュールを作成するステップと、ストレージコントローラ内の再分配モジュールに結合され、データセットを格納するストレージコントローラメモリモジュールを配置するステップと、追加のストレージコントローラ内の通信モジュールに結合された追加のデータセットを格納する追加のストレージコントローラメモリモジュールを配置するステップと、を含むものである。
【００１５】
追加のデータセットは、同一のデータペイロードを持つ、少なくとも１つの個別のメモリ書き込みパケットを作成することによって生成することができる。個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成することができる。
【００１６】
ここで開示される方法、システム、および機器は、さまざまな局面を達成するために、いかなる手段を使って実施してもよく、機器によって実行された時に機器がここに開示されている動作のいずれかを実行することを引き起こす一連の命令を具体化する機械可読の媒体の形態において実行することができる。その他の特徴については、付属の図面と以下の詳細な説明により明らかにされる。
【００１７】
実施形態は添付の図面において例として示され、限定としてではない。図面においては類似の参照符号は類似の要素を示すものである。
【図面の簡単な説明】
【００１８】
【図１】一実施形態に従う相互に通信するストレージコントローラ、ホストモジュールおよび複数のストレージデバイスのシステム図である。
【図２】一実施形態に従う、ストレージコントローラ、ホストモジュールおよび通信モジュールを拡大して示す図である。
【図３】一実施形態に従う、ホストモジュールおよび複数のストレージデバイスモジュールと通信する複数のストレージコントローラおよび通信モジュールのシステム図である。
【図４Ａ】一実施形態に従う、ストレージコントローラメモリモジュールにおけるデータセットの取得、生成、格納のプロセスフローである。
【図４Ｂ】一実施形態に従う、追加のデータセットの追加動作を示す図４Ａのプロセスフローの続きである。
【図５】一実施形態に従う、ストレージコントローラメモリモジュールにおいて追加のデータセットを取得、生成および格納するために、再分配モジュールその他のモジュールを形成する過程を示すプロセスフローである。
【発明を実施するための形態】
【００１９】
本実施形態におけるその他の特徴は、付属の図面と以下の詳細な説明から明らかとなる。
【００２０】
ストレージコントローラのデータの再分配の方法、装置およびシステムを開示する。本実施形態は特定の例によって記述されてはいるが、様々な実施形態のより広範な趣旨および範囲から逸脱することなく、様々な修正および変更をこれらの実施形態に行なうことができることは明らかであろう。
【００２１】
一実施形態では、I/O書き込みデータを２つのストレージコントローラ106A-Bにミラーすることができ、これによりストレージコントローラのメモリ読み取り動作の必要性を無くすことができる。再分配モジュール106A-Bは、ストレージコントローラと追加のストレージコントローラとの間で情報を再分配することによって、データセットを、最初のメモリ書き込みの前に２つの個別のメモリ書き込み動作に分割することができる。マルチキャスチング（例えば、デュアルキャスチング、フォーキング)を使用して、再分配を達成することができる。PCIeスイッチ212を各ストレージコントローラ106A-B上のホストI/Oデバイス（例えば、ホストモジュール208）とメモリモジュール104A-Bとの間に追加して、マルチキャスチングを実行することができる。
【００２２】
別の実施形態では、２つのストレージコントローラ106A-BをPCIeバスによって互いに接続することができる。PCIeバスは、各々が１つのストレージコントローラに含まれ得る２つのPCIeスイッチを接続することができる。I/O書き込みデータがPCIeスイッチ212をPCIeメモリ書き込みパケットの形で通過すると、PCI Express（PCIe)ベース2.0仕様のためのマルチキャスチングECNで定義されたマルチキャスチング機能が、パケットを同じデータペイロードを含む２つの別個のPCIeメモリ書き込みパケットに分割することを可能にすることができる。１つのパケットは、ストレージコントローラメモリモジュール104Ａへのデータペイロードのメモリ書き込みを生成することができる。他のパケットは、２つのストレージコントローラ106A-Bを接続するPCIeバス214によって、ストレージコントローラ106Bに送られる。また他のパケットは、ストレージコントローラメモリモジュール104Bに書き込まれることができる。メモリ書き込みパケットを再分配（例えば、マルチキャスチング、ミラーリング)することによって、メモリモジュール104Bに情報を書き込む前に情報を取得するためにメモリモジュール104Ａの読み取り動作を実行する必要をなくすことができる。読み取り動作を回避した結果として、ストレージコントローラ106A-Bのメモリ帯域幅負荷が削減され得る。
【００２３】
一実施形態では、方法は、ストレージコントローラ（例えば、図１のストレージコントローラ106Ａ)のデータセット（例えば、メモリ書き込みパケット）を取得することを含む。さらに、この方法は、ストレージコントローラメモリモジュール（例えば、図１のメモリモジュール104Ａ)にデータセットを格納する前に、１つ以上の追加のデータセットを生成することを含む。さらに、この方法は、ストレージコントローラメモリモジュール104Ａおよび／または104Bにデータセットを格納する前に、追加のストレージコントローラ106Bに追加データセット（例えば、元のデータパケットと同一のペイロードを持つ個別のメモリ書き込みパケット）を通信することを含む。さらに、この方法は、ストレージコントローラメモリモジュール104Ａにデータセットを格納することと、追加のストレージコントローラメモリモジュール104Bに追加のデータセットを格納することとを含む。
【００２４】
別の実施形態では、ストレージコントローラのデータ再分配システムは、ストレージコントローラ（例えば、106A-B、206、306Ａ-Ｎのストレージコントローラ)のデータセットを取得し、ストレージコントローラメモリモジュール（例えば、メモリモジュール104Ａ-Ｂ、204)にデータセットを格納する前に追加のデータセットを生成する再分配モジュール（例えば、再分配モジュール100Ａ-B、200）を含む。このシステムはさらに、ストレージコントローラメモリモジュール（例えば、メモリモジュール104Ａ-Ｂ、204)にデータセットを格納する前に、追加のストレージコントローラ（例えば、106A-B、206、306Ａ-Ｎのストレージコントローラ）に追加のデータセットを通信するための通信モジュール（例えば、通信モジュール102、202、302 Ａ-Ｂ)を含む。このシステムはさらに、データセットを格納するストレージコントローラメモリモジュール （例えば、メモリモジュール104Ａ)と、追加のデータセットを格納する追加のストレージコントローラメモリモジュール（例えば、メモリモジュール104B)とを含む。
【００２５】
別の実施形態では、この方法は、ストレージコントローラ（例えば、図１のストレージコントローラ106Ａ）のデータセットを取得し、ストレージコントローラメモリモジュール（例えば、図１のメモリモジュール104Ａ)にデータセットを格納する前に、追加のデータセットを生成するために、再分配モジュール（例えば、図１の再分配モジュール100Ａ-Ｂ）を形成すること、データセットをストレージコントローラメモリモジュール（例えば、図１のメモリモジュール104Ｂ)に保存する前に、追加のストレージコントローラ106Bに追加データセットを通信するために、再分配モジュール100Ａ-Ｂに結合した通信モジュール102を作成すること、データセットを格納するためにストレージコントローラ106Ａ内の再分配モジュール100Ａに結合したストレージコントローラメモリモジュール104Ａを設置すること、そして、追加のデータセットを格納するために追加のストレージコントローラ106Ｂ内の通信モジュール102に結合した追加のストレージコントローラメモリモジュール104Ｂを設置すること、を含む。
【００２６】
図１は、一実施形態に従う相互に通信するストレージコントローラ、ホストモジュールおよびストレージデバイスのアレイのシステム図である。具体的には、図１は、１つの実施形態に従う、再分配モジュール100Ａ-Ｂ、通信モジュール102、メモリモジュール104Ａ-Ｂ、ストレージコントローラ106Ａ-Ｂ、ホストモジュール108、ストレージデバイスモジュール110Ａ-Ｎを示す。
【００２７】
データセット（例えば、メモリ書き込みパケット）は、パケットモードコンピュータネットワークで転送されるフォーマット化されたデータユニットであり得る。伝統的なポイントツーポイント電話通信リンクなどのパケットをサポートしないコンピュータ通信リンクは、データを単に一連のバイト、文字、またはビットのみとして送信する可能性がある。追加データセット（例えば、追加のメモリ書き込みパケット)は、個別のメモリ書き込みパケットと、元のデータセットのデータペイロードと同一のデータペイロードを含むことができる。追加のデータセットはマルチキャスチング、ミラーリング、メモリ書き込みパケットの分割、および／またはメモリ書き込みパケットのコピーによって生成することができる。元のデータセットは送信および／または保存することができる。これに代えて、ストレージコントローラ（例えば、ストレージコントローラ106Ａ-Ｂ)に格納するために２つ以上の新しいメモリ書き込みパケットを生成することができる。
【００２８】
再分配モジュール100Ａ-Ｂは、ストレージコントローラ106A-Bのデータセットを取得するために、マルチキャスチング（例えば、デュアルキャスチング、フォーキング)を使用して、２つの個別のメモリ書き込み動作にデータセットを分割することができる。再分配モジュールは、ストレージコントローラメモリモジュール104Ａ-Ｂにデータセットを格納する前に、追加のデータセットを生成することができる。再分配モジュール（例えば、図１の再分配モジュール100Ａ-Ｂ）は、PCIeスイッチ（例えば、PCIeスイッチ212）を含むことができる。PCIeスイッチは、PCI Express（PCIe)ベース2.0仕様のためのマルチキャスチングECNで定義されているマルチキャスチング機能に従ってメモリ書き込みパケットを分割することができる。PCIeスイッチは、２つ以上のストレージコントローラを接続し得るPCIeバスと通信することができる。PCIeスイッチは、マルチキャストメモリ書き込みパケットを追加のストレージコントローラに通信することができる。
【００２９】
通信モジュール（例えば、通信モジュール102、202、302Ａ-Ｂ)は、処理ユニット（例えば、ホストシステム、コンピュータのマザーボードなど）に周辺機器を取り付けるために使用され得るコンピュータバスを含むことができる。通信モジュール102は、ストレージコントローラメモリモジュール104Ａおよび／または104B内にデータセットが保存される前に、追加のデータセットを追加のストレージコントローラに通信することができる。追加のデータセットは、メモリモジュール104Ａおよび／または104B内のメモリ書き込みパケットの格納プロセスの開始および／または完了の前に、通信されることができる。
【００３０】
ホストコントローラへの初期書き込み信号は、ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のストレージコントローラに追加のデータセットを通信することによって、加速することができる。これらのデータセット（例えば、データセットおよび追加のデータセット）は、加速された初期書き込み信号がホストコントローラに送信される前に２つ以上のストレージコントローラメモリに格納する必要がある場合がある。ストレージコントローラメモリの読み取り動作をなくすことによって、追加ストレージコントローラメモリ内への後続の書き込み動作を延期することを回避し、初期書き込み信号を加速することができる。１つ以上のストレージコントローラメモリにメモリ書き込み動作を一時に実行する―これは、最初の書き込み動作が完了した後初めて、追加の書き込み動作が開始することができる場合には可能でないことがある―ことによって、初期書き込み信号を加速することもできる。
【００３１】
初期書き込み信号を加速することによって、書き込み状態の待ち時間を減らし、ホストシステムがより効率的に作動できるようにすることができる。書き込み状態の待ち時間を減らすことによって、ホストシステムが従来より短時間に通常の動作を続行できるようにすることができる。書き込み状態の待ち時間を減らすことによって、ホストシステムが従来より短時間に動作を再試行かつ／またはシステムフォールトを生じさせるようにすることができる。
【００３２】
メモリモジュール104Ａ-Ｂは磁気媒体（例えば、フラッシュメモリ、ハードドライブ）および／またはその他のメモリフォーマット（例えば、光学的、機械的、揮発性メモリ、不揮発性メモリ）でデータを保持することができる。追加のストレージコントローラメモリモジュールは追加データセット（例えば、ミラーされたデータ、マルチキャストデータ、再分配モジュールで生成されたデータセットなど）を格納することができる。メモリモジュール104Ａ-Ｂは、ストレージコントローラ106A-B内の再分配モジュール100 Ａ-Ｂと結合することができる。
【００３３】
ストレージコントローラ（例えば、106A-B、206、306Ａ-Ｎのストレージコントローラ)は、データの損失を防ぐためにペアで冗長構成で使用することができる。１つのコントローラが故障した場合にも、ストレージコントローラに関連したホストシステム（例えば、ホストモジュール108）が依然として、すべてのストレージ デバイス（例えば、ストレージデバイスモジュール110A-N, 210A-B、310Ａ-Ｎ)へアクセスすることができる。ホストモジュール108は、さまざまなデバイス（例えば、ストレージコントローラ106Ａ-Ｂ、ストレージデバイスモジュール110A-N）と通信できる処理ユニットを含むことができる。ホストモジュールは、ストレージコントローラおよび／またはストレージデバイスモジュールとの動作に影響を与えるプログラムをダウンロードまたはアップロードすることができる。
【００３４】
ストレージデバイスモジュール110A-Nは、情報の保持および／または処理を行なうことができる。ストレージデバイスモジュール110A-Nは、情報を保持する記録媒体と情報を処理するデータストレージ機器とを含むことができる。ストレージデバイスモジュール110A-Nは別個のポータブル記録媒体および／または情報を保持および検索できる固定デバイスにアクセスすることができる。
【００３５】
一実施形態においては、ストレージコントローラ106A-Bは、再分配モジュール100Ａ-Ｂおよびメモリモジュール104Ａ-Ｂを含むことができる。メモリモジュール104Ａ-Ｂおよびストレージコントローラ106A-Bは、通信モジュール102を介して通信することができる。ホストモジュール108は、ストレージコントローラ106A-Bを通じて、ストレージデバイスモジュール110A-Bと通信することができる。
【００３６】
図２は、一実施形態に従う、ストレージコントローラを示す拡大図であって、ホストモジュールおよび通信モジュールも示すものである。
【００３７】
特に、図２では、一実施形態に従う、再分配モジュール200、通信モジュール202、メモリモジュール204、ストレージコントローラ206、ホストモジュール208、ストレージデバイスモジュール210A-B、PCIeスイッチ212、PCIeバス 214、入力I/Oモジュール216、出力I/Oモジュール218、コントローラモジュール220、プロセッサモジュール222を示す。
【００３８】
再分配モジュール200は、マルチキャスチング（例えば、デュアルキャスチング、フォーキング）を使用して最初のメモリ書き込みを行う前に、データセットを２つの個別のメモリ書き込み動作に分割できるPCIeスイッチを含むことができる。マルチキャスチングは、各々のストレージコントローラ（例えば、ストレージコントローラモジュール106Ａ-Ｂ)上において、PCIeスイッチ（例えば、PCIe212)をホストI/Oデバイス（例えば、入力I/Oモジュール216)と、コントローラコントローラメモリコントローラ （例えば、コントローラモジュール220）との間に追加することによって達成することができる。
【００３９】
通信モジュール202は、２つのストレージコントローラ206Ａ-Ｂと２つのPCIeスイッチとを接続できるPCIeバス214を含むことができる。メモリモジュール204は、ストレージコントローラ206内の再分配モジュール200に接続することができ、メモリモジュール204はデータセットを格納することができる。ストレージコントローラ206は、ホストシステム（例えば、ホストモジュール208）に入出力を書き込みすることができる。ホストモジュール208は、ストレージデバイスモジュール210Ａ-Ｂに情報を格納する、冗長構成システム内の制御処理ユニットであり得る。ホストモジュールは、安価ディスク冗長アレイ（RAID)を制御するサーバーを含むことができる。これに代えて、ホストモジュールは、一組のハードディスクおよび／または他の電子機器と動作を行う、プログラマブルロジックコントローラ（PLC)を制御するマイクロコンピュータを含むこともできる。
【００４０】
ストレージデバイスモジュール（例えば、ストレージデバイスモジュール110A-N、210A-B、310Ａ-Ｎ)は、情報を保持することができる。ストレージデバイスモジュールは、他のストレージデバイスモジュールと通信することができる。ストレージデバイスモジュールはストレージコントローラ（例えば、ストレージコントローラ106A-B、206、306Ａ-Ｎ)と通信することができる。ストレージデバイスモジュールは、出力I/Oモジュール（例えば、出力I/Oモジュール 218)、メモリモジュール104Ａ-Ｂおよび／またはホストモジュール（例えば、ホストモジュール 108、208および／または308)と通信することができる。
【００４１】
PCIeスイッチ212は個別のメモリ書き込みパケットを作成することができる。I/O書き込みデータが、PCIeメモリ書き込みパケットの形でPCIeスイッチを通過する際に、PCI Express（PCIe)ベース2.0仕様のためのマルチキャスチングECNにおいて定義されたマルチキャスチング機能が、同じデータペイロードを含む２つの個別のPCIeメモリ書き込みパケットにパケットを分割することを可能にする。これらのパケットの１つは、ストレージコントローラ206へのデータペイロードのメモリ書き込みを生成することができる。
【００４２】
PCIeバス214は、通信モジュール202に含めることができ、また、２つのストレージコントローラ（例えば、ストレージコントローラ106Ａ-Ｂ、206、306Ａ-Ｎ)および／またはストレージコントローラ106A-BのPCIeスイッチ同士を接続することができる。PCIeバス214はPCIeスイッチ212、再分配モジュール200および／またはストレージコントローラ206と通信することができる。
【００４３】
入力I/Oモジュール216は、ストレージコントローラ206内に存在し得るホストI/Oデバイスであり得る。入力I/Oモジュール216は、ホストモジュール208と再分配モジュール200内のPCIeスイッチとの間で情報の通信を行うことができる。出力I/Oモジュール218は、ストレージコントローラ206内に存在することができ、コントローラモジュール220およびストレージデバイスモジュール210A-Bと通信することができる。コントローラモジュール220は、プロセッサモジュール222とメモリモジュール204との間のメモリ書き込み動作を制御することができる。プロセッサモジュール222は、ストレージデバイスモジュール210A-Bに格納されたデータセットを処理することができる。
【００４４】
一実施形態においては、ストレージコントローラ206は、入力I/Oモジュール216、再分配モジュール200、メモリモジュール204、コントローラモジュール220、プロセッサモジュール222、出力I/Oモジュール218を含むことができる。再分配モジュール200は、PCIeスイッチ212を含むことができる。通信モジュール202は、PCIeバス214を含むことができる。PCIeスイッチ212は、PCIeバス214に接続することができる。出力I/Oモジュール218は、ストレージデバイスモジュール210A-Bに接続することができる。この実施形態においては、各モジュールは相互に通信することができる。
【００４５】
図３は、一実施形態において、複数のストレージコントローラと通信モジュールが、ホストモジュールと複数のストレージデバイスモジュール通信するシステムを示す。特に、図３は一実施形態において、通信モジュール302Ａ-Ｎ、ストレージコントローラ306A-N、ホストモジュール308およびストレージデバイスモジュール310A-Nを示す。
【００４６】
通信モジュール302Ａ-Ｎは、ストレージコントローラ306A-Ｎ間で情報を通信することができる。通信モジュール302Ａ-ＮはPCIeバス214を含むことができる。
【００４７】
ストレージコントローラ306Ａ-Ｎはアレイ接続することができる。ストレージコントローラ306Ａ-Ｎは、ホストモジュール308とストレージデバイスモジュール310A-Nとの間で情報を通信することができる。さらに、ストレージコントローラ306Ａ-Ｎは、PCIeスイッチに接続され得る追加のPCIeバスによって、相互に接続することができる。I/O書き込みデータがメモリ書き込みパケットの形で、PCIeスイッチを通過する際に、PCI Express（PCIe)ベース2.0仕様のためのマルチキャスチングECNにおいて定義されたマルチキャスチング機能が、同じデータペイロードを含む２つの個別のPCIeメモリ書き込みパケットにパケットを分割することを可能にすることができる。１つのメモリ書き込みパケットはストレージコントローラメモリに送信することができ、２番目のメモリ書き込みパケットは追加のストレージコントローラに通信することができる。
【００４８】
ホストモジュール308は、データセットおよび／またはミラーデータを保持できるストレージデバイスモジュール310A-Ｎを使って、保存および検索されるべき情報を通信することができる。ストレージコントローラ306Ａ-Ｎは、ストレージデバイスモジュール310Ａ-Ｎに保存されるべき情報を処理することができ、また、このストレージコントローラは、追加のストレージコントローラへ、ホストモジュール308によって通信された情報に関して情報を再分配（例えば、マルチキャスト、ミラー)することができる。ストレージコントローラ306Ａ-Ｎは、通信モジュール302Ａ-Ｎ、ストレージデバイスモジュール310A-Nおよびホストモジュール308と通信することができる。
【００４９】
図４Ａは、１つの実施形態において、ストレージコントローラメモリモジュールにおけるデータセットの取得、生成および格納を示すプロセスフローである。動作402において、ストレージコントローラ（例えば、図２のストレージコントローラ206)のデータセットが取得され得る（例えば、図２の再分配モジュール200を使用して)。動作404では、ストレージコントローラメモリモジュール（例えば、図２のストレージコントローラメモリモジュール204)にデータセットを格納する前に、追加のデータセットを生成することができる（例えば、図２の再分配モジュール200を使用して)。動作406では、この追加のデータセットは、ストレージコントローラメモリモジュールにデータセットを格納する前に、追加のストレージコントローラに通信することができる（例えば、図１の通信モジュール102を使用して）。
【００５０】
動作408で、ストレージコントローラメモリモジュール104Ａ-Ｂにデータセットを格納する前に、追加のストレージコントローラ（例えば、図１のストレージコントローラ106A-B)に追加のデータセットを通信することによって、ホストコントローラへの初期書き込み信号を加速することができる。データセット（例えば、データセットおよび追加のデータセット）は、コントローラ加速された初期書き込み信号がホストコントローラに送られる前に、２つまたはそれ以上のストレージコントローラメモリ（例えば、図１のストレージコントローラメモリモジュール104Ａ-Ｂ)に格納する必要がある場合がある。ストレージコントローラメモリの読み取り動作をなくし、追加ストレージコントローラメモリへの後続の書き込み動作を延期することを回避することで、初期書き込み信号を加速することができる。１つ以上のストレージコントローラメモリにメモリ書き込み動作を一時に実行し（これは最初の書き込み動作が完了した後に初めて追加の書き込み動作を開始することができる場合には不可能なこともある）、初期書き込み信号を加速することができる。動作410では、データセットはストレージコントローラメモリモジュール104Ａ-Ｂに格納することができる。
【００５１】
図４Ｂは、一実施形態における図４Ａのプロセスフローの続きで、追加のデータセットの追加の動作を示す。動作412においては、追加のデータセットの格納は、ストレージコントローラメモリモジュール104Ａ-Ｂにおけるデータセットの保存の完了前に開始することができる。動作414においては、追加のデータセットを追加のストレージコントローラメモリモジュール104Ａ-Ｂに格納することができる。追加のデータセットは、同一のデータペイロードを持った個別のメモリ書き込みパケットを作成することによって生成されることができる（例えば、図２の再分配モジュール200を使用して）。個別のメモリ書き込みパケットは、PCIeスイッチ212を使用して作成することができる。追加のデータセットは、メモリ読み取り動作を回避できる追加のストレージコントローラに通信することができる。動作416においては、ストレージコントローラ206のメモリ帯域幅の負荷を、メモリ読み取り動作を回避することによって減少することができる。追加のデータセットは、転送モジュールを使用して、追加のストレージコントローラ306Ａ-Ｎに通信する（例えば、通信モジュール302Ａ-Ｎを使用して）ことができる。さらに、転送モジュールは、ストレージコントローラ306Ａ-Ｎおよび追加ストレージコントローラ306Ａ-Ｎに接続することができる。
【００５２】
動作418においては、補足データセットを生成する（例えば、図１の再分配モジュール100Ａ-Ｂを使用して）ことができ、これが補足のデータセットを補足ストレージコントローラ106A-Bに通信し、補足のストレージコントローラメモリモジュール106-Bに補足のデータセットを格納することができる。ストレージコントローラ106A-Bのデータセットは、ホストモジュール（例えば、図１のホストモジュール108）と、ストレージコントローラメモリモジュール（例えば、図１のストレージコントローラメモリモジュール104 Ａ-Ｂ)との間の再分配モジュール（例えば、図１の再分配モジュール100Ａ-Ｂ）によって取得することができる。ストレージコントローラ106A-Bは再分配モジュール100Ａ-Ｂを含むことができる。
【００５３】
図５は、一実施形態に従う、ストレージコントローラメモリモジュールにおいて追加のデータセットを取得、生成、格納するために、再分配モジュールその他のモジュールを形成する過程を示すプロセスフローである。動作502では、ストレージコントローラのデータセットを取得し、ストレージコントローラメモリモジュール（たとえば図２のメモリモジュール204）にデータセットを格納する前に追加のデータセットを生成することのできる再分配モジュール（例えば、図２の再分配モジュール200）を形成することができる。動作504においては、ストレージコントローラメモリモジュール204にデータセットを格納する前に、追加のデータセットを追加のストレージコントローラに通信することのできる再分配モジュール 200と結合され得る通信モジュール202を形成することができる。
【００５４】
動作506においては、データセットを格納し得るストレージコントローラ206において、再分配モジュール200に結合され得るストレージコントローラメモリモジュール204を配置することができる。動作508においては、追加のデータセットを格納し得る追加のストレージコントローラ306A-Ｎ内の通信モジュール302Ａ-Ｎと結合され得る、追加のストレージコントローラメモリモジュール（例えば、図２のメモリモジュール204)を配置することができる。この追加のデータセットは、同一のデータペイロードを持った個別のメモリ書き込みパケットを作成することによって生成することができる。この個別のメモリ書き込みパケットは、PCIeスイッチを使用して作成することができる。
【００５５】
本実施形態は特定の例によって記述されてはいるが、様々な実施形態のより広範な趣旨および範囲から逸脱することなく、様々な修正および変更をこれらの実施形態に行なうことができることが明らかであろう。例えば、ここに記述された様々なデバイス、モジュール、分析装置、発生装置などは、ハードウェア回路（例えば、CMOSベースの論理回路）、ファームウェア、ソフトウェアならびに／またはハードウェア、ファームウェアおよび／もしくはソフトウェアの任意の組み合わせ（例えば、機械読み取り可能なメディアで具体化)を用いて使用可能にして動作させることができる。例えば、種々の電気的構造および方法は、トランジスタ、論理ゲートおよび電気回路（例えば、アプリケーションに特定の統合（ASIC)回路および／またはデジタル信号プロセッサ（DSP) 回路)を使用して具体化されることができる。
【００５６】
特に、再配布モジュール100A-B、通信モジュール102、メモリモジュール104A-B、ストレージコントローラ106A-Bは、ホストモジュール108、図１のストレージデバイスモジュール110A-N、再配布モジュール200、通信モジュール202、メモリモジュール204、ストレージコントローラ206、ホストモジュール208、ストレージデバイスモジュール210A-B、PCIeスイッチ212、PCIeバス214、入力I/Oモジュール216、出力I/Oモジュール218、図２のコントローラモジュール220、および通信モジュール302A-N、ストレージコントローラ306A-N、ホストモジュール308、図３のストレージデバイスモジュール310A-Nは、再分配回路、通信回路、メモリ回路、ストレージコントローラ回路、ホスト回路、ストレージデバイス回路、PCIeスイッチ回路、入力I/O回路、出力I/O回路、コントローラ回路、およびその他の回路を使用して使用可能にすることができる。
【００５７】
さらに、ここで開示された様々な動作、プロセス、および方法は、データ処理システム（例えば、コンピュータシステム）と互換性のある機械可読媒体および／またはマシンアクセスアクセス可能な媒体において具体化することができ、また、任意の順序で実行することができる（たとえば様々な動作を実現するための手段を用いることを含む）ことが理解されるであろう。したがって、明細書及び図面は、限定的なものとしてではなく、例示的ものとしてみなされるべきである。
【図１】
2012507783.tif 000002
【図２】
2012507783.tif 000003
【図３】
2012507783.tif 000004
【図４Ａ】
2012507783.tif 000005
【図４Ｂ】
2012507783.tif 000006
【図５】
2012507783.tif 000007
【国際調査報告】
2012507783.tif 000008