(57)【特許請求の範囲】
【請求項１】
複数のルーティングエンティティと、
前記複数のルーティングエンティティに接続された複数の不揮発性メモリ（ＮＶＭ）ブレードであって、前記ＮＶＭブレードの各々は、不揮発性メモリ（ＮＶＭ）を備える、複数のＮＶＭブレードと、
前記複数のルーティングエンティティに接続された複数のインターフェースエンティティと、
前記複数のルーティングエンティティを用いて前記複数のＮＶＭブレードに結合された第１の処理エンティティであって、
前記複数のインターフェースエンティティのうち１つが第１の入力／出力（Ｉ／Ｏ）要求を受信し、前記複数のインターフェースエンティティのうち１つが前記第１のＩ／Ｏ要求を前記第１の処理エンティティに対して転送することにより、前記第１の処理エンティティが前記第１のＩ／Ｏ要求を受信し、
前記第１のＩ／Ｏ要求が読み出しまたは書き込み要求であるかを判定し、
前記第１のＩ／Ｏ要求が読み出し要求であると判定することに応答して、
前記複数のＮＶＭブレードのターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになる前記ターゲットＮＶＭブレードにおける位置を判定し、
前記ターゲットＮＶＭブレードから前記第１のＩ／Ｏ要求と関連付けられたデータを要求および受信し、かつ
前記第１のＩ／Ｏ要求が書き込み要求であると判定することに応答して、
前記複数のＮＶＭブレードの前記ターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこにおいてデータが記憶されることになる前記ターゲットＮＶＭブレードにおける位置を判定し、
前記ターゲットＮＶＭブレードにデータを記憶するために前記ターゲットＮＶＭブレードに前記データを伝送する
ように構成されている、第１の処理エンティティと、
前記複数のルーティングエンティティを用いて前記複数のＮＶＭブレードに結合された第２の処理エンティティであって、
前記複数のインターフェースエンティティのうち１つが第２の入力／出力（Ｉ／Ｏ）要求を受信し、前記複数のインターフェースエンティティのうち１つが前記第２のＩ／Ｏ要求を前記第２の処理エンティティに対して転送することにより、前記第２の処理エンティティが前記第２のＩ／Ｏ要求を受信し、
前記第２のＩ／Ｏ要求が読み出しまたは書き込み要求であるかを判定し、
前記第２のＩ／Ｏ要求が読み出し要求であると判定することに応答して、
前記複数のＮＶＭブレードのターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになる前記ターゲットＮＶＭブレードにおける位置を判定し、
前記ターゲットＮＶＭブレードから前記第２のＩ／Ｏ要求と関連付けられたデータを要求および受信し、かつ
前記第２のＩ／Ｏ要求が書き込み要求であると判定することに応答して、
前記複数のＮＶＭブレードの前記ターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこにおいてデータが記憶されることになる前記ターゲットＮＶＭブレードにおける位置を判定し、
前記ターゲットＮＶＭブレードにデータを記憶するために前記ターゲットＮＶＭブレードに前記データを伝送する
ように構成されている、第２の処理エンティティと
を備える、記憶装置。
【請求項２】
前記第１の処理エンティティは、前記第２のＩ／Ｏ要求をサービスするための前記第２の処理エンティティと同一の前記第１のＩ／Ｏ要求をサービスするためのターゲットＮＶＭブレードにアクセスする、請求項１に記載の記憶装置。
【請求項３】
前記第１の処理エンティティは、前記第２のＩ／Ｏ要求をサービスするための前記第２の処理エンティティと同一の前記第１のＩ／Ｏ要求をサービスするためのターゲットＮＶＭブレード上の同一の位置にアクセスする、請求項１に記載の記憶装置。
【請求項４】
コントローラボードは、前記第１の処理エンティティ、前記第２の処理エンティティおよび各前記処理エンティティと前記複数のＮＶＭブレードとの間でデータをルーティングするための前記複数のルーティングエンティティのうちいずれかのルーティングエンティティを備える、請求項１に記載の記憶装置。
【請求項５】
前記第１の処理エンティティおよび前記第２の処理エンティティは、同一のルーティングエンティティを介して前記ターゲットＮＶＭブレードにアクセスする、請求項４に記載の記憶装置。
【請求項６】
第１のコントローラボードは、前記第１の処理エンティティを備え、かつ前記複数のルーティングエンティティのうち第１のルーティングエンティティを使用して前記複数のＮＶＭブレードに結合され、および第２のコントローラボードは、前記第２の処理エンティティを備え、かつ前記複数のルーティングエンティティのうち第２のルーティングエンティティを使用して前記複数のＮＶＭブレードに結合される、請求項１に記載の記憶装置。
【請求項７】
前記第１の処理エンティティと前記ターゲットＮＶＭブレードとの間のデータの伝送、および前記第２の処理エンティティと前記ターゲットＮＶＭブレードとの間のデータの伝送が、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行される、請求項１に記載の記憶装置。
【請求項８】
ＮＶＭ記憶媒体は、ＮＡＮＤフラッシュである、請求項１に記載の記憶装置。
【請求項９】
データを記憶するための方法であって、
第１の処理エンティティにおいて、第１の入力／出力（Ｉ／Ｏ）要求を受信するステップであって、前記第１の処理エンティティは、複数のルーティングエンティティを用いて複数の不揮発性メモリ（ＮＶＭ）ブレードに結合され、前記第１のＩ／Ｏ要求は、前記複数のルーティングエンティティに接続された複数のインターフェースエンティティのうち１つにおいて受信された後、前記複数のルーティングエンティティのうち１つを介して前記第１の処理エンティティに対して転送され、前記ＮＶＭブレードの各々は、不揮発性メモリ（ＮＶＭ）を備える、ステップと、
前記第１の処理エンティティにおいて、前記第１のＩ／Ｏ要求が読み出しまたは書き込み要求であるかを判定するステップと、
前記第１のＩ／Ｏ要求が読み出し要求であると判定することに応答して、
前記第１の処理エンティティによって、前記複数のＮＶＭブレードのターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになる前記ターゲットＮＶＭブレードにおける位置を判定するステップと、
前記第１の処理エンティティによって、前記ターゲットＮＶＭブレードから前記第１のＩ／Ｏ要求と関連付けられたデータを要求および受信するステップと、
前記第１のＩ／Ｏ要求が書き込み要求であると判定することに応答して、
前記第１の処理エンティティによって、前記複数のＮＶＭブレードのターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこにおいてデータが記憶されることになる前記ターゲットＮＶＭブレードにおける位置を判定するステップと、
前記第１の処理エンティティから、前記ターゲットＮＶＭブレードにデータを記憶するために前記ターゲットＮＶＭブレードに前記データを伝送するステップと、
第２の処理エンティティにおいて、第２の入力／出力（Ｉ／Ｏ）要求を受信するステップであって、前記第２の処理エンティティは、前記複数のルーティングエンティティを用いて前記複数のＮＶＭブレードに結合され、前記第２のＩ／Ｏ要求は、前記複数のインターフェースエンティティのうち１つにおいて受信された後、前記複数のルーティングエンティティのうち１つを介して前記第２の処理エンティティに対して転送される、ステップと、
前記第２の処理エンティティにおいて、前記第２のＩ／Ｏ要求が読み出しまたは書き込み要求であるかを判定するステップと、
前記第２のＩ／Ｏ要求が読み出し要求であると判定することに応答して、
前記第２の処理エンティティにおいて、前記複数のＮＶＭブレードのターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになる前記ターゲットＮＶＭブレードにおける位置を判定するステップと、
前記第２の処理エンティティにおいて、前記ターゲットＮＶＭブレードから前記第２のＩ／Ｏ要求と関連付けられたデータを要求および受信するステップと、
前記第２のＩ／Ｏ要求が書き込み要求であると判定することに応答して、
前記第２の処理エンティティにおいて、前記複数のＮＶＭブレードの前記ターゲットＮＶＭブレード、および前記ターゲットＮＶＭブレードにおける位置であって、そこにおいてデータが記憶されることになる前記ターゲットＮＶＭブレードにおける位置を判定するステップと、
前記第２の処理エンティティから、前記ターゲットＮＶＭブレードにデータを記憶するために前記ターゲットＮＶＭブレードに前記データを伝送するステップと
を含む、方法。
【請求項１０】
前記第１の処理エンティティは、前記第２のＩ／Ｏ要求をサービスするための前記第２の処理エンティティと同一の前記第１のＩ／Ｏ要求をサービスするためのターゲットＮＶＭブレードにアクセスする、請求項９に記載の方法。
【請求項１１】
前記第１の処理エンティティは、前記第２のＩ／Ｏ要求をサービスするための前記第２の処理エンティティと同一の前記第１のＩ／Ｏ要求をサービスするためのターゲットＮＶＭブレード上の同一の位置にアクセスする、請求項９に記載の方法。
【請求項１２】
コントローラボードは、前記第１の処理エンティティ、前記第２の処理エンティティおよび前記第１および第２の処理エンティティと前記複数のＮＶＭブレードとの間でデータをルーティングするための前記複数のルーティングエンティティのうちいずれかのルーティングエンティティを備える、請求項９に記載の方法。
【請求項１３】
前記第１の処理エンティティおよび前記第２の処理エンティティは、前記複数のルーティングエンティティのなかの同一のルーティングエンティティを介して前記ターゲットＮＶＭブレードにアクセスする、請求項１２に記載の方法。
【請求項１４】
第１のコントローラボードは、第１の処理エンティティを備え、かつ前記複数のルーティングエンティティのうち第１のルーティングエンティティを使用して前記複数のＮＶＭブレードに結合され、および第２のコントローラボードは、前記第２の処理エンティティを備え、かつ前記複数のルーティングエンティティのうち第２のルーティングエンティティを使用して前記複数のＮＶＭブレードに結合される、請求項９に記載の方法。
【請求項１５】
前記第１の処理エンティティと前記ターゲットＮＶＭブレードとの間のデータの伝送、および前記第２の処理エンティティと前記ターゲットＮＶＭブレードとの間のデータの伝送が、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行される、請求項９に記載の方法。
【請求項１６】
ＮＶＭ記憶媒体は、ＮＡＮＤフラッシュである、請求項９に記載の方法。
【請求項１７】
アクティブモードで動作するように構成された第１のコントローラであって、不揮発性メモリ（ＮＶＭ）記憶媒体にデータを記憶し、かつ前記ＮＶＭ記憶媒体からデータを取り出すための入力／出力（Ｉ／Ｏ）要求を複数のインターフェースエンティティのうち１つにおいて受信するように構成される、第１のコントローラと、
アクティブモードで動作するように構成された第２のコントローラであって、同様に前記ＮＶＭ記憶媒体にデータを記憶し、かつ前記ＮＶＭ記憶媒体からデータを取り出すためのＩ／Ｏ要求を受信するように構成される、第２のコントローラと、
ＮＶＭ記憶媒体を備えた複数の不揮発性メモリ（ＮＶＭ）ブレードであって、前記複数のＮＶＭブレードのうちの少なくとも１つは、前記ＮＶＭ記憶媒体にデータを記憶し、かつ前記ＮＶＭ記憶媒体からデータを取り出すために、第１のルーティングインタフェースを用いて前記第１のコントローラと結合され、第２のルーティングインタフェースを用いて前記第２のコントローラに結合される、複数のＮＶＭブレードと
を備える、記憶装置。
【請求項１８】
ＰＣＩｅプロトコルを使用して、前記第１のルーティングインタフェースは、前記第１のコントローラと通信し、かつ前記第２のルーティングインタフェースは、前記第２のコントローラと通信する、請求項１７に記載の記憶装置。
【請求項１９】
前記第１のコントローラは、
第１のＩ／Ｏ要求を受信し、
前記第１のＩ／Ｏ要求が、前記第１のＩ／Ｏ要求と関連付けられた第１のデータを前記ＮＶＭ記憶媒体に記憶するための要求であると判定し、および
前記第１のデータを第１の位置に記憶するために、コマンドおよび前記第１のデータを前記複数のＮＶＭブレードのうちの前記少なくとも１つに伝送する
ように構成されている、請求項１７に記載の記憶装置。
【請求項２０】
前記第２のコントローラは、
第２のＩ／Ｏ要求を受信し、
前記第２のＩ／Ｏ要求が、前記第２のＩ／Ｏ要求と関連付けられた第２のデータを前記ＮＶＭ記憶媒体に記憶するための要求であると判定し、および
前記第２のＩ／Ｏ要求と関連付けられたコマンド情報を前記第１のコントローラに伝送する
ように構成され、
前記第１のコントローラは、
前記第２のコントローラから前記伝送されたコマンド情報を受信し、および
記憶コマンドを前記複数のＮＶＭブレードのうちの前記少なくとも１つに伝送する
ように構成され、
前記第２のコントローラはさらに、前記第２のＩ／Ｏ要求と関連付けられた前記第２のデータを、前記１つ以上のＮＶＭブレードに伝送するように構成される、請求項１９に記載の記憶装置。
【請求項２１】
前記第１のコントローラおよび前記第２のコントローラは、前記ＮＶＭ記憶媒体からの読み出し動作および要求データのために、同時にＩ／Ｏ要求を復号化するように構成される、請求項１７に記載の記憶装置。
【請求項２２】
前記第１のコントローラ、第２のコントローラおよび前記複数のＮＶＭブレードは、母線に結合され、前記母線は、複数の電力供給装置によって電力供給される、請求項１７に記載の記憶装置。
【請求項２３】
前記複数のＮＶＭブレードのうちの前記少なくとも１つは、前記第１のコントローラからのコマンドをバッファするための、前記第１のルーティングインタフェースに結合された第１のバッファを備える、請求項１７に記載の記憶装置。
【請求項２４】
前記複数のＮＶＭブレードのうちの前記少なくとも１つはさらに、前記第１のバッファが予め定められた閾値を超えてフルになると、前記第１のコントローラからのコマンドを破棄するように構成される、請求項２３に記載の記憶装置。
【請求項２５】
前記複数のＮＶＭブレードのうちの前記少なくとも１つは、前記第１のコントローラおよび前記第２のコントローラからのコマンドに対し、ＮＶＭインタフェースへのアクセスを調停するためのコマンドマネージャを備える、請求項１７に記載の記憶装置。
【請求項２６】
前記コマンドマネージャは、コマンドの誤りを検出すると、前記Ｉ／Ｏ要求と関連付けられた誤り情報を、前記コマンドの発行元である前記コントローラに伝送して返す、請求項２５に記載の記憶装置。
【請求項２７】
前記第１のコントローラおよび前記第２のコントローラは、相互にフォールトトレランス情報を通信する、請求項２６に記載の記憶装置。
【請求項２８】
前記第１のコントローラおよび前記第２のコントローラは、非ＰＣＩｅブリッジを使用して相互にフォールトトレランス情報を通信する、請求項２７に記載の記憶装置。
【請求項２９】
前記フォールトトレランス情報は、前記第１のコントローラから前記複数のＮＶＭブレードのうちの１つへの第１のＩ／Ｏ要求の障害に関する情報を含む、請求項２７に記載の記憶装置。
【請求項３０】
前記第１のコントローラおよび前記第２のコントローラは、Ｉ／Ｏ要求を処理するための１つ以上のプロセッサ、および前記コントローラと前記複数のＮＶＭブレードとの間でのルーティング動作のための１つ以上のルータを備えたプリント回路基板（ＰＣＢ）である、請求項２６に記載の記憶装置。
【請求項３１】
前記第１のコントローラおよび前記第２のコントローラは、各々が処理ロジックおよびルーティングロジックを備えた特定用途向け集積回路（ＡＳＩＣ）である、請求項２６に記載の記憶装置。
【請求項３２】
記憶装置上にデータを記憶するための方法であって、
スレーブコントローラにおいて、複数のインターフェースエンティティのうち１つを介して第１のＩ／Ｏ要求を受信するステップと、
前記第１のＩ／Ｏ要求が、前記第１のＩ／Ｏ要求と関連付けられた第１のデータを不揮発性メモリ（ＮＶＭ）記憶媒体に記憶するための要求であると判定するステップと、
前記第１のＩ／Ｏ要求と関連付けられたコマンド情報をマスタコントローラに伝送するステップと、  前記マスタコントローラにおいて、前記スレーブコントローラから前記伝送されたコマンド情報を受信するステップと、
前記マスタコントローラからの前記第１のＩ／Ｏ要求に対する前記伝送されたコマンド情報および前記スレーブコントローラからの前記第１のデータを使用して、前記第１のデータを第１の位置に記憶するために、不揮発性メモリ（ＮＶＭ）記憶媒体を備えた複数のＮＶＭブレードのうちの少なくとも１つに記憶コマンドを伝送するステップであって、前記複数のＮＶＭブレードは、複数のルーティングエンティティを用いて前記スレーブコントローラと前記マスタコントローラに対して接続されている、ステップと
を含む、方法。
【請求項３３】
前記マスタコントローラにおいて、第２のＩ／Ｏ要求を受信するステップと、
前記第２のＩ／Ｏ要求が、前記第２のＩ／Ｏ要求と関連付けられた第２のデータをＮＶＭ記憶媒体に記憶するための要求であると判定するステップと、
前記第２のデータを第２の位置に記憶するためにコマンドおよび前記第２のデータを、ＮＶＭ記憶媒体を備えた前記複数のＮＶＭブレードのうちの少なくとも１つに伝送するステップと
をさらに含む、請求項３２に記載の方法。
【請求項３４】
前記マスタおよびスレーブコントローラは、前記複数のＮＶＭブレードと通信するためにＰＣＩｅプロトコルを使用する、請求項３２に記載の方法。
【請求項３５】
前記マスタコントローラにおいて、第２のＩ／Ｏ要求を受信するステップと、
前記第２のＩ／Ｏ要求が、前記ＮＶＭ記憶媒体から、第２の位置からの第２のデータを読み出すための要求であると判定するステップと、
前記第２のＩ／Ｏ要求と関連付けられた前記第２のデータを前記ＮＶＭ記憶媒体から取り出すステップと、
前記スレーブコントローラにおいて、第３のＩ／Ｏ要求を受信するステップと、
前記第３のＩ／Ｏ要求が、前記ＮＶＭ記憶媒体から、第３の位置からの第３のデータを読み出すための要求であると判定するステップと、
前記第３のＩ／Ｏ要求と関連付けられた前記第３のデータを前記ＮＶＭ記憶媒体から取り出すステップと
をさらに含む、請求項３２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様は、コンピューティングおよび通信技術に関する。特に、本開示の態様は、記憶装置の性能を改善するためのシステム、方法、装置およびコンピュータ可読媒体に関する。
【背景技術】
【０００２】
企業システムのための記憶装置は、大記憶容量、記憶装置からの読み出し、および記憶装置への書き込みに対する低待ち時間、高帯域幅、低電力消費、ならびに信頼性を必要とする。従来から、企業システムは、電力がオフになっている間にデータを保持するハードディスクドライブ（ＨＤＤ）などの媒体を使用して実装される。ハードディスクドライブは、高速回転ディスクを使用する、デジタル情報を記憶および取り出すために使用されるデータ記憶装置である。ＨＤＤは、ディスク面からデータを読み出し、およびディスク面へデータを書き込むために可動アクチュエータアーム上に配置された磁気ヘッドを有する１つ以上の剛体（「ハード」）高速回転ディスク（プラター）から構成される。可動部により、ＨＤＤは本質的に誤りおよび障害を起こしやすく、かつそれらのアクセス時間をどのように低下させるかについての下限があり、価格が下落することがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の実施形態は、この課題および他の課題を解決する。
【０００４】
記憶媒体にアクセスするための種々のシステム、方法、装置、およびコンピュータ可読媒体が説明される。記憶媒体に最適にアクセスするための技術が説明される。１つの実施形態では、記憶装置は、不揮発性メモリ（ＮＶＭ）を使用して実装されてもよい。
【０００５】
ある例示的な実施形態では、２つ以上のコントローラを備えたアクティブ／アクティブフォールトトレラント記憶装置が実装されてもよい。しかしながら、他の例示的な実施形態では、アクティブ／スタンバイシステムが実装されてもよい。一部の実施形態では、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または単一のダイ上のいくつかの個別構成要素の機能を統合する任意の他の技術を使用して、コントローラが実装されてもよい。他の実施形態では、コントローラはまた、複数の個別構成要素を有するコントローラボードを含んでもよい。１つの態様では、各コントローラボードは、入力／出力（Ｉ／Ｏ）要求の処理を分散するための２つ以上の処理エンティティを有してもよい。１つの実施形態では、構成要素、モジュールおよびコントローラボードの構成は、放熱を向上させ、電力消費を低下させ、電力および作業負荷を拡散し、ならびにＩ／Ｏ要求をサービスするための待ち時間を減少させる方法で配置されてもよい。
【０００６】
１つの実施形態では、各コントローラは、不揮発性メモリ（ＮＶＭ）記憶媒体を備えたＮＶＭブレードに結合されてもよい。本発明の実施形態はまた、ＮＶＭ記憶媒体へのアクセス時間を改善するためのさらなる拡張をもたらすことができる。例示を目的に、本発明の一部の実施形態を、ＮＶＭ記憶媒体を使用して本明細書で説明することができるが、ある実施形態では、本発明は、ＮＶＭ記憶媒体に限定されないことがあり、かつ本発明の範囲から逸脱することなく他の適切な物理記憶媒体が使用されてもよい。
【０００７】
１つの実装形態では、コントローラボードの種々の構成要素、またＮＶＭ記憶媒体との間で通信するために、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルなどの標準プロトコルが使用されてもよい。
【０００８】
例示的な記憶装置は、複数のブレードからの第１のブレードに結合された複数のルーティングエンティティからの第１のルーティングエンティティを含んでもよく、第１のブレードは、ＮＶＭ記憶媒体を含んでもよく、第１の処理エンティティは、第１のルーティングエンティティに結合され、第１の処理エンティティは、第１の入力／出力（Ｉ／Ｏ）要求を受信し、第１のＩ／Ｏ要求と関連付けられた第１のデータが、第１のルーティングエンティティに結合された第１のブレード上の第１の位置に記憶されることになると判定し、および第１のブレード上に第１のデータを記憶するために第１のＩ／Ｏ要求と関連付けられた第１のデータを第１のルーティングエンティティに伝送するように構成されてもよい。第２の処理エンティティは、第１のルーティングエンティティに結合されてもよく、第２の処理エンティティは、第２のＩ／Ｏ要求を受信し、第２のＩ／Ｏ要求と関連付けられた第２のデータが、第１のルーティングエンティティに結合された第１のブレード上の第２の位置に記憶されることになると判定し、および第１のブレード上に第２のデータを記憶するために第２のＩ／Ｏ要求と関連付けられた第２のデータを第１のルーティングエンティティに伝送するように構成される。
【０００９】
一部の実施形態では、記憶装置はさらに、第３のＩ／Ｏ要求を受信し、第３のＩ／Ｏ要求が、第１のルーティングエンティティに結合された第１のブレードの第１の位置における第１のデータに対する読み出し要求であると判定し、第１のルーティングエンティティから、第１の位置からの第１のデータを要求し、および第１のルーティングエンティティから第１のデータを受信するように構成される、第２の処理エンティティを有してもよい。１つの実装形態では、第１の処理エンティティおよび第２の処理エンティティは、第１のルーティングエンティティを通じて相互に間接的に結合されてもよい。１つの実施形態では、コントローラボードは、第１のルーティングエンティティ、第１の処理エンティティおよび第２の処理エンティティを備える。１つの実装形態では、第１の処理エンティティは、第１のメモリに結合されてもよく、かつ第２の処理エンティティは、第２のメモリに結合されてもよい。１つの態様では、第１の処理エンティティと第１のルーティングエンティティとの間のデータの伝送、および第２の処理エンティティと第１のルーティングエンティティとの間のデータの伝送は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行される。
【００１０】
記憶装置のある実装形態では、記憶装置はさらに、複数のブレードからの第２のブレードに結合された複数のルーティングエンティティからの第２のルーティングエンティティを備えてもよく、第２のブレードは、ＮＶＭ記憶媒体を備え、第１の処理エンティティは、第２のルーティングエンティティに結合され、第１の処理エンティティは、第３のＩ／Ｏ要求を受信し、第３のＩ／Ｏ要求と関連付けられた第３のデータが、第２のブレード上の第３の位置に記憶されることになると判定し、および第２のブレード上に第３のＩ／Ｏ要求と関連付けられたデータを記憶するために第３のＩ／Ｏ要求と関連付けられた第３のデータを第２のルーティングエンティティに伝送するように構成されてもよい。記憶装置はさらに、第２のルーティングエンティティに結合された第２の処理エンティティを有してもよく、第２の処理エンティティは、第４のＩ／Ｏ要求を受信し、第４のＩ／Ｏ要求と関連付けられた第４のデータが、第２のブレード上の第４の位置に記憶されることになると判定し、および第２のブレード上に第４のＩ／Ｏ要求と関連付けられたデータを記憶するために第４のＩ／Ｏ要求と関連付けられた第４のデータを第２のルーティングエンティティに伝送するように構成されてもよい。
【００１１】
１つの実施形態では、第１の処理エンティティと第２のルーティングエンティティとの間のデータの伝送、および第２の処理エンティティと第２のルーティングエンティティとの間のデータの伝送は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行されてもよい。１つの態様では、第１の処理エンティティによって受信された第１のＩ／Ｏ要求は、１つ以上のインタフェーシングエンティティにおいて受信されてもよく、かつ複数のルーティングエンティティのうちの１つを通じて第１の処理エンティティに転送されてもよい。
【００１２】
データを記憶するための例示的な方法は、第１の処理エンティティにおいて、第１のＩ／Ｏ要求を受信するステップと、第１の処理エンティティにおいて、第１のＩ／Ｏ要求と関連付けられた第１のデータが、第１のルーティングエンティティに結合された第１のブレード上の第１の位置に記憶されることになると判定するステップであって、第１のブレードは、ＮＶＭ記憶媒体を備える、ステップと、第１の処理エンティティによって、第１のブレード上にデータを記憶するために第１のＩ／Ｏ要求と関連付けられた第１のデータを第１のルーティングエンティティに伝送するステップと、第２の処理エンティティにおいて、第２のＩ／Ｏ要求を受信するステップと、第２の処理エンティティにおいて、第２のＩ／Ｏ要求と関連付けられた第２のデータが、第１のルーティングエンティティに結合された第１のブレード上の第２の位置に記憶されることになると判定するステップと、第２の処理エンティティによって、第１のブレード上にデータを記憶するために第２のＩ／Ｏ要求と関連付けられた第２のデータを第１のルーティングエンティティに伝送するステップとを含んでもよい。
【００１３】
一部の実装形態では、例示的な方法はさらに、第２の処理エンティティにおいて、第３のＩ／Ｏ要求を受信するステップと、第２の処理エンティティにおいて、第３のＩ／Ｏ要求が、第１のルーティングエンティティに結合された第１のブレードの第１の位置からの第１のデータに対する読み出し要求であると判定するステップと、第１のルーティングエンティティから第１の位置からの第１のデータを要求するステップと、第１のルーティングエンティティから第１のデータを受信するステップとを含んでもよい。
【００１４】
１つの実装形態では、第１の処理エンティティおよび第２の処理エンティティは、ルーティングエンティティを通じて相互に間接的に結合される。１つの態様では、コントローラボードは、第１のルーティングエンティティ、第１の処理エンティティおよび第２の処理エンティティを備える。第１の処理エンティティは、第１のメモリに結合されてもよく、かつ第２の処理エンティティは、第２のメモリに結合されてもよい。方法の一部の実装形態では、第１の処理エンティティと第１のルーティングエンティティとの間の第１のデータの伝送、および第２の処理エンティティと第１のルーティングエンティティとの間の第２のデータの伝送は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行されてもよい。
【００１５】
方法のある実施形態では、方法はまた、第１の処理エンティティにおいて、第３のＩ／Ｏ要求を受信するステップと、第１の処理エンティティにおいて、第３のＩ／Ｏ要求と関連付けられた第３のデータが、第２のルーティングエンティティに結合された第２のブレード上の第３の位置に記憶されることになると判定するステップであって、第２のブレードは、ＮＶＭ記憶媒体を備える、ステップと、第１の処理エンティティによって、第２のブレード上に第３のＩ／Ｏ要求と関連付けられたデータを記憶するために第３のＩ／Ｏ要求と関連付けられた第３のデータを第２のルーティングエンティティに伝送するステップと、第２の処理エンティティにおいて、第４のＩ／Ｏ要求を受信するステップと、第２の処理エンティティにおいて、第４のＩ／Ｏ要求と関連付けられた第４のデータが、第２のルーティングエンティティに結合された第２のブレード上の第４の位置に記憶されることになると判定するステップと、第２の処理エンティティによって、第２のブレード上に第４のＩ／Ｏ要求と関連付けられたデータを記憶するために第４のＩ／Ｏ要求と関連付けられた第４のデータを第２のルーティングエンティティに伝送するステップとを含んでもよい。一部の実施形態では、第１の処理エンティティと第２のルーティングエンティティとの間の第３のデータの伝送、および第２の処理エンティティと第２のルーティングエンティティとの間の第４のデータの伝送は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルを使用して実行される。第１のブレードは、複数のブレードのうちの１つであってもよく、かつ第１のルーティングエンティティは、複数のルーティングエンティティのうちの１つであってもよい。第１の処理エンティティによって受信された第１のパケットは、１つ以上のインタフェーシングエンティティにおいて受信されてもよく、かつ複数のルーティングエンティティのうちの１つを通じて第１の処理エンティティに転送されてもよい。
【００１６】
例示的な装置は、第１のＩ／Ｏ要求を受信する手段と、第１のＩ／Ｏ要求と関連付けられた第１のデータが、第１のルーティングエンティティに結合された第１のブレード上の第１の位置に記憶されることになると判定する手段であって、第１のブレードは、ＮＶＭ記憶媒体を備える、手段と、第１のブレード上にデータを記憶するために第１のＩ／Ｏ要求と関連付けられた第１のデータを第１のルーティングエンティティに伝送する手段と、第２のＩ／Ｏ要求を受信する手段と、第２のＩ／Ｏ要求と関連付けられた第２のデータが、第２のルーティングエンティティに結合された第２のブレード上の第２の位置に記憶されることになると判定する手段と、第２のブレード上に第２のデータを記憶するために第２のＩ／Ｏ要求と関連付けられた第２のデータを第２のルーティングエンティティに伝送する手段とを含んでもよい。
【００１７】
記憶媒体にアクセスするための種々のシステム、方法、装置、およびコンピュータ可読媒体が説明される。最適に記憶媒体にアクセスするための技術が説明される。１つの実施形態では、記憶装置は、不揮発性メモリ（ＮＶＭ）を使用して実装されてもよい。
【００１８】
ある例示的な実施形態では、２つ以上のコントローラを備えたアクティブ／アクティブフォールトトレラント記憶装置が実装されてもよい。しかしながら、他の例示的な実施形態では、アクティブ／スタンバイシステムが実装されてもよい。一部の実施形態では、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または単一のダイ上のいくつかの個別構成要素の機能を統合する任意の他の技術を使用して、コントローラが実装されてもよい。他の実施形態では、コントローラはまた、複数の個別構成要素を有するコントローラボードを含んでもよい。１つの態様では、各コントローラボードは、入力／出力（Ｉ／Ｏ）要求の処理を分散するための２つ以上の処理エンティティを有してもよい。１つの実施形態では、構成要素、モジュールおよびコントローラボードの構成は、放熱を向上させ、電力消費を低下させ、電力および作業負荷を拡散し、ならびにＩ／Ｏ要求をサービスするための待ち時間を減少させる方法で配置されてもよい。
【００１９】
１つの実施形態では、各コントローラは、ＮＶＭ記憶媒体を備えたＮＶＭブレードに結合されてもよい。本発明の実施形態はまた、ＮＶＭ記憶媒体へのアクセス時間を改善するためのさらなる拡張をもたらすことができる。例示を目的に、本発明の一部の実施形態を、ＮＶＭ記憶媒体を使用して本明細書で説明することができるが、ある実施形態では、本発明は、ＮＶＭ記憶媒体に限定されないことがあり、かつ本発明の範囲から逸脱することなく他の適切な物理記憶媒体が使用されてもよい。
【００２０】
１つの実装形態では、コントローラボードの種々の構成要素と、またＮＶＭ記憶媒体との間で通信するために、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）プロトコルなどの標準プロトコルが使用されてもよい。
【００２１】
例示的な記憶装置は、アクティブモードで動作するように構成された第１のコントローラであって、ＮＶＭ記憶媒体にデータを記憶し、およびＮＶＭ記憶媒体からデータを取り出すための入力／出力（Ｉ／Ｏ）要求を受信するように構成される、第１のコントローラと、アクティブモードで動作するように構成された第２のコントローラであって、同様にＮＶＭ記憶媒体にデータを記憶し、およびＮＶＭ記憶媒体からデータを取り出すための入力／出力（Ｉ／Ｏ）要求を受信するように構成される、第２のコントローラと、ＮＶＭ記憶媒体を備えた複数のＮＶＭブレードとを備え、複数のＮＶＭブレードのうちの少なくとも１つは、ＮＶＭ記憶媒体にデータを記憶し、およびＮＶＭ記憶媒体からデータを取り出すために第１のコントローラおよび第２のコントローラに結合される、記憶装置を含んでもよい。１つの実施形態では、複数のＮＶＭブレードのうちの少なくとも１つは、第１のコントローラと通信するための第１のルーティングインタフェース、および第２のコントローラと通信するための第２のルーティングインタフェースを備える。一部の実装形態では、第１のルーティングインタフェースは、第１のコントローラと通信してもよく、かつ第２のルーティングインタフェースは、ＰＣＩｅプロトコルを使用して第２のコントローラと通信してもよい。
【００２２】
ある実施形態では、読み出し動作に対し、第１のコントローラは、第１のＩ／Ｏ要求を受信し、第１のＩ／Ｏ要求が、第１のＩ／Ｏ要求と関連付けられた第１のデータをＮＶＭ記憶媒体に記憶するための要求であると判定し、および第１の位置に第１のデータを記憶するためにコマンドおよび第１のデータを複数のＮＶＭブレードのうちの少なくとも１つに伝送するように構成されてもよい。記憶装置の１つの実装形態では、第１のコントローラおよび第２のコントローラは、ＮＶＭ記憶媒体から読み出し動作および要求データのために、Ｉ／Ｏ要求を同時に復号化するように構成されてもよい。
【００２３】
ある実施形態では、書き込み動作に対し、第２のコントローラは、第２のＩ／Ｏ要求を受信し、第２のＩ／Ｏ要求が、第２のＩ／Ｏ要求と関連付けられた第２のデータをＮＶＭ記憶媒体に記憶するための要求であると判定し、および第２のＩ／Ｏ要求と関連付けられたコマンド情報を第１のコントローラに伝送するように構成される。第１のコントローラは、第２のコントローラから伝送されたコマンド情報を受信し、および記憶コマンドを複数のＮＶＭブレードのうちの少なくとも１つに伝送するように構成されてもよい。第２のコントローラはさらに、第２のＩ／Ｏ要求と関連付けられた第２のデータを１つ以上のＮＶＭブレードに伝送するように構成されてもよい。
【００２４】
ある実施形態では、複数のＮＶＭブレードのうちの少なくとも１つは、第１のコントローラからのコマンドをバッファリングするための第１のルーティングインタフェースに結合された第１のバッファを含んでもよい。複数のＮＶＭブレードのうちの少なくとも１つは、第１のバッファが予め定められた閾値を超えてフルになると、第１のコントローラからのコマンドを破棄するように構成されてもよい。一部の実装形態では、複数のＮＶＭブレードのうちの少なくとも１つはまた、第１のコントローラおよび第２のコントローラからのコマンドに対するＮＶＭインタフェースへのアクセスを調停するためのコマンドマネージャを含んでもよい。コマンドマネージャがコマンドに対する誤りを検出する例では、少なくとも１つのＮＶＭブレードは、Ｉ／Ｏ要求と関連付けられた誤り情報を、コマンドの発行元であるコントローラに伝送して返してもよい。
【００２５】
一部の実装形態では、第１のコントローラおよび第２のコントローラは、相互にフォールトトレランス情報を通信してもよい。１つの態様では、第１のコントローラおよび第２のコントローラは、非ＰＣＩｅブリッジを使用して相互にフォールトトレランス情報を通信してもよい。一部の例では、フォールトトレランス情報は、第１のコントローラから複数のＮＶＭブレードのうちの１つへの第１のＩ／Ｏ要求の障害に関する情報を含んでもよい。
【００２６】
１つの実施形態では、第１のコントローラ、第２のコントローラおよび複数のＮＶＭブレードは、母線に結合されてもよく、母線は、複数の電力供給装置によって電力供給される。１つの実装形態では、第１のコントローラおよび第２のコントローラは、Ｉ／Ｏ要求を処理するための１つ以上のプロセッサ、およびコントローラと複数のＮＶＭブレードとの間でのルーティング動作のための１つ以上のルータを備えたプリント回路基板（ＰＣＢ）であってもよい。別の実装形態では、第１のコントローラおよび第２のコントローラは、各々が処理ロジックおよびルーティングロジックを備えた特定用途向け集積回路（ＡＳＩＣ）であってもよい。
【００２７】
記憶装置上にデータを記憶するための例示的な方法は、スレーブコントローラにおいて第１のＩ／Ｏ要求を受信するステップと、第１のＩ／Ｏ要求が、第１のＩ／Ｏ要求と関連付けられた第１のデータをＮＶＭ記憶媒体に記憶するための要求であると判定するステップと、第１のＩ／Ｏ要求と関連付けられたコマンド情報をマスタコントローラに伝送するステップと、マスタコントローラにおいて、伝送されたコマンド情報をスレーブコントローラから受信するステップと、第１のデータを第１の位置に記憶するために、マスタコントローラからの第１のＩ／Ｏ要求およびスレーブコントローラからの第１のデータに対する伝送されたコマンド情報を使用して、記憶コマンドを、ＮＶＭ記憶媒体を備えた複数のＮＶＭブレードのうちの少なくとも１つに伝送するステップとを含んでもよい。
【００２８】
例示的な方法はさらに、マスタコントローラにおいて第２のＩ／Ｏ要求を受信するステップと、第２のＩ／Ｏ要求が、第２のＩ／Ｏ要求と関連付けられた第２のデータをＮＶＭ記憶媒体に記憶するための要求であると判定するステップと、第２の位置に第２のデータを記憶するためにコマンドおよび第２のデータを、ＮＶＭ記憶媒体を備えた複数のＮＶＭブレードのうちの少なくとも１つに伝送するステップとを含んでもよい。方法はさらに、マスタコントローラにおいて第２のＩ／Ｏ要求を受信するステップと、第２のＩ／Ｏ要求が、ＮＶＭ記憶媒体から、第２の位置からの第２のデータを読み出すための要求であると判定するステップと、ＮＶＭ記憶媒体から第２のＩ／Ｏ要求と関連付けられた第２のデータを取り出すステップと、スレーブコントローラにおいて第３のＩ／Ｏ要求を受信するステップと、第３のＩ／Ｏ要求が、ＮＶＭ記憶媒体から、第３の位置からの第３のデータを読み出すための要求であると判定するステップと、ＮＶＭ記憶媒体から第３のＩ／Ｏ要求と関連付けられた第３のデータを取り出すステップとを含んでもよい。１つの実装形態では、マスタおよびスレーブコントローラは、複数のＮＶＭブレードと通信するためにＰＣＩｅプロトコルを使用してもよい。
【００２９】
後に続く詳細な説明をよりよく理解することができるために、上述の記載ではむしろ、例の特徴および技術的利点を広義に述べてきた。追加の特徴および利点が以下で説明される。本開示の同一の目的を達成するための他の構造を変更または設計するための基礎として、開示される概念的および特定的な例を容易に利用することができる。そのような均等な構造は、添付の特許請求の範囲の趣旨および範囲から逸脱しない。関連する利点とともに、動作の構造および方法の両方について、本明細書で開示される概念の特徴であると考えられる特徴は、添付図面とともに考慮されるときに以下の詳細な説明からよりよく理解される。例示および説明を目的に、かつ特許請求の範囲の限定の定義としてではなく、図面の各々が提供される。
【００３０】
後に続く詳細な説明をよりよく理解することができるために、上述の記載ではむしろ、例の特徴および技術的利点を広義に述べてきた。追加の特徴および利点が以下で説明される。本開示の同一の目的を達成するための他の構造を変更または設計するための基礎として、開示される概念的および特定的な例を容易に利用することができる。そのような均等な構造は、添付の特許請求の範囲の趣旨および範囲から逸脱しない。関連する利点とともに、動作の構造および方法の両方について、本明細書で開示される概念の特徴であると考えられる特徴は、添付図面とともに考慮されるときに以下の詳細な説明からよりよく理解される。例示および説明を目的に、かつ特許請求の範囲の限定の定義としてではなく、図面の各々が提供される。
【００３１】
開示の態様が例として示される。以下の詳細な説明は、図面を参照して提供され、図面全体を通じて同一の参照符号が同一の要素を指すために使用される。１つ以上の技術の種々の詳細が本明細書で説明されるが、他の技術もまた可能である。一部の例では、種々の技術を説明することを容易にするために、公知の構造およびデバイスがブロック図の形式で示される。
【００３２】
開示によって提供される例の本質および利点のさらなる理解を、本明細書および図面の残りの部分を参照することによって実現することができ、いくつかの図面全体を通じて、同一の参照符号は、類似の構成要素を指すために使用される。一部の例では、複数の類似の構成要素のうちの１つを表すためにサブラベルが参照符号と関連付けられる。既存のサブラベルに対する指定なしに参照符号への参照がなされるときに、参照符号は全てのそのような類似の構成要素を指す。
【図面の簡単な説明】
【００３３】
【図１】本発明の１つの実施形態に従った記憶装置の例示的な高レベルブロック図を示す。
【図２】本発明の１つの実施形態に従った記憶装置の別の例示的なブロック図を示す。
【図３】本発明の１つの実施形態に従った記憶装置のさらなる別の例示的なブロック図を示す。
【図４】本発明のさらなる別の実施形態に従った記憶装置の例示的なブロック図を示す。
【図５】本発明の１つの実施形態に従った本発明の実施形態を実行するための方法を示すフローチャートである。
【図６】本発明の別の実施形態に従った本発明の実施形態を実行するための別の方法を示すフローチャートである。
【図７】本発明の１つの実施形態に従ったコントローラボードの例示的なブロック図を示す。
【図８】本発明の少なくとも１つの実施形態に従った、コントローラボード上の各構成要素によって可視化されるものとしての種々の構成要素に対するアドレス空間の例示的なブロック図を示す。
【図９】本発明の１つの実施形態に従った記憶装置の別の例示的な高レベルブロック図を示す。
【図１０】本発明の１つの実施形態に従ったＮＶＭブレードの例示的なブロック図を示す。
【図１１】本発明の１つの実施形態に従ったブレードコントローラの例示的なブロック図を示す。
【図１２】本発明の１つの実施形態に従ったブレードコントローラの別の例示的なブロック図を示す。
【図１３】本発明の実施形態を実行するためのコンピュータシステムを示す。
【発明を実施するための形態】
【００３４】
いくつかの例示的な実施形態が、その一部を形成する添付図面に関連してここで説明される。開示の１つ以上の態様を実装することができる特定の実施形態が以下で説明されるとともに、他の実施形態が使用されてもよく、かつ開示の範囲または添付の特許請求の範囲の趣旨を逸脱することなく種々の変形形態がなされてもよい。
【００３５】
本発明の実施形態を論じる前に、一部の用語の説明が本発明の実施形態を理解するのに有用となることがある。
【００３６】
一部の実施形態では、本明細書で論じられる「記憶装置」は、記憶媒体にデータを記憶し、および記憶媒体からデータを取り出すように構成されたコンピュータシステムを備えてもよい。コンピュータシステムは、図１３を参照して説明されるいくつかのまたは全ての構成要素を使用して実装されてもよい。一部の実施形態では、記憶装置は、記憶装置への低待ち時間かつ高可用性リンクを使用してネットワークを通じたデータのアクセスを必要とする企業環境または他の類似の環境で使用されてもよい。記憶装置からは、より低い電力消費、より低いコスト、および良好な放熱がまた望ましいことがある。一部の実施形態では、記憶装置は、ラックマウント型デバイスであってもよく、そこでは、複数の記憶装置が同一位置に配置され、かつ集合的に維持されてもよい。他の実施形態では、記憶装置は、スタンドアロンデバイスであってもよい。記憶装置は、従来型コンピュータシステムに類似した他の周辺機器およびデバイスを有してもよいが、一部の実装形態では、記憶装置は、物理空間およびエネルギーの使用を最小化するために最適化されるモジュール設計を有する、必要最低限のサーバコンピュータであってもよい。記憶装置はまた、記憶装置における記憶媒体に記憶され、かつＩ／Ｏ要求を受信し、それらのＩ／Ｏ要求を下層の物理媒体への読み出し、書き込みおよび構成コマンドに復号化および変換するためにプロセッサによって実行されるファイルシステムソフトウェアスタックを備えてもよい。
【００３７】
本発明の一部の実施形態では、本明細書で論じられる「フラッシュ記憶媒体」は、不揮発性メモリ（ＮＶＭ）を含んでもよい。一部の例では、ＮＶＭを使用した記憶装置の実装形態は、ソリッドステートデバイスとも称されてもよい。ＮＶＭベースのデバイスの例示的な実装形態は、ＮＯＲ、ＮＡＮＤ、ＭＲＡＭ（磁気抵抗ＲＡＭ）、ＦＲＡＭ（登録商標）（強誘電体ＲＡＭ、ＲＲＡＭ（登録商標）（抵抗ＲＡＭ））、相変化メモリまたは任意の他の適切な技術を含んでもよいが、それらに限定されない。ＮＯＲフラッシュは、最大で１バイトなどの特定のメモリ位置でデータへの高速ランダムアクセス、読み出し、および書き込みを提供することができる。ＮＡＮＤフラッシュは、ランダムに読み出すことができるが、一般的には、高速で順次書き込みされ、小型ブロック呼出しページでデータを取り扱う。ＮＡＮＤフラッシュは、書き込みよりも高速に読み出すことができ、データのページ全体をより高速に転送する。ＮＯＲフラッシュは、ＮＡＮＤフラッシュよりも高速に読み出す以外は同様の方法で振舞うことができ、かつ書き込みはより低速になることがある。概して、高密度でＮＯＲフラッシュよりも低価格で、ＮＡＮＤ技術は、同一のサイズのシリコンに対してより高い容量を供給することができる。
【００３８】
一部の実装形態では、本発明の実施形態は、単一レベルセル（ＳＬＣ）ＮＡＮＤフラッシュ技術を利用してもよい。他の実装形態では、本発明の実施形態は、マルチレベルセル（ＭＬＣ）ＮＡＮＤフラッシュ記憶媒体を利用してもよい。ＭＬＣ  ＮＡＮＤは、同一の数のトランジスタを使用してより多くのビットが記憶されることを可能にするためにセルごとに複数のレベルを使用するフラッシュメモリ技術である。ＳＬＣ  ＮＡＮＤフラッシュ技術では、各セルは、２つの状態のうちの１つに存在することができ、セルごとに情報の１ビットを記憶する。ほとんどのＭＬＣ  ＮＡＮＤフラッシュメモリ技術は、セルごとに４つの可能な状態を有し、それによって、セルごとに情報の２ビットを記憶することができる。ＭＬＣ  ＮＡＮＤを使用することが、より高いデータ密度によって、記憶の単位ごとのコストを低減させるのに有利となることがある。
【００３９】
本明細書で説明されるように、一部の実施形態では、「ブレード」、「フラッシュブレード」または「ＮＶＭブレード」は、記憶を提供するために１つ以上のＮＶＭチップを一緒にグループ化することを指すことがあり、ＮＶＭチップは、ＮＶＭ記憶媒体を備える。ＮＶＭブレードは、ＮＶＭ記憶媒体へのアクセスを調停するためのブレードコントローラを有してもよい。ＮＶＭブレードコントローラは、ＮＶＭ記憶媒体上でデータにアクセス／記憶するためのコマンドを受信し、コマンドを処理し、かつＮＶＭ記憶媒体にデータを記憶し、またはＮＶＭ記憶媒体からデータを取り出すことに関与してもよい。１つの実施形態では、ＮＶＭブレードコントローラは、特定用途向け集積回路（ＡＳＩＣ）を使用して実装されてもよい。別の実施形態では、ＮＶＭブレードコントローラは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を使用して実装されてもよい。
【００４０】
本明細書で定義されるように、「コントローラボード」は、Ｉ／Ｏ要求を受信し、かつそれらのＩ／Ｏ要求を、ＮＶＭ記憶媒体を読み出し、書き込みおよび構成するためのコマンドに変換するための種々のハードウェア、ファームウェアおよびソフトウェア構成要素を含んでもよい。１つの実装形態では、コントローラボードは、プリント回路基板（ＰＣＢ）を使用して実装されてもよく、コントローラボードの種々の構成要素は、ボードに結合されてもよく、かつバスを使用して相互に通信してもよい。他の実装形態では、構成要素間で通信するために無線などの通信の他の手段が使用されてもよい。図７は、コントローラボードの例示的な実施形態である。本発明の実施形態を、いくつかの個別構成要素に関して説明することができるが、一部の実施形態では、いくつかの個別構成要素の機能は、１つのシリコンダイによって実行されてもよい。例えば、本明細書で説明されるように、処理およびルーティングなどの複数の個別構成要素の機能は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、マルチチップモジュール（ＭＣＭ）または任意の他のシリコン技術として実装されたコントローラによって実行されてもよい。本明細書で説明されるように、１つの実施形態では、「コントローラボード」は、プリント回路基板を使用して機能の組を実装するいくつかの個別構成要素を指してもよいが、「コントローラ」は、コントローラボード（例えば、個別構成要素を有するＰＣＢボード）およびコントローラ（例えば、ＡＳＩＣ、ＦＰＧＡなどとして実装されるいくつかの個別構成要素の機能）の両方を指してもよい。
【００４１】
本明細書で説明されるように、「処理エンティティ」は、１つ以上の物理または論理プロセッサを指してもよい。用語「処理エンティティ」または「処理コンプレックス」は、本発明の範囲から逸脱することなく、本明細書全体を通じて交換可能に使用されてもよい。例えば、処理エンティティは、Ｉｎｔｅｌ、Ｑｕａｌｃｏｍｍ、およびＴｉｌｅｒａなどのベンダからのデュアルコア、クアッドコアまたはマルチコアを含んでもよい。処理エンティティは、ファイルシステムソフトウェアスタックを実行してもよく、かつ記憶媒体にアクセスするためのネットワークからのＩ／Ｏ要求を復号化してもよい。１つの実装形態では、処理エンティティは、ＰＣＩｅプロトコルまたは同様のプロトコルに対するルートコンプレックスを含んでもよい。１つの実装形態では、処理エンティティは、ＡＳＩＣ、ＦＰＧＡまたはＭＣＭ内での処理ロジックとして実装されてもよい。
【００４２】
本明細書で説明されるように、「ルーティングエンティティ」は、インタフェーシングエンティティ、処理エンティティ、ＮＶＭブレードおよびルーティングエンティティ自体の間でデータをルーティングするための１つ以上のルータを指してもよい。１つの実装形態では、ルーティングエンティティは、ＰＣＩｅプロトコルに対するＰＣＩｅノードまたはエンドポイントを表してもよい。
【００４３】
本明細書で説明されるように、「インタフェーシングエンティティ」は、記憶装置とインタフェースするための１つ以上のホストインタフェースチップを指してもよい。１つの実施形態では、インタフェーシングエンティティは、ＰＣＩｅプロトコルを使用してＩ／Ｏ要求をルーティングエンティティに転送してもよい。インタフェースチップにおけるＩ／Ｏ要求は、ギガビットイーサネット（登録商標）、ファイバーチャネル、ダイヤルインまたはさらにＰＣＩｅプロトコルなどの任意の適切なプロトコルを使用して受信されてもよい。
【００４４】
本明細書で説明されるように、「Ｉ／Ｏ要求」は、記憶媒体にデータを記憶し、または記憶媒体からデータを取り出すためのネットワークから記憶装置への入力／出力要求を指してもよい。
【００４５】
本明細書で説明されるように、「Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）」は、より高い最大システムバススループット、より少ないＩ／Ｏピン数およびより小さい物理フットプリント、バスデバイスに対するより良好な性能−規模、さらなる詳細な誤り検出、ならびに報告機構および固有のホットプラグ機能のために設計された高速シリアルコンピュータ拡張バス規格を指してもよい。従来のＰＣＩｅシステムでは、ＰＣＩｅルートコンプレックスは、プロセッサに結合された全てのエンドポイントデバイスを列挙し、かつ木状構造を生成する。
【００４６】
企業システムのための記憶装置は、大記憶容量、記憶装置からの読み出しおよび記憶装置への書き込みに対する低待ち時間、高帯域幅、低電力消費、ならびに信頼性を必要とする。従来から、企業システムは、電力がオフになっている間にデータを保持するハードディスクドライブ（ＨＤＤ）などの記憶媒体を使用して実装される。ＨＤＤは、高速回転ディスクを使用する、デジタル情報を記憶および取り出すために使用される、データ記憶装置である。ＨＤＤは、面からデータを読み出し、および面へデータを書き込むために可動アクチュエータアーム上に配置された磁気ヘッドを有する１つ以上の剛体（「ハード」）高速回転ディスク（プラター）から構成される。
【００４７】
データを読み出しおよび書き込むことに関与する可動部により、ＨＤＤは本質的に誤りおよび障害を起こしやすく、かつデータのシーク時間の改善についての下限を有する。加えて、ＨＤＤは、回転プラターを有するため、製造することができる部品をどの程度小型にするか、および部品の電力消費をどの程度小さくするかについての限界が存在する。
【００４８】
ある実施形態では、本明細書で説明される技術は、ＮＶＭ記憶媒体を使用した記憶装置を実装することを提案する。ＮＶＭ記憶媒体が低シーク時間を有し、可動部を有さないため、一部の実施形態では、ＮＶＭ記憶媒体を使用することが有利となることがあり、かつ概して、ＨＤＤよりも信頼できるものとなることがある。
【００４９】
１つの実施形態では、構成要素、モジュールおよびコントローラボードの構成は、放熱を向上させ、電力消費を低下させ、電力および作業負荷を拡散し、ならびに待ち時間を減少させる方法で配置されてもよい。
【００５０】
従来の記憶装置は、１つ以上のコントローラボードを提供することができ、各々のコントローラボードは、Ｉ／Ｏ要求を受信し、要求を処理し、かつ記憶要求を適切な記憶媒体に転送するための単一の処理コンプレックスを備える。ネットワーク速度が増大し、かつこれまでに記憶装置のサイズを増大させる要求が増大するにつれ、記憶のために物理媒体にアクセスする単一ポイントが、システムに対するボトルネックとなることがあり、結果として、Ｉ／Ｏ要求に対する待ち時間が大きくなる。単一の処理コンプレックスにおける処理負荷が増大することによって、適切な放熱の課題を作り出す、より小規模エリアにおける高熱集中がもたらされることがある。さらに、単一のプロセシングユニットは、Ｉ／Ｏ要求に遅れずに十分に高速にトランザクションを処理することが可能でないことがある。従来のシステムでは、トランザクションのボトルネックが、ＨＤＤへの処理経路ではなく、ＨＤＤからの読み出し、およびＨＤＤへの書き込みに対するシーク時間よりも多かったため、単一のシステム設計は問題のあるものではなかった。
【００５１】
一部の実施形態では、記憶装置は、ＮＶＭ記憶媒体を使用して実装されてもよい。概して、ＮＶＭ記憶媒体は、従来のＨＤＤよりも低いシーク時間を有することができる。ＮＶＭ記憶媒体によって可能となる低シーク時間で、単一の処理コンプレックスを使用した従来のコントローラボード設計は、準最適な構成をもたらすことがある。本発明の実施形態はまた、ＮＶＭ記憶媒体へのアクセス時間を改善するためのさらなる強化をもたらすことができる。例示を目的にＮＶＭ記憶媒体を使用して、本発明の一部の実施形態を本明細書で説明することができるが、本発明は、ＮＶＭ記憶媒体に限定されないことがあり、かつ本発明の範囲から逸脱することなく他の適切な物理記憶媒体が使用されてもよい。
【００５２】
さらに、従来の記憶装置は、データに対するミラー化記憶（ｍｉｒｒｏｒｅｄ  ｓｔｏｒａｇｅ）を維持することによってフォールトトレラントシステムを実装することができる。換言すると、書き込み動作ごとに、独立した処理経路を使用して少なくとも２つの別個の記憶サブシステムにデータが記憶されてもよい。電力供給装置障害、記憶媒体の障害または処理経路における誤りなどの、一次記憶サブシステムにおける突発障害の事象では、一次システムが復旧する間にデータを取り出し、および記憶するためのアクティブバックアップとして、ミラー化データを有する二次記憶システムが使用されてもよい。ＨＤＤに対し、ミラー化データを維持することは、媒体の低い信頼性によって必須となることがあり、かつ媒体と関連付けられたより低いコストによって適切となることがある。
【００５３】
一部の実施形態では、フォールトトレラントシステムを実装するためにＮＶＭ記憶媒体が使用されてもよい。比較的、ＮＶＭ記憶媒体は、従来の記憶媒体よりも信頼でき、かつ誤りを起こしにくいことがある。一部の実装形態では、ＮＶＭ記憶媒体上に記憶されたデータの信頼性は、独立したディスクの冗長アレイ（ＲＡＩＤ）などの技術または他の適切な誤り復旧および訂正技術を使用して保証されてもよい。従って、図面を参照して本明細書で論じられる実施形態でのさらなる詳細で説明されるように、記憶媒体を含むシステム全体をミラー化することの代わりに、ＮＶＭ記憶媒体の同一の物理位置からの同一の読み出し動作または同一の物理位置への同一の書き込み動作のための複数の経路を提供することによって、システムの全体のコストを削減させるために、ＮＶＭ記憶媒体を使用することを実装することが実施形態では有利となることがある。
【００５４】
図１は、本発明の１つの実施形態に従った記憶装置の例示的な高レベルブロック図を示す。ブロック１０２は、２つのコントローラボード（１０４および１０６）、ならびにコントローラボードに結合されたブレード（１０２ａ〜ｎ）の配列を有する記憶装置を示す。１つの実施形態では、図１からの記憶装置は、アクティブ／アクティブ記憶システムを表すことができる。アクティブ／アクティブ構成によって、両方のコントローラボードに対する処理モジュールがＩ／Ｏを処理し、かつ他方に対するスタンバイ能力を提供することが可能になる。１つの単純化した例では、特定のブレードに対する読み出しまたは書き込みコマンドがコントローラボード１０４から機能しない場合、同一の読み出しまたは書き込みがコントローラボード１０６を通じて試みられてもよい。コントローラボード１０４および１０６の間で状態情報を通信するための通信プロトコルが実装されてもよい。両方のコントローラボードと関連付けられた処理モジュールが同時に、またはほぼ同時にＩ／Ｏを処理することができるため、性能を高めるためにアクティブ／アクティブ記憶装置を実装することが有利となることがある。しかしながら、図１からの記憶装置は、アクティブ／アクティブ記憶装置に限定されず、かつアクティブ／パッシブ構成で使用されてもよく、そこでは、１つのコントローラボードに対する処理モジュールは、Ｉ／Ｏ要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合にアクティブとなるべく、Ｉ／Ｏ動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
【００５５】
図１に示されるように、各ＮＶＭブレードは、両方のコントローラボードに結合されてもよい。各コントローラボードは、ルーティングのためのルーティングモジュール（１０８および１１０）、Ｉ／Ｏ要求を処理するための処理モジュール（１１２および１１４）、ならびにＩ／Ｏ要求を受信するためのホストインタフェース（１１６および１１８）を有する。１つの実装形態では、ルーティングモジュール（１０８および１１０）は、さらなるＩ／Ｏ要求の処理のために、インタフェースモジュール（１１６および１１８）から処理モジュール（１１２および１１４）にＩ／Ｏ要求をルーティングすることに関与してもよい。処理モジュール（１１２および１１４）は、ファイルシステムソフトウェアスタック（図示せず）を使用してＩ／Ｏ要求を処理してもよい。ルーティングモジュール（１０８および１１０）はまた、処理モジュール（１１２および１１４）からＮＶＭブレード１２０ａ〜ｎにアクセスおよび記憶要求をルーティングする。１つの実装形態では、ＮＶＭブレードは、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用してルーティングモジュール（１０８および１１０）に結合される。
【００５６】
１つの実装形態では、各ＮＶＭブレードは、ＮＶＭ記憶媒体の各々の物理アドレスがコントローラボードのいずれかによってアクセスされることを可能にする、両方のコントローラボード（１０４および１０６）に結合されてもよい。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および／もしくはＲＡＩＤなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。
【００５７】
図２は、本発明の１つの実施形態に従った記憶装置の別の例示的なブロック図を示す。図２は、２つのコントローラボードの画像を示し、各コントローラボードは、２つのプロセッサ、メモリ、ルータ、およびインタフェースチップを含む。図２はまた、空気の流れのための中央溝を有する４２個のＮＶＭブレードを示す。図示しないが、記憶装置はまた、電力管理機能を有する２つのブリッジボードおよびオンボードＮＶＭを含んでもよい。オンボードＮＶＭは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し／書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。一部の実施形態では、バイト書き込み可能な磁気ＲＡＭなどのＮＶＭは、オンボードＮＶＭを実装するために使用されてもよい。加えて、記憶装置は、１２個のファンを含んでもよく、ＮＶＭメモリを冷却するために８個のファンが使用されてもよく、かつコントローラボードを冷却するために４のファンが使用される。空気の流れ、処理負荷、放熱を最適化するために、図２の例示的な構成に構成要素が配置されてもよい。記憶装置はまた、複数の電力供給装置を含んでもよい。電力供給装置は、概して障害を起こしやすく、かつファンまたは他の電力構成要素の障害によって機能しなくなることがある。記憶装置に電力供給する複数の電力供給装置を有することは、電力供給装置のうちの１つの構成要素の障害による記憶装置の障害を回避することができる。１つの実装形態では、コントローラまたはコントローラボードは、母線を通じて電力供給されてもよく、母線は、複数の電力供給装置から電力を供給することができる。母線に接続された電力供給装置のうちの１つの障害の事象では、母線は、機能している電力供給装置から電力を供給し続ける。一部の実装形態では、機能しなくなった電力供給装置は、適切に機能している電力供給装置とホットスワップ可能であってもよい（すなわち、記憶装置の電源を入れなおすことなく交換可能である）。
【００５８】
ＮＶＭブレードおよびコントローラ／コントローラボードは、ボードのうちのいずれか１つが機能しなくなった場合に、短絡を防止するための個々に実装されたデジタル回路ブレーカを有してもよい。さらに、電力供給装置はまた、それらが単に母線に電力を供給するが、電力供給装置が機能しなくなった場合に母線から電力が排出しないことを可能にする方法で実装されてもよい。１つの実装形態では、機能しなくなった電力供給装置を通じて電力が排出することを防止するためにダイオードが使用されてもよい。
【００５９】
コントローラボード、電力供給装置、ＮＶＭブレード、ブリッジボードおよびファンなどの、図２を参照して説明される構成要素の数、ならびにそれらの関連する構成は、非限定的であり、かつ記憶装置の特定の構成を示すための例として提供される。
【００６０】
図３は、本発明の１つの実施形態に従った記憶装置のさらなる別の例示的なブロック図を示す。図３に示されるように、記憶装置の構成要素は、矩形形状のボックスに適合するように構成されてもよい。１つの例示的な構成では、空気の流れは、前面から背面へであってもよく、記憶装置の背面にファンが配置される。この形状は、企業データ記憶設備におけるラック構成に複数の記憶装置をともにグループ化するのに有利となることがある。しかしながら、記憶装置の形状は、図３に示される矩形形状ボックスに限定されない。
【００６１】
図４は、本発明の１つの実施形態に従った記憶装置の例示的なブロック図を示す。図４のシステム４０２は、第１のコントローラボード４０４および第２のコントローラボード４０６を有する記憶装置を示す。例示を目的に、図４は、複数のＮＶＭブレードからの単一のＮＶＭブレード４２０を示す。
【００６２】
第１のコントローラボード４０４は、第１の処理エンティティ４１２、第１の処理エンティティに結合されたメモリ４１６、第２の処理エンティティ４１４、第２の処理エンティティに結合されたメモリ４３２、インタフェーシングエンティティ４０８、およびルーティングエンティティ４１０を有してもよい。
【００６３】
第２のコントローラボード４０６は、第３の処理エンティティ４２４、第３の処理エンティティに結合されたメモリ４２８、第４の処理エンティティ４１８、第４の処理エンティティに結合されたメモリ４３０、インタフェーシングエンティティ４２２、およびルーティングエンティティ４２６を有してもよい。
【００６４】
１つの実装形態では、ルーティングエンティティ（４１０および４２６）は、さらなるＩ／Ｏ要求の処理のために、インタフェーシングエンティティ（４０８および４２２）から処理エンティティ（４１２、４１６、４２８および４３０）のうちの１つにＩ／Ｏ要求をルーティングすることに関与してもよい。処理エンティティは、ファイルシステムソフトウェアスタック（図示せず）を使用してＩ／Ｏ要求を処理してもよい。ルーティングエンティティ（４１０および４２６）はまた、処理エンティティ（４１２、４１６、４２８および４３０）からＮＶＭブレード４２０にデータ要求をルーティングしてもよい。
【００６５】
一部の実施形態では、第１のコントローラボード４０４からのルーティングエンティティ４１０、および第２のコントローラボード４０６からのルーティングエンティティ４２６は、ＮＶＭブレード４２０にデータを記憶し、およびＮＶＭブレード４２０からデータを取り出すためにＮＶＭブレード４２０に結合されてもよい。１つの実装形態では、ＮＶＭブレード４２０は、ＰＣＩｅプロトコルを使用してルーティングエンティティに結合される。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および／もしくはＲＡＩＤなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。
【００６６】
図４での、１つの例示的な構成では、第１の処理エンティティ４１２は、１つ以上のＩ／Ｏ要求を受信し、Ｉ／Ｏ要求と関連付けられたデータが、記憶動作のためのものであり、かつ第１のルーティングエンティティ４１０に結合された第１のブレード上の特定の位置と関連付けられていると判定し、および第１のブレード４２０上に第１のデータを記憶するために、Ｉ／Ｏ要求と関連付けられたデータを第１のルーティングエンティティに伝送するように構成されてもよい。１つの実装形態では、第１の処理エンティティ４１２上で実行するファイルシステムソフトウェアスタックは、Ｉ／Ｏ要求と関連付けられた位置およびＮＶＭブレードの動作を判定してもよい。例えば、１つの実施形態では、第１の処理エンティティ４１２は、ファイル識別子から物理記憶媒体上のデータに対する物理位置への１つ以上のアドレス変換を実行してもよい。１つの態様では、第１の処理エンティティ４１２によって受信されるＩ／Ｏ要求は、インタフェーシングエンティティ４０８において最初に受信されてもよく、かつ複数のルーティングエンティティのうちの１つを通じて第１の処理エンティティ４１２に転送されてもよい。
【００６７】
同様に、第２の処理エンティティ４１４は、別のＩ／Ｏ要求を受信し、Ｉ／Ｏ要求と関連付けられたデータが、第１のルーティングエンティティ４１０に結合された第１のブレード４２０上の別の位置に記憶されることになると判定し、かつ第１のブレード４２０上にデータを記憶するために、Ｉ／Ｏ要求と関連付けられたデータを第１のルーティングエンティティ４１０に伝送するように構成されてもよい。第２の処理エンティティ４１４はまた、Ｉ／Ｏ要求と関連付けられた位置および記憶動作を判定するためにファイルシステムソフトウェアスタックを実行してもよい。
【００６８】
上記例は、同一のコントローラボードからの２つの処理エンティティ間で同一のＮＶＭブレード４２０にアクセスするための処理エンティティ（４１２および４１４）間で複数のＩ／Ｏ要求を負荷分散し、かつ拡散するための例示的な構成および処理を示す。２つの処理エンティティが示されるが、複数の処理エンティティが使用されてもよい。これは、Ｉ／Ｏ要求を処理する負荷を拡散し、かつ超高速で同一の物理媒体への複数の記憶動作を同時に実行している間のボトルネックを回避するのに有利となることがある。
【００６９】
記憶されたデータはまた、同様の技術を使用して物理媒体から取り出されてもよい。例えば、第２の処理エンティティ４１４は、第１の処理エンティティ４１２またはそれについての任意の他の処理エンティティによって記憶されたデータを読み出すためのＩ／Ｏ要求を受信するように構成されてもよい。第２の処理エンティティ４１４は、Ｉ／Ｏ要求が、第１のルーティングエンティティ４１０に結合された第１のブレード４２０の位置におけるデータに対する読み出し要求であると判定し、第１のルーティングエンティティ４１０からの位置からのデータを要求し、かつ第１のルーティングエンティティ４１０から第１のデータを受信してもよい。
【００７０】
１つの例示的な構成では、第１の処理エンティティ４１２および第２の処理エンティティ４１４は、直接結合されなくてもよいが、第１のルーティングエンティティ４１０を通じて相互に結合されてもよい。第１の処理エンティティ４１２と第１のルーティングエンティティ４１０との間のデータの伝送、および第２の処理エンティティ４１４と第１のルーティングエンティティ４１０との間のデータの伝送は、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。
【００７１】
例示を目的に、図４は、１つのＮＶＭブレードおよび２つのコントローラボードを示し、各々のコントローラボードは、２つの処理エンティティ、２つのメモリならびにルーティングエンティティおよびインタフェーシングエンティティを有するが、本発明の実施形態は、図面に示されたエンティティの数に限定されない。例えば、別の例示的な構成は、本発明の範囲から逸脱することなく、複数のＮＶＭブレード、複数のルーティングエンティティおよび複数のインタフェーシングエンティティを含んでもよい。図７は、複数のルータ（ルーティングエンティティ）および複数のインタフェースチップ（インタフェーシングエンティティ）を有するそのような構成の１つの例である。
【００７２】
別の例示的な構成では、第１の処理エンティティ４１２および第２の処理エンティティ４１４は、第１のコントローラボード４０４上の別の（第２の）ルーティングエンティティ（図示せず）に結合されてもよい。ルーティングエンティティ４１０と同様に、第２のルーティングエンティティはまた、別のＮＶＭブレードに結合されてもよく、かつ第１の処理エンティティ４１２および第２の処理エンティティ４１４の両方から受信された記憶アクセスコマンドを処理してもよい。第１の処理エンティティ４１２と第２のルーティングエンティティ（図示せず）との間のデータの伝送、および第２の処理エンティティ４１４と第２のルーティングエンティティ（図示せず）との間のデータの伝送は、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。同様に、第２のコントローラボード４０６上の構成要素は、上述した第１のコントローラボード４０４と同様の方法で構成されてもよく、かつ動作してもよい。
【００７３】
ＮＶＭブレード４２０は、複数のコントローラボードと通信するための複数のルーティングインタフェースを含んでもよい。記憶装置４０２の１つの例示的な実装形態では、ルーティングエンティティ４１０を備えた第１のコントローラボード４０４およびルーティングエンティティ４２６を備えた第２のコントローラボード４０６は、ＮＶＭブレード４２０に結合される。ＮＶＭブレード４２０は、ルーティングエンティティ４１０を通じて第１のコントローラボード４０４に結合されてもよく、かつＮＶＭブレードは、ルーティングエンティティ４２６を通じて第２のコントローラボード４０６に結合されてもよい。１つの実装形態では、ＮＶＭブレード４２０は、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用してコントローラボード上のルーティングエンティティ（４１０および４２６）と通信する。１つの実施形態では、ＮＶＭブレードは、ＮＶＭ記憶媒体を備える。他の実施形態では、記憶装置は、複数のＮＶＭブレードを含んでもよく、かつコントローラボードは、複数のルーティングエンティティを含んでもよい。
【００７４】
一部の実施形態では、第１のコントローラボード４０４からのルーティングエンティティ４１０および第２のコントローラボード４０６からのルーティングエンティティ４２６は、相互に結合されてもよい。一部の実装形態では、２つのルーティングエンティティは、非ＰＣＩｅ準拠の透過ブリッジを使用して相互に結合されてもよい。１つの実装形態では、２つのルーティングエンティティ（４１０および４２６）は、フォールトトレランス情報、システム状態情報、トランザクションの完了情報およびコントローラボード相互の状態に関する情報を通信してもよい。
【００７５】
１つの実施形態では、図４からの記憶装置４０２は、アクティブ／アクティブ記憶システムを表してもよい。アクティブ／アクティブ構成によって、両方のコントローラボードに対する処理モジュールが、Ｉ／Ｏ読み出しを処理し、かつ相互のスタンバイ能力を提供することが可能になる。１つの単純化した例では、特定のブレードに対する読み出しまたは書き込みコマンドがコントローラボード４０４から機能しない場合、同一の読み出しまたは書き込みがコントローラボード４０６を通じて試みられてもよい。上述したように、ルーティングエンティティ４１０および４２６を通じてコントローラボード４０４および４０６の間で状態情報を通信するための通信プロトコルが実装されてもよい。両方のコントローラボードと関連付けられた処理モジュールが同時にＩ／Ｏを処理することができるため、性能を高めるためにアクティブ／アクティブ記憶装置を実装することが有利となることがある。しかしながら、図４からの記憶装置は、アクティブ／アクティブ記憶装置に限定されず、かつアクティブ／パッシブ構成で使用されてもよく、そこでは、１つのコントローラボードに対する処理モジュールは、Ｉ／Ｏ要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合にアクティブとなるべく、Ｉ／Ｏ動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
【００７６】
アクティブ／アクティブシステムの１つの実装形態では、１つ以上のコントローラボードは、マスタボードとしての役割を担ってもよく、かつ他の１つ以上のボードは、スレーブボードとしての役割を担ってもよい。マスタコントローラボードは、ＮＶＭブレードに対する全てのデータ書き込みを実行してもよく、マスタまたはスレーブボードのいずれかが読み出しを実行してもよい。
【００７７】
１つの例示的な実装形態では、スレーブコントローラボードに到達するＩ／Ｏ書き込み動作は、マスタコントローラボードによって部分的に実行されてもよい。例えば、書き込みコマンドまたは書き込みコマンドと関連付けられた情報は、スレーブコントローラボードからマスタコントローラボードに転送されてもよい。１つの実装形態では、書き込み動作と関連付けられた情報をスレーブコントローラボードからマスタコントローラボードに渡すために、ＮＴ  ＰＣＩｅブリッジが使用されてもよい。１つの実装形態では、スレーブコントローラボードに到達する書き込み動作に対するデータが、スレーブコントローラボードによってＮＶＭブレードにいまだに提供されてもよい。
【００７８】
マスタおよびスレーブコントローラボードは、読み出しおよび書き込み動作をＮＶＭブレードにマッピングするためのマッピングテーブルを維持してもよい。１つの実装形態では、読み出しおよび書き込みテーブルは、ＮＶＭブレードのうちの１つに記憶される。１つの実装形態では、読み出しおよび書き込みテーブルは、２つのコントローラボードによって共有されてもよい。さらに別の実装形態では、読み出しおよび書き込みテーブルは、コントローラボードによって別個に維持されてもよい。各コントローラボードがそれ自体のテーブルを有する例では、マスタコントローラボードは、マスタおよびスレーブコントローラボードに対するテーブルを更新してもよい。
【００７９】
スレーブコントローラボードが機能しない場合、マスタコントローラボードは、動作を処理し続ける。換言すると、マスタコントローラボードが機能しない場合、記憶装置は、スレーブコントローラボードにフェールオーバする。スレーブコントローラボードは、新たなマスタコントローラボードになってもよく、かつ全ての書き込み動作を処理することを開始してもよい。
【００８０】
読み出し動作が処理電力およびＩ／Ｏ要求を復号化する時間を必要とするため、上述したシステムによって、２つ以上のコントローラボード全体を通じて読み出しトランザクションに対する作業負荷を分散することが可能となることがある。
【００８１】
図５は、本発明の１つの実施形態に従った本発明の実施形態を実行するための方法を示すフローチャートである。方法５００におけるシグナリングは、ハードウェア（回路、個別ロジックなど）、ソフトウェア（汎用コンピューティングシステムまたは個別マシン上で動作するものなど）、ファームウェア（組み込みソフトウェア）、またはそれらの任意の組み合わせを備える処理ロジックによって実行される。１つの実施形態では、方法５００は、図１３で説明されるような１つ以上のコンピュータシステム１３００によって実行される。
【００８２】
図５のフローチャートは、Ｉ／Ｏ要求を処理する第１の処理エンティティ５０２および第２の処理５０４を示す。図５は２つの処理エンティティのみを示しているが、図５を参照して説明されるような本発明の実施形態を実行するために複数の処理エンティティが実装されてもよい。例えば、本発明の実施形態は、第３、第４、第５、または任意の数の処理エンティティを使用して、第１の処理エンティティまたは第２の処理エンティティによって実行される本発明の同様のステップを実行してもよい。さらに、図６における開始および終了インジケータの間で各処理エンティティに対して１つのＩ／Ｏ要求のみが示されているが、任意の数のＩ／Ｏ要求が実行されてもよい。
【００８３】
ステップ５０６において、複数のＮＶＭブレードに結合された第１の処理エンティティは、ルーティングエンティティを介して第１のＩ／Ｏ要求を受信する。
【００８４】
ステップ５０８において、第１の処理エンティティは、第１のＩ／Ｏ要求が書き込みまたは読み出し要求であるかを判定する。ステップ５０８において、第１のＩ／Ｏ要求が読み出し要求であると判定される場合、ステップ５１０において、第１の処理エンティティは、複数のＮＶＭブレードからのターゲットＮＶＭブレード、およびターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになるターゲットＮＶＭブレードにおける位置を判定してもよい。１つの実装形態では、第１の処理エンティティは、第１の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、ターゲットＮＶＭブレードおよびターゲットＮＶＭブレードにおける位置を判定してもよい。
【００８５】
ステップ５１２において、第１の処理エンティティは、第１のＩ／Ｏ要求と関連付けられたデータを要求する。ステップ５１４において、第１の処理エンティティは、読み出しＩ／Ｏ要求に対しルーティングエンティティを介してデータを受信する。
【００８６】
ステップ５０８において、第１のＩ／Ｏ要求が書き込み要求であると判定される場合、ステップ５１６において、第１の処理エンティティは、複数のＮＶＭブレードからのターゲットＮＶＭブレード、およびそこにおいてデータが記憶されることになるターゲットＮＶＭブレードにおける位置を判定してもよい。１つの実装形態では、第１の処理エンティティは、第１の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、ターゲットＮＶＭブレードおよびターゲットＮＶＭブレードにおける位置を判定してもよい。ステップ５１８において、第１の処理エンティティは、書き込みＩ／Ｏ要求に対しターゲットＮＶＭブレードにデータを記憶するために、ルーティングエンティティを介してデータをターゲットＮＶＭブレードに伝送する。
【００８７】
同様に、ステップ５２０において、第２の処理エンティティ５０４において、複数のＮＶＭブレードに結合された第２の処理エンティティは、ルーティングエンティティを介して第２のＩ／Ｏ要求を受信してもよい。第２の処理エンティティ５０４は、第１の処理エンティティにおいて受信された第１のＩ／Ｏ要求の前／後、または同時に第２のＩ／Ｏ要求を受信してもよい。さらに、第１の処理エンティティ５０２および第２の処理エンティティ５０４は、相互に独立して図５で識別されたステップを実行してもよい。
【００８８】
ステップ５２２において、第２の処理エンティティは、第２のＩ／Ｏ要求が書き込みまたは読み出し要求であるかを判定する。ステップ５２２において、第２のＩ／Ｏ要求が読み出し要求であると判定される場合、ステップ５２４において、第２の処理エンティティは、複数のＮＶＭブレードからのターゲットＮＶＭブレード、およびターゲットＮＶＭブレードにおける位置であって、そこからデータが読み出されることになるターゲットＮＶＭブレードにおける位置を判定してもよい。１つの実装形態では、第２の処理エンティティは、第２の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、ターゲットＮＶＭブレードおよびターゲットＮＶＭブレードにおける位置を判定してもよい。ステップ５２６において、第２の処理エンティティは、第２のＩ／Ｏ要求と関連付けられたデータを要求する。ステップ５２８において、第２の処理エンティティは、読み出しＩ／Ｏ要求に対しルーティングエンティティを介してデータを受信する。
【００８９】
代わりに、ステップ５２２において、第２のＩ／Ｏ要求が書き込み要求であると判定される場合、ステップ５３０において、第２の処理エンティティは、複数のＮＶＭブレードからのターゲットＮＶＭブレード、およびそこにおいてデータが記憶されることになるターゲットＮＶＭブレードにおける位置を判定してもよい。１つの実装形態では、第２の処理エンティティは、第２の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、ターゲットＮＶＭブレードおよびターゲットＮＶＭブレードにおける位置を判定してもよい。ステップ５３２において、第２の処理エンティティは、書き込みＩ／Ｏ要求に対しターゲットＮＶＭブレードにデータを記憶するために、ルーティングエンティティを介してデータをターゲットＮＶＭブレードに伝送する。
【００９０】
上述したように、第１の処理エンティティ５０２と同様に、第２の処理エンティティ５０４は、Ｉ／Ｏ要求を処理してもよい。一部の実施形態では、第１の処理エンティティおよび第２の処理エンティティは、任意の順序で相互にＩ／Ｏ要求を処理してもよく、また、同時にＩ／Ｏ要求を処理してもよい。さらに、第１の処理エンティティおよび第２の処理エンティティは、複数のＮＶＭブレードのうちの１つをターゲットとするトランザクションを同時に処理してもよい。
【００９１】
図４に戻って参照すると、システムにおける２つの処理エンティティの例は、図４に示された処理エンティティのうちのいずれかによって示されてもよい。例えば、２つの処理エンティティは、同一のコントローラボード４０４上の４１２および４１４であってもよく、または異なるコントローラボード上に存在する処理エンティティ４１２および処理エンティティ４２８であってもよい。
【００９２】
図５を参照して論じられる１つ以上の構成要素間での通信は、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。より高速な処理を可能にし、ボトルネックを回避し、かつより良好な放熱を促進するために、Ｉ／Ｏ要求によって、同一のＮＶＭブレードに対するメモリ動作がもたらされる場合でさえ、図５の方法は、複数の処理エンティティ間でＩ／Ｏ要求を拡散するのに有利となることがある。
【００９３】
図５で示される特定のステップが、本発明の実施形態に従って、動作のモード間で切り替える特定の方法を提供することを理解するべきである。他の一連のステップがまた、代替的な実施形態に従って実行されてもよい。例えば、本発明の代替的な実施形態は、異なる順序で上記に示されたステップを実行してもよい。例示のために、ユーザは、動作の第３のモードから動作の第１のモードに、第４のモードから第２のモードに、またはそれらの間の任意の組み合わせで変更することを選択してもよい。さらに、図５に示される個々のステップは、個々のステップに応じて種々の順序で実行することができる複数のサブステップを含んでもよい。さらに、特定の応用例に応じて追加ステップが追加または削除されてもよい。当業者は、方法５００の多くの変形形態、修正形態、および代替形態を認識かつ理解するであろう。
【００９４】
図６は、本発明の１つの実施形態に従った本発明の実施形態を実行する別の方法を示すフローチャートである。方法６００におけるシグナリングは、ハードウェア（回路、個別ロジックなど）、ソフトウェア（汎用コンピューティングシステムまたは個別マシン上で動作するものなど）、ファームウェア（組み込みソフトウェア）、またはそれらの任意の組み合わせを備える処理ロジックによって実行される。１つの実施形態では、方法６００は、図１３で説明されるような１つ以上のコンピュータシステム１３００によって実行される。
【００９５】
図６のフローチャートは、Ｉ／Ｏ要求を処理する第１の処理エンティティ６０２および第２の処理６０４を示す。図６は２つの処理エンティティのみを示しているが、図６を参照して説明されるような本発明の実施形態を実行するために複数の処理エンティティが実装されてもよい。例えば、本発明の実施形態は、第３、第４、第５、または任意の数の処理エンティティを使用して、第１の処理エンティティまたは第２の処理エンティティによって実行される本発明の同様のステップを実行してもよい。さらに、図６における開始および終了インジケータの間で各処理エンティティに対して１つのＩ／Ｏ要求のみが示されているが、任意の数のＩ／Ｏ要求が実行されてもよい。図６は、図５で説明された実施形態の１つの実装形態を説明する。
【００９６】
ステップ６０６において、複数のＮＶＭブレードに結合された第１の処理エンティティは、第１のルーティングエンティティを介して第１のＩ／Ｏ要求を受信する。
【００９７】
ステップ６０８において、第１の処理エンティティは、第１のＩ／Ｏ要求が書き込みまたは読み出し要求であるかを判定する。ステップ６０８において、第１のＩ／Ｏ要求が読み出し要求であると判定される場合、ステップ６１０において、第１の処理エンティティは、読み出し要求が、複数のＮＶＭブレードからの第１のルーティングエンティティに結合された第１のＮＶＭブレードの第１の位置からのデータに対する読み出しであると判定してもよい。１つの実装形態では、第１の処理エンティティは、第１の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、第１のＮＶＭブレードおよび第１のＮＶＭブレードにおける第１の位置を判定してもよい。
【００９８】
ステップ６１２において、第１の処理エンティティは、第１のルーティングエンティティを介して第１のＩ／Ｏ要求と関連付けられたデータを要求する。ステップ６１４において、第１の処理エンティティは、第１のルーティングエンティティを介してデータを受信し、かつ読み出しＩ／Ｏ要求を完了する。
【００９９】
ステップ６０８において、第１のＩ／Ｏ要求が書き込み要求であると判定される場合、ステップ６１６において、第１の処理エンティティは、複数のＮＶＭブレードから第１のＮＶＭブレード、およびそこにおいてデータが記憶されることになる第１のＮＶＭブレードにおける第１の位置を判定してもよい。１つの実装形態では、第１の処理エンティティは、第１の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、第１のＮＶＭブレードおよび第１のＮＶＭブレードにおける第１の位置を判定してもよい。ステップ６１８において、第１の処理エンティティは、第１のＮＶＭブレード上の第１の位置にデータを記憶するために第１のルーティングエンティティを介してデータを第１のＮＶＭブレードに伝送する。
【０１００】
同様に、ステップ６２０において、第２の処理エンティティ６０４において、複数のＮＶＭブレードに結合された第２の処理エンティティは、第１のルーティングエンティティを介して第２のＩ／Ｏ要求を受信してもよい。第２の処理エンティティ６０４は、第１の処理エンティティにおいて受信された第１のＩ／Ｏ要求の前／後、または同時に第２のＩ／Ｏ要求を受信してもよい。
【０１０１】
ステップ６２２において、第２の処理エンティティは、第２のＩ／Ｏ要求が書き込みまたは読み出し要求であるかを判定する。ステップ６２２において、第２のＩ／Ｏ要求が読み出し要求であると判定される場合、ステップ６２４において、第２の処理エンティティは、読み出し要求が、複数のＮＶＭブレードからの第１のルーティングエンティティに結合された第１のＮＶＭブレードの第１の位置からのデータに対する読み出しであると判定してもよい。１つの実装形態では、第２の処理エンティティは、第２の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、第１のＮＶＭブレードおよび第１のＮＶＭブレード上の第１の位置を判定してもよい。ステップ６２６において、第２の処理エンティティは、第１のルーティングエンティティを介して、第２のＩ／Ｏ要求と関連付けられたデータを要求する。ステップ６２８において、第２の処理エンティティは、第１のルーティングエンティティを介してデータを受信し、かつ読み出しＩ／Ｏ要求を完了する。
【０１０２】
代わりに、ステップ６２２において、第２のＩ／Ｏ要求が書き込み要求であると判定される場合、ステップ６３０において、第２の処理エンティティは、書き込み要求が、複数のＮＶＭブレードからの第１のルーティングエンティティに結合された第１のＮＶＭブレード上の第１の位置にデータを記憶するための要求である場合があると判定してもよい。１つの実装形態では、第１の処理エンティティは、第２の処理エンティティ上で実行するファイルシステムソフトウェアスタックを使用して、１つ以上のアドレス変換を実行することによって、第１のＮＶＭブレードおよび第１のＮＶＭブレード上の第１の位置を判定してもよい。ステップ６３２において、第２の処理エンティティは、書き込みＩ／Ｏ要求に対しターゲットＮＶＭにデータを記憶するために、第１のルーティングエンティティを介してデータをターゲットＮＶＭブレードに伝送する。
【０１０３】
上述したように、第１の処理エンティティ６０２と同様に、第２の処理エンティティ６０４は、Ｉ／Ｏ要求を処理してもよい。一部の実施形態では、第１の処理エンティティおよび第２の処理エンティティは、任意の順序で相互にＩ／Ｏ要求を処理してもよく、また、同時にＩ／Ｏ要求を処理してもよい。さらに、第１の処理エンティティおよび第２の処理エンティティは、複数のＮＶＭブレードのうちの１つをターゲットとするトランザクションを同時に処理してもよい。
【０１０４】
図４に戻って参照すると、同一のコントローラボード上に存在し、かつ同一のルーティングエンティティを通じて同一のＮＶＭブレードにアクセスする２つの処理エンティティの例は、同一のコントローラボード４０４上に存在する処理エンティティ４１２および４１４によって示されてもよい。図６に示されたステップによって、同一のコントローラボード上に存在する２つの処理エンティティが、同一のＮＶＭブレードまたはさらに、ＮＶＭブレード上の同一の位置をターゲットとするＩ／Ｏ要求を同時に処理およびサービスすることが可能になる。図６で説明されるように、Ｉ／Ｏ要求が別個の処理エンティティにおいて復号化および処理されるが、それらは、ＮＶＭブレードにアクセスするために同一のルーティングエンティティを使用してもよく、従ってハードウェアの複製を回避することによってコストを節約する。
【０１０５】
図６を参照して論じられる１つ以上の構成要素間での通信は、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して実行されてもよい。より高速な処理を可能にし、ボトルネックを回避し、かつより良好な放熱を促進するために、Ｉ／Ｏ要求によって、同一のＮＶＭブレードに対するメモリ動作がもたらされる場合でさえ、図６の方法は、複数の処理エンティティ間でＩ／Ｏ要求を拡散するのに有利となることがある。
【０１０６】
図６で示される特定のステップが、本発明の実施形態に従って、動作のモード間で切り替える特定の方法を提供することを理解するべきである。他の一連のステップがまた、代替的な実施形態に従って実行されてもよい。例えば、本発明の代替的な実施形態は、異なる順序で上記に示されたステップを実行してもよい。例示のために、ユーザは、動作の第３のモードから動作の第１のモードに、第４のモードから第２のモードに、またはそれらの間の任意の組み合わせで変更することを選択してもよい。さらに、図６に示される個々のステップは、個々のステップに応じて種々の順序で実行することができる複数のサブステップを含んでもよい。さらに、特定の応用例に応じて追加ステップが追加または削除されてもよい。当業者は、方法６００の多くの変形形態、修正形態、および代替形態を認識かつ理解するであろう。
【０１０７】
図７は、本発明の１つの実施形態に従ったコントローラボードの例示的なブロック図を示す。１つの実施形態では、コントローラボード７０２は、図１のコントローラボード１０４または１０６を表してもよい。図７に示されるように、コントローラボードは、２つのプロセッサ（７０４および７０８）、４つのルータ（７１２、７１４、７１６、７１８）、ならびに４つのインタフェースチップ（７２０、７２２、７２４および７２６）を有する。プロセッサ０（７０４）は、そのローカルメモリ７０６ａ〜ｄへのアクセスを制御するためのメモリコントローラを有してもよい。同様に、プロセッサ１（７０８）はまた、そのローカルメモリ７１０ａ〜ｄへのアクセスを制御するためのメモリコントローラを有してもよい。１つの実施形態では、インタフェースチップおよびルータは、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して相互に通信してもよい。ＰＣＩｅはまた、プロセッサとルータとの間での通信のためにルーティングプロトコルとして使用されてもよい。インタフェースチップにおけるＩ／Ｏ要求は、Ｇｉｇａｂｉｔイーサネット、ファイバーチャネル、ダイヤルインまたはさらにＰＣＩｅプロトコルなどの任意のプロトコルを使用して受信されてもよい。
【０１０８】
図７に示されるように、１つの実施形態では、各インタフェースチップは、ルータを通じてプロセッサ（７０４および７０８）のうちのいずれかにデータを通信することができる。各インタフェースチップは、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを通じて少なくとも１つのルータに結合されてもよい。Ｉ／Ｏ要求は、インタフェースチップのうちの１つに到達してもよい。インタフェースチップは、ＰＣＩｅプロトコルを使用してＩ／Ｏ要求をルータに転送してもよい。各ルータは、コントローラボード７０２上の両方のプロセッサに接続される。ルータは、Ｉ／Ｏ要求を受信し、かつさらなる処理のためにＩ／Ｏ要求を転送するためのプロセッサを判定する。プロセッサがＩ／Ｏ要求を復号化し、かつＮＶＭ記憶媒体にデータを記憶し、またはＮＶＭ記憶媒体からデータを取り出すための動作を確認したら、プロセッサはメモリ動作コマンドをルータのうちの１つに送信する。各ルータは、ＮＶＭブレードを通じてＮＶＭ記憶媒体のサブセットに結合される。例えば、図７では、各ルータは、ＮＶＭブレードの総数の約４分の１に接続する。ＮＶＭ記憶媒体要求をルータに送信する判定は、ＮＶＭ記憶アドレス空間内での記憶／アクセス要求のアドレスに基づいてもよい。例えば、プロセッサ７０４が、Ｉ／Ｏ要求によってルータＲ２（７１６）に結合されたＮＶＭブレードへの記憶がもたらされると判定する場合、プロセッサは、ＰＣＩｅプロトコルを使用して要求をルータＲ２（７１６）に転送してもよい。ルータＲ２（７１６）は、記憶のために記憶要求をそれぞれのＮＶＭブレードに転送する。
【０１０９】
ある実施形態では、図７を参照して説明された構成は、種々の電子構成要素と関連付けられた負荷を低減させ、ＮＶＭ記憶媒体への動作のスループットを増大させ、かつ記憶装置内の種々の構成要素からの熱を消散させるのに有利となることがある。
【０１１０】
従来のＰＣＩｅシステムでは、中央処理装置は、システム全体に対するルートコンプレックスを含んでもよい。ＰＣＩｅルートコンプレックスは、プロセッサに結合された全てのエンドポイントデバイスを列挙し、かつツリー状構造を生成する。エンドポイントにおいて発行される全ての要求は、ＰＣＩｅルートコンプレックスに結合された１つ以上のプロセッサによって処理される。インタフェースチップなどのエンドポイントから発行される大多数の要求を有する記憶装置では、ルートコンプレックスおよびプロセッサは、システムにおけるトランザクションの処理に対するボトルネックになる。１つの実装形態では、Ｉ／Ｏ要求を高速に処理し、かつボトルネックを軽減するために、より強力なプロセッサが使用されてもよい。このアプローチは、一時的にボトルネックを軽減するが、プロセッサと関連付けられた電力負荷を増大させることがある。さらに、プロセッサはまた、プロセッサによって処理されるＩ／Ｏ要求の数が増加することにより、コントローラボード上の小規模エリアにわたってさらなる熱を生じさせることがある。１つのプロセッサまたは密接にクラスタ化されたプロセッサにおける熱の増大によって、許容可能なレベルで、記憶装置全体としてより厳密な熱環境を維持することが困難となることがある。加えて、電力負荷および熱は、構成要素のレベルおよびデバイスのレベルの両方で、さらなる障害を生じさせることがある。
【０１１１】
本発明の実施形態は、複数の処理エンティティへのコントローラボードにわたってＮＶＭ記憶にアクセスするための処理およびルーティング機能を拡散することを提案する。１つの実施形態では、複数の処理エンティティは、Ｉ／Ｏ要求を処理するために、コントローラボードにわたって拡散されてもよい。１つの実装形態では、処理エンティティのうちの１つは、ＰＣＩｅルートコンプレックスの役割を果たしてもよく、かつ第２の処理エンティティは、エンドポイントの役割を果たしてもよい。例えば、図７では、プロセッサ０（７０７）は、ＰＣＩｅルートコンプレックスとして構成されてもよく、かつプロセッサ１（７０８）は、エンドポイントとして構成されてもよい。１つの実装形態では、プロセッサ１（７０８）に対するメモリ空間は、ルータ（ルータ０（７１２）、ルータ２（７１４）、ルータ３（７１６）およびルータ４（７１８））ごとに４回、エンドポイントとして列挙されてもよい。Ｉ／Ｏ要求に対する受信ルータが、Ｉ／Ｏ要求に対する適切なマッピングを有しない例では、ルータは、マッピングを判定するために、ＰＣＩｅルートコンプレックスとして構成された処理エンティティにＩ／Ｏ要求を転送してもよい。また、インタフェースチップは、構成の都度、ルーティング情報で構成されてもよい。
【０１１２】
ルーティングがインタフェースチップおよびルータにおいて既に確立されている例では、インタフェースチップに到達し、かつルータに転送されたＩ／Ｏ要求は、処理機能を拡散する処理エンティティ（７０４および７０８）のいずれかに送信されてもよい。処理に加えて、説明されたアーキテクチャはまた、リンクの接続性を拡散してもよい。例えば、Ｉ／Ｏ要求を受信することと、それらのＩ／Ｏ要求をルータに転送することとを同時に行うために、複数のインタフェースチップが実装されてもよい。さらに、ＮＶＭブレードがルータ間で分散されてもよく、複数のルータ間で分散されることになるＮＶＭブレードへのアクセスを可能にし、バスまたはルーティングバックログを回避する。図７で説明されたようなそのような構成はまた、同時に複数のブレードにアクセスすることを可能にし、異なるルータを通じてアクセス可能なＮＶＭブレードにアクセスするときの読み出しおよび書き込み性能を飛躍的に改善するのに有利となることがある。代替的な実装形態では、本発明の実施形態は、コントローラボードにわたってＮＶＭ記憶にアクセスするための処理およびルーティング機能を拡散するためのそれら自体のルートコンプレックスを各々が有する、複数の処理エンティティを提案する。各エンドポイント（すなわち、ルータ）は、２つ以上のルートコンプレックスに接続されてもよい。従って、インタフェースチップに到達し、かつルータに転送されるＩ／Ｏ要求を、処理機能を分散する処理エンティティ（７０４および７０８）のいずれかに送信することができる。処理に加え、説明されたアーキテクチャはまた、リンクの接続性を拡散してもよい。例えば、Ｉ／Ｏ要求を受信することと、それらのＩ／Ｏ要求をルータに転送することとを同時に行うために、複数のインタフェースチップが実装されてもよい。さらに、ＮＶＭブレードがルータ間で分散されてもよく、複数のルータ間で分散されることになるＮＶＭブレードへのアクセスを可能にし、バスまたはルーティングバックログを回避する。各プロセッサがコントローラボード上の全てのルータに接続するため、各プロセッサは、任意のＮＶＭ記憶アドレスを個々にアドレス指定することができる。図７で説明されたようなそのような構成はまた、同時に複数のブレードにアクセスすることを可能にし、異なるルータを通じてアクセス可能なＮＶＭブレードにアクセスするときの読み出しおよび書き込み性能を飛躍的に改善するのに有利となることがある。
【０１１３】
プロセッサ０（７０４）は、ブートＲＯＭ７２８から起動してもよく、かつプロセッサ１（７０８）は、ブートＲＯＭ７３４から起動してもよい。１つの実施形態では、プロセッサ７０４上で実行されるブートＲＯＭのイメージは、記憶ファイルシステムスタックに対する初期化情報を含んでもよい。１つの実装形態では、記憶ファイルシステムオペレーティングシステム（ＯＳ）がオンボードＮＶＭからロードされてもよい。別の実装形態では、記憶ファイルシステムＯＳは、ＮＶＭブレードのうちの１つからロードされてもよい。１つの実装形態では、プロセッサ０（７０４）およびプロセッサ１（７０８）上で実行するＯＳに対するイメージは異なってもよい。ファイルシステムＯＳは、Ｉ／Ｏ要求をハードウェア読み出しおよび書き込みに変換することに関与してもよい。
【０１１４】
ある実施形態では、オンボードＮＶＭ７３６は、ポインタ、更新された動作、キャッシュバックアップ、および読み出し／書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。一部の実施形態では、バイト書き込み可能な磁気ＲＡＭ（ＭＲＡＭ）などのＮＶＭは、オンボードＮＶＭを実装するために使用されてもよい。コントローラボードはまた、プロセッサ７０４およびプロセッサ７０８に接続されたデバッグポート７４０を有してもよい。デバッグポートは、ＵＳＢ、ＰＣＩｅ、Ｇｉｂａｂｉｔイーサネットなどの、１つ以上の個別インタフェースをサポートすることができる。
【０１１５】
図８は、本発明の少なくとも１つの実施形態に従った、コントローラボード上の各構成要素によって可視的な種々の構成要素に対するアドレス空間の例示的なブロック図を示す。１つの実施形態では、アドレス空間は、ＰＣＩｅアドレス空間として定義されてもよい。
【０１１６】
Ｐ０  ８１０は、図７のプロセッサ０（７０４）からのＰＣＩｅアドレス空間の表示を表す。Ｐ１  ８３０は、図７のプロセッサ１（７０８）から可視的なＰＣＩｅアドレス空間の表示を表す。Ｒ０  ８５０、Ｒ１  ８６０、Ｒ２  ８７０、およびＲ３  ８８０は、ルータ０（７１２）、ルータ１（７１４）、ルータ２（７１６）、およびルータ３（７１８）からのＰＣＩｅアドレス空間をそれぞれ表す。１つの実施形態では、プロセッサ０（７０４）などのＰＣＩｅルートコンプレックスは、全てのエンドポイントを発見し、かつエンドポイントごとにＰＣＩｅアドレス空間を構成してもよい。
【０１１７】
一部の実施形態では、コントローラボードの構成要素のうちのいずれか１つから可視的な種々のＰＣＩｅの範囲のうちのいずれか１つにアクセスすることによって、別のＰＣＩｅアドレス範囲へのアクセスとは異なるタイプの応答がもたらされてもよい。例えば、本発明の１つの実施形態に従って、プロセッサからＰＣＩｅアドレス空間の１つの範囲にアクセスすることによって、ルータのうちの１つに対する構成変更がもたらされてもよい。別の例では、ＰＣＩｅアドレス空間の別の範囲にアクセスすることによって、ルータのうちの１つに結合されたＮＶＭブレードのうちの１つへの読み出し／書き込みアクセスがもたらされてもよい。ＰＣＩｅアドレス空間へのいくつかのアクセスはまた、プロセッサに対するローカルメモリ、またはコントローラボード上の隣接するプロセッサのうちの１つに対するメモリにマッピングされてもよい。さらなる別の例では、ＰＣＩｅアドレス空間へのいくつかのアクセスによって、非透過的（ＮＴ）ＰＣＩｅブリッジを通じて、隣接するコントローラボード上の構成要素からの／への読み出し／書き込みがもたらされてもよい。
【０１１８】
ＰＣＩｅアドレス空間を通じて、いくつかのエンティティは、コントローラボード上の他のエンティティのアドレス空間への少なくとも部分的なアクセスを有する。例えば、Ｐ０  ８１０では、プロセッサＰ０  ７０４は、それ自体のメモリへのアクセス、プロセッサＰ１  ７０８のメモリおよびルータのアドレス空間の各々へのアクセスを有する。１つの実施形態では、ＮＶＭブレードは、ＮＶＭブレードの４つの別個のグループにグループ化され、ＮＶＭブレードの各グループは、ルータのうちの１つに結合されてもよい。ＮＶＭブレードの特定のグループに属するＮＶＭブレードのうちのいずれか１つは、ＮＶＭブレードのグループが結合することができるルータを通じてアクセス可能である。
【０１１９】
図８では、Ｐ０  ８１０に対するＰＣＩｅアドレス空間から、Ｂ−Ｇ０  ８０８は、ルータＲ０  ７１２を通じてアクセス可能なＮＶＭブレードの第１のグループに対するアドレス空間を表す。ルータＲ０  ７１２は、ＮＶＭブレードの第１のグループに結合されてもよく、また、ホストバスアダプタ０（ＨＢＡ）８０６によって指定されるアドレス空間を通じてプロセッサＰ０  ７０４から構成可能であってもよい。同様に、プロセッサＰ０（７０４）は、アドレス空間Ｂ−Ｇ１  ８１４を通じてＮＶＭブレードの第２のグループに、およびＨＢＡ１  ８１２を通じて第２のルータＲ１  ７１４に、アドレス空間Ｂ−Ｇ２  ８１８を通じてＮＶＭブレードの第３のグループに、およびＨＢＡ２  ８１６を通じて第３のルータＲ２  ７１６に、かつアドレス空間Ｂ−Ｇ３  ８２２を通じてＮＶＭブレードの第４のグループに、およびＨＢＡ３  ８２０を通じて第４のルータＲ３  ７１８にアクセスしてもよい。一部の実装形態では、アドレス空間８２４の区画が予約されてもよい。ある実施形態では、ＭＲＡＭ８２８などのオンボードＮＶＭは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し／書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。さらに、プロセッサＰ０（７０４）は、ＰＣＩｅアドレス空間ＤＲＡＭ（Ｐ０）８０２を通じてそれ自体のローカルメモリ７０６ａ〜ｄに、かつＰＣＩｅアドレスＤＲＡＭ（Ｐｌ）８０４を通じて隣接するプロセッサＰ１  ７０８のメモリにアクセスしてもよい。一部の実施形態では、プロセッサＰ０（７０４）はまた、ＮＴポート８２６を通じて隣接するコントローラボードの構成要素にメッセージを送信してもよい。
【０１２０】
Ｐ０  ８１０と同様に、構成要素の各々からのＰＣＩｅアドレス空間の表示は、ＰＣＩｅアドレス空間を使用して、相互に対話するための能力をそれぞれの構成要素に提供することができる。例えば、プロセッサＰ１（７０８）はまた、そのＰＣＩｅアドレス空間Ｐ１  ８３０を通じて、ルータ（ＨＢＡ０  ８４０、ＨＢＡ１  ８３８、ＨＢＡ２  ８３６、およびＨＢＡ３  ８３３）の各々に、ＮＶＭブレード（Ｂ−Ｇ０  ８４１、Ｂ−Ｇ１  ８３９、Ｂ−Ｇ２  ８３７およびＢ−Ｇ３  ８３４）の関連するグループに、ＤＲＡＭ（Ｐ１）８３１に対するＰＣＩｅアドレス空間を通じて、それ自体のローカルメモリ７１０ａ〜ｄに、隣接するプロセッサＰ０（７０４）ＤＲＡＭ（Ｐ０）８３２、ＭＲＡＭ８４２、およびＮＴポート８３８に対するメモリにアクセスすることができる。
【０１２１】
ルータはまた、ＰＣＩｅアドレス空間の同様であるが、さらに制限された表示を有してもよい。例えば、ルータＲ０  ７１２は、システムのＰＣＩｅアドレス空間表示Ｒ０  ８５０を有してもよい。ルータＲ０は、ＤＲＡＭ（Ｐ０）８５１およびＤＲＡＭ（Ｐ１）８５３を通じてプロセッサＰ０（７０４）、プロセッサＰ１（７０８）とそれぞれ通信することが可能である。ある実施形態では、ＭＲＡＭ８５４などのオンボードＮＶＭは、ポインタ、更新された動作、キャッシュバックアップ、および読み出し／書き込みバッファなどの、動的なメタデータを記憶するために使用されてもよい。コントローラボード上の他の構成要素によるＰＣＩｅアドレス空間ＨＢＡ０  ８５８へのアクセスは、ルータＲ０  ７１２へのコマンドと解釈されてもよい。Ｂ−Ｇ０  ８５６へのアクセスは、ルータＲ０  ７１２に結合されたＮＶＭブレードへの読み出しおよび書き込み要求と解釈されてもよい。図７に示されるように、それらの構成要素間での直接結合が存在しないため、ルータＲ０  ７１２は、他のルータまたはＮＶＭブレードに対して予約されたＰＣＩｅアドレス空間を有しなくてもよい。ルータＲ３  ７１８はまた、ＨＢＡ３  ８８６および  Ｂ−Ｇ３  ８８７を通じて、プロセッサＰ０（７０４）のＤＲＡＭ（Ｐ０）８８１、プロセッサＰ１  ７０８のＤＲＡＭ（Ｐ１）８８３、ＭＲＡＮ８８５、それ自体の構成空間、およびルータに結合されたＮＶＭブレードそれぞれへのアクセスを有する。
【０１２２】
ルータＲ１  ７１４およびＲ２  ７１６はまた、ＤＲＡＭ（Ｐ０）（８６１、８７１）およびＤＲＡＭ（Ｐ１）（８６３、８７３）を通じてプロセッサＰ０（７０４）およびＰ１（７０８）それぞれへのアクセスを有する。ＨＢＡ１  ８６６およびＨＢＡ２  ８７７、ならびにそれらの関連するＮＶＭブレードＢ−Ｇ１  ８６７およびＢ−Ｇ２  ８７８を通じてルータＲ１  ７１４およびＲ２  ７１６に対する構成空間にアクセスすることができる。加えて、ルータＲ１  ７１４およびＲ２  ７１６は、ＮＴポート８６５および８７５それぞれを通じて隣接するコントローラボード上のルータにメッセージを送信することが可能である。
【０１２３】
一部の実装形態では、構成要素ごとのＰＣＩｅアドレス空間内の一部のアドレス範囲（８４３、８５２、８５７、８６２、８６４、８６８、８７２、８７４、８７６、８７９、８８２、８８４および８８８）は、後の使用のために未使用かつ予約されていてもよい。
【０１２４】
先に論じられたように、図８に示されるＰＣＩｅアドレス空間構成は、例示のためのものであり、かつアドレス空間の他の実装形態に限定されない。
【０１２５】
図９は、本発明の１つの実施形態に従った記憶装置の別の例示的な高レベルブロック図である。ブロック９０２は、２つのコントローラ（９０４および９０６）と、コントローラに結合されたＮＶＭブレード（９２０ａ〜ｎ）の配列とを有する記憶装置を示す。１つの実施形態では、ブリッジ９０８を使用した読み出しおよび書き込みトランザクションのために、コントローラ９０４および９０６は、コントローラ９０４および９０６の間で状態情報を通信するために通信プロトコルを使用して一緒に結合されてもよい。
【０１２６】
１つの実装形態では、第１のコントローラ９０４および第２のコントローラ９０６は、Ｉ／Ｏ要求を処理するための１つ以上のプロセッサ、コントローラと複数のＮＶＭブレードとの間でのルーティング動作のための１つ以上のルータ、ならびに１つ以上のインタフェーシングチップを備えたプリント回路基板（ＰＣＢｓ）である。そのようなコントローラボードの例は、図１〜８で先に論じられている。別の実装形態では、複数の個別構成要素の機能は、ＡＳＩＣ、ＦＧＰＡ、ＭＣＭまたは任意の他の適切な解決策として実装されるコントローラによって実行されてもよい。１つの実装形態では、第１のコントローラ９０４および第２のコントローラ９０６は、各々が処理ロジックおよびルーティングロジックを備えたＡＳＩＣとして実装されてもよい。１つの実装形態では、コントローラはまた、インタフェーシングロジックを含んでもよい。別の実装形態では、図９に示されるように、Ｉ／Ｏ要求を受信し、かつそれに応答するために、第１のコントローラ９０４は、ホストインタフェース９１６に結合されてもよく、かつ第２のコントローラ９０６は、別のホストインタフェース９１８に結合されてもよい。
【０１２７】
ある実施形態では、図９からの記憶装置は、アクティブ／アクティブ記憶装置を表してもよい。アクティブ／アクティブ構成によって、コントローラに対する処理ロジックが、Ｉ／Ｏを処理し、かつもう一方に対してスタンバイ能力を提供することが可能になる。両方のコントローラと関連付けられた処理ロジックが、同時、またはほぼ同時にＩ／Ｏを処理することができるため、性能を高めるためにアクティブ／アクティブ記憶装置を実装することが有利となることがある。しかしながら、図９からの記憶装置は、アクティブ／アクティブ記憶装置に限定されず、かつアクティブ／パッシブ構成で使用されてもよく、そこでは、１つのコントローラに対する処理ロジックは、Ｉ／Ｏ要求を処理するのにアクティブであるが、もう一方は、アクティブな一次コントローラボードが機能しておらず、またはオフラインになった場合に、アクティブとなるべく、Ｉ／Ｏ動作を引き継ぐ準備ができたスタンバイモードでアイドルである。
【０１２８】
１つの実装形態では、図９に示されるアクティブ／アクティブシステムでは、第１のコントローラ９０４は、アクティブモードで動作し、かつＮＶＭ記憶媒体にデータを記憶し、およびＮＶＭ記憶媒体からデータを取り出すためのＩ／Ｏ要求を受信するように構成されてもよい。同様に、第２のコントローラ９０６はまた、アクティブモードで動作し、かつＮＶＭ記憶媒体にデータを記憶し、およびＮＶＭ記憶媒体からデータを取り出すためのＩ／Ｏ要求を受信するように構成されてもよい。図９は、２つのコントローラのみを示しているが、複数のコントローラがアクティブモードで動作してもよい。
【０１２９】
加えて、記憶装置は、ＮＶＭ記憶媒体を備えた複数のＮＶＭブレード９２０ａ〜ｎを含んでもよい。１つの実装形態では、各ＮＶＭブレードは、両方のコントローラ（９０４および９０６）に結合されてもよく、ＮＶＭ記憶媒体の各々の物理アドレスがコントローラのいずれかによってアクセス可能となることがある。この構成は、下層記憶媒体の複製およびデータのミラー化を回避するのに有利となることがあり、物理媒体上のデータの信頼性は、さらに信頼できる記憶媒体および／もしくはＲＡＩＤなどの洗練されたデータ復旧技術、またはそれらの任意の組み合わせを使用することによって保証されてもよい。各ＮＶＭブレードは、第１のコントローラ９０４と通信するための第１のルーティングインタフェースおよび第２のコントローラ９０６と通信するための第２のルーティングインタフェースを含んでもよい。１つの実装形態では、ＰＣＩｅプロトコルまたは任意の他の適切なプロトコルを使用して、第１のルーティングインタフェースは、第１のコントローラと通信し、かつ第２のルーティングインタフェースは、第２のコントローラと通信する。
【０１３０】
アクティブ／アクティブシステムの１つの実装形態では、１つ以上のコントローラは、マスタコントローラとしての役割を担ってもよく、かつ他の１つ以上のコントローラは、スレーブコントローラの役割を担ってもよい。１つの実装形態では、マスタコントローラは、ＮＶＭブレードへの全てのデータの書き込みを実行または開始してもよく、マスタまたはスレーブボードのいずれかは、読み出しを実行してもよい。
【０１３１】
概して、記憶装置は、記憶媒体への記憶または書き込み動作よりもさらなる多くの読み出し動作をサービスしてもよい。また、概して、読み出し動作は、記憶または書き込み動作よりもより高速に完了することができる。その結果として、読み出し動作をサービスすることができる速度は、コントローラの処理ロジックによってＩ／Ｏ要求を復号化かつ処理することができる速度によって制約されることがある。従って、Ｉ／Ｏ読み出し動作の処理および復号化のためにアクティブ／アクティブシステムにおいて２つ以上のコントローラ間でＩ／Ｏ読み出し動作を負荷分散することが有利となることがある。従って、マスタおよびスレーブコントローラの両方は、Ｉ／Ｏ読み出し動作を処理することができる。従って、図９では、第１のコントローラ９０４および第２のコントローラ９０６の両方は、ＮＶＭ記憶媒体からの読み出し動作および要求データのために同時、またはほぼ同時にＩ／Ｏ要求を復号化するように構成されてもよい。
【０１３２】
１つの例示的な実装形態では、スレーブコントローラボードに到達する書き込み動作は、マスタコントローラによって部分的に実行されてもよい。例えば、書き込みコマンド、または書き込みコマンドと関連付けられた情報は、スレーブコントローラからマスタコントローラに転送されてもよい。１つの実装形態では、ブリッジ９０８（例えば、ＰＣＩｅ  ＮＴブリッジ）は、書き込み動作と関連付けられた情報をスレーブコントローラからマスタコントローラに渡すために使用されてもよい。１つの実装形態では、スレーブコントローラに到達する書き込み動作に対するデータは、スレーブコントローラによってＮＶＭブレードに引き続き提供されてもよい。
【０１３３】
例示を目的に、所与の時点で、第１のコントローラ９０４は、マスタコントローラであってもよく、かつ第２のコントローラ９０６は、スレーブコントローラであってもよい。１つの例では、Ｉ／Ｏ要求は、マスタコントローラとして動作していることがある第１のコントローラ９０４に到達してもよい。第１のコントローラ９０４は、Ｉ／Ｏ要求が、Ｉ／Ｏ要求と関連付けられたデータをＮＶＭ記憶媒体に記憶するための書き込み動作であると判定してもよい。マスタコントローラは、Ｉ／Ｏ要求を処理し、書き込みコマンドをＮＶＭブレードに発送し、かつデータを記憶するためにコマンドおよびデータをＮＶＭブレードに伝送してもよい。
【０１３４】
別の例では、Ｉ／Ｏ要求は、スレーブコントローラとして動作していることがある第２のコントローラ９０６に到達してもよい。第２のコントローラ９０６は、Ｉ／Ｏ要求が、Ｉ／Ｏ要求と関連付けられたデータをＮＶＭ記憶媒体に記憶するための書き込み動作であると判定してもよい。第２のコントローラ９０６は、マスタコントローラとして動作していることがある第１のコントローラ９０４に第２のＩ／Ｏ要求と関連付けられたコマンド情報を伝送してもよい。マスタ／第１のコントローラ９０４は、第２のコントローラ９０６から伝送されたコマンド情報を受信し、データを記憶することができるＮＶＭブレードを判定し、かつ書き込みコマンドをＮＶＭブレードに伝送してもよい。書き込みコマンドは、マスタコントローラによって伝送されてもよいが、スレーブコントローラとして動作する第２のコントローラ９０６は、Ｉ／Ｏ要求と関連付けられたデータをＮＶＭブレードに伝送してもよい。マスタからの全ての書き込み動作を管理することは、システムにおける書き込みの一貫性を維持することの補助となることがある。一方で、スレーブコントローラにおいて受信されたＩ／Ｏ書き込み要求のためにスレーブコントローラからＮＶＭブレードにデータを転送することは、第１のコントローラ９０４と第２のコントローラ９０６との間でデータを転送するために、２つの間のブリッジ９０８（例えば、ＮＴ  ＰＣＩｅブリッジ）の帯域幅が著しく増加することを回避する。
【０１３５】
マスタおよびスレーブコントローラは、読み出しおよび書き込み動作をＮＶＭブレードにマッピングするためのマッピングテーブルを維持してもよい。１つの実装形態では、読み出しおよび書き込みテーブルは、ＮＶＭブレードのうちの１つに記憶される。１つの実装形態では、読み出しおよび書き込みテーブルは、２つのコントローラによって共有されてもよい。さらに別の実装形態では、読み出しおよび書き込みテーブルは、コントローラによって別個に維持されてもよい。各コントローラがそれ自体のテーブルを有する例では、マスタコントローラは、マスタおよびスレーブコントローラの両方に対してテーブルを更新してもよい。
【０１３６】
スレーブコントローラが機能しない場合、マスタコントローラは、従来通りに動作を処理し続ける。一方で、マスタコントローラが機能しない場合、記憶装置は、スレーブコントローラにフェールオーバする。換言すると、スレーブコントローラは、新たなマスタコントローラになることができ、かつ書き込み動作を処理することを開始することができる。例えば、マスタコントローラとして動作する第１のコントローラ９０４が、復旧不可能な誤りに直面する場合、システムは、フェールオーバすることができ、かつ第２のコントローラ９０６がマスタコントローラになることができる。
【０１３７】
一部の実装形態では、記憶装置はまた、複数の電力供給装置を含んでもよい。電力供給装置は概して、障害を起こしやすく、かつファンまたは他の電力構成要素の障害によって機能しないことがある。記憶装置に電力供給する複数の電力供給装置を有することは、電力供給装置のうちの１つの構成要素での障害による記憶装置の障害を回避することができる。１つの実装形態では、コントローラボードは、母線を通じて電力供給されてもよく、母線は、複数の電力供給装置から電力を供給してもよい。母線に接続された電力供給装置のうちの１つの障害の事象では、母線は、機能している電力供給装置から電力を供給し続ける。一部の実装形態では、機能していない電力供給装置は、適切に機能している電力供給装置とホットスワップ可能であってもよい（すなわち、記憶装置の電源を入れなおすことなく交換可能である）。図１０は、本発明の１つの実施形態に従ったＮＶＭブレードの例示的なブロック図を示す。一部の実施形態では、ＮＶＭブレード１００２は、図４のＮＶＭブレード４２０または図９からのＮＶＭブレード９２０ａ〜ｎのうちの１つの、１つの実装形態を表してもよい。例示的なＮＶＭブレード１００２は、１つ以上のＮＶＭチップ（１００６および１００８）ならびにブレードコントローラ１００４を含んでもよい。ＮＶＭチップは、ＮＶＭ記憶媒体を備えてもよい。ＮＶＭチップは、共有バス（９１２および１０１４）または専用バス（図示せず）を通じてブレードコントローラ１００４に結合されてもよい。ブレードコントローラ１００４は、ＮＶＭチップ上のデータにアクセス／記憶するためのコマンドを受信し、コマンドを処理し、ＮＶＭチップからのデータおよび他の構成コマンドを記憶または取り出すことに関与してもよい。図示されないが、ＮＶＭチップはまた、ＮＶＭブレードの反対側に存在してもよい。１つの実施形態では、ブレードコントローラ１００４は、特定用途向け集積回路（ＡＳＩＣ）を使用して実装されてもよい。別の実施形態では、ＮＶＭブレードコントローラは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を使用して実装されてもよい。
【０１３８】
図１１は、本発明の１つの実施形態に従ったブレードコントローラの例示的なブロック図を示す。１つの実装形態では、ブレードコントローラ１００４は、コントローラ（またはコントローラボード）上でルーティングエンティティに接続するための２つ以上のＰＣＩｅインタフェース（１０１４および１１１６）を有してもよい。例えば、ＰＣＩｅインタフェース１１１４は、第１のコントローラからルーティングエンティティ上のＰＣＩｅインタフェースのうちの１つに結合されてもよく、かつＰＣＩｅインタフェース１１１６は、第２のコントローラからルーティングエンティティ上のＰＣＩｅインタフェースのうちの１つに結合されてもよい。各ＰＣＩｅインタフェースは、ＰＣＩｅインタフェースが結合されたそれぞれのコントローラから到達するコマンドと関連付けられたコマンドキュー（１０１０および１１１２）を維持してもよい。１つの実施形態では、コントローラと関連付けられたデータに対するデータ経路は、別個に維持されてもよい。例えば、各コントローラと関連付けられたデータは、ＮＶＭ記憶媒体にデータを記憶する前に、それに応じてブロック１１０６および１１０８において圧縮されてもよく、かつＮＶＭ記憶媒体からデータを取り出した後に解凍されてもよい。別個のデータ経路を維持することによって、データのより高いスループットが可能になり、かつデータ経路と関連付けられた誤りを減少させることが可能になる。１つの実施形態では、誤り訂正符号（ＥＣＣ）を使用して、ブロック１１０６および１１０８において、誤り検出および／または訂正が実行されてもよい。例えば、データは、データをＮＶＭ記憶媒体に記憶する前に符号化および圧縮されてもよく、かつデータを取り出す時に、解凍および誤りに対して検査されてもよい。一部のシナリオで誤りが検出される場合、データは復旧可能となることがある。誤りが復旧不可能である場合、ＮＶＭブレードは、読み出し要求を破棄し、またはコントローラボードに対し誤り状態で応答してもよい。
【０１３９】
コマンドマネージャ１１０４は、複数のＰＣＩｅインタフェースにおいてコマンドを調停する。コマンドマネージャ１１０４は、コマンドを復号化し、かつデータを記憶／アクセスするためにチップの配列から適切なＮＶＭ記憶媒体にアクセスする。一部の実施形態では、コマンドを調停することによって、コマンドマネージャ１１０４によって、任意の特定の期間において１つのアクティブコマンドのみがＮＶＭインタフェース１１０２を通じてデータにアクセス／データを記憶することが可能となることがある。一部の実装形態では、ＰＣＩｅインタフェース、コマンドキューおよびＥＣＣ圧縮／解凍ロジックは、各コントローラボードとインタフェースするために別個に実装されてもよい。読み出し／書き込み経路、キューおよびロジックの間のそのような分離は、ＮＶＭブレードの第２のインタフェースに悪影響を及ぼすＮＶＭブレードの１つのインタフェース上の障害を回避するのに有利となることがある。例えば、第１のコントローラボードからＮＶＭインタフェース１１０２へのいずれかでの誤りによってコマンドキュー１１１０がバックアップを開始する場合、第２のコントローラボードからＮＶＭ記憶媒体への読み出し／書き込みデータ経路は、通常に機能し続けることができる。従って、ＮＶＭ記憶媒体への記憶動作が１つの第１のコントローラボードから機能しない例では、そのような誤りを検出すると、不揮発性メモリ上の同一のメモリ位置への記憶動作を、第２のコントローラボードを使用して完了することができる。
【０１４０】
図１２は、本発明の１つの実施形態に従ったブレードコントローラの別の例示的なブロック図を示す。ブレードコントローラ１００４のこの代替的な実施形態はまた、コントローラ上でルーティングロジックを接続するための２つ以上のＰＣＩｅインタフェース（１２１４および１２１６）と、ＰＣＩｅインタフェースが結合されたそれぞれのコントローラから到達するコマンドと関連付けられたコマンドキュー（１２１０および１２１２）とを有してもよい。１つの実装形態では、コマンドキューは、バッファを使用して実装されてもよい。１つの実装形態では、コマンドキューは、コマンドキューバッファが予め定められた閾値を超えてフルになると、第１のコントローラからのコマンドを破棄するように構成されてもよい。
【０１４１】
１つの実施形態では、統一されたデータ経路および統一されていないコマンド経路は、図１２に示されるように実装されてもよい。一部の実施形態では、データ経路からのデータは、データがＮＶＭ記憶媒体に記憶される前にブロック１２０６において圧縮されてもよく、かつＮＶＭ記憶媒体から取り出した後に解凍されてもよい。１つの実施形態では、誤り検出および／または訂正は、誤り訂正符号（ＥＣＣ）を使用してブロック１２０６において実行されてもよい。例えば、データは、ＮＶＭ記憶媒体におけるデータが記憶される前に符号化および圧縮されてもよく、かつデータを取り出す時に解凍および誤りに対して検査されてもよい。一部のシナリオで誤りが検出される場合、データは復旧可能となることがある。誤りが復旧不可能である場合、ＮＶＭブレードは、読み出し要求を破棄し、またはコントローラに対し誤り状態で応答してもよい。
【０１４２】
コマンドマネージャ１２０４は、複数のＰＣＩｅインタフェースからのコマンドを調停してもよい。コマンドマネージャ１２０４は、コマンドを復号化し、かつデータを記憶／アクセスするためにチップの配列から適切なＮＶＭ記憶媒体にアクセスする。コマンドを調停することによって、コマンドマネージャ１２０４によって、任意の特定の期間において、１つのアクティブコマンドのみがＮＶＭインタフェース１２０２を通じてデータにアクセス／データを記憶することが可能となることがある。図１２に示されるように、統一されたデータおよびコマンド経路によって、コストおよび設計の効率性がもたらされることがある。
【０１４３】
上記図面には示されないが、１つの実装形態では、別個のコマンドおよび／またはデータキューは、ＮＶＭブレードに対するＮＶＭ記憶媒体を備えた複数のＮＶＭチップからのＮＶＭチップごとに維持されてもよい。さらに、コマンドおよび／またはデータキューの別個の組がコントローラごとに維持されてもよい。例えば、３２個のＮＶＭチップを有するＮＶＭブレードの実装形態では、３２個のコマンドおよび／またはデータキューは、第１のコントローラから発行される要求に対して維持されてもよく、かつ３２個のコマンドおよび／またはデータキューは、第２のコントローラから発行される要求に対して維持されてもよい。そのような構成によって、複数の発行済みコマンドが、同一のＮＶＭチップに対して動作がターゲットとされない限り、他のコマンドがＮＶＭブレード上で開始、処理、および完了される間に開始、処理、および／または完了することが可能となることがある。コマンドマネージャ１００４は、２つのコントローラから発行されるコマンドを調停してもよい。
【０１４４】
垂直に統合されたアーキテクチャの複数の態様を説明したが、開示の種々の態様を実装することができるコンピューティングシステムの例を、図１３に関してここで説明することができる。１つ以上の態様に従って、図１３に示されるコンピュータシステムは、コンピューティングデバイスの一部として組み込まれてもよく、それは、本明細書で説明される機能、方法、および／または方法のステップのいずれかおよび／または全てを実装、実行および／または遂行することができる。例えば、コンピュータシステム１３００は、デバイスおよび／またはアクセスポイント装置の構成要素の一部を表してもよい。デバイスは、ＲＦ受信機などの無線ユニットを有する任意のコンピューティングデバイスであってもよい。１つの実施形態では、システム１３００は、本明細書で説明される方法のいずれかを実装するように構成される。図１３は、本明細書で説明されるように、種々の他の実施形態によって提供される方法を実行することができ、かつ／またはホストコンピュータシステム、リモートキオスク／端末、ポイントオブセールデバイス、モバイルデバイス、セットトップボックス、および／もしくはコンピュータシステムとして機能することができる、コンピュータシステム１３００の１つの実施形態の概略的な図を提供する。図１３は、必要に応じて利用することができるもののいずれかおよび／または全ての種々の構成要素の一般化された図を単に提供することを意図する。従って、図１３は、比較的別個の、または比較的より統合された形式で個々のシステム要素をどのように実装することができるかを広義に示す。
【０１４５】
バス１３０５を介して電気的に結合することができる（または、必要に応じて通信することができる）ハードウェア要素を備えたコンピュータシステム１３００が示される。ハードウェア要素は、それらに限定されることなく、１つ以上の汎用プロセッサおよび／または１つ以上の専用プロセッサ（デジタルシグナル処理チップおよび／またはグラフィック加速度プロセッサなど）を含む１つ以上のプロセッサ１３１０と、それらに限定されることなく、カメラ、マウス、および／またはキーボードなどを含むことができる１つ以上の入力デバイス１３１５と、それらに限定されることなく、ディスプレイユニットおよび／またはプリンタなどを含むことができる１つ以上の出力デバイス１３２０とを含んでもよい。コンピューティングデバイス１３００はまた、システムの状態を監視するための温度センサ、電力センサなどのセンサを含んでもよい。
【０１４６】
コンピュータシステム１３００はさらに、それらに限定されることなく、ローカルおよび／もしくはネットワークアクセス可能な記憶装置を備えることができ、かつ／またはそれらに限定されることなく、プログラム可能であり、および／もしくはＮＶＭ更新可能などとすることができる、ディスクドライブ、ドライブアレイ、光学式記憶装置、ランダムアクセスメモリ（「ＲＡＭ」）などのソリッドステート記憶装置および／もしくはリードオンリメモリ（「ＲＯＭ」）を含むことができる、１つ以上の非一時的記憶装置１３２５を含んでもよい（かつ／またはそれらと通信してもよい）。そのような記憶装置は、それらに限定されることなく、種々のファイルシステムおよび／またはデータベース構造などを含む、任意の適切なデータ記憶を実装するように構成されてもよい。
【０１４７】
コンピュータシステム１３００はまた、それらに限定されることなく、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス、ならびに／または無線通信デバイスおよび／もしくはチップセット（Ｂｌｕｅｔｏｏｔｈ（登録商標）デバイス、８０２．１１デバイス、ＷｉＦｉデバイス、ＷｉＭａｘデバイス、セルラ通信設備など）を含むことができる、通信サブシステム１３３０を含んでもよい。通信サブシステム１３３０によって、ネットワーク（１つの例を挙げると、以下で説明されるネットワークなど）、他のコンピュータシステム、および／または本明細書で説明される任意の他のデバイスとデータが交換されることが可能となることがある。多くの実施形態では、コンピュータシステム１３００はさらに、上述したように、ＲＡＭまたはＲＯＭデバイスを含むことができる、非一時的ワーキングメモリ１３３５を備えてもよい。コンピュータシステム１３００はまた、通信サブシステム１３３０によって外部エンティティとの通信を容易にするための送受信機１３５０を含んでもよい。
【０１４８】
コンピュータシステム１３００はまた、オペレーティングシステム１３４０、デバイスドライバ、実行可能ライブラリ、ならびに／あるいは種々の実施形態によって提供されるコンピュータプログラムを備えることができ、および／または本明細書で説明されるように、他の実施形態によって提供される方法を実装し、かつ／もしくはシステムを構成するように設計することができる、１つ以上のアプリケーションプログラム１３４５などの他のコードを含む、ワーキングメモリ１３３５内に現在位置しているとして示される、ソフトウェア要素を備えることができる。単に例として、上記論じられた方法に関して説明された１つ以上の手順は、コンピュータ（および／またはコンピュータ内のプロセッサ）によって実行可能なコードおよび／または命令として実装されてもよく、１つの態様では、次いで、そのようなコードおよび／または命令は、説明された方法に従って１つ以上の動作を実行するために汎用コンピュータ（または他のデバイス）を構成および／または適合させるために使用されてもよい。
【０１４９】
それらの命令および／またはコードの組は、上述した記憶装置１３２５などのコンピュータ可読記憶媒体に記憶されてもよい。一部のケースでは、記憶媒体は、コンピュータシステム１３００などのコンピュータシステム内に組み込まれてもよい。他の実施形態では、記憶媒体は、コンピュータシステムとは別個であってもよく（例えば、コンパクトディスクなどの着脱可能媒体）、かつ／またはインストールパッケージで提供されてもよく、それによって、そこに記憶された命令／コードを有する汎用コンピュータをプログラム、構成および／または適合させるために記憶媒体を使用することができる。それらの命令は、コンピュータシステム１３００によって実行可能な実行可能コードの形式をとってもよく、かつ／またはコンピュータシステム１３００上でコンパイルおよび／もしくはインストールされると（例えば、種々の一般的に利用可能なコンパイラ、インストールプログラム、圧縮／解凍ユーティリティなどのいずれかを使用して）、実行可能コードの形式をとる、ソースおよび／もしくはインストール可能コードの形式をとってもよい。
【０１５０】
相当な変形は、特定の要件に従ってなされてもよい。例えば、カスタマイズされたハードウェアがまた使用されてもよく、かつ／または特定の要素がハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、もしくはその両方で実装されてもよい。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続が採用されてもよい。
【０１５１】
一部の実施形態は、開示に従った方法を実行するためのコンピュータシステム（コンピュータシステム１３００など）を採用してもよい。例えば、説明された方法の手順の一部または全ては、ワーキングメモリ１３３５に含まれる１つ以上の命令の１つ以上のシーケンス（オペレーティングシステム１３４０および／またはアプリケーションプログラム１３４５などの他のコードに組み込まれてもよい）をプロセッサ１３１０が実行したことに応答して、コンピュータシステム１３００によって実行されてもよい。そのような命令は、記憶装置１３２５のうちの１つ以上などの、別のコンピュータ可読媒体からワーキングメモリ１３３５に読み出されてもよい。単に例として、ワーキングメモリ１３３５に含まれる命令シーケンスの実行によって、プロセッサ１３１０が、本明細書で説明される方法のうちの１つ以上の手順を実行することができる。
【０１５２】
本明細書で使用されるような、用語「機械可読媒体」および「コンピュータ可読媒体」は、特定の形式で機械を動作させるデータを提供することに関与する任意の媒体を指す。コンピュータシステム１３００を使用して実装される実施形態では、種々のコンピュータ可読媒体は、実行のためにプロセッサ１３１０に命令／コードを提供することに関与してもよく、かつ／またはそのような命令／コード（例えば、信号として）を記憶および／もしくは搬送するために使用されてもよい。多くの実装形態では、コンピュータ可読媒体は、物理および／または有形記憶媒体である。そのような媒体は、それらに限定されないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形式をとってもよい。不揮発性媒体は、例えば、記憶装置１３２５などの光学および／または磁気ディスクを含む。揮発性媒体は、それらに限定されないが、ワーキングメモリ１３３５などの動的メモリを含む。伝送媒体は、それらに限定されないが、通信サブシステム１３３０（および／またはそれによって通信サブシステム１３３０が他のデバイスに通信を提供する媒体）の種々の構成要素とともに、バス１３０５を備えるワイヤを含む、同軸ケーブル、銅線およびファイバー光学を含む。従って、伝送媒体はまた、波（それらに限定されることなく、無線波および赤外線通信の間に生成されるものなどの、無線、音響および／または光波を含む）の形式をとることができる。
【０１５３】
一部の実施形態は、開示に従った方法を実行するためのコンピュータシステム（プロセッサ１３１０など）を採用してもよい。例えば、説明される方法の手順の一部または全ては、ワーキングメモリに含まれる１つ以上の命令の１つ以上のシーケンス（オペレーティングシステムおよび／またはアプリケーションプログラムなどの他のコード内に組み込むことができる）をプロセッサが実行したことに応答して、閲覧装置によって実行されてもよい。そのような命令は、記憶装置のうちの１つ以上などの別のコンピュータ可読媒体からワーキングメモリに読み出されてもよい。単に例として、ワーキングメモリに含まれる命令シーケンスの実行によって、プロセッサが、本明細書で説明される方法のうちの１つ以上の手順を実行することができる。
【０１５４】
再度、本明細書で説明されるコンピュータシステムを採用する実施形態は、閲覧装置に物理的に接続されることに限定されない。処理は、閲覧装置に有線または無線で接続された別の装置で行われてもよい。例えば、電話におけるプロセッサまたは電話もしくはタブレットによってコマンドを実行するための命令は、それらの説明に含まれてもよい。同様に、リモート位置にあるネットワークは、プロセッサを収容してもよく、かつ閲覧装置にデータを送信してもよい。
【０１５５】
本明細書で使用されるような、用語「機械可読媒体」および「コンピュータ可読媒体」は、特定の形式で機械を動作させるデータを提供することに関与する任意の媒体を指す。プロセッサ１３１０を使用して実装される実施形態では、種々のコンピュータ可読媒体は、実行のためにプロセッサ１３１０に命令／コードを提供することに関与してもよく、かつ／またはそのような命令／コード（例えば、信号として）を記憶および／もしくは搬送するために使用されてもよい。多くの実装形態では、コンピュータ可読媒体は、物理および／または有形記憶媒体である。そのような媒体は、それらに限定されることなく、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形式をとってもよい。不揮発性媒体は、例えば、光学および／または磁気ディスクを含む。揮発性媒体は、それらに限定されることなく、ＮＶＭメモリまたはＤＤＲ３  ＲＡＭなどの動的メモリを含む。伝送媒体は、それらに限定されることなく、通信サブシステム（および／またはそれによって通信サブシステムが他のデバイスに通信を提供する媒体）の種々の構成要素とともに、同軸ケーブル、銅線およびファイバー光学を含む。従って、伝送媒体はまた、波（それらに限定されることなく、無線波および赤外線データ通信の間に生成されるものなどの、無線、音響および／または光波を含む）の形式をとることができる。
【０１５６】
１つ以上の例では、説明される機能はハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上で１つ以上の命令もしくはコードとして記憶されてもよく、またはコンピュータ可読媒体上で１つ以上の命令もしくはコードとして伝送されてもよい。コンピュータ可読媒体は、コンピュータデータ記憶媒体を含んでもよい。データ記憶媒体は、この開示で説明された技術の実装のための命令、コードおよび／またはデータ構造を取り出すために１つ以上のコンピュータまたは１つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。本明細書で使用されるような「データ記憶媒体」は、製造物を指し、かつ一時的伝播信号を指さない。例として、かつ非限定的に、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、ＮＶＭメモリ、または命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用することができ、かつコンピュータによってアクセスすることができる任意の他の媒体を備えることができる。本明細書で使用されるようなディスクは、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピーディスクおよびブルーレイディスクを含み、ディスク（ｄｉｓｋ）は通常、データを磁気的に再生し、ディスク（ｄｉｓｃ）は、レーザでデータを光学的に再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲に含まれるべきである。
【０１５７】
コードは、１つ以上のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、または他の同等の集積もしくは個別ロジック回路などの、１つ以上のプロセッサによって実行されてもよい。従って、本明細書で使用されるような用語「プロセッサ」は、上記構造、または本明細書で説明される技術の実装に適切な任意の他の構造のいずれかを指す。加えて、一部の態様では、本明細書で説明される機能は、符号化および復号化のために構成された個別ハードウェアおよび／もしくはソフトウェアモジュール内に備えられてもよく、または複合コーデックに組み込まれてもよい。また、１つ以上の回路またはロジック要素で技術が完全に実装されてもよい。
【０１５８】
この開示の技術は、無線ハンドセット、集積回路（ＩＣ）またはＩＣの組（チップセット）を含む、各種のデバイスまたは装置で実装されてもよい。種々の構成要素、モジュールまたはユニットは、開示される技術を実行するように構成されたデバイスの機能的態様を強調するために説明されるが、必ずしも異なるハードウェアユニットによって実現される必要はない。むしろ、上述したように、種々のユニットは、コーデックハードウェアユニットで組み合わされてもよく、またはコンピュータ可読媒体に記憶された適切なソフトウェアおよび／もしくはファームウェアとともに、上述したような１つ以上のプロセッサを含む、相互動作ハードウェアユニットの集合によって提供されてもよい。
【０１５９】
種々の例を説明した。それらの例および他の例は、以下の特許請求の範囲内にある。
【図１】
0006358483.tif 000002
【図２】
0006358483.tif 000003
【図３】
0006358483.tif 000004
【図４】
0006358483.tif 000005
【図５】
0006358483.tif 000006
【図６】
0006358483.tif 000007
【図７】
0006358483.tif 000008
【図８】
0006358483.tif 000009
【図９】
0006358483.tif 000010
【図１０】
0006358483.tif 000011
【図１１】
0006358483.tif 000012
【図１２】
0006358483.tif 000013
【図１３】
0006358483.tif 000014