(57)【要約】      （修正有）【課題】磁気ディスク装置のデッドコピー等で生成する擬似アンコレクタブルエラーセクタ識別情報を適切に記憶できるようにする。【解決手段】記憶装置は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を擬似アンコレクタブルエラーセクタ内に記憶する。また、記憶装置は、セクタ内に記憶された識別情報を用いて、セクタについてのデータ処理を行う。また、記憶装置は、擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、エラーログを登録するか否かを示すログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶する。また、記憶装置は、ログ処理情報と識別情報とを用いて、データ処理を行う。【選択図】図１
2010061242.tif 000002
【特許請求の範囲】
【請求項１】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する記憶制御部と、
前記記憶制御部によってセクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部と、
を備えることを特徴とする記憶装置。
【請求項２】
前記擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、エラーログを登録するか否かを示すログ処理情報を当該擬似アンコレクタブルエラーセクタ内に記憶するログ処理情報記憶制御部と、
前記データ処理制御部は、前記ログ処理情報記憶制御部によって記憶された前記ログ処理情報と、前記識別情報とを用いて、データ処理を行うことを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記セクタは、データを記憶するデータ領域と、当該データ領域に含まれるエラーを訂正する際に用いられる情報を記憶するＥＣＣ領域とを備え、
前記記憶制御部は、前記データ領域内にある端数領域または前記ＥＣＣ領域内にある端数領域に、前記識別情報を記憶することを特徴とする請求項１または２に記載の記憶装置。
【請求項４】
前記データ処理制御部は、前記識別情報を用いずにデータ処理を行う旨の指示を受け付けると、前記記憶制御部によって記憶された前記識別情報を用いずに前記セクタについてのデータ処理を行うことを特徴とする請求項１〜３のいずれか一つに記載の記憶装置。
【請求項５】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタ内に記憶された当該擬似アンコレクタブルエラーセクタを識別する識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部を備えることを特徴とする制御装置。
【請求項６】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタ内に記憶された当該擬似アンコレクタブルエラーセクタを識別する識別情報を用いて、当該セクタについてのデータ処理を行う処理工程をコンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶装置、制御装置および制御プログラムに関する。
【背景技術】
【０００２】
磁気ディスクなどの記憶媒体上に、ＥＣＣ（Error  Correction  Code）情報によって訂正することができないアンコレクタブルエラーを作成する手法が知られている。例えば、修理対象とする古い磁気ディスク内にあるセクタにアンコレクタブルエラーが含まれている場合、修理は、修理対象の磁気ディスク内にあるデータをそのまま新しい磁気ディスク内にコピーするなどして行われる。このような場合に、上記手法では、新しい磁気ディスク内のセクタの内、修理対象の磁気ディスク内でアンコレクタブルエラーが含まれていたセクタと同一のセクタに、アンコレクタブルエラーを意図的に作成する。
【０００３】
また、従来より、セクタ内にアンコレクタブルエラーを実際に作成するのではなく、アンコレクタブルエラーを擬似的に作成する手法も知られている。具体的には、磁気ディスクは、記憶媒体とは別にメモリを備え、アンコレクタブルエラーが含まれるセクタである旨の識別情報をメモリに記憶させる。そして、記憶媒体を制御する制御装置は、メモリを参照し、メモリに記憶されている識別情報によって指定されるセクタについて、アンコレクタブルエラーが含まれるセクタであるものとして擬似的に扱う。なお、セクタに含まれるＥＣＣ内に、著作権を管理する情報を格納する手法が開示されている。
【０００４】
【特許文献１】特開２００１−１１０１３６号公報（第１−３頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記した従来の技術では、識別情報を適切に記憶することができないという課題があった。すなわち、例えば、上記した従来の技術を実行する場合には、記憶媒体とは別に、識別情報すべてを記憶する容量を備えるメモリを用意しなければならなかった。
【０００６】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、識別情報を適切に記憶することが可能である記憶装置、制御装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、記憶装置は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する記憶制御部を備える。また、記憶装置は、前記記憶手段によってセクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部を備える。
【発明の効果】
【０００８】
識別情報を適切に記憶することが可能である。
【発明を実施するための最良の形態】
【０００９】
以下に添付図面を参照して、この発明に係る記憶装置、制御装置および制御プログラムの実施例を詳細に説明する。なお、以下では、実施例１に係る記憶装置の概要、記憶装置の構成、動作モード、実施例１に係る記憶装置の処理の流れを順に説明し、その後、その他の実施例について説明する。
【実施例１】
【００１０】
［記憶装置の概要］
まず最初に、図１を用いて、実施例１に係る記憶装置の概要を説明する。図１は、実施例１に係る記憶装置の概要を説明するための図である。
【００１１】
実施例１に係る記憶装置では、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する。すなわち、図１に示すように、記憶装置は、記憶装置が備える記憶媒体（メディア）上に設けられるセクタ内の領域に、当該セクタについての識別情報を記憶する。
【００１２】
そして、実施例１に係る記憶装置は、セクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行う。例えば、記憶装置は、擬似アンコレクタブルエラーセクタであることを示す識別情報を読み出した場合には、当該識別情報を読み出したセクタに対して、アンコレクタブルエラーを含むセクタとしてのデータ処理を行う。
【００１３】
このようなことから、実施例１に係る記憶装置は、識別情報を適切に記憶することが可能である。例えば、識別情報を記憶するメモリに識別情報を記憶して用いる手法とは異なり、すべてのセクタについて識別情報を記憶する場合であっても記憶することが可能である。
【００１４】
［記憶装置の構成］
次に、図２を用いて、図１に示した記憶装置２００の構成を説明する。図２は、実施例１に係る記憶装置の構成を説明するためのブロック図である。同図に示すように、この記憶装置２００は、ホスト１００と接続され、ドライブ２１０と記憶部２２０と制御部２３０とを備える。
【００１５】
なお、以下では、擬似アンコレクタブルエラーセクタに関する処理について重点的に説明し、その他の処理については簡潔に説明する。なお、以下では、説明の便宜上、擬似アンコレクタブルエラーセクタ内に含まれると扱われるアンコレクタブルエラーを「擬似アンコレクタブルエラー」と記載する。
【００１６】
ホスト１００は、記憶装置２００と接続され、記憶装置２００と情報の送受信を行うコンピュータなどが該当する。例えば、ホスト１００は、利用者からの要求により、ドライブ２１０に情報を書き込む要求であるライトコマンドを発行し、ドライブ２１０から情報を読み出す要求であるリードコマンドを発行し、記憶装置２００に送る。また、ホスト１００は、情報を記憶装置２００から受信し、利用者に出力する。
【００１７】
記憶装置２００の説明に戻る。ドライブ２１０は、制御部２３０と接続され、メディアを備える。また、ドライブ２１０は、ホスト１００から送られたライトコマンドによって指定される情報を記憶する。なお、ドライブ２１０は、制御部２３０によってコマンドが入力され、入力されたコマンドに基づいて処理を実行する。具体的には、ドライブ２１０は、入力されたコマンドを記憶する記憶部（図２には示していない）を備え、当該記憶部に制御部２３０から入力されたコマンド各々をコマンド列として記憶する。そして、ドライブ２１０は、当該コマンド列に含まれるコマンド各々を実行する。なお、ドライブ２１０が行う処理の詳細については、後述する。
【００１８】
また、ドライブ２１０は、メディアに設けられたセクタ各々に情報を記憶する。例えば、ドライブ２１０では、図３に示すような一般的なセクタフォーマットが用いられる。なお、図３は、セクタフォーマットの一例を説明するための図である。図３に示す一般的なセクタフォーマットでは、「ＰＡＤ」は、データを再生する際に発生する遅延時間を吸収する緩衝領域であり、「ＳＢ」は、データ領域が開始する位置を示す情報を記憶する領域である。また、「ＤＡＴＡ」は、ホスト１００から送られたライトコマンドによって指定される情報が入力される領域である。
【００１９】
また、「ＥＣＣ」は、セクタから情報を読み出す際に、当該情報に含まれるエラーを訂正する際に用いられるＥＣＣ情報を記憶する領域である。図３に示す一般的なセクタフォーマットでは、「ＥＣＣ」によるエラー訂正の対象となる領域は、「ＤＡＴＡ」と「ＥＣＣ」とが該当する。また、ライトコマンドやリードコマンドによって指定される情報を記憶する領域は、「ＤＡＴＡ」が該当する。なお、アンコレクタブルエラーとは、ＥＣＣ情報によって訂正することができないエラーである。
【００２０】
また、ドライブ２１０は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を、擬似アンコレクタブルエラーセクタ内に記憶する。図４に示す例では、ドライブ２１０は、「ＤＡＴＡ」と「ＥＣＣ」との間に識別情報を入力する専用の「情報」領域を設けて、「情報」領域に識別情報を記憶する。なお、図４に示すセクタフォーマットでは、「ＥＣＣ」によるエラー訂正の対象となる領域は、「ＤＡＴＡ」と「情報」と「ＥＣＣ」とが該当する。なお、図４は、セクタフォーマット内において管理情報を入力する領域の一例を説明するための図である。
【００２１】
また、ドライブ２１０は、擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、ＳＭＡＲＴログを登録するか否かを示すログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶する。なお、ＳＭＡＲＴとは、（Self-Monitoring,  Analysis  and  Reporting  Technology）を示す。例えば、図４の「情報」に示すように、ドライブ２１０は、「ＤＡＴＡ」と「ＥＣＣ」との間の領域にログ処理情報を記憶する。なお、ＳＭＡＲＴログとは、例えば、メディアの健康状態に関して記憶装置２００が発行する情報であり、例えば、不良セクタの数や、エラーが発生した回数などが該当する。
【００２２】
また、実施例１では、識別情報とログ処理情報とをあわせて、管理情報として扱う場合について説明する。すなわち、管理情報とは、作成するエラーの種別がアンコレクタブルエラーか擬似アンコレクタブルエラーかを示し、また、当該セクタに関するＳＭＡＲＴログ登録の有無を示す。
【００２３】
以下では、図５に示すように、管理情報を記憶する際に、２ビットの情報を用いる手法を用いて説明する。なお、図５は、実施例１にて用いられる管理情報の一例を説明するための図である。つまり、エラーの種別に関するビットについては、擬似アンコレクタブルエラーセクタとしない場合には、つまり、アンコレクタブルエラーを含むセクタとする場合に実際にアンコレクタブルエラーを作成する場合には、「０」とする。また、エラーの種別に関するビットについては、擬似アンコレクタブルエラーとする場合には、つまり、擬似アンコレクタブルエラーセクタとする場合には、「１」とする。また、ログ処理情報に関するビットについては、ＳＭＡＲＴログ登録を行う場合には「１」、ＳＭＡＲＴログ登録を行わない場合には「０」とする。つまり、擬似アンコレクタブルエラーセクタであって、ＳＭＡＲＴログ登録を行うことを示す管理情報は、「１１」となる。
【００２４】
なお、ドライブ２１０が記憶する情報は、制御部２３０によって入力され、制御部２３０によって用いられる。すなわち、後述するように、ホスト１００からのライトコマンドに基づいて、制御部２３０によってライト処理され、また、ホスト１００からのリードコマンドに基づいて、制御部２３０によってリード処理される。
【００２５】
記憶部２２０は、制御部２３０と接続され、制御部２３０による制御処理に用いるデータを格納し、例えば、ドライブ２１０についてのＳＭＡＲＴログや、制御部２３０がドライブ２１０から情報をリード処理する際やライト処理する際に用いる設定情報を記憶する。例えば、記憶部２２０は、ＲＯＭ（Read  Only  Memory）やＦＬＡＳＨ  ＭＥＭＯＲＹなどが該当する。
【００２６】
なお、以下では特に言及しないが、制御部２３０内の各部は、ライト処理やリード処理などを実行する際に、当該処理に対応する設定情報を記憶部２２０から読み出し、当該設定情報を用いて処理を実行する。記憶部２２０は、利用者によって予め設定情報が入力され、また、制御部２３０によってＳＭＡＲＴログが入力される。
【００２７】
制御部２３０は、各種の制御処理手順などを規定したプログラムを格納するための内部メモリを有し、種々の制御処理を実行する。また、制御部２３０は、ホスト１００とドライブ２１０と記憶部２２０と接続され、フォーマッタ部２３１とファーム部２３２とを備える。
【００２８】
なお、フォーマッタ部２３１は、記憶制御部やログ処理情報記憶制御部としての機能を実現し、また、フォーマッタ部２３１とファーム部２３２とは、協働することで、データ処理制御部としての機能を実現する。
【００２９】
なお、フォーマッタ部２３１とファーム部２３２との説明では、説明の便宜上、ドライブ２１０に対してコマンドを入力する点については記載を省略する。
【００３０】
［フォーマッタ部］
フォーマッタ部２３１は、ホスト１００とドライブ２１０と記憶部２２０とファーム部２３２と接続される。また、フォーマッタ部２３１は、ホスト１００からライトコマンドやリードコマンドを受け付けると、記憶部２２０によって記憶された設定情報を用いて、当該コマンドに対応する処理をドライブ２１０に対して行う。すなわち、以下に説明するように、フォーマッタ部２３１は、ドライブ２１０に対するライト処理を行い、また、ドライブ２１０に対するリード処理をファーム部２３２とともに行う。なお、以下では特に言及しないが、フォーマッタ部２３１は、ライトコマンドやリードコマンドに対応する処理をドライブ２１０に行う際には、ドライブ２１０に備えられた記憶部にコマンド各々をコマンド列として入力する。
【００３１】
［フォーマッタ部によるライト処理］
フォーマッタ部２３１は、ホスト１００から受け付けたライトコマンドに基づいて、通常のライト処理を行い、アンコレクタブルエラーを作成するライト処理を行い、また、擬似アンコレクタブルエラーを作成するライト処理を行う。
【００３２】
なお、アンコレクタブルエラーを作成するライト処理とは、実際にアンコレクタブルエラーを含むアンコレクタブルエラーセクタを作成する処理である。また、擬似アンコレクタブルエラーを作成するライト処理とは、つまり、擬似アンコレクタブルエラーセクタを作成するライト処理である。
【００３３】
［通常のライト処理］
通常のライト処理について説明する。具体的には、後述する動作モード「０」が該当する。フォーマッタ部２３１は、通常のライト処理を行うライトコマンドをホスト１００から受け付ける。具体的には、フォーマッタ部２３１は、ライトコマンドとして、通常のライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを受け付ける。なお、動作モードについての詳細については、後述する。
【００３４】
また、フォーマッタ部２３１は、ライトコマンドとして受け付けたセクタ情報によって識別されるセクタに、通常のライト処理を行う指示によって指定される情報を書き込む。なお、フォーマッタ部２３１は、通常のライト処理を行う際には、アンコレクタブルエラーを作成するライト処理や擬似アンコレクタブルエラーを作成するライト処理などを行わない。
【００３５】
なお、例えば、フォーマッタ部２３１は、セクタ情報によって識別されるセクタについてのライト処理を行う際に、エラーが発生した場合には、所定の回数リトライを実行する。また、フォーマッタ部２３１は、所定の回数リトライを実行したにもかかわらず、ライト処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト１００に送る。
【００３６】
なお、リトライを実行する際には、例えば、フォーマッタ部２３１は、エラーが発生した記憶領域を示すアドレスを算出し、エラーが発生した旨の情報を記憶部２２０に登録する。そして、フォーマッタ部２３１は、リトライを行う際に用いる設定情報を記憶部２２０から読み出し、ライト処理を再度実行する。
【００３７】
［擬似アンコレクタブルエラーなどを作成するライト処理］
アンコレクタブルエラーを作成するライト処理や擬似アンコレクタブルエラーを作成するライト処理について説明する。具体的には、後述する動作モード「１」〜「３」が該当する。フォーマッタ部２３１は、動作モード「１」〜「３」各々に対応するライトコマンドを受け付ける。
【００３８】
また、以下では、動作モード「１」は、アンコレクタブルエラーを作成すライトコマンドであり、動作モード「２」と「３」とは、擬似アンコレクタブルエラーを作成するライトコマンドとして説明する。
【００３９】
具体的には、フォーマッタ部２３１は、ライトコマンドとして、動作モード「１」〜「３」各々に対応するライトコマンドを受け付ける。例えば、フォーマッタ部２３１は、動作モード「１」に対応するライトコマンドとして、アンコレクタブルエラーを作成するライト処理を行う指示と、ライト対象とするセクタを識別するセクタ情報とを受け付ける。また、例えば、フォーマッタ部２３１は、動作モード「２」や「３」に対応するライトコマンドとして、動作モード「２」や「３」にて、擬似アンコレクタブルエラーを作成するライト処理を行う指示と、ライト対象とするセクタを識別するセクタ情報とを受け付ける。
【００４０】
また、具体的には、フォーマッタ部２３１は、ライトコマンドを受け付けると、ライトコマンドとして受け付けたセクタ情報によって識別されるセクタについて、リード処理を行う。つまり、フォーマッタ部２３１は、アンコレクタブルエラーや擬似アンコレクタブルエラーを作成する対象となるセクタについて、実際にリード処理できるセクタであり、壊れているセクタでないかを確認する。
【００４１】
なお、例えば、フォーマッタ部２３１は、セクタ情報によって識別されるセクタについてのリード処理を行う際に、エラーが発生した場合には、所定の回数リトライを実行する。また、フォーマッタ部２３１は、所定の回数リトライを実行したにもかかわらず、リード処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト１００に送る。
【００４２】
また、フォーマッタ部２３１は、セクタ情報によって識別されるセクタについてのリード処理が終了すると、ホスト１００から受け付けたライトコマンドに対応する設定情報を記憶部２２０から読み出す。そして、当該設定情報を用いてライト処理を行う。
【００４３】
具体的には、フォーマッタ部２３１は、ライト処理として、アンコレクタブルエラーを作成する際には、つまり、後述する動作モード「１」である場合には、セクタ情報によって識別されるセクタ内の「ＤＡＴＡ」領域に、アンコレクタブルエラーを作成する。
【００４４】
また、フォーマッタ部２３１は、擬似アンコレクタブルエラーを作成する際には、つまり、動作モード「２」または「３」である場合には、セクタ内にある「ＤＡＴＡ」領域には何ら変更を加えることなく、「ＤＡＴＡ」以外の領域に管理情報を入力する。すなわち、フォーマッタ部２３１は、エラーの種別に関するビットが「１」である管理情報を入力する。図４に示す例を用いて説明すると、フォーマッタ部２３１は、管理情報を「情報」領域に入力し、例えば、エラーの種別に関するビットが「１」である管理情報を入力する。
【００４５】
なお、例えば、フォーマッタ部２３１は、ライト処理としてアンコレクタブルエラーを作成する処理などを行う際にエラーが発生した場合には、リトライ処理を実行する。ここで、フォーマッタ部２３１は、所定の回数リトライ処理を実行したにもかかわらず、ライト処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト１００に送る。
【００４６】
［フォーマッタ部によるリード処理］
フォーマッタ部２３１によるリード処理について説明する。フォーマッタ部２３１は、リード処理を行うリードコマンドをホスト１００から受け付ける。具体的には、フォーマッタ部２３１は、リードコマンドとして、通常のリード処理を行うリードコマンドや、動作モード「４」にてリード処理を行うリードコマンドを受け付ける。なお、動作モード「４」とは、管理情報を用いずにリード処理を行う旨の指示である。
【００４７】
例えば、フォーマッタ部２３１は、通常のリード処理を行うリードコマンドとして、通常のリード処理を実行する指示と、リード対象とするセクタを識別するセクタ情報とを受け付ける。また、例えば、フォーマッタ部２３１は、動作モード「４」にてリード処理を行うリードコマンドとして、動作モード「４」にてリードコマンドを実行する指示と、リード対象とするセクタを識別するセクタ情報とを受け付ける。そして、フォーマッタ部２３１は、リード処理によりドライブ２１０から読み出した情報をホスト１００に送る。
【００４８】
ここで、フォーマッタ部２３１は、動作モード「４」にてリード処理を行うリードコマンドである場合には、受け付けたセクタ情報にて識別されるセクタについて、リード対象とするセクタ内に記憶されている管理情報に関係なくリード処理を行う。すなわち、フォーマッタ部２３１は、動作モード「４」にてリード処理を行うリードコマンドである場合には、擬似アンコレクタブルエラーセクタであることを示す管理情報がセクタ内に記憶されている場合であっても、擬似アンコレクタブルエラーを含むセクタとしての処理を行わない。
【００４９】
図４に示すセクタフォーマットを用いて説明すると、フォーマッタ部２３１は、リード対象とするセクタについて、「ＤＡＴＡ」から「ＥＣＣ」までの領域を読み出す。ここで、フォーマッタ部２３１は、読み出したセクタについてエラーを読み出さなかった場合には、リードした情報をホスト１００に送り、当該セクタについての処理を終了する。また、フォーマッタ部２３１は、読み出したセクタについてエラーを読み出した場合には、処理を停止し、ファーム部２３２にエラーを検出した旨の情報を送る。その後、フォーマッタ部２３１は、ファーム部２３２からエラー処理が終了した旨の情報を受信すると、リードした情報をホストに送り、当該セクタについての処理を終了する。
【００５０】
また、フォーマッタ部２３１は、受け付けたセクタ情報にて識別されるセクタが複数ある場合には、次のセクタについて同様にリード処理を行い、すべてのセクタについてリード処理を行う。
【００５１】
また、フォーマッタ部２３１は、動作モード「４」にてリード処理を行うリードコマンドでない場合には、受け付けたセクタ情報にて識別されるセクタについて、管理情報に基づいたリード処理を行う。つまり、図４に示すセクタフォーマットを用いて説明すると、フォーマッタ部２３１は、リード対象とするセクタについて、「ＤＡＴＡ」から「ＥＣＣ」までの領域を読み出す。
【００５２】
また、フォーマッタ部２３１は、読み出したセクタについてエラーを読み出した場合には、処理を停止し、ファーム部２３２にエラーを検出した旨の情報を送る。また、フォーマッタ部２３１は、読み出した「情報」に記憶されている管理情報について、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「１」である場合に、処理を停止し、ファーム部２３２に管理情報を送る。
【００５３】
図６を用いて、セクタ「Ｎ」とセクタ「Ｎ＋１」とがセクタ情報によって指定され、また、セクタ「Ｎ」とセクタ「Ｎ＋１」内からフォーマッタ部２３１がエラーを読み出さなかった場合について説明する。すなわち、セクタ「Ｎ」とセクタ「Ｎ＋１」内には、アンコレクタブルエラーが含まれなかったものとして説明する。なお、図６は、実施例１におけるフォーマッタ部を説明するための図である。
【００５４】
図６の（Ａ）に示すように、フォーマッタ部２３１は、セクタ「Ｎ」について、管理情報が「００」であり、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「１」ではないので、処理を停止せずにセクタ「Ｎ＋１」についてのリード処理を行う。
【００５５】
また、図６の（Ｂ）に示すように、フォーマッタ部２３１は、セクタ「Ｎ」について、管理情報が「１０」であり、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「１」であるので、処理を停止する。その後、後述するように、ファーム部２３２による処理が行われた後に、フォーマッタ部２３１は、セクタ「Ｎ＋１」についてのリード処理を行う。
【００５６】
また、フォーマッタ部２３１は、エラーを検出した旨の情報や管理情報をファーム部２３２に送った後に、ファーム部２３２から処理が終了した旨の情報を受信すると、当該セクタについての処理を終了する。その後、フォーマッタ部２３１は、すべてのセクタについて処理を行う。
【００５７】
［ファーム部］
ファーム部２３２は、ホスト１００と記憶部２２０とフォーマッタ部２３１と接続され、フォーマッタ部２３１から情報を受け取ると、エラー処理や、ＳＭＡＲＴログ登録処理、ホストへのエラー報告処理などを行う。
【００５８】
ファーム部２３２は、エラーを検出した旨の情報をフォーマッタ部２３１から受信すると、リトライ処理を実行する。ここで、所定の回数リトライ処理を実行したにもかかわらず、エラーが解消しなかった場合には、エラー後処理を行い、例えば、エラーが発生した旨の情報をホスト１００に送り、また、ＳＭＡＲＴログを記憶部２２０に登録する。また、ファーム部２３２は、エラーが解消した場合には、フォーマッタ部２３１がリードした情報の内エラーに対応する情報を修正する。
【００５９】
また、ファーム部２３２は、管理情報をフォーマッタ部２３１から受信すると、管理情報を用いてセクタについてのデータ処理を行う。まず、ファーム部２３２は、管理情報の内容を確認する。ここで、管理情報が「１１」となっている場合には、つまり、エラーの種別が擬似アンコレクタブルエラーであり、ＳＭＡＲＴログ登録が有りとなっている場合には、ファーム部２３２は、動作モード「２」に関するリード処理を行う。動作モード「２」に関するリード処理とは、セクタに擬似アンコレクタブルエラーがある旨の情報をホスト１００に送り、また、擬似アンコレクタブルエラーに関するＳＭＡＲＴログを記憶部２２０に登録する。そして、ファーム部２３２は、処理が終了した旨の情報をフォーマッタ部２３１に送る。
【００６０】
また、ファーム部２３２は、管理情報が「１０」となっている場合には、つまり、エラーの種別が擬似アンコレクタブルエラーであり、ＳＭＡＲＴログ登録がなしとなっている場合には、ファーム部２３２は、動作モード「３」に関するリード処理を行う。動作モード「３」に関するリード処理とは、当該セクタに擬似アンコレクタブルエラーがある旨の情報をホスト１００に送り、また、擬似アンコレクタブルエラーに関するＳＭＡＲＴログを記憶部２２０に登録しない。そして、ファーム部２３２は、処理が終了した旨の情報をフォーマッタ部２３１に送る。
【００６１】
［動作モードと管理情報］
次に、図７を用いて、実施例１における動作モードについてさらに説明する。なお、図７は、実施例１における動作モードについて説明するための図である。図７においては、動作モード各々に対応づけて、ライト処理に関する設定と、フォーマッタ部２３１に関するリード処理設定と、ファーム部２３２に関するリード処理設定とを示した。
【００６２】
ここで、ライト処理に関する設定内における「媒体アンコレ（意図したＥＣＣエラー）」とは、アンコレクタブルエラーの作成の有無を示す。具体的には、媒体アンコレ（意図したＥＣＣエラー）「あり」では、フォーマッタ部２３１は、ライト処理時に、アンコレクタブルエラーを作成する。また、媒体アンコレ（意図したＥＣＣエラー）「なし」では、フォーマッタ部２３１は、ライト処理時に、アンコレクタブルエラーを作成しない。
【００６３】
また、ライト処理に関する設定内における「擬似アンコレ作成」とは、擬似アンコレクタブルエラー作成の有無を示す。具体的には、擬似アンコレ作成「あり」では、フォーマッタ部２３１は、ライト処理時に、擬似アンコレクタブルエラーを作成する。つまり、フォーマッタ部２３１は、セクタ内に、エラーの種別に関するビット「１」を管理情報として書き込む。また、擬似アンコレ作成「なし」では、フォーマッタ部２３１は、ライト処理時に、擬似アンコレクタブルエラーを作成しない。
【００６４】
また、ライト処理に関する設定内における「ＳＭＡＲＴログ登録」とは、ＳＭＡＲＴログ登録の有無を示す。具体的には、ＳＭＡＲＴログ登録「あり」では、フォーマッタ部２３１は、ライト処理時に、ＳＭＡＲＴログを登録することを示す管理情報をセクタに書き込む。つまり、フォーマッタ部２３１は、セクタ内に、ＳＭＡＲＴログ登録の有無を指定するビット「１」を管理情報として書き込む。また、ＳＭＡＲＴログ登録「なし」では、フォーマッタ部２３１は、ライト処理時に、ＳＭＡＲＴログを登録しないことを示す管理情報をセクタに書き込む。つまり、フォーマッタ部２３１は、セクタ内に、ＳＭＡＲＴログ登録の有無を指定するビット「０」を管理情報として書き込む。
【００６５】
また、フォーマッタ部２３１に関するリード処理設定内における「リード停止モード」と「フォーマッタ部の停止」とは、擬似アンコレクタブルエラーを示す管理情報を読み出した際にフォーマッタ部２３１が処理を停止するかを示す。具体的には、リード停止モード「許可」と、フォーマッタ部の停止「する」とでは、フォーマッタ部２３１は、処理を停止する。また、リード停止モード「禁止」では、フォーマッタ部２３１は、処理を停止せず、また、擬似アンコレクタブルエラーに対応する処理を行わない。なお、フォーマッタ部に関するリード処理設定内における「×」は、擬似アンコレクタブルエラーを想定していない動作モードであることを示す。
【００６６】
また、ファーム部２３２に関するリード処理設定内にある「ホストへのアンコレ報告」とは、アンコレクタブルエラーや擬似アンコレクタブルエラーを読み出した際に、ホスト１００に対して報告するかを示す。具体的には、ホストへのアンコレ報告「あり」では、ファーム部２３２は、リード処理時に、ホスト１００に報告する。また、ホストへのアンコレ報告「なし」では、ファーム部２３２は、リード処理時に、ホスト１００に報告しない。
【００６７】
また、ファーム処理内にある「ＳＭＡＲＴログ登録」とは、ＳＭＡＲＴログ登録の有無を示す。具体的には、ＳＭＡＲＴログ登録「あり」では、ファーム部２３２は、リード処理時に、ＳＭＡＲＴログを登録することを示す。また、ＳＭＡＲＴログ登録「なし」では、ファーム部２３２は、リード処理時に、ＳＭＡＲＴログを登録しない。
【００６８】
［動作モード０］
動作モード「０」では、通常のライト処理を行うため、説明を省略する。
【００６９】
［動作モード１］
ここで、動作モード「１」について説明する。動作モード「１」とは、Ｗｒｉｔｅ  Ｌｏｎｇコマンドにおいて、意図的にアンコレクタブルエラーを作成するのと同様である。動作モード「１」では、フォーマッタ部２３１は、実際にアンコレクタブルエラーを作成する。また、フォーマッタ部２３１やファーム部２３２は、リード処理時においては、リード停止モード設定に関係なく、通常のリトライ処理を行い、その後、エラー処理を行う。
【００７０】
なお、実際にアンコレクタブルエラーを作成する手法としては、例えば、ライト処理時に通常と異なるＳｅｅｄ値を設定し、リード処理時には通常値のＳｅｅｄ値を用いることにより、アンコレクタブルエラーを作成する。
【００７１】
動作モード「１」では、アンコレクタブルエラーが作成されたセクタリード処理すると、ドライブの劣化等によって発生した通常のアンコレクタブルエラーと同様に、フォーマッタ部２３１やファーム部２３２によってホスト１００にエラーが報告され、また、ＳＭＡＲＴログが蓄積されていくことになる。言い換えると、ドライブ２１０の属性情報が悪化する。
【００７２】
動作モード「１」は、ホスト１００が、動作モード「２」〜「４」に切り替えることなく、任意のセクタにアンコレクタブルエラーを作成したい場合に使用される。なお、Ｗｒｉｔｅ  Ｌｏｎｇコマンドとは、ＡＴＡ  ｓｐｅｃ上は、すでに「Obsolete.」定義された28ｂｉｔ  ＬＢＡ（Logical  Block  Addressing）コマンドで、Ｒｅａｄ  Ｌｏｎｇコマンドと組み合わせて使用する。また、Ｗｒｉｔｅ  Ｌｏｎｇコマンドとは、元々は、ＥＣＣエラーのテスト目的で使用されていた。
【００７３】
［動作モード１の活用法］
動作モード「１」は、例えば、ＨＤＤ（Hard  Disk  Drive）を修理する際に用いられる。すなわち、エンドユーザーから修理などで返却されたＰＣ内にあるＨＤＤである元ＨＤＤに不具合などがある場合には、一般的に、元ＨＤＤ修理の際にデータが消去される。しかし、元ＨＤＤ内に重要なデータがあり不具合のある部分以外のデータは、回復したいとの依頼があることも珍しくない。この様な場合、元ＨＤＤにある正常にリード可能なセクタついては、新しいＨＤＤに複製することが可能であるが、アンコレクタブルエラーとなっている部分については複製出来ない。同時に、新しいＨＤＤ上には元々アンコレクタブルエラーがないので複製の対象外となったセクタから、元ＨＤＤと違うデータが読み出される可能性が残る。この状態で元のＰＣなどに接続すると「あたかも全てのデータが回復できた」様になるが、実際にファイルの内容が化けるなどして二次的な不具合や損失を発生させる可能性が考えられる。従って、この様な故障した元ＨＤＤのデータリカバリーを行なう際は、新しいＨＤＤにも意図的に同一番号のセクタエラーを作り、エンドユーザーに返却するのが一般的である。なお、新しいＨＤＤには、故障はないので「データ消去ソフトウェア」などにより、装置のデータを上書きすれば正常なドライブとして復活は可能だが、アクセスした回数に応じて、ＳＭＡＲＴログが蓄積されていくことになる。
【００７４】
［動作モード２］
動作モード「２」について説明する。動作モード「２」では、ライトコマンドが発行されると、フォーマッタ部２３１は、対象となるセクタに対して一度リード処理を行う。そして、フォーマッタ部２３１は、「擬似アンコレクタブルエラー＋ＳＭＡＲＴログ登録あり」を示す管理情報を対象となるセクタ内に書き込む。
【００７５】
ここで、動作モード「２」にて作成された擬似アンコレクタブルエラーセクタでは、管理情報を用いたリード処理を行う場合には、つまり、動作モード「４」でない場合には、リード停止モード「許可」となる。この結果、フォーマッタ部２３１は、リード処理を実行すると、処理を停止する。その後、ファーム部２３２は、フォーマッタ部２３１が読み出した管理情報などに基づいてＳＭＡＲＴログ登録処理や、ホストへの報告を行い、ＳＭＡＲＴログが蓄積されていくことになる。なお、フォーマッタ部２３１が停止している際に、擬似アンコレクタブルエラー以外の停止要因となるエラーが発生している場合には、リトライ動作を行なう。
【００７６】
なお、「擬似アンコレクタブルエラー＋ＳＭＡＲＴログ登録あり」を示す管理情報が書き込まれたセクタは、動作モード「４」を用いてリード処理を行うことによりエラーのない正常なセクタとしてリード処理を行うことが可能である。
【００７７】
［動作モード２の活用法］
動作モード「２」は、ホスト１００から見た場合、結果的に、「アンコレクタブルエラー＋ＳＭＡＲＴログ登録有り」は動作モード「１」と同じであるが、擬似アンコレクタブルエラーによる即時エラー扱いとすることにより、リトライアウトとなるまでの時間を短縮可能である。なお、通常にリトライアウトするまでには、数秒の時間が必要である。
【００７８】
また、動作モード「２」では、システム（サーバー）などの環境下で、ＨＤＤ障害時におけるホスト１００側の動作検証を行なう場合に、エラー箇所へのリード処理を何度も実施することがあるが、当該リード処理に要する時間を短縮することが可能となる。
【００７９】
［動作モード３］
動作モード「３」では、動作モード「２」とほぼ同様であるが、ファーム部２３２が、ＳＭＡＲＴログ登録を行わない点が異なる。
【００８０】
すなわち、動作モード「３」では、動作モード「３」にて作成されたセクタについてリード処理を行うと、ホスト１００に対して擬似アンコレクタブルエラーがある旨の情報が報告されるが、ＳＭＡＲＴログが新たに蓄積されることはない。ＳＭＡＲＴログなどの属性情報が悪化しない。この結果、動作モード「３」にて擬似アンコレクタブルエラーが作成されたセクタであれば、ＳＭＡＲＴログなどの属性情報が悪化することがないので、擬似アンコレクタブルエラーを示す管理情報を削除した後に、ＳＭＡＲＴログが蓄積されていくことを回避できる。
【００８１】
［動作モード３の活用法］
動作モード「１」にあるデータリカバリーなどを行なった際でも、元々のエラーセクタ番号にアクセスした場合はエラーとなるが、何度セクタ対してリード処理を実行したとしても、ＳＭＡＲＴログが新たに蓄積されることはない。すなわち、データリカバリー作業によるＳＭＡＲＴログが新たに蓄積された状態となることなく、再度ＨＤＤを使用することが可能である。
【００８２】
［動作モード４］
動作モード「４」は、動作モード「２」や「３」にて擬似アンコレクタブルエラーをセクタに作成した後に、当該セクタを読み出したい場合や一時的に機能ｏｆｆ（擬似アンコレクタブルエラーをなくしたい）場合に使用する。例えば、ホスト１００によって、動作モード「４」への切り替えコマンドが発行された後に、フォーマッタ部２３１が、動作モード「４」にてリード処理を行う。
【００８３】
［動作モード４の活用法］
テストの目的によっては、データを復元するためにＯＳ（Operation  System）などの再インストール作業が必要になる場合があるが、動作モード「４」を使用することにより、擬似アンコレクタブルエラーを作成したセクタにあるデータを簡単に読み出すことが可能である。また、読み出したデータを用いて、当該セクタの回復が容易となる。
【００８４】
テスト対象となるセクタ内にあるデータを予めバックアップしておく方法もあるが、装置容量や確認台数が増えるに比例して膨大化してしまう。擬似アンコレクタブルエラーを作成する際には、元々のデータを保持した状態で、擬似的なエラーとしているだけなので、動作モード「４」を用いることにより、データのバックアップを不要とすることが可能である。
【００８５】
［記憶装置に関する処理］
次に、実施例１に係る記憶装置に関する処理について説明する。以下では、図８〜図１５を用いて、ホストによるリードコマンド発行処理、記憶装置による通常のライト処理、記憶装置によるエラーを作成するライト処理、記憶装置によるリード処理、ドライブによる処理について順に説明する。
【００８６】
［ホストによるライトコマンド発行処理］
図８を用いて、実施例１におけるホスト１００によるライトコマンド発行処理を説明する。図８は、実施例１におけるホストによるライトコマンド発行処理の流れを説明するためのフローチャートである。
【００８７】
同図に示すように、ホスト１００は、ライトコマンドの発行要求が利用者からあり（ステップＳ１０１肯定）、当該要求が通常のライト処理についての要求である場合には、（ステップＳ１０２肯定）、通常のライト処理を行うライトコマンドを発行する（ステップＳ１０３）。つまり、ホスト１００は、フォーマッタ部２３１に、ライトコマンドとして、通常のライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【００８８】
また、ホスト１００は、通常のライト処理についての要求でなく（ステップＳ１０２否定）、動作モード「１」である場合には（ステップＳ１０４肯定）、動作モード「１」に対応するライトコマンドを発行する（ステップＳ１０５）。つまり、ホスト１００は、フォーマッタ部２３１に、ライトコマンドとして、アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【００８９】
また、ホスト１００は、通常のライト処理についての要求でなく（ステップＳ１０２否定）、動作モード「１」ではなく（ステップＳ１０４否定）、動作モード「２」である場合には（ステップＳ１０６肯定）、動作モード「２」に対応するライトコマンドを発行する（ステップＳ１０７）。つまり、ホスト１００は、フォーマッタ部２３１に、ライトコマンドとして、動作モード「２」にて擬似アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【００９０】
また、ホスト１００は、通常のライト処理についての要求でなく（ステップＳ１０２否定）、動作モード「１」ではなく（ステップＳ１０４否定）、動作モード「２」でない場合には（ステップＳ１０６否定）、動作モード「３」に対応するライトコマンドを発行する（ステップＳ１０８）。つまり、ホスト１００は、フォーマッタ部２３１に、ライトコマンドとして、動作モード「３」にて擬似アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【００９１】
そして、ホスト１００は、コマンドを発行すると、必要に応じて、データ転送処理を行う（ステップＳ１０９）。例えば、コマンドを発行する際にデータをフォーマッタ部２３１に送る場合には、データ転送処理を行う。そして、ホスト１００は、発行したライトコマンドについて、エラーが発生するかを判定し（ステップＳ１１０）、エラーが発生した場合には（ステップＳ１１０肯定）、例えば、ライト処理が失敗した旨の情報をフォーマッタ部２３１から受け付けると、エラー処理を行う（ステップＳ１１１）。つまり、例えば、ホスト１００は、ライト処理が失敗した旨の情報を利用者に出力する。一方、ホスト１００は、エラーが発生しなかった場合には（ステップＳ１１０否定）、正常終了処理を行い（ステップＳ１１２）、例えば、ライト処理が終了した旨の情報を利用者に出力する。
【００９２】
［ホストによるリードコマンド発行処理］
次に、図９を用いて、実施例１におけるホスト１００によるリードコマンド発行処理を説明する。図９は、実施例１におけるホストによるリードコマンド発行処理の流れを説明するためのフローチャートである。
【００９３】
同図に示すように、ホスト１００は、リードコマンドの発行要求が利用者からあると（ステップＳ２０１肯定）当該要求が動作モード「４」であるかを判定する（ステップＳ２０２）。ここで、ホスト１００は、動作モード「４」でないと判定すると（ステップＳ２０２否定）、通常のリード処理を行うリードコマンドを発行する（ステップＳ２０３）。また、ホスト１００は、動作モード「４」であると判定すると（ステップＳ２０２肯定）、動作モード「４」にてリード処理を行うリードコマンドを発行する（ステップＳ２０４）。つまり、ホスト１００は、フォーマッタ部２３１に、リードコマンドとして、動作モード「４」にてリードコマンドを実行する指示と、リード対象とするセクタを識別するセクタ情報とを送る。
【００９４】
そして、ホスト１００は、コマンドを発行すると、必要に応じて、データ転送処理を行う（ステップＳ２０５）。そして、ホスト１００は、発行したリードコマンドについて、エラーが発生するかを判定し（ステップＳ２０６）、エラーが発生した場合には（ステップＳ２０６肯定）、例えば、リード処理が失敗した旨の情報をファーム部２３２から受け付けると、エラー処理を行う（ステップＳ２０７）。一方、ホスト１００は、エラーが発生しなかった場合には（ステップＳ２０６否定）、正常終了処理を行い（ステップＳ２０８）、例えば、フォーマッタ部２３１から受け付けた情報を利用者に出力する。
【００９５】
［記憶装置による通常のライト処理］
次に、図１０を用いて、実施例１に係る記憶装置２００による通常のライト処理を説明する。図１０は、実施例１に係る記憶装置による通常のライト処理の流れを説明するためのフローチャートである。
【００９６】
同図に示すように、フォーマッタ部２３１は、通常のライト処理を実行するライトコマンドである場合には（ステップＳ３０１肯定）、つまり、通常のライト処理を行うライトコマンドをホスト１００から受け付けると、通常のライト処理を実行する（ステップＳ３０２）。ここで、フォーマッタ部２３１は、エラーが発生した場合には（ステップＳ３０３肯定）、リトライを実行する（ステップＳ３０４）。そして、フォーマッタ部２３１は、エラーが解消したかを判定し（ステップＳ３０５）、エラーが解消した場合には（ステップＳ３０５肯定）、フォーマッタ終了処理を行う（ステップＳ３０６）。つまり、例えば、フォーマッタ部２３１は、ライト処理が終了した旨の情報をホスト１００に送る。なお、上記したステップＳ３０３にて、フォーマッタ部２３１は、エラーが発生しなかった場合には（ステップＳ３０３否定）、そのままフォーマッタ終了処理を行う（ステップＳ３０６）。
【００９７】
一方、フォーマッタ部２３１は、上記したステップＳ３０５にて、エラーが解消しなかった場合には（ステップＳ３０５否定）、リトライアウトとなったかを判定する（ステップＳ３０７）。つまり、フォーマッタ部２３１は、リトライを所定の回数実行したかを判定するここで、フォーマッタ部２３１は、リトライアウトとなっていないと判定する場合には（ステップＳ３０７否定）、上記したステップＳ３０４からＳ３０７までの処理を繰り返す。一方、フォーマッタ部２３１は、リトライアウトとなったと判定する場合には（ステップＳ３０７肯定）、エラー処理を行い（ステップＳ３０８）、処理を終了する。つまり、例えば、フォーマッタ部２３１は、ライト処理が失敗した旨の情報をホスト１００に送る。
【００９８】
［記憶装置によるアンコレクタブルエラーを作成するライト処理］
次に、図１１を用いて、実施例１に係る記憶装置２００によるアンコレクタブルエラーを作成するライト処理を説明する。図１１は、実施例１に係る記憶装置によるアンコレクタブルエラーを作成するライト処理の流れを説明するためのフローチャートである。なお、図１０にて説明したフローチャートと共通する処理については、説明を省略する。
【００９９】
図１１に示すように、フォーマッタ部２３１は、エラーを作成するライト処理を実行するライトコマンドである場合には（ステップＳ４０１肯定）、つまり、動作モード「１」〜「３」各々に対応するライトコマンドを受け付けると、対象となるセクタについてリード処理を実行する（ステップＳ４０２）。
【０１００】
そして、フォーマッタ部２３１は、リード処理が終了すると（〜ステップＳ４０６）、対象となるセクタについて、ライト処理を実行する（ステップＳ４０８）。つまり、ホスト１００から受け付けたライトコマンドにて指定される動作モード「１」〜「３」のいずれかを用いて、ライト処理を実行する。
【０１０１】
その後、フォーマッタ部２３１は、ライトコマンドが指定するすべてのセクタについてライト処理が終了したかを判定する（ステップＳ４１３）。ここで、フォーマッタ部２３１は、すべてのセクタについてライト処理が終了していない場合には（ステップＳ４１３否定）、上記したステップＳ４０２〜Ｓ４１３までの処理を繰り返す。一方、フォーマッタ部２３１は、すべてのセクタについてライト処理が終了した場合には（ステップＳ４１３肯定）、フォーマッタ終了処理を行い（ステップＳ４１４）、処理を終了する。例えば、フォーマッタ部２３１は、ライト処理が終了した旨の情報をホスト１００に送る。
【０１０２】
なお、図１１におけるステップＳ４０３〜Ｓ４０７は、図１０におけるステップＳ３０３〜Ｓ３０５、Ｓ３０７に対応する。また、図１１におけるステップＳ４０９〜Ｓ４１２は、図１０におけるステップＳ３０３〜Ｓ３０５、Ｓ３０７に対応する。
【０１０３】
［記憶装置によるリード処理］
次に、図１２を用いて、実施例１に係る記憶装置２００によるリード処理を説明する。図１２は、実施例１に係る記憶装置によるリード処理の流れを説明するためのフローチャートである。
【０１０４】
同図に示すように、フォーマッタ部２３１は、リード処理を実行する場合には（ステップＳ５０１肯定）、つまり、リードコマンドをホスト１００から受け付けると、動作モード「４」かを判定する（ステップＳ５０２）。ここで、フォーマッタ部２３１は、動作モード「４」である場合には（ステップＳ５０２肯定）、動作モード「４」に対応するリード処理を実行する（ステップＳ５０３）。すなわち、フォーマッタ部２３１やファーム部２３２は、擬似アンコレクタブルエラーを示す管理情報がセクタ内に記憶されている場合であっても、当該セクタをアンコレクタブルエラーとしての処理を行わずにリード処理を実行することになる。
【０１０５】
ここで、ファーム部２３２は、エラーがあるかを判定する（ステップＳ５０４）。つまり、ファーム部２３２は、フォーマッタ部２３１によってエラーが読み出された旨の情報を受信したかを判定する。ファーム部２３２は、エラーがない場合には（ステップＳ５０４否定）、読み出したセクタについてのリード処理を終了する（ステップＳ５０５）。つまり、ファーム部２３２は、処理が終了した旨の情報をフォーマッタ部２３１に送り、フォーマッタ部２３１が、リード処理を終了した旨の情報をホスト１００に送る。
【０１０６】
一方、ファーム部２３２は、エラーがある場合には（ステップＳ５０４肯定）、リトライを実行する（ステップＳ５０６）。そして、ファーム部２３２は、エラーが解消したかを判定し（ステップＳ５０７）、エラーが解消した場合には（ステップＳ５０７肯定）、リード処理を終了する（ステップＳ５０５）。
【０１０７】
一方、ファーム部２３２は、エラーが解消していない場合には（ステップＳ５０７否定）、リトライアウトとなったかを判定する（ステップＳ５０８）。つまり、ファーム部２３２は、リトライを所定の回数実行したかを判定することで、ファーム部２３２は、リトライアウトとなっていないと判定する場合には（ステップＳ５０８否定）、上記したステップＳ５０６からＳ５０８までの処理を繰り返す。また、ファーム部２３２は、リトライアウトとなったと判定する場合には（ステップＳ５０８肯定）、エラー処理を行い（ステップＳ５０９）、処理を終了する。つまり、例えば、ファーム部２３２は、リード処理が失敗した旨の情報をホスト１００に送る。
【０１０８】
また、ファーム部２３２は、動作モード「４」でない場合には（ステップＳ５０２否定）、エラーモードや停止要因がフォーマッタ部２３１によって検出されたかを判定する（ステップＳ５１０）。つまり、ファーム部２３２は、フォーマッタ部２３１からアンコレクタブルエラーを検出した旨の情報を受信し、また、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「１」である管理情報をフォーマッタ部２３１から受信したかを判定する。
【０１０９】
ここで、ファーム部２３２は、停止要因を検出すると判定している場合において（ステップＳ５１０肯定）、アンコレクタブルエラーを検出した旨の情報を受信した場合には（ステップＳ５１１肯定）、リトライ処理を実行する（ステップＳ５１２〜Ｓ５１５）。
【０１１０】
そして、ファーム部２３２は、アンコレクタブルエラーを検出した旨の情報を受信していない場合（ステップＳ５１１否定）や、リトライ処理を終了した場合に（〜ステップＳ５１５）、動作モード「２」であるかを判定する（ステップＳ５１６）。つまり、ファーム部２３２は、管理情報として、「１１」を受信したかを判定する。ここで、ファーム部２３２は、動作モード「２」であるかを判定する場合には（ステップＳ５１６肯定）、当該セクタについて、動作モード「２」に関するリード処理を行う（ステップＳ５１７）。つまり、ファーム部２３２は、当該セクタにアンコレクタブルエラーがある旨の情報をホスト１００に送り、また、アンコレクタブルエラーに関するＳＭＡＲＴログを記憶部２２０に登録する。
【０１１１】
そして、ファーム部２３２は、動作モード「２」でないと判定した場合には（ステップＳ５１６否定）、動作モード「３」であるかを判定する（ステップＳ５１８）。つまり、ファーム部２３２は、管理情報として、「１０」を受信したかを判定する。ここで、ファーム部２３２は、動作モード「３」であると判定する場合には（ステップＳ５１８肯定）、当該セクタについて、動作モード「３」に関するリード処理を行う（ステップＳ５１９）。つまり、ファーム部２３２は、当該セクタにアンコレクタブルエラーがある旨の情報をホスト１００に送り、また、アンコレクタブルエラーに関するＳＭＡＲＴログを記憶部２２０に登録しない。なお、ファーム部２３２は、動作モード「３」であると判定しない場合には（ステップＳ５１８否定）、当該セクタについてのリード処理が終了する。
【０１１２】
その後、フォーマッタ部２３１は、すべてのセクタについて処理を行ったかを判定し（ステップＳ５２０）、行ったと判定する場合には（ステップＳ５２０肯定）、処理を終了し、すべてのセクタについて処理を行っていない場合には（ステップＳ５２０否定）、上記したステップＳ５０２〜Ｓ５１９までの処理を繰り返す。
【０１１３】
なお、図１２におけるステップＳ５１２〜Ｓ５１５は、図１２におけるステップＳ５０５、Ｓ５０７〜Ｓ５０９に対応する。
【０１１４】
［ドライブによる処理］
次に、図１３〜図１５を用いて、実施例１におけるドライブ２１０による処理について説明する。なお、以下では、アイドル状態におけるコマンド受領処理と、コマンド割り込み処理と、コマンド実行処理とについて説明する。
【０１１５】
［アイドル状態におけるコマンド受領処理］
図１３を用いて、実施例１におけるドライブ２１０によるアイドル状態におけるコマンド受領処理について説明する。なお、図１３は、実施例１におけるドライブによるアイドル状態におけるコマンド受領処理の流れを説明するためのフローチャートである。
【０１１６】
同図に示すように、ドライブ２１０は、アイドル状態において、制御部２３０からコマンド列への登録があると（ステップＳ６０１肯定）、登録されたコマンドを実行する（ステップＳ６０２）。すなわち、ドライブ２１０は、コマンド列に登録されたコマンド各々を順番に実行していく。
【０１１７】
［コマンド割り込み処理］
図１４を用いて、実施例１におけるドライブ２１０によるコマンド割り込み処理について説明する。なお、図１４は、実施例１におけるドライブによるコマンド割り込み処理の流れを説明するためのフローチャートである。
【０１１８】
同図に示すように、ドライブ２１０は、コマンド登録中に（ステップＳ７０１）、つまり、コマンドを受領してコマンド列に登録している際に、他のコマンドをさらに受領すると（ステップＳ７０２肯定）、当該コマンドを登録する（ステップＳ７０３）。
【０１１９】
［コマンド実行処理］
図１５を用いて、実施例１におけるドライブ２１０によるコマンド実行処理について説明する。なお、図１５は、実施例１におけるドライブによるコマンド実行処理の流れを説明するためのフローチャートである。
【０１２０】
同図に示すように、ドライブ２１０は、コマンドを実行する際には、コマンド列に登録されたコマンドを解析し（ステップＳ８０１）、対象となるセクタを示すアドレスを計算し、当該アドレスによってしめされる領域をドライブ２１０内にて探す（シーク）動作を行う（ステップＳ８０２）。
【０１２１】
ここで、ドライブ２１０は、実行するコマンドがライトコマンドである場合には（ステップＳ８０３肯定）、必要に応じて制御部２３０からドライブ２１０に記憶させる情報を転送する処理を行い（ステップＳ８０４）、その後、ライト処理を行う（ステップＳ８０５）。つまり、ドライブ２１０は、ドライブ２１０が有するメディア上に情報を書き込む。そして、ドライブ２１０は、エラーが発生した場合には（ステップＳ８０６肯定）、エラー処理を行い（ステップＳ８０７）、例えば、ライト処理が失敗した旨の情報を制御部２３０に送る。一方、ドライブ２１０は、エラーが発生しなかった場合には（ステップＳ８０６否定）、正常に処理が終了する場合の処理を実行し（ステップＳ８０８）、例えば、ライト処理が正常に終了した旨の情報を制御部２３０に送る。
【０１２２】
一方、ドライブ２１０は、実行するコマンドがライトコマンドでない場合には（ステップＳ８０３否定）、つまり、リードコマンドである場合には、リード処理を行う（ステップＳ８０９）。そして、ドライブ２１０は、エラーが発生した場合には（ステップＳ８１０肯定）、エラー処理を行い（ステップＳ８１１）、例えば、リード処理が失敗した旨の情報を制御部２３０に送る。一方、ドライブ２１０は、エラーが発生しなかった場合には（ステップＳ８１０否定）、必要に応じてリードした情報を制御部２３０に転送する処理を行い（ステップＳ８１２）、正常に処理が終了する場合の処理を実行する（ステップＳ８１３）。例えば、ドライブ２１０は、リード処理が正常に終了した旨の情報を制御部２３０に送る。
【０１２３】
［実施例１の効果］
上記したように、実施例１によれば、記憶装置２００は、擬似アンコレクタブルエラーセクタを識別する識別情報を擬似アンコレクタブルエラーセクタ内に記憶し、セクタ内に記憶された識別情報を用いてセクタについてのデータ処理を行う。この結果、識別情報を適切に記憶することが可能である。
【０１２４】
例えば、識別情報を記憶するメモリに識別情報を記憶して用いる手法とは異なり、すべてのセクタについて識別情報を記憶する場合であっても記憶することが可能である。
【０１２５】
また、例えば、識別情報を記憶するメモリなどに識別情報をテーブルとして管理する手法と比較して、識別情報を用いたデータ処理を迅速に行うことが可能である。すなわち、テーブルとして管理する手法では、識別情報を用いたデータ処理を行うごとに、テーブルを参照する処理を行っていた。また、テーブルとして管理する手法では、テーブルにて管理される識別情報の数が増大すればするほど、参照する際の処理負荷が増加していた。
【０１２６】
このようなテーブルにて管理する手法と比較して、テーブルを参照する処理をなくすことができ、処理を迅速に行うことが可能である。
【０１２７】
また、実施例１によれば、記憶装置２００は、ログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶し、ログ処理情報と識別情報とを用いてデータ処理を行うので、識別情報と同様に、ログ処理情報を適切に記憶することが可能である。
【０１２８】
また、実施例１によれば、記憶装置２００は、管理情報を用いずにデータ処理を行う旨の指示を受け付けると、管理情報を用いずにセクタについてのデータ処理を行うので、擬似アンコレクタブルエラーセクタであることを示す識別情報が記憶されたセクタであっても、管理情報を無視してセクタに関するデータ処理を行うことが可能である。
【０１２９】
例えば、擬似アンコレクタブルエラーセクタである場合には、セクタ内のデータを読みだす処理を行わない場合に、動作モード「４」を用いてリード処理を行うことで、擬似アンコレクタブルエラーセクタ内のデータをリード処理することが可能である。
【実施例２】
【０１３０】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されてよいものである。そこで、以下に示すように、その他の実施例について説明する。
【０１３１】
［管理情報格納位置］
例えば、実施例１では、「ＤＡＴＡ」と「ＥＣＣ」との間に位置する専用の領域「情報」領域に、管理情報を書き込む場合について説明したが、これに限定されるものではなく、管理情報を任意の領域に書き込んでもよい。例えば、「データ」や「ＥＣＣ」領域内に、エンコードやデコードにて生ずる端数部分が存在している場合には、当該領域に管理情報を書き込んでもよい。この結果、セクタフォーマット効率を悪化させることなく、識別情報をセクタ内に記憶することが可能である。すなわち、セクタ内の領域の内、データ領域やＥＣＣ領域内にエンコードやデコードによって生じる端数領域を用いることで、元々使用されていない領域を用いて識別情報をセクタ内に記憶することが可能である。
【０１３２】
［管理情報］
また、実施例１では、管理情報として、識別情報とログ処理情報とを併せて用いる場合について説明したが、これに限定されるものではなく、ＳＭＡＲＴログ登録有無を示すビットを用いなくてもよい。
【０１３３】
また、実施例１では、管理情報として、エラーの種別に関するビットと、ＳＭＡＲＴログ登録有無を指定するビットとを用いる場合について説明したが、これに限定されるものではない。
【０１３４】
例えば、セクタごとに、当該セクタに対して書き込み処理を行った書き込み回数をあわせて書き込んでもよい。すなわち、例えば、ドライブ２１０が有するメディア内にある記憶領域を各Ｚｏｎｅや数千ＬＢＡ単位に分割し、記憶装置２００は、セクタ各々についての書き込み回数を用いて、当該単位での書き込み回数を管理する。例えば、記憶装置２００は、メモリを備え、当該メモリ上に、当該単位での書き込み回数を管理する。
【０１３５】
ここで、記憶装置２００は、書き込み回数が所定の閾値に達したかを監視し、達している場合に、管理単位毎に再書き込み処理（対象セクタのデータリード後にライト動作）を行う。また、記憶装置２００は、ＳＭＡＲＴ機能のＳｅｌｆ  Ｔｅｓｔ（または、ホストからのコマンド指示）などにより、管理単位毎に書き込み回数を収集し、サイドイレーズの影響が起こりそうな閾値に到達している場合にも、同様に、管理単位毎に再書き込み処理を行なう。なお、サイドイレーズとは、記録対象とするセクタだけでなく、隣接するセクタにまで情報を書き込んでしまう現象である。また、記憶装置２００は、エラーが発生した後に、エラーリトライにより当該エラーを回復した場合にも、書き込み回数を収集し、リトライによりエラーを回復可能な内に、リライト処理を行う。また、記憶装置２００は、リライト処理や監視処理をバックグラウンドにて実施してもよい。この結果、記憶装置２００は、媒体の属性が悪化するまえに、適切なリライト処理などの対処を行うことが可能である。
【０１３６】
また、管理情報として、温度情報をあわせて用いてもよい。すなわち、ライト処理を実行した際の温度条件によっては、その後のリード処理時の温度条件がライト処理時の温度条件と異なると、アンコレクタブルエラーが発生しやすい状態となることがある。ここで、記憶装置２００は、温度情報をセクタ内に書き込み、リード処理時に当該温度情報を用いることで、アンコレクタブルエラーの発生を抑制することが可能である。また、例えば記憶装置２００は、エラーが発生した後にリトライによりエラーを回復した場合に、温度情報を読み出し、次回のリード処理時やリトライ時に、当該温度条件にてリード処理等を行うように制御することが可能である。この結果、記憶装置２００は、エラー発生に伴う、性能低下を最小限に抑えることが可能である。
【０１３７】
なお、記憶装置２００は、ライト処理時に書き込み回数の管理情報更新のみを行なえば良く、また、リード処理時には、エラーが検出された場合にのみ、温度情報や書き込み回数などを示す管理情報を用いた処理を実行するように制御してもよい。この結果、記憶装置２００は、エラーが発生していない時点において、リード処理性能に影響を与えることなく、実装することが可能である。
【０１３８】
［システム構成］
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる（例えば、図１〜図９）。
【０１３９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１４０】
［コンピュータ］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１６を用いて、上記の実施例と同様の機能を有する記憶プログラムを実行するコンピュータの一例を説明する。なお、図１６は、実施例１に係る記憶装置と同様の機能を有するコンピュータを説明するための図である。
【０１４１】
同図に示すように、コンピュータ３０００は、操作部３００１、マイク３００２、スピーカ３００３、ドライブ３００４、ディスプレイ３００５、通信部３００６、ＣＰＵ（Central  Processing  Unit）３０１０、ＲＯＭ３０１１、ＨＤＤ３０１２、ＲＡＭ（Random  Access  Memory）３０１３をバス３００９などで接続して構成されている。なお、ドライブ３００４は、図２に示したドライブ２１０に対応する。
【０１４２】
ＲＯＭ３０１１には、上記の実施例１で示したフォーマッタ部２３１と、ファーム部２３２と同様の機能を発揮する制御プログラム、つまり、同図に示すように、フォーマッタプログラム３０１１ａと、ファームプログラム３０１１ｂとが予め記憶されている。なお、これらのプログラム３０１１ａ〜３０１１ｂについては、図２に示した記憶装置２００の各構成要素と同様、適宜統合または分離してもよい。
【０１４３】
そして、ＣＰＵ３０１０が、これらのプログラム３０１１ａ〜３０１１ｂをＲＯＭ３０１１から読み出して実行することにより、図１６に示すように、各プログラム３０１１ａ〜３０１１ｂについては、フォーマッタプロセス３０１０ａと、ファームプロセス３０１０ｂとして機能するようになる。なお、各プロセス３０１０ａ〜３０１０ｂは、図２に示した、フォーマッタ部２３１と、ファーム部２３２とにそれぞれ対応する。
【０１４４】
そして、ＨＤＤ３０１２には、ＳＭＡＲＴログテーブル３０１２ａが設けられている。そして、ＣＰＵ３０１０は、ＳＭＡＲＴログテーブル３０１２ａを読み出してＲＡＭ３０１３に格納し、ＲＡＭ３０１３に格納されたＳＭＡＲＴログデータ３０１３ａと、管理情報データ３０１３ｂとを用いて、プログラムを実行する。
【０１４５】
［その他］
なお、本実施例で説明した記憶装置は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【図面の簡単な説明】
【０１４６】
【図１】実施例１に係る記憶装置の概要を説明するための図である。
【図２】実施例１に係る記憶装置の構成を説明するためのブロック図である。
【図３】セクタフォーマットの一例を説明するための図である。
【図４】セクタフォーマット内において管理情報を入力する領域の一例を説明するための図である。
【図５】実施例１にて用いられる管理情報の一例を説明するための図である。
【図６】実施例１におけるフォーマッタ部を説明するための図である。
【図７】実施例１における動作モードについて説明するための図である。
【図８】実施例１におけるホストによるライトコマンド発行処理の流れを説明するためのフローチャートである。
【図９】実施例１におけるホストによるリードコマンド発行処理の流れを説明するためのフローチャートである。
【図１０】実施例１に係る記憶装置による通常のライト処理の流れを説明するためのフローチャートである。
【図１１】実施例１に係る記憶装置によるアンコレクタブルエラーを作成するライト処理の流れを説明するためのフローチャートである。
【図１２】実施例１に係る記憶装置によるリード処理の流れを説明するためのフローチャートである。
【図１３】実施例１におけるドライブによるアイドル状態におけるコマンド受領処理の流れを説明するためのフローチャートである。
【図１４】実施例１におけるドライブによるコマンド割り込み処理の流れを説明するためのフローチャートである。
【図１５】実施例１におけるドライブによるコマンド実行処理の流れを説明するためのフローチャートである。
【図１６】実施例１に係る記憶装置と同様の機能を有するコンピュータを説明するための図である。
【符号の説明】
【０１４７】
１００  ホスト
２００  記憶装置
２１０  ドライブ
２２０  記憶部
２３０  制御部
２３１  フォーマッタ部
２３２  ファーム部
【図１】
2010061242.tif 000003
【図２】
2010061242.tif 000004
【図３】
2010061242.tif 000005
【図４】
2010061242.tif 000006
【図５】
2010061242.tif 000007
【図６】
2010061242.tif 000008
【図７】
2010061242.tif 000009
【図８】
2010061242.tif 000010
【図９】
2010061242.tif 000011
【図１０】
2010061242.tif 000012
【図１１】
2010061242.tif 000013
【図１２】
2010061242.tif 000014
【図１３】
2010061242.tif 000015
【図１４】
2010061242.tif 000016
【図１５】
2010061242.tif 000017
【図１６】
2010061242.tif 000018