(57)【要約】【課題】サーバー用途などのハイエンドストレージに適用可能とする。【解決手段】不揮発性の第１の記憶部と、第１の記憶部のバッファメモリとしての第２の記憶部と、第１の記憶部を駆動制御する第１の制御回路と、第２の記憶部を駆動制御する第２の制御回路とを夫々含み、各ストレージグループ内の第１の記憶部と第２の記憶部との間でデータ転送が可能な複数のストレージグループと、ホスト装置に接続されるインタフェースと、インタフェース、各ストレージグループの第１および第２の制御回路とバス接続され、複数のストレージグループの第１および第２の制御回路を制御する複数のＭＰＵとを備え、複数のＭＰＵは、１つのストレージグループについての第２の記憶部を介したホスト装置と第１の記憶部との間のデータ転送に関する第１の制御と、他のストレージグループについての第１の記憶部の保守に関する制御を含む第２の制御を分担して独立に実行する。【選択図】図１
2011070365.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位であるブロックを複数個有する不揮発性の第１の記憶部と、第１の記憶部のバッファメモリとしての第２の記憶部と、第１の記憶部を駆動制御する第１の制御回路と、第２の記憶部を駆動制御する第２の制御回路とを夫々含み、各ストレージグループ内の第１の記憶部と第２の記憶部との間でデータ転送が可能な複数のストレージグループと、
ホスト装置に接続されるインタフェースと、
前記インタフェース、各ストレージグループの第１および第２の制御回路とバス接続され、前記複数のストレージグループの第１および第２の制御回路を制御する複数のＭＰＵとを備え、
前記複数のＭＰＵは、１つのストレージグループについての前記第２の記憶部を介したホスト装置と前記第１の記憶部との間のデータ転送に関する第１の制御と、他のストレージグループについての第１の記憶部の保守に関する制御を含む第２の制御を分担して独立に実行することを特徴とするメモリシステム。
【請求項２】
前記複数のＭＰＵは、１つのストレージグループについての前記第２の記憶部を介したホスト装置と前記第１の記憶部との間のデータ転送に関する第１の制御と、他のストレージグループについての第２の記憶部から第１の記憶部へのデータフラッシュに関する第２の制御を分担して独立に実行することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第２の記憶部には、異なるストレージグループの第１および第２の記憶部に記憶されるデータを管理するための管理情報が記憶され、
前記複数のＭＰＵは、少なくとも１つのストレージグループについての前記第２の記憶部を介したホスト装置と前記第１の記憶部との間のデータ転送に関する第１の制御と、第１の制御に起因する管理情報の更新処理に関する第２の制御を分担して独立に実行することを特徴とする請求項１または２に記載のメモリシステム。
【請求項４】
前記第１の制御を行うＭＰＵは、第２の記憶部の空き容量、第２の記憶部とデータ転送が可能な第１の記憶部の疲労度、ホスト装置から指定されるアドレス、または第２の記憶部での書き込みサイズより小さいデータの有無に基づいて、データ転送を行うストレージグループを選択することを特徴とする請求項１〜３の何れか一つに記載のメモリシステム。
【請求項５】
データ消去の単位であるブロックを複数個有する不揮発性の複数の第１の記憶部と、複数の第１の記憶部のバッファメモリとしての複数の第２の記憶部と、複数の第１の記憶部を駆動制御する複数の第１の制御回路と、複数の第２の記憶部を駆動制御する複数の第２の制御回路とを有し、１つの第２の記憶部と複数の第１の記憶部との間でデータ転送が夫々可能なストレージ部と、
ホスト装置に接続されるインタフェースと、
前記インタフェース、前記ストレージ部の複数の第１および第２の制御回路とバス接続され、前記ストレージ部の複数の第１および第２の制御回路を制御する複数のＭＰＵとを備え、
前記複数のＭＰＵは、１つの第２の記憶部を介したホスト装置と複数の第１の記憶部との間のデータ転送に関する第１の制御と、前記第１の制御に使用されていない第２の記憶部を用いた処理を含む第２の制御とを分担して独立に実行することを特徴とするメモリシステム。
【請求項６】
データ消去の単位であるブロックを複数個有する不揮発性の複数の第１の記憶部と、複数の第１の記憶部のバッファメモリとしての複数の第２の記憶部と、複数の第１の記憶部を駆動制御する複数の第１の制御回路と、複数の第２の記憶部を駆動制御する複数の第２の制御回路とを有し、１つの第２の記憶部と複数の第１の記憶部のうちの１つの第１の記憶部との間でデータ転送が可能なストレージ部と、
ホスト装置に接続されるインタフェースと、
前記インタフェース、前記ストレージ部の複数の第１および第２の制御回路とバス接続され、前記ストレージ部の複数の第１および第２の制御回路を制御する複数のＭＰＵとを備え、
前記複数のＭＰＵは、前記第２の記憶部を介したホスト装置と複数の第２の記憶部から選択した１つの第１の記憶部との間のデータ転送に関する第１の制御と、第１の制御に使用されていない第１の記憶部の保守に関する制御を含む第２の制御を分担して独立に実行することを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを具えるメモリシステムに関する。
【背景技術】
【０００２】
今日、半導体メモリは、大型コンピュータの主記憶から、パーソナルコンピュータ、家電製品、携帯電話等、各種分野で利用されている。市場が大きく伸びているものは、ＮＡＮＤフラッシュメモリに代表されるFlash-E2PROM型の不揮発性メモリであり、ＮＡＮＤフラッシュメモリが搭載された各種メモリカード（ＳＤカード、ＭＭＣカード、ＭＳカード、ＣＦカード）が画像、動画、音声、ゲーム等の情報を記憶する媒体として、デジタルカメラ、デジタルビデオ、ＭＰ３等の音楽機器、モバイルＰＣ等の記憶媒体、デジタルＴＶなどの記憶媒体に使われている。また、ＵＳＢ対応のカードも広くＰＣの記憶媒体として使われている。
【０００３】
Flash-E2PROM型の不揮発性メモリは、主にＮＯＲ型とＮＡＮＤ型が有る。ＮＯＲ型は高速リードが可能であるが、ライトの際の実効バンド幅が小さく、ファイル記録に適していない。一方、ＮＡＮＤ型は、ＮＯＲ型に比べて高集積化が可能で、しかもアクセス時間が少し遅いが、バーストリードが可能で、ライトの際の実効バンド幅が高く、上記のようなメモリカード、USBメモリや、最近では携帯電話のメモリ等で用いられている。
【０００４】
このように、ＮＡＮＤ型の不揮発性メモリは大容量化・高集積化が可能であるため、ハードディスクの置き換えとして考えられることが多いが、ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。また、消去単位が大きいため画像データや音楽ファイルなど大容量データを扱うことを想定する場合ならよいが、通常のＰＣ使用環境ではそのような大容量データばかりではないため、ＮＡＮＤメモリの疲労を早めてしまう。
【０００５】
そこで、ＮＡＮＤメモリを用いて大容量の二次記憶装置を構成する場合においては、特許文献１に示されるように、フラッシュメモリとホスト装置との間に、ＲＡＭなどのキャッシュメモリを介在させて、フラッシュメモリでの書き込み回数（消去回数）を減らすように構成されていることが多い。
【０００６】
このようなＮＡＮＤメモリを用いた二次記憶装置においては、ＮＡＮＤメモリおよびＲＡＭを駆動する駆動回路と、駆動回路を制御するＭＰＵを備えることが多いが（例えば特許文献２）、従来技術では、１ＭＰＵおよび１駆動回路でＮＡＮＤメモリおよびＲＡＭを制御しているので、サーバー用途などのハイエンドストレージとしては、性能上課題を有する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００７−５２８０７９号
【特許文献２】特許第３６８８８３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、サーバー用途などのハイエンドストレージに適用可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性の第１の記憶部と、第１の記憶部のバッファメモリとしての第２の記憶部と、第１の記憶部を駆動制御する第１の制御回路と、第２の記憶部を駆動制御する第２の制御回路とを夫々含み、各ストレージグループ内の第１の記憶部と第２の記憶部との間でデータ転送が可能な複数のストレージグループと、ホスト装置に接続されるインタフェースと、前記インタフェース、各ストレージグループの第１および第２の制御回路とバス接続され、前記複数のストレージグループの第１および第２の制御回路を制御する複数のＭＰＵとを備え、前記複数のＭＰＵは、１つのストレージグループについての前記第２の記憶部を介したホスト装置と前記第１の記憶部との間のデータ転送に関する第１の制御と、他のストレージグループについての第１の記憶部の保守に関する制御を含む第２の制御を分担して独立に実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、データ転送処理の高速化、レスポンス速度の向上を実現し、サーバー用途などのハイエンドストレージに適用可能なメモリシステムを提供するできる。
【図面の簡単な説明】
【００１１】
【図１】図１は、この発明の第１の実施の形態のメモリシステムの構成例を示すブロック図。
【図２】図２は、第１の実施の形態のＲＡＭとＮＡＮＤメモリのデータ転送態様を示す概念図。
【図３】図３は、第１の実施の形態の動作例を示すフローチャート。
【図４】図４は、第１の実施の形態の動作例を示すフローチャート。
【図５】図５は、第１の実施の形態の他の動作例を示すフローチャート。
【図６】図６は、この発明の第２の実施の形態のメモリシステムの構成例を示すブロック図。
【図７】図７は、第１の実施の形態のＲＡＭとＮＡＮＤメモリのデータ転送態様を示す概念図。
【図８】図８は、この発明の第２の実施の形態のメモリシステムの構成例を示すブロック図。
【図９】図９は、第１の実施の形態のＲＡＭとＮＡＮＤメモリのデータ転送態様を示す概念図。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１３】
（第１の実施の形態）
図１は、第１の実施の形態にかかるメモリシステムとしてのＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースを備え、このＡＴＡインタフェース２にバス３が接続されている。ＳＳＤ１００は、ＡＴＡ  Ｉ／Ｆ２を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１４】
バス３には、複数のＭＰＵ（マイクロプロセッサユニット）１０−１、１０−２、…と、複数のＲＡＭ制御回路２５ａ、２５ｂ、…と、複数のＮＡＮＤ制御回路３５ａ、３５ｂ、…が接続されている。ＮＡＮＤ制御回路３５ａには、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）３０ａが接続され、ＮＡＮＤ制御回路３５ｂには、ＮＡＮＤメモリ３０ａが接続され、ＮＡＮＤ制御回路３５ｃ、…には、ＮＡＮＤメモリ３０ｃ、…がそれぞれ接続されている。ＲＡＭ制御回路２５ａには、ＮＡＮＤメモリ３０ａのバッファメモリとしてのＲＡＭ２０ａが接続され、ＲＡＭ制御回路２５ｂ、には、ＮＡＮＤメモリ３０ｂのバッファメモリとしてのＲＡＭ２０ｂが接続され、ＲＡＭ制御回路２５ｃ、…には、ＲＡＭ２０ｃ、…がそれぞれ接続されている。ＲＡＭ制御回路２５ａとＮＡＮＤ制御回路３５ａとは、バス３の他に専用線１５ａでも接続されている。同様に、ＲＡＭ制御回路２５ｂとＮＡＮＤ制御回路３５ｂとは専用線１５ｂでも接続され、ＲＡＭ制御回路２５ｃ、…とＮＡＮＤ制御回路３５ｃ、…とはそれぞれ専用線１５ｃ、…でも接続されている。
【００１５】
以下の説明では、本ＳＳＤ１００は、２個のＭＰＵ１０−１、１０−２と、２個のＲＡＭ２０ａ、２０ｂと、２個のＮＡＮＤメモリ３０ａ、３０ｂと、２個のＲＡＭ制御回路２５ａ、２５ｂと、２個のＮＡＮＤ制御回路３５ａ、３５ｂを備えるものとする。
【００１６】
ＮＡＮＤメモリ３０ａ、３０ｂは、ホスト１によって指定されたユーザデータを記憶したり、ＲＡＭ２０ａ、２０ｂで管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ３０ａ、３０ｂは、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤメモリ３０ａ、３０ｂは、夫々複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ３０ａ、３０ｂでは、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１７】
ＲＡＭ２０ａ、２０ｂとしては、ＤＲＡＭなどの揮発性ＲＡＭでもよいし、ＦｅＲＡＭやＭＲＡＭなどの不揮発性ＲＡＭでもよい。ＲＡＭ２０ａ、２０ｂは、データ転送用、管理情報記録用の記憶部として使用される。データ転送用の記憶部（データ転送用キャッシュ）としては、ホスト１から書込要求があったデータをＮＡＮＤメモリに書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤメモリから読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤメモリにバックアップされているデータの格納位置などを管理するための各種管理情報（各種管理テーブル、管理テーブルの変更差分情報であるログなど）を格納するために使用される。
【００１８】
ＲＡＭ制御回路２５ａは、ＭＰＵ１０−１、１０−２と、ＲＡＭ２０ａとのインタフェース処理、ＲＡＭ２０ａに対するリード／ライト制御などを実行する。ＲＡＭ制御回路２５ｂは、ＭＰＵ１０−１、１０ー２と、ＲＡＭ２０ｂとのインタフェース処理、ＲＡＭ２０ａに対するリード／ライト制御などを実行する。
【００１９】
ＮＡＮＤ制御回路３５ａは、ＭＰＵ１０−１、１０−２と、ＮＡＮＤメモリ３０ａとのインタフェース処理、ＮＡＮＤメモリ３０ａ−ＲＡＭ２０ａ間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。ＮＡＮＤ制御回路３５ｂは、ＭＰＵ１０−１、１０ー２と、ＮＡＮＤメモリ３０ａとのインタフェース処理、ＮＡＮＤメモリ３０ａ−ＲＡＭ２０ａ間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００２０】
ＲＡＭ２０ａ−ＮＡＮＤメモリ３０ａ間は複数のチャネルで接続され、これら複数のチャネルを用いた並列データ転送が可能である。また、ＮＡＮＤメモリ３０ａは、複数のバンクに分割され、ＲＡＭ２０ａ−ＮＡＮＤメモリ３０ａ間はこれら複数のバンクを用いたバンクインターリーブによる並列動作が可能である。同様に、ＲＡＭ２０ｂ−ＮＡＮＤメモリ３０ｂ間は複数のチャネルで接続され、これら複数のチャネルを用いた並列データ転送が可能である。同様に、ＮＡＮＤメモリ３０ｂは、複数のバンクに分割され、ＲＡＭ２０ｂ−ＮＡＮＤメモリ３０ｂ間はこれら複数のバンクを用いたバンクインターリーブによる並列動作が可能である。ホスト１は、基本的に２つのＮＡＮＤメモリ３０ａ、３０ｂによって構成される全メモリ空間のうちの管理テーブルなどの管理情報などが記憶される管理領域を除く全ユーザメモリ空間にアクセス可能である。
【００２１】
第１の実施の形態では、ＲＡＭ２０ａ、ＮＡＮＤメモリ３０ａ、ＲＡＭ制御回路２５ａ、ＮＡＮＤ制御回路３５ａでストレージグループＡを構成し、ストレージグループＡ内のＲＡＭ２０ａ、ＮＡＮＤメモリ３０ａ間でのみデータ転送が可能である。ＲＡＭ２０ｂ、ＮＡＮＤメモリ３０ｂ、ＲＡＭ制御回路２５ｂ、ＮＡＮＤ制御回路３５ｂでストレージグループＢを構成し、ストレージグループＢ内のＲＡＭ２０ｂ、ＮＡＮＤメモリ３０ｂ間でのみデータ転送が可能である。ＭＰＵ１０−１は、ストレージグループＡ，Ｂにアクセス可能であり、ＭＰＵ１０−２も、ストレージグループＡ，Ｂにアクセス可能である。
【００２２】
第１の実施の形態では、ＭＰＵ１０−１、１０−２が行うべき処理機能は固定的に分担されているものとする。このように各ＭＰＵ１０−１、１０−２で処理機能を固定的に分担させれば、各ＭＰＵ上で動作するファームウェアを簡単、単純化させることが可能になる。ＭＰＵ１０−１は、基本的に、ストレージグループＡ，Ｂのうちの一方についてのホスト１から要求されるリード／ライト処理に係わる処理（ＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送）を実行する。ＭＰＵ１０−２は、基本的に、ストレージグループＡ，Ｂのうちの他方についてのホスト１から要求されるリード／ライト処理以外の処理を実行する。リード／ライト処理以外の処理としては、他方のストレージグループについてのＮＡＮＤの保守処理（ウェアレベリング処理、レフレッシュ処理、ガーベージコレクション処理などを含む）、ＲＡＭからＮＡＮＤメモリへのフラッシュ処理、ＮＣＱ（Native  Command  Queuing）処理などを含む。
【００２３】
なお、各ＭＰＵ１０−１、１０−２に処理機能を固定的に分担させるのではなく、一方のＭＰＵがリード／ライト処理を実行している場合、待機中である他方のＭＰＵが上記したリード／ライト処理以外の処理を実行するようにしてもよく、この場合、一方のＭＰＵがリード／ライト処理以外の処理を実行している場合は、他方のＭＰＵがリード／ライト処理を実行することになる。このように、第１の実施の形態では、図２に示すように、ＲＡＭ２０ａ、ＮＡＮＤメモリ３０ａを含むストレージグループＡと、ＲＡＭ２０ｂ、ＮＡＮＤメモリ３０ｂを含むストレージグループＢとは、異なる処理を独立にかつ並行に実行することが可能となる。
【００２４】
ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。一方、ホスト１が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際にホスト１から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、ＮＡＮＤ型フラッシュメモリでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われている。ウェアレベリング処理では、特定の消去単位(ブロック)への、書き込み、消去の集中を防ぐために、ブロック間で書き換え回数が均一に分布するようにする。静的ウェアレベリングでは、書き換えが長い間行われず書き換え回数の少ないブロックを書き換え回数の多いブロックと交換する。例えば、一方のＭＰＵ１０−１がストレージグループＡに対しＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送を実行させている際に、これに並行して他方のＭＰＵ１０−１がストレージグループＢに対しウェアレベリング処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００２５】
ＮＡＮＤ型フラッシュメモリでは、メモリセルトランジスタに記憶されているデータが、時間の経過により反転してしまうことがあり、これを防ぐために、メモリセルのデータを読出し、別のセルに書込む処理がリフレッシュ処理である。例えば、一方のＭＰＵ１０−１がストレージグループＡに対しＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送を実行させている際に、これに並行して他方のＭＰＵ１０−１がストレージグループＢに対しリフレッシュ処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００２６】
ＮＡＮＤメモリでは、物理ブロックを複数個組み合わせた論理ブロックという仮想ブロックの概念を導入し、この論理ブロック単位に消去、書き込み、読み出しを行っている。データの消去単位（論理ブロック）と、データの管理単位が異なる場合、ＮＡＮＤメモリの書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、ＮＡＮＤメモリの記憶領域を有効利用できないので、有効データを集めて違う論理ブロックに書き直すコンパクションと呼ばれる処理が行われる。ガーベージコレクション処理としては、このようなコンパクション処理を含む。例えば、一方のＭＰＵ１０−１がストレージグループＡに対しＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送を実行させている際に、これに並行して他方のＭＰＵ１０−１がストレージグループＢに対しガーベージコレクション処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００２７】
ＲＡＭからＮＡＮＤメモリへのフラッシュ処理とは、ＲＡＭのキャッシュ領域が満杯になる前、あるいは満杯になったときに、キャッシュ領域のデータをＮＡＮＤメモリに追い出す処理である。例えば、一方のＭＰＵ１０−１がストレージグループＡに対しＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送を実行させている際に、これに並行して他方のＭＰＵ１０−１がストレージグループＢに対しフラッシュ処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００２８】
ＮＣＱ処理とは、ＮＡＮＤメモリに対するコマンドをキューに格納し、コマンドの順番を変えて実行する処理であり、一方のＭＰＵ１０−１でリード／ライト処理を実行している場合、他方のＭＰＵ１０−２がＮＣＱ処理を実行すれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００２９】
ＭＰＵ１０−２が管理する管理テーブルには、ＲＡＭ内のキャッシュ領域を管理するためのテーブル、ＮＡＮＤメモリ中でのデータの格納位置を管理するためのテーブル、空きブロック管理するためのテーブル、使用中ブロックを管理するためのテーブル、誤りが多いなど記憶領域として使用できないブロックを管理するためのテーブル、各ブロックの書き換え回数を管理するためのテーブルなどがある。管理情報としては、これらの管理テーブルの他に、管理テーブルの変更差分情報であるログなどもある。このような管理情報は、ＲＡＭ２０ａ、２０ｂに格納されている。ストレージグループＡに関する管理情報は、ストレージグループＡのＲＡＭ２０ａに格納し、ストレージグループＢに関する管理情報は、ストレージグループＢのＲＡＭ２０ｂに格納するようにしてもよいし、ストレージグループＡに関する管理情報をストレージグループＢのＲＡＭ２０ｂに格納し、ストレージグループＢに関する管理情報をストレージグループＡのＲＡＭ２０ａに格納するようにしてもよい。
【００３０】
ストレージグループＡに関する管理情報をストレージグループＢのＲＡＭ２０ｂに格納し、ストレージグループＢに関する管理情報をストレージグループＡのＲＡＭ２０ａに格納するようにした場合、一方のＭＰＵ１０−１がストレージグループＡに対しＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送を実行させている際に、これに並行して他方のＭＰＵ１０−１が、ストレージグループＡで行っているＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送に関する管理情報の更新をストレージグループＢのＲＡＭ２０ｂに対して行うことができる。これにより、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【００３１】
つぎに、ＭＰＵ１０−１で行われるライト処理（ＩＦ→ＲＡＭ→ＮＡＮＤ間データ転送）の際のストレージグループＡ，Ｂの選択について説明する。選択の手法としては、
（ａ）ＲＡＭの空き容量に基づく切り替え
（ｂ）ＮＡＮＤメモリの疲労度（書き換え回数の大小）に基づく切り替え
（ｃ）ＲＡＭのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく          切り替え
（ｄ）ホストから指定される論理アドレス（ＬＢＡ）の局所性（頻繁にデータ更新さ          れるアドレスであるか否か）を考慮した切り替え
などがある。
【００３２】
（ａ）の切り替えについて説明する、ホスト１からライト要求を受信した場合、ＭＰＵ１０−１は、ＲＡＭ２０ａ、２０ｂの各キャッシュ領域の空き容量を確認し、より空き容量の多い一方のＲＡＭにホスト１からのデータをライトする。例えば、ＲＡＭ２０ａが有効データで満杯の場合は、他方のＲＡＭ２０ｂにホスト１からのデータをライトする。この切り替え処理によれば、ＲＡＭからＮＡＮＤメモリへの無駄なフラッシュ処理が低減し、ホスト１からライト要求に高速応答できる確率が向上する。
【００３３】
（ｂ）の切り替えについて説明する。ホスト１からライト要求を受信した場合、ＭＰＵ１０−１は、このライト要求は書き込みサイズが大きいか小さいかを判断し、さらにＮＡＮＤメモリ３０ａ、３０ｂの書き換え回数の平均を求め、どちらのＮＡＮＤメモリ３０ａ、３０ｂが疲労度が高いかを判断する。そして、ＭＰＵ１０−１は、疲労度が高い方のＮＡＮＤメモリと同じストレージグループのＲＡＭに対して書き込みサイズが大きいデータをライトさせ、疲労度が低い方のＮＡＮＤメモリと同じストレージグループのＲＡＭに対して書き込みサイズが小さいデータをライトさせる。書き込みサイズの小さいデータが書き込まれたＮＡＮＤメモリでは、ガーベージコレクションが増え、結果的にブロックの書き換え回数が増加してしまうので、疲労度の高いＮＡＮＤメモリには、書き込みサイズの大きなデータを書き込むようにすることで、ＮＡＮＤメモリの寿命を延ばし、信頼性を向上させる。
【００３４】
（ｃ）の切り替えについて説明する。ホスト１からライト要求を受信した場合、ＭＰＵ１０−１は、一方のＲＡＭ２０ａにＮＡＮＤメモリの書き込み単位（ページ）より小さい中途半端なサイズのデータがあったときには、ＮＡＮＤメモリの書き込み単位（ページ）より大きなデータを作成するために、このＲＡＭ２０ａにホスト１からのデータをライトさせる。これにより、ＲＡＭに大きなデータが貯まった後、フラッシュが行われ、書き込み効率が向上し、高速化および信頼性が向上する。なお、書き込み効率とは、所定期間内におけるホストから書き込んだデータ量に対する論理ブロックの消去量の統計値のことである。
【００３５】
（ｄ）の切り替えについて説明する。ホスト１からライト要求を受信した場合、ＭＰＵ１０−１は、このライト要求は頻繁に更新（使用される）論理アドレス（ＬＢＡ）に関するライト要求であるか否かを判定し、頻繁に使用されるアドレスである場合は、一方のＲＡＭにデータをライトさせ、頻繁に使用されるアドレスでない場合は、他方のＲＡＭにデータをライトさせる。これにより、ＲＡＭの用途が明確になり、管理テーブルの最適化（最小化）やフラッシュ処理の最適化が可能である。
【００３６】
つぎに、一方のストレージグループでライト処理を実行し、これに並行して他方のストレージグループでウェアレベリング処理を実行する場合の処理について図３に示すフローチャートを参照して説明する。ホスト１からライト要求を受信した場合（ステップＳ１００）、ＭＰＵ１０−１は、上記した（ａ）〜（ｄ）の判断を行って、どちらのＲＡＭにホスト１からのデータを書き込むかを判断する（ステップＳ１１０）。ここでは、ＲＡＭ２０ａにデータを書き込むと判断したとする。
【００３７】
つぎに、ＭＰＵ１０−１は、選択したＲＡＭ２０ａが満杯であるか否かを判断する（ステップＳ１２０）。選択したＲＡＭ２０ａが満杯であると判断された場合、ＲＡＭ２０ａからＮＡＮＤメモリ３０ａへのフラッシュ動作が実行される（ステップＳ１３０）。フラッシュ処理が実行された場合、フラッシュ処理の終了はＮＡＮＤ制御回路３５ａからバス３に通知される。選択したＲＡＭ２０ａが満杯でないことを検出した場合、またはフラッシュ終了の通知を検出した場合、ＭＰＵ１０−１では、バス３を介してホスト１に対しライトデータの転送指示を通知する（ステップＳ１５０）。
【００３８】
この転送指示通知によってホスト１からＲＡＭ２０ａに対するデータ転送が開始される（ステップＳ１６０）。ＭＰＵ１０−１では、Ｉ／Ｆ２からＲＡＭ２０ａへのデータ転送終了をＲＡＭ制御回路２５ａから受信すると（ステップＳ１７０）、バス３を介してホスト１へ完了通知を送信する（ステップＳ１８０）。これ以降、ＭＰＵ１０−１では、ホスト１からの要求があるまで、待機している。
【００３９】
一方、ＭＰＵ１０−２がＭＰＵ１０−１からホストへの転送指示通知をバス３を介して検出すると、これをトリガとして、ＭＰＵ１０−２では、ＮＡＮＤメモリ３０ｂから静的ウェアレベリングを実行する必要があるブロックを選択する（ステップＳ２００）。そして、ＭＰＵ１０−２では、ＮＡＮＤメモリ３０ｂに対し、書き換え回数の少ないブロックを書き換え回数の多いブロックに交換する静的ウェアレベリング処理を実行する（ステップＳ２１０）。このようにして、ライト処理とウェアレベリング処理が並行して実行される。特に、ＲＡＭ２０ａでステップＳ１３０で行うフラッシュ処理を行う必要がない場合は、ＮＡＮＤメモリ３０ｂでのウェアレベリングを早めに開始することができ、ライト処理とウェアレベリング処理を効率よく並列化することができる。
【００４０】
なお、上述では、転送指示通知（ステップＳ１５０）を検出後、静的ウェアレベリング処理を実行しているが、図４に示すように、ＭＰＵ１０−１のフラッシュ処理（ステップＳ１３０）が実行されたことをＭＰＵ１０−２が検出すると、これをトリガとして、ＭＰＵ１０−２では、ＮＡＮＤメモリ３０ｂから静的ウェアレベリングを実行する必要があるブロックを選択するようにしてもよい（ステップＳ２００）。そして、ＭＰＵ１０−２では、ＮＡＮＤメモリ３０ｂに対し、書き換え回数の少ないブロックを書き換え回数の多いブロックに交換する静的ウェアレベリング処理を実行する（ステップＳ２１０）。このようにして、ライト処理とウェアレベリング処理が並行して実行される。このような制御によれば、ライト処理とウェアレベリング処理を効率よく並列化することができる。
【００４１】
つぎに、ライト処理とテーブル更新処理を並行して行う場合の動作例について、図５に示すフローチャートを参照して説明する。この動作例では、ストレージグループＡに関する管理情報をストレージグループＢのＲＡＭ２０ｂに格納し、ストレージグループＢに関する管理情報をストレージグループＡのＲＡＭ２０ａに格納することを前提としている。
【００４２】
ホスト１からライト要求を受信した場合（ステップＳ３００）、ＭＰＵ１０−１は、上記した（ａ）〜（ｄ）の判断を行って、どちらのＲＡＭにホスト１からのデータを書き込むかを判断する（ステップＳ３１０）。ここでは、ＲＡＭ２０ａにデータを書き込むと判断したとする。
【００４３】
つぎに、ＭＰＵ１０−１は、選択したＲＡＭ２０ａが満杯であるか否かを判断する（ステップＳ３２０）。選択したＲＡＭ２０ａが満杯であると判断された場合、ＲＡＭ２０ａからＮＡＮＤメモリ３０ａへのフラッシュ動作が実行される（ステップＳ３３０）。フラッシュ処理が実行された場合、フラッシュ処理の終了はＮＡＮＤ制御回路３５ａからバス３に通知される。選択したＲＡＭ２０ａが満杯でないことを検出した場合、またはフラッシュ終了の通知を検出した場合、ＭＰＵ１０−１では、バス３を介してホスト１に対しライトデータの転送指示を通知する（ステップＳ３５０）。
【００４４】
ここでは、ステップＳ３３０でフラッシュ処理が行われたとする。ＭＰＵ１０−２は、ＭＰＵ１０−１からホストへの転送指示通知をバス３を介して検出すると、これをトリガとして、ＭＰＵ１０−２では、ステップＳ３３０で行われたＲＡＭ２０ａからＮＡＮＤメモリ３０ａへのフラッシュ処理に起因する管理情報の更新をストレージグループＢのＲＡＭ２０ｂに対して実行させる（ステップＳ４００）。すなわち、ストレージグループＡに関する管理テーブルは、ストレージグループＢのＲＡＭ２０ｂに格納されており、ＭＰＵ１０−２では、ＲＡＭ２０ｂに格納されたストレージグループＡに関する管理テーブルの更新を実行する。
【００４５】
また、ステップＳ３５０での転送指示通知によってホスト１からＲＡＭ２０ａに対するデータ転送が開始される（ステップＳ３６０）。ＭＰＵ１０−１では、Ｉ／Ｆ２からＲＡＭ２０ａへのデータ転送終了をＲＡＭ制御回路２５ａから受信すると（ステップＳ３７０）、バス３を介してホスト１へ完了通知を送信する（ステップＳ３８０）。これ以降、ＭＰＵ１０−１では、ホスト１からの要求があるまで、待機している。
【００４６】
ＭＰＵ１０−２では、ＭＰＵ１０−１からホスト１への完了通知を検出すると、これをトリガとして、ストレージグループＡに関するＩＦ−ＲＡＭ間のデータ転送処理に起因する管理テーブルの更新をストレージグループＢのＲＡＭ２０ｂで実行させる（ステップＳ４００）。
【００４７】
このように、第１の実施の形態では、複数のＭＰＵが、１つのストレージグループについてのＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理と、他のストレージグループについてのＮＡＮＤメモリの保守に関する制御を分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。また、管理情報を異なるストレージグループのＲＡＭに格納し、複数のＭＰＵが、１つのストレージグループについてのＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理と、このＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理に関する管理情報の更新処理とを分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。また、複数のＭＰＵが、１つのストレージグループについてのＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理と、他のストレージグループについてのフラッシュ処理を分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。
【００４８】
（第２の実施の形態）
図６は、第２の実施の形態にかかるメモリシステムとしてのＳＳＤ１００の構成例を示すブロック図である。この第２の実施の形態のＳＳＤは、明確なグループ分けは行われておらず、複数のＲＡＭ２０ａ,２０ｂ，…、複数のＲＡＭ制御回路２５ａ,２５ｂ，…、複数のＮＡＮＤメモリ３０ａ,３０ｂ，…、複数のＮＡＮＤ制御回路…３５ａ,３５ｂ，…を有するストレージ部を有する。ＮＡＮＤ制御回路３５ａは、専用線１６によってＮＡＮＤメモリ３０ａ、３０ｂにアクセス可能であり、ＮＡＮＤ制御回路３５ｂも、専用線１６によってＮＡＮＤメモリ３０ａ、３０ｂにアクセス可能である。
【００４９】
第２の実施の形態のＳＳＤは、図７に示すように、１つのＲＡＭと複数のＮＡＮＤメモリが同時に活性化して転送が可能であり、その複数のＮＡＮＤメモリには、他のＲＡＭからもアクセス可能である。すなわち、ＲＡＭ２０ａとＮＡＮＤメモリ３０ａ，３０ｂとの間でデータ転送が可能であり、ＲＡＭ２０ｂとＮＡＮＤメモリ３０ａ，３０ｂとの間でデータ転送が可能である。
【００５０】
第２の実施の形態では、ＮＡＮＤメモリの並列度が上がるので、ＲＡＭからＮＡＮＤメモリへの転送速度が上がり、その転送中に使用されていないＲＡＭではテーブル更新処理を行うことが可能である。また、一方のＭＰＵ１０−１でリード／ライト処理を実行している場合に、他方のＭＰＵ１０−２がＮＣＱ処理を実行することも可能である。
【００５１】
また、第２の実施の形態において、データ転送のためのＲＡＭを選択する際には、ＲＡＭの空き容量に基づく切り替えや、ＲＡＭのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく切り替えなどが可能である。第２の実施の形態において、ＭＰＵ１０−１、１０−２が行うべき処理機能は固定的に分担させてもよいし、一方のＭＰＵがリード／ライト処理を実行している場合、待機中の他方のＭＰＵが上記したリード／ライト処理以外の処理を実行するようにしてもよい。
【００５２】
このように第２の実施の形態では、ＲＡＭ−ＮＡＮＤメモリ間のバンド幅が大きいので、ＲＡＭ−ＮＡＮＤ間のデータ転送を高速にしつつ、その転送中に使用していないＲＡＭでの処理が可能である。
【００５３】
（第３の実施の形態）
図８は、第３の実施の形態にかかるメモリシステムとしてのＳＳＤ１００の構成例を示すブロック図である。第３の実施の形態のＳＳＤも、明確なグループ分けは行われておらず、複数のＲＡＭ２０ａ,２０ｂ，…、複数のＲＡＭ制御回路２５ａ,２５ｂ，…、複数のＮＡＮＤメモリ３０ａ,３０ｂ，…、複数のＮＡＮＤ制御回路…３５ａ,３５ｂ，…を有するストレージ部を有する。
【００５４】
第３の実施の形態では、図１と同様、ＮＡＮＤ制御回路３５ａはＮＡＮＤメモリ３０ａのみにアクセスでき、ＮＡＮＤ制御回路３５ｂはＮＡＮＤメモリ３０ｂのみにアクセスできる。ただし、図８では、ＲＡＭ制御回路２５ａは、専用線１７ａによってＮＡＮＤ制御回路３５ａ、３５ｂに接続され、ＲＡＭ２０ａは、ＮＡＮＤメモリ３０ａ、３０ｂの双方と独立したデータ転送が可能である。また、ＲＡＭ制御回路２５ｂは、専用線１７ｂによってＮＡＮＤ制御回路３５ａ、３５ｂに接続され、ＲＡＭ２０ｂは、ＮＡＮＤメモリ３０ａ、３０ｂの双方と独立したデータ転送が可能である。したがって、第３の実施の形態のＳＳＤは、図９に示すように、複数のＮＡＮＤ制御回路にぶらさがる複数のＮＡＮＤメモリのうちの１つを選択し、選択した１つのＮＡＮＤメモリに対しＲＡＭからのアクセスを行うことができる。したがって、図８の系では、例えば、ＲＡＭに格納されているデータをＮＡＮＤメモリにフラッシュする際に、フレキシブルにＮＡＮＤメモリを選択することができ、このため、フラッシュ効率のよいＮＡＮＤメモリを選択したり、ＮＡＮＤメモリ間の処理(ウェアレベリング処理、リフレッシュ処理など)を行うことが可能である。
【００５５】
第３の実施の形態では、第１の実施の形態で行うことが可能な、並列処理をすべて実行させることができる。並列処理としては、
・ＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理と保守処理との並列
・ＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理とフラッシュ処理との並列
・ＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理とＮＣＱ処理との並列
・ＩＦ−ＲＡＭ−ＮＡＮＤ間データ転送処理とテーブル更新処理との並列
などがある。
テーブル更新処理は、データ転送処理に使用されていないＲＡＭを用いて実行される。
【００５６】
また、第３の実施の形態において、データ転送のためのＲＡＭを選択する際には、第１の実施の形態で説明した全ての切り替え、すなわちＲＡＭの空き容量に基づく切り替えや、ＮＡＮＤメモリの疲労度（書き換え回数の大小）に基づく切り替え、ＲＡＭのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく切り替え、ホストから指定される論理アドレス（ＬＢＡ）の局所性を考慮した切り替えが可能である。第３の実施の形態において、ＭＰＵ１０−１、１０−２が行うべき処理機能は固定的に分担させてもよいし、一方のＭＰＵがリード／ライト処理を実行している場合、待機中の他方のＭＰＵが上記したリード／ライト処理以外の処理を実行するようにしてもよい。
【００５７】
第３の実施の形態では、保守が行われた書き込みやすいＮＡＮＤメモリを選択したり、レフレッシュやウェアレベリングを別のＮＡＮＤメモリ間で行うことができ、高速データ転送が可能となり、また信頼性を向上させることができる。
【符号の説明】
【００５８】
１  ホスト装置、２  ＡＴＡインタフェース、３  バス、２５ａ，２５ｂ  ＲＡＭ制御回路、３０ａ，３０ｂ  ＮＡＮＤメモリ、３５ａ，３５ｂ  ＮＡＮＤ制御回路、１０−１，１０−２  ＭＰＵ、１００  ＳＳＤ。
【図１】
2011070365.tif 000003
【図２】
2011070365.tif 000004
【図３】
2011070365.tif 000005
【図４】
2011070365.tif 000006
【図５】
2011070365.tif 000007
【図６】
2011070365.tif 000008
【図７】
2011070365.tif 000009
【図８】
2011070365.tif 000010
【図９】
2011070365.tif 000011