(57)【要約】【課題】メモリーウインドウメッシュにおけるメッシュエントリーのリファレンス位置へのメモリー書き込みオペレーションを検出し、その検出された書き込みに応答するアクションを呼び出す書き込みリファレンスメッシュ（ＷＯＲＭ）を提供する。【解決手段】ＷＯＲＭにおいて、メッシュエントリーは、ゾーンに並べられる。呼び出されたアクションは、書き込みオペレーションが検出された個々のメッシュエントリーまたはゾーンに依存する。呼び出されたアクションは、ベンダーが提供するカスタムロジックによって構成できる。したがって、特定用途のプロセッサーにおいて、カスタムロジックは、メモリーウインドウにおける任意の数の特定メモリーアドレスの１つへの書き込みオペレーションを検出することによって、広く多様な洗練されたアクションをトリガーすることができる。【選択図】図４
2006209727.tif 000002
【特許請求の範囲】
【請求項１】
リファレンス位置として指定されたアドレス位置を含む複数のアドレス位置をそれぞれに有するメッシュエントリのアレイを備えたメモリウインドウメッシュを画定し、
メッシュエントリーのリファレンス位置への書き込みオペレーションを検出し、
検出オペレーションに応答して、書き込まれたメッシュエントリーと関連するアクションをトリガーする、
ステップを含む、書き込みリファレンスメッシュを構成する方法。
【請求項２】
メモリーウインドウメッシュがゾーンに分割されており、各ゾーンには複数のメッシュエントリーが含まれており、かつトリガーされたアクションは、書き込まれたメッシュエントリーが含まれているゾーンと関連している請求項１に記載の方法。
【請求項３】
メモリーウインドウメッシュがゾーンに分割されており、各ゾーンは、トリガーされるべきアクションを指定するアクションディスクリプターと関連している請求項１に記載の方法。
【請求項４】
検出された書き込みオペレーションが、第一のメモリーのメモリーアドレスに向けられており、かつトリガーを行うオペレーションが、第二のメモリーのメモリーアドレスに向けられる別の書き込みオペレーションをトリガーする請求項１に記載の方法。
【請求項５】
第二のメモリーに書き込まれるメモリーアドレスが、書き込まれたメッシュエントリーの含まれるゾーンに依存する請求項４に記載の方法。
【請求項６】
第二のメモリーに書き込まれたメモリーアドレスが、第一のメモリーに書き込まれたメッシュエントリーに依存する請求項４に記載の方法。
【請求項７】
第二のメモリーに書き込まれたメモリーアドレスが、第一のメモリーに書き込まれたメモリーアドレスのメッシュインデックスに依存する請求項４に記載の方法。
【請求項８】
トリガーするオペレーションが、メッセージを生成し、そのメッセージをメッセージプロセッサーに送る請求項１に記載の方法。
【請求項９】
生成されるメッセージが、書き込まれたメッシュエントリーの含まれているゾーンに依存する請求項８に記載の方法。
【請求項１０】
生成されるメッセージが、第一のメモリーに書き込まれたメッシュエントリーに依存する請求項８に記載の方法。
【請求項１１】
生成されるメッセージが、第一のメモリーに書き込まれたメモリーアドレスのメッシュインデックスに依存する請求項８に記載の方法。
【請求項１２】
検出オペレーションが、メッシュエントリーへの書き込みオペレーションが完了するとき検出を行う請求項１に記載の方法。
【請求項１３】
各メッシュエントリーには複数のアドレス位置が含まれており、リファレンス位置が、アクションをトリガーするよう指定されるメッシュエントリーにおける所定のアドレス位置を表し、そうしてメッシュエントリーにおける他のアドレス位置への書き込みオペレーションがアクションをトリガーしないようにする請求項１に記載の方法。
【請求項１４】
メッシュエントリーのアレイを含むメモリーウインドウメッシュであって、各メッシュエントリーには複数のアドレス位置が含まれており、メッシュエントリーにはリファレンス位置として指定されるアドレス位置が含まれているメモリーウインドウメッシュと、
書き込まれたメッシュエントリーと関連するアクションを、メッシュエントリーのリファレンス位置への書き込みオペレーションの検出に応答してトリガーするストレージエンジンと
を備える書き込みリファレンスメッシュを構成するシステム。
【請求項１５】
メモリーウインドウメッシュがゾーンに分割されており、各ゾーンには複数のメッシュエントリーが含まれており、かつトリガーされるアクションが、書き込まれたメッシュエントリーの含まれているゾーンと関連している請求項１４に記載のシステム。
【請求項１６】
メモリーウインドウメッシュがゾーンに分割されており、各ゾーンは、トリガーされるべきアクションを指定するアクションディスクリプターと関連している請求項１４に記載のシステム。
【請求項１７】
検出される書き込みオペレーションが、第一のメモリーのメモリーアドレスに向けられていて、かつトリガーされるアクションが、第二のメモリーのメモリーアドレスに向けられる別の書き込みオペレーションをトリガーする請求項１４に記載のシステム。
【請求項１８】
トリガーされるアクションが、メッセージを生成して、そのメッセージをメッセージプロセッサーに送る請求項１４に記載のシステム。
【請求項１９】
メッシュエントリーのリファレンス位置への書き込みオペレーションの検出が、メッシュエントリーへの書き込みオペレーションが完了するとき検出する請求項１４に記載のシステム。
【請求項２０】
各メッシュエントリーには複数のアドレス位置が含まれており、リファレンス位置が、アクションをトリガーするよう指定されるメッシュエントリーにおける所定のアドレス位置を表し、そうしてメッシュエントリーにおける他のアドレス位置への書き込みオペレーションがアクションをトリガーしないようにする請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはメモリーサブシステムに関し、より詳しくは書き込みリファレンスメッシュに関するものである。
【背景技術】
【０００２】
伝統的なストレージフレームワークは、しばしば、規格品の一般のプロセッサーやファームウェアのような分離した構成要素から組み立てられて、性能および扱い易さの競合上の基準を満たしている。しかしながら、一般の構成要素のそのような組み合わせでは、現代のネットワークを中心とするストレージモデルの要件および期待に合致できるものではない。したがって、ストレージエリアネットワーク（ＳＡＮ）アプリケーション用に、新しい、特別な目標のある構成要素が開発されている。
【０００３】
そのような構成要素の１つが、インテリジェントストレージプロセッサー（ＩＳＰ）である。ＩＳＰは、ストレージ制御器の構成を、埋め込まれたスイッチファブリックと組み合わせる特定用途のプロセッサーを表していて、デバイスに束縛されたストレージの物理的な観点ではなく、ストレージの論理的な観点をもたらす高性能仮想ストレージサービスを提供する。例えば、ＩＳＰは、ストレージ制御器システムまたはインテリジェントＳＡＮスイッチにおける一般のプロセッサーに置き換わって、重要な読み出し／書き込みコマンドを処理し、ストレージアプリケーションを加速し、かつ管理機能の特徴を提供できる。
【０００４】
システムの売り手は、そのような特定用途のプロセッサー用のカスタムロジックを提供して特定の「価値付加」製品の特長を提供する。例えば、ストレージシステムの売り手は、１つ以上のＩＳＰをデザインしてストレージシステムとし、カスタムロジックを提供して、ルーティング、量管理、データ移動および複製のような元からあるインテリジェントＳＡＮのサービスを、ファブリックスイッチ、ルーター、ストレージ管理装置、ストレージアレイおよびブレードサーバーに一体化することを可能にする。そのように、ＩＳＰには、必要なハードウェアインターフェースおよびソフトウェアＡＰＩが備わっていて、種々の現存するストレージネットワーキング装置および管理アプリケーションとの一体化が可能である。
【０００５】
特定用途のプロセッサーは、ストレージシステムデザイナーの益々厳しい性能要求およびプログラミングの需要を満たすだけ充分に柔軟的でパワフルなプログラミングモデルを支援しようと試みる。しかしながら、現存するアプローチによっては、これらのシステムの、洗練された、高い性能という必要性に充分に適合するメモリーの解決策が提供されていない。
【発明の開示】
【０００６】
ここに記述され、特許請求される実施例は、メモリーウインドウメッシュにおけるメッシュエントリーのリファレンス位置へのメモリー書き込みオペレーションを検出し、検出された書き込みに応答するアクションを呼び出す書き込みリファレンスメッシュ（ＷＯＲＭ）を提供することによって前述の課題を解決する。メッシュエントリーは、ゾーンに並べられている。呼び出されたアクションは、個々のメッシュエントリーまたは書き込みオペレーションが検出されたゾーンに依存する。呼び出されたアクションは、ベンダーによって提供されるカスタムロジックで構成できる。したがって、特定用途のプロセッサーにおいて、カスタムロジックは、メモリーウインドウにおける特定のメモリーアドレスへの書き込みによって多彩な洗練されたアクションをトリガーできる。
１つの実施例において、メモリーウインドウメッシュは、メッシュエントリーのアレイを含むように定義される。各メッシュエントリーには、複数のアドレス位置が含まれている。メッシュエントリーには、リファレンス位置として指定されるアドレス位置が含まれている。メッシュエントリーのリファレンス位置への書き込みオペレーションが検出される。書き込まれたメッシュエントリーと関係するアクションが、検出オペレーションに応答してトリガーされる。
【０００７】
別の実施例において、システムによって、メッシュエントリーのアレイを含むメモリーウインドウメッシュが提供される。各メッシュエントリーには、複数のアドレス位置が含まれている。メッシュエントリーには、リファレンス位置として指定されるアドレス位置が含まれている。ストレージエンジンによって、メッシュエントリーのリファレンス位置への書き込みオペレーションの検出に応答して、書き込まれたメッシュエントリーと関連するアクションがトリガーされる。
【０００８】
ここには、他の実施例もまた記述され説明される。
【実施例１】
【０００９】
図１には、ローカルエリアネットワーク（ＬＡＮ）１０２およびストレージエリアネットワーク（ＳＡＮ）１０４を含む代表的なコンピュータ使用およびストレージフレームワーク１００が例示されている。種々のアプリケーション顧客１０６が、ＬＡＮ１０２を介してアプリケーションサーバー１０８へとネットワーク接続されている。アプリケーションサーバー１０８によって、アプリケーション顧客１０６は、アプリケーションサーバー１０８に常駐するアプリケーションへのアクセスが可能となる。そのようなアプリケーションは、１つ以上のアプリケーションデータストレージデバイス１１０に蓄積されるデータ（例えば、ｅメールデータベース）に依存する。したがって、ＳＡＮ１０４は、アプリケーションサーバー１０８とアプリケーションデータストレージデバイス１１０との間の接続性を提供して、アプリケーションがデータにアクセスできるようにする。
【００１０】
ＳＡＮ１０４には、冗長のため典型的には２つのインテリジェントストレージプロセッサー（ＩＳＰ）を有するインテリジェントストレージプロセッサー基板を含む１つ以上のインテリジェントＳＡＮスイッチが含まれている。インテリジェントＳＡＮは、インターフェースストレージデバイス１１０を、ＳＡＮ１０４における残りのＳＡＮスイッチファブリックに切り替える。各インテリジェントＳＡＮスイッチは、ハードウェア、ファームウェアおよび／またはアプリケーションソフトウェアの種々の組み合わせにおいて実施され、ＩＳＰおよび／または関連するプロセッサーによって実行されるルーティング、量管理、データ移動および複製のような分類されたストレージサービスを提供することができる。図１に示されるＳＡＮ１０４には、代表的な書き込みリファレンスメッシュ（ＷＯＲＭ）を実行するＩＳＰを有するインテリジェントスイッチが含まれており、それは、後に続く図に関してより詳細に記述されるような洗練されたプログラミングモデルを支援する。
【００１１】
図２には、インテリジェントＳＡＮスイッチの代表的なインテリジェントストレージプロセッサー基板２００のブロック図が例示されている。ＩＳＰ基板２００には、１６ビット（またはそれ未満の）広域並列低電圧差動（ＬＶＤ）バス２０６（「ｅバス」）によって結合される２つのＩＳＰサブシステム２０２および２０４が含まれている。ＩＳＰサブシステム２０２には、ＩＳＰ２０８が含まれており、それには、１つのファイバーチャンネルホストリンク２１６と２つのファイバーチャンネルストレージリンク２１８へのインターフェースおよび、リアルタイムオペレーティングシステム（ＲＴＯＳ）を実行するポリシープロセッサー２１２が含まれている。ＩＳＰ２０８およびポリシープロセッサー２１２は、ＰＣＩバス２１４を介して通信することができ、ＩＳＰ２０８とポリシープロセッサー２１２は、双方ともメモリー２２２にアクセスできる。
【００１２】
１つの実施例において、ＩＳＰ２０８には、異なるカスタムロジックを備える７つの機能制御器コア（ＦＣＣ）と３つのリストマネージャー（ＬＭ）特定用途プロセッサーとが含まれている。ＦＣＣおよびＬＭは、クロスポイントスイッチ（ＣＰＳ）ＦＣＣ‐ＬＭメッセージクロスバーを介して通信する。そのように、ＦＣＣは、所定の条件に応じてＣＰＳメッセージを生成し、これらのメッセージをメモリーモジュールにアクセスし、または所望のＩＳＰ動作を呼び出すために、ＣＰＳを通してリストマネージャーへと送る。同様に、リストマネージャーからの応答は、ＣＰＳを介してＦＣＣへと伝えられる。ポリシープロセッサーはまた、リストマネージャーと通信し、そしてＣＰＳを用いてメモリーにアクセスする。また他の実施例も使用されることが理解されるべきである。
【００１３】
ＦＣＣは、特定の機能に基づいてカスタマイズされたロジックを実行することのできる特化されたプロセッサーである。ＦＣＣが含んでいるのは、高度に柔軟な特長の組み合わせと、リストマネージャーと通信するＣＰＳメッセージを用いて、ＣＰＳを通してメモリーにアクセスする強力なインターフェースである。リストマネージャーは、ＩＳＰ２０８とそのパートナーＩＳＰ２１０、並びにポリシープロセッサー２１２のＦＣＣ用メモリーへのアクセスポイントとして動作することのできる特化されたメッセージプロセッサーである。リストマネージャーはまた、ＣＰＳを通して受け取られるメッセージに応答する他の特化された機能性を提供することもできる。受け取られたメッセージおよびデータは、リストマネージャーによって保持されアクセスされるリストに蓄積される。スケジューリングプロトコルにしたがって、リストマネージャーは、メッセージによって定義される動作を実行する。
【００１４】
ポリシープロセッサー２１２は、スイッチのベンダーがプログラムすることができ、「価値付加」機能性を提供する。すなわち、ポリシープロセッサー２１２は、カスタムロジックを実行し、ＩＳＰ２０８を介して洗練された動作を行うことができる。多くの方法で、ポリシープロセッサー２１２は、ＦＣＣにいくぶん等しいようなＩＳＰ２０８によって処理される。ポリシープロセッサー２１２は、いずれのリストマネージャーにもメッセージを送ることができ、かついずれのリストマネージャーからも、全てＣＰＳを介して戻される応答を受け取ることができる。ＩＳＰによって発行されるメッセージの応答は、結果としてポリシープロセッサー２１２を中断するものとなり、それは、その中断に応答して、リストマネージャーの応答を得るようＩＳＰのレジスタを読むことができる。したがって、ポリシープロセッサー２１２はまた、メモリー２２２にアクセスし、ＣＰＳメッセージおよびリストマネージャーを用いてＩＳＰ２０８内の動作をトリガーすることができる。
【００１５】
したがって、ＳＡＮスイッチベンダは、ポリシープロセッサー２１２で実行されるカスタムストレージサービスアプリケーションを作り出すことができる。ストレージサービスアプリケーションは、例えば、付随オーバーヘッドでの個々のＰＣＩ読み取りまたは書き込みオペレーションを介してメモリーウインドウを開いてアクセスすることによって、ＩＳＰレジスタアクセスおよびＰＣＩバス２１４の上のＤＭＡを通してＩＳＰ２０８の機能にアクセスできる。実施例によっては、個々のＰＣＩアクセスよりも速いアクセスも支援する。例えば、前述のシステムの実施例においては、ポリシープロセッサーは、ＰＣＩバス２１４越しのキャッシュ書き込みを通してＩＳＰの機能にアクセスするパワーＰＣプロセッサーで実現される。ただし、他のプロセッサーやアクセス方法が使用されてもよい。
【実施例２】
【００１６】
図３には、代表的なストレージシステム３００の構成要素が例示されている。構成要素の中で、ＩＳＰ３０２は、ポリシープロセッサー３０４、バッファメモリーモジュール３０６、キャッシュテーブルメモリー３０８および交換メモリーモジュール３１０と結合されている。したがって、ポリシープロセッサー３０４は、ストレージシステムのためのカスタムアプリケーションを実行して、ＰＣＩバス３１２およびＩＳＰ３０２におけるＰＣＩインターフェース３１３を介してＩＳＰの機能およびメモリーモジュールにおけるデータにアクセスできる。
【００１７】
前述のシステム３００の実施例において、ポリシープロセッサー３０４は、ＰＣＩバス３１２越しに３２ＭＢメモリーウインドウが備えられ、ＩＳＰ３０２へのアクセスが可能となっている。ただし、代わりのサイズのメモリーウインドウも考えられる。例えば、代表的なポリシープロセッサーは、３２バイトのキャッシュラインサイズを有し、単一の「バースト」動作としてキャッシュライン全体を強制的に発する機構を提供する。６４ビットＰＣＩインターフェースについて、これは、（調停および接続の後）結果としてアドレスサイクルを生じ、それに４つの６４ビットデータワードサイクルが続く。
【００１８】
１つの実施例において、ＩＳＰ３０２には、７つのＦＣＣが含まれている。これらのＦＣＣのうち３つは、最初にファイバーチャンネルインターフェースに接続されている。これらのＦＣＣの各々は、２つのＤＭＡインターフェースを制御する。これらのＦＣＣは、ホスト交換制御器３１４、ディスク交換制御器（コア１）３１６およびディスク交換制御器（コア２）３１８と名付けられる。残りの４つのＦＣＣは、あるカスタムロジックを有するとともに、コマンドルーティング制御器３２０、ＤＭＡ／ＸＯＲ制御器３２２、メタデータ制御器３２４および雑機能制御器３２６といった一般的な目的の機能を提供する。
【００１９】
各ＦＣＣは、６５，５３６個の１６ビットレジスタのレジスタアドレススペース（１２８ＫＢ）を有する。このスペースの最初の４分の１（０ｘＣ０００−０ｘＦＦＦＦ）は、実際のＦＣＣプログラミングインストラクションを含む書き込み可能な制御ストレージ（ＷＣＳ）に確保されている。下位の５１２個の１６ビットは、そのままのレジスタである。レジスタアドレススペースの残りは、カスタムロジックまたは一般の可変スペースへのアクセスを提供する。ＦＣＣは、ＣＰＳ３１１およびリストマネージャーを介してメモリー３０６、３０８および３１０にアクセスすることができる。リストマネージャーを通してＦＣＣは、リスト操作、リスト検索、フィールド抽出、フィールド挿入（蓄積）、フィールドコピー、フィールド増加、フィールド減少、フィールドビットセットおよびフィールドビットクリアを要求することができ、同様にリストマネージャーによって管理されるリストについての情報を要求する。
【００２０】
リストマネージャーによって、ＦＣＣおよびポリシープロセッサー３０４には、メモリーモジュールへのアクセスが備えられる。バッファメモリーモジュール３０６は、ポリシープロセッサー３０４によって消費される実際のユーザーデータ、および幾分かの関連するメタデータを保持するためにあらかじめ確保されている。交換メモリーモジュール３１０は、バッファメモリーモジュール３０６においてバッファを記述するメタデータを保持する。キャッシュテーブルメモリーモジュール３０８もまた、メタデータを含むことができるが、別の特定の実施例においては、このメモリーモジュール３０８は使用されていない。ＳＲＡＭモジュール３３３は、未決のコマンドのリストおよび現在進行中の状況に高速でアクセスするのに用いられる。結果的にＤＲＡＭリストマネージャー３２８は、交換メモリーモジュール３０８およびＰＣＩインターフェース３１３へのアクセスを提供する。二重ＤＲＡＭリストマネージャー３３０は、キャッシュテーブルメモリーモジュール３０８およびバッファメモリーモジュール３０６へのアクセスを提供する。ＳＲＡＭリストマネージャー３３２は、ＳＲＡＭ３３３およびキャッシュテーブルメモリー３０８へのアクセスを提供する。
【００２１】
ＩＳＰ３０２は、ｅバスインターフェース３３６を用いてパートナーＩＳＰ（図示されていない）と通信する。オペレーションコードおよび／またはデータを含むメッセージが、リストマネージャーによってＣＰＳ３１１を通してｅバスインターフェース３３６に送られ、それは、そのメッセージを、パートナーＩＳＰのｅバスインターフェースに送る。同様に、所定のＩＳＰのＦＣＣおよびポリシープロセッサーは、ＩＳＰ３０２のＣＰＳ３１１を通して、メッセージをｅバスインターフェース３３６へと送ることができ、それによって、ＩＳＰ３０２のＦＣＣおよびポリシープロセッサーが、パートナーＩＳＰのリストマネージャーとコマンドおよびデータの通信を行えるようにする。
【実施例３】
【００２２】
図４には、代表的な書き込みリファレンスメッシュ４００が例示されている。１つの実施例において、６４ＭＢメモリーウインドウ（２６ビットメモリーアドレス）が、ＩＳＰのベースアドレスレジスタ（図示されていない）によって定義されている。ウインドウの下位３２ＭＢは、キャッシュテーブルメモリーモジュールおよび交換メモリーモジュールのような、ストレージエンジンと関連する他のメモリーへのアクセスを可能とする。メモリーウインドウの上位３２ＭＢは、ＣＰＳアクセス領域（ＣＡＲ）と呼ばれ、それを通してポリシープロセッサーは、ＩＳＰメモリーおよび機能にアクセスすることができる。代表的な実施例において、代表的なメモリーウインドウにおけるアドレスの下位２５ビットは、以下のように定義される。
2006209727.tif 000003
【００２３】
メッシュインデックスは、アドレシングについて無視される（ただし、それは後で、ＣＰＳメッセージの「タグ」として用いられる）。そうであるので、ポリシープロセッサーがメモリーウインドウのＣＡＲに書き込むとき、２５ビットアドレスは、ＰＣＩインターフェースにおける超高速メモリーアクセスとして実行される実際の３２バイトのみをアドレスするよう縮小する。そのようなアクセスは、３２バイトバースト読み取りまたは３２バイトバースト書き込みとして行われるが、４バイト（３２ビット）単一ロングワードアクセスおよび単一バイトアクセスもまた実行される。
【００２４】
メッシュ４００には、ゾーン４０４に配置される複数の配列されたメッシュエントリー４０２が含まれており、それらは、メモリーウインドウを通してポリシープロセッサーによってアクセス可能である。１つの実施例において、メッシュは、２ＭＢ境界で１６のゾーンに分割される。ただし、他の構成も考えられる。したがって、ポリシープロセッサーは、データパケット（例えば、１つの実施例におけるデータの３２バイト）を、メモリーウインドウを通してメッシュ４００における個々のメッシュエントリーに書き込むことができ、ここでデータの各バイトは、メッシュエントリーにおける個々のアドレス位置に書き込まれる。
【００２５】
したがって、メッシュ４００の各メッシュエントリー４０２には、拡大されたフレーム４０８に示されるように、複数のアドレス位置４０６が含まれている。リファレンス位置４１０が、各メッシュエントリーにおいて指定されて特定のアクションをトリガーする。リファレンス位置への書き込みの検出は、「リファレンス」を表し、それは、書き込まれたセルエントリーが位置するゾーンと特に関連するアクションをトリガーするイベントである。
【００２６】
一般に、書き込みリファレンスメッシュは、メッシュにおける個々のメッシュエントリーのリファレンス位置へのメモリー書き込みオペレーションの検出に応答して、ＩＳＰにおける特定のアクションをトリガーする書き込み感応メモリーウインドウを実現する。代表的な実施例において、リファレンス位置への書き込みオペレーションもまた、結果として「タグ」を生成し、それは、メモリー書き込みオペレーションにおいて用いられるメモリーアドレスのメッシュインデックス部分から得られる。
【００２７】
例えば、メッシュエントリーにおける書き込み感応性は、以下のように実現される。
（１）Ｉｆ（Ａｄｄｒｅｓｓ＆Ｍａｓｋ１）＝＝Ｍａｔｃｈであるならば、メッシュエントリーにおけるリファレンス位置への書き込みが検出される。
（２）Ｔａｇ＝（Ａｄｄｒｅｓｓ＆Ｍａｓｋ２）＞＞５
ここで、ＡｄｄｒｅｓｓはＰＣＩ書き込みオペレーションからの書き込みアドレスを表し、Ｍａｓｋ１は、バイトオフセットを含まないアドレスビット位置においてクリアであり（例えば、Ｍａｓｋ１＝０ｘ００００００１Ｆ）、Ｍａｓｋ２は、メッシュインデックスを含むアドレスビット位置においてセットであり（例えば、Ｍａｓｋ２＝０ｘ００１ＦＦＦＥ０）、Ｍａｔｃｈは、所定のゾーンの所定のメッシュエントリー内のリファレンス位置を表し（例えば、０ｘ００００００１Ｆ）、シフトは、メッシュインデックスをレジスタの下位ビットに移すのに必要とされるビット数を表す（例えば、表１において与えられる代表的な２５ビットアドレスの例においてシフト＝５）。この検出ロジックは、リファレンス位置が複数バイト書き込みオペレーションに含まれているとき作用する。したがって、メッシュエントリーにおけるリファレンス位置への書き込みが検出されるならば、書き込みアドレスのメッシュインデックス部分からタグが作り出される。
【００２８】
各ゾーンについて、ＩＳＰは、３２ビットレジスタおよびゾーンテンプレートレジスタ４１２と呼ばれる６つの１６ビットレジスタを支援する。各３２ビットレジスタは、ゾーンパケットビットマスクレジスタと呼ばれ、以下のように定義される。
2006209727.tif 000004
【００２９】
パケットテンプレートレジスタと呼ばれる６つの１６ビットレジスタは、以下のように定義される。
2006209727.tif 000005
【００３０】
上に定義される６つのレジスタとポリシープロセッサーによって書き込まれる１６のデータワード（すなわち、３２バイトパケット）の組み合わせは、２２個の１６ビットレジスタのアレイとして取り扱うことができる。リファレンス位置への書き込みが検出されるならば、タグ値が、対応するゾーンのパケットテンプレートレジスタのタグフィールドに書き込まれる。パケットテンプレートレジスタの他のフィールドは、各ゾーンについて、ポリシープロセッサーによって予め定義されている。
【００３１】
対応するゾーンテンプレートレジスタのスキャター‐ギャザーマスクによって、これら２２個のレジスタのいずれが、自動的に生成されるＣＰＳメッセージを構築するのに用いられるのかが定義される。例えば、スキャター‐ギャザーマスクが「０００００３Ｆ」を含むならば、ヘッダー、オペレーション、タグおよび固定パラメータフィールド０、１および２のみが、ＣＰＳパケットを構築するのに用いられる。反対に、スキャター‐ギャザーマスクが「００００１ＦＦ」を含むならば、ヘッダー、オペレーション、タグ、固定パラメータフィールド０、１および２並びにデータワード０‐２が、ＣＰＳパケットを構築するのに用いられる。
【００３２】
ＣＰＳパケットの生成は、ゾーンテンプレートレジスタ内のフラグビットおよびデータワード０のビット１５に関する設定次第である（ポリシープロセッサーによってメッシュエントリーに書き込まれる）。フラッグがクリアであるならば、リファレンスが検出されるとき、ＣＰＳパケットは自動的に生成される。また、フラッグが設定されかつデータワード０のビット１５が設定されるならば、リファレンスが検出されるとき、ＣＰＳパケットが自動的に生成される。しかしながら、フラッグが設定されかつデータワード０のビット１５がクリアであるならば、リファレンスが検出されるとき、ＣＰＳパケットは自動的に生成されない。ＣＰＳパケットの生成をこのように条件を付けてトリガーすることで、３２バイトデータバケットの全体に満たないものがポリシープロセッサーキャッシュから消去されるとき、アクションの生成（すなわちＣＰＳパケットの生成）が防止される。
【００３３】
前述のように、リストマネージャーは、特化されたメッセージプロセッサーである。したがって、リストマネージャーは、ＩＳＰまたはそのパートナーＩＳＰ内のアクションを結果として生じるオペレーションコードの組を支援する。代表的なコードには、「読み取り／書き込み連続メモリー位置」（読み取りシーケンス／書き込みシーケンス）、「読み取り／書き込みランダムメモリー位置」（読み取りランダム/書き込みランダム）、「補充テーブル」、「ゲットリストヘッド／テール」（ゲットヘッド／ゲットテール）、「増加／減少フィールド」（増加フィールド／減少フィールド）、「書き込みエントリーデータ」、「ポストエントリーデータ」「アンリンクおよび読み取りシーケンス」、「アンリンクおよび読み取りランダム」、「書き込みシーケンスおよびポスト」、「書き込みリング」、「書き込みリングおよび通知」、「読み取りリング」のようなオペレーションが無制限に含まれる。これらの代表的なオペレーションコードによって表されるアクションを通して、メモリーをアクセスすることができ、ＦＣＣによる処理のためにメッセージを列に並べる（すなわち、「ポストする」）ことができ、かつＰＣＩデバイス（例えば、パートナーＩＳＰ）に、処理される新しいリストエントリー（例えば、メッセージ）について通知することができる。
【００３４】
ヘッダーフィールドは、ＣＰＳパケットを特定のリストマネージャーに向けるルーティング情報を含む。そのように、所定のゾーンと関連するパケットテンプレートレジスタは、特定の結果を達成するために特定のアクションをトリガーする特定のリストマネージャーに向けてのパケットを定義できる。オプコードフィールドは、リストマネージャーが処理するオペレーションコードを含み、リストマネージャーによって受け取られるＣＰＳメッセージと関連するアクションを表す。他のフィールドは、関連するアクションに有用なデータを含むことができる。例えば、リストフィールド、タグフィールドおよびその他のレジスタフィールドのいずれでも、どのリストがアクセスされ、どのデータが通信されるのかなどの影響を及ぼす。代表的なアクションが以下に記述される。
【００３５】
１つの実施例において、双方のパートナーＩＳＰでメタデータをミラー化することは冗長の目的で重要であり得るが、そのミラー化は、異なるＩＳＰサブシステム内の異なるアドレスで行われる。このシナリオにおいて、リファレンスに応答してトリガーするアクションは、ｅバスを横切ってのパートナーＩＳＰへのデータの書き込みオペレーションである。
【００３６】
したがって、「データ転送ゾーン」と呼ばれるゾーンが、この機能のために取り分けられて「データ転送ウインドウ」を定義する。データ転送ゾーンのパケットテンプレートレジスタには、ＣＰＳを通って特定のリストマネージャーへとパケットを経路付けるヘッダーフィールドが含まれている。オペレーションフィールドエントリーには、書き込みエントリーデータが含まれており、リストフィールドエントリーは、パートナーＩＳＰのメモリーにおいて対応するメモリー範囲を参照するテーブルを参照する。
【００３７】
例えば、データ転送ゾーンにおけるメッシュエントリーのリファレンス位置へのポリシープロセッサーによる書き込みオペレーションは、第一のＩＳＰにおいて検出される。それに応答して、ＣＰＳメッセージが自動的に生成され、パートナーＩＳＰのリストマネージャーに経路付けられる。ＣＰＳメッセージには、パートナーＩＳＰにおけるミラー化書き込みについて適当なメモリー範囲を参照するリストフィールドが含まれている。リストマネージャーがＣＰＳメッセージのオプコードを実行するとき、第一のＩＳＰに書き込まれるデータは、パートナーＩＳＰのメモリーに書き込まれる。
【００３８】
第二の実施例において、要求および応答メッセージがＩＳＰパートナー間で迅速に送られ、例えば、ファイバーチャンネルプロトコル交換またはＳＣＳＩ交換を実行する。このシナリオにおいてリファレンスに応答してトリガーされるアクションは、要求または応答をｅバス越しにパートナーＩＳＰのメッセージリングバッファに送るものである。
【００３９】
「メッセージ転送ゾーン」と呼ばれるゾーンが、この機能のために取り分けられている。メッセージ転送ゾーンのパケットテンプレートレジスタには、ＣＰＳを通して特定のリストマネージャーへとパケットを経路付けるヘッダーフィールドが含まれている。オプコードフィールドエントリーには、書き込みリングおよび通知オプコードと、メッセージについて適切なリングを識別するリングフィールドエントリーとが含まれている。
【００４０】
例えば、パートナーＩＳＰのメッセージリングバッファへの書き込みオペレーションが、ポリシープロセッサーのＩＳＰのメッセージ転送ゾーンへの書き込みにより、ポリシープロセッサーによって呼び出される。メッセージ転送ゾーンにおけるメッシュエントリーのリファレンス位置への書き込みが検出されるとき、ＣＰＳメッセージが自動的に生成され、パートナーＩＳＰのリストマネージャーへと経路付けられる。ＣＰＳメッセージには、パートナーＩＳＰの適切なメッセージリングを参照するフィールドが含まれている。パートナーＩＳＰのリストマネージャーがＣＰＳメッセージのオプコードを実行するとき、そのメッセージは、パートナーＩＳＰによってアクセスの可能なメモリーにおけるリングバッファに書き込まれる。
【実施例４】
【００４１】
図５には、書き込みリファレンスメッシュを使用する代表的なストレージシステムにおける論理オペレーションが例示されている。ウインドウ化オペレーション５０２によって、ＰＣＩメモリーウインドウのようなメモリーウインドウの書き込みリファレンスメッシュが定義される。ある実施例において、メッシュは６４ＭＢごとに配列されるが、他の配列も考えられる。メッシュには、ゾーンに組織されるメッシュエントリーが含まれている。各ゾーンは、それと関連するゾーンテンプレートレジスタを有しており、それによって、リファレンス位置への書き込みがゾーン内で検出されるときにトリガーされるアクションが定義される。
【００４２】
検出オペレーション５０４は、書き込みリファレンスメッシュにおけるメッシュエントリーのリファレンス位置への書き込みオペレーションを検出する。代表的な検出オペレーションが、回路ロジックとマスクおよびマッチ値を用いて先に記述されている。ただし、他の検出オペレーションも考えられる。いくつかの実施例において、タグ値もまた、検出オペレーション５０４で決定され、ゾーンテンプレートレジスタの１つにローディングされる。
【００４３】
メッセージングオペレーション５０６は、（ヘッダーフィールドにおける）オペレーションコードおよび経路付け情報の含まれるＣＰＳメッセージを構築する。１６ビットゾーンテンプレートレジスタおよび書き込みオペレーションのデータは、３２ビットゾーンテンプレートレジスタのスキャター‐ギャザーマスクによってマスクされて、この構築に用いられる。そうして、関連するスキャター‐ギャザーマスクによって選択され、ポリシープロセッサーによって書き込まれる３２バイトのデータとメッシュエントリーの位置するゾーンの１６ビットゾーンテンプレートレジスタのフィールドがメッセージパケットにコピーされる。
【００４４】
経路付けオペレーション５０８は、構築されたメッセージパケットを、そのメッセージパケットのヘッダーフィールドの経路付け情報において識別されるリストマネージャーに送る。代わりに、そのメッセージは、サブシステム内のカスタムロジックの他の部分へと送られることもあり得る。いくつかの実施例において、リストマネージャーはローカルＩＳＰか、パートナーＩＳＰかその他のロジックにある。メッセージパケットは、ストレージエンジンによってＣＰＳスイッチを通ってその目的地へと送られる。したがって、その経路付けはＣＰＳスイッチによって行われる。
【００４５】
処理オペレーション５１０は、オプコードおよびメッセージパケットにおける他のフィールドによって特定されるオペレーションを実行する。リストマネージャーは、洗練されたメッセージプロセッサーであるので、そのようなオペレーションは相当に多様である。いくつかの代表的なオペレーションがここに記述されているが、しかしリストマネージャーは広く多様なオペレーションを行うように構築されていて、これらの例によって制限されるべきではない。
【００４６】
ここに記述されている本発明の実施例は、１つ以上のコンピュータシステムにおいて論理ステップとして実現されている。本発明の論理オペレーションは、（１）１つ以上のコンピュータシステムにおいてプロセッサーに実行される一連のステップとしておよび（２）１つ以上のコンピュータシステム内の相互接続されたマシーンまたは回路モジュールとして実現される。実施例は、発明を実施するコンピュータシステムの性能要件に依存する選択事項である。したがって、ここに記述される発明の実施例を構成する論理オペレーションは、オペレーション、ステップ、オブジェクトまたはモジュールとして多様に言及される。さらには、論理オペレーションは、特許請求の範囲に明確に順番が記述されているか、特定の順番が特許請求の範囲の記述によって固有に必要とされていない限り、どのような順番で行われてもよいことを理解すべきである。
【００４７】
上記明細書、例およびデータは、発明の代表的な実施例の構造および使用を完全に記述するものである。発明の精神および範囲から逸脱することなく多くの実施例を作ることができるので、発明は、添付される特許請求の範囲に存する。とりわけ、記述された技術は、ストレージシステムとは独立に使用してもよいことを理解すべきである。したがって他の実施例も考えられる。
【図面の簡単な説明】
【００４８】
【図１】ローカルエリアネットワーク（ＬＡＮ）およびストレージエリアネットワーク（ＳＡＮ）を含む代表的なコンピュータ使用およびストレージフレームワークを例示する。
【図２】インテリジェントＳＡＮスイッチの代表的なインテリジェントストレージプロセッサー基板のブロック図を例示する。
【図３】代表的なストレージシステムの構成要素を例示する。
【図４】代表的な書き込みリファレンスメッシュを例示する
【図５】書き込みリファレンスメッシュを使用する代表的なストレージシステムの論理オペレーションを例示する。
【符号の説明】
【００４９】
１００  ストレージフレームワーク
１０２  ローカルエリアネットワーク
１０４  ストレージエリアネットワーク
１０６  アプリケーション顧客
１０８  アプリケーションサーバー
１１０  アプリケーションデータストレージデバイス
２００  インテリジェントストレージプロセッサー（ＩＳＰ）基板
２０２，２０４  ＩＳＰサブシステム
２０６  広域並列低電圧差動（ＬＶＤ）バス（ｅバス）
２０８，２１０  インテリジェントストレージプロセッサー
２１２  ポリシープロセッサー
２１４  ＰＣＩバス
２１６  ファイバーチャンネルホストリンク
２１８  ファイバーチャンネルストレージリンク
３００  ストレージシステム
３０２  ＩＳＰ
３０４  ポリシープロセッサー
３０６  バッファメモリー
３０８  キャッシュテーブルメモリー
３１０  交換メモリー
３１２  ＰＣＩバス
３１４  ホスト交換制御器
３１６  ディスク交換制御器（コア１）
３１８  ディスク交換制御器（コア２）
３２０  Ｃｍｄルーティング制御器
３２２  ＤＭＡ／ＸＯＲ制御器
３２４  メタデータ制御器
３２６  雑機能制御器
３２８  ＤＲＡＭリストマネージャー
３３０  ＤＵＡＬ−ＤＲＡＭリストマネージャー
３３２  ＳＲＡＭリストマネージャー
３３３  ＳＲＡＭ
３３４  ストレージエンジン
３３６  Ｅバスインターフェース
４００  リファレンスメッシュ
４０２  メッシュエントリー
４０４  ゾーン
４１２  ゾーンテンプレートレジスタ
【図１】
2006209727.tif 000006
【図２】
2006209727.tif 000007
【図３】
2006209727.tif 000008
【図４】
2006209727.tif 000009
【図５】
2006209727.tif 000010