(57)【要約】【課題】データ記憶装置の信頼性を向上し、回路規模の低減を図る。【解決手段】本発明の一形態において、ＨＤＤ１は、磁気ディスク１１へ記録されるデータのエラー訂正処理に加えて、ＤＲＡＭ２４に格納されるデータについてもエラー訂正処理を実行する。本形態のＨＤＤ１は、この二つのエラー訂正において一つのＳＲＡＭ３１８を共有して使用する。ＤＲＡＭ２４に格納されるデータについてエラー訂正処理を実行することでＨＤＤ１の信頼性を向上するとおもに、異なるエラー訂正処理において同一のＳＲＡＭ３１８を使用することで、回路規模の増大を抑えることができる。【選択図】図２
2007287208.tif 000002
【特許請求の範囲】
【請求項１】
外部からのライト・データを格納する、バッファ・メモリと、
前記バッファ・メモリからメディアへ転送されるライト・データに対してエラー訂正処理を実行する、第１エラー訂正部と、
前記メディアから読み出されたリード・データに対してエラー訂正処理を実行する、第２エラー訂正部と、
前記第１エラー訂正部のエラー訂正処理のために前記バッファ・メモリからのライト・データを一時的に格納するとともに、前記第２エラー訂正部のエラー訂正処理のために前記メディアから読み出されたリード・データを一時的に格納する、エラー訂正メモリと、
を備えるデータ記憶装置。
【請求項２】
前記第１エラー訂正部はコードに従って動作するプロセッサであり、前記第２エラー訂正部はオンザフライでエラー訂正処理を実行するハードウェア回路である、
請求項１に記載のデータ記憶装置。
【請求項３】
前記バッファ・メモリからメディアへ転送されるライト・データのエラー・チェックを実行するエラー・チェック回路をさらに備え、
前記エラー・チェック回路の処理と並列して、前記バッファ・メモリからのライト・データが前記エラー訂正メモリへ格納されると共に前記メディア向けて転送され、
前記第１エラー訂正部は、前記エラー・チェック回路がエラーを検出した場合に、そのエラー検出されたライト・データに対してエラー訂正処理を実行する、
請求項1に記載のデータ記憶装置。
【請求項４】
前記バッファ・メモリからのデータを前記エラー・チェック回路に転送するパスと、前記エラー訂正メモリから前記エラー・チェック回路にデータ転送するパスと、を備え、
前記第１エラー訂正部がエラー訂正を実行した場合、前記エラー訂正メモリから前記エラー・チェック回路にデータ転送するパスが選択される、
請求項１に記載のデータ記憶装置。
【請求項５】
前記エラー訂正メモリは複数ページのバッファを備え、
前記メディアからのリード・データは、前記複数ページの各ページに順次入力され、入力順に前記エラー訂正メモリから出力され、
前記バッファ・メモリからのライト・データは、前記複数ページの一部のページに格納され、
前記第１エラー訂正部は、前記ライト・データが格納されているページを特定するデータを取得し、その格納されているライト・データのエラー訂正処理を実行し、
前記エラー訂正メモリは、前記エラー訂正されたライト・データが格納されているページを選択してそのページからデータを出力する、
請求項１に記載のデータ記憶装置。
【請求項６】
前記外部からのライト・データにＥＣＣを付加するＥＣＣ付加回路を備え、
前記バッファ・メモリは、前記ＥＣＣが付加されたライト・データを一時的に格納し、
前記エラー・チェック回路は、前記ＥＣＣを使用して前記バッファ・メモリから転送されたライト・データのエラー検出処理を実行する、
請求項３に記載のデータ記憶装置。
【請求項７】
前記第１エラー訂正部は、前記エラー・チェック回路から誤り位置と誤りパターンを取得して前記ライト・データのエラー訂正を実行する、
請求項３に記載のデータ記憶装置。
【請求項８】
データ記憶装置において、データのエラー訂正を行う方法であって、
バッファ・メモリからメディアへ転送されるライト・データをメモリに格納し、
前記メモリに格納されたライト・データのエラー訂正処理を実行し、
前記エラー訂正されたライト・データをメディアに転送し、
前記メディアから読み出されたリード・データを前記メモリに格納し、
前記メモリに格納されたリード・データのエラー訂正処理を実行する、方法。
【請求項９】
ＥＣＣを付加したライト・データを前記バッファ・メモリに格納し、
前記バッファ・メモリから前記メディアへ転送され、前記ＥＣＣを有するライト・データを前記メモリに格納し、
前記バッファ・メモリから転送されたライト・データにおいてエラー検出された場合に、前記メモリに格納されたライト・データのエラー訂正処理を前記ＥＣＣによって実行する、請求項８に記載の方法。
【請求項１０】
前記メディアへ転送されるライト・データのエラー・チェック処理を実行し、
前記エラー・チェック処理と並列して、前記メディアへ転送されるライト・データを前メモリへの格納し、
前記エラー・チェック処理において前記ライト・データのエラー検出された場合に、前記メモリに格納されたライト・データのエラー訂正処理を実行する、
請求項８に記載の方法。
【請求項１１】
前記メディアからのリード・データを、前記メモリの複数ページの各ページに順次入力し、その入力順に前記メモリから出力し、
前記バッファ・メモリからのライト・データを、前記複数ページの一つのページに格納し、
前記格納されているライト・データのエラー訂正処理を実行し、
前記エラー訂正されたライト・データが格納されているページを選択してそのページからデータ出力する、
請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置及びそのエラー訂正方法に関し、特に、バッファ・メモリからメディアへ転送されるデータのエラー訂正に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
ＨＤＤは、データを記憶する不揮発性のメディアとしての磁気ディスクの他、ユーザ・データを一時的に保持するバッファ・メモリを有している。ＨＤＤは、バッファ・メモリを使用したキャッシュ機能を備える。典型的には、ＨＤＤは、リード・キャッシュとライト・キャッシュの双方の機能を備える。キャッシュ機能は、ホストとＨＤＤとの間のデータ転送速度とＨＤＤ内におけるメディア・アクセスの速度との間の差異を吸収し、ホストとの間におけるデータ転送遅延を抑制する。
【０００４】
バッファ・メモリは、キャッシュ能力を上げるためより多くの容量が要求され、典型的にはＤＲＡＭが使用される。近時、ＨＤＤのパフォーマンスの向上に伴い、バッファ・メモリの容量が増加し、また、そのアクセス・スピードが上がっている。これに伴い、ＤＲＡＭに欠陥が生じる確率も高くなってきている。
【０００５】
そこで、ＨＤＤとしての信頼性を向上するため、磁気ディスクに記録されたデータについてエラー訂正処理を行うことに加えて、ＨＤＤはバッファ・メモリに格納されるデータについてもエラー訂正処理を実行する。具体的には、ＨＤＤはホストから転送されたユーザ・データにＥＣＣ（Error Correcting Code）を付加し、バッファ・メモリに格納する。ＨＤＤは、バッファ・メモリからデータを読み出して磁気ディスクに転送する際に、ＥＣＣを使用したエラー訂正処理を実行する。また、ＨＤＤは、バッファ・メモリからホストに対してデータを転送する際にも、ＥＣＣを使用したエラー訂正処理を実行する。
【０００６】
なお、本発明とはその目的及び構成が異なるが、ホスト及び複数のＨＤＤを含むディスク・システムにおいて、同一のＥＣＣによってシステム全体として一貫したエラー訂正を行うことを、特許文献１が開示している。
【特許文献１】特開２００２−０２３９６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
バッファ・メモリに格納するデータについてエラー訂正処理を行うため、磁気ディスクのデータをエラー訂正するための構成に加えて、バッファ・メモリに格納されるデータのエラー訂正を行う構成が必要である。しかし、このエラー訂正処理を、その専用のハードウェア回路のみで行うことは回路規模の増大を招き、コストの増加につながる。
【０００８】
ここで、バッファ・メモリに格納するデータのエラー訂正処理の一部を、ソフトウェアによって実行することが考えられる。ＭＰＵがコードに従ってエラー訂正処理の一部を実行することで、エラー訂正機能を容易にＨＤＤに実装することができる。これによって、実装すべきハードウェア回路を縮小し、長期に渡る回路設計期間及び大きなコスト増加を避けることができる。
【０００９】
ＭＰＵがバッファ・メモリのデータをエラー訂正する方法として、バッファ・メモリから磁気ディスクに転送されるデータにおいてエラー検出された場合に、ＭＰＵがバッファ・メモリ上のデータを訂正し、再度、バッファ・メモリから磁気ディスクへ転送することが考えられる。しかし、この手法は、エラーの原因を特定することが困難である。具体的には、バッファ・メモリにキャッシュされたデータ自体にエラーが存在するのか、バッファ・メモリのセルに欠陥が存在するのは、あるいは、データが転送される途中でエラーが発生したのかを区別することが困難である。
【００１０】
データが壊れているのであれば、バッファ・メモリ上のエラー訂正によって対応することができるが、バッファ・メモリのセルがスタックしている場合や転送路に欠陥がある場合には、バッファ・メモリ上でのエラー訂正を行っても、繰り返しエラーが発生する。従って、ＭＰＵの処理によってエラー訂正を行う場合、この区別をつけるためのリトライや他の場所にコピーを行ってエラー訂正を行うことなどが必要とされる。これによって。コード・サイズが増大し、また、処理時間の増大によるパフォーマンスの低下を招く。
【課題を解決するための手段】
【００１１】
本発明の一つの態様に係るデータ記憶装置は、外部からのライト・データを格納するバッファ・メモリと、前記バッファ・メモリからメディアへ転送されるライト・データに対してエラー訂正処理を実行する第１エラー訂正部と、前記メディアから読み出されたリード・データに対してエラー訂正処理を実行する第２エラー訂正部と、前記第１エラー訂正部のエラー訂正処理のために前記バッファ・メモリからのライト・データを一時的に格納するとともに、前記第２エラー訂正部のエラー訂正処理のために前記メディアから読み出されたリード・データを一時的に格納するエラー訂正メモリを備える。第１及び第２エラー訂正部のエラー訂正処理がエラー訂正メモリを共有するので回路規模を低減できる。
【００１２】
前記第１エラー訂正部はコードに従って動作するプロセッサであり、前記第２エラー訂正部はオンザフライでエラー訂正処理を実行するハードウェア回路であることが好ましい。これによって、ホストへのデータ転送の遅延を避けつつ、プロセッサを使用することで回路規模の低減を図ることができる。
【００１３】
好ましくは、前記バッファ・メモリからメディアへ転送されるライト・データのエラー・チェックを実行するエラー・チェック回路をさらに備える。エラー・チェック回路の処理と並列に、前記バッファ・メモリからのライト・データが前記エラー訂正メモリへ格納される。また、エラー・チェック回路の処理と並列に、ライト・データが前記メディア向けて転送される。前記第１エラー訂正部は、前記エラー・チェック回路がエラーを検出した場合に、そのエラー検出されたライト・データに対してエラー訂正処理を実行する。このように、オンザフライによるエラー・チェックを行なうことがで、エラーが存在しない場合におけるデータ転送の遅延を防止できる。
【００１４】
好ましくは、前記バッファ・メモリからのデータを前記エラー・チェック回路に転送するパスと、前記エラー訂正メモリから前記エラー・チェック回路にデータ転送するパスと、を備え、前記第１エラー訂正部がエラー訂正を実行した場合、前記エラー訂正メモリから前記エラー・チェック回路にデータ転送するパスが選択される。これによって訂正後のデータを再度チェックすることができる。
【００１５】
好ましくは、前記エラー訂正メモリは複数ページのバッファを備え、前記メディアからのリード・データは、前記複数ページの各ページに順次入力され、入力順に前記エラー訂正メモリから出力され、前記バッファ・メモリからのライト・データは、前記複数ページの一部のページに格納され、前記第１エラー訂正部は、前記ライト・データが格納されているページを特定するデータを取得し、その格納されているライト・データのエラー訂正処理を実行し、前記エラー訂正メモリは、前記エラー訂正されたライト・データが格納されているページを選択してそのページからデータを出力する。第２エラー訂正部がエラー訂正処理のために複数ページを使用する場合において、第１エラー訂正部によって一部のバッファを的確に使用することができる。
【００１６】
前記外部からのライト・データにＥＣＣを付加するＥＣＣ付加回路を備え、前記バッファ・メモリは、前記ＥＣＣが付加されたライト・データを一時的に格納し、前記エラー・チェック回路は、前記ＥＣＣを使用して前記バッファ・メモリから転送されたライト・データのエラー検出処理を実行することが好ましい。これによって、バッファ・メモリ及びその転送路全体のエラー訂正を行うことができる。
【００１７】
前記第１エラー訂正部は、前記エラー・チェック回路から誤り位置と誤りパターンを取得して前記ライト・データのエラー訂正を実行することが好ましい。これによって、効率的なエラー訂正処理を行うことができる。
【００１８】
本発明の他の態様は、データ記憶装置において、データのエラー訂正を行う方法であって、バッファ・メモリからメディアへ転送されるライト・データをメモリに格納し、前記メモリに格納されたライト・データのエラー訂正処理を実行し、前記エラー訂正されたライト・データをメディアに転送し、前記メディアから読み出されたリード・データを前記メモリに格納し、前記メモリに格納されたリード・データのエラー訂正処理を実行するものである。メモリを二つのエラー訂正処理で共有することで、回路規模を低減することができる。
【００１９】
好ましくは、ＥＣＣを付加したライト・データを前記バッファ・メモリに格納し、前記バッファ・メモリから前記メディアへ転送され、前記ＥＣＣを有するライト・データを前記メモリに格納し、前記バッファ・メモリから転送されたライト・データにおいてエラー検出された場合に、前記メモリに格納されたライト・データのエラー訂正処理を前記ＥＣＣによって実行する。これによって、バッファ・メモリ及びその転送路全体のエラー訂正を行うことができる。
【００２０】
好ましくは、前記メディアへ転送されるライト・データのエラー・チェック処理を実行し、前記エラー・チェック処理と並列に、前記メディアへ転送されるライト・データを前メモリへの格納し、前記エラー・チェック処理において前記ライト・データのエラー検出された場合に、前記メモリに格納されたライト・データのエラー訂正処理を実行する。これによって、エラー・チェックによる転送遅延を防止し、さらに、エラー訂正の処理効率を上げることができる。
【００２１】
前記メディアからのリード・データを、前記メモリの複数ページの各ページに順次入力し、その入力順に前記メモリから出力し、前記バッファ・メモリからのライト・データを、前記複数ページの一つのページに格納し、前記格納されているライト・データのエラー訂正処理を実行し、前記エラー訂正されたライト・データが格納されているページを選択してそのページからデータ出力することが好ましい。
【発明の効果】
【００２２】
本発明によれば、データ記憶装置の信頼性の向上及び回路規模の低減を図ることができる。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。以下においては、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明の実施形態を説明する。
【００２４】
本実施形態は、ユーザ・データのエラー訂正処理の手法にその特徴の一つを有している。本形態のＨＤＤは、磁気ディスクへ記録されるデータのエラー訂正処理に加えて、バッファ・メモリに格納されるデータについてもエラー訂正処理を実行する。本形態のＨＤＤは、この二つのエラー訂正において一つのメモリを共有して使用する。バッファ・メモリに格納されるデータについてエラー訂正処理を実行することでＨＤＤの信頼性を向上するとおもに、異なるエラー訂正処理において同一のメモリを使用することで、回路規模の増大を抑えることができる。
【００２５】
本実施形態の特徴点の理解を容易とするため、最初に、ＨＤＤの全体構成を説明する。図１は、本実施の形態に係るＨＤＤ１の全体構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、エンクロージャ１０内に、メディア（記録媒体）の一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５、そしてアクチュエータ１６を備えている。
【００２６】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３及びバッファ・メモリの一例であるＤＲＡＭ２４などの各ＩＣを備えている。尚、各回路構成は一つのＩＣに集積すること、あるいは、複数のＩＣに分けて実装することができる。
【００２７】
ＳＰＭ１４は、そこに固定されている磁気ディスク１１を所定の角速度で回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。
【００２８】
各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダはアクチュエータ１６に固定されている。アクチュエータ１６はＶＣＭ１５に連結され、回動軸を中心に回動することによって、ヘッド素子部１２（及びスライダ）を磁気ディスク１１上において半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。ヘッド素子部１２には、典型的には、ライト・データに応じて電気信号を磁界に変換するライト素子及び磁気ディスク１１からの磁界を電気信号に変換するリード素子を備えている。なお、磁気ディスク１１は、１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。また、本発明をリード素子のみを備えるデータ記憶装置に適用することができる。
【００２９】
ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅（プリアンプ）し、ＲＷチャネル２１に送る。また、ＲＷチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。
【００３０】
ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号に変換してＡＥ１３に供給する。リード処理において、ＲＷチャネル２１はＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００３１】
ＨＤＣ／ＭＰＵ２３において、ＭＰＵはＤＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＤＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣはハードウェア・ロジック回路として構成され、ＭＰＵと一体的に様々な処理を実行する。例えば、ＨＤＣ／ＭＰＵ２３は、コマンド実行順序の管理、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。ＨＤＣ／ＭＰＵ１２３は、さらに、ホストから取得した、あるいは、磁気ディスク１１１から読み出したユーザ・データについてエラー訂正処理を実行する。本形態のＨＤＣ／ＭＰＵ２３は、ユーザ・データについてエラー訂正処理にその特徴を有する。その点については後に詳述する。
【００３２】
ＨＤＣ／ＭＰＵ２３は、ＲＷチャネル２１から取得した磁気ディスク１１からのリード・データをＤＲＡＭ２４内のリード・バッファに一旦格納した後、ホスト５１に転送する。また、ＨＤＣ／ＭＰＵ２３は、ホスト５１からのライト・データをＤＲＡＭ２４内のライト・バッファに一旦格納し、その後、所定のタイミングで磁気ディスク１１に転送する。
【００３３】
上述のように、本形態のＨＤＣ／ＭＰＵ２３は、磁気ディスク１１から読み出したユーザ・データのエラー訂正処理を実行するほか、ＤＲＡＭ２４から読み出したデータに対するエラー訂正処理を実行する。そこで、ユーザ・データのライト処理及びリード処理におけるエラー訂正処理の流れについて、図２を参照して説明する。なお、本明細書において、磁気ディスク１１からのデータに対するエラー訂正処理をメディア・エラー訂正処理と呼び、ＤＲＡＭ２４からのデータに対するエラー訂正処理をシステム・エラー訂正処理と呼ぶ。
【００３４】
図２は、ＨＤＣ／ＭＰＵ２３の一部の詳細及びＤＲＡＭ２４を模式的に示すブロック図である。ＨＤＣ／ＭＰＵは、ハードウェア回路で構成されたＨＤＣ２３１と、コードに従って動作するＭＰＵ２３２とを有している。ＨＤＣ２３１は、ホスト・インターフェース・コントローラ（ＨＩＣ）３１１、システムＥＣＣ（Error Correcting Code）ホスト３１２、メモリ・マネージャ３１３、システムＥＣＣドライバ３１４、ドライブ・マネージャ３１５、エラー訂正処理部の一例であるＥＣＣ訂正処理部３１６、ＳＲＡＭ３１７及びＳＲＡＭ３１８を有する。
【００３５】
本形態のＨＤＣ２３１は、メディア・エラー訂正処理とシステム・エラー訂正処理の双方において、ＳＲＡＭ３１８を使用する。このように、二つのエラー訂正処理が一つのＳＲＡＭ３１８を共有することで、ＨＤＣ２３１の回路規模を低減することができる。メディア・エラー訂正処理は、リード処理において磁気ディスク１１からのデータをエラー訂正する。一方、システム・エラー訂正処理はライト処理において磁気ディスク１１へのデータをエラー訂正する。従って、これらの処理が互いに干渉することなく、同一メモリ３１８を共有することができる。図２を参照して、ライト処理及びリード処理における転送データの流れについて説明する。
【００３６】
図２において、実線の矢印はホスト５１から転送されて磁気ディスク１１に記録されるデータ（ライト・データ）の流れを示している。また、点線の矢印は磁気ディスク１１から読みだされてホスト５１に転送されるデータ（リード・データ）の流れを示している。なお、リード及びライトの各処理において、データはデータ・セクタ単位で転送及び処理される。ここで、データ・セクタは、磁気ディスク１１におけるユーザ・データの記録単位であり、データ・セクタ毎にシステムＥＣＣ及びメディアＥＣＣが生成される。
【００３７】
図２のブロック図及び図３のフローチャートを参照して、ライト処理から説明する。ＨＩＣ３１１は、ホスト５１とＨＤＤ１とのインターフェース回路である。ライト処理において、ＨＩＣ３１１は、ホスト５１から転送されたユーザ・データ（ＵＤＡＴＡ）を、データ・バスを介してシステムＥＣＣホスト３１２へ供給する。システムＥＣＣホスト１２は、システムＥＣＣ（ＳＥＣＣ）を生成してユーザ・データに付加する（Ｓ１１）。
【００３８】
システムＥＣＣは、ＨＤＣ２３１内におけるエラーを訂正するためのコードであり、ＤＲＡＭ２４への転送及び書き込み、読み出し及び転送における各フェーズにおいて起こりうるエラーを訂正するためのＥＣＣである。本実施の形態においては、システムＥＣＣとしてＥＣＣ及びＣＲＣ（Cyclic Redundancy Check）コードが付加されているものとして説明するが、ＥＣＣのみを使用してもよい。ＥＣＣ及びＣＲＣコードとしては、例えば、リードソロモン符号を利用することができる。ホスト５１からのデータ転送を中断しないように、システムＥＣＣホスト３１２の処理はオンザフライで実行され、データ転送の流れを実質的に妨げることなく、システムＥＣＣの生成を行う。ここで、オンザフライ処理は、データの転送を中断することなく処理を行うことをいう。
【００３９】
システムＥＣＣホスト３１２は、システムＥＣＣ付きユーザ・データをメモリ・マネージャ３１３に、データ・バスを介して送る。メモリ・マネージャ１３は、受け取ったシステムＥＣＣ付きユーザ・データをＤＲＡＭ２４内のリード・バッファに一旦格納する（Ｓ１２）。その後、ドライブ・マネージャ３１５から要求があったときに、そのデータをＤＲＡＭ２４から読み出して、システムＥＣＣドライバ３１４にデータ・バスを介して転送する（Ｓ１３）。
【００４０】
エラー・チェック回路の一例であるシステムＥＣＣドライバ３１４は、システムＥＣＣ付きユーザ・データを受け取ると、そのシステムＥＣＣを使用してエラー・チェック処理を実行する（Ｓ１４）。システムＥＣＣドライバ３１４はユーザ・データのエラー・チェックを行うが、エラーが検出された場合であってもそのエラー訂正は行わない。システムＥＣＣドライバ３１４のエラー・チェック処理と並列に、システムＥＣＣ付きユーザ・データは、ＳＲＡＭ３１８に格納される（Ｓ１５）。
【００４１】
システムＥＣＣドライバ３１４によるエラー・チェック処理と平行して、システムＥＣＣ付きユーザ・データは、ドライブ・マネージャ３１５に転送される。つまり、システムＥＣＣドライバ３１４はエラー・チェック処理をオンザフライで実行し、データ転送の流れを妨げることがない。システムＥＣＣドライバ３１４がエラーを検出しない場合（Ｓ１４におけるＮＯ）、ドライブ・マネージャ３１５による処理がそのまま進行する。
【００４２】
ドライブ・マネージャ３１５は、受け取ったデータをＥＣＣ訂正処理部３１６に送る。ＥＣＣ訂正処理部３１６は、ドライブ・マネージャ３１５から受け取ったデータからメディアＥＣＣを生成する。メディアＥＣＣは、磁気ディスク１１へのデータ記録におけるエラーを訂正するためのコードである。
【００４３】
ドライブ・マネージャ３１５は、ＥＣＣ訂正処理部３１６からメディアＥＣＣを取得し、メディアＥＣＣ＋システムＥＣＣ付きユーザ・データを生成する（Ｓ１６）。こうしてドライブ・マネージャ３１５は、システムＥＣＣ＋メディアＥＣＣが付加されたユーザ・データを、データ・バスを介してＮＲＺ（Non-Return to Zero）データとしてＲＷチャネル２１へ供給する。システムＥＣＣドライバ３１４がエラーを検出しない場合は、上述の流れによってユーザ・データが磁気ディスク１１に転送される（Ｓ１７）。
【００４４】
システムＥＣＣドライバ３１４がエラーを検出した場合（Ｓ１４におけるＹＥＳ）、エラー訂正処理部の一例であるＭＰＵ２３２が、ＳＲＡＭ３１８を使用してエラー訂正処理を実行する。この点について詳細な説明する前に、リード処理におけるデータ転送の流れについて、図２及び図４のフローチャートを参照して説明する。ホスト５１からのリード・コマンドに対してキャッシュ・ヒットしない場合、磁気ディスク１１から該当データが読み出される（Ｓ２１）。磁気ディスク１１からデータを読み出すリード動作においては、ＲＷチャネル２１からシステムＥＣＣ＋メディアＥＣＣが付加されたユーザ・データをドライブ・マネージャ３１５が受け取り、これをＥＣＣ訂正処理部３１６へ供給する。
【００４５】
エラー訂正処理部の一例であるＥＣＣ訂正処理部３１６は、必要に応じてメディアＥＣＣによりユーザ・データとシステムＥＣＣからなるデータの誤りを修正する。具体的には、ＥＣＣ訂正処理部３１６は、ドライブ・マネージャ３１５から受け取ったデータをエラー訂正メモリの一例であるＳＲＡＭ３１８に格納する（Ｓ２２）と共に、エラー訂正のためのデータを生成する。
【００４６】
具体的には、ＥＣＣ訂正処理部３１６はドライブ・マネージャ３１５から受け取ったデータをもとＥＣＣシンドロームとＣＲＣシンドロームを生成する。これらがゼロである場合、エラーが存在せず、エラー訂正することなくデータ転送される。非ゼロの場合、ＥＣＣ訂正処理部３１６はＥＣＣシンドロームから誤り位置及び誤りパターンからなる誤りデータを計算する。さらに、ＥＣＣ訂正処理部３１６は、誤りデータの計算結果をもとに、ＣＲＣシンドロームを計算し、ＣＲＣシンドロームをもとに誤りデータが全て正しいか否かを判別する。誤りデータが全て正しければ、誤りデータに従ってユーザ・データとシステムＥＣＣからなるデータを訂正する。
【００４７】
ＥＣＣ訂正処理部３１６は、ＳＲＡＭ３１８から先に格納したシステムＥＣＣデータ付きユーザ・データを読み出し、誤りデータと読み出したデータとの排他的論理輪を計算することで訂正処理を行う（Ｓ２３）。以上の処理は、オンザフライで実行され、データ転送を中断することなく行うことができる。オンザフライ処理を行うため、ＳＲＡＭ３１８は複数ページのバッファを備えている。つまり、あるページのバッファに１セクタ前のデータを格納してそのエラー訂正処理を実行している間、次のセクタのデータを次のページに格納する。これによって、データ転送を中断することを防止する。メディア・エラー訂正におけるＳＲＡＭ３１８の使用方法については、後に詳述する。
【００４８】
誤りデータが正しくない場合、ＥＣＣ訂正処理部３１６は消失訂正処理によってエラー訂正を実行する。消失とは、誤りパターンが判れば訂正できる誤りのことである。消失訂正処理は、誤りである可能性の高い位置を消失位置として推定し、この消失位置をもとに誤りデータを計算する。消失訂正処理は、一般的にオフラインで実行され、データ転送が中断される。なお、これらエラー訂正の手法は公知の技術であり、詳細な演算方法の説明は省略する。
【００４９】
ＥＣＣ訂正処理部３１６がメディア・エラー訂正を行ったデータは、メモリ・マネージャ３１３に転送される。この転送データは、ユーザ・データとシステムＥＣＣとを有している。メモリ・マネージャ３１３は受け取ったデータを一旦ＤＲＡＭ２４に格納した後（Ｓ２４）、そのデータをＤＲＡＭ２４から読み出してシステムＥＣＣホスト３１２に転送する。
【００５０】
システムＥＣＣホスト３１２は、受け取ったデータについて必要場合にエラー訂正を実行する（Ｓ２５）。そのエラー訂正の方法は、ＥＣＣ訂正処理部３１６によるエラー訂正方法を実質的に同様である。つまり、システムＥＣＣホスト３１２は受け取ったデータをＳＲＡＭ３１７に一旦格納し、さらに、システムＥＣＣを使用してエラー訂正処理を実行する。この処理は、オンザフライで実行され、ユーザ・データの訂正をしながらシステムＥＣＣホスト１２からＨＩＣ３１１へ転送することが可能である。ＨＩＣ３１１は、そのユーザ・データをホスト５１に転送する（Ｓ２６）。以上で、リード処理が終了する。
【００５１】
上述のライト処理において、システムＥＣＣドライバ３１４がエラーを検出した場合の処理について、図５のブロック図及び図６のフローチャートを参照して詳細に説明する。上述のように、システムＥＣＣドライバ３１４は、メモリ・マネージャ３１３から転送されたデータに対して、エラー・チェック処理を実行する。システムＥＣＣドライバ３１４がシステムＥＣＣを使用したユーザ・データのエラー・チェック処理を行っていと同時に、システムＥＣＣ付きユーザ・データは、ＳＲＡＭ３１８に一時的に格納される。
【００５２】
システムＥＣＣドライバ３１４がユーザ・データにおいてエラーを検出すると、システムＥＣＣドライバ３１４はエラーを検出したことをドライブ・マネージャ３１５に通知する（ERROR DETECTION REPORT）。ドライブ・マネージャ３１５は、エラー検出の通知に応答して、磁気ディスク１１へのデータ転送を停止する（Ｓ３１）。従って、以下の処理はオフライ実行される。ドライブ・マネージャ３１５は、さらに、ＭＰＵ２３２に割り込み（INTERRUPT）を行う。なお、ドライブ・マネージャ３１５は、ＲＷチャネル２１へリード制御信号及びライト制御信号を出力して、磁気ディスク１１及びＲＷチャネル２１との間のデータ転送を制御する。
【００５３】
割り込みを受けたＭＰＵ２３２は、ドライブ・マネージャ３１５のステータス・レジスタを参照する。ステータス・レジスタのデータを確認することで、ＭＰＵ２３２は、その割り込みの理由がシステムＥＣＣドライバ３１４によるエラー検出であることを知る。ＭＰＵ２３２は、ＳＲＡＭ３１８に格納されているシステムＥＣＣ付きユーザ・データに対して、ＳＲＡＭ３１８上でエラー訂正を行う。
【００５４】
具体的には、ＭＰＵ２３は、システムＥＣＣドライバ３１４から誤りデータを取得し（Ｓ３２）、それによってＳＲＡＭ上のデータのエラー訂正を実行する（Ｓ３３）。誤りデータは、誤り位置（ERROR POSITION）及び誤りパターン（ERROR PATTERN）からなる。システムＥＣＣドライバ３１４は、エラー・チェック処理においてこの誤りデータを計算する。具体的には、システムＥＣＣドライバ３１４はシステムＥＣＣとユーザ・データとからＥＣＣシンドロームとＣＲＣシンドロームを生成し、エラーの有無を確認する。エラーが存在する場合、ＥＣＣシンドロームを使用して誤り位置と誤りパターンとを算出する。
【００５５】
システムＥＣＣドライバ３１４はレジスタを有し、そのレジスタに誤りデータを格納する。割り込みを受けたＭＰＵ２３２は、システムＥＣＣドライバ３１４のレジスタにアクセスして誤りデータを取得し、そのデータを使用してＳＲＡＭ３１８上のユーザ・データを修正する。なお、ＭＰＵ２３２はＳＲＡＭ３１８上のデータ及び誤りデータを使用してＣＲＣシンドロームを計算し、ＣＲＣシンドロームをもとに誤りデータが全て正しいか否かを判別する。誤りデータが全て正しければ、誤りデータに従ってユーザ・データとシステムＥＣＣからなるデータを訂正する。誤りデータによってエラー訂正することができない場合、エラー対応処理を実行する。この処理は、本明細書では省略する。
【００５６】
ＭＰＵ２３２がエラー訂正を完了すると、ＭＰＵ２３２はドライブ・マネージャ３１５にライト処理のリトライを指示する（WRITE RETRY COMMAND WITH PAGE NUMBER）。このとき、ＭＰＵ２３２、はＳＲＡＭ３１８のいずれのページからデータを読み出すかを併せてドライブ・マネージャ３１５に指示する。この点については、後に説明する。ＭＰＵ２３２から指示を受けたドライブ・マネージャ３１５は、システムＥＣＣドライバ３１４への入力パスを切り替えるセレクタ３１９を設定する。
【００５７】
ＨＤＣ２３１は、システムＥＣＣドライバ３１４への２つの入力パスを備えている。一つは、メモリ・マネージャ３１３からのパスであって、ＤＲＡＭ２４から読み出されたシステムＥＣＣ付きユーザ・データを、システムＥＣＣドライバ３１４へ転送する。もう一つのパスは、ＳＲＡＭ３１８からのパスである。このパスは、ＳＲＡＭ３１８上でエラー訂正されたシステムＥＣＣ付きユーザ・データを、システムＥＣＣドライバ３１４へ転送する。
【００５８】
セレクタ３１９は、上記２つのパスの一方を選択する。ライト処理の開始において、セレクタ３１９はメモリ・マネージャ３１３からのパスを選択する。その後、システムＥＣＣドライバ３１４がエラーを検出し、ＭＰＵ２３２がそのエラー訂正を実行すると、ドライブ・マネージャ３１５からの指示に応答して、システムＥＣＣドライバ３１４への入力をＳＲＡＭ３１８からのパスに切り替える。
【００５９】
ドライブ・マネージャ３１５からの指示に応答して、ＳＲＡＭ３１８は、エラー訂正されたデータを、システムＥＣＣドライバ３１４に対して出力する（Ｓ３４）。システムＥＣＣドライバ３１４は、ＳＲＡＭ３１８から転送されたシステムＥＣＣ付きユーザ・データに対して、再度、エラー・チェック処理を実行する（Ｓ３５）。エラーが検出されない場合、ドライブ・マネージャ３１５はＥＣＣ訂正回路３１６が生成しメディアＥＣＣを付加して、ＲＷチャネル２１へデータを転送する。
【００６０】
その後、ドライブ・マネージャ３１５はセレクタ３１９がメモリ・マネージャ３１３からのパスを選択するようにセットし、ＤＲＡＭ２４からのデータが、順次、システムＥＣＣドライバ３１４に転送される。なお、システムＥＣＣドライバ３１４が再度エラー検出した場合、上記処理を規定数繰り返し、なおエラー訂正されない場合は、他のエラー対応処理を実行する。
【００６１】
以上のように、ＤＲＡＭ２４のデータを格納する前にＥＣＣを付与し、ＤＲＡＭ２４から磁気ディスク１１へ転送されるデータに対してエラー・チェック及びエラー訂正処理を行うことで、データ自体、ＤＲＡＭ２４の欠陥もしくはパスにおける欠陥のエラー・ケースの判別を行うことなく、データ・エラーに対応することができる。つまり、本形態のシステム・エラー処理は、ＤＲＡＭ２４におけるエラーを主な対象とするが、ＨＤＣ内のシステム・エラーに対応している。また、ＭＰＵ２３２がエラー訂正したデータを再度エラー・チェックすることで、マイクロ・コードのバグや転送パスで起こるエラーに対応することができる。
【００６２】
図５に示すように、ＳＲＡＭ３１８は複数ページのバッファを備えており、本例においては３ページのバッファを備えている。ＳＲＡＭ３１８が複数ページのバッファを有することで、ＥＣＣ訂正処理部３１６のオンザフライ処理を可能としている。ＳＲＡＭ３１８を使用したＥＣＣ訂正処理部３１６の訂正処理について、具体的に、図７を参照して説明する。
【００６３】
リード処理において、ドライブ・マネージャ３１５は、磁気ディスク１１からメディアＥＣＣ＋システムＥＣＣ付きユーザ・データを取得する。データは、１データ・セクタ毎に転送される。ドライブ・マネージャ３１５は、データ・セクタ毎にＥＣＣ訂正処理部３１６にデータを転送する。ＥＣＣ訂正処理部３１６は、転送されたデータ・セクタ毎に、エラー訂正のための演算処理を行う。ＥＣＣ訂正処理部３１６は、１データ・セクタに対する上記の演算処理と平行して、そのデータ・セクタをＳＲＡＭ３１８の特定のページに格納する。
【００６４】
ＥＣＣ訂正処理部３１６は、ページ０−ページ２の各バッファに順次データ・セクタを格納する。つまり、リード処理において、ＥＣＣ訂正処理部３１６は最初のデータ・セクタをページ０のバッファに格納し、次のデータ・セクタをページ１のバッファに格納し、その次のデータ・セクタをページ２のバッファに格納する。ページ２のバッファに格納した後は、ＥＣＣ訂正処理部３１６は再びページ０のバッファに次のデータ・セクタを格納する。このように、ＳＲＡＭ３１８は、各ページに順次入力されたデータ・セクタを格納していく。
【００６５】
ＳＲＡＭ３１８からのデータ・セクタの読み出しも、同様に各ページから順次実行される。上記の例に従えば、最初にページ０のデータ・セクタが読み出され、その後、順次、ページ１、ページ２そしてページ０のデータ・セクタが読み出される。各ページから読み出されたデータは、ＥＣＣ訂正処理部３１６が生成した誤りパターンと演算されることでエラー訂正され、メモリ・マネージャ３１３に転送される。
【００６６】
ＥＣＣ訂正処理部３１６がエラー訂正のための計算をするためには相応の計算時間を必要とする。従って、ＳＲＡＭ３１８に格納されたデータは、ＥＣＣ訂正処理部３１６の計算の終了を待って出力される。その間に、磁気ディスク１１からは次のデータ・セクタが転送されてくる。ＳＲＡＭ３１８は、次のデータ・セクタを、前のデータ・セクタと異なるページに格納する。また、ＥＣＣ訂正処理部３１６は、２データ・セクタの転送時間内に１データ・セクタの演算を終了することができる。
【００６７】
例えば、ページ０のデータについての計算は、ページ２へのデータ・セクタの格納完了前に終了することができ、その次のデータ・セクタを遅滞なくページ０に格納することができる。以上のバッファ制御によって、磁気ディスク１１からのデータ転送を中断することなく、ＥＣＣ訂正処理部３１６がオンザフライでエラー訂正処理を実行することができる。
【００６８】
図５に戻って、システム・エラー訂正処理におけるＳＲＡＭ３１８の使用方法について説明する。上述のように、メディア・エラー訂正処理をオンザフライで実行するため、ＳＲＡＭ３１８は、複数の各ページにデータを順次格納し、さらに、格納された順において、各ページからデータを順次出力する。しかし、システム・エラー訂正処理は１データ・セクタの訂正処理を行うものであるので、複数ページの内の１ページのみを使用する。
【００６９】
ＭＰＵ２３２がエラー訂正を行うためには、いずれのページにデータが格納されているかを知ること必要である。本形態においては、データのＳＲＡＭ３１８への格納はＥＣＣ訂正回路３１６が制御しており、ＥＣＣ訂正処理部３１６がＭＰＵ２３２にエラー訂正すべきデータが格納されているページを知らせる。
【００７０】
システムＥＣＣドライバ３１４からのシステムＥＣＣ付きユーザ・データは、リード処理と同様に、ページ０から順次各ページに格納されていく。つまり、ライト・データの転送が開始されると、最初のデータ・セクタはページ０に格納され、その後、ページ１、ページ２の順に格納され、さらに、ページ０から再び格納される。システムＥＣＣドライバ３１４がエラー検出をしない場合は、磁気ディスク１１へ転送されるデータが、各ページに、順次格納されていく。ＥＣＣ訂正処理部３１６は、レジスタを備え、次にデータを格納すべきページを特定するデータをそこに保存している。
【００７１】
いずれかのデータ・セクタにおいてシステムＥＣＣドライバ３１４がエラーを検出すると、上述のようにＨＤＣ２３１が処理を停止し、ＭＰＵ２３２に割り込みを行う。ＭＰＵ２３２は、ＥＣＣ訂正処理回路３１６のレジスタを参照して、エラー検出されたデータが格納されているページを特定する。ＭＰＵ２３２は、特定されたページのデータに対してシステムＥＣＣドライバ３１４から取得した誤りデータを使用してエラー訂正を実行する。
【００７２】
エラー訂正が終了すると、ＭＰＵ２３２は、ドライブ・マネージャ３１５にライト・リトライを指示するが、このとき、ＳＲＡＭ３１８のいずれのページからデータを書き出すべきかを指定する。ドライブ・マネージャ３１５は、ＭＰＵ２３２からの指示に従って、指定されたページからデータを出力することをＳＲＡＭ３１８に指示する。これによって、システム・エラー訂正に使用する
【００７３】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、ＨＤＤを例にとって説明したが、光ディスクや光磁気ディスクなど他のメディアを使用するデータ記憶装置、あるいはそのメディアを着脱可能なデータ記憶装置に適用してもよい。
【００７４】
バッファ・メモリとしてはＤＲＡＭを使用し、ＨＤＣ内のメモリとしてはＳＲＡＭを使用することが好ましいが、これらに限定されることなく、他のタイプのメモリを使用してもよい。ＳＲＡＭ上のページ数は３に限らず設計によって最適な数が選択される、また、１ページは１データ単位以上の容量であることが好ましいが、それに限られない。上述のＥＣＣ訂正処理部は、ドライブ・マネージャから取得したデータからＥＣＣを生成するが、ＥＣＣ訂正処理部がシステムＥＣＣドライバからデータを取得し、ＥＣＣ付きのデータをドライブ・マネージャに転送する構成としてもよい。
【図面の簡単な説明】
【００７５】
【図１】本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図２】本実施の形態にかかるリード処理及びライト処理の流れを説明するブロック図である。
【図３】本実施の形態にかかるライト処理において、システム・エラーが検出されない場合の処理を示すフローチャートである。
【図４】本実施の形態にかかるリード処理におけるエラー訂正処理を示すフローチャートである。
【図５】本実施の形態にかかるシステム・エラー訂正に関連する論理構成を模式的に示すブロック図である。
【図６】本実施の形態にかかるライト処理において、システム・エラーが検出された場合の処理を示すフローチャートである。
【図７】本実施の形態にかかるメディア・エラー訂正に関連する論理構成を模式的に示すブロック図である。
【符号の説明】
【００７６】
１  ハードディスク・ドライブ、１０  筺体、１１  磁気ディスク
１２  ヘッド素子部、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／ＭＰＵ、２４  ＤＲＡＭ
３１１  ホスト・インターフェース・コントローラ
２３１  ハードディスク・コントローラ、２３２  ＭＰＵ
３１２  システムＥＣＣホスト、３１３  メモリ・マネージャ
３１４  システムＥＣＣドライバ、３１５  ドライブ・マネージャ
３１６  ＥＣＣ訂正処理部、３１７、３１８  ＳＲＡＭ、３１９  セレクタ
【図１】
2007287208.tif 000003
【図２】
2007287208.tif 000004
【図３】
2007287208.tif 000005
【図４】
2007287208.tif 000006
【図５】
2007287208.tif 000007
【図６】
2007287208.tif 000008
【図７】
2007287208.tif 000009