(57)【要約】【課題】本発明は、イレイジャーコードを用いてデータを保護するシステムを提供する。【解決手段】トポロジを公開する。このトポロジは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）、データ加速、データ重複排除、データインテグリティ、データの暗号化とデータ圧縮のようにＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能を具現するＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）及びＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチを含むことができる。ＰＣＩｅスイッチは、ＦＰＧＡとＮＶＭｅ  ＳＳＤと通信する。【選択図】  図５
2020061149.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、
前記ＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能を具現するＦＰＧＡと、
ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチと、を備え、
前記１つ以上の機能は、データ加速化、データ重複排除（デデュープ）、データインテグリティ、データの暗号化及びデータ圧縮の中の少なくとも１つを包含し、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤと通信する、ことを特徴とするシステム。
【請求項２】
前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックを含み、
前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記ＰＣＩｅスイッチは、ネイティブイレイジャーコーディングロジック（ｎａｔｉｖｅ  Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ  Ｌｏｇｉｃ）を含まない、前記ＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブルさせるように動作する、ことを特徴とする請求項２に記載のシステム。
【請求項４】
前記イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチと連結された第２装置をさらに含む、ことを特徴とする請求項２に記載のシステム。
【請求項５】
前記第２装置は、ネイティブイレイジャーコーディングロジックを含むストレージ装置と非ストレージ装置のうち少なくとも一つを含み、
前記ＰＣＩｅスイッチは、前記第２装置に少なくとも部分的に基づいて前記イレイジャーコーディングロジックをディセーブル（ｄｉｓａｂｌｅ）させるように動作する、ことを特徴とする請求項４に記載のシステム。
【請求項６】
前記第２装置は、ネイティブイレイジャーコーディングロジックを含むストレージ装置と非ストレージ装置のうち少なくとも一つを含み、
前記ＰＣＩｅスイッチは、前記ネイティブイレイジャーコーディングロジックが含まないＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブル（ｅｎａｂｌｅ）させ、前記イレイジャーコーディングロジックを使用することなしに、前記第２装置に対するアクセスをイネーブル（ｅｎａｂｌｅ）させるように動作する、ことを特徴とする請求項４に記載のシステム。
【請求項７】
ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、
前記ＮＶＭｅ  ＳＳＤをサポートする１つ以上の機能を具現する第１のＦＰＧＡ部分とＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチを具現する第２のＦＰＧＡ部分を含むＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）と、を備え、
前記一つ以上の機能は、データ加速化、データ重複排除、データインテグリティ、データの暗号化、およびデータ圧縮のうち少なくとも一つを含み、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤと通信し、
前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤは、共通のハウジング内部に存在する、ことを特徴とするシステム。
【請求項８】
前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックを含み、
前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む、ことを特徴とする請求項７に記載のシステム
【請求項９】
イレイジャーコーディングロジックはＬｏｏｋ−ＡｓｉｄｅイレイジャーコーディングロジックとＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックのうちの少なくとも一つを含む、ことを特徴とする請求項７に記載のシステム。
【請求項１０】
イレイジャーコーディングロジックは、ホストからの読み取り要請により要請されたデータがキャッシュに存在するものに少なくとも部分的に基づいて、前記ホストからの前記読み取り要請に対する応答を返すように動作する、ことを特徴とする請求項２又は７に記載のシステム。
【請求項１１】
イレイジャーコーディングロジックは、ホストからの書き込み要請を完了する前に、前記ホストからの前記書き込み要請に対する応答を返すように動作する、ことを特徴とする請求項２又は７に記載のシステム。
【請求項１２】
イレイジャーコーディングロジックはＬｏｏｋ−Ａｓｉｄｅコーディングロジックを含み、
前記Ｌｏｏｋ−Ａｓｉｄｅコーディングロジックはスヌーピングロジックを含む、ことを特徴とする請求項２又は７に記載のシステム。
【請求項１３】
イレイジャーコーディングロジックは、ホストから前記ＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送において、前記ホストによって使用されるホスト論理ブロックアドレス（ＬＢＡ：  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）を前記ＮＶＭｅ  ＳＳＤによって使用される装置ＬＢＡに変更するように動作する、ことを特徴とする請求項２又は７に記載のシステム。
【請求項１４】
イレイジャーコーディングロジックは、前記ＮＶＭｅ  ＳＳＤから前記ＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送で、前記ＮＶＭｅ  ＳＳＤによって使用される装置の論理ブロックアドレス（ＬＢＡ；  Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）をホストによって使用されるホストＬＢＡに変更するように動作する、ことを特徴とする請求項２又は７に記載のシステム。
【請求項１５】
イレイジャーコーディングロジックを有する前記ＰＣＩｅスイッチは、ネイティブイレイジャーコーディングロジック（ｎａｔｉｖｅ  Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ  Ｌｏｇｉｃ）を含まない、前記ＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブル（ｅｎａｂｌｅ）させるように動作する、ことを特徴とする請求項７に記載のシステム。
【請求項１６】
イレイジャーコーディングロジックを有する前記ＰＣＩｅスイッチは、ネイティブイレイジャーコーディングロジック（ｎａｔｉｖｅ  Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇ  Ｌｏｇｉｃ）を含む前記ＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブル（ｄｉｓａｂｌｅ）させるように動作する、ことを特徴とする請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに係り、より詳しくは、ＰＣＩｅスイッチ内のイレイジャーコーディングに関する。
【背景技術】
【０００２】
現在、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）保護機能を有する大部分のＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ベースのＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）は、外部ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）ＡＩＣ（Ａｄｄ−Ｉｎ−Ｃａｒｄ）を介して行われる。ホストＣＰＵとＡＩＣ  ＲＡＩＤコントローラとの間のバスの帯域幅を最適化するため、バスは、一般的にＸ１６  ＰＣＩｅレーンをサポートする。しかし、ＰＣＩｅカードの標準フォームファクタ（ｆｏｒｍ  ｆａｃｔｏｒ）の物理的な限界のため、現在、ＮＶＭｅ  ＳＳＤに対し好まれるコネクタである少数のＵ．２コネクタだけが各ＡＩＣ  ＲＡＩＤコントローラによってサポートされる。つまり、普通、正確には２つ又は４つのＵ．２コネクタである。
【０００３】
２Ｕシャーシ（ｃｈａｓｓｉｓ）内に２４個までのＮＶＭｅ  ＳＳＤをサポートするためには、６つのＡＩＣ  ＲＡＩＤコントローラが必要なので、６つの異なるＲＡＩＤドメインが要求される。この構成は、６つのＲＡＩＤドメインを管理するためのコストと複雑さを付加する。なお、各ＡＩＣ  ＲＡＩＤコントローラのコストは、現在、約４００ドルである。したがって、ＮＶＭｅ  ＳＳＤのコストを考慮する前に、単一の２Ｕシャーシへの全体のＲＡＩＤソリューションは、ＡＩＣ  ＲＡＩＤコントローラ向けにのみ２４００ドルを超えている。
【０００４】
大規模なデータセットに対するコスト（費用）対効果の高いＲＡＩＤデータ保護の不足のため、大規模なビジネス市場でのＮＶＭｅ  ＳＳＤの採択は制限的となった。ソフトウェアＲＡＩＤソリューションは、比較的小規模なデータセットにおいては使用できるが、ビッグデータでは使用できない。
【０００５】
ＡＩＣ  ＲＡＩＤコントローラを使用するとき、また、別の問題点がある。
【０００６】
１）前記したように、シャーシ内に複数のＲＡＩＤドメインを有すれば、管理の複雑さが増加する。
【０００７】
２）ＲＡＩＤドメイン管理の複雑さの結果として、シャーシは、単一のＲＡＩＤドメイン（これは好ましい）を有さない。
【０００８】
３）ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、多数のＰＣＩｅレーンをサポートする必要がある。つまり、（ＡＩＣ  ＲＡＩＤコントローラ当たり１６個のＰＣＩｅレーン）×（シャーシ当たり６つのＡＩＣ  ＲＡＩＤコントローラ）＝（ＡＩＣ  ＲＡＩＤコントローラについてのみ９６個のＰＣＩｅレーン）である。高度な及びはるかに高価なＣＰＵだけが、現在としては、このような多くのＰＣＩｅレーンをサポートする。
【０００９】
４）各ＡＩＣ  ＲＡＩＤコントローラは、潜在的に２５ワット消費するため、６つのＡＩＣ  ＲＡＩＤコントローラは、シャーシ当たり１５０ワットまでの電力消費量を増加させる。
【００１０】
５）シャーシは、いくつかのＰＣＩｅスロットだけ有する傾向があり、追加可能なＡＩＣ  ＲＡＩＤコントローラの数を潜在的に制限し、シャーシからＲＡＩＤ保護の対象となるＮＶＭｅ  ＳＳＤの数を間接的に減らす。
【００１１】
６）ソフトウェアＲＡＩＤソリューションは、比較的少ない数のＲＡＩＤレベルをサポートする傾向があり、ＣＰＵ上のオーバーヘッドを増加させる傾向がある。
【００１２】
７）ネットワークを介して使用されるとき、ＳＳＤのアクセスは、ネットワークを介してデータのアクセスを伝送するのに必要な時間のために遅くなる可能性がある。なお、一部の例では、ネットワークストレージは、ソフトウェアＲＡＩＤの具現を要求して、ＣＰＵ上のオーバーヘッドを増加させることができる。
【００１３】
ＡＩＣ  ＲＡＩＤコントローラ及びソフトウェアＲＡＩＤソリューションによって課せられる制限なしに、数多くのストレージ装置を利用して、イレイジャーコーディングをサポートできる方法が必要である。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国登録特許第９２２３７３４Ｂ２号公報
【特許文献２】米国登録特許第９２９８６４８Ｂ２号公報
【特許文献３】米国公開特許第２０１７００５２９１６Ａ１号公報
【特許文献４】米国公開特許第２０１７０３２２８９８Ａ１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明は、上述した技術的な課題を解決するためのもので、本発明の目的は、イレイジャーコードを用いてデータを保護するシステムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明の一実施形態に係るシステムは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能を具現するＦＰＧＡ、及びＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチを備える。ＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能は、データ高速化、データ重複排除、データインテグリティ、データ暗号化、及びデータ圧縮を含む集合から獲得される。ＰＣＩｅスイッチは、ＦＰＧＡ及びＮＶＭｅ  ＳＳＤと通信することができる。
【００１７】
本発明の他の実施形態に係るシステムは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、第１のＦＰＧＡ部分、及び第の２ＦＰＧＡ部分を含むＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）と、を有するシステムを提供する。第１のＦＰＧＡ部分は、ＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能を具現する。第２のＦＰＧＡ部分は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチを具現する。ＮＶＭｅ  ＳＳＤをサポートする前記一つ以上の機能は、データアクセラレーション、データ重複排除、データインテグリティ、データ暗号化及びデータ圧縮を含む集合から獲得される。ＰＣＩｅスイッチは、ＦＰＧＡ及びＮＶＭｅ  ＳＳＤと通信することができる。ＦＰＧＡ及びＮＶＭｅ  ＳＳＤは、共通のハウジング内部に有り得る。
【００１８】
本発明の他の実施形態に係るシステムは、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、イレイジャーコーディングロジックを含むＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）スイッチと、を備える。ＰＣＩｅスイッチは、ＰＣＩｅスイッチがプロセッサと通信できるようにする外部コネクタ、ＰＣＩｅスイッチがＮＶＭｅ  ＳＳＤと通信できるようにする少なくとも一つのコネクタ、ＰＣＩｅスイッチを構成するＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とＮＶＭｅ  ＳＳＤに格納されたデータにイレイジャーコーディング方式を適用するための回路を含む、イレイジャーコーディングコントローラを有する。
【発明の効果】
【００１９】
本発明の実施形態によると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用することは、イレイジャーコーディングをストレージ装置の近くに移動させるので、データの移動に必要な時間を減少させることができる。さらに、イレイジャーコーディングコントローラをＰＣＩｅスイッチとともに配置することにより、高価なＲＡＩＤ  ａｄｄ−ｉｎ  ｃａｒｄが不要になり、複数のシャーシにまたがり、より大きなアレイを使用できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態に係るＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチを含むマシンを示す図である。
【図２】図１のマシンの追加の詳細を示す図である。
【図３】図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチをストレージ装置に連結するミッドプレーン及びスイッチボードを含む、図１のマシンの追加の詳細を示す図である。
【図４】相異なるイレイジャーコーディング方式を達成するための図３のストレージ装置を示す図である。
【図５】図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチの詳細を示す図である。
【図６】本発明の他の実施形態に基づいて、Ｌｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むＰＣＩｅスイッチの詳細を示す図である。
【図７】本発明の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用するための第１トポロジを示す図である。
【図８】本発明の他の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用するための第２トポロジを示す図である。
【図９】本発明の他の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用するための第３トポロジを示す図である。
【図１０】本発明の他の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用するための第４トポロジを示す図である。
【図１１Ａ】本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【図１１Ｂ】本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【図１１Ｃ】本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【図１１Ｄ】本発明の一実施形態に基づいて、イレイジャーコーディング方式をサポートするために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【図１２Ａ】本発明の実施形態に基づいて初期化を遂行するために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチの例としての手順を示すフローチャートである。
【図１２Ｂ】本発明の実施形態に基づいて初期化を遂行するために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチの例としての手順を示すフローチャートである。
【図１３】本発明の一実施形態に基づいて、イレイジャーコーディング方式に新しいストレージ装置を含めるために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【図１４】本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチに対する例としての手順のフローチャートである。
【発明を実施するための形態】
【００２１】
本発明の技術的思想の実施形態が参照され、これらの例が添付した図面に図示される。後述する詳細な説明では、多様な特定の詳細を、本発明の技術的思想の十分な理解を助けるために提供する。しかし、この分野における通常の技術を有する者は、このような特定の詳細なしでも、本発明の技術的思想を具現することができる。他の例として、よく知られている方法、手順、構成要素、回路及びネットワークは実施形態を不必要に曖昧にしないために詳細に説明しない。
【００２２】
本明細書において、第１及び第２などの用語を多様な構成要素を説明するために使用するが、これらの構成要素は、これらの用語によって限定されないことが理解されるだろう。前記用語は、１つの構成要素を他のものと区別するために使用する。例えば、第１モジュールは、第２モジュールと命名されることができ、同様に、本発明の概念の範囲を逸脱せずに、第２モジュールは、第１モジュールと命名されることができる。
【００２３】
本発明の技術的思想の説明で使用される用語は、特定の実施形態を説明するための目的でのみ使用され、本発明の技術的思想を限定しない。本発明の技術的思想の説明及び添付した請求項において使用するように、文脈上明らかに別の意味を示していると判定されない限り、単数表現は複数表現も、また含まれている。「及び／又は」の用語は、一つ以上の多くの関連項目の任意かつすべての可能な組合せを含む。「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」の用語を、詳細な説明で使用したときに、記載した特徴、整数、段階、動作、エレメント、及び／又は構成要素の存在を明示し、一つ以上の多くの他の特徴、整数、段階、動作、エレメント、構成要素、及び／又はそれらのグループの存在又は追加を排除しない。図面の構成要素とは、実際の比率に不可欠で比例していない。
【００２４】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ）は、必要な場合、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）／イレイジャーコードパリティの生成とデータの検索を行える十分なインテリジェンス、コンピューティングリソース及び高速入出力（Ｉ／Ｏ）連結性を有する。ＦＰＧＡ＋ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）は、一つ以上のＳＳＤ、ＧＰＵ（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）、ＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）などのより多くの補助コントローラと／プロセッサをサポートするために、エンベデッドＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ  ）スイッチを要求することができる。多数のコプロセッサはまた、より多くのＮＡＮＤフラッシュメモリのチャンネルを要求する。
【００２５】
本発明の実施形態は、ＦＰＧＡの内部のＰＣＩｅスイッチ内のイレイジャーコードをサポートする。本発明の実施形態はまた、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒｓ）を介してユーザーがリモートで（ＦＰＧＡ内で）ＲＡＩＤエンジンを構成できるようにする。
ＰＣＩｅ（制御プレーンで使用される）、又はＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）のような、これらの標準的なインターフェースは、ユーザーがＲｏＣ（ＲＡＩＤ−ｏｎ−ａ−Ｃｈｉｐ）やイレイジャーコードコントローラを事前構成するために使用される。この方法でストレージ装置を構成できることは、コンピューティングリソースをリースするユーザーに有用である。つまり、ストレージの使用が終わったら、ユーザーは、次のユーザーが同じコンピューティングリソースを使用する前に、データを迅速に破壊したがる。この場合には、ＢＭＣは、多数のＦＰＧＡ＋ＳＳＤの内部のすべてのエンベデッドＰＣＩｅスイッチに削除コマンドを送ることができる。ＦＰＧＡのＲｏＣ／イレイジャーコードコントローラは削除コマンドを受信すると、コマンドＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）の範囲により指定されたデータとパリティデータをすべて削除することができる。
【００２６】
今日では、ＰＣＩｅスイッチは、一つ以上のスイッチがマネージャーにさらされる仮想スイッチ又はグループ化を露出させる。このような構成は、ネットワーク、ＣＰＵ−ＧＰＵ、ＦＰＧＡ、これらの仮想ドメインの背後にあるストレージがグループ化される場合に、仮想化された環境で有用である。このような仮想グループは、一実施形態で、仮想化された環境に対するユーザーグループに露出されるか、又はＲＡＩＤ  １０、ＲＡＩＤ  ５０、ＲＡＩＤ  ６０などのＲＡＩＤグループ化に使用されるＲＡＩＤサブグループを生成することにより、ストレージに適用される。このような階層化されたＲＡＩＤグループは、より大きなＲＡＩＤソリューションを作成するために、小規模のグループを作成し、追加のＲＡＩＤ層を適用する。仮想スイッチは、より小さなＲＡＩＤグループを管理する一方、メインスイッチは、全体的なＲＡＩＤ構成を管理する。
【００２７】
データ保護方式がイネーブルされ、管理がストレージユニットの近くに維持されるにつれて、このソリューションは、エンタープライズ及びデータ中心の環境で大きな差別化要因である利点を提供する。本発明の実施形態は、低消費電力でより高い密度と性能を提供する。
【００２８】
このソリューションは、ホストとＳＳＤとの間のデータパスにある、統合されたＲｏＣ又はイレイジャーコードコントローラを含むエンベデッド一つのＰＣＩｅスイッチで構成される。ＰＣＩｅスイッチ＋ＲｏＣ構成要素は、構成及び制御のためＢＭＣによって管理されることができ、新しいユーザーらに提供する前に、特定の構成に対するインターフェースをソフトウェアに露出させることができる。
【００２９】
このイレイジャーコード／ＲＡＩＤモードで動作している場合、エンベデッドＰＣＩｅスイッチから出ていったり、それに入ったりするすべてのＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）又はＮＶＭｅ−ｏＦ（ＮＶＭｅ  ｏｖｅｒ  Ｆａｂｒｉｃ）のトラフィックは、ＲｏＣ又はイレイジャーコードコントローラによってスヌーピング（ｓｎｏｏｐｉｎｇ）されることができる（Ｌｏｏｋ−Ａｓｉｄｅ  ＲｏＣ又はイレイジャーコードコントローラともいう）。ＲｏＣ又はイレイジャーコードコントローラは、トラフィック内のデータがそれのローカルキャッシュでキャッシュヒット（ｃａｃｈｅ  ｈｉｔ）になるか否かを決定することができる。キャッシュヒットがあれば、トランザクション（読み取り又は書き込み）を、適切なＳＳＤに伝達する必要がない。要求された読み出しデータは、ＲｏＣのキャッシュによって直接提供される。書き込みデータは、ＲｏＣのローカルキャッシュに直接更新され、「修正された」又は「ダーティ」データとして表示されることができる。
【００３０】
ＳＳＤへの場合は、パリティは、連結されたＳＳＤの間に分散される。たとえば、ＲＡＩＤ  ４が選択されると、最後のＳＳＤがパリティのみが格納するために使用され、残りのＳＳＤは、データの格納に使用される。
【００３１】
ホストとＳＳＤ装置と間に外部のＰＣＩｅスイッチが存在することにより、仮想入出力アドレスがサポートされる。この場合、ホストＰＣＩｅスイッチの一部である１次ＲｏＣが、すべてのＳＳＤのアドレスを仮想化することができる。つまり、アドレスや装置は、ホストオペレーティングシステム（Ｏｐｒｅａｔｉｎｇ  Ｓｙｓｔｍｅ、ＯＳ）で見えない。本発明の実施形態で、ピア（ｐｅｅｒｓ）の少なくとも２つのＳＳＤの間のピアツーピアのトランザクションが許容されてサポートされる。この選択は、一つ以上のＳＳＤにわたってストライピング（ｓｔｒｉｐｉｎｇ）してＳＳＤの冗長性及び／又は可用性のいくつかのフォームを向上させることができる。このモードでは、ＦＰＧＡ内にエンベデッドされたＲｏＣ又はイレイジャーコードコントローラ（存在する場合）が、ディセーブル（ｄｉｓａｂｌｅ）される。イネーブル（ｅｎａｂｌｅ）された唯一のＲｏＣ／イレイジャーコードコントローラは、ホストＰＣＩｅスイッチ内に有る。
【００３２】
ストレージ装置が、単一の装置モードで動作すると、入ってくるすべてのＮＶＭｅ／ＰＣＩｅトラフィックは、要請されたデータを有するＳＳＤに伝達することができる。
【００３３】
ペアリング（ｐａｉｒｉｎｇ）モードがイネーブルされると、ＲｏＣ／イレイジャーコードコントローラは、要請されたデータのアドレスがそれ自体のＢＡＲドメインに属しているか否かを決定する。この場合、トランザクションは、ローカルＲｏＣによって完了される。書き込みトランザクションについての場合、（いくつかのエンベデッドされたＳＲＡＭやＤＲＡＭを使用する）、掲示された（ｐｏｓｔｅｄ）書き込みバッファ又は書き込みキャッシュが使用される。書き込みキャッシュヒットがある場合（以前の書き込みが発生し、データがまだ書き込みキャッシュバッファに格納されている場合）、処理は書き込みキャッシュポリシーによって異なる。たとえば、キャッシュポリシーが後記入（ｗｒｉｔｅ−ｂａｃｋ）であれば、書き込みコマンドは、完了されることができ、ＲｏＣキャッシュによって終了されることができる。キャッシュポリシーが連続ライトスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）であれば、書き込みデータがドライブに正常に伝送される場合、書き込みコマンドが完了されることができる。この場合、ＲｏＣは、書き込みデータがローカルキャッシュに正常に更新されると、すぐにホストへの書き込みコマンドを終了することができる。
【００３４】
ＲｏＣは、それをＲｏＣが要求する多数の装置を仮想化することができ、多数の装置をデータや装置の障害に対して保護する単一の装置又はより少ない数の装置として示される。データ保護方式は、データの損失のある装置が存在する場合は、他の装置からデータが再構成されるように、自然に複数のグループに分散されることができる。ＲＡＩＤ及びイレイジャーコーディングＥＣは、これらの損失を保護するために分散アルゴリズムを使用する、一般的に採択されるデータ保護である。
【００３５】
ＲｏＣで装置を仮想化するためには、装置がＲｏＣで終了されることができ、ホストからは見えない可能性がある。つまり、ＰＣＩｅスイッチは、すべての既知の装置に連結され、ＲｏＣは、スイッチに連結される。装置を管理するためには、ＲｏＣは、ＰＣＩｅスイッチを介して個々の装置を検出して構成する。また、ＲｏＣは、基本／出荷時モードで通過され、ホストソフトウェアがＲｏＣを構成させる。ホストソフトウェアは、ＰＣＩｅスイッチ＋ＲｏＣハードウェアとともに動作するように特別に設計される。一度設定すると、ＲｏＣは、装置を終了し、装置がホストから見えないようにする。
【００３６】
ＰＣＩｅスイッチ＋ＲｏＣは、ＲＡＩＤやＥＣモードに対して多様な方法で構成される。より多くの装置をサポートするために、より大きなファンアウト構成を生成するために、付加的なＰＣＩｅスイッチのダウンストリームを有し得る。付加的に、１つ以上のこれらのハードウェアの組合せが、より大きな設定を形成するために、共に関連付けられる。たとえば、２つのＰＣＩｅスイッチ＋ＲｏＣが連携して、代替構成を形成することができる。または、このような２つのＰＣＩｅスイッチ＋ＲｏＣが別途動作する。
【００３７】
ＰＣＩｅスイッチ＋ＲｏＣが別途動作する場合には、各ＲｏＣ及びＰＣＩｅスイッチの組合せがホストによって別の装置にインスタンス化される。ここにあるホストは、ＲｏＣによって仮想化されたすべてのＳＳＤを見ることができる標準のＯＳドライバを有する。たとえば、６つのＳＳＤは、ＰＣＩｅスイッチの下に装着され、１つのＳＳＤは、ＲｏＣによってホストにさらされると仮定しよう。第２ＲｏＣ及びＰＣＩｅスイッチの組合せは、ホストに類似の構成を露出できる。２つのＳＳＤがすべてのＲｏＣコントローラ装置（それぞれ一つずつ）についてのホストによって探索される。各ＲｏＣコントローラは、露出された各ＳＳＤに対し別の装置空間を露出させることができる。この露出されたＳＳＤとその背後にあるサポートするすべての装置は、ホストによって見られない。ＲｏＣは、ＰＣＩｅスイッチを介して、ハードウェアの入出力パスを管理する。
【００３８】
この方法は、アクティブ・パッシブ（ａｃｔｉｖｅ−ｐａｓｓｉｖｅ）の設定で使用される。ここで、第２コントローラは、第１コントローラのパスが失敗した場合のバックアップパスである。ホストは、ここで、第１コントローラだけ能動的に使用し、第２のＲｏＣコントローラには、入出力（Ｉ／Ｏ）が伝送されない。アクティブ・パッシブ設定が使用されると、２つのＲｏＣコントローラは、データを内部的に複製することができる。これは、ＲＡＩＤ１データ保護の設定でのように、第１アクティブコントローラがすべての書き込みを第２のＲｏＣコントローラに伝送することによって行われる。
【００３９】
第２のＲｏＣ及びＰＣＩｅスイッチがその背後にある、それ自体のＳＳＤを有さず、ただ、バックアップコントローラのパスである第２アクティブ・パッシブ設定を有し得る。この場合に、二つのＲｏＣコントローラが同じＳＳＤのセットを参照するため、二つのＲｏＣコントローラの間に入出力（Ｉ／Ｏ）が伝送されない可能性がある。これが標準的なアクティブ・パッシブ設定である。
【００４０】
各ＲｏＣの背後にあるＳＳＤは、また互いに調整していない可能性があり、この場合、２つのＳＳＤは、それらの間で共有される保護なしの別のＳＳＤとして扱われる。
【００４１】
また、別の使用法で、両方のパスのすべてをアクティブ・アクティブ設定で使用される。この設定は、負荷バランスの目的で使用される。ここで、ホストは、特殊なソフトウェア層が入出力作業負荷を分散するために使用される方法で両方のパスすべてを使用する。２つのＲｏＣコントローラは、ＳＳＤの両方の同期化状態に維持するために、それらの間の書き込みを調整する。つまり、各ＲｏＣコントローラの各ＳＳＤは、ＲＡＩＤ１の設定でのような同一のデータが含まれる。
【００４２】
別の構成で、２つのＲｏＣコントローラは、カスタムの設定でそれらの入出力を分散させる方式で通信する。ここで、１つのＲｏＣコントローラのみがホストによって使用される。他のＲｏＣコントローラは、第１のＲｏＣコントローラに連結される。第１のＲｏＣコントローラは、１つ以上の仮想ＮＶＭｅ  ＳＳＤをホストにさらすことができる。２つのＲｏＣは、それらの間に奇数及び偶数のＬＢＡ空間を分割するため設定される。ＮＶＭｅは、装置側からのデータのためのプルモデル（ｐｕｌｌ  ｍｏｄｅｌ）を使用するため、コマンドのみが、ホストにより第１ＲｏＣコントローラによって露出されたＳＳＤに伝送される。ＲｏＣコントローラは、それのサイドチャネル連結を介して第２のＲｏＣコントローラにメッセージのコピーを伝送する。ＲｏＣコントローラは、奇数又は偶数のみのＬＢＡ、ストライプ、区域などをサービスするように設定される。この設定は、ホストから管理される必要がない内部的な負荷バランスを提供し、ＲｏＣ及びＰＣＩｅスイッチの組合せによって透明に管理される。個別のＲｏＣコントローラは、奇数又は偶数のＬＢＡ範囲だけを処理することができ、ホストバッファについての要請を満足させることができる。二つのＲｏＣコントローラは、ホストにアクセスできるため、それらは、それらの奇数又は偶数のペアについてのデータを満たせる。
【００４３】
例えば、ホストは、４つの連続したＬＢＡ（０〜３）を読み取るためのコマンドを第１のＲｏＣコントローラに伝送でき、コピーを第２のＲｏＣコントローラに伝送できる。その次に、第１のＲｏＣコントローラは、自身のＰＣＩｅスイッチ上の第１二つのＳＳＤからのＬＢＡ（０、２）についてのデータを読み取る一方、第２のＲｏＣコントローラは、自身のＰＣＩｅスイッチ上の第１二つのＳＳＤのＬＢＡ（１〜３）からデータを読み取る。その次に、第２のＲｏＣコントローラは、第１のＲｏＣコントローラに自身の動作を完了したと報告することができ、そうすると、第１ＲｏＣコントローラはトランザクションが完了されたと、ホストに報告することができる。
【００４４】
奇数／偶数ＬＢＡ／ストライプ／区域のペアは、他の負荷分散の用途に適用されることができる。
【００４５】
本発明の実施形態は、ＳＳＤの故障、削除、及びホット追加（ｈｏｔ  ａｄｄｉｔｉｏｎ）をサポートすることができる。ＳＳＤが正常に動作しなかったり、それのスロットから削除されたりする場合には、ＰＣＩｅスイッチ内のＲｏＣは、条件を検出する必要がある。ＰＣＩｅスイッチがこのような状態を検出する場合、ＲｏＣは、故障したり削除されたりしたＳＳＤについての再構成作業を開始する。また、ＲｏＣは、関連されたストライプからのデータの優先順位を決定することにより、再構成期間中のすべての入出力作業を処理する。
【００４６】
ＳＳＤの故障又は削除がＰＣＩｅスイッチ内のＲｏＣに報告されるのは、少なくとも２つの方法がある。本発明の一実施形態で、すべてのＳＳＤは、ＢＭＣに連結されたプレゼント（Ｐｒｅｓｅｎｔ）ピンを有する。ＳＳＤをシャーシから削除する場合、ＢＭＣは削除を検出する。ＢＭＣは、影響を受けたスロット番号をＰＣＩｅスイッチ内のＲｏＣに報告する。また、ＢＭＣは、ＳＳＤの状態を定期的に監視できる。ＢＭＣはＳＳＤから報告された致命的なエラー状態を検出すると、ＢＭＣは、ＳＳＤを使用しないことに決定することができる。次に、ＢＭＣは、新しいＳＳＤが再構成されるように、故障したスロット番号をＲｏＣに報告することができる。
【００４７】
本発明の他の実施形態で、ＰＣＩｅスイッチは、すべてのＳＳＤがＰＣＩｅ側帯域（ｓｉｄｅｂａｎｄ）信号を介して接続され、特定のエラー状態を検出できる限りホットプラグ（ｈｏｔ  ｐｌｕｇ）をサポートすることができる。ＰＣＩｅスイッチは、ＳＳＤを削除したり、追加したり、又はＳＳＤに連結されたＰＣＩｅリンクが、これ以上作動していないことを検出したりする。これらのエラー状況において、ＰＣＩｅスイッチ内のＲｏＣが、故障したＳＳＤを分離することができるか、又はＢＭＣが故障した装置の電源をディセーブルすることで、すぐに装置の再構成を開始することで故障したＳＳＤを分離できる。
【００４８】
イネーブルされたとき、各Ｕ．２コネクタのプレゼンス（Ｐｒｅｓｅｎｃｅ：ＰＲＳＮＴ＃）ピンは、シャーシ内に、新しい装置があることを示せる。信号は、ＰＣＩｅスイッチ及び／又はＢＭＣに連結される。ＲｏＣは、現在のデータ保護ポリシーによって新しいドライブをそれの既存のドメインに適切に構成することができる。
【００４９】
ホストから入ってくるすべてのトラフィックは、スヌーピングＰ２Ｐ及びアドレス変換論理（物理から論理に）に伝達されるよう要求される。ＰＣＩｅの列挙（ｅｎｕｍｅｒａｔｉｏｎ）中には、すべてのポートからのすべての構成のサイクルがスヌーピングＰ２Ｐロジックに伝達されるように要求される。選択された動作モードに応じて、ＲｏＣのあるＰＣＩｅスイッチの動作は、次のように定義される。
【表１】
2020061149.tif 000003
【００５０】
また、ＲｏＣは、ＰＣＩｅスイッチとホストプロセッサとの間に一列に（ｉｎ−ｌｉｎｅ）に配置される。本発明のこのような実施形態で、ＲｏＣは、Ｌｏｏｋ−Ｔｈｒｏｕｇｈ  ＲｏＣと称される。  Ｌｏｏｋ−Ｔｈｒｏｕｇｈ  ＲｏＣを使用する場合は、ＰＣＩｅスイッチが一般的なＰＣＩｅスイッチとして動作するＲｏＣは、ディセーブルされ、すべてのポートに対しリタイマ（ｒｅ−ｔｉｍｅｒ）となる。この場合、すべてのアップストリームポートは、正常的な使用例でのように連結される。
【００５１】
ＲｏＣがイネーブルされると、少数のＮＴＢ（ｎｏｎ−ｔｒａｎｓｐａｒｅｎｔ  ｂｒｉｄｇｅ）ポートがホストに連結される。この場合に、ＲｏＣは選択されたＲＡＩＤ又はイレイジャーコーディングレベルに基づいて、受信するアドレスを論理アドレスに仮想化することができる。
【００５２】
ＲｏＣが、Ｌｏｏｋ−Ａｓｉｄｅ  ＲｏＣなのかＬｏｏｋ−Ｔｈｒｏｕｇｈ  ＲｏＣなのか否かにかかわらず、すべての受信する読み取り／書き込みメモリ要請は、キャッシュのヒット（ｈｉｔ）又はエラー（ｍｉｓｓ）を判定するために、ＲｏＣのローカルキャッシュと比較して確認される。キャッシュヒットがあれば、要求された読み出しデータは、ＳＳＤの代わりにＲｏＣローカルキャッシュメモリによって提供される。メモリの書き込みヒットの場合には、書き込みデータは、キャッシュメモリにすぐに更新される。同一の書き込みデータは、後でＳＳＤに更新される。この具現は、メモリの書き込みについての全体的な遅延（ｌａｔｅｎｃｙ）を下げ、システムの性能を向上させることができる。
【００５３】
キャッシュミスがある場合、ＲｏＣコントローラは、どのＳＳＤがデータにアクセスするのに適したドライブか否かを判定する。
【００５４】
ＰＣＩｅ装置をアドレシングするためには、ＰＣＩｅ装置は、システムの入出力ポートアドレス空間又はメモリ・マッピングされたアドレス空間にマッピングされるようにイネーブルされるべきである。システムのファームウェア、装置ドライバ又はオペレーティングシステムは、設定コマンドをＰＣＩｅコントローラに記録することにより、ＢＡＲ（Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒｓ）をプログラミングして、アドレスのマッピングを装置に知らせる。すべてのＰＣＩｅ装置は、システムの再設定時にインアクティブ（ｉｎａｃｔｉｖｅ）状態であるため、ＰＣＩｅ装置は、オペレーティングシステム又は装置ドライバがＰＣＩｅ装置と通信できるようにＰＣＩｅ装置に割り当てられるアドレスを有しない可能性がある。ＢＩＯＳ又はオペレーティングシステムは、スロット当たりＩＤＳＥＬ（Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｄｅｖｉｃｅ  Ｓｅｌｅｃｔ）信号を使用してＰＣＩｅコントローラを介してＰＣＩｅスロット（例えば、マザーボード上の第１のＰＣＩｅスロット、第２のＰＣＩｅスロット又は第３のＰＣＩｅスロットなど）を地域別にアドレス指定することができる。
【表２】
2020061149.tif 000004
【００５５】
ＢＩＯＳ又はオペレーティングシステムがどのようなＰＣＩｅスロットに装置が設置されているかを判定する（又は、装置がどのような機能を具現するかを判定する）直接的な方法がないから、ＰＣＩバスが列挙される。バス列挙は、装置の機能１５でバス番号と装置番号の組合せのそれぞれのベンダーＩＤ（ＶＩＤ）及び装置ＩＤ（ＤＩＤ）レジスタを読み出すために試みることで遂行される。ＤＩＤと異なる装置番号は、単に、そのバス上の装置のシリアル番号であり得る。さらに、新しいブリッジが検出された後、新しいバス番号が定義され、装置列挙は、装置番号０から再開される。
【００５６】
装置の機能１５からの応答が受信されない場合、バスマスターは中断を遂行し、無効なＶＩＤ／ＤＩＤ値であるオール・ビット・オン（ａｌｌ−ｂｉｔｓ−ｏｎ）値（１６進数ではＦＦＦＦＦＦＦＦ）を返す。このような方式で、装置ドライバは、特定された組合せのバス／装置＿番号／機能（Ｂ／Ｄ／Ｆ）が存在しないことが分かる。したがって、与えられたバス／装置の機能ＩＤ０に対する読み出しがマスター（イニシエータ）に中断させると、装置ドライバは、そのバス上にいかなる動作装置も存在しないという結論を下すことができる（装置は機能番号０を具現するように要求される）。この場合、残っている機能番号（１〜７）に対する読み出しは残っている機能番号（１〜７）が、また存在しないため必要としない。
【００５７】
ベンダーＩＤレジスタに対し指定されたＢ／Ｄ／Ｆの組合せについての読み出しが成功した場合、装置ドライバは、その装置が存在することを知っている。装置ドライバは、ＢＡＲにすべて１を記録し、装置の要請されたメモリのサイズをエンコーディングされた形式に再び読み込むことができる。デザインは、すべてのアドレス空間のサイズが２のべき乗であり、自然に整列されることを意味する。
【００５８】
この時点で、ＢＩＯＳ又はオペレーティングシステムは、メモリマッピングと入出力ポートアドレスを装置のＢＡＲの構成レジスタにプログラミングすることができる。このアドレスは、システムの電源が入っている限り有効である。電源を切ると、これらのすべての設定が失われ、システムの電源が再びオンにすると、この手順が繰り返される。これらのプロセス全体が完全に自動化されるため、ユーザーはカードそのもの上のＤＩＰスイッチを変更することで、新たに追加されたハードウェアを受動的に構成する作業を行う必要がない。この装置の自動検出及びアドレス空間の割り当ては、プラグアンドプレイが具現される方式である。
【００５９】
ＰＣＩｅ−ｔｏ−ＰＣＩｅのブリッジが探索されると、システムは、０（ｚｅｒｏ）ではないバス番号をブリッジを超えて２次ＰＣＩバスに割り当ててから、その２次バス上の装置を列挙する。より多くのＰＣＩｅブリッジが探索されると、すべての可能なドメイン／バス／装置の組合せがスキャンされるまで探索が再帰的に継続される。
【００６０】
各非ブリッジＰＣＩｅ装置の機能は、最大６つのＢＡＲを具現することができ、それぞれのＢＡＲは入出力ポートとメモリマッピングされたアドレス空間内の異なるアドレスに応答できる。各ＢＡＲは領域を描写する。
【００６１】
また、ＰＣＩｅ装置は、ドライバのコード又は構成情報が含まれているオプションＲＯＭを有する。
【００６２】
ＢＭＣはＲ、ｏＣ設定を直接構成する。ＢＭＣは、特定のデータの保護方式が適用されるハードコーディングされたパス又は構成可能な設定を有する。後者は、インターフェースをＢＩＯＳオプションとして、この構成に露出させたり、追加にハードウェア露出されたインターフェースを介してソフトウェアに露出させる。ハードコーディングされた方式は、ＢＩＯＳファームウェア内に構成され、保護機能をイネーブル／ディセーブルするためのオプションを提供する。
【００６３】
装置のフェイラ（ｆａｉｌｕｒｅ）を処理するために、制御パスを介したＢＭＣは、ドライブが損傷したり、削除されたりする場合を検出することができる。また、ＢＭＣは、装置がＳＭＡＲＴ（Ｓｅｌｆ−Ｍｏｎｉｔｏｒｉｎｇ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｒｅｐｏｒｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｙ）を通じて、すぐに損傷されるだろうと予想できる。この場合において、ＢＭＣは、失敗したシナリオをイネーブルしたり、ユーザーに状況について警告するためにＲｏＣハードウェアを再構成したりする。ＢＭＣは、データパスではない、制御パスにのみ許可される。新しいドライブが挿入される場合は、ＢＭＣは再び介入し、新しいドライブを保護されたグループの一部として構成したり、再構成作業を開始したりできる。ＲｏＣハードウェアは、データのアクセスパスにおいてより低い遅延を提供しながら、可能な限り最小限の性能への影響を提供するために、この設定で、実際の再構成及び回復パスを処理する。
【００６４】
図１は、本発明の一実施形態に係るＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチを含むマシンを示す図である。図１に、マシン１０５を図示する。マシン１０５は、プロセッサ１１０を含むことができる。プロセッサ１１０は、例えばＩｎｔｅｌ  Ｘｅｏｎ、Ｃｅｌｅｒｏｎ、Ｉｔａｎｉｕｍ、又はＡｔｏｍのプロセッサ、ＡＭＤ  Ｏｐｔｅｒｏｎプロセッサ、ＡＲＭプロセッサなどの任意の多様なプロセッサであり得る。図１は、マシン１０５内の単一のプロセッサ１１０を示しており、マシン１０５は、それぞれ、単一のコア又はマルチコアプロセッサである任意の数のプロセッサを含むことができ、任意の所望の組合せで混合されることができる。
【００６５】
また、マシン１０５は、メモリコントローラ１２０によって管理されるメモリ１１５を含むことができる。メモリ１１５は、フラッシュメモリ、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、永続性ＲＡＭ（Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のようなＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの任意の多様なメモリであり得る。メモリ１１５は、また、異なるメモリタイプの任意の所望の組合せであり得る。
【００６６】
マシン１０５は、またＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチ１２５を含むことができる。ＰＣＩｅスイッチ１２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをサポートする任意の所望のＰＣＩｅスイッチである。
【００６７】
マシン１０５は、また装置ドライバ１３５によって制御されるストレージ装置１３０を含む。ストレージ装置１３０は、ＰＣＩｅスイッチ１２５と通信できる任意の所望の形状のストレージ装置であり得る。たとえば、ストレージ装置１３０は、ＮＶＭｅ  ＳＳＤである。
【００６８】
図１は、（スタンドアロンサーバ又はラック（ｒａｃｋ）サーバである）サーバとしてマシン１０５を図示するが、本発明の実施形態は、任意の所望のタイプのマシン１０５を制限なしに含む。例えば、マシン１０５は、デスクトップやラップトップコンピュータ、又は本発明の実施形態からの利点を得る任意の他のマシンに置き換えられる。マシン１０５は、また特殊なポータブルコンピューティングマシン、タブレットコンピュータ、スマートフォン及び他のコンピューティングマシンを含む。
【００６９】
図２は、図１のマシンの追加の詳細を示す図である。図２で、典型的に、マシン１０５は、マシン１０５の構成の動作を調整するために使用され、メモリコントローラ１２０及びクロック２０５を含む１つ以上のプロセッサ１１０を備える。例えば、プロセッサ１１０は、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、又は他の状態保存媒体を含むメモリ１１５に連結される。プロセッサ１１０は、また、例えば、イーサネット（登録商標）コネクタ又はワイヤレスコネクタであるネットワークコネクタ２１０に連結され、ストレージ装置１３０に連結される。プロセッサ１１０は、また他の構成の中で、入出力エンジン２２５を使用して管理できるユーザーインターフェース２２０及び入出力インターフェースポートに取り付けられるバス２１５に連結される。
【００７０】
図３は、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５をストレージ装置に連結するミッドプレーン及びスイッチボードを含む、図１のマシン１０５の追加の詳細を示す図である。図３において、マシン１０５は、ミッドプレーン３０５及びスイッチボード３１０、３１５を含む。スイッチボード３１０、３１５は、それぞれＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０及びベースボード管理コントローラ３２５、３３０を含む。（スイッチボード３１０、３１５）は、また図３に図示されていない付加的な構成要素を含むことができる。つまり、図３は、本発明の実施形態に最適な要素に焦点を合わせる）。
【００７１】
本発明のいくつかの実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０のそれぞれは、総計最大９６個のＰＣＩｅレーンをサポートする。Ｕ．２コネクタを使用してＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０をストレージ装置１３０−１〜１３０−６に連結するために、各Ｕ．２コネクタは、装置あたり最大４つのＰＣＩｅレーンをサポートする。２つのＸ４レーン（各通信方向に対し１つのＸ４レーン）を使用すれば、各ＰＣＩｅスイッチが最大（９６÷８＝１２）個の装置をサポートする。したがって、図３は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５と通信する１２個のストレージ装置１３０−１〜１３０−３及びＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ３２０と通信する１２個のストレージ装置１３０−４〜１３０−６を図示する。しかし、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０と通信するストレージ装置の数は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０によって提供されるＰＣＩｅレーンの数及びストレージ装置１３０−１〜１３０−６のそれぞれによって使用されるＰＣＩｅレーンの数によってのみ制限される。
【００７２】
本発明のいくつかの実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０は、カスタム回路（ｃｕｓｔｏｍ  ｃｉｒｃｕｉｔｒｙ）を使用して実装される。本発明の他の実施形態で、Ｌｏｏ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０は、適切にプログラムされたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を使用して実装される。
【００７３】
ＢＭＣ３２５、３３０は、ストレージ装置１３０−１〜１３０−６を構成するために使用される。たとえば、ＢＭＣ３２５、３３０は、ストレージ装置１３０−１〜１３０−６を初期化して、ストレージ装置１３０−１〜１３０−６上に存在する任意のデータを削除できる。つまり、起動時に、ストレージ装置１３０−１〜１３０−６が、イレイジャーコーディング方式に追加される場合、初期化、任意のデータの削除が行われる。あるいは、この機能は、プロセッサ（図１のプロセッサ１１０）により、（又は存在するが、スイッチボード３１０、３１５上に図示していないローカルプロセッサにより）サポートされる。ＢＭＣ３２５、３３０（又は、図１のプロセッサ１１０又はスイッチボード３１０、３１５上に図示していないローカルプロセッサ）は、またＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックの初期構成を担当することができる。
【００７４】
図３は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む２つのＰＣＩｅスイッチ１２５、３２０を利用したデータ保護の例としての全体の設定を図示する。ＢＭＣ３２５、３３０は、直接Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを構成できる。ＢＭＣ３２５、３３０は、特定のデータの保護方式が適用されるハードコーディングパス又は構成可能な設定を有し得る。後者は、インターフェースをＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）オプションとして、この構成に露出させたり、ハードウェア露出されたインターフェースを介した付加的なソフトウェアに露出させたりする。ハードコーディングされた方法は、ＢＩＯＳファームウェア内に構成でき、保護機能をイネーブル／ディせーブルするためのオプションを提供できる。
【００７５】
ストレージ装置が故障した場合には、ＢＭＣ３２５、３３０は、ストレージ装置が故障したり、制御パスを通して削除されるときを検出できる。その後に、ＢＭＣ３２５、３３０は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを再構成して、失敗したシナリオを可能にする。ＢＭＣ３２５、３３０は、データパスではない、制御パスに連結される。同様に、新しいストレージ装置が挿入されるとき、ＢＭＣ３２５、３３０は、新しいストレージ装置を既存のグループの一部として介入して構成したり、再構成の動作を開始できたりする。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、実際の再構成を処理することができる。この設定内の回復パスは、データアクセスに対する性能の影響を理想的に最小化するだけでなく、残りのストレージ装置から再構成のストレージ装置上のデータを再構成しなければならない。
【００７６】
この時点で、「イレイジャーコーディング」という用語を定義することは、価値がある。イレイジャーコーディングは、多数のストレージ装置上でデータをエンコーディングするために要求されるすべての方法を説明するためのものである。少なくとも２つのストレージ装置やストレージ装置の少なくとも二つの部分（例えば、２つ以上のＮＡＮＤフラッシュチャンネルを含む単一のシェル又はハウジング）が、イレイジャーコーディングのために要求される。一つのストレージ装置のみが使用されている場合は、データは、ストレージ装置に適した一般的な（既存の）データアクセス技術を使用して格納されるからである。つまり、イレイジャーコーディングは、ストレージ装置をより効率的に使用する方式及び／又はデータの冗長性（ｒｅｄｕｎｄａｎｃｙ）を提供する方式で、二つ以上のストレージ装置、単一のストレージ装置の二つ以上の部分、又はこれらの任意の組合せでデータを格納するアプローチを意味する。
【００７７】
ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）は、イレイジャーコーディングのサブセットを示す。つまり、ＲＡＩＤレベルは、多様なイレイジャーコーディング方式の特定の具現を示す。しかし、従来のＲＡＩＤレベルを超えて定義される他のイレイジャーコーディング方式が有り得る。
【００７８】
イレイジャーコーディング（又はＲＡＩＤ）を具現することは、しばしば物理的に区分された二つ以上のストレージ装置を使用する。しかし、本発明のいくつかの実施形態で、単一のシェル又はハウジングは、イレイジャーコーディングの目的のために分離されたストレージ装置として扱われるストレージ装置の多数の部分を備える。たとえば、単一のＮＶＭｅ  ＳＳＤシェル又はハウジングは、多数のＮＡＮＤフラッシュチャンネルを含む。各ＮＡＮＤフラッシュチャンネルは、多様なＮＡＮＤフラッシュチャンネルでデータストライピング（又は他のエンコーディング）された、イレイジャーコーディングの目的のために分離されたストレージ装置と見なされることができる。これは、本発明のいくつかの実施形態で、単一のストレージ装置を使用して、イレイジャーコーディングが具現可能である。しかも、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が（Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のどこかに構成されるか、又は追加のロジックによる）エラー訂正コード又は単一のストレージ装置で使用される他の機能をサポートすることができる。
【００７９】
図４は、相異なるイレイジャーコーディング方式を達成するための、図３のストレージ装置１３０−１〜１３０−６を示す図である。図４で、ストレージ装置１３０−１〜１３０−６は、イレイジャーコーディング方式４０５に図示したように、ＲＡＩＤ０（ｚｅｒｏ）構成で使用される。ＲＡＩＤ０は、多様なストレージ装置にわたってデータをストライピング（ｓｔｒｉｐｉｎｇ）する。つまり、データは、ストレージ装置に適切な論理ユニットに分割され、各論理ユニットは、アレイ内のストレージ装置の数まで異なるストレージ装置に記録される。すべてのストレージ装置は、それらに記録された一つの論理ユニットのデータを有した後に、データは、第１ストレージ装置に再び記録し続ける。
【００８０】
ＲＡＩＤ０は、単一のストレージ装置を単独で使用するか、又は組織化されていないディスクのグループ（ＪＢＯＤ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）又はＪＢＯＦ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｆｌａｓｈ）のような）を使用するよりも利点を提供する。データは、多数のストレージ装置に格納されるため、データは、各ストレージ装置が並列に動作しながら、より迅速に読み出されたり、記録されたりする。したがって、例えば、図４に図示したように、１２個のストレージ装置１３０−１〜１３０−６にかけて、データを分割することにより、各ストレージ装置１３０−１〜１３０−６は、全体のデータを読み取り又は書き込みよりも速く全体のデータの１／１２だけ読み書きする必要がある。アレイの全容量は、アレイのストレージ装置の数に、アレイの最も小さなストレージ装置の容量を掛けた値として計算される。従って、図４では、アレイがデータに対する１２個のストレージ装置を包含するため、アレイの全容量は、アレイの最も小さいストレージ容量の１２倍である。
【００８１】
ＲＡＩＤ０の欠点は、ストレージ装置が故障しても保護機能があるということである。つまり、アレイの任意のストレージ装置が故障したらデータが失われる。実際に、ＲＡＩＤ０は、ＪＢＯＤ又はＪＢＯＦより危険な可能性がある。つまり、多数のストレージ装置に渡ってデータをストライピングすることにより、任意の個々のストレージ装置が故障すると、すべてのデータが失われる（一方で、ＪＢＯＤ又はＪＢＯＦでは、ファイルは一般的に、一つのストレージ装置にのみ記録される。従って、ＪＢＯＤ又はＪＢＯＦ設定で単一のストレージ装置が故障した場合、一部のデータの損失は発生する可能性があるが、必然的に、すべてのデータが失われるわけではない。）。
【００８２】
ＲＡＩＤ０は、いかなる冗長性も含まれていないため、技術的に独立したディスクの冗長アレイではない。しかし、ＲＡＩＤ０は、通常的にＲＡＩＤレベルとみなされ、ＲＡＩＤ０は、確かにイレイジャーコーディング方式と見なされる。
【００８３】
イレイジャーコーディング方式４１０は、一般的なＲＡＩＤ方式のＲＡＩＤ５を図示する。ＲＡＩＤ５で、パリティブロックは、そのストライプの他のストレージ装置に格納されたデータに対して計算される。したがって、図４において、ＲＡＩＤ５アレイは、総計１２個のストレージ装置を含むから、１１個のストレージ装置がデータドライブとして使用され、１つのストレージ装置は、パリティドライブとして使用される（ＲＡＩＤ５で、パリティデータは、パリティドライブに制限されないが任意のデータのようにストレージ装置にわたって分散されている。これ以上、多く使用されないＲＡＩＤ４は、すべてのパリティ情報を単一のドライブに格納する。）。アレイ内のｎ個のストレージ装置があるアレイの全容量は、最も小さなストレージ装置の容量の（ｎ−１）倍で計算される。各ストライプは、単一のパリティブロックを含むことから、イレイジャーコーディング方式４１０は、最大で１つのストレージ装置の故障を許容することができ、まだすべてのデータにアクセスすることができる（故障したストレージ装置のデータは、パリティブロックと結合して機能的なストレージ装置上のデータを使用して回復されることができる）。
【００８４】
ＲＡＩＤ５は、ＲＡＩＤ０よりも少ない全体のストレージを提供するが、ストレージ装置の故障に対する保護機能を提供する。これはＲＡＩＤレベルの中で決定する重要なトレードオフである。全体のストレージ容量と冗長性の相対的な重要性による。
【００８５】
図４に図示していない他のＲＡＩＤレベルも、またイレイジャーコーディング方式として使われる。たとえば、ＲＡＩＤ６は、２つのストレージ装置を使用しながら、パリティ情報を格納するため、全体のストレージ容量を最小ストレージ装置の容量の（ｎ−２）倍に減らしながら、同時に最大２つのストレージ装置の故障を許容する。ハイブリッド方式も可能である。例えば、ＲＡＩＤ０＋１、ＲＡＩＤ１＋０、ＲＡＩＤ５＋０、ＲＡＩＤ６＋０、及びその他のＲＡＩＤ方式にもすべて可能で、それぞれは、多様な全体のストレージ容量とストレージ装置の故障に対する許容誤差を提供する。たとえば、ストレージ装置１３０−１〜１３０−６のうち、５つは１つのＲＡＩＤ５アレイを形成するために使用され、５つ以上のストレージ装置１３０−１〜１３０−６は、二番目のＲＡＩＤ５アレイを形成するために使用され、残りの２つのストレージ装置と結合されるこのような２つのグループは、より大きなＲＡＩＤ５アレイを形成するために使用される。または、ストレージ装置１３０−１〜１３０−６は、２つのグループに分割され、それぞれのグループは、ＲＡＩＤ０アレイを具現し、２つのグループは、ＲＡＩＤ１よりもっと大きいアレイとして動作する（したがって、ＲＡＩＤ０＋１の設定を具現）。ＲＡＩＤとイレイジャーコーディング技法は、固定コード又は回転コードを使用し、前記固定コード／パリティ駆動ドライバー表記法は、単に例示の目的であることを留意しなければならない。
【００８６】
イレイジャーコーディング方式４１５は、すべてのＲＡＩＤレベル及び任意の所望のイレイジャーコーディングスキームに適用可能な、より一般的な説明を示す。ストレージ装置１３０−１〜１３０−６のアレイが与えられると、これらのストレージ装置は、２つのグループに分割される。つまり、データを格納するために使用される１つのグループ、コードを格納するために使用される他のグループである。コードは、パリティ情報やデータグループ内のデータのサブセットから欠落されたデータの復元やコーディンググループ内の一部のコードを承認する任意の所望のコーディング情報であり得る。図４に示したように、イレイジャーコーディング方式４１５は、最大Ｘ個のデータストレージ装置及びＹ個コードのストレージ装置を含む。アレイのＸ個のストレージ装置の任意の組合せを考慮すれば、すべてのＸ個のデータストレージ装置からのデータにアクセスしたり、再構成することができるものと予想される。したがって、イレイジャーコーディング方式４１５は、一般的に、アレイ内の最大のＹ個のストレージ装置の故障を許容することができ、それにもかかわらずアレイに格納されたすべてのデータにアクセスすることができる。容量面では、イレイジャーコーディング方式４１５の全容量は、一番小さなストレージ装置の容量のＸ倍である。
【００８７】
前記議論で、任意のイレイジャーコーディング方式の全容量は、「最小のストレージ装置の容量」と関連して記述されることに注意しよう。いくつかのイレイジャーコーディング方式の場合、ストレージ装置が可変容量を有し、まだ完全に利用されることが可能である。しかし、ＲＡＩＤ０又はＲＡＩＤ１のようないくつかのイレイジャーコーディング方式は、すべてのストレージ装置が同じ容量を有すると予想され、より大きなストレージ装置が含むすべての容量を捨てるだろう。したがって、「最も小さなストレージ装置の容量」という表現は、相対的な言葉として理解されるべきで、任意の特定のイレイジャーのコーディング方式を使用するアレイによって提供される全容量は、前述した公式より大きい可能性がある。
【００８８】
図３に戻ると、使用された特定のイレイジャーコーディング方式にかかわらず、ＰＣＩｅスイッチ１２５、３２０のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、物理ストレージ装置１３０−１〜１３０−６から新しいストレージ装置を効果的に生成する。この新しいストレージ装置は、このイレイジャーコーディング方式によって提示されたストレージ装置が物理的に存在しないため、仮想ストレージ装置として考えられる。そして、この仮想ストレージ装置は、物理ストレージ装置１３０−１〜１３０−６を使用するから、物理ストレージ装置１３０−１〜１３０−６は、ホストから隠されていなければならない。最後に、格納されているデータが、ホストが知らない方式でエンコーディングされて格納された場合には、ホストは、ストレージ装置１３０−１〜１３０−６上のブロックに直接アクセスしようとすることが問題となる。
【００８９】
これらの仮想ストレージ装置の使用をサポートするために、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５及び／又は３２０は、仮想ストレージ装置の容量を、図１のプロセッサ１１０に通知することができる。たとえば、ストレージ装置１３０−１〜１３０−６がそれぞれ１ＴＢのデータを格納する５つのＮＶＭｅ  ＳＳＤを含み（数学的単純化のために、１ＴＢは、１０１２バイトではなく２４０バイトで考慮される）、イレイジャーコーディング方式がＲＡＩＤ５アレイを具現する場合、仮想ストレージ装置の有効なストレージ容量は４ＴＢある。（より少ない又はより多くのストレージ装置を使用するイレイジャーコーディングの他の具現は、それぞれ１ＴＢより少なく又は多く格納できており、異なる容量を有する仮想ストレージ装置になることができる。）Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５及び／又は３２０は、それらが総計４ＴＢ（又は２４２バイト）のストレージ容量を提供する仮想ストレージ装置に連結されたということを、プロセッサ１１０に通知することができる。その後に、図１のプロセッサ１１０は、図５を参照して、以下において更に説明するように、この仮想ストレージ装置内のブロックにデータを記録することができ、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、データの実際の格納を処理することができる。たとえば、ＮＶＭｅ  ＳＳＤ上のブロックがそれぞれ４ＫＢサイズである場合、プロセッサ１１０は、０〜（２３０−１）の番号が付いた論理ブロックにデータが記録されるよう要請できる。
【００９０】
あるいは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５及び／又は３２０は、仮想ストレージ装置と通信する方法を示す図１のプロセッサ１１０からホストメモリアドレスのブロックを要請する。図１のプロセッサ１１０は、データを読み出したり、記録しようとする場合は、伝送は、ホストメモリアドレスのブロック内の適切なアドレスを含むＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチ１２５及び／又は３２０に送られる。このホストメモリアドレスのブロックは、少なくともイレイジャーコーディング方式を使用して具現された仮想ストレージ装置のサイズでなければならない（そして、追加のストレージ装置が使用中に、イレイジャーコーディング方式に追加されると予想される場合は、仮想ストレージ装置の初期容量よりも大きい可能性がある）。
【００９１】
図５は、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の詳細を示す図である。図５で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、コネクタ５０５、ＰＣＩｅ−ｔｏ−ＰＣＩｅスタック５１０−１〜５１０−６）、ＰＣＩｅスイッチコア５１５、並びにＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５２０のような多様な構成を含む。コネクタ５０５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、図１のプロセッサ１１０、図３のストレージ装置１３０−１〜１３０−６のような、図１のマシン１０５内の多様な他の構成と通信できるようにする。一つ以上のコネクタ５０５は、（図１のプロセッサ１１０のような）アップストリーム構成に連結されるという点において、「外部」コネクタと称される。残りのコネクタ５０５は、ダウンストリーム装置（図３のストレージ装置１３０−１〜１３０−６のような）に連結されるため、内部又はダウンストリーム「コネクタ」と称される。ＰＣＩｅ−ｔｏ−ＰＣＩｅスタック５１０−１〜４１６は、ＰＣＩｅの装置間のデータ交換を許容する。例えば、図３のストレージ装置１３０−１は、図３のストレージ装置１３０−３にデータを伝送する。または、図１のプロセッサ１１０は、読み取りまたは書き込みの要請を遂行するために、図３のストレージ装置１３０−１〜１３０−６の中から一つ以上を要請する。ＰＣＩｅ−ｔｏ−ＰＣＩｅスタック５１０−１〜５１０−６は、データを一時的に格納するバッファを含む。例えば、特定の伝送のためのデスティネーション装置が現在ビジー状態（ｂｕｓｙ）であれば、ＰＣＩｅ−ｔｏ−ＰＣＩｅスタック５１０−１〜５１０−６は、デスティネーション装置が自由状態（ｆｒｅｅ）になるまで伝送を格納する。ＰＰＵ５２０は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の任意の構成要請を処理する構成のセンターとして動作する。図５は、６つのＰＣＩｅ−ｔｏ−ＰＣＩｅスタック５１０−１〜５１０−６を図示するが、本発明の実施形態は、任意の数のＰＣＩｅ−ｔｏ−ＰＣＩｅスタックを含む。ＰＣＩｅスイッチコア５１５は、一つのＰＣＩｅポートから他のＰＣＩｅポートにデータをルーティングするように動作する。
【００９２】
スヌーピングロジック５２５と、イレイジャーコーディングコントローラ５３０の動作に入る前に、図３のストレージ装置１３０−１〜１３０−６に格納されたデータに対して少なくとも２つの異なる「アドレス」が使用されることを理解することは助かる。任意のストレージ装置で、データは、ハードウェア構造に関連付けられた特定のアドレスに記録される。このアドレスは、「物理」アドレスと見なされる。ＮＶＭｅ  ＳＳＤのコンテキスト（ｃｏｎｔｅｘｔ）で、「物理」アドレスは、一般的にＰＢＡ（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）として示される。
【００９３】
ＮＶＭｅ  ＳＳＤｓで使用されるフラッシュメモリは、一般的に、データがその場に上書きされることを承認しない。代わりに、データが上書きされなければならない必要がある場合には、以前のデータは無効化され、新しいデータは、ＮＶＭｅ  ＳＳＤ上の他の新しいブロックのどこかに記録される。したがって、（ファイル、オブジェクト、またはその他のデータ構造である）、特定のデータ構造と関連されるデータが記録されているＰＢＡは、時間が経つにつれて変更される。
【００９４】
なお、フラッシュメモリにデータを再配置しなければならないもう一つの理由がある。データは、一般的に、フラッシュメモリにデータを書き込むときに使用されるものよりも大きいユニットでフラッシュメモリから削除される。有効なデータが削除されるユニットのどこかに格納されている場合は、有効なデータが、ユニットが削除される前に、フラッシュメモリの他のどこかに記録されるべきである。この削除プロセスは、一般的にガービッジ・コレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）と称され、削除されるユニットで有効なデータをコピーするプロセスは、プログラミングと称される。そしてＷｅａｒ  Ｌｅｖｅｌｉｎｇ（フラッシュメモリのセルをほぼ同じに使用しようと試みるプロセス）は、フラッシュメモリ内のデータをまた再配置することもできる。
【００９５】
ホストは、特定のデータブロックが移動される度に通知され、またはデータの新しい格納位置が通知されうる。しかし、このような方法でホストに通報することは、ホストにとっては相当な負担になる。したがって、ほとんどのフラッシュメモリ装置は、データが格納される論理ブロックアドレス（ＬＢＡ）をホストに通知し、ＬＢＡをＰＢＡ（多くの場合、フラッシュ変換階層（ＦＴＬ））にマッピングするテーブルを維持管理する。その後に、当該データが新しいＰＢＡに移動されるたびに、フラッシュメモリは、ホストに新しいアドレスを知らせる代わりに、ＦＴＬでＬＢＡ−ＰＢＡマッピングテーブルをアップデートする。したがって、各ストレージ装置について、データに関連付けられたＰＢＡ及びＬＢＡがあり得る。
【００９６】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックにより提示されるように、仮想ストレージ装置の概念を追加すると、この構造にもう１つのレベルが導入される。図３を参照して、イレイジャーコーディング方式が５つの１ＴＢ  ＮＶＭｅ  ＳＳＤを含み、各ＮＶＭｅ  ＳＳＤは、４ＫＢサイズのブロックを使用する、前記提示された例を思い出そう。各ＮＶＭｅ  ＳＳＤは、０から（２２８−１）までの番号が付けられたＬＢＡが含まれる。しかし、ホストに提供された仮想ストレージ装置は、０から（２３０−１）までの番号が付けられるＬＢＡが含まれる。
【００９７】
したがって、ホストにより見られるＬＢＡ範囲は、多様なストレージ装置に対する多数のＬＢＡ範囲の組合せを示す。ホストにより使用されるＬＢＡ範囲と個々のストレージ装置のＬＢＡ範囲を区別するために、ホストにより使用するＬＢＡを「ホストＬＢＡ」、「グローバルＬＢＡ」又は「オペレーティングシステム（Ｏ／Ｓ）−認識ＬＢＡ」と称される一方、ストレージ装置により使用されるＬＢＡは、「装置のＬＢＡ」、「ローカルＬＢＡ」又は「ＲｏＣ後ＬＢＡ」と称される。ホストＬＢＡ範囲は、任意の所望の方法で、多様なストレージ装置に分割される。たとえば、ホストＬＢＡ範囲は、隣接したブロックに分割されることができ、個々のブロックは、特定のストレージ装置に割り当てられる。このような方式を使用すれば、ホストＬＢＡ０〜（２２８−１）は、ストレージ装置１３０−１に対する装置ＬＢＡ０〜（２２８−１）にマッピングされ、ホストＬＢＡ２２８〜２２９−１は、ストレージ装置１３０−２に対する装置のＬＢＡ０〜２２８−１等にマッピングされる。あるいは、ホストＬＢＡ内の個々のビットは、当該データを格納する適切なストレージ装置及び装置のＬＢＡを決定するのに使用される。例えば、ホストＬＢＡの下位ビットを使用して装置を識別し、そのビットをストライピングして、ストレージ装置により使用される装置のＬＢＡを生成する。しかし、ホストＬＢＡが装置のＬＢＡにマップされる方法にかかわらず、データが格納される位置を表す２つの、３つの又は潜在的に、はるかに異なるアドレスが有り得る。
【００９８】
もちろん、ストレージ装置が同種であることを要求しない。すなわち、それらは、異なるサイズを有することができ、ＬＢＡの数が異なる場合がある。例えば、それらは互いに異なる装置のタイプであり、ＳＳＤ及びハードディスクドライブが混在されている可能性がある。
【００９９】
説明の単純化のために、ストレージ装置に提供されるアドレスが、論理ブロックアドレス（たとえば、ハードディスクドライブ）ではなくても「装置のＬＢＡ」という用語が使用される。「装置のＬＢＡ」が、データがストレージ装置に格納されたデータのある実際のアドレスである場合には、ストレージ装置は、データにアクセスする前に、装置のＬＢＡを別のアドレスにマッピングしない可能性がある。
【０１００】
図５に再び戻ると、スヌーピングロジック５２５及びイレイジャーコーディングコントローラ５３０は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックとして動作する。スヌーピングロジック５２５は、（例えば、要請がそれのデスティネーションに伝達される前にインターセプト（ｉｎｔｅｒｃｅｐｔ）することにより）伝送を「スヌーピング」することができ、マルチプレクサ５４０を介してスヌーピングロジック５２５に伝達されるキャプチャインターフェースに５３５−１〜５３５−６を使用して、適切なデスティネーションを決定する。上述したように、プロセッサ１１０は、指定された容量（又は特定のサイズのホストメモリアドレスのブロック）の仮想ストレージ装置を単に「見て」、ホストＬＢＡ（仮想ストレージ装置と関連される）に基づいて、データの読み取り又は書き込みコのマンドを発行する。スヌーピングロジック５２５は、これらのホストＬＢＡを一つ以上の特定の物理ストレージ装置上の装置のＬＢＡに変換し、それによって要請を指示するように伝送を変更する。スヌーピングロジック５２５は、任意の所望の方式で、この変換を管理する。たとえば、スヌーピングロジック５２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックが動作する方式に関連される因子（例えば、（ＲＡＩＤレベルのような）、それ自体のイレイジャーコーディング方式、ストライプのサイズ、ストレージ装置の数など）により変わってくる装置のＬＢＡを利用して、図３のストレージ装置１３０−１にホストＬＢＡの第１範囲をマッピングし、図３のストレージ装置１３０−２にホストＬＢＡの第２範囲をマッピングする等々のテーブルを備える。また、スヌーピングロジック５２５は、ホストＬＢＡ内の特定のビットを使用して図３のストレージ装置１３０−１〜１３０−６のいずれかに問題の当該データを格納するかを決定する。例えば、アレイがただ２つのストレージ装置を含む場合には、スヌーピングロジック５２５は、下位ビット（又は論理ブロックアドレスの他のビット）を使用して、データが第１又は第２ストレージ装置のいずれかに記録されるかを決定する。（より多くのストレージ装置はアレイに含まれるに伴い、明らかに、より多くのビットが使用され、論理ブロックアドレスに存在していないストレージ装置を「識別」するビットの組合せが含まれないように注意を払わなければならない。例えば、図３は、ビット値０００００〜１０１１１を使用する総計２４個のストレージ装置１３０−１〜１３０−６を図示する。よって、１１０００と１１１１１との間のビットの値は避けるべきである。）本発明の実施形態は、ホストから受信された論理ブロックアドレスを（適切な）ストレージ装置上のブロックアドレスにマッピングする任意の他の所望のアプローチを使用する。
【０１０１】
たとえば、（イレイジャーコーディングをファクタリング（ｆａｃｔｏｒｉｎｇ）（考慮）した後）、ストレージ装置１３０−１〜１３０−６の全体にわたった全体のストライプを満たすのに十分なデータを有する書き込みの要求を送信する図１のプロセッサ１１０を考慮しよう。スヌーピングロジック５２５は、データを個々の論理ユニットに分割することができ、以下で詳述するように、イレイジャーコーディングコントローラ５３０は、データを提供したり、修正したりする。スヌーピングロジック５２５は、適切なデータとともにストレージ装置１３０−１〜１３０−６のそれぞれに予定された一つの伝送を生成することができる。
【０１０２】
スヌーピングロジック５２５が、元のホストＬＢＡを当該ストレージ装置に適した装置のＬＢＡに代替する場合、その装置のＬＢＡは、物理ブロックのアドレスである必要はないということに留意しなければならない。言い換えれば、スヌーピングロジックによって使用される装置のＬＢＡは、それ自体が他の論理ブロックのアドレスであり得る。このような構造は、物理ストレージ装置が適切な自体のデータストレージを管理することを続けるようにしてくれる。たとえば、物理ストレージ装置がＮＶＭｅ  ＳＳＤの場合、ＳＳＤは、ＮＡＮＤフラッシュメモリチップのいずれか１つに提供された装置のＬＢＡとＰＢＡとの連結を管理するためのそれのフラッシュ変換層を使用して、データを移動させて、ガービッジコレクションやウェアレベリングを遂行する。これらの動作は、スヌーピングロジック５２５の認識なしにも発生する。しかし、ホストによって指示されない限り、当該ストレージ装置がデータを再配置しないとすれば、スヌーピングロジック５２５によって提供される装置のＬＢＡは、ストレージ装置上の物理アドレスである。
【０１０３】
上述したように、イレイジャーコーディングコントローラ５３０は、イレイジャーコーディング方式を遂行する。イレイジャーコーディング方式により、イレイジャーコーディングコントローラ５３０は、（例えば、ＲＡＩＤ５又はＲＡＩＤ６のイレイジャーコーディング方式を使用する場合）適切なパリティデータを簡単に生成でき、（図１のプロセッサ１１０により提供されたように）オリジナルデータは、そのまま残される。しかし、本発明のいくつかの実施形態で、イレイジャーコーディングコントローラ５３０は、オリジナルデータを修正することもできる。たとえば、イレイジャーコーディングコントローラ５３０は、図３の個々のストレージ装置１３０−１〜１３０−６に格納されたブロックが、エラーが発生しても、適切に読み取られるようにオリジナルデータにエラー訂正コードを具現する。または、イレイジャーコーディングコントローラ５３０は、図３のストレージ装置１３０−１〜１３０−６に記録されたデータを暗号化して、図３のストレージ装置１３０−１〜１３０−６に記録されたデータが暗号化キーなしに読み取られないようにすることができる（あるいは、より悪い場合、図１のプロセッサ１１０は、データを直接記録する場合には、イレイジャーコーディングコントローラ５３０は、ストレージ装置１３０−１〜１３０−６が損傷されたと考えられる）。または、イレイジャーコーディングコントローラは、図３の各ストレージ装置１３０−１〜１３０−６に記録されたデータにパリティ情報（又は類似のタイプの情報）を導入することができる。イレイジャーコーディングコントローラ５３０によって遂行されるように、データについての特定の動作は、使用されるイレイジャーコーディング方式に依存する。
【０１０４】
スヌーピングロジック５２５及びイレイジャーコーディングコントローラ５３０は、任意の所望の方法で具現される。たとえば、スヌーピングロジック５２５及びイレイジャーコーディングコントローラ５３０は、適切なソフトウェアが格納されたプロセッサを使用して具現される。しかし、ＰＣＩｅスイッチは、（一般的には、数多くの機能を具現する必要がないＰＣＩｅスイッチのような装置のプロセッサで実行されるソフトウェアより典型的に高速な）ハードウェア回路として一般的に具現されることから、スヌーピングロジック５２５と、イレイジャーコーディングコントローラ５３０は、適切な回路を使用して具現される。この回路は、適切にプログラムされたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又は他の所望のハードウェア具現を含む。
【０１０５】
最も基本的な実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、スヌーピングロジック５２５及びイレイジャーコーディングコントローラ５３０のみを使用して具現される。しかし、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックでキャッシュ５４５及び／又は書き込みバッファ５５０を含んでいることは相当な利点を提供できる。
【０１０６】
キャッシュ５４５は、仮想ストレージ装置に格納されたデータのサブセットを格納することができる。一般的に、キャッシュ５４５は、全体の仮想ストレージ装置よりも容量が小さいが、アクセスが速い。したがって、いくつかのデータをキャッシュ５４５に格納することで、キャッシュ５４５に対するキャッシュヒットは、基本（基底）物理ストレージ装置からのデータにアクセスするよりも、仮想ストレージ装置の性能がより速くなる可能性がある。たとえば、キャッシュ５４５は、仮想ストレージ装置から一番最近アクセスされたデータを格納することができ、古くなった（ｓｔａｌｅ）データが増加するにつれて、任意の所望のアルゴリズム（例えば、最も最近使用されたり、最も頻繁に使用されたりするアルゴリズム）を使用して、代替用のデータを識別できる。キャッシュ５４５は、ＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、又は任意の他の望みのメモリの構造のような、任意の所望のメモリ構造を使用して具現される。キャッシュ５４５は、プロセッサ内のＬ１又はＬ２キャッシュにおいて使用されるような、従来のメモリよりも高速なメモリ構造を使用して具現されることもできる。最後に、キャッシュ５４５をＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の一部として図示したが、キャッシュ５４５はまた、図１のメモリ１１５に格納される可能性もあり、Ｌｏｏｋ  −Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５によってアクセスされる。
【０１０７】
書き込みバッファ５５０は、書き込み要請を迅速に処理するためのメカニズムを提供する。イレイジャーコーディングを使用して、多数の物理ストレージ装置を拡張（包括）する仮想ストレージ装置への書き込み動作を遂行するために必要な時間は、単一の物理ストレージ装置への類似の書き込み要請よりも遅い可能性がある。記録（書き込み）動作を遂行することは、同じブロック内の他のストレージ装置からデータを読み出す段階を伴うことができ、その後で新たなデータがマージされることができ、その次にマージされたデータは、適切なストレージ装置に再び書き込みされる。マージを遂行するのは、パリティ又は他のコード情報を計算することを含むこともできる。また、基本的物理ストレージ装置が他の動作（例えば、読み取り要請を処理すること）を遂行して、忙しい状態である場合には、書き込み要請がまた遅延されることもできる。書き込み要請が完了するまで待っている間、図１のプロセッサ１１０上で実行されるソフトウェアを遅延させることは望ましくない可能性がある。したがって、図１のプロセッサ１１０上で実行されるソフトウェアを遮断する代わりに、スヌーピングロジック５２５が書き込み要請が既に完了したことを、図１のプロセッサ１１０上で実行されるソフトウェアに通知するうちに、書き込みバッファ５５０は、基本的物理ストレージ装置に対する記録が完了するまで、一時的にデータを格納できる。このアプローチは、プロセッサ１１０で実行中のソフトウェアへの書き込みが完了したことを通知する前に、書き込み動作が完了されるライト・バック（ｗｒｉｔｅ−ｂａｃｋ）キャッシュポリシー（ｗｒｉｔｅ−ｂａｃｋ  ｃａｃｈｅ  ｐｏｌｉｃｙ）と比較されるライト・スルーキャッシュポリシー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ  ｃａｃｈｅ  ｐｏｌｉｃｙ）と類似する。キャッシュ５４５と同様に、書き込みバッファ５５０は、ＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、又はＬ１若しくはＬ２キャッシュの構造のような任意の所望のメモリ構造を使用して具現される。
【０１０８】
書き込み動作を遂行する一部として、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、書き込み動作を完了するのに必要な任意のデータが現在のキャッシュ５４５に存在するか否かをチェックできる。例えば、図１のプロセッサ１１０は、仮想ストレージ装置への書き込み要請を伝送すると、イレイジャーコーディング方式は、パリティ又は他のコード情報を計算するために、全体のストライプが読み取られることを要求することができる。そのデータの一部（又は全部）がキャッシュ５４５に存在する場合、データは基本的物理ストレージ装置からデータを読み出すのではなく、キャッシュ５４５からアクセスされることができる。さらに、キャッシュポリシーは、データが短期間に再び要求される場合に、記録されるデータがキャッシュ５４５にもキャッシュされるべきだと提案できる。
【０１０９】
一方、図５は、キャッシュ５４５及び書き込みバッファ５５０を別個の要素として図示するが、本発明の実施形態は、両者を単一の要素（単に「キャッシュ」と称されることがある）に結合できる。本発明の実施形態で、キャッシュは、キャッシュに格納されたデータが「クリーン（ｃｌｅａｎ）」なのか「ダーティ（ｄｉｒｔｙ）」なのかを示すビットを含む。「クリーン」データは、基本物理ストレージ装置に最後に記録された後に、読み出されたが、修正されていないデータを示す。「ダーティ」であるデータは、基本的物理ストレージ装置に最後に記録された後に、修正されたデータである。キャッシュに「ダーティ」のデータが含まれている場合は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、キャッシュポリシーに従ってデータがキャッシュから削除されるとき、「ダーティ」データを基本的ストレージ装置に再び書き込む必要がある。なお、本発明の実施形態は、キャッシュ５４５、書き込みバッファ５５０の両方（個別に、又は単一の要素に結合される）を含むか、又はその両方を含まない可能性がある。
【０１１０】
上述したように、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、基本的物理ストレージ装置から仮想ストレージ装置を「生成」することができ、これは、図１のプロセッサ１１０が図３の物理ストレージ装置１３０−１〜１３０−６への直接アクセスを得る場合に問題になる。したがって、図１のマシン１０５は、初期にブート（つまり、開始又は電源オン）し、アクセス可能な多様なＰＣＩｅ装置を列挙しようと試みる場合には、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、それに連結されたストレージ装置とともにＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを使用するように決定する。この場合に、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５から任意のＰＣＩｅ装置のダウンストリームの列挙を防止しなければならない。これらの列挙を防止することにより、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図３のストレージ装置１３０−１〜１３０−６上のデータに直接アクセスできる図１のプロセッサ１１０を考慮せずに（イレイジャーコーディング方式で使用されたデータを損傷させることができる）仮想ストレージ装置を「生成」する。しかし、図９及び図１０を参照して、以下に説明されているように、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５がＰＣＩｅ装置のダウンストリームの列挙を許容しなければならない状況が有り得る。
【０１１１】
スヌーピングロジック５２５は、ＰＰＵ５２０に構成コマンドを伝達する。このように、スヌーピングロジック５２５は、またＰＣＩｅスイッチコア５１５をＰＰＵ５２０と連結するための目的でＰＣＩｅ−ｔｏ−ＰＣＩｅスタックとして動作する。
【０１１２】
最後に、スヌーピングロジック５２５は、図１のプロセッサ１１０から（おそらくＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５上のピンを介して）、イレイジャーコーディングイネーブル信号５５５を受信する。イレイジャーコーディングイネーブル信号５５５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５において、イレイジャーコーディングロジックをイネーブル及びディセーブルさせることを可能にするために使用される。
【０１１３】
図６は、本発明の他の実施形態によるＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むＰＣＩｅスイッチの詳細を示す図である。図５及び図６と比較して分かるように、図５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５と、図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むＰＣＩｅスイッチ６０５で、Ｌｏｏｋ−ＡｓｉｄｅイレイジャーコーディングロジックとＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックとの間の主な違いは、イレイジャーコーディングロジックが配置されるところである。図５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５において、イレイジャーコーディングロジックは、ＰＣＩｅスイッチの「側面」に存在し、一方、図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むＰＣＩｅスイッチ６０５では、イレイジャーコーディングロジックは、ＰＣＩｅスイッチと同一ライン上に（「ｉｎｌｉｎｅ）」）ある。
【０１１４】
Ｌｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックと比較してＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを使用することは、技術的に利点と欠点を有する。図５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、ホストからのデータの方向転換をインターセプトし管理するために、スヌーピングロジック５２５が必要であるため、より複雑な具現である。対照的に、ホストと図３のストレージ装置１３０−１〜１３０−６との間のすべてのデータは、イレイジャーコーディングコントローラ５３０を通過するため、図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの具現がより簡単である。一方、イレイジャーコーディングロジックがディセーブルされると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックは、ＰＣＩｅスイッチ１２５の動作に追加の遅延を導入しない。対照的に、図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックは、ＰＣＩｅエンドポイントとして動作する。図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックは、ホストと図３のストレージ装置１３０−１〜１３０−６との間のデータをバッファリングさせることができ、これは通信の遅延を増加させる。図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックで、イレイジャーコーディングコントローラ５３０は、またフレームバッファ、パステーブル、ポート調整ロジック及びスケジューラ（図６に図示せず）のような要素を含む。つまり、一般的にＰＣＩｅスイッチコア５１５内に含まれる要素である。
【０１１５】
なお、一般的にＰＣＩｅスイッチは、（ホストへの）アップストリーム及び（ストレージ装置やその他の連結された装置への）ダウンストリームのトラフィックにおいて同じ数のポートを使用する。例えば、ＰＣＩｅスイッチ６０５が総計９６個のポートを含むと、一般的にアップストリームのトラフィックには、４８個使用され、ダウンストリームのトラフィックには、４８個使用される。しかし、図６のＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックがイネーブルされると、レーザコーディングコントローラ５３０は、すべてのダウンストリーム装置を仮想化する。このような状況で、一般的にホストとの通信には、単に１６個あるいはおそらく３２個のアップストリームポートが必要である。ＰＣＩｅスイッチ６０５が３２個又は６４個よりも多くのポートを含む場合には、追加のポートは、仮想ストレージ装置の容量を増加させるために使用される追加のダウンストリーム装置を連結するのに使用される。このためには、図６のイレイジャーコーディングコントローラ５３０は、ホストと通信するために不透明ブリッジ（ＮＴＢ）ポートを使用する。
【０１１６】
図６は、Ｌｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むＰＣＩｅスイッチ６０５を示す。しかし、本発明の実施形態は、ＰＣＩｅスイッチ６０５からＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを分離する。たとえば、Ｌｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックは、ＦＰＧＡ又はＡＳＩＣを使用するＰＣＩｅスイッチ６０５とは別の構成として、具現される。
【０１１７】
しかし、図５に図示したＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックと、図６に図示したＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックとの間には、具現上及び技術上の違いがある一方、機能的には、イレイジャーコーディングロジックは、すべて類似した結果を達成する。したがって、図５に図示したＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックと、図６に図示したＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックは、必要に応じて交替される。本明細書で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックに対するどのような参照も、Ｌｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むように意図する。
【０１１８】
図７〜図１０は、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を使用するための様々なトポロジを示している。しかし、使用中のトポロジにかかわらず、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の動作は、同一である。つまり、様々な接続されたストレージ装置に連結性を提供し、そのストレージ装置で、イレイジャーコーディングをサポートするためである。
【０１１９】
図７は、本発明の一実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を使用するための第１トポロジを示す図である。図７において、図１のマシン１０５の分離された構成として具現されるイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を図示する。つまり、イレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図１のプロセッサ１１０又はストレージ装置１３０のような任意の他の構成とは別途に製造・販売されることができる。
【０１２０】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置１３０に連結される。図７において、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングをサポートしない可能性のある、ただ単一のストレージ装置にだけ接続されたものとして図示する。つまり、イレイジャーコーディングは、ストライピング、チャンク（ｃｈｕｎｋｉｎｇ）、グループ化及びパリティ又はコード情報の使用を遂行するために、少なくとも２つのストレージ装置やストレージ装置の少なくとも二つの部分を要求する。しかし、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する単一のストレージ装置のＰＣＩｅスイッチ１２５によってもいくつかの利点を提供する。たとえば、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、サービスがストレージ装置１３０によって自然に提供されない場合、ストレージ装置１３０とともにエラー訂正コードを使用したり、ストレージ装置１３０に格納されたデータを暗号化することをサポートしたりする。
【０１２１】
ストレージ装置１３０は、またＦＰＧＡ７０５に連結され。ＦＰＧＡ７０５は、加速（ａｃｃｅｌｅｒａｔｉｏｎ）をサポートする。つまり、データが処理され、その次に廃棄される必要がある状況があり得る。処理を遂行するために、すべてのデータを図１のプロセッサ１１０にロードすることは、多くの時間と費用を所要する。データにより近い計算は、より簡単に行われる。ＦＰＧＡ７０５は、計算を遂行するために、図１のプロセッサ１１０にロードされるデータに対する必要性を回避しつつ、ストレージ装置にもっと近いこのような計算を遂行することをサポートする。つまり、この概念は、「加速（アクセラレーション）」と称される。ＦＰＧＡベースの加速度は、ここで参照として引用される２０１８年３月１３日に出願された米国仮出願第６２／６４２，５６８号、２０１８年３月９日に出願された米国仮出願第６２／６４１，２６７号、および２０１８年３月５日に出願された米国仮出願第６２／６３８，９０４号に対し優先権主張し、２０１８年９月５日に出願された米国出願第１６／１２２，８６５号に開示され、また、ここで参照として引用される２０１８年９月６日に出願の米国出願第１６／１２４，１７９号、２０１８年９月６日に出願された米国出願第１６／１２４，１８３号、および２０１８年９月５日に出願された米国仮出願第１６／１２２，８６５号に開示されている。加速度の目的は、データを図１のプロセッサ１１０に伝送せずに処理するため、図７は、ストレージ装置１３０に、より近いＦＰＧＡ７０５を図示する。しかし、図７に示す特定の列挙が要求されないことに留意しよう。つまり、ＦＰＧＡ７０５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５とストレージ装置１３０との間に位置する。
【０１２２】
データ加速（ｄａｔａ  ａｃｃｅｌｅｒａｔｉｏｎ）に加えて、ＦＰＧＡ７０５は、他の機能性を提供してストレージ装置１３０をサポートする。たとえば、ＦＰＧＡ７０５は、同じデータがストレージ装置１３０に格納される回数を減少させるストレージ装置１３０に対するデータ重複排除機能（ｄａｔａ  ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｆｕｎｃｔｉｏｎｓ）を具現する。ＦＰＧＡ７０５は、特定のデータがストレージ装置１３０に二つ以上格納されたかを判定し、多様な論理ブロックアドレス（またはデータを識別するためにホストによって使用される他の情報）間の関連性を構成し、データストレージ装置１３０に格納された場合、追加のコピーを削除する。
【０１２３】
あるいは、ＦＰＧＡ７０５は、ストレージ装置１３０の動作でエラーを通じたデータの損失を防止するデータ訂正コード（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）の挿入、またはエンドツーエンド保護（ｅｎｄ−ｔｏ−ｅｎｄ  ｐｒｏｔ４ｅｃｔｉｏｎ）のためのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｒｒｅｃｔｉｏｎ）を使用しているＴ１０ＤＩＦ（Ｄａｔａ  ｉｎｔｅｇｒｉｔｙ  Ｆｉｅｌｄ）のように、ストレージ装置１３０にデータ信頼性（インテグリティ）機能（ｄａｔａ  ｉｎｔｅｇｒｉｔｙ  ｆｕｎｃｔｉｏｎｓ）を具現する。この方式で、ＦＰＧＡ７０５は、オリジナルのデータを復元し、伝送中にデータやストレージ装置１３０上のデータを読み取るか書き込むうちにエラーがあることを検出することができる。ＦＰＧＡ７０５は、データインテグリティ機能が提供されていることをホストが認知することなく、データインテグリティ（信頼性）機能を具現する。ホストは、ただデータ自体のみ識別でき、エラー訂正コード（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅｓ）を識別することができない。
【０１２４】
あるいは、ＦＰＧＡ７０５は、ストレージ装置１３０上のデータにアクセスできる非認証ユーザーから保護するためのストレージ装置１３０上のデータの暗号化機能（ｄａｔａ  ｅｎｃｒｙｐｔｉｏｎ  ｆｕｎｃｔｉｏｎｓ）を具現できる。適切な暗号化キーが提供されることなしに、ＦＰＧＡ７０５から返されたデータは、要請者（ｒｅｑｕｅｓｔｏｒ）に無意味であり得る。ホストは、データを読み書きするときに使用する暗号化キーを提供する。また、ＦＰＧＡ７０５は、自動的にデータの暗号化及び復号化（ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  ｄｅｃｒｙｐｔｉｏｎ）を遂行する。ＦＰＧＡ７０５は、暗号キーを格納でき、（ホストに代わって、それらを生成できる）誰がデータを要請するかに基づいて使用される適切な暗号化キーを判定する。
【０１２５】
あるいは、ＦＰＧＡ７０５は、ストレージ装置１３０にデータを格納するために必要とされる総空間を減少させるストレージ装置１３０上のデータ圧縮機能（ｄａｔａ  ｃｏｍｐｒｅｓｓｉｏｎ  ｆｕｎｃｔｉｏｎｓ）を具現できる。ストレージ装置１３０にデータを書き込むときに、ＦＰＧＡ７０５は、ホストから提供されたデータをより小さなサイズのストレージに圧縮し、その後に圧縮されたデータ（ストレージ装置１３０からのデータを読み取るときに、オリジナルのデータを復元するのに必要な情報とともに）を格納する。ストレージ装置１３０からデータを読み取るとき、ＦＰＧＡ７０５は、圧縮されたデータ（圧縮されたデータからオリジナルのデータを復元するのに必要な情報とともに）を読み取り、圧縮を解除してオリジナルのデータを復元することができる。
【０１２６】
データ重複排除、データのインテグリティ（信頼性）、データの暗号化、およびデータ圧縮の適切な具現が使用されることができる。本発明の実施形態は、これらの機能の特定の具現に限定されない。
【０１２７】
ＦＰＧＡ７０５は、意図されたようなストレージ装置１３０上の機能の組合せを具現する。ＦＰＧＡ７０５は、データ圧縮とデータ信頼性（これは、データ圧縮が、データのエラー敏感度を増加させることができるため、ストレージ装置１３０に格納されたデータのシングル（ｓｉｎｇｌｅ）エラーは、使用できないデータのサイズを増加させることができる）の両方を具現することができる。ＦＰＧＡ７０５は、（可能なデータの小さなストレージを使用しながらデータを保護するために）データの暗号化及びデータ圧縮の両方を具現できる。二つ以上の機能の他の組合せは、ＦＰＧＡ７０５によって提供される。
【０１２８】
全体的な動作のコンテキストにおいて、これらの機能を具現する際に、ＦＰＧＡ７０５は、適切なソースからデータを読み取る。「ソース（ｓｏｕｒｃｅ）」の用語は単数形であるが、本発明の実施形態は、適切な場合に、（多数のストレージ装置のような）多数のソースからデータを読み取ることができる。ＦＰＧＡ７０５は、データ加速（ａｃｃｅｌｅｒａｔｉｏｎ、アクセラレーション）、データ集積、データ暗号化、及び／又はデータ圧縮のようなデータについての適切な動作を遂行する。ＦＰＧＡ７０５は、動作の結果を使用して適切な対応（ａｃｔｉｏｎ）を、例えば、図１のホスト１０５に結果を伝送すること、またはストレージ装置１３０にデータを記入することを行うことができる。
【０１２９】
機能性（ｆｕｎｃｔｉｏｎａｌｉｔｉｅｓ）を図７のＦＰＧＡ７０５を参照して説明したが、本発明の実施形態は、ＦＰＧＡを含むシステムのどの部分でも、これらの機能を含む。さらに、本発明の実施形態は、「遠距離（ｄｉｓｔａｎｔ）」のストレージ装置からデータにアクセスするＦＰＧＡ７０５を含むことができる。例えば、図３に戻って、ストレージ装置１３０−１がＦＰＧＡ７０５と類似したＦＰＧＡを含むが、ストレージ装置１３０−２は、これらのストレージ装置を含まないと仮定する。ストレージ装置１３０−１に含まれたＦＰＧＡは、ストレージ装置１３０−２に要請を伝送することにより、ストレージ装置１３０−２にそれらの機能性を適用するのに使用される。たとえば、ストレージ装置１３０−１のＦＰＧＡがデータ加速を提供する場合、ストレージ装置１３０−１のＦＰＧＡは、ストレージ装置１３０−２からデータを読み取るための要請を伝送し、適切な加速を遂行してから、その後に、（図１のマシン１０５のような）適切なデスティネーションに結果を伝送することができる。
【０１３０】
図７において（そして、図８〜図１０に図示したトポロジにおいて）、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングに適していない装置に付着される。たとえば、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、内蔵（ｂｕｉｌｔ−ｉｎ）のイレイジャーコーディング機能を有する他のストレージ装置やストレージ装置ではない図７のＦＰＧＡ７０５又はＧＰＵのような装置に付着される。これらのすべての装置は、イレイジャーコーディング（又は少なくともＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチ１２５によるイレイジャーコーディング）に対し資格のない装置として記述される。
【０１３１】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチ１２５が、イレイジャーコーディングに対し資格のない装置に接続されるとき、システムは、使用される様々な代替案を有する。本発明の一実施形態で、イレイジャーコーディングに対する資格のない任意の装置を包含することは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチ１２５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをディセーブルさせる。したがって、例えば、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、図７のＦＰＧＡ７０５、ＧＰＵ又はネイティブ（ｎａｔｉｖｅ）イレイジャーコーディングロジックを有するストレージ装置に連結されると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に接続されたストレージ装置のいずれか１つも、イレイジャーコーディングとともに使用されることができない。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをディセーブルさせる決定は、必然的に同じシャーシ又は他のシャーシ内のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む他のＰＣＩｅスイッチに変換されるわけではないことに留意しよう。例えば、図３は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む２つのＰＣＩｅスイッチ１２５、３２０を図示し、その中の一つは、イネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有し、他の１つはディセーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有する。
【０１３２】
本発明の他の実施形態は、イレイジャーコーディング資格のない装置をディセーブルさせ、これらをまるでＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５にまったく連結されていないかのように処理する。本発明の実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置１３０に対するＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをイネーブルさせ、イレイジャーコーディング資格のある任意の他のストレージ装置は、まるでＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結されていないかのように、ディセーブルされる。
【０１３３】
本発明の他の実施形態では、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによってカバーされるストレージ装置のためのＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをイネーブルさせうるが、イレイジャーコーディングへのアクセスの資格がない他の装置をイネーブルさせる。本発明のこれらの実施形態は、最も複雑な具現である。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ある装置がイレイジャーコーディングに適合しているか、ある装置が適合していないかを決定する必要があり、その次のトラフィックが仮想ストレージ装置に指定されるか（この場合、トラフィックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによってインターセプトされる）、指定されないか（この場合、トラフィックは、その既存のデスティネーションに伝達される）を決定するために、トラフィックを分析する必要がある。
【０１３４】
マシン１０５がインストールされた装置の完全な機能を提供しない本発明の実施形態で（つまり、イレイジャーコーディングに対し資格のない装置またはＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５によってディセーブルされる装置の存在に起因して、イレイジャーコーディングがディセーブルされる本発明の実施形態で）、マシン１０５は、ユーザーにこの事実を通知することができる。この通知は、図１のプロセッサ１１０、図３のＢＭＣ３２５またはＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５によって提供される。いくつかの機能がディセーブルされたことをユーザーに知らせることに加えて、通知は、またユーザーにマシン１０５をどのように再構成して追加された機能を許容するかをユーザーに知らせることができる。例えば、通知は、イレイジャーコーディングの資格のない装置が図３のミッドプレーン３０５の特定のスロットに連結されること−おそらくＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ３２０に連結されたスロット−そして、イレイジャーコーディングの資格のあるストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結されたスロットのような他のスロットに連結されることを提案できる。このような方式で、イレイジャーコーディングの資格のある少なくとも一部のストレージ装置は、イレイジャーコーディングの資格のない他の装置へのアクセスを遮断することなく、イレイジャーコーディング方式から利点を得られる。
【０１３５】
図８は、本発明の他の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を使用するための第２トポロジを示す図である。図８において、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ＦＰＧＡ７０５内に位置する。つまり、ＦＰＧＡ７０５は、また、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を具現する。ＦＰＧＡ７０５及びＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置１３０−１〜１３０−４に連結される。一方、図８は、４つのストレージ装置１３０−１〜１３０−４に連結されたＦＰＧＡ７０５及びＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を図示するが、本発明の実施形態は、任意の数のストレージ装置１３０−１〜１３０−６を含む。
【０１３６】
典型的には、図８に図示したトポロジは、図示したすべての構成を含む単一のシェル又はハウジング内に具現される（（ＳＳＤ１３０−１〜１３０−４）は、独立したＳＳＤではない別途のフラッシュメモリであり得る）。つまり、別途の構成として販売されるものではなく、図８に図示した全体の構造は、単一のユニットとして販売される。しかし、本発明の実施形態は、一方の端に、図１のマシン１０５（おそらく図３のミッドプレーン３０５に）に連結されるライザー（ｒｉｓｅｒ）・カードを含み、他の一方の端にはストレージ装置１３０−１〜１３０−６に連結するためにＵ．２、Ｍ．３又はＳＦＦ−ＴＡ−１００８コネクタのようなコネクタを含む。そして、図８は、ＦＰＧＡ７０５の一部としてＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を示しているが、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、またスマートＳＳＤの一部として具現される。
【０１３７】
図９は、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を使用するための第３トポロジを示す図である。図９に、最大２４個のストレージ装置１３０−１〜１３０−６を間で連結するＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む、２つのＰＣＩｅスイッチ１２５、３２０を図示する。図３を参照して、前述したように、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０のそれぞれは、ストレージ装置１３０−１〜１３０−６のいずれか一つと通信するために、各方向で使用される４つのＰＣＩｅレーンを有する９６個のＰＣＩｅレーンを備える。つまり、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０のそれぞれは、最大１２個のストレージ装置をサポートする。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む多数のＰＣＩｅスイッチ１２５、３２０によってサポートされるストレージ装置にわたってイレイジャーコーディングをサポートするために、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む、一つのＰＣＩｅスイッチは、すべての装置にわたってイレイジャーコーディングを担当するように指定され、イネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有し得る。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む他のＰＣＩｅスイッチ３２０は、ディセーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチとして完全に動作する。イレイジャーコーディングを処理するためにどのようなＰＣＩｅスイッチが選択さるべきであるかへの選択は、任意の所望の方法で遂行される。例えば、２つのＰＣＩｅスイッチは、それらの間で、これを交渉することができるか、又は一番目に列挙されたＰＣＩｅスイッチは、イレイジャーコーディングを処理するように指定される。イレイジャーコディングを処理するように選択されたＰＣＩｅスイッチは、（ＰＣＩｅスイッチの両方にまたがっている）仮想ストレージ装置を報告できる一方、イレイジャーコーディングを処理しないＰＣＩｅスイッチは（図１のプロセッサ１１０が、イレイジャーコーディング方式の一部であるストレージ装置にアクセスを試みるのを防止するために）、ダウンストリーム装置を報告しない可能性がある。
【０１３８】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０の両方が同じシャーシ内に有り得るが、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０が相異なるシャーシ内に有り得ることに留意しよう。つまり、イレイジャーコーディング方式は、多数のシャーシでストレージ装置を拡張（包括）できる。要求されるのは、多様なシャーシのＰＣＩｅスイッチがイレイジャーコーディング方式の一部となるストレージ装置がある場所に対し互いに交渉できなければならないというものである。また、本発明の実施形態は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む２つのＰＣＩｅスイッチ１２５、３２０に制限されない。つまり、イレイジャーコーディング方式に含まれたストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む任意の数のＰＣＩｅスイッチ１２５、３２０に連結される。
【０１３９】
ホストＬＢＡは、任意の所望の方法でＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０に分割される。たとえば、ホストＬＢＡの最下位ビットは、任意のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５又は３２０が、ホストＬＢＡを含むデータを格納するストレージ装置を含むかを識別するのに使用される。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む２つ以上のＰＣＩｅスイッチを使用すれば、多数のビットは、どのようなＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチが、データを格納するストレージ装置を管理するのかを決定するため使用される。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む適切なＰＣＩｅスイッチが識別されると（そして、図５のスヌーピングロジック５２５が伝送を修正した場合）、伝送は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む適切なＰＣＩｅスイッチにルーティングされる（伝送が、イネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有するＰＣＩｅスイッチに連結されたストレージ装置に向かわないことを仮定）。
【０１４０】
本発明の他の実施形態で、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む単一のＰＣＩｅスイッチがＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチの両方に連結されたすべてのストレージ装置を仮想化するための責任がある代わりに、Ｌｏｏｋ  −Ａｓｉｄｅがイレイジャーコーディングロジックを含む各ＰＣＩｅスイッチは、別途の仮想ストレージ装置（別途のイレイジャーコーディングドメインを含む）を生成できる。このような方式で、異なるイレイジャーコーディングドメインは、異なる顧客のために生成されるが、容量は、より少ない可能性がある。
【０１４１】
図９は、また本発明の他の実施形態を示せる。図９は、ストレージ装置１３０−１〜１３０−６だけがＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０に連結されることを意味するが、上で述べたように、本発明はこれに限定されず、すべてのストレージ装置１３０−１〜１３０−６が、イレイジャーコーディング方式とともに使用されることを意味する。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０は、それらに接続されたイレイジャーコーディングに対し資格のない装置を有し得る。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む異なるＰＣＩｅスイッチ１２５の下で、グループ化されるイレイジャーコーディングに対し資格のあるストレージ装置を含む、これらの装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む単一のＰＣＩｅスイッチの下でグループ化される。このような方式で、図１のマシン１０５の最適の機能は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む単一の（または一部）ＰＣＩｅスイッチが、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをイネーブルさせ、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む単一の（または一部）ＰＣＩｅスイッチが、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをディセーブルさせることによって達成される。
【０１４２】
図１０は、本発明の他の実施形態に基づいて、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５を使用するための第４トポロジを示す図である。図１０において、図９と比較すると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０、１００５は、階層的に構成される。階層の最上部にあるＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、階層内のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の下のすべてのストレージ装置についてのイレイジャーコーディングを管理することができるから、イネーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有し得る。一方、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ３２０、１００５は、（それらのストレージ装置は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックによって管理されるため）それらのディセーブルされたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを有し得る。
【０１４３】
図１０は、２段階の階層構造で構成されたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、３２０、１００５を示すのに対し、本発明の実施形態は、含まれたＰＣＩｅスイッチの数又はこれらの階層的構成に限定されない。したがって、本発明の実施形態は、任意の所望の階層に配列されたＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む任意の数のＰＣＩｅスイッチをサポートできる。
【０１４４】
図１〜図１０を参照して、前述しれた本発明の実施形態は、単一のポートのストレージ装置に集中する。しかし、本発明の実施形態は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含む多数のＰＣＩｅスイッチと通信する１つ（またはそれ以上の）ストレージ装置であるデュアルポートストレージ装置に拡張できる。本発明のこれらの実施形態で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、デュアルポートストレージ装置と通信できないのならば、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置との通信を試みるために、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ３２０に伝送を送信することができる。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ３２０は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５をストレージ装置と通信できるようにするブリッジのように効果的に動作する。
【０１４５】
本発明の実施形態は、またストレージ装置の故障を検出し、処理することをサポートする。例えば、再び図４を参照して、ストレージ装置１３０−１が故障したと仮定する。ストレージ装置１３０−１は、様々な理由から故障することができる。つまり、電力サージ（Ｐｏｗｅｒ  ｓｕｒｇｅ）は、電子機器を損傷させることができる。（ストレージ装置１３０−１の内部又はＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５とストレージ装置１３０−１との間の連結内の）配線は故障することもあり、ストレージ装置１３０−１は、あまりにも多くのエラーを検出してそれ自身を終了させることができ、ストレージ装置１３０−１は、他の理由から故障した可能性もある。ストレージ装置１３０−１は、ユーザーによって（おそらくより新しく、より信頼性の高い、またはより大きなストレージ装置と、それを交替するために）それのスロットから除去される可能性もある。理由は何であれ、ストレージ装置１３０−１は、利用不可能になれる。
【０１４６】
Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置１３０−１に対するコネクタ上のＰｒｅｓｅｎｃｅピンを介してストレージ装置１３０−１の故障を検出する。ストレージ装置１３０−１がシャーシから除去されたり、ストレージ装置１３０−１が終了すると、これは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５からのインターラプトをトリガーするコネクタ上のＰｒｅｓｅｎｃｅピンを介して、もうこれ以上自身の存在を主張（行使）できない。あるいは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（又は、図３のＢＭＣ３２５）は、ストレージ装置１３０−１に一時的メッセージを伝送して、それがまだアクティブ状態（時々「ハートビート（ｈｅａｒｔ  ｂｅａｔ）」と呼ばれる過程）であるかをチェックすることができる。つまり、ストレージ装置１３０−１が、そのようなメッセージに応答しないと、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５又は図３のＢＭＣ３２５は、ストレージ装置１３０−１が故障したと結論を下すことができる。
【０１４７】
ストレージ装置１３０−１が故障したら、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、他の手段を使用して、ストレージ装置１３０−１から正常に要請される任意のデータにアクセスすることにより、状況を管理する。たとえば、ストレージ装置１３０−１のミラーがある場合、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、ストレージ装置１３０−１のミラーからデータを要請する。または、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、望みのデータを含む残りのストライプをアレイの他のストレージ装置から要請することがあり、イレイジャーコーディング情報を使用して、ストレージ装置１３０−１からデータを復元する。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、故障したストレージ装置１３０−１に格納されたデータにアクセスする別のメカニズムを有し得る。
【０１４８】
本発明の実施形態は、また、アレイへの新しいストレージ装置の挿入を検出し、処理することをサポートする。ストレージ装置の故障を検出するように、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（又は、図３のＢＭＣ３２５）は、時々何が連結されたか、又は他の所望のメカニズムを確認するために、装置をピン（ｐｉｎｇ）をすることで、コネクタ上のＰｒｅｓｅｎｃｅピンを介して新しいストレージ装置の挿入を検出することができる（故障したストレージ装置を検出するように、Ｐｒｅｓｅｎｃｅピンを使用して、新しいストレージ装置を検出することは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５においてインターラプトをトリガーする）。新しいストレージ装置が検出されると、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、新しいストレージ装置をアレイに追加する。アレイに新しいストレージ装置を追加することは、イレイジャーコーディング方式を変更することを必ずしも包含しない。つまり、これらの変更は、ストレージ装置に貯蔵されたすべてのデータを変更しなければならないことを要求する可能性もある（例えば、ＲＡＩＤ５からＲＡＩＤ６への変更を考慮しよう。各ストライプは、現在のストレージ装置間で循環される必要のある２つのパリティブロックを必要とし、大量のデータの計算・移動が要求される）。しかし、新しいストレージ装置を既存のイレイジャーコーディング方式に追加することは、大量のデータを移動する必要がない可能性がある。したがって、新しいストレージ装置を追加しても、ストレージ装置の故障に対するアレイの許容値が増加しないが、新しいストレージ装置を追加することは、仮想ストレージ装置の容量をそれにもかかわらず増加させうる。
【０１４９】
アレイに故障したストレージ装置がある場合は、新しいストレージ装置の挿入は、故障したストレージ装置を再構成するために使用される。図５のイレイジャーコーディングコントローラ５３０は、故障したストレージ装置上に格納されたデータを計算し、そのデータを代替のストレージ装置の適切なブロックアドレスに貯蔵する。たとえば、故障したストレージ装置にあったオリジナルデータは、他のストレージ装置のデータ（オリジナルデータとパリティ又はコード情報のすべて）から計算される。故障したストレージ装置に格納されたパリティまたはコード情報は、他のストレージ装置のオリジナルデータから再び計算される（もちろん、故障したストレージ装置がミラーリングされた場合、図５のイレイジャーコーディングコントローラ５３０は、単にデータがミラーから代替のストレージ装置にコピーされるように指示することができる）。
【０１５０】
故障したストレージ装置を再構成するには時間がかかることがある。本発明の一部の実施形態で、代替のストレージ装置が設置されるとすぐ再構成が発生する。本発明の他の実施形態で、ストレージ装置がスラック（ｓｌａｃｋ）期間（余裕時間）内に再構成される限り、図５のイレイジャーコーディングコントローラ５３０は、そのように再構成する。しかし、仮想ストレージ装置がビジー状態であれば、図５のイレイジャーコーディングコントローラ５３０は、スラック時間が発生するまで代替のストレージ装置の再構成を延期し、図１のプロセッサ１１０からの要請に基づいて、必要に応じて故障したストレージ装置からデータを再構成する。（これらの再構成されたデータは、もちろん、完全な再構成を待たずに、代替のストレージ装置に記録されるため、後で再びそのデータを再計算する必要がない。）
【０１５１】
本発明の実施形態は、また、ストレージ装置の初期化をサポートする。新しいストレージ装置がアレイに追加されると−故障したストレージ装置のための代替のストレージ装置として、または仮想ストレージ装置の容量を増加させるため−新しいストレージ装置が初期化される。初期化は、イレイジャーコーディング方式のためのストレージ装置を準備する段階を含む。
【０１５２】
新しいストレージ装置の初期化は、新しいストレージ装置からの既存のデータを削除することを含むこともできる。たとえば、特定のストレージ装置が、顧客にリース（ｌｅａｓｅ）された状況を考慮してみよう。その顧客のリースが終了され、ストレージ装置は、新規の顧客に再利用されることができる。しかし、ストレージ装置は、まだ、顧客のオリジナルデータを有し得る。次の顧客が前の顧客のデータにアクセスできないようにするには、任意の所望のメカニズムを使用して、ストレージ装置のデータを削除することができる。たとえば、データが格納された場所に関する情報を格納するテーブルが消去されることができる。または、（後で消去された任意の情報を回復するための試みを防止するために）、データ自体を新しいデータで上書きする。新しいデータは、オリジナルデータが回復されないように保障するために設計されたパターンを使用する。例えば、米国国防総省（ＤＯＤ）は、回復を防止するために、データを削除する方法に対する標準を発表した。これらの標準は、ストレージ装置を新たなクライアントに合わせて再利用する前に、ストレージ装置から古くなったデータを削除するために使用される。
【０１５３】
新しいストレージ装置が、既存のアレイにホット追加（ｈｏｔ−ａｄｄｅｄ）される場合にのみ、初期化が制限されるのではない。初期化は、ストレージ装置、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５、又は図１のマシン１０５が、全体的に、最初に電源を投入するときに、また発生する。
【０１５４】
図１１Ａ〜図１１Ｄは、本発明の一実施形態に基づいて、図４のコーディング方式４０５、４１０、４１５をサポートするために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に対する例としての手順のフローチャートである。図１１Ａのブロック１１０３で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図１のプロセッサ１１０又は図３のＢＭＣ３２５によって初期化される。ブロック１１０６で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、伝送を受信する。このような伝送は、図１のプロセッサ１１０からの読み取り又は書き込みの要請、図１のプロセッサ１１０若しくは図３のＢＭＣ３２５からの制御の伝送、又は図１のプロセッサ１１０からの読み取り又は書き込みの要請に応答して図３のストレージ装置１３０−１〜１３０−６によって送信された伝送であり得る。
【０１５５】
ブロック１１０９で、図５のスヌーピングロジック５２５は、伝送が図１のプロセッサ１１０からの制御伝送であるのかを決定する。もしそうなら、ブロック１１１２で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図５のＰＰＵ５２０に制御伝送を伝達できる。その後に処理が終了する。
【０１５６】
伝送が図１のプロセッサ１１０からの制御伝送ではない場合は、ステップＳ１１１５（図１１Ｂ）で、図５のスヌーピングロジック５２５は、伝送がホストからの読み取り又は書き込みの要請であるかを決定できる。そうでない場合、ステップＳ１１１８で、図５のスヌーピングロジック５２５は、伝送における装置ＬＢＡをホストに適合したホストＬＢＡに代替できる。図５のスヌーピングロジック５２５は、また伝送が実際のデータを格納した物理ストレージ装置ではなく、仮想ストレージ装置から来たことを意味するように伝送を修正できる。ステップＳ１１２１で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図１のプロセッサ１１０に伝送を伝達できる。その後に処理が終了する。
【０１５７】
一方、伝送が図１のプロセッサ１１０からの読み取り又は書き込みの要請であれば、ステップＳ１１２４で、図５のスヌーピングロジック５２５は、問題のデータが、図５のキャッシュ５４５又は図５の書き込みバッファ５５０から利用可能であるかを決定できる。データが図５のキャッシュ５４５又は図５の書き込みバッファ５５０から利用可能な場合、ステップＳ１１２７（図１１Ｃ）で、図５のイレイジャーコーディングコントローラ５３０は、適切な位置でデータにアクセスすることができる。
【０１５８】
データが図５のキャッシュ５４５又は図５の書き込みバッファ５５０から利用できない場合には、ステップＳ１１３０で、図５のスヌーピングロジック５２５は、ホストによって提供されたホストＬＢＡを、ストレージ装置がデータを読み取らなければならない装置ＬＢＡに代替するために送信を修正できる。図５のスヌーピングロジック５２５は、また、送信を受信するための適切なストレージ装置を識別するために伝送を修正することもできる。次に、ステップＳ１１３３で、スヌーピングロジック５２５は、伝送を適切なストレージ装置に伝達できる。
【０１５９】
問題のデータがキャッシュからアクセス可能であるか、又はストレージ装置から読み出されるか否かにかかわらず、この時点で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、必要なデータを有する。この時点で、処理が分岐する。伝送が図１のプロセッサ１１０からの読み取りの要請であれば、ステップＳ１１３６で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図１のプロセッサ１１０にデータを返す。図５のスヌーピングロジック５２５は、また、ステップＳ１１３９に図示したように、図５のキャッシュ５４５にデータを格納することもできる。ステップＳ１１３９は、選択的であり、点線１１４２で図示したように省略される。この時点で、処理は終了する。
【０１６０】
一方、図１のプロセッサ１１０からの伝送が書き込み要請であれば、ステップＳ１１４５で、図５のイレイジャーコーディングコントローラ５３０は、図３のストレージ装置１３０−１〜１３０−６に渡ってストライプを読み出す。ステップＳ１１４５は、ステップＳ１１２７、１１３０、１１３３の再表現であり、必要としない可能性がある。したがって、ステップＳ１１４５は、仮想ストレージ装置にデータを記録することが、ストレージ装置１３０−１〜１３０−６を横切るストライプ全体からデータを読み取ることを包含できるのを強調するために、図１１Ｃに含まれる。ステップＳ１１４８で、図５のイレイジャーコーディングコントローラ５３０は、図１のプロセッサ１１０から受信されたデータとストレージ装置１３０−１〜１３０−６、又はキャッシュからアクセスされたデータストライプをマージすることができる。
【０１６１】
この時点で、手順は、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、図５の書き込みバッファ５５０を含むか否かに応じて分岐する。図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、図５の書き込みバッファ５５０を含むと、ステップＳ１１５１（図１１Ｄ）で、図５のイレイジャーコーディングコントローラ５３０は、マージされたデータストライプを図５の書き込みバッファ５５０に記録することができる（データを「ダーティ」とストレージ装置１３０−１〜１３０−６のフラッシングされる必要があるとマークする）。その次のステップＳ１１５４で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、書き込み要請が完了されたことを１のプロセッサ１１０に報告する。図５の書き込みバッファ５５０がｗｒｉｔｅ−ｂａｃｋキャッシュポリシーを使用すると、ステップＳ１１５４が適切であることに留意しよう。図５の書き込みバッファ５５０がｗｒｉｔｅ−ｔｈｒｏｕｇｈキャッシュポリシーを使用すれば、点線１１５７で図示したように、ステップＳ１１５４は、省略される。
【０１６２】
結局、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、図５の書き込みバッファ５５０を含んでいないため、又は図５の書き込みバッファ５５０のデータが、図３のストレージ装置１３０−１〜１３０−６にフラッシュされるため、ステップＳ１１６０で、図５のイレイジャーコーディングコントローラ５３０は、図３のストレージ装置１３０−１〜１３０−６に更新されたストライプを再び記録することができる。次に、ステップＳ１１６３で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、書き込み要請が完了されたことを１のプロセッサ１１０に報告することができる。マージされたデータが、図５の書き込みバッファ５５０に格納され、図５の書き込みバッファ５５０が、ｗｒｉｔｅ−ｂａｃｋキャッシュポリシーを使用すれば、ステップＳ１１６３は、必要ないことに留意しよう。つまり、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、書き込み要請を既に完了したと報告した（ステップＳ１１５４で）。このような状況では、ステップＳ１１６３は、点線１１６６で図示したように省略される。この時点で、処理は終了する。
【０１６３】
図１２Ａ、図１２Ｂは、本発明の実施形態に基づいて初期化を遂行するために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の例としての手順を示すフローチャートである。。図１２ＡのステップＳ１２０５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結された装置がただストレージ装置のみであり、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５によって管理されるイレイジャーコーディングを有するか否かを判定できる。ストレージ装置ではない図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結された装置があったり、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５によって管理されるがイレイジャーコーディングを含まないストレージ装置があったりすれば、本発明の一部の実施形態で、ステップＳ１２１０で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをディセーブルさせることができる。その後に手順が終了する。
【０１６４】
しかし、本発明の他の実施形態では、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングに対し資格のない、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結された装置があっても、イレイジャーコーディングを管理できる。本発明のこれらの実施形態で、又はこのイレイジャーコーディングに対し資格のあるストレージ装置のみが図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に連結されていれば、ステップＳ１２１５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックをイネーブルさせる。次に、ステップＳ１２２０（図１２Ｂ）で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディング方式を使用するように構成される（おそらく、図３のＢＭＣ３２５又は図１のプロセッサ１１０によって）
【０１６５】
ステップＳ１２２５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングに適していない装置をディセーブルさせる。ステップＳ１２２５は、点線１２３０で図示したように、選択的である。イレイジャーコーディングに対し資格のない、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が存在しなかったり、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５が、他の装置のために、イレイジャーコーディングを使用したりするにもかかわらず、イレイジャーコーディングに対し資格のない装置にアクセスするために、図１のプロセッサ１１０を承認する。
【０１６６】
ステップＳ１２３５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングの対象となる任意の装置に対する、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５のダウンストリーム列挙を終了する。ステップＳ１２４０で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、イレイジャーコーディングの対象となる図３のストレージ装置１３０−１〜１３０−６に基づいて、仮想ストレージ装置を、図１のプロセッサ１１０に報告することができる。図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５は、また、列挙される任意の他のＰＣＩｅ装置を、図１のプロセッサ１１０に報告することができる。この時点で、処理が終了する。
【０１６７】
図１３は、本発明の一実施形態に基づいて、図４のイレイジャーコーディング方式４０５、４１０、４１５に新しいストレージ装置を含めるために、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５の例としての手順のフローチャートである。図１３のステップＳ１３０５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（または、図３のＢＭＣ３２５）は、新しいストレージ装置をチェックする。新しいストレージ装置が検出されると、その次のステップＳ１３１０で、図５のイレイジャーコーディングコントローラ５３０は、仮想ストレージ装置の後ろのアレイに新しいストレージ装置を追加する。最後に、ステップＳ１３１５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（図３のＢＭＣ３２５または、図１のプロセッサ１１０）は、新しいストレージ装置を初期化することができる。この時点で、手順は終了したり、点線１３２０で図示したように追加の新しいストレージ装置をチェックしたりするために、ステップＳ１３０５に戻る。
【０１６８】
図１４は、本発明の一実施形態に基づいて、故障したストレージ装置を処理するための、図１のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５に対する例としての手順のフローチャートである。図１４のステップＳ１４０５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（または、図３のＢＭＣ  ３２５）は、故障した（または、除去された）ストレージ装置をチェックすることができる。故障したストレージ装置が検出されると、ステップＳ１４１０で、図５のイレイジャーコーディングコントローラ５３０は、故障したデータにアクセスする読み取り要請が到着するとき、故障したストレージ装置に格納されたデータのイレイジャーコーディング復元を遂行する。これらのイレイジャーコーディングの復元は、他のストレージ装置から要求されたデータを含むストライプからデータを読み出すことと、ストライプ内の残りのデータから要求されたデータを計算することを含むことができる。
【０１６９】
ステップＳ１４１５で、図３のＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチ１２５（または、図３のＢＭＣ３２５）は、代替のストレージ装置が仮想ストレージ装置の後ろのアレイに追加されたかを決定する。もしそうなら、ステップＳ１４２０で、図５のイレイジャーコーディングコントローラ５３０は、代替のストレージ装置を使用して故障したストレージ装置を再構成する。この時点で、手順は終了したり、点線１４２５で図示したように、追加の新しいストレージ装置をチェックしたりするために、ステップＳ１４０５に戻る。
【０１７０】
図１１Ａ〜図１４に、本発明のいくつかの実施形態を図示した。しかし、当業者だったら、ステップの順序を変更したり、ステップを省略したり、図面に図示されていない連結を含んだりすることにより、本発明の他の実施形態も可能であることを認識できる。フローチャートに対しこのようなすべての変形は、明示的に記述されたか否かにかかわらず、本発明の実施形態とみなされる。
【０１７１】
本発明の実施形態は、従来技術に比べて技術的な利点を提供する。Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジックを含むＰＣＩｅスイッチを使用するのは、イレイジャーコーディングをストレージ装置の近くに移動させるため、データの移動に必要な時間が短縮される。プロセッサで、イレイジャーコーディングを削除すると、プロセッサの負荷が減少し、プロセッサは、アプリケーションに対するより多くのコマンドを実行できる。構成可能なイレイジャーコーディングコントローラを使用すれば、ハードウェア及びソフトウェアのイレイジャーコーディングのベンダーによってサポートされる、限られた方法のセットの代わりに、任意の所望のイレイジャーコーディング方式が使用される。イレイジャーコーディングコントローラをＰＣＩｅスイッチとともに配置することにより、高価なＲＡＩＤ  ａｄｄ−ｉｎ  ｃａｒｄに対する必要性が回避され、多数のシャーシに至るまで、より大きなアレイが使用される。
【０１７２】
以下の説明は、本発明の技術的思想のいくつかの側面が具現される適切なマシンやマシンの簡潔で一般的な説明を提供するように意図する。マシン又は複数のマシンは、少なくとも一部は、他のマシンから受信される指示、仮想現実（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号だけでなく、キーボード、マウスなどのような通常の入力装置からの入力により制御される。ここで使用するように、「マシン」の用語は、単一のマシン、仮想マシン、複数のマシン、複数の仮想マシン又は共に動作する装置と通信するように結合されたシステムを広く含むものと意図する。例としてのマシンは、例えば、自動車、電車、タクシーなどのパーソナル又は公共輸送などの輸送装置だけでなく、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、携帯電話、タブレットなどのようなコンピューティング装置を備える。
【０１７３】
マシン又は複数のマシンは、プログラム可能な、又はプログラム不可能論理装置又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッドコンピュータ、スマートカードなどのようなエンベデッドコントローラを含む。マシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信結合を通してのように一つ以上のより多くのリモートマシンへの一つ以上のより多くの連結を活用できる。複数のマシンは、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）などの物理的及び／又は論理ネットワークの手段として、互いに連結される。この分野に熟練した者は、ネットワーク通信が、様々な有線及び／又はワイヤレス近距離又は遠距離キャリア及びラジオ周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ  ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含むプロトコルの活用を理解するであろう。
【０１７４】
本発明の技術的思想の実施形態は、マシンによってアクセスされる際にマシンが作業を遂行するか、又は抽象的データのタイプ又は低レベルのハードウェアコンテキストを定義することを誘発する関数、手順、データ構造、アプリケーションなどを含む、関連付けられたデータを参照・協力して説明される。関連付けられたデータは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリ、他のストレージ装置、ハードディスクドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージなどを含む、関連付けられたストレージ媒体に格納される。関連付けられたデータは、物理的及び／又は論理的ネットワークを含む伝送環境を経てパケット、シリアルデータ、パラレルデータ、伝送信号などの形で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連付けられたデータは、分散環境で使用され、マシンアクセスに対してローカル及び／又はリモートで格納される。
【０１７５】
本発明の技術的思想の実施形態は、一つ以上のより多くのプロセッサによって実行可能であり、ここで説明したように、本発明の技術的思想のエレメントを遂行させるコマンドを含む実在する非一時的マシン読み出し媒体を含む。
【０１７６】
前述した方法の多様な動作は、多様なハードウェア及び／又はソフトウェア構成、回路、及び／又はモジュールのような動作を遂行する任意の適切な手段によって行われる。ソフトウェアは、論理的な機能を具現するための実行可能コマンドの順序付きリストを含み、単一又はマルチコアプロセッサやシステムを含むプロセッサのようなコマンド実行システム、機構又は装置を使用して、又はこれらと関連して、任意の「プロセッサ可読媒体」で具現される。
【０１７７】
ここで開示した実施形態と関連して方法又はアルゴリズムのステップ又は段階、及び機能は、ハードウェア及びプロセッサ上で実行されるソフトウェアモジュール、又はこれらの組合せで直接具現される。ソフトウェアで具現されると、機能は非一時的コンピュータ可読媒体上に１つ以上のコマンドまたはコードとして格納又は伝送される。ソフトウェアモジュールは、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ  ＲＯＭ、又はこの分野で公知された任意の他の形態のストレージ媒体であり得る。
【０１７８】
図示した実施形態を参照して本発明の技術的思想の原則を説明し例示したが、図示した実施形態は、これらの原則から離れずに、配置と詳細において修正され得、必要な任意の方法で組合せられることが理解されるだろう。前述の説明が具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、「本発明の技術的思想の実施形態による」のような説明や、ここで使用された類似したものにもかかわらず、これらのフレーズは、一般的に実施形態の可能性を参照しており、本発明の技術的思想を具体的な実施形態の構成に限定することを意図していない。これらの用語は、他の実施形態への組合せ可能な同一又は異なる実施形態を参照することができる。
【０１７９】
前述した実施形態は、本発明の技術的思想を、それらに限定するものではない。少ない実施形態だけを説明したが、この分野における熟練した者は、本記載の新規な説明と利点から実質的に離れずに、これらの実施形態に多くの修正が可能であることを十分に理解するだろう。したがって、これらのすべての修正は、特許請求の範囲において定義されるように、本発明の技術的思想の範囲内に含まれるものと意図される。
【０１８０】
本発明の実施形態は、制限なしに次の説明に拡張される。
【０１８１】
説明１．
本発明の概念の実施形態は、イレイジャーコーディングロジックを含むＰＣＩｅスイッチを含む。
ＰＣＩｅスイッチは、
前記ＰＣＩｅスイッチがプロセッサと通信できるようにする外部コネクタと、
前記ＰＣＩｅスイッチが、少なくとも一つのストレージ装置と通信できるようにする少なくとも一つのコネクタと、
ＰＣＩｅスイッチの構成を処理するＰＰＵと、
前記少なくとも一つのストレー装置に格納されたデータには、イレイジャーコーディング方式を適用する回路を含む、イレイジャーコーディングコントローラと、
前記ＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、前記イレイジャーコーディング方式に応答して前記データ送信を修正する回路を含むスヌーピングロジックと、を含む。
【０１８２】
説明２．
説明１によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記イレイジャーコーディングロジックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含むセットから獲得される。
【０１８３】
説明３．
説明１によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記少なくとも一つのストレージ装置は、少なくとも一つのＮＶＭｅ  ＳＳＤを含む。
【０１８４】
説明４．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、スヌーピングロジックは、ＰＣＩｅスイッチで受信された制御送信をインターセプトし、前記制御伝送をＰＰＵにフォワードするように動作する。
【０１８５】
説明５．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、スヌーピングロジックは、ホストからＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、データ伝送において、ホストによって使用されるホストＬＢＡを前記少なくとも一つのＮＶＭｅ  ＳＳＤによって使用される装置ＬＢＡに代替するように動作する。
【０１８６】
説明６．
説明５によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、スヌーピングロジックは、データ伝送を少なくとも一つのＮＶＭｅ  ＳＳＤに指示するように動作する。
【０１８７】
説明７．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、スヌーピングロジックは、少なくとも一つのＮＶＭｅ  ＳＳＤの中の一つからＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、データの伝送において、少なくとも一つのＮＶＭｅ  ＳＳＤの中の一つによって使用される装置ＬＢＡをホストによって使用されるホストＬＢＡに代替する。
【０１８８】
説明８．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、キャッシュをさらに含む。
【０１８９】
説明９．
説明８によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、スヌーピングロジックは、キャッシュに存在するデータの伝送で要請されるデータに少なくとも部分的に基づいて、ホストから要請されたデータ伝送に対する応答を返送するように動作する。
【０１９０】
説明１０．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
シャーシに位置するＰＣＩｅスイッチと、
イレイジャーコーディングコントローラによって外部キャッシュとして使用されるメモリを含むシャーシと、を含む。
【０１９１】
説明１１．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、書き込みバッファをさらに含む。
【０１９２】
説明１２．
説明１１によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
ホストからの書き込み動作を含む前記データ伝送と、
データ伝送に対する応答をホストに伝送した後、書き込み動作を完了するように動作する、イレイジャーコーディングコントローラと、を含む。
【０１９３】
説明１３．
説明１１によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
前記イレイジャーコーディングコントローラは、書き込み動作でのデータを書き込みバッファに格納するように動作する。
【０１９４】
説明１４．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、イレイジャーコーディングコントローラとともに使用される少なくとも一つのＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、これらのイレイジャーコーディングコントローラ及びスヌーピングロジックをイネーブルさせるように動作する。
【０１９５】
説明１５．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、内蔵（ｂｕｉｌｔ−ｉｎ）のイレイジャーコーディング機能が含まれた少なくとも一つのＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
【０１９６】
説明１６．
説明１５によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、内蔵（ｂｕｉｌｔ−ｉｎ）のイレイジャーコーディング機能が含まれた少なくとも一つのＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、ユーザーにイレイジャーコーディングコントローラ及びスヌーピングロジックがディセーブルされたことを通知するように動作する。
【０１９７】
説明１７．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記ＰＣＩｅスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ及びスヌーピングロジックをディセーブルさせるように動作する。
【０１９８】
説明１８．
説明１７によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記ＰＣＩｅスイッチに連結される非ストレージ装置に部分的に基づいて、ユーザーに、イレイジャーコーディングコントローラ、及びヌーピングロジックがディセーブルされたことを知らせるように動作する。
【０１９９】
説明１９．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記少なくとも一つのコネクタを使用して、前記ＰＣＩｅスイッチに連結される非ストレージ装置に部分的に基づいて、イレイジャーコーディングコントローラ、及びスヌーピングロジックをイネーブルさせるように動作する。
【０２００】
説明２０．
説明１９によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、ＰＣＩｅスイッチに接続された非ストレージ装置へのアクセスが遮断されたことは、ユーザーに通知するように動作する。
【０２０１】
説明２１．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、第２のＰＣＩｅスイッチに連結された少なくとも１つの追加のＮＶＭｅ  ＳＳＤ上でのイレイジャーコーディング方式を管理するために、イレイジャーコーディングコントローラ及びスヌーピングロジックを使用するように動作する。
【０２０２】
説明２２．
説明２１によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、第２のＰＣＩｅスイッチは、第２のＰＣＩｅスイッチで第２イレイジャーコーディングコントローラ、及び第３スヌーピングロジックをディセーブルさせるように動作する。
【０２０３】
説明２３．
説明２２によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
第１シャーシ内に位置するＰＣＩｅスイッチと、
第２シャーシ内に位置する第２のＰＣＩｅスイッチと、を備える。
【０２０４】
説明２４．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、ＦＰＧＡを使用して具現される。
【０２０５】
説明２５．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
少なくとも二つのＮＶＭｅ  ＳＳＤを含む前記少なくとも一つのＮＶＭｅ  ＳＳＤと、
共通のハウジング内部にある前記ＰＣＩｅスイッチと、前記少なくとも２つのＮＶＭｅ  ＳＳＤと、を含む。
【０２０６】
説明２６．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、前記ＰＣＩｅスイッチ及び前記少なくとも２つのＮＶＭｅ  ＳＳＤは、別途のハウジング内にある。
【０２０７】
説明２７．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
前記少なくとも一つのＮＶＭｅ  ＳＳＤの故障したＮＶＭｅ  ＳＳＤを検出するように動作する前記ＰＣＩｅスイッチと、
故障したＮＶＭｅ  ＳＳＤを説明するために、データ伝送を処理するように動作する、イレイジャーコーディングコントローラと、を含む。
【０２０８】
説明２８．
説明２７によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、故障したＮＶＭｅ  ＳＳＤ上に格納されたデータのイレイジャーコーディングの復元を遂行するように動作する。
【０２０９】
説明２９．
説明２８によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、故障したＮＶＭｅ  ＳＳＤのための代替のＮＶＭｅ  ＳＳＤを再構成するように動作する。
【０２１０】
説明３０．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、
新しいＮＶＭｅ  ＳＳＤを検出するように動作する前記ＰＣＩｅスイッチと、
イレイジャーコーディング方式の一部として、新しいＮＶＭｅ  ＳＳＤを使用するように動作するイレイジャーコーディングコントローラを含む。
【０２１１】
説明３１．
説明３０によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、新しいＮＶＭｅ  ＳＳＤを使用して容量の追加を遂行するように動作する。
【０２１２】
説明３２．
説明３０によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、少なくとも一つのコネクタの中の１つに連結された新しいＮＶＭｅ  ＳＳＤを検出するように動作する。
【０２１３】
説明３３．
説明３０によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、第２のＰＣＩｅスイッチからのメッセージを介して新たなＮＶＭｅ  ＳＳＤを検出するように動作する。
【０２１４】
説明３４．
説明３３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、新しいＮＶＭｅ  ＳＳＤは、第２のＰＣＩｅスイッチ上の第２コネクタに連結される。
【０２１５】
説明３５．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、少なくとも一つのコネクタは、故障したＮＶＭｅ  ＳＳＤと新しいＮＶＭｅ  ＳＳＤの両方を検出するためのｐｒｅｓｅｎｃｅピンを含む。
【０２１６】
説明３６．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、ホストに、単一の装置としてそれ自身を示し、少なくとも一つのダウンストリームＰＣＩｅバスの列挙を防止するように動作する。
【０２１７】
説明３７．
説明３６によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、ＰＣＩｅスイッチから第２のＰＣＩｅスイッチのダウンストリームＰＣＩｅバスの列挙を防止するように動作する。
【０２１８】
説明３８．
説明３６によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、少なくとも一つのＮＶＭｅ  ＳＳＤを仮想化するように動作する。
【０２１９】
説明３９．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのコネクタの中の１つに連結された新しいＮＶＭｅ  ＳＳＤを初期化するように動作する。
【０２２０】
説明４０．
説明３９によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、ホット・インサーション・イベント後に新しいＮＶＭｅ  ＳＳＤを初期化するように動作する。
【０２２１】
説明４１．
説明３９によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、起動時に、少なくとも一つのＮＶＭｅ  ＳＳＤを初期化するように動作する。
【０２２２】
説明４２．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＰＣＩｅスイッチは、少なくとも一つのコネクタの中の１つに連結された新しいＮＶＭｅ  ＳＳＤを初期化するように動作するＢＭＣを含むシステムの一部である。
【０２２３】
説明４３．
説明４２によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、ＢＭＣは、起動時に少なくとも一つのＮＶＭｅ  ＳＳＤを初期化するように動作する。
【０２２４】
説明４４．
説明３によるイレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて、イレイジャーコーディングコントローラは、少なくとも一つのＮＶＭｅ  ＳＳＤにかけてデータをストライピングするストライプのマネージャーを含む。
【０２２５】
説明４５．
本発明の概念の実施形態は、方法を含む。前記方法は、
イレイジャーコーディングロジックを利用して、ＰＣＩｅスイッチから伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階と、を備える。
【０２２６】
説明４６．
説明４５による方法において、イレイジャーコーディングロジックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの中の１つを含む。
【０２２７】
説明４７．
説明４５による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記伝送が前記スヌーピングロジックによる制御伝送を含むことを決定する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションへ伝達する段階は、前記伝送をＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に伝達する段階を含む。
【０２２８】
説明４８．
説明４５による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
【０２２９】
説明４９．
説明４５による方法において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチから伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をＮＶＭｅ  ＳＳＤに伝達する段階を含む。
【０２３０】
説明５０．
説明４９による方法において、前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されなければならないＮＶＭｅ  ＳＳＤを識別する段階をさらに含む。
【０２３１】
説明５１．
説明４９による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ＮＶＭｅ  ＳＳＤに読み取り要請を伝達する段階を含む。
【０２３２】
説明５２．
説明４５による方法において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて伝送を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をＮＶＭｅ  ＳＳＤに伝達する段階を含む。
【０２３３】
説明５３．
説明５２による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、書き込み要請が伝達されるべくＮＶＭｅ  ＳＳＤを識別するための段階をさらに含む。
【０２３４】
説明５４．
説明５２による方法において、
少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのＮＶＭｅ  ＳＳＤに記録する段階をさらに含む。
【０２３５】
説明５５．
説明５４による方法において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのＮＶＭｅ  ＳＳＤに記録するための追加のデータを計算する段階を含む。
【０２３６】
説明５６．
説明５４による方法において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み取る段階と、を備える。
【０２３７】
説明５７．
説明５４による方法において、
ブロックの前記更新されたストライプを前記少なくとも一つのＮＶＭｅ  ＳＳＤに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
【０２３８】
説明５８．
説明５７による方法において、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのＮＶＭｅ  ＳＳＤに記録される前に記録が完了したことをホストに応答する段階をさらに含む。
【０２３９】
説明５９．
説明４５による方法において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて伝送を受信する段階は、ホストから応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のＬＢＡをホストのＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
【０２４０】
説明６０．
説明５９による方法において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ＮＶＭｅ  ＳＳＤの識別子を仮想ストレージ装置の識別子で代替する段階をさらに含む。
【０２４１】
説明６１．
説明４５による方法において、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記送信をＮＶＭｅ  ＳＳＤが連結された第２のＰＣＩｅスイッチに伝達する段階を含み、
前記ＮＶＭｅ  ＳＳＤは、前記デスティネーションである。
【０２４２】
説明６２．
説明６１による方法において、
ＰＣＩｅスイッチは、第１シャーシにあり、第２ＰＣＩｅスイッチは、第２のシャーシにある。
【０２４３】
説明６３．
説明４５による方法において、
イレイジャーコーディングで共に使用するためにＰＣＩｅスイッチに連結された少なくとも一つのＮＶＭｅ  ＳＳＤを初期化する段階をさらに含む。
【０２４４】
説明６４．
説明４５による方法において、
新しいＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されたかを検出する段階と、
新しいＮＶＭｅ  ＳＳＤを仮想ストレージ装置の容量に追加する段階と、をさらに備える。
【０２４５】
説明６５．
説明６４による方法において、
イレイジャーコーディングで、共に使用するために新しいＮＶＭｅ  ＳＳＤを初期化する段階をさらに含む。
【０２４６】
説明６６．
説明４５による方法において、
前記ＰＣＩｅスイッチに連結された故障したＮＶＭｅ  ＳＳＤを検出する段階と、
故障したＮＶＭｅ  ＳＳＤ上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、をさらに備える。
【０２４７】
説明６７．
説明６６による方法において、
前記故障したＮＶＭｅ  ＳＳＤの代替のＮＶＭｅ  ＳＳＤを検出する段階と、
前記代替のＮＶＭｅ  ＳＳＤを使用して故障したＮＶＭｅ  ＳＳＤを再構成する段階と、をさらに備える。
【０２４８】
説明６８．
説明４５による方法において、
ＰＣＩｅスイッチに連結された、イレイジャーコーディング機能がないＮＶＭｅ  ＳＳＤだけを検出する段階と、
前記ＰＣＩｅスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、をさらに含む。
【０２４９】
説明６９．
説明６８による方法において、
ＰＣＩｅスイッチのダウンストリームＰＣＩｅバスの列挙を終了させる段階と、をさらに含む。
【０２５０】
説明７０．
説明６８による方法において、
ＰＣＩｅスイッチに連結されたＮＶＭｅ  ＳＳＤ及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
【０２５１】
説明７１．
説明４５による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されていることを検出する段階と、
前記ＰＣＩｅスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、をさらに含む。
【０２５２】
説明７２．
説明４５による方法において、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されていることを検出する段階と、
前記ＰＣＩｅスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤをディセーブルさせる段階と、をさらに備える。
【０２５３】
説明７３．
説明７２による方法において、
ＰＣＩｅスイッチからのＰＣＩｅバス列挙のダウンストリームを終了する段階と、をさらに含む。
【０２５４】
説明７４．
説明７２による方法において、
ＰＣＩｅスイッチに連結されたＮＶＭｅ  ＳＳＤ及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階と、をさらに含む。
【０２５５】
説明７５．
説明４５による方法において、
イレイジャーコーディング方式を使用している、イレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階をさらに含む。
【０２５６】
説明７６．
説明７５による方法において、
イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階は、ＢＭＣを使用して、イレイジャーコーディング方式を使用しているイレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階を含む。
【０２５７】
説明７７．
本発明の概念の実施形態は、非一時的なストレージ媒体を含む物品を含み、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合、
イレイジャーコーディングロジックを利用して、ＰＣＩｅスイッチにおいて伝送を受信する段階と、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階と、
前記伝送を前記ＰＣＩｅスイッチを介して前記デスティネーションに伝送する段階と、が処理される。
【０２５８】
説明７８．
説明７７による物品において、
本発明の概念の実施形態は、説明７７による物品を含み、前記イレイジャーコーディングロジックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの中の１つを含む。
【０２５９】
説明７９．
説明７７による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、前記送信が前記スヌーピングロジックによる制御の伝送を含むことを決定する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に伝達する段階を含む。
【０２６０】
説明８０．
説明７７による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、活性化されたイレイジャーコーディングロジックに少なくとも部分的に基づいて、スヌーピングロジックを使用して伝送を処理する段階を含む。
【０２６１】
説明８１．
説明７７による物品において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて送信を受信する段階は、ホストから読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストのＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をＮＶＭｅ  ＳＳＤに伝達する段階を含む。
【０２６２】
説明８２．
説明８１による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくＮＶＭｅ  ＳＳＤを識別するための段階をさらに含む。
【０２６３】
説明８３．
説明８１による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、キャッシュに存在するデータに少なくとも部分的に基づいて、キャッシュからの読み取り要請内のホストによって要請されたデータにアクセスする段階を含み、
ホストのＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ホストのＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、キャッシュに存在しないデータに少なくとも部分的に基づいて、ＮＶＭｅ  ＳＳＤに読み取り要請を伝達する段階を含む。
【０２６４】
説明８４．
説明７７による物品において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて伝送を受信する段階は、ホストからの読み取り要請を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ホストＬＢＡを読み取り要請内の装置のＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、読み取り要請をＮＶＭｅ  ＳＳＤに伝達する段階を含む。
【０２６５】
説明８５．
説明８４による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請が伝達されるべくＮＶＭｅ  ＳＳＤを識別するための段階をさらに含む。
【０２６６】
説明８６．
説明８４による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み出す段階と、
ブロックの更新されたストライプを形成するために、前記ブロックのストライプと前記書き込み要請内のデータをマージする段階と、
ブロックの前記更新されたストライプを前記少なくとも一つのＮＶＭｅ  ＳＳＤに記録する段階と、が処理される。
【０２６７】
説明８７．
説明８６による物品において、
前記書き込み要請内のデータをマージする段階は、書き込み要請のデータに追加して、少なくとも一つのＮＶＭｅ  ＳＳＤに記録するための追加のデータを計算する段階と、を含む。
【０２６８】
説明８８．
説明８６による物品において、
キャッシュ内に存在するブロックのストライプに、少なくとも部分的に基づいて、キャッシュからブロックのストライプを読み出す段階と、
少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み取る段階は、キャッシュ内に存在していないブロックのストライプに、少なくとも部分的に基づいて、少なくとも一つのＮＶＭｅ  ＳＳＤからブロックのストライプを読み取る段階と、を含む。
【０２６９】
説明８９．
説明８６による物品において、
ブロックの前記更新されたストライプを前記少なくとも一つのＮＶＭｅ  ＳＳＤに記録する段階は、ブロックの前記更新されたストライプを書き込みバッファに記録する段階を含む。
【０２７０】
説明９０．
説明８９による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ブロックの更新されたストライプが書き込みバッファに書き込まれた後、ブロックの更新されたストライプが少なくとも一つのＮＶＭｅ  ＳＳＤに記録される前に記録が完了されたことをホストに応答する段階が処理される。
【０２７１】
説明９１．
説明７７による物品において、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチにおいて伝送を受信する段階は、ホストからの応答を受信する段階を含み、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、読み取り要請内の装置のＬＢＡをホストのＬＢＡに代替する段階を含み、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記応答をホストに伝達する段階を含む。
【０２７２】
説明９２．
説明９１による物品において、
前記イレイジャーコーディングロジックでスヌーピングロジックを使用して前記伝送を処理する段階は、ＮＶＭｅ  ＳＳＤの識別子を仮想ストレージ装置の識別子に代替する段階をさらに含む。
【０２７３】
説明９３．
説明７７による物品において、
前記ＰＣＩｅスイッチを介して前記伝送を、それのデスティネーションに伝達する段階は、前記伝送をＮＶＭｅ  ＳＳＤが連結された第２のＰＣＩｅスイッチに伝達する段階を含み、
前記ＮＶＭｅ  ＳＳＤは、前記デスティネーションである。
【０２７４】
説明９４．
説明９３による物品において、
ＰＣＩｅスイッチは、第１シャーシにあり、第２のＰＣＩｅスイッチは、第２シャーシにある。
【０２７５】
説明９５．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するためにＰＣＩｅスイッチに連結された少なくとも一つのＮＶＭｅ  ＳＳＤを初期化する段階が処理される。
【０２７６】
説明９６．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
新しいＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されたかを検出する段階と、
新しいＮＶＭｅ  ＳＳＤを仮想ストレージ装置の容量に追加する段階と、が処理される。
【０２７７】
説明９７．
説明９６による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディングとともに使用するための新しいＮＶＭｅ  ＳＳＤを初期化する段階が処理される。
【０２７８】
説明９８．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記ＰＣＩｅスイッチに連結された故障したＮＶＭｅ  ＳＳＤを検出する段階と、
故障したＮＶＭｅ  ＳＳＤ上に格納されたデータのイレイジャーコーディングの回復を遂行する段階と、が処理される。
【０２７９】
説明９９．
説明９８による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
前記故障したＮＶＭｅ  ＳＳＤの代替のＮＶＭｅ  ＳＳＤを検出する段階と、
前記代替のＮＶＭｅ  ＳＳＤを使用して故障したＮＶＭｅ  ＳＳＤを再構成する段階と、が処理される。
【０２８０】
説明１００．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ＰＣＩｅスイッチに連結された、イレイジャーコーディング機能がないＮＶＭｅ  ＳＳＤだけを検出する段階と、
前記ＰＣＩｅスイッチで、イレイジャーコーディングロジックをイネーブルする段階と、が処理される。
【０２８１】
説明１０１．
説明１００による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ＰＣＩｅスイッチのダウンストリームＰＣＩｅバスの列挙を終了させる段階が処理される。
【０２８２】
説明１０２．
説明１００による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ＰＣＩｅスイッチに連結されたＮＶＭｅ  ＳＳＤ及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
【０２８３】
説明１０３．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されていることを検出する段階と、
前記ＰＣＩｅスイッチ内の前記イレイジャーコーディングロジックをディセーブルさせる段階と、が処理される。
【０２８４】
説明１０４．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤが前記ＰＣＩｅスイッチに連結されていることを検出する段階と、
前記ＰＣＩｅスイッチ内の前記イレイジャーコーディングロジックをイネーブルさせる段階と、
イレイジャーコーディング機能を有する少なくとも一つの非ストレージ装置または少なくとも一つのＮＶＭｅ  ＳＳＤをディセーブルさせる段階と、が処理される。
【０２８５】
説明１０５．
説明１０４による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ＰＣＩｅスイッチからのＰＣＩｅバス列挙のダウンストリームを終了する段階が処理される。
【０２８６】
説明１０６．
説明１０４による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
ＰＣＩｅスイッチに連結されたＮＶＭｅ  ＳＳＤ及びイレイジャーコーディング方式の容量に少なくとも部分的に基づく容量を有する仮想ストレージ装置をホストに報告する段階が処理される。
【０２８７】
説明１０７．
説明７７による物品において、前記非一時的なストレージ媒体は、コマンドを格納し、コマンドがマシンによって実行される場合には、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階が処理される。
【０２８８】
説明１０８．
説明１０７による物品において、
イレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階は、ＢＭＣを使用してイレイジャーコーディング方式を使用するイレイジャーコーディングロジックを含むＰＣＩｅスイッチを構成する段階を含む。
【０２８９】
説明１０９．
本発明の概念の実施形態は、システムを包含する。前記システムは、
ＮＶＭｅ  ＳＳＤと、
前記ＮＶＭｅ  ＳＳＤをサポートする機能を具現するＦＰＧＡと、
ＰＣＩｅスイッチと、を含み、
前記機能は、データ加速化、データ重複排除（デデュープ）、データ・インテグリティ、データの暗号化とデータ圧縮を含む集合から獲得され、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤと通信する。
【０２９０】
説明１１０．
説明１０９によるシステムにおいて、
前記ＦＰＧＡ、前記ＮＶＭｅ  ＳＳＤは、共通のハウジング内部にある。
【０２９１】
説明１１１．
説明１１０によるシステムにおいて、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤを含む共通のハウジングの外部にある。
【０２９２】
説明１１２．
説明１０９によるシステムにおいて、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡに連結され、
前記ＦＰＧＡは、前記ＮＶＭｅ  ＳＳＤに連結される。
【０２９３】
説明１１３．
説明１０９によるシステムにおいて、
前記ＰＣＩｅスイッチは、前記ＮＶＭｅ  ＳＳＤに連結され、
前記ＮＶＭｅ  ＳＳＤは、ＦＰＧＡに連結される。
【０２９４】
説明１１４．
説明１０９によるシステムにおいて、
前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックを含み、
前記イレイジャーコーディングロジックは、イレイジャーコーディングコントローラを含む。
【０２９５】
説明１１５．
説明１１４によるシステムにおいて、
前記イレイジャーコーディングロジックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの中の１つを含む。
【０２９６】
説明１１６．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
【０２９７】
説明１１７．
説明１１６によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
【０２９８】
説明１１８．
説明１１６によるシステムにおいて、
前記ＰＣＩｅスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
【０２９９】
説明１１９．
説明１１４によるシステムにおいて、
レイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの書き込み要請に対する応答を返すように動作する。
【０３００】
説明１２０．
説明１１９によるシステムにおいて、
前記ＰＣＩｅスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
【０３０１】
説明１２１．
説明１１４によるシステムにおいて、
レイジャーコーディングロジックは、スヌーピングロジックを含むＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含む。
【０３０２】
説明１２２．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックは、ＰＣＩｅスイッチで受信された制御伝送をインターセプトし、制御伝送をＰＰＵに伝送するように動作する。
【０３０３】
説明１２３．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックは、ホストからＰＣＩｅスイッチにおいて受信されたデータの伝送をインターセプトし、前記データ伝送で、ホストによって使用されるホストのＬＢＡを前記ＮＶＭｅ  ＳＳＤで使用される装置のＬＢＡに代替するように動作する。
【０３０４】
説明１２４．
説明１２３によるシステムにおいて、
イレイジャーコーディングロジックは、前記ＮＶＭｅ  ＳＳＤに前記データ伝送を指示するように動作する。
【０３０５】
説明１２５．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックは、ＮＶＭｅ  ＳＳＤからＰＣＩｅスイッチで受信されたデータの伝送をインターセプトし、前記データ伝送でＮＶＭｅ  ＳＳＤで使用される装置のＬＢＡをホストによって使用されるホストのＬＢＡに代替するように動作する。
【０３０６】
説明１２６．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックは、ＮＶＭｅ  ＳＳＤ及び第２  ＮＶＭｅ  ＳＳＤにわたる仮想ストレージ装置を定義する。
【０３０７】
説明１２７．
説明１１４によるシステムにおいて、
前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
【０３０８】
説明１２８．
説明１１４によるシステムにおいて、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチに連結された第２装置をさらに含む。
【０３０９】
説明１２９．
説明１２８によるシステムにおいて、
前記第２装置は、ストレージ装置、ＦＰＧＡを含むＳＳＤ、およびＧＰＵの中の少なくとも１つを含む。
【０３１０】
説明１３０．
説明１２８によるシステムにおいて、
第２装置は、イレイジャーコーディングロジックとともに使用不可能であり、
前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用できない第２装置に、少なくとも部分的に基づいて、イレイジャーコーディングロジックをディセーブルするように動作する。
【０３１１】
説明１３１．
説明１２８によるシステムにおいて、
第２装置は、イレイジャーコーディングロジックとともに使用不可能であり、
ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することなく、第２装置へのアクセスをイネーブルするように動作する。
【０３１２】
説明１３２．
説明１２８によるシステムにおいて、
第２装置は、イレイジャーコーディングロジックとともに使用不可能であり、
ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、第２装置へのアクセスをディセーブルするように動作する。
【０３１３】
説明１３３．
本発明の概念の実施形態は、システムを包含する。前記システムは、
ＮＶＭｅ  ＳＳＤと、
前記ＮＶＭｅ  ＳＳＤをサポートする一つ以上の機能を具現する第１のＦＰＧＡ部分とＰＣＩｅスイッチを具現する第２のＦＰＧＡ部分を含むＦＰＧＡと、を備え、
前記１つ以上の機能は、データ加速化、データ重複排除（デデュープ）、データインテグリティ、データの暗号化とデータ圧縮の中の少なくとも１つを含む集合から獲得され、
前記ＰＣＩｅスイッチは、前記ＦＰＧＡ及び前記ＮＶＭｅ  ＳＳＤと通信し、
前記ＦＰＧＡ、前記ＮＶＭｅ  ＳＳＤは、共通のハウジング内部にある。
【０３１４】
説明１３４．
説明１３３によるシステムにおいて、
前記ＰＣＩｅスイッチは、イレイジャーコーディングコントローラを含むイレイジャーコーディングロジックを包含する。
【０３１５】
説明１３５．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、ＮＶＭｅ  ＳＳＤの少なくとも二つの部分にまたがる仮想ストレージ装置を定義する。
【０３１６】
説明１３６．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、ＮＶＭｅ  ＳＳＤ及び第２  ＮＶＭｅ  ＳＳＤにまたがる仮想ストレージ装置を定義する。
【０３１７】
説明１３７．
説明１３６によるシステムにおいて、
前記第２のＮＶＭｅ  ＳＳＤは、共通のハウジング内部にある。
【０３１８】
説明１３８．
説明１３６によるシステムにおいて、
前記第２のＮＶＭｅ  ＳＳＤは、共通のハウジングの外部にある。
【０３１９】
説明１３９．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、Ｌｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの中の少なくとも１つを含む。
【０３２０】
説明１４０．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
【０３２１】
説明１４１．
説明１４０によるシステムにおいて、
前記ＦＰＧＡは、前記キャッシュをさらに含む。
【０３２２】
説明１４２．
説明１４０によるシステムにおいて、
前記共通のハウジングは、前記シャーシ内に位置し、
前記シャーシは、前記イレイジャーコーディングロジックにより前記キャッシュとして使用されるメモリを含む。
【０３２３】
説明１４３．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、書き込み要請を完了する前に、ホストへの前記書き込み要請に対する応答を返すように動作するシステム。
【０３２４】
説明１４４．
説明１４３によるシステムにおいて、
前記ＦＰＧＡは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、書き込み要請内のデータを書き込みバッファに格納するように動作する。
【０３２５】
説明１４５．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、スヌーピングロジックを含むＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含む。
【０３２６】
説明１４６．
説明１４５によるシステムにおいて、
前記スヌーピングロジックは、前記ＰＣＩｅスイッチで受信された制御伝送をインターセプトし、前記制御伝送を前記ＰＰＵに伝達するように動作する。
【０３２７】
説明１４７．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのＰＣＩｅスイッチで受信されたデータの送信をインターセプトし、データの伝送で、ホストによって使用されたホストのＬＢＡをＮＶＭｅ  ＳＳＤで使用する装置ＬＢＡに代替するように動作する。
【０３２８】
説明１４８．
説明１４７によるシステムにおいて、
イレイジャーコーディングロジックは、データの伝送をＮＶＭｅ  ＳＳＤに指示するように動作する。
【０３２９】
説明１４９．
説明１３４によるシステムにおいて、
前記イレイジャーコーディングロジックは、ＮＶＣｅ  ＳＳＤからＰＣＩｅスイッチで受信されたデータの送信をインターセプトし、データ伝送のＮＶＭｅ  ＳＳＤで使用する装置のＬＢＡをホストによって使用されたホストのＬＢＡに代替するように動作する。
【０３３０】
説明１５０．
説明１３４によるシステムにおいて、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをイネーブルするように動作する。
【０３３１】
説明１５１．
説明１３４によるシステムにおいて、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用できないＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
【０３３２】
説明１５２．
本発明の概念の実施形態は、システムを包含する。前記システムは、
ＮＶＭｅ  ＳＳＤと、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチと、を含み、
前記ＰＣＩｅスイッチは、
前記ＰＣＩｅスイッチがプロセッサと通信できるようにする外部コネクタと、
前記ＰＣＩｅスイッチが前記ＮＶＭｅ  ＳＳＤと通信できるようにする少なくとも一つのコネクタと、
前記ＰＣＩｅスイッチを構成するＰＰＵと、
前記ＮＶＭｅ  ＳＳＤに格納されたデータに、イレイジャーコーディング方式を適用するための回路を含むイレイジャーコーディングコントローラと、を含む。
【０３３３】
説明１５３．
説明１５２によるシステムにおいて、
前記システムは、第２のＮＶＭｅ  ＳＳＤをさらに含み、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチが第２のＮＶＭｅ  ＳＳＤと通信できるようにする第２コネクタを含む。
【０３３４】
説明１５４．
説明１５２によるシステムにおいて、
前記システムは、
第２のＮＶＭｅ  ＳＳＤと、
第２のＰＣＩｅスイッチと、をさらに含み、
前記第２のＰＣＩｅスイッチは、
前記第２のＰＣＩｅスイッチが前記プロセッサと通信できるようにする第２外部コネクタと、
前記第２のＰＣＩｅスイッチが前記第２のＮＶＭｅ  ＳＳＤと通信できるようにする第２コネクタと、
前記第２のＰＣＩｅスイッチが前記イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチと通信できるようにする第３コネクタと、を含み、
前記イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、前記イレイジャーコーディングロジックを有する前記ＰＣＩｅスイッチが前記第２のＰＣＩｅスイッチと通信できるようにする第４コネクタと、を含み、
前記イレイジャーコーディング方式は、前記ＮＶＭｅ  ＳＳＤ及び前記第２のＮＶＭｅ  ＳＳＤに格納されたデータに適用される。
【０３３５】
説明１５５．
説明１５４によるシステムにおいて、
前記第２のＰＣＩｅスイッチは、ディセーブルされた第２レーザコーディングロジックをさらに含む。
【０３３６】
説明１５６．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックはＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックの中の少なくとも１つを含む。
【０３３７】
説明１５７．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュ内に存在する読み取り要請によって要請されたデータに少なくとも部分的に基づいて、ホストからの読み取り要請への応答を返すように動作する。
【０３３８】
説明１５８．
説明１５７によるシステムにおいて、
前記イレイジャーコーディングロジックは、キャッシュをさらに含む。
【０３３９】
説明１５９．
説明１５７によるシステムにおいて、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、シャーシ内に位置し、
前記シャーシは、イレイジャーコーディングロジックによってキャッシュとして使用されるメモリを含む。
【０３４０】
説明１６０．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは読み取り要請を完了する前に、読み取り要請に対する応答をホストに返すように動作する。
【０３４１】
説明１６１．
説明１６０によるシステムにおいて、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、書き込みバッファをさらに含み、
前記イレイジャーコーディングコントローラは、前記書き込み要請内のデータを前記書き込みバッファに格納するように動作する。
【０３４２】
説明１６２．
説明１５２によるシステムにおいて、
イレイジャーコーディングロジックは、スヌーピングロジックを含むＬｏｏｋ−Ａｓｉｄｅイレイジャーコーディングロジック及びＬｏｏｋ−Ｔｈｒｏｕｇｈイレイジャーコーディングロジックを含む。
【０３４３】
説明１６３．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記ＰＣＩｅスイッチで受信された制御伝送をインターセプトし、前記制御伝送をＰＰＵに伝達するように動作する。
【０３４４】
説明１６４．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは、ホストからのＰＣＩｅスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記ホストによって使用されたホストのＬＢＡを前記ＮＶＭｅ  ＳＳＤで使用する装置のＬＢＡに代替するように動作する。
【０３４５】
説明１６５．
説明１６４によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記データ伝送を、前記ＮＶＭｅ  ＳＳＤに指示するように動作する。
【０３４６】
説明１６６．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記ＮＶＭｅ  ＳＳＤから前記ＰＣＩｅスイッチで受信されたデータの送信をインターセプトし、前記データ伝送において、前記ＮＶＭｅ  ＳＳＤで使用する装置のＬＢＡを前記ホストによって使用されたホストのＬＢＡに代替するように動作する。
【０３４７】
説明１６７．
説明１５２によるシステムにおいて、
前記イレイジャーコーディングロジックは、前記ＮＶＭｅ  ＳＳＤ及び第２のＮＶＭｅ  ＳＳＤにまたがる仮想ストレージ装置を定義する。
【０３４８】
説明１６８．
説明１５２によるシステムにおいて、
イレイジャーコーディングロジックを有する前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルするように動作する。
【０３４９】
説明１６９．
説明１５２によるシステムにおいて、
イレイジャーコーディングロジックを含むＰＣＩｅスイッチに連結された第２装置をさらに含む。
【０３５０】
説明１７０．
説明１６９によるシステムにおいて、
前記第２装置は、ストレージ装置、ＦＰＧＡを有するＳＳＤ、およびＧＰＵの中の少なくとも１つを含む。
【０３５１】
説明１７１．
説明１６９によるシステムにおいて、
第２装置は、前記イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用できない前記第２装置に、少なくとも部分的に基づいて、前記イレイジャーコーディングロジックをディセーブルするように動作する。
【０３５２】
説明１７２．
説明１６９によるシステムにおいて、
前記第２装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを含む前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、イレイジャーコーディングロジックを使用することがなく、前記第２装置へのアクセスをイネーブルするように動作する。
【０３５３】
説明１７３．
説明１６９によるシステムにおいて、
第２装置は、イレイジャーコーディングロジックとともに使用不可能であり、
イレイジャーコーディングロジックを有する前記ＰＣＩｅスイッチは、イレイジャーコーディングロジックとともに使用可能なＮＶＭｅ  ＳＳＤに少なくとも部分的に基づいて、イレイジャーコーディングロジックをイネーブルし、前記第２装置へのアクセスをディセーブルするように動作する。
【０３５４】
結論として、本明細書に記述された実施形態の様々な変更の観点から、この詳細な説明と添付された資料は、単に例として意図しており、本発明の範囲を制限するものとみなされてはならない。従って、本発明として請求されるのは、後述する特許請求の範囲、その均等物の範囲と思想内に有り得るすべての変形である。
【符号の説明】
【０３５５】
１５  装置の機能
１０５  マシン
１１０  プロセッサ
１１５  メモリ
１２０  メモリコントローラ
１２５、３２０、６０５、１００５  ＰＣＩｅスイッチ
１３０、１３０−１、１３０−２、１３０−３、１３０−５、１３０−６  ストレージ装置
１３５  装置ドライバ
２０５  クロック
２１０  ネットワークコネクタ
２１５  バス
２２０  ユーザーインターフェース
２２５  入出力エンジン
３０５  ミッドプレーン
３１０、３１５  スイッチボード
３２５、３３０  ベースボード管理コントローラ（ＢＭＣ）
４０５、４１０  イレイジャーコーディング方式
５０５  コネクタ
５１０−１、５１０−２、５１０−３、５１０−４、５１０−５、５１０−６  ＰＣＩｅ−ｔｏ−ＰＣＩｅスタック
５１５  ＰＣＩｅスイッチコア
５２０  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
５２５  スヌーピングロジック
５３０  イレイジャーコーディングコントローラ
５３５−１、５３５−２、５３５−３、５３５−４、５３５−５、５３５−６  キャプチャインターフェース
５４０  マルチプレクサ
５４５  キャッシュ
５５０  書き込みバッファ
５５５  イレイジャーコーディングイネーブル信号
７０５  ＦＰＧＡ
【図１】
2020061149.tif 000005
【図２】
2020061149.tif 000006
【図３】
2020061149.tif 000007
【図４】
2020061149.tif 000008
【図５】
2020061149.tif 000009
【図６】
2020061149.tif 000010
【図７】
2020061149.tif 000011
【図８】
2020061149.tif 000012
【図９】
2020061149.tif 000013
【図１０】
2020061149.tif 000014
【図１１Ａ】
2020061149.tif 000015
【図１１Ｂ】
2020061149.tif 000016
【図１１Ｃ】
2020061149.tif 000017
【図１１Ｄ】
2020061149.tif 000018
【図１２Ａ】
2020061149.tif 000019
【図１２Ｂ】
2020061149.tif 000020
【図１３】
2020061149.tif 000021
【図１４】
2020061149.tif 000022