(57)【要約】【課題】リクエストの送受信は同一ポートで行われるため、あるポートにリクエストが集中した場合、そのリクエスト全てを処理する必要があり、その分処理負荷が高くなる。【解決手段】ディスク制御装置内部の共有領域にリクエスト処理とその制御情報を記したテーブル、依頼可能なポートを記したテーブルを用意し、それを参照することで処理を依頼する。リクエストが集中しているポートの負荷を分散、及びリクエスト発行元に対するスループットが向上する。【選択図】図５
2008135048.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータと、複数のドライブを備えるディスク駆動装置との間に接続されたディスク制御装置であって、
該ディスク駆動装置を制御するディスク制御部と、チャネル制御部とを有し、
該チャネル制御部は、前記ホストコンピュータとの通信を行うための信号が通過する複数の入出力ポートとを備え、
該入出力ポートは、入出力ポートを通過する信号の制御をそれぞれ行なう複数の制御プロセッサを備え、
前記入出力ポートの１であり受信ポートと呼ばれる入出力ポートが、ホストコンピュータからのリクエストを受信すると、前記制御プロセッサの１であり該受信ポートと対応する制御プロセッサは、処理の予定数に基づき、前記ホストコンピュータからのリクエストを、前記チャネル制御部に選択され、かつ、依頼先ポートと呼ばれる入出力ポートに対応する制御プロセッサへ転送するかどうかを判断する
こと特徴とするディスク制御装置。
【請求項２】
前記ホストコンピュータのリクエストを受信した入出力ポートの識別子と、前記チャネル制御部により選択された依頼先ポートの識別子を含む制御情報とが記録されたアクセス依頼テーブルを備える
ことを特徴とする請求項１に記載のディスク制御装置。
【請求項３】
前記ホストコンピュータのリクエストが転送された依頼先ポートに対応する制御プロセッサを処理依頼先プロセッサと定義するとき、
該処理依頼先プロセッサは、
前記転送されたホストコンピュータからのリクエストの処理を行い、該処理依頼先プロセッサに対応する依頼先ポートから前記リクエストの応答をホストコンピュータへ送信する
ことを特徴とする請求項２に記載のディスク制御装置。
【請求項４】
前記リクエストの応答をホストコンピュータへ送信する際に、前記処理依頼先プロセッサは、前記アクセス依頼テーブルに基づき生成したパケット情報をホストコンピュータに対し送信する
ことを特徴とする請求項３に記載のディスク制御装置。
【請求項５】
前記アクセス依頼テーブルには、受信ポートが受け取ったリクエストの内容と、ディスク駆動装置から指定されたデータの取り出し処理を完了したことを示すフラグと、前記データの格納先を示すアドレスと、前記受信ポートが持っているリクエストに関する通し番号と、前記処理依頼先プロセッサが制御する依頼先ポートを使ったホストコンピュータに対するデータの送信が完了したことを示すフラグが記録される
ことを特徴とする請求項２に記載のディスク制御装置。
【請求項６】
前記受信ポートからリクエスト処理を依頼可能な入出力ポートを示すクロスコール管理テーブルを有する
ことを特徴とする請求項２に記載のディスク制御装置。
【請求項７】
前記アクセス依頼テーブルおよび前記クロスコール管理テーブルが格納される共有メモリを備える
ことを特徴とする請求項６に記載のディスク制御装置。
【請求項８】
前記受信ポート以外の入出力ポートに対応する制御プロセッサの各々は、前記アクセス依頼テーブルを参照することにより、前記リクエストの処理が自分宛に転送されたか否かを判断する
ことを特徴とする請求項２に記載のディスク制御装置。
【請求項９】
前記受信ポートの制御プロセッサは、ホストコンピュータからのリクエストを、該受信ポート以外の複数の入出力ポートに対してブロードキャストすることにより、前記リクエストの処理を他の制御プロセッサに対して依頼する
ことを特徴とする請求項２に記載のディスク制御装置。
【請求項１０】
前記受信ポートの制御プロセッサは、他の入出力ポートの１を選択し、該選択した入出力ポートに対して前記リクエストの処理を送信する
ことを特徴とする請求項２記載のディスク制御装置。
【請求項１１】
前記処理依頼先プロセッサは、ホストコンピュータへの応答が完了したことを前記受信ポートの制御プロセッサへ通知し、前記受信ポートの制御プロセッサは、前記通知に基づきホストコンピュータとの接続を切断する
ことを特徴とする請求項４に記載のディスク制御装置。
【請求項１２】
前記受信ポートの制御プロセッサへ通知する際に、前記処理依頼先プロセッサは、ホストコンピュータへの応答完了フラグを前記アクセス依頼テーブルに書き込み、前記受信ポートの制御プロセッサへ、ホストコンピュータへの応答完了を送信する
ことを特徴とする請求項１１に記載のディスク制御装置。
【請求項１３】
前記処理依頼先プロセッサは、複数の入出力ポートに対してホストコンピュータへの応答完了通知をブロードキャストすることにより、前記受信ポートに対してホストコンピュータへの応答完了を通知する
ことを特徴とする請求項１２に記載のディスク制御装置。
【請求項１４】
前記処理依頼先プロセッサは、
前記受信ポートに対してのみ、ホストコンピュータへの応答完了を通知する
ことを特徴とする請求項１２に記載のディスク制御装置。
【請求項１５】
ホストコンピュータと、複数のドライブを備えるディスク駆動装置との間に接続されたディスク制御装置であって、
該ディスク駆動装置を制御するディスク制御部と、チャネル制御部とを有し、
該チャネル制御部は、前記ホストコンピュータとの通信を行うための信号が通過する複数の入出力ポートとを備え、
該入出力ポートは、入出力ポートを通過する信号の制御をそれぞれ行なう複数の制御プロセッサを備え、
前記入出力ポートの１であり受信ポートと呼ばれる入出力ポートが、ホストコンピュータからのリクエストを受信すると、前記制御プロセッサの１であり該受信ポートと対応する制御プロセッサは、処理の予定数に基づき、前記ホストコンピュータからのリクエストを、前記チャネル制御部に依頼先プロセッサとして選択され、かつ、依頼先ポートと呼ばれる入出力ポートに対応する制御プロセッサへ転送するかどうかを判断すること特徴とするディスク制御装置において、
前記ディスク制御装置は、前記ホストコンピュータのリクエストを受信した入出力ポートの識別子と、前記チャネル制御部により選択された依頼ポートの識別子を含む制御情報とが記録されたアクセス依頼テーブルを備え、
前記処理依頼先プロセッサは、前記転送されたホストコンピュータからのリクエストの処理を行い、該処理依頼先プロセッサに対応する依頼先ポートから前記リクエストの応答をホストコンピュータへ送信し、
前記リクエストの応答をホストコンピュータへ送信する際に、前記処理依頼先プロセッサは、前記アクセス依頼テーブルに基づき生成したパケット情報をホストコンピュータに対し送信する
ことを特徴とするディスク制御装置。
【請求項１６】
前記アクセス依頼テーブルには、受信ポートが受け取ったリクエストの内容と、ディスク駆動装置から指定されたデータの取り出し処理を完了したことを示すフラグと、前記データの格納先を示すアドレスと、前記受信ポートが持っているリクエストに関する通し番号と、前記処理依頼先プロセッサが制御する依頼先ポートを使ったホストコンピュータに対するデータの送信が完了したことを示すフラグが記録される
ことを特徴とする請求項１５に記載のディスク制御装置。
【請求項１７】
前記受信ポートからリクエスト処理を依頼可能な入出力ポートを示すクロスコール管理テーブルを有することを特徴とする請求項１５に記載のディスク制御装置。
【請求項１８】
請求項３に記載のディスク制御装置において、
前記アクセス依頼テーブルおよび前記クロスコール管理テーブルが格納される共有メモリを備える
ことを特徴とする請求項１７に記載のディスク制御装置。
【請求項１９】
前記受信ポート以外の入出力ポートに対応する制御プロセッサの各々は、
前記アクセス依頼テーブルを参照することにより、前記リクエストの処理が自分宛に転送されたか否かを判断する
ことを特徴とする請求項１５に記載のディスク制御装置。
【請求項２０】
前記受信ポートの制御プロセッサは、ホストコンピュータからのリクエストを、該受信ポート以外の複数の入出力ポートに対してブロードキャストすることにより、前記リクエストの処理を他の制御プロセッサに対して依頼する
ことを特徴とする請求項１５に記載のディスク制御装置。
【請求項２１】
前記受信ポートの制御プロセッサは、他の入出力ポートの１を選択し、該選択した入出力ポートに対して前記リクエストの処理を送信する
ことを特徴とする請求項１５記載のディスク制御装置。
【請求項２２】
前記処理依頼先プロセッサは、ホストコンピュータへの応答が完了したことを前記受信ポートの制御プロセッサへ通知し、前記受信ポートの制御プロセッサは、前記通知に基づきホストコンピュータとの接続を切断する
ことを特徴とする請求項１５に記載のディスク制御装置。
【請求項２３】
前記受信ポートの制御プロセッサへ通知する際に、前記処理依頼先プロセッサは、ホストコンピュータへの応答完了フラグを前記アクセス依頼テーブルに書き込み、前記受信ポートの制御プロセッサへ、ホストコンピュータへの応答完了を送信する
ことを特徴とする請求項２２に記載のディスク制御装置。
【請求項２４】
前記処理依頼先プロセッサは、複数の入出力ポートに対してホストコンピュータへの応答完了通知をブロードキャストすることにより、前記受信ポートに対してホストコンピュータへの応答完了を通知する
ことを特徴とする請求項２３に記載のディスク制御装置。
【請求項２５】
前記処理依頼先プロセッサは、前記受信ポートに対してのみ、ホストコンピュータへの応答完了を通知する
ことを特徴とする請求項２３に記載のディスク制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続可能な複数の入出力ポートを備えたディスク制御装置を用いたネットワークストレージシステムに関し、アクセス集中に伴うネットワーク帯域の圧迫回避、及び入出力ポートを制御する制御プロセッサの負荷を軽減する技術に関する。
【背景技術】
【０００２】
複数台のディスク駆動装置に対するデータの格納、読み出しを行うディスク制御装置がある。ディスク駆動装置とディスク制御装置はあわせてディスクサブシステムと総称される。
【０００３】
図１には、ディスクサブシステムの一例を示す。１００は、ディスク制御装置であり、ホストコンピュータ、及びディスク駆動装置１４０とのインターフェースを持つ。１０５は、入出力チャネルであり、ホストコンピュータとの入出力インターフェースである。
【０００４】
１１０は、チャネル制御部であり、ホストコンピュータからのリクエスト処理をディスク制御装置内部に指示を与える。１１５は、チャネル制御部１１０―キャッシュメモリ制御部１２０・共有メモリ制御部１２５間接続パスであり、ユーザデータの通信、及び共有データの通信はこのパスを介して行う。１２０は、キャッシュメモリ制御部であり、ホストコンピュータ、及びディスク駆動装置１４０にあるユーザデータを一時的に格納するキャッシュメモリを備え、チャネル制御部１１０、またはディスク制御部１３５からのキャッシュメモリアクセスの制御を行う。１２５は、共有メモリ制御部であり、ディスク制御装置１００内部で行われる通信に関する制御情報、及びクロスコールを実現するためのテーブルを格納する共有メモリを備え、チャネル制御部１１０、及びディスク制御部１３５からの共有メモリアクセスの制御を行う。１３０は、ディスク制御部１３５−キャッシュメモリ制御部１２０・共有メモリ制御部１２５間接続パスであり、ユーザデータの通信、及び共有データの通信はこのパスを介して行う。１４０は、ディスク駆動装置であり、複数のドライブで構成されユーザデータなどを格納する。ホストコンピュータとディスクサブシステム間の接続形態は、技術的な背景、ユーザのニーズに伴い変化している。近年、インターネットの爆発的な普及、ギガビットイーサネットなどの登場によってネットワークインフラストラクチャの普及、高速化・帯域拡大が進んでいる。ここで、「イーサネット」は米国Xerox社の登録商標である。また、ＩＰ（Internet Protocol）を使ったネットワーク（以下、ＩＰネットワークと呼ぶ）には、低管理・運用コスト、ＬＡＮ（Local Area Network）に代表されるように相互接続性の良さなどの利点を持つことから、ＳＡＮ（Storage Area Network）へ適用する動きがある。ＳＡＮとは、１台以上のホストコンピュータ、１台以上のストレージ装置が接続されたネットワーク環境のことを指し、ストレージ装置としてはディスクアレイ装置（以下、ディスク制御装置と呼ぶ）などがある。
【０００５】
一方、ＩＰネットワークでは、ホストコンピュータとディスクサブシステム間の伝送経路は、ルーティングプロトコルで決定する。代表的なルーティングプロトコルとしては、ＲＩＰ（Route Information Protocol）、ＯＳＰＦ（Open Shortest Path First）などがある。
【０００６】
ＲＩＰは、経路制御情報をネットワーク上に送信し、ホストコンピュータとディスクサブシステム間の経路において通過するルータの数（ホップと呼ぶ）が一番少ない経路を選択する。ＯＳＰＦは、各ネットワークのリンク状態（トポロジ）情報を基に経路制御情報を生成し、隣接するルータ間で経路制御情報を交換する。ＯＳＰＦでは各リンクに重み（メトリックと呼ぶ）をつけ、そのメトリックが小さくなる経路を選択する。メトリックとは、ホップ数の他に、伝送遅延、回線スピード、トポロジ種などが含まれる。従って、複数のホストコンピュータからあるディスクサブシステムに対してリクエストを発行すると、上記のＲＩＰ、ＯＳＰＦによって決められた経路を使うため、その経路にアクセスが集中してしまう。加えて、ＩＰネットワーク上には不特定多数のユーザが存在し、かつディスクサブシステムに対するアクセスでは比較的大きなデータを要求することが多い。ディスクサブシステム側では、ディスク制御装置の入出力ポートにアクセスが集中し、その入出力ポートを制御している制御プロセッサに高負荷がかかってしまうため、転送性能の劣化につながる。
【０００７】
それを回避する技術としてホストコンピュータがメインフレームでESCON（Enterprise Systems Connection Architecture）チャネルで接続されたディスクサブシステムにおける、クロスコール機能（以下、ESCONクロスコールと呼ぶ）がある。ESCONクロスコールの目的は、ホストコンピュータからのアクセスに対し、要求されているデータをディスク駆動装置から取り出す（厳密には、ディスクのシーク時間）ときにかかるオーバヘッドを取り除くことによる転送性能の向上、及び障害発生時のフェールオーバである。
【０００８】
ESCONクロスコールは、複数のチャネル（チャネルパスグループと呼ぶ）間で実施されるもので、ホストコンピュータからのリクエストを受信した第一のチャネルとは異なる第二のチャネルからそのリクエストに対する応答を送信可能とする技術である。以下、ESCONクロスコールについて図１２，図１３を用いて説明する。
【０００９】
図１２は、機器構成を示している。１３０５はホストコンピュータであり、ディスク制御装置１３７０に対してリクエストを発行する。１３１０ａ、１３１１ａ、１３１２ａ、１３１３ａ、１３１４ａ、１３１５ａ、１３１６ａ、１３１７ａは、ESCONチャネルであり、メインフレーム対応の入出力インターフェースである。１３１０ｂ、１３１１ｂ、１３１２ｂ、１３１３ｂ、１３１４ｂ、１３１５ｂ、１３１６ｂ、１３１７ｂはチャネル制御プロセッサであり、ホストコンピュータ１３０５から受信したリクエストを解読し、そのリクエスト内容に従いディスク制御装置内部処理を指示する。
【００１０】
１３２０はキャッシュメモリであり、ホストコンピュータからのユーザデータ、及びディスク駆動装置１３４０のデータを一時的に格納するメモリ領域である。１３２５は、共有メモリであり、ディスク制御装置内部で必要な制御情報が格納されているメモリ領域である。１３３０、１３３１、１３３２、１３３３、１３３４、１３３５、１３３６、１３３７はディスク制御プロセッサであり、チャネル制御プロセッサからの要求に従いディスク駆動装置へのアクセスを制御する。１３４０は、ディスク駆動装置であり、複数のドライブで構成されデータを格納する装置である。１３５０は、ディスク制御部であり、ディスク制御プロセッサを含みディスク駆動装置とのインターフェースを持つ。１３６０は、チャネル制御部であり、チャネル制御プロセッサを含みホストコンピュータとのインターフェースを持つ。またホストコンピュータとのチャネルを複数有する。図１３では、１つのチャネル制御部１３６０につき４チャネル、２つのチャネル制御部で計８チャネル有しているが、１つのチャネル制御部あたりのチャネル数、及びディスク制御装置が有するチャネル制御部の数は、特に問わない。
【００１１】
図１３は、ESCONクロスコールのフローチャートを示している。図１３と合わせて以下、ESCONクロスコールに関してホストコンピュータ側、ディスク制御装置側それぞれの処理を説明する。前提として、第一のESCONチャネル１３１０ａ、第二のESCONチャネル１３１４ａがチャネルパスグループに属しているとし、第一のESCONチャネルよりリクエストを発行し、第二のESCONチャネルから応答が送信されるとする。ここで、チャネルパスグループとは、ホストコンピュータとディスク制御装置間の通信で、チャネルパスグループに属しているチャネルであれば、どのチャネルを使って通信をしても構わないチャネルを示すものである。従って、第一のESCONチャネルから送信されたリクエストの応答が第二のESCONチャネルから送信されても別に問題はない。
【００１２】
クロスコールアクセス開始１４００は、具体的にはディスク駆動装置にあるデータの読み出し処理である。以降、ディスク駆動装置のデータ読み出し処理を例にとり、上記の前提を踏まえた上で説明する。
【００１３】
まず、ホストコンピュータは第一のチャネル（１３１０ａ）で最初のリクエストを送信する（ステップ１４１０）。最初のリクエストを受け取ったディスク制御装置側のチャネル制御プロセッサ１３１０ｂは、リクエストの内容を解析する（ステップ１４１５）。このとき、ディスク駆動装置にあるデータの読み出しであると判断する。
【００１４】
チャネル制御プロセッサは、一旦第一のチャネルパスを切断し（ステップ１４２０）、ディスク駆動装置にあるデータの読み出しを指示し、ホストコンピュータに対してデータを送信する準備を行う（ステップ１４２５）。
【００１５】
ホストコンピュータに対してデータを送信する準備が完了したら、チャネルパスグループに属するチャネル制御プロセッサがデータ送信準備完了の旨を検出し（ステップ１４３０）、ホストコンピュータに対して再接続要求を発行する（ステップ１４３５）。
【００１６】
再接続要求を受信したホストコンピュータは、チャネルパスグループのチャネルの状況を見て、リクエストを再発行するチャネルを決定する。これは、最初にリクエストを発行したチャネルが別の処理を行っていたり、または何らかの障害で使用不可能になっている可能性があるためである。ここで、ホストコンピュータは第二のチャネルを選択し、リクエストを再発行する（ステップ１４４０）。ディスク制御装置側の第二のチャネルを制御するチャネル制御プロセッサはリクエストの内容を解析、準備されているデータをホストコンピュータへ送信する（ステップ１４４０）。ホストコンピュータはデータを受領（ステップ１４４５）し処理が終了する（ステップ１４５０）。
【００１７】
以上の動作から、１Ｉ／Ｏ単位で見てみると、リクエストを発行したチャネル（第一のESCONチャネル）とは異なるチャネル（第二のESCONチャネル）からリクエストの応答（ここでは、データ送信）をしていることになる。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ESCONクロスコールは、リクエストを受けたチャネルと同一のチャネルでそのリクエストの応答を返すことが基本である。従って、複数のホストコンピュータからのリクエストが同一のチャネルに集中した場合、逐次的に処理を行うことしか出来ず、伝送プロトコル処理、リクエストの解析等の処理に加えて、ディスクサブシステム内の処理も加わるため、当該チャネルを制御している制御プロセッサに高い負荷がかかってしまい、転送性能が劣化してしまう。
【００１９】
またESCONクロスコールは、複数のチャネルパスによって構成されるチャネルパ
スグループは、ホストコンピュータが複数のチャネルパスを有する場合でのみ有効な技術である。従って、ホストコンピュータが複数のチャネルパスを有していないシステムには適用できない。現状、ストレージとホストコンピュータの接続形態は多様化しているが、メインフレームのように複数のチャネルパスを備えているホストコンピュータは多くない。
【００２０】
更には、ホストコンピュータとディスクサブシステム側で矛盾のないようなチャネルパスグループの形成が必須であり、それを実現するためには、ホストコンピュータ側に何らかの機構を追加する必要がある。不特定多数のホストコンピュータが存在する中で、個々のホストコンピュータに対して何らかの機構が必須となるのは汎用性に欠ける。
【課題を解決するための手段】
【００２１】
本発明では、ホストコンピュータ側からのリクエストが特定の入出力ポートに集中した場合、他の入出力ポートの状況を見てリクエスト処理を依頼する処理をディスク制御装置内部で行う。これによって、信号入出力ポートを制御する制御プロセッサの負荷が軽減される。結果的に、外部環境、ホストコンピュータに特別な手段を設けることなく、ホストコンピュータに対して迅速に応答し、転送性能の向上を図ることが実現可能となる。
【００２２】
処理されたホストコンピュータのリクエストを最終的にホストコンピュータに返信する入出力ポートはディスク制御部が選択する。
【００２３】
また、本発明では、実際にホストコンピュータからリクエストを受信した入出力ポートがディスク制御装置の別の入出力ポートにリクエスト処理を依頼するときに、前記リクエストに関する制御情報を、チャネル制御部側とディスク制御部側とで双方からアクセス可能にした。これにより、ホストコンピュータとディスク制御装置間、実際にはリクエストを発行した入出力ポート間で交わした制御情報に関して矛盾が生じ無いようにした。
【発明の効果】
【００２４】
リクエストが集中しているチャネル制御プロセッサは高負荷となりスループット低下につながる。そこで、他のチャネル制御プロセッサに集中しているリクエストの処理を依頼することにより、自チャネル制御プロセッサの負荷を下げ、かつリクエスト発行元に対するスループットが向上する。
【発明を実施するための最良の形態】
【００２５】
［実施例１］
以下、本発明に係わるクロスコール機能を備えたディスク制御装置の実施例１を図面に示しさらに詳細に説明する。
【００２６】
図５は、本発明に係わるクロスコール機能を備えたディスク制御装置の実施例１における全体構成図を示している。５００は入出力パスであり、ホストコンピュータとディスク制御装置５０２内チャネル制御部５０５とを接続するパスである。なお、以下述べるチャネル制御部５０５、キャッシュメモリ制御部５２０，共有メモリ制御部５３０，ディスク制御部５５０は、信号が入出力される入出力端子をそれぞれ備えており、いずれの入出力端子も入出力ポートと呼ばれている。５０５はチャネル制御部であり、ホストコンピュータとのインタフェースを持ち、ホストコンピュータとのユーザデータ送受信、ディスク制御装置５０２内部の制御情報などの共有データ制御などを行う。チャネル制御部５０５は、ディスク制御装置５０２内に複数存在する。５１０は、チャネル制御部−キャッシュメモリ制御部・共有メモリ制御部間接続パスであり、ユーザデータの通信、及び共有データの通信はこのパスを介して行う。５２０は、キャッシュメモリ制御部であり、ホストコンピュータ、及びディスク駆動装置にあるユーザデータを一時的に格納するキャッシュメモリを備え、チャネル制御部、またはディスク制御部からのキャッシュメモリアクセスの制御を行う。
【００２７】
５３０は共有メモリ制御部であり、ディスク制御装置内部で行われる通信に関する制御情報、及びクロスコールを実現するためのテーブルを格納する共有メモリを備え、チャネル制御部、及びディスク制御部からの共有メモリアクセスの制御を行う。
【００２８】
５３５はアクセス依頼テーブルであり、クロスコールを実現する際、元々ホストコンピュータからリクエストを受信したチャネル制御部のチャネル制御プロセッサから、ディスク制御装置内の他の制御プロセッサに対してそのリクエストの処理を依頼する時に使うテーブルである。５４０はクロスコール管理テーブルであり、リクエストの処理を依頼可能なチャネル制御プロセッサ（ポート）を示すテーブルである。ディスク制御装置５０２に接続されている入出力パスの接続先が直接ホストコンピュータというケースもあれば、ネットワークを介してホストコンピュータと接続されているケースも考えられる。後者の場合、例えば第一の入出力パスからリクエストを受信して、第一の入出力パスとは異なる第二の入出力パスより応答を送信する例を考えると、第二の入出力パスがホストコンピュータが属するネットワークとは異なるネットワークに接続されていると、クロスコールを実施しても応答がホストコンピュータへ届かなくなる。届いたとしても、様々な経路を経てホストコンピュータへ到着するため、転送性能に多大な影響を与える。これを解決するための方法が、クロスコール管理テーブル５４０であり、入出力パス５００の接続先の状況から判断して、ホストコンピュータからのリクエストの応答を確実に送信可能な入出力パスを示す識別子を格納する。５４５は、ディスク制御部−キャッシュメモリ制御部・共有メモリ制御部間接続パスであり、ユーザデータの通信、及び共有データの通信はこのパスを介して行う。
【００２９】
５５０は、ディスク制御部であり、ディスク駆動装置５６０に対するアクセスの制御、及びキャッシュメモリ・共有メモリへのアクセスなどを行う。ディスク制御部５５０は、ディスク制御装置５０２内に複数存在する。５６０は、ディスク駆動装置であり、複数のドライブで構成されユーザデータなどを格納する。
【００３０】
図２は、本発明の実施例１におけるリクエスト依頼テーブル２００の内容を示している。
【００３１】
２０５は、リクエスト内容であり、元々リクエストを受信したチャネル制御プロセッサが書き込む領域で、依頼する処理内容を示す。２１０は、発行元ポート識別子であり、どこの入出力ポートのチャネル制御プロセッサからの依頼かを示す。２１５は、シーケンス番号であり、リクエストのパケットに付加されている通し番号を示し、リクエスト依頼を受けたチャネル制御プロセッサがホストコンピュータに応答を送信するときに生成されるパケットの構成情報として使う。２２０は、ポート番号であり、ホストコンピュータと入出力ポート間のコネクション関係を示す識別子であり、シーケンス番号２１５と同様に、ホストコンピュータに応答を送信するときに生成されるパケットの構成情報として使う。２２５は、準備完了フラグであり、リクエスト処理依頼を受けたチャネル制御プロセッサから指示された処理の結果、ホストコンピュータへ応答を送信可能な状態になったことを示すフラグである。準備完了フラグ２２５が’１’であれば、キャッシュメモリ上に所望のデータある状態を示し、’０’であれば、キャッシュメモリ上に所望のデータはまだ準備されていない状態、もしくはアイドル状態を示す。２３０は、キャッシュ格納先アドレスであり、所望のデータがキャッシュ上のどこに格納されたかを示すアドレスである。２３５は、データ転送終了フラグであり、リクエスト依頼を受けたチャネル制御プロセッサが管理する入出力パスを介して、ホストコンピュータへ応答を送信完了したことを示すフラグである。データ転送終了フラグ２３５が、’１’であればホストコンピュータへ応答を送信済み、’０’であれば送信中、もしくはアイドル状態を示す。
【００３２】
ここで、図８の現在の処理状況確認８０５において、準備完了フラグ、及びデータ転送終了フラグを用いて、他のチャネル制御プロセッサにリクエストを依頼するか判定を行う。
【００３３】
準備完了フラグ２２５が’０’、データ転送終了フラグ２３５が’０’であれば、レディ状態で、依頼可能であることを示す。
【００３４】
準備完了フラグ２２５が’０’、データ転送終了フラグ２３５が’１’であれば、このような状態は考えられないためエラーとなる。
【００３５】
準備完了フラグ２２５が’１’、データ転送終了フラグ２３５が’０’であれば、依頼を受けたチャネル制御プロセッサ管理の下、ホストコンピュータへ応答を送信中、または送信しようとしている状態を示す。準備完了フラグ２２５が’１’、データ転送終了フラグ２３５が’１’であれば、ホストコンピュータへの送信が完了した状態を示す。この状態の後、両フラグが’０’となりレディ状態へ遷移する。
【００３６】
図３は、本発明の実施例１におけるクロスコール管理テーブルの内容を示している。３０５は、発行元ポートであり、ディスク制御装置５０２内部のチャネル制御プロセッサ６０５を識別する識別子を示す。３１０は、依頼先ポートであり、図８の依頼先ポート確認８２５の際、どのポート（チャネル制御プロセッサ）に対して依頼可能かを示す。
【００３７】
図８のクロスコール管理テーブルリード８２０処理においては、自チャネル制御プロセッサに相当する識別子を指定して、依頼先ポート３１０を確認する。
【００３８】
図４は、ＴＣＰセグメントのフォーマットを示している。
【００３９】
４０５は送信元ポート番号であり、セグメントを送信したアプリケーション層サービスのポート番号を示す。４１０は送信先ポート番号であり、セグメントの受信側のアプリケーション層サービスのポート番号を示す。４１５はシーケンス番号であり、セグメントの送受信によりカウントアップされる番号を示す。４２０は確認応答番号であり、この確認応答番号−１の数だけデータを受信したことを示す。４２５はＤａｔａＯｆｆｓｅｔであり、セグメントのヘッダの長さを示す。４３０は予約領域（Ｒｓｖ．）であり、どのセグメントにおいてもあらかじめ決められた内容が示される。４３５はコードビットであり、コネクション制御等に使われる。例えば、コネクションを終了させるときには、この領域にＦＩＮを示す値がセットされる。４４０はウインドウサイズであり、送信元からどのくらいのデータサイズを送信可能かを示す。４４５はチェックサムであり、ヘッダとデータのチェックコードである。４５０は緊急ポインタであり、緊急を要する処理のデータフィールド４６５の終わりを示す。４５５はオプションであり、最大セグメント長を指定することが出来るフィールドである。４６０はパディングであり、データが３２ビット単位で始まっていることを保障するための領域である。
【００４０】
ホストコンピュータからリクエストを受信した入出力ポートから他の入出力ポートに処理を依頼した場合、プロトコル的に矛盾がないように、送信元ポート番号４０５、送信先ポート番号４１０、シーケンス番号４１５、確認応答番号４２０を依頼先の入出力ポートを制御するチャネル制御プロセッサへ、リクエスト依頼テーブルを介して伝達する。
【００４１】
図６は、本発明の実施例１におけるチャネル制御部の構成ブロックを示している。
【００４２】
６０５はチャネル制御プロセッサであり、ホストコンピュータから入出力パス５００を介して届いたリクエストの受信、解析を行い、解析したリクエストの内容に従い、ディスク制御装置内部に指示を与えるプロセッサである。６１０はデータ転送制御部であり、チャネル制御プロセッサ６０５からの指示により、ホストコンピュータから送信されたユーザデータの転送、及びディスク駆動装置にあるデータの読み出し処理を行う。６２０は共有データ制御部であり、制御情報等の共有データが格納されている共有メモリへのアクセスを制御する。
【００４３】
図７は、本発明の実施例１におけるホストコンピュータからリクエストを受信して、そのリクエスト処理を依頼するか判定するまでのフローチャートを示している。ステップ７１０では、他チャネル制御プロセッサからリクエスト依頼を受けたか判定する。もし、リクエスト依頼を受けている場合、ステップ７４０のデータ送信処理へ進む。リクエスト依頼を受けていなければ、ステップ７１５へ進む。ステップ７１５では、ホストコンピュータからリクエストを含むパケットを受信したか確認する。もしパケットを受信していなければ、ステップ７００のパケット受信処理の開始へ進む。受信していれば、ステップ７２０のＴＣＰ／ＩＰ処理へ進む。ステップ７２０では、受信したパケットからＳＣＳＩコマンドを抽出する処理を行う。ＳＣＳＩコマンドは、ＩＰパケットのデータグラムとしてカプセル化されてホストコンピュータから送信される。ステップ７２５では、ＳＣＳＩコマンドか判定する処理を行う。もし、ＳＣＳＩコマンドであれば、ステップ７４５のリクエスト依頼処理へ進む。もし、ＳＣＳＩコマンドではない場合、ステップ７３０のその他の処理へ進む。ステップ７３０では、ＩＰパケットのデータグラムが示す該当の処理を行い、再びステップ７００のパケット受信処理へ戻る。
【００４４】
一方、ステップ７４０のデータ送信処理、及びステップ７４５のリクエスト依頼処理に移っている間、ホストコンピュータからパケットを受信した場合、各入出力ポートにあるキューにそのリクエストを入れる。以上により、他チャネル制御プロセッサからリクエスト処理依頼を受けても、その処理を実行可能となる。
【００４５】
図８は、リクエスト依頼判定を行うフローチャートを示している。ステップ７４５によりＳＣＳＩコマンドリクエストを受けていると判断した場合、ステップ７４５のリクエスト依頼処理を開始する。ステップ８０５では、自チャネル制御プロセッサの処理状況を確認する。ディスク制御装置内部処理予定数（現在実行中の処理とジョブとして積まれている数の和）がある一定数を超えてないかで判定する。ステップ８１０では、ステップ８０５により自チャネル制御プロセッサで処理可能と判定した場合、ステップ８１５の通常処理へ進む。処理不可能であれば、他チャネル制御プロセッサへ依頼するということでステップ８２０へ進む。ステップ８１５では、自チャネル制御プロセッサで当該リクエスト処理を実行し、ステップ７００のパケット受信処理へ戻る。ステップ８２０では、クロスコール管理テーブルを読み出し、ステップ８２５でどのチャネル制御プロセッサへ処理を依頼可能か確認する。ステップ８３０では、依頼先ポートの準備完了フラグ２２５、及びデータ転送終了フラグ２３５から、依頼先ポートを決定する。ステップ８３５では、依頼可能な入出力ポートを制御するチャネル制御プロセッサがすべてビジーか判定する。すべてビジーの場合、自チャネル制御プロセッサで処理を実施することとし、ステップ８１５の通常処理へ進む。そうでなければステップ８４０へ進む。ステップ８４０では、リクエストの処理を依頼するために、アクセス依頼テーブルへ書き込みを行う。書き込む内容としては、処理内容、制御情報である。実施例１においては、発行元ポート識別子、シーケンス番号、ポート番号である。ここで、制御情報としては、シーケンス番号、ポート番号に限らず、ホストコンピュータと入出力ポート間で整合性を保つための情報を指す。ステップ８４０の後は、パケット受信処理７００へ戻る。
【００４６】
図９は、リクエスト処理依頼を受けたチャネル制御プロセッサのデータ送信処理のフローチャートを示している。ステップ７４５のデータ送信処理開始は、他のチャネル制御プロセッサからリクエスト処理依頼を受けていることを検知したときである。ステップ９０５では、アクセス依頼テーブルに書き込まれたリクエスト内容２０５を取得する。ステップ９１０では、ステップ９０５で取得したリクエスト内容２０５に従い処理を実施する。ステップ９１５では、ステップ９１０の処理が終了するまで待機し、終了した時点でステップ９２０へ進み、処理中はステップ９１５をループする。このとき、処理が終了したことを示す準備完了フラグ２２５が、ディスク制御部のディスク制御プロセッサによって書き込まれる。当該チャネル制御プロセッサは、その準備完了フラグ２２５によってリクエスト処理の終了を検知する。
【００４７】
ステップ９２０では、キャッシュメモリ上に格納されたデータを、アクセス依頼テーブル２００のキャッシュ格納先アドレス２３０に従い読み出す。ステップ９２５では、アクセス依頼テーブル２００の制御情報２０７を読み出し、ステップ９３０では、ステップ９２０で読み出したデータ、及びステップ９２５で読み出した制御情報２０７よりホストコンピュータへ送信するパケットを生成し、ステップ９３５のデータ送信処理を実施する。ステップ９４０では、ステップ９３５では、ステップ９３０の処理が終了したら、アクセス依頼テーブル２００のデータ転送終了フラグ２３５に書き込み、ステップ７００のデータ受信処理へ戻る。以上、図５から図９に示した実施例１によれば、複数の入出力パスを有するディスク制御装置において、ディスク制御装置内共有メモリに、アクセス依頼テーブル、クロスコール管理テーブルを持つことにより、ホストコンピュータからリクエストを受けた入出力パスを管理するチャネル制御プロセッサが、ディスク制御装置内の他の入出力ポートを管理しているチャネル制御プロセッサにそのリクエストの処理を依頼することで、装置全体の使用効率を上げ、依頼元のチャネル制御プロセッサの負荷を軽減させることが可能になる。
【００４８】
［実施例２］
以下に、本発明に係わるクロスコール機能を備えるディスク制御装置の別の実施例２を図面に示し詳細に説明する。なお、以下特に説明のない部分は実施例１と同じとする。本実施例で、実施例１と異なる所は、ホストコンピュータからのリクエストがデータリード処理で、リードデータをクロスコール管理テーブルに示されている複数の入出力ポートからデータを分割して送信する点である。
【００４９】
図１０は本発明の実施例２におけるアクセス依頼テーブル１０００を示している。実施例１と異なるところは、制御情報１０１５の内容である。実施例２では、実施例１の制御情報２０７に、ＩＤ１００５、データオフセット１０１０を追加している。
【００５０】
ＩＤ１００５は分割したデータの整合性をとるための識別子であり、ホストコンピュータへデータを送信するとき生成するパケットのＩＰヘッダ内のフラグフィールドに設定する。このようにすることで、複数の入出力ポートから送信されたパケットに対し、このフラグフィールドを参照することで、分割されたデータを復元可能となる。データオフセット１０１０は分割されたデータが分割前のデータのどこに位置しているかを示すものである。
【００５１】
図１１は本発明の実施例２におけるリクエスト依頼判定フローチャートを示している。実施例１と異なるところは、リクエストを受けたチャネル制御プロセッサが、依頼先ポートを確認後、アクセスするデータ長を依頼先ポートに対して割り当てる処理を追加した点である。ステップ１１０５では、ホストコンピュータからのリクエスト内容からアクセスデータ長を依頼先ポート数で割った値をアクセスデータ長とし、処理依頼内容を決定する。
【００５２】
以上より、複数の入出力ポートに渡り、並列に処理を実行できるためスループットが向上する。
【図面の簡単な説明】
【００５３】
【図１】ディスク制御装置の構成を示す図である。
【図２】本発明の実施例１におけるアクセス依頼テーブルの内容を示す図である。
【図３】本発明の実施例１におけるクロスコール管理テーブルの内容を示す図である。
【図４】ＴＣＰパケットヘッダの内容を示す図である。
【図５】本発明の実施例１における全体構成を示す図である。
【図６】本発明の実施例１におけるチャネル制御部の構成ブロックを示す図である。
【図７】本発明の実施例１におけるホストコンピュータからリクエストを受信してコマンド解釈までのフローチャートを示す図である。
【図８】本発明の実施例１におけるコマンド解析からリクエスト処理依頼先ポートに対する依頼処理までのフローチャートを示す図である。
【図９】本発明の実施例１おけるディスク駆動装置からのデータ取り出しからリクエスト依頼先プロセッサがホストコンピュータに対するデータ送信完了までのフローチャートを示す図である。
【図１０】本発明の実施例２におけるアクセス依頼テーブルの内容を示す図である。
【図１１】本発明の実施例２におけるコマンド解析からリクエスト処理依頼先ポートに対する依頼処理までのフローチャートを示す図である。
【図１２】ESCONクロスコールにおける全体構成を示す図である。
【図１３】ESCONクロスコール処理のフローチャートを示す図である。
【符号の説明】
【００５４】
５００…入出力パス、５０２…ディスク制御装置、５０５…チャネル制御部、５１０…チャネル制御部−キャッシュメモリ制御部・共有メモリ制御部間接続パス、５２０…キャッシュメモリ制御部、５３０…共有メモリ制御部、５３５…アクセス依頼テーブル、５４０…クロスコール管理テーブル、５４５…ディスク制御部−キャッシュメモリ制御部・共有メモリ制御部間接続パス、５５０…ディスク制御部、５６０…ディスク駆動装置。
【図１】
2008135048.tif 000003
【図２】
2008135048.tif 000004
【図３】
2008135048.tif 000005
【図４】
2008135048.tif 000006
【図５】
2008135048.tif 000007
【図６】
2008135048.tif 000008
【図７】
2008135048.tif 000009
【図８】
2008135048.tif 000010
【図９】
2008135048.tif 000011
【図１０】
2008135048.tif 000012
【図１１】
2008135048.tif 000013
【図１２】
2008135048.tif 000014
【図１３】
2008135048.tif 000015