(57)【要約】【課題】ＰＩＯ転送モードを用いた場合でも、コントローラ内部で生じたデータのエラーを通知できる。【解決手段】ＨＤＣ１０１が、ＰＩＯ（Programmed Input/Output）転送モードに基づくリード・マルチプル・コマンドを受信し、受信した当該コマンドに従って、磁気ディスク１０７から複数回データの読出制御を行うリード・ライト部４０４と、読出制御されたデータについて、エラーの有無を検出するエラー検出用ＣＲＣ確認回路４３１と、エラーが検出された場合、ホストシステム１５０と接続されたＳＡＴＡバスで用いられるＣＲＣ符号に対して、エラーを示す値を設定する異常ＣＲＣ置設定回路４３２と、当該ＣＲＣ符号をデータと共に送信する送信制御部４４２と、を備える。【選択図】図４
2010286977.tif 000002
【特許請求の範囲】
【請求項１】
ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御手段と、
読出制御された前記データについて、エラーの有無を検出する検出手段と、
前記検出手段によりエラーが検出された場合、ホスト装置との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定手段と、
前記エラーを示す値が設定された符号を、前記データと共に出力する出力手段と、
を備えることを特徴とするコントローラ。
【請求項２】
前記設定手段は、シリアルＡＴＡ（Serial  Advanced  Technology  Attachment）規格の通信で、データに付与されるＣＲＣ（Cyclic  Redundancy  Check）符号に対して、エラーを示す値を設定し、
前記出力手段は、前記シリアルＡＴＡ規格を用いて、前記符号を前記データと共に出力すること、
を特徴とする請求項１に記載のコントローラ。
【請求項３】
前記読出制御手段により読出制御された前記データに対して、エラーを検出するための検出符号を付与する検出符号付与手段と、
前記読出制御が行われてから前記出力手段で出力されるまでの間に、前記検出符号が付与された前記データが経由される通信経路と、をさらに備え、
前記検出手段は、前記通信経路を経由した前記データについて、前記通信経路上で生じたエラーを検出すること、
を特徴とする請求項１又は２に記載のコントローラ。
【請求項４】
前記読出制御手段により読出制御された前記データについて、エラーの訂正を行う訂正手段をさらに備え、
前記検出符号付与手段は、前記訂正手段により訂正された後の前記データに対して前記検出符号を付与すること、
を特徴とする請求項３に記載のコントローラ。
【請求項５】
デバイスを制御する制御コントローラで実行されるデータ制御方法であって、
ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御ステップと、
検出手段が、読出制御された前記データについて、エラーの有無を検出する検出ステップと、
前記設定手段が、前記検出ステップによりエラーが検出された場合、前記ホスト装置との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定ステップと、
前記出力手段が、前記エラーを示す値が設定された符号を、前記データと共に出力する出力ステップと、
を含むことを特徴とするデータ制御方法。
【請求項６】
ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御手段と、
読出制御された前記データについて、エラーの有無を検出する検出手段と、
前記検出手段によりエラーが検出された場合、ホスト部との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定手段と、
前記エラーを示す値が設定された符号を、前記データと共に出力する出力手段と、
を備えたことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを処理するコントローラ、データ制御方法及び電子機器に関する。
【背景技術】
【０００２】
従来から、ハードディスクドライブ装置は、音声データや映像データを格納する記憶手段として用いられている。このハードディスクドライブ装置の読み出し／書き出しでエラーが生じた場合、ハードディスクドライブ装置のエラー検出部が当該エラーを検出する。そして、検出されたエラーは、ハードディスクドライブ装置がホストに対して通知する。これによりホスト側は、読み出し／書き出しでエラーが生じたことを認識できる。
【０００３】
例えば、特許文献１に記載された技術では、データの読み出しでエラーが生じた場合、異常な値が設定されたＣＲＣ符号を、読み出したデータに付与した後、当該データとＣＲＣ符号とをホストに対して送信している。これにより、ホストは、読み出しでエラーが生じたことを認識できる。
【０００４】
ところで、近年、ハードディスクドライブ装置は、読み出し／書き出しの速度が向上していく傾向にある。一方、ハードディスクドライブ装置に内蔵され、ハードディスクドライブ装置の各部を制御するＬＳＩは、微細化が進む傾向にある。このため、ハードディスクドライブ装置内で生じるノイズ等により、読み出した後のデータでホストに出力するまでの経路上でノイズによりエラーが生じる可能性が出てきた。このような場合、ＤＭＡ転送モードでは、転送後の完了通知を行う際にエラーであることを通知すればよい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１５９１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ハードディスクなどのデバイスとホストとの転送手法として、ＤＭＡ転送モード以外に、ＰＩＯ(Programmed  Input／Output)転送モードが存在する。このＰＩＯ転送モードは、ＣＰＵが、直接Ｉ／Ｏポートを経由してデータの送受信を制御する転送モードである。当該ＰＩＯ転送モードの読み出しコマンドとしては、５１２Ｂｙｔｅの読み出しを行うリード・セクタ・コマンドと、５１２Ｂｙｔｅ×ｎ単位で読み出しを行うリード・マルチプル・コマンドと、が存在する。
【０００７】
そして、ＰＩＯ転送モードの上述した読み出しコマンドでは、読み出しが完了した後、適切に転送が行われた否かを示す完了通知を行わない。このため、従来の技術では、リード・マルチプル・コマンドで読み出された最後の５１２Ｂｙｔｅのデータで、読み出してからホストに送信するまでの経路上でエラーが生じた場合、ホストは受信したデータにエラーが生じていることを認識できないという問題がある。また、このような問題について、特許文献１では考慮されていない。
【０００８】
本発明は、上記に鑑みてなされたものであって、上述した状況であっても、ホスト側にデータにエラーがあることを認識させることが可能なコントローラ、データ制御方法及び電子機器を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかるコントローラは、ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御手段と、読出制御された前記データについて、エラーの有無を検出する検出手段と、前記検出手段によりエラーが検出された場合、ホスト装置との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定手段と、前記エラーを示す値が設定された符号を、前記データと共に出力する出力手段と、を備えることを特徴とする。
【００１０】
また、本発明にかかるデータ制御方法は、デバイスを制御する制御コントローラで実行されるデータ制御方法であって、ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御ステップと、検出手段が、読出制御された前記データについて、エラーの有無を検出する検出ステップと、前記設定手段が、前記検出ステップによりエラーが検出された場合、前記ホスト装置との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定ステップと、前記出力手段が、前記エラーを示す値が設定された符号を、前記データと共に出力する出力ステップと、を含むことを特徴とする。
【００１１】
また、本発明にかかる電子機器は、ＰＩＯ（Programmed  Input/Output）転送モードに基づく読出命令を受信し、当該読込命令に従って、記憶媒体からデータの読出制御を行う読出制御手段と、読出制御された前記データについて、エラーの有無を検出する検出手段と、前記検出手段によりエラーが検出された場合、ホスト部との間の通信でエラーを検出するための符号に対して、エラーを示す値を設定する設定手段と、前記エラーを示す値が設定された符号を、前記データと共に出力する出力手段と、を備えたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ＰＩＯ転送モードの読出命令に従って読み出した後のデータにエラーが生じた場合でも、データの出力先に対して当該データにエラーがあることを認識させることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施の形態にかかる電子機器が備えるＨＤＤのハードウェア構成を示した図である。
【図２】図２は、ＰＩＯ転送モードで、ホストシステムとハードディスクドライブ装置との間で、正常にデータ転送が行われた場合の従来通りの処理手順を示したシーケンス図である。
【図３】図３はＰＩＯ転送モードで、ホストシステムとハードディスクドライブ装置との間のデータ転送で、読み出し時にエラーが生じた場合の従来通りの処理手順を示したシーケンス図である。
【図４】図４は、ＨＤＣ及びホストシステムの構成を示したブロック図である。
【図５】図５は、ごく短時間のノイズによってデータが化けた場合にＦＩＳから算出されたＣＲＣ符号と、送出されたＣＲＣ符号との違いを示した説明図である。
【図６】図６は、ハードディスクドライブ装置内でエラーが検出された場合における、ＦＩＳから算出されたＣＲＣ符号と、送出されたＣＲＣ符号との違いを示した説明図である。
【図７】図７は、本実施の形態にかかるホストシステムとハードディスクドライブ装置における、データ転送時にハードディスクドライブ装置内部の伝送路上でエラーが生じた場合の処理手順を示したシーケンス図である。
【発明を実施するための形態】
【００１４】
（第１の実施の形態）
図１に示すように、本実施の形態にかかる電子機器１は、ホストシステム１５０と、ハードディスクドライブ装置（ＨＤＤ）とを備えた構成とする。図１に示すように、ホストシステム１５０と、ハードディスクドライブ装置（ＨＤＤ）１００との間は、シリアルＡＴＡ（Serial  Advanced  Technology  Attachment、以下ＳＡＴＡと称す）規格のケーブルで接続されているものとする。シリアルＡＴＡは、全二重プロトコルであり、ホストシステム１５０及びＨＤＤ１００のそれぞれから信号が送出されているものとする。
【００１５】
ホストシステム１５０は、ＳＡＴＡインターフェイスを有するＰＣ（Personal  Computer）と同様の構成とする。このため、ホストシステム１５０のハードウェア構成については説明を省略する。
【００１６】
ハードディスクドライブ装置１００は、ＨＤＣ１０１と、スピンドルモータ（以下、ＳＰＭと称す）１０２と、磁気ヘッド１０３と、アーム１０４と、軸１０５と、ヘッドアンプ１０６と、磁気ディスク１０７と、を備え、ＳＡＴＡケーブル１２０を介してホストシステム１５０と接続されている。
【００１７】
ＳＰＭ１０２は、磁気ディスク１０７を定常回転させるためのモータとする。
【００１８】
磁気ディスク１０７は、読み書き可能なデータ領域を備えている。磁気ディスク１０７は、異なる径毎にトラックを備え、各トラックに、ホストシステム１５０から転送されるデータを記録するための領域(データ領域)が配置されている。
【００１９】
磁気ヘッド１０３は、アーム１０４に保持されている。そして、磁気ヘッド１０３は、サーボデータからトラックの位置情報を読み出すと共に、磁気ディスク１０７を走査し、データの読み出し及び書き込みを行う。アーム１０４は、軸１０５を中心とした回転運動を行い、磁気ヘッド１０３を磁気ディスク１０７の半径方向に移動させる。
【００２０】
そして、磁気ヘッド１０３が、磁気ディスク１０７の半径方向に移動することで、任意のトラックの任意のセクタに対して走査を行うことができる。当該走査により、任意のセクタに対してデータの読み出し及び書き込みを行うことができる。
【００２１】
ヘッドアンプ１０６は、磁気ヘッド１０３が読み出した微弱な信号を増幅する機能を備える。
【００２２】
ＨＤＣ（ハードディスクコントローラ）１０１は、ハードディスクドライブ装置１００を制御する目的で設計されたＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）とする。
【００２３】
キャッシュバッファメモリ１０８は、読み出したデータ等を記憶する。本実施の形態にかかるキャッシュバッファメモリ１０８としては、ＤＲＡＭ又はＳＲＡＭを使用する。なお、キャッシュバッファメモリ１０８をこれらメモリに制限するものではなく、さまざまな記憶媒体を適用できる。そして、キャッシュバッファメモリ１０８に記憶されたデータは、ＳＡＴＡケーブル１２０を介して、ホストシステム１５０に出力される。
【００２４】
本実施の形態にかかるハードディスクドライブ装置１００とホストシステム１５０との転送モードとして、ＰＩＯ(Programmed  Input／Output)転送モードを用いる。ＰＩＯ転送モードとは、（ホストシステム１５０側の）ＣＰＵが直接インターフェイスポートを経由してデータ通信を行うモードとする。ＰＩＯ転送モードでは、実行可能なコマンドとして、ライトセクタ(WRITE  SECTOR)コマンドと、リード・セクタ(READ  SECTOR)・コマンドと、ライトマルチプル(WRITE  MULTIPLE)コマンドと、リードマルチプル(READ  MULTIPLE)コマンドとが存在する。
【００２５】
読み出す命令の一つである、リード・セクタ・コマンドは、５１２Ｂｙｔｅ（通常の１セクタ分）の読み出しを行う命令とする。そして、リード・マルチプル・コマンドは、５１２Ｂｙｔｅ×ｎの読み出しを行う命令とする。なお、ＰＩＯの転送モードにおいては、（ホストシステム１５０側の）ＣＰＵが上述した命令に従って、５１２Ｂｙｔｅ又は５１２Ｂｙｔｅ×ｎのデータを読み出した時点で処理が終了し、特に完了通知などを行わない。
【００２６】
図２は、ＰＩＯ転送モードで、ホストシステムとハードディスクドライブ装置との間で正常にデータ転送が行われた場合の従来通りの処理手順を示したシーケンス図である。なお、ホストシステムとハードディスクドライブ装置との間は、本実施の形態と同様ＳＡＴＡバスで接続されているものとする。
【００２７】
まず、ホストシステムは、ＰＩＯ転送モードのリード・マルチプル・コマンドを送信する（ステップＳ２０１）。当該コマンドは、ＲｅｇＨ２Ｄ  ＦＩＳを用いて行われる。
【００２８】
このＦＩＳ（Frame  Information  Structure）は、ＳＡＴＡにて規定されている"ひとかたまりの情報"の呼称である。ＳＡＴＡバスにおいて、一つのＦＩＳは、何らかの意味を持つ最小単位の情報を構成している。換言すれば、従来からの情報通信規格における"パケット"に近いものとなる。ＳＡＴＡでは、ＦＩＳ毎にＣＲＣ符号を付与し、ＳＡＴＡバス上でのデータ正当性の保証を行っている。
【００２９】
また、ＦＩＳには、ＲｅｇＨ２Ｄ  ＦＩＳ、ＲｅｇＤ２Ｈ  ＦＩＳ、Ｄａｔａ  ＦＩＳ、及びＰＩＯ  Ｓｅｔｕｐ  ＦＩＳ等が規定されている。なお、これら以外のＦＩＳも規定されているが、説明を省略する。
【００３０】
ＲｅｇＨ２Ｄ  ＦＩＳは、ＡＴＡで規定されているレジスタへホストから書き込みを行うＦＩＳとする。ＲｅｇＤ２Ｈ  ＦＩＳは、同レジスタをデバイスからホストへ読み出すＦＩＳとする。Ｄａｔａ  ＦＩＳは、記録データそのものを受け渡しするＦＩＳとする。ＰＩＯ  Ｓｅｔｕｐ  ＦＩＳは、ＰＩＯ転送時における、デバイスからの動作要求を行うＦＩＳとする。ホストシステムとハードディスクドライブ装置との間では、これらＦＩＳの送受信が行われる。
【００３１】
そして、ホストシステムは、ステップＳ２０１の送信をおこなった後、ハードディスクドライブ装置からＰＩＯ  Ｓｅｔｕｐ又はＲｅｇＤ２Ｈが送信されるまで待機する。
【００３２】
一方、ハードディスクドライブ装置は、受信したリード・マルチプル・コマンドに従って、セクタ（又はブロック）×ｎの読み出しを行う必要がある。そこで、ハードディスクドライブ装置のリード・ライト部は、磁気ディスクから、データを読み出し制御を行う（ステップＳ２０２）。その後、キャッシュ制御部は、読み出したデータをキャッシュバッファメモリに格納する（ステップＳ２０３）。
【００３３】
その後、ハードディスクドライブ装置では、送信するデータの準備が完了した後、ＰＩＯ  Ｓｅｔｕｐ  ＦＩＳの送信制御を行う（ステップＳ２０４）。当該ＦＩＳを受信したホストシステムは、ハードディスクドライブ装置に対して、Ｄａｔａ  ＦＩＳにて１セクタ(もしくは１ブロック)分のデータの送信制御を開始する（ステップＳ２０５）。その後、ホストシステムは、当該Ｄａｔａ  ＦＩＳによるデータの送信制御を終了する（ステップＳ２０６）。当該ステップＳ２０２〜Ｓ２０６までの処理が、リード・マルチプル・コマンドに従って全てのデータが読み出されるまで繰り返される。
【００３４】
つまり、ホストシステム１５０は、送信制御が終了した後、次の１セクタ（もしくはブロック)に対するＰＩＯ  Ｓｅｔｕｐ又はＲｅｇＤ２Ｈが送信されるまで待機する（ステップＳ２０７）。
【００３５】
その間、ハードディスクドライブ装置のリード・ライト部は、再び磁気ディスクから、次の１セクタ（もしくはブロック）のデータを読み出し制御を行う（ステップＳ２０８）。その後、キャッシュ制御部は、読み出したデータをキャッシュバッファメモリに格納する（ステップＳ２０９）。
【００３６】
その後、ハードディスクドライブ装置で、送信するデータの準備が完了した後、ＰＩＯ  Ｓｅｔｕｐ  ＦＩＳの送信制御を行う（ステップＳ２１０）。当該ＦＩＳを受信したホストシステムは、ハードディスクドライブ装置に対して、Ｄａｔａ  ＦＩＳにて１セクタ(もしくは１ブロック)分のデータの送信制御を開始する（ステップＳ２１１）。その後、ホストシステムは、当該Ｄａｔａ  ＦＩＳによるデータの送信制御を終了する（ステップＳ２１２）。
【００３７】
上述した繰り返し処理を繰り返し、リード・マルチプル・コマンドで指定された転送要求セクタ（又はブロック）数分の全てのデータを読み出した時点でコマンドが正常に終了したことになる。このように、最後のセクタ（又はブロックの）のデータをキャッシュバッファメモリから読み出して、ホストシステムに転送する間にエラーが生じた場合に、ハードディスクドライブ装置１００からエラーが発生したことを通知する手段が定められていない。
【００３８】
また、従来のハードディスクドライブ装置では、磁気ディスクなどの記録媒体で読み出しエラー等が発生したため、データ準備を出来なかった場合、ＰＩＯ  Ｓｅｔｕｐ  ＦＩＳの代わりにＲｅｇＤ２Ｈ  ＦＩＳを送信する。この際、ＲｅｇＤ２Ｈ  ＦＩＳ中に存在するＡＢＲＴビット(コマンド中断(ａｂｏｒｔ)要求)をセットしてホストシステムに送信することで、ホストシステムに対してコマンド中断要求を行う。そして、ホストシステムは、当該要求を受信した場合に、当該コマンドの実行を中断する。次に、具体的な処理手順について説明する。
【００３９】
図３は、ＰＩＯ転送モードで、ホストシステムとハードディスクドライブ装置との間のデータ転送で、読み出し時にエラーが生じた場合の従来通りの処理手順を示したシーケンス図である。なお、ホストシステムとハードディスクドライブ装置との間は、本実施の形態と同様ＳＡＴＡバスで接続されているものとする。
【００４０】
まず、ホストシステムとハードディスクドライブ装置との間で、図２のＳ２０１〜Ｓ２０６の処理手順と同様に、リード・マルチプル・コマンドの送信からデータの転送までが行われる（ステップＳ３０１〜Ｓ３０６）。
【００４１】
その後、ホストシステム１５０は、次の１セクタ（もしくはブロック)に対するＰＩＯ  Ｓｅｔｕｐ又はＲｅｇＤ２Ｈが送信されるまで待機する（ステップＳ３０７）。
【００４２】
その間、ハードディスクドライブ装置のリード・ライト部は、磁気ディスクから、データを読み出し制御を行うが、当該読み出し制御でエラーが発生したものとする（ステップＳ３０８）。
【００４３】
この場合、発生したエラーにより、１セクタ（又は１ブロック）のデータを準備することができなかったため、ハードディスクドライブ装置は、エラーを報告するためのＲｅｇＤ２Ｈ  ＦＩＳを、ホストシステムに対して送信する（ステップＳ３０９）。なお、ＲｅｇＤ２Ｈ  ＦＩＳは、中断要求を行うためにＡＢＲＴビットを予めセットしておく。
【００４４】
そして、ホストシステムは、当該ＲｅｇＤ２Ｈ  ＦＩＳを受信した場合に、データを受け取ることができないものとみなし、コマンドを中断し、処理を終了する。
【００４５】
このように、読み出しでエラーが生じた時は、ホストシステムが、ＰＩＯ  Ｓｅｔｕｐ又はＲｅｇＤ２Ｈを待機しているため、エラーであることを通知できる。しかしながら、ＰＩＯ  Ｓｅｔｕｐを発行した後は、次のセクタの時までハードディスクドライブ装置側から通知を行うことができない。このため、キャッシュバッファメモリの読み出しからホストシステムに転送するまでの伝送路上でエラーが生じた場合、次のセクタの読み出しがあるならば、その際にエラーが生じたことを通知できるが、最後のセクタの読み出し時では、ハードディスクドライブ装置側からデータがエラーであることを通知する手段が既に存在しない。本実施の形態においては、このような場合であっても、ハードディスクドライブ装置１００側からホストシステム１５０に対して、エラーが発生したことの通知を可能とする。
【００４６】
図４は、ＨＤＣ１０１及びホストシステム１５０の構成を示したブロック図である。図４に示すように、ホストシステム１５０は、システムコントローラ１５１を備え、システムコントローラ１５１が、ＳＡＴＡ規格によるデータの送受信を制御する。
【００４７】
具体的には、システムコントローラ１５１は、送信制御部１６１と、受信制御部１６２と、エラー検出用回路１６３とを備える。
【００４８】
送信制御部１６１は、ＨＤＣ１０１に対してＦＩＳの送信制御を行う。送信するＦＩＳには、例えば、ＰＩＯ転送モードに基づくデータの読み出し命令（リード・セクタ・コマンド又はリード・マルチプル・コマンド）等とする。
【００４９】
受信制御部１６２は、ＨＤＣ１０１から送信されたＦＩＳの受信制御を行う。受信するＦＩＳには、例えば、送信制御部１６１が送信したリード・マルチプル・コマンドに対応するデータと、当該データのエラーを検出するためのＣＲＣ符号と、が含まれている。
【００５０】
エラー検出用回路１６３は、受信したデータについて、ＣＲＣ符号からエラーの有無を検出する。そして、エラーが検出された場合に、ホストシステム１５０は、エラーが検出された場合に基づく処理を行う。行う処理としては、どのような処理でも良いが、例えば、再びデータの読み出し命令を、ＨＤＣ１０１に送信する等が考えられる。
【００５１】
ＨＤＣ１０１は、ＣＰＵ４０１と、ＳＡＴＡ制御部４０２と、キャッシュ制御部４０３と、リード・ライト部４０４と、を備える。
【００５２】
また、リード・ライト部４０４とＳＡＴＡ制御部４０２との間は第１伝送路４５１で、キャッシュ制御部４０３とキャッシュバッファメモリ１０８との間は第２伝送路４５２で、キャッシュ制御部４０３とリード・ライト部４０４との間は第３伝送路４５３で接続されている。従来、これら第１伝送路４５１、第２伝送路４５２、第３伝送路４５３及びキャッシュバッファメモリ１０８でデータにノイズが生じることは考慮されていなかった。
【００５３】
というのも、従来、磁気ディスク１０７から読み出しが正常に完了した後、第１伝送路４５１、第２伝送路４５２、第３伝送路４５３及びキャッシュバッファメモリ１０８などのホストバスへ至るまでのデータ伝送経路において、データ化け等が発生してデータエラーとなることは、回路設計ミス/基板設計ミス以外ではまず発生しなかった。そして、設計ミスは製品化前に修正することが必須である以上、当該データ伝送路上でエラーが発生したことをホストシステム１５０に通知できなくとも問題とはならなかった。換言すれば、ＰＩＯ転送モードで最後に正常にデータの送受信が完了したことの通知を行わずとも、問題は生じなかった。
【００５４】
しかしながら、近年、ＬＳＩの微細化に伴い、電磁ノイズや宇宙線が、通常使用時にデータ化けを生じさせる外的要因として無視できないものとなりつつある。このため、ハードディスクドライブ装置等の記憶装置に対して、当該記憶装置が備えるＬＳＩ内部のデータ伝送経路（例えば、第１伝送路４５１、第２伝送路４５２、又は第３伝送路４５３）や、キャッシュバッファメモリ１０８のメモリセルにおける、データ化けからの保護、およびエラー検知・通知機能が要求されつつある。
【００５５】
ところが、上述したように、ＰＩＯ転送モードでは、ＬＳＩ内部の伝送経路又はメモリセルにおいて、データ化けが発生した時に、エラーが発生したことを、ホストシステムに通知できない場合が存在する。
【００５６】
これに対し、ホストシステム１５０とハードディスクドライブ装置１００との間を接続するＳＡＴＡのバスは、ハードディスクドライブ装置などの装置内基板配線より不安定な線路であり、データ化けが生じることが予め想定された上で規格されている。このため、ＳＡＴＡのバスでは、データ化けが生じた場合、ＣＲＣによるエラー検出がサポートされているため、特に問題は生じることはない。
【００５７】
そこで、本実施の形態にかかるハードディスクドライブ装置１００では、ＨＤＣ１０１内部のデータ伝送経路（例えば、第１伝送路４５１、第２伝送路４５２、又は第３伝送路４５３）や、キャッシュバッファメモリ１０８のメモリセルでデータ化けが生じた場合に、上述したＳＡＴＡの機構を流用して、"何らかのエラーが発生した"ことをホストシステム１５０に通知する。
【００５８】
そして、ＨＤＣ１０１内部のＣＰＵ４０１は、ＨＤＤ１００全体の制御を行う。
【００５９】
リード・ライト部４０４は、ＦＩＦＯ４１２と、ＥＣＣ演算回路４１３と、ＥＣＣ用一時記憶メモリ４１４と、エラー検出用ＣＲＣ生成回路４１５とを備える。そして、リード・ライト部４０４は、ＳＡＴＡ制御部４０２を介して入力されるホストシステム１５０からのＰＩＯ転送モードのコマンドに従って、磁気ヘッド１０３による読み出し又は書き込み制御を行う。本実施の形態にかかるリード・ライト部４０４は、磁気ヘッド１０３の位置決め処理に必要な制御信号を出力する。さらに、リード・ライト部４０４は、データの読み出し・書き込みのための、磁気ヘッド１０３間の信号処理を行う。これにより、データの読み出し、書き込み制御が行われることになる。
【００６０】
具体的には、ホストシステム１５０からのリード・セクタ・コマンド又はリード・マルチプル・コマンドによってリード指示が発行されると、リード・ライト部４０４は、ハードディスクドライブ装置１００内部で記録媒体である磁気ディスク１０７上に存在する指定された記録領域から磁気ヘッド１０３を通じてデータの読み出しの制御を行う。
【００６１】
ＦＩＦＯ（First-In  First-Out）４１２は、読み出しされたデータ又は書き込まれるデータを一時的に格納するキューとして用いられる。ＦＩＦＯ（First-In  First-Out）４１２では、古く格納されたデータから順に取り出される。
【００６２】
ＥＣＣ用一時記憶メモリ４１４は、ＦＩＦＯ４１２を介して読み出されたデータに対して、ＥＣＣ演算を行うために一時的に格納するメモリとする。
【００６３】
ＥＣＣ演算回路４１３は、ＥＣＣ用一時記憶メモリ４１４に格納されたデータに対して、ＥＣＣ演算を行う。ところで、磁気ディスク１０７に書き込まれたデータには、ホストシステム１５０から書き込み要求されたユーザデータの他に、当該ユーザデータについてハードディスクドライブ装置１００内部で算出、生成されたエラー訂正符号が含まれている。これにより、ＥＣＣ演算回路４１３は、読み出したデータにエラーが含まれているか否かの検出を行うことができる。
【００６４】
そして、ＥＣＣ演算回路４１３は、読み出したデータにエラーが含まれていることを検出した場合、エラー訂正符号を元にエラー訂正を行う。
【００６５】
ＥＣＣ演算回路４１３が、磁気ディスク１０７から読み出したデータにエラーが含まれている事を検知し、エラー訂正を試みたもののエラー訂正が行えなかった場合、ハードディスクドライブ装置１００では、「記録媒体からの正常読み出し不可能」としてホストシステム１５０にコマンド実行エラーを通知する。この場合、ＥＣＣ演算回路４１３は、ＳＡＴＡ制御部４０２の、後述するタスクファイルレジスタ４２２の「Status  register」内に設定されているＥＲＲフラグをセットする。これにより、ＳＡＴＡ制御部４０２から、ホストシステム１５０に対して、転送中断(コマンドアボート)が行われる。
【００６６】
エラー検出用ＣＲＣ生成回路４１５は、ＥＣＣ演算回路４１３の演算でエラーが検出されたかったデータに対して、エラーを検出するためのＣＲＣ符号を生成、付与を行う。当該ＣＲＣ符号は、当該データのエラーを検出するために付与された符号であり、換言すればエラー検出符号としての役割を果たす。本実施の形態においては、データ５１２Ｂｙｔｅ毎に、１６ｂｉｔのＣＲＣ符号を付与することとする。
【００６７】
つまり、本実施の形態にかかるエラー検出用ＣＲＣ生成回路４１５では、エラー訂正後の"正しいデータ"に対してエラー検出符号(もしくはエラー訂正符号)を付与する。そして、ハードディスクドライブ装置１００では、正しいデータと共にＣＲＣ符号を管理する。なお、当該ＣＲＣ符号などのエラーを検出するための符号は、ハードディスクドライブ装置１００内部で保持されるのであれば、データと別に保持するなど、保持手法としてはどのような手法を用いても良い。
【００６８】
そして、ＣＲＣ符号（エラー検出符号）が付与されたデータは、キャッシュ制御部４０３により、キャッシュバッファメモリ１０８に格納される。
【００６９】
キャッシュ制御部４０３は、キャッシュバッファメモリ１０８の制御を行う。本実施の形態にかかるキャッシュ制御部４０３は、リード・ライト部４０４が読み出したデータを、一旦キャッシュバッファメモリ１０８に格納した後、ホストシステム１５０に対して転送する制御を行う。
【００７０】
キャッシュバッファメモリ１０８は、磁気ディスク１０７からから読み出したデータを格納できる程度の記憶領域を有する。本実施の形態にかかるキャッシュバッファメモリ１０８においては、ホストバスで送受信するデータ長の最小単位以上(ここで例示している本実施の形態で例示しているＳＡＴＡバスでは、最小単位が５１２Ｂｙｔｅとなる)の記憶領域を有している。
【００７１】
そして、キャッシュ制御部４０３は、ホストバスがアイドル状態でありホストバスに対してデータの送信が可能となった場合に、ホストシステム１５０にデータ転送するために、キャッシュバッファメモリ１０８から読み出し制御を開始する。
【００７２】
このように、キャッシュ制御部４０３は、磁気ディスク１０７から読み出したデータにエラーが含まれていない場合、又はデータから検出されたエラーの訂正が正常に行われた場合に、これらデータは正しいデータとして、ＣＲＣ符号が付与された後、キャッシュバッファメモリ１０８に格納する制御を行う。
【００７３】
ＳＡＴＡ制御部４０２は、ＦＩＦＯ４２１と、タスクファイルレジスタ４２２と、ＳＡＴＡバス用ＣＲＣ生成部４２３と、リンク層・トランスポート層制御部４２４と、を備え、ホストシステム１５０とのインターフェイス制御を行う。
【００７４】
ＦＩＦＯ４２１は、キャッシュバッファメモリ１０８から読み出されたデータを一時的に格納するキューとして用いられる。ＦＩＦＯ（First-In  First-Out）４１２では、古く格納されたデータから順に取り出される。
【００７５】
タスクファイルレジスタ４２２は、ホストシステム１５０に対して通知する内容が格納されたレジスタとする。例えば、ホストシステム１５０が、転送中断がハードディスクドライブ装置１００から行われた場合、当該タスクファイルレジスタ４２２の「Status register」を参照し、ＥＲＲフラグがセットされているか否かを確認する。そして、ホストシステム１５０は、ＥＲＲフラグがセットされてことを確認した場合に、「ハードディスクドライブ装置１００内部でエラーが発生し、正常にコマンドを完了することが出来なかった」という状況を把握できる。この場合、ホストシステム１５０は、リードコマンドを再度発行してもう一度リードを試みるか、又はリードを諦めるか等といった「エラー発生時の処理」に移る事ができる。なお、上述したエラー通知機構はＡＴＡ規格で規定されているため、詳細な説明は省略する。
【００７６】
ＳＡＴＡバス用ＣＲＣ生成部４２３は、送信するデータに対して付与すべきＣＲＣ符号を生成する。ＣＲＣ符号の生成手法については、従来からの手法を用いるものとする。
【００７７】
リンク層・トランスポート層制御部４２４は、エラー検出用ＣＲＣ確認回路４３１と、異常ＣＲＣ値設定回路４３２と、ＦＩＳインターフェイス４３３と、を備える。
【００７８】
エラー検出用ＣＲＣ確認回路４３１は、キャッシュバッファメモリ１０８から読出制御されたデータについて、ホストバスに送出する直前に、エラーの検出を行う。本実施の形態にかかるエラー検出用ＣＲＣ確認回路４３１では、ＦＩＦＯ４１２から取り出されたデータを、ＦＩＳインターフェイス４３３に受け渡す処理と並列して、当該データと当該データに付与されたＣＲＣ符号とを用いて当該データからエラーの検出を行う。
【００７９】
つまり、当該ＣＲＣ符号が、エラー検出用ＣＲＣ生成回路４１５により付与されたものである以上、エラー検出用ＣＲＣ確認回路４３１でエラーを検出した場合には、第１伝送路４５１、第２伝送路４５２、第３伝送路４５３、及びキャッシュバッファメモリ１０８上で、“データ化け”が発生したことを意味する。
【００８０】
エラー検出用ＣＲＣ確認回路４３１がエラーを検出した段階では、データそのものは既にＦＩＳインターフェイス４３３に受け渡して、ホストへ転送するための処理が行われた後である。このため、ハードディスクドライブ装置１００では、上述したエラーを検出した場合、当該エラーの訂正や当該エラーに基づく送信の停止を行うことができない。また、従来の手法のみ用いた場合では、当該エラーの通知を、ホストシステム１５０に対して行うことができない。
【００８１】
しかしながら、当該データ転送が完了した後、次のセクタの読み出しがあるなど、リード・マルチプル・コマンドの完了前に、ホストシステム１５０が、タスクファイルレジスタ４２２の「Status  register」を確認することが確実な場合、エラー検出用ＣＲＣ確認回路４３１が、エラー検知した直後に当該「Status  register」のＥＲＲフラグをセットする制御を行えばよい。これにより、ホストシステム１５０は、先程の転送途中にエラーが発生したことを認識できるので、エラーが発生した場合の処理が行える。
【００８２】
なお、本実施の形態では、ＳＡＴＡ規格で制定されている固有レジスタ「Status  register」を想定して例示したが、ＳＡＴＡ以外の規格の場合に同様の機能を持つレジスタ/信号線等の「状況通知機能」を用いればよい。
【００８３】
しかしながら、エラー検出用ＣＲＣ確認回路４３１がエラーを検出した後に、「Status  register」のＥＲＲフラグをセットしても、その後にホストシステム１５０が「Status  register」を確認せずに、コマンドが完了する場合が存在する。このような場合としては、例えば、リード・マルチプル・コマンドなどの読み出しコマンドで、最終セクタ(又はブロック）の転送する状況が該当する。このような場合、ハードディスクドライブ装置１００から、ホストシステム１５０に対して「ハードディスクドライブ装置１００内部エラーが発生しており、送出したデータが正しくない」旨の通知を行うことができない。このような場合、本実施の形態にかかる異常ＣＲＣ値設定回路４３２が、エラーが生じていることをホストシステム１５０に認識できるように、送信制御されているＦＩＳの最後に付与されるＣＲＣ符号を置き換える。
【００８４】
つまり、異常ＣＲＣ値設定回路４３２は、エラー検出用ＣＲＣ生成回路４１５によりエラーが検出された場合、当該データを含むＦＩＳの最後に付与されるＣＲＣ符号に対してエラーを示す値を設定する。
【００８５】
エラーを示す値の算出手法として、本実施の形態にかかる異常ＣＲＣ値設定回路４３２は、ＳＡＴＡバス用ＣＲＣ生成部４２３が生成したＣＲＣ符号に基づいて異常値を算出し、当該異常値をＣＲＣ符号として設定する。そして、設定されたＣＲＣ符号は、送信制御されているＦＩＳに付与される。
【００８６】
異常値とは、当該ＣＲＣ符号を受け取ったホストシステム１５０が、確実にエラーであると判定する値とする。本実施の形態では、異常値として、ＳＡＴＡバス用ＣＲＣ生成部４２３が生成した正常なＣＲＣ値を２進数で表した場合の全ビットを反転した値を適用する。具体的な値の例については、後述する。
【００８７】
ＦＩＳインターフェイス４３３は、受信制御部４４１と、送信制御部４４２とを備え、ＳＡＴＡバス用のインターフェイスとして、ホストシステム１５０との間でデータ通信を行う。
【００８８】
受信制御部４４１は、ホストシステム１５０からＦＩＳの受信制御を行う。例えば、受信制御部４４１は、ホストシステム１５０から、ＰＩＯ（Programmed Input/Output）転送モードによるコマンドを受信する。受信するコマンドの例としては、リード・セクタ・コマンドやリード・マルチプル・コマンドなどとする。
【００８９】
送信制御部４４２は、ホストシステム１５０に対してＦＩＳの送信制御を行う。例えば、送信制御部４４２は、ＳＡＴＡバス用ＣＲＣ生成部４２３により生成されたＣＲＣ符号、又は異常ＣＲＣ値設定回路４３２により置換されたＣＲＣ符号と共に、読み出されたデータをＦＩＳとして、ホストシステム１５０に送信制御する。次に、ＣＲＣ符号について具体的に説明する。このＣＲＣ符号は、ハードディスクドライブ装置１００とホストシステム１５０とを結ぶＳＡＴＡバス上を、バスアナライザなどで観測することができる。
【００９０】
図５は、ごく短時間のノイズによってデータが化けた場合にＦＩＳから算出されたＣＲＣ符号と、送出されたＣＲＣ符号との違いを示した説明図である。図５に示すようにＣＲＣ符号は３２bitで表現される。そして、ノイズによってデータが化けたＦＩＳ内のデータから算出されたＣＲＣ符号が“7F630DA1h”であって、ＳＡＴＡバス上に送付されたＣＲＣ符号が“59B428E9h”とする。これらＣＲＣ符号間は、ＦＩＳ内のデータがノイズによって化けたことで、相関性が消失しており、全く異なった値となっている。これらＣＲＣ符号をビット表記で示した数列を、符号５０１に示してある。符号５０１で示した数列を、１ビット毎に比較すると、一部のビットは不一致となり、それ以外のビットが一致している。つまり、データの一部が化けたことにより、これらＣＲＣ符号間で一致する部分とそうでない部分が生じていることを意味する。
【００９１】
また、ＳＡＴＡの接触不良といったような、物理的な要因でエラーが発生する場合もある。この場合、物理的な動作が影響を及ぼす時間は、ＳＡＴＡバス上に流れる１つのＦＩＳの最長時間よりも、長いと考えられる。これは、１つのＦＩＳは、相当長くても数μ秒で転送されるが、振動などで接触不良が発生した場合は短くても数ミリ秒、普通なら数百ミリ秒〜長いと数秒の単位で電気信号に影響を与えると考えられるためである。このような場合においては、バスアナライザ等で観測した場合、ＳＡＴＡの通信が完全に途絶えた状態、すなわちＦＩＳそのものが観測されない状態になると想定される。つまり、このようなエラーが発生した場合は、ＦＩＳから算出されたＣＲＣ符号と、送出されたＣＲＣ符号との比較をそもそも行うことができない。
【００９２】
図６は、ハードディスクドライブ装置１００内でエラーが検出された場合における、ＦＩＳから算出されたＣＲＣ符号と、送出されたＣＲＣ符号との違いを示した説明図である。図６に示すように、ＦＩＳ内のデータから算出されたＣＲＣ符号が“7F630DA1h”であって、ＳＡＴＡバス上に送付されたＣＲＣ符号が“809CF25h”とする。これらＣＲＣ符号間は、異常ＣＲＣ値設定回路４３２でＣＲＣ符号が置換されたことで、当然に相関性が消失しており、全く異なった値となっている。これらＣＲＣ符号をビット表記で示した数列を、符号６０１に示してある。
【００９３】
符号６０１に示された２つの数列では、ＦＩＳの内容から計算した値と、ＳＡＴＡバス上に送出された値とが、全ビット反転していることが確認できる。
【００９４】
つまり、送出されたＣＲＣ符号が、ＦＩＳの内容から算出されたＣＲＣ符号と全ビットが反転することが、偶然生じる可能性はほとんど考えられないため、ハードディスクドライブ装置１００側で意図的に異常なＣＲＣ符号を送出しているとみなすことができる。なお、本実施の形態においては異常なＣＲＣ符号として、全ビット反転させた例について説明したが、ホストシステム１５０側でエラーを検出できるＣＲＣ符号であれば、どのような値であっても良い。
【００９５】
また、ホストシステム１５０は、上述したＣＲＣ符号を受信した場合に、当該ＣＲＣ符号と共に受信したＦＩＳの内容にエラーが存在していることも把握できる。なお、利用者が、バスアナライザでＳＡＴＡバスを観測した場合であっても、意図的に異常なＣＲＣ符号を送出していることを、確認できる。
【００９６】
そして、ホストシステム１５０が、異常なＣＲＣ符号を受信した場合に、エラーが検出された場合に必要な処理を行う。例えば、受信したデータを破棄した上で、再度リード・マルチプル・コマンドを送信するなどが考えられる。そして、ハードディスクドライブ装置１００では、例えば、キャッシュバッファメモリ１０８に格納している際にデータが化けたとみなした場合には、当該データを格納していたメモリセルの使用を禁止した上で、再度データの読み出しを行う等が考えられる。
【００９７】
図７は、本実施の形態にかかるホストシステム１５０とハードディスクドライブ装置１００との間で、データ転送時にハードディスクドライブ装置１００内部の伝送路上でエラーが生じた場合の処理手順を示したシーケンス図である。
【００９８】
まず、ホストシステム１５０は、ＰＩＯ転送モードのリード・マルチプル・コマンドを送信する（ステップＳ７０１）。当該コマンドの発行には、ＲｅｇＨ２Ｄ  ＦＩＳにて行われる。
【００９９】
そして、ホストシステム１５０は、ステップＳ７０１の送信をおこなった後、ハードディスクドライブ装置からＰＩＯ  Ｓｅｔｕｐ又はＲｅｇＤ２Ｈが送信されるまで待機する。
【０１００】
一方、ハードディスクドライブ装置１００は、受信したリード・マルチプル・コマンドに従って、セクタ（又はブロック）×ｎの読み出しを行う必要がある。そこで、ハードディスクドライブ装置１００のリード・ライト部４０４は、磁気ディスク１０７から、データを読み出し制御を行う（ステップＳ７０２）。そして、リード・ライト部４０４のエラー検出用ＣＲＣ生成回路４１５は、正常に読み出されたデータに対して、当該データからＣＲＣ符号の生成及び付与を行う（ステップＳ７０３）。
【０１０１】
その後、キャッシュ制御部は、付与されたＣＲＣ符号と共に、読み出されたデータをキャッシュバッファメモリ１０８に格納する（ステップＳ７０４）。
【０１０２】
その後、ハードディスクドライブ装置１００で送信するデータの準備が完了した後、ＳＡＴＡ制御部４０２内のＦＩＳインターフェイス４３３の送信制御部４４２が、ＰＩＯ  Ｓｅｔｕｐ  ＦＩＳの送信制御を行う（ステップＳ７０５）。
【０１０３】
当該ＦＩＳを受信したホストシステム１５０は、ハードディスクドライブ装置１００に対して、Ｄａｔａ  ＦＩＳにて１セクタ(もしくは１ブロック)分のデータの送信制御を開始する（ステップＳ７０６）。
【０１０４】
そして、当該送信制御に従って、ハードディスクドライブ装置１００内のキャッシュ制御部４０３がキャッシュバッファメモリ１０８から読み出されたデータに対して、エラー検出用ＣＲＣ確認回路４３１が、ステップＳ７０３で付与されたＣＲＣ符号に基づいて、エラーの有無を検出する（ステップＳ７０７）。
【０１０５】
そして、エラーが検出されたセクタが最後に読み出されたセクタではない場合、リンク層・トランスポート層制御部４２４が、タスクファイルレジスタ４２２の「Status  register」のＥＲＲフラグをセットする。本シーケンス図では、エラーが検出されたセクタが最後のセクタの場合とする。
【０１０６】
エラー検出用ＣＲＣ確認回路４３１が、ステップＳ７０７で、最後に読み出されたセクタからエラーを検出した場合、ＳＡＴＡバス用ＣＲＣ生成部４２３が当該データ用に生成したＣＲＣ符号から、異常ＣＲＣ値設定回路４３２が全ビット反転したＣＲＣ符号を生成し、送信処理されているＦＩＳ（データ）に対して付与する（ステップＳ７０８）。
【０１０７】
そして、ＦＩＳインターフェイス４３３の送信制御部４４２は、当該データと共に付与されたＣＲＣ符号を含むＦＩＳの送信制御を行うことで、データの転送が終了する（ステップＳ７０９）。
【０１０８】
そして、ホストシステム１５０は、データと共に受信したＣＲＣ符号から、当該データにエラーがあったものとして、当該エラーを対処するための処理を行う（ステップＳ７１０）。処理としては、受信したデータを破棄した上で、当該データを読み出す命令を、ハードディスクドライブ装置１００に対して送信する等が考えられる。
【０１０９】
上述した処理手順により、ＰＩＯ転送モード読み出されたデータで、ハードディスクドライブ装置１００内でエラーが生じた場合でも、ホストシステム１５０に対してエラーが生じたことを通知することができる。
【０１１０】
なお、本実施の形態においては、ＳＡＴＡ制御部４０２で、エラー検出用ＣＲＣ確認回路４３１でエラーの検出を行った。しかしながら、このような実施の形態に制限するものではなく、例えば、エラー検出符号の代わりにエラー訂正用符号をデータに予め付与した上で、ＳＡＴＡ制御部４０２内部にエラー訂正回路を備えても良い。これは、一般に、エラー訂正回路はエラー検知機能を併せ持つためである。
【０１１１】
本実施の形態にかかるハードディスクドライブ装置１００では、上述した構成を備えることで、既存のＰＩＯ転送モードについて一切変更を行うことなく、既存のＰＩＯ転送モードで通知できなかった内部エラー発生の報告をホストシステム１５０に対して通知することができる。
【０１１２】
本実施の形態にかかるハードディスクドライブ装置１００においては、磁気ディスク１０７からデータを正常に読み出した後、当該データをホストシステム１５０へ転送する際に用いる、ＨＤＣ１０１内のデータ転送経路、キャッシュバッファメモリ１０８、及びＨＤＣ１０１とキャッシュバッファメモリ１０８とを結ぶ転送経路上で、データの値が変化した場合に、ＰＩＯ転送モードで読み出した最後のデータであるため、エラーが発生した事をホストシステム１５０に通知できない状況の場合であっても、当該データに付与するＣＲＣ符号に異常値を設定することで、エラーが発生したことをホストシステム１５０に通知できる。
【０１１３】
本実施の形態においては、ＨＤＤにＳＡＴＡ規格を用いた場合について説明したが、ＳＡＴＡに制限するものではなく、ホスト−デバイス間/ホスト−ハブ間/ハブ−ハブ間/ハブ−デバイス間などを接続するバス上で生じたデータエラーそのものを検知する機構を備えた規格のインターフェースで接続するＨＤＤに適用しても良い。
【０１１４】
また、本実施の形態においては、ハードディスクドライブ装置１００は、ＳＡＴＡバスで接続されたホストシステム１５０とデータを送受信する例について説明したが、データの送受信先を制限するものではなく、さまざまな機器や構成との間で適用しても良い。
【０１１５】
また、本実施の形態においては、ＦＩＳインターフェイス４３３の送信制御部４４２が、データと共にＣＲＣ符号を含むＦＩＳを送信する例について説明したが、送信するデータをＦＩＳに制限するものではなく、エラー訂正用の符号が付与可能な通信規格であればよく、例えばデータの送受信にパケット等を用いてもよい。また、エラー検出用の符号をＣＲＣ符号に制限するものではなく、通信規格で送信可能な誤り検出用の符号であればよい。また、本実施の形態は、データの受け渡しにおいて、データ送信に限定するものではなく、誤りを検出用の符号の付与が可能な規格が定められていれば、どのようなデータの出力手段を用いて良い。
【０１１６】
また、本実施の形態は、ＰＩＯ転送モードでデータを転送するハードディスクドライブ装置１００の場合について説明したが、ハードディスクドライブ装置１００に制限するものではなく、例えばＣＤ―ＲＯＭなどの光メディア用のドライブ装置など、ＳＡＴＡバス等で接続されたデバイスであって、ＰＩＯ転送モードでデータを読み出すデバイスであれば適用できる。
【０１１７】
本実施の形態にかかるハードディスクドライブ装置１００では、ＰＩＯ転送モードなどの広く普及した標準規格に対して変更を加える事なく、今後無視できないレベルで発生することが予想される、ＨＤＣ１０１などのＬＳＩ内部のデータ伝送経路におけるデータ化けに対して適切に対処することができる。
【０１１８】
従来の技術では、ＰＩＯ転送モードで転送する際、磁気ディスクなどの記録媒体から正常にデータを読み出せた後、ホストシステムへデータを伝送する経路上で、最後に読み出したデータにデータ化けが生じた場合、ホストシステムに対して伝送したデータにエラーが含まれていることを通知できなかった。本実施の形態にかかるハードディスクドライブ装置１００では、上述した構成を備えることで、このような事態が生じても、ホストシステム１５０に対してデータ中にエラーが含まれていることを通知できる。
【０１１９】
なお、本実施の形態のホストシステム１５０は、ＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成とする。
【０１２０】
ところで、本実施の形態にかかるハードディスクドライブ装置１００で実行されるデータ制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１２１】
また、本実施の形態にかかるハードディスクドライブ装置１００で実行されるデータ制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかるハードディスクドライブ装置１００で実行されるデータ制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１２２】
また、本実施の形態にかかるハードディスクドライブ装置１００で実行されるデータ制御プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１２３】
本実施の形態のハードディスクドライブ装置１００で実行されるデータ制御プログラムは、上述した各部（エラー検出用ＣＲＣ生成回路、ＳＡＴＡバス用ＣＲＣ生成部、リンク層・トランスポート層制御部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ４０１が上記記憶媒体からデータ制御プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、エラー検出用ＣＲＣ生成回路、ＳＡＴＡバス用ＣＲＣ生成部、リンク層・トランスポート層制御部が主記憶装置上に生成してもよい。
【０１２４】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１２５】
１…電子機器、１００…ハードディスクドライブ装置、１０１…ＨＤＣ、１０２…ＳＰＭ、１０３…磁気ヘッド、１０４…アーム、１０５…軸、１０６…ヘッドアンプ、１０７…磁気ディスク、１０８…キャッシュバッファメモリ、１２０…ＳＡＴＡケーブル、１５０…ホストシステム、１５１…システムコントローラ、１６１…送信制御部、１６２…受信制御部、１６３…エラー検出用回路、４０１…ＣＰＵ、４０２…ＳＡＴＡ制御部、４０３…キャッシュ制御部、４０４…リード・ライト部、４１２…ＦＩＦＯ、４１３…ＥＣＣ演算回路、４１４…ＥＣＣ用一時記憶メモリ、４１５…エラー検出用ＣＲＣ生成回路、４２１…ＦＩＦＯ、４２２…タスクファイルレジスタ、４２３…ＳＡＴＡバス用ＣＲＣ生成部、４２４…リンク層・トランスポート層制御部、４３１…エラー検出用ＣＲＣ確認回路、４３２…異常ＣＲＣ値設定回路、４３３…ＦＩＳインターフェイス、４４１…受信制御部、４４２…送信制御部、４５１…第１伝送路、４５２…第２伝送路、４５３…第３伝送路
【図１】
2010286977.tif 000003
【図２】
2010286977.tif 000004
【図３】
2010286977.tif 000005
【図４】
2010286977.tif 000006
【図５】
2010286977.tif 000007
【図６】
2010286977.tif 000008
【図７】
2010286977.tif 000009
【手続補正書】
【提出日】平成22年4月6日(2010.4.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかるコントローラは、ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御手段と、前記データについて、エラーの有無を検出する検出手段と、前記検出手段によりエラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成手段と、前記エラーを示す値が設定された前記エラー検出符号と、前記データと、を送信する送信手段と、を備えることを特徴とする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、本発明にかかる電子機器は、ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御手段と、前記データについて、エラーの有無を検出する検出手段と、前記検出手段によりエラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成手段と、前記エラーを示す値が設定された前記エラー検出符号と、前記データと、を送信する送信手段と、を備えることを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
また、本発明にかかるデータ制御方法は、デバイスを制御する制御コントローラで実行されるデータ制御方法であって、読出制御手段が、ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御ステップと、前記データについて、エラーの有無を検出する検出ステップと、エラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成ステップと、送信手段が、前記エラーを示す値が設定された前記エラー検出符号と、前記データと、を送信する送信ステップと、を含むことを特徴とする。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御手段と、
前記データについて、エラーの有無を検出する検出手段と、
前記検出手段によりエラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成手段と、
前記エラーを示す値で生成された前記エラー検出符号と、前記データと、を送信する送信手段と、
を備えることを特徴とするコントローラ。
【請求項２】
前記エラー検出符号は、ＣＲＣ（Cyclic  Redundancy  Check）符号であること、
を特徴とする請求項１に記載のコントローラ。
【請求項３】
前記設定手段は、シリアルＡＴＡ（Serial  Advanced  Technology  Attachment）規格で通信される前記データに付与される前記ＣＲＣ（Cyclic  Redundancy  Check）符号に対して、エラーを示す値を設定すること、
を特徴とする請求項２に記載のコントローラ。
【請求項４】
前記送信手段は、前記シリアルＡＴＡ規格のデータともに、前記ＣＲＣ符号を送信すること、
を特徴とする請求項３に記載のコントローラ。
【請求項５】
前記データに対して、前記エラー検出符号を付与する検出符号付与手段を、さらに備えたことを特徴とする請求項１乃至４のいずれか一つに記載のコントローラ。
【請求項６】
前記エラー検出符号とともに、読み出した前記データを、前記送信手段に転送する通信路を、さらに備えたことを特徴とする請求項５に記載のコントローラ。
【請求項７】
前記検出手段は、前記通信路で転送中の前記データについて、エラーを検出すること、を特徴とする請求項６に記載のコントローラ。
【請求項８】
ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御手段と、
前記データについて、エラーの有無を検出する検出手段と、
前記検出手段によりエラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成手段と、
前記エラーを示す値が設定された前記エラー検出符号と、前記データと、を送信する送信手段と、
を備えることを特徴とする電子機器。
【請求項９】
前記エラー検出符号は、ＣＲＣ（Cyclic  Redundancy  Check）符号であること、
を特徴とする請求項８に記載の電子機器。
【請求項１０】
前記設定手段は、シリアルＡＴＡ（Serial  Advanced  Technology  Attachment）規格で通信される前記データに付与される前記ＣＲＣ（Cyclic  Redundancy  Check）符号に対して、エラーを示す値を設定すること、
を特徴とする請求項９に記載の電子機器。
【請求項１１】
前記送信手段は、前記シリアルＡＴＡ規格のデータとともに、前記ＣＲＣ符号を送信すること、
を特徴とする請求項１０に記載の電子機器。
【請求項１２】
前記データに対して、前記エラー検出符号を付与する検出符号付与手段を、さらに備えたことを特徴とする請求項８乃至１１のいずれか一つに記載の電子機器。
【請求項１３】
前記エラー検出符号とともに、読み出した前記データを、前記送信手段に転送する通信路を、さらに備えたことを特徴とする請求項１２に記載の電子機器。
【請求項１４】
前記検出手段は、前記通信路で転送中の前記データについて、エラーを検出すること、を特徴とする請求項１３に記載の電子機器。
【請求項１５】
デバイスを制御する制御コントローラで実行されるデータ制御方法であって、
ＰＩＯ（Programmed  Input/Output）転送による読出命令を受け付けた際に、記憶媒体からデータの読出制御を行う読出制御ステップと、
前記データについて、エラーの有無を検出する検出ステップと、
エラーが検出された場合、ホスト装置に対する送信におけるエラーを示すエラー検出符号を、エラーを示す値で生成する符号生成ステップと、
前記エラーを示す値が設定された前記エラー検出符号と、前記データと、を送信する送信ステップと、
を含むことを特徴とするデータ制御方法。