(57)【要約】【課題】データからエラー検出コードを生成した直後に、データおよびエラー検出コードを磁気ディスクに書き込む。【解決手段】本発明に係る磁気ディスクコントローラは、インターフェースと、磁気ディスクの１セクタに書き込むべきデータを一時的に格納する第１バッファおよび第２バッファと、磁気ディスクに印加する信号を表す変調データに変調する変調部と、第１バッファおよび第２バッファの少なくとも一方のバッファに書き込んでいる間に、他方のバッファからデータを読み出し、変調部を用いて変調してから再度他方のバッファに格納するバッファ制御部とを備え、変調部と第１バッファおよび第２バッファとの間のデータ幅Ｍは、インターフェースと第１バッファおよび第２バッファとの間のデータ幅Ｎの２倍以上である。【選択図】図１
2008192211.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスクへのデータの書き込みを制御する磁気ディスクコントローラであって、
前記磁気ディスクへ書き込むべきデータを受け渡すインターフェースと、
前記インターフェースから受け取った、前記磁気ディスクの少なくとも１セクタに書き込むべきデータを一時的に、それぞれ格納する第１バッファおよび第２バッファと、
前記第１バッファおよび前記第２バッファに格納されたデータを、前記磁気ディスクに印加する信号を表す変調データに変調する変調部と、
前記インターフェースから受け取ったデータを、前記第１バッファおよび前記第２バッファの少なくとも一方のバッファに書き込んでいる間に、他方のバッファから前記データを読み出し、前記変調部を用いて変調してから再度前記他方のバッファに格納するバッファ制御部と
を備え、
前記変調部と前記第１バッファおよび前記第２バッファとの間のデータ幅Ｍは、前記インターフェースと前記第１バッファおよび前記第２バッファとの間のデータ幅Ｎの２倍以上である
磁気ディスクコントローラ。
【請求項２】
前記変調部は、
前記データを変調する変調コア部と、
前記第１バッファまたは前記第２バッファから前記データ幅Ｍごとに前記データを読み出し、前記データ幅Ｍよりも小さいデータ幅毎に分割して前記変調コア部へ出力する読み出しキャッシュと、
前記変調コア部から複数回に分けて受け取ったデータをまとめて、前記データ幅Ｍのデータ毎に前記第１バッファまたは前記第２バッファに書き込む書き込みキャッシュと
を有する請求項１に記載の磁気ディスクコントローラ。
【請求項３】
前記第１バッファおよび前記第２バッファから前記変調部へのデータ読み出し周期および前記変調部から前記第１バッファおよび前記第２バッファへのデータ書き込み周期の和が、前記インターフェースから前記第１バッファおよび前記第２バッファへのデータ書き込み周期と等しい
請求項１に記載の磁気ディスクコントローラ。
【請求項４】
少なくとも１セクタ分の前記変調データを一時的に格納する第３バッファと、
前記第３バッファから前記変調データを読み出して前記磁気ディスクに書き込む書き込み制御部
をさらに備え、
前記第１バッファおよび前記第２バッファから前記変調部へのデータ読み出し周期および前記変調部から前記第１バッファおよび前記第２バッファへのデータ書き込み周期の和が、前記第３バッファから前記書き込み制御部へのデータの読み出し周期と等しい
請求項１に記載の磁気ディスクコントローラ。
【請求項５】
前記バッファ制御部は、前記第１バッファを前記第２バッファと同様に機能させ、前記第２バッファを前記第３バッファと同様に機能させ、前記第３バッファを前記第１バッファと同様に機能させることにより、前記第１バッファ、前記第２バッファ、および前記第３バッファをローテーションさせて利用する
請求項４に記載の磁気ディスクコントローラ。
【請求項６】
磁気ディスクへのデータの書き込みを制御する方法であって、
前記磁気ディスクへ書き込むべきデータを受け渡すインターフェースから受け取った、前記磁気ディスクの少なくとも１セクタに書き込むべきデータを一時的に、第１バッファおよび第２バッファのそれぞれに格納する段階と、
前記第１バッファおよび前記第２バッファに格納されたデータを、前記磁気ディスクに印加する信号を表す変調データに変調部において変調する変調段階と、
前記インターフェースから受け取ったデータを、前記第１バッファおよび前記第２バッファの少なくとも一方のバッファに書き込んでいる間に、他方のバッファから前記データを読み出し、前記変調段階において変調されてから再度前記他方のバッファに格納するバッファ制御段階と
を備え、
前記変調部と前記第１バッファおよび前記第２バッファとの間のデータ幅Ｍは、前記インターフェースと前記第１バッファおよび前記第２バッファとの間のデータ幅Ｎの２倍以上である
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気ディスクコントローラおよび方法に関する。特に、本発明は、磁気ディスクへのデータの書き込みを制御する磁気ディスクコントローラおよび方法に関する。
【背景技術】
【０００２】
特許文献１には、磁気ディスク装置からセクタ単位のデータを読み出す場合に、セクタのデータを転送する前に当該セクタのＩＤ情報を転送する磁気ディスクコントローラについて提案されている。
【特許文献１】特開平７−１４１１１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
磁気ディスクコントローラにおいては、ホストからのデータを磁気ディスクに書き込む場合に、データが書き込まれるべきセクタのアドレスを取得して、取得したアドレスと当該セクタに書き込むべきデータとからエラー検出コードを算出する。従って、セクタのアドレスを取得した直後に、データおよびエラー検出コードを当該セクタに書き込むことができない。そのため、当該セクタが磁気ヘッドの位置に再び来るまで、データおよびエラー検出コードの書き込みに待ち時間が生じ、データおよびエラー検出コードの書き込みが遅延する。
【０００４】
そこで本発明は、上記課題を解決することができる磁気ディスクコントローラおよび方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の第１の形態においては、磁気ディスクへのデータの書き込みを制御する磁気ディスクコントローラであって、磁気ディスクへ書き込むべきデータを受け渡すインターフェースと、インターフェースから受け取った、磁気ディスクの少なくとも１セクタに書き込むべきデータを一時的に、それぞれ格納する第１バッファおよび第２バッファと、第１バッファおよび第２バッファに格納されたデータを、磁気ディスクに印加する信号を表す変調データに変調する変調部と、インターフェースから受け取ったデータを、第１バッファおよび第２バッファの少なくとも一方のバッファに書き込んでいる間に、他方のバッファからデータを読み出し、変調部を用いて変調してから再度他方のバッファに格納するバッファ制御部とを備え、変調部と第１バッファおよび第２バッファとの間のデータ幅Ｍは、インターフェースと第１バッファおよび第２バッファとの間のデータ幅Ｎの２倍以上である。
【０００６】
また、本発明の第２の形態においては、磁気ディスクへのデータの書き込みを制御する方法であって、磁気ディスクへ書き込むべきデータを受け渡すインターフェースから受け取った、磁気ディスクの少なくとも１セクタに書き込むべきデータを一時的に、第１バッファおよび第２バッファのそれぞれに格納する段階と、第１バッファおよび第２バッファに格納されたデータを、磁気ディスクに印加する信号を表す変調データに変調部において変調する変調段階と、インターフェースから受け取ったデータを、第１バッファおよび第２バッファの少なくとも一方のバッファに書き込んでいる間に、他方のバッファからデータを読み出し、変調段階において変調されてから再度他方のバッファに格納するバッファ制御段階とを備え、変調部と第１バッファおよび第２バッファとの間のデータ幅Ｍは、インターフェースと第１バッファおよび第２バッファとの間のデータ幅Ｎの２倍以上である。
【０００７】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【０００８】
本発明によれば、データからエラー検出コードを生成した直後に、データおよびエラー検出コードを磁気ディスクに書き込むことができる。
【発明を実施するための最良の形態】
【０００９】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
図１は、本発明の一実施形態に係る磁気ディスクコントローラ１０の機能構成の一例を示す。磁気ディスクコントローラ１０は、ホスト４０からデータを受け取って、磁気ディスク２０へ当該データを書き込む。すなわち、磁気ディスクコントローラ１０は、磁気ディスク２０へのヘッド３０を介したデータの書き込みを制御する。ここで、ホスト４０は、ホストコンピュータであり、磁気ディスク２０を含む磁気ディスク装置のレジスタ群にアクセスすることにより、所定のコマンドの実行、およびデータの送受信の実行をする。なお、レジスタ群は、コントロール・ブロック・レジスタ群およびコマンド・ブロック・レジスタ群を含んでいてよい。
【００１１】
本実施形態に係る磁気ディスクコントローラ１０は、データからエラー検出コードを生成した直後に、データおよびエラー検出コードを磁気ディスクに書き込むことを目的とする。
【００１２】
磁気ディスクコントローラ１０は、読み出し制御部１００、インデックス検出部１０５、タイミング制御部１０７、書き込み制御部１１０、復調部１２０、アドレス取得部１２５、アドレス加算部１２７、アドレス生成部１３０、バッファ制御部１３５、バッファユニット１４０、エラー検出コード生成部１４５、変調部１５０、インターフェース１６０、および変調方式決定部１６５を備える。なお、ハードディスクは、磁気ディスク２０の一例である。
【００１３】
インターフェース１６０は、磁気ディスク２０へ書き込むべきデータを受け渡す。具体的には、インターフェース１６０は、磁気ディスク２０へ書き込むべきデータをホスト４０から受け取って、バッファ制御部１３５および変調方式決定部１６５に受け渡す。また、インターフェース１６０は、復調部１２０からデータを受け取って、ホスト４０に受け渡す。インデックス検出部１０５は、磁気ディスク２０のインデックスを、ヘッド３０を介して検出する。インデックス検出部１０５は、インデックスを検出したタイミングを示す信号をアドレス取得部１２５およびタイミング制御部１０７に供給する。
【００１４】
アドレス生成部１３０は、インデックス検出部１０５がインデックスを検出してからの時間に応じて、セクタの物理アドレスを順次生成する。具体的には、アドレス生成部１３０は、インデックス検出部１０５からインデックスを検出したタイミングを示す信号を、アドレス取得部１２５を介して受け取る。そして、アドレス生成部１３０は、磁気ディスク２０の回転に同期して、セクタの物理アドレスを順次生成する。アドレス生成部１３０は、生成した物理アドレスをエラー検出コード生成部１４５に順次供給する。アドレス取得部１２５は、読み出しデータが記録されている物理アドレスを取得する。アドレス取得部１２５は、取得した物理アドレスを、アドレス加算部１２７およびエラー検出コード生成部１４５に供給する。また、アドレス取得部１２５は、インデックス検出部１０５から受け取ったインデックスを検出したタイミングを示す信号をアドレス生成部１３０に供給する。
【００１５】
エラー検出コード生成部１４５は、複数の書き込みデータのエラーをそれぞれ検出するための複数のエラー検出コードを生成する。具体的には、エラー検出コード生成部１４５は、インデックス検出部１０５がインデックスを検出した後に、検出されたインデックスに後続する第１のセクタの第１物理アドレスと第１書き込みデータとを用いて、第１書き込みデータの第１のエラー検出コード（ＣＲＣコード）を生成する。また、エラー検出コード生成部１４５は、変調部１５０が変調したデータからエラー検出コードを生成してもよい。更に、エラー検出コード生成部１４５は、インデックス検出部１０５がインデックスを検出した後に、検出されたインデックスに後続する第１のセクタの第１物理アドレスと第１書き込みデータとを用いて、第１書き込みデータの第１のエラー訂正コード（ＥＣＣコード）を生成してもよい。
【００１６】
また、エラー検出コード生成部１４５は、検出されたインデックスに隣接する第１のセクタの第１物理アドレスと第１書き込みデータとを用いて、第１書き込みデータの第１のエラー検出コードを生成してもよい。また、エラー検出コード生成部１４５は、アドレス生成部１３０が磁気ディスク２０の回転に同期して生成した第１のセクタの第１物理アドレスと第１書き込みデータとを用いて、第１書き込みデータの第１のエラー検出コードを生成してもよい。そして、エラー検出コード生成部１４５は、アドレス生成部１３０が生成した第２のセクタの第２物理アドレスと第２書き込みデータとを用いて、第２書き込みデータの第２のエラー検出コードを更に生成する。エラー検出コード生成部１４５は、生成したエラー検出コードおよび／またはエラー訂正コードを、バッファ制御部１３５に供給する。
【００１７】
タイミング制御部１０７は、インデックス検出部１０５がインデックスを検出したタイミングに応じて、書き込み制御部１１０がデータを磁気ディスク２０に書き込むタイミングを制御する。書き込み制御部１１０は、タイミング制御部１０７に制御されたタイミングで、バッファ制御部１３５から受け取ったデータを、ヘッド３０を介して磁気ディスク２０に書き込む。具体的には、書き込み制御部１１０は、ヘッド３０を制御して、第１のセクタに更に後続する第２のセクタに、エラー検出コード生成部１４５が生成した第１のエラー検出コード、第１書き込みデータ、および第１物理アドレスを書き込ませる。
【００１８】
また、書き込み制御部１１０は、インデックス検出部１０５が検出したインデックスと反対の方向の第１のセクタに隣接する第２のセクタに、エラー検出コード生成部１４５が生成した第１のエラー検出コード、第１書き込みデータ、および第１物理アドレスを書き込ませる。そして、書き込み制御部１１０は、第２のセクタに更に後続する第３のセクタに、エラー検出コード生成部１４５が生成した第２のエラー検出コード、第２書き込みデータ、および第２物理アドレスを書き込ませる。更に、書き込み制御部１１０は、第１のセクタと反対の方向の第２のセクタに隣接する第３のセクタに、エラー検出コード生成部１４５が生成した第２のエラー検出コード、第２書き込みデータ、および第２物理アドレスを書き込ませる。
【００１９】
アドレス加算部１２７は、アドレス取得部１２５が取得した物理アドレスに予め定められた値を加算する。例えば、アドレス加算部１２７は、アドレス取得部１２５が取得した物理アドレスに"１"を加算する。なお、アドレス加算部１２７は、例えば、エラー検出コード生成部１４５においてエラー訂正コードおよび／またはエラー検出コードの生成に、予め定められた時間より長い時間がかかる場合には、アドレス取得部１２５が取得した物理アドレスに"１"を除く他の整数（例えば、"２"および"３"等の"１"より大きな整数）を加算してもよい。アドレス加算部１２７は、加算した結果を読み出し制御部１００に供給する。読み出し制御部１００は、アドレス加算部１２７が生成した物理アドレスのセクタから、データを読み出させる。また、読み出し制御部１００は、読み出したデータを復調部１２０に供給する。
【００２０】
バッファユニット１４０は、磁気ディスク２０に書き込むべきデータを一時的に格納するバッファを少なくとも１つ有する。バッファユニット１４０は、バッファ制御部１３５に制御されて、少なくとも１つのバッファに磁気ディスク２０に書き込むべきデータを一時的に格納させる。バッファユニット１４０は、バッファ制御部１３５にバッファに格納されているデータを供給する。
【００２１】
バッファ制御部１３５は、バッファユニット１４０が有するバッファへのデータの格納／読み出しを制御する。バッファ制御部１３５は、バッファユニット１４０から受け取ったデータを変調部１５０に供給する。そして、バッファ制御部１３５は、変調部１５０が変調したデータを、バッファユニット１４０が有するバッファに格納させる。また、バッファ制御部１３５は、エラー検出コード生成部１４５が生成したエラー検出コードを、バッファユニット１４０が有するバッファに格納する。バッファ制御部１３５は、バッファユニット１４０が有するバッファに格納されているデータを読み出して、書き込み制御部１１０に供給する。
【００２２】
変調方式決定部１６５は、磁気ディスク２０へ書き込むべきデータをインターフェース１６０から受け取る。そして、変調方式決定部１６５は、受け取ったデータから変調方式を決定する。なお、変調方式決定部１６５は、予め定められた変調方式を決定してもよい。磁気ディスク２０が有する複数のセクタに書き込むべき複数の書き込みデータを変調部１５０が変調するための変調方式を、複数の書き込みデータごとに決定する。具体的には、変調方式決定部１６５は、最小磁化反転間隔、最大磁化反転間隔、元データのビット長、および変調後のビット長のそれぞれを変更して、適切な変調方式を決定する。例えば、変調方式決定部１６５は、ＲＬＬコードを用いた変調方式を決定してよい。変調方式決定部１６５は、決定した変調方式を示す情報を変調部１５０に供給する。
【００２３】
変調部１５０は、磁気ディスク２０が有する複数のセクタに書き込むべき複数の書き込みデータを、磁気ディスク２０に印加する信号を表すデータに順次変調する。具体的には、変調部１５０は、変調方式決定部１６５が決定した変調方式を用いて、バッファ制御部１３５から受け取った元データであるデータを、エラー・レートが元データのままである場合よりも小さくなる他のデータ系列に符号化することにより変換する。変調部１５０は、変調したデータをバッファ制御部１３５およびエラー検出コード生成部１４５に供給する。復調部１２０は、読み出し制御部１００から受け取った、磁気ディスク２０に記録されている変調されたデータを変調前の元データに復調する。そして、復調部１２０は、復調したデータをインターフェース１６０に供給する。なお、変調部１５０とバッファ制御部１３５との間のデータ幅はＭであり、インターフェース１６０とバッファ制御部１３５との間のデータ幅はＮである。そして、データ幅Ｍは、データ幅Ｎの２倍以上であってよい。
【００２４】
本実施形態に係る磁気ディスクコントローラ１０によれば、エラー検出コード生成部１４５において生成されたエラー検出コードを、書き込み制御部１１０が第１のセクタに後続する第２のセクタに書き込むことができる。これにより、第１のセクタに第１のセクタのエラー検出コードを記録しないので、磁気ディスク２０が回転してヘッド３０が第１のセクタに再び来るまで待機することを要さない。従って、エラー検出コードを磁気ディスク２０に書き込むまでの時間を短縮することができる。
【００２５】
図２は、本実施形態に係る磁気ディスクコントローラ１０が磁気ディスク２０へデータを書き込む場合の一例を示す。本実施形態に係る磁気ディスクコントローラ１０は、インデックス検出部１０５が検出したインデックス２００に後続する第１のセクタ（例えば、物理アドレス"０"が対応づけられているセクタ２１４）の第１物理アドレス（例えば、物理アドレス"０"）と第１書き込みデータとを用いて生成した、第１書き込みデータの第１のエラー検出コードを、第１のセクタの次の物理アドレス"１"に対応するセクタ２１６に記録する。また、磁気ディスクコントローラ１０は、第１のセクタ２１４の次のセクタ２１６に、第１のセクタ２１４の第１書き込みデータおよび第１物理アドレスを書き込む。
【００２６】
なお、磁気ディスクコントローラ１０は、第１のセクタ（例えば、セクタ２１４）の次のセクタ２１６に第１のエラー検出コード、第１書き込みデータ、および第１物理アドレスを書き込むのではなく、セクタ２１４から予め定められた数だけ後のセクタ（例えば、セクタ２２０等）に、第１のエラー検出コード、第１書き込みデータ、および第１物理アドレスを書き込んでもよい。そして、磁気ディスクコントローラ１０は、セクタ２１０、セクタ２１２、セクタ２１６、セクタ２１８、およびセクタ２２０についても同様にしてデータを記録する。
【００２７】
図３は、本実施形態に係る変調部１５０の機能構成の一例を示す。変調部１５０は、読み出しキャッシュ１５２、変調コア部１５４、および書き込みキャッシュ１５６を有する。読み出しキャッシュ１５２は、バッファユニット１４０が有するバッファが格納しているデータを、データ幅Ｍごとにバッファ制御部１３５を介して読み出す。そして、読み出しキャッシュ１５２は、データ幅Ｍよりも小さいデータ幅ごとに分割して、読み出したデータを変調コア部１５４へ出力する。
【００２８】
変調コア部１５４は、データを変調する。変調コア部１５４は、変調方式決定部１６５が決定した変調方式を用いて、読み出しキャッシュ１５２から受け取ったデータを変調する。変調コア部１５４は、変調したデータを書き込みキャッシュ１５６に供給する。書き込みキャッシュ１５６は、変調コア部１５４から複数回に分けて受け取ったデータをまとめて、データ幅Ｍのデータごとにバッファユニット１４０が有するバッファに書き込む。また、書き込みキャッシュ１５６は、エラー検出コード生成部１４５に変調コア部１５４から受け取ったデータを供給する。
【００２９】
図４は、本実施形態に係るバッファユニット１４０の機能構成の一例を示す。バッファユニット１４０は、第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３を有する。第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３はそれぞれ、バッファ制御部１３５に制御されてデータを格納する。また、第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３はそれぞれ、バッファ制御部１３５に制御されてデータをバッファ制御部１３５に供給する。第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３はそれぞれ、インターフェース１６０から受け取った、磁気ディスク２０の少なくとも１セクタに書き込むべきデータを一時的に、それぞれ格納する。また、第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３はそれぞれ、少なくとも１セクタ分の変調データを一時的に格納する。
【００３０】
具体的には、第１バッファ１４１は、変調部１５０が変調した、磁気ディスク２０の第１のセクタに書き込むべき第１書き込みデータ、およびエラー検出コード生成部１４５が生成した、第１書き込みデータのための第１のエラー検出コードを格納する。具体的には、第１バッファ１４１は、変調部１５０が変調した第１書き込みデータを連続する記憶領域に格納した後、第１のエラー検出コードを連続する記憶領域に格納する。
【００３１】
また、第２バッファ１４２は、変調部１５０が変調した、磁気ディスク２０の第２のセクタに書き込むべき第２書き込みデータ、およびエラー検出コード生成部１４５が生成した、第２書き込みデータのための第２のエラー検出コードを格納する。具体的には、第２バッファ１４２は、磁気ディスク２０の第１のセクタに後続する第２のセクタに書き込むべき第２書き込みデータおよび第２のエラー検出コードを格納する。例えば、第２バッファは１４２、磁気ディスク２０の第１のセクタに隣接するセクタであって、第１のセクタに後続する第２のセクタに書き込むべき第２書き込みデータおよび第２のエラー検出コードを格納する。
【００３２】
第３バッファ１４３は、変調部１５０が変調した、磁気ディスク２０の第３のセクタに書き込むべき第３書き込みデータ、およびエラー検出コード生成部１４５が生成した、第３書き込みデータのための第３のエラー検出コードを格納する。具体的には、第３バッファ１４３は、磁気ディスク２０の第２のセクタに後続する第３のセクタに書き込むべき第３書き込みデータおよび第３のエラー検出コードを格納する。例えば、第３バッファは１４３、磁気ディスク２０の第２のセクタに隣接するセクタであって、第２のセクタに後続する第３のセクタに書き込むべき第３書き込みデータおよび第３のエラー検出コードを格納する。
【００３３】
係る場合において、バッファ制御部１３５は、第１の期間において、第１バッファ１４１が格納している第１書き込みデータおよび第１のエラー検出コードを磁気ディスク２０の第１のセクタに書き込ませることに並行して、変調部１５０が変調した第２書き込みデータおよびエラー検出コード生成部１４５が生成した第２のエラー検出コードを第２バッファ１４２に格納させる。また、バッファ制御部１３５は、第１バッファ１４１が格納している第１書き込みデータと、第１バッファ１４１が格納している第１のエラー検出コードとを、一部分ずつ交互に読み出して出力してもよい。そして、バッファ制御部１３５は、出力する第１書き込みデータおよび第１のエラー検出コードを磁気ディスク２０の第１のセクタに書き込ませる。係る場合において、エラー検出コード生成部１４５が生成した第１のエラー検出コードは、変調されることなく、第１バッファ１４１に格納されて磁気ディスク２０の第１のセクタに書き込まれてよい。
【００３４】
また、バッファ制御部１３５は、第１のエラー検出コードを予め定められたデータ量ずつ、予め定められた間隔で、第１書き込みデータに挿入しながら出力してもよい。例えば、バッファ制御部１３５は、第１書き込みデータのデータ量が５１２バイトの場合、第１のエラー検出コードを、５から１１の間隔で区切って、第１書き込みデータに挿入しながら出力する。また、バッファ制御部１３５は、第１書き込みデータのデータ量が１０２４バイトの場合、第１のエラー検出コードを、８から２２の間隔で区切って、第１書き込みデータに挿入しながら出力する。更に、バッファ制御部１３５は、第１書き込みデータのデータ量が４０９６バイトの場合、第１のエラー検出コードを、８から２０の間隔で区切って、第１書き込みデータに挿入しながら出力する。
【００３５】
更に、バッファ制御部１３５は、第１の期間において、第１バッファ１４１が格納している第１書き込みデータおよび第１のエラー検出コードを磁気ディスク２０の第１のセクタに書き込ませること、および変調部１５０が変調した第２書き込みデータおよびエラー検出コード生成部１４５が生成した第２のエラー検出コードを第２バッファ１４２に格納させることに並行して、変調部１５０が変調する前の第３書き込みデータを第３バッファ１４３に格納させる。そして、バッファ制御部１３５は、第１の期間の次の第２の期間において、第２バッファ１４２が格納している第２書き込みデータおよび第２のエラー検出コードを磁気ディスク２０の第２のセクタに書き込ませることに並行して、変調部１５０が変調した第３書き込みデータおよびエラー検出コード生成部１４５が生成した第３のエラー検出コードを、変調部１５０が変調する前の第３書き込みデータに代えて第３バッファ１４３に格納させる。
【００３６】
なお、変調方式決定部１６５は、変調部１５０が変調する前の第３書き込みデータを第３バッファ１４３が格納することに並行して、第３書き込みデータを受け取り、第３書き込みデータを変調部１５０が変調するための変調方式を決定する。変調方式決定部１６５が決定する変調方式は、例えばＲＺ方式、ＲＢ方式、ＮＲＺ方式、ＰＭ方式、ＰＥ方式、およびＦＭ方式等であってよい。そして、変調部１５０は、第１バッファ１４１および第２バッファ１４２に格納されたデータを、磁気ディスク２０に印加する信号を表す変調データに変調する。
【００３７】
係る場合において、バッファ制御部１３５は、インターフェース１６０から受け取ったデータを、第１バッファ１４１および第２バッファ１４２の少なくとも一方のバッファに書き込んでいる間に、他方のバッファからデータを読み出す。続いて、バッファ制御部１３５は、変調部１５０を用いて読み出したデータを変調してから再度他方のバッファに格納する。この場合において、変調部１５０と第１バッファ１４１および第２バッファ１４２との間のデータ幅Ｍは、インターフェース１６０と第１バッファ１４１および第２バッファ１４２との間のデータ幅Ｎの２倍以上であってよい。
【００３８】
また、変調部１５０の読み出しキャッシュ１５２は、第１バッファ１４１または第２バッファ１４２からデータ幅Ｍごとにデータを読み出す。そして、読み出しキャッシュ１５２は、データ幅Ｍよりも小さいデータ幅ごとに読み出したデータを分割して、変調コア部１５４へ出力する。続いて、書き込みキャッシュ１５６は、変調コア部１５４から複数回に分けて受け取ったデータをまとめる。そして、書き込みキャッシュ１５６は、まとめたデータを、データ幅Ｍのデータごとに第１バッファ１４１または第２バッファ１４２に書き込む。
【００３９】
この場合において、第１バッファ１４１および第２バッファ１４２から変調部１５０へのデータ読み出し周期および変調部１５０から第１バッファ１４１および第２バッファ１４２へのデータ書き込み周期の和が、インターフェース１６０から第１バッファ１４１および第２バッファ１４２へのデータ書き込み周期と等しくなるべく、磁気ディスクコントローラ１０は設計される。
【００４０】
そして、書き込み制御部１１０は、第３バッファ１４３から変調データを読み出して、読み出した変調データを磁気ディスク２０に書き込む。係る場合において、第１バッファ１４１および第２バッファ１４２から変調部１５０へのデータ読み出し周期および変調部１５０から第１バッファ１４１および第２バッファ１４２へのデータ書き込み周期の和が、第３バッファ１４３から書き込み制御部１１０へのデータの読み出し周期と等しくなるべく、磁気ディスクコントローラ１０は設計される。
【００４１】
更に、バッファ制御部１３５は、第１バッファ１４１を第２バッファ１４２と同様に機能させ、第２バッファ１４２を第３バッファ１４３と同様に機能させ、第３バッファ１４３を第１バッファ１４１と同様に機能させる。これにより、バッファ制御部１３５は、第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３をローテーションさせて利用することができる。
【００４２】
図５は、本実施形態に係る磁気ディスクコントローラ１０が磁気ディスク２０へデータを書き込む場合の一例を示す。まず、フェーズ６００において、データ（例えば、データＡ）が第１バッファ１４１に格納される（Ｓ１００）。続いて、フェーズ６０２において、データ（例えば、データＢ）が第２バッファ１４２に格納される（Ｓ１０５）。そして、第２バッファ１４２にデータが格納されるタイミングと同期して、第１バッファ１４１に格納されているデータが変調部１５０で変調されて、再び第１バッファ１４１に格納される（Ｓ１１０）。また、第１バッファ１４１に格納されているデータのエラー検出コードおよび／またはエラー訂正コードも、エラー検出コード生成部１４５で生成されて、変調されたデータとともに第１バッファ１４１に格納される（Ｓ１１０）。
【００４３】
そして、フェーズ６０２に続くフェーズ６０４において、第１バッファ１４１に格納されているエラー検出コードおよび／またはエラー訂正コードが、予め定められた間隔に分散された状態で、データとともに磁気ディスク２０に記録される（Ｓ１１５）。一方、第３バッファ１４３にデータ（例えば、データＣ）が格納される（Ｓ１２０）。そして、第３バッファ１４３にデータが格納されるタイミングと同期して、第２バッファ１４２に格納されているデータが変調部１５０で変調されて、再び第２バッファ１４２に格納される（Ｓ１２５）。また、第２バッファ１４２に格納されているデータのエラー検出コードおよび／またはエラー訂正コードも、エラー検出コード生成部１４５で生成されて、第２バッファ１４２に格納される（Ｓ１２５）。
【００４４】
図６は、本実施形態に係る磁気ディスクコントローラ１０が磁気ディスク２０へデータを書き込む場合の一例を示す。まず、フェーズ６００において、バッファ制御部１３５は、第１バッファ１４１にデータ（例えば、データＡ）を格納する（Ｓ２００）。続くフェーズ６０２において、第１バッファ１４１に格納されているデータＡは、変調部１５０において変調される。そして、バッファ制御部１３５は、変調部１５０が変調した後の変調データＡ’を第１バッファ１４１に格納する（Ｓ２０５）。また、バッファ制御部１３５は、第１バッファ１４１に変調データＡ’を格納することに同期して、第２バッファ１４２にデータ（例えば、データＢ）を格納する（Ｓ２１０）。
【００４５】
更に、フェーズ６０４において、バッファ制御部１３５は、第１バッファ１４１が格納している変調データＡ’を磁気ディスク２０に書き込む（Ｓ２１５）。また、第２バッファ１４２に格納されているデータＢは、変調部１５０において変調される。そして、バッファ制御部１３５は、変調部１５０が変調した後の変調データＢ’を第２バッファ１４２に格納する（Ｓ２２０）。そして、バッファ制御部１３５は、第２バッファ１４２に変調データＢ’を格納することに同期して、第３バッファ１４３にデータ（例えば、データＣ）を格納する（Ｓ２３０）。
【００４６】
図７は、本実施形態に係るバッファユニット１４０の機能構成の一例を示す。バッファユニット１４０は、第１バッファ１４１、第２バッファ１４２、および第３バッファ１４３を有する。そして、第１バッファ１４１は、第１記憶領域１４４および第２記憶領域１４６を含む。
【００４７】
第１バッファ１４１は、磁気ディスク２０が有する複数のセクタに書き込むべき複数の書き込みデータが含む前半部分データ、および後半部分データのうちの前半部分データを順次格納する第１記憶領域１４４を含む。更に、第１バッファ１４１は、複数の書き込みデータが含む後半部分データを順次格納する第２記憶領域１４６を含む。なお、前半部分データのデータ量と後半部分データのデータ量との合計が、１つのセクタに書き込むべき書き込みデータのデータ量と等しくなれば、前半部分データのデータ量と後半部分データのデータ量とは、異なっていてもよい。
【００４８】
そして、第１バッファ１４１は、第１記憶領域１４４にバッファ制御部１３５から受け取った前半部分データを格納した後に、第２記憶領域１４６にバッファ制御部１３５から受け取った後半部分データを格納する。そして、変調部１５０は、磁気ディスク２０の第１のセクタに書き込むべき第１書き込みデータの後半部分データを第２記憶領域１４６が格納していることに並行して、第１記憶領域１４４が既に格納している、第１書き込みデータの前半部分データを、バッファ制御部１３５から受け取る。続いて、変調部１５０は、受け取った前半部分データを、磁気ディスク２０に印加する信号を表すデータに変調する。
【００４９】
第２バッファ１４２は、変調部１５０が変調した第１書き込みデータの前半部分データを、バッファ制御部１３５から受け取って格納する。また、第２バッファ１４２は、変調部１５０が変調した第１書き込みデータの前半部分データおよび後半部分データを格納した後に、エラー検出コード生成部１４５が生成した、第１書き込みデータのための第１のエラー検出コードをバッファ制御部１３５から受け取って格納する。例えば、第２バッファ１４２は、変調部１５０が変調した前半部分データおよび後半部分データを含む第１書き込みデータをバッファ制御部１３５から受け取って連続する記憶領域に格納した後、第１のエラー検出コードを連続する記憶領域に格納する。
【００５０】
そして、バッファ制御部１３５は、第２バッファ１４２が格納している第１書き込みデータの前半部分データを磁気ディスク２０の第１のセクタに書き込ませる。係る場合において、変調部１５０は、磁気ディスク２０の第２のセクタに書き込むべき第２書き込みデータの前半部分データを第１記憶領域１４４が格納していることに並行して、第２記憶領域１４６が既に格納している、第１書き込みデータの後半部分データをバッファ制御部１３５から受け取って変調する。第２バッファ１４２は、第１書き込みデータの前半部分データを格納した後に、変調部１５０が変調した第１書き込みデータの後半部分データを格納する。
【００５１】
続いて、バッファ制御部１３５は、第１書き込みデータの前半部分データを磁気ディスク２０に書き込ませた後に、第２バッファ１４２が格納している第１書き込みデータの後半部分データを磁気ディスク２０の第１のセクタに書き込ませる。具体的には、バッファ制御部１３５は、第１書き込みデータの前半部分データおよび後半部分データとともに、第２バッファ１４２が格納している第１のエラー検出コードを磁気ディスク２０の第１のセクタに書き込ませる。例えば、バッファ制御部１３５は、第２バッファ１４２が格納している第１書き込みデータと、第２バッファ１４２が格納している第１のエラー検出コードとを、一部分ずつ交互に読み出して出力する。そして、バッファ制御部１３５は、出力する第１書き込みデータおよび第１のエラー検出コードを磁気ディスク２０の第１のセクタに書き込ませる。
【００５２】
係る場合において、エラー検出コード生成部１４５が生成した第１のエラー検出コードは、変調されることなく、第２バッファ１４２に格納されて磁気ディスク２０の第１のセクタに書き込まれてよい。また、バッファ制御部１３５は、第１のエラー検出コードを予め定められたデータ量ずつ、予め定められた間隔で、第１書き込みデータに挿入しながら出力してもよい。
【００５３】
また、変調部１５０は、第２書き込みデータの後半部分データを第２記憶領域１４６が格納していることに並行して、第１記憶領域１４４が既に格納している、第２書き込みデータの前半部分データをバッファ制御部１３５から受け取って変調した後に、磁気ディスク２０の第３のセクタに書き込むべき第３書き込みデータの前半部分データを第１記憶領域１４４が格納していることに並行して、第２記憶領域１４６が既に格納している、第２書き込みデータの後半部分データを変調する。
【００５４】
そして、第３バッファ１４３は、変調部１５０が変調した第２書き込みデータの前半部分データをバッファ制御部１３５から受け取って格納した後に、変調部１５０が変調した第２書き込みデータの後半部分データをバッファ制御部１３５から受け取って格納する。続いて、バッファ制御部１３５は、第２バッファ１４２が格納している第１書き込みデータを第１のセクタに書き込ませた後に、第３バッファ１４３が格納している第２書き込みデータを第２のセクタに書き込ませる。
【００５５】
変調方式決定部１６５は、磁気ディスク２０が有する複数のセクタに書き込むべき複数の書き込みデータを変調部１５０が変調するための変調方式を、複数の書き込みデータの前半部分データまたは後半部分データごとに決定する。具体的には、変調方式決定部１６５は、第１記憶領域１４４が第１書き込みデータの前半部分データを格納することに並行して、第１書き込みデータの前半部分データを受け取り、第１書き込みデータの前半部分データを変調部１５０が変調するための変調方式を決定する。更に、変調方式決定部１６５は、第２記憶領域１４６が第１書き込みデータの後半部分データを格納することに並行して、第１書き込みデータの後半部分データを受け取り、第１書き込みデータの後半部分データを変調部１５０が変調するための変調方式を決定する。
【００５６】
図８は、本実施形態に係る磁気ディスクコントローラ１０が磁気ディスク２０へデータを書き込む場合の一例を示す。まず、フェーズ９００において、バッファ制御部１３５は、前半部分データ（例えば、データＡ−１）を第１記憶領域１４４に格納する（Ｓ３００）。続くフェーズ９１０において、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＡ−１を変調部１５０において変調させ、変調後のデータＡ−１を第２バッファ１４２に格納する（Ｓ３０５、Ｓ３１０）。また、バッファ制御部１３５は、変調後のデータＡ−１を、変調部１５０からエラー検出コード生成部１４５に供給させる。
【００５７】
次に、フェーズ９１０において、バッファ制御部１３５は、後半部分データ（例えば、データＡ−２であり、データＡ−１とデータＡ−２とで１つのデータＡとなる）を第２記憶領域１４６に格納する（Ｓ３１５）。そして、フェーズ９１０からフェーズ９２０へ移り変わるタイミング８００において、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＡ−２を変調部１５０において変調させ、変調後のデータＡ−２を第２バッファ１４２に格納させる（Ｓ３２０、Ｓ３２５）。また、バッファ制御部１３５は、変調後のデータＡ−２を、変調部１５０からエラー検出コード生成部１４５に供給させる。
【００５８】
続くフェーズ９２０において、バッファ制御部１３５は、第１記憶領域１４４にデータＡ−１とは異なる前半部分データであるデータＢ−１を第１記憶領域１４４に格納する（Ｓ３４０）。一方、エラー検出コード生成部１４５は、変調後のデータＡ−１と変調後のデータＡ−２とからエラー訂正コードおよび／またはエラー検出コードを生成する。そして、バッファ制御部１３５は、エラー検出コード生成部１４５が生成した当該エラー訂正コードおよび／または当該エラー検出コードを、第２バッファ１４２に格納する（Ｓ３３０）。
【００５９】
そして、フェーズ９２０からフェーズ９３０に移り変わるタイミング８０５において、バッファ制御部１３５は、第２記憶領域１４６にデータＡ−２とは異なる後半部分データであるデータＢ−２（データＢ−１とデータＢ−２とで１つのデータＢとなる）を格納する（Ｓ３５５）。一方、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＢ−１を、変調部１５０において変調させ、変調後のデータＢ−１を第２バッファ１４２に格納する（Ｓ３４５、Ｓ３５０）。また、バッファ制御部１３５は、変調後のデータＢ−１を、変調部１５０からエラー検出コード生成部１４５に供給させる。
【００６０】
ここで、バッファ制御部１３５は、タイミング８０５において、変調後のデータＢ−１を第２バッファ１４２に格納する前に、第２バッファ１４２が格納している変調後のデータＡ−１、変調後のデータＡ−２、および変調後のデータＡ−１と変調後のデータＡ−２とから生成したエラー訂正コードおよび／またはエラー検出コードを出力して、磁気ディスク２０に書き込む。係る場合において、バッファ制御部１３５は、エラー訂正コードおよび／またはエラー検出コードを分割して、磁気ディスク２０の書き込み領域に予め定められた間隔で書き込ませる（Ｓ３８０）。
【００６１】
次に、フェーズ９３０からフェーズ９４０へと移り変わるタイミング８１０において、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＢ−２を、変調部１５０において変調させ、変調後のデータＢ−２を第２バッファ１４２に格納する（Ｓ３６０、Ｓ３６５）。また、バッファ制御部１３５は、変調後のデータＢ−２を、変調部１５０からエラー検出コード生成部１４５に供給させる。更に、バッファ制御部１３５は、タイミング８１０において、第１記憶領域１４４に、データＡ−１およびデータＢ−１とは異なる前半部分データであるデータＣ−１を格納する（Ｓ３８５）。
【００６２】
一方、フェーズ９４０において、エラー検出コード生成部１４５は、変調後のデータＢ−１と変調後のデータＢ−２とからエラー訂正コードおよび／またはエラー検出コードを生成する。そして、バッファ制御部１３５は、エラー検出コード生成部１４５が生成した当該エラー訂正コードおよび／または当該エラー検出コードを、第２バッファ１４２に格納する（Ｓ３７０）。
【００６３】
そして、フェーズ９４０からフェーズ９５０に移り変わるタイミング８１５において、バッファ制御部１３５は、第２記憶領域１４６にデータＡ−２およびデータＢ−２とは異なる後半部分データであるデータＣ−２（データＣ−１とデータＣ−２とで１つのデータＣとなる）を格納する（Ｓ４０５）。一方、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＣ−１を、変調部１５０において変調させ、変調後のデータＣ−１を第２バッファ１４２に格納する（Ｓ３９０、Ｓ３９５）。また、バッファ制御部１３５は、変調後のデータＣ−１を、変調部１５０からエラー検出コード生成部１４５に供給させる。
【００６４】
ここで、バッファ制御部１３５は、変調後のデータＣ−１を第２バッファ１４２に格納する前に、第２バッファ１４２が格納している変調後のデータＢ−１、変調後のデータＢ−２、および変調後のデータＢ−１と変調後のデータＢ−２とから生成したエラー訂正コードおよび／またはエラー検出コードを出力して、磁気ディスク２０に書き込む。係る場合において、バッファ制御部１３５は、エラー訂正コードおよび／またはエラー検出コードを分割して、磁気ディスク２０の書き込み領域に予め定められた間隔で書き込ませる（Ｓ４００）。
【００６５】
次に、フェーズ９５０からフェーズ９５０に続く次のフェーズへと移り変わるタイミング８２０において、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＣ−２を、変調部１５０において変調させ、変調後のデータＣ−２を第２バッファ１４２に格納する（Ｓ４１０）。また、バッファ制御部１３５は、変調後のデータＣ−２を、変調部１５０からエラー検出コード生成部１４５に供給させる。一方、フェーズ９５０の次に続くフェーズにおいて、エラー検出コード生成部１４５は、変調後のデータＣ−１と変調後のデータＣ−２とからエラー訂正コードおよび／またはエラー検出コードを生成する。そして、バッファ制御部１３５は、エラー検出コード生成部１４５が生成した当該エラー訂正コードおよび／または当該エラー検出コードを、第２バッファ１４２に格納する（Ｓ４１５）。
【００６６】
本実施形態に係る磁気ディスクコントローラ１０は、上記説明におけるように、１つのデータを前半部分データと後半部分データとに分割して、それぞれを変調する。そして、磁気ディスクコントローラ１０は、変調後の前半部分データと変調後の後半部分データとから生成したエラー訂正コードおよび／またはエラー検出コードを予め定められた間隔で分散して磁気ディスク２０に記録できる。
【００６７】
図９は、本実施形態に係る磁気ディスクコントローラ１０が磁気ディスク２０へデータを書き込む場合の一例を示す。まず、フェーズ９００において、バッファ制御部１３５は、第１バッファ１４１の第１記憶領域１４４にデータＡの一部分であるデータＡ−１を格納する。そして、フェーズ９１０において、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＡ−１を変調部１５０において変調させて、変調後のデータＡ−１を第２バッファ１４２に格納する。更に、バッファ制御部１３５は、変調後のデータＡ−１をエラー検出コード生成部１４５に供給させる。また、バッファ制御部１３５は、第１バッファ１４１の第２記憶領域１４６に、データＡに含まれ、データＡからデータＡ−１を除いた残りの部分であるデータＡ−２を格納する。
【００６８】
続いて、フェーズ９２０において、バッファ制御部１３５は、第１記憶領域１４４にデータＢの一部分であるデータＢ−１を格納する。また、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＡ−２を変調部１５０において変調させて、変調後のデータＡ−２を第２バッファ１４２に格納する。更に、バッファ制御部１３５は、変調後のデータＡ−２をエラー検出コード生成部１４５に供給させる。ここで、エラー検出コード生成部１４５は、変調後のデータＡ−１と変調後のデータＡ−２とから、データＡのエラー訂正コードおよび／またはエラー検出コードを生成する。バッファ制御部１３５は、エラー検出コード生成部１４５が生成したエラー訂正コードおよび／またはエラー検出コードを第２バッファ１４２に格納する。
【００６９】
そして、フェーズ９３０において、バッファ制御部１３５は、第２記憶領域１４６にデータＢからデータＢ−１を除いた残りの部分であるデータＢ−２を格納する。また、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＢ−１を変調部１５０において変調させて、変調後のデータＢ−１を第３バッファ１４３に格納させる。更に、バッファ制御部１３５は、変調後のデータＢ−１をエラー検出コード生成部１４５に供給させる。また、フェーズ９３０において、バッファ制御部１３５は、第２バッファ１４２が格納している変調後のデータＡ−１を書き込み制御部１１０に供給する。そして、書き込み制御部１１０は、変調後のデータＡ−１を磁気ディスク２０に書き込む（Ｓ９３２）。
【００７０】
続く、フェーズ９４０において、バッファ制御部１３５は、第１記憶領域１４４にデータＣの一部分であるデータＣ−１を格納する。また、バッファ制御部１３５は、第２バッファ１４２が格納している変調後のデータＡ−２を書き込み制御部１１０に供給する。そして、書き込み制御部１１０は、変調後のデータＡ−２を磁気ディスク２０に書き込む（Ｓ９４２）。係る場合において、書き込み制御部１１０は、第２バッファ１４２が格納しているデータＡのエラー訂正コードおよび／またはエラー検出コードも磁気ディスク２０に書き込む。
【００７１】
更に、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＢ−２を変調部１５０において変調させて、変調後のデータＢ−２を第３バッファ１４３に格納する。また、バッファ制御部１３５は、変調後のデータＢ−２をエラー検出コード生成部１４５に供給する。ここで、エラー検出コード生成部１４５は、変調後のデータＢ−１と変調後のデータＢ−２とから、データＢのエラー訂正コードおよび／またはエラー検出コードを生成する。バッファ制御部１３５は、エラー検出コード生成部１４５が生成したエラー訂正コードおよび／またはエラー検出コードを第３バッファ１４３に格納する。
【００７２】
そして、フェーズ９５０において、バッファ制御部１３５は、第２記憶領域１４６にデータＣからデータＣ−１を除いた残りの部分であるデータＣ−２を格納する。また、バッファ制御部１３５は、第１記憶領域１４４が格納しているデータＣ−１を変調部１５０において変調させて、変調後のデータＣ−１を第２バッファ１４２に格納させる。更に、バッファ制御部１３５は、変調後のデータＣ−１をエラー検出コード生成部１４５に供給させる。また、フェーズ９５０において、バッファ制御部１３５は、第３バッファ１４３が格納している変調後のデータＢ−１を書き込み制御部１１０に供給する。そして、書き込み制御部１１０は、変調後のデータＢ−１を磁気ディスク２０に書き込む（Ｓ９５２）。
【００７３】
次に、フェーズ９６０において、バッファ制御部１３５は、第１記憶領域１４４にデータＤの一部分であるデータＤ−１を格納する。また、バッファ制御部１３５は、第３バッファ１４３が格納している変調後のデータＢ−２を書き込み制御部１１０に供給する。そして、書き込み制御部１１０は、変調後のデータＢ−２を磁気ディスク２０に書き込む（Ｓ９６２）。係る場合において、書き込み制御部１１０は、第３バッファ１４３が格納しているデータＢのエラー訂正コードおよび／またはエラー検出コードも磁気ディスク２０に書き込む。
【００７４】
更に、バッファ制御部１３５は、第２記憶領域１４６が格納しているデータＣ−２を変調部１５０において変調させて、変調後のデータＣ−２を第２バッファ１４２に格納する。また、バッファ制御部１３５は、変調後のデータＣ−２をエラー検出コード生成部１４５に供給する。ここで、エラー検出コード生成部１４５は、変調後のデータＣ−１と変調後のデータＣ−２とから、データＣのエラー訂正コードおよび／またはエラー検出コードを生成する。バッファ制御部１３５は、エラー検出コード生成部１４５が生成したエラー訂正コードおよび／またはエラー検出コードを第２バッファ１４２に格納する。
【００７５】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加え得ることが当業者に明らかである。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００７６】
【図１】磁気ディスクコントローラ１０の機能構成を示すブロック図である。
【図２】磁気ディスク２０へのデータの書き込みを示す図である。
【図３】変調部１５０の機能構成を示すブロック図である。
【図４】バッファユニット１４０の機能構成を示すブロック図である。
【図５】磁気ディスク２０へのデータの書き込みを示す図である。
【図６】磁気ディスク２０へのデータの書き込みを示す図である。
【図７】バッファユニット１４０の機能構成を示すブロック図である。
【図８】磁気ディスク２０へのデータの書き込みを示す図である。
【図９】磁気ディスク２０へのデータの書き込みを示す図である。
【符号の説明】
【００７７】
１０  磁気ディスクコントローラ
２０  磁気ディスク
３０  ヘッド
４０  ホスト
１００  読み出し制御部
１０５  インデックス検出部
１０７  タイミング制御部
１１０  書き込み制御部
１２０  復調部
１２５  アドレス取得部
１２７  アドレス加算部
１３０  アドレス生成部
１３５  バッファ制御部
１４０  バッファユニット
１４１  第１バッファ
１４２  第２バッファ
１４３  第３バッファ
１４４  第１記憶領域
１４５  エラー検出コード生成部
１４６  第２記憶領域
１５０  変調部
１５２  読み出しキャッシュ
１５４  変調コア部
１５６  書き込みキャッシュ
１６０  インターフェース
１６５  変調方式決定部
２００  インデックス
２１０、２１２、２１４、２１６、２１８、２２０  セクタ
６００、６０２、６０４  フェーズ
８００、８０５、８１０、８１５、８２０  タイミング
９００、９１０、９２０、９３０、９４０、９５０、９６０  フェーズ
【図１】
2008192211.tif 000003
【図２】
2008192211.tif 000004
【図３】
2008192211.tif 000005
【図４】
2008192211.tif 000006
【図５】
2008192211.tif 000007
【図６】
2008192211.tif 000008
【図７】
2008192211.tif 000009
【図８】
2008192211.tif 000010
【図９】
2008192211.tif 000011