以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理システムの構成例および処理例を示す図である。
図1に示す情報処理システムは、情報処理装置10と、情報処理装置10の通信相手となる相手装置20とを含む。情報処理装置10は、伝送路30を介して相手装置20と通信する。伝送路30では、例えば、SAS、PCI Expressなどによる高速シリアル伝送が行われる。
情報処理装置10は、インタフェース部11と制御部12を有する。
インタフェース部11は、例えば、相手装置20との間でデータを送受信する通信インタフェース回路である。インタフェース部11は、信号出力部11aと波形整形部11bを有する。
信号出力部11aは、相手装置20に対して伝送路30を介して送信する送信信号を出力する。信号出力部11aから出力された送信信号は、波形整形部11bを介して伝送路30に送信される。波形整形部11bは、信号出力部11aから伝送路30に出力される送信信号の波形を整形する。
このインタフェース部11に対しては、制御パラメータP1,P2を外部から設定可能になっている。
制御パラメータP1は、信号出力部11aから出力される送信信号の生成に関するパラメータである。制御パラメータP1の値を調整することで、生成される送信信号に変化を与えることができる。例えば、制御パラメータP1の値を調整することで、生成される送信信号の特性をマージンに対して厳しい方向や緩い方向に変化させることができる。制御パラメータP1としては、例えば、送信信号を生成するためのクロックの周波数を調整するためのパラメータを用いることができる。あるいは、制御パラメータP1としては、信号出力部11aに供給される電源電圧を調整するためのパラメータを用いることができる。
制御パラメータP2は、波形整形部11bに対して設定されるパラメータである。制御パラメータP2の値により、波形整形部11bによる波形生成動作が制御される。
制御部12は、例えば、プロセッサとして実現される。この場合、制御部12の処理は、プロセッサが所定のプログラムを実行することで実現される。
制御部12は、制御パラメータP1の値を変化させながら、波形整形部11bに対する制御パラメータP2の値として、伝送路30を介した通信品質が所定の品質条件を満たすような第1の値を探索する(ステップS1)。例えば、制御部12は、制御パラメータP1の値を段階的に変化させ、その段階ごとに、通信品質が品質条件を満たすような制御パラメータP1の適正値を探索する。そして、段階ごとに探索された適正値に基づいて、第1の値を決定する。
そして、制御部12は、制御パラメータP1の値として所定の第2の値を設定するとともに、制御パラメータP2の値として上記のように探索された第1の値を設定した状態で、インタフェース部11に伝送路30を介した通信を開始させる(ステップS2)。これにより、制御パラメータP1の値として第2の値が設定され、制御パラメータP2の値として第1の値が設定された状態で、情報処理装置10から相手装置20に対して伝送路30を介してデータが送信される。なお、第2の値としては、例えば、上記探索処理において制御パラメータP1の値を変化させる範囲の中央値を用いることができる。
以上の制御部12の処理では、第1の値の探索処理により、伝送路30の長さや周囲環境、相手装置20の種別などの違いに起因する伝送路30の信号伝送特性の変動に対して、安定的な通信が可能になるような制御パラメータP2の値を、探索できる可能性が高まる。すなわち、制御パラメータP1の値を変化させることで、送信信号に対し、信号伝送特性が変動した場合に発生する変化を擬似的に与えることができる。このため、制御パラメータP1の値を変化させながら探索された第1の値は、伝送路30を介して通信する際の制御パラメータP1の値として適正な値になる可能性が高くなる。したがって、このように探索された第1の値を用いて伝送路30を介した通信が開始されることで、安定的な通信が可能になり、その通信品質を向上させることができる。
〔第2の実施の形態〕
次に、図1の情報処理装置10の例としてストレージ制御装置を適用したストレージシステムについて説明する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、CM(Controller Module)100とドライブ部200を含む。また、CM100にはホスト装置300が接続されている。
CM100は、ホスト装置300からの要求に応じて、ドライブ部200に搭載されたドライブ210a,210b,210c,・・・に対するアクセスを制御するストレージ制御装置である。例えば、CM100は、ドライブ210a,210b,210c,・・・の少なくとも1つを用いて論理記憶領域を生成し、ホスト装置300から論理記憶領域へのアクセス要求を受け付ける。ドライブ210a,210b,210c,・・・は、ホスト装置300からのアクセス対象となる不揮発性の記憶装置であり、例えば、HDD(Hard Disk Drive)、あるいはSSD(Solid State Drive)である。
なお、CM100は、図1の情報処理装置10の一例であり、ドライブ210a,210b,210c,・・・は、図1の相手装置20の一例である。
ホスト装置300は、業務処理など、ドライブ210a,210b,210c,・・・の記憶領域を用いた所定の処理を実行するコンピュータ装置である。なお、CM100とホスト装置300との間は、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。
ここで、CM100とドライブ部200内のドライブ210a,210b,210c,・・・との間では、高速シリアル通信が行われる。本実施の形態では、例として、CM100とドライブ部200内のドライブ210a,210b,210c,・・・との間では、SAS規格にしたがって通信が行われるものとする。
次に、図2を用いて、CM100のハードウェア構成例について説明する。CM100は、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、入出力コントローラ103、SSD104、通信インタフェース(I/F)105、CA(Channel Adapter)106、SASエクスパンダ(EXP)107,108、クロック制御回路109および電圧制御回路110を備える。
CPU101は、CM100全体を統括的に制御する。CPU101は、1つまたは複数のプロセッサを備える。RAM201は、CM100の主記憶装置として使用され、CPU101に実行させるプログラムの少なくとも一部や、このプログラムによる処理に用いられる各種データを一時的に記憶する。
SSD104および通信インタフェース105は、入出力コントローラ103を介してCPU101に接続されている。入出力コントローラ103は、いわゆるサウスブリッジとして機能する回路であり、CPU101とSSD104および通信インタフェース105との間におけるデータの入出力を制御する。SSD104は、CM100の補助記憶装置として使用され、CPU101により実行されるプログラムや各種データを記憶する。なお、補助記憶装置としては、例えば、HDD等の他の種類の不揮発性記憶装置が使用されてもよい。通信インタフェース105は、外部の装置との間でデータを送受信する。例えば、通信インタフェース105は、CM100を管理するための管理端末との間でデータを送受信する。
SASエクスパンダ107は、CPU101とドライブ部200内のドライブ210a,210b,210c,・・・との間で送受信されるデータを中継する。SASエクスパンダ107とドライブ部200内のドライブ210a,210b,210c,・・・との間では、SAS規格にしたがって通信が行われる。
SASエクスパンダ108も同様に、CPU101とドライブ部200内のドライブ210a,210b,210c,・・・との間で送受信されるデータを中継する。SASエクスパンダ108とドライブ部200内のドライブ210a,210b,210c,・・・との間では、SAS規格にしたがって通信が行われる。
なお、図2の構成では、SASエクスパンダ107,108には、CPU101との間でSAS以外の所定の通信規格(例えば、PCIe)にしたがって通信するためのSASインタフェース回路も内蔵されているものとする。
クロック制御回路109および電圧制御回路110は、SASエクスパンダ107,108がSAS伝送路上に送信する送信信号を生成するための制御パラメータを、CPU101からの指示に基づいて設定可能な回路である。ここで言うSAS伝送路とは、SASエクスパンダ107,108のエクスパンダチップと、ドライブ部200内のドライブ210a,210b,210c,・・・が備えるSASコントローラチップとの間の伝送路である。
クロック制御回路109は、CPU101からの指示に基づいて、SASエクスパンダ107,108が送信信号を生成する際のクロックのタイミングを制御する。具体的には、クロック制御回路109は、SASエクスパンダ107,108に入力されるクロックの周波数を調整することで、クロックの立ち上がり、立ち下がりのタイミングを制御する。この制御により、クロックタイミングのマージン(例えば、セットアップタイム、ホールドタイムのマージン)が変化する。
クロック制御回路109は、SASエクスパンダ107からドライブ210a,210b,210c,・・・のそれぞれに対する伝送路ごとに、クロックタイミングを調整することができる。また、クロック制御回路109は、SASエクスパンダ108からドライブ210a,210b,210c,・・・のそれぞれに対する伝送路ごとに、クロックタイミングを調整することができる。
電圧制御回路110は、CPU101からの指示に基づいて、送信信号を生成するためにSASエクスパンダ107,108に供給される電源電圧を調整することで、送信信号の電圧レベルを制御する。具体的には、電圧制御回路110は、SASエクスパンダ107,108のTxドライバに供給される電源電圧を調整することで、差動信号の基準電圧レベルを制御する。この制御により、送信信号の電圧レベルのマージン(例えば、ハイレベルの電圧レンジの下限、ローレベルの電圧レンジの上限のマージン)が変化する。
電圧制御回路110は、SASエクスパンダ107からドライブ210a,210b,210c,・・・のそれぞれに対する伝送路ごとに、電源電圧を調整することができる。また、電圧制御回路110は、SASエクスパンダ108からドライブ210a,210b,210c,・・・のそれぞれに対する伝送路ごとに、電源電圧を調整することができる。
次に、SASエクスパンダ107,108とドライブ210a,210b,210c,・・・との間で、通常の通信の開始前に実行される、信号調整のためのチューニング処理について説明する。
図3は、SAS伝送路の送信側回路および受信側回路の構成例を示す図である。図3では例として、SASエクスパンダ107が備える送信側回路と、ドライブ210a内のSASコントローラチップが備える受信側回路の構成例を示している。なお、図3では、1つの物理リンク(ポート)における一方向の信号伝送に関する構成例を示している。
SASエクスパンダ107に搭載されたエクスパンダチップは、図3に示すような送信部120を備えている。送信部120は、Txドライバ121、Txイコライザ122、波形検出回路123および制御回路124を備えている。一方、ドライブ210aに搭載されたSASコントローラチップは、図3に示すような受信部220を備えている。受信部220は、Rxイコライザ221、Rxドライバ222、波形検出回路223および制御回路224を備えている。
Txドライバ121は、入力された送信データまたはテスト信号を、差動信号に変換して出力する。Txイコライザ122は、Txドライバ121から入力された差動信号の波形を整形して出力する。Txイコライザ122から出力された差動信号は、差動信号線ペア230を介して受信側のRxイコライザ221に送信される。
Txイコライザ122では、波形整形の例として、プリシュートおよびディエンファシスの調整が行われるものとする。プリシュートの調整は、送信信号がローレベルからハイレベルに遷移する直前の信号レベルを高くするものである。ディエンファシスの調整は、送信信号がローレベルからハイレベルに遷移した後の波形の平坦部を減衰させるものである。なお、Txイコライザ122に対しては、プリシュート調整のためのパラメータC1と、ディエンファシス調整のためのパラメータC3とが設定される。
波形検出回路123は、Txイコライザ122から出力された信号の波形を検出し、その波形の状態を示す情報を制御回路124に入力する。波形の状態を示す情報としては、例えば、アイパターンの開口状態を示す情報が用いられる。制御回路124は、送信部120における各種の処理を制御する。例えば、制御回路124は、チューニング用のテスト信号をTxドライバ121に出力させることや、パラメータC1,C3をTxイコライザ122に設定することができる。
なお、Txドライバ121に供給される電源電圧は、電圧制御回路110によって調整される。これにより、Txドライバ121から出力される差動信号の基準電圧レベルが変化し、その結果、差動信号のオフセット量が変化する。また、送信部120に入力されるクロックのタイミングは、クロック制御回路109によって調整される。これにより、Txドライバ121に入力される送信信号の立ち上がり、立ち下がりのタイミングが変化し、その結果、Txドライバ121から出力される差動信号の立ち上がり、立ち下がりのタイミングが調整される。
ここで、Txイコライザ122は、Txドライバ121から出力された信号の波形を整形するものである。これに対して、クロック制御回路109および電圧制御回路110は、Txドライバ121からTxイコライザ122に入力される信号の波形を変化させるものである。
Rxイコライザ221は、差動信号線ペア230を介して入力された差動信号の波形を整形し、Rxドライバ222に出力する。Rxイコライザ221では、例えば、FFE(Feed-Forward Equalization)やDFE(Decision Feedback Equalization)を用いた波形整形が行われる。Rxドライバ222は、Rxイコライザ221から出力された差動信号を、所定形式のシリアル信号に変換する。
波形検出回路223は、Rxイコライザ221から出力された信号の波形を検出し、その波形の状態を示す情報を制御回路224に入力する。波形の状態を示す情報としては、例えば、アイパターンの開口状態を示す情報が用いられる。制御回路224は、受信部220における各種の処理を制御する。例えば、制御回路224は、検出された波形の状態に応じてRxイコライザ221の調整を行う。
上記の送信部120と受信部220との間では、信号調整のためにチューニング処理が自動的に行われる(オートチューニング)。オートチューニングは、例えば、CM100の起動時や、ドライブ部200に対するドライブ210aの装着時に、SASエクスパンダ107がドライブ210aの接続を検出した場合に、次のような手順で実行される。
まず、パラメータC1,C3の初期設定値がCPU101から制御回路124に指定される。すると、制御回路124は、指定されたパラメータC1,C3をTxイコライザ122に設定して、Txドライバ121にテスト信号を送信させる。
受信部220では、テスト信号が受信され、Rxイコライザ221の出力信号の波形が波形検出回路223によって検出される。制御回路224は、波形の状態に応じて、波形が適切な形状になるようにRxイコライザ221を調整する。これにより、受信部220では波形の自動調整が行われる。
一方、送信部120では、受信部220での波形の自動調整が行われた状態で、Txイコライザ122の出力信号の波形が波形検出回路123によって検出される。制御回路124は、波形の状態に応じて、パラメータC1,C3を変化させ、波形が適切な形状になるときのパラメータC1,C3を探索する。
このようにしてパラメータC1,C3の最適値が探索され、探索が完了すると、オートチューニングは終了となる。その後、探索されたパラメータC1,C3の最適値がTxイコライザ122に設定された状態で、送信部120と受信部220との通信が開始される。
なお、オートチューニングは、送信部120と受信部220とのネゴシエーションによって行われてもよい。例えば、受信部220の制御回路224は、自動調整により検出波形が基準を満たさなかった場合、その波形検出結果に応じて、Txイコライザ122のパラメータの増加または減少を送信部120に要求する。この要求は、差動信号線ペア230と対になっている、ドライブ210aのSASコントローラチップからSASエクスパンダ107のエクスパンダチップへの送信用の差動信号線ペア(図示せず)を通じて行われる。送信部120の制御回路124は、この要求に応じてTxイコライザ122に対するパラメータの設定値を変更する。このような処理が、受信部220における検出波形が基準を満たすまで繰り返されることで、オートチューニングが行われる。
ところで、ドライブ部200は、図示しない多数のスロットを備え、各スロットに対してドライブが装着される。多数のスロットが存在するため、SASエクスパンダ107,108と各スロット内のドライブとの間の伝送路の状況は、伝送路ごとに異なる。例えば、伝送路ごとに長さが異なり、伝送品質に影響を与えるような周囲のデバイスとの位置関係も伝送路ごとに異なる。このため、伝送路ごとに信号伝送特性が異なる場合が多く、その結果として、パラメータC1,C3の最適値が伝送路ごとに異なる場合も多い。
上記のように、オートチューニングの開始時には、パラメータC1,C3の初期設定値としてあらかじめ決められた値がTxイコライザ122に設定される。すべての伝送路について同じ初期設定値が設定された場合、伝送路ごとの信号伝送特性の違いから、オートチューニングが完了するまでの時間にも違いが生じる可能性がある。例えば、スロットに搭載されたドライブの中にオートチューニングが完了するまでの時間が長いドライブがある場合、CM100とドライブ部200に搭載されたすべてのドライブとの間で通信が可能になるまでの時間も長くなってしまう。
そこで、伝送路の信号伝送特性に応じたパラメータC1,C3の初期設定値を、伝送路ごとにあらかじめ決めておき、各伝送路のオートチューニング時に伝送路に対応する初期設定値を設定する方法が考えられる。この方法によれば、オートチューニングの完了までにかかる最大時間を短縮できる可能性が高くなり、その結果、ドライブ部200に搭載されたすべてのドライブと通信が可能になるまでの時間を短縮できる可能性が高くなる。
しかし、伝送路の信号伝送特性には、伝送路の状況だけでなく、伝送路に接続された送受信デバイスの特性も影響を与える。ドライブ部200のスロットでは、例えば、故障が原因となって、あるいは性能向上を目的として、ドライブが交換される場合がある。このため、各スロットには異なる機種のドライブが装着される場合も多い。したがって、上記のように伝送路ごとにパラメータC1,C3の初期設定値を決定するだけでは、オートチューニングにかかる時間を短縮できない可能性がある。
さらに、SASのような高速シリアル伝送では、正常な通信が可能になるような伝送品質の許容範囲(例えば、アイパターンの開口に関する許容範囲)がきびしい。このため、上記のように伝送路ごとに信号伝送特性が異なる条件下では、オートチューニングによって決定されたパラメータC1,C3の設定値が必ずしも最適値にならない場合がある。例えば、オートチューニングによってパラメータC1,C3の最適値がある値に決定されたとしても、本当の最適値は別の値である可能性がある。
また、同じスロットにおいて同一機種のドライブが交換されたとしても、交換前のドライブと交換後のドライブとの間で、SASコントローラチップの製造バラツキが存在する場合もある。その場合、交換前と交換後では信号伝送特性が変わってしまうので、交換前のドライブについて決定された初期設定値が、交換後のドライブについても最適な初期設定値になるとは限らない。
そこで、本実施の形態のCM100は、送信信号を生成するための制御パラメータを変化させるという、上記のオートチューニングで用いられていなかった伝送品質評価のための別の条件を与えて、伝送路ごとのパラメータC1,C3の最適値を探索する。具体的には、クロックタイミングの変化および電源電圧の変化という別の条件が与えられる。これにより、伝送路ごとにパラメータC1,C3の真の最適値を決定できる可能性を高め、各伝送路上での安定した通信を可能にする。また、CM100は、このようにして求められたパラメータC1,C3を初期設定値として用い、オートチューニングを実行させる。これにより、オートチューニングのかかる時間を短縮できる可能性を高め、なおかつ、パラメータC1,C3の真の最適値を決定できる可能性を高める。
図4は、CMが備える処理機能の構成例を示すブロック図である。CM100は、記憶部130、ドライブ管理部141および初期値探索部142を備える。
記憶部130は、例えば、SSD104などのCM100が備える不揮発性記憶装置によって実現される。記憶部130には、パラメータテーブル131と優先度テーブル132とが記憶される。
パラメータテーブル131には、スロットごと、およびドライブの機種ごとに、オートチューニングの際のパラメータC1,C3の初期設定値が登録される。優先度テーブル132は、パラメータテーブル131のレコードごと(すなわち、スロットとドライブの機種との組合せごと)に生成される。優先度テーブル132には、クロックタイミングおよび電源電圧の制御条件ごとに、リンクアップにかかった時間やパラメータ使用の優先度が登録される。
ドライブ管理部141および初期値探索部142の処理は、例えば、所定のプログラムがCPU101に実行されることで実現される。なお、これらの処理の少なくとも一部は、例えば、CM100が備えるCPU101以外の制御回路によって実行されてもよい。
ドライブ管理部141は、SASエクスパンダ107,108のエクスパンダチップと、ドライブ部200内のドライブのSASコントローラチップとの間の伝送路についてのチューニング処理を制御する。チューニング処理は、初期設定値を探索するフェーズと、探索された初期設定値を用いてエクスパンダチップとSASコントローラとの間でオートチューニングを実行させるフェーズとを含む。
初期値探索部142は、オートチューニングで用いられる初期設定値を探索する処理を実行する。この処理では、初期値探索部142は、クロック制御回路109および電圧制御回路110を制御してクロックタイミングおよび電源電圧を変化させながら、伝送路にテストデータを流し、正常に通信できるようなパラメータC1,C3を求める。求められたパラメータC1,C3が、オートチューニング用の初期設定値となる。
図5は、パラメータテーブルの構成例を示す図である。図5に示すパラメータテーブル131は、ドライブ名、チューニングフラグ、スロット番号、C1初期設定値、C3初期設定値、C1上限値、C3上限値、C1下限値、C3下限値の各項目を有する。また、C1初期設定値およびC3初期設定値の各項目は、クロックタイミングおよび電源電圧の制御条件ごとに設けられている。
ドライブ名は、ドライブ部200のスロットに装着されるドライブの機種を識別する情報である。ドライブ名の項目には、それまでにドライブ部200に装着されていない新たな機種のドライブが、いずれかのスロットに装着されたときに、その機種を示す情報が追加される。
チューニングフラグは、ドライブ名とスロット番号との組合せによって識別されるドライブについて、チューニング処理を実行済みであるか否かを示すフラグ情報である。ここでは、チューニングフラグは、チューニング処理が未実行の場合に「0」に設定され、実行済みの場合に「1」に設定されるものとする。
スロット番号は、ドライブ部200に設けられている各スロットを識別する情報である。ドライブ名とスロット番号との組合せによって、ドライブ部200に搭載されたドライブが識別される。
C1初期設定値は、チューニング処理によって探索されたパラメータC1の初期設定値を示す。C3初期設定値は、チューニング処理によって探索されたパラメータC3の初期設定値を示す。C1初期設定値およびC3初期設定値は、ドライブ名とスロット番号との組合せによって識別されるドライブのそれぞれに対し、クロックタイミングおよび電源電圧の制御条件ごとに登録される。
チューニング処理のうち、パラメータC1,C3の初期設定値を探索するフェーズでは、クロックタイミングおよび電源電圧の制御条件を変化させながら、その都度初期設定値の探索処理が実行される。以下、クロックタイミングは、制御値CLKによって調整され、電源電圧は、制御値VOLによって調整されるものとする。
クロックタイミングの制御値CLKは、「Normal」「High」「Low」の3段階の値をとるものとする。「Normal」の場合、クロック周波数が通常値に設定され、クロックタイミングは通常のタイミングに設定される。「High」の場合、クロック周波数が通常値より一定量だけ高く設定され、クロックタイミングは通常より早くなる。「Low」の場合、クロック周波数が通常値より一定量だけ低く設定され、クロックタイミングは通常より遅くなる。
電源電圧の制御値VOLも、「Normal」「High」「Low」の3段階の値をとるものとする。「Normal」の場合、電源電圧は通常値に設定される。「High」の場合、電源電圧は一定量だけ高く設定される。「Low」の場合、電源電圧は通常値より一定量だけ低く設定される。
後述するように、本実施の形態では例として、探索処理では制御値CLK、制御値VOLのいずれも「High」と「Low」の2種類が用いられる。すなわち、「CLK=High,VOL=High」「CLK=High,VOL=Low」「CLK=Low,VOL=High」「CLK=Low,VOL=Low」という4通りの制御条件をそれぞれ用いて4回の探索処理が実行される。したがって、パラメータテーブル131には、これら4通りの制御条件をそれぞれ用いて探索されたC1初期設定値およびC3初期設定値が登録される。そして、これらのC1初期設定値およびC3初期設定値は、対応するドライブのオートチューニングの際に、後述する優先度にしたがってTxイコライザ122に対する初期設定値として利用される。
C1上限値は、C1初期設定値の探索、およびオートチューニングの際に設定可能なパラメータC1の上限値を示す。C3上限値は、C3初期設定値の探索、およびオートチューニングの際に設定可能なパラメータC3の上限値を示す。C1下限値は、C1初期設定値の探索、およびオートチューニングの際に設定可能なパラメータC1の下限値を示す。C3下限値は、C3初期設定値の探索、およびオートチューニングの際に設定可能なパラメータC3の下限値を示す。なお、本実施の形態では、C1上限値、C3上限値、C1下限値、C3下限値は、ドライブの機種(すなわち、ドライブ名)ごとにあらかじめ決められているものとする。
図6は、優先度テーブルの構成例を示す図である。図6に示す優先度テーブル132は、パラメータテーブル131のレコードごと(すなわち、ドライブ名とスロット番号との組合せごと)に生成される。優先度テーブル132は、優先度、CLK、VOL、リンクアップ時間、ポインタの各項目を有する。
優先度テーブル132の各レコードは、ある伝送路についての初期設定値の探索フェーズにおいて、クロックタイミングおよび電源電圧の制御条件ごとに実行された初期設定値の探索処理に対応する。優先度は、対応する探索処理で探索された初期設定値をオートチューニングで利用する際の利用順を示す。優先度が高いほど利用順は先になる。
CLKは、対応する探索処理で設定されたクロックタイミングの制御値を示す。探索処理では「CLK=High」と「CLK=Low」とが用いられるので、CLKの項目には「High」と「Low」のいずれかが登録される。VOLは、対応する探索処理で設定された電源電圧の制御値を示す。探索処理では「VOL=High」と「VOL=Low」とが用いられるので、VOLの項目には「High」と「Low」のいずれかが登録される。
初期設定値の探索フェーズでは、クロックタイミングの制御値CLKと電源電圧の制御値VOLのすべての組合せについて、パラメータC1,C3の初期設定値が探索される。各組合せを用いた探索処理は、制御値CLKと制御値VOLの組合せによって識別される。
リンクアップ時間は、探索処理においてその実行開始からリンクアップに成功するまでにかかった時間を示す。ポインタは、パラメータテーブル131のレコードを指し示す。ポインタにより、優先度テーブル132と、ドライブ名とスロット番号との組合せに対応するチューニング処理で探索された初期設定値とが関連付けられる。
次に、CM100による伝送路のチューニング処理について、フローチャートを用いて説明する。
図7、図8は、チューニング処理全体の手順を示すフローチャートの例である。図7、図8の処理は、1つのSASエクスパンダと1つのドライブとの組合せごと(すなわち、SAS伝送路ごと)に実行される。以下の説明では、例として、図3に示したSASエクスパンダ107の送信部120とドライブ210aの受信部220との間の伝送路を処理対象とする。
[ステップS11]SASエクスパンダ107は、あるスロットに装着されたドライブ210aを認識し、認識されたドライブ210aのドライブ名をドライブ管理部141に通知する。なお、ドライブ210aの認識は、例えば、CM100の電源が投入されたとき、または、スロットにドライブ210aが新たに装着されたときに行われる。
[ステップS12]ドライブ管理部141は、パラメータテーブル131を参照し、通知されたドライブ名が登録されているかを判定する。ドライブ管理部141は、ドライブ名が登録されている場合、ステップS14の処理を実行し、ドライブ名が登録されていない場合、ステップS13の処理を実行する。
[ステップS13]ドライブ管理部141は、通知されたドライブ名をパラメータテーブル131に新規に登録する。このとき、パラメータテーブル131には、ドライブ名に対応付けて各スロットのスロット番号に対応するレコードが登録される。また、これらのレコードに対して、通知されたドライブ名についてあらかじめ決められたC1上限値、C3上限値、C1下限値、C3下限値が登録される。
[ステップS14]ドライブ管理部141は、パラメータテーブル131において、通知されたドライブ名と、ドライブ210aが認識されたスロットのスロット番号との組合せについて、チューニング済みかを判定する。その組合せに対応付けられたチューニングフラグが「1」の場合、チューニング済みと判定される。なお、チューニング済みの場合、この組合せに対応する優先度テーブル132が記憶部130に記憶されている。ドライブ管理部141は、チューニング済みの場合、図8のステップS21の処理を実行し、チューニング済みでない場合、ステップS15の処理を実行する。
[ステップS15]初期値探索部142により、パラメータC1,C3についての初期設定値探索処理が実行される。この処理により、クロックタイミングの制御値CLKと電源電圧の制御値VOLとの4通りの組合せによる4つの制御条件のそれぞれについて、パラメータC1,C3の初期設定値が探索され、パラメータテーブル131に登録される。また、対応する優先度テーブル132が生成され、その優先度テーブル132に4つの制御条件に対する優先度が設定される。この後、図8のステップS21の処理が実行される。
以下、図8を用いて説明を続ける。
[ステップS21]ドライブ管理部141は、設定された優先度にしたがい、パラメータC1,C3の初期設定値をパラメータテーブル131から取得する。ここでは、ステップS21が実行されるたびに、優先度の高い順に(すなわち、優先度テーブル132の先頭側から)初期設定値が選択される。
[ステップS22]ドライブ管理部141は、SASエクスパンダ107における該当する伝送路に対応する送信部120に、ステップS21で取得されたパラメータC1,C3の初期設定値を設定する。初期設定値は、例えば、送信部120が備える所定のレジスタに設定される。
[ステップS23]ドライブ管理部141は、SASエクスパンダ107に該当する伝送路についてのオートチューニングの実行を指示する。この指示に応じて、SASエクスパンダ107の送信部120では、ステップS22で設定されたパラメータC1,C3を初期値として用いたオートチューニングが実行される。
[ステップS24]ドライブ管理部141は、ステップS23のオートチューニングにより該当する伝送路がリンクアップしたかを判定する。ドライブ管理部141は、リンクアップした場合、ステップS25の処理を実行し、リンクアップしなかった場合(すなわち、パラメータC1,C3の最適値を決定できなかった場合)、ステップS26の処理を実行する。
[ステップS25]ドライブ管理部141は、認識されたドライブ210aをシステムに組み込む。これにより、CM100からドライブ210aに対するデータの読み書きが可能となる。このとき、SASエクスパンダ107における該当する伝送路に対応する送信部120には、ステップS23でのオートチューニングによって決定されたパラメータC1,C3の最適値が設定され、この状態で伝送路を介した通信が開始される。
[ステップS26]ドライブ管理部141は、オートチューニングのリトライ回数が上限値以内かを判定する。ドライブ管理部141は、リトライ回数が上限値以内の場合、ステップS23に処理を進め、オートチューニングを再度実行させる。一方、ドライブ管理部141は、リトライ回数が上限値を超えている場合、ステップS27の処理を実行する。
[ステップS27]ドライブ管理部141は、ステップS15で制御条件ごとに探索されたパラメータC1,C3の初期設定値のうち、送信部120に未設定の初期設定値があるかを判定する。ドライブ管理部141は、未設定の初期設定値がある場合、処理をステップS21に進める。この場合、リトライ回数が「0」にリセットされるとともに、次に優先度の高い初期設定値が選択された処理が続行される。一方、ドライブ管理部141は、すべての初期設定値が設定済みの場合、ステップS28の処理を実行する。
[ステップS28]このケースは、通信可能なパラメータC1,C3を決定できなかったケースである。この場合、ドライブ管理部141は、認識されたドライブ210aを縮退させ、CM100から使用不可能な状態にする。
図9は、初期設定値探索処理の手順を示すフローチャートの例である。この図9の処理は、図7のステップS15の処理に対応する。
[ステップS31]初期値探索部142は、変数Nを「0」に初期化する。この変数Nは、制御条件を識別するために用いられる。
[ステップS32]初期値探索部142は、変数Nが「4」であるかを判定する。初期値探索部142は、N=4でない場合、ステップS33の処理を実行し、N=4の場合、ステップS40の処理を実行する。
[ステップS33]初期値探索部142は、変数Nの値を判定する。初期値探索部142は、N=0の場合、ステップS34の処理を実行し、N=1の場合、ステップS35の処理を実行し、N=2の場合、ステップS36の処理を実行し、N=3の場合、ステップS37の処理を実行する。
[ステップS34]初期値探索部142は、クロック制御回路109に対して、クロックタイミングの制御値CLKを「High」にするように指示し、電圧制御回路110に対して、電源電圧の制御値VOLを「High」にするように指示する。これにより、SASエクスパンダ107における該当する伝送路に対応する送信部120に対して、CLK=High、VOL=Highが設定される。
[ステップS35]初期値探索部142は、クロック制御回路109に対して、クロックタイミングの制御値CLKを「High」にするように指示し、電圧制御回路110に対して、電源電圧の制御値VOLを「Low」にするように指示する。これにより、SASエクスパンダ107における該当する伝送路に対応する送信部120に対して、CLK=High、VOL=Lowが設定される。
[ステップS36]初期値探索部142は、クロック制御回路109に対して、クロックタイミングの制御値CLKを「Low」にするように指示し、電圧制御回路110に対して、電源電圧の制御値VOLを「High」にするように指示する。これにより、SASエクスパンダ107における該当する伝送路に対応する送信部120に対して、CLK=Low、VOL=Highが設定される。
[ステップS37]初期値探索部142は、クロック制御回路109に対して、クロックタイミングの制御値CLKを「Low」にするように指示し、電圧制御回路110に対して、電源電圧の制御値VOLを「Low」にするように指示する。これにより、SASエクスパンダ107における該当する伝送路に対応する送信部120に対して、CLK=Low、VOL=Lowが設定される。
[ステップS38]初期値探索部142は、パラメータC1,C3を変化させながらそれらの最適値を探索するパラメータ探索処理を実行する。パラメータC1,C3の最適値が決定されると、それらの値がパラメータテーブル131の該当制御条件に対応するC1初期設定値、C3初期設定値としてそれぞれ登録される。
[ステップS39]初期値探索部142は、変数Nを「1」だけ増加させて、処理をステップS32に進める。
以上の処理により、ステップS34〜S37のようにクロックタイミングおよび電源電圧についての異なる制御条件が与えられた状態で、その都度ステップS38のパラメータ探索処理が実行される。ステップS32で「Yes」と判定されたとき、パラメータテーブル131における該当レコードには制御条件ごとにC1初期設定値とC3初期設定値が登録された状態となる。また、優先度テーブル132には、N=0,1,2,3の順にリンクアップ時間およびポインタが登録された状態となる。
[ステップS40]初期値探索部142は、優先度テーブル132のレコードを、リンクアップ時間が短い順にソートする。これにより、各制御条件下でのパラメータC1,C3の初期設定値に対して、リンクアップ時間が短い順に高い優先度が付与される。
[ステップS41]初期値探索部142は、クロック制御回路109に対して、クロックタイミングの制御値CLKを「Normal」にするように指示し、電圧制御回路110に対して、電源電圧の制御値VOLを「Normal」にするように指示する。これにより、SASエクスパンダ107における該当する伝送路に対応する送信部120に対して、CLK=Normal、VOL=Normalが設定され、その状態で図8の処理が実行されるようになる。
[ステップS42]初期値探索部142は、パラメータテーブル131における該当レコードのチューニングフラグを「1」に更新する。
図10〜図13は、パラメータ探索処理の手順を示すフローチャートの例である。図10〜図13の処理は、図9のステップS38の処理に対応する。
[ステップS51]ここでは、SASエクスパンダ107における該当する伝送路に対応する送信部120に設定されるパラメータC1,C3の値を、それぞれI,Jとする。初期値探索部142は、送信部120のTxイコライザ122に対して、設定値Iとして、パラメータC1についてあらかじめ決められた規定初期値を設定し、設定値Jとして、パラメータC3についてあらかじめ決められた規定初期値を設定する。
また、初期値探索部142は、現在の設定値I,Jを、パラメータテーブル131における該当レコードにそれぞれC1初期設定値、C3初期設定値として登録する。このとき、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値、C3初期設定値として、それぞれ設定値I,Jが登録される。
さらに、初期値探索部142は、変数Tを「0」に初期化する。この変数Tは、パラメータ探索処理に含まれる処理フェーズを識別するために用いられる。T=0では、パラメータC1の値を増加させながらパラメータC1の最適値が探索される。T=1では、パラメータC3の値を増加させながらパラメータC3の最適値が探索される。T=2では、パラメータC1の値を減少させながらパラメータC1の最適値が探索される。T=3では、パラメータC3の値を減少させながらパラメータC3の最適値が探索される。T=4になると、パラメータ探索処理が終了する。
[ステップS52]初期値探索部142は、変数Tの値を判定する。初期値探索部142は、T=0の場合、ステップS53の処理を実行し、T=1の場合、図11のステップS71の処理を実行し、T=2の場合、図12のステップS81の処理を実行し、T=3の場合、図13のステップS91の処理を実行する。また、T=4の場合、パラメータ探索処理は終了する。T=4となった時点では、パラメータテーブル131における該当レコードには、1つの制御条件に対応するパラメータC1,C3の初期設定値(C1初期設定値、C3初期設定値)が登録された状態となる。
[ステップS53]初期値探索部142は、設定値Iが、認識されたドライブ210aに対応するC1上限値以下かを判定する。C1上限値は、パラメータテーブル131における該当レコードから取得される。初期値探索部142は、設定値IがC1上限値以下の場合、ステップS54の処理を実行し、設定値IがC1上限値を超えた場合、ステップS59の処理を実行する。
[ステップS54]初期値探索部142は、SASエクスパンダ107における該当する伝送路に対応する送信部120から、ドライブ210aに対してテストデータを連続的に送信させる(IOランニング、IO:Input Output)。初期値探索部142は、IOランニングの実行中におけるBER(Bit Error Rate)を確認する。
[ステップS55]初期値探索部142は、BERに基づき、IOランニングの実行時にSASエラーが発生したかを判定する。SASエラーの発生は、BERが所定の閾値を超えた場合に判定される。ここで、SAS規格(12G)では、BERを10-12以下とするように規定されているが、本実施の形態では、例えば、パラメータC1,C3の最適値を正確に計測するために、それより厳しい閾値(例えば、10-15)が用いられる。初期値探索部142は、SASエラーが発生した場合、ステップS56の処理を実行し、SASエラーが発生しなかった場合、ステップS60の処理を実行する。
[ステップS56]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC1の設定値Iを、1段階高い値に設定する。
[ステップS57]初期値探索部142は、現在の設定値Iを、パラメータテーブル131における該当レコードにC1初期設定値として登録する。このとき、設定値Iは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値として上書きして登録される。
[ステップS58]初期値探索部142は、ステップS56でTxイコライザ122に設定された設定値Iを有効化するために、SASエクスパンダ107をリセットする。この後、処理はステップS53に進められる。
[ステップS59]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC1の設定値Iを、規定初期値に初期化する。また、初期値探索部142は、初期化された設定値Iを、パラメータテーブル131における該当レコードにC1初期設定値として登録する。このとき、設定値Iは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値として上書きして登録される。さらに、初期値探索部142は、初期化された設定値Iを有効化するために、SASエクスパンダ107をリセットする。この後、処理はステップS60に進められる。
[ステップS60]初期値探索部142は、変数Tを「1」だけ増加させて、処理をステップS52に進める。
以上のステップS53〜S60の処理(T=0の処理フェーズ)では、パラメータC3が規定初期値に固定された状態で、パラメータC1を規定初期値から徐々に高めながら、SASエラーが発生しないパラメータC1の値が探索される。ステップS55でSASエラーが発生せず、必要な通信品質が得られた場合に、その時点でのパラメータC1の設定値Iが、暫定的なC1初期設定値としてパラメータテーブル131に登録される。一方、必要な通信品質が得られないままステップS53で設定値IがC1上限値を超えた場合は、設定値Iが規定初期値に戻され、この値が暫定的なC1初期設定値としてパラメータテーブル131に登録される。
以下、図11を用いて説明を続ける。図11の処理は、パラメータC1の設定値Iとして、図10のステップS53〜S60の処理によって暫定的に決定されたC1初期設定値が設定された状態で実行される。
[ステップS71]初期値探索部142は、設定値Jが、認識されたドライブ210aに対応するC3上限値以下かを判定する。C3上限値は、パラメータテーブル131における該当レコードから取得される。初期値探索部142は、設定値JがC3上限値以下の場合、ステップS72の処理を実行し、設定値JがC3上限値を超えた場合、ステップS77の処理を実行する。
[ステップS72]初期値探索部142は、SASエクスパンダ107における該当する伝送路に対応する送信部120から、ドライブ210aに対してテストデータを連続的に送信させる(IOランニング)。初期値探索部142は、IOランニングの実行中におけるBERを確認する。
[ステップS73]初期値探索部142は、BERに基づき、IOランニングの実行時にSASエラーが発生したかを判定する。SASエラーの発生は、BERが図10のステップS55で用いられた閾値を超えた場合に判定される。初期値探索部142は、SASエラーが発生した場合、ステップS74の処理を実行し、SASエラーが発生しなかった場合、図10のステップS60の処理を実行する。
[ステップS74]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC3の設定値Jを、1段階高い値に設定する。
[ステップS75]初期値探索部142は、現在の設定値Jを、パラメータテーブル131における該当レコードにC3初期設定値として登録する。このとき、設定値Jは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC3初期設定値として上書きして登録される。
[ステップS76]初期値探索部142は、ステップS74でTxイコライザ122に設定された設定値Jを有効化するために、SASエクスパンダ107をリセットする。この後、処理はステップS71に進められる。
[ステップS77]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC3の設定値Jを、規定初期値に初期化する。また、初期値探索部142は、初期化された設定値Jを、パラメータテーブル131における該当レコードにC3初期設定値として登録する。このとき、設定値Jは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC3初期設定値として上書きして登録される。さらに、初期値探索部142は、初期化された設定値Jを有効化するために、SASエクスパンダ107をリセットする。この後、処理は図10のステップS60に進められる。
以上のステップS71〜S77の処理(T=1の処理フェーズ)では、パラメータC1が図10のステップS53〜S59の処理によって暫定的に決定されたC1初期設定値に設定された状態で、パラメータC3を規定初期値から徐々に高めながら、SASエラーが発生しないパラメータC3の値が探索される。ステップS73でSASエラーが発生せず、必要な通信品質が得られた場合に、その時点でのパラメータC3の設定値Jが、暫定的なC3初期設定値としてパラメータテーブル131に登録される。一方、必要な通信品質が得られないままステップS71で設定値JがC3上限値を超えた場合は、設定値Jが規定初期値に戻され、この値が暫定的なC3初期設定値としてパラメータテーブル131に登録される。
以下、図12を用いて説明を続ける。図12の処理は、パラメータC3の設定値Jとして、図11のステップS71〜S77の処理によって暫定的に決定されたC3初期設定値が設定された状態で実行される。また、図12の処理の初期状態では、パラメータC1の設定値Iとして、図10のステップS53〜S59の処理によって暫定的に決定されたC1初期設定値が設定されている。
[ステップS81]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC1の設定値Iを、1段階低い値に設定する。
[ステップS82]初期値探索部142は、現在の設定値Iを、パラメータテーブル131における該当レコードにC1初期設定値として登録する。このとき、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値として、設定値Iが上書きして登録される。
[ステップS83]初期値探索部142は、設定値Iが、認識されたドライブ210aに対応するC1下限値以上かを判定する。C1下限値は、パラメータテーブル131における該当レコードから取得される。初期値探索部142は、設定値IがC1下限値以上の場合、ステップS84の処理を実行し、設定値IがC1下限値より低い場合、ステップS89の処理を実行する。
[ステップS84]初期値探索部142は、SASエクスパンダ107における該当する伝送路に対応する送信部120から、ドライブ210aに対してテストデータを連続的に送信させる(IOランニング)。初期値探索部142は、IOランニングの実行中におけるBERを確認する。
[ステップS85]初期値探索部142は、BERに基づき、IOランニングの実行時にSASエラーが発生したかを判定する。SASエラーの発生は、BERが図10のステップS55で用いられた閾値を超えた場合に判定される。初期値探索部142は、SASエラーが発生した場合、ステップS86の処理を実行し、SASエラーが発生しなかった場合、図10のステップS60の処理を実行する。
[ステップS86]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC1の設定値Iを、1段階低い値に設定する。
[ステップS87]初期値探索部142は、現在の設定値Iを、パラメータテーブル131における該当レコードにC1初期設定値として登録する。このとき、設定値Iは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値として上書きして登録される。
[ステップS88]初期値探索部142は、ステップS86でTxイコライザ122に設定された設定値Iを有効化するために、SASエクスパンダ107をリセットする。この後、処理はステップS83に進められる。
[ステップS89]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC1の設定値Iを、ステップS81の実行前の値、すなわち、図10のステップS53〜S59の処理によって探索された値に戻す。また、初期値探索部142は、戻された設定値Iを、パラメータテーブル131における該当レコードにC1初期設定値として登録する。このとき、設定値Iは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC1初期設定値として上書きして登録される。さらに、初期値探索部142は、戻された設定値Iを有効化するために、SASエクスパンダ107をリセットする。この後、処理は図10のステップS60に進められる。
以上のステップS81〜S89の処理(T=2の処理フェーズ)では、パラメータC3が図11のステップS71〜S77の処理によって暫定的に決定されたC3初期設定値に設定される。この状態で、パラメータC1を、図10のステップS53〜S60の処理によって暫定的に決定されたC1初期設定値から徐々に低下させながら、SASエラーが発生しないパラメータC1の値が探索される。ステップS85でSASエラーが発生せず、必要な通信品質が得られた場合に、その時点でのパラメータC1の設定値Iが、該当制御条件に対応するC1初期設定値として確定され、パラメータテーブル131に登録される。一方、必要な通信品質が得られないままステップS83で設定値IがC1下限値より低くなった場合は、設定値Iが図10のステップS53〜S59の処理によって決定されたC1初期設定値に戻される。そして、この値が該当制御条件に対応するC1初期設定値として確定され、パラメータテーブル131に登録される。
以下、図13を用いて説明を続ける。図13の処理は、パラメータC1の設定値Iとして、図12のステップS81〜S89の処理によって決定されたC1初期設定値が設定された状態で実行される。また、図13の処理の初期状態では、パラメータC3の設定値Jとして、図11のステップS71〜S77の処理によって暫定的に決定されたC3初期設定値が設定されている。
[ステップS91]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC3の設定値Jを、1段階低い値に設定する。
[ステップS92]初期値探索部142は、現在の設定値Jを、パラメータテーブル131における該当レコードにC3初期設定値として登録する。このとき、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC3初期設定値として、設定値Jが上書きして登録される。
[ステップS93]初期値探索部142は、設定値Jが、認識されたドライブ210aに対応するC3下限値以上かを判定する。C3下限値は、パラメータテーブル131における該当レコードから取得される。初期値探索部142は、設定値JがC3下限値以上の場合、ステップS94の処理を実行し、設定値JがC3下限値より低い場合、ステップS99の処理を実行する。
[ステップS94]初期値探索部142は、SASエクスパンダ107における該当する伝送路に対応する送信部120から、ドライブ210aに対してテストデータを連続的に送信させる(IOランニング)。初期値探索部142は、IOランニングの実行中におけるBERを確認する。
[ステップS95]初期値探索部142は、BERに基づき、IOランニングの実行時にSASエラーが発生したかを判定する。SASエラーの発生は、BERが図10のステップS55で用いられた閾値を超えた場合に判定される。初期値探索部142は、SASエラーが発生した場合、ステップS96の処理を実行し、SASエラーが発生しなかった場合、図10のステップS60の処理を実行する。
[ステップS96]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC3の設定値Jを、1段階低い値に設定する。
[ステップS97]初期値探索部142は、現在の設定値Jを、パラメータテーブル131における該当レコードにC3初期設定値として登録する。このとき、設定値Jは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC3初期設定値として上書きして登録される。
[ステップS98]初期値探索部142は、ステップS96でTxイコライザ122に設定された設定値Jを有効化するために、SASエクスパンダ107をリセットする。この後、処理はステップS93に進められる。
[ステップS99]初期値探索部142は、送信部120のTxイコライザ122に設定するパラメータC3の設定値Jを、ステップS91の実行前の値、すなわち、図11のステップS71〜S77の処理によって探索された値に戻す。また、初期値探索部142は、戻された設定値Jを、パラメータテーブル131における該当レコードにC3初期設定値として登録する。このとき、設定値Jは、クロックタイミングおよび電源電圧に関する現在の制御条件に対応するC3初期設定値として上書きして登録される。さらに、初期値探索部142は、戻された設定値Jを有効化するために、SASエクスパンダ107をリセットする。この後、処理は図10のステップS60に進められる。
以上のステップS91〜S99の処理(T=3の処理フェーズ)では、パラメータC1が図12のステップS81〜S89の処理によって決定されたC1初期設定値に設定される。この状態で、パラメータC3を、図11のステップS71〜S77の処理によって暫定的に決定されたC3初期設定値から徐々に低下させながら、SASエラーが発生しないパラメータC3の値が探索される。ステップS95でSASエラーが発生せず、必要な通信品質が得られた場合に、その時点でのパラメータC3の設定値Jが、該当制御条件に対応するC3初期設定値として確定され、パラメータテーブル131に登録される。一方、必要な通信品質が得られないままステップS93で設定値JがC3下限値より低くなった場合は、設定値Jが図11のステップS71〜S77の処理によって決定されたC3初期設定値に戻される。そして、この値が該当制御条件に対応するC3初期設定値として確定され、パラメータテーブル131に登録される。
以上説明した第2の実施の形態によれば、図7のステップS15の初期設定値探索処理により、クロックタイミングおよび電源電圧の制御条件を図9のステップS34〜S37のように変えながら、所定の通信品質を維持できるパラメータC1,C3の値が探索される。クロックタイミングおよび電源電圧という、オートチューニングで用いられない条件を与えてパラメータC1,C3の適正値が探索されることで、安定的な通信が可能となるパラメータC1,C3の値を探索できる可能性が高まる。
特に、クロックタイミングや電源電圧の条件を変化させることで、Txドライバ121から出力される送信信号に対し、伝送路の信号伝送特性が変動した場合に発生する変化を擬似的に与えることができる。このため、これらの条件を変えながらパラメータC1,C3の適正値が探索されることで、伝送路の信号伝送特性の変動に対してより安定的な通信が可能となるパラメータC1,C3の値を、探索できる可能性が高まる。
そして、図8のステップS23では、このようにして探索されたパラメータC1,C3の値を初期設定値として用いて、オートチューニングが実行される。これにより、オートチューニングによってパラメータC1,C3についての真の最適値が設定される可能性が高まり、その結果、伝送路を介した通信の安定性が向上する可能性が高まる。これは、上記の制御条件を変えながら探索されたパラメータC1,C3の初期設定値が、あらかじめ決められた初期設定値より、パラメータC1,C3の真の最適値に近い可能性が高くなるからである。また、このことにより、オートチューニングでパラメータC1,C3の最適値が設定されるまでにかかる時間が短縮される可能性も高まる。オートチューニングの時間が短縮されることで、CM100の起動にかかる時間や、新たに装着されたドライブを使用できるようになるまでの時間を短縮できる。
なお、上記の第2の実施の形態では、初期設定値探索処理により、制御条件ごとにC1初期設定値およびC3初期設定値が求められ、制御条件ごとの初期設定値が優先度にしたがって順に選択されてオートチューニングが行われるようにした。これにより、例えば、同じスロットに同じ機種のドライブが装着されたときに、ドライブのSASコントローラの製造バラツキによって信号伝送特性が変化した場合でも、適切な初期設定値を用いてオートチューニングを実行できるようになる。
ただし、別の方法として、初期設定値探索処理では、制御条件ごとに求められた初期設定値に基づいて1組の初期設定値が求められ、その1組の初期設定値のみがパラメータテーブル131に登録されて、オートチューニングで利用されてもよい。この場合、例えば、制御条件ごとに求められた初期設定値のうち、優先度が最も高い(すなわち、パラメータC1,C3の適正値が求められるまでの時間が最も短かった)初期設定値が、パラメータテーブル131に登録される。あるいは、制御条件ごとに求められた初期設定値の中間値が、パラメータテーブル131に登録されてもよい。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置10、CM100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 他の装置に対して伝送路を介して送信する送信信号を出力する信号出力部と、前記信号出力部から前記伝送路に出力される前記送信信号の波形を整形する波形整形部と、を備えるインタフェース部と、
前記送信信号の生成に関する第1の制御パラメータの値を変化させながら、前記波形整形部に対する第2の制御パラメータの値として、前記伝送路を介した通信品質が所定の品質条件を満たすような第1の値を探索し、前記第1の制御パラメータの値として所定の第2の値を設定するとともに、前記第2の制御パラメータの値として探索された前記第1の値を設定した状態で、前記インタフェース部に前記伝送路を介した通信を開始させる制御部と、
を有する情報処理装置。
(付記2) 前記インタフェース部は、前記第2の制御パラメータの値を初期値を起点として変化させながら、前記波形整形部から出力される前記送信信号の波形が所定の波形条件を満たすような前記第2の制御パラメータの値を自律的に決定するパラメータ決定処理を実行可能であり、
前記制御部は、前記第1の制御パラメータの値として前記第2の値を設定した状態で、前記初期値として前記第1の値を設定して前記インタフェース部に前記パラメータ決定処理を実行させる、
付記1記載の情報処理装置。
(付記3) 前記制御部は、前記探索において、前記第1の制御パラメータの値を複数の段階に変化させ、前記段階ごとに前記通信品質が前記品質条件を満たすような第3の値を探索し、前記段階ごとに探索された前記第3の値に基づいて前記第1の値を決定する、
付記1または2記載の情報処理装置。
(付記4) 前記制御部は、前記段階ごとに探索された前記第3の値に対して優先度を設定し、前記第1の制御パラメータとして前記第2の値を設定した状態で、前記第2の制御パラメータとして前記優先度が高い順に前記第3の値を設定しながら前記インタフェース部に前記伝送路を介した通信を実行させ、通信できたときの前記第3の値を前記第1の値に決定する、
付記3記載の情報処理装置。
(付記5) 前記制御部は、前記段階ごとの前記第3の値のうち、探索されるまでにかかった時間が短い前記第3の値ほど前記優先度を高く設定する、
付記4記載の情報処理装置。
(付記6) 前記制御部は、前記探索において、前記第1の制御パラメータの値を複数の段階に変化させ、前記段階ごとに前記通信品質が前記品質条件を満たすような第3の値を探索し、前記段階ごとに探索された前記第3の値に対して優先度を設定し、前記第1の制御パラメータとして前記第2の値を設定した状態で、前記初期値として前記第3の値を前記優先度が高い順に設定しながら前記インタフェース部に前記パラメータ決定処理を実行させ、前記パラメータ決定処理によって前記第2の制御パラメータの値を決定できたときの前記第3の値を前記第1の値に決定する、
付記2記載の情報処理装置。
(付記7) 前記情報処理装置は、記憶部をさらに有し、
前記制御部は、前記他の装置として第1の装置が接続されたときに探索された前記第1の値を、前記第1の装置の機種と対応付けて前記記憶部に登録し、その後に前記他の装置として第2の装置が接続されたとき、前記第2の装置が前記第1の装置と同じ機種の場合には、前記探索の実行をスキップして前記第1の値を前記記憶部から読み出し、前記第1の制御パラメータの値として所定の第2の値を設定するとともに、読み出した前記第1の値を前記第2の制御パラメータの値として設定した状態で、前記インタフェース部に前記伝送路を介した通信を開始させる、
付記1乃至6のいずれか1つに記載の情報処理装置。
(付記8) 前記情報処理装置は、記憶部をさらに有し、前記情報処理装置にはそれぞれ異なる前記他の装置に接続する前記伝送路が複数接続され、前記伝送路ごとに前記インタフェース部が設けられ、
前記制御部は、前記伝送路のうち一の伝送路に前記他の装置として第1の装置が接続されたときに探索された前記第1の値を、前記第1の装置の機種および前記一の伝送路の識別情報と対応付けて前記記憶部に登録し、その後に前記一の伝送路に前記他の装置として第2の装置が接続されたとき、前記第2の装置が前記第1の装置と同じ機種の場合には、前記探索の実行をスキップして前記第1の値を前記記憶部から読み出し、前記第1の制御パラメータの値として所定の第2の値を設定するとともに、読み出した前記第1の値を前記第2の制御パラメータの値として設定した状態で、前記一の伝送路に対応する前記インタフェース部に前記一の伝送路を介した通信を開始させる、
付記1乃至6のいずれか1つに記載の情報処理装置。
(付記9) 前記第1の制御パラメータとして、前記送信信号を生成するためのクロックの周波数を調整するためのパラメータが用いられる、
付記1乃至8のいずれか1つに記載の情報処理装置。
(付記10) 前記第1の制御パラメータとして、前記信号出力部に供給される電源電圧を調整するためのパラメータが用いられる、
付記1乃至8のいずれか1つに記載の情報処理装置。
(付記11) 他の装置に対して伝送路を介して送信する送信信号を出力する信号出力部と、前記信号出力部から前記伝送路に出力される前記送信信号の波形を整形する波形整形部と、を備えるインタフェース部を有するコンピュータに、
前記送信信号の生成に関する第1の制御パラメータの値を変化させながら、前記波形整形部に対する第2の制御パラメータの値として、前記伝送路を介した通信品質が所定の品質条件を満たすような第1の値を探索し、
前記第1の制御パラメータの値として所定の第2の値を設定するとともに、前記第2の制御パラメータの値として探索された前記第1の値を設定した状態で、前記インタフェース部に前記伝送路を介した通信を開始させる、
処理を実行させる通信制御プログラム。