(57)【要約】    【課題】ファームウェア更新中であっても、ホスト発行コマンドや内部発生コマンドの実行を可能として性能低下を抑止する。    【解決手段】記憶装置は、ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリ３２とディスク媒体２０−１に分けて格納し、装置起動時に、不揮発メモリ３２とディスク媒体２０−１から読出したファームウェアを揮発メモリ３０に格納して実行する。更新要求処理部４６は、ホストからファームウェアの更新要求を受けた際に、ホストから転送された新ファームウェアを受信してバッファメモリ３８に格納した時点でホストに更新終了を通知する。バックグラウンド更新部４８は、更新終了の通知後に、ホストが発行したコマンドの処理空き時間を使用するバックグラウンド処理として、新ファームウェアを不揮発メモリ３２及びディスク媒体２０−１に書き込んで更新する。    【選択図】      図１
2008046791.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理部と、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新部と、
を備えたことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置に於いて、前記更新要求処理部は、
前記バッファメモリに格納した新ファームウェアを前記バッファメモリ及び前記揮発メモリに展開されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替えるファーム切替部と、
切替後の新ファームウェアの実行により前記上位装置に更新要求に対する終了応答を通知する応答通知部と、
を備えたことを特徴とする記憶装置。
【請求項３】
請求項１記載の記憶装置に於いて、前記バックグラウンド更新部は、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記ディスク媒体に対応する第１ファームウェア部分は、全体として前記記憶媒体の旧ファームウェア部分に上書きして更新し、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記不揮発メモリに対応する第２ファームウェア部分は、前記不揮発メモリに書き込み可能な最小単位に分割して前記不揮発メモリの旧ファームウェア部分に順次上書きして更新することを特徴とする記憶装置のファームウェア更新方法。
【請求項４】
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置のファームウェア更新方法に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理ステップと、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新ステップと、
を備えたことを特徴とする記憶装置のファームウェア更新方法。
【請求項５】
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置の制御装置に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理部と、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新部と、
を備えたことを特徴とする記憶装置の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストからの更新要求によりデータを記録再生するドライブ制御ソフトウェアであるファームウェアをダウンロードして更新する記憶装置、ファームウェア更新方法、及び制御装置に関し、特に、装置の稼動状態でホストからの新ファームウェアを転送して装置側の旧ファームウェアを更新する記憶装置、ファームウェア更新方法、及び制御装置に関する。
【背景技術】
【０００２】
従来、ドライブ制御ソフトウェアとして磁気ディスク装置のコンドローラに実装されたファームウェアについては、ユーザに装置を出荷した後の運用中にあっても、その後に発生した様々な要因に対する対応策を講ずることでバージョンアップされており、逐次、新バージョンのファームウェアをダウンロードして更新するようにしている。
【０００３】
このような磁気ディスク装置におけるファームウェアの更新は、磁気ディスク装置１台ごとに行う必要があり、例えばホストに対しサブシステムとして接続されたディスクアレイシステムにあっては、ディスクアレイに実装されている多数の磁気ディスク装置に対し、ホストから新バージョンのファームウェアを装置側に転送してダウンロードし、装置内部でファームウェアの更新を実行させている。
【０００４】
従来の磁気ディスク装置にあっては、装置内に設けた不揮発メモリであるフラッシュメモリと磁気ディスクとに分けてファームウェアを格納しており、装置を起動すると、フラッシュメモリの先頭位置に記憶されたブートコードを実行してフラッシュメモリ内のファームウェア及び磁気ディスク媒体のファームウェアを読み出して揮発メモリであるバッファメモリとＳＲＡＭに書き込み、ＣＰＵにより実行して磁気ディスク媒体に対するデータの記録再生を実行している。
【０００５】
このような磁気ディスク装置に対する従来のファームウェアの更新処理は次の手順で行っている。
（１）ホストから磁気ディスク装置に新バージョンの新ファームウェアを転送し、バッファメモリに格納する（ファームウェアダウンロード）。
（２）ＳＲＡＭに展開している旧バージョンの旧ファームウェアを、バッファメモリに格納した新ファームウェアで上書きし、新バージョンのファームウェアに切り替える。
（３）切替え後に、新バージョンのファームウェアの対応する部分をフラッシュメモリ及び磁気ディスク媒体のファームウェア格納領域に書き込んで更新する。
（４）更新終了をホストに通知し、ホストとの接続を切離す。
【特許文献１】特許第２９７２７４２号公報
【特許文献２】特開２００６−０７２７６１号公報
【特許文献３】特開２００１−１００９８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、このような従来のファームウェア更新方法にあっては、次の問題がある。
【０００７】
まず、磁気ディスク装置のファームウェアの更新時間は、通常のリードコマンドやライトコマンドなどのコマンド実行時間に比べ非常に長い時間を要し、ファームウェアの更新要求を行ったホストは、磁気ディスク装置から更新終了が通知されるまで待たなければならず、そのため更新中はリードコマンドやライトコマンドを実行させることができず、多数の磁気ディスク装置を備えたディスクアレイシステムにあっては、ファームウェアの更新は、システムのパフォーマンスの低下を招く要因となる。
【０００８】
また磁気ディスク装置にあっては、従来よりコマンド待ちとなるアイドル状態での実行されるバックグラウンド機能として、セルフテストなど内部的に実施する処理があるが、ファームウェアの更新中は中断され、これに掛かる時間は、セルフテストや故障予測機能の対象とならず、定期的な品質・機能チェックが働かないという問題がある。
【０００９】
本発明は、ファームウェア更新中であっても、ホスト発行コマンドや内部発生コマンドの実行を可能として性能低下の抑止、および、品質・機能チェックを中断しない記憶装置、ファームウェア更新方法及び制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
（装置）
本発明は、記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、不揮発メモリと記憶媒体から読出したファームウェアを揮発メモリに格納して実行する記憶装置に於いて、
上位装置（ホスト）からファームウェアの更新要求を受けた際に、上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で上位装置に更新終了を通知する更新要求処理部と、
更新終了の通知後に、上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新部と、
を備えたことを特徴とする。
【００１１】
ここで、更新要求処理部は、
バッファメモリに格納した新ファームウェアをバッファメモリ及び揮発メモリに展開されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、切替後の新ファームウェアの実行により上位装置に更新要求に対する終了応答を通知する。
【００１２】
バックグラウンド更新部は、
バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、ディスク媒体に対応するファームウェア部分は、全体として記憶媒体の旧ファームウェア部分に上書きして更新し、
バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、不揮発メモリに対応するファームウェア部分は、不揮発メモリに書き込み可能な最小単位に分割して前記不揮発メモリの旧ファームウェア部分に順次上書きして更新する。
【００１３】
バックグラウンド更新部は、記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約される制御処理を禁止する。
【００１４】
バックグラウンド更新部は、記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約されるコマンドを受領した場合は、更新処理の終了までコマンドの実行を待ち状態とし、更新処理が終了した際に実行させる。
【００１５】
バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、上位装置にエラー又はビジー等を通知するステータスコマンドを受領した場合は、更新処理が終了するまでステータスコマンドの送信を待ち状態とし、更新処理が終了した際に送信させる。
【００１６】
（方法）
本発明は、記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、不揮発メモリと記憶媒体からファームウェアを読出して揮発メモリに格納して実行する記憶装置のファームウェア更新方法に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で上位装置に更新終了を通知する更新要求処理ステップと、
更新終了の通知後に、上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新ステップと、
を備えたことを特徴とする。
【００１７】
（制御装置）
本発明は、記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体からファームウェアを読出して揮発メモリに格納して実行する記憶装置の制御装置に於いて、
上位装置からファームウェアの更新要求を受けた際に、上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で上位装置に更新終了を通知する更新要求処理部と、
更新終了の通知後に、上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバッグラウンド更新部と、
を備えたことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、上位装置からファームウェアの更新要求コマンドが発行されて新ファームウェアがデバイスインタフェースにより転送された場合、新ファームウェアをバッファメモリに格納し、新ファームウェアの実行に切り替えた段階で上位装置に更新終了を通知することで、記憶装置内での不揮発メモリや記憶媒体でのファームウェアの更新を待つことなく短時間で更新要求コマンドに対し更新終了を応答することができ、記憶アレイシステムのように上位装置の配下に多数の記憶装置が存在する場合、システム全体から見たパフォーマンスの低下を回避することができる。
【００１９】
また記憶装置内でバッファメモリに格納された新ファームウェアをバックグラウンド処理により不揮発メモリに書込んで更新する際に、新ファームウェアを分割して更新することで、ファームウェア更新のバックグラウンド処理とホスト発行コマンドや内部発行コマンドの処理と並行して実行することができ、ファームウェア更新に伴う装置及びシステムの性能と信頼性の低下を最小限に抑えることができる。
【００２０】
更にバックグラウンド機能として行うファームウェアの更新中は、時間のかかる内部処理を禁止すると共に、待たせても問題の少ないコマンドやエラーやビジーなどのステータスコマンドは実行せずに更新終了まで待ち状態とし、バックグラウンド処理として行うファームウェア更新を短時間で処理することができる。
【発明を実施するための最良の形態】
【００２１】
図１は本発明が適用される磁気ディスク装置のブロック図である。図１において、ハードディスクドライブ（ＨＤＤ）として知られた磁気ディスク装置１０は、ディスクエンクロージャ１２と制御ボード１４で構成される。ディスクエンクロージャ１２にはスピンドルモータ１６が設けられ、スピンドルモータ１６の回転軸にディスク媒体として磁気ディスク２０−１、２０−２を装着し、一定時間例えば１００００ｒｐｍで回転させる。
【００２２】
またディスクエンクロージャ１２にはボイスコイルモータ１８が設けられ、ボイスコイルモータ１８はヘッドアクチュエータのアーム先端にヘッド２２−１〜２２−４を搭載しており、磁気ディスク２０−１、２０−２の記録面に対するヘッドの位置決めを行う。
【００２３】
ヘッド２２−１〜２２−４にはライトヘッド素子とリードヘッド素子が一体化されて搭載されている。また磁気ディスク２０−１、２０−２に対するヘッド２２−１〜２２−４による磁気記録方式としては、長手磁気記録方式または垂直磁気記録方式にいずれであっても良い。
【００２４】
ヘッド２２−１〜２２−４はヘッドＩＣ２４に対し信号線接続されており、ヘッドＩＣ２４は上位装置となるホストからのライトコマンドまたはリードコマンドに基づくヘッドセレクト信号で１つのヘッドを選択して書込みまたは読出しを行う。またヘッドＩＣ２４には、ライト系についてはライトドライバが設けられ、リード系についてはプリアンプが設けられている。
【００２５】
制御ボード１４にはＭＰＵ２６が設けられ、ＭＰＵ２６のバス２８に対し、装置の起動時に、制御コードと変数を含むドライブ制御ソフトウェアであるファームウェアが展開されるＳＲＡＭなどを用いた揮発メモリ３０、揮発メモリ３０に展開するファームウェアの格納するフラッシュＲＯＭ等を用いた不揮発メモリ３２が設けられている。なお、本実施形態にあっては、ファームウェアは不揮発メモリ３２と例えば磁気ディスク２０−１とに分けて格納されている。
【００２６】
またＭＰＵ２６のバス２８には、ホストインタフェース制御部３４、ＳＤＲＡＭなどを用いたバッファメモリ３８を制御するバッファメモリ制御部３６、フォーマットとして機能するハードディスクコンドローラ４０、ライト変調部及びリード復調部として機能するリードチャネル４２、ボイスコイルモータ１８及びスピンドルモータ１６を制御するモータ駆動制御部４４が設けられている。
【００２７】
本実施形態において、バッファメモリ３８の一部の領域はＭＰＵ２６のダイレクトアクセス領域に割当られており、装置の起動時に、ダイレクトアクセス領域に不揮発メモリ３２及び磁気ディスク２０−１から読み出したファームウェアの一部を書き込んで配置する。
【００２８】
磁気ディスク装置１０は、ホストからのコマンドに基づきファームウェアの制御コードの実行により書込処理及び読出処理を行う。ここで、磁気ディスク装置における通常の動作を説明すると次のようになる。
【００２９】
ホストからのライトコマンドとライトデータをホストインタフェース制御部３４で受けると、ライトコマンドをＭＰＵ２６で解読し、受信したライトデータを必要に応じてバッファメモリ３８に格納した後、ハードディスクコンドローラ４０で所定のデータ形式に変換すると共にＥＣＣ符号化処理によりＥＣＣ符号を付加し、リードチャネル４２におけるライト変調系でスクランブル、ＲＬＬ符号変換、更に書込補償を行った後、ライトアンプからヘッドＩＣ２４を介して選択した例えばヘッド２２−１のライトヘッドからディスク媒体２０−１に書き込む。
【００３０】
このときＭＰＵ２６からＤＳＰなどを用いたモータ駆動制御部４４にヘッド位置決め信号が与えられており、ボイスコイルモータ１８によりヘッドをコマンドで指示された目標トラックにシークした後にオンドラックしてトラック追従制御を行っている。
【００３１】
一方、ホストからのリードコマンドをホストインタフェース制御部３４で受けると、リードコマンドをＭＰＵ２６で解読し、ヘッドＩＣ２４のヘッドセレクトで選択されたリードヘッドから読み出された読出信号をプリアンプで増幅した後に、リードチャネル４２のリード復調系に入力し、パーシャルレスポンス最尤検出（ＰＲＭＬ）などによりリードデータを復調し、ハードディスクコンドローラ４０でＥＣＣ復号処理を行ってエラーを訂正した後、バッファメモリ３８にバッファリングし、ホストインタフェース制御部３４からリードデータをホストに転送する。
【００３２】
図２は本実施形態の磁気ディスク装置を複数設けたディスクアレイ装置のブロック図である。図２において、ディスクアレイ装置５２には、２系統に分けてチャネルアダプタ５４−１１、５４−１２とチャネルアダプタ５４−２１、５４−２２が設けられており、サーバなどのホスト５０−１、５０−２を接続している。
【００３３】
またディスクアレイ装置５２には二重化された制御モジュール５６−１、５６−２が設けられている。制御モジュール５６−１、５６−２に対してはディスクエンクロージャ５８−１、５８−２が設けられ、それぞれ図１に示したと同じ磁気ディスク装置１０−１１〜１０−１５及び１０−２１〜１０−２５を設けている。
【００３４】
ディスクエンクロージャ５８−１、５８−２の各５台の磁気ディスク装置１０−１１〜１０−１５、１０−２１〜１０−２５は、所定のＲＡＩＤレベル例えばＲＡＩＤ１あるいはＲＡＩＤ５といったＲＡＩＤ構成によるディスクアレイを構成している。
【００３５】
制御モジュール５６−１、５６−２には、ＣＰＵ６２−１、６２−２、ＤＭＡコンドローラ６０−１、６０−２、メモリ６４−１、６４−２、デバイスインタフェース６６−１１、６６−１２、６６−２１、６６−２２が設けられている。
【００３６】
ディスクアレイ装置５２はホスト５０−１、５０−２からの入出力要求に応じてディスクエンクロージャ５８−１、５８−２に設けている磁気ディスク装置１０−１１〜１０−１５、１０−２１〜１０−２５に対するリード処理およびライト処理を実行する。
【００３７】
図３は図１の実施形態におけるファームウェアの格納と装置起動時の読出し配置を示した説明図であり、図１の実施形態における不揮発メモリ３２、磁気ディスク２０−１、バッファメモリ３８及び揮発メモリ３０を取り出して示している。
【００３８】
不揮発メモリ３２はフラッシュＲＯＭであり、先頭領域に装置起動用のブートコード６８を格納し、続いて所定サイズのファームウェア領域７０−１が設けられ、ファームウェア領域７０−１にファームウェアＦＷ１を格納している。ファームウェア領域７０−１に格納されたファームウェアＦＷ１は、不揮発メモリ３２としてフラッシュＲＯＭを使用した場合、例えば２５６ＫＷの最小単位でデータ書き換えの為のイレーズと書き込みが行われることから、ファームウェア領域７０−１を例えば破線で示す６つの領域にわけ、それぞれの領域に格納されているファームウェアＦＷ１の分割部分をファームウェアＦＷ１〜ＦＷ１６として表している。
【００３９】
磁気ディスク２０−１のファームウェア領域７０−２にはファームウェアＦＷ２が格納されている。
【００４０】
本実施形態のファームウェアは図３に示したように不揮発メモリ３２のファームウェア領域７０−１に格納されたファームウェアＦＷ１と磁気ディスク２０−１のファームウェア領域７０−２に格納されたファームウェアＦＷ２を合わせたファームウェアである。
【００４１】
本実施形態の磁気ディスク装置の電源を投入すると、ＭＰＵ２６内のマスクＲＯＭ領域４５に格納されているＭａｓｋＲＯＭコードによりデバイスの診断と初期化が行われ、不揮発メモリ３２についても診断と初期化が行われ、診断正常の場合にブートコード６８の実行に基づきファームウェアＦＷ１、ＦＷ２をバッファメモリ３８及び揮発メモリ３０側に読出し配置して実行される。
【００４２】
本実施形態にあってはＭＰＵ２６のダイレクトアクセス領域を構成している揮発メモリ３０に不揮発メモリ３２及び磁気ディスク２０−１から読み出した全てのファームウェアＦＷ１、ＦＷ２を書込み配置するには容量が不足することから、バッファメモリ３８の一部にＭＰＵ２６のダイレクトアクセス領域７２−１を確保し、ここに不揮発メモリ３２及び磁気ディスク２０−１から読み出したＦＷ１、ＦＷ２の一部を書込み配置している。
【００４３】
不揮発メモリ３２及び磁気ディスク媒体２０−１に格納されているファームウェアＦＷ１、ＦＷ２は、図１の磁気ディスク装置１０のドライブ制御ソフトウェアを構成する制御コード及び変数で構成されており、制御コードは図１のホストインタフェース制御部３２、バッファメモリ制御部３６、ハードディスクコンドローラ４０、リードチャネル４２、モータ駆動制御部４４及びヘッドＩＣ２４のそれぞれを制御するための制御コード及び変数である。
【００４４】
ファームウェアＦＷ１、ＦＷ２について、図３の場合にはバッファメモリ３８のダイレクトアクセス領域７２−１にファームウェアＦＷ１の一部のファームウェアＦＷ１１、ＦＷ１２を読出して書き込み、揮発メモリ３０のファームウェア領域７２−２にファームウェアＦＷ１の一部のファームウェアＦＷ１３〜ＦＷ１６と磁気ディスク２０−１のファームウェアＦＷ２を読出して書き込んでいる。
【００４５】
図３にあっては、バッファメモリ３８及び揮発メモリ３０に対するファームウェアＦＷ１、ＦＷ２の配置は説明を簡単にするために、単純な領域分けで示しているが、実際のファームウェアＦＷ１、ＦＷ２のバッファメモリ３８及び揮発メモリ３０に対する配置は、揮発メモリ３０のファームウェア領域７２−２には処理性能を確保するために処理時間を短くする必要のある制御コード及び頻度の高い変数を配置し、一方、バッファメモリ３８のダイレクトアクセス領域７２−１には性能確保には直接関係しない試験用コードやセルフテストコード及び参照頻度の低い変数およびデータなどを配置する。
【００４６】
図３のようにバッファメモリ３８及び揮発メモリ３０に読出し配置されたファームウェアＦＷ１１〜ＦＷ１６から成るファームウェアＦＷ１及びファームウェアＦＷ２を実行中図１のＭＰＵ２６は、ホスト側からファームウェア更新要求が行われると、このファームウェア更新要求に基づきファームウェア更新処理を実行する。
【００４７】
このようなファームウェア更新処理のため、ＭＰＵ２６には更新要求処理部４６とバックグラウンド更新部４８のプログラムにより実現される機能が設けられている。
【００４８】
更新要求処理部４６はホストからファームウェアの更新要求を受けた際にホストから転送された新ファームウェアを受信してバッファメモリ３８に格納し、バッファメモリ３８に格納した時点でホストに対し終了応答を通知する。
【００４９】
より具体的には、更新要求処理部４６はホストからホストインタフェース制御部３４を介して受信した新ファームウェアをバッファメモリ３８に格納した後に、新ファーム入替後の更新完了要求フラグをセットし、装置を再起動（パワーオンスタート処理によるリブート）する。
【００５０】
ブートコード６８によって、図３のようにバッファメモリ３８及び揮発メモリ３０に配置されている旧ファームウェアに上書きして更新し、新ファームウェアの実行に切り替え、入替後の新ファームウェアにより（更新完了要求フラグに従って）ホストに対し更新要求に対する更新終了を通知する。
【００５１】
このため本実施形態にあっては、ホストからダウンロードしてバッファ上で旧ファームウェアに上書きして新ファームウェアの実行に切り替えた状態で、ホストに対し更新終了を通知することができ、更新された新ファームウェアを磁気ディスク２０−１及び不揮発メモリ３２に書き込んで旧ファームウェアに上書きする本来の更新を内部的に行う前にホストに対し更新終了を通知することができる。
【００５２】
このため図２に示すようにホスト５０−１、５０−２の入出力要求に対し、ディスクエンクロージャ５８−１、５８−２に設けた複数の磁気ディスク装置１０−１１〜１５、１０−２１〜２５に対しリード処理やライト処理を行う場合にあっては、ホスト側からのファームウェア更新要求に対し、ディスクアレイ装置５２の制御モジュール５６−１が実質的なホストとしてディスクエンクロージャ５８−１、５８−２の磁気ディスク装置１０−１１〜１５、１０−２１〜２５に対し順次ファームウェア更新要求を発行して更新処理を行わせることになり、この場合に磁気ディスク装置１０−１１〜１０−２５における内部的はファームウェア更新を待つことなく更新終了通知が得られることでディスクアレイ装置５２の制御モジュール５６−１における更新処理のための拘束時間を短くすることができる。
【００５３】
これによってディスクアレイ装置５２におけるファームウェア更新時のアクセス性能の低下を最小限に抑えることができる。もちろんディスクアレイ装置５２に対する上位装置としてのホスト５０−１、５−２から見た入出力処理性能を見てもファームウェア更新による性能低下を最小限に抑えることができる。
【００５４】
再び図１を参照するにＭＰＵ２６に設けたバックグラウンド更新部４８は、更新要求処理部４６によるホスト側に対する更新終了の通知後に、ホストが発行したコマンドの処理空き時間を利用するバックグラウンド処理として、バッファメモリ３８及び揮発メモリ３０上で書き換えられた新ファームウェアを不揮発メモリ３２及び磁気ディスク２０−１に書き込んで更新する。
【００５５】
このバックグラウンド更新部４８による更新は、磁気ディスク２０−１については対応する新ファームウェアの部分を一括して書き込むが、不揮発メモリ３２に対する新ファームウェアの書込みについては、不揮発メモリ３２のアクセス最小単位に分割して順次対応する旧ファームウェアの分割部分に対応して書き込む。この新ファームウェアの不揮発メモリ３２に対する分割書込みにより、ファームウェア更新途中におけるリードコマンドやライトコマンドの実行を可能とし、バックグラウンド更新部４８による更新処理により磁気ディスク装置１０の性能低下を最小限に抑えることができる。
【００５６】
更にバックグラウンド更新部４８にあってはバックグラウンド処理として実行する更新処理を妨げる処理、コマンド実行及びコマンド送信などを禁止もしくは更新終了まで待たせるようにしている。
【００５７】
バックグラウンド更新部４８においてファームウェア更新処理中に禁止する内部処理としては、例えばシーケンシャルハードウェア処理のように終了までに時間のかかる処理である。またバックグラウンド更新部４８により更新処理を妨げるようなコマンドがきた場合にはこの実行を更新処理が終わるまで待たせるようにする。
【００５８】
このような更新処理を妨げるコマンドとしてはアクセスコマンド、ユーザー情報リードコマンド、バッファライトコマンドなど処理に時間のかかるコマンドを対象とする。更にバックグラウンド更新部４８にあっては、バックグラウンド更新中にホストからエラーまたはビジーなどのステータス要求コマンドを受信した場合には、ステータス要求コマンドの実行をバックグラウンド更新処理が終わるまで待たせ、更新終了でエラーステータスまたはビジーステータスを応答する。
【００５９】
図４は図１のＭＰＵ２６に設けた更新要求処理部４６によるホストから更新要求を受けた際のバッファ受信処理とその後の旧ファームウェアを新ファームウェアに切り替えて実行する際の記憶配置の説明図である。
【００６０】
図１において、ホストからファームウェア更新要求コマンドがホストインタフェース制御部３４で受信されると、デバイスインタフェースの接続を確立するインタフェース処理を通じて、ホストから新ファームウェアを受信し、図４のバッファメモリ３８に示すように、適宜のファームウェアバッファ領域７６にファームウェアダウンロード７４により受信した新ファームウェアＮＦＷ１、ＮＦＷ２を格納する。
【００６１】
尚、説明の都合上、新ファームウェアをＮＦＷ１、ＮＦＷ２の２つにわけ、更に新ファームウェアＮＦＷ１については不揮発メモリ３２のアクセス可能な最小単位に応じて６つの新ファームウェアＮＦＷ１１〜ＮＦＷ１６に分けて示しているが、実態としてはひとつのファームウェアである。
【００６２】
バッファメモリ３８に新ファームウェアＮＦＷ１、ＮＦＷ２が格納されると、新ファームウェアＮＦＷ１、ＮＦＷ２のチェックサムにより正当性を確認する。次にバックグラウンド更新処理部４８の制御に必要な内部フラグを設定した後、現在バッファメモリ３８のダイレクトアクセス領域７２−１及び揮発メモリ３０のファームウェア領域７２−２に配置して実行している旧ファームウェアＦＷ１１〜ＦＷ１６、ＦＷ２に対し、新ファームウェアＮＦＷ１１〜ＮＦＷ１６、ＮＦＷ２を上書きするライト処理７８−１、７８−２を実行して更新する。
【００６３】
続いて、装置の起動によるリブートを行うことでメモリのダイレクトアクセス領域７２−１及び揮発メモリ３０のファームウェア領域７２−２において、更新した新ファームウェアＮＦＷ１１〜ＮＦＷ１６、ＮＦＷ２の実行に切り替える。そしてホストに対するファームウェア更新終了の通知はバッファメモリ３８及び揮発メモリ３０上で更新した新ファームウェアの実行により行うことになる。
【００６４】
図５は図１のＭＰＵ２６に設けたバックグラウンド更新部４８によるホストに対するファームウェア更新処理の終了通知後にバックグラウンド処理として行うファームウェア更新時の記憶配置の説明図である。
【００６５】
図５において、バッファメモリ３８及び揮発メモリ３０上で更新された新ファームウェアＮＦＷ１１〜ＮＦＷ１６、ＮＦＷ２の更新は、まず揮発メモリ３０側に配置している新ファームウェアＮＦＷ２を一括して磁気ディスク２０−１のファームウェア領域７０−２に書き込む更新処理８０−１を行う。
【００６６】
続いて図６に示すように、バッファメモリ３８及び揮発メモリ３０側に配置している新ファームウェア、即ちＮＦＷ１の分割ファームウェアである新ファームウェアＮＦＷ１１〜ＮＦＷ１６のそれぞれについて、ホストからのコマンド実行の空き時間のタイミングで不揮発メモリ３２のファームウェア領域７０−１に最小アクセス単位となる分割された新ファームウェアＮＦＷ１１、ＮＦＷ１２、ＮＦＷ１３・・・に示すように順次書き込む更新処理８２−１、８２−２、８２−３・・・を行う。
【００６７】
このような分割したファームウェアによる不揮発メモリ３２の更新処理にあっては、一回の更新が終了するごとに、もしそのときホストからのリードコマンドもしくはライトコマンドがコマンドキューに格納されて実行待ちにあった場合には、分割した新ファームウェアの更新終了でコマンドキューから処理待ちのリードコマンドまたはライトコマンドを取り出して実行する。
【００６８】
このため不揮発メモリ３２に対する新ファームウェアの全ての更新がすむまでコマンドキューに格納されているホストからのアクセスコマンドの処理が待たされることがなく、新ファームウェアの更新処理と上位装置のアクセスコマンドの並列的な実行可能とし、ファームウェア更新中におけるホスト側におけるシステムの処理性能の低下を最小限に抑えることができる。
【００６９】
また不揮発メモリ３２に対する新ファームウェアの分割更新中において、ファームウェア更新処理を妨げるようなシーケンシャルハードウェア処理、シーケンシャルコマンド、ユーザ情報リードコマンド、バッファライトコマンドなどの処理に時間のかかるコマンド、更にはホストからのエラーまたはビジーなどの応答を要求するステータス要求コマンドなどについては、バックグラウンド処理の更新中は処理を禁止したり、コマンドについてはコマンドを待たせて更新終了後に処理をすることで、ホストからのアクセスコマンドにより必要以上にファームウェアのバックグラウンド処理が制約されてしまうことを防止し、ファームウェア更新中における処理性能の低下の抑制と更新処理の処理時間の短縮化を両立させることができる。
【００７０】
図７はファームウェア更新終了時の記憶配置の説明図であり、バッファメモリ３８及び揮発メモリ３０に配置しているファームウェアは、更新後の新ファームウェアＮＦＷ１１〜ＮＦＷ１６、ＮＦＷ２となり、また不揮発メモリ３２及び磁気ディスク２０−１に格納しているファームウェアは更新済みの新ファームウェアＮＦＷ１１〜ＮＦＷ１６、ＮＦＷ２となっている。
【００７１】
したがって、その後に磁気ディスク装置が電源オフとなるまでは、バッファメモリ３８及び揮発メモリ３０に配置された新ファームウェアにより磁気ディスク装置の制御が行われ、磁気ディスク装置の電源を切断した後の再起動時には、図３に示したと同様、不揮発メモリ３２のブートコード６８の実行により、不揮発メモリ３２及び磁気ディスク２０−１から更新済みの新ファームウェアがバッファメモリ３８及び揮発メモリ３０に読出し配置され、実行されることになる。
【００７２】
図８は本実施形態によるファームウェアダウンロード処理の説明図であり、図１のＭＰＵ２６に示した更新要求処理部４６による処理手順となる。図８において、ステップＳ１でホストインタフェース制御部３４がホストからファームウェア更新要求コマンドを受信すると、ホストインタフェース応答処理を行うことでホストとのインタフェース接続を確立し、ステップＳ２でホストから送信されたファームウェアを受信してバッファメモリ３８に図４に示すように新ファームウェアを格納する。
【００７３】
続いてステップＳ３でバッファメモリ３８に格納した受信済みの新ファームウェアに対し、チェックサムなどにより正当性を確認し、正当性が確認できるとステップＳ４で図１のＭＰＵ２６に設けたバックグラウンド更新部４８の処理で使用する内部フラグを設定する。
【００７４】
本実施形態で設定する内部フラグはバックグラウンドセーブフラグＦＬ１、媒体更新フラグＦＬ２及びフラッシュメモリ更新フラグＦＬ３であり、各フラグＦＬ１、ＦＬ２、ＦＬ３を「１」にセットする。
【００７５】
次にステップＳ５で図４に示したようにバッファメモリ３８に格納した新ファームウェアをバッファメモリ３８のダイレクトアクセス領域７２−１及び揮発メモリ３０のファームウェア領域７２−２の旧ファームウェアに上書きするライト処理７８−１、７８−２を行い、これによって旧ファームウェアを新ファームウェアに切り替える。
【００７６】
続いてステップＳ６でパワーオン処理として起動処理を行うことで、切替済みの新ファームウェアを実行し、ステップＳ７で新ファームウェアによりホストに対しファームウェア更新要求に対する更新終了を通知し、一連のファームウェアダウンロード処理を終了してアイドルループに移行する。
【００７７】
図９は図８のファームウェアダウンロード処理が終了した後のアイドルループにおけるバックグラウンド処理として実行するファームウェア更新処理のフローチャートであり、図１のＭＰＵ２６に設けたバックグラウンド更新部４８による処理手順となる。
【００７８】
図９において、ステップＳ１でホストもしくは装置内部で発生したコマンド受領の有無をチェックしており、コマンドを受領するとステップＳ９に進み、バックグラウンド更新優先コマンドか否かチェックする。
【００７９】
リードコマンドやライトコマンドのようにバックグラウンド更新に対する非優先のコマンドであった場合にはステップＳ１０に進み、コマンドを実行する。一方、ステップＳ９でコマンドがシーケンシャルアクセスコマンド、ステータスコマンドなどのバックグラウンド更新優先コマンドであった場合にはステップＳ１１に進み、バックグラウンドセーブフラグＦＬ１がＦＬ１＝１か否かチェックする。
【００８０】
ここでバックグラウンドセーブフラグＦＬ１は図８のファームウェアダウンロード処理におけるステップＳ４でＦＬ１＝１にセットされていることから、ステップＳ１２に進み、媒体更新フラグＦＬ２＝１か否かチェックする。媒体更新フラグはＦＬ２＝１であることからステップＳ１３に進み、図５に示したように磁気ディスク２０−１に対応する新ファームウェア部分を磁気ディスク２０−１のファームウェア領域７２−２に一括してライトして更新する。続いてステップＳ１４で媒体更新フラグＦＬ２をリセットしてＦＬ２＝０とする。
【００８１】
続いてステップＳ８に戻り、コマンド受領の有無をチェックし、受領していればステップＳ９に進み、受領していなければステップＳ１１に進み、バックグラウンドセーブフラグＦＬ１＝１であることからステップＳ１２に進む。
【００８２】
このとき媒体更新フラグＦＬ２はＦＬ２＝０になっていることからステップＳ１５に進み、フラッシュメモリ更新フラグＦＬ３がＦＬ３＝１か否かチェックする。ここでＦＬ３＝１であることからステップ１６に進み、新ファームウェアを不揮発メモリであるフラッシュＲＯＭのアクセス最小単位に分割して図６に示すようにライトする。
【００８３】
続いてステップＳ１７でフラッシュＲＯＭである不揮発メモリ３２に対する新ファームウェアの更新終了か否かチェックし、未終了であれば再びステップＳ８からの処理を繰り返す。
【００８４】
ステップＳ１７でフラッシュＲＯＭを用いた不揮発メモリ３２に対する新ファームウェアの分割ライトによる更新終了を判別すると、ステップＳ１８でフラッシュメモリ更新フラグＦＬ３をＦＬ３＝０にリセットし、ステップＳ８に戻る。そして更新が終了したことからステップＳ８、Ｓ９、Ｓ１０による通常のコマンド実行処理に戻る。
【００８５】
また本発明は図１のＭＰＵ２６により実行されるプログラムを提供するものであり、このプログラムは図８及び図９のフローチャートに示した内容となる。
【００８６】
更に本発明は図８、図９のファームウェ更新処理を実行するプログラムを記憶したコンピュータ、読取可能は記憶媒体を提供する。この記憶媒体としてはＣＤ−ＲＯＭ、フロッピーディスク（Ｒ）、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの記憶媒体などやコンピュータシステムの内外に備えられたハードディスクドライブなどの記憶装置のほか、回線を介してプログラムを保持するデータベース、あるいは他のコンピュータシステムならびにデータベースならびに回線上の伝送媒体を含むものである。
【００８７】
尚、上記の実施形態にあっては磁気ディスク装置を組み込むシステムとして図２のにディスクアレイ装置を例にとるものであったが、上位装置として機能するコンドローラの配下に配置して入出力処理に適用される複数のディスク装置を用いた適宜のシステムを含むものである。
【００８８】
また本発明はホストの配下に配置される複数の磁気ディスク装置に限定されず、通常のパーソナルコンピュータやプレーヤで使用される磁気ディスク装置や光ディスク装置などの記憶装置を含むことはもちろんである。
【００８９】
また上記の実施形態にあっては、フラッシュＲＯＭなどの不揮発メモリ及び磁気ディスクに格納しているファームウェアをバッファメモリ及び揮発メモリに書き込み配置することで実行する場合を例にとっているが、揮発メモリ３０の記憶容量が十分であればバッファメモリ３８のダイレクトアクセス領域を使用せず、揮発メモリ３０に対してのみファームウェアを書込み配置するようにしても良い。
【００９０】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、さらに上記の実施形態に示した数値による限定は受けない。
【００９１】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理部と、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新部と、
を備えたことを特徴とする記憶装置。（１）
【００９２】
（付記２）
付記１記載の記憶装置に於いて、前記更新要求処理部は、
前記バッファメモリに格納した新ファームウェアを前記バッファメモリ及び前記揮発メモリに展開されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替えるファーム切替部と、
切替後の新ファームウェアの実行により前記上位装置に更新要求に対する終了応答を通知する応答通知部と、
を備えたことを特徴とする記憶装置。（２）
【００９３】
（付記３）
付記１記載の記憶装置に於いて、前記バックグラウンド更新部は、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記ディスク媒体に対応する第１ファームウェア部分は、全体として前記記憶媒体の旧ファームウェア部分に上書きして更新し、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記不揮発メモリに対応する第２ファームウェア部分は、前記不揮発メモリに書き込み可能な最小単位に分割して前記不揮発メモリの旧ファームウェア部分に順次上書きして更新することを特徴とする記憶装置のファームウェア更新方法。（３）
【００９４】
（付記４）
付記１記載の記憶装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約される制御処理を禁止することを特徴とする記憶装置。
【００９５】
（付記５）
付記１記載の記憶装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約されるコマンドを受領した場合は、更新処理の終了まで前記コマンドの実行を待ち状態とし、更新処理が終了した際に実行させることを特徴とする記憶装置。
【００９６】
（付記６）
付記１記載の記憶装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、前記上位装置にエラー又はビジー等を通知するステータスコマンドを受領した場合は、更新処理が終了するまで前記ステータスコマンドの送信を待ち状態とし、更新処理が終了した際に送信させることを特徴とする記憶装置。
【００９７】
（付記７）
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置のファームウェア更新方法に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理ステップと、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新ステップと、
更新ステップと、
を備えたことを特徴とする記憶装置のファームウェア更新方法。（４）
【００９８】
（付記８）
付記７記載の記憶装置のファームウェア更新方法に於いて、前記更新要求処理ステップは、
前記バッファメモリに格納した新ファームウェアを前記バッファメモリ及び前記揮発メモリに展開されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切替後の新ファームウェアの実行により前記上位装置に更新要求に対する終了応答を通知することを特徴とする記憶装置のファームウェア更新方法。
【００９９】
（付記９）
付記７記載の記憶装置のファームウェア更新方法に於いて、前記バックグラウンド更新ステップは、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記ディスク媒体に対応する第１ファームウェア部分は、全体として前記記憶媒体の旧ファームウェア部分に上書きして更新し、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記不揮発メモリに対応する第２ファームウェア部分は、前記不揮発メモリに書き込み可能な最小単位に分割して前記不揮発メモリの旧ファームウェア部分に順次上書きして更新するとを特徴とする記憶装置のファームウェア更新方法。
【０１００】
（付記１０）
付記７記載の記憶装置のファームウェア更新方法に於いて、前記バックグラウンド更新ステップは、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約される制御処理を禁止することを特徴とする記憶装置のファームウェア更新方法。
【０１０１】
（付記１１）
付記７記載の記憶装置のファームウェア更新方法に於いて、前記バックグラウンド更新ステップは、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約されるコマンドを受領した場合は、更新処理の終了まで前記コマンドの実行を待ち状態とし、更新処理が終了した際に実行させることを特徴とする記憶装置のファームウェア更新方法。
【０１０２】
（付記１２）
付記７記載の記憶装置のファームウェア更新方法に於いて、前記バックグラウンド更新ステップは、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、前記上位装置にエラー又はビジー等を通知するステータスコマンドを受領した場合は、更新処理が終了するまで前記ステータスコマンドの送信を待ち状態とし、更新処理が終了した際に送信させることを特徴とする記憶装置のファームウェア更新方法。
【０１０３】
（付記１３）
記憶媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを不揮発メモリと記憶媒体に分けて格納し、装置起動時に、前記不揮発メモリと記憶媒体から読出した前記ファームウェアを揮発メモリに格納して実行する記憶装置の制御装置に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記上位装置から転送された新ファームウェアを受信してバッファメモリに格納した時点で前記上位装置に終了応答を通知する更新要求処理部と、
前記更新終了の通知後に、前記上位装置が発行したコマンドの処理空き時間を使用するバックグラウンド処理として、前記新ファームウェアを前記不揮発メモリ及び記憶媒体に書き込んで更新するバックグラウンド更新部と、
を備えたことを特徴とする記憶装置の制御装置。（５）
【０１０４】
（付記１４）
付記１３記載の記憶装置の制御装置に於いて、前記更新要求処理部は、
前記バッファメモリに格納した新ファームウェアを前記バッファメモリ及び前記揮発メモリに展開されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切替後の新ファームウェアの実行により前記上位装置に更新要求に対する終了応答を通知する、ことを特徴とする記憶装置の制御装置。
【０１０５】
（付記１５）
付記１３記載の記憶装置の制御装置に於いて、前記バッグラウンド更新部は、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記ディスク媒体に対応する第１ファームウェア部分は、全体として前記記憶媒体の旧ファームウェア部分に上書きして更新し、
前記バッファメモリ及び揮発メモリに格納されている新ファームウェアの内、前記不揮発メモリに対応する第２ファームウェア部分は、前記不揮発メモリに書き込み可能な最小単位に分割して前記不揮発メモリの旧ファームウェア部分に順次上書きして更新する、ことを特徴とする記憶装置の制御装置。
【０１０６】
（付記１６）
付記１記載の記憶装置の制御装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約される制御処理を禁止することを特徴とする記憶装置の制御装置。
【０１０７】
（付記１７）
付記１３記載の記憶装置の制御装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、更新処理が割り当てられる空き時間の発生が制約されるコマンドを受領した場合は、更新処理の終了まで前記コマンドの実行を待ち状態とし、更新処理が終了した際に実行させることを特徴とする記憶装置の制御装置。
【０１０８】
（付記１８）
付記１３記載の記憶装置の制御装置に於いて、前記バックグラウンド更新部は、前記記憶媒体及び不揮発メモリに対する新ファームウェアの更新処理中に、前記上位装置にエラー又はビジー等を通知するステータスコマンドを受領した場合は、更新処理が終了するまで前記ステータスコマンドの送信を待ち状態とし、更新処理が終了した際に送信させることを特徴とする記憶装置の制御装置。
【図面の簡単な説明】
【０１０９】
【図１】本発明の一実施形態を示した磁気ディスク装置のブロック図
【図２】本実施形態の磁気ディスク装置を備えたディスクアレイ装置のブロック図
【図３】本実施形態におけるファームウェアの格納と起動時の読出し配置を示した説明図
【図４】更新要求の受信と旧ファームウェアを新ファームウェアに切り替えて実行する記憶配置の説明図
【図５】ディスク媒体に対するファームウェア更新時の記憶配置の説明図
【図６】不揮発メモリに対するファームウェア更新時の記憶配置の説明図
【図７】ファームウェア更新終了時の記憶配置の説明図
【図８】本実施形態によるファームウェアダウンロード処理の説明図
【図９】アイドルループを起点とした本実施形態によるファームウェア更新処理を含む制御処理のフローチャート
【符号の説明】
【０１１０】
１０、１０−１１〜１０−１５，１０−２１〜１０−２５：磁気ディスク装置
１２：ディスクエンクロージャ
１４：制御ボード
１５：ロータリアクチュエータ
１６：スピンドルモータ
１８：ボイスコイルモータ
２０、２０−１、２０−２：磁気ディスク
２２−１〜２２−４：ヘッド
２４：ヘッドＩＣ
２６：ＭＰＵ
２８：バス
３０：揮発メモリ
３２：不揮発メモリ
３４：ホストインタフェース制御部
３６：バッファメモリ制御部
３８：バッファメモリ
４０：ハードディスクコンドローラ
４２：リードチャネル
４４：モータ駆動制御部
４５：マスクＲＯＭ領域
４６：更新要求処理部
４８：バックグラウンド更新部
５０−１、５０−２：ホスト
５２：ディスクアレイ装置
５４−１１、５４−１２、５４−２１、５４−２２：チャネルアダプタ
５６−１、５６−２：制御モジュール
５８−１、５８−２：ディスクエンクロージャ
６０−１、６０−２：ＤＭＡコンドローラ
６２−１、６２−２：ＣＰＵ
６４−１、６４−２：メモリ（揮発性）
６６−１１、６６−１２、６６−２１、６６−２２：デバイスインタフェース
６８：ブートコード
７０−１、７０−２，７２−２：ファームウェア領域
７２−１：ダイレクトアクセス領域
７６：ファームウェアバッファ領域
【図１】
2008046791.tif 000003
【図２】
2008046791.tif 000004
【図３】
2008046791.tif 000005
【図４】
2008046791.tif 000006
【図５】
2008046791.tif 000007
【図６】
2008046791.tif 000008
【図７】
2008046791.tif 000009
【図８】
2008046791.tif 000010
【図９】
2008046791.tif 000011