以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置の構成例および処理例を示す図である。図1に示す情報処理装置10には、通信相手の装置の例として周辺機器20が接続されている。情報処理装置10は、複数の物理リンクLN1〜LN4を通じて周辺機器20と通信する。例えば、情報処理装置10は、物理リンクLN1〜LN4をまとめて1つの論理的な通信ポートとして用いて通信する。このような接続形態は、情報処理装置10と周辺機器20との間でPCIeにより通信が行われる場合、マルチレーンに対応し、SASにより通信が行われる場合、ワイドポートに対応する。
情報処理装置10は、インタフェース部11、設定部12および判定部13を有する。
インタフェース部11は、物理リンクLN1〜LN4を通じて周辺機器20と通信する。また、インタフェース部11は、物理リンクLN1〜LN4のそれぞれについて、信号伝送特性を調整する。インタフェース部11では、例えば、プリエンファシス、プリシュート等の調整が行われる。
設定部12は、インタフェース部11での物理リンク毎の信号伝送特性を調整するための設定パラメータを、周辺機器20のインタフェース部21とのネゴシエーションにより決定する。例えば、設定部12は、物理リンク毎に、インタフェース部11の設定パラメータを変化させながら、インタフェース部11に対応する物理リンクを通じてテスト信号を送信させる。そして、設定部12は、周辺機器20のインタフェース部21からネゴシエーション終了通知を受けたときの設定パラメータを最適値と決定する。
判定部13は、設定部12により物理リンク毎に決定された設定パラメータの決定値のうちの最大値と最小値との差が所定の許容範囲R内に収まるかにより、各決定値の正否を判定する。
例えば、図1の左上に示すパターン1では、物理リンクLN1〜LN4のそれぞれについての設定パラメータの決定値のうち、最大値と最小値との差が、許容範囲Rの中に収まっている。この場合、判定部13は、物理リンクLN1〜LN4のすべてに対応する設定パラメータの決定値が正しいと判定し、これらの決定値が設定パラメータとしてインタフェース部11に設定された状態で、通信を開始させる。
一方、図1の右上に示すパターン2では、物理リンクLN1〜LN4のそれぞれについての設定パラメータの決定値のうち、最大値と最小値との差が、許容範囲Rの中に収まっていない。この場合、判定部13は、例えば、各決定値の中から、許容範囲Rの中に収まっている決定値を除いた残りの決定値に対応する物理リンクについて、設定部12に再度ネゴシエーションを実行させる。
図1の例では、物理リンクLN4について再度ネゴシエーションを実行させる。その結果、再ネゴシエーションにより決定された物理リンクLN4に対応する決定値と、1回目のネゴシエーションにより決定された物理リンクLN1〜LN3に対応する決定値の全体について、最大値と最小値との差が許容範囲Rに収まっていれば、判定部13は、これらの決定値が設定パラメータとしてインタフェース部11に設定された状態で、通信を開始させる。しかし、例えば、再ネゴシエーションの後でも、すべての決定値の最大値と最小値との差が許容範囲Rに収まっていない場合には、判定部13は、許容範囲Rに収まっている決定値に対応する物理リンクのみを有効にし、その他の物理リンクを切り離して通信を開始させる。
ここで、ネゴシエーションの処理手順は、あらゆる場合を想定して決定されている訳ではない。このため、物理リンク毎にネゴシエーションにより決定される設定パラメータは、条件によっては必ずしも最適値にならない場合がある。
例えば、信号伝送特性の設定が適切かを判定するインタフェース部21のベンダが予め想定している伝送路の仕様と、実際の伝送路の仕様とが異なる場合がある。このような伝送路の仕様としては、伝送路の距離が考えられる。特に、図1の例のように、情報処理装置10が外部の周辺機器20と通信する構成では、インタフェース部21のベンダが想定している伝送路の距離より、実際の伝送路の距離が長い場合がある。
また、情報処理装置10側の通信インタフェースのベンダと、周辺機器20の通信インタフェースのベンダとが異なる場合もある。さらに、通信インタフェース内のデバイスの故障や、基板上の伝送路の特性異常が発生している場合もあり得る。
これに対し、図1のように複数の物理リンクLN1〜LN4を通じて通信する構成では、物理リンク間での伝送路特性の差異は小さいと考えられる。このため、物理リンク間での設定パラメータの最適値は、互いに近い値であると考えられる。
この点を利用して、判定部13は、ネゴシエーションにより物理リンク毎に決定された設定パラメータの決定値のうちの最大値と最小値との差が許容範囲R内かにより、各決定値の正否を判定する。このような判定処理によって正しいと判定された設定パラメータを用いて通信が行われることで、上記の理由による通信異常の発生確率が低減され、通信の安定性が向上する。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムの例を示す図である。
図2に示すストレージシステム100は、ストレージ装置として複数のHDDを備える。ストレージシステム100内のDE(Drive Enclosure)210には、ストレージ装置を構成する複数のHDDが格納されている。また、ストレージシステム100は、DE210内のHDDに対するアクセスを制御する2つのCM(Controller Module)300a,300bを備えている。なお、DE210は、例えば、ストレージシステム100の外部に設けられていてもよい。また、ストレージ装置を構成するストレージデバイスとしては、HDDに限らず、例えばSSD(Solid State Drive)等の他の種類のストレージ装置が使用されてもよい。
ストレージシステム100には、ホスト装置120が接続されている。ホスト装置120は、ユーザの操作に応じて、ストレージシステム100内のCM300aまたはCM300bに対して、DE210内のHDDへのアクセスを要求する。
CM300a,300bは、それぞれ、ホスト装置120からのアクセス要求に応じてDE210内のHDDへのアクセスを制御するストレージ制御装置である。例えば、CM300a,300bは、それぞれ、DE210内のHDDに記憶されたデータの読み出し要求をホスト装置120から受け付けると、読み出しを要求されたデータをDE210内のHDDから読み出し、ホスト装置120に送信する。あるいは、CM300a,300bは、それぞれ、DE210内のHDDへのデータの書き込み要求をホスト装置120から受け付けると、書き込みを要求されたデータをDE210内のHDDに書き込む。
管理端末130は、CM300a,300bと接続されている。管理端末130は、管理者が利用するクライアントコンピュータである。例えば、管理者は、管理端末130を用いて、ストレージシステム100が正常に動作しているか否かを確認する。
図3は、ストレージシステム内のCMのハードウェア構成例を示す図である。CM300aは、CPU(Central Processing Unit)301a、RAM(Random Access Memory)302a、PCIeスイッチ303a、CA(Channel Adapter)304a,IOC(In/Out Controller)305a、SASエクスパンダ306a、PCH(Platform Controller Hub)307a、SSD308aおよび読み取り装置309aを有する。
また、CM300bは、CM300aと同じハードウェア構成によって実現される。すなわち、CM300b内のCPU301b、RAM302b、PCIeスイッチ303b、CA304b、IOC305b、SASエクスパンダ306b、PCH307b、SSD308bおよび読み取り装置309bは、CM300a内のCPU301a、RAM302a、PCIeスイッチ303a、CA304a、IOC305a、SASエクスパンダ306a、PCH307a、SSD308aおよび読み取り装置309aにそれぞれ対応する。そこで、ここでは基本的に、CM300aのハードウェア構成について説明し、CM300bのハードウェア構成の説明については省略する。
CPU301aは、CM300a全体を統括的に制御する。RAM302aは、CM300aの主記憶装置として使用され、CPU301aに実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、RAM302aは、DE210内のHDDに記憶されたデータのキャッシュ領域としても使用される。
PCIeスイッチ303aは、PCIeバスを介してCPU301aと接続されている。また、PCIeスイッチ303aは、PCIeケーブルを介して、他方のCM300b内のPCIeスイッチ303bと接続されている。
ここで、CM300aのCPU301aと、CM300bのCPU301bとは、PCIeスイッチ303aとPCIeスイッチ303bとの間の通信経路を通じて通信できるようになっている。例えば、CM300aのCPU301aは、他方のCM300bにおいて発生した異常の内容を示す異常検出情報を、CM300bのCPU301bから上記通信経路を通じて取得することができる。また、例えば、CPU301a,301bは、RAM302a,302bにそれぞれ記憶されたHDDのキャッシュデータを、上記通信経路を通じて他方のCMのCPUに送信し、他方のCM内のRAMにキャッシュデータをバックアップするように依頼することもできる。
CA304aは、PCIeバスを介してCPU301aと接続されている。CA304aは、CPU301aとCM300aとの間でデータを送受信するインタフェース処理を実行する。
IOC305aは、PCIeバスを介してCPU301aと接続されている。また、IOC305aは、SASケーブルを介して、SASエクスパンダ306aおよびCM300bのSASエクスパンダ306bと接続されている。IOC305aは、CPU301aと、SASデバイスであるDE210内のHDDとの間のインタフェース処理を実行する。すなわち、IOC305aは、PCIe規格に基づく通信を制御するPCIeコントローラと、SASに基づく通信を制御するSASコントローラとを備える。
SASエクスパンダ306aは、IOC305aに接続されているとともに、SASケーブルを介してCM300bのIOC305bにも接続されている。また、SASエクスパンダ306aは、SASケーブルを介して、DE210内のSASデバイス(例えば、HDDまたはSASエクスパンダ)と接続されている。SASエクスパンダ306aは、IOC305a,305b内のSASコントローラとSASデバイスとの間でデータを中継する。
ここで、CM300aのIOC305aは、CM300aのSASエクスパンダ306aを通じてDE210と接続されている。これとともに、CM300aのIOC305aは、CM300b内のSASエクスパンダ306bを通じてDE210と接続されている。このように、IOC305aとDE210とが2つのSASエクスパンダ306a,306bを通じて接続されることで、IOC305aからDE210へのアクセス経路が冗長化されている。
同様に、CM300bのIOC305bは、CM300bのSASエクスパンダ306bを通じてDE210と接続されている。これとともに、CM300bのIOC305bは、CM300a内のSASエクスパンダ306aを通じてDE210と接続されている。このように、IOC305bとDE210とが2つのSASエクスパンダ306a,306bを通じて接続されることで、IOC305bからDE210へのアクセス経路も冗長化されている。
PCH307aは、CPU301aとSSD308aおよび読み取り装置309aとの間で、データを送受信する。SSD308aは、CM300aの二次記憶装置として使用され、CPU301aにより実行されるプログラムやその実行に必要な各種のデータ等を記憶する。なお、二次記憶装置としては、例えば、HDD等の他の種類の不揮発性記憶装置が使用されてもよい。読み取り装置309aには、可搬型の記録媒体30aが脱着される。読み取り装置309aは、記録媒体30aに記録されたデータを読み取ってCPU301aに送信する。記録媒体30aとしては、光ディスク、光磁気ディスク、半導体メモリ等がある。
なお、図示しないが、PCH307aには、CPU301aと管理端末130との間でデータを送受信する通信インタフェースがさらに接続されている。
図4は、DEのハードウェア構成例を示す図である。DE210は、SASエクスパンダ211a,211bと、複数のHDD212a,212b,212c,・・・と、CPU213と、フラッシュメモリ214とを備える。
SASエクスパンダ211aは、CM300aのSASエクスパンダ306aおよびDE210内のHDD212a,212b,212c,・・・と、SASケーブルを介して接続されている。SASエクスパンダ211aは、CM300aのSASエクスパンダ306aと、DE210内のHDD212a,212b,212c,・・・との間でデータを中継する。
SASエクスパンダ211bは、CM300bのSASエクスパンダ306bおよびDE210内のHDD212a,212b,212c,・・・と、SASケーブルを介して接続されている。SASエクスパンダ211bは、CM300bのSASエクスパンダ306bと、DE210内のHDD212a,212b,212c,・・・との間でデータを中継する。
CPU213は、DE210内のハードウェア全体を統括的に制御する。フラッシュメモリ214には、各種データやファームウェアのプログラムが格納される。
次に、SASコントローラ間の通信について説明する。SASコントローラは、SASケーブルを介して通信するためのインタフェース回路であり、図3〜4の例では、IOC305a,305bおよびSASエクスパンダ306a,306b,211a,211bにそれぞれ搭載されている。
以下の説明では、特に、異なる装置間でのSASケーブルを介した通信について説明する。例えば、IOC305aとSASエクスパンダ306bとの間の通信、IOC305bとSASエクスパンダ306aとの間の通信、SASエクスパンダ306aとDE210内のSASエクスパンダ211aとの間の通信、SASエクスパンダ306bとDE210内のSASエクスパンダ211bとの間の通信が、説明の対象となる。
図5は、SASコントローラの主な構成要素と接続形態の例を示す図である。図5において、一方のSASコントローラ31aは、送受信部310a〜310d、クロスバー351aおよび制御回路352aを備えている。また、他方のSASコントローラ31bは、送受信部310e〜310h、クロスバー351bおよび制御回路352bを備えている。
送受信部310aは、送受信部310eと接続されており、送受信部310bは、送受信部310fと接続されている。また、送受信部310cは、送受信部310gと接続されており、送受信部310dは、送受信部310hと接続されている。送受信部310a〜310hのそれぞれは、接続された他方の送受信部との間のデータ送受信を制御する。
物理リンク32a,32b,32c,32dは、SASコントローラ31aとSASコントローラ31bとの間で送受信されるデータの伝送路である。具体的には、物理リンク32aは、送受信部310aと送受信部310eとの間のデータの伝送路であり、物理リンク32bは、送受信部310bと送受信部310fとの間のデータの伝送路である。さらに、物理リンク32cは、送受信部310cと送受信部310gとの間のデータの伝送路であり、物理リンク32dは、送受信部310dと送受信部310hとの間のデータの伝送路である。また、物理リンク32a,32b,32c,32dは、それぞれ差動信号線ペアのセットであり、送信側の信号線ペア(2本)と、受信側の信号線ペア(2本)とからなる。
なお、送受信部310a〜310dは、物理リンク32a〜32dをそれぞれ構成する差動信号ペアのセットと、共通のコネクタを介して接続する。同様に、送受信部310e〜310hは、物理リンク32a〜32dをそれぞれ構成する差動信号ペアのセットと、共通のコネクタを介して接続する。
ここで、SASコントローラ間の接続形態としては、ナローポートとワイドポートとがある。ナローポートは、1つのポートに1つの物理リンクを使用して通信する形態である。ワイドポートは、1つのポートに複数の物理リンクを使用して通信する形態である。ワイドポートでは、最大で8つの物理リンクをまとめて1つの論理的な通信ポートとして使用することができる。例えば、SAS2.0規格の場合、1つの物理リンクでの最大伝送速度は6ギガbps(Bit Per Second)であるので、ワイドポートを適用することで最大48ギガbpsでの通信が可能となる。
クロスバー351aは、制御回路352aの制御の下で、SASケーブルを介して送信するデータを送受信部310a〜310dのいずれかに振り分ける。また、クロスバー351aは、SASケーブルを介して受信したデータを送受信部310a〜310dから受信する。制御回路352aは、クロスバー351aでの送信データの振り分け等、SASコントローラ31aにおける各種の動作制御を行う。ナローポートとワイドポートのいずれかの形態で接続するか、いくつの物理ポートを用いてワイドポートを構成するかについても、制御回路352aによって制御される。
同様に、クロスバー351bは、制御回路352bの制御の下で、SASケーブルを介して送信するデータを送受信部310e〜310hのいずれかに振り分ける。また、クロスバー351bは、SASケーブルを介して受信したデータを送受信部310e〜310hから受信する。制御回路352bは、クロスバー351bでの送信データの振り分け等、SASコントローラ31bにおける各種の動作制御を行う。ナローポートとワイドポートのいずれかの形態で接続するか、何個の物理ポートを用いてワイドポートを構成するかについても、制御回路352bによって制御される。
ここで、例えば、SASコントローラ31aがCM300aに搭載されているものとする。例えば、SASコントローラ31aがIOC305aに搭載されているものとする。この場合、SASコントローラ31aの制御回路352aは、CM300aのCPU301aと通信することができる。
送受信部310a〜310dは、対応する物理リンク32a〜32dにおける接続開始時に、通信先の送受信部との間で通信設定を最適化するためのトレーニングを行う。そのトレーニングシーケンスの中には、受信側とネゴシエーションすることで送信側イコライザの設定値を最適化するネゴシエーションシーケンスが含まれる。制御回路352aは、例えば、CPU301aからの指示に応じて、送受信部310a〜310dのそれぞれに対して、ネゴシエーション時の送信側イコライザの初期設定値を設定したり、ネゴシエーション終了後の接続切り離しや送信側イコライザの設定変更を行うことができる。また、制御回路352aは、送受信部310a〜310dのそれぞれにおいてネゴシエーションにより決定された送信側イコライザの設定値を、CPU301aに通知することができる。
図6は、SASコントローラ内の送受信部のハードウェア構成例を示す図である。なお、送受信部310a〜310hはそれぞれ同様のハードウェア構成を有するので、図6ではこれらを“送受信部310”と表す。また、これ以降、送受信部310a〜310hを区別せずに説明する場合には、“送受信部310”という表記を使用する。
送受信部310は、Txバッファ311、シリアライザ312、Txドライバ313、Txイコライザ314、Rxイコライザ315、Rxドライバ316、デシリアライザ317、Rxバッファ318、パルスジェネレータ(PG)319、波形検出回路320、制御回路321およびメモリ322を有する。
Txバッファ311は、同じSASコントローラ内のクロスバー(例えば、図5のクロスバー351a)から入力された送信データを一時的に記憶し、記憶した送信データをシリアライザ312に出力する。シリアライザ312は、Txバッファ311から入力された送信データを、パラレルデータからシリアルデータに変換して出力する。また、シリアライザ312は、パルスジェネレータ319から入力されたネゴシエーション用のテスト信号を、Txドライバ313に出力することもできる。Txドライバ313は、シリアライザ312から入力された送信データまたはテスト信号を、差動信号に変換して出力する。
Txイコライザ314は、Txドライバ313から入力された差動信号の波形を整形し、整形後の差動信号を、図示しないコネクタを介して対応する物理リンクへ出力する。Txイコライザ314で行われる波形整形の種類としては、例えば、プリエンファシス調整とプリシュート調整とがある。プリエンファシス調整は、送信信号がローレベルからハイレベルに遷移したときの信号レベルを高くするものである。プリシュート調整は、送信信号がローレベルからハイレベルに遷移する直前の信号レベルを高くするものである。Txイコライザ314でのプリエンファシスおよびプリシュートの調整量は、制御回路321から指定される。
Rxイコライザ315は、対応する物理リンクから図示しないコネクタを介して入力された差動信号の波形を整形し、Rxドライバ316に出力する。波形生成の方法としては、DFE(Decision Feedback Equalization)やFFE(Feed-Forward Equalization)等の方法が用いられる。Rxイコライザ315は、トレーニングの際に内部の設定パラメータを自動調整する。Rxイコライザ315は、自動調整した設定パラメータを、制御回路321を介して同一SASコントローラ内の制御回路(例えば制御回路352a)に出力することができる。
Rxドライバ316は、Rxイコライザ315から出力された差動信号を所定形式のシリアル信号に変換し、デシリアライザ317に出力する。デシリアライザ317は、Rxドライバ316から入力されたシリアル信号をパラレル信号に変換し、Rxバッファ318に出力する。Rxバッファ318は、デシリアライザ317から出力されたパラレル信号を一時的に記憶した後、同じSASコントローラ内のクロスバー(例えば、図5のクロスバー351a)に出力する。
パルスジェネレータ319は、送受信部310自身を送信側としたネゴシエーションシーケンスの実行時において、制御回路321からの指示に応じて、シリアライザ312に対してネゴシエーション用のテスト信号を供給する。
波形検出回路320は、送受信部310自身を受信側としたネゴシエーションシーケンスの実行時において、Rxイコライザ315から出力されたテスト信号の波形を検出し、その波形の状態を示す情報を制御回路321に通知する。波形の状態を示す情報としては、例えば、アイパターンの開口状態を示す情報がある。
制御回路321は、送受信部310における各種の処理を制御する。例えば、制御回路321は、送受信部310自身を送信側としたネゴシエーションシーケンスの実行時において、次のような制御を行う。制御回路321は、同一SASコントローラ内の制御回路(例えば制御回路352a)からの指示に基づいて、Txイコライザ314に対してパラメータの初期値を設定する。そして、制御回路321は、パルスジェネレータ319にネゴシエーション用のテスト信号を出力させる。このとき、制御回路321は、テスト信号に所定の付加情報を付加して、シリアライザ312に送信させる。さらに、制御回路321は、接続先の送受信部からパラメータ調整要求メッセージが返信されると、このメッセージをデシリアライザ317を通じて受信し、メッセージに応じてTxイコライザ314に設定するパラメータを変更する。また、制御回路321は、接続先の送受信部からネゴシエーションの終了メッセージが返信されると、このメッセージをデシリアライザ317を通じて受信する。このとき、制御回路321は、最終的にTxイコライザ314に設定されたパラメータの値を、同一コントローラ内の制御回路に通知することができる。通知されたパラメータの値は、当該コントローラが搭載されたCMのCPUに対して通知される。
また、制御回路321は、送受信部310自身を受信側としたネゴシエーションシーケンスの実行時において、次のような制御を行う。制御回路321は、接続先の送受信部からネゴシエーション用のテスト信号が送信されると、波形検出回路320から波形の状態を示す情報を受信し、受信情報が所定の基準値を満たすかを判定する。制御回路321は、受信情報が基準値を満たさない場合、受信情報と基準値との差分に応じて、接続先の送受信部におけるTxイコライザのパラメータを増減させるためのパラメータ調整要求メッセージを、シリアライザ312に送信させる。また、制御回路321は、受信情報が基準値を満たす場合、ネゴシエーションの終了要求メッセージをシリアライザ312に送信させる。
メモリ322は、制御回路321の処理で用いられる各種のデータを記憶する。
図7は、Rxイコライザの内部構成例を示す図である。Rxイコライザ315は、例えば、ゲイン調整部315a、AD(Analog-to-Digital)コンバータ315b、FFE315cおよびDFE315dを有する。
ゲイン調整部315aは、対応する物理リンクから図示しないコネクタを介して入力された差動信号のレベルを調整する。ADコンバータ315bは、差動信号(アナログ電気信号)をデジタル電気信号に変換する。FFE315cは、入力信号を遅延させて係数を乗じた信号を入力信号に重畳することで波形を整形する。DFE315dは、出力信号を遅延させて係数を乗じた信号を入力信号に重畳することで波形を整形する。
Rxイコライザ315には、トレーニングの際にRxイコライザ315自身によって調整される各種のパラメータが設定される。例えば、ゲイン調整部315aには、ADコンバータ315bによってADC_MAP_SCALEが設定され、FFE315cによってDP_FFE_Mが設定される。DFE315dの出力レベルが所定範囲に収まるようにADC_MAP_SCALEおよびDP_FFE_Mが設定されることで、ゲイン調整部315aのゲインが調整される。さらに、FFE315cにはDP_FFE_Bが設定され、DFE315dにはDFE係数0〜4が設定される。FFE315cは、内部の検出値が所定範囲に収まるようにDP_FFE_Bを調整する。DFE315dは、内部の検出値が所定範囲に収まるようにDFE係数0〜4を調整する。
なお、以下の説明では、Rxイコライザ315に設定される上記のようなパラメータを「Rxパラメータ」と記載する場合がある。一方、Txイコライザ314に設定されるパラメータを「Txパラメータ」と記載する場合がある。
次に、SASコントローラ間の接続開始時におけるトレーニングシーケンスに含まれるネゴシエーションシーケンスについて説明する。以下の説明では、例として、CM300aのSASエクスパンダ306aと、DE210のSASエクスパンダ211aとの間のネゴシエーションシーケンスについて説明する。すなわち、以下の説明において、SASコントローラ31aは、SASエクスパンダ306aのDE210側に搭載されたSASコントローラを示し、SASコントローラ31bは、SASエクスパンダ211aのCM300a側に搭載されたSASコントローラを示す。また、以下の説明では、説明を簡略化するために、CM300aのSASエクスパンダ306aにおけるTxイコライザ314のTxパラメータを設定する際の動作について説明する。
図8は、ネゴシエーションのシーケンス例を示す図である。本シーケンスは、ネゴシエーションの実行時に、物理リンク毎に実行される。図8では、送受信部310aと送受信部310eとの間の物理リンク32aにおいて、送受信部310a内のTxイコライザ314のTxパラメータをネゴシエーションにより設定するシーケンスの例について説明する。以下、図8に示す処理をステップ番号に沿って説明する。
(S11)送受信部310aにおいて、制御回路321は、Txイコライザ314に対してTxパラメータの初期値を設定する。この設定は、例えば、Txイコライザ314のレジスタにTxパラメータの値が記録されることで行われる。Txパラメータの初期値は、メモリ322に記憶されている。CPU301aから特に指定されていない場合、Txパラメータの初期値としては、メモリ322にあらかじめ記憶された固定値が用いられる。
(S12)送受信部310aにおいて、制御回路321は、パルスジェネレータ319にネゴシエーション用のテスト信号を出力させる。このとき、制御回路321は、テスト信号に所定の付加情報を付加して、シリアライザ312に送信させる。このステップS12の処理により、物理リンク32aを介してテスト信号が送受信部310eへ送信される。
(S13)送受信部310eにおいて、Rxイコライザ315は、図7に例示した各Rxパラメータを調整することにより、受信したテスト信号の波形を調整する。詳細には、Rxイコライザ315は、最初に、各Rxパラメータとしてメモリ322に記憶されている初期値を設定する。そして、Rxイコライザ315は、各Rxパラメータの設定値を変更しながら、テスト信号の波形を調整する。
波形検出回路320は、調整されたテスト信号の波形を検出し、波形の状態を示す検出値を制御回路321へ出力する。制御回路321は、入力された検出値が所定の基準を満たすかを判定する。ここでは、波形の状態を示す検出値が所定の基準を満たさないと判定されたとする。
(S14)送受信部310eにおいて、制御回路321は、パラメータ調整要求を送受信部310aへ送信する。パラメータ調整要求は、物理リンクに設定される送信用のTxパラメータの調整を要求するためのメッセージである。パラメータ調整要求を示すメッセージコードには、複数の種別があり、メッセージコード毎に、調整されるTxパラメータの種別やTxパラメータの調整値等が異なる。パラメータ調整要求のメッセージコードは、送受信部310eの制御回路321により、波形の状態を示す検出値と基準との差分に基づいて決定される。
(S15)送受信部310aにおいて、制御回路321は、デシリアライザ317を介してパラメータ調整要求のメッセージコードを受信する。制御回路321は、受信したメッセージコードに応じて、Txイコライザ314のパラメータ設定値を変更する。
(S16)ステップS12と同様の手順により、送受信部310aから送受信部310eに対してテスト信号が送信される。
(S17)送受信部310eにおいて、Rxイコライザ315は、各Rxパラメータを調整することにより、受信したテスト信号の波形を調整する。波形検出回路320は、テスト信号の波形を検出し、波形の状態を示す検出値を制御回路321へ出力する。制御回路321は、入力された検出値が所定の基準を満たすかを判定する。ここでは、波形の状態を示す検出値が所定の基準を満たしたと判定されたとする。
(S18)送受信部310eにおいて、制御回路321は、ネゴシエーション終了要求を送受信部310aへ送信する。ネゴシエーション終了要求は、ネゴシエーション用のテスト信号の波形の状態を示す検出値が所定の基準を満たしているため、ネゴシエーションの終了を送信元の装置へ要求するためのメッセージである。
以上の処理により、物理リンク32aに対応するTxイコライザ314のTxパラメータの最適値が決定される。また、Rxイコライザ315の自動調整機能によりRxイコライザ315のRxパラメータの最適値も決定される。
なお、図8の例では、送受信部310a,310eの間のネゴシエーションにおいて、1回のTxパラメータの調整のみでテスト信号波形の検出値が基準を満たしている。しかし、実際には、テスト信号波形の検出値が基準を満たすまでに、Txパラメータの調整が複数回(例えば、5〜10回)行われる場合が多い。
図9は、メッセージリストの例を示す図である。メッセージリスト331には、ネゴシエーション時に、データの送信先の装置のSASコントローラから受信するメッセージの一覧を示す。メッセージリスト331は、例えば、メモリ322に格納され、制御回路321から参照されてもよい。メッセージリスト331は、メッセージコード、パラメータC1、パラメータC2およびパラメータC3の項目を有する。
メッセージコードの項目には、ネゴシエーション時に、データの送信先の装置のSASコントローラから受信するメッセージの種別を示す値(メッセージコード)が設定される。“C1”,“C2”,“C3”は、Txイコライザ314に設定されるTxパラメータの種別を示す。
パラメータC1の項目には、パラメータC1に対する調整の内容を示す情報が設定される。例えば、“±0”は、パラメータC1を増減させない要求を意味する。また、“+1”は、パラメータC1を“1”加算させる要求を意味し、“+2”は、パラメータC1を“2”加算させる要求を意味する。さらに、“−1”は、パラメータC1を“1”減算させる要求を意味し、“−2”は、パラメータC1を“2”減算させる要求を意味する。同様に、パラメータC2の項目には、パラメータC2に対する調整の内容を示す情報が設定され、パラメータC3の項目には、パラメータC3に対する調整の内容を示す情報が設定される。
例えば、メッセージコード“0Ah”は、パラメータC1を増減せず、パラメータC2を“2”減算し、パラメータC3を“2”減算する要求であることを示す。また、メッセージコード“00h”は、パラメータC1〜C3のいずれも増減しなくてよいことを示す。このメッセージコード“00h”は、ネゴシエーション終了要求として使用される。
ここで、パラメータC1は、Txイコライザ314におけるプリシュートの調整値を示す。プリシュート調整は、送信信号がローレベルからハイレベルに遷移する直前の信号レベルを高くするものである。パラメータC2は、Txイコライザ314における送信信号レベルの調整値を示す。パラメータC3は、Txイコライザ314におけるプリエンファシスの調整値を示す。プリエンファシス調整は、送信信号がローレベルからハイレベルに遷移したときの信号レベルを高くするものである。
図10は、第2の実施の形態のCMの機能例を示すブロック図である。なお、図10ではCM300aについて示すが、CM300bもCM300aと同様の機能を備える。CM300aは、パラメータ情報記憶部330およびパラメータ制御部340を備える。また、前述のように、CM300aは、SASコントローラ31aを備えるものとする。
なお、パラメータ制御部340は、第1の実施の形態の判定部13の一例であり、SASコントローラ31aは、第1の実施の形態のインタフェース部11および設定部12の一例である。より詳しくは、各送受信部310a〜310dのTxイコライザ314がインタフェース部11の一例であり、各送受信部310a〜310dの制御回路321が設定部12の一例である(図6参照)。
パラメータ情報記憶部330は、CM300aが備えるRAM302aまたはSSD308aに確保した記憶領域として実現される。パラメータ制御部340の処理は、例えば、CM300aが備えるCPU301aが所定のプログラムを実行することで実現される。
パラメータ情報記憶部330は、送受信部310a〜310dの各Txイコライザ314に設定されているTxパラメータの値を格納するTxパラメータテーブルを記憶する。また、パラメータ情報記憶部330は、送受信部310a〜310dの各Rxイコライザ315に設定されているRxパラメータの値を格納するRxパラメータテーブルを記憶する。
パラメータ制御部340は、送信先のSASコントローラ31bとの間でネゴシエーションを行って各送受信部310a〜310dの各Txイコライザ314のTxパラメータを決定するよう、SASコントローラ31a内の送受信部310a〜310dへ要求する。このとき、パラメータ制御部340は、各送受信部310a〜310dに対して異なるTxパラメータの初期値を指定する。
パラメータ制御部340は、ネゴシエーションが終了すると、ネゴシエーションにより決定されたTxパラメータを各送受信部310a〜310dから受信する。パラメータ制御部340は、各送受信部310a〜310dから受信したTxパラメータに基づいて、Txパラメータの許容範囲を特定する。Txパラメータの許容範囲は、各送受信部310a〜310dに対して決定されたTxパラメータが適切であると判定されるTxパラメータの範囲を意味する。許容範囲は、各送受信部310a〜310dに対して決定されたTxパラメータの分布に基づいて特定できる。以下、このTxパラメータの許容範囲を「Tx許容範囲」と記載する。
パラメータ制御部340は、特定したTx許容範囲内に、送受信部310a〜310dから受け取ったTxパラメータが収まるか判定する。パラメータ制御部340は、Tx許容範囲内に収まらないTxパラメータが存在する場合、当該Txパラメータを送信した送受信部に対してネゴシエーションを再度要求する。また、パラメータ制御部340は、Tx許容範囲が特定できなかった場合(Txパラメータの分布がある程度集中する所定の大きさの範囲がなかった場合)、送受信部310a〜310dのすべてに対してネゴシエーションを再度要求する。
パラメータ制御部340は、再度のネゴシエーションにより決定されたTxパラメータと、すでにTx許容範囲内に収まっているTxパラメータとに基づいて、Tx許容範囲を再度特定する。そして、パラメータ制御部340は、各Txパラメータが特定したTx許容範囲に収まるかにより、各Txパラメータが適切であるか判定する。
また、パラメータ制御部340は、ネゴシエーションが終了した時点で送信先のSASコントローラ31b内の各送受信部310e〜310hに搭載された各Rxイコライザ315に設定されている各Rxパラメータを、送受信部310e〜310hから受信する。これらのRxパラメータは、送信先のRxイコライザ315によって自動調整された値である。パラメータ制御部340は、各送受信部310e〜310hから受信したRxパラメータに基づいて、Rxパラメータの許容範囲を特定する。以下、Rxパラメータの許容範囲を「Rx許容範囲」と記載する。
パラメータ制御部340は、送受信部310e〜310hのRxイコライザ315に設定されているRxパラメータがRx許容範囲に収まるかを判定する。パラメータ制御部340は、Rx許容範囲内に収まらないRxパラメータが存在する場合、当該Rxパラメータを受信した送受信部に対してネゴシエーションを再度要求する。
なお、パラメータ制御部340と送受信部310a〜310dとの間の通信は、実際には、SASコントローラ31aの制御回路352aを介して行われる。
図11は、Txパラメータテーブルの例を示す図である。Txパラメータテーブル332は、パラメータ情報記憶部330に記憶されている。Txパラメータテーブル332は、各送受信部310a〜310dの各Txイコライザ314に設定されているTxパラメータを示す情報を格納する。
Txパラメータテーブル332は、ワイドポートID(Identification)、物理リンクID、パラメータ種別および設定値の項目を有する。ワイドポートIDの項目には、ワイドポートを識別するための識別子が登録される。物理リンクIDには、対応するワイドポートに属する物理リンクを識別するための識別子が登録される。
パラメータ種別の項目には、対応する送信用の物理リンクに対して設定されるTxパラメータの種別を示す情報が登録される。前述のように、Txパラメータの種別にはC1〜C3がある。設定値の項目には、対応するパラメータ種別に対して設定されているTxパラメータの値が登録される。
なお、Rxパラメータテーブルは、Txパラメータテーブル332と同じ項目を有するため、説明を省略する。Rxパラメータテーブルのパラメータ種別の項目には、Rxパラメータの種別が登録される。
次に、図12〜14を用いて、ネゴシエーションにより決定されたTxパラメータの判定例について説明する。ここでは、まず、図12を用いて、ネゴシエーションによりTxパラメータを決定する際の問題点について説明し、その後、図13〜14を用いて、ネゴシエーションにより決定されたTxパラメータの適否を判定する処理について説明する。また、図12〜14では、説明を簡単にするために、パラメータC1とパラメータC3との組み合わせを“Txパラメータ群”と呼び、このTxパラメータ群の決定処理について説明する。以下、パラメータC1およびパラメータC3を含むTxパラメータ群の設定値ペアを、“(パラメータC1,パラメータC3)”と記載する場合がある。
図12は、Txパラメータ群の設定のばらつきの例を示す図である。図12は、過去に、ワイドポートを構成する各物理リンクについて、ネゴシエーションにより決定されたTxパラメータ群の値の分布を示す。縦軸はパラメータC3を示し、横軸はパラメータC1を示す。
図12では、(7,12)、(7、13)、(7,14)、(8,12)および(8,13)は、ネゴシエーションによりすべての物理リンクに設定されたことがあるTxパラメータ群を示す。これらのうち、(7,13)は、物理リンクに設定される最適なTxパラメータ群であるとする。また、(5,12)、(5,13)、(6,14)、(6,15)、(7,15)、(8,11)、(8,14)、(9,12)、(9,13)、(9,14)および(9,15)は、ネゴシエーションにより一部の物理リンクにのみ設定されたことがあるTxパラメータ群を示す。
図12に示すように、ネゴシエーションにより決定されるTxパラメータ群の値は、ネゴシエーション毎および物理リンク毎にばらつきが生じる場合がある。このばらつきの一因としては、受信側におけるテスト信号の評価方法の問題が考えられる。市販のSASインタフェースが実行するテスト信号の評価処理手順は、あらゆる条件を想定して決定されている訳ではなく、比較的限定的な条件を想定して決定されている場合が多い。このため、条件が想定された条件と合わない場合には、テスト信号の評価が適切に行われない可能性がある。
想定される条件の一例として、伝送路の距離がある。CM300aとDE210、あるいはCM300aとCM300bのように、異なる装置間で通信が行われる場合には、伝送路の距離が、通信インタフェースの開発・設計時に想定された距離より長い場合があり得る。その場合、受信側が受信したテスト信号の波形を評価し、適切な波形であると判定したとしても、そのときに送信側で設定されていたTxパラメータの値が本当に適正値であるかわからない可能性がある。そして、そのTxパラメータの値が設定されたまま通信が行われると、ネゴシエーションで適正値と決定されたにもかかわらず、通信異常が発生する可能性がある。また、距離以外の伝送路の仕様に関しても同様のことが言える。
また、送信側のSASインタフェースと受信側のSASインタフェースの各ベンダが異なる場合にも、ネゴシエーションにより決定されたTxパラメータの適正値が不正確な値となることがあり得る。さらに、SASインタフェース内のデバイスの故障や、基板上の伝送路の特性異常が発生している場合にも、同様に、ネゴシエーションにより決定されたTxパラメータの適正値が不正確な値となることがあり得る。
一方、ワイドポートを構成する物理リンク同士では、伝送路に関する仕様や特性がほぼ共通となる。その理由としては、これらの物理リンク同士では伝送路の距離はほぼ一致することが挙げられる。また、各物理リンクは共通のインタフェース回路で処理され、共通のコネクタを介して接続されることも挙げられる。このことは、特定の物理リンクにのみ伝送路の故障や特性異常が発生しにくい原因にもなる。
これらの理由から、Txイコライザ314のTxパラメータの最適値は、物理リンク間で近い値になる可能性が高い。そこで、パラメータ制御部340は、ネゴシエーションにより決定された各物理リンクのTxパラメータ群の値の適否を、次のように判定する。
まず、パラメータ制御部340は、各物理リンクについて決定されたTxパラメータ群の値に基づいて、一定の大きさのTx許容範囲の位置を特定する。ここで、図12に示すように、どの物理リンクにも設定されたことがあるTxパラメータ群の分布は、最適なTxパラメータ群の近隣の範囲内に集中している。そのため、パラメータ制御部340は、決定されたTxパラメータ群の値の分布がある程度集中する所定の大きさの範囲を、最適なTxパラメータ群の値との誤差の範囲であるTx許容範囲として特定する。そして、パラメータ制御部340は、複数の物理リンクについて決定されたTxパラメータ群の値のうち、値が上記Tx許容範囲に収まらないTxパラメータ群を不適切なTxパラメータ群と判定する。
図13は、適切なTxパラメータ群の例を示す図である。図13は、ワイドポートを構成する各物理リンクについて、あるネゴシエーションにより決定されたパラメータC1およびパラメータC3を含むTxパラメータ群の値を示す。図13において、図12と同じ内容については説明を省略する。
図13では、物理リンク32aに対してTxパラメータ群(7,10)が決定されたとする。また、物理リンク32bに対してTxパラメータ群(8,10)が決定されたとする。また、物理リンク32cに対してTxパラメータ群(7,9)が決定されたとする。さらに、物理リンク32dに対してTxパラメータ群(8,9)が決定されたとする。
ここでは、許容されるTxパラメータの最大誤差(すなわち、Tx許容範囲の大きさ)は、パラメータC1,C3ともに“2”である場合を例として説明する。パラメータ制御部340は、決定された全Txパラメータ群の中から、パラメータC1,C3の両方について、最大値と最小値との差が上記の最大誤差以下となるようなTxパラメータ群の組み合わせを抽出する。そして、抽出された組み合わせの中から、含まれるTxパラメータ群が最大の組み合わせを選択し、選択した組み合わせに含まれる各Txパラメータ群の値が包含されるようなTx許容範囲を設定する。このとき、パラメータ制御部340は、選択した組み合わせに含まれるTxパラメータ群の数が、全Txパラメータ群の数の過半数以下である場合には、Txパラメータの値が集中していない(分散している)と判定して、そのTx許容範囲を無効にする。
図13に示すように、物理リンク32a〜32dに対して決定されたTxパラメータ群の値の分布は、(7〜8,9〜10)の範囲に集中している。この範囲の大きさは、パラメータC1,C3ともに最大誤差“2”以内となっている。また、当該範囲に収まっているTxパラメータ群の数は4つであり、決定した全Txパラメータ群の過半数である“2”より大きい。したがって、(7〜8,9〜10)の範囲がTx許容範囲として特定される。
また、各物理リンクについて決定されたTxパラメータ群の値は、いずれも上記Tx許容範囲内であるため、適切と判定される。そして、パラメータ制御部340は、ワイドポートを構成する各物理リンクに対するTxパラメータの設定に成功したと判定し、ネゴシエーションを終了させる。
図14は、不適切なTxパラメータ群を含む例を示す図である。図14は、ワイドポートを構成する各物理リンクについて、あるネゴシエーションにより決定されたパラメータC1およびパラメータC3を含むTxパラメータ群の値を示す。図14において、図13と同じ内容については説明を省略する。図14では、物理リンク32dに対してTxパラメータ群(10,6)がネゴシエーションにより決定されている。
この場合、図14に示すように、物理リンク32a〜32dに対して決定されたTxパラメータ群の分布は、(7〜8,9〜10)の範囲に集中している。また、当該範囲に収まっているTxパラメータ群の数は3つであり、決定した全Txパラメータ群の過半数である“2”より大きい。したがって、(7〜8,9〜10)の範囲がTx許容範囲として特定される。
図14に示すように、物理リンク32a〜32cについて決定された各Txパラメータ群は、上記Tx許容範囲内であるため、適切と判定される。一方、物理リンク32dについて決定されたTxパラメータ群は、上記Tx許容範囲外であるため、不適切と判定される。そのため、物理リンク32dについては、例えば、パラメータ制御部340の指示に応じて、再度、送信先のSASインタフェースとの間でネゴシエーションが実行される。
図13〜14で説明したように、パラメータ制御部340は、ネゴシエーションにより決定されたTxパラメータ群の値の分布が一定の大きさの範囲に集中する場合に、その範囲をTx許容範囲として特定する。これにより、最適なTxパラメータ群の誤差の範囲(すなわち、適切なTxパラメータ群の範囲)を推定できる。
また、特定したTx許容範囲に収まらないTxパラメータ群を不適切なパラメータと判定する。これにより、ネゴシエーションにより決定されたTxパラメータの適否を精度良く判定できる。
図15は、初期Txパラメータ群の設定例を示す図である。パラメータ制御部340は、ネゴシエーションを実行させる際、各物理リンクに対応するTxイコライザ314に対して互いに異なる初期Txパラメータ群を設定する。ここで、“初期Txパラメータ群”は、ネゴシエーションの際、Txイコライザ314に対して設定するTxパラメータの初期値の集まりを意味する。
図15に示す各矢印は、物理リンクについてのネゴシエーションが開始されてから終了されるまでに遷移したTxパラメータ群の値の軌跡を示す。図15内の各矢印の始点は、その物理リンクに設定された初期Txパラメータ群の値を示し、図15内の各矢印の終点は、その物理リンクについて決定されたTxパラメータ群の値を示す。
図15に示すように、物理リンク32aには、初期Txパラメータ群(1,20)が設定され、物理リンク32bには、初期Txパラメータ群(20,20)が設定されている。また、物理リンク32cには、初期Txパラメータ群(1,1)が設定され、物理リンク32dには、初期Txパラメータ群(20,1)が設定されている。
その後、物理リンク32aに対するTxパラメータ群は、ネゴシエーションにより、(1,16)→(2,16)→(2,15)→(4,15)→(4,13)→(5,13)→(5,12)→(6,12)→(6,11)の順に遷移して(8,11)に決定される。
同様に、物理リンク32bに対するTxパラメータ群は、ネゴシエーションにより、(17,20)→(17,19)→(15,19)→(15,17)→(13,17)→(13,15)→(11,15)→(11,14)→(10,14)→(10,13)→(9,13)の順に遷移して(9,11)に決定される。
また、物理リンク32cに対するTxパラメータ群は、ネゴシエーションにより、(1,3)→(3,3)→(3,5)→(4,5)→(4,7)→(5,7)→(5,8)→(6,8)→(6,10)の順に遷移して(8,10)に決定される。
さらに、物理リンク32dに設定されるTxパラメータ群は、ネゴシエーションにより、(20,3)→(18,3)→(18,4)→(16,4)→(16,5)→(15,5)→(15,6)→(13,6)→(13,7)→(12,7)→(12,6)の順に遷移して(10,6)に決定される。
この場合、図14と同様の方法により、(8〜9,10〜11)がTx許容範囲と特定され、物理リンク32dについて決定された(10,6)は、上記Tx許容範囲に収まらないため、不適切なパラメータと判定される。
ここで、仮に、各物理リンクに対して同じ初期Txパラメータ群を設定してネゴシエーションを実行させた場合、ネゴシエーションにより遷移するTxパラメータ群のパターンが類似し、同じTxパラメータ群の値に決定される可能性が生じる。Txパラメータ群の遷移パターンが類似するということは、受信波形の検証が行われないTxパラメータ群が多数存在することを意味する。この場合、受信波形の検証が行われていないTxパラメータ群の中に、最適なTxパラメータ群の値があったとしても、そのTxパラメータ群の値は最適値として決定されない。そのため、図13〜14で説明した方法だけでは、各送信用の物理リンクについて決定されたTxパラメータ群のうち、不適切なTxパラメータ群の分布が集中する範囲が、Tx許容範囲として特定されてしまう場合がある。
例えば、図15に示すように、(10,6)が不適切なTxパラメータ群であるとする。このとき、他の物理リンク32a〜32cに対して同じ初期Txパラメータ群(20,1)を設定してネゴシエーションを実行した場合、図15に示すような物理リンク32dに対するネゴシエーション時と類似するパターンで、Txパラメータ群が遷移する可能性がある。その場合、各物理リンク32a〜32dに対するTxパラメータ群の分布は、不適切なTxパラメータ群(10,6)に集中する可能性がある。このため、(10,6)は、不適切なTxパラメータ群であるにもかかわらず適切なTxパラメータ群と判定され好ましくない。
そこで、パラメータ制御部340は、各物理リンクについて異なる初期Txパラメータ群を設定した状態でネゴシエーションを実行させる。これにより、図15に示すように、各物理リンクについてのネゴシエーションの際、物理リンク毎に異なるパターンによりTxパラメータ群が遷移する。そのため、各物理リンクについて決定されたTxパラメータ群の分布が、不適切な範囲に集中する可能性を低減できる。よって、ネゴシエーションにより決定されたパラメータの適否を精度良く判定できる。
以上の図12〜15では、Txイコライザ314のTxパラメータについて説明したが、送信先のSASコントローラ31bのRxイコライザ315において自動調整されるRxパラメータについても同様のことが言える。すなわち、Txイコライザ314のTxパラメータと同様、Rxイコライザ315のRxパラメータについても、伝送路の距離や送信側と受信側のSASインタフェースのベンダの違いなどによって、ネゴシエーション毎および物理リンク毎にばらつきが生じる場合がある。
そこで、送信側のパラメータ制御部340は、送信先のSASコントローラ31bに設定されたRxパラメータについても、上記のようなTxパラメータと同様の判定処理を実行する。すなわち、パラメータ制御部340は、各物理リンクに対応するRxパラメータ群が一定の大きさのRx許容範囲に収まるかを判定する。そして、パラメータ制御部340は、Rx許容範囲に収まらないRxパラメータ群が存在する場合には、設定されたRxパラメータ群が不適切であると判定する。また、送信先のSASコントローラ31bは、Rxパラメータ群の初期値を物理リンク毎に異なる値とすることで、各物理リンクについて決定されたRxパラメータ群の分布が不適切な範囲に集中する可能性を低減する。
次に、図16〜17を用いて、CM300aがTxイコライザ314のパラメータを設定する処理について、フローチャートを用いて説明する。
図16は、パラメータ群を設定する処理の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S101)パラメータ制御部340は、各送受信部310a〜310dに対して、互いに異なる初期Txパラメータ群の値を通知して、対応するTxイコライザ314に設定させる。そして、パラメータ制御部340は、各送受信部310a〜310dに対してネゴシエーションの実行を要求する。また、送信先のSASコントローラ31bの送受信部310e〜310hでも、互いに異なる初期Rxパラメータ群の値が設定される。なお、送信先のSASコントローラ31bにおけるRxパラメータの初期値設定は、例えば、送信先の装置のCPU(例えば、DE210のCPU213)の制御の下で行われる。
(S102)物理リンク32aに接続する送受信部310aは、ステップS101で通知された初期パラメータ群の値をTxイコライザ314に設定した状態から、Txイコライザ314のパラメータ設定のためのネゴシエーションを開始する。ネゴシエーションの処理の詳細は、図17において後述する。
パラメータ制御部340は、物理リンク32aに対して決定されたTxパラメータ群の値を送受信部310aから受信する。パラメータ制御部340は、送受信部310aから受信したTxパラメータ群の値を、Txパラメータテーブル332における該当ワイドポートIDおよび該当物理リンクIDに対応付けられた設定値の項目へ登録する。
また、パラメータ制御部340は、ネゴシエーションが終了した時点で送信先の送受信部310eのRxイコライザ315に設定されているRxパラメータ群を、送受信部310aを介して受信する。パラメータ制御部340は、送受信部310aから受信したRxパラメータ群をRxパラメータテーブルに登録する。なお、Rxパラメータ群は、例えば、パラメータ制御部340の指示によって送受信部310aから送受信部310eに対してパラメータ送信が要求され、その応答として送受信部310eから送信される。
(S103)物理リンク32bに接続する送受信部310bは、ステップS101で通知された初期Txパラメータ群の値をTxイコライザ314に設定した状態から、Txイコライザ314のパラメータ設定のためのネゴシエーションを開始する。
パラメータ制御部340は、物理リンク32bに対して決定されたTxパラメータ群の値を送受信部310bから受信する。パラメータ制御部340は、送受信部310bから受信したTxパラメータ群の値を、Txパラメータテーブル332における該当ワイドポートIDおよび該当物理リンクIDに対応付けられた設定値の項目へ登録する。
パラメータ制御部340は、ネゴシエーションが終了した時点で送信先の送受信部310fのRxイコライザ315に設定されているRxパラメータ群を、送受信部310fから送受信部310bを介して受信する。パラメータ制御部340は、送受信部310bから受信したRxパラメータ群をRxパラメータテーブルに登録する。
(S104)物理リンク32cに接続する送受信部310cは、ステップS101で通知された初期Txパラメータ群の値をTxイコライザ314に設定した状態から、Txイコライザ314のパラメータ設定のためのネゴシエーションを開始する。
パラメータ制御部340は、物理リンク32cに対して決定されたTxパラメータ群の値を送受信部310cから受信する。パラメータ制御部340は、送受信部310cから受信したTxパラメータ群の値を、Txパラメータテーブル332における該当ワイドポートIDおよび該当物理リンクIDに対応付けられた設定値の項目へ登録する。
パラメータ制御部340は、ネゴシエーションが終了した時点で送信先の送受信部310gのRxイコライザ315に設定されているRxパラメータ群を、送受信部310gから送受信部310cを介して受信する。パラメータ制御部340は、送受信部310cから受信したRxパラメータ群をRxパラメータテーブルに登録する。
(S105)物理リンク32dに接続する送受信部310dは、ステップS101で通知された初期パラメータ群の値をTxイコライザ314に設定した状態から、Txイコライザ314のパラメータ設定のためのネゴシエーションを開始する。
パラメータ制御部340は、物理リンク32dに対して決定されたTxパラメータ群の値を送受信部310dから受信する。パラメータ制御部340は、送受信部310dから受信したTxパラメータ群の値を、Txパラメータテーブル332における該当ワイドポートIDおよび該当物理リンクIDに対応付けられた設定値の項目へ登録する。
パラメータ制御部340は、ネゴシエーションが終了した時点で送信先の送受信部310hのRxイコライザ315に設定されているRxパラメータ群を、送受信部310hから送受信部310dを介して受信する。パラメータ制御部340は、送受信部310dから受信したRxパラメータ群をRxパラメータテーブルに登録する。
(S106)パラメータ制御部340は、各送受信部310a〜310dから受け取った最新のTxパラメータ群の値の分布に基づいて、Txパラメータ群のTx許容範囲の位置を特定する。最新のTxパラメータ群の値は、Txパラメータテーブル332から取得される。Tx許容範囲は、前述した手順により、所定数以上のTxパラメータ群の値が含まれる一定の大きさの範囲として特定される。
また、パラメータ制御部340は、Rxパラメータテーブルに登録されている各送受信部310a〜310dから受け取ったRxパラメータ群に基づいて、Rx許容範囲の位置を特定する。Rx許容範囲は、あらかじめRxパラメータ毎に決められた誤差の範囲に基づいて、各送受信部310a〜310dのTxイコライザ314のパラメータ群についての許容範囲と同じ方法で特定される。例えば、Rx許容範囲は、図13で説明したような方法で、所定数以上のRxパラメータ群の値が含まれる一定の大きさの範囲として特定される。
(S107)パラメータ制御部340は、各送受信部310a〜310dから受け取った最新のTxパラメータ群のうち、ステップS106で特定したTx許容範囲に収まらないTxパラメータ群が存在するかを判定する。
Tx許容範囲に収まらないTxパラメータ群が存在する場合、そのTxパラメータ群を不適切と判定し、処理をステップS110へ進める。
Tx許容範囲に収まらないTxパラメータ群が存在しない場合、物理リンク32a〜32dについて決定されたTxパラメータ群の値をいずれも適切と判定し、処理をステップS108へ進める。
なお、ステップS106で、所定の大きさの範囲に集中するパラメータ群の数が所定値(例えば、該当するワイドリンクに属する物理リンクの数/2)以下であるため、許容範囲を特定できない場合がある。この場合、全物理リンクに対して決定されたパラメータ群が不適切であると判定し、処理をステップS110へ進める。
(S108)パラメータ制御部340は、ステップS102〜S105で受信したRxパラメータ群のうち、ステップS106で特定したRx許容範囲に収まらないRxパラメータ群が存在するかを判定する。Rx許容範囲内に収まらないRxパラメータ群が存在する場合、そのRxパラメータ群を不適切と判定し、処理をステップS110へ進める。Rx許容範囲内に収まらないRxパラメータ群が存在しない場合、処理をステップS109へ進める。
(S109)パラメータ制御部340は、SASコントローラ31aを通じた通信を開始する。SASコントローラ31aにおいては、各送受信部310a〜310dの各Txイコライザ314に、最新のTxパラメータ群の値が設定された状態で、通信が開始される。また、SASコントローラ31bにおいては、各送受信部310e〜310hの各Rxイコライザ315に、最新のRxパラメータ群の値が設定された状態で、通信が開始される。
(S110)パラメータ制御部340は、ステップS112によるネゴシエーションの再実行回数が閾値未満か判定する。ネゴシエーションの再実行回数が閾値未満である場合、処理をステップS111へ進める。ネゴシエーションの再実行回数が閾値以上である場合、処理をステップS113へ進める。
(S111)ステップS107で不適切と判定されたTxパラメータが設定された送受信部、または、ステップS108で不適切と判定されたRxパラメータをテスト信号の送信先から受信した送受信部について、次のような処理が実行される。パラメータ制御部340は、それらの送受信部に対して、送受信部毎に、実行済みのネゴシエーション時とは異なる初期Txパラメータ群の値を通知し、対応するTxイコライザ314に設定させる。そして、パラメータ制御部340は、それらの送受信部に対してネゴシエーションの再実行を要求する。
(S112)ステップS111で再実行が要求された送受信部(該当する物理リンクに対応する送受信部)は、ステップS111で通知された新たな初期Txパラメータ群をTxイコライザ314に設定した状態から、Txイコライザ314のパラメータ設定のためのネゴシエーションを再実行する。
パラメータ制御部340は、ネゴシエーションを再実行した送受信部から、再実行により決定されたTxパラメータ群の値を受信する。パラメータ制御部340は、送受信部から受信したTxパラメータ群の値を、Txパラメータテーブル332における該当ワイドポートIDおよび該当物理リンクIDに対応付けられた設定値の項目へ、上書きして登録する。これにより、Txパラメータテーブル332には、最新のTxパラメータ群の値が登録されることになる。
また、パラメータ制御部340は、ネゴシエーションの再実行が終了した時点で送信先の送受信部のRxイコライザに設定されているRxパラメータ群を、送信先の送受信部から送信元の送受信部を介して受信する。パラメータ制御部340は、受信したRxパラメータ群をRxパラメータテーブルに上書きして登録する。
ここで、ステップS107で対応するTxパラメータ群の値が不適切と判定された送受信部のTxイコライザ314では、ステップS111〜S112において、過去のネゴシエーション実行時とは異なる初期Txパラメータ群が設定された状態から、ネゴシエーションが再実行される。これにより、ネゴシエーションにより遷移するTxパラメータ群のパターンが、過去の実行時とは異なるパターンとなり、その結果、より適切なTxパラメータ群が最適値として決定される可能性が高まる。また、ステップS108で対応するRxパラメータ群の値が不適切と判定された送受信部のRxイコライザ315でも、ステップS111〜S112において、ネゴシエーションが再実行される。これにより、より適切なRxパラメータ群が最適値として決定される可能性が高まる。
なお、ステップS111では、例えば、過去のネゴシエーションでTxパラメータ群の値が適切と判定された物理リンクに対して、そのネゴシエーション時に設定された初期Txパラメータ群の値が、ネゴシエーションを再実行させる送受信部に設定されてもよい。この場合に設定される初期Txパラメータ群の値は、ネゴシエーションの再実行対象の送受信部以外の他の送受信部に対して過去に設定された値であってもよいし、再実行対象の送受信部自身に対して過去に設定された値であってもよい。いずれの場合でも、ネゴシエーションの再実行時におけるTxパラメータ群の遷移パターンが、過去にTxパラメータ群の値が適切と判定されたときと類似する可能性が高まり、その結果、より適切なTxパラメータ群が最適値として決定される可能性が高まる。
(S113)パラメータ制御部340は、ステップS107で対応するTxパラメータ群の値が不適切と判定された物理リンク、または、ステップS108で対応するRxパラメータ群の値が不適切と判定された物理リンクを切り離すよう、SASコントローラ31aの制御回路352aに要求する。制御回路352aは、切り離しが要求された物理リンクに接続する送受信部の動作を停止させ、残りの送受信部のみを動作させる。これにより、残りの送受信部に対応する物理リンクのみを用いて構成されたワイドポートによって、通信が開始される。
なお、ステップS113では、パラメータ制御部340は、ステップS107で適切と判定されたいずれかのTxパラメータ群の値を、ステップS107で対応するTxパラメータ群の値が不適切と判定された各物理リンクに対応する送受信部に対して通知してもよい。この場合、通知されたTxパラメータ群の値は、対応するTxイコライザ314に設定される。そして、パラメータ制御部340は、物理リンク32a〜32dのすべてを用いて通信を開始させる。この場合でも、各送受信部でネゴシエーションによって決定されたTxパラメータ群の値をそのまま用いて通信を行った場合より、通信異常が発生する可能性は低くなり、通信の安定性が高まる。
また、このように適切と判定されたいずれかのTxパラメータ群の値を、Txパラメータ群の値が不適切と判定された各物理リンクに対応する送受信部に強制的に設定する処理は、例えば、ステップS107の判定で適切と判定されたTxパラメータ群の数が所定数以上の場合に限定されてもよい。この場合の所定数としては、例えば、全物理リンク数の2/3以上といった値を用いることができる。このような限定を加えることで、Txパラメータ群の値が不適切と判定された各物理リンクにおいて、通信異常が発生する確率を低減することができる。
図17は、ネゴシエーションの処理の例を示すフローチャートである。図17の処理は、図16のステップS102〜S105およびステップS112で、該当する送受信部により実行される。図17の処理の実行開始時には、パラメータ制御部340からの要求に応じて、該当する送受信部のTxイコライザ314に対して初期Txパラメータ群が設定されている。また、接続先の送受信部のRxイコライザ315でも初期Rxパラメータ群が設定されている。以下、図17に示す処理をステップ番号に沿って説明する。
(S121)制御回路321は、パルスジェネレータ319にネゴシエーション用のテスト信号を出力させる。これにより、接続された物理リンクを介してテスト信号が接続先の送受信部へ送信される。
(S122)接続先の送受信部では、Rxイコライザ315の各Rxパラメータが自動調整され、波形検出回路320での検出結果を基にネゴシエーションを終了するかが判断される。そして、接続先の送受信部から、その判断に基づくメッセージが該当する物理リンクを経由して送信される。制御回路321は、受信されたメッセージを取得する。
(S123)制御回路321は、ステップS122で受信されたメッセージがネゴシエーション終了要求であるか判定する。受信したメッセージがネゴシエーション終了要求である場合、ネゴシエーション処理を終了する。受信したメッセージがネゴシエーション終了要求以外のメッセージ(すなわちパラメータ調整要求)である場合、処理をステップS124へ進める。
(S124)制御回路321は、ステップS122で受信されたパラメータ調整要求に応じて、Txイコライザ314のTxパラメータ群の設定値を変更する。例えば、制御回路321は、受信したメッセージに含まれるメッセージコードが“0Ah”の場合、パラメータC1をそのままにし、パラメータC2から“2”減算し、パラメータC3から“2”減算する。
そして、処理をステップS121へ進める。
なお、上記の図16の処理は、例えば、SASコントローラ31aとSASコントローラ31bとの間の通信リンクが切断された後に再接続されるたびに実行される。例えば、図16の処理の実行タイミングとしては、CM300aの電源がオンになるタイミング、CM300aの電源がオンの状態で、DE210の電源がオフからオンになるタイミング等がある。このように、図16の処理は、繰り返し実行され得る。
そこで、CM300aは、次のような処理を実行してもよい。パラメータ制御部340は、図16の処理を実行し、各物理リンクに設定するパラメータの値を決定するたびに、決定されたパラメータの値をパラメータ情報記憶部330に格納する。パラメータ制御部340は、図16の処理が繰り返され、各物理リンクに実際に設定されたパラメータの値がパラメータ情報記憶部330に所定数だけ蓄積されると、各物理リンクに実際に設定されたパラメータの値の平均値を計算する。これ以後、パラメータ制御部340は、図16の処理を実行する際に、初期パラメータ群として、対応する物理リンクについて計算された平均値を設定する。これにより、平均値の計算後では、通信品質を維持しつつも、図16のパラメータ群設定処理に要する時間が短縮される可能性が高くなる。
[第3の実施の形態]
次に、図18〜19を用いて、第3の実施の形態について説明する。第3の実施の形態は、第2の実施の形態におけるSASコントローラ間のネゴシエーションを用いたTxパラメータ群設定処理を変形したものである。以下、第3の実施の形態について、第2の実施の形態に示したハードウェアおよび処理機能と同じ符号を用いて説明する。
図18は、第3の実施の形態におけるTxパラメータ群の判定例を示す図である。図18では、2つの送信用の物理リンクのみを含むワイドリンクに対するネゴシエーションを例に説明する。また、図18の説明では、図5に示した物理リンク32a〜32dのうち、2つの物理リンク32a,32bのみでワイドポートを構成するものとする。図18では、図15と同様の内容については、説明を省略する。
この場合、パラメータ制御部340は、まず、図18上段に示すように、物理リンク32aに対して初期Txパラメータ群(1,20)を設定して1回目のネゴシエーションを実行させる。また、物理リンク32bに対して初期Txパラメータ群(20,20)を設定して1回目のネゴシエーションを実行させる。その結果、物理リンク32aに対してTxパラメータ群(8,11)が決定され、物理リンク32bに対してTxパラメータ群(9,11)が決定されたとする。
次に、パラメータ制御部340は、図18下段に示すように、物理リンク32aに対して1回目とは異なる初期Txパラメータ群(1,1)を設定して2回目のネゴシエーションを実行させる。また、物理リンク32bに対して1回目とは異なる初期Txパラメータ群(20,1)を設定して2回目のネゴシエーションを実行させる。その結果、物理リンク32aに対してTxパラメータ群(8,10)が決定され、物理リンク32bに対してTxパラメータ群(10,6)が決定されたとする。
この場合、パラメータ制御部340は、1回目および2回目のネゴシエーションにより決定された各Txパラメータ群(8,11)、(9,11)、(8,10)、(10,6)の分布に基づいて、許容範囲を算出する。例えば、パラメータ制御部340は、一方の物理リンク32aについて決定されたTxパラメータ群と、他方の物理リンク32bについて決定されたTxパラメータ群とのすべての組み合わせのそれぞれについて、前述の手順によりTx許容範囲の位置を算出する。すなわち、Txパラメータ群(8,11)、(9,11)のペア、Txパラメータ群(8,11)、(10,6)のペア、Txパラメータ群(8,10)、(9,11)のペア、Txパラメータ群(8,10)、(10,6)のペアのそれぞれについて、Tx許容範囲が算出される。
その結果、Txパラメータ群(8,11)、(9,11)のペアと、Txパラメータ群(8,10)、(9,11)のペアとから、ともにTx許容範囲(8〜9,10〜11)が算出される。この場合、パラメータ制御部340は、Txパラメータ群(8,11)またはTxパラメータ群(8,10)を、物理リンク32aに対応する送受信部310aに設定する適切なTxパラメータ群と判定し、いずれかのTxパラメータ群の値を送受信部310aに設定する。また、パラメータ制御部340は、Txパラメータ群(9,11)を、物理リンク32bに対応する送受信部310bに設定する適切なTxパラメータ群と判定し、このTxパラメータ群の値を送受信部310bに設定する。
図18で説明したように、各物理リンクについて、初期Txパラメータ群を変更しながら複数回ネゴシエーションを実行する。そして、複数回のネゴシエーションにより、各物理リンクに対して決定されたTxパラメータ群の分布に基づいてTx許容範囲を特定し、各物理リンクについて、決定されたTxパラメータ群のうち、特定したTx許容範囲に収まるTxパラメータ群のいずれかを選択して設定するようにする。これにより、ワイドポートを構成する物理リンクの数が少ない場合でも(例えば、4つ未満であっても)、ネゴシエーション時のTxパラメータ群の値の遷移パターンを実質的に増やすことが可能であるため、適切な位置のTx許容範囲が特定される可能性がより高くなる。よって、ネゴシエーションにより決定されたTxパラメータ群の適否を精度良く判定できる。
図19は、第3の実施の形態におけるTxパラメータ群の設定処理例を示すフローチャートである。本処理は、図16と同様に、CM300aが、自装置が備えるSASコントローラ31aのTxイコライザ314のTxパラメータを設定するための処理を示す。すなわち、図19の処理は、図16の処理に代えて実行される。以下、図19に示す処理をステップ番号に沿って説明する。
(S201)パラメータ制御部340は、ワイドポートを構成する各物理リンクに対応する送受信部に対して、互いに異なる初期Txパラメータ群の値を通知して、対応するTxイコライザ314に設定させる。そして、パラメータ制御部340は、各送受信部にネゴシエーションの実行を要求する。なお、ワイドポートを構成する物理リンクの数は、特に限定されない。
(S202)ネゴシエーションの実行が要求された各送受信部は、通知された初期Txパラメータ群が設定された状態からネゴシエーションを開始する。各送受信部でのネゴシエーション処理の詳細は、図8と同様である。各送受信部は、ネゴシエーションにより決定されたTxパラメータ群の値を、パラメータ制御部340に送信する。
(S203)パラメータ制御部340は、各送受信部において決定されたTxパラメータ群の値を、パラメータ情報記憶部330に格納する。
(S204)パラメータ制御部340は、ステップS202,S203の処理を所定回数実行済みかを判定する。該当処理が所定回数実行済みでない場合、処理をステップS205に進める。該当処理が所定回数実行済みである場合、処理をステップS206に進める。
(S205)パラメータ制御部340は、各物理リンクに対応する送受信部に対して、実行済みのネゴシエーション時とは異なる初期Txパラメータ群の値を通知し、対応するTxイコライザ314に設定させる。そして、パラメータ制御部340は、各送受信部に対してネゴシエーションの再実行を要求する。
なお、通知される初期Txパラメータ群の値は、例えば、物理リンク毎に、実行済みのネゴシエーション時とは異なる値であってもよいし、あるいは、全物理リンクでの実行済みのネゴシエーションにおいて設定されたことのない値であってもよい。
(S206)パラメータ制御部340は、パラメータ制御部340に格納された、設定済みのTxパラメータ群の中から、各物理リンクに対応するTxパラメータ群を1つずつ組み合わせて得られるTxパラメータ群の組み合わせを、すべて抽出する。パラメータ制御部340は、抽出されたTxパラメータ群の組み合わせのそれぞれについて、同じ大きさのTx許容範囲の位置を特定する。Tx許容範囲の位置の特定方法は、図16のステップS106と同様である。
パラメータ制御部340は、Txパラメータ群の各組み合わせについて特定されたTx許容範囲のうち、その範囲内に含まれるTxパラメータ群の数が最大のものを選択する。さらに、パラメータ制御部340は、選択されたTx許容範囲の中から、その範囲に含まれるTxパラメータ群の値のうち最大値と最小値との差が最も小さいTx許容範囲を選択する。そして、パラメータ制御部340は、選択したTx許容範囲に対応するTxパラメータ群の組み合わせを、最も適切な組み合わせとして選択する。
(S207)パラメータ制御部340は、選択された組み合わせに含まれるTxパラメータ群の値を、対応する送受信部のTxイコライザ314に設定し、各送受信部を用いた通信を開始させる。
なお、上記の図19では、送信先のSASコントローラ31bの送受信部におけるRxパラメータの設定についての記載を省略した。しかし、ステップS201,S205では、Txパラメータと同様に、Rxパラメータについても送受信部毎に異なる初期パラメータが設定されてもよい。
なお、以上の第2および第3の実施の形態で説明したパラメータ群の設定処理は、PCIeバスを介した通信にも適用可能である。例えば、図3のPCIeスイッチ303aとPCIeスイッチ303bとの間の通信にも適用可能である。
PCIeでは、上記の説明における物理リンクは“レーン”と呼ばれる。また、複数のレーンを1つの論理的な通信ポートとして用いて通信する方法も規定されている。したがって、上記の説明における物理リンクをレーンに対応させることで、PCIeバスを介した通信においても、第2および第3の実施の形態と同様のパラメータ群の設定処理が実現される。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2の実施の形態と共通する構成要素については同じ符号を付して示し、その説明を省略する。
第4の実施の形態は、第2の実施の形態のストレージシステム100に、通信異常が発生した際に異常箇所を特定する機能を追加したものである。ワイドポートを用いた通信では、通信異常が発生したとき、どの物理リンクで通信異常が発生したかを特定できることが多い。しかし、その物理リンクに関連するどのハードウェアで異常が発生しているかを特定することはできない。このため、異常発生箇所を判断して、その箇所のみを交換することができず、保守作業の効率を高めることができない。第4の実施の形態では、第2の実施の形態で示した技術を利用して、このような問題を解決する。
図20は、第4の実施の形態の送受信部のハードウェア構成例を示す図である。第4の実施の形態の送受信部310には、第2の実施の形態の送受信部310に信号線323a,323bが追加される。
図20において、信号線324a,324bは、Txイコライザ314から図示しないコネクタを介して通信相手の送受信部に信号を送信するための差動信号線である。また、信号線325a,325bは、Rxイコライザ315が通信相手の送受信部から図示しないコネクタを介して信号を受信するための差動信号線である。信号線323a,323bは、Txイコライザ314の出力をRxイコライザ315の入力に接続するための信号線である。Txイコライザ314は、制御回路321からの指示に基づいて、信号線324a,324bと信号線323a,323bの一方のみに信号が流れるようにする。また、Rxイコライザ315は、制御回路321からの指示に基づいて、信号線325a,325bと信号線323a,323bの一方のみに信号が流れるようにする。なお、以下の説明では、信号線323a,323bに信号が流れる状態を「ループバック状態」と記載する。
送受信部310は、SASコントローラの外部のCPU(例えば、CM200aのCPU301a)からの指示に応じて、ループバック状態でのパラメータ設定のためのネゴシエーションを行うことができる。このネゴシエーションが指示された場合、制御回路321は、信号線323a,323bに信号が流れるループバック状態にするようにTxイコライザ314およびRxイコライザ315に指示する。そして、第2の実施の形態での送信側のTxイコライザ314と受信側のRxイコライザ315との間のネゴシエーションと同様の手順で、同じ送受信部310におけるTxイコライザ314とRxイコライザ315との間でネゴシエーションが行われる。
ループバック状態でのネゴシエーションでは、制御回路321の制御の下で、PG319から出力されたテスト信号がTxイコライザ314から信号線323a,323bを介してRxイコライザ315に送信される。Rxイコライザ315は、Rxパラメータを自動調整して受信波形を整形し、整形された波形が波形検出回路320によって検出されて、検出結果が制御回路321に通知される。制御回路321は、通知された検出結果が所定の基準を満たさない場合には、Txパラメータの設定値を変更して再度テスト信号を送信させる。制御回路321は、波形検出回路320から通知される検出結果が所定の基準を満たすまで上記処理を繰り返し、検出結果が基準を満たしたときのTxパラメータおよびRxパラメータを、決定値として外部のCPUに出力する。
すなわち、ループバック状態でのネゴシエーションは、第2の実施の形態で示した送信側と受信側とのネゴシエーションを同一の送受信部内で疑似的に実行するものである。ループバック状態でのネゴシエーションは、制御回路321によって送信側と受信側の両方の動作が制御され、図9に示したTxパラメータ変更のためのメッセージが送受信部間で送受信されない点で、第2の実施の形態で示した送信側と受信側とのネゴシエーションとは異なる。
第4の実施の形態のストレージシステム100においては、少なくとも、図5に示すように互いに通信するSASコントローラ31a,31bがそれぞれ異なる装置に搭載されている場合に、そのSASコントローラ31aの送受信部310a〜310dおよびSASコントローラ31bの送受信部310e〜310hは、図20の送受信部310と同様の構成を有する。そして、第4の実施の形態では、そのようなSASコントローラ31a,31bを接続するいずれかの物理リンクにおいて通信異常が発生した場合に、異常箇所がSASコントローラ31aか、SASコントローラ31bか、それ以外の箇所(例えば伝送路)かを判別可能にする。
以下の説明では、例として、CM300aのSASエクスパンダ306aとDE210210のSASエクスパンダ211aとを、異常箇所の特定に関する説明の対象とする。具体的には、SASコントローラ31aはCM300aのSASエクスパンダ306aに搭載され、SASコントローラ31bはDE210のSASエクスパンダ211aに搭載されるものとする。
上記のSASコントローラ31a,31bの間の通信に関しては、通信開始前におけるループバックトレーニングと、通信異常発生時のループバックテストとが実行される。ループバックトレーニングでは、送受信部310a〜310hがループバック状態にされ、送受信部310a〜310hのそれぞれにおいて、パラメータ設定のためのネゴシエーションが行われる。CM300aは、ネゴシエーションの結果得られたTxパラメータおよびRxパラメータに基づいて、SASコントローラ31a,31bのそれぞれについてのTx許容範囲およびRx許容範囲を特定し、これらの値を保持する。
また、SASコントローラ31a,31bの間で通信が開始された後、いずれかの物理リンクで通信異常が発生すると、その物理リンクに対応する送受信部についてのループバックテストが実行される。ループバックテストでは、送受信部がループバック状態にされ、ループバックトレーニングと同様の手順でパラメータ設定のためのネゴシエーションが行われる。CM300aは、ネゴシエーションの結果得られたTxパラメータおよびRxパラメータが、ループバックトレーニングで特定されたTx許容範囲およびRx許容範囲に含まれるかを判定することにより、異常箇所を特定する。
図21は、第4の実施の形態のCMの機能例を示すブロック図である。なお、図21ではCM300aについて示すが、CM300bもCM300aと同様の機能を備えていてもよい。第4の実施の形態のCM300aには、第2の実施の形態のCM300aにエラー処理部350が追加される。エラー処理部350は、例えば、CM300aが備えるCPU301aが所定のプログラムを実行することで実現される。
また、パラメータ情報記憶部330には、Txトレーニングテーブル、Rxトレーニングテーブル、Tx許容範囲テーブルおよびRx許容範囲テーブルが追加されて記憶される。Txトレーニングテーブルには、ループバックトレーニングによって送受信部310a〜310hのそれぞれにおいて決定されたTxパラメータ群の値が登録される。Rxトレーニングテーブルには、ループバックトレーニングによって送受信部310a〜310hのそれぞれにおいて決定されたRxパラメータ群の値が登録される。Tx許容範囲テーブルには、ループバックトレーニングによって決定されたTxパラメータ群に基づいて特定されたTx許容範囲を示す情報が登録される。Rx許容範囲テーブルには、ループバックトレーニングによって決定されたRxパラメータ群に基づいて特定されたTx許容範囲を示す情報が登録される。
次に、第2の実施の形態のパラメータ制御部340に追加される機能を説明する。パラメータ制御部340は、図16のパラメータ群設定処理を実行する前に、Tx許容範囲およびRx許容範囲を決定するためのループバックトレーニングを実行する。パラメータ制御部340は、各送受信部310a〜310dに対してループバック状態でネゴシエーションを実行するように指示する。この際、パラメータ制御部340は、各送受信部310a〜310dに対して、互いに異なる初期Txパラメータ群および初期Rxパラメータ群の値を通知する。各送受信部310a〜310dでは、ループバック状態でパラメータ設定のためのネゴシエーションが実行され、Txパラメータ群およびRxパラメータ群が決定される。パラメータ制御部340は、各送受信部310a〜310dから、決定されたTxパラメータ群およびRxパラメータ群を取得する。パラメータ制御部340は、取得したTxパラメータ群をTxトレーニングテーブルに登録し、取得したRxパラメータ群をRxトレーニングテーブルに登録する。
パラメータ制御部340は、Txトレーニングテーブルを参照し、各送受信部310a〜310dから取得したTxパラメータ群の値の分布に基づいて、Tx許容範囲の位置を特定する。Tx許容範囲は、例えば、図13で説明したように、所定数以上のTxパラメータ群の値が含まれる一定の大きさの範囲として特定される。パラメータ制御部340は、特定したTx許容範囲をTx許容範囲テーブルに登録する。また、パラメータ制御部340は、Rxトレーニングテーブルを参照し、各送受信部310a〜310dから取得したRxパラメータ群に基づいて、Rx許容範囲を特定する。パラメータ制御部340は、特定したRx許容範囲をRx許容範囲テーブルに登録する。
ここで、SASコントローラ31aとSASコントローラ31bとの間で正式に通信が開始される前に、SASコントローラ31bの各送受信部310e〜310hでも、ループバック状態でネゴシエーションが実行される。例えば、DE210への電源投入直後にネゴシエーションが実行される。各送受信部310e〜310hには、CPU213により、互いに異なる初期Txパラメータ群および初期Rxパラメータ群の値が通知される。初期Txパラメータ群および初期Rxパラメータ群は、フラッシュメモリ214に記憶されている。各送受信部310e〜310hでは、ループバック状態でネゴシエーションが実行され、Txパラメータ群およびRxパラメータ群が決定される。パラメータ制御部340は、各送受信部310e〜310hから、決定されたTxパラメータ群およびRxパラメータ群を取得する。パラメータ制御部340は、取得したTxパラメータ群をTxトレーニングテーブルに登録し、取得したRxパラメータ群をRxトレーニングテーブルに登録する。
パラメータ制御部340は、Txトレーニングテーブルを参照し、各送受信部310e〜310hから取得したTxパラメータ群の値の分布に基づいて、Tx許容範囲の位置を特定する。パラメータ制御部340は、特定したTx許容範囲をTx許容範囲テーブルに登録する。また、パラメータ制御部340は、Rxトレーニングテーブルを参照し、各送受信部310e〜310hから取得したRxパラメータ群に基づいて、Rx許容範囲を特定する。パラメータ制御部340は、特定したRx許容範囲をRx許容範囲テーブルに登録する。
このように、Tx許容範囲テーブルには、CM側の送受信部310a〜310dに対応するTx許容範囲と、DE側の送受信部310e〜310hに対応するTx許容範囲とが登録される。同様に、Rx許容範囲テーブルには、CM側の送受信部310a〜310dに対応するRx許容範囲と、DE側の送受信部310e〜310hに対応するRx許容範囲とが登録される。登録されたTx許容範囲およびRx許容範囲は、通信異常が発生した際に、CM側の送受信部およびDE側の送受信部それぞれが異常であるか否かを判定するための指標として用いられる。ここで、CM側の送受信部とDE側の送受信部とでそれぞれ個別に許容範囲を特定するのは、CM側の送受信部とDE側の送受信部とのベンダが異なることや、各送受信部の設置環境(例えば温度)が異なることにより、CM側の送受信部とDE側の送受信部とでは許容範囲が異なると考えられるからである。
エラー処理部350は、SASコントローラ31a,31b間の通信が開始された後、通信異常が発生している物理リンクを検知すると、管理端末130にワーニングを通知するとともにループバックテストを実行する。エラー処理部350は、通信異常が発生した物理リンクに接続しているCM側の送受信部とDE側の送受信部とにループバック状態でネゴシエーションを実行するように指示する。エラー処理部350は、CM側の送受信部とDE側の送受信部から、ネゴシエーションにより決定されたTxパラメータ群およびRxパラメータ群を取得する。
エラー処理部350は、CM側の送受信部が決定したTxパラメータ群がループバックトレーニングによって特定されたCM側の送受信部に対応するTx許容範囲に収まっていない場合、CM側の送受信部を異常箇所と判断する。また、エラー処理部350は、CM側の送受信部が決定したRxパラメータ群がループバックトレーニングによって特定されたCM側の送受信部に対応するRx許容範囲に収まっていない場合にも、CM側の送受信部を異常箇所と判断する。
エラー処理部350は、DE側の送受信部が決定したTxパラメータ群がループバックトレーニングによって特定されたDE側の送受信部に対応するTx許容範囲に収まっていない場合、DE側の送受信部を異常箇所と判断する。また、エラー処理部350は、DE側の送受信部が決定したRxパラメータ群がループバックトレーニングによって特定されたDE側の送受信部に対応するRx許容範囲に収まっていない場合にも、DE側の送受信部を異常箇所と判断する。
エラー処理部350は、CM側の送受信部およびDE側の送受信部を異常箇所と判断しなかった場合、通信異常が発生している物理リンクの伝送路を異常箇所と判断する。エラー処理部350は、異常箇所を示す情報を管理端末130に表示させる。
図22は、Txトレーニングテーブルの例を示す図である。Txトレーニングテーブル333は、パラメータ情報記憶部330に格納される。
Txトレーニングテーブル333は、ワイドポートID、物理リンクID、パラメータ種別および設定値の項目を有する。ワイドポートIDの項目には、ワイドポートを識別するための識別子が登録される。ワイドポートIDは、SASコントローラに対応付けられている。このため、Txトレーニングテーブル333には、互いに接続された2つのSASコントローラに対応する2つのワイドポートIDが、少なくとも登録される。物理リンクIDには、対応するワイドポートに属する物理リンクを識別するための識別子が登録される。パラメータ種別の項目には、Txパラメータの種別を示す情報が登録される。設定値の項目には、パラメータ種別に対して設定されているTxパラメータ群が登録される。
なお、Rxトレーニングテーブルは、Txトレーニングテーブル333と同じ項目を有するため、説明を省略する。Rxトレーニングテーブルのパラメータ種別には、Rxパラメータの種別を示す情報が登録される。
図23は、Tx許容範囲テーブルの例を示す図である。Tx許容範囲テーブル334は、パラメータ情報記憶部330に格納される。Tx許容範囲テーブル334は、ワイドポートID、パラメータ種別および範囲の項目を有する。
ワイドポートIDの項目には、ワイドポートを識別するための識別子が登録される。パラメータ種別の項目には、Txパラメータの種別を示す情報が登録される。範囲の項目には、パラメータ種別に対応するTx許容範囲を示す情報が登録される。Tx許容範囲を示す情報とは、Tx許容範囲の幅ではなく位置を示すものであり、具体的にはその範囲の下限値と上限値とを示す。
なお、Rx許容範囲テーブルは、Tx許容範囲テーブル334と同じ項目を有するため、説明を省略する。Rx許容範囲テーブルのパラメータ種別には、Rxパラメータの種別を示す情報が登録される。
図24は、ループバックトレーニングの例(その1)を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。図24の処理は、例えば、CM300aが起動した直後に実行される。
(S301)パラメータ制御部340は、各送受信部310a〜310dに対して、互いに異なる初期Txパラメータ群の値を通知して、対応するTxイコライザ314に設定させる。また、パラメータ制御部340は、各送受信部310a〜310dに対して、互いに異なる初期Rxパラメータ群の値を通知して、対応するRxイコライザ315に設定させる。そして、パラメータ制御部340は、各送受信部310a〜310dに対してループバック状態でネゴシエーションを実行するように指示する。
(S302)各送受信部310a〜310dは、ステップS301で通知された初期Txパラメータ群および初期Rxパラメータ群の値をTxイコライザ314およびRxイコライザ315にそれぞれ設定する。そして、各送受信部310a〜310dは、Txイコライザ314とRxイコライザ315との間でネゴシエーションを実行する。
例えば、送受信部310aは、ステップS301で通知された初期Txパラメータ群および初期Rxパラメータ群の値を、送受信部310a内のTxイコライザ314およびRxイコライザ315にそれぞれに設定する。そして、送受信部310aは、送受信部310a内のTxイコライザ314とRxイコライザ315との間でネゴシエーションを実行する。ネゴシエーションの手順は、図20の箇所で説明した通りである。送受信部310aは、ネゴシエーションにより、Txイコライザ314のTxパラメータ群とRxイコライザ315のRxパラメータ群とを決定する。送受信部310b〜310dでも、同様にTxパラメータ群とRxパラメータ群とが決定される。
各送受信部310a〜310dは、決定されたTxパラメータ群およびRxパラメータ群の値をパラメータ制御部340に送信する。パラメータ制御部340は、各送受信部310a〜310dから受信したTxパラメータ群およびRxパラメータ群の値を、それぞれTxトレーニングテーブル333およびRxトレーニングテーブルに登録する。
(S303)パラメータ制御部340は、各送受信部310a〜310dから受け取ったTxパラメータ群の値の分布に基づいて、Tx許容範囲の位置を特定する。Txパラメータ群の値は、Txトレーニングテーブル333から取得される。Tx許容範囲は、例えば、図13で説明したように、所定数以上のTxパラメータ群の値が含まれる一定の大きさの範囲として特定される。パラメータ制御部340は、特定したTx許容範囲をTx許容範囲テーブル334に登録する。
また、パラメータ制御部340は、各送受信部310a〜310dから受け取ったRxパラメータ群の値の分布に基づいて、Rx許容範囲の位置を特定する。Rxパラメータ群の値は、Rxトレーニングテーブルから取得される。Rx許容範囲も、Tx許容範囲と同様に、所定数以上のRxパラメータ群の値が含まれる一定の大きさの範囲として特定される。パラメータ制御部340は、特定したRx許容範囲をRx許容範囲テーブルに登録する。
(S304)パラメータ制御部340は、各送受信部310a〜310dから受け取ったTxパラメータ群のうち、ステップS303で特定したTx許容範囲に収まらないTxパラメータ群が存在するか判定する。Tx許容範囲に収まらないTxパラメータ群が存在する場合、処理をステップS306へ進める。Tx許容範囲に収まらないTxパラメータ群が存在しない場合、処理をステップS305へ進める。
(S305)パラメータ制御部340は、各送受信部310a〜310dから受け取ったRxパラメータ群のうち、ステップS303で特定したRx許容範囲に収まらないRxパラメータ群が存在するか判定する。Rx許容範囲に収まらないRxパラメータ群が存在する場合、処理をステップS306へ進める。Rx許容範囲に収まらないRxパラメータ群が存在しない場合、パラメータ制御部340は、図16のパラメータ群設定処理を実行する。そして、CM300aまたはCM300bとDE210との間で通信が可能になった場合、処理をステップS311へ進める。
(S306)パラメータ制御部340は、Tx許容範囲に収まらないTxパラメータ群またはRx許容範囲に収まらないRxパラメータ群を送信した送受信部が異常である旨のエラー通知を管理端末130に行う。そして、処理を終了する。
図25は、ループバックトレーニングの例(その2)を示すフローチャートである。以下、図25に示す処理をステップ番号に沿って説明する。
(S311)DE210では、このステップS311の実行までの期間において、CPU213の制御の下で各送受信部310e〜310hにおけるループバック状態でのネゴシエーションが実行されている。例えば、DE210が起動した直後にこのネゴシエーションが実行される。
パラメータ制御部340は、DE210のCPU213に対してパラメータ送信要求を送信する。パラメータ制御部340は、DE210のCPU213から、各送受信部310e〜310hで決定されたTxパラメータ群およびRxパラメータ群の値を取得する。パラメータ制御部340は、取得したTxパラメータ群およびRxパラメータ群の値を、それぞれTxトレーニングテーブル333およびRxトレーニングテーブルに登録する。
(S312)パラメータ制御部340は、Txトレーニングテーブル333を参照し、各送受信部310e〜310hで決定されたTxパラメータ群の値の分布に基づいて、Tx許容範囲の位置を特定する。パラメータ制御部340は、特定したTx許容範囲をTx許容範囲テーブル334に登録する。また、パラメータ制御部340は、Rxトレーニングテーブルを参照し、各送受信部310e〜310hで決定されたRxパラメータ群の値の分布に基づいて、Rx許容範囲の位置を特定する。パラメータ制御部340は、特定したRx許容範囲をRx許容範囲テーブルに登録する。
(S313)パラメータ制御部340は、各送受信部310e〜310hで決定されたTxパラメータ群のうち、ステップS312で特定したTx許容範囲に収まらないTxパラメータ群が存在するか判定する。Tx許容範囲に収まらないTxパラメータ群が存在する場合、処理をステップS315へ進める。Tx許容範囲に収まらないTxパラメータ群が存在しない場合、処理をステップS314へ進める。
(S314)パラメータ制御部340は、各送受信部310e〜310hで決定されたRxパラメータ群のうち、ステップS312で特定したRx許容範囲に収まらないRxパラメータ群が存在するか判定する。Rx許容範囲に収まらないRxパラメータ群が存在する場合、処理をステップS315へ進める。Rx許容範囲に収まらないRxパラメータ群が存在しない場合、処理を終了する。
(S315)パラメータ制御部340は、Tx許容範囲に収まらないTxパラメータ群またはRx許容範囲に収まらないRxパラメータ群が決定された送受信部が異常である旨のエラー通知を管理端末130に行う。そして、処理を終了する。
図24〜25の処理によれば、ステップS306またはステップS315の処理が実行されなければ、Tx許容範囲テーブル334には、CM側の送受信部310a〜310dに対応するTx許容範囲と、DE側の送受信部310e〜310hに対応するTx許容範囲とが登録される。これとともに、Rx許容範囲テーブルには、CM側の送受信部310a〜310dに対応するRx許容範囲と、DE側の送受信部310e〜310hに対応するRx許容範囲とが登録される。
図26は、DEのSASコントローラにおけるネゴシエーション処理の例を示すフローチャートである。図26は、例えば、DE210が起動した直後に実行される。
(S321)DE210のCPU213は、各送受信部310e〜310hに対して、互いに異なる初期Txパラメータ群の値を通知して、対応するTxイコライザ314に設定させる。また、CPU213は、各送受信部310e〜310hに対して、互いに異なる初期Rxパラメータ群の値を通知して、対応するRxイコライザ315に設定させる。そして、CPU213は、各送受信部310e〜310hに対してループバック状態でネゴシエーションを実行するように指示する。
(S322)各送受信部310e〜310hは、ステップS321で通知された初期Txパラメータ群および初期Rxパラメータ群の値をTxイコライザ314およびRxイコライザ315にそれぞれ設定する。そして、各送受信部310e〜310hは、Txイコライザ314とRxイコライザ315との間でネゴシエーションを実行する。これにより、各送受信部310e〜310hにおいて、Txパラメータ群とRxパラメータ群とが決定される。各送受信部310e〜310hは、決定したTxパラメータ群とRxパラメータ群とをCPU213に送信する。
(S323)CPU213は、CM300aのパラメータ制御部340からパラメータ送信要求を受信したかを判定する。パラメータ送信要求を受信していない場合、CPU213は、一定時間後にステップS323の処理を再度実行する。パラメータ送信要求を受信した場合、処理をステップS324に進める。なお、パラメータ送信要求は、図25のステップS311においてパラメータ制御部340から送信される。
(S324)CPU213は、Txパラメータ群とRxパラメータ群とをパラメータ制御部340に送信する。
なお、例えば、上記のステップS323,S324および図25のステップS312が実行される代わりに、ステップS322の後に、DE210のCPU213によって送受信部310e〜310hに対応するTx許容範囲およびRx許容範囲が特定されてもよい。この場合、CM300aのパラメータ制御部340は、DE210において特定された送受信部310e〜310hに対応するTx許容範囲およびRx許容範囲を取得して、それぞれTxトレーニングテーブル333およびRxトレーニングテーブルに登録する。さらに、例えば、図25のステップS313〜S315の判定処理も、DE210のCPU213によって実行されてもよい。この場合、エラーと判定されなかった場合のみ、送受信部310e〜310hに対応するTx許容範囲およびRx許容範囲がDE210のCPU213からCM300aのパラメータ制御部340に送信される。
図27は、ループバック状態でのネゴシエーションの処理の例を示すフローチャートである。図27の処理は、図24のステップS302や、図26のステップS322、後述する図28のステップS344で、該当する送受信部により実行される。なお、図27の実行開始前に、パラメータ制御部340やDE210のCPU213から初期Txパラメータ群および初期Rxパラメータ群が指定されている場合、図27の開始時には、指定された初期Txパラメータ群がTxイコライザ314に設定され、指定された初期Rxパラメータ群がRxイコライザ315に設定される。以下、図27に示す処理をステップ番号に沿って説明する。
(S331)制御回路321は、信号線323a,323bに信号が流れるループバック状態にする。
(S332)制御回路321は、パルスジェネレータ319にネゴシエーション用のテスト信号を出力させる。これにより、Txイコライザ314からRxイコライザ315に対してテスト信号が送信される。
(S333)Rxイコライザ315は、Rxパラメータを自動調整して受信波形を整形する。波形検出回路320は、整形された波形の検出結果を制御回路321に通知する。制御回路321は、波形の検出結果を受信する。
(S334)制御回路321は、波形の検出結果が所定の基準を満たすかを判定する。基準を満たさない場合、処理をステップS335に進める。基準を満たした場合、この時点でTxイコライザ314およびRxイコライザ315にそれぞれ設定されているTxパラメータ群およびRxパラメータ群が、ネゴシエーションによる最適値として決定される。そして、処理を終了する。
(S335)制御回路321は、波形の検出結果と基準との比較に基づいて、Txイコライザ314のTxパラメータ群の設定値を変更する。
図28は、異常箇所を特定する処理の例(その1)を示すフローチャートである。以下、図28に示す処理をステップ番号に沿って説明する。
(S341)エラー処理部350は、通信異常が発生していることを検知する。また、エラー処理部350は、どの物理リンクで通信異常が発生したかも検知する。
(S342)エラー処理部350は、通信異常が発生している物理リンク以外の物理リンクによってワイドポートを構成し、当該ワイドポートで運用を継続させる。例えば、物理リンク32aに通信異常が発生している場合、エラー処理部350は、物理リンク32b〜32dで運用を継続させる。以下、物理リンク32aに通信異常が発生したものとして説明する。
(S343)エラー処理部350は、管理端末130にワーニングを通知する。これにより、管理者は、通信異常が発生していることを認識できる。また、エラー処理部350は、どの物理リンクに通信異常が発生しているかを管理端末130に通知してもよい。
(S344)エラー処理部350は、通信異常が発生した物理リンク32aに接続された送受信部310a,310eに、ループバック状態でネゴシエーションを実行するように指示する。なお、送受信部310eに対するネゴシエーションの実行指示は、例えば、物理リンク32b〜32dによるワイドポートを介して、DE210のCPU213に送信される。CPU213は、受信した実行指示に応じて、送受信部310eにネゴシエーションの実行を指示する。
送受信部310aは、信号線323a,323bに信号が流れるループバック状態にし、送受信部310a内のTxイコライザ314とRxイコライザ315との間でネゴシエーションを実行する。これにより、送受信部310aについてのTxパラメータ群とRxパラメータ群とが決定される。送受信部310aは、決定されたTxパラメータ群とRxパラメータ群をエラー処理部350に送信する。
送受信部310eは、信号線323a,323bに信号が流れるループバック状態にし、送受信部310e内のTxイコライザ314とRxイコライザ315との間でネゴシエーションを実行する。これにより、送受信部310eについてのTxパラメータ群とRxパラメータ群とが決定される。送受信部310eは、Txパラメータ群とRxパラメータ群をCPU213に送信し、CPU213は、受信したTxパラメータ群とRxパラメータ群をCM300aのエラー処理部350に送信する。
(S345)エラー処理部350は、送受信部310aで決定されたTxパラメータ群とRxパラメータ群を受信する。また、エラー処理部350は、送受信部310eで決定されたTxパラメータ群とRxパラメータ群を受信する。そして、処理をステップS351に進める。
図29は、異常箇所を特定する処理の例(その2)を示すフローチャートである。以下、図29に示す処理をステップ番号に沿って説明する。
(S351)エラー処理部350は、Tx許容範囲テーブル334を参照し、CM300a側の送受信部310aが決定したTxパラメータ群がステップS303で特定したTx許容範囲に収まるか否かを判定する。Txパラメータ群がTx許容範囲に収まらない場合、処理をステップS353に進める。パラメータ群が許容範囲に収まる場合、処理をステップS352に進める。
(S352)エラー処理部350は、Rx許容範囲テーブルを参照し、CM300a側の送受信部310aのRxイコライザ315に設定されているRxパラメータ群がステップS303で特定したRx許容範囲に収まるか否かを判定する。Rxパラメータ群がRx許容範囲に収まらない場合、処理をステップS353に進める。Rxパラメータ群がRx許容範囲に収まる場合、処理をステップS354に進める。
(S353)エラー処理部350は、送受信部310aを異常箇所と判断する。そして、処理をステップS359に進める。
(S354)エラー処理部350は、Tx許容範囲テーブル334を参照し、DE210側の送受信部310eが決定したTxパラメータ群がステップS312で特定したTx許容範囲に収まるか否かを判定する。Txパラメータ群がTx許容範囲に収まらない場合、処理をステップS356に進める。Txパラメータ群がTx許容範囲に収まる場合、処理をステップS355に進める。
(S355)エラー処理部350は、Rx許容範囲テーブルを参照し、DE210側の送受信部310eのRxイコライザ315に設定されているRxパラメータ群がステップS312で特定したRx許容範囲に収まるか否かを判定する。Rxパラメータ群がRx許容範囲に収まらない場合、処理をステップS356に進める。Rxパラメータ群がRx許容範囲に収まる場合、処理をステップS357に進める。
(S356)エラー処理部350は、送受信部310eを異常箇所と判断する。そして、処理をステップS359に進める。
(S357)エラー処理部350は、ステップS357を実行した回数が所定回数に達したか否かを判定する。所定回数に達した場合、処理をステップS358に進める。所定回数に達していない場合、エラー処理部350は、当該回数をインクリメントする。そして、処理をステップS344に進める。
(S358)エラー処理部350は、送受信部310aと送受信部310eとの間の伝送路を異常箇所と判断する。
(S359)エラー処理部350は、異常箇所(送受信部310a,310e、伝送路のいずれか)を示す情報を管理端末130に表示させる。そして、処理を終了する。
以上の処理により、エラー処理部350は、通信異常を起こした異常箇所を特定できる。特定された異常箇所の表示などにより、異常箇所を管理者が認識することで、管理者は、交換すべき部品を特定でき、その部品を短時間で交換することができる。従って、通信異常の発生からの修復にかかる作業時間を短縮することができる。
また、通信異常が発生した物理リンクについてループバック状態でネゴシエーションが行われる際には、テスト信号の受信波形の検出結果があらかじめ決められた期待値と比較されることで、設定すべきTxパラメータが決定される。しかし、SASコントローラのベンダの違いや、温度等のSASコントローラの設置環境の違いにより、固定的な期待値を基に決定されたTxパラメータは必ずしも通信品質を最良にする値になるとは限らない。
これに対し、本実施の形態においてループバックテストの際に判定の基準となるTx許容範囲は、通信の開始前のループバックトレーニングによって全物理リンクについて決定されたTxパラメータの設定値のすべてが含まれている一定幅の範囲として特定される。このようなTx許容範囲は、SASコントローラのベンダの違いや、温度等のSASコントローラの設置環境の違いに応じて、最適な位置になるように変動する。
そのため、ループバックテストにおいてネゴシエーションにより決定されたTxパラメータが、上記のようなTx許容範囲に含まれるかが判定されることで、ベンダや環境の違いに関係なく、通信異常が発生した物理リンクに対応する送受信部が異常であるかを正確に判定できるようになる。Txパラメータだけでなく、Rxパラメータについても同様の効果が生じる。従って、異常発生箇所を正確に特定することができる。
なお、送受信部310aまたは送受信部310eが故障していて、ループバック状態でネゴシエーションを実行できない場合には、エラー処理部350は、Txパラメータ群またはRxパラメータ群を受信できない。エラー処理部350は、Txパラメータ群またはRxパラメータ群を受信できなかった送受信部を異常箇所と判断してもよい。
また、以上の第4の実施の形態では、SASエクスパンダ306aとSASエクスパンダ211aとの間の通信での異常箇所の特定機能に関して説明したが、次のような組み合わせの通信についても上記と同様の異常箇所の特定機能を適用可能である。例えば、SASエクスパンダ306bとSASエクスパンダ211b、IOC305aとSASエクスパンダ306b、IOC305bとSASエクスパンダ306aに適用可能である。さらに、PCIeスイッチ303aとPCIeスイッチ303bとの間でも適用可能である。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10にプログラムを実行させることで実現でき、第2、第3、第4の実施の形態の情報処理は、CM300a,300bにプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等を使用できる。磁気ディスクには、FD(Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disk)、CD−R(Recordable)/RW(Rewritable)、DVD(Digital Versatile Disc)およびDVD−R/RWが含まれる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体(例えば、記録媒体30a,30b)に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置(例えば、SSD308a,308b)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することも可能である。