(57)【要約】【課題】パフォーマンスの低下を防止し、バッファの故障解析に有益なデータを収集する補助記憶装置を提供する。【解決手段】ユーザ・データとＣＲＣとで構成されたデータ・セットを、バッファに一時的に記憶させる。データの記録時または再生時にバッファから読み出したデータ・セットからＣＲＣエラーが検出されたときは、当該データ・セットの内容とバッファ上でのアドレスを不揮発性の記憶媒体に記録する。さらに、当該バッファのアドレスを使用禁止にする。よって、バッファに発生するソフト・エラーを再現するためのデータを保存し、かつ、バッファ・エラーにともなう補助記憶装置のパフォーマンスの低下を防止することができる。【選択図】図１
2007183844.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置に接続可能な補助記憶装置であって、
前記ホスト装置から転送されたユーザ・データ・ブロックに対応するエラー検査コードを生成するエラー・コード生成部と、
前記ユーザ・データ・ブロックと前記エラー検査コードを含んで構成されるデータ・セットを記録する不揮発性の記録媒体と、
前記記録媒体と前記ホスト装置との間でデータ転送をする際に前記データ・セットを記憶するバッファと、
前記エラー検査コードを使用して前記バッファに記憶された前記データ・セットに対してエラーの検査をするエラー検出部と、
前記エラー検出部が前記バッファに記憶された第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットと前記第１のデータ・セットが記憶されていた前記バッファのアドレスを前記記録媒体に記録するプロセッサと
を有する補助記憶装置。
【請求項２】
前記バッファのアドレスが、前記第１のデータ・セットに対応する論理ブロック・アドレス（ＬＢＡ）を含んで構成されている請求項１記載の補助記憶装置。
【請求項３】
前記エラー検出部が記録動作において前記第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットを構成するユーザ・データ・ブロックと同一のユーザ・データ・ブロックが再度前記ホスト装置から転送されて前記第１のデータ・セットが記憶されていたアドレスとは異なる前記バッファのアドレスに再度転送された前記ユーザ・データ・ブロックとこれに対応するエラー検査コードを含んで構成される第２のデータ・セットが記憶される請求項１記載の補助記憶装置。
【請求項４】
前記エラー検出部が前記バッファに記憶された前記第２のデータ・セットからエラーを検出しないとき、前記プロセッサは前記第１のデータ・セットと前記第２のデータ・セットをビットごとに比較して前記第１のデータ・セットに関するエラー・ビット・アドレスを特定し、前記エラー・ビット・アドレスを前記記録媒体に記録する請求項３記載の補助記憶装置。
【請求項５】
前記エラー検出部が再生動作において前記第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットが記録されていた前記記録媒体のアドレスからデータ・セットが読み出されて前記第１のデータ・セットが記憶されていたアドレスとは異なる前記バッファのアドレスに第２のデータ・セットとして記憶される請求項１記載の補助記憶装置。
【請求項６】
前記エラー検出部が前記バッファに記憶された前記第２のデータ・セットからエラーを検出しないとき、前記プロセッサは前記第１のデータ・セットと前記第２のデータ・セットをビットごとに比較して前記第１のデータ・セットに関するエラー・ビット・アドレスを特定し、前記エラー・ビット・アドレスを前記記録媒体に記録する請求項５記載の補助記憶装置。
【請求項７】
前記補助記憶装置は、前記第１のデータ・セットからエラーを検出したとき前記ホスト装置に報告する請求項１記載の補助記憶装置。
【請求項８】
前記プロセッサは、前記エラーが検出されたデータ・セットと前記エラーが検出されたデータ・セットが記憶されていた前記バッファのアドレスを前記記録媒体のシステム領域に記録する請求項１記載の補助記憶装置。
【請求項９】
前記エラー・コード生成部は、巡回冗長検査（ＣＲＣ）方式で前記エラー検査コードを生成する請求項１記載の補助記憶装置。
【請求項１０】
ホスト装置に接続可能な補助記憶装置であって、
前記ホスト装置から転送されたユーザ・データ・ブロックに対応するエラー検査コードを生成するエラー・コード生成部と、
前記ユーザ・データ・ブロックと前記エラー検査コードを含んで構成されるデータ・セットを記録する不揮発性の記録媒体と、
前記記録媒体と前記ホスト装置との間でデータ転送をする際に前記データ・セットを記憶するバッファと、
前記エラー検査コードを使用して前記バッファに記憶された前記データ・セットに対してエラーの検査をするエラー検出部と、
前記エラー検出部が前記バッファに記憶された第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットが記憶されていた前記バッファのアドレスを使用禁止にするプロセッサと
を有する補助記憶装置。
【請求項１１】
前記記録媒体が磁気ディスクであり、前記エラー検査コードが巡回冗長検査（ＣＲＣ）方式で生成されている請求項１０記載の補助記憶装置。
【請求項１２】
前記プロセッサは、前記バッファに記憶された前記第１のデータ・セットから所定の回数だけエラーが検出されたとき前記第１のデータ・セットが記憶されていた前記バッファのアドレスを使用禁止にする請求項１０記載の補助記憶装置。
【請求項１３】
前記記録媒体から読み出したデータ・セットのエラーを訂正するエラー訂正コード生成部を有する請求項１０記載の補助記憶装置。
【請求項１４】
前記エラー検出部が記録動作において前記第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットが記憶されていた前記バッファのアドレスに前記ホスト装置から再度転送された前記第１のデータ・セットを構成するユーザ・データ・ブロックとこれに対応するエラー検査コードを含んで構成される第２のデータ・セットが記憶され、前記エラー検出部が前記バッファに記憶された前記第２のデータ・セットからエラーを検出したとき前記プロセッサは前記第１のデータ・セットが記憶されていた前記バッファのアドレスを使用禁止にする請求項１０記載の補助記憶装置。
【請求項１５】
前記エラー検出部が再生動作において前記第１のデータ・セットからエラーを検出したとき、前記第１のデータ・セットが記憶されていた前記バッファのアドレスに前記磁気ディスクの前記第１のデータ・セットと同一のアドレスから再度読み取られたデータ・セットが第２のデータ・セットとして記憶され、前記エラー検出部が前記バッファに記憶された前記第２のデータ・セットからエラーを検出したとき前記プロセッサは前記第１のデータ・セットが記憶されていた前記バッファのアドレスを使用禁止にする請求項１０記載の補助記憶装置。
【請求項１６】
磁気ディスクとホスト装置との間で転送されるデータを記憶するバッファを備える磁気ディスク装置において、データを記録再生する方法であって、
前記ホスト装置から転送されたユーザ・データ・ブロックに対応する冗長バイトを巡回冗長検査（ＣＲＣ）方式で計算しユーザ・データ・ブロックと冗長バイトを含んで構成されるデータ・セットを生成するステップと、
前記データ・セットを前記バッファに記憶するステップと、
前記バッファに記憶された前記データ・セットに対して前記冗長バイトを使用してＣＲＣエラーを検査するステップと、
ＣＲＣエラーが検出されたデータ・セットが記憶されていた前記バッファのアドレスを使用禁止にするステップと
を有する
記録再生方法。
【請求項１７】
前記ＣＲＣエラーが検出された前記バッファのアドレスを前記ホスト装置に報告するステップと、前記ホスト装置が前記ＣＲＣエラーが報告された前記バッファのアドレスを使用禁止にするステップとを有する請求項１６記載の記録再生方法。
【請求項１８】
前記ＣＲＣエラーが検出されたデータ・セットと前記ＣＲＣエラーが検出されたデータ・セットが記憶されていた前記バッファのアドレスを前記磁気ディスクのシステム領域に記憶するステップを有する請求項１６記載の記録再生方法。
【請求項１９】
前記ＣＲＣエラーが検出されたデータ・セットと前記ＣＲＣエラーが検出されたデータ・セットが記憶されていた前記バッファのエラー・ビット・アドレスを前記磁気ディスクのシステム領域に記憶するステップを有する請求項１６記載の記録再生方法。
【請求項２０】
前記バッファが複数のセグメントに分割されており、前記バッファのアドレスを使用禁止にするステップがセグメント単位で前記バッファのアドレスを使用禁止にするステップを含む請求項１６記載の記録再生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は補助記憶装置におけるバッファの利用技術に関し、さらにはバッファの利用方法を改善して故障解析に有用なデータを収集したりパフォーマンスの低下を防止したりする技術に関する。
【背景技術】
【０００２】
コンピュータ・システムでは、ＣＰＵが実行するプログラムを記憶したり作業領域を提供したりする主記憶装置の他にデータをほぼ恒久的に記録する補助記憶装置を採用している。補助記憶装置は、一般的に、主記憶装置に比べて記憶容量が大きいため大容量記憶装置といわれたりする。また、ＣＰＵに付属する主記憶装置以外の外部の記憶装置という意味から外部記憶装置といわれたりすることもある。補助記憶装置の例として、磁気ディスク装置、フロッピィ・ディスク装置（フロッピィ・ディスクは商標）、光磁気ディスク装置、ＣＤ−ＲＷドライブ、ＤＶＤ−ＲＷドライブなどがある。
【０００３】
これらの補助記憶装置は、ＳＣＳＩやＩＤＥといったインターフェース回路を通じてホスト装置としてのコンピュータ・システムに接続され、ホスト装置から送られたデータを記録したり、記録していたデータをホスト装置に送ったりしている。これらの補助記憶装置では、ホスト装置とのデータの通信時間と内部における読み取りまたは書き込み処理の時間との差を吸収するためにバッファを設けている。
【０００４】
代表的な補助記憶装置の１つである磁気ディスク装置では、データを一時的に記憶するセクタ・バッファを備え、セクタ・バッファを介してホスト装置との間でデータ通信を行うことによってパフォーマンスを向上させている。セクタ・バッファには、ＳＲＡＭまたはＤＲＡＭといった半導体メモリが使用されている。半導体メモリは安定した記録媒体であるが、まれに読み出したデータからエラーが検出されることがある。磁気ディスク装置では、データに対して巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check ）という検出技術を用いたエラー検査コードを付加してデータをセクタ・バッファに記憶し、読み出したときにエラーの有無を検査している。
【０００５】
ホスト装置から送られたリード・コマンドまたはライト・コマンドを処理するときは、エラー検査コードを用いてセクタ・バッファから読み取ったデータのエラー検出を行っている。リード・コマンドを処理するときにエラーを検出した場合は、リード・チャネルを通じて再度磁気ディスクからエラーにかかるデータを読み出し、ライト・コマンドを処理するときにエラーを検出した場合はホスト装置から再度書き込みにかかるデータを受け取る。
【０００６】
特許文献１は、パーソナル・コンピュータに使用されるメモリにエラーが発生したときに、恒久的なエラー（ハード・エラー）であるか、一時的なエラー（ソフト・エラー）であるかを調べるために、エラーが発生したアドレスとビット位置を不揮発性メモリに保存する技術を開示する。特許文献２は、データにＣＲＣバイトを付加してバッファ・メモリに記憶し、ユーザ・データとＣＲＣバイトに含まれるエラーをＥＣＣバイトを用いて検証する磁気ディスク装置を開示する。
【特許文献１】特開２００５−１９６６８０号公報
【特許文献２】特開平１０−７８８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
セクタ・バッファに記憶されていたデータからエラーが検出されると、磁気ディスク装置はリード・コマンドまたはライト・コマンドを再度実行するために、データをセクタ・バッファに記憶するための再処理をする必要がある。記録動作では、ホスト装置から再度データの転送を受け、再生動作では磁気ディスクから再度データを読み取ることになるため磁気ディスク装置のパフォーマンスが低下する。
【０００８】
セクタ・バッファの特定のビット・アドレスにハードウエア的な故障が発生すると、記録したデータ・ビットの値にかかわらず、読み出したデータの値が必ず０または１のいずれかになるといったような恒久的なエラーが発生し、データの内容によって反転したビットの値が出力されたときにエラー（以後、このようなエラーをハード・エラーという。）が発生する。ハード・エラーは、当該ビット・アドレスに１または０のデータを記憶すると、いずれかの場合には必ずエラーが発生するので故障したビット・アドレスを調べて故障原因の解析をすることができる。
【０００９】
近年、半導体メモリは微細化技術が進み集積度が向上してきたことの反面、中性子やα線といった放射線や磁気ノイズなどの外乱からの耐力が低下してきており、小さい確率ではあるが記憶したデータのビットの値が反転するといういわゆるソフト・エラーが発生しやすい傾向にある。したがって、セクタ・バッファに記憶されている時間が長いデータほどソフト・エラーの発生確率は一般に高くなる。ソフト・エラーはまたデータ・パターン（ビット・パターン）の影響を受けることもある。セクタ・バッファからソフト・エラーの発生を完全に撲滅することはできないにしても、ソフト・エラーの頻度が高いセクタ・バッファは原因を追及して対策を施す必要がある。しかし、ソフト・エラーが発生したセクタ・バッファを解析の場に持ち込んでもエラーを再現することはほとんどできないため原因の追求は難しい。
【００１０】
従来、磁気ディスク装置はセクタ・バッファから読み取ったデータからエラーを検出してもホスト装置にエラーが発生したことを報告するだけで、ホスト装置が許容する間はエラーが発生したセクタ・バッファのセグメント（以後、エラー・セグメントという。）を使用し続けていた。エラー・セグメントが継続的に使用され、ホスト装置に所定の頻度でエラー報告がされると、ホスト装置は当該磁気ディスク装置を不良扱いにする。また、ホスト装置が当該磁気ディスク装置を不良扱いにするまでの間は、バッファに再度データを書き込むために磁気ディスク装置のパフォーマンスが低下した状態が続く。ソフト・エラーとハード・エラーを明確に区分することは困難であるが、ソフト・エラーのなかでも発生頻度の高いものは、ハード的な要因が関係していると考えられる。このようなアドレスまたはセグメントは、パフォーマンスの低下を防ぐ上では使用しない方が望ましい。
【００１１】
また、磁気ディスク装置ではこれまでセクタ・バッファから読み出したデータからエラーを検出してもエラー情報を保存しておくことはなかった。ソフト・エラーは再現させることが困難なので、特定のアドレスだけに発生するのか、アドレス全体に発生するのか、あるいはデータ・パターンとの関係があるのかなどの、ソフト・エラーの原因を追及するため有益な情報を得ることができなかった。
【００１２】
そこで本発明の目的は、バッファの管理方法を改善してパフォーマンスの低下を防止した補助記憶装置を提供することにある。さらに本発明の目的は、バッファの故障解析に有益なデータを収集することができる補助記憶装置を提供することにある。さらに本発明の目的は、パフォーマンスの低下を防止する補助記憶装置の記録再生方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の一つの側面では、バッファの故障解析に有益なデータを収集する補助記憶装置を提供する。本発明にかかる補助記憶装置は、ユーザ・データ・ブロックと、同ユーザ・データ・ブロックに対応して生成されたエラー検査コードとが１つのデータ・セットを構成して不揮発性の記録媒体上に記憶される。記録動作および再生動作のいずれの場合であっても、バッファには一旦データ・セットが記憶され、読み出されるときにエラー訂正コードを使用してエラーの有無が検査される。
【００１４】
バッファから読み出された第１のデータ・セットからエラーが検出されるときには、プロセッサはエラーが検出されたデータ・セットと、当該データ・セットが記憶されていたバッファのアドレスを不揮発性の記録媒体に記録する。この結果、記録媒体にはエラーが発生したデータ・セットのビット・パターンとバッファのアドレスが恒久的に記録されるため、これらを使用してバッファ・エラーの再現試験をすることができる。記録媒体に記録するバッファのアドレスは、データ・セットに対応する論理ブロック・アドレスを含んで構成してもよい。
【００１５】
記録動作でエラーが検出されたときは、補助記憶装置がホスト装置にエラー報告をすると、同一のユーザ・データがホスト装置から転送される。あるいは、補助記憶装置からホスト装置にデータの再送要求をだしてもよい。再送されてきたユーザ・データにエラー検査コードを付加した第２のデータ・セットを、エラーが発生したデータ・セットが記憶されていたバッファのアドレス（以後、エラー・アドレスという。）とは別のアドレスに記憶させる。
【００１６】
バッファの特定のアドレスにハード・エラーや頻度の高いソフト・エラーが発生している場合は、当該アドレスにさらにデータ・セットを記憶すると再度エラーが発生することになりパフォーマンスの低下につながるが、別のアドレスに記憶させることでこれを防ぐことができる。ユーザ・データ・ブロックは複数のビットで構成されており、エラー検査コードは、データ・セットの単位でエラーを検査するためデータ・セットにエラーが発生したことを検出しただけでは、エラー・ビットを特定することができない。
【００１７】
本発明では、再送されたユーザ・データ・ブロックの第２のデータ・セットからエラーが検出されない場合は、エラーが検出された第１のデータ・セットと再送された第２のデータ・セットをビット単位で比較し、第１のデータ・セットが記憶されていたアドレスのエラー・ビット・アドレスを特定して不揮発性の記録媒体に記録する。よって、ビット単位でバッファのエラー位置を特定したバッファのエラー解析が可能になる。
【００１８】
再生時に、記録媒体からホスト装置へデータを転送するときは、記録媒体から読み出した、ユーザ・データ・ブロックとエラー検査コードで構成されたデータ・セットをバッファに一時的に記憶させ、バッファからデータ・セットを読み出してからホスト装置へユーザ・データを転送する。バッファからデータ・セットを読み出す際には記録動作時と同様にエラーの検査を行い、そこでエラーが検出されたとき、当該データ・セットが記憶されていたバッファのアドレスとデータ・セットを記録媒体に記録する。エラーが検出されたときは、同一のデータ・セットを記録媒体から再度読み出し、再度読み出されたデータ・セットを、エラーの発生したバッファのアドレスとは異なるアドレスに記憶させエラーの検査を行う。
【００１９】
この記録媒体は、ハードディスクやＣＤ−ＲＷ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＭＯなどの回転円板形の読み書き可能な記録媒体であってもよいし、またフラッシュメモリなどの読み書き可能な半導体メモリであってもよい。そして、エラー検査コードは巡回冗長検査（ＣＲＣ）方式やチェックサム方式などで生成されたエラー検査コードを使用することができる。さらにエラー検査コードはエラー訂正能力まで備えるものであってもよい。エラーに関するデータやアドレスの情報は、補助記憶装置が記録媒体上にあらかじめ確保してあるシステム領域上に記録されるため、ユーザ・データで上書きされて消失することはない。
【００２０】
本発明のもう一つの側面では、バッファの管理方法を改善してパフォーマンスの低下の防止を図った補助記憶装置を提供する。本発明にかかる補助記憶装置では、バッファから読み出されたデータ・セットにエラーが検出されると、当該バッファのアドレスを使用禁止にする。これによって、同一アドレスを使用することでエラーが再発する確率を低減することができ、ホスト装置からユーザ・データ・ブロックを再送したり、不揮発性の記録媒体から再度読み取ったりする頻度が少なくなるため補助記憶装置のパフォーマンス低下を防止することができる。
【００２１】
バッファのアドレスを使用禁止にする際、同一アドレスに記憶されたデータ・セットから所定の回数だけエラーが検出された場合に限って使用禁止にすることも可能である。バッファで検出されるエラーはソフト・エラーが多い。ソフト・エラーの発生頻度が少ない段階で当該アドレスを使用禁止にすると、必要以上にバッファの容量が低下するので望ましくない。同一アドレスについて所定の回数だけエラーが検出された場合には、ソフト・エラーのなかでも頻度の高いエラーであると判断して当該アドレスを使用禁止にすることができる。ホスト装置は補助記憶装置からエラーが発生したバッファのアドレスの報告を受けて、当該アドレスの使用を禁止にすることもできる。    
【発明の効果】
【００２２】
本発明により、バッファの管理方法を改善してパフォーマンスの低下を防止した補助記憶装置を提供することができた。さらに、バッファの故障解析に有益なデータを収集することが可能な補助記憶装置を提供することができた。さらに本発明により、パフォーマンスの低下を防止する補助記憶装置の記録再生方法を提供することができた。
【発明を実施するための最良の形態】
【００２３】
［装置の構成］
図１は、本発明の実施の形態に係る磁気ディスク装置１０の概略を示すブロック図である。磁気ディスク装置１０は、コンピュータや音楽記録再生装置などのホスト装置１１に接続され、ホスト装置１１から受け取ったデータを記録したり、磁気ディスク２５に記録したデータをホスト装置１１に送ったりする。ホスト・インターフェース回路１３は、ホスト装置１１と磁気ディスク装置１０とのデータ通信を制御するＡＴＡ規格の回路である。ホスト装置１１と磁気ディスク装置１０との間では、ホスト・インターフェース回路１３を通じてデータ、コマンド、および制御情報などの入出力が行われる。
【００２４】
ホスト装置１１は、磁気ディスク装置１０にデータを書き込んだり、磁気ディスク装置１０からデータを読み取ったりするときに、ホスト・インターフェース回路１３上に割り当てられたＡＴＡレジスタのアドレスにアクセスする。ＡＴＡレジスタにはコマンド・レジスタ、ステータス・レジスタ、データ・レジスタ、シリンダ・ロー／ハイ・レジスタ、セクタ・ナンバー・レジスタ、セクタ・カウント・レジスタなどがある。
【００２５】
ホスト装置１１は磁気ディスク装置１０との間でデータ転送をするときに、コマンド・レジスタに、リード・コマンドまたはライト・コマンドを書き込み、シリンダ・ロー／ハイ・レジスタとセクタ／ナンバー・レジスタに先頭のデータ・セクタの論理ブロック・アドレス（以後、ＬＢＡという。）を書き込む。さらにセクタ・カウント・レジスタに書き込みまたは読み出しにかかるデータ・セクタの数を指定してデータの送受信を行う。磁気ディスク装置は、リード・コマンドまたはライト・コマンドの実行過程においてエラーが発生したときに、ステータス・レジスタのエラー・ビットを設定してホスト装置１１に報告する。
【００２６】
バッファ・コントローラ１５は、セクタ・バッファ３１およびＣＲＣ回路２７へのデータの入出力を制御する。セクタ・バッファ３１はＳＤＲＡＭであり、本実施形態では８Ｍバイトである。セクタ・バッファ３１は、磁気ディスク装置１０の内部における処理速度とホスト装置１１に対する転送速度との差を吸収してパフォーマンスを向上させるために、リード・キャッシュやライト・キャッシュ機能を実現するために使用される。セクタ・バッファ３１は、キャッシュ機能のヒット率を向上させたり、リード・キャッシュ機能とライト・キャッシュ機能を同時に実現させたりするために、均等な大きさのセグメントに分割されている。なお、セグメントは本実施形態では１６個に分割されており、最大１２８個〜２５６個程度まで分割することができる。セクタ・バッファ３１の容量および分割数は、任意に設定することができる。
【００２７】
ＣＲＣ回路２７は、ホスト・インターフェース回路１３からバッファ・コントローラ１５に送られてきたユーザ・データに対して、巡回冗長検査（ＣＲＣ）方式に基づく生成多項式を使用して冗長バイトとしてのエラー検査コード（以後、ＣＲＣＣという。）を計算してバッファ・コントローラ１５に送る。本実施の形態においては、ＣＲＣＣはデータ・セクタの単位に相当する５１２バイトのユーザ・データごとに計算され４バイトで構成されている。バッファ・コントローラ１５は、５１２バイトのユーザ・データと４バイトのＣＲＣＣからなる５１６バイトのデータ・セットをセクタ・バッファ３１の所定のアドレスに記憶するために、セクタ・バッファ３１を制御する。
【００２８】
ＣＲＣ回路２７は、ホスト装置１１にデータを送る前および磁気ディスク２５にデータを書き込む前に、セクタ・バッファ３１からバッファ・コントローラ１５に読み出されたデータ・セットに対して生成多項式を使用してビット反転エラーの有無を検査する。ＣＲＣ回路２７は、データ・セットから検出したエラー（以後、ＣＲＣエラーという。）をＭＰＵユニット３３に通知する。なお、本実施の形態におけるＣＲＣ回路２７は、エラーの検査を行うだけであるが、エラーの訂正機能を備えるようにしてもよい。
【００２９】
チャネル・インターフェース回路１７は、バッファ・コントローラ１５、リード・チャネル１９、ライト・チャネル２１、およびＥＣＣ回路２９に対するデータの入出力動作を制御する。ＥＣＣ回路２９は、記録動作時においてバッファ・コントローラ１５からチャネル・インターフェース回路１７に送られた記録にかかるデータ・セットから、リードソロモン方式でエラー訂正コード（以後、ＥＣＣという。）を算出してチャネル・インターフェース回路１７に送る。ＥＣＣは、５１６バイトのデータ・セットごとに２０バイト〜４０バイト程度生成される。
【００３０】
ＥＣＣ回路２９は、再生動作においてリード・チャネル１９からチャネル・インターフェース回路１７に送られたデータ・セットとＥＣＣから、エラー・シンドロームを計算してデータ・セットにビット反転エラーがあるか否かを検査する。ＥＣＣ回路２９は、ビット反転エラーが所定の数以内であれば、データ・セットを正しい値に訂正してバッファ・コントローラ１５に送る。
【００３１】
リード・チャネル１９は、磁気ディスク２５から読み出したユーザ・データを処理して、チャネル・インターフェース回路１７に送る。リード・チャネル１９は、磁気ディスク２５から読み出したサーボ・データを処理してサーボ・コントローラ３５に送る。ライト・チャネル２１はチャネル・インターフェース回路１７から受け取った記録にかかるデータ・セクタ情報を処理してヘッド機構２３に送る。データ・セクタ情報はデータ・セットとＥＣＣに加えて、周知の方法で生成および付加されたプリアンブル、ポストアンブル、アドレス情報などを含む。
【００３２】
ヘッド機構２３は、磁気ヘッドと磁気ヘッドを磁気ディスク２３の所定の位置に位置付けるキャリッジ機構で構成される。図２に、磁気ディスク２５のフォーマット構造を示す。磁気ディスク２５は、データ面サーボ方式を採用する磁気ディスク装置に適用されるフォーマット構造になっている。図２（Ａ）に示すように磁気ディスク２５には、放射状に半径方向に延びた複数のサーボ・セクタ４１が書き込まれている。図２（Ｂ）に示すようにサーボ・セクタ４１ａ、４１ｂの間にはデータ領域４３が配置されて中に複数のデータ・セクタが定義されている。他のサーボ・セクタとデータ領域もほぼ同様の配置関係になっている。
【００３３】
磁気ディスク装置１０は、ゾーン・ビット・レコーディング方式を採用しており、半径方向にゾーン４４、４５、４６、４７が定義されている。ゾーン４４の最外周トラック近辺には、磁気ディスク装置１０が専用に使用しユーザには開放しない記憶領域であるシステム領域４８が定義されている。各データ・セクタには、磁気ディスク２５のすべてのデータ・セクタに対して最外周トラック側から順番にＬＢＡが割り当てられている。
【００３４】
図１に戻って、ＭＰＵユニット３３は、プロセッサ、ＲＡＭ、ＥＥＰＲＯＭ、およびファームウエアを格納するＲＯＭなどで構成され、磁気ディスク装置１０の動作全体を制御する。ＭＰＵユニット３３は、ホスト装置１１からホスト・インターフェース回路１３のＡＴＡレジスタに書き込まれたコマンドを解釈して磁気ディスク装置１０の動作を制御する。ＭＰＵ３３は、ホスト装置１１から送られたコマンドを実行する際に、エラーが発生した場合には、ホスト・インターフェース回路１３のステータス・レジスタにエラー・ビットを設定してホスト装置１１に報告する。さらにＭＰＵ３３は、セクタ・バッファ３１のアドレスを管理したり、キャッシュ機能を実現したりする。
【００３５】
サーボ・コントローラ３５は、リード・チャネル１９から受け取ったサーボ情報を処理してＭＰＵユニット３３に磁気ヘッドの位置情報を送る。ＭＰＵ３３はサーボ・コントローラ３５から送られた位置情報に基づいて、ヘッド機構２３の制御情報を生成し、ドライバ３７に送る。ドライバ３７は、ＭＰＵユニット３３から指示された位置にヘッド機構２３を位置付けるための制御電流を生成して、ヘッド機構２３に送る。磁気ディスク装置１０を構成するには、これら以外にも多くの周知の要素が必要であるが、本発明には特に関係がないので説明を省略する。また、図１に示した機能ブロックは例示として示したものであり、これらのいくつかの機能を１つの半導体装置に統合したり分割したりすることは当業者が自由になし得ることである。
【００３６】
［データ書き込み時の処理］
図３は、ホスト装置１１が磁気ディスク２５にデータを記録するときの、本実施の形態にかかるセクタ・バッファの管理方法の手順を説明するフローチャートである。記録動作および再生動作におけるセクタ・バッファ３１の管理手順は、ＭＰＵユニット３３のファームウエアに実装されている。ブロック２０１では、ホスト装置１１から磁気ディスク装置１０に書き込みにかかるユーザ・データが転送されセクタ・バッファ３１に記憶される。ホスト装置１１は、ホスト・インターフェース回路１３のＡＴＡレジスタに、磁気ディスクの先頭データ・セクタのＬＢＡと書き込むデータ・セクタの数を指定してライト・コマンドとユーザ・データを送る。転送されるユーザ・データは、磁気ディスク２５に記憶されるデータ・セクタの単位と同じ５１２バイトのデータ・ブロックの単位で構成され、１つのライト・コマンドで複数のデータ・ブロックで構成されるデータ・ブロック群が転送されてくる。
【００３７】
ＭＰＵユニット３３はライト・コマンドを解釈し、ＬＲＵ（Least Recently Used ）アルゴリズムに基づいて、データ・ブロック群を記憶するセクタ・バッファ３３のセグメントを決定してバッファ・コントローラ１５を制御する。バッファ・コントローラ１５は、ホスト・インターフェース回路１３からデータ・ブロック群を受け取る。ＣＲＣ回路２７は、データ・ブロック群のそれぞれのデータ・ブロックに対してＣＲＣＣを計算してバッファ・コントローラ１５に送る。バッファ・コントローラ１５は、ホスト・インターフェース回路１３から受け取った各データ・ブロックとこれに対応するＣＲＣＣからデータ・ブロック群のすべてのデータ・ブロックに対してデータ・セットを形成して、データ・セット群をＭＰＵユニット３３から指示されたセグメントに記憶する。
【００３８】
図４（Ａ）は、セクタ・バッファ３１のデータ構造を示す図である。セクタ・バッファ３１は１６個のセグメント＃１〜＃１６に分割されている。各セグメントは同じ構造になっており、それぞれが８００個のデータ・セット１００をＬＢＡの順番に記憶することができるようになっている。本実施例では、セグメント＃１にデータ・セット群を記憶する。図４（Ｂ）は、１つのデータ・セット１００のデータ構造を示す図である。データ・セット１００は、５１２バイトのユーザ・データ（データ・ブロック）と４バイトのＣＲＣＣで構成された５１６バイトの固定ブロック長として構成される。ＭＰＵユニット３３は、セグメントの番号＃１と先頭データ・セットに対応するＬＢＡをＥＥＰＲＯＭに記憶しておく。ＭＰＵユニット３３は、各セグメントに記憶された先頭のデータ・セットに対応するＬＢＡとＣＲＣエラーが検出されたデータ・セットの先頭データ・セットからの順番に基づいて、ＣＲＣエラーが検出されたデータ・セットのＬＢＡと当該データ・セットが記憶されていたバッファのアドレスを計算することができる。
【００３９】
つぎにブロック２０３でバッファ・コントローラ１５は、チャネル・インターフェース回路１７にデータを送ることができるタイミングでセクタ・バッファ３１のセグメント＃１からデータ・セット群を順番に読み出す。このときＣＲＣ回路２７は、各データ・セットについてＣＲＣエラーの有無を検査する。１つのデータ・セグメントに記憶されたデータ・セット群のいずれのデータ・セットからもＣＲＣエラーが検出されないときは、ブロック２０５に移行する。ブロック２０５では、図４（Ｃ）に示すように各データ・セットにＥＣＣ回路２９で生成されたＥＣＣが付加され、さらにプリアンブル１０７、アドレス・マーク、ヘッド番号、およびシリンダ番号からなるアドレス情報１０９、ポストアンブル１１１などの付加データが追加されて完成したデータ・セクタ情報１１３が、ライト・チャネル２１に送られる。ブロック２０７ではホスト装置１１から送られたデータ・ブロック群に対応する複数のデータ・セクタ情報１１３が、それぞれホスト装置１１から指定されたＬＢＡのデータ・セクタに記録される。
【００４０】
ブロック２０３でＣＲＣエラーが検出されたときは、ＣＲＣ回路２７はＭＰＵユニット３３にエラー発生の通知をする。ＣＲＣ回路２７は、セグメントに記憶されたデータ・セットの単位でＣＲＣエラーを検出して、各セグメントの何番目のデータ・セットにＣＲＣエラーを検出したかをＭＰＵユニット３３に通知する。ＭＰＵユニット３３は、ホスト装置１１からセグメントの先頭のデータ・セットのＬＢＡを受け取っているので、ＣＲＣエラーが発生したデータ・セクタのＬＢＡおよび当該データ・セットが記憶されていたセクタ・バッファ３１のアドレスを認識することができる。
【００４１】
ブロック２０９では、バッファ・コントローラがＣＲＣエラーが検出されたデータ・セットをセグメント＃１からバッファ・コントローラ１５を経由して読み出す。さらにＭＰＵユニット３３は、エラーが検出されたデータ・セットの内容とＬＢＡ、セグメントの先頭ＬＢＡ、およびデータ・セットの内容を一旦ＲＡＭに記憶したのちに、磁気ディスク２５のシステム領域４８に記録する。ＭＰＵユニット３３は、エラーが検出されたデータ・セットのＬＢＡとセグメントの先頭データ・セットのＬＢＡに代えてＣＲＣエラーが発生したデータ・セットが記憶されていたセクタ・バッファ３１のアドレスを直接システム領域４８に記録してもよい。
【００４２】
この結果、ＣＲＣエラーが発生したデータ・セットが記憶されていたセクタ・バッファ３１のアドレス情報とデータ・セットがシステム領域４８に記録されて、のちにソフト・エラーの原因を解析するための情報を蓄積することができるようになる。ブロック２１１では、ＭＰＵユニット３３が、ホスト・インターフェース回路１３のステータス・レジスタにエラー・ビットを設定してホスト装置１１にエラー報告をする。ステータス・レジスタのエラー・ビットを参照したホスト装置１１は、先に送ったデータ・ブロック群の書き込み処理中にエラーが発生したことを認識して再度同一のデータ・ブロック群を磁気ディスク装置１０に転送する。
【００４３】
ブロック２１３で磁気ディスク装置１０は再送されたデータ・ブロック群を先のデータ・ブロック群と同様に処理するが、ＭＰＵ３３はセクタ・バッファ３１のセグメントとして最初のセグメント＃１とは異なるセグメント＃２を使用する。セグメント＃１にハード・エラーが発生していたり、高頻度のソフト・エラーが発生していたりするような場合は、再送されたデータ・ブロック群に対応するデータ・セット群からさらにＣＲＣエラーが検出されることになり、磁気ディスク装置１０のパフォーマンスが低下するが、異なるセグメントを使用することでその可能性は低くすることができる。
【００４４】
ホスト装置１１は、記録時または再生時に磁気ディスク装置１０から所定の回数エラー報告がされると当該磁気ディスク装置を故障したものとして扱うことが一般的である。しかし、１つのセグメントに発生するエラーで磁気ディスク装置を故障として扱うことは経済面で適切ではないので、異なるセグメントに記憶することでそのような事態を防ぐことができる。ブロック２１５ではブロック２０３と同様にセクタ・バッファのセグメント＃２に記憶されたデータ・セット群をバッファ・コントローラ１５が順番に読み出して、ＣＲＣ回路２７が各データ・セットについてＣＲＣエラーの有無を検査する。
【００４５】
セグメント＃２に記憶されたデータ・セット群のいずれかのデータ・セットからＣＲＣエラーが検出された場合は、ブロック２１１に戻って同様の手順を繰り返す。ブロック２１５でセグメント＃２に記憶されたデータ・セット群のいずれのデータ・セットからもＣＲＣエラーが検出されないときは、ブロック２１７に移行してセグメント＃１とセグメント＃２のデータ・セット群をビット単位で比較する。この様子を図５を参照して説明する。図５（Ａ）において、セグメント＃１およびセグメント＃２には、ＬＢＡ１００からＬＢＡ８９９までの８００個のデータ・セット群が記憶されている。各データ・セット群を構成するユーザ・データ（データ・ブロック）は同一内容でホスト装置１１から送られている。
【００４６】
いま、セグメント＃１のＬＢＡ１５１に対応するデータ・セット１２１にＣＲＣエラーが発生したものとする。ＣＲＣ回路２７は反転ビットの位置まで特定することができないので、ＭＰＵユニット３３は、データ・セット１２１が記憶されていたセクタ・バッファ上のアドレスは認識しているが、セクタ・バッファ３１のエラー・ビット・アドレスまでは認識することができない。本実施の形態では、セグメント＃１のデータ・セット群とセグメント＃２のデータ・セット群に対して、それぞれのユーザ・データ１０１とＣＲＣＣ１０３について排他的論理和回路を用いてビットごとに比較する。
【００４７】
そして図５（Ｂ）に示すようにデータ・セット１２１のビット１２５とデータ・セット１２３のビット１２７が相違していることを検出する。ブロック２１５でデータ・セット１２３にはＣＲＣエラーが発生していないことが確認されているので、ビット１２７ではなくビット１２５が反転したことがわかる。ＭＰＵユニット３３は、ビット１２５のセクタ・バッファ上のアドレスを計算して、ブロック２１９でエラー・ビット・アドレスと当該エラー・ビットを含むデータ・セットに対応するＬＢＡをシステム領域４８に記録する。エラー・ビット・アドレスをシステム領域４８に記録することで、のちにセクタ・バッファ３１のソフト・エラーの原因を解析するのに必要なより有益な情報を得ることができるようになる。ここでは、セグメント単位でデータ・セット群同士を比較したが、ＭＰＵユニット３３は、ＣＲＣエラーが発生したデータ・セットに対応するＬＢＡがわかっているので、当該ＬＢＡのデータ・セットだけ比較するようにしてもよい。
【００４８】
ブロック２２１では、ＣＲＣエラーが発生したセグメント＃１を使用禁止にする。エラー・セグメントは、使用し続けるとＣＲＣエラーが再発する可能性がありその度に磁気ディスク装置１０のパフォーマンスが低下するため、パフォーマンスを重視する観点からは使用禁止にすることが望ましい。セグメント単位で使用禁止にするのは、セクタ・バッファの制御が容易なためであるが、セクタ・バッファの容量を重視する場合には、５１６バイトからなるデータ・セットの記憶領域の単位で使用禁止にしてもよい。セグメント単位で使用禁止にする場合は、セグメントの単位をさらに細分化して、良好な記憶領域が使用禁止になる割合をできるだけ小さくすることが望ましい。
【００４９】
ソフト・エラーは完璧に防ぐことができないという考えがある。このときはエラー・セグメントを使用禁止にするために、同一セグメントに所定の回数ＣＲＣエラーが発生した場合、同一セグメントの同一データ・セットのアドレスに所定の回数ＣＲＣエラーが発生した場合、あるいは、同一ビット・アドレスに所定の回数ＣＲＣエラーが発生した場合などの条件を設定して、特定のアドレスにソフト・エラーが複数回発生した場合に限って当該アドレスを使用禁止にすることもできる。
【００５０】
さらに、セグメント＃２のデータ・セット群をセグメント＃１に再度記憶し、セグメント＃１に再度記憶されたデータ・セット群からＣＲＣエラーが再度検出された場合に限ってセグメント＃１を使用禁止にするようにしてもよい。このときセグメント＃１でＣＲＣエラーが再発する場合は、ハード・エラーが生じている可能性が高いので、即時に使用禁止にしてそれ以降のパフォーマンスの低下を防ぐことが望ましい。
【００５１】
セグメント＃２のデータ・セット群をセグメント＃１に記憶し、セグメント＃１から読み出したデータ・セット群に対してＣＲＣエラーの検査をした結果は、ＣＲＣエラーの発生の有無にかかわらずシステム領域４８に記録しておくと、同一のデータ・パターンによる再現テストをしていることになるため、パターン依存性のあるソフト・エラーの原因解析に有益な情報を得ることができる。
【００５２】
［データ読み出し時の処理］
図６は、ホスト装置１１が磁気ディスク２５からデータを読み取るときの、本実施の形態にかかるセクタ・バッファの管理方法の手順を説明するフローチャートである。磁気ディスク２５には、図２（Ｂ）に示した各データ・セクタに図４（Ｃ）に示したデータ構造のデータ・セクタ情報１１３が記録されており、ホスト装置１１は、ファイルごとにデータ・セクタの先頭ＬＢＡとデータ・セクタ数の情報を保持している。
【００５３】
ブロック３０１では、ホスト装置１１が磁気ディスク２５から読み取りを行うファイルの先頭データ・セクタのＬＢＡと読み取るデータ・セクタの数を指定して磁気ディスク装置１０にリード・コマンドを送ると、磁気ディスク装置１０は読み取りの処理を開始する。リード・チャネル１９で処理され、それぞれがユーザ・データとＣＲＣＣとＥＣＣで構成される再生データ・セット１１５がチャネル・インターフェース回路１７に送られる。ＥＣＣ回路２９は、ＥＣＣ１０５を使用して各再生データ・セット１１５についてユーザ・データ１０１とＣＲＣＣ１０３からなるデータ・セット１００にＥＣＣエラーが発生したか否かを検査し、エラー・ビットの数が訂正能力以内であれば正しいデータ・セット１００に訂正する。訂正されたデータ・セット群はチャネル・インターフェース回路１７からバッファ・コントローラ１５に送られる。
【００５４】
再生データ・セット１１５においてＥＣＣエラーが生じたビット数が、ＥＣＣ回路２９の訂正能力を超えた場合は、エラー回復プロシジャ（ＥＲＰ）のステップを順番に実行してエラーの回復を試みる。最終的に回復できないと判断したときは、ホスト装置１１に報告する。したがって、バッファ・コントローラ１５に送られたユーザ・データ１０１とＣＲＣＣ１０３からなるデータ・セット１００はエラーが訂正されているので、記録時にセクタ・バッファ３１から読み取られたデータ・セットと同一の値になっている。ただし、非常に小さい確率でＥＣＣ回路２が誤って訂正する可能性は残っている。
【００５５】
ブロック３０３では、バッファ・コントローラ１５がＭＰＵユニット３３から指定されたセクタ・バッファ３１のセグメント＃１に読み取ったデータ・セット群を記憶する。ブロック３０５では、バッファ・コントローラ１５はホスト装置１１にデータ転送するタイミングでセグメント＃１からデータ・セット群を読み出し、ＣＲＣ回路２７は各データ・セットにＣＲＣエラーが発生しているか否かを検査する。セグメント＃１のデータ・セット群のいずれのデータ・セットにもＣＲＣエラーが発生していないと判断したときは、ブロック３０７で各データ・セットからＣＲＣを取り除いて５１２バイトのユーザ・データからなるデータ・ブロックをホスト装置１１に送る。
【００５６】
ブロック３０５でいずれかのデータ・セットからＣＲＣエラーが検出されたときは、ブロック３０９に移行し、図３のブロック２０９と同様の手順と理由でＣＲＣエラーに関するデータ情報とアドレス情報をシステム領域４８に記録する。つづいて、ブロック３１１では、ＭＰＵユニット３１１が再度データ・セグメント＃１に記憶したデータ・セット群が記録されていた磁気ディスク２５のＬＢＡから、ユーザ・データとＣＲＣＣとＥＣＣで構成された再生データ・セット１１５を読み取る。そして、バッファ・コントローラ１５は、再度読み取ったデータ・セット群を最初に記憶したセグメント＃１とは異なるセグメント＃２に記憶する。
【００５７】
セクタ・バッファ３１の別セグメントを利用することで、セグメント＃１にハード・エラーや高頻度のソフト・エラーが発生しているような場合に、ＣＲＣエラーが再発して読み取り処理のパフォーマンスが低下することを防止できる。ブロック３１５では、図３のブロック２１７と同様にセグメント＃１とセグメント＃２のデータ・セット群をビット単位で比較する。ＭＰＵユニット３３は、セグメント＃１のビット反転エラーが発生したセクタ・バッファ上のアドレスを計算して、ブロック３１７でエラー・ビット・アドレスと当該エラー・ビットを含むデータ・セットに対応するＬＢＡをシステム領域４８に記録する。
【００５８】
ブロック３１９では、図３のブロック２２１と同様にＣＲＣエラーが発生したセグメント＃１を使用禁止にする。使用禁止にする条件はブロック２２１と同様に設定することもできる。ブロック３２１では、ＭＰＵユニット３３はステータス・レジスタにエラー・ビットを設定してリード・コマンドの処理過程でエラーが発生したことをホスト装置１１に報告する。
【００５９】
［エラー情報の利用］
磁気ディスク装置１０に使用されるセクタ・バッファの故障を解析して信頼性を向上させるためには、ＣＲＣエラーを再現することが重要である。本実施の形態では、記録動作のときも再生動作のときもセクタ・バッファに記憶されたデータ・セットにＣＲＣエラーが発生したときには、発生時刻、データ・セットの内容、エラー・ビットのバッファ・アドレス、あるいはエラー・ビットを含むデータ・セットに対応するＬＢＡなどが磁気ディスク２５のシステム領域４８に記憶される。ＣＲＣエラーが頻発してホスト装置１１が故障と判断した磁気ディスク装置１０は、回収されたのちに解析技術者によってシステム領域４８のエラー情報が読み取られて再現試験に利用される。
【００６０】
特に、ソフト・エラーがビット・パターンに依存するか否かを解析する場合には、ＣＲＣエラーを再現するにはセクタ・バッファのアドレスとともにデータ・セットの内容まで知る必要があるが、本実施の形態によればそれらの情報はシステム領域４８に記録される。また、これまでは、セクタ・バッファ３１にＣＲＣエラーが発生してもホスト装置１１が磁気ディスク装置１０を故障であると判断するまでは、記録時はホスト装置からのデータの再転送が繰り返され、再生時は磁気ディスク２５からの再読み取りが繰り返されていたが、本実施の形態によればこのようなパフォーマンスの低下した状態で磁気ディスク装置１０が使用し続けられる状態を防ぐことができる。
【００６１】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態にかかる磁気ディスク装置の構成図である。
【図２】磁気ディスクのフォーマット構造を示す図である。
【図３】記録動作でのセクタ・バッファの管理手順を示すフローチャートである。
【図４】セクタ・バッファのデータ構造を示す図である。
【図５】セクタ・バッファのエラー・ビット・アドレスを特定する方法を説明する図である。
【図６】再生動作でのセクタ・バッファの管理手順を示すフローチャートである。
【符号の説明】
【００６３】
４８…システム領域
１００…データ・セット
１０１…ユーザ・データ（データ・ブロック）
１０３…エラー検査コード（ＣＲＣＣ）
１１３…データ・セクタ情報
１１５…再生データ・セット
【図１】
2007183844.tif 000003
【図２】
2007183844.tif 000004
【図３】
2007183844.tif 000005
【図４】
2007183844.tif 000006
【図５】
2007183844.tif 000007
【図６】
2007183844.tif 000008