(57)【特許請求の範囲】
【請求項１】
一定のインタバル時間毎に一定の距離間隔で磁気ディスク装置の磁気ヘッドを移動させてブロックの良否をパトロール診断する磁気ディスク制御装置において、
不良ブロックを検出したとき該不良ブロックの後方又は前方に隣接するブロック位置に該磁気ヘッドをそれぞれ戻して又は進めてブロックの良否を診断する後方又は前方隣接診断を不良でないブロックが検出されるまで繰り返し行い、
該後方又は前方隣接診断において不良でないブロックが検出された場合に、それぞれ、次のパトロール診断は最初の不良ブロックの前方又は後方に隣接するブロック位置に該磁気ヘッドを移動させてブロックの良否をそれぞれ診断する前方又は後方隣接診断を不良でないブロックが検出されるまで繰り返し行い、そして、
該前方又は後方隣接診断において不良でないブロックが検出された場合に、次のパトロール診断は、該距離間隔を第１の距離間隔としたとき該第１の距離間隔より短い第２の距離間隔で該磁気ヘッドを移動してブロックの良否を診断する追跡診断を繰り返し行い、該追跡診断により一定時間経過後までに不良ブロックが検出出来なかった場合に磁気ヘッドの移動距離を該第１の距離間隔に戻して診断することを特徴とした磁気ディスク制御装置。
【請求項２】
請求項１において、
該後方又は前方隣接診断時に該インタバル時間より短いインタバル時間でパトロール診断を行うことを特徴とした磁気ディスク制御装置。
【請求項３】
請求項２において、
該追跡診断時に該インタバル時間より短いインタバル時間でパトロール診断を行うことを特徴とした磁気ディスク制御装置。
【発明の詳細な説明】
【発明の属する技術分野】
本発明は磁気ディスク制御装置に関し、特に上位装置と独立して定期的にパトロール診断を行う磁気ディスク制御装置に関するものである。
【０００１】
近年のコンピュータシステムは、膨大な情報を磁気ディスク装置に記憶して保持している。この磁気ディスク装置は動作環境（例えば温度、湿度、振動、衝撃、高度等）が悪い場所で利用する場合や、長期間利用することなくアクセス頻度が少ない場合や、総合運転時間が長い場合には、ディスク内の微小なゴミや水滴などが磁気ヘッドやディスク表面に付着して堆積して行き、ヘッドクラッシュを起こしたり、不良ブロックを発生したりする。
【０００２】
このような事態は、磁気ディスク装置に記憶されている重要な情報を損失することになり、コンピュータシステムの全稼働率と信頼性を低下することにつながる。
【０００３】
従って、上位装置と独立して定期的にパトロール診断することで、ヘッドクラッシュ及び不良ブロックの発生を事前に回避すると共に、発生した不良ブロックを迅速に発見できる磁気ディスク制御装置が必要とされている。
【０００４】
【従来の技術】
従来の磁気ディスク制御装置は、上位装置のオペレーティングシステムやアプリケーションプログラムとは独立して、一定のインタバル時間をおいて磁気ディスク装置を起動し、磁気ディスク装置中の磁気ヘッドを一定の距離間隔でディスク表面上を移動させることで、磁気ヘッドやディスク表面に付着したゴミを振り払い、ヘッドクラッシュを事前回避していた。
【０００５】
また、磁気ディスク制御装置は、磁気ヘッドが移動した位置のブロックをリードすることで、同時にそのブロックの良否を判定していた。これをより具体的に説明する。
【０００６】
図１５は従来の磁気ディスク制御装置におけるパトロール診断の動作原理を示しており、図中、４０は磁気ヘッド、５０はディスク表面を示し、同図（１）の「ブロック」は１回のパトロール診断で検査するディスク表面５０の１ブロックを“□”で表したものであり、同図（２）の「ブロック番号」はブロックに付けた通し番号（同図においては一例として１〜１８Ｋ（Ｋは正の整数））であり、同図（３）の「診断順序」はブロックをパトロール診断する順番を示しており、そして、同図（４）の「インタバル時間，移動間隔」は次のパトロール診断を行うまでの時間Ｔと移動する距離間隔Ｋ（単位はブロック数）を表している。
【０００７】
実線で示されている磁気ヘッド４０は、まず「診断順序」＝１である「ブロック番号」＝１のブロックの良否を判定し、次に「インタバル時間」＝Ｔ（例えば１時間）後に「移動間隔」＝Ｋ（例えば４）ブロックだけ移動した磁気ヘッド４０（破線で示されている）の位置に移動して「診断順序」＝２の「ブロック番号」＝Ｋ＋１のブロックの良否を判定する。
【０００８】
以後同様にして、インタバル時間Ｔ毎にＫブロック分移動して順次「診断順序」＝３〜１８までのパトロール診断を実行する。
【０００９】
診断番号１９のパトロール診断はブロック番号＝２のブロックに戻って実行され、さらに以後のパトロール診断は、インタバル時間Ｔ毎にＫブロック分だけ移動して実行される。
【００１０】
ブロック番号が１８Ｋを超えるとまだパトロール診断が実行されていない一番若いブロック番号のブロックに戻り、全てのブロックのパトロール診断が完了するとブロック番号１のブロックに戻り同じ動作を繰り返す。
【００１１】
上記の動作により磁気ヘッド４０は均等にディスク表面５０の上を移動して磁気ヘッド４０やディスク表面５０に付着したゴミを振り払うと共に、全てのブロックの良否を判定することとなる。
【００１２】
【発明が解決しようとする課題】
図１６は従来のディスク制御装置におけるパトロール診断による不良ブロックの発見手順を示しており、パトロール診断の動作は図１５の原理と同じである。
【００１３】
ただし、図１６において、例えば連続したブロック番号７Ｋ，７Ｋ＋１，７Ｋ＋２のブロック（×記号で示されている）に不良が発生して不良ブロック群Ａを形成し、さらにこの不良ブロック群Ａの近くの連続したブロック番号１０Ｋ，１０Ｋ＋１，１０Ｋ＋２のブロック（×記号で示されている）にも不良が発生して不良ブロック群Ｂを形成しているものとする。
【００１４】
磁気ディスクの動作環境が悪い場合には、発生原因が同じ不良ブロック群Ａ，Ｂが接近して形成されることは有り得ることである。
【００１５】
▲１▼まず、不良ブロック群Ａに属する各不良ブロックが従来のパトロール診断によって発見される手順と時間を考える。
【００１６】
この不良ブロック群Ａの中で最初に発見されるブロックは「診断順序」＝８でブロック番号＝７Ｋ＋１の不良ブロックである。しかしこの不良ブロックに隣接するブロック番号＝７Ｋ，７Ｋ＋２の不良ブロックはこの時点では発見されない。
【００１７】
「診断順序」＝２６で「ブロック番号」＝７Ｋ＋２のブロックの不良が発見される時点は、「ブロック番号」７Ｋのブロックの不良が発見された（２６−８）Ｔ時間後となる。例えばインタバル時間Ｔ＝１時間とすれば１８時間後となる。
【００１８】
さらに「ブロック番号」＝７Ｋのブロックの不良が発見されるのはさらに後の時間となる。
【００１９】
すなわち、不良ブロック群Ａに属する連続した全ての不良ブロックを発見するには時間が掛かるという問題がある。
【００２０】
▲２▼次に、不良ブロック群Ａに属する不良ブロックが発見された後に不良ブロック群Ｂに属する不良ブロックが発見される手順と時間を考える。
【００２１】
不良ブロック群Ａの中で最初に不良が発見されるブロックは上記▲１▼の場合と同様に「診断順序」＝８でブロック番号＝７Ｋ＋１の不良ブロックである。
【００２２】
不良ブロック群Ｂの中で最初に不良が発見されるブロックは「診断順序」＝１１でブロック番号＝１０Ｋ＋１の不良ブロックである。
【００２３】
従って、不良ブロック群Ａに属する不良ブロックが発見された後に不良ブロック群Ｂに属する不良ブロックが発見されるまでの時間は、（１１−８）Ｔ時間である。例えばＴ＝１時間とすれば３時間後となる。
【００２４】
また、例えば不良ブロック群Ｂが「診断順序」１１と１２のブロックの間で発生した場合には、パトロール診断の１１番目と１２番目のパトロール診断で発見することが出来ず不良ブロック群Ｂの発見はさらに遅れることとなる。
【００２５】
すなわち、不良ブロック群Ａと同じ原因で発生した不良ブロック群Ｂの不良の発見が遅れるという問題がある。
【００２６】
この問題を解決するために、単位時間当たりのパトロール診断の回数を増やしてインタバル時間Ｔを短くすると、上位装置のアプリケーションプログラム等からの入出力要求とパトロール診断の起動要求とが衝突する可能性が高くなる。
【００２７】
この結果、本来の業務であるアプリケーションプログラムの応答時間を遅らせることとなりコンピュータシステム全体の性能低下につながってしまう。
【００２８】
従って本発明は、一定のインタバル時間毎に一定の距離間隔で磁気ディスク装置の磁気ヘッドを移動させてブロックの良否をパトロール診断する磁気ディスク制御装置において、▲１▼不良ブロック群に属する連続した全ての不良ブロックを短い時間で発見すること、及び▲２▼複数の近傍の不良ブロック群を短い時間で発見すること、を目的とする。
【００２９】
【課題を解決するための手段】
〔１〕上記の目的を達成するため、本発明に係る磁気ディスク制御装置は、まず、不良ブロックを検出したとき該不良ブロックの後方又は前方に隣接するブロック位置に該磁気ヘッドをそれぞれ戻して又は進めてブロックの良否を診断する後方又は前方隣接診断を不良でないブロックが検出されるまで繰り返し行う。
【００３０】
すなわち、最初に不良ブロックを発見すると後方又は前方隣接診断を実行して最初の不良ブロックの後方又は前方に連続して隣接する全ての不良ブロックを順次検出する。
【００３１】
さらに、該後方又は前方隣接診断において不良でないブロックが検出された場合に、それぞれ、次のパトロール診断は最初の不良ブロックの前方又は後方に隣接するブロック位置に該磁気ヘッドを移動させてブロックの良否をそれぞれ診断する前方又は後方隣接診断を不良でないブロックが検出されるまで繰り返し行う。
【００３２】
すなわち、後方又は前方の連続した不良ブロックを全て発見した後に、それぞれ前方又は後方隣接診断を実行することにより、最初の不良ブロックの前方又は後方に連続して隣接した全ての不良ブロックについても順次検出する。
【００３３】
そしてさらに、該前方又は後方隣接診断において不良でないブロックが検出された場合に、次のパトロール診断は、該距離間隔を第１の距離間隔としたとき該第１の距離間隔より短い第２の距離間隔で該磁気ヘッドを移動してブロックの良否を診断する追跡診断を行い、該追跡診断により一定時間経過後までに不良ブロックが検出出来なかった場合に磁気ヘッドの移動距離を該第１の距離間隔に戻して診断する。
【００３４】
すなわち、前方及び後方隣接診断モードで発見された不良ブロック群の後方のブロックについてパトロール診断の移動距離を短くした追跡診断を一定時間だけ実行するすることで、不良ブロック群の近傍後方の不良ブロック群を検出することが出来る。
【００３５】
〔２〕さらに本発明では、上記〔１〕において、該後方又は前方隣接診断時に該インタバル時間より短いインタバル時間でパトロール診断を行うことができる。
【００３６】
すなわち、連続した後方又は前方隣接診断を短い時間で実行することで隣接する不良ブロックの発見を早めることが出来る。
【００３７】
〔３〕また本発明では、上記〔２〕において、該追跡診断時に該インタバル時間より短いインタバル時間でパトロール診断を行うことも出来る。
【００３８】
すなわち、連続した追跡診断を短い時間間隔で実行することで不良ブロック近傍の不良ブロックの発見を早めることが出来る。
【００３９】
【発明の実施の形態】
図１は従来例を示した図１５，図１６に対する本発明に係る磁気ディスク制御装置のパトロール診断の動作原理〈１〉を示しており、本発明においては、図１（４）の「インタバル時間」及び「移動間隔」が「診断モード」よって変化させられるようになっている点が異なっている。この「診断モード」は次の４種類に分類されている。
【００４０】
(ｉ)従来と同じ通常診断モード： 前方に向かう破線の矢印。「インタバル時間」＝Ｔ時間，「移動間隔」＝Ｋブロック。
(ii)後方隣接診断モード：後方に向かう実線の矢印。「インタバル時間」＝τ，「移動間隔」＝１ブロック。
(iii)前方隣接診断モード：前方に向かう実線の矢印。「インタバル時間」＝τ，「移動間隔」＝１ブロック。
(iv)追跡診断モード：前方に向かう１点鎖線の矢印。「インタバル時間」＝ｔ，「移動間隔」＝ｋブロック。
【００４１】
なお、「インタバル時間」にはＴ＞ｔ＞τ、「移動間隔」にはＫ＞ｋ＞１の関係があるものとする。一例として「インタバル時間」：Ｔ＝１時間，ｔ＝１０分，τ＝１秒、「移動間隔」：Ｋ＝４ブロック，ｋ＝２ブロック等である。
【００４２】
図２は本発明に係る磁気ディスク制御装置の動作原理〈１〉における診断モードの状態遷移とその遷移の要因（不良ブロックの有／無、後述する追跡カウンタのカウントアップの有／無）との関係を示している。
【００４３】
また、同図は次のパトロール診断を実行するための「パトロール診断位置（ブロック番号）」，「インタバル時間」，及び「追跡カウンタ」の設定と、「追跡カウンタ」の演算と、「不良ブロック位置」の記憶データの指定とを示している。
【００４４】
なお、図中の「長距離」、「短距離」はそれぞれ図１の「移動間隔」Ｋ，ｋに相当し、「長時間」、「短時間」、及び「瞬間」はそれぞれ図１の「インタバル時間」Ｔ，ｔ，及びτに相当している。
【００４５】
図１のパトロール診断の動作を図２を参照して説明する。なお、初期状態の診断は通常診断モードであるものとする。
【００４６】
まず、図１（３）の「診断順序」が“１”である同図（２）の「ブロック番号」が“１”の「ブロック」（以後、診断順序“１”のブロック等と称することがある）がパトロール診断（以後、単に診断と称することがある）され、□で図示された正常なブロックであるので「不良ブロックなし」と判定される。
【００４７】
ここで、現在の状態は(ｉ)通常診断モード及び「不良ブロックなし」に基づいて図２の状態遷移図を参照すると、次の状態は(ｉ)通常診断モードであることと、次の「パトロール診断位置」は現在の「パトロール診断位置（ブロック番号“１”）」に「長距離」であるＫブロックを加算したＫ＋１番目のブロックであることと、「インタバル時間」は「長時間」であるＴ時間に設定されている。
【００４８】
したがって、次の診断位置である図１（２）のブロック番号“Ｋ＋１”のブロックは、同図（３）の「診断順序」が“２”となっており、 同図（４）の「診断モード」には(ｉ)通常診断モードを表す破線の矢印が診断順序“１”のブロックからＫブロック後の診断順序“２”のブロックまで延び、その下にインタバル時間Ｔ及び移動間隔Ｋ（ブロック数）が記入されている。
【００４９】
診断順序“２”〜“７”のブロックは不良でないため、(ｉ)通常診断モード状態は変わらず各パトロール診断は磁気ヘッドをＴ時間毎にＫブロック分づつ移動して実行される。
【００５０】
診断順序“８”のブロックは×で図示される「不良ブロックあり」と判定され、この判定結果と現在の状態である(ｉ)通常診断モードとに基づいて図２を参照すると次の状態は(ii)後方隣接診断モードとなり診断位置は現在の診断位置の１ブロック前（パトロール診断位置−１ブロック＝“９”）で、次の診断までのインタバル時間は瞬間的なτ秒である。
【００５１】
さらに、「不良ブロック位置」に最初に不良が検出されたパトロール診断位置であるブロック番号“７Ｋ＋１”が記憶される。
【００５２】
診断順序“９”のブロックも「不良ブロックあり」と判定され、この判定結果と(ii)後方隣接診断モードとをキーとして図２を参照し、次の状態は(ii)後方隣接診断モード、診断位置は現在の診断位置の１ブロック前、及びインタバル時間はτ秒であり、診断順序“１０”が指定される。
【００５３】
診断順序“１０”のブロックは「不良ブロックなし」で、現在の状態は(ii)後方隣接診断モードであることから、次の状態は(iii)前方隣接診断モードとなり「不良ブロック位置」＋１のブロック番号“７Ｋ＋２”が診断順序“１１”のブロックとなり、インタバル時間はτ秒である。
【００５４】
診断順序“１１”のブロックは「不良ブロックあり」と判定され、この判定結果と現在の状態である(iii)前方隣接診断モードとに基づいて図２を参照すると診断モードは変わらず次の診断位置は現在の診断位置＋1ブロック＝“１２”で、インタバル時間はτ秒である。
【００５５】
診断順序“１２”のブロックは「不良ブロックなし」と判定され、この判定結果と現在の状態である(iii)前方隣接診断モードとに基づいて図２を参照すると次の状態は(iv)追跡診断モードとなり、次の診断位置は現在の移動距離間隔よりも短くなって現在の診断位置＋ｋブロックとなり、好ましくはインタバル時間もｔ分に短縮する。さらに、追跡診断の回数を計数する追跡カウンタを“０”にクリアする。
【００５６】
ここで、「追跡診断」が繰り返し実行され一定時間以上経過しても不良ブロックが発見できない場合には「通常診断」に移行することとし、一定時間の経過の判定は「追跡診断」のインタバル時間が一定であるので、診断回数を計数して「追跡診断」の終了回数値（例えば１２回）を超えたか否かによって行うこととする。
【００５７】
「追跡診断」に移って初めて診断される診断順序“１３”の正常なブロックにおいては、まず追跡カウンタの値“０”が追跡診断終了値“１２”未満であるので（図２中の“ＹＥＳ”）、次の診断位置は現在の診断位置からｋブロック後方のブロックであり、インタバル時間はｔ時間である。また追跡カウンタは１だけ加算される。
【００５８】
診断順序１４〜１６においても正常なブロックが検出され、追跡診断が実行されるとともに「追跡カウンタ」が各診断毎に１だけ加算され診断順序１６の時点で「追跡カウンタは」＝“４”となっている。
【００５９】
診断順序“１７”の不良ブロックにおいては、(iv)追跡診断モード及び「不良ブロックあり」となり、次の状態は(ii)後方隣接診断モード、次の診断位置は現在の診断位置の１ブロック前、次の診断までのインタバル時間はτ秒である。
【００６０】
さらに、「不良ブロック位置」に追跡診断後に始めて不良が検出されたパトロール診断位置である診断順序“１７”のブロック番号が記憶される。
【００６１】
この診断順序“１７”においては、上記の診断順序“８”と同じ診断モード状態の変化と設定が行われている。
【００６２】
以下同様にして、診断順序“１８”で後方隣接診断が実行され、診断順序“１９”〜“２１”で前方隣接診断が実行されて診断順序“１９”と“２０”において不良ブロックが発見され、診断順序“２２”〜“３３”で追跡診断が実行される。
【００６３】
この追跡診断においては、各診断毎に「追跡カウンタ」が１だけ加算され、診断順序３３の時点において「追跡カウンタ」は“１２”となっている。
【００６４】
診断順序“３３”のブロックにおいては、(iv)追跡診断モード、「不良ブロックなし」、及び「追跡カウンタ」＜終了値（＝１２）ではないことから、図中の判定は“ＮＯ”となり、次の診断モードは(ｉ)通常診断モードで、次の診断位置は現在の診断位置にＫブロックを加算したブロックとなり、インタバル時間はＴ時間となる。
【００６５】
診断順序“３３”以下は上記の診断順序“１”以下と同様に不良ブロックが発見されるまで通常診断が実行される。
【００６６】
上記の図１及び図２におけるパトロール診断は、(ｉ)通常診断モード（又は(iv)追跡診断モード），(ii)「後方隣接診断モード」，(iii)「前方隣接診断モード」，(iv)追跡診断モードの順に診断モード状態を遷移させて実行したが、(ｉ)通常診断モード（又は(iv)追跡診断モード），(iii)前方隣接診断モード，(ii)後方隣接診断モード，(iv)追跡診断モードの順に診断モード状態を言わば逆方向に遷移させて実行しても全く同様にして不良ブロック群Ａ及びＢに属する不良ブロックを検出することができる。
【００６７】
これを簡単に説明すると、図３及び図４は、パトロール診断を(ｉ)通常診断モード（又は(iv)追跡診断モード），(iii)前方隣接診断モード，(ii)後方隣接診断モード，(iv)追跡診断モードの順に実行した場合の動作原理〈２〉とその状態遷移をそれぞれ示している。
【００６８】
図３においては、診断順序８の不良ブロック検出後は、前方隣接診断が順序９，１０のブロックと、後方隣接診断が順序１１，１２のブロックでそれぞれ実行されて順序９及び順序１１の診断で不良ブロックが検出されている。
【００６９】
同様にして、診断順序１７の不良ブロック検出後は、順序１８〜２２の診断についても前方隣接診断、後方隣接診断が順次実行されて順序１８，１９の診断で不良ブロックが検出されている。
【００７０】
図４においは、(ｉ)通常診断モード及び(iv)追跡診断モードの「不良ブロックあり」の場合には、次の状態を(iii)前方隣接診断モードとし、次の診断位置は現在の診断位置に１ブロック加算して前方隣接のブロックを指定している。
【００７１】
また、(iii)前方隣接診断モードの「不良ブロックなし」の場合は、次の状態を(ii)後方隣接診断モードとし、次の診断位置は不良ブロック位置−１ブロックの位置のブロックを指定している。
【００７２】
さらに、(ii)後方隣接診断モードの「不良ブロックなし」の場合は、次の状態を(iv)追跡診断モードとし、次の診断位置は現在の診断位置にｋブロック加算して前方隣接のブロックを指定するとともに、「追跡カウンタ」が“０”にクリアされている。
【００７３】
同図のその他の診断モード状態遷移、診断位置、インタバル時間、不良ブロック位置の記憶等は図２の場合の手順と同じである。
【００７４】
【実施例】
図５は、本発明に係る磁気ディスク制御装置の実施例を機能構成で示しており、磁気ディスク装置１と磁気ディスク制御装置２は磁気ディスクインタフェースケーブル３を介して接続されている。
【００７５】
磁気ディスク装置１は磁気ヘッド４０、ディスク５０（図１，３参照）、アクセスアームなどの媒体（図示せず）そのものを示す磁気ディスク４と、この磁気ディスクを駆動制御する磁気ディスク制御部５と、この磁気ディスク制御部５と磁気ディスク制御装置２との間のデータや制御信号を送受信するインタフェースとしての上位装置インタフェース制御部６とで構成されている。
【００７６】
磁気ディスク制御装置２は磁気ディスク装置１の上位装置インタフェース制御部６と上記のデータや制御信号を送受信するインタフェースとしての磁気ディスクインタフェース制御部７と、このインタフェース制御部７を介して磁気ディスク装置１を制御する入出力命令制御部８と、オペレーティングシステム又はアプリケーションプログラムからの入出力割込みを受け付ける入出力割込み受付部９と、この入出力割込み受付部９からの割込み要求を解析してオペレーティングシステム又はアプリケーションプログラムからの入出力要求に応じて入出力命令制御部８内の制御回路を起動する割込み制御部１０とで構成されている。
【００７７】
さらに、磁気ディスク制御装置２はパトロール診断のインタバル時間を記憶するインタバル時間記憶部１１と、このインタバル時間記憶部１１に記憶されたインタバル時間が経過するとパトロール診断を要求する割込み信号を割込み制御部１０に送るパトロール診断起動部１２と、パトロール診断要求の割込み信号を受けた割込み制御部１０からパトロール診断命令を受けて所定の診断モードでパトロール診断を実行するための制御命令を入出力命令制御部８に送る不良ブロック自動追尾パトロール診断制御部１３と、このパトロール診断制御部１３の制御動作に必要なパトロール診断位置を記憶するパトロール診断位置記憶部１４と、不良ブロック位置を記憶する不良ブロック位置記憶部１５と、追跡診断の回数を計数する追跡カウンタ記憶部１６と、パトロール診断位置記憶部１４が指定する診断位置が最大ブロック数を越えた時に戻る起点ブロック位置を指定する起点カウンタ記憶部１７と、「不良ブロックなし／あり」の診断結果を記憶する診断結果記憶部１８と、現在の診断モード状態を記憶する診断モード記憶部１９と、後述する診断モード状態を不良ブロックの有無に関して示した状態遷移テーブルを記憶した状態遷移表記憶部２０と、で構成されている。
【００７８】
図６及び図７は上記の割込み制御部１０及び不良ブロック自動追尾パトロール診断制御部１３の動作をそれぞれ示すフローチャート図である。
【００７９】
図８は図７で示されるパトロール診断制御部１３に設定されている診断モードの状態遷移テーブル図であり、図２の状態遷移表図に対応している。
【００８０】
図８中には、「通常診断モード」、「後方隣接診断モード」、「前方診断モード」、及び「追跡診断モード」にはそれぞれ状態番号０，１，２，３が付され、「不良ブロックなし」及び「不良ブロックあり」にはそれぞれ診断結果（又は要因）番号０，１が付されている。
【００８１】
図９〜図１２は図７で示されるパトロール診断制御部１３の動作中において用いられる、通常診断モード、後方隣接診断モード、前方隣接診断モード、及び追跡診断モードにそれぞれ対応した処理を示すフローチャート図である。
【００８２】
上記の図９〜図１２のフローチャートは状態遷移の要因である不良ブロックの有／無に対応して（１）「不良ブロックなし」の場合の処理と、（２）「不良ブロックあり」の場合の処理とに別れている。
【００８３】
以下、図５の実施例の動作を図６〜図１２を参照して説明する。初期状態として「通常診断モード」の状態番号である“０”が診断モード記憶部１９に設定され、通常診断時のインタバル時間Ｔ（例えば１時間）がインタバル時間記憶部１１に設定され、最初にパトロール診断する磁気ディスクのブロック位置である例えば“１”がパトロール診断位置記憶部１４及び起点カウンタ記憶部１７に設定されている。
【００８４】
なお、不良ブロック位置記憶部１５、追跡カウンタ記憶部１６、診断結果記憶部１８は初期設定されていない。
【００８５】
パトロール診断起動部１２は時間を計測し、インタバル時間記憶部１１に設定された１時間が経過すると割込み制御部１０にパトロール診断を要求するための割込み信号を送る。
【００８６】
割込み制御部１０は、入出力割込み受付部９から入出力命令割込みが発生している場合（図６のステップＳ１の“Ｙｅｓ”）は、入出力命令割込みに該当する制御部を起動する命令を入出力命令制御部８に送り、この起動命令を受けて入出力命令制御部８は所定の入出力動作を実行する（同ステップＳ２）。
【００８７】
そして、割込み制御部１０は入出力制御部８を起動した後に入出力割込みの発生を監視する動作に戻る（同ステップＳ１）。
【００８８】
入出力命令割込みが発生していない場合（同ステップＳ１の“Ｎｏ”）には、割込み制御部１０は、パトロール診断起動部１１からパトロール診断の割込みが発生していない場合（同ステップＳ３の“Ｎｏ”）は，入出力命令割込みの発生を確認する動作に戻る（同ステップＳ１）。
【００８９】
パトロール診断の割込みが発生している場合（同ステップＳ３の“Ｙｅｓ”）は、割込み制御部１０は不良ブロック自動追尾パトロール診断制御部１３（以後パトロール診断制御部１３と略称することもある）に起動命令を送りこのパトロール診断制御部１３を起動する（同ステップＳ４）。
【００９０】
割込み制御部１０はパトロール診断制御部１３を起動した後に入出力割込みの発生を監視する動作に戻る（同ステップＳ１）。
【００９１】
割込み制御部１０から起動命令を受けて起動したパトロール診断制御部１３は（図７のステップＳ４）、パトロール診断位置記憶部１４からパトロール診断を実行するブロック位置“１”を読み、ディスクのブロック“１”のデータを読込む命令を入出力命令制御部８に送り、この命令を受けた入出力命令制御部８は磁気ディスクインタフェース制御部７を介して磁気ディスク装置１からブロック“１”のデータを受信する動作を実行し、受信したデータをパトロール診断制御部１３に送る（同ステップＳ５）。
【００９２】
ブロック“１”のデータを受けたパトロール診断制御部１３は、このデータにエラーが発生しているか否かを検査し（同ステップＳ６）、例えばエラーが発生していない場合（同ステップＳ６の“Ｎｏ”）は、診断結果記憶部１８を“０”とする（同ステップＳ７）。
【００９３】
上記の処理を実行したパトロール診断制御部１３は、図８の状態遷移テーブルを記憶している状態遷移表記憶部２０を参照して次の診断モードに移る処理を実行する。
【００９４】
すなわち、パトロール診断制御部１３は、診断モード記憶部１９より「通常診断モード」を示す“０”を読み出し、診断結果記憶部１８より「不良ブロックなし」を示す“０”を読み出し、図８の状態遷移テーブルを参照して「処理００」を実行することとなる。
【００９５】
「処理００」の内容は図９（１）に示されており、次の診断モードを実行するために、パトロール診断位置記憶部１４の記憶値“１”に移動ブロック数Ｋ＝“４”を加算した“５”をパトロール診断位置記憶部１４の新しい記憶値とし（同図（１）ステップＳ２０）、インタバル時間記憶部１１を１時間に設定し（同ステップＳ２１）、診断モード記憶部１８を通常診断モードである“０”に設定して（同ステップＳ２２）、処理を終了する（同ステップＳ２３）。
【００９６】
上記の「処理００」を終了したパトロール診断制御部１３は、パトロール診断位置記憶部１４の記憶値“５”と最大ブロック番号“４０”とを比較して（図７のステップＳ１１）、最大ブロック番号値より記憶値が小さいので（同ステップＳ１１の“Ｙｅｓ”）処理を終了する（同ステップＳ１４）。
【００９７】
一方、インタバル時間記憶部１１が１時間に設定された時点（図９のステップＳ２１）から１時間後にパトロール診断起動部１２は割込み制御部１０にパトロール診断割込みを要求し、これを受けた割込み制御部１０はパトロール診断制御部１３を起動する（図６のステップＳ４）。
【００９８】
このパトロール診断制御部１３は（図７のステップＳ４）、パトロール診断位置記憶部１４からブロック位置“５”を読み込み、磁気ディスク装置１からブロック“５”のデータを受信する（同ステップＳ５）。
【００９９】
ブロック“５”のデータを受けたパトロール診断制御部１３は、このデータにエラーが発生しているか否かを検査し（同ステップＳ６）、例えばエラーが発生している場合（同ステップＳ６の“Ｙｅｓ”）は、診断結果記憶部１８を“１”とし（同ステップＳ８）、さらにディスクの復旧処置やエラーであることを上位装置に知らせる処理を実行する（同ステップＳ９）。
【０１００】
そして、パトロール診断制御部１３は、診断モード記憶部１９より“０”を読み出し、診断結果記憶部１８より「不良ブロックあり」を示す“１”を読み出し、図８の状態遷移テーブルを参照して「処理０１」を実行することとなる。
【０１０１】
図９（２）の「処理０１」において、パトロール診断制御部は１３は、パトロール診断位置記憶部１４の記憶値“５”を不良と判定された最初のブロックの番号として不良ブロック位置記憶部１５に記憶させ（同図（２）ステップＳ２４）、パトロール診断位置記憶部１４の記憶値“５”を１だけ減算した“４”をパトロール診断位置記憶部１４の新しい記憶値とし（同ステップＳ２５）、インタバル時間記憶部１１を１秒に設定し（同ステップＳ２６）、診断モード記憶部１８を後方隣接診断モードである“１”に設定して（同ステップＳ２７）、処理を終了する（同ステップＳ２８）。
【０１０２】
「処理０１」を終了したパトロール診断制御部１３は、パトロール診断位置記憶部１４の記憶値“４”と最大ブロック番号“４０”とを比較して（図７のステップＳ１１）、最大ブロック番号値より記憶値が小さいので（同ステップＳ１１の“Ｙｅｓ”）処理を終了する（同ステップＳ１４）。
【０１０３】
一方、インタバル時間記憶部１１が１秒に設定された時点（図９のステップＳ２１）から１秒後にパトロール診断起動部１２は割込み制御部１０を介してパトロール診断制御部１３を起動する（図６のステップＳ４）。
【０１０４】
このパトロール診断制御部１３は（図７のステップＳ４）、パトロール診断位置記憶部１４から記憶値（ブロック位置）“４”を読み出し、磁気ディスク装置１からブロック“４”のデータを受信し、このデータにエラーが発生しているか否かを検査し（同ステップＳ６）、例えばエラーが発生した場合（同ステップＳ７の“Ｙｅｓ”）は、診断結果記憶部１８を“１”とし（同ステップＳ８）、復旧処理等を実行する（同ステップＳ９）。
【０１０５】
そして、状態遷移表記憶部２０を参照し、診断モード記憶部１９の値“１”及び診断結果記憶部１８の値“１”に基づいてパトロール診断制御部１３は「処理１１」を選択しコールする（同ステップＳ１０）。
【０１０６】
この「処理１１」では、パトロール診断位置記憶部１４の値“４”から“１”だけ減算した“３”とし（図１０（２）のステップＳ３４）、インタバル時間記憶部１１を１秒とし（同ステップＳ３５）、診断モード記憶部１９を“１”として終了する（同ステップＳ３６，３７）。
【０１０７】
以下、パトロール診断起動部１２、割込み制御部１０、及びパトロール診断制御部１３が上記と同様の動作を実行し、磁気ディスクのブロック“３”のデータが読込まれ（図７のステップＳ５）、例えば「不良ブロックなし」と判定されて診断結果記憶部１８に“０”が書き込まれる（同ステップＳ８）。
【０１０８】
パトロール診断制御部１３は、状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“１”及び診断結果記憶部１８の値“０”から「処理１０」をコールする（図７のステップＳ１０）。
【０１０９】
この「処理１０」において、パトロール診断位置記憶部１４の値を不良ブロック位置記憶部１５の記憶値“５”に“１”を加算した“６”とし（図１０（１）のステップＳ３０）、インタバル時間記憶部１１を１秒とし（同ステップＳ３１）、診断モード記憶部１９を“２”として終了する（同ステップＳ３２，Ｓ３３）。
【０１１０】
以下、パトロール診断起動部１２、割込み制御部１０、及びパトロール診断制御部１３が上記と同様の動作を実行し、例えばブロック“６”が「不良ブロックあり」と判定されて診断結果記憶部１８に“１”が書き込まれる（図７のステップＳ８）。
【０１１１】
パトロール診断制御部１３は状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“２”、及び診断結果記憶部１８の値“１”から「処理２１」が選択される（図７のステップＳ１０）。
【０１１２】
この「処理２１」においてパトロール診断位置記憶部１４の値“６”は“１”加算した“７”となり（図１１（２）のステップＳ４５）、インタバル時間記憶部１１は１秒となり（同ステップＳ４６）、診断モード記憶部１９は“２”となる。
【０１１３】
以下、パトロール診断起動部１２、割込み制御部１０、及びパトロール診断制御部１３が上記と同様の動作を実行し、ブロック“７”が例えば「不良ブロックなし」と判定されて診断結果記憶部１８に“０”が書き込まれる（図７のステップＳ７）。
【０１１４】
パトロール診断制御部１３は状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“２”及び診断結果記憶部１８の値“０”から「処理２０」を選択する（図７のステップＳ１０）。
【０１１５】
この「処理２０」でパトロール診断位置記憶部１４の値“７”は“２”を加算して“９”となり（図１１（１）ステップＳ４０）、インタバル時間記憶部１１は１０分となり（同ステップＳ４１）、追跡カウンタ記憶部１６が“０”にクリアされ（同ステップＳ４２）、診断モード記憶部１９は追跡診断モードである“３”となる。
【０１１６】
以下、パトロール診断起動部１２、割込み制御部１０、及びパトロール診断制御部１３が上記と同様の動作を実行し、ブロック“９”が例えば「不良ブロックなし」と判定されて診断結果記憶部１８に“０”が書き込まれる（図７のステップＳ７）。
【０１１７】
パトロール診断制御部１３は状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“３”及び診断結果記憶部１８の値“０”から「処理３０」を選択する（図７のステップＳ１０）。
【０１１８】
この「処理３０」においては、追跡カウンタ記憶部１６の記憶値“０”と最大追跡診断回数“１２”と比較し（図１２（１）ステップＳ５０）、記憶値“０”が最大追跡診断回数“１２”より小さいので（同ステップＳ５０の“Ｙｅｓ”）、パトロール診断位置記憶部１４の値“９”を“２”だけ加算した“１１”とし（同ステップＳ５１）、インタバル時間記憶部１１を１０分とし（同ステップＳ５２）、追跡カウンタ記憶部１６を記憶値“０”を“１”だけインクリメントした“１”とし（同ステップＳ５３）、診断モード記憶部１９を“３”とする。
【０１１９】
以下、パトロール診断起動部１２、割込み制御部１０、及びパトロール診断制御部１３が上記と同様の動作を実行し、ブロック“１１”が例えば「不良ブロックなし」と判定されて診断結果記憶部１８に“０”が書き込まれる（図７のステップＳ８）。
【０１２０】
パトロール診断制御部１３は状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“３”及び診断結果記憶部１８の値“０”から「処理３０」が選択する（図７のステップＳ１０）。
【０１２１】
上記の「処理３０」におけるブロック１１と同様にしてブロック１３，１５，１７，１９，２１，２３，２５，２７，２９，３１、３３が不良ブロックでないこととすると、各ブロックは１０分毎に追跡診断モードで診断され、ブロック３３においては、追跡カウンタ記憶部１６は各診断毎に記憶値が“１”だけインクリメントされて“１２”となり、診断モード記憶部１９の記憶値は“３”となり、診断結果記憶部１８は“０”である。
【０１２２】
パトロール診断制御部１３は状態遷移表記憶部２０を参照して、診断モード記憶部１９の値“３”及び診断結果記憶部１８の値“０”から「処理３０」が選択される（図７のステップＳ１０）。
【０１２３】
この「処理３０」では追跡カウンタ記憶部１６の値“１２”と最大追跡診断回数“１２”と比較し（図１２（１）ステップＳ５０）、記憶値“１２”が最大追跡診断回数“１２”より小さくないので（同ステップＳ５０の“Ｎｏ”）、パトロール診断位置記憶部１４の値“３３”を“４”だけ加算した“３７”とし（同ステップＳ５６）、インタバル時間記憶部１１を１時間とし（同ステップＳ５７）、診断モード記憶部１９を通常診断モードである“０”とする。
【０１２４】
すなわちブロック３３のパトロール診断は通常診断モードに戻る。
【０１２５】
上記の「処理３０」動作中において、例えばブロック１５が「不良ブロックあり」とすると、診断結果記憶部１８は「不良ブロックあり」である“１”となり（図７のステップＳ８）、診断モード記憶部１９は“３”であるので「処理３１」が選択される（同ステップＳ１０）。
【０１２６】
この「処理３１」において、パトロール診断制御部１３は、パトロール診断位置記憶部１４の記憶値“１５”を不良ブロック位置記憶部１５に記憶させ（図１２（２）ステップＳ６０）、パトロール診断位置記憶部１４の記憶値“１５”を１だけ減算した“１４”とし（同ステップＳ６１）、インタバル時間記憶部１１を１秒に設定し（同ステップＳ６２）、診断モード記憶部１８を後方隣接診断モードである“１”に設定して（同ステップＳ６３）、処理を終了する（同ステップＳ６４）。
【０１２７】
また、例えば「処理３０」を終了したパトロール診断制御部１３は、パトロール診断位置記憶部１４の記憶値が最大ブロック番号“４０”以下でない場合は（図７のステップＳ１１の“Ｎｏ”）、起点カウンタ記憶部１７の記憶値“１”は“１”加算されて“２”とし（同ステップＳ１２）、さらにパトロール診断位置記憶部１４にこの起点カウンタ記憶部１７の記憶値“２”が記憶され（同ステップＳ１３）、パトロール診断を行うブロック位置が最初に診断されたブロックの後の隣接するまだ診断が実行されていないブロックに設定される。
【０１２８】
以下同様にして、パトロール診断が行われていない残りのブロックの診断が順次実施されることとなる。
【０１２９】
【発明の効果】
以上説明したように、本発明に係る磁気ディスク制御装置によれば、不良ブロックを検出したとき該不良ブロックの後方又は前方に隣接するブロック位置に該磁気ヘッドをそれぞれ戻してブロックの良否を診断する後方又は前方隣接診断を不良でないブロックが検出されるまで短いインタバル時間で繰り返し行い、該後方又は前方隣接診断において不良でないブロックが検出された場合に、次のパトロール診断は最初の不良ブロックの前方又は後方に隣接するブロック位置に該磁気ヘッドを移動させてブロックの良否をそれぞれ診断する前方又は後方隣接診断を不良でないブロックが検出されるまで短いインタバル時間で繰り返し行い、さらに該前方又は後方隣接診断において不良でないブロックが検出された場合に、次のパトロール診断は、短い距離間隔と短いインタバル時間で該磁気ヘッドを移動してブロックの良否を診断する追跡診断を繰り返し実行するように構成したので、不良ブロック群に属する連続した全ての不良ブロックを短い時間で発見すること、及び複数の近傍の不良ブロック群を短い時間で発見すること、が可能となった。
【０１３０】
これを従来及び本発明のパトロール診断について、不良ブロックの発見時間を測定して説明する。
【０１３１】
図１３（１）は従来のパトロール診断における磁気ディスク装置１のディスク表面５０の簡単なモデルを配列で示しており、配列の１マスが１ブロックに相当する。ブロックの総数は４０個であり、このうち網掛けされた６ブロックが不良のブロックである。
【０１３２】
従来のパトロール診断は、図１３（２）に示されるように、（仕様１）最大ブロック番号：４０ブロック、（仕様２）インタバル時間：１時間、（仕様３）磁気ヘッド移動距離：４ブロック、の仕様で行われた。
【０１３３】
同図（１）において、パトロール診断は起点として矢印で示されているブロックから開始され、パトロール診断を進めて行くうちに最大ブロック番号値を越えた場合には、起点を１ブロック分だけ後方にずらした起点に戻って行われた。
【０１３４】
上記のようにして行われたパトロール診断の診断順序の番号が各ブロックを表すマス内に示されている。
【０１３５】
同図（３）は従来例を示した同図（１）に対する本発明に係る磁気ディスク制御装置１のディスク表面５０の配列を示しており、ブロック総数、不良ブロック数と配置は従来例と同じである。
【０１３６】
本発明のパトロール診断は、同図（４）に示されるように、（仕様１）最大ブロック番号：４０ブロック、（仕様２）インタバル時間：通常診断モードでは１時間、後方及び前方隣接診断モードでは１秒間、追跡診断モードでは１０分間、（仕様３）磁気ヘッド移動距離：通常診断モードでは４ブロック、後方及び前方隣接診断モードでは１ブロック、追跡診断モードでは２ブロック、（仕様４）追跡診断モード回数：１２回（２時間）、の仕様で行われた。
【０１３７】
また、パトロール診断位置が最大ブロック番号数を越えた場合は、従来のパトロール診断と同じ手順で起点を移動して行われる。
【０１３８】
上記のようにして行われたパトロール診断の診断順序の番号が同図（１）の従来のパトロール診断の場合と同様に示されている。
【０１３９】
図１４は、従来及び本発明のパトロール診断を上記のそれぞれの条件のもとに行い全６個所の不良ブロックが発見されるまでの時間を示している。
【０１４０】
従来のパトロール診断においては、同じ不良ブロック群に属する隣接する不良ブロックが発見される順番が１個目（診断順序４）、３個目（同１４）、及び５個目（同３３）と２個目（同１０）、４個目（同２０）、及び６個目（同３９）であり、発見されるまでの時間が１時間単位以上で長いことがわかる。
【０１４１】
一方、本発明のパトロール診断においては、同じ不良ブロック群に属する隣接する不良ブロックが発見される順番がそれぞれ１個目（診断順序４）、２個目（同５）、及び３個目（同７）と４個目（同１９）、５個目（同２０）、及び６個目（同２２）であり、最初の不良ブロック（１個目）が発見されると同じ不良ブロック群に属するブロック（２，３個目）は３秒以内で発見されている。
【０１４２】
さらに、別の不良ブロック群に属するブロック（４個目）は約１時間で発見され、このブロックと同じ不良ブロック群に属する残りのブロック（５，６個目）は３秒以内で発見されている。
【０１４３】
６個の不良ブロック全てが発見される時間は、従来の診断においては３９時間掛かり、本発明の診断によれば５時間５０分７秒しか掛かっていない。
【０１４４】
図１６は図１５の測定結果をグラフにまとめたもので、従来及び本発明のパトロール診断で１個目の不良ブロックを発見する時間は同じであるが、２個目以後は本発明の診断は従来の診断に比べて残りの不良ブロックを効率よく迅速に発見していることを示している。
【図面の簡単な説明】
【図１】本発明に係る磁気ディスク制御装置の動作原理<１>を説明する図である。
【図２】本発明に係る磁気ディスク制御装置の動作原理<１>の状態遷移図である。
【図３】本発明に係る磁気ディスク制御装置の動作原理<２>を説明する図である。
【図４】本発明に係る磁気ディスク制御装置の動作原理<２>の状態遷移図である。
【図５】本発明に係る磁気ディスク制御装置の実施例における機能構成を示すブロック図である。
【図６】本発明に係る磁気ディスク制御装置の実施例における割込み制御部の動作を示すフローチャート図である。
【図７】本発明に係る磁気ディスク制御装置の実施例における不良ブロック自動追尾パトロール診断制御部の動作を示すフローチャート図である。
【図８】本発明に係る磁気ディスク制御装置の実施例における診断モードの状態遷移テーブル図である。
【図９】本発明に係る磁気ディスク制御装置の実施例における通常診断モード時の処理フローチャート図である。
【図１０】本発明に係る磁気ディスク制御装置の実施例における後方隣接診断モード時の処理フローチャート図である。
【図１１】本発明に係る磁気ディスク制御装置の実施例における前方隣接診断モード時の処理フローチャート図である。
【図１２】本発明に係る磁気ディスク制御装置の実施例における追跡診断モード時の処理フローチャート図である。
【図１３】従来及び本発明に係る磁気ディスク制御装置におけるパトロール診断の実施結果例を示す図である。
【図１４】従来及び本発明に係る磁気ディスク制御装置におけるパトロール診断の実施測定時間結果例を比較したグラフ図である。
【図１５】従来の磁気ディスク制御装置におけるパトロール診断の動作を示す原理図である。
【図１６】従来の磁気ディスク制御装置における不良ブロックが存在するパトロール診断の動作を示す原理図である。
【符号の説明】
１  磁気ディスク装置
２  磁気ディスク制御装置
３  磁気ディスクインタフェースケーブル
４  磁気ディスク
５  磁気ディスク制御部
６  上位装置インタフェース制御部
７  磁気ディスクインタフェース制御部
８  入出力命令制御部
９  入出力割込み受付部
１０  割込み制御部
１１  インタバル時間記憶部
１２  パトロール診断起動部
１３  不良ブロック自動追尾パトロール診断制御部
１４  パトロール診断位置記憶部
１５  不良ブロック位置記憶部
１６  追跡カウンタ記憶部
１７  起点カウンタ記憶部
１８  診断結果記憶部
１９  診断モード記憶部
２０  状態遷移表記憶部
４０  磁気ヘッド
５０  ディスク表面
図中、同一符号は同一又は相当部分を示す。
【図１】
0003695856.tif 000002
【図２】
0003695856.tif 000003
【図３】
0003695856.tif 000004
【図４】
0003695856.tif 000005
【図５】
0003695856.tif 000006
【図６】
0003695856.tif 000007
【図７】
0003695856.tif 000008
【図８】
0003695856.tif 000009
【図９】
0003695856.tif 000010
【図１０】
0003695856.tif 000011
【図１１】
0003695856.tif 000012
【図１２】
0003695856.tif 000013
【図１３】
0003695856.tif 000014
【図１４】
0003695856.tif 000015
【図１５】
0003695856.tif 000016
【図１６】
0003695856.tif 000017