(57)【特許請求の範囲】
【請求項１】
ＳＡＳコントローラ装置であって、
プロセッサと、
前記プロセッサに接続され、ポート及びＰＨＹのコンフィギュレーション情報を記憶する不揮発性のメモリと、
前記プロセッサに接続された複数のＰＨＹであって、各々がＳＡＳデバイスに接続される複数のＰＨＹと、
コンピュータにより実行可能なプログラムコードであって、
前記プロセッサにおいて実行され、前記複数のＰＨＹのうち少なくとも１つのＰＨＹを自動的にコンフィギュレーションし、
前記メモリにＰＨＹコンフィギュレーション情報を記憶し、
１又は複数のＰＨＹの状態変更イベントが生じた場合に、前記メモリに記憶されたＰＨＹコンフィギュレーション情報に基づき、該ＰＨＹを再度コンフィギュレーションする
ように構成されたプログラムコードと
を備えることを特徴とするＳＡＳコントローラ装置。
【請求項２】
請求項１に記載のＳＡＳコントローラ装置において、１又は複数のＰＨＹに接続されているＳＡＳデバイスは、該１又は複数のＰＨＹへの接続を解放し、該１又は複数のＰＨＹに接続されているＳＡＳデバイスが存在していない場合に、該１又は複数のＰＨＹへの接続を回復するよう構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項３】
請求項１に記載のＳＡＳコントローラ装置において、前記プログラムコードはさらに、
複数のＰＨＹの１つのＰＨＹに関連するデータ構造内に、該１つのＰＨＹが自動的にコンフィギュレーションされたことを示すデータ要素を設定し、
該１つのＰＨＹに関連するデータ構造内に、該１つのＰＨＹが動的ポートグループのメンバであることを示す動的ポートグループ情報を記憶し、
該１つのＰＨＹが少なくとも１つのポートのメンバであることを示すように、該ポートに関連するデータ構造内のデータ要素を設定し、
ポートコントローラに関連するデータ構造内に、該少なくとも１つのポートがポートコントローラに関連づけられていることを示すデータ要素を設定し、
該１つのＰＨＹに関連するハードウェアリンクエイリアスに関連するデータ構造内に、該１つのＰＨＹが、メンバとしてPHYを有している少なくとも１つのポートに関連づけられていることを示すデータ要素を設定する
よう構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項４】
請求項１に記載のＳＡＳコントローラ装置において、前記プログラムコードはさらに、
メンバとしてＰＨＹを有していない少なくとも１つのポートに対してポートコントローラを割り当て、
複数のＰＨＹのうちの１つのＰＨＹに関連するデータ構造体内に、該１つのＰＨＹが自動的にコンフィギュレーションされたことを示すデータ要素を設定し、
該１つのＰＨＹに関連するデータ構造体内に、該１つのＰＨＹが動的ポートグループのメンバであることを示す動的ポートグループ情報を記憶し、
データ構造体内に、該１つのＰＨＹがある動的ポートグループのメンバであることを示すデータ要素を設定し、
該少なくとも１つのポートに関連するデータ構造体内に、該１つのＰＨＹが該少なくとも１つのポートのメンバであることを示すデータ要素を設定し、
ポートコントローラに関連するデータ構造体内に、少なくとも１つのポートが該ポートコントローラに接続されていることを示すデータ要素を設定し、
１つのＰＨＹに関連するハードウェアリンクエイリアスに関連するデータ構造体内に、該１つのＰＨＹが、該ＰＨＹをメンバとして有している少なくとも１つのポートに関連づけられたことを示すデータ要素を設定する
ように構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項５】
請求項１に記載のＳＡＳコントローラ装置において、前記プログラムコードがさらに、
複数のＰＨＹのうち１又は複数のＰＨＹに状態の変更があったかどうかを判断し、
複数のＰＨＹのうちの１つのＰＨＹがアクティブであるかどうかを判断し、
該１つのＰＨＹが自動的にコンフィギュレーションされたかどうかを判断する
ように構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項６】
請求項５に記載のＳＡＳコントローラ装置において、前記プログラムコードがさらに、
ＳＡＳアドレスを記憶しているデータ要素からＳＡＳアドレスを消去し、
非アクティブで、かつ自動的にコンフィギュレーションされた１つのＰＨＹを参照するように構成されたハードウェアリンクエイリアスを、ある無効値に設定する
ように構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項７】
請求項５に記載のＳＡＳコントローラ装置において、前記プログラムコードがさらに、
アクティブでありかつ自動的にコンフィギュレーションされた１つのＰＨＹを、複数のＰＨＹの別のＰＨＹであって、自動的にコンフィギュレーションされかつ状態変更イベントが生じた別のＰＨＹと比較し、
該１つのＰＨＹと該別のＰＨＹが単一のＳＡＳデバイスに接続されているかどうかを判断する
ように構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項８】
請求項７に記載の装置において、前記プログラムコードがさらに、
新規ポートを生成し、
前記１つのＰＨＹ及び別のＰＨＹが同一のＳＡＳデバイスに接続されておらずかつ同一のポートに関連づけられている場合に、該１つのＰＨＹを新規ポートに関連づける
よう構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項９】
請求項７に記載のＳＡＳコントローラ装置において、前記プログラムコードがさらに、
同一の動的ポートグループ内において異なるポートに接続され、かつ同一のＳＡＳデバイスに関連づけられた前記１つのＰＨＹ及び前記別のＰＨＹが同一のポートに関連づけられるように、該１つのＰＨＹのコンフィギュレーション情報を修正し、
前記１つのＰＨＹに関連するデータ構造体内に、該１つのＰＨＹが更にリセットオペレーションを必要としていることを示すデータ要素を設定する
よう構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項１０】
請求項７に記載のＳＡＳコントローラ装置において、前記プログラムコードがさらに、
同一の動的ポートグループ内において異なるポートに関連づけられ、かつ同一のＳＡＳデバイスに接続される前記１つのＰＨＹ及び前記別のＰＨＹが、同一のポートに接続されるように、前記別のＰＨＹのコンフィギュレーション情報を修正し、
該別のＰＨＹに関連するデータ構造体内に、該別のＰＨＹが更にリセットオペレーションを必要としていることを示すデータ要素を設定する
ように構成されていることを特徴とするＳＡＳコントローラ装置。
【請求項１１】
ＳＡＳコントローラにおいてＰＨＹを設定する方法であって、
前記ＳＡＳコントローラにおいて少なくとも１つのポートを初期化するステップと、
前記ＳＡＳコントローラにおいて少なくとも１つのポートコントローラを初期化するステップと、
前記少なくとも１つのポートがメンバとしてＰＨＹを有していることを判断するステップと、
前記少なくとも１つのポートを前記ＰＨＹに関連づけるステップと、
前記少なくとも１つのポートコントローラを前記少なくとも１つのポートに関連づけるステップと、
前記ＰＨＹに関連するコンフィギュレーション情報を記憶するステップと、
前記ＰＨＹに関連するコンフィギュレーション情報を記憶した後に発生する状態変更イベントに応じて、記憶された前記ＰＨＹに関連するコンフィギュレーション情報に基づくコンフィギュレーション状態に、前記ＰＨＹを戻すステップと
を含むことを特徴とする方法。
【請求項１２】
請求項１１に記載の方法において、該方法は更に、
前記ＰＨＹに関連するデータ構造体内に、前記ＰＨＹが自動設定されたことを示すデータ要素を設定するステップと、
前記ＰＨＹがある動的ポートグループのメンバであることを示す動的ポートグループ情報を、該ＰＨＹに関連するデータ構造体内に記憶するステップと、
データ構造体内に、前記ＰＨＹがある動的ポートグループのメンバであることを示すデータ要素を設定するステップと、
前記少なくとも１つのポートに関連するデータ構造体内に、前記ＰＨＹが前記少なくとも１つのポートのメンバであることを示すデータ要素を設定するステップと、
ポートコントローラに関連するデータ構造体内に、前記少なくとも１つのポートが前記ポートコントローラに関連づけされていることを示すデータ要素を設定するステップと、
前記ＰＨＹに関連するハードウェアリンクエイリアスに関連するデータ構造体内に、前記ＰＨＹが前記少なくとも１つのポートに関連づけられていることを示すデータ要素を設定するステップと
を含み、前記少なくとも１つのポートは、メンバとして複数のＰＨＹを有していることを特徴とする方法。
【請求項１３】
請求項１１に記載の方法において、該方法は更に、メンバとしてＰＨＹを有していない少なくとも１つのポートに前記ポートコントローラを割り当てるステップを含むことを特徴とする方法。
【請求項１４】
請求項１２に記載の方法において、該方法は更に、
前記ＰＨＹに関連するデータ構造体内に、前記ＰＨＹが自動的にコンフィギュレーションされたことを示すデータ要素を設定するステップと、
前記ＰＨＹがある動的ポートグループのメンバであることを示す動的ポートグループ情報を、前記ＰＨＹに関連するデータ構造体内に記憶するステップと、
データ構造体内に、前記ＰＨＹがある動的ポートグループのメンバであることを示すデータ要素を設定するステップと、
前記少なくとも１つのポートに関連するデータ構造体内に、前記ＰＨＹが前記少なくとも１つのポートのメンバであることを示すデータ要素を設定するステップと、
前記ポートコントローラに関連するデータ構造体内に、前記少なくとも１つのポートが前記ポートコントローラに関連づけられていることを示すデータ要素を設定するステップと、
前記ＰＨＹに関連するハードウェアリンクエイリアスに関連するデータ構造体内に、前記ＰＨＹが前記少なくとも１つのポートに関連づけられていることを示すデータ要素を設定するステップと
を含むことを特徴とする方法。
【請求項１５】
ＳＡＳコントローラにおいてＰＨＹを再コンフィギュレーションする方法であって、
前記ＰＨＹがアクティブであるかどうかを判断するステップと、
前記ＰＨＹが自動設定されているかどうかを判断するステップと、
前記ＰＨＹに関連するコンフィギュレーション情報を記憶するステップと、
記憶された前記ＰＨＹに関連するコンフィギュレーション情報に基づき、前記ＰＨＹをコンフィギュレーション状態に戻すステップと
を含み、前記ＰＨＹに関連するコンフィギュレーション情報が記憶された後に、前記ＰＨＹの状態変更イベントが生じていることを特徴とする方法。
【請求項１６】
請求項１５に記載の方法において、該方法は更に、
ＳＡＳアドレスを記憶するように構成されたデータ要素からＳＡＳアドレスを消去するステップと、
前記ＰＨＹを参照するように構成されるハードウェアリンクエイリアスを、ある無効値に設定するステップ
を含み、前記ＰＨＹは、非アクティブでありかつ自動的にコンフィギュレーションされることを特徴とする方法。
【請求項１７】
請求項１５に記載の方法において、該方法は更に、
前記ＰＨＹと、自動的にコンフィギュレーションされ、かつ状態変更イベントが生じた別のＰＨＹとを比較するステップと、
前記ＰＨＹと前記別のＰＨＹが単一のＳＡＳデバイスに接続されているかどうかを判断するステップと
を含み、前記ＰＨＹは、アクティブであり、かつ自動的にコンフィギュレーションされることを特徴とする方法。
【請求項１８】
請求項１７に記載の方法において、該方法は更に、
新規ポートを生成するステップと、
前記ＰＨＹを前記新規ポートに接続するステップと
を含み、前記ＰＨＹと前記別のＰＨＹは、同一のＳＡＳデバイスに接続されておらず、かつ同一のポートに関連づけられていることを特徴とする方法。
【請求項１９】
請求項１７に記載の方法において、該方法は更に、
前記１つのＰＨＹ及び前記別のＰＨＹが、同一の動的ポートグループ内において異なるポートに関連づけられかつ同一のＳＡＳデバイスに接続される場合に、前記１つのＰＨＹ及び前記別のＰＨＹが同一のポートに関連づけられるように、前記１つのＰＨＹのコンフィギュレーション情報を修正するステップと、
前記１つのＰＨＹに関連するデータ構造体内に、前記１つのＰＨＹが別のリセットオペレーションを必要としていることを示すデータ要素を設定するステップと
を含むことを特徴とする方法。
【請求項２０】
請求項１７に記載の方法において、該方法は更に、
前記１つのＰＨＹ及び前記別のＰＨＹが、同一の動的ポートグループ内において異なるポートに関連づけられ、かつ同一のＳＡＳデバイスに接続される場合に、前記１つのＰＨＹ及び前記第２のＰＨＹが同一のポートに関連づけられるように、前記別のＰＨＹのコンフィギュレーション情報を修正するステップと、
前記別のＰＨＹに関連するデータ構造体内に、前記別のＰＨＹが別のリセットオペレーションを必要としていることを示すデータ要素を設定するステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおけるマルチコンピュータデータ送信、及びデジタル処理システムに関係し、具体的には、ネットワーク内のＳＡＳコントローラに関係する。
【背景技術】
【０００２】
小型コンピュータシステムインターフェース（ＳＣＳＩ）は、コンピュータと周辺機器との間の接続やデータの送信を物理的に行うための基準及びプロトコルである。ＳＣＳＩは、コンピュータをハードドライブやテープドライブ等の記憶装置に接続する際に最も一般的に使用されている。シリアル接続ＳＣＳＩ（ＳＡＳ）は、ＳＣＳＩの基準及びプロトコルを使用して、コンピュータの記憶装置においてデータの移動を行うコンピュータバスである。
【０００３】
ＳＡＳコントローラは、複数の両方向ＳＡＳ接続ポイント（ＰＨＹ：物理層）を有する装置である。ＰＨＹとは、電気的に物理リンクをインターフェースでつなぎ、データを暗号化するプロトコルの一部を実行し、リセットシーケンスを管理するトランシーバである。ＳＡＳコントローラの各ＰＨＹは、ＳＡＳデバイスに接続される。各ＰＨＹは、その各ＰＨＹが接続されているＳＡＳデバイスとの間で通信を行うハードウェアを有している。ＰＨＹは、特定のＰＨＹに接続されているＳＡＳデバイスに接続するためのプロセスを簡素化し容易にするため、複数のポートに編成される。例えば、１つのＳＡＳデバイスを複数のＰＨＹによりＳＡＳコントローラに接続し、これらのＰＨＹを単一のポート（ワイドポート）に接続することにより、共通のポートを基にしてＳＡＳデバイスへのアクセスが行われるようにする。これにより、ポートの帯域幅を増大する。また、ＳＡＳコントローラは、すべてのＰＨＹに関して効率的に負荷バランシングを行う。
【０００４】
ＳＡＳコントローラは、各ＰＨＹの設定を手動で行うようにすることができるが、初期設定に時間がかかり、面倒なプロセスになってしまう。さらに、システムのトポロジを変更する場合も同様に時間のかかる面倒なプロセスとなり、人為的エラーが起こりやすくなる。いくつかのＳＡＳコントローラは、自動的にポート及びＰＨＹを設定する機能を有している。そのため、人為的エラーを排除することができ、また、システムはトポロジの変更を簡単に取り入れることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＳＡＳデバイスにおいては、場合によって、電源遮断、再起動（再ブート）、初期化（リセット）が起こり、又はＳＡＳコントローラへの接続が遮断されることがある。デバイスは、ＳＡＳデバイスへの接続を断たれたＰＨＹに接続されているポートからの情報の送信又は取得を行う際に、重大なエラーに直面することになる。ポート及びＰＨＹの自動設定を行う機能を有するＳＡＳコントローラは、システムのトポロジの変更として接続が断たれたことを認識し、接続を失ったＰＨＹに接続されているポートの動作を停止する。この対応により、接続が断たれているＳＡＳデバイスにその他のデバイスがアクセスすることを防ぐ。しかし、ＳＡＳデバイスがＳＡＳコントローラに再度接続するときは、ＳＡＳデバイスへの接続を必要とする他のデバイスが認識するポートとＳＡＳデバイスの接続が断たれてしまう。
【課題を解決するための手段】
【０００６】
本発明は、接続されたＳＡＳデバイスの再起動、パワーサイクル及びチップのリセットにおいて、一貫したＳＡＳポートコンフィギュレーションを維持する方法及び装置を提供する。該装置は、複数のＰＨＹ、プロセッサ及び不揮発性メモリを有するＳＡＳコントローラである。ＳＡＳコントローラは、ＳＡＳデバイスとＰＨＹの接続が断たれた場合でも、ＳＡＳデバイスが同じＰＨＹに再度接続される可能性があることを予測して、ＰＨＹコンフィギュレーションデータ構造内のＰＨＹコンフィギュレーション情報を不揮発性メモリに記憶する。
【０００７】
一貫したＳＡＳポートコンフィギュレーションを維持する方法には、ＰＨＹコンフィギュレーションデータ構造に関連するＰＨＹからＳＡＳデバイスが非接続状態となった場合に、ＰＨＹコンフィギュレーションデータ構造からＳＡＳデバイスのＳＡＳアドレスを消去し、その他のデバイスがＰＨＹを介してＳＡＳデバイスと通信を行わないように、ＰＨＹに関連するリンクエイリアスを無効値に設定する。ただし、ＳＡＳデバイスのＳＡＳアドレスは、ポートコンフィギュレーションデータ構造に記憶される。
【０００８】
ＳＡＳデバイスが同じＰＨＹに再接続された場合、例えば、ＳＡＳデバイスはパワーサイクルを完了し、ＳＡＳコントローラはＰＨＹコンフィギュレーションデータ構造及びポートコンフィギュレーションデータ構造に記憶されている情報を使用して、ＰＨＹの自動コンフィギュレーションを再度行う。ＳＡＳコントローラは、ＰＨＹと自動的にコンフィギュレーションされたその他のＰＨＹとを比較して、ＰＨＹが矛盾するコンフィギュレーション情報を有しないようにする。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態のフローチャートである。
【図２】本発明の別の実施形態のフローチャートである。
【図３】図１及び図２に示した方法に基づき構成されたＳＡＳコントローラの構造を示す図である。
【図４】図１及び図２に示した方法を実行するためのＳＡＳコントローラのブロック図である。
【発明を実施するための形態】
【００１０】
以下に、図を参照して本発明を詳細に説明する。なお、本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、多くの代替物、変形物、及び、均等の範囲の物を含む。本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、ここでは詳細には説明しない。
【００１１】
図１を参照すると、ＳＡＳコントローラの初期設定（初期コンフィギュレーション）を行う方法に関する動作の例を示している。該方法は、ＳＡＳコントローラ内のプロセッサによって行う。ＳＡＳコントローラは、１以上のポートに編成された１以上のＰＨＹで構成される。各ポートはポートコンフィギュレーションデータ構造により表され、各ＰＨＹはＰＨＹコンフィギュレーションデータ構造により表される。ステップ１００において、ＳＡＳコントローラは初めに、ＳＡＳコントローラに接続されているポートが既に初期化されているかを判断する。ポートが初期化されている場合、そのポートの初期設定を行う方法を実行する必要はなく、該方法は終了する。
【００１２】
ポートが初期化されていない場合、ＳＡＳコントローラは、予め設定された値を各ポートコンフィギュレーションデータ構造の要素に割り当てることにより、すべてのポートを初期化する（ステップ１０２）。予め設定された値は、ＳＡＳコントローラ内のメモリに記憶されているコンフィギュレーションデータから導出することができる。ＳＡＳコントローラは、１以上のポートコントローラを初期化する（ステップ１０４）。ポートコントローラは、ＳＡＳデバイスに関連するＳＡＳアドレスを示す。各ポートコントローラは、ポートコントローラコンフィギュレーションデータ構造により表される。次に、ＳＡＳコントローラは、コンフィギュレーション（環境設定）を行うＰＨＹがあるかどうかを判断する（ステップ１０６）。コンフィギュレーションを行うＰＨＹがない場合、ＳＡＳコントローラは、初期ポートコンフィギュレーションが完了したことを示す内部フラグを設定し（ステップ１０８）、これにより方法は終了する。
【００１３】
コンフィギュレーションを行うＰＨＹがある場合、ＳＡＳコントローラは、各ＰＨＹを順次処理し、適切なポートに追加する。初めは、ＳＡＳコントローラに記憶されているコンフィギュレーションデータに基づき、ポートとＰＨＹが接続される。ステップ１１０において、ＳＡＳコントローラは、各イテレーション（反復処理）において、各ＰＨＹに接続されているポートが既に、既存のＰＨＹと接続しているかを判断する。ポートが既存のＰＨＹに接続されていない場合、ＳＡＳコントローラは、ポートにポートコントローラを割り当てる（ステップ１１２）。
【００１４】
次に、ＳＡＳコントローラは、ＳＡＳコントローラ内に記憶されているコンフィギュレーションデータに基づき、ＰＨＹを自動又は手動的にコンフィギュレーションするかを判断する（ステップ１１４）。ＰＨＹを自動でコンフィギュレーションする場合、ＳＡＳコントローラは、ＰＨＹを自動的にコンフィギュレーションすることを示すフラグを、ＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造内に設定する（ステップ１１６）。ＳＡＳコントローラは、ＳＡＳコントローラに記憶されるコンフィギュレーションデータに基づき、ＰＨＹコンフィギュレーションデータ構造内の動的ポートグループを表す値を記憶する（ステップ１１８）。ＳＡＳコントローラは、動的ポートグループを表すグローバルデータ構造のデータ要素を設定する（ステップ１２０）。データ要素は、ＰＨＹがその動的ポートグループに属することを示している。
【００１５】
他方、ＰＨＹが手動設定される場合、ＳＡＳコントローラは、ＰＨＹが手動で設定されることを示すフラグを、該ＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造内に設定する（ステップ１２２）。自動設定されたＰＨＹ及び手動設定されたＰＨＹの両方に関して、ＳＡＳコントローラは、ＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造内のデータ要素にポート番号を記録し、また、ポートコンフィギュレーションデータ構造にＰＨＹがポートのメンバであることを示すデータを記録することにより、接続されているポートのメンバとしてＰＨＹを追加する（ステップ１２４）。具体的には、ＳＡＳコントローラは、コートコンフィギュレーションデータ構造のビットマスクメンバに、該ＰＨＹを表すビットを設定する。
【００１６】
また、ＳＡＳコントローラは、ポートコントローラに関連するポートコントローラコンフィギュレーションデータ構造にポート番号を記憶することにより、ポートコントローラとポートを接続する（ステップ１２６）。ＳＡＳコントローラは、特にＰＨＹに関連するＳＡＳコントローラハードウェア内のデータ要素を、ポートを一意的に識別する値に設定することにより、ＰＨＹとポートとを関連づける（ステップ１２８）。
最後に、ＳＡＳコントローラは、ＰＨＹに関連付けられたポート及び動的ポートグループ等のＰＨＹコンフィギュレーション情報を記憶する（ステップ１３０）。ＳＡＳコントローラの各ＰＨＹについて、同様のプロセスが行われる。
【００１７】
上述の方法により、ＳＡＳコントローラは、ＳＡＳコントローラに記憶されるコンフィギュレーションデータに基づき、初期状態に設定される。ＳＡＳコントローラは、手動設定されたＰＨＹと自動設定されたＰＨＹをサポートするが、手動設定されたＰＨＹを自動設定されたＰＨＹと同じポートに接続することはできない。なぜなら、システムのトポグラフィの変更により自動設定されたＰＨＹは変更されるが、手動設定されたＰＨＹには同様の変更が反映されず、互換性のないポートを割り当てる結果となるからである。
【００１８】
図２は、ＳＡＳコントローラのメモリ内に記憶されているコンフィギュレーションデータに基づきＳＡＳコントローラの初期設定が行われた後に状態が変更された際に、ＳＡＳコントローラを再度自動設定する方法に関する動作を例示している。状態変更イベントは、ＳＡＳコントローラのＰＨＹの状態が変更されることで、例えば、ＳＡＳデバイスがＰＨＹに接続されること又はその接続が遮断されること、ＰＨＹに接続されているＳＡＳデバイスの再起動又は電源遮断等がある。状態変更イベントが生じると、ＳＡＳコントローラは、ＳＡＳコントローラが再コンフィギュレーションを必要としていることを示す内部フラグを設定する。フラグは、状態変更イベントについてＰＨＹを監視するプロセスの分岐を可能とし、また、状態変更があった場合にＰＨＹを再コンフィギュレーションするプロセスを実行可能にする。ＳＡＳコントローラは、次に、本発明の方法を実行する。
【００１９】
ＳＡＳコントローラは初めに、ＳＡＳコントローラが再設定を必要としていることを示す内部フラグを設定する（ステップ２００）。ＳＡＳコントローラは、各イテレーションの開始前に、処理を行うＰＨＹがあるかどうかを判断し（ステップ２０２）、ＳＡＳコントローラの各ＰＨＹを反復的に処理する。処理される各ＰＨＹに関して、ＳＡＳコントローラは、ＰＨＹリンクが現在アクティブであるかどうかを判断する（ステップ２０４）。ＰＨＹリンクは、ＰＨＹがデータを送信及び受信することのできるＳＡＳデバイスに接続されている場合にアクティブである。ＰＨＹリンクがアクティブである場合、ＳＡＳコントローラは、次のＰＨＹに進むことができる。ＰＨＹリンクがアクティブでない場合、ＳＡＳコントローラは、ＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造にＳＡＳアドレスを記憶するデータ要素を消去する（ステップ２０６）。
【００２０】
ＳＡＳアドレスは、ＰＨＹに接続されるＳＡＳデバイスのアドレスである。ＳＡＳコントローラにおいて１つのＳＡＳデバイスが複数のＰＨＹに接続されている場合、各ＰＨＹに関連する各ＰＨＹコンフィギュレーションデータ構造に記憶されるＳＡＳアドレスは同一である。ＳＡＳアドレスを記憶するデータ要素が一度消去されると、ＳＡＳコントローラは、ＰＨＹが自動設定又は手動設定されているかどうかを判断する（ステップ２０８）。ＰＨＹが手動設定されている場合、ＳＡＳコントローラは次のＰＨＹに進む。ＰＨＹが自動設定されている場合、ＳＡＳコントローラは、特にＰＨＹに関連するＳＡＳコントローラハードウェアのデータ要素を無効値に設定する（ステップ２１０）。ただし、ＰＨＹコンフィギュレーションデータ構造は現状のまま維持される。ＰＨＹコンフィギュレーションデータ構造を維持することにより、ＰＨＹとの接続が断たれたＳＡＳデバイスが再度接続された場合に、ＰＨＹを同一のポート及び／又は動的ポートグループの設定に再設定することができる。ＳＡＳコントローラは、それぞれのＰＨＹの処理が完了するまで、次のＰＨＹに進む。
【００２１】
ＳＡＳコントローラのすべてのＰＨＹが一度処理されると、ＳＡＳコントローラにより各ＰＨＹが初期化され、ＳＡＳコントローラに接続されるその他のＳＡＳデバイスがＰＨＹコンフィギュレーションへの変更を確認することができるようになる。ＳＡＳコントローラは、各ＰＨＹを初期化するための処理を繰り返す（ステップ２１２）。ＳＡＳコントローラは、各ＰＨＹが自動設定又は手動設定されているかを判断する（ステップ２１４）。ＰＨＹが手動設定されている場合、ＳＡＳコントローラは次のＰＨＹに進む。ＰＨＹが自動設定されている場合、ＳＡＳコントローラは、ＰＨＹがアクティブであるかどうかを判断する（ステップ２１６）。ＰＨＹがアクティブでない場合、ＳＡＳコントローラは次のＰＨＹに進む。ＰＨＹがアクティブの場合、ＳＡＳコントローラは、その他に自動設定されたＰＨＹがあるかどうかを判断する（ステップ２１８）。次に、ＳＡＳコントローラは、ＰＨＹ（第１のＰＨＹ）と自動設定されたその他の各ＰＨＹを反復的に比較する。ＳＡＳコントローラは、第１のＰＨＹと、自動設定されたその他のＰＨＹとしてリストアップされた各ＰＨＹ（第２のＰＨＹ）を比較するが、これは、第１のＰＨＹがリスト上の自動設定されたその他のＰＨＹのすべてと比較されるまで行われる。
【００２２】
ＳＡＳコントローラは、まず、第２のＰＨＹがアクティブであるか、及び第２のＰＨＹに関連する状態変更イベントが発生したかどうかを判断する（ステップ２２０）。第２のＰＨＹがアクティブでない場合、又は第２のＰＨＹに関連する状態変更イベントが発生していない場合、ＳＡＳコントローラは、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。そうでなければ、ＳＡＳコントローラは、それぞれのＰＨＹコンフィギュレーションデータ構造内の各ＰＨＹのＳＡＳアドレスを記憶するデータ要素を比較し、又は各ＰＨＹに接続されるＳＡＳデバイスに直接情報を問い合わせることにより、第１のＰＨＹと第２のＰＨＹが同一のＳＡＳアドレスを有しているかどうかを判断する（ステップ２２２）。
【００２３】
第１のＰＨＹと第２のＰＨＹのＳＡＳアドレスが異なる場合、ＳＡＳコントローラは、第１のＰＨＹと第２のＰＨＹが同一のポートに割り当てられているかどうかを判断する（ステップ２２４）。第１のＰＨＹと第２のＰＨＹが同一のポートに割り当てられていない場合、ＳＡＳコントローラは、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。第１のＰＨＹ及び第２のＰＨＹが同一のポートに割り当てられている場合、ＳＡSコントローラは、新規ポートを生成し、新規ポートと第１のＰＨＹを関係づける（ステップ２２６）。その後、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。第１のＰＨＹ及び第２のＰＨＹが同一のＳＡＳアドレスを有している場合、ＳＡＳコントローラは、第１のＰＨＹと第２のＰＨＹが同一の動的ポートグループ内において、異なるポートに接続されているかを判断する（ステップ２２８）。
【００２４】
通常、複数のＰＨＹによりＳＡＳデバイスがＳＡＳコントローラに接続されている場合、各ＰＨＹは、ワイドポートを形成するために、同一のポートに接続される。動的ポートグループは、同一のＳＡＳデバイスを接続するＰＨＹ、及びＳＡＳコントローラが異なるポートに接続されるように構成されたものである。第１のＰＨＹ及び第２のＰＨＹが同一のＳＡＳアドレスを有している場合、これらのＰＨＹは必ず同一のＳＡＳデバイスに接続されている必要がある。したがって、第１のＰＨＹ及び第２のＰＨＹが同一の動的ポートグループに属している場合、これらのＰＨＹは同一のポートに関連づけされている必要がある。このような場合、ＳＡＳコントローラは、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。こうした状況でない場合、第１のＰＨＹ又は第２のＰＨＹのいずれかが、再設定（再コンフィギュレーション）をさらに必要とする。
【００２５】
そして、ＳＡＳコントローラは、第１のＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造におけるデータ要素に基づき行われた前回の再設定のときから、第１のＰＨＹの設定に変更があったかどうかを判断する（ステップ２３０）。変更がなかった場合、ＳＡＳコントローラは、第１のＰＨＹが接続されているポートに第２のＰＨＹを関連づけ（ステップ２３２）、その後、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。第１のＰＨＹに変更があった場合、ＳＡＳコントローラは、より低い番号が付けられているポートにどのＰＨＹが関連づけされているかを判定する（ステップ２３４）。
【００２６】
第１のＰＨＹがより低い番号が付けられているポートに関連づけされていると仮定すると、ＳＡＳコントローラは、第１のＰＨＹが関連づけられているポートを第２のＰＨＹに割り当て（ステップ２４０）、第２のＰＨＹが初期化されるべきことを示すフラグを設定する（ステップ２４２）。一方、第２のＰＨＹがより低い番号が付けられているポートに関連づけされている場合、ＳＡＳコントローラは、第２のＰＨＹが関連づけられているポートを第１のＰＨＹに割り当て（ステップ２３６）、第１のＰＨＹが初期化されるべきことを示すフラグを設定する（ステップ２３８）。いずれの場合でも、ＳＡＳコントローラは、その後、第１のＰＨＹのＰＨＹコンフィギュレーション情報を記憶し（ステップ２４４）、第１のＰＨＹと自動設定された次のＰＨＹとの比較に進む。
【００２７】
上記の方法では、より低い番号が付けられているポートが優先される。より低い番号が付けられているポートが優先されるのは、ポート間の衝突を避けるためであり、このような衝突を避けるための決定論的メカニズムを利用することができる。一度ＳＡＳコントローラが反復的にすべてのＰＨＹの再設定を行い、適切にポートの変更を行うと、すべてのＰＨＹコンフィギュレーションデータ構造は、持続型及び不揮発性のメモリ要素に記憶される。この方法により、ＳＡＳコントローラのＰＨＹに関連するポート及び動的ポートグループの情報は、ＳＡＳデバイスの接続が切断され、その後、同一のＰＨＹに再接続された際に、維持及び復元される。この方法は、ＳＡＳコントローラのＰＨＹからＳＡＳデバイスが切断され、その後異なるＳＡＳデバイスが前記のＰＨＹに接続された際に、ＳＡＳコントローラに接続されているＳＡＳデバイスのトポロジへの変更に対応し、ポートに付されている番号及び動的ポートグループの設定は維持されない。
【００２８】
図３及び図４に示すように、本発明に基づくＳＡＳコントローラ４００は、複数のＰＨＹ３０４、３０６、３０８、３１０、３１２及び３１４、プロセッサ４１０、及びプロセッサ４１０と機能的に接続されるメモリ４１２を有している。メモリ４１２は、フラッシュメモリ等の不揮発性メモリの一種である。ＰＨＹは、ＳＡＳコントローラにおいて、第１のターゲット３００及び第２のターゲット３０２等のその他のＳＡＳデバイスを接続する接続点である。ＳＡＳデバイスは、１つ以上のＰＨＹにより、ＳＡＳコントローラに接続される。例えば、第１のターゲット３００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６に接続され、第２のターゲット３０２は第３のＰＨＹ３０８、第４のＰＨＹ３１０、第５のＰＨＹ３１２及び第６のＰＨＹ３１４に接続される。
【００２９】
ＳＡＳコントローラは、通常ＰＨＹをポートに関連づける。ポートは、ＳＡＳデバイスによりデータパケットを特定のＰＨＹではなく、ポートへ送信しかつポートから受信することにより、ＳＡＳコントローラ４００における通信を容易にする構成になっている。ポートは、ＰＨＹよりも高いレベルの通信メカニズムである。単一のＳＡＳデバイスが１つ以上のＰＨＹを介してＳＡＳコントローラ４００に接続されている場合、ＳＡＳコントローラ４００は、ＳＡＳコントローラ４００にＳＡＳデバイスを接続している各ＰＨＹに同じポートを割り当てる。例えば、第１のＰＨＹ３０４及び第２のＰＨＹ３０６は、第１のポート３１６に接続される。しかし、ＳＡＳデバイスとＳＡＳコントローラ４００を接続する複数のＰＨＹを１つ以上のポートに分割することは有益である。
【００３０】
ＳＡＳコントローラ４００は、第１の動的ポートグループ３３４及び第２の動的ポートグループ３３６を、第２のターゲット３０２等のＳＡＳデバイスをＳＡＳコントローラ４００に接続する複数のＰＨＹを分割するために利用する。第１の動的ポートグループ３３４に属する第３のＰＨＹ３０８は、第２のポート３１８に接続される。他方、第２の動的ポートグループ３３６に属する第４のＰＨＹ３１０、第５のＰＨＹ３１２及び第６のＰＨＹ３１４は、第３のポート３２０に接続される。各ポートは、一意的なポートコントローラに接続されている。例えば、第１のポート３１６は、第１のポートコントローラ３２２に、第２のポート３１８は第２のポートコントローラ３２４に、第３のポート３２０は第４のポートコントローラ３２８に接続される。
【００３１】
ＳＡＳコントローラ４００は、ポートに接続されていないポートコントローラを維持する。例えば、第１の動的ポートグループ３３４内の第３のポートコントローラ３２６、ならびに第２の動的ポートグループ３３６内の第５のポートコントローラ３３０及び第６のポートコントローラ３３２は、ＳＡＳコントローラ４００により維持される。関連づけされていないポートは、接続ＳＡＳデバイスのトポロジが変更される際に使用される。ポートコントローラは、ポートコントローラに接続されるポートのＰＨＹに接続されるＳＡＳデバイスのＳＡＳアドレスを含むデータ要素である。ポートコントローラに含まれる情報は、リンクアップで識別情報が送信されたときに使用される。
【００３２】
ＳＡＳコントローラ４００は、すべてのＰＨＹを初期化し、メモリ４１２に記憶される初期コンフィギュレーションデータの一部に基づき、各ＰＨＹをポートに関連づける。初期コンフィギュレーションデータには、手動設定された各ＰＨＹに接続されているポート及び自動設定された各ＰＨＹに関連づけされている動的ポートグループが含まれる。ＳＡＳコントローラ４００は、まず、同じ動的ポートグループ内において、自動設定されたすべてのＰＨＹを同一のポートに関連づけ、該動的ポートグループ内に１つの初期ワイドポートを形成する。次に、ＳＡＳコントローラは、各ＰＨＹの状態変更イベントを監視し、その後、本明細書に記載されている方法及び基準に基づき、新規ポートを生成し、該新規ポートにＰＨＹを適宜関連づける。
【００３３】
第１のターゲット３００等の接続されたＳＡＳデバイスに関して、電源遮断の場合、又は再起動の場合、もしくはＳＡＳコントローラ４００からの接続が遮断された場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６の状態変更イベントを記録する。ＳＡＳコントローラ４００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６の各ＰＨＹコンフィギュレーションデータ構造において、ＰＨＹが再設定（再コンフィギュレーション）を必要としていることを示すフラグを設定する。ＳＡＳコントローラ４００は、ＰＨＹが再設定を必要としていることを示すグローバルフラグも設定する。ＰＨＹコンフィギュレーションデータ構造において自動設定されたＰＨＹのみ、完全な再設定の対象となる。手動設定されたＰＨＹに接続されるポートは、状態変更イベントが発生した場合でも、静的に設定される。
【００３４】
ＳＡＳコントローラ４００は、状態変更イベントが発生したとされるすべてのＰＨＹを再コンフィギュレーションする。本実施例では、ＳＡＳコントローラ４００は、まず、第１のＰＨＹ３０４がアクティブであるかどうかを判断する。第１のＰＨＹ３０４がアクティブでない場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４に関連するＰＨＹコンフィギュレーションデータ構造体に記憶される第１のターゲット３００のＳＡＳアドレスを消去する。次に、第１のＰＨＹ３０４が自動設定される場合、ＳＡＳコントローラ４００は、ＳＡＳデバイスが第１のＰＨＹ３０４を介して第１のターゲット３００と通信することができないように、第１のＰＨＹ３０４に関連するハードウェアリンクエイリアスを無効値に設定する。次に、ＳＡＳコントローラ４００は、第２のＰＨＹ３０６に関しても同様の処理を行う。
【００３５】
その他のＰＨＹの状態変更がされていない場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６を初期化し、各ＰＨＹのＰＨＹコンフィギュレーションデータ構造において、各ＰＨＹが初期化されたことを示すフラグの設定を適切に行う。この場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４は自動設定され、アクティブでないと判断する。第１のＰＨＹ３０４がアクティブでない場合、追加の設定は必要ない。ＳＡＳコントローラは、第２のＰＨＹ３０６に関しても同様の処理を行う。ＳＡＳコントローラは、それぞれのＰＨＹコンフィギュレーションデータ構造に記憶される第１のＰＨＹ３０４及び第２のＰＨＹ３０６に関連するポート及び動的ポートグループの情報のすべてをメモリ４１２に記憶する。状態変更イベントの後にＰＨＹに関連するポート及び動的ポートグループの情報を保存することにより、ＳＡＳコントローラは、同一の１又は複数のＰＨＹに接続されている同一のＳＡＳデバイスが再度アクティブにされるといった状態変更イベントの後に、ＰＨＹを元のコンフィギュレーションに戻す。
【００３６】
電源遮断、再起動又はＳＡＳコントローラ４００への接続が断たれた後に、第１のターゲット３００等の接続されたＳＡＳデバイスがＳＡＳコントローラ４００に再度接続される場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６に状態変更イベントを記録し、これらのＰＨＹが再コンフィギュレーション設定を必要としていることを示す。ＳＡＳコントローラ４００は、ＰＨＹが再コンフィギュレーション設定を必要としていることを示すグローバルフラグも設定する。第１のＰＨＹ３０４及び第２のＰＨＹ３０６が既にアクティブの場合、第１のＰＨＹ３０４及び第２のＰＨＹ３０６に関連するポート及びポートグループの情報は、メモリ４１２のＰＨＹコンフィギュレーションデータ構造に記憶される。
【００３７】
ＳＡＳコントローラ４００は、まず、第１のＰＨＹ３０４がアクティブであるかどうかを判断する。第１のＰＨＹ３０４がアクティブの場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４に関連するＰＨＹコンフィギュレーションデータ構造の第１のターゲット３００のＳＡＳアドレスを記憶し、第１のＰＨＹ３０４に関連するハードウェアリンクエイリアスを、ＰＨＹとポートの接続を示す適切な値に設定する。ＳＡＳコントローラ４００は、第２のＰＨＹ３０６に関しても同様の処理を行う。
【００３８】
次に、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４及び第２のＰＨＹ３０６をリセットし、各ＰＨＹのＰＨＹコンフィギュレーションデータ構造内に、ＰＨＹがリセットされたことを示すフラグの設定を適切に行う。この場合、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４は自動設定され、アクティブであると判断する。ＳＡＳコントローラ４００は、第１のＰＨＹ３０４と自動設定されたその他の各ＰＨＹを比較し、自動設定された複数のＰＨＹのコンフィギュレーションにおけるコンフリクトを特定し、修正する。ＳＡＳコントローラ４００は、第１のＰＨＹ３０４と第２のＰＨＹ３０６を比較した際に、第２のＰＨＹ３０６がアクティブであり、状態変更イベントが生じたと判断する。
【００３９】
ＳＡＳコントローラ４００は、次に、ＳＡＳデバイスのＳＡＳアドレスに基づき、第１のＰＨＹ３０４及び第２のＰＨＹ３０６が同一のＳＡＳデバイスに接続されているかを判断する。第１のＰＨＹ３０４及び第２のＰＨＹ３０６が同一のＳＡＳデバイスに接続されている場合、ＳＡＳコントローラ４００は、各ＰＨＹに関連するＰＨＹコンフィギュレーションデータ構造に記憶されているＰＨＹコンフィギュレーションデータに基づき、第１のＰＨＹ３０４及び第２のＰＨＹ３０６が、同一の動的ポートグループ内で異なるポートに関連づけされているかどうかを判断する。本実施例では、第１のＰＨＹ３０４及び第２のＰＨＹ３０６は、同一の動的ポートグループ内で、同一のポートに接続されている。したがって、第１のＰＨＹ３０４及び第２のＰＨＹ３０６の設定の間にコンフリクトはなく、ＳＡＳコントローラ４００は、第１のＰＨＹ３０４と、第３のＰＨＹ３０８等の自動設定されたその他のＰＨＹとの比較に進む。
【００４０】
第３のＰＨＹ３０８に状態変更イベントが生じていない場合、さらなるコンフィギュレーションは不要である。第４のＰＨＹ３１０、第５のＰＨＹ３１２及び第６のＰＨＹ３１４についても同様である。したがって、非アクティブになり、その後、アクティブにされたＰＨＹを元のポート及び動的ポートグループの設定に戻すために、ＳＡＳコントローラは、複数の状態変更イベントの発生後、ＰＨＹを自動的に再コンフィギュレーションする。
【００４１】
本発明を特定の実施例に基づき説明したが、当業者ならば本発明の範囲内において様々な修正を行うことが可能であることを認識するであろう。したがって、本発明の範囲は前述の説明に限定されるものではない。むしろ、本発明の範囲は、特許請求の範囲及びこれと同等と考えられるすべての範囲に基づき判断されるものである。
【図１】
0005128708.tif 000002
【図２】
0005128708.tif 000003
【図３】
0005128708.tif 000004
【図４】
0005128708.tif 000005