(57)【特許請求の範囲】
【請求項１】
ストレージコントローラを備えるストレージ装置であって、
前記ストレージコントローラは、
第１のプロセッサと、
前記第１のプロセッサに接続された第１のメモリと、
前記第１のプロセッサに接続され、第１のマルチキャスト機能と第１の非透過性ブリッジを備える第１のスイッチと、
第２のプロセッサと、
前記第２のプロセッサに接続された第２のメモリと、
前記第２のプロセッサに接続され、第２の非透過性ブリッジを備える第２のスイッチと、
を備え、
前記第１の非透過性ブリッジと前記第２の非透過性ブリッジは第１のリンクで接続され、
前記第１のメモリと前記第２のメモリ内にユーザデータを格納するキャッシュメモリと制御情報を格納する二重化共有メモリが構成され、
前記ストレージコントローラは、更に前記第１のスイッチに接続された第１のパケット方向転換手段を備え、
前記第１のスイッチでは、前記第１のプロセッサと前記第１の非透過性ブリッジとが第１のマルチキャストグループに設定され、
前記第１のパケット方向転換手段は、受信したパケットを、受信した順番で前記第１のマルチキャストグループのアドレスへ転送し、
前記第１のプロセッサは、パケットを前記第１のパケット方向転換手段に送信することにより前記二重化共有メモリへの書き込みを実行する、ことを特徴とするストレージ装置。
【請求項２】
前記第２のスイッチは第２のマルチキャスト機能を備え、
前記第２のスイッチに第２のパケット方向転換手段が接続され、
前記第２のスイッチでは、前記第２のプロセッサと前記第２の非透過性ブリッジとが第２のマルチキャストグループに設定され、
前記第２のパケット方向転換手段は、受信したパケットを、受信した順番で前記第２のマルチキャストグループのアドレスへ転送し、
前記第１のプロセッサは、パケットを前記第１のパケット方向転換手段または前記第２のパケット方向転換手段に送信することにより前記二重化共有メモリへの書き込みを実行し、
前記第２のプロセッサは、パケットを前記第１のパケット方向転換手段または前記第２のパケット方向転換手段に送信することにより前記二重化共有メモリへの書き込みを実行する、ことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記第１のスイッチは第３の非透過性ブリッジを備え、
前記第２のスイッチは第４の非透過性ブリッジを備え、
前記第３の非透過性ブリッジと前記第４の非透過性ブリッジは第２のリンクで接続され、
前記第１のプロセッサまたは前記第２のプロセッサから前記キャッシュメモリへの書き込みには前記第２のリンクが使用され、
前記第１のプロセッサまたは前記第２のプロセッサから前記二重化共有メモリへの書き込みには前記第１のリンクが使用されること、を特徴とする請求項２記載のストレージ装置。
【請求項４】
前記第１のパケット方向転換手段は、前記第２のスイッチに内蔵された第５の非透過性ブリッジである、ことを特徴とする請求項１記載のストレージ装置。
【請求項５】
前記第１のパケット方向転換手段は、前記第２のスイッチに内蔵された第５の非透過性ブリッジで、前記第２のパケット方向転換手段は、第１のスイッチに内蔵された第６の非透過性ブリッジであり、
前記第１のスイッチと前記第５の非透過性ブリッジを接続するリンクと、前記第２のスイッチと前記第６の非透過性ブリッジを接続するリンクが同じ第３のリンクである、ことを特徴とする請求項２記載のストレージ装置。
【請求項６】
前記第３のリンクは第１の仮想チャネルと第２の仮想チャネルを備え、前記第１のプロセッサが前記第５の非透過性ブリッジにパケットを送信する場合には前記第１の仮想チャネルを使用し、前記第２のプロセッサが前記第６の非透過性ブリッジにパケットを送信する場合には前記第２の仮想チャネルを使用する、ことを特徴とする請求項５記載のストレージ装置。
【請求項７】
前記第１のパケット方向転換手段は第７の非透過性ブリッジを備えた第３のスイッチであり、前記第３のスイッチの、前記第７の非透過性ブリッジに対応するポートを含む２個のポートが前記第１のスイッチと接続される、ことを特徴とする請求項１記載のストレージ装置。
【請求項８】
前記第２のパケット方向転換手段は第８の非透過性ブリッジを備えた第４のスイッチであり、前記第４のスイッチの、前記第８の非透過性ブリッジに対応するポートを含む２個のポートが前記第２のスイッチと接続される、ことを特徴とする請求項２記載のストレージ装置。
【請求項９】
前記第１のスイッチは第３の非透過性ブリッジを備え、
前記第２のスイッチは第４の非透過性ブリッジを備え、
前記第３の非透過性ブリッジと前記第４の非透過性ブリッジは第２のリンクで接続され、
前記第１のプロセッサまたは前記第２のプロセッサから前記キャッシュメモリへの書き込みには前記第２のリンクが使用され、
前記第１のプロセッサまたは前記第２のプロセッサから前記二重化共有メモリへの書き込みには前記第１のリンクが使用される、ことを特徴とする請求項８記載のストレージ装置。
【請求項１０】
前記二重化共有メモリから制御情報を読み出す場合、前記第１のプロセッサは前記第１のメモリから読み出し、前記第２のプロセッサは前記第２のメモリから読み出す、ことを特徴とする請求項１記載のストレージ装置。
【請求項１１】
前記第１のプロセッサから前記二重化共有メモリへの書き込み実行状態を管理する第１のテーブルを前記第１のメモリに備え、前記第２のプロセッサから前記二重化共有メモリへの書き込み実行状態を管理する第２のテーブルを前記第２のメモリにそれぞれ備える、ことを特徴とする請求項１記載のストレージ装置。
【請求項１２】
前記第１のプロセッサは、
前記第１のテーブルに前記制御情報に関連する書き込み未完了フラグを設定し、
前記制御情報を格納したパケットを送信し、
前記制御情報を格納したパケットを送信したのと同じデータ転送経路で、前記書き込み未完了フラグをクリアするためのデータを格納したパケットを送信し、
前記第２のプロセッサは、
前記第２のテーブルに前記制御情報に関連する書き込み未完了フラグを設定し、
前記制御情報を格納したパケットを送信し、
前記制御情報を格納したパケットを送信したのと同じデータ転送経路で、前記書き込み未完了フラグをクリアするためのデータを格納したパケットを送信する、ことを特徴とする請求項１１記載のストレージ装置。
【請求項１３】
前記第１のプロセッサから前記二重化共有メモリへの書き込み実行状態を管理する第１のテーブルを前記第１のメモリに備え、
前記第２のプロセッサから前記二重化共有メモリへの書き込み実行状態を管理する第２のテーブルを前記第２のメモリに備え、
前記第1のプロセッサは、
前記制御情報を格納したパケットの送信先を前記第１のパケット方向転換手段または前記第２のマルチキャスト機能のどちらに送信するかを判定し、
前記第１のテーブルに前記制御情報に関連する書き込み未完了フラグを設定し、
前記制御情報を格納したパケットを送信し、
前記制御情報を格納したパケットを送信したのと同じデータ転送経路で、前記書き込み未完了フラグをクリアするためのデータを格納したパケットを送信し、
前記第２のプロセッサは、
前記制御情報を格納したパケットの送信先を前記第２のパケット方向転換手段または前記第１のマルチキャスト機能のどちらに送信するかを判定し、
前記第２のテーブルに前記制御情報に関連する書き込み未完了フラグを設定し、
前記制御情報を格納したパケットを送信し、
前記制御情報を格納したパケットを送信したのと同じデータ転送経路で、前記書き込み未完了フラグをクリアするためのデータを格納したパケットを送信する、ことを特徴とする請求項２記載のストレージ装置。
【請求項１４】
前記第1のプロセッサは、
前記制御情報に関連する書き込み未完了フラグを前記第１のテーブルから読み出し、
前記書き込み未完了フラグが書き込み完了状態を示す場合に、前記第１のメモリから前記制御情報を読み出し、
前記第２のプロセッサは、
前記制御情報に関連する書き込み未完了フラグを前記第２のテーブルから読み出し、
前記書き込み未完了フラグが書き込み完了状態を示す場合に、前記第２のメモリから前記制御情報を読み出す、ことを特徴とする請求項１２記載のストレージ装置。
【請求項１５】
前記書き込み未完了フラグが書き込み未完了状態を示す場合に、前記第１のプロセッサは前記書き込み未完了フラグが書き込み完了を示すまで前記第１のメモリから前記制御情報の読み出しを延期し、前記第２のプロセッサは前記書き込み未完了フラグが書き込み完了を示すまで前記第２のメモリから前記制御情報の読み出しを延期する、ことを特徴とする請求項１４記載のストレージ装置。
【請求項１６】
ストレージコントローラを備えるストレージ装置の二重化共有メモリアクセス方法であって、
前記ストレージコントローラは、
第１のプロセッサと、
前記第１のプロセッサに接続された第１のメモリと、
前記第１のプロセッサに接続され、第１のマルチキャスト機能と第１の非透過性ブリッジを備える第１のスイッチと、
第２のプロセッサと、
前記第２のプロセッサに接続された第２のメモリと、
前記第２のプロセッサに接続され、第２の非透過性ブリッジを備える第２のスイッチと、
前記第１のスイッチに接続された第１のパケット方向転換手段を備え、
前記第１の非透過性ブリッジと前記第２の非透過性ブリッジを第１のリンクで接続し、
前記第１のメモリと前記第２のメモリ内にユーザデータを格納するキャッシュメモリと制御情報を格納する二重化共有メモリを構成し、
前記第１のスイッチにおいて、前記第１のプロセッサと前記第１の非透過性ブリッジを同じマルチキャストグループに設定し、
前記第１のパケット方向転換手段により、受信したパケットを、受信した順番で前記マルチキャストグループのアドレスへ転送し、
前記第１のプロセッサにより、パケットを前記第１のパケット方向転換手段に送信することにより前記二重化共有メモリへの書き込みを実行する、ことを特徴とする二重化共有メモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に係わり、特に、ストレージコントローラ内の制御情報の格納場所である二重化共有メモリへのアクセス方法に関する。
【背景技術】
【０００２】
ストレージ装置は、一般的に、ストレージコントローラと、ランダムアクセス可能な不揮発性記録媒体とを有する。この記録媒体は、例えば、ハードディスクドライブ（HDD）や不揮発性半導体メモリドライブ（SSD）を多数備えたディスクアレイである。ストレージコントローラは、上位装置（ホストシステム等）を接続するためのフロントエンドインターフェース（FEIFと略す）と、ディスクアレイを接続するためのバックエンドインターフェース（BEIFと略す）と、上位装置がディスクアレイに対して読み書きするデータを一時的に保存するキャッシュメモリ（CMと略す）を有する。更に、ストレージコントローラは、上位装置とキャッシュメモリとの間、及びディスクアレイとキャッシュメモリとの間におけるデータ転送を制御するためのプロセッサを有する。
【０００３】
複数のプロセッサを搭載するストレージ装置では、ストレージコントローラ内に複数のプロセッサからアクセス可能な、ストレージ装置の制御情報を格納する共有メモリ（SMと略す）を有する。ストレージ装置の制御情報とは、例えば、上位装置から参照されるデータ格納先アドレス情報とストレージ装置内部で使用するディスクアレイ上のデータ格納先アドレス情報を変換するアドレス変換テーブル等がある。
【０００４】
汎用技術を適用したストレージコントローラにおいて、キャッシュメモリ及び共有メモリは汎用プロセッサ（以下、プロセッサ）に接続された主記憶内に構成される。また、プロセッサとFEIFやBEIF等とを接続するための通信ネットワークの標準規格として、「PCI  Express」（登録商標）が知られている。
高信頼性が要求されるストレージ装置では、共有メモリを含むストレージコントローラ内コンポーネントが冗長化される。ストレージコントローラは２個以上のクラスタで構成され、共有メモリはクラスタ間で二重化される。二重化共有メモリは、高信頼化の他に、複数クラスタ間における負荷分散や、クラスタ間連携による多ポート動作及びバックアップ処理等により、ストレージ装置を高性能化する目的にも使用される。
【０００５】
特許文献１には、二重化された共有メモリを備えたストレージ装置に関する技術が開示されている。特許文献２には、共有メモリに対するアクセス順序保証に関する技術が開示されている。特許文献３には、複数のクラスタからなるストレージ装置に関する技術が開示されている。また、非特許文献１には、PCI  Expressで標準化されたマルチキャストについて開示されている。非特許文献２には、PCI  Expressを応用したクラスタ間接続に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】日本公開特許２０００−０１０９０１号公報                                    （対応米国特許６、３４１、３３２号公報）
【特許文献２】日本公開特許２０００−１８１８９１公報
【特許文献３】米国公開特許２０１１／０１６７１８９号公報
【非特許文献】
【０００７】
【非特許文献１】「PCI  Express  Base  Specification、Revision  3.0、Section  6.14.」、2010年発行、著者PCI-SIG、第546〜553頁
【非特許文献２】「Using  Non-transparent  Bridging  in  PCI  Express  Systems」、2004年発行、著者Jack  Regula、第4〜30頁、URL  http://www.plxtech.com/pdf/technical/expresslane/NontransparentBridging.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００８】
共有メモリ実現の要件は、特許文献２にも記載されている通り、あるプロセッサからの共有メモリへのアクセスが、別のプロセッサからも同様に見えることである。特にストレージ装置の二重化共有メモリにおいては、物理的に異なる場所にある２個のメモリに対する書き込み順序が一致することが求められる。
【０００９】
従来技術を適用したストレージ装置において、共有メモリは、２個のプロセッサの主記憶に二重化される。二重化共有メモリ間で書き込み順序の一致が保証されない場合、２個のプロセッサは、二重化共有メモリの一方のみを読み出すことにより、読み出すデータの書き込み順序をプロセッサ間で一致させる必要がある。その結果、共有メモリ読み出しの際、一方のプロセッサが他方のプロセッサの主記憶を読み出す必要がある。
【００１０】
さらに、ストレージコントローラにおける他方のプロセッサの主記憶に対する読み出しは、障害処理の観点から、読み出し命令を使用するのではなく、特許文献３に記載されているように複数の書き込み命令を組み合わせて読み出さなければならいので、各プロセッサがそれぞれの主記憶を読み出す場合に比べてオーバーヘッドが大きくなる。
【００１１】
また、PCI  Expressで標準化されたマルチキャストは、PCI  Expressで接続されたコンポーネント間において、複数の異なる場所に同じ順序でデータを書き込むことができる機能である。しかし、プロセッサ発の書き込みは、マルチキャスト機能を使ってプロセッサの主記憶に書き込むことはできない。従って、プロセッサの主記憶に共有メモリを構成するストレージ装置において、マルチキャストをプロセッサから二重化共有メモリへの書き込みに適用することは困難である。
【００１２】
本発明は以上のような問題に鑑みてなされたものであり、その主な目的は、ストレージコントローラ内にプロセッサ及び二重化された共有メモリを備え、ストレージコントローラ内コンポーネントがPCI  Expressで接続されたストレージ装置に関わり、プロセッサから共有メモリへの書き込みにおいて、二重化された共有メモリ間で書き込み順序が一致することが保証されたストレージ装置を提供することである。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。前記目的を達成するために、本発明の代表的な実施の形態は、ストレージコントローラを備えるストレージ装置であって、ストレージコントローラは、２個のプロセッサと、各プロセッサに接続された２個のメモリと、少なくとも一つがマルチキャスト機能を備える各プロセッサに接続された２個のスイッチと、各スイッチに内蔵され２個のスイッチをリンクで接続するための非透過性ブリッジと、２個のメモリ内に二重化された共有メモリを持つストレージ装置の技術であって、以下に示す構成を有することを特徴とする。
【００１４】
ストレージコントローラは、２個のスイッチの少なくとも一つに接続されたパケット方向転換手段を備える。マルチキャスト機能を備えるスイッチにおいては、スイッチに接続したプロセッサと非透過性ブリッジが同じマルチキャストグループに設定される。パケット方向転換手段は、受信したパケットを、受信した順番でマルチキャストグループのアドレスへ転送する。マルチキャスト機能を備えるスイッチと接続したプロセッサは、パケットをパケット方向転換手段に送信することにより二重化共有メモリへの書き込みを実行する。２個のプロセッサの他方はパケットを、非透過性ブリッジで接続したスイッチ間リンクを経由してパケット方向転換手段に送信するか、或いは、別の非透過性ブリッジで接続したスイッチ間リンクを経由してマルチキャスト機能(マルチキャスト機能のマルチキャストグループのアドレス)にパケットを送信することにより、二重化共有メモリへの書き込みを実行する。
【００１５】
より具体的には、ストレージコントローラを備えるストレージ装置であって、ストレージコントローラは、第１のプロセッサと第１のプロセッサに接続された第１のメモリと第１のプロセッサに接続され第１のマルチキャスト機能と第１の非透過性ブリッジを備える第１のスイッチと、第２のプロセッサと第２のプロセッサに接続された第２のメモリと第２のプロセッサに接続され第２の非透過性ブリッジを備える第２のスイッチとを備え、第１の非透過性ブリッジと第２の非透過性ブリッジが第１のリンクで接続され、第１のメモリと第２のメモリ内にユーザデータを格納するキャッシュメモリと制御情報を格納する二重化共有メモリが構成され、更にストレージコントローラは、第１のスイッチに接続された第１のパケット方向転換手段を備え、第１のスイッチでは、第１のプロセッサと第１の非透過性ブリッジとが同じマルチキャストグループに設定され、第１のパケット方向転換手段は、受信したパケットを、受信した順番でマルチキャストグループのアドレスへ転送し、第１のプロセッサは、パケットを第１のパケット方向転換手段に送信することにより二重化共有メモリへの書き込みを実行する構成を備える。
【００１６】
また、ストレージ装置において、第２のスイッチは第２のマルチキャスト機能を備え、第２のスイッチに第２のパケット方向転換手段が接続され、第２のスイッチでは、第２のプロセッサと第２の非透過性ブリッジとが同じマルチキャストグループに設定され、第２のパケット方向転換手段は、受信したパケットを、受信した順番でマルチキャストグループのアドレスへ転送し、第１のプロセッサは、パケットを第１のパケット方向転換手段または第２のパケット方向転換手段に送信することにより二重化共有メモリへの書き込みを実行し、第２のプロセッサは、パケットを第１のパケット方向転換手段または第２のパケット方向転換手段に送信することにより二重化共有メモリへの書き込みを実行する構成を備える。
【００１７】
更に、ストレージ装置において、第１のスイッチは第３の非透過性ブリッジを備え、第２のスイッチは第４の非透過性ブリッジを備え、第３の非透過性ブリッジと第４の非透過性ブリッジが第２のリンクで接続され、第１のプロセッサまたは第２のプロセッサからキャッシュメモリへの書き込みには第２のリンクが使用され、第１のプロセッサまたは第２のプロセッサから二重化共有メモリへの書き込みには第１のリンクが使用される構成を備える。加えて、第１のパケット方向転換手段は、第２のスイッチに内蔵された第５の非透過性ブリッジである構成を備える。
【００１８】
また、第２のパケット方向転換手段は、第１のスイッチに内蔵された第６の非透過性ブリッジであり、第１のスイッチと第５の非透過性ブリッジを接続するリンクと、第２のスイッチと第６の非透過性ブリッジを接続するリンクが同じ第３のリンクである構成を備える。
【００１９】
更に、第３のリンクは第１の仮想チャネルと第２の仮想チャネルを備え、第１のプロセッサが第１のスイッチから第５の非透過性ブリッジにパケットを送信する場合には第１の仮想チャネルを使用し、第２のプロセッサが第２のスイッチから第６の非透過性ブリッジにパケットを送信する場合には第２の仮想チャネルを使用する構成を備える。
【００２０】
また、第１のパケット方向転換手段は第７の非透過性ブリッジを備えた第３のスイッチであり、第３のスイッチの、第７の非透過性ブリッジに対応するポートを含む２個のポートと第１のスイッチとが接続される構成を備える。更に、第２のパケット方向転換手段は第８の非透過性ブリッジを備えた第４のスイッチであり、第４のスイッチの、第８の非透過性ブリッジに対応するポートを含む２個のポートと第２のスイッチとが接続される、ことを特徴とする構成を備える。加えて、第１のスイッチは第３の非透過性ブリッジを、第２のスイッチは第４の非透過性ブリッジを備え、第３の非透過性ブリッジと第４の非透過性ブリッジとが第２のリンクで接続され、第１のプロセッサまたは第２のプロセッサからキャッシュメモリへの書き込みには第２のリンクが使用され、第１のプロセッサまたは第２のプロセッサから二重化共有メモリへの書き込みには第１のリンクが使用される構成を備える。
【００２１】
更に、二重化共有メモリから制御情報を読み出す場合、第１のプロセッサは第１のメモリから読み出し、第２のプロセッサは第２のメモリから読み出す構成を備える。更に、第１のプロセッサから二重化共有メモリへの書き込み実行状態を管理する第１のテーブルを第１のメモリに備え、第２のプロセッサから二重化共有メモリへの書き込み実行状態を管理する第２のテーブルを第２のメモリを備える。
【００２２】
また、ストレージ装置における二重化共有メモリアクセス方法における第１のプロセッサから二重化共有メモリへの制御情報の書き込み方法は、第１のテーブルに第１のプロセッサが制御情報に関連する書き込み未完了フラグを設定するステップと、第１のプロセッサが制御情報を格納したパケットを送信するステップと、第１のプロセッサが、制御情報を格納したパケットを送信したのと同じデータ転送経路で、書き込み未完了フラグをクリアするためのデータを格納したパケットを送信するステップを備え、第２のプロセッサから二重化共有メモリへの制御情報の書き込み方法は、第２のテーブルに第２のプロセッサが制御情報に関連する書き込み未完了フラグを設定するステップと、第２のプロセッサが制御情報を格納したパケットを送信するステップと、第２のプロセッサが、制御情報を格納したパケットを送信したのと同じデータ転送経路で、書き込み未完了フラグをクリアするためのデータを格納したパケットを送信するステップを備える。
【００２３】
更に、第１のプロセッサから二重化共有メモリへの書き込み実行状態を管理する第１のテーブルを第１のメモリに、第２のプロセッサから二重化共有メモリへの書き込み実行状態を管理する第２のテーブルを第２のメモリにそれぞれ備える二重化共有メモリアクセス方法において、第１のプロセッサから二重化共有メモリへの制御情報の書き込み方法は、制御情報を格納したパケットの送信先を第１のパケット方向転換手段または第２のマルチキャスト機能のマルチキャストグループのアドレスのどちらに送信するかを判定するステップと、第１のテーブルに第１のプロセッサが制御情報に関連する書き込み未完了フラグを設定するステップと、第１のプロセッサが制御情報を格納したパケットを送信するステップと、第１のプロセッサが、制御情報を格納したパケットを送信したのと同じデータ転送経路で、書き込み未完了フラグをクリアするためのデータを格納したパケットを送信するステップを備え、第２のプロセッサから二重化共有メモリへの制御情報の書き込み方法は、制御情報を格納したパケットの送信先を第２のパケット方向転換手段または第１のマルチキャスト機能のマルチキャストグループのアドレスのどちらに送信するかを判定するステップと、第２のテーブルに第２のプロセッサが制御情報に関連する書き込み未完了フラグを設定するステップと、第２のプロセッサが制御情報を格納したパケットを送信するステップと、第２のプロセッサが、制御情報を格納したパケットを送信したのと同じデータ転送経路で、書き込み未完了フラグをクリアするためのデータを格納したパケットを送信するステップを備える。
【００２４】
加えて、二重化共有メモリから第１のプロセッサへの制御情報の読み出し方法は、第１のプロセッサが制御情報に関連する書き込み未完了フラグを第１のテーブルから読み出すステップと書き込み未完了フラグが書き込み完了状態を示す場合に第１のプロセッサが第１のメモリから制御情報を読み出すステップを備え、二重化共有メモリから第２のプロセッサへの制御情報の読み出し方法は、第２のプロセッサが制御情報に関連する書き込み未完了フラグを第２のテーブルから読み出すステップと書き込み未完了フラグが書き込み完了状態を示す場合に第２のプロセッサが第２のメモリから制御情報を読み出すステップを備える。更に、書き込み未完了フラグが書き込み未完了状態を示す場合に、第１のプロセッサは第１のメモリから制御情報の読み出しを書き込み未完了フラグが書き込み完了状態を示すまで延期するステップ、または第２のプロセッサは第２のメモリから制御情報の読み出しを書き込み未完了フラグが書き込み完了状態を示すまで延期するステップを備える。
【発明の効果】
【００２５】
本発明によれば、パケット方向転換手段により、プロセッサから主記憶メモリへの書き込みに対してもPCI  Expressマルチキャストを適用可能にできる。更に、ストレージコントローラ内２個のプロセッサからの二重化された共有メモリに対する書き込みの順序を一致できるので、各プロセッサはそれぞれの主記憶にアクセスすることにより共有メモリ内の制御情報を高速に読み出すことができ、ストレージ装置を高性能化することができる。
【図面の簡単な説明】
【００２６】
【図１】図１は、実施例１に係るストレージ装置の構成例を示す図である。
【図２】図２は、PCI  Expressスイッチにおけるマルチキャスト動作を示す図である。
【図３】図３は、実施例１に係るプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図４】図４は、実施例１に係るプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図５】図５は、実施例１に係るプロセッサから共有メモリへの書き込みのフローチャートを示す図である。
【図６】図６は、実施例１に係る共有メモリ管理テーブルを示す図である。
【図７】図７は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図８】図８は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図９】図９は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図１０】図１０は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図１１】図１１は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図１２】図１２は、実施例１に係るプロセッサから共有メモリへの書き込み動作を示す図である。
【図１３】図１３は、実施例１に係る共有メモリからプロセッサへの読み出しデータ転送経路を示す図である。
【図１４】図１４は、実施例１に係る共有メモリからプロセッサへの読み出しのフローチャートを示す図である。
【図１５】図１５は、実施例１に係る共有メモリからプロセッサへの読み出し動作を示す図である。
【図１６】図１６は、実施例１に係る共有メモリからプロセッサへの読み出し動作を示す図である。
【図１７】図１７は、実施例１に係る共有メモリからプロセッサへの読み出し動作を示す図である。
【図１８】図１８は、実施例２に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図１９】図１９は、実施例２に係る共有メモリ管理テーブルを示す図である。
【図２０】図２０は、実施例２に係るプロセッサから共有メモリへの書き込みのフローチャートを示す図である。
【図２１】図２１は、実施例３に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２２】図２２は、実施例３に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２３】図２３は、実施例３に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２４】図２４は、実施例４に係る非透過性ブリッジの動作を示す図である。
【図２５】図２５は、実施例４に係る非透過性ブリッジとスイッチによるパケット方向転換手段の構成例を示す図である。
【図２６】図２６は、実施例４に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２７】図２７は、実施例４に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２８】図２８は、実施例５に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図２９】図２９は、実施例５に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３０】図３０は、実施例５に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３１】図３１は、実施例５に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３２】図３２は、実施例５に係るストレージ装置の構成例を示す図である。
【図３３】図３３は、実施例６に係るパケット方向転換手段の構成例を示す図である。
【図３４】図３４は、実施例６に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３５】図３５は、実施例６に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３６】図３６は、実施例６に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図３７】図３７は、実施例６に係るストレージ装置の構成例を示す図である。
【図３８】図３８は、実施例６に係るストレージ装置の構成例を示す図である。
【図３９】図３９は、実施例７に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図４０】図４０は、実施例７に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。
【図４１】図４１は、実施例８に係るストレージ装置の適用例を示す図である。
【図４２】図４２は、実施例８に係るストレージ装置の適用例を示す図である。
【図４３】図４３は、実施例８に係るストレージ装置の適用例を示す図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。なお、全ての実施例を通して、同一符号が付されている構成要素は、実質的に同じものであるとする。また、以下の説明では、「管理テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「管理テーブル」を「管理情報」と呼ぶことができる。
【００２８】
また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、ＣＰＵ（Central  Processing  Unit）によって実行されるもので、定められた処理をするものである。なお、適宜に記憶資源（例えばメモリ）及び通信インターフェース装置（例えば、通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、ＣＰＵの他に専用ハードウェアを有していても良い。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアなどで提供されるものであっても良い。
【００２９】
また、各要素、例えば、ＬＵ（Logical  Unit）などは番号などで識別可能であるが、識別可能な情報であれば、名前など他種の識別情報が用いられても良い。本発明の図及び説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
＜実施例１＞
【００３０】
図１〜図１７を用いて、本発明の実施の形態１のストレージ装置とその動作について説明する。実施の形態１では、概要としては、PCI  Expressスイッチのマルチキャスト機能とPCI  Expressスイッチに接続したパケット方向転換手段により、プロセッサから２個の共有メモリに対する書き込みの順序を一致させる。
【００３１】
図１は、本発明の実施の形態１のストレージ装置の構成例を示す。ストレージ装置１００は、ストレージコントローラ１０１とディスクアレイ１０２で構成されている。ディスクアレイ１０２は、例えば、複数のハードディスクドライブ（ＨＤＤ）や半導体メモリドライブ（ＳＳＤ）等の記憶装置群から構成される。ストレージコントローラ１０１には、外部の上位装置１０３（Ｈｏｓｔ１）、１０４（Ｈｏｓｔ２）（例えば、ホストシステム等）が接続される。
【００３２】
ストレージコントローラ１０１は、２個のクラスタ１１１（Ｃｌｕｓｔｅｒ１）、１２１（Ｃｌｕｓｔｅｒ２）で構成されている。クラスタ１１１（Ｃｌｕｓｔｅｒ１）は、プロセッサ１１２（ＭＰ１）と、フロントエンドインターフェース１１８（ＦＥＩＦ１）と、バックエンドインターフェース１１９（ＢＥＩＦ１）と、それらを接続するPCI  Expressスイッチ１１６（ＰＣＩｅ（登録商標）  ＳＷ１）で構成されている（以下、PCI  Expressスイッチを単にスイッチと記す）。
【００３３】
主記憶１１３（ＭＥＭ１）は、プロセッサ１１２（ＭＰ１）と接続され、キャッシュメモリ１１４（ＣＭ１）と共有メモリ１１５（ＳＭ１）を構成する。また主記憶１１３（ＭＥＭ１）は、プロセッサ１１２（ＭＰ１）により実行されるプログラムや、参照される管理テーブルを格納する。
【００３４】
プロセッサ１１２（ＭＰ１）は、フロントエンドインターフェース１１８（ＦＥＩＦ１）とキャッシュメモリ１１４（ＣＭ１）の間、及びキャッシュメモリ１１４（ＣＭ１）とバックエンドインターフェース１１９（ＢＥＩＦ１）の間のデータ転送を制御する。また、プロセッサ１１２（ＭＰ１）は、スイッチ１１６と接続するためのルートコンプレックス（図示せず）を内蔵する。
【００３５】
フロントエンドインターフェース１１８（ＦＥＩＦ１）は、上位装置１０３（Ｈｏｓｔ１）、１０４（Ｈｏｓｔ２）とストレージコントローラ１０１間のデータ転送プロトコルと、ストレージコントローラ１０１内のデータ転送プロトコルを変換する。
【００３６】
バックエンドインターフェース１１９（ＢＥＩＦ１）は、ストレージコントローラ１０１内のデータ転送プロトコルと、ストレージコントローラ１０１とディスクアレイ１０２間のデータ転送プロトコルを変換する。
【００３７】
スイッチ１１６は、PCI  Expressで標準化されたマルチキャスト機能１０６（ＭＣ１）を備える。実施の形態１のストレージ装置１００では、スイッチ１１６のアップストリームポートに接続したプロセッサ１１２（ＭＰ１）（詳細にはプロセッサが内蔵するルートコンプレックス（図示せず））と非透過性ブリッジ（Non  Transparent  Bridge）が、同じマルチキャストグループに設定されている。また、スイッチ１１６は、クラスタ間接続を実現する非透過性ブリッジ１１７（ＮＴ１）を備える。
【００３８】
パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、スイッチ１１６に接続されている。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、スイッチを介して受信したパケットを、受信した順にスイッチのマルチキャストアドレスへ転送する機能を備える。
【００３９】
クラスタ１２１（Ｃｌｕｓｔｅｒ２）は、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）が無い点と、スイッチ１２６にマルチキャスト機能が備えられていない点以外は、クラスタ１１１（Ｃｌｕｓｔｅｒ１）と同様の構成である。つまり、クラスタ１２１（Ｃｌｕｓｔｅｒ２）は、プロセッサ１２２（ＭＰ２）と、フロントエンドインターフェース１２８（ＦＥＩＦ２）と、バックエンドインターフェース１２９（ＢＥＩＦ２）と、それらを接続するスイッチ１２６（ＳＷ２）で構成されている。
【００４０】
主記憶１２３（ＭＥＭ２）は、プロセッサ１２２（ＭＰ２）と接続され、キャッシュメモリ１２４（ＣＭ２）と共有メモリ１２５（ＳＭ２）を構成する。また主記憶１２３（ＭＥＭ２）は、プロセッサ１２２（ＭＰ２）により実行されるプログラムや、参照される管理テーブルを格納する。
【００４１】
プロセッサ１２２（ＭＰ２）は、フロントエンドインターフェース１２８（ＦＥＩＦ２）とキャッシュメモリ１２４（ＣＭ２）の間、及びキャッシュメモリ１２４（ＣＭ２）とバックエンドインターフェース１２９（ＢＥＩＦ２）の間のデータ転送を制御する。また、プロセッサ１２２（ＭＰ２）は、スイッチ１２６と接続するためのルートコンプレックス（図示せず）を内蔵する。
【００４２】
フロントエンドインターフェース１２８（ＦＥＩＦ２）は、上位装置１０３（Ｈｏｓｔ１）、１０４（Ｈｏｓｔ２）とストレージコントローラ１０１間のデータ転送プロトコルと、ストレージコントローラ１０１内のデータ転送プロトコルを変換する。
【００４３】
バックエンドインターフェース１２９（ＢＥＩＦ２）は、ストレージコントローラ１０１内のデータ転送プロトコルと、ストレージコントローラ１０１とディスクアレイ１０２間のデータ転送プロトコルを変換する。
【００４４】
スイッチ１２６は、クラスタ間接続を実現する非透過性ブリッジ１２７（ＮＴ２）を備える。クラスタ１１１（Ｃｌｕｓｔｅｒ１）とクラスタ１２１（Ｃｌｕｓｔｅｒ２）との間は、非透過性ブリッジ１１７（ＮＴ１）と非透過性ブリッジ１２７（ＮＴ２）を接続するＮＴ(Non  Transparent)リンク１０５で接続されている。
【００４５】
プロセッサ１１２（ＭＰ１）とプロセッサ１２２（ＭＰ２）は、ＮＴリンク１０５を介して相互に通信し、上位装置１０３（Ｈｏｓｔ１）、１０４（Ｈｏｓｔ２）から受信したユーザデータをキャッシュメモリ１１４（ＣＭ１）、１２４（ＣＭ２）内に二重化して一時的に格納してもよい。また、プロセッサ１１２（ＭＰ１）とプロセッサ１２２（ＭＰ２）は、ＮＴリンク１０５を介して相互に通信し、ストレージ装置１００内の制御情報を共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）内に二重化して格納する。
【００４６】
なお、プロセッサ１１２（ＭＰ１）が複数のPCI  Expressポートを備える場合は、プロセッサ１１２（ＭＰ１）と、フロントエンドインターフェース１１８（ＦＥＩＦ１）、またはバックエンドインターフェース１１９（ＢＥＩＦ１）は、スイッチを介さずに接続してもよい。同様に、プロセッサ１２２（ＭＰ２）が複数のPCI  Expressポートを備える場合は、プロセッサ１２２（ＭＰ２）と、フロントエンドインターフェース１２８（ＦＥＩＦ２）、またはバックエンドインターフェース１２９（ＢＥＩＦ２）は、スイッチを介さずに接続してもよい。
【００４７】
次に、図２でPCI  Expressで標準化されたマルチキャストについて説明する。図２は、マルチキャストをサポートするPCI Expressスイッチ２００の動作を説明する図である。スイッチ２００は、アップストリームポート２０１と、２個のダウンストリームポート２０２、２０３を備える。アップストリームポート２０１は透過性ブリッジ（Transparent  Bridge）２０４（ＴＢ０）に、ダウンストリームポート２０２は透過性ブリッジ２０５（ＴＢ１）に、ダウンストリームポート２０３は透過性ブリッジ２０６（ＴＢ２）に、スイッチ２００内部でそれぞれ接続している。透過性ブリッジ２０４（ＴＢ０）、２０５（ＴＢ１）、２０６（ＴＢ２）は、仮想ＰＣＩバス２０７で、相互に接続されている。
【００４８】
まず、マルチキャストではない通常のスイッチ動作について説明する。ＰＣＩアドレス空間２０８において、透過性ブリッジ２０４（ＴＢ０）の通過アドレス範囲２０９は、透過性ブリッジ２０５（ＴＢ１）の通過アドレス範囲２１０と、透過性ブリッジ２０６（ＴＢ２）の通過アドレス範囲２１１を含む。アップストリームポート２０１からスイッチ２００に入力したパケットは、その送信先アドレスが通過アドレス範囲２１０に含まれればダウンストリームポート２０２へ、通過アドレス範囲２１１に含まれればダウンストリームポート２０３へ転送される。
【００４９】
次にマルチキャストの動作について説明する。PCI  Expressスイッチのマルチキャストでは、パケットを複製して転送したい１個以上のエンドポイントを組み合わせて、マルチキャストグループを設定する。詳細には、プロセッサ内蔵のルートコンプレックスもマルチキャストグループに含めることができる。つまり、マルチキャストパケットの送信先として、スイッチのダウンストリームポートに接続した１個以上のエンドポイント、またはアップストリームポートに接続したプロセッサを設定することができる。
【００５０】
例えば、図２のように、マルチキャストグループ０（ＭＣＧ０）には透過性ブリッジ２０４（ＴＢ０）に接続したプロセッサ２２０（ＭＰ）と、透過性ブリッジ２０５（ＴＢ１）に接続したエンドポイント２２１（ＥＰ１）を設定する。マルチキャストグループ１（ＭＣＧ１）には透過性ブリッジ２０４（ＴＢ０）に接続したプロセッサ２２０（ＭＰ）と、透過性ブリッジ２０５（ＴＢ１）に接続したエンドポイント２２１（ＥＰ１）と、透過性ブリッジ２０６（ＴＢ２）に接続したエンドポイント２２２（ＥＰ２）を設定する。さらに、マルチキャストグループ２（ＭＣＧ２）には透過性ブリッジ２０４（ＴＢ０）に接続したプロセッサ２２０（ＭＰ）と、透過性ブリッジ２０６（ＴＢ２）に接続したエンドポイント２２２（ＥＰ２）を設定する。各透過性ブリッジのＭＣ＿Ｒｅｃｅｉｖｅレジスタには、その透過性ブリッジを通過するマルチキャストパケットが属するマルチキャストグループを設定する。つまり、透過性ブリッジ２０４（ＴＢ０）のＭＣ＿Ｒｅｃｅｉｖｅレジスタには、マルチキャストグループ０（ＭＣＧ０）とマルチキャストグループ１（ＭＣＧ１）とマルチキャストグループ２（ＭＣＧ２）が、透過性ブリッジ２０４（ＴＢ０）を通過するマルチキャストグループとして設定される。透過性ブリッジ２０５（ＴＢ１）のＭＣ＿Ｒｅｃｅｉｖｅレジスタには、マルチキャストグループ０（ＭＣＧ０）とマルチキャストグループ１（ＭＣＧ１）が、透過性ブリッジ２０５（ＴＢ１）を通過するマルチキャストグループとして設定される。透過性ブリッジ２０６（ＴＢ２）のＭＣ＿Ｒｅｃｅｉｖｅレジスタには、マルチキャストグループ１（ＭＣＧ１）とマルチキャストグループ２（ＭＣＧ２）が、透過性ブリッジ２０６（ＴＢ２）を通過するマルチキャストグループとして設定される。
【００５１】
アップストリームポート２０１からスイッチ２００に入力したパケットは、その送信先アドレスがマルチキャストアドレス２１２（ＭＣＧ０）に含まれれば、マルチキャストグループ０（ＭＣＧ０）がＭＣ＿Ｒｅｃｅｉｖｅレジスタに設定された透過性ブリッジ２０５（ＴＢ１）を経てダウンストリームポート２０２へ転送される。アップストリームポート２０１からスイッチ２００に入力したパケットは、その送信先アドレスがマルチキャストアドレス２１３（ＭＣＧ１）に含まれれば、マルチキャストグループ１（ＭＣＧ１）がＭＣ＿Ｒｅｃｅｉｖｅレジスタに設定された透過性ブリッジ２０５（ＴＢ１）、２０６（ＴＢ２）を経てダウンストリームポート２０２、２０３へ転送される。
【００５２】
アップストリームポート２０１からスイッチ２００に入力したパケットは、その送信先アドレスがマルチキャストアドレス２１４（ＭＣＧ２）に含まれれば、マルチキャストグループ２（ＭＣＧ２）がＭＣ＿Ｒｅｃｅｉｖｅレジスタに設定された透過性ブリッジ２０６（ＴＢ２）を経てダウンストリームポート２０３へ転送される。
【００５３】
PCI  Expressスイッチのマルチキャストでは、パケットが入力したポートの方向へはマルチキャストされないという制約がある。この制約により、例えば、図２のように、アップストリームポート２０１から入力したパケットの送信先アドレスがマルチキャストアドレス２１３（ＭＣＧ１）に含まれる場合であっても、パケットは、マルチキャストグループ１がＭＣ＿Ｒｅｃｅｉｖｅレジスタに設定された透過性ブリッジ２０４（ＴＢ０）に接続されたアップストリームポート２０１の方向へは転送されない。
【００５４】
言い換えると、ストレージ装置１００において、プロセッサ１１２（ＭＰ１）が、スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）のマルチキャストアドレスへパケットを送信したとしても、主記憶１１３（ＭＥＭ１）にパケットを送信することはできない。つまり、プロセッサ１１２（ＭＰ１）から、「直接」、スイッチのマルチキャストアドレスへパケットを転送しても、２個の共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）へ書き込むことはできない。
【００５５】
図３は、上記制約を回避するため、スイッチ１１６（ＳＷ１）にパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を接続した場合のデータ転送経路を示す図である。上述の通り、スイッチのマルチキャスト機能は、パケットが入力したポートの方向へは働かない。そこで実施の形態１のストレージ装置は、図３のようにスイッチ１１６（ＳＷ１）にパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を接続し、プロセッサ１１２（ＭＰ１）から送信されたパケットを方向転換させてスイッチのマルチキャスト機能１０６（ＭＣ１）に転送する。
【００５６】
スイッチ１１６（ＳＷ１）では、アップストリームポート３０１に接続されたプロセッサ１１２（ＭＰ１）と、非透過性ブリッジ１１７（ＮＴ１）が同じマルチキャストグループに設定される。さらに、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、そのグループのマルチキャストアドレス（マルチキャストアドレス１とする）に、受信パケットを転送する。
【００５７】
プロセッサ１１２（ＭＰ１）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みにおいて、先ず、プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）に送信する（符号３０３）。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、受信したパケットを、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に転送する（符号３０４）。スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製する。
【００５８】
複製されたパケットの一方は、ポート３０１とプロセッサ１１２（ＭＰ１）を介して、主記憶１１３（ＭＥＭ１）内の共有メモリ１１５（ＳＭ１）へ送信される（符号３０５）。複製されたパケットの他方は、非透過性ブリッジ１１７（ＮＴ１）に接続されたポート３０２と、ＮＴリンク１０５と、スイッチ１２６（ＳＷ２）のポート３０７と、非透過性ブリッジ１２７（ＮＴ２）と、プロセッサ１２２（ＭＰ２）を介して、主記憶１２３（ＭＥＭ２）内の共有メモリ１２５（ＳＭ２）へ送信される（符号３０６）。
【００５９】
図４は、プロセッサ１２２（ＭＰ２）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）へのデータ転送経路を示す図である。プロセッサ１２２（ＭＰ２）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みにおいて、プロセッサ１２２（ＭＰ２）はプロセッサ１１２（ＭＰ１）と同様に、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）に送信する（符号４０３）。
【００６０】
そのデータ転送経路は、非透過性ブリッジ１２７（ＮＴ２）と、ポート３０７と、ＮＴリンク１０５と、ポート３０２と、非透過性ブリッジ１１７（ＮＴ１）と、を経由する。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、受信したパケットを、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に転送する（符号３０４）。その後のマルチキャスト動作は、プロセッサ１１２（ＭＰ１）発の書き込みの場合と同様である。
【００６１】
以上説明したように、プロセッサ１１２（ＭＰ１）発パケットもプロセッサ１２２（ＭＰ２）発パケットも、同じマルチキャスト機能１０６（ＭＣ１）において複製され、共有メモリ１１５と１２５（ＳＭ１とＳＭ２）に送信される。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットの順序と同じ順序で複製パケットを共有メモリに送信する。従って、２個の共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）の間で、書き込まれるパケットの順序が一致することになる。
【００６２】
図５から図９により、プロセッサ１１２（ＭＰ１）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みの手順を説明する。図５は書き込み手順のフローチャートである。図６はプロセッサ１１２（ＭＰ１）が共有メモリ書き込み時に使用し、主記憶１１３（ＭＥＭ１）内に格納される共有メモリ管理テーブル６００を示す図である。図７から図９は、図５のフローチャートの各ステップにおける、共有メモリへの書き込みパケットのデータ転送経路と、共有メモリ管理テーブル６００の内容について示す図である。
【００６３】
図６において、共有メモリ管理テーブル６００は、共有メモリアドレス６０１に対する書き込み未完了フラグ６０２を格納する。書き込み未完了フラグが「０」の場合は、その共有メモリアドレスへの書き込みが完了していることを示す。それに対して、書き込み未完了フラグが「１」の場合は、その共有メモリアドレスへの書き込みは未完了であることを示す。
【００６４】
例えば、図６において、共有メモリアドレス「ａｂｃｄ」に対する書き込み未完了フラグは「０」なので（符号６０３）、そのアドレスに対する書き込みは完了している。一方、共有メモリアドレス「ｅｆｇｈ」に対する書き込み未完了フラグは「１」なので（符号６０４）、そのアドレスに対する書き込みは未完了である。
【００６５】
図５のフローチャートのステップＳ５０１において、プロセッサ１１２（ＭＰ１）は、主記憶１１３（ＭＥＭ１）内の共有メモリ管理テーブル６００において、書き込み先共有メモリアドレスの書き込み未完了フラグに「１」を書き込む。この場合は、図７に示すように、プロセッサ１１２（ＭＰ１）は主記憶１１３（ＭＥＭ１）に直接アクセスして（符号７０２）、共有メモリ管理テーブル６００を更新する。共有メモリ管理テーブル６００の書き込み先アドレスの書き込み未完了フラグは「０」から「１」へ更新される（符号７０１）。
【００６６】
次に、ステップＳ５０２において、プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、図８に示すように、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）へ送信する（符号８０２）。そして、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に対して前記パケットを送信する。この場合、共有メモリ管理テーブル６００の書き込み先アドレスの書き込み未完了フラグは「１」であり、書き込み未完了を示す（符号８０１）。
【００６７】
次に、ステップＳ５０３において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル６００の書き込み未完了フラグをクリアするデータを格納したパケットを、図９に示すように、共有メモリへ送信した書き込みデータパケットと同じ経路で送信する（符号９０２）。つまり、前記フラグをクリアするパケットを、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を介して、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に対して送信する。
【００６８】
その結果、共有メモリ管理テーブル６００の書き込み先アドレスの書き込み未完了フラグは「１」から「０」へ更新される（符号９０１）。共有メモリ１２５（ＳＭ２）に対しても、前記フラグをクリアするパケットがマルチキャストされるが、プロセッサ１２２（ＭＰ２）は対象アドレスに書き込みをしていないので、影響を受けない。
【００６９】
図１０から図１２は、プロセッサ１２２（ＭＰ２）から共有メモリ１１５、１２６（ＳＭ１、ＳＭ２）への書き込みの手順を説明する図である。プロセッサ１２２（ＭＰ２）から共有メモリへの書き込み手順も図５のフローチャートに従う。
【００７０】
図５のフローチャートのステップＳ５０１において、プロセッサ１２２（ＭＰ２）は、共有メモリ管理テーブル１００１において、書き込み先共有メモリアドレスの書き込み未完了フラグに「１」を書き込む。この場合は、図１０に示すように、プロセッサ１２２（ＭＰ２）は主記憶１２３（ＭＥＭ２）に直接アクセスして（符号１００３）、共有メモリ管理テーブル１００１を更新する。共有メモリ管理テーブル１００１の書き込み先アドレスの書き込み未完了フラグは「０」から「１」へ更新される（符号１００２）。
【００７１】
次に、ステップＳ５０２において、プロセッサ１２２（ＭＰ２）は、共有メモリへの書き込みデータを格納したパケットを、図１１に示すように、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）へ送信する（符号１１０２）。そして、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に対して前記パケットを送信する。この場合、共有メモリ管理テーブル１００１の書き込み先アドレスの書き込み未完了フラグは「１」であり、書き込み未完了を示す（符号１１０１）。
【００７２】
次に、ステップＳ５０３において、プロセッサ１２２（ＭＰ２）は、共有メモリ管理テーブル１００１の書き込み未完了フラグをクリアするデータを格納したパケットを、図１２に示すように、共有メモリへ送信した書き込みデータパケットと同じ経路で送信する（符号１２０２）。つまり、前記フラグをクリアするパケットを、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を介して、スイッチ１１６（ＳＷ１）のマルチキャストアドレス１に対して送信する。
【００７３】
その結果、共有メモリ管理テーブル１００１の書き込み先アドレスの書き込み未完了フラグは「１」から「０」へ更新される（符号１２０１）。共有メモリ１１５（ＳＭ１）に対しても、前記フラグをクリアするパケットがマルチキャストされるが、プロセッサ１１２（ＭＰ１）は対象アドレスに書き込みをしていないので、影響を受けない。
【００７４】
以上説明したように、本発明の実施の形態１では、各プロセッサが直接主記憶にデータを書き込む場合に比べて、共有メモリ書き込みデータパケットが経由するデータ経路長が長くなるので、書き込みに時間がかかる。すると、プロセッサが共有メモリからデータを読み出そうとした場合、読み出し対象データが書き込み途中である可能性がある。
【００７５】
そこで書き込み未完了フラグを使用することにより、プロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）は、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みの状態を調べることができる。次に、共有メモリからのデータ読み出し手順について説明する。
【００７６】
図１３から図１７により、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）からプロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）への読み出し手順を説明する。
【００７７】
図１３は、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）からプロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）への読み出し時に使用するデータ転送経路を示す図である。上述の通り、共有メモリ１１５（ＳＭ１）と共有メモリ１２５（ＳＭ２）に格納されるデータの内容は、その書き込み順序を含めて一致している。
【００７８】
従って、プロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）は、それぞれの主記憶１１３（ＭＥＭ１）、１２３（ＭＥＭ２）にアクセスすることで、共有メモリからデータを読み出すことができる。つまり、図１３に示すように、プロセッサ１１２（ＭＰ１）は共有メモリ１１５（ＳＭ１）に直接アクセスし（符号１３０１）、プロセッサ１２２（ＭＰ２）は共有メモリ１２５（ＳＭ２）に直接アクセスする（符号１３０２）。
【００７９】
図１４から図１７により、共有メモリ１１５（ＳＭ１）からプロセッサ１１２（ＭＰ１）への読み出しの手順を説明する。図１４は読み出し手順のフローチャートである。共有メモリ１２５（ＳＭ２）からプロセッサ１２２（ＭＰ２）への読み出し手順も、図１４のフローチャートに従う。読み出しに際して、共有メモリへの書き込み時と同様に、図６の主記憶１１３（ＭＥＭ１）内に格納される共有メモリ管理テーブル６００を使用する。図１５から図１７は、図１４のフローチャートの各ステップにおける、共有メモリからの読み出しパケットのデータ転送経路と、共有メモリ管理テーブル６００の内容について示す図である。
【００８０】
図１４のフローチャートのステップＳ１４０１において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル６００から、読み出し先共有メモリアドレスの書き込み未完了フラグを読み出す。この場合は、図１５に示すように、プロセッサ１１２（ＭＰ１）は主記憶１１３（ＭＥＭ１）に直接アクセスして（符号１５０２）、共有メモリ管理テーブル６００から書き込み未完了フラグ（符号１５０１）を読み出す。プロセッサ１１２（ＭＰ１）は、読み出した書き込み先アドレスの書き込み未完了フラグが「０」か「１」、つまりは書き込み完了か未完了かを判断する。書き込み未完了フラグが「０」（書き込み完了）の場合はステップＳ１４０３へ進み、書き込み未完了フラグが「１」（書き込み未完了）の場合はステップＳ１４０２へ進む。
【００８１】
次に、ステップＳ１４０２において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル６００の読み出し先アドレスの書き込み未完了フラグが「１」から「０」へ更新されるのを待つ（図１６の符号１６０１）。
【００８２】
次に、ステップＳ１４０３において、読み出し先アドレスの書き込み未完了フラグの「０」（書き込み完了）への更新（図１７の符号１７０１）を検出したプロセッサ１１２（ＭＰ１）は、共有メモリ１１５（ＳＭ１）から所望のデータを読み出す。この場合、プロセッサ１１２は、図１７に示すように、直接主記憶１１３（ＭＥＭ１）内の共有メモリ１１５（ＳＭ１）にアクセスする（符号１７０２）。
【００８３】
以上説明したように、本発明の実施の形態１のストレージ装置では、２個のプロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）の各主記憶１１３（ＭＥＭ１）、１２３（ＭＥＭ２）に格納された２個の共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）の内容を、書込込み順序を含めて、一致させることができる。さらに、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）からプロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）への読み出しにおいては、各プロセッサの主記憶アクセスにより、共有メモリのデータを読み出し可能なので、アクセス時間を短縮することができる。
【００８４】
具体的には、従来技術でのプロセッサ１２２（ＭＰ２）は、主記憶１１３（ＭＥＭ１）に格納された共有メモリ１１５（ＳＭ１）の内容を読み出さなければならなかった。そのため、代行読み出し処理の要求のプロセッサ１１２（ＭＰ１）への送信、プロセッサ１１２（ＭＰ１）での共有メモリ１1５（ＳＭ1）内容の読み出し、読み出しデータのプロセッサ１２２（ＭＰ２）への送信という動作が必要であった。
【００８５】
その動作に要する時間は、スイッチでの伝搬遅延時間（約２００ｎｓｅｃ／スイッチ＊４スイッチ（スイッチ１１６及びスイッチ１２６の往復））及び共有メモリ１1５（ＳＭ1）内容の読み出し時間（（約２００ｎｓｅｃ）の計約１０００ｎｓｅｃである。一方、本発明では、プロセッサ１２２（ＭＰ２）が、直接、主記憶１２３（ＭＥＭ２）に格納された共有メモリ１２５（ＳＭ２）の内容を読み出して所望のデータを取得できるのでその所要時間は５分の１の約２００ｎｓｅｃに短縮できる。
＜実施例２＞
【００８６】
以下、図１８から図２０を参照して、実施例２に係るストレージ装置とその動作について説明する。実施例２は、スイッチ１２６（ＳＷ２）もマルチキャスト機能１８０６を備え、且つスイッチ１２６（ＳＷ２）にパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）を接続することにより、２個の共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みの負荷を２個のスイッチ間で分散させることを特徴とする。ただし、書き込み順序の一致が必要な制御情報は、同じマルチキャスト機能を使用して、共有メモリへ書き込むことにする。
【００８７】
スイッチ１２６（ＳＷ２）では、アップストリームポート１８０１に接続されたプロセッサ１２２（ＭＰ２）（詳細にはプロセッサが内蔵するルートコンプレックス（図示せず））と、非透過性ブリッジ１２７（ＮＴ２）が同じマルチキャストグループに設定される。さらに、パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、そのグループのマルチキャストアドレス（マルチキャストアドレス２とする）に、受信パケットを転送する。
【００８８】
図１８は、プロセッサ１１２（ＭＰ１）が、ＮＴリンク１０５とパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）を介して、スイッチ１２６（ＳＷ２）のマルチキャスト機能１８０６（ＭＣ２）へパケットを送信するデータ転送経路を示す。
【００８９】
プロセッサ１１２（ＭＰ１）が、マルチキャスト機能１０６（ＭＣ１）を使って、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）にパケットを送信するデータ転送経路は、図３に示した。
【００９０】
プロセッサ１２２（ＭＰ２）が、マルチキャスト機能１０６（ＭＣ１）を使って、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）にパケットを送信するデータ転送経路は、図４に示した。
【００９１】
プロセッサ１２２（ＭＰ２）が、マルチキャスト機能１８０６（ＭＣ２）を使って、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）にパケットを送信するデータ転送経路は、プロセッサ１１２（ＭＰ１）をプロセッサ１２２（ＭＰ２）に、マルチキャスト機能１０６（ＭＣ1）をマルチキャスト機能１８０６（ＭＣ２）に置き換えれば、図３と同様である。
【００９２】
図１９は、実施例２に係る共有メモリ管理テーブルを示す図である。図１９において、共有メモリ管理テーブル１９００は、共有メモリアドレス１９０１に対する送信先マルチキャスト情報１９０５、及び書き込み未完了フラグ１９０２を格納する。送信先マルチキャスト情報が「０」の場合、プロセッサ１１２（ＭＰ１）は、スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）を使って共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）へパケットを送信する。それに対して、送信先マルチキャスト情報が「１」の場合、プロセッサ１１２（ＭＰ１）は、スイッチ１２６（ＳＷ２）のマルチキャスト機能１８０６を使って共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）へパケットを送信する。
【００９３】
書き込み未完了フラグが「０」の場合は、その共有メモリアドレスへの書き込みが完了していることを示す。それに対して、書き込み未完了フラグが「１」の場合は、その共有メモリアドレスへの書き込みは未完了であることを示す。例えば、図１９において、共有メモリアドレス「ａｂｃｄ」に対する書き込み未完了フラグは「０」なので（符号１９０３）、そのアドレスに対する書き込みは完了している。一方、共有メモリアドレス「ｅｆｇｈ」に対する書き込み未完了フラグは「１」なので（符号１９０４）、そのアドレスに対する書き込みは未完了である。
【００９４】
図２０は、実施例２に係るプロセッサから共有メモリへの書き込みのフローチャートを示す図である。図２０のフローチャートのステップＳ２００１において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル１９００から、書き込み先共有メモリアドレスの送信先マルチキャスト情報を読み出す。読み出した送信先マルチキャスト情報に従い、プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）とパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）のどちらに送信するのかを決定する。パケットをパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）へ送信する場合は、マルチキャスト機能１０６が共有メモリへの書き込みデータを格納したパケットをマルチキャストする。パケットをパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）へ送信する場合は、マルチキャスト機能１８０６が共有メモリへの書き込みデータを格納したパケットをマルチキャストする。
【００９５】
次に、ステップＳ２００２において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル１９００において、書き込み先共有メモリアドレスの書き込み未完了フラグに「１」を書き込む。
【００９６】
次に、ステップＳ２００３において、プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、ステップＳ２００１で読み出した送信先マルチキャスト情報に従って、送信する。つまり、送信先マルチキャスト情報が「０」ならば、マルチキャスト機能１０６（ＭＣ１）のマルチキャストグループのアドレスへ、「１」ならばマルチキャスト機能１８０６（ＭＣ２）のマルチキャストグループのアドレスへ、プロセッサ１１２（ＭＰ１）はパケットを送信する。
【００９７】
次に、ステップＳ２００４において、プロセッサ１１２（ＭＰ１）は、共有メモリ管理テーブル１９００の書き込み未完了フラグ１９０２をクリアするデータを格納したパケットを、共有メモリへ送信した書き込みデータパケットと同じ経路で送信する。
【００９８】
以上、説明したデータ転送経路で、プロセッサ１１２（ＭＰ１）、１２２（ＭＰ２）は、マルチキャスト機能１０６（ＭＣ１）または１８０６（ＭＣ２）を使って、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）へ、共有メモリへの書き込みデータを格納したパケットを送信することができる。
＜実施例３＞
【００９９】
図２１から図２３は、実施例３に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。以下、図２１から図２３を参照して、実施例３に係るストレージ装置を説明する。実施例３は、実施例２に対して、スイッチ間を２本のＮＴリンクで接続することを特徴とする。
＜２本のＮＴリンクを使った共有メモリへの書き込みその１＞
【０１００】
図２１では、図１８の構成に対して、スイッチ１１６（ＳＷ１）は非透過性ブリッジ２１０２（ＮＴ３）を、スイッチ１２６（ＳＷ２）は非透過性ブリッジ２１０３（ＮＴ４）を、それぞれ備える。非透過性ブリッジ２１０２（ＮＴ３）と非透過性ブリッジ２１０３（ＮＴ４）は、ＮＴリンク２１０１で接続されている。実施例２と同様に、スイッチ１２６（ＳＷ２）では、アップストリームポート１８０１に接続されたプロセッサ１２２（ＭＰ２）と、非透過性ブリッジ１２７（ＮＴ２）が同じマルチキャストグループに設定されている。
【０１０１】
プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みに際し、書き込みデータを格納したパケットを、ＮＴリンク２１０１を介してマルチキャスト機能１８０６（ＭＣ２）へ送信する（符号２１０４）。パケットを受信したマルチキャスト機能１８０６（ＭＣ２）は受信パケットを複製し、複製したパケットを共有メモリ１１５（ＳＭ１）へ送信（符号１８０４）するとともに、共有メモリ１２５（ＳＭ２）へも送信する（符号１８０５）。
【０１０２】
図１８では、プロセッサ１１２（ＭＰ１）がパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）とマルチキャスト機能１８０６を使って共有メモリへのパケット送信を実施していたのに対して、図２１では、パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）を使用する代わりにＮＴリンク２１０１を使用することにより、２個の共有メモリへの書き込みを実現している。
＜２本のＮＴリンクを使った共有メモリへの書き込みその２＞
【０１０３】
図２２は、プロセッサ１１２（ＭＰ１）が、スイッチ１２６（ＳＷ２）に接続されたパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）と、スイッチ１２６（ＳＷ２）のマルチキャスト機能１８０６（ＭＣ２）を使って、共有メモリへの書き込みを行う場合のデータ転送経路を示す。プロセッサ１１２（ＭＰ１）は、ＮＴリンク２１０１を介して、共有メモリへの書き込みデータを格納したパケットをパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）へ送信する（符号３６０１）。
【０１０４】
パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、受信したパケットをマルチキャスト機能１８０６（ＭＣ２）へ送信する（符号３６０２）。マルチキャスト機能１８０６（ＭＣ２）は、受信パケットを共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号１８０４、符号１８０５）。
【０１０５】
同様に、プロセッサ１２２（ＭＰ２）が、ＮＴリンク２１０１を介して、スイッチ１１６（ＳＷ１）に接続されたパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）と、スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）を使って、共有メモリへの書き込みを行うことも可能である。このようにスイッチ間を２本のＮＴリンクで接続した場合は、プロセッサがＮＴリンクを挟んで反対側のパケット方向転換手段とマルチキャスト機能を使って、２個の共有メモリへの書き込みを実現できる。
＜２本のＮＴリンクの使い分け＞
【０１０６】
図２３は、プロセッサ１２２（ＭＰ２）が、マルチキャスト機能１０６（ＭＣ１）を使って共有メモリへ書き込む場合のデータ転送経路を示す。プロセッサ１２２（ＭＰ２）は、ＮＴリンク１０５を介してパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）にパケットを送信する（符号３７０１）。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、受信したパケットをマルチキャスト機能１０６（ＭＣ１）へ送信する。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号３７０３、符号３７０４）。
【０１０７】
プロセッサ１１２（ＭＰ１）が、マルチキャスト機能１０６（ＭＣ１）を使って共有メモリへ書き込む場合のデータ転送経路は、図示していないが、図３と同様であり、ＮＴリンク１０５を使用する。
【０１０８】
プロセッサ１２２（ＭＰ２）が、マルチキャスト機能１８０６（ＭＣ２）を使って共有メモリへ書き込む場合のデータ転送経路は、図示していないが、図３でプロセッサ１１２（ＭＰ１）をプロセッサ１２２（ＭＰ２）に置き換えた場合と同様であり、ＮＴリンク１０５を使用する。つまり、プロセッサ１２２（ＭＰ２）は、パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）にパケットを送信する。パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、受信したパケットをマルチキャスト機能１８０６（ＭＣ２）へ送信する。マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する。
【０１０９】
プロセッサ１１２（ＭＰ１）が、マルチキャスト機能１８０６（ＭＣ２）を使って共有メモリへ書き込む場合のデータ転送経路は、図示していないが、図１８と同様である。つまり、プロセッサ１１２（ＭＰ１）は、ＮＴリンク１０５を介してパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）にパケットを送信する。パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、受信したパケットをマルチキャスト機能１８０６（ＭＣ２）へ送信する。マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する。
【０１１０】
以上述べた４通りの共有メモリ書き込みに関するデータ転送経路は、ＮＴリンク１０５を使用するが、ＮＴリンク２１０１は使用しない。その代わりにＮＴリンク２１０１は、クラスタ間でキャッシュメモリに格納されるユーザデータを転送するために使用することにする。共有メモリに格納する制御情報は数バイト程度の大きさであり、キャッシュメモリに格納するユーザデータは、数百からキロバイト以上の大きさである。従って、制御情報とユーザデータを同じリンクで転送すると、制御情報のデータ転送がユーザデータ転送の完了を待たされる場合がある。そこで、共有メモリへの書き込みはＮＴリンク１０５を使い、キャッシュメモリ間ユーザデータ転送はＮＴリンク２１０１を使うことにする。このように２本のＮＴリンクを使い分けることにより、共有メモリ書き込みにかかる時間を短縮することができる。
＜実施例４＞
【０１１１】
以下、図２４から図２７を参照して、実施例４に係るストレージ装置を説明する。
【０１１２】
図２４は、非透過性ブリッジの動作を説明する図である。非透過性ブリッジ２２０９は、２個のエンドポイント２２１０と２２１１を含む。エンドポイント２２１０はＰＣＩアドレス空間２２０１に属し、エンドポイント２２１１はＰＣＩアドレス空間２２０２に属する。非透過性ブリッジ２２０９は、パケットを通過させるための、エンドポイント２２１０のベースアドレスで特定されるアドレスウィンドウ２２０５と、エンドポイント２２１１のベースアドレスで特定されるアドレスウィンドウ２２０７を備える。
【０１１３】
ＰＣＩアドレス空間２２０１において、プロセッサ等のリクエスタがコンプリータとなるエンドポイント２２１０のアドレスウィンドウ２２０５内のアドレス（Ａｄｄｒｅｓｓ１）に向けて、パケット２２０３（ＴＬＰ１）を送信する。同様に、ＰＣＩアドレス空間２２０２において、プロセッサ等のリクエスタが、コンプリータとなるエンドポイント２２１１のアドレスウィンドウ２２０７内のアドレス（Ａｄｄｒｅｓｓ３）に向けて、パケット２２０４（ＴＬＰ２）を送信する。
【０１１４】
非透過性ブリッジ２２０９は、２個のＰＣＩアドレス空間２２０１と２２０２の間で、非透過性ブリッジ２２０９を通過するパケット２２０３（ＴＬＰ１）および２２０４（ＴＬＰ２）の送信先アドレスを変換する。例えば、パケット２２０３（ＴＬＰ１）のＰＣＩアドレス空間２２０１内の送信先アドレスＡｄｄｒｅｓｓ１を、ＰＣＩアドレス空間２２０２内のアドレス（Ａｄｄｒｅｓｓ２）に変換する。なお、透過性ブリッジは前述の通り、受信したパケットをそのまま通過させるブリッジである。
【０１１５】
また、非透過性ブリッジ２２０９は、パケット２２０３（ＴＬＰ１）とは逆の方向に進むパケット２２０４（ＴＬＰ２）のＰＣＩアドレス空間２２０２内の送信先アドレス（Ａｄｄｒｅｓｓ３）を、ＰＣＩアドレス空間２２０１内のアドレス（Ａｄｄｒｅｓｓ４）に変換する。
【０１１６】
図２５は、非透過性ブリッジとスイッチを組み合わせたパケット方向転換手段の実現方法を示す図である。PCI Expressスイッチは、図２で説明したように、パケットの送信先アドレスに従ってルーティングを行う。そこで、図２５に示すように、非透過性ブリッジ２２０９とスイッチ２３０４のポート２３０６を接続する。さらに、非透過性ブリッジの変換アドレスとベースアドレスを同じに、言い換えるとアドレスウィンドウ２２０６とアドレスウィンドウ２２０７を等しく設定する。
【０１１７】
非透過性ブリッジ２２０９は、非透過性ブリッジ２２０９に入力したパケット２３０１（ＴＬＰ３）の送信先アドレスをＡｄｄｒｅｓｓ１からアドレスＡｄｄｒｅｓｓ２に変換したパケット２３０２（ＴＬＰ４）を生成する。パケット２３０２（ＴＬＰ４）はスイッチ２３０４に入力する。スイッチ２３０４は、パケット２３０２（ＴＬＰ４）をその送信先アドレスに従い、非透過性ブリッジ２２０９のアドレスウィンドウ２２０７へ送信する。
【０１１８】
非透過性ブリッジ２２０９は、非透過性ブリッジ２２０９に入力したパケット２３０２（ＴＬＰ４）の送信先アドレスをＡｄｄｒｅｓｓ３からＡｄｄｒｅｓｓ４に変換したパケット２３０３（ＴＬＰ５）を生成する。このようにして、非透過性ブリッジ２２０９とスイッチ２３０４により、パケットの方向転換が実現可能である。
【０１１９】
さらに非透過性ブリッジ２２０９は、パケット方向転換に使用するアドレスウィンドウ２２０５〜２２０８のほかに、別のアドレスウィンドウ２３０７、２３０８を備える。アドレスウィンドウ２３０７に入力したパケットは、その送信先アドレス（Ａｄｄｒｅｓｓ５）をアドレスウィンドウ２３０８内のアドレス（Ａｄｄｒｅｓｓ６）に変換された後、スイッチ２３０４のポート２３０６以外のポート等に転送される。
【０１２０】
ＰＣＩアドレス空間２２０１において、プロセッサ等のリクエスタが、アドレスウィンドウ２２０５とアドレスウィンドウ２３０７のどちらにパケットを送信するかによって、パケットが送信される経路を選択することができる。プロセッサがアドレスウィンドウ２２０５に向けてパケットを送信した場合は、そのパケットは方向転換してアドレスウィンドウ２２０８から出力される。それに対して、プロセッサがアドレスウィンドウ２３０７に向けてパケットを送信した場合は、そのパケットはスイッチ２３０４のポート２３０６以外のポートから出力されることになる。
【０１２１】
図２５では、非透過性ブリッジ２２０９とスイッチ２３０４を別のコンポーネントとして示した。図２６のスイッチ１１６（ＳＷ１）、１２６（ＳＷ１）のように、スイッチが非透過性ブリッジを内蔵する場合は、スイッチ内部の透過性ブリッジと非透過性ブリッジが、スイッチ内部バスで接続される。
【０１２２】
図２６において、スイッチ１２６（ＳＷ２）は非透過性ブリッジ２４０２（ＮＴ５）を備える。スイッチ１１６（ＳＷ１）と非透過性ブリッジ２４０２（ＮＴ５）は、リンク２４０１で接続されている。ここで非透過性ブリッジ２４０２（ＮＴ５）とスイッチ１２６（ＳＷ２）は、それぞれ図２５の非透過性ブリッジ２２０９とスイッチ２３０４に相当し、それらと同様な設定がなされている。従って、非透過性ブリッジ２４０２（ＮＴ５）は、パケット方向転換手段として機能する。言い換えると、図２６における非透過性ブリッジ２４０２（ＮＴ５）は、図３のパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）に相当する。
【０１２３】
図２６は、プロセッサ１１２（ＭＰ１）から共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）への書き込みに使用するデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１１２（ＭＰ１）は、書き込みデータを格納したパケットを非透過性ブリッジ２４０２（ＮＴ５）へ送信する（符号２４０３）。非透過性ブリッジ２４０２（ＮＴ５）は、受信したパケットをマルチキャスト機能１０６（ＭＣ１）へ送信する。そして、マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２４０４、符号２４０５）。
【０１２４】
図２７は、プロセッサ１２２（ＭＰ２）から共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）への書き込みに使用するデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１２２（ＭＰ２）は、書き込みデータを格納したパケットを、ＮＴリンク１０５を介して、非透過性ブリッジ２４０２（ＮＴ５）へ送信する（符号２５０１）。非透過性ブリッジ２４０２（ＮＴ５）は、受信したパケットをマルチキャスト機能１０６（ＭＣ１）へ送信する。そして、マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２４０４、符号２４０５）。
【０１２５】
以上説明したように、実施例４では、非透過性ブリッジとスイッチを組合せることにより、パケット方向転換手段を実現することができる。その結果、実施例１と同様に、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）の内容を、書込み順序を含めて、一致させることができる。
＜実施例５＞
【０１２６】
図２８から図３２は、実施例５に係るストレージ装置のプロセッサから共有メモリへの書き込みデータ転送経路を示す図である。以下、図２８から図３２を参照して、実施例５に係るストレージ装置を説明する。
【０１２７】
図２８において、スイッチ１１６（ＳＷ１）は非透過性ブリッジ２６０２（ＮＴ６）を備え、スイッチ１２６（ＳＷ２）は非透過性ブリッジ２４０２（ＮＴ５）を備える。非透過性ブリッジ２４０２（ＮＴ５）と非透過性ブリッジ２６０２（ＮＴ６）は、ＮＴリンク２６０１で接続されている。ここで非透過性ブリッジ２４０２（ＮＴ５）とスイッチ１２６（ＳＷ２）は、それぞれ図２５の非透過性ブリッジ２２０９とスイッチ２３０４に相当し、それらと同様な設定がなされている。従って、非透過性ブリッジ２４０２（ＮＴ５）は、パケット方向転換手段として機能する。
【０１２８】
同様に、非透過性ブリッジ２６０２（ＮＴ６）とスイッチ１１６（ＳＷ１）は、それぞれ図２５の非透過性ブリッジ２２０９とスイッチ２３０４に相当し、それらと同様な設定がなされている。従って、非透過性ブリッジ２６０２（ＮＴ６）は、パケット方向転換手段として機能する。
【０１２９】
言い換えると、図２８における非透過性ブリッジ２４０２（ＮＴ５）は図２１のパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）に、図２８における非透過性ブリッジ２６０２（ＮＴ６）は図２１のパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）に、それぞれ相当する。更には、スイッチ１１６（ＳＷ１）とパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を接続するリンクと、スイッチ１２６（ＳＷ２）とパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）を接続するリンクが、同じＮＴリンク２６０１に相当する。
【０１３０】
図２８は、プロセッサ１１２（ＭＰ１）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みに使用するデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１１２（ＭＰ１）は、書き込みデータを格納したパケットを非透過性ブリッジ２４０２（ＮＴ５）へ送信する（符号２６０３）。非透過性ブリッジ２４０２（ＮＴ５）は、受信したパケットをマルチキャスト機能１０６（ＭＣ１）へ送信する。そして、マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２６０４、符号２６０５）。
【０１３１】
図２９は、プロセッサ１２２（ＭＰ２）から共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みに使用するデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１２２（ＭＰ２）は、書き込みデータを格納したパケットを非透過性ブリッジ２６０２（ＮＴ６）へ送信する（符号２７０１）。非透過性ブリッジ２６０２（ＮＴ６）は、受信したパケットをマルチキャスト機能１８０６（ＭＣ２）へ送信する。そして、マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２７０２、符号２７０３）。
【０１３２】
図３０は、プロセッサ１１２（ＭＰ１）がスイッチ１２６（ＳＷ２）のマルチキャスト機能１８０６（ＭＣ２）を使って共有メモリへの書き込みに使用するデータ転送経路を示す。この場合、共有メモリへの書き込みデータを格納したパケットは、非透過性ブリッジ２４０２（ＮＴ５）、２６０２（ＮＴ６）で方向転換せずに通過する必要がある。そのため、非透過性ブリッジ２４０２（ＮＴ５）、２６０２（ＮＴ６）は、図２５の非透過性ブリッジ２２０９と同様に複数のアドレスウィンドウを備える。そして、プロセッサ１１２（ＭＰ１）が、２個のスイッチのどちらのマルチキャスト機能を使うか（送信するパケットを方向転換させるか否か）の判断により、送信先のアドレスウィンドウを選択する。
【０１３３】
共有メモリへの書き込みに際し、プロセッサ１１２（ＭＰ１）は、書き込みデータを格納したパケットを非透過性ブリッジ２４０２（ＮＴ５）の方向転換用ではないアドレスウィンドウへ送信する（符号４１０１）。非透過性ブリッジ２４０２（ＮＴ５）は、受信したパケットをマルチキャスト機能１８０６（ＭＣ２）へ送信する。そして、マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２７０２、符号２７０３）。
【０１３４】
図３１は、プロセッサ１２２（ＭＰ２）がスイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）を使って共有メモリへの書き込みに使用するデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１２２（ＭＰ２）は、書き込みデータを格納したパケットを非透過性ブリッジ２６０２（ＮＴ６）の方向転換用ではないアドレスウィンドウへ送信する（符号４２０１）。非透過性ブリッジ２６０２（ＮＴ６）は、受信したパケットをマルチキャスト機能１０６（ＭＣ１）へ送信する。そして、マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）と１２５（ＳＭ２）へ送信する（符号２６０４、符号２６０５）。
【０１３５】
図３２は、実施例５のストレージ装置において、プロセッサ１１２（ＭＰ１）からマルチキャスト機能１０６（ＭＣ１）へのパケット送信と、プロセッサ１２２（ＭＰ２）からマルチキャスト機能１８０６（ＭＣ２）へのパケット送信が同時に発生した場合を示す。このように２通りのパケット転送経路（符号２６０３、符号２７０３）を合成するとループ状になる場合、ＮＴリンク２６０１上でデッドロックが発生する可能性がある。デッドロック防止のため、ＮＴリンク２６０１は、２個の仮想チャネル（ＶＣ０とＶＣ１）を備える。
【０１３６】
非透過性ブリッジ２６０２（ＮＴ６）から非透過性ブリッジ２４０２（ＮＴ５）へのパケット送信では、ＮＴリンク２６０１上で仮想チャネルＶＣ０を使ってパケットを転送する。非透過性ブリッジ２４０２（ＮＴ５）から非透過性ブリッジ２６０２（ＮＴ６）へのパケット送信では、ＮＴリンク２６０１上で仮想チャネルＶＣ１を使ってパケットを転送する。これにより、２方向のパケットのデータ転送は論理的には独立したデータ転送になるので、デッドロックを回避することができる。
＜実施例６＞
【０１３７】
以下、図３３から図３８を参照して、実施例６に係るストレージ装置を説明する。
【０１３８】
図３３は、パケット方向転換手段の構成例を示す。パケット方向転換手段２９００は、非透過性ブリッジ２９０３とスイッチ２９１０で構成される。また、パケット方向転換手段２９００は、２個のアップストリームポート２９０１と２９０２を備える。
【０１３９】
非透過性ブリッジ２９０３は、内部にエンドポイント２９０８と２９０９を備える。スイッチ２９１０は、内部に透過性ブリッジ２９０４と２９０５を備える。透過性ブリッジ２９０４と２９０５は、内部バス２９０７で接続されている。エンドポイント２９０９と透過性ブリッジ２９０４は、内部バス２９０６で接続されている。
【０１４０】
パケット方向転換手段２９００の動作は、図２５で説明した非透過性ブリッジ２２０９とスイッチ２３０４の組み合わせによるパケット方向転換手段の動作と同様である。つまり、アップストリームポート２９０１からエンドポイント２９０８の方向転換用アドレスウィンドウに入力したパケットは、スイッチ２９１０を介して方向転換されて、アップストリームポート２９０１から出力される。また、アップストリームポート２９０１からエンドポイント２９０８の方向転換用ではないアドレスウィンドウに入力したパケットは、方向転換されずに、アップストリームポート２９０２から出力される。
【０１４１】
図３４は、図３のパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を、パケット方向転換手段２９００で置換したストレージ装置の構成例を示す。パケット方向転換手段２９００のアップストリームポート２９０２は、スイッチ１１６（ＳＷ１）のポート３００１と接続されている。この接続は、データ転送経路として使用する他、パケット方向転換手段２９００内のスイッチ２９１０およびエンドポイント２９０９を設定するためにも使用される。
【０１４２】
更に、図３４は、プロセッサ１１２（ＭＰ１）からパケット方向転換手段２９００とマルチキャスト機能１０６（ＭＣ１）を使った共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みのデータ転送経路を示す。プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段２９００内エンドポイント２９０８の方向転換用アドレスウィンドウへ送信する（符号３００２）。パケット方向転換手段２９００は、受信したパケットを、マルチキャスト機能１０６（ＭＣ１）へ送信する（符号３００３）。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製し、共有メモリ１１５（ＳＭ１）と共有メモリ１２５（ＳＭ２）へ送信する（符号３０５、符号３０６）。
【０１４３】
プロセッサ１２２（ＭＰ２）からパケット方向転換手段２９００とマルチキャスト機能１０６（ＭＣ１）を使った共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みは、図４と同様である。
【０１４４】
図３５は、プロセッサ１１２（ＭＰ１）からパケット方向転換手段２９００とマルチキャスト機能１０６（ＭＣ１）を使った共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みのデータ転送経路の別の例を示す。プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段２９００内エンドポイント２９０８の、方向転換用でないアドレスウィンドウへ送信する（符号３１０１）。
【０１４５】
パケット方向転換手段２９００は、受信したパケットを、スイッチ１１６（ＳＷ１）のポート３００１を介して、マルチキャスト機能１０６（ＭＣ１）へ送信する（符号３１０２）。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製し、共有メモリ１１５（ＳＭ１）と共有メモリ１２５（ＳＭ２）へ送信する（符号３０５、符号３０６）。
【０１４６】
図３６は、プロセッサ１１２（ＭＰ１）からパケット方向転換手段２９００とマルチキャスト機能１０６（ＭＣ１）を使った共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）への書き込みのデータ転送経路の、さらに別の例を示す。パケット方向転換手段２９００は、アップストリームポート２９０２から入力したパケットに対して、その送信先アドレスをスイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）のマルチキャストアドレスへ変換する。プロセッサ１１２（ＭＰ１）は、共有メモリへの書き込みデータを格納したパケットを、パケット方向転換手段２９００のアップストリームポート２９０２へ、スイッチ１１６（ＳＷ１）のポート３００１を介して送信する（符号３２０１）。
【０１４７】
パケット方向転換手段２９００は、受信したパケットを、パケット方向転換手段２９００のアップストリームポート２９０１を介して、マルチキャスト機能１０６（ＭＣ１）へ送信する（３２０２）。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製し、共有メモリ１１５（ＳＭ１）と共有メモリ１２５（ＳＭ２）へ送信する（符号３０５、符号３０６）。
【０１４８】
図３７は、図３４から図３６の構成に対して、パケット方向転換手段２９００と同じ機能を備えるパケット方向転換手段３３００を、スイッチ１２６（ＳＷ２）に接続した、ストレージ装置の構成例を示す。図３７の構成のストレージ装置は、実施例２の図１８で説明したストレージ装置と同様に、２個のマルチキャスト機能１０６（ＭＣ１）と１８０６（ＭＣ２）間で、共有メモリに対する書き込み処理の負荷を分散させることができる。
【０１４９】
図３８は、図３７の構成に対して、スイッチ１１６（ＳＷ１）は非透過性ブリッジ２１０２（ＮＴ３）を備え、スイッチ１２６（ＳＷ２）は非透過性ブリッジ２１０３（ＮＴ４）を備え、さらに非透過性ブリッジ２１０２（ＮＴ３）と非透過性ブリッジ２１０３（ＮＴ４）をＮＴリンク２１０１で接続した、ストレージ装置の構成例を示す。
【０１５０】
図３８の構成のストレージ装置は、実施例３の図２３で説明したストレージ装置と同様に、ＮＴリンク１０５を、共有メモリへの書き込みデータ（制御情報）を格納したパケットのデータ転送専用に使う。そして、ＮＴリンク２１０１を、キャッシュメモリへ書き込むユーザデータを格納したパケットのデータ転送専用に使う。これにより、制御情報のデータ転送が、ユーザデータのキャッシュメモリへのデータ転送完了を待つ必要がなくなり、共有メモリへの書き込み時間を短縮させることができる。
＜実施例７＞
【０１５１】
以下、図３９及び図４０を参照して、実施例７に係るストレージ装置を説明する。実施例７は、マルチキャスト機能とパケット方向転換手段との間で、共有メモリへの書き込みデータを格納したパケットが通過する順が、他の実施例とは異なる。図３９は、プロセッサ１１２（ＭＰ１）が、スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）と、スイッチ１１６（ＳＷ１）に接続されたパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を使って、共有メモリへの書き込みを行う場合のデータ転送経路を示す。
【０１５２】
共有メモリへの書き込みに際し、プロセッサ１１２（ＭＰ１）は、書き込みデータを格納したパケットを、マルチキャスト機能１０６（ＭＣ１）のマルチキャストグループのアドレスへ送信する（符号３５０１）。スイッチ１１６（ＳＷ１）は、パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）と、非透過性ブリッジ１１７（ＮＴ１）が、同じマルチキャストグループに設定される。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製し、一つはパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）へ送信し（符号３５０２）、もう一つはＮＴリンク１０５を介して共有メモリ１２５（ＳＭ２）へ送信する（符号３５０３）。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）へ送信する（符号３５０４）。
【０１５３】
プロセッサ１２２（ＭＰ２）が、マルチキャスト機能１８０６（ＭＣ２）を使って共有メモリへ書き込む場合のデータ転送経路も、図示していないが、図３９と同様である。つまり、共有メモリへの書き込みに際し、プロセッサ１２２（ＭＰ２）は、書き込みデータを格納したパケットを、マルチキャスト機能１８０６（ＭＣ２）のマルチキャストグループのアドレスへ送信する。スイッチ１２６（ＳＷ２）は、パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）と、非透過性ブリッジ１２７（ＮＴ２）が、同じマルチキャストグループに設定される。マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを複製し、一つはパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）へ送信し、もう一つはＮＴリンク１０５を介して共有メモリ１１５（ＳＭ１）へ送信する。パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、受信したパケットを、共有メモリ１２５（ＳＭ２）へ送信する。
【０１５４】
図４０は、プロセッサ１２２（ＭＰ２）が、スイッチ１１６（ＳＷ１）のマルチキャスト機能１０６（ＭＣ１）と、スイッチ１１６（ＳＷ１）に接続されたパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）を使って、共有メモリへの書き込みを行う場合のデータ転送経路を示す。共有メモリへの書き込みに際し、プロセッサ１２２（ＭＰ２）は、書き込みデータを格納したパケットを、ＮＴリンク２１０１を介してマルチキャスト機能１０６（ＭＣ１）のマルチキャストグループのアドレスへ送信する（符号４３０１）。マルチキャスト機能１０６（ＭＣ１）は、受信したパケットを複製し、一つはパケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）へ送信し（符号３５０２）、もう一つはＮＴリンク１０５を介して共有メモリ１２５（ＳＭ２）へ送信する（符号３５０３）。パケット方向転換手段１０７（Ｒｅｄｉｒｅｃｔｏｒ１）は、受信したパケットを、共有メモリ１１５（ＳＭ１）へ送信する（符号３５０４）。
【０１５５】
プロセッサ１１２（ＭＰ１）が、マルチキャスト機能１８０６（ＭＣ２）を使って共有メモリへ書き込む場合のデータ転送経路は図示していないが、図４０と同様の動作で転送が可能である。つまり、共有メモリへの書き込みに際し、プロセッサ１１２（ＭＰ１）は、書き込みデータを格納したパケットを、ＮＴリンク２１０１を介してマルチキャスト機能１８０６（ＭＣ２）のマルチキャストグループのアドレスへ送信する。マルチキャスト機能１８０６（ＭＣ２）は、受信したパケットを複製し、一つはパケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）へ送信し、もう一つはＮＴリンク１０５を介して共有メモリ１１５（ＳＭ１）へ送信する。パケット方向転換手段１８０７（Ｒｅｄｉｒｅｃｔｏｒ２）は、受信したパケットを、共有メモリ１２５（ＳＭ２）へ送信する。このように、マルチキャスト機能を先に、パケット方向転換手段を後に、パケットを通過させた場合でも、順序を一致させて２個の共有メモリへ書き込むことができる。
【０１５６】
＜実施例８＞
以下、図４１から図４３を参照して、実施例８に係るストレージ装置を説明する。図４１は、２個のクラスタ１１１（Ｃｌｕｓｔｅｒ１）、１２１（Ｃｌｕｓｔｅｒ２）の連携動作の一例を示す。上位装置３８０１は、ストレージ装置１００内の２個の論理ボリューム３８０２（ＬＵ１）と３８０３（ＬＵ２）にアクセスしている。ストレージ装置１００は、２個のクラスタ間でＩ／Ｏ処理に関する負荷を分散している。例えば、論理ボリューム３８０２（ＬＵ１）に関するＩ／Ｏ処理は、クラスタ１１１（Ｃｌｕｓｔｅｒ１）内のプロセッサ１１２（ＭＰ１）が行い（符号３８０４）、論理ボリューム３８０３（ＬＵ２）に関するＩ／Ｏ処理は、クラスタ１２１（Ｃｌｕｓｔｅｒ２）内のプロセッサ１２２（ＭＰ２）が行う（符号３８０５）。
【０１５７】
プロセッサ１１２（ＭＰ１）は、Ｉ／Ｏ処理に伴い、共有メモリ１１５（ＳＭ１）内の制御情報３８０６を参照し、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）内の制御情報３８０６、３８０７を更新する。プロセッサ１２２（ＭＰ２）は、Ｉ／Ｏ処理に伴い、共有メモリ１２５（ＳＭ２）内の制御情報３８０７を参照し、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）内の制御情報３８０６、３８０７を更新する。
【０１５８】
図４２は、２個のクラスタ１１１（Ｃｌｕｓｔｅｒ１）、１２１（Ｃｌｕｓｔｅｒ１）の連携動作の別の例を示す。上位装置３９０１は、ストレージ装置１００内の論理ボリューム３８０２（ＬＵ１）に、フロントエンドインターフェース１１８（ＦＥＩＦ１）とフロントエンドインターフェース１２８（ＦＥＩＦ２）を介してアクセスしている。クラスタ１１１（Ｃｌｕｓｔｅｒ１）とクラスタ１２１（Ｃｌｕｓｔｅｒ２）は、両方とも論理ボリューム３８０２（ＬＵ１）に対するＩ／Ｏ処理（符号３８０４、符号３９０２）を行う。
【０１５９】
図４１の場合と同様に、プロセッサ１１２（ＭＰ１）は、Ｉ／Ｏ処理に伴い、共有メモリ１１５（ＳＭ１）内の制御情報３８０６を参照し、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）内の制御情報３８０６、３８０７を更新する。プロセッサ１２２（ＭＰ２）は、Ｉ／Ｏ処理に伴い、共有メモリ１２５（ＳＭ２）内の制御情報３８０７を参照し、共有メモリ１１５（ＳＭ１）、１２５（ＳＭ２）内の制御情報３８０６、３８０７を更新する。
【０１６０】
図４３は、２個のクラスタのそれぞれにおけるバックアップ動作を示す。クラスタ１１１（Ｃｌｕｓｔｅｒ１）において、プロセッサ１１２（ＭＰ１）がバックアッププログラム４００３を実行し、リモートサイト４００１へ、バックアップ処理を行っている。クラスタ１２１（Ｃｌｕｓｔｅｒ２）においても同様に、プロセッサ１２２（ＭＰ２）がバックアッププログラム４００４を実行し、リモートサイト４００２へ、バックアップ処理を行っている。これらバックアップ処理の対象には、共有メモリ１１５と１２５（ＳＭ１、ＳＭ２）に格納されている制御情報も含まれる。
【０１６１】
実施例８のストレージ装置１００は、２個のクラスタが図４１または図４２のように、連携して動作し、共有メモリ内の制御情報を頻繁に更新する。しかしながら、本発明の効果により、制御情報３８０６と３８０７の内容は、データの書き込み順序まで含めて一致させることができる。その結果、クラスタ１１１（Ｃｌｕｓｔｅｒ１）とクラスタ１２１（Ｃｌｕｓｔｅｒ２）が、それぞれリモートサイト４００１とリモートサイト４００２に作成するバックアップデータは、制御情報の書き込み順序を含めて一致させることができる。
【０１６２】
以上説明したように、本発明のストレージ装置では、２個のプロセッサの各主記憶に格納された２個の共有メモリの内容を、書込み順序を含めて、一致させることができる。さらに、共有メモリからプロセッサへの読み出しにおいては、各プロセッサが近接した主記憶へ直接アクセスし共有メモリのデータを読み出せるので、アクセス時間を短縮することができる。
【０１６３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発
明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可
能であることは言うまでもない。
【産業上の利用可能性】
【０１６４】
本発明は、ストレージコントローラ内部ネットワークにPCI Expressを適用したストレージ装置のみならず、二重化共有メモリを備える大型コンピュータ、汎用コンピュータ、サーバなどの情報処理装置や計算機システムなどに対しても広く適用が可能である。
【符号の説明】
【０１６５】
１００  ストレージ装置
１０１  ストレージコントローラ
１０２  ディスクアレイ
１０３、１０４  上位装置（Ｈｏｓｔ）
１０６  マルチキャスト機能
１０７  パケット方向転換手段（Ｒｅｄｉｒｅｃｔｏｒ）
１１１、１２１  クラスタ
１１２、１２２  プロセッサ
１１３、１２３  主記憶（ＭＥＭ１、ＭＥＭ２）
１１４、１２４  キャッシュメモリ（ＣＭ１、ＣＭ２）
１１５、１２５  共有メモリ（ＳＭ１、ＳＭ２）
１１６、１２６  スイッチ（PCI  Expressスイッチ）
１１７、１２７  非透過性ブリッジ
１１８、１２８  フロントエンドインターフェース
１１９、１２９  バックエンドインターフェース
１０５  ＮＴ(Non  Transparent)リンク
２００  スイッチ
２０１  アップストリームポート
２０２、２０３  ダウンストリームポート
２０４、２０５、２０６  透過性ブリッジ
２０７  仮想ＰＣＩバス
２０８  ＰＣＩアドレス空間
２０９、２１０、２１１  通過アドレス範囲
２１２、２１３、２１４  マルチキャストアドレス
３０１  アップストリームポート
３０２、３０７  ポート
６００、１００１、１９００  共有メモリ管理テーブル
６０１  共有メモリアドレス
６０２  書き込み未完了フラグ
６０３、６０４  書き込み未完了フラグ状態  
１８０１  アップストリームポート
１８０６  マルチキャスト機能
１８０７、２９００  パケット方向転換手段
２１０１  ＮＴリンク
２１０２、２１０３  非透過性ブリッジ
２２０９、２４０２、２６０２、２９０３非透過性ブリッジ
２９０４、２９０５  透過性ブリッジ
２２１０、２２１１  エンドポイント
２２０１、２２０２  ＰＣＩアドレス空間
２２０５、２２０６、２２０７、２２０８、２３０７、２３０８  アドレスウィンドウ
２２０３、２２０４、２３０１、２３０２、２３０３  パケット
２３０４、２９１０  スイッチ
２３０６、３００１  ポート
２４０１、２６０１  リンク
２９０１、２９０２  アップストリームポート
２９０７  内部バス
２９０８、２９０９  エンドポイント
３８０１、３９０１  上位装置
３８０２、３８０３  論理ボリューム
３８０６、３８０７  制御情報
４００１、４００２  リモートサイト
４００３、４００４  バックアッププログラム
【図１】
0005833756.tif 000002
【図２】
0005833756.tif 000003
【図３】
0005833756.tif 000004
【図４】
0005833756.tif 000005
【図５】
0005833756.tif 000006
【図６】
0005833756.tif 000007
【図７】
0005833756.tif 000008
【図８】
0005833756.tif 000009
【図９】
0005833756.tif 000010
【図１０】
0005833756.tif 000011
【図１１】
0005833756.tif 000012
【図１２】
0005833756.tif 000013
【図１３】
0005833756.tif 000014
【図１４】
0005833756.tif 000015
【図１５】
0005833756.tif 000016
【図１６】
0005833756.tif 000017
【図１７】
0005833756.tif 000018
【図１８】
0005833756.tif 000019
【図１９】
0005833756.tif 000020
【図２０】
0005833756.tif 000021
【図２１】
0005833756.tif 000022
【図２２】
0005833756.tif 000023
【図２３】
0005833756.tif 000024
【図２４】
0005833756.tif 000025
【図２５】
0005833756.tif 000026
【図２６】
0005833756.tif 000027
【図２７】
0005833756.tif 000028
【図２８】
0005833756.tif 000029
【図２９】
0005833756.tif 000030
【図３０】
0005833756.tif 000031
【図３１】
0005833756.tif 000032
【図３２】
0005833756.tif 000033
【図３３】
0005833756.tif 000034
【図３４】
0005833756.tif 000035
【図３５】
0005833756.tif 000036
【図３６】
0005833756.tif 000037
【図３７】
0005833756.tif 000038
【図３８】
0005833756.tif 000039
【図３９】
0005833756.tif 000040
【図４０】
0005833756.tif 000041
【図４１】
0005833756.tif 000042
【図４２】
0005833756.tif 000043
【図４３】
0005833756.tif 000044