(57)【要約】【課題】パケットの受信に係るエラー処理を迅速かつ効率的におこなうことのできるストレージ制御装置およびストレージ制御プログラムを提供する。【解決手段】FIS属性登録部１３が、コマンドに対応して受信することが予期されるFISの属性に係る情報をそれぞれ登録し、FIS属性取得部１２が、受信したFISの属性に係る情報を取得し、受信エラー処理実行部１４が、FIS属性取得部１３により取得されたFISの属性に係る情報が、FIS属性登録部１３により登録されたFISの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する。【選択図】        図１
2005092497.tif 000002
【特許請求の範囲】
【請求項１】
所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御装置であって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手段と、
受信した前記パケットの属性に係る情報を取得する属性取得手段と、
前記属性取得手段により取得されたパケットの属性に係る情報が、前記属性登録手段により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手段と、
を備えたことを特徴とするストレージ制御装置。
【請求項２】
前記パケットの属性に係る情報は、該パケットのタイプに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットのタイプに係る情報が、前記属性登録手段に登録されたパケットのタイプに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記パケットの属性に係る情報は、該パケットの長さに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットの長さに係る情報が、前記属性登録手段に登録されたパケットの長さに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記パケットの属性に係る情報は、該パケットを受信する順番に係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットを受信する順番に係る情報が、前記属性登録手段に登録されたパケットを受信する順番に係る情報と対応しない受信エラーが発生した場合に、受信したパケットを保持して所定の受信エラー処理を実行することを特徴とする請求項１、２または３に記載のストレージ制御装置。
【請求項５】
所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御プログラムであって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手順と、
受信した前記パケットの属性に係る情報を取得する属性取得手順と、
前記属性取得手順により取得されたパケットの属性に係る情報が、前記属性登録手順により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手順と、
をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、所定のコマンドを実行するのに必要なデータを含んだパケットを受信して当該コマンドを実行するストレージ制御装置およびストレージ制御プログラムに関し、特に、パケットの受信に係るエラー処理を迅速かつ効率的におこなうことのできるストレージ制御装置およびストレージ制御プログラムに関するものである。
【背景技術】
【０００２】
近年、ハードディスク装置などストレージ装置に対するストレージインターフェース規格として、Serial ATA（Serial AT Attachment）が用いられるようになってきている。このSerial ATAでは、ホストコンピュータからのコマンドをハードディスク装置が実行する場合に、ホストコンピュータとハードディスク装置とが、FIS（Frame Information Structure）と呼ばれるパケットを用いてデータの送受信をおこなう。
【０００３】
一般に、ホストコンピュータとハードディスク装置との間で送受信されるパケットにエラーがあった場合には、非特許文献１に示されるように、エラーなくパケットの送受信が完了するまでリトライがおこなわれる。
【０００４】
【非特許文献１】APT Technologies, Inc., Dell Computer Corporation, Intel Corporation, Maxtor Corporation, Seagate Technology, Serial ATA : High Speed Serialized AT Attachment, Revision 1.0a, 7-January-2003, 11.4 Transport error handling overview, pp.276-279, [online], [平成１５年９月２日検索], <URL : http://www.serialata.org/collateral/index.shtml>
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記非特許文献１に代表される従来技術では、エラーの種類に関係なくリトライをおこなっているため、リトライによって処理が滞る待ち時間が発生するという問題があった。
【０００６】
すなわち、コマンドをハードディスク装置が実行する際に、そのコマンドに無関係なFISをハードディスク装置が受信した場合でも、エラー復帰処理がおこなわれるまでパケットの送信を再度要求するため、迅速なエラー処理がおこなえないという問題があった。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、パケットの受信に係るエラー処理を迅速かつ効率的におこなうことのできるストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御装置であって、前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手段と、受信した前記パケットの属性に係る情報を取得する属性取得手段と、前記属性取得手段により取得されたパケットの属性に係る情報が、前記属性登録手段により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手段と、を備えたことを特徴とする。
【０００９】
また、本発明は、前記パケットの属性に係る情報は、該パケットのタイプに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットのタイプに係る情報が、前記属性登録手段に登録されたパケットのタイプに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする。
【００１０】
また、本発明は、前記パケットの属性に係る情報は、該パケットの長さに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットの長さに係る情報が、前記属性登録手段に登録されたパケットの長さに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする。
【００１１】
また、本発明は、前記パケットの属性に係る情報は、該パケットを受信する順番に係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットを受信する順番に係る情報が、前記属性登録手段に登録されたパケットを受信する順番に係る情報と対応しない受信エラーが発生した場合に、受信したパケットを保持して所定の受信エラー処理を実行することを特徴とする。
【００１２】
また、本発明は、前記受信エラー処理実行手段は、受信エラー処理の一部をマイクロプロセッサによるファームウェア処理としておこなうことを特徴とする。
【００１３】
また、本発明は、所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ装置であって、前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手段と、受信した前記パケットの属性に係る情報を取得する属性取得手段と、前記属性取得手段により取得されたパケットの属性に係る情報が、前記属性登録手段により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手段と、を備えたことを特徴とする。
【００１４】
また、本発明は、所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御方法であって、前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録工程と、受信した前記パケットの属性に係る情報を取得する属性取得工程と、前記属性取得工程により取得されたパケットの属性に係る情報が、前記属性登録工程により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行工程と、を含んだことを特徴とする。
【００１５】
また、本発明は、所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御プログラムであって、前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手順と、受信した前記パケットの属性に係る情報を取得する属性取得手順と、前記属性取得手順により取得されたパケットの属性に係る情報が、前記属性登録手順により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手順と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録し、受信したパケットの属性に係る情報を取得し、取得されたパケットの属性に係る情報が、登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行することとしたので、パケットの受信に係るエラー処理を迅速かつ効率的におこなうことができるという効果を奏する。
【００１７】
また、本発明によれば、パケットの属性に係る情報は、パケットのタイプに係る情報を含み、取得されたパケットのタイプに係る情報が、登録されたパケットのタイプに係る情報と対応しない受信エラーが発生した場合に、受信したパケットを破棄することとしたので、リトライ処理が不必要である場合を検知して、適切なエラー処理を迅速かつ効率的におこなうことができるという効果を奏する。
【００１８】
また、本発明によれば、パケットの属性に係る情報は、パケットの長さに係る情報を含み、取得されたパケットの長さに係る情報が、登録されたパケットの長さに係る情報と対応しない受信エラーが発生した場合に、受信したパケットを破棄することとしたので、リトライ処理が不必要である場合を検知して、適切なエラー処理を迅速かつ効率的におこなうことができるという効果を奏する。
【００１９】
また、本発明によれば、パケットの属性に係る情報は、パケットを受信する順番に係る情報を含み、取得されたパケットを受信する順番に係る情報が、登録されたパケットを受信する順番に係る情報と対応しない受信エラーが発生した場合に、受信したパケットを保持して所定の受信エラー処理を実行することとしたので、リトライ処理がなされうる可能性がある場合を検知して、適切なエラー処理を迅速かつ効率的におこなうことができるという効果を奏する。
【００２０】
また、本発明によれば、受信エラー処理の一部をマイクロプロセッサによるファームウェア処理としておこなうこととしたので、ハードウェアによる処理とファームウェアによる処理とを分けることにより、ハードウェアによる処理量を低減してハードウェアの製造コストを低下させるとともに、適切なエラー処理を迅速かつ効率的におこなうことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、本発明に係るストレージ制御装置およびストレージ制御プログラムの好適な実施の形態を詳細に説明する。なお、ここでは、ストレージ制御装置の一例として、Serial ATA（Serial AT Attachment）規格に準拠したハードディスク制御装置に本発明を適用した場合について説明することとする。このSerial ATA規格においては、ホストコンピュータとハードディスク制御装置とが、FIS（Frame Information Structure）と呼ばれるパケットを用いてデータの送受信をおこなう。
【実施例】
【００２２】
まず、本実施例に係るハードディスク制御装置の機能的構成について説明する。ホストコンピュータから送信されるコマンドには様々なものがあるが、実行する各コマンドに対応してハードディスク制御装置が受信するFISの属性、すなわち、FISのタイプや長さ、受信するFISの順番はコマンドにより定まっているのでそれらを予測することができる。
【００２３】
そのため、本実施例に係るハードディスク制御装置を制御する制御部は、ホストコンピュータから送信されたコマンドに対応して受信することが予期されるFISの属性に係る情報を登録しておき、受信したFISの属性に係る情報を取得して、取得されたFISの属性に係る情報が、登録されたFISの属性に係る情報と対応するかどうかを判定する処理をおこなう。
【００２４】
そして、この制御部は、取得されたFISの属性に係る情報と、登録されたFISの属性に係る情報とが対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行するよう構成される。
【００２５】
具体的には、FISの再送信を要求するリトライ処理の必要がある受信エラーと、リトライ処理の必要がない受信エラー、すなわち、リトライ処理をおこなっても期待するFISが送信されないと判定される受信エラーとを選別し、リトライ処理が必要な場合にのみそれを実行する。
【００２６】
これにより、受信エラーが発生する度にリトライ処理をおこなうのではなく、発生した受信エラーの種類に基づいてリトライ処理の必要性を判定し、適切な受信エラー処理をおこなうこととしたので、FISのパケットの受信に係るエラー処理を迅速かつ効率的におこなうことができる。
【００２７】
図１は、本実施例に係るハードディスク制御装置の機能的構成を示す機能ブロック図である。図１に示すように、この制御部は、コマンド受信部１０、FIS受信部１１、FIS属性取得部１２、FIS属性登録部１３、受信エラー処理実行部１４およびコマンド実行部１５を有する。
【００２８】
ここで、特許請求の範囲に記載の属性取得手段は、図１に示したFIS属性取得部１２に対応し、特許請求の範囲に記載の属性登録手段は、図１に示したFIS属性登録部１３に対応し、特許請求の範囲に記載の受信エラー処理実行手段は、図１に示した受信エラー処理実行部１４に対応する。
【００２９】
コマンド受信部１０は、制御部が実行するコマンドをホストコンピュータから受信し、コマンド受信部１０が有するコマンドレジスタ（図示せず）に記憶する受信部である。FIS受信部１１は、FISのパケットをホストコンピュータから受信する受信部である。このFIS受信部１１は、受信したFISをデコードし、デコードしたFISをFIS受信部１１が有するRFIFO（Receive First-in First-out）メモリ（図示せず）に保持する。
【００３０】
FIS属性取得部１２は、FIS受信部１１が受信したFISのタイプの情報をFISのヘッダから取得し、また、FISの長さの情報をFISの先頭から末尾までのビット数をカウントすることにより取得する取得部である。
【００３１】
FIS属性登録部１３は、コマンド受信部１０が受信したコマンドに対応して、受信することが予期されるFISの属性に係る情報を登録する登録部である。このFIS属性登録部１３は、FISテーブル登録部１３０および次受信FIS登録部１３１を有する。
【００３２】
FISテーブル登録部１３０は、コマンド受信部１０が受信したコマンドに対応して受信することが予期されるFISのタイプおよび長さの情報を、FISテーブル登録部１３０が有するFISテーブルレジスタ（図示せず）に登録する。
【００３３】
図２は、FISテーブルレジスタに登録されるFISのタイプおよび長さの情報の一例を示す図である。このFISテーブルレジスタは、ホストコンピュータからコマンド「PIO WRITE」が送信された際に設定されるものである。コマンド「PIO WRITE」は、PIO（Programmed Input/Output）方式でデータの書き込みをおこなうコマンドであり、ホストコンピュータのメインメモリからハードディスク制御装置へのデータの転送をホストコンピュータのCPUが制御する。
【００３４】
図２に示されるように、このFISテーブルレジスタには、コマンドが実行される場合に送信される可能性のあるFISのタイプとして、「REG_HD」、「REG_DH」、「DMACT」、「DMASU」、「DATA」、「BIST」、「PIOSU」および「SDB」が登録されている。
【００３５】
これらは、非特許文献１に示したSerial ATA規格で定められた「Register - Host to Device FIS」、「Register − Device to Host FIS」、「DMA Activate − Device to Host FIS」、「DMA Setup − Device to Host FIS or Host to Device FIS」、「Data − Host to Device or Device to Host FIS」、「BIST Activate FIS」、「PIO Setup − Device to Host FIS」および「Set Device Bit − Device to Host FIS」にそれぞれ対応する。
【００３６】
登録された各FISには、１２ビット（bit0〜bit11）の領域が付与されており、最初の１１ビット（bit0〜bit10）にFISの長さの情報が２進数で登録され、最後の１ビット（bit11，enable bit）にコマンド「PIO WRITE」が実行される場合に受信することが予期されるFISであるかどうかの情報が登録される。
【００３７】
たとえば、FIS「REG_HD」は、bit11が「１」となっていることから、コマンド「PIO WRITE」が実行される場合に受信することが予期されるFISであることがわかる。また、FIS「REG_HD」の長さは、bit0とbit2とが「１」となっていることから、１×２2＋１＝５Dword、すなわち、１６０ビットのデータ長であることがわかる。
【００３８】
図１の説明に戻ると、次受信FIS登録部１３１は、コマンド実行中に、FIS受信部１１がすでに受信したFISの次に受信することが予期されるFISのタイプの情報を、次受信FIS登録部１３１が有するreceivable FISレジスタ（図示せず）に登録する登録部である。
【００３９】
FISを受信する順番は、コマンドごとに定まっており、たとえば、コマンド「PIO WRITE」を実行する場合に受信するFISの順番は、「REG_HD」、「PIOSU」、「DATA」、「PIOSU」、「DATA」、・・・（連続処理するセクタ数だけ繰り返し。このセクタ数の情報は、FISのヘッダにsector countとして含まれている。）、「REG_DH」の順となる。
【００４０】
図３は、receivable FISレジスタに登録される次に受信するFISのタイプの情報の一例を示す図である。図３に示すように、このreceivable FISレジスタには、８ビット（bit0〜bit7）の領域が付与されており、各ビットには図２で示したFISの各タイプが対応している。
【００４１】
そして、いずれかのビット領域を「１」に設定することにより、次に受信することが予期されるFISのタイプを登録することができる。図３の例では、bit6が「１」となっているので、次に受信することが予期されるFISは、FIS「PIOSU」であることがわかる。
【００４２】
図１の説明に戻ると、受信エラー処理実行部１４は、FIS属性取得部１２により取得されたパケットの属性に係る情報が、FIS属性登録部１３により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーに応じた受信エラー処理を実行する実行部である。
【００４３】
この受信エラー処理実行部１４は、FISタイプ比較部１４０、FIS長比較部１４１、HD状態制御部１４２、ログ記録部１４３、割込み処理部１４４およびCRCエラー検出部１４５を有する。
【００４４】
FISタイプ比較部１４０は、FIS属性取得部１２により取得されたFISのタイプの情報と、FISテーブル登録部１３０によりFISテーブルレジスタに登録された、受信することが予期されるFISのタイプの情報とが一致するかどうかを比較する比較部である。このFISタイプ比較部１４０は、２つのFISのタイプが一致しない場合に「undefineエラー」の受信エラー信号をHD状態制御部１４２に送信する。
【００４５】
また、このFISタイプ比較部１４０は、FIS属性取得部１２により取得されたFISのタイプの情報と、次受信FIS登録部１３１によりreceivable FISレジスタに登録されたFISのタイプの情報とが一致するかどうかを比較する。そして、FISタイプ比較部１４０は、２つのFISのタイプが一致しない場合に「unexpectedエラー」の受信エラー信号をHD状態制御部１４２に送信する。
【００４６】
FIS長比較部１４１は、FIS属性取得部１２により取得されたFISの長さの情報と、FISテーブル登録部１３０によりFISテーブルレジスタに登録された、受信することが予期されるFISの長さの情報とが一致するかどうかを比較する比較部である。そして、比較の結果、２つのFISの長さが一致しない場合に「lengthエラー」の受信エラー信号をHD状態制御部１４２に送信する。
【００４７】
HD状態制御部１４２は、ハードディスク装置の状態を動作状態からアイドル状態に、あるいはアイドル状態から動作状態に設定する制御部である。このHD状態制御部１４２は、「undefineエラー」または「lengthエラー」の受信エラー信号を受信した場合に、ハードディスク装置をアイドル状態に設定する。「unexpectedエラー」の受信エラー信号を受信した場合には、HD状態制御部１４２は、その時点での状態を維持する。
【００４８】
ログ記録部１４３は、「undefineエラー」、「lengthエラー」、または「unexpectedエラー」の受信エラーが発生した場合に、発生した受信エラーの情報をログ記録部１４３が有するLOGレジスタ（図示せず）に記録する記録部である。
【００４９】
図４は、LOGレジスタに登録される受信エラー情報の一例を示す図である。図４に示すように、このLOGレジスタには、２２ビット（bit0〜bit21）の領域が付与されており、最初の１１ビット（bit0〜bit10）でFIS受信部１１により受信されたFISの長さの情報が登録され、次の９ビット（bit11〜bit19）でFIS受信部１１により受信されたFISのタイプの情報が登録され、最後の２ビット（bit20およびbit21）で受信エラーの種類の情報が登録される。
【００５０】
たとえば、ログ記録部１４３は、「undefineエラー」に「０１」のビット列、「lengthエラー」に「１０」のビット列、「unexpectedエラー」に「１１」のビット列を割り当て、発生した受信エラーに該当するビット列をbit20およびbit21に登録する。
【００５１】
たとえば、図４の例では、受信したFISの長さが２2＝４Dwordであり、受信したFISのタイプは「PIOSU」であり、受信エラーの種類は、「lengthエラー」であることがわかる（FIS「PIOSU」は、５Dwordであるべきである。）。ホストコンピュータは、このLOGレジスタの値を参照することにより受信エラーの詳細情報を確認することができる。
【００５２】
図１の説明に戻ると、割込み処理部１４４は、ハードディスク制御装置がホストコンピュータに割込み信号を送信する割込み処理部である。この割込み処理部１４４は、単に割込み信号を送信するだけでなく、発生した受信エラーに応じた受信エラー処理をおこなう。
【００５３】
具体的には、割込み処理部１４４は、「undefineエラー」または「lengthエラー」が発生した場合には、割込み処理部１４４が有する割込みレジスタ（図示せず）に、「undefineエラー」または「lengthエラー」の受信エラー情報を記録するとともに、FIS受信部１１が有するRFIFOメモリをリセットし、RFIFOメモリに保持されているFISを破棄する処理をおこなう。
【００５４】
また、割込み処理部１４４は、「unexpectedエラー」が発生した場合には、割込みレジスタに「unexpectedエラー」の受信エラー情報を記録するとともに、FIS受信部１１が有するRFIFOメモリに保持されているFISを継続して保持し、ホストコンピュータにFISを再送信するよう要求するリトライ信号を発信する。
【００５５】
図５は、割込みレジスタに登録される受信エラー情報の一例を示す図である。図５に示すように、この割込みレジスタには、３ビット（bit0〜bit2）の領域が付与されており、各ビット領域は「undefineエラー」、「lengthエラー」、および「unexpectedエラー」のそれぞれに対応している。割込み処理部１４４は、発生した受信エラーに応じて該当する割込みレジスタの値を「１」に設定し、ホストコンピュータに受信エラーの発生を通知する。図５の例は、「lengthエラー」が発生した場合を示している。
【００５６】
CRCエラー検出部１４５は、「undefineエラー」、「lengthエラー」、または「unexpectedエラー」の受信エラーが発生しなかった場合に、FIS受信部１１が有するRFIFOメモリに保持されたFISに対してCRC（cyclic redundancy check）エラーの検出処理をおこなう検出部である。
【００５７】
このCRCエラー検出部１４５は、CRCエラーが検出された場合には、RFIFOメモリに保持されているFISを破棄するとともに、ホストコンピュータにFISの再送信を要求するリトライ処理を実行する。CRCエラーが検出されなかった場合には、CRCエラー検出部１４５は、FIS受信部１１にRFIFOに保持しているFISをコマンド実行部１５に転送するよう要求する。
【００５８】
コマンド実行部１５は、FISタイプ比較部１４０、FIS長比較部１４１およびCRCエラー検出部１４５によりFISの受信エラーが発生しなかったと判定された場合に、FIS受信部１１が受信したFISの情報を取得して、コマンド受信部１０が受信したコマンドを実行する実行部である。
【００５９】
次に、本実施例に係るハードディスク制御装置がおこなうFIS受信処理の処理手順について説明する。図６−１、図６−２および図６−３は、本実施例に係るハードディスク制御装置がおこなうFIS受信処理の処理手順を示すフローチャートである。
【００６０】
図６−１に示すように、まず、コマンド受信部１０は、ホストコンピュータから送信されたコマンドを受け付ける（ステップＳ１０１）。そして、FISテーブル登録部１３０は、受け付けたコマンドの実行中に受信することが予期されるFISのタイプおよび長さの情報をFISテーブルレジスタに登録する（ステップＳ１０２）。
【００６１】
続いて、コマンド実行部１５は、コマンドの実行を開始し（ステップＳ１０３）、次受信FIS登録部１３１は、次に受信することが予期されるFISの情報をreceivable FISレジスタに登録する（ステップＳ１０４）。
【００６２】
その後、FIS受信部１１は、FISを受信したかどうかを調べ（ステップＳ１０５）、FISを受信した場合には（ステップＳ１０５，Ｙｅｓ）、FIS属性取得部１２は、FISのヘッダからFISのタイプの情報を取得する（ステップＳ１０６）。
【００６３】
FISを所定の時間受信しなかった場合には（ステップＳ１０５，Ｎｏ）、FIS受信部１１は、コマンドの実行を停止するtimeoutエラー割込み処理をおこない（ステップＳ１１３）、そのままこのFIS受信処理を終了する。
【００６４】
ステップＳ１０６におけるFISのタイプの判定処理終了後、FISタイプ比較部１４０は、取得されたFISのタイプの情報とFISテーブルレジスタに登録された、受信することが予期されるFISのタイプの情報とが一致しているかどうかを調べる（ステップＳ１０７）。
【００６５】
FISのタイプが一致していた場合には（ステップＳ１０７，Ｙｅｓ）、図６−２に示すように、FIS属性取得部１２は、FISの長さの情報を取得する（ステップＳ１０８）。FISのタイプが一致していなかった場合には（ステップＳ１０７，Ｎｏ）、図６−１に示すように、ＨＤ状態制御部１４２は、ハードディスク装置の状態をアイドル状態に設定し（ステップＳ１１４）、ログ記録部１４３は、LOGレジスタに受信エラー情報を記録する（ステップＳ１１５）。
【００６６】
その後、割込み処理部１４４は、割込みレジスタに「undefineエラー」の受信エラー情報を記録するundefineエラー割込み処理をおこなう（ステップＳ１１６）。そして、FISを破棄させる信号をFIS受信部１１に送信して受信したFISを破棄し（ステップＳ１１７）、そのままこのFIS受信処理を終了する。
【００６７】
図６−２に示すように、ステップＳ１０８におけるFISの長さの検出処理終了後、FIS長比較部１４１は、取得されたFISの長さの情報と、FISテーブルレジスタに登録された、受信することが予期されるFISの長さの情報とが一致しているかどうかを調べる（ステップＳ１０９）。
【００６８】
FISの長さが一致していなかった場合には（ステップＳ１０９，Ｎｏ）、ＨＤ状態制御部１４２は、ハードディスク装置の状態をアイドル状態に設定し（ステップＳ１１８）、ログ記録部１４３は、LOGレジスタに受信エラー情報を記録する（ステップＳ１１９）。
【００６９】
その後、割込み処理部１４４は、割込みレジスタに「lengthエラー」の受信エラー情報を記録するlengthエラー割込み処理をおこなう（ステップＳ１２０）。そして、FISを破棄させる信号をFIS受信部１１に送信して受信したFISを破棄し（ステップＳ１２１）、そのままこのFIS受信処理を終了する。
【００７０】
ステップＳ１０９において、FISの長さが一致していた場合には（ステップＳ１０９，Ｙｅｓ）、続いて、FISタイプ比較部１４０は、ステップＳ１０６において取得されたFISのタイプの情報と、receivable FISレジスタに登録されたFISのタイプの情報とが一致しているかどうかを調べる（ステップＳ１１０）。
【００７１】
FISのタイプが一致していなかった場合には（ステップＳ１１０，Ｎｏ）、ログ記録部１４３は、LOGレジスタに受信エラー情報を記録する（ステップＳ１２２）。そして、割込み処理部１４４は、割込みレジスタに「unexpectedエラー」の受信エラー情報を記録するunexpectedエラー割込み処理をおこない（ステップＳ１２３）、FISを再送信するようホストコンピュータに要求するリトライ処理をおこなう（ステップＳ１２４）。
【００７２】
続いて、FIS受信部１１は、リトライ処理によりFISを再度受信したかどうかを調べる（ステップＳ１２５）。FISを再度受信した場合には（ステップＳ１２５，Ｙｅｓ）、ステップＳ１０６に移行して、それ以降の処理を実行する。
【００７３】
FISを所定の時間受信しなかった場合には（ステップＳ１２５，Ｎｏ）、FIS受信部１１は、コマンドの実行を停止するtimeoutエラー割込み処理をおこない（ステップＳ１２６）、そのままこのFIS受信処理を終了する。
【００７４】
ステップＳ１１０において、FISのタイプが一致していた場合には（ステップＳ１１０，Ｙｅｓ）、図６−３に示すように、CRCエラー検出部１４５は、CRCエラーがあるかどうかを調べる（ステップＳ１１１）。
【００７５】
CRCエラーがあった場合には（ステップＳ１１１，Ｙｅｓ）、CRCエラー検出部１４５は、FISを破棄させる信号をFIS受信部１１に送信して受信したFISを破棄し（ステップＳ１２７）、FISを再送信するようホストコンピュータに要求するリトライ処理をおこなう（ステップＳ１２８）。
【００７６】
そして、FIS受信部１１は、リトライ処理によりFISを再度受信したかどうかを調べ（ステップＳ１２９）、FISを再度受信した場合には（ステップＳ１２９，Ｙｅｓ）、ステップＳ１０６に移行して、それ以降の処理を実行する。
【００７７】
FISを所定の時間受信しなかった場合には（ステップＳ１２９，Ｎｏ）、FIS受信部１１は、コマンドの実行を停止するtimeoutエラー割込み処理をおこない（ステップＳ１３０）、そのままこのFIS受信処理を終了する。
【００７８】
ステップＳ１１１において、CRCエラーがなかった場合には（ステップＳ１１１，Ｎｏ）、コマンド実行部１５は、コマンドの実行が終了したかどうかを調べる（ステップＳ１１２）。コマンドの実行が、終了していない場合には（ステップＳ１１２，Ｎｏ）、ステップＳ１０４に移行して、それ以降の処理を実行する。コマンドの実行が終了した場合には（ステップＳ１１２，Ｙｅｓ）、このFIS受信処理を終了する。
【００７９】
上述してきたように、本実施例では、FIS属性登録部１３が、コマンドに対応して受信することが予期されるFISの属性に係る情報を登録し、FIS属性取得部１２が、受信したFISの属性に係る情報を取得し、受信エラー処理実行部１４が、FIS属性取得部１３により取得されたFISの属性に係る情報が、FIS属性登録部１３により登録されたFISの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行することとしたので、FISの受信に係るエラー処理を迅速かつ効率的におこなうことができる。
【００８０】
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施の形態以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてもよいものである。
【００８１】
たとえば、本実施の形態では、Serial ATA規格に準拠したハードディスク制御装置が受信エラー処理をおこなう場合について説明したが、本発明はこれに限定されるものではなく、受信するパケットの属性があらかじめ予期できる他の規格に準拠したハードディスク制御装置にも同様に適用することができる。
【００８２】
また、本実施の形態では、ハードディスク制御装置が受信エラー処理をおこなう場合について説明したが、本発明はこれに限定されるものではなく、フレキシブルディスク装置やMO（Magneto Optical disk）装置、CD-R（Compact Disk Recordable）装置、磁気テープ装置など他のストレージ制御装置にも同様に適用することができる。
【００８３】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８４】
また、図示した各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各構成要素の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００８５】
さらに、上述の各処理機能は、その全部または任意の一部が、ワイヤードロジックによるハードウェアとして実現され、あるいは、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され得る。
【００８６】
たとえば、「unexpectedエラー」の受信エラーが発生した場合に、unexpectedエラーに対するリトライ処理などの受信エラー処理を、ハードディスク装置に導入されたファームウェアがおこなうこととしてもよい。ここで、ファームウェアがおこなう受信エラー処理は、本実施の形態で述べた受信エラー処理に限定されず、さまざまな処理であってよい。このように、ハードウェアによる処理とファームウェアによる処理とを分けることにより、ハードウェアの処理量を低減してハードウェアの製造コストを低下させることができる。
【００８７】
（付記１）所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御装置であって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手段と、
受信した前記パケットの属性に係る情報を取得する属性取得手段と、
前記属性取得手段により取得されたパケットの属性に係る情報が、前記属性登録手段により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手段と、
を備えたことを特徴とするストレージ制御装置。
【００８８】
（付記２）前記パケットの属性に係る情報は、該パケットのタイプに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットのタイプに係る情報が、前記属性登録手段に登録されたパケットのタイプに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする付記１に記載のストレージ制御装置。
【００８９】
（付記３）前記パケットの属性に係る情報は、該パケットの長さに係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットの長さに係る情報が、前記属性登録手段に登録されたパケットの長さに係る情報と対応しない受信エラーが発生した場合に、受信した前記パケットを破棄することを特徴とする付記１または２に記載のストレージ制御装置。
【００９０】
（付記４）前記パケットの属性に係る情報は、該パケットを受信する順番に係る情報を含み、前記受信エラー処理実行手段は、前記属性取得手段により取得されたパケットを受信する順番に係る情報が、前記属性登録手段に登録されたパケットを受信する順番に係る情報と対応しない受信エラーが発生した場合に、受信したパケットを保持して所定の受信エラー処理を実行することを特徴とする付記１、２または３に記載のストレージ制御装置。
【００９１】
（付記５）前記受信エラー処理実行手段は、受信エラー処理の一部をマイクロプロセッサによるファームウェア処理としておこなうことを特徴とする付記１〜４のいずれか一つに記載のストレージ制御装置。
【００９２】
（付記６）所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ装置であって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手段と、
受信した前記パケットの属性に係る情報を取得する属性取得手段と、
前記属性取得手段により取得されたパケットの属性に係る情報が、前記属性登録手段により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手段と、
を備えたことを特徴とするストレージ装置。
【００９３】
（付記７）所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御方法であって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録工程と、
受信した前記パケットの属性に係る情報を取得する属性取得工程と、
前記属性取得工程により取得されたパケットの属性に係る情報が、前記属性登録工程により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行工程と、
を含んだことを特徴とするストレージ制御方法。
【００９４】
（付記８）所定のコマンドを実行するのに必要なデータを含んだパケットを受信して該コマンドを実行するストレージ制御プログラムであって、
前記コマンドに対応して受信することが予期されるパケットの属性に係る情報を登録する属性登録手順と、
受信した前記パケットの属性に係る情報を取得する属性取得手順と、
前記属性取得手順により取得されたパケットの属性に係る情報が、前記属性登録手順により登録されたパケットの属性に係る情報と対応しない受信エラーが発生した場合に、発生した受信エラーの種類に応じて所定の受信エラー処理を実行する受信エラー処理実行手順と、
をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【産業上の利用可能性】
【００９５】
以上のように、本発明にかかるストレージ制御装置およびストレージ制御プログラムは、パケットの送受信に係るエラー処理を迅速かつ効率的におこなうことのできるストレージシステムに適している。
【図面の簡単な説明】
【００９６】
【図１】本実施例に係るハードディスク制御装置の機能的構成を示す機能ブロック図である。
【図２】FISテーブルレジスタに登録されるFISのタイプおよび長さの情報の一例を示す図である。
【図３】receivable FISレジスタに登録される次に受信するFISのタイプの情報の一例を示す図である。
【図４】LOGレジスタに登録される受信エラー情報の一例を示す図である。
【図５】割込みレジスタに登録される受信エラー情報の一例を示す図である。
【図６−１】本実施例に係るハードディスク制御装置がおこなうFIS受信処理の処理手順を示すフローチャート（１）である。
【図６−２】本実施例に係るハードディスク制御装置がおこなうFIS受信処理の処理手順を示すフローチャート（２）である。
【図６−３】本実施例に係るハードディスク制御装置がおこなうFIS受信処理の処理手順を示すフローチャート（３）である。
【符号の説明】
【００９７】
１０    コマンド受信部
１１    FIS受信部
１２    FIS属性取得部
１３    FIS属性登録部
１３０    FISテーブル登録部
１３１    次受信FIS登録部
１４    受信エラー処理実行部
１４０    FISタイプ比較部
１４１    FIS長比較部
１４２    HD状態制御部
１４３    ログ記録部
１４４    割込み処理部
１４５    CRCエラー検出部
１５    コマンド実行部
【図１】
2005092497.tif 000003
【図２】
2005092497.tif 000004
【図３】
2005092497.tif 000005
【図４】
2005092497.tif 000006
【図５】
2005092497.tif 000007
【図６−１】
2005092497.tif 000008
【図６−２】
2005092497.tif 000009
【図６−３】
2005092497.tif 000010