(57)【要約】【課題】ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためのコントローラ及びそれを含むストレージ・システムを提供。【解決手段】コントローラは、ストレージ書き込みキャッシュ管理のためのハードウェア・アクセラレーションを実装する書き込みキャッシュ・ハードウェア・エンジンを含む。コントローラは、性能を大幅に向上させるために、ファームウェアの関与を最小限に抑えて、またはファームウェアの関与なしに、書き込みキャッシュのデータおよびメタデータを管理する。書き込みキャッシュ・ハードウェア・エンジンが、書き込みキャッシュのデータおよびメタデータを管理することが、新磁気ディスク制御機構（ＲＡＩＤ）スタック内の前記ストレージ書き込みキャッシュを提供することを含み、書き込みキャッシュがアレイＩＤ／アレイＬＢＡ（論理ブロック・アドレス）ごとに実行されるデータ・ストレージ・システムである。【選択図】図１
2018537765.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストレージ・システムであって、
ストレージ書き込みキャッシュのためのストレージ・アダプタ拡張書き込みキャッシュ管理を実装するコントローラを備え、前記コントローラが、
ストレージ書き込みキャッシュのハードウェア・アクセラレーションを実装する書き込みキャッシュ・ハードウェア・エンジンを備え、
前記書き込みキャッシュ・ハードウェア・エンジンが、ファームウェアを実質的に使用せずに書き込みキャッシュのデータおよびメタデータを管理する、データ・ストレージ・システム。
【請求項２】
前記書き込みキャッシュ・ハードウェア・エンジンが、書き込みキャッシュのデータおよびメタデータを管理することが、新磁気ディスク制御機構（ＲＡＩＤ）スタック内の前記ストレージ書き込みキャッシュを提供することを含み、書き込みキャッシュがアレイＩＤ／アレイＬＢＡ（論理ブロック・アドレス）ごとに実行される、請求項１に記載のデータ・ストレージ・システム。
【請求項３】
前記書き込みキャッシュ・ハードウェア・エンジンがＣＬ（キャッシュ・ライン）のハードウェア操作を提供する、請求項２に記載のデータ・ストレージ・システム。
【請求項４】
前記書き込みキャッシュ・ハードウェア・エンジンが、書き込み処理、読み取り処理、およびデステージ処理中にＣＬの状態を追跡するためにＣＬ（キャッシュ・ライン）定義を使用する、請求項２に記載のデータ・ストレージ・システム。
【請求項５】
前記書き込みキャッシュ・ハードウェア・エンジンが書き込みキャッシュのコントロール・ストア（ＣＳ）から書き込みキャッシュのデータ・ストア（ＤＳ）へミラーリングすることを含めて、前記書き込みキャッシュ・ハードウェア・エンジンが前記ストレージ書き込みキャッシュへの書き込みを実行する、請求項１に記載のデータ・ストレージ・システム。
【請求項６】
前記書き込みキャッシュ・ハードウェア・エンジンが書き込みキャッシュのコントロール・ストア（ＣＳ）から書き込みキャッシュのデータ・ストア（ＤＳ）へミラーリングすることが、前記コントローラにおけるローカル・ミラーリングおよび二重のコントローラへのリモート・ミラーリングを含む、請求項５に記載のデータ・ストレージ・システム。
【請求項７】
前記書き込みキャッシュ・ハードウェア・エンジンが、前記ストレージ書き込みキャッシュからの完全または部分的な読み取りヒットを含めて、前記ストレージ書き込みキャッシュからの読み取りを実行する、請求項１に記載のデータ・ストレージ・システム。
【請求項８】
前記書き込みキャッシュ・ハードウェア・エンジンがハッシュ・テーブルおよびＬＲＵ（least recently used）キューのうちの１つを使用して前記ストレージ書き込みキャッシュから検索してデステージ処理を生成することを含めて、前記書き込みキャッシュ・ハードウェア・エンジンが前記ストレージ書き込みキャッシュからのデステージを実行する、請求項６に記載のデータ・ストレージ・システム。
【請求項９】
データ・ストレージ・システムにおけるストレージ・アダプタの書き込みキャッシュ管理を実装するための方法であって、
書き込みキャッシュ・ハードウェア・エンジンを備えるコントローラを提供することと、ストレージ書き込みキャッシュのハードウェア・アクセラレーションを実装するための前記書き込みキャッシュ・ハードウェア・エンジンを提供することと、
ファームウェアを実質的に使用せずに書き込みキャッシュのデータおよびメタデータを管理するための前記書き込みキャッシュ・ハードウェア・エンジンを提供することと
を含む、方法。
【請求項１０】
新磁気ディスク制御機構（ＲＡＩＤ）スタック内の前記ストレージ書き込みキャッシュを提供することを含み、書き込みキャッシュがアレイＩＤ／アレイＬＢＡ（論理ブロック・アドレス）ごとに実行される、請求項９に記載の方法。
【請求項１１】
前記書き込みキャッシュ・ハードウェア・エンジンがＣＬ（キャッシュ・ライン）のハードウェア操作を提供することを含む、請求項９に記載の方法。
【請求項１２】
前記書き込みキャッシュ・ハードウェア・エンジンが、ＣＬ（キャッシュ・ライン）定義を使用し、書き込み処理、読み取り処理、およびデステージ処理中にＣＬの状態を追跡することを含む、請求項９に記載の方法。
【請求項１３】
前記コントローラ内で前記書き込みキャッシュ・ハードウェア・エンジンが書き込みキャッシュのコントロール・ストア（ＣＳ）から書き込みキャッシュのデータ・ストア（ＤＳ）へミラーリングすること、および二重のコントローラへリモートでミラーリングすることを含めて、前記書き込みキャッシュ・ハードウェア・エンジンが前記ストレージ書き込みキャッシュへの書き込みを実行することを含む、請求項９に記載の方法。
【請求項１４】
前記書き込みキャッシュ・ハードウェア・エンジンが、前記ストレージ書き込みキャッシュからの完全または部分的な読み取りヒットを含めて、前記ストレージ書き込みキャッシュからの読み取りを実行することを含む、請求項９に記載の方法。
【請求項１５】
前記書き込みキャッシュ・ハードウェア・エンジンが、ハッシュ・テーブルおよびＬＲＵ（least recently used）キューのうちの１つを使用して前記ストレージ書き込みキャッシュから検索してデステージ処理を生成することを含めて、前記書き込みキャッシュ・ハードウェア・エンジンが前記ストレージ書き込みキャッシュからのデステージを実行することを含む、請求項９に記載の方法。
【請求項１６】
設計工程において使用される機械可読媒体内で具現化される設計構造であって、前記設計構造が、
前記設計工程において使用される前記機械可読媒体内で有形に具現化されるコントローラ回路を備え、前記コントローラ回路がデータ・ストレージ・システムにおいてストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにあり、前記コントローラ回路が、ストレージ書き込みキャッシュのハードウェア・アクセラレーションを実装する書き込みキャッシュ・ハードウェア・エンジンを備え、
前記書き込みキャッシュ・ハードウェア・エンジンが、ファームウェアを実質的に使用せずに書き込みキャッシュのデータおよびメタデータを管理し、前記設計構造が、半導体チップの製造において読み取られて使用された場合に、前記コントローラ回路を備えるチップを製造する、設計構造。
【請求項１７】
前記設計構造が、集積回路のレイアウト・データの交換に使用されるデータ形式としてストレージ媒体上に存在する、請求項１６に記載の設計構造。
【請求項１８】
前記設計構造が、テスト・データ・ファイル、特性評価データ、検証データ、または設計仕様のうちの少なくとも１つを含んでいる、請求項１６に記載の設計構造。
【請求項１９】
前記設計構造が、前記コントローラ回路を記述するネットリストを含む、請求項１６に記載の設計構造。
【請求項２０】
前記キャッシュ・ハードウェア・エンジンが、書き込みキャッシュのデータおよびメタデータを管理することが、前記キャッシュ・ハードウェア・エンジンが、ストレージ書き込みキャッシュに書き込み、前記ストレージ書き込みキャッシュから読み込むことを含む、請求項１６に記載の設計構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ処理分野に関し、さらに詳細には、ストレージ・アダプタの拡張書き込みキャッシュ（write cache）管理を実装するための方法およびコントローラ、ならびに対象のコントローラ回路が存在する設計構造に関する。
【背景技術】
【０００２】
ストレージ・アダプタは、ホスト・コンピュータ・システムを、ハード・ディスク・ドライブ、半導体ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどのストレージＩ／Ｏ周辺機器（peripheral storage I/O devices）に接続するために使用される。現在、さまざまな高速システムの相互接続が、ホスト・コンピュータ・システムをストレージ・アダプタに接続するため、およびストレージ・アダプタを、ＰＣＩｅ（Peripheral Component Interconnect Express）、シリアル接続ＳＣＳＩ（ＳＡＳ：Serial Attach SCSI）、ファイバ・チャネル、およびインフィニバンドなどのストレージＩ／Ｏデバイスに接続するために存在する。
【０００３】
ストレージ・アダプタおよびストレージ・サブシステムは、多くの場合、性能を向上させるために書き込みキャッシュを含んでいる。この書き込みキャッシュは、通常は、例えばＦｌａｓｈ  ｂａｃｋｅｄ  ＤＲＡＭ（Flash backed DRAM）を使用した不揮発性であり、ＲＡＩＤ−５およびＲＡＩＤ−６などの新磁気ディスク制御機構（ＲＡＩＤ：redundant arrays of independent disks）によって導入されるライト・ペナルティを隠すために使用される。書き込みキャッシュは、書き込みキャッシュ内に配置された複数のホスト処理を１つのデステージ処理にまとめることによって、ストレージの性能も向上させることができ、その後、このデステージ処理は、ＲＡＩＤ層およびディスク・デバイスによって処理される。冗長性のために、書き込みキャッシュのデータおよびディレクトリまたはメタデータは、有利なことに、アダプタが故障した場合に利用される第２のアダプタまたは二重のアダプタにミラーリングされ得る。
【０００４】
ユーザ・データまたはホスト・データをキャッシュするためにストレージ・サブシステム内で使用されるフルアソシアティブ方式キャッシュまたはその他の複雑なキャッシュでは、必要なメタデータを更新してデータを書き込みキャッシュに入れるために、通常は多くのＣＰＵサイクルが必要とされる。このメタデータは、キャッシュ・ライン（ＣＬ：Cache Line）構造、高速検索用のハッシュ・テーブル、および最も古いデータを検索するためのＬＲＵ（Least Recently Used）キューを含んでいる。このメタデータは、一貫性を維持し、キャッシュ・ディレクトリの不揮発性を保ち、キャッシュから削除するデータの検索を可能にするために使用される。
【０００５】
拡張されたストレージ書き込みキャッシュ管理を実装するための効果的な方法およびコントローラに対する必要性が存在している。書き込みキャッシュ・ハードウェア・エンジン（hardware write cache engine）を含んでいるハードウェアで高速化された設計を提供するそのような方法およびコントローラを提供することに対する必要性が存在しており、この書き込みキャッシュ・ハードウェア・エンジンは、性能を大幅に向上させるために、ファームウェアの関与を最小限に抑えて、またはファームウェアの関与なしに、書き込みキャッシュのデータおよびメタデータを管理する。
【０００６】
以下の説明および特許請求の範囲において使用されるように、「コントローラ」および「コントローラ回路」という用語は、入出力（ＩＯ：input/output）アダプタ（ＩＯＡ：ＩＯ  adapter）を含むように広く理解されるべきであり、ホスト・コンピュータ・システム、およびハード・ディスク・ドライブ、半導体ドライブ、テープ・ドライブ、コンパクト・ディスク・ドライブなどのストレージＩ／Ｏ周辺機器のさまざまな配置を接続するＩＯ  ＲＡＩＤアダプタ（IO RAID adapter）を含む。
【０００７】
以下の説明および特許請求の範囲において使用されるように、「実質的にファームウェアを使用しないで」、「ファームウェアの関与を最小限に抑えて、またはファームウェアの関与なしに」という表現は、ハードウェアによって実行される処理および機能を含むように広く理解されるべきであり、ファームウェアとの間で受け渡される処理および制御を含んでよい。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の主要な態様は、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ、ならびに対象のコントローラ回路が存在する設計構造を提供することである。本発明のその他の重要な態様は、実質的に悪影響を与えずに、従来技術の配置の短所の多くを克服する、そのような方法、コントローラ、および設計構造を提供することである。
【課題を解決するための手段】
【０００９】
ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ、ならびに対象のコントローラ回路が存在する設計構造が提供される。このコントローラは、ストレージ書き込みキャッシュ管理のためのハードウェア・アクセラレーションを実装する書き込みキャッシュ・ハードウェア・エンジンを含む。このコントローラは、性能を大幅に向上させるために、ファームウェアの関与を最小限に抑えて、またはファームウェアの関与なしに、書き込みキャッシュのデータおよびメタデータを管理する。
【００１０】
本発明は、前述およびその他の目的および利点と共に、図面において示された本発明の好ましい実施形態に関する以下の詳細な説明から最も良く理解され得る。
【図面の簡単な説明】
【００１１】
【図１】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理（storage adapter enhanced write cache management）を実装するための、二重のコントローラを含むシステム例を示す概略図である。
【図２】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための、入出力（ＩＯ）アダプタを示すブロック図である。
【図３】好ましい実施形態に記載された、図１および２のストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタック（logical block address (LBA) translation RAID stack）の例を示す図であり、書き込みキャッシュが、動的層（簡易層）（Dynamic Tier (Easy Tier)）、データ・ストライピング層、およびパリティ・ストライピング（ＲＡＩＤ）層の上の、ＲＡＩＤスタック内の上位に配置されており、この位置で、アレイＩＤ／アレイＬＢＡごとにキャッシングが実行される。
【図４】好ましい実施形態に記載された、図１および２のストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタックの例を示す図である。
【図５】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換の例を含んでいるハードウェアにおいてサポートされる読み取り処理の例を示す図である。
【図６】好ましい実施形態に記載された、図１および２のストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換の例を含んでいるハードウェアにおいてサポートされる書き込み処理の例を示す図であり、書き込みキャッシュが、動的層（簡易層）、データ・ストライピング層、およびパリティ・ストライピング（ＲＡＩＤ）層の上の、ＲＡＩＤスタック内の上位に配置されている。
【図７】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換の例を含んでいるハードウェアにおいてサポートされるデステージ処理の例を示す図である。
【図８】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、コントロール・ストア（ＣＳ：control store）内のキャッシュ・ライン（ＣＬ）構造の例を示す図である。
【図９】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ：data store）への自動ミラー用のコントロール・ストア（ＣＳ）内のキャッシュ・ライン（ＣＬ）構造の例を示す図である。
【図１０】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ）内のキャッシュ・ライン（ＣＬ）構造の例を示す図である。
【図１１】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ）に対するローカルＳＡＳおよびリモートＳＡＳキャッシュ・ライン（ＣＬ）コントロール・ストア（ＣＳ）のミラーまたはＳＡＳミラー削除の例を示す図である。
【図１２】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ハードウェア内のキャッシュ・ライン（ＣＬ）状態におけるトランザクションの例を示す図である。
【図１３】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ハードウェア内のキャッシュ・ライン（ＣＬ）状態におけるトランザクションの例を示す図である。
【図１４】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ハードウェア内で同じアレイＩＤ／ＬＢＡを持っているキャッシュ・ライン（ＣＬ）チェーン（cache line (CL) chains）の例を示す図である。
【図１５】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ハードウェア内で同じアレイＩＤ／ＬＢＡを持っているキャッシュ・ライン（ＣＬ）チェーンの例を示す図である。
【図１６】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込み、非最適化または一時的書き込み（non-optimized or provisional writes）、読み取り、およびデステージ処理のためのハードウェア・エンジンにおける制御ブロック（ＣＢ：control block）に基づく処理のチェーンの例を示す図である。
【図１７】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込み、非最適化または一時的書き込み、読み取り、およびデステージ処理のためのハードウェア・エンジンにおける制御ブロック（ＣＢ）に基づく処理のチェーンの例を示す図である。
【図１８】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込み、非最適化または一時的書き込み、読み取り、およびデステージ処理のためのハードウェア・エンジンにおける制御ブロック（ＣＢ）に基づく処理のチェーンの例を示す図である。
【図１９】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込み、非最適化または一時的書き込み、読み取り、およびデステージ処理のためのハードウェア・エンジンにおける制御ブロック（ＣＢ）に基づく処理のチェーンの例を示す図である。
【図２０】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込みプロセスの処理の例を示すフロー・チャートである。
【図２１】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、オーバーレイを伴う高速書き込みでのＸＯＲマージの例を示す図である。
【図２２】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、読み取りプロセスの処理の例を示すフロー・チャートである。
【図２３】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、デステージ構築プロセス（destage build process）の処理の例を示すフロー・チャートである。
【図２４】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、１つのデステージ・プロセスの処理の例を示すフロー・チャートである。
【図２５】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、複数のデステージ・プロセスの処理の例を示すフロー・チャートである。
【図２６】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、バイパス・プロセスの処理の例を示すフロー・チャートである。
【図２７】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、レジスタに基づくパージ・ハードウェア支援ツール・キット（register based purge hardware assist tool kit）の例を示す図である。
【図２８】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、パージ・エンジン・プロセス（purge engine process）の処理の例を示すフロー・チャートである。
【図２９】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、パージ・エンジン・プロセスの処理の例を示すフロー・チャートである。
【図３０】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ハードウェア・カウンタおよび統計情報の例を示す図である。
【図３１】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ＣＬの制限およびしきい値の例を示す図である。
【図３２】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、ＣＬの制限およびしきい値の例を示す図である。
【図３３】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、全体的イベント処理（global event processing）の処理の例を示すフロー・チャートである。
【図３４】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、アレイごとの処理のステップの例を示すフロー・チャートである。
【図３５】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、全体的トリガおよびアレイごとのトリガ（global triggers and per array triggers）の例を示す図である。
【図３６】好ましい実施形態に記載された、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、全体的トリガおよびアレイごとのトリガの例を示す図である。
【図３７】半導体の設計、製造、またはテスト、あるいはその組み合わせにおいて使用される設計工程のフロー図である。
【発明を実施するための形態】
【００１２】
本発明の実施形態の以下の詳細な説明では、実施形態例を示す添付の図面への参照が行われ、それらの実施形態によって本発明が実践されてよい。本発明の範囲を逸脱することなくその他の実施形態が利用されてよく、構造的変更が行われてよいということが理解されるべきである。
【００１３】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図していない。本明細書で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、処理、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、処理、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【００１４】
本発明の特徴に従って、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ、ならびに対象のコントローラ回路が存在する設計構造が提供される。本発明の方法およびコントローラは、書き込みキャッシュを管理し、キャッシュ・ディレクトリの実質的にアトミックな更新を提供する書き込みキャッシュ・ハードウェア・エンジンを含む。ファームウェアを使用せずに書き込みキャッシュ・ハードウェア・エンジンを使用し、ハードウェア・エンジンを一緒に連結して、書き込みキャッシュへの書き込みおよび書き込みキャッシュからの読み取りの両方が実行される。
【００１５】
ここで図面を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するために、図１は、参照文字１００によって全体的に示された二重のコントローラを含むシステム例を示しており、図２は、参照文字１０２によって全体的に示された入出力（ＩＯ）アダプタを示している。システム１００は、第１の入出力アダプタ（ＩＯＡ）またはコントローラ１０２（ＩＯＡ  ＃１）および第２の入出力アダプタ（ＩＯＡ）またはコントローラ１０２（ＩＯＡ  ＃２）を含んでおり、書き込みキャッシュのデータおよびディレクトリまたはメタデータが二重のＩＯＡにミラーリングされ、アダプタが故障した場合に、この二重のＩＯＡが利用され得る。システム１００はホスト・システム１０４を含んでおり、ＩＯＡ  ＃１および＃２（コントローラ１０２）が、ＰＣＩＥ（Peripheral Component Interconnect Express）バスを介してホスト・システム１０４に直接結合されるか、または必要に応じて、ＰＣＩＥスイッチ１０６を介してホスト・システム１０４に結合される。システム１００は、例えば新磁気ディスク制御機構（ＲＡＩＤ）を含んでいる、ハード・ディスク・ドライブ（ＨＤＤ）または回転ドライブ１０８および半導体ドライブ（ＳＳＤ：solid state drives）１０８などの複数のストレージ・デバイス１０８を含んでおり、これらのストレージ・デバイス１０８は、必要に応じて、各エキスパンダ１１０によって、ＩＯＡ  ＃１および＃２（コントローラ１０２）間のＳＡＳ接続を含む１つまたは複数のシリアル接続ＳＣＳＩ（ＳＡＳ）接続を介して、ＩＯＡ  ＃１および＃２（コントローラ１０２）に結合される。
【００１６】
図２では、好ましい実施形態に従って、データ・ストレージ・システム１００内のＩＯＡ  ＃１および＃２（コントローラ１０２）それぞれのコンポーネントの例がさらに示されている。コントローラ１０２は、１つまたは複数のプロセッサまたは中央処理装置（ＣＰＵ：central processor units）１２０、データ・ストア（ＤＳ）１２４およびコントロール・ストア（ＣＳ）１２６（ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：dynamic random access memory）など）を少なくとも含んでいる書き込みキャッシュ１２２を含んでいる。コントローラ１０２は、フラッシュ・メモリ１２８および不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ：non-volatile random access memory）１３０を含んでいる。
【００１７】
コントローラ１０２は、好ましい実施形態に従って、書き込みキャッシュ・エンジン１３２を含んでいる。コントローラ１０２は、ＰＣＩＥバスを介してホスト・システムに接続されたＰＣＩＥ（Peripheral Component Interconnect Express）インターフェイス１３４および複数のストレージ・デバイス１０８それぞれに接続されたシリアル接続ＳＣＳＩ制御（ＳＡＳ  ＣＴＲＬ：Serial Attach SCSI control）１３６を含んでいる。
【００１８】
ＩＯＡ  ＃１および＃２（コントローラ１０２）ならびに書き込みキャッシュ・エンジン１３２は、例えば、ファームウェアを使用しないで書き込みキャッシュへの書き込みまたはオーバーレイを伴う書き込み（write-with-overlay）を実行するためのハードウェア・エンジンを一緒に連結する方法を実装するため、およびファームウェアを使用しないで書き込みキャッシュからの読み取りを実行するためのハードウェア・エンジンを一緒に連結する方法を実装するために、複数のハードウェア・エンジンを含んでいる。
【００１９】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ファームウェアを使用しないで書き込みキャッシュへの書き込みまたはオーバーレイを伴う書き込みを実行するために、異なるハードウェア・エンジンを使用して処理のチェーンを生成する。コントローラ１０２および書き込みキャッシュ・エンジン１３２は、不揮発性（ＮＶ：nonvolatile）バッファを割り当てるステップと、ホストからのデータにダイレクト・メモリ・アクセスするためのダイレクト・メモリ・アクセス（ＤＭＡ：direct memory access）のステップと、キャッシュ・ライン（ＣＬ）状態を更新しながらキャッシュ内の既存のデータがオーバーレイされた可能性があるかどうかを決定するステップと、書き込み処理の開始時および終了時に非４Ｋデータをマージするステップと、ローカルＮＶメモリおよびリモートＮＶメモリ内のＣＬも更新しながらリモート・アダプタへのデータにダイレクト・メモリ・アクセスするステップと、ローカルＮＶメモリおよびリモートＮＶメモリ内のオーバーレイされたデータのＣＬを消去するステップと、ＣＬ状態を最終的に更新するステップと、すべてのオーバーレイされたデータのＮＶバッファの割り当てを解除するステップと、ホスト・コマンドに対する応答を送信するステップとを実行することによって、この方法を実施する。
【００２０】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ファームウェアを使用しないで書き込みキャッシュからの読み取りを実行するために、異なるハードウェア・エンジンを使用して処理のチェーンを生成する。コントローラ１０２および書き込みキャッシュ・エンジン１３２は、揮発性バッファ（Vol buffers）を割り当てるステップと、書き込みキャッシュ内の読み取りヒットを検索するステップと、ホストへのデータにダイレクト・メモリ・アクセスするステップと、揮発性バッファの割り当てを解除するステップと、ＣＬ状態を最終的に更新するステップと、キャッシュから同時にデステージされた読み取られているすべてのデータのＮＶバッファの割り当てを解除するステップと、ホスト・コマンドに対する応答を送信するステップとを実行することによって、この方法を実施する。
【００２１】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ファームウェアを使用しないで書き込みキャッシュからの部分的読み取りヒット（partial read hit）を実行するために、異なるハードウェア・エンジンを使用して処理のチェーンを生成する。コントローラ１０２および書き込みキャッシュ・エンジン１３２は、揮発性バッファを割り当てるステップと、書き込みキャッシュ内の読み取りヒットを検索するステップと、部分的読み取りヒットに関するＨＤＤ／ＳＳＤからのデータを読み取る／マージするステップと、ホストへのデータにダイレクト・メモリ・アクセスするステップと、揮発性バッファの割り当てを解除するステップと、ＣＬ状態を最終的に更新するステップと、キャッシュから同時にデステージされた読み取られているすべてのデータのＮＶバッファの割り当てを解除するステップと、ホスト・コマンドに対する応答を送信するステップとを実行することによって、この方法を実施する。
【００２２】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、最小限のファームウェアを使用して書き込みキャッシュからのデステージ処理を実行するために、異なるハードウェア・エンジンを使用して処理のチェーンを生成する。コントローラ１０２および書き込みキャッシュ・エンジン１３２は、ＬＲＵまたは指定されたアレイＬＢＡのいずれかで開始するため、および要求された最大サイズ／範囲または２５６Ｋストライプ境界（256K stripe boundary）の終端のいずれかで停止するためのオプションを含むデステージ処理を生成するのを支援する。
【００２３】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ホストの読み取りおよびキャッシュのデステージが同じＣＬに対して同時に発生することを許可する一連のポリシーを実装する。発生する衝突はキューに入れられ、ハードウェアによってディスパッチされる。
【００２４】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、同じアレイ論理ブロック・アドレス（ＬＢＡ：array logical block address）に関して、キャッシュ内の古いデータと新しいデータの保証された正しい識別を可能にするために、（ＣＬ）内の処理構築番号またはシーケンス番号を使用する。
【００２５】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、書き込み、読み取り、およびデステージ処理のためのＣＬの更新の完了または取り消しにおいて使用するために、ハードウェアのターン・オフを実装する。
【００２６】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、キャッシュからパージされるアレイＬＢＡの範囲に関してＣＬを識別して更新するために使用される固有のハードウェア・エンジンを実装する。
【００２７】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、例えばオーバーレイを伴う高速書き込みに関して、ＸＯＲ（排他的ＯＲ）マージ機能を実装する。
【００２８】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、キャッシュのデステージ・レート（destage rate）を動的に最適化し、キャッシュ内のデータのしきい値および制限の設定をアレイごとに調整するために、ハードウェアによって提供された入力（レジスタ）および出力（レジスタおよびイベント）を使用してファームウェアを支援して、トリガに基づく方法を実施する。
【００２９】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ファームウェアの関与を最小限に抑えて、またはファームウェアの関与なしに、書き込みキャッシュのデータおよびメタデータ（ディレクトリ）を管理して性能を大幅に向上させる、ハードウェアで高速化された設計の高レベルのフレームワークを実装する。
【００３０】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ＣＬ（キャッシュ・ライン）のハードウェア操作、ハッシュ・テーブル、およびアレイごとのＬＲＵキューを提供する。これは、これらの構造に対する更新が、変更されないままであるか、またはハードウェア・エンジンが実行されるたびに完全に更新されるかのいずれかであるように、疑似アトミック方式（pseudo atomic fashion）で実行される。変更中のすべてのエントリは、例えば、キャッシュにチェックアウトされ、１回または複数回変更された後、成功した場合、バースト方式でチェックインされる。アダプタの故障が発生した場合にのみ、ＣＬが不揮発性に保たれ、ＣＬのサブセットを変更することが可能になる。
【００３１】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、次の状態を追跡できるようにするＣＬ定義を含む。オーバーレイ処理を伴う書き込み中の、オーバーレイ進行中（ＯＩＰ：Overlay In Progress）、読み取り処理中の、読み取り進行中（ＲＩＰ：Read In Progress）、デステージ処理中の、デステージ進行中（ＤＩＰ：Destage In Progress）。ＲＩＰおよびＤＩＰは、衝突を最小限に抑えることが同時に許容され、このことは、従来の設計では不可能である。
【００３２】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、書き込み、非最適化または一時的書き込み、読み取り、およびデステージ処理を実装して性能を向上させる。
【００３３】
ここで図３および４を参照すると、コントローラ１０２は、ストレージ・アダプタ拡張書き込みキャッシュ管理を実装するために、図３に示されているように、参照文字２００によって全体的に指定された論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタックの例を実装する。図４は、参照文字２２０によって全体的に指定された、ボリューム・セット（Ｖｓｅｔ）（すなわち、ホストによって読み取られ、書き込まれることが可能な論理デバイス）を使用したホストＬＢＡ変換を示している。
【００３４】
図３において、コントローラ１０２は、ＩＢＭ  ｉオペレーティング・システムで使用されるホストＬＢＡおよびＡＦＤＡＳＤ（Advanced Function DASD）変換（host LBA and AFDASD (Advanced Function DASD) translation）２０２を実装する。ＡＦＤＡＳＤは、ＩＢＭ  ｉオペレーティング・システムによって読み取られ、書き込まれることがあるＲＡＩＤ対応の物理デバイスを表している。ホストＬＢＡおよびＡＦＤＡＳＤ変換２０２は、ブロック２０４でＡＦＤＡＳＤからアレイへ（または、データ・ストライピングの逆変換）から開始し、２０６でアレイＬＢＡおよびアレイＩＤを提供し、読み取り／書き込みキャッシュ２０８が、２１０でアレイＬＢＡおよびアレイＩＤを提供する。読み取り／書き込みキャッシュ２０８は、ＲＡＩＤスタック２００内で上位に配置され、（ＲＡＩＤ）層の、論理デバイスのＬＢＡおよびＬＤＮ（論理デバイス番号）２１４を提供するデータ・ストライピング２１２、ならびに物理デバイスのＬＢＡおよびＬＤＮ２１８を提供するパリティ・ストライピング２１６よりも上にあり、キャッシングが、好ましい実施形態に従って、アレイＩＤ／アレイＬＢＡごとに実行される。論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタック２００は、書き込みキャッシュを動的層およびデータ・ストライピングの下に配置してキャッシングをデバイスＬＢＡごとに実行していた従来の設計よりも、複雑さを低減し、遅延を減らす。
【００３５】
図４は、ＡＩＸ（Advanced Interactive eXecutive）、Ｕｎｉｘ（Ｒ）、Ｌｉｎｕｓ、およびその他の一般的なオペレーティング・システムで使用されるＶＳｅｔ２２２を使用したホストＬＢＡ変換のＲＡＩＤスタック２２０を示しており、ＶＳｅｔからアレイへ２２４から開始して、２２６でアレイＬＢＡおよびアレイＩＤを提供し、読み取り／書き込みキャッシュ２２８が、２３０でアレイＬＢＡおよびアレイＩＤを提供する。ＲＡＩＤスタック２２０は、２３４で再マッピングされたアレイＬＢＡ／ＩＤを提供する動的層または簡易層の再マッピング２３２を含み、その後に、論理デバイスのＬＢＡおよびＬＤＮ（論理デバイス番号）２１４を提供するデータ・ストライピング２１２、および物理デバイスのＬＢＡおよびＬＤＮ２１８を提供するパリティ・ストライピング２１６の共通コード（ＲＡＩＤ）層（common code (RAID) layers）が続く。
【００３６】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、通常はファームウェアの関与なしに、書き込みキャッシュからの完全または部分的な読み取りヒットを実行する書き込みキャッシュに対する自動読み取り、またはストレージ・デバイス１０８にまで達する自動読み取りを実装する。
【００３７】
図５、６、および７を参照すると、読み取り処理、書き込み処理、およびデステージ処理の例が示されており、ブロックの隅に点があるブロックは、そのブロックにおいてハードウェアＨＷが、処理を実行するための制御をファームウェアＦＷに渡すことを示している。
【００３８】
ここで図５を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタックの各例を含んでいるハードウェアにおいてサポートされる読み取り処理の例が、参照文字３００によって全体的に指定されて、示されている。ホストＬＢＡおよびＡＦＤＡＳＤ  ＲＡＩＤスタックに関して、読み取りＬＢＡ長がブロック３０２、３０４に示されており、スキップ・マスクがブロック３０６、３０８に示されている。ＡＦＤＡＳＤからアレイへ（またはデータ・ストライピングの逆変換）ブロック３１０は、図に示されているように、書き込み／読み取りキャッシュ３２８に適用されるデータ・ストライプ・ブロック３１２、３１４、３１６、３１８、３２０、３２２、３２４、３２６を提供する。ホストＬＢＡおよびＶＳｅｔ  ＲＡＩＤスタックに関して、読み取りＬＢＡ長がブロック３３０、３３２に示されており、スキップ・マスクがブロック３３４、３３６に示されており、３２ビットを超えるＬＢＡがブロック３３８に示されている。ＶＳｅｔからアレイへブロック３４０は、書き込み／読み取りキャッシュ３２８に適用される、オフセットなしブロック（no offset block）３４２、非ゼロ・オフセット・ブロック（non-zero offset block）３４４、ＶＳｅｔの末尾超過ブロック（past end of Vset block）３４６、および２５６Ｋ未満の長さのブロック（less than 256K length block）３４８を提供する。図に示されているように、書き込み／読み取りキャッシュ３２８は、完全なヒット（４Ｋアライメントされる（4K aligned））３５０、完全なヒット（スキップ）３５２、完全なヒット（先頭および末尾が４Ｋアライメントされない）３５４、完全なヒット（先頭が４Ｋアライメントされない）３５６、および完全なヒット（末尾が４Ｋアライメントされない）３５８を提供する。図に示されているように、書き込み／読み取りキャッシュ３２８は、ヒットなし（４Ｋアライメントされる）３６０、ヒットなし（スキップ）３６２、ヒットなし（先頭および末尾が４Ｋアライメントされない）３６４、ヒットなし（先頭が４Ｋアライメントされない）３６６、およびヒットなし（末尾が４Ｋアライメントされない）３６８を提供する。図に示されているように、書き込み／読み取りキャッシュ３２８は、部分的ヒット（４Ｋアライメントされる）３７０、部分的ヒット（スキップ）３７２、部分的ヒット（先頭および末尾が４Ｋアライメントされない）３７４、部分的ヒット（先頭が４Ｋアライメントされない）３７６、および部分的ヒット（末尾が４Ｋアライメントされない）３７８を提供する。
【００３９】
図に示されているように、書き込み／読み取りキャッシュ３２８は、例外状況に対応するために、ブロック３８０で読み取り進行中（ＲＩＰ）、ミラー進行中（ＭＩＰ：mirror in progress）、およびオーバーレイ進行中（ＯＩＰ）を提供し、ブロック３８２で６５個のキャッシュ・ライン（ＣＬ）を提供し、ブロック３８４で４Ｋ  ＣＬ未満の部分的ヒットを提供し、ブロック３８６で部分的ヒットのチキン・スイッチ（partial hit chicken switch）を提供する。ブロック３８７で「キャッシュなし」、ブロック３８８で「動的層なし」と示されているように、読み取りは、図に示されたデータ・ストライプ・ブロック３１２、３１４、３１６、３１８、３２０、３２２、３２４、３２６、３２７、および３２９を提供するデータ・ストライピング・ブロック３８９に進む。データ・ストライピング・ブロック３８９に進まない場合、動的層ブロック３９０は、ブロック３９１でスワップなし、ブロック３９２でスワップ（同じ冗長グループ（ＲＧ：Redundancy Group））、ブロック３９３でスワップなし（異なるＲＧ）、ブロック３９４でスワップ進行中、またはブロック３９５でクロス・バンド（cross band）、あるいはその組み合わせを提供する。データ・ストライピング・ブロック３８９は、ブロック３９６でクロス・サブアレイ（cross sub-array）、またはブロック３９８で公開済みドライブのヒット、あるいはその両方を提供する。
【００４０】
本発明の特徴に従って、書き込みキャッシュ・エンジン１３２を含んでいるストレージ・アダプタ拡張書き込みキャッシュ管理を実装するための方法およびコントローラ１０２は、ＨＷにおいてサポートされる自動書き込み処理を実装し、このハードウェアは、通常はファームウェアの関与なしに、書き込みキャッシュへの書き込みまたはオーバーレイを伴う書き込みを実行するために、異なる制御ブロックまたはハードウェア・エンジンを使用して処理のチェーンを生成する。
【００４１】
ここで図６を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換ＲＡＩＤスタックの各例を含んでいるハードウェアにおいてサポートされる書き込み処理の例が、参照文字４００によって全体的に指定されて、示されている。ホストＬＢＡおよびＡＦＤＡＳＤ  ＲＡＩＤスタックに関して、書き込みＬＢＡ長がブロック４０２、４０４に示されており、スキップ・マスクがブロック４０６、４０８に示されている。ＡＦＤＡＳＤからアレイへ（またはデータ・ストライピングの逆変換）ブロック４１０は、図に示されているように、書き込み／読み取りキャッシュ４１５に適用されるデータ・ストライプ・ブロック４１２、４１４を提供する。ホストＬＢＡおよびＶＳｅｔ  ＲＡＩＤスタックの場合、読み取りＬＢＡ長がブロック４１６、４１８に示されており、スキップ・マスクがブロック４２０、４２２に示されており、３２ビットを超えるＬＢＡがブロック４２４に示されている。ＶＳｅｔからアレイへブロック４２６は、書き込み／読み取りキャッシュ４１５に適用される、オフセットなしブロック４２８、４３０、非ゼロ・オフセット・ブロック４３２、ＶＳｅｔの末尾超過ブロック４３２、および２５６Ｋを超える長さのブロック４３４を提供する。図に示されているように、書き込み／読み取りキャッシュ４１５は、高速書き込み（４Ｋアライメントされる）４３８、高速書き込み（スキップ）４４０、高速書き込み（先頭および末尾が４Ｋアライメントされない）４４２、高速書き込み（先頭が４Ｋアライメントされない）４４４、高速書き込み（末尾が４Ｋアライメントされない）４４６を提供する。図に示されているように、書き込み／読み取りキャッシュ４１５は、オーバーレイ（Ｏｖ：overlay）を伴う高速書き込み（ＦＷ：fast write）（４Ｋアライメントされる）４４８、オーバーレイ（Ｏｖ）を伴う高速書き込み（ＦＷ）（スキップ）４５０、オーバーレイ（Ｏｖ）を伴う高速書き込み（ＦＷ）（先頭および末尾が４Ｋアライメントされない）４５２、オーバーレイ（Ｏｖ）を伴う高速書き込み（ＦＷ）（先頭が４Ｋアライメントされない）４５４、オーバーレイ（Ｏｖ）を伴う高速書き込み（ＦＷ）（末尾が４Ｋアライメントされない）４５６を提供する。図に示されているように、書き込み／読み取りキャッシュ４１５は、ブロック４５８で、読み取り進行中（ＲＩＰ）、ミラー進行中（ＭＩＰ）、およびオーバーレイ進行中（ＯＩＰ）を提供する。ブロック４６０で「キャッシュなし」、ブロック４６２で「動的層なし」、ブロック４６４で「非単一ドライブＲＡＩＤ−０」と示されているように、書き込みは、データＲ０−１ストライプ・ブロック４６８を提供するデータ・ストライピング・ブロック４６６に進む。
【００４２】
ここで図７を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、図３および４の論理ブロック・アドレス（ＬＢＡ）変換の例を含んでいるハードウェアにおいてサポートされるデステージ処理の例が、参照文字５００によって全体的に指定されて、示されている。ブロック５０２で示されているように、デステージ検索は、ＬＲＵ（アレイ内で使用されるリンク・リスト）またはアレイ・オフセット（アレイＬＢＡ）のいずれかで開始し、デステージ検索は、要求された最大サイズまたは範囲、あるいは２５６Ｋストライプ境界（６４ＣＬ）の末尾のいずれかで終了する。ＤＩＰ、ＭＩＰ、またはＯＩＰが設定されたＣＬは注目されるが、そうでないＣＬは無視される。ブロック５０４に示されているように、デステージ処理は、二重のコントローラ（１０２）あり、またはなしで提供される。読み取り処理３００および書き込み処理４００とは異なり、ハードウェア処理のチェーンを生成してデステージ全体を実行するために、ファームウェアが使用される。これは、多くの異なるＲＡＩＤレベルのサポートおよびその他の複雑さに起因するデステージの変形の数が、ファームウェアの支援なしでハードウェアが処理できないほど多いため、実行される。書き込み／読み取りキャッシュ５０５は、４Ｋ  ＬＢＡ／長ブロック（4K LBA/length block）５０６および３２ビットを超えるＬＢＡブロック５０８と共に示されている。デステージ処理は、デステージ（４Ｋアライメントされる）５１０、デステージ（スキップ）５１２、デステージ（先頭および末尾が４Ｋアライメントされない）５１４、デステージ（先頭が４Ｋアライメントされない）５１６、およびデステージ（末尾が４Ｋアライメントされない）５１８を含んでいる。動的層の再マッピング・ブロック５２０は、ブロック５２２でスワップなし、ブロック５２４でスワップ（同じＲＧ）、ブロック５２６でスワップ（異なるＲＧ）、ブロック５２８でスワップ進行中、またはブロック５３０でクロス・バンド、あるいはその組み合わせを提供する。ブロック５３２で「動的層なし」と示されているように、デステージは、図に示されたデータ・ストライプ・ブロック５３６、５３８、５４０、５４２、５４４、５４６、５４８、５５０、５５２、５５４を提供するデータ・ストライピング・ブロック５３４に進む。データ・ストライピング・ブロック５３４は、ブロック５５６でクロス・サブアレイ、またはブロック５５８で公開済みドライブのヒット、あるいはその両方を提供する。
【００４３】
ここで図８を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、コントロール・ストア（ＣＳ）内のキャッシュ・ライン（ＣＬ）構造の例が、参照文字６００によって全体的に指定されて、示されている。キャッシュ・ライン（ＣＬ）構造６００は、次のようなＣＳ状態定義を含むバイト０〜７を含んでいる。
７＝割り当て済みＣＬ。割り当てエンジンによって設定される。
６＝局所性ビット（Locality bit）
５＝ＰＩＰ（パージ進行中）。ＣＬにパージのマークが付けられたときにオンになり、カウンタをインクリメントする（割り当て解除時にカウンタをデクリメントする）。
４＝ＭＩＰ（ミラー進行中）。ＨＡＳＨ内、ＬＲＵ内。
３＝ＨＡＳＨリンク有効（ＬＲＵ内であってもなくてもよい）
２＝ＲＩＰ（読み取り進行中）。ＬＲＵ内であってもなくてもよい。
１＝ＤＩＰ（デステージ進行中）。ＬＲＵ内ではない。
０＝ＯＩＰ（ミラー後のオーバーレイ削除、マスク・マージの結合進行中（Combine Mask Merge in progress））。ＬＲＵ内ではない。
【００４４】
ＣＬ状態定義は、次の状態の追跡を可能にする。データ／ディレクトリをローカル／リモートＮＶメモリへミラーリングしているときに書き込み処理中の、ミラー進行中（ＭＩＰ）、オーバーレイ処理を伴う書き込み中の、オーバーレイ進行中（ＯＩＰ）、読み取り処理中の、読み取り進行中（ＲＩＰ）、デステージ処理中の、デステージ進行中（ＤＩＰ）。処理（ＯＰ：operation）構築番号（operation (OP) build number）は、キャッシュ・エントリごとにインクリメントされる。ＬＲＵのＣＳアドレス上方ポインタ（CS address Up pointer）（下位６ビット＝０）、およびＬＲＵのＣＳアドレス下方（または次）ポインタ（CS address Down or next pointer）（下位６ビット＝０）。ハッシュのＣＳアドレス前ポインタ（CS address previous pointer）（下位６ビット＝０）、およびハッシュのＣＳアドレス次ポインタ（下位６ビット＝０）。キャッシュ・ライン（ＣＬ）構造６００は、圧縮インデックス値を含む。
【００４５】
最初の１つのＮＶ割り当て処理の後に、すべてのＣＬに対して局所性ビットが設定され、カウンタがインクリメントされる。このカウンタは、ＮＶ割り当て解除時に、局所性ビットが設定されたすべてのＣＬに対してデクリメントされる。このカウンタは、デステージ処理を開始する前に書き込みキャッシュにどの程度書き込むことが許容されるかを決定するときに、ＦＷによって使用される。大きい局所性カウント（Locality count）は、より多く書き込まれたＷＣを許容する。
【００４６】
ここで図９を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ）への自動ミラー用のコントロール・ストア（ＣＳ）内のキャッシュ・ライン（ＣＬ）構造の例が、参照文字７００によって全体的に指定されて、示されている。データ・ストア（ＤＳ）への自動ミラー７００用のコントロール・ストア（ＣＳ）内のキャッシュ・ライン（ＣＬ）構造は、アレイＩＤ、マスク、６Ｂアレイ・オフセット、０ｘ８０またはＣ０、処理（ＯＰ）構築番号、および圧縮インデックス値を含む。
【００４７】
ここで図１０を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ）内のキャッシュ・ライン（ＣＬ）構造の例が、参照文字８００によって全体的に指定されて、示されている。図に示されているように、ＤＳ８００内のＣＬは、ＣＬが有効である（すなわち、割り当てられている）ことを識別するために必要な最小限の情報、データのアレイＩＤおよびＬＢＡ、処理構築番号、および圧縮関連の情報を含んでいる。
【００４８】
ここで図１１を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、データ・ストア（ＤＳ）に対するローカルＳＡＳおよびリモートＳＡＳキャッシュ・ライン（ＣＬ）コントロール・ストア（ＣＳ）のミラーまたはＳＡＳミラー削除の例が、参照文字９００によって全体的に指定されて、示されている。ローカルＳＡＳキャッシュ・ライン（ＣＬ）コントロール・ストア（ＣＳ）９０２は、ローカル・データストアＤＳへのローカルＳＡＳミラーまたはＳＡＳミラー削除パス９０４を含んでいる。ＳＡＳ相互接続９０８は、リモートＳＡＳキャッシュ・ライン（ＣＬ）コントロール・ストア（ＣＳ）９１０およびリモート・データ・ストアＤＳ９１２に提供される。リモートＳＡＳミラーまたはＳＡＳミラー削除パス９１４は、ローカルＣＳ９０２からリモート・データ・ストアＤＳ９１２に提供される。
【００４９】
ここで図１２および１３を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ハードウェア内のキャッシュ・ライン（ＣＬ）状態におけるトランザクションの例が、参照文字１０００によって全体的に指定されて、示されている。キャッシュ・ラインＣＬ状態トランザクション（Cache line CL state transactions）１０００は、フリー・プール（Free Pool）１００２、割り当て済み１００４、ＨＡＳＨおよびＬＲＵが有効なミラー１００６、ならびにＨＡＳＨリストおよびＬＲＵリストが有効なアイドル１００８を含んでいる。フリー・プール１００２、割り当て済み１００４、ミラー１００６、およびアイドル１００８はそれぞれ、図に示されているように、７＝割り当て済みＣＬ（割り当てエンジンによって設定される）、６＝局所性ビット、５＝パージ状態、４＝ＭＩＰ、３＝ＨＡＳＨリンク有効、２＝ＲＩＰ、１＝ＤＩＰ、および０＝ＯＩＰのＣＬ状態を含んでいる。キャッシュ・ラインＣＬ状態トランザクション１０００は、ＨＡＳＨＶおよびＯＩＰおよびＬＲＵ＝ＮＵＬＬ１０１０、ＨＡＳＨＶおよびＤＩＰおよびＬＲＵ＝ＮＵＬＬ１０１２、ＨＡＳＨＶおよびＤＩＰおよびＬＲＵ＝有効１０１４、ＨＡＳＨＶおよびＲＩＰおよびＤＩＰおよびＬＲＵ＝ＮＵＬＬ１０１６、ならびにＲＩＰおよびＬＲＵ／ＨＡＳＨ＝ＮＵＬＬ１０１８を含んでいる。１０２０のラベル付きのラインの下のＨＡＳＨＶ、ＲＩＰ、ＤＩＰ、ＯＩＰは、設定される場合にのみ示されている。
【００５０】
図１２内の各ＣＬ状態トランザクションのライン１Ａ〜９Ｂと共に図１３も参照すると、キャッシュ・ラインＣＬ状態トランザクション１０００は１０２２でインストールを含んでおり、１０２２は、１Ｂが設定されたＭＩＰ／ＲＩＰ／ＤＩＰ／ＯＩＰを検出した場合にこの制御ブロック（ＣＢ）をループすることを含む。ライン１Ａに示されているように、ページ・リストが読み取られ、ＣＬごとに、ＬＲＵおよびＨＡＳＨへの追加と共に、ＭＩＰおよびＨＡＳＨＶがオンにされる。ライン１Ｂに示されているように、同じアレイＩＤおよびアレイ・オフセットに関して、ＨＡＳＨ内で次のＣＬを検索し、検出したＣＬごとに、ＯＩＰをオンにし、ＬＲＵから削除し、ＳＡＳ削除ＣＬミラー・ページ・リスト（SAS delete CL mirror page list）に入れる。１０２４に示されているように、ＭＩＰおよびＯＩＰをオフにする。ライン２Ａに示されているように、ページ・リストを読み取り、ＣＬごとにＭＩＰをオフにする。ライン２Ｂに示されているように、ＯＩＰが設定されていて、同じアレイＩＤおよびアレイ・オフセットである場合、次のＣＬを読み取り、検出したＣＬごとに、ＯＩＰをオフにし、ＨＡＳＨＶをオフにし、ＨＡＳＨから削除し、割り当て解除ページ・リスト（Deallocate Page List）に入れる。
【００５１】
１０２６に示されているように、インストールを取り消す。ライン３Ａに示されているように、ページ・リストを読み取り、ＣＬごとに、ＭＩＰをオフにし、ＨＡＳＨＶをオフにし、ＨＡＳＨから削除する。ライン３Ｂに示されているように、次のＣＬを読み取り、ＯＩＰをオフにし、パージをオフにし、再びＬＲＵに追加する。１０２８に示されているように、「４」がＭＩＰ／ＲＩＰ／ＯＩＰを検出した場合、このＣＢからＷＱへの検索ループを読み取る。ライン４に示されているように、一致するアレイＩＤおよびアレイ・オフセットに関してＨＡＳＨを検索し、検出したＣＬごとに、ＲＩＰをオンにし、組み合わせＨＤＭＡ２ｈページ・リスト（combo HDMA2h Page List）に入れ、検出しなかった場合、ボリューム・インデックス（volume Index）を組み合わせページ・リスト（Combo Page List）に書き込む。
【００５２】
１０３０に示されているように、ＲＩＰをオフにし、組み合わせページ・リストを読み取り、スキップ・マスクを使用する。ライン５Ａに示されているように、ＨＡＳＨＶがオンである検出したＣＬごとに、ＲＩＰをオフにする。ライン５Ｂに示されているように、ＨＡＳＨＶがオフである検出したＣＬごとに、ＲＩＰをオフにし、割り当て解除ページ・リストに入れる。１０３２に示されているように、デステージし、ＤＩＰ／ＭＩＰ／ＯＩＰを無視する。ライン６に示されているように、アレイ・オフセットの２５６ＫＢの範囲に関してＨＡＳＨを検索し、検出したＣＬごとに、ＤＩＰをオンにし、ＬＲＵから削除し、ページ・リストに入れる。１０３４に示されているように、ＤＩＰをオフにし、ページ・リストを読み取る。ライン７Ａに示されているように、ＲＩＰがオフである検出したＣＬごとに、ＤＩＰをオフにし、ＨＡＳＨＶをオフにし、ＨＡＳＨから削除し、割り当て解除ページ・リストに入れる。ライン７Ｂに示されているように、ＲＩＰがオンである検出したＣＬごとに、ＤＩＰをオフにし、ＨＡＳＨＶをオフにし、ＨＡＳＨから削除する。
【００５３】
１０３６に示されているように、デステージを取り消す。ライン８に示されているように、ページ・リストを読み取り、ＤＩＰをオフにし、パージ状態をオフにし、再びＬＲＵに追加する。１０３８に示されているように、パージし、ＭＩＰまたは割り当て＝０または４：０＝０、あるいはパージ状態＝１であるかどうかを無視する。ライン９Ａに示されているように、ＯＩＰ／ＤＩＰがオフかつＨＡＳＨＶがオンである検出したＣＬごとに、パージ状態をオンにし、ＤＩＰをオンにし、ＬＲＵから削除し、割り当て解除ページ・リストに入れる。ライン９Ｂに示されているように、ＯＩＰ／ＤＩＰがオンまたはＨＡＳＨＶがオフである検出したＣＬごとに、パージ状態をオンにする。
【００５４】
ここで図１４および１５を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、同じアレイＩＤ／ＬＢＡを含んでいるキャッシュ・ライン（ＣＬ）チェーンの例が、参照文字１１００、１１２０によって全体的に指定されて、それぞれ示されている。図１４では、コントロール・ストア（ＣＳ）内の同じアレイＩＤ／ＬＢＡを含んでいるＣＬチェーンの例１１００は、示されているように、割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１、（ＬＲＵ＝有効）を含んでいるアイドル１１０２と、割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１、（ＬＲＵ＝有効）、ＲＩＰ＝１を含んでいるＲＩＰ１１０４と、割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１、ＤＩＰ＝１を含んでいるＤＩＰ１１０６と、割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１、ＲＩＰ＝１、ＤＩＰ＝１を含んでいるＲＩＰ／ＤＩＰ１１０８と、割り当て＝１を含んでいる割り当て済み１１１０、および割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１、（ＬＲＵ＝有効）を含んでいるアイドル１１１２と、割り当て＝１、ＬＯＣ＝０／１、ＭＩＰ＝１、ＨＡＳＨＶ＝１、（ＬＲＵ＝有効）を含んでいるＭＩＰ１１１４、および割り当て＝１、ＬＯＣ＝０／１、ＨＡＳＨＶ＝１を含んでいるＯＩＰ１１１６とを含んでいる。
【００５５】
図１５では、データ・ストア（ＤＳ）内の同じアレイＩＤ／ＬＢＡを含んでいるＣＬチェーンの例１１００は、割り当て＝１および処理構築番号＝Ｎ＋Ｘ＋Ｙを含んでいる割り当て済み１１２２と、割り当て＝１および処理構築番号＝Ｎ＋Ｘを含んでいる割り当て済み１１２４と、割り当て＝１および処理構築番号＝Ｎを含んでいる割り当て済み１１２６とを含んでいる。
【００５６】
ここで図１６、１７、１８、および１９を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラに含まれている、書き込み、非最適化または一時的書き込み、読み取り、およびデステージ処理のための、ハードウェア・エンジンにおける制御ブロック（ＣＢ）に基づく処理のチェーンの例がそれぞれ示されている。
【００５７】
図１６では、参照文字１２００によって全体的に指定された書き込みプロセスの例は、データ・ストア（ＤＳ）内のＡページ・リストを割り当てる、ＮＶページの割り当て１２０２と、ホストからＡページ・リストへのデータにダイレクト・メモリ・アクセスするための、ＤＳへのホストＤＭＡ（圧縮あり）１２０４と、ＣＬ状態の更新中にキャッシュ内の既存のデータがオーバーレイされた可能性があるかどうかを決定する、書き込みキャッシュ（ＷＣ）オーバーレイ検索およびインストール１０２６（ＭＩＰをオンにし、ＯＩＰリストまたはＢページ・リストを生成し、セクタＩＯが必要であるかどうかを決定する）と、書き込み処理の開始時および終了時に非４Ｋデータをマージする、ＸＯＲセクタＩ／Ｏマージ１２０８と、Ａページ・リストの新しいデータをローカルＮＶ  ＤＳおよびリモートＮＶ  ＤＳにミラーリングする、ＳＡＳミラー１２１０と、Ｂページ・リストのミラーを削除する、ＳＡＳミラー削除１２１２と、例えばＳＡＳミラーまたはＳＡＳミラー削除が失敗した場合に、Ａページ・リストのＭＩＰをオフにし、ＯＩＰの新しいリストまたはＣページ・リストを生成し、ＭＩＰおよびＯＩＰの取り消しをオフにする、ＭＩＰおよびＯＩＰのオフ１２１４と、オーバーレイされたページまたはＣページ・リストを割り当て解除する、ＮＶ割り当て解除１２１６と、応答をホストへ送信する、ＳＩＳ送信１２１８とを含んでいる。
【００５８】
図１７では、参照文字１２２０によって全体的に指定された非最適化または一時的書き込みプロセスの例は、揮発性からＮＶへのＸＯＲコピー（XOR Vol to NV copy）（圧縮なし）１２２２を含んでいる。
【００５９】
図１８では、参照文字１２２４によって全体的に指定された読み取りプロセスの例は、揮発性割り当て１１２６と、ＷＣ読み取り検索１２２８と、ＳＡＳ読み取り（または部分的読み取りヒット）１２３０と、ＤＳからのＨＤＭＡ（圧縮解除あり）１２３２と、揮発性割り当て解除１２３４と、ＲＩＰのオフ１２３６と、例えばすでにデステージされたデータに関する、ＮＶ割り当て解除１２３８と、ＳＩＳ送信１２４０とを含んでいる。
【００６０】
図１９では、参照文字１２４２によって全体的に指定されたデステージ・プロセスの例は、デステージ検索１２４４と、ＸＯＲ圧縮解除１２４６と、揮発性割り当て／割り当て解除、ＰＳＬロック／ロック解除、パリティ更新フットプリント（ＰＵＦＰ：parity update footprint）の設定／更新／消去、ＳＡＳ処理などの、ＲＡＩＤのデステージに関わるさまざまな支援の実行１２４８と、ＳＡＳミラー削除１２５０と、ＤＩＰのオフ１２５２、および例えばデステージが失敗した場合のＤＩＰの取り消しのオフと、ＮＶ割り当て解除１２５４とを含んでいる。
【００６１】
ここで図２０を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１３０２で開始する書き込みプロセスの例を示すフロー・チャートが、参照文字１３００によって全体的に指定されて、示されている。判定ブロック１３０４に示されているように、揮発性ページ（ｘ２）が提供されているかどうかのチェックが実行される。揮発性ページが提供された場合、ブロック１３０６に示されているようにバイパスし、ブロック１３０８に示されているように、ＡＭＧＲを介して書き込む。揮発性ページが提供されなかった場合、判定ブロック１３１０に示されているように、キャッシュ内に可能性のあるデータがあるかどうかのチェックが実行される。キャッシュ内の可能性のあるデータが識別された場合、判定ブロック１３１２に示されているように、スキップまたはＷＣオーバーレイ例外があるかどうかのチェックが実行される。スキップまたはＷＣオーバーレイ例外が識別された場合、ブロック１３１６に示されているように揮発性割り当て（ｘ２）または事前割り当て済みが提供され、ブロック１３１８に示されているようにホスト・ダイレクト・メモリ・アクセス（ＨＤＭＡ）が提供され、ブロック１３２０に示されているようにＡＭＧＲを介した書き込みが提供され、ブロック１３２２に示されているように揮発性割り当て解除が提供される。ブロック１３２３に示されているように、ホストへ応答を送信するＳＩＳ送信が提供される。
【００６２】
スキップまたはＷＣオーバーレイ例外が識別されなかった場合、好ましい実施形態に従って、データ・ストア（ＤＳ）内のＡページ・リストを割り当てる、ＮＶページの割り当て１３２４と、ホストからＡページ・リストへのデータにダイレクト・メモリ・アクセスするための、ＤＳへのホストＤＭＡ（圧縮あり）１３２６と、ＣＬ状態の更新中にキャッシュ内の既存のデータがオーバーレイされた可能性があるかどうかを決定する、書き込みキャッシュ（ＷＣ）オーバーレイ検索およびインストール１３２８（ＭＩＰをオンにし、ＯＩＰリストまたはＢページ・リストを生成し、セクタＩＯが必要であるかどうかを決定する）と、書き込み処理の開始時および終了時に非４Ｋデータをマージする、ＸＯＲセクタＩ／Ｏマージ１３３０と、Ａページ・リストの新しいデータを、ローカルＮＶ  ＤＳまたはリモートＮＶ  ＤＳあるいはその両方にミラーリングする、ＳＡＳミラー１３３２と、Ｂページ・リストのミラーを削除する、ＳＡＳミラー削除１３３４と、Ａページ・リストのＭＩＰをオフにし、ＯＩＰの新しいリストまたはＣページ・リストを生成する、ＭＩＰおよびＯＩＰのオフ１３３６と、オーバーレイされたページまたはＣページ・リストを割り当て解除する、ＮＶ割り当て解除１３３８と、応答をホストへ送信する、ＳＩＳ送信１３２３とのＨＷチェーン・ステップ（HW chained steps）を実行することによって、書き込みキャッシュへの書き込みが実行される。
【００６３】
ここで図２１を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、オーバーレイを伴う高速書き込み時のＸＯＲマージの例が、参照文字１４００によって全体的に指定されて、示されている。オーバーレイを伴う高速書き込み時のＸＯＲマージ１４００は、ミラー進行中（ＭＩＰ：mirror in process）および新しいデータを含んでいるバッファＡ  １４０２と、オーバーレイ進行中（ＯＩＰ）および古いデータを含んでいるバッファＢ  １４０４とを含み、バッファＢ  １４０４は、ＭＩＰおよびマージされたデータを含んでいるバッファＡ  １４０６にマージされる。
【００６４】
ここで図２２を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１５０２で開始する読み取りプロセスの例を示すフロー・チャートが、参照文字１５００によって全体的に指定されて、示されている。判定ブロック１５０４に示されているように、揮発性ページ（ｘ２）が提供されているかどうかのチェックが実行される。揮発性ページが提供された場合、ブロック１５０６に示されているようにバイパスし、ブロック１５０８に示されているように、ＡＭＧＲを介して読み取る。揮発性ページが提供されなかった場合、判定ブロック１５１０に示されているように、キャッシュ内の可能性のあるデータがあるかどうかのチェックが実行される。キャッシュ内の可能性のあるデータが識別された場合、判定ブロック１５１２に示されているように、スキップまたは読み取り検索例外があるかどうかのチェックが実行される。スキップまたは読み取り検索例外が識別された場合、ブロック１５１６に示されているように揮発性割り当て（ｘ２）または事前割り当て済みが提供され、ブロック１５１８に示されているようにＡＭＧＲの読み取りが提供され、ブロック１５２０に示されているようにホスト・ダイレクト・メモリ・アクセス（ＨＤＭＡ）が提供され、ブロック１５２２に示されているように揮発性割り当て解除が提供される。ブロック１５２３に示されているように、ホストへ応答を送信するＳＩＳ送信が提供される。
【００６５】
スキップまたは読み取り検索例外が識別されなかった場合、好ましい実施形態に従って、Ａ−Ｖｏｌを提供する、揮発性割り当て１５２４と、ＷＣ読み取り検索１５２６であって、ＢがＡからのボリューム・インデックスおよびキャッシュ内のデータのＮＶインデックスを含み、スキップ・ビットも生成される、ＷＣ読み取り検索１５２６と、ＡＭＧＲを介した読み取り（２５６ＫＢ境界交差（cross 256 KB boundary）の２つの処理）１５２８と、Ｂ−ＮＶｖを受信する、ＤＳからのＨＤＭＡ（圧縮解除あり）１５３０と、Ａ−Ｖｏｌを受信する、揮発性割り当て解除１５３２（または処理なし）と、Ｂ−ＮＶｖを受信して、スキップ・ビットが設定されたインデックスに関してＲＩＰがオフにされたＣ−ＣＬｒを提供する、ＲＩＰのオフ１５３４と、例えば、ＮＶインデックスを割り当て解除することのみが必要となるように、デステージによってすでに消去されたＣ−ＣＬｒを提供する、ＮＶ割り当て解除１５３６と、ＳＩＳ送信１５２３とのＨＷチェーン・ステップを実行することによって、書き込みキャッシュからの読み取りが実行される。
【００６６】
ここで図２３を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１６０２で開始するデステージ構築プロセスの例を示すフロー・チャートが、参照文字１６００によって全体的に指定されて、示されている。
【００６７】
本発明の特徴に従って、ハードウェア・エンジンは、ＬＲＵまたは指定されたアレイＬＢＡのいずれかで開始するため、および要求された最大サイズ／範囲または２５６Ｋストライプ境界の終端のいずれかで停止するためのオプションを含むデステージ処理を生成するのを支援する。ブロック１６０４に示されているように、デステージを生成する（ＤＩＰをオンにする）ために、ハッシュ・テーブルまたはＬＲＵキューあるいはその両方を介して書き込みキャッシュを検索するハードウェア支援と共に、ＬＲＵまたは指定されたアレイＬＢＡのいずれかで開始するか、または（ＨＤＤの場合はギャップあり、ＳＳＤの場合はギャップなしで）ＬＲＵで開始するオプションを使用して、デステージ検索が呼び出される。完全な２５６Ｋが検出され、かつ完全なストライプ書き込み（ＦＳＷ：Full Stripe Write）が許可されるかどうかのチェックが、判定ブロック１６０６に示されているように実行される。完全な２５６Ｋが検出され、かつ許可されるＦＳＷが検出されなかった場合、判定ブロック１６０８に示されているように、処理をドライブに対して単一の処理として実行できないかどうかのチェックが実行される。例えば、ドライブがスキップ処理をサポートしていない場合のギャップのため、またはＣＬが、ギャップが生じる可能性のあるセクタＩ／Ｏを含んでいるために、処理をドライブに対して単一の処理として実行できないと判断された場合、ブロック１６１０に示されているように、重複したデステージまたは直列化したデステージが実行される。処理をドライブに対して単一の処理として実行できないと判断されなかった場合、ブロック１６１２に示されているように、単一のデステージが実行される。
【００６８】
完全な２５６Ｋが検出され、かつ許可されるＦＳＷが識別された場合、判定ブロック１６１４に示されているように、主要なパリティ・ストライプの先頭であるかどうかのチェックが実行される。主要なパリティ・ストライプの先頭が検出されなかった場合、ブロック１６１６に示されているように、単一のデステージが実行される。主要なパリティ・ストライプの先頭が検出された場合、ブロック１６１８に示されているように、アレイ・オフセットで開始するデステージ検索が呼び出される。判定ブロック１６２０に示されているように、追加検索結果がすべて完全な２５６Ｋであるか、またはなにも検索しなかったかのチェックが実行される。「はい」である場合、ブロック１６２２に示されているように、複数のデステージが実行される。「いいえ」である場合、ブロック１６２４に示されているように、追加デステージを取り消すか、または後で処理するためにキューに入れる。その後、ブロック１６２６に示されているように、単一のデステージが実行される。
【００６９】
ここで図２４を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１７０２で開始する単一のデステージ・プロセスの例を示すフロー・チャートが、参照文字１７００によって全体的に指定されて、示されている。判定ブロック１７０４に示されているように、ＲＡＩＤ５または６があるかどうかのチェックが実行される。ＲＡＩＤ５／６が識別された場合、好ましい実施形態に従って、次のようなＨＷ処理ステップが実行される。揮発性割り当て（２Ｘバッファ）１７０６、ＸＯＲ圧縮解除１７０８、ＡＭＧＲを介した書き込み１７１０、揮発性割り当て解除１７１２、Ｂ−ＤＩＰ（デステージ進行中）を受信する、ＳＡＳミラー削除（ローカルまたはリモートあるいはその両方）１７１４、Ｂ−ＤＩＰを受信し、Ｃ−ＣＬｒを提供する（例えば、デステージが失敗した場合に、ＤＩＰの取り消しをオフにする）、ＤＩＰのオフ１７１６、Ｃ−ＣＬｒを受信する、ＮＶ割り当て解除１７１８、およびブロック１７２０に示されている、処理完了。
【００７０】
ＲＡＩＤ５／６が識別されなかった場合、好ましい実施形態に従って、次のようなＨＷ処理ステップが実行される。Ｎｏ  Ｄｅｓｔの読み込み（Read No Dest）（ＸＯＲ圧縮解除）１７２２、ＡＭＧＲを介した書き込み１７２４、Ｂ−ＤＩＰ（デステージ進行中）を受信する、ＳＡＳミラー削除（ローカルまたはリモートあるいはその両方）１７１４の継続、Ｂ−ＤＩＰを受信し、Ｃ−ＣＬｒを提供する（例えば、デステージが失敗した場合に、ＤＩＰの取り消しをオフにする）、ＤＩＰのオフ１７１６、Ｃ−ＣＬｒを受信する、ＮＶ割り当て解除１７１８、およびブロック１７２０に示されている、処理完了。
【００７１】
ここで図２５を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１８０２で開始する複数のデステージ・プロセスの例を示すフロー・チャートが、参照文字１８００によって全体的に指定されて、示されている。好ましい実施形態に従って、次のようなＨＷ処理ステップが実行される。揮発性割り当て（２Ｘバッファ）１８０４、ＡＭＧＲを介したストリップ書き込み（Strip Write）１８０６、揮発性割り当て解除１８０８、Ｂ−ＤＩＰを受信する、ＳＡＳミラー削除（ローカルまたはリモートあるいはその両方）１８１０、Ｂ−ＤＩＰを受信し、Ｃ−ＣＬｒを提供する、ＤＩＰのオフ＊Ｎ１８１２、Ｃ−ＣＬｒを受信する、ＮＶ割り当て解除＊Ｎ１８１４、およびブロック１８１６に示されている、処理完了。
【００７２】
ここで図２６を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ブロック１９０２で開始するバイパス・プロセスの例を示すフロー・チャートが、参照文字１９００によって全体的に指定されて、示されている。ブロック１９０４に示されているように、処理のサイズ／範囲のアレイ・オフセットで開始することによって、デステージ検索が呼び出される。判定ブロック１９０６に示されているように、状態ビットのＯＲ＝０かつ書き込まれるインデックスの番号＝０であるかどうかのチェックが実行される。「はい」である場合、ブロック１９０８に示されているように、処理が完了する。「いいえ」である場合、判定ブロック１９１０に示されているように、書き込まれるインデックスの番号＝０であるかどうかのチェックが実行される。書き込まれるインデックスの番号＝０である場合、ブロック１９１２に示されているように、遅延が提供され、処理はブロック１９０４に戻り、デステージ検索が呼び出され、続行する。書き込まれるインデックスの番号が０に等しくない場合、ブロック１９１４に示されているように、例えばギャップがあるが、ドライブがスキップ処理をサポートしていないか、またはＣＬが、ギャップが生じる可能性のあるセクタＩ／Ｏを含んでいるために、処理をドライブに対して単一の処理として実行できないかどうかのチェックが実行される。処理をドライブに対して単一の処理として実行できない場合、ブロック１９１６に示されているように、重複したデステージまたは直列化したデステージが実行される。処理をドライブに対して単一の処理として実行できる場合、ブロック１９１８に示されているように、単一のデステージが実行される。処理はブロック１９０４に戻り、デステージ検索が呼び出され、続行する。
【００７３】
ここで図２７を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、レジスタに基づくパージ・ハードウェア支援ツール・キットの例が、参照文字２０００によって全体的に指定されて、示されている。ブロック２００２に示されているように、ＷＣハードウェアがすべてのＣＬを読み込み、この範囲に一致するいずれのＣＬも、次のことを発生させる。割り当て＝１、ＰＩＰ＝０、ＭＩＰ＝０、かつＨＡＳＨＶ＝１である場合、ＰＩＰをオンにし、カウンタをインクリメントする。カウンタをインクリメントし、ＤＩＰ＝０かつＯＩＰ＝０である場合、ＤＩＰをオンにし、ＬＲＵから削除し、ＣＬをページ・テーブル・リストに入れる。この間に、ＷＣエンジンはＣＢを処理することができ、この機能はＣＢ処理とインターリーブする。ＦＷによって読み込まれるレジスタ２００４は次を含む。
アレイＩＤ（７：０）２００６
開始アレイ・オフセット（４４：０）（４ＫＢでアライメントされなければならないため、ビット（２：０）＝０）２００８
終了アレイ・オフセット・サイズ（４４：０）（４ＫＢの倍数でなければならないため、ビット（２：０）＝０）２０１０
ページ・テーブル・リスト・ポインタ（３１：０）２０１２
ページ・テーブル・サイズ（１１：０）（最大、４Ｋ−１個のエントリ）２０１４
ページ・テーブルの現在のサイズ（１１：０）２０１６
現在のＣＬインデックス（２４：０）２０１８（開始時にゼロに設定され、一時停止後に保持されてよい）
最大ＣＬインデックス（２４：０）２０２０
アクティブ・ビット、ページ・テーブル中断ビット２０２２、および
現在のパージ・カウンタ（２４：０）２０２４（割り当て解除によって、ＰＩＰビットが設定されたすべてのＣＬに関してデクリメントされる）
【００７４】
ＣＬ２０２６は、ＰＩＰ（パージ進行中）ビット２０２８（設定された場合、パージ保留カウントをインクリメントし、割り当て解除時にパージ保留カウントをデクリメントする）を含む。イベントＱエントリ２０３０は、ページ・テーブル・リストが満杯である場合に前述の一時停止を含み、パージ・ページ・リスト・イベントＱエントリを送信する２０３２。パージが破棄を完了し、ページ・テーブル・リストが空でない場合に、パージ・ページ・リスト・イベントＱエントリを送信する２０３４（１１：１０＝タイプ＝１１ｂ）。次のことに注意する。再起動されなければならず、パージが完了し、かつカウンタがゼロになった後に、パージ完了イベントＱエントリを送信する２０３６（１１：１０＝タイプ＝１０ｂ）。ＬＢＡの小さい範囲に対してキャッシュ・データをパージするために、ＦＷがデステージ検索を使用するということに注意する。ＬＢＡのより大きい範囲に対しては、パージ・エンジンが使用されるべきである。
【００７５】
ここで図２８および２９を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、パージ・エンジン・プロセスの例を示すフロー・チャートが、参照文字２１００、２２００によって全体的に指定されて、それぞれ示されている。図２８では、パージ・エンジン・プロセスがブロック２１０２で開始され、判定ブロック２１０４に示されているように、ＷＣエンジンがアイドル状態であるかどうかのチェックが実行される。ＷＣエンジンがアイドル状態であることが識別された場合、判定ブロック２１０６に示されているように、すべてのＣＬが処理されたかどうかのチェックが実行される。ＷＣエンジンがアイドル状態であることが識別されなかった場合、ブロック２１０８に示されているようにＣＬが処理され、判定ブロック２１１０に示されているようにページ・リストが満杯かどうかのチェックが実行される。ページ・リストが満杯でない場合、判定ブロック２１１２に示されているように、２５６Ｋ境界であるかどうかのチェックが実行される。２５６Ｋ境界である場合、処理は、判定ブロック２１０４でのＷＣエンジンがアイドル状態であるかどうかのチェックに戻り、続行する。ページ・リストが満杯である場合、ブロック２１１４に示されているように、有効なインデックスの番号で部分的パージが示されることが提供される。すべてのＣＬが処理された場合、判定ブロック２１１６に示されているように、ページ・リストが空であるかどうかのチェックが実行される。ページ・リストが空でない場合、ブロック２１１４で、有効なインデックスの番号で部分的パージが示されることが提供される。ページ・リストが空である場合、判定ブロック２１１８に示されているように、パージ・カウンタがゼロであるかどうかのチェックが実行される。「はい」である場合、ブロック２１２０に示されているように、パージ完了が示される。「いいえ」である場合、ブロック２１２２に示されているように、処理が完了する。
【００７６】
図２９を参照すると、ブロック２２０２でパージ要求が開始されており、これには、判定ブロック２２０４に示されているように、進行中のパージが現在実行されているかどうかのチェックが含まれている。「はい」である場合、ブロック２２０５に示されているように、パージ要求がキューに入れられる。「いいえ」である場合、ブロック２２０６に示されているように、アレイＩＤおよびＬＢＡの範囲に関して、パージ・エンジン・ルーチンが呼び出される。判定ブロック２２０８に示されているように、インデックスが検出されてパージ・エンジンが一時停止されているかどうかのチェックが実行される。「はい」である場合、ブロック２２１０に示されているように、ＳＡＳミラー削除が実行される（ローカルまたはリモートあるいはその両方）。ブロック２２１２に示されているように、ＤＩＰがオフにされ、ブロック２２１４に示されているように、ＮＶ割り当て解除が提供される。ブロック２２１６に示されているように、パージ・エンジンが再起動（一時停止解除）され、インデックスが検出されてパージ・エンジンが一時停止されているかどうかをチェックする判定ブロック２２０８に戻り、続行する。インデックスが検出されてパージ・エンジンが一時停止されたことが識別されなかった場合、ブロック２２１８に示されているように、パージが完了する。その後、判定ブロック２２２０に示されているように、キューに入れられたパージ要求が存在するかどうかのチェックが実行される。「はい」の場合、処理は、ブロック２２０６でのアレイＩＤおよびＬＢＡの範囲に関するパージ・エンジン・ルーチンの呼び出しに戻り、続行する。「いいえ」である場合、ブロック２２２２に示されているように、処理が完了する。
【００７７】
ここで図３０を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ハードウェア・カウンタおよび統計情報の例が、参照文字２３００によって全体的に指定されて、示されている。ハードウェア・カウンタおよび統計情報２３００は、ＨＷによってアレイＩＤごとに維持され、次を含んでいる。
現在のカウンタ値（ＣＬ）２３０２
現在のカウンタ値（局所性ビット）２３０４
ＨＷＭ（ＣＬ）２３０６
ＨＷＭ（局所性ビット）２３０８
ＬＷＭ（ＣＬ）２３１０
ＬＷＭ（局所性ビット）２３１２
ＬＲＵ  ＵＰ、ＬＲＵ上の最も古いＣＬエントリ、ゼロ＝ｎｕｌｌ２３１４
ＬＲＵ  ＤＯＷＮ、新しいＣＬが配置される次の位置、ゼロ＝ｎｕｌｌ２３１６
現在のカウンタ値（ＷＣインストールの合計）２３１８
現在のカウンタ値（オーバーレイを伴うＷＣインストール）２３２０
現在のカウンタ値（ＷＣ読み取りの合計）２３２２
現在のカウンタ値（完全なキャッシュ読み取りヒットを伴うＷＣ読み取り）２３２４
【００７８】
本発明の特徴によれば、キャッシュ管理の大部分がハードウェア制御下にある状態では、ハードウェアによる支援なしに、ファームウェアがアレイごとのキャッシュしきい値（すなわち、アレイごとのキャッシュ内のデータの望ましいレベル）およびアレイごとのキャッシュ制限（すなわち、アレイごとのキャッシュ内のデータの最大量）の管理を支援するのは困難であると考えられる。管理するべき全体的（アレイではない）しきい値および制限も存在する。ハードウェアは、キャッシュしきい値およびキャッシュ制限の管理を支援するために、ファームウェアからの入力（レジスタ）およびファームウェアへの出力（レジスタおよびイベント）を提供する。
【００７９】
本発明の特徴に従って、デステージ・レートを動的に最適化するためのトリガに基づく新しい方法が提供される。このトリガに基づく新しい方法は、キャッシュ・ページの高トリガおよび低トリガ（high and low trigger）、ならびにキャッシュＣＬの高トリガおよび低トリガに、レジスタのセットを使用する。ハードウェアは、これらの各カウントのためのカウンタを維持し、ハードウェア・カウンタがこれらの高トリガまたは低トリガのいずれかと交差したときに、ファームウェアが処理するイベントを生成する。これらのトリガ値が交差し、これらのイベントが処理されると、ファームウェアは、それに応じて、デステージのキューの長さを調整する。キャッシュ・ページまたはキャッシュＣＬの高水準値が交差した場合、デステージのキューの長さを増やすことができる。同時に、次の交差を検出するために、キャッシュ・ページまたはキャッシュＣＬあるいはその両方の高水準値および低水準値のレジスタ値が増やされる。キャッシュ・ページまたはキャッシュＣＬの低水準値が交差した場合、高水準値および低水準値の設定と共に、デステージ・レートが低減されてよい。デステージ・レートは、キャッシュ・ページまたはキャッシュＣＬのいずれか高い方によって決定される。過剰なイベントを避けるために、キャッシュ・ページまたはキャッシュＣＬが高水準値と交差したときに、両方の高水準値を上に移動させる。ただし、最も使用率の高いリソースの低水準値を移動させることのみが重要である。本質的に、より高いデステージ・レートを引き起こしているリソースは、デステージ・レートを低減できるタイミングを検出するために低水準値を監視しなければならないリソースのみである。
【００８０】
本発明の特徴に従って、キャッシュ・ページまたはキャッシュＣＬの低水準値が交差したときに、それがより使用率の低いリソースである場合、デステージ・レートは変更されず、そのリソースの低水準値のみが下方に調整されなければならない。それがより使用率の高いリソースである場合、より使用率の低いリソースがより使用率の高いリソースになったかどうかを決定するために、より使用率の低いリソースのレベルがチェックされなければならない。その後、より使用率の高いリソースに基づいて、デステージ・レートが設定される。両方の高水準値も、より使用率の高いリソースに基づいて設定される。次に、次のより低いデステージ・レートのトリガ・ポイントで、より使用率の高いリソースの低水準値が設定されなければならない。最後に、より使用率の低いリソースの低水準値が、より使用率の高いリソースの新しい設定よりも高い場合、その低水準値も低減されなければならない。
【００８１】
本発明の特徴に従って、アレイごとのトリガに基づく方法が、リソースごとの制限を動的に調整する。この方法は、リソースごとのキャッシュＣＬの高トリガおよび低トリガ、およびリソースごとの局所性カウントの高トリガおよび低トリガのためのレジスタのセットを使用する。ハードウェアは、これらの各カウントのためのカウンタを維持し、ハードウェア・カウンタがこれらの高トリガまたは低トリガのいずれかと交差したときに、ファームウェアが処理するイベントを生成する。基本的に、これらのトリガは局所性カウントに対するＣＬの比率を監視し、リソースごとの制限を調整するために使用される。ＣＬカウントが高水準値と交差した場合は、制限が減らされるべきである。同時に、ＣＬの高水準値および低水準値が増やされるべきである。局所性カウントが高水準値と交差した場合、制限が増やされるべきであり、局所性カウントの高水準値および低水準値が増やされるべきである。ＣＬカウントが低水準値と交差した場合、制限が増やされるべきであり、ＣＬの高水準値および低水準値が減らされるべきである。局所性カウントが低水準値と交差した場合、制限が減らされるべきであり、局所性カウントの高水準値および低水準値が減らされるべきである。
【００８２】
ここで図３１および３２を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、ＣＬ制限およびＣＬしきい値の例が、参照文字２４００、２５００によって全体的に指定されて、それぞれ示されている。
【００８３】
図３１（ＣＬ制限およびＣＬしきい値２４００）では、高水準値（ＨＷＭ）および低水準値（ＬＷＭ）の例と共に、ＮＶ  ４Ｋインデックスの全体的制限（キャッシュ・ディレクトリのサイズ）およびＮＶ  ４Ｋインデックスの全体的しきい値（制限のｎｎ％）が２４０２に示されており、ＮＶ  ５２８インデックスの全体的制限（実際のキャッシュ・メモリのサイズ）およびＮＶ  ５２８インデックスの全体的しきい値（制限のｎｎ％）が２４０４に示されている。アレイ１（２４０６）、アレイ２（２４０８）、アレイ３（２４１０）、およびアレイ４（２４１２）に示されているように、ＨＷＭおよびＬＷＭに対して、アレイごとの制限の各例が破線で示されており、アレイごとのしきい値の各例が点線で示されている。
【００８４】
図３２において、ＣＬ制限およびＣＬしきい値２５００は、
ＣＬカウント（アレイＩＤごと）、
ＣＬ局所性カウント（アレイＩＤごと）、
ＮＶ  ４Ｋフリー・インデックス（free indexes）（ヘッド・ポインタ／テール・ポインタを介する）、および
ＮＶ  ５２８フリー・インデックス（ヘッド・ポインタ／テール・ポインタを介する）を含んでいるレジスタ２５０４からの、ＨＷからの入力２５０２を含んでいる。イベント２５０６からの、ＨＷからの入力２５０２は、次を含んでいる。
ＨＷＭの上のＮＶ  ４Ｋ、ＬＷＭの下のＮＶ  ４Ｋ、ＨＷＭの上のＮＶ  ５２８
ＬＷＭの下のＮＶ  ５２８
ＨＷＭの上のアレイＣＬカウント
ＬＷＭの下のアレイＣＬカウント
ＨＷＭの上のアレイＣＬ局所性カウント
ＬＷＭの下のアレイＣＬ局所性カウント
【００８５】
制限およびしきい値計算機能ＦＷ２５０８は、ＨＷからの入力２５０２を受信し、ＣＬ制限の更新（アレイごと）２５１２を含んでいるＨＷへの出力２５１０を提供する。これは、ＦＷアレイ待機Ｑ更新ポート（FW Array Wait Q Update Port）を使用して、加算または減算によって実行される。ＨＷへの出力２５１０は、アレイに基づくＣＬカウントおよびＣＬ局所性カウントに関するＨＷＭ／ＬＷＭの更新２５１４を含んでいる。ＮＶ  ４Ｋフリー・インデックスおよびＮＶ  ５２８フリー・インデックスのＨＷＭ／ＬＷＭが定期的に変更されないということに注意する。その他の出力２５１６は、デステージ・レート２５１８を含んでいる。
【００８６】
ここで図３３を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、全体的イベント処理の例を示すフロー・チャートが、参照文字２６００によって全体的に指定されて、示されている。判定ブロック２６０２に示されているように、ＨＷＭまたはＬＷＭが識別される。ＨＷＭの場合、判定ブロック２６０４に示されているように、ページまたはＣＬが識別される。ブロック２６０６に示されているように、識別されたページに関して、ページおよびＣＬのＨＷＭが増やされる。ブロック２６０８に示されているように、ページのＬＷＭが増やされる。ブロック２６１０に示されているように、識別されたＣＬに関して、ページおよびＣＬのＨＷＭが増やされる。ブロック２６１２に示されているように、ＣＬのＬＷＭが増やされる。ブロック２６１４に示されているように、デステージ・レートが増やされる。ＬＷＭの場合、判定ブロック２６１５に示されているように、ページまたはＣＬが識別される。ブロック２６１６に示されているように、識別されたページに関して、ページがＣＬよりも大きいかどうかのチェックが実行される。ページがＣＬよりも大きい場合、ブロック２６２０に示されているように、ページおよびＣＬのＨＷＭが減らされる。ページがＣＬよりも大きくない場合、ブロック２６２２に示されているように、ページのＬＷＭがゼロに設定され、ＣＬのＬＷＭが設定される。判定ブロック２６２４に示されているように、デステージ・レートを低くする必要性を識別するためのチェックが実行される。デステージ・レートを低くする必要性が識別されなかった場合、ブロック２６２６に示されているように、全体的イベント処理が完了する。ブロック２６２８に示されているように、上位リソース（top resource）のＬＷＭが減らされる。ブロック２６３０に示されているように、デステージ・レートが減らされてから、ブロック２６２６で全体的イベント処理が完了する。判定ブロック２６３２に示されているように、識別されたＣＬに関して、ページがＣＬよりも小さいかどうかのチェックが実行される。ページがＣＬよりも小さい場合、ブロック２６２０でページおよびＣＬのＨＷＭが減らされる。ページがＣＬよりも小さくない場合、ブロック２６３４に示されているように、ＣＬのＬＷＭがゼロに設定され、ページのＬＷＭが設定される。判定ブロック２６３６に示されているように、デステージ・レートを低くする必要性を識別するためのチェックが実行される。デステージ・レートを低くする必要性が識別されなかった場合、ブロック２６２６で全体的イベント処理が完了する。その後、ブロック２６３０に示されているように、デステージ・レートが減らされてから、ブロック２６２６で全体的イベント処理が完了する。
【００８７】
ここで図３４を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、アレイごとの処理のステップの例を示すフロー・チャートが、参照文字２７００によって全体的に指定されて、示されている。判定ブロック２７０２に示されているように、ＨＷＭまたはＬＷＭが識別される。ＨＷＭの場合、判定ブロック２７０４に示されているように、局所性またはＣＬが識別される。ブロック２７０６に示されているように、識別されたＣＬに関して、ＣＬのＨＷＭおよびＬＷＭが増やされる。ブロック２７０８に示されているように、アレイＣＬの制限が減らされる。ブロック２７１０に示されているように、識別された局所性に関して、局所性のＨＷＭおよびＬＷＭが増やされる。ブロック２７１２に示されているように、アレイＣＬの制限が増やされる。その後、判定ブロック２７１４に示されているように、ＣＬカウントがより高いデステージ・レートを必要としているかどうかを決定するためのチェックが実行される。ＣＬカウントがより高いデステージ・レートを必要としている場合、ブロック２７１６に示されているように、アレイのデステージ・レートが増やされ、ブロック２７１８に示されているように、アレイごとの処理が終了する。ＬＷＭの場合、判定ブロック２７２０に示されているように、局所性またはＣＬが識別される。ブロック２７２２に示されているように、識別されたＣＬに関して、ＣＬのＨＷＭおよびＬＷＭが減らされる。ブロック２７２４に示されているように、アレイＣＬの制限が増やされる。ブロック２７２６に示されているように、識別された局所性に関して、局所性のＨＷＭおよびＬＷＭが減らされる。ブロック２７２８に示されているように、アレイＣＬの制限が減らされる。その後、処理は判定ブロック２７１４に戻り、ＣＬカウントがより高いデステージ・レートを必要としているかどうかを決定するためのチェックが実行され、続行する。
【００８８】
ここで図３５および３６を参照すると、好ましい実施形態に従ってストレージ・アダプタ拡張書き込みキャッシュ管理を実装するためにコントローラ１０２に含まれている、参照文字２８００によって全体的に指定された全体的トリガおよび参照文字２９００によって全体的に指定されたアレイごとのトリガの各例が、示されている。図３５では、全体的トリガ２８００が、垂直軸に示されたデステージ・レートおよび相対的書き込み率を含んでおり、水平軸に時間が示されている。図３６では、アレイごとのトリガ２９００が、垂直軸に示されたデステージ・レートおよびＣＬの数／局所性／制限を含んでおり、時間が、大規模な／順次処理およびランダム処理の領域と共に水平軸に示されている。図３６では、ＣＬカウントが実線で示され、局所性カウントが点線で示され、ＣＬ制限が破線で示されている。
【００８９】
図３７は、設計フローの例３０００のブロック図を示している。設計フロー３０００は、設計されるＩＣの種類に応じて変化してよい。例えば、特定用途向け集積回路（ＡＳＩＣ：application specific IC）を構築するための設計フロー３０００は、標準コンポーネントを設計するための設計フロー３０００とは異なってよい。設計構造３００２は、好ましくは、設計工程３００４への入力であり、ＩＰプロバイダ、コア開発業者、またはその他の設計会社から提供されてよく、あるいは設計フローのオペレータによって、またはその他のソースから生成されてよい。設計構造３００２は、回路図、またはＶｅｒｉｌｏｇ、ＶＨＤＬ、ＣなどのＨＤＬ（ハードウェア記述言語：hardware-description language）の形態で、ＩＯＡまたはコントローラ１０２を含む。設計構造３００２は、１つまたは複数の機械可読媒体に格納されてよい。例えば、設計構造３００２は、コントローラ１０２および性能状態機械２００のテキスト・ファイルまたはグラフィック表現であってよい。設計工程３００４は、好ましくは、コントローラ１０２をネットリスト３００６に合成または変換し、ネットリスト３００６は、例えば、集積回路設計内の他の素子および回路への接続を記述する、ワイヤ、トランジスタ、論理ゲート、制御回路、Ｉ／Ｏ、モデルなどのリストであり、機械可読媒体のうちの少なくとも１つに記録される。設計工程３００４は、ネットリスト３００６が回路の設計仕様および設計パラメータに応じて１回または複数回再合成される反復的工程であってよい。
【００９０】
設計工程３００４は、さまざまな入力を使用することを含んでよく、例えば、異なる技術ノード（３２ｎｍ、４５ｎｍ、９０ｎｍなど）などの特定の製造技術に関するモデル、レイアウト、および記号表現を含めて、一般的に使用される素子、回路、およびデバイスのセットを収容してよい素子ライブラリ３００８、設計仕様３０１０、特性評価データ３０１２、検証データ３０１４、設計ルール３０１６、ならびにテスト・パターンおよびその他のテスト情報を含んでよいテスト・データ・ファイル３０１８からの入力を使用してよい。設計工程３００４は、例えば、タイミング解析、検証、設計ルール・チェック、配置配線処理などの、標準的な回路設計工程をさらに含んでよい。集積回路設計の当業者は、設計工程５０４において使用される可能性のある電子設計自動化ツールおよび電子設計自動化アプリケーションの範囲を、本発明の範囲および思想を逸脱することなく理解することができる。本発明の設計構造は、いずれかの特定の設計フローに限定されない。
【００９１】
設計工程３００４は、好ましくは、図１および２に示されたような本発明の実施形態を、任意のその他の集積回路設計またはデータ（該当する場合）と共に、第２の設計構造３０２０に変換する。設計構造３０２０は、集積回路のレイアウト・データ（例えば、ＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳ、またはそのような設計構造を格納するのに適した任意のその他の形式で格納された情報）の交換に使用されるデータ形式で、ストレージ媒体上に存在する。設計構造３０２０は、例えば、テスト・データ・ファイル、設計内容ファイル、製造データ、レイアウト・パラメータ、ワイヤ、各レベルの金属、ビア、形状、製造ラインで配線するためのデータ、ならびに図１および２に示されたような本発明の実施形態を製造するために半導体製造業者によって要求される任意のその他のデータなどの情報を含んでよい。その後、設計構造３０２０は段階３０２２に進んでよく、段階３０２２において、例えば設計構造３０２０は、テープアウトに進み、製造に向けてリリースされたり、マスク会社に向けてリリースされたり、別の設計会社に送信されたり、顧客に返送されたりなどする。
【００９２】
本発明は、図面に示された本発明の実施形態の詳細を参照して説明されたが、それらの詳細は、添付の特許請求の範囲において請求される本発明の範囲を限定することは意図されていない。
【図１】
2018537765.tif 000003
【図２】
2018537765.tif 000004
【図３】
2018537765.tif 000005
【図４】
2018537765.tif 000006
【図５】
2018537765.tif 000007
【図６】
2018537765.tif 000008
【図７】
2018537765.tif 000009
【図８】
2018537765.tif 000010
【図９】
2018537765.tif 000011
【図１０】
2018537765.tif 000012
【図１１】
2018537765.tif 000013
【図１２】
2018537765.tif 000014
【図１３】
2018537765.tif 000015
【図１４】
2018537765.tif 000016
【図１５】
2018537765.tif 000017
【図１６】
2018537765.tif 000018
【図１７】
2018537765.tif 000019
【図１８】
2018537765.tif 000020
【図１９】
2018537765.tif 000021
【図２０】
2018537765.tif 000022
【図２１】
2018537765.tif 000023
【図２２】
2018537765.tif 000024
【図２３】
2018537765.tif 000025
【図２４】
2018537765.tif 000026
【図２５】
2018537765.tif 000027
【図２６】
2018537765.tif 000028
【図２７】
2018537765.tif 000029
【図２８】
2018537765.tif 000030
【図２９】
2018537765.tif 000031
【図３０】
2018537765.tif 000032
【図３１】
2018537765.tif 000033
【図３２】
2018537765.tif 000034
【図３３】
2018537765.tif 000035
【図３４】
2018537765.tif 000036
【図３５】
2018537765.tif 000037
【図３６】
2018537765.tif 000038
【図３７】
2018537765.tif 000039
【国際調査報告】
2018537765.tif 000040
2018537765.tif 000041