(57)【要約】  メモリ・システムが、メモリ・バンクと、パケット交換網へのインターフェースと、メモリ・コントローラとを含む。このメモリ・システムは、メモリ・バンクへのアクセスを命じるパケット・ベースのコマンドをインターフェースによって受信するように適応される。メモリ・コントローラは、メモリ・バンクの初期化および構成サイクルを実行するように適応される。組込み中央処理装置（ＣＰＵ）は、メモリ・コントローラ内に含まれ、コンピュータ実行可能命令を実行するように適応される。メモリ・コントローラは、パケット・ベースのコマンドを処理するように適応される。
2008535103.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストレージ・システムであって、
ホスト・コンピュータ／サーバへの結合に適応された第１のディレクタと、
ディスク・ドライブのバンクへの結合に適応された第２のディレクタと、
該第１と第２のディレクタの間に論理的に配置され、該第１と第２のディレクタの間で通信するキャッシュ・メモリとを備え、
該キャッシュ・メモリが、コンピュータ実行可能命令を実行するように適応された組込み中央処理装置（ＣＰＵ）を有するメモリ・コントローラを含む、データ・ストレージ・システム。
【請求項２】
前記第１と第２のディレクタ、および前記キャッシュ・メモリを接続するパケット交換網をさらに備え、メモリ・コマンドが該パケット交換網を介して前記メモリ・コントローラに送信され得る請求項１に記載のデータ・ストレージ・システム。
【請求項３】
前記組込みＣＰＵが、前記第１のディレクタからのメモリ・コマンドに応答して前記キャッシュ・メモリにアクセスするように適応される、請求項１に記載のデータ・ストレージ・システム。
【請求項４】
前記組込みＣＰＵが、前記第２のディレクタからのメモリ・コマンドに応答して前記キャッシュ・メモリにアクセスするように適応される、請求項１に記載のデータ・ストレージ・システム。
【請求項５】
前記メモリ・コントローラが、前記組込みＣＰＵによる処理とは独立して、前記キャッシュ・メモリの外部からのメモリ・コマンドに応答して前記キャッシュ・メモリにアクセスするように適応される、請求項１に記載のデータ・ストレージ・システム。
【請求項６】
前記組込みＣＰＵが、前記キャッシュ・メモリに格納された前記コンピュータ実行可能命令に従って前記キャッシュ・メモリにアクセスするように適応される、請求項１に記載のデータ・ストレージ・システム。
【請求項７】
前記組込みＣＰＵが内部メモリを有し、前記ＣＰＵの該内部メモリに格納された前記コンピュータ実行可能命令に従って前記キャッシュ・メモリにアクセスするように適応される、請求項１に記載のデータ・ストレージ・システム。
【請求項８】
前記メモリ・コントローラが、パケット交換網へのインターフェースをさらに備える、請求項１に記載のデータ・ストレージ・システム。
【請求項９】
前記組込みＣＰＵが、前記組込みＣＰＵに向けられたメッセージを処理するように適応されたメッセージ・エンジンをさらに備える、請求項１に記載のデータ・ストレージ・システム。
【請求項１０】
前記組込みＣＰＵが、前記キャッシュ・メモリへのインターフェースをさらに備える、請求項１に記載のデータ・ストレージ・システム。
【請求項１１】
メモリ・システムであって、
メモリ・バンクと、
パケット交換網へのインターフェースとであって、該メモリ・システムがインターフェースによりパケット・ベース・コマンドを受信して該メモリ・バンクへアクセスされる、インターフェースと、
該メモリ・バンクの初期化および構成サイクルを実行するように適応されたメモリ・コントローラとを備え、該メモリ・コントローラは、コンピュータ実行可能命令を実行するように適応された組込み中央処理装置（ＣＰＵ）を有し、該メモリ・コントローラは、該パケット・ベース・コマンドを処理するように適応されている、メモリ・コントローラと
を備える、メモリ・システム。
【請求項１２】
前記組込みＣＰＵが、前記メモリ・システムの外部からのメモリ・コマンドに応答して前記メモリ・バンクにアクセスするように適応される、請求項１１に記載のメモリ・システム。
【請求項１３】
前記メモリ・コントローラが、前記組込みＣＰＵによる処理とは独立して、前記メモリ・システムの外部からのメモリ・コマンドに応答して前記メモリ・バンクにアクセスするように適応される、請求項１１に記載のメモリ・システム。
【請求項１４】
前記組込みＣＰＵが、前記メモリ・バンクに格納された前記コンピュータ実行可能命令に従って前記メモリ・バンクにアクセスするように適応される、請求項１１に記載のメモリ・システム。
【請求項１５】
前記組込みＣＰＵが内部メモリを有し、かつ前記ＣＰＵの該内部メモリ内に格納された前記コンピュータ実行可能命令に従って前記メモリ・バンクにアクセスするように適応される、請求項１１に記載のメモリ・システム。
【請求項１６】
前記組込みＣＰＵが、前記組込みＣＰＵに向けられたメッセージを処理するように適応されたメッセージ・エンジンをさらに備える、請求項１１に記載のメモリ・システム。
【請求項１７】
前記組込みＣＰＵが、前記メモリ・バンクへの直接のインターフェースをさらに備える、請求項１１に記載のメモリ・システム。
【請求項１８】
メモリ・コントローラであって、
メモリの初期化および構成サイクルを実行するように適応された論理と、
コンピュータ実行可能命令を実行するように適応された組込み中央処理装置（ＣＰＵ）と、
メモリにアクセスするように適応されたインターフェースと
を備え、
該組込みＣＰＵが、該コンピュータ実行可能命令に従って該メモリにアクセスするように適応され、
該メモリ・コントローラは、該組込みＣＰＵによる処理とは独立に、該メモリ・コントローラの外部からの指示に応答して該メモリにアクセスするように適応される、メモリ・コントローラ。
【請求項１９】
前記組込みＣＰＵが、前記組込みＣＰＵに向けられたメッセージを処理するように適応されたメッセージ・エンジンをさらに備える、請求項１８に記載のメモリ・システム。
【請求項２０】
前記組込みＣＰＵが内部メモリを有し、前記ＣＰＵの該内部メモリ内に格納された前記コンピュータ実行可能命令に従って前記メモリ・バンクにアクセスするように適応される、請求項１８に記載のメモリ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストレージ・システムに関し、より詳細には、キャッシュ・メモリ・コントローラを有するデータ・ストレージ・システムに関する。
【背景技術】
【０００２】
高性能で高容量の情報技術システムの必要性の高まりは、複数の要因によって生じている。多くの業界では、極めて重要な情報技術アプリケーションには、非常に高いサービスレベルが必要である。それと同時に、ますます多くのユーザが、高品質のマルチメディア・コンテンツを含む、巨大で着実に増加している多量のデータに適時アクセスすることを求めるにつれて、世界では情報が爆発的に増加している。ユーザは、情報技術の解決策がデータを保護し、厳しい条件の下でデータ損失を最小限に抑えてうまく機能することをも求めている。また、すべてのタイプのコンピューティング・システムが、より多くのデータを収容するだけでなく、ますます相互に接続されるようにもなり、交換されるデータ量が幾何級数的に増加している。
【０００３】
この要求に応えて、ネットワーク・コンピュータ・システムは一般に、地理的に分離されまたは分散された複数のコンピュータ・ノードを含み、これらのノードは１つまたは複数のネットワーク通信媒体を介して互いに通信するように構成され、またそれらによって相互接続される。ある従来型のネットワーク・コンピュータ・システムは、データをそこに格納し、またそこから取り出すための集中化された場所をネットワーク内に設けるように構成されたネットワーク・ストレージ・サブシステムを含む。有利には、ネットワーク内でこうしたストレージ・サブシステムを使用することによって、ネットワークのデータ・ストレージ管理および制御機能の多くが、ネットワーク・ノード間に分散されるのではなく、サブシステムで集中化される。
【０００４】
本願の譲受人（以下、「譲受人」）によってＳｙｍｍｅｔｒｉｘ（商標）の商標名で製造され販売されるあるタイプの従来のネットワーク・ストレージ・サブシステム（以下、「譲受人の従来のストレージ・システム」と呼ばれる）は、１つまたは複数のディスク・アレイとして構成された１組の大容量記憶ディスク装置を含む。ディスク装置は、サブシステム内の共有のキャッシュ・メモリ・リソースに結合されたディスク・コントローラ（一般に「バックエンド」コントローラ／ディレクタと呼ばれる）によって制御される。キャッシュ・メモリ・リソースもまた、（一般に「フロントエンド」コントローラ／ディレクタと呼ばれる）複数のホスト・コントローラに結合される。ディスク・コントローラは、特に挙げると、ディスク・コントローラをディスク装置に連結させる各々のディスク・アダプタに結合される。同様に、ホスト・コントローラは、特に挙げると、ホスト・コントローラを、チャネル入出力（Ｉ／Ｏ）ポートを介してネットワーク通信チャネル（たとえばＳＣＳＩ、エンタープライズ・システム接続（ＥＳＣＯＮ）またはファイバ・チャネル（ＦＣ）ベースの通信チャネル）に連結させる各々のホスト・チャネル・アダプタに結合され、このネットワーク通信チャネルはストレージ・サブシステムを、サブシステムの外部のコンピュータ・ネットワーク内のコンピュータ・ノード（一般「ホスト」コンピュータ・ノードまたは「ホスト」と呼ばれる）に結合する。
【０００５】
譲受人の従来のストレージ・システムでは、共有のキャッシュ・メモリ・リソースは、多数のキャッシュ・メモリ領域に分割される比較的に大量のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含む。それぞれの各キャッシュ・メモリ領域は、特に挙げると、それぞれのメモリ・アレイと、それぞれの１対のメモリ領域Ｉ／Ｏコントローラとを含む。それぞれのメモリ領域に含まれるメモリ・アレイは、複数の各コマンドおよびデータ・インターフェース・セットを介してそれぞれのメモリ領域のＩ／Ｏコントローラに連結されたＤＲＡＭ装置の複数のバンク（こうした各バンクが多数の６４、１２８のあるいは２５６メガビットＤＲＡＭ集積回路チップを含む）へと構成される。
【０００６】
それぞれのメモリ領域内のＩ／Ｏコントローラは、ホストおよびディスク・コントローラから受信されたコマンドに基づいて、それぞれのメモリ領域内で比較的に高いレベルの制御およびメモリ・アクセス機能を実施する。たとえば、ホストおよびディスク・コントローラから受信されたコマンドに基づいて、領域内の他のＩ／Ｏコントローラとの調停操作を実施して、それぞれのメモリ領域内の各Ｉ／Ｏコントローラは、任意の所与の時刻に領域内のＩ／Ｏコントローラのうちの１つだけがメモリ・アレイにアクティブにアクセス／制御することを許されるようにする。さらに、それぞれのメモリ領域内の各Ｉ／Ｏコントローラはアドレス復号操作を実施し、それによって、ホスト・コントローラまたはディスク・コントローラからＩ／Ｏコントローラへのメモリ・アクセス要求（たとえばメモリ読出しまたは書込み要求）の一部としてホスト・コントローラまたはディスク・コントローラによりＩ／Ｏコントローラに供給されたメモリ・アドレスは、Ｉ／Ｏコントローラによって、ホスト・コントローラまたはディスク・コントローラによって供給されたアドレスに対応するメモリ領域のメモリ・アレイ内の物理アドレスに復号される。それぞれのメモリ領域内のＩ／Ｏコントローラの他の機能には、特に挙げると、それぞれの領域内のメモリ・アレイに、またそこから移動するデータの一時的な格納および転送同期、ならびに以下でより十分に記載するように、メモリ・アレイ内に発生し得るエラー状態の処理が含まれる。
【０００７】
逆に、それぞれのメモリ領域内のコマンドおよびデータ・インターフェースは、Ｉ／Ｏコントローラから（たとえばＩ／Ｏコントローラをインターフェースに結合するコマンド／制御信号バスを介して）受信されたコマンドに基づいてそれぞれのメモリ領域内で、比較的低いレベルの制御およびメモリ・アクセス機能を実施する。たとえば、これらのインターフェースは、Ｉ／Ｏコントローラからインターフェースに供給されたメモリ・アクセス要求に応答して、適切なチップ選択、クロック同期、メモリ・アドレッシング、データ転送、メモリ制御／管理およびクロック・イネーブル信号を、要求されたメモリ・アクセスが行われることを許可するメモリ・アレイ内のメモリ装置に提供する。
【０００８】
メモリ・アレイがエラー状態に遭遇するとき、コマンドおよびデータ・インターフェースは、エラー状態の発生を検出し、メモリ・アレイを現在アクティブにアクセス／制御しているＩ／Ｏコントローラ（以下、「アクティブＩ／Ｏコントローラ」と呼ばれる）に、こうした発生について報告する。コマンドおよびデータ・インターフェースによって検出され報告され得る一般的なエラー状態には、コマンド／制御信号バスによって送信された値のパリティ・エラーの発生、要求され、指示されたメモリ・アクセスが所定の「タイムアウト」期間内に完了しないことなどが含まれる。
【０００９】
従来のシステムでは、Ｉ／Ｏコントローラは、複雑なまたはプログラマブルな操作のほとんどまたはすべてがメモリ領域の外部のプロセッサから実施されるように、限られたコンピューティング知能を有し、またはそれを有さず、また限られたプログラム能力を有し、またはそれを有さない。さらに、従来のシステムでは、メモリ領域の外部のプロセッサが、領域のメモリ・アレイおよびＩ／Ｏコントローラの状況を監視し、メモリ・アレイに対する定期的な維持／サービスを実施する。
【発明の開示】
【課題を解決するための手段】
【００１０】
本発明の一態様では、データ・ストレージ・システムが、ホスト・コンピュータ／サーバへの結合に適応された第１のディレクタと、ディスク・ドライブのバンクへの結合に適応された第２のディレクタと、第１と第２のディレクタの間に論理的に配置され、その間で通信するキャッシュ・メモリとを含む。キャッシュ・メモリは、コンピュータ実行可能命令を実行するように適応された組込み中央処理装置（ＣＰＵ）を有するメモリ・コントローラを含む。
【００１１】
本発明の別の態様では、メモリ・システムは、メモリ・バンクと、パケット交換網へのインターフェースと、メモリ・コントローラとを含む。メモリ・システムは、インターフェースによって、メモリ・バンクへのアクセスを命じるパケット・ベースのコマンドを受信するように適応される。メモリ・コントローラは、メモリ・バンクの初期化および構成サイクルを実行するように適応される。組込み中央処理装置（ＣＰＵ）は、メモリ・コントローラ内に含まれており、コンピュータ実行可能命令を実行するように適応される。メモリ・コントローラは、パケット・ベースのコマンドを処理するように適応される。
【００１２】
本発明の別の態様では、メモリ・コントローラは、メモリの初期化および構成サイクルを実行するように適応された論理と、コンピュータ実行可能命令を実行するように適応された組込み中央処理装置（ＣＰＵ）と、メモリにアクセスするように適応されたインターフェースとを含む。組込みＣＰＵは、コンピュータ実行可能命令に従ってメモリにアクセスするように適応される。メモリ・コントローラは、組込みＣＰＵによる処理とは独立に、メモリ・コントローラの外部からの指示に応答してメモリにアクセスするように適応される。
【００１３】
本発明の１つまたは複数の実施形態は、以下の利点のうちの１つまたは複数を提供する。
データ・ストレージ・システムのグローバル・メモリへの低遅延アクセスは、グローバル・メモリ用のメモリ・コントローラ内で組込み中央処理装置（ＣＰＵ）によって達成される。多数のメモリ操作は、組込みＣＰＵによって、メモリ・コントローラの外部のＣＰＵが必要とするよりも少ない時間で実行される。
【００１４】
組込みＣＰＵがないときはメモリ・コントローラの外部のＣＰＵによる処理を必要とする複雑な処理タスクは、メモリ・コントローラ自体によって実施される。データ・ストレージ・システムのディレクタ上のＣＰＵなど、メモリ・コントローラの外部の他のＣＰＵが、組込みＣＰＵを有するメモリ・コントローラへの複雑な処理タスクの負荷を取り除く。
【００１５】
グローバル・メモリおよびメモリ・コントローラの監視および維持／サービスは、組込みＣＰＵによって実施される。
組込みＣＰＵは、メモリ・コントローラが、組込みＣＰＵなしにすべてのまたは多くの本質的なメモリ・コントローラ操作に十分に動作可能であるように、メモリ・コントローラ内で部分的にまたは完全に選択肢とすることができる。
【００１６】
組込みＣＰＵは、グローバル・メモリの調停を行うとき、組込みＣＰＵが実施しているタスクに応じてＣＰＵ操作に異なる優先度が与えられるように、プログラマブルな優先度を有する。
【００１７】
多数の異なる各メモリ・コントローラによって制御された多数のメモリ領域に対して同じ操作を実施する必要がある場合、各メモリ・コントローラが他の組込みＣＰＵと並列に操作を実施することができるように、メモリ・コントローラ内の組込みＣＰＵのすべてにメッセージがブロードキャストされる。
【００１８】
他の利点および特徴は、図面を含めた以下の説明、および特許請求の範囲から明らかになる。
【発明を実施するための最良の形態】
【００１９】
図１は、本発明の少なくとも１つの実施形態が有利に実施される、データ・ストレージ・システム１１２を含むデータ・ストレージ・ネットワーク１１０を示すブロック図である。システム１１２は、通信リンク１１４、１１６、１１８、１２０、…１２２（ＦＣプロトコル光通信リンクであっても、それを含んでいてもよい）を介してそれぞれのホスト・コンピュータ・ノード１２４、１２６、１２８、１３０、…１３２に結合される。ホスト・ノード１２４、１２６、１２８、１３０、…１３２もまた、それぞれの追加の通信リンク１３４、１３６、１３８、１４０、…１４２（従来のネットワーク通信リンクであっても、それを含んでいてもよい）を介して外部ネットワーク１４４に結合される。ネットワーク１４４は、１つまたは複数の伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）ベースおよび／またはイーサネット・ベースのローカル・エリアおよび／または広域ネットワークを含んでもよい。ネットワーク１４４もまた、ネットワーク通信リンク（図１ではまとめて符号１４５で参照される）を介して１つまたは複数のクライアント・コンピュータ・ノード（図１では、まとめてまたは単独に符号１４６で参照される）に結合される。リンク１３４、１３６、１３８、１４０、…１４２および１４５によって使用されるネットワーク通信プロトコル（１つまたは複数）は、ノード１２４、１２６、１２８、１３０、…１３２がネットワーク１４４を介してノード１４６とデータおよびコマンドを交換することを保証する助けとなるように選択される。
【００２０】
ホスト・ノード１２４、１２６、１２８、１３０、…１３２は、サーバ・コンピュータ、ワークステーションまたはメインフレームなど、よく知られている複数のタイプのコンピュータ・ノードのうちの１つである。一般に、ホスト・ノード１２４、１２６、１２８、１３０、…１３２およびクライアント・ノード１４６はそれぞれ、ソフトウェア・プログラム、および関連するデータ構造体を格納し、また本明細書ではこれらのノード１２４、１２６、１２８、１３０、…１３２および１４６によって遂行されるものとして述べられる機能および操作を実施するためのそれぞれのコンピュータ読取り可能メモリ（図示せず）を含む。さらに、ノード１２４、１２６、１２８、１３０、…１３２および１４６はそれぞれ、これらのソフトウェア・プログラムを実行し、これらのデータ構造体を操作し、通信リンク１３４、１３６、１３８、１４０、…１４２、ネットワーク１４４およびリンク１４５を介してホスト・ノード１２４、１２６、１２８、１３０、…１３２およびクライアント・ノード１４６間のデータおよびコマンドの交換を可能にし、容易にするための１つまたは複数の各プロセッサ（図示せず）とネットワーク通信装置とをさらに含む。ホスト１２４、１２６、１２８、１３０、…１３２内に含まれるプロセッサおよびネットワーク通信装置によるソフトウェア・プログラムの実行は、下記に述べるやり方でリンク１１４、１１６、１１８、１２０、…１２２を介してノード１２４、１２６、１２８、１３０、…１３２およびシステム１１２間でデータおよびコマンドを交換することも可能にし、容易にする。
【００２１】
図２は、システム１１２の機能コンポーネントのブロック図である。システム１１２は、（フロントエンド・ディレクタとも呼ばれる）複数のホスト・コントローラ２２…２４、（バックエンド・ディレクタとも呼ばれる）複数のディスク・コントローラ１８…２０、および領域２００、２０２を含めて複数のメモリ領域を有する共有のキャッシュ・メモリ・リソース１６を結合するパケット交換網ファブリック１４を含む。ネットワーク・ファブリック１４は、本願と同一の出願人に譲渡された、２００３年９月３０日に出願された同時係属特許出願第１０／６７５０３８号、「Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ  Ｈａｖｉｎｇ  Ｐａｃｋｅｔ  Ｓｗｉｔｃｈｉｎｇ  Ｎｅｔｗｏｒｋ」に記載されている。同特許の主題全体が、本明細書に組み込まれる。
【００２２】
各ホスト・コントローラ２２…２４は、それぞれの単一の回路基板またはパネルを含む。同様に、各ディスク・コントローラ１８…２０は、それぞれの単一の回路基板またはパネルを含む。図２に示された各ディスク・アダプタ３０…３２は、それぞれの単一の回路基板またはパネルを含む。同様に、図２に示された各ホスト・アダプタ２６…２８は、それぞれの単一の回路基板またはパネルを含む。各ホスト・コントローラ２２…２４は、対になる（ｍａｔｉｎｇ）それぞれの電気機械結合システムを介して、それぞれのホスト・アダプタ２８…２６に電気的かつ機械的に結合される。
【００２３】
システム１１２のこの実施形態では、図に明示的には示されてないが、各ホスト・アダプタ２６…２８は、それぞれのリンクを介して４つのそれぞれのホスト・ノードに結合される。たとえばシステム１１２のこの実施形態では、アダプタ２６は、それぞれのリンク１１４、１１６、１１８、１２０を介して、ホスト・ノード１２４、１２６、１２８、１３０に結合される。各ホスト・アダプタ２６…２８が結合されるホスト・ノードの数は、本発明から逸脱せずに、ホスト・アダプタ２６…２８、およびホスト・コントローラ２２…２４の特定の構成に応じて変化してもよいことを理解されたい。
【００２４】
ディスク・アダプタ３２は、１組の大容量記憶装置３４に電気的に結合され、ディスク・コントローラ２０をそれらの装置３４に連結させて、ディスク・コントローラ２０内のプロセッサ（図示せず）と記憶装置３４の間のデータおよびコマンドの交換を可能にする。ディスク・アダプタ３０は、１組の大容量記憶装置３６に電気的に結合され、ディスク・コントローラ１８をそれらの装置３６に連結させて、ディスク・コントローラ１８内のプロセッサ（図示せず）と記憶装置３６の間のデータおよびコマンドの交換を可能にする。装置３４および３６は、磁気および／または光ディスク大容量記憶装置の冗長アレイとして構成されてもよい。
【００２５】
図２に示されるシステム１１２の各機能コンポーネントのそれぞれの数は、単に例示するためのものであり、システム１１２が配置されるように意図される特定のアプリケーションに応じて、本発明から逸脱せずに変化してもよいことを理解されたい。しかし、システム１１２内の特定のコンポーネントに障害が生じた場合には、システム１１２がフェイルオーバーによるフォールト・トレランスを有するようにすることが望ましい。したがって、システム１１２の実用的な実施形態では、任意の所与の機能コンポーネントの障害が検出され、障害が生じたいずれかの機能コンポーネントを動作させる役割が、障害の生じたコンポーネントと同じタイプのそれぞれの冗長機能コンポーネントによって引き継がれることを保証するために、システム１１２が冗長な機能コンポーネントと従来の機構とを含むことが望ましい。
【００２６】
データがシステム１１２から取り出され、そこに格納され得る一般的なやり方について以下に記載する。大まかに記載すると、ネットワーク１１０の動作において、クライアント・ノード１４６は、クライアント・ノード１４６に関連するリンク１４５のうちの１つ、ネットワーク１４４、およびホスト・ノード１２４に関連するリンク１３４を介して、データ取出し要求をホスト・ノード（たとえばノード１２４）に転送する。要求されているデータがホスト・ノード１２４でローカルに格納されるのではなく、データ・ストレージ・システム１１２内に格納される場合、ホスト・ノード１２４は、ノード１２４に関連するリンク１１４を介してシステム１１２にそのデータの転送を要求する。
【００２７】
リンク１１４を介して転送された要求は最初、そのリンク１１４に結合されたホスト・アダプタ２６によって受信される。次いで、リンク１１４に関連するホスト・アダプタ２６は、それが結合されたホスト・コントローラ２４に要求を転送する。転送された要求に応答して、次いでホスト・コントローラ２４は、（たとえばキャッシュ１６内に格納されたデータ・ストレージ管理テーブル（図示せず）から、）要求されているデータが現在キャッシュ１６内にあるかどうか判断し、要求されたデータが現在キャッシュ１６内に存在しないと判断される場合は、ホスト・コントローラ２４は、要求されたデータが保存されている記憶装置３６に関連するディスク・コントローラ（たとえばコントローラ１８）が、キャッシュ１６内に要求されたデータを取り出すことを要求する。ホスト・コントローラ２４からの要求に応じて、ディスク・コントローラ１８は、要求されたデータを磁気ディスク装置３６のうちの１つまたは複数に取り出させるための適切なコマンドを、それが結合されたディスク・アダプタを介して転送する。こうしたコマンドに応答して装置３６は、要求されたデータを、ディスク・アダプタ３０を介してディスク・コントローラ１８に転送する。次いで、ディスク・コントローラ１８は、要求されたデータをキャッシュ１６内に格納する。
【００２８】
要求されたデータがキャッシュ１６内にある場合は、ホスト・コントローラ２２は、キャッシュ１６からデータを取り出し、アダプタ２６およびリンク１１４を介してホスト・ノード１２４に転送する。次いで、ホスト・ノード１２４は、要求されたデータを、リンク１３４、ネットワーク１４４、およびクライアント・ノード１４６に関連するリンク１４５を介してクライアント・ノード１４６に転送する。
【００２９】
さらに、クライアント・ノード１４６は、データ格納要求を、クライアント・ノード１４６に関連するリンク１４５のうちの１つ、ネットワーク１４４、およびホスト・ノード１２４に関連するリンク１３４を介してホスト・ノード（たとえばノード１２４）に転送する。ホスト・ノード１２４は、データをローカルに格納し、あるいは、ノード１２４に関連するリンク１１４を介してシステム１１２内にそのデータを格納することを要求する。
【００３０】
リンク１１４を介して転送されたデータ格納要求は最初、そのリンク１１４に結合されたホスト・アダプタ２６によって受信される。次いで、リンク１１４に関連するホスト・アダプタ２６は、それが結合されたホスト・コントローラ２４にデータ格納要求を転送する。転送されたデータ格納要求に応答して、次いでホスト・コントローラ２４は最初、キャッシュ１６内にデータを格納する。その後、ディスク・コントローラのうちの１つ（たとえばコントローラ１８）は、格納に適したコマンドをアダプタ３０を介して装置３６に発行することにより、キャッシュ１６内に格納されたデータを、データ記憶装置３６のうちの１つまたは複数へ格納させる。
【００３１】
図３〜図５を特に参照して、システム１１２のキャッシュ・メモリ１６内で有利に使用される本発明の例示的な実施形態について次に記載する。グローバル・メモリ（ＧＭ）とも呼ばれるキャッシュ・メモリ１６は、複数のメモリ領域２００、２０２、２０４および２０６に分割される。これらの領域２００、２０２、２０４、２０６はそれぞれ、ネットワーク・ファブリック１４に結合される。図示されていないが、システム１１２の実用的な実施形態では、メモリ１６が分割されるメモリ領域の実際の数は、図３に示された４つの領域２００、２０２、２０４、２０６よりかなり大きい（たとえば２倍から４倍大きい）ことに留意されたい。
【００３２】
メモリ領域２００、２０２、２０４、２０６は、それぞれの構成および動作が本質的に同じである。したがって、説明が不必要に冗長なものとならないように、メモリ領域２００、２０２、２０４、２０６の単一の領域２００の機能コンポーネントおよび動作についてここでは記載する。
【００３３】
図４は、下記で述べる各々の領域コントローラ（ＲＣ）４００、４１０を含むメモリ領域２００、２０２を示しており、ＲＣはそれぞれ、メモリ・コントローラ特定用途向け集積回路（ＡＳＩＣ）であり、またはそれを含む。
【００３４】
少なくとも１つの実施形態では、データ・ストレージ・システムのメモリ・モジュール（ＭＭ）はメインのプリント回路基板とメザニン・プリント回路カードとを有しており、そのそれぞれが、たとえば（５１２Ｍｂ  ＤＲＡＭを使用する）８ＧＢを有する１つのメモリ領域（またはメモリ・アレイ）を有する。各メモリ・アレイ２００または２０２は、それぞれのＲＣ  ４００または４１０によって制御される。各ＲＣは、それぞれのメモリ領域を要するグローバル・メモリ（ＧＭ）操作と呼ばれるデータ・ストレージ・システム・キャッシュ・メモリ操作についての要求を受信し、応答を生成する。
【００３５】
図５は、ＲＣ  ４００のブロック図を示しており、このＲＣ  ４００は、ＲＣ  ４００によって制御されたメモリ領域２００に含まれる各々のＤＲＡＭアレイ５１２、５１４への２つのデータ・インターフェース５１０、５２０を有する。
【００３６】
各ＲＣは、少なくとも以下の機能モジュール、すなわち１次ＲａｐｉｄＩＯ（登録商標）規格（ＲＩＯ）エンドポイント５１６、５１８（ＲＩＯ０Ｐ、ＲＩＯ１Ｐとも示される）と、２次ＲＩＯエンドポイント５２２（ＲＩＯ０Ｓ、または第２ＲＩＯ  Ｅ．Ｐ．とも示される）と、ＲＩＯスイッチ・セット５２４、５２６と、パイプ・フロー・コントローラ（ＰＦＣ）セット５２８と、スケジューラ５３２（ＳＣＤとも示される）と、データ・エンジン５３４（ＤＥとも示される）と、ダブル・データ・レート２規格同期ダイナミック・ランダム・アクセス・メモリ（ＤＤＲ２  ＳＤＲＡＭ）コントローラ（ＤＤＲＣ）セット５３６と、サービス論理５４０（ＳＲＶとも示される）とを含む。これらの機能モジュールは、本願と同一の出願人に譲渡された、２００５年６月３日に出願された同時係属特許出願第１１／１４５１１１号、「Ｑｕｅｕｉｎｇ  Ａｎｄ  Ｍａｎａｇｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｍｅｍｏｒｙ  Ｏｐｅｒａｔｉｏｎｓ  Ｄｕｒｉｎｇ  Ａｃｔｉｖｅ  Ｄａｔａ  Ｔｒａｎｓｆｅｒｓ」に記載されている。各ＲＣは、要求を受信し、ＲＩＯメッセージについての応答を生成し、ＲＩＯメッセージを送信し、サービス要求を処理し、メッセージ内に指定された宛先が現在のＲＣに一致しない場合には、ＲＣのデージー・チェーンの、もしあれば次のＲＣへと上流にＲＩＯ要求をルーティングし、ＲＩＯ応答をファブリック１６に向かって下流へとルーティングする。
【００３７】
図５は、ＲＣが中央処理装置（ＣＰＵ）複合体５４２を含むことをも示している。具体的には、ＲＣは、ＲＣのリソースのすべてまたはほぼすべてへのアクセスを有する組込みＣＰＵを特徴とする。図６を参照すると、このアクセスはＣＰＵ複合体５４２によってイネーブルされ、このＣＰＵ複合体５４２は、１組の論理モジュールであり、また下記でより詳細に記載する以下の機能、すなわち密結合のメモリを備えたＣＰＵ  １３１０と、ＣＰＵから周辺装置へのインターフェースとして働く拡張高性能バス・インターフェース（ＡＨＢＩ）論理１３１２と、ＣＰＵ  １３１０に時間記録サービスを提供するタイマー１３１４と、割込みコントローラ論理１３１６（ＩＲＱと示される）と、拡張周辺バス（ＡＰＢ）にブリッジを提供する拡張周辺バス・インターフェース（ＡＰＢＩ）１３１８と、ＵＡＲＴ１３２０と、サービス・インターフェース（ＳＲＶＩ）論理１３２２と、ＧＭＩ論理９１６と、メッセージ・エンジン７１８と、スケジューラ（ＳＣＤ）と、データ・エンジン５３２、５３４と、サービス（ＳＲＶ）論理５４０と、スイッチ・セット５２４、５２６の格納および転送部分（Ｓ＆Ｆ  ＲＩＯＳＷ０およびＳ＆Ｆ  ＲＩＯＳＷ１）とを含む。拡張高性能バスおよび拡張周辺バスは、拡張高性能マイクロコントローラ・バス・アーキテクチュア（ＡＭＢＡ）のプロトコルであり、このＡＭＢＡは、オープン・スタンダードのオンチップ・バス仕様であり、またテキサス州オースティン（Ａｕｓｔｉｎ，Ｔｅｘａｓ）のアーム・インコーポレイテッド社（ＡＲＭ，Ｉｎｃ．）（ｈｔｔｐ：／／ｗｗｗ．ａｒｍ．ｃｏｍ）によって記述されている。
【００３８】
ＣＰＵ複合体は、拡張高性能バス（ＡＨＢ）バスを介してＣＰＵから受け取られたアクセスを復号し、対応する要求を適切なモジュールまたはインターフェースに送り出す。ＡＨＢから使用可能なモジュールおよびインターフェースは、ＧＭＩ  ９１６、メッセージ・エンジン７１８、サービス・インターフェース３２２、ＡＰＢＩおよびＵＡＲＴ論理１３１８、１３２０、割込みコントローラ１３１６、ならびにタイマー１３１４である。
【００３９】
ＣＰＵ  １３１０は、メッセージ・エンジン７１８を介してＲＩＯメッセージを送受信する。メッセージは、データ・ストレージ・システムのその他の部分からＲＣに到着するとき、下に記載するようにインバウンド・メッセージ・リング内に置かれ、ＣＰＵは、割込みによってこれについての通知を受ける。同様に、ＣＰＵは、メッセージ・エンジン７１８への表示をセットすることによって、送信される２つのアウトバウンド・メッセージ・リングのうちの１つにメッセージを構築することができる。
【００４０】
グローバル・メモリ・インターフェース（ＧＭＩ）９１６は、ＣＰＵ  １３１０に、ＲＣに直接接続されたグローバル・メモリの一部へのアクセスを提供する。インターフェースＳＲＶＩ  １３２２は、ＣＰＵが、ＲＣの内部レジスタの状態を取得し、セットすることを可能にする。ＵＡＲＴ  １３２０は、ソフトウェアのためのデバッギング・パスを提供し、タイマー１３１４は、ソフトウェアのスケジューリングのために使用され、割込みコントローラ１３１６は、割込みソースを管理するために使用される。
【００４１】
ＲＣによって処理される多数の操作は、ＣＰＵを要しまたは潜在的に要する。メッセージの受信および応答は、メッセージ受信／処理操作シーケンスについては図７に、またグローバル・メモリへのＣＰＵアクセスについては図８に少なくとも一部示すように、ＲＩＯメッセージのＤＲＡＭアレイへのルーティング、ＲＩＯメッセージ応答の返送、およびＣＰＵ  ＧＭＩのＤＲＡＭアレイへのアクセスを要する。図７に示されたメッセージ・アクセス・シーケンスに関して、グローバル・メモリへのメッセージ・パケットのルーティング、および結果として生じる応答は、通常のグローバル・メモリ操作（ＣＰＵを要さない操作）のそれに非常に似ている。
【００４２】
図７を参照すると、ＲＩＯパケットが、エンドポイントＲＩＯ１Ｐによって受信され処理されている（図７矢印１）。この場合、ＲＩＯエンドポイント５１８は、パケットをＳ／Ｆパケットと認識し、スイッチ・セット５２６のＳ／Ｆ  ＲＩＯスイッチＳＷ２  １４１０に転送する（図７矢印２）。パケットの宛先ヘッダ・フィールドは、適切なルーティングかどうか、この場合はそれがＣＰＵ複合体５４２内のメッセージ・エンジン７１８にルーティングされているかどうか（図７矢印３）がチェックされる。パケットはメッセージ・エンジン７１８によって受信され、このメッセージ・エンジン７１８は、ＰＦＣモジュールと同様にパケットを処理し、パケットのヘッダーおよびペイロードは、ＲＩＯクロック（１５６．２５ＭＨｚ）からＤＤＲクロック（２００ＭＨｚ）に転送されるために同期ＦＩＦＯ内に格納される。メッセージ・エンジン７１８は、パケット・ヘッダの保全性をもチェックする。
【００４３】
メッセージ・エンジン７１８は、スケジューラ５３２を介してデータ・エンジン５３４へのアクセスを要求する。アクセスが与えられると、パケットはデータ・エンジン５３４によって処理され（図７矢印４）、このデータ・エンジン５３４は、書込み操作のためにデータをＤＤＲＣ  ５３６に移す（図７矢印５）。ＤＤＲＣは、ＤＲＡＭアレイ５１２、５１４への書込み操作を実施する（図７矢印６）。ステータスが、データ・エンジン５３４に送信される（図７矢印７）。データ・エンジン５３４は、メッセージ・エンジン７１８にステータス情報を返送する（図７矢印８）。メッセージ・エンジン７１８は、データ・エンジン５３４からステータス／データを取得し、それを２００ＭＨｚから１５６．２５ＭＨｚクロックに同期させ、応答パケットを準備し、スイッチＳＷ３  １４１０を介してＲＩＯエンドポイントに戻るアクセスを要求する（図７矢印１０）。さらに、メッセージ・エンジン７１８は、格納されたメッセージについてＣＰＵ  １３１０に通知するために、ＣＰＵ  １３１０に割込みを送信する（図７矢印９）。スイッチ１４１０は、アクセスを許可すると、応答パケットをＲＩＯエンドポイント５１８にルーティングして戻す（図７矢印１１）。ＲＩＯエンドポイント５１８は、ファブリック（図示せず）にパケットを送信する（図７矢印１２）。
【００４４】
図８のフローチャートに示されるＣＰＵ−ＧＭアクセス・シーケンスに関して、ＣＰＵ  １３１０がメッセージ・エンジン７１８から割込み信号を受信すると（図８矢印１）、以下の動作が取られる。ＣＰＵおよびそのＧＭＩは、メモリ・アクセスを開始する（図８矢印１）。ＧＭＩは、ＣＰＵコマンドを復号し、スケジューラ５３２に要求を送信する（図８矢印２）。スケジューラはアクセスを許可し、データ・エンジンをトリガする。データ・エンジンは、読出しコマンドをＤＤＲＣ  ５３６に送信し（図８矢印３）、このＤＤＲＣ  ５３６は、読出し操作を実施する（図８矢印４）。読み出されたデータは、ＤＤＲＣ  ５３６に送信され（図８矢印５）、読み出されたデータおよびステータスは、データ・エンジン５３４に送信される（図８矢印６）。
【００４５】
ＤＥは、データ保全性をチェックし、ＧＭＩにデータを送信し（図８矢印７）に、このＧＭＩは、データをＣＰＵに送信する。
メッセージの生成および送信に関して、ＣＰＵ  １３１０は、メッセージを構築し、ファブリック１４に送信する。動作シーケンスは主として、メッセージ受信／処理操作の逆である。ＣＰＵは、ＧＭＩ  ９１６への書込み操作を実施し、メッセージ・エンジン７１８に通知する。メッセージ・エンジン７１８は、グローバル・メモリからの読出し操作を実施し、パケットを準備し、ファブリック１４に送信する。
【００４６】
図６を参照すると、その外部インターフェースを介してＣＰＵ複合体５４２は、ＣＰＵ複合体の外部のモジュールと対話する。スケジューラ・インターフェース・セット１３３０を介してＣＰＵ複合体は、グローバル・メモリへの読み書きを実施する。スケジューラは、ＲＣに接続されたＤＲＡＭ装置へのアクセスのためのアービタである。ＣＰＵ複合体は、２つの要求元、すなわちメッセージ・エンジン７１８とＧＭI  ９１６とを含むので、スケジューラ５３２への２つのインターフェースを有する。
【００４７】
サービス・インターフェース１３２２は、ＲＣの内部レジスタ、ならびに４つのＲＩＯエンドポイント内部レジスタのそれぞれにアクセスする手段を提供する。またサービス・インターフェース１３２２は、これらの内部レジスタにエラー情報を送達する。具体的には、サービス・インターフェース１３２２は、２つの１次ＲＩＯエンドポイントのいずれかから、またはＣＰＵ複合体５４２からのＲＣの５つの領域へのアクセスを提供する。これらの領域は、ＲＣ内部レジスタ（ステータス、エラーおよび構成レジスタ）、内部Ｉ２Ｃコントローラ・コア（外部の温度センサおよびＶＰＤ用）、１次ＲＩＯエンドポイントの内部レジスタ（ＲＩＯエラー、ステータスおよび構成、ＳＥＲＤＥＳレジスタ）、２次ＲＩＯエンドポイントの内部レジスタおよびＤＤＲ訓練論理である。Ｉ２Ｃは、集積回路間を表し、周知の２線式双方向シリアルバス技術を指す。
【００４８】
少なくとも１つの実施形態では、ＣＰＵ  １３１０は、他のＲＣに接続されたメモリへの直接アクセス（すなわちファブリック１４を介するもの以外のアクセス）を有していない。
【００４９】
ＡＨＢインターフェース（ＡＨＢＩ）１３１２は、それがＣＰＵコア１３３２から受信する要求を変換し、接続された周辺装置にそれを発行する役割を担う。インターフェース１３１２は、１つの側でＡＨＢバスに接続するＡＨＢスレーブを実装し、もう一方の側で、ＡＰＢインターフェース１３１８とタイマー１３１４と割込みコントローラ１３１６とサービス・インターフェース１３２２とメッセージ・エンジン７１８とＧＭＩ  ９１６とを含む宛先への独立した接続を有する。各ＡＨＢトランザクションについて、それは、宛先のうちトランザクションの対象である宛先を復号し、対象の宛先に要求を転送し、応答を待つ。それは、応答を受信すると、ＡＨＢ上のトランザクションを終了する。
【００５０】
より具体的には、ＡＨＢインターフェースは、ＡＨＢバスを介してＣＰＵから受信された要求を変換し、使用可能なインターフェースのそれぞれにそれを送り出すことによって、アドレス・デコーダとして働く。正確な周辺宛先は、要求のアドレスを復号することから決定される。アドレスが復号されると、ＡＨＢＩは、その選択信号のアサーションによって、アドレス指定されたインターフェースを選択する。各トランザクションの後、宛先は、成功または失敗を示す。
【００５１】
少なくとも１つの実施形態では、ＲＣに接続されたグローバル・メモリはすべて、２５６ＭＢの倍数のウィンドウを介してアクセスされる。ウィンドウ・レジスタのプログラミングによって、ＣＰＵは、グローバル・メモリのセクションへのアクセスを有する。メモリ競合を減少させるために、データは、グローバル・メモリの対応する領域に指示されたさらなる読出しによって、完全なグローバル・メモリ・アクセスが必ずしもトリガされないように、以下に記載するようにＧＭＩ  ９１６によってキャッシュされる。
【００５２】
以下に記載するように、他のウィンドウが、メッセージ・リングへのアクセスに使用可能である。各ウィンドウの基底は、アクセスされたリングの基底アドレスに変換される。汎用グローバル・メモリ・アクセス用のそれとは別にメッセージ・リング用に一般に維持された別個のキャッシュがある。
【００５３】
図６に示されるように、ＧＭＩ  ９１６は、２つのインターフェース、すなわちすべてのＣＰＵ読み書き要求が送信され受信されるＡＨＢインターフェース１３３４と、ＡＨＢインターフェース１３３４から受信された要求がＧＭＩのキャッシュからサービスされず、グローバル・メモリへのアクセスを要求するときに使用されるスケジューラ・インターフェース１３３０とを有する。
【００５４】
ＧＭＩ  ９１６への読み書きアクセスは、４つの異なるウィンドウ、すなわちグローバル・メモリ・ウィンドウ、受信リング・ウィンドウ、および送信リング・ウィンドウから来る。要求がそれに対して行われるウィンドウは、ＧＭＩ  ９１６の振舞いに影響を及ぼす。
【００５５】
グローバル・メモリ・ウィンドウへのアクセスでは、アクセスするグローバル・メモリ内のアドレスを決定するために、ウィンドウ・レジスタの内容をウィンドウ内の特定のアドレスと共に使用する。対応するデータがＧＭＩキャッシュ内にある場合、それがキャッシュから戻される。そうでない場合は、ＧＭＩ  ９１６は、グローバル・メモリからデータを取り出す。
【００５６】
メッセージ・ウィンドウは、グローバル・メモリ・アドレスが、メッセージ・エンジン内に置かれた基底レジスタからのオフセットとして計算されることを除いて、グローバル・メモリ・ウィンドウと同じように動作する。
【００５７】
ＧＭＩのキャッシュは、２つの別個の６４バイト・キャッシュを含む。少なくとも１つの実施形態では、キャッシュとグローバル・メモリの整合性は保証されておらず、したがって、キャッシュの内容に対応するグローバル・メモリが別のＣＰＵによるＲＩＯ通信を介して修正される場合には、これについての表示は組込みＣＰＵ  １３１０に対して行われない。さらに、少なくとも１つの実施形態では、２つの６４バイト・キャッシュ間の整合性は内部的に保証されない。キャッシュは、読出しまたは書込みをキャッシュし、あるいは読出しおよび書込みをキャッシュするように構成することができる。キャッシュは、キャッシュをフラッシュし、または無効にするようにも指示される。
【００５８】
図６に示すように、メッセージ・エンジン７１８は、４つのインターフェース、すなわちＲＩＯエンドポインに対してデータを読み書きするためのスイッチ・セット５２４、５２６のそれぞれへのインターフェースと、グローバル・メモリにメッセージを送信し、そこからメッセージを取り出すためのスケジューラ・インターフェースと、リング・マネージャー用のＡＨＢインターフェース１３１２への接続とを有する。
【００５９】
少なくとも１つの実施形態では、両方のスイッチ・セット５２４、５２６からの入メッセージはすべて、単一の入リング内に配置される。アウトバウンド・メッセージでは、２つのリングが定義される。２つのリングのうちの１つからのメッセージは、１つのスイッチ・セットに向けられ、２つのリングのもう一方からのメッセージは、もう一方のスイッチ・セットに向けられる。
【００６０】
メッセージ・リングは、基底アドレスおよびサイズを用いて定義される。これらのリングに対する作業は、プロデューサおよびコンシューマ・インデックスとして知られている一対のインデックスによって定義される。これらの２つのインデックスが等しい場合、行われるべき作業はない。プロデューサは、現在のプロデューサ・インデックスの後、次のメッセージ・スロット内にデータをまず書き込むことによって作業を作成する。このデータが書き込まれると、プロデューサ・インデックスは、新しい作業の存在を示すために増分される。コンシューマは、このスロットでデータを処理し、次いで、データが処理されたことを反映するためにコンシューマ・インデックスを増分する。コンシューマ・インデックスが増分されるまで、そのメッセージ・スロットは、別のメッセージのために使用することができない。
【００６１】
ＲＣは、入リングと出リングとを有する。出リングは、エンドポイント５１６、５１８からのメッセージの送信に専用である。入リングでは、ＲＣはプロデューサであり、ＣＰＵ  １３１０はコンシューマである。出リングでは関係は、ＣＰＵがプロデューサであり、ＲＣがコンシューマとなるように反転される。
【００６２】
パケットが受信されると、メッセージ・エンジン７１８は、スケジューラ５３２を介してグローバル・メモリへのアクセスを要求し、アクセスは、許可されると、入メッセージ・リングの次の入口にパケットを送達する。次いで、ＲＸメッセージ・リングのプロデューサ・インデックスが増分され、新しいメッセージの到着を示すために割込みがＣＰＵに送達される。メッセージの最初の４ワードは、そのメッセージのディスクリプタである。
【００６３】
送達されたパケットのタイプに応じて、メッセージ応答パケットがキューに入れられる。出スロットが使用可能な場合、応答パケットのペイロードは、そのスロットに書き込まれる。応答パケットのステータス・フィールドは、メッセージ送達の成功または失敗についての情報を含む。
【００６４】
ＴＸコンシューマ・インデックスが対応するプロデューサ・インデックスに等しくない場合、メッセージ・エンジン７１８は、パケットがグローバル・メモリ内に送信されるのを待っていると判断する。この状態では、メッセージ・エンジン７１８は、メッセージ・ディスクリプタと呼ばれる、次のコンシューマ・インデックスで最初の８つのグローバル・メモリ・ワードを読み出す。このディスクリプタに基づいて、メッセージ・エンジンは、メッセージの残りの部分を取り出し、出スロット内に格納する。
【００６５】
パケットが転送できるときはいつでも、出パケットがメッセージ・エンジンによって取り出され、またはメッセージ応答が作成された後に、スイッチ・セット５２４または５２６への要求が行われる。要求および許可は、２つの経路（ＣＰＵ応答およびメッセージ・エンジン応答）については別々であるが、データ経路は共有される。調停が取得されると、パケットの内容全体がエンドポイント５１６または５１８に送信される。
【００６６】
少なくとも１つの実施形態では、ＣＰＵ  １３１０は、テキサス州オースティンのアーム・インコーポレイテッド社（ｈｔｔｐ：／／ｗｗｗ．ａｒｍ．ｃｏｍ）から入手可能なＡＲＭ９６６Ｅ−Ｓ組込みマイクロプロセッサであり、またはそれを含む。ＡＲＭ９６６Ｅ−Ｓマイクロプロセッサは、内部の密結合のメモリ（ＴＣＭ）へのインターフェース、およびＡＨＢインターフェース１３１２を備えたキャッシュレス５ステージ・マシンであり、アーム・インコーポレイテッド社から入手可能なＡＲＭ９６６Ｅ−Ｓ技術リファレンス・マニュアル（ＡＲＭ  ＤＤＩ  ０２１３Ｃ）、ＡＲＭ９Ｅ−Ｓ技術リファレンス・マニュアル（ＡＲＭ  ＤＤＩ  ０２４０Ａ）およびＡＭＢＡ仕様（ＡＲＭ  ＩＨＩ  ００１１Ａ）に記載されている。
【００６７】
図９を参照すると、ＣＰＵコア１３３２は、マルチプレクサー１６１４を介して、命令およびデータを取り出す２つの手段、すなわち（１）高速のローカル・データ・ストアである命令密結合メモリ（ＩＴＣＭ）１６１０およびデータ密結合メモリ（ＤＴＣＭ）１６１２と、（２）それを介してＣＰＵがより大きいメモリおよび任意の使用可能な周辺装置へのアクセスを有するＡＨＢインターフェース１３１２とを有する。
【００６８】
ＩＴＣＭ  １６１０およびＤＴＣＭ  １６１２は、ＣＰＵコア用の命令とデータの両方のための記憶域を提供し、この記憶域によってＣＰＵは、性能を著しく減少させる、各命令についての要求をＡＨＢインターフェース１３１２を介して発行しなければならないことから解放される。そうでない場合は、メモリ・アクセスは、要求に応えるＡＨＢＩ内に存在するＡＨＢスレーブに連結するＡＨＢバスを介して行われる。
【００６９】
図１０に示されるように、ＡＰＢインターフェース１３１２は、ＡＰＢ接続された周辺装置へのアクセスのために使用され、ＣＰＵ複合体内５４２で、ＵＡＲＴ  １３２０は、唯一のＡＰＢ周辺装置である。ＡＰＢインターフェースは、ＡＨＢインターフェースから要求を受け付け、ＡＰＢバスを介した要求にそれを変換し、すなわちＡＨＢインターフェースとＡＲＢバスの間のブリッジとして働く。ＡＰＢインターフェースが選択されるごとに、ＡＨＢ側で指定された操作は、対応するＡＰＢ操作に変換される。ＡＰＢバスは、２００ＭＨｚのシステム・クロックと同期する５０ＭＨｚのインターフェースであり、それによって、２つの領域間の同期が容易になる。データ・フローについての詳細は、上記で参照されたＡＭＢＡ仕様（ＡＲＭ  ＩＨＩ  ００１１Ａ）に示されている。
【００７０】
図１１は、周期的にＣＰＵへの割込みを生成するために使用されるプログラマブルなタイマーであり、またはそれを含むタイマー１３１４を示している。このタイマーは、カウンタが０に達するごとに割込みを生成し、構成された値に戻る再ロード３２ビット・カウンタを実装する。タイマーは、２００ＭＨｚクロックを最大２３２までカウントし、それによって、１０ｎｓから４２．９４ｓまで１０ｎｓ間隔の粒度が提供される。
【００７１】
割込みコントローラ１３１６は、多数の割込みソースから入力を受信し、ＣＰＵへの２つの割込み線を駆動する。次いで、コントローラは、割込みの具体的なソースを決定するために問合せを受けることができる。割込みソースは、それがＣＰＵへの割込みを行わないようにマスクすることもできる。割込みが定期的な割込みとしてＣＰＵに送達されているか、それとも高速割込みとして送達されているかどうかは、割込みコントローラ１３１６の内部の１組のレジスタによって判定される。
【００７２】
具体的には、割込みコントローラは、高レベルについてその入力（ＩＲＱポート）を監視する。これらの状態が検出されるときはいつでも、マスクされていないならば、構成レジスタに基づいて、信号がＣＰＵにアサートされる。
【００７３】
図１２は、サービス・インターフェース１３２２を示しており、このサービス・インターフェース１３２２は、ＲＣ全体の内部レジスタにアクセスし、関連するエラー情報を送達し、構成情報を受信する手段である。
【００７４】
図１３は、ＵＡＲＴ  １３２０を示しており、このＵＡＲＴ  １３２０は、カリフォルニア州ミルピータス（Ｍｉｌｐｉｔａｓ，Ｃａｌｉｆｏｒｎｉａ）のエルエスアイ・ロジック・コーポレーション社（ＬＳＩ  Ｌｏｇｉｃ  Ｃｏｒｐｏｒａｔｉｏｎ）から部品番号ｃｗ００１２０３で入手可能な技術であり、またはそれを含んでもよく、業界規格１６Ｃ５５０  ＵＡＲＴのそれに類似するＵＡＲＴ機能を実装する。ＵＡＲＴ  １３２０は、インターフェース１３１８を介してアクセス可能であり、ＵＡＲＴ  １３２０の入出力トラフィック２２１０の結果として割込みコントローラ１３１６で割込みを生成することができる。
【００７５】
図５、図６を参照して、組込みＣＰＵ  １３１０を使用する例示的なアプリケーションである分散型ロック管理について次に記載する。データ・ストレージ・システムは、フロントエンドとバックエンドの両方のすべてのディレクタ間で共有されるメモリ量を含む。コヒーレンシー、すなわち２つのディレクタがメモリの同じ部分に同時にアクセスしないことを保証する助けとするために、メモリ領域をロックする（すなわちアクセスを一時的に制限する）ことが必要である。これらのロックは、所定の位置に指定されたビットの状態をセットしチェックすることによって実装される。より詳細には、（セットされた、またはセットされていない）指定されたビットの状態をチェックすることによって、ディレクタは、ロックが既に有効であるかどうか判定する。さらに、ディレクタは、このビットの状態をテストし、それがセットされていない場合には、それをセットしてもよく、このようにして、ディレクタはロックを取得する。ロックは、同じディレクタによって、指定されたビットをクリアすることにより後に解放される。
【００７６】
２つ以上のディレクタが同じロックを取得しようとしているとき、ロック競合が生じる。第１のディレクタがロックを保持している間、第２のディレクタは、ロックの状態をポーリングする。すなわちロックの状態を周期的にチェックして、第２のディレクタがロックを取得することができるように、解放されたかどうか判定する。第２のディレクタは、ロックの状態をポーリングする度に、相互接続ネットワークを介して別個の要求を送信し、それは大きい損失を伴う。各ポーリング・インスタンスについて生じる往復遅延は重大であり、こうしたポーリングで消費されるコンピューティング・リソースは、かなりの量である。
【００７７】
しかし、ＲＣの組込みＣＰＵ  １３１０の使用は、こうした往復遅延を取り除き、またはそれを取り除く助けとなることによって、こうした損失を取り除き、またはそれを取り除くのに役立つ。ディレクタは、ディレクタがどのロックの取得を望んでいるか示す単一のメッセージをＣＰＵ  １３１０に送信することにより、ＣＰＵ  １３１０へのポーリング・タスクの負荷を取り除く。次いで、ＣＰＵは、ＣＰＵがメモリにより接近しているために比較的に非常に小さい往復遅延を伴って、ロックについてのポーリングを実施する。要求側ディレクタの代理でロックが取得されたとき、ＣＰＵは、別のメッセージを介してディレクタに通知する。
【００７８】
上で記載されたように組込みＣＰＵを使用して、以下の工程が実行されてロックを取得する。
１．ディレクタは、取得するロックを示すメッセージを、組込みＣＰＵ  １３１０に向けられたファブリック１４を介して送信する。
２．このメッセージは、メッセージ・エンジン７１８にルーティングされる。
３．メッセージ・エンジン７１８は、メッセージをグローバル・メモリに置き、ＲＸプロデューサ・インデックスを増分し、メッセージが到着したことを示すＣＰＵへの割込みを発行する。
４．メッセージ・エンジン７１８は、要求の受信を示す応答をディレクタに送信する。
５．割込みの結果、またはＲＸプロデューサ・インデックスの変化についてポーリングすることによって、ＣＰＵ  １３１０は、メッセージが到着したと判定する。
６．ＧＭＩ  ９１６を介してＣＰＵ  １３１０は、メッセージを取り出し、どのロックが、どのディレクタによって要求されたか判定する。
７．ＧＭＩ  ９１６を介してＣＰＵ  １３１０は、ロックが既に取られているかどうか判断する。ロックが取られている場合は、ＣＰＵ  １３１０は、サービスされるキューに要求を配置する。ロックが取られていない場合は、ＣＰＵ  １３１０は、ロックを取得済みとセットする。
８．ディレクタのためにロックが取得されると、ＣＰＵ  １３１０は、ＧＭＩ  ９１６を介して、ディレクタがロックを所有していることをディレクタに知らせるメッセージをグローバル・メモリ内に構築する。
９．ＣＰＵ  １３１０は、送信するメッセージがメモリ内にあることをメッセージ・エンジン９１６に知らせるＴＸプロデューサ・インデックスを書き込む。
１０．メッセージ・エンジン７１８は、グローバル・メモリからメッセージを取り出し、ファブリック１４を介してディレクタに送信する。
１１．ディレクタは、メッセージを受信し、ロックによって管理されたグローバル・メモリの一部に対して操作を開始する。
１２．ロックによって管理されたメモリの一部について終了すると、ディレクタは、ロックが取られていないものとマーク付けする別のメッセージをメモリに送信し、または存在するならば次の要求元にロックを割り当てる。
【００７９】
他の実施形態は、添付の特許請求の範囲内である。たとえば、ＲＣは、１つまたは複数の回路基板と一緒に、あるいはそれとして多数の半導体パッケージを使用して実装されてもよい。
【００８０】
ＲＣのモジュールのうちの１つまたは複数は、ＲＣの他のモジュールを含むＡＳＩＣの外部に実装されてもよい。
ＲＣは、多数の組込みＣＰＵを含んでいてもよい。
【００８１】
メモリ・コントローラＡＳＩＣは、上述したように、領域２００のＲＣのモジュールの一部またはすべてに加えて、１つまたは複数の追加モジュールを含んでもよい。たとえば、メモリ・コントローラＡＳＩＣは、ＡＳＩＣが領域２００のＲＣのスーパーセットとなるようにモジュールを有してもよい。
【００８２】
組込みＣＰＵまたはＣＰＵ複合体は、データ・ストレージ・システム内の別のＣＰＵの処理および／またはデータ・ハンドリング能力の一部またはすべてを有してもよい。
【図面の簡単な説明】
【００８３】
【図１】本発明の一実施形態が有利に実施され得る、データ・ストレージ・システムを含むデータ・ストレージ・ネットワークの概略ブロック図。
【図２】図１に示されたデータ・ストレージ・ネットワーク内に含まれるデータ・ストレージ・システムの機能コンポーネントを示す概略ブロック図。
【図３】図２のデータ・ストレージ・システムの共有キャッシュ・メモリ・リソースの機能コンポーネントを示す概略ブロック図。
【図４】図３の共有キャッシュ・メモリ・リソース内に含まれてもよいメモリ領域の機能コンポーネントを示す概略ブロック図。
【図５】図４のメモリ領域内に含まれてもよいメモリ・コントローラの概略ブロック図。
【図６】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の概略ブロック図。
【図７】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体内の工程フローを示す概略ブロック図。
【図８】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体内の工程フローを示す概略ブロック図。
【図９】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の中央処理装置の一部の概略ブロック図。
【図１０】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の中央処理装置の一部の概略ブロック図。
【図１１】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の中央処理装置の一部の概略ブロック図。
【図１２】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の中央処理装置の一部の概略ブロック図。
【図１３】図５のメモリ・コントローラ内に含まれてもよい中央処理装置複合体の中央処理装置の一部の概略ブロック図。
【図１】
2008535103.tif 000003
【図２】
2008535103.tif 000004
【図３】
2008535103.tif 000005
【図４】
2008535103.tif 000006
【図５】
2008535103.tif 000007
【図６】
2008535103.tif 000008
【図７】
2008535103.tif 000009
【図８】
2008535103.tif 000010
【図９】
2008535103.tif 000011
【図１０】
2008535103.tif 000012
【図１１】
2008535103.tif 000013
【図１２】
2008535103.tif 000014
【図１３】
2008535103.tif 000015
【国際調査報告】
2008535103.tif 000016
2008535103.tif 000017
2008535103.tif 000018