(57)【要約】【課題】ホストに適したタイムアウト時間を設定できるようにする。【解決手段】実施形態によれば、インタフェースコントローラは、第１のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。第１のタイマは、インタフェースコントローラが複数のホスト装置のうちの第１のホスト装置と接続された第１の時点からの経過時間を計測し、計測された経過時間と第１のタイムアウト値とに基づいて第１のタイムアウトを検出する。モニタ結果取得手段は、第１の時点の後で且つ第１のタイムアウトの検出前に第１のホスト装置からの最初のフレームが受信された第２の時点における計測された経過時間を示す値をモニタ結果として取得する。モニタ結果保持手段は、取得されたモニタ結果を保持する。調整手段は、モニタ結果保持手段に保持されている少なくとも１つのモニタ結果に基づいて、第１のタイムアウト値を調整する。【選択図】図２
2012128560.tif 000002
【特許請求の範囲】
【請求項１】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるインタフェースコントローラであって、
前記インタフェースコントローラが前記複数のホスト装置のうちの第１のホスト装置と接続された第１の時点からの経過時間を計測し、前記計測された経過時間と第１のタイムアウト値とに基づいて第１のタイムアウトを検出する第１のタイマと、
前記第１の時点の後で且つ前記第１のタイムアウトの検出前に前記第１のホスト装置からの最初のフレームが受信された第２の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも１つのモニタ結果に基づいて、前記第１のタイムアウト値を調整する調整手段と
を具備するインタフェースコントローラ。
【請求項２】
前記少なくとも１つのモニタ結果は、前記インタフェースコントローラが前記第１のホスト装置と複数回接続された後に前記モニタ結果保持手段に保持されている複数のモニタ結果であり、
前記調整手段は、前記複数のモニタ結果に基づいて前記複数のモニタ結果の傾向を検出し、前記検出された傾向に基づいて、前記第１のタイムアウト値を調整する
請求項１記載のインタフェースコントローラ。
【請求項３】
前記調整手段は、前記複数のモニタ結果の最大の値を前記検出された傾向を表す値として取得し、前記第１のタイムアウト値を前記取得された最大の値に変更する請求項２記載のインタフェースコントローラ。
【請求項４】
前記調整手段は、前記複数のモニタ結果の平均値を前記検出された傾向を表す値として取得し、前記第１のタイムアウト値を前記取得された平均値に変更する請求項２記載のインタフェースコントローラ。
【請求項５】
前記少なくとも１つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記第１のタイムアウト値と前記最新のモニタ結果との平均値を計算し、且つ前記第１タイムアウト値を前記計算された平均値に変更する請求項１記載のインタフェースコントローラ。
【請求項６】
前記少なくとも１つのモニタ結果は最新のモニタ結果であり、
前記調整手段は、前記最新のモニタ結果が取得された場合、前記第１のタイムアウト値を所定の値だけ減じる請求項１記載のインタフェースコントローラ。
【請求項７】
前記複数のホスト装置の各々に対応付けてタイムアウト値を保持するタイムアウト値保持手段をさらに具備し、
前記第１のタイマは、前記インタフェースコントローラが前記第１のホスト装置と接続された場合、前記第１のホスト装置に対応付けて前記タイムアウト値保持手段に保持されているタイムアウト値を前記第１のタイムアウト値として使用し、
前記調整手段は、前記第１タイムアウト値として使用された前記タイムアウト値保持手段に保持されているタイムアウト値を調整する
請求項１記載のインタフェースコントローラ。
【請求項８】
前記第１の時点からの経過時間を計測し、前記計測された経過時間と前記第１のタイムアウト値よりも大きい第２のタイムアウトとに基づいて第２のタイムアウトを検出する第２のタイマと、
前記第１のタイムアウトまたは前記第２のタイムアウトの検出に応じて前記第１のホスト装置と前記インタフェースコントローラとの接続を切断する接続切断手段と
をさらに具備する請求項１記載のインタフェースコントローラ。
【請求項９】
記憶手段と、
複数のホスト装置のうちの第１のホスト装置が所定のインタフェースバスを介して前記記憶手段にアクセスするために、前記第１のホスト装置によって送られる接続要求に応じて、前記第１のホスト装置との接続を制御するインタフェースコントローラとを具備し、
前記インタフェースコントローラは、
前記インタフェースコントローラが前記第１のホストと接続された第１の時点からの経過時間を計測し、前記計測された経過時間と第１のタイムアウト値とに基づいて第１のタイムアウトを検出する第１のタイマと、
前記第１の時点の後で且つ前記第１のタイムアウトの検出前に前記第１のホストからの最初のフレームが受信された第２の時点における前記計測された経過時間を示す値をモニタ結果として取得するモニタ結果取得手段と、
前記取得されたモニタ結果を保持するモニタ結果保持手段と、
前記モニタ結果保持手段に保持されている少なくとも１つのモニタ結果に基づいて、前記第１のタイムアウト値を調整する調整手段とを具備する
ストレージ装置。
【請求項１０】
複数のホスト装置から所定のインタフェースバスを介してアクセス可能なストレージ装置におけるタイムアウト値調整方法であって、
前記ストレージ装置と前記複数のホスト装置のうちの第１のホスト装置とが接続された第１の時点からの経過時間を計測し、
前記第１の時点から第１のタイムアウト値の示す時間が経過するまでに前記第１のホスト装置からの最初のフレームが受信されなかった場合、第１のタイムアウトを検出し、
前記第１の時点から前記第１のタイムアウト値の示す時間が経過する前の第２の時点に前記第１のホスト装置からの最初のフレームが受信された場合、前記第２の時点における前記計測された経過時間を示す値をモニタ結果として取得し、
前記取得されたモニタ結果をモニタ結果保持手段に保持し、
前記モニタ結果保持手段に保持されている少なくとも１つのモニタ結果に基づいて、前記第１のタイムアウト値を調整する
タイムアウト値調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、インタフェースコントローラ、ストレージ装置、及びタイムアウト調整方法に関する。
【背景技術】
【０００２】
近年のストレージ装置は、一般に複数のホスト装置によってアクセス可能である。以下、ホスト装置を単にホストと表記することもある。複数のホストのいずれか１つ（以下、第１のホストと呼ぶ）がストレージ装置にアクセスするためには、第１のホストとストレージ装置との間の接続（より詳細には、論理的な接続）が確立している必要がある。第１のホストとストレージ装置との間の接続が確立すると、第１のホストはストレージ装置にアクセスして、例えばデータフレームを転送することができる。もし、転送すべきデータのサイズが大きい場合、データフレームの転送が繰り返される。
【０００３】
第１のホストがストレージ装置にデータフレームを繰り返し転送している場合、他のホスト（以下、第２のホストと呼ぶ）は、ストレージ装置との間の接続を確立することができない。つまり、第１のホストが、データフレームの転送のためにストレージ装置との間の接続を占有している期間、第２のホストは当該ストレージ装置に接続することができない。
【０００４】
そこで、従来のストレージ装置は、第１のホストが当該ストレージ装置との間のデータフレームの転送、つまりデータ転送のために上述の接続を長期間占有することを回避する仕組みを備えている。この仕組みによれば、第１のホストがストレージ装置との間の接続を占有する時間の上限が当該ストレージ装置内に設定される。この上限の時間は、タイムアウト時間と呼ばれる。第１のホストがストレージ装置との間のデータ転送を開始してからタイムアウト時間が経過すると、第１のホストとストレージ装置との間の接続が強制的に切断（開放）される。これにより、第２のホストからストレージ装置への接続が可能になる。
【０００５】
しかし、設定されたタイムアウト時間が短すぎると、第１のホストが正常にデータ転送を実行している最中に上述の接続が切断される可能性がある。逆に、設定されたタイムアウト時間が長すぎると、例えば第１のホストの状態に起因してデータ転送に失敗しているにも関わらずに、上述の接続が長時間開放されない可能性がある。
【０００６】
このため従来から、ストレージ装置がホストとの間のデータ転送の際に使用するタイムアウト時間（以下、第１のタイムアウト時間と称する）を自動的に設定するための技術が提案されている。このような技術の１つとして、例えば、ホストとストレージ装置との間のデータ転送が開始されてから所定の条件が成立するまでの経過時間に基づいて第１のタイムアウト時間を更新する技術（以下、従来技術と称する）が知られている。所定の条件とは、例えば、ホストに設定されているタイムアウト時間（以下、第２のタイムアウト時間と称する）に基づく当該第１のホストによるタイムアウトの検出である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−１４２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来技術によれば、ホストに設定されている第２のタイムアウト時間に対応する第１のタイムアウト時間をストレージ装置に自動的に設定できる。
【０００９】
しかし、従来技術では、ホストとストレージ装置との間で接続が確立しているにも関わらず、データ転送が開始されていないような場合に、有効な第１のタイムアウト時間を設定することは難しい。
【００１０】
本発明の目的は、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供することである。
【課題を解決するための手段】
【００１１】
実施形態によれば、インタフェースコントローラは、複数のホスト装置から所定のインタフェースバスを介してアクセス可能であって、第１のタイマと、モニタ結果取得手段と、モニタ結果保持手段と、調整手段とを具備する。前記第１のタイマは、前記インタフェースコントローラが前記複数のホスト装置のうちの第１のホスト装置と接続された第１の時点からの経過時間を計測し、前記計測された経過時間と第１のタイムアウト値とに基づいて第１のタイムアウトを検出する。前記モニタ結果取得手段は、前記第１の時点の後で且つ前記第１のタイムアウトの検出前に前記第１のホスト装置からの最初のフレームが受信された第２の時点における前記計測された経過時間を示す値をモニタ結果として取得する。前記モニタ結果保持手段は、前記取得されたモニタ結果を保持する。前記調整手段は、前記モニタ結果保持手段に保持されている少なくとも１つのモニタ結果に基づいて、前記第１のタイムアウト値を調整する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係る、ストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図。
【図２】図１に示されるＳＡＳコントローラの典型的な構成を示すブロック図。
【図３】第１の実施形態における第１の動作例を説明するためのシーケンスチャート。
【図４】第１の実施形態における第２の動作例を説明するためのシーケンスチャート。
【図５】第１の実施形態における第３の動作例を説明するためのシーケンスチャート。
【図６】第１の実施形態で適用される第１のタイムアウト値調整方法を説明するための図。
【図７】第２の実施形態で適用される第２のタイムアウト値調整方法を説明するための図。
【図８】第３の実施形態で適用される第３のタイムアウト値調整方法におけるサンプリング期間とタイムアウト値調整との関係を説明するための図。
【図９】上記第３のタイムアウト値調整方法によるサンプリング期間後におけるタイムアウト値調整を説明するための図。
【図１０】第１乃至第３の実施形態に共通の、各ホストに対応したタイムアウト値を格納するテーブルの例を示す図。
【発明を実施するための形態】
【００１３】
以下、実施の形態につき図面を参照して説明する。
【００１４】
［第１の実施形態］
図１は、第１の実施形態に係るストレージ装置を備えたストレージシステムの典型的な構成を示すブロック図である。
【００１５】
図１に示すストレージシステムは、ストレージ装置１０と、複数のホスト、例えば４つのホスト２０−１，２０−２，２０−３及び２０−４とを備えている。各ホスト２０−ｉ（ｉ＝１〜４）は、例えば、ＳＡＳ（Serial Attached SCSI）インタフェースを有するＳＡＳホストである。各ホスト２０−ｉは、エクスパンダ３０及びＳＡＳバス３１を介してストレージ装置１０に物理的に接続されている。第１の実施形態において、ＳＡＳバス３１を介して行われる通信のプロトコルには、ＳＳＰ（Serial SCSI Protocol）、或いはＳＭＰ（Serial Management Protocol）のようなＳＣＳＩ規格に準拠した通信プロトコル（つまり広義のＳＣＳＩプロトコル）が用いられる。
【００１６】
第１の実施形態において、「接続」の概念は２つある。第１は、上述のような物理的な接続である。第２は、通信のための接続（つまり論理的な接続）である。ホスト２０−ｉは、ストレージ装置１０と単に物理的に接続されているだけではストレージ装置１０と通信することはできない。ホスト２０−ｉとストレージ装置１０との間で論理的な接続が確立して初めて、ホスト２０−ｉはストレージ装置１０と通信することができる。以下の説明では、「論理的な接続」を、単に「接続」と称する。つまり、以下の説明において、単に接続と表記される場合には、論理的な接続を表すものとする。
【００１７】
ストレージ装置１０は、例えば、ＳＡＳインタフェースを有するＳＡＳドライブである。第１の実施形態においてストレージ装置１０は、ＳＡＳ磁気ディスクドライブ（ＨＤＤ）、或いはソリッドステートドライブ（ＳＳＤ）である。ストレージ装置１０は、記憶部１１、主コントローラ１２及びＳＡＳコントローラ１３を備えている。
【００１８】
記憶部１１は、ストレージ装置１０がＨＤＤの場合、磁気ディスクを記憶媒体として有している。記憶部１１は、ストレージ装置１０がＳＳＤの場合、フラッシュメモリを記憶媒体として有している。主コントローラ１２は、記憶部１１へのデータの書き込み、または記憶部１１からのデータの読み出しを制御する。主コントローラ１２は、内部バス３２を介してＳＡＳコントローラ１３に物理的に接続されている。
【００１９】
ＳＡＳコントローラ１３は、ＳＡＳバス３１を介してエクスパンダ３０と物理的に接続されている。このエクスパンダ３０には、上述の４つのホスト２０−１〜２０−４が物理的に接続されている。しかし、エクスパンダ３０に物理的に接続されるホストの数は４である必要はない。
【００２０】
ＳＡＳコントローラ１３は、ストレージ装置１０の外部にあるＳＡＳインタフェースを持った機器との接続を制御する。なお、ＳＡＳコントローラ１３に代えて、ＳＡＳインタフェース以外のインタフェース、例えば、ＳＡＴＡ（Serial ATA）インタフェース、或いはＳＣＳＩインタフェースのようなインタフェースを持ったインタフェースコントローラを用いてもよい。
【００２１】
説明の簡略化のために、ＳＡＳコントローラ１３に物理的に直接接続可能な外部機器（イニシエータ）の数（以下、ＳＡＳコントローラ１３の許容数と称する）は１であるものとする。つまりＳＡＳコントローラ１３は、１つのＳＡＳポート（イニシエータポート）を備えているものとする。エクスパンダ３０は、ストレージ装置１０に物理的に接続すべき外部機器の数が、ＳＡＳコントローラ１３の許容数を超える場合に用いられる。第１の実施形態では、上述のようにエクスパンダ３０に４つのホスト２０−１〜２０−４が物理的に接続されている。この場合、エクスパンダ３０は、４つのホスト２０−１〜２０−４をストレージ装置１０に物理的に接続することができる。
【００２２】
ホスト２０−１〜２０−４の１つであるホスト２０−ｉ（ｉ＝１，２，３または４）は、ＳＡＳコントローラ１３の制御によりストレージ装置１０と接続（論理的に接続）することができる。この状態において、ホスト２０−ｉとストレージ装置１０とは、相互に通信、例えばデータを送受信することができる。このように、第１の実施形態においてストレージ装置１０と接続可能なホストの数は１つであり、複数のホストが同時にストレージ装置１０に接続することはできない。そのため、例えばホスト２０−１がストレージ装置１０に接続されていると、他のホスト、例えばホスト２０−２がストレージ装置１０に接続を要求した場合、当該接続要求は拒否される。この場合、ホスト２０−２は、ホスト２０−１とストレージ装置１０との接続が切断される（クローズされる）まで待たされる。
【００２３】
このとき、ホスト２０−１が、何らかの影響で、例えばフレームの送受信を行っていないものとする。このような場合、ＳＡＳコントローラ１３は、ホスト２０−１が接続を占有する時間を調節する。これにより、ホスト２０−２からの接続要求に対して適切な接続が可能になる。
【００２４】
次に、図１に示されるＳＡＳコントローラ１３について詳細に説明する。  
図２は、ＳＡＳコントローラ１３の構成を示すブロック図である。  
図２の説明を行う前に、例えば、ホスト２０−１がストレージ装置１０と接続してから、ストレージ装置１０との接続が切断されるまでの一般的なハンドシェイクの例（第１の動作例）について、図３を参照して説明する。
【００２５】
図３は、イニシエータ（Initiator 1）としてのホスト２０−１（第１のホスト）とターゲット（Target）としてのストレージ装置１０との間で行われる、接続から切断までのフレームやプリミティブなどの送受信の通信シーケンス（ハンドシェイク）を示すシーケンスチャートである。  
図３において、ホスト２０−１（Initiator 1）及びストレージ装置１０（Target）は、エクスパンダ３０（Expander）を介して相互にフレームやプリミティブなどを送受信する。
【００２６】
まず、ホスト２０−１（Initiator 1）において、当該ホスト２０−１からストレージ装置（Target）１０にコマンドフレーム（ＣＯＭＭＡＮＤ）を送信する必要が発生したものとする。すると、ホスト２０−１とストレージ装置１０との接続を確立するための接続（オープン）シーケンスが次のように開始される。
【００２７】
始めに、ホスト２０−１は、ストレージ装置１０への接続の要求として、ＯＰＥＮアドレス・フレームを送信する。ストレージ装置１０は、ホスト２０−１によって送信されたＯＰＥＮアドレス・フレームをエクスパンダ３０を介して受信する。するとストレージ装置１０は、他のホストと接続されていないならば、接続許可のプリミティブとして、ＯＰＥＮ＿ＡＣＣＥＰＴプリミティブをホスト２０−１に応答する。この時点で、ホスト２０−１とストレージ装置１０との間で接続が確立（または、完了）したことになる。この時点を第１の時点ｔ１とする。
【００２８】
上記接続の確立後、ストレージ装置１０は、ＲＲＤＹプリミティブをホスト２０−１に送信する。ＲＲＤＹプリミティブがホスト２０−１に送信された時点で、当該ホスト２０−１は、コマンドフレームを送信することが可能となる。
【００２９】
そこで、ホスト２０−１はコマンドフレーム（最初のフレーム）をストレージ装置１０に送信する。ストレージ装置１０は、コマンドフレームを受信すると、ＡＣＫプリミティブをホスト２０−１に返す。するとホスト２０−１は、データフレーム（ＤＡＴＡ）を送信し始める。第１の時点ｔ１の後、ストレージ装置１０が最初のフレームを受信した時点を第２の時点ｔ２とする。
【００３０】
その後、ホスト２０−１とストレージ装置１０との間で幾つかのフレームの送受信が実行されたものとする。すると、ホスト２０−１及びストレージ装置１０は、現在確立している接続を切断する（閉じる）ための、次のような切断（クローズ）シーケンスに移行する。
【００３１】
まずホスト２０−１は、一連のフレームの送信が完了したことを知らせるためにＤＯＮＥプリミティブをストレージ装置１０に送信する。するとＤＯＮＥプリミティブに対する応答として、ストレージ装置１０はＤＯＮＥプリミティブをホスト２０−１に送信する。つまりホスト２０−１及びストレージ装置１０は、ＤＯＮＥプリミティブを交換する。同様にして、ホスト２０−１及びストレージ装置１０は最後に、ＣＬＯＳＥプリミティブを交換する。ＣＬＯＳＥプリミティブの交換が完了した時点で切断シーケンスは完了し、ホスト２０−１（Initiator 1）とストレージ装置１０（Target）との間の接続が切断された（閉じられた）ことになる。
【００３２】
ところで、ホスト２０−１とストレージ装置１０との接続が確立している間に、ホスト２０−１以外のホスト（例えばホスト２０−２）から接続が要求されることがある。この場合、また、ホスト２０−２は、ホスト２０−１とストレージ装置１０との接続が切断されるまで待たされる。
【００３３】
また、ホスト２０−１とストレージ装置１０との接続が確立した後、図３の例とは異なって、何らかの要因でホスト２０−１とストレージ装置１０との間で全くフレームが送受信されないこともある。このような場合、従来技術のように、データ転送が開始されてからの経過時間に基づいてタイムアウトが検出される構成では、効果的なタイムアウト検出を行うことは難しい。つまり、ホスト２０−２は、長時間待たされる。第１の実施形態では、このような場合を考慮して、所定の条件が成立した場合に、現在確立している接続が強制的に切断される。所定の条件は２つある。第１は、タイムアウト値（第１のタイムアウト値）１５１（図２参照）に基づく第１のタイムアウトの検出である。第２は、タイムアウト値（第２のタイムアウト値）１５２（図２参照）に基づく第２のタイムアウトの検出である。ここで、第１及び第２のタイムアウトの検出の起点となる時点が、従来技術と異なり、後述するように上記第１の時点ｔ１であることに注意すべきである。
【００３４】
第１の実施形態では、タイマ１３０にタイムアウト値１５１が設定される。これにより、上述のようにホスト２０−１とストレージ装置１０との間で全くフレームが送受信されない状態でも、第１の時点ｔ１からの経過時間がタイムアウト値１５１の示す時間を超えた場合は、ホスト２０−１とストレージ装置１０との間の接続が切断される。
【００３５】
第１の実施形態では、タイムアウト値１５１及び１５２の少なくともタイムアウト値１５１が、ストレージ装置１０のＳＡＳコントローラ１３によって調整される。そのためＳＡＳコントローラ１３は、第１の時点ｔ１から第２の時点ｔ２までの時間（経過時間）を計測する。ＳＡＳコントローラ１３は少なくとも１つの計測結果に基づいて、タイムアウト値１５１を調整する。
【００３６】
図２に戻って、上述したように、タイムアウト値を調整する機能を有するＳＡＳコントローラ１３の構成について説明する。  
ＳＡＳコントローラ１３は、ＳＡＳバスインタフェース１４０、タイマ１３０、タイマ１３１、モニタ結果取得部１３２、モニタ結果保持部１３４、調整部１３６、イニシエータテーブル１３８及びストレージインタフェース１４２から構成される。
【００３７】
タイマ１３０は、ホスト２０−１〜２０−４の１つであるホスト２０−ｉ（ｉ＝１，２，３または４）とストレージ装置１０との接続が完了した第１の時点ｔ１からの経過時間を計測する。タイマ１３０には、タイムアウト値１５１が設定される。タイマ１３０は、計測された経過時間がタイムアウト値１５１の示す時間（第１のタイムアウト時間）を超える第１のタイムアウトを検出する。タイマ１３０は第１のタイムアウトを検出すると、計測時間をクリアする。タイマ１３０に設定されるタイムアウト値１５１には、その時点において、ストレージ装置１０と接続されているホスト２０−ｉに対応するタイムアウト値Ｔ１ｉ[x]が用いられる。タイムアウト値Ｔ１ｉ[x]は、図９を参照して後述するようにホスト２０−ｉに対応付けてイニシエータテーブル１３８に格納されている。
【００３８】
タイマ１３１は、上記第１の時点ｔ１からの経過時間を計測する。タイマ１３１には、タイムアウト値１５２が設定される。タイマ１３１は、計測された経過時間がタイムアウト値１５２の示す時間（第２のタイムアウト時間）を超える第２のタイムアウトを検出する。タイマ１３１は第２のタイムアウトを検出すると、計測時間をクリアする。タイマ１３１に設定されるタイムアウト値１５２には、その時点において、ストレージ装置１０と接続されているホスト２０−ｉに対応するタイムアウト値Ｔ２ｉ[y]が用いられる。タイムアウト値Ｔ２ｉ[y]は、図９を参照して後述するようにホスト２０−ｉに対応付けてイニシエータテーブル１３８に格納されている。
【００３９】
モニタ結果取得部１３２は、ＳＡＳバスインタフェース１４０及びタイマ１３０の状態をモニタする。具体的には、モニタ結果取得部１３２は、ＳＡＳバスインタフェース１４０の状態をモニタすることにより、ホスト２０−ｉとストレージ装置１０との接続が完了したことを検出する。モニタ結果取得部１３２はまた、ＳＡＳバスインタフェース１４０及びタイマ１３０の状態をモニタすることにより、上記接続が完了した第１の時点ｔ１の後、タイマ１３０がタイムアウトを検出する前に最初のフレームが受信されたことを検出する。モニタ結果取得部１３２はまた、最初のフレームの受信を検出した時点（つまり第２の時点）ｔ２におけるタイマ１３０の計測時間を、モニタ結果として取得する。モニタ結果取得部１３２は、取得されたモニタ結果を、ホスト２０−ｉに対応付けてモニタ結果保持部１３４に格納する。モニタ結果取得部１３２はさらに、タイマ１３０による第１のタイムアウト検出をモニタすることにより、ストレージ装置１０（より詳細には、ＳＡＳバスインタフェース１４０）を切断シーケンスに移行させる。
【００４０】
モニタ結果保持部１３４は、モニタ結果取得部１３２によって取得されたモニタ結果をホスト２０−ｉ毎に保持する。ホスト２０−ｉとストレージ装置１０とが複数回接続された場合、モニタ結果保持部１３４には、ホスト２０−ｉに対応付けて複数のモニタ結果が保持される。
【００４１】
調整部１３６は、ホスト２０−ｉに対応付けてモニタ結果保持部１３４に保持された少なくとも１つのモニタ結果に基づいて、タイムアウト値１５１を調整する。より詳細には調整部１３６は、タイムアウト値１５１として用いられた、ホスト２０−ｉに対応付けてイニシエータテーブル１３８に格納されているタイムアウト値Ｔ１ｉ[x]を調整する。タイムアウト値１５１の調整方法については後述する。調整部１３６は、ホスト２０−ｉに対応付けてイニシエータテーブル１３８に格納されているタイムアウト値Ｔ１ｉ[x]を、調整されたタイムアウト値に変更（更新）する。また、調整部１３６は、ホスト２０−ｉとストレージ装置１０とが接続される都度、ホスト２０−ｉに対応付けてイニシエータテーブル１３８に格納されているタイムアウト値Ｔ１ｉ[x]及びＴ２ｉ[y]を、それぞれタイムアウト値１５１及び１５２として、タイマ１３０及び１３１に設定する。
【００４２】
ＳＡＳバスインタフェース１４０は、ＳＡＳバス３１を介してエクスパンダ３０と物理的に接続されている。ＳＡＳバスインタフェース１４０は、ホスト２０−ｉと当該ＳＡＳバスインタフェース１４０との間で、ＳＡＳバス３１及びエクスパンダ３０を介してフレームやプリミティブなどを送受信する。ＳＡＳバスインタフェース１４０は、接続切断手段としても機能する。つまりＳＡＳバスインタフェース１４０は、ホスト２０−ｉとストレージ装置１０とが接続されている状態で、タイマ１３０またはタイマ１３１がタイムアウトを検出した場合、ホスト２０−ｉとストレージ装置１０との接続を切断する。
【００４３】
ストレージインタフェース１４２は、ＳＡＳバスインタフェース１４０と物理的に接続されている。ストレージインタフェース１４２はまた、図１の主コントローラ１２と内部バス３２を介して物理的に接続されている。ストレージインタフェース１４２は、ＳＡＳバスインタフェース１４０と主コントローラ１２との間のデータ転送を行う。
【００４４】
次に、図４を用いて、第１の実施形態の第２の動作例について説明する。ここではストレージ装置１０に接続されるホスト２０−ｉが、ホスト２０−１であるものとする。図４は、第１の実施形態の第２の動作例における、ホスト２０−１がストレージ装置１０と接続されてから、ストレージ装置１０との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【００４５】
図４に示す第２の動作例は、図３に示した第１の動作例と、次の点で相違する。第１の動作例では、ホスト２０−１（Initiator 1）とストレージ装置１０（Target）との接続が確立された第１の時点ｔ１の後、ホスト２０−１からストレージ装置１０に速やかにフレーム（図３の例ではコマンドフレーム）が送信される。これに対して、第２の動作例では、上記第１の時点ｔ１の後、いつまでもホスト２０−１（Initiator 1）が最初のフレームを送信しない。言い換えると、ホスト２０−１（Initiator 1）は、データを送信していないにも関わらず、ストレージ装置１０（Target）との間の接続を占有している。
【００４６】
さらに図４の例では、ホスト２０−１とストレージ装置１０とが接続されている状態において、タイマ１３０が第１のタイムアウトを検出する前に、ホスト２０−１とは異なる例えばホスト２０−２（Initiator 2）が、ストレージ装置１０（Target）に接続を要求している。しかし、ホスト２０−１によって接続が占有されているため、ホスト２０−２からの接続要求は拒否されている。
【００４７】
さて、ストレージ装置１０がホスト２０−１から最初のフレームを受信することなく、タイマ１３０が、図４に示す第３の時点ｔ３で第１のタイムアウトを検出したものとする。この場合、ストレージ装置１０（より詳細には、ＳＡＳコントローラ１３のＳＡＳバスインタフェース１４０）はホスト２０−１との接続を強制的に切断するために、前述した切断シーケンスに移行する。これによりストレージ装置１０はＤＯＮＥプリミティブをホスト２０−１に送信する。するとＤＯＮＥプリミティブに対する応答として、ホスト２０−１はＤＯＮＥプリミティブをストレージ装置１０に返す。同様にして、ストレージ装置１０及びホスト２０−１はＣＬＯＳＥプリミティブを交換する。これにより、ホスト２０−１とストレージ装置１０との接続が切断される。
【００４８】
すると、接続待ち状態にあるホスト２０−２は、例えば、当該ホスト２０−２よりも先に接続待ち状態にある他のホストが存在しないならば、ストレージ装置１０に接続することが可能となる。しかし、第１のタイムアウトの検出に用いられた第１のタイムアウト値が調整されていないならば、ホスト２０−１は、余分な時間、ストレージ装置１０との接続を占有していた可能性がある。つまり、ホスト２０−２は、ストレージ装置１０に接続可能となるまで余分な時間待たされていた可能性がある。
【００４９】
そこで第１の実施形態では、ホスト２０−１に対応付けられている第１のタイムアウト値を、ストレージ装置１０（より詳細には、ＳＡＳコントローラ１３の調整部１３６）が後述するように調整する。つまりストレージ装置１０は、ホスト２０−１に適した第１のタイムアウト値を設定する。これにより、図４に示すような状況において、ホスト２０−１が無駄な時間接続を占有することを防止することが可能になる。
【００５０】
次に、第１の実施形態の第３の動作例について図５を用いて説明する。図４に示す第２の動作例と同様の動作に関しては説明を省略する。  
図５は、第１の実施形態の第３の動作例における、ホスト２０−１がストレージ装置１０と接続されてから、ストレージ装置１０との接続が切断されるまでのハンドシェイクを示すシーケンスチャートである。
【００５１】
図５に示す第３の動作例では、図３に示す第１の動作例と異なり、ホスト２０−１によるデータフレームの送信が繰り返し行われる。一連のデータフレームの送信が完了していないにも関わらず、タイマ１３１が、図５に示す第４の時点ｔ４で第２のタイムアウトを検出したものとする。このような状態は、例えば、ホスト２０−１から送信されるフレームの容量が膨大である場合や、通信速度が低下した場合に生じる。この場合、ストレージ装置１０（より詳細には、ＳＡＳコントローラ１３のＳＡＳバスインタフェース１４０）はホスト２０−１との接続を強制的に切断するために、前述した切断シーケンスに移行する。
【００５２】
次に、第１の実施形態で適用される第１のタイムアウト値調整方法について図６を参照して説明する。  
図６は、イニシエータテーブル１３８に格納されている、ホスト２０−１に対応したタイムアウト値Ｔ１１[n-1]（ｎ＝２，３，４，…）をタイムアウト値Ｔ１１[n]に調整する第１のタイムアウト値調整方法（以下、平均法と称する）の例を示す。タイムアウト値Ｔ１１[n-1] 及びＴ１１[n]は、前述のタイムアウト値Ｔ１１[x]に相当する。ここで、タイムアウト値Ｔ１１[n-1]及びＴ１１[n]における、［］内のｎ−１及びｎは、ホスト２０−１とストレージ装置１０とが接続された回数を表す。
【００５３】
まず、ホスト２０−１とストレージ装置１０とが接続され、これによりホスト２０−１とストレージ装置１０とが接続された回数がｎ−１となったものとする。このとき、イニシエータテーブル１３８には、ホスト２０−１に対応付けてタイムアウト値Ｔ１１[n-1]が格納されているものとする。この場合、調整部１３６は、タイムアウト値Ｔ１１[n-1]を、タイムアウト値１５１として、タイマ１３０に設定する。なお、タイマ１３１へのタイムアウト値の設定については後述する。
【００５４】
タイマ１３０は、前述の第１の時点ｔ１から経過時間を計測する。このタイマ１３０によって第１の時点ｔ１から第２の時点ｔ２までに計測された経過時間ｔ２−ｔ１をｔ[n-1]とする。タイムアウト値Ｔ１１[n-1]の示す時間をＴ１１[n-1]とする。上記計測された経過時間ｔ[n-1]は、前述したようにモニタ結果取得部１３２によって取得されて、モニタ結果保持部１３４に保持される。
【００５５】
調整部１３６は、取得された経過時間ｔ[n-1]とタイムアウト時間Ｔ１１[n-1]とを平均した時間（平均時間）Ｔ１１[n]を、次式
Ｔ１１[n] = (Ｔ１１[n-1] + ｔ[n-1]) / ２(n ≧ 2)
に従って算出する。
【００５６】
平均法では、平均時間Ｔ１１[n]を示す値が、ホスト２０−１とストレージ装置１０との次の接続時のタイムアウト値Ｔ１１[n]として用いられる。そのため調整部１３６は、ホスト２０−１に対応付けてイニシエータテーブル１３８に格納されているタイムアウト値をＴ１１[n-1]からＴ１１[n]に更新する。なお、ｎが２の場合のタイムアウト値Ｔ１１[n-1]、つまりタイムアウト値Ｔ１１[1]（Ｔ１１[ｘ]＝Ｔ１１[１]）は、最初の接続時に用いられ、例えば１ｍｓである。タイムアウト値Ｔ１１[1]の示す時間Ｔ１１[1]は、図６に示されるＴ１に相当する。
【００５７】
次に、経過時間t[n-1]がタイムアウト時間Ｔ１１[n-1]を超えるタイムアウトが発生した場合を想定する。この場合、調整部１３６は、タイムアウト値Ｔ１１[n-1]を定数倍、例えば１.２倍する。調整部１３６は、１.２倍された値を、次の接続時のタイムアウト値Ｔ１１[n]とする。
【００５８】
具体的に図６を参照して説明する。以下の説明では、ホスト２０−１とストレージ装置１０との接続を前提としている。まず、１回目の接続時においてタイムアウトは発生しなかったものとする。この場合、調整部１３６は、Ｔ１１[1]＝Ｔ１（＝１ｍｓ）とｔ[1]との平均値Ｔ１１[2]を計算する。調整部１３６は、現在イニシエータテーブル１３８に保持されているＴ１１[1]をＴ１１[2]に更新する。これにより、２回目の接続の開始時には、Ｔ１１[2]がタイムアウト値１５１としてタイマ１３０に設定される。つまりタイムアウト値１５１が調整される。
【００５９】
２回目及び３回目の接続時においてもタイムアウトは発生しなかったものとする。この場合、調整部１３６は、１回目の接続時と同様に、平均値を計算することにより、３回目及び４回目の接続時に使用されるＴ１１[3]及びＴ１１[4]を逐次取得する。調整部１３６は、Ｔ１１[3]を取得した場合には、イニシエータテーブル１３８に保持されている元のＴ１１[2]を当該Ｔ１１[3]に更新する。これにより、３回目の接続の開始時には、Ｔ１１[3]がタイムアウト値１５１としてタイマ１３０に設定される。また調整部１３６は、Ｔ１１[4]を取得した場合には、イニシエータテーブル１３８に保持されている元のＴ１１[3]を当該Ｔ１１[4]に更新する。これにより、４回目の接続の開始時には、Ｔ１１[4]がタイムアウト値１５１としてタイマ１３０に設定される。
【００６０】
４回目の接続では、タイムアウトが発生している。したがって、前述したように、５回目の接続時に使用されるＴ１１[5]は、Ｔ１１[4]を定数倍した値に設定される。例えば、定数倍の値が１．２であれば、Ｔ１１[5]＝Ｔ１１[4]×１．２である。
【００６１】
図６において、ホスト２０−１の接続回数は５回に限らない。また、１回目の接続時に使用されるＴ１１[1]＝Ｔ１は、１ｍｓに限らない。
【００６２】
以上のようなタイムアウト値調整方法（平均法）を適用する第１の実施形態によれば、タイムアウトが発生しない限り、接続を繰り返すに従い、タイマ１３０に設定されるタイムアウト値１５１は小さくなる。したがって、タイムアウトが発生した場合に、ホスト２０−１が接続を占有する時間を短くすることが可能である。
【００６３】
［第２の実施形態］
次に第２の実施形態について説明する。  
第１の実施形態と同様の構成や機能については説明を省略する。  
第２の実施形態では、第１の実施形態で適用された第１のタイムアウト値調整法（平均法）とは異なる、第２のタイムアウト値調整法（加減算法）を用いる。具体的に、その加減算法について図７を参照しながら説明する。図７は、図６と同様の形式で、加減算法を説明するための図である。
【００６４】
まず、例えばホスト２０−１とストレージ装置１０とが接続されており、その接続回数がｎ−１であるものとする。また、このｎ−１回目の接続時においてタイムアウトが発生しなかったものとする。つまり、ｔ２の時点で、タイマ１３０が計測した経過時間が、ｎ−１回目の接続時に設定されたタイムアウト値Ｔ１１[n-1]の示す時間を超えなかったものとする。この場合、調整部１３６は加減算法を適用し、設定されたタイムアウト値Ｔ１１[n-1]から、一定の値を減算する。これとは逆に、タイムアウトが発生した場合、調整部１３６は、タイムアウト値Ｔ１１[n-1]に、一定の値を加算する。加減算法では、この減算または加算された値が、次のｎ接続時のタイムアウト値Ｔ１１[n]として用いられる。
【００６５】
具体的に図７を参照して説明する。１回目の接続時において、タイムアウトは発生していない。したがって、前述したように、調整部１３６は、Ｔ１１[1]から一定の値を減算した値Ｔ１１[2]を計算する。調整部１３６は、現在イニシエータテーブル１３８に保持されているＴ１１[1]＝Ｔ２（＝１ｍｓ）を、その計算された値Ｔ１１[2]に更新する。これにより、２回目の接続の開始時には、Ｔ１１[2]がタイムアウト値１５１としてタイマ１３０に設定される。つまりタイムアウト値１５１が調整される。
【００６６】
また、２回目の接続時においても、１回目の接続時と同様にタイムアウトが発生していない。したがって、１回目の接続時と同様に３回目の接続の開始時のタイムアウト値１５１は、Ｔ１１[2]から一定の値を減算した値Ｔ１１[3]となる。
【００６７】
３回目の接続時において、タイムアウトが発生している。したがって、前述したように、調整部は、Ｔ１１[3]に一定の値を加算する。この場合、イニシエータテーブル１３８に保持されているＴ１１[3]は、加算されたＴ１１[4]に更新される。そして、４回目の接続の開始時において、調整部１３６はＴ１１[4]をタイムアウト値１５１としてタイマ１３０に設定する。  
図７において、ホスト２０−１の接続回数は５回に限らない。また、１回目の接続時に使用されるＴ１１[1]＝Ｔ２は、１ｍｓに限らない。
【００６８】
なお、上述の加減算法において用いられる一定の値は、必要に応じて変更することができる。ここで現在用いられている一定の値をＴとする。もし、タイムアウトが発生する可能性を現在よりも低くしたいならば、一定の値としてＴよりも小さな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が小さくなるためである。
【００６９】
逆に、現在よりもタイムアウトが発生する可能性が高くなったとしても、例えばホスト２０−１が接続を占有する時間を短くしたいならば、一定の値としてＴよりも大きな値を使用するとよい。その理由は、加減算によって調整されるタイムアウト値の変化量が大きくなるためである。
【００７０】
以上のように、タイムアウト値調整方法（加減算法）を適用する第２の実施形態によれば、簡単な計算でタイムアウト値を調整できる。また、前述した一定の値を目的に応じた値に適宜変更することで効果的なタイムアウト値の調整ができる。
【００７１】
［第３の実施形態］
次に第３の実施形態について説明する。  
第２の実施形態と同様に、第１の実施形態と同様の構成または機能については説明を省略する。  
第３の実施形態の特徴は、タイムアウト値の調整に第３のタイムアウト調整法（最大値法）を使用する点にある。以下、ホスト２０−１とストレージ装置１０との接続を例に、図８及び図９を参照して最大値法について説明する。
【００７２】
第３の実施形態で適用される最大値法では、予め定められた複数回の接続が完了するまでは、タイムアウト値の調整は行われない。つまり、タイムアウト値の調整を開始する前に、予め定められた複数回の接続のそれぞれにおいて、前述したようなｔ１からｔ２までの経過時間t[n-1]（ｎ＝２，３，４，…）がサンプリングされる。これにより、複数のサンプリング結果が取得される。この取得された複数のサンプリング結果の最大値が、予め定められた複数回の接続よりも後の接続における、タイムアウト値として用いられる。第３の実施形態において、予め定められた複数回は、１００回である。また第３の実施形態では、タイムアウトが発生した場合には、第１の実施形態と同様に、その時点におけるタイムアウト値が定数倍される。
【００７３】
もし、第３の実施形態と異なって、１回目の接続が完了した後に、当該１回目の接続でサンプリングされた経過時間が次回の接続時のタイムアウト値として用いられるものとする。この場合、１回目の接続時にサンプリングされた経過時間が短かった場合、２回目の接続において、タイムアウトが発生する可能性が高くなる。
【００７４】
これに対して第３の実施形態では、複数回（１００回）の接続のそれぞれでサンプリングされた経過時間の最大値が、次回の接続時におけるタイムアウト値として用いられる。このように、サインプリング数を増やすことにより、複数のサンプリング結果の最大値は、当該複数のサンプリング結果の傾向を十分に表している。つまり複数のサンプリング結果の最大値は、ホスト２０−１とストレージ装置１０との間の接続時における上述の経過時間の傾向を十分に表している。この最大値を次回の接続時におけるタイムアウト値として用いことにより、次回以降（ここでは、１０１回目以降）の接続時にタイムアウトが発生する可能性を低くすることができる。
【００７５】
具体的に図８を参照して説明する。図８は、ホスト２０−１とストレージ装置１０との間の１００回の接続における、各接続時のｔ[n-1]のサンプリング結果を示す図である。
【００７６】
このサンプリングは次のように行われる。タイマ１３０が、ホスト２０−１とストレージ装置１０との間の１００回の各接続において、ｔ１からｔ２までの経過時間を計測する。モニタ結果保持部１３４は、その計測結果をモニタ結果として保持する。調整部１３６は、そのモニタ結果に基づいて、１０１回目の接続時に用いられるタイムアウト値を決定する。
【００７７】
図８のｔ[1]乃至ｔ[100]は、タイマ１３０が計測した経過時間を示している。調整部１３６は、ｔ[1]乃至ｔ[100]の中で最大の値を示すｔ[7]＝Ｔ３を、１０１回目の接続時に用いられるタイムアウト値に決定する。
【００７８】
また、調整部１３６は、ｔ[1]乃至ｔ[100]の平均値Ｔ４を、１０１回目の接続時に用いられるタイムアウト値とすることもできる。つまり、最大値法において、複数のサンプリングを行う場合、１０１回目の接続時に用いられるタイムアウト値の決定方法が２つある。第１は、１００個のサンプリング値の最大値Ｔ３を用いる方法である。第２は、１００個のサンプリング値の平均値Ｔ４を用いる方法である。  
以上のように、１００回の接続のサンプリング期間を設けて、１０１回目の接続時に使用されるタイムアウト値が算出される。
【００７９】
次に、この算出されたタイムアウト値Ｔ３またはＴ４を用いた、１０１回目以降の接続における、タイムアウト値調整について、図９を参照しながら説明する。  
図９は、ホスト２０−１とストレージ装置１０との間の１０１回目乃至１０５回目の接続における、タイムアウト値調整を、図６及び図７と同様の形式で説明するための図である。
【００８０】
図９のＴ５として、上述したＴ３またはＴ４が用いられるものとする。  
１０１回目の接続において、タイムアウトは発生していない。したがって、１０１回目に設定されたタイムアウト値Ｔ１１[101]＝Ｔ５が、そのまま、１０２回目のタイムアウト値Ｔ１１[102]になる。
【００８１】
１０２回目の接続においても、タイムアウトは発生していない。したがって、１０２回目に設定されたタイムアウト値Ｔ１１[102]が、そのまま、１０３回目のタイムアウト値Ｔ１１[103]になる。
【００８２】
１０３回目の接続において、タイムアウトが発生している。この場合、調整部１３６は、１０３回目に設定されたタイムアウト値Ｔ１１[103]を定数倍した値を計算する。その計算結果が、１０４回目の接続時に設定されるタイムアウト値Ｔ１１[104]になる。
【００８３】
１０４回目の接続において、タイムアウトは発生していない。したがって、調整部１３６は、１０５回目の接続時に用いられるタイムアウト値Ｔ１１[105]に、１０４回目の接続時に設定されたタイムアウト値Ｔ１１[104]を、そのまま適用する。
【００８４】
以上のように、第３の実施形態では最大値法を用いてタイムアウト値が調整される。  
また、最大値法において、複数回の接続にまたがるサンプリング期間を設けることで効果的にタイムアウト値を調整することができる。例えば、１００回の接続で得られたサンプリングの結果の最大値を１０１回目の接続のタイムアウト値に設定することで、１０１回目以降の接続においてタイムアウトする可能性を低くすることができる。また、１００回の接続で得られたサンプリングの結果の平均値を１０１回目の接続時のタイムアウト値に設定することで、１０１回目以降の接続においてタイムアウトが発生した場合に、ホスト２０−１が接続を占有する時間を短くすることができる。
【００８５】
さらに、タイムアウトが発生した際に用いられる定数倍の値（定数値）は、目的に応じた値に適宜変更することが可能である。したがって、この定数値を大きくすることで、タイムアウトが発生した以降の接続において、タイムアウトが発生する可能性を低くすることができる。また、定数値を小さくすることで接続の占有時間を短くすることができる。
【００８６】
なお、上述したようなサンプリング回数は複数であればよく、１００回に限らない。また、上述した定数値は、例えば１．３であるが、これ以外の値でもよい。
【００８７】
前記第１の実施形態の第３の動作例（図５参照）では、ストレージ装置１０に送信すべきデータフレームがホスト２０−１内に残されているにも拘わらずに、ホスト２０−１とストレージ装置１０との接続が切断される。このような現象の発生を極力防止するために、上述したタイムアウト値１５１の調整と同様に、タイムアウト値１５２を調整することも可能である。つまり、モニタ結果取得部１３２がタイマ１３１の状態をモニタすることにより、時点ｔ１から時点ｔ３までの経過時間をモニタ結果として取得する。調整部１３６は、取得された少なくとも１つのモニタ結果に基づいて、ホスト２０−１とストレージ装置１０とが接続された際に用いられる、タイムアウト値１５２を調整する。より詳細には調整部１３６は、タイムアウト値１５２として用いられた、ホスト２０−１に対応付けてイニシエータテーブル１３８に格納されているタイムアウト値Ｔ２１[y]を調整する。この調整されたタイムアウト値Ｔ２１[y]をタイムアウト値１５２として用いることによって、ホスト２０−１による一連のデータフレームの送信が完了した後に上記接続を切断することが可能になる。
【００８８】
以上、ホスト２０−１とストレージ装置１０との接続において、タイマ１３０及び１３１にそれぞれタイムアウト値１５０及び１５１として用いられるタイムアウト値Ｔ１１[x]及びＴ２１[y]を調整する方法について説明した。この調整方法は、ホスト２０−２，２０−３または２０−４とストレージ装置１０との接続において用いられるタイムアウト値の調整にも同様に適用できる。
【００８９】
最後に、第１乃至第３の実施形態で共通に適用されるイニシエータテーブル１３８について、図１０を用いて詳しく説明する。  
まず、ホスト２０−１〜２０−４のそれぞれに関して、上述のｔ１からｔ２までの経過時間及びｔ１からｔ３までの時間は、異なる可能性が高い。したがって、上述したようなタイムアウト値の最適値は、ホスト毎に異なる。そこで、ホスト毎にタイムアウト値を格納する必要がある。
【００９０】
図１０は、イニシエータテーブル１３８のデータ構造例を示した図である。イニシエータテーブル１３８は、図１に示されるホスト２０−１，２０−２，２０３及び２０−４にそれぞれ対応した領域１３８−１、１３８−２、１３８−３、１３８−４から構成される。
【００９１】
ホスト２０−１に対応した領域１３８−１について具体的に説明する。領域１３８−１は、複数のレジスタ、例えば第０乃至第８のレジスタから構成されている。領域１３８−１の第０乃至第８のレジスタには、ホスト２０−１に関する管理情報が格納されている。管理情報は、例えば、ＳＡＳアドレス及び２つのタイムアウト値を含む。
【００９２】
図１０の例では、ホスト２０−１に対応する領域１３８−１の第７及び第８レジスタに、前述したタイムアウト値Ｔ１１[x]及びＴ２１[y]に相当するタイムアウト値Ｔ１１及びＴ２１が格納されている。ホスト２０−１とストレージ装置１０とが接続される場合、この領域１３８−１の第７及び第８レジスタに格納されているタイムアウト値Ｔ１１及びＴ２１が、それぞれ、タイマ１３０及び１３１に設定される。ホスト２０−２〜２０−４に対応した領域１３８−２〜１３８−４についても、ホスト２０−１に対応した領域１３８−１と同様である。
【００９３】
このように、ホスト２１−ｉ（ｉ＝１〜４）に対応したイニシエータテーブル１３８内の領域に当該ホスト２１−ｉに対応したタイムアウト値（より詳細には、調整されたタイムアウト値）が格納される。これにより、ホスト２１−ｉがストレージ装置１０と接続する毎に、当該ホスト２１−ｉに適した調整済みのタイムアウト値をリアルタイムに使用することが可能である。
【００９４】
第１乃至第３の実施形態によれば、ホストとストレージ装置との接続が確立した時点ｔ１から接続確立後に最初のフレームが受信された時点ｔ２までの経過時間に基づいてタイムアウト値が調整される。これにより、ホストに適したタイムアウト値にリアルタイムに調整でき、接続が確立しているにも関わらずに最初のフレームがホストから送信されない場合にも、効果的にタイムアウトを発生できる。また第１乃至第３の実施形態によれば、ホストとストレージ装置との接続が確立した後、データフレームの送信に時間を要する場合にも、効果的にタイムアウトを発生できる。
【００９５】
以上説明した少なくとも１つの実施形態によれば、接続が確立しているにも関わらずに最初のフレームがホストから送信されないような状況においても、効果的にタイムアウトを発生可能とする、ホストに適したタイムアウト時間を設定することができるインタフェースコントローラ、ストレージ装置及びタイムアウト時間設定方法を提供できる。
【００９６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００９７】
１０・・・ストレージ装置、２０−１〜２０−４・・・ホスト、１１・・・記憶部、１３・・・ＳＡＳコントローラ、３１・・・ＳＡＳバス、１３０・・・タイマ（第１のタイマ）、１３１・・・タイマ（第２のタイマ）、１３２・・・モニタ結果取得部、１３４・・・モニタ結果保持部、１３６・・・調整部、１３８・・・イニシエータテーブル、１４０・・・ＳＡＳバスインタフェース（接続切断手段）、１４２・・・ストレージインタフェース、１５１・・・タイムアウト値（第１のタイムアウト値）、１５２・・・タイムアウト値（第２のタイムアウト値）。
【図１】
2012128560.tif 000003
【図２】
2012128560.tif 000004
【図３】
2012128560.tif 000005
【図４】
2012128560.tif 000006
【図５】
2012128560.tif 000007
【図６】
2012128560.tif 000008
【図７】
2012128560.tif 000009
【図８】
2012128560.tif 000010
【図９】
2012128560.tif 000011
【図１０】
2012128560.tif 000012