(57)【要約】【課題】  ディスクアレイ装置のチャネルアダプタで、１つのポート部を複数のプロセッサで制御する構成を採用しつつ、他装置からの要求に対応した処理を特定のプロセッサに偏らせずに分散して効率的に実行できる技術を提供する。【解決手段】  コントローラ１０のＣＨＡ１１は、インタフェース動作を行うポート部４０と、ホストプロセッサ（５１Ａ，５１Ｂ）を有する複数のホストプロセッサ部５０Ａ，５０Ｂとを有する。複数のプロセッサが並行動作してポート部４０を制御する。ポート部４０で他装置４００からの要求を受信すると、第１のプロセッサ５１Ａは、自身を含むプロセッサにおける処理負荷状態の判断に基づき、自身で処理を担当するか、または第２のプロセッサ５１Ｂに処理を担当させる場合はプロトコル部４２と通信して要求を第２のホストプロセッサ部５０Ｂに転送して処理を担当させる。【選択図】  図５
2006107019.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と、前記記憶装置にデータを記憶する制御を行うコントローラとを有し、通信手段を通じて接続される他装置から受信する要求に応じて前記データの転送に関する処理を行うディスクアレイ装置であって、
前記コントローラは、前記他装置とインタフェース・プロトコルに従って通信してデータ転送処理を行うチャネル制御装置を有し、
前記チャネル制御装置は、
前記インタフェース・プロトコルに従った通信処理を行うポート部と、チャネルアダプタドライバの制御に従って動作するプロセッサを有する複数のホストプロセッサ部とを有し、前記複数のプロセッサが並行して動作して前記ポート部の動作を制御する構成で、前記複数のプロセッサで前記要求に対応した処理の分散を行うものであり、
前記ポート部で前記他装置からの要求を受信すると、前記複数のプロセッサのうち第１のプロセッサを有する第１のホストプロセッサ部は、前記他装置から受信した要求について、自身を含む複数のプロセッサにおける処理負荷状態の判断に基づき、前記要求に対応した処理を担当させるプロセッサを決定し、自身で処理を担当する場合はそのまま処理を行い、他のプロセッサに処理を担当させる場合は、前記ポート部と通信を行って前記ポート部を介して前記要求を前記第１のホストプロセッサ部から前記他のプロセッサを有するホストプロセッサ部に転送して前記他のプロセッサで前記要求に対応した処理を実行させることを特徴とするディスクアレイ装置。
【請求項２】
記憶装置と、前記記憶装置にデータを記憶する制御を行うコントローラとを有し、通信手段を通じて接続される他装置から受信する要求に応じて前記データの転送に関する処理を行うディスクアレイ装置であって、
前記コントローラは、前記他装置とインタフェース・プロトコルに従って通信してデータ転送処理を行うチャネル制御装置を有し、
前記チャネル制御装置は、
前記通信手段に対応したデータ送受信処理を行うトランシーバと、前記インタフェース・プロトコルに従った通信処理を行うプロトコル部とを有するポート部と、前記コントローラ内のメモリとの間でのデータ転送の制御を行うデータ転送制御部と、チャネルアダプタドライバの制御に従って動作するプロセッサを有する複数のホストプロセッサ部とを有し、前記複数のプロセッサが並行して動作して前記ポート部の動作を制御する構成で、前記複数のプロセッサで前記要求に対応した処理の分散を行うものであり、
前記複数のプロセッサのうち１つを、最初に要求を受けるマスタとして設定し、
前記ポート部で前記他装置からの要求を受信すると、前記マスタとなる第１のプロセッサを有する第１のホストプロセッサ部は、前記他装置から受信した要求について、自身を含む複数のプロセッサにおける処理負荷状態の判断に基づき、前記要求に対応した処理を担当させるプロセッサを決定し、自身で処理を担当する場合はそのまま処理を行い、他のプロセッサに処理を担当させる場合は、前記プロトコル部と通信を行って前記プロトコル部を介して前記要求を前記第１のホストプロセッサ部から前記他のプロセッサを有するホストプロセッサ部に転送して前記他のプロセッサで前記要求に対応した処理を実行させることを特徴とするディスクアレイ装置。
【請求項３】
請求項２記載のディスクアレイ装置において、
前記プロトコル部は、前記各ホストプロセッサ部との通信のためのポインタ情報を格納するための情報領域を有し、
前記ホストプロセッサ部はローカルメモリを有し、前記ローカルメモリに前記プロトコル部との通信のためのメッセージあるいはコマンドを格納するための情報領域と、前記メッセージあるいはコマンドの位置を示すポインタ情報を格納するための情報領域と、処理対象データの転送に関する情報を格納するための情報領域とを有し、他のホストプロセッサ部と直接に通信する手段を有することなく、
前記処理の分散のための通信において、前記プロトコル部は、前記ホストプロセッサ部側の各情報領域をリード／ライトし、前記プロセッサは、前記プロトコル部側の情報領域をリード／ライトすることを特徴とするディスクアレイ装置。
【請求項４】
請求項２記載のディスクアレイ装置において、
前記他装置はユーザの使用するホストコンピュータであり、
前記要求は、前記記憶装置に対するデータ入出力要求であり、
前記要求に対応した処理は、前記ホストコンピュータ側とコントローラ内のメモリの間でのデータ転送処理であることを特徴とするディスクアレイ装置。
【請求項５】
請求項２記載のディスクアレイ装置において、
前記ポート部で前記他装置から要求を受信すると、前記プロトコル部は、前記複数のプロセッサのうちマスタとなる第１のプロセッサを決定して、前記第１のプロセッサを有する第１のホストプロセッサ部内のメモリに前記要求を送信することを特徴とするディスクアレイ装置。
【請求項６】
請求項２記載のディスクアレイ装置において、
前記第１のホストプロセッサ部は、前記第１のプロセッサにおける処理負荷状態についての判断に基づき、前記要求に対応した処理を自プロセッサで担当するか他のプロセッサで担当させるかを判断し、前記自プロセッサで担当する場合はそのまま第１のプロセッサで処理を行い、他のプロセッサで担当させる場合は、前記処理を担当させる先となる第２のプロセッサを決定し、前記プロトコル部と通信を行って、前記第２のプロセッサを有する第２のホストプロセッサ部に前記要求を転送して前記第２のプロセッサで処理を行わせることを特徴とするディスクアレイ装置。
【請求項７】
請求項２記載のディスクアレイ装置において、
前記第１のホストプロセッサ部は、前記複数のプロセッサすべてにおける処理負荷状態についての判断に基づき、前記要求に対応した処理を自プロセッサで担当するか他の第２のプロセッサで担当させるかを判断し、前記自プロセッサで担当する場合はそのまま第１のプロセッサで処理を行い、前記第２のプロセッサで担当させる場合は、前記プロトコル部と通信を行って、前記第２のプロセッサを有する第２のホストプロセッサ部に前記要求を転送して前記第２のプロセッサで処理を行わせることを特徴とするディスクアレイ装置。
【請求項８】
請求項２記載のディスクアレイ装置において、
前記処理負荷状態の判断で、前記第１のプロセッサは、対象のプロセッサの担当処理数を計算し、前記担当処理数が少ないプロセッサを前記処理の担当先として決定することを特徴とするディスクアレイ装置。
【請求項９】
請求項２記載のディスクアレイ装置において、
前記処理負荷状態の判断で、前記第１のプロセッサは、対象のプロセッサの処理量を計算し、前記処理量が少ないプロセッサを前記処理の担当先として決定することを特徴とするディスクアレイ装置。
【請求項１０】
請求項２記載のディスクアレイ装置において、
前記処理負荷状態の判断で、前記第１のプロセッサは、対象のホストプロセッサ部内のメモリの情報領域を読むことでそのプロセッサの処理負荷状態を判断することを特徴とするディスクアレイ装置。
【請求項１１】
請求項２記載のディスクアレイ装置において、
前記チャネル制御装置内で、前記マスタとなるプロセッサを複数のプロセッサの間で変動させることを特徴とするディスクアレイ装置。
【請求項１２】
請求項２記載のディスクアレイ装置において、
前記チャネル制御装置内で、前記第１のホストプロセッサ部を含む複数のホストプロセッサ部からアクセス可能な位置に、各プロセッサにおける処理負荷状態の一覧を保持するテーブルを設け、前記第１のプロセッサは、前記処理負荷状態の判断の際に前記テーブルを参照して判断を行うことを特徴とするディスクアレイ装置。
【請求項１３】
請求項２記載のディスクアレイ装置において、
前記複数のホストプロセッサ部でいずれかに障害が発生して処理を実行することができない状態となった場合は、その障害状態のホストプロセッサ部以外で処理を担当させるように前記処理の分散に係わる判断を行うことを特徴とするディスクアレイ装置。
【請求項１４】
請求項２記載のディスクアレイ装置において、
前記チャネル制御装置内で、１つのポート部と複数のホストプロセッサ部からなる構成単位を複数設けた構成で、前記各構成単位内で処理の分散を行うことを特徴とするディスクアレイ装置。
【請求項１５】
請求項２記載のディスクアレイ装置において、
前記コントローラの部分を二重化した冗長構成で、各コントローラで独立して前記チャネル制御装置内で処理の分散を行うことを特徴とするディスクアレイ装置。
【請求項１６】
記憶装置と、前記記憶装置にデータを記憶する制御を行うコントローラとを有し、通信手段を通じて接続される他装置から受信する要求に応じて前記データの転送に関する処理を行うディスクアレイ装置であって、
前記コントローラは、前記他装置とインタフェース・プロトコルに従って通信してデータ転送処理を行うチャネル制御装置を有し、
前記チャネル制御装置は、前記通信手段に対応したデータ送受信処理を行うトランシーバと、前記インタフェース・プロトコルに従った通信処理を行うプロトコル部とからなるポート部と、前記コントローラ内のメモリとの間でのデータ転送の制御を行うデータ転送制御部と、チャネルアダプタドライバの制御に従って動作するプロセッサを有する２つのホストプロセッサ部とを有し、前記２つのプロセッサが並行して動作して前記１つのポート部の動作を制御する構成で、前記２つのプロセッサで前記要求に対応した処理の分散を行うものであり、
前記ポート部で前記他装置からの要求を受信すると、前記２つのプロセッサのうち第１のプロセッサを有する第１のホストプロセッサ部は、前記他装置から受信した要求について、自身を含むプロセッサにおける処理負荷状態の判断に基づき、前記要求に対応した処理を担当させるプロセッサを決定し、自身で処理を担当する場合はそのまま処理を行い、他の第２のプロセッサに処理を担当させる場合は、前記ポート部と通信を行って前記ポート部を介して前記要求を前記第１のホストプロセッサ部から第２のホストプロセッサ部の第２のプロセッサに転送して前記第２のプロセッサで前記要求に対応した処理を実行させることを特徴とするディスクアレイ装置。
【請求項１７】
請求項１６記載のディスクアレイ装置において、
前記チャネル制御装置は、
前記２つのプロセッサのうち１つを、最初に要求を受けるマスタとして設定し、
前記ポート部で前記他装置からの要求を受信すると、前記マスタとなる第１のプロセッサを有する第１のホストプロセッサ部は、前記他装置から受信した要求について、自身を含むプロセッサにおける処理負荷状態の判断に基づき、前記要求に対応した処理を担当させるプロセッサを決定し、自身で処理を担当する場合はそのまま処理を行い、他の第２のプロセッサに処理を担当させる場合は、前記プロトコル部と通信を行って前記プロトコル部を介して前記要求を前記第１のホストプロセッサ部から前記第２のプロセッサを有する第２のホストプロセッサ部に転送して前記第２のプロセッサで前記要求に対応した処理を実行させることを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクドライブ（ＨＤＤ）等の記憶装置へデータを記憶する制御を行うディスクアレイ装置（ＲＡＩＤ記憶装置）に関し、特に、ディスクアレイ装置でこれに通信接続されるホストコンピュータ等の他装置との間でのデータ転送インタフェース動作を行うチャネル制御装置（チャネルアダプタ）の技術に関する。
【背景技術】
【０００２】
ディスクアレイ装置及びこれに通信接続されるホストコンピュータ等の他装置を含んで構成されるコンピュータシステムにおいて、装置間を接続するネットワークの転送レートの高速化が進んでいる。これに対応するために、従来のディスクアレイ装置のコントローラでは、１個のポート部を複数のプロセッサ（ホストプロセッサ部）で制御する構成のチャネルアダプタを採用している。この構成で、ホストコンピュータ等の他装置とチャネルアダプタとで、ネットワークを介した通信において、ポート部が他装置からデータ入出力に係わるコマンド（データアクセス要求）を受信して、受信コマンドに対応したデータ転送処理をプロセッサで行う。この際のデータ転送処理は、チャネルアダプタ内に有する複数のプロセッサのいずれかで処理させる。前記データ転送処理は、リードコマンドに対応したデータリード処理においてＨＤＤからのリードデータを他装置側へ転送する処理や、ライトコマンドに対応したデータライト処理において他装置側からのライトデータをＨＤＤへ転送する処理などである。前記データ転送処理では、典型的には、コントローラ内に持つメモリでリード／ライトデータが一旦キャッシュされる。
【０００３】
特許文献１記載の技術では、多数の記憶装置コントローラまたは多数のプロセッサ間でデータアクセスタスクを分散する方法を提供している。
【特許文献１】特開２００１−３１８９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の構成では、他装置からの受領コマンドに対応したデータ転送処理をチャネルアダプタ内に有する複数のプロセッサのいずれかで行わせる際に、どのプロセッサに処理を行わせるかを、所定の方式により一意に決定している。従って、場合によっては特定のプロセッサにのみ処理要求が偏ることでそのプロセッサに大きな負荷がかかってしまい、全体として非効率的である。
【０００５】
例えば前記特許文献１記載の技術では、複数の記憶装置コントローラまたはプロセッサにおける処理（データアクセスタスク）の分散にあたり、分散先が一意に決定されると考えられる。すなわち、プロセッサから参照されるテーブルで、複数のプロセッサの各々がどの冗長グループ（ディスクアレイ）に対するデータアクセスを処理するかが一意に決められており、当該テーブルに従って、要求を処理するプロセッサが特定される。従って、処理のタイプが偏る場合に複数のプロセッサにおける処理効率が低下する恐れがある。また、この技術では、複数のプロセッサでの処理の分散のために、あるプロセッサから他のプロセッサに直接に要求（コマンド）を転送する形態であると考えられる。
【０００６】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、ディスクアレイ装置で、他装置とのデータ転送インタフェース動作を行うチャネルアダプタにおいて、１つのポート部を複数のプロセッサで制御する構成を採用しつつ、他装置からの要求（コマンド）に対応した処理を、特定のプロセッサに偏らせずに分散して効率的に実行できる技術を提供することにある。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００８】
前記目的を達成するために、本発明のディスクアレイ装置は、ＨＤＤ等の記憶装置と、記憶装置にデータを記憶する制御を行うコントローラとを有し、コントローラには、通信手段を通じて接続されるホストコンピュータ等の他装置との間でインタフェース・プロトコルに従ってデータ転送インタフェース動作を行うチャネル制御装置（チャネルアダプタ）を有し、チャネル制御装置は、１個のポート部に対して複数のホストプロセッサ部を有する構成で、他装置から受信する要求（コマンド）に応じて記憶装置上の記憶ボリュームに対する前記データのリード／ライト等の入出力処理を行う装置であって、以下に示す技術的手段を有することを特徴とする。
【０００９】
本ディスクアレイ装置は、コントローラのチャネル制御装置で、ポート部と複数のホストプロセッサ部とデータ転送制御部とを有する。ポート部は、通信手段を介して他装置との間でのデータ送受信を行い、また複数のホストプロセッサ部との間で制御のための通信を行い、またデータ転送制御部を介してコントローラ内のメモリ及び記憶装置側に対するデータ転送を行う。
【００１０】
ポート部は、例えば、トランシーバとプロトコル部とを有する構成である。トランシーバは、本装置及び他装置と接続されるネットワークに対してデータ送受信動作を行う。プロトコル部は、ネットワーク上のインタフェース・プロトコルに従った通信制御を行う。プロトコル部は複数のホストプロセッサ部との間での通信のための制御情報を格納する情報領域（ポインタ情報を格納するレジスタなど）を有する。複数のホストプロセッサ部における各プロセッサは、不揮発性メモリ上にインストールされている制御プログラム（チャネルアダプタドライバ）に従って並行的に動作して、１つのポート部のインタフェース動作を制御する。
【００１１】
ホストプロセッサ部は、例えば、プロセッサ（ホストプロセッサ）とその制御プログラム（チャネルアダプタドライバ）と制御情報を格納するメモリ（ホストプロセッサ・ローカルメモリ）とを有する構成である。
【００１２】
データ転送制御部は、ポート部と、コントローラ内で入出力データを保持するメモリ例えばキャッシュメモリやチャネル制御装置内に設けたメモリとの間での入出力データの転送を制御する。
【００１３】
上記構成で、他装置からの要求（コマンド）の受領に対して、チャネル制御装置内に複数有するプロセッサのいずれが前記要求に対応した他装置側とのデータ転送に係わる処理を担当するかを固定的な設定に従って一意に決定するのではなく、前記要求の受領の都度、１つ以上のプロセッサの処理負荷状態あるいは処理担当状態の判断に応じて複数のプロセッサで前記要求に応じた処理の分散を行う。
【００１４】
前記処理の分散のために、チャネル制御装置内の複数のプロセッサでいずれか１つを、前記他装置からの要求をポート部を通じて最初に受ける役割を担うマスタ（代表）のプロセッサ（第１のプロセッサ）として設定する。前記第１のプロセッサを有するホストプロセッサ部を第１のホストプロセッサ部とする。
【００１５】
ポート部は、他装置から受信したすべての要求について一旦前記第１のホストプロセッサ部に対して送信（転送）する。すなわち、ポート部は、前記他装置から受信した要求について一旦前記第１のホストプロセッサ部に対して、「処理すべき要求が有る」旨のメッセージを通知する。この際、例えば、ポート部は、第１のホストプロセッサ部のメモリの情報領域に、前記メッセージを書き込むと共に、メッセージ位置を示すポインタ情報を更新する。
【００１６】
前記第１のプロセッサは、前記要求に応じた処理を行うにあたり、自身が処理を担当するのに適当かどうかを、自身を含む複数のプロセッサの処理負荷状態を考慮して判断する。また、この判断の際、まず自身のプロセッサにおける処理負荷状態のみ考慮して判断することとしてもよい。
【００１７】
前記第１のプロセッサは、前記処理担当に関する判断で自身で処理を担当すると判断した場合は、そのまま前記要求に応じた処理を担当し、自身で処理を担当しないあるいは他プロセッサに処理を担当させると判断した場合は、ポート部との通信を行ってポート部を介して第１のプロセッサから他プロセッサに前記要求を転送して当該要求に応じた処理を担当させる。
【００１８】
前記チャネル制御装置で、前記第１のプロセッサ以外の他プロセッサのうち、前記第１のプロセッサでの判断及び指示に基づき処理を担当させる先（分散先）となるプロセッサを第２のプロセッサとする。前記第２のプロセッサを有するホストプロセッサ部を第２のホストプロセッサ部とする。
【００１９】
ポート部により第１のプロセッサから第２のプロセッサに対し前記要求を転送する。例えば、前記第１のプロセッサは、前記他プロセッサとして第２のプロセッサに処理を担当させると判断した場合、第１のホストプロセッサ部内のメモリの情報領域に前記他プロセッサに処理を担当させるためのメッセージを格納し、ポート部のプロトコル部の有する情報領域に対して通知を行って前記メッセージを読み取らせる。ポート部のプロトコル部は、第１のプロセッサから通知されたメッセージの認識に基づき、前記第２のプロセッサに対して、前記要求に応じた処理を担当させるための指示を行う。すなわち、ポート部のプロトコル部は、第２のホストプロセッサ部内のメモリの情報領域に対して、「処理すべき要求が有る」旨のメッセージを格納し、メッセージ位置を示すポインタ情報を更新して、前記メッセージを読み取らせる。第２のプロセッサは、前記要求の転送に応じて、処理を担当して実行する。
【００２０】
前記処理の分散のための通信手段として、例えば、プロトコル部は、各ホストプロセッサ部との通信のためのポインタ情報を格納するための情報領域（ＯＭＩ及びＩＭＯ）を有する。またホストプロセッサ部はローカルメモリを有し、ローカルメモリにプロトコル部との通信のためのメッセージあるいはコマンドを格納するための情報領域（ＯＭ領域、ＩＭ領域）と、前記メッセージあるいはコマンドの位置を示すポインタ情報を格納するための情報領域（ＯＭＯ、ＩＭＩ）と、処理対象データの転送に関する情報を格納するための情報領域（ＤＩ領域）とを有する。前記処理の分散のための通信において、プロトコル部は、ホストプロセッサ部側の情報領域をリード／ライトし、プロセッサは、プロトコル部側の情報領域をリード／ライトする。
【００２１】
チャネル制御装置で前記処理を複数のプロセッサで分散するための判断方法は、例えば以下のようなものがある。（１）：前記第１のプロセッサは、各プロセッサですべき処理（担当処理）の個数をカウントし、前記担当処理数が最も少ないプロセッサを処理負荷量が最も少ない状態にあると判断して処理を担当させる。（２）：前記第１のプロセッサは、各プロセッサが処理すべきデータ転送数の合計、すなわち前記担当処理数ではなく処理におけるデータ転送数やデータ転送量などの内容まで概略的に計算した処理負荷量をカウントして判断し、前記処理負荷量が最も少ないプロセッサに処理を担当させる。
【発明の効果】
【００２２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２３】
本発明によれば、ディスクアレイ装置で他装置とのデータ転送インタフェース動作を行うチャネルアダプタにおいて、１つのポート部を複数のプロセッサで制御する構成を採用しつつ、他装置からの要求（コマンド）に対応した処理を、特定のプロセッサに偏らせずに分散して効率的に実行でき、複数のプロセッサを有効に使用した作業が可能となる。これにより、ネットワークの転送レートの高速化に伴うデータ転送処理の高速化を図ることが可能となる。また特に、チャネルアダプタにおいて、他のプロセッサと直接相互に通信する手段を持たない、プロトコル部との通信手段のみ有する比較的簡単・安価な構成のプロセッサを用いて、処理の分散の実現が可能である。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【００２５】
（実施の形態１）
図１〜図１１は、本発明の実施の形態１におけるディスクアレイ装置について説明するための図である。実施の形態１のディスクアレイ装置では、コントローラを構成するＣＨＡにおいて、１つのポート部を２つのホストプロセッサ部で制御する構成で、２つのホストプロセッサで要求に対応した処理の分散を行うものである。ポート部で他装置から受信した要求（コマンド）を、プロトコル部から代表（マスタ）となる第１のホストプロセッサ部へ一旦転送し、この要求に対応した処理を第１のホストプロセッサでそのまま行うかどうかを、第１のホストプロセッサ及びＣＨＡ内の他ホストプロセッサの処理負荷状況を考慮しつつ判断し、判断に基づき他のホストプロセッサ部に処理を担当させる場合は第１のホストプロセッサ部とポート部のプロトコル部との通信を介して前記要求を第２のホストプロセッサ部に転送させて第２のホストプロセッサで処理を行わせる。
【００２６】
＜ハードウェア構成＞
まず、実施の形態１のディスクアレイ装置の全体構成について説明する。その後、本発明で特徴的な処理について説明する。図１は、実施の形態１のディスクアレイ装置１００のハードウェア外観構成を示す。特にディスクアレイ装置１００の正面から見た構成を示す。
【００２７】
図１において、ディスクアレイ装置１００は、一形態として、主にコントローラ（ディスクアレイ制御装置）１０を収容する制御筐体１２０と、主に複数のＨＤＤ３０を収容するＨＤＤ筐体１３０とで構成される。１つの制御筐体１２０の両側にＨＤＤ筐体１３０が配置されている。
【００２８】
制御筐体１２０では、後述するコントローラ１０を構成する複数のボード（回路基板）やその他電源や表示パネル等のユニットが図示しないバックボードを通じて接続されている。制御筐体１２０では、正面中央に、カバーで覆われたノート型ＰＣの形態の管理端末（ＳＶＰ）１６０が備えられている。カバーを開けることで管理端末１６０を使用できる。管理端末１６０の下部には、チャネルアダプタ（ＣＨＡ）１１を構成するボードなどを装着するための複数のスロットが設けられている。各スロットに１つのＣＨＡ１１などのボードが着脱可能である。一形態として８枚のＣＨＡ１１のボードが装着される。各スロットにはボードを抜き差しするためのガイドレールが設けられていて、ガイドレールに沿ってボードが抜き差しされる。各スロットの奥手方向にはボードをコントローラ１０と電気的に接続するためのコネクタが設けられており、ボード側のコネクタ部分が接続されることで接続状態となる。保守員等により、必要に応じてボードの増設、減設、交換が可能である。コントローラ１０を構成する他のディスクアダプタ１４等も同様に制御筐体１２０に装着される。ＨＤＤ筐体１３０では、ＨＤＤ３０をキャニスタ等の機構と一体化した構成のディスクユニットが、多数、多段にわたって着脱可能に接続される。
【００２９】
＜コンピュータシステム構成＞
図２は、ディスクアレイ装置１００を含むコンピュータシステム全体の構成を示す。コンピュータシステムは、ネットワーク３００を介して、１つ以上のディスクアレイ装置１００と、１つ以上の他装置４００が接続される構成である。他装置４００は、ユーザの使用するホストコンピュータ２００や管理サーバ２１０、あるいは他のディスクアレイ装置１００などである。ネットワーク３００は、メインフレーム系の通信プロトコルに対応したネットワークや、ＳＡＮ（Storage Area Network）やＬＡＮ（Local Area Network）などのネットワーク、あるいはそれらが混在するネットワークである。
【００３０】
他装置４００は、ネットワーク３００を介して、ディスクアレイ装置１００側のコントローラ１０のＣＨＡ１１との通信を制御する通信インタフェース装置を有する。管理サーバ２１０は、ディスクアレイ装置保守・管理用のソフトウェアをインストールしたコンピュータである。
【００３１】
ディスクアレイ装置１００は、主にコントローラ１０とこれに接続される複数のＨＤＤ３０（ディスクユニット）を備え、コントローラ１０の一部を構成するＣＨＡ１１によりネットワーク３００に接続される。また、あるディスクアレイ装置１００の設置場所（プライマリサイト）とは遠隔した場所（セカンダリサイト）に他のディスクアレイ装置１００を設置して遠隔で通信可能である。ディスクアレイ装置１００間で、例えばデータ保全のためのリモートコピーやレプリケーション等の実行が可能である。
【００３２】
ホスト２００は、ユーザが使用するコンピュータであり、例えばＰＣやワークステーションやメインフレームコンピュータである。ホスト２００は、コマンド（要求）をディスクアレイ装置１００に送信することで、ディスクアレイ装置１００の提供する各種機能を利用する。ホスト２００とディスクアレイ装置１００は、ネットワーク３００を介して所定の通信プロトコルで通信接続される。ホスト２００とディスクアレイ装置１００の通信は、ホスト２００がメインフレーム系である場合の接続では、ＥＳＣＯＮ（Enterprise System CONnection）（登録商標）やＦＩＣＯＮ（FIbre CONnection）（登録商標）などの通信プロトコルに従って行われる。また、ホスト２００がオープン系である場合の接続では、ＳＡＮやＬＡＮなどに対応した通信プロトコルに従って行われる。
【００３３】
コントローラ１０は、ＣＨＡ１１により他装置４００から受信したコマンドに従ってデータ記憶に係わる各種制御を行う。例えばホスト２００からのリードコマンドやライトコマンドを受信して、ＨＤＤ３０上の記憶ボリュームに対するデータ入出力処理（リード／ライト処理）を行う。またコントローラ１０は、他装置４００との間で、ディスクアレイ装置１００を管理するための各種コマンドの授受も行う。またＨＤＤ３０のグループに対してディスクアレイ（ＲＡＩＤグループ）を設定してＲＡＩＤグループ上に論理デバイス（ＬＤＥＶ）を設定可能で、所定のＲＡＩＤ方式での制御が可能である。
【００３４】
複数のＨＤＤ３０は、コントローラ１０の各ＤＫＡ１４と、ＦＣ−ＡＬ等の形式の接続線で接続される。コントローラ１０に接続される記憶装置としてはＨＤＤ３０に限らず、フレキシブルディスク装置、半導体記憶装置など様々なものを用いることができる。ＤＫＡ１４とＨＤＤ３０との間は、図２に示すようにスイッチ制御アダプタ群１６を介して接続される形態や、あるいは直接接続される形態などが可能である。更にＨＤＤ３０側をコントローラ１０と一体化構成にすることも可能である。
【００３５】
データは、１つ以上のＨＤＤ３０により提供される記憶ボリューム、すなわちディスク上の物理的な記憶領域または物理的な記憶領域上に論理的に設定される記憶領域（論理デバイスや論理ユニット）に記憶される。ＨＤＤ３０上に設定される記憶ボリュームとしては、ホスト２００からアクセス可能でユーザデータが格納されるユーザデータ領域や、システム制御のためのシステムデータ等の格納のために使用されるシステム領域等がある。また、ＣＨＡ１１などの制御単位ごとにアクセス可能な記憶ボリュームを割り当てることも可能である。また前記割り当てでは、複数のＣＨＡ１１で１つの記憶ボリュームを共有する設定も可能である。
【００３６】
ＨＤＤ３０では、ディスク上の物理的な記憶領域のどの位置にデータを読み書きするかを識別する位置情報（物理アドレス）を持つ。例えばＨＤＤ３０ではシリンダやトラックといった位置情報を指定することで、ランダムアクセスとしてディスク上の任意位置にデータを読み書き可能である。ディスク上へのデータ入出力の際は、ＤＫＡ１４等での処理により、論理アドレスとディスクにおける物理アドレスとの変換がなされる。
【００３７】
＜ホストコンピュータ＞
図３は、ディスクアレイ装置１００に通信接続されるホスト２００の機能ブロック構成を示す。ホスト２００は、ＣＰＵ２０１、メモリ２０２、ポート２０３、入力装置２０４、出力装置２０５、記憶装置２０６、記録媒体読取装置２０７などを備える。ＣＰＵ２０１によりメモリ２０２上のプログラムが実行されることにより様々な機能が実現される。メモリ２０２上にアプリケーションプログラム２０、利用プログラム２１を有する。ポート２０３は、ネットワーク３００に接続され、ディスクアレイ装置１００や他のホスト２００等との間で通信を行うための装置である。入力装置２０４は、ユーザによる操作のためのキーボードやマウスなどである。出力装置２０５は、情報を表示するためのディスプレイなどである。記憶装置２０３は、例えばＨＤＤや半導体記憶装置等である。記録媒体読取装置２０７は、記録媒体に記録されているプログラムやデータを読み取る装置である。読み取られたプログラムやデータは、メモリ２０２や記憶装置２０３に格納される。記録媒体は、例えばフレキシブルディスクやＣＤ−ＲＯＭ等である。
【００３８】
アプリケーションプログラム２０は、ディスクアレイ装置１００の提供する機能を利用したオンライン処理等を制御するためのプログラムである。ホスト２００は、ディスクアレイ装置１００の記憶ボリュームに記憶されているデータに適宜アクセスしながらアプリケーションプログラム２０を実行することで各種の情報処理サービスを提供する。情報処理サービスは、例えば銀行の自動預金預け払いシステムなどである。
【００３９】
利用プログラム２１は、ディスクアレイ装置１００の提供する各種機能を利用するためのプログラムであり、ＨＤＤ３０に対するデータ入出力のためのリード／ライトコマンド等の各種要求（コマンド）を発行するためのコマンド発行プログラム２２を備える。また特にホスト２００が管理サーバ２１０である場合は、利用プログラム２１は、管理端末１６０と同様に各種保守・管理のための機能を備える。
【００４０】
＜コントローラ＞
コントローラ１０は、ＣＨＡ（チャネルアダプタ）１１、ＳＭ（共有メモリ）１２、ＣＭ（キャッシュメモリ）１３、ＤＫＡ（ディスクアダプタ）１４、ＳＷ（スイッチ制御アダプタ）１５、及びバスなどを備える。ＣＨＡ１１等の各処理部がそれぞれボードにより実装される構成であり、各処理部間がＳＷ１５などにより相互に高速アクセス可能に接続される。各ボードは、ディスクアレイ装置１００の筐体に必要に応じて装着・接続される。また、各ボードを複数個用意して相互に接続することで、ＨＤＤ３０に対するデータパスを多重化した構成となる。本実施の形態では、各ＣＨＡ１１とＤＫＡ１４は、ＳＭ１２に対してバスで直接接続され、ＣＭ１３に対してＳＷ１５を介してバスで接続される。また、図示したようなコントローラ１０を更に二重化した形態なども可能である。多重化構成により、並列処理による性能向上や耐障害性が実現される。
【００４１】
各ＣＨＡ１１及びＤＫＡ１４は、内部ＬＡＮ１６２を通じて相互に通信可能に接続され、また管理端末（ＳＶＰ）１６０にも接続されている。これによりＣＨＡ１１やＤＫＡ１４に実行させるプログラムを管理端末１６０から送信してインストールすること等が可能となっている。
【００４２】
ＳＭ１２及びＣＭ１３は、ＣＨＡ１１、ＤＫＡ１４により共用されるメモリである。ＳＭ１２は、主に制御情報やコマンド等を記憶するために利用され、ＣＭ１３は、主にデータ（ユーザデータ）を記憶するために利用される。ＳＭ１２は、ＣＨＡ１１とＤＫＡ１４との間で授受されるコマンド等を一時的に保持する。ＣＭ１３は、ＣＨＡ１１とＤＫＡ１４との間で授受されるデータを一時的に保持する。図２に示す構成の場合、コントローラ１０で、同一機能のＳＭ１２及びＣＭ１３のボードをそれぞれ４枚接続した構成である。ＳＷ１５はＣＨＡ１１やＤＫＡ１４とＣＭ１３との間でのデータ転送の制御を行うもので、複数のＳＷ１５が存在する。図２に示す構成の場合、コントローラ１０で、同一機能のＳＷ１５のボードを４枚接続した構成である。
【００４３】
ＣＨＡ１１は、一体的にユニット化されたボード上に形成されたハードウェア及びこのハードウェアにより実行されるソフトウェアにより実現される。図２に示す構成では、コントローラ１０に、同一機能のＣＨＡ１１のボードを８枚接続した構成である。ＣＨＡ１１は本発明の特徴的な処理を実現する部位である。ＣＨＡ１１は、ディスクアレイ装置１００内に、他装置４００との通信プロトコルに応じて多品種、複数接続可能である。コントローラ１０でＣＨＡ１１として各通信プロトコルに対応したものを混在させて接続させることにより、異種ネットワークに接続されるディスクアレイ装置を実現できる。ＣＨＡ１１は、ホスト２００等の他装置４００からの要求を個々に受け付ける。ＣＨＡ１１は、ホスト２００側のポート２０３との間で、物理リンク及び物理リンク上の論理パスによって接続される。また他のＣＨＡ１１で、異なる物理リンク及び論理パスにより他装置４００に通信接続可能である。ＣＨＡ１１は、他装置４００からブロックアクセス要求等のアクセス要求を受けると、ＤＫＡ１４に対するデータ入出力要求に変換して出力する。またライト処理の場合には要求にライトデータが含まれるようにすることができる。
【００４４】
ＤＫＡ１４は、ＨＤＤ３０に対する制御を行う。図２に示す構成の場合、コントローラ１０で、同一機能のＤＫＡ１４のボードを８枚接続した構成である。ＤＫＡ１４は、例えばＣＨＡ１１がホスト２００から受信したライトコマンドに従ってＨＤＤ３０上の記憶領域へライトデータの書き込みを行う。また、ＣＨＡ１１により送信された論理アドレス指定によるデータアクセス要求を、物理アドレス指定による物理ディスクへのデータアクセス要求に変換する処理などを行う。またＤＫＡ１４は、ＲＡＩＤグループに対するＲＡＩＤ制御を行う場合には、ＲＡＩＤ方式に従って並列アクセス等の制御を行う。またＤＫＡ１４は、ＨＤＤ３０に記憶されたデータのバックアップに関する制御や、プライマリサイトのディスクアレイ装置１００のデータについての複製をセカンダリサイトのディスクアレイ装置１００に転送する制御等も可能である。
【００４５】
ＣＨＡ１１側とＤＫＡ１４側とにおけるデータやコマンドの授受は、ＳＭ１２、ＣＭ１３及びＳＷ１５等を介して行われる。ＣＨＡ１１とＤＫＡ１４の間での通信は例えば以下のようになる。あるＣＨＡ１１があるホスト２００から受信したコマンドがライトコマンドであった場合、当該ＣＨＡ１１は、ライトコマンドをＳＭ１２に書き込むと共に、ホスト２００から受信したライトデータ（書き込み対象データ）をＣＭ１３に書き込む。一方、ＤＫＡ１４は、ＳＭ１２を監視しており、ＳＭ１２にライトコマンドが書き込まれたことを検出すると、当該ライトコマンドに従ってＣＭ１３からライトデータを読み出してＨＤＤ３０に書き込む処理を行う。
【００４６】
また、あるＣＨＡ１１があるホスト２００から受信したコマンドがリードコマンドであった場合、当該ＣＨＡ１１は、リードコマンドをＳＭ１２に書き込むと共に、リードデータ（読み出し対象データ）がＣＭ１３上に存在するかどうか調べる。ここでＣＭ１３にリードデータが存在すれば、ＣＨＡ１１はそのリードデータをホスト２００に送信する処理を行う。一方、リードデータがＣＭ１３に存在しない場合は、ＳＭ１２を監視することによりリードコマンドがＳＭ１２に書き込まれたことを検出したＤＫＡ１４が、ＨＤＤ３０からリードデータを読み出してこれをＣＭ１３に書き込むと共に、その旨をＳＭ１２に書き込む。そして、ＣＨＡ１１は、ＳＭ１２を監視することでリードデータがＣＭ１３に書き込まれたことを検出すると、そのリードデータをホスト２００に送信する処理を行う。
【００４７】
なお、このようにＣＨＡ１１からＤＫＡ１４に対するデータの書き込みや読み出しの指示を、ＳＭ１２を介在させて間接に行う構成の他、例えばＣＨＡ１１からＤＫＡ１４に対して前記指示をＳＭ１２を介さずに直接行う構成とすることもできる。また、ＳＭ１２及びＣＭ１３がＣＨＡ１１及びＤＫＡ１４に対して独立に設けられた構成であるが、これに限らず、ＳＭ１２やＣＭ１３がＣＨＡ１１やＤＫＡ１４の各々に分散されて設けられる形態も可能である。この場合、分散されたメモリを有する各処理部が相互に接続される形態となる。
【００４８】
ディスクアレイ装置１００のコントローラ１０で制御する記憶ボリュームとしては例えば論理デバイス（ＬＤＥＶ）を扱う。ＬＤＥＶは、複数のＨＤＤ３０からなるＲＡＩＤグループ上に設定される記憶ボリュームであり、コントローラ１０によりＬＤＥＶ単位でＲＡＩＤ制御、例えばＲＡＩＤ５等の方式での制御が行われる。例えば、コントローラ１０により、４台のＨＤＤ３０｛＃１〜＃４｝で１つのＲＡＩＤグループが設定される。そして、このＲＡＩＤグループ上に、４台のＨＤＤ３０に跨るＬＤＥＶが複数設定される。ＬＤＥＶにおいて、例えばＨＤＤ＃０〜ＨＤＤ＃２にストライピングされたデータが格納され、ＨＤＤ＃３にそのパリティが格納される。また、ＨＤＤ３０上に設定される論理ユニット（ＬＵ）は、ホスト２００側からみた論理的な記憶ボリュームであり、ディスクアレイ装置１００側で物理的な記憶ボリュームに変換される。
【００４９】
＜管理端末＞
管理端末（ＳＶＰ）１６０は、ディスクアレイ装置１００の保守・管理を行うためのコンピュータであり、ディスクアレイ装置１００の保守・管理の処理のためのソフトウェアを備える。管理端末１６０は、ディスクアレイ装置１００に内蔵される形態や外付けされる形態が可能である。また管理端末１６０は、ディスクアレイ装置１００の保守・管理を専用に行うコンピュータの形態や、ＰＣに保守・管理機能を持たせた形態などが可能である。また、管理端末１６０は、ＬＡＮや電話回線等に接続可能であり、ディスクアレイ装置１００に対して遠隔で接続されるリモートコンソールの形態も可能である。また管理端末１６０は、ＬＡＮ等を通じて外部の保守センタなどと接続される。保守員は、管理端末１６０を操作して各種保守・管理の業務を行う。管理端末１６０を操作することにより、例えばＨＤＤ３０の物理ディスク構成や論理デバイスの設定、論理パスの設定、ＣＨＡ１１等において実行されるプログラムのインストール等を行うことができる。物理ディスク構成の設定としては、例えばＨＤＤ３０の増減設、ＲＡＩＤ構成の変更等を行うことができる。更に、ディスクアレイ装置１００の動作状態の確認や、故障部位の特定等の作業を行うこともできる。各種設定や制御は、管理端末１６０で動作するＷｅｂサーバが提供するＷｅｂページをユーザインタフェースとして行われる。
【００５０】
管理端末１６０は、ＰＣの形態である場合、ホスト２００のハードウェア構成と同様に、ＣＰＵ、メモリ、ポート、入力装置、出力装置、記憶装置、記録媒体読取装置等を備える。ＣＰＵがメモリ上の制御プログラムを実行することで保守・管理のための各種機能を実現する。メモリには、制御プログラムや、保守・管理に係わる各種情報が記憶される。管理端末１６０のポートは内部ＬＡＮ１６２に接続され、ＣＨＡ１１やＤＫＡ１４等と通信可能である。またポートをＬＡＮや電話回線等に接続することも可能である。
【００５１】
＜処理分散のための構成＞
図４は、他装置４００である１つのホストコンピュータ２００と、１つのディスクアレイ装置１００との接続構成と、ＣＨＡ１１における処理の分散のための構成の概要と、コマンドや入出力データの流れとを示す説明図である。以下、ＣＨＡ１１での処理について説明するにあたり、他装置４００は特にディスクアレイ装置１００に接続される上位装置となるホストコンピュータ２００であるものとして説明する。ＣＨＡ１１とホスト２００との間はファイバチャネル（ＦＩＢＲＥ）・インタフェースで接続されＦＩＢＲＥプロトコルに従った通信（コマンドやデータの授受）がなされる。ＦＩＢＲＥインタフェースに限らず、各種のＳＣＳＩ系やメインフレーム系のインタフェースで接続した構成で、本実施の形態で示す特徴的な処理を同様に実行可能である。
【００５２】
ホスト２００の有する利用プログラム２１は、ディスクアレイ装置１００に対してポート２０３を通じてコマンドや入出力データを送信する。例えば、ホスト２００は、ＣＨＡ１１に対してリードコマンドを送信し、ＨＤＤ３０上の記憶ボリュームからリードデータをリードさせリードデータを応答として受信する。また、ホスト２００は、ＣＨＡ１１に対してライトコマンド及びライトデータを送信し、ＨＤＤ３０上の記憶ボリュームに対してライトデータをライトさせ応答を受信する。ホスト２００は、ディスクアレイ装置１００内の記憶ボリュームに対するアクセスにおいて、コントローラ１０のＣＨＡ１１に対して、例えば、ＨＤＤ３０側でのデータアクセス単位であるブロック単位でのデータアクセス要求を送信する。
【００５３】
コントローラ１０でＣＨＡ１１は、通信プロトコルに従ったホスト２００側からのデータをＳＷ１５に転送する制御と、ＳＷ１５からのデータをホスト２００側にデータ転送する制御を行う。ＣＨＡ１１は、他装置４００から受信した要求（コマンド）に対応した処理を行う。ＣＭ１３は、ＳＷ１５からのデータをリード／ライトにより一時的に保管しておく。ＳＭ１２は、ＣＨＡ１１及びＤＫＡ１４の転送情報（データ転送に係わる制御情報）やその他の制御情報を保管しておく。ＳＭ１２は、ＣＭ１３側のようにＳＷ１５を介さず、複数のＣＨＡ１１及びＤＫＡ１４と直接にデータ転送を実施する。ＤＫＡ１４は、ＤＫＵ側のスイッチ制御アダプタ群１６からのデータをＣＭ１３側のＳＷ１５に転送する制御とＣＭ１３側のＳＷ１５からのデータをＤＫＵ側のＳＷ１５に転送する制御を行う。ＳＷ１５は、コントローラ１０において複数存在するＣＨＡ１１やＤＫＡ１４からのデータを、複数存在するＣＭ１３のどの領域に記憶するかを制御する。
【００５４】
ＤＫＵ群３１は、他装置４００から転送されるデータを含む各種データを磁気ディスク上の記憶領域に記憶するＨＤＤ３０を装填したＤＫＵの集合体である。ＤＫＵ群３１は、主に前記ＨＤＤ筐体１３０内に装着・接続される。スイッチ制御アダプタ群１６は、ＤＫＵ群３１におけるＨＤＤ３０からのデータをＤＫＡ１４側に転送する制御と、ＤＫＡ１４からのデータをＨＤＤ３０側に転送する制御とを行うもので、複数のスイッチ制御アダプタにより成る。
【００５５】
１つのＣＨＡ１１内には、ホスト２００側から要求を受信する１つのポート部４０と、要求に対応した処理を行う複数（２つ）のホストプロセッサ（ＨＰ）部５０｛５０Ａ，５０Ｂ｝と、ＣＭ１３側とのデータ転送制御を行うデータ転送制御部（ＤＴＣ）６０などを有し、複数（２つ）のＨＰ部５０の間で、処理の分散が行われる。図中の矢印に示すように、ホスト２００側からの要求はまずポート部で受信され、ポート部から代表（マスタ）となるＨＰ部（第１のＨＰ部）に要求が一旦転送される。要求を受信した第１のＨＰ部は、処理の分散に係わる判断処理を行って、処理を他のＨＰ部（第２のＨＰ部）に分散する場合は、ポート部にそのための通信を行い、ポート部が、前記第１のＨＰ部から処理分散先となる第２のＨＰ部に前記要求を転送して処理を行わせる。
【００５６】
＜ＣＨＡの構成＞
図５は、実施の形態１でのＣＨＡ１１の詳細構成を示すブロック図である。ＣＨＡ１１は、１つのポート部４０と、２つのＨＰ部５０と、データ転送制御部（ＤＴＣ）６０と、制御情報やデータの転送経路となるＰＣＩやＰＣＩ−Ｘ等のバスなどを有する構成である。本実施の形態では、ＣＨＡ１１内に２つのＨＰ部５０である第１のＨＰ部５０Ａと第２のＨＰ部５０Ｂとを有する構成を示す。ＨＰ部５０ＡとＨＰ部５０Ｂは性能が同等の構成である。その他、ＣＨＡ１１では、図示しない接続コネクタによりディスクアレイ装置１００のバックボードに設けられたコネクタに接続され、また図示しない通信コネクタに、ネットワーク３００に接続するための通信ケーブルが接続される。
【００５７】
ＣＨＡ１１で、各部がバスを介して接続される。バスに対し、ポート部４０のプロトコル部４２と、各ＨＰ部５０のＨＰ５１と、ＤＴＣ６０が接続される。バス上で、各ＨＰ部５０は、ポート部４０のプロトコル部４２との間で通信を行う。ＨＰ部５０間では直接の通信は行わない。ＤＴＣ６０は、ポート部４０のプロトコル部４２との間で通信を行う。ＤＴＣ６０はＣＭ３０に対してＳＷ１５を介して接続される。ＣＭ１３は、ＳＷ１５を介してホスト２００側とＨＤＤ３０側との入出力データ（リードデータやライトデータ）を一時的に保持する。
【００５８】
ポート部４０は、ネットワーク３００に接続され、通信プロトコルに従ってホスト２００との間でインタフェース動作を行う。ポート部４０は、トランシーバ（ＴＲ）４１とプロトコル部４２とを有する構成である。
【００５９】
トランシーバ４１は、ネットワーク３００に対するインタフェースであり、例えばＳｈｏｒｔｗａｖｅ、Ｌｏｎｇｗａｖｅの光信号を用いてホスト２００との通信を行う部分である。
【００６０】
プロトコル部４２は、ホスト２００とのインタフェース・プロトコルを制御するもので、その制御のための回路が形成されたＬＳＩである。プロトコル部４２は、各ＨＰ部５０のＣＨＡドライバ（５２Ａ，５２Ｂ）からの制御に基づき、トランシーバ４１を介してホスト２００とのデータ転送動作を行うと共に、ＤＴＣ６０を介してＣＭ１３との間でデータの転送を行う。
【００６１】
プロトコル部４２は、複数（２つ）のＨＰ部５０との通信手段として、ＨＰ部５０の個数に対応して、ＨＰ部５０との通信のための制御情報を格納する領域を備える。当該領域には、第１、第２のアウトバウンド・メッセージ・インポインタ（ＯＭＩと略称する）４３Ａ，４３Ｂ、第１、第２のインバウンド・メッセージ・アウトポインタ（ＩＭＯと略称する）４４Ａ，４４Ｂが含まれる。プロトコル部４２で、これら各ポインタに対応する領域にポインタ情報が格納される。なお、ＨＰ部５０からポート部４０への方向をアウトバウンド、ポート部４０からＨＰ部５０への方向をインバウンドと称している。ＯＭＩ４３Ａ及びＩＭＯ４４Ａは、第１のＨＰ部５１Ａとの通信のための領域であり、ＯＭＩ４３Ｂ及びＩＭＯ４４Ｂは、第２のＨＰ部５１Ｂとの通信のための領域である。
【００６２】
ＤＴＣ６０は、ホスト２００側のポート部４０とコントローラ１０内のＣＭ１３との間でデータを転送する制御を行う回路である。例えば、ＤＴＣ６０は、ホスト２００からのライトコマンドに対応したデータライト処理時に、ホスト２００より送信されるライトデータをポート部４０側からＣＭ１３の領域に転送して格納する制御を行う。また、ＤＴＣ６０は、ホスト２００からのリードコマンドに対応したデータリード処理時に、ＨＤＤ３０側からのリードデータをＣＭ１３の領域から読み出してポート部４０側に送信してホスト２００側に送信する制御を行う。
【００６３】
なお、ＤＴＣ６０が接続されデータ転送を行うメモリとして、ＤＴＣ６０にＣＨＡ１１外部で接続されるＣＭ１３との間でデータ転送を行う構成であるが、ＣＨＡ１１が接続されデータ転送を行うメモリとして、ＣＨＡ１１内でＤＴＣ６０に接続されるメモリを設ける構成としてもよい。例えば、ＣＨＡ内でＤＴＣ６０にメモリが接続される構成で、ＤＴＣ６０のデータ転送制御に基づき、当該メモリとＣＭ１３との間でデータ転送を行う。またＣＨＡ１１はＳＷ１５やＳＭ１２や管理端末１６０などに接続されるが、その接続部分は図中では省略して示す。
【００６４】
第１、第２のＨＰ部５０Ａ，５０Ｂは、それぞれ、ポート部４０を制御する処理部であり、ＨＰ５１Ａ，５１Ｂと、第１、第２のＣＨＡドライバ（図中ではＣＨＡ-Ｄ）５２Ａ，５２Ｂと、第１、第２のホストプロセッサ・ローカルメモリ（ローカルメモリと略称する）５３Ａ，５３Ｂで構成される。ＨＰ部５０は、ホスト２００側と、ＳＭ１２やＣＭ１３やＤＫＡ１４との間で、データやコマンドを入出力する制御を行う。
【００６５】
第１、第２のＨＰ５１Ａ，５１Ｂは、ポート部４０を制御するプロセッサである。第１、第２のＨＰ５１Ａ，５１Ｂはバスに接続され、またＨＰ部５０内で、それぞれ対応するローカルメモリ５３Ａ，５３ＢとＣＨＡドライバ５２Ａ，５２Ｂに接続される。各ＨＰ５１Ａ，５１Ｂは例えば１チップマイコンで構成され、前記データやコマンドの授受を制御してホスト２００側とＤＫＡ１４側とに対する通信を中継する。
【００６６】
第１、第２のローカルメモリ５３Ａ，５３Ｂは、ポート部４０のプロトコル部４２との通信を行うための領域を有する、ＨＰ部５０内に設けられたメモリである。第１、第２のローカルメモリ５３Ａ，５３Ｂの領域に、前記プロトコル部４２との通信及びデータ転送処理に関する制御を行うための各種情報が、第１、第２のＨＰ５１Ａ，５１Ｂやプロトコル部４２により書き込みされる。
【００６７】
第１、第２のＣＨＡドライバ５２Ａ，５２Ｂは、第１、第２のＨＰ５１Ａ，５１Ｂを動作させるためのマイクロプログラムであり、不揮発性メモリ上に格納される。第１、第２のＣＨＡドライバ５２Ａ，５２Ｂは、例えば管理端末１６０からのマイクロプログラムの書き込みにより更新可能される。第１、第２のＨＰ５１Ａ，５１Ｂは、第１、第２のＣＨＡドライバ５２Ａ，５２Ｂを実行することでＨＰとしての機能を実現する。各ＣＨＡドライバ５２Ａ，５２Ｂは、ポート部４０のプロトコル部４２を制御する処理を行う。
【００６８】
第１、第２のＨＰ部５０Ａ，５０Ｂは、プロトコル部４２との通信手段として、それぞれ、第１、第２のローカルメモリ５３Ａ，５３Ｂの領域に、アウトバウンド・メッセージ・格納領域（ＯＭ領域と略称する）５４Ａ，５４Ｂ、アウトバウンド・メッセージ・アウトポインタ（ＯＭＯと略称する）５５Ａ，５５Ｂ、インバウンド・メッセージ・格納領域（ＩＭ領域と略称する）５６Ａ，５６Ｂ、インバウンド・メッセージ・インポインタ（ＩＭＩと略称する）５７Ａ，５７Ｂ、データ情報格納領域（ＤＩ領域と略称する）５８Ａ，５８Ｂを有する。各ローカルメモリ５３Ａ，５３Ｂで、各ポインタに対応する領域（５５Ａ，５５Ｂ，５７Ａ，５７Ｂ）にポインタ情報が格納される。
【００６９】
プロトコル部４２において、第１、第２のＯＭＩ４３Ａ，４３Ｂは、第１、第２のＣＨＡドライバ５２Ａ，５２Ｂが発行した複数のアウトバウンド・メッセージ（ＯＭと略称する）における末尾のメッセージが、ＨＰ部５０の第１、第２のＯＭ領域５４Ａ，５４Ｂ内のどの位置であるかを示すための領域である。前記ＯＭは、第１、第２のＨＰ５１Ａ，５１Ｂがプロトコル部４２に対して動作指示するための情報である。
【００７０】
また、プロトコル部４２において、第１、第２のＩＭＯ４４Ａ，４４Ｂは、プロトコル部４２自身が第１、第２のＨＰ部５０Ａ，５０Ｂの第１、第２のＩＭ領域５６Ａ，５６Ｂを介して第１、第２のＨＰ５１Ａ，５１Ｂに対して通知した複数のインバウンド・メッセージ（ＩＭと略称する）のうち、第１、第２のＣＨＡドライバ５２Ａ，５２Ｂ（ＨＰ５１Ａ，５１Ｂ）が処理を完了したＩＭの位置を示すための領域である。前記ＩＭは、プロトコル部４２が第１、第２のＨＰ５１Ａ，５１Ｂに対してトランザクション情報／ステータス情報を通知するための情報である。
【００７１】
各ＨＰ部５０の第１、第２のローカルメモリ５３Ａ，５３Ｂにおいて、第１、第２のＯＭ領域５４Ａ，５４Ｂは、ＯＭを格納する領域である。当該領域には、ＯＭを複数個格納可能である。
【００７２】
同ローカルメモリ５３Ａ，５３Ｂにおいて、第１、第２のＯＭＯ５５Ａ，５５Ｂは、プロトコル部４２が次に処理する第１、第２のＯＭ領域５４Ａ，５４Ｂ内部のＯＭの格納位置を示す。
【００７３】
同ローカルメモリ５３Ａ，５３Ｂにおいて、第１、第２のＩＭ領域５６Ａ，５６Ｂは、プロトコル部４２によるＩＭを格納する領域である。当該領域には、ＩＭを複数個格納可能である。
【００７４】
同ローカルメモリ５３Ａ，５３Ｂにおいて、第１、第２のＩＭＩ５７Ａ，５７Ｂは、プロトコル部４２が第１、第２のＩＭ領域５６Ａ，５６Ｂ内のどの位置にＩＭの書き込みを行うかを示す。
【００７５】
同ローカルメモリ５３Ａ，５３Ｂにおいて、第１、第２のＤＩ領域５８Ａ，５８Ｂは、ＣＭ１３における、他装置４００との間でインタフェース・プロトコルに従って送受信するＤＡＴＡフレームの格納位置及び転送長を含むデータ情報を格納する領域である。
【００７６】
次に、上記構成のＣＨＡ１１で、他装置４００であるホスト２００とのリード／ライトデータ転送処理が行われる場合の処理動作を説明する。なお、前記ＩＭやＯＭの中にコマンド（要求）を含めることとしているが、別の情報として扱ってもよい。
【００７７】
＜ライト時の処理＞
図６，７，８は、実施の形態１のディスクアレイ装置１００における、他装置４００であるホスト２００からのライトコマンドに応じてライトデータをＨＤＤ３０へライトする際のライトデータ転送処理を示すフロー図である。図７は、図６に示す処理の続きを示す。図８は、図７に示す処理の続きを示す。例として、ＣＨＡ１１における２つのＨＰ部５０Ａ，５０Ｂにおいて、第１のＨＰ部５０Ａにおける第１のＨＰ５１Ａを、ホスト２００側からの要求を最初に受けるマスタ（代表）のプロセッサとした場合の処理を示す。
【００７８】
図６において、ＣＨＡ１１のポート部４０のトランシーバ４１でホスト２００からコマンド（ライトコマンド）を受信後、受信コマンドがポート部４０のプロトコル部４２へ転送される（Ｓ１０１）。以下、受信コマンドに対応した処理を担当するＨＰを決めるまではコマンドに係わるフェイズ（図中「ＣＭＤ」）である。次に、プロトコル部４２は、前記マスタのプロセッサに関する設定に従って、複数のＨＰ部５０のうちマスタとなる第１のＨＰ部５０Ａへ通知を行う。すなわち、プロトコル部４２は、第１のＨＰ部５０Ａの第１のローカルメモリ５３Ａにおける第１のＩＭ領域５６Ａに、受信コマンドと、「コマンドを受信した」旨のメッセージをＩＭとして格納する（Ｓ１０２）。上記メッセージは、言い換えれば、「第１のＨＰ部５０Ａで受信コマンドに対応する」旨の指示情報である。そして、プロトコル部４２は、ＩＭの格納に伴い、その位置を示すように第１のＩＭＩ５７Ａを更新する（Ｓ１０３）。
【００７９】
次に、第１のＨＰ部５０Ａでは、前記第１のＩＭＩ５７Ａの更新及びＩＭの参照に基づき、受信コマンドに対応した処理の担当先となるＨＰを自身とするか他のＨＰとするかを決めるために、自身を含む各ＨＰ部５０での処理の負荷の状態についての判断処理を行う（Ｓ１０４またはＳ１０５）。本実施の形態では、各ＨＰ５１Ａ，５１Ｂの処理負荷状態についての２通りの判断処理を示す。第１の判断処理では、ＣＨＡ１１内の各ＨＰ５１Ａ，５１Ｂにおける担当処理数を判断要因とする。第２の判断処理では、ＣＨＡ１１内の各ＨＰ５１Ａ，５１Ｂにおける処理量（概略）を判断要因とする。第１のＨＰ部５０Ａの第１のＣＨＡドライバ５２Ａは、前記第１、第２の判断処理のいずれかを行う。
【００８０】
第１の判断処理では、第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０におけるすべてのＩＭＩ５７Ａ，５７Ｂを読み、いずれのＨＰが最も少ない処理数で済むかを判断する（Ｓ１０４）。すなわち、第１のＣＨＡドライバ５２Ａは、前記ＩＭＩ５７Ａ，５７Ｂを読むことで対応するＩＭ領域５６Ａ，５６Ｂに格納されているＩＭの数を認識し、各ＨＰ５１Ａ，５１Ｂがすべき処理の数（担当処理数）を認識する。これにより各ＨＰ５１Ａ，５１Ｂの処理負荷量を概略で把握する。
【００８１】
第２の判断処理では、第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０におけるすべてのＩＭ領域５６Ａ，５６Ｂを読み、いずれのＨＰが最も少ないデータ転送処理であるかを判断する（Ｓ１０５）。第１のＣＨＡドライバ５２は、前記ＩＭ領域５６Ａ，５６Ｂを読むことで、格納されている受信コマンド及びＩＭに対応したデータ転送処理における処理量（複数のＩＭが有る場合はそれに対応する複数の処理の合計量）を概略で認識し、各ＨＰにおける処理負荷量を概略で把握する。例えば、第１のＣＨＡドライバ５２Ａは、前記データ転送処理で要する処理量を、受信コマンドに含まれるデータサイズやデータ転送回数などの情報から簡単な計算により求める。
【００８２】
次に、前記判断処理に基づき、第１のＨＰ部５０Ａの第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０のうち最も処理負荷が小さいと判断されるＨＰ部が、第１のＨＰ部５０Ａすなわち自身であった場合は（Ｓ１０６−ＹＥＳ−Ａ１）、自身で受信コマンドについての処理を担当することに決め、Ｓ１０７以下の処理を行う。また、第１のＨＰ部５０ＡのＣＨＡドライバ５２Ａは、複数のＨＰ部５０のうち最も処理負荷が小さいと判断されるＨＰ部が、第１のＨＰ部５０Ａではなく他のＨＰ部すなわち第２のＨＰ部５０Ｂであった場合は（Ｓ１０６−ＮＯ−α１）、第２のＨＰ部５０Ｂで受信コマンドについての処理を担当させることに決め、Ｓ１２１以下の処理を行う。実施の形態１では、２つのＨＰ部５０を有する構成なので前記処理の担当の移行先となる他のＨＰ部は第２のＨＰ部５０Ｂである。後述するように候補となる他のＨＰ部として複数のＨＰ部５０がある場合は、その中で最も処理負荷が小さいものを選択することとなる。
【００８３】
図７のＡ１、第１のＨＰ部５０Ａで処理を担当する場合において、第１のＣＨＡドライバ５２Ａは、第１のＩＭＩ５７Ａが示す第１のＩＭ領域５６Ａに格納されているＩＭ（受信コマンド及び情報）の内容を確認し、コマンドの内容に応じて、ホスト２００からのライトデータの受信に必要なキャッシュ領域をＣＭ１３内に確保する（Ｓ１０７）。
【００８４】
次に、第１のＣＨＡドライバ５２Ａは、ポート部４０のプロトコル部４２の第１のＩＭＯ４４Ａに、「ＩＭの内容を処理した」旨の通知情報を送信して格納する（Ｓ１０８）。この通知情報により、第１のＩＭＯ４４Ａに、第１のＣＨＡドライバ５２Ａが処理したＩＭの位置が示される。この後、データ転送の準備ができた状態であるフェイズ（図中「ＸＦＥＲ＿ＲＤＹ」）に移る。
【００８５】
次に、第１のＣＨＡドライバ５２Ａは、ホスト２００へのＸＦＥＲ＿ＲＤＹ（トランスファー・レディ：データ転送の準備ができたことを示す情報）を作成してＯＭとして第１のＯＭ領域５４Ａに格納した後に、ポート部４０のプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ１０９）。この更新は、プロトコル部４２に対し、ＸＦＥＲ＿ＲＤＹ送信指示を通知するためのものである。
【００８６】
次に、ポート部４０のプロトコル部４２は、更新された第１のＯＭＩが４３Ａ示す第１のＨＰ部５０Ａにおける第１のＯＭ領域５４Ａ内の位置にあるＸＦＥＲ＿ＲＤＹ送信指示を読み、第１のＯＭＯ５５Ａを更新することでＯＭ（前記送信指示）を読み取ったことを第１のＨＰ５０Ａに対して通知する（Ｓ１１０）。
【００８７】
次に、プロトコル部４２は、前記送信指示に基づき、ＸＦＥＲ＿ＲＤＹをホスト２００へ送信する（Ｓ１１１−Ａ２）。この後、データ転送を行うフェイズ（図中「ＤＡＴＡ」）に移る。
【００８８】
図８のＡ２、データ転送を行うフェイズにおいて、ポート部４０は、ホスト２００からデータフレームを受信する（Ｓ１１２）。受信データフレームはプロトコル部４２に転送される。次に、プロトコル部４２は、ＤＴＣ６０での制御を介して、第１のＨＰ部５０Ａにおける第１のＤＩ領域５８Ａで指定される、データ格納場所情報（アドレス及び転送長などの情報）に従って、ＣＭ１３内の前記キャッシュ領域として確保済みの領域へ受信データフレームを転送する処理を行う（Ｓ１１３）。
【００８９】
次に、プロトコル部４２は、ホスト２００からのデータフレームの受信を完了すると、第１のＨＰ部５０Ａの第１のＣＨＡドライバ５２Ａにデータ転送終了を通知するために、第１のローカルメモリ５３Ａにおける第１のＩＭＩ５７Ａを更新する（Ｓ１１４）。
【００９０】
次に、第１のＨＰ部５０Ａの第１のＣＨＡドライバ５２Ａは、前記第１のＩＭＩ５７Ａの更新に基づき、ＣＭ１３へのデータ転送後の状態をチェックしてから、プロトコル部４２の第１のＩＭＯ４４Ａを更新することで「ＩＭを処理した」旨を報告する（Ｓ１１５）。この報告により、「受信コマンドに対応したデータ転送処理（受信データフレームのＣＭ１３への転送）を完了した」ことがプロトコル部４２で認識される。この後、ホスト２００に対するレスポンスを行うフェイズ（図中「ＲＳＰ」）へ移る。
【００９１】
次に、第１のＣＨＡドライバ５２Ａは、ホスト２００へレスポンスのフレーム（ＲＳＰ）を送信するための情報（ＲＳＰ送信指示）をＯＭとして作成して第１のＯＭ領域５４Ａに格納し、この通知のためにプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ１１６）。
【００９２】
次に、プロトコル部４２は、前記第１のＯＭＩ４３Ａの更新に基づき、第１のＨＰ部５０Ａの第１のＯＭ領域５４Ａ内のＲＳＰ送信指示を読み、第１のＯＭＯ５５Ａを更新する。そして、前記送信指示に基づき、ＲＳＰをホスト２００へ送信する（Ｓ１１７）。
【００９３】
次に、プロトコル部４２は、第１のＨＰ５１ＡへＲＳＰ送信終了を通知するために第１のＨＰ部５０Ａにおける第１のＩＭ領域５６Ａへ「ＲＳＰ送信終了」の旨をＩＭとして書き込み、第１のＩＭＩ５７Ａを更新する（Ｓ１１８）。
【００９４】
次に、第１のＨＰ部５０Ａの第１のＨＰ５１Ａは、前記第１のＩＭＩ５７Ａの更新に基づき、第１のＩＭ領域５６Ａに格納されているＩＭでデータ転送終了状態をチェックして、前記「ＲＳＰ送信終了」を確認すると、プロトコル部４２の第１のＩＭＯ４４Ａを更新することで「コマンドに対応する処理を終了した」旨をプロトコル部４２に対して送信する（Ｓ１１９）。
【００９５】
一方、図７のα１、第２のＨＰ部５０Ｂで処理を担当する場合において、まず、第１のＨＰ部５０Ａの第１のＨＰ５１Ａは、第１のローカルメモリ５３Ａにおける第１のＩＭ領域５６Ａに格納されているコマンドを第１のＯＭ領域５４に転送し、これとあわせて「このコマンドを第２のＨＰ部５０Ｂへ転送する」旨の指示情報をＯＭとして格納して、これを通知するためにプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ１２１）。
【００９６】
次に、プロトコル部４２は、前記第１のＯＭＩ４３Ａの更新に基づき、第１のＨＰ部５０Ａの第１のＯＭ領域５４Ａの内容（前記コマンド及び指示情報）を読み、コマンドを第２のＨＰ部５０Ｂの第２のローカルメモリ５３Ｂにおける第２のＩＭ領域５６Ｂへ転送する（Ｓ１２２）。
【００９７】
次に、プロトコル部４２は、前記コマンドの転送に伴い、第１のＨＰ部５０Ａの第１のＯＭＯ５５Ａを更新する（Ｓ１２３）。次に、プロトコル部４２は、前記コマンドの転送に伴い、第２のＨＰ部５０Ｂの第２のＩＭ領域５６Ｂに格納されたコマンドの位置を示すように第２のＩＭＩ５７Ｂを更新する（Ｓ１２４）。
【００９８】
次に、第２のＨＰ部５０Ｂの第２のＣＨＡドライバ５２Ｂは、第２のＩＭＩ５７Ｂが示す第２のＩＭ領域５６Ｂに格納されているコマンドの内容を確認し、ホスト２００からのライトデータの受信に必要なキャッシュ領域をＣＭ１３内に確保する（Ｓ１２５）。
【００９９】
次に、第２のＣＨＡドライバ５２Ｂは、プロトコル部４２の第２のＩＭＯ４４Ｂに、「ＩＭの内容を処理した」旨の通知情報を送信して格納する（Ｓ１２６）。この通知情報により、第２のＩＭＯ４４Ｂに、第２のＣＨＡドライバ５２Ｂが処理したＩＭの位置が示される。この後、データ転送の準備ができた状態であるフェイズ（図中「ＸＦＥＲ＿ＲＤＹ」）に移る。
【０１００】
以下、第２のＨＰ部５０Ｂが、ポート部４０との間で、前記第１のＨＰ部５０Ａによる処理（Ｓ１０９〜Ｓ１１９）と同様に処理（Ｓ１２７〜Ｓ１３７）を行う。第２のＣＨＡドライバ５２Ｂは、ホスト２００へのＸＦＥＲ＿ＲＤＹを作成して第２のＯＭ領域５４Ｂに格納した後に、プロトコル部４２の第２のＯＭＩ４３Ｂを更新する（Ｓ１２７）。
【０１０１】
次に、ポート部４０のプロトコル部４２は、更新された第２のＯＭＩ４３Ｂが示す第２のＨＰ部５０Ｂにおける第２のＯＭ領域５４Ｂ内の位置にあるＸＦＥＲ＿ＲＤＹ送信指示を読み、第２のＯＭＯ５５Ｂを更新することでメッセージ（前記送信指示）を読み取ったことを第２のＨＰ５１Ｂに対して通知する（Ｓ１２８）。
【０１０２】
次に、プロトコル部４２は、前記送信指示に基づき、ＸＦＥＲ＿ＲＤＹをホスト２００へ送信する（Ｓ１２９−α２）。この後、データ転送を行うフェイズ（図中「ＤＡＴＡ」）に移る。
【０１０３】
図８のα２、データ転送を行うフェイズにおいて、ポート部４０は、ホスト２００からデータフレームを受信する（Ｓ１３０）。受信データフレームはプロトコル部４２に転送される。次に、プロトコル部４２は、ＤＴＣ６０での制御を介して、第２のＨＰ部５０Ｂにおける第２のＤＩ領域５８Ｂで指定される、データ格納場所情報に従って、ＣＭ１３内の領域へ受信データフレームを転送する処理を行う（Ｓ１３１）。
【０１０４】
次に、プロトコル部４２は、ホスト２００からのデータフレームの受信を完了すると、第２のＣＨＡドライバ５２Ｂにデータ転送終了を通知するために、第２のＩＭＩ５７Ｂを更新する（Ｓ１３２）。
【０１０５】
次に、第２のＣＨＡドライバ５２Ｂは、前記第２のＩＭＩ５７Ｂの更新に基づき、ＣＭ１３へのデータ転送後の状態をチェックしてから、プロトコル部４２の第２のＩＭＯ４４Ｂを更新することで「ＩＭを処理した」旨を報告する（Ｓ１３３）。この後、ホスト２００に対するレスポンスを行うフェイズ（図中「ＲＳＰ」）へ移る。
【０１０６】
次に、第２のＣＨＡドライバ５２Ｂは、ホスト２００へレスポンスのフレーム（ＲＳＰ）を送信するための情報（ＲＳＰ送信指示）をＯＭとして作成して第２のＯＭ領域５４Ｂに格納し、この通知のためにプロトコル部４２の第２のＯＭＩ４３Ｂを更新する（Ｓ１３４）。
【０１０７】
次に、プロトコル部４２は、前記第２のＯＭＩ４３Ｂの更新に基づき、第２のＨＰ部５０Ｂの第２のＯＭ領域５４Ｂ内のＲＳＰ送信指示を読み、第２のＯＭＯ５５Ｂを更新する。そして、前記送信指示に基づき、ＲＳＰをホスト２００へ送信する（Ｓ１３５）。
【０１０８】
次に、プロトコル部４２は、第２のＨＰ５１ＢへＲＳＰ送信終了を通知するために第２のＩＭ領域５６Ｂへ「ＲＳＰ送信終了」の旨をＩＭとして書き込み、第２のＩＭＩ５７Ｂを更新する（Ｓ１３６）。
【０１０９】
次に、第２のＨＰ５１Ｂは、前記第２のＩＭＩ５７Ｂの更新に基づき、第２のＩＭ領域５６Ｂに格納されているＩＭでデータ転送終了状態をチェックして、前記「ＲＳＰ送信終了」を確認すると、プロトコル部４２の第２のＩＭＯ４４Ｂを更新することで「コマンドに対応する処理を終了した」旨をプロトコル部４２に対して送信する（Ｓ１３７）。
【０１１０】
＜リード時の処理＞
図９，１０，１１は、実施の形態１のディスクアレイ装置における、他装置４００であるホスト２００からのリードコマンドに応じてＨＤＤ３０（ディスク）からのリードデータをホスト２００へ転送する際のリードデータ転送処理を示すフロー図である。図１０は、図９に示す処理の続きを示す。図１１は、図１０に示す処理の続きを示す。本リード時の処理の場合、前記ライト時の処理で示すデータ転送の準備ができた状態のフェイズ（前記「ＸＦＥＲ＿ＲＤＹ」）は存在しない。例として、ライト時と同様に、ＣＨＡ１１における２つのＨＰ部５０において、第１のＨＰ部５０Ａにおける第１のＨＰ５１Ａを、要求を最初に受けるマスタ（代表）のプロセッサとした場合の処理を示す。
【０１１１】
図９において、ＣＨＡ１１のポート部４０のトランシーバ４１でホスト２００からコマンド（リードコマンド）を受信後、受信コマンドがポート部４０のプロトコル部４２へ転送される（Ｓ２０１）。以下、受信コマンドに対応した処理を担当するＨＰを決めるまではコマンドに係わるフェイズ（図中「ＣＭＤ」）である。次に、プロトコル部４２は、マスタのプロセッサに関する設定に従って、複数のＨＰ部５０のうちマスタとなる第１のＨＰ部５０Ａへ通知を行う。すなわち、プロトコル部４２は、第１のＨＰ部５０Ａの第１のローカルメモリ５３Ａにおける第１のＩＭ領域５６Ａに、受信コマンドと、「コマンドを受信した」旨のメッセージをＩＭとして格納する（Ｓ２０２）。上記メッセージは、言い換えれば、「第１のＨＰ部５０Ａで受信コマンドに対応する」旨の指示情報である。そして、プロトコル部４２は、ＩＭの格納に伴い、その位置を示すように第１のＩＭＩ５７Ａを更新する（Ｓ２０３）。
【０１１２】
次に、第１のＨＰ部５０Ａでは、前記ライト時の判断処理と同様に、前記第１のＩＭＩ５７Ａの更新及びＩＭの参照に基づき、処理の担当先となるＨＰを自身とするか他のＨＰとするかを決めるために、各ＨＰ部５０Ａ，５０Ｂでの処理の負荷の状態についての判断処理を行う（Ｓ２０４またはＳ２０５）。第１のＣＨＡドライバ５２Ａは、前記第１、第２の判断処理のいずれかを行う。第１の判断処理では、第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０におけるすべてのＩＭＩ５７Ａ，５７Ｂを読み、いずれのＨＰが最も少ない処理数で済むかを判断する（Ｓ２０４）。第２の判断処理では、第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０におけるすべてのＩＭ領域５６を読み、いずれのＨＰが最も少ないデータ転送処理であるかを判断する（Ｓ２０５）。
【０１１３】
次に、前記判断処理に基づき、第１のＨＰ部５０の第１のＣＨＡドライバ５２Ａは、複数のＨＰ部５０のうち最も処理負荷が小さいと判断されるＨＰ部が、第１のＨＰ部５０Ａすなわち自身であった場合は（Ｓ２０６−ＹＥＳ−Ｂ１）、自身で受信コマンドについての処理を担当することに決め、Ｓ２０７以下の処理を行う。また、第１のＨＰ部５０ＡのＣＨＡドライバ５２Ａは、複数のＨＰ部５０のうち最も処理負荷が小さいと判断されるＨＰ部が、第１のＨＰ部５０Ａではなく他のＨＰ部すなわち第２のＨＰ部５０Ｂであった場合は（Ｓ２０６−ＮＯ−β１）、第２のＨＰ部５０Ｂで受信コマンドについての処理を担当させることに決め、Ｓ２２１以下の処理を行う。
【０１１４】
図１０のＢ１、第１のＨＰ部５０Ａで処理を担当する場合において、第１のＣＨＡドライバ５２Ａは、第１のＩＭＩ５７Ａが示す第１のＩＭ領域５６Ｂに格納されているＩＭ（受信コマンド及び情報）の内容を確認し、コマンドの内容に応じて、ディスクからのリードデータの送信に必要なキャッシュ領域をＣＭ１３内に確保する（Ｓ２０７）。
【０１１５】
次に、第１のＣＨＡドライバ５２Ａは、ポート部４０のプロトコル部４２の第１のＩＭＯ４４Ａに、「ＩＭの内容を処理した」旨の通知情報を送信して格納する（Ｓ２０８）。この通知情報により、第１のＩＭＯ４４Ａに、第１のＣＨＡドライバ５２Ａが処理したＩＭの位置が示される。この後、データ転送のフェイズ（図中「ＤＡＴＡ」）に移る。
【０１１６】
次に、第１のＣＨＡドライバ５２Ａは、ホスト２００へリードデータを送信するために必要な情報を第１のＤＩ領域５８Ａに格納する（Ｓ２０９）。
【０１１７】
次に、第１のＣＨＡドライバ５２Ａは、リードデータの送信指示をＯＭとして第１のＯＭ領域５４Ａに格納し、これを通知するためにプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ２１０）。
【０１１８】
次に、ポート部４０のプロトコル部４２は、更新された第１のＯＭＩ４３Ａが示す第１のＨＰ部５０Ａにおける第１のＯＭ領域５４Ａ内の位置にあるＯＭを読み、第１のＯＭＯ５５Ａを更新することでＯＭ（前記送信指示）を読み取ったことを第１のＨＰ５１Ａに対して通知する（Ｓ２１１）。
【０１１９】
次に、プロトコル部４２は、前記読み取ったＯＭにおけるリードデータの送信指示と、第１のＨＰ部５０Ａの第１のＤＩ領域５８Ａに格納されている情報に従って、ＤＴＣ６０とトランシーバ４１を介して、リードデータをＣＭ１３からホスト２００へ転送・送信する（Ｓ２１２）。
【０１２０】
次に、プロトコル部４２は、前記第１のＤＩ領域５８Ａの情報で指定されたリードデータのホスト２００への送信を完了した後、第１のＨＰ部５０Ａの第１のＣＨＡドライバ５２Ａに対してデータ転送終了通知のために第１のＩＭ領域５６Ａへその旨をＩＭとして書き込み、これとあわせて第１のＩＭＩ５７Ａを更新する（Ｓ２１３）。この後、ホスト２００に対するレスポンスを行うフェイズへ移る（Ｂ２、図中「ＲＳＰ」）。
【０１２１】
図１１のＢ２、レスポンスを行うフェイズにおいて、第１のＨＰ部５０Ａは、前記ライト時の処理と同様に処理を行う。第１のＣＨＡドライバ５２Ａは、ホスト２００へレスポンスのフレーム（ＲＳＰ）を送信するための情報（ＲＳＰ送信指示）をＯＭとして作成して第１のＯＭ領域５４Ａに格納し、この通知のためにプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ２１４）。
【０１２２】
次に、プロトコル部４２は、前記第１のＯＭＩ４３Ａの更新に基づき、第１のＨＰ部５０Ａの第１のＯＭ領域５４Ａ内のＲＳＰ送信指示を読み、第１のＯＭＯ５５Ａを更新する。そして、前記送信指示に基づき、ＲＳＰをホスト２００へ送信する（Ｓ２１５）。
【０１２３】
次に、プロトコル部４２は、第１のＨＰ５１ＡへＲＳＰ送信終了を通知するために第１のＨＰ部５０Ａにおける第１のＩＭ領域５６Ａへ「ＲＳＰ送信終了」の旨をＩＭとして書き込み、第１のＩＭＩ５７Ａを更新する（Ｓ２１６）。
【０１２４】
次に、第１のＨＰ部５０Ａの第１のＨＰ５１Ａは、前記第１のＩＭＩ５７Ａの更新に基づき、第１のＩＭ領域５６Ａに格納されているＩＭでデータ転送終了状態をチェックして、前記「ＲＳＰ送信終了」を確認すると、プロトコル部４２の第１のＩＭＯ４４Ａを更新することで「コマンドに対応する処理を終了した」旨をプロトコル部４２に対して送信する（Ｓ２１７）。
【０１２５】
一方、図１０のβ１、第２のＨＰ部５０Ｂで処理を担当する場合において、前記ライト時の処理と同様に、コマンドに係わるフェイズでの処理を行う。まず、第１のＨＰ部５０Ａの第１のＨＰは５１Ａ、第１のローカルメモリ５３Ａにおける第１のＩＭ領域５６Ａに格納されているコマンドを第１のＯＭ領域５４Ａに転送し、これとあわせて「このコマンドを第２のＨＰ部５０Ｂへ転送する」旨の指示情報をＯＭとして格納して、これを通知するためにプロトコル部４２の第１のＯＭＩ４３Ａを更新する（Ｓ２２１）。
【０１２６】
次に、プロトコル部４２は、前記第１のＯＭＩ４３Ａの更新に基づき、第１のＨＰ部５０Ａの第１のＯＭ領域５４Ａの内容（前記コマンド及び指示情報）を読み、コマンドを第２のＨＰ部５０Ｂの第２のローカルメモリ５３Ｂにおける第２のＩＭ領域５６Ｂへ転送する（Ｓ２２２）。
【０１２７】
次に、プロトコル部４２は、前記コマンドの転送に伴い、第１のＨＰ部５０Ａの第１のＯＭＯ５５Ａを更新する（Ｓ２２３）。次に、プロトコル部４２は、前記コマンドの転送に伴い、第２のＨＰ部５０Ｂの第２のＩＭ領域５６Ｂに格納されたコマンドの位置を示すように第２のＩＭＩ５７Ｂを更新する（Ｓ２２４）。
【０１２８】
次に、第２のＨＰ部５０Ｂの第２のＣＨＡドライバ５２Ｂは、第２のＩＭＩ５７Ｂが示す第２のＩＭ領域５６Ｂに格納されているコマンドの内容を確認し、ディスクからホスト２００へのリードデータの送信に必要なキャッシュ領域をＣＭ１３内に確保する（Ｓ２２５）。
【０１２９】
次に、第２のＣＨＡドライバ５２Ｂは、プロトコル部４２の第２のＩＭＯ４４Ｂに、「ＩＭの内容を処理した」旨の通知情報を送信して格納する（Ｓ２２６）。この通知情報により、第２のＩＭＯ４４Ｂに、第２のＣＨＡドライバ５２Ｂが処理したＩＭの位置が示される。この後、データ転送を行うフェイズ（図中「ＤＡＴＡ」）に移る。
【０１３０】
データ転送を行うフェイズで、第２のＨＰ部５０Ｂは、前記ライト時の処理と同様にデータ転送に係わる処理（Ｓ２２７〜２３２）を行う。
【０１３１】
第２のＣＨＡドライバ５２Ｂは、ホスト２００へリードデータを送信するために必要な情報を第２のＤＩ領域５８Ｂに格納する（Ｓ２２７）。
【０１３２】
次に、第２のＣＨＡドライバ５２Ｂは、リードデータの送信指示をＯＭとして第２のＯＭ領域５４Ｂに格納し、これを通知するためにプロトコル部４２の第２のＯＭＩ４３Ｂを更新する（Ｓ２２８）。
【０１３３】
次に、ポート部４０のプロトコル部４２は、更新された第２のＯＭＩ４３Ｂが示す第２のＨＰ部５０Ｂにおける第２のＯＭ領域５４Ｂ内の位置にあるＯＭを読み、第２のＯＭＯ５５Ｂを更新することでＯＭ（前記送信指示）を読み取ったことを第２のＨＰ５１Ｂに対して通知する（Ｓ２２９）。
【０１３４】
次に、プロトコル部４２は、前記読み取ったＯＭにおけるリードデータの送信指示と、第２のＨＰ部５０Ｂの第２のＤＩ領域５８Ｂに格納されている情報に従って、ＤＴＣ６０とトランシーバ４１を介して、リードデータをＣＭ１３からホスト２００へ転送・送信する（Ｓ２３０）。
【０１３５】
次に、プロトコル部４２は、前記第２のＤＩ領域５８Ｂの情報で指定されたリードデータのホスト２００への送信を完了した後、第２のＨＰ部５０Ｂの第２のＣＨＡドライバ５２Ｂに対してデータ転送終了通知のために第２のＩＭ領域５６Ｂへその旨をＩＭとして書き込み、これとあわせて第２のＩＭＩ５７Ｂを更新する（Ｓ２３１）。この後、ホスト２００に対するレスポンスを行うフェイズへ移る（図中「ＲＳＰ」）。
【０１３６】
次に、第２のＨＰ部５０Ｂの第２のＨＰ５１Ｂは、前記第２のＩＭＩ５７Ｂの更新に基づき、第２のＩＭ領域５６Ｂに格納されているＩＭでデータ転送終了後の状態をチェックして、前記データ転送終了を確認すると、プロトコル部４２の第２のＩＭＯ４４Ｂを更新することで「ＩＭの内容を処理した」旨を送信する（Ｓ２３２）
図１１のβ２、レスポンスを行うフェイズにおいて、第２のＨＰ部５０Ｂは、前記第１のＨＰ部５０Ａによる処理と同様に処理（Ｓ２３４〜Ｓ２３７）を行う。第２のＣＨＡドライバ５２Ｂは、ホスト２００へレスポンスのフレーム（ＲＳＰ）を送信するための情報（ＲＳＰ送信指示）をＯＭとして作成して第２のＯＭ領域５４Ｂに格納し、この通知のためにプロトコル部４２の第２のＯＭＩ４３Ｂを更新する（Ｓ２３４）。
【０１３７】
次に、プロトコル部４２は、前記第２のＯＭＩ４３Ｂの更新に基づき、第２のＨＰ部５０Ｂの第１のＯＭ領域５４Ｂ内のＲＳＰ送信指示を読み、第１のＯＭＯ５５Ｂを更新する。そして、前記送信指示に基づき、ＲＳＰをホスト２００へ送信する（Ｓ２３５）。
【０１３８】
次に、プロトコル部４２は、第２のＨＰ５１ＢへＲＳＰ送信終了を通知するために第２のＨＰ部５０Ｂにおける第２のＩＭ領域５６Ｂへ「ＲＳＰ送信終了」の旨をＩＭとして書き込み、第２のＩＭＩ５７Ｂを更新する（Ｓ２３６）。
【０１３９】
次に、第２のＨＰ部５０Ｂの第２のＨＰ５１Ｂは、前記第２のＩＭＩ５７Ｂの更新に基づき、第２のＩＭ領域５６Ｂに格納されているＩＭでデータ転送終了状態をチェックして、前記「ＲＳＰ送信終了」を確認すると、プロトコル部４２の第２のＩＭＯ４４Ｂを更新することで「コマンドに対応する処理を終了した」旨をプロトコル部４２に対して送信する（Ｓ２３７）。処理フローは以上である。
【０１４０】
以上説明したように、本実施の形態では、ポート部４０のプロトコル部４２を介して複数（２つ）のＨＰ部５０間で、ホスト２００等の他装置４００からの要求（コマンド）に応じた個々の処理の分散を行うことで、他装置４００はディスクアレイ装置１００側で応答するＨＰによらず、同一のアクセス対象からの応答として認識することができる。
【０１４１】
本実施の形態では、他装置４００からのコマンドに応じたある処理をどのＨＰが行うかを、あらかじめの設定などにより一意に決めることはせず、コマンド受信の都度における、マスタ（代表）となる第１のＨＰ部５０Ａ及びその他のＨＰ部（第２のＨＰ５０Ｂ）の処理負荷状態の判断に基づき、複数のＨＰで偏らないように決める。そのため、従来構成（テーブル情報に基づき処理の分散先を決定する方式）のように場合によって処理の担当先のプロセッサが偏って処理効率が低下することもなく、効率的に作業を行うことができる。
【０１４２】
また、本実施の形態では、あるプロセッサ（第１のＨＰ５１Ａ）から他のプロセッサ（第２のＨＰ５１Ｂ）に処理の担当を移行させる際は、その旨の情報を一旦ポート部４０のプロトコル部４２に読み取らせ、その後プロトコル部４２から処理の担当先となるプロセッサ（第２のＨＰ５１Ｂ）へとコマンドを転送して処理を担当させる。従って、従来構成（複数のプロセッサ間でコマンドを直接に転送して処理を分散する方式）のように、プロセッサ（ＨＰ５１Ａ，５１Ｂ）に、プロセッサ間で直接相互に通信を行う機能を備える必要がなく、比較的簡単・安価な構成で処理分散を実現することができる。
【０１４３】
本実施の形態についての変形例を説明する。まず、前記構成では、前記マスタ（代表）となる第１のＨＰ５１Ａを、ポート部４０のプロトコル部４２の設定に従って固定的に決定していたが、前記マスタとなるＨＰを、ＣＨＡ１１内における複数のＨＰ５０間で変動させる形態としてもよい。すなわち、ポート部４０で、マスタとなるＨＰを決める基準となる所定の条件を設定しておき、コマンド受信の際、当該条件に従ってマスタとなるＨＰを決める。その後の処理は同様である。
【０１４４】
また、前記構成では、前記マスタとなる第１のＨＰ５１Ａ（ＣＨＡドライバ５２Ａ）で、前記判断処理として、ＣＨＡ１１内の全ＨＰにおける処理負荷状態を判断して処理の担当先を決定していたが、前記第１のＨＰ５１Ａで、まず自身の処理負荷状態のみを判断し、自身に処理実行のための所定の余裕が有る場合は自身で処理を担当し、所定の余裕が無い場合はあらためて他のＨＰへ処理の担当を移行させるための判断及び移行処理を行うような処理形態としてもよい。例えば、前記第１のＨＰ５１Ａで、担当処理数が所定数以下であるか、あるいは、処理量が所定量以下であるかなどを認識して、前記所定の余裕があるかどうかを判断する。また、各ＨＰで処理担当数や処理量が均一になるように処理を分散する制御を行う以外にも、負荷判断条件の設定によって、意図的に所定の程度までマスタとなる第１のＨＰ部５０Ａに処理を偏らせる等の制御を行う形態も可能である。
【０１４５】
また、前記構成では、前記判断処理で、第１のＨＰ５１Ａが各ＨＰ部５０内のＩＭ領域５６Ａ，５６ＢやＩＭＩ５７Ａ，５７Ｂを読んで判断する処理形態としたが、ＣＨＡ１１内で第１のＨＰ５１Ａを含む複数のＨＰからアクセス可能な位置に、各ＨＰにおける処理負荷状態や処理担当状態の一覧を保持するテーブルを設け、前記判断処理の際に参照する形態としてもよい。例えば、ＣＨＡ１１内でバスに接続されるメモリ上に上記一覧を保持するテーブルの領域を設ける。またいずれかのＨＰで処理を行うことが決定した時などに上記テーブルの情報を更新する処理等を行う。
【０１４６】
また、前記構成で、複数のＨＰ部５０でいずれかのＨＰ部に障害が発生して処理を実行することができない状態となった場合は、その障害状態のＨＰ部以外で処理を担当させるように判断・制御することで効率的な処理が継続可能である。
【０１４７】
また、前記構成で、１つのポート部４０と複数のＨＰ部５０からなる構成単位を、ＣＨＡ１１内に複数設けた形態とすることも可能である。各構成単位で同様に処理の分散が行われる。
【０１４８】
また、前記構成での前記コントローラ１０の部分を二重化した冗長構成とすることも可能である。二重化構成により、他装置４００とコントローラ１０とＨＤＤ３０の間の通信のためのパスも多重化される。各コントローラ１０で独立して、同様に前記ＣＨＡ１１での処理の分散が行われる。
【０１４９】
（実施の形態２）
次に、実施の形態２のディスクアレイ装置について説明する。図１２は、実施の形態２のディスクアレイ装置における１つのＣＨＡ１１の機能ブロック構成を示す。実施の形態２は、ＣＨＡ１１内で、１つのポート部４０に対して３つ以上（ｎ個）のＨＰ部５０（ＨＰ部＃１〜＃ｎ）を設けた形態である。実施の形態２では、ｎ個のＨＰ部５０（５０Ａ，５０Ｂ，……，５０ｎ）のうち１つのＨＰ部（例えば第１のＨＰ部５０Ａ）を実施の形態１と同様にマスタ（代表）と設定して他装置４００からの要求をポート部４０を通じて最初に受けることとし、マスタのＨＰ部（５０Ａ）でのｎ個のＨＰ部５０（ＨＰ５１）における処理負荷状態の判断を行って、ｎ個のＨＰ部５０でコマンドに対応した処理の分散を行う。複数のＨＰ部５０の性能が同等の構成である。実施の形態２でのディスクアレイ装置全体及びコントローラ１０等の構成は実施の形態１と同様である。
【０１５０】
各ＨＰ部（＃１〜＃ｎ）５０の内部構成は実施の形態１に示す第１のＨＰ部５０Ａ等と同様である。ＨＰ部５０（５０Ａ，５０Ｂ，……，５０ｎ）に、それぞれＨＰ５１（５１Ａ，５１Ｂ，……，５１ｎ）を有する。また、各ＨＰ部５０で、ローカルメモリ５３にプロトコル部４２との通信手段を構成する領域、すなわち前記ＯＭ領域５４、ＯＭＯ５５、ＩＭ領域５６、ＩＭＩ５７、及びＤＩ領域５８を有する。
【０１５１】
ポート部４０のプロトコル部４２には、各ＨＰ部５０との通信手段を構成する領域、すなわちＯＭＩ４３｛４３Ａ，４３Ｂ，……，４３ｎ｝、ＩＭＯ４４｛４４Ａ，４４Ｂ，……，４４ｎ｝を有する。これは、複数（ｎ個）のＨＰ部５０と対応した分の領域である。その他、ＣＨＡ１１内の構成は実施の形態１と同様である。
【０１５２】
リード時／ライト時の各処理も、実施の形態１における処理と同様に、複数のＨＰ部５０間で処理の分散を行う。ライト時、ポート部４０でホスト２００等の他装置４００からライトコマンドを受信すると、例えば第１のＨＰ部５０Ａをマスタと設定しているなら、プロトコル部４２から第１のＨＰ部５０Ａ内の領域にコマンド及び通知情報が送信・格納される。第１のＨＰ部５０Ａでは、コマンドに対応した処理の担当先となるＨＰを決めるための各ＨＰの処理負荷状態に関する判断処理（前記第１または第２の判断処理）を、自身を含む複数のＨＰを対象として実施の形態１と同様に行う。第１のＨＰ部５０Ａは、例えば第ｎのＨＰ５０ｎが最も少ない処理負荷と認識したなら第ｎのＨＰ部５０ｎを処理の担当先と決定して、プロトコル部４２に対して第ｎのＨＰ部５０ｎに処理を担当させるために前記各領域を利用した情報の通知を行う。プロトコル部４２は、第１のＨＰ部５０Ａからの通知に基づき、第１のＨＰ部５０Ａから第ｎのＨＰ部５０ｎへコマンドを転送して、第ｎのＨＰ部５０ｎにコマンドに対応した処理を行わせる。
【０１５３】
実施の形態２では、ＣＨＡ１１内に設けられる、分散候補となるＨＰの数の増加に応じて、各ＨＰの処理負荷が減じることとなる。変形例としては、例えば、１つのポート部４０に対する複数（ｎ個）のＨＰ部５０を、いくつかのＨＰ部５０ごとにグループに分けて、各グループ内でマスタとなるＨＰを設けて同様に処理の分散を行う形態なども可能である。例えば、１つのポート部４０に対して４つのＨＰ部＃１〜＃４を有する構成で、ＨＰ部＃１，＃２を第１のグループ、ＨＰ部＃３，＃４を第２のグループとし、ＨＰ部＃１とＨＰ部＃３のＨＰをそれぞれマスタとして設定する。コマンド受信の際、ポート部４０から２つのマスタのＨＰのいずれかに対して最初にコマンドを送信する。そして、各グループ内で２つのＨＰのいずれかで処理を担当する。
【０１５４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１５５】
本発明は、１つのポート部と複数のプロセッサを有し、他装置からのコマンド（要求）に応じた処理を複数のプロセッサで分散する構成の装置を含んで構成されるコンピュータシステムに利用可能である。
【図面の簡単な説明】
【０１５６】
【図１】本発明の実施の形態１のディスクアレイ装置のハードウェア外観構成を示す図である。
【図２】本発明の実施の形態１のディスクアレイ装置を含むコンピュータシステム全体の構成を示す図である。
【図３】本発明の実施の形態１のディスクアレイ装置に通信接続されるホストコンピュータの機能ブロック構成を示す図である。
【図４】本発明の実施の形態１のディスクアレイ装置を含むコンピュータシステムで、他装置である１つのホストコンピュータと、１つのディスクアレイ装置との接続構成と、ＣＨＡにおける処理の分散のための構成の概要と、コマンドや入出力データの流れとを示す説明図である。
【図５】本発明の実施の形態１のディスクアレイ装置で、ＣＨＡの詳細構成を示すブロック図である。
【図６】本発明の実施の形態１のディスクアレイ装置における、他装置であるホストコンピュータからのライトコマンドに応じてライトデータをＨＤＤへライトする際のライトデータ転送処理を示すフロー図である。
【図７】本発明の実施の形態１のディスクアレイ装置における、ライトデータ転送処理の続きを示すフロー図である。
【図８】本発明の実施の形態１のディスクアレイ装置における、ライトデータ転送処理の続きを示すフロー図である。
【図９】本発明の実施の形態１のディスクアレイ装置における、他装置であるホストコンピュータからのリードコマンドに応じてＨＤＤからのリードデータをホストコンピュータへ転送する際のリードデータ転送処理を示すフロー図である。
【図１０】本発明の実施の形態１のディスクアレイ装置における、リードデータ転送処理の続きを示すフロー図である。
【図１１】本発明の実施の形態１のディスクアレイ装置における、リードデータ転送処理の続きを示すフロー図である。
【図１２】本発明の実施の形態２のディスクアレイ装置における１つのＣＨＡの機能ブロック構成を示す図である。
【符号の説明】
【０１５７】
１０…コントローラ、１１…チャネルアダプタ、１２…共有メモリ、１３…キャッシュメモリ、１４…ディスクアダプタ、１５…スイッチ制御アダプタ、１６…スイッチ制御アダプタ群、２０…アプリケーションプログラム、２１…利用プログラム、２２…コマンド発行プログラム、３０…ＨＤＤ、３１…ディスクユニット群、４０…ポート部、４１…トランシーバ、４２…プロトコル部、４３，４３Ａ，４３Ｂ，４３ｎ…アウトバウンド・メッセージ・インポインタ、４４，４４Ａ，４４Ｂ，４４ｎ…インバウンド・メッセージ・アウトポインタ、５０，５０Ａ，５０Ｂ，５０ｎ…ホストプロセッサ部、５１，５１Ａ，５１Ｂ，５１ｎ…ホストプロセッサ、５２，５２Ａ，５２Ｂ，５２ｎ…チャネルアダプタドライバ、５３，５３Ａ，５３Ｂ…ホストプロセッサ・ローカルメモリ、５４，５４Ａ，５４Ｂ…アウトバウンド・メッセージ格納領域、５５，５５Ａ，５５Ｂ…アウトバウンド・メッセージ・アウトポインタ、５６，５６Ａ，５６Ｂ…インバウンド・メッセージ格納領域、５７，５７Ａ，５７Ｂ…インバウンド・メッセージ・インポインタ、５８，５８Ａ，５８Ｂ…データ情報格納領域、６０…データ転送制御部、１００…ディスクアレイ装置、１２０…制御筐体、１３０…ＨＤＤ筐体、１６０…管理端末、１６２…内部ＬＡＮ、２００…ホストコンピュータ、２０１…ＣＰＵ、２０２…メモリ、２０３…ポート、２０４…入力装置、２０５…出力装置、２０６…記憶装置、２０７…記録媒体読取装置、２１０…管理サーバ、３００…ネットワーク、４００…他装置。
【図１】
2006107019.tif 000003
【図２】
2006107019.tif 000004
【図３】
2006107019.tif 000005
【図４】
2006107019.tif 000006
【図５】
2006107019.tif 000007
【図６】
2006107019.tif 000008
【図７】
2006107019.tif 000009
【図８】
2006107019.tif 000010
【図９】
2006107019.tif 000011
【図１０】
2006107019.tif 000012
【図１１】
2006107019.tif 000013
【図１２】
2006107019.tif 000014