(57)【要約】【解決課題】ライトデータを高性能側デバイスでキャッシュしてから、そのデータを高性能側デバイスから低性能側デバイスへコピーすると、低性能側デバイス内のフラッシュメモリの書き換え寿命が浪費される。【解決手段】低性能側の不揮発性メモリデバイス内部のメモリ管理単位のサイズを保持し、ライトデータのサイズとメモリ管理単位のサイズとを比較する。ライトデータのほうが小さいときは、ライトデータを高性能側の不揮発性メモリデバイスへキャッシュし、そうでなければ低性能側デバイスへ書き込む。そして、高性能側デバイスにキャッシュされた複数のライトデータのアドレス値を参照して、キャッシュされたアドレス値がメモリ管理単位のサイズだけ連続しているアドレス区間を選択し、そのアドレス区間内に含まれるデータを、高性能側デバイスから低性能側デバイスへコピーする。【選択図】図８
2009199199.tif 000002
【特許請求の範囲】
【請求項１】
所定の性能である第１の不揮発性メモリデバイスと、前記所定の性能より高性能である第２の不揮発性メモリデバイスとを含んで構成されるストレージシステムであって、
前記第１の不揮発性メモリデバイス内のメモリを管理するメモリ管理単位のサイズを保持する保持部と、
上位装置からのライト要求に応答して、そのライト要求されたライトデータのサイズと前記メモリ管理単位のサイズを比較し、前記ライトデータのサイズが前記メモリ管理単位のサイズより小さいときは、前記ライトデータを前記第２の不揮発性メモリデバイスへ一時的に書き込み、前記ライトデータのサイズが前記メモリ管理単位のサイズ以上のときは、前記ライトデータを前記第１の不揮発性メモリデバイスへ書き込む制御部と、
を備えることを特徴とするストレージシステム。
【請求項２】
前記制御部は、前記第２の不揮発性メモリデバイスに一時的に書き込まれた複数の前記ライトデータのアドレス値を参照し、その参照したアドレス値が前記メモリ管理単位のサイズだけ連続しているアドレス区間を選択し、その選択されたアドレス区間に含まれるライトデータを前記第２の不揮発性メモリデバイスから前記第１のメモリデバイスへコピーすることを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記制御部は、前記第２の不揮発性メモリデバイスに一時的に書き込まれた複数の前記ライトデータのアドレス値を参照し、前記メモリ管理単位サイズ以下で、前記アドレス値を最も多く含むアドレス区間を選択し、その選択されたアドレス区間に含まれるライトデータを前記第２の不揮発性メモリデバイスから読み出し、前記アドレス区間内に含むことができるライトデータを前記第１の不揮発性メモリデバイスから読み出し、これら読み出したライトデータから連続データを作成し、その作成した連続データを前記第１の不揮発性メモリデバイスへ書き込むことを特徴とする請求項１記載のストレージシステム。
【請求項４】
前記第１の不揮発性メモリデバイスから読み出されるライトデータは、前記第２の不揮発性メモリデバイスから読み出されるライトデータと連続させたときに、前記アドレス区間に格納されるデータ量以下となるデータが読み出されることを特徴とする請求項３記載のストレージシステム。
【請求項５】
前記第２の不揮発性メモリデバイスのメモリ管理単位のサイズは、前記第１の不揮発性メモリデバイスのメモリ管理単位のサイズより小さいことを特徴とする請求項１記載のストレージシステム。
【請求項６】
前記第１の不揮発性メモリデバイスの性能と前記第２の不揮発性メモリデバイスの性能との差は、少なくともライト性能の差を含むことを特徴とする請求項１記載のストレージシステム。
【請求項７】
前記第１の不揮発性デバイスはコンシューマ向けの半導体記憶装置であり、前記第２の不揮発性メモリデバイスは企業向けの半導体記憶装置であることを特徴とする請求項１記載のストレージシステム。
【請求項８】
所定の性能である第１の不揮発性メモリデバイスと、前記所定の性能より高性能である第２の不揮発性メモリデバイスとを含んで構成されるストレージシステムのデータライト方法であって、
前記第１の不揮発性メモリデバイス内のメモリを管理するメモリ管理単位のサイズを保持するステップと、
上位装置からのライト要求に応答して、そのライト要求されたライトデータのサイズと前記メモリ管理単位のサイズを比較するステップと、
前記ライトデータのサイズが前記メモリ管理単位のサイズより小さいときは、前記ライトデータを前記第２の不揮発性メモリデバイスへ一時的に書き込み、前記ライトデータのサイズが前記メモリ管理単位のサイズ以上のときは、前記ライトデータを前記第１の不揮発性メモリデバイスへ書き込むステップと、
を含むことを特徴とするストレージシステムのデータライト方法。
【請求項９】
前記第２の不揮発性メモリデバイスに一時的に書き込まれた複数の前記ライトデータのアドレス値を参照するステップと、
その参照したアドレス値が前記メモリ管理単位のサイズだけ連続しているアドレス区間を選択するステップと、
その選択されたアドレス区間に含まれるライトデータを前記第２の不揮発性メモリデバイスから前記第１のメモリデバイスへコピーするステップと、
を含むことを特徴とする請求項８記載のストレージシステムのデータライト方法。
【請求項１０】
前記第２の不揮発性メモリデバイスに一時的に書き込まれた複数の前記ライトデータのアドレス値を参照するステップと、
前記メモリ管理単位サイズ以下で、前記アドレス値を最も多く含むアドレス区間を選択し、その選択されたアドレス区間に含まれるライトデータを前記第２の不揮発性メモリデバイスから読み出すステップと、
前記アドレス区間内に含むことができるライトデータを前記第１の不揮発性メモリデバイスから読み出すステップと、
これら読み出したライトデータから連続データを作成し、その作成した連続データを前記第１の不揮発性メモリデバイスへ書き込むステップと、
を含むことを特徴とする請求項８記載のストレージシステムのデータライト方法。
【請求項１１】
前記第１の不揮発性メモリデバイスから読み出されるライトデータは、前記第２の不揮発性メモリデバイスから読み出されるライトデータと連続させたときに、前記アドレス区間に格納されるデータ量以下となるデータが読み出されることを特徴とする請求項１０記載のストレージシステムのデータライト方法。
【請求項１２】
前記第２の不揮発性メモリデバイスのメモリ管理単位のサイズは、前記第１の不揮発性メモリデバイスのメモリ管理単位のサイズより小さいことを特徴とする請求項８記載のストレージシステムのデータライト方法。
【請求項１３】
前記第１の不揮発性メモリデバイスの性能と前記第２の不揮発性メモリデバイスの性能との差は、少なくともライト性能の差を含むことを特徴とする請求項８記載のストレージシステムのデータライト方法。
【請求項１４】
前記第１の不揮発性デバイスはコンシューマ向けの半導体記憶装置であり、前記第２の不揮発性メモリデバイスは企業向けの半導体記憶装置であることを特徴とする請求項８記載のストレージシステムのデータライト方法。
【請求項１５】
ストレージシステムに用いられるアダプタ装置であって、
所定の性能である第１の不揮発性メモリデバイスが有するインタフェースと接続する第１のインタフェースと、
前記所定の性能より高性能である第２の不揮発性メモリデバイスが有するインタフェースと接続する第２のインタフェースと、
前記第１の不揮発性メモリデバイス内のメモリを管理するメモリ管理単位のサイズを保持する保持部と、
上位装置からのライト要求に応答して、そのライト要求されたライトデータのサイズと前記メモリ管理単位のサイズを比較し、前記ライトデータのサイズが前記メモリ管理単位のサイズより小さいときは、前記ライトデータを前記第２の不揮発性メモリデバイスへ一時的に書き込み、前記ライトデータのサイズが前記メモリ管理単位のサイズ以上のときは、前記ライトデータを前記第１の不揮発性メモリデバイスへ書き込む制御部と、
を備えることを特徴とするアダプタ装置。
【請求項１６】
前記第１のインタフェースと前記第２のインタフェースは、異なる仕様のインタフェースであり、前記第１のインタフェースが前記ストレージシステムとのインタフェースであり、
前記第２のインタフェースを前記ストレージシステムとのインタフェースと互換性を持たせるための第３のインタフェースを備えること、
を特徴とする請求項１５記載のアダプタ装置。
【請求項１７】
前記第１のインタフェースはシリアルＡＴＡインタフェースであり、前記第２のインタフェースはＳＡＳインタフェースであることを特徴とする請求項１６記載のアダプタ装置。
【請求項１８】
前記第２の不揮発性メモリデバイスのメモリ管理単位のサイズは、前記第１の不揮発性メモリデバイスのメモリ管理単位のサイズより小さいことを特徴とする請求項１５記載のアダプタ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に書き換え可能な不揮発性メモリを使用した半導体記憶装置を搭載したストレージシステム及びそのデータライト方法に関し、特に半導体記憶装置のライト性能特性に応じてデータ格納をするストレージシステム及びそのデータライト方法に関する。
【背景技術】
【０００２】
特許文献１には、性能差のある不揮発性デバイス２種からなる記憶装置においてライト性能を向上させる方法が開示されている。その方法では、低性能側の不揮発性デバイスがライト可能になるまで期間は、高性能側の不揮発性デバイスで所定量のライトデータをキャッシュし、後からそのデータを低性能側デバイスへコピーし，それ以降のライト先も低性能側デバイスへスイッチする。例えば、高性能側デバイスはフラッシュメモリであり、低性能側デバイスは磁気ディスクである。また、上記の「ライト可能になるまで期間」は磁気ヘッドのシーク時間に相当する。このような記憶装置はハイブリッドハードディスクと呼ばれている。
【特許文献１】米国登録特許７１３６９７３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
いま、高性能側・低性能側デバイスともフラッシュメモリを用いた半導体記憶装置であるようなストレージシステムに、特許文献１のライト方法を適用した場合を考える。この方法では、高性能側デバイスから低性能側デバイスへデータコピーを行う制御において、そのデータサイズの最適性が考慮されていない。それゆえ、当該ストレージシステムに発生しうる問題として、低性能側デバイス内のフラッシュメモリの書き換え寿命（１メモリブロック当たり約１０万回）が浪費される恐れがある。これは、一般に低性能のフラッシュメモリ記憶装置は、内部の制御ファームウェアで既定されたメモリ管理単位（例えば６４ＫＢ）で内部フラッシュメモリの書き換えるように設計されていることに起因する。例えば、上記のデバイス間コピーサイズが４ＫＢである場合には、変更されない周辺データ６０ＫＢを加えた６４ＫＢのデータが内部フラッシュメモリの空き領域にプログラムされる。つまり、低性能側デバイス内部で無駄なデータプログラムが発生する。これが、低性能側デバイスの書き換え寿命の浪費となる。一方、高性能側デバイスは、一般に外部からのデータライトに対して必要最低限のデータを内部フラッシュメモリにプログラムするような制御を実施する。そのため、高性能側デバイス内部でこのような無駄なデータプログラムはほとんど発生しない。
【０００４】
本発明は、以上の点を考慮してなされたもので、小さなサイズのライトデータを高性能側デバイスで複数回キャッシュしてから低性能側デバイスにライトし、平均のライト処理時間を削減し、ライト性能を向上させたストレージシステム及びそのデータライト方法を提案しようとするものである。
【課題を解決するための手段】
【０００５】
本発明は、所定の性能である第１の不揮発性メモリデバイスと、前記所定の性能より高性能である第２の不揮発性メモリデバイスとを含んで構成されるストレージシステムであって、前記第１の不揮発性メモリデバイス内のメモリを管理するメモリ管理単位のサイズを保持する保持部と、上位装置からのライト要求に応答して、そのライト要求されたライトデータのサイズと前記メモリ管理単位のサイズを比較し、前記ライトデータのサイズが前記メモリ管理単位のサイズより小さいときは、前記ライトデータを前記第２の不揮発性メモリデバイスへ一時的に書き込み、前記ライトデータのサイズが前記メモリ管理単位のサイズ以上のときは、前記ライトデータを前記第１の不揮発性メモリデバイスへ書き込む制御部とを備えるストレージシステム及びそのデータライト方法である。
【０００６】
さらに具体的には、性能差のある２種の不揮発性メモリデバイスから構成されるストレージシステムにおいて、以下を特徴とするデータライト方法を提供する。まず、低性能側の不揮発性メモリデバイス内部のメモリ管理単位のサイズを保持する。次に、前記ストレージシステムに対するライト要求に応答して以下を行う。（１）ライトデータのサイズと前記メモリ管理単位のサイズとを比較する。（２）当該ライトデータのほうが小さいときは、当該ライトデータを高性能側の不揮発性メモリデバイスへキャッシュし、そうでなければ前記低性能側デバイスへ書き込む。（３）次の（Ａ）（Ｂ）のいずれか又は両方を行う。（Ａ）前記高性能側デバイスにキャッシュされた複数の前記ライトデータのアドレス値を参照して、当該アドレス値が前記メモリ管理単位のサイズだけ連続しているアドレス区間を選択し、当該アドレス区間内に含まれる前記ライトデータを、前記高性能側デバイスから前記低性能側デバイスへコピーする。（Ｂ）前記高性能側デバイスにキャッシュされた複数の前記ライトデータのアドレス値を参照して、前記メモリ管理単位のサイズ以下で、前記アドレス値を最も多く含むアドレス区間を選択し、当該アドレス区間内に含むことができる前記ライトデータを前記高性能側デバイスから読み出し、ライトデータを前記低性能側デバイスから読み出し、当該アドレス区間の連続データを作成し、当該連続データを前記低性能側デバイスへライトする。
【発明の効果】
【０００７】
本発明によれば、性能差のある２種の不揮発性メモリデバイスから構成されるストレージシステムにおいて、小さなサイズのライトデータを高性能側デバイスで複数回キャッシュしてから低性能側デバイスにライトするため、平均のライト処理時間が削減され、ストレージシステムのライト性能が向上するという効果を奏する。
【０００８】
さらに、そのキャッシュデータを低性能側デバイスへライトする際には、低性能側デバイス内のフラッシュメモリの書き換え寿命が浪費されるようなデータサイズのライトが回避されるため、ストレージシステム内のフラッシュメモリの書き換え寿命が改善されるという効果を奏する。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の各実施形態について説明する。
まず、本発明を適用するストレージシステムにおいて、ユーザデータ記憶媒体として搭載される２種類の半導体記憶装置について、それぞれの内部ハードウェア構成とライト性能特性について図１〜図４を用いて説明する。以下、半導体記憶装置を“Solid State Disk”と呼び、ＳＳＤと略す。
【００１０】
１つ目のＳＳＤは一般消費者向けに製品化されているコンシューマ向けＳＳＤ（以下、Ｃ−ＳＳＤと略す。）である。２つ目のＳＳＤは企業向けに製品化されているエンタプライズ向けＳＳＤ（以下、Ｅ−ＳＳＤと略す。）である。Ｃ−ＳＳＤは原価や利益率をできるだけ安くして携帯型電子機器など向けの記憶装置市場に大量に流通させ、薄利多売で利益を得ることを意図した製品である。製造コストを安く抑えることを優先して安価なプロセッサを使用したり、メモリリソースを少なくしたりするため、性能はＥ−ＳＳＤより低い。
【００１１】
一方、Ｅ−ＳＳＤは性能をできるだけ高くしてハイエンドの顧客要求を満足させることを意図した製品である。性能を高めることを優先して高価な部品を使用したり、高機能な制御ファームウェアを実装したりするため、Ｃ−ＳＳＤより製造コストが高い。業務用サーバ向け記憶装置などを主な応用先としており市場流通量があまり多くないため、利益率も高く設定されている。その結果、一般的なＥ−ＳＳＤ価格は同容量のＣ−ＳＳＤ価格の約５倍である。これは、コンシューマ向けハードディスクドライブとエンタプライズ向けハードディスクドライブに見られる価格差の存在と同様である。
【００１２】
図１はＣ−ＳＳＤ１００のハードウェア構成を示す。Ｃ−ＳＳＤ１００は、メモリコントローラ１１０、およびフラッシュメモリ１２０を備える。フラッシュメモリ１２０はデータを不揮発に記憶する。メモリコントローラ１１０は、フラッシュメモリ１２０のデータの「リード」、「プログラム」、および「消去」を実行する。メモリコントローラ１１０は、プロセッサ１１２、ＳＡＴＡ（シリアルＡＴＡ）インタフェース１１１、データ転送部１１５、ＲＡＭ１１３、およびＲＯＭ１１４を備える。データ転送部１１５はバスロジックやフラッシュメモリ１２０の制御ロジックを含み、その他の構成要素１１１〜１１４やフラッシュメモリ１２０と接続する。プロセッサ１１２はＲＯＭ１１４に格納された制御ファームウェアに従ってデータ転送部１１５を制御する。ＲＡＭ１１３は転送データ用バッファメモリや制御ファームウェア用ワークメモリとして機能する。また、フラッシュメモリ１２０は複数のフラッシュメモリチップ１２１で構成される。Ｃ−ＳＳＤ１００全体を動作させる電源はＳＡＴＡインタフェース１１１から外部供給される。
【００１３】
図２はＥ−ＳＳＤ２００のハードウェア構成を示す。Ｅ−ＳＳＤ２００は、メモリコントローラ２１０、フラッシュメモリ２２０、およびバックアップ電源２３０を備える。フラッシュメモリ２２０はデータを不揮発に記憶する。メモリコントローラ２１０は、フラッシュメモリ２２０のデータの「リード」、「プログラム」、および「消去」を実行する。メモリコントローラ２１０は、プロセッサ２１２、ＳＡＳ（シリアル・アタッチド・ＳＣＳＩ）インタフェース２１１、データ転送部２１５、ＲＡＭ２１３、およびＲＯＭ２１４を備える。データ転送部２１５はバスロジックやフラッシュメモリ２２０の制御ロジックを含み、その他の構成要素２１１〜２１４やフラッシュメモリ２２０と接続する。プロセッサ２１２はＲＯＭ２１４に格納された制御ファームウェアに従ってデータ転送部２１５を制御する。ＲＡＭ２１３は転送データ用バッファメモリや制御ファームウェア用ワークメモリとして機能する。また、フラッシュメモリ２２０は複数のフラッシュメモリチップ２２１で構成される。
【００１４】
なお、ＳＡＳインタフェース２１１は２つのポートを備え、２つの独立したアクセスを非同期に受け入れることができる。一方のポートのアクセス経路に障害が置きても、もう一方を使ってアクセスを継続することが可能である。
【００１５】
Ｅ−ＳＳＤ２００全体を動作させる電源は、基本的にＳＡＳインタフェース２１１から外部供給されるが、外部供給が絶たれた場合にはバックアップ電源２３０から供給される。外部供給が絶たれたときにＲＡＭ２１３内にフラッシュメモリ２２０に書き込むべきデータが残っていた場合は、バックアップ電源２３０からの電力を利用してそのデータをフラッシュメモリ２２０に書き込む。そして、切断された外部供給が再開するまでは外部アクセスは受け入れない。
【００１６】
図３（ａ）を用いて、Ｃ−ＳＳＤ１００のデータライト処理方式および性能特性を説明する。
【００１７】
各フラッシュメモリチップ１２１は複数（例えば４０９６個）のメモリブロック３０１で構成される。メモリブロックはフラッシュメモリの消去単位であり、そのサイズは例えば２５６ＫＢである。１つのメモリブロック３０１を消去する所要時間は２ｍｓである。さらに、各メモリブロック３０１は複数（例えば６４個）のメモリページ３０２で構成される。メモリページはフラッシュメモリ１２０のプログラム単位であり、そのサイズは４ＫＢである。１つのメモリページ３０２をプログラムする所要時間は５００μｓ、リードする所要時間は５０μｓである。Ｃ−ＳＳＤ１００内では連続する複数（例えば１６個）のメモリページ３０２をまとめた管理単位３０３を作る。Ｃ−ＳＳＤ１００外部からアクセスするときの論理アドレス空間を、そのサイズを単位として分割し、各分割要素をフラッシュメモリ１２０全体の物理アドレス（チップ番号、ブロック番号、管理単位番号）へ対応付けする。この対応付けしたテーブルをアドレス変換テーブルと呼ぶ。このアドレス変換テーブルは、Ｃ−ＳＳＤ１００外部からのライトアクセスによって更新される。なぜなら、フラッシュメモリ１２０は構造的に上書きできない記憶素子であるからである。つまり、プログラムすべきデータは元のデータとは違う未書き込みの領域に書き、元のデータがあったメモリブロック３０１は後で消去する必要があるため、各論理アドレスのデータの物理的所在は移動せざるを得ないからである。このアドレス変換テーブルはＲＡＭ１１３上に設置される。複数（１６個）のメモリページをまとめたものを管理単位とするのは、対応付けの要素数を減らし、メモリリソース量を節約するためである。
【００１８】
いま、Ｃ−ＳＳＤ１００外部から１ＫＢのデータライトがあったとすると、まず、プロセッサ１１２は、そのデータの論理アドレスを含むアドレス区間に対応する管理単位３０４を選択し、その領域内でライト対象外の６３ＫＢデータ３０７をＲＡＭ１１３上にリードする（３０５）。そして１ＫＢのライトデータ３０６をＲＡＭ１１３上に設定し、それら６４ＫＢのデータを未書き込みの管理単位３０８にプログラムする（３０９）。リード３０５の所要時間は１６個のメモリページ３０２を読むため、１６回×５０μｓ＝０．８ｍｓである。プログラム３０９の所要時間は１６個のメモリページを書くため、１６回×５００μｓ＝８ｍｓである。つまり、Ｃ−ＳＳＤ１００外部から１ＫＢをデータライトする時にはデバイスレベルで８．８ｍｓの時間を要する。なお、実効的な平均処理時間は、ライトデータの転送時間や、時々行うメモリブロック消去時間等がこれに加算されたものである。
【００１９】
図３（ｂ）は、以上のライト方式に基づいて、Ｃ−ＳＳＤ１００におけるライトデータサイズと平均処理時間（ｍｓ）、性能（ＩＯＰＳ：１秒当たりの平均アクセス回数）との関係を表したものである。処理時間は左縦軸を用いた棒グラフ、性能は右縦軸を用いた実線グラフで示す。なお、平均処理時間はデバイスレベル処理時間とその他の処理時間（データ転送等の時間）に分けて示す。
【００２０】
管理単位のサイズ６４ＫＢより小さいデータ（ＸＫＢ）をライトした場合、Ｃ−ＳＳＤ１００内部では（６４−Ｘ）ＫＢのデータリードと６４ＫＢの管理単位データプログラムが発生するため、デバイスレベルで８〜８．８ｍｓの時間を要する。また、１２８ＫＢ、２５６ＫＢをライトした場合、Ｃ−ＳＳＤ１００内部ではプログラムすべき管理単位の個数に応じてそれぞれ１６ｍｓ、３２ｍｓの時間を要する。このように、Ｃ−ＳＳＤ１００に対する小単位のデータライトは、そのアドレス周辺データの移動を伴うため、内部のフラッシュメモリ１２０の有限な書き換え寿命は必要以上に浪費されることになる。
【００２１】
また、性能（ＩＯＰＳ）は平均処理時間の逆数として求めたものである。ライトデータのサイズが管理単位の６４ＫＢよりも大きい場合は、サイズが小さくなるにつれて性能は着実に増加するが、管理単位の６４ＫＢより小さくなると１１０  ＩＯＰＳ程度を漸近線として収束してしまう。
【００２２】
次に、図４（ａ）を用いて、Ｅ−ＳＳＤ２００のデータライト処理方式および性能特性を説明する。
【００２３】
各フラッシュメモリチップ２２１は、Ｃ−ＳＳＤ１００のフラッシュメモリチップ１２１と同じものであり、複数（例えば４０９６個）のメモリブロック３０１で構成される。各メモリブロック３０１は複数（例えば６４個）のメモリページ３０２で構成される。Ｅ−ＳＳＤ２００内では１個のメモリページ３０２を管理単位とする。Ｅ−ＳＳＤ２００外部からアクセスするときの論理アドレス空間を、メモリページ３０２を単位として分割し、各分割要素をフラッシュメモリ２２０全体の物理アドレス（チップ番号、ブロック番号、ページ番号）へ対応付けする。この対応付けをアドレス変換テーブルと呼ぶ。このアドレス変換テーブルは、Ｅ−ＳＳＤ２００外部からのライトアクセスによって更新される。また、このアドレス変換テーブルはＲＡＭ２１３上に設置される。
【００２４】
いま、Ｅ−ＳＳＤ２００外部から１ＫＢのデータライトが多数回あったとする。それらのデータはＲＡＭ２１３上に一旦バッファリングされる。そのうち、同一のページ論理アドレスに含まれる４個の１ＫＢデータ３１０〜３１３がバッファ上にあれば、それらを結合して４ＫＢのページデータ３１４を作る。そして、そのデータを未書き込みの物理ページ３１５にプログラムする（３１６）。プログラム３１６の所要時間は１個のメモリページを書くため、１回×５００μｓ＝０．５ｍｓである。これは１ＫＢライト４回分に相当するため、１回当たりの平均では約０．１３ｍｓである。つまり、Ｅ−ＳＳＤ２００外部から１ＫＢをデータライトする時にはデバイスレベルで０．１３ｍｓの時間を要する。
【００２５】
上記ライト方式において、ＲＡＭ２１３が枯渇するまでライトデータをバッファリングしても、４ＫＢのページデータ３１４が作れない場合は、フラッシュメモリ２２０から不足データをリードし、ページデータ３１４を補完する。これはライト性能低下の要因となる。つまり、ＲＡＭ２１３上にライトデータを多くバッファリングできる製品ほどライト性能が高くなる。そのため、高性能を追求したＥ−ＳＳＤ２００は大容量のＲＡＭ２１３を搭載する。
【００２６】
なお、実効的な平均処理時間は、ライトデータの転送時間や、時々行うメモリブロック消去時間等がこれに加算されたものである。
【００２７】
図４（ｂ）は、以上のライト方式に基づいて、Ｅ−ＳＳＤ２００におけるライトデータサイズと平均処理時間（ｍｓ）、性能（ＩＯＰＳ）との関係を表したものである。処理時間は左縦軸を用いた棒グラフ、性能は右縦軸を用いた実線グラフで示す。なお、平均処理時間はデバイスレベル処理時間とその他の処理時間（データ転送等の時間）に分けて示す。
【００２８】
Ｅ−ＳＳＤ２００内部ではライトすべきデータ以外のデータをできるだけフラッシュメモリ２２０にプログラムしないように制御されるため、内部のフラッシュメモリ２２０の有限な書き換え寿命は最も無駄なく消費されることになる。
【００２９】
また、性能（ＩＯＰＳ）は平均処理時間の逆数として求めたものである。性能は、ライトデータのサイズが小さくなるにつれて着実に増加し、ディスクドライブの最小ライト単位（１セクタ）である０．５ＫＢでは、１０Ｋ  ＩＯＰＳ程度に達する。これはＣ−ＳＳＤ１００の最大性能の約１００倍に相当する。
【００３０】
さて、以上に示したＣ−ＳＳＤ１００とＥ−ＳＳＤ２００の特徴を踏まえて、本発明の実施形態を詳細に説明する。
【００３１】
図５は、本発明を適用したストレージシステム５００の内部構成を示した図である。ストレージシステム５００は、ホストパッケージ（以下、ホストＰＫと略す。）５１１、５２１、ＭＰＵ（マイクロプロセッサユニット）ＰＫ５１３、５２３、キャッシュＰＫ５１４、５２４、バックエンドＰＫ５１５、５２５を備え、それぞれはスイッチＰＫ５１２、５２２に接続されている。ストレージシステム５００の各ＰＫは冗長化（２重化）構成を取っている。
【００３２】
ホストＰＫ５１１、５２１は、ホストＩ／Ｆとして、Ｆｉｂｅｒ  ＣｈａｎｎｅｌやｉＳＣＳＩ等のＩ／Ｆコントローラを含むパッケージである。ストレージシステム５００は、ホストＰＫ５１１、５２１と複数のホスト５０１、５０２との間を、ＳＡＮ（Storage Area Network）５０３を介して接続する。
【００３３】
ＭＰＵ  ＰＫ５１３、５２３は、ストレージシステム５００を制御するＭＰＵ、制御ファームウェアやストレージシステムの構成情報を格納するためのメモリ、および、ＭＰＵやキャッシュ等をスイッチＰＫ５１２、５２２と接続するためのブリッジを含むパッケージである。
【００３４】
キャッシュＰＫ５１４、５２４は、ストレージシステム５００に格納するユーザデータの一次記憶領域であるキャッシュメモリと、キャッシュとスイッチＰＫとを接続するキャッシュコントローラを含むパッケージである。
【００３５】
バックエンドＰＫ５１５、５２５は、ストレージシステム５００内の複数のＳＳＤユニット（５４０〜５４３、５５０〜５５３等）を制御するＩ／Ｆコントローラを含むパッケージである。バックエンドＰＫ５１５、５２５のＩ／Ｆコントローラは、バックエンドスイッチ５１６、５２６を介して、複数のＳＳＤユニット５４０〜５４３、５５０〜５５３等と接続している。バックエンドスイッチ５１６、５２６はＳＡＳ対応のホストバスアダプタとエキスパンダで構成されており、ＳＡＳインタフェースとＳＡＴＡインタフェースの両方をサポートする機能を持つ。
【００３６】
ＳＳＤユニット（５４０〜５４３、５５０〜５５３等）は、Ｃ−ＳＳＤ１００、Ｅ−ＳＳＤ２００、または両者をペアで内蔵する記憶装置ユニットである。各ＳＳＤユニット５４０〜５４３、５５０〜５５３等は、ポートが冗長化（２重化）されたＳＡＴＡまたはＳＡＳインタフェースを持つ。そのため、各パッケージやバックエンドスイッチの１つに障害が発生した場合にも、冗長化されたポートのいずれかを経由してＳＳＤユニットのユーザデータへアクセス可能となっている。なお、ＳＳＤユニット５４０〜５４３、５５０〜５５３等に共通する内部構成については後述する。
【００３７】
ストレージシステム５００は、ＳＳＤユニットの故障によるユーザデータ損失を防ぐため、複数のＳＳＤユニットにてＲＡＩＤグループを構成し、データの冗長性を図る。例えば、ＳＳＤユニット５４０〜５４３の４ユニットで、データ：パリティ比が３：１のＲＡＩＤ５型のグループ５４４を構成したり、ＳＳＤユニット５５０〜５５３の２×２ユニットでＲＡＩＤ０＋１型のグループ５５４を構成したりすることができる。
【００３８】
ストレージシステム５００は保守クライアント５０４と接続しており、ユーザは保守クライアント５０４を通じて、上記ＲＡＩＤグループの作成などのストレージ制御をおこなう。
【００３９】
以下、図６、図７を用いてＳＳＤユニット５４０〜５４３、５５０〜５５３等に共通する内部構成について説明する。図６は本発明の第１の実施形態におけるＳＳＤユニットの内部構成、図７は本発明の第２の実施形態におけるＳＳＤユニットの内部構成である。
【００４０】
第１の実施形態では、多数（例えば全体の９５％）のＳＳＤユニットを図６（ａ）のような、ＳＡＴＡマルチプレクサ６００を接続したＣ−ＳＳＤ１００による構成（以下、構成Ａと呼ぶ）とし、それ以外の少数（例えば全体の５％）のＳＳＤユニットを図６（ｂ）のようなＥ−ＳＳＤ２００による構成（以下、構成Ｂと呼ぶ）とする。いずれの構成のＳＳＤユニットも必ず冗長型のＲＡＩＤグループに参加させ、各ＳＳＤユニットの格納データを保護する。なお、ＳＡＴＡマルチプレクサ６００とは、１ポートのＳＡＴＡインタフェースを擬似的に２ポートのＳＡＴＡインタフェースに見せるアダプタ装置である。
【００４１】
第１の実施形態では、ＭＰＵ  ＰＫ５１３（または５２３）は、構成ＡのＳＳＤユニットにライトすべきデータのうち、６４ＫＢ未満のものは基本的に構成ＢのＳＳＤユニットに代行ライトし、必要に応じてそのデータを複数個まとめて構成ＢのＳＳＤユニットから構成ＡのＳＳＤユニットへ移動するというライト処理を行う。
【００４２】
図８〜図１０を用いて、第１の実施形態におけるストレージシステム５００のライトアクセス処理手順を説明する。
【００４３】
ＭＰＵ  ＰＫ５１３（または５２３）は、キャッシュＰＫ５１４（または５２４）上にダーティなライトデータがあることを検出すると、それをＳＳＤユニットへライトする処理を開始する（８００）。まず、ライトデータのサイズが６４ＫＢ未満であるかを判定する（８０１）。結果が偽（６４ＫＢ以上）ならば、ライトデータを構成ＡのＳＳＤユニットの一部へライトし（８１１）、ステップ８１３へ遷移する。一方、ステップ８０１の結果が真（６４ＫＢ未満）ならば、構成ＢのＳＳＤユニットに空き領域があるかを判定する（８０２）。結果が真（空きあり）ならば、ライトデータを構成ＢのＳＳＤユニットの一部へライトし（８１２）、ステップ８１３へ遷移する。一方、ステップ８０２の結果が偽（空きなし）ならば、ステップ８０３へ遷移する。
【００４４】
ＭＰＵ  ＰＫ５１３（または５２３）は、ステップ８０３のために、構成ＡのＳＳＤユニットのアドレス空間内で構成ＢのＳＳＤユニットがライト代行している部分を管理するマップ（Ｃ−ＳＳＤダーティマップ）を持つ。これは例えば、キャッシュＰＫ５１４（または５２４）の一部に設置する。図９（図１０）のように、Ｃ−ＳＳＤダーティマップは、構成ＡのＳＳＤユニットのアドレス空間９００（１０００）において、構成ＢのＳＳＤユニットがライト代行している部分９０１（１００１）と、代行していない部分９０２（１００２）をそれぞれ“１”と“０”で表記したビットマップである。このマップは、ストレージシステム５００のシャットダウン時に、構成ＢのＳＳＤユニットの一部にも不揮発に保存しておく。ストレージシステム５００の起動時には、これを読み出してキャッシュＰＫ５１４（または５２４）の一部へ設置する。
【００４５】
ステップ８０３では、ＭＰＵ  ＰＫ５１３（または５２３）は、このＣ−ＳＳＤダーティマップを参照し、図９の区間９１０のように、連続６４ＫＢがダーティとなっている（構成ＢのＳＳＤユニットが記録代行している）アドレス区間を選択する。もし、そういう区間が存在しないならば、図１０の区間１０１０のように、６４ＫＢ以下の長さのアドレス区間のうち、ダーティとなっている部分の密度が最も高いものを選択する。
【００４６】
次に、ＭＰＵ  ＰＫ５１３（または５２３）は、図１０の区間１０１０のようなものを選択した場合、ライトデータのサイズがその区間の長さよりも大きいかを判定する（８０４）。結果が真（大きい）ならば、ライトデータを構成ＡのＳＳＤユニットの一部へライトし（８１１）、ステップ８１３へ遷移する。一方、ステップ８０４の結果が偽（大きくない）ならば、その選択区間においてダーティなアドレス部分のデータを構成ＢのＳＳＤユニットからバッファ９２０（１０２０）にリードする（８０５、９３０、１０３０）。そのバッファ９２０、１０２０は例えば、キャッシュＰＫ５１４（または５２４）の一部を利用する。そして、図１０の区間１０１０のようなものを選択した場合、その選択区間においてクリーン（非ダーティ）なアドレス部分のデータを構成ＡのＳＳＤユニットからバッファ１０２０にリードする（８０６、１０４０）。
【００４７】
次に、ＭＰＵ  ＰＫ５１３（または５２３）は、その選択区間が今回のライトデータのアドレスを含むかを判定する（８０７）。結果が真（含む）ならば、そのライトデータをバッファ９２０（１０２０）に設定し（８１０）、バッファ９２０（１０２０）上の当該選択区間データを構成ＡのＳＳＤユニットの一部へライトし（８１１、９４０、１０５０）、ステップ８１３へ遷移する。一方、ステップ８０７の結果が偽（含まない）ならば、バッファ９２０（１０２０）上の当該選択区間データを構成ＡのＳＳＤユニットの一部へライトし（８０８、９４０、１０５０）、さらに、構成ＢのＳＳＤユニットで当該選択区間を代行していた部分（つまり上書きしてもよい部分）へ今回のライトデータをライトし（８０９）、ステップ８１３へ遷移する。
【００４８】
ステップ８１３では、ＭＰＵ  ＰＫ５１３（または５２３）は、Ｃ−ＳＳＤダーティマップにおいて、以上の手順を通して構成ＡのＳＳＤユニットへライトしたアドレス部分をクリーン（“０”）に設定し、また、以上の手順を通して構成ＢのＳＳＤユニットへライトしたアドレス部分をダーティ（“１”）に設定するように更新を行う。以上により、ライト処理を終了する（８１４）。
【００４９】
第２の実施形態では、全てのＳＳＤユニット５４０〜５４３、５５０〜５５３等を図７のような、Ｃ−ＳＳＤ１００と、それよりも小容量（例えば容量比で５％）のＥ−ＳＳＤ２００と、それらと接続したＳＳＤアダプタ７００による構成とする。
【００５０】
ＳＳＤアダプタ７００は、Ｃ−ＳＳＤ１００およびＥ−ＳＳＤ２００それぞれのユーザデータの「読み出し」、「書き込み」を実行する。ＳＳＤアダプタ７００は、プロセッサ７０４、ＳＡＴＡインタフェース７０１、７０２、データ転送部７７０３、ＲＡＭ７０５、ＲＯＭ７０６、ＳＡＴＡインタフェース７０７、およびＳＡＳインタフェース７０８を備える。
【００５１】
データ転送部７０３はバスロジックやＳＡＳやＳＡＴＡの制御ロジックを含み、その他の構成要素７０１，７０２，７０４〜７０８と接続する。プロセッサ７０４はＲＯＭ７０６に格納された制御ファームウェアに従ってデータ転送部７０３を制御する。ＲＡＭ７０５は転送データ用バッファメモリや制御ファームウェア用ワークメモリとして機能する。データ転送部７０３は、２ポートのＳＡＴＡインタフェース７０１、７０２からの非同期なアクセスを受け入れることができる。Ｃ−ＳＳＤ１００はＳＡＴＡインタフェース７０７に１ポート接続され、Ｅ−ＳＳＤ２００はＳＡＳインタフェース７０８に２ポート接続される。後者は１ポート接続でもよいが、耐障害性向上のためには冗長化が望ましい。
【００５２】
なお、バックエンドスイッチ５１６、５２６はＳＡＳインタフェースとＳＡＴＡインタフェースの両方をサポートするため、ＳＳＤアダプタ７００に含まれるＳＡＴＡインタフェース７０１、７０２は、２ポートのＳＡＳインタフェースであってもよい。
【００５３】
第２の実施形態では、ＳＳＤアダプタ７００は、Ｃ−ＳＳＤ１００にライトすべきデータのうち、６４ＫＢ未満のものは基本的にＥ−ＳＳＤ２００に代行ライトし、必要に応じてそのデータを複数個まとめてＥ−ＳＳＤ２００からＣ−ＳＳＤ１００へ移動するというライト処理を行う。
【００５４】
第２の実施形態におけるストレージシステム５００のライトアクセス処理手順は、第１の実施形態で示した図８〜図１０の手順と基本的に同じである。ただし、いくつかの点で異なるため、それを以下に示しておく。
【００５５】
まず、処理の実行主体がＭＰＵ  ＰＫ５１３，５２３ではなく、各ＳＳＤユニット内のＳＳＤアダプタ７００である。そして、ステップ８０５，８０６，８１０におけるバッファ、およびＣ−ＳＳＤダーティマップの所在はキャッシュＰＫ５１４，５２４の一部ではなく、各ＳＳＤアダプタ７００のＲＡＭ７０４内部である。
【００５６】
第２の実施形態が第１の実施形態よりも優れている点は、本発明の適用範囲がＳＳＤユニットという小規模装置内に内包されるため、共通のＳＳＤユニットを既存の多様なストレージシステムへ換装するだけでよく、既存ストレージシステムそれぞれのライト制御ファームウェアに変更を行う必要がなく、導入障壁が低いことである。
【００５７】
以上、２つの実施形態を示しながら述べたライトアクセス処理手順によれば、ストレージシステム５００のライト性能は向上し、フラッシュメモリ１２０，２２０の書き換え寿命は改善する効果をもたらす。以下、２つのアクセスパタンを示し、Ｃ−ＳＳＤ１００のみで構成した従来のストレージシステムと、本発明のストレージシステム５００とを比較しながら効果の大きさを説明する。
【００５８】
１つ目の例として、キャッシュＰＫ５１４（または５２４）から１ＫＢのライトバックデータが断続的にあふれ出し、それらが最終的に６４ＫＢの連続なアドレス区間を埋め尽くした場合を考える。従来は、Ｃ−ＳＳＤに１ＫＢのライトを少なくとも６４回与えるため、６４回×８．８ｍｓ＝５６３．２ｍｓのデバイス処理時間が必要だった。本発明では、Ｅ−ＳＳＤに１ＫＢのライトを少なくとも６４回、その後でＣ−ＳＳＤに６４ＫＢのライトを１回与えるため、６４回×０．１３ｍｓ＋１回×８ｍｓ＝１６．３２ｍｓのデバイス処理時間で済む。両者とも、実効的な処理時間はこれにデータ転送等の時間も加算する必要があるが、それでも時間短縮効果の大きさは歴然である。また、フラッシュメモリ書き換え全体量は、従来は６４回×６４ＫＢ（Ｃ−ＳＳＤ）＝４０９６ＫＢも発生していたが、本発明では６４回×１ＫＢ（Ｅ−ＳＳＤ）＋１回×６４ＫＢ（Ｃ−ＳＳＤ）＝１２８ＫＢしか発生しない。
【００５９】
２つ目の例として、キャッシュＰＫ５１４（または５２４）から１ＫＢのライトバックデータが断続的にあふれ出し、それらが最終的に６３ＫＢの連続なアドレス区間を１ＫＢ間隔で３２個埋めた場合を考える。従来は、Ｃ−ＳＳＤに１ＫＢのライトを少なくとも３２回与えるため、３２回×８．８ｍｓ＝２８１．６ｍｓのデバイス処理時間が必要だった。本発明では、Ｅ−ＳＳＤに１ＫＢのライトを少なくとも３２回、その後でＣ−ＳＳＤから１ＫＢのリードを３１回、Ｃ−ＳＳＤに６３ＫＢのライトを１回与えるため、３２回×０．１３ｍｓ＋３１回×０．０５ｍｓ＋１回×８ｍｓ＝１３．７１ｍｓのデバイス処理時間で済む。両者とも、実効的な処理時間はこれにデータ転送等の時間も加算する必要があるが、それでも時間短縮効果の大きさは歴然である。また、フラッシュメモリ書き換え全体量は、従来は３２回×６４ＫＢ（Ｃ−ＳＳＤ）＝２０４８ＫＢも発生していたが、本発明では３２回×１ＫＢ（Ｅ−ＳＳＤ）＋１回×６４ＫＢ（Ｃ−ＳＳＤ）＝９６ＫＢしか発生しない。
【００６０】
このように、本発明によれば、従来に比べて数１０倍の性能向上および寿命改善がもたらされる。
【００６１】
第１の実施形態の効果の大きさは、図６（ａ）構成のＳＳＤユニットの総記憶容量と図６（ｂ）構成のＳＳＤユニットの総記憶容量の比率に依存する。また、第２の実施形態の効果の大きさは、Ｃ−ＳＳＤ１００の記憶容量とＥ−ＳＳＤ２００の記憶容量の比率に依存する。いずれにおいても、Ｅ−ＳＳＤの比率を大きくするほど、小単位のライトデータをＥ−ＳＳＤで多く収納できるため、ストレージシステム全体としてのライト性能および書き換え寿命は向上する。しかし、ストレージシステムのコストパフォーマンス（費用対性能、費用対寿命）を考えるならば、Ｅ−ＳＳＤの比率が大きければ大きいほどよいというものではない。
【００６２】
例えば、小単位のデータライトがストレージシステム５００全体のユーザデータ容量の高々１０％に集中する使用環境ならば、Ｅ−ＳＳＤの比率が全体の１０％程度となる構成をとるだけで十分な効果を享受できる。しかし、その比率を１０％以上にしても、Ｅ−ＳＳＤ追加によるコストアップに見合うほどさらなる効果の増大はない。はじめに述べたように、Ｅ−ＳＳＤ価格は同容量のＣ−ＳＳＤ価格の約５倍であるから、１０％分のＥ−ＳＳＤ追加は５０％のコストアップになり、ストレージシステムのドライブ原価は１．５倍となる。それでも上述の例のように数１０倍の性能向上および寿命改善がもたらされる。すなわち、本発明の適用価値は、低価格なＣ−ＳＳＤを主に構成した低価格帯ストレージシステムにおいて、使用環境に応じて適度な比率のＥ−ＳＳＤを追加することで、コストパフォーマンスを最適化することにある。
【００６３】
なお、ストレージシステム５００の使用環境が稼働時間の経過ともに変化し、全体のユーザデータ容量に対して小単位のデータライトが集中する領域が拡大した場合、ライトバックするアドレス区間のダーティ密度は確率的に減少し、本発明による性能向上および寿命改善の効果は低下する。ここでさらにＥ−ＳＳＤを追加すれば性能向上および寿命改善の効果を維持することができる。そこで、例えば、ＭＰＵ  ＰＫ５１３、５２３がユーザデータアドレス空間内での小単位のデータライト回数分布を分析し、Ｅ−ＳＳＤ追加により性能向上および寿命改善の効果を維持できると判断したならば、保守クライアント５０４を通じて、ユーザにＥ−ＳＳＤ追加を促すメッセージを示すようにしてもよい。
【００６４】
なお、以上の説明においては、ライトデータをＣ−ＳＳＤまたはＥ−ＳＳＤのどちらに書き込むかの判定基準や、ライトバックサイズの基準を６４ＫＢとしたが、この値はＣ−ＳＳＤのメモリ管理方式により変わりうるメモリ管理単位である。よって、本発明はこの値を特定の数値に限定するものではない。Ｃ−ＳＳＤのメモリ管理単位はそのＣ−ＳＳＤの製造メーカに問い合わせるなどして取得する。もし、メモリ管理単位を取得できない場合には、Ｃ−ＳＳＤのライト性能テストを行い、図３（ｂ）のようなライトデータサイズと性能（または処理時間）の関係を示す特性グラフを描く。そして、性能曲線の傾きが大きく変化する点（またはライトデータサイズの減少に対して処理時間が下げ止まる点）を求めることで、Ｃ−ＳＳＤのメモリ管理単位を推定する。この推定値をライト先判定基準やライトバックサイズ基準値に適用してもよい。
【００６５】
なお、以上の説明においては、フラッシュメモリを記憶媒体とするストレージシステムへの実施形態を示したが、有限な書き換え寿命を持つその他の不揮発性メモリを記憶媒体とするストレージシステムについても、上述の発明を実施することが可能であり、本発明の効果を享受することは明白である。
【産業上の利用可能性】
【００６６】
本発明は、ストレージシステム及びそのデータライト方法に広く適用することができる。
【図面の簡単な説明】
【００６７】
【図１】本発明の各実施形態に係わるコンシューマ向け半導体記憶装置の内部構成を示す図である。
【図２】本発明の各実施形態に係わるエンタプライズ向け半導体記憶装置の内部構成を示す図である。
【図３】本発明の各実施形態に係わるコンシューマ向け半導体記憶装置のデータライト処理方式とライト性能特性を示す図である。
【図４】本発明の各実施形態に係わるエンタプライズ向け半導体記憶装置のデータライト処理方式とライト性能特性を示す図である。
【図５】本発明の各実施形態に係わるストレージシステムの内部構成を示す図である
【図６】本発明の第１の実施形態に係わるＳＳＤユニットの内部構成を示す図である。
【図７】本発明の第２の実施形態に係わるＳＳＤユニットの内部構成を示す図である。
【図８】本発明の実施形態に係わるストレージシステムのデータライト処理手順を示すフローチャートである。
【図９】本発明の実施形態に係わるエンタプライズ向け半導体記憶装置にキャッシュされたデータをコンシューマ向け半導体記憶装置にライトする状況の一例を示す図である。
【図１０】本発明の実施形態に係わるエンタプライズ向け半導体記憶装置にキャッシュされたデータをコンシューマ向け半導体記憶装置にライトする状況のもう一例を示す図である。
【符号の説明】
【００６８】
１００…コンシューマ向けＳＳＤ、２００…エンタプライズ向けＳＳＤ、５００…ストレージシステム、５４０〜５４３、５５０〜５５３…ＳＳＤユニット、７００…ＳＳＤアダプタ
【図１】
2009199199.tif 000003
【図２】
2009199199.tif 000004
【図３】
2009199199.tif 000005
【図４】
2009199199.tif 000006
【図５】
2009199199.tif 000007
【図６】
2009199199.tif 000008
【図７】
2009199199.tif 000009
【図８】
2009199199.tif 000010
【図９】
2009199199.tif 000011
【図１０】
2009199199.tif 000012