(57)【要約】【課題】複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理すること。【解決手段】実施形態によれば、外部メモリに格納される第１のデータのエラー訂正が開始される前に第１のデータに対する他のアクセスを遮断し、外部メモリに格納される第１のデータのエラーを訂正し、エラーが訂正された第２のデータを外部メモリに格納し、第２のデータを外部メモリに格納した後、第２のデータに対する前記他のアクセスを解放する。【選択図】  図３
2014182847.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリに格納されるデータのエラー訂正方法であって、
前記外部メモリに格納される第１のデータのエラー訂正が開始される前に当該第１のデータに対する他のアクセスを遮断し、
前記外部メモリに格納される前記第１のデータのエラーを訂正し、
前記エラーが訂正された第２のデータを前記外部メモリに格納し、
前記第２のデータを前記外部メモリに格納した後、前記第２のデータに対する前記他のアクセスの遮断を解除する
エラー訂正方法。
【請求項２】
前記第１のデータのエラーを訂正することは、前第１のデータの訂正可能なエラーの有無を示す情報、前記第１のデータのエラーの訂正が完了したか否かを示す情報を管理して記憶する、ことを含む請求項１に記載のエラー訂正方法。
【請求項３】
前記外部メモリに格納した前記第２のデータを読み出した第３のデータのエラーを訂正し、当該第３のデータに訂正できないエラーがある場合、前記第３のデータを一時的に格納し、前記第２のデータのリード要求に応じて前記一時的に格納した第３のデータを送出する、請求項１または請求項２に記載のエラー訂正方法。
【請求項４】
前記第３のデータのエラーを訂正することは、前記第３のデータに訂正できないエラーがあるか否かを示す情報を管理して記憶する、ことを含む請求項３に記載のエラー訂正方法。
【請求項５】
外部メモリとデータを送受するためのインターフェース手段と、
前記インターフェース手段を介して前記外部メモリに格納されるデータのエラーを訂正する訂正手段と、
前記訂正手段による前記訂正が開始される前から当該訂正が完了するまで、前記外部メモリに格納される前記訂正の対象となるデータに対するアクセスを優先して確保する調停手段と、
を具備するエラー訂正装置。
【請求項６】
請求項５に記載のエラー訂正装置と、
前記外部メモリと、
前記エラー訂正装置と前記外部メモリとの間の前記データの送受を制御するためのプロセッサと、
を具備する情報記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データのエラー訂正を実行するエラー訂正方法、エラー訂正装置、および情報記憶装置に関する。
【背景技術】
【０００２】
近年、ハードディスクドライブ（ＨＤＤ）やＳＳＤといった情報記憶装置では、記憶領域から読み出したデータのエラー訂正が行われている。一般に、記憶領域から読み出されエラー訂正の対象となるデータは、ＤＲＡＭやＳＲＡＭなどの演算用の一時記憶領域に格納される。一時記憶領域に格納されたデータのエラー訂正は、一時記憶領域とのインターフェースを実行するハードウェアブロックを介して、ファームウェアに基づくＣＰＵによって制御されることがある。エラー訂正のために一時記憶領域に格納されたデータが、他のファームウェアなどの複数のブロックに共有されると、これら複数のブロックからのアクセスが衝突する可能性が生じる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１５５４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができるエラー訂正方法、エラー訂正装置、および情報記憶装置を提供することである。
【課題を解決するための手段】
【０００５】
実施形態のエラー訂正方法は、外部メモリに格納される第１のデータのエラー訂正が開始される前に第１のデータに対する他のアクセスを遮断し、外部メモリに格納される第１のデータのエラーを訂正し、エラーが訂正された第２のデータを外部メモリに格納し、第２のデータを外部メモリに格納した後、第２のデータに対する前記他のアクセスを解放する。
【図面の簡単な説明】
【０００６】
【図１】実施形態にかかる情報記憶装置としての磁気ディスク装置（ＨＤＤ）を備える電子機器の構成を示すブロック図。
【図２】本実施形態にかかる情報記憶装置に備えられ、エラー訂正処理を実行するブロックの構成例を説明するための図。
【図３】本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の概略的な動作を説明するための図。
【図４】本実施形態にかかるエラー訂正処理で利用される訂正情報テーブルの一例を示す図。
【図５】本実施形態にかかるエラー訂正処理で利用される一時退避テーブルの一例を示す図。
【図６】本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の動作フローを説明するためのフローチャート。
【発明を実施するための形態】
【０００７】
以下、いくつかの実施形態について図面を用いて説明する。なお、本発明は以下の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、以下の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【０００８】
図１は、実施形態にかかる情報記憶装置としての磁気ディスク装置（以下、ＨＤＤとも称する）１０を備える電子機器１５０の構成を示すブロック図である。電子機器１５０はホスト装置１００およびＨＤＤ１０を備えている。ホストＩ／Ｆ１２０は、ホスト装置１００とＨＤＤ１０とを接続し、ホスト装置１００とＨＤＤ１０との間のコマンドおよびユーザデータの送受信に利用される。ＨＤＤ１０は、ホストＩ／Ｆ１２０を介してホスト装置１００と接続され、ホスト装置１００の記憶モジュールとして機能する。例えば、電子機器１５０は、パーソナルコンピュータやモバイル機器であり、ホスト装置１００は、パーソナルコンピュータ等に備えられるチップセットＩＣである。
【０００９】
本実施形態では、情報記憶装置としてＨＤＤ１０の例を説明するが、半導体メモリを記録媒体とする装置（ＳＳＤやメモリカード）、光ディスクドライブ、光磁気ディスクドライブなどの情報記憶装置に、本実施形態の構成を適用することが可能である。本実施形態にかかる情報記憶装置は、記録媒体から読み出された情報に訂正可能な情報がある場合に、この情報のエラー訂正処理を行う。
【００１０】
ＨＤＤ１０は、磁気ディスク１、スライダ２、アーム３、ＶＣＭ（ボイスコイルモータ）４、及びＳＰＭ（スピンドルモータ）５などの機構部を有する。またＨＤＤ１０は、モータドライバ２１、ヘッドＩＣ２２、ＮＶＲＡＭ４３、及びコントローラ６０などの回路ブロックを備える。コントローラ６０は、リードライトチャネル（以下、ＲＤＣとも称する）３１、ＣＰＵ４１、ＲＡＭ４２、およびＨＤＣ（Hard Disc Controller）５０を含む。本実施形態に係るＨＤＤ１０では、磁気ディスク１やＮＶＲＡＭ４３に恒久的に記録された情報に訂正可能な情報がある場合に、この情報に対するエラー訂正処理が行われる。
【００１１】
例えば、ホスト装置１００からの要求に応じて磁気ディスク１から読み出された情報は、磁気ディスク１に対してデータ転送速度が相対的に速い記憶領域（例えば、ＲＡＭ４２）に一時的に格納される。一時的に格納された情報に対して、エラー訂正の要否が判定され、判定結果に応じてエラー訂正処理が実行される。一時的に格納された情報は、複数のブロック（ファームウェアまたはハードウェア）からアクセスされる。これら複数のブロックは、メモリアクセスクライアントと称されることがある。複数のメモリアクセスクライアントからのアクセスが好適に調停されることで、本実施形態にかかる情報記憶装置は、記憶領域に格納され、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００１２】
磁気ディスク１は、ＳＰＭ５に固定され、ＳＰＭ５が回転駆動することで回転する。磁気ディスク１の少なくとも一方の面は磁気的に情報が記録される記録面である。つまり、磁気ディスク１は磁気記録媒体である。記録面には例えば同心円の複数のトラックが定義され、各トラックはサーボ領域とデータ領域とを有する。サーボ領域には、磁気ディスク１の記録面上での物理的なアドレスを示す位置情報を含むサーボ情報が記録されている。データ領域には、ＨＤＤ１０の制御に用いられるプログラムや管理情報、およびホスト装置１００から送信された情報が記録される。
【００１３】
スライダ２は、磁気ディスク１の記録面に対応するようにアーム３の一端に備えられる。スライダ２は、リードヘッド（不図示）及びライトヘッド（不図示）を備えている。リードヘッド（不図示）は、磁気ディスク１の記録面に記録された信号を磁気的に読み取る。読み取られた信号は、アーム３上の導体パターンを介してヘッドＩＣ２２へ出力される。ライトヘッド（不図示）は、ヘッドＩＣ２２からアーム３上の導体パターンを介して入力されるライト信号（ライト電流）に応じて、磁気ディスク１の記録面に磁気的に記録する。
【００１４】
アーム３は、一端にスライダ２、他端に軸受部３ａを備えている。アーム３は、ＶＣＭ４への駆動電流の供給に応じて、軸受部３ａの略中央部を中心として回転し、磁気ディスク１の記録面上でスライダ２を半径方向に移動させる。
【００１５】
ＶＣＭ４は、モータドライバ２１から供給される駆動信号（電流）に応じて駆動し、アーム３を回転させる。
【００１６】
ＳＰＭ５は、モータドライバ２１から供給される駆動信号（電流）に応じて駆動し、磁気ディスク１を回転させる。
【００１７】
モータドライバ２１は、コントローラ６０（さらに詳細にはＣＰＵ４１）からの制御信号に基づいて、ＶＣＭ４を駆動するための駆動信号（電流）をＶＣＭ４へ、ＳＰＭ５を駆動するための駆動信号（電流）をＳＰＭ５へ供給する。
【００１８】
ヘッドＩＣ２２は、スライダ２に備えられたリードヘッド（不図示）からアーム３上の導体パターンを介して入力された信号を増幅し、増幅した信号をリード情報としてコントローラ６０（さらに詳細にはＲＤＣ３１）に出力する。また、ヘッドＩＣ２２は、コントローラ６０（またはＲＤＣ３１）から出力された記録情報に応じたライト信号（ライト電流）を、スライダ２に備えられたライトヘッド（不図示）へ、アーム３上の導体パターンを介して出力する。
【００１９】
コントローラ６０は、ＲＤＣ３１、ＣＰＵ４１、ＲＡＭ４２、およびＨＤＣ５０を含むＳｏＣ（System On Chip）として構成される。本実施形態では、コントローラ６０は、磁気ディスク１またはＮＶＲＡＭ４３から読み出された情報に対するエラー訂正処理の実行を制御する。なお、コントローラ６０がＲＡＭ４２を含まず、コントローラ６０の外部にＲＡＭ４２が接続される構成であってもよい。
【００２０】
ＲＤＣ３１は、ヘッドＩＣ２２から出力されたリード情報から、サーボ領域に対応するサーボ情報（アドレス情報および位置情報を含む）を抽出し、抽出したサーボ情報をＣＰＵ４１へ出力する。またＲＤＣ３１は、リード情報からデータ領域に対応する情報を抽出し、抽出した情報に所定の処理を施して復号化する。復号化された情報はＨＤＣ５０へ出力される。さらにＲＤＣ３１は、ＨＤＣ５０から入力された記録すべき情報に所定の処理を施して符号化し、この符号化した情報を記録情報としてヘッドＩＣ２２へ出力する。ＲＤＣ３１は、これらの複数の処理のためにＲＡＭ４２をワークメモリとして利用する。
【００２１】
ＣＰＵ４１は、磁気ディスク１またはＮＶＲＡＭ４３に記憶されたプログラムに基づくファームウェアを実行して、ＨＤＤ１０に備えられた各ブロックを制御するプロセッサである。例えばＣＰＵ４１は、磁気ディスク１の記録面に対するリードヘッド（不図示）の位置制御処理、ＶＣＭ４及びＳＰＭ５の回転制御処理、及び磁気ディスク１に対する情報の再生記録処理の動作を制御する。ＣＰＵ４１は、所定のプログラムに基づいて、コントローラ６０がサーボコントローラ、又はリードライトコントローラとして動作するように、ＨＤＤ１０に備えられた各ブロックを制御する。ＣＰＵ４１は、これらの制御においてＲＡＭ４２をワークメモリとして利用する。
【００２２】
本実施形態では、コントローラ６０がリードライトコントローラとして動作する場合、ＣＰＵ４１は、ＨＤＣ５０での情報の復号化において実行されるエラー訂正処理の動作を制御する。また、ＣＰＵ４１は、エラー訂正処理で訂正される情報に関する、エラー訂正の状態やエラーの発生状態を管理するための訂正管理情報を更新する。さらに、ＣＰＵ４１は、本実施形態にかかるエラー訂正処理において、訂正される情報が格納される記憶領域の位置情報を管理する。このエラー訂正処理は、ＣＰＵ４１で実行されるファームウェアに対する割り込み要求をトリガとして実行される。本実施形態にかかる情報記憶装置は、このエラー訂正処理により、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００２３】
ＲＡＭ４２は、ＲＤＣ３１、ＣＰＵ４１及びＨＤＣ５０のワークメモリである。ＲＡＭ４２には、主にＨＤＣ５０によって実行されるエラー訂正処理の対象となる情報が一時的に記憶される。またＲＡＭ４２には、エラー訂正処理で訂正される情報に関する訂正管理情報が記憶される。さらに、ＲＡＭ４２には、ＣＰＵ４１で実行されるファームウェアにかかるプログラムが記憶される。ＲＡＭ４２としては、揮発性メモリであるＤＲＡＭ（ＳＤＲＡＭ）またはＳＲＡＭが適用される。ＲＡＭ４２に一時的に格納された情報は、ハードウェアまたはファームウェアによる複数のブロックからアクセスされる。ＲＡＭ４２に格納された情報に対する主たるメモリアクセスクライアントは、ＣＰＵ４１である。
【００２４】
ＮＶＲＡＭ４３は、ＣＰＵ４１が実行するプログラムを記憶する不揮発性メモリである。ＮＶＲＡＭ４３に記憶されるプログラムは更新可能である。ＮＶＲＡＭ４３は、ＣＰＵ４１が制御する複数の処理で利用されるパラメータ値を記憶する。ＮＶＲＡＭ４３に、エラー訂正処理で訂正される情報に関する訂正管理情報が記憶されてもよい。ＮＶＲＡＭ４３に格納されるデータは、ＨＤＣ４０で実行されるエラー訂正処理の対象のデータとなり得る。
【００２５】
ＨＤＣ５０は、ホスト装置１００との間で情報を送受信する通信処理を実行する。ＨＤＣ５０は、ＲＤＣ３１からの復号化された情報に所定の処理を施して符号化し、符号化した情報を送信情報としてホスト装置１００へ送信する。またＨＤＣ５０は、ホスト装置１００から受信した受信情報に所定の処理を施して復号化し、復号化した情報を記録すべき情報としてＲＤＣ３１へ出力する。例えばＨＤＣ５０は、ホスト装置１００との間でＳＡＴＡ（Serial Advanced Technology Attachment）規格に準拠した通信処理を実行する。ＨＤＣ５０は、ＣＰＵ４１で実行されるファームウェアにかかるプログラムのデータに対しても、復号化または符号化の処理を行う。ＨＤＣ５０は、情報の符号化または復号化の処理において、ＲＡＭ４２に一時的に情報を記憶させる。本実施形態では、ＨＤＣ５０は、訂正可能な情報がある場合に、この情報に対するエラー訂正処理を実行する。
【００２６】
このような構成により、本実施形態に係るＨＤＤ１０に備えられた複数のブロックによって、訂正可能な情報に対するエラー訂正処理が実行される。このエラー訂正処理は、主にＨＤＣ５０によって、ＲＡＭ４２に一時的に格納された情報に対して実行される。ＲＡＭ４２に格納された情報は、ハードウェアまたはファームウェアによる複数のブロックからアクセスされる。本実施形態にかかるＨＤＤ１０は、複数のブロックそれぞれからのアクセスを好適に調停するため、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００２７】
次に、図２を用いて、本実施形態にかかる情報記憶装置に備えられ、エラー訂正処理を実行するブロックの構成を説明する。図２は、本実施形態にかかる情報記憶装置に備えられ、エラー訂正処理を実行するブロックの構成例を説明するための図である。
【００２８】
本実施形態にかかるエラー訂正処理は、主にＨＤＣ５０に備えられる複数のブロックによって実行される。これらのブロックは、ＣＰＵ４１で実行されるファームウェアによって制御される。
【００２９】
ＨＤＣ５０は、メモリコントローラ２０１、調停部２０２、訂正部２０３を備える。ＣＰＵ４１、ＲＤＣ３１、またはホスト装置１００は、メモリコントローラ２０１および調停部２０２を介して、ＲＡＭ４２に格納されたデータに対してアクセスする。すなわち、ＣＰＵ４１、ＲＤＣ３１、およびホスト装置１００は、ＲＡＭ４２に対するメモリアクセスクライアントである。
【００３０】
メモリコントローラ２０１は、調停部２０２とＲＡＭ４２との間に接続され、ＲＡＭ４２とデータを送受するためのハードウェアブロックである。メモリコントローラ２０１は、ＲＡＭ４２に対して、データを格納するため、またはデータを読み出すためのインターフェース手段として機能する。メモリコントローラ２０１は、調停部２０２から要求されたアドレスに基づいて、データを記録またはデータを読み出すための信号をＲＡＭ４２に出力する。
【００３１】
調停部２０２は、ＲＡＭ４２に格納されたデータに対する、ＣＰＵ４１、ＲＤＣ３１、またはホスト装置１００からのアクセスを調停する。調停部２０２は、ＲＡＭ４２に格納されたデータに対する、ＣＰＵ４１で実行される複数のファームウェアからのアクセスも調停する。本実施形態にかかるエラー訂正処理では、調停部２０２は、ＲＡＭ４２に格納され、エラー訂正の対象となるデータに対する、現在のメモリアクセスクライアントからのアクセスを優先的に維持し、他のメモリアクセスクライアントからのアクセスを遮断する。本実施形態にかかるエラー訂正処理におけるメモリアクセスクライアントは、ＣＰＵ４１（より詳細には、ＣＰＵ４１で実行されるエラー訂正処理に関するファームウェア）である。
【００３２】
訂正部２０３は、ＲＡＭ４２に格納されたデータがエラー訂正可能か否かを判定し、判定の結果が訂正可能なデータに対してエラー訂正処理を実行する。エラー訂正処理において、訂正部２０３は、ＣＰＵ４１（より詳細には、ＣＰＵ４１で実行されるエラー訂正処理に関するファームウェア）によって制御されてエラー訂正処理を実行する。
【００３３】
このような構成により、ＲＡＭ４２に格納されたデータに対する、複数のメモリアクセスクライアントからのアクセスが好適に調停されるエラー訂正処理が実行される。すなわち、本実施形態にかかる情報記憶装置によれば、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００３４】
次に、図３，４，５を用いて、本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の概略的な動作を説明する。図３は、本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の概略的な動作を説明するための図である。
【００３５】
図３には、メモリコントローラ２０１を介した、ＲＡＭ４２とメモリアクセスクライアントとの間でのデータのやり取りが概略的に示される。図３に示すデータのやり取りの間、ＲＡＭ４２に格納されたデータに対する、特定のメモリアクセスクライアント３００からのアクセスが維持される。アクセスの維持は、主に調停部２０２によって制御される。
【００３６】
（Ｂ３０１）で、メモリアクセスクライアント３００は、メモリコントローラ２０１を介して、ＲＡＭ４２の特定のアドレスに格納されたデータをリードする。メモリアクセスクライアント３００によるＲＡＭ４２からのデータリードは、バースト転送とも称される。（Ｂ３０１）の前に、調停部２０２はメモリアクセスクライアント３００によるアクセスを優先して確保しておく。換言すると、（Ｂ３０１）の前に、調停部２０２は、メモリアクセスクライアント３００以外のメモリアクセスクライアントによる、ＲＡＭ４２の特定のアドレスに格納されたデータへのアクセスを遮断する。
【００３７】
（Ｂ３０２）で、エラー訂正部２０３により、リードされたデータに訂正可能なエラーがあるか否かが判断される。エラーがないと判断された場合、リードされたデータはメモリアクセスクライアント３００に提供され、訂正可能なエラーがあると判断された場合、エラー訂正部２０３はエラーを訂正し、訂正されたデータは訂正情報テーブル３１０に格納される。何れの判断に応じた処理が行われた場合でも、エラー訂正に関する情報が、訂正情報テーブル３１０に格納される。また、リードされたデータに訂正不可能なエラーがある場合、一時退避テーブル３２０から読み出されたデータが、メモリアクセスクライアント３００に提供される。訂正情報テーブル３１０および一時退避テーブル３２０は、訂正管理情報である。
【００３８】
図４に、訂正情報テーブル３１０の一例を示す。図４は、本実施形態にかかるエラー訂正処理で利用される訂正情報テーブル３１０の一例を示す図である。訂正情報テーブル３１０には、訂正の状態を示す情報として１ｂｉｔで表現される複数のフラグ情報が用いられる。フラグ情報として、「Stored Flag」、「Corrected Flag」、「Verified Flag」、そして「Reassign Flag」が定義されているが、これらに限定されるものではない。「Stored Flag」は、エラー訂正に関する有効な情報があるか否かを示す情報である。「Corrected Flag」は、エラー訂正後のデータがＲＡＭ４２に書き戻されたか否かを示す情報である。「Verified Flag」は、ＲＡＭ４２に書き戻されたデータに対するベリファイチェックがなされたか否かを示す情報である。そして、「Reassign Flag」は、ベリファイチェックの結果に応じて、チェックされたデータが一時的に退避されたか否かを示す情報である。
【００３９】
また、訂正情報テーブル３１０では、フラグ情報に対してアドレス情報とデータが対応付けられた「段」が定義される。アドレス情報は、エラー訂正の判定対象となったデータの、ＲＡＭ４２でのアドレス範囲を示す情報である。データは、エラー訂正の判定対象となったデータ、もしくは、エラー訂正されたデータである。すなわち、フラグ情報によって、ＲＡＭ４２のあるアドレス範囲に格納されたデータのエラー訂正の状態を管理することができる。例えば、全てのフラグ情報の値が「０」である段は、「エラー訂正に関する情報がない」状態を示す。この場合、アドレス情報「ＡＤ７」およびデータ「ＤＡ７」は、意味のない値となる。すなわち、全てのフラグ情報の値が「０」である段は、新たに情報を追加する際に用いることが可能である。また、全てのフラグ情報の値が「１」である、アドレス情報が「ＡＤ０」のデータ「ＤＡ０」は、「エラー訂正後にＲＡＭ４２に格納されたデータのベリファイチェックの結果でエラーがある」状態を示す。これらの他に、「訂正可能なエラーがある」、「訂正可能なエラーを訂正後にＲＡＭ４２に格納した」、または「エラー訂正後にＲＡＭ４２に格納されたデータのベリファイチェックの結果でエラーがない」状態などを示すことができる。
【００４０】
なお、訂正情報テーブル３１０は、ＲＡＭ４２の一部に格納されるが、情報記憶装置（ＲＡＭ４２）の電源が遮断される前に、不揮発の記憶領域（例えば、ＮＶＲＡＭ４３や磁気ディスク１）に退避されてもよい。また、訂正情報テーブル３１０の情報は、複数の「段」によるテーブル形式で管理されている必要はなく、各情報が対応付けられて管理されていればよい。
【００４１】
図３に戻り、（Ｂ３０３）〜（Ｂ３０４）で、メモリアクセスクライアント３００は、エラー訂正を施したデータを、メモリコントローラ２０１を介してＲＡＭ４２の元のアドレス（読み出した際のアドレス）に書き戻す。すなわち、元のアドレスに対して、エラー訂正されたデータが上書き更新される。
【００４２】
（Ｂ３０５）で、メモリアクセスクライアント３００は、ＲＡＭ４２に書き戻したデータを（書き戻したアドレスから）再びリードし、エラー訂正部２０３がリードされたデータをベリファイチェックする。
【００４３】
（Ｂ３０６）で、エラー訂正部２０３により、再びリードされたデータに訂正不可能なエラーがあると判断された場合、このデータはアドレス情報と共に一時退避テーブル３２０に格納される。再びリードされたデータに訂正不可能なエラーがあるか否かに因らず、エラー訂正に関する情報は、訂正情報テーブル３１０に格納される。
【００４４】
図５に、一時退避テーブル３２０の一例を示す。図５は、本実施形態にかかるエラー訂正処理で利用される一時退避テーブル３２０の一例を示す図である。一時退避テーブル３２０には、訂正情報テーブル３１０の全てのフラグ情報の値が「１」である「エラー訂正後にＲＡＭ４２に格納されたデータのベリファイチェックの結果でエラーがある」状態のデータとそのアドレス情報が対応付けられて管理される。すなわち、一時退避テーブル３２０に格納されるデータは、エラーデータを含む可能性があるデータである。
【００４５】
なお、一時退避テーブル３２０は、ＲＡＭ４２の一部に格納されるが、情報記憶装置（ＲＡＭ４２）の電源が遮断される前に、不揮発の記憶領域（例えば、ＮＶＲＡＭ４３や磁気ディスク１）に退避されてもよい。また、一時退避テーブル３２０の情報は、テーブル形式で管理されている必要はなく、アドレス情報とデータとが対応付けられて管理されていればよい。このアドレス情報およびデータは、訂正情報テーブル３１０にも格納されているため、一時退避テーブル３２０にはアドレス情報のみが格納されていてもよい。
【００４６】
再び図３に戻り、（Ｂ３０７）で、一時退避テーブル３２０に格納されたデータが、エラー訂正処理の初めにＲＡＭ４２からリードされたデータに置き換えられて、メモリアクセスクライアント３００に提供されることが可能である。（Ｂ３０１）から（Ｂ３０７）の処理が完了した後、調停部２０２は、メモリアクセスクライアント３００によるアクセスを他のメモリアクセスクライアントに解放する。換言すると、（Ｂ３０１）から（Ｂ３０７）の処理が完了した後、調停部２０２は、メモリアクセスクライアント３００以外の他のメモリアクセスクライアントの遮断を解除する。
【００４７】
このような動作により、本実施形態にかかるエラー訂正処理では、ＲＡＭ４２に格納されたデータに対する特定のメモリアクセスクライアントからのアクセスが保護される。すなわち、ＲＡＭ４２に格納されたデータに訂正可能なエラーがある場合に、このエラーの訂正処理の実行を他のメモリアクセスクライアントから保護することが可能となる。このようにして、本実施形態にかかる情報記憶装置によれば、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００４８】
次に、図６を用いて、本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の動作フローを説明する。図６は、本実施形態にかかる情報記憶装置で実行されるエラー訂正処理の動作フローを説明するためのフローチャートである。
【００４９】
調停部２０２は、メモリアクセスクライアント３００によるＲＡＭ４２へのアクセスの開始前に、このアクセスの保護を開始する。メモリアクセスクライアント３００が、調停部２０２によるアクセスの保護の下で、メモリコントローラ２０１を介してＲＡＭ４２からデータをリードする（Ｂ６０１）と、エラー訂正部２０３が、リードされたデータのエラーの状態（訂正可能なエラーがあるか否か）をチェックする（Ｂ６０２）。エラーの状態のチェック結果の判断（Ｂ６０３）で、エラーがない場合（Ｂ６０３のＮｏ）、エラー訂正部２０３は、チェック結果を訂正情報テーブル３１０に登録する（Ｂ６０４）。チェック結果の判断でエラーがある場合（Ｂ６０３のＹｅｓ）、エラー訂正部２０３は、そのエラーが訂正可能か否かを判定する（Ｂ６０５）。エラーが訂正可能である場合（Ｂ６０５のＹｅｓ）、エラー訂正部２０３は、そのエラーを訂正し、訂正したデータを含む、この訂正にかかる情報を、訂正情報テーブル３１０に登録する（Ｂ６０４）。
【００５０】
一方、エラーが訂正可能ではない場合（Ｂ６０５のＮｏ）、メモリアクセスクライアント３００は、そのデータが読み出されたアドレス情報（と共に管理されているデータ）が、一時退避テーブル３２０に格納されているか否かを判定する（Ｂ６０６）。アドレス情報（またはデータ）が格納されている場合（Ｂ６０６のＹｅｓ）、メモリアクセスクライアント３００は、一時退避テーブル３２０に格納されているデータを読み出して、訂正可能でないと判定されたデータと置換する（Ｂ６０７）。一時退避テーブル３２０にデータが格納されていない場合（Ｂ６０６のＮｏ）の処理については後述するため、ここでの説明を省略する。
【００５１】
訂正情報テーブル３１０にエラー訂正に関する情報が格納された（Ｂ６０５）後、および、一時退避テーブル３２０に格納されているデータへの置換がなされた（Ｂ６０７）後、メモリアクセスクライアント３００は、エラーの状態をチェックされたデータが、アクセスすべきデータの最終データであるか否かを判定する（Ｂ６０８）。そのデータが最終データでない場合（Ｂ６０８のＮｏ）、継続するアクセス（すなわち、ＲＡＭ４２からのデータのリード）（Ｂ６０１）が再び行われる。エラー状態をチェックされたデータが、最終データである場合（Ｂ６０８のＹｅｓ）、メモリアクセスクライアント３００は、訂正情報テーブル３１０に格納された情報を確認する（Ｂ６０９）。
【００５２】
訂正情報テーブル３１０に新たな情報がある場合（Ｂ６０９のＹｅｓ）、メモリアクセスクライアント３００は、新たな情報として格納されている対象のデータを、対応するＲＡＭ４２のアドレス情報に上書き更新し、上書き更新したデータを再び読み出す。エラー訂正部２０３は、読み出されたデータのエラーの状態をチェック（ベリファイ）する（Ｂ６１０）。エラーの状態のチェック結果の判断（Ｂ６１１）で、エラーがない場合（Ｂ６１１のＮｏ）、エラー訂正部２０３は、チェック結果を訂正情報テーブル３１０に登録する（Ｂ６１２）。チェック結果の判断（Ｂ６１１）で、エラーがある場合（Ｂ６１１のＹｅｓ）、エラー訂正部２０３は、そのエラーの訂正を試み、訂正結果のデータを含む、この訂正にかかる情報を、一時退避テーブル３２０に登録する（Ｂ６１３）。エラー訂正部２０３は、この場合でも、チェック結果を訂正情報テーブル３１０に登録する（Ｂ６１２）。なお、訂正情報テーブル３１０に新たな情報が複数ある場合、これらの処理はそれぞれの情報（データ）に対して行われる。
【００５３】
そして、メモリアクセスクライアント３００によるＲＡＭ４２へのアクセスが完了し、アクセスした全てのデータがメモリアクセスクライアント３００に転送されると、調停部２０２は、このアクセスを解放する（Ｂ６１４）。また、最終データへのアクセス後に訂正情報テーブル３１０に新たな情報がない場合（Ｂ６０９のＮｏ）も同様に、メモリアクセスクライアント３００によるＲＡＭ４２へのアクセスは完了し、アクセスした全てのデータが転送されて、このアクセスが解放される。一方で、ＲＡＭ４２から読み出したデータが訂正可能でなく、一時退避テーブル３２０にそのアドレス情報（およびデータ）が格納されていない場合（Ｂ６０６のＮｏ）は、メモリアクセスクライアント３００によるＲＡＭ４２へのアクセスは中断されて、このアクセスが解放される（Ｂ６１５）。
【００５４】
なお、本実施形態のエラー訂正処理を実行するファームウェア（メモリアクセスクライアント３００）は、図６に示したフローチャートにおける各処理以外に、例えば、以下に示す条件で割り込み要求を受けることがある。それぞれの割り込み要求に対応した処理は、エラー訂正処理を実行するファームウェア以外のファームウェアによって実行される。具体的には、以下に記述するように、条件１に対して処理１が実行され、同様に、条件２〜５それぞれに対して処理２〜５が実行される。
【００５５】
（条件１）ベリファイの結果、訂正可能なデータが検出されて訂正情報テーブルが更新された場合。すなわち、訂正情報テーブル３１０の各フラグの値が、（stored flag, corrected flag, verified flag, reassign flag）＝（１, １, １, ０）の状態に更新された場合。（処理１）訂正情報テーブル３１０の更新されたアドレスとデータに対応づけられた情報（フラグ情報）がクリアされる。すなわち、フラグ情報がクリアされるとは、訂正情報テーブル３１０の各フラグの値が、（stored flag, corrected flag, verified flag, reassign flag）＝（０, ０, ０, ０）の状態に更新されることを示す。
【００５６】
（条件２）ベリファイの結果、ＲＡＭ４２から読み出されたデータの修復に失敗し（エラーが訂正できず）、一時退避テーブル３２０に新規の情報が追加された。（処理２）修復に失敗したため、一時退避テーブル３２０に新たに格納されたデータのアドレスが確認されて、ＲＡＭ４２の該当アドレスの周辺アドレスは使用不可能であると判定され、ＲＡＭ４２の他のアドレスにデータを展開し直す。また、この処理の完了後に、訂正情報テーブル３１０および一時退避テーブル３２０の該当アドレスに関する情報がクリアされる。
【００５７】
（条件３）訂正情報テーブル３１０がオーバーフローした。すなわち、訂正情報テーブル３１０のフラグ情報が（stored flag, corrected flag, verified flag, reassign flag）＝（０, ０, ０, ０）の状態の段がない状態で（すなわち、新規の訂正情報をこれ以上登録できない状態で）、新たに訂正可能なデータが検出された。（処理３）訂正情報テーブル３１０に格納された情報の内容が確認され、確認された情報の中で格納しておく必要のない情報が無効化されて、訂正情報テーブルに情報の格納領域が確保される。
【００５８】
（条件４）訂正実施テーブル３１０のフラグ情報の値（エラー訂正の状態）によらず、訂正不可能なデータが検出された。（処理４）一時待避テーブル３２０に登録されたデータが使用されたか否かに応じて異なる処理が実行される。一時退避テーブル３２０に情報（アドレスおよびデータ）が登録された時点では、その情報は訂正可能の状態であったはずである。そのアドレスのデータを読み出した際に訂正不可能になったということは、ＲＡＭ４２の該当アドレスの周辺アドレスは物理的に損傷している可能性があるため使用を中止したほうが良いと判断することができる。そこで、この場合は、ＲＡＭ４２の他のエリア（アドレス領域）に一時待避テーブル３２０に登録されたデータを移動する処理が必要とされる。この処理が終了した後、一時退避テーブル３２０の該当情報（アドレスおよびデータ）がクリア（flagを０にする）される。一方、一時退避テーブル３２０に該当の情報（アドレスおよびデータ）が登録されていなかった場合、ＲＡＭ４２上の該当アドレスのデータが壊れているかの再チェック（例えば、該当アドレスに対するライト＆リードなど)がなされる。ＲＡＭ４２自身が壊れていないと判断された場合、該当データが元々格納されていた磁気ディスク１やＮＶＲＡＭ４３からデータをロードし直す（データの修復）などの処理が実行される。
【００５９】
（条件５）一時退避テーブル３２０がオーバーフローした。（処理５）一時格納テーブル３２０に格納されたデータの アドレスが確認されて、ＲＡＭ４２の該当アドレスの周辺アドレスは使用不可能であると判定され、ＲＡＭ４２の他のアドレスにデータを展開し直す。この処理の完了後に、一時退避テーブル３２０の該当アドレスに関する情報がクリアされる。
【００６０】
このような動作フローにより、本実施形態にかかるＨＤＤ１０は、ＲＡＭ４２に格納されたデータに対する特定のメモリアクセスクライアントからのアクセスが保護されるエラー訂正処理を実行することができる。すなわち、本実施形態にかかるエラー訂正処理によれば、ＲＡＭ４２に格納されたデータに訂正可能なエラーがある場合において、このエラーの訂正処理の実行を他のメモリアクセスクライアントから保護することが可能となる。このようにして、本実施形態にかかる情報記憶装置によれば、複数のブロックに共有されるデータに対する複数のブロックからのアクセスを好適に管理することができる。
【００６１】
以上説明したように本実施形態によれば、メモリコントローラ２０１を介して、メモリアクセスクライアント３００によるＲＡＭ４２に格納された情報へのアクセスが実行される。このアクセスにおける、訂正可能なデータに対するエラー訂正処理が実行される期間は、調停部２０２によって他のメモリアクセスクライアントからのアクセスから保護される。
【００６２】
すなわち、本実施形態によれば、エラー訂正処理における、エラーの検出から訂正までの時間が短縮化されるため、ＲＡＭ４２のあるビットの特性が劣化するビット故障が存在する場合に、エラーの検出から訂正までの時間に多くの時間を要すことでビット故障が進行することを抑制することができる。
【００６３】
また、本実施形態によれば、エラー訂正処理を実行するためのメモリアクセスクライアント（ファームウェア）による制御が優先的に実行されるため、他のメモリアクセスクライアントによる割り込み処理を考慮する必要がなくなる。そのため、エラー訂正処理を実行するためのファームウェアの構造を簡素化することが可能となる。また、エラー訂正処理を実行するためのファームウェアによるアクセスと、他のメモリアクセスクライアント（ファームウェア）のアクセスとの衝突を回避することが可能となる。また、エラーの訂正に時間がかかる場合であっても、この訂正処理を中断せずに継続することが可能となる。
【００６４】
さらに、本実施形態にかかるエラー訂正処理は、訂正したデータのベリファイ処理を伴うため、ＲＡＭ４２に格納されるデータの格納位置（アドレス情報）を変更することの必要性を適時に把握することができ、ＲＡＭ４２に格納されるデータの格納位置を最適に設定することができる。
【００６５】
本実施形態にかかるエラー訂正処理は、データを情報記憶領域に記憶する際の管理情報を多く必要とし、比較的頻繁にこの管理情報を更新する装置（例えば、ＳＳＤやメモリカードなどの半導体記憶媒体を利用する装置）に適用される場合に、より大きな効果を奏することができる。
【００６６】
以上、少なくとも一つの実施形態を説明したが、説明した実施形態は一例として提示したものであり、発明の範囲はこの実施形態に限定されない。また、説明した実施形態は、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。さらに、前述した実施形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよく、さらに、異なる実施形態に係る構成要素を適宜組み合わせても良い。これらの実施形態やその変形は、発明の範囲や要旨に含まれ、特許請求の範囲に記載された発明と、その均等の範囲に含まれるものである。
【符号の説明】
【００６７】
１…磁気ディスク、２…スライダ、３…アーム、４…ＶＣＭ（ボイスコイルモータ）、５…ＳＰＭ（スピンドルモータ）、１０…磁気ディスク装置（ＨＤＤ）、２１…モータドライバ、２２…ヘッドＩＣ、３１…リードライトチャネルＩＣ（ＲＤＣ）、４１…ＣＰＵ、４２…ＲＡＭ、４３…ＮＶＲＡＭ、５０…ＨＤＣ（Hard Disc Controller）、１００…ホスト装置、１２０…通信媒体（ホストＩ／Ｆ）、１５０…電子機器、２０１…メモリコントローラ、２０２…調停部、２０３…訂正部。
【図１】
2014182847.tif 000003
【図２】
2014182847.tif 000004
【図３】
2014182847.tif 000005
【図４】
2014182847.tif 000006
【図５】
2014182847.tif 000007
【図６】
2014182847.tif 000008