(57)【要約】【課題】ホスト装置から送信されたデータに応答するデータの送信の遅延を防止すること。【解決手段】本発明にかかるストレージ装置は、ホスト装置から送信された要求データに応じて、要求データによって要求された処理を実行するストレージ装置であって、ストレージと、ストレージの制御を含む第１の処理と、ホスト装置から送信された要求データに応じて、要求データに応答する応答データをホスト装置に送信する第２の処理と、を実行するプロセッサと、所定の要求データについて、プロセッサを代替して第２の処理を実行する代替処理部と、を備える。【選択図】図１
2012133513.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置であって、
ストレージと、
前記ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行するプロセッサと、
前記ホスト装置から送信される要求データのうち、所定の要求データについて、前記プロセッサを代替して前記第２の処理を実行する代替処理部と、
を備えたストレージ装置。
【請求項２】
前記ストレージ装置は、前記ホスト装置から前記所定の要求データの次に送信される次要求データを受信するときに、前記所定の要求データに応答する応答データを送信していない場合は、前記次要求データの受信を抑止する管理部をさらに備えた請求項１に記載のストレージ装置。
【請求項３】
前記ストレージ装置は、ＳＡＴＡ(Serial Advanced Technology Attachment)規格に従って、前記ホスト装置との間でデータを送受信し、
前記要求データは、前記ホスト装置に対してＦＩＳの応答が必要となるデータであり、
前記応答データは、前記要求データに応答するＦＩＳ(Frame Information Structure)である
請求項１又は２に記載のストレージ装置。
【請求項４】
前記ストレージ装置は、ＳＡＴＡ規格に従って、前記ホスト装置との間でデータを送受信し、
前記所定の要求データは、前記ＳＡＴＡ規格によって規定されるＡｌｉｇｎであり、
前記応答データは、前記Ａｌｉｇｎに応答するＦＩＳである
請求項１に記載のストレージ装置。
【請求項５】
前記ストレージ装置は、ＳＡＴＡ規格に従って、前記ホスト装置との間でデータを送受信し、
前記所定の要求データは、前記ＳＡＴＡ規格によって規定されるＡｌｉｇｎであり、
前記応答データは、前記Ａｌｉｇｎに応答するＦＩＳであり、
前記次要求データは、ＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳである
請求項２に記載のストレージ装置。
【請求項６】
前記ストレージ装置は、
前記ストレージ装置の起動シーケンスの進行度合いを示す管理情報を格納する記憶部をさらに備え、
前記管理部は、前記ホスト装置からの前記起動シーケンスにおける要求データの受信に応じて、前記記憶部に格納された管理情報を更新し、
前記代替処理部は、前記記憶部に格納された管理情報が前記Ａｌｉｇｎの受信完了を示す場合に、前記応答データを送信する
請求項４又は５に記載のストレージ装置。
【請求項７】
前記ストレージ装置は、
前記ストレージ装置の起動シーケンスの進行度合いを示す管理情報を格納する記憶部をさらに備え、
前記管理部は、前記ホスト装置からの前記起動シーケンスにおける要求データの受信に応じて、前記記憶部に格納された管理情報を更新し、
前記データ送受信部は、前記記憶部に格納された管理情報が示す前記Ａｌｉｇｎの受信完了を示す場合に、前記次要求データの受信の抑止を開始し、当該管理情報が前記応答データの送信完了を示す場合に、前記次要求データの受信の抑止を解除する
請求項５に記載のストレージ装置。
【請求項８】
前記ストレージは、ハードディスク、光ディスク、又は、メモリである請求項１乃至７のいずれか１項に記載のストレージ装置。
【請求項９】
ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置の制御方法であって、
プロセッサが、ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行し、
前記処理の実行では、
前記ホスト装置からの所定の要求データの送信を検出し、
前記所定の要求データを検出した場合に、当該所定の要求データについて代替処理部が前記プロセッサを代替して前記第２の処理を実行する
ストレージ装置の制御方法。
【請求項１０】
ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置に、ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行する第１のプロセッサと共に備えられた第２のプロセッサに実行させる制御プログラムであって、
前記ホスト装置からの所定の要求データの送信を検出する処理と、
前記所定の要求データを検出した場合に、当該所定の要求データについて前記第１のプロセッサを代替して前記第２の処理を実行する処理と、
を前記第２のプロセッサに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置の制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
ドライブ装置は、それ自体が単独で使用されることはなく、ホストと接続されて使用される。ドライブ装置としては、例えば、光ディスク記録再生装置及びハードディスク装置等がある。ホストとしては、例えば、ＰＣ(Personal Computer)、レコーダー及びプレーヤー等がある。
【０００３】
ディスクから読み込んだデータのドライブ装置からホストへの送信、又は、ディスクに書き込むデータのドライブ装置におけるホストからの受信は、Ｉ／Ｆを介して行われる。このような、Ｉ／Ｆの規格の一つとして、ＳＡＴＡ(Serial Advanced Technology Attachment)がある。この規格では、３つの層によってデータを転送する制御が行われる。図５に、ＳＡＴＡ規格において規定される３つの層を示す。３つの層として、トランスポート層(Transport Layer)、リンク層(Link Layer)及び物理層(PHY Layer)が規定されている。
【０００４】
トランスポート層は、ＦＩＳ(Frame Information Structure)の生成、及び、順序(プロトコル)の制御を行う。
リンク層は、伝送路のアービトレーション、フロー制御、並びに、ＦＩＳ及び制御コードのビット列への変換(８／１０ｂ変換)を行う。
物理層は、ビット列をシリアル変換して転送する。つまり、実際の通信は、物理層において行われる。
【０００５】
このようなドライブ装置の動作について説明する。
ドライブ装置は、トランスポート層で管理されるＦＩＳの種類によって、その動作が制御される。ＦＩＳが送信中か、又は、受信中か等の管理は、リンク層において、プリミティブ(Primitive)と呼ばれる制御コードによって行われる。
【０００６】
具体的に、ドライブ装置とホストとの間におけるＦＩＳの送受信例について説明する。ここでは、ホストからドライブ装置にＦＩＳを送信する場合について説明する。
【０００７】
ＦＩＳの転送が行われる前は、ホストとドライブ装置との間で、ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅが送受信されている。ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅは、バスがアイドル状態であることを示すプリミティブである。ホストは、ＦＩＳを送信する場合、ＦＩＳの送信要求となるＸ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅをドライブ装置に送信する。ドライブ装置は、ホストからＸ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅを受信した場合、ＦＩＳの受信許可を通知するＲ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅをホストに送信する。これによって、ドライブ装置が受信許可状態となるため、ホストは、ＦＩＳのドライブ装置への送信を開始する。
【０００８】
ドライブ装置は、ホストからＦＩＳを正常に受信した場合、Ｒ＿ＩＰ Ｐｒｉｍｉｔｉｖｅをホストに送信する。これによって、ＦＩＳの送信が終了するため、ホストは、ＦＩＳの送信終了を通知するＷＴＲＭ Ｐｒｉｍｉｔｉｖｅをドライブ装置に送信する。ドライブ装置は、ホストからＷＴＲＭ Ｐｒｉｍｉｔｉｖｅを受信した場合、受信完了を通知するＲ＿ＯＫ Ｐｒｉｍｉｔｉｖｅをホストに送信する。この後は、再び、ホストとドライブ装置とで、ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅの送受信を開始する。そして、ホスト及びドライブ装置は、次のＦＩＳの送受信を待つことになる。
【０００９】
以上に、ホストからドライブ装置にＦＩＳが送信される場合について説明したが、ＦＩＳの送信方向が変わった場合には、それに合わせて、上記の各プリミティブが逆方向に送信されることになる。
【００１０】
通常、ドライブ装置は、ホストからのリセット及びＡＴＡ／ＡＴＡＰＩコマンド発行等の要求に応じて、要求されたデータやＴａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒの内容を示す情報(以下、「Ｔａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報」とする)をホストに送信する。このようなホストからの要求は、ＳＡＴＡ規格で定められた仕様に基づいて行われる。この仕様では、ホストは、ドライブ装置からの応答を待って、ドライブ装置に対する新たな要求を発行するものとして規定されている。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、ホストには、ＳＡＴＡ規格に違反した場合、または、Ｐｏｒｔ Ｍｕｌｔｉｐｌｉｅｒを使用した場合には、ドライブ装置からの応答を待たずに、次の要求を発行してくるものがある。つまり、ホストには、十分な時間を待たずに、次の要求を発行してくるものがある。ドライブ装置は、このようなホストに対して、ホストが次の要求を発行してくるまでの時間内に応答ができないと、想定していないタイミングでホストからの次の要求を受けることになる。その結果、ホスト及びドライブ装置で扱うデータに齟齬が生じてしまい、ホスト又はドライブ装置が正常に動作できなくなってしまうという問題がある。
【００１２】
そのような問題が発生するケースについて、図６を参照して具体的に説明する。図６Ａは、正常時のデータ送受信の流れを示す図であり、図６Ｂは、問題発生時のデータ送受信の流れを示す図である。なお、特に詳述しないが、図６の説明におけるＦＩＳは、上述した送信手順によって送信される。
【００１３】
まず、図６Ａの正常時のデータ送受信について説明する。
ホストからＣＯＭＲＥＳＥＴが送信された場合、ドライブ装置は、Ｔａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報を含むＲｅｇｉｓｔｅｒ ＦＩＳを送信する。ホストからのＣＯＭＲＥＳＥＴは、上述したホストからのリセットに相当する。次に、ホストは、ドライブ装置にＡＴＡ／ＡＴＡＰＩコマンドを発行する場合、ＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳをドライブ装置に送信する。ドライブ装置は、ホストからのＦＩＳを受信した場合、そのＦＩＳが示すＡＴＡ／ＡＴＡＰＩコマンドに応答するＦＩＳをホストに送信する。
【００１４】
続いて、図６Ｂの問題発生時のデータ送受信について説明する。
ホストからＣＯＭＲＥＳＥＴが送信された場合、ドライブ装置は、Ｔａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報を含むＦＩＳを送信しようとする。しかし、上述したように、ホストには、ドライブ装置からの応答を待たずに、次の要求を発行してくるものがある。このようなホストの場合、ドライブ装置からのＦＩＳの送信が遅れてしまうと、ドライブ装置からＦＩＳを送信する前に、ホストから次のＦＩＳが送信されてしまうことがある。その後に、ドライブ装置からＦＩＳを送信すると、ホストが次に送信したＦＩＳが示すＡＴＡ／ＡＴＡＰＩコマンドに応答するＦＩＳでなく、ホストからのリセットに応答するＦＩＳが送信されてしまうことになる。その結果、ホスト又はドライブ装置が正常に動作できなくなってしまう。
【００１５】
ここで、ドライブ装置からのＦＩＳの送信が遅れる要因として、ドライブ装置において、ＦＩＳの送受信を制御するソフトウェアの動作遅延がある。一般的に、ドライブ装置は、ＣＰＵ(Central Processing Unit)を有する。ＣＰＵは、ホストに対するＦＩＳの送受信を制御するソフトウェアと、ディスクを制御するソフトウェア等の複数のソフトウェアを実行する。そのため、ホストに対するＦＩＳの送受信を制御するソフトウェア以外のソフトウェアにＣＰＵが占有され続けることによって、ＦＩＳの送信が遅延してしまうことがあるという問題がある。
【００１６】
つまり、ハードディスクや光ディスク等のストレージを備えたストレージ装置において、ホスト装置から送信されたデータに応答するデータの送信が遅延してしまうという場合があるという問題がある。
【課題を解決するための手段】
【００１７】
本発明の第１の態様にかかるストレージ装置は、ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置であって、ストレージと、前記ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて、当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行するプロセッサと、前記ホスト装置から送信される要求データのうち、所定の要求データについて、前記プロセッサを代替して前記第２の処理を実行する代替処理部と、を備えたものである。
【００１８】
本発明の第２の態様にかかるストレージ装置の制御方法は、ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置の制御方法であって、プロセッサが、ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行し、前記処理の実行では、前記ホスト装置からの所定の要求データの送信を検出し、前記所定の要求データを検出した場合に、当該所定の要求データについて代替処理部が前記プロセッサを代替して前記第２の処理を実行するものである。
【００１９】
本発明の第３の態様にかかる制御プログラムは、ホスト装置から送信された要求データに応じて、当該要求データによって要求された処理を実行するストレージ装置に、ストレージの制御を含む第１の処理と、前記ホスト装置から送信された要求データに応じて当該要求データに応答する応答データを前記ホスト装置に送信する第２の処理と、を実行する第１のプロセッサと共に備えられた第２のプロセッサに実行させる制御プログラムであって、前記ホスト装置からの所定の要求データの送信を検出する処理と、前記所定の要求データを検出した場合に、当該所定の要求データについて前記第１のプロセッサを代替して前記第２の処理を実行する処理と、を前記第２のプロセッサに実行させるものである。
【００２０】
上述した本発明の各態様によれば、所定の要求データについて、プロセッサで実行される処理に影響されることなく、その要求データに応答する応答データをホスト装置に送信する処理を実行することができる。
【発明の効果】
【００２１】
上述した本発明の各態様によれば、ホスト装置から送信されたデータに応答するデータの送信の遅延を防止することができるストレージ装置、ストレージ装置の制御方法及び制御プログラムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態にかかるストレージシステムの構成図である。
【図２】本発明の実施の形態にかかるドライブ装置の起動シーケンスにおける処理を示すフローチャートである。
【図３】本発明の実施の形態にかかるＯＯＢシーケンス判定回路の処理を示すフローチャートである。
【図４】本発明の実施の形態にかかる起動シーケンサ管理回路の処理を示すフローチャートである。
【図５】本発明の実施の形態にかかるＳＡＴＡ規格において規定されている各層を説明するための図である。
【図６】本発明の実施の形態にかかる課題を説明するための図である。
【発明を実施するための形態】
【００２３】
図１を参照して、本発明の実施の形態にかかるストレージシステム１の構成について説明する。図１は、本発明の実施の形態にかかるストレージシステム１の構成図である。
【００２４】
ストレージシステム１は、ドライブ装置２及びホスト３を有する。ドライブ装置２は、ＬＳＩ(Large Scale Integration)１０、メモリ１１、ドライバ１２及びメカユニット１３を有する。ＬＳＩ１０は、ＣＰＵ２０及びＤＳＰ(Digital Signal Processor)２１を有する。ＤＳＰ２１は、ＯＯＢシーケンス判定回路３０、プリミティブ・ＦＩＳ送信／受信制御回路３１及び起動シーケンサ管理回路３２を有する。ドライブ装置２及びホスト３は、ＳＡＴＡ規格のインタフェースによって相互に接続される。
【００２５】
ドライブ装置２は、ストレージを有するストレージ装置である。ストレージは、例えば、光ディスク、ハードディスク、又は、メモリ等である。つまり、ドライブ装置２は、例えば、光ディスクドライブ、ＨＤＤ(Hard Disk Drive)、又は、ＳＳＤ(Solid State Drive)等である。なお、本実施の形態では、ドライブ装置２が光ディスクドライブである場合について例示する。
【００２６】
ドライブ装置２は、ホスト３から送信された要求データに応じて、要求データによって要求された処理を実行する。要求データは、例えば、ＯＯＢ信号、Ａｌｉｇｎ及びＦＩＳ等である。ＯＯＢ信号は、例えば、ＣＯＭＲＥＳＥＴ、ＣＯＭＭＩＮＴ及びＣＯＭＷＡＫＥ等である。任意の処理を要求するＦＩＳは、例えば、ＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳである。ドライブ装置２は、例えば、ホスト３からの要求に応じて、ドライブ装置２のリセットや、ストレージに対する読み書き等のＳＡＴＡ規格で規定された処理を実行する。
【００２７】
ホスト３は、任意の処理を要求する要求データをドライブ装置２に送信し、ドライブ装置２の実施結果を取得する装置である。
ＬＳＩ１０は、ＳＡＴＡ規格における制御で使用されるＴａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ(図示せず)や、ディスクから取得した信号に対する処理の機能、メモリ制御用の機能を有する。
メモリ１１は、ＣＰＵ２０が実行するプログラムや、ＣＰＵ２０が演算するデータ、ディスクから取得したデータが格納される。
【００２８】
ドライバ１２は、ＣＰＵ２０から出力された制御情報に基づいて、メカユニット１３を制御する。ドライバ１２は、メカユニット１３の制御内容を示す制御情報をメカユニット１３に出力することによって、メカユニット１３を制御する。ドライバ１２は、例えば、光ディスク(図示せず)に対するレンズの位置を制御する。
メカユニット１３は、ＣＰＵ２０及びドライバ１２から出力された制御情報に基づいて、光ディスクに対するデータの読み書きを行う。
【００２９】
ＣＰＵ２０は、ホスト３に対してデータを送受信する処理や、光ディスクを制御する処理を実行する。ＣＰＵ２０は、ホスト３に対してデータを送受信する処理をＣＰＵ２０に実行させるプログラムと、光ディスクを制御する処理をＣＰＵ２０に実行させるプログラムと、を実行することによって、これらの処理を実行する。例えば、ＣＰＵ２０は、ホスト３からＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳを受信した場合に、そのＦＩＳが示すＡＴＡ／ＡＴＡＰＩコマンドに応答するＦＩＳを生成してホスト３に送信する。具体的には、ＣＰＵ２０は、生成したＦＩＳと共に、生成したＦＩＳの送信を要求する制御情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力することによって、プリミティブ・ＦＩＳ送信／受信制御回路３１からホスト３にＦＩＳを送信する。
【００３０】
また、ＣＰＵ２０は、メカユニット１３を制御する。ＣＰＵ２０は、メカユニット１３の制御内容を示す制御情報をメカユニット１３に出力する。ＣＰＵ２０は、例えば、メカユニット１３が光ディスクに対して照射する光の強度、レンズの傾きを調整する。
【００３１】
ＤＳＰ２１は、ドライブ装置２の起動シーケンスにおける処理や、データの送受信処理を実行する。ＤＳＰ２１は、代替処理部に対応する。
ＯＯＢ(Out Of Band)シーケンス判定回路３０は、ＯＯＢシーケンスの進行度合いを監視する。ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンスの進行度合いに応じて、ＯＯＢ信号及びＡｌｉｇｎを生成してホスト３に送信する。ＯＯＢシーケンス判定回路３０は、生成したＯＯＢ信号又はＡｌｉｇｎと共に、生成したＯＯＢ信号又はＡｌｉｇｎの送信を要求するＯＯＢ信号・プリミティブ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力することによって、プリミティブ・ＦＩＳ送信／受信制御回路３１からホスト３にＯＯＢ信号又はＡｌｉｇｎ送信する。
【００３２】
プリミティブ・ＦＩＳ送信／受信制御回路３１は、ホスト３に対して、ＯＯＢ信号、プリミティブ及びＦＩＳ等のデータの送受信を行う。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＣＰＵ２０から出力された制御情報に基づいて、ＦＩＳをホスト３に送信する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０から出力されたＯＯＢ信号・プリミティブ情報に基づいて、ＯＯＢ信号又はＡｌｉｇｎをホスト３に送信する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、起動シーケンサ管理回路３２から出力されたＦＩＳ情報に基づいて、ＦＩＳをホスト３に送信する。
【００３３】
起動シーケンサ管理回路３２は、ドライブ装置２の起動シーケンスの進行度合いを監視する。起動シーケンサ管理回路３２は、ＯＯＢシーケンスの進行度合いに応じて、ドライブ装置２の動作モードの移行、ＦＩＳの生成、及び、生成したＦＩＳのホスト３への送信を実行する。起動シーケンサ管理回路３２は、生成したＦＩＳと共に、生成したＦＩＳの送信を要求するＦＩＳ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力することによって、プリミティブ・ＦＩＳ送信／受信制御回路３１からホスト３にＦＩＳを送信する。
【００３４】
続いて、図２〜図４を参照して、本発明の実施の形態にかかるストレージシステム１の処理について説明する。図２は、本発明の実施の形態にかかるドライブ装置２の起動シーケンスにおける処理を示すフローチャートである。図３は、本発明の実施の形態にかかるＯＯＢ(Out Of Band)シーケンス判定回路３０の処理を示すフローチャートである。図４は、本発明の実施の形態にかかる起動シーケンサ管理回路３２の処理を示すフローチャートである。
【００３５】
まず、ドライブ装置２及びホスト３は、相互に接続されて起動された場合、ＳＡＴＡの通信を確立するために、ＯＯＢシーケンスを開始する(Ｓ１)。ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンス管理番号がどのような値となっているかを判定する(Ｓ１０１)。ここでは、ＯＯＢシーケンス管理番号の初期値が"０"である場合について説明する。ＯＯＢシーケンス管理番号は、例えば、ＯＯＢシーケンス判定回路３０が有する記憶装置に格納される。記憶装置は、例えば、メモリ又はレジスタ等である。ＯＯＢシーケンス管理番号は、例えば、ドライブ装置２の起動時に、ＯＯＢシーケンス判定回路３０によって初期値に初期化される。
【００３６】
ＯＯＢシーケンス管理番号が"０"である場合、ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンスが開始されたか否かを判定する。具体的には、ホスト３からＣＯＭＲＥＳＥＴが送信されたか否かを判定する(Ｓ１０２)。
【００３７】
ホスト３からＣＯＭＲＥＳＥＴが送信されていない場合(Ｓ１０２：ＮＯ)、ＯＯＢシーケンス判定回路３０は、ホストからＣＯＭＲＥＳＥＴが送信されたか否かの判定を継続して実行する(Ｓ１０２)。
【００３８】
ホスト３からＣＯＭＲＥＳＥＴが送信された場合(Ｓ１０２：ＹＥＳ)、ＯＯＢシーケンス判定回路３０は、ＣＯＭＩＮＩＴをホスト３に送信する(Ｓ１０３)。具体的には、ＯＯＢシーケンス判定回路３０は、ＣＯＭＩＮＩＴの送信を要求するＯＯＢ信号・プリミティブ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０からのＯＯＢ信号・プリミティブ情報に応じて、ＣＯＭＩＮＩＴをホスト３に送信する。ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンス管理番号を"１"に更新する(Ｓ１０４)。ＯＯＢシーケンス判定回路３０は、更新後のＯＯＢシーケンス管理番号を起動シーケンサ管理回路３２に出力する。
【００３９】
一方、起動シーケンサ管理回路３２は、起動シーケンス管理番号がどのような値となっているかを判定する(Ｓ２０１)。ここで、起動シーケンス管理番号の初期値が"０"である場合について説明する。起動シーケンス管理番号は、例えば、起動シーケンス管理番号が有する記憶装置に格納される。起動シーケンス管理番号は、例えば、ドライブ装置２の起動時や、ホストとの通信が確立した後、ホストとの通信が遮断された場合に、起動シーケンサ管理回路３２によって初期値に初期化される。
【００４０】
起動シーケンス管理番号が"０"である場合、起動シーケンサ管理回路３２は、ＯＯＢシーケンスが開始されたか否かを判定する(Ｓ２０２)。具体的には、ＯＯＢシーケンス管理番号が"１"となったか否かを判定する。
【００４１】
ＯＯＢシーケンス管理番号が"１"となっていない場合(Ｓ２０２：ＮＯ)、起動シーケンサ管理回路３２は、ＯＯＢシーケンスが開始されたか否かの判定を継続して実行する(Ｓ２０２)。
ＯＯＢシーケンス管理番号が"１"となった場合(Ｓ２０２：ＹＥＳ)、起動シーケンサ管理回路３２は、起動シーケンス管理番号を"１"に更新する(Ｓ２０３)。ここで、起動シーケンサ管理回路３２は、ＯＯＢシーケンス判定回路３０から"１"に更新されたＯＯＢシーケンス管理番号が出力された場合、ＯＯＢシーケンス管理番号が"１"となったと判定する。
【００４２】
ステップＳ１０４の実行後、ＯＯＢシーケンス判定回路３０は、再び、ＯＯＢシーケンス管理番号を判定する(Ｓ１０１)。ＯＯＢシーケンス管理番号が"１"である場合、ＯＯＢシーケンス判定回路３０は、ホスト３からＣＯＭＷＡＫＥが送信されたか否かを判定する(Ｓ１０５)。
【００４３】
ホスト３からＣＯＭＷＡＫＥが送信されていない場合(Ｓ１０５：ＮＯ)、ＯＯＢシーケンス判定回路３０は、ホスト３からＣＯＭＷＡＫＥが送信されたか否かの判定を継続して実行する(Ｓ１０５)。
【００４４】
ホスト３からＣＯＭＷＡＫＥが送信された場合(Ｓ１０５：ＹＥＳ)、ＯＯＢシーケンス判定回路３０は、ＣＯＭＷＡＫＥをホスト３に送信する(Ｓ１０６)。具体的には、ＯＯＢシーケンス判定回路３０は、ＣＯＭＷＡＫＥの送信を要求するＯＯＢ信号・プリミティブ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０からのＯＯＢ信号・プリミティブ情報に応じて、ＣＯＭＷＡＫＥをホスト３に送信する。
【００４５】
また、ＯＯＢシーケンス判定回路３０は、Ａｌｉｇｎをホスト３に送信する(Ｓ１０７)。具体的には、ＯＯＢシーケンス判定回路３０は、Ａｌｉｇｎの送信を要求するＯＯＢ信号・プリミティブ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０からのＯＯＢ信号・プリミティブ情報に応じて、Ａｌｉｇｎをホスト３に送信する。ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンス管理番号を"２"に更新する(Ｓ１０８)。ＯＯＢシーケンス判定回路３０は、更新後のＯＯＢシーケンス管理番号を起動シーケンサ管理回路３２に出力する。
【００４６】
ＯＯＢシーケンス判定回路３０は、再び、ＯＯＢシーケンス管理番号を判定する(Ｓ１０１)。ＯＯＢシーケンス管理番号が"２"である場合、ＯＯＢシーケンス判定回路３０は、ホスト３からＡｌｉｇｎが送信されたか否かを判定する(Ｓ１０９)。
【００４７】
ホスト３からＡｌｉｇｎが送信されていない場合(Ｓ１０９：ＮＯ)、ＯＯＢシーケンス判定回路３０は、ホスト３からＡｌｉｇｎが送信されたか否かの判定を継続して実行する(Ｓ１０９)。
【００４８】
ホスト３からＡｌｉｇｎが送信された場合(Ｓ１０９：ＹＥＳ)、ＯＯＢシーケンスが完了したことになる。その場合、ＯＯＢシーケンス判定回路３０は、ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅのホスト３への送信を開始する(Ｓ２、Ｓ１１０)。具体的には、ＯＯＢシーケンス判定回路３０は、ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅの送信の開始を要求するＯＯＢ信号・プリミティブ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０からのＯＯＢ信号・プリミティブ情報に応じて、ＳＹＮＣ Ｐｒｉｍｉｔｉｖｅのホスト３への送信を開始する。ＯＯＢシーケンス判定回路３０は、ＯＯＢシーケンス管理番号を"３"に更新する(Ｓ１１１)。ＯＯＢシーケンス判定回路３０は、更新後のＯＯＢシーケンス管理番号を起動シーケンサ管理回路３２に出力する。
【００４９】
一方、起動シーケンサ管理回路３２は、ステップＳ２０３の実行後、再び、起動シーケンス管理番号を判定する(Ｓ２０１)。起動シーケンス管理番号が"１"である場合、起動シーケンサ管理回路３２は、ＯＯＢシーケンスが終了したか否かを判定する(Ｓ２０４)。具体的には、起動シーケンサ管理回路３２は、ＯＯＢシーケンス管理番号が"３"となったか否かを判定する。
【００５０】
ＯＯＢシーケンス管理番号が"３"となっていない場合、起動シーケンサ管理回路３２は、ＯＯＢシーケンスが終了したか否かの判定を継続して実行する(Ｓ２０４)。
ＯＯＢシーケンス管理番号が"３"となった場合、起動シーケンサ管理回路３２は、ドライブ装置２の動作モードを、Ｘ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅを無視するモードに設定する(Ｓ３、Ｓ２０５)。具体的には、ＯＯＢシーケンス完了後にドライブ装置２からの必要な応答が終了するまで、ホスト３からの要求を全て拒否するために、ホスト３からＸ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅが送信されてきても、ドライブ装置２からＲ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅを送信しないモードに移行する。ここで、起動シーケンサ管理回路３２は、ＯＯＢシーケンス判定回路３０から"３"に更新されたＯＯＢシーケンス管理番号が出力された場合、ＯＯＢシーケンス管理番号が"３"となったと判定する。
【００５１】
ここで、起動シーケンサ管理回路３２は、Ｔａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報を含むＦＩＳ(以下、「Ｒｅｇｉｓｔｅｒ ＦＩＳ」とも言う)をホスト３に送信する(Ｓ４、Ｓ２０６)。具体的には、起動シーケンサ管理回路３２は、Ｒｅｇｉｓｔｅｒ ＦＩＳの送信を要求するＦＩＳ情報をプリミティブ・ＦＩＳ送信／受信制御回路３１に出力する。プリミティブ・ＦＩＳ送信／受信制御回路３１は、ＯＯＢシーケンス判定回路３０からのＦＩＳ情報に応じて、Ｒｅｇｉｓｔｅｒ ＦＩＳをホスト３に送信する。起動シーケンサ管理回路３２は、起動シーケンス管理番号を"２"に更新する(Ｓ２０７)。
【００５２】
起動シーケンサ管理回路３２は、再び、起動シーケンス管理番号を判定する(Ｓ２０１)。起動シーケンス管理番号が"２"である場合、起動シーケンサ管理回路３２は、Ｒｅｇｉｓｔｅｒ ＦＩＳの送信が正常に完了したか否かを判定する(Ｓ５、Ｓ２０８)。具体的には、起動シーケンサ管理回路３２は、Ｒｅｇｉｓｔｅｒ ＦＩＳの受信が完了したときにホスト３から送信されるＲ＿ＯＫ Ｐｒｉｍｉｔｉｖｅをプリミティブ・ＦＩＳ送信／受信制御回路３１が受信したか否かを判定する。
【００５３】
Ｒ＿ＯＫ Ｐｒｉｍｉｔｉｖｅを受信していない場合(Ｓ２０８：ＮＯ)、起動シーケンサ管理回路３２は、Ｒｅｇｉｓｔｅｒ ＦＩＳの送信が正常に完了したか否かの判定を継続して実行する(Ｓ２０８)。
【００５４】
Ｒ＿ＯＫ Ｐｒｉｍｉｔｉｖｅを受信した場合(Ｓ２０８：ＹＥＳ)、起動シーケンサ管理回路３２は、ドライブ装置２の動作モードを、Ｘ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅの応答を許可するモードに設定する(Ｓ６、Ｓ２０９)。具体的には、ホスト３からの要求を許可にするために、ホスト３からＸ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅが送信された場合に、ドライブ装置２からＲ＿ＲＤＹ Ｐｒｉｍｉｔｉｖｅを送信するモードに移行する。
【００５５】
起動シーケンサ管理回路３２は、ＯＯＢシーケンス管理番号及び起動シーケンス管理番号を共に"０"に更新する(Ｓ２１０、Ｓ２１１)。ＯＯＢシーケンス管理番号の初期化は、例えば、起動シーケンサ管理回路３２がＯＯＢシーケンス管理番号の初期化を要求する初期化要求情報をＯＯＢシーケンス判定回路３０に出力し、ＯＯＢシーケンス判定回路３０がその初期化要求情報に応じて実行する。
【００５６】
このようにすることで、次のＳＡＴＡの通信確立に備える。再度、ステップＳ１から処理が実行して通信を確立するケースとしては、例えば、ドライブ装置２及びホスト３が再接続された場合や、ホスト３がドライブ装置２の不正な動作を検出してＣＯＭＲＥＳＥＴによってドライブ装置２をリセットする場合等がある。ホスト３は、例えば、ドライブ装置２から所定の時間の間、応答がない場合にドライブ装置２をリセットする。
【００５７】
そして、起動シーケンサ管理回路３２は、ＳＡＴＡ通信確立処理及びＴａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報の送信が終了したことを通知する終了通知情報をＣＰＵ２０に出力する。ＣＰＵ２０は、起動シーケンサ管理回路３２から出力された終了通知情報に応じて、ホスト３に対してデータを送受信する処理の実行を開始する。また、ＣＰＵ２０は、終了通知情報の通知後に、再度、ドライブ装置２の起動シーケンスを実行する場合、ＤＳＰ２１に対して、上述した起動シーケンスにおける処理の実行を指示する指示情報を送信する。ＤＳＰ２１は、ＣＰＵ２０から出力された指示情報に応じて、上述した起動シーケンスを実行する。
【００５８】
このように、本実施の形態では、ＯＯＢシーケンスの終了が物理層からリンク層に通知されたときに、リンク層内でＴａｓｋ Ｆｉｌｅ Ｒｅｇｉｓｔｅｒ情報をホスト３に送信する制御をおこなっている。したがって、ドライブ装置２内のソフトウェアの仕様に関わらず、安定してホスト３に対して初期認識応答を実行することができる。
【００５９】
以上に説明したように、本実施の形態では、ホスト３から送信された要求データに応じて、要求データに応答する応答データをホスト３に送信する処理を、所定の要求データについて、プロセッサ２０を代替して実行するＤＳＰ２１を有するようにしている。これによれば、所定の要求データについて、プロセッサ２０で実行される処理に影響されることなく、その要求データに応答する応答データをホスト３に送信する処理を実行することができる。そのため、ホスト３がドライブ装置２からの応答を十分な時間待たない要求データを、所定の要求データとして設定することで、ホスト３から送信された要求データに応答する応答データの送信の遅延を防止することができる。
【００６０】
また、本実施の形態では、ホスト３から所定の要求データの次に送信される要求データを受信するときに、所定の要求データに応答する応答データを送信していない場合は、次に送信される要求データの受信を抑止するようにしている。これによれば、先に送信された要求データに応答する応答データを送信する前に、ホスト３からの次の要求データの送信が完了することを防止することができる。そのため、ホスト３及びドライブ装置２で扱うデータに齟齬が生じないようにすることができる。
【００６１】
また、本実施の形態では、ホスト３からの起動シーケンスにおける要求データの受信に応じて、起動シーケンスの進行度合いを示す管理情報を更新するようにしている。そして、ホスト３から管理情報が示す進行度合いに応じた要求データが送信されなかった場合は、管理情報を更新せずに、応答データも送信しないようにしている。これによれば、ホスト３が故障又は障害等によって正常な順序で要求データを送信しなかった場合であっても、ドライブ装置２における誤動作を防止することができる。また、このとき、応答データを送信しないようにすることで、タイムアウトを検出したホスト３から再リセットをさせて、起動シーケンスを実行し直すようにさせることによって復旧を試みることができるようになる。
【００６２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００６３】
本実施の形態では、ホスト３からのＯＯＢシーケンスの終了を示すＡｌｉｇｎを検出した場合に、Ａｌｉｇｎに応答するＦＩＳについて、ＣＰＵ２０を代替してＦＩＳを送信する例について説明したが、応答データの送信を代替する所定の要求データは、Ａｌｉｇｎである場合に限られない。任意のＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳに応答するＦＩＳについて、ＣＰＵ２０を代替してＦＩＳを送信するようにしてもよい。例えば、ホスト３からＡＴＡ／ＡＴＡＰＩコマンドを示すＦＩＳが連続して送信される場合に、ドライブ装置２が先のＦＩＳに応答するＦＩＳを送信する前に、ホスト３が十分な時間を待たずに次のＦＩＳを送信してきてしまうような場合に、ホスト及びドライブ装置で扱うデータに齟齬が生じないようにすることができる。
【００６４】
本実施の形態では、ＯＯＢシーケンス及び起動シーケンスの進行度合いを、ＯＯＢシーケンス管理番号及び起動シーケンス管理番号によって管理したが、進行度合いを示す情報であれば、これに限られない。例えば、番号以外の文字列及びビットパターン等の情報で管理するようにしてもよい。
【００６５】
本実施の形態では、ＣＰＵ２０を代替して、ホスト３から送信されたデータに応答するデータを送信する処理を回路によって実現した場合について例示したが、ＣＰＵ２０を代替する手段はこれに限られない。例えば、ＤＳＰやＣＰＵ等のプロセッサが、ＯＯＢシーケンス判定回路３０及び起動シーケンサ管理回路３２における処理を実行するプログラムを実行することによって実現してもよい。この場合、ＯＯＢシーケンス管理番号及び起動シーケンス管理番号をメモリ１１に格納するようにしてもよい。
【００６６】
また、このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、ストレージ装置に供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、ＣＤ−ＲＯＭ(Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ(例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM）、ＥＰＲＯＭ(Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ(Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium）によってストレージ装置に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをストレージ装置に供給できる。
【００６７】
また、プロセッサが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現される場合だけでなく、このプログラムが、プロセッサ上で稼動しているＯＳ(Operating System)もしくはアプリケーションソフトウェアと共同して、上述の実施の形態の機能を実現する場合も、本発明の実施の形態に含まれる。さらに、このプログラムの処理の全てもしくは一部がストレージ装置に挿入された機能拡張ボードやストレージ装置に接続された機能拡張ユニットによって行われて、上述の実施の形態の機能が実現される場合も、本発明の実施の形態に含まれる。
【符号の説明】
【００６８】
１    ストレージシステム
２    ドライブ装置
３    ホスト
１０    ＬＳＩ
１１    メモリ
１２    ドライバ
１３    メカユニット
２０    ＣＰＵ
２１    ＤＳＰ
３０    ＯＯＢシーケンス判定回路
３１    プリミティブ・ＦＩＳ送信／受信制御回路
３２    起動シーケンサ管理回路
【図１】
2012133513.tif 000003
【図２】
2012133513.tif 000004
【図３】
2012133513.tif 000005
【図４】
2012133513.tif 000006
【図５】
2012133513.tif 000007
【図６】
2012133513.tif 000008