(57)【特許請求の範囲】
【請求項１】
ホストシステムにあってＳＣＳＩインターフェースで周辺機器への入出力命令を発行するホストアダプタと、前記周辺機器を接続し前記ホストアダプタからの入出力命令をＳＣＳＩインタフェースで受けると前記周辺機器に前記入出力命令を発行する周辺アダプタと、前記ホストアダプタと前記周辺アダプタとを接続するＳＣＳＩバスと、があって、前記周辺アダプタは、前記周辺装置で発生した障害について障害の復旧を行うリトライ手順を記憶し前記発生した障害の復旧に対応するリトライ手順を前記記憶したリトライ手順から選択して実行し、実行したリトライ手順を履歴として蓄積するとともに前記ホストアダプタからリトライの再実行の指示を受けると前記履歴として蓄積したリトライ手順を先頭から逐次実行するリトライ情報制御回路を備えることを特徴とするＳＣＳＩインタフェース制御装置のリトライ処理方式。
【請求項２】
ホストシステムにあってＳＣＳＩインターフェースで周辺機器への入出力命令を発行するホストアダプタと、前記周辺機器を接続し前記ホストアダプタからの入出力命令をＳＣＳＩインタフェースで受けると前記周辺機器に前記入出力命令を発行する周辺アダプタと、前記ホストアダプタと前記周辺アダプタとを接続するＳＣＳＩバスと、があって、
前記周辺アダプタは、前記周辺装置で発生した障害について障害の復旧を行うリトライ手順をリトライ手順を識別するＩＤとともに記憶し前記発生した障害の復旧に対応するリトライ手順を前記記憶したリトライ手順から選択するリトライ情報制御回路を備えるとともに、前記記憶したリトライ手順とＩＤとを前記ホストアダプタに予め送信し、前記周辺装置で発生した障害の復旧のためのリトライ処理中に、前記ホストアダプタによるリトライ処理中断の指示を受けると障害内容と障害の復旧処理に使用したリトライ手順とを含むリトライ処理状況を前記ホストアダプタに報告し、
前記ホストアダプタは、前記周辺アダプタからの報告を受信すると前記周辺機器の障害に対し、前記周辺アダプタの実施したリトライ手順によるリトライの再実行またはＩＤの指定での新たなリトライ手順によるリトライの実行またはリトライ手順の打ち切りを含む指示を前記周辺アダプタに行うことを特徴とするＳＣＳＩインタフェース制御装置のリトライ処理方式。
【請求項３】
前記周辺アダプタは、前記ホストアダプタからＳＣＳＩインタフェースにおけるリクエストセンス命令によって問い合わせを受けると、前記リトライ処理状況をセンスデータ部分に設定して前記ホストアダプタに応答することを特徴とする請求項２記載のＳＣＳＩインタフェース制御装置のリトライ処理方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストシステムと周辺アダプタがＳＣＳＩインターフェースで接続されたコンピュータシステムにおける周辺機器で発生した入出力障害の周辺アダプタによる復旧に関し、特にホストシステムから周辺アダプタにリトライ方式を指示することを特徴とするＳＣＳＩインタフェース制御装置のリトライ処理方式に関する。
【０００２】
【従来の技術】
本発明に関するＳＣＳＩインタフェースは、周辺機器インタフェースとしてＡＮＳＩによって標準化 されており、ＳＣＳＩ（Ｓｍａｌｌ  ＣｏｍｐｕｔｅｒＳｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ） 規格と呼ばれている。なお、以下の説明において、このＳＣＳＩ規格に応じたインタフェースをＳＣＳＩインタフェースという。
【０００３】
ＳＣＳＩインタフェースは、小規模システム用の周辺機器インタフェースとして規格化されたものであるが、近年、中／大規模システム用の周辺機器インタフェースとしても多くの装置に採用されている。
【０００４】
ＳＣＳＩインタフェース上の全ての動作は、バス・フェーズというＳＣＳＩバスの使用状態を表す単位に細分化する事ができ、バス・フェーズとして以下のものがある。
【０００５】
バスフリー・フェーズ、アービトレーション・フェーズ、セレクション・フェーズ、リセレクション・フェーズ、コマンド・フェーズ、データ・フェーズ、ステータス・フェーズ、及びメッセージ・フェーズの８種類が定義されている。
【０００６】
ホストシステムと周辺装置とがバスで接続されたコンピュータシステムにおいて、近年、周辺装置の知的化に伴い周辺機器における入出力動作の失敗に対して、ホストシステムに負荷をかけずに周辺装置内部にて様々な手段のリトライを実施する傾向にあり、そのためリトライに長時間を要する場合がある。
【０００７】
【発明が解決しようとする課題】
上述したように周辺装置内部でのリトライに長時間を要した場合、その間、入出力動作のホストシステムへの応答が長時間待たされることとなり、ホストシステムが実施している処理によっては入出力処理の終了を長時間待つことが出来ない処理の場合、処理の失敗、もしくは処理の中断となってしまう。また、ホストシステムが実施している処理の中核でこの障害が発生した場合ではホストシステム全体に影響する可能性がある。
【０００８】
以上説明した事象において、ＳＣＳＩインタフェース上では、次のような動作となる。ホストアダプタから磁気ディスク装置等の周辺機器に対する書き込み、読み取り等の命令が発行されると、周辺アダプタは周辺機器の制御を行うが、周辺機器の障害発生時のリトライ処理中はＳＣＳＩバスの占有時間を減らす為、ディスコネクトメッセージによりＳＣＳＩバスを一旦開放する。リトライ完了後、ホストアダプタとの再接続のため、周辺アダプタはリセレクションを行い、リトライ結果をホストアダプタに報告する動作を行う。このため、長時間リトライ処理を行った場合、その間ディスコネクトを繰り返すことになり、入出力要求を行ったイニシエータであるホストアダプタは、その間、周辺アダプタの状態を把握することが出来ない状態となってしまう。
【０００９】
本発明の主な目的は、ＳＣＳＩバスを一旦ディスコネクトしてリトライ中の周辺アダプタに対し、周辺アダプタによるリトライ実施状況をホストアダプタから把握可能とし、リトライ処理の継続もしくはリトライ処理の打ち切りをホストアダプタから制御可能とする事を提供することにある。
【００１０】
【課題を解決するための手段】
本発明の第一のＳＣＳＩインタフェース制御装置のリトライ処理方式は、ホストシステムにあってＳＣＳＩインターフェースで周辺機器への入出力命令を発行するホストアダプタと、前記周辺機器を接続し前記ホストアダプタからの入出力命令をＳＣＳＩインタフェースで受けると前記周辺機器に前記入出力命令を発行する周辺アダプタと、前記ホストアダプタと前記周辺アダプタとを接続するＳＣＳＩバスと、があって、前記周辺アダプタは、前記周辺装置で発生した障害について障害の復旧を行うリトライ手順を記憶し前記発生した障害の復旧に対応するリトライ手順を前記記憶したリトライ手順から選択して実行し、実行したリトライ手順を履歴として蓄積するとともに前記ホストアダプタからリトライの再実行の指示を受けると前記履歴として蓄積したリトライ手順を先頭から逐次実行するリトライ情報制御回路を備えることを特徴とする。
【００１１】
本発明の第二のＳＣＳＩインタフェース制御装置のリトライ処理方式は、ホストシステムにあってＳＣＳＩインターフェースで周辺機器への入出力命令を発行するホストアダプタと、前記周辺機器を接続し前記ホストアダプタからの入出力命令をＳＣＳＩインタフェースで受けると前記周辺機器に前記入出力命令を発行する周辺アダプタと、前記ホストアダプタと前記周辺アダプタとを接続するＳＣＳＩバスと、があって、
前記周辺アダプタは、前記周辺装置で発生した障害について障害の復旧を行うリトライ手順をリトライ手順を識別するＩＤとともに記憶し前記発生した障害の復旧に対応するリトライ手順を前記記憶したリトライ手順から選択するリトライ情報制御回路を備えるとともに、前記記憶したリトライ手順とＩＤとを前記ホストアダプタに予め送信し、前記周辺装置で発生した障害の復旧のためのリトライ処理中に、前記ホストアダプタによるリトライ処理中断の指示を受けると障害内容と障害の復旧処理に使用したリトライ手順とを含むリトライ処理状況を前記ホストアダプタに報告し、
前記ホストアダプタは、前記周辺アダプタからの報告を受信すると前記周辺機器の障害に対し、前記周辺アダプタの実施したリトライ手順によるリトライの再実行またはＩＤの指定での新たなリトライ手順によるリトライの実行またはリトライ手順の打ち切りを含む指示を前記周辺アダプタに行うことを特徴とする。
【００１２】
本発明の第三のＳＣＳＩインタフェース制御装置のリトライ処理方式は、第二の発明において、前記周辺アダプタは、前記ホストアダプタからＳＣＳＩインタフェースにおけるリクエストセンス命令によって問い合わせを受けると、前記リトライ処理状況をセンスデータ部分に設定して前記ホストアダプタに応答することを特徴とする。
【００１６】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して詳細に説明する。
【００１７】
本発明の一実施例としての構成を図１をもとに説明する。
【００１８】
図１を参照すると、ホストシステムのホストアダプタ１０と、周辺機器４０の制御を行う周辺アダプタ２０とが、ＳＣＳＩバス３０により接続されている構成が示されている。
【００１９】
ホストアダプタ１０は、図示しないホストコンピュータとシステムバスによって接続され、ホストアダプタ１０の制御部を構成するＣＰＵ(中央処理装置)１１と、ＣＰＵ１１がホストアダプタ１０を制御するためのマイクロコードを格納したリード・オンリー・メモリーのＲＯＭ１３と、ＣＰＵ１１が各種のデータ処理に使用するメモリ等を設けたランダム・アクセス・メモリーのＲＡＭ１２と、ＣＰＵ１１からのデータをＳＣＳＩプロトコルに変換しＳＣＳＩバス３０上へ転送し周辺アダプタ２０との通信をおこなうＳＣＳＩインタフェース１４と、を備えている。
【００２０】
尚、ホストシステムは、ホストコンピュータとホストアダプタ１０を含むものを称するものとする。ホストコンピュータでは、アプリケーションプログラムが動作し、磁気ディスク装置等を含む周辺機器をアクセスする。そのとき、ホストコンピュータのオペレティングシステムは、当該アプリケーションプログラムからのアクセス要求を受理すると、ホストアダプタ１０にこのアクセス要求を通知し、入出力動作の実行を開始する。
【００２１】
周辺アダプタ２０は、周辺アダプタ２０の制御部を構成するＣＰＵ(中央処理装置)２１と、ＣＰＵ２１が周辺アダプタ２０を制御するためのマイクロコードを格納したリード・オンリー・メモリーのＲＯＭ２３と、ＣＰＵ２１が各種類のデータ処理に使用するメモリ等を設けたランダム・アクセス・メモリーのＲＡＭ２２と、ＣＰＵ２１からホストアダプタ１０に送信するデータをＳＣＳＩプロトコルに変換しＳＣＳＩバス３０上へ転送し、ホストアダプタ１０との通信をおこなうＳＣＳＩインタフェース２４と、を備えている。
【００２２】
そして、本発明に従って周辺アダプタ２０にはリトライ情報制御回路２５が設けられている。
【００２３】
図１の周辺アダプタ２０の制御を受ける周辺機器４０は、例えば磁気ディスク装置等を含むものであって、当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な構成は省略する。
【００２４】
図２は、本発明の実施例におけるリトライ情報制御回路２５のブロック図である。
【００２５】
リトライ情報制御回路２５は、複数のリトライ処理情報を格納しておくリトライ処理格納エリア１と、ＣＰＵ２１からのリトライ処理選択信号２を元にリトライ処理格納エリア１内のリトライ処理を選択するリトライ処理選択回路３と、リトライ処理選択回路から出力されたリトライ処理を保持するリトライ処理バッファ４と、選択されたリトライ処理をＣＰＵ２１に出力するリトライ処理情報５と、を備えている。
【００２６】
例えば、磁気ディスク装置においては、記録面からデータを読み取る時、ディスク面に生じた傷や磁気ディスクヘッドの読み取り対象トラックへの位置ずれなどによって正しく読み取りができず、エラーとなることがある。リトライ処理情報は、以上のように周辺機器４０で発生した種々の障害に対し、それぞれの障害を復旧させるための手順についての情報を含むものである。図２をみると、ＣＰＵ２１は周辺機器４０からの障害報告を受けるとその障害の復旧に対応するリトライ手順をリトライ処理格納エリア１のリトライ処理１からリトライ処理Ｎのうちから選択して周辺機器４０に対して実行する。尚、リトライ処理１からリトライ処理Ｎはリトライ処理格納エリア１の中に予め書き込まれ記憶されているものとする。この時記憶された各リトライ処理を識別するＩＤも各リトライ処理に付随して記憶するようにしてもよい。また、このように記憶されたリトライ処理とそのＩＤは、ホストアダプタ１０にも予め通知するようにしてもよい。
【００２７】
次に、本発明の実施例の動作について図面を参照して説明する。
【００２８】
以下、本実施例の動作につき図１、図２及び図３のフローチャートを元に説明する。
【００２９】
まず、図１の構成における動作について、図１を参照して説明する。
【００３０】
ホストアダプタ１０から周辺機器４０をアクセスする時、次のような処理となる。
【００３１】
ホストアダプタ１０のＣＰＵ１１で生成したデータの書き込み、読み取り等の入出力命令（コマンド）は、ＳＣＳＩインタフェース１４にてＳＣＳＩプロトコルに変換され、その出力はＳＣＳＩバス３０を通して周辺アダプタ２０のＳＣＳＩインタフェース２４に供給される。
【００３２】
周辺アダプタ２０はＳＣＳＩインタフェース２４にてホストアダプタ１０から受信したＳＣＳＩプロトコルの逆変換を実施すると、その結果を周辺アダプタ２０のＣＰＵ２１に出力する。その出力された内容をＣＰＵ２１にて解析し、例えばデータの書き込みや読み取り等の解析結果に基づき、周辺機器４０に対して入出力命令（以降、命令と略す。）を発行する。
【００３３】
周辺機器４０に対する書き込み、読み取り命令の処理を実施中に障害が発生したため、周辺アダプタ２０がリトライを実施した場合、本発明に従って設けられたリトライ情報制御回路２５にリトライ処理情報を格納する。
【００３４】
リトライ情報制御回路２５の動作について、図２を参照して説明する。
【００３５】
ＣＰＵ２１は、ＳＣＳＩインタフェース２４で受信したホストアダプタ１０からの命令を元に周辺機器４０に対して命令を実施するが、この時周辺装置４０での入出力動作等において障害が発生し、障害の復旧を行うリトライが必要な状態となった場合、ＣＰＵ２１は、発生した障害の回復に最善のリトライ処理を選択するためのリトライ処理選択信号２をリトライ情報制御回路２５に発行する。
【００３６】
リトライ情報制御回路２５では、リトライ処理格納エリア１にあらかじめ設定した複数のリトライ処理からリトライ処理選択信号２を用いてリトライ処理選択回路３にて選択し、その選択したリトライ処理をリトライ処理バッファ４に出力し、ＣＰＵ２１にリトライ処理情報５を発行する。ＣＰＵ２１はリトライ情報制御回路２５から得られたリトライ処理情報５を用いて周辺機器４０にリトライ処理を実施する。
【００３７】
更に、ホストアダプタ１０、周辺アダプタ２０及び周辺機器４０においてリトライ処理が入ったときの一連の動作については、図１、図２と、図３のフローチャートを元に説明する。
【００３８】
ホストアダプタ１０は、周辺アダプタ２０に対してホストシステムからの命令を発行する（ステップＡ０）。周辺アダプタ２０はホストアダプタ１０からの命令を受信すると、その命令に従って周辺機器４０に命令を発行する（ステップＢ０）。周辺機器４０は周辺アダプタ２０からの命令を元に処理を行い、その実行結果を周辺アダプタ２０に報告する（ステップＣ０）。周辺アダプタ２０は周辺機器４０からの実行結果の報告を元に障害の発生有無を確認し、障害の回復のためのリトライが必要か判断する（ステップＢ２）。
【００３９】
リトライが必要であるならば、ホストアダプタ１０にディスコネクトメッセージを発行し、ホストアダプタ１０との接続を一旦打ち切り、ＳＣＳＩバス３０を解放する（ステップＢ３）。これは周辺アダプタ２０による周辺機器４０に対するリトライ処理を行うにあたって、ＳＣＳＩバス３０を占有し続けることを避け、他の装置からのＳＣＳＩバス３０の使用要求があれば、その要求を実行可能とするためである。
【００４０】
（ステップＢ２）において、リトライが不必要と判断すれば、周辺機器４０の実行結果である、例えば読み込みデータをホストアダプタ１０に送信して終了する。
【００４１】
ホストアダプタ１０ではディスコネクトメッセージを受信すると、ディスコネクト命令監視時間をオーバーするまでは、周辺アダプタ２０からのホストアダプタ１０に対しての再接続要求であるリセレクション待ちを行う（ステップＡ１，Ａ２）。尚、ディスコネクト命令監視時間は、周辺アダプタ２０との接続を一旦打ち切ったディスコネクト状態の継続時間を意味するものであり、ホストアダプタ１０で設定するものである。
【００４２】
周辺アダプタ２０ではホストアダプタ１０にディスコネクトメッセージを送出した後、周辺機器４０に対してリトライ処理を行う（ステップＢ４）。なお、リトライ処理はリトライ情報制御回路２５のリトライ格納エリア１からリトライ処理を選択して行う。リトライ処理が成功すれば、周辺アダプタ２０は、ホストアダプタ１０にリセレクションを行って再接続し、入出力の結果をホストアダプタ１０に送信する。
【００４３】
ホストアダプタ１０において、周辺アダプタ２０からのリセレクションが無く、ディスコネクト命令監視時間がオーバーした場合、周辺アダプタ２０に対してアボートメッセージを送出してリトライの中止命令を実施する。その後、リクエストセンス命令を周辺アダプタ２０に発行し、周辺アダプタ２０の実施したリトライ状況を受信する（ステップＡ３，Ａ４，Ａ５）。受信したリトライ状況には周辺機器４０で発生した障害の種別とそれに対して行ったリトライ手順を含むリトライ処理状況が含まれる。
【００４４】
尚、周辺アダプタ２０によるリトライの結果、再び障害が発生した場合、最初の障害の種別とは異なった種別の障害が発生する場合もある。それに対して周辺アダプタ２１のＣＰＵ２１は最初に行ったリトライ処理とは異なるリトライ処理を選択する場合もある。
【００４５】
周辺アダプタ２０は、ホストアダプタ１０からのアボートメッセージを受信すると、周辺機器４０に対するリトライ処理を中止する(ステップＢ５）。また、周辺アダプタ２０は、続いてホストアダプタ１０からリトライ処理の状況を問い合わせるリクエストセンス命令を受信すると、リトライ情報制御回路２５内に有るリトライ制御情報５をセンスデータに反映して、ホストアダプタ１０に報告する（ステップＢ６，Ｂ７，Ｂ８）。
【００４６】
ホストアダプタ１０ではホストシステムの状況からリトライ処理の継続か、打ち切りか、また継続の場合にも周辺アダプタ２０が実施したリトライ処理とは異なる新たなリトライ処理を実施するかを判断し、その内容を周辺アダプタ２０に通知する。新たなリトライ処理もリトライ処理格納エリアに記憶されたリトライ処理から選択される。リトライ処理の継続であるならば、周辺アダプタ２０にリトライ処理の継続を通知する（ステップＡ６，Ａ７）が、周辺アダプタ２０が行ったものと異なるリトライ処理を実行指示する場合は、リトライ処理格納エリア１のリトライ処理を識別するＩＤ等による識別情報もあわせて通知することになる。
【００４７】
周辺アダプタ２０はリトライ継続を受信すると、ホストアダプタ１０にディスコネクトメッセージを送出してホストアダプタ１０との接続を一旦解除する。続いて、リトライ情報制御回路２５のリトライ処理格納エリア１からリトライ処理を選択し、必要なリトライ処理を周辺機器４０に対して行う（ステップＢ９）。
【００４８】
また、ホストアダプタ１０からリトライ情報格納エリアのリトライ処理を指定された場合は、それに従ってリトライ処理を選択し実行する。
【００４９】
ホストアダプタ１０では、ディスコネクトメッセージを受信すると、ディスコネクト命令監視時間をオーバーするまでは、周辺アダプタ２０からのホストアダプタ１０に対しての再接続要求であるリセレクション待ちを行う。以降の処理は前述した内容と同様となる。
【００５０】
周辺機器４０の処理が終了したならば、周辺アダプタ２０からホストアダプタ１０に報告する（ステップＣ２，Ｃ３，Ｂ１０，Ａ８）。
【００５１】
本発明の第二の実施例として、その基本的構成は上記の通りであるが、リトライ情報制御回路２５についてさらに工夫している。その構成を図４に示す。本図において、リトライ情報制御回路２５内のリトライ処理情報５とリトライ処理選択信号２の間にリトライ処理情報フィードバック回路６が設けてある。リトライ処理情報フィードバック回路６にはホストアダプタ１０からのアボートメッセージによってリトライの打ち切りがされるまでに周辺アダプタ２０が行ったリトライ処理をリトライ処理情報５から受けて周辺機器４０ごとに履歴として蓄積されている。ホストアダプタ１０からリトライ処理の継続を指示された場合、リトライ処理情報フィードバック回路６は、リトライ処理選択信号２に従って、蓄積したリトライ処理を先頭から逐次発行する動作を行う。尚、リトライ処理情報フィードバック回路６は、ホストアダプタ１０の指示による再リトライの実行の場合には履歴の蓄積は行わない。
【００５２】
尚、ホストアダプタ１０からこれまで周辺アダプタ２０が行ったリトライ処理とは異なるリトライ処理の実行を指示された場合は、ＣＰＵ２１によってリトライ処理情報フィードバック回路６の内容はクリアされる。
【００５３】
本実施例では、このリトライ処理情報フィードバック回路６を用いることにより、リトライ処理の継続をＣＰＵ２１にて判断することなく実行が可能となる効果が得られる。
【００５４】
【発明の効果】
このように、周辺アダプタの周辺機器に対するリトライ処理状況をホストアダプタに伝えることによりホストアダプタからのリトライ処理の継続、他のリトライ処理の実行もしくは終了を制御することが可能なる。
【００５５】
これにより、ホストシステムの処理状況によって、周辺アダプタのリトライ処理の継続／中止を動的に制御することができる。
【図面の簡単な説明】
【図１】本発明の実施例の全体構成を説明するブロック図である。
【図２】本発明の実施例の全体構成におけるリトライ情報制御回路の詳細な構成を説明するブロック図である。
【図３】本発明の実施の形態の動作を説明するフローチャートである。
【図４】本発明の第二の実施例におけるリトライ情報制御回路の詳細な構成を説明するブロック図である。
【符号の説明】
１    リトライ処理格納エリア
２    リトライ処理選択信号
３    リトライ処理選択回路
４    リトライ処理バッファ
５    リトライ処理情報
６    リトライ処理情報フィードバック回路
１０    ホストアダプタ
１１    ＣＰＵ
１２    ＲＡＭ
１３    ＲＯＭ
１４    ＳＣＳＩインタフェース
２０    周辺アダプタ
２１    ＣＰＵ
２２    ＲＡＭ
２３    ＲＯＭ
２４    ＳＣＳＩインタフェース
２５    リトライ情報制御回路
３０    ＳＣＳＩバス
４０    周辺機器
【図１】
0003664139.tif 000002
【図２】
0003664139.tif 000003
【図３】
0003664139.tif 000004
【図４】
0003664139.tif 000005