(57)【要約】【課題】耐障害性に優れたストレージシステムを提供する。【解決手段】ストレージシステム１００は、二重化されたコントローラ１０，２０を備える。コントローラ１０は、ストレージデバイス５１に読み書きされるデータと、ストレージデバイス５１へのデータの読み書きに関する制御情報とを格納するメモリ１７を有する。コントローラ２０は、ストレージデバイス５１に読み書きされるデータとストレージデバイス５１へのデータの読み書きに関する制御情報とを格納するメモリ２７を有する。メモリ１７は、コントローラ２０からアクセス可能に構成されている。メモリ２７は、コントローラ１０からアクセス可能に構成されている。【選択図】図１
2008097527.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機からの要求に応じてストレージデバイスへのデータの読み書き制御する第一及び第二のコントローラを備えるストレージシステムであって、
前記第一のコントローラは、前記ストレージデバイスに読み書きされるデータと、前記ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第一のメモリを有し、
前記第二のコントローラは、前記ストレージデバイスに読み書きされるデータと、前記ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第二のメモリを有し、
前記第一のメモリは、前記第二のコントローラからアクセス可能に構成され、
前記第二のメモリは、前記第一のコントローラからアクセス可能に構成されている、ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記第一及び第二のメモリのそれぞれは、デイジーチェーン接続されてなる複数のＤＩＭＭを備える、ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記第一のメモリは、前記第一のコントローラの障害発生の有無に応じて、前記第一のコントローラ又は前記第二のコントローラの中から前記第一のメモリにアクセスできるコントローラを選択する第一のセレクタを有し、
前記第二のメモリは、前記第二のコントローラの障害発生の有無に応じて、前記第一のコントローラ又は前記第二のコントローラの中から前記第二のメモリにアクセスできるコントローラを選択する第二のセレクタを有する、ストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記第一のコントローラは、前記第一のコントローラ内の複数の第一の周辺デバイス間のデータ転送を制御する第一のデータコントローラを有し、
前記第一のデータコントローラは、前記複数の第一の周辺デバイスと前記第一のデータコントローラとの間のインタフェースを制御する複数の第一の論理ブロックを有し、
前記複数の第一の論理ブロックのそれぞれは、隣接する第一の論理ブロック同士がポイント・ツー・ポイント接続されることにより、データ転送用の第一のリングパスを形成しており、
前記第二のコントローラは、前記第二のコントローラ内の複数の第二の周辺デバイス間のデータ転送を制御する第二のデータコントローラを有し、
前記第二のデータコントローラは、前記複数の第二の周辺デバイスと前記第二のデータコントローラとの間のインタフェースを制御する複数の第二の論理ブロックを有し、
前記複数の第二の論理ブロックのそれぞれは、隣接する第二の論理ブロック同士がポイント・ツー・ポイント接続されることにより、データ転送用の第二のリングパスを形成している、ストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記第一のデータコントローラは、前記第一のリングパスをショートカットする第一のパスを有し、
前記第二のデータコントローラは、前記第二のリングパスをショートカットする第二のパスを有する、ストレージシステム。
【請求項６】
請求項４に記載のストレージシステムであって、
前記第一のデータコントローラは、データ転送方向が相互に異なる複数の第一のリングパスを有し、
前記第二のデータコントローラは、データ転送方向が相互に異なる複数の第二のリングパスを有する、ストレージシステム。
【請求項７】
請求項１に記載のストレージシステムであって、
前記第一のコントローラは、前記ホスト計算機からの要求に応答して前記ストレージデバイスへのデータの読み書きを制御する第一のＣＰＵとその周辺デバイスを第一のモジュールに実装してなる構成を有しており、前記第一のコントローラ障害時には、前記第一のモジュールを取り外した状態で、前記第二のコントローラから前記第一のメモリへのアクセスを可能とし、
前記第二のコントローラは、前記ホスト計算機からの要求に応答して前記ストレージデバイスへのデータの読み書きを制御する第二のＣＰＵとその周辺デバイスを第二のモジュールに実装してなる構成を有しており、前記第二のコントローラ障害時には、前記第二のモジュールを取り外した状態で、前記第一のコントローラから前記第二のメモリへのアクセスを可能とする、ストレージシステム。
【請求項８】
請求項１に記載のストレージシステムであって、
前記第一のコントローラは、前記ホスト計算機からの要求に応答して前記ストレージデバイスへのデータの読み書きを制御する第一のＣＰＵと、前記第一のコントローラ内の複数の第一の周辺デバイス間のデータ転送を制御する第一のデータコントローラを有し、
前記第一のデータコントローラは、前記第一のＣＰＵから前記第一のデータコントローラに転送されるデータがデータ化けしているか否かをチェックする第一のチェック回路を有し、
前記第二のコントローラは、前記ホスト計算機からの要求に応答して前記ストレージデバイスへのデータの読み書きを制御する第二のＣＰＵと、前記第二のコントローラ内の複数の第二の周辺デバイス間のデータ転送を制御する第二のデータコントローラを有し、
前記第二のデータコントローラは、前記第二のＣＰＵから前記第二のデータコントローラに転送されるデータがデータ化けしているか否かをチェックする第二のチェック回路を有する、ストレージシステム。
【請求項９】
ホスト計算機からの要求に応じてストレージデバイスへのデータの読み書き制御する第一のコントローラであって、前記ストレージデバイスに読み書きされるデータと、前記ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第一のメモリを有する第一のコントローラと、
前記ホスト計算機からの要求に応じて前記ストレージデバイスへのデータの読み書き制御する第二のコントローラであって、前記ストレージデバイスに読み書きされるデータと、前記ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第二のメモリを有する第二のコントローラと、
を有するストレージシステムの制御方法であって、
前記第一のコントローラの障害発生を検出するステップと、
前記第二のコントローラが前記第一のメモリにアクセスし、前記第一のコントローラが処理していたタスクを替わりに処理するステップと、
を備えるストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はホスト計算機からの要求に応答してストレージデバイスへのデータの読み書きを制御するストレージシステム及びその制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータシステムで扱われるデータ量が急激に増加している。このようなデータを管理するためのストレージシステムとして、最近では、ミッドレンジクラスやエンタープライズクラスと呼ばれるような巨大な記憶資源を提供するＲＡＩＤ（Redundant Arrays of Inexpensive Disks）方式で管理された大規模なストレージシステムが注目されている。
【０００３】
このような大規模なストレージシステムでは、ホスト計算機からの要求に応答してストレージデバイスへの読み書きを制御するディスクアレイコントローラにおけるデータ転送速度の高速化が必要不可欠である。例えば、特開２００５−１５７５７６号公報には、データの種別に応じてセレクタが優先的なパス切り替えを行うデータ処理装置が提案されている。
【０００４】
またこのような大規模なストレージシステムでは、ストレージデバイスに読み書きされるデータを一時的に格納するキャッシュメモリへのアクセス集中を抑制し、性能低下を回避することが求められる。例えば、特開２００４−１１０５０３号公報には、ストレージシステムとホスト計算機との間の通信を制御する二つのチャネル制御部のそれぞれにキャッシュメモリを搭載し、それぞれのチャネル制御部内のキャッシュメモリを専用のデータ転送路で接続するストレージシステムが提案されている。
【特許文献１】特開２００５−１５７５７６号公報
【特許文献２】特開２００４−１１０５０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来のストレージシステムには、以下のような問題がある。
【０００６】
第一に、コントローラ内のローカルメモリの制御情報を他のコントローラからもアクセスできるように共有化するためには、それぞれのコントローラが正常に機能していることが前提であり、仮に何れかのコントローラに障害が発生すると、制御情報の共有化を実現することはできない。
【０００７】
また、制御情報の共有化といっても、従来では、共有化しているのは、制御情報の一部に過ぎない。制御情報の全てを共有化することができれば、共有している情報が増えることから更に複雑な動作が可能で、その結果、従来のシステムより高機能のストレージシステムを提供できる。そこで、制御情報をキャッシュメモリ内で完全に共有化する技術が考えられる。
【０００８】
しかし、制御情報を異なるシステム間で完全に共有化しようとすると、従来、共有化されていなかった情報分のメモリ容量が必要であり、このような大容量の制御情報を保存するための大容量のキャッシュメモリが必要になるだけでなく、従来のシステムで共有化を実現するための他系コントローラ間パスにおけるＤＭＡ転送において転送容量が増大してしまうので、システム性能が低下してしまうという問題がある。
【０００９】
また、従来、ローカルメモリに保存していた制御情報をキャッシュメモリに保存するとなると、ＣＰＵとキャッシュメモリとの間の物理的距離が長くなることに加え、データコントローラのレイテンシによって、ＣＰＵとキャッシュメモリとの間のデータ送信に時間を費やしてしまうという問題も生じる。
【００１０】
第二に、コントローラの高速化に関して、現在はＬＳＩの製造プロセスの微細化によって、ゲート遅延に比べ、配線遅延の影響がより大きくなっている。また、ＬＳＩの高機能化、大規模化によって内部ブロックが増加し、その内部ブロック間を内部バスで接続する場合には、ファンアウト数と配線長も同様に増加してしまう。以上の理由に律束されて、ＬＳＩの動作速度を上げるにも限界があり、更に実装レイアウトも困難になってしまうという問題がある。特開２００５−１５７５７６号公報では、内部のセレクタ間のデータパスにおける配線制約に触れていないため、これらの問題点を根本的に解決する技術とは言えない。
【００１１】
第三に、システムの信頼性に関して、ＣＰＵユニットにデータ保護機能のあるシステムにおいては、ＣＰＵユニットで障害が発生した場合でも、障害発生をコントローラへ通知し、コントローラが誤動作しないようにその動作を停止することで、システムの信頼性を確保できる。
【００１２】
しかし、この方式では、ＬＳＩ内部にパリティ等のデータ保護機能用に配線を追加する必要や、データ正当性の検証のために処理が複雑になるというデメリットもある。かかる事情に鑑み、現状のストレージシステムでは、データ保護をもたないものも存在する。このようなストレージシステムにおいて、障害が発生すると、コントローラに誤ったデータを書き込んでしまい、それによって、キャッシュメモリやストレージデバイス等の予期しない記憶領域に書き込みが発生してしまう。更に、このエラーが他系のコントローラにも伝播してしまい、高信頼化のために冗長化しているコントローラをも誤作動させ、ストレージシステム全体に重大な障害を発生させてしまうという問題がある。
【００１３】
そこで、本発明はこのような問題を解決し、高機能で耐障害性に優れたストレージシステム及びその制御方法を提供することを課題とする。
【課題を解決するための手段】
【００１４】
上記の課題を解決するため、本発明に係わるストレージシステムは、ホスト計算機からの要求に応じてストレージデバイスへのデータの読み書き制御する第一及び第二のコントローラを備える。第一のコントローラは、ストレージデバイスに読み書きされるデータとストレージデバイスへのデータの読み書きに関する制御情報とを格納する第一のメモリを有する。第二のコントローラは、ストレージデバイスに読み書きされるデータと、ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第二のメモリを有する。第一のメモリは、第二のコントローラからアクセス可能に構成される。第二のメモリは、第一のコントローラからアクセス可能に構成される。
【００１５】
かかる構成により、仮に第一のコントローラに障害が発生すると、第二のコントローラは、第一のメモリにアクセスし、第一のコントローラが処理していたタスクを替わりに処理できるので、耐障害性を向上できる。また、従来では、制御情報を複数のコントローラ間で共有するため、制御情報の一部をキャッシュメモリに格納していたが、本発明によればその必要がなくなり、メモリ容量を有効に利用できる。
【００１６】
第一及び第二のメモリのそれぞれは、デイジーチェーン接続されてなる複数のＤＩＭＭを備える。
【００１７】
かかる構成により、他系コントローラからのメモリアクセスを可能にできる。
【００１８】
第一のメモリは、第一のコントローラの障害発生の有無に応じて第一のコントローラ又は第二のコントローラの中から第一のメモリにアクセスできるコントローラを選択する第一のセレクタを有し、第二のメモリは、第二のコントローラの障害発生の有無に応じて第一のコントローラ又は第二のコントローラの中から第二のメモリにアクセスできるコントローラを選択する第二のセレクタを有する。
【００１９】
かかる構成により、仮に第一のコントローラに障害が発生すると、第二のコントローラは、第一のセレクタを介して第一のメモリにアクセスできるので耐障害性を向上できる。
【００２０】
第一のコントローラは、第一のコントローラ内の複数の第一の周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）間のデータ転送を制御する第一のデータコントローラを有する。第一のデータコントローラは、複数の第一の周辺デバイスと第一のデータコントローラとの間のインタフェースを制御する複数の第一の論理ブロックを有する。複数の第一の論理ブロックのそれぞれは、隣接する第一の論理ブロック同士がポイント・ツー・ポイント接続されることにより、データ転送用の第一のリングパスを形成する。
【００２１】
第二のコントローラは、第二のコントローラ内の複数の第二の周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）間のデータ転送を制御する第二のデータコントローラを有する。第二のデータコントローラは、複数の第二の周辺デバイスと第二のデータコントローラとの間のインタフェースを制御する複数の第二の論理ブロックを有する。複数の第二の論理ブロックのそれぞれは、隣接する第二の論理ブロック同士がポイント・ツー・ポイント接続されることにより、データ転送用の第二のリングパスを形成する。
【００２２】
データ転送元の論理ブロックとデータ転送先の論理ブロックとを直接接続すると、配線遅延の影響が大きく現れてしまい、動作周波数の高速化が律速されてしまう。これに対し本発明によれば、論理ブロック間をポイント・ツー・ポイント接続することで、論理ブロック間は物理的に短距離で接続されるので、高速な内部動作周波数でも配線遅延の影響を最小限度に抑制することが可能となり、高速なデータ転送を行うことができる。それ故、全体の転送距離が長くても、データ転送に要する全体の時間を短縮できる。
【００２３】
第一のデータコントローラは、第一のリングパスをショートカットする第一のパスを有する。第二のデータコントローラは、第二のリングパスをショートカットする第二のパスを有する。
【００２４】
かかる構成により、リングパスの負荷が大きい場合には、リングパスをショートカットすることによって、データ転送効率を向上できる。
【００２５】
第一のデータコントローラは、データ転送方向が相互に異なる複数の第一のリングパスを有する。第二のデータコントローラは、データ転送方向が相互に異なる複数の第二のリングパスを有する。
【００２６】
かかる構成により、例えば、右回りのリングパスが占有されている場合には、左回りのリングパスを使用することにより、データ転送効率を向上できる。また、例えば、転送元論理ブロックから転送先論理ブロックへデータを転送するときに、左回りのリングパスで転送するよりも右回りのリングパスを使用した方が、パス長が短い場合には、データ転送時にリングパスの占有権の確保と同時に、転送元論理ブロックと転送先論理ブロックとの位置関係を解析して、効率的に転送できるリングパスを選択することも可能である。
【００２７】
第一のコントローラは、ホスト計算機からの要求に応答してストレージデバイスへのデータの読み書きを制御する第一のＣＰＵとその周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）を第一のモジュールに実装してなる構成を有している。第一のコントローラ障害時には、第一のモジュールを取り外した状態で、第二のコントローラから第一のメモリへのアクセスを可能とする。
【００２８】
第二のコントローラは、ホスト計算機からの要求に応答してストレージデバイスへのデータの読み書きを制御する第二のＣＰＵとその周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）を第二のモジュールに実装してなる構成を有している。第二のコントローラ障害時には、第二のモジュールを取り外した状態で、第一のコントローラから第二のメモリへのアクセスを可能とする。
【００２９】
かかる構成により、仮に第一のコントローラに障害が発生すると、第一のコントローラ内の第一のモジュールを取り外した状態で、第二のコントローラは、第一のメモリにアクセスし、第一のコントローラが処理していたタスクを替わりに処理できるので、ストレージシステムの保守管理が容易となる。
【００３０】
第一のコントローラは、ホスト計算機からの要求に応答してストレージデバイスへのデータの読み書きを制御する第一のＣＰＵと、第一のコントローラ内の複数の第一の周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）間のデータ転送を制御する第一のデータコントローラを有する。第一のデータコントローラは、第一のＣＰＵから第一のデータコントローラに転送されるデータがデータ化けしているか否かをチェックする第一のチェック回路を有する。
【００３１】
第二のコントローラは、ホスト計算機からの要求に応答してストレージデバイスへのデータの読み書きを制御する第二のＣＰＵと、第二のコントローラ内の複数の第二の周辺デバイス（例えば、ＣＰＵ、ブリッジ、メモリ、ホストインタフェースコントローラ、ドライブインタフェースコントローラなど）間のデータ転送を制御する第二のデータコントローラを有する。第二のデータコントローラは、第二のＣＰＵから第二のデータコントローラに転送されるデータがデータ化けしているか否かをチェックする第二のチェック回路を有する。
【００３２】
かかる構成により、ＣＰＵからデータコントローラへ転送されるデータがデータ化けしているか否かをデータコントローラがチェックするので、ストレージシステムの信頼性を高めることができる。
【００３３】
本発明に係わるストレージシステムの制御方法は、ホスト計算機からの要求に応じてストレージデバイスへのデータの読み書き制御する第一のコントローラであって、ストレージデバイスに読み書きされるデータと、ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第一のメモリを有する第一のコントローラと、ホスト計算機からの要求に応じてストレージデバイスへのデータの読み書き制御する第二のコントローラであって、ストレージデバイスに読み書きされるデータと、ストレージデバイスへのデータの読み書きに関する制御情報とを格納する第二のメモリを有する第二のコントローラと、を有するストレージシステムの制御方法であって、第一のコントローラの障害発生を検出するステップと、第二のコントローラが第一のメモリにアクセスし、第一のコントローラが処理していたタスクを替わりに処理するステップと、を備える。
【００３４】
かかる方法により、仮に第一のコントローラに障害が発生すると、第二のコントローラは、第一のメモリにアクセスし、第一のコントローラが処理していたタスクを替わりに処理できるので、耐障害性を向上できる。
【発明の効果】
【００３５】
本発明によれば、ストレージシステムの高機能化及び耐障害性を向上できる。
【発明を実施するための最良の形態】
【００３６】
以下、各図を参照しながら本発明の実施形態について説明する。以下の実施形態は、特許請求の範囲に係わる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００３７】
図１は本実施形態に係わるストレージシステム１００のハードウェア構成を示す。ストレージシステム１００は、通信ネットワーク６１を介して一つ以上のホスト計算機６０に接続している。ホスト計算機６０は、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ホスト計算機６０には、例えば、Ｗｅｂアプリケーションソフトウェア、ストリーミングアプリケーションソフトウェア、ｅビジネスアプリケーションソフトウェア等が搭載されている。
【００３８】
通信ネットワーク６１としては、例えば、ＳＡＮ（Storage Area Network）、ＬＡＮ(Local Area Network)、ＷＡＮ（Wide Area Network）、インターネット、専用回線、公衆回線等を挙げることができる。ホスト計算機６０がＳＡＮを介してストレージシステム１０に接続する場合、ホスト計算機６０は、ファイバチャネルプロトコル又はｉＳＣＳＩ（internet Small Computer System Interface）等のプロトコルにより、ストレージシステム１０の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト計算機６０がＬＡＮを介してストレージシステム１０に接続する場合、ホスト計算機６０は、ＮＦＳ（Network File System）やＣＩＦＳ（Common Interface File System）等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。ストレージシステム１０がホスト計算機６０からのファイルアクセス要求を受け付けるためには、ＮＡＳ（Network Attached Storage）機能を搭載する必要がある。
【００３９】
ストレージシステム１００は、二重化されたコントローラ１０，２０と、記憶装置５０とを備える。
【００４０】
記憶装置５０は、複数のストレージデバイス５１を有する。ストレージデバイス５１はハードディスクドライブ、フレキシブルディスクドライブ、磁気テープ、半導体メモリ、フラッシュメモリ、光ディスクドライブなどの物理デバイスである。ストレージデバイス５１がハードディスクドライブである場合、ＦＣ（Fibre Channel）ディスクドライブ、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ、ＰＡＴＡ（Parallel Advanced Technology Attachment）ディスクドライブ、ＦＡＴＡ（Fibre Attached Technology Adapted）ディスクドライブ、ＳＣＳＩ（Small Computer System Interface）ディスクドライブ、ＳＡＳ（Serial Attached SCSI）ディスクドライブなどの各種ディスクドライブを適用できる。
【００４１】
コントローラ１０又は２０は、複数のストレージデバイス５１をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤグループには、ホスト計算機６０からのアクセス単位である一つ以上の論理ユニットが定義される。論理ユニットには、ＬＵＮ（Logical Unit Number）がアサインされる。
【００４２】
コントローラ１０は、ＣＰＵユニット１３、データコントローラ１４、ホストインタフェースコントローラ１５Ａ，１５Ｂ，ドライブインタフェースコントローラ１６Ａ，１６Ｂ，メモリ１７、及びチェック回路６００を備える。
【００４３】
ＣＰＵユニット１３は、ＣＰＵ１１とブリッジ１２とを備える。ＣＰＵ１１は、ホスト計算機６０からのデータ入出力要求に応答して記憶装置５０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御するプロセッサである。ブリッジ１２は、ＣＰＵ１１とデータコントローラ１４とを接続する。
【００４４】
データコントローラ１４は、ＣＰＵユニット１３、ホストインタフェースコントローラ１５Ａ，１５Ｂ、ドライブインタフェースコントローラ１６Ａ，１６Ｂ、及びメモリ１７を相互に接続し、ホスト計算機６０と記憶装置５０との間のデータ転送を制御する。具体的には、ホスト計算機６０からライトアクセスが行われると、データコントローラ１４は、まず、ホストインタフェースコントローラ１５Ａ，１５Ｂを介してホスト計算機６０から受け取ったライトデータをメモリ１７に書き込む。次に、ドライブインタフェースコントローラ１６Ａ，１６Ｂは、メモリ１７に書き込まれたライトデータを記憶装置５０に書き込む。一方、ホスト計算機６０からリードアクセスが行われると、データコントローラ１４は、ドライブインタフェースコントローラ１６ａ，１６Ｂを介して記憶装置５０から読みとったリードデータをメモリ１７に書き込むとともに、これをホストインタフェースコントローラ１５Ａ，１５Ｂに転送する。
【００４５】
尚、記憶装置５０がＲＡＩＤレベル５で管理される場合には、データコントローラ１４は、パリティデータを演算する機能を有する。
【００４６】
ホストインタフェースコントローラ１５Ａ，１５Ｂは、ホスト計算機６０とコントローラ１０との間のインタフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルに基づくホスト計算機６０からのブロックアクセス要求や、ファイル転送プロトコルに基づくホスト計算機６０からのファイルアクセス要求を受信する機能を有する。ドライブインタフェースコントローラ１６Ａ，１６Ｂは、コントローラ１０と記憶装置５０との間のインタフェースを制御するコントローラであり、例えば、記憶装置５０を制御するプロトコルに基づいて記憶装置５０へのデータ入出力要求を制御する機能を有する。
【００４７】
メモリ１７は、ストレージデバイス５１へのデータの読み書きに関する制御情報（ＲＡＩＤ機能によりデータを複数のストレージデバイス５１に分散するときに、分散されたそれぞれのデータをどのストレージデバイス５１に書き込んだかを示す情報や、分散されたデータをどこまで書いたかを示す情報など）、及び記憶装置５０に読み書きされるデータを格納する。
【００４８】
尚、チェック回路６００の詳細については、後述する。
【００４９】
コントローラ２０は、ＣＰＵユニット２３、データコントローラ２４、ホストインタフェースコントローラ２５Ａ，２５Ｂ、ドライブインタフェースコントローラ２６Ａ，２６Ｂ、メモリ２７、及びチェック回路７００を備えており、コントローラ１０と同様の構成を有しているので、各部の詳細な説明を省略する。ＣＰＵユニット２３は、ＣＰＵ２１とブリッジ２２とを備える。
【００５０】
データコントローラ１４及び２４は、パス３０を介して接続されており、ホスト計算機６０がストレージデバイス５１に読み書きするデータは、パス３０を介して両方のメモリ１７，２７に書き込まれる。
【００５１】
メモリ１７及び２７は、パス４０を介して接続されており、自系コントローラ及び他系コントローラからのアクセスを可能とする。例えば、メモリ１７に格納されている情報はＣＰＵ１１（自系コントローラ）からアクセスできるだけでなく、パス４０を介してＣＰＵ２１（他系コントローラ）からもアクセスできる。同様に、メモリ２７に格納されている情報はＣＰＵ２１（自系コントローラ）からアクセスできるだけでなく、パス４０を介してＣＰＵ１１（他系コントローラ）からもアクセスできる。
【００５２】
メモリ１７，２７に格納される制御情報は、従来、ローカルメモリに格納されていたものと同じである。従来では、ＣＰＵ１１，２１のローカルメモリに格納されていた制御情報をキャッシュメモリへコピーしていたのであるが、本実施形態では、制御情報をメモリ１７，２７に格納することで、ローカルメモリからキャッシュメモリへの制御情報のコピーが不要となる。更に、従来では、ローカルメモリに格納されている制御情報をパス３０経由で他系コントローラ内のキャッシュメモリに転送していたので、ホスト計算機６０から記憶装置５０へのアクセスに伴うパス３０のデータ転送の効率を低下させる要因にもなっていたが、本実施形態によれば、メモリ１７，２７に格納されている制御情報へのアクセスは、パス４０を利用して行うことができるので、パス３０の帯域を効率よく使用することが可能となる。
【００５３】
次に、図２を参照しながらメモリ１７，２７の詳細構成について説明を加える。
メモリ１７には、複数のメモリモジュール（例えば、ＤＩＭＭ：Dual Inline Memory Module）１７０−０，…，１７０−ｎが実装されている。それぞれのメモリモジュール１７０−０，…，１７０−ｎは、メモリチップ（例えば、ＤＲＡＭ:Dynamic Random Access Memory）１７１−０，…，１７１−ｎと、メモリチップ１７１−０，…，１７１−ｎへのデータの読み書きを制御するメモリコントローラ１７２−０，…，１７２−ｎと、を備える。それぞれのメモリコントローラ１７２−０，…，１７２−ｎは、２入力２出力のＩ／Ｏインタフェースを有しており、隣り合うメモリモジュールのメモリコントローラ同士をデイジーチェーン接続する。
【００５４】
同様に、メモリ２７には、複数のメモリモジュール（例えば、ＤＩＭＭ）２７０−０，…，２７０−ｎが実装されている。それぞれのメモリモジュール２７０−０，…，２７０−ｎは、メモリチップ（例えば、ＤＲＡＭ）２７１−０，…，２７１−ｎと、メモリチップ２７１−０，…，２７１−ｎへのデータの読み書きを制御するメモリコントローラ２７２−０，…，２７２−ｎと、を備える。それぞれのメモリコントローラ２７２−０，…，２７２−ｎは、２入力２出力のＩ／Ｏインタフェースを有しており、隣り合うメモリモジュールのメモリコントローラ同士をデイジーチェーン接続する。
【００５５】
メモリ１７とメモリ２７は、パス４０ａ，４０ｂを介して接続されている。データコントローラ１４とメモリ１７とは、パス４１ａ，４１ｂを介して接続されており、データコントローラ２４とメモリ２７とは、パス４２ａ，４２ｂを介して接続されている。
【００５６】
ここで、データコントローラ１４がメモリ１７にアクセスする場合を例に、自系コントローラ内におけるメモリアクセスの動作について説明する。
【００５７】
メモリ１７へデータが書き込まれる場合には、ライトデータがライトコマンドと共に、データコントローラ１４からパス４１ａを介してメモリコントローラ１７２−０に伝送される。メモリコントローラ１７２−０は、ライトデータを受信し、書き込み先のアドレスが自分の管理するメモリチップ１７１−０のアドレス範囲内のものであれば、そのライトデータをメモリチップ１７１−０に書き込み、メモリチップ１７１−０のアドレス範囲外のものであれば、そのライトデータをライトコマンドとともに隣のメモリコントローラに転送する。このようにして、書き込み先アドレスを管理するメモリコントローラに至るまでメモリコントローラ間をライトデータが転送される。
【００５８】
メモリ１７からデータが読み出される場合には、リードコマンドがデータコントローラ１４からパス４１ａを介してメモリコントローラ１７２−０に伝送される。メモリコントローラ１７２−０は、ライトコマンドを受信し、読み出し先のアドレスが自分の管理するメモリチップ１７１−０のアドレス範囲内のものであれば、メモリチップ１７１−０からデータを読み出し、メモリチップ１７１−０のアドレス範囲外のものであれば、そのリードコマンドを隣のメモリコントローラに転送する。このようにして、読み出し先アドレスを管理するメモリコントローラに至るまでメモリコントローラ間をライトコマンドが転送される。メモリコントローラから読み出されたリードデータは、リードコマンドが転送されてきた経路を逆方向に辿りながら転送されていき、バス４１ｂを介してデータコントローラ１４へ転送される。
【００５９】
次に、データコントローラ１４がメモリ２７にアクセスする場合を例に、他系コントローラへのメモリアクセスの動作について説明する。
【００６０】
メモリ２７にデータが書き込まれる場合には、ライトデータがライトコマンドと共に、データコントローラ１４からパス４１ａを介してメモリ１７に伝送される。メモリ１７内のメモリコントローラ間を転送されてきたライトデータは、パス４０ａを介してメモリ２７内のメモリコントローラ２７２−ｎに転送される。メモリコントローラ２７２−ｎは、ライトデータを受信し、書き込み先のアドレスが自分の管理するメモリチップ２７１−ｎのアドレス範囲内のものであれば、そのライトデータをメモリチップ２７１−ｎに書き込み、メモリチップ２７１−ｎのアドレス範囲外のものであれば、そのライトデータをライトコマンドとともに隣のメモリコントローラに転送する。このようにして、書き込み先アドレスを管理するメモリコントローラに至るまでメモリコントローラ間をライトデータが転送される。
【００６１】
メモリ２７からデータが読み出される場合には、リードコマンドがデータコントローラ１４からパス４１ａを介してメモリ１７に伝送される。メモリ１７内のメモリコントローラ間を転送されてきたリードコマンドは、パス４０ａを介してメモリ２７内のメモリコントローラ２７２−ｎに転送される。メモリコントローラ２７２−ｎは、リードコマンドを受信し、読み出し先のアドレスが自分の管理するメモリチップ２７１−ｎのアドレス範囲内のものであれば、メモリチップ２７１−ｎからデータを読み出し、メモリチップ２７１−ｎのアドレス範囲外のものであれば、リードコマンドを隣のメモリコントローラに転送する。このようにして、読み出し先アドレスを管理するメモリコントローラに至るまでメモリコントローラ間をリードコマンドが転送される。メモリコントローラから読み出されたリードデータは、パス４０ｂを介してコントローラ１０へ転送されていき、パス４１ｂを介してデータコントローラ１４へ転送される。
【００６２】
次に、データコントローラ１４，２４が有するアドレス変換機能１４０，２４０について、図３を参照しながら説明を加える。
【００６３】
コントローラ１０からコントローラ２０へコマンドが転送されていくメモリチップの順番と、コントローラ２０からコントローラ１０へコマンドが転送されていくメモリチップの順番とは異なるので、コントローラ１０から見たメモリ１７，２７のアドレス空間と、コントローラ２０から見たメモリ１７，２７のアドレス空間は異なる。メモリチップ１７１−０，…，１７１−ｎのアドレス空間をそれぞれＡ０，…，Ａｎとし、メモリチップ２７１−０，…，２７１−ｎのアドレス空間をそれぞれＢ０，…，Ｂｎとすると、コントローラ１０から見たアドレス空間は、コントローラ１０からコントローラ２０へコマンドが転送されていくメモリチップの順番に並べたアドレス空間１のように見える。一方、コントローラ２０から見たアドレス空間は、コントローラ２０からコントローラ１０へコマンドが転送されていくメモリチップの順番に並べたアドレス空間２のように見える。
【００６４】
データコントローラ１４内のアドレス変換機能１４０は、アドレス空間１をアドレス空間２にマッピングする機能を有する。データコントローラ２４内のアドレス変換機能２４０は、アドレス空間３をアドレス空間２にマッピングする機能を有する。かかるアドレス変換機能１４０，２４０により、それぞれのコントローラ１０，２０から見たアドレス空間は同一のものとなり、メモリアクセス制御に必要なマイクロプログラムとして、それぞれのコントローラ１０，２０に共通のものを使用できる。コントローラによってアドレス空間が異なると、それに対応したマイクロプログラムをそれぞれのコントローラに実装しなければならないが、本実施形態によれば、そのような不都合を解消できる。
【００６５】
次に、図４を参照しながらメモリ１７，２７間を接続するパスのもう一つの接続構成について説明する。
【００６６】
コントローラ１０は、セレクタ１９及びスイッチ１８を備えており、コントローラ２０は、セレクタ２９及びスイッチ２８を備えている点が図２の構成とは異なる。セレクタ１９スイッチ１８は、コントローラ１０の障害発生を示すエラー信号に基づいて出力信号を切り替える機能を有する。同様に、セレクタ２９スイッチ２８は、コントローラ２０の障害発生を示すエラー信号に基づいて出力信号を切り替える機能を有する。データコントローラ１４がメモリ１７から、データコントローラ２４がメモリ２７からデータを読み書きする基本的な手順は、図２の構成における、データコントローラ１４がメモリ１７から、データコントローラ２４がメモリ２７からデータを読み書きする基本的な手順と同じである。
【００６７】
コントローラ２０に障害が発生したときにおいて、データコントローラ１４がメモリ２７にアクセスする場合を例に、障害発生時における他系コントローラへのメモリアクセスの動作について説明する。
【００６８】
まず、コントローラ１０がメモリ２７にデータを書き込む場合について説明する。コントローラ１０は、正常に動作しているので、セレクタ１９は、データコントローラ１４から出力されるライトコマンドをそのまま自系のメモリ１７に出力する。リードコマンドはメモリ１７内のメモリコントローラ間を転送されていき、パス４１を介してコントローラ２０へ転送される。
【００６９】
コントローラ２０では、障害が発生しているので、エラー信号がパス２１０に出力される。すると、パス２１０に接続するセレクタ２９及びスイッチ２８に障害発生が通知される。セレクタ２９は、通常時（エラー信号を受信しないとき）には、データコントローラ２４から入力される信号をメモリ２７に出力するのであるが、障害発生時（エラー信号を受信したとき）には、パス４１から入力される信号をメモリ２７に出力する。スイッチ２８は、通常時（エラー信号を受信しないとき）には、スイッチオフになっているのであるが、障害発生時（エラー信号を受信したとき）には、スイッチオンになり、メモリ２７から入力される信号をパス４３に出力する。
【００７０】
データコントローラ１４からのリードコマンドは、セレクタ２９を介してメモリ２７に転送される。そこからは、読み出し先アドレスを管理するメモリコントローラに至るまで、メモリ２７内をリードコマンドが転送されていく。読み出し先アドレスを管理するメモリコントローラは、メモリチップからデータを読み出し、これまでリードコマンドが転送されてきた経路を逆方向に辿るように、リードデータを転送する。スイッチ２８は、エラー信号を受信することにより、スイッチオンになっているので、メモリコントローラ２７２−０からスイッチ２８に入力されたリードデータは、パス４３を介してコントローラ１０へ転送される。
【００７１】
コントローラ１０内のメモリ１７では、リードデータは、メモリコントローラ間を転送されていく。コントローラ１０では、障害は発生してないので、スイッチ１８はスイッチオフのままであり、メモリ１７からスイッチ１８に入力されたリードデータは、そのままデータコントローラ１４へ出力される。
【００７２】
コントローラ１０に障害発生し、コントローラ２０がメモリ１７にデータを読み書きする場合も同様の手順を経て行われる。
【００７３】
次に、図５を参照しながらデータコントローラ１４の詳細構成について説明する。
データコントローラ１４は、ブリッジ１２、ホストインタフェースコントローラ１５Ａ，１５Ｂ、メモリ１７、データコントローラ２４、ドライブインタフェースコントローラ１６Ｂ，１６Ａのそれぞれに対応する論理ブロック１２０，１５０Ａ，１５０Ｂ，１７０，２４０，１６０Ｂ，１６０Ａを有する。
【００７４】
また、それぞれの論理ブロック１２０，１５０Ａ，１５０Ｂ，１７０，２４０，１６０Ｂ，１６０Ａは、データコントローラ１４の内部パスに接続する内部インタフェース１２０−１，１２０−２，１５０Ａ−１，１５０Ａ−２，１５０Ｂ−１，１５０Ｂ−２，１７０−１，１７０−２，２４０−１，２４０−２，１６０Ｂ−１，１６０Ｂ−２，１６０Ａ−１，１６０Ａ−２を有する。内部インタフェース１２０−１，１５０Ａ−１，１５０Ｂ−１，１７０−１，２４０−１，１６０Ｂ−１，１６０Ａ−１は、左回りにポイント・ツー・ポイント接続している。内部インタフェース１２０−２，１５０Ａ−２，１５０Ｂ−２，１７０−２，２４０−２，１６０Ｂ−２，１６０Ａ−２は、右回りにポイント・ツー・ポイント接続している。このように内部インタフェースをポイント・ツー・ポイント接続すると、データコントローラ１４内のリングパス（論理ブロック間を接続するリング状のパス）を二重化することができる。
【００７５】
尚、説明の便宜上、論理ブロック内に含まれる内部インタフェースの個数を二つとしたが、内部インタフェースの個数は３以上であってもよい。また、データコントローラ１４内のリングパスの個数は３以上であってもよい。
【００７６】
データコントローラ１４内では、リングパスに沿ってデータが転送される。ホスト計算機６０がストレージデバイス５１にデータを書き込む場合を例に、データコントローラ１４内のデータ転送経路について説明する。データコントローラ１４は、ホストインタフェースコントローラ１５Ｂを介してホスト計算機６０からライトデータを受領する。ライトデータは、内部インタフェース１５０Ｂ−２から内部インタフェース１７０−２に転送され、一旦、メモリ１７に書き込まれる。その後、ライトデータは、メモリ１７から読み出され、内部インタフェース１７０−２から内部インタフェース２４０−２へ右回りに転送される。内部インタフェース２４０−２は、そのライトデータが自分宛のものでないと解釈し、隣の内部インタフェース１６０Ｂ−２へ右回りに転送する。内部インタフェース１６０Ｂ−２は、そのライトデータが自分宛のものであると解釈し、そのライトデータをドライブインタフェースコントローラ１６Ｂに転送する。ドライブインタフェース１６Ｂは、そのライトデータをストレージデバイス５１に書き込む。
【００７７】
次に、ＣＰＵ１１からのコマンドをホストインタフェースコントローラ１５Ａ経由でホスト計算機６０に送信する場合を例に、データコントローラ１４内におけるアービトレーション機能について説明する。論理ブロック１２０と論理ブロック１５０Ａとの位置関係を考慮すると、論理ブロック１２０から左回りのリングパスを経由して論理ブロック１５０Ａにコマンドを転送するよりも、論理ブロック１２０から右回りのリングパスを経由して論理ブロック１５０Ａにコマンドを転送する方が経路長は短いので、転送時間を短縮できる。データコントローラ１４は、転送元の論理ブロックと転送先の論理ブロックとの間の物理的配線距離を考慮して、転送時間がより少なくなるリングパスを選択してデータ転送するアービトレーション機能を有する。
【００７８】
但し、転送元の論理ブロックと転送先の論理ブロックとの間の物理的配線距離を考慮したアービトレーションを行っても、データ転送に使用すべきリングパスが既に何らかのデータ転送に使用されている場合には、リングパスが開放されるのを一律に待つのではなく、データの優先度に応じて、最短経路ではないリングパスを経由してデータ転送を行うことも可能である。
【００７９】
データコントローラ１４は、上記の構成に加えて、ＲＡＩＤコントローラ４４０と、内部インタフェース１５０−１，１５０−２，１６０−１，１６０−２を有する。リングパスの占有度が高く、データ転送待ちになっているコマンドやデータが多い場合には、ＲＡＩＤコントローラ４４０が内部インタフェース１５０−１，１６０−１を使用して、左回りのリングパスをショートカットしたり、或いは内部インタフェース１５０−２，１６０−２を使用して、右回りのリングパスをショートカットしたりする。かかるショートカット機能により、データ転送効率を向上させることができる。
【００８０】
次に、図６を参照しながら、内部インタフェース１２０−１の詳細構成について説明する。説明の便宜上、内部インタフェース１２０−１を例に内部インタフェースの詳細構成について説明するが、他の内部インタフェースの構成も同様である。内部インタフェース１２０−１は、内部インタフェース１５０Ａ−１と内部インタフェース１６０Ａ−１との間に接続されている。
【００８１】
内部インタフェース相互間で送受信される信号として、イネーブル信号３００、コマンド３１０、及びデータ３２０がある。イネーブル信号３００は、イネーブル信号３００を受信する内部インタフェースが最終的な送信先である場合にハイレベルになる。コマンド３１０には、ライトコマンドとリードコマンドとが含まれる。データ３２０には、ライトデータとリードデータとが含まれる。
【００８２】
内部インタフェース１２０−１は、デコーダ５００、フリップフロップ５１０、インバータ５２０、ＡＮＤゲート５３０、セレクタ５４０、セレクタ５５０、インバータ５６０、ＡＮＤゲート５７０、及びＯＲゲート５８０を備えており、内部インタフェース１５０Ａ−１から受信したデータ及び／又はコマンドが自分宛のものであるか否かを判定し、自分宛のライトコマンドであれば、ライトイネーブル信号３６０をハイレベルにし、自分宛のリードコマンドであれば、リードイネーブル信号３７０をハイレベルにし、受信したライトコマンド又はリードコマンドをコマンド３８０として、論理ブロック１２０内に出力するとともに、受信したデータをデータ３９０として、論理ブロック１２０内に出力する。一方、内部インタフェース１２０−１は、内部インタフェース１５０Ａ−１から受信したデータ及び／又はコマンドが自分宛のものでないと判定すると、そのデータ及び／又はコマンドを隣の内部インタフェース１６０Ａ−１に転送する。
【００８３】
また、内部インタフェース１２０−１が自発的に他の内部インタフェースにデータ及び／又はコマンドを転送したいときは、コマンド３３０、リクエスト３４０、及びデータ３５０を使用して、リングパスにデータ及び／コマンドを転送する。
【００８４】
尚、内部インタフェース相互間で送受信される、イネーブル信号３００、コマンド３１０、及びデータ３２０のそれぞれは、図７に示すような信号となる。
【００８５】
データ転送元の論理ブロックとデータ転送先の論理ブロックとを直接接続すると、配線遅延の影響が大きく現れてしまい、動作周波数の高速化が律速されてしまうので好ましくない。これに対し、本実施形態によれば、論理ブロック間をポイント・ツー・ポイント接続することで、論理ブロック間は物理的に短距離で接続されるので、高速な内部動作周波数でも配線遅延の影響を最小限度に抑制することが可能となり、高速なデータ転送を行うことができる。それ故、全体の転送距離が長くても、データ転送に要する全体の時間を短縮できる。
【００８６】
次に、図９を参照しながらチェック回路６００の詳細構成について説明する。
チェック回路６００は、ＣＰＵ１１からデータコントローラ１４に転送されるデータ（制御コード、アドレスコード、ＤＭＡパラメータ）がデータ化けしているか否かをチェックする。
【００８７】
チェック回路６００は、制御コードチェック回路６１０、アドレスコードチェック回路６２０、ＤＭＡパラメータチェック回路６３０、バッファ６４０、アドレスデコーダ６５０、及び制御ユニット６６０を備える。ＣＰＵ１１からデータコントローラ１４に転送されるデータには、３２ビットの制御コード、４８ビットのアドレスコード（ストレージデバイス５１のアクセス先アドレス）、６４ビット幅を有するＤＭＡパラメータ（トータルサイズは不定）が含まれる。これらのデータは、制御コードチェック回路６１０、アドレスコードチェック回路６２０、又はＤＭＡパラメータチェック回路６３０の何れかに格納され、データ化けの有無がチェックされるとともに、更にバッファ６４０にも格納され、データ化けがないと判定されると、バッファ６４０に格納されたデータが読み出される。
【００８８】
制御コードをＣＰＵ１１からデータコントローラ１４に転送する場合、ＣＰＵ１１は制御コードの論理値を反転してなる反転コードを生成し、制御コードにその反転コードを付加し（図８（Ａ）参照）、合計６４ビットの制御コードとして、パス８００上に出力する。制御コードチェック回路６１０は、反転コード付の６４ビットの制御コードをパス８００から受け取り、３２ビットの制御コードをレジスタ６１０Ａに格納するとともに、３２ビットの反転コードをレジスタ６１０Ｂに格納する。
【００８９】
アドレスデコーダ６５０は、パス８１０上に出力されるアドレス（アドレスレジスタのアドレス）をデコードした結果、パス８００上に出力されるデータの種別（制御コード、アドレスコード、ＤＭＡパラメータの区別）を判定する。制御コードチェック回路６１０は、レジスタ６１０Ａに格納されている制御コードと、レジスタ６１０Ｂに格納されている反転コードとの排他的論理輪を演算することにより、制御コードがパス８００を通過するときにデータ化けしているか否かをチェックする。
【００９０】
制御コードチェック回路６１０は、データ化けしてないことを確認すると、その旨をパス８２０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしてない旨の通知を受信すると、バッファ６４０に格納されている制御コードをデータコントローラ１４内の内部バス８５０に出力する。
【００９１】
一方、制御コードチェック回路６１０は、データ化けしていることを確認すると、その旨をパス８２０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしている旨の通知を受信すると、データコントローラ１４内部に接続するパス８６０にエラー信号を出力し、バッファ６４０に格納されている制御コードを破棄する。
【００９２】
アドレスコードをＣＰＵ１１からデータコントローラ１４に転送する場合、ＣＰＵ１１は、４８ビットのアドレスコードに１６ビットのＳＵＭチェックコードを付加し（図８（Ｂ）参照）、合計６４ビットのアドレスコードとしてパス８００上に出力する。アドレスコードチェック回路６２０は、反転コード付の６４ビットの制御コードをパス８００から受け取り、１６ビットのレジスタ６２０Ａ、６２０Ｂ、及び６２０Ｃにアドレスコードを格納し、１６ビットのレジスタ６２０ＤにＳＵＭチェックコードを格納する。
【００９３】
アドレスデコーダ６５０は、パス８１０上に出力されるアドレス（アドレスレジスタのアドレス）をデコードした結果、パス８００上に出力されるデータの種別（制御コード、アドレスコード、ＤＭＡパラメータの区別）を判定する。アドレスコードチェック回路６２０は、ＳＵＭチェックコードをチェックすることにより、アドレスコードがパス８００を通過するときにデータ化けしているか否かをチェックする。
【００９４】
アドレスコードチェック回路６２０は、データ化けしてないことを確認すると、その旨をパス８３０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしてない旨の通知を受信すると、バッファ６４０に格納されているアドレスコードをデータコントローラ１４内の内部バス８５０に出力する。
【００９５】
一方、アドレスコードチェック回路６２０は、データ化けしていることを確認すると、その旨をパス８３０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしている旨の通知を受信すると、データコントローラ１４内部に接続するパス８６０にエラー信号を出力し、バッファ６４０に格納されているアドレスコードを破棄する。
【００９６】
ＤＭＡパラメータをＣＰＵ１１からデータコントローラ１４に転送する場合、ＣＰＵ１１は、４８ビットのＤＭＡパラメータに１６ビットのＳＵＭチェックコード又はＣＲＣコードを付加し（図８（Ｃ）参照）、合計６４ビットのＤＭＡパラメータとして、パス８００上に出力する。ＤＭＡパラメータチェック回路６３０は、ＳＵＭチェックコード又はＣＲＣコード付のＤＭＡパラメータをパス８００から受け取り、６４ビットのレジスタ６３０−０，…，６３０−ｎにＤＭＡパラメータを格納し、６４ビットのレジスタ６３１にＳＵＭチェックコード又はＣＲＣコードを格納する。
【００９７】
アドレスデコーダ６５０は、パス８１０上に出力されるアドレス（アドレスレジスタのアドレス）をデコードした結果、パス８００上に出力されるデータの種別（制御コード、アドレスコード、ＤＭＡパラメータの区別）を判定する。ＤＭＡパラメータチェック回路６３０は、ＳＵＭチェックコード又はＣＲＣコードをチェックすることにより、ＤＭＡパラメータがパス８００を通過するときにデータ化けしているか否かをチェックする。
【００９８】
ＤＭＡパラメータチェック回路６３０は、データ化けしてないことを確認すると、その旨をパス８４０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしてない旨の通知を受信すると、バッファ６４０に格納されているＤＭＡパラメータをデータコントローラ１４内の内部バス８５０に出力する。
【００９９】
一方、ＤＭＡパラメータチェック回路６３０は、データ化けしていることを確認すると、その旨をパス８４０経由で制御ユニット６６０に通知する。制御ユニット６６０は、データ化けしている旨の通知を受信すると、データコントローラ１４内部に接続するパス８６０にエラー信号を出力しバッファ６４０に格納されているＤＭＡパラメータを破棄する。
【０１００】
次に、図１０乃至図１２を参照しながら、ストレージシステムの変形例について説明する。図１に示す符号と同一符号の回路は同一の回路を示すものとして、その詳細な説明を省略する。
【０１０１】
図１０に示すストレージシステム１０１は、ＣＰＵユニット１３，２３内にそれぞれローカルメモリ１０００，１１００を有し、データコントローラ１４，２４内にそれぞれチェック回路６００，７００と、リングパス９００，９１０を有する。ローカルメモリ１０００，１１００には、制御情報が格納される。かかる構成は、従来のローカルメモリ１０００，１１００における制御情報の管理方式を維持しつつ、メモリ１７，２７間のパス４０を介してコントローラ１０，２０間で相互に制御情報の送受信を可能とすることで、より機能性に優れたシステムを構築できる。
【０１０２】
図１１に示すストレージシステム１０２は、図１に示すストレージシステム１００からブリッジ１２，２２を削除してなる構成を有する。かかる構成により、ＣＰＵユニットの占有面積を縮小し、ボードの省スペース化が可能となる。
【０１０３】
図１２に示すストレージシステム１０３は、データコントローラ１４にＣＰＵ１１とローカルメモリ１０００とがそれぞれ直接接続する構成を有している。データコントローラ１４には、チェック回路６００Ａ，６００Ｂが搭載されている。チェック回路６００ＡはＣＰＵ１１からの制御コードとアドレスコードとがデータ化けしているか否かをチェックする。チェック回路６００Ｂは、ローカルメモリ１０００からのＤＭＡパラメータがデータ化けしているか否かチェックする。
【０１０４】
ストレージシステム１０３は、更にデータコントローラ２４にＣＰＵ２１とローカルメモリ１１００とがそれぞれ直接接続する構成を有している。データコントローラ２４にはチェック回路７００Ａ，７００Ｂが搭載されている。チェック回路７００Ａは、ＣＰＵ２１からの制御コードとアドレスコードとがデータ化けしているか否かをチェックする。チェック回路６００Ｂは、ローカルメモリ１０００からのＤＭＡパラメータがデータ化けしているか否かをチェックする。
【０１０５】
チェック回路６００Ａ，７００Ａにおけるチェック方法は、制御コードチェック回路６１０、アドレスコードチェック回路６２０におけるチェック方法と同様であり、チェック回路６００Ｂ，７００Ｂにおけるチェック方法は、ＤＭＡパラメータチェック回路６３０におけるチェック方法と同様である。
【０１０６】
次に、図１３乃至図１４を参照しながらストレージシステムの保守管理について説明する。本実施形態に係わるストレージシステムにおいては、例えば、図１３に示すように、ＣＰＵ１１、ブリッジ１２、及びデータコントローラ１４を一つのマルチチップモジュール２０００内にモジュール化し、或いは図１４に示すように、ＣＰＵ１１及びブリッジ１２を一つのマルチチップモジュール３０００内にモジュール化する。
【０１０７】
ここで、コントローラ１０に障害が発生し、データコントローラ１４が動作不能になった場合を考察する。障害が発生すると、マルチチップモジュール２０００，３０００はパッケージから外され、正常なマルチチップモジュール２０００，３０００に交換される。このとき、コントローラ２０は、パス４０を介してメモリ１７にアクセスし、メモリ１７内の制御情報を読み出すことができるので、障害発生時にコントローラ１０が処理していたタスクを、コントローラ２０が替わりにフェールオーバー処理することができる。これにより、ストレージシステムは、コントローラ１０に障害が発生しても、その運用を停止することなく、稼動し続けることができる。
【０１０８】
発明の実施形態を通じて説明された実施例や応用例は、用途に応じて適宜に組み合わせて、又は変更若しくは改良を加えて用いることができ、本発明は上述した実施形態の記載の記載に限定されるものではない。そのような組み合わせ又は変更若しくは改良を加えた形態も本発明の技術的範囲に含まれ得ることが特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【０１０９】
【図１】本実施形態に係わるストレージシステムのハードウェア構成図である。
【図２】本実施形態に係わるメモリのハードウェア構成を示す説明図である。
【図３】本実施形態に係わるアドレス変換機能の説明図である。
【図４】本実施形態に係わるメモリの他のハードウェア構成を示す説明図である。
【図５】本実施形態に係わるデータコントローラのハードウェア構成図である。
【図６】本実施形態に係わる内部インタフェースのハードウェア構成図である。
【図７】本実施形態に係わる内部インタフェース相互間で送受信されるイネーブル信号、コマンド、及びデータの説明図である。
【図８】本実施形態に係わる制御コード、アドレスコード、及びＤＭＡパラメータの説明図である。
【図９】本実施形態に係わるチェック回路のハードウェア構成図である。
【図１０】本実施形態に係わるストレージシステムの変形例の説明図である。
【図１１】本実施形態に係わるストレージシステムの変形例の説明図である。
【図１２】本実施形態に係わるストレージシステムの変形例の説明図である。
【図１３】本実施形態に係わるストレージシステムの保守管理の説明図である。
【図１４】本実施形態に係わるストレージシステムの保守管理の説明図である。
【符号の説明】
【０１１０】
１０，２０…コントローラ
１４，２４…データコントローラ
１７，２７…メモリ
３０，４０…パス
６００，７００…チェック回路
【図１】
2008097527.tif 000003
【図２】
2008097527.tif 000004
【図３】
2008097527.tif 000005
【図４】
2008097527.tif 000006
【図５】
2008097527.tif 000007
【図６】
2008097527.tif 000008
【図７】
2008097527.tif 000009
【図８】
2008097527.tif 000010
【図９】
2008097527.tif 000011
【図１０】
2008097527.tif 000012
【図１１】
2008097527.tif 000013
【図１２】
2008097527.tif 000014
【図１３】
2008097527.tif 000015
【図１４】
2008097527.tif 000016