(57)【要約】      （修正有）【課題】高スループット記憶のための方法及びシステムを提供する。【解決手段】記憶装置に格納されたデータに対するリクエストを受信し、リクエストされたデータについてアドレスを決定し、データを特定のデスティネーション装置に転送するのに使用されるデスティネーション識別子を決定し、データを格納する記憶装置に対して決定されたアドレスを含む制御信号を記憶装置に転送するメモリセクションコントローラと、データとデスティネーション識別子とを合成し特定のデスティネーション装置に転送するメモリインタフェース装置と、を有するメモリセクションである。メモリインタフェース装置はさらに、直列に相互接続され、前記記憶装置からデータを読み込むシフトレジスタを有し、前記シフトレジスタにロードされるデータは、データのロード中にシフト周波数が維持される。【選択図】図１
2010250813.tif 000002
【特許請求の範囲】
【請求項１】
制御信号を受信し、１以上のアドレスにより特定可能なデータを格納する１以上の記憶装置と、
前記１以上の記憶装置により格納されたデータに対するリクエストを受信し、前記リクエストされたデータについて１以上のアドレスを決定し、前記リクエストされたデータを特定のデスティネーション装置に転送するのに使用されるデスティネーション識別子を決定し、前記リクエストされたデータを格納する前記記憶装置に対して決定されたアドレスを含む制御信号を前記記憶装置に転送するメモリセクションコントローラと、
前記記憶装置から該記憶装置により格納されている前記リクエストされたデータを受信し、前記メモリセクションコントローラから前記リクエストされたデータを転送するのに使用される前記決定されたデスティネーション識別子を受信し、前記リクエストされたデータと前記決定されたデスティネーション識別子とを合成紙、前記合成されたリクエストされたデータとデスティネーション識別子とを前記特定のデスティネーション装置に転送するメモリインタフェース装置と、
を有するメモリセクションであって、
前記メモリインタフェース装置はさらに、直列に相互接続されたシフトレジスタの少なくとも１つのセットを有し、
前記シフトレジスタの少なくとも１つのセットは、
直列に相互接続され、前記記憶装置にデータを書き込むシフトレジスタの少なくとも１つのセットと、
直列に相互接続され、前記記憶装置からデータを読み込むシフトレジスタの少なくとも１つのセットと、
を有し、
前記シフトレジスタのセットにロードされるデータは、前記シフトレジスタが前記シフトレジスタと前記記憶装置との間の前記データのロード中にシフト周波数を維持するように、クロック信号に従って前記セットのシフトレジスタの１つから前記セットのシフトレジスタの次のものシフトされるメモリセクション。
【請求項２】
前記リクエストされたデータを転送するのに使用されるデスティネーション識別子は、前記データの転送先の装置のアドレスである、請求項１記載のメモリセクション。
【請求項３】
前記リクエストされたデータを転送するのに使用されるデスティネーション識別子は、前記転送されるデータを特定する識別子である、請求項１記載のメモリセクション。
【請求項４】
前記決定されたアドレスは、スタートアドレスと送信ビット数とを有し、
前記メモリセクションコントローラは、前記スタートアドレスと前記送信ビット数とが前記記憶装置に送信されるように配置される内部メモリを有し、前記記憶装置に前記スタートアドレスと前記送信ビット数とにより指定される位置に前記データを送信させる、請求項１記載のメモリセクション。
【請求項５】
当該メモリセクションは、前記リクエストされたデータを、前記デスティネーション識別子を用いて前記リクエストされたデータを前記デスティネーション装置に転送するスイッチに送信する、請求項１記載のメモリセクション。
【請求項６】
前記メモリセクションコントローラは、テストデータを前記記憶装置に提供し、前記記憶装置から受信したテストデータをチェックし、前記テストデータのチェックに基づき不具合を決定する、請求項１記載のメモリセクション。
【請求項７】
前記記憶装置の格納領域は、データブロック識別子により識別可能なデータブロックに分割され、
当該メモリセクションにより受信されるデータリクエストは、前記メモリセクションコントローラに転送されるデータブロック識別子を有し、
前記メモリセクションコントローラは、前記データブロック識別子に基づき１以上のアドレスを決定し、前記決定されたアドレスを前記１以上の記憶装置に提供する、請求項１記載のメモリセクション。
【請求項８】
ストレージシステムに使用される方法であって、
記憶装置におけるアドレスにより識別可能な格納領域にデータを格納するステップと、
メモリセクションコントローラによって、前記記憶装置により格納されているデータに対するデータリクエストを受信するステップと、
前記メモリセクションコントローラが、前記リクエストされたデータについて１以上のアドレスを決定するステップと、
前記メモリセクションコントローラが、特定のデスティネーション装置に前記リクエストされたデータを転送するのに使用されるデスティネーション識別子を決定するステップと、
前記メモリセクションコントローラが、前記決定されたアドレスを含む制御信号を前記記憶装置に転送するステップと、
前記メモリセクションコントローラが、前記決定されたデスティネーション識別子をメモリインタフェース装置に転送するステップと、
前記メモリインタフェース装置が、前記記憶装置から前記リクエストされたデータを受信するステップと、
前記メモリインタフェース装置が、前記デスティネーション識別子と前記リクエストされたデータとを合成するステップと、
前記メモリインタフェース装置が、前記合成されたリクエストされたデータとデスティネーション識別子とを前記特定のデスティネーション装置に転送するステップとを、
を有し、
前記メモリインタフェース装置はさらに、直列に相互接続され、前記記憶装置にデータを書き込むシフトレジスタの少なくとも１つのセットと、直列に相互接続され、前記記憶装置からデータを読み込むシフトレジスタの少なくとも１つのセットとを有し、
当該方法はさらに、前記シフトレジスタが前記シフトレジスタと前記記憶装置との間のデータのロード中にシフト周波数を維持するように、前記シフトレジスタのセットにロードされるデータを、クロック信号に従って前記セットのシフトレジスタの１つから前記セットのシフトレジスタの次のものにシフトするステップを有する方法。
【請求項９】
前記決定されたアドレスは、スタートアドレスと送信ビット数とを有し、
当該方法はさらに、
前記スタートアドレスと前記送信ビット数とを前記メモリセクションコントローラの内部メモリに配置するステップと、
前記スタートアドレスと前記送信ビット数とを前記メモリセクションコントローラから前記記憶装置に転送するステップと、
前記記憶装置が、前記スタートアドレスと前記送信ビット数とを受信することに応答して、前記スタートアドレスと前記送信ビット数とにより指定される位置に前記データを転送するステップと、
を有する、請求項８記載の方法。
【請求項１０】
前記メモリセクションは、前記リクエストされたデータを、前記デスティネーション識別子を使用して前記リクエストされたデータを前記デスティネーション装置に転送するスイッチに送信するステップをさらに有する、請求項８記載の方法。
【請求項１１】
前記メモリセクションコントローラが、テストデータを前記記憶装置に提供するステップと、
前記メモリセクションコントローラが、前記メモリインタフェース装置から前記テストデータを受信するステップと、
前記メモリセクションコントローラが、前記受信したデータをチェックするステップと、
前記メモリセクションコントローラが、前記テストデータのチェックに基づき不具合を決定するステップと、
をさらに有する、請求項８記載の方法。
【請求項１２】
前記記憶装置の格納領域は、データブロック識別子により識別可能なデータブロックに分割され、
前記メモリセクションにより受信されるデータリクエストは、データブロック識別子を有し、
当該方法はさらに、
前記データリクエストを前記メモリセクションコントローラに転送するステップと、
前記メモリセクションコントローラが、前記データブロック識別子に基づき１以上のアドレスを決定するステップと、
前記メモリセクションコントローラが、前記決定されたアドレスを前記１以上の記憶装置に提供する、請求項８記載の方法。
【請求項１３】
前記リクエストされたデータを特定のデスティネーション装置に転送するのに使用されるデスティネーション識別子を決定するステップは、前記デスティネーション識別子を、前記データが転送される装置のアドレスとして扱うステップを有する、請求項８記載の方法。
【請求項１４】
前記リクエストされたデータを特定のデスティネーション装置に転送するのに使用されるデスティネーション識別子を決定するステップは、前記デスティネーション識別子を、前記転送されるデータを識別する識別子として扱うステップを有する、請求項８記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージに関し、より詳細には、高スループット記憶のための方法及びシステムに関する。
【背景技術】
【０００２】
大量のデータブロックの読み出しまたは書き込みを要するオンライントランザクション処理（ＯＬＴＰ）アプリケーションの一形態は、Ｈ−ＯＬＴＰアプリケーションと呼ばれる。典型的には、大規模サーバ、メインフレームあるいは複数のサーバが、Ｈ−ＯＬＴＰアプリケーションのホストとなる。典型的には、これらのアプリケーションは、リアルタイムオペレーティングシステム、リレーショナルデータベース、光ファイバベースネットワーキング、ユーザコミュニティへの分散通信設備及びアプリケーション自体の利用を伴う。これらのアプリケーションのストレージソリューションは、格納されているプログラム制御の下、メカニカルなディスクドライブとキャッシュメモリの組み合わせを利用する。Ｈ−ＯＬＴＰアプリケーションの記憶管理技術は、複数のディスクドライブに対する冗長ファイル格納アルゴリズム、メモリキャッシュ複製、データコヒーレンシーアルゴリズム及び／またはロードバランシングを利用することが可能である。
【０００３】
以下において、ＣＤＡ（Ｃａｃｈｅｄ  Ｄｉｓｋ  Ａｒｒａｙ）やＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｉｓｋ）システムの記憶管理技術が概説される。
【０００４】
ＣＤＡは、共通のプログラム制御の下、ディスクドライブとソリッドステートメモリシステムを合成したものである。ＣＤＡのディスクドライブは、サーボメカニカルな装置である。モータ技術の進歩は、現在ではディスクドライブのプラッタ（ｐｌａｔｔｅｒ）が毎分１５，０００回転することを可能にし、先進的なシステムでは、プラッタを毎分１８，０００回転させるものもある。
【０００５】
ＣＤＡは、より多くの装置のラック、より多くのキャッシュあるいはその両方を追加することにより容量が追加されるアーキテクチャにおいて、共通のメモリキャッシュと複数の回転するディスクのラックを組み合わせている。ＣＤＡはしばしば、Ｈ−ＯＬＴＰアプリケーションを含む失敗の許されない（ｍｉｓｓｉｏｎ  ｃｒｉｔｉｃａｌ）アプリケーションにおける格納サービスを提供するのに企業により利用されている。
【０００６】
ＣＤＡのオンボードキャッシュは、キャッシュメモリにおけるデータのアクセス時間は、ドライブ上のデータのアクセス時間より短くすることが可能であるため、頻繁に使用されるデータを格納する。ＣＤＡなどのメディアを有するこのようなハイエンドストレージシステム装置は、トータルのスループットとメモリキャッシュサイズに関して理想的な望ましい特徴を有するものではない。
【０００７】
ソリッドステートディスク（ＳＳＤ）は、コンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にそれの内部バス構成を介し付属されるソリッドステートメモリに対応する記憶装置である。外部のコンピュータに対し、ＳＳＤは高速通信リンクやネットワークを介しコンピュータに直接付属されるとき、超高速ディスクドライブとなる。格納されているプログラム制御の下で動作すると、ＳＳＤは、トランザクションログ、データベースインデックス、企業の失敗の許されないアプリケーションの効率的な実行に一体化された特殊なデータ構造などの頻繁に使用される情報を格納する。
【０００８】
大容量ストレージは、特に金融、防衛、研究、顧客管理及び国防の分野における新たに作成されるアプリケーションなどにおいて、大容量リアルタイムアプリケーションの十分なスループットを提供することが所望されるであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、本発明は、従来技術の問題点を解決するものであって、高スループット記憶のための方法及びシステムに関する。
【課題を解決するための手段】
【００１０】
本発明の目的によると、ここで広く説明及び実現されるように、１以上メモリセクション、１以上のスイッチ及び管理システムを有する装置のための方法及びシステムが提供される。１以上のメモリセクションは、データを格納領域に格納可能な１以上の記憶装置と、メモリセクションにおける不具合を検出し、検出された不具合に応答して、エラーメッセージを送信することが可能なメモリセクションコントローラとを有する。１以上のスイッチは、１以上の外部装置と接続するための１以上のインタフェースと、１以上のメモリセクションと外部装置インタフェースとに接続され、アルゴリズムに基づきメモリセクションと外部装置インタフェースとを相互接続するスイッチファブリックとを有する。メモリセクションコントローラからエラーメッセージを受信し、エラーメッセージの送信元のメモリセクションの使用を停止することが可能な管理システムが提供され、当該管理システムはさらに、メモリセクションと外部装置インタフェースを相互接続するのにスイッチファブリックにより用いられるアルゴリズムを決定し、この決定されたアルゴリズムを実行するようスイッチに指示することが可能である。
【００１１】
他の特徴では、１以上のメモリセクションと１以上のスイッチを有する装置のための方法及びシステムが提供される。１以上のメモリセクションは、データを格納する格納領域を有する１以上の記憶装置と、記憶装置に格納領域を特定するアドレスを提供するメモリセクションコントローラとを有し、記憶装置は提供されたアドレスを用いて、記憶装置に対するデータの読み書きから選ばれた機能を実行する。データリクエストを受信する１以上のスイッチは、格納領域群を特定するデータブロック識別子を有し、このデータブロック識別子に基づき、データリクエストをメモリセクションの１以上に切り替える。さらに、データリクエストが切り替えられたメモリセクションは、受信したデータブロック識別子をそれのメモリセクションコントローラに転送し、当該メモリセクションコントローラは、データブロック識別子を当該データブロック識別子により特定される格納領域のアドレス群に変換し、このアドレス群をメモリセクションの記憶装置の１以上に提供する。
【００１２】
さらなる特徴では、１以上の記憶装置、メモリセクションコントローラ及びメモリインタフェース装置を含む装置のための方法及びシステムが提供される。１以上の記憶装置は、１以上のアドレスにより特定可能なデータを格納するためのものであり、制御信号を受信することが可能である。メモリセクションコントローラは、記憶装置により格納されているデータに対するリクエストを受信し、要求されたデータに対する１以上のアドレスを決定し、要求されたデータを転送するのに用いられる識別子を決定し、要求されたデータを格納する記憶装置に対する決定されたアドレスを含む制御信号を記憶装置に送信する。メモリインタフェース装置は、記憶装置により格納されている要求されたデータを当該記憶装置から受信し、メモリセクションコントローラから、要求されたデータを転送するのに用いられる決定された識別子を受信し、要求されたデータと決定された識別子を合成し、要求されたデータを送信先装置に転送する。
【００１３】
上記概要と以下の詳細な説明は、請求された本発明の範囲を限定するべきものではない。何れも第三者が本発明を実施するのを可能にする実施例と説明を提供する。本発明のベストモードを実行するための説明の一部を構成する添付された図面は、本発明のいくつかの実施例を示し、説明と共に本発明の原理を説明する。
【発明の効果】
【００１４】
本発明によると、高スループット記憶のための方法及びシステムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、提供される方法及びシステムによるストレージハブ環境のブロック図である。
【図２】図２は、提供される方法及びシステムによるストレージハブの詳細なブロック図である。
【図３】図３は、提供される方法及びシステムによる管理コンプレックスの論理構成を示す。
【図４】図４は、提供される方法及びシステムによる管理コンプレックスの物理的構成のブロック図である。
【図５】図５は、提供される方法及びシステムによる一例となるメモリセクションのブロック図である。
【図６】図６は、本発明による方法及びシステムに従うスイッチ及びメモリセクションの機能図を示す。
【図７】図７は、提供される方法及びシステムによるスイッチ及びメモリセクションの他の機能図を示す。
【図８】図８は、提供される方法及びシステムによる他の一例となるスイッチの図を示す。
【図９】図９は、提供される方法及びシステムによる他のスイッチの図を示す。
【図１０】図１０は、提供される方法及びシステムによる一例となるパイプラインシフトレジスタを示す。
【図１１】図１１は、提供される方法及びシステムによるメモリインタフェース装置の一実施例の詳細なブロック図を含む。
【図１２】図１２は、提供される方法及びシステムによる一例となる書き込み処理のフローチャートを示す。
【図１３】図１３は、提供される方法及びシステムによる一例となる読み出し処理のフローチャートを示す。
【図１４】図１４は、提供される方法及びシステムによる分割された記憶装置の論理図を示す。
【図１５】図１５は、提供される方法及びシステムによるメモリインタフェース装置の他の実施例を示す。
【図１６】図１６は、提供される方法及びシステムによる他のメモリセクションを示す。
【発明を実施するための形態】
【００１６】
添付された図面に示される実施例がより詳細に参照される。可能である場合にはいつでも、同一または類似したパーツを参照するのに同一の参照番号が図面を通じて使用される。
【００１７】
図１は、提供される方法及びシステムに従う一実施例によるストレージハブ環境のブロック図である。図示されるように、ストレージハブ環境は、ストレージハブ１０、サーバ１２−１と１２−２、外部管理システム１４−１と１４−２、不揮発性記憶装置１６、ＩＰネットワーク１８及び他のネットワークへの接続２０から構成される。ストレージハブ１０は、大容量ストレージ（図示せず）を備え、データブロックにデータを格納する。データはデータブロックに格納されてもよいが、本発明の範囲から逸脱することなく、データを格納する他の任意の機構が利用されてもよい。不揮発性記憶装置１６は、上述のＣＤＡなどの磁気記憶装置であってもよい。不揮発性記憶装置１６は、ストレージハブ１０により格納されているデータのバックアップデータを格納するのに利用されてもよい。
【００１８】
以下の説明は、次のように構成されている。まず、図１に示されるストレージハブ１０の環境の概観が与えられる。その後、ストレージハブ１０のコンポーネントのより詳細な説明が与えられ、さらに、データをストレージハブに書き込む方法、データをストレージハブから読み出す方法、及びストレージハブ１０に対するテスト動作のより詳細な説明が与えられる。その後、上記コンポーネントの他の例が与えられる。しかしながら、これらはすべて、本発明を実現する実施例としての方法及びシステムに関する例示的説明であるということが理解されるべきである。また、本出願の請求項により画定される本発明を実現するのに利用可能な方法及びシステムは他にもあるということを当業者は認識するであろう。
【００１９】
サーバ１２−１と１２−２は、例えば、内部または外部ネットワーク（図示せず）に接続することが可能な市場から入手可能な標準的サーバまたはサーバファームである。例えば、サーバ２１−１及び／または１２−２は、ネットワークに接続されるエンドユーザからの情報の抽出または格納に対する要求を受信するため、イーサネット（登録商標）などの内部ネットワークに接続されていてもよい。あるいは、サーバ１２−１及び／または１２−２は、外部ネットワークに接続されるエンドユーザからの情報の抽出または格納に対する要求を受信するため、インターネットなどの外部ネットワークに接続することも可能である。さらに、２つのサーバ１２−１と１２−２が図示されているが、ストレージハブ１０は、任意数のサーバ１２に接続されてもよい。
【００２０】
サーバ１２により実行されるアプリケーションがデータを必要とするとき、サーバ１２は、ストレージハブ１０がデータを格納しているか判断する。サーバ１２は、それのアプリケーションが必要とするデータがストレージハブ１０上にあるか示すレコードを格納するようにしてもよい。その後、サーバ１２は、データを要求するデータリクエストをストレージハブ１０に送信する。ストレージハブ１０は、データ格納場所からデータを読み出し、当該データを要求したサーバ１２−１または１２−２に送信する。サーバは、ストレージハブ１０からデータを必要とする異なるタイプのアプリケーション及びデータベース管理システムを実行してもよい。典型的なアプリケーションの例として、課金システム、顧客関係管理システム、予約システム、発注システム、セキュリティシステムなどがあげられる。データベース管理システムの例としては、ＯＲＡＣＬＥ、ＤＢ２、Ｓｙｂａｓｅ、Ｉｎｆｏｒｍｉｘなどがあげられる。
【００２１】
さらに、ストレージハブ１０は、サーバ１２−１または１２−２からデータを格納するリクエストを受信するようにしてもよい。その後、ストレージハブ１０は、好ましくは、サーバ１２に書き込み発生のアクノリッジメント（すなわち、データの格納）またはエラーメッセージを提供する。
【００２２】
このようなメッセージは、例えば、データブロックがストレージハブ１０のストレージ（図示せず）と、ＣＤＡ１６がストレージハブ１０のバックアップとして利用されるＣＤＡ１６の両方に安全に格納されたことのアクノリッジメント、データブロックがストレージハブ１０のストレージ（図示せず）に安全に格納されていることのアクノリッジメント、何れかのタイプの非アクノリッジメント、あるいはエラーメッセージを含むことが可能である。
【００２３】
外部管理システム１４は、外部管理システム１４−２などのストレージハブ１０に直接接続されてもよい。あるいは、外部管理システム１４は、ネットワークを介しストレージハブ１０に接続されてもよく、例えば、外部管理システム１４−１はネットワーク１８を介しストレージハブ１０に接続される。ネットワーク１８は、内部イーサネットネットワーク、ＩＰネットワーク、あるいはインターネットなどの任意のタイプのネットワークでもよい。図１はストレージハブ１０に接続される外部管理システム１４−１と１４−２の両方を示しているが、他の実現形態では、外部管理システムは１つのみ、あるいは任意数設けられてもよいし、あるいは外部管理システム１４は設けられる必要はない。例えば、他の実現形態では、３以上の外部管理システムを有することが望ましいかもしれない。さらに、外部管理システムは、ＨＰ  Ｏｐｅｎｖｉｅｗなどの入手可能なソフトウェアまたは専用ソフトウェアを実行するコンピュータであってもよい。ストレージハブ１０は、格納されているデータブロックの状態及び位置などの監視及び管理情報を外部管理システム１４に提供するようにしてもよい。
【００２４】
図２は、提供される方法及びシステムによるストレージハブ１０のより詳細なブロック図を示す。図示されるように、ストレージハブ１０は、スイッチ２２−１と２２−２、管理コンプレックス２６及びメモリセクション３０−１〜３０−ｎから構成される。本実施例では、スイッチ２２−１と２２−２の何れもがアクティブ状態であってもよいし、あるいは一方のスイッチがアクティブ、他方のスイッチはアクティブなスイッチに問題が生じたときに使用される冗長なスイッチとされてもよい。図２は２つのスイッチを示しているが、ストレージハブ１２は、１つのみ、または任意数のスイッチを備えるようにしてもよい。
【００２５】
図２において、サーバ１２−２は、ネットワーク２０を介しストレージハブ１０と入出力（Ｉ／Ｏ）コントローラ２４を介し接続している。ネットワークは、イーサネットネットワークやインターネットなどの内部または外部何れのタイプのネットワークであってもよい。Ｉ／Ｏコントローラ２４は、好ましくは、特定のネットワーク２０と接続するための適切なＩ／Ｏコントローラである。好ましくは、Ｉ／Ｏコントローラ２４は、ネットｗ−ク２０の本来のプロトコルとストレージハブ１０により用いられるローカルプロトコルとの間で信号を変換する。可能なプロトコルとしては、以下に限定されるものではないが、ＴＣＰ／ＩＰ（Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＳＮＡ（Ｓｙｓｔｅｍ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ベースプロトコル、ＳＣＣＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｃｏｎｔｒｏｌ  Ｉｎｔｅｒｆａｃｅ）、ＩＳＣＩ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｉｎｔｅｒｆａｃｅ）、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、Ｉｎｆｉｎｉｂａｎｄ、他の第３世代入出力（３ＧＩＯ）プロトコルなどがあげられる。
【００２６】
メモリセクション３０は、好ましくは、ストレージにアクセスするための他のハードウェアと共に、ストレージハブ１０のストレージを備える。ここで用いられる「メモリセクション」との用語は、情報を格納するのに利用可能な１以上の記憶装置を含む任意のサブシステムを意味する。この構成は、データの格納が可能な任意の装置に適用可能である。従って、ストレージハブ１０がデータを格納するリクエストを受信すると、当該データはメモリセクションに転送され、データは格納される。同様に、データに対するリクエストがストレージハブ１０により受信されると、このリクエストは要求された情報を格納しているメモリセクション３０に送られる。このとき、メモリセクション３０は要求されたデータを読み出し、当該データを要求したサーバ１２に送信する。メモリセクション３０とその動作に関するより詳細な説明は以降において与えられる。
【００２７】
ストレージハブ１０の管理コンプレックス２６は、ストレージハブ１０の管理タイプ機能を実行し、ストレージハブ１０と外部管理システム１４を接続する。ここで用いられる「管理コンプレックス」という用語は、ストレージハブ１０の管理を行う任意のソフトウェア及び／またはハードウェアを意味する。管理コンプレックス２６のより詳細な説明は以降において与えられる。
【００２８】
Ｉ／Ｏコントローラ２４とスイッチ２２−１及び２２−２は、好ましくは、データブロックがネットワーク２０の本来のプロトコルによりストレージハブと送受信可能となるように、管理コンプレックス２６による共通管理制御下にある。
【００２９】
各サーバ１２−１と１２−２は、好ましくは、デバイスドライバ２８−１と２８−２をそれぞれ有する。デバイスドライバ２８は、ストレージハブ１０とのデータの読み書き（すなわち、格納される）を実行させるサーバ上のアプリケーションを可能にするサーバ上のソフトウェアにより実行されるプログラムである。サーバ１２がデータを読み書きするリクエストを受信すると、サーバ１２のデバイスドライバ２８は、当該リクエストをストレージハブ１０のスイッチに転送する。デバイスドライバ２８は、例えば、サーバレジデントソフトウェアの一部として供給される標準的なデバイスドライバであってもよいし、あるいは記憶装置のベンダにより供給される専用ソフトウェアであってもよい。さらに、一部のアプリケーションでは、デバイスドライバ２８は、サーバ上に設けられる任意のアプリケーションから独立していてもよい。
【００３０】
スイッチ２２−１と２２−２は、互いに工業用規格通信インタフェースプロトコルを介し、サーバ１２−１、Ｉ／Ｏコントローラ２４、ＣＤＡ１６及びメモリセクション３０−１〜３０−ｎに接続される。これらの通信インタフェースプロトコルは、例えば、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）、イーサネット（登録商標）、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＳＮＡ（Ｓｙｓｔｅｍｓ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）インタフェースあるいはＸ．２５などであってもよい。銅線や光ファイバなどの任意のタイプの物理的接続が、上記各種コンポーネントを接続するのに利用されてもよい。管理コンプレックス２６は、好ましくは、ギガビットイーサネット接続を介し、スイッチ２２、メモリセクション３０−１〜３０−ｎ、Ｉ／Ｏコントローラ２６及び外部管理システム１４に接続される。これらは好ましい接続であるが、上記装置を接続するのに利用可能なプロトコルや物理的メディアに他にも多数あるということは当業者は認識するであろう。さらに、メモリセクション３０は、上記装置の接続のため、複数のプロトコル及び物理的メディアを同時にサポートするものであってもよい。
【００３１】
スイッチ２２は、時分割多重ファブリックや空間分割多重ファブリックなどの任意のタイプのスイッチファブリックを用いた任意のタイプのスイッチであってもよい。ここで用いられる「スイッチファブリック」との用語は、入力インタフェースから出力インタフェースまでデータを送る物理的なインタコネクション構成を意味する。例えば、スイッチ２２は、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌスイッチ、ＡＴＭスイッチ、高速イーサネットスイッチ、ＦＤＤＩスイッチ、あるいは他の任意のタイプのスイッチであってもよい。スイッチ２２はまた、当該スイッチを制御するコントローラ（図示せず）を有するようにしてもよい。
【００３２】
書き込み処理では、データブロックは、ストレージハブ１０のメモリセクション３０に書き込まれるのに加えて、ＣＤＡ１６または他のストレージハブ（図示せず）に書き込まれてもよい。データが書き込まれた後、管理コンプレックス２６の設定管理パラメータに依存して、ストレージハブ１０はアクノリッジメントをサーバ１２のデバイスドライバ２８に送信するようにしてもよい。設定管理パラメータの例としては、状態パラメータ、ライトアクノリッジメントパラメータ、ルーティングパラメータ、通知インターバルパラメータ及び現在日時などがあげられる。
【００３３】
データブロック読み出しリクエストでは、データブロックを要求するデバイスドライバ２８のリクエストにより、スイッチ２２が当該リクエストを適切なメモリセクション３０に送り、メモリセクション３０は当該データブロックを抽出し、スイッチ２２を介し要求元のサーバ１２のデバイスドライバ２８に送信する。
【００３４】
データブロックの読み出し及び書き込み処理中、管理コンプレックス２６の設定管理パラメータに応じて、メモリセクション３０は、管理コンプレックス２６に送信する管理データを収集する。その後、管理コンプレックス２６は、当該データを外部管理システム１４に利用可能にする。
【００３５】
さらに、管理コンプレックス２６は、監視及び管理情報を収集し、外部管理システム１４に提供する。監視情報には、例えば、メモリセクションハートビート（ｈｅａｒｔｂｅａｔ）（すなわち、メモリセクションが依然として通信可能であることを示す信号）、アラーム及びアラームのアクノリッジメントが含まれてもよい。管理情報には、例えば、読み書きされたデータに関する統計、アクティブなメモリセクションの個数に関する統計、メモリセクション利用性に関する統計、以前の情報を外部管理システムに提示する通知などが含まれてもよい。
【００３６】
外部管理システム１４はまた、管理コンプレックス２６を設定管理データに提供するようにしてもよい、この設定管理情報には、例えば、有効な通信ネットワークアドレス、ハートビートインターバルの期間、データブロックサイズ、コマンドセットなどが含まれてもよい。
【００３７】
ストレージハブ１０はまた、工業的に利用可能な標準的手段を用いてビットレベルエラー復元を実行するようにしてもよい。例えば、回路及び／またはソフトウェアを用いた誤り検出訂正符号（ＥＤＡＣ）と呼ばれる誤り訂正符合（ＥＣＣ）が、精度に関してデータをテストするのに利用されてもよい。これらの符号及び技術は、誤りの検出及び訂正を行うため、複数のパリティビットを用いたパリティビットまたは循環的冗長性チェック、あるいは複数の誤りを検出するためのより先進的な技術（例えば、Ｒｅｅｄ−Ｓｏｌｏｍｏｎコードなど）を含む。さらに、ストレージハブ１０の各メモリセクション３０は、それ自身の誤り訂正スキームを有するものであってもよい。
【００３８】
以下において、図２に示されるストレージハブ１０のコンポーネント、すなわち、管理コンプレックス２６、スイッチ２２及びメモリセクション３０のより詳細な説明が与えられる。その後、読み出し、書き込み及びテスト処理のより詳細な説明が与えられる。その後、メモリセクション３０の他の実施例が、ストレージハブ１０とそのコンポーネントの特徴と共に与えられる。
［管理コンプレックス］
図３は、提供される方法及びシステムによる管理コンプレックス２６の論理構成を示す。図示されるように、管理コンプレックス２６は、管理プロセス３２を管理する機能と、制御プロセス３４を管理する機能とを備えるようにしてもよい。これらの管理機能は、各自のプロセスを実行する１以上のＣＰＵを有するようにすることが可能である。さらに、管理コンプレックス２６は、これら機能間の通信のための１以上のアプリケーションプログラムインタフェース（ＡＰＩ）を用いるようにしてもよい。
【００３９】
図４は、提供される方法及びシステムによる管理コンプレックス２６の物理的構成のブロック図である。図示されるように、管理コンプレックス２６は、１以上の制御プロセッサ３４−１〜３４−ｎ、共有メモリ３６、１以上の管理プロセッサ３２−１〜３２−ｍ、記憶装置３８及び通信ネットワーク４０を有する。上述のように、制御プロセッサ３４は、１以上のＣＰＵを有するものであってもよい。これらの制御ＣＰＵ３４−１〜３４−ｎは、共有メモリ３６とインタフェースを有する。通信ネットワーク４０は、内部ネットワークであってもよいし、ギガビットイーサネットなどの任意のタイプの通信プロトコルを用いるものであってもよい。
【００４０】
制御プロセッサの１以上（例えば、３４−１〜３４−ｍなど）がマスタとして機能し、残りの制御プロセッサ（例えば、３４−（ｍ＋１）〜３４−ｎなど）がスタンバイモードに維持され、マスタ制御プロセッサの１つ（例えば、３４−１など）に不具合が生じると迅速に切り替えができるようにしてもよい。
【００４１】
制御ＣＰＵ３４は、ギガビットイーサネットネットワークなどの通信ネットワークに設けられてもよいし、磁気記憶装置３８に直接設置されてもよい。
【００４２】
各管理プロセッサ３２は、メモリ（図示せず）を有し、通信ネットワーク４０に設けられてもよい。これら管理プロセッサはまた、磁気記憶装置３８に接続されてもよい。磁気記憶装置３８は、制御プロセッサ３４と管理プロセッサ３２からの各種制御及び管理情報を格納している。磁気記憶装置３８は、サーボメカニカルなディスク装置などの任意のタイプの磁気記憶装置であってもよい。他の実施例では、記憶装置３８は含まれる必要はない。
【００４３】
制御プロセッサ３４は、メモリセクション３０、Ｉ／Ｏコントローラ２４、スイッチ２２及びサーバ１２のデバイスドライバ２８に対する設定管理機能を実行する。ここで用いられる「設定（ｃｏｎｆｉｇｕｒａｔｉｏｎ）」という用語は、ストレージハブの各コンポーネントの可能な各種動作状態を含む広い用語である。ここで用いられる「動作状態（ｏｐｅｒａｔｉｎｇ  ｓｔａｔｅ）」という用語は、ストレージハブやそれのコンポーネントがパラメータの値により規定されるような動作を行う可能な方法を意味する。これらのパラメータの値は、例えば、システム管理者などのストレージハブのユーザにより外部管理システムなどを介し設定されるようにしてもよい。動作状態には、例えば、あるコンポーネント（メモリセクション３０など）がパフォーマンス統計を管理コンプレックス２６に送信する頻度、あるコンポーネント（メモリセクションなど）に警告を通知させるイベントのリスト、及び／または通知される警告（コンポーネントの重大な故障、コンポーネントによる些細な不具合など）のタイプなどが含まれるかもしれない。さらに、ここで用いられる「設定管理（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｍａｎａｇｅｍｅｎｔ）」という用語は、ストレージハブのコンポーネントの現在の動作状態と、制御プロセッサ３４において実行されているソフトウェアにより規定されるコンポーネントの情報の変更に対する応答能力の理解を意味する。例えば、制御プロセッサ３４は、ストレージハブ１０のアクティブ状態のメモリセクション３０、スイッチ２２、サーバ１２のデバイスドライバ２８、存在する場合にはストレージハブ１０に接続されている外部サーバ２２の各個数をリアルタイムに制御するようにしてもよい。
【００４４】
制御プロセッサ３４のソフトウェアはまた、管理コンプレックスが実行する他の機能とは独立に、そして他のメモリセクション３０の動作に実質的に影響を与えることなく、あるいはストレージハブの全体的なパフォーマンスに悪影響を及ぼすことなく、新たなメモリセクションを機能させたり機能停止させたりすることができるようにしてもよい。この機能を実行するための指示は、制御プロセス３４からスイッチ２２に送られ、サーバ１２のデバイスドライバ２８に送られるようにしてもよい。新たな容量がストレージハブ１０に追加される場合、制御プロセッサ３２のソフトウェア機能により新たなメモリセクション３０を機能させることができる。メモリセクション３０が故障した場合、この故障したメモリセクション３０は交換され、新たなメモリセクションが供される。故障管理に関するさらなる説明は以降において与えられる。
【００４５】
制御プロセッサ３４はまた、例えば、ストレージハブ１０の故障管理を実行することができるようにしてもよい。ここで用いられる「故障管理（ｆａｕｌｔ  ｍａｎａｇｅｍｅｎｔ）」という用語は、故障を検出し、故障の検出に応答して訂正動作を実行しようとすることを意味する。例えば、制御プロセッサは、メモリセクション３０またはその一部の動作故障を認識し、データを作業中のメモリセクション３０に移すかもしれない。このとき、制御プロセッサ３４は、ストレージハブ１０に設けられるサーバ１２上で実行されるデバイスドライバ２８と外部管理システム１４にこの移転を伝達するようにしてもよい。
【００４６】
制御プロセッサ３４はまた、メモリセクション３０の故障時には「欠損ブロック（ｂａｄ−ｂｌｏｃｋ）」移転機能と、電力障害時には磁気記憶装置３８へのデータの書き込みを管理するようにしてもよい。欠損ブロックの移転は、セクションコントローラ５４または管理コンプレックス２６により損傷した記憶装置にあると検出されたデータブロックが、可能な場合には復元されるプロセスである。
【００４７】
例えば、制御プロセッサ３４がメモリセクション３０−２のブロック６５，０００が正確に読取れないと検出すると、制御プロセッサ３４は、メモリセクション３０−２のブロック６５，０００をメモリセクション３０−２のブロック位置１，９９９，９９８に移転することを決定するようにしてもよい。その後、制御プロセッサ３４は、ＣＤＡ１６に当該データブロックを読み出すよう指示し、メモリセクション３０−２の位置１，９９９，９９８にそれを書き込むよう指示するようにしてもよい。完了すると、制御プロセッサ３４は、スイッチ２２とメモリセクション３０−２にブロック６５，０００が位置１，９９９，９９８から現在読み出し可能であると通知するようにしてもよい。
【００４８】
欠損ブロックの移転に関する他の例として、メモリセクションの１つのみの記憶装置が故障した場合、管理コンプレックス２６の制御プロセッサ３４は、この欠損ブロックについてセクションコントローラ５４に通知し、この故障した記憶装置上のデータがどこにバックアップされているか判断し（例えば、ＣＤＡ１６）、バックアップされているデータを同一のメモリセクションまたは異なるメモリセクション上の取り替えられた記憶装置にロードするよう指示する。後者の場合、管理コンプレックスはまた、スイッチにもデータが新たなメモリセクションに移転されたことを通知する。
【００４９】
さらなる他の例として、制御プロセッサ３４によりあるメモリセクション３０が故障していると判断されると、制御プロセッサ３４は、このメモリセクション３０の全体を機能停止し、メモリセクションの置換が実行されるよう指示するようにしてもよい。これを実現するため、制御プロセッサ３４は、例えば、ＣＤＡ１６に故障したメモリセクション３０のデータのバックアップを、例えば、メモリセクション３０が欠損した場合に用いられるスペアのメモリセクション３０であってよい他のメモリセクション３０−Ｎに転送するよう指示してもよい。このとき、この新たなメモリセクション３０−Ｎは、あたかもそれが故障メモリセクション３０であるかのように動作するようにしてもよい。このとき、制御プロセッサ３４は、この情報を各種デバイスドライバ２８と外部管理システム１４に通信するようにしてもよい。
【００５０】
制御プロセッサ３４はまた、メモリセクション３０、スイッチコントローラ２０２及びＩ／Ｏコントローラ２４に更新された新規のソフトウェアを提供するようにしてもよい。例えば、メモリセクション３０またはスイッチ２２により用いられるソフトウェアが損傷及び／または故障した場合、制御プロセッサ３４は、自らのストレージ３８からソフトウェア画像の言味または以前のもののバックアップコピーをロードすることが可能である。ソフトウェア画像は、コンピュータにより直接実行可能なバイナリオブジェクトコードである。一実施例による制御プロセッサ３４のソフトウェア画像は、磁気ストレージ３８に格納される。さらに、制御プロセッサ３４はまた、ＣＤＡ１６からのデータブロックのメモリセクション３０へのロード処理を制御するようにしてもよく、またその逆としてもよい。
【００５１】
さらに、制御プロセッサ３４は、あるコンポーネントが警告を送信した時刻や、あるコンポーネントが警告状態あったトータルの経過時間などの情報を、通信インタフェースを介しストレージハブ１０のコンポーネントから受信するようにしてもよい。
【００５２】
制御プロセッサ３４はまた、管理プロセッサ３２がアクティブなメモリセクション３０の個数、一定時間におけるストレージハブ１０のトータルスループット、メモリセクションキューのサイズなど、ストレージハブの動作状態を有するパラメータに関するデータを収集することを可能にする（ここで、メモリセクションキューは、完了予定のリード処理及びライト処理のリストから構成されるセクションコントローラのキューである）。さらに、制御プロセッサ３４は、制御プロセッサがマスタとしてアクティブ状態にあるか、スタンバイ状態にあるか、動作していないかの決定など、自らの動作状態をモニタリングするためのものである。さらに、制御プロセッサ３４は、極端な温度や湿度などに対しストレージハブの環境をモニタリングするようにしてもよい。
【００５３】
制御プロセッサ３４はまた、スイッチ２２により実行されるソフトウェアのコピー（すなわち、ソフトウェア画像）を格納するようにしてもよい。スイッチ２２のより詳細な説明は以降において与えられる。必要に応じて、スイッチソフトウェアを１以上のスイッチにリロードすることが可能である、後述されるように、スイッチ２２は、スイッチ２２を制御するため、このソフトウェアを実行する１以上のスイッチコントローラ（図示せず）を有するようにしてもよい。スイッチ２２がマスタ−スレーブ構成により構成された複数のコントローラを用いる場合、制御プロセッサ３４は、スイッチのどのコントローラがマスタであり、どのコントローラがスレーブであるか判断してもよい。
【００５４】
さらに、制御プロセッサ３４は、スイッチ２２上のポート（図示せず）の状態（アクティブ、アイドル、停止）、すなわち、これらのポートがサーバ１２やメモリセクション３０に接続するのに利用されているか判断するようにしてもよい。制御プロセッサ３４はまた、設定管理データをスイッチ２２に提供するようにしてもよい。設定管理データの例として、日付、時刻、使用されているルーティングアルゴリズム、状態のチェック間隔、アクティブなサーバポートの識別子などが含まれる。さらに、制御プロセッサ３４は、スイッチに異なる「取得」アルゴリズムを利用して接続を確立するのに利用可能なアイドルポートを検出するよう指示してもよい。これらのアルゴリズムは、例えば、ロータリーハント（ｒｏｔａｒｙ  ｈｕｎｔ）、スキップルート（ｓｋｉｐ  ｒｏｕｔｅ）及びリーストユーズド（ｌｅａｓｔ−ｕｓｅｄ）を含むスイッチコントローラにより実行されるソフトウェアに含まれてもよい。
【００５５】
管理プロセッサ３２は、好ましくは、Ｉ／Ｏコントローラ２４、メモリセクション３０、スイッチ２２及び制御プロセッサ３４から情報及び統計を収集する。収集された情報及び統計は、統計レポート、テレメトリ（ｔｅｌｅｍｅｔｒｙ）データ及び他の警告を生成するための情報と管理データを含むものであってもよい。管理プロセッサ３２は、ＴＣＰ／ＩＰや他の任意の適切なプロトコルを利用して、当該情報を外部管理システム１４に提供する。管理プロセッサ３２は、このようなパラメータに関するデータをデバイスドライバ２８、スイッチ２２及びメモリセクション３０から収集するようにしてもよい。
【００５６】
システム管理者などの外部管理システムのユーザは、ストレージシステム１０の設定管理パラメータの変更を要求するかもしれない。この変更は、例えば、新たなメモリセクション３０の追加を表すものであるかもしれない。システム管理者などの外部管理システム１４のユーザもまた、１以上のストレージハブ１０を含むストレージエリアネットワーク環境（記憶装置に専用のネットワークにより接続されている記憶装置群）、１以上のストレージハブ１０を含むネットワークエリアストレージ環境（他のトラフィックにより共有されているネットワークにより接続される記憶装置群）、及び他の外部システムから統計データを収集するよう管理プロセッサ３６に要求してもよい。例えば、この統計データには、各ストレージ環境や特定のサーバからのトータルの入力リクエストが含まれてもよい。
【００５７】
管理プロセッサ３２は、管理データが標準的なデータベースに格納されるようデータベースプログラムを実行し、コンピュータ画面または紙上のレポート及びグラフィックスにより当該情報をストレージハブ１０のシステム管理者に提供するのに利用することが可能である。例えば、ストレージハブのシステム管理者は、外部管理システム１４を用いて当該情報にアクセスすることができるようにしてもよい。あるいは、ストレージハブ１０のシステム管理者は、管理プロセッサとインタフェースを介し直接情報にアクセスするようにしてもよい。制御プロセッサ３４と同様に、管理プロセッサ３６は、自身をモニタリングし、自らの動作状態を制御プロセッサ３４に通知することが可能であり、任意の理由に対しどの管理プロセッサ３４がアクティブ状態かそうでないか判断される。
【００５８】
管理コンプレックス２６は、不揮発性記憶装置にデータを１以上のメモリセクション３０にロードするよう指示してもよい。例えば、図２に示されるように、ストレージハブ１０は、ＣＤＡ１６などの不揮発性記憶装置に接続されてもよい。このとき、管理コンプレックス２６は、各種動作を実行するための指示をＣＤＡ１６、スイッチ２２及びメモリセクション３０に送信可能とされてもよい。これらの動作には、例えば、ストレージハブ１０の設定に対する管理変更の結果として、メモリセクション３０の故障の結果として、あるいはユーザによるコマンドの結果として、停電により電力がストップした後、ストレージハブ１０の電源がオンされたとき、ストレージハブ１０が再起動されたとき、不揮発性記憶装置１６からのメモリセクション３０のロード処理が含まれてもよい。
【００５９】
ここまで管理コンプレックス２６により実行可能な多数の管理及び制御機能が与えられたが、管理コンプレックス２６が、異なる機能のすべてまたは一部を実行するようにしてもよいということは理解されるべきである。さらに、図３及び４は、一例となる管理コンプレックスが個別の管理プロセッサ３２と制御プロセッサ３４を用いて実現されることを示しているが、管理コンプレックスは１つのみ、または任意数のプロセッサを用いて、あるいはプロセッサを用いることなく実現されてもよい。
［メモリセクション］
図５は、提供される方法及びシステムによる一例となるメモリセクション３０のブロック図である。図示されるように、メモリセクション３０は、スイッチポータル（「Ｓ−ポータル」）４２、セクションコントローラ５４、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５６、テンポラリストレージ５８、テンポラリストレージインタフェース装置６０、テンポラリストアセレクタ（「Ｔ−セレクタ」）６２、シンクロナイザ６８、１以上のメモリイン名ｔフェース装置６４−１〜６４−８、及び１以上の記憶装置６６−１〜６６−ｎから構成されてもよい。
【００６０】
記憶装置６６は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ＤＲＡＭ）、磁気ＲＡＭ、抵抗ＲＡＭ、強誘電性ＲＡＭ、ポリマーＲＡＭ、カルコゲニドＲＡＭ、ＳＩＭＭ（Ｓｉｎｇｌｅ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）、ＲＩＭＭ（Ｒａｍｂｕｓ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）、回転メディアなどの任意のタイプの記憶装置であってもよい。ここではメモリインタフェース装置という用語が用いられるが、この用語は記憶装置に格納されている情報にアクセス可能な任意のタイプのアクセス装置を含むよう広く解釈されるべきであるということが理解されるべきである。一例となるメモリインタフェース装置のより詳細な説明は以降において与えられる。
【００６１】
セクションコントローラ５４は、例えば、マイクロプロセッサ５１、内部メモリ５２、管理コンプレックスインタフェース５３、記憶装置制御回路５５、通信チャネルインタフェース（ＣＣＩ）制御回路５７、テスト回路５９、タイミング回路６１及びヘッダ／テストインタフェース６３から構成されてもよい。マイクロプロセッサ５１は、例えば、適切なソフトウェアを実行するモトローラＧ２などのチップであってもよい。内部メモリ５２は、例えば、プログラム及びデータの格納のための３２メガバイトの利用可能なＳＲＡＭであってもよい。この内部メモリ５２は、モトローラＧ２などのマイクロプロセッサ５１に内蔵されてもよい。管理コンプレックスインタフェース５３は、例えば、セクションコントローラ５４が管理コンプレックス２６との通信において利用するギガビットイーサネットインタフェースを介し実行されるＴＣＰ／ＩＰであってもよい。ヘッダ／テストインタフェース６３は、セクションコントローラ５４からメモリインタフェース装置６４に情報を提供するための適切なインタフェースであってもよい。
【００６２】
セクションコントローラ５４はさらに、電力が最初に印加されるとき利用されるブーストラップＲＯＭ５６にアクセスするようにしてもよい。このブーストラップＲＯＭ５６は、例えば、セクションコントローラ５４が管理インタフェース５３を介し現在のソフトウェア画像を取得するため、制御プロセッサ３４と通信することを可能にする小さなソフトウェア画像を含むものであってもよい。セクションコントローラ５４はさらに、通信チャネルインタフェース４６の管理に用いられるダイレクトメモリアドレス回路を有するＣＣＩ制御回路を含むものであってもよい。
【００６３】
セクションコントローラ５４はまた、記憶装置６６を制御する記憶装置制御回路５５を有するものであってもよい。この記憶装置制御回路５５は、例えば、メモリラッチの２値状態を介し記憶装置６６の状態を制御するメモリラッチング回路を有するようにしてもよい。メモリラッチ処理のさらなる説明は以降において与えられる。セクションコントローラ５４はさらに、メモリセクション３０をテストするテスト回路５９を有するようにしてもよい。一例となるテスト処理のより詳細な説明は、以降において与えられる。さらに、セクションコントローラは、ヘッダタイプ情報（例えば、データブロック識別子、宛先アドレスなど）を提供し、メモリセクション３０をテストするヘッダ／テストインタフェース６３を有するようにしてもよい。また、セクションコントローラ５４は、メモリセクションにより利用される、マスタスレーブクロック信号や、スタート及びストップリードまたはライト信号などの他のタイミング信号を提供するタイミング回路６１を有するようにしてもよい。
【００６４】
Ｓ−ポータル４２は、セレクタ４４及び通信チャネルインタフェース４６から構成されてもよい。通信チャネルインタフェース４６は、スイッチ２２を介し１以上のサーバ１２とメモリセクション３０を接続するためのインタフェースを提供する。この接続は、例えば、１以上の光ファイバまたは銅線ケーブルを介したものであってもよい。セレクタ４４は、セレクタ４４が通信チャネルインタフェース４６の任意のＩ／Ｏポートと任意のメモリインタフェース装置６４を接続するように、１以上のメモリインタフェース装置６４と通信チャネルインタフェース４６を接続するための回路を有するようにしてもよい。ＣＣＩ回路５７を介したセクションコントローラ５４は、セレクタがメモリインタフェース装置６４と通信チャネルインタフェース４６をどのように接続すべきかに関する制御信号をセレクタ４４に提供するようにしてもよい。さらに、セレクタ４４は、メモリインタフェース装置６４からＣＣＩ回路５７を介しセクションコントローラ５４にテストデータなどのデータを送信するよう指示されてもよい。
【００６５】
通信チャネルインタフェース４６は、何れかの標準的なチャネルインタフェースプロトコルなどの任意のタイプのプロトコルを利用することが可能であり、セレクタ４４が含まれてもよいし、あるいはそうでなくてもよい。一例となる標準的なインタフェースプロトコルは、ファイバチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、システムネットワークアーキテクチャベースプロトコル（Ｓｙｓｔｅｍ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ−ｂａｓｅｄ  ｐｒｏｔｏｃｏｌ）、インテリジェントシリアル通信制御インタフェース及び他の第３世代入出力（３ＧＩＯ）プロトコルを含むものであってもよい。
【００６６】
テンポラリストレージインタフェース装置６０は、テンポラリストレージ装置５８にアクセス可能な任意のタイプの装置である。例えば、テンポラリストレージインタフェース装置６０は、データがシフトレジスタアレイを介し連続的にクロック処理されるように、直列に相互接続された複数のシフトレジスタを含む１以上のシフトレジスタアレイ（図示せず）を有するものであってもよい。シフトレジスタアレイ及び記憶装置などの記憶媒体へのアクセスにおける利用のさらなる説明には、参照することによりその内容の全体がここに含まれる、本出願と同日に出願されたＷｉｌｌｉａｍ  Ｔ．ＬｙｎｃｈとＤａｖｉｄ  Ｊ．Ｈｅｒｂｉｓｏｎによる「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」を参照されたい。
【００６７】
テンポラリストレージ５８は、ＤＲＡＭ、ＳＤＲＡＭ、ＳＩＭＭ、ＤＩＭＭ、ディスクドライブなどの任意のタイプの記憶装置であってもよい。Ｔ−セレクタ６２は、複数の入力からの選択を行う任意のタイプのセレクタであってもよい。
【００６８】
ストレージハブ１０は、テンポラリストレージインタフェース装置６０がシフトレジスタアレイを有する実施例において、シンクロナイザ６８を利用するかもしれない。このような実施例では、シンクロナイザ６８は、例えば、メモリセクション３０に格納されるデータを受付け、位相同期回路を用いて入力データストリームからクロック周波数を抽出するようにしてもよい。このとき、シフトレジスタアレイを有するテンポラリストレージインタフェース装置６０は、このクロック信号を用いてテンポラリストレージ装置５８へのデータの書き込みにおいてこのデータをシフトするようにしてもよい。このクロック信号は、例えば、入力データの位相または周波数の何れかとメモリセクションのシステムクロックとの可能な差を補償するのに利用されてもよい。記憶装置６６への格納のため、データがテンポラリストレージインタフェース装置６０からシフトされると、メモリセクションのシステムクロックは、好ましくは、データをシフトするのに用いられる。
【００６９】
セクションコントローラ５４は、メモリセクション３０における不具合を検出することが可能とされてもよい。例えば、セクションコントローラ５４は、通信回路インタフェース回路５７を介し通信チャネルインタフェース４２により利用されるプロトコルまたはハードウェアにおけるエラーを検出するようにしてもよい。さらに、セクションコントローラ５４は、例えば、ヘッダ／テストインタフェース６３の利用によりメモリインタフェース装置６４におけるエラーを検出するようにしてもよい。さらに、記憶装置６６が、例えば、電子誤り訂正回路（ＤＩＭＭなど）などの不具合を検出及び／または訂正するための回路を有する場合、記憶装置６６は、メモリ制御５５を介しセクションコントローラ５４に検出された不具合を通知するようにしてもよい。セクションコントローラ５４が不具合を検出すると、セクションコントローラ５４は、管理インタフェース５３を介し管理コンプレックス２６に不具合に関する情報（時間、コンポーネント、不具合のタイプなど）を送信するようにしてもよい。
【００７０】
セクションコントローラ５４はまた、外部システムがマイクロプロセッサ５１とのやりとりを通じてセクションコントローラ５４に関する情報を取得するのを可能にする外部システム（図示せず）に利用可能なインタフェースを有するようにしてもよい。このインタフェースは、例えば、直接的な診断観察のため、キーボード及びディスプレイをサポートするようにしてもよい。外部システムインタフェース（図示せず）はまた、例えば、直接的な診断観察のための類似システムまたはコンピュータとのインタフェースをサポートするものであってもよい。図示されない外部システムはまた、当該インタフェースを利用して、例えば、テストまたは関連する診断機能のサポートにおいてマイクロプロセッサ５１上の特殊なソフトウェアをインストールするようにしてもよい。
【００７１】
上記説明では、一例となるメモリセクションが提供された。本発明の範囲から逸脱することなく、メモリセクションを実現するための方法及びシステムが利用されてもよい。例えば、以下の説明は、ＰＣＩバス技術を用いたメモリセクションの他の実施例を提供する。
［スイッチ］
図６は、本発明による方法及びシステムに従うスイッチ２２の機能図を示す。図示されるように、スイッチ２２は、サーバ１２、スイッチ／メモリセクション通信インタフェース２０８、スイッチファブリック２０６及びスイッチコントローラ２０２とのインタフェースをとるためのスイッチ／サーバ通信インタフェースから構成される。スイッチ／サーバ通信インタフェース２０４とスイッチ／メモリセクション通信インタフェース２０８は、市場で入手可能なスイッチに見つけられる標準的なスイッチインタフェースであってもよく、メモリセクション及びサーバという用語は、スイッチ２２からの接続が好ましくは接続する装置を示すのに用いられる。スイッチファブリック２２は、ＩＰスイッチファブリック、ＦＤＤＩスイッチファブリック、ＡＴＭスイッチファブリック、イーサネットスイッチファブリック、ＯＣ−ｘタイプスイッチファブリックあるいはファイバチャネルスイッチファブリックなどの任意のタイプのスイッチファブリックであってもよい。従って、スイッチ２２は、市場で入手可能な任意のタイプのスイッチであってもよい。
【００７２】
本実施例では、ストレージハブ１０の管理コンプレックス２６は、スイッチコントローラ２０２を介しスイッチ２２に対する制御を行ってもよく、セクションコントローラを介しメモリセクション３０の通信チャネルインタフェース４６に対する制御を行ってもよい。例えば、上述のように、管理コンプレックス２６は、スイッチコントローラ２０２にスイッチファブリック２０６を介しトラフィックを切り替えるためのアルゴリズムを設けるようにしてもよい。さらに上述のように、管理コンプレックス２６は、それが実行するソフトウェアの新たなコピー、ハートビートを送信する通常期間（すなわち、スイッチを検証する信号が依然として通信可能である）、有効な通信ネットワークアドレスのリスト、アラームアクノリッジメント及びコマンドセットをスイッチに提供するなど、他の情報を提供するようにしてもよい。さらに上述のように、管理コンプレックス２６は、例えば、通信メッセージをコピーし、その内容を修正し、この新しいメッセージを処理する指示などを含む他の情報を提供するようにしてもよい。管理コンプレックス２６は、例えば、情報を複数のアドレスに配信する指示などを含む他の情報を提供するようにしてもよい。
【００７３】
図７は、提供される方法及びシステムによりメモリセクション３０の通信チャネルインタフェース４６及びスイッチ２２の管理の他の機能図を示す。本実施例では、スイッチコントローラ２０２とメモリセクションインタフェース２０８はスイッチ２２に設けられる必要はなく、ストレージハブ１０の管理コンプレックス２６がスイッチファブリック２０６とサーバインタフェース２０４に対する直接的な制御を行う。従って、本実施例では、メモリセクション３０の通信チャネルインタフェース４６は、スイッチファブリック２０６に直接接続される。
【００７４】
図６及び７の実施例に対する他の実施例では、セレクタ４４は設けられる必要はなく、すべてのメモリインタフェース装置６４がスイッチファブリック２０６に接続されてもよい。
【００７５】
図８は、提供される方法及びシステムによるストレージハブ１０において用いられる他の例によるスイッチ２２の図を示す。より詳細には、図８は、１以上のメモリセクション３０と１以上のサーバ１２を接続するスイッチ２２を示す。この例は、１つのメモリセクション３０に接続されるＭ個のサーバ１２−１，１２−２，．．．，１２−Ｍを示す。本例では、スイッチ２２のサーバインタフェース２０４は、Ｍ個のスイッチ／サーバ通信インタフェース（ＳＳＣＩ）２０４−１〜２０４−Ｍを有し、スイッチのメモリセクションインタフェース２０８は、Ｎ個のスイッチ／メモリセクション通信インタフェース（ＳＭＣＩ）２０８を有する。さらに、スイッチ２２のスイッチファブリック２０６は、１以上のスイッチングプレーン（ｓｗｉｔｃｈｉｎｇ  ｐｌａｎｅ）８０８を有する。
【００７６】
この例では、各サーバ１２はデバイスドライバを有し、メモリセクション３０は１以上の通信チャネルインタフェース（ＣＣＩ）４６−１〜４６−Ｎを有する。この例では、Ｐ本のパラレルラインは、各デバイスドライバ２８とスイッチ２２と、各ＣＣＩ４６とスイッチ２２とを接続する。この例では、各接続のライン数は等しいが、他の例では、それらは異なっているかもしれない。デバイスドライバ２８は、例えば、上述のデバイスドライバ２８であってもよいし、あるいはデバイスドライバ２８に内蔵されてもよい。
【００７７】
Ｍ個のサーバの何れかが、それのデバイスドライバ２８からスイッチ２２を介しメモリセクション３０にデータリクエストを生成及び転送するようにしてもよい。サーバ１２は、書き込みを所望するデータブロック、または読み出しを所望するストレージハブ１０のデータブロックを特定するデータブロック識別子を当該データリクエストに含むようにしてもよい。このとき、スイッチ２２の対応するＳＳＣＩ２０４は、このデータリクエストを受信し、それをスイッチコントローラ２０２に転送する。本例では、スイッチコントローラ２０２は、情報リクエストがデータリクエストに含まれるデータブロック識別子から送られるメモリセクション３０を決定する。
【００７８】
メモリセクション３０を決定するため、スイッチコントローラ２０２は、例えば、データブロック識別子とメモリセクションとの関係を規定するテーブルに問い合わせたり、アドレスを計算するためのアルゴリズムを利用したり、あるいは他の技術を利用したりしてもよい。
【００７９】
メモリセクションが決定されると、スイッチコントローラ２０２は、デバイスドライバから決定されたメモリセクション３０に対応するＳＭＣＩ２０８へのパラレルラインＰの各々に対し、各スイッチングプレーン８０８を介する送信経路を確立するようにしてもよい。このデータリクエストはまた、正しいメモリセクション３０にデータリクエストを送るとき、スイッチ２２により利用される新たなアドレスを有するようスイッチコントローラ２０２により変更されてもよい。その後、この変更されたデータリクエストは、スイッチングプレーン８０８を介しＳＭＣＩ２０８に送信される。Ｐ本のラインを介したこの送信は、同時に行われてもよい。
【００８０】
スイッチを介した経路が確立されている間、データはスイッチの別のストレージキュー（図示せず）またはスイッチコントローラ２０２のメモリ（図示せず）に配置されてもよい。データリクエストはまた、ストレージハブ１０の要求に従って、スイッチコントローラ２０２によりコピー及び変更されてもよい。例えば、前述のように、管理コンプレックス２６は、ストレージハブ１０または１以上のメモリセクションに書き込まれるすべてのデータをストレージハブ１０にバックアップするよう指示してもよい。このような例では、スイッチコントローラ２０２は、格納対象のデータを含むライトデータリクエストをコピーし、ＣＤＡ１６の要求に従ってこのリクエストを変更してもよい。このとき、スイッチコントローラ２０２は、ライトデータリクエストをＣＤＡ１６に送信するための経路を確立し、書き込みデータがバックアップされるように、このリクエストの変更されたコピーをＣＤＡ１６に送信するようにしてもよい。同様に、ライトリクエストを有する以降のデータブロックは、記憶装置３０に送信され、ＣＤＡ１６にコピー及び送信されるようにしてもよい。管理コンプレックス２６は、例えば、データリクエストの変更方法を判断するのにスイッチにより必要とされるソフトウェア及び任意の必要な情報をスイッチコントローラ２０２に提供し、複数の送信先に変更されたデータリクエストのコピーを提供し、複数の送信先にデータのコピーを提供するようにしてもよい。
【００８１】
メモリセクション３０がデータブロックなどの情報をサーバ１２に送信するとき、メモリセクション３０からのデータブロックが、当該データブロックを送信するメモリセクション３０のＣＣＩ４６に対応するＳＭＣＩ２０８を介しスイッチ２２に到着する。このデータブロックには、メモリセクション３０によりデータに挿入される識別子が含まれてもよい。メモリセクション３０のメモリインタフェース装置は、例えば後述されるように、このアドレスを挿入してもよい。さらに、このアドレスは、例えば、メモリセクション３０から読み出されたデータブロックを特定するデータブロック識別子、またはデータが送信されるポート若しくは装置であってもよい。この例では、各接続におけるラインの本数は異なるものであってもよいが、Ｐ本のパラレルなラインが各ＣＣＩ４６とスイッチ２２を接続する。さらに、Ｐは１以上の任意の整数であってもよい。
【００８２】
その後、ＳＭＣＩ２０８は、データブロックをスイッチコントローラ２０２に転送し、スイッチコントローラ２０２により送信データ内の識別子（例えば、データブロック識別子、宛先アドレスなど）から当該データブロックが送信されるサーバ１２が決定される。その後、スイッチコントローラ２０２は、この宛先アドレスまたはデータブロック識別子により、ＣＣＩ４６からのＰ本のラインのそれぞれに対し、スイッチ２２を介し当該データが送信されるＳＳＣＩ２０４への経路を確立する。その後、このスイッチ２２は、スイッチングプレーン８０８を介しＳＳＣＩ２０４にデータブロックを転送する。Ｐ本のラインを介したデータブロックの送信は、例えば、同時に行われてもよい。
【００８３】
図９は、提供される方法及びシステムによる１以上のメモリセクション３０に接続される他のスイッチ２２を示す。この例では、多重化（複数のデータストリームを各々独自の通信経路上でより少数のデータストリームに合成すること）及び逆多重化（データストリームセットを各々独自の通信経路上でより多数のデータストリームに分割すること）が、メモリセクション３０とスイッチ２２の両方で利用される。この例では、Ｐ本のパラレルラインは、各接続におけるライン数は異なるかもしれないが、各メモリセクションのＣＣＩ４６とスイッチ２２を接続する。
【００８４】
この例では、メモリセクション３０−１において、Ｑ本のラインがメモリインタフェース装置６４−１から発し、Ｒ本のラインがメモリインタフェース装置６４−２から発する。このとき、対応する多重化装置（９０２−１及び９０２−２）は、各メモリインタフェース装置（６４−１及び６４−２）からのラインをＰ本のストリームに多重化する。ここで、ＱとＲは正の整数Ｐより大きな正の整数である。
【００８５】
メモリセクション３０−２では、Ｊ本のラインがメモリインタフェース装置６４−４から発する。ここで、ＪはＰより小さい正の整数である。このとき、逆多重化装置９０４は、これらＪ本のラインをＰ本ラインに逆多重化する。
【００８６】
しかしながら、Ｐ本のパラレルライン（ストリーム）はまた、スイッチング経路の何れかにおいて多重化または逆多重化されてもよい。例えば図示されるように、ＳＭＣＩ２０８−１の後で、多重化装置９０６によりＰ本のラインはＴ本のラインに多重化される。その後、これらＴ本のラインは、スイッチングプレーン８０８を介し逆多重化装置９０８にわたされ、Ｔ本のラインはＰ本のラインに逆多重化され、Ｐ本のラインを介しＳＳＣＩ２０４にわたされる。
【００８７】
さらに、シフトアレイを有するメモリインタフェース装置を用いた実施例では、１以上のパイプラインシフトレジスタ（図示せず）が、メモリインタフェース装置及びシフトレジスタアレイのクロック周波数の適切な倍数（多重化機能）または分数（逆多重化機能）に送信クロック周波数を維持するため、送信及びスイッチング経路のいくつかのポイントに挿入されてもよい。例えば、シフトレジスタパイプラインが、ＣＣＩ４６に備えられてもよい。
【００８８】
図１０は、提供される方法及びシステムによる一例となるパイプラインシフトレジスタを示す。本例では、このパイプラインシフトレジスタは、ＣＣＩ４６から発するＰ本のラインのそれぞれがラッチシフトレジスタ１００２−１，１００２−２，．．．，１００２−Ｐに設けられるように、ＣＣＩ４６の出力に挿入されている。図示されるように、Ｐ本のラインのそれぞれは、ラッチシフトレジスタのＳ入力に設けられ、その反転がラッチシフトレジスタのＲ入力に接続される。ラッチシフトレジスタはさらに、ストレージハブ１０のマスタクロック回路により生成されるマスタクロック信号を受信する。このマスタクロック信号は、メモリセクションなどのストレージハブ１０の他のコンポーネントにより利用されてもよい。マスタクロック信号は、例えば、管理コンプレックス２６により生成されてもよく、あるいは別の回路が利用されてもよい。
【００８９】
その後、ラッチシフトレジスタ１００２からの出力Ｑは、第２ラッチレジスタ１００４のＳ入力に供給され、出力の反転
【００９０】
［外１］
2010250813.tif 000003
は、ラッチシフトレジスタ１００４のＲ入力に供給される。第２ラッチシフトレジスタ１００４は、スレーブクロック信号を受信する。このスレーブクロック信号は、マスタクロック信号を提供するものと同じ回路により生成されてもよく、スレーブクロック信号は、例えば、マスタクロック信号を反転したものであってもよい。第２ラッチシフトレジスタ１００４−１，１００４−２，．．．，１００４−Ｐからの出力Ｑは、メモリセクション３０から発するＰ本のラインに信号を与える。パイプラインシフトレジスタの上記説明は、ラッチシフトレジスタを参照して行われたが、ダイナミックシフトレジスタなどの他のタイプのシフトレジスタが利用されてもよい。さらに、パイプラインシフトレジスタの上記説明は、ＣＣＩ４６の出力にパイプラインシフトレジスタを設置したことを参照して行われたが、パイプラインシフトレジスタは、スイッチングプレーン８０８の間、または任意の通信インタフェースなどのストレージハブ１０の何れかに設けられてもよい。
［メモリインタフェース装置］
図１１は、提供される方法及びシステムによるメモリインタフェース装置６４の一実施例のより詳細なブロック図を有する。図１１に示されるように、メモリインタフェース装置６４−１と６４−２はそれぞれ、ライトシフトレジスタアレイ７２とリードシフトレジスタアレイ７４から構成されてもよい。リード及びライトシフトレジスタアレイは何れも、直列に相互接続された複数のシフトレジスタ７６を有することが可能である。シフトレジスタアレイ（７２及び７４）の各シフトレジスタ７６は、シフトレジスタ７６と記憶装置６６の対応するＩ／Ｏピンを接続するコネクタ回路７７に接続される。
【００９１】
ここで用いられる「シフトレジスタ」という用語は、制御信号またはクロック信号などのあるイベントの発生により、信号を入出力において受信するのを可能にする１以上の選択可能な入力を有する任意のレジスタ、装置、ステージなどを意味する。シフトレジスタという用語は単一のレジスタステージだけでなく、このようなレジスタの系列を場合によっては意味するが、ここで用いられるシフトレジスタという用語は単一のステージを意味する。シフトレジスタの系列は、ここではシフトレジスタチェーンまたはシフトレジスタストリングと呼ばれる。このレジスタ系列セットはまた、単一のシフトレジスタチェーンまたはパラレルシフトレジスタチェーンであるかもしれないシフトレジスタアレイまたは「（シフト）レジスタシリーズアレイ」と呼ばれることもある。例えば、シフトレジスタは、ダイナミックまたはラッチング、シングルクロックまたはマスタ／スレーブクロック、サンプリングまたはエッジトリガー、データ（Ｄ）、ＲＳまたはＪＫ、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）のステージ、またはクロック信号に基づき入力を出力にシフトさせる他の任意のタイプの装置など任意のタイプのシフトレジスタであってもよい。シフトレジスタアレイ／チェーンは、本発明の範囲から逸脱することなく、任意数のシフトレジスタを有するようにしてもよい。
【００９２】
本実施例では、メモリセクション３０のすべてのライトシフトレジスタアレイ７２は、より長いライトシフトレジスタアレイチェーンを構成するよう相互に接続される。図示されるように、メモリインタフェース装置６４−１のシフトレジスタアレイ７２は、メモリインタフェース装置６４−２の右上のＩ／Ｏピンを介し、それの左上のＩ／Ｏピンを介しメモリインタフェース装置６４−２のライトシフトレジスタアレイ７２に接続される。メモリセクションのすべてのライトシフトレジスタアレイ７２が単一のライトシフトレジスタアレイチェーンを構成するように、メモリインタフェース装置６４−２のライトシフトレジスタアレイ７２は、メモリインタフェース装置６４−３のライトシフトレジスタアレイ７２に接続され、以下同様に接続される。本例についての説明を簡単化するため、各メモリインタフェース装置のシフトレジスタアレイは、シフトレジスタアレイと呼ばれ、より長いアレイチェーンを構成するためこれらシフトレジスタアレイを相互接続したものは、シフトレジスタチェーンと呼ばれる。
【００９３】
さらに本実施例では、メモリインタフェース装置６４−１の右下のＩ／Ｏピンは、メモリインタフェース装置６４−２の左下のＩ／Ｏピンに接続され、それらのリードシフトレジスタアレイ７４によりチェーンが構成される。図５を参照するに、本例では、メモリインタフェース装置６４−３と６４−４は同様に接続され、以下同様に接続される。これらリードシフトレジスタアレイ７４のペアは、リードチェーンと呼ばれるであろう。
【００９４】
各リードチェーンの第１メモリインタフェース装置はまた、リードシフトレジスタアレイ７４に接続されるリードセレクタ７０を有する。このリードセレクタ７０は、識別子（宛先アドレス、データブロック識別子など）及び／または他のヘッダ情報をリードデータに挿入するのに利用される。この識別子は、スイッチ２２がデータをそれの適切な送信先に切り替えるのに用いることが好ましい識別子である。この識別子は、例えば、データを送信するための識別子（データブロック識別子など）であってもよいし、あるいはデータ送信先のアドレスを特定する宛先アドレスであってもよい。例えば、この送信先がインターネットに接続されたコンピュータである場合、宛先アドレスは当該コンピュータのＩＰアドレスとすることが可能である。あるいは、宛先アドレスは、データを送信先サーバにルーティングするときに用いられるスイッチ２２の内部アドレスとすることも可能であり、この場合、サーバ１２はデータが伝送されるネットワークがデータを適切な送信先にルーティングするのに用いる宛先アドレスを読み出し、置換する。
【００９５】
メモリインタフェース装置６４はまた、セクションコントローラ５４のタイミング回路６１から制御信号とタイミング信号を受信するようにしてもよい。これらの制御及びタイミングパルスは、各自のパルスを用いて記憶装置６６から読み出され、あるいはそこに書き込まれるデータが、メモリインタフェース装置のシフトレジスタ７６がシフトのみが実行されているかのようにそれらのシフトを維持するようにして読み書きされるようにタイミング処理される。シフトレジスタを内蔵したメモリインタフェース装置のさらなる説明は、参照することによりその内容の全体がここに含まれる、上述されたＷｉｌｌｉａｍ  Ｔ．ＬｙｎｃｈとＤａｖｉｄ  Ｊ．Ｈｅｒｂｉｓｏｎによる米国特許出願第１０／２８４，１９８号「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」を参照されたい。さらに、メモリインタフェース装置６４により送信されるデータは、例えば、共通モード、差分モード、あるいはシステム設計者により適切と考えられる他の何れかの方法により送信されてもよい。
［一例となる書き込み動作］
図１２は、提供される方法及びシステムによる図１、６及び１１を参照した図５のメモリセクション３０の一例となる書き込み動作のフローチャートを示す。このフローチャートは、書き込み動作の一例を示したものであるが、本発明の範囲から逸脱することなく書き込み動作を実現するための他の方法が利用されてもよい。本例では、メモリセクション３０の記憶装置６６はデータブロックに分割され、各データブロックはデータブロック識別子により識別可能である。データブロック及び記憶装置の分割のより詳細な説明が、以降において与えられる。
【００９６】
ライトリクエストは、例えば、ネットワークなどを介しサーバ１２に接続されるユーザから発行されるかもしれない。本例では、ユーザがストレージハブ１０により格納されるデータのブロック（すなわち、データブロック）を送信すると仮定される。その後、サーバのデバイスドライバ２８により、格納されるデータブロックのデータブロック識別子が決定され、このデータブロック識別子（ＤＢＩ）を含むリクエストがストレージハブ１０内のスイッチ２２に送信されてもよい（ステップ１２０２）。デバイスドライバ２８は、例えば、標準的な方法を用いてデータブロック識別子を決定してもよく、例えば、サーバ１２はデータブロック識別子を決定するのに利用されるＯｒａｃｌｅや類似のアプリケーションを実行するかもしれない。
【００９７】
その後、スイッチ２２は、データブロック識別子（ＤＢＩ）を用いて、例えば、スイッチ２２がデータリクエストをメモリセクションにルーティングするのに用いるメモリセクションのアドレスをＤＢＩに基づき決定するなどにより、データブロックを格納するべきメモリセクション３０にデータリクエストを送信する（ステップ１２０４）。例えば、データリクエストがスイッチ２２のＳＳＣＩ２０４に到達すると、ＳＳＣＩは、例えば、データリクエストをスイッチコントローラ２０２に送り、その後、テーブルを用いてＤＢＩに対応するアドレスを検索したり、アルゴリズムを利用してＤＢＩからアドレスを計算したり、あるいは他の方法を利用するようにしてもよい。
【００９８】
その後、スイッチコントローラ２０２は、ＳＳＣＩ２０４からスイッチファブリック２０６を介しデータが格納されるメモリセクションに対応するＳＭＣＩ２０８までの経路を確立するようにしてもよい（ステップ１２０６）。スイッチ２２とメモリセクション３０との間にアイドル状態の通信チャネルが存在しない場合、あるいはコンフリクトが存在する場合、スイッチは混雑メッセージを要求元のサーバ１２に送信し、その後、コンフリクトが解消されるまで、当該メッセージはキュー処理されるようにしてもよい。図７に示されるようなスイッチ２２の一実施例では、管理コンプレックス２６は、スイッチコントローラ２０２により実行されるような上述の機能を実行するようにしてもよい。
【００９９】
次に、スイッチ２２はデータリクエストをメモリセクション３０のＣＣＩ４６に転送する（ステップ１２０８）。その後、ＣＣＩは、このリクエストをセクションコントローラ５４に送信してもよい（ステップ１２１０）。セクションコントローラ５４は、データリクエストをライトリクエストと識別し、それの記憶装置の１つにデータを格納するスペースがあるか判断する（ステップ１２１２）。例えば、セクションコントローラ５４は、データリクエストに含まれる情報、データリクエストのフォーマットまたはサイズ、あるいは他の方法により、データリクエストをライトリクエストと識別するかもしれない。記憶装置６６に利用可能なスペースがない場合、セクションコントローラ５４は、ＣＣＩ４６とスイッチ２２を介し要求元のサーバ１２にネガティブアクノリッジメントＮＡＫメッセージを送信し（ステップ１２１４）、要求元サーバ１２は、ＮＡＫの受信後（ステップ１２１６）、同じまたは異なるＤＢＩを用いてストレージハブ１０にデータを書き換えたり（ステップ１２１８）、他の装置（図示せず）に書き込みを試みたり、あるいはアプリケーションに通知するようにしてもよい。
【０１００】
スペースが利用可能である場合、セクションコントローラ５４は、格納対象のデータを送信してもよいというメッセージをデバイスドライバ２８に送信する（ステップ１２２０）。これに応答して、デバイスドライバ２８は、スイッチ２２を介しメモリセクション３０の通信インタフェース（ＣＣＩ）４６にデータを送信する（ステップ１２２２）。さらに、管理コンプレックス２６はまた、スイッチ２２にライトデータをＣＤＡ１６に送信するよう指示するようにしてもよい。例えば、管理コンプレックス２６は、実行時に、すべてのライトデータを当該データを格納するメモリセクション３０とＣＤＡ１６の両方に送信させるアルゴリズムをスイッチコントローラ２０６に設けるようにしてもよい。ＣＤＡ１６により格納されたデータは、メモリセクションが不具合を生じたとき、異なる動作を行うメモリセクションにロードされるバックアップとして処理されるであろう。
【０１０１】
その後、セレクタ４４は、このデータをテンポラリストアメモリインタフェース装置６０に送信する。セクションコントローラ５４のマイクロプロセッサ５１は、データが格納される記憶装置６６の状態をチェックし、記憶装置６６が利用可能か、あるいはビジー状態であるか判断する（ステップ１２２４）。例えば、マイクロプロセッサ５２は、メモリセクション３０の各記憶装置６６に対し、マイクロプロセッサ５１が記憶装置６６の利用性を判断するため問い合わせる状態コードをそれのＲＡＭ５２に格納するようにしてもよい。記憶装置６６が利用可能である場合、マイクロプロセッサ５１は、記憶装置制御回路５５を介し記憶装置６６にデータを格納するための準備を行うメッセージを送信する（ステップ１２３２）。しかしながら、記憶装置６６がビジー状態である場合、データテンポラリストレージメモリインタフェース装置６０は、データをテンポラリメモリストレージ装置５８に格納し（ステップ１２２６）、ライトリクエストがマイクロプロセッサのＲＡＭ５２のキューに配置される（ステップ１２２８）。
【０１０２】
記憶装置６６が利用可能になると、記憶装置６６はメモリセクション制御回路５５を介しセクションコントローラ５４のマクロプロセッサ５１に通知する（ステップ１２３０）。これは例えば、記憶装置６６が記憶装置制御回路５５を介し割込み信号をマイクロプロセッサ５１に送信することにより実現されてもよい。その後、マイクロプロセッサ５１は、データの格納準備を行わせるメッセージを記憶装置制御回路５５を介し記憶装置６６に送信する（ステップ１２３２）。記憶装置が準備されると、テンポラリストレージメモリインタフェース装置６０は、当該データをＴ−セレクタ６２にわたし、Ｔ−セレクタ６２は、これがライト動作であるため、データをメモリインタフェース装置６０にわたす。例えば、ステップ１２２２において記憶装置６６が利用可能である場合、データはテンポラリメモリストレージ装置５８に格納される必要はない。その後、データは第１メモリインタフェース装置６４−１のシフトレジスタアレイ７６にクロック処理され、当該データが書き込まれる記憶装置６６に対応するメモリインタフェース装置６４にロードされるまで、シフトレジスタアレイ７６のライトチェーンを介しクロック処理される（ステップ１２３４）。その後、このデータはメモリセクション３０のセクションコントローラ５４により供給されるアドレスにおいて記憶装置に書き込まれる（セクション１２３６）。
【０１０３】
シフトレジスタアレイと記憶装置との間の接続及びデータ書き込み方法のより詳細な説明は、上述した本出願と同日に出願されたＷｉｌｌｉａｍ  Ｔ．ＬｙｎｃｈとＤａｖｉｄ  Ｊ．Ｈｅｒｂｉｓｏｎによる米国特許出願第１０／２８４，１９８号「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」に与えられている。
【０１０４】
ライト動作が完了すると、記憶装置６６は、記憶装置インタフェース５５を介しセクションコントローラ５４のマクロプロセッサ５１に通知する（ステップ１２３８）。その後、セクションコントローラ５４は、要求元サーバ１２のデバイスドライバ２８にアクノリッジメントを送信するようにしてもよい（ステップ１２４０）。
【０１０５】
以下において、ステップ１２３６においてデータを記憶装置６６に書き込むのに利用可能な技術のより詳細な説明が与えられる。この技術は、メモリラッチングと呼ばれる。メモリラッチは、例えば、共通のリセットラインを有するエッジトリガーまたはフリップフロップ回路であってもよい。すなわち、記憶装置制御回路５５は、例えば、当該技術を実行するための他の適当な回路と共に、メモリラッチの１以上を有するものであってもよい。
【０１０６】
セクションコントローラ５４は、本例ではＤＩＭＭと仮定される記憶装置６６の管理のため、内部メモリ５２のメモリ位置を確保するようにしてもよい。これらのメモリ位置は、セクションコントローラ５４の内部メモリ５２に何れかに設けられてもよい。
【０１０７】
記憶装置制御回路５５は、例えば、マイクロプロセッサ５１とメモリ５２との間で送信される情報を読み出し、これらのメモリ位置にアドレス指定された情報を参照することにより、割当てられたメモリ位置に格納されているデータを読み出すようにしてもよい。これらのメモリ位置は、ＤＩＭＭ６６の他の制御情報と共に、データ伝送のためのスタートアドレスと伝送されるビット数を格納するようにしてもよい。この制御情報には、例えば、リード動作であるかライト動作であるか、ＤＩＭＭ６６が処理を介しまたは終了すべきかなどに関する情報が含まれてもよい。上記説明ではデータをメモリセクションの記憶装置に書き込む１つの技術が説明されたが、本発明の範囲から逸脱することなく他の多数の方法が可能であるということは当業者に認識されるであろう。
［一例となる読み出し動作］
図１３は、提供される方法及びシステムによる図１、６及び１１を参照することによる図５のメモリセクションの一例となる読み出し動作のフローチャートを示す。このフローチャートは、リード動作の一例を示しているが、本発明の範囲から逸脱することなく、リード動作を実現する他の方法が利用されてもよい。本例では、メモリセクション３０の記憶装置６６はデータブロックに分割され、各データブロックはデータブロック識別子により識別可能である。データブロックと記憶装置の分割のより詳細な説明は、以降において与えられる。リードリクエストがネットワークを介しサーバ１２に接続されるユーザから与えられる。このとき、サーバのデバイスドライバ２８は、データブロック識別子（ＤＢＩ）を含むリクエストをストレージハブ１０のスイッチ２２に送信する（ステップ１３０２）。デバイスドライバ２８は、例えば、標準的な方法によりデータブロック識別子を決定するようにしてもよい。例えば、サーバ１２は、データブロック識別子の決定に利用可能なＯｒａｃｌｅや同様のタイプのアプリケーションであってもよい。
【０１０８】
その後、スイッチ２２は、データブロック識別子（ＤＢＩ）を用いて、例えばこのＤＢＩに基づき、データリクエストをメモリセクション３０にルーティングするのにスイッチが利用するメモリセクションのアドレスを決定することにより、データブロックを格納するメモリセクション３０にデータリクエストを送信するようにしてもよい（ステップ１３０４）。この後、スイッチコントローラ２０２は、ＳＳＣＩ２０４からスイッチファブリック２０６を介しデータが格納されるメモリセクションに対応するＳＭＣＩ２０８までの経路を確立するようにしてもよい（ステップ１３０６）。スイッチ２２とメモリセクション３０との間にアイドル状態の通信チャネルが存在しないとき、あるいはコンフリクトが存在するとき、スイッチは要求元サーバ１２に混雑メッセージを送信し、コンフリクトが解消されるまでメッセージをキュー処理するようにしてもよい。図７に示されるようなスイッチ２２の一実施例では、管理コンプレックス２６は、上述されたスイッチコントローラ２０２により実行される機能を実行するようにしてもよい。次に、スイッチ２２はデータリクエストをメモリセクション３０のＣＣＩ４６に転送する（ステップ１３０８）。その後、ＣＣＩ４６は、当該リクエストをセクションコントローラ５４に送信するようにしてもよい（ステップ１３１０）。セクションコントローラ５４は、このデータリクエストをリードリクエストとして識別し、それの記憶装置の１つが特定されたデータブロックを格納しているか判断する（ステップ１３１２）。例えば、セクションコントローラ５４は、リクエスト自体に含まれる情報により、データリクエストのフォーマットまたはサイズにより、あるいは他の方法によりリクエストをリードリクエストと特定するようにしてもよい。
【０１０９】
要求されたデータブロックがメモリセクション３０に格納されていない場合、セクションコントローラ５４は、ＣＣＩ４６とスイッチ２２を介し要求元サーバ１２にネガティブアクノリッジメント（ＮＡＫ）メッセージを送信する（ステップ１３１４）。ＮＡＫの受信後（ステップ１３１６）、要求元サーバ１２はメモリセクションから当該データブロックを再読み出ししてもよいし（ステップ１３１８）、他の装置（図示せず）から読み出しを行ってもよいし、あるいはアプリケーションに通知するようにしてもよい。セクションコントローラ５４により当該メモリセクションが要求されたデータブロックを格納している場合、セクションコントローラ５４のマイクロプロセッサ５１は、どの記憶装置６６がデータを格納しているか判断し、当該記憶装置６６がビジーまたは利用可能であるか判断するため、それの状態をチェックする（ステップ１３２０）。例えば上述のように、マイクロプロセッサ５２は、記憶装置６６の利用性を判断するため、マイクロプロセッサ５１が問い合わせ可能なメモリセクション３０の各記憶装置６６に対する状態コードをそれの内部メモリ５２に格納するようにしてもよい。
【０１１０】
記憶装置が利用可能である場合、マイクロプロセッサ５１は、例えば、利用可能な状態からビジー状態へのセクションコントローラの内部メモリ５２の状態を変更することにより、記憶装置を確保する（ステップ１３２６）。その後、セクションコントローラは、アクノリッジメント（ＡＣＫ）を要求元サーバ１２に送信するようにしてもよい（ステップ１３２８）。デバイスドライバ２８がリードデータブロックの読み出しを依然として所望している場合（ステップ１３３０）、スイッチ２２を介しメモリセクション３０にリード確認を送信する（ステップ１３３２）。そうでない場合、デバイスドライバ２８は、リードリクエストを放棄する（ステップ１３３４）。
【０１１１】
リード確認の受信に応答して、セクションコントローラ５４は、データが読み出される記憶装置６６に対応するリードチェーンの第１メモリインタフェース装置６４−１のリードセレクタ７０に識別子を与える（ステップ１３３２）。上述のように、この識別子は、例えば、当該データをそれの適切な送信先に切り替えるのにスイッチ２２を用いる識別子であってもよい。この識別子は、例えば、送信されるデータの識別子（例えば、データブロック識別子など）や、データを送信すべきアドレスを特定する宛先アドレスであってもよい。例えば、送信先がインターネットに接続されるコンピュータである場合、宛先アドレスはこのコンピュータのＩＰアドレスとすることが可能である。あるいは、宛先アドレスは、単にスイッチ２２がデータをそれの送信先サーバをルーティングするのに利用する内部アドレスとすることも可能である。この場合、サーバ１２は、データが伝送されるネットワークがデータを適切な送信先にルーティングするのに利用する宛先アドレスを読み出し、置換する。
【０１１２】
その後、この識別子（宛先アドレスやデータブロック識別子など）は、それが記憶装置６６に対応するメモリインタフェース装置６４に到達するまで、メモリインタフェース装置６４のチェーンシフトレジスタアレイ７４を介しクロック処理される。すなわち、記憶装置６６は、データリクエストのデータブロック識別子に対応するデータブロックを含む（ステップ１３３６）。次に、セクションコントローラ５４は、このデータブロック識別子を利用して、読み出し対象のデータが格納されている格納場所に対応する記憶装置６６のアドレスを決定するようにしてもよい。
【０１１３】
その後、セクションコントローラ５４は、これらのアドレスを他の適切な制御信号と共に記憶装置６６に提供する。これに応答して、記憶装置は当該データを読み出し、識別子（宛先アドレスやデータブロック識別子など）がデータの先頭に添付されるように、メモリインタフェース装置６４のリードシフトレジスタチェーン７４にロードされる（ステップ１３３８）。これらアドレスと制御信号は、上述のメモリラッチング技術などを利用して、記憶装置６６に提供されてもよい。
【０１１４】
ステップ１０において記憶装置６６がビジー状態であった場合、リードリクエストがマイクロプロセッサ５１の内部メモリ５２にキュー処理されてもよい（ステップ１３２２）。記憶装置が利用可能になると、それは割込み信号をセクションコントローラ５４に送信し（ステップ１３２４）、その後ステップ１３２６において、リードリクエストを実行する。
【０１１５】
データがシフトレジスタチェーンからクロックアウトされ、セレクタ４４に送信されると（ステップ１３４０）、セクションコントローラ５４の制御の下、セレクタ４４はデータを通信チャネルインタフェース４６の適切なチャネルに接続する。その後、このデータは、通信インタフェース２０８、スイッチファブリック２０６及び通信インタフェース２０４を介しサーバ１２にわたされる（ステップ１３２４）。
【０１１６】
さらに例えば、データはチェーンのすべての記憶装置から同時に読み出され、シフトレジスタアレイのリードチェーンに同時にロードされるようにしてもよい。このような状況において、識別子（宛先アドレスやデータブロック識別子など）は、例えば、シフトレジスタバスチェーンの先頭に挿入されてもよい。
［テスト動作］
図５の実施例に対するテスト動作が説明される。ある例では、既知のデータを用いてシステムをテストすることが望ましいかもしれない。システムをテストするとき、テストデータと制御信号が、Ｔ−セレクタがテストデータをメモリインタフェース装置６４に送信し、テストデータがシステムを介しわたされるように、セクションコントローラ５４からＴ−セレクタ６２に送信される。メモリインタフェース装置６４との読み書き後のテストデータが、セレクタ４４に送信され、セレクタ４４はテスト回路５９によりテストデータをテスト回路５９に送信するよう指示されるようにしてもよい。この後、テスト回路５９は、パリティチェック及び／またはビットレベル比較などの誤り検出及び訂正機能を用いてデータをチェックするようにしてもよい。当該データが適切な場合、何れのアクションも必要でない。当該データが適切でない場合、テストデータは再送されるようにしてもよい。その後、データが適切な場合、アクションは必要とされない。適切でない場合、セクションコントローラ５４は、不具合が生じたことを管理コンプレックス２６に通知し、実行されるソフトウェアに備えられる誤り回復機能によりこの不具合の隔離を開始するようにしてもよい。同時に、管理コンプレックス２６は、管理コンプレックス２６に関するセクションで上述されたように、故障管理処理を実行するようにしてもよい。
【０１１７】
さらに、ＣＰＵ５１は、ヘッダ／テストインタフェース６３を介しメモリインタフェース装置６４にテストデータを提供するようにしてもよい。例えば、このデータは、宛先アドレス／データブロック識別子及び他のデータと同様にして、メモリインタフェース装置６４のシフトレジスタアレイの１以上に送信されてもよい。このデータの送信は、任意の形式のデータがストレージハブ１０を介し処理及びルーティングされるのと同様にして、ストレージハブ１０を介し処理することが可能である。このようなテストデータは、すべてのシフトレジスタアレイ、すべての制御及びインタフェース、サーバ送信先の適切な識別情報、スループット時間、パラレルなデータ経路の同期チェックなどの処理のテストを可能にする。所望の場合には、実際のデータ送信前に、任意の所望のハンドシェイクルーチンに対し、このような経路が利用されてもよい。
［ストレージハブの並列化及びスケーラビリティ］
ストレージハブ１０は、階層的並列化を示すものであってもよい。ここで用いられる「階層的並列化」という用語は、メモリセクションの並列化、メモリセクションとスイッチファブリックとの間の並列化、及びサーバとのスイッチファブリックの接続を介したすべてのメモリセクションの並列化を意味する。
【０１１８】
本例では、要求されたデータが異なる記憶装置６６にある限り、メモリセクション３０はＮ個の同時的な読み出しと１つの書き込みをサポートするようにしてもよい。ただし、Ｎはメモリセクション３０に利用可能な通信チャネル接続数であり、好ましくは、記憶装置６６の個数を超えない。例えば図５に示されるように、通信チャネルインタフェース４６は、情報を送受信するための４つの通信チャネル接続を有する。スイッチ２２は、好ましくは、実行可能な同時のリードリクエストとライトリクエストを処理することが可能である。メモリセクション３０のセクションコントローラ５４は、好ましくは、記憶装置６６に対するデータの読み書きを管理すると共に、コンフリクトも管理する。メモリセクション３０のセクションコントローラ５４は、実行されるソフトウェアに備えられる機能を介しコンフリクトを管理する。例えば、セクションコントローラ５４は、ライトリクエストがリードリクエストより優先され、優先度の低いリクエストはキュー処理するよう指示する。例えば上述のように、ライトリクエストのデータは、テンポラリストレージ装置５８にキュー処理され、ライト及びリードリクエストは、セクションコントローラ５４の内部メモリ５２にキュー処理されてもよい。管理コンプレックス２６は、セクションコントローラ５４に先着先処理アルゴリズムなどの他の方法を用いてコンフリクトを解消するよう指示してもよい。
【０１１９】
本例では、メモリセクション３０の並列化はさらに、メモリセクション３０の間の並列化により強化される。すなわち、任意の時点において、メモリセクション３０の個数が少なくともストレージハブ１０からのサーバ接続の個数Ｓと同程度多い限り、Ｓ個と同数のメモリセクションがアクセスされるようにしてもよい。ストレージハブ１０がメモリセクションより多くのサーバ接続を有するとき、本例では、同時の処理数がメモリセクションの個数と等しくなる。
【０１２０】
さらに本例では、ストレージハブ１０は、スケーラブルであってもよい。より詳細には、ストレージハブ１０から容量の増加が求められる場合、この増やされた容量は、例えば、追加のメモリセクション３０とそれらを収容する筺体を追加し、バックアップ電力、より大きな容量及び／または追加スイッチ２２を設け、及び／またはストレージハブ１０との接続の接続数及び／または容量を増やすことにより処理されてもよい。さらに、ストレージハブ１０の容量が増やされると、必要に応じて、管理コンプレックス２６がストレージハブのメモリセクション３０の各状態を監視するのに十分な容量を有することを保証するため、管理コンプレックスプロセッサ（３２及び３４）の容量及び／または個数が増やされてもよい。
【０１２１】
さらに本例では、メモリセクション３０はまたスケーラブルであってもよい。例えば、メモリセクション３０の容量の増大は、例えば、追加の記憶装置６６、メモリインタフェース装置６４及び／または通信チャネルインタフェースをメモリセクションに追加することにより、取得されてもよい。好ましくは、各メモリセクションのセクションコントローラ５４は、それのメモリセクション３０に備えられる各データブロックの位置の「マップ」を保持するための十分大きなレジデントメモリを有する。市場で入手可能なマイクロプロセッサが、このマップを格納するためセクションコントローラにより利用されてもよい。
【０１２２】
ストレージハブが各々少数の記憶装置のみを有する１つのみ、あるいは少数のメモリセクションを有するスケーラブルな構成が最初に配備されてもよい。そのとき、ストレージハブの容量を増やすよう求められると、例えば、追加のメモリセクション及び／またはより大きな容量のメモリセクションを収容するための筺体及びバックアップ電力を追加し、既存の１以上のメモリセクションの容量を増やし、制御プロセッサ３４または管理プロセッサ３４の追加により管理コンプレックス２６の容量を増やし、必要に応じて、さらなるポート及び／またはスイッチコントローラの追加によりスイッチ２２の個数及び／または容量を増やすことにより、増やされた容量は管理されてもよい。これにより、ストレージハブの容量が増やされると、ユーザにより確認されるパフォーマンスは、好ましくは、システムが増やされても一様なままであり、ランダムなデータリクエストを生成するアプリケーションによるユーザの予想される応答時間は、好ましくは、システムが拡張されても一様なままとすることができる。
［分割］
図１４は、提供される方法及びシステムによるＮ個の記憶装置６６の論理図を示す。上述のように、記憶装置６６はＢビットの格納が可能なソリッドステート記憶装置であってもよく、各記憶装置が格納可能なビット数は異なるものであってもよい。一例では、管理コンプレックス２６は、メモリセクション３０の記憶装置６６を各々がブロックのビット数に等しいブロックサイズの１以上のデータブロックを含むいくつかのパーティションに再構成するようセクションコントローラ５４に指示するコマンドをメモリセクション３０のセクションコントローラ５４に送信するようにしてもよい。異なるサイズのデータブロック及びデータブロックパーティションを使用することにより、ストレージハブは同一のストレージハブに格納されるデータを有する異なるアプリケーションに自らのストレージ構造を適合させることが可能となる。例えば、常時テキストや画像を格納しているオンラインカタログなどのアプリケーションは、好ましくは、テキストのみを格納する顧客予約システムなどのアプリケーションより大きなブロックサイズを選好すべきである。これらのパーティションやブロックサイズは管理コンプレックスからのコマンドにより任意に再構成することが可能であるため、新たなアプリケーションの新しいデータは、その動作を停止する必要なく、あるいは変更されていない他のメモリセクションのデータに影響を与えることなく、ストレージハブにロードすることが可能である。
【０１２３】
図１４に示されるように、記憶装置６６−１は、第１パーティションが８つのブロックを有し、第２パーティションが２つのブロックを有する２つのパーティションを備える。本例では、第１パーティションのデータブロックのブロックサイズは、第２パーティションのデータブロックより小さい。対照的に、記憶装置６６−２は、各データブロックが等しいサイズを有する４つのブロックの４つの同一のパーティションを有する。さらに本例では、管理コンプレックス２６は、各パーティションのデータブロックサイズを動的に調整し、これらのパーティションを変更し、あるいはパーティションの追加または削除を行うようにしてもよい。例えば、任意の時点において、管理コンプレックス２６は、現在のパーティションが以降のパーティションに影響を与えないように記憶装置６６を再構成するようメモリセクション３０のセクションコントローラ５４に指示するようにしてもよい。
［他のメモリインタフェース装置］
図１５は、提供される方法及びシステムによるメモリインタフェース装置が記憶装置との読み書きのため共通のシフトレジスタアレイを利用する一実施例を示す。図示されるように、各メモリインタフェース装置６４は、直列に相互接続された複数のシフトレジスタ７６のシフトレジスタアレイ７８を有する。さらに図１１の実施例と同様に、これらのメモリインタフェース装置は、チェーンを構成するようペアに接続されている。
【０１２４】
図示されるように、メモリインタフェース装置６４−１のシフトレジスタアレイ７８は、メモリインタフェース装置６４−２のシフトレジスタアレイ７８に接続され、さらにシフトレジスタアレイ７８はセレクタ４４に接続される。別のライトチェーンは存在しないため、図５に示されるメモリインタフェース装置６４の右上及び左上のＩ／Ｏピンは必ずしも必要ではない。さらに、本実施例のメモリインタフェース装置は、ライトセレクタ８２を利用する。ライトセレクタ８２の動作は、以降においてより詳細に説明される。
【０１２５】
以下において、図１５の実施例の一例となるライト動作が説明される。図１１の実施例と同様に、記憶装置６６に書き込まれるデータは、セクションコントローラ５４の制御の下、テンポラリストレージインタフェース装置６０を介しＴ−セレクタ６２に転送される。本実施例では、データを書き込むための別々のチェーンが存在するため、当該データは、格納される記憶装置６６に対応するチェーンに転送される。このため、Ｔ−セレクタ６２はデータをライトセレクタ８２にわたし、ライトセレクタ８２は、適切なシフトレジスタアレイにデータを送信するように、セクションコントローラ５４から制御信号を受信する。
【０１２６】
その後、信号はチェーンの第１メモリインタフェース装置６４−１（本例では）のリードセレクタ７６にわたされる。これはライト動作であるため、データはシフトレジスタ荒れあい７８にクロック処理され、データが書き込まれる記憶装置６６に対応するシフトレジスタアレイ７８にロードされるまで、シフトレジスタを介しクロック処理される。その後、このデータは記憶装置６６に書き込まれる。以下において、シフトレジスタアレイ７８から記憶装置６６にデータを書き込む方法及びシステムがより詳細に説明される。
【０１２７】
図１５の実施例に対する一例となる読み出し動作が説明される。まず、データの識別子（宛先アドレス、データブロック識別子など）が、セクションコントローラ５４からリードセレクタ８４に供給される。その後、宛先アドレスがシフトレジスタアレイチェーンを介しクロック処理される。
【０１２８】
次に、識別子（宛先アドレス、データブロック識別子など）がシフトレジスタアレイの先頭に添付されるように、データが記憶装置６６からシフトレジスタアレイ７８にロードされる。その後、このデータはセレクタ４４にわたされるまで、シフトレジスタ７６のチェーンを介しクロック処理される。その後、図５及び１１を参照して説明されるように、データはサーバ１２を介しエンドユーザにわたされる。
【０１２９】
さらに図１１と同様に、テストデータは記憶装置６６に挿入され、Ｔ−セレクタ６２を用いてシステムを介しわたされる。
【０１３０】
当業者には明らかなように、本発明の範囲を逸脱することなくメモリインタフェース装置の他の実施例が可能である。例えば、各メモリインタフェース装置は１つのリードまたはライトシフトレジスタアレイを有するものとして説明されたが、メモリインタフェース装置は、任意数のシフトレジスタアレイのライトまたはリードチェーンを有するようにしてもよい。さらに、シフトレジスタ７６は、１ビットシフトレジスタでなく、任意の深さを有するものであってもよい。例えば、シフトレジスタアレイは、実現形態に応じてシステム設計者により決定されるような２×８、４×３２、８×１６などのＮ×Ｍアレイとすることが可能である。さらに、シフトレジスタアレイは、チェーンにロードされたデータがチェーン内で同時に循環するようにリング状に構成されてもよい。シフトレジスタアレイを用いたメモリアクセスのより詳細な説明は、上述の本出願と同日に出願されたＷｉｌｌｉａｍ  Ｔ．ＬｙｎｃｈとＤａｖｉｄ  Ｊ．Ｈｅｒｂｉｓｏｎによる米国特許出願第１０／２８４，１９８号「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」に与えられている。
［他のメモリセクション］
図１６は、提供される方法及びシステムによる他のメモリセクション３０を示す。これらのメモリセクションは、本発明を実現するのに利用可能な一例となる機構として提供されるが、請求項の範囲を限定するものではない。
【０１３１】
図示されるように、メモリセクション３０は、メモリセクション３０は、１以上の通信チャネル入出力インタフェース４６−１と４６−ｍ、セクションコントローラ５４、１以上のバスインタフェース１６０２、バス１６０４、バスコントローラ１６０６、アナライザ１６０８及び１以上の記憶装置６６−１と６６−ｎから構成される。本例では、バス１６０４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）規格を利用する。各装置は、好ましくは、本例ではＰＣＩインタフェースであるバスインタフェース１６０２を介しバスに接続される。本例によるバスコントローラ１６０６は、バスを成業する装置を調停するためのＰＣＩバスコントローラである。さらに本例では、アナライザ回路１６０８がＰＣＩバス１６０４の状態を監視し、セクションコントローラ５４にバス１６０４のリアルタイムの状態を通知する。
【０１３２】
通信チャネル入出力インタフェース４６−１と４６−ｍは、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、イーサネット上のＴＣＰ／ＩＰ、Ｔｏｋｅｎ  Ｒｉｎｇなどの任意のタイプの通信チャネルインタフェースであってもよい。本例では、通信チャネル入出力インタフェース４６−１と４６−ｍは、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌプロトコルを利用する。チップ上に実現される市場で入手可能なＦｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｉ／Ｏコンポーネントは、通信チャネルＩ／Ｏインタフェース４６として利用されてもよい。これらの市場において入手可能なチップは、典型的には、レイヤ２及び４プロトコルエンジンを実行するマイクロプロセッサ、２．１２５Ｇｂｉｔ送受信機、データコーデック、送信ＦＩＦＯキュー及び受信ＦＩＦＯキューから構成される。Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｉ／Ｏコンポーネントのマイクロプロセッサは、ＰＣＩインタフェース１６０２の制御に関するセクションコントローラ５４からコマンドを受信し、記憶装置６６に対し情報を送受信することが可能である。本例では、ｍ個の通信チャネルＩ／Ｏインタフェースが示される。ただし、ｍ≧１である。
【０１３３】
通信チャネルＩ／Ｏインタフェース４６はまた、好ましくは、セクションコントローラ５４から制御指示を受信することが可能である。例えば、セクションコントローラ５４は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓｉｎｇ）プロトコルを利用して通信チャネルインタフェース４６に対し制御情報を送受信するようにしてもよい。さらに、図示されてはいないが、セクションコントローラ５４はまた、１以上のＩ／Ｏ制御ラインを介し通信チャネルインタフェース４６との間で割込み及びＩ／Ｏコマンドを送受信するようにしてもよい。
【０１３４】
本例では、セクションコントローラ５４は、内部ランダムアクセスメモリ、ブースとラップローディングのための読み出し専用メモリ、管理コンプレックスとのインタフェース及びマイクロプロセッサを含む１以上のチップ上に実現される。セクションコントローラ５４は、上述の実施例と同様に、メモリラッチングを介し記憶装置６６を直接制御するようにしてもよい。さらに、セクションコントローラ５４は、アナライザ回路１６０８からバスインタフェース１６０２に関するリアルタイム状態情報を受信するようにしてもよい。図示されるように、セクションコントローラ５４はまた、ＤＭＡプロトコルを用いて通信チャネルインタフェースとの間で制御情報を送受信するＤＭＡインタフェースを有する。本例では、ＤＭＡプロトコルが使用されるが、上述のように、通信チャネルインタフェース４６とセクションコントローラ５４との間の制御情報の送信には、他の任意の適切なプロトコルが使用されてもよい。
【０１３５】
ＲＯＭ５６は、最新のソフトウェア画像を取得するため、セクションにより用いられるブースとラッププログラムに関するソフトウェアを格納するようにしてもよい。このＲＯＭ５６は、セクションコントローラ５４とは別に示されているが、セクションコントローラ５４に含まれてもよい。
【０１３６】
バスインタフェース１６０２は、バス１６０４を介し情報を送受信できるように、記憶装置６６及び通信チャネルインタフェース４６とバス１６０４を接続するのに用いられる。本例によるバスインタフェース１６０２−３と１６０２−４は、セクションコントローラ５４によりバスインタフェース１６０２−３及び１６０２−４に制御情報が送信される制御ラインを介しセクションコントローラ５４と接続される。この制御情報には、例えば、記憶装置１０からデータを読み出すための識別子（宛先アドレスやデータブロック識別子など）が含まれてもよい。従って、バスインタフェース１６０２−３及び１６０２−４はまた、メモリインタフェース装置１６０２−３及び１６０２−４と呼ばれてもよい。
【０１３７】
上述の実施例と同様に、記憶装置６６は、ＤＩＭＭなどの任意のタイプの記憶装置であってもよい。例えば、記憶装置６６とセクションコントローラ５４との間の制御ラインは、データを転送するアドレス及び記憶装置６６との間でデータを転送するためのビット数に関する信号をセクションコントローラ５４から記憶装置６６に搬送するようにしてもよい。さらに、記憶装置６６は、処理が完了すると、記憶装置６６の動作状態に関する情報と共に、リアルタイム割込み信号を上記制御ラインを介しセクションコントローラ５４に提供することが可能であってもよい。本例では、ｎ個の記憶装置６６が設けられる。ただし、ｎ≧１である。
【０１３８】
以下において、図１４のメモリセクションに対する読み出し処理の一例が概観される。本例では、通信チャネルインタフェース４６は、好ましくは、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｉ／Ｏコンポーネントである。データリクエストが通信チャネルインタフェース４６に到着すると、通信チャネルインタフェース４６はそれを検出し、セクションコントローラ５４に割込み信号を送信する。この割込み信号には、好ましくは、記憶装置から読み出されるデータブロックに関する情報が含まれる。その後、セクションコントローラ５４は、このデータブロック情報を記憶装置内のアドレスに変換する。すなわち、セクションコントローラは、このデータブロック情報から要求されたデータを格納している記憶装置６６と当該記憶装置上のこのデータのアドレスを決定する。その後、セクションコントローラ５４は、これらのアドレスが上述のメモリラッチングと同様に記憶装置に送信されるように、このアドレス情報をそれの内部メモリにロードする。
【０１３９】
その後、要求されたデータブロックは記憶装置６６から読み出され、対応するバスインタフェース１６０２に送信される。さらに、セクションコントローラ５４は、識別子（宛先アドレス、データブロック識別子など）をバスインタフェース１６０２に送信する。この識別子は、例えば、送信されるデータの識別子（データブロック識別子など）やデータを送信するアドレスを特定する宛先アドレスであってもよい。宛先アドレスは、例えば、データが送信される通信チャネルインタフェース４６に対応するバスインタフェース１６０２の内部アドレスであってもよい。あるいは、宛先アドレスは、例えば、データが送信されるサーバ１２のアドレス、情報の切り替えにおいてスイッチ２２により用いられるアドレス、あるいはデータをそれの送信先にルーティングするのに有用な他の任意の識別子であってもよい。
【０１４０】
その後、バスインタフェース１６０２は、バスのプロトコルに従って、バス１６０４を介し当該データと識別子（宛先アドレス、データブロック識別子など）を送信する。本例では、バス１６０４はＰＣＩプロトコルを利用し、ＰＣＩコントローラ１６０６はバス１６０４へのアクセスにおいてコンフリクトを調停する。
【０１４１】
データが送信される通信チャネルインタフェース４６のバスインタフェース１６０２は、それのアドレスを含むデータのバスを監視する。すべての情報が当該バスを介し送信されるため、バスインタフェース１６０２は、バスインタフェース１６０２のアドレスを含まないデータは無視する。データが送信される通信チャネルインタフェース４６のバスインタフェース１６０２が自らのアドレスを認識しているとき、バスインタフェース１６０２はデータをバス１６０４から読み出す。その後、通信チャネルインタフェース４６は、メモリセクション３０からデータブロックを送信する。ある例では、通信チャネルインタフェース４６はまた、メモリセクション３０からデータを送信する前に、宛先アドレスを新たな宛先アドレスに交換するようにしてもよい。
【０１４２】
図１４の一例となるメモリセクションに対するライト動作が説明される。ライトリクエストが通信チャネルインタフェース４６により受信されると、通信チャネルインタフェース４６は、それがライトリクエストであると判断し、当該リクエストをＤＭＡインタフェース１６１０を介しセクションコントローラ５４に転送する。本例によるライトリクエストは、メモリセクション３０が当該データを書き込む場所を示すデータブロック識別子を有するようにしてもよい。その後、セクションコントローラ５４は、メモリセクション３０がデータを書き込む記憶装置を当該記憶装置６６のアドレスと共に決定するため、このデータブロック識別子を変換する。セクションコントローラ５４は、これらのアドレスを適切な記憶装置６６に提供する。
【０１４３】
ライトデータリクエストをセクションコントローラ５４に送信するのに加えて、通信チャネルインタフェース４６は、ライトリクエストからデータを取得し、当該データを通信チャネルインタフェースの対応するバスインタフェース１６０２に送信する。さらに、セクションコントローラ５４は、ライトデータを格納する記憶装置６６に対応するバスインタフェース１６０２のバスインタフェースアドレスを通信チャネルインタフェース４６に供給するようにしてもよい。その後、バスインタフェース１６０２は、データとバスインタフェースをバス１６０４上に送信する。
【０１４４】
記憶装置のバスインタフェース１６０２−３と１６０３−４は、それらを送信先とするデータを検索するため、バス１６０４を監視する。バスインタフェース１６０２によりそれのアドレスが送信されていることが検知されると、バスインタフェース１６０２はバスからライトデータを読み出す。他方、セクションコントローラ５４は、対応する記憶装置６６にそれのバスインタフェース１６０２−３または１６０２−４からライトデータを受付けるよう通知する。その後、バスインタフェース１６０２−３または１６０２−４は、セクションコントローラ５４により与えられるアドレスに当該データを書き込む対応する記憶装置６６にデータを提供する。
【０１４５】
上述した好適な実施例は単なる例示的なものとして与えられた。与えられた開示から、当業者は本発明とその効果を理解するであろうが、開示された方法及び構成に行うことが可能な様々な明らかな変更及び改良を見出すであろう。従って、そのような変更及び改良のすべては、添付された請求項とその均等物により画定される本発明の趣旨及び範囲内に属するものとしてカバーされる。従って、明細書及び実施例は、以下の請求項により示される本発明の真の範囲及び趣旨の単なる例とみなされるべきである。
【符号の説明】
【０１４６】
１０  ストレージハブ
１２  サーバ
１４  外部管理システム
１６  不揮発性記憶装置
１８  ネットワーク
【図１】
2010250813.tif 000004
【図２】
2010250813.tif 000005
【図３】
2010250813.tif 000006
【図４】
2010250813.tif 000007
【図５】
2010250813.tif 000008
【図６】
2010250813.tif 000009
【図７】
2010250813.tif 000010
【図８】
2010250813.tif 000011
【図９】
2010250813.tif 000012
【図１０】
2010250813.tif 000013
【図１１】
2010250813.tif 000014
【図１２】
2010250813.tif 000015
【図１３】
2010250813.tif 000016
【図１４】
2010250813.tif 000017
【図１５】
2010250813.tif 000018
【図１６】
2010250813.tif 000019