(57)【要約】ＸＯＲエンジンがキャッシュのホスト／ネットワーク側に独特に配置された、性能最適化されたＲＡＩＤレベル３記憶域アクセス・コントローラ。本発明は、この独特のＸＯＲ配置と共に複数のデータ通信チャネルおよび集中化されたキャッシュ・メモリを利用して、ホスト・ネットワークとデータ記憶域との間の性能およびフォールト・トレランスを最大限にする。ＸＯＲをキャッシュのホスト／ネットワーク側に配置することにより、各記憶デバイスは完全に独立することができる。ＸＯＲエンジンがデータ・パス中に配置され、パリティがキャッシュ書込み転送中にリアルタイムで生成されるので、帯域幅オーバーヘッドは０になる。高性能ＲＡＩＤコントローラの適用例では、最小限の帯域幅オーバーヘッドのシステム・アーキテクチャが、優れた性能を提供する。
2004504658.tif 000002
【特許請求の範囲】
【請求項１】
ａ）ＸＯＲエンジンと、
ｂ）前記ＸＯＲエンジンに結合され、ホスト・コンピュータ・システムに結合するためのホスト・ネットワーク・インタフェースと、
ｃ）前記ＸＯＲエンジンに結合されたキャッシュと、
ｄ）前記キャッシュに結合され、複数の記憶デバイスに結合するための記憶デバイス・インタフェースとを備えるデータ管理アーキテクチャ。
【請求項２】
前記ＸＯＲエンジンが、
ａ）前記ホスト・ネットワーク・インタフェースに結合された第１のトランシーバと、
ｂ）ｉ）前記データを使用してＸＯＲパリティ・バイトを生成し、かつ前記パリティ・バイトを前記データに付加し、ｉｉ）ＸＯＲパリティをチェックし、ｉｉｉ）検出されたパリティ・エラーを訂正するための論理手段と、
ｃ）前記キャッシュに結合された第２のトランシーバとを備える請求項１に記載のデータ管理アーキテクチャ。
【請求項３】
前記ホスト・ネットワーク・インタフェースが、
ａ）物理インタフェースと、
ｂ）前記物理インタフェースに結合されたプロトコル・エンジンと、
ｃ）前記プロトコル・エンジンに結合された受信バッファと、
ｄ）前記プロトコル・エンジンに結合された送信バッファと、
ｅ）前記送信バッファおよび受信バッファに結合されたインタフェース・バッファと、
ｆ）前記プロトコル・エンジンに結合されたバスと、
ｇ）前記バスに結合されたマイクロコントローラと、
ｈ）前記バスに結合されたメモリとを備える請求項１に記載のデータ管理アーキテクチャ。
【請求項４】
前記キャッシュが、
複数のキャッシュ・セグメントを含み、前記キャッシュ・セグメントがそれぞれ、ｉ）デュアル・ポート・メモリ・アレイ、ｉｉ）前記ＸＯＲエンジンと前記デュアル・ポート・メモリ・アレイとの間に結合されたバス・エキスパンダ、ｉｉｉ）前記ＸＯＲエンジンと前記デュアル・ポート・メモリ・アレイとの間に結合されたバス・ファネル、およびｉｖ）前記記憶デバイス・インタフェースと前記デュアル・ポート・メモリとの間に結合されたバッファを備える請求項１に記載のデータ管理アーキテクチャ。
【請求項５】
前記記憶デバイス・インタフェースが、
ａ）物理インタフェースと、
ｂ）前記物理インタフェースに結合されたプロトコル・エンジンと、
ｃ）前記プロトコル・エンジンに結合された受信バッファと、
ｄ）前記プロトコル・エンジンに結合された送信バッファと、
ｅ）前記送信バッファおよび受信バッファに結合されたインタフェース・バッファと、
ｆ）前記プロトコル・エンジンに結合されたバスと、
ｇ）前記バスに結合されたマイクロコントローラと、
ｈ）前記バスに結合されたメモリとを備える請求項１に記載のデータ管理アーキテクチャ。
【請求項６】
ａ）ＸＯＲエンジンと、
ｂ）前記ＸＯＲエンジンに結合され、ホスト・コンピュータ・システムに結合するためのホスト・ネットワーク・インタフェースと、
ｃ）前記ＸＯＲエンジンに結合されたキャッシュと、
ｄ）前記キャッシュに結合され、複数の記憶デバイスに結合するための記憶デバイス・インタフェースとを備えるデータ管理アーキテクチャであって、
前記ＸＯＲエンジンが、
前記ホスト・ネットワーク・インタフェースに結合された第１のトランシーバと、
ｉ）前記データを使用してＸＯＲパリティ・バイトを生成し、かつ前記パリティ・バイトを前記データに付加し、ｉｉ）ＸＯＲパリティをチェックし、ｉｉｉ）検出されたパリティ・エラーを訂正するための論理手段と、
前記キャッシュに結合された第２のトランシーバとを備える、データ管理アーキテクチャ。
【請求項７】
ａ）ＸＯＲエンジンと、
ｂ）前記ＸＯＲエンジンに結合され、ホスト・コンピュータ・システムに結合するためのホスト・ネットワーク・インタフェースと、
ｃ）前記ＸＯＲエンジンに結合され、複数のキャッシュ・セグメントを含むキャッシュであって、前記キャッシュ・セグメントがそれぞれ、ｉ）デュアル・ポート・メモリ・アレイ、ｉｉ）前記ＸＯＲエンジンと前記デュアル・ポート・メモリ・アレイとの間に結合されたバス・エキスパンダ、ｉｉｉ）前記ＸＯＲエンジンと前記デュアル・ポート・メモリ・アレイとの間に結合されたバス・ファネル、およびｉｖ）前記記憶デバイス・インタフェースと前記デュアル・ポート・メモリとの間に結合されたバッファを備えるキャッシュと、
ｄ）前記キャッシュに結合され、複数の記憶デバイスに結合するための記憶デバイス・インタフェースとを備えるデータ管理アーキテクチャであって、
前記ＸＯＲエンジンが、
前記ホスト・ネットワーク・インタフェースに結合された第１のトランシーバと、
ｉ）前記データを使用してＸＯＲパリティ・バイトを生成し、かつ前記パリティ・バイトを前記データに付加し、ｉｉ）ＸＯＲパリティをチェックし、ｉｉｉ）検出されたパリティ・エラーを訂正するための論理手段と、
前記キャッシュに結合された第２のトランシーバとを備える、データ管理アーキテクチャ。
【発明の詳細な説明】
【０００１】
（発明の概要）
本発明は、独特のＸＯＲエンジン配置を有する、性能が最適化されたＲＡＩＤレベル３記憶域アクセス・コントローラである。本発明は、この独特のＸＯＲ配置と共に複数のデータ通信チャネルおよび集中化されたキャッシュ・メモリを利用して、ホスト・ネットワークとデータ記憶域との間の性能およびフォールト・トレランスを最大限にする。
【０００２】
（ＸＯＲの概念）
ＲＡＩＤシステムで使用されるＸＯＲパリティの概念は、エラー符号化およびエラー訂正（ＥＣＣ）に排他的論理和（ＸＯＲ）の数学的特性を利用する。パリティを計算してデータと共に記憶することにより、障害またはエラーの条件が発生したときに正しいデータを再生成する能力がＲＡＩＤシステムにもたらされる。例えば、データ・バイトＡが値１２（０００１１００２）を含み、データ・バイトＢが値１５（００００１１１１２）を含むとする。この２つのバイトにおける各８ビットにわたってＸＯＲ機能を用いて、パリティ値３（００００００１１２）を計算する。
００００１１００２∧００００１１１１２＝００００００１１２
【０００３】
このパリティ値は、データ・バイトＡおよびＢと共に記憶される。データ・バイトＡを含む記憶域に障害が起きた場合は、データ・バイトＢとパリティ値とのＸＯＲを計算することにより、データ・バイトＡの値を再生成することができる。
００００１１１１２∧００００００１１２＝０００１１００２
【０００４】
同様に、データ・バイトＢを含む記憶域に障害が起きた場合は、データ・バイトＡとパリティ値とのＸＯＲを行うことにより、データ・バイトＢを再生成することができる。
００００１１００２∧００００００１１２＝０００１１１１２
【０００５】
（ＸＯＲのアーキテクチャ上の配置）
キャッシュ方式のＲＡＩＤレベル３システムでは、アーキテクチャ内でパリティを計算するＸＯＲエンジンを配置するために可能な位置が３つある。すなわち、
【０００６】
１）キャッシュ・データ・パスの記憶域側（キャッシュと記憶デバイス・インタフェースとの間）の位置
【０００７】
２）キャッシュに対する別個のポートとしての位置
【０００８】
３）キャッシュ・データ・パスのホスト・ネットワーク側（キャッシュとホスト・ネットワーク・インタフェースとの間）の位置
【０００９】
図１に示すようにＸＯＲエンジンをキャッシュの記憶域側に配置することは、ハードウェアの視点から、ＸＯＲエンジンを配置するのに最も容易な位置である。しかし、この解決法には、性能に関する重大な欠点がある。データが記憶デバイスに書き込まれるときにパリティが生成されて記憶されるので、ホスト入出力コマンドに関係するすべての記憶デバイスは、共にコマンド同期化されていなければならない。すなわち、これらがすべて同じ入出力コマンドを実行していなければならない。コマンド同期化された１組の記憶デバイスのうちで最も遅いデバイスがシステム帯域幅を決定するので、このことはシステム性能に悪影響を及ぼす可能性がある。ランダム・ファイル転送の場合のように、ＲＡＩＤシステムの記憶デバイスが多量の「シーク」を実行しているとき、これは格別に大きな性能上の問題である。
【００１０】
図２に示すように、ＸＯＲエンジンをキャッシュに対する別個のポートとして配置すると、データが記憶デバイスに書き込まれる前にパリティが別個のオペレーションとして生成されるので、各記憶デバイスを完全に独立とする、すなわちコマンド非同期とすることができる。記憶デバイスがデータ転送を開始するのに互いに待つ必要がないとき、独立した入出力オペレーションの連続を発行することができる。この構成では、ＸＯＲポートは、ソフトウェアＸＯＲ実装とすることもでき（ＣＰＵがデータを読み取ってＸＯＲを行い、パリティを生成する）、ハードウェアＸＯＲ実装とすることもできる（専用ハードウェア回路がデータを読み取ってＸＯＲを行い、パリティを生成する）。ハードウェア設計の視点からは、このアーキテクチャは、独立した３つのポート、すなわちホスト／ネットワークと記憶デバイスとＸＯＲエンジンとからキャッシュにアクセス可能でなければならない点で、かなり一層複雑である。データをキャッシュからＸＯＲポートにルーティングしてパリティを生成し、その後キャッシュに戻さなければならないので、キャッシュの総帯域幅の３分の１以上がこのオペレーションの実行のために犠牲になる。
【００１１】
図３に示すように、ＸＯＲエンジンをキャッシュのホスト／ネットワーク側に配置すると、各記憶デバイスは完全に独立することができる。ＸＯＲエンジンがデータ・パス中に配置され、パリティがキャッシュ書込み転送中にリアルタイムで生成されるので、帯域幅オーバーヘッドは０になる。高性能ＲＡＩＤコントローラの適用例では、最小限の帯域幅オーバーヘッドのシステム・アーキテクチャが、優れた性能を提供する。
【００１２】
従来技術のＲＡＩＤシステム・アーキテクチャでは、図１に関して上述したように、ＸＯＲエンジンをキャッシュの記憶域インタフェース側に配置する。記憶デバイス間のコマンド同期が必要とされるため、このアーキテクチャの性能は、コマンド同期化された１組の記憶デバイスにおける最悪の場合のシーク・タイムに直接に結び付く。さらに、現行技術の記憶デバイスは、コマンドタグ・キューイングと呼ばれる機能を実装する。このオペレーションは、記憶デバイスが入出力コマンドのキューに作用することを可能にするものであり、これにより記憶デバイスは、最も効率的な順序で入出力命令を実行して、帯域幅効率をさらに高めることができる。しかし、従来技術のアーキテクチャで必要とされるコマンド同期のために、コマンドタグ・キューイングを完全に利用して性能を高めることができない。
【００１３】
（性能が最適化されたＲＡＩＤ３記憶域アクセス・コントローラの発明）
本発明による記憶域アクセス・コントローラでは、図３に示すようにＸＯＲエンジンをキャッシュのホスト／ネットワーク側に配置する新規な配置により、図１および２に示したＸＯＲ配置の欠陥が除去される。ＸＯＲエンジンがキャッシュのホスト／ネットワーク側に位置するので、パリティは、データがホスト・ネットワークから受け取られるときにリアルタイムで計算され、データと共にキャッシュに記憶される。データが記憶デバイスに転送されるとき、すべての記憶デバイス通信チャネルは、それらの最大帯域幅を利用してコマンド非同期で稼動することができる。
【００１４】
本発明によるアーキテクチャでは、もはや各記憶デバイスのコマンドが同期化されないので、この場合、コマンドタグ・キューイングを使用してシステム性能をさらに高めることができる。本発明のこの特性は、記憶デバイスの層が追加されたときはより重要になる。記憶デバイスの層が複数あるとき、本発明は、「シーク」が隠れた状態になるので、すなわち帯域幅オーバーヘッドにトランスペアレントになるので、優れた性能を提供する。別の記憶デバイスが通信チャネルを介してキャッシュ・メモリとの間でデータを転送している間に、１つまたは多くの記憶デバイスがそれ自体のデータを「シーク」していることが可能である。シークおよびアクティブ通信に関するこの時間多重方式により、本発明によるアーキテクチャは、従来技術のアーキテクチャよりも性能が優れている。ＸＯＲエンジンをキャッシュのホスト・ネットワーク側に配置するこの独特の配置は、性能をもたらす本発明の特性である。
【００１５】
（発明の詳細な説明）
性能が最適化された記憶域アクセス・コントローラである本発明は、集中化されたデータ・キャッシュのホスト／ネットワーク側にパリティＸＯＲエンジンが位置するＲＡＩＤコントローラである。ＸＯＲディジタル回路の独特の位置により、本発明は、最小限のパリティ計算オーバーヘッドでデータ転送帯域幅を最大限にすることができる。
【００１６】
（ホスト／ネットワーク・インタフェース）
図３を参照するが、本発明は、ＸＯＲエンジン３３と通信するホスト／ネットワーク・インタフェース３１、ならびに、ＸＯＲエンジン３３と記憶デバイス・インタフェース３７の両方と通信する中央キャッシュ・メモリ３５を利用する。図４に示すように、記憶マネージャ４１が、入出力コマンドのデコーダ機能および制御機能を提供し、中央キャッシュ・メモリの割振りおよび利用を管理する。ホスト／ネットワーク・インタフェース３１は、ホスト・コンピュータまたはコンピュータ・ネットワークへの通信インタフェースである。一実施形態では、本発明は、ＳＣＳＩコマンド・セットを利用するＡＮＳＩＸ３Ｔ１１ファイバ・チャネル・インタフェースをフロント・エンドで維持するが、その他のインタフェースとプロトコルの組合せで置き換えてもよい（ＴＣＰ／ＩＰ、ＥＴＨＥＲＮＥＴ（登録商標）、ＩＮＦＩＮＩＢＡＮＤなど）。このインタフェースのバック・エンドは、６４データ・ビットからなる双方向並列データ・バスである。その他のデータ・バス幅も、モジュロ２（２、４、８、１６、３２、．．．）である限り使用することができる。ホスト／ネットワーク・インタフェース３１は、ファイバ・チャネル・コマンドをデータ・コマンドおよび非データ・コマンドに変換しデコードする。非データ・コマンドは、記憶マネージャによってさらにデコードされるようにバッファに入れられ、データ・コマンドは、ホスト読取りオペレーションおよびホスト書込みオペレーションのためにデコードされる。ホスト書込みコマンドは、データをホスト／ネットワーク・インタフェース３１からＸＯＲエンジン３３にルーティングし、ホスト読取りコマンドは、キャッシュ・メモリ３５からＸＯＲエンジンを介してホスト・ネットワーク・インタフェース３３に転送をセットアップする。
【００１７】
これに関して図５を参照するが、ホスト／ネットワーク・インタフェース３１は、カスタムＡＳＩＣ（特定用途向け集積回路）内に実装される。このＡＳＩＣは、物理インタフェース５１（例えばＬＳＩ　Ｌｏｇｉｃ　Ｉｎｃ．のＧｉｇａｂｌａｚｅ（商標）トランシーバ）と、プロトコル・エンジン５３（ＬＳＩ　Ｌｏｇｉｃ　Ｉｎｃ．のＭｅｒｌｉｎ（商標）Ｆｉｂｒｅ　Ｃｈａｎｎｅｌコアで実装される）とを利用する。送信バッファ５５ａおよび受信バッファ５５ｂは、アドレス・モードを制御するためのカスタム論理回路を有するデュアルポートＳＲＡＭセルによって実装される。これらのカスタム論理回路は、標準的な２進カウンタで実装することができる。一実施形態では、１５ビットの２進カウンタを使用してバッファの書込みアドレスを計算し、１５ビットのカウンタを使用して読取りアドレスを計算する。書込みカウンタはＦＩＦＯ書込みによってインクリメントし、読取りカウンタはＦＩＦＯ読取りによってインクリメントする。送信バッファの深度は１０ＫＢであり、受信バッファの深度は１２ＫＢである。ホスト／ネットワーク・インタフェース３１は、５３．１２５ＭＨｚで稼動する３２ビットＭＩＰＳ（商標）ＩＳＡなどのマイクロコントローラ５５の制御下で動作する。このマイクロコントローラは、ＬＳＩ　Ｌｏｇｉｃ　Ｉｎｃ．から入手可能なＴｉｎｙＲＩＳＣ（商標）コアを使用して実装することができる。マイクロコントローラ６３は、内部８Ｋｘ３２ＳＲＡＭによってサポートされ、また、記憶マネージャへのプロセッサ間通信のためのＩＤＴ７０Ｖ２５　８Ｋｘ１６デュアルポートＳＲＡＭ６１によって外部からサポートされる。
【００１８】
（ＸＯＲエンジン）
ＸＯＲエンジン３３は、前述のように、ホスト／ネットワーク・インタフェース３１と中央キャッシュ・メモリ３５との間にある。ＸＯＲエンジンは、ＸＯＲパリティの生成、ＸＯＲパリティのチェック、正しくないデータの再生成すなわちエラー訂正の、３つの機能を実施する。ＸＯＲエンジンは、パイプライン化されたレジスタ・セットを使用して、データ転送中にリアルタイムで計算、チェック、訂正を行うことができる。図６を参照すると、この図は本発明で使用するのに適したＸＯＲエンジンの一実施形態のブロック図を示している。ＸＯＲエンジンは、ホスト／ネットワーク・インタフェースからトランシーバ６５を介して双方向６４ビット・バスを受け取る。ホスト書込みデータ転送中は、ＸＯＲエンジンは、ホスト／ネットワーク・インタフェースからの６４データ・ビットのＸＯＲを行うことによって８ビットのパリティ・バイトを計算する。
【００１９】
このＸＯＲバイトは次のように計算される。
【００２０】
パリティ・ビット［００］＝Ｄ［００］∧Ｄ［０８］∧Ｄ［１６］∧Ｄ［２４］∧Ｄ［３２］∧Ｄ［４０］∧Ｄ［４８］∧Ｄ［５６］
【００２１】
パリティ・ビット［０１］＝Ｄ［０１］∧Ｄ［０９］∧Ｄ［１７］∧Ｄ［２５］∧Ｄ［３３］∧Ｄ［４１］∧Ｄ［４９］∧Ｄ［５７］
【００２２】
パリティ・ビット［０２］＝Ｄ［０２］∧Ｄ［１０］∧Ｄ［１８］∧Ｄ［２６］∧Ｄ［３４］∧Ｄ［４２］∧Ｄ［５０］∧Ｄ［５８］
【００２３】
パリティ・ビット［０３］＝Ｄ［０３］∧Ｄ［１１］∧Ｄ［１９］∧Ｄ［２７］∧Ｄ［３５］∧Ｄ［４３］∧Ｄ［５１］∧Ｄ［５９］
【００２４】
パリティ・ビット［０４］＝Ｄ［０４］∧Ｄ［１２］∧Ｄ［２０］∧Ｄ［２８］∧Ｄ［３６］∧Ｄ［４４］∧Ｄ［５２］∧Ｄ［６０］
【００２５】
パリティ・ビット［０５］＝Ｄ［０５］∧Ｄ［１３］∧Ｄ［２１］∧Ｄ［２９］∧Ｄ［３７］∧Ｄ［４５］∧Ｄ［５３］∧Ｄ［６１］
【００２６】
パリティ・ビット［０６］＝Ｄ［０６］∧Ｄ［１４］∧Ｄ［２２］∧Ｄ［３０］∧Ｄ［３８］∧Ｄ［４６］∧Ｄ［５４］∧Ｄ［６２］
【００２７】
パリティ・ビット［０７］＝Ｄ［０７］∧Ｄ［１５］∧Ｄ［２３］∧Ｄ［３１］∧Ｄ［３９］∧Ｄ［４７］∧Ｄ［５５］∧Ｄ［６３］
【００２８】
次いで、ＸＯＲパリティ・バイトを６４ビット・データ・ワードに付加して、７２ビット・ワードを生成する。これを、７２ビット・データ・バスでキャッシュ・メモリに直接転送する。さらに、７２ビット・バスの９つの各データ・バイトを保護するために、標準バイト・パリティも追加する。
【００２９】
ホスト読取り転送中は、同じ７２ビット・データ・バス上で、７２データ・ビットをキャッシュ・メモリから受け取る。ＸＯＲエンジンは、ホスト書込みＸＯＲと同じＸＯＲアルゴリズムを使用して、下位６４データ・ビットに対するＸＯＲパリティを計算する。次いで、以下の式に従って、計算したＸＯＲパリティ・バイトと７２ビット・データ・バスの上位バイトとのＸＯＲを行う。
【００３０】
エラー・ビット［００］＝Ｄ［６４］∧パリティ・ビット［００］
【００３１】
エラー・ビット［０１］＝Ｄ［６５］∧パリティ・ビット［０１］
【００３２】
エラー・ビット［０２］＝Ｄ［６６］∧パリティ・ビット［０２］
【００３３】
エラー・ビット［０３］＝Ｄ［６７］∧パリティ・ビット［０３］
【００３４】
エラー・ビット［０４］＝Ｄ［６８］∧パリティ・ビット［０４］
【００３５】
エラー・ビット［０５］＝Ｄ［６９］∧パリティ・ビット［０５］
【００３６】
エラー・ビット［０６］＝Ｄ［７０］∧パリティ・ビット［０６］
【００３７】
エラー・ビット［０７］＝Ｄ［７１］∧パリティ・ビット［０７］
【００３８】
エラー・ビットのいずれかが０でない場合、ＸＯＲパリティ・エラーが示される。この場合は、バイト・パリティ・ビットをデコードするか、あるいは記憶デバイスに照会することにより、エラーをバイト・グループに局所化することができる。エラーが検出され、エラーのバイト・レーンがデコードされた場合、ＸＯＲエンジンは、ＸＯＲパリティ再生成器と共に置換マルチプレクサを備えることによってエラー訂正が可能になる。
【００３９】
データ再生成の場合、エラーのバイト・レーンをパリティ・バイト（Ｄ［７１：６４］）で置換し、次いでこの６４ビット・ワードに対してパリティを再計算する。得られる８ビット・コードが、エラーのバイト・レーンに対する再生成されたデータ・バイトである。次いで、このデータを適切なバイト・レーン中に代用して、６４ビット双方向データ・バスを介してホスト／ネットワーク・インタフェースに６４ビット・ワードとして転送する。
【００４０】
これに関して図６を参照するが、ＸＯＲエンジン３３は、標準的な２入力ブール排他的論理和（ＸＯＲ）ゲートを使用してＲＸ　ＸＯＲ７７およびＴＸ　ＸＯＲ７３の機能を実装できるカスタムＡＳＩＣを利用する。同様に、障害条件にある排他的論理和パリティ・データを再生成するのに使用されるＸＯＲ再生成器６９も、同じ標準的な２入力ブールＸＯＲゲートを使用して実装することができる。パリティ・エラー検出器７５もまた、パリティ・データの各ビットを８つの送信生成されたＸＯＲビットの各ビットでチェックするように配線された２入力ＸＯＲゲートのアレイで実装することができる。
【００４１】
レーンＭＵＸ７１およびパリティ置換ＭＵＸ６７は、マルチプレクサを使用して実装される。レーンＭＵＸは、ＦＡＩＬ　ＣＨ．ＳＥＬＥＣＴ入力で示す４ビット選択コードを伴う８つの９：１マルチプレクサとして配線される。これらの入力信号は、記憶デバイス・インタフェース３７へのデータ・チャネルのいずれかに欠陥があるときは常に生成される。パリティ置換ＭＵＸは、６４個の２：１マルチプレクサとして実装することができ、正しい６４ビット・データをトランシーバ６５から直接選択するか、あるいは再生成された６４ビット・データをＸＯＲ再生成器６９から選択するようにすることができる。
【００４２】
トランシーバ６５および７９は、トライステート可能の双方向入出力バッファを使用して実装することができる。
【００４３】
（中央キャッシュ・メモリ３５）
中央キャッシュ・メモリは、ＲＡＩＤレベル３ストライピングを実施する固体デュアル・ポート・メモリ・アレイであり、図７にこれを示す。キャッシュ・メモリは、ＸＯＲエンジンと通信するための７２ビットの双方向バス８１と、各記憶デバイス・インタフェースと通信するための個別の６４ビット双方向バス８３とを有する。また、サポートされる記憶インタフェース数はモジュロ２でなければならず、それに加えて、ＸＯＲパリティをサポートするためのものが少なくとも１つなければならない。本発明による記憶域アクセス・コントローラは、データ用の記憶インタフェース８５を８つ、パリティ用の記憶インタフェース８７を１つ、フォールト・トレランス予備用にマッピング可能記憶インタフェース８７を１つ維持する。この構成を「８＋１＋１」と呼ぶ。
【００４４】
図８を参照するが、ホスト／ネットワーク書込み中は、ＸＯＲエンジンからの７２ビットのデータが、中央キャッシュ・メモリにおいて一連のバス・エキスパンダ９１中で受け取られる。これらのバス・エキスパンダの機能は、７２ビット・バスを９バイト・レーンに分割することである。次いで、各バイト・レーンを時間逆多重化して、６４ビット・バス９３を構築することができる。この結果、９つの６４ビット幅バスとなり、各バスはそれ自体のキャッシュ・メモリ・セグメントにフィードする。各６４ビット・バスは、デュアル・ポート・メモリ・アレイ・セグメント９５の「Ａ」ポートにフィードする。この時間逆多重化の機能を入来データに対して実施することにより、データが中央キャッシュ・メモリ・アレイに記憶されるときに、ＲＡＩＤレベル３ストライピング済みデータが生み出される。
【００４５】
すべてのＲＡＩＤ３データがキャッシュ中にある状態になれば、データは、標準的な双方向トランシーバ・デバイスによって実装されるレジスタド・バッファ９９を介し、メモリ・セグメントの「Ｂ」ポートを介して、記憶デバイス・インタフェースからアクセス可能になる。特定の入出力コマンドに関するすべてのデータがキャッシュ内にあるので、各記憶デバイス・インタフェースは今や、それらのメモリ・セグメント上で独立して動作することができる。この特徴により、本発明は、コマンドタグ・キューイングなどの高度なディスク・ドライブ機能を利用することができ、読取りおよび書込みのインターリーブおよび並べ替えを行うことによって記憶デバイスの性能を最大限にする。
【００４６】
ホスト／ネットワーク読取り機能の間は、各記憶デバイス・インタフェースは、それら自体のコマンド・キューに従って、それらに割り当てられたデータ・ブロックを独立して記憶デバイスから読み取る。この入出力コマンドに関連するデータがすべての記憶デバイス・インタフェースから「Ｂ」ポートを介してキャッシュに転送されると、キャッシュからＸＯＲエンジンを介してホスト／ネットワーク・インタフェースへの転送が開始される。データは、「Ａ」ポートを介してメモリ・セグメントから取り出される。６４ビット・バスはバス・ファネル９７中にフィードされ、バス・ファネル９７はデータを８ビット・バス上に時間多重化する。これらの８ビット・バスまたはバイト・レーンは、共に連結して７２ビット・バスを形成し、ＸＯＲマシンにフィードする。
【００４７】
（記憶デバイス・インタフェース３７）
記憶デバイス・インタフェース３７は、中央キャッシュ・メモリの個々のキャッシュ・メモリ・セグメント８５と記憶デバイスとの間でデータを転送する通信インタフェースである。一実施形態では、本発明による記憶域アクセス・コントローラは、このインタフェースのためにファイバ・チャネルをＳＣＳＩプロトコルで使用するが、記憶デバイスによってサポートされるその他のインタフェースおよびプロトコルを使用することもできる。記憶デバイス・インタフェースは、６４ビット双方向バスを介してキャッシュ・メモリ・セグメントと通信し、６４ビット・バスを記憶デバイスに必要なプロトコルに変換するためのプロトコル・スタックを管理する。
【００４８】
図９に示すように、記憶デバイス・インタフェース３７は、ホスト／ネットワーク・インタフェースに使用されるのと同じカスタムＡＳＩＣデバイスを利用する。これは、物理インタフェース１０７用のＧｉｇａｂｌａｚｅ（商標）トランシーバと、プロトコル・エンジン１０５用のＭｅｒｌｉｎ（商標）Ｆｉｂｒｅ　Ｃｈａｎｎｅｌコアと、マイクロコントローラ１１１用のＴｉｎｙＲＩＳＣ（商標）ＭＩＰｓプロセッサを備える。マイクロコントローラは、８Ｋワードの内部ＳＲＡＭによってサポートされる。受信バッファおよび送信バッファが、内部デュアル・ポートＳＲＡＭセル１０３Ａおよび１０３Ｂとして実装され、インタフェース・バッファ１０１は標準的なＡＳＩＣ入出力バッファ・セルである。記憶マネージャとのプロセッサ間通信のために、外部ＩＤＴ７０Ｖ２５　８Ｋｘ１６デュアルポートＳＲＡＭを利用する。
【００４９】
（記憶マネージャ）
図４に関して上述したように、記憶マネージャ４１は、ホスト／ネットワーク・インタフェースと記憶デバイス・インタフェースの両方にアクセスできるディジタル・コンピュータ・サブシステムである。記憶マネージャは、ホスト／ネットワーク・インタフェースによって解析されたホスト／ネットワーク・インタフェース・コマンドをデコードすることを担う。これらのコマンドに応答して、中央キャッシュとネットワーク・インタフェースおよび記憶インタフェースとの間のデータ・トラフィックを指示するための制御情報を、ホスト／ネットワーク・インタフェースと記憶デバイス・インタフェースの両方に送る。このサブシステムはまた、キャッシュ・メモリ空間の割振りおよび管理を行うためのキャッシュ機能も提供する。
【００５０】
図１０に示すように、記憶マネージャ４１は、ＦＴ−６４０１０システム・コントローラ１２３とＩ８２５５８Ｅｔｈｅｒｎｅｔ（登録商標）コントローラ１２５とによってサポートされる、１００ＭＨｚ　ＭＩＰＳ（商標）６４ビット・マイクロプロセッサ（ＩＤＴ４６５０）などのマイクロプロセッサ１２１を利用する。プロセッサＲＡＭが、１６ＭＢのファスト・ページ・モード・ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）１２７によって実装され、ＲＯＭ１２９が、４ＭＢのＦＬＡＳＨメモリによって実装される。システム通信ポート１３１が１６５５０ＵＡＲＴによってサポートされ、ホスト・ネットワーク・インタフェースおよび記憶インタフェースへの通信は、標準的な双方向トランシーバを介して行われる。
【図面の簡単な説明】
【図１】従来技術のＲＡＩＤレベル３記憶域アクセス・コントローラ・アーキテクチャを示すブロック図である。
【図２】代替ＲＡＩＤレベル３記憶域アクセス・コントローラ・アーキテクチャを示すブロック図である。
【図３】本発明によるＲＡＩＤレベル３記憶域アクセス・コントローラ・アーキテクチャを示すブロック図である。
【図４】本発明で使用できるタイプの記憶域アクセス・コントローラのブロック・レベル図である。
【図５】本発明で使用できるタイプのホスト／ネットワーク・インタフェースのブロック・レベル図である。
【図６】本発明で使用できるタイプのＸＯＲエンジンのブロック・レベル図である。
【図７】本発明で使用できるタイプの中央キャッシュ・メモリのブロック・レベル図である。
【図８】図７の中央キャッシュ・メモリ中で使用するタイプのキャッシュ・セグメントのブロック・レベル図である。
【図９】本発明で使用できるタイプの記憶デバイス・インタフェースのブロック・レベル図である。
【図１０】本発明で使用できるタイプの記憶マネージャのブロック・レベル図である。
【図１】
2004504658.tif 000003
【図２】
2004504658.tif 000004
【図３】
2004504658.tif 000005
【図４】
2004504658.tif 000006
【図５】
2004504658.tif 000007
【図６】
2004504658.tif 000008
【図７】
2004504658.tif 000009
【図８】
2004504658.tif 000010
【図９】
2004504658.tif 000011
【図１０】
2004504658.tif 000012
【国際公開パンフレット】
2004504658.tif 000013
2004504658.tif 000014
2004504658.tif 000015
2004504658.tif 000016
2004504658.tif 000017
2004504658.tif 000018
2004504658.tif 000019
2004504658.tif 000020
2004504658.tif 000021
2004504658.tif 000022
2004504658.tif 000023
2004504658.tif 000024
2004504658.tif 000025
2004504658.tif 000026
2004504658.tif 000027
2004504658.tif 000028
2004504658.tif 000029
2004504658.tif 000030
2004504658.tif 000031
2004504658.tif 000032
2004504658.tif 000033
2004504658.tif 000034
2004504658.tif 000035
2004504658.tif 000036