(57)【要約】【課題】記憶アレイ内のライト・サイドおよびロング・サイドＩ／Ｏコマンドを処理する。【解決手段】第１の複数の専用目的ＦＣを有する第１のＩＳＰと組んだ第１のポリシー・プロセッサ、第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサ、ＩＳＰを相互接続する通信バス、およびメモリ内に格納されアレイコントローラにより実行されて第１のＩＳＰが論理ユニット・マスタである記憶論理ユニット番号（ＬＵＮ）へ向けられるネットワーク入出力（Ｉ／Ｏ）コマンドに関連付けられる第１の複数のＦＣおよび第２の複数のＦＣの両方からのトランザクション要求のトップレベル制御を第１のポリシー・プロセッサが維持するようにするプログラミング命令を有するデュアルポート・アクティブ−アクティブ・アレイコントローラ装置が提供される。【選択図】図１
2009015843.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数の専用目的機能コントローラ（ＦＣ）を有する第１のインテリジェント記憶プロセッサ（ＩＳＰ）と組んだ第１のポリシー・プロセッサと、
第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサと、
ＩＳＰを相互接続する通信バスと、
第１のＩＳＰが論理ユニットマスタである記憶ＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ  ｎｕｍｂｅｒ）へ向けられたネットワーク入出力（Ｉ／Ｏ）コマンドに関連する第１の複数のＦＣおよび第２の複数のＦＣ両方からのトランザクション要求のトップレベル制御を第１のポリシー・プロセッサが維持するようにする、メモリ内に格納され装置により実行されるプログラミング命令と、
を含むデュアル・ポート・アクティブ−アクティブ・アレイコントローラ装置。
【請求項２】
請求項１に記載の装置であって、第１の複数のＦＣおよび第２の複数のＦＣの各々がリスト・マネージャ（ＬＭ）およびポリシー・プロセッサが接続される周辺装置バスを介して各ポリシー・プロセッサと通信する装置。
【請求項３】
請求項２に記載の装置であって、第１の複数のＦＣおよび第２の複数のＦＣの各々が、デステネーションＩＤコマンドフレーム値によりＬＵＮテーブルをインデクスしてどのＩＳＰがＩ／Ｏコマンドが向けられるＬＵＮのユニットマスタであるかを決定するホスト交換コントローラ（ＨＥＣ）を含む装置。
【請求項４】
請求項３に記載の装置であって、第１のポリシー・プロセッサおよび第２のポリシー・プロセッサの各々がＦＣからの全トランザクション要求を同期化するイベント・リング・バッファ（ＥＲＢ）を含む装置。
【請求項５】
請求項４に記載の装置であって、ＥＲＢはその中のトランザクションへの付属データを含むＦＣにより制御されるデータ・リング・バッファ（ＤＲＢ）の場所を識別するトランザクション・データ・エントリを含む装置。
【請求項６】
請求項４に記載の装置であって、各ＩＳＰはＩ／Ｏコマンドを伝達するポートを有し、第１のポリシー・プロセッサＥＲＢは第１のＩＳＰポートを介して受信されるローカルＩ／Ｏコマンドおよび第２のＩＳＰポートを介して受信される遠隔Ｉ／Ｏコマンドに関連するＦＣトランザクション要求を同期化し、第２のポリシー・プロセッサＥＲＢは第２のＩＳＰポートを介して受信されるローカルＩ／Ｏコマンドおよび第１のＩＳＰポートを介して受信される遠隔Ｉ／Ｏコマンドに関連するＦＣトランザクション要求を同期化する装置。
【請求項７】
請求項６に記載の装置であって、各ＨＥＣはトランザクション要求がローカルまたは遠隔Ｉ／Ｏコマンドと関連するかどうかを示すフラグを含むトランザクション要求コマンドをＥＲＢへポストする装置。
【請求項８】
請求項６に記載の装置であって、第１のポリシー・プロセッサＥＲＢは第１のＩＳＰポートを介して受信されるローカルＩ／Ｏコマンドに関連しまた第２のＩＳＰポートを介して受信される遠隔Ｉ／Ｏコマンドに関連するＬＭトランザクション応答を同期化し、第２のポリシー・プロセッサＥＲＢは第２のＩＳＰポートを介して受信されるローカルＩ／Ｏコマンドに関連しまた第１のＩＳＰポートを介して受信される遠隔Ｉ／Ｏコマンドに関連するＬＭトランザクション応答を同期化する装置。
【請求項９】
請求項８に記載の装置であって、第１のポリシー・プロセッサＥＲＢは第２のポリシー・プロセッサからのトランザクションを同期化し、第２のポリシー・プロセッサＥＲＢは第１のポリシー・プロセッサからのトランザクションを同期化する装置。
【請求項１０】
請求項６に記載の装置であって、各ポリシー・プロセッサは対応するＥＲＢ内のトランザクションに対してコンテキストを割り当てる装置。
【請求項１１】
請求項１０に記載の装置であって、各ポリシー・プロセッサは遠隔Ｉ／Ｏコマンドに関連するトランザクションに対してローカル・コンテキストをフォーマット化する装置。
【請求項１２】
第１の複数の専用目的ＦＣを有する第１のＩＳＰと組んだ第１のポリシー・プロセッサと、第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサとを有するデュアル・アクティブ−アクティブ・コントローラを利用するステップと、
コントローラの非ユニットマスタ側のＬＵＮへ向けられるＩ／ＯコマンドをＦＣの１つにより受信するステップと、
ＦＣからのトランザクション要求コマンドをコントローラのユニットマスタ側のポリシー・プロセッサへポストするステップと、
を含む方法。
【請求項１３】
請求項１２に記載の方法であって、利用するステップは第１の複数のＦＣおよび第２の複数のＦＣの各々がＬＭおよび対応するポリシー・プロセッサが接続される周辺装置バスを介して対応するポリシー・プロセッサと通信するステップを含む方法。
【請求項１４】
請求項１２に記載の方法であって、ポスティング・ステップはＦＣがＩ／ＯコマンドからのデステネーションＩＤコマンド・フレーム値によりＬＵＮテーブルをインデクスするステップを含む方法。
【請求項１５】
請求項１２に記載の方法であって、ポスティング・ステップはＦＣがコントローラのユニットマスタ側でトランザクション要求が受信されたかどうかを示すフラグを含むトランザクション要求コマンドをポストするステップを含む方法。
【請求項１６】
請求項１２に記載の方法であって、ポステング・ステップはトランザクション要求コマンドを第１のポリシー・プロセッサおよび第２のポリシー・プロセッサの各々のＥＲＢへポストしてコントローラの両側のＦＣトランザクション要求を同期化するステップを含む方法。
【請求項１７】
請求項１６に記載の方法であって、ポステング・ステップは各ポリシー・プロセッサＥＲＢがライト・サイドおよびロング・サイドＦＣトランザクション要求を同期化するステップを含む方法。
【請求項１８】
請求項１６に記載の方法であって、ポステング・ステップは各ポリシー・プロセッサＥＲＢがライト・サイドおよびロング・サイドＬＭトランザクション応答を同期化するステップを含む方法。
【請求項１９】
請求項１２に記載の方法であって、さらに、各ポリシー・プロセッサがライト・サイドおよびロング・サイド・トランザクションの両方に対してコンテキストをフォーマット化するステップを含む方法。
【請求項２０】
ポリシー・プロセッサが接続される周辺装置バスと通信するリスト・マネージャを介してポリシー・プロセッサに選択的に接続される複数の専用目的機能コントローラを各側に有するデュアル・アクティブ−アクティブ・アレイ・コントローラと、
コントローラのユニットマスタ側でライト・サイドおよびロング・サイドＩ／Ｏコマンドを一緒にリアルタイムで同期化する手段と、
を含む記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は一般的にデータ記憶システムに関し、限定はしないが、特に分散アレイ記憶システムにおいてネットワークＩ／Ｏコマンドに応答するデータ・トランザクションの処理に関する。
【背景技術】
【０００２】
コンピュータ・ネットワーキングは産業標準アーキテクチュアの転送レートがインテル社製８０３８６プロセッサのデータ・アクセスレートと歩調を保てなくなった時に蔓延し始めた。ローカルエリア・ネットワーク（ＬＡＮ）はネットワーク内のデータ記憶容量を統合整理することにより記憶エリア網（ＳＡＮ）へと発展した。ユーザは装置およびＳＡＮ内の装置により処理される関連データの統合整理により、直接取り付けられた記憶装置により可能なものよりも一桁多い記憶装置を処理する能力、および対処可能なコストでそうするという重大な利益を実現している。
【０００３】
より最近になって、動きはデータ記憶サブシステムを制御するネットワーク−セントリック・アプローチへ向けられている。すなわち、記憶装置が統合整理されるのと同様に、サーバからネットワーク自体内にオフロードされる記憶装置の機能性を制御するシステムが統合整理される。たとえば、ホストベース・ソフトウェアは保守および管理タスクをインテリジェント・スイッチや特殊化されたネットワーク記憶装置サービス・プラットホームへ委任することができる。応用ベース・ソリューションはホスト内で実行するソフトウェアの必要性をなくし、エンタープライズ内にノードとして配置されたコンピュータ内で作動する。いずれにせよ、インテリジェント・ネットワーク・ソリューションは記憶装置割当ルーチン、バックアップ・ルーチン、フォールト・トレランス・スキーム等をホストとは無関係に集中化することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
インテリジェンスをホストからネットワークへ移せばこれらの問題のいくつかは解決されるが、ホストへの仮想記憶装置のプレゼンテーションを変える際の柔軟性の一般的欠落に伴う固有の困難は解決されない。たとえば、データ格納方法は異常なホスト・ロード・アクティビティのバーストを調整するように適応させる必要がある。各データ記憶容量を自己決定的に割当て、管理し、保護してその容量を仮想記憶スペースとしてネットワークへ提示してグローバル記憶要求条件を調整するインテリジェント・データ記憶サブシステムが必要とされている。この仮想記憶スペースは多数の記憶ボリュームの中に準備することができる。本発明の実施例はこのソリューションへ向けられる。
【課題を解決するための手段】
【０００５】
本発明の実施例は一般的に記憶アレイ内のデータ・トランザクションに向けられる。
【０００６】
ある実施例では、第１の複数の専用目的ＦＣを有する第１のＩＳＰと組んだ第１のポリシー・プロセッサ、第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサ、ＩＳＰを相互接続する通信バス、およびメモリ内に格納されアレイコントローラにより実行されて第１のＩＳＰが論理ユニット・マスタであるＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ  ｎｕｍｂｅ）へ向けられるネットワーク入出力（Ｉ／Ｏ）コマンドに関連付けられる第１の複数のＦＣおよび第２の複数のＦＣの両方からのトランザクション要求のトップレベル制御を第１のポリシー・プロセッサが維持するようにするプログラミング命令を有するデュアルポート・アクティブ−アクティブ・アレイコントローラ装置が提供される。
【０００７】
ある実施例では、第１の複数の専用目的ＦＣを有する第１のＩＳＰと組んだ第１のポリシー・プロセッサ、および第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサを有するデュアル・アクティブ−アクティブ・コントローラを利用し、コントローラの非ユニット・マスタ側のＬＵＮへ向けられる１つのＦＣによりＩ／Ｏコマンドを受信し、ＦＣからのトランザクション要求コマンドをコントローラのユニット・マスタ側のポリシー・プロセッサへポストするステップを含む方法が提供される。
【０００８】
ある実施例では、ポリシー・プロセッサが接続される周辺装置バスと通信するリスト・マネージャを介してポリシー・プロセッサに選択的に接続される複数の専用目的機能コントローラを各側に有するデュアル・アクティブ−アクティブ・コントローラ、およびライト・サイド（ｒｉｇｈｔ  ｓｉｄｅ）およびロング・サイド（ｗｒｏｎｇ  ｓｉｄｅ）Ｉ／Ｏコマンドをコントローラのユニット・マスタ側で一緒にリアルタイムで同期化させる手段を有する記憶システムが提供される。
【０００９】
特許請求される本発明を特徴づけるこれらおよび他のさまざまな特徴および利点は添付図を検討しながら下記の詳細な説明を読めば明らかとなる。
【実施例】
【００１０】
図１は本発明の実施例が有用であるコンピュータ・システム１００を例示している。１つ以上のホスト１０２がローカル・エリア・ネットワーク（ＬＡＮ）および／またはワイド・エリア・ネットワーク（ＷＡＮ）１０６を介して１つ以上のネットワーク取付けサーバ１０４にネットワーキングされている。好ましくは、ＬＡＮ／ＷＡＮ１０６はＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂを介して通信するためのインターネット・プロトコル（ＩＰ）ネットワーキング・インフラストラクチュアを使用する。ホスト１０２はいくつかのインテリジェント記憶素子（ＩＳＥ）１０８の１つ以上に格納されたデータを日常的に必要とするサーバ１０４内に常駐するアプリケーションにアクセスする。したがって、ＳＡＮ１１０は格納されたデータへアクセスするためにサーバ１０４をＩＳＥ１０８に接続する。ＩＳＥ１０８はエンタープライズまたはデスクトップ・クラス記録媒体を内蔵するシリアルＡＴＡおよびファイバ−チャネル等のさまざまな選出された通信プロトコルを介してデータを格納するためのデータ記憶容量１０９を提供する。
【００１１】
図２は図１のコンピュータ・システム１００の一部の単純化された線図である。３つのホストバス・アダプタ（ＨＢＡ）１０３がネットワークまたはファブリック１１０を介して一対のＩＳＥ１０８（それぞれ、ＡおよびＢで示す）とインタラクトするように示されている。各ＩＳＥ１０８は、好ましくは、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｒｉｖｅｓ（ＲＡＩＤ）として特徴づけられる一組のデータ記憶装置としてのデータ記憶容量１０９に作用するデュアル冗長コントローラ１１２（Ａ１，Ａ２およびＢ１，Ｂ２で示す）を含んでいる。すなわち、好ましくは、コントローラ１１２およびデータ記憶容量１０９はさまざまなコントローラ１１２が並列、冗長リンクを利用し、システム１００により格納されたユーザ・データの少なくともいくらかは少なくとも一組のデータ記憶容量１０９内に冗長フォーマットで格納されるようにフォールトトレラント構成を利用する。
【００１２】
図３は本発明の実施例に従って構成されたＩＳＥ１０８を例示している。シェル１１４はミッドプレーン１１６と電気的に接続するコントローラ１１２と受入れ係合する空洞を画定する。次に、シェル１１４はキャビネット（図示せず）内に支持される。一対のマルチドライブ・アセンブリ（ＭＤＡ）１１８がミッドプレーン１１６と同じ側でシェル１１４内に受入れ係合することができる。ミッドプレーン１１６の反対側には非常電源を提供するデュアル・バッテリ１２２、デュアル・交流電源１２４、およびデュアル・インターフェイス・モジュール１２６が接続されている。好ましくは、デュアル・コンポーネントはいずれかのＭＤＡ１１８または両方を同時に作動させるように構成され、コンポーネント故障時のバックアップ保護を提供する。
【００１３】
図４は各々が５つのデータ記憶装置１２８を支持するアッパ・パーティション１３０およびロアー・パーティション１３２を有するＭＤＡ１１８の拡大分解等角図である。パーティション１３０，１３２はミッドプレーン１１６（図３）と操作可能に係合するコネクタ１３６を有する共通回路板１３４と接続するようにデータ記憶装置１２８を揃える。ラッパ１３８が電磁干渉シールディングを提供する。ＭＤＡ１１８のこの実施例は本発明の譲受人が譲り受け、本開示の一部としてここに組み入れられている米国特許第７，１３３，２９１号Ｃａｒｒｉｅｒ  Ｄｅｖｉｃｅ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  ａ  Ｍｕｌｔｉｐｌｅ  Ｄｉｓｃ  Ａｒｒａｙの主題である。ＭＤＡ１１８のもう１つの実施例はやはり本発明の譲受人が譲り受け、本開示の一部としてここに組み入れられている同じタイトルの米国特許第７，１７７，１４５号の主題である。代替同等実施例では、ＭＤＡ１１８を封止エンクロージャ内に設けることができる。
【００１４】
図５は本発明の実施例を使用するのに適した回転媒体ディスク装置の形のデータ記憶装置１２８の等角図である。以下の検討の目的で動体データ記録媒体を有する回転スピンドルが使用されるが、代替同等実施例では固体メモリデバイス等の非回転媒体装置が使用される。図５に示す実施例では、データ記憶ディスク１３８がモータ１４０により回転されてディスク１３８のデータ記憶場所をリード/ライトヘッド（「ヘッド」）１４２へ与える。ヘッド１４２はディスク１３８の内側および外側トラック間で半径方向にヘッド１４２が移動する時にボイスコイルモータ（ＶＣＭ）１４６に応答するロータリ・アクチュエータ１４４の先端に支持される。ヘッド１４２はフレックス回路１５０により回路板１４８に電気的に接続される。回路板１４８はデータ記憶装置１２８の機能を制御する制御信号を送受信するようにされている。コネクタ１５２が回路板１４８に電気的に接続され、データ記憶装置１２８をＭＤＡ１１８の回路板１３４（図４）に接続するようにされている。
【００１５】
図６は中間バス１６０（“ｅｂｕｓ”と呼ばれる）により接続された２つのインテリジェント記憶プロセッサ（ＩＳＰ）１５６，１５８を有するコントローラ１１２（図２）アーキテクチュアを示す。好ましくは、ＩＳＰ１５６，１５８の各々が共通コントローラ・ボード上の個別の特定用途向け集積回路（ＡＳＩＣ）パッケージ内に配置される。好ましくは、ＩＳＰ１５６，１５８は、それぞれ、ファイバ・チャネル・サーバリンク１６２，１６４を介して上りアプリケーション・サーバと通信し、かつファイバ・チャネル記憶リンク１６６，１６８を介して記憶容量１０９を構成する記憶装置と通信する。
【００１６】
ポリシー・プロセッサ１７０，１７２はコントローラ１１２に対するリアルタイム・オペレーティングシステムを実行し、かつＰＣＩバス１７４，１７６を介して各ＩＳＰ１５６，１５８と通信する。ポリシー・プロセッサ１７０，１７２は、さらに、カスタマイズド・ロジックを実行して定められた記憶アプリケーションに対するＩＳＰ１５６，１５８と共に複雑な処理タスクを実施する。ＩＳＰ１５６，１５８およびポリシー・プロセッサ１７０，１７２は動作中に必要に応じてメモリモジュール１７８，１８０をアクセスする。
【００１７】
図７Ａおよび７Ｂは本発明の実施例に従ったＩＳＰ１５６，１５８の詳細を示す。各ＩＳＰ１５６，１５８ユニットはデータ記憶装置１２８の予め定められたプールを支配する、言い換えれば制御の部位を提供する。したがって、各ＩＳＰ１５６，１５８の同じコンポーネントは同じ番号で示されるがＩＳＰ１５８上のプライム記号により区別される。
【００１８】
各ＩＳＰ１５６，１５８は交換／ＰＣＩメモリモジュール１８２，１８２′バッファ・メモリモジュール１８４，１８４′、およびＳＲＡＭモジュール１８６，１８６′に接続される。各ポリシー・プロセッサ１７０，１７２はＰＣＩバス１７４，１７６を介してメモリモジュール１８２−１８６，１８２′−１８６′内に格納されたデータだけでなく各ＩＳＰ１５６，１５８の機能にアクセスする。
【００１９】
図７Ａおよび７Ｂの実施例では、各ＩＳＰ１５６，１５８は７つの専用目的機能コントローラ（ＦＣ）１９０−１９６，１９０′−１９６′を有する。ホスト交換コントローラ（ＨＥＣ）１９０はフロントエンド・ファイバチャネル・サーバリンク１６２（図６）と通信し、ＨＥＣ１９０′はフロントエンド・ファイバチャネル・サーバリンク１６４（図６）と通信する。２つのディスク交換コントローラ（ＤＥＣ０，ＤＥＣ１）１９５，１９６はバックエンド・ファイバチャネル記憶リンク１６６（図６）と通信し、ＤＥＣ０，ＤＥＣ１  １９５′，１９６′はバックエンド・ファイバチャネル記憶リンク１６８（図６）と通信する。他の専用目的ＦＣはＤＭＡ／ＸＯＲコントローラ（ＤＸＣ）１９１，１９１′、コマンド・ルーティング・コントローラ（ＣＯＲＥ）１９２，１９２′、メタデータ・コントローラ（ＭＡＰ）１９３，１９３′、および種種雑多の機能コントローラ（ＭＩＳＣ）１９４，１９４′である。
【００２０】
ＦＣ１９０−１９６，１９０′−１９６′はクロスポイント・スイッチ（ＣＰＳ）１９８，１９８′および対応するリストマネージャ（ＬＭ）２００−２０４，２００′−２０４′等のインターコネクトを介してメモリ１８２−１８６，１８２′−１８６′とアクセスすることができる。ＦＣと同様に、ＬＭはハードウェア集約的専用目的処理要素である。各ＬＭは指定されたデータ構造操作で使用するために最適化され、各ＬＭはそのデータ構造責任リストを維持する。すなわち、システム内の各データ構造は１つだけのＬＭにより一意的に所有される。
【００２１】
以下の説明において、ＩＳＰ１５６に支配されたプール内に含まれるＬＵＮ１へ向けられたＨＥＣ１９０により受信されるＩ／Ｏコマンドはポリシー・プロセッサ１７０に対するローカル・データ・トランザクショントと呼ばれる。しかしながら、ＬＵＮ１へ向けられたＨＥＣ１９０′により受信されるＩ／Ｏコマンドはポリシー・プロセッサ１７０に対する遠隔データ・トランザクショントと呼ばれる。同様に、ＩＳＰ１５８に支配されたプール内に含まれるＬＵＮ２へ向けられたＨＥＣ１９０′により受信されるＩ／Ｏコマンドはポリシー・プロセッサ１７２に対するローカル・データ・トランザクショントと呼ばれる。しかしながら、ＬＵＮ２へ向けられたＨＥＣ１９０により受信されるＩ／Ｏコマンドはポリシー・プロセッサ１７２に対する遠隔データ・トランザクショントと呼ばれる。
【００２２】
イベント・リング・バッファ（ＥＲＢ）１７９，１７９′は各ポリシー・プロセッサ１７０、１７２へ向けられた複数の各ＦＣ１９０−１９６、１９０′−１９６′からリアルタイムで集合的にポストされる。一般的に、ＥＲＢ１７９、１７９′は定められたポリシー・プロセッサ１７０、１７２へ向けられる両方のＩＳＰ１５６、１５８に対する全トランザクションを同期化させる巡回バッファ等のＦＩＦＰバッファである。前記したように、ＥＲＢ１７９、１７９′へポストされたこれらのトランザクションは各ポリシー・プロセッサ１７０、１７２へ向けられる各ＦＣ１９０−１９６、１９０′−１９６′からの、ローカルおよび遠隔の、全トランザクション要求を含んでいる。ＥＲＢ１７９、１７９′へポストされたこれらのトランザクションは各ポリシー・プロセッサ１７０、１７２へ向けられる各ＬＭ２００−２０４、２００′−２０４′からの、ローカルおよび遠隔の、トランザクション応答も含んでいる。ＥＲＢ１７９、１７９′へポストされたこれらのトランザクションは一方のポリシー・プロセッサ１７０、１７２から他方のポリシー・プロセッサ１７０、１７２へのトランザクションも含んでいる。
【００２３】
ＥＲＢ１７９、１７９′はリアルタイム・システム内で実施された全ワークのバルクを構成する多数のリアルタイム・トランザクションを効率的かつ確実に処理する。ＥＲＢ１７９、１７９′はトランザクションの全ソースを単一同期化リングへポストさせて、任意の一つのソースからのトランザクションのシーケンスは発生時間により順次付けられるようにする。さらに、第１のソースからのトランザクションおよび第２のソースからの二次的なトランザクションに関して、所望により、もう１つのソースからのアクティビティの結果一つのソースから発生されるトランザクションは逐次とすることができる。独立した異なるソースからのトランザクションは任意の順序でポストすることができるが、“ｃｌｏｓｅ  ｉｎ  ｔｉｍｅ”であれば“ｃｌｏｓｅ  ｏｎ  ｔｈｅ  ｒｉｎｇ”となる。
【００２４】
前記したように、デュアル・アクティブ−アクティブ・コントローラ・モードにおいて一方のポリシー・プロセッサ１７０、１７２は他方のポリシー・プロセッサのＥＲＢ１７９、１７９′へトランザクションをポストすることができる。この「ワン・リング」機構はポリシー・プロセッサ１７０、１７２により行われる全処理が極端に低いオーバヘッドで管理されるようにすることができる。全トランザクションが到着順に処理されるという事実により、リアルタイム・システムの管理に付随する複雑さの大部分が解消される。“ｏｎｅ  ｒｉｎｇ  ｔｏ  ｒｕｌｅ  ｔｈｅｍ  ａｌｌ”内の複数の処理要素からの各トランザクションを記述するデータ構造を使用して、コード複雑さを比較的低減しながら、トランザクションおよびそれらの相対的順序の誤解釈を防止する。
【００２５】
各ポリシー・プロセッサ１７０、１７２に個別ＥＲＢ１７９、１７９′を管理させる能力と組み合わせた信用に基づいたＳｌｏｐｐｙ  Ｑｕｏｔａ  Ａｃｃｏｕｎｔｉｎｇ  Ｍｅｔｈｏｄ（ＳＱＡＭ）はＥＲＢ１７９、１７９′をオーバフローすることを防止できる。ＰｏｗｅｒＰＣ  ４４０ＧＸ  ＡＳＩＣにより提供されるような非常に効率的なハードウェア・アーキテクチュアはトランザクションのポスティングにおける極端に低いオーバヘッドを許す。クリティカルパスを読み込むデバイスが実際上ゼロである環境をこれらの効率的なハードウェアの支援によりＥＲＢ１７９、１７９′上に構成することができる。事実、割込みがＥＲＢ１７９、１７９′上のまれな非ルーチン・トランザクションに対してしか生じない単純なポーリングＲＴＯＳを構成することができる。トランザクションをスレッド・レベルへ待ち行列させる割込処理およびデータの付随運動は典型的にトランザクションに対する実際の処理オーバヘッドの何倍にもなることがあるため、ＥＲＢ１７９、１７９′に基づくポーリングＲＴＯＳは割込みに基づくものよりも何倍も効率的となる。効率利得はＣＰＵのディメンジョン内だけでなく必要なメモリ・リソースのディメンジョン内でも実現される。
【００２６】
ＥＲＢ１７９、１７９′のオーバフローを防止するために、各トランザクション・データ・エントリのサイズを固定することも好ましい。特定のトランザクションに関連する付属データはトランザクションのソースにより独立して管理されるデータ・リング・バッファ（ＤＲＢ）内に格納することができる。たとえば、図７は、それぞれ、ＥＲＢ１７９、１７９′上のポストされたトランザクションに関連する付属データを含む２つのＤＲＢ２０１、２０３を管理するＨＥＣ１９０を示す。同様に、ＨＥＣ１９０′はそれぞれ、ＥＲＢ１７９、１７９′上のポストされたトランザクションに関連する付属データを含むＤＲＢ２０５、２０７を管理する。ＤＥＣ０  １９５およびＤＥＣ１  １９６はＥＲＢ１７９に付属するＤＲＢ２０９、２１１を管理し、同様に、ＤＥＣ０  １９５′およびＤＥＣ１  １９６′はＥＲＢ１７９′に付属するＤＲＢ２１３、２１５を管理する。
【００２７】
各ＥＲＢおよびＤＲＢは全未決トランザクションに対して発生されたデータプラス求められていないファイバ・チャネル・データに関連するデータおよびトランザクションの割当てを収容するのに十分大きい。各各ＦＣ１９０−１９６、１９０′−１９６′はアンソリシティド・ファイバ・チャネル・データ（ｕｎｓｏｌｉｃｉｔｄ  ｆｉｂｅｒ  ｃｈａｎｎｅｌ  ｄａｔａ）およびトランザクションの下記の４つの特定ケースに対して別々の割当てを有することができる。
ＦＣＰ＿ＣＭＤ                （新しい目標ＳＣＳＩコマンド）
ＥＬＳ  Ｐａｃｋｅｔ          （拡張リンク・サービス・コマンド）
ＢＬＳ  Ｐａｃｋｅｔ          （ベーシック・リンク・サービス・コマンド）
ＦＣＰ＿ＤＡＴＡ／Ｏｔｈｅｒ  （予期せぬデータ・フレーム−３２バイト・データ保持
）
（フレーム・ヘッダー・プラス３２バイト−他は廃棄）
【００２８】
前記４つのクラスに対するフレーム内のデータ量は変動することがある。ＳＱＡＭを使用してＥＲＢまたは特定のＤＲＢのオーバフローを回避することができる。“ＦＣＰ＿ＤＡＴＡ／Ｏｔｈｅｒ”クラスに対して、ヘッダーを超えるデータの３２バイトは全て伝えられなければならない。ＦＣＰ＿ＣＭＤフレームに対して、ヘッダーを超えるデータの最大６４バイトはＤＲＢを介して伝えることができる。トランザクション・プラス最初の２つのＤＲＢエントリは単一の組合せ「カウント」を消費する。追加６４バイトまたは最終部に対する部分はもう１つの「カウント」を消費しなければならない。このルールは“ＥＬＳ  Ｐａｃｋｅｔ”クラス内のフレームにも適用される。“ＢＬＳ  Ｐａｃｋｅｔ”はヘッダーを超える追加３２バイトよりも多くを持たなければならず、そのためこのクラスは格別な処理を必要としない。
【００２９】
ポリシー・プロセッサ１７０、１７２はＳＱＡＭを介してトランザクションまたは関連するデータを格納する余地が不十分である要求をしないように管理する。アンソリシティド・トランザクションおよび関連するデータが消費されると、ポリシー・プロセッサ１７０、１７２は“再生（ｒｅｎｅｗ）”カウントを含むその割当てカウントを調節する。カウントが指定された閾値よりも低下すると、ポリシー・プロセッサ１７０、１７２は全割当てを再生する要求を発生する。ファイバ・チャネル・アンソリシティド・データが受信され割当てが不十分であれば、ＦＣはクラスに基づいてカウントをぶっつけてデータを廃棄する。更新割当て要求が処理される時にこれらのカウントは報告されゼロとされる。ＦＣ初期化において、全割当てがゼロにデフォルトされる。ポリシー・プロセッサ１７０、１７２は更新割当て要求を発行し、ＦＣが実行開始した直後に初期割当てを設定する。
【００３０】
ＥＲＢ内の各トランザクション・エントリはプレー内のトランザクションのタイプを識別するイベント・コードを含んでいる。イベント・コードは処理を単純化するために論理的に分類され、イベントのタイプはデータの残りがどのように解釈されるかを指示する。トランザクション・エントリは、ＤＲＢ内の任意の付属データをどこで見つけるかを制御するために、トランザクションがローカル発生されたのか遠隔発生されたのかを示すデータも含んでいる。実例となるＥＲＢは下記のフォーマットを含むことができる。
2009015843.tif 000003
【００３１】
“Ｅｖｅｎｔ  Ｃｏｄｅ”フィールドはどのクラスのトランザクションが受信されたかを示す。
2009015843.tif 000004
【００３２】
“ＤＲＢ  ＩＤ”フィールドは、追加データを見つけるのにどのＤＲＢを調べるべきかをポリシー・プロセッサ１７０、１７２が知るように、どのＩＳＰ１５６、１５８からＥＲＢトランザクションが送られたかを示すのに使用される。あるＢＬＳフレームに対して追加データは無いことがある。前記フォーマットからＤＲＢデータ1を記述するフィールドを差し引いたものがソリシティドＥＬＳおよびＢＬＳ応答フレームのために使用される。これらのフレームは“ＥＬＳ  Ｒｅｓｐｏｎｓｅ  Ｔａｂｌｅ”（ＥＲＴ）内に格納される。“ＤＲＢ  ＩＤ”フィールドは下記のように復号される。
０      ＨＥＣ
１      ＨＥＣ′
２      ＤＥＣ０
３      ＤＥＣ１
４      使用されない
【００３３】
完全にＩＳＰ１５６ＦＣおよびＬＭのフレームワーク内のネットワークＩ／Ｏコマンドに関連する記憶トランザクションを実施することができるが、このようなトランザクションのクリティカルパスは迅速にＦＣおよびＬＭ間の長くて比較的非効率的なサブトランザクションのシリーズとなる。たとえば、図８はＨＥＣ２０６の専用タスクを実施するようにプログラムされたＦＣと、コマンド復号機能（ＣＤＣ）２０８と、キャッシュ論理コントローラ（ＵＣＣ）２１０を有する関連技術ソリューションに従って構成されたＩＳＰを示す。下記のステップはこのコントローラ・アーキテクチュアで読まれたキャッシュを実施するクリティカルパスを記述する。
【００３４】
ステップ１において、ＨＥＣ２０６はサーバ・ファイバ・チャネルリンクを介してリクエスタからリード・キャッシュ・コマンドを受信する。
【００３５】
ステップ２において、ＨＥＣ２０６はトランザクション要求を変換してデータ・トランザクションのための対応する要求パケットをＣＰＳ１９８を介してＬＭ０  ２００へ送る。
【００３６】
ステップ３において、ＬＭ０  ２００はデータ・トランザクションをＣＤＣ２０８の入力待ち行列の尾部にリンクする。
【００３７】
ステップ４において、ＣＤＣ２０８はその入力待ち行列からトランザクションをフェッチしてデータ・トランザクションをその各コンピュートおよびデータ構造操作へ復号する。
【００３８】
ステップ５において、ＣＤＣ２０８はＬＭ１への要求パケットを発生してデータ・トランザクションをＵＣＣ２１０へ移動させる。
【００３９】
ステップ６において、ＬＭ１はデータ・トランザクションをＵＣＣ２１０の入力待ち行列の尾部にリンクする。
【００４０】
ステップ７において、ＵＣＣ２１０はキャッシュ・データ構造操作に対する１つ以上の要求パケットをＬＭ３へ発生する。
【００４１】
ステップ８において、ＬＭ３は要求されたデータ構造を検索する。
【００４２】
ステップ９において、ＬＭ３は要求されたデータは転送準備完了であるという応答パケットを発生する。
【００４３】
対照的に、本発明の実施例はキャッシュ・ノード・ルックアップ等のメモリ集約的およびコンピュータ集約的機能をポリシー・プロセッサ１７０へオフロードする。すなわち、特許請求される実施例の記憶システムはネットワークＩ／Ｏコマンドに関連する格納トランザクションを実施し、ＩＳＰ１５６インターコネクト１９８はポリシー・プロセッサ１７０が接続される周辺装置バス１８８上で通信するＬＭ０  ２００を介して複数のＦＣ１９０−１９６を選択的にポリシー・プロセッサ１７０に接続する。このアーキテクチュアによりＬＭはポリシー・プロセッサ１７０に周辺装置バス１８８を経た交換／ＰＣＩメモリ１８２内に格納されたデータ構造へのアクセスも提供する。後述するように、データ構造はデータ構造容量の仮想ストライプ境界に揃えられ、キャッシュメモリ内の対応するデータ・バッファを記述する。
【００４４】
この“ｐｏｌｉｃｙ  ｐｒｏｃｅｓｓｏｒ  ｐａｒｔｎｅｒｉｎｇ”アーキテクチュアは関与するサブトランザクション数を減じることによりコントローラ１１２の処理力を高める。たとえば、読まれたキャッシュに対するクリティカルパスは、前記した図８のコントローラに較べて、図７のコントローラ１１２および本発明の実施例に対するものは著しく短い。
【００４５】
ステップ１は同じであり、ＨＥＣ１９０はサーバ・ファイバ・チャネルリンクを介してリクエスタからリード・キャッシュ・コマンドを受信する。
【００４６】
ステップ２も同じであり、ＨＥＣ１９０はトランザクション要求を変換してデータ・トランザクションに対する対応する要求パケットをＣＰＳ１９８を介してＬＭ０  ２００へ送る。
【００４７】
しかしながら、ステップ３においてＬＭ０  ２００はデータ・トランザクションを直接ポリシー・プロセッサ１７０にリンクし、それはデータ・トランザクションを復号し、キャッシュ内のデータを検証し、キャッシュ・ルックアップを実施する。
【００４８】
図９はポリシー・プロセッサ１７０がストライプされた記憶ディスク２１４を管理するのに使用する典型的なメタデータ構造２１２を例示している。ストライプ・バッファ・リスト（ＳＢＬ）テーブル２１６は記録媒体上の仮想ストライプに揃えられる複数のＳＢＬを含み、かつキャッシュメモリ内の対応するデータ・バッファ・アドレスを参照する１つ以上のバッファ・インデクスを含んでいる。ポリシー・プロセッサ１７０はメモリ内に格納されたプログラミング命令を実行し、ＶＢＡおよび記憶トランザクションに関連するプールに従ってＳＢＬテーブルをインデクスして記憶トランザクションを記憶容量内のストライプと関連付ける。
【００４９】
ポリシー・プロセッサ１７０は対応するテーブル２１８内のストライプ・バッファ・リスト・ディスクリプタ（ＳＢＬＤ）を使用してノードベースでキャッシュを管理する。各ＳＢＬＤはそれが関連するデータへの最近および現在のアクセスに関するデータを保持する。好ましくは、各ＳＢＬＤは対応するＲＡＩＤストリップに揃えられ（すなわち、選出された記憶装置上の全データが複数のパリティセットと関連付けられる）、特定のストライプ・バッファ・リスト（ＳＢＬ）に合致する。
【００５０】
ポリシー・プロセッサ１７０により管理される各キャッシュ・ノードは、好ましくは、フォワードおよびバックワード・リンクト・リストを使用して仮想ブロック・アドレス（ＶＢＡ）を介して昇ベキの順でリンクされる論理ディスクの定められたセットに対するアクティブＳＢＬＤ構造を有する、ある特定のＳＢＬＤを参照する。好ましくは、ＶＢＡ値はしばしばＲＡＩＤ  Ａｌｌｏｃａｔｉｏｎ  Ｇｒｉｄ  Ｓｙｓｔｅｍ（ＲＡＧＳ）と呼ばれるグリッド・システムを使用してＲＡＩＤデータ編成と揃えられる。一般的に、あるＲＡＩＤストライプに属するブロックの任意特定の集合（たとえば、特定のパリティセットに寄与する全データ）は特定シート上の特定の信頼できる記憶装置（ＲＳＵ）に割当てられる。ブックはいくつかのシートからなり異なる記憶装置からのブロックの多数の隣接セットから構成される。実際のシートおよびＶＢＡに基づいて、ブックはさらにゾーンへ再分割することができ、特定のデバイスまたはデバイスセット（冗長性が利用される場合）を示す。好ましくは、各ＳＢＬＤはアクセス・ヒストリ、ロック状態、最終オフセット、最終ブロック、タイムスタンプデータ（一日の時間ＴＯＤ）、どのゾーン（ブック）にデータが属するかの識別子、および利用したＲＡＩＤレベルを含むデータのさまざまな状態を示すへ変数を含んでいる。
【００５１】
ストライプ・バッファ・リスト・プレゼントビット（ＳＰＢ）テーブル２２０およびストライプ・バッファ・リスト・ダーティビット（ＳＤＢ）テーブル２２２によりポリシー・プロセッサ１７０はキャッシュメモリ内のデータ・バッファを管理することができる。ＳＰＢテーブル２２０は定められたセクターに対するキャッシュされたデータは有効であるまたは有効にしようとしている（すなわち、対応するセクターに対する現在データを有する）かどうかを示す各ＳＢＬの各セクターに対するビットを含む。それはバッファ・インデクスが有効であることも示す。あるセクターに対するリード操作を要求する後続交換において、データは有効であることをＳＰＢテーブル２２０が示せば、要求は記録媒体へのラウンドトリップを要求するのではなくバッファメモリからサービスすることができる。ＳＤＢテーブル２２２は定められたセレクターに対するキャッシュされたデータが“ｄｉｒｔｙ”である（すなわち、データバッファから書き込む必要がある）かどうかを示すビットをＳＢＬの各セクターに対して含んでいる。たとえば、記憶コントローラが交換の途中でパワーを失うと、ＳＤＢテーブル２２２を使用してキャッシュ内のデータを適切なターゲットへフラッシュさせる必要があることを示すことができる。したがって、記憶コントローラがリブートすると、破滅的なイベントがある所でデータ完全性が維持される。
【００５２】
キャッシュ・ルックアップが完了した後で、ポリシー・プロセッサ１７０はメモリを割当てデータ・トランザクションを実施するためのアクティブ・コンテキストエントリ（ＡＣＥ）を分布する。キャッシュ・ヒットの場合のように、データ・トランザクションがホスト交換範囲内のＨＥＣ１９０に向けられる場合、コンテキストはフロント・アクティブ・コンテキストエントリ（ＦＡＣＥ）の形をとる。ＳＣＳＩターゲットＩ／Ｏアシストに対するＦＡＣＥの典型的なフォーマットは下記のようになる。
2009015843.tif 000005
【００５３】
“Ｆｌａｇｓ”値は下記のように定義される。
2009015843.tif 000006
【００５４】
“Ｎｏｎ−Ｓｅｃｔｏｒ  Ｄａｔａ”フラグはＳＣＳＩ非セクタコマンドが処理されることを信号で伝える。データを得るまたは置く場所が“Ｂｕｆｆｅｒ  Ｉｎｄｅｘ”フィールドにより定義される。転送するデータの量は“Ｂｙｔｅ  Ｃｏｕｎｔ”フィールド内で見つけられる。“Ａｂｏｒｔｅｄ”フラグは要求が到着する前に中断されていることを示す。状態は適切に設定しなければならずＦＡＣＥは“Ｓｔａｇｅ”フィールドを増分した後でＣＯＲＥ１９２に戻っている。“Ｍｉｒｒｏｒ  Ｄａｔａ”フラグはｅｂｕｓ１６０両端間でデータはミラーリングされることも要求する。それは正規のセクター・データだけでなく非セクター・データにも適用することができる。“Ｂｕｒｓｔ  Ｌｅｎｇｔｈ”フィールドはファイバ・チャネル・フレームを満たすのに使用すべきセクター数を定義する。フレームサイズは“セクターサイズ”＊（“Ｂｕｒｓｔ  Ｌｅｎｇｔｈ”＋１）プラスヘッダーに対する３２として計算される。たとえば、“セクターサイズ”が１（５２０）であり“Ｂｕｒｓｔ  Ｌｅｎｇｔｈ”が３であれば、フレームサイズは５２０＊４＋３２＝２１１２となる。
【００５５】
“Ｒｅｍｏｔｅ  Ｄａｔａ”フラグはアクセスされるバッファメモリは他方のＩＳＰ１５８からｅｂｕｓ１６０を横切ることを示す。“Ｒｅｍｏｔｅ”フラグも設定されると、ＨＥＣ１９０は“Ｕｓｅ  Ｍｉｒｒｏｒ”フラグの“ｓｅｎｓｅ”を反転してどのバッファおよびＳＢＬプールをアクセスするか決定する。
【００５６】
ＦＡＣＥフォーマットに戻って、“Ｓｃｒｉｐｔ”値は一連のステップのいくつかの予め定義されたスクリプトの１つを選出し、それは完了すると、対応する“ケース”となる。“Ｓｔａｇｅ”値はどのステップが実行されるかを示す。定められた要求に対して、完了がポリシー・プロセッサ１７０へ応答される前に多数のステージをＩＳＰ１５６により完了できる点において、このアーキテクチュアは処理性能を高める。
【００５７】
“Ｂｌｏｃｋｓ”フィールドはセクター内の転送サイズを定義し、０は２５６を意味する。“Ｏｆｆｓｅｔ”フィールドは“ｄｉｓｋ  ｓｔｒｉｐｅ”内の開始オフセットを定義する。それはＳＢＬ内の開始セクターオフセットおよび開始ＬＢＡの低順位バイトである。転送サイズが０であれば、それは２５６の転送サイズを意味する。ＨＥＣは“Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ”フィールドを使用してコンテキストに記入したりＦＣＰ＿ＨＤＲデータを組立てる。ターゲット・ライトに対して、最大アトミック・ライトサイズ（１２８ＫＢ）が“ｄｉｓｋ  ｓｔｒｉｐｅ”（ＳＢＬ）境界を横切る場合は、“Ａｄｄｉｔｉｏｎａｌ  ＳＢＬ  Ｉｎｄｅｘ”が第２のＳＢＬを参照する。このケースは“Ｏｆｆｓｅｔ”プラス“Ｂｌｏｃｋｓ”値が２５６よりも大きい事実により検出される。“Ｒｅａｌ  ＳＢＬ  Ｉｎｄｅｘ”および“Ｒｅａｌ  Ａｄｄｉｔｉｏｎａｌ  ＳＢＬ  Ｉｎｄｅｘ”はセクターのいくつかまたは全てがキャッシュ内で既に“ｄｉｒｔｙ”であるライトを含む“ａｔｏｍｉｃ  ｗｒｉｔｅ”の特殊ケースに対してのみ使用される。“Ｒｅｌａｔｉｖｅ  Ｏｆｆｓｅ”フィールドはＳＣＳＩターゲットアシストのこの部分に先行するセクター数を定義する。
【００５８】
“Ｓｔａｔｕｓ”フィールドはターゲットＩ／Ｏ要求に関して検出されたエラーに関する事項を運ぶ。“Ｓｔａｔｕｓ”に対する値は下記の通りである。
2009015843.tif 000007
【００５９】
対照的に、キャッシュ・ミスの場合のように、データ・トランザクションがプール交換範囲内のＤＥＣ０またはＤＥＣ１に向けられると、コンテキストはプール・アクティブ・コンテキスト・エントリ（ＰＡＣＥ）の形をとる。ＳＣＳＩリード、ベリファイ、ライト、またはライトベリファイ・コマンド内のＰＡＣＥに対する典型的なフォーマットは次の通りである。
2009015843.tif 000008
【００６０】
“Ｆｌａｇｓ”フィールドは下記のように定義される。
2009015843.tif 000009
【００６１】
“Ｓｕｂｓｔｉｔｕｔｅ  Ｔａｇ”フラグによりＤＩＦデータの操作に関して特殊挙動が生じる。これはリードおよびライトの両操作に対して生じることがある。“Ｃｈｅｃｋ  Ｔａｇ”フィールドが値０ｘＦＦＦＦまたは０ｘＦＦＦＥでなければ、“ｉｎｃｏｍｉｎｇ”タグ（“ＭＥＴＡ  Ｔａｇ”および“ＲＥＦＥＲＥＮＣＥ  Ｔａｇ”）は予期されたタグ（“Ｃｈｅｃｋ  Ｔａｇ”および“ＶＢＡ”）に対してチェックしなければならないが、“Ｓｕｂｓｔｉｔｕｔｅ  Ｔａｇ”は置換しなければならない。ハードウェア要求条件のため、“ＶＢＡ”も置換され、正しいＣＲＣが現在のＣＲＣを置換する。すなわち、まったく新しいＤＩＦフィールドが発生され置換される。“Ｃｈｅｃｋ  Ｔａｇ”フィールドが０ｘＦＦＦＦの値を有する場合、着信ＤＩＦデータがあり、ＣＲＣはもちろん正しいとされなければならない。しかしながら、“ＲＥＦＥＲＥＮＣＥ  Ｔａｇ”（ＶＢＡ）および“ＭＥＴＡ  Ｔａｇ”値は無視しなければならない。すなわち、“ｔａｇ”エラーは生じてはならない。“Ｃｈｅｃｋ  Ｔａｇ”フィールドが０ｘＦＦＦＦの値を有する場合、タグおよびＣＲＣエラーは無視しなければならない。
【００６２】
“ＳＣＳＩ  Ｇｏｏｄ”以外の状態が受信されると、ＦＣＰ＿ＲＳＰフレームの第１の２５６バイト以下が“ＥＬＳ  Ｒｅｓｐｏｎｓｅ  Ｔａｂｌｅ”（ＥＲＴ）内に格納される。“Ｒｅｓｐｏｎｓｅ  Ｂｙｔｅ  Ｃｏｕｎｔ”はＦＣＰ＿ＲＳＰフレーム内の実際のバイト数を反映する。特殊フラグセットの無い“ＳＣＳＩ  Ｇｏｏｄ”以外の状態が受信されない限り、それは更新されない。
【００６３】
ＳＣＳＩ“Ｌｏｎｇ  Ｔｒａｎｓｆｅｒ”コマンド要求は“ｓｔａｎｄａｒｄ”ＳＣＳＩコマンドを発行するのに使用され、転送は“ＲＡＩＤ  ｓｔｒｉｐｅ”境界と交差し長さは２５６セクターを超える。この操作に対するＰＡＣＥのフォーマットの下記の通りである。
2009015843.tif 000010
【００６４】
フィールド定義は“ｓｔａｎｄａｒｄ”ＳＣＳＩコマンドに対して前記したものと本質的に同じである。“Ｂｌｏｃｋ”フィールドは常に“２５６”よりも大きい。コントローラ１１２は、語３の全コンテンツからとられる、所望する数の書込みブロックに基づいてＳＣＳＩ  ＣＤＢを通常通り形成する。これを除いて、このタイプの処理がタイプ０“ｎｏｒｍａｌ”ＳＣＳＩコマンドに対する処理と異なる点はデータ転送部の処理だけである。この論理はＳＢＬの終りに遭遇する場合を検出しなければならない。次に、新しい“ＳＢＬ  Ｉｎｄｅｘ”および新しい“ＶＢＡ  Ｌｏｗ”値を転送が到達したオフセットに基づいてＡＣＥ相関データ（ＡＣＤ）からフェッチしなければならない。論理はＳＢＬへの初期オフセットは“０”であると仮定する。初期および後続“ＶＢＡ  Ｌｏｗ”値は“０”のローバイト値を有する。サポートされる最大転送は２ＭＢ（４０９６セクター）である。
【００６５】
“Ｌｏｎｇ  Ｔｒａｎｓｆｅｒ”バリエーションに対する“Ｆｌａｇ”フィールドの使用は次の通りである。
2009015843.tif 000011
【００６６】
データを持たないまたは非セクター・データを使用するいくつかのＳＣＳＩコマンドに対するサポートが必要である。たとえば、ＳＣＳＩ“Ｔｅｓｔ  Ｕｎｉｔ  Ｒｅａｄｙ”コマンドはデータを持たない。ＳＣＳＩ“Ｖｅｒｉｆｙ”コマンドはそのように指定されるとデータを持たない。ＳＣＳＩ“Ｍｏｄｅ  Ｓｅｎｓｅ”はディスク装置上のセクターに関係しないデータを予期する。ＳＣＳＩ“Ｍｏｄｅ  Ｓｅｌｅｃｔ”コマンドはディスク装置上のセクターに関係しないデータを送る。非セクター・データを有するＳＣＳＩコマンドに対して、データの量は“Ｂｙｔｅ  Ｃｏｕｎｔ”フィールドにより定義される。“０”の“Ｂｙｔｅ  Ｃｏｕｎｔ”値は６５５３６として解釈される。最大アウトバウンド転送は１６３８４である。ＩＳＰ１５６ＥＲＢに対する転送には“ｒａｗ”ＤＭＡモードが必要である。
【００６７】
セクター・データを含まないＳＣＳＩコマンドに対するＰＡＣＥのフォーマットは次の通りである。
2009015843.tif 000012
【００６８】
“Ｂｕｆｆｅｒ  Ｉｎｄｅｘ”フィールドはＢｕｆｆｅｒ  Ｍｅｍｏｒｙ内のどのバッファを使用するかを定義する。それはＣＯＲＥ１９２により割り当てられる一時的バッファを参照する。“ＰＣＩ  Ｃａｃｈｅ  Ｈｉｇｈ”（１１ビット）および“ＰＣＩ  Ｃａｃｈｅ  Ｌｉｎｅ  Ｌｏｗ”フィールドはＢＭ１８４内のバッファに対してデータを移動するためにＤＸＣ１９１により使用されるＰＣＩアドレスを定義する。このアドレスは下記のように計算される。
2009015843.tif 000013
【００６９】
これらのバリエーションに対する“Ｆｌａｇｓ”フィールドの使用は次の通りである。
2009015843.tif 000014
【００７０】
データの無いＳＣＳＩコマンド・ケースはＰＡＣＥ内の“Ｂｙｔｅ  Ｃｏｕｎｔ”フィールドはゼロである事実により決定することができる。“Ｗｒｉｔｅ”フラグは“Ｄａｔａ  Ｏｕｔ”対“Ｄａｔａ  Ｉｎ”ケースを決定する。ポリシー・プロセッサ１７０は対応するＡＣＤ内の全体Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ＦＣＰ＿ＣＭＮＤフレームを形成する。このフレームは６８バイトであり、ＣＲＣ−３２データ“ｗｏｒｄ”に対する場所だけでなくＳＯＦｉｘおよびＥＯＦ“ｗｏｒｄ”を含んでいる。
【００７１】
“Ｄａｔａ  Ｉｎ”ケースに対して、ターゲットは要求されたものよりも少ないデータを正当に戻すことができる。この場合、“Ｂｙｔｅ  Ｃｏｕｎｔ”フィールドは受信される最大を決定する。少なく受信されたら、“Ｂｙｔｅ  Ｃｏｕｎｔ”フィールドは更新しなければならない。それは最後にポリシー・プロセッサへ戻される。また、ＦＣＰ＿ＲＳＰフレームをチェックして正常な量のデータが戻されたことを確認する必要がある。
【００７２】
ＩＲＣをどこにしまっておくかまたどのＩＳＰ１５６コンテキスト・エリアを使用するかを決定するＯＸＩＤと同様にＳＰＯＴはやはりＣＯＲＥ  Ｔａｇから引き出される。サポートされる必要があるファイバ・チャネル・サービスに対する他の主要なクラスは“Ｌｉｎｋ  Ｓｅｒｖｉｃｅ”である。発信フレームに対して、このサービスは“Ｓｉｎｇｌｅ  Ｆｒａｍｅ  Ｓｅｑｕｅｎｃｅ”（ＳＦＳ）機構を呼び出す。ＳＦＳ機構に対するＰＡＣＥのフォーマットは次の通りである。
2009015843.tif 000015
【００７３】
“Ｄａｔａ  ＣＯＲＥ  Ｔａｇ”フィールドが非ゼロであれば、それはＡＣＤテーブル内のフレーム・データの第２のブロックを参照する雑多なアクティブ・コンテキスト・エントリ（ＭＡＣＥ）インデクスを定義する。それはフレームが２５６バイトより大きいだけでよい。フレームの第１の２５６バイトはＰＡＣＥに対応するＡＣＤエントリ内に格納される。フレームはＳＯＦｉｘおよびＥＯＦｘ語だけでなくＣＲＣ−３２データ語に対する場所を含んでいる。ＰＡＣＥは公称ＰＡＣＥ範囲内にある必要はない。それは実際上ＭＡＣＥであってもよい。ＦＣＣは任意有用な情報を引き出すのにＰＡＣＥ自体のＣＯＲＥ  Ｔａｇを利用しない。ＳＦＳ機構は０−３の範囲内のＩＳＰ１５６コンテキスト・エリアの１つを使用する。
【００７４】
ＳＦＳサービスに対する“Ｆｌａｇ”フィールドの使用は次の通りである。
2009015843.tif 000016
【００７５】
デュアルポート・アクティブ−アクティブ・アレイコントローラに対する前記した構造によりデュアル冗長操作における全ネットワークに対するＩ／Ｏコマンドの非常に効率的な新しい処理方法が可能となる。「アクティブ−アクティブ」とはコントローラ１１２の両側のネットワーク・ポートが定められたＬＵＮに関するＩ／Ｏコマンドの処理に関してアクティブであることを意味する。関連技術のソリューションにおいて、ＬＵＮアクセスはアクティブ・パスまたは性能に関して対称的である。本発明の実施例に従って、ライト・サイドおよびロング・サイドＩ／Ｏコマンド間で実感できる処理性能の差は１％に満たないことをテストが示している。
【００７６】
キャッシュ・コヒーレンシおよびＳＣＳＩ要求条件により、コントローラ１１２の一方側、ユニットマスタ側、は定められたＬＵＮに対する全ＳＣＳＩコマンドを処理しなければならない。しかしながら、特定のファイバ・チャネルポート上で受信されたＩ／Ｏコマンドは関連するデータおよび受信応答が同じポートを介して通信されることを要求する。ユニットマスタ側ではないＩＳＰポート上で受信されたＩ／Ｏコマンドは「ロング・サイド（ｗｒｏｎｇ  ｓｉｄｅ）」コマンドと呼ばれ、ユニットマスタ側のＩＳＰポート上で受信されたＩ／Ｏコマンドは「ライト・サイド（ｒｉｇｈｔ  ｓｉｄｅ）」コマンドと呼ばれる。
【００７７】
本発明の実施例はユニットマスタ側のロング・サイドＩ／Ｏコマンドの遠隔実行を提供し、実行結果のネットワーク・イニシエータへのローカル通信が続く。図７Ａおよび７Ｂに示すアーキテクチュアを参照して、図１０は本発明の実施例に従ったＡＣＴＩＶＥ−ＡＣＴＩＶＥ  ＰＲＯＣＥＳＳＩＮＧに対する方法２３０におけるステップを示す。この方法２３０はブロック２３２においてＩＳＰ１５８へのファイバ・チャネル・リンク１６４を介したＨＥＣ１９０′によるＩ／Ｏコマンドの受信で開始される。説明の目的で、ファイバ・チャネル・コマンドはＬＵＮ１へ向けられるものとして示されている。ブロック２３４において、ＩＳＰ１５８内で実行しているＨＥＣ１９０′はコマンド・フレームのデステネーションＩＤをメモリ内に格納されたＬＵＮデータ・テーブルと相関させる。この例では、ＨＥＣ１９０′はＢ側（ＩＳＰ１５８）にあるものとして示され、Ａ側（ＩＳＰ１５６）はＬＵＮ１に対するユニットマスタである。こうして、このステップにおいてＨＥＣ１９０′はロング・サイド・コマンドを受信していると決定する。
【００７８】
ブロック２３６において、ＨＥＣ１９０′はそのヘッダー情報の一部として“ｒｅｍｏｔｅ”に設定されたフラグを有する新しいＳＣＳＩコマンドをポリシー・プロセッサ１７０のＥＲＢ１７９へポストする。ブロック２３８において、ポリシー・プロセッサ２３８は前記したようにキャッシュ・ルックアップを実施し、コマンドはキャッシュ・ヒットにより満たされるかを決定する。ブロック２３８の決定がイエスであれば、本例においてブロック２４０の決定は“ｒｅｍｏｔｅ”てあるため、制御はブロック２４２へ移る。ブロック２３８の決定がノーであれば、ブロック２４４においてポリシー・プロセッサ１７０はＰＡＣＥを割り当て、ブロック２４６においてＰＡＣＥデータを適切なＣＯＲＥ  Ｔａｇへポストする。次に、制御はブロック２４０へ戻る。
【００７９】
ブロック２４２における遠隔コマンド判断に対して、ポリシー・プロセッサ１７０はＦＡＣＥおよびローカルＭＡＣＥの両方を割り当てる。対照的に、ブロック２４８におけるローカル・コマンド判断はローカルＦＡＣＥを割り当てるだけでよい。遠隔コマンドの場合、バッファ割当ておよび管理を伴う全ローカル・ステージが完了した後で、データは遠隔割当てＦＡＣＥを分布させるスクリプトの一部として転送され、次に、ＩＳＰ１５８に接続されたサーバ・リンク１６４を介してイニシエータへ通信し戻すために指示されたＣＯＲＥ  Ｔａｇへポストされる。
【００８０】
前例はＩＳＰ１５８へのロング・サイドＩ／Ｏコマンドに対処するが、ロング・サイドＩ／ＯコマンドがＩＳＰ１５６へ送られると同様な逆のシーケンスが生じる。そのケースでは、遠隔フラグが設定されたポリシー・プロセッサ１７２のＥＲＢ１７９′へ新しいＳＣＳＩコマンドをポストしているＨＥＣ１９０の制御下で、データはＩＳＰ１５８内のライト・サイド・キャッシュに関してｅｂｕｓ１６０両端間で転送される。いずれかの方向への遠隔実行制御情報の転送はオリジナル・コマンド内の遠隔フラグおよび遠隔実行のためにどんな遠隔コンテキスト・エリアを使用するかを定義するＲｅｍｏｔｅ  ＣＯＲＥ  Ｔａｇに基づいて自動的に生じる。オリジナル・コマンド内の遠隔フラグは遠隔ＩＳＰ上の特定のＦＣに状態および制御を発信ＩＳＰへ転送し戻させる。遠隔要求を発信するローカルＩＳＰ上で、遠隔およびローカル要求間の差は遠隔フラグを設定させ、遠隔データ・フラグを設定させ、遠隔コンテキストを割当て、要求内のそのＣＯＲＥ  Ｔａｇ値を格納させる。その後、２つのＩＳＰ１５６、１５８はポリシー・プロセッサ１７０、１７２による介入無しにトランザクションを処理する。これはＦＣにより逐次処理されるスクリプト内のステージのサブセットに対するはっきりした挙動、および遠隔フラグが設定される時にそれらはどのように僅かに変更されるかを設計して遂行される。
【００８１】
前記したように、一般的に特許請求される実施例はデュアル・アクティブ−アクティブ・アレイ・コントローラ、およびライト・サイドおよびロング・サイドＩ／Ｏコマンドをコントローラのユニットマスタ側で一緒にリアルタイムで同期化させる手段を有する記憶システムを考えている。本明細書の目的および添付特許請求の範囲の意味に対して、「同期化手段」という句はここに開示された構造および、ライト・サイドおよびロング・サイドの、専用目的ＦＣからの全トランザクション要求をアレイ・コントローラのユニットマスタ側のポリシー・プロセッサへ集合的にポストする等価物を含んでいる。
【００８２】
開示された構造は一方側に第１の複数の専用目的ＦＣを有する第１のインテリジェント記憶プロセッサ（ＩＳＰ）と組んだ第１のポリシー・プロセッサ、および他方側に第２の複数の専用目的ＦＣを有する第２のＩＳＰと組んだ第２のポリシー・プロセッサと、ＩＳＰを相互接続する通信バスを含んでいる。また、開示された構造はメモリ内に格納されアレイ・コントローラにより実行されて、その第１のＩＳＰが論理的ユニットマスタであるＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔｎｕｍｂｅｒ）へ向けられるネットワークＩ／Ｏコマンドに関連付けられる第１の複数のＦＣおよび第２の複数のＦＣからのデータ・トランザクションのトップレベル制御を第１のポリシー・プロセッサが維持するようにするプログラミング命令も含んでいる。開示された構造は、さらに、ここに開示されたデータ構造も含んでいる。本明細書の目的および添付特許請求の範囲の意味に対して、「同期化手段」はトランザクションの一部が個別にすなわち独立してバッファされる関連する試みられたソリューションは考えていない。
【００８３】
本発明のさまざまな実施例の非常に多くの特性および利点を、本発明のさまざまな実施例の構造および機能の詳細と共に明細書で述べてきたが、詳細な説明は単なる説明用であって、添付特許請求の範囲が表現される用語の広範な一般的意味により示される全範囲まで、本発明の原理内で詳細を変更することができる、特に部品の構造および配置を変更することができる。たとえば、本発明の精神および範囲を逸脱することなく特定の素子を特定の処理環境に応じて変えることができる。
【００８４】
さらに、ここに記述された実施例はデータ記憶アレイに向けられているが、当業者ならば特許請求された主題はそのように限定はされず、本発明の精神および範囲を逸脱することなく他のさまざまな処理システムを利用できることがお判りであろう。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施例に従って構成されたコンピュータ・システムの線図表現である。
【図２】図１のコンピュータ・システムの一部の単純化された線図表現である。
【図３】本発明の実施例に従って構成されたインテリジェント記憶素子の分解等角図である。
【図４】図３のインテリジェント記憶素子のマルチドライブ・アレイの分解等角図である。
【図５】図４のマルチドライブ・アレイ内で使用される典型的なデータ記憶装置を示す図である。
【図６】インテリジェント記憶素子内のアレイ・コントローラの機能的ブロック図である。
【図７Ａ】図６のアレイ・コントローラのより詳細な機能的ブロック図である。
【図７Ｂ】図６のアレイ・コントローラのより詳細な機能的ブロック図である。
【図８】関連技術ソリューションに従って構成されたアレイ・コントローラの機能的ブロック図である。
【図９】ＳＢＬ，ＳＢＬＤ，ＳＰＢおよびＳＤＢを示す線図である。
【図１０】本発明の実施例に従ってＡＣＴＩＶＥ−ＡＣＴＩＶＥ  ＰＲＯＣＥＳＳＩＮＧ方法を行うためのステップを示すフロー図である。
【符号の説明】
【００８６】
１００  コンピュータ・システム
１０２  ホスト
１０３  ホストバス・アダプタ
１０４  サーバ
１０６  ＬＡＮ／ＷＡＮ
１０８  インテリジェント記憶素子
１０９  データ記憶容量
１１０  ＳＡＮ
１１２  デュアル冗長コントローラ
１１４  シェルフ
１１６  ミッドプレーン
１１８  ＭＤＡ
１２２  デュアル・バッテリ
１２４  交流電源
１２６  デュアル・インターフェイス・モジュール
１２８  データ記憶装置
１３０  アッパー・パーティション
１３２  ロアー・パーティション
１３４、１４８  回路板
１３６、１５２  コネクタ
１３８  ラッパー
１４２  リード／ライト・ヘッド
１４４  ロータリ・アクチュエータ
１４６  ボイスコイルモータ
１５０  フレックス回路
１５６、１５８  インテリジェント記憶プロセッサ
１６０  中間バス
１６２、１６４  ファイバ・チャネル・サーバ・リンク
１６６、１６８  ファイバ・チャネル記憶リンク
１７０、１７２  ポリシー・プロセッサ
１７４、１７６  ＰＣＩバス
１７８、１８０  アクセス・メモリ・バス
１７９、１７９′  ＥＲＢ
１８２、１８２′  交換／ＰＣＩメモリ・モジュール
１８４、１８４′  バッファ・メモリ・モジュール
１８６、１８６′  ＳＲＡＭモジュール
１８８  周辺装置バス
１９０、１９０′、２０６  ホスト交換コントローラ
１９１、１９１′  ＤＭＡ／ＸＯＲコントローラ
１９２、１９２′  コマンド・ルーティング・コントローラ
１９３、１９３′  メタデータ・コントローラ
１９４、１９４′  雑多機能コントローラ
１９５、１９６、１９５′、１９６′  ディスク交換コントローラ
１９８、１９８′  クロスポイント・スイッチ
２００、２０２、２０４、２００′、２０２′、２０４′  リスト・マネージャ
２０１、２０３、２０５、２０７、２０９、２１１、２１３、２１５  ＤＲＢ
２０８  ＣＤＣ
２１０  ＵＣＣ
２１２  メタデータ構造
２１４  記憶ディスク
２１６  ＳＢＬテーブル
２１８  ＳＢＬＤテーブル
２２０  ＳＰＢテーブル
２２２  ＳＤＢテーブル
【図１】
2009015843.tif 000017
【図２】
2009015843.tif 000018
【図３】
2009015843.tif 000019
【図４】
2009015843.tif 000020
【図５】
2009015843.tif 000021
【図６】
2009015843.tif 000022
【図７Ａ】
2009015843.tif 000023
【図７Ｂ】
2009015843.tif 000024
【図８】
2009015843.tif 000025
【図９】
2009015843.tif 000026
【図１０】
2009015843.tif 000027