(57)【要約】【課題】受信バッファ面数の不足による性能低下の発生を緩和する。【解決手段】チャネル装置４２は、複数のポートを介して受信されるフレームを格納する複数面の受信バッファ４２４と、チャネルプロセッサ４２１を有し、入出力処理装置４と複数の入出力装置６との間で複数のポート４２９を介してフレームを送受信する。チャネルプロセッサでプログラムを実行することにより、フレームを受信した時にそのポートの受信バッファの使用状況を判定し、その判定に応じて該ポートに受信バッファを追加して割り当て、その後該ポートに追加された受信バッファを回収して、共通の受信バッファに戻す。【選択図】図２
2011135454.tif 000002
【特許請求の範囲】
【請求項１】
入出力処理装置と複数の入出力装置との間で、複数のポートを介してフレームを送受信するチャネル装置において、
複数のポートを介して受信されるフレームを格納する複数面の受信バッファと、
該ポートごとに割り当てられた受信バッファの面数及びその使用状況を管理する管理手段と、
あるポートがフレームを受信した時に、該ポートの受信バッファを追加するか否かを判定する手段と、
該判定手段の判定に応じて、該ポートに受信バッファの面を追加して割り当てる手段と、
該ポートに追加して割り当てられた受信バッファを回収する手段と、を有することを特徴とするチャネル装置。
【請求項２】
前記管理手段は、ポートごとに予め設定された、使用可能な受信バッファの面数を格納する第１カウンタと、ポートごとに現在何面の受信バッファが使用中かを表す面数を格納する第２カウンタとを有し、
更に、前記判定手段による判定に使用される、ポートごとに予め設定された閾値を保持する手段を有し、
前記判定手段は、あるポートについて、該保持手段が保持する閾値と、該第２カウンタの値を比較して、該第２カウンタの値が該閾値を超えている場合に、受信バッファを１面ずつ追加するように判断することを特徴とする請求項１のチャネル装置。
【請求項３】
複数面の受信バッファを有するチャネル装置において、複数の入出力装置から送信され、複数のポートを介して受信されるフレームを格納する受信バッファの制御方法であって、
該ポートごとに割り当てられた受信バッファの面数及びその使用状況を管理するステップと、
あるポートがフレームを受信した時に、該ポートの受信バッファを追加するか否かを判定するステップと、
該判定に応じて、該ポートに受信バッファを追加して割り当てるステップと、
該ポートに追加して割り当てられた受信バッファを回収するステップと、
を有することを特徴とする受信バッファの制御方法。
【請求項４】
前記判定ステップは、各ポートに予め設定された受信バッファの面数の閾値と、使用中の受信バッファの面数を比較して、使用中の受信バッファの面数が該閾値を超えている場合に、受信バッファを１面ずつ追加するように判断する、ことを特徴とする請求項３の受信バッファの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はチャネル装置及び受信バッファの制御方法に係り、特にフレーム単位で入出力動作を実行する情報処理システムにおいて、入出力装置との間でフレームを送受信するためにバッファを具備するチャネル装置及び受信バッファの制御方法に関する。
【背景技術】
【０００２】
情報処理システムは、一般に、命令を実行する命令プロセッサ（ＩＰという）、ＩＰが実行した入出力命令により入出力装置（Ｉ／Ｏという）と入出力動作を行なう入出力処理装置（ＩＯＰという）、端末からの操作により制御を可能とするサービスプロセッサ（ＳＶＰという）を備えている。ＩＯＰは、入出力動作を行なう複数のチャネル装置（ＣＨという）と入出力動作を行なうチャネル装置を選択する機能を持つチャネル処理装置（ＣＨＰという）から構成されている。
【０００３】
ＣＨＰとその配下の複数のＣＨからなるＩＯＰ、ＣＨに接続される一つまたは複数のＩ／Ｏ等を有する情報処理システムにおいて、ＣＨとＩ／Ｏ間ではフレーム単位で入出力動作を実行する。このフレーム単位で入出力動作を実行する一例としては、ＡＮＳＩ（American National Standards Institute）に標準化されているファイバチャネルの規格「FIBRE CHANNEL PHYSICAL AND SIGNALING INTERFACE （以下、ＦＣ−ＰＨという）」および「FIBRE CHANNEL FRAMING AND SIGNALING（以下、ＦＣ−ＦＳという）」がある（非特許文献１及び２）。
【０００４】
ＣＨ及びＩ／Ｏは、フレームを送受信するためにバッファを持ち、このバッファ面数をお互いに管理することで、接続相手の空きバッファ面数を越えてフレームを送信しないように制御して、フレームが欠落するのを回避している。この制御を行うために、ＣＨ及びＩ／Ｏは入出力動作を開始する前にログイン処理を実行し、それぞれのポートのバッファ面数を交換する。このバッファ管理に関するフロー制御はＦＣ−ＰＨおよびＦＣ−ＦＳにおいてBuffer-to-buffer Creditと呼ぶフロー制御で規定している。
【０００５】
このフロー制御では、ログイン処理において受信バッファ１面当りの容量と受信バッファ面数の情報を交換する。送信側は、相手の受信バッファ面数を超えないようにフレームを送信する。受信側は、Receiver_Ready（以下、Ｒ＿ＲＤＹ）と呼ぶバッファ解放を通知するためのシグナルを送信することで、受信バッファ１面が使用可能となったことを送信側に通知する。送信側は、ログイン処理で取得した受信側の受信バッファ面数分のフレームを送信することができるが、この受信バッファ面数分のフレームを送信してしまった場合、後続のフレームを送信するためには受信側からのＲ＿ＲＤＹを待たなければならない。
【０００６】
送信側が送信したフレームに対応したＲ＿ＲＤＹを受信するまでには、送信したフレームが受信側で受け取られるまでの伝送時間と、受信側の処理装置が受信したフレームを処理し受信バッファを解放するまでの処理時間と、受信側が送信したＲ＿ＲＤＹを送信側が受信するまでの時間を要する。このＲ＿ＲＤＹを受信するまでの時間以内に、送信側が受信側の受信バッファ面数分のフレームを送信した場合、受信側からＲ＿ＲＤＹを受信するまで後続のフレームを送信することができず、性能低下が発生することになる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】「FIBRE CHANNEL PHYSICAL AND SIGNALING INTERFACE」（ANSI X3.230:1994）
【非特許文献２】「FIBRE CHANNEL FRAMING AND SIGNALING」（ANSI/INCITS 373:2003）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
この性能低下を回避するための単純な解決策は、チャネル装置に予め十分な受信バッファ面数を持つことであるが、ハードウェア量が多くなってしまう。また、入出力動作によって必要とする受信バッファ面数が異なるため、受信バッファ不足により性能低下が発生する可能性のあるポートに、より多くの受信バッファを割当てる必要がある。
【０００９】
そこで、本発明の目的は、受信バッファ面数の不足による性能低下の発生を緩和することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、チャネル装置において１つのチャネルプロセッサが複数のポートを制御し各ポートに任意に割当て可能な共通の受信バッファを具備し、フレーム受信時に当該ポートの受信バッファ面の使用状況を判定し受信バッファが不足していると判定した場合に受信バッファを追加し、その後、追加した受信バッファを当該ポートから回収して、共通の受信バッファに戻すことを特徴とする。
【００１１】
好ましい例によれば、本発明によるチャネル装置は、入出力処理装置と複数の入出力装置との間で、複数のポートを介してフレームを送受信するチャネル装置において、複数のポートを介して受信されるフレームを格納する複数面の受信バッファと、該ポートごとに割り当てられた受信バッファの面数及びその使用状況を管理する管理手段と、あるポートがフレームを受信した時に、該ポートの受信バッファを追加するか否かを判定する手段と、該判定手段の判定に応じて、該ポートに受信バッファの面を追加して割り当てる手段と、該ポートに追加して割り当てられた受信バッファを回収する手段と、を有することを特徴とするチャネル装置として構成される。
【００１２】
また好ましくは、本発明の受信バッファの制御方法は、複数面の受信バッファを有するチャネル装置において、複数の入出力装置から送信され、複数のポートを介して受信されるフレームを格納する受信バッファの制御方法であって、該ポートごとに割り当てられた受信バッファの面数及びその使用状況を管理するステップと、あるポートがフレームを受信した時に、該ポートの受信バッファを追加するか否かを判定するステップと、該判定に応じて、該ポートに受信バッファを追加して割り当てるステップと、該ポートに追加して割り当てられた受信バッファを回収するステップと、を有することを特徴とする受信バッファの制御方法として構成される。
【発明の効果】
【００１３】
本発明によれば、送信側が受信側からＲ＿ＲＤＹを受信するまでの時間を、送信したフレームを受信側が受け取るまでの伝送時間と受信側が送信したＲ＿ＲＤＹを送信側が受信するまでの時間を合計したインタフェース上の伝送時間に短縮することができ、受信バッファ面数の不足による性能低下の発生を緩和することが可能となる。また、受信バッファが不足しているポートに、より多くの受信バッファを割当てることが可能となりチャネル装置が持つ受信バッファを有効に使用することができる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態による情報処理システムの全体構成を示す図。
【図２】一実施形態によるチャネル装置の構成を示す図。
【図３】一実施形態によるチャネル装置内のローカルストレージの記憶構成を示す図。
【図４】一実施形態によるチャネル装置のフレーム受信時における処理フローを示すフローチャート。
【図５】一実施形態のチャネル装置のフレーム処理終了時における処理フローを示すフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施例を、図面を用いて詳細に説明する。
図１は、一実施例を示す情報処理システムの構成図である。
情報処理システムは、命令プロセッサ（ＩＰ）１、主記憶装置（ＭＳ）２、サービスプロセッサ（ＳＶＰ）３、サービスプロセッサを操作するための端末３１、入出力処理装置（ＩＯＰ）４、は入出力装置（Ｉ／Ｏ）５（０）〜５（ｉ）を有して構成される。また、ＩＯＰ４はチャネル処理装置（ＣＨＰ）４１とその配下の複数のチャネル装置（ＣＨ）４２（０）〜４２（ｉ）から構成される。ＣＨ４２（０）とＩ／Ｏ５（０）〜５（ｉ）はＩ／Ｏインタフェースケーブル６（０）〜６（ｉ）で接続される。
【００１６】
図２は、チャネル装置の構成を示すブロック図である。
チャネルプロセッサ４２１はＣＨ４２（ｉ）の制御とＣＨＰ４１およびＩ／Ｏ５（０）〜５（ｉ）との通信を行なう。コントロールストレージ（ＣＳ）４２２にはＣＨ４２（ｉ）のオンライン時にマイクロプログラムが読み込まれ、チャネルプロセッサ４２１はＣＳ４２２のマイクロプログラムを読み出して実行しＣＨ４２（ｉ）を制御する。受信バッファ（ＲＬＲ）４２４はポート４２９（０）〜４２９（ｉ）を介して受信したフレームを格納するためのバッファで固定容量に分割して管理する。
【００１７】
受信バッファ面数設定カウンタ（ＲＬＲＮＵＭ）４２７（０）〜４２７（ｉ）は、ポート毎に存在し、各ポート４２９（０）〜４２９（ｉ）で使用可能な受信バッファ（ＲＬＲ）の面数を保持するカウンタである。このＲＬＲの面数はマイクロプログラムにより設定される。ＲＬＲＮＵＭ４２７（ｉ）に設定されているＲＬＲ面数分のＲＬＲを、ポート４２９（ｉ）を介して受信したフレームを格納するために使用している時にさらにポート４２９（ｉ）を介してフレームを受信した場合は、受信フレームを破棄し、ポート４２９（ｉ）でフレームを破棄したことチャネルプロセッサ４２１に通知する。
【００１８】
使用中受信バッファ面数カウンタ（ＲＬＲＢＳＹ）４２８（０）〜４２８（ｉ）は、ポート毎に存在し、各ポート４２９（０）〜４２９（ｉ）で受信したフレームがそれぞれＲＬＲを何面使用中かを示すカウンタである。チャネルプロセッサ４２１が、受信したフレームをＲＬＲに格納した時に＋１し、受信したフレームを処理し当該ＲＬＲの開放をマクロプログラムが指示した時に−１する。送信バッファ（ＴＬＲ）４２５は、フレームを送信するためのバッファで、チャネルプロセッサ４２１の指示によりポート４２９（０）〜４２９（ｉ）の一つを介してフレームを送信する。
【００１９】
送信側バッファ面数カウンタ（ＢＢＣＣ）４２６（０）〜４２６（ｉ）は、ポート毎に存在し、各ポートに接続している、送信元即ちＩ／Ｏ５（ｉ）のＲＬＲ面数を管理するカウンタである。このカウンタ値は、マイクロプログラムにより初期値として１を設定し、ログイン処理実行後、取得した接続先のＩ／Ｏ５（ｉ）のＲＬＲ面数を設定する。ＢＢＣＣ４２６（ｉ）は、チャネルプロセッサ４２１によって、ポート４２９（ｉ）でフレームを送信した時に−1し、ポート４２９（ｉ）を介して接続先のＩ／Ｏ５（ｉ）からＲ＿ＲＤＹを受信した時に＋１する。ＢＢＣＣ４２６（ｉ）が０の場合、チャネルプロセッサ４２１はポート４２９（ｉ）を介してフレームを送信しない。
【００２０】
図３は、チャネル装置ＣＨ４２（ｉ）のローカルストレージＬＳ４２３のフォーマットの一例を示す。
ＲＬＲＭＡＸ４２３１は、ＣＨ４２（ｉ）が有するＲＬＲ４２４の総面数からポート４２９（０）〜４２９（ｉ）に初期値として割当てるＲＬＲ面数を引いたＲＬＲ面数、即ち残余分のＲＬＲ面数を示すカウンタである。このカウンタ値は、ポート４２９（０）〜４２９（ｉ）に任意に、追加的に割当て可能なＲＬＲ面数を示す。
ＩＢＢＣＣ（０）４２３２（０）〜ＩＢＢＣＣ（ｉ）４２３２（ｉ）は、各ポート４２９（０）〜４２９（ｉ）に初期値として割当てたＲＬＲ面数である。ＬＢＢＣＣ（０）４２３３（０）〜ＬＢＢＣＣ（ｉ）４２３３（ｉ）は、各ポート４２９（０）〜４２９（ｉ）のＲＬＲ使用状況を判定するための閾値である。各閾値は、各ポートに予め初期値として割当てられたＲＬＲ面数未満の、余裕を考慮した値である。ＡＢＢＣＣ（０）４２３４（０）〜ＡＢＢＣＣ（ｉ）４２３４（ｉ）は、各ポート４２９（０）〜４２９（ｉ）に追加されたＲＬＲ面数を保持するカウンタであり、初期値は０である。
【００２１】
次に、以上のように構成されたチャネル装置において、ＣＨ４２（ｉ）がポート４２９（ｉ）を介してフレームを受信した時に、ポート４２９（ｉ）のＲＬＲ使用状況を判定しポート４２９（ｉ）にＲＬＲを追加する処理、及び受信したフレームの処理が完了してＲＬＲを解放する時に、ポート４２９（ｉ）に追加したＲＬＲを回収して共通のＲＬＲに戻す処理について説明する。
【００２２】
本実施例では、ＲＬＲ４２４のＲＬＲ面の総数を２５６面とし、ＣＨ４２（０）はポート４２９（０）〜４２９（３）の４ポートを具備し、ポート４２９（０）〜４２９（３）には初期値としてＲＬＲを３２面割当てるものとする。また、ＣＨ４２（０）のポート４２９（０）とＩ／Ｏ５（０）とをＩ／Ｏインタフェースケーブル６（０）で接続し、Ｉ／Ｏ５（０）がフレームを送信する側でＣＨ４２（０）がフレームを受信する側とする。なお、Ｉ／Ｏ５（０）は図２に示したＣＨ４２（ｉ）と同じ構造とする。この時、ＣＨ４２（０）のＲＬＲＭＡＸ４２３１は１２８面、ＲＬＲＮＵＭ（０）４２７（０）〜ＲＬＲＮＵＭ（３）４２７（３）はそれぞれ３２面、ＩＢＢＣＣ（０）４２３２（０）〜ＩＢＢＣＣ（３）４２３２（３）はそれぞれ３２面、ＡＢＢＣＣ（０）４２３４（０）〜ＡＢＢＣＣ（３）４２３４（３）はそれぞれ０面が初期値である。また、ＬＢＢＣＣ（０）４２３３（０）〜ＬＢＢＣＣ（３）４２３３（３）の閾値はそれぞれ１６面とする。
【００２３】
まず、図４の処理フローチャートを参照して、ＣＨ４２（０）のポート４２９（０）がＩ／Ｏ５（０）からフレームを受信した時の処理動作について説明する。
ＣＨ４２（０）がポート４２９（０）を介してＩ／Ｏ５（０）からフレームを受信した時、ＲＬＲＢＳＹ（０）４２８（０）の値がＲＬＲＮＵＭ（０）４２７（０）未満の場合、ＲＬＲ４２４の未使用のＲＬＲを１面確保して受信したフレームを格納し、ＲＬＲＢＳＹ（０）４２８（０）を＋“１”した後、チャネルプロセッサ４２１はポート４２９（０）でフレームを受信したことをマイクロプログラムに通知し制御を渡す。マイクロプログラムは、フレーム受信の要因で制御を渡されると、まずポート４２９（０）でＲＬＲの残数（ＲＬＲＮＵＭ（０）４２７（０）からＲＬＲＢＳＹ（０）４２８（０）を引いた値）と、閾値ＬＢＢＣＣ（０）４２３３（０）とを比較する（Ｓ４０１）。
【００２４】
比較の結果、ＲＬＲの残数が閾値ＬＢＢＣＣ（０）４２３３（０）以上の場合は、ポート４２９（０）にＲＬＲを追加せずに、受信したフレームを処理する（Ｓ４０１“Ｎｏ”）。ＲＬＲの残数が閾値ＬＢＢＣＣ（０）４２３３（０）未満の場合（即ち当該ポートのＲＬＲ面残数不足）は、ＲＬＲＭＡＸ４２３１を確認し、ポートに割当て可能なＲＬＲがあるかを確認する（Ｓ４０２）。ＲＬＲＭＡＸ４２３１が“０”の場合、割当て可能なＲＬＲがないためポート４２９（０）にＲＬＲを追加せずに、受信したフレームを処理する。ＲＬＲ４２３１が“１”以上の場合、割当て可能なＲＬＲがある。マイクロプログラムはポート４２９（０）にＲＬＲ１面を追加するため、ＲＬＲＮＵＭ（０）４２７（０）を＋“１”、ＡＢＢＣＣ（０）４２３４（０）を＋“１”し（Ｓ４０３）、共有のＲＬＲ面数から１面を減じるためＲＬＲＭＡＸ４２３１を−“１”する（Ｓ４０４）。そして、接続相手であるＩ／Ｏ５（０）にＲＬＲ１面が使用可能となったことを通知するために、ポート４２９（０）を介してＲ＿ＲＤＹを送信する（Ｓ４０５）。この処理を、ポート４２９（０）で使用可能なＲＬＲの残数が閾値ＬＢＢＣＣ（０）４２３３（０）以上になるか、またはＲＬＲＭＡＸ４２３１が“０”になるまで繰り返し、その後、受信したフレームを処理する。Ｉ／Ｏ５（０）は、Ｉ／Ｏ５（０）が送信したフレームをＣＨ４２（０）が処理する時間を待たずしてＲ＿ＲＤＹを受信し、後続のフレームを送信することが可能となる。
【００２５】
次に、図５の処理フローチャートを参照して、ＣＨ４２（０）がポート４２９（０）を介してＩ／Ｏ５（０）から受信したフレームを処理した後、ＲＬＲを解放する処理動作について説明する。
ＣＨ４２（０）がポート４２９（０）を介してＩ／Ｏ５（０）から受信したフレームを処理して当該フレームを格納していたＲＬＲを解放する場合、マイクロプログラムはポート４２９（０）にＲＬＲを追加しているかを確認するため、ＡＢＢＣＣ（０）４２３４（０）の値を確認する（Ｓ５０１）。
その結果、ＡＢＢＣＣ（０）４２３４（０）が“０”の場合、ポート４２９（０）に追加したＲＬＲは無いため、マイクロプログラムは当該フレームを格納していたＲＬＲの開放を指示してチャネルプロセッサ４２１がＲＬＲＢＳＹ（０）４２８（０）を−“１”し、ポート４２９（０）を介してＲ＿ＲＤＹを送信することで、接続相手であるＩ／Ｏ５（０）にＲＬＲが１面使用可能となったことを通知する（Ｓ５０５）。
【００２６】
一方、ＡＢＢＣＣ（０）４２３４（０）が“１”以上の場合、ポート４２９（０）にＲＬＲを追加している。マイクロプログラムはＡＢＢＣＣ（０）４２３４（０）を−“１”し、ポート４２９（０）に追加したＲＬＲ面数から１面減じる（Ｓ５０２）。次に、マイクロプログラムが当該フレームを格納していたＲＬＲの開放を指示することでチャネルプロセッサ４２１がＲＬＲＢＳＹ（０）４２８（０）を−“１”し、そして、ＲＬＲＮＵＭ（０）４２７（０）を−“１”してポート４２９（０）に割当てたＲＬＲを１面回収する（Ｓ５０３）。ポート４２９（０）から回収したＲＬＲを共有受信バッファに戻すためＲＬＲＭＡＸ４２３１を＋“１”する（Ｓ５０４）。
【００２７】
以上、説明したように、ＣＨ４２（０）とＩ／Ｏ５（０）間のフレーム送受信において、閾値を越えてＲＬＲを使用しているポートに適時ＲＬＲを追加し補充することで、ＣＨ４２（０）が具備するＲＬＲを有効に活用することができ、フレーム受信側からのＲ＿ＲＤＹ受信待ちのために後続フレームを送信できないことにより発生する性能低下を緩和することが可能となる。
【符号の説明】
【００２８】
１：命令プロセッサ（ＩＰ）            ２：主記憶装置（ＭＳ）  
３：サービスプロセッサ（ＳＶＰ）      ３１：端末  ４：入出力処理装置（ＩＯＰ）  
４１：チャネル処理装置（ＣＨＰ）      ４２（０）〜４２（ｉ）：チャネル装置（ＣＨ）  
４２１：チャネルプロセッサ            ４２２：コントロールストレージ（ＣＳ）  
４２３：ローカルストレージ（ＬＳ）    ４２４：受信バッファ（ＲＬＲ）  
４２５：送信バッファ（ＴＬＲ）
４２６（０）〜４２６（ｉ）：送信側バッファ面数カウンタ（ＢＢＣＣ）
４２７（０）〜４２７（ｉ）：受信バッファ面数設定カウンタ（ＲＬＲＮＵＭ）
４２８（０）〜４２８（ｉ）：使用中受信バッファ面数カウンタ（ＲＬＲＢＳＹ）
４２９（０）〜４２９（ｉ）：ポート
５（０）〜５（ｉ）：入出力装置（Ｉ／Ｏ）
６（０）〜６（ｉ）：Ｉ／Ｏインタフェースケーブル。
【図１】
2011135454.tif 000003
【図２】
2011135454.tif 000004
【図３】
2011135454.tif 000005
【図４】
2011135454.tif 000006
【図５】
2011135454.tif 000007