いくつかの例示的な実施形態が、その一部を形成する添付図面に関連してここで説明される。開示の1つ以上の態様を実装することができる特定の実施形態が以下で説明されるとともに、他の実施形態が使用されてもよく、かつ開示の範囲または添付の特許請求の範囲の趣旨を逸脱することなく種々の変形形態がなされてもよい。
本発明の実施形態を論じる前に、一部の用語の説明が本発明の実施形態を理解するのに有用となることがある。
一部の実施形態では、本明細書で論じられる「記憶装置」は、記憶媒体にデータを記憶し、および記憶媒体からデータを取り出すように構成されたコンピュータシステムを備えてもよい。コンピュータシステムは、図13を参照して説明されるいくつかのまたは全ての構成要素を使用して実装されてもよい。一部の実施形態では、記憶装置は、記憶装置への低待ち時間かつ高可用性リンクを使用してネットワークを通じたデータのアクセスを必要とする企業環境または他の類似の環境で使用されてもよい。記憶装置からは、より低い電力消費、より低いコスト、および良好な放熱がまた望ましいことがある。一部の実施形態では、記憶装置は、ラックマウント型デバイスであってもよく、そこでは、複数の記憶装置が同一位置に配置され、かつ集合的に維持されてもよい。他の実施形態では、記憶装置は、スタンドアロンデバイスであってもよい。記憶装置は、従来型コンピュータシステムに類似した他の周辺機器およびデバイスを有してもよいが、一部の実装形態では、記憶装置は、物理空間およびエネルギーの使用を最小化するために最適化されるモジュール設計を有する、必要最低限のサーバコンピュータであってもよい。記憶装置はまた、記憶装置における記憶媒体に記憶され、かつI/O要求を受信し、それらのI/O要求を下層の物理媒体への読み出し、書き込みおよび構成コマンドに復号化および変換するためにプロセッサによって実行されるファイルシステムソフトウェアスタックを備えてもよい。
本発明の一部の実施形態では、本明細書で論じられる「フラッシュ記憶媒体」は、不揮発性メモリ(NVM)を含んでもよい。一部の例では、NVMを使用した記憶装置の実装形態は、ソリッドステートデバイスとも称されてもよい。NVMベースのデバイスの例示的な実装形態は、NOR、NAND、MRAM(磁気抵抗RAM)、FRAM(登録商標)(強誘電体RAM、RRAM(登録商標)(抵抗RAM))、相変化メモリまたは任意の他の適切な技術を含んでもよいが、それらに限定されない。NORフラッシュは、最大で1バイトなどの特定のメモリ位置でデータへの高速ランダムアクセス、読み出し、および書き込みを提供することができる。NANDフラッシュは、ランダムに読み出すことができるが、一般的には、高速で順次書き込みされ、小型ブロック呼出しページでデータを取り扱う。NANDフラッシュは、書き込みよりも高速に読み出すことができ、データのページ全体をより高速に転送する。NORフラッシュは、NANDフラッシュよりも高速に読み出す以外は同様の方法で振舞うことができ、かつ書き込みはより低速になることがある。概して、高密度でNORフラッシュよりも低価格で、NAND技術は、同一のサイズのシリコンに対してより高い容量を供給することができる。
一部の実装形態では、本発明の実施形態は、単一レベルセル(SLC)NANDフラッシュ技術を利用してもよい。他の実装形態では、本発明の実施形態は、マルチレベルセル(MLC)NANDフラッシュ記憶媒体を利用してもよい。MLC NANDは、同一の数のトランジスタを使用してより多くのビットが記憶されることを可能にするためにセルごとに複数のレベルを使用するフラッシュメモリ技術である。SLC NANDフラッシュ技術では、各セルは、2つの状態のうちの1つに存在することができ、セルごとに情報の1ビットを記憶する。ほとんどのMLC NANDフラッシュメモリ技術は、セルごとに4つの可能な状態を有し、それによって、セルごとに情報の2ビットを記憶することができる。MLC NANDを使用することが、より高いデータ密度によって、記憶の単位ごとのコストを低減させるのに有利となることがある。
本明細書で説明されるように、一部の実施形態では、「ブレード」、「フラッシュブレード」または「NVMブレード」は、記憶を提供するために1つ以上のNVMチップを一緒にグループ化することを指すことがあり、NVMチップは、NVM記憶媒体を備える。NVMブレードは、NVM記憶媒体へのアクセスを調停するためのブレードコントローラを有してもよい。NVMブレードコントローラは、NVM記憶媒体上でデータにアクセス/記憶するためのコマンドを受信し、コマンドを処理し、かつNVM記憶媒体にデータを記憶し、またはNVM記憶媒体からデータを取り出すことに関与してもよい。1つの実施形態では、NVMブレードコントローラは、特定用途向け集積回路(ASIC)を使用して実装されてもよい。別の実施形態では、NVMブレードコントローラは、フィールドプログラマブルゲートアレイ(FPGA)を使用して実装されてもよい。
本明細書で定義されるように、「コントローラボード」は、I/O要求を受信し、かつそれらのI/O要求を、NVM記憶媒体を読み出し、書き込みおよび構成するためのコマンドに変換するための種々のハードウェア、ファームウェアおよびソフトウェア構成要素を含んでもよい。1つの実装形態では、コントローラボードは、プリント回路基板(PCB)を使用して実装されてもよく、コントローラボードの種々の構成要素は、ボードに結合されてもよく、かつバスを使用して相互に通信してもよい。他の実装形態では、構成要素間で通信するために無線などの通信の他の手段が使用されてもよい。図7は、コントローラボードの例示的な実施形態である。本発明の実施形態を、いくつかの個別構成要素に関して説明することができるが、一部の実施形態では、いくつかの個別構成要素の機能は、1つのシリコンダイによって実行されてもよい。例えば、本明細書で説明されるように、処理およびルーティングなどの複数の個別構成要素の機能は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マルチチップモジュール(MCM)または任意の他のシリコン技術として実装されたコントローラによって実行されてもよい。本明細書で説明されるように、1つの実施形態では、「コントローラボード」は、プリント回路基板を使用して機能の組を実装するいくつかの個別構成要素を指してもよいが、「コントローラ」は、コントローラボード(例えば、個別構成要素を有するPCBボード)およびコントローラ(例えば、ASIC、FPGAなどとして実装されるいくつかの個別構成要素の機能)の両方を指してもよい。
本明細書で説明されるように、「処理エンティティ」は、1つ以上の物理または論理プロセッサを指してもよい。用語「処理エンティティ」または「処理コンプレックス」は、本発明の範囲から逸脱することなく、本明細書全体を通じて交換可能に使用されてもよい。例えば、処理エンティティは、Intel、Qualcomm、およびTileraなどのベンダからのデュアルコア、クアッドコアまたはマルチコアを含んでもよい。処理エンティティは、ファイルシステムソフトウェアスタックを実行してもよく、かつ記憶媒体にアクセスするためのネットワークからのI/O要求を復号化してもよい。1つの実装形態では、処理エンティティは、PCIeプロトコルまたは同様のプロトコルに対するルートコンプレックスを含んでもよい。1つの実装形態では、処理エンティティは、ASIC、FPGAまたはMCM内での処理ロジックとして実装されてもよい。
本明細書で説明されるように、「ルーティングエンティティ」は、インタフェーシングエンティティ、処理エンティティ、NVMブレードおよびルーティングエンティティ自体の間でデータをルーティングするための1つ以上のルータを指してもよい。1つの実装形態では、ルーティングエンティティは、PCIeプロトコルに対するPCIeノードまたはエンドポイントを表してもよい。
本明細書で説明されるように、「インタフェーシングエンティティ」は、記憶装置とインタフェースするための1つ以上のホストインタフェースチップを指してもよい。1つの実施形態では、インタフェーシングエンティティは、PCIeプロトコルを使用してI/O要求をルーティングエンティティに転送してもよい。インタフェースチップにおけるI/O要求は、ギガビットイーサネット(登録商標)、ファイバーチャネル、ダイヤルインまたはさらにPCIeプロトコルなどの任意の適切なプロトコルを使用して受信されてもよい。
本明細書で説明されるように、「I/O要求」は、記憶媒体にデータを記憶し、または記憶媒体からデータを取り出すためのネットワークから記憶装置への入力/出力要求を指してもよい。
本明細書で説明されるように、「Peripheral Component Interconnect Express(PCIe)」は、より高い最大システムバススループット、より少ないI/Oピン数およびより小さい物理フットプリント、バスデバイスに対するより良好な性能−規模、さらなる詳細な誤り検出、ならびに報告機構および固有のホットプラグ機能のために設計された高速シリアルコンピュータ拡張バス規格を指してもよい。従来のPCIeシステムでは、PCIeルートコンプレックスは、プロセッサに結合された全てのエンドポイントデバイスを列挙し、かつ木状構造を生成する。
企業システムのための記憶装置は、大記憶容量、記憶装置からの読み出しおよび記憶装置への書き込みに対する低待ち時間、高帯域幅、低電力消費、ならびに信頼性を必要とする。従来から、企業システムは、電力がオフになっている間にデータを保持するハードディスクドライブ(HDD)などの記憶媒体を使用して実装される。HDDは、高速回転ディスクを使用する、デジタル情報を記憶および取り出すために使用される、データ記憶装置である。HDDは、面からデータを読み出し、および面へデータを書き込むために可動アクチュエータアーム上に配置された磁気ヘッドを有する1つ以上の剛体(「ハード」)高速回転ディスク(プラター)から構成される。
データを読み出しおよび書き込むことに関与する可動部により、HDDは本質的に誤りおよび障害を起こしやすく、かつデータのシーク時間の改善についての下限を有する。加えて、HDDは、回転プラターを有するため、製造することができる部品をどの程度小型にするか、および部品の電力消費をどの程度小さくするかについての限界が存在する。
ある実施形態では、本明細書で説明される技術は、NVM記憶媒体を使用した記憶装置を実装することを提案する。NVM記憶媒体が低シーク時間を有し、可動部を有さないため、一部の実施形態では、NVM記憶媒体を使用することが有利となることがあり、かつ概して、HDDよりも信頼できるものとなることがある。
1つの実施形態では、構成要素、モジュールおよびコントローラボードの構成は、放熱を向上させ、電力消費を低下させ、電力および作業負荷を拡散し、ならびに待ち時間を減少させる方法で配置されてもよい。
従来の記憶装置は、1つ以上のコントローラボードを提供することができ、各々のコントローラボードは、I/O要求を受信し、要求を処理し、かつ記憶要求を適切な記憶媒体に転送するための単一の処理コンプレックスを備える。ネットワーク速度が増大し、かつこれまでに記憶装置のサイズを増大させる要求が増大するにつれ、記憶のために物理媒体にアクセスする単一ポイントが、システムに対するボトルネックとなることがあり、結果として、I/O要求に対する待ち時間が大きくなる。単一の処理コンプレックスにおける処理負荷が増大することによって、適切な放熱の課題を作り出す、より小規模エリアにおける高熱集中がもたらされることがある。さらに、単一のプロセシングユニットは、I/O要求に遅れずに十分に高速にトランザクションを処理することが可能でないことがある。従来のシステムでは、トランザクションのボトルネックが、HDDへの処理経路ではなく、HDDからの読み出し、およびHDDへの書き込みに対するシーク時間よりも多かったため、単一のシステム設計は問題のあるものではなかった。
一部の実施形態では、記憶装置は、NVM記憶媒体を使用して実装されてもよい。概して、NVM記憶媒体は、従来のHDDよりも低いシーク時間を有することができる。NVM記憶媒体によって可能となる低シーク時間で、単一の処理コンプレックスを使用した従来のコントローラボード設計は、準最適な構成をもたらすことがある。本発明の実施形態はまた、NVM記憶媒体へのアクセス時間を改善するためのさらなる強化をもたらすことができる。例示を目的にNVM記憶媒体を使用して、本発明の一部の実施形態を本明細書で説明することができるが、本発明は、NVM記憶媒体に限定されないことがあり、かつ本発明の範囲から逸脱することなく他の適切な物理記憶媒体が使用されてもよい。
さらに、従来の記憶装置は、データに対するミラー化記憶(mirrored storage)を維持することによってフォールトトレラントシステムを実装することができる。換言すると、書き込み動作ごとに、独立した処理経路を使用して少なくとも2つの別個の記憶サブシステムにデータが記憶されてもよい。電力供給装置障害、記憶媒体の障害または処理経路における誤りなどの、一次記憶サブシステムにおける突発障害の事象では、一次システムが復旧する間にデータを取り出し、および記憶するためのアクティブバックアップとして、ミラー化データを有する二次記憶システムが使用されてもよい。HDDに対し、ミラー化データを維持することは、媒体の低い信頼性によって必須となることがあり、かつ媒体と関連付けられたより低いコストによって適切となることがある。
一部の実施形態では、フォールトトレラントシステムを実装するためにNVM記憶媒体が使用されてもよい。比較的、NVM記憶媒体は、従来の記憶媒体よりも信頼でき、かつ誤りを起こしにくいことがある。一部の実装形態では、NVM記憶媒体上に記憶されたデータの信頼性は、独立したディスクの冗長アレイ(RAID)などの技術または他の適切な誤り復旧および訂正技術を使用して保証されてもよい。従って、図面を参照して本明細書で論じられる実施形態でのさらなる詳細で説明されるように、記憶媒体を含むシステム全体をミラー化することの代わりに、NVM記憶媒体の同一の物理位置からの同一の読み出し動作または同一の物理位置への同一の書き込み動作のための複数の経路を提供することによって、システムの全体のコストを削減させるために、NVM記憶媒体を使用することを実装することが実施形態では有利となることがある。
図1は、本発明の1つの実施形態に従った記憶装置の例示的な高レベルブロック図を示す。ブロック102は、2つのコントローラボード(104および106)、ならびにコントローラボードに結合されたブレード(102a〜n)の配列を有する記憶装置を示す。1つの実施形態では、図1からの記憶装置は、アクティブ/アクティブ記憶システムを表すことができる。アクティブ/アクティブ構成によって、両方のコントローラボードに対する処理モジュールがI/Oを処理し、かつ他方に対するスタンバイ能力を提供することが可能になる。1つの単純化した例では、特定のブレードに対する読み出しまたは書き込みコマンドがコントローラボード104から機能しない場合、同一の読み出しまたは書き込みがコントローラボード106を通じて試みられてもよい。コントローラボード104および106の間で状態情報を通信するための通信プロトコルが実装されてもよい。両方のコントローラボードと関連付けられた処理モジュールが同時に、またはほぼ同時にI/Oを処理することができるため、性能を高めるためにアクティブ/アクティブ記憶装置を実装することが有利となることがある。しかしながら、図1からの記憶装置は、アクティブ/アクティブ記憶装置に限定されず、かつアクティブ/パッシブ構成で使用されてもよく、そこでは、1つのコントローラボードに対する処理モジュールは、I/O要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合にアクティブとなるべく、I/O動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
図1に示されるように、各NVMブレードは、両方のコントローラボードに結合されてもよい。各コントローラボードは、ルーティングのためのルーティングモジュール(108および110)、I/O要求を処理するための処理モジュール(112および114)、ならびにI/O要求を受信するためのホストインタフェース(116および118)を有する。1つの実装形態では、ルーティングモジュール(108および110)は、さらなるI/O要求の処理のために、インタフェースモジュール(116および118)から処理モジュール(112および114)にI/O要求をルーティングすることに関与してもよい。処理モジュール(112および114)は、ファイルシステムソフトウェアスタック(図示せず)を使用してI/O要求を処理してもよい。ルーティングモジュール(108および110)はまた、処理モジュール(112および114)からNVMブレード120a〜nにアクセスおよび記憶要求をルーティングする。1つの実装形態では、NVMブレードは、PCIeプロトコルまたは任意の他の適切なプロトコルを使用してルーティングモジュール(108および110)に結合される。
1つの実装形態では、各NVMブレードは、NVM記憶媒体の各々の物理アドレスがコントローラボードのいずれかによってアクセスされることを可能にする、両方のコントローラボード(104および106)に結合されてもよい。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および/もしくはRAIDなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。
図2は、本発明の1つの実施形態に従った記憶装置の別の例示的なブロック図を示す。図2は、2つのコントローラボードの画像を示し、各コントローラボードは、2つのプロセッサ、メモリ、ルータ、およびインタフェースチップを含む。図2はまた、空気の流れのための中央溝を有する42個のNVMブレードを示す。図示しないが、記憶装置はまた、電力管理機能を有する2つのブリッジボードおよびオンボードNVMを含んでもよい。オンボードNVMは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し/書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。一部の実施形態では、バイト書き込み可能な磁気RAMなどのNVMは、オンボードNVMを実装するために使用されてもよい。加えて、記憶装置は、12個のファンを含んでもよく、NVMメモリを冷却するために8個のファンが使用されてもよく、かつコントローラボードを冷却するために4のファンが使用される。空気の流れ、処理負荷、放熱を最適化するために、図2の例示的な構成に構成要素が配置されてもよい。記憶装置はまた、複数の電力供給装置を含んでもよい。電力供給装置は、概して障害を起こしやすく、かつファンまたは他の電力構成要素の障害によって機能しなくなることがある。記憶装置に電力供給する複数の電力供給装置を有することは、電力供給装置のうちの1つの構成要素の障害による記憶装置の障害を回避することができる。1つの実装形態では、コントローラまたはコントローラボードは、母線を通じて電力供給されてもよく、母線は、複数の電力供給装置から電力を供給することができる。母線に接続された電力供給装置のうちの1つの障害の事象では、母線は、機能している電力供給装置から電力を供給し続ける。一部の実装形態では、機能しなくなった電力供給装置は、適切に機能している電力供給装置とホットスワップ可能であってもよい(すなわち、記憶装置の電源を入れなおすことなく交換可能である)。
NVMブレードおよびコントローラ/コントローラボードは、ボードのうちのいずれか1つが機能しなくなった場合に、短絡を防止するための個々に実装されたデジタル回路ブレーカを有してもよい。さらに、電力供給装置はまた、それらが単に母線に電力を供給するが、電力供給装置が機能しなくなった場合に母線から電力が排出しないことを可能にする方法で実装されてもよい。1つの実装形態では、機能しなくなった電力供給装置を通じて電力が排出することを防止するためにダイオードが使用されてもよい。
コントローラボード、電力供給装置、NVMブレード、ブリッジボードおよびファンなどの、図2を参照して説明される構成要素の数、ならびにそれらの関連する構成は、非限定的であり、かつ記憶装置の特定の構成を示すための例として提供される。
図3は、本発明の1つの実施形態に従った記憶装置のさらなる別の例示的なブロック図を示す。図3に示されるように、記憶装置の構成要素は、矩形形状のボックスに適合するように構成されてもよい。1つの例示的な構成では、空気の流れは、前面から背面へであってもよく、記憶装置の背面にファンが配置される。この形状は、企業データ記憶設備におけるラック構成に複数の記憶装置をともにグループ化するのに有利となることがある。しかしながら、記憶装置の形状は、図3に示される矩形形状ボックスに限定されない。
図4は、本発明の1つの実施形態に従った記憶装置の例示的なブロック図を示す。図4のシステム402は、第1のコントローラボード404および第2のコントローラボード406を有する記憶装置を示す。例示を目的に、図4は、複数のNVMブレードからの単一のNVMブレード420を示す。
第1のコントローラボード404は、第1の処理エンティティ412、第1の処理エンティティに結合されたメモリ416、第2の処理エンティティ414、第2の処理エンティティに結合されたメモリ432、インタフェーシングエンティティ408、およびルーティングエンティティ410を有してもよい。
第2のコントローラボード406は、第3の処理エンティティ424、第3の処理エンティティに結合されたメモリ428、第4の処理エンティティ418、第4の処理エンティティに結合されたメモリ430、インタフェーシングエンティティ422、およびルーティングエンティティ426を有してもよい。
1つの実装形態では、ルーティングエンティティ(410および426)は、さらなるI/O要求の処理のために、インタフェーシングエンティティ(408および422)から処理エンティティ(412、416、428および430)のうちの1つにI/O要求をルーティングすることに関与してもよい。処理エンティティは、ファイルシステムソフトウェアスタック(図示せず)を使用してI/O要求を処理してもよい。ルーティングエンティティ(410および426)はまた、処理エンティティ(412、416、428および430)からNVMブレード420にデータ要求をルーティングしてもよい。
一部の実施形態では、第1のコントローラボード404からのルーティングエンティティ410、および第2のコントローラボード406からのルーティングエンティティ426は、NVMブレード420にデータを記憶し、およびNVMブレード420からデータを取り出すためにNVMブレード420に結合されてもよい。1つの実装形態では、NVMブレード420は、PCIeプロトコルを使用してルーティングエンティティに結合される。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および/もしくはRAIDなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。
図4での、1つの例示的な構成では、第1の処理エンティティ412は、1つ以上のI/O要求を受信し、I/O要求と関連付けられたデータが、記憶動作のためのものであり、かつ第1のルーティングエンティティ410に結合された第1のブレード上の特定の位置と関連付けられていると判定し、および第1のブレード420上に第1のデータを記憶するために、I/O要求と関連付けられたデータを第1のルーティングエンティティに伝送するように構成されてもよい。1つの実装形態では、第1の処理エンティティ412上で実行するファイルシステムソフトウェアスタックは、I/O要求と関連付けられた位置およびNVMブレードの動作を判定してもよい。例えば、1つの実施形態では、第1の処理エンティティ412は、ファイル識別子から物理記憶媒体上のデータに対する物理位置への1つ以上のアドレス変換を実行してもよい。1つの態様では、第1の処理エンティティ412によって受信されるI/O要求は、インタフェーシングエンティティ408において最初に受信されてもよく、かつ複数のルーティングエンティティのうちの1つを通じて第1の処理エンティティ412に転送されてもよい。
同様に、第2の処理エンティティ414は、別のI/O要求を受信し、I/O要求と関連付けられたデータが、第1のルーティングエンティティ410に結合された第1のブレード420上の別の位置に記憶されることになると判定し、かつ第1のブレード420上にデータを記憶するために、I/O要求と関連付けられたデータを第1のルーティングエンティティ410に伝送するように構成されてもよい。第2の処理エンティティ414はまた、I/O要求と関連付けられた位置および記憶動作を判定するためにファイルシステムソフトウェアスタックを実行してもよい。
上記例は、同一のコントローラボードからの2つの処理エンティティ間で同一のNVMブレード420にアクセスするための処理エンティティ(412および414)間で複数のI/O要求を負荷分散し、かつ拡散するための例示的な構成および処理を示す。2つの処理エンティティが示されるが、複数の処理エンティティが使用されてもよい。これは、I/O要求を処理する負荷を拡散し、かつ超高速で同一の物理媒体への複数の記憶動作を同時に実行している間のボトルネックを回避するのに有利となることがある。
記憶されたデータはまた、同様の技術を使用して物理媒体から取り出されてもよい。例えば、第2の処理エンティティ414は、第1の処理エンティティ412またはそれについての任意の他の処理エンティティによって記憶されたデータを読み出すためのI/O要求を受信するように構成されてもよい。第2の処理エンティティ414は、I/O要求が、第1のルーティングエンティティ410に結合された第1のブレード420の位置におけるデータに対する読み出し要求であると判定し、第1のルーティングエンティティ410からの位置からのデータを要求し、かつ第1のルーティングエンティティ410から第1のデータを受信してもよい。
1つの例示的な構成では、第1の処理エンティティ412および第2の処理エンティティ414は、直接結合されなくてもよいが、第1のルーティングエンティティ410を通じて相互に結合されてもよい。第1の処理エンティティ412と第1のルーティングエンティティ410との間のデータの伝送、および第2の処理エンティティ414と第1のルーティングエンティティ410との間のデータの伝送は、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。
例示を目的に、図4は、1つのNVMブレードおよび2つのコントローラボードを示し、各々のコントローラボードは、2つの処理エンティティ、2つのメモリならびにルーティングエンティティおよびインタフェーシングエンティティを有するが、本発明の実施形態は、図面に示されたエンティティの数に限定されない。例えば、別の例示的な構成は、本発明の範囲から逸脱することなく、複数のNVMブレード、複数のルーティングエンティティおよび複数のインタフェーシングエンティティを含んでもよい。図7は、複数のルータ(ルーティングエンティティ)および複数のインタフェースチップ(インタフェーシングエンティティ)を有するそのような構成の1つの例である。
別の例示的な構成では、第1の処理エンティティ412および第2の処理エンティティ414は、第1のコントローラボード404上の別の(第2の)ルーティングエンティティ(図示せず)に結合されてもよい。ルーティングエンティティ410と同様に、第2のルーティングエンティティはまた、別のNVMブレードに結合されてもよく、かつ第1の処理エンティティ412および第2の処理エンティティ414の両方から受信された記憶アクセスコマンドを処理してもよい。第1の処理エンティティ412と第2のルーティングエンティティ(図示せず)との間のデータの伝送、および第2の処理エンティティ414と第2のルーティングエンティティ(図示せず)との間のデータの伝送は、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。同様に、第2のコントローラボード406上の構成要素は、上述した第1のコントローラボード404と同様の方法で構成されてもよく、かつ動作してもよい。
NVMブレード420は、複数のコントローラボードと通信するための複数のルーティングインタフェースを含んでもよい。記憶装置402の1つの例示的な実装形態では、ルーティングエンティティ410を備えた第1のコントローラボード404およびルーティングエンティティ426を備えた第2のコントローラボード406は、NVMブレード420に結合される。NVMブレード420は、ルーティングエンティティ410を通じて第1のコントローラボード404に結合されてもよく、かつNVMブレードは、ルーティングエンティティ426を通じて第2のコントローラボード406に結合されてもよい。1つの実装形態では、NVMブレード420は、PCIeプロトコルまたは任意の他の適切なプロトコルを使用してコントローラボード上のルーティングエンティティ(410および426)と通信する。1つの実施形態では、NVMブレードは、NVM記憶媒体を備える。他の実施形態では、記憶装置は、複数のNVMブレードを含んでもよく、かつコントローラボードは、複数のルーティングエンティティを含んでもよい。
一部の実施形態では、第1のコントローラボード404からのルーティングエンティティ410および第2のコントローラボード406からのルーティングエンティティ426は、相互に結合されてもよい。一部の実装形態では、2つのルーティングエンティティは、非PCIe準拠の透過ブリッジを使用して相互に結合されてもよい。1つの実装形態では、2つのルーティングエンティティ(410および426)は、フォールトトレランス情報、システム状態情報、トランザクションの完了情報およびコントローラボード相互の状態に関する情報を通信してもよい。
1つの実施形態では、図4からの記憶装置402は、アクティブ/アクティブ記憶システムを表してもよい。アクティブ/アクティブ構成によって、両方のコントローラボードに対する処理モジュールが、I/O読み出しを処理し、かつ相互のスタンバイ能力を提供することが可能になる。1つの単純化した例では、特定のブレードに対する読み出しまたは書き込みコマンドがコントローラボード404から機能しない場合、同一の読み出しまたは書き込みがコントローラボード406を通じて試みられてもよい。上述したように、ルーティングエンティティ410および426を通じてコントローラボード404および406の間で状態情報を通信するための通信プロトコルが実装されてもよい。両方のコントローラボードと関連付けられた処理モジュールが同時にI/Oを処理することができるため、性能を高めるためにアクティブ/アクティブ記憶装置を実装することが有利となることがある。しかしながら、図4からの記憶装置は、アクティブ/アクティブ記憶装置に限定されず、かつアクティブ/パッシブ構成で使用されてもよく、そこでは、1つのコントローラボードに対する処理モジュールは、I/O要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合にアクティブとなるべく、I/O動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
アクティブ/アクティブシステムの1つの実装形態では、1つ以上のコントローラボードは、マスタボードとしての役割を担ってもよく、かつ他の1つ以上のボードは、スレーブボードとしての役割を担ってもよい。マスタコントローラボードは、NVMブレードに対する全てのデータ書き込みを実行してもよく、マスタまたはスレーブボードのいずれかが読み出しを実行してもよい。
1つの例示的な実装形態では、スレーブコントローラボードに到達するI/O書き込み動作は、マスタコントローラボードによって部分的に実行されてもよい。例えば、書き込みコマンドまたは書き込みコマンドと関連付けられた情報は、スレーブコントローラボードからマスタコントローラボードに転送されてもよい。1つの実装形態では、書き込み動作と関連付けられた情報をスレーブコントローラボードからマスタコントローラボードに渡すために、NT PCIeブリッジが使用されてもよい。1つの実装形態では、スレーブコントローラボードに到達する書き込み動作に対するデータが、スレーブコントローラボードによってNVMブレードにいまだに提供されてもよい。
マスタおよびスレーブコントローラボードは、読み出しおよび書き込み動作をNVMブレードにマッピングするためのマッピングテーブルを維持してもよい。1つの実装形態では、読み出しおよび書き込みテーブルは、NVMブレードのうちの1つに記憶される。1つの実装形態では、読み出しおよび書き込みテーブルは、2つのコントローラボードによって共有されてもよい。さらに別の実装形態では、読み出しおよび書き込みテーブルは、コントローラボードによって別個に維持されてもよい。各コントローラボードがそれ自体のテーブルを有する例では、マスタコントローラボードは、マスタおよびスレーブコントローラボードに対するテーブルを更新してもよい。
スレーブコントローラボードが機能しない場合、マスタコントローラボードは、動作を処理し続ける。換言すると、マスタコントローラボードが機能しない場合、記憶装置は、スレーブコントローラボードにフェールオーバする。スレーブコントローラボードは、新たなマスタコントローラボードになってもよく、かつ全ての書き込み動作を処理することを開始してもよい。
読み出し動作が処理電力およびI/O要求を復号化する時間を必要とするため、上述したシステムによって、2つ以上のコントローラボード全体を通じて読み出しトランザクションに対する作業負荷を分散することが可能となることがある。
図5は、本発明の1つの実施形態に従った本発明の実施形態を実行するための方法を示すフローチャートである。方法500におけるシグナリングは、ハードウェア(回路、個別ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは個別マシン上で動作するものなど)、ファームウェア(組み込みソフトウェア)、またはそれらの任意の組み合わせを備える処理ロジックによって実行される。1つの実施形態では、方法500は、図13で説明されるような1つ以上のコンピュータシステム1300によって実行される。
図5のフローチャートは、I/O要求を処理する第1の処理エンティティ502および第2の処理504を示す。図5は2つの処理エンティティのみを示しているが、図5を参照して説明されるような本発明の実施形態を実行するために複数の処理エンティティが実装されてもよい。例えば、本発明の実施形態は、第3、第4、第5、または任意の数の処理エンティティを使用して、第1の処理エンティティまたは第2の処理エンティティによって実行される本発明の同様のステップを実行してもよい。さらに、図6における開始および終了インジケータの間で各処理エンティティに対して1つのI/O要求のみが示されているが、任意の数のI/O要求が実行されてもよい。
ステップ506において、複数のNVMブレードに結合された第1の処理エンティティは、ルーティングエンティティを介して第1のI/O要求を受信する。
ステップ508において、第1の処理エンティティは、第1のI/O要求が書き込みまたは読み出し要求であるかを判定する。ステップ508において、第1のI/O要求が読み出し要求であると判定される場合、ステップ510において、第1の処理エンティティは、複数のNVMブレードからのターゲットNVMブレード、およびターゲットNVMブレードにおける位置であって、そこからデータが読み出されることになるターゲットNVMブレードにおける位置を判定してもよい。1つの実装形態では、第1の処理エンティティは、第1の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、ターゲットNVMブレードおよびターゲットNVMブレードにおける位置を判定してもよい。
ステップ512において、第1の処理エンティティは、第1のI/O要求と関連付けられたデータを要求する。ステップ514において、第1の処理エンティティは、読み出しI/O要求に対しルーティングエンティティを介してデータを受信する。
ステップ508において、第1のI/O要求が書き込み要求であると判定される場合、ステップ516において、第1の処理エンティティは、複数のNVMブレードからのターゲットNVMブレード、およびそこにおいてデータが記憶されることになるターゲットNVMブレードにおける位置を判定してもよい。1つの実装形態では、第1の処理エンティティは、第1の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、ターゲットNVMブレードおよびターゲットNVMブレードにおける位置を判定してもよい。ステップ518において、第1の処理エンティティは、書き込みI/O要求に対しターゲットNVMブレードにデータを記憶するために、ルーティングエンティティを介してデータをターゲットNVMブレードに伝送する。
同様に、ステップ520において、第2の処理エンティティ504において、複数のNVMブレードに結合された第2の処理エンティティは、ルーティングエンティティを介して第2のI/O要求を受信してもよい。第2の処理エンティティ504は、第1の処理エンティティにおいて受信された第1のI/O要求の前/後、または同時に第2のI/O要求を受信してもよい。さらに、第1の処理エンティティ502および第2の処理エンティティ504は、相互に独立して図5で識別されたステップを実行してもよい。
ステップ522において、第2の処理エンティティは、第2のI/O要求が書き込みまたは読み出し要求であるかを判定する。ステップ522において、第2のI/O要求が読み出し要求であると判定される場合、ステップ524において、第2の処理エンティティは、複数のNVMブレードからのターゲットNVMブレード、およびターゲットNVMブレードにおける位置であって、そこからデータが読み出されることになるターゲットNVMブレードにおける位置を判定してもよい。1つの実装形態では、第2の処理エンティティは、第2の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、ターゲットNVMブレードおよびターゲットNVMブレードにおける位置を判定してもよい。ステップ526において、第2の処理エンティティは、第2のI/O要求と関連付けられたデータを要求する。ステップ528において、第2の処理エンティティは、読み出しI/O要求に対しルーティングエンティティを介してデータを受信する。
代わりに、ステップ522において、第2のI/O要求が書き込み要求であると判定される場合、ステップ530において、第2の処理エンティティは、複数のNVMブレードからのターゲットNVMブレード、およびそこにおいてデータが記憶されることになるターゲットNVMブレードにおける位置を判定してもよい。1つの実装形態では、第2の処理エンティティは、第2の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、ターゲットNVMブレードおよびターゲットNVMブレードにおける位置を判定してもよい。ステップ532において、第2の処理エンティティは、書き込みI/O要求に対しターゲットNVMブレードにデータを記憶するために、ルーティングエンティティを介してデータをターゲットNVMブレードに伝送する。
上述したように、第1の処理エンティティ502と同様に、第2の処理エンティティ504は、I/O要求を処理してもよい。一部の実施形態では、第1の処理エンティティおよび第2の処理エンティティは、任意の順序で相互にI/O要求を処理してもよく、また、同時にI/O要求を処理してもよい。さらに、第1の処理エンティティおよび第2の処理エンティティは、複数のNVMブレードのうちの1つをターゲットとするトランザクションを同時に処理してもよい。
図4に戻って参照すると、システムにおける2つの処理エンティティの例は、図4に示された処理エンティティのうちのいずれかによって示されてもよい。例えば、2つの処理エンティティは、同一のコントローラボード404上の412および414であってもよく、または異なるコントローラボード上に存在する処理エンティティ412および処理エンティティ428であってもよい。
図5を参照して論じられる1つ以上の構成要素間での通信は、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。より高速な処理を可能にし、ボトルネックを回避し、かつより良好な放熱を促進するために、I/O要求によって、同一のNVMブレードに対するメモリ動作がもたらされる場合でさえ、図5の方法は、複数の処理エンティティ間でI/O要求を拡散するのに有利となることがある。
図5で示される特定のステップが、本発明の実施形態に従って、動作のモード間で切り替える特定の方法を提供することを理解するべきである。他の一連のステップがまた、代替的な実施形態に従って実行されてもよい。例えば、本発明の代替的な実施形態は、異なる順序で上記に示されたステップを実行してもよい。例示のために、ユーザは、動作の第3のモードから動作の第1のモードに、第4のモードから第2のモードに、またはそれらの間の任意の組み合わせで変更することを選択してもよい。さらに、図5に示される個々のステップは、個々のステップに応じて種々の順序で実行することができる複数のサブステップを含んでもよい。さらに、特定の応用例に応じて追加ステップが追加または削除されてもよい。当業者は、方法500の多くの変形形態、修正形態、および代替形態を認識かつ理解するであろう。
図6は、本発明の1つの実施形態に従った本発明の実施形態を実行する別の方法を示すフローチャートである。方法600におけるシグナリングは、ハードウェア(回路、個別ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは個別マシン上で動作するものなど)、ファームウェア(組み込みソフトウェア)、またはそれらの任意の組み合わせを備える処理ロジックによって実行される。1つの実施形態では、方法600は、図13で説明されるような1つ以上のコンピュータシステム1300によって実行される。
図6のフローチャートは、I/O要求を処理する第1の処理エンティティ602および第2の処理604を示す。図6は2つの処理エンティティのみを示しているが、図6を参照して説明されるような本発明の実施形態を実行するために複数の処理エンティティが実装されてもよい。例えば、本発明の実施形態は、第3、第4、第5、または任意の数の処理エンティティを使用して、第1の処理エンティティまたは第2の処理エンティティによって実行される本発明の同様のステップを実行してもよい。さらに、図6における開始および終了インジケータの間で各処理エンティティに対して1つのI/O要求のみが示されているが、任意の数のI/O要求が実行されてもよい。図6は、図5で説明された実施形態の1つの実装形態を説明する。
ステップ606において、複数のNVMブレードに結合された第1の処理エンティティは、第1のルーティングエンティティを介して第1のI/O要求を受信する。
ステップ608において、第1の処理エンティティは、第1のI/O要求が書き込みまたは読み出し要求であるかを判定する。ステップ608において、第1のI/O要求が読み出し要求であると判定される場合、ステップ610において、第1の処理エンティティは、読み出し要求が、複数のNVMブレードからの第1のルーティングエンティティに結合された第1のNVMブレードの第1の位置からのデータに対する読み出しであると判定してもよい。1つの実装形態では、第1の処理エンティティは、第1の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、第1のNVMブレードおよび第1のNVMブレードにおける第1の位置を判定してもよい。
ステップ612において、第1の処理エンティティは、第1のルーティングエンティティを介して第1のI/O要求と関連付けられたデータを要求する。ステップ614において、第1の処理エンティティは、第1のルーティングエンティティを介してデータを受信し、かつ読み出しI/O要求を完了する。
ステップ608において、第1のI/O要求が書き込み要求であると判定される場合、ステップ616において、第1の処理エンティティは、複数のNVMブレードから第1のNVMブレード、およびそこにおいてデータが記憶されることになる第1のNVMブレードにおける第1の位置を判定してもよい。1つの実装形態では、第1の処理エンティティは、第1の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、第1のNVMブレードおよび第1のNVMブレードにおける第1の位置を判定してもよい。ステップ618において、第1の処理エンティティは、第1のNVMブレード上の第1の位置にデータを記憶するために第1のルーティングエンティティを介してデータを第1のNVMブレードに伝送する。
同様に、ステップ620において、第2の処理エンティティ604において、複数のNVMブレードに結合された第2の処理エンティティは、第1のルーティングエンティティを介して第2のI/O要求を受信してもよい。第2の処理エンティティ604は、第1の処理エンティティにおいて受信された第1のI/O要求の前/後、または同時に第2のI/O要求を受信してもよい。
ステップ622において、第2の処理エンティティは、第2のI/O要求が書き込みまたは読み出し要求であるかを判定する。ステップ622において、第2のI/O要求が読み出し要求であると判定される場合、ステップ624において、第2の処理エンティティは、読み出し要求が、複数のNVMブレードからの第1のルーティングエンティティに結合された第1のNVMブレードの第1の位置からのデータに対する読み出しであると判定してもよい。1つの実装形態では、第2の処理エンティティは、第2の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、第1のNVMブレードおよび第1のNVMブレード上の第1の位置を判定してもよい。ステップ626において、第2の処理エンティティは、第1のルーティングエンティティを介して、第2のI/O要求と関連付けられたデータを要求する。ステップ628において、第2の処理エンティティは、第1のルーティングエンティティを介してデータを受信し、かつ読み出しI/O要求を完了する。
代わりに、ステップ622において、第2のI/O要求が書き込み要求であると判定される場合、ステップ630において、第2の処理エンティティは、書き込み要求が、複数のNVMブレードからの第1のルーティングエンティティに結合された第1のNVMブレード上の第1の位置にデータを記憶するための要求である場合があると判定してもよい。1つの実装形態では、第1の処理エンティティは、第2の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、1つ以上のアドレス変換を実行することによって、第1のNVMブレードおよび第1のNVMブレード上の第1の位置を判定してもよい。ステップ632において、第2の処理エンティティは、書き込みI/O要求に対しターゲットNVMにデータを記憶するために、第1のルーティングエンティティを介してデータをターゲットNVMブレードに伝送する。
上述したように、第1の処理エンティティ602と同様に、第2の処理エンティティ604は、I/O要求を処理してもよい。一部の実施形態では、第1の処理エンティティおよび第2の処理エンティティは、任意の順序で相互にI/O要求を処理してもよく、また、同時にI/O要求を処理してもよい。さらに、第1の処理エンティティおよび第2の処理エンティティは、複数のNVMブレードのうちの1つをターゲットとするトランザクションを同時に処理してもよい。
図4に戻って参照すると、同一のコントローラボード上に存在し、かつ同一のルーティングエンティティを通じて同一のNVMブレードにアクセスする2つの処理エンティティの例は、同一のコントローラボード404上に存在する処理エンティティ412および414によって示されてもよい。図6に示されたステップによって、同一のコントローラボード上に存在する2つの処理エンティティが、同一のNVMブレードまたはさらに、NVMブレード上の同一の位置をターゲットとするI/O要求を同時に処理およびサービスすることが可能になる。図6で説明されるように、I/O要求が別個の処理エンティティにおいて復号化および処理されるが、それらは、NVMブレードにアクセスするために同一のルーティングエンティティを使用してもよく、従ってハードウェアの複製を回避することによってコストを節約する。
図6を参照して論じられる1つ以上の構成要素間での通信は、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。より高速な処理を可能にし、ボトルネックを回避し、かつより良好な放熱を促進するために、I/O要求によって、同一のNVMブレードに対するメモリ動作がもたらされる場合でさえ、図6の方法は、複数の処理エンティティ間でI/O要求を拡散するのに有利となることがある。
図6で示される特定のステップが、本発明の実施形態に従って、動作のモード間で切り替える特定の方法を提供することを理解するべきである。他の一連のステップがまた、代替的な実施形態に従って実行されてもよい。例えば、本発明の代替的な実施形態は、異なる順序で上記に示されたステップを実行してもよい。例示のために、ユーザは、動作の第3のモードから動作の第1のモードに、第4のモードから第2のモードに、またはそれらの間の任意の組み合わせで変更することを選択してもよい。さらに、図6に示される個々のステップは、個々のステップに応じて種々の順序で実行することができる複数のサブステップを含んでもよい。さらに、特定の応用例に応じて追加ステップが追加または削除されてもよい。当業者は、方法600の多くの変形形態、修正形態、および代替形態を認識かつ理解するであろう。
図7は、本発明の1つの実施形態に従ったコントローラボードの例示的なブロック図を示す。1つの実施形態では、コントローラボード702は、図1のコントローラボード104または106を表してもよい。図7に示されるように、コントローラボードは、2つのプロセッサ(704および708)、4つのルータ(712、714、716、718)、ならびに4つのインタフェースチップ(720、722、724および726)を有する。プロセッサ0(704)は、そのローカルメモリ706a〜dへのアクセスを制御するためのメモリコントローラを有してもよい。同様に、プロセッサ1(708)はまた、そのローカルメモリ710a〜dへのアクセスを制御するためのメモリコントローラを有してもよい。1つの実施形態では、インタフェースチップおよびルータは、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して相互に通信してもよい。PCIeはまた、プロセッサとルータとの間での通信のためにルーティングプロトコルとして使用されてもよい。インタフェースチップにおけるI/O要求は、Gigabitイーサネット、ファイバーチャネル、ダイヤルインまたはさらにPCIeプロトコルなどの任意のプロトコルを使用して受信されてもよい。
図7に示されるように、1つの実施形態では、各インタフェースチップは、ルータを通じてプロセッサ(704および708)のうちのいずれかにデータを通信することができる。各インタフェースチップは、PCIeプロトコルまたは任意の他の適切なプロトコルを通じて少なくとも1つのルータに結合されてもよい。I/O要求は、インタフェースチップのうちの1つに到達してもよい。インタフェースチップは、PCIeプロトコルを使用してI/O要求をルータに転送してもよい。各ルータは、コントローラボード702上の両方のプロセッサに接続される。ルータは、I/O要求を受信し、かつさらなる処理のためにI/O要求を転送するためのプロセッサを判定する。プロセッサがI/O要求を復号化し、かつNVM記憶媒体にデータを記憶し、またはNVM記憶媒体からデータを取り出すための動作を確認したら、プロセッサはメモリ動作コマンドをルータのうちの1つに送信する。各ルータは、NVMブレードを通じてNVM記憶媒体のサブセットに結合される。例えば、図7では、各ルータは、NVMブレードの総数の約4分の1に接続する。NVM記憶媒体要求をルータに送信する判定は、NVM記憶アドレス空間内での記憶/アクセス要求のアドレスに基づいてもよい。例えば、プロセッサ704が、I/O要求によってルータR2(716)に結合されたNVMブレードへの記憶がもたらされると判定する場合、プロセッサは、PCIeプロトコルを使用して要求をルータR2(716)に転送してもよい。ルータR2(716)は、記憶のために記憶要求をそれぞれのNVMブレードに転送する。
ある実施形態では、図7を参照して説明された構成は、種々の電子構成要素と関連付けられた負荷を低減させ、NVM記憶媒体への動作のスループットを増大させ、かつ記憶装置内の種々の構成要素からの熱を消散させるのに有利となることがある。
従来のPCIeシステムでは、中央処理装置は、システム全体に対するルートコンプレックスを含んでもよい。PCIeルートコンプレックスは、プロセッサに結合された全てのエンドポイントデバイスを列挙し、かつツリー状構造を生成する。エンドポイントにおいて発行される全ての要求は、PCIeルートコンプレックスに結合された1つ以上のプロセッサによって処理される。インタフェースチップなどのエンドポイントから発行される大多数の要求を有する記憶装置では、ルートコンプレックスおよびプロセッサは、システムにおけるトランザクションの処理に対するボトルネックになる。1つの実装形態では、I/O要求を高速に処理し、かつボトルネックを軽減するために、より強力なプロセッサが使用されてもよい。このアプローチは、一時的にボトルネックを軽減するが、プロセッサと関連付けられた電力負荷を増大させることがある。さらに、プロセッサはまた、プロセッサによって処理されるI/O要求の数が増加することにより、コントローラボード上の小規模エリアにわたってさらなる熱を生じさせることがある。1つのプロセッサまたは密接にクラスタ化されたプロセッサにおける熱の増大によって、許容可能なレベルで、記憶装置全体としてより厳密な熱環境を維持することが困難となることがある。加えて、電力負荷および熱は、構成要素のレベルおよびデバイスのレベルの両方で、さらなる障害を生じさせることがある。
本発明の実施形態は、複数の処理エンティティへのコントローラボードにわたってNVM記憶にアクセスするための処理およびルーティング機能を拡散することを提案する。1つの実施形態では、複数の処理エンティティは、I/O要求を処理するために、コントローラボードにわたって拡散されてもよい。1つの実装形態では、処理エンティティのうちの1つは、PCIeルートコンプレックスの役割を果たしてもよく、かつ第2の処理エンティティは、エンドポイントの役割を果たしてもよい。例えば、図7では、プロセッサ0(707)は、PCIeルートコンプレックスとして構成されてもよく、かつプロセッサ1(708)は、エンドポイントとして構成されてもよい。1つの実装形態では、プロセッサ1(708)に対するメモリ空間は、ルータ(ルータ0(712)、ルータ2(714)、ルータ3(716)およびルータ4(718))ごとに4回、エンドポイントとして列挙されてもよい。I/O要求に対する受信ルータが、I/O要求に対する適切なマッピングを有しない例では、ルータは、マッピングを判定するために、PCIeルートコンプレックスとして構成された処理エンティティにI/O要求を転送してもよい。また、インタフェースチップは、構成の都度、ルーティング情報で構成されてもよい。
ルーティングがインタフェースチップおよびルータにおいて既に確立されている例では、インタフェースチップに到達し、かつルータに転送されたI/O要求は、処理機能を拡散する処理エンティティ(704および708)のいずれかに送信されてもよい。処理に加えて、説明されたアーキテクチャはまた、リンクの接続性を拡散してもよい。例えば、I/O要求を受信することと、それらのI/O要求をルータに転送することとを同時に行うために、複数のインタフェースチップが実装されてもよい。さらに、NVMブレードがルータ間で分散されてもよく、複数のルータ間で分散されることになるNVMブレードへのアクセスを可能にし、バスまたはルーティングバックログを回避する。図7で説明されたようなそのような構成はまた、同時に複数のブレードにアクセスすることを可能にし、異なるルータを通じてアクセス可能なNVMブレードにアクセスするときの読み出しおよび書き込み性能を飛躍的に改善するのに有利となることがある。代替的な実装形態では、本発明の実施形態は、コントローラボードにわたってNVM記憶にアクセスするための処理およびルーティング機能を拡散するためのそれら自体のルートコンプレックスを各々が有する、複数の処理エンティティを提案する。各エンドポイント(すなわち、ルータ)は、2つ以上のルートコンプレックスに接続されてもよい。従って、インタフェースチップに到達し、かつルータに転送されるI/O要求を、処理機能を分散する処理エンティティ(704および708)のいずれかに送信することができる。処理に加え、説明されたアーキテクチャはまた、リンクの接続性を拡散してもよい。例えば、I/O要求を受信することと、それらのI/O要求をルータに転送することとを同時に行うために、複数のインタフェースチップが実装されてもよい。さらに、NVMブレードがルータ間で分散されてもよく、複数のルータ間で分散されることになるNVMブレードへのアクセスを可能にし、バスまたはルーティングバックログを回避する。各プロセッサがコントローラボード上の全てのルータに接続するため、各プロセッサは、任意のNVM記憶アドレスを個々にアドレス指定することができる。図7で説明されたようなそのような構成はまた、同時に複数のブレードにアクセスすることを可能にし、異なるルータを通じてアクセス可能なNVMブレードにアクセスするときの読み出しおよび書き込み性能を飛躍的に改善するのに有利となることがある。
プロセッサ0(704)は、ブートROM728から起動してもよく、かつプロセッサ1(708)は、ブートROM734から起動してもよい。1つの実施形態では、プロセッサ704上で実行されるブートROMのイメージは、記憶ファイルシステムスタックに対する初期化情報を含んでもよい。1つの実装形態では、記憶ファイルシステムオペレーティングシステム(OS)がオンボードNVMからロードされてもよい。別の実装形態では、記憶ファイルシステムOSは、NVMブレードのうちの1つからロードされてもよい。1つの実装形態では、プロセッサ0(704)およびプロセッサ1(708)上で実行するOSに対するイメージは異なってもよい。ファイルシステムOSは、I/O要求をハードウェア読み出しおよび書き込みに変換することに関与してもよい。
ある実施形態では、オンボードNVM736は、ポインタ、更新された動作、キャッシュバックアップ、および読み出し/書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。一部の実施形態では、バイト書き込み可能な磁気RAM(MRAM)などのNVMは、オンボードNVMを実装するために使用されてもよい。コントローラボードはまた、プロセッサ704およびプロセッサ708に接続されたデバッグポート740を有してもよい。デバッグポートは、USB、PCIe、Gibabitイーサネットなどの、1つ以上の個別インタフェースをサポートすることができる。
図8は、本発明の少なくとも1つの実施形態に従った、コントローラボード上の各構成要素によって可視的な種々の構成要素に対するアドレス空間の例示的なブロック図を示す。1つの実施形態では、アドレス空間は、PCIeアドレス空間として定義されてもよい。
P0 810は、図7のプロセッサ0(704)からのPCIeアドレス空間の表示を表す。P1 830は、図7のプロセッサ1(708)から可視的なPCIeアドレス空間の表示を表す。R0 850、R1 860、R2 870、およびR3 880は、ルータ0(712)、ルータ1(714)、ルータ2(716)、およびルータ3(718)からのPCIeアドレス空間をそれぞれ表す。1つの実施形態では、プロセッサ0(704)などのPCIeルートコンプレックスは、全てのエンドポイントを発見し、かつエンドポイントごとにPCIeアドレス空間を構成してもよい。
一部の実施形態では、コントローラボードの構成要素のうちのいずれか1つから可視的な種々のPCIeの範囲のうちのいずれか1つにアクセスすることによって、別のPCIeアドレス範囲へのアクセスとは異なるタイプの応答がもたらされてもよい。例えば、本発明の1つの実施形態に従って、プロセッサからPCIeアドレス空間の1つの範囲にアクセスすることによって、ルータのうちの1つに対する構成変更がもたらされてもよい。別の例では、PCIeアドレス空間の別の範囲にアクセスすることによって、ルータのうちの1つに結合されたNVMブレードのうちの1つへの読み出し/書き込みアクセスがもたらされてもよい。PCIeアドレス空間へのいくつかのアクセスはまた、プロセッサに対するローカルメモリ、またはコントローラボード上の隣接するプロセッサのうちの1つに対するメモリにマッピングされてもよい。さらなる別の例では、PCIeアドレス空間へのいくつかのアクセスによって、非透過的(NT)PCIeブリッジを通じて、隣接するコントローラボード上の構成要素からの/への読み出し/書き込みがもたらされてもよい。
PCIeアドレス空間を通じて、いくつかのエンティティは、コントローラボード上の他のエンティティのアドレス空間への少なくとも部分的なアクセスを有する。例えば、P0 810では、プロセッサP0 704は、それ自体のメモリへのアクセス、プロセッサP1 708のメモリおよびルータのアドレス空間の各々へのアクセスを有する。1つの実施形態では、NVMブレードは、NVMブレードの4つの別個のグループにグループ化され、NVMブレードの各グループは、ルータのうちの1つに結合されてもよい。NVMブレードの特定のグループに属するNVMブレードのうちのいずれか1つは、NVMブレードのグループが結合することができるルータを通じてアクセス可能である。
図8では、P0 810に対するPCIeアドレス空間から、B−G0 808は、ルータR0 712を通じてアクセス可能なNVMブレードの第1のグループに対するアドレス空間を表す。ルータR0 712は、NVMブレードの第1のグループに結合されてもよく、また、ホストバスアダプタ0(HBA)806によって指定されるアドレス空間を通じてプロセッサP0 704から構成可能であってもよい。同様に、プロセッサP0(704)は、アドレス空間B−G1 814を通じてNVMブレードの第2のグループに、およびHBA1 812を通じて第2のルータR1 714に、アドレス空間B−G2 818を通じてNVMブレードの第3のグループに、およびHBA2 816を通じて第3のルータR2 716に、かつアドレス空間B−G3 822を通じてNVMブレードの第4のグループに、およびHBA3 820を通じて第4のルータR3 718にアクセスしてもよい。一部の実装形態では、アドレス空間824の区画が予約されてもよい。ある実施形態では、MRAM828などのオンボードNVMは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し/書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。さらに、プロセッサP0(704)は、PCIeアドレス空間DRAM(P0)802を通じてそれ自体のローカルメモリ706a〜dに、かつPCIeアドレスDRAM(Pl)804を通じて隣接するプロセッサP1 708のメモリにアクセスしてもよい。一部の実施形態では、プロセッサP0(704)はまた、NTポート826を通じて隣接するコントローラボードの構成要素にメッセージを送信してもよい。
P0 810と同様に、構成要素の各々からのPCIeアドレス空間の表示は、PCIeアドレス空間を使用して、相互に対話するための能力をそれぞれの構成要素に提供することができる。例えば、プロセッサP1(708)はまた、そのPCIeアドレス空間P1 830を通じて、ルータ(HBA0 840、HBA1 838、HBA2 836、およびHBA3 833)の各々に、NVMブレード(B−G0 841、B−G1 839、B−G2 837およびB−G3 834)の関連するグループに、DRAM(P1)831に対するPCIeアドレス空間を通じて、それ自体のローカルメモリ710a〜dに、隣接するプロセッサP0(704)DRAM(P0)832、MRAM842、およびNTポート838に対するメモリにアクセスすることができる。
ルータはまた、PCIeアドレス空間の同様であるが、さらに制限された表示を有してもよい。例えば、ルータR0 712は、システムのPCIeアドレス空間表示R0 850を有してもよい。ルータR0は、DRAM(P0)851およびDRAM(P1)853を通じてプロセッサP0(704)、プロセッサP1(708)とそれぞれ通信することが可能である。ある実施形態では、MRAM854などのオンボードNVMは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し/書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。コントローラボード上の他の構成要素によるPCIeアドレス空間HBA0 858へのアクセスは、ルータR0 712へのコマンドと解釈されてもよい。B−G0 856へのアクセスは、ルータR0 712に結合されたNVMブレードへの読み出しおよび書き込み要求と解釈されてもよい。図7に示されるように、それらの構成要素間での直接結合が存在しないため、ルータR0 712は、他のルータまたはNVMブレードに対して予約されたPCIeアドレス空間を有しなくてもよい。ルータR3 718はまた、HBA3 886および B−G3 887を通じて、プロセッサP0(704)のDRAM(P0)881、プロセッサP1 708のDRAM(P1)883、MRAN885、それ自体の構成空間、およびルータに結合されたNVMブレードそれぞれへのアクセスを有する。
ルータR1 714およびR2 716はまた、DRAM(P0)(861、871)およびDRAM(P1)(863、873)を通じてプロセッサP0(704)およびP1(708)それぞれへのアクセスを有する。HBA1 866およびHBA2 877、ならびにそれらの関連するNVMブレードB−G1 867およびB−G2 878を通じてルータR1 714およびR2 716に対する構成空間にアクセスすることができる。加えて、ルータR1 714およびR2 716は、NTポート865および875それぞれを通じて隣接するコントローラボード上のルータにメッセージを送信することが可能である。
一部の実装形態では、構成要素ごとのPCIeアドレス空間内の一部のアドレス範囲(843、852、857、862、864、868、872、874、876、879、882、884および888)は、後の使用のために未使用かつ予約されていてもよい。
先に論じられたように、図8に示されるPCIeアドレス空間構成は、例示のためのものであり、かつアドレス空間の他の実装形態に限定されない。
図9は、本発明の1つの実施形態に従った記憶装置の別の例示的な高レベルブロック図である。ブロック902は、2つのコントローラ(904および906)と、コントローラに結合されたNVMブレード(920a〜n)の配列とを有する記憶装置を示す。1つの実施形態では、ブリッジ908を使用した読み出しおよび書き込みトランザクションのために、コントローラ904および906は、コントローラ904および906の間で状態情報を通信するために通信プロトコルを使用して一緒に結合されてもよい。
1つの実装形態では、第1のコントローラ904および第2のコントローラ906は、I/O要求を処理するための1つ以上のプロセッサ、コントローラと複数のNVMブレードとの間でのルーティング動作のための1つ以上のルータ、ならびに1つ以上のインタフェーシングチップを備えたプリント回路基板(PCBs)である。そのようなコントローラボードの例は、図1〜8で先に論じられている。別の実装形態では、複数の個別構成要素の機能は、ASIC、FGPA、MCMまたは任意の他の適切な解決策として実装されるコントローラによって実行されてもよい。1つの実装形態では、第1のコントローラ904および第2のコントローラ906は、各々が処理ロジックおよびルーティングロジックを備えたASICとして実装されてもよい。1つの実装形態では、コントローラはまた、インタフェーシングロジックを含んでもよい。別の実装形態では、図9に示されるように、I/O要求を受信し、かつそれに応答するために、第1のコントローラ904は、ホストインタフェース916に結合されてもよく、かつ第2のコントローラ906は、別のホストインタフェース918に結合されてもよい。
ある実施形態では、図9からの記憶装置は、アクティブ/アクティブ記憶装置を表してもよい。アクティブ/アクティブ構成によって、コントローラに対する処理ロジックが、I/Oを処理し、かつもう一方に対してスタンバイ能力を提供することが可能になる。両方のコントローラと関連付けられた処理ロジックが、同時、またはほぼ同時にI/Oを処理することができるため、性能を高めるためにアクティブ/アクティブ記憶装置を実装することが有利となることがある。しかしながら、図9からの記憶装置は、アクティブ/アクティブ記憶装置に限定されず、かつアクティブ/パッシブ構成で使用されてもよく、そこでは、1つのコントローラに対する処理ロジックは、I/O要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合に、アクティブとなるべく、I/O動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
1つの実装形態では、図9に示されるアクティブ/アクティブシステムでは、第1のコントローラ904は、アクティブモードで動作し、かつNVM記憶媒体にデータを記憶し、およびNVM記憶媒体からデータを取り出すためのI/O要求を受信するように構成されてもよい。同様に、第2のコントローラ906はまた、アクティブモードで動作し、かつNVM記憶媒体にデータを記憶し、およびNVM記憶媒体からデータを取り出すためのI/O要求を受信するように構成されてもよい。図9は、2つのコントローラのみを示しているが、複数のコントローラがアクティブモードで動作してもよい。
加えて、記憶装置は、NVM記憶媒体を備えた複数のNVMブレード920a〜nを含んでもよい。1つの実装形態では、各NVMブレードは、両方のコントローラ(904および906)に結合されてもよく、NVM記憶媒体の各々の物理アドレスがコントローラのいずれかによってアクセス可能となることがある。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および/もしくはRAIDなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。各NVMブレードは、第1のコントローラ904と通信するための第1のルーティングインタフェースおよび第2のコントローラ906と通信するための第2のルーティングインタフェースを含んでもよい。1つの実装形態では、PCIeプロトコルまたは任意の他の適切なプロトコルを使用して、第1のルーティングインタフェースは、第1のコントローラと通信し、かつ第2のルーティングインタフェースは、第2のコントローラと通信する。
アクティブ/アクティブシステムの1つの実装形態では、1つ以上のコントローラは、マスタコントローラとしての役割を担ってもよく、かつ他の1つ以上のコントローラは、スレーブコントローラの役割を担ってもよい。1つの実装形態では、マスタコントローラは、NVMブレードへの全てのデータの書き込みを実行または開始してもよく、マスタまたはスレーブボードのいずれかは、読み出しを実行してもよい。
概して、記憶装置は、記憶媒体への記憶または書き込み動作よりもさらなる多くの読み出し動作をサービスしてもよい。また、概して、読み出し動作は、記憶または書き込み動作よりもより高速に完了することができる。その結果として、読み出し動作をサービスすることができる速度は、コントローラの処理ロジックによってI/O要求を復号化かつ処理することができる速度によって制約されることがある。従って、I/O読み出し動作の処理および復号化のためにアクティブ/アクティブシステムにおいて2つ以上のコントローラ間でI/O読み出し動作を負荷分散することが有利となることがある。従って、マスタおよびスレーブコントローラの両方は、I/O読み出し動作を処理することができる。従って、図9では、第1のコントローラ904および第2のコントローラ906の両方は、NVM記憶媒体からの読み出し動作および要求データのために同時、またはほぼ同時にI/O要求を復号化するように構成されてもよい。
1つの例示的な実装形態では、スレーブコントローラボードに到達する書き込み動作は、マスタコントローラによって部分的に実行されてもよい。例えば、書き込みコマンド、または書き込みコマンドと関連付けられた情報は、スレーブコントローラからマスタコントローラに転送されてもよい。1つの実装形態では、ブリッジ908(例えば、PCIe NTブリッジ)は、書き込み動作と関連付けられた情報をスレーブコントローラからマスタコントローラに渡すために使用されてもよい。1つの実装形態では、スレーブコントローラに到達する書き込み動作に対するデータは、スレーブコントローラによってNVMブレードに引き続き提供されてもよい。
例示を目的に、所与の時点で、第1のコントローラ904は、マスタコントローラであってもよく、かつ第2のコントローラ906は、スレーブコントローラであってもよい。1つの例では、I/O要求は、マスタコントローラとして動作していることがある第1のコントローラ904に到達してもよい。第1のコントローラ904は、I/O要求が、I/O要求と関連付けられたデータをNVM記憶媒体に記憶するための書き込み動作であると判定してもよい。マスタコントローラは、I/O要求を処理し、書き込みコマンドをNVMブレードに発送し、かつデータを記憶するためにコマンドおよびデータをNVMブレードに伝送してもよい。
別の例では、I/O要求は、スレーブコントローラとして動作していることがある第2のコントローラ906に到達してもよい。第2のコントローラ906は、I/O要求が、I/O要求と関連付けられたデータをNVM記憶媒体に記憶するための書き込み動作であると判定してもよい。第2のコントローラ906は、マスタコントローラとして動作していることがある第1のコントローラ904に第2のI/O要求と関連付けられたコマンド情報を伝送してもよい。マスタ/第1のコントローラ904は、第2のコントローラ906から伝送されたコマンド情報を受信し、データを記憶することができるNVMブレードを判定し、かつ書き込みコマンドをNVMブレードに伝送してもよい。書き込みコマンドは、マスタコントローラによって伝送されてもよいが、スレーブコントローラとして動作する第2のコントローラ906は、I/O要求と関連付けられたデータをNVMブレードに伝送してもよい。マスタからの全ての書き込み動作を管理することは、システムにおける書き込みの一貫性を維持することの補助となることがある。一方で、スレーブコントローラにおいて受信されたI/O書き込み要求のためにスレーブコントローラからNVMブレードにデータを転送することは、第1のコントローラ904と第2のコントローラ906との間でデータを転送するために、2つの間のブリッジ908(例えば、NT PCIeブリッジ)の帯域幅が著しく増加することを回避する。
マスタおよびスレーブコントローラは、読み出しおよび書き込み動作をNVMブレードにマッピングするためのマッピングテーブルを維持してもよい。1つの実装形態では、読み出しおよび書き込みテーブルは、NVMブレードのうちの1つに記憶される。1つの実装形態では、読み出しおよび書き込みテーブルは、2つのコントローラによって共有されてもよい。さらに別の実装形態では、読み出しおよび書き込みテーブルは、コントローラによって別個に維持されてもよい。各コントローラがそれ自体のテーブルを有する例では、マスタコントローラは、マスタおよびスレーブコントローラの両方に対してテーブルを更新してもよい。
スレーブコントローラが機能しない場合、マスタコントローラは、従来通りに動作を処理し続ける。一方で、マスタコントローラが機能しない場合、記憶装置は、スレーブコントローラにフェールオーバする。換言すると、スレーブコントローラは、新たなマスタコントローラになることができ、かつ書き込み動作を処理することを開始することができる。例えば、マスタコントローラとして動作する第1のコントローラ904が、復旧不可能な誤りに直面する場合、システムは、フェールオーバすることができ、かつ第2のコントローラ906がマスタコントローラになることができる。
一部の実装形態では、記憶装置はまた、複数の電力供給装置を含んでもよい。電力供給装置は概して、障害を起こしやすく、かつファンまたは他の電力構成要素の障害によって機能しないことがある。記憶装置に電力供給する複数の電力供給装置を有することは、電力供給装置のうちの1つの構成要素での障害による記憶装置の障害を回避することができる。1つの実装形態では、コントローラボードは、母線を通じて電力供給されてもよく、母線は、複数の電力供給装置から電力を供給してもよい。母線に接続された電力供給装置のうちの1つの障害の事象では、母線は、機能している電力供給装置から電力を供給し続ける。一部の実装形態では、機能していない電力供給装置は、適切に機能している電力供給装置とホットスワップ可能であってもよい(すなわち、記憶装置の電源を入れなおすことなく交換可能である)。図10は、本発明の1つの実施形態に従ったNVMブレードの例示的なブロック図を示す。一部の実施形態では、NVMブレード1002は、図4のNVMブレード420または図9からのNVMブレード920a〜nのうちの1つの、1つの実装形態を表してもよい。例示的なNVMブレード1002は、1つ以上のNVMチップ(1006および1008)ならびにブレードコントローラ1004を含んでもよい。NVMチップは、NVM記憶媒体を備えてもよい。NVMチップは、共有バス(912および1014)または専用バス(図示せず)を通じてブレードコントローラ1004に結合されてもよい。ブレードコントローラ1004は、NVMチップ上のデータにアクセス/記憶するためのコマンドを受信し、コマンドを処理し、NVMチップからのデータおよび他の構成コマンドを記憶または取り出すことに関与してもよい。図示されないが、NVMチップはまた、NVMブレードの反対側に存在してもよい。1つの実施形態では、ブレードコントローラ1004は、特定用途向け集積回路(ASIC)を使用して実装されてもよい。別の実施形態では、NVMブレードコントローラは、フィールドプログラマブルゲートアレイ(FPGA)を使用して実装されてもよい。
図11は、本発明の1つの実施形態に従ったブレードコントローラの例示的なブロック図を示す。1つの実装形態では、ブレードコントローラ1004は、コントローラ(またはコントローラボード)上でルーティングエンティティに接続するための2つ以上のPCIeインタフェース(1014および1116)を有してもよい。例えば、PCIeインタフェース1114は、第1のコントローラからルーティングエンティティ上のPCIeインタフェースのうちの1つに結合されてもよく、かつPCIeインタフェース1116は、第2のコントローラからルーティングエンティティ上のPCIeインタフェースのうちの1つに結合されてもよい。各PCIeインタフェースは、PCIeインタフェースが結合されたそれぞれのコントローラから到達するコマンドと関連付けられたコマンドキュー(1010および1112)を維持してもよい。1つの実施形態では、コントローラと関連付けられたデータに対するデータ経路は、別個に維持されてもよい。例えば、各コントローラと関連付けられたデータは、NVM記憶媒体にデータを記憶する前に、それに応じてブロック1106および1108において圧縮されてもよく、かつNVM記憶媒体からデータを取り出した後に解凍されてもよい。別個のデータ経路を維持することによって、データのより高いスループットが可能になり、かつデータ経路と関連付けられた誤りを減少させることが可能になる。1つの実施形態では、誤り訂正符号(ECC)を使用して、ブロック1106および1108において、誤り検出および/または訂正が実行されてもよい。例えば、データは、データをNVM記憶媒体に記憶する前に符号化および圧縮されてもよく、かつデータを取り出す時に、解凍および誤りに対して検査されてもよい。一部のシナリオで誤りが検出される場合、データは復旧可能となることがある。誤りが復旧不可能である場合、NVMブレードは、読み出し要求を破棄し、またはコントローラボードに対し誤り状態で応答してもよい。
コマンドマネージャ1104は、複数のPCIeインタフェースにおいてコマンドを調停する。コマンドマネージャ1104は、コマンドを復号化し、かつデータを記憶/アクセスするためにチップの配列から適切なNVM記憶媒体にアクセスする。一部の実施形態では、コマンドを調停することによって、コマンドマネージャ1104によって、任意の特定の期間において1つのアクティブコマンドのみがNVMインタフェース1102を通じてデータにアクセス/データを記憶することが可能となることがある。一部の実装形態では、PCIeインタフェース、コマンドキューおよびECC圧縮/解凍ロジックは、各コントローラボードとインタフェースするために別個に実装されてもよい。読み出し/書き込み経路、キューおよびロジックの間のそのような分離は、NVMブレードの第2のインタフェースに悪影響を及ぼすNVMブレードの1つのインタフェース上の障害を回避するのに有利となることがある。例えば、第1のコントローラボードからNVMインタフェース1102へのいずれかでの誤りによってコマンドキュー1110がバックアップを開始する場合、第2のコントローラボードからNVM記憶媒体への読み出し/書き込みデータ経路は、通常に機能し続けることができる。従って、NVM記憶媒体への記憶動作が1つの第1のコントローラボードから機能しない例では、そのような誤りを検出すると、不揮発性メモリ上の同一のメモリ位置への記憶動作を、第2のコントローラボードを使用して完了することができる。
図12は、本発明の1つの実施形態に従ったブレードコントローラの別の例示的なブロック図を示す。ブレードコントローラ1004のこの代替的な実施形態はまた、コントローラ上でルーティングロジックを接続するための2つ以上のPCIeインタフェース(1214および1216)と、PCIeインタフェースが結合されたそれぞれのコントローラから到達するコマンドと関連付けられたコマンドキュー(1210および1212)とを有してもよい。1つの実装形態では、コマンドキューは、バッファを使用して実装されてもよい。1つの実装形態では、コマンドキューは、コマンドキューバッファが予め定められた閾値を超えてフルになると、第1のコントローラからのコマンドを破棄するように構成されてもよい。
1つの実施形態では、統一されたデータ経路および統一されていないコマンド経路は、図12に示されるように実装されてもよい。一部の実施形態では、データ経路からのデータは、データがNVM記憶媒体に記憶される前にブロック1206において圧縮されてもよく、かつNVM記憶媒体から取り出した後に解凍されてもよい。1つの実施形態では、誤り検出および/または訂正は、誤り訂正符号(ECC)を使用してブロック1206において実行されてもよい。例えば、データは、NVM記憶媒体におけるデータが記憶される前に符号化および圧縮されてもよく、かつデータを取り出す時に解凍および誤りに対して検査されてもよい。一部のシナリオで誤りが検出される場合、データは復旧可能となることがある。誤りが復旧不可能である場合、NVMブレードは、読み出し要求を破棄し、またはコントローラに対し誤り状態で応答してもよい。
コマンドマネージャ1204は、複数のPCIeインタフェースからのコマンドを調停してもよい。コマンドマネージャ1204は、コマンドを復号化し、かつデータを記憶/アクセスするためにチップの配列から適切なNVM記憶媒体にアクセスする。コマンドを調停することによって、コマンドマネージャ1204によって、任意の特定の期間において、1つのアクティブコマンドのみがNVMインタフェース1202を通じてデータにアクセス/データを記憶することが可能となることがある。図12に示されるように、統一されたデータおよびコマンド経路によって、コストおよび設計の効率性がもたらされることがある。
上記図面には示されないが、1つの実装形態では、別個のコマンドおよび/またはデータキューは、NVMブレードに対するNVM記憶媒体を備えた複数のNVMチップからのNVMチップごとに維持されてもよい。さらに、コマンドおよび/またはデータキューの別個の組がコントローラごとに維持されてもよい。例えば、32個のNVMチップを有するNVMブレードの実装形態では、32個のコマンドおよび/またはデータキューは、第1のコントローラから発行される要求に対して維持されてもよく、かつ32個のコマンドおよび/またはデータキューは、第2のコントローラから発行される要求に対して維持されてもよい。そのような構成によって、複数の発行済みコマンドが、同一のNVMチップに対して動作がターゲットとされない限り、他のコマンドがNVMブレード上で開始、処理、および完了される間に開始、処理、および/または完了することが可能となることがある。コマンドマネージャ1004は、2つのコントローラから発行されるコマンドを調停してもよい。
垂直に統合されたアーキテクチャの複数の態様を説明したが、開示の種々の態様を実装することができるコンピューティングシステムの例を、図13に関してここで説明することができる。1つ以上の態様に従って、図13に示されるコンピュータシステムは、コンピューティングデバイスの一部として組み込まれてもよく、それは、本明細書で説明される機能、方法、および/または方法のステップのいずれかおよび/または全てを実装、実行および/または遂行することができる。例えば、コンピュータシステム1300は、デバイスおよび/またはアクセスポイント装置の構成要素の一部を表してもよい。デバイスは、RF受信機などの無線ユニットを有する任意のコンピューティングデバイスであってもよい。1つの実施形態では、システム1300は、本明細書で説明される方法のいずれかを実装するように構成される。図13は、本明細書で説明されるように、種々の他の実施形態によって提供される方法を実行することができ、かつ/またはホストコンピュータシステム、リモートキオスク/端末、ポイントオブセールデバイス、モバイルデバイス、セットトップボックス、および/もしくはコンピュータシステムとして機能することができる、コンピュータシステム1300の1つの実施形態の概略的な図を提供する。図13は、必要に応じて利用することができるもののいずれかおよび/または全ての種々の構成要素の一般化された図を単に提供することを意図する。従って、図13は、比較的別個の、または比較的より統合された形式で個々のシステム要素をどのように実装することができるかを広義に示す。
バス1305を介して電気的に結合することができる(または、必要に応じて通信することができる)ハードウェア要素を備えたコンピュータシステム1300が示される。ハードウェア要素は、それらに限定されることなく、1つ以上の汎用プロセッサおよび/または1つ以上の専用プロセッサ(デジタルシグナル処理チップおよび/またはグラフィック加速度プロセッサなど)を含む1つ以上のプロセッサ1310と、それらに限定されることなく、カメラ、マウス、および/またはキーボードなどを含むことができる1つ以上の入力デバイス1315と、それらに限定されることなく、ディスプレイユニットおよび/またはプリンタなどを含むことができる1つ以上の出力デバイス1320とを含んでもよい。コンピューティングデバイス1300はまた、システムの状態を監視するための温度センサ、電力センサなどのセンサを含んでもよい。
コンピュータシステム1300はさらに、それらに限定されることなく、ローカルおよび/もしくはネットワークアクセス可能な記憶装置を備えることができ、かつ/またはそれらに限定されることなく、プログラム可能であり、および/もしくはNVM更新可能などとすることができる、ディスクドライブ、ドライブアレイ、光学式記憶装置、ランダムアクセスメモリ(「RAM」)などのソリッドステート記憶装置および/もしくはリードオンリメモリ(「ROM」)を含むことができる、1つ以上の非一時的記憶装置1325を含んでもよい(かつ/またはそれらと通信してもよい)。そのような記憶装置は、それらに限定されることなく、種々のファイルシステムおよび/またはデータベース構造などを含む、任意の適切なデータ記憶を実装するように構成されてもよい。
コンピュータシステム1300はまた、それらに限定されることなく、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス、ならびに/または無線通信デバイスおよび/もしくはチップセット(Bluetooth(登録商標)デバイス、802.11デバイス、WiFiデバイス、WiMaxデバイス、セルラ通信設備など)を含むことができる、通信サブシステム1330を含んでもよい。通信サブシステム1330によって、ネットワーク(1つの例を挙げると、以下で説明されるネットワークなど)、他のコンピュータシステム、および/または本明細書で説明される任意の他のデバイスとデータが交換されることが可能となることがある。多くの実施形態では、コンピュータシステム1300はさらに、上述したように、RAMまたはROMデバイスを含むことができる、非一時的ワーキングメモリ1335を備えてもよい。コンピュータシステム1300はまた、通信サブシステム1330によって外部エンティティとの通信を容易にするための送受信機1350を含んでもよい。
コンピュータシステム1300はまた、オペレーティングシステム1340、デバイスドライバ、実行可能ライブラリ、ならびに/あるいは種々の実施形態によって提供されるコンピュータプログラムを備えることができ、および/または本明細書で説明されるように、他の実施形態によって提供される方法を実装し、かつ/もしくはシステムを構成するように設計することができる、1つ以上のアプリケーションプログラム1345などの他のコードを含む、ワーキングメモリ1335内に現在位置しているとして示される、ソフトウェア要素を備えることができる。単に例として、上記論じられた方法に関して説明された1つ以上の手順は、コンピュータ(および/またはコンピュータ内のプロセッサ)によって実行可能なコードおよび/または命令として実装されてもよく、1つの態様では、次いで、そのようなコードおよび/または命令は、説明された方法に従って1つ以上の動作を実行するために汎用コンピュータ(または他のデバイス)を構成および/または適合させるために使用されてもよい。
それらの命令および/またはコードの組は、上述した記憶装置1325などのコンピュータ可読記憶媒体に記憶されてもよい。一部のケースでは、記憶媒体は、コンピュータシステム1300などのコンピュータシステム内に組み込まれてもよい。他の実施形態では、記憶媒体は、コンピュータシステムとは別個であってもよく(例えば、コンパクトディスクなどの着脱可能媒体)、かつ/またはインストールパッケージで提供されてもよく、それによって、そこに記憶された命令/コードを有する汎用コンピュータをプログラム、構成および/または適合させるために記憶媒体を使用することができる。それらの命令は、コンピュータシステム1300によって実行可能な実行可能コードの形式をとってもよく、かつ/またはコンピュータシステム1300上でコンパイルおよび/もしくはインストールされると(例えば、種々の一般的に利用可能なコンパイラ、インストールプログラム、圧縮/解凍ユーティリティなどのいずれかを使用して)、実行可能コードの形式をとる、ソースおよび/もしくはインストール可能コードの形式をとってもよい。
相当な変形は、特定の要件に従ってなされてもよい。例えば、カスタマイズされたハードウェアがまた使用されてもよく、かつ/または特定の要素がハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、もしくはその両方で実装されてもよい。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が採用されてもよい。
一部の実施形態は、開示に従った方法を実行するためのコンピュータシステム(コンピュータシステム1300など)を採用してもよい。例えば、説明された方法の手順の一部または全ては、ワーキングメモリ1335に含まれる1つ以上の命令の1つ以上のシーケンス(オペレーティングシステム1340および/またはアプリケーションプログラム1345などの他のコードに組み込まれてもよい)をプロセッサ1310が実行したことに応答して、コンピュータシステム1300によって実行されてもよい。そのような命令は、記憶装置1325のうちの1つ以上などの、別のコンピュータ可読媒体からワーキングメモリ1335に読み出されてもよい。単に例として、ワーキングメモリ1335に含まれる命令シーケンスの実行によって、プロセッサ1310が、本明細書で説明される方法のうちの1つ以上の手順を実行することができる。
本明細書で使用されるような、用語「機械可読媒体」および「コンピュータ可読媒体」は、特定の形式で機械を動作させるデータを提供することに関与する任意の媒体を指す。コンピュータシステム1300を使用して実装される実施形態では、種々のコンピュータ可読媒体は、実行のためにプロセッサ1310に命令/コードを提供することに関与してもよく、かつ/またはそのような命令/コード(例えば、信号として)を記憶および/もしくは搬送するために使用されてもよい。多くの実装形態では、コンピュータ可読媒体は、物理および/または有形記憶媒体である。そのような媒体は、それらに限定されないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形式をとってもよい。不揮発性媒体は、例えば、記憶装置1325などの光学および/または磁気ディスクを含む。揮発性媒体は、それらに限定されないが、ワーキングメモリ1335などの動的メモリを含む。伝送媒体は、それらに限定されないが、通信サブシステム1330(および/またはそれによって通信サブシステム1330が他のデバイスに通信を提供する媒体)の種々の構成要素とともに、バス1305を備えるワイヤを含む、同軸ケーブル、銅線およびファイバー光学を含む。従って、伝送媒体はまた、波(それらに限定されることなく、無線波および赤外線通信の間に生成されるものなどの、無線、音響および/または光波を含む)の形式をとることができる。
一部の実施形態は、開示に従った方法を実行するためのコンピュータシステム(プロセッサ1310など)を採用してもよい。例えば、説明される方法の手順の一部または全ては、ワーキングメモリに含まれる1つ以上の命令の1つ以上のシーケンス(オペレーティングシステムおよび/またはアプリケーションプログラムなどの他のコード内に組み込むことができる)をプロセッサが実行したことに応答して、閲覧装置によって実行されてもよい。そのような命令は、記憶装置のうちの1つ以上などの別のコンピュータ可読媒体からワーキングメモリに読み出されてもよい。単に例として、ワーキングメモリに含まれる命令シーケンスの実行によって、プロセッサが、本明細書で説明される方法のうちの1つ以上の手順を実行することができる。
再度、本明細書で説明されるコンピュータシステムを採用する実施形態は、閲覧装置に物理的に接続されることに限定されない。処理は、閲覧装置に有線または無線で接続された別の装置で行われてもよい。例えば、電話におけるプロセッサまたは電話もしくはタブレットによってコマンドを実行するための命令は、それらの説明に含まれてもよい。同様に、リモート位置にあるネットワークは、プロセッサを収容してもよく、かつ閲覧装置にデータを送信してもよい。
本明細書で使用されるような、用語「機械可読媒体」および「コンピュータ可読媒体」は、特定の形式で機械を動作させるデータを提供することに関与する任意の媒体を指す。プロセッサ1310を使用して実装される実施形態では、種々のコンピュータ可読媒体は、実行のためにプロセッサ1310に命令/コードを提供することに関与してもよく、かつ/またはそのような命令/コード(例えば、信号として)を記憶および/もしくは搬送するために使用されてもよい。多くの実装形態では、コンピュータ可読媒体は、物理および/または有形記憶媒体である。そのような媒体は、それらに限定されることなく、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形式をとってもよい。不揮発性媒体は、例えば、光学および/または磁気ディスクを含む。揮発性媒体は、それらに限定されることなく、NVMメモリまたはDDR3 RAMなどの動的メモリを含む。伝送媒体は、それらに限定されることなく、通信サブシステム(および/またはそれによって通信サブシステムが他のデバイスに通信を提供する媒体)の種々の構成要素とともに、同軸ケーブル、銅線およびファイバー光学を含む。従って、伝送媒体はまた、波(それらに限定されることなく、無線波および赤外線データ通信の間に生成されるものなどの、無線、音響および/または光波を含む)の形式をとることができる。
1つ以上の例では、説明される機能はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上で1つ以上の命令もしくはコードとして記憶されてもよく、またはコンピュータ可読媒体上で1つ以上の命令もしくはコードとして伝送されてもよい。コンピュータ可読媒体は、コンピュータデータ記憶媒体を含んでもよい。データ記憶媒体は、この開示で説明された技術の実装のための命令、コードおよび/またはデータ構造を取り出すために1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。本明細書で使用されるような「データ記憶媒体」は、製造物を指し、かつ一時的伝播信号を指さない。例として、かつ非限定的に、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、NVMメモリ、または命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用することができ、かつコンピュータによってアクセスすることができる任意の他の媒体を備えることができる。本明細書で使用されるようなディスクは、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザでデータを光学的に再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲に含まれるべきである。
コードは、1つ以上のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積もしくは個別ロジック回路などの、1つ以上のプロセッサによって実行されてもよい。従って、本明細書で使用されるような用語「プロセッサ」は、上記構造、または本明細書で説明される技術の実装に適切な任意の他の構造のいずれかを指す。加えて、一部の態様では、本明細書で説明される機能は、符号化および復号化のために構成された個別ハードウェアおよび/もしくはソフトウェアモジュール内に備えられてもよく、または複合コーデックに組み込まれてもよい。また、1つ以上の回路またはロジック要素で技術が完全に実装されてもよい。
この開示の技術は、無線ハンドセット、集積回路(IC)またはICの組(チップセット)を含む、各種のデバイスまたは装置で実装されてもよい。種々の構成要素、モジュールまたはユニットは、開示される技術を実行するように構成されたデバイスの機能的態様を強調するために説明されるが、必ずしも異なるハードウェアユニットによって実現される必要はない。むしろ、上述したように、種々のユニットは、コーデックハードウェアユニットで組み合わされてもよく、またはコンピュータ可読媒体に記憶された適切なソフトウェアおよび/もしくはファームウェアとともに、上述したような1つ以上のプロセッサを含む、相互動作ハードウェアユニットの集合によって提供されてもよい。
種々の例を説明した。それらの例および他の例は、以下の特許請求の範囲内にある。