JP2001005744A - チャネル装置 - Google Patents

チャネル装置

Info

Publication number
JP2001005744A
JP2001005744A JP11172096A JP17209699A JP2001005744A JP 2001005744 A JP2001005744 A JP 2001005744A JP 11172096 A JP11172096 A JP 11172096A JP 17209699 A JP17209699 A JP 17209699A JP 2001005744 A JP2001005744 A JP 2001005744A
Authority
JP
Japan
Prior art keywords
input
output
output operation
frame
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11172096A
Other languages
English (en)
Inventor
Takeyoshi Shigeno
丈至 茂野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11172096A priority Critical patent/JP2001005744A/ja
Publication of JP2001005744A publication Critical patent/JP2001005744A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 フレーム単位で入出力動作を多重に実行する
チャネル装置において、入出力動作の障害が発生しても
一定時間待つことなく新たな入出力動作を開始できるよ
うにする。 【解決手段】 実際に多重に実行できる入出力動作数分
の複数の入出力制御情報エントリ記憶部と、識別子オフ
セット格納部を設け、入出力動作の起動時には、該起動
された入出力動作を一つの入出力制御情報エントリに割
り当て、該割り当てた入出力制御情報エントリの識別子
の値と前記識別子オフセットの値との演算結果を当該入
出力動作で用いるフレームの識別子とし、入出力動作の
障害発生時には、前記識別子オフセットの値に対し、決
められた演算を行なって更新する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理システム
において入出力装置(I/O)との間で入出力動作を行
うチャネル装置(CH)に係り、特にフレーム単位で入
出力動作を多重に実行するチャネル装置の入出力制御方
式に関する。
【0002】
【従来の技術】チャネル処理装置(CHP)とその配下
の複数のチャネル装置(CH)からなる入出力処理装置
(IOP)、CHに接続される一つまたは複数の入出力
装置(I/O)等を具備する情報処理システムにおい
て、CHでは、当該CH内のローカルストレージ(L
S)上に多重に実行できる入出力動作数分の入出力制御
情報エントリの記憶エリアを設け、CHPあるいはI/
Oから起動された入出力動作を該入出力制御情報エント
リの一つに割り当て、フレーム上に当該入出力動作の識
別子(XID)を格納することで、フレーム単位で入出
力動作を多重に動作させることを実現している。一例と
しては、ANSI(American NationalStandards I
nstitute)に規格化されているX3.230−199X
「FIBRE CHANNEL PHYSICAL AN
D SIGNALING INTERFACE」(以下F
C−PHと略する)に記述されているファイバチャネル
がある。
【0003】
【発明が解決しようとする課題】前記FC−PHにはフ
レーム単位で入出力動作を多重に実行中に、フレーム喪
失(例えば、CNT=0の次にCNT=2のフレームを
受信)やシーケンスタイムアウト(フレーム送信後、所
定時間経過しても応答フレームの返送がない)などの障
害が発生すると、該障害の回復のためにアボートシーケ
ンスプロトコルと呼ばれる処理を実行することが記述さ
れている。該アボートシーケンスプロトコルの処理で
は、一定時間(FC−PHではR_A_TOVと呼んで
いる)が経過するまで、障害の発生した入出力動作の識
別子(XID)を使った新たな入出力動作を抑止しなけ
ればならない。これは、障害の発生した入出力動作に関
するフレームが途中で滞留している場合、そのフレーム
と新たな入出力動作を開始したフレームとが区別がつか
なくなるため、滞留しているフレームが無くなるのを保
証するためである。
【0004】フレーム上の入出力動作の識別子(XI
D)は入出力動作を開始する側が設定するOriginator
XID(OX_ID)と、入出力動作を開始された側が
設定するResponder XID(RX_ID)とからな
る。アボートシーケンスプロトコルを必要とする障害の
発生後、該障害の発生した入出力動作のXIDに対し
て、OX_IDとRX_IDのどちらかが異なるなら
ば、新たな入出力動作をR_A_TOVの間待つ必要は
ない。しかし、新たな入出力動作を開始する時、障害が
発生してR_A_TOVの時間が経過していない入出力
動作のOX_IDを用いるのは危険である。なぜならば
入出力動作を開始された側が必ずRX_IDを変えてく
れる保証がないためである。故に、新たな入出力動作を
開始する時、障害が発生して、R_A_TOVの時間が
経過していない入出力動作のOX_IDを使用すべきで
はない。また、入出力動作を開始された側も、OX_I
Dが障害発生後にR_A_TOVを経過していない可能
性があるため、R_A_TOVを経過していないRX_
IDを用いるべきではない。
【0005】障害の発生した入出力動作の識別子を使っ
た新たな入出力動作を抑止するための一定時間(R_A
_TOV)の値の決定方法は入出力構成によって異な
る。CHとI/Oとが一対一に接続される場合(Point
To Point接続)はCHとI/Oとが初期設定時に行
なわれるやりとりによって決められるものであり、C
H、I/O間で取り交わされるパラメータの中に含まれ
る時間を比較し、大きい時間が使用される。故にCHが
小さい値を定めたとしても、I/Oが大きい時間を定め
るならば、I/O側の定めた時間が使われることにな
る。また、CHとI/O間にスイッチ機構(FC−PH
ではFabricと呼んでいる)が介在する場合、該一定時
間(R_A_TOV)はスイッチ機構によって決定され
る。FC−PHにおいては、該一定時間(R_A_TO
V)のデフォルト値は120秒と記述されている。
【0006】フレーム単位で入出力動作を多重に実行す
る場合、入出力動作を割り当てた入出力制御情報エント
リの通番等に対応する値、例えば、0から「(入出力動
作の多重制御可能数)−1」までの値を、CHとI/O
間の入出力動作に使用するフレームのXIDとするのが
一般的である。しかし、このようにしてCH、I/O間
の入出力動作に使用するフレームのXIDを決めると、
多重制御可能数分の全てのXIDの入出力動作が同時期
にアボートシーケンスプロトコルを行なうような障害に
至ると、該障害の発生したCHは無条件に一定時間(R
_A_TOV)が経過するまで停止している必要があ
る。故にその間オペレーティングシステムからの入出力
命令が発行されても該CHは何も出来ないため、単純に
ウエイトしているしかない。この停止時間が前記FC−
PHのR_A_TOVのデフォルト時間の120秒とす
ると、該120秒もの間、CHはウエイトすることにな
る。120秒もの間、入出力動作が実行されなければ、
オペレーティングシステムはタイムアウトに至り、該C
Hは閉塞されてしまうかもしれない。仮にオペレーティ
ングシステムが該CHを閉塞させないとしても、オペレ
ーティングシステムへの入出力動作の終了の応答が極端
に遅くなるという問題が発生する。
【0007】ローカルストレージ(LS)上の入出力制
御情報エントリの数を増加して、入出力動作の多重制御
可能数が大きくなれば(例えば216)、入出力動作に
使用するフレームのXIDに0から「(入出力動作の多
重制御可能数)−1」までの値を使っても問題はほとん
ど起こらない。なぜならば、入出力動作の多重制御可能
数(例えば216)が充分に大きければ、数100のオ
ーダの障害が発生し、該障害に関するXIDが使用不可
となっても、新たな入出力動作を割りあてる使用可能な
XIDが充分にあるためである。しかし、入出力動作の
多重可能数を大きくするためにはハードウェアへの負担
は大きく(前記FC−PHにおいて、入出力動作のやり
とりで使用されるフレームの最大長は約2048バイト
であるため、一つの入出力動作当たり少なくとも204
8バイトのエリアが必要となり、それが216個必要と
なるため)、また、それが可能だとしてもかなりの費用
が必要になる。また多重数が多くなればなるほど、CH
内のオーバヘッドが増大するため、一つの入出力動作の
完了が遅くなっていくのは自明である。そのため入出力
動作の多重制御可能数を極端に大きくすることは望まし
くない。
【0008】本発明の目的は、フレーム単位で入出力動
作を多重に実行できるチャネル装置において、アボート
シーケンスプロトコルに至るような障害が発生したとし
ても、ハードウェアへの負担を増加させずに、その後の
新たな入出力動作の起動を待たせることなく即時に実行
可能とし、障害におけるシステム性能の低下を最小限に
することにある。
【0009】
【課題を解決するための手段】上記目的を達成するため
に、本発明では、それぞれのフレーム上に入出力動作の
識別子(XID)を格納し、一つ又は複数の入出力装置
とフレーム単位で入出力動作を多重に実行するチャネル
装置において、実際に多重に実行できる入出力動作数分
の複数の入出力制御情報エントリを有する記憶手段と、
識別子オフセット(ID_Offset)を格納する手段
と、入出力動作の起動時に、該起動された入出力動作を
一つの入出力制御情報エントリに割り当て、該割り当て
た入出力制御情報エントリの識別子(IO_ID)の値
と前記識別子オフセット(ID_Offset)の値との演
算結果を当該入出力動作で用いるフレームの識別子(X
ID)とする手段と、入出力動作の障害発生時に、前記
識別子オフセット(ID_Offset)の値に対し、決め
られた演算を行なって更新する手段とを設けたことを特
徴とする。
【0010】また、本発明では、上記チャネル装置にお
いて、更に、識別子オフセット制限値(ID_Limit)
を格納する手段と、現在の時間と、その時点でもっとも
古くて有効な入出力動作の障害に関して記憶した時間と
を比較し、その差分が規定時間を経過していれば、前記
識別子オフセット制限値(ID_Limit)を更新する手
段と、入出力動作の障害発生時、識別子オフセット(I
D_Offset)の値が識別子オフセット制限値(ID_
Limit)を越えると、該識別子オフセット(ID_Off
set)の更新を抑止する手段とを設けたことを特徴とす
る。
【0011】
【発明の実施の形態】以下、本発明の一実施例を図面に
より説明する。図1は、本発明の一実施例を示す情報処
理システムの構成図であり、10は命令処理装置(I
P)、20は主記憶装置(MS)、30は入出力処理装置
(IOP)、41,42,43,44はI/Oインタフ
ェースケーブル、50はスイッチ機構、61と62は入
出力装置(I/O)を示す。入出力処理装置(IOP)
30はチャネル処理装置(CHP)31とその配下の複
数のチャネル装置(CH)320〜32iからなる。本実
施例では、IOP30は1台であるが、複数存在しても
よい。また、I/Oも2台である必要はない。
【0012】CH320〜32iとI/O61,62との
間の入出力動作はフレーム70を用いて行なわれる。本
実施例では、CH320〜32iにおける入出力動作の多
重制御可能数はそれぞれ16であるとする。CH320
〜32iは、各々ローカルストレージ(LS)321と
時計機構(TOD)322を具備している。LS321
については後述する。TOD322は4バイトから機構
され、128μsごとに1が加算されていくものとす
る。
【0013】スイッチ機構50は、CH320〜32i
I/O31,62の間にあって、入出力動作のためにC
HとI/O間でやりとりされるフレーム70の中に格納
される情報(後述のDID、SID)により動的にスイ
ッチングする働きをし、例えば、FC−PHにおいて、
Fabricと呼ばれているものである。本実施例では、ス
イッチ機構50には、CH320とI/Oインタフェー
スケーブル41にて接続され、ポート番号Aとして識別
されるF_Port51と、CH32iとI/Oインタフェ
ースケーブル42にて接続され、ポート番号Bとして識
別されるF_Port52と、I/O61とI/Oインタ
フェースケーブル43にて接続され、ポート番号Cとし
て識別されるF_Port53と、I/O62とI/Oイ
ンタフェースケーブル44にて接続され、ポート番号D
として識別されるF_Port54の4つのポートを具備
している。CH320〜32i及びI/O61,62のそ
れぞれは、スイッチ機構50のどのF_Portに接続し
ているかを、初期設定手順によって取得している(FC
−PHでは、F_Port Loginの手続きを行なうことに
より取得される)。例えば、CH320スイッチ機構5
0のポート番号Aに接続されていることを初期設定手順
にて知っている。
【0014】MS20は、IP10、IOP30のCH
P31、CH320〜32iとで共有される。該MS20
内には、I/Oと一対一に対応した入出力装置制御テー
ブル(UCW)210〜21mが存在し、それぞれのUC
WはUCW番号によって識別可能である。本実施例で
は、I/O61はUCW210と対応し、I/O62は
UCW211に対応するものとする。また、本実施例の
構成定義ではCH320にはI/O61とI/O62と
が定義されているものとし、その構成情報はUCW中に
設定されているものとする。UCW番号が指定されれ
ば、該UCW番号に対応するI/Oが特定でき、かつ、
該I/Oが接続されているCH群やスイッチ機構50の
ポート番号を知ることができる。
【0015】図2は、図1のMS20内に存在するI/
O62に対応するUCW211のフォーマットの一例を
示している。なお、他のUCWも同様のフォーマットで
ある。UCW番号格納部211には、当該UCW211
を識別するUCW番号が格納される。CCWアドレス格
納部212には、当該UCW211に対応するI/O6
2で実行される入出力動作に関するチャネルプログラム
(CCW)2120を格納するMS20上のアドレス
(CCWアドレス)が格納される。CCW2120は、
実行すべき動作を表すコマンドコード(CMD)212
1、コマンドチェインやデータチェインなどを示すフラ
グ情報(FLAG)2122、転送すべきデータ数を示
すデータ転送カウント(COUNT)2123、MS2
0上のデータの読出し又は書込みアドレスを示すデータ
アドレス(DATA ADDRES)2124などからな
る。接続CH番号群213には、該UCW211に対応
するI/O62に接続されるCHの番号が格納され、本
実施例では、CH320の番号が格納される。I/O接
続ポート番号214には、I/O62がスイッチ機構5
0に接続しているポート番号が格納され、本実施例で
は、当該UCW211に対応するI/O62が接続され
るF_Port54のポート番号(D)が格納される。
【0016】図3は、図1のCH320に具備されるL
S321のフォーマットの一例を示している。なお、他
のCHのLSも同様のフォーマットである。
【0017】LS321には、まず、該LS321のア
ドレス値であるSEXCHANGE(入出力制御情報部
開始アドレス)にて特定される入出力制御情報格納エリ
ア3211があり、該エリア3211は、当該CH32
0が多重に動作できる最大入出力動作数分のエントリを
有している。本実施例では、エントリ数は16で、それ
ぞれ256バイトの容量を持つものとする。故に、任意
の入出力制御情報エントリ32110のLS321上の
先頭アドレスはSEXCHANGE+ENTRY_NO
×256の計算式によって求められる(ENTRY_N
Oはエントリ通番)。それぞれの入出力制御情報エント
リ32110は、当該エントリに割り当てられた入出力
動作の実行状況を示すシーケンス状況コード(SEQ_
COD)32111と、エントリ通番などの当該エント
リを識別する入出力制御情報エントリ識別子(IO_I
D)32112と、入出力動作のためにI/O61,6
2とやりとりされるフレーム上の入出力動作識別子(X
ID)として用いるOriginator XID(OX_ID)
32113及びResponder XID(RX_ID)32
114と、該エントリに割り当てられた入出力動作に関
するチャネルプログラム(CCW)のコマンドコード
(CMD)321115、フラグ情報(FLAG)32
116、データ転送カウント(Count)32117、実
行中のチャネルプログラムを格納するMS20上のアド
レスを示すCCWアドレス32118、MS20上のデ
ータのアドレスを格納するデータアドレス32119及
び、当該エントリが、スイッチ機構50のどこのF_P
ortに接続されるI/Oとの入出力動作かを示すDID
3211Aなどからなる。なお、32115〜3211
9や3211Aには、図2に示したUCW内のCCW2
120やI/O接続ポート番号214が設定される。
【0018】次に、LS321には、該LS321のア
ドレス値であるSID_OFFSET(識別子オフセッ
ト部開始アドレス)にて特定される識別子オフセット格
納部(ID_Offset)3212と、SID_LIMI
T(オフセット制限値部開始アドレス)にて特定される
識別子オフセット制限値格納部(ID_Limit)321
3の格納部とがある。
【0019】ID_Offset3212は、2バイトで構
成され、初期値は0である。入出力動作の障害(例え
ば、FC−PHにおいて、アボートシーケンスプロトコ
ルを実行しなければならない障害)が発生する度に該I
D_Offset3212に、該CH320が多重に動作でき
る最大の入出力動作数(本実施例では16)を加算す
る。以下、入出力動作の障害が発生する度に加算されて
いくため、最大の入出力動作数を16とすると、該ID
_Offset3212の格納値は0→16→32→48→
64→・・・→65504→0→16→・・・と遷移し
てく。即ち、16を加算した結果が65520になる場
合は0に戻る。これは後述するフレーム70のOX_I
D、RX_IDの生成に関し、該ID_Offset321
2を用いるが、このID_Offset3212の格納値と
して65520を許容すると、OX_ID、RX_ID
の値としてFFFF16が求められてしまう。前記FC
−PHにおいて、OX_ID、RX_IDの値としてF
FFF16は特別の値であるため、16を加えて655
20になる場合は0とする。
【0020】ID_Limit3213には、前記ID_O
ffset3212に格納する値のスレッシュホルドが格納
され、その初期値は0である。該ID_Limit3213
の更新方法は後述する。
【0021】また、LS321には、開始アドレスSE
RROR_TODにて特定される障害時間格納部(ER
ROR_TOD)3214がある。これは4095個の
エントリから構成され(ID_Offset3212は0か
ら65504まで16ごとに変化し、また、障害発生毎
にTOD322の値をERROR_TODに格納してい
くため、ERROR_TODのエントリ数として409
5個必要)、それぞれのエントリ(ERROR_TOD
エントリ)32140は4バイトからなる。故に、ER
ROR_TOD3214は合計16380バイトとな
る。それぞれのERROR_TODエントリ32140
には、入出力動作の障害(前記FC−PHにおいて、ア
ボートシーケンスプロトコルを実行しなければならない
障害)が発生する度に、CH320内にある時計機構
(TOD)322のその時点の値を格納する。格納する
ERROR_TOD3214のエントリはID_Offse
t3212により求めるが、その詳細は後述する。
【0022】図4はCHとI/Oとが入出力動作のやり
取りを行なう時に使用するフレーム70のフォーマット
を示したものである。なお、該フォーマットは前記FC
−PHにて記述されるフレームフォーマットに準拠して
いる。
【0023】フレーム70は、該フレームの開始を示
し、特別なキャラクタにて定義されるSOF71と、フ
レームヘッダ72と、データ等を含む情報フィールド7
3と、該フレームの正当性をチェックするために用いら
れるチェックシーケンス(CRC)74と、該フレーム
70の終了を示し、特別なキャラクタにて定義されるE
OF75とにより構成される。フレームヘッダ72は、
該フレーム70の送信先のスイッチ機構50のF_Por
tを特定するポート番号が格納されるデスティネーショ
ンID(DID)721と、送信元のスイッチ機構50
のF_Portを特定するポート番号が格納される(ソー
スID)SID722と、該フレーム70の属性を示す
フレーム属性(Frame−Control)723と、該フレー
ム70が属する入出力動作を識別するために用いられる
識別子(XID)であるOX_ID724、RX_ID
725とから構成される。
【0024】例えば、CH320からI/O62にフレー
ム70を送信する場合、該フレーム70のDID721
には、該フレーム70の送信先であるI/O62がスイ
ッチ機構50に接続されているF_Portのポート番号
であるDが格納され、また、SID722には、該フレ
ーム70の送信元であるCH320がスイッチ機構50
に接続されているF_Portのポート番号であるAが格
納される。
【0025】OX_ID724には、入出力動作を開始
するCHもしくはI/O側の入出力動作を識別する値が
格納され、RX_ID725には、入出力動作を開始さ
れたCHもしくはI/O側の該入出力動作の識別子が格
納される。例えば、CH320がI/O61に入出力動
作を起こす時、CH320側の該入出力動作の識別子が
該入出力動作に使われるフレーム70のOX_IDとし
て使われ、またI/O61側の該入出力動作の識別子が
該入出力動作に使われるフレーム70のRX_IDとし
て使われる。そして、OX_ID724に値を格納する
入出力動作の場合は、当該フレーム70のフレームヘッ
ダ72中におけるフレーム属性723のビット0のEx_
Contextが「0」(Originator)になり、RX_ID
725に値を格納する入出力動作の場合は、同ビット0
のEx_Contextが「1」(Responder)になる。I/O
61,62からCH320に対し入出力動作を開始する
時は、この逆となる。
【0026】CH320〜32i、及びI/O61,62
では、フレーム単位にて多重に入出力動作が行なえる
が、それぞれの入出力動作は、フレーム70のOX_I
D724とRX_ID725によって組み合わされる識
別子(XID)、及びDID721とSID722によ
って識別されることになる。
【0027】以下、図1において、CH320とI/O
62間の入出力動作を例に、本発明の入出力制御を説明
する。
【0028】初めに、CH320がI/O62に対して
入出力動作を開始する場合を説明する。図5は、この場
合のCH320の処理フローを示したものである。
【0029】IP10上で動作するプログラムは、I/
O62に対するI/O命令を発行する前に入出力動作に
関するチャネルプログラム(CCW)等をMS20上に
格納し、I/O命令を発行する。IP10は、プログラ
ムがI/O62に対して発行したI/O命令を受け取る
と、該I/O命令に関する情報(チャネルプログラムを
格納した先頭アドレス(CCWアドレス)等)をMS2
0上のI/O62と対応するUCW211内に格納す
る。該UCW211には、すでに初期設定手順により、
I/O62と接続されているCH320、スイッチ機構
50のポート番号(D)が設定されている。次に、IP
10は、I/O62に対するI/O命令を、該I/O6
2と接続されているCH320を配下に持つCHP31
に対し通知する。該I/O命令を受けたCHP31は、
該I/O命令の起動をCH320に該UCW211のUC
W番号と共に通知する。
【0030】CHP31から起動を受けたCH32
0は、該I/O命令に関する入出力動作を、該CH320
中のLS321内の一つの入出力制御情報エントリ32
110割り当てる。該入出力動作を割り当てるために、
CH320は、各入出力制御情報エントリ32110中
のSEQ_COD32111を参照して、アイドル(未
使用)となっているエントリがあるかどうかをチェック
する(図5のステップ1)。もし、SEQ_COD32
111がアイドルを示すコードになっていれば、当該入
出力制御情報エントリ32110に起動された入出力動
作を割り当て、該エントリ32110中のSEQ_CO
D32111を動作中のコードに書き換える(ステップ
2)。アイドル中の入出力制御情報エントリ32110
が複数存在する場合には、例えば若い番号(IO−ID
32112の昇順)に割り当てる。一方、もしも全ての
入出力制御情報エントリ32110のSEQ_COD3
2111がアイドルのコードでなかった場合、起動され
たI/O命令を実行するための資源が無いため、CH3
0はCHP31に対して該I/O命令の実行を拒絶す
ることになる(ステップ7)。
【0031】CHP31から起動された入出力動作がC
H320中のLS321内の一つの入出力制御情報エン
トリ32110に割り当てられた場合、以後、該入出力
動作は該入出力制御情報エントリ32110を識別する
IO_ID32112によって該CH320内では識別
されることになる。
【0032】CH320は、CHP31から通知された
UCW番号で特定されるMS20上のUCW211を参
照し、該I/O命令に関する入出力動作情報等を取得し
て、入出力動作を割り当てた入出力制御情報エントリ3
2110に格納する(ステップ3)。即ち、MS20上
のUCW211を参照して、チャネルプログラム格納ア
ドレス(CCWアドレス)212及びI/O62のスイ
ッチ機構50の接続ポート番号(D)214を取得し、
割り当てた入出力制御情報エントリ32110にCCW
アドレス32118、DID3211Aとして格納す
る。また、CCWアドレス212により特定されるチャ
ネルプログラム(CCW)2120をMS20から読み
込み、その内容を該入出力制御情報エントリ32110
にCMD32115、FLAG32116、Count32
117、Data Address32119として格納する。
【0033】その後、CH320は、当該入出力動作の
識別子(OX_ID)を割当て、フレーム70を生成し
I/O62に送信し、入出力動作を開始する(ステップ
4)。入出力動作を開始するCH320は、まず、フレ
ーム70のOX_ID724に値を割りあてる準備とし
て、該入出力動作を割り当てた入出力制御情報エントリ
32110のOX_ID32113を設定する。そのた
めに、該入出力制御情報エントリ32110を識別する
IO_ID32112に格納されている値(エントリ通
番0〜15)に対し、LS321のSID_OFFSE
Tで特定されるエリア3212に格納されているID_
Offsetの値を加算し、その結果を該入出力制御情報エ
ントリ32110のOX_ID32113に格納する。
次に、CH320は起動された入出力動作を開始するた
めにフレーム70を作る。そのために該フレーム70の
フレームヘッダ部72について、そのDID721には
該入出力動作を割り当てた入出力制御情報エントリ32
110のDID3211Aの値を格納し、SID722
には、UCW211から取得される接続CH番号群21
3から該CH320がスイッチ機構50と接続されてい
るF_Portのポート番号Aを格納する。また、該フレ
ーム70のフレーム属性723のビット0のEx_Conte
xtは、該CH320が入出力動作を開始する例(Origin
ator)であるため「0」に設定される。該フレーム属性
723のビット0のEx_Contextが「0」であるため、
CH320が該フレーム70のOX_ID724を使う
ことになり、フレームヘッダ72の該OX_ID724
には、該入出力動作を割り当てた入出力制御情報エント
リ32110のOX_ID32113に格納した値を設
定する。なお、フレームヘッダ72のRX_ID725
はI/O側での入出力動作の識別を表す値であるため、
この時点では特定できない。故に該RX_ID725は
FFFF16と設定され、該入出力動作を割り当てた入
出力制御情報エントリ32110のRX_ID3211
4にもFFFF16が格納される。このようにヘッダ7
2の設定されたフレーム70が、CH320からI/O
62に対し送信される。
【0034】CH320は、I/O62から応答フレー
ムの受信をチェックする(ステップ5)。CH320
ら送信されたフレーム70に対して、I/O62から応
答されるフレーム(応答フレーム)70のヘッダ72中
には、該CH320が設定したOX_ID724の値と
ともに、I/O62によって設定された値が、FFFF
16を書き替える形でRX_ID725に格納されてい
る。この応答フレームを受け取ったCH320は、該フ
レームのRX_IDの値を、該入出力動作を割り当てて
いる入出力制御情報エントリ32110のRX_ID3
2114に格納する(ステップ6)。なお、I/O62
から応答されるフレーム70中のフレーム属性723の
ビット0のEx_Contextは「1」(Responder)に設定
されている。
【0035】その後、CH320とI/O62は、上記
やりとりによって決定されたOX_ID、RX_IDに
よって構成されるXIDを識別子として用い、当該入出
力動作の実行を管理することになる。そして、当該入出
力動作の実行が終了すると、CH320では、LS32
1の当該入出力動作に割り当てた入出力制御情報エント
リ32110中のSEQ−COD32111をアイドル
コードとする。
【0036】次に、I/O62がCH320に対し入出
力動作を開始する場合を説明する。図6は、この場合の
CH320の処理フローを示したものである。
【0037】I/O62はCH320に入出力動作を開
始するために、送信フレーム70のヘッダ72中のDI
D721にポート番号A、SID722にポート番号D
を設定し、フレーム属性723のビット0のEx_Cont
extを「0」(Originator)とし、OX_ID724に
I/O62側にて設定された値を格納し、そしてRX_
ID725にFFFF16を格納する。このように設定
したフレーム70を、I/O62はCH320に対して
送信する。
【0038】該フレーム70を受信したCH320は、
I/O62からの入出力動作の開始を認識する。そし
て、次のようにして、該入出力動作の起動を、該CH3
0のLS321内の一つの入出力制御情報エントリ3
2110に割り当てる。CH320は、該I/O62か
らの入出力動作を割り当てるために、入出力制御情報エ
ントリ32110中のSEQ_COD32111を参照
して、当該エントリがアイドルであるかどうかをチェッ
クする(ステップ11)。もし、SEQ_COD321
11がアイドルを示すコードになっていれば、該入出力
制御情報エントリ32110に、I/O62から起動さ
れた入出力動作を割り当て、当該エントリ32110中
のSEQ_COD32111を動作中のコードに書き換
える(ステップ12)。もし、LS321内の全ての入
出力制御情報エントリのSEQ_COD32111がア
イドルのコードでなかった場合、I/O62から起動さ
れたI/O命令を実行する資源が無いため、CH320
は、I/O62に対して、該入出力動作の実行を拒絶す
るための応答フレームを返信する(ステップ15)。
【0039】I/O62から起動された入出力動作が、
LS321内の一つの入出力制御情報エントリ3211
0に割り当てられた場合、以後、該入出力動作は該入出
力制御情報エントリ32110を識別するIO_ID3
2112によって該CH320内では識別されることに
なる。
【0040】CH320はI/O62から受信したフレ
ーム70中のSID722、OX_ID724の値を、
該割り当てた入出力制御情報エントリ3211のDID
3211A、OX_ID32113にそれぞれ格納する
(ステップ13)。
【0041】I/O62によって入出力動作を開始され
たCH320は、I/O62からの受信フレームに対す
る応答フレーム70を作成して該I/O62へ返送する
(ステップ14)。受信フレームの応答のために、該応
答のフレーム70のRX_ID725に値を設定しなけ
ればならない。I/O62は、その準備として、該入出
力動作を割り当てた入出力制御情報エントリ32110
のRX_ID32114に値を設定する。そのために、
該入出力制御情報エントリ32110を識別するIO_
ID32112に格納されている値(エントリ通番0〜
15)に対し、LS321のSID_OFFSETで特
定されるエリア3212に格納されているID_Offse
tの値を加算し、その結果を該入出力制御情報エントリ
32110のRX_ID32114に格納する。次に、
CH320はI/O62から受信したフレームに対する
応答フレーム70を作成する。そのために該応答フレー
ム70のフレームヘッダ部72について、そのDID7
21には該入出力動作を割り当てた入出力制御情報エン
トリ32110のDID3211Aに格納されている値
を、SID722にはUCW211の接続CH番号群2
13から該CH320が接続しているスイッチ機構50
のF_Portのポート番号Aを、OX_ID724とR
X_ID725には、該入出力動作を割り当てた入出力
制御情報エントリ32110のOX_ID32113と
RX_ID32114に格納されている値を設定する。
そして、フレーム属性723のビット0のEx_Contex
tを「1」(Respondor)とする。このようにして作ら
れたフレーム70をI/O62に対し送信する。
【0042】その後、CH320とI/O62は上記や
りとりによって決定されたOX_ID,RX_IDによ
って構成されるXIDを識別子として用い、当該入出力
動作の実行を管理することになる。そして、当該入出力
動作の実行が終了すると、CH320では、LS321
内の当該入出力動作に割り当てた入出力制御情報エント
リ32110中のSEC_COD32111をアイドル
コードとする。
【0043】本実施例の場合、CH320は多重動作で
きる入出力動作数は最大16であるが、フレーム上の入
出力動作の識別子(X_ID)は、(216−16)の
数のOX_IDあるいはRX_IDの値を生成できる。
即ち、識別子オフセット(ID_Offset)は0から、
16ごとに65504まで変化し、該ID_Offsetの
値にIO_ID(0〜15)を加えて、OX_ID,R
X_IDの生成を行うため、(216−16)個の表現
が可能となる。これだけ多くのOX_ID,RX_ID
を生成できるならば、前記アボートシーケンスプロトコ
ルを必要とする障害が発生してもR_A_TOVの時間
を待つ必要性はほとんどないだろう。しかも、実際に多
重動作できる入出力動作数は16であり、LS上には物
理的に16の入出力動作情報エントリを設けるだけでよ
いため、ハードウェアへの負担は大きくない。
【0044】次に、CH320が入出力動作の実行にお
いて、障害(FC−PHにて記述されるアボートシーケ
ンスプロトコルを行なわなければならないような障害)
が発生した時の識別子オフセット(ID_Offset)の
更新処理を説明する。図7はその処理フローを示したも
のである。
【0045】CH320では、入出力動作の実行中、フ
レーム喪失(例えば、CNT=0の次にCNT=2のフ
レームを受信)やシーケンスタイムアウト(フレーム送
信後、所定時間経過しても応答フレームの返送がない)
などにより、障害の発生を検出する。CH320は、障
害の発生を検出すると、該障害発生時点の時間をCH3
0内のTOD322より取得し、また、新ID_Offs
etを求める(ステップ21)。ここで、LS321のS
ID_OFFSETにてアドレッシングされるID_O
ffset3212の当該障害発生時点の値を旧ID_Offs
etと呼ぶ。該旧ID_Offsetに対し、CH320が多重
実行できる最大入出力動作数(本実施例では16)を加
え、求められる値を新ID_Offsetと呼ぶ。なお、も
しもその加えた値が65520になった場合は0とす
る。新ID_Offsetと、LS321のSID_LIM
ITにてアドレッシングされるID_Limit3213に
格納されている値と比較し(ステップ22)、不一致な
らば、ID_Offset3212に新ID_Offsetを格納
する(ステップ23)。そして、次のステップ24〜2
6の処理を行う。
【0046】ステップ24では、LS321の障害の発
生した入出力動作に関する入出力制御情報エントリ32
110のSEQ_COD32111をアイドルのコード
に更新する。これにより、当該入出力制御情報エントリ
は使用可能となる。
【0047】ステップ25では、まず、ステップ21に
て取得した障害発生時点の時間を格納するLS321の
ERROR_TOD3214内のエントリを求める。そ
のために旧ID_Offsetを、CH320が多重実行でき
る入出力動作数(本実施例では16)にて割り算を行
う。旧ID_OffsetはCH320が多重実行できる入出
力動作数(本実施例では16)を加算して求めているた
め、該割り算は必ず割りきれるはずである。該割り算に
て求めた値を4倍し(本実施例では一つのERROR_
TODエントリは4バイトであるため)、その値にSE
RROR_TODを加えたアドレスに、ステップ21で
取得した障害発生時点の時間を格納する。
【0048】ステップ26では、該障害のために入出力
動作を行っていたI/Oに対し、回復のための入出力動
作を行う。該入出力動作は、SEQ_COD32111
にアイドルのコードが格納されている入出力制御情報エ
ントリ32110に割り当てられる。当該ケースでは最
低でも一つの入出力制御情報エントリが空いている。な
ぜならば、ステップ24の処理にて、障害の発生した入
出力動作に関する入出力制御情報エントリのSEQ_C
OD32111はアイドルのコードに更新されている。
もし、該障害の回復の入出力動作が、該障害の発生した
入出力動作で使用されていた入出力制御情報エントリ3
2110に割り当てられたとしても、該障害回復の入出
力動作においてCH320がフレーム70中のOX_I
D724に使用する値は、障害の発生した入出力動作で
使用されていた値とは異なるものとなる。なぜならば、
ステップ23によりID_Offset3212の値は更新
されているため、同一入出力制御情報エントリでも、障
害回復のための入出力動作と障害発生前の入出力動作の
それぞれのケースでのOX_ID32113の値が異な
るためである。
【0049】FC−PHにおいてアボートシーケンスプ
ロトコルを行わなければならない障害時、R_A_TO
Vの時間が経過するまで、当該障害の発生した入出力動
作で使用されていたOX_ID,RX_IDの組合せに
て新たな入出力動作の起動は行えないが、本発明によれ
ば、OX_IDは異なる値となるため、R_A_TOV
の時間を待つ必要が無い。即ち、R_A_TOVの時間
を待つことなく、SEQ_COD32111がアイドル
となっている任意の入出力制御情報エントリを割り当
て、障害回復のための入出力動作のみならず、他の新た
な入出力動作を開始することが可能である。
【0050】一方、ステップ22の判定で新ID_Off
setとID_Limit3213に格納されている値とが一
致ならば、ID_Offset3212に格納する値は、旧
ID_Offsetのままとする(ステップ27)。そし
て、次のステップ28の処理を行った後、ステップ26
の処理を行う。
【0051】ステップ28では、該障害の発生した入出
力動作に関する入出力制御情報エントリ32110のS
EQ_COD32111に、該当入出力制御情報エント
リ32110が閉塞したことを示すコードを格納する。
該コードが格納されている間は、該入出力制御情報エン
トリ32110に対して新たな入出力動作を割りあてる
ことはできない。これはID_Offsetが更新されない
ため、もし該エントリが割り当てられた場合、新たな入
出力動作で使用されるOX_IDが、障害の発生した入
出力動作で使用されていたOX_IDと同じになるケー
スが発生する可能性があることによる。
【0052】ステップ26では、該障害のために入出力
動作を行っていたI/Oに対し、回復のための入出力動
作を行う。該入出力動作はSEQ_COD32111に
アイドルのコードが格納されている入出力制御情報エン
トリ32110に割り当てられるが、もし、その時点で
割り当てる入出力制御情報エントリが無ければ、次に記
述するID_Limitが更新されるまで、該入出力動作は
待たされることになる。これは、他の新たな入出力動作
を行う場合も同様である。
【0053】次に、LS321のSID_LIMITに
てアドレッシングされるID_Limit3213の更新処
理について説明する。図7はその処理フローを示したも
のである。
【0054】LS321内のID_Limit3213の更
新処理は、CH320が全ての入出力制御情報エントリ
における入出力動作が待ち状態(I/O61,62から
の応答待ち等)、もしくはアイドル状態になっている時
に行われる。
【0055】CH320は、LS321内のD_Offset
3212とID_Limit3213に格納されている値を
比較し(図8のステップ31)、もし一致するならば、
そこで処理を終了とする。一方、もし不一致ならば、ス
テップ32以降の処理を行う。
【0056】ステップ31の時点でID_Limit321
3に格納されている値を旧ID_Limitと呼ぶ。ステッ
プ32では、旧ID_Limitを16で割り算し(ID_
Limit3213の値はID_Offset3212に格納さ
れている値と同じく0→16→32・・・65504→
0→16という遷移であるため、16の割り算を行って
も必ず割りきれる)、その求めた値を4倍し(ERRO
R_TOD エントリは4バイトであるため)、その値
にSERROR_TODを加えた値で特定されるERR
OR_TODエントリ32140を読みだす。
【0057】ステップ33では、ステップ32で読みだ
したERROR_TODエントリ32140の値と、そ
の時点での時間(CH320内のTOD322の値)と
を比較する。そして、その差が規定時間(例えば、R_
A_TOV)を経過していなければ、ステップ37に
て、ID_Limit3212はその時の値(旧ID_Lim
it)のままとし、ここで処理を終了とする。
【0058】ステップ33での比較において、ERRO
R_TODエントリ3214の値とその時のTOD32
2の値との差が規定時間を超えていたならば、ステップ
34にて、旧ID_Limitに対して、該CH320が多
重実行できる入出力動作数(本実施例では16)を加算
する。ただし、その加算結果が65520になったな
ら、0とする。このようにして更新された値を新ID_
Limitと呼ぶ。この新ID_LimitをID_Limit32
13に格納する。この結果、旧ID_Limitを16で割
り算して求めた値を4倍し、その値にSERROR_T
ODを加えることによって特定されるERROR_TO
Dエントリの値は無効化されることになる。
【0059】ステップ35では、旧ID_Limitと、I
D_Offset3212に格納される値に該CH320が多
重実行できる入出力動作数分(本実施例では16)を加
えた値(65520になる場合は0となる:前記の新I
D_Offset)を比較する。もし、それらの値が一致す
るならば、該CH320中のいくつかの入出力制御情報
エントリ32110が閉塞しているかもしれない(該当
入出力制御情報エントリ中のSEQ_COD32111
に閉塞のコードが格納されている)。この場合、ステッ
プ36にて、これらの閉塞のコードが格納されている入
出力制御情報エントリ32110のSEQ_COD32
111にアイドルを示す値に更新する。この処理によ
り、アイドルの値にSEQ_COD32111を更新さ
れた入出力制御情報エントリ32110は、再び新たな
入力動作を割りあてることが可能となる。
【0060】このID_Limit更新動作を随時繰り返す
ことによって、ERROR_TOD3214中の有効な
エントリは無くなることになる。また、ID_Limit3
213を遂次更新していくことになるため、前記図7の
障害発生時の処理において、ステップ22での比較の結
果、ステップ27に進む可能性が極めて低くなり、障害
の発生した入出力動作に関する入出力制御情報エントリ
を閉塞させることもほとんどなくなる。その結果、FC
−PHに記述されているようなR_A_TOVの時間の
経過を待つ必要がなくなる。
【0061】
【発明の効果】以上説明したように、本発明によれば、
実際に多重動作できる入出力動作数(入出力制御情報エ
ントリ数)に対して、それより極めて多い数の識別子
(XID)を生成することが可能であり、入出力動作の
障害(FC−PHにおいてアボートシーケンスプロトコ
ルを行わなければならないような障害)が発生しても、
FC−PHにおいて規定されるような時間(R_A_T
OV)をほとんど待つことなく、新たな入出力動作を開
始することができ、かつ、ハードウェアの負担を回避で
きる。
【0062】なお、実施例において、R_A_TOVの
時間を待たなければならなくなるケースは、該入出力動
作の障害がR_A_TOVの時間の内に4095回以上
発生し、CH中の入出力制御情報エントリが全て閉塞し
た場合である。しかし、これだけ多くの障害が頻発する
場合はほとんど無いはずであり、あったとしてもそれは
ハードウェアの障害、もしくは接続先のスイッチ機構等
の障害が考えられ、もはや該CHにおける入出力動作の
実行が不可能な場合である。
【図面の簡単な説明】
【図1】本発明の一実施形態の情報処理システムの全体
的構成を示すブロック図である。
【図2】図1の主記憶装置(MS)内の入出力装置制御
テーブル(UCW)のフォーマット例を示す図である。
【図3】図1のチャネル装置(CH)内のローカルスト
レージ(LS)のフォーマット例を示す図である。
【図4】チャネル装置(CH)と入出力装置(I/O)
とのやりとりに使われるフレームのフォーマット例を示
す図である。
【図5】チャネル処理装置(CHP)起動時のCHでの
入出力動作開始を説明するフローチャートである。
【図6】I/O起動時のCHでの入出力動作開始を説明
するフローチャートである。
【図7】障害発生時のCHでの識別子オフセット(ID
_Offset)の更新処理を説明するフローチャートであ
る。
【図8】アイドル時などのCHでの識別子オフセット制
限値(ID_Limit)の更新処理を説明するフローチャ
ートである。
【符号の説明】
10 命令処理装置(IP) 20 主記憶装置(MS) 210〜21m 入出力装置制御テーブル(UCW) 30 入出力処理装置(IOP) 31 チャネル処理装置(CHP) 320〜32i チャネル装置(CH) 321 ローカルストレージ(LS) 322 時計機構(TOD) 3211 入出力制御情報格納部 3212 識別子オフセット格納部(ID_Offse
t) 3213 識別子オフセット制限値格納部(ID_
Limit) 3214 障害時間格納部(ERROR_TOD) 32110 入出力制御情報エントリ 32111 シーケンス状況コード(SEQ_CO
D) 32112 入出力制御情報エントリ識別子(IO_
ID) 32113 開始側の入出力動作識別子(OX_I
D) 32114 応答側の入出力動作識別子(RX_I
D) 3211A 接続先ID(DID) 41〜44 I/Oインタフェースケーブル 50 スイッチ機構 61,62 入出力装置(I/O) 70 フレーム 72 フレームヘッダ 721 送信先ID(D_ID) 722 送信元ID(SID) 723 フレーム属性 724 OX_ID 725 RX_ID

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 それぞれのフレーム上に入出力動作の識
    別子(XID)を格納し、一つ又は複数の入出力装置と
    フレーム単位で入出力動作を多重に実行するチャネル装
    置において、 複数の入出力制御情報エントリを有する記憶手段と、識
    別子オフセットを格納する手段と、入力動作の起動時
    に、該起動された入出力動作を一つの入出力制御情報エ
    ントリに割り当て、該割り当てた入出力制御情報エント
    リの識別子の値と前記識別子オフセットの値との演算結
    果を当該入出力動作で用いるフレームの識別子(XI
    D)とする手段と、入出力動作の障害発生時に、前記識
    別子オフセットの値に対し、決められた演算を行なって
    更新する手段とを設けたことを特徴とするチャネル装
    置。
  2. 【請求項2】 請求項1記載のチャネル装置において、
    識別子オフセットの更新の限界値(識別子オフセット制
    限値)を格納する手段と、現在の時間と、その時点でも
    っとも古くて有効な入出力動作の障害に関して記憶した
    時間とを比較し、その差分が規定時間を経過していれ
    ば、前記識別子オフセット制限値を更新する手段と、入
    出力動作の障害発生時、識別子オフセットの値が識別子
    オフセット制限値を越えると、該識別子オフセットの更
    新を抑止する手段とを設けたことを特徴とするチャネル
    装置。
JP11172096A 1999-06-18 1999-06-18 チャネル装置 Pending JP2001005744A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11172096A JP2001005744A (ja) 1999-06-18 1999-06-18 チャネル装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11172096A JP2001005744A (ja) 1999-06-18 1999-06-18 チャネル装置

Publications (1)

Publication Number Publication Date
JP2001005744A true JP2001005744A (ja) 2001-01-12

Family

ID=15935477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11172096A Pending JP2001005744A (ja) 1999-06-18 1999-06-18 チャネル装置

Country Status (1)

Country Link
JP (1) JP2001005744A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006309755A (ja) * 2005-04-15 2006-11-09 Toshiba Corp タグ情報を使用してコマンドバッファから廃棄されたエントリを除去するシステム及び方法
WO2008075425A1 (ja) * 2006-12-20 2008-06-26 Fujitsu Limited 通信処理プログラム、通信処理方法および通信処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006309755A (ja) * 2005-04-15 2006-11-09 Toshiba Corp タグ情報を使用してコマンドバッファから廃棄されたエントリを除去するシステム及び方法
WO2008075425A1 (ja) * 2006-12-20 2008-06-26 Fujitsu Limited 通信処理プログラム、通信処理方法および通信処理装置
JPWO2008075425A1 (ja) * 2006-12-20 2010-04-02 富士通株式会社 通信処理プログラム、通信処理方法および通信処理装置
CN101529402B (zh) * 2006-12-20 2012-02-08 富士通株式会社 通信处理装置以及通信处理方法
JP5077240B2 (ja) * 2006-12-20 2012-11-21 富士通株式会社 通信処理プログラムおよび通信処理方法

Similar Documents

Publication Publication Date Title
US5784617A (en) Resource-capability-based method and system for handling service processor requests
US5678006A (en) Network switch having network management agent functions distributed among multiple trunk and service modules
US7619965B2 (en) Storage network management server, storage network managing method, storage network managing program, and storage network management system
US8286193B2 (en) Processing received data
EP1183608B1 (en) Interconnection architecture for managing multiple low bandwidth connections over a high bandwidth link
JPH0817388B2 (ja) プロトコル・システム、動的結合装置のポートの状態を制御するための方法、動的スイッチ及び双方向伝送システムを動作させるための方法
JPH06202883A (ja) プロセス間通信装置及び通信方法
JPH10326261A (ja) 分散コンピュータ・システムのハードウェア要素によりエラーを報告するシステム
US20150268891A1 (en) Storage system
JPH10326260A (ja) 分散コンピュータ・システムのハードウェア要素によりエラーを報告する方法
JP3428538B2 (ja) アクセス網遠隔制御方式
EP2214378B1 (en) Processing received data
US6625753B1 (en) Recovery facility for an SNA communication network
CN116095145B (zh) 一种vpc集群的数据控制方法和系统
JP2001005744A (ja) チャネル装置
US5894547A (en) Virtual route synchronization
CN111431668B (zh) 基于多节点uart通讯的波特率切换方法、空调系统及处理器
JP3345546B2 (ja) データ配送方法及び情報通信装置
CN113794713A (zh) Fc-ae-1553协议桥接mil-std-1553和uart的通讯处理方法
JP3137197B2 (ja) マルチプロセッサシステム
JP2000244526A (ja) 多重化したネットワーク接続装置システム
EP1195951A2 (en) Method and apparatus for maintaining data communication during a line card soft reset operation
JPH0382244A (ja) プロセッサ間通信システム
CN115696433A (zh) 一种信息处理方法、装置和网络设备
JP2002288106A (ja) チャネル装置制御方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040622