(57)【特許請求の範囲】
【請求項１】
要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法であって、
前記要求元装置と通信するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、初期変更インデックス値をセットするステップと、実施されたポートを識別する初期データ・ベクトルを作成するステップと、前記初期データ・ベクトルに関連して前記変更インデックス値を保管するステップとを含む、ステップと、
後続の構成変更に応答して前記変更インデックスを増分するステップと、
前記後続の構成変更に応答してデータ・ベクトルを作成するステップであって、前記データ・ベクトルが、前記複数のポートのうちで前記後続の構成変更によって影響されるポートのそれぞれを識別する、ステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む方法。
【請求項２】
前記初期化するステップが、さらに、
前記複数のポートの現行構成を判定するステップと、
前記現行構成を記述するポート構成情報を保管するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項２に記載の方法。
【請求項４】
前記後続の構成変更を反映するために前記保管された構成情報を更新するステップと、
前記更新された構成情報を保管するステップと
をさらに含む、請求項２に記載の方法。
【請求項５】
前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項４に記載の方法。
【請求項６】
関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、請求項１に記載の方法。
【請求項７】
前記要求元装置に既知の最新の変更インデックスが、もはや前記スイッチによって保管されていない時に、前記要求元装置が、前記実施されたポートのすべてが構成変更によって影響されたことを知らされる、請求項６に記載の方法。
【請求項８】
前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、請求項８に記載の方法。
【請求項１０】
要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法であって、
前記要求元装置との通信を処理するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、現行ポート構成を判定するステップと、前記現行ポート構成を記述するポート構成情報を保管するステップと、初期変更インデックス値をセットするステップと、実施されたポートを識別する初期データ・ベクトルを作成するステップと、前記初期データ・ベクトルに関連して前記変更インデックス値を保管するステップとを含む、ステップと、
前記ポート構成を変更するステップと、
前記変更されたポート構成を記述するために前記保管されたポート構成情報を更新するステップと、
前記更新されたポート構成情報を保管するステップと、
前記構成変更に応答して前記変更インデックスを増分するステップと、
前記複数のポートのうちで前記構成変更によって影響されたポートのそれぞれを識別するデータ・ベクトルを作成するステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内で構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む方法。
【請求項１１】
前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項１１に記載の方法。
【請求項１３】
関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、請求項１０に記載の方法。
【請求項１４】
前記要求元装置に既知の最新の変更インデックスが、もはや保管されていない時に、前記要求元装置が、前記実施されたポートのすべてが構成変更によって影響されたことを知らされる、請求項１３に記載の方法。
【請求項１５】
前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップ
をさらに含む、請求項１０に記載の方法。
【請求項１６】
前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、請求項１５に記載の方法。
【請求項１７】
入出力ネットワーク交換装置であって、
それぞれが外部データ処理装置と通信することができる、複数の通信ポートと、
前記複数の通信ポート通信し、さらに、要求元装置と通信することができる、スイッチ・プロセッサと、
前記スイッチ・プロセッサからアクセス可能なポート構成ヒストリ・データ構造であって、前記ポート構成ヒストリ・データ構造が、変更インデックス値および変更データ・ベクトルの関連付けられた対を含み、前記関連付けられた対のそれぞれが、ポート構成変更イベントに関係し、前記変更インデックス値のそれぞれが、前記ポート構成ヒストリ・データ構造に、前記関係するポート構成変更イベントに対応するインデックスを与え、前記変更データ・ベクトルのそれぞれが、前記複数の通信ポートのうちで前記関係するポート構成変更イベントによって影響される特定の通信ポートを識別する、ポート構成ヒストリ・データ構造と、
ポート構成変更イベントに応答して、前記変更インデックス値の現行値を１つだけ増分する、増分ユニットと、
前記スイッチ・プロセッサからアクセス可能なポート構成データであって、前記ポート構成データが、ポート構成変更イベントに応答して、それに関連して前記変更データ・ベクトルの１つを作成するために前記スイッチ・プロセッサによって使用され、前記スイッチ・プロセッサが、前記ポート構成ヒストリ・データ構造内の前記関連付けられた対の１つとして、前記増分された変更インデックス値および前記変更データ・ベクトルの前記１つを保管する、ポート構成データと、
構成ヒストリ要約ユニットであって、前記要求元装置からの照会に応答して、前記構成ヒストリ要約ユニットが、前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数の変更データ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを識別する要約ベクトルを作成し、前記要約ベクトルを、前記照会に応答して前記要求元装置へ通信することができる、構成ヒストリ要約ユニットと
を含む装置。
【請求項１８】
前記要求元装置が、ホスト・プロセッサである、請求項１７に記載の装置。
【請求項１９】
前記要求元装置が、第２入出力ネットワーク交換装置である、請求項１７に記載の装置。
【請求項２０】
前記入出力交換装置が、ESCONディレクタである、請求項１７に記載の装置。
【請求項２１】
前記入出力交換装置が、FICONディレクタである、請求項１７に記載の装置。
【請求項２２】
前記要求元装置が、交換ストレージ環境を管理する処理である、請求項１７に記載の装置。
【請求項２３】
前記要求元装置が、ＳＡＮマネージャである、請求項２２に記載の装置。
【請求項２４】
前記外部データ処理装置が、ホスト・プロセッサ、入出力装置コントローラ、およびもう１つの入出力ネットワーク交換装置からなる群から選択される、請求項１７に記載の装置。
【請求項２５】
要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法を実行するために計算機によって実行可能な命令の少なくとも１つのプログラムを有形に実施する、計算機によって可読の少なくとも１つのプログラム記憶装置であって、前記方法が、
前記要求元装置と通信するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、初期変更インデックス値をセットするステップと、前記複数のポートの初期構成に関連して前記変更インデックス値を保管するステップとを含む、ステップと、
後続の構成変更に応答して前記変更インデックスを増分するステップと、
前記後続の構成変更に応答してデータ・ベクトルを作成するステップであって、前記データ・ベクトルが、前記複数のポートのうちで前記後続の構成変更によって影響されるポートのそれぞれを識別する、ステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む、少なくとも１つのプログラム記憶装置。
【請求項２６】
前記初期化するステップが、さらに、
前記複数のポートの現行構成を判定するステップと、
前記現行構成を記述するポート構成情報を保管するステップと
を含む、請求項２５に記載の少なくとも１つのプログラム記憶装置。
【請求項２７】
前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項２６に記載の少なくとも１つのプログラム記憶装置。
【請求項２８】
前記後続の構成変更を反映するために前記保管された構成情報を更新するステップと、
前記更新された構成情報を保管するステップと
をさらに含む、請求項２６に記載の少なくとも１つのプログラム記憶装置。
【請求項２９】
前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、請求項２８に記載の少なくとも１つのプログラム記憶装置。
【請求項３０】
関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、請求項２５に記載の少なくとも１つのプログラム記憶装置。
【請求項３１】
前記要求元装置に既知の最新の変更インデックスが、もはや保管されていない時に、前記要求元装置が、前記複数のポートのすべてが構成変更によって影響されたことを知らされる、請求項３０に記載の少なくとも１つのプログラム記憶装置。
【請求項３２】
前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップをさらに含む、請求項２５に記載の少なくとも１つのプログラム記憶装置。
【請求項３３】
前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、請求項３２に記載の少なくとも１つのプログラム記憶装置。
【請求項３４】
前記スイッチがヒストリ・バッファ特徴をサポートすることを、前記応答の前に前記要求元装置に知らせるステップをさらに含む、請求項２５に記載の少なくとも１つのプログラム記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはコンピュータ・ネットワークおよび通信ネットワークのスイッチ装置（switch device）に関し、具体的には、スイッチ・ポート構成に対する１つまたは複数の変更によって影響を受ける特定のスイッチ・ポートについて要求元装置に知らせる方法、コンピュータ・プログラム装置、および装置に関する。
【０００２】
【従来の技術】
コンピューティング・システム・アーキテクチャの最近の傾向が、ストレージ・エリア・ネットワーク（Storage Area Network、ＳＡＮ）である。ＳＡＮは、ＩＢＭ（登録商標）出版物、表題「Introduction to Storage Area Network, SAN」、ＩＢＭ資料番号ＳＧ２４−５４７０−００、１９９９年８月に記載されており、この出版物は、参照によってその全体を本明細書に組み込まれる。この出版物に記載されているように、ＳＡＮは、「ＬＡＮと比較して高速のネットワークであり、記憶装置とプロセッサの間の直接接続の確立を可能にし、…」。この定義の２つの態様は、さらに説明するに値する。第１に、ＳＡＮは、ローカル・エリア・ネットワーク（local area network、ＬＡＮ）などの標準通信ネットワークに追加して使用されるネットワークである。ストレージ入出力動作が、ＳＡＮを介して行われ、ＬＡＮ上のデータ転送トラフィックが減る。第２に、ＳＡＮは、プロセッサと記憶装置の間の直接接続を可能にし、これによって、特定のプロセッサ専用の記憶装置の必要がなくなる。さらに、これらの直接接続は、入出力サブシステム（Ｓ／３９０（登録商標）アーキテクチャで既知のチャネル・サブシステムなど）によって代替的に達成することができるので、中央プロセッサが、データ転送に関連する重荷からさらに解放される。
【０００３】
ＳＡＮは、上で述べたプロセッサ対ストレージの直接接続を実施するために、ネットワーク・インフラストラクチャを必要とする。そのようなＳＡＮインフラストラクチャを提供することができる装置のタイプの１つを、スイッチと称する。スイッチは、接続された装置の間のどれかからどれかへの接続をオンデマンドで提供できる装置である。スイッチは、通常、外部装置を接続できる複数のポートを備える。スイッチは、任意のポートを他の任意のポートに動的に接続する能力を備え、これによって、接続された装置のどれもが、他の接続された装置と通信できるようになる。スイッチは、装置間の直接接続の達成に使用することができ、また、ネットワーク内のポートの総数を増やすためまたは接続される装置の間の許容可能な物理的距離を増やすために、スイッチをカスケード・トポロジまたはチェーン・トポロジで組み合わせることができる。
【０００４】
当技術分野で既知のＳＡＮスイッチでは、構成が、どの時点でも各ポートに関連する。特定のポートの構成は、そのポートに接続された特定の装置を記述する情報ならびにそのポートに割り当てられた１つまたは複数の接続性属性からなる。接続性属性によって、特定のポートを他のポートとの動的接続の形成に使用できる範囲が決定される。たとえば、ポートを、すべての他のポートとの動的接続に使用可能にすることができる。また、特定のポートを、さまざまな理由から、別のポートとの動的接続を行うのに使用不能にすることができ、そのポートを、別のポートへの専用（静的）接続を有するものとするか、そのポートを、特定の１つまたは複数のポートとの接続に使用不能にするか、そのポートを、すべての他のポートとの接続に使用不能とすることができる。
【０００５】
スイッチ・ポートの構成は、複数の形で変更することができる。スイッチに、プロセッサまたは他のコントローラを含めることができ、このプロセッサまたは他のコントローラを、オペレータ・コンソールに接続することができる。オペレータは、この接続されたオペレータ・コンソールを介してポート構成を変更することができる場合がある。また、１つまたは複数のスイッチ・ポートに接続された１つまたは複数のプロセッサによって、ポート構成を変更することが可能である場合がある。複数のアプリケーションを同時に実行する複数のプロセッサを、特定のスイッチに接続することができるので、単一のスイッチのポート構成を修正できる複数のホスト・アプリケーションが、同時に実行される可能性がある。さらに、ポート構成は、ポートに接続された物理装置に対する変更を介して、またはポートと物理装置の間の接続の変更（リンク障害またはケーブル切断など）を介して、変更される可能性がある。最後に、カスケード接続またはチェーニングされたスイッチを使用する環境では、１つのスイッチのポート構成変更が、別の接続されたスイッチによって開始される場合がある。当業者に明白であるように、非常に多数の要因が特定のスイッチのポート構成変更をもたらす可能性がある環境では、スイッチが、現行ポート構成について接続された装置に知らせる必要がある。本明細書で使用する用語「要求元装置」は、その要求元装置に接続されたスイッチのポート接続に関して問い合わせることができるすべての装置を指す。
【０００６】
当技術分野で既知のスイッチ・システムでは、スイッチが、接続された要求元装置に、２組の情報すなわち、ポート構成詳細と、タイム・スタンプまたはインデックス値とを交換することによって現行スイッチ・ポート構成を提供する。要求元装置は、将来の参照のためにポート構成詳細に関連してインデックス値を保管する。スイッチは、インデックス値を増分するか最新の構成変更を示す情報を保管することなどによって、後続のポート構成変更を追跡する。要求元装置が、ポート構成変更の開始を試みるか、ポート構成に依存する他の処置を講ずる時に、要求元装置は、まず、スイッチに照会して、要求元装置がそのスイッチの現行構成を保管したか否かを判定する。これを達成するために、要求元装置は、スイッチに、要求元装置に既知またはそれに保管された最新のポート構成詳細に関連するタイム・スタンプまたはインデックス値を提供する。この値（タイム・スタンプまたはインデックス）が、スイッチに保管された現行値と一致する場合に、要求元装置は、最新のポート構成情報を有し、したがって、ポート構成変更を始めるか、ポート構成に依存する他の処置を講ずることができる。しかし、値が一致しない場合には、要求元装置が最後にそのポート構成データを更新した後に、少なくとも１つのポート構成変更が行われた。要求元装置は、現行ポート構成の変更を試みる前に、またはポート構成に依存する他の処置を講ずる前に、現行ポート構成を確立しなければならない。
【０００７】
当技術分野で既知のスイッチ・システムでは、スイッチが、単に、要求元装置が現行ポート構成情報を有するか否かについて要求元装置に知らせる。「キー」と称する値を交換することによって実施される、そのような方式が、本願と同一の譲受人に譲渡された、参照によってその全体を本明細書に組み込まれる米国特許第５２９７２６２号に記載されている。要求元装置が、現行ポート構成を有しない場合に、要求元装置は、どのポート属性が変更されたかを示す情報を有しないので、そのスイッチ内のすべてのポートに関するポート構成情報を完全にリフレッシュする。したがって、要求元装置のプロセッサは、１つのポートの構成属性だけが変更された場合であっても、そのポート構成データの完全なリフレッシュにかかわる。要求元プロセッサ（１つまたは複数）に、現行であると同時に有効なポート構成情報をリフレッシュさせることは、貴重なプロセッサ・リソースの浪費になる傾向を有する。具体的に言うと、多数のポートを含むスイッチ内の個々のポートの属性に対して頻繁な変更が行われる情況では、複数の接続されたプロセッサに、未変更のポートに関する構成情報をリフレッシュさせることが、時間を消費し、非常に非効率的になる。ホスト・プロセッサ・リソースの非効率的な使用のほかに、スイッチ・プロセッサが、接続された要求元装置のそれぞれのデータ・リフレッシュ処理にかかわるので、そのようなシステムでは、スイッチ・プロセッサ・リソースも非効率的に使用される。多数の接続された装置が、頻繁なポート構成更新を要求する場合には、スイッチ・プロセッサ・リソースが、システム・ボトルネックになる可能性がある。
【０００８】
したがって、前述の理由から、当技術分野には、要求元装置がそのローカル・ポート構成データを更新しなければならない特定のポートを要求元装置が判定するのに十分な情報をスイッチが要求元装置に供給できるようにする方法、装置、およびコンピュータ・プログラム製品の必要がある。
【０００９】
【発明が解決しようとする課題】
したがって、本発明の目的は、接続されたスイッチに対応するポート構成テーブルを装置が更新する効率の改善を可能にすることである。
【００１０】
本発明のもう１つの目的は、スイッチ内で、単一ポート構成変更イベントによって影響を受ける特定の１つまたは複数のポートを示すデータ構造を提供することである。本発明のもう１つの目的は、同一のスイッチ内で、一連の最新のポート構成変更イベントを表す一連のデータ構造を提供することである。
【００１１】
本発明のもう１つの目的は、それを介して要求元装置が現行ポート構成に関してスイッチに照会でき、さらに、それを介して、要求元装置がその保管されたポート構成データを更新しなければならないすべてのポートについて、スイッチが要求元装置に知らせることができる、一連の通信プロトコルを提供することである。
【００１２】
本発明のさまざまな実施形態によってみたされる所望の目的のリストの詳述は、これらの目的の一部またはすべてが、個別であれ集合的であれ、本発明の最も一般的な実施形態またはより具体的な実施形態のいずれかでの本質的特徴として存在することを暗示または提案することを意図されていない。
【００１３】
【課題を解決するための手段】
本発明は、要求元装置がそのローカル・ポート構成データを更新しなければならない特定のポートを要求元装置が判定するのに十分な情報をスイッチが要求元装置に供給できるようにする方法、装置、およびコンピュータ・プログラム装置を対象とする。具体的に言うと、本発明は、要求元装置が使用可能な最後の更新以降に構成変更によって影響を受けた特定のポートについて要求元装置に知らせることによって、処理効率を改善する。この形で、要求元装置は、変更された特定のポートに関する詳細なポート構成情報をリフレッシュでき、要求元装置に既に既知の構成情報をリフレッシュする必要がなくなる。
【００１４】
本発明の好ましい実施形態では、スイッチが、スイッチ・ポート構成属性に対して１つまたは複数の変更が行われるたびに、インデックス値またはキー値などのタイム・スタンプ・インジケータを増分する。構成変更イベント（configuration change event）（または単に変更イベント（change event））が、それによって１つまたは複数のスイッチ・ポートの構成属性が変更される特定のインスタンスとして定義される。インデックス値によって、変更イベントの表現が提供され、各変更イベントは、単一のインデックス値によって表される。各インデックス値は、したがって、その間に１つまたは複数のポートの構成が変更される特定の変更イベントを表す。各変更イベントが発生する時に、スイッチが、変更データ・ベクトル（change data vector）などの、構成変更イベントによって影響される特定のスイッチ・ポートを示すデータ構造を作成する。変更データ・ベクトル（本明細書では「データ・ベクトル（data vector）」とも称する）は、特定の構成変更イベントに対応するキー値またはインデックス値に関連して、テーブル内または配列内などで、保管される。インデックス値とデータ・ベクトルの関連する対のそれぞれが、特定の変更イベントと、その特定の変更イベントによって影響される１つまたは複数のポートを表すテーブル・レコードを形成する。キー値またはインデックス値は、テーブルへのインデックスを提供し、スイッチは、テーブルを検索して特定のインデックス値を突き止めることができる。インデックス値は、経時的にリサイクルすることができるが、どの時点でも、テーブル内に保管されるすべてのインデックス値が、一意であり、そのような保管されたインデックス値のそれぞれが、単一の特定の変更イベントに対応する。テーブルに保管された特定のキー値またはインデックス値に対応し、したがってその特定のキー値またはインデックス値によって表される特定の構成変更イベントに対応して、関連するデータ・ベクトルが、インデックス値によって表される特定の変更イベントによって変更されたポートの表示を提供する。要求元装置がスイッチに照会する時に、スイッチに保管された現行インデックス値が、要求元装置に既知の最新のインデックス値と比較される。値が一致しない場合には、スイッチが、関連するインデックス値および変更データ・ベクトルの保管されたテーブルを使用することによって、変更された特定のポートについて要求元装置に知らせることができる。
【００１５】
本発明の好ましい実施形態では、変更データ・ベクトルに、一連のビットが含まれ、各ビットが、１つのスイッチ・ポートを表す。各データ・ベクトルは、インデックス値と共にテーブルに保管される。値の対（インデックスおよびデータ・ベクトル）のそれぞれが、テーブル・レコードを形成し、各テーブル・レコードは、特定のポート構成変更イベントに対応する。特定のデータ・ベクトル内で、各ビットの値が、そのビットによって表されるポートがその特定のデータ・ベクトルによって表される構成変更イベントによって影響されたかどうかを示す。変更イベントごとに１レコードの、一連のそのようなテーブル・レコード（インデックスおよびデータ・ベクトル）を作成し、保管することによって、スイッチが、構成変更イベントおよびそれによって影響された特定のポートのヒストリ（history）を要約したテーブルを作成する。このヒストリ要約テーブル（history summary table）が、１つまたは複数の構成変更イベントによって影響されるポートについて要求元装置に知らせるのにスイッチが使用する基本的な情報が提供される。
【００１６】
本発明の好ましい実施形態では、要求元装置に既知の最新のインデックスが、スイッチに保管された現行インデックス値と異なる（これによって、１つまたは複数のポートが変更されたことが示される）とスイッチが判定する時に、スイッチは、ヒストリ要約ベクトル（history summary vector）を作成し、要求元装置に返す。ヒストリ要約ベクトルは、構造において変更データ・ベクトルに似ており、それぞれに、一連のビットが含まれ、各ビットが、１つのスイッチ・ポートを表す。要約ベクトルは、１つの重要な態様において変更データ・ベクトルと異なり、要約ベクトルは、一連の変更イベントによって影響されたポートを表し、各データ・ベクトルは、１つの特定の変更イベントによって影響されたポートを表す。これに関して、ヒストリ要約ベクトルは、要求元装置がそのポート構成情報を最後に更新した時以降の時間の間に構成が変更されたポートの要約を表す。
【００１７】
本発明の好ましい実施形態では、要求元装置がスイッチに照会する時に、要求元装置が、その要求元装置に既知の最新のインデックス値をスイッチに渡す。また、好ましい実施形態では、スイッチが、後続の処理で使用するためにこのインデックスを保管する。具体的に言うと、要求元装置がスイッチに渡すインデックス値が、スイッチに保管された現行インデックス値と一致しない場合に、スイッチが、要求元装置からの保管されたインデックス値を１つ増分した値を使用して、要約ベクトルの作成を開始する。
【００１８】
本発明の実用的な実施形態では、ヒストリ要約テーブルに、有限の個数の構成変更イベントを表す有限の個数のレコードを保管することができる。本発明の好ましい実施形態では、ヒストリ要約テーブルに、最新の変更イベントに対応するレコードが保存され、より新しいレコードを保管するための必要に応じて、最も古い変更イベントに対応するレコードが破棄される。これらの情況の下では、要求元装置に既知の最新のインデックス値が、ヒストリ要約テーブルにもはや保管されいないことがありえる。本発明の好ましい実施形態では、スイッチが、すべての実施されたポートの構成が変更された可能性があることを要求元装置に知らせることによって、この情況を処理する。本明細書で使用する、スイッチの特定のモデルまたはタイプに関する実施されたポートの組は、サポート可能な（実施された）ポートのすべてが使用中または物理的にインストールされているか否かに無関係に、スイッチのその特定のモデルによってサポート可能なポートの完全な組である。
【００１９】
本発明の好ましい実施形態では、スイッチが、ESCON（登録商標）ディレクタであり、要求元装置が、ホスト・プロセッサである。代替実施形態では、スイッチを、FICON（商標）ディレクタとするか、ＳＡＮ環境などの交換入出力ネットワーク内の他のスイッチとすることができる。また、代替実施形態では、カスケード接続またはチェーニングされたスイッチ・トポロジが使用され、この場合に、要求元装置をスイッチとすることができる。
【００２０】
本発明とみなされる主題を、具体的に指摘し、本明細書の請求項で個別に請求する。しかし、本発明は、編成および実践の方法の両方に関して、そのさらなる特徴および長所と共に、添付図面に関して以下の説明を参照することによって最もよく理解することができる。
【００２１】
【発明の実施の形態】
本発明の好ましい実施形態によれば、ネットワーク・スイッチが、接続された要求元装置に、要求元装置に既知の最新のポート構成以降に発生する１つまたは複数の構成変更によって影響される特定のスイッチ・ポートについて知らせる。
【００２２】
環境
本発明の諸態様を組み込まれ、使用するコンピューティング環境の１実施形態を、図１に関して説明する。このコンピューティング環境には、プロセッサ１００が含まれ、プロセッサ１００には、複数の中央処理装置１０６（ＣＰＵ）が含まれる。プロセッサ１００に、プロセッサ・メモリ１０４と外部入出力装置１５２の間の入出力動作を処理するチャネル・サブシステム１０２が含まれることが好ましい。好ましいコンピューティング環境では、チャネル・サブシステム１０２が使用されるが、本発明は、プロセッサ１００がチャネル・サブシステム１０２を使用するか否かから独立である。チャネル・サブシステム１０２には、複数のチャネル１０５が含まれ、各チャネルは、外部入出力装置１５２との接続を形成することができる。図１の好ましい実施形態では、各チャネル１０５が、ケーブル１５５を介して、スイッチ１３５内の複数のポート１１０の１つに接続される。本発明の好ましい実施形態では、スイッチ１３５が、IBM ESCONディレクタまたはFICONディレクタであるが、代替実施形態では、スイッチ１３５を、任意のストレージ・ネットワーク・スイッチング装置とすることができる。ポート１１０には、ケーブル１６０を介して、複数の入出力装置制御ユニット（ＣＵ）１５０も接続される。各ＣＵ１５０には、１つまたは複数のホスト・アダプタ１６５が含まれ、このホスト・アダプタ１６５に、ケーブル１６０が接続される。スイッチ１３５には、さらに、スイッチ・ポートの間の接続１４４を形成することができるスイッチ・マトリックス１４２（図２に図示）が含まれる。接続１４４は、例示のみのために図示されており、スイッチ・マトリックス１４２は、どのような形でも、図１に示された接続１４４だけの形成に制限されない。実際、本発明の好ましい実施形態では、スイッチ・マトリックス１４２が、任意の装置のポート１１０を任意の他の装置のポート１１０に動的に接続することができ、これによって、プロセッサ１００とＣＵ１５０の間の動的な任意の接続がもたらされる。各ＣＵ１５０は、直接アクセス記憶装置（ＤＡＳＤ）などの１つまたは複数の外部入出力装置１５２を制御する。好ましい実施形態では、スイッチ１３５に、特殊なポート１２５を介してスイッチ・マトリックス１４２と通信するスイッチ制御ユニット（ＣＵ）１３０も含まれる。好ましい実施形態では、スイッチ１３５が、IBM ESCONディレクタまたはFICONディレクタであり、ポート１２５を、スイッチ制御ユニット・ポート（Switch Control Unit Port、ＣＵＰ）と称する。FICONインターフェースは、ＩＢＭ出版物、表題「Fiber Channel Connection (FICON) I/O Interface, Physical Layer」、ＩＢＭ資料番号ＳＡ２４−７１７２−０２、２０００年１０月、および「Introduction to IBM S/390 FICON」、ＩＢＭ資料番号ＳＧ２４−５１７６−００、１９９９年１０月に記載されており、これらの資料の両方が、参照によってその全体を本明細書に組み込まれる。
【００２３】
本発明の好ましい実施形態では、スイッチ１３５が、第１世代のＳＡＮであるIBM ESCONディレクタ（ＥＳＣＤ）である。ＥＳＣＤ装置は、ＩＢＭ出版物、表題「IBM ESCON Director 9032-5 Presentation」、ＩＢＭ資料番号ＳＧ２４−２００５−００、１９９９年９月、および「Planning for the 9032 Model 5 Director with FICON Converter Feature」、ＩＢＭ資料番号ＳＡ２２−７４１５−０１、１９９９年８月に記載されており、この両方が、参照によってその全体を本明細書に組み込まれる。この資料に注記されているように、IBM ESCONディレクタ（ＥＳＣＤ）スイッチは、任意のポートを任意の他のポートに接続する能力と共に、２４８個までの外部ポートと、最大１２４個の同時アクティブ接続を提供する。ＥＳＣＤスイッチは、各ポートに接続された装置ならびにどのポートを他のポートに接続できるか否かを定義する接続属性の組を記憶する。任意の特定のスイッチ１３５の特定の接続属性は、本発明の趣旨および範囲から逸脱せずに、数および定義の両方を変更することができる。たとえば、ＥＳＣＤスイッチを用いると、複数の接続属性の１つを各ポートに割り当てることができ、たとえば、あるポートをブロックする（他のポートと接続できない）、あるポートを別のポートへの接続専用にする（したがって、異なるポートとの動的接続を形成できない）、あるポートに、別の特定のポートへの接続を禁止する、または、あるポートに、すべての使用可能ポートとの接続を許可することができる。ＥＳＣＤスイッチは、ポート接続属性の現行の組によって定義される制約の範囲内で、ポートの間の動的接続を管理する。ａ）各ポートに接続された装置、およびｂ）各ポートの接続属性を含む情報の組を、ポート構成と称する。一般に、接続属性には、類似するまたは異なる特性を含めることができ、接続属性は、どのような形でも、好ましい実施形態に関して本明細書で説明する特定の接続属性に制限されない。本発明の教示は、使用される特定の接続属性およびそのような接続属性の数のいずれにも無関係に適用される。本明細書で使用する用語「ポート構成」および「ポート状況」は、同義であり、交換可能に使用することができる。
【００２４】
ＥＳＣＤなどのスイッチのポート構成は、複数の形で変更することができる。ＥＳＣＤには、スイッチＣＵ１３０が含まれ、スイッチＣＵ１３０は、しばしばオペレータ・コンソールに接続される。ポート構成は、ＥＳＣＤ  ＣＵに接続されたコンソールを介してオペレータが変更することができる。また、１つまたは複数のスイッチ・ポートに接続された装置プロセッサ上で稼動するアプリケーションが、ポート構成に対する変更を開始することができる。複数のアプリケーションを同時に実行する複数のプロセッサを、特定のスイッチに接続することができるので、単一のスイッチのポート構成を変更することができる複数のホスト・アプリケーションが、並列に動作している可能性がある。さらに、ポート構成は、ポートに接続された物理装置に対する変更を介して、または、ポートと物理装置の間の接続の変更（リンク障害またはケーブル切断など）を介して、変更される可能性がある。最後に、カスケード接続またはチェーニングされたスイッチを使用する環境では、１つのスイッチのポート構成変更が、別の接続されたスイッチによって開始される可能性がある。当業者に明白であるように、多数の要因が特定のスイッチのポート構成変更をもたらす可能性がある環境では、スイッチが、現行ポート構成について接続された装置に知らせる必要がある。
【００２５】
図２に、スイッチ１３５の追加の詳細を示す。具体的に言うと、図２には、ポート１１０の現在の構成に関する情報を保管するのに使用される、スイッチ・メモリ１４０と、ハード・ディスク（ＨＤＤ）などの不揮発性メモリ１４５が示されている。一般に、そのような記憶装置は、スイッチＣＵ１３０の一部とするか、スイッチＣＵ１３０に接続されたオペレータ・コンソール（図示せず）の一部とするか、この両方とすることができる。一般に、１つの形態のストレージだけが必要であるが、好ましい実施形態には、図示のように２つの形態のストレージすなわち、高速のローカルなスイッチ・メモリ１４０と、おそらくは不揮発性であり、通常はＨＤＤである、より低性能だが不揮発性の不揮発性メモリ１４５が含まれる。スイッチ１３５がIBM ESCONディレクタである好ましい実施形態では、不揮発性メモリ１４５が、接続されたオペレータ・コンソール（図示せず）のＨＤＤである。
【００２６】
スイッチ・データのフィールド
図９に、本発明の好ましい実施形態のデータ・フィールドを示す。これらのデータ・フィールドは、スイッチ１３５内またはスイッチ１３５からアクセス可能な、スイッチ・メモリ１４０または不揮発性メモリ１４５などの１つまたは複数の記憶装置に保管される。これらのデータ・フィールドには、変更インデックス値であるキー・カウンタ３００、ヒストリ・バッファ項目の最大個数３０５、現行ヒストリ・バッファ項目インデックス３１０、ディレクタ・ヒストリ・バッファ３１５、およびヒストリ・ベース・レジスタ３３０が含まれ、ディレクタ・ヒストリ・バッファ３１５には、複数のヒストリ・バッファ項目３１７が含まれ、各ヒストリ・バッファ項目には、インデックス項目３２０および変更ベクトル３２５が含まれる。本明細書で使用する用語「変更インデックス値」は、スイッチが特定の構成変更イベントを識別するのに使用するタイム・スタンプ標識の包括的な用語である。スイッチ１３５としてIBM ESCONディレクタまたはFICONディレクタを使用する本発明の好ましい実施形態では、変更インデックス値をキー・カウンタ３００と称する。したがって、好ましい実施形態に関して本明細書で使用される包括的な用語「変更インデックス値」およびより具体的な用語「キー・カウンタ」は、同義であり、交換可能に使用することができる。
【００２７】
キー・カウンタ３００は、スイッチ１３５内で維持される４バイト（３２ビット）フィールドである。キー・カウンタ３００は、プロセッサ１００上で稼動するアプリケーションなどの接続された装置が、どのESCONディレクタ・ポート構成パラメータ（ポート情報ブロック（ＰＩＢ）、ポート・アドレス名、ホスト・データ・バッファ、またはモード・レジスタに含まれる情報）が変更されたかを判定できるようにする機構を提供する。これらのパラメータは、参照によってその全体を本明細書に組み込まれる、「Programming the Interface for Enterprise Systems Connection Directors with FICON Converter Feature」、ＳＡ２３−０３５６−０６、１９９９年９月で文書化されている。スイッチ１３５は、１つまたは複数の構成パラメータが変更されるたびにキー・カウンタ３００を増分する。プロセッサ１００に既知の最後のキー・カウンタ値を、スイッチ１３５に保管された現行値と比較することによって、スイッチ１３５は、プロセッサ１００に既知のキー・カウンタ値がスイッチ１３５内の現行値であった時以降にスイッチ１３５のポート構成パラメータが変更されたか否かを判定することができる。
【００２８】
ヒストリ・バッファ項目の最大個数３０５は、スイッチ内で維持される４バイト・フィールドである。ヒストリ・バッファ項目の最大個数によって、ディレクタ・ヒストリ・バッファ３１５内に保管できるヒストリ・バッファ項目３１７の最大の個数が示される。
【００２９】
現行ヒストリ・バッファ項目インデックス３１０には、現行のヒストリ・バッファ項目３１７のインデックスが含まれる。現行ヒストリ・バッファ項目インデックス３１０は、スイッチ１３５が、ディレクタ・ヒストリ・バッファ３１５内の最新のヒストリ・バッファ項目３１７をポイントするのに使用する。
【００３０】
ディレクタ・ヒストリ・バッファ３１５には、ヒストリ・バッファ項目３１７の配列が含まれる。項目の数は、ヒストリ・バッファ項目の最大個数３０５フィールドの値と等しい。各ヒストリ・バッファ項目３１７には、２つのフィールドすなわち、インデックス項目３２０および変更ベクトル３２５が含まれる。インデックス項目３２０は、対応する変更ベクトル３２５によって示されるポート構成変更が行われた時に現行であったキー・カウンタ３００の値を含む４バイト・フィールドである。変更ベクトル３２５は、対応するインデックス項目３２０の値がキー・カウンタ３００にセットされていた時にどのポートが変更されたかを示す２５６ビット・フィールドである。この形で、各ヒストリ・バッファ項目３１７に、ポート構成変更イベントがいつ発生したか（インデックス項目３２０）とその変更イベントによって影響されたポート（変更ベクトル３２５）を示す、関連するデータ値の対が含まれる。変更ベクトル３２５の各ビットは、スイッチ１３５内の１つのポートに対応し、各ポートが、変更ベクトル３２５内の１つのビットだけに対応する。具体的に言うと、本発明の好ましい実施形態では、左端のビット（ビット０）が、ポート０を表し、右端のビット（ビット２５５）が、ポート２５５を表す。変更ベクトルのビットに１がセットされている時には、その特定の変更ベクトルに対応するインデックス項目３２０の値がキー・カウンタ３００にセットされていた時に、対応するポートに対する変更が行われた。変更ベクトルのビットに０がセットされている時には、その特定の変更ベクトル３２５に対応するインデックス項目３２０の値がキー・カウンタ３００にセットされていた時に、対応するポートに対する変更が行われなかった。
【００３１】
ヒストリ・ベース・レジスタ３３０は、スイッチ内の４バイト・フィールドである。このフィールドは、Test Key（キー・テスト）コマンドによって指定されるキー・カウンタ値をRead History Summary（ヒストリ要約読取）コマンドに渡すのに使用される。下で説明するように、本発明の好ましい実施形態では、ヒストリ・ベース・レジスタに、Read History Summaryコマンドに応答してスイッチが後に使用するために、Test Keyコマンドの一部として要求元装置からスイッチに渡されたキー・カウンタの値が保管される。好ましい実施形態のTest KeyコマンドおよびRead History Summaryコマンドを、下で詳細に説明する。
【００３２】
処理の概要
図１０および１１を参照して、本発明の好ましい実施形態による方法全体を説明する。具体的に言うと、図１０は、スイッチ１３５内で実行される方法全体を示す図である。図１１は、プロセッサ１００などの接続された要求元装置内で実行される方法全体を示す図である。
【００３３】
図１０を参照すると、ステップ３５０から開始される、スイッチ処理の概要が示されている。図１０からわかるように、ステップ３５２で、スイッチ１３５が、まず初期化される。スイッチ初期化は、下で図１５に関して詳細に説明する。初期化された後に、スイッチ１３５は、ステップ３５４で、ポート構成属性を変更するイベントを待つか、プロセッサ１００またはスイッチＣＵ１３０などの接続された要求元装置によって発行されるコマンドを処理する。好ましい実施形態では、スイッチ１３５が、接続された装置またはスイッチＣＵ１３０からのコマンドに応答する、割込み駆動処理としてステップ３５４を実施する。
【００３４】
ステップ３５４で、スイッチ１３５が、１つまたは複数のポート構成属性を変更するイベントを検出した時には、スイッチ１３５は、ステップ３５５でキー・カウンタ３００を増分し、ステップ３５６で、ポート構成属性を変更し、行われた変更を表すデータ構造を保管する。ステップ３５５の詳細は、図１７に関して下で説明する。ステップ３５６の詳細は、図１６に関して下で説明する。ステップ３５６の完了時に、処理は、ステップ３５４に戻る。
【００３５】
ステップ３５４で、スイッチ１３５が、プロセッサ１００またはスイッチＣＵ１３０などの接続された装置からコマンドを受け取る時には、処理がステップ３５８で継続される。本発明の好ましい実施形態では、スイッチ１３５が、接続された装置からのさまざまなコマンドに応答することができる。可能なコマンド・オプションのごく一部を、図１０に示す。たとえば、スイッチ１３５は、キー・カウンタ３００を、プロセッサ１００などの接続された要求元装置によって供給される値と比較し、これらの値が等しい場合にキー・カウンタ３００を増分する（ステップ３６２）ことをスイッチ１３５に要求するコマンドを受け取ることができる。そのようなコマンドは、接続された要求元装置が現行のキー・カウンタ３００を保持する場合に、スイッチ１３５内のポート構成変更を開始するために、接続された要求元装置によって使用される。そのようなコマンドのスイッチ処理（ステップ３６２）の詳細は、下で図２２に関して示す。また、たとえば、スイッチ１３５は、単に、キー・カウンタ３００と接続された要求元装置によって供給される値の比較を実行する（ステップ３６６）ことをスイッチ１３５に要求するコマンドを受け取ることができる。そのようなコマンドのスイッチ処理（ステップ３６６）の詳細は、下で図１８に関して示す。さらに、たとえば、スイッチ１３５は、１つまたは複数のスイッチ・ポートの構成に対する変更を開始する（ステップ３７４）複数のコマンドの１つを受け取ることができる。そのようなコマンドのスイッチ処理（ステップ３７４）の詳細は、下で図２３に関して示す。
【００３６】
本発明の好ましい実施形態で特に重要なことに、ステップ３７０に、プロセッサ１００などの接続された要求元装置が発行できる「Read History Summary」コマンドに応答してスイッチ１３５によって実行される処理が示されている。そのようなコマンドは、要求元装置がキー・カウンタ３００の現行値を保持していないと要求元装置が判定する時に、接続された要求元装置によって発行される。要求元装置は、ステップ３６６で処理されるTest Keyなどのコマンドを発行することによって、そのような判定を行うことができる。要求元装置がキー・カウンタ３００の現行値を保持していないと要求元装置が判定する時に、要求元装置は、ポート構成属性に対するさらなる変更を開始するか、その代わりに不正確な（または古い）情報に基づく可能性がある判断を行う前に、そのポート構成データを更新しなければならない。本発明の好ましい実施形態では、要求元装置によって保持されるキー値が現行であった時以降に１つまたは複数の構成変更によって影響を受けた特定のポートについて要求元装置に知らせるために、Read History Summaryなどのコマンドが設けられる。そのようなコマンドのスイッチ処理（ステップ３７０）の詳細は、下で図１９に関して説明する。
【００３７】
図１０からわかるように、スイッチ１３５は、当技術分野で既知の、ポート状態を変更しない複数の追加コマンドの１つ（たとえば、「Read PIB」、「Read Port Descriptors」、および「Read Port Address Name」）を処理する（ステップ３７６）ことができる。最後に、ステップ３７８で、スイッチ１３５が、特定コマンドによって部分的に判定される適当な応答を、要求元装置に発行する。その後、スイッチ１３５内の処理は、ステップ３５４に戻って、次のコマンドまたは構成変更を処理する。
【００３８】
図１１を参照して、要求元装置がプロセッサ１００などの接続されたホスト・プロセッサである好ましい実施形態を特に強調して、ステップ３８４で開始される、接続された要求元装置内の処理全体を説明する。ステップ３８６で、接続されたホスト・プロセッサを、まず初期化し、１つまたは複数の接続されたスイッチ１３５のポート構成状態を保管するためにプロセッサ１００内で使用されるデータ構造を確立する。ステップ３８６の詳細な説明は、下で図１２に関して示す。本発明の好ましい実施形態では、プロセッサ１００が、スイッチ１３５と周期的に通信して、ステップ３８６中に確立されたポート構成情報を更新しなければならないか否かを判定する。したがって、ステップ３８８の待ち状態を使用して、通信タイミング・インターバルを確立する。本発明の好ましい実施形態では、プロセッサ１００が、２分ごとにスイッチ１３５に照会するが、この特定のタイミング・インターバルは、必要ではない。より長いまたはより短い待ちインターバルが使用される、本発明の代替実施形態が想定されている。各待ちインターバルで、プロセッサ１００が、ステップ３９０でスイッチ・テーブル更新処理を呼び出すが、このスイッチ・テーブル更新処理は、下で図１３に関して詳細に説明する。ステップ３９０の完了時に、処理は、次の待ちインターバルの完了まで、ステップ３８８に戻る。
【００３９】
図１５を参照して、初期化のステップ３５２の追加の詳細を説明する。好ましい実施形態ではESCONディレクタまたはFICONディレクタであるスイッチ１３５に、ステップ６００で、スイッチ１３５の電源をオンにすることによって、処理を開始するために制御を与える。従来のスイッチ初期化は、ステップ６０５で行われるが、これには、スイッチ・マイクロコードのロード、ストレージの初期化、スイッチに関するテーブルおよび状態情報の初期化、使用のために使用可能なハードウェア・リソースの識別、初期化によって供給されるカスタマイズ情報の処理などの動作が含まれる。前述の動作のリストは、例示だけを目的とし、初期化動作の網羅的リストではなく、本発明のどの特定の実施形態でも必ず必要な初期化動作のすべてでもない。従来のスイッチ初期化中に、ステップ６１０で、スイッチが、キー・カウンタ３００を増分する。ステップ６１０のキー・カウンタの増分が、図を明瞭にするためにステップ６０５に続いて図示されているが、ステップ６１０は、その代わりに、ステップ６０５で実行される特定の初期化処置のいずれかまたはすべての前またはそれと並列に実行することができる。従来のスイッチ初期化は、ＩＰＬ構成ファイル（IPL Configuration File）に基づく各ポートの状態の初期化６１５によって継続される。ＩＰＬ構成ファイルは、参照によってその全体を本明細書に組み込まれる、ＩＢＭ出版物、表題「IBM ESCON Director 9032-5 Presentation」、ＩＢＭ資料番号ＳＧ２４−２００５−００、１９９９年９月に記載されている。この資料に注記されているように、ＩＰＬ構成ファイルは、スイッチ１３５の特定の構成の保管された表現である。スイッチ１３５がＥＳＣＤである好ましい実施形態では、ＩＰＬ構成ファイルが、ＨＤＤなどの不揮発性メモリ１４５に保管される。ＩＰＬ構成ファイルは、初期化ステップの初期スイッチ構成として特定の保管されたスイッチ構成を再確立するために、初期化中に使用される。ポートの追加もしくはポート番号またはポート・アドレスの変更などのスイッチ・ポート構成に対する変更は、初期構成データに反映され、この初期構成データがスイッチ・メモリ１４０に保管される。ステップ６２０で、スイッチが、すべてのヒストリ・バッファ項目３１７の値に２進数の０をセットすることによって、ディレクタ・ヒストリ・バッファ３１５をパージする。ステップ６２５で、スイッチが、スイッチのこのモデルによってサポートされる最大値をヒストリ・バッファ項目の最大個数３０５にセットし、１を現行ヒストリ・バッファ項目インデックス３１０にセットし、ヒストリ・バッファ項目３１７の番号１が現行項目であることを示す。スイッチは、ステップ６３０で、現行ヒストリ・バッファ項目インデックス３１０に関連するヒストリ・バッファ項目３１７で、実施された外部ポートに関連するすべての位置に１を含む単一の変更ベクトル３２５と、ディレクタ・ヒストリ・バッファ３１５内の他のすべての位置に０を置くことによって、ディレクタ・ヒストリ・バッファ３１５を初期化する。ステップ６３５で、スイッチが、ステップ６１０で増分されたキー・カウンタ３００の値を、現行ヒストリ・バッファ項目インデックス３１０に関連するヒストリ・バッフ��項目３１７のインデックス項目３２０部分にコピーする。ステップ６３５の完了時に、スイッチ１３５が、保管されたＩＰＬ構成に従って構成され、ディレクタ・ヒストリ・バッファ３１５が、最初のヒストリ・バッファ項目３１７を除くすべての位置を０にリセットされ、現行ヒストリ・バッファ項目インデックス３１０に、１がセットされ、したがって、現行ヒストリ・バッファ項目インデックス３１０が、最初のヒストリ・バッファ項目３１７をポイントし、最初のヒストリ・バッファ項目３１７に、インデックス項目３２０内のキー・カウンタ３００の現行値（初期化中に増分される）が含まれ、変更ベクトル３２５が、すべての実施されたポートが変更された可能性があることを示す。ここで、ステップ６４０で従来のスイッチ初期化を継続し、ステップ６４５で完了する。ステップ６４０の間に、スイッチ１３５が、各スイッチ・ポートに接続された装置を記述する情報（すなわち、下で詳細に説明するノード記述子）を保管する。
【００４０】
図１７を参照して、ステップ８００で開始される、キー・カウンタが増分される時に行われる処理を説明する。キー・カウンタ３００は、スイッチ・ポート構成が変更される時に、その変更が、接続されたプロセッサ１００上で稼動するアプリケーション、ローカル・スイッチ・コンソール・ユーザ、ESCONディレクタ・ハードウェア、またはFICONディレクタ・ハードウェアのどれによって開始されたかに無関係に、必ず増分される。ホスト・プログラミングの場合に、変更は、通常は、図２２に関して下で説明する、等値比較を伴う「Test Key and Increment」コマンドの結果である。ステップ８０２で、スイッチ・メモリ１４０に保管されたキー・カウンタ３００を、１つ増分する。キー・カウンタが増分される時に、キー・カウンタ３００のビット０（左端ビットまたは最上位ビット）のキャリーアウトがある場合には、キー・カウンタ３００が、すべて０の値にラップする。ステップ８０５で、スイッチ１３５が、現行ヒストリ・バッファ項目インデックス３１０を増分する。前に注記したように、本発明の実用的な実施形態では、ディレクタ・ヒストリ・バッファ３１５に、本発明の好ましい実施形態でヒストリ・バッファ項目の最大個数３０５によって表される有限の最大個数の項目が含まれる。本発明の好ましい実施形態では、スイッチ１３５が、現行ヒストリ・バッファ項目インデックス３１０を１にリセットすることによって、項目の最大個数を超えた状態を処理する。ステップ８１０および８１５は、この状態を処理するステップを記述したものである。ステップ８１０で、ステップ８０５から生ずる増分された現行ヒストリ・バッファ項目インデックス３１０を、ヒストリ・バッファ項目の最大個数３０５と比較する。現行ヒストリ・バッファ項目インデックス３１０がヒストリ・バッファ項目の最大個数３０５より大きい場合には、処理がステップ８１５に分岐し、ここで、現行ヒストリ・バッファ項目インデックス３１０に１をセットする。その後、処理はステップ８２０で継続される。増分された現行ヒストリ・バッファ項目インデックス３１０が、ヒストリ・バッファ項目の最大個数３０５を超えない場合には、処理はステップ８２０で継続される。ステップ８２０では、現行ヒストリ・バッファ項目インデックス３１０に対応するヒストリ・バッファ項目３１７内の変更ベクトル３２５のすべてに、２進数０をセットする。次に、ステップ８２５で、同一のヒストリ・バッファ項目３１７内のインデックス項目３２０に、キー・カウンタ３００の新しい（すなわち、増分された）値をセットする。処理は、その後、キー・カウンタ増分に関して終了する８３０。この時点で、新しいヒストリ・バッファ項目３１７が初期化されている。初期化されたまたは現行のヒストリ・バッファ項目３１７には、新しい（増分された）キー・カウンタ３００と等しいインデックス項目３２０と、すべてのビット位置を０に初期化された変更ベクトル３２５が含まれる。ヒストリ・バッファ項目３１７は、次のポート状態変更動作の間すなわち、下で説明する、図１６のステップ７００から７２０での使用の準備ができている。
【００４１】
図１６を参照して、本発明の好ましい実施形態による、ポート構成の変更を処理するために呼び出される処理を説明する。スイッチ１３５のポートについて構成情報が変更される時に、スイッチ処理が、ステップ７００で開始される。次に、従来の処理が行われる７０５が、これには、ポート情報ブロック（ＰＩＢ）の更新、ポート記述子の更新、またはスイッチ１３５がポート構成変更を実行するために実行する他のすべての処理を含めることができる。その後、ステップ７１０で、スイッチが、ステップ７０５で実施された構成変更によって影響されたポートに対応する変更ベクトル３２５のビットに１の値をセットすることによって、構成変更によって影響されるポートを記録する。ステップ７１０で更新されるのが、現行の変更ベクトル３２５であることに留意されたい。現行の変更ベクトル３２５は、現行ヒストリ・バッファ項目インデックス３１０がポイントするヒストリ・バッファ項目３１７に含まれる。ステップ７１５で、従来のポート状態変更処理を継続し、最終的に終了する７２０。図１７および１６に示されたステップの完了時に、１つまたは複数のポートの構成が変更さている。この変更に応答して、新しいヒストリ・バッファ項目３１７が完成する。新しいヒストリ・バッファ項目３１７には、ステップ８０２のキー・カウンタ増分の後のキー・カウンタの値に等しいヒストリ・バッファ・インデックスが含まれ、変更ベクトル３２５に、構成変更によって影響されたポートが示されている。
【００４２】
要求元装置内のデータ・フィールドおよび処理
スイッチ１３５内のデータ・フィールドおよびデータ更新処理を説明したので、好ましい実施形態のさらなる詳細を示して、接続された要求元装置内のデータ・フィールドおよび処理を示す。具体的に言うと、要求元装置がプロセッサ１００などの装置である好ましい実施形態を、詳細に説明する。
【００４３】
図２０を参照して、要求元装置（好ましい実施形態ではプロセッサ１００）内のデータ・フィールドおよびテーブルを説明する。具体的に言うと、図２０には、スイッチ・テーブル１１００、スイッチ・レコード１１２０、およびポート・レコード１１６０のデータ・フィールドが示されている。要求元装置が１つまたは複数のプロセッサ１００である本発明の好ましい実施形態では、この情報が、プロセッサ・メモリ１０４に保管される。スイッチ・テーブル１１００は、１つまたは複数のスイッチ・レコード１１２０からなる。各スイッチ・レコード１１２０は、１つまたは複数のポート・レコード１１６０からなる。スイッチ・テーブル１１００は、プロセッサ１００内で動作する特定のオペレーティング・システム・イメージによってアクセス可能なスイッチのすべてを表す。各スイッチ・レコード１１２０は、このシステムによってアクセス可能な単一のスイッチを表し、特定のスイッチ・レコード１１２０内のデータは、その特定のスイッチ・レコード１１２０によって表されるスイッチを記述するものである。スイッチ・レコードは、連続する記憶位置を占有してもしなくてもよく、したがって、１つの特定のスイッチ・テーブル１１００を構成するスイッチ・レコード１１２０は、リンク・リストで互いにチェーニングされる。各スイッチ・レコード１１２０は、スイッチ・テーブル１１００内の次のスイッチ・レコードへのポインタ１１４０を有し、ポインタ１１４０のヌル値は、スイッチ・テーブル１１００の終りを示す。各スイッチ・レコードに、スイッチのノード記述子１１２５、このスイッチ・レコードが作成されたか最後に更新された時に現行であったスイッチ・キー１１３０（前に説明したように、キー・カウンタまたは変更インデックス値と同義である）のコピー、スイッチの装置番号１１３５、次のスイッチ・レコードへのポインタ１１４０、および、スイッチ１３５内で実施されたすべてのポートに関する情報を提供するポート・レコード１１６０の配列が含まれる。装置番号１１３５によって、入出力が開始される対象のスイッチ装置が識別される。ポート・レコード１１６０の配列には、一連の個々のポート・レコード１１６０が含まれ、各レコードが、スイッチ１３５内の特定のポートを表す。ポート・レコード１１６０は、論理ポート・アドレスによってインデクシングされ、スイッチ１３５内の実施されたポートごとに１つのポート・レコード１１６０が設けられる。ポート・レコード１１６０は、対応するポートに接続された装置に関する情報を提供する。ポート・レコード１１６０には、物理ポート番号１１６５、そのポートに接続された装置のノード記述子１１８０（下で図２１に関して詳細に説明する）、この宛先ポートに接続されるチャネルの総数を含むパス・カウント１１７５、ブロック、オフライン、専用、および保守モードなどのさまざまな状態情報を含むポート記述子１１８５、および、各ビット位置が特定のポート・アドレスに対応する２５６個のビット・マスクからなる動的接続性禁止マスク（Prohibit Dynamic Connectivity Mask）１１９０が含まれる。動的接続性禁止マスク１１９０内では、特定のポートに対応するビット位置の０の値が、この特定のポートとの通��が許可されることを示し、１の値が、この特定のポートとの通信が許可されないことを示す。動的チャネル・パス・マネージャ（Dynamic Channel Path Manager、ＤＣＭ）などのプロセッサ１００内で稼動するアプリケーションが、たとえば対等リモート・コピー（Peer to Peer Remote Copy、ＰＰＲＣ）装置のあるインターフェースについてそうである場合があるように、禁止されているパスの追加を試みないようにするためにこの情報を使用することができる。動的チャネル・パス管理は、本願と同一の譲受人に譲渡された、参照によってその全体を本明細書に組み込まれる米国特許出願第０９／４０７５４４号に記載されている。パス・カウント１１７５は、ＣＵ１５０に接続されたポートについて、プロセッサ１００で稼動するアプリケーション（ＤＣＭなど）が未使用ポートを識別できるようにするのに使用される。
【００４４】
図２１に、本発明の好ましい実施形態のノード記述子（ＮＤ）データ・フィールドの追加の詳細を示す。上で注記したように、ＮＤフィールドは、特定のポートに接続された物理装置を記述する情報を提供する。ノード記述子には、諸フィールドすなわち、フラグ（１３０５）、ノード・パラメータ（１３１０）、タイプ番号（１３１５）、モデル番号（１３２０）、製造業者（１３２５）、製造プラント（１３３０）、シーケンス番号（１３３５）、およびタグ（１３４０）が含まれる。各フィールドの詳細を、下に示す。
【００４５】
１．フラグ（１３０５）：バイト０に、ノード記述子の選択されたフィールドを解釈する形を記述するフラグが含まれる。
２．ノード・パラメータ（１３１０）：バイト１から３に、ノードに関する追加情報が含まれる。
３．タイプ番号（１３１５）：ワード１およびワード２のバイト０から１に、ＳＤＣの６文字（０から９）のＥＢＣＤＩＣのタイプ番号が含まれる。タイプ番号は、必要な場合に先頭のＥＢＣＤＩＣの０を用いて右寄せされる。
４．モデル番号（１３２０）：ワード２のバイト２から３とワード３のバイト０に、適用可能な場合に、ＳＤＣの３文字（０から９または大文字のＡからＺ）のＥＢＣＤＩＣのモデル番号が含まれる。モデル番号は、必要な場合に先頭のＥＢＣＤＩＣの０を用いて右寄せされる。
５．製造業者（１３２５）：  ワード３のバイト１から３に、ＳＤＣの製造業者を識別する３文字（０から９または大文字のＡからＺ）のＥＢＣＤＩＣのコード、たとえば「ＩＢＭ」が含まれる。
６．製造プラント（１３３０）：ワード４のバイト０から１に、ＳＤＣの製造プラントを識別する２文字（０から９または大文字のＡからＺ）のＥＢＣＤＩＣのプラント・コードが含まれる。
７．シーケンス番号（１３３５）：ワード４のバイト２から３、ワード５から６、およびワード７のバイト０から１に、ＳＤＣの１２文字（０から９または大文字のＡからＺ）のＥＢＣＤＩＣのシーケンス番号が含まれる。シーケンス番号は、必要な場合に先頭のＥＢＣＤＩＣの０を用いて右寄せされる。通し番号は、製造プラント指定とシーケンス番号指定の連結からなる。
８．タグ（１３４０）：ワード７のバイト２から３に、ノード記述子の前の２６バイトによって識別される、ＳＤＣインターフェースの物理識別子が含まれる。
【００４６】
プロセッサ１００などの接続された要求元装置の初期化を、図１２を参照して説明する。本発明の好ましい実施形態では、プロセッサ１００が、IBM z/OS（商標）などのオペレーティング・システムを実行するIBM zSeries（商標）である。IBM zSeriesは、ＩＢＭ出版物、表題「zSeries 900 System Overview」、ＩＢＭ資料番号ＳＡ２２−１０２７−００、２０００年１０月に記載されており、IBM z/OSは、ＩＢＭ出版物、表題「z/OS Introduction and Release Guide」、ＩＢＭ資料番号ＧＡ２２−７５０２−００、２００１年３月に記載されており、これらの資料の両方が、参照によってその全体を本明細書に組み込まれる。好ましい実施形態の下記の説明では、z/OSに焦点を合わせるが、当業者は、本発明の趣旨および範囲から逸脱せずに、他のプロセッサおよび他のオペレーティング・システムを使用する他の実施形態が可能であることを容易に理解するであろう。初期化の最初に、ステップ４００で、オペレーティング・システムに、処理を開始するために制御を与える。ステップ４０５で、従来のz/OSオペレーティング・システム初期化が行われ、これには、初期プログラム・ロード（ＩＰＬ）装置からのシステム・コードのロード、ストレージの初期化、オペレーティング・システムに関するテーブルおよび状態情報の初期化、使用のために使用可能なハードウェア・リソースの識別、インストールによって供給されるカスタマイズ情報の処理などが含まれる。前述の動作のリストは、例示だけを目的とし、初期化動作の網羅的リストではなく、本発明のどの特定の実施形態でも必ず必要な初期化動作のすべてでもない。従来のz/OSオペレーティング・システム初期化中に、オペレーティング・システムが、スイッチ・テーブル初期化処理４２０を実行して、接続されたスイッチごとにスイッチ・レコード１１２０を作成し、これによって、プロセッサ初期化の時の入出力トポロジを表すデータ構造を作成する。ステップ４２０のスイッチ・テーブル初期化処理中に、システムが、すべてのオンライン・スイッチの現行のキー・カウンタ３００およびノード記述子１３００を読み取り、その後、各スイッチのキー・カウンタ３００およびノード記述子１３００をスイッチ・レコード１１２０に保管する。前に述べたように、キー・カウンタ３００の現行値が、このスイッチに対応するスイッチ・レコード１１２０内のスイッチ・キー１１３０フィールドに保管される。スイッチのノード記述子１３００は、同一のスイッチ・レコード１１２０内のノード記述子１１２５フィールドに保管される。ステップ４２０でプロセッサ１００に接続されたすべてのオンライン・スイッチを処理した後に、プロセッサ１００内のオペレーティング・システムが、その従来のシステム初期化のステップ４２５を継続する。その後、ステップ４３０で、システム初期化処理が完了する。
【００４７】
通信処理および通信プロトコル
プロセッサ１００に関する本発明の好ましい実施形態のデータ構造および初期化処理を説明したので、スイッチ１３５とプロセッサ１００がポート構成変更について通信するのに用いられる処理および通信プロトコルを説明する。
【００４８】
スイッチがRead History Summaryコマンドをサポートするかどうかをホスト・プログラムが判定するために、「Read Configuration Data（構成データ読取）」コマンドによって返される一般ノード要素修飾子（node-element qualifier、ＮＥＱ）が変更される。一般ＮＥＱは、ＩＢＭ出版物、表題「ESA/390 Common I/O-Device Commands and Self Description」、ＳＡ２２−７２０４−０２、１９９５年８月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。ワード４のバイト０に、History Buffer Entriesフィールドが含まれる。このフィールドは、ディレクタ・ヒストリ・バッファが特定のスイッチによってサポートされるか否かを示し、サポートされる場合に、このフィールドが、特定のスイッチ内で実施されたヒストリ・バッファ項目の単位の数を示す。ｘ’００’がセットされている時には、ディレクトリ・ヒストリ・バッファおよびRead History Summaryコマンドの両方がサポートされない。ｘ’００’以外の値がセットされている時には、このフィールドに、８ビット符号なし２進整数が含まれ、その値によって、このスイッチで実施されたディレクトリ・ヒストリ・バッファ項目の数が示される。代替実施形態では、この値が、単位の数を示すことができ、１単位に、複数の項目が含まれ、実施されるバッファ項目の数が、このフィールドに含まれる整数に単位ごとの項目数をかけた数になる。従来のスイッチでは、このHistory Buffer Entriesフィールドが、予約済みのフィールドであり、２進０になるように定義され、その結果、従来のスイッチが、新しいRead History Bufferコマンドをサポートしないことを正しく示すようになっている。まずRead Configuration Dataコマンドを発行し、History Buffer Entriesフィールドを検査することによって、ホスト・プログラムが、Read History Bufferコマンドをサポートしないスイッチにこのコマンドを発行しないようにすることができる。
【００４９】
図１３を参照して、プロセッサ１００などの接続された要求元装置内で実行される周期的データ更新処理の概要を説明する。図１３は、プロセッサ１００がそのスイッチ・テーブル１１００を更新する時に行われる処理を示す図である。前に説明したように、スイッチ・テーブル１１００は、初期化中に作成される（図１２のステップ４２０を参照されたい）。ポート構成変更が、複数の装置のいずれかによって開始される可能性があるので、プロセッサ１００は、周期的にスイッチ・テーブル１１００を更新する。本発明の好ましい実施形態では、スイッチ・テーブル１１００内の現行情報を維持するために、スイッチ・テーブル更新５００処理が２分ごとに呼び出される。異なるタイム・インターバールを使用する他の実施形態が、可能であり、情況によっては望ましい場合があり、したがって、本発明の趣旨および範囲の中で企図されている。スイッチ・テーブル１１００の更新は、ステップ５０２で、既存のスイッチ・テーブルをスキャンすることによって開始される。プロセッサ１００は、次に、ステップ５０３で、スイッチ・レコード１１２０が残っているかどうかを判定する。プロセッサ１００が、更新を必要とする可能性がある残りのスイッチ・レコード１１２０を保持する場合には、処理が、ステップ５０４で継続される。スイッチ・テーブル内のスイッチ・レコード１１２０ごとに、プロセッサ１００が、スイッチ装置を表す装置制御ブロック（ＵＣＢ）を見つける。ＵＣＢには、スイッチ装置がオンラインまたはオフラインのどちらであるかを示すビットが含まれる（ステップ５０４）。プロセッサ１００が、スイッチがオンラインでないと判定（５０６）する場合には、プロセッサ１００は、次のスイッチ・レコードを選択し（ステップ５２０）、ステップ５０３で継続する。プロセッサ１００が、スイッチがオンラインであると判定する場合（５０６）、プロセッサ１００は、ステップ５０８で、「Sense ID」コマンド・チャネル・プログラムを作成し、発行して、スイッチ１３５から「Set Interface Identifier」コマンドおよび「Read Node Identifier」コマンドのコマンド・コードを得る。このステップは、さまざまなスイッチとそれに関連する制御コマンドおよびプロトコルに対処するために実行される。チャネル・プログラム作成は、ＩＢＭ出版物、表題「z/Architecture - Principles of Operation」、ＳＡ２２−７８３２−００、２０００年１２月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。Sense IDコマンドは、ＩＢＭ出版物、表題「ESA/390 Common I/O-Device Commands and Self Description」、ＳＡ２２−７２０４−０２、１９９５年８月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。具体的に言うと、Read Node Identifierコマンドは、スイッチ１３５にノード識別子を要求し、このノード識別子には、前に図２１に関して説明したノード記述子（ＮＤ）が含まれる。「Set Interface Identifier」コマンドおよび「Read Node Identifier」コマンドのコマンド・コードを得た後に、ステップ５１０で、チャネル・プログラムを作成して、スイッチ１３５のスイッチ・ノード記述子、キー・カウンタ、およびポート記述子を得る。これを達成するために、次のチャネル・コマンドがこの順序で互いにチェーニングされる：０と等しいノード選択子（Node Selector）を有するSet Interface Identifier；Read Node Identifier；Read Key Counter；およびRead Port Descriptors。これらのコマンドは、ＩＢＭ出版物、表題「Programming the Interface for Enterprise Systems Connection Directors with FICON Converter Feature」、ＳＡ２３−０３５６−０６、１９９９年９月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。ノード記述子およびキー・カウンタを得た後に、ステップ５１１および５１３で、これらの値を、プロセッサ１００内に保管された、この特定のスイッチのスイッチ・レコードの現在の値と比較する。まず、プロセッサ１００は、ステップ５１１で、スイッチ１３５が、前の更新インターバル中にこの特定の装置番号１１３５を有したものと正確に同一の装置であるかどうかを判定する。本発明の好ましい実施形態では、このステップが、スイッチ１３５のノード記述子（ＮＤ）をプロセッサ１００に既知の最後のＮＤと比較することによって達成される。好ましい実施形態によるノード記述子を含む特定のデータは、上で図２１に関して説明した。スイッチ１３５が、正確に同一の装置ではない（ＮＤが一致しない）場合には、プロセッサ１００は、ステップ５１２で、新しいスイッチ１３５内で実施されるすべてのポートについてポート構成情報をリフレッシュする。このステップは、図１２に示された初期化中に実行される手順に類似する。ステップ５１２で、新しいスイッチ・レコードを作成した後に、処理は、ステップ５２０で継続される（次のスイッチ・レコード）。
【００５０】
ステップ５１１で、スイッチ１３５が、前のインターバル中にこの特定の装置番号１１３５を有したものと同一の装置であるとプロセッサ１００が判定する場合に、処理は、ステップ５１３で継続される。ステップ５１３で、プロセッサ１００が、スイッチ１３５内の現行のキー・カウンタ３００の値が、プロセッサ１００に既知の最新の値と一致するか否かを判定する。ステップ５１３で、プロセッサ１００が、前のインターバル以降にキー・カウンタ３００の値が変更されていない（すなわち、プロセッサ１００がキー・カウンタ３００の現行値を保持する）と判定する場合には、このスイッチ・レコードについてこれ以上の処置は行われず、処理は、ステップ５２０に継続される（次のスイッチ・レコード）。しかし、スイッチ１３５内のキー・カウンタ３００の現行値が、プロセッサ１００に既知の値と一致しない場合には、ステップ５１４で、プロセッサ１００内の構成情報を更新するためにさらなる処置を講ずる。スイッチ・レコード更新処理がステップ５１４で呼び出されるが、この処理は、下で図１４に関して詳細に説明する。スイッチ・レコード更新のステップ５１４からリターンした後に、処理は、ステップ５２０で次のスイッチ・レコードを選択することによって継続される。ステップ５２０で、次のスイッチ・レコードを選択した後に、処理は、ステップ５０３で継続される。ステップ５０３で、すべてのスイッチ・レコードを更新した時に、処理が、ステップ５１６で終了する。
【００５１】
図１４を参照して、スイッチ・レコードを更新するためにプロセッサ１００によって使用される処理を説明する。スイッチ・レコード更新５３０は、図１３のステップ５１４で呼び出される。処理は、ステップ５３５で、スイッチからポート情報ブロック（ＰＩＢ）を読み取るチャネル・プログラムを作成し、発行することによって開始される。ステップ５４０で、チャネル・プログラムを作成して、スイッチ１３５からヒストリ要約ベクトルを得る。これは、Test Keyコマンドを発行するチャネル・コマンド・ワード（ＣＣＷ）を作成し、これをRead History Summaryコマンドを発行するＣＣＷにチェーニングすることによって達成される。これらのコマンドおよびコマンド・チェーニングの使用の議論を、図５から８に関して続ける。本発明の好ましい実施形態のコマンド構造およびプロトコルの追加の詳細は、下で説明する。さらに図５から８を参照すると、Test Key CCW２００は、コマンド・コード２０５に’０Ｄ’ｘの値を保管し、フラグ・フィールド２１０に、コマンド・チェーニングがオンであることを示す’４０’ｘの値を保管し、カウント・フィールド２１５に、４バイトのデータ転送を示す’０００４’ｘの値を保管し、データ・アドレス・フィールド２２０に、スイッチ・キー１１３０の現行の値を含むフィールド２４０へのポインタを保管することによって作成される。Read History Summary CCW２６０は、コマンド・コード・フィールド２６５に’０Ｅ’ｘの値を保管し、フラグ・フィールド２７０に、コマンド・チェーニングがオフであることを示す’００’ｘの値を保管し、カウント・フィールド２７５に、３６バイトの転送を示す’２４’ｘの値を保管し、データ・アドレス・フィールド２８０に、Read History Summaryコマンドの出力が置かれる場所２８５へのポインタを保管することによって作成される。その後、Start Subchannel（ＳＳＣＨ）コマンドを介してチャネル・プログラムを開始する。チャネル・プログラムが完了した時に、ステップ５４５で、ヒストリ要約ベクトル２９０の各ビットをスキャンする。ヒストリ要約ベクトル２９０の左端のビットであるビット０から開始すると、ビット０がポート０を表し、ビット１がポート１を表し、以下同様であるが、プログラムは、ステップ５５０で、ビットが１と等しいかどうかを検査する。ビットが１と等しくない場合には、処理はステップ５６５で継続される。ビットが１と等しい場合には、このポートのスイッチ・レコードの情報を更新しなければならず、処理はステップ５５５で継続される。ステップ５５５では、ヒストリ要約ベクトル２９０内のビットに対応するポートに接続されたノード識別子を読み取るチャネル・プログラムを作成し、発行する。その後、ステップ５６０で、新たに得られたノード識別子を用いてスイッチ・レコードを更新する。ステップ５６５で、これがビット・ストリングの最後のビット（最後のポートを表す）でない場合には、処理は、ビット・ストリングの次のビットを選択することによって、ステップ５４５で継続される。ステップ５６５で、これがビット・ストリングの最後のビットである場合には、ステップ５７０で、新ヒストリ・バッファ・インデックス２９５を用いてスイッチ・キー１１３０を更新する。その後、スイ��チ・レコード更新処理が、ステップ５７５で終了する
【００５２】
本発明の好ましい実施形態の通信プロトコルおよびコマンドの特定の詳細を説明する。具体的に言うと、プロセッサ１００がスイッチ１３５に照会するコマンドと、ヒストリ要約を要求するコマンドを、下で説明する。
【００５３】
コマンドを詳細に説明する前に、コマンド・チェーニングの予備的議論を示す。一般に、コマンド・チェーニングは、当技術分野で既知の方法であり、これによって、一連のチャネル・コマンドが実行のために一緒に「チェーニング」される。一連のコマンドのチェーニングによって、チェーン内の各コマンドが、チャネル・プログラムの完了の前に実行されることが保証される。本発明の好ましい実施形態で使用されるコマンド・チェーニングは、２つの特定のコマンドすなわち、要求元装置が最新のキー・カウンタを有するかどうかを要求元装置が判定するコマンド（Test Keyコマンド）およびどのポート構成属性が変更されたかを要求元装置が判定するコマンド（Read History Summaryコマンド）をチェーニングするのに使用される。これらのコマンドをチェーニングすることによって、他の処理がTest KeyコマンドとRead History Summaryコマンドの間に入らないことが保証され、Read History Summaryコマンドが実行される前にTest Keyコマンドで指定された値が上書きされず、Test Keyコマンドで指定された値をヒストリ・ベース・レジスタ３３０から抽出できるようになる。好ましい実施形態のコマンド構造では、さらに、No-opコマンドが使用されるが、その目的は、下で完全に説明する。
【００５４】
図５を参照して、Test Keyチャネル・コマンドを説明する。このコマンドは、要求元装置によって保持されるキー・カウンタ（スイッチ１３５に対応するスイッチ・レコード１１２０内に保管される、図２０のスイッチ・キー１１３０）の値が、スイッチ１３５に保管された現行値であるかどうかを判定するために、プロセッサ１００などの要求元装置によって発行される。図５には、本発明の好ましい実施形態のTest Keyチャネル・コマンドのフィールドの詳細が示されている。Test Key CCW２００は、Test Keyコマンドのチャネル・コマンド・ワード（ＣＣＷ）である。Test Key CCWのビット０から７に、好ましい実施形態では’０Ｄ’ｘであるコマンド・コード２０５が含まれる。ビット８から１５に、フラグ・フィールド２１０が含まれ、これは、好ましい実施形態について下で詳細に説明するように、チャネル・プログラムの処理に影響する。
Chain-Data（ＣＤ）フラグ：ビット８、１と等しい時に、データのチェーニングが指定される。これによって、次のＣＣＷによって指定されるストレージ域が、現行入出力動作と共に使用されるようになる。ＣＤフラグがＣＣＷ内で１である時には、chain-commandフラグおよびsuppress-length-indicationフラグ（下を参照されたい）が無視される。
Chain-Command（ＣＣ）フラグ：ビット９、１と等しく、ＣＤフラグおよびＳフラグの両方が０の時に、コマンドのチェーニングが指定される。これによって、次のＣＣＷのコマンド・コードで指定される動作が、現行動作の通常の完了時に開始されるようになる。
Suppress-Length-Indication（ＳＬＩ)フラグ：ビット１０によって、誤長状態をプログラムに示すかどうかが制御される。このビットが１と等しく、ＣＤフラグが０の時には、誤長表示が抑制される。ＣＣフラグとＳＬＩフラグの両方が１であり、ＣＤフラグが０の時には、誤長状態の存在に無関係に、コマンド・チェーニングが行われる。このビットは、誤長表示の抑制が望まれる場合に、すべてのＣＣＷで指定されなければならない。
Skip（ＳＫＩＰ）フラグ：ビット１１、１と等しい時に、読取動作、逆方向読取動作、Sense ID動作、またはセンス動作中のストレージへの情報の転送の抑制が指定される。
Program-Controlled-Interruption（ＰＣＩ）フラグ：ビット１２、１と等しい時に、ＣＣＷが入出力動作の制御を得た時にチャネル・サブシステムに中間割込み状態を生成させる。ＰＣＩフラグ・ビットが０である時には、通常の動作が行われる。
Indirect-Data-Address（ＩＤＡ）フラグ：ビット１３、１と等しい時に、間接データ・アドレッシングが指定される。
Suspend（Ｓ）フラグ：ビット１４、１と等しい時に、チャネル・プログラム実行の中断が指定される。有効な時に、このフラグによって、チャネル・プログラム実行が、Ｓフラグを含むＣＣＷの実行の前に中断されるようになる。Ｓフラグは、関連する動作要求ブロック（ＯＲＢ）のワード１、ビット４が１の時に有効になる。
ビット１５は予約済みであり、０である。
【００５５】
ビット１６から３１には、この命令の実行中に転送されるデータの長さである、Test Key Byte Countとも称するカウント・フィールド２１５が含まれる。好ましい実施形態のTest Keyコマンドの場合に、これが’０４’ｘである。ＣＣＷのビット３２から６３には、データ・アドレス・フィールド２２０が含まれ、これは、バッファ２４０と称する、入力がチャネルによってメモリから取り出されるバッファのアドレスである。バッファ２４０は、入力がチャネルによってメモリから取り出されるバッファである。このコマンド・コードについて、このバッファは、４バイト・フィールドであるtest key値を受け取り、このバッファには、プロセッサ１００などの要求元装置がスイッチ内の現行キー値と比較するキー値が含まれる。
【００５６】
図６を参照して、Read History Summaryコマンドを説明する。図６には、Read History Summaryチャネル・コマンドのフィールドの詳細が示されている。Read History Summary CCW２６０は、Read History Summaryのチャネル・コマンド・ワード（ＣＣＷ）である。Read History Summary CCWのビット０から７には、本発明の好ましい実施形態では’０Ｅ’ｘであるコマンド・コード・フィールド２６５が含まれる。ビット８から１５には、Read History Summaryコマンド処理中に使用される、チャネル・プログラムの処理に影響するフラグ・フィールド２７０が含まれる。これらのビットの定義は、前に図５に関して説明したフラグ・フィールド２１０に関するものと同一である。ビット１６から３１には、カウント・フィールド２７５が含まれ、これは、この命令の実行中に転送されるデータの長さを表す。好ましい実施形態のRead History Summaryチャネル・コマンドの場合、これが’２４’ｘである。このＣＣＷのビット３２から６３には、データ・アドレス・フィールド２８０が含まれ、これは、Read History Summaryコマンドの結果が保管されるバッファ・アドレスを表す。Read History Summaryコマンドの出力が置かれる場所２８５は、スイッチによって要求元装置に返されるRead History Summaryコマンドの結果を含む３６バイト・フィールドである。ヒストリ要約ベクトル２９０は、スイッチのキー・カウンタ３００がヒストリ・ベース・レジスタ３３０の値（バッファ２４０を介して要求元装置によってスイッチに渡されたキー・カウンタの値と等しい）と等しかった時からキー・カウンタ３００の現行値までにどのポートが変更されたかを示す２５６ビット・フィールドである。ヒストリ要約ベクトル２９０の個々のビットは、スイッチ１３５内のポートに対する１対１対応をもち、左端のビットであるビット０がポート０を表し、右端のビットであるビット２５５がポート２５５を表す。ヒストリ要約ベクトル２９０の特定のビットに１がセットされている場合には、この特定のヒストリ要約ベクトルによって表される時間枠中に、対応するスイッチ・ポート構成に対する変更が行われた。ヒストリ要約ベクトル２９０の特定のビットに０がセットされている場合には、この特定のヒストリ要約ベクトルによって表される時間枠中に、対応するポート構成に対する変更が行われなかった。新ヒストリ・バッファ・インデックス２９５は、Read History Summaryコマンドが発行された時にスイッチ１３５に保管されていた現行キー・カウンタ３００の値を含む４バイト・フィールドである。プロセッサ１００などの要求元装置は、Read History Summaryの最後の呼び出しの後に変更が行われたかどうかの判定の出発点として、このキー・カウンタ値を使用することができる。
【００５７】
図７を参照して、No-Operation（またはno-op）コマンドを示す。図７には、No-Operationチャネル・コマンドのフィールドの詳細が示されている。No-Operationチャネル・コマンド・ワード１２００は、No-Operationのチャネル・コマンド・ワードである。このＣＣＷのビット０から７に、’０３’ｘであるNo-Operationチャネル・コマンド・コード１２０５が含まれる。ビット８から１５には、No-Operationコマンドと共に使用することができる、チャネル・プログラムの処理に影響するフラグ１２１０が含まれる。これらのビットの定義は、前に説明したTest Keyのフラグ・フィールド２１０と同一である。ビット１６から３１に、No-Operationバイト・カウント１２１５が含まれ、これは、この命令の実行中に転送されるデータの長さを表す。No-Operationコマンドの場合、これが’００’ｘである。ＣＣＷのビット３２から６３には、No-Operation結果のアドレス１２２０が含まれるが、No-Operationコマンドではデータが転送されないので、ここには２進数の０をセットしなければならない。
【００５８】
図８を参照して、本発明の好ましい実施形態で使用される「Test Key」コマンド、「No-Operation」コマンド、および「Read History Summary」コマンドのチェーニングを示す。図８に、これらのＣＣＷがメモリ内でどのように配置されるかの詳細１２５０を示す。Read History Summaryコマンドを発行するために、Read History Summaryコマンドの前に、Test Keyコマンドがあり、Read History Summaryコマンドが、Test Keyコマンドにチェーニングされる。これは、通常、ストレージ１２５５内でTest Key CCWを最初に配置し、その直後に（メモリ内で隣接して）No-Operation CCW１２６０を続け、その直後に（メモリ内で隣接して）Read History Summary CCW１２６５を続けることによって行われる。通常、Test Keyのフラグ・フィールド２１０のChain-Commandビットがオンにセットされ、No-Operation CCWのフラグ１２１０およびRead History Summary CCWのフラグ・フィールド２７０には、０がセットされる。その結果、Test Keyコマンドが完了した時に、「Test Key値」が「キー値」と等しい（図１８のステップ９１５）場合に、Test Keyが、正常終了状況を提示する（図１８のステップ９２５）。これによって、チャネル・サブシステムが、次のＣＣＷ、この場合にはNo-Operation CCWを実行する。Chain-Commandビットがオフなので、no-opを実行した後に、チャネル・コマンドが終了する。「Test Key値」が「キー値」と等しくない場合（図１８のステップ９１５）、Test Keyは、それでも正常終了状況を提示するが、さらに、状況修飾子フラグをオンにセットする（図１８のステップ９２０）。状況修飾子フラグの１の値を返すことによって、チャネル・サブシステムが、次のNo-Operation CCW１２６０をスキップし、その代わりに、その１つ後のRead History Summary CCW１２６５を処理する。Read History Summaryコマンドを実行した後に、Read History Summary CCW１２６５のChain-Commandビットがオフなので、チャネル・プログラムが終了する。ステップ９２０またはステップ９２５のどちらを実行するかを決定するために、割込み要求ブロック（ＩＲＢ）内のサブチャネル状況ワード（ＳＣＳＷ）内のＣＣＷアドレスを検査する。このフィールドには、最後に実行されたＣＣＷのアドレス＋８が含まれる。ＳＣＳＷおよびＩＲＢは、ＩＢＭ出版物、表題「z/Architecture - Principles of Operation」、ＩＢＭ資料番号ＳＡ２２−７８３２−００、２０００年１２月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。
【００５９】
図１８を参照して、Test Keyコマンドに応答してスイッチ１３５によって実行される処理を説明する。図１８には、スイッチがTest Keyチャネル・コマンドを受け取った時にスイッチによって実行される、ステップ９００で開始される処理が示されている。スイッチは、まず、ステップ９０５で、データ・アドレス・フィールド２２０によってポイントされるバッファ２４０のTest Key値を得る。その後、ステップ９１０で、バッファ２４０のTest Key値を、後続処理でのスイッチ１３５による使用のためにヒストリ・ベース・レジスタ３３０に保管する。ステップ９１５で、ヒストリ・ベース・レジスタ３３０に保管されたバッファ２４０のTest Key値を、スイッチに保管され、スイッチが使用中の現行値であるキー・カウンタ３００と比較する。キー・カウンタ３００の値とバッファ２４０のTest Key値が等しい場合には、要求元装置（プロセッサ１００など）が、現行ポート構成情報を有し、更新は不要である。この場合には、処理が、ステップ９２５で継続され、Test Key命令が、状況修飾子を提示せずに正常終了状況を提示し（更新が不要であることを要求元装置に示す）、処理は、ステップ９３０で、Test Key命令に関して終了する。キー・カウンタ３００の値とバッファ２４０のTest Key値が等しくない場合には、要求元装置が、現行ポート構成情報を有しておらず、更新が示される。この場合には、処理はステップ９２０で継続され、Test Key命令が、正常終了状況と「状況修飾子」を提示し、キー・カウンタ値が一致しなかったこと、したがって、要求元装置のポート構成情報を更新する必要があることを、要求元装置に示す。その後、処理は、ステップ９３０で、Test Key命令に関して終了する。
【００６０】
図１９に、スイッチがプロセッサ１００などの要求元装置からRead History Summaryチャネル・コマンドを受け取った時に、スイッチ１３５によって実行される、ステップ１０００から開始される新しいRead History Summaryチャネル・コマンドの処理を示す。ステップ１００５で、スイッチが、ヒストリ・ベース・レジスタ３３０からTest Key値を得る。ステップ１００５でヒストリ・ベース・レジスタ３３０から得たキー・カウンタ値を、ステップ１０１０で現行のキー・カウンタ３００と比較する。これらの値が等しい場合には、処理はステップ１０１５で継続される。これらの値が等しくない場合には、処理はステップ１０２０で継続される。キーが等しい場合に、スイッチが、ステップ１０１５でヒストリ要約ベクトル２９０にすべて０をセットし、更新が不要であることを要求元装置に示し、スイッチ処理は、ステップ１０４５に進む。キーが等しくない場合に、ステップ１０２０で、スイッチが、ステップ１００５でヒストリ・ベース・レジスタ３３０から得たキー値と等しいインデックス項目３２０についてディレクタ・ヒストリ・バッファ３１５を検索する。ステップ１０３０で、処理は、ヒストリ・ベース・レジスタ３３０から得たキー（ステップ１００５）と一致するインデックス項目３２０がディレクタ・ヒストリ・バッファ３１５内で見つかったかどうかを判定することによって継続される。一致するインデックス項目３２０がディレクタ・ヒストリ・バッファ３１５内で見つからない場合には、これは、一致するインデックスをかつては含んだヒストリ・バッファ項目３１７が再利用され、したがって、より新しいキー・カウンタ３００によって上書きされたからである可能性が最も高い。この状況が発生するのは、後続の照会の間に発生する変更イベントの数が、ヒストリ・バッファ項目の最大個数３０５を超える時である。したがって、この状態が発生した時には、スイッチ１３５は、キー・カウンタがヒストリ・ベース・レジスタ３３０内に保管された値と等しかった時以降にポートが構成を変更したかどうかを判定することができない。この場合には、処理は、ステップ１０３５で、実施された外部ポートに関連するすべての位置について、ヒストリ要約ベクトル２９０内の個々のビットに１をセットすることによって継続される。ヒストリ要約ベクトル２９０内の他のすべてのビット位置のビットには、０がセットされる。このヒストリ要約ベクトル２９０を要求元装置に返すことによって、スイッチ１３５は、要求元装置がスイッチ１３５内で実施されたすべてのポートについてそのポート構成情報をリフレッシュしなければならないことを示す。その後、処理はステップ１０４５で継続される。ヒストリ・ベース・レジスタ３３０から得たキー値（ステップ１００５から）と一致するインデックス項目３２０が、ディレクタ・ヒストリ・バッファ３１５内で見つかる場合には、ステップ１０４０で、適用可能なすべてのヒストリ・バッファ項目３１７（すなわち、一致するキーが現行であった時以降に変更されたヒストリ・バッファ項目３１７）にビット単位で連結的なＯＲ（connective OR）を適用し、適用可能なヒストリ・バッファ項目３１７のいずれかの変更ベクトル３２５の対応するビット位置に１が��る場合にヒストリ要約ベクトル２９０のビットに１がセットされるようにする。適用可能なヒストリ・バッファ項目３１７のすべての変更ベクトル３２５の対応するビット位置に０がある場合には、ヒストリ要約ベクトル２９０のビットに０をセットする。適用可能なヒストリ・バッファ項目３１７の組は、ステップ１０３０の結果を使用することによって判定される。適用可能なヒストリ・バッファ項目３１７の組には、ステップ１０３０で見つかったヒストリ・バッファ項目３１７（すなわち、一致するインデックス項目３２０を有するヒストリ・バッファ項目３１７）より新しく（これを含まない）、現行ヒストリ・バッファ項目インデックス３１０によってポイントされる現行のヒストリ・バッファ項目３１７を含んでこれまでのすべてのヒストリ・バッファ項目３１７が含まれる。その後、処理は、ステップ１０４５で継続される。ステップ１０４５では、新ヒストリ・バッファ・インデックス２９５に、スイッチ１３５によって保管され、使用されているキー・カウンタ３００の現行値をセットする。その後、Read History Summaryチャネル・コマンドの処理が終了する１０５０。
【００６１】
既存のコマンドを、本発明の好ましい実施形態と共に使用することができる。いくつかの既存コマンドが、キー・カウンタ値およびポート構成に対する変更を引き起こし、これによって、本発明のある態様を呼び出す場合がある。２種類の既存コマンドすなわち、キー・カウンタを増分する可能性があるコマンドと１つまたは複数のポートの構成を変更するさまざまなコマンドを、下で説明する。
【００６２】
図２２に、スイッチがプロセッサ１００などの要求元装置からTest Key and Incrementコマンドを受け取った時に、スイッチ１３５が実行する、ステップ１３５０から開始される、Test Key and Incrementチャネル・コマンドの処理を示す。Test Key and Incrementコマンドは、ＩＢＭ出版物、表題「Programming the Interface for Enterprise Systems Connection Directors with FICON Converter Feature」、ＳＡ２３−０３５６−０６、１９９９年９月で文書化されており、この出版物は、参照によってその全体を本明細書に組み込まれる。次に、従来の処理が行われる１３５５。前に説明したTest Keyコマンドに類似する形で、Test Key and Incrementコマンドは、ステップ１３５５で、プロセッサ１００からスイッチ１３５にキー値を渡す。ステップ１３６０で、キー・カウンタ３００の値とTest Key値が等しい場合に、要求元装置は、現行のポート構成情報を有し（プロセッサ１００がスイッチ１３５に関するポート構成情報を更新する必要がないことを示す）、処理は、ステップ１３６５で継続される。図１７に関して前に詳細に説明したように、ステップ１３６５では、キー・カウンタ３００の値を増分し、新しいヒストリ・バッファ項目を作成する。処理は、ステップ１３７０で継続され、ここで、Test Key and Increment命令が、状況修飾子を提示せずに正常終了状況を提示し、これによって、要求元装置に、キーが増分されたことと、チャネル・プログラムの残りについてシリアライズされたコマンドを処理できることを示す。そのようなシリアライズされたコマンドには、たとえば、１つまたは複数のポートの構成を変更する、下で説明するコマンドの１つまたは複数を含めることができる。その後、処理は、ステップ１３８０で、Test Key and Increment命令に関して終了する。しかし、ステップ１３６０で、キー・カウンタ３００の値とTest Key値が等しくない場合には、要求元装置が、現行のポート構成情報を有しない。この場合には、処理はステップ１３７５で継続され、Test Key and Increment命令が、正常終了状況と「状況修飾子」を提示し、キー・カウンタ値が一致しなかったこと、したがって、キーが増分されず、シリアライズされたコマンドをチャネル・プログラムの残りについて処理できなかったことを、要求元装置に示す。これによって、プロセッサ１００が、不正確なポート構成情報に基づくスイッチ１３５内のポートの構成に対する変更を行えなくなる。その後、処理は、ステップ１３８０で、Test Key and Increment命令に関して終了する。
【００６３】
図２３に、ステップ１４００で開始される、スイッチ１３５内の１つまたは複数のポートの構成を変更する１つまたは複数のコマンドの包括的な処理を示す。本発明の好ましい実施形態では、そのようなコマンドが、プロセッサ１００などの接続された要求元装置によって発行され、その後、スイッチ１３５によって処理される。そのようなコマンドには、たとえば、「Modify Blocked State」、「Modify Dedicated Connection」、または「Modify PDCM」を含めることができる。これらのコマンドは、ＩＢＭ出版物、表題「Programming the Interface for Enterprise Systems Connection Directors with FICON Converter Feature」、ＳＡ２３−０３５６−０６、１９９９年９月で文書化されておりこの出版物は、参照によってその全体を本明細書に組み込まれる。そのようなコマンドは、有利なことに、ポート構成の変更が現行の正確な情報（すなわち、一致するキー・カウンタ値）に基づく時に限ってプロセッサ１００がそのような変更を開始することと、図１７のキー・カウンタ増分処理が実行されることを保証するために、前に説明したTest Key and Incrementコマンドなどのコマンドの後に続く。次に、従来の処理が行われ１４０５、これには、処理される特定のコマンドに応答してスイッチ１３５によって普通に実行されるすべてのものが含まれる。処理は、ステップ１４１０で継続され、ここで、前に図１６に関して詳細に説明したポート状態変更処理が実行される。ステップ１４１０（すなわち図１６）の処理では、処理されるコマンドによって変更されるポートのそれぞれに対応する、現行の変更ベクトル内のビットがセットされる。たとえば、「Modify PDCM」について、処理に、動的接続性禁止マスクを変更すること（ステップ１４０５）と、状態が変更されたポート（１つまたは複数）に対応する変更ベクトル内のビットを変更すること（ステップ１４１０）が含まれる。次に、処理は、ステップ１４１５で継続され、ここで残りの従来の処理が実行される。その後、処理はステップ１４２０で終了する。
【００６４】
代替実施形態
図３および４に、本発明の１つまたは複数の代替実施形態に存在する可能性がある追加の特徴を示す。一般に、各スイッチ１３５を、１つまたは複数のプロセッサ１００に接続することができる。さらに、各プロセッサ１００を、１つまたは複数のスイッチ１３５に接続することができる。これらの可能性のそれぞれが、本発明の趣旨および範囲の中で企図されている。
【００６５】
図３および４にさらに示されているように、複数のスイッチ１３５がチェーニングまたはカスケード接続される代替実施形態が企図されている。具体的に言うと、プロセッサ１００を、スイッチ１３５に接続することができ、スイッチ１３５を、第２のスイッチ１３６に接続することができる。プロセッサ１００とＣＵ１５０の間の通信は、スイッチ１３５および１３６の両方を介して達成される。図３および４に示された構成では、プロセッサ１００が、スイッチ１３６への直接通信パスへのアクセスを有しない。これまたは類似する情況の下で、要求元装置が、プロセッサではなく別のスイッチになる場合がある。たとえば、図３および４のスイッチ１３６の要求元装置が、スイッチ１３５になる場合がある。スイッチ１３５は、スイッチ１３６の構成の知識を有することができ、他の要求元装置がトポロジ内のすべてのスイッチへのアクセスを有しないか、スイッチ１３６に直接にアクセスできない場合に、スイッチ１３５が、ルーティング要求を効率的に処理でき、プロセッサ１００などの別の要求元装置にスイッチ１３６の構成情報を提供できるようになる。そのような場合には、要求元スイッチが、他のスイッチにコマンドを発行し、他のスイッチに対して、それ自体をホストであるかのように提示する。本明細書に記載されたデータ構造、処理、および通信プロトコルは、要求元装置がスイッチである情況にも適用される。
【００６６】
代替実施形態では、要求元装置を、たとえばＳＡＮマネージャなど、交換ストレージ環境（またはトポロジ）を管理または監視する処理とすることができる。そのような実施形態では、その処理が、ホスト・プロセッサ上に、環境内のスイッチ上に、もしくはストレージ・トポロジまたは環境の管理／監視に使用される別のプロセッサとして、常駐することができる。
【００６７】
本発明のある特定の実施形態に合わせて本発明を詳細に説明したが、当業者が、多数の修正および変更を行うことができる。したがって、そのような修正および変更のすべてを本発明の真の趣旨および範囲に含まれるものとして包含することが、請求項によって意図されている。
【００６８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６９】
（１）要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法であって、
前記要求元装置と通信するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、初期変更インデックス値をセットするステップと、実施されたポートを識別する初期データ・ベクトルを作成するステップと、前記初期データ・ベクトルに関連して前記変更インデックス値を保管するステップとを含む、ステップと、
後続の構成変更に応答して前記変更インデックスを増分するステップと、
前記後続の構成変更に応答してデータ・ベクトルを作成するステップであって、前記データ・ベクトルが、前記複数のポートのうちで前記後続の構成変更によって影響されるポートのそれぞれを識別する、ステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む方法。
（２）前記初期化するステップが、さらに、
前記複数のポートの現行構成を判定するステップと、
前記現行構成を記述するポート構成情報を保管するステップと
を含む、上記（１）に記載の方法。
（３）前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（２）に記載の方法。
（４）前記後続の構成変更を反映するために前記保管された構成情報を更新するステップと、
前記更新された構成情報を保管するステップと
をさらに含む、上記（２）に記載の方法。
（５）前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（４）に記載の方法。
（６）関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、上記（１）に記載の方法。
（７）前記要求元装置に既知の最新の変更インデックスが、もはや前記スイッチによって保管されていない時に、前記要求元装置が、前記実施されたポートのすべてが構成変更によって影響されたことを知らされる、上記（６）に記載の方法。
（８）前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップをさらに含む、上記（１）に記載の方法。
（９）前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、上記（８）に記載の方法。
（１０）要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法であって、
前記要求元装置との通信を処理するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、現行ポート構成を判定するステップと、前記現行ポート構成を記述するポート構成情報を保管するステップと、初期変更インデックス値をセットするステップと、実施されたポートを識別する初期データ・ベクトルを作成するステップと、前記初期データ・ベクトルに関連して前記変更インデックス値を保管するステップとを含む、ステップと、
前記ポート構成を変更するステップと、
前記変更されたポート構成を記述するために前記保管されたポート構成情報を更新するステップと、
前記更新されたポート構成情報を保管するステップと、
前記構成変更に応答して前記変更インデックスを増分するステップと、
前記複数のポートのうちで前記構成変更によって影響されたポートのそれぞれを識別するデータ・ベクトルを作成するステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内で構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む方法。
（１１）前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（１０）に記載の方法。
（１２）前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（１１）に記載の方法。
（１３）関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、上記（１０）に記載の方法。
（１４）前記要求元装置に既知の最新の変更インデックスが、もはや保管されていない時に、前記要求元装置が、前記実施されたポートのすべてが構成変更によって影響されたことを知らされる、上記（１３）に記載の方法。
（１５）前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップ
をさらに含む、上記（１０）に記載の方法。
（１６）前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、上記（１５）に記載の方法。
（１７）入出力ネットワーク交換装置であって、
それぞれが外部データ処理装置と通信することができる、複数の通信ポートと、
前記複数の通信ポート通信し、さらに、要求元装置と通信することができる、スイッチ・プロセッサと、
前記スイッチ・プロセッサからアクセス可能なポート構成ヒストリ・データ構造であって、前記ポート構成ヒストリ・データ構造が、変更インデックス値および変更データ・ベクトルの関連付けられた対を含み、前記関連付けられた対のそれぞれが、ポート構成変更イベントに関係し、前記変更インデックス値のそれぞれが、前記ポート構成ヒストリ・データ構造に、前記関係するポート構成変更イベントに対応するインデックスを与え、前記変更データ・ベクトルのそれぞれが、前記複数の通信ポートのうちで前記関係するポート構成変更イベントによって影響される特定の通信ポートを識別する、ポート構成ヒストリ・データ構造と、
ポート構成変更イベントに応答して、前記変更インデックス値の現行値を１つだけ増分する、増分ユニットと、
前記スイッチ・プロセッサからアクセス可能なポート構成データであって、前記ポート構成データが、ポート構成変更イベントに応答して、それに関連して前記変更データ・ベクトルの１つを作成するために前記スイッチ・プロセッサによって使用され、前記スイッチ・プロセッサが、前記ポート構成ヒストリ・データ構造内の前記関連付けられた対の１つとして、前記増分された変更インデックス値および前記変更データ・ベクトルの前記１つを保管する、ポート構成データと、
構成ヒストリ要約ユニットであって、前記要求元装置からの照会に応答して、前記構成ヒストリ要約ユニットが、前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数の変更データ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを識別する要約ベクトルを作成し、前記要約ベクトルを、前記照会に応答して前記要求元装置へ通信することができる、構成ヒストリ要約ユニットと
を含む装置。
（１８）前記要求元装置が、ホスト・プロセッサである、上記（１７）に記載の装置。
（１９）前記要求元装置が、第２入出力ネットワーク交換装置である、上記（１７）に記載の装置。
（２０）前記入出力交換装置が、ESCONディレクタである、上記（１７）に記載の装置。
（２１）前記入出力交換装置が、FICONディレクタである、上記（１７）に記載の装置。
（２２）前記要求元装置が、交換ストレージ環境を管理する処理である、上記（１７）に記載の装置。
（２３）前記要求元装置が、ＳＡＮマネージャである、上記（２２）に記載の装置。
（２４）前記外部データ処理装置が、ホスト・プロセッサ、入出力装置コントローラ、およびもう１つの入出力ネットワーク交換装置からなる群から選択される、上記（１７）に記載の装置。
（２５）要求元装置と通信する交換入出力ネットワーク内の構成変更について前記要求元装置に知らせる方法を実行するために計算機によって実行可能な命令の少なくとも１つのプログラムを有形に実施する、計算機によって可読の少なくとも１つのプログラム記憶装置であって、前記方法が、
前記要求元装置と通信するスイッチを初期化するステップであって、前記スイッチが、複数の通信ポートを含み、前記初期化が、初期変更インデックス値をセットするステップと、前記複数のポートの初期構成に関連して前記変更インデックス値を保管するステップとを含む、ステップと、
後続の構成変更に応答して前記変更インデックスを増分するステップと、
前記後続の構成変更に応答してデータ・ベクトルを作成するステップであって、前記データ・ベクトルが、前記複数のポートのうちで前記後続の構成変更によって影響されるポートのそれぞれを識別する、ステップと、
前記増分された変更インデックスに関連して前記データ・ベクトルを保管するステップと、
前記要求元装置に既知の最新の変更インデックス値より新しい変更インデックス値に関連する１つまたは複数のデータ・ベクトル内の構成変更によって影響されたものとして前に識別されたすべてのポートを前記要求元装置に識別することによって、前記要求元装置からの照会に応答するステップと
を含む、少なくとも１つのプログラム記憶装置。
（２６）前記初期化するステップが、さらに、
前記複数のポートの現行構成を判定するステップと、
前記現行構成を記述するポート構成情報を保管するステップと
を含む、上記（２５）に記載の少なくとも１つのプログラム記憶装置。
（２７）前記保管されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（２６）に記載の少なくとも１つのプログラム記憶装置。
（２８）前記後続の構成変更を反映するために前記保管された構成情報を更新するステップと、
前記更新された構成情報を保管するステップと
をさらに含む、上記（２６）に記載の少なくとも１つのプログラム記憶装置。
（２９）前記更新されたポート構成情報の少なくとも一部を前記要求元装置に通信するステップと、
前記通信されたポート構成情報を前記要求元装置内で保管するステップと
をさらに含む、上記（２８）に記載の少なくとも１つのプログラム記憶装置。
（３０）関連する変更インデックスおよびデータ・ベクトルの限られた数の最新の対が保管される、上記（２５）に記載の少なくとも１つのプログラム記憶装置。
（３１）前記要求元装置に既知の最新の変更インデックスが、もはや保管されていない時に、前記要求元装置が、前記複数のポートのすべてが構成変更によって影響されたことを知らされる、上記（３０）に記載の少なくとも１つのプログラム記憶装置。
（３２）前記照会と実質的に同時に、前記要求元装置に既知の前記最新の変更インデックス値を、前記要求元装置から前記スイッチに渡すステップをさらに含む、上記（２５）に記載の少なくとも１つのプログラム記憶装置。
（３３）前記要求元装置に既知の前記最新の変更インデックス値を前記スイッチ内で保管するステップと、
ポート構成変更が識別される最初の変更インデックス値を識別するために前記保管された変更インデックス値を使用するステップと
をさらに含む、上記（３２）に記載の少なくとも１つのプログラム記憶装置。
（３４）前記スイッチがヒストリ・バッファ特徴をサポートすることを、前記応答の前に前記要求元装置に知らせるステップをさらに含む、上記（２５）に記載の少なくとも１つのプログラム記憶装置。
【図面の簡単な説明】
【図１】好ましい実施形態が実施されるコンピューティング環境を示す図である。
【図２】本発明の好ましい実施形態によるスイッチを示す図である。
【図３】本発明の代替実施形態のさまざまな態様を示す図である。
【図４】本発明の代替実施形態のさまざまな態様を示す図である。
【図５】本発明の好ましい実施形態のTest Keyチャネル・コマンド・ワード（ＣＣＷ）に含まれるデータのフィールドを示す図である。
【図６】本発明の好ましい実施形態のRead History Summary CCWに含まれるデータのフィールドを示す図である。
【図７】本発明の好ましい実施形態のNo Operation CCWに含まれるデータのフィールドを示す図である。
【図８】本発明の好ましい実施形態のコマンド・チェーニングを示す図である。
【図９】本発明の好ましい実施形態のスイッチに保管されるデータのフィールドを示す図である。
【図１０】本発明の好ましい実施形態による、スイッチ内で実行される処理の概要を示す図である。
【図１１】本発明の好ましい実施形態による、要求元装置内で実行される処理の概要を示す図である。
【図１２】本発明の好ましい実施形態による、要求元装置を初期化するのに使用される論理を示す図である。
【図１３】本発明の好ましい実施形態による、内部スイッチ・テーブルを更新するために要求元装置によって使用される論理を示す図である。
【図１４】本発明の好ましい実施形態による、スイッチ・レコードを更新するために要求元装置によって使用される論理を示す図である。
【図１５】本発明の好ましい実施形態による、スイッチを初期化するのに使用される論理を示す図である。
【図１６】本発明の好ましい実施形態による、ポート構成変更に応答してスイッチによって使用される論理を示す図である。
【図１７】本発明の好ましい実施形態による、キー・カウンタを増分するためにスイッチによって使用される論理を示す図である。
【図１８】本発明の好ましい実施形態による、Test Key CCWを処理するのに使用される論理を示す図である。
【図１９】本発明の好ましい実施形態による、Read History Summary CCWを処理するのに使用される論理を示す図である。
【図２０】本発明の好ましい実施形態による、要求元装置内に保管されるポート構成データ構造およびフィールドを示す図である。
【図２１】本発明の好ましい実施形態による、ノード記述子データ構造を示す図である。
【図２２】本発明の好ましい実施形態による、Test Key and Increment CCWの処理を示す図である。
【図２３】本発明の好ましい実施形態による、ポート状態変更処理を示す図である。
【符号の説明】
３５０  スイッチ処理の概要
３５２  スイッチを初期化するステップ
３５４  ポート構成変更またはスイッチ・コマンドを待つステップ
３５５  キー・カウンタを増分するステップ
３５６  ポート状態変更処理を実行するステップ
３５８  コマンドを選択するステップ
３６２  Test Key and Incrementの処理を実行するステップ
３６６  Test Key処理を実行するステップ
３７０  Read History Summary処理を実行するステップ
３７４  ポート状態変更コマンド処理を実行するステップ
３７６  従来のコマンド処理を実行するステップ
３７８  ホストに応答するステップ
【図１】
0003701928.tif 000002
【図２】
0003701928.tif 000003
【図３】
0003701928.tif 000004
【図４】
0003701928.tif 000005
【図５】
0003701928.tif 000006
【図６】
0003701928.tif 000007
【図７】
0003701928.tif 000008
【図８】
0003701928.tif 000009
【図９】
0003701928.tif 000010
【図１０】
0003701928.tif 000011
【図１１】
0003701928.tif 000012
【図１２】
0003701928.tif 000013
【図１３】
0003701928.tif 000014
【図１４】
0003701928.tif 000015
【図１５】
0003701928.tif 000016
【図１６】
0003701928.tif 000017
【図１７】
0003701928.tif 000018
【図１８】
0003701928.tif 000019
【図１９】
0003701928.tif 000020
【図２０】
0003701928.tif 000021
【図２１】
0003701928.tif 000022
【図２２】
0003701928.tif 000023
【図２３】
0003701928.tif 000024