(57)【要約】【課題】シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置で、バッファメモリにおいて正常データがエラーデータで上書きされることによるデータの消失を防ぐことを可能とし、ディスク装置の信頼性を高めること。【解決手段】ディスク装置１００において、ディスク書込データ選択部１１６が、ホスト２００から受領した受領データをバッファメモリ１０３の未使用領域に格納するとともに、ホストインタフェース制御部１０１が受領データのエラーをチェックし、受領データからエラー箇所を除いた有効データと書き込み位置が重複するデータがバッファメモリ１０３に格納されていた場合は、ディスク書込データ選択部１１６が、バッファメモリ１０３に先に格納されていたデータの重複箇所を削除するよう構成する。【選択図】        図１
2007179085.tif 000002
【特許請求の範囲】
【請求項１】
シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置であって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手段と、
前記有効データ特定手段によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手段と、
を備えたことを特徴とするディスク装置。
【請求項２】
前記有効データ特定手段は、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納する際に、該受領データを格納可能な未使用領域が前記バッファメモリに存在していなかった場合は、前記バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で該受領データを格納することを特徴とする請求項１に記載のディスク装置。
【請求項３】
前記有効データ特定手段は、前記上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することを特徴とする請求項１または２に記載のディスク装置。
【請求項４】
シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置におけるディスク書込データ選択方法であって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定工程と、
前記有効データ特定工程によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除工程と、
を含んだことを特徴とするディスク書込データ選択方法。
【請求項５】
シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置に内蔵されたコンピュータで実行されるディスク書込データ選択プログラムであって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手順と、
前記有効データ特定手順によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手順と、
をコンピュータに実行させることを特徴とするディスク書込データ選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラムに関し、特に、バッファメモリにおいて正常データがエラーデータで上書きされることによるデータの消失を防ぐことによって信頼性を高めたディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラムに関するものである。
【背景技術】
【０００２】
近年、例えばシリアルＡＴＡなどのシリアルインタフェースを備えたディスク装置においては、アクセス性能を高めるために、上位装置から受領した書き込み用のデータを、一旦、ディスク装置内部のバッファメモリに取り込み、その段階で上位装置に対しては書き込み完了通知を発行しておき、その後、所定のタイミングで、バッファメモリに蓄積したデータをディスク媒体へ書き込む、いわゆるライトキャッシュ機能を備えたものが広く用いられている。
【０００３】
このようなライトキャッシュ機能を備えたディスク装置では、書き込み動作において上位装置に対して完了通知を発行した後、バッファメモリに蓄積したデータをディスク媒体へ書き込む際に書き込みエラーが発生した場合は、バッファメモリに残っている、ディスク媒体にまだ書き込まれていないデータを救済する方法について考慮が必要となる。
【０００４】
そこで、特許文献１に記載されたディスク装置では、バッファメモリに蓄積したデータをディスク媒体に書き込む際に書き込みエラーが発生した場合は、当該ディスク媒体に対する以降の書き込み処理を保留し、その後、当該ディスク媒体に対する他の書き込み命令を上位装置から受領したタイミングで、上位装置に対してエラー情報を通知し、そのエラー情報に応じて上位装置から通知されるリスタートコマンドを受けて、保留していた書き込み処理を再開するようにしている。
【０００５】
ところで、前述したライトキャッシュ機能を備えた従来のディスク装置では、上位装置から受領したデータをバッファメモリに取り込む際に、当該データと書き込みアドレスが重複するデータがバッファメモリに既に蓄積されていた場合は、バッファメモリ内に先に格納していたデータの当該重複箇所に対して上位装置から受領したデータを上書きしている。
【０００６】
こうすることにより、当該重複箇所とその前後のデータが書き込みアドレス順に連続して配置されることになり、ディスク装置は、バッファメモリに蓄積されたデータをディスク媒体に書き込みする際に効率良く書き込み処理を行うことができる。
【０００７】
【特許文献１】特開平２−６４８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したライトキャッシュ機能を備えたディスク装置において発生する主なエラーとしては、バッファメモリに蓄積したデータをディスク媒体に書き込む際に発生する書き込みエラーの他に、上位装置からデータを取り込む際にインタフェース上で発生する通信エラーが考えられる。
【０００９】
シリアルインタフェースを備えたディスク装置においては、上位装置から受領するデータは複数のセクタ単位のデータを含んだパケットデータの単位で転送される。このパケットデータには、転送するパケットデータの内容に基づいて生成されたＣＲＣ（Cyclic Redundancy Check）データが含まれており、このＣＲＣデータと、転送後のパケットデータの内容に基づいて生成したＣＲＣデータとを比較することによって、インタフェース上で通信エラーが発生しているか否かをチェックすることができる。
【００１０】
このチェックによって通信エラーを検知した場合、ディスク装置は、エラーが検出されたデータの再送を上位装置に対して要求するが、インタフェース上の通信エラーによって正しいデータを再度受領することができない状況も考えられる。
【００１１】
この状況で、バッファメモリにおいて、前述した、書き込みアドレスの重複によるデータの上書きが行われていた場合は、先にバッファメモリに格納していた重複箇所のデータはエラー検出データによって上書きされたまま消失してしまうことになり、これによりディスク装置の信頼性が低下してしまうという問題がある。
【００１２】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、バッファメモリにおいて正常データがエラーデータで上書きされることによるデータの消失を防ぐことによって信頼性を高めたディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、請求項１の発明に係るディスク装置は、シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置であって、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手段と、前記有効データ特定手段によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手段と、を備えたことを特徴とする。
【００１４】
また、請求項２の発明に係るディスク装置は、請求項１の発明において、前記有効データ特定手段は、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納する際に、該受領データを格納可能な未使用領域が前記バッファメモリに存在していなかった場合は、前記バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で該受領データを格納することを特徴とする。
【００１５】
また、請求項３の発明に係るディスク装置は、請求項１または２の発明において、前記有効データ特定手段は、前記上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することを特徴とする。
【００１６】
また、請求項４の発明に係るディスク書込データ選択方法は、シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置におけるディスク書込データ選択方法であって、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定工程と、前記有効データ特定工程によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除工程と、を含んだことを特徴とする。
【００１７】
また、請求項５の発明に係るディスク書込データ選択プログラムは、シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置に内蔵されたコンピュータで実行されるディスク書込データ選択プログラムであって、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手順と、前記有効データ特定手順によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１８】
請求項１、４および５の発明によれば、上位装置から受領した受領データをバッファメモリの未使用領域に格納するとともに、受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、受領データからエラー箇所を削除することによって有効データを特定し、さらに、特定した有効データと書き込み位置が重複する箇所を含んだデータがバッファメモリ内に存在しているか否かを確認し、存在していた場合は、バッファメモリに先に格納されていたデータの重複箇所を削除するよう構成したので、ホストインタフェース上で通信エラーが発生することによって上位装置から受領したデータにエラーデータが含まれていた場合でも、バッファメモリ内に蓄えたディスク媒体への書き込みデータを、エラーデータを除いたデータで再度構成し直すことが可能となり、バッファメモリにおいて正常データがエラーデータで上書きされることによるデータの消失を防ぐことができるという効果を奏する。
【００１９】
また、請求項２の発明によれば、上位装置から受領した受領データをバッファメモリの未使用領域に格納する際に、受領データを格納可能な未使用領域がバッファメモリに存在していなかった場合は、バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で受領データを格納するよう構成したので、上位装置から頻繁にデータが転送される場合でも、自動的にバッファメモリに空き領域を確保して受領したデータを格納することが可能となり、バッファメモリにおいて正常データがエラーデータで上書きされることによるデータの消失を防ぐことができるという効果を奏する。
【００２０】
また、請求項３の発明によれば、上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除するよう構成したので、エラー箇所をより細かな単位で削除することが可能となり、上位装置から受領したデータを可能な限り有効なデータをとしてディスク媒体に書き込むことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係るディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラムの好適な実施例を詳細に説明する。なお、本実施例では、本発明を磁気ディスク装置に適用した場合について説明する。
【実施例】
【００２２】
まず、本実施例に係るディスク装置の構成について説明する。図１は、本実施例に係るディスク装置の構成を示す機能ブロック図である。同図に示すように、このディスク装置１００は、ホストインタフェース３００を介してパーソナルコンピュータなどのホスト２００（上位装置）に接続されている。このホストインタフェース３００には、例えば、シリアルＡＴＡインタフェースが用いられている。
【００２３】
また、ディスク装置１００は、ホストインタフェース制御部１０１と、バッファ制御部１０２と、バッファメモリ１０３と、フォーマット制御部１０４と、リードチャネル１０５と、ヘッドＩＣ１０６と、ヘッド１０７と、ディスク媒体１０８と、サーボ制御部１０９と、ＶＣＭ（Voice Coil Motor：ボイスコイルモーター）１１０と、ＳＰＭ（Spindle Motor：スピンドルモーター）１１１と、不揮発性メモリ１１２と、メモリ１１３と、ＭＰＵ１１４とを備えている。
【００２４】
そして、ホストインタフェース制御部１０１と、バッファ制御部１０２と、フォーマット制御部１０４と、リードチャネル１０５と、ヘッドＩＣ１０６と、サーボ制御部１０９と、不揮発性メモリ１１２と、メモリ１１３と、ＭＰＵ１１４とは、コモンバス１１５を介して接続されている。
【００２５】
ホストインタフェース制御部１０１は、ホストインタフェース３００を介してホスト２００とディスク装置１００との間でやり取りされるデータの入出力を制御する制御部である。具体的には、このホストインタフェース制御部１０１は、書き込み動作においては、ホスト２００から受領したパケットデータをバッファ制御部１０２に転送するとともに、当該パケットデータにエラーが発生しているか否かを判定する。
【００２６】
ここで、ホストインタフェース３００を介してホスト２００から転送されるデータは、複数のセクタ単位のデータを含んだパケットデータの単位で転送され、各パケットデータには、データのエラーを検出するためのＣＲＣ（Cyclic Redundancy Check）データが含まれている。このＣＲＣデータは、転送するパケットデータの内容をもとにＣＲＣ方式による計算を行うことによって生成されている。
【００２７】
そして、ホストインタフェース制御部１０１は、ホスト２００から受領したパケットデータをもとにＣＲＣデータを新たに生成し、この新たなＣＲＣデータと、受領したパケットデータに既に含まれていたＣＲＣデータとを比較し、両者が一致しているか否かを確認する。ここで、両者が一致していた場合は、ホストインタフェース制御部１０１は、受領したパケットデータにはエラーが発生していないと判定する。
【００２８】
一方、両者が一致していなかった場合は、ホストインタフェース制御部１０１は、受領したデータにエラーが発生していると判定し、ホストインタフェース３００を介してホスト２００に対してエラーを通知するとともに、エラーを検出したデータ以降のデータの再送を要求する。
【００２９】
また、読み込み動作においては、ホストインタフェース制御部１０１は、バッファ制御部１０２から転送された読み込みデータをホスト２００に転送する。
【００３０】
このように、ホストインタフェース制御部１０１が、ホスト２００から受領したパケットデータに含まれるＣＲＣデータに基づいてエラーをチェックすることによって、パリティ・チェックやチェックサムに比べて高い精度でエラーを検出することができる。
【００３１】
バッファ制御部１０２は、バッファメモリ１０３へのデータの入出力を制御する制御部である。具体的には、このバッファ制御部１０２は、書き込み動作においては、ホストインタフェース制御部１０１から転送された書き込みデータをバッファメモリ１０３に格納するとともに、書き込みの完了通知を発行する。ここで発行された完了通知は、ホストインタフェース制御部１０１およびホストインタフェース１０１を経由し、ホスト２００に対して送信される。
【００３２】
そして、バッファ制御部１０２は、バッファメモリ１０３に蓄積したデータを所定のタイミング（バッファメモリ１０３が一杯になった場合等）で取り出し、フォーマット制御部１０４に転送する。ここでフォーマット制御部１０４に転送されたデータは、その後、リードチャネル１０５およびヘッドＩＣ１０６を経由してヘッド１０７に送られ、ディスク媒体１０８上の指定された書き込みアドレスに書き込まれる。
【００３３】
一方、読み込み動作においては、バッファ制御部１０２は、ホスト２００から指定された読み込みアドレスに対応するデータをバッファメモリ１０３から取り出し、ホストインタフェース１０１を経由してホスト２００に転送する。ここで、指定された読み込みアドレスに対応するデータがバッファメモリ１０３に格納されていなかった場合、バッファ制御部１０２は、後述するフォーマット制御部１０４に指示することによってディスク媒体１０８から当該データを読み込み、一旦バッファメモリ１０３に格納した上でホスト２００に転送する。
【００３４】
バッファメモリ１０３は、ホスト２００から受領した書き込みデータや、ディスク媒体１０８から読み込んだ読み込みデータを一時的に格納するメモリであり、ホスト２００とディスク装置１００の間の通信速度（高速）と、ディスクの読み書き速度（低速）との差を吸収するための緩衝用のメモリとして用いられる。
【００３５】
フォーマット制御部１０４は、ディスク媒体１０８に対するデータの書き込みおよび読み込みを制御する制御部である。具体的には、このフォーマット制御部１０４は、バッファメモリ１０３に格納されているデータとディスク媒体１０８上のデータとの対応付けを記憶しており、書き込み動作においては、ディスク媒体１０８上にデータが効率良く配置されるように書き込みを制御する。また、読み込み動作においては、ディスク媒体１０８から読み込んだデータをバッファ制御部１０２に転送する。
【００３６】
リードチャネル１０５は、書き込み動作においては、ディスク媒体１０８に書き込むデータを符号化してフォーマット制御部１０４からヘッドＩＣ１０６に転送し、読み込み動作においては、ディスク媒体１０８から読み込んだデータを複合化してヘッドＩＣ１０６からフォーマット制御部１０４に転送するＩＣである。
【００３７】
ヘッドＩＣ１０６は、書き込み動作においては、ヘッド１０７がディスク媒体１０８に書き込むデータを変調し、読み込み動作においては、ヘッド１０７がディスク媒体１０８から読み込んだデータを復調するＩＣである。
【００３８】
ディスク媒体１０８は、ホスト２００とディスク装置１００との間で入出力されるデータを記憶する磁気ディスクであり、ヘッド１０７は、磁気ディスクであるディスク媒体１０８へのデータの書き込みや、ディスク媒体１０８からのデータの読み込みを行う磁気ヘッドである。
【００３９】
サーボ制御部１０９は、ＶＣＭ１１０とＳＰＭ１１１の動作を制御する制御部であり、ＶＣＭ１１０は、ディスク媒体上の目的の位置までヘッド１０７を移動するためのモーターであり、ＳＰＭ１１１は、ディスク媒体１０８を回転するためのモーターである。
【００４０】
不揮発性メモリ１１２は、ディスク装置１００を制御する制御プログラムを記憶するＲＯＭであり、メモリ１１３は、制御プログラムの実行途中結果や、制御用のデータを記憶するＲＡＭである。
【００４１】
ＭＰＵ１１４は、不揮発性メモリ１１２から制御プログラムを読み出して実行することによってディスク装置１００全体の制御を行う処理装置である。このＭＰＵ１１４では種々の処理が行われるが、その中には、書き込み動作において処理が行われるディスクディスク書込データ選択部１１６が含まれている。
【００４２】
ディスク書込データ選択部１１６は、ホスト２００から受領した書き込みデータに含まれるエラーデータを削除して有効データを特定し、この有効データと書き込みアドレスが重複するデータがバッファメモリ１０３内に存在するか否かを確認し、存在していた場合は、バッファメモリ１０３に先に格納されていたデータの重複箇所を削除することにより、ディスク媒体１０８に書き込むためのデータを再構成する処理部である。このディスク書込データ選択部１１６は、書き込み動作において、ＭＰＵ１１４内で動作する。
【００４３】
具体的には、ディスク書込データ選択部１１６は、まず、バッファメモリ１０３内の未使用領域を検索する。そして、バッファ制御部１０２を制御し、検索した未使用領域に書き込みデータを格納する。
【００４４】
ここで、前述したホストインタフェース制御部１０１によって、バッファメモリ１０３の未使用領域に格納したデータにエラーが検出されていた場合は、ディスク書込データ選択部１１６は、当該データからエラーデータを除くことによって有効データを特定する。
【００４５】
図２は、有効データを特定する動作を説明するための図である。同図に示すように、バッファメモリ１０３の未使用領域に格納したデータにエラーが検出されている場合は、ディスク書込データ選択部１１６は、エラー検出時点でバッファメモリ１０３に取り込んでいた最終データの取り込み終了位置を示すアドレスから、エラーが検出されたパケットデータのサイズ分だけ戻った位置を算出することによって有効データの終了位置を特定する。一方、受領したデータにエラーが検出されていない場合は、バッファメモリ１０３の未使用領域に格納したデータ全てが有効データとなる。
【００４６】
なお、図２においては、エラーが検出されたパケットデータのサイズ分だけアドレスを戻す場合を説明したが、さらに、パケットデータに含まれるセクタ単位でエラーデータが特定できた場合は、書込データ選択部４１５は、エラー検出時点でバッファメモリ１０３に取り込んでいた最終データの取り込み終了位置を示すアドレスから、エラーが検出されたセクタの開始位置まで戻った位置を算出することによって有効データの終了位置を特定する。
【００４７】
このように、ホスト２００から受領したデータからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することによって、エラー箇所をより細かな単位で削除することが可能となり、ホスト２００から受領したデータを可能な限り有効なデータをとしてディスク媒体１０８に書き込むことができる。
【００４８】
そして、ディスク書込データ選択部１１６は、特定した有効データと、バッファメモリ１０３内に存在する他のデータとを比較し、書き込みアドレスが重複している箇所が存在していた場合は、先にバッファメモリ１０３に格納されていたデータから当該重複箇所を削除する。
【００４９】
このように、ディスク書込データ選択部１１６が、ホスト２００から受領した書き込みデータに含まれるエラーデータを特定し、そのエラーデータを除くことにより有効データを特定し、特定した有効データを含めたバッファメモリ１０３内のデータから書き込みアドレスが重複しているデータを削除することによって、バッファメモリ１０３内に蓄えたディスク媒体１０８への書き込みデータを、エラーデータを除いたデータで再度構成し直すことが可能となり、バッファメモリ１０３において正常データがエラーデータで上書きされることによるデータの消失を防ぐことができる。
【００５０】
ところで、ディスク書込データ選択部がバッファメモリ１０３内の未使用領域を検索した際、バッファメモリ１０３内に、ホスト２００から受領した書き込みデータを格納できる大きさの未使用領域が存在していない場合もある。この場合、ディスク書込データ選択部１１６は、バッファ制御部１０２を制御してバッファメモリ１０３に格納されているデータをフォーマット制御部１０４に転送し、未使用領域を確保する。そして、ディスク書込データ選択部１１６は、確保した未使用領域に書き込みデータを格納する。
【００５１】
このように、ホスト２００から受領した書き込みデータをバッファメモリ１０３の未使用領域に格納する際に、書き込みデータを格納可能な未使用領域がバッファメモリ１０３に存在していなかった場合は、ディスク書込データ選択部１１６が、既に格納されているデータをディスク媒体１０８に書き込むことによって未使用領域を確保した上でバッファメモリ１０３に書き込みデータを格納することとしたので、ディスク装置１００は、ホスト２００から頻繁にデータが転送される場合でも、自動的にバッファメモリ１０３に空き領域を確保して受領したデータを格納することが可能となり、バッファメモリ１０３において正常データがエラーデータで上書きされることによるデータの消失を防ぐことができる。
【００５２】
次に、ディスク書込データ選択部１１６による書込データ選択処理の処理手順について説明する。図３は、ディスク書込データ選択部１１６における書込データ選択処理の処理手順を示すフローチャートである。同図に示すように、書込データ選択処理においては、ディスク書込データ選択部１１６は、ホスト２００から受領したデータにエラーが発生していた場合は（ステップＳ１０１，Ｙｅｓ）、まず、受領したデータ内のエラーデータの範囲を特定するためのエラーデータ特定処理を行う（ステップＳ１０２）。一方、受領したデータにエラーが発生していなかった場合は（ステップＳ１０１，Ｎｏ）、エラーデータは無いと判断してエラーデータ特定処理をスキップする。エラーデータ特定処理の詳細については、後述する。
【００５３】
エラーデータ特定処理によってエラーデータの範囲が特定されると、ディスク書込データ選択部１１６は、受領したデータ内の有効データの範囲を特定するための有効データ特定処理を行う（ステップＳ１０３）。有効データ特定処理の詳細については後述する。
【００５４】
有効データ特定処理によって有効データの範囲が特定されると、ディスク書込データ選択部１１６は、その有効データを含めたバッファメモリ内の全てのデータから書き込みアドレスが重複するデータを削除するための書込データマージ処理を行う。書込データマージ処理の詳細については後述する。
【００５５】
次に、図３に示したエラーデータ特定処理の処理手順について説明する。図４は、図３に示したエラーデータ特定処理の処理手順を示すフローチャートである。同図に示すように、エラーデータ特定処理においては、ディスク書込データ選択部１１６は、まず、エラー検出時点までに受領したデータのサイズを算出する（ステップＳ２０１）。
【００５６】
また、ディスク書込データ選択部１１６は、エラーが検出されたパケットデータにおいて、セクタ単位でエラー箇所を限定できるか否かを確認し、セクタ単位で限定できた場合は（ステップＳ２０２，Ｎｏ）、当該セクタ以降をエラーデータと特定する（ステップＳ２０４）。一方、セクタ単位で限定できなかった場合は（ステップＳ２０２，Ｙｅｓ）、エラーが検出されたパケットデータ全体をエラーデータと特定する（ステップＳ２０３）。そして、ディスク書込データ選択部１１６は、特定したエラーデータのサイズを算出する。
【００５７】
次に、図３に示した有効データ特定処理の処理手順について説明する。図５は、図３に示した有効データ特定処理の処理手順を示すフローチャートである。同図に示すように、有効データ特定処理においては、ディスク書込データ選択部１１６は、まず、エラー検出時点でバッファメモリ１０３に取り込んでいた最終データの取り込み終了位置から、エラーデータ特定処理で算出した、エラー検出時点までに受領したデータのサイズ分だけ位置を戻すことによって、受領したデータの取り込み開始位置を算出する（ステップＳ３０１）。
【００５８】
また、ディスク書込データ選択部１１６は、エラー検出時点でバッファメモリ１０３に取り込んでいた最終データの取り込み終了位置から、エラーデータ特定処理で算出したエラーデータのサイズ分だけ位置を戻すことによって、受領したデータのエラーデータ開始位置を算出する（ステップＳ３０２）。
【００５９】
そして、算出した取り込み開始位置およびエラーデータ開始位置を基に有効データを特定する（ステップＳ３０３）。なお、ホストインタフェース制御部１０１でエラーが検出されなかった場合は、受領したデータ全てを有効データとする。
【００６０】
次に、図３に示した書込データマージ処理の処理手順について説明する。図６は、図３に示した書込データマージ処理の処理手順を示すフローチャートである。同図に示すように、書込データマージ処理においては、ディスク書込データ選択部１１６は、まず、有効データ特定処理で範囲を特定した有効データと、バッファメモリ１０３内に存在する他のデータとを比較し、書き込みアドレスが重複している箇所が存在するか否かを確認する（ステップＳ４０１）。
【００６１】
そして、重複する箇所が存在していた場合は、古いデータ、すなわち先にバッファメモリ１０３に格納されていたデータから当該重複箇所を削除する（ステップＳ４０２）。
【００６２】
このように、ディスク書込データ選択部１１６が、ホスト２００から受領した書き込みデータから有効データを特定し、この有効データを含めたバッファメモリ１０３内のデータから書き込みアドレスが重複しているデータを削除することによって、バッファメモリ１０３内に蓄えたディスク媒体１０８への書き込みデータを、エラーデータを除いたデータで再度構成し直すことが可能となり、バッファメモリ１０３において正常データがエラーデータで上書きされることによるデータの消失を防ぐことができる。
【００６３】
上述してきたように、ディスク書込データ選択部１１６が、ホスト２００から受領した受領データをバッファメモリ１０３の未使用領域に格納するとともに、ホストインタフェース制御部１０１が受領データのエラーをチェックし、受領データからエラー箇所を除いた有効データと書き込み位置が重複するデータがバッファメモリ１０３に格納されていた場合は、ディスク書込データ選択部１１６が、バッファメモリ１０３に先に格納されていたデータの重複箇所を削除することとしたので、ホストインタフェース３００上で通信エラーが発生することによってホスト２００から受領したデータにエラーデータが含まれていた場合でも、バッファメモリ１０３内に蓄えたディスク媒体１０８への書き込みデータを、エラーデータを除いたデータで再度構成し直すことが可能となり、バッファメモリ１０３において正常データがエラーデータで上書きされることによるデータの消失を防ぐことができる。
【００６４】
また、本実施例では、磁気ディスク装置について説明したが、本発明はこれに限定されるものではなく、光ディスク装置や、光磁気ディスク装置にも同様に適用することができる。
【００６５】
（付記１）シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置であって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手段と、
前記有効データ特定手段によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手段と、
を備えたことを特徴とするディスク装置。
【００６６】
（付記２）前記有効データ特定手段は、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納する際に、該受領データを格納可能な未使用領域が前記バッファメモリに存在していなかった場合は、前記バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で該受領データを格納することを特徴とする付記１に記載のディスク装置。
【００６７】
（付記３）前記有効データ特定手段は、前記上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することを特徴とする付記１または２に記載のディスク装置。
【００６８】
（付記４）シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置におけるディスク書込データ選択方法であって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定工程と、
前記有効データ特定工程によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除工程と、
を含んだことを特徴とするディスク書込データ選択方法。
【００６９】
（付記５）前記有効データ特定工程は、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納する際に、該受領データを格納可能な未使用領域が前記バッファメモリに存在していなかった場合は、前記バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で該受領データを格納することを特徴とする付記４に記載のディスク書込データ選択方法。
【００７０】
（付記６）前記有効データ特定工程は、前記上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することを特徴とする付記４または５に記載のディスク書込データ選択方法。
【００７１】
（付記７）シリアルインタフェースを備え、バッファメモリを経由してデータの入出力を行うディスク装置に内蔵されたコンピュータで実行されるディスク書込データ選択プログラムであって、
前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納するとともに該受領データにエラーが発生しているか否かをチェックし、エラーが発生していた場合は、前記受領データから該エラー箇所を削除することによって有効データを特定する有効データ特定手順と、
前記有効データ特定手順によって特定された有効データと書き込み位置が重複する箇所を含んだデータが前記バッファメモリ内に存在しているか否かを確認し、存在していた場合は、前記バッファメモリに先に格納されていたデータの該重複箇所を削除する重複データ削除手順と、
をコンピュータに実行させることを特徴とするディスク書込データ選択プログラム。
【００７２】
（付記８）前記有効データ特定手順は、前記上位装置から受領した受領データを前記バッファメモリの未使用領域に格納する際に、該受領データを格納可能な未使用領域が前記バッファメモリに存在していなかった場合は、前記バッファメモリに既に格納されているデータをディスク媒体に書き込むことによって未使用領域を確保した上で該受領データを格納することを特徴とする付記７に記載のディスク書込データ選択プログラム。
【００７３】
（付記９）前記有効データ特定手順は、前記上位装置から受領した受領データからエラー箇所を削除する際に、セクタ単位でエラーが特定できた場合は、セクタ単位でエラー箇所を削除し、パケット単位でしかエラーが特定できなかった場合は、パケット単位でエラー箇所を削除することを特徴とする付記７または８に記載のディスク書込データ選択プログラム。
【産業上の利用可能性】
【００７４】
以上のように、本発明に係るディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラムは、シリアルインタフェースを備えたディスク装置に有用であり、特に、アクセス頻度が高い等の理由で上位装置との間の通信エラーが懸念される場合に適している。
【図面の簡単な説明】
【００７５】
【図１】本実施例に係るディスク装置の構成を示す機能ブロック図である。
【図２】有効データを特定する動作を説明するための図である。
【図３】ディスク書込データ選択部における書込データ選択処理の処理手順を示すフローチャートである。
【図４】図３に示したエラーデータ特定処理の処理手順を示すフローチャートである。
【図５】図３に示した有効データ特定処理の処理手順を示すフローチャートである。
【図６】図３に示した書込データマージ処理の処理手順を示すフローチャートである。
【符号の説明】
【００７６】
１００    ディスク装置
１０１    ホストインタフェース制御部
１０１ａ    ホストデータ振分部
１０１ｂ    ディスクデータ振分部
１０１ｃ、１０１ｄ    ＣＲＣチェック部
１０１ｅ、１０１ｆ    ＦＩＦＯ
１０２    バッファ制御部
１０３    バッファメモリ
１０４    フォーマット制御部
１０５    リードチャネル
１０６    ヘッドＩＣ
１０７    ヘッド
１０８    ディスク媒体
１０９    サーボ制御部
１１０    ＶＣＭ（Voice Coil Motor：ボイスコイルモーター）
１１１    ＳＰＭ（Spindle Motor：スピンドルモーター）
１１２    不揮発性メモリ
１１３    メモリ
１１４    ＭＰＵ
１１５    コモンバス
１１６    ディスク書込データ選択部
２００    ホスト
３００    ホストインタフェース
【図１】
2007179085.tif 000003
【図２】
2007179085.tif 000004
【図３】
2007179085.tif 000005
【図４】
2007179085.tif 000006
【図５】
2007179085.tif 000007
【図６】
2007179085.tif 000008