(57)【要約】【課題】ホストからのコマンドを異常終了させることなくファームウェア更新を可能とするディスク制御装置およびディスク制御装置のファームウェア更新方法を提供する。【解決手段】ディスク制御装置は、並行して動作可能な第１および第２のディスク制御部を具備する。第１および第２のディスク制御部は、ホスト装置とディスク装置との間に接続され、ホスト装置からのコマンドに基づいて、ディスク装置をアクセスしてデータを送受信する。第１のディスク制御部は、ホスト装置から受信したコマンドを第２のディスク制御部に転送する。第２のディスク制御部は、転送されたコマンドに対応するデータを第１のディスク制御部を介して送受信する。第２のディスク制御部が第１のディスク制御部に代替してコマンドを実行している間に、第１のディスク制御部のファームウェアが更新される。【選択図】図１
2010117970.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置とディスク装置との間に接続され、前記ホスト装置からのコマンドに基づいて、前記ディスク装置をアクセスしてデータを送受信する第１および第２のディスク制御部を具備し、
前記第１のディスク制御部は、前記ホスト装置から受信した前記コマンドを前記第２のディスク制御部に転送し、
前記第２のディスク制御部は、転送された前記コマンドに対応するデータを前記第１のディスク制御部を介して送受信し、
前記第２のディスク制御部が前記第１のディスク制御部に代替して前記コマンドを実行している間に、前記第１のディスク制御部のファームウェアを更新する
ディスク制御装置。
【請求項２】
前記第１のディスク制御部は、前記ホスト装置から受信して前記第１のディスク制御部が処理すべき前記コマンドがなくなったときに、更新されたファームウェアにより再起動する
請求項１に記載のディスク制御装置。
【請求項３】
前記第１および第２のディスク制御部は、
前記コマンドを格納するコマンド受信メモリと、
前記コマンド受信メモリに格納するアドレスを設定するコマンド設定レジスタを含むホストインタフェース部と
を備え、
前記第１のディスク制御部に備わる前記ホストインタフェース部は、前記第１のディスク制御部に備わる前記コマンド設定レジスタに設定された前記アドレスに基づいて、前記第２のディスク制御部に備わる前記コマンド受信メモリに前記ホスト装置から受信した前記コマンドをＤＭＡ転送する
請求項１または請求項２に記載のディスク制御装置。
【請求項４】
前記第１および第２のディスク制御部は、前記ホスト装置との間にデータを送受信するデータ送受信メモリをさらに備え、
前記ホストインタフェース部は、前記データ送受信メモリの転送アドレスを示すデータ送受信設定レジスタをさらに含み、
前記第２のディスク制御部は、前記第１のディスク制御部に備わる前記ホストインタフェース部を起動して、前記第１のディスク制御部に備わる前記データ送受信設定レジスタに設定されるアドレスに基づいて、前記第１のディスク制御部に備わる前記データ送受信メモリと前記ホスト装置との間のデータ送受信を行う
請求項３に記載のディスク制御装置。
【請求項５】
ホスト装置とディスク装置との間に接続される第１および第２のディスク制御部を備えるディスク制御装置におけるファームウェアの更新方法であって、
前記第１のディスク制御部が前記ホスト装置からコマンドを受信するステップと、
前記コマンドを前記第２のディスク制御部に転送するステップと、
前記第２のディスク制御部が転送された前記コマンドを実行して前記第１のディスク制御部を介して前記コマンドに対応するデータを送受信するステップと、
前記第２のディスク制御部が転送された前記コマンドを実行している間に、前記第１のディスク制御部に搭載されるファームウェアを更新するステップと、
前記ファームウェアの更新後、前記第1のディスク制御部は、前記第２のディスク制御部に転送することなく前記コマンドを実行するステップと
を具備する
ファームウェアの更新方法。
【請求項６】
前記更新するステップは、前記第１のディスク制御部が処理すべき前記コマンドがなくなったとき、更新されたファームウェアにより再起動するステップを備える
請求項５に記載のファームウェアの更新方法。
【請求項７】
前記第１および第２のディスク制御部は、
前記コマンドを格納するコマンド受信メモリと、
前記コマンド受信メモリに格納するアドレスを設定するコマンド設定レジスタと
を含むホストインタフェース部を備え、
前記転送するステップは、前記第１のディスク制御部に備わる前記ホストインタフェース部が、前記第１のディスク制御部に備わる前記コマンド設定レジスタに設定された前記アドレスに基づいて、前記第２のディスク制御部に備わる前記コマンド受信メモリに前記ホスト装置から受信した前記コマンドをＤＭＡ転送するステップを備える
請求項５または請求項６に記載のファームウェアの更新方法。
【請求項８】
前記第１および第２のディスク制御部は、前記ホスト装置との間にデータを送受信するデータ送受信メモリをさらに備え、
前記ホストインタフェース部は、前記データ送受信メモリの転送アドレスを示すデータ送受信設定レジスタをさらに含み、
前記送受信するステップは、
前記第２のディスク制御部が前記第１のディスク制御部に備わる前記ホストインタフェース部を起動するステップと、
前記第１のディスク制御部に備わる前記データ送受信設定レジスタに設定されるアドレスに基づいて、前記第１のディスク制御部に備わる前記データ送受信メモリと前記ホスト装置との間のデータ送受信を行うステップと
を備える
請求項７に記載のファームウェアの更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスク制御装置に関し、特にディスク制御装置のファームウェアの更新方法に関する。
【背景技術】
【０００２】
ディスク制御装置は、ホスト装置の指示に基づいて、ホスト装置が使用するデータを保持するディスク装置を制御する。ディスク制御装置は、ファームウェアによって動作するＣＰＵを内蔵する。ファームウェアは更新されることがある。ファームウェアの更新時には、ファームウェアが動作しているＣＰＵをリブート（再起動）する必要がある。ＣＰＵをリブートすると、ホスト装置からのコマンドを処理することができなくなるため、ＣＰＵが動作中にファームウェアを更新すると、コマンドは異常終了する。
【０００３】
関連する技術として、特開２００５−１２２７６３号公報には、上位装置から受領したデータのディスク装置への書き込みを制御する記憶装置に関する技術が開示されている。この記憶装置は、通信機構を介して接続される第１と第２のディスク制御装置を含む。第１と第２のディスク制御装置のそれぞれは、ホストＩ／Ｆ制御部と、データバッファと、データ転送制御部と、ドライブＩ／Ｆ制御部と、マイクロプロセッサとを有する。ホストＩ／Ｆ制御部は、上位装置と接続される。データバッファは、ホストＩ／Ｆ制御部を介して受領するデータを一時的に保持する。データ転送制御部は、ホストＩ／Ｆ制御部とデータバッファとの間のデータの転送を制御する。ドライブＩ／Ｆ制御部は、データバッファに保持されたデータのディスク装置への書き込みや読み出しを制御する。マイクロプロセッサは、各制御部の動作を制御する。記憶装置は、２つのディスク制御装置のマイクロプロセッサがともに参照する共通管理テーブルを保持する。
【０００４】
また、特開２００７−２１９６９６号公報には、上位装置からのＩ／Ｏ要求に対して下位装置に対するＩ／Ｏ処理を実行する制御装置に関する技術が記載されている。この制御装置は、複数のプロセッサと、メモリに格納された各プロセッサを動作させるための複数のファームウェアと、Ｉ／Ｏ制御情報記憶手段と、Ｉ／Ｏ処理命令保持手段と、制御手段とを備える。複数のプロセッサは、上位装置から要求されたＩ／Ｏを処理する。Ｉ／Ｏ制御情報記憶手段は、上位装置からのＩ／Ｏ要求をどのプロセッサに振り分けるかを定める振り分け制御情報を記憶する。Ｉ／Ｏ処理命令保持手段は、プロセッサ毎に上位装置からのＩ／Ｏ要求を受け付けて処理対象となっているＩ／Ｏ処理命令を、そのＩ／Ｏ処理が完了するまで保持する。制御手段は、プロセッサとファームウェアとにより現在のファームウェアの改版を制御する。この制御手段は、外部からのファームウェアの改版指示に対し、Ｉ／Ｏ制御情報記憶手段における振り分け制御情報を、ファームウェア改版の対象となったプロセッサへのＩ／Ｏ要求の振り分けを禁止する状態に更新し、Ｉ／Ｏ処理命令保持手段が保持するＩ／Ｏ処理命令がなくなったことを確認してファームウェアの改版を実行する制御を行う。
【０００５】
また、特開２００７−２７２４９６号公報には、ホストに接続して運用されるストレージ制御装置に関する技術が開示されている。このストレージ制御装置は、ホストインタフェース制御部と、ストレージ制御ファームウェアと、電気的に書き換え可能な不揮発性メモリを備える。その不揮発性メモリを使用して、ストレージ制御ファームウェアの活性プログラム交換中に必要な情報を格納し、この情報を使用してホストとのコネクションを切断することなく、ホストからのコマンドにエラー応答することなく、活性プログラム交換を行う。この装置は、ファームウェアの更新中に受信したコマンドをキューイングし、ファームウェア更新後に処理する。したがって、キューの数を超えるコマンドを受信した場合にコマンドが破棄され、処理できない可能性がある。
【０００６】
【特許文献１】特開２００５−１２２７６３号公報
【特許文献２】特開２００７−２１９６９６号公報
【特許文献３】特開２００７−２７２４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ホストからのコマンドを異常終了させることなくファームウェア更新を可能とするディスク制御装置およびディスク制御装置のファームウェア更新方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の観点では、ディスク制御装置は、並行して動作可能な第１および第２のディスク制御部を具備する。第１および第２のディスク制御部は、ホスト装置とディスク装置との間に接続され、ホスト装置からのコマンドに基づいて、ディスク装置をアクセスしてデータを送受信する。第１のディスク制御部は、ホスト装置から受信したコマンドを第２のディスク制御部に転送する。第２のディスク制御部は、転送されたコマンドに対応するデータを第１のディスク制御部を介して送受信する。第２のディスク制御部が第１のディスク制御部に代替してコマンドを実行している間に、第１のディスク制御部のファームウェアが更新される。
【０００９】
本発明の他の観点では、ファームウェアの更新方法は、ホスト装置とディスク装置との間に接続される第１および第２のディスク制御部を備えるディスク制御装置におけるファームウェアの更新方法であって、受信するステップと、転送するステップと、送受信するステップと、更新するステップと、実行するステップとを具備する。受信するステップでは、第１のディスク制御部が前記ホスト装置からコマンドを受信する。転送するステップでは、受信したコマンドが第２のディスク制御部に転送される。送受信するステップでは、第２のディスク制御部が転送されたコマンドを実行して第１のディスク制御部を介してコマンドに対応するデータを送受信する。更新するステップでは、第２のディスク制御部が転送されたコマンドを実行している間に、第１のディスク制御部に搭載されるファームウェアが更新される。実行するステップでは、ファームウェアの更新後、第１のディスク制御部は、第２のディスク制御部に転送することなくコマンドを実行する。
【発明の効果】
【００１０】
本発明によれば、ホストからのコマンドを異常終了させることなくファームウェア更新を可能とするディスク制御装置およびディスク制御装置のファームウェア更新方法を提供することができる。
【発明を実施するための最良の形態】
【００１１】
図１に、本発明の実施の形態に係る情報処理装置の構成が示される。情報処理装置は、ホスト装置１０と、ディスク制御装置２０と、ディスク装置４０とを具備する。ディスク制御装置２０は、ホストディレクタ（ＨＤ）３０−１および３０−２を備える。ホストディレクタ３０−１および３０−２は、同じ構成で同じ機能を有するため、以降、区別せずに説明する場合は−１、−２を省略する。また、以降、ホストディレクタ３０内の構成についても、区別せずに説明する場合は−１、−２を省略する。各ホストディレクタ３０は、ＣＰＵ３１と、ホストＩ／Ｆ制御部３４と、データ送受信メモリ３７と、コマンド受信メモリ３８とを備える。ホストＩ／Ｆ制御部３４は、コマンド受信設定レジスタ３５とデータ送受信設定レジスタ３６とを含む。
【００１２】
ＣＰＵ３１は、ファームウェア格納メモリ３２を含み、ファームウェア格納メモリ３２に格納されるファームウェアを実行する。ＣＰＵ３１は、ホスト装置１０から受信したコマンドを解析し、ディスク装置４０とホスト装置１０との間のデータ送受を制御する。コマンドは、リードコマンド、ライトコマンドを含む。リードコマンドは、ディスク装置４０からホスト装置１０にデータを送信するコマンドである。リードコマンドを受信したＣＰＵ３１は、ホスト装置１０に送信するデータが格納されているデータ送受信メモリ３７のアドレスをデータ送受信設定レジスタ３６に設定する。ライトコマンドは、ホスト装置１０からディスク装置４０にデータを送信するコマンドである。ライトコマンドを受信したＣＰＵ３１は、ホスト装置１０から受信するデータを格納するデータ送受信メモリ３７の位置を示すアドレスをデータ送受信設定レジスタ３６に設定する。
【００１３】
ホストＩ／Ｆ制御部３４は、ホスト装置１０から受信したコマンドをコマンド受信メモリ３８に転送する機能、ホスト装置１０から受信したデータをデータ送受信メモリ３７に転送する機能、データ送受信メモリ３７に格納されたデータをホスト装置１０に転送する機能を有する。ホスト装置１０から受信したコマンドは、コマンド受信設定レジスタ３５に設定されるアドレスで示されるコマンド受信メモリ３８に格納される。ホスト装置１０から受信したデータは、データ送受信設定レジスタ３６に設定されるアドレスで示されるデータ送受信メモリ３７に格納される。また、データをホスト装置に転送する場合、データ送受信メモリ３７に格納されたデータのうち、データ送受信設定レジスタ３６に設定されるアドレスにより示されるデータが、ホスト装置１０に送信される。
【００１４】
ホストディレクタ３０は、コマンド受信メモリ３８、データ送受信メモリ３７、コマンド受信設定レジスタ３５、データ送受信設定レジスタ３６をそれぞれ複数個有することが好ましい。その場合、同時に複数のコマンドを処理することが可能である。ここでは、説明を簡単にするために、コマンド受信メモリ３８、データ送受信メモリ３７、コマンド受信設定レジスタ３５、データ送受信設定レジスタ３６は、各ホストディレクタ３０に１つずつ存在するとして説明する。
【００１５】
次に、図２を参照して、このホストディレクタ３０の通常時の動作を説明する。ホストディレクタ３０の各々は、同じように動作するので、ここでは、ホストディレクタ毎に区別して示す符号を省略する。
【００１６】
ＣＰＵ３１は、受信するコマンドを格納するコマンド受信メモリ３８のアドレスをコマンド受信設定レジスタ３５に設定する（ａ）。ホスト装置１０からコマンドが発行されると、ホストＩ／Ｆ制御部３４は、コマンド受信設定レジスタ３５に設定されたアドレスに基づいて（ｂ）、コマンドをコマンド受信メモリ３８に格納する（ｃ）。コマンドの格納は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）にて行われ、ＣＰＵ３１にはコマンド受信メモリ３８にコマンドが格納された後、コマンドを受信したことが通知される。
【００１７】
コマンド受信メモリ３８にコマンドが格納されると、ＣＰＵ３１は、コマンドの解析を行う（ｄ）。コマンドは、リードコマンド、ライトコマンドを含む。リードコマンドは、ディスク装置４０からホスト装置１０にデータを送信するコマンドである。ライトコマンドは、ホスト装置１０からディスク装置４０にデータを送信するコマンドである。
【００１８】
解析結果がリードコマンドであれば、ＣＰＵ３１は、ホスト装置１０に送信するデータが格納されているデータ送受信メモリ３７のアドレスをデータ送受信設定レジスタ３６に設定する（ｅ）。ライトコマンドであれば、ＣＰＵ３１は、ホスト装置１０から受信するデータを格納するデータ送受信メモリ３７の位置を示すアドレスをデータ送受信設定レジスタ３６に設定する（ｅ）。
【００１９】
データ送受信設定レジスタ３６にアドレスが設定されると、ホストＩ／Ｆ制御部３４は、設定されたメモリアドレスに基づいて（ｆ）、ホスト装置１０とデータ送受信メモリ３７との間のデータ送受信の制御を行う（ｇ）。即ち、リードコマンドの場合には、データ送受信メモリ３７の指定アドレスからデータがホスト装置１０に送信され、ライトコマンドの場合には、ホスト装置１０から受信したデータがデータ送受信メモリ３７の指定アドレス位置に格納される。これらのデータ転送もＤＭＡにより行われる。
【００２０】
次に、図３を参照して、ファームウェア更新時の動作について説明する。ディスク制御装置２０は、動作中であり、その内のＣＰＵ３１−１のファームウェアが更新される場合の動作を説明する。
【００２１】
ＣＰＵ３１−１のファームウェアを更新するため、ＣＰＵ３１−１を停止する必要がある。そのため、ＣＰＵ３１−１は、コマンド受信設定レジスタ３５−１の設定をホストディレクタ３０−２のコマンド受信メモリ３８−２のアドレスに変更する（ａ１）。これ以降にホスト装置１０からホストＩ／Ｆ制御部３４−１が受信したコマンドは、設定変更されたコマンド受信設定レジスタ３５−１が示すアドレスに基づいて（ｂ）、コマンド受信メモリ３８−２に格納される（ｃ）。
【００２２】
また、ＣＰＵ３１−２は、ホストＩ／Ｆ制御部３４−２を介して受信するコマンドを格納するアドレスをコマンド受信設定レジスタ３５−２に設定する（ａ２）。ホストＩ／Ｆ制御部３４−２は、ホスト装置１０からコマンドを受信すると、コマンド受信設定レジスタ３５−２に設定されるアドレスに基づいて（ｂ２）、コマンド受信メモリ３８−２にコマンドを格納する（ｃ２）。
【００２３】
コマンド受信メモリ３８−２には、図４に示されるように、受信したコマンドとそのコマンドを受信したホストＩ／Ｆ制御部番号とが格納される。コマンド受信メモリ３８−２にコマンドが格納されると、ＣＰＵ３１−２は、コマンド処理を実行する（ｄ）。
【００２４】
コマンドがホストＩ／Ｆ制御部３４−１を介して受信したコマンドの場合（コマンドＡ）、ＣＰＵ３１−２は、ホストＩ／Ｆ制御部３４−１のデータ送受信設定レジスタ３６−１にデータ送受信メモリ３７−１に格納される送受信データＡのアドレスを設定する（ｅ）。データ送受信設定レジスタ３６−１に設定されるアドレスに基づいて（ｆ１）、ホスト装置１０とデータ送受信メモリ３７−１との間のデータ送受信が行われる（ｇ１）。
【００２５】
コマンドがホストＩ／Ｆ制御部３４−２を介して受信したコマンドの場合（コマンドＢ）、ＣＰＵ３１−２は、ホストＩ／Ｆ制御部３４−２のデータ送受信設定レジスタ３６−２にデータ送受信メモリ３７−２に格納される送受信データＢのアドレスを設定する（ｅ２）。データ送受信設定レジスタ３６−２に設定されるアドレスに基づいて（ｆ２）、ホスト装置１０とデータ送受信メモリ３７−２との間のデータ送受信が行われる（ｇ２）。
【００２６】
これによりＣＰＵ３１−２は、ホストＩ／Ｆ制御部３４−１を介して受信したコマンドもホストＩ／Ｆ制御部３４−２を介して受信したコマンドも処理することが可能となる。
【００２７】
一方、ＣＰＵ３１−１は、コマンド受信設定レジスタ３５−１の設定をコマンド受信メモリ３８−２のアドレスに変更した後、コマンド受信メモリ３８−１に受信済みのコマンドを処理する。ＣＰＵ３１−１で処理すべきコマンドがなくなった時点でＣＰＵ３１−１はリブート（再起動）して、ファームウェアの更新を実施する。ファームウェア更新完了後、ＣＰＵ３１−１は、コマンド受信設定レジスタ３５−１の設定をコマンド受信メモリ３８−１のアドレスに設定し、通常状態の動作に戻る。
【００２８】
同じように、ＣＰＵ３１−２の処理をＣＰＵ３１−１に代行させ、ＣＰＵ３１−２のリブートを行う。これにより、ホスト装置１０からのコマンドを異常終了させることなくファームウェアの更新を実施することが可能となる。
【００２９】
上述の実施の形態ではディスク制御装置２０が１台の場合の動作が説明されたが、ディスク制御装置間を接続することによりｎ台のディスク制御装置でも実現可能である。また、本実施の形態においては、コマンド受信メモリ３８とデータ送受信メモリ３７とに分けて説明したが、物理的に別のメモリである必要はなく、論理的に区別できればよい。
【００３０】
このように、ホストＩ／Ｆ制御部の設定変更によりコマンド受信メモリアドレスとデータ送受信アドレスを切り替えることを可能とすることにより、転送先切り替え用のスイッチやＣＰＵの動作状況を管理するための共有メモリを必要とせず、ホストからのコマンドを異常終了させずにファームウェア更新を実現することが可能となる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態に係る情報処理装置の構成を示す図である。
【図２】ホストディレクタの通常時の動作を説明するための図である。
【図３】ホストディレクタのファームウェア更新時の動作を説明するための図である。
【図４】コマンド受信メモリに格納される情報の例を示す図である。
【符号の説明】
【００３２】
１０  ホスト装置
２０  ディスク制御装置
３０、３０−１、３０−２  ホストディレクタ（ＨＤ）
３１、３１−１、３１−２  ＣＰＵ
３２、３２−１、３２−２  ファームウェア格納メモリ
３４、３４−１、３４−２  ホストＩ／Ｆ制御部
３５、３５−１、３５−２  コマンド受信設定レジスタ
３６、３６−１、３６−２  データ送受信設定レジスタ
３７、３７−１、３７−２  データ送受信メモリ
３８、３８−１、３８−２  コマンド受信メモリ
４０  ディスク装置
【図１】
2010117970.tif 000003
【図２】
2010117970.tif 000004
【図３】
2010117970.tif 000005
【図４】
2010117970.tif 000006