(57)【特許請求の範囲】
【請求項１】
ホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置において、
該データを記憶する記億部と、
該データまたは該データに付随するエラー訂正コードを構成するビットのうち、データの読み出し又は書き込みをする際に反転する複数のビットを示す特定情報を記憶するレジスタ部と、
該データの読み出し及び書き込みを制御する制御部であって、該ホストシステムから該初期化命令を受けた後、該レジスタ部に記憶する該特定情報を用いて、該記憶部に記憶された該データまたは該データに付随するエラー訂正コードの該複数ビットの論理値を反転して読み出し、該データ初期化後に該データを書き込む場合に、該レジスタ部に記憶した該特定情報を用いて、書き込む該データまたは該データに付随するエラー訂正コードの該複数ビットの論理値を反転して書き込む制御部と、を備え、
前記特定情報は、前記特定情報のビット数に応じた回数、初期化のたびに、異なる前記エラー訂正コードの該複数のビットを指定するための特定情報であり、
該制御部は、該データに付随するエラー訂正コードを構成する該ビットにおいて、該特定情報を用いて、該データを訂正することが不可能となるような該複数のビットを選択し、前記選択した該複数ビットの論理値を、前記記憶部に記憶されていたときの論理値から反転するように、前記記憶部に書き込むことを特徴とする不揮発性記憶装置。
【請求項２】
請求項１に記載の不揮発性記憶装置において、
該レジスタ部は該特定情報を複数有しており、該制御部は、再び該ホストシステムから該初期化命令を受けると、該レジスタ部に記憶した他の特定情報に切り替えて、該データまたは該データに付随するエラー訂正コードの該複数ビットの論理値を反転して前記記憶部から読み出し、または、前記記憶部に記憶されていたときの論理値から反転するように、前記記憶部に書き込むことを特徴とする不揮発性記憶装置。
【請求項３】
ホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置において、
該データを記憶する記億部と、
該データまたは該データに付随するエラー訂正コードを構成するビットのうち、反転処理する複数のビットを示す特定情報を複数記憶するレジスタ部と、
該レジスタ部に記憶する該特定情報を用いて、該記憶部に記憶された該データまたは該データに付随する該エラー訂正コードを反転処理して読み出し、または、書き込む制御部と、を有し、
他の特定情報は、前記特定情報とは異なる、前記エラー訂正コード中の反転処理すべき複数のビットを示すものであり、
前記制御部は、該ホストシステムから該初期化命令を受けると、該レジスタ部に記憶した他の特定情報に切り替えて、データまたはデータに付随するエラー訂正コードを反転処理して読み出し、または書き込み、
該他の特定情報を用いて、該データに付随するエラー訂正コードを構成するビットにおいて、データを訂正することが不可能となるような複数のビットを選択し、前記選択したビットの論理値を、前記記憶部に記憶されていたときの論理値から反転するように、前記記憶部に書き込むことを特徴とする不揮発性記憶装置。
【請求項４】
請求項１に記載の不揮発性記憶装置において、
該制御部は、該データに付随する該エラー訂正コードを構成するビットにおいて、該特定情報を用いて、２ビットを選択し、前記選択した２ビットの該論理値を、前記記憶部に記憶されていたときの論理値から反転することを特徴とする不揮発性記憶装置。
【請求項５】
ホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置のデータ初期化方法において、
該不揮発性記憶装置の記憶部に記憶されたデータ、または該データに付随する該エラー訂正コードを構成するビットにおいて、データの読み出し又は書き込みをする際に反転するビットを示す特定情報を該不揮発性記憶装置のレジスタ部に記憶し、
該データの読み出し及び書き込を行い、該ホストシステムから初期化命令を受けた後、該レジスタ部に記憶する特定情報を用いて、該記憶部に記憶した該データまたは該データに付随する該エラー訂正コードの複数ビットの論理値を反転して読み出し、データ初期化後にデータを書き込む場合に、該レジスタ部に記憶した該特定情報を用いて、書き込むデータまたは該データに付随する該エラー訂正コードの該複数ビットの論理値を、該記憶部に記憶されていたときの該論理値から反転するように書き込み、
前記特定情報は、前記特定情報のビット数に応じた回数、初期化のたびに、異なる該エラー訂正コードの該複数ビットの論理地を指定するための特定情報であることを特徴とするデータ初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施例における一側面において開示している技術は、記憶媒体のデータを初期化する技術に関する。
【背景技術】
【０００２】
サーバ、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  Ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）システムなどに用いる記憶媒体の容量は大きくなってきている。そして一度利用した記憶媒体をサーバシステムなどで再利用する場合、システムの誤動作などを防止するため、記憶媒体の全領域に「０」を書き込むなどして初期化する必要がある。
【０００３】
しかしながら、記憶媒体の容量が大きくなっていることにより、記憶媒体の全領域に「０」を書き込んで初期化するには膨大な時間がかかってしまい、記憶媒体の再利用を迅速に行えないといった問題があった。
【０００４】
上記記憶媒体のデータ初期化技術を開示するものとして、以下の文献がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭５７−１５２５７５公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施例における不揮発性記憶装置は、迅速に記憶媒体を初期化して再利用可能とすると共に、記憶媒体を再利用するシステムの誤動作を防止することを目的とする。
【課題を解決するための手段】
【０００７】
本実施例に係る不揮発性記憶装置は、ホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置において、該データを記憶する記億部と、該データまたは該データに付随するエラー訂正コードを構成するビットのうち、該データの読み出し又は書き込みをする際に反転する複数のビットを示す特定情報を記憶するレジスタ部と、該データの読み出し及び書き込みを制御する制御部であって、該ホストシステムから初期化命令を受けた後、該レジスタに記憶する特定情報を用いて、該記憶部に記憶されたデータまたはデータに付随するエラー訂正コードの複数ビットを反転して読み出し、データ初期化後にデータを書き込む場合に、該レジスタ部に記憶した特定情報を用いて、書き込むデータまたはデータに付随するエラー訂正コードの該複数ビットを反転して書き込む制御部とを備えることを特徴とする。
【発明の効果】
【０００８】
本実施例におけるデータ初期化方法によれば、予め記憶媒体に書き込まれたデータまたはそのデータに付随するエラー訂正コードの複数ビットを反転して読み出しデータを無効にすることにより迅速に初期化して再利用可能とする共に、記憶媒体を再利用するシステムの誤動作を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施例に係るハードディスク１００の構成ブロック図である。
【図２】本実施例に係るハードディスクコントローラ１０２を詳細に記載したハードディスク１００の構成ブロック図である。
【図３】本実施例に係るメディア１１４へのデータ読み出しを示す概略図である。
【図４】本実施例に係るメディア１１４からのデータ書き込みを示す概略図である。
【図５】本実施例に係るＥＣＣビット反転の設定処理を示すフローチャートである。
【図６】本実施例に係るデータ読み出し処理を示すフローチャートである。
【図７】本実施例に係るデータ書き込み処理を示すフローチャートである。
【図８】本実施例に係るハードディスクコントローラ８０２を詳細に記載したハードディスク８００の構成ブロック図である。
【図９】本実施例に係るメディア１１４へのデータ読み出しを示す概略図である。
【図１０】本実施例に係るメディア１１４からのデータ書き込みを示す概略図である。
【図１１】本実施例に係るデータビット反転の設定処理を示すフローチャートである。
【図１２】本実施例に係るデータ読み出し処理を示すフローチャートである。
【図１３】本実施例に係るデータ書き込み処理を示すフローチャートである。
【図１４】本実施例に係るハードディスクコントローラ１４０２を詳細に記載したハードディスク１４００の構成ブロック図である。
【図１５】本実施例に係るメディア１１４へのデータ読み出しを示す概略図である。
【図１６】本実施例に係るメディア１１４からのデータ書き込みを示す概略図である。
【図１７】本実施例に係るデータビット反転の設定処理を示すフローチャートである。
【図１８】本実施例に係るデータ読み出し処理を示すフローチャートである。
【図１９】本実施例に係るデータ書き込み処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、記憶媒体の代表としてハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ）を例にとり、本実施の形態について説明する。
【実施例】
【００１１】
（実施例１）
［１．１．ハードディスク１００］
図１は本実施例に係るハードディスク１００の構成ブロック図である。ハードディスク１００はホストシステム１１５と接続しており、データの書き込み、読み出しが可能な記憶媒体である。ホストシステム１１５はハードディスク１００を含め、入力装置、表示装置などと接続しており、システム全体の制御を行っている。本実施例においてホストシステム１１５は、ＲＡＩＤ装置におけるＲＡＩＤコントローラなどである。ホストシステム１１５がＲＡＩＤコントローラである場合、ホストシステム１１５は、ハードディスク１００の記憶領域にシステムエリアを設けて、例えばハードディスク１００がマスターディスクなのかスレーブディスクなのかを管理する。そのためホストシステム１１５にハードディスク１００を接続する場合には、ハードディスク１００を初期状態にして接続する必要がある。つまりＲＡＩＤ装置に接続される前にハードディスク１００にデータが書き込まれている場合には、ハードディスク１００は初期化された後ＲＡＩＤ装置に接続される必要がある。これはハードディスク１００内のシステムエリアにデータが書き込まれた状態でＲＡＩＤ装置などに接続されるとシステム全体として誤動作する可能性があるためであり、これを防ぐためである。本実施例におけるハードディスク１００は高速なデータ初期化処理を可能とするものであり、ハードディスク１００の再利用に際して、システムの誤動作を防ぐものである。以下、ハードディスク１００の構成を説明すると共に、ハードディスク１００におけるデータ初期化処理について説明する。
【００１２】
ハードディスク１００は制御部１０１、ヘッドＩＣ１０９、ボイスコイルモータ（Ｖｏｉｃｅ  Ｃｏｉｌ  Ｍｏｔｏｒ：ＶＣＭ）１１０、ヘッドアーム１１１、磁気ヘッド１１２、スピンドルモータ１１３、メディア１１４を含む構成である。ホストシステム１１５からの指示に基づき、ハードディスク１００はデータ書き込み制御、データの読み出し制御を行う。
【００１３】
ハードディスク１００にデータを書き込む場合、ホストシステム１１５は、制御部１０１に、インタフェース部１０３を介して、書き込みコマンド、及び書き込みデータを供給する。ＣＰＵ１０４は、モータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。制御部１０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。ハードディスクコントローラ１０２は、ＡＤ／ＤＡ変換部１０６を介して、書き込みデータをリードチャネル１０７に供給する。リードチャネル１０７は、書き込みデータを符号化してヘッドＩＣ１０９に供給する。ヘッドＩＣ１０９は、符号化された書き込みデータを磁気ヘッド１１２に供給し、磁気ヘッド１１２がメディア１１４に書き込みデータを書き込む。なお定格回転数とは、予め決められた、約１気圧で室温などの通常使用条件下で、ハードディスク１００が本来の性能を発揮できるメディア１１４の回転数をいう。
【００１４】
ハードディスク１００からデータを読み出す場合、ホストシステム１１５は、制御部１０１に、インタフェース部１０３を介して、読み出しコマンド（リード命令）を供給する。ハードディスクコントローラ１０２は、この読み出しコマンドをＣＰＵ１０４に供給する。ＣＰＵ１０４は、受取った読み出しコマンドを解析し、読み出す媒体の位置情報をハードディスクコントローラ１０２に通知してモータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。制御部１０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。磁気ヘッド１１２は、メディア１１４からデータを読み出し、そのデータはヘッドＩＣ１０９を介してリードチャネル１０７に供給される。リードチャネル１０７は、読み出されたデータを復号化してリードデータを生成する。リードチャネル１０７は、ＡＤ／ＤＡ変換部１０６を介して、リードデータをハードディスクコントローラ１０２に供給する。ハードディスクコントローラ１０２は、インタフェース部１０３を介して、ホストシステム１１５にリードデータを供給する。
【００１５】
［１．２．制御部１０１］
また制御部１０１は、ハードディスクコントローラ１０２、インタフェース部１０３、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０４、メモリ／ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０５、ＡＤ／ＤＡ変換部１０６、リードチャネル（ＲｅａＤ  Ｃｈａｎｎｅｌ：ＲＤＣ）１０７を含む構成となっている。ホストシステム１１５は、インタフェース部１０３を介して、制御部１０１のハードディスクコントローラ１０２と接続している。インタフェース部１０３は、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）によってデータ通信可能なインタフェースである。またメモリ／ＲＯＭ１０５には、ハードディスク１００の動作制御に必要なプログラムなどが格納されている。ＣＰＵ１０４はメモリ／ＲＯＭ１０５からプログラムなどを読み出して、ハードディスクコントローラ１０２を介してハードディスク１００の動作制御を行う。またメモリ／ＲＯＭ１０５はデータの書き込み及び一部のデータを削除可能な領域があり、その領域にはホストシステム１１５から受信するメディア１１４への書き込みデータを格納することができる。
【００１６】
［１．３．ハードディスクコントローラ１０２］
図２は、制御部１０１内のハードディスクコントローラ１０２を詳細に記載したハードディスク１００の構成ブロック図である。本実施例に係るハードディスクコントローラ１０２は、反転指示レジスタ２０１、バッファメモリ２０２、シンドローム生成回路２０３、反転回路２０４、データエラー訂正／検出回路２０５、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）生成回路２０６、反転回路２０７、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御部２０８を含む構成となっている。
【００１７】
ＤＭＡ制御部２０８は、ＣＰＵ１０４を介さずに、ハードディスクコントローラ１０２内のデータ転送を制御する。ＥＣＣ生成回路２０６はデータに付随させるＥＣＣデータを生成する。またシンドローム生成回路２０３は、データとそのデータに付随するＥＣＣデータを用いてＥＣＣシンドローム（以下、単にシンドロームという。）を生成する。ＥＣＣデータを付随させてメディア１１４にデータを格納するのは、ハードディスク１００の信頼性を高めるためである。データ化けなどのデータエラーが起こっても、ＥＣＣデータによってハードディスク１００はデータ訂正することができる。データエラー訂正／検出回路２０５がシンドロームを参照してデータエラーの検出および訂正を行う。
【００１８】
本実施例に係るハードディスクコントローラ１０２は、反転指示レジスタ２０１、反転回路２０４、２０７を用いて、データを初期化する処理を行う。ハードディスクコントローラ１０２は、データに付随するＥＣＣデータの一部のビットを反転してデータの無効化を行う。そしてデータを無効にすることによって、ハードディスクコントローラ１０２は、データの初期化を行う。なお本実施例においてデータは６４ビット、その６４ビットのデータに付随するＥＣＣデータは８ビットである。反転指示レジスタ２０１は、ＥＣＣデータを構成する８ビットのうち反転させる２ビットを特定するレジスタである。
【００１９】
データ初期化してメディア１１４にデータを読み出す場合、反転回路２０４はバッファメモリ２０２からＥＣＣデータと反転指示レジスタ２０１内の反転する２ビットを特定する特定情報を読み込み、ＥＣＣデータ中の特定の２ビットを反転する。反転回路２０４はＥＣＣデータ中の特定の２ビットを反転して、反転ＥＣＣデータを生成する。そしてシンドローム生成回路２０３が、反転ＥＣＣデータと対応するデータを用いてシンドロームを生成する。そのシンドロームよりデータエラー訂正／検出回路２０５が２ビットエラーでデータ訂正不能で判別し、データ無効と判別する。これよりデータ無効としてデータ初期化とする。
【００２０】
データ初期化してメディア１１４からデータを書き込む場合、反転回路２０７は、書き込みデータからＥＣＣ生成回路２０６が生成したＥＣＣデータと反転指示レジスタ２０１内の反転する２ビットを特定する特定情報を読み込み、ＥＣＣデータ中の特定の２ビットを反転する。反転回路２０７はＥＣＣデータ中の特定の２ビットを反転して、反転ＥＣＣデータを生成する。反転回路２０７が反転させるＥＣＣデータ中の特定の２ビットは、反転回路２０４が反転させるＥＣＣデータ中の特定の２ビットと同一である。反転回路２０７は、反転ＥＣＣデータをバッファメモリ２０２に格納する。またバッファメモリ２０２には、その反転ＥＣＣデータに対応するデータが格納されている。このデータは、ＣＰＵ１０４の制御によりメモリ／ＲＯＭ１０５からバッファメモリ２０２に出力される。そして磁気ヘッド１１２がメディア１１４にデータとそのデータに対応する反転ＥＣＣデータを書き込む。メディア１１４からデータを読み出す場合に、反転回路２０４が反転ＥＣＣデータを生成している。そのためデータ読み出して無効化した後に、メディア１１４にＥＣＣデータの特定の２ビットを再度反転して書き込んだデータは正常にメディア１１４から読み出しが可能である。
【００２１】
本実施例において、反転回路２０４、２０７はＥＣＣデータ中の２ビットを反転してデータの無効化を行ったが、これに限定されるものではなく、データエラー訂正／検出回路２０５がデータ訂正をできなくなくようにＥＣＣデータ中の複数ビットを反転すればよい。つまりＥＣＣデータ中で反転させるビットの数は２よりも多くてもよい。
【００２２】
なおＥＣＣの訂正不能となるパターンの数は、反転させるビットが２ビット以上重ならない異なる組み合わせが、本実施例におけるデータ初期化処理が可能な回数に相当する。
【００２３】
図３は本実施例に係るデータ初期化を行ってメディア１１４からのデータ読み出しを示す概略図であり、図３を用いて本実施例におけるデータの読み出しについて説明する。
【００２４】
磁気ヘッド１１２がデータＸを読み出し（ステップ３０１）、またそのデータＸに対応するＥＣＣデータＢを読み出す（ステップ３０２）。そして反転回路２０４がＥＣＣデータＢの中の特定の２ビットを反転して、反転ＥＣＣデータＡを生成する（ステップ３０３）。ここでＥＣＣデータＢは、前回の書込み時に反転回路２０７（図４ステップ４０４）を通過したＥＣＣデータである。シンドローム生成回路２０３は、データＸと反転ＥＣＣデータＡを用いてオール０で正常データとなるシンドロームを生成する（ステップ３０４）。データエラー訂正／検出回路２０５は、シンドロームが「オール０」か否かを判別する（ステップ３０５）。データエラー訂正／検出回路２０５がシンドロームが「オール０」であると判別する場合（ステップ３０５  ＹＥＳ）、ＣＰＵ１０４は、インタフェース部１０３を介して、データＸをホストシステム１１５に出力する（ステップ３０８）。データエラー訂正／検出回路２０５がシンドロームが「オール０」でないと判別する場合（ステップ３０５  ＮＯ）、データエラー訂正／検出回路２０５はデータエラーを検出し、シングルビットエラーなどの訂正可能なシンドロームか否か判別する（ステップ３０６）。データエラー訂正／検出回路２０５が検出したデータエラーが訂正可能である場合（ステップ３０６  ＹＥＳ）、データエラー訂正／検出回路２０５はデータエラーを訂正する（ステップ３０７）。ＣＰＵ１０４は、インタフェース部１０３を介して、ステップ３０７においてデータエラー訂正したデータＸをホストシステム１１５に出力する（ステップ３０８）。データエラー訂正／検出回路２０５が検出したデータエラーが訂正可能でない場合（ステップ３０６  ＮＯ）、ＣＰＵ１０４はデータが多ビットエラーであると判別しデータ無効とする（ステップ３０９）。
【００２５】
図４は本実施例に係るデータ初期化を行ってメディア１１４へのデータ書き込みを示す概略図であり、図４を用いて本実施例におけるデータの書き込みについて説明する。
【００２６】
メディア１１４にデータを書き込む場合、ＥＣＣ生成回路２０６はデータＸからＥＣＣデータＡを生成する（ステップ４０１、４０２）。そしてシンドローム生成回路２０３は、データＸと生成されたＥＣＣデータＡを入力すると、出力がオール０で正常データとなるシンドロームを生成できる事を示している（ステップ４０３）。そして反転回路２０７はＥＣＣデータＡから反転ＥＣＣデータＢを生成する（ステップ４０４）。磁気ヘッド１１２がデータＸと反転ＥＣＣデータＢをメディア１１４に書き込む。
【００２７】
［１．４．ＥＣＣデータのビット反転設定処理］
図５は本実施例に係るＥＣＣビット反転の設定処理を示すフローチャートである。制御部１０１がホストシステム１１５からＥＣＣデータの一部を反転してデータを無効化するデータ無効化コマンドを受領する（ステップＳ５０１）。ハードディスクコントローラ１０２は、ＥＣＣデータ中の２ビットをＯＮに設定する（ステップＳ５０２）。本実施例においてデータの長さは６４ビットであり、そのデータに対応するＥＣＣデータの長さは８ビットである。ハードディスクコントローラ１０２はＥＣＣデータの８ビット中の２ビットをＯＮに設定する。ここでＯＮに設定するということはＥＣＣデータ中のビットで反転させる候補のビットを選択することを意味する。ＣＰＵ１０４は、ＯＮに設定した２ビットが過去にデータ初期化するためにＯＮに設定した２ビットの組か否かを判別する（ステップＳ５０３）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去に設定した２ビットの組でない場合（ステップＳ５０３  ＮＯ）、ＣＰＵ１０４はステップＳ５０２でＯＮに設定した２ビットを反転して反転ＥＣＣデータを生成する特定情報を決定する（ステップＳ５０５）。そしてＣＰＵ１０４は反転指示レジスタ２０１に決定した特定情報を書き込む（ステップＳ５０６）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去にＯＮ設定した２ビットの組である場合（ステップＳ５０３  ＹＥＳ）、ＣＰＵ１０４は過去にＯＮ設定していないＥＣＣデータ中の２ビットの組を選択して特定情報を決定する（ステップＳ５０４）。そしてＣＰＵ１０４は反転指示レジスタ２０１に決定した特定情報を書き込む（ステップＳ５０６）。
【００２８】
特定情報はＥＣＣデータ中において反転する２ビットを特定する情報であって８ビットより構成される情報である。特定情報中の反転する２ビットを指定するビットは「１」に設定される。反転指示レジスタ２０１に特定情報が書き込まれるということは、オール０でなく、８ビット中２ビットが「１」のデータが反転指示レジスタ２０１に書き込まれるということである。
【００２９】
反転指示レジスタ２０１は、過去にデータ初期化するために書き込み、データ初期化に用いた特定情報も履歴として記憶している。そして現在データ初期化のために使用する特定情報を特定するためのフラグも有している。従いステップＳ５０３において、ＣＰＵ１０４は過去にデータ初期化に用いた特定情報の履歴を参照して、ＯＮに設定した２ビットが過去にＯＮに設定した２ビットの組か否かを判別する。ステップＳ５０６においてＣＰＵ１０４が反転指示レジスタ２０１に特定情報を書き込んだら、その書き込んだ特定情報に対応するフラグをＯＮにし、ＯＮになっていたフラグが存在すればそのフラグをＯＦＦにする。
【００３０】
［１．５．データ読み出し処理］
図６は本実施例に係るデータ読み出し処理を示すフローチャートである。
【００３１】
制御部１０１（より具体的には制御部１０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ読み出しコマンドを受領する（ステップＳ６０１）。データ読み出しコマンドは、Ｗ番地のデータを読み出すことを示すものであって、Ｗ番地にＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）の方式でデータアクセスすることを制御部１０１に命令するコマンドである。
【００３２】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ６０２）。ＣＰＵ１０４がＷ番地のデータを読み出せる位置に磁気ヘッド１０９をシーク、及び回転待ちを行ったら、磁気ヘッド１０９が、ＣＰＵ１０４による動作制御に基づいて、データとそのデータに対応するＥＣＣデータをバッファメモリ２０２に読み出す（ステップＳ６０３）。
【００３３】
そしてＣＰＵ１０４は、反転指示レジスタ２０１に反転ＥＣＣデータを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ６０４）。反転指示レジスタ２０１に特定情報が書き込まれていない場合の初期値は、オール０のデータがセットされている。図６に記載のデータ書き込み処理を示すフローチャートにおいて、反転指示レジスタ２０１にオール０がセットされていることは「反転指示レジスタ＝０」と示す。
【００３４】
ＣＰＵ１０４が反転指示レジスタ２０１に特定情報が書き込まれていないと判別する場合（ステップＳ６０４  ＹＥＳ）、反転回路２０４は全てのビットが“０”のため、バッファメモリ２０２から読み出したＥＣＣデータをどのビットも反転することなく、そのままシンドローム生成回路２０３に出力する（ステップＳ６０６）。反転回路２０４は、バッファメモリ２０２からＥＣＣデータを読み出し、また反転レジスタ２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路２０４はＥＣＣデータのどのビットも反転することなく、ＥＣＣデータをシンドローム生成回路２０３に出力する。
【００３５】
ＣＰＵ１０４が反転指示レジスタ２０１に特定情報が設定されていると判別した場合（ステップＳ６０４  ＮＯ）、反転回路２０４はＥＣＣデータ中の特定の２ビットを反転して反転ＥＣＣデータを生成する（ステップＳ６０５）。なお、データを無効化するためには反転レジスタが２ビット以上“１”とする必要がある。バッファメモリ２０２から読み出されたＥＣＣデータは、反転レジスタ２０１に書き込まれている特定ビットが“１”のＥＣＣデータ中の対象ビットを反転して反転ＥＣＣデータを生成し、反転ＥＣＣデータをシンドローム生成回路２０３に出力する。
【００３６】
シンドローム生成回路２０３は、バッファメモリ２０２から読み出されたデータとＥＣＣデータが入力となる。またシンドローム生成回路２０３は、反転回路２０４からＥＣＣデータ（ステップＳ６０６の場合）または反転ＥＣＣデータ（ステップＳ６０５の場合）が入力される。そしてシンドローム生成回路２０３は、データとそのデータに対応するＥＣＣデータ（または反転ＥＣＣデータ）とからシンドロームを生成する（ステップＳ６０７）。
【００３７】
データエラー訂正／検出回路２０５は、シンドロームが「オール０」か否かを判別する（ステップＳ６０８）。データエラー訂正／検出回路２０５がシンドロームが「オール０」であると判別する場合（ステップＳ６０８  ＹＥＳ）、データエラー訂正／検出回路２０５はデータが正常であると判別する（Ｓ６１０）。データエラー訂正／検出回路２０５がシンドロームが「オール０」でないと判別する場合（ステップＳ６０８  ＮＯ）、データエラー訂正／検出回路２０５はデータにエラーがあることを検出し、そのデータエラーをシングルビットエラーなどの訂正可能なシンドロームか否か判別する（ステップＳ６０９）。
【００３８】
データエラー訂正／検出回路２０５がデータエラーを訂正可能と判別する場合（ステップＳ６０９  ＹＥＳ）、データエラー訂正／検出回路２０５はデータエラーを訂正して訂正データを生成する（ステップＳ６１１）。またデータエラー訂正／検出回路２０５はＣＰＵ１０４に対して訂正が発生した旨を通知する（ステップＳ６１１）。データエラー訂正／検出回路２０５がデータエラーを訂正可能ではないと判別する場合（ステップＳ６０９  ＮＯ）、データエラー訂正／検出回路２０５はＣＰＵ１０４に対して訂正不可能なＥＣＣエラーの旨を通知する（ステップＳ６１２）。
【００３９】
ＣＰＵ１０４は、ホストシステム１１５から受領したデータ読み出しコマンドに対するデータの読み出し結果を集約する（ステップＳ６１３）。ＣＰＵ１０４が集約したデータ読み出し結果より、以下の解析を行いデータ読み出し処理を終了する。
【００４０】
シンドローム生成回路２０３が、シンドロームが「オール０」か否か判別する（ステップＳ６１４）。シンドロームが「オール０」であると判別する場合（ステップＳ６１４  ＹＥＳ）、制御部１０１はインタフェース部１０３よりリードデータをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ６１５）。シンドローム生成回路２０３が、シンドロームが「オール０」でないと判別する場合（ステップＳ６１４  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路２０５からデータエラーの訂正が発生した旨の通知を受けたか否か判別する（ステップＳ６１６）。ＣＰＵ１０４が、データエラー訂正／検出回路２０５からデータエラーの訂正が発生した旨の通知を受けたと判別する場合（ステップＳ６１６  ＹＥＳ）、制御部１０１はインタフェース部１０３より訂正したデータをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ６１７）。ＣＰＵ１０４が、データエラー訂正／検出回路２０５からデータエラーの訂正が発生した旨の通知を受けていないと判別する場合（ステップＳ６１６  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたか否か判別する（ステップＳ６１８）。データエラー訂正／検出回路２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けていないと判別する場合（ステップＳ６１８  ＮＯ）、制御部１０１はホストシステム１１５にデータを出力せず、タイムアウトエラーの旨の通知をホストシステムに出力して、データ読み出し処理を終了する（ステップＳ６１９）。データエラー訂正／検出回路２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたと判別する場合（ステップＳ６１８  ＹＥＳ）、ＣＰＵ１０４はデータ読み出しをリトライするか否かを判別する（ステップＳ６２０）。ＣＰＵ１０４がデータ読み出しをリトライすると判別する場合（ステップＳ６２０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ６０２）。ＣＰＵ１０４がデータ読み出しをリトライしないと判別した場合（ステップＳ６２０  ＮＯ）、ＣＰＵ１０４はインタフェース部１０３を介してリードデータがＥＣＣエラーである旨、ホストシステム１１５に通知してデータ読み出し処理を終了する（ステップＳ６２１）。
【００４１】
［１．６．データ書き込み処理］
図７は本実施例に係るデータ書き込み処理を示すフローチャートである。
【００４２】
制御部１０１（より具体的には制御部１０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ書き込みコマンドを受領する（ステップＳ７０１）。データ書き込みコマンドは、Ｗ番地にデータを書き込むことを示すものであって、Ｗ番地にＬＢＡの方式でデータアクセスすることを制御部１０１に命令するコマンドである。また制御部１０１は書き込みデータをインタフェース部１０３を介して受信し、メモリ／ＲＯＭ１０５に書き込みデータを格納する。
【００４３】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ７０２）。ＥＣＣ生成回路２０６はメモリ／ＲＯＭ１０５に格納された書き込みデータを読み出し、その書き込みデータに対応するＥＣＣデータを生成する（ステップＳ７０３）。
【００４４】
ＣＰＵ１０４は、反転指示レジスタ２０１に反転ＥＣＣデータを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ７０４）。ＣＰＵ１０４が反転指示レジスタ２０１に特定情報が書き込まれていないと判別する場合（ステップＳ７０４  ＹＥＳ）、反転回路２０７はＥＣＣ生成回路２０６より生成したＥＣＣデータをそのままバッファメモリ２０２に出力する（ステップＳ７０６）。反転回路２０７にはＥＣＣ生成回路２０６からＥＣＣデータが入力される。また反転回路は反転指示レジスタ２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路２０７はＥＣＣデータのどのビットも反転することなく、ＥＣＣデータをバッファメモリ２０２に出力する。
【００４５】
ＣＰＵ１０４が反転指示レジスタ２０１に特定情報が設定されていると判別した場合（ステップＳ７０４  ＮＯ）、反転回路２０７はＥＣＣデータ中の特定の２ビットを反転して反転ＥＣＣデータを生成する（ステップＳ７０５）。なお、リード時に無効化したデータをライト時に有効なデータとして使用する場合は、リード時と同じ反転指示レジスタ２０１の設定で書き込みが必要となる。反転回路２０７にはＥＣＣ生成回路２０６からＥＣＣデータが入力される。また反転回路２０７は、反転レジスタ２０１より書き込まれている特定情報を読み出す。反転回路２０７は特定情報が示すＥＣＣデータ中の２ビットを反転して、反転ＥＣＣデータを生成する。
【００４６】
そしてＣＰＵ１０４がメモリ／ＲＯＭ１０５に格納されているデータをバッファメモリ２０２に書き込み、反転回路２０７は出力するＥＣＣデータ（ステップＳ７０６の場合）または反転ＥＣＣデータ（ステップＳ７０５の場合）をバッファメモリ２０２に書き込む（ステップＳ７０７）。ＣＰＵ１０４はバッファメモリ２０２に格納するＥＣＣデータ（または反転ＥＣＣデータ）とデータをメディア１１４のＷ番地に書き込む（ステップＳ７０８）。ＣＰＵ１０４はＬＢＡの方式でアクセスして、ＡＤ／ＤＡ変換部１０６、リードチャネル１０７を介して、ＥＣＣデータ（または反転ＥＣＣデータ）とデータをメディア１１４のＷ番地に書き込む。
【００４７】
ＣＰＵ１０４は、ＥＣＣデータ（または反転ＥＣＣデータ）とデータをメディア１１４のＷ番地に正常に書き込めたか否かを判別する（ステップＳ７０９）。ＣＰＵ１０４がＥＣＣデータ（または反転ＥＣＣデータ）とデータをメディア１１４のＷ番地に正常に書き込めたと判別する場合（ステップＳ７０９  ＹＥＳ）、制御部１０１はインタフェース部１０３よりデータ書き込み処理が正常に行われた旨をホストシステム１１５に通知して、データ書き込み処理を終了する（ステップＳ７１１）。ＣＰＵ１０４がＥＣＣデータ（または反転ＥＣＣデータ）とデータをメディア１１４のＷ番地に正常に書き込めなかったと判別する場合（ステップＳ７０９  ＮＯ）、ＣＰＵ１０４はデータ書き込みをリトライするか否かを判別する（ステップＳ７１０）。ＣＰＵ１０４がデータ書き込みをリトライすると判別する場合（ステップＳ７１０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ７０２）。ＣＰＵ１０４がデータ書き込みをリトライしないと判別する場合（ステップＳ７１０  ＮＯ）、制御部１０１はインタフェース部１０３よりデータ書き込み処理を失敗した旨をホストシステム１１５に通知して、データ書き込み処理を終了する。
（実施例２）
次にデータ内の一部のビットを反転して、反転前のデータからＥＣＣデータをデータ無効化（データ初期化）する場合の他の実施例について説明する。
【００４８】
［２．１．ハードディスク８００］
図８は本実施例に係るハードディスク８００の構成ブロック図である。ハードディスク８００はホストシステム１１５と接続しており、データの書き込み、読み出しが可能な記憶媒体である。ホストシステム１１５はハードディスク８００を含め、入力装置、表示装置などと接続しており、システム全体の制御を行っている。本実施例においてホストシステム１１５は、例えばＲＡＩＤ装置などである。ホストシステム１１５がＲＡＩＤ装置である場合、ホストシステム１１５は、ハードディスク８００の記憶領域にシステムエリアを設けて、例えばハードディスク８００がマスターディスクなのかスレーブディスクなのかを管理する。そのためホストシステム１１５にハードディスク８００を接続する場合には、ハードディスク８００を初期状態にして接続する必要がある。つまりＲＡＩＤ装置に接続される前にハードディスク８００にデータが書き込まれている場合には、ハードディスク８００は初期化された後ＲＡＩＤ装置に接続される必要がある。これはハードディスク８００内のシステムエリアにデータが書き込まれた状態でＲＡＩＤ装置などに接続されるとシステム領域に残っている情報によりシステム全体として誤動作する可能性があるためであり、システムエリアへのデータの書き込みは、ＲＡＩＤ装置に媒体を接続して電源を投入しただけでＲＡＩＤの構成情報などのシステムデータが書き込まれてしまう事があり、一度ＲＡＩＤ装置に接続した媒体を他のＲＡＩＤ装置に使用する場合は情報を無効化してこれを防ぐためである。本実施例におけるハードディスク８００は高速なデータ初期化処理を可能とするものであり、ハードディスク８００の再利用に際して、システムの誤動作を防ぐものである。以下、ハードディスク８００の構成を説明すると共に、ハードディスク８００におけるデータ初期化処理について説明する。
【００４９】
ハードディスク８００は制御部８０１、ヘッドＩＣ１０９、ボイスコイルモータ１１０、ヘッドアーム１１１、磁気ヘッド１１２、スピンドルモータ１１３、メディア１１４を含む構成である。ホストシステム１１５からの指示に基づき、ハードディスク８００はデータ書き込み制御、データの読み出し制御を行う。
【００５０】
ハードディスク８００にデータを書き込む場合、ホストシステム１１５は、制御部８０１に、インタフェース部１０３を介して、書き込みコマンド、及び書き込みデータを供給する。ＣＰＵ１０４は、モータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。制御部８０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。ハードディスクコントローラ８０２は、ＡＤ／ＤＡ変換部１０６を介して、書き込みデータをリードチャネル１０７に供給する。リードチャネル１０７は、書き込みデータを符号化してヘッドＩＣ１０９に供給する。ヘッドＩＣ１０９は、符号化された書き込みデータを磁気ヘッド１１２に供給し、磁気ヘッド１１２がメディア１１４に書き込みデータを書き込む。なお定格回転数とは、予め決められた、約１気圧で室温などの通常使用条件下で、ハードディスク１００が本来の性能を発揮できるメディア１１４の回転数をいう。
【００５１】
ハードディスク８００からデータを読み出す場合、ホストシステム１１５は、制御部８０１に、インタフェース部１０３を介して、読み出しコマンド（リード命令）を供給する。ハードディスクコントローラ８０２は、この読み出しコマンドをＣＰＵ１０４に供給する。ＣＰＵ１０４は、受取った読み出しコマンドを解析し、読み出す媒体の位置情報をハードディスクコントローラ８０２に通知してモータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。制御部８０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。磁気ヘッド１１２は、メディア１１４からデータを読み出し、そのデータはヘッドＩＣ１０９を介してリードチャネル１０７に供給される。リードチャネル１０７は、読み出されたデータを復号化してリードデータを生成する。リードチャネル１０７は、ＡＤ／ＤＡ変換部１０６を介して、リードデータをハードディスクコントローラ８０２に供給する。ハードディスクコントローラ８０２は、インタフェース部１０３を介して、ホストシステム１１５にリードデータを供給する。
【００５２】
［２．２．制御部８０１］
また制御部８０１は、ハードディスクコントローラ８０２、インタフェース部１０３、ＣＰＵ１０４、メモリ／ＲＯＭ１０５、ＡＤ／ＤＡ変換部１０６、リードチャネル１０７を含む構成となっている。ホストシステム１１５は、インタフェース部１０３を介して、制御部８０１のハードディスクコントローラ１０２と接続している。インタフェース部１０３は、ＳＡＴＡ、ＳＡＳによってデータ通信可能なインタフェースである。またメモリ／ＲＯＭ１０５には、ハードディスク１００の動作制御に必要なプログラムなどが格納されている。ＣＰＵ１０４はメモリ／ＲＯＭ１０５からプログラムなどを読み出して、ハードディスクコントローラ８０２を介してハードディスク８００の動作制御を行う。またメモリ／ＲＯＭ１０５はデータの書き込み及び一部のデータを削除可能な領域があり、その領域にはホストシステム１１５から受信するメディア１１４への書き込みデータを格納することができる。
【００５３】
［２．３．ハードディスクコントローラ８０２］
また図８において、制御部８０１内のハードディスクコントローラ８０２を詳細に記載したハードディスク８００の構成ブロック図である。本実施例に係るハードディスクコントローラ８０２は、反転指示レジスタ８２０１、バッファメモリ８２０２、シンドローム生成回路８２０３、反転回路８２０４、データエラー訂正／検出回路８２０５、ＥＣＣ生成回路８２０６、反転回路８２０７、ＤＭＡ制御部８２０８を含む構成となっている。
【００５４】
ＤＭＡ制御部８２０８は、ＣＰＵ１０４を介さずに、ハードディスクコントローラ８０２内のデータ転送を制御する。ＥＣＣ生成回路８２０６はデータに付随させるＥＣＣデータを生成する。またシンドローム生成回路８２０３は、データとそのデータに付随するＥＣＣデータを用いてＥＣＣシンドローム（以下、単にシンドロームという。）を生成する。ＥＣＣデータを付随させてメディア１１４にデータを格納するのは、ハードディスク８００の信頼性を高めるためである。データ化けなどのデータエラーが起こっても、ＥＣＣデータによってハードディスク８００はデータ訂正することができる。データエラー訂正／検出回路８２０５がシンドロームを参照してデータエラーの検出および訂正を行う。
【００５５】
本実施例に係るハードディスクコントローラ８０２は、反転指示レジスタ８２０１、反転回路８２０４、８２０７を用いて、データを初期化する処理を行う。ハードディスクコントローラ８０２は、データの一部のビットを反転してデータの無効化を行う。そしてデータを無効にすることによって、ハードディスクコントローラ８０２は、データの初期化を行う。なお本実施例においてデータは６４ビット、その６４ビットのデータに付随するＥＣＣデータは８ビットである。反転指示レジスタ８２０１は、データを構成する６４ビットのうち反転させる２ビットを特定するレジスタである。
【００５６】
データ初期化してメディア１１４にデータを読み出す場合、反転回路８２０４はバッファメモリ８２０２からデータと反転指示レジスタ８０１内の反転する２ビットを特定する特定情報を読み込み、データ中の特定の２ビットを反転する。反転回路８２０４はデータ中の特定の２ビットを反転して、反転データを生成する。そしてシンドローム生成回路８２０３が、反転データと対応するＥＣＣデータを用いてシンドロームを生成する。そのシンドロームよりデータエラー訂正／検出回路８２０５が２ビットエラーでデータ訂正不能で判別し、データ無効と判別する。これよりデータ無効としてデータ初期化とする。
【００５７】
データ初期化してメディア１１４からデータを書き込む場合、反転回路８２０７は、ホストシステム１１５から受信するデータ（一旦、メモリ／ＲＯＭ１０５に格納されるデータ）と反転指示レジスタ８２０１内の反転する２ビットを特定する特定情報を読み込み、データ中の特定の２ビットを反転する。反転回路８２０７はデータ中の特定の２ビットを反転して、反転データを生成する。反転回路８２０７が反転させるデータ中の特定の２ビットは、反転回路８２０４が反転させるデータ中の特定の２ビットと同一である。反転回路８２０７は、反転データをバッファメモリ８２０２に格納する。またバッファメモリ８２０２には、その反転する前のデータに対応するＥＣＣデータが格納されている。ＥＣＣ生成回路８２０６が、メモリ／ＲＯＭ１０５からデータを読み出してＥＣＣデータを生成して、その生成したデータをバッファメモリ８２０２に出力する。そして磁気ヘッド１１２がメディア１１４にデータとそのデータに対応する反転ＥＣＣデータを書き込む。メディア１１４からデータを読み出す場合に、反転回路８２０４が反転データを生成している。そのためデータ読み出して無効化した後に、メディア１１４にデータの特定の２ビットを再度反転して書き込んだデータは正常にメディア１１４から読み出しが可能である。
【００５８】
本実施例において、反転回路８２０４、８２０７はデータ中の２ビットを反転してデータの無効化を行ったが、これに限定されるものではなく、データエラー訂正／検出回路８２０５がデータ訂正をできなくなるようにデータ中の複数ビットを反転すればよい。つまりデータ中で反転させるビットの数は２よりも多くてもよい。
【００５９】
なおＥＣＣの訂正不能となるパターンの数は、反転させるビットが２ビット以上重ならない異なる組み合わせが本実施例におけるデータ初期化処理が可能な回数に相当する。
【００６０】
図９は本実施例に係るデータ初期化を行ってメディア１１４からのデータ読み出しを示す概略図であり、図９を用いて本実施例におけるデータの読み出しについて説明する。
【００６１】
磁気ヘッド１１２がデータＹを読み出し（ステップ９０１）、またそのデータＹに対応するＥＣＣデータＡを読み出す（ステップ９０３）。反転回路８２０４がデータＹ中の特定の２ビットを反転して、反転データＸを生成する（ステップ９０２）。ここでデータＹは、前回の書込み時に反転回路８２０７（図１０ステップ１００４）を通過したデータである。シンドローム生成回路８２０３は、反転データＸとＥＣＣデータＡを用いてオール０で正常データとなるシンドロームを生成する（ステップ９０４）。データエラー訂正／検出回路８２０５は、シンドロームが「オール０」か否かを判別する（ステップ９０５）。データエラー訂正／検出回路８２０５がシンドロームが「オール０」であると判別する場合（ステップ９０５  ＹＥＳ）、ＣＰＵ１０４は、インタフェース部１０３を介して、データＸをホストシステム１１５に出力する（ステップ９０８）。データエラー訂正／検出回路８２０５がシンドロームが「オール０」でないと判別する場合（ステップ９０５  ＮＯ）、データエラー訂正／検出回路８２０５はデータエラーを検出し、訂正可能か否か判別する（ステップ９０６）。データエラー訂正／検出回路８２０５が検出したデータエラーが訂正可能である場合（ステップ９０６  ＹＥＳ）、データエラー訂正／検出回路８２０５はデータエラーを訂正する（ステップ９０７）。ＣＰＵ１０４は、インタフェース部１０３を介して、ステップ９０７においてデータエラー訂正したデータＸをホストシステム１１５に出力する（ステップ９０８）。データエラー訂正／検出回路８２０５が検出したデータエラーが訂正可能でない場合（ステップ９０６  ＮＯ）、ＣＰＵ１０４はデータが多ビットエラーであると判別しデータ無効とする（ステップ９０９）。
【００６２】
図１０は本実施例に係るデータ初期化を行ってメディア１１４へのデータ書き込みを示す概略図であり、図９を用いて本実施例におけるデータの書き込みについて説明する。
【００６３】
メディア１１４にデータを書き込む場合、ＥＣＣ生成回路８２０６はデータＸからＥＣＣデータを生成する（ステップ１００１、１００２）。シンドローム生成回路８２０３で、生成されたＥＣＣデータＡと書込みデータＸでシンドロームを生成した場合は、オール０で正常データができる事を示している。（ステップ１００３）。そして反転回路８２０７は反転データＹを生成する（ステップ１００４）。磁気ヘッド１１２が反転データＹとＥＣＣデータＡをメディア１１４に書き込む。
【００６４】
［２．４．データのビット反転設定処理］
図１１は本実施例に係るデータビット反転の設定処理を示すフローチャートである。制御部８０１がホストシステム１１５からデータの一部を反転してデータを無効化するデータ無効化コマンドを受領する（ステップＳ１１０１）。ハードディスクコントローラ８０２は、データ中の２ビットをＯＮに設定する（ステップＳ１１０２）。本実施例においてデータの長さは６４ビットであり、そのデータに対応するＥＣＣデータの長さは８ビットである。ハードディスクコントローラ８０２はＥＣＣデータの８ビット中の２ビットをＯＮに設定する。ここでＯＮに設定するということはＥＣＣデータ中のビットで反転させる候補のビットを選択することを意味する。ＣＰＵ１０４は、ＯＮに設定した２ビットが過去にデータ初期化するためにＯＮに設定した２ビットの組か否かを判別する（ステップＳ１１０３）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去に設定した２ビットの組でない場合（ステップＳ１１０３  ＮＯ）、ＣＰＵ１０４はステップＳ１１０２でＯＮに設定した２ビットを反転して反転データを生成する特定情報を決定する（ステップＳ１１０５）。そしてＣＰＵ１０４は反転指示レジスタ８２０１に決定した特定情報を書き込む（ステップＳ１１０６）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去にＯＮ設定した２ビットの組である場合（ステップＳ１１０３  ＹＥＳ）、ＣＰＵ１０４は過去にＯＮ設定していないデータ中の２ビットの組を選択して特定情報を決定する（ステップＳ１１０４）。そしてＣＰＵ１０４は反転指示レジスタ８２０１に決定した特定情報を書き込む（ステップＳ１１０６）。
【００６５】
特定情報はデータ中において反転する２ビットを特定する情報であって６４ビットより構成される情報である。特定情報中の反転する２ビットを指定するビットは「１」に設定される。反転指示レジスタ８２０１に特定情報が書き込まれるということは、オール０でなく、６４ビット中２ビットが「１」のデータが反転指示レジスタ８２０１に書き込まれるということである。
【００６６】
反転指示レジスタ８２０１は、過去にデータ初期化するために書き込み、データ初期化に用いた特定情報も履歴として記憶している。そして現在データ初期化のために使用する特定情報を特定するためのフラグも有している。従いステップＳ１１０３において、ＣＰＵ１０４は過去にデータ初期化に用いた特定情報の履歴を参照して、ＯＮに設定した２ビットが過去にＯＮに設定した２ビットの組か否かを判別する。ステップＳ１１０６においてＣＰＵ１０４が反転指示レジスタ８２０１に特定情報を書き込んだら、その書き込んだ特定情報に対応するフラグをＯＮにし、ＯＮになっていたフラグが存在すればそのフラグをＯＦＦにする。
【００６７】
［２．５．データ読み出し処理］
図１２は本実施例に係るデータ読み出し処理を示すフローチャートである。
【００６８】
制御部８０１（より具体的には制御部８０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ読み出しコマンドを受領する（ステップＳ１２０１）。データ読み出しコマンドは、Ｗ番地のデータを読み出すことを示すものであって、Ｗ番地にＬＢＡの方式でデータアクセスすることを制御部８０１に命令するコマンドである。
【００６９】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１２０２）。ＣＰＵ１０４がＷ番地のデータを読み出せる位置に磁気ヘッド１０９をシーク、及び回転待ちを行ったら、磁気ヘッド１０９が、ＣＰＵ１０４による動作制御に基づいて、データとそのデータに対応するＥＣＣデータをバッファメモリ８２０２に読み出す（ステップＳ１２０３）。
【００７０】
そしてＣＰＵ１０４は、反転指示レジスタ８２０１に反転データを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ１２０４）。反転指示レジスタ８２０１に特定情報が書き込まれていない場合の初期値は、オール０のデータがセットされている。図１２に記載のデータ書き込み処理を示すフローチャートにおいて、反転指示レジスタ８２０１にオール０がセットされていることは「反転指示レジスタ＝０」と示す。
【００７１】
ＣＰＵ１０４が反転指示レジスタ８２０１に特定情報が書き込まれていないと判別する場合（ステップＳ１２０４  ＹＥＳ）、反転回路８２０４はデータをそのままシンドローム生成回路８２０３に出力する（ステップＳ１２０６）。反転回路８２０４は、バッファメモリ８２０２からデータを読み出し、また反転レジスタ８２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路８２０４はＥＣＣデータのどのビットも反転することなく、データをシンドローム生成回路８２０３に出力する。
【００７２】
ＣＰＵ１０４が反転指示レジスタ８２０１に特定情報が設定されていると判別した場合（ステップＳ１２０４  ＮＯ）、反転回路８２０４はデータ中の特定の２ビットを反転して反転データを生成する（ステップＳ１２０５）。反転回路８２０４は、バッファメモリ８２０２からデータを読み出す。また反転回路８２０４は、反転レジスタ８２０１より書き込まれている特定情報を読み出す。反転回路８２０４は特定情報が示すデータ中の２ビットを反転し反転データを生成し、反転データをシンドローム生成回路８２０３に出力する。
【００７３】
シンドローム生成回路８２０３は、バッファメモリ８２０２からＥＣＣデータを読み出す。またシンドローム生成回路８２０３は、反転回路８２０４からデータ（ステップＳ１２０６の場合）または反転データ（ステップＳ１２０５の場合）を入力される。そしてシンドローム生成回路８２０３は、データ（または反転データ）とそのデータに対応するＥＣＣデータとからシンドロームを生成する（ステップＳ１２０７）。
【００７４】
データエラー訂正／検出回路８２０５は、シンドロームが「オール０」か否かを判別する（ステップＳ１２０８）。データエラー訂正／検出回路８２０５がシンドロームが「オール０」であると判別する場合（ステップＳ１２０８  ＹＥＳ）、データエラー訂正／検出回路８２０５はデータが正常であると判別する（Ｓ１２１０）。データエラー訂正／検出回路８２０５がシンドロームが「オール０」でないと判別する場合（ステップＳ１２０８  ＮＯ）、データエラー訂正／検出回路８２０５はデータにエラーがあることを検出し、そのデータエラーを訂正可能か否か判別する（ステップＳ１２０９）。
【００７５】
データエラー訂正／検出回路８２０５がデータエラーを訂正可能と判別する場合（ステップＳ１２０９  ＹＥＳ）、データエラー訂正／検出回路８２０５はデータエラーを訂正して訂正データを生成する（ステップＳ１２１１）。またデータエラー訂正／検出回路８２０５はＣＰＵ１０４に対して訂正が発生した旨を通知する（ステップＳ１２１１）。データエラー訂正／検出回路８２０５がデータエラーを訂正可能ではないと判別する場合（ステップＳ１２０９  ＮＯ）、データエラー訂正／検出回路８２０５はＣＰＵ１０４に対して訂正不可能なＥＣＣエラーの旨を通知する（ステップＳ１２１２）。
【００７６】
ＣＰＵ１０４は、ホストシステム１１５から受領したデータ読み出しコマンドに対するデータの読み出し結果を集約する（ステップＳ１２１３）。ＣＰＵ１０４が集約したデータ読み出し結果より、以下の解析を行いデータ読み出し処理を終了する。
【００７７】
シンドローム生成回路８２０３が、シンドロームが「オール０」か否か判別する（ステップＳ１２１４）。シンドロームが「オール０」であると判別する場合（ステップＳ１２１４  ＹＥＳ）、制御部８０１はインタフェース部１０３より反転データをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ１２１５）。シンドローム生成回路８２０３が、シンドロームが「オール０」でないと判別する場合（ステップＳ１２１４  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路８２０５からデータエラーの訂正が発生した旨の通知を受けたか否か判別する（ステップＳ１２１６）。ＣＰＵ１０４が、データエラー訂正／検出回路８２０５からデータエラーの訂正が発生した旨の通知を受けたと判別する場合（ステップＳ１２１６  ＹＥＳ）、制御部８０１はインタフェース部１０３より訂正した反転データをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ１２１７）。ＣＰＵ１０４が、データエラー訂正／検出回路８２０５からデータエラーの訂正が発生した旨の通知を受けていないと判別する場合（ステップＳ１２１６  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路８２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたか否か判別する（ステップＳ１２１８）。データエラー訂正／検出回路８２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けていないと判別する場合（ステップＳ１２１８  ＮＯ）、制御部８０１はホストシステム１１５にデータを出力せず、タイムアウトエラーの旨の通知をホストシステムに出力して、データ読み出し処理を終了する（ステップＳ１２１９）。データエラー訂正／検出回路８２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたと判別する場合（ステップＳ１２１８  ＹＥＳ）、ＣＰＵ１０４はデータ読み出しをリトライするか否かを判別する（ステップＳ１２２０）。ＣＰＵ１０４がデータ読み出しをリトライすると判別する場合（ステップＳ１２２０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１２０２）。ＣＰＵ１０４がデータ読み出しをリトライしないと判別した場合（ステップＳ１２２０  ＮＯ）、ＣＰＵ１０４はインタフェース部１０３を介してリードデータがＥＣＣエラーである旨、ホストシステム１１５に通知してデータ読み出し処理を終了する（ステップＳ１２２１）。
【００７８】
［２．６．データ書き込み処理］
図１３は本実施例に係るデータ書き込み処理を示すフローチャートである。
【００７９】
制御部８０１（より具体的には制御部８０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ書き込みコマンドを受領する（ステップＳ１３０１）。データ書き込みコマンドは、Ｗ番地にデータを書き込むことを示すものであって、Ｗ番地にＬＢＡの方式でデータアクセスすることを制御部８０１に命令するコマンドである。また制御部８０１は書き込みデータをインタフェース部１０３を介して受信し、メモリ／ＲＯＭ１０５に書き込みデータを格納する。
【００８０】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１３０２）。ＥＣＣ生成回路８２０６はメモリ／ＲＯＭ１０５に格納された書き込みデータを読み出し、その書き込みデータに対応するＥＣＣデータを生成する（ステップＳ１３０３）。
【００８１】
ＣＰＵ１０４は、反転指示レジスタ８２０１に反転データを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ１３０４）。ＣＰＵ１０４が反転指示レジスタ８２０１に特定情報が書き込まれていないと判別する場合（ステップＳ１３０４  ＹＥＳ）、反転回路８２０７はデータをそのままバッファメモリ８２０２に出力する（ステップＳ１３０６）。反転回路８２０７には、ＣＰＵ１０４の制御によりメモリ／ＲＯＭ１０５からデータが入力される。また反転回路８２０４は反転指示レジスタ８２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路８２０７はデータのどのビットも反転することなく、データをバッファメモリ８２０２に出力する。
【００８２】
ＣＰＵ１０４が反転指示レジスタ８２０１に特定情報が設定されていると判別した場合（ステップＳ１３０４  ＮＯ）、反転回路８２０７はデータ中の特定の２ビットを反転して反転データを生成する（ステップＳ１３０５）。反転回路８２０７には、ＣＰＵ１０４の制御によりメモリ／ＲＯＭ１０５からデータが入力される。また反転回路８２０７は、反転レジスタ８２０１より書き込まれている特定情報を読み出す。反転回路８２０７は特定情報が示すデータ中の２ビットを反転して、反転データを生成する。
【００８３】
そしてＥＣＣ生成回路８２０６は生成したＥＣＣデータをバッファメモリ８２０２に書き込み、反転回路８２０７は出力するデータ（ステップＳ１３０６の場合）または反転データ（ステップＳ１３０５の場合）をバッファメモリ８２０２に書き込む（ステップＳ１３０７）。ＣＰＵ１０４はバッファメモリ８２０２に格納するデータ（または反転データ）とＥＣＣデータをメディア１１４のＷ番地に書き込む（ステップＳ１３０８）。ＣＰＵ１０４はＬＢＡの方式でアクセスして、ＡＤ／ＤＡ変換部１０６、リードチャネル１０７を介して、データ（または反転データ）とＥＣＣデータをメディア１１４のＷ番地に書き込む。
【００８４】
ＣＰＵ１０４は、データ（または反転データ）とＥＣＣデータをメディア１１４のＷ番地に正常に書き込めたか否かを判別する（ステップＳ１３０９）。ＣＰＵ１０４がデータ（または反転データ）とＥＣＣデータをメディア１１４のＷ番地に正常に書き込めたと判別する場合（ステップＳ１３０９  ＹＥＳ）、制御部８０１はインタフェース部１０３よりデータ書き込み処理が正常に行われた旨をホストシステム１１５に通知して、データ書き込み処理を終了する（ステップＳ１３１１）。ＣＰＵ１０４がデータ（または反転データ）とＥＣＣデータをメディア１１４のＷ番地に正常に書き込めなかったと判別する場合（ステップＳ１３０９  ＮＯ）、ＣＰＵ１０４はデータ書き込みをリトライするか否かを判別する（ステップＳ１３１０）。ＣＰＵ１０４がデータ書き込みをリトライすると判別する場合（ステップＳ１３１０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１３０２）。ＣＰＵ１０４がデータ書き込みをリトライしないと判別する場合（ステップＳ１３１０  ＮＯ）、制御部８０１はインタフェース部１０３よりデータ書き込み処理を失敗した旨をホストシステム１１５に通知して、データ書き込み処理を終了する。
（実施例３）
次にデータ内の一部のビットを反転して、その反転データからＥＣＣデータを生成してデータ無効化（データ初期化）する場合の他の実施例について説明する。
【００８５】
［３．１．ハードディスク１４００］
図１４は本実施例に係るハードディスク１４００の構成ブロック図である。ハードディスク１４００はホストシステム１１５と接続しており、データの書き込み、読み出しが可能な記憶媒体である。ホストシステム１１５はハードディスク１４００を含め、入力装置、表示装置などと接続しており、システム全体の制御を行っている。本実施例においてホストシステム１１５は、例えばＲＡＩＤ装置などである。ホストシステム１１５がＲＡＩＤ装置である場合、ホストシステム１１５は、ハードディスク１４００の記憶領域にシステムエリアを設けて、例えばハードディスク１４００がマスターディスクなのかスレーブディスクなのかを管理する。そのためホストシステム１１５にハードディスク１４００を接続する場合には、ハードディスク１４００を初期状態にして接続する必要がある。つまりＲＡＩＤ装置に接続される前にハードディスク１４００にデータが書き込まれている場合には、ハードディスク１４００は初期化された後ＲＡＩＤ装置に接続される必要がある。これはハードディスク１４００内のシステムエリアにデータが書き込まれた状態でＲＡＩＤ装置などに接続されるとシステム全体として誤動作する可能性があるためであり、これを防ぐためである。本実施例におけるハードディスク１４００は高速なデータ初期化処理を可能とするものであり、ハードディスク１４００の再利用に際して、システムの誤動作を防ぐものである。以下、ハードディスク１４００の構成を説明すると共に、ハードディスク１４００におけるデータ初期化処理について説明する。
【００８６】
ハードディスク１４００は制御部１４０１、ヘッドＩＣ１０９、ボイスコイルモータ１１０、ヘッドアーム１１１、磁気ヘッド１１２、スピンドルモータ１１３、メディア１１４を含む構成である。ホストシステム１１５からの指示に基づき、ハードディスク１４００はデータ書き込み制御、データの読み出し制御を行う。
【００８７】
ハードディスク１４００にデータを書き込む場合、ホストシステム１１５は、制御部１４０１に、インタフェース部１０３を介して、書き込みコマンド、及び書き込みデータを供給する。ＣＰＵ１０４は、モータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。制御部１４０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。ハードディスクコントローラ１４０２は、ＡＤ／ＤＡ変換部１０６を介して、書き込みデータをリードチャネル１０７に供給する。リードチャネル１０７は、書き込みデータを符号化してヘッドＩＣ１０９に供給する。ヘッドＩＣ１０９は、符号化された書き込みデータを磁気ヘッド１１２に供給し、磁気ヘッド１１２がメディア１１４に書き込みデータを書き込む。なお定格回転数とは、予め決められた、約１気圧で室温などの通常使用条件下で、ハードディスク１００が本来の性能を発揮できるメディア１１４の回転数をいう。
【００８８】
ハードディスク１４００からデータを読み出す場合、ホストシステム１１５は、制御部１４０１に、インタフェース部１０３を介して、読み出しコマンド（リード命令）を供給する。ハードディスクコントローラ１４０２は、この読み出しコマンドをＣＰＵ１０４に供給する。ＣＰＵ１０４は、受取った読み出しコマンドを解析し、読み出す媒体の位置情報をハードディスクコントローラ１４０２に通知してモータ制御部１０８を介して、ボイスコイルモータ１１０、スピンドルモータ１１３を制御する。制御部１４０１は、ヘッドアーム１１１を介して磁気ヘッド１１２をメディア１１４上の所望のトラック位置に移動させる。モータ制御部１０８は、ボイスコイルモータ１１０を制御して磁気ヘッド１１２の位置制御を行う。またモータ制御部１０８は、スピンドルモータ１１３を制御してメディア１１４を定格回転数で回転させる。磁気ヘッド１１２は、メディア１１４からデータを読み出し、そのデータはヘッドＩＣ１０９を介してリードチャネル１０７に供給される。リードチャネル１０７は、読み出されたデータを復号化してリードデータを生成する。リードチャネル１０７は、ＡＤ／ＤＡ変換部１０６を介して、リードデータをハードディスクコントローラ１４０２に供給する。ハードディスクコントローラ８０２は、インタフェース部１０３を介して、ホストシステム１１５にリードデータを供給する。
【００８９】
［３．２．制御部１４０１］
また制御部１４０１は、ハードディスクコントローラ１４０２、インタフェース部１０３、ＣＰＵ１０４、メモリ／ＲＯＭ１０５、ＡＤ／ＤＡ変換部１０６、リードチャネル１０７を含む構成となっている。ホストシステム１１５は、インタフェース部１０３を介して、制御部１４０１のハードディスクコントローラ１０２と接続している。インタフェース部１０３は、ＳＡＴＡ、ＳＡＳによってデータ通信可能なインタフェースである。またメモリ／ＲＯＭ１０５には、ハードディスク１４００の動作制御に必要なプログラムなどが格納されている。ＣＰＵ１０４はメモリ／ＲＯＭ１０５からプログラムなどを読み出して、ハードディスク１００の動作制御を行う。またメモリ／ＲＯＭ１０５はデータの書き込み及び一部のデータを削除可能な領域があり、その領域にはホストシステム１１５から受信するメディア１１４への書き込みデータを格納することができる。
【００９０】
［３．３．ハードディスクコントローラ１４０２］
また図１４において、制御部１４０１内のハードディスクコントローラ１４０２を詳細に記載したハードディスク１４００の構成ブロック図である。本実施例に係るハードディスクコントローラ１４０２は、反転指示レジスタ４２０１、バッファメモリ４２０２、シンドローム生成回路４２０３、反転回路４２０４、データエラー訂正／検出回路４２０５、ＥＣＣ生成回路４２０６、反転回路４２０７、ＤＭＡ制御部４２０８を含む構成となっている。
【００９１】
ＤＭＡ制御部４２０８は、ＣＰＵ１０４を介さずに、ハードディスクコントローラ１４０２内のデータ転送を制御する。ＥＣＣ生成回路４２０６はデータに付随させるＥＣＣデータを生成する。またシンドローム生成回路４２０３は、データとそのデータに付随するＥＣＣデータを用いてＥＣＣシンドローム（以下、単にシンドロームという。）を生成する。ＥＣＣデータを付随させてメディア１１４にデータを格納するのは、ハードディスク８００の信頼性を高めるためである。データ化けなどのデータエラーが起こっても、ＥＣＣデータによってハードディスク８００はデータ訂正することができる。データエラー訂正／検出回路４２０５がシンドロームを参照してデータエラーの検出および訂正を行う。
【００９２】
本実施例に係るハードディスクコントローラ１４０２は、反転指示レジスタ４２０１、反転回路４２０４、４２０７を用いて、データを初期化する処理を行う。ハードディスクコントローラ１４０２は、データの一部のビットを反転してデータの無効化を行う。そしてデータを無効にすることによって、ハードディスクコントローラ８０２は、データの初期化を行う。なお本実施例においてデータは６４ビット、その６４ビットのデータに付随するＥＣＣデータは８ビットである。反転指示レジスタ４２０１は、データを構成する６４ビットのうち反転させる２ビットを特定するレジスタである。
【００９３】
データ初期化してメディア１１４にデータを読み出す場合、反転回路４２０４はバッファメモリ４２０２からデータと反転指示レジスタ４２０１内の反転する２ビットを特定する特定情報を読み込み、データ中の特定の２ビットを反転する。反転回路４２０４はデータ中の特定の２ビットを反転して、反転データを生成する。そしてシンドローム生成回路４２０３が、反転データと対応するＥＣＣデータを用いてシンドロームを生成する。そのシンドロームよりデータエラー訂正／検出回路４２０５が２ビットエラーでデータ訂正不能で判別し、データ無効と判別する。これよりデータ無効としてデータ初期化とする。
【００９４】
データ初期化してメディア１１４からデータを書き込む場合、反転回路４２０７は、ホストシステム１１５から受信するデータ（一旦、メモリ／ＲＯＭ１０５に格納されるデータ）と反転指示レジスタ４２０１内の反転する２ビットを特定する特定情報を読み込み、データ中の特定の２ビットを反転する。反転回路４２０７はデータ中の特定の２ビットを反転して、反転データを生成する。反転回路４２０７が反転させるデータ中の特定の２ビットは、反転回路４２０４が反転させるデータ中の特定の２ビットと同一である。反転回路４２０７は反転データをＥＣＣ生成回路４２０６に出力する。ＥＣＣ生成回路４２０６は、反転データに対応するＥＣＣデータ（以下、反転後ＥＣＣデータという。）を生成して、その生成したＥＣＣデータをバッファメモリ４２０２に出力する。メモリ／ＲＯＭ１０５に格納されるデータは、ＣＰＵの制御に基づいて、バッファメモリ４２０２に出力される。そして磁気ヘッド１１２がメディア１１４にデータと反転後ＥＣＣデータを書き込む。メディア１１４からデータを読み出す場合に、反転回路４２０４が反転データを生成している。そのためデータ読み出して無効化した後に、メディア１１４にデータの特定の２ビットを再度反転して書き込んだデータは正常にメディア１１４から読み出しが可能である。
【００９５】
本実施例において、反転回路４２０４、４２０７はデータ中の２ビットを反転してデータの無効化を行ったが、これに限定されるものではなく、データエラー訂正／検出回路４２０５がデータ訂正をできなくなくようにデータ中の複数ビットを反転すればよい。つまりデータ中で反転させるビットの数は２よりも多くてもよい。
【００９６】
なおＥＣＣの訂正不能となるパターンの数は、反転させるビットが２ビット以上重ならない異なる組み合わせが本実施例におけるデータ初期化処理が可能な回数に相当する。
【００９７】
図１５は本実施例に係るデータ初期化を行ってメディア１１４からのデータ読み出しを示す概略図であり、図１５を用いて本実施例におけるデータの読み出しについて説明する。
【００９８】
磁気ヘッド１１２がデータＸを読み出し（ステップ１５０１）、またそのデータＸに対応するＥＣＣデータＡを読み出す（ステップ１５０３）。反転回路４２０４がデータＸ中の特定の２ビットを反転して、反転データＹを生成する（ステップ１５０２）。ここでＥＣＣデータＡは、前回の書込み時に反転回路４２０７（ステップ１６０２）を通過したデータから生成されたＥＣＣデータである。シンドローム生成回路４２０３は、データＸと反転データＡを用いてオール０で正常データとなるシンドロームを生成する（ステップ１５０４）。データエラー訂正／検出回路４２０５は、シンドロームが「オール０」か否かを判別する（ステップ１５０５）。データエラー訂正／検出回路４２０５がシンドロームが「オール０」であると判別する場合（ステップ１５０５  ＹＥＳ）、ＣＰＵ１０４は、インタフェース部１０３を介して、データＸをホストシステム１１５に出力する（ステップ１５０８）。データエラー訂正／検出回路４２０５がシンドロームが「オール０」でないと判別する場合（ステップ１５０５  ＮＯ）、データエラー訂正／検出回路４２０５はデータエラーを検出し、シングルビットエラーなどの訂正可能なシンドロームか否か判別する（ステップ１５０６）。データエラー訂正／検出回路４２０５が検出したデータエラーが訂正可能である場合（ステップ１５０６  ＹＥＳ）、データエラー訂正／検出回路４２０５はデータエラーを訂正する（ステップ１５０７）。ＣＰＵ１０４は、インタフェース部１０３を介して、ステップ１５０７においてデータエラー訂正したデータＸをホストシステム１１５に出力する（ステップ１５０８）。データエラー訂正／検出回路４２０５が検出したデータエラーが訂正可能でない場合（ステップ１５０６  ＮＯ）、ＣＰＵ１０４はデータが多ビットエラーであると判別しデータ無効とする（ステップ１５０９）。
【００９９】
図１６は本実施例に係るデータ初期化を行ってメディア１１４へのデータ書き込みを示す概略図であり、図１６を用いて本実施例におけるデータの書き込みについて説明する。
【０１００】
メディア１１４にデータを書き込む場合、反転回路４２０７は書き込みデータＸより反転データを生成する（ステップ１６０１、１６０２）。ＥＣＣ生成回路４２０６は反転データから反転後ＥＣＣデータを生成する（ステップ１６０３）。そしてシンドローム生成回路４２０３は、オール０で正常データとなるシンドロームが生成できる事を示している（ステップ１６０４）。磁気ヘッド１１２がデータと反転後ＥＣＣデータＡをメディア１１４に書き込む。
【０１０１】
［３．４．データのビット反転設定処理］
図１７は本実施例に係るデータビット反転の設定処理を示すフローチャートである。制御部１４０１がホストシステム１１５からデータの一部を反転してデータを無効化するデータ無効化コマンドを受領する（ステップＳ１７０１）。ハードディスクコントローラ１４０２は、データ中の２ビットをＯＮに設定する（ステップＳ１７０２）。本実施例においてデータの長さは６４ビットであり、そのデータに対応するＥＣＣデータの長さは８ビットである。ハードディスクコントローラ１４０２はＥＣＣデータの８ビット中の２ビットをＯＮに設定する。ここでＯＮに設定するということはＥＣＣデータ中のビットで反転させる候補のビットを選択することを意味する。ＣＰＵ１０４は、ＯＮに設定した２ビットが過去にデータ初期化するためにＯＮに設定した２ビットの組か否かを判別する（ステップＳ１７０３）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去に設定した２ビットの組でない場合（ステップＳ１７０３  ＮＯ）、ＣＰＵ１０４はステップＳ１７０２でＯＮに設定した２ビットを反転して反転データを生成する特定情報を決定する（ステップＳ１７０５）。そしてＣＰＵ１０４は反転指示レジスタ４２０１に決定した特定情報を書き込む（ステップＳ１７０６）。ＣＰＵ１０４がＯＮに設定した２ビットの組が、過去にＯＮ設定した２ビットの組である場合（ステップＳ１７０３  ＹＥＳ）、ＣＰＵ１０４は過去にＯＮ設定していないデータ中の２ビットの組を選択して特定情報を決定する（ステップＳ１７０４）。そしてＣＰＵ１０４は反転指示レジスタ８２０１に決定した特定情報を書き込む（ステップＳ１７０６）。
【０１０２】
特定情報はデータ中において反転する２ビットを特定する情報であって６４ビットより構成される情報である。特定情報中の反転する２ビットを指定するビットは「１」に設定される。反転指示レジスタ４２０１に特定情報が書き込まれるということは、オール０でなく、６４ビット中２ビットが「１」のデータが反転指示レジスタ４２０１に書き込まれるということである。
【０１０３】
反転指示レジスタ４２０１は、過去にデータ初期化するために書き込み、データ初期化に用いた特定情報も履歴として記憶している。そして現在データ初期化のために使用する特定情報を特定するためのフラグも有している。従いステップＳ１７０３において、ＣＰＵ１０４は過去にデータ初期化に用いた特定情報の履歴を参照して、ＯＮに設定した２ビットが過去にＯＮに設定した２ビットの組か否かを判別する。ステップＳ１７０６においてＣＰＵ１０４が反転指示レジスタ４２０１に特定情報を書き込んだら、その書き込んだ特定情報に対応するフラグをＯＮにし、ＯＮになっていたフラグが存在すればそのフラグをＯＦＦにする。
【０１０４】
［３．５．データ読み出し処理］
図１８は本実施例に係るデータ読み出し処理を示すフローチャートである。
【０１０５】
制御部１４０１（より具体的には制御部１４０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ読み出しコマンドを受領する（ステップＳ１８０１）。データ読み出しコマンドは、Ｗ番地のデータを読み出すことを示すものであって、Ｗ番地にＬＢＡの方式でデータアクセスすることを制御部１４０１に命令するコマンドである。
【０１０６】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１８０２）。ＣＰＵ１０４がＷ番地のデータを読み出せる位置に磁気ヘッド１０９をシーク、及び回転待ちを行ったら、磁気ヘッド１０９が、ＣＰＵ１０４による動作制御に基づいて、データとそのデータに対応するＥＣＣデータをバッファメモリ４２０２に読み出す（ステップＳ１８０３）。
【０１０７】
そしてＣＰＵ１０４は、反転指示レジスタ４２０１に反転データを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ１８０４）。反転指示レジスタ４２０１に特定情報が書き込まれていない場合の初期値は、オール０のデータがセットされている。図１８に記載のデータ書き込み処理を示すフローチャートにおいて、反転指示レジスタ４２０１にオール０がセットされていることは「反転指示レジスタ＝０」と示す。
【０１０８】
ＣＰＵ１０４が反転指示レジスタ４２０１に特定情報が書き込まれていないと判別する場合（ステップＳ１８０４  ＹＥＳ）、反転回路４２０４は全てのビットが“０”のため、バッファメモリ２０２から読み出したデータをどのビットも反転することなく、そのままシンドローム生成回路４２０３に出力する（ステップＳ１８０６）。反転回路４２０４は、バッファメモリ４２０２からデータを読み出し、また反転レジスタ４２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路４２０４はＥＣＣデータのどのビットも反転することなく、データをシンドローム生成回路４２０３に出力する。
【０１０９】
ＣＰＵ１０４が反転指示レジスタ４２０１に特定情報が設定されていると判別した場合（ステップＳ１８０４  ＮＯ）、反転回路４２０４はデータ中の特定の２ビットを反転して反転データを生成する（ステップＳ１８０５）。反転回路４２０４は、バッファメモリ４２０２からデータを読み出す。また反転回路４２０４は、反転レジスタ４２０１より書き込まれている特定情報を読み出す。反転回路４２０４は特定情報が示すデータ中の２ビットを反転し反転データを生成し、反転データをシンドローム生成回路４２０３に出力する。
【０１１０】
シンドローム生成回路４２０３は、バッファメモリ４２０２からＥＣＣデータを読み出す。またシンドローム生成回路４２０３は、反転回路４２０４からデータ（ステップＳ１８０６の場合）または反転データ（ステップＳ１８０５の場合）を入力される。そしてシンドローム生成回路４２０３は、データ（または反転データ）とそのデータに対応するＥＣＣデータとからシンドロームを生成する（ステップＳ１８０７）。
【０１１１】
データエラー訂正／検出回路４２０５は、シンドロームが「オール０」か否かを判別する（ステップＳ１８０８）。データエラー訂正／検出回路４２０５がシンドロームが「オール０」であると判別する場合（ステップＳ１８０８  ＹＥＳ）、データエラー訂正／検出回路４２０５はデータが正常であると判別する（Ｓ１８１０）。データエラー訂正／検出回路４２０５がシンドロームが「オール０」でないと判別する場合（ステップＳ１８０８  ＮＯ）、データエラー訂正／検出回路４２０５はデータにエラーがあることを検出し、そのデータエラーを訂正可能か否か判別する（ステップＳ１８０９）。
【０１１２】
データエラー訂正／検出回路４２０５がデータエラーを訂正可能と判別する場合（ステップＳ１８０９  ＹＥＳ）、データエラー訂正／検出回路４２０５はデータエラーを訂正して訂正データを生成する（ステップＳ１８１１）。またデータエラー訂正／検出回路４２０５はＣＰＵ１０４に対して訂正が発生した旨を通知する（ステップＳ１８１１）。データエラー訂正／検出回路４２０５がデータエラーを訂正可能ではないと判別する場合（ステップＳ１８０９  ＮＯ）、データエラー訂正／検出回路４２０５はＣＰＵ１０４に対して訂正不可能なＥＣＣエラーの旨を通知する（ステップＳ１８１２）。
【０１１３】
ＣＰＵ１０４は、ホストシステム１１５から受領したデータ読み出しコマンドに対するデータの読み出し結果を集約する（ステップＳ１８１３）。ＣＰＵ１０４が集約したデータ読み出し結果より、以下の解析を行いデータ読み出し処理を終了する。
【０１１４】
シンドローム生成回路４２０３が、シンドロームが「オール０」か否か判別する（ステップＳ１８１４）。シンドロームが「オール０」であると判別する場合（ステップＳ１８１４  ＹＥＳ）、制御部１４０１はインタフェース部１０３よりデータをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ１８１５）。シンドローム生成回路４２０３が、シンドロームが「オール０」でないと判別する場合（ステップＳ１８１４  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路４２０５からデータエラーの訂正が発生した旨の通知を受けたか否か判別する（ステップＳ１８１６）。ＣＰＵ１０４が、データエラー訂正／検出回路４２０５からデータエラーの訂正が発生した旨の通知を受けたと判別する場合（ステップＳ１８１６  ＹＥＳ）、制御部１４０１はインタフェース部１０３より訂正したデータをホストシステム１１５に出力してデータ読み出し処理を終了する（ステップＳ１８１７）。ＣＰＵ１０４が、データエラー訂正／検出回路４２０５からデータエラーの訂正が発生した旨の通知を受けていないと判別する場合（ステップＳ１８１６  ＮＯ）、ＣＰＵ１０４は、データエラー訂正／検出回路４２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたか否か判別する（ステップＳ１８１８）。データエラー訂正／検出回路４２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けていないと判別する場合（ステップＳ１８１８  ＮＯ）、制御部１４０１はホストシステム１１５にデータを出力せず、タイムアウトエラーの旨の通知をホストシステムに出力して、データ読み出し処理を終了する（ステップＳ１８１９）。データエラー訂正／検出回路４２０５から訂正不可能なＥＣＣエラーが発生した旨の通知を受けたと判別する場合（ステップＳ１８１８  ＹＥＳ）、ＣＰＵ１０４はデータ読み出しをリトライするか否かを判別する（ステップＳ１８２０）。ＣＰＵ１０４がデータ読み出しをリトライすると判別する場合（ステップＳ１８２０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１８０２）。ＣＰＵ１０４がデータ読み出しをリトライしないと判別した場合（ステップＳ１２２０  ＮＯ）、ＣＰＵ１０４はインタフェース部１０３を介してリードデータがＥＣＣエラーである旨、ホストシステム１１５に通知してデータ読み出し処理を終了する（ステップＳ１８２１）。
【０１１５】
［３．６．データ書き込み処理］
図１９は本実施例に係るデータ書き込み処理を示すフローチャートである。
【０１１６】
制御部１４０１（より具体的には制御部１４０１のＣＰＵ１０４がインタフェース部１０３を介して）が、ホストシステム１１５からデータ書き込みコマンドを受領する（ステップＳ１９０１）。データ書き込みコマンドは、Ｗ番地にデータを書き込むことを示すものであって、Ｗ番地にＬＢＡの方式でデータアクセスすることを制御部１４０１に命令するコマンドである。また制御部１４０１は書き込みデータをインタフェース部１０３を介して受信し、メモリ／ＲＯＭ１０５に書き込みデータを格納する。
【０１１７】
ＣＰＵ１０４は、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１９０２）。
【０１１８】
ＣＰＵ１０４は、反転指示レジスタ４２０１に反転データを生成するための特定情報が書き込まれているか否かを判別する（ステップＳ１９０３）。ＣＰＵ１０４が反転指示レジスタ４２０１に特定情報が書き込まれていないと判別する場合（ステップＳ１９０３  ＹＥＳ）、反転回路４２０７はデータをそのままＥＣＣ生成回路４２０６に出力する。そしてＥＣＣ生成回路４２０６がそのデータからＥＣＣデータを生成する（ステップＳ１９０５）。反転回路４２０７には、ＣＰＵ１０４の制御によりメモリ／ＲＯＭ１０５からデータが入力される。また反転回路４２０７は反転指示レジスタ８２０１から特定情報が書き込まれていない場合にセットされている「オール０」のデータを読み出す。反転回路４２０７はデータのどのビットも反転することなく、データをＥＣＣ生成回路４２０６に出力する。ＥＣＣ生成回路４２０６は、そのデータからＥＣＣデータを生成する。
【０１１９】
ＣＰＵ１０４が反転指示レジスタ４２０１に特定情報が設定されていると判別した場合（ステップＳ１９０３  ＮＯ）、反転回路４２０７はデータ中の特定の２ビットを反転して反転データを生成するし、その反転生成回路４２０６は、反転データから反転後ＥＣＣデータを生成する（ステップＳ１９０４）。反転回路４２０７には、ＣＰＵ１０４の制御によりメモリ／ＲＯＭ１０５からデータが入力される。また反転回路４２０７は、反転レジスタ４２０１より書き込まれている特定情報を読み出す。反転回路４２０７は特定情報が示すデータ中の２ビットを反転して、反転データを生成し、ＥＣＣ生成回路４２０６に出力する。ＥＣＣ生成回路４２０６は反転データから反転後ＥＣＣデータを生成する。
【０１２０】
そしてＥＣＣ生成回路４２０６は生成したＥＣＣデータ（ステップＳ１９０５の場合）または反転後ＥＣＣデータ（ステップＳ１９０４の場合）をバッファメモリ４２０２に書き込み、ＣＰＵ１０４はメモリ／ＲＯＭ１０５上のデータをバッファメモリ４２０２に書き込む（ステップＳ１９０６）。ＣＰＵ１０４はバッファメモリ８２０２に格納するデータとＥＣＣデータ（または反転後ＥＣＣデータ）をメディア１１４のＷ番地に書き込む（ステップＳ１９０７）。ＣＰＵ１０４はＬＢＡの方式でアクセスして、ＡＤ／ＤＡ変換部１０６、リードチャネル１０７を介して、データとＥＣＣデータ（または反転後ＥＣＣデータ）をメディア１１４のＷ番地に書き込む。
【０１２１】
ＣＰＵ１０４は、データとＥＣＣデータ（または反転後ＥＣＣデータ）をメディア１１４のＷ番地に正常に書き込めたか否かを判別する（ステップＳ１９０８）。ＣＰＵ１０４がデータとＥＣＣデータ（または反転後ＥＣＣデータ）をメディア１１４のＷ番地に正常に書き込めたと判別する場合（ステップＳ１９０８  ＹＥＳ）、制御部１４０１はインタフェース部１０３よりデータ書き込み処理が正常に行われた旨をホストシステム１１５に通知して、データ書き込み処理を終了する（ステップＳ１９０９）。ＣＰＵ１０４がデータとＥＣＣデータ（または反転後ＥＣＣデータ）をメディア１１４のＷ番地に正常に書き込めなかったと判別する場合（ステップＳ１９０８  ＮＯ）、ＣＰＵ１０４はデータ書き込みをリトライするか否かを判別する（ステップＳ１９１０）。ＣＰＵ１０４がデータ書き込みをリトライすると判別する場合（ステップＳ１９１０  ＹＥＳ）、ＣＰＵ１０４は再び、磁気ヘッド１０９の位置を確定するために、シーク、及び回転待ちの制御を行う（ステップＳ１９０２）。ＣＰＵ１０４がデータ書き込みをリトライしないと判別する場合（ステップＳ１９１０  ＮＯ）、制御部１４０１はインタフェース部１０３よりデータ書き込み処理を失敗した旨をホストシステム１１５に通知して、データ書き込み処理を終了する。
【０１２２】
上記実施例におけるハードディスクを上位概念で記載すると、本実施例にかかるハードディスク、およびデータ初期化方法は以下のように記載することができる。
【０１２３】
ホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置において、該データを記憶する記億部と、該データまたは該データに付随するエラー訂正コードを構成するビットのうち、該データの読み出し又は書き込みをする際に反転する複数のビットを示す特定情報を記憶するレジスタ部と、該データの読み出し及び書き込みを制御する制御部であって、該ホストシステムから初期化命令を受けた後、該レジスタに記憶する特定情報を用いて、該記憶部に記憶されたデータまたはデータに付随するエラー訂正コードの複数ビットを反転して読み出し、データ初期化後にデータを書き込む場合に、該レジスタ部に記憶した特定情報を用いて、書き込むデータまたはデータに付随するエラー訂正コードの該複数ビットを反転して書き込む制御部とを備えることを特徴とする。
【０１２４】
さらに上記の不揮発性記憶装置において、該レジスタ部は該特定情報を複数有しており、該制御部は、再び該ホストシステムから初期化命令を受けると、該レジスタ部に記憶する他の特定情報に切り替えて、データまたはデータに付随するエラー訂正コードの該複数ビットを反転して読み出し、または書き込むことを特徴とする。
【０１２５】
またホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置において、該データを記憶する記億部と、該データまたは該データに付随するエラー訂正コードを構成するビットのうち、反転処理する複数のビットを示す特定情報を複数記憶するレジスタ部と、該レジスタに記憶する特定情報を用いて、該記憶部に記憶されたデータまたはデータに付随するエラー訂正コードを反転処理して読み出し、または書き込む制御部とを有し、該ホストシステムから初期化命令を受けると、該レジスタ部に記憶する他の特定情報に切り替えて、データまたはデータに付随するエラー訂正コードを反転処理して読み出し、または書き込むことを特徴とする。
さらに上記に記載の不揮発性記憶装置において、該制御部は、データまたはデータに付随するエラーチェックコードを構成するビットにおいて、該特定情報を用いて、エラー訂正コードによって訂正不可能な数の複数ビットを反転して読み出し、または書き込むことを特徴とする。
【０１２６】
またホストシステムからの初期化命令に基づいてデータ初期化を行う不揮発性記憶装置のデータ初期化方法において、該不揮発性記憶装置の記憶部に記憶されたデータ、または該データに付随するエラー訂正コードを構成するビットにおいて、データの読み出し又は書き込みをする際に反転するビットを示す特定情報を該不揮発性記憶部のレジスタ部に記憶し、該データの読み出し及び書き込を行い、該ホストシステムから初期化命令を受けた後、該レジスタに記憶する特定情報を用いて、該記憶部に記憶されたデータまたはデータに付随するエラー訂正コードの複数ビットを反転して読み出し、データ初期化後にデータを書き込む場合に、該レジスタ部に記憶した特定情報を用いて、書き込むデータまたはデータに付随するエラー訂正コードの該複数ビットを反転して書き込むことを特徴とする。
【符号の説明】
【０１２７】
１００…ハードディスク
１０１…制御部
１０２…ハードディスクコントローラ
１０３…インタフェース部
１０４…ＣＰＵ
１０５…メモリ／ＲＯＭ
１０６…ＡＤ／ＤＡ変換部
１０７…ＲＤＣ
１０８…モータ制御部
１０９…ヘッドＩＣ
１１０…ＶＣＭ
１１１…ヘッドアーム
１１２…磁気ヘッド
１１３…スピンドルモータ
１１４…メディア
１１５…ホストシステム
２０１…反転指示レジスタ
２０２…バッファメモリ
２０３…シンドローム生成回路
２０４…反転回路
２０５…データエラー訂正／検出回路
２０６…ＥＣＣ生成回路
２０７…反転回路
２０８…ＤＭＡ制御部
８０１…制御部
８０２…ハードディスクコントローラ
８２０１…反転指示レジスタ
８２０２…バッファメモリ
８２０３…シンドローム生成回路
８２０４…反転回路
８２０５…データエラー訂正／検出回路
８２０６…ＥＣＣ生成回路
８２０７…反転回路
８２０８…ＤＭＡ制御部
１４０１…制御部
１４０２…ハードディスクコントローラ
４２０１…反転指示レジスタ
４２０２…バッファメモリ
４２０３…シンドローム生成回路
４２０４…反転回路
４２０５…データエラー訂正／検出回路
４２０６…ＥＣＣ生成回路
４２０７…反転回路
４２０８…ＤＭＡ制御部
【図１】
0005600963.tif 000002
【図２】
0005600963.tif 000003
【図３】
0005600963.tif 000004
【図４】
0005600963.tif 000005
【図５】
0005600963.tif 000006
【図６】
0005600963.tif 000007
【図７】
0005600963.tif 000008
【図８】
0005600963.tif 000009
【図９】
0005600963.tif 000010
【図１０】
0005600963.tif 000011
【図１１】
0005600963.tif 000012
【図１２】
0005600963.tif 000013
【図１３】
0005600963.tif 000014
【図１４】
0005600963.tif 000015
【図１５】
0005600963.tif 000016
【図１６】
0005600963.tif 000017
【図１７】
0005600963.tif 000018
【図１８】
0005600963.tif 000019
【図１９】
0005600963.tif 000020