(57)【要約】【課題】複数の記憶要素を統合して仮想記憶スペースを形成する。【解決手段】記憶要素を統合するための装置および方法である。種々の実施例によれば、複数の記憶要素にわたって仮想記憶スペースが形成され、各記憶要素はデータ記憶デバイスのアレイを含む。仮想コントローラは、第１記憶要素アグレゲータ（ＳＥＡ）による第１ホストコマンドの受信に応答し、選択された記憶要素に対して第１コマンドを発生するように構成されている第１記憶要素アグレゲータ（ＳＥＡ）を含む。仮想コントローラは、更に第２ＳＥＡによる第２ホストコマンドの受信に応答し、選択された記憶要素に第２コマンドを同時に発生するように構成されている第２ＳＥＡを含む。【選択図】図４
2009015839.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶要素にわたって形成された仮想記憶スペースであって、各記憶要素はデータ記憶デバイスのアレイを含む仮想記憶スペースと、第１記憶要素アグレゲータ（ＳＥＡ）による第１ホストコマンドの受信に応答し、選択された記憶要素に対して第１コマンドを発生するように構成されている第１記憶要素アグレゲータ（ＳＥＡ）および第２記憶要素アグレゲータ（ＳＥＡ）による第２ホストコマンドの受信に応答し、選択された記憶要素に第２コマンドを同時に発生するように構成されている第２記憶要素アグレゲータ（ＳＥＡ）を含む仮想コントローラとを備える装置。
【請求項２】
前記仮想コントローラは、総数で少なくとも６つの同時にアクティブなＳＥＡを備え、各ＳＥＡは、受信したホストコマンドにそれぞれ答えるように、記憶要素に同時にアクセスするように独立に動作可能である、請求項１記載の装置。
【請求項３】
前記仮想記憶スペースのサイズの増加に応答し、続いて前記仮想コントローラに第３のＳＥＡが組み込まれる、請求項１記載の装置。
【請求項４】
前記第１のＳＥＡは、前記第１のホストコマンドに関連する前記仮想記憶スペースの一部を管理する第１の副次的な複数（ｓｕｂｐｌｕｒａｌｉｔｙ）の記憶要素を更に識別し、前記第１の副次的な複数の記憶要素は、選択された記憶要素を備え、前記第１のＳＥＡは更に前記第１のホストコマンドを実行させるためにコマンドを前記第１の副次的な複数の記憶要素の各々に発行するように構成されている、請求項１記載の装置。
【請求項５】
前記第２のＳＥＡは前記第２のホストコマンドに関連する前記仮想記憶スペースの一部を管理する第２の副次的な複数の記憶要素を識別し、前記第２の副次的な複数の記憶要素は、選択された記憶要素と前記第１の副次的な複数の記憶要素内にはない少なくとも１つの追加記憶要素を備え、前記第２のＳＥＡは、前記第２のホストコマンドを実行させるためにコマンドを前記第２の副次的な複数の記憶要素の各々に発行するように構成されている、請求項４記載の装置。
【請求項６】
前記第１および第２ＳＥＡは、それぞれ第１および第２コマンド完了ステータスを発生し、これらをそれぞれの第１および第２ホストコマンドを開始したそれぞれのホストに転送する、請求項１記載の装置。
【請求項７】
前記第１ＳＥＡはユニットマスターであることを特徴とし、前記第２ＳＥＡは、前記第２コマンドを選択された記憶要素に転送する前に、前記第１ＳＥＡからの許可を得る、請求項１記載の装置。
【請求項８】
前記第１および第２ＳＥＡの各々は、第１ループスイッチモジュール（ＬＳＭ）に結合された第１出力ポートと、第２ＬＳＭに並列に結合された第２出力ポートとを備え、前記第１ＬＳＭと前記第２ＬＳＭの双方は、前記選択された記憶要素に結合されている、請求項１記載の装置。
【請求項９】
前記第１および第２ＳＥＡの各々は、第１バスに結合された少なくとも１つのポリシープロセッサと、別の外部バス（Ｅバス）を介して相互に接続された複数のファンクションコントローラを備える、請求項１記載の装置。
【請求項１０】
前記複数の記憶要素の各々は、少なくとも１つのプロセッサおよびライトバックキャッシュメモリを備えたインテリジェント記憶要素（ＩＳＥ）を備え、前記データ記憶デバイスの各々は、ハードディスクドライブを備える、請求項１記載の装置。
【請求項１１】
各々がデータ記憶デバイスのアレイを含む複数の記憶要素にわたって形成された仮想記憶スペースと、第１および第２ホストコマンドの並列な受信にそれぞれ応答し、第１および第２コマンドを選択された記憶要素に同時に発行する第１手段とを備える装置。
【請求項１２】
前記第１手段は、前記複数の記憶要素に重複して結合された複数の記憶要素アグレゲータ（ＳＥＡ）を備え、各アグレゲータは、少なくとも１つのポリシープロセッサと少なくとも１つのファンクションコントローラとを備え、前記複数のＳＥＡのうちの第１ＳＥＡは、第１ホストコマンドを受信し、前記複数のＳＥＡのうちの第２ＳＥＡは、第２ホストコマンドを受信する、請求項１１記載の装置。
【請求項１３】
前記複数の記憶要素の各々は、少なくとも１つのプロセッサと、ライトバックキャッシュメモリとを含むインテリジェント記憶要素（ＩＳＥ）とを備え、前記データ記憶デバイスの各々は、ハードディスクドライブを備える、請求項１１記載の装置。
【請求項１４】
各々がデータ記憶デバイスのアレイを含む複数の記憶要素にわたって仮想記憶スペースを形成するステップと、
仮想コントローラの第１記憶要素アグレゲータ（ＳＥＡ）により受信された第１ホストコマンドに応答し、第１コマンドを選択された記憶要素に発行するよう、前記第１ＳＥＡを使用するステップと、
前記仮想コントローラの第２ＳＥＡによる第２ホストコマンドの受信に応答し、第２コマンドを前記選択された記憶要素に発行するよう、前記第２ＳＥＡを同時に使用するステップとを備えた方法。
【請求項１５】
前記第１記憶要素アグレゲータ（ＳＥＡ）を使用するステップは、前記第１ホストコマンドに関連する前記仮想記憶スペースの一部を管理し、選択された記憶要素を含む第１の副次的な複数の記憶要素を識別し、前記第１ホストコマンドを実行するためにコマンドを前記第１の副次的な複数の記憶要素の各々に発行するステップを含む、請求項１４記載の方法。
【請求項１６】
前記第２ＳＥＡを同時に使用するステップは、前記第２ホストコマンドに関連する前記仮想記憶スペースの一部を管理し、前記選択された記憶要素と、前記第１の副次的な複数の記憶要素内にない、少なくとも１つの追加的記憶要素を含む第２の副次的な複数の記憶要素を識別し、前記第２のホストコマンドを実行するために、コマンドを前記第２の副次的な複数の記憶要素の各々に発行するステップを更に含む、請求項１５記載の方法。
【請求項１７】
前記第１および第２ＳＥＡは、それぞれ第１および第２コマンド完了ステータスを発生し、これらをそれぞれの第１および第２ホストコマンドを開始したそれぞれのホストに転送する、請求項１４記載の方法。
【請求項１８】
前記第１ＳＥＡはユニットマスターであることを特徴とし、前記第２ＳＥＡは、前記第２コマンドを選択された記憶要素に転送する前に、前記第１ＳＥＡからの許可を得る、請求項１４記載の方法。
【請求項１９】
前記第１ＳＥＡを使用するステップおよび前記第２ＳＥＡを同時に使用するそれぞれのステップのうちの、前記第１および第２ＳＥＡの各々は、第１バスに結合された少なくとも１つのポリシープロセッサと、別個の外部バス（Ｅバス）を介して相互に接続された複数のファンクションコントローラを備える、請求項１４記載の方法。
【請求項２０】
前記第１および第２コマンドの各々は、前記選択された記憶要素からデータを読み出すための読み出しコマンドを含む、請求項１４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想コントローラを使用して記憶要素を統合することに関する。
【背景技術】
【０００２】
（背景）
ユーザーデータを記憶し、検索するための種々のアプリケーションにおいて、データ記憶デバイスが使用されている。これらデータは、内部記憶媒体、例えば１つ以上の回転自在なディスクに記憶されることが多く、回転自在なディスクは、その上に構成されたトラックを有し、入出力動作を実行するために、媒体のさまざまな半径位置に移動されるデータトランスジューサのアレイによってアクセスされる。
【０００３】
記憶デバイスは冗長性、スケーラビリティおよび増強されたデータスループットレートをサポートするために、統合された物理的メモリ記憶スペースを提供するよう、記憶アレイにグループ分けできる。かかるアレイはコントローラによってアクセスされることが多く、これらコントローラはファブリック、例えばローカルエリアネットワーク（ＬＡＮ）、インターネットなどを通してホストデバイスと通信できる。単一の仮想論理ユニット番号（ＬＵＮ）をネットワークに提示するために多数のデバイスおよびコントローラから仮想記憶スペースを形成できる。
【０００４】
（概要）
本発明の種々の実施例は、一般には記憶要素をアグレゲート（ａｇｇｒｅｇａｔｅ，統合）するための装置および方法に関する。
【０００５】
種々の実施例によれば、複数の記憶要素にわたって仮想記憶スペースが形成され、各記憶要素はデータ記憶デバイスのアレイを含む。仮想コントローラは第１ホストコマンドの第１記憶要素アグレゲータ（ＳＥＡ，ｓｔｏｒａｇｅ  ｅｌｅｍｅｎｔ  ａｇｇｒｅｇａｔｏｒ）による受信に応答し、選択された記憶要素に対して第１コマンドを発生するように構成されている第１記憶要素アグレゲータ（ＳＥＡ）を含む。仮想コントローラは第２ホストコマンドの第２ＳＥＡによる受信に応答し、選択された記憶要素に第２コマンドを同時に発生するように構成されている第２ＳＥＡを含む。
【実施例】
【０００６】
（詳細な説明）
図１は、種々の実施例に係わるデータ記憶デバイスの一例を示す。このデバイスはホストデバイスによってユーザーデータを記憶し、転送するように構成されているタイプのハードディスクドライブ（ＨＤＤ）としての特徴を有する。
【０００７】
このデバイス１００は、ベースデッキ１０２およびトップカバー１０４から形成されたハウジングを含む。内部に配置されたスピンドルモータ１０６は、多数の記憶メディア１０８を回転方向１０９に回転するように構成されている。メディア１０８にはヘッドディスクインターフェース（ＨＤＩ）を形成するように、このメディアに隣接して配置されたデータトランスジューサ（ヘッド）１１０の対応するアレイによってアクセスされる。
【０００８】
番号１１２によりヘッドスタックアセンブリ（ＨＳＡ）またはアクチュエータが示されており、このアクチュエータ１１２は、ボイスコイルモータ（ＶＣＭ）１１４に電流を加えることによって回転する。ＶＣＭ１１４を制御しながら作動させることにより、トランスジューサ１１０はメディア表面に構成されたトラック（図示されず）に整合し、この表面にデータを記憶したり、この表面からデータを検索する。フレックス回路アセンブリ１１６は、アクチュエータ１１２と外部に配置されたプリント回路基板（ＰＣＢ）１１８上のデバイス制御電子回路との間の電気伝送路を提供する。
【０００９】
一部の実施例では、このデバイス１００はマルチデバイスデータ記憶アレイ内に組み込まれており、このアレイは、例えば選択されたＲＡＩＤ（独立ディスクの冗長アレイ）コンフィギュレーションに、より大きいメモリスペースとなるように配置された複数のこのようなデバイスから構成されている。図２において番号１２０により、記憶アレイの一例が示されている。
【００１０】
この記憶アレイ１２０は、アレイコントローラ１２２により制御され、このコントローラ１２２にはアレイとの複雑なデータ入出力取り扱いを管理するための１つ以上の処理コアが設けられている。コントローラ１２２は、コンピュータネットワーク、すなわちファブリック１２４を通して任意の数のホストデバイス、例えば例として示されているホストデバイス１２６と通信する。このファブリックはインターネット、ローカルエリアネットワーク（ＬＡＮ）などを含む任意の適当な形態をとり得る。ホストデバイス１２６は、個々のパソコン（ＰＣ）、リモートファイルサーバーなどでよい。
【００１１】
図３は、一般的には本発明の種々の実施例に係わる、仮想コントローラ１３２と組み合わせた仮想論理ユニット番号（ＬＵＮ）記憶スペース１３０を示す。一般に、ＬＵＮの記憶容量は、個々のコントローラでの障害の影響を緩和しながら、単一のコントローラの容量よりも上にシステム性能をスケーリングするよう、多数のネットワーク要素を使用して仮想化される。
【００１２】
図２の仮想コントローラ１３２は、図４に示されるように２〜Ｍ個の記憶要素のアグレゲータ（ＳＥＡ）１３４の集団によって実現される。これに対応し、図３の仮想ＬＵＮ１３０は、好ましくはインテリジェント記憶要素（ＩＳＥ）１３６を特徴とする２〜Ｎ個の記憶要素の集団によって実現される。
【００１３】
一般的にＩＳＥ１３６の対応するプールのアグレゲート記憶容量を管理し、提示するために、特定のコンフィギュレーションに対する高いレベルの冗長性、性能および接続性を提供するように、各ＳＥＡ１３４のレプリカを何回も作成できる。これらＳＥＡ１３４はＩＳＥ１３６だけでなく、互いにパラレルにアクティブに結合されている。ＳＥＡ１３４のホストポートは、直接またはスイッチを介し、一組のホストに接続できる。ＳＥＡ１３４のバックエンドポートは、後述するように、ループスイッチモジュール（ＬＳＭ）を介し、ＩＳＥ１３６に結合されることが好ましい。
【００１４】
各ＩＳＥ１３６は、図５に例として示されるような多数のデータ処理コンポーネントによって構成されたインテリジェントモジュールである。図５において、ＩＳＥ１３６の一例は、総計４０個の記憶デバイス１００（ＨＤＤ）と、少なくとも１つのインテリジェント記憶プロセッサ（ＩＳＰ）１３８と、データキャッシュメモリ１４０とを含む。ＩＳＰ１３８は一般にアレイ状に配置されたデバイス１００に対し、データ入出力アクセスコマンドおよびデータを向けるためのコントローラとして作動する。
【００１５】
図６には、ＳＥＡフォーマットの一例が記載されている。ＲＩＳＣプロセッサ（ポリシープロセッサ）１４２は、ＳＥＡ１３４のトップレベルの制御を行う。このＲＩＳＣプロセッサ１４２は、２つのＰＣＩ−Ｘバス（１４４で全体が示されている）およびＲＩＳＣメモリ１４６を有するＰｏｗｅｒＰＣ（登録商標）ＡＳＩＣとして特徴付けられることが好ましい。このＲＩＳＣプロセッサ１４２には４つのＲＡＩＤ記憶プロセッサ１４８が結合されており、各プロセッサは関連するメモリシステム（別個には示されていない）を有するＡｒｉｓｔｏｓロジックＭＰＸ  ＡＳＩＣとして特徴付けられることが好ましい。
【００１６】
プロセッサ１４８の各々は、ポリシープロセッサ１４２が命令する特定のファンクションを実行するための複数のファンクションコントローラ（ＦＣ）として動作し、デュアルオペレーションのためにプロセッサ１４８をペアにすることができるよう、高速外部バス（Ｅバス）１５０を介して相互に接続されている。
【００１７】
ＳＥＡ１３４は、複数のホストポート１５２を含み、これらホストポートはファブリック１２４（図２）を介してホストデバイス１２６（図２）に接続されている。複数のバックエンドポート１５４がループスイッチモジュール（ＬＳＭ）１５６からＩＳＥ１３６のプールに接続されている。
【００１８】
各ＳＥＡ１３４は、スタンドアローンユニットであり、それ自体冗長性を有しないことが好ましい。その代わりに、各ＬＳＭ１５６は多数のループスイッチ、例えば６つの２２ポートスイッチを備え、これらスイッチのうちの１つが、図７で番号１５８で示されている。これらループスイッチ１５８の各々は、１〜６個のＳＥＡ１３４および１〜１６個のＩＳＥ１３６に接続していることが好ましい。
【００１９】
次に、図８に示されるように、２つのＬＳＭ１５６にはどのＳＥＡ１３４も結合していることが好ましく、この場合、１〜９６個のＩＳＥの冗長接続を行うように６つまでのポートが各ＬＳＭにおいて別のＳＥＡモジュールに接続されている。１つのＩＳＥ当たり４つのポートが使用される場合、４重のバックエンド冗長性とするために１つのＬＳＭ１５６を３つの２２ポートループスイッチ１５８で構成できる（すなわち４つのＬＳＭ１５６が最大４８個のＩＳＥ１３６をサポートする）。
【００２０】
ＳＥＡ１３４は、別個のライトバックキャッシュメモリを維持しないが、その代わりに後述するようにＩＳＥ１３６のライトバックキャッシュ能力を利用することが好ましい。記憶装置プロセッサ１４８は、選択された記憶装置プロセッサ１４８内で、書き込みスルー動作全体を実行するための単一リクエストをポリシプロセッサ１４２が発生することができるようにする、スクリプトに基づく動作を実行することが好ましい。図６〜８のアーキテクチャに対し、５００Ｋ（５００，０００）から１Ｍ（１，０００，０００）ＩＯＰＳ（１秒当たりの入出力動作）の持続データレートが予想される。
【００２１】
１つのＳＥＡ１３４ごとに１２個のポートが設けられている場合、各ＳＥＡは単一ＬＵＮに対し９．６ＧＢ／ｓ（９．６×１０９ビット／秒）のバンド幅を提供できる。プール内のすべてのＳＥＡ１３４のすべてのホストポートで、ＬＵＮを提示できるよう、図４において番号１６０で識別されているような「ユニットマスター」として特定のＳＥＡを示すことができる。これにより、厳密なＳＣＳＩ（スモールコンピュータシステムインターフェース）の規格インターフェースのもとで、キャッシュコヒーレンシーを維持するために、好ましくはリクエストごとに２つの追加的なコマンドと応答の交換を使用することを必要とする。「ゆるやかなＳＣＳＩ」実現例のもとでは、非転送コマンドに対しては一般にエクストラ交換（ｅｘｔｒａ  ｅｘｃｈａｎｇｅｓ）が使用されるだけである。後者の場合、単一ＬＵＮに（６つのＳＥＡモジュールを介し）５７．６ＧＢ／ｓのバンド幅を設けることができる。
【００２２】
双方のケースに対し、１１，５２０個までのデバイス１００（および対応する３ＭのＩＯＰＳレート）をカバーするために、単一のＬＵＮをスケーリングできる。６個のＳＥＡモジュールを用いる場合、総計７２（６×１２）個のホストポートを利用でき、１２〜３６個のホスト（ここで、どのホストもすべてのＬＵＮを見ることが可能である）を収容するように、比較的大きい完全に冗長な記憶エリアネットワーク（ＳＡＮ）を設けることができる。
【００２３】
ＳＥＡ１３４は、記憶装置をマッピングするようには構成されず、むしろＩＳＥ１３６が維持するマップを読み出しするように構成される。従って、ＳＥＡ１３４は、ＩＳＥ１３６と協働して作動し、累積した記憶スペースを提供すると共に、仮想ＬＵＮスペースに追加された（またはこのスペースから除去された）デバイス１００の数と比例して、ライトバックキャッシング、ＲＡＩＤ処理およびＩＯＰＳレートをスケーリングできるようにする。
【００２４】
所望するように、各個々のＳＥＡ１３４のワールドワイドネーム（ＷＷＮ）が異なっていても、ＳＥＡ１３４のすべてによって提示される仮想ＬＵＮを同一ＬＵＮとして識別するように、特定のホストデバイス（図２における１２６）を構成できる。これとは異なり、各関連するポートに対し、共通のＷＷＮノードネームおよび異なるポートネームを提示するように、ＳＥＡ１３４のグループを共に結びつける。この後者の構成により、それぞれのデバイス１００のすべての組み合わされた入出力能力がＬＵＮ自身の能力をサポートできるようになる。
【００２５】
従って、ＬＵＮに対する「基本動作モード」は、一般的に図３に示されるように、単一のＷＷＮノードネームを示す多数のポートを仮想単一アレイコントローラに提供するように、ＳＥＡ１３４が結び付けられた動作として定義される。この基本モードは、各ホストに対して標準ＳＣＳＩモデルをトランスペアレントに提示するよう、特定のＬＵＮに対して指定されたユニットマスター１６０（図４）にすべてのコマンドを通過させる。すなわちホストによって発生されたすべてのコマンドは、ユニットマスターを通過する。ＳＥＡ１３４のうちの任意のものに対してコマンドを発生できるが、受信側ＳＥＡはコマンドによる処理の前にユニットマスター１６０からの許可を得る。
【００２６】
「エンハンスされた動作モード」では、ユニットマスターを通してキャッシュされたデータおよびコマンドゲート維持ファンクションを提供するように、すべてのホストと協働してスプリットＳＣＳＩモデルを設けることが好ましい。このエンハンスされたモードはユニットマスター装置を有するスプリットＬＵＮモデルが使用中であることを知っているすべてのホストを巻き込み、適性な挙動（例えば競合なし）を保証するよう、ホストレベルでの適当な規則によりコマンドの協働を実行する。エンハンスされた動作モードは、基本モードのようにＳＥＡがユニットマスターに問い合わせをしなくても、ユニットマスターを除くＳＥＡ１３４によりほとんどのリクエストを処理できるようにすることにより、性能を大幅に改善する。
【００２７】
システムの拡張およびデータの移行を促進する、図３〜８のシステムにより、新規なマッピング方式を利用する。このマッピング方式はトップレベルのマップ（ＴＬＭ）１６２およびボトムレベルのマップ（ＢＬＭ）１６４を含む多数のデータ構造を使用することが好ましい（図３参照）。ホスト１２６および／またはＳＥＡ１３４レベルでＴＬＭ１６２を維持でき、一方、ＩＳＥ１３６レベルでＢＬＭ１６４を維持することが好ましい。
【００２８】
ＬＵＮの仮想記憶スペースは、例えば約２ＧＢ〜４ＧＢの範囲のような選択された記憶容量の複数のより大きいグレイン（ｇｒａｉｎ，粒）として配置されている。より大きいグレインの各々をＬＵＮ１３０内で独立して移動させることができ、これにより所望するように、多数のより大きいグレインの並列移行が容易となる。より大きいグレインの各々は、例えば８ＭＢ（８×１０６バイト）または１６ＭＢの大きさの多数の、より小さいグレインに分割される。より大きいグレインの各々におけるより小さいグレインの数は、２の累乗（例えば８、１６、３２など）となるように選択することが好ましい。ＴＬＭ１６２は、多数のＩＳＥ１３６にわたってより大きいグレインが分布（ストライプ化）されるにつれ、異なるＩＳＥ１３６が異なるより小さいグレインを記憶するように、より小さいグレインの位置を一般に記述する。
【００２９】
図解によって説明するように、図９は、ＬＵＮ仮想スペースの一部を形成する多数のより大きいグレインを一般に示す。図９では、これらより大きなグレインはＧ０〜Ｇ３として示されており、更にこれら、より大きいグレインの各々は８個までのより小さいグレインから形成されることが示されている。図９では、より大きいグレインＧ０のうちの、より小さいグレインは、ｇ０−０〜ｇ０−７として示されている。
【００３０】
マッピング方式の、より小さいグレインの各々は、別個のＩＳＥ１３６によって管理されている。好ましくは、このより小さいグレインは、多数のデバイス１００を横断するように内部がストライプ状となっており、ミラー化することができ、そうでない場合は冗長に記憶される。各ＩＳＥ１３６は、ＴＬＭによりＬＵＮ全体に対するマップを更に有する。より詳細に後述するように、各ＩＳＥ１３６は各エントリー内のＢＬＭインデックス値を除けば同一であるＴＬＭを有することが好ましい。ＴＬＭへのインデックスは、ブロック内の２ＧＢまたは４ＧＢのグレインサイズによって分割することにより、ＶＢＡ（仮想ブロックアドレス）から誘導される。
【００３１】
（後述するように）ＶＢＡからはメンバーポジション値も誘導され、この場合、ラッピンググリッドインデックスによって識別される特定のアレイをインデックス化するよう、ＴＭＬエントリー内のラッピンググリッドオフセット値にメンバーポジションが加算される。戻された値がＳＥＴ値（記憶要素のタグ）となる。戻されたＳＥＴ値と特定のＩＳＥ１３６のＳＥＴ値が一致した場合、そのＩＳＥ１３６にＶＢＡブロックが常駐する。そうでない場合、ＳＥＴ値はどのＩＳＥがＶＢＡブロックを含むかを示す。このように、各ＩＳＥ１３６上のＢＬＭは、その特定のＩＳＥに存在するより小さいグレインをマッピングするだけである。
【００３２】
上記基本モードでは、すべてのコマンドはユニットマスターを通過するように流れ、コマンドが向けられた先のＳＥＡ１３４を介し、関連するＩＳＥ１３６により、各コマンドに対するデータおよびステータスが送られる。ユニットマスターは、マップの移行および更新を管理することが好ましいが、所定のＩＳＥ１３６からのグレインの特定の組の移行は、ＩＳＥレベルで行われる。かかる移行は一般に、一度に一組ずつ、特定の記憶要素上で（１つのＴＬＭエントリーに対応する）ＢＬＭのうちの８分の１の量に相当するグレインの組を移動させることを必要とする。データ移動の完了後に、各ＩＳＥで、関連するＴＬＭエントリーが更新される。
【００３３】
一般に、ＢＬＭ１６４は、（より小さいグレインにおける）多数の仮想スペースをＩＳＥレベルのデータ構造、例えば２ＧＢまたは４ＧＢに組み込むように構成されている。ラッピンググリッドは記憶要素タグ（ＳＥＴ）値の繰り返しパターンとして周期的ラッピンググリッドファンクションから形成される。どのＩＳＥ１３６にも１つのユニークなＳＥＴ値が割り当てられ、ラッピンググリッドは総計３２個のＩＳＥ１３６（例えば０〜３１のＳＥＴ値）をサポートできる。各ラッピンググリッド内のＳＥＴ値に順序をつけ、６４バイトのアレイを満たすのに十分な回数繰り返すことが好ましい。参考として、２５６個までのＳＥ１３６（および従って８個までのラッピンググリッド）をサポートするように、より大きい記憶アレイの仮想化環境（ＳＡＶＥ）を設けることができる。好ましい実施例では、最大のＳＡＶＥは９６個のＩＳＥ１３６を有する。
【００３４】
図１０には、ＴＬＭ１６２の選択されたエントリーが好ましく記載されており、このエントリーは、ＢＬＭインデックス値、ラッピンググリッドオフセット値、ラッピンググリッドインデックスおよび粗割り当てフラグを含む。このように、ＴＬＭ１６２はより小さいグレインの各々が種々に分布するＩＳＥ１３６の間のどこに位置するかを追跡する。
【００３５】
ＢＬＭ１６４のためのフォーマットは、所定のラッピンググリッドに対して選択されたストライプ幅シフト値を含む。後述するように、このストライプ幅シフト値がゼロのとき、各エントリーに対する仮想スペースは隣接し、このストライプ幅シフト値がゼロでない場合、仮想スペースが隣接しない。このゼロでないストライプ幅シフト値は所定のラッピンググリッドに対し、３、４または５にできることが好ましい。利用できるメモリサイズの変更（例えばＩＳＥ１３６の追加または除去）はストライプ化に影響し得る。例えば所定グリッドにおける１５個から１６個へのＩＳＥ１３６への移行は、８番目の要素ごとではなく、１６番目の要素ごとのストライプへと変える。すなわちこの場合、データの半分が再分布されることになるが、これによって性能レートを実質的に倍にすることが可能となる。
【００３６】
所定のストライプ幅に対する適当な境界（例えば２の累乗）では、ＴＬＭエントリーの一組が同じＢＬＭを参照する。その理由は関連するＢＬＭ内にこれらＴＬＭエントリーの各々における仮想ブロックアドレス（ＶＢＡ）が含まれるからである。失われたＶＢＡは、そのグループ内の他のＩＳＥ１３６上にストライプ化される。
【００３７】
図１１は、９つの異なるＩＳＥ１３６（０〜８のＳＥＴ値）にわたって大きいグレインを分散すべき状況に対する周期的ラッピンググリッドファンクションの一例を示す。図１１から分かるように、シーケンス［０１２３４５６７］でパターンがスタートし、９回の繰り返しを通して初期の［０１２３４５６７］のパターンに戻るようにサイクル動作する。
【００３８】
この例では、９未満の最大の２の累乗は８（２３）であるので、ストライプ幅は３のシフト値を有する８となる。このシフト値をテーブルに記憶し、そのラッピンググリッドに対するＳＥＴ値の特定の６４バイトのアレイと関連づけする。アレイ内でユニークな組を発生するラッピンググリッドオフセット値は９つ存在する。特定のデータをマッチングする際にＩＳＥ１３６のＳＥＴ値に整合する各オフセットを使用することにより、９つのＩＳＥ１３６にわたってデータを均一に分散させる。
【００３９】
このことは一般に図１２に例示されており、図１２は９つのＩＳＥ１３６（ＩＳＥ０〜ＩＳＥ８と表示）を示し、これらＩＳＥにわたって図１１のファンクションに従う９つのより大きいグレイン（Ｇ０〜Ｇ８と表示）がストライプ状になっている。図１２では、それぞれストライプ状のデータはクロスハッチングで示されている。この例では、より小さいグレインの数が名目上、種々のＩＳＥ１３６の間でバランスがとられており、各ＩＳＥは、９つのより大きいグレインから総計８個のより小さいグレインを記憶する。
【００４０】
グリッド内でブランクの正方形で表示された、図１２内の種々のＩＳＥ１３４の使用されていない部分は、特定のＩＳＥ１３４が大きいグレインに寄与していないことを示している。図１２は大きいグリッドを概念的に示しているが、その内部の各正方形は、１６ＭＢのグレインでインターリーブする４ＧＢのスペース（１６ＭＢの、より小さいグレインを仮定）を示している。これにより、全体で３２ＧＢにわたって良好に拡散するよう、マップ境界に関してグレインは細かく分布される。すなわち同じ８個の要素にわたり、１６ＭＢのストライプサイズで３２ＧＢがストライプ状とされる。次の３２ＧＢに対し、（９つの要素からの）８つの要素の異なる組が使用されている。
【００４１】
それにもかかわらず、図１２に示された、より大きいグレインＧ０〜Ｇ８に関し、かかるグレインのデータはそれぞれの記憶要素ＩＳＥ０〜ＩＳＥ８にわたり、名目上バランスがとられている。すなわち記憶要素１３６の各々は、同じ数の、より小さいグレインを記憶しているので、このことはデータ入出力レートの向上が促進されると共に、これらグレインのボトルネックが低減されている。上記のように、このようなバランスを確立するために、総計９つの別個のパターンが使用されている。
【００４２】
所定のＶＢＡオフセット（例えば２ＧＢまたは４ＧＢ境界）に対するＴＬＭエントリーは、各ＩＳＥ１３６上に異なるメンバーポジションを有する。このメンバーポジション値は、所定のＩＳＥに対して、どの組のＶＢＡレンジがマッピングされるかを決定する。図１２の例では、記憶要素ＩＳＥ０に対するＴＬＭエントリーは、次のようなラッピンググリッドオフセットとメンバーポジションの組み合わせ、すなわち｛０，０｝、｛８，１｝、｛７，２｝、｛６，３｝、｛５，４｝、｛４，５｝、｛３，６｝および｛２，７｝を有する。「０」のＳＥＴ値は、９番目のパターンに等価的なラッピンググリッド内の位置では発生しない。これら値が９×８＝７２バイトのシーケンスとして取り扱われる場合、最初の９つの位置（オフセット０〜８）を参照することによって、すべてのパターンを得ることができる。最大メンバーポジションが７の場合、最大インデックスは１５（８＋７）であるので、最初の１６バイトを満たすだけでよい。従って、図１１は、９つの異なるユニークなパターンの組を示す。
【００４３】
第２の３２ＧＢのスタートＶＢＡは、０ｘ４００００００の値を有する。オフセット値が８であり、メンバーポジションが１（この値は０のＳＥＴ値を識別する）である場合、０のＳＥＴ値を有するＩＳＥ１３６（すなわち図１２内のＩＳＥ０）上のこのレンジ内でマッピングされる第１のＶＢＡは１だけオフセットされる。このＶＢＡは１×１６ＭＢ（０ｘ８０００）のＶＢＡオフセットおよび０ｘ４００８０００の値を有する。ＢＬＭ１６４内の最初のエントリーにより、対応するより小さいグレインがマッピングされ、次のエントリーはＶＢＡの値、すなわち８×１６ＭＢ（０ｘ４００００）大きい値（この値は０ｘ２０４８０００の値）を有する。
【００４４】
このように、各ＩＳＥ１３６は所定のＶＢＡレンジに対するデータを有するかどうかを示すだけでなく、そのデータを有しないとき、そのデータがどこにあるかも示すことができる。この例では、仮想スペースの３２ＧＢを共にマッピングするＩＳＥ１３６のうちの各１つは、４ＧＢのＢＬＭにコンパクトにされた各４ＧＢのスペース（１つのＴＬＭのエントリー）のうちの８分の１を有する。
【００４５】
動作中、所定のＩＳＥ１３６に対するＳＥＴ値に一致するＳＥＴ値を探すために、ラッピンググリッドオフセットでスタートするラッピンググリッドを検査することにより、メンバーポジションをチェックする。ＳＥＡ１３４は、所定の、より小さいグレインの相対的オフセットを得るために、ＶＢＡを右へ１５だけシフトし（すなわち１６ＭＢで割り）、次にメンバーポジションを得るためにストライプ幅の値−１の値でマスクすることにより、使用するＳＥ値を得る。次に、実際のラッピンググリッドテーブルにアクセスするためにラッピンググリッドオフセットにメンバーポジションが加算される。
【００４６】
同じように、関連するＩＳＥ１３６はアクセスすることが求められている所定のＶＢＡに対するメンバーポジション値を計算し、ラッピンググリッドが関連するデータを有しているかどうかを見るために、ラッピンググリッドをチェックする。すべてのケースにおいて１６ＭＢの境界の交点をユニットマスターによって取り扱うことが予想される。上記基本モードにおいて、最初の受信ＩＳＥ１３６がリクエストしたデータを有していない場合、最初に受信するＩＳＥ１３６は、正しいＩＳＥを参照するように、そのマップを更新することをＳＥＡに通知する。次にＳＥＡは正しいＩＳＥに対するリクエストを発生する。
【００４７】
種々のＩＳＥ１３６にわたってデータが分布する態様は、多数のファクター、例えば関連するラッピンググリッド内のＩＳＥ１３６の数に応じて決まる。ＩＳＥの数が奇数であるとき、ユニークなパターンの数はＩＳＥの数に等しくなる（例えば、図１１〜１２のラッピンググリッドは９つのパターンと９のＩＳＥ１３６の双方などを使用する）。
【００４８】
ラッピンググリッド内のＩＳＥの数が偶数であるとき、小さいグレインをバランスさせるのに必要なパターンの数は、ＩＳＥの数が２の累乗であるかどうかに応じて決まる。そうである場合、１つのパターンだけを使用する。より詳細に説明すれば、ＩＳＥの総数が１（２０）、２（２１）、４（２２）、８（２３）または１６（２４）に等しいとき、単一パターンを使用する。その理由は、ラッピンググリッドのすべてのメンバーにわたって各大きいグレインを等しく分布させることができるからである。このことは図１３に例示されており、図１３は１６に等しいＩＳＥ１３６の総数を示し、各大きいグレインは１６個のより小さいグレインに分割されており、ＩＳＥ１３６の各々は、より大きいグレインの各々からのより小さいグレインのうちの１つを受信する。
【００４９】
他方、ＩＳＥの数が偶数であり、２の累乗でないとき、ラッピンググリッドパターンの総数は、収容できる最大の２の累乗によりＩＳＥの数を割ることによって決定される。これによって次のようなＩＳＥの数とパターンの数の組み合わせ、すなわち｛６，３｝｛１０，５｝｛１４，７｝｛１８，９｝｛２０，５｝，｛２２，１１｝｛２４，３｝｛２８，７｝および｛３０，１５｝が得られる。図１４に示されるように総数６のＩＳＥ１３６（ＩＳＥ０〜ＩＳＥ５）は、より大きいグレインから、４つのより小さいグレインを受信するために、３つの異なるパターンを使用する。図１１内のＩＳＥ１３６の各々は、同じ数の（すなわち２の）より小さいグレインを記憶することが理解できよう。同様に、前のシーケンスから３０のＩＳＥ１３６を使用する場合、データを均一に分散させるのに１５の異なるパターンを通るようにサイクル動作することが必要であることが理解できよう。一般に、所定の組からＩＳＥ１３６を除いたり、この組に追加するときに、再分配コストを最小にするため、すべてのパターンを使用することがより良好である。
【００５０】
上記マッピング方式は４ＧＢごとに１６ビットを使用して、所定の小さいグレインの境界、例えば１６ＭＢ上のどこにデータがあるかを、（ＳＥＴ値を介して）ホストが知ることができるようにすることが好ましい。ラッピンググリッドの定義およびＳＥＴ値をポートにマッピングするためのテーブルとは別に、ホストまたはＳＥＡが必要とする他の値はラッピンググリッドオフセットおよびラッピンググリッドインデックスだけである。
【００５１】
従って、選択されたホスト（またはＳＥＡ）は、比較的少数のオーバーヘッドデータを使って大量の仮想メモリを効率的にマッピングできる。例えば１ＫＢ（１×１０３バイト）のメモリだけを使って、２ＴＢの仮想スペースをマッピングできる。ホストはマップを全く管理もしくは記憶しなくてもよいことが理解できよう。むしろこれらマップは、ＩＳＥ１３６またはＩＳＥとＳＥＡ１３４によって維持されうる。（ＳＥＡに対してノーマルな）エンハンスモードでは、既にデータが移動されているためにＳＥＡが誤ったＩＳＥ１３６に特定の入出力リクエストを発生したときに、このことがリアルタイムでＳＥＡに通知される。ＳＥＡによりＳＡＶＥが提示されるときをホストは全く知らない。
【００５２】
上記のように構成されたシステムの具体的な解説をするために、ＩＳＥコンフィギュレーションが４４００ＭＢ／ｓのホストポート、４０個のドライブおよび５０ＴＢの仮想容量を有すると仮定した場合、９６個のＩＳＥ１３６を有するＳＥＶＥを提示する仮想コントローラは、サイズが４．８ＰＢ（４．８×１０１２バイト）である単一の仮想ＬＵＮ１３０（図３）を形成できる。３２のストライプ幅を仮定した場合、所定のラッピンググリッドに対し、５７．６ＧＢ／ｓのレートで、（７２個のホストアダプタを用いて）単一ホストへのバンド幅を維持できる。６個のＳＥＡによってアグレゲートされたＳＡＶＥは、更に９６０ＫのＩＯＰＳをサポートでき、各ＳＥＡは単に２．４ＭＢのメモリで全体が４．８ＰＢの仮想ＬＵＮをマッピングできる。
【００５３】
上記マップ構造は、プールされたＳＥＡ１３４を使用するための好ましい方法を提供できるが、かかる方法は無制限であることが理解できよう。すなわち上記とは別に、または上記方法に加え、マップ構造は選択されたデータを単一のＩＳＥ１３６にストライプ化できる。
【００５４】
選択されたＳＥＡ１３４により、選択されたホスト書き込みコマンドがＩＳＥ１３６の関連するサブセット（このサブセットにわたってデータをストライプ化すべきである）に転送されると、ＩＳＥのキャッシュメモリ１４０（図５）へ関連するホストデータをそれぞれ提供できる。ライトバックキャッシュモードを利用する場合、個々のＩＳＥ１３６によるデータの特定の書き込みのスケジューリングが後で行われる場合でも、すべてのＩＳＥ１３６がそのコマンドに対するデータの受信を確認したときに、選択されたＳＥＡ１３４はコマンド完了ステータスを開始したホストに戻し、書き込みコマンドの完了を示す。
【００５５】
本明細書に開示したようなＳＥＡ１３４の冗長なプール化は、本明細書でＲＡＩＤ−１の三角法（ｔｒｉａｎｇｕｌａｔｉｏｎ）と称す好ましい動作モードを通して、データレートを高める。一般に、仮想ＬＵＮに少なくとも所定のタイプのホストデータが書き込まれるごとに、これらデータはターゲットＬＵＮレンジに関係して、ＩＳＥの第１の組にわたって書き込まれる。更に、ホストに対してトランスペアレントなモードでは、関連するＩＳＥ１３６または関連するＳＥＡ１３４が、書き込むべきデータをＩＳＥ１３６の第２のオーバーラップしていない組へ向け、データの第２のコピーを提供する。
【００５６】
このように、選択されたこのデータに関連する読み出し入出力リクエストの発行をＳＥＡ１３４のうちの任意のものに転送することができ、選択されたデータのコピーを有するＩＳＥ１３６のいずれかの組から、これを検索できる。これによって、ＩＳＥにわたって冗長なデータに対して劣化していないＩＳＥを優先することにより、ＳＥＡモジュールのプールが劣化したＩＳＥを補償することを可能にする。このように、デバイスの故障はシステム全体の性能に全くまたはほとんど影響しない。
【００５７】
最後に上記のように、本明細書で具体化したようなシステムは、仮想記憶スペースのそのときの時点で存在する要件を満たすように自動的にスケーリングできる。再び図４を参照すると、ＳＥＡ１３６の第１の組（例えば４つのＳＥＡ）は、全体に割り当てられた仮想記憶スペースの第１サイズに対し、選択された数（例えば１２の）ＩＳＥ１３６に結合されている。例えばＩＳＥのプールを１６まで拡張するためのホスト割り当てに応答するような、仮想記憶スペースに対するリソースの追加割り当ての結果、更に記憶スペースのサイズの増加に適合するよう、ＳＥＡ１３６（例えば別の２つのＳＥＡ）が更に追加されることが好ましい。
【００５８】
このようなＳＥＡの更なる割り当ては、ホストに対してトランスペアレントに行われることが好ましく、このような割り当てはユニットマスター（図４の１６０）、初期のグループ内の選択されたＳＥＡ、または１つ以上のＩＳＥにより開始できる。仮想記憶スペースを小さくするときに、所望するようにＳＥＡの同様な割り当て解除を行うことができる。ＳＥＡを追加する（または除去する）ための判断は、そのときに存在する負荷条件に関連して行い、スループット能力が需要レベルに従うことができるように行うことができる。このようにＳＥＡは仮想記憶スペースのサイズ変化に応答してＩＳＥをアグレゲートするように動作する。
【００５９】
次に、本明細書で具現化したように、仮想記憶スペース１３０は複数の記憶要素、例えばＩＳＥ１３６にわたって形成され、各記憶要素はデータ記憶デバイス、例えば図５におけるデバイス１００のアレイを含む。仮想コントローラ１３２は、第１ＳＥＡによる第１ホストコマンドの受信に応答し、選択された記憶要素に第１コマンドを発生するように構成されている第１記憶要素アグレゲータ（ＳＥＡ）、例えば図４内のユニットマスター１６０を備える。この仮想コントローラは第２ＳＥＡによる第２ホストコマンドの受信に応答し、選択された記憶要素に第２コマンドを同時に発生するように構成されている第２ＳＥＡ１３４（例えば、図４における非ユニットマスターＳＥＡ）を備える。
【００６０】
従って、第１デバイスが故障したときに第１デバイスが第２デバイスへミラー動作させるような従来のデュアルコントローラ構造およびステップとは異なり、それぞれのＳＥＡは同時にアクティブである。更に、それぞれのＳＥＡはＬＵＮの同じ部分に対してオーバーラップしてアクセスするように同時にアクティブであり、単に記憶スペースのオーバーラップしていない異なる部分に割り当てられるのではない。
【００６１】
これまでの説明において、本発明の種々の実施例の構造およびファンクションの詳細と共に、本発明の種々の実施例の多数の特徴および利点について説明したが、これら説明は単に発明を説明するためのものではなく、特に本発明の原理における部品の構造および配置に関し、特許請求の範囲に記載した用語の一般的な広義の意味が示す完全な範囲まで、細部を変更することが可能である。
【図面の簡単な説明】
【００６２】
【図１】データ記憶デバイスの一例を示す。
【図２】図１のデバイスを内蔵するネットワークシステムを示す。
【図３】本発明の種々の実施例に係わる仮想コントローラと組み合わせた仮想論理ユニット番号（ＬＵＮ）記憶スペースを一般的に示す。
【図４】図３の仮想要素内に選択的に組み込むことができる複数の物理的インテリジェント記憶要素（ＩＳＥ）と組み合わせた複数の物理的記憶要素のアグレゲータ（ＳＥＡ）を有する物理的メモリスペースを一般的に示す。
【図５】図４から選択されたＩＳＥの略図である。
【図６】図４から選択されたＳＥＡの簡略されたファンクション図を示す。
【図７】ループスイッチを介した多数のＩＳＥに対する多数ＳＥＡの接続例を示す。
【図８】一対のループスイッチモジュールを介したＩＳＥの集団に対する選択されたＳＥＡの対応する冗長接続を示す。
【図９】図３の仮想ＬＵＮを構成するメモリ容量の大きいグレインと、より小さいグレインのトップレベルでのグループ分けの一般化された図を示す。
【図１０】図９と組み合わせて使用されるトップレベルのマップ（ＴＬＭ）に対するエントリーフォーマットの改良するコンポーネントを一般に示す。
【図１１】周期的ラッピンググリッドファンクションのシーケンスの一例を示す。
【図１２】図１１のラッピンググリッドファンクションに従った記憶要素の一組にわたる大きいグレインの記憶を例示したものである。
【図１３】別のラッピンググリッドファンクションを例示したものである。
【図１４】更に別のラッピンググリッドファンクションを例示したものである。
【符号の説明】
【００６３】
１００  デバイス
１０２  ベースデッキ
１０４  トップカバー
１０６  スピンドルモータ
１０８  記憶媒体
１０９  回転方向
１１０  ヘッド
１１４  ボイスコイルモータ
１２０  記憶アレイ
１２２  コントローラ
１２４  ファブリック
１２６  ホストデバイス
１３０  記憶スペース
１３２  仮想コントローラ
１３４  記憶要素アグレゲータ（ＳＥＡ）
１３６  インテリジェント記憶要素（ＩＳＥ）
【図１】
2009015839.tif 000003
【図２】
2009015839.tif 000004
【図３】
2009015839.tif 000005
【図４】
2009015839.tif 000006
【図５】
2009015839.tif 000007
【図６】
2009015839.tif 000008
【図７】
2009015839.tif 000009
【図８】
2009015839.tif 000010
【図９】
2009015839.tif 000011
【図１０】
2009015839.tif 000012
【図１１】
2009015839.tif 000013
【図１２】
2009015839.tif 000014
【図１３】
2009015839.tif 000015
【図１４】
2009015839.tif 000016