(57)【要約】【課題】アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置、並びにストレージ装置をそのように制御する制御装置及び制御方法を提案する。【解決手段】ストレージ装置に、データを記憶するための記憶領域を提供するフラッシュメモリと、フラッシュメモリよりもデータ書込み可能回数が多いディスク状記憶デバイスと、フラッシュメモリよりもアクセス速度が速いキャッシュメモリとを設け、上位装置から与えられるデータをキャッシュメモリに格納すると共に、当該データを所定のタイミングでキャッシュメモリから読み出し、キャッシュメモリから読み出されたデータをディスク状記憶デバイスに格納すると共に、所定条件が満たされたときには、当該データをディスク状記憶デバイスから読み出し、ディスク状記憶デバイスから読み出されたデータをフラッシュメモリに格納する。【選択図】図３
2008097225.tif 000002
【特許請求の範囲】
【請求項１】
上位装置に接続されるストレージ装置であって、
前記上位装置から送受信されるデータを格納する不揮発メモリと、
前記上位装置から送受信されるデータを格納するディスク装置と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと、
前記不揮発メモリに対する前記データの読み書きを制御する第１の制御部と、
前記ディスク装置に対する前記データの読み書きを制御する第２の制御部と、
前記キャッシュメモリに対する前記データの読み書きを制御する第３の制御部と
を備え、
前記第１、第２及び第３の制御部は、相互接続網を介して接続され、  
前記第３の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第２の制御部に送信し、
前記第２の制御部は、前記第３の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第１の制御部に送信し、
前記第１の制御部は、前記第２の制御部から送信される前記データを前記不揮発メモリに格納する
ことを特徴とするストレージ装置。
【請求項２】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、前記第３の制御部により当該データを前記キャッシュメモリから読み出させ、読み出された当該データを前記上位装置に送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、前記第２の制御部により当該データを前記ディスク装置から読み出させ、読み出された当該データを前記キャッシュメモリを介して前記上位装置に送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第１の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項１に記載のストレージ装置。
【請求項６】
前記第２及び又は第１の制御部は、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項７】
上位装置に接続されるストレージ装置を制御する制御装置であって、
前記上位装置から送受信されるデータを格納する不揮発メモリに対する前記データの読み書きを制御する第１の制御部と、
前記上位装置から送受信されるデータを格納するディスク装置に対する前記データの読み書きを制御する第２の制御部と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリに対する前記データの読み書きを制御する第３の制御部と
を備え、
前記第１、第２及び第３の制御部は、相互接続網を介して接続され、
前記第３の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第２の制御部に送信し、
前記第２の制御部は、前記第３の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第１の制御部に送信し、
前記第１の制御部は、前記第２の制御部から送信される前記データを前記不揮発メモリに格納する
ことを特徴とする制御装置。
【請求項８】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、前記第３の制御部により当該データを前記キャッシュメモリから読み出させ、読み出された当該データを前記上位装置に送信する
ことを特徴とする請求項７に記載の制御装置。
【請求項９】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、前記第２の制御部により当該データを前記ディスク装置から読み出させ、読み出された当該データを前記キャッシュメモリを介して前記上位装置に送信する
ことを特徴とする請求項７に記載の制御装置。
【請求項１０】
前記上位装置との間のデータの送受信を制御する第４の制御部を備え、
前記第４の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第１の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する
ことを特徴とする請求項７に記載の制御装置。
【請求項１１】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項７に記載の制御装置。
【請求項１２】
前記第２及び又は第１の制御部は、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項７に記載の制御装置。
【請求項１３】
上位装置に接続されるストレージ装置を制御する制御方法であって、
前記ストレージ装置は、
前記上位装置から送受信されるデータを格納する不揮発メモリと、
前記上位装置から送受信されるデータを格納するディスク装置と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと
を有し、
前記上位装置から送信される前記データを前記キャッシュメモリに格納し、当該データを所定の契機で前記キャッシュメモリから読み出す第１のステップと、
前記キャッシュメモリから読み出された前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出す第２のステップと、
前記ディスク装置から読み出された前記データを前記不揮発メモリに格納する第３のステップと
を備えることを特徴とする制御方法。
【請求項１４】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、当該データを前記キャッシュメモリから読み出し、読み出した当該データを前記上位装置に送信する第４のステップを備える
ことを特徴とする請求項１３に記載の制御方法。
【請求項１５】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、当該データを前記ディスク装置から読み出し、読み出した当該データを前記キャッシュメモリを介して前記上位装置に送信する第４のステップを備える
ことを特徴とする請求項１３に記載の制御方法。
【請求項１６】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第１の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する第４のステップを備える
ことを特徴とする請求項１３に記載の制御方法。
【請求項１７】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項１３に記載の制御方法。
【請求項１８】
前記第２及び又は第１のステップでは、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項１３に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、制御装置及び制御方法に関し、特に記憶デバイスとしてフラッシュメモリが採用されたストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
従来、ストレージ装置における記憶デバイスとして、半導体メモリやハードディスクドライブが用いられている。半導体メモリは、アクセス速度が速く、小型、低消費電力及び高信頼性という利点を有する反面、単位ビット当たりのコストが高価という欠点を有する。一方、ハードディスクドライブは、半導体メモリに比べてアクセス速度が遅く、大型、高消費電力及び低信頼性という欠点がある反面、単位ビット当たりのコストが半導体メモリに比べて格段的に安価という利点を有する。
【０００３】
このため、近年では、ストレージシステムにおける記憶デバイスとしてはハードディスクドライブが主流となっており、これに伴ってハードディスクドライブに関する技術革新が相次いで行なわれ、ハードディスクドライブにおける単位面積当たりの記憶容量も飛躍的に向上している。
【０００４】
またハードディスクドライブの弱点である信頼性についても、ＲＡＩＤ（Redundant Array of Inexpensive Disks）技術の適用により向上しており、近年では、数ＴＢの容量を有する大型記憶システムも市場に登場している。
【０００５】
ところで、近年では、データの書き換えが自由に行なえ、かつ電源を切ってもデータが消滅しない半導体メモリであるフラッシュメモリが記憶デバイスとして広く利用されるようになってきている。そしてこのような普及に伴って、フラッシュメモリの単位ビット当たりのコストも低下してきている。
【０００６】
かかる状況のもと、今後、記憶デバイスとしてフラッシュメモリを搭載したストレージ装置が登場することが予想される。そして、このような構成を採用することによって、アクセス速度が速く、かつ消費電力が少ないストレージ装置を構築できるものと考えられる。
【０００７】
なお下記特許文献１には、フラッシュメモリとハードディスクドライブとを混載したストレージが提案されている。
【特許文献１】特開２００４−２１８１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、フラッシュメモリは、１０万回程度の書込み回数しか保証されていない。このためフラッシュメモリをストレージシステムの記憶デバイスとして採用する場合、このようなフラッシュメモリの特性を考慮した対策を講じておかなければ、フラッシュメモリの故障が頻発することが予想される。この結果、かかる対策を講じなければ、フラッシュメモリの交換作業に多くの費用及び労力が必要となって、ストレージ装置の運用コストが激増することになるばかりでなく、データ保護の観点からもストレージ装置の信頼性を失墜させるおそれもある。
【０００９】
本発明は以上の点を考慮してなされたもので、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置、並びにストレージ装置をそのように制御する制御装置及び制御方法を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明においては、上位装置に接続されるストレージ装置であって、前記上位装置から送受信されるデータを格納する不揮発メモリと、前記上位装置から送受信されるデータを格納するディスク装置と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと、前記不揮発メモリに対する前記データの読み書きを制御する第１の制御部と、前記ディスク装置に対する前記データの読み書きを制御する第２の制御部と、前記キャッシュメモリに対する前記データの読み書きを制御する第３の制御部とを備え、前記第１、第２及び第３の制御部は、相互接続網を介して接続され、  前記第３の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第２の制御部に送信し、前記第２の制御部は、前記第３の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第１の制御部に送信し、前記第１の制御部は、前記第２の制御部から送信される前記データを前記不揮発メモリに格納することを特徴とする。
【００１１】
また本発明においては、上位装置に接続されるストレージ装置を制御する制御装置であって、前記上位装置から送受信されるデータを格納する不揮発メモリに対する前記データの読み書きを制御する第１の制御部と、前記上位装置から送受信されるデータを格納するディスク装置に対する前記データの読み書きを制御する第２の制御部と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリに対する前記データの読み書きを制御する第３の制御部とを備え、前記第１、第２及び第３の制御部は、相互接続網を介して接続され、前記第３の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第２の制御部に送信し、前記第２の制御部は、前記第３の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第１の制御部に送信し、前記第１の制御部は、前記第２の制御部から送信される前記データを前記不揮発メモリに格納することを特徴とする。
【００１２】
さらに本発明においては、上位装置に接続されるストレージ装置を制御する制御方法であって、前記ストレージ装置は、前記上位装置から送受信されるデータを格納する不揮発メモリと、前記上位装置から送受信されるデータを格納するディスク装置と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリとを有し、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、当該データを所定の契機で前記キャッシュメモリから読み出す第１のステップと、前記キャッシュメモリから読み出された前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出す第２のステップと、前記ディスク装置から読み出された前記データを前記不揮発メモリに格納する第３のステップとを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、フラッシュメモリを長寿命化させて、フラッシュメモリの故障に起因する不具合の発生を未然に防止することができるため、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）本実施の形態によるストレージシステムの構成
（１−１）ストレージシステムの外観構成
図１において、１は全体として本実施の形態によるストレージシステムを示す。このストレージシステム１は、データの入出力制御を行なうデータ入出力制御機能が搭載された記憶制御装置２と、複数のフラッシュメモリパッケージ１３が収納された記憶装置３とを備えて構成される。
【００１６】
記憶制御装置２は、直方体形状のラックフレーム１０内に、それぞれ複数の冷却ファンユニット１１、ハードディスクドライブユニット１２、フラッシュメモリパッケージ１３及び論理基板１４と、電源バッテリユニット１５とが複数収容されて構成される。
【００１７】
冷却ファンユニット１１は、１又は複数のファンを内蔵するユニットであり、フラッシュメモリパッケージ１３や、ハードディスクドライブユニット１２及び論理基板１４等において発生した熱をラックフレーム１０の外部に排出するために用いられる。
【００１８】
ハードディスクドライブユニット１２は、所定大きさの筐体に例えば3.5インチのハードディスクドライブが収納されて構成される。かかる筐体の後端部側にはコネクタ（図示せず）が設けられており、このコネクタをラックフレーム１０内に配置された図示しないバックボード上のコネクタに嵌め合わせることにより、当該ハードディスクドライブユニット１２をバックボードに物理的及び電気的に接続した状態に装填することができるようになされている。
【００１９】
フラッシュメモリパッケージ１３は、例えば図２に示すように、それぞれ複数のフラッシュメモリチップ（以下、フラッシュメモリとも呼ぶ）２０が実装された複数のフラッシュメモリモジュール２１が、所定大きさの配線基板２２上に交換自在に装着されて構成される。この配線基板２２の一端側にはフラッシュメモリ制御ＬＳＩ（Large Scale Integration circuit）２３が実装されており、このフラッシュメモリ制御ＬＳＩ２３内に形成された後述のフラッシュメモリ制御部３３によって、そのフラッシュメモリパッケージ１３内の各フラッシュメモリチップ２０に対するデータの入出力を制御し得るようになされている。
【００２０】
またフラッシュメモリパッケージ１３の後端部側には図示しないコネクタが設けられており、このコネクタをラックフレーム１０内に配置された図示しないバックボード上の対応するコネクタに嵌め合わせることによって、当該フラッシュメモリパッケージ１３をバックボードに物理的及び電気的に接続した状態に装填することができるようになされている。
【００２１】
論理基板１４は、図３について後述するチャネル制御部３１、ディスク制御部３２、キャッシュメモリ３４、キャッシュメモリ制御部３５、接続部３６、プロセッサ部３７等が形成されて構成される。これら論理基板１４は、ラックフレーム１０内に配置された図示しないバックボードに挿抜自在に接続されており、このバックボードを介してラックフレーム１０内に装填された他の論理基板１４等と通信を行い得るようになされている。
【００２２】
電源バッテリユニット１５は、電源ユニット部１５Ａ及びバッテリユニット部１５Ｂから構成される。このうち電源ユニット部１５Ａは、外部から供給される商用交流電力を直流電力に変換し、これを記憶制御装置２内の各部位にそれぞれ供給する。またバッテリユニット部１５Ｂは、停電時や電源ユニット部１５Ａの異常時に、記憶制御装置２内の各部位に電力を供給するための予備電源として用いられる。
【００２３】
ラックフレーム１０は、その内部が仕切り板によって複数段に区分けできるように構成されている。本実施の形態においては、ラックフレーム１０内が全部で９段に区分けされており、その最上段及び上から６段目に冷却ファンユニット１１、上から２段目及び３段目にハードディスクユニット１２、上から４段目及び５段目にフラッシュメモリパッケージ１３、上から７段目及び８段目に論理基板１４、最下段に電源バッテリユニット１５がそれぞれ収納されている。
【００２４】
一方、記憶装置３は、ラックフレーム１６内に、冷却ファンユニット１１、複数のフラッシュメモリパッケージ１３及び電源バッテリユニット１５が収容されて構成される。この記憶装置３は、ファイバーチャネル（Fibre channel）などからなる図示しない通信ケーブルを介して記憶制御装置２と接続されており、これにより記憶制御装置２内の論理基板１４がかかる通信ケーブルを介して記憶装置３に搭載された各フラッシュメモリパッケージ１３と通信を行ない得るようになされている。
【００２５】
ラックフレーム１６は、記憶制御装置２のラックフレーム１１とほぼ同様の構成を有する。本実施の形態においては、ラックフレーム１６内が全部で８段に区分けされており、その最上段に冷却ファンユニット１１、最下段に電源バッテリユニット１５がそれぞれ収納され、これら最上段及び最下段以外の各段部にそれぞれフラッシュメモリパッケージ１３が収納されている。
【００２６】
（１−２）ストレージシステムの内部構成
図３は、本実施の形態によるストレージシステム１の内部構成を示す。この図３に示すように、ストレージシステム１は、チャネル制御部３１、ハードディスクドライブ４１、ディスク制御部３２、フラッシュメモリ２０、フラッシュメモリ制御部３３、キャッシュメモリ３４、キャッシュメモリ制御部３５、接続部３６及びプロセッサ部３７を備えて構成される。
【００２７】
チャネル制御部３１は、ホスト３０との間のインタフェースとして機能し、当該ホスト３０との間で各種コマンドやデータを送受する。
【００２８】
ハードディスクドライブ４１は、上述のようにハードディスクドライブユニット１２内に収納された状態でストレージシステム１に搭載され、マイクロプロセッサ３９によりＲＡＩＤ方式で運用される。ハードディスクドライブ４１としては、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なハードディスクドライブや、ＳＡＴＡ（Serial AT Attachment）ディスク等の安価なハードディスクが適用される。
【００２９】
ディスク制御部３２は、例えばファイバーチャネルケーブルを介して記憶制御装置２及び記憶装置３にそれぞれ搭載された各ハードディスクドライブと接続されている。ディスク制御部３２は、これらハードディスクドライブ４１に対するインタフェースとして機能し、ハードディスクドライブ４１に対するデータの入出力を制御する。
【００３０】
フラッシュメモリ２０は、書き換え可能な不揮発性の半導体メモリであり、上述のようにフラッシュメモリパッケージ１３としてストレージシステム１に搭載される。１又は複数のフラッシュメモリ２０により１つのパリティグループが形成され、このパリティグループが提供する物理的な記憶領域上に１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）が設定される。ホスト３０からのデータは、この論理ボリュームに、フラッシュメモリ２０上のデータ管理単位である所定大きさのブロックを単位として読み書きされる。
【００３１】
各論理ボリュームには、それぞれ固有の識別番号（ＬＵＮ：Logical Unit Number）が割り当てられる。そしてデータの入出力は、このＬＵＮと、各ブロックにそれぞれ割り当てられるそのブロックに固有のブロック番号とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００３２】
フラッシュメモリ制御部３３は、上述のように各フラッシュメモリパッケージ１３にそれぞれ実装されたフラッシュメモリ制御ＬＳＩ２３内に形成される。フラッシュメモリ制御部３３は、フラッシュメモリ２０に対するインタフェースとして機能し、同じフラッシュメモリパッケージ１３内の各フラッシュメモリ２０に対するデータの入出力を制御する。
【００３３】
キャッシュメモリ３４は、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）等の揮発メモリから構成される。またキャッシュメモリ制御部３５は、キャッシュメモリ３４に対するデータの入出力を制御する。
【００３４】
接続部３６は、例えば相互接続可能なスイッチ又はバス等で構成される。チャネル制御部３１、ディスク制御部３２、フラッシュメモリ制御部３３、キャッシュメモリ制御部３５及びプロセッサ部３７間のデータやコマンドの授受は、この接続部３６を介して行われる。
【００３５】
プロセッサ部３７は、メモリ３８及び２つのマイクロプロセッサ３９がノースブリッジ４０に接続されて構成される。
【００３６】
メモリ３８は、チャネル制御部３１、ディスク制御部３２、フラッシュメモリ制御部３３、キャッシュメモリ制御部３５及び各マイクロプロセッサ３９により共有される半導体メモリである。このメモリ３８は、主にシステム構成情報及び各種制御プログラムなどの制御情報を記憶するために利用される。後述のデータ管理テーブル５０は、このメモリ３８に保持される。なお、プロセッサ部３７内にこのメモリ３８を複数も受けるようにしてもよい。
【００３７】
マイクロプロセッサ３９は、ストレージシステム１全体の動作制御を司るプロセッサである。各マイクロプロセッサ３９には、それぞれそのマイクロプロセッサ３９が担当すべきフラッシュメモリ２０上の記憶領域（全フラッシュメモリ２０がそれぞれ提供する記憶領域の一部）が割り当てられる。そしてマイクロプロセッサ３９は、メモリ３８に格納された各種制御プログラムに基づいて、キャッシュメモリ２０上の自己に割り当てられた記憶領域に関連する各種のジョブを実行する。
【００３８】
ノースブリッジ４０は、メモリ３８及びマイクロプロセッサ３９間を接続すると共に、これらメモリ３８及びマイクロプロセッサ３９を接続部３６に接続する。
【００３９】
なお、本実施の形態によるストレージシステム１では、冗長性をもたせるため、チャネル制御部３１、ディスク制御部３２、フラッシュメモリ制御部３３、キャッシュメモリ制御部３４及びプロセッサ部３７がそれぞれ２つずつ設けられている。
【００４０】
（１−３）ストレージシステムにおけるデータ読書き処理
（１−３−１）データ読書き処理の概要及びデータ管理テーブルの構成
次に、かかるストレージシステム１におけるデータ書込み処理及びデータ読出し処理の概要について説明する。
【００４１】
本実施の形態によるストレージシステム１は、データの読出し特性を向上させるため、従来のハードディスクドライブに代えてフラッシュメモリ２０を記憶デバイスとして採用すると共に、フラッシュメモリ２０に対するデータ書込み回数を抑制するため、ハードディスクドライブ４１をデータ書込み時におけるバッファとして採用している点を１つの特徴としている。
【００４２】
そして、このストレージシステム１においては、ホスト３０からデータ書込み要求及び書込み対象のデータ（以下、適宜、これを書込み対象データと呼ぶ）が与えられた場合、図４（Ａ）に示すように、この書込み対象データがまずキャッシュメモリ３４に格納される。
【００４３】
このキャッシュメモリ３４に格納された書込み対象データは、この後、ハードディスクドライブ４１に移動され、この後所定のタイミングでフラッシュメモリ２０に移行される。
【００４４】
一方、ストレージシステム１においては、ホスト３０からデータ読出し要求が与えられた場合、まず、キャッシュメモリ３４、ハードディスクドライブ４１及びフラッシュメモリ２０のうちのどこに読出し対象のデータ（以下、適宜、これを読出し対象データと呼ぶ）が格納されているかが判定される。
【００４５】
そして、かかる読出し対象データがキャッシュメモリ３４に格納されていた場合（キャッシュヒット）には、図４（Ｂ）に示すように、当該読出し対象データがキャッシュメモリ３４から読み出されてホスト３０に送信される。この場合には、高速のデータ読み出しが可能である。
【００４６】
また、かかる読出し対象データがキャッシュメモリ３４には格納されておらず（キャッシュミス）、ハードディスクドライブ４１に格納されていた場合（ＨＤＤヒット）には、図４（Ｃ）に示すように、当該読出し対象データがハードディスクドライブ４１から読み出されて一端キャッシュメモリ３４に格納され、この後このキャッシュメモリ３４から読み出されてホスト３０に送信される。
【００４７】
他方、読出し対象データがキャッシュメモリ３４及びハードディスクドライブ４１のいずれにも格納されておらず（キャッシュミス及びＨＤＤミス）、フラッシュメモリ２０に格納されている場合における読出し対象データの読出し方法としては、以下の第１及び第２のデータ読出し方法が考えられる。
【００４８】
このうち第１のデータ読出し方法は、図４（Ｄ−１）に示すように、読出し対象データをフラッシュメモリ２０から読み出して一端キャッシュメモリ３４に格納し、この後この読出し対象データをキャッシュメモリ３４から読み出してホスト３０に送信する方法である。この第１のデータ読出し方法によれば、レーテンシが増加するものの、同一のデータを繰り返し読み出す場合には、２度目以降のデータの読み出しがキャッシュメモリ３４から行われるため、データの読出し速度を高速化させることができるという利点がある。
【００４９】
また第２のデータ読出し方法は、図４（Ｄ−２）に示すように、読出し対象データをフラッシュメモリ３４から読み出して、直接ホスト３０に送信する方法である。この第２のデータ読出し方法によれば、レーテンシが少なく、またキャッシュメモリ３４のメモリ資源を消費しないという利点がある。また、この第２のデータ読み出し方法によると、フラッシュメモリ２０のデータ読み出し速度がキャッシュメモリ３４と同等以上の場合、読み出し対象データはキャッシュメモリ３４を介さずに読み出されるため、高速化することができるという利点がある。このような場合、例えば、読み出し対象データがキャッシュメモリ３４またはハードディスクドライブ４１にあっても、フラッシュメモリ２０にデータを移行して、第２のデータ読み出し方法を用いて読み出すように設定する形態（フラッシュメモリ優先）としてもよい。
【００５０】
ここで、このようなデータの読書き制御を行なうための手段として、ストレージシステム１では、図５に示すようなデータ管理テーブル５０がメモリ３８（図１）に格納されている。
【００５１】
データ管理テーブル５０は、フラッシュメモリ２０内のブロックにそれぞれ格納された又は格納されるべきデータ（そのデータが更新された場合には更新後のデータ）がキャッシュメモリ（ＣＭ）３４、ハードディスクドライブ（ＨＤＤ）１２及びフラッシュメモリ（ＦＭ）２０のいずれに存在するかを管理するために用いられるテーブルである。
【００５２】
このデータ管理テーブル５０は、「ＦＭブロック番号」フィールド５０Ａ、「ＣＭヒットミス情報」フィールド５０Ｂ、「ＨＤＤヒットミス情報」フィールド５０Ｃ、「ＣＭアドレス」フィールド５０Ｄ、「ＨＤＤアドレス」フィールド５０Ｅ、「ＨＤＤデータ移行中フラグ」フィールド５０Ｆ及び「ＦＭでデータ移行フラグ」フィールド５０Ｆから構成される。
【００５３】
このうち「ＦＭブロック番号」フィールド５０Ａには、すべてのフラッシュメモリ２０内に存在するすべてのブロックのブロック番号がそれぞれ格納される。
【００５４】
また「ＣＭヒットミス情報」フィールド５０Ｂには、フラッシュメモリ２０内の対応するブロックに格納されたデータ又は当該ブロックに格納されるべきデータが、キャッシュメモリ３４上に存在するか否かを表す情報（以下、これをＣＭヒットミス情報と呼ぶ）が格納される。具体的には、かかるデータがキャッシュメモリ３４上に存在するときにはヒット（Hit）、存在しないときにはミス（Miss）を表す情報（例えばフラグ）が格納されることとなる。
【００５５】
さらに「ＨＤＤヒットミス情報」フィールド５０Ｃには、フラッシュメモリ２０内の対応するブロックに格納されたデータ又は当該ブロックに格納されるべきデータが、いずれかのハードディスクドライブ４１上に存在するか否かを表す情報（以下、これをＨＤＤヒットミス情報と呼ぶ）が格納される。具体的には、かかるデータがいずれかのハードディスクドライブ４１上に存在するときにはヒット（Hit）、存在しないときにはミス（Miss）を表す情報（例えばフラグ）が格納されることとなる。
【００５６】
さらに「ＣＭアドレス」フィールド５０Ｄには、フラッシュメモリ２０内の対応するブロックに格納されたデータ又は格納されるべきデータがキャッシュメモリ３４上に存在する場合に、そのデータが存在するキャッシュメモリ３４上のアドレスが格納される。
【００５７】
同様に、「ＨＤＤアドレス」フィールド５０Ｅには、フラッシュメモリ２０内の対応するフラッシュメモリ２０に格納されたデータがハードディスクドライブ４１上に存在する場合に、そのデータが存在するハードディスクドライブ４１上のアドレスが格納される。
【００５８】
一方、「ＨＤＤデータ移行中フラグ」フィールド５０Ｆには、キャッシュメモリ３４に格納されたデータをハードディスクドライブ４１に移行させている間フラグ（以下、これをＨＤＤデータ移行中フラグと呼ぶ）が格納される。
【００５９】
また「ＦＭデータ移行中フラグ」フィールド５０Ｇには、ハードディスクドライブ４１に格納されたデータをフラッシュメモリ２０に移行させている間フラグ（以下、これをＦＭデータ移行中フラグと呼ぶ）が格納される。
【００６０】
そしてストレージシステム１では、このデータ管理テーブル５０を用いて後述のようなデータ読書き制御を実行する。
【００６１】
（１−３−２）データ書込み処理の詳細
次に、本実施の形態によるストレージシステム１におけるデータ書込み処理の詳細について説明する。
【００６２】
本実施の形態のストレージシステム１には、書込み対象データをキャッシュメモリ３４及びハードディスクドライブ４１を順次介してフラッシュメモリ２０に書き込む動作モードとして、第１〜第４のデータ書込みモードが存在する。そして、ストレージシステム１では、データ書込みモードとして、上述の第１〜第４のデータ書込みモードの中から所望のモードをユーザが自由に選択して設定できるようになされている。
【００６３】
このうち第１のデータ書込みモードでは、図６に示すように、ホスト３０から送信される書込み対象データをキャッシュメモリ３４に二重書き（２箇所の記憶領域にそれぞれ別々に書き込むこと）することにより冗長化する。また第１のデータ書込みモードでは、この書込み対象データをハードディスクドライブ４１やフラッシュメモリ２０に移行させる都度、キャッシュメモリ３４においてパリティを生成し、これら書込み対象データ及びパリティをハードディスクドライブ４１やフラッシュメモリ２０に格納する。
【００６４】
この第１のデータ書込みモードによれば、書込み対象データの二重書きがキャッシュメモリ３４においてのみ行なわれるため、ハードディスクドライブ４１及びフラッシュメモリ２０の使用効率が良く、またハードディスクドライブ４１へのデータ書込み時のみならず、フラッシュメモリ２０へのデータ書込み時にもパリティにより冗長化するため、ハードディスクドライブ４１へのデータ書込み時におけるパリティ演算を単純化できる利点がある。
【００６５】
また第２のデータ書込みモードでは、図７に示すように、ホスト３０から送信されてきた書込み対象データをキャッシュメモリ３４に二重書きすることにより冗長化する一方、この書込み対象データをハードディスクドライブ４１に移行する際にはパリティを生成し、このパリティをデータと共にハードディスクドライブ４１に格納する。また第２のデータ書込みモードでは、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移行する際には、当該書込み対象データをハードディスクドライブ４１に移動するときに生成したパリティをそのまま用いて冗長化する。
【００６６】
この第２のデータ書込みモードによれば、第１のデータ書込みモード時と同様に、ハードディスクドライブ４１及びフラッシュメモリ２０の使用効率が良く、さらにパリティに演算を１度だけしか行なわないため、第１のデータ書込みモード時に比べて、パリティ演算処理に関するストレージシステム１全体としての負荷を低減させることができる。
【００６７】
さらに第３のデータ書込みモードでは、図８に示すように、ホスト３０から送信されてきた書込み対象データをキャッシュメモリ３４に格納する際、及び当該書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移行する際には、書込み対象データをキャッシュメモリ３４又はハードディスク１２に二重書きすることにより冗長化する一方、この書込み対象データをさらにハードディスクドライブ４１からフラッシュメモリ２０に移動する際にはキャッシュメモリ３４にいてパリティを生成し、このパリティを書込み対象データと共にフラッシュメモリ２０に格納する。
【００６８】
この第３のデータ書込みモードによれば、第２のデータ書込みモード時と同様に、書込み対象データをフラッシュメモリ２０に二重書きしないため、フラッシュメモリ２０の使用効率を向上させることができ、またパリティ演算を１度だけしか行なわないため、第１及び第２のデータ書込みモード時に比べて、パリティ演算処理に関するストレージシステム１全体としての負荷を低減させることができる。
【００６９】
さらに第４のデータ書込みモードでは、図９に示すように、ホスト３０から送信されてきた書込み対象データを、キャッシュメモリ３４に格納する際や、キャッシュメモリ３４からハードディスクドライブ４１に移行する際、及びハードディスクドライブ４１からフラッシュメモリ２０に移行させる際に、当該書込み対象データを常に二重書きする。
【００７０】
この第４のデータ書込みモードによれば、パリティ演算の必要がないため、冗長化に関するストレージシステム１全体としての負荷を第１〜第４のデータ書込みモードの中で最も低減させることができる。
【００７１】
以上の第１〜第４のデータ書き込みモードは、ストレージシステム１の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト３０からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機（図示せず）が選択して、指定する。また、ストレージシステム１の稼動中の任意の契機において、マイクロプロセッサ３９が自動的に選択する形態であってもよい。例えば、ハードディスクドライブ４１、フラッシュメモリ２０の容量に比べてキャッシュメモリ３４の容量が大きく、データ保証を重視する場合は、第１のデータ書き込みモードが選択される。例えば、ハードディスクドライブ４１の容量が比較的大きく、フラッシュメモリ２０の容量が比較的小さく、ストレージシステム１の性能を重視する場合は、第３のデータ書き込みモードが選択される。
【００７２】
また、選択されたデータ書き込みモードの情報は、メモリ３８に登録され、各マイクロプロセッサ３９はメモリ３８にアクセスすることで、データ書き込みモードを参照する。
【００７３】
以下、データ書込みモードとして、これら第１〜第４のデータ書込みモードがそれぞれ設定された場合におけるストレージシステム１の動作について説明する。
【００７４】
（１−３−２−１）第１のデータ書込みモード
（１−３−２−１−１）第１のデータ書込みモード時における処理の流れ
ストレージシステム１においては、データ書込みモードとして第１のデータ書込みモードが設定された場合、図１０及び図１１に示す流れで書込み対象データのフラッシュメモリ２０への書き込みが行なわれる。
【００７５】
すなわち、ストレージシステム１においては、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、まず、当該データ書込み要求を受信した旨の通知がチャネル制御部３１からマイクロプロセッサ３９に与えられる（ＳＰ１）。
【００７６】
マイクロプロセッサ３９は、かかる通知を受信すると、メモリ３８に格納されたデータ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂ、具体的には書込み対象データを格納すべきフラッシュメモリ２０内のブロックに対応する「ＣＭヒットミス情報」フィールド５０Ｂを参照して、当該書込み対象データにより更新される元の書込み対象データ（以下、これを旧書込み対象データと呼ぶ）がキャッシュメモリ３４に格納されているか否かを判定する（ＳＰ２）。
【００７７】
そしてマイクロプロセッサ３９は、かかる旧書込み対象データがキャッシュメモリ３４に格納されていないと判定した場合には、書込み対象データを二重書きするのに必要な容量分の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ３）、この後、この書込み対象データをキャッシュメモリ３４に転送すべき旨の指示をチャネル制御部３１に与える（ＳＰ４）。
【００７８】
チャネル制御部３１は、かかる指示が与えられると、ホスト３０から送信される書込み対象データをキャッシュメモリ３４に転送する。また、キャッシュメモリ制御部３５は、チャネル制御部３１から送信される書込み対象データを、キャッシュメモリ３４上のステップＳＰ３において確保された記憶領域に順次二重書きする（ＳＰ５）。
【００７９】
そしてキャッシュメモリ制御部３５は、やがて書込み対象データをすべてキャッシュメモリ３４に二重書きし終えると、かかる書き込みを終了した旨の報告である終了ステータスを、チャネル制御部３１を介してマイクロプロセッサ３９に送信する（ＳＰ６，ＳＰ７）。
【００８０】
マイクロプロセッサ３９は、この終了ステータスを受信すると、メモリ３８に格納されているデータ管理テーブル５０（図５）上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたＣＭヒットミス情報を「ヒット」に設定すると共に、「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたＨＤＤヒットミス情報を「ミス」に設定する。またマイクロプロセッサ３９は、かかる書込み対象データを格納したキャッシュメモリ３４上のアドレスをデータ管理テーブル５０上の対応する「ＣＭアドレス」フィールド５０Ｄに格納する。さらにマイクロプロセッサは３９、この後に行うべき「ジョブ（ＪＯＢ）」をメモリ３８に登録し、この後キャッシュメモリ３４に対する書込み対象データの書込み処理を終了する（ＳＰ８）。
【００８１】
一方、マイクロプロセッサ３９は、この後適当なタイミングでメモリ３８に登録された上述の「ジョブ」を読み込む（ＳＰ９）。そしてマイクロプロセッサ３９は、この「ジョブ」に応じて、まず、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｃを参照して、その書込み対象データに対応する旧書込み対象データがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ１０）。
【００８２】
そしてマイクロプロセッサ３９は、例えば、かかる旧書込み対象データがハードディスクドライブ４１に格納されていると判定した場合には、後述のパリティ演算（ＳＰ１６参照）を実行するために必要な容量の記憶領域をキャッシュメモリ３４上に確保する（ＳＰ１１）。またマイクロプロセッサ３９は、この後、データ管理テーブル５０上の対応する「ＨＤＤアドレス」フィールド５０Ｅに格納されているアドレスを指定して、ハードディスクドライブ４１の当該アドレス位置に格納されている旧書込み対象データ及び当該旧書込み対象データのパリティをキャッシュメモリ３４に移動すべき旨の指示をディスク制御部３２に与える（ＳＰ１２）。
【００８３】
ディスク制御部３２は、かかる指示が与えられると、ハードディスクドライブ４１における指定されたアドレス位置から上述の旧書込み対象データ及び当該旧書込み対象データのパリティを読み出し、これらをキャッシュメモリ制御部３５に送信する。またキャッシュメモリ制御部３５は、かかる旧書込み対象データ及び当該旧書込み対象データのパリティを受信すると、これらをキャッシュメモリ３４に書き込む（ＳＰ１３）。
【００８４】
そしてキャッシュメモリ制御部３５は、やがて、上述の旧書込み対象データ及び当該旧書込み対象データのパリティをすべてキャッシュメモリ３４に書き込み終えると、これに応じた終了ステータスをディスク制御部３２を介してマイクロプロセッサ３０に送信する（ＳＰ１４，ＳＰ１５）。
【００８５】
マイクロプロセッサ３９は、この終了ステータスを受信すると、キャッシュメモリ３４に格納されている書込み対象データ、旧書込み対象データ及び旧書込み対象データのパリティに基づき、ステップＳＰ１１において確保したキャッシュメモリ３４上の記憶領域を用いて、書込み対象データに対するパリティを順次算出すると共に、得られたパリティをキャッシュメモリ制御部３５に送信する（ＳＰ１６）。またキャッシュメモリ制御部３５は、かかるパリティを順次ディスク制御部３２に送信する（ＳＰ１７）。これにより、かかる書込み対象データのパリティがハードディスクドライブ４１に格納される。
【００８６】
さらにキャッシュメモリ制御部３５は、このようにしてマイクロプロセッサ３９により算出された書込み対象データのパリティをディスク制御部３２に転送し終えると、これに応じた終了ステータスをマイクロプロセッサ３９に送信する（ＳＰ１８）。またマイクロプロセッサ３９は、この終了ステータスを受信すると、キャッシュメモリ制御部３５に対して、書込み対象データをハードディスクドライブ４１に転送すべき旨の指示を与える（ＳＰ１９）。
【００８７】
かくしてキャッシュメモリ制御部３５は、かかる指示を受信すると、書込み対象データをキャッシュメモリ３４から順次読み出してディスク制御部３２に送信する。また、ディスク制御部３２は、キャッシュメモリ制御部３５から送信される書込み対象データを、ハードディスクドライブ４１に順次書き込む（ＳＰ２０）。
【００８８】
そしてディスク制御部３２は、やがてキャッシュメモリ制御部３５から送信される書込み対象データをすべてハードディスクドライブ４１に書き込み終えると、これに応じた終了ステータスをキャッシュメモリ制御部３５を介してマイクロプロセッサ３９に送信する（ＳＰ２１，ＳＰ２２）。
【００８９】
マイクロプロセッサ３９は、この終了ステータスを受信すると、メモリ３８にアクセスして、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されているＣＭヒットミス情報を「ミス」に設定すると共に、「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されているＨＤＤヒットミス情報を「ヒット」に設定する。またマイクロプロセッサ３９は、当該データ管理テーブル５０上の対応する「ＨＤＤアドレス」フィールド５０Ｅに、かかる書込み対象データを格納したハードディスクドライブ４１上のアドレスを格納する。さらにマイクロプロセッサ３９は、この後に行うべき「ジョブ」をメモリ３８に登録した後（ＳＰ２４）、ハードディスクドライブ４１への書込み対象データのデータ移行処理を終了する。
【００９０】
他方、マイクロプロセッサ３９は、この後、図２４について後述する所定のタイミングでメモリ３８にアクセスし、当該メモリ３８に登録された上述の「ジョブ」を読み込む（ＳＰ２４）。そしてマイクロプロセッサ３９は、この「ジョブ」に基づいて、データ管理テーブル５０の各「ＣＭアドレス」フィールド５０Ｄを参照して、後述のパリティ演算（ＳＰ３４）を実行するために必要な容量の記憶領域をキャッシュメモリ３４上に確保する（ＳＰ２５）。さらにマイクロプロセッサ３９、この後、データ管理テーブル５０上の対応する「ＨＤＤアドレス」フィールド５０Ｅに格納されているアドレスを指定して、ハードディスクドライブ４１の当該アドレス位置に格納されている書込み対象データをキャッシュメモリ３４に転送すべき旨の指示をディスク制御部３２に与える（ＳＰ２６）。
【００９１】
ディスク制御部３２は、かかる指示が与えられると、対応するハードディスクドライブ４１における指定されたアドレス位置から書込み対象データを読み出し、これをキャッシュメモリ制御部３５に送信する。またキャッシュメモリ制御部３５は、かかる書込み対象データを受信すると、これをキャッシュメモリ３４に順次書き込む（ＳＰ２７）。
【００９２】
そしてキャッシュメモリ制御部３５は、やがてディスク制御部３２から送信される書込み対象データをすべてキャッシュメモリ３４に書き込み終えると、これに応じた終了ステータスをディスク制御部３２を介してマイクロプロセッサ３９に送信する（ＳＰ２８，ＳＰ２９）。
【００９３】
マイクロプロセッサ３９は、この終了ステータスを受信すると、ハードディスクドライブ４１に格納されている旧書込み対象データ及び当該書込み対象データのパリティをキャッシュメモリ３４に転送すべき旨の指示をフラッシュメモリ制御部３３に与える（ＳＰ３０）。
【００９４】
そしてフラッシュメモリ制御部３３は、かかる指示が与えられると、かかる旧書込み対象データ及び旧書込み対象データのパリティをフラッシュメモリ２０から読み出し、これらをキャッシュメモリ制御部３５に送信する。またキャッシュメモリ制御部３５は、かかる旧書込み対象データ及び当該書込み対象データのパリティを受信すると、これらをキャッシュメモリ３４に書き込む（ＳＰ３１）。
【００９５】
そしてキャッシュメモリ制御部３５は、やがてフラッシュメモリ制御部３３から送信される旧書込み対象データ及び当該書込み対象データのパリティをすべてキャッシュメモリ３４に書き込み終えると、これに応じた終了ステータスをフラッシュメモリ制御部３３を介してマイクロプロセッサ３９に送信する（ＳＰ３２，ＳＰ３３）。
【００９６】
そしてマイクロプロセッサ３９は、この終了ステータスを受信すると、キャッシュメモリ３４に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティとに基づいて書込み対象データについての新たなパリティを順次生成し、これをキャッシュメモリ制御部３５に順次送信する（ＳＰ３４）。またキャッシュメモリ制御部３５は、このときマイクロプロセッサ３９から与えられた書込み対象データについての新たなパリティを順次キャッシュメモリ３４に格納する。
【００９７】
そしてキャッシュメモリ制御部３５は、このようにしてマイクロプロセッサ３９により算出された新たなパリティをキャッシュメモリ３４に書き込み終えると、かかる書き込みを終えた旨の報告でなる終了ステータスをマイクロプロセッサ３９に送信する（ＳＰ３６）。またマイクロプロセッサ３９は、この終了ステータスを受信すると、フラッシュメモリ２０に書込み対象データを転送すべき旨の指示を、キャッシュメモリ制御部３５に与える（ＳＰ３７）。
【００９８】
キャッシュメモリ制御部３５は、かかる指示を受信すると、書込み対象データ及びその新たなパリティをキャッシュメモリ３４から順次読み出してフラッシュメモリ制御部３３に送信する。また、フラッシュメモリ制御部３３は、キャッシュメモリ制御部３５から送信される書込み対象データ及びその新たなパリティを、フラッシュメモリ２０に順次書き込む（ＳＰ３８）。
【００９９】
そしてフラッシュメモリ制御部３３は、やがてキャッシュメモリ制御部３５から送信される書込み対象データ及びその新たなパリティをすべてフラッシュメモリ２０に書き込み終えると、これに応じた終了ステータスをキャッシュメモリ制御部３５を介してマイクロプロセッサ３９に送信する（ＳＰ３９，ＳＰ４０）。
【０１００】
かくしてマイクロプロセッサ３９は、この終了ステータスを受信すると、メモリ３８にアクセスして、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたＣＭヒットミス情報を「ミス」に、また対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されているＨＤＤヒットミス情報を「ミス」にそれぞれ設定し、この後、この第１のデータ書込みモードによるデータ書込み処理を終了する。
【０１０１】
（１−３−２−１−２）第１のデータ書込みモード時におけるマイクロプロセッサの処理
図１２〜図１４は、上述のような第１のデータ書込みモード時におけるマイクロプロセッサ３９の具体的な処理内容を示すフローチャートである。
【０１０２】
図１２は、ホスト３０から送信される書込み対象データをキャッシュメモリ３４に書き込む際の処理内容（図１０のステップＳＰ１〜ステップＳＰ８）、図１３は、キャッシュメモリ３４に格納されたかかる書込み対象データをハードディスクドライブ４１に移動する際の処理内容（図１０のステップＳＰ９〜ステップＳＰ２３）、図１４は、ハードディスクドライブ４１に格納されたかかる書込み対象データをフラッシュメモリ２０に移動する際の処理内容（図１０のステップＳＰ２４〜ステップＳＰ４１）をそれぞれ示している。そしてマイクロプロセッサ３９は、これらの処理をメモリ４０（図２）に格納された対応する制御プログラムに基づいて実行する。
【０１０３】
すなわちマイクロプロセッサ３９は、ホスト３０からデータ書込み要求及び書込み対象データが与えられると図１２に示す第１モード時キャッシュ書込み処理を開始し、まず、メモリ３８に格納されたデータ管理テーブル５０に基づいて、その書込み対象データに対応する旧書込み対象データがキャッシュメモリ３４に格納されているか否かを判定する（ＳＰ５０）。
【０１０４】
そしてマイクロプロセッサ３９は、このヒットミス判定において、かかる旧書込み対象データがキャッシュメモリ３４に格納されていないという判定結果（キャッシュミス）を得ると、必要量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ５１）、その後チャネル制御部３１及びキャッシュメモリ制御部３５を制御して、かかる書込み対象データをキャッシュメモリ３４に二重書きさせる（ＳＰ５２）。
【０１０５】
これに対してマイクロプロセッサ３９は、ステップＳＰ５０のヒットミス判定において、対応する旧書込み対象データがキャッシュメモリ３４に格納されているという判定結果（キャッシュヒット）を得ると、チャネル制御部３１及びキャッシュメモリ制御部３４を制御して、かかる書込み対象データをキャッシュメモリ３４上の対応する旧書込み対象データ上に上書きさせる（ＳＰ５３）。
【０１０６】
そしてマイクロプロセッサ３９は、この後、書込み対象データをキャッシュメモリ３４に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部から与えられると、これに応じた「ジョブ」をメモリ３８に登録すると共にデータ管理テーブル５０の更新を行ない、この後この第１モード時キャッシュ書込み処理を終了する。
【０１０７】
一方、マイクロプロセッサ３９は、この後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図１３に示す第１モード時ハードディスク書込み処理を開始し、まず、メモリ３８に登録されている上述の「ジョブ」を読み込む（ＳＰ６０）。
【０１０８】
続いてマイクロプロセッサ３９は、データ管理テーブル５０に基づいて、かかる書込み対象データに対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ６１）。
【０１０９】
マイクロプロセッサは、このヒットミス判定において旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されているという判定結果（ＨＤＤヒット）を得ると、後述のパリティ演算（ＳＰ６４）に必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ６２）、その後ディスク制御部３２及びキャッシュメモリ制御部３５を制御して、旧書込み対象データ及び当該旧書込み対象データのパリティをハードディスクドライブ４１からキャッシュメモリ３４に移動させる（ＳＰ６３）。
【０１１０】
さらにマイクロプロセッサ３９は、この後、キャッシュメモリ３４に格納された書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて、書込み対象データについての新たなパリティを生成する（ＳＰ６４）。
【０１１１】
これに対してマイクロプロセッサ３９は、かかるステップＳＰ６１のヒットミス判定において、対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されていないという判定結果（ＨＤＤミス）を得ると、後述のパリティ演算（ＳＰ６６）に必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ６５）、その後、キャッシュメモリ３４に格納された書込み対象データについての新たなパリティを生成する（ＳＰ６６）。
【０１１２】
そしてマイクロプロセッサ３９は、上述のように書込み対象データについての新たなパリティを生成し終えると、キャッシュメモリ制御部３５及びディスク制御部３２を制御して、ステップＳＰ６４又はステップＳＰ６６において生成した新たなパリティと、書込み対象データとをハードディスクドライブ４１に移動させる（ＳＰ６７）。
【０１１３】
またマイクロプロセッサ３９は、この後、書込み対象データ及び当該書込み対象データの新たなパリティをハードディスクドライブ４１に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部３５から与えられると、これに応じたジョブ登録及びデータ管理テーブル５０の更新を行ない（ＳＰ６８）、この後この第１モード時ハードディスク書込み処理を終了する。
【０１１４】
他方、マイクロプロセッサ３９は、この後、図２４について後述する所定のタイミングで図１４に示す第１モード時フラッシュメモリ書込み処理を開始し、まず、メモリ３８に登録されている上述の「ジョブ」を読み込む（ＳＰ７０）。
【０１１５】
そしてマイクロプロセッサ３９は、この後、後述のパリティ演算（ＳＰ７４）に必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ７１）、この後ディスク制御部３２及びキャッシュメモリ制御部３５を制御して、書込み対象データをハードディスクドライブ４１からキャッシュメモリ３４に移動させる（ＳＰ７２）。
【０１１６】
またマイクロプロセッサ３９は、フラッシュメモリ制御部３３及びキャッシュメモリ制御部３５を制御して、対応する旧書込み対象データ及び当該旧書込み対象データのパリティをフラッシュメモリ２０からキャッシュメモリ３４に移動させ（ＳＰ７３）、この後、キャッシュメモリ２０に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データに対する新たなパリティを生成する（ＳＰ７４）。
【０１１７】
次いで、マイクロプロセッサ３９は、キャッシュメモリ制御部３５及びフラッシュメモリ制御部３３を制御して、書込み対象データ及び当該書込み対象データの新たなパリティをキャッシュメモリ３４からフラッシュメモリ２０に移動させ（ＳＰ７５）、この後これに応じてデータ管理テーブル７６を更新した後に（ＳＰ７６）、この第１モード時フラッシュメモリ書込み処理を終了する。
【０１１８】
（１−３−２−２）第２のデータ書込みモード
（１−３−２−２−１）第２のデータ書込みモード時における処理の流れ
一方、ストレージシステム１においては、データ書込みモードとして第２のデータ書込みモードが設定されている場合、図１５に示す流れで書込み対象データをフラッシュメモリ２０に書き込む。
【０１１９】
すなわち、ストレージシステム１においては、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、この図１５に示す第２のデータ書込み処理を開始し、まず、当該データ書込み要求を受信したチャネル制御部３１がその旨の通知をマイクロプロセッサ３９に与える（ＳＰ８０）。そしてストレージシステム１では、この通知に応じて、図１０及び図１１について上述した第１のデータ書込みモード処理のステップＳＰ２〜ステップＳＰ８と同様にして、かかる書込み対象データをキャッシュメモリ３４に二重書きすると共に、これに応じたジョブ登録及びデータ管理テーブル５０の更新を実行する（ＳＰ８１〜ＳＰ８７）。
【０１２０】
またマイクロプロセッサ３９は、この後、メモリ３８に登録された上述の「ジョブ」を適当なタイミングで読み込む（ＳＰ８８）。そしてマイクロプロセッサ３９は、この「ジョブ」に応じて、まず、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｃを参照して、かかる書込み対象データに対応する旧書込み対象データがハードディスクドライブ４１及びフラッシュメモリ２０のいずれかに格納されているか否かを判定する（ＳＰ８９）。
【０１２１】
そしてマイクロプロセッサ３９は、例えば旧書込み対象データがハードディスクドライブ４１又はフラッシュメモリ２０に格納されていると判定した場合には、後述のパリティ演算（ＳＰ９５）を実行するために必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ９０）、この後、かかる旧書込み対象データ及び当該旧書込み対象データのパリティをキャッシュメモリ３４に移動すべき旨の指示をディスク制御部３２又はフラッシュメモリ制御部３３に与える（ＳＰ９１）。なお、図１５は、旧書込み対象データがフラッシュメモリ２０に格納されていると判定された場合を示している。
【０１２２】
ディスク制御部３２又はフラッシュメモリ制御部３３は、かかる指示が与えられると、ハードディスクドライブ４１又はフラッシュメモリ２０からかかる旧書込み対象データ及び当該旧書込み対象データのパリティを読み出し、これをキャッシュメモリ制御部３５に送信する。またキャッシュメモリ制御部３５は、かかる旧書込み対象データ及び当該旧書込み対象データのパリティを受信すると、これらをキャッシュメモリ３４に書き込む（ＳＰ９２）。
【０１２３】
そしてキャッシュメモリ制御部３５は、やがてかかる旧書込み対象データ及び当該旧書込み対象データのパリティをすべてキャッシュメモリ３４に書き込み終えると、これに応じた終了ステータスをそのディスク制御部３２又はフラッシュメモリ制御部３３に送信する（ＳＰ９３）。またディスク制御部３２又はフラッシュメモリ制御部３３は、この終了ステータスを受信すると、これに応じた終了ステータスをマイクロプロセッサ３９に送信する（ＳＰ９４）。
【０１２４】
マイクロプロセッサ３９は、この終了ステータスを受信すると、キャッシュメモリ３４に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データについての新たなパリティを順次算出し、これをキャッシュメモリ制御部３５に送信する（ＳＰ９５）。またキャッシュメモリ制御部３５は、このときマイクロプロセッサ３９から与えられたかかる書込み対象データについての新たなパリティを順次ディスク制御部３２に送信する（ＳＰ９６）。この結果、この新たなパリティが順次ハードディスクドライブ４１に格納される。
【０１２５】
さらにキャッシュメモリ制御部３５は、このようにしてマイクロプロセッサ３９により算出された書込み対象データについての新たなパリティをディスク制御部３２に転送し終えると、これに応じた終了ステータスをマイクロプロセッサ３９に送信する（ＳＰ９７）。またマイクロプロセッサ３９は、この終了ステータスを受信すると、キャッシュメモリ制御部３５に対して、書込み対象データをハードディスクドライブ４１に転送すべき旨の指示を与える（ＳＰ９８）。
【０１２６】
かくしてストレージシステム１では、この後、第１のデータ書込みモード（図１０及び図１１）のステップＳＰ２０〜ステップＳＰ２３と同様にして、キャッシュメモリ３４に格納された書込み対象データ及び当該書込み対象データの新たなパリティがハードディスクドライブ４１に移動されると共に、これに応じたジョブ登録及びデータ管理テーブル５０の更新が行なわれる（ＳＰ９９〜ＳＰ１０２）。
【０１２７】
他方、マイクロプロセッサ３９は、この後、図２４について後述する所定のタイミングでメモリ３８にアクセスし、当該メモリ３８に登録された上述の「ジョブ」を読み込む（ＳＰ１０３）。そしてマイクロプロセッサ３９は、この「ジョブ」に基づいて、ハードディスクドライブ４１に格納された書込み対象データ及び当該書込み対象データの新たなパリティをフラッシュメモリ２０に移動すべき旨の指示をディスク制御部３２及びフラッシュメモリ制御部３３に与える（ＳＰ１０４）。
【０１２８】
ディスク制御部３２は、かかる指示が与えられると、ハードディスクドライブ４１から上述の書込み対象データ及び当該書込み対象データの新たなパリティを読み出し、これをフラッシュメモリ制御部３３に送信する。またフラッシュメモリ制御部３３は、かかる書込み対象データ及び当該書込み対象データの新たなパリティを受信すると、これをフラッシュメモリ２０に順次書き込む（ＳＰ１０５）。
【０１２９】
そしてフラッシュメモリ制御部３３は、やがて書込み対象データ及び当該書込み対象データの新たなパリティをフラッシュメモリ２０に書き込み終えると、これに応じた終了ステータスをディスク制御部３２を介してマイクロプロセッサ３９に送信する（ＳＰ１０６，ＳＰ１０７）。
【０１３０】
かくしてマイクロプロセッサ３０は、この終了ステータスを受信すると、メモリ３８にアクセスして、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されているＣＭヒットミス情報及び「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されているＨＤＤヒットミス情報を共に「ミス」に設定し、この後、この第２のデータ書込みモードによるデータ書込み処理を終了する。
【０１３１】
（１−３−２−２−２）第２のデータ書込みモード時におけるマイクロプロセッサの処理
図１６及び図１７は、上述のような第２のデータ書込みモード時におけるマイクロプロセッサ３９の具体的な処理内容を示すフローチャートである。
【０１３２】
図１６は、キャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に移動する際の処理内容（図１５のステップＳＰ８８〜ステップＳＰ１０２）、図１７は、ハードディスクドライブ４１に格納されたかかる書込み対象データをフラッシュメモリ２０に移動する際の処理内容（図１５のステップＳＰ１０３〜ステップＳＰ１０８）をそれぞれ示している。なお、ホスト３０から送信される書込み対象データをキャッシュメモリ３４に書き込む際の処理内容（図１５のステップＳＰ８０〜ステップＳＰ８７）は、図１２について上述した第１モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。マイクロプロセッサ３９は、これらの処理をメモリ４０（図２）に格納された対応する制御プログラムに基づいて実行する。
【０１３３】
すなわちマイクロプロセッサ３９は、図１２について上述した第１モード時キャッシュ書込み処理を実行後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図１６に示す第２モード時ハードディスク書込み処理を開始し、まず、メモリ３８に登録されている「ジョブ」を読み込む（ＳＰ１１０）。
【０１３４】
続いてマイクロプロセッサ３９は、データ管理テーブル５０に基づいて、書込み対象データに対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ１１１）。
【０１３５】
マイクロプロセッサ３９は、このヒットミス判定において、かかる旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されているという判定結果（ＨＤＤヒット）を得ると、後述のパリティ演算（ＳＰ１１６）に必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ１１２）、その後ディスク制御部３２及びキャッシュメモリ制御部３５を制御して、かかる旧書込み対象データ及び当該旧書込み対象データのパリティをハードディスクドライブ４１からキャッシュメモリ３４に移動させる（ＳＰ１１３）。
【０１３６】
これに対してマイクロプロセッサ３９は、ステップＳＰ１１１のヒットミス判定において、対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１に格納されていないという判定結果（ＨＤＤミス）を得ると、後述のパリティ演算（ＳＰ１１６）に必要な容量の記憶領域をキャッシュメモリ３４上に確保し（ＳＰ１１４）、この後フラッシュメモリ制御部３３及びキャッシュメモリ制御部３５を制御して、旧書込み対象データ及び当該旧書込み対象データのパリティをフラッシュメモリ２０からキャッシュメモリ３４に移動させる（ＳＰ１１５）。
【０１３７】
なお、例えば、かかる旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ４１及びフラッシュメモリ２０のいずれにも格納されていないとき、つまり書込み対象データがすでにフラッシュメモリ２０に格納されているデータの更新データではなく、当該書込み対象データが新たにフラッシュメモリ２０に書き込むデータであったときには、ステップＳＰ１１５において、いわゆるゼロデータが旧書込み対象データ及び当該旧書込み対象データのパリティとしてフラッシュメモリ２０から読み出されてキャッシュメモリ３４に移動されることとなる。
【０１３８】
そしてマイクロプロセッサ３９は、この後、キャッシュメモリ３４に移動された書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データについての新たなパリティを生成する（ＳＰ１１６）。またマイクロプロセッサ３９は、キャッシュメモリ制御部３５及びディスク制御部３２を制御して、ステップＳＰ１１６において生成した新たなパリティと、書込み対象データとをハードディスクドライブ４１に移動させる（ＳＰ１１７）。
【０１３９】
さらにマイクロプロセッサ３９は、この後、書込み対象データ及び当該書込み対象データの新たなパリティをハードディスクドライブ４１に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部３５から与えられると、これに応じたジョブ登録及びデータ管理テーブル５０の更新を行ない（ＳＰ１１８）、この後この第２モード時ハードディスク書込み処理を終了する。
【０１４０】
一方、マイクロプロセッサ３９は、この後、図２４について後述する所定のタイミングで図１７に示す第２モード時フラッシュメモリ書込み処理を開始し、まず、メモリ３８に登録されている上述の「ジョブ」を読み込む（ＳＰ１２０）。
【０１４１】
続いてマイクロプロセッサ３９は、ディスク制御部３２及びフラッシュメモリ制御部３３を制御して、書込み対象データ及びパリティをハードディスクドライブ４１からフラッシュメモリ２０に移動させる（ＳＰ１２１）。またマイクロプロセッサ３９は、この後、かかるステップＳＰ１２０及びステップＳＰ１２１の処理に応じてデータ管理テーブル５０を更新し（ＳＰ１２２）、この第２モード時フラッシュメモリ書込み処理を終了する。
【０１４２】
（１−３−２−３）第３のデータ書込みモード
（１−３−２−３−１）第３のデータ書込みモード時における処理の流れ
他方、ストレージシステム１においては、データ書込みモードとして第３のデータ書込みモードが設定されている場合、図１８及び図１９に示す流れで書込み対象のデータをフラッシュメモリ２０に書き込む。
【０１４３】
すなわち、ストレージシステム１においては、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、この図１８及び図１９に示す第３のデータ書込み処理を開始し、まず、当該データ書込み要求を受信したチャネル制御部３１がその旨の通知をマイクロプロセッサ３９に与える（ＳＰ１３０）。そしてストレージシステム１では、この通知に応じて、図１０及び図１１について上述した第１のデータ書込みモード処理のステップＳＰ２〜ステップＳＰ８と同様にして、かかる書込み対象データをキャッシュメモリ３４に二重書きすると共に、これに応じたジョブ登録及びデータ管理テーブル５０の更新を実行する（ＳＰ１３１〜ＳＰ１３７）。
【０１４４】
またマイクロプロセッサ３９は、この後、メモリ３８に格納された上述の「ジョブ」を適当なタイミングで読み込む（ＳＰ１３８）。そしてマイクロプロセッサ３９は、この「ジョブ」に応じて、まず、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｃを参照して、かかる書込み対象データに対応する旧書込み対象データがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ１３９）。
【０１４５】
そしてマイクロプロセッサ３９は、例えば旧書込み対象データがハードディスクドライブ４１に格納されていないと判定した場合には、書込み対象データを二重書きするために必要な容量の記憶領域をハードディスクドライブ４１上に確保し（ＳＰ１４０）、この後、書込み対象データをハードディスク１２に転送すべき旨の指示をキャッシュメモリ制御部３５に与える（ＳＰ１４１）。
【０１４６】
キャッシュメモリ制御部３５は、かかる指示が与えられると、キャッシュメモリ３４から書込み対象データを順次読み出し、これをディスク制御部３２に順次送信する。またディスク制御部３２は、ステップＳＰ１４０において確保したハードディスクドライブ４１上の記憶領域にこの書込み対象データを二重書きする（ＳＰ１４２）。
【０１４７】
そしてストレージシステム１では、この後、第１のデータ書込みモードのステップＳＰ２１〜ステップＳＰ２３と同様にして、終了ステータスがマイクロプロセッサ３９に与えられ、この終了ステータスに基づいて、対応するジョブ登録及びデータ管理テーブル５０の更新が行なわれる（ＳＰ１４３〜ＳＰ１４５）。
【０１４８】
さらにストレージシステム１では、この後、図１０及び図１１について上述した第１のデータ書込み処理のステップＳＰ２４〜ステップＳＰ４１と同様にして、ハードディスクドライブ４１に格納された書込み対象データの新たなパリティが生成されると共に、これら書込み対象データ及び当該書込み対象データの新たなパリティがフラッシュメモリ２０に移動され、この後これに応じてデータ管理テーブル５０が更新される（ＳＰ１４６〜ＳＰ１６３）。
【０１４９】
（１−３−２−３−２）第３のデータ書込みモード時におけるマイクロプロセッサの処理
図２０は、上述のような第３のデータ書込みモード時におけるマイクロプロセッサ３９の具体的な処理内容を示すフローチャートである。
【０１５０】
実際上、図２０は、キャッシュメモリ３４に格納された書込み対象の書込み対象データをハードディスクドライブ４１に移動する際の処理内容（図１８のステップＳＰ１３８〜ステップＳＰ１４５）を示している。なお、ホスト３０から送信される書込み対象データをキャッシュメモリ３４に書き込む際の処理内容（図１８のステップＳＰ１３１〜ステップＳＰ１３７）は、図１２について上述した第１モード時キャッシュ書込み処理と同様であり、またハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に格納する際の処理内容（図１９のステップＳＰ１４６〜ステップＳＰ１６３）は、図１４について上述した第１モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。マイクロプロセッサ３９は、かかる図２０の処理をメモリ４０（図２）に格納された対応する制御プログラムに基づいて実行する。
【０１５１】
すなわちマイクロプロセッサ３９は、図１２について上述した第１モード時キャッシュ書込み処理を実行後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図２０に示す第３モード時ハードディスク書込み処理を開始し、まず、メモリ３８に登録されている「ジョブ」を読み込む（ＳＰ１７０）。
【０１５２】
続いてマイクロプロセッサ３９は、データ管理テーブル５０に基づいて、書込み対象データに対応する旧書込み対象データ１２がハードディスクドライブに格納されているか否かを判定する（ＳＰ１７１）。
【０１５３】
マイクロプロセッサ３９は、このヒットミス判定において、かかる旧書込み対象データがハードディスクドライブ４１に格納されていないという判定結果（ＨＤＤミス）を得ると、書込み対象データを二重書きするための記憶領域をハードディスクドライブ４１上に確保し（ＳＰ１７２）、その後キャッシュメモリ制御部３５及びディスク制御部３２を制御して、書込み対象データをキャッシュメモリ３４から読み出させ、これをステップＳＰ１７２において確保したハードディスクドライブ４１上の記憶領域に二重書きさせる（ＳＰ１７３）。
【０１５４】
これに対してマイクロプロセッサ３９は、かかるヒットミス判定において、かかる旧書込み対象データがハードディスクドライブ４１に格納されているという判定結果（ＨＤＤヒット）を得ると、キャッシュメモリ制御部３５及びディスク制御部３２を制御して、書込み対象データをキャッシュメモリ３４から読み出させ、これをハードディスクドライブ４１上の旧書込み対象データ上に上書きさせる（ＳＰ１７４）。
【０１５５】
そしてマイクロプロセッサ３９は、この後、書込み対象データをハードディスクドライブ４１に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部３５から与えられると、これに応じたジョブ登録及びデータ管理テーブル５０の更新を行ない、この後この第３モード時ハードディスク書込み処理を終了する。
【０１５６】
（１−３−２−４）第４のデータ書込みモード
図２１は、データ書込みモードとして第４のデータ書込みモードが設定されている場合のストレージシステム１における処理の流れを示している。
【０１５７】
この第４のデータ書込みモードでは、ホスト３０から与えられた書込み対象データが、図１８及び図１９について上述した第３のデータ書込みモードのステップＳＰ１３０〜ステップＳＰ１４５と同様にして、キャッシュメモリ３４及びハードディスクドライブ４１に順次二重書きされる（ＳＰ１８０〜ＳＰ１９５）。
【０１５８】
またストレージシステム１においては、ハードディスクドライブ４１に二重書きされた書込み対象データが、図１５について上述した第２のデータ書込みモードのステップＳＰ１０３〜ステップＳＰ１０８と同様にして、ハードディスクドライブ４１から読み出されてフラッシュメモリ２０に二重書きされる（ＳＰ１９６〜ＳＰ２０１）。
【０１５９】
なお、この第４のデータ書込みモード時におけるマイクロプロセッサ３９の具体的な処理内容については、ホスト３０からの書込み対象データをキャッシュメモリ３４に書き込む際の処理内容（図２１のステップＳＰ１８０〜ステップＳＰ１８７）が図１２について上述した第１モード時キャッシュ書込み処理と同様であり、キャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に移動する際の処理内容（図２１のステップＳＰ１８８〜ステップＳＰ１９５）が図２０について上述した第３モード時ハードディスク書込み処理と同様であり、さらにハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移動する際の処理内容（図２１のステップＳＰ１９６〜ステップＳＰ２０１）が図１７について上述した第２モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【０１６０】
（１−３−２−５）データ移行処理
ところで、かかるストレージシステム１においては、上述のようにキャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に移行した場合、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたＣＭヒットミス情報が「ミス」、対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたＨＤＤヒットミス情報が「ヒット」にそれぞれ設定される。そして、マイクロプロセッサ３９は、この後、これらＣＭヒットミス情報及びＨＤＤヒットミス情報に基づいて、書込み対象データがハードディスクドライブ４１に格納されていると判定することとなる。
【０１６１】
ところが、例えばキャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に移動中に、当該書込み対象データよりも更に新しい最新の書込み対象データがホスト３０から送信されてキャッシュメモリ３４に格納された場合、何らの手当てもしなければ、最新の書込み対象データがキャッシュメモリ３４上に存在するにも係わらず、データ管理テーブル５０上では最新の書込み対象データがハードディスクドライブ４１上に存在するかのごとく設定されることとなる。
【０１６２】
そしてこのような事態が発生した場合、その書込み対象のデータのデータ読出し要求がホスト３０から与えられたときに、最新の書込み対象データがキャッシュメモリ３４上に存在するにも係わらず、１つ前のバージョンの書込み対象データがハードディスクドライブ４１から読み出されてホスト３０に送信されるという不具合が生じる。
【０１６３】
これは、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移行させる際にも同様のことが言える。
【０１６４】
そこで、本実施の形態においては、図５について上述したようにデータ管理テーブル５０に「ＨＤＤデータ移行中フラグ」フィールド５０Ｆ及び「ＦＭデータ移行中フラグ」フィールド５０Ｇが設けられており、書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移動させている最中は、対応する「ＨＤＤデータ移行中フラグ」フィールド５０ＦにＨＤＤデータ移行中フラグとして「１」を格納（以下、これをフラグを立てると呼ぶ）する。
【０１６５】
そしてストレージシステム１においては、かかる書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移動させている最中にその書込み対象データよりも新しい書込み対象データがホスト３０から与えられ、この書込み対象データをキャッシュメモリ３４に書き込む場合には、かかる「ＨＤＤデータ移行中フラグ」フィールド５０Ｆ内のＨＤＤデータ移行中フラグを「０」に変更（以下、これをフラグをクリアすると呼ぶ）する。
【０１６６】
またこの場合には、かかる書込み対象データの移動が完了しても、データ管理テーブル５０上の対応する「キャッシュヒットミス情報」フィールド５０Ｇ内に格納されたＣＭヒットミス情報を更新せず、これを元のままにしておく。
【０１６７】
同様に、ストレージシステム１においては、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させている最中は、対応する「ＦＭデータ移行中フラグ」フィールド５０ＧにＦＭデータ移行中フラグを立てる。
【０１６８】
そして、ストレージシステム１においては、かかる書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させている最中にその書込み対象データよりも新しい書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移動させる場合には、かかる「ＦＭデータ移行中フラグ」フィールド５０Ｇ内のＦＭデステージ中フラグをクリアする。
【０１６９】
またこの場合には、かかる書込み対象データの移動が完了しても、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｆ内に格納されたＨＤＤヒットミス情報を更新せず、これをそれぞれ元のままにしておく。
【０１７０】
そして、ストレージシステム１においては、このような制御を行なうことによって、最新の書込み対象データがキャッシュメモリ３４又はハードディスクドライブ４１にあるにも係わらず、それよりも前バージョンの書込み対象データがハードディスクドライブ４１又はフラッシュメモリ２０から読み出されてホスト３０に送信されるという不具合が発生するのを未然にかつ有効に防止できるようになされている。
【０１７１】
図２２は、このような書込み対象データの移行処理（データ移行処理）のうち、書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移行させる際のマイクロプロセッサ３９の処理内容を示すフローチャートである。
【０１７２】
マイクロプロセッサ３９は、キャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に移動させる場合、この図２２に示すＨＤＤデータ移行処理を開始し、まず、対象となる書込み対象データを指定したデータ移行要求をディスク制御部３２に送信する（ＳＰ２１０）。
【０１７３】
続いてマイクロプロセッサ３９は、かかる書込み対象データを移動するための記憶領域をハードディスクドライブ４１上に確保すると共に、このとき確保したハードディスクドライブ４１上の記憶領域のアドレスをデータ管理テーブル５０上の対応する「ＨＤＤアドレス」フィールド５０Ｅに格納する（ＳＰ２１１）。
【０１７４】
次いでマイクロプロセッサ３９は、データ管理テーブル５０上の対応する「ＨＤＤデータ移行中フラグ」フィールド５０Ｆ内にＨＤＤデータ移行中フラグを立て（ＳＰ２１２）、この後、キャッシュメモリ制御部３５及びディスク制御部３２を制御して、書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１上のステップＳＰ２１３において確保した記憶領域に移動させる（ＳＰ２１３）。
【０１７５】
そしてマイクロプロセッサ３９は、所定データ量の書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移動させ終えると、フラッシュメモリ２０における当該書込み対象データの格納先のアドレスと同じアドレスを格納先とする新たな書込み対象データをキャッシュメモリ３４に格納するデータ書込み要求がホスト３０から与えられたか否かを判断する（ＳＰ２１４）。
【０１７６】
マイクロプロセッサ３９は、この判断において否定結果を得るとステップＳＰ２１６に進み、これに対して肯定結果を得ると、データ管理テーブル５０上の対応する「ＨＤＤデータ移行中フラグ」フィールド５０Ｆに格納されているＨＤＤデータ移行中フラグをクリアする（ＳＰ２１５）。
【０１７７】
そしてマイクロプロセッサ３９は、この後、書込み対象データをフラッシュメモリ３４からハードディスクドライブ４１に移動し終えたか否かを判断する（ＳＰ２１６）。そしてマイクロプロセッサ３９は、この判断において否定結果を得るとステップＳＰ２１３に戻り、この後ステップＳＰ２１６において肯定結果を得るまで同様の処理を繰り返す（ＳＰ２１３〜ＳＰ２１６−ＳＰ２１３）。
【０１７８】
またマイクロプロセッサ３９は、やがて書込み対象データをフラッシュメモリ３４からハードディスクドライブ４１に移動し終えることにより、ステップＳＰ２１３において肯定結果を得ると、「ＨＤＤデータ移行中フラグ」フィールド５０ＦにＨＤＤデータ移行中フラグが立っているか否か（「１」が格納されているか否か）を判断する（ＳＰ２１７）。
【０１７９】
そしてマイクロプロセッサ３９は、この判断において肯定結果を得るとステップＳＰ２１９に進み、これに対して否定結果を得ると、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたヒットミス情報を「ヒット」に更新すると共に、当該データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたヒットミス情報を「ミス」に更新する（ＳＰ２１８）。
【０１８０】
次いで、マイクロプロセッサ３９は、データ管理テーブル５０上の対応する「ＨＤＤデータ移行中フラグ」フィールド５０Ｆに格納されたＨＤＤデータ移行中フラグをクリアし（ＳＰ２１９）、この後、このＨＤＤデータ移行処理を終了する。
【０１８１】
一方、図２３は、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させる際のマイクロプロセッサ３９の処理内容を示すフローチャートである。
【０１８２】
マイクロプロセッサ３９は、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移動させる場合、この図２３に示すＦＭデータ移行処理を開始し、まず、対象となる書込み対象データを指定したデータ移行要求をフラッシュメモリ制御部３３に送信する（ＳＰ２２０）。
【０１８３】
続いてマイクロプロセッサ３９は、そのときデータ書込みモードとして上述の第１〜第４のデータ書込みモードのいずれのモードが設定されているかを判定する（ＳＰ２２１）。そしてマイクロプロセッサ３９は、データ書込みモードとして第４のデータ書込みモードが設定されている場合には、ステップＳＰ２２３に進み、これに対して第１〜第３のデータ書込みモードのいずれかが設定されている場合には、パリティ演算の際に使用する記憶領域をキャッシュメモリ３４上に確保する（ＳＰ２２２）。
【０１８４】
次いでマイクロプロセッサ３９は、データ管理テーブル５０上の対応する「ＦＭデータ移行中フラグ」フィールド５０Ｇ内にＨＤＤデータ移行中フラグを立て（ＳＰ２２３）、この後、ディスク制御部３２及びフラッシュメモリ制御部３３を制御して、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０上のホスト３０により指定されたブロックに移動させる（ＳＰ２２４）。
【０１８５】
そしてマイクロプロセッサ３９は、所定データ量の書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させ終えると、フラッシュメモリ２０における当該書込み対象データの格納先のアドレスと同じアドレスを格納先とする新たな書込み対象データをハードディスクドライブ４１に格納する処理が実行され始めたか否かを判断する（ＳＰ２２５）。
【０１８６】
マイクロプロセッサ３９は、この判断において否定結果を得るとステップＳＰ２２７に進み、これに対して肯定結果を得ると、データ管理テーブル５０上の対応する「ＦＭデータ移行中フラグ」フィールド５０Ｇに格納されているＦＭデータ移行中フラグをクリアする（ＳＰ２２６）。
【０１８７】
そしてマイクロプロセッサ３９は、この後、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動し終えたか否かを判断する（ＳＰ２２７）。そしてマイクロプロセッサ３９は、この判断において否定結果を得るとステップＳＰ２２４に戻り、この後ステップＳＰ２２７において肯定結果を得るまで同様の処理を繰り返す（ＳＰ２２４〜ＳＰ２２７−ＳＰ２２４）。
【０１８８】
またマイクロプロセッサ３９は、やがて書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動し終えることにより、ステップＳＰ２２７において肯定結果を得ると、「ＦＭデータ移行中フラグ」フィールド５０ＧにＦＭデータ移行中フラグが立っているか否かを判断する（ＳＰ２２８）。
【０１８９】
そしてマイクロプロセッサ３９は、この判断において肯定結果を得るとステップＳＰ２３０に進み、これに対して否定結果を得ると、データ管理テーブル５０上の対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたヒットミス情報を「ミス」に更新する（ＳＰ２２９）。
【０１９０】
次いで、マイクロプロセッサ３９は、データ管理テーブル５０上の対応する「ＦＭデータ移行フラグ」フィールド５０Ｇに格納されたＦＭデータ移行中フラグをクリアし（ＳＰ２３０）、この後、このＦＭデータ移行処理を終了する。
【０１９１】
（１−３−２−６）ＦＭ書込みタイミング検出処理
次に、第１〜第４のデータ書込みモードにおいて、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移行するタイミングについて説明する。
【０１９２】
本実施の形態によるストレージシステム１では、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移動するタイミングが早すぎるとフラッシュメモリ２０への書込み回数が増加するという問題がある。一方で、かかるストレージシステム１では、かかるタイミングが遅すぎるとデータ読出し性能が良いというフラッシュメモリ２０の特性を有効活用できなかったり、又はキャッシュメモリ３４からハードディスクドライブ４１に移行されるデータ量がハードディスクドライブ４１からフラッシュメモリ２０に移行されるデータ量を上回り、ハードディスクドライブ４１がオーバーフローするという事態が発生する問題がある。従って、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移動するタイミングは、フラッシュメモリ２０のコストパフォーマンス等を考慮したうえで、できる限り早いタイミングで行なうことが好ましい。
【０１９３】
この場合において、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動するタイミングを決定する方法としては、かかるハードディスクドライブ４１からフラッシュメモリ２０への書込み対象データの移動を一定時間ごとに行なう第１の方法（以下、これを第１のタイミング決定方法と呼ぶ）と、各ハードディスクドライブ４１に格納された書込み対象データの合計データ量が予め定められた閾値を超えたときに行なう第２の方法（以下、これを第２のタイミング決定方法と呼ぶ）とが考えられる。
【０１９４】
このうち第１のタイミング決定方法では、フラッシュメモリ２０への書込み回数が制限しやすく、かかる書込み対象データの移動を行なうタイミングのばらつきを抑えられる利点があるものの、例えばハードディスクドライブ４１の容量が小さく、書込み対象データのデータ量が多い場合に、ハードディスクドライブ４１がオーバーフローするおそれがある。このため、この第１のタイミング決定方法を採用する場合には、ハードディスクドライブ４１をある程度多めにストレージシステム１に搭載する必要がある。
【０１９５】
一方、第２のタイミング決定方法では、ハードディスクドライブ４１がオーバーフローするおそれがなく、搭載するハードディスクドライブ数を抑えられる利点があるものの、ホスト３０からのデータ書込み要求が少ない場合には、書込み対象データが長期間ハードディスクドライブ４１に格納されたままの状態となるため、データの読出し性能が低くなる問題がある。
【０１９６】
そこで、本実施の形態のストレージシステム１では、かかる第１及び第２のタイミング決定方法のメリット及びデメリットを考慮して、前回、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移行させてからの経過時間と、ハードディスクドライブ４１上に存在する書込み対象データのデータ量との両方を、書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させるタイミングの条件としている。
【０１９７】
そしてマイクロプロセッサ３９は、上述した第１〜第４のデータ書込み処理と並行して、かかる経過時間と、ハードディスクドライブ４１内の書込み対象データのデータ量との両方を常時監視し、いずれか一方の条件が満たされたときにハードディスクドライブ４１に格納されている書込み対象データをフラッシュメモリ２０に移動させるように、ディスク制御部３２及びフラッシュメモリ制御部３３を制御するようになされている。
【０１９８】
図２４は、このような書込み対象データをハードディスクドライブ４１からフラッシュメモリ２０に移動させるタイミングを検出する処理（以下、これをＦＭ書込みタイミング検出処理と呼ぶ）に関するマイクロプロセッサ３９の具体的な処理内容を示すフローチャートである。
【０１９９】
マイクロプロセッサ３９は、第１〜第４のデータ書込み処理モード時において、書込み対象データをキャッシュメモリ３４からハードディスクドライブ４１に移動させ、これに応じたジョブ登録及びデータ管理テーブル５０の更新を終えると（図１０のステップＳＰ２３、図１５のステップＳＰ１０２、図１８のステップＳＰ１４５又は図２１のステップＳＰ１９５）、この図２４に示すＦＭ書込みタイミング検出処理を開始する。
【０２００】
そしてマイクロプロセッサ３９は、まず、最後にハードディスクドライブ４１内の書込み対象データをフラッシュメモリ２０に移行させてから、予め設定された所定時間が経過したか否かを判断する（ＳＰ２４０）。
【０２０１】
マイクロプロセッサ３９は、この判断において否定結果を得ると、ハードディスクドライブ４１に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超えたか否かを判断する（ＳＰ２４１）。
【０２０２】
そしてマイクロプロセッサ３９は、この判断において否定結果を得ると、他の処理を実行（ＳＰ２４３）した後にステップＳＰ２４０に戻り、この後ステップＳＰ２４０又はステップＳＰ２４１において肯定結果を得るまで、同様の処理を繰り返す（ＳＰ２４０−ＳＰ２４１−ＳＰ２４３−ＳＰ２４０）。
【０２０３】
やがてマイクロプロセッサ３９は、ステップＳＰ２４０又はステップＳＰ２４１の判断において肯定結果を得ると、図１４について上述した第１モード時フラッシュメモリ書込み処理と、図１７について上述した第２モード時フラッシュメモリ書込み処理とのうち、現在設定されているデータ書込みモードに対応する方を実行することにより、ハードディスクドライブ４１に格納された書込み対象データをフラッシュメモリ２０に移動させる（ＳＰ２４２）。
【０２０４】
次いで、マイクロプロセッサ３９は、他の処理を実行（ＳＰ２４３）し、この後同様の処理を繰り返す（ＳＰ２４０〜ＳＰ２４３−ＳＰ２４０）。なお、一定時間の経過または書き込みデータのデータ量を契機とする形態について上述したが、この他に、例えば、センサなどによってストレージシステム１の構成部位（ハードディスクドライブ４１、各制御部）の障害を検知したタイミングを契機として実行する形態でもよい。
【０２０５】
（１−３−３）データ読出し処理の詳細
次に、本実施の形態によるストレージシステム１におけるデータ読出し処理の詳細について説明する。
【０２０６】
本実施の形態のストレージシステム１では、データ読出しモード時、フラッシュメモリ２０に格納された読出し対象データを図４（Ｄ−１）及び図４（Ｄ−２）について上述した第１及び第２のデータ読出し方法により読み出して対応するホスト３０に送信する。
【０２０７】
図２５に示すように、第２のデータ読出し方法の場合は、読み出し対象データがフラッシュメモリ２０から読み出されて、直接ホスト３０に送信される。
【０２０８】
また、第１のデータ読出し方法の場合は、読出し対象データがキャッシュメモリ３４に存在するとき、読出し対象データがキャッシュメモリ３４から読み出されてホスト３０に送信される。また、読出し対象データがキャッシュメモリ３４に存在せず、ハードディスクドライブ４１またはフラッシュメモリ２０に存在するとき、読出し対象データがハードディスクドライブ４１またはフラッシュメモリ２０から読み出された後、キャッシュメモリ３４を介してホスト３０に送信される。
【０２０９】
以上の第１及び第２のデータ読出し方法は、ストレージシステム１の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト３０からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機（図示せず）が選択して、指定する。また、ストレージシステム１の稼動中の任意の契機において、マイクロプロセッサ３９が自動的に選択する形態であってもよい。例えば、キャッシュメモリ３４の読出し性能に比べてフラッシュメモリ２０の読出し性能が良い場合や、フラッシュメモリ２０に格納されるデータがランダムアクセスデータある場合は、フラッシュメモリ２０から直接読み出す第１のデータ読出し方法を設定する。また、例えば、ストレージシステムの接続部３６がクロスバススイッチの場合、第２のデータ読出し方法を設定する。
【０２１０】
なお、選択されたデータ読出し方法の情報は、メモリ３８に登録され、各マイクロプロセッサ３９はメモリ３８にアクセスすることで、データ読出し方法を参照する。
【０２１１】
図２６は、上述のデータ読出しモード時におけるストレージシステム１での処理の流れを示している。
【０２１２】
すなわち、ストレージシステム１では、ホスト３０からデータ読出し要求が与えられると、当該データ読出し要求がチャネル制御部３１からマイクロプロセッサ３９に転送される。
【０２１３】
マイクロプロセッサ３９は、このデータ読出し要求を受信すると、まず、現在、データ読出し方法として上述の第１及び第２のデータ読出し方法のいずれが設定されているかを判定する（ＳＰ２５０）。
【０２１４】
そしてマイクロプロセッサ３９は、かかるデータ読出し方法として第１のデータ読出し方法が設定されていると判定した場合、メモリ３８に格納されたデータ管理テーブル５０（図５）における対応する「ＣＭヒットミス情報」フィールド５０Ｂ及び「ＨＤＤヒットミス情報」フィールド５０Ｃを参照して、読出し対象データがキャッシュメモリ３４及びハードディスクドライブ４１のいずれかに存在するか否かを判定する（ＳＰ２５１）。
【０２１５】
そしてマイクロプロセッサ３９は、かかる読出し対象データがキャッシュメモリ３４上に存在すると判定した場合には（キャッシュヒット）、これに応じてキャッシュメモリ制御部３５及びチャネル制御部３１を制御する。この結果、キャッシュメモリ制御部３５は、読出し対象データをキャッシュメモリ３４から読み出してチャネル制御部３１に送信する一方、チャネル制御部３１は、キャッシュメモリ制御部３５から与えられるかかる読出し対象データを順次対応するホスト３０に転送する（ＳＰ２５２）。
【０２１６】
一方、マイクロプロセッサ３９は、ステップＳＰ２５１において、かかる読出し対象データがハードディスクドライブ４１上に存在すると判定した場合には（ＨＤＤヒット）、ディスク制御部３２及びキャッシュメモリ制御部３５を制御して、この読出し対象データをハードディスクドライブ４１からキャッシュメモリ３４に移動させる（ＳＰ２５３）。
【０２１７】
またマイクロプロセッサ３９は、メモリ３８にアクセスして、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたＣＭヒットミス情報を「ヒット」、対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたＨＤＤヒットミス情報を「ミス」にそれぞれ設定する（ＳＰ２５４）。
【０２１８】
さらにマイクロプロセッサ３９は、ステップＳＰ２５２と同様にキャッシュメモリ制御部３５及びチャネル制御部３１を制御する。この結果、キャッシュメモリ３４に移動された読出し対象データがチャネル制御部３１を介して対応するホスト３０に転送される（ＳＰ２５７）。
【０２１９】
他方、マイクロプロセッサ３９は、ステップＳＰ２５１において、読出し対象データがキャッシュメモリ３４上及びハードディスクドライブ４１上のいずれにも存在しないと判定した場合には（キャッシュミス及びＨＤＤミス）、フラッシュメモリ制御部３３及びキャッシュメモリ制御部３５を制御して、当該読出し対象データをフラッシュメモリ２０からキャッシュメモリ３４に移動させる（ＳＰ２５５）。
【０２２０】
またマイクロプロセッサ３９は、メモリ３８にアクセスして、データ管理テーブル５０上の対応する「ＣＭヒットミス情報」フィールド５０Ｂに格納されたＣＭヒットミス情報を「ヒット」、対応する「ＨＤＤヒットミス情報」フィールド５０Ｃに格納されたＨＤＤヒットミス情報を「ミス」にそれぞれ設定する（ＳＰ２５６）。
【０２２１】
そしてストレージシステム１では、この後、キャッシュメモリ３４に格納された読出し対象データが読み出されてチャネル制御部３１を介して対応するホスト３０に転送される（ＳＰ２５７）。
【０２２２】
これに対して、マイクロプロセッサ３９は、ステップＳＰ２５０において、現在、データ読出し方法として第２のデータ読出し方法が設定されていると判定した場合、フラッシュメモリ制御部３３及びチャネル制御部３１を制御することにより、フラッシュメモリ２０に格納された読出し対象データをチャネル制御部３１を介して対応するホスト３０に転送させる（ＳＰ２５８）。
【０２２３】
（１−３―４）本ストレージシステムにおけるデータ保護
次に、ストレージシステム１におけるデータ保護方法について説明する。
【０２２４】
フラッシュメモリ２０は、半導体メモリであるため、メモリモジュール２１（図２）内において１つのフラッシュメモリチップ２０の故障等が頻発するおそれがある。
【０２２５】
そこで、本実施の形態においては、図２７に示すように、メモリモジュール２１ごと又は数十枚のフラッシュメモリチップ２０ごとにＥＣＣ（Error Correcting Code）グループ５５を形成し、そのＥＣＣグループ５５内においてＥＣＣによるデータの保護を行なっている。この場合におけるＥＣＣ計算は、そのＥＣＣグループ５５と同じフラッシュメモリパッケージ１３内のフラッシュメモリ制御部３３が行なう。
【０２２６】
また本実施の形態においては、複数のフラッシュメモリパッケージ１３間において、各フラッシュメモリパッケージ１３内の対応するフラッシュメモリチップ２０によってパリティグループ５６を形成し、このパリティグループ５６内においてパリティによるデータ保護を行なう。この場合におけるパリティ演算は、上述のようにマイクロプロセッサ３９が行なう。
【０２２７】
（１−４）本実施の形態の効果
以上のように本実施の形態によるストレージシステム１は、フラッシュメモリ２０を記憶デバイスとして採用すると共に、その前段に当該フラッシュメモリ２０よりもデータ書込み可能回数が多いハードディスクドライブ４１をバッファとして配置するようにしているため、フラッシュメモリ２０に対するデータの書込み回数を低減させることができ、その分、フラッシュメモリ２０を長寿命化させて、フラッシュメモリ２０の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【０２２８】
またこのストレージシステム１では、ハードディスクドライブ４１の前段にさらにキャッシュメモリ３４を配置するようにしているため、ハードディスクドライブ４１をバッファとして使用した場合のデータ性能の低下を防止することができる。
【０２２９】
（２）第２の実施の形態
（２−１）本実施の形態によるストレージシステムの構成
図３との対応部分に同一符号を付した図２８は、第２の実施の形態によるストレージシステム６０を示す。このストレージシステム６０では、各チャネル制御部６１、各ディスク制御部６２及び各フラッシュメモリ制御部６３にそれぞれマイクロプロセッサ６１Ａ〜６３Ａ及びメモリ６１Ｂ〜６３Ｂが搭載されている。各メモリ６１Ｂ〜６３Ｂには、それぞれ各種制御プログラムが格納されており、これら制御プログラムをマイクロプロセッサ６１Ａ〜６３Ａが実行することにより、チャネル制御部６１、ディスク制御部７２及びフラッシュメモリ制御部６３がそれぞれ全体として後述のような各種処理を実行する。
【０２３０】
また各チャネル制御部６１、各ディスク制御部６２及び各フラッシュメモリ制御部６３は、データラインが接続部３６と接続されており、これにより第１の実施の形態のストレージシステム１と同様に、これらチャネル制御部６１、ディスク制御部６２及びフラッシュメモリ制御部６３と、キャッシュメモリ制御部３５とが接続部３６を介してデータの授受を行い得るようになされている。
【０２３１】
さらに各チャネル制御部６１、各ディスク制御部６２及び各フラッシュメモリ制御部６３は、共有メモリ制御部６４を介して共有メモリ６５と接続されている。この共有メモリ６５は、主にシステム構成情報及び各種制御プログラムなどの制御情報を記憶するために用いられる。これによりこのストレージシステム６０では、チャネル制御部６１、ディスク制御部６２及びフラッシュメモリ制御部６３がそれぞれ共有メモリ制御部６４を介して共有メモリ６５にアクセスして、当該共有メモリ６５に必要な制御情報を読み書きすることができるようになされている。
【０２３２】
（２−２）ストレージシステムにおけるデータ読書き処理
（２−２−１）データ書込み処理の詳細
次に、かかるストレージシステム６０におけるデータ読書き処理の処理内容について説明する。このストレージシステム６０は、図１０〜図２４について上述した第１〜第４のデータ書込みモードと同様の第１〜第４のデータ書込みモードを有する。
【０２３３】
この場合において、第１の実施の形態では、ストレージシステム１を一元管理する複数のマイクロプロセッサ３９（図３）の制御のもとに、チャネル制御部３１（図３）、ディスク制御部３２（図３）及びフラッシュメモリ制御部３３（図３）がキャッシュメモリ３４やハードディスクドライブ４１及びフラッシュメモリ２０へのデータの読み書きを行なっていた。
【０２３４】
これに対して本実施の形態によるストレージシステム６０は、チャネル制御部６１、ディスク制御部６２及びフラッシュメモリ制御部６３内の各マイクロプロセッサ６１Ａ〜６３Ａがそれぞれメモリ６１Ｂ〜６３Ｂに格納された制御プログラムなどの制御情報に基づいて必要な処理を実行することにより、チャネル制御部６１、ディスク制御部６２及びフラッシュメモリ制御部６３がそれぞれ自律的に順次ジョブを引き継ぎながら、対応するキャッシュメモリ３４やハードディスクドライブ４１又はフラッシュメモリ２０へのデータ読み書きを行う点を特徴としている。
【０２３５】
以下、このような第２の実施の形態によるストレージシステム６０における第１〜第４のデータ書込みモードについて説明する。
【０２３６】
（２−２−１−１）第１のデータ書込みモード
図２９及び図３０は、ストレージシステム６０における第１のデータ書込みモード時における処理の流れを示す。
【０２３７】
ストレージシステム６０においては、データ書込みモードとして第１のデータ書込みモードが設定されている場合において、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部６１が図１０のステップＳＰ２〜ステップＳＰ７について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ３４に二重書きする（ＳＰ２６０〜ＳＰ２６３）。またチャネル制御部６１は、この後図１０のステップＳＰ８と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共に、データ管理テーブル５０（図５）を更新する（ＳＰ２６４）。
【０２３８】
一方、ディスク制御部６２は、定期的に共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に登録されたことを検出すると、図１０のステップＳＰ９〜ステップＳＰ２０と同様の処理を実行することにより、かかるキャッシュメモリ３４に格納された書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に格納する（ＳＰ２６５〜ＳＰ２７５）。またディスク制御部６２は、この後図１０のステップＳＰ２３と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共に、データ管理テーブル５０を更新する（ＳＰ２７６）。
【０２３９】
続いてディスク制御部６２は、かかる「ジョブ」が共有メモリ６５に登録されたことを検出すると、キャッシュメモリ制御部３５を制御しながら、図１１のステップＳＰ２４〜ステップＳＰ２８について上述した処理と同様の処理を実行することにより、かかるハードディスクドライブ４１に格納された書込み対象データをキャッシュメモリ３４に移動させる（ＳＰ２７７〜ＳＰ２８０）。そしてディスク制御部６２は、この後続きの「ジョブ」を実行すべきことをフラッシュメモリ制御部６３に依頼する（ＳＰ２８１）。
【０２４０】
フラッシュメモリ制御部６３は、かかる「ジョブ」の依頼を受けると、図１１のステップＳＰ３１〜ステップＳＰ４０について上述した処理とほぼ同様の処理を実行することにより、ステップＳＰ２７９においてハードディスクドライブに移動された書込み対象データのパリティ（新パリティ）を生成して、これら書込み対象データ及び新パリティをフラッシュメモリ２０に移動させる（ＳＰ２８２〜ＳＰ２８８）。またフラッシュメモリ制御部７３は、この後図１１のステップＳＰ４１と同様にデータ管理テーブル５０を更新する（ＳＰ２８９）。
【０２４１】
ここで、図３１及び図３２は、このような第１のデータ書込みモード時におけるディスク制御部６２のマイクロプロセッサ６２Ａの具体的な処理内容（図３１）及びフラッシュメモリ制御部７３のマイクロプロセッサ６３Ａの具体的な処理内容（図３２）をそれぞれ示すフローチャートである。なお、第１のデータ書込みモード時におけるチャネル制御部６１のマイクロプロセッサ６１Ａの具体的な処理内容は、図１２について上述した第１モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。
【０２４２】
ディスク制御部６２のマイクロプロセッサ６２Ａは、対応する「ジョブ」が共有メモリ６５に格納されているのを検出すると、この図３１に示す第１モード時ハードディスク書込み処理を開始し、まず、共有メモリ６５から上述の「ジョブ」を読み込み（ＳＰ２９０）、この後、データ管理テーブル５０を参照して、旧書込み対象データがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ２９１）。
【０２４３】
そしてマイクロプロセッサ６２Ａは、旧書込み対象データがハードディスクドライブ４１に格納されていると判定した場合には（ＨＤＤヒット）、図１３について上述した第１モード時ハードディスク書込み処理のステップＳＰ６２〜ステップＳＰ６４−ステップＳＰ６７と同様にして、書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に移動させる（ＳＰ２９０〜ＳＰ２９７）。
【０２４４】
これに対してマイクロプロセッサ６２Ａは、旧書込み対象データがハードディスクドライブ４１に格納されていないと判定した場合には（ＨＤＤミス）、図１３のステップＳＰ６５−ステップＳＰ６６−ステップＳＰ６７と同様にして、書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に移動させる（ＳＰ２９５−ステップＳＰ２９６−ステップＳＰ２９７）。
【０２４５】
またマイクロプロセッサ６２Ａは、この後、図１３のステップＳＰ６８と同様に「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ２９８）。
【０２４６】
続いて、マイクロプロセッサ６２Ａは、図２４について上述したＦＭ書込みタイミング検出処理と同様にして、最後にハードディスクドライブ４１内の書込み対象データをフラッシュメモリ２０に移行させてから、予め設定された所定時間が経過し（第１の条件）、又はハードディスクドライブ４１に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える（第２の条件）のを待ち受ける（ＳＰ２９９）。
【０２４７】
そしてマイクロプロセッサ６２Ａは、やがて、これら２つの条件のうちのいずれか一方の条件が満たされると、図１４について上述した第１モード時フラッシュメモリ書込み処理のステップＳＰ７０〜ステップＳＰ７２と同様にして、ハードディスクドライブ４１に格納されている書込み対象データをキャッシュメモリ３４に移動させる（ＳＰ３００〜ＳＰ３０２）。またマイクロプロセッサ６２Ａは、これに続く「ジョブ」をフラッシュメモリ制御部６３に依頼し（ＳＰ３０３）、この第１モード時のハードディスク書込み処理を終了する。
【０２４８】
他方、フラッシュメモリ制御部６３のマイクロプロセッサ６３Ａは、ディスク制御部６２から上述のジョブ依頼が与えられると、図３２に示す第１モード時フラッシュメモリ書込み処理を開始し、この後図１４について上述した第１モード時フラッシュメモリ書込み処理のステップＳＰ７３〜ステップＳＰ７５と同様にして、書込み対象データのパリティ（新パリティ）を生成すると共に、これら書込み対象データ及び新パリティをフラッシュメモリ２０に移動する（ＳＰ３１０〜ＳＰ３１２）。またマイクロプロセッサ７３Ａは、図１４のステップＳＰ７６と同様にデータ管理テーブル５０を更新し（ＳＰ３１３）、この後、この第１モード時ハードディスク書込み処理を終了する。
【０２４９】
（２−２−１−２）第２のデータ書込みモード
図３３は、ストレージシステム６０の第２のデータ書込みモード時における処理の流れを示している。
【０２５０】
ストレージシステム６０においては、データ書込みモードとして第２のデータ書込みモードが設定されている場合において、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部６１が図１５のステップＳＰ８１〜ステップＳＰ８６について上述した処理とほぼ同様の処理を実行することにより、かかるデータをキャッシュメモリ３４に二重書きする（ＳＰ３２０〜ＳＰ３２３）。またチャネル制御部６１は、この後図１５のステップＳＰ８７と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共に、データ管理テーブル５０を更新する（ＳＰ３２４）。
【０２５１】
一方、ディスク制御部６２は、定期的に共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に登録されたことを検出すると、必要に応じてフラッシュメモリ制御部６３に「ジョブ」を依頼しながら、図１５のステップＳＰ８８〜ステップＳＰ１０１について上述した処理とほぼ同様の処理を実行することにより、かかるキャッシュメモリ３４に格納された書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に格納する（ＳＰ３２５〜ＳＰ３３７）。またこのディスク制御部６２は、この後図１５のステップＳＰ１０２と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共に、データ管理テーブル５０を更新する（ＳＰ３３８）。
【０２５２】
さらにディスク制御部６２は、この後、最後に書込み対象データ及び新パリティをフラッシュメモリ２０に移行してから一定時間が経過し又はハードディスクドライブ４１に所定量の書込み対象データ及び新パリティが蓄積すると、ハードディスクドライブ４１からの書込み対象データ及び新パリティの読み出しを開始し（ＳＰ３３９）、図１５のステップＳＰ１０４〜ステップＳＰ１０５と同様の処理を実行することにより、ハードディスクドライブ４１から読み出した書込み対象データ及び新パリティを順次フラッシュメモリ２０に格納する（ＳＰ３４０〜ＳＰ３４２）。またディスク制御部６２は、この後図１５のステップＳＰ１０８と同様にデータ管理テーブル５０を更新する（ＳＰ３４３）。
【０２５３】
図３４及び図３８は、このような第２のデータ書込みモード時におけるディスク制御部６２のマイクロプロセッサ６２Ａの具体的な処理内容（図３４）及びフラッシュメモリ制御部６３のマイクロプロセッサ６３Ａの具体的な処理内容（図３５）をそれぞれ示すフローチャートである。なお、第２のデータ書込みモード時におけるチャネル制御部６１のマイクロプロセッサ６１Ａの具体的な処理内容は、図１２に示す第１モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。
【０２５４】
ディスク制御部６２のマイクロプロセッサ７２Ａは、図３３のステップＳＰ３２５において対応する「ジョブ」が共有メモリ６５に格納されていることを検出すると、図３４に示す第２モード時ハードディスク書込み処理を開始し、この「ジョブ」を共有メモリ６５から読み出す。
【０２５５】
そしてマイクロプロセッサ６２Ａは、対応する旧書込み対象データ及びそのパリティ（旧パリティ）がハードディスクドライブ４１に格納されていか否かの判定を行い（ＳＰ３５１）、当該旧書込み対象データ及び旧パリティがハードディスクドライブ４１に格納されている場合には、図１６について上述した第２モード時ハードディスク書込み処理のステップＳＰ１１２−ステップＳＰ１１３−ステップＳＰ１１６−ＳＰ１１７と同様にして、これら新旧書込み対象データ及び旧パリティに基づいて書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に格納する（ＳＰ３５２−ＳＰ３５３−ＳＰ３５６−ＳＰ３５７）。
【０２５６】
これに対してマイクロプロセッサ６２Ａは、対応する旧書込み対象データ及び旧パリティがハードディスクドライブ４１に格納されていない場合には、これら旧書込み対象データ及び旧パリティをフラッシュメモリ２０からハードディスクドライブ４１に移行すべきことをフラッシュメモリ制御部６３に依頼し（ＳＰ３５４）、この後旧書込み対象データ及び旧パリティをフラッシュメモリ２０から受領する（ＳＰ３５５）。
【０２５７】
そしてマイクロプロセッサ６２Ａは、この後、このフラッシュメモリ２０から読み出された旧書込み対象データ及び旧パリティと、書込み対象データとに基づいて書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ４１に格納する（ＳＰ３５６，ＳＰ３５７）。
【０２５８】
この後、マイクロプロセッサ６２Ａは、図１６のステップＳＰ１１８と同様に、対応する「ジョブ」を共有メモリ６５に登録し、さらにデータ管理テーブル５０を更新する（ＳＰ３５８）。
【０２５９】
次いで、マイクロプロセッサ６２Ａは、図２４について上述したＦＭ書込みタイミング検出処理と同様にして、最後にハードディスクドライブ４１内の書込み対象データをフラッシュメモリ２０に移行させてから、予め設定された所定時間が経過し（第１の条件）、又はハードディスクドライブ４１に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える（第２の条件）のを待ち受ける（ＳＰ３５９）。
【０２６０】
そしてマイクロプロセッサ６２Ａは、やがて、これら２つの条件のうちのいずれか一方の条件が満たされると、図１４について上述した第１モード時フラッシュメモリ書込み処理のステップＳＰ７０〜ステップＳＰ７２と同様にして、ハードディスクドライブ４１に格納されている書込み対象データ及び新パリティを書き込むように、フラッシュメモリ制御部６３に指示するジョブを共有メモリ６５に登録し（ＳＰ３６０）、この第２モード時ハードディスク書込み処理を終了する。
【０２６１】
一方、フラッシュメモリ制御部６３のマイクロプロセッサ６３Ａは、ディスク制御部６３から書込み対象データ及び新パリティが送信されると、図３５に示す第２モード時フラッシュメモリ書込み処理を開始し、図１７について上述した第１モード時フラッシュメモリ書込み処理のステップＳＰ１２０〜ステップＳＰ１２２と同様にして、ディスク制御部６２から与えられる書込み対象データ及び新パリティを順次フラッシュメモリ２０に格納する（ＳＰ３６１〜ＳＰ３６３）。
【０２６２】
そしてマイクロプロセッサ６３Ａは、かかる書込み対象データ及び新パリティをフラッシュメモリ２０に格納し終えると、この第２モード時フラッシュメモリ書込み処理を終了する。
【０２６３】
以上の処理において、ハードディスクドライブ４１からフラッシュメモリ２０へのデータ移行は、ディスク制御部７２からフラッシュメモリ制御部７３に対する書き込み対象データおよび新パリティを送信することによって実行する形態であってもよい。また、ディスク制御部７２内のマイクロプロセッサ７２Ａが、フラッシュメモリ２０内に対する書き込み対象データおよび新パリティの格納を実行する形態であってもよい。
【０２６４】
（２−２−１−３）第３のデータ書込みモード
図３６及び図３７は、ストレージシステム６０における第３のデータ書込みモード時における処理の流れを示している。
【０２６５】
ストレージシステム６０においては、データ書込みモードとして第３のデータ書込みモードが設定されている場合において、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部６１が図１８のステップＳＰ３１〜ステップＳＰ１３４について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ３４に二重書きする（ＳＰ３７０〜ＳＰ３７２）。またチャネル制御部６１は、この後図１８のステップＳＰ１３７と同様に、対応する「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ３７４）。
【０２６６】
一方、ディスク制御部６２は、定期的に共有メモリ６５を監視しており、対応する「ジョブ」が共有メモリ６５に登録されたことを検出すると、図１８のステップＳＰ１３８〜ステップＳＰ１４２について上述した処理とほぼ同様にして、かかるキャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に二重書きする（ＳＰ３７５〜ＳＰ３７９）。
【０２６７】
またディスク制御部６２は、この後図１８のステップＳＰ１４５と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ３８０）。
【０２６８】
さらにディスク制御部６２は、この後、最後に書込み対象データ及び新パリティをフラッシュメモリ３４に移行してから一定時間が経過し又はハードディスクドライブ４１に所定量の書込み対象データ及び新パリティが蓄積すると、ハードディスクドライブ４１に格納された書込み対象データをキャッシュメモリ３４に移動させ（ＳＰ３８１〜ＳＰ３８３）、この後、フラッシュメモリ制御部６３に続きの処理を依頼（ジョブ依頼）する（ＳＰ３８５）。
【０２６９】
他方、フラッシュメモリ制御部６３は、かかるジョブ依頼を受けると、この後図１９のステップＳＰ１５３〜ステップＳＰ１６０と同様の処理を実行することにより、書込み対象データのパリティ（新パリティ）を生成し、これら書込み対象データ及び新パリティをフラッシュメモリ２０に格納する（ＳＰ３８６〜ＳＰ３９２）。またフラッシュメモリ制御部６３は、図１９のステップＳＰ１６３と同様にデータ管理テーブル５０を更新する（ＳＰ３９３）。
【０２７０】
ここで図３８は、このような第３のデータ書込みモード時におけるディスク制御部６２のマイクロプロセッサ６２Ａの具体的な処理内容を示すフローチャートである。なお、第３のデータ書込みモード時におけるチャネル制御部６１のマイクロプロセッサ６１Ａの具体的な処理内容は、図１２について上述した第１モード時キャッシュメモリ書込み処理と同様であり、当該第３のデータ書込みモード時におけるフラッシュメモリ制御部６３のマイクロプロセッサ６３Ａの具体的な処理内容は、図３２について上述した第１モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【０２７１】
ディスク制御部６２のマイクロプロセッサ６２Ａは、対応する「ジョブ」が共有メモリ６５に格納されているのを検出すると、この図３８に示す第３モード時ハードディスク書込み処理を開始し、まず、共有メモリ６５から上述の「ジョブ」を読み込み（ＳＰ４００）、この後、データ管理テーブル５０を参照して、旧書込み対象データがハードディスクドライブ４１に格納されているか否かを判定する（ＳＰ３５１）。
【０２７２】
そしてマイクロプロセッサ６２Ａは、旧書込みデータがハードディスクドライブ４１に格納されていると判定した場合には（ＨＤＤヒット）、図２０について上述した第３モード時ハードディスク書込み処理のステップＳＰ１７２及びＳＰ１７３と同様にして、キャッシュメモリ３４に格納された書込み対象データをハードディスクドライブ４１に二重書きさせる（ＳＰ４０２，ＳＰ４０３）。
【０２７３】
これに対してマイクロプロセッサ６２Ａは、旧書込みデータがハードディスクドライブ４１に格納されていないと判定した場合には（ＨＤＤミス）、図２０のステップＳＰ１７４と同様にして、かかる書込み対象データをハードディスクドライブ４１上の旧書込み対象データ上に上書きさせる（ＳＰ４０４）。
【０２７４】
そしてマイクロプロセッサ６２Ａは、この後、図２０のステップＳＰ１７５と同様に、対応する「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ４０５）。
【０２７５】
この後、かかるマイクロプロセッサ６２Ａは、図２４について上述したＦＭ書込みタイミング検出処理と同様にして、最後にハードディスクドライブ４１内の書込み対象データをフラッシュメモリ２０に移行させてから、予め設定された所定時間が経過し（第１の条件）、又はハードディスクドライブ４１に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える（第２の条件）のを待ち受ける（ＳＰ４０６）。
【０２７６】
そしてマイクロプロセッサ６２Ａは、やがて、これら２つの条件のうちのいずれか一方の条件が満たされると、図１４について上述した第１モード時フラッシュメモリ書込み処理のステップＳＰ７０〜ステップＳＰ７２と同様にして、ハードディスクドライブ４１に格納されている書込み対象データをキャッシュメモリ２０に移動させ（ＳＰ４０７〜ＳＰ４０９）、この後、続く「ジョブ」の実行をフラッシュメモリ制御部７３に依頼した後（ＳＰ４１０）、この第３モード時ハードディスク書込み処理を終了する。
【０２７７】
（２−２−１−４）第４のデータ書込みモード
図３９は、ストレージシステム６０の第４のデータ書込みモード時における処理の流れを示している。
【０２７８】
ストレージシステム６０においては、データ書込みモードとして第４のデータ書込みモードが設定されている場合において、ホスト３０からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部６１が図２１について上述した第４のデータ書込み処理のステップＳＰ１８１〜ステップＳＰ１８４について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ３４に二重書きする（ＳＰ４２０〜ＳＰ４２２）。またチャネル制御部６１は、この後図２１のステップＳＰ１８７と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ４２４）。
【０２７９】
またディスク制御部６２は、定期的に共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に登録されたことを検出すると、図２１のステップＳＰ１８８〜ステップＳＰ１９２と同様にして、かかるキャッシュメモリ３４に二重書きされたデータをハードディスクドライブ４１に二重書きする（ＳＰ４２５〜ＳＰ４２９）。またディスク制御部６２は、この後図２１のステップＳＰ１９５と同様にして、対応する「ジョブ」を共有メモリ６５に登録すると共にデータ管理テーブル５０を更新する（ＳＰ４３４）。
【０２８０】
さらにフラッシュメモリ制御部６３は、定期的に共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に登録されたことを検出すると、図２１のステップＳＰ１９６〜ステップＳＰ１９８と同様にして、かかるハードディスクドライブ４１に二重書きされた書込み対象データをフラッシュメモリ３４に二重書きする（ＳＰ４３１〜ＳＰ４３３）。またフラッシュメモリ制御部６３は、この後図２１のステップＳＰ２０１と同様にデータ管理テーブル５０を更新する（ＳＰ４３４）。
【０２８１】
なお、この第４のデータ書込みモード時において、チャネル制御部６１のマイクロプロセッサ６１Ａの具体的な処理内容は、図１２について上述した第１モード時キャッシュ書込み処理と同様であり、ディスク制御部６２のマイクロプロセッサ７２Ａの具体的な処理内容は、図３８について上述した第３モード時ハードディスク書込み処理と同様であり、フラッシュメモリ制御部６３のマイクロプロセッサ６３Ａの具体的な処理内容は、図３５について上述した第２モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【０２８２】
（２−２−２）データ読出し処理の詳細
次に、本実施の形態によるストレージシステム６０におけるデータ読出し処理の詳細について説明する。
【０２８３】
本実施の形態によるストレージシステム６０の場合、第１の実施の形態のストレージシステム１（図３）と同様に、データ読出しモードとして図４（Ｄ−１）及び図４（Ｄ−２）について上述した第１及び第２のデータ読出し方法を適用したデータ読出しモードを有している。
【０２８４】
そして本実施の形態によるストレージシステム６０の場合も、かかる第１及び第２のデータ読出し方法は、ストレージシステム１の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト３０からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機（図示せず）が選択して、指定する。また、ストレージシステム１の稼動中の任意の契機において、マイクロプロセッサ３９が自動的に選択する形態であってもよい。例えば、キャッシュメモリ３４の読出し性能に比べてフラッシュメモリ２０の読出し性能が良い場合や、フラッシュメモリ２０に格納されるデータがランダムアクセスデータある場合は、フラッシュメモリ２０から直接読み出す第１のデータ読出し方法を設定する。また、例えば、ストレージシステムの接続部３６がクロスバススイッチの場合、第２のデータ読出し方法を設定する。
【０２８５】
なお、選択されたデータ読出し方法の情報は、共有メモリ６５に登録され、各マイクロプロセッサ３９は共有メモリ６５にアクセスすることで、データ読出し方法を参照する。
【０２８６】
図４０は、このような本実施の形態によるストレージシステム６０のデータ読出しモード時における処理の流れを示すフローチャートである。
【０２８７】
本ストレージシステム１において、ホスト３０からデータ読出し要求が与えられた場合、そのデータ読出し要求を受信したチャネル制御部６１のマイクロプロセッサ６１Ａは、まず、現在、データ読出し方法として上述の第１及び第２のデータ読出し方法のいずれが設定されているかを判定する（ＳＰ４４０）。
【０２８８】
そして、かかるマイクロプロセッサ６１Ａは、かかるデータ読出し方法として第１のデータ読出し方法が設定されていると判定した場合、図２６について上述した第１のデータ読出し処理のステップＳＰ２５０と同様にしてヒットミス判定を行なう（ＳＰ４４１）。
【０２８９】
マイクロプロセッサ６１Ａは、読出し対象データがキャッシュメモリ３４に格納されていると判定した場合には（キャッシュヒット）、これに応じてキャッシュ制御部３５を制御することにより、その読出し対象データをキャッシュメモリ３４から読み出させてホスト３０に送信させる（ＳＰ４４２）。
【０２９０】
一方、マイクロプロセッサ６１Ａは、ステップＳＰ４４１において、読出し対象データがハードディスクドライブ４１に格納されていると判定した場合には（ＨＤＤヒット）、これに応じた「ジョブ」を共有メモリ６５に格納する（ＳＰ４４３）。
【０２９１】
このときディスク制御部６２のマイクロプロセッサ６２Ａは、共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に格納されたことを検出すると、この「ジョブ」を読み込み（ＳＰ４４４）、この後、読出し対象データをハードディスクドライブ４１から読み出してキャッシュメモリ制御部３５に転送する（ＳＰ４４５）。かくしてキャッシュメモリ制御部３５は、ディスク制御部６２から与えられる読出し対象データをキャッシュメモリ３４に格納する。
【０２９２】
さらにディスク制御部６２のマイクロプロセッサ６２Ａは、上述のような読出し対象データのハードディスクドライブ４１からキャッシュメモリ３４への移行に応じた「ジョブ」を共有メモリ６５に登録すると共に、これに応じてデータ管理テーブル５０を更新する（ＳＰ４４６）。
【０２９３】
このときチャネル制御部６１のマイクロプロセッサ６１Ａは、共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に格納されたことを検出すると、この「ジョブ」を共有メモリ６５から読み込み（ＳＰ４４７）、読み込んだ「ジョブ」に基づいて、読出し対象データをキャッシュメモリ３４から読み出してホスト３０に送信する（ＳＰ４４８）。
【０２９４】
他方、かかるチャネル制御部６１のマイクロプロセッサ６１Ａは、ステップＳＰ４４１において、読出し対象データがキャッシュメモリ３４及びハードディスクドライブ４１のいずれにも格納されていないと判定した場合には（キャッシュミス、ＨＤＤミス）、これに応じた「ジョブ」を共有メモリ６５に登録する（ＳＰ４４９）。
【０２９５】
このときフラッシュメモリ制御部６３のマイクロプロセッサ６３Ａは、共有メモリ６５を監視しており、かかる「ジョブ」が共有メモリ６５に格納されたことを検出すると、この「ジョブ」を共有メモリ６５から読み込み（ＳＰ４５０）、この「ジョブ」に基づいて、読出し対象データをフラッシュメモリ２０から読み出してキャッシュメモリ３４に移行させる（ＳＰ４５１）。かくして、この読出し対象データは、この後チャネル制御部６１のマイクロプロセッサ６１Ａの制御のもとに、キャッシュメモリ３４から読み出されてホスト３０に送信される（ＳＰ４４８）。
【０２９６】
これに対してチャネル制御部６１のマイクロプロセッサ６１Ａは、ステップＳＰ４４０において、かかるデータ読出し方法として第２のデータ読出し方法が設定されていると判定した場合には、これに応じた「ジョブ」を共有メモリ６５に登録する（ＳＰ４５２）。
【０２９７】
そしてフラッシュメモリ制御部６３のマイクロプロセッサ６３Ａは、かかる「ジョブ」が共有メモリ６５に格納されたことを検出すると、この「ジョブ」を共有メモリ６５から読み込み（ＳＰ４５３）、この「ジョブ」に基づいて、読出し対象データをフラッシュメモリ２０から読み出して直接チャネル制御部６１を介してホスト３０に送信する（ＳＰ４５４）。
【０２９８】
（２−３）本実施の形態の効果
以上の構成によれば、図２８のような構成のストレージシステム６０についても第１の実施の形態によるストレージシステム１と同様に、フラッシュメモリ２０を長寿命化させて、フラッシュメモリ２０の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【０２９９】
（３）第３の実施の形態
（３−１）第３の実施の形態によるストレージシステムの構成
図３との対応部分に同一符号を付して示す図４１は、第３の実施の形態によるストレージシステム７０を示す。このストレージシステム７０は、「０系」及び「１系」の２つのコントローラ部７１Ａ，７１Ｂと、これらコントローラ部７１Ａ，７１Ｂにそれぞれ対応させて設けられたノースブリッジ７２、メモリ９３及びマイクロプロセッサ７４と、キャッシュメモリ３４、フラッシュメモリ２０及びハードディスクドライブ４１とを備えて構成される。
【０３００】
各コントローラ部７１Ａ，７１Ｂは、それぞれチャネル制御部８０、ディスク制御部８１、キャッシュメモリ制御部８２及びフラッシュメモリ制御部８３を備える。これらチャネル制御部８０、ディスク制御部８１、キャッシュメモリ制御部８２及びフラッシュメモリ制御部８３は、いずれも図３に示す第１の実施の形態によるストレージシステム１のチャネル制御部３１、ディスク制御部３２、キャッシュメモリ制御部３５及びフラッシュメモリ制御部３３と同様の機能を有するものであるので、ここでの説明は省略する。
【０３０１】
またノースブリッジ７２、メモリ７３及びマイクロプロセッサ７４も、それぞれ第１の実施の形態によるストレージシステム１のノースブリッジ３７、メモリ４０及びマイクロプロセッサ３９と同様の機能を有するものであるので、ここでの説明は省略する。なお図４１において、太線は制御ライン、細線はデータラインをそれぞれ示している。
【０３０２】
従って、このストレージシステム７０においては、図１０〜図２６について上述した第１の実施の形態のストレージシステム１と同様のデータ書込み処理及びデータ読出し処理が行われることとなる。
【０３０３】
（３−２）本実施の形態の効果
以上の構成によれば、図４１のような構成のストレージシステム７０についても第１の実施の形態によるストレージシステム１と同様に、フラッシュメモリ２０を長寿命化させて、フラッシュメモリ２０の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【０３０４】
（４）他の実施の形態
なお上述の第１〜第３の実施の形態においては、フラッシュメモリパッケージ１３をハードディスクドライブユニット１２との互換を考慮せずに作成するようにした場合について述べたが、本発明はこれに限らず、例えば図１との対応部分に同一符号を付した図４２に示すように、フラッシュメモリパッケージ９０とハードディスクドライブ４１との互換性をもたせるように、フラッシュメモリパッケージ９０及びハードディスクドライブ４１を同じ大きさ及び同じ形状に形成するようにしてもよい。
【０３０５】
また上述の第１及び第２の実施の形態においては、フラッシュメモリ２０よりもデータ書込み可能回数が多いディスク状記憶デバイスとしてハードディスクドライブ４１を適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のディスク状記憶デバイスを広く適用することができる。
【０３０６】
さらに上述の第１及び第３の実施の形態においては、フラッシュメモリ２０に対するデータの読み書きを制御する第１の制御部をフラッシュメモリ制御部３３及びマイクロプロセッサ３９により構成し、第２の実施の形態においては、かかる第１の制御部をフラッシュメモリ制御部６１により構成するようにした場合について述べたが、かかる第１の制御部の構成としては、この他種々の構成を広く適用することができる。
【０３０７】
同様に、上述の第１及び第３の実施の形態においては、ハードディスクドライブ４１に対するデータの読み書きを制御する第２の制御部をディスク制御部３２及びマイクロプロセッサ３９により構成し、第２の実施の形態においては、かかる第２の制御部をディスク制御部６２により構成するようにした場合について述べたが、かかる第２の制御部の構成としては、この他種々の構成を広く適用することができる。
【０３０８】
さらに上述の第１〜第３の実施の形態においては、キャッシュメモリ３４に対するデータの読み書きを制御する第３の制御部をキャッシュメモリ制御部３５及びマイクロプロセッサ３９により構成するようにした場合について述べたが、かかる第３の制御部の構成としては、この他種々の構成を広く適用することができる。
【０３０９】
なお、上述の第１〜第３の実施の形態においては、図４（Ａ）に示すように、ホスト３０から送信された書込み対象データは、キャッシュメモリ３４に格納された後、ハードディスクドライブ４１を経由して、所定のタイミングでフラッシュメモリ２０に移行される。ここで、キャッシュメモリ３４の容量が大きい場合や、データの種類やアクセス特性によっては、キャッシュメモリ３４からフラッシュメモリ２０にデータを移行する形態であってもよい。また、上述した実施の形態におけるストレージシステム１、ストレージシステム６０、またはストレージシステム７０の構成において、データや制御情報の送受信は、実現可能な全ての構成部位間で実行することができる。
【産業上の利用可能性】
【０３１０】
本発明は、各種用途に用いられる種々のストレージシステムに広く適用することができる。
【図面の簡単な説明】
【０３１１】
【図１】第１〜第５の実施の形態によるストレージシステムの外観構成を略線的に示す斜視図である。
【図２】フラッシュメモリパッケージの構成を略線的に示す斜視図である。
【図３】第１の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図４】（Ａ）‐（Ｄ−２）は、データ読書き処理の概要説明に供する概念図である。
【図５】データ管理テーブルを示す図表である。
【図６】第１の実施の形態の第１のデータ書込みモードの概要説明に供する概念図である。
【図７】第１の実施の形態の第２のデータ書込みモードの概要説明に供する概念図である。
【図８】第１の実施の形態の第３のデータ書込みモードの概要説明に供する概念図である。
【図９】第１の実施の形態の第４のデータ書込みモードの概要説明に供する概念図である。
【図１０】第１の実施の形態の第１のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図１１】第１の実施の形態の第１のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図１２】第１の実施の形態の第１のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図１３】第１の実施の形態の第１のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図１４】第１の実施の形態の第１のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図１５】第１の実施の形態の第２のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図１６】第１の実施の形態の第２のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図１７】第１の実施の形態の第２のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図１８】第１の実施の形態の第３のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図１９】第１の実施の形態の第３のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図２０】第１の実施の形態の第３のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図２１】第１の実施の形態の第４のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図２２】ＨＤＤデータ移行処理の説明に供するフローチャートである。
【図２３】ＦＭデータ移行処理の説明に供するフローチャートである。
【図２４】ＦＭ書込みタイミング検出処理の説明に供するフローチャートである。
【図２５】第１の実施の形態におけるデータ読出しモード時の読出しデータの流れを示す概念図である。
【図２６】第１の実施の形態のデータ読出しモード時におけるストレージシステムでの処理の流れを示すフローチャートである。
【図２７】ストレージシステムにおけるデータ保護の説明に供する概念図である。
【図２８】第２の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図２９】第２の実施の形態の第１のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３０】第２の実施の形態の第１のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３１】第２の実施の形態の第１のデータ書込みモード時におけるディスク制御部のマイクロプロセッサの処理内容の説明に供するフローチャートである。
【図３２】第２の実施の形態の第１のデータ書込みモード時におけるフラッシュメモリ制御部の処理内容の説明に供するフローチャートである。
【図３３】第２の実施の形態の第２のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３４】第２の実施の形態の第２のデータ書込みモード時におけるディスク制御部の処理内容の説明に供するフローチャートである。
【図３５】第２の実施の形態の第２のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３６】第２の実施の形態の第３のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３７】第２の実施の形態の第３のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図３８】第２の実施の形態の第３のデータ書込みモード時におけるディスク制御部の処理内容の説明に供するフローチャートである。
【図３９】第２の実施の形態の第４のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図４０】第２の実施の形態のデータ読出しモード時における処理の流れを示すフローチャートである。
【図４１】第３の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図４２】他の実施の形態によるストレージシステムの外観構成を略線的に示す斜視図である。
【符号の説明】
【０３１２】
１，６０，７０……ストレージシステム、１２……ハードディスクドライブユニット、１３……フラッシュメモリパッケージ、２０……フラッシュメモリ（フラッシュメモリチップ）、２１……フラッシュメモリモジュール、２３……フラッシュメモリ制御ＬＳＩ、３０……ホスト、３１，６１，８０……チャネル制御部、３２，６２，８１……ディスク制御部、３３，６３，８３……フラッシュメモリ制御部、３４……キャッシュメモリ、３５，８２……キャッシュメモリ制御部、３６……接続部、３８……メモリ、３９，６１Ａ〜６３Ａ，７４……マイクロプロセッサ、４０，６１Ｂ〜６３Ｂ，７３……メモリ、４１……ハードディスク、５０……データ管理テーブル、５５……ＥＣＣグループ、５６……パリティグループ。
【図１】
2008097225.tif 000003
【図２】
2008097225.tif 000004
【図３】
2008097225.tif 000005
【図４】
2008097225.tif 000006
【図５】
2008097225.tif 000007
【図６】
2008097225.tif 000008
【図７】
2008097225.tif 000009
【図８】
2008097225.tif 000010
【図９】
2008097225.tif 000011
【図１０】
2008097225.tif 000012
【図１１】
2008097225.tif 000013
【図１２】
2008097225.tif 000014
【図１３】
2008097225.tif 000015
【図１４】
2008097225.tif 000016
【図１５】
2008097225.tif 000017
【図１６】
2008097225.tif 000018
【図１７】
2008097225.tif 000019
【図１８】
2008097225.tif 000020
【図１９】
2008097225.tif 000021
【図２０】
2008097225.tif 000022
【図２１】
2008097225.tif 000023
【図２２】
2008097225.tif 000024
【図２３】
2008097225.tif 000025
【図２４】
2008097225.tif 000026
【図２５】
2008097225.tif 000027
【図２６】
2008097225.tif 000028
【図２７】
2008097225.tif 000029
【図２８】
2008097225.tif 000030
【図２９】
2008097225.tif 000031
【図３０】
2008097225.tif 000032
【図３１】
2008097225.tif 000033
【図３２】
2008097225.tif 000034
【図３３】
2008097225.tif 000035
【図３４】
2008097225.tif 000036
【図３５】
2008097225.tif 000037
【図３６】
2008097225.tif 000038
【図３７】
2008097225.tif 000039
【図３８】
2008097225.tif 000040
【図３９】
2008097225.tif 000041
【図４０】
2008097225.tif 000042
【図４１】
2008097225.tif 000043
【図４２】
2008097225.tif 000044