データを記憶する記憶装置と、前記記憶装置へのデータの制御を実施する第1の装置および前記第1の装置と二重化された第2の装置とを有し、前記第1の装置は、前記記憶装置に記憶されるデータの入出力に関わるコマンドを処理する処理装置と、前記処理装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部と、前記ファームウェアのダウンロード要求があった場合、前記記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を制限する制御部とを有することを特徴とするストレージシステム。前記制御部は、発行中の前記コマンドの数が、前記発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を前記第2の装置に依頼することを特徴とする請求項1に記載のストレージシステム。前記制御部は、さらに、発行中の前記コマンドの数が、前記発行可能なコマンド数を超えていれば、前記ダウンロード要求があったファームウェアのダウンロードの実行の開始を待つことを特徴とする請求項1に記載のストレージシステム。前記制御部は、さらに、発行中の前記コマンドの数が、前記発行可能なコマンド数以上でなければ、新たに発行要求があった前記コマンドを発行し、前記記憶部に記憶された情報に基づいて得られる、発行中のコマンド数に対応する応答遅延時間を、予め定められた前記コマンドの応答待ち時間に加算することを特徴とする請求項1または請求項2に記載のストレージシステム。前記制御部は、新たに発行要求があった前記コマンドの発行時刻および前記コマンドの応答時刻の差分を算出し、算出した差分を発行中の前記コマンドの数に対応する応答時間とし、発行中の前記コマンドの数に対応する、前記記憶部に記憶された応答遅延時間を更新することを特徴とする請求項4に記載のストレージシステム。データを記憶する記憶装置へのデータの制御を実施するコントローラモジュールであって、前記記憶装置に記憶されるデータの入出力に関わるコマンドを処理する装置と、前記装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部と、前記ファームウェアのダウンロード要求があった場合、前記記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を制限する制御部とを有することを特徴とするコントローラモジュール。データを記憶する記憶装置へのデータの制御を実施する第1の装置および前記第1の装置と二重化された第2の装置とを有するストレージシステムの制御方法であって、前記第1の装置は、前記ファームウェアのダウンロード要求があった場合に、前記データの入出力に関わるコマンドを処理する処理装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、前記検索する処理によって検索された発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を、前記第2の装置に依頼する処理を含むことを特徴とするストレージシステムの制御方法。しかしながら、IOCFWのダウンロード処理がディスク装置に対する入出力処理と並行して実行されると、入出力処理が滞ってしまう場合があるという問題があった。例えば、IOCFWのダウンロード処理がディスク装置に対する入出力処理と並行して実行されると、ディスク装置に発行中の入出力コマンドにおける入出力処理が滞り、入出力コマンドに対する応答が遅延してしまう場合がある。1つの側面では、本発明は、ファームウェアのダウンロード処理と記憶装置に対する入出力処理が並行して実行されても、入出力処理が滞ることを防止できるストレージシステム等を提供することを目的とする。本願の開示するストレージシステムは、一つの態様において、データを記憶する記憶装置と、前記記憶装置へのデータの制御を実施する第1の装置および前記第1の装置と二重化された第2の装置とを有し、前記第1の装置は、前記記憶装置に記憶されるデータの入出力に関わるコマンドを処理する処理装置と、前記処理装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部と、前記ファームウェアのダウンロード要求があった場合、前記記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を制限する制御部とを有する。本願の開示するストレージシステムの一つの態様によれば、ファームウェアのダウンロード処理と記憶装置に対する入出力処理が並行して実行されても、入出力処理が滞ることを防止できるという効果を奏する。以下に、本願の開示するストレージシステム、コントローラモジュールおよびストレージシステムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、冗長化された2台のコントローラモジュールが搭載されたストレージシステムに適用する場合を示す。しかし、本実施例によりこの発明が限定されるものではない。[実施例に係るストレージシステムの構成]図1は、実施例に係るストレージシステムの構成を示す機能ブロック図である。図1に示すように、ストレージシステム2は、上位装置であるホストコンピュータ1と保守用端末7とそれぞれ接続する。そして、ストレージシステム2は、コントローラエンクロージャCE3と複数のディスク装置以降、ディスクという。5と複数のデバイスエンクロージャDE6とを有する。コントローラエンクロージャ3は、外部アクセスの処理機能を有する制御筐体であり、2台のコントローラモジュールCM4を有し、ディスク5等のデバイスに対するアクセス経路を二重化している。ディスク5は、データを記憶する記憶装置であり、例えばHDDHardDiskDriveやSSDSolidStateDisk等に対応する。デバイスエンクロージャ6は、その内部に有するエクスパンダ62を介して複数のディスク5と接続する。コントローラモジュール4は、ディスク5へのデータ制御を実施する装置である。コントローラモジュール4は、2台のチャンネルアダプタCA41とエクスパンダ42とI/OコントローラIOC43とBUD44と記憶部45と制御部46とを有する。チャンネルアダプタ41は、ホストコンピュータ1と通信接続する通信インタフェースである。エクスパンダ42は、ホストコンピュータ1と、ディスク5またはデバイスエンクロージャ6との間で行われるデータの送受信を中継する装置である。I/Oコントローラ43は、ディスク5に記憶されるデータの入出力に関わるコマンド入出力コマンドを処理する入出力制御装置である。ここで、入出力コマンドとは、例えばディスク5に記憶されたデータを読み出すリードコマンドであったり、データをディスク5に書き込むライトコマンドであったりする。また、I/Oコントローラ43は、I/Oコントローラ43を制御するコントローラファームウェアであるIOCFW431を有する。IOCFW431は、例えば、入出力コマンドを該当するディスク5に発行したり、発行した入出力コマンドの応答を発行元に返却したりする。BUDBootupandUtilityDevice44は、新しくリリースされるIOCFW新IOCFW441を記憶する記憶装置である。新IOCFW441は、I/Oコントローラ43の障害修正や機能追加の際にリリースされ、BUDに記憶される。ここで、リリースされた新IOCFW441は、所定のタイミングで、I/Oコントローラ43に対してダウンロードされることで、I/Oコントローラ43のIOCFW431と置き換えられる。新IOCFW441のダウンロード処理は、ディスク5に対する入出力コマンドの処理と並行して実行される場合であっても、入出力コマンドの処理と並行しないで実行される場合であっても良い。なお、所定のタイミングとは、コントローラモジュール4を制御するコントローラファームウェアCFWを更新する方式であるWarmBoot処理前を一例とする。WarmBoot処理は、運用中のストレージシステム2を停止することなくCFWを更新する仕組みの1つであり、コントローラモジュール4の冗長性を利用してコントローラモジュール4の電源をオフおよびオンを実行しないでCFWを更新する。しかしながら、所定のタイミングは、WarmBoot処理前に限定されず、WarmBoot処理と無関係なタイミングであっても良い。記憶部45は、応答遅延時間テーブル451、許容応答遅延時間テーブル452および発行中応答待ち時間テーブル453を記憶する。記憶部45は、例えば、RAMRandomAccessMemory、フラッシュメモリFlashMemory等の半導体メモリ素子等の記憶装置に対応する。応答遅延時間テーブル451は、IOCFWのダウンロードによって入出力コマンドのディスク5からの応答が遅延する時間応答遅延時間を記憶するテーブルである。かかる応答遅延時間テーブル451は、入出力コマンドを纏めて発行するコマンド数に対応する応答遅延時間を表す。応答遅延時間テーブル451は、例えばストレージシステム2の運用前にテーブル作成部461により作成され、運用中の応答待ち時間を補整する場合に用いられる。なお、応答遅延時間テーブル451の詳細は、後述する。許容応答遅延時間テーブル452は、IOCFWのダウンロード時における許容可能な応答遅延時間を記憶するテーブルである。許容応答遅延時間テーブル452は、例えばストレージシステム2の運用前に作成され、運用中の応答待ち時間を補整する場合に用いられる。発行中応答待ち時間テーブル453は、IOCFWのダウンロードと並行して発行される入出力コマンドの応答待ち時間を記憶するテーブルである。かかる発行中応答待ち時間テーブル453は、入出力コマンドのコマンド数に対応する応答待ち時間を、発行される入出力コマンド毎に記憶する。応答待ち時間とは、入出力コマンドをディスク5に発行してからディスク5からの応答を検出するまでの時間であってタイムアウトとなる時間を意味する。この応答待ち時間は、ストレージシステム2の運用中のIOCFWのダウンロード時に、応答遅延時間テーブル451を用いて補整される。なお、許容応答遅延時間テーブル452および発行中応答待ち時間テーブル453の詳細は、後述する。制御部46は、コントローラモジュール4を制御する。例えば、制御部46は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArray等の集積回路、または、CPUCentralProcessingUnitやMPUMicroProcessingUnit等の電子回路である。さらに、制御部46は、テーブル作成部461と、IOCFWダウンロード制御部462と、応答監視部463とを有する。なお、制御部46に含まれる各機能部は、例えば、コントローラモジュール4を制御するCFWによって実現される。テーブル作成部461は、応答遅延時間テーブル451を作成する。なお、テーブル作成部461による処理は、例えば、ストレージシステム2の運用前に実行される。例えば、テーブル作成部461は、IOCFWのダウンロード中に、一度に纏めて入出力コマンドを発行し、発行した入出力コマンドの数毎の応答遅延時間を算出する。そして、テーブル作成部461は、算出した入出力コマンドの数毎の応答遅延時間を応答遅延時間テーブル451に格納する。ここで、応答遅延時間テーブル451のデータ構造について、図2を参照して説明する。図2は、実施例に係る応答遅延時間テーブルのデータ構造の一例を示す図である。図2に示すように、応答遅延時間テーブル451は、コマンド数451aと応答時間451bとダウンロード時の応答時間451cとダウンロード時の遅延時間451dとを対応付けて記憶する。コマンド数451aは、一度に纏めて発行する入出力コマンドの数を示し、1から発行可能な最大数までの数が該当する。発行可能な最大数は、I/Oコントローラ43の資源によって異なるが、例えば2000を示す。応答時間451bは、IOCFWのダウンロード実行時でない場合にコマンド数分入出力コマンドを纏めて発行したときの平均応答時間を示す。ダウンロード時の応答時間451cは、IOCFWのダウンロード実行時である場合にコマンド数分入出力コマンドを纏めて発行したときの平均応答時間を示す。ダウンロード時の遅延時間451dは、IOCFWのダウンロードによって応答が遅延した時間を示す。すなわち、ダウンロード時の遅延時間451dは、ダウンロード時の応答時間451cから応答時間451bを差し引いて得られる時間となる。一例として、コマンド数451aがxである場合、応答時間451bにT_rxが示す値を記憶している。ダウンロード時の応答時間451cにT_rfxが示す値を記憶している。ダウンロード時の遅延時間451dにT_dxが示す値を記憶している。図1に戻って、テーブル作成部461は、応答遅延時間テーブル451に基づいて、許容応答遅延時間テーブル452を作成する。例えば、テーブル作成部461は、予め定められたダウンロード時における入出力コマンドの許容可能な応答遅延時間を、許容応答遅延時間テーブル452に設定する。そして、テーブル作成部461は、応答遅延時間テーブル451に基づいて、設定した許容可能な応答遅延時間に最も近いダウンロード時の遅延時間を読み出す。そして、テーブル作成部461は、読み出したダウンロード時の遅延時間に対応するコマンド数を検索し、検索したコマンド数をダウンロード時の発行可能なコマンド数として許容応答遅延時間テーブル452に格納する。すなわち、IOCFWのダウンロード時に、ダウンロード時の発行可能なコマンド数まで入出力コマンドが発行されたとしても、ダウンロードによって遅延する各コマンドの応答遅延時間が許容可能な応答遅延時間の範囲内となる。このため、IOCFWのダウンロード時であって、入出力処理が滞らない。図3は、実施例に係る許容応答遅延時間テーブルのデータ構造の一例を示す図である。図3に示すように、許容応答遅延時間テーブル452は、許容応答遅延時間452aと発行可能コマンド数452bとを対応付けて記憶する。許容応答遅延時間452aは、ダウンロード時における入出力コマンドの許容可能な応答遅延時間を示す。発行可能コマンド数452bは、ダウンロード時の発行可能なコマンド数を示す。一例として、許容応答遅延時間テーブル452は、許容応答遅延時間452aがT_mである場合、発行可能コマンド数452bにLを記憶している。図1に戻って、IOCFWダウンロード制御部462は、IOCFWのダウンロード中に、発行中のコマンドの数が、ダウンロード時の発行可能なコマンド数以上であれば、新たに発行要求があった入出力コマンドの発行を制限する。例えば、IOCFWダウンロード制御部462は、IOCFWのダウンロード中に入出力コマンドの発行要求があったとき、許容応答遅延時間テーブル452から発行可能コマンド数を読み出す。そして、IOCFWダウンロード制御部462は、既に発行中のコマンドの数が、読み出した発行可能コマンド数以上であれば、新たに発行要求があった入出力コマンドの発行を制限する。一例として、IOCFWダウンロード制御部462は、発行が制限された入出力コマンドの処理を、二重化されたコンローラモジュール4のI/Oコントローラ43に依頼する。また、IOCFWダウンロード制御部462は、既に発行中のコマンドの数が、読み出した発行可能コマンド数以上でなければ、新たに発行要求があった入出力コマンドを発行する。そして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451に基づいて、発行中のコマンドの数に対応するダウンロード時の遅延時間を取得する。そして、IOCFWダウンロード制御部462は、取得したダウンロード時の遅延時間を、発行中応答待ち時間テーブル453に記憶された、発行中のコマンドの数に対応する応答待ち時間に加算する。すなわち、IOCFWダウンロード制御部462は、応答遅延時間テーブル451に記憶されたコマンド数に対応するダウンロード時の遅延時間を用いて、IOCFWのダウンロード時の応答待ち時間を補整する。言い換えれば、IOCFWダウンロード制御部462は、IOCFWのダウンロード時の入出力コマンドのタイムアウトとなる時間を補整する。後述する応答監視部463は、補整した応答待ち時間を用いて、IOCFWのダウンロード時における、入出力コマンドの応答を監視することとなる。そして、IOCFWダウンロード制御部462は、IOCFWのダウンロードが完了するまでの間、入出力コマンドの新規発行または入出力コマンドの応答により発行中のコマンドの数が変化する都度、発行中のコマンドの数に対応する応答待ち時間を補整する。また、IOCFWダウンロード制御部462は、IOCFWのダウンロードに移行する際、既に発行中のコマンドの数が、読み出した発行可能コマンド数より大きければ、ダウンロード要求があったIOCFWのダウンロードの実行の開始を待つ。既に発行中のコマンドの数が、発行可能コマンド数より超えているので、この状況下でIOCFWのダウンロードが実行されると入出力処理が滞ってしまうからである。ここで、発行中応答待ち時間テーブル453のデータ構造について、図4を参照して説明する。図4は、実施例に係る発行中のコマンド数がxである場合の発行中応答待ち時間テーブルのデータ構造の一例を示す図である。図4に示すように、発行中応答待ち時間テーブル453は、発行中コマンド数453aとシーケンシャル番号453bとコマンド453cと応答待ち時間453dとを対応付けて管理する。発行中コマンド数453aは、並行して発行されている入出力コマンドのコマンド数を示す。シーケンシャル番号453bは、並行して発行されている入出力コマンドの発行順に応じて付けられた番号である。コマンド453cは、シーケンシャル番号453bに対応する入出力コマンドの内容を示す。応答待ち時間453dは、入出力コマンドがディスク5に発行されてからディスク5からの応答を検出するまでの時間であってタイムアウトとなる時間を示す。応答待ち時間453dの初期値は、IOCFWのダウンロード実行時でない場合の応答待ち時間を示し、例えばコマンド453cに共通して一律5秒である。なお、応答待ち時間453dの初期値は、コマンド453cに共通しなくても良く、コマンド453cの内容に応じて異なる値であっても良い。一例として、リードコマンドを4秒とし、ライトコマンドを5秒としても良い。一例として、発行中コマンド数453aがxであって、シーケンシャル番号452bが2である場合、コマンド453cに発行中の入出力コマンドの内容を示すBを記憶している。応答待ち時間453dにT_wBT_dxを記憶している。なお、T_wBは、入出力コマンドBの応答待ち時間の初期値を示す。T_dxは、コマンド数がxである場合のダウンロード時の遅延時間を示す。すなわち、応答待ち時間453dは、応答遅延時間テーブル451のダウンロード時の遅延時間451dを用いて、初期値のT_wBからT_wBT_dxに補整されている。図1に戻って、応答監視部463は、入出力コマンドの応答を監視する。例えば、応答監視部463は、入出力コマンドが発行された場合、発行された入出力コマンドに関し、発行中応答待ち時間テーブル453の応答待ち時間を初期値に設定する。その後、応答監視部463は、発行中応答待ち時間テーブル453に記憶された各入出力コマンドの応答待ち時間を参照しながら、発行中の入出力コマンド毎に応答を監視する。なお、初期値に設定された応答待ち時間は、IOCFWがダウンロードされた場合、IOCFWダウンロード制御部462によって補整された値となる。したがって、応答監視部463は、IOCFWのダウンロードの開始から完了までの間、補整された応答待ち時間を参照しながら、発行中の入出力コマンドの応答を監視する。[応答遅延時間テーブル作成処理の手順]次に、応答遅延時間テーブル451の作成処理の手順について、図5を参照して説明する。図5は、実施例に係る応答遅延時間テーブル作成処理のフローチャートを示す図である。なお、応答遅延時間テーブル作成処理は、例えば、ストレージシステム2の運用前に実行される。まず、テーブル作成部461は、纏めて入出力コマンドを発行するコマンド数発行コマンド数Nに1を設定するステップS11。そして、テーブル作成部461は、発行コマンド数Nが最大数Max以下であるか否かを判定するステップS12。発行コマンド数Nが最大数Maxより大きい場合ステップS12;No、テーブル作成部461は、応答遅延時間テーブル451の作成処理を終了する。一方、発行コマンド数Nが最大数Max以下である場合ステップS12;Yes、テーブル作成部461は、N個の入出力コマンドを同時にディスク5に対して発行するステップS13。そして、テーブル作成部461は、N個の入出力コマンドの応答時間を算出し、算出した応答時間の平均値T_rNを算出するステップS14。続いて、テーブル作成部461は、IOCFWのダウンロードを実行するステップS15。そして、テーブル作成部461は、IOCFWのダウンロードの実行中にN個の入出力コマンドを同時にディスク5に対して発行するステップS16。そして、テーブル作成部461は、N個の入出力コマンドの応答時間を算出し、算出した応答時間の平均値T_rfNを算出するステップS17。そして、テーブル作成部461は、発行コマンド数Nに対する入出力コマンドの応答遅延時間T_dNを算出するステップS18。具体的には、テーブル作成部461は、T_rfNからT_rNを減算し、減算して得た値を入出力コマンドの応答遅延時間T_dNとする。そして、テーブル作成部461は、算出した入出力コマンドの応答遅延時間T_dNを応答遅延時間テーブル451のダウンロード時の遅延時間451dに設定するステップS19。具体的には、テーブル作成部461は、発行コマンド数Nと応答時間の平均値T_rNとダウンロード時の応答時間の平均値T_rfNと応答遅延時間T_dNとを対応付けて応答遅延時間テーブル451に追加する。さらに、テーブル作成部461は、発行コマンド数Nを1だけ加算するステップS20。そして、テーブル作成部461は、加算した発行コマンド数Nにおける処理を継続すべく、ステップS12に移行する。[許容応答遅延時間テーブル作成処理の手順]次に、許容応答遅延時間テーブル452の作成処理の手順について、図6を参照して説明する。図6は、実施例に係る許容応答遅延時間テーブル作成処理のフローチャートを示す図である。なお、許容応答遅延時間テーブル作成処理は、応答遅延時間テーブル451の作成が完了した後実行される。まず、テーブル作成部461は、ダウンロード時における入出力コマンドの許容可能な応答遅延時間を示す許容応答遅延時間T_mを許容応答遅延時間テーブル452に設定するステップS21。そして、テーブル作成部461は、応答遅延時間テーブル451のダウンロード時の遅延時間451dから許容応答遅延時間T_mに最も近い値の遅延時間T_dLを検索するステップS22。さらに、テーブル作成部461は、ダウンロード時の遅延時間451dの値がT_dLであるときの入出力コマンドのコマンド数451aを応答遅延時間テーブル451から読み出す。そして、テーブル作成部461は、読み出した値をダウンロード時の発行可能なコマンド数LとするステップS23。そして、テーブル作成部461は、ダウンロード時の発行可能なコマンド数Lを許容応答遅延時間テーブル452の発行可能コマンド数に設定するステップS24。[IOCFWダウンロード制御処理の手順]次に、IOCFWダウンロード制御処理の手順について、図7および図8を参照して説明する。図7および図8は、実施例に係るIOCFWダウンロード制御処理のフローチャートを示す図である。まず、IOCFWダウンロード制御部462は、保守用端末7からIOCFWのダウンロード実行要求が依頼されたか否かを判定するステップS30。IOCFWのダウンロード実行要求が依頼されていないと判定した場合ステップS30;No、IOCFWダウンロード制御部462は、IOCFWのダウンロード実行要求が依頼されるまで判定処理を繰り返す。一方、IOCFWのダウンロード実行要求が依頼されたと判定した場合ステップS30;Yes、IOCFWダウンロード制御部462は、発行中のコマンド数Kとするが発行可能コマンド数Lとする以下であるか否かを判定するステップS31。具体的には、IOCFWダウンロード制御部462は、許容応答遅延時間テーブル452の発行可能コマンド数452bからダウンロード時の発行可能なコマンド数Lを読み出す。そして、IOCFWダウンロード制御部462は、発行中のコマンド数Kが、読み出したコマンド数L以下であるか否かを判定する。発行中のコマンド数Kが発行可能コマンド数L以下であると判定した場合ステップS31:Yes、IOCFWダウンロード制御部462は、IOCFWのダウンロードの実行を開始するステップS32。その後、IOCFWダウンロード制御部462は、ステップS41に移行する。一方、発行中のコマンド数Kが発行可能コマンド数Lより大きいと判定した場合ステップS31:No、IOCFWダウンロード制御部462は、IOCFWのダウンロードの実行の開始を待つ。既に発行中のコマンドの数が発行可能コマンド数より超えているので、この状況下でIOCFWのダウンロードが実行されると、入出力処理が滞ってしまうからである。そこで、IOCFWダウンロード制御部462は、入出力コマンドの発行要求があるか否かを判定するステップS33。入出力コマンドの発行要求があると判定した場合ステップS33;Yes、IOCFWダウンロード制御部462は、ペアのコントローラモジュールCM4のI/OコントローラIOC43に入出力処理を依頼するステップS34。そして、IOCFWダウンロード制御部462は、ステップS35に移行する。一方、入出力コマンドの発行要求がないと判定した場合ステップS33;No、IOCFWダウンロード制御部462は、ステップS35に移行する。そして、ステップS35では、IOCFWダウンロード制御部462は、入出力コマンドの応答があるか否かを判定するステップS35。入出力コマンドの応答がないと判定した場合ステップS35;No、IOCFWダウンロード制御部462は、ステップS30に移行する。一方、入出力コマンドの応答があると判定した場合ステップS35;Yes、IOCFWダウンロード制御部462は、発行コマンド数Kから、応答があった入出力コマンドの数を減算し、減算した値を発行コマンド数Kに設定するステップS36。そして、IOCFWダウンロード制御部462は、ステップS30に移行する。IOCFWのダウンロードの実行が開始されると、IOCFWダウンロード制御部462は、応答遅延時間テーブル451から、発行中コマンド数Kに対応するダウンロード時の遅延時間T_dKを取得するステップS41。さらに、IOCFWダウンロード制御部462は、発行中応答待ち時間テーブル453の応答待ち時間453dに、取得したダウンロード時の遅延時間T_dKを加算するステップS42。すなわち、IOCFWダウンロード制御部462は、発行中応答待ち時間テーブル453の、発行コマンド数分の入出力コマンドの応答待ち時間を、初期値にダウンロード時の遅延時間T_dKを加算した値に更新する。なお、例えば、初期値は、IOCFWのダウンロード実行時でない場合の入出力コマンドの応答待ち時間を示し、応答監視部463が設定する。続いて、IOCFWダウンロード制御部462は、IOCFWのダウンロードが完了したか否かを判定するステップS43。IOCFWのダウンロードが完了していないと判定した場合ステップS43;No、IOCFWダウンロード制御部462は、入出力コマンドの発行要求があるか否かを判定するステップS44。入出力コマンドの発行要求がないと判定した場合ステップS44;No、IOCFWダウンロード制御部462は、入出力コマンドの応答の有無を判定すべく、ステップS51に移行する。入出力コマンドの発行要求があると判定した場合ステップS44;Yes、IOCFWダウンロード制御部462は、発行中のコマンド数Kが発行可能コマンド数Lより小さいか否かを判定するステップS45。ここで、発行中のコマンド数Kが発行可能コマンド数Lより小さくないK≧L場合ステップS45;No、IOCFWダウンロード制御部462は、ペアのCM4のI/OコントローラIOC43に入出力処理を依頼するステップS46。一方、発行中のコマンド数Kが発行可能コマンド数Lより小さい場合ステップS45;Yes、IOCFWダウンロード制御部462は、発行要求があった入出力コマンドをI/OコントローラIOC43に発行するステップS47。そして、IOCFWダウンロード制御部462は、発行中のコマンド数Kに、発行した入出力コマンドの数を加算し、加算した値を発行コマンド数Kに設定するステップS48。そして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451から、発行中コマンド数Kに対応するダウンロード時の遅延時間T_d ́Kを取得するステップS49。さらに、IOCFWダウンロード制御部462は、発行中応答待ち時間テーブル453の応答待ち時間453dのT_dKを、取得したT_d ́Kに更新するステップS50。すなわち、IOCFWダウンロード制御部462は、発行中応答待ち時間テーブル453の、初期値を示す応答待ち時間453dに、取得したダウンロード時の遅延時間T_d ́Kを加算することで、応答待ち時間453dを更新する。そして、IOCFWダウンロード制御部462は、入出力コマンドの応答の有無を判定すべく、ステップS51に移行する。そして、ステップS51では、IOCFWダウンロード制御部462は、入出力コマンドの応答があるか否かを判定するステップS51。入出力コマンドの応答がないと判定した場合ステップS51;No、IOCFWダウンロード制御部462は、ステップS43に移行する。一方、入出力コマンドの応答があると判定した場合ステップS51;Yes、IOCFWダウンロード制御部462は、発行コマンド数Kから、応答があった入出力コマンドの数を減算し、減算した値を発行コマンド数Kに設定するステップS52。そして、IOCFWダウンロード制御部462は、ステップS43に移行する。ステップS43では、IOCFWのダウンロードが完了したと判定した場合ステップS43;Yes、IOCFWダウンロード制御部462は、次の処理を行う。すなわち、IOCFWダウンロード制御部462は、応答遅延時間テーブル451から、発行中コマンド数Kに対応するダウンロード時の遅延時間T_dKを取得するステップS53。そして、IOCFWダウンロード制御部462は、発行中応答待ち時間テーブル453の入出力コマンドの応答待ち時間453dから、取得したダウンロード時の遅延時間T_dKを減算するステップS54。すなわち、発行中応答待ち時間テーブル453の入出力コマンドの応答待ち時間453dは、初期値に更新される。そして、IOCFWダウンロード制御部462は、IOCFWダウンロード制御処理を終了する。ところで、応答遅延時間テーブル451は、テーブル作成部461によってストレージシステム2の運用前に作成されるものとして説明した。すなわち、応答遅延時間テーブル451のダウンロード時の遅延時間451dは、ストレージシステム2の運用前に設定される。しかしながら、応答遅延時間テーブル451のダウンロード時の遅延時間451dは、これに限定されるものではなく、ストレージシステム2の運用前に設定された後、運用中に実測値に即して設定し直されても良い。そこで、応答遅延時間テーブル451のダウンロード時の遅延時間451dが、ストレージシステム2の運用前に設定された後、運用中に実測値に即して設定し直される場合について説明する。[コマンド遅延時間更新処理の手順]図9は、実施例に係るコマンド遅延時間更新処理のフローチャートを示す図である。なお、IOCFWのダウンロード中にM-1個の入出力コマンドが並行して発行され、さらにM個目の入出力コマンドが発行されたものとする。IOCFWダウンロード制御部462は、M個目に発行された入出力コマンドの発行時刻T_reqを保持するステップS61。そして、IOCFWダウンロード制御部462は、入出力コマンドの応答時刻T_repを保持するとともに、発行中のコマンド数Mを保持するステップS62。なお、入出力コマンドの発行時刻等を保持する場所は、例えば、記憶部45の一時領域である。続いて、IOCFWダウンロード制御部462は、入出力コマンドの応答時間T_rf ́Mを算出するステップS63。具体的には、IOCFWダウンロード制御部462は、入出力コマンドの応答時刻T_repから入出力コマンドの発行時刻T_reqを差し引いて得た値を入出力コマンドの応答時間T_rf ́Mとする。そして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451のコマンド数Mに対応するダウンロード時の応答時間T_rfMをT_rf ́Mに置換するステップS64。そして、IOCFWダウンロード制御部462は、入出力コマンドの遅延時間T_d ́Mを算出するステップS65。具体的には、IOCFWダウンロード制御部462は、置換したダウンロード時の応答時間T_rf ́Mから入出力コマンドの応答時間T_rMを差し引いて得た値を入出力コマンドの遅延時間T_d ́Mとする。そして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451のコマンド数Mに対応するダウンロード時の遅延時間T_dMをT_d ́Mに置換するステップS66。このようにして、IOCFWダウンロード制御部462は、IOCFWのダウンロードの実行中に並行して発行された入出力コマンドのコマンド数に対応する遅延時間を、実測値に即して設定し直すべく更新する。すなわち、IOCFWダウンロード制御部462は、IOCFWのダウンロードの実行中に発行された入出力コマンドが応答されたときのコマンド数分更新する。しかしながら、IOCFWダウンロード制御部462は、応答遅延時間テーブル451に記憶された全てのコマンド数分実測結果を反映するようにしても良い。例えば、IOCFWダウンロード制御部462は、IOCFWのダウンロードの実行中に並行して発行された入出力コマンドのコマンド数に対応する遅延時間の更新前後の値の割合を算出する。そして、IOCFWダウンロード制御部462は、算出した割合を応答遅延時間テーブル451に記憶された他のコマンド数に対応する遅延時間に乗じる。さらに、IOCFWダウンロード制御部462は、乗じて得た値を当該コマンド数に対応する新たな遅延時間として応答遅延時間テーブル451に更新する。このようにして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451に記憶された全てのコマンド数分実測結果を反映できる。[コマンド応答監視処理の手順]次に、コマンド応答監処理の手順の一例について、図10を参照して説明する。図10は、実施例に係るコマンドの応答を監視する処理のフローチャートを示す図である。なお、以下に示す処理の手順は、1つの入出力コマンドの応答に関する監視に絞って説明する。まず、応答監視部463は、入出力コマンドが発行されたか否かを判定するステップS71。入出力コマンドが発行されていないと判定した場合ステップS71;No、応答監視部463は、入出力コマンドが発行されるまで、判定処理を繰り返す。入出力コマンドが発行されたと判定した場合ステップS71;Yes、応答監視部463は、発行中応答待ち時間テーブル453の応答待ち時間を初期値に設定するステップS72。なお、初期値は、IOCFWのダウンロード実行時でない場合の応答待ち時間を示す。そして、応答監視部463は、入出力コマンドの応答があるか否かを判定するステップS73。入出力コマンドの応答があると判定した場合ステップS73;Yes、応答監視部463は、入出力コマンドの応答処理を実行しステップS74、監視処理を終了する。一方、入出力コマンドの応答がないと判定した場合ステップS73;No、応答監視部463は、入出力コマンドがタイムアウトであるか否かを判定するステップS75。例えば、応答監視部463は、発行中応答待ち時間テーブル453に記憶されたコマンドに対応する応答待ち時間を用いて、入出力コマンドの応答が、入出力コマンドに対応する応答待ち時間を経過しているか否かを判定する。入出力コマンドがタイムアウトであると判定した場合ステップS75;Yes、応答監視部463は、エラー処理を実行しステップS76、監視処理を終了する。一方、入出力コマンドがタイムアウトでないと判定した場合ステップS75;No、応答監視部463は、入出力コマンドの応答を待つべく、監視処理を所定時間だけ遅延ディレイさせステップS77、その後ステップS73に移行する。[実施例の効果]上記実施例によれば、IOCFWダウンロード制御部462は、運用開始時にIOCFWのダウンロード時における入出力コマンドの許容可能な応答遅延時間を設定する。そして、IOCFWダウンロード制御部462は、IOCFWのダウンロード要求があった場合、応答遅延時間テーブル451に記憶された情報に基づいて、設定した許容可能な応答遅延時間に対応する発行可能なコマンド数を検索する。そして、IOCFWダウンロード制御部462は、IOCFWのダウンロード中に、発行中の入出力コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった入出力コマンドの発行を制限する。かかる構成によれば、IOCFWダウンロード制御部462は、IOCFWのダウンロード時の同時点で発行されている入出力コマンドの数を、許容可能な応答遅延時間に対応する発行可能なコマンド数に抑えることができる。この結果、IOCFWダウンロード制御部462は、IOCFWのダウンロードが入出力処理と並行して実行されても、入出力処理が滞ることを防止できる。また、上記実施例によれば、IOCFWダウンロード制御部462は、発行中の入出力コマンドの数が、発行可能なコマンド数以上であれば、新たに発行要求があった入出力コマンドの発行を二重化されたコントローラモジュール4に依頼する。かかる構成によれば、IOCFWダウンロード制御部462は、入出力コマンドの処理を継続させながら、且つ、IOCFWのダウンロード時における入出力処理の影響を抑えることができる。また、上記実施例によれば、IOCFWダウンロード制御部462は、さらに、発行中の入出力コマンドの数が、発行可能なコマンド数を超えていれば、ダウンロード要求があったIOCFWの実行の開始を待つようにした。かかる構成によれば、IOCFWダウンロード制御部462は、IOCFWのダウンロードによって入出力処理が滞ることを防止できる。また、上記実施例によれば、IOCFWダウンロード制御部462は、発行中の入出力コマンドの数が、発行可能なコマンド数以上でなければ、新たに発行要求があった入出力コマンドを発行する。そして、IOCFWダウンロード制御部462は、応答遅延時間テーブル451に記憶された情報に基づいて得られる、発行中の入出力コマンド数に対応する応答遅延時間を、予め定められた入出力コマンドの応答待ち時間に加算する。かかる構成によれば、IOCFWダウンロード制御部462は、発行中の入出力コマンドの数に対応した応答遅延時間を用いることにより当該数に対応した応答待ち時間を補整することができるので、入出力処理が滞ることを防止できる。例えば、発行中の入出力コマンドの数に対応した応答待ち時間が一律であった場合と比較して、同時点の発行中の入出力コマンド数が多くなるにつれて、入出力コマンドの応答の遅延を異常であると誤認してしまうことを防止できる。また、上記実施例によれば、IOCFWダウンロード制御部462は、新たに発行要求があった入出力コマンドの発行時刻および当該入出力コマンドの応答時刻の差分を算出する。そして、IOCFWダウンロード制御部462は、算出した差分を発行中の入出力コマンドの数に対応する応答時間とし、当該応答時間を用いて発行中の入出力コマンドの数に対応する、応答遅延時間テーブル451に記憶された応答遅延時間を更新する。かかる構成によれば、IOCFWダウンロード制御部462は、新たに発行要求があった入出力コマンドの応答時間を用いて応答遅延時間を更新するので、実際の運用に即した応答遅延時間となる。この結果、IOCFWダウンロード制御部462は、入出力コマンドの応答待ち時間を、更新した応答遅延時間を用いて補整することにより、実際の運用に即した応答待ち時間となり、さらに入出力処理が滞ることを防止できる。また、上記実施例によれば、IOCFWダウンロード制御部462は、発行中の入出力コマンドの数に対応する応答遅延時間の更新前後の値の割合を算出する。そして、IOCFWダウンロード制御部462は、算出した割合を、応答遅延時間テーブル451に記憶された、発行中の入出力コマンドの数と異なるコマンド数に対応する応答遅延時間に乗じる。そして、IOCFWダウンロード制御部462は、乗じて得た値を当該コマンド数に対応する応答遅延時間として応答遅延時間テーブル451に更新する。かかる構成によれば、IOCFWダウンロード制御部462は、発行中の入出力コマンドの数に対応する応答遅延時間の更新前後の値の割合を用いて、発行中の入出力コマンドの数と異なるコマンド数に対応する応答遅延時間も更新できる。この結果、IOCFWダウンロード制御部462は、応答遅延時間を更新したコマンド数に対応する応答待ち時間を、当該応答遅延時間を用いて補整することができ、実際の運用に即した応答待ち時間によって、さらに入出力処理が滞ることを防止できる。[その他]なお、ストレージシステム2は、冗長化された2台のコントローラモジュール4が搭載された場合を説明した。しかしながら、ストレージシステム2は、冗長化された3台以上のコントローラモジュール4が搭載された場合でも適用可能である。また、コントローラモジュール4の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、コントローラモジュール4の分散統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散統合して構成することができる。例えば、IOCFWダウンロード制御部462と応答監視部463とを1つの部として統合しても良い。また、テーブル作成部461を、応答遅延時間テーブル451を作成する第1のテーブル作成部と許容応答遅延時間テーブル452を作成する第2のテーブル作成部とに分散しても良い。また、IOCFWダウンロード制御部462をIOCFWのダウンロードの実行開始前の前処理部とIOCFWのダウンロードの実行開始後の後処理部とに分散しても良い。また、記憶部45をコントローラモジュール4の外部装置としてネットワーク経由で接続するようにしても良い。また、コントローラモジュール4にて行われる各処理機能は、その全部または任意の一部が、CPUまたはMPU、MCUMicroControllerUnit等のマイクロコンピュータあるいは、ワイヤードロジックによるハードウェアとして実現されても良い。また、コントローラモジュール4にて行われる各処理機能は、その全部または任意の一部が、CPUまたはMPU、MCU等のマイクロコンピュータにて解析実行されるプログラムにて実現されても良い。以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。付記1データを記憶する記憶装置と、前記記憶装置へのデータの制御を実施する第1の装置および前記第1の装置と二重化された第2の装置とを有し、前記第1の装置は、前記記憶装置に記憶されるデータの入出力に関わるコマンドを処理する処理装置と、前記処理装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部と、前記ファームウェアのダウンロード要求があった場合、前記記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を制限する制御部とを有することを特徴とするストレージシステム。付記2前記制御部は、発行中の前記コマンドの数が、前記発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を前記第2の装置に依頼することを特徴とする付記1に記載のストレージシステム。付記3前記制御部は、さらに、発行中の前記コマンドの数が、前記発行可能なコマンド数を超えていれば、前記ダウンロード要求があったファームウェアのダウンロードの実行の開始を待つことを特徴とする付記1に記載のストレージシステム。付記4前記制御部は、さらに、発行中の前記コマンドの数が、前記発行可能なコマンド数以上でなければ、新たに発行要求があった前記コマンドを発行し、前記記憶部に記憶された情報に基づいて得られる、発行中のコマンド数に対応する応答遅延時間を、予め定められた前記コマンドの応答待ち時間に加算することを特徴とする付記1または付記2に記載のストレージシステム。付記5前記制御部は、新たに発行要求があった前記コマンドの発行時刻および前記コマンドの応答時刻の差分を算出し、算出した差分を発行中の前記コマンドの数に対応する応答時間とし、発行中の前記コマンドの数に対応する、前記記憶部に記憶された応答遅延時間を更新することを特徴とする付記4に記載のストレージシステム。付記6前記制御部は、発行中の前記コマンドの数に対応する応答遅延時間の更新前後の値の割合を算出し、算出した割合を発行中の前記コマンドの数と異なるコマンド数に対応する応答遅延時間に乗じ、乗じて得た値を前記コマンド数に対応する応答遅延時間として前記記憶部に更新することを特徴とする付記5に記載のストレージシステム。付記7データを記憶する記憶装置へのデータの制御を実施するコントローラモジュールであって、前記記憶装置に記憶されるデータの入出力に関わるコマンドを処理する装置と、前記装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部と、前記ファームウェアのダウンロード要求があった場合、前記記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、検索した発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を制限する制御部とを有することを特徴とするコントローラモジュール。付記8データを記憶する記憶装置へのデータの制御を実施する第1の装置および前記第1の装置と二重化された第2の装置とを有するストレージシステムの制御方法であって、前記第1の装置は、前記ファームウェアのダウンロード要求があった場合に、前記データの入出力に関わるコマンドを処理する処理装置を制御するファームウェアのダウンロード時に前記コマンドを纏めて発行したコマンド数と、前記ファームウェアのダウンロードによって応答が遅延した時間を示す応答遅延時間とを対応付けて記憶する記憶部に記憶された情報に基づいて、当該ダウンロード時における前記コマンドの許容可能な応答遅延時間に対応する発行可能なコマンド数を検索し、前記ファームウェアのダウンロード中に、発行中の前記コマンドの数が、前記検索する処理によって検索された発行可能なコマンド数以上であれば、新たに発行要求があった前記コマンドの発行を、前記第2の装置に依頼する処理を含むことを特徴とするストレージシステムの制御方法。