説明

メモリシステム

【課題】サーバー用途などのハイエンドストレージに適用可能とする。
【解決手段】不揮発性の第1の記憶部と、第1の記憶部のバッファメモリとしての第2の記憶部と、第1の記憶部を駆動制御する第1の制御回路と、第2の記憶部を駆動制御する第2の制御回路とを夫々含み、各ストレージグループ内の第1の記憶部と第2の記憶部との間でデータ転送が可能な複数のストレージグループと、ホスト装置に接続されるインタフェースと、インタフェース、各ストレージグループの第1および第2の制御回路とバス接続され、複数のストレージグループの第1および第2の制御回路を制御する複数のMPUとを備え、複数のMPUは、1つのストレージグループについての第2の記憶部を介したホスト装置と第1の記憶部との間のデータ転送に関する第1の制御と、他のストレージグループについての第1の記憶部の保守に関する制御を含む第2の制御を分担して独立に実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性半導体メモリを具えるメモリシステムに関する。
【背景技術】
【0002】
今日、半導体メモリは、大型コンピュータの主記憶から、パーソナルコンピュータ、家電製品、携帯電話等、各種分野で利用されている。市場が大きく伸びているものは、NANDフラッシュメモリに代表されるFlash-E2PROM型の不揮発性メモリであり、NANDフラッシュメモリが搭載された各種メモリカード(SDカード、MMCカード、MSカード、CFカード)が画像、動画、音声、ゲーム等の情報を記憶する媒体として、デジタルカメラ、デジタルビデオ、MP3等の音楽機器、モバイルPC等の記憶媒体、デジタルTVなどの記憶媒体に使われている。また、USB対応のカードも広くPCの記憶媒体として使われている。
【0003】
Flash-E2PROM型の不揮発性メモリは、主にNOR型とNAND型が有る。NOR型は高速リードが可能であるが、ライトの際の実効バンド幅が小さく、ファイル記録に適していない。一方、NAND型は、NOR型に比べて高集積化が可能で、しかもアクセス時間が少し遅いが、バーストリードが可能で、ライトの際の実効バンド幅が高く、上記のようなメモリカード、USBメモリや、最近では携帯電話のメモリ等で用いられている。
【0004】
このように、NAND型の不揮発性メモリは大容量化・高集積化が可能であるため、ハードディスクの置き換えとして考えられることが多いが、NAND型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。また、消去単位が大きいため画像データや音楽ファイルなど大容量データを扱うことを想定する場合ならよいが、通常のPC使用環境ではそのような大容量データばかりではないため、NANDメモリの疲労を早めてしまう。
【0005】
そこで、NANDメモリを用いて大容量の二次記憶装置を構成する場合においては、特許文献1に示されるように、フラッシュメモリとホスト装置との間に、RAMなどのキャッシュメモリを介在させて、フラッシュメモリでの書き込み回数(消去回数)を減らすように構成されていることが多い。
【0006】
このようなNANDメモリを用いた二次記憶装置においては、NANDメモリおよびRAMを駆動する駆動回路と、駆動回路を制御するMPUを備えることが多いが(例えば特許文献2)、従来技術では、1MPUおよび1駆動回路でNANDメモリおよびRAMを制御しているので、サーバー用途などのハイエンドストレージとしては、性能上課題を有する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特表2007−528079号
【特許文献2】特許第3688835号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、サーバー用途などのハイエンドストレージに適用可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性の第1の記憶部と、第1の記憶部のバッファメモリとしての第2の記憶部と、第1の記憶部を駆動制御する第1の制御回路と、第2の記憶部を駆動制御する第2の制御回路とを夫々含み、各ストレージグループ内の第1の記憶部と第2の記憶部との間でデータ転送が可能な複数のストレージグループと、ホスト装置に接続されるインタフェースと、前記インタフェース、各ストレージグループの第1および第2の制御回路とバス接続され、前記複数のストレージグループの第1および第2の制御回路を制御する複数のMPUとを備え、前記複数のMPUは、1つのストレージグループについての前記第2の記憶部を介したホスト装置と前記第1の記憶部との間のデータ転送に関する第1の制御と、他のストレージグループについての第1の記憶部の保守に関する制御を含む第2の制御を分担して独立に実行することを特徴とする。
【発明の効果】
【0010】
本発明によれば、データ転送処理の高速化、レスポンス速度の向上を実現し、サーバー用途などのハイエンドストレージに適用可能なメモリシステムを提供するできる。
【図面の簡単な説明】
【0011】
【図1】図1は、この発明の第1の実施の形態のメモリシステムの構成例を示すブロック図。
【図2】図2は、第1の実施の形態のRAMとNANDメモリのデータ転送態様を示す概念図。
【図3】図3は、第1の実施の形態の動作例を示すフローチャート。
【図4】図4は、第1の実施の形態の動作例を示すフローチャート。
【図5】図5は、第1の実施の形態の他の動作例を示すフローチャート。
【図6】図6は、この発明の第2の実施の形態のメモリシステムの構成例を示すブロック図。
【図7】図7は、第1の実施の形態のRAMとNANDメモリのデータ転送態様を示す概念図。
【図8】図8は、この発明の第2の実施の形態のメモリシステムの構成例を示すブロック図。
【図9】図9は、第1の実施の形態のRAMとNANDメモリのデータ転送態様を示す概念図。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【0013】
(第1の実施の形態)
図1は、第1の実施の形態にかかるメモリシステムとしてのSSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを備え、このATAインタフェース2にバス3が接続されている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
【0014】
バス3には、複数のMPU(マイクロプロセッサユニット)10−1、10−2、…と、複数のRAM制御回路25a、25b、…と、複数のNAND制御回路35a、35b、…が接続されている。NAND制御回路35aには、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)30aが接続され、NAND制御回路35bには、NANDメモリ30aが接続され、NAND制御回路35c、…には、NANDメモリ30c、…がそれぞれ接続されている。RAM制御回路25aには、NANDメモリ30aのバッファメモリとしてのRAM20aが接続され、RAM制御回路25b、には、NANDメモリ30bのバッファメモリとしてのRAM20bが接続され、RAM制御回路25c、…には、RAM20c、…がそれぞれ接続されている。RAM制御回路25aとNAND制御回路35aとは、バス3の他に専用線15aでも接続されている。同様に、RAM制御回路25bとNAND制御回路35bとは専用線15bでも接続され、RAM制御回路25c、…とNAND制御回路35c、…とはそれぞれ専用線15c、…でも接続されている。
【0015】
以下の説明では、本SSD100は、2個のMPU10−1、10−2と、2個のRAM20a、20bと、2個のNANDメモリ30a、30bと、2個のRAM制御回路25a、25bと、2個のNAND制御回路35a、35bを備えるものとする。
【0016】
NANDメモリ30a、30bは、ホスト1によって指定されたユーザデータを記憶したり、RAM20a、20bで管理される管理情報をバックアップ用に記憶したりする。NANDメモリ30a、30bは、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ30a、30bは、夫々複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ30a、30bでは、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【0017】
RAM20a、20bとしては、DRAMなどの揮発性RAMでもよいし、FeRAMやMRAMなどの不揮発性RAMでもよい。RAM20a、20bは、データ転送用、管理情報記録用の記憶部として使用される。データ転送用の記憶部(データ転送用キャッシュ)としては、ホスト1から書込要求があったデータをNANDメモリに書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDメモリから読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDメモリにバックアップされているデータの格納位置などを管理するための各種管理情報(各種管理テーブル、管理テーブルの変更差分情報であるログなど)を格納するために使用される。
【0018】
RAM制御回路25aは、MPU10−1、10−2と、RAM20aとのインタフェース処理、RAM20aに対するリード/ライト制御などを実行する。RAM制御回路25bは、MPU10−1、10ー2と、RAM20bとのインタフェース処理、RAM20aに対するリード/ライト制御などを実行する。
【0019】
NAND制御回路35aは、MPU10−1、10−2と、NANDメモリ30aとのインタフェース処理、NANDメモリ30a−RAM20a間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。NAND制御回路35bは、MPU10−1、10ー2と、NANDメモリ30aとのインタフェース処理、NANDメモリ30a−RAM20a間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
【0020】
RAM20a−NANDメモリ30a間は複数のチャネルで接続され、これら複数のチャネルを用いた並列データ転送が可能である。また、NANDメモリ30aは、複数のバンクに分割され、RAM20a−NANDメモリ30a間はこれら複数のバンクを用いたバンクインターリーブによる並列動作が可能である。同様に、RAM20b−NANDメモリ30b間は複数のチャネルで接続され、これら複数のチャネルを用いた並列データ転送が可能である。同様に、NANDメモリ30bは、複数のバンクに分割され、RAM20b−NANDメモリ30b間はこれら複数のバンクを用いたバンクインターリーブによる並列動作が可能である。ホスト1は、基本的に2つのNANDメモリ30a、30bによって構成される全メモリ空間のうちの管理テーブルなどの管理情報などが記憶される管理領域を除く全ユーザメモリ空間にアクセス可能である。
【0021】
第1の実施の形態では、RAM20a、NANDメモリ30a、RAM制御回路25a、NAND制御回路35aでストレージグループAを構成し、ストレージグループA内のRAM20a、NANDメモリ30a間でのみデータ転送が可能である。RAM20b、NANDメモリ30b、RAM制御回路25b、NAND制御回路35bでストレージグループBを構成し、ストレージグループB内のRAM20b、NANDメモリ30b間でのみデータ転送が可能である。MPU10−1は、ストレージグループA,Bにアクセス可能であり、MPU10−2も、ストレージグループA,Bにアクセス可能である。
【0022】
第1の実施の形態では、MPU10−1、10−2が行うべき処理機能は固定的に分担されているものとする。このように各MPU10−1、10−2で処理機能を固定的に分担させれば、各MPU上で動作するファームウェアを簡単、単純化させることが可能になる。MPU10−1は、基本的に、ストレージグループA,Bのうちの一方についてのホスト1から要求されるリード/ライト処理に係わる処理(IF−RAM−NAND間データ転送)を実行する。MPU10−2は、基本的に、ストレージグループA,Bのうちの他方についてのホスト1から要求されるリード/ライト処理以外の処理を実行する。リード/ライト処理以外の処理としては、他方のストレージグループについてのNANDの保守処理(ウェアレベリング処理、レフレッシュ処理、ガーベージコレクション処理などを含む)、RAMからNANDメモリへのフラッシュ処理、NCQ(Native Command Queuing)処理などを含む。
【0023】
なお、各MPU10−1、10−2に処理機能を固定的に分担させるのではなく、一方のMPUがリード/ライト処理を実行している場合、待機中である他方のMPUが上記したリード/ライト処理以外の処理を実行するようにしてもよく、この場合、一方のMPUがリード/ライト処理以外の処理を実行している場合は、他方のMPUがリード/ライト処理を実行することになる。このように、第1の実施の形態では、図2に示すように、RAM20a、NANDメモリ30aを含むストレージグループAと、RAM20b、NANDメモリ30bを含むストレージグループBとは、異なる処理を独立にかつ並行に実行することが可能となる。
【0024】
NAND型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリであり、その寿命は、書き換え回数に依存している。一方、ホスト1が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際にホスト1から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、NAND型フラッシュメモリでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われている。ウェアレベリング処理では、特定の消去単位(ブロック)への、書き込み、消去の集中を防ぐために、ブロック間で書き換え回数が均一に分布するようにする。静的ウェアレベリングでは、書き換えが長い間行われず書き換え回数の少ないブロックを書き換え回数の多いブロックと交換する。例えば、一方のMPU10−1がストレージグループAに対しIF−RAM−NAND間データ転送を実行させている際に、これに並行して他方のMPU10−1がストレージグループBに対しウェアレベリング処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0025】
NAND型フラッシュメモリでは、メモリセルトランジスタに記憶されているデータが、時間の経過により反転してしまうことがあり、これを防ぐために、メモリセルのデータを読出し、別のセルに書込む処理がリフレッシュ処理である。例えば、一方のMPU10−1がストレージグループAに対しIF−RAM−NAND間データ転送を実行させている際に、これに並行して他方のMPU10−1がストレージグループBに対しリフレッシュ処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0026】
NANDメモリでは、物理ブロックを複数個組み合わせた論理ブロックという仮想ブロックの概念を導入し、この論理ブロック単位に消去、書き込み、読み出しを行っている。データの消去単位(論理ブロック)と、データの管理単位が異なる場合、NANDメモリの書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、NANDメモリの記憶領域を有効利用できないので、有効データを集めて違う論理ブロックに書き直すコンパクションと呼ばれる処理が行われる。ガーベージコレクション処理としては、このようなコンパクション処理を含む。例えば、一方のMPU10−1がストレージグループAに対しIF−RAM−NAND間データ転送を実行させている際に、これに並行して他方のMPU10−1がストレージグループBに対しガーベージコレクション処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0027】
RAMからNANDメモリへのフラッシュ処理とは、RAMのキャッシュ領域が満杯になる前、あるいは満杯になったときに、キャッシュ領域のデータをNANDメモリに追い出す処理である。例えば、一方のMPU10−1がストレージグループAに対しIF−RAM−NAND間データ転送を実行させている際に、これに並行して他方のMPU10−1がストレージグループBに対しフラッシュ処理を実行させれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0028】
NCQ処理とは、NANDメモリに対するコマンドをキューに格納し、コマンドの順番を変えて実行する処理であり、一方のMPU10−1でリード/ライト処理を実行している場合、他方のMPU10−2がNCQ処理を実行すれば、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0029】
MPU10−2が管理する管理テーブルには、RAM内のキャッシュ領域を管理するためのテーブル、NANDメモリ中でのデータの格納位置を管理するためのテーブル、空きブロック管理するためのテーブル、使用中ブロックを管理するためのテーブル、誤りが多いなど記憶領域として使用できないブロックを管理するためのテーブル、各ブロックの書き換え回数を管理するためのテーブルなどがある。管理情報としては、これらの管理テーブルの他に、管理テーブルの変更差分情報であるログなどもある。このような管理情報は、RAM20a、20bに格納されている。ストレージグループAに関する管理情報は、ストレージグループAのRAM20aに格納し、ストレージグループBに関する管理情報は、ストレージグループBのRAM20bに格納するようにしてもよいし、ストレージグループAに関する管理情報をストレージグループBのRAM20bに格納し、ストレージグループBに関する管理情報をストレージグループAのRAM20aに格納するようにしてもよい。
【0030】
ストレージグループAに関する管理情報をストレージグループBのRAM20bに格納し、ストレージグループBに関する管理情報をストレージグループAのRAM20aに格納するようにした場合、一方のMPU10−1がストレージグループAに対しIF−RAM−NAND間データ転送を実行させている際に、これに並行して他方のMPU10−1が、ストレージグループAで行っているIF−RAM−NAND間データ転送に関する管理情報の更新をストレージグループBのRAM20bに対して行うことができる。これにより、システム全体としてのデータ転送処理速度、レスポンス速度を高速化することができる。
【0031】
つぎに、MPU10−1で行われるライト処理(IF→RAM→NAND間データ転送)の際のストレージグループA,Bの選択について説明する。選択の手法としては、
(a)RAMの空き容量に基づく切り替え
(b)NANDメモリの疲労度(書き換え回数の大小)に基づく切り替え
(c)RAMのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく 切り替え
(d)ホストから指定される論理アドレス(LBA)の局所性(頻繁にデータ更新さ れるアドレスであるか否か)を考慮した切り替え
などがある。
【0032】
(a)の切り替えについて説明する、ホスト1からライト要求を受信した場合、MPU10−1は、RAM20a、20bの各キャッシュ領域の空き容量を確認し、より空き容量の多い一方のRAMにホスト1からのデータをライトする。例えば、RAM20aが有効データで満杯の場合は、他方のRAM20bにホスト1からのデータをライトする。この切り替え処理によれば、RAMからNANDメモリへの無駄なフラッシュ処理が低減し、ホスト1からライト要求に高速応答できる確率が向上する。
【0033】
(b)の切り替えについて説明する。ホスト1からライト要求を受信した場合、MPU10−1は、このライト要求は書き込みサイズが大きいか小さいかを判断し、さらにNANDメモリ30a、30bの書き換え回数の平均を求め、どちらのNANDメモリ30a、30bが疲労度が高いかを判断する。そして、MPU10−1は、疲労度が高い方のNANDメモリと同じストレージグループのRAMに対して書き込みサイズが大きいデータをライトさせ、疲労度が低い方のNANDメモリと同じストレージグループのRAMに対して書き込みサイズが小さいデータをライトさせる。書き込みサイズの小さいデータが書き込まれたNANDメモリでは、ガーベージコレクションが増え、結果的にブロックの書き換え回数が増加してしまうので、疲労度の高いNANDメモリには、書き込みサイズの大きなデータを書き込むようにすることで、NANDメモリの寿命を延ばし、信頼性を向上させる。
【0034】
(c)の切り替えについて説明する。ホスト1からライト要求を受信した場合、MPU10−1は、一方のRAM20aにNANDメモリの書き込み単位(ページ)より小さい中途半端なサイズのデータがあったときには、NANDメモリの書き込み単位(ページ)より大きなデータを作成するために、このRAM20aにホスト1からのデータをライトさせる。これにより、RAMに大きなデータが貯まった後、フラッシュが行われ、書き込み効率が向上し、高速化および信頼性が向上する。なお、書き込み効率とは、所定期間内におけるホストから書き込んだデータ量に対する論理ブロックの消去量の統計値のことである。
【0035】
(d)の切り替えについて説明する。ホスト1からライト要求を受信した場合、MPU10−1は、このライト要求は頻繁に更新(使用される)論理アドレス(LBA)に関するライト要求であるか否かを判定し、頻繁に使用されるアドレスである場合は、一方のRAMにデータをライトさせ、頻繁に使用されるアドレスでない場合は、他方のRAMにデータをライトさせる。これにより、RAMの用途が明確になり、管理テーブルの最適化(最小化)やフラッシュ処理の最適化が可能である。
【0036】
つぎに、一方のストレージグループでライト処理を実行し、これに並行して他方のストレージグループでウェアレベリング処理を実行する場合の処理について図3に示すフローチャートを参照して説明する。ホスト1からライト要求を受信した場合(ステップS100)、MPU10−1は、上記した(a)〜(d)の判断を行って、どちらのRAMにホスト1からのデータを書き込むかを判断する(ステップS110)。ここでは、RAM20aにデータを書き込むと判断したとする。
【0037】
つぎに、MPU10−1は、選択したRAM20aが満杯であるか否かを判断する(ステップS120)。選択したRAM20aが満杯であると判断された場合、RAM20aからNANDメモリ30aへのフラッシュ動作が実行される(ステップS130)。フラッシュ処理が実行された場合、フラッシュ処理の終了はNAND制御回路35aからバス3に通知される。選択したRAM20aが満杯でないことを検出した場合、またはフラッシュ終了の通知を検出した場合、MPU10−1では、バス3を介してホスト1に対しライトデータの転送指示を通知する(ステップS150)。
【0038】
この転送指示通知によってホスト1からRAM20aに対するデータ転送が開始される(ステップS160)。MPU10−1では、I/F2からRAM20aへのデータ転送終了をRAM制御回路25aから受信すると(ステップS170)、バス3を介してホスト1へ完了通知を送信する(ステップS180)。これ以降、MPU10−1では、ホスト1からの要求があるまで、待機している。
【0039】
一方、MPU10−2がMPU10−1からホストへの転送指示通知をバス3を介して検出すると、これをトリガとして、MPU10−2では、NANDメモリ30bから静的ウェアレベリングを実行する必要があるブロックを選択する(ステップS200)。そして、MPU10−2では、NANDメモリ30bに対し、書き換え回数の少ないブロックを書き換え回数の多いブロックに交換する静的ウェアレベリング処理を実行する(ステップS210)。このようにして、ライト処理とウェアレベリング処理が並行して実行される。特に、RAM20aでステップS130で行うフラッシュ処理を行う必要がない場合は、NANDメモリ30bでのウェアレベリングを早めに開始することができ、ライト処理とウェアレベリング処理を効率よく並列化することができる。
【0040】
なお、上述では、転送指示通知(ステップS150)を検出後、静的ウェアレベリング処理を実行しているが、図4に示すように、MPU10−1のフラッシュ処理(ステップS130)が実行されたことをMPU10−2が検出すると、これをトリガとして、MPU10−2では、NANDメモリ30bから静的ウェアレベリングを実行する必要があるブロックを選択するようにしてもよい(ステップS200)。そして、MPU10−2では、NANDメモリ30bに対し、書き換え回数の少ないブロックを書き換え回数の多いブロックに交換する静的ウェアレベリング処理を実行する(ステップS210)。このようにして、ライト処理とウェアレベリング処理が並行して実行される。このような制御によれば、ライト処理とウェアレベリング処理を効率よく並列化することができる。
【0041】
つぎに、ライト処理とテーブル更新処理を並行して行う場合の動作例について、図5に示すフローチャートを参照して説明する。この動作例では、ストレージグループAに関する管理情報をストレージグループBのRAM20bに格納し、ストレージグループBに関する管理情報をストレージグループAのRAM20aに格納することを前提としている。
【0042】
ホスト1からライト要求を受信した場合(ステップS300)、MPU10−1は、上記した(a)〜(d)の判断を行って、どちらのRAMにホスト1からのデータを書き込むかを判断する(ステップS310)。ここでは、RAM20aにデータを書き込むと判断したとする。
【0043】
つぎに、MPU10−1は、選択したRAM20aが満杯であるか否かを判断する(ステップS320)。選択したRAM20aが満杯であると判断された場合、RAM20aからNANDメモリ30aへのフラッシュ動作が実行される(ステップS330)。フラッシュ処理が実行された場合、フラッシュ処理の終了はNAND制御回路35aからバス3に通知される。選択したRAM20aが満杯でないことを検出した場合、またはフラッシュ終了の通知を検出した場合、MPU10−1では、バス3を介してホスト1に対しライトデータの転送指示を通知する(ステップS350)。
【0044】
ここでは、ステップS330でフラッシュ処理が行われたとする。MPU10−2は、MPU10−1からホストへの転送指示通知をバス3を介して検出すると、これをトリガとして、MPU10−2では、ステップS330で行われたRAM20aからNANDメモリ30aへのフラッシュ処理に起因する管理情報の更新をストレージグループBのRAM20bに対して実行させる(ステップS400)。すなわち、ストレージグループAに関する管理テーブルは、ストレージグループBのRAM20bに格納されており、MPU10−2では、RAM20bに格納されたストレージグループAに関する管理テーブルの更新を実行する。
【0045】
また、ステップS350での転送指示通知によってホスト1からRAM20aに対するデータ転送が開始される(ステップS360)。MPU10−1では、I/F2からRAM20aへのデータ転送終了をRAM制御回路25aから受信すると(ステップS370)、バス3を介してホスト1へ完了通知を送信する(ステップS380)。これ以降、MPU10−1では、ホスト1からの要求があるまで、待機している。
【0046】
MPU10−2では、MPU10−1からホスト1への完了通知を検出すると、これをトリガとして、ストレージグループAに関するIF−RAM間のデータ転送処理に起因する管理テーブルの更新をストレージグループBのRAM20bで実行させる(ステップS400)。
【0047】
このように、第1の実施の形態では、複数のMPUが、1つのストレージグループについてのIF−RAM−NAND間データ転送処理と、他のストレージグループについてのNANDメモリの保守に関する制御を分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。また、管理情報を異なるストレージグループのRAMに格納し、複数のMPUが、1つのストレージグループについてのIF−RAM−NAND間データ転送処理と、このIF−RAM−NAND間データ転送処理に関する管理情報の更新処理とを分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。また、複数のMPUが、1つのストレージグループについてのIF−RAM−NAND間データ転送処理と、他のストレージグループについてのフラッシュ処理を分担して独立に実行するようにしたので、システムの平均速度を向上させることが可能となる。
【0048】
(第2の実施の形態)
図6は、第2の実施の形態にかかるメモリシステムとしてのSSD100の構成例を示すブロック図である。この第2の実施の形態のSSDは、明確なグループ分けは行われておらず、複数のRAM20a,20b,…、複数のRAM制御回路25a,25b,…、複数のNANDメモリ30a,30b,…、複数のNAND制御回路…35a,35b,…を有するストレージ部を有する。NAND制御回路35aは、専用線16によってNANDメモリ30a、30bにアクセス可能であり、NAND制御回路35bも、専用線16によってNANDメモリ30a、30bにアクセス可能である。
【0049】
第2の実施の形態のSSDは、図7に示すように、1つのRAMと複数のNANDメモリが同時に活性化して転送が可能であり、その複数のNANDメモリには、他のRAMからもアクセス可能である。すなわち、RAM20aとNANDメモリ30a,30bとの間でデータ転送が可能であり、RAM20bとNANDメモリ30a,30bとの間でデータ転送が可能である。
【0050】
第2の実施の形態では、NANDメモリの並列度が上がるので、RAMからNANDメモリへの転送速度が上がり、その転送中に使用されていないRAMではテーブル更新処理を行うことが可能である。また、一方のMPU10−1でリード/ライト処理を実行している場合に、他方のMPU10−2がNCQ処理を実行することも可能である。
【0051】
また、第2の実施の形態において、データ転送のためのRAMを選択する際には、RAMの空き容量に基づく切り替えや、RAMのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく切り替えなどが可能である。第2の実施の形態において、MPU10−1、10−2が行うべき処理機能は固定的に分担させてもよいし、一方のMPUがリード/ライト処理を実行している場合、待機中の他方のMPUが上記したリード/ライト処理以外の処理を実行するようにしてもよい。
【0052】
このように第2の実施の形態では、RAM−NANDメモリ間のバンド幅が大きいので、RAM−NAND間のデータ転送を高速にしつつ、その転送中に使用していないRAMでの処理が可能である。
【0053】
(第3の実施の形態)
図8は、第3の実施の形態にかかるメモリシステムとしてのSSD100の構成例を示すブロック図である。第3の実施の形態のSSDも、明確なグループ分けは行われておらず、複数のRAM20a,20b,…、複数のRAM制御回路25a,25b,…、複数のNANDメモリ30a,30b,…、複数のNAND制御回路…35a,35b,…を有するストレージ部を有する。
【0054】
第3の実施の形態では、図1と同様、NAND制御回路35aはNANDメモリ30aのみにアクセスでき、NAND制御回路35bはNANDメモリ30bのみにアクセスできる。ただし、図8では、RAM制御回路25aは、専用線17aによってNAND制御回路35a、35bに接続され、RAM20aは、NANDメモリ30a、30bの双方と独立したデータ転送が可能である。また、RAM制御回路25bは、専用線17bによってNAND制御回路35a、35bに接続され、RAM20bは、NANDメモリ30a、30bの双方と独立したデータ転送が可能である。したがって、第3の実施の形態のSSDは、図9に示すように、複数のNAND制御回路にぶらさがる複数のNANDメモリのうちの1つを選択し、選択した1つのNANDメモリに対しRAMからのアクセスを行うことができる。したがって、図8の系では、例えば、RAMに格納されているデータをNANDメモリにフラッシュする際に、フレキシブルにNANDメモリを選択することができ、このため、フラッシュ効率のよいNANDメモリを選択したり、NANDメモリ間の処理(ウェアレベリング処理、リフレッシュ処理など)を行うことが可能である。
【0055】
第3の実施の形態では、第1の実施の形態で行うことが可能な、並列処理をすべて実行させることができる。並列処理としては、
・IF−RAM−NAND間データ転送処理と保守処理との並列
・IF−RAM−NAND間データ転送処理とフラッシュ処理との並列
・IF−RAM−NAND間データ転送処理とNCQ処理との並列
・IF−RAM−NAND間データ転送処理とテーブル更新処理との並列
などがある。
テーブル更新処理は、データ転送処理に使用されていないRAMを用いて実行される。
【0056】
また、第3の実施の形態において、データ転送のためのRAMを選択する際には、第1の実施の形態で説明した全ての切り替え、すなわちRAMの空き容量に基づく切り替えや、NANDメモリの疲労度(書き換え回数の大小)に基づく切り替え、RAMのキャッシュ領域にページ単位より小さいデータが有るか否かに基づく切り替え、ホストから指定される論理アドレス(LBA)の局所性を考慮した切り替えが可能である。第3の実施の形態において、MPU10−1、10−2が行うべき処理機能は固定的に分担させてもよいし、一方のMPUがリード/ライト処理を実行している場合、待機中の他方のMPUが上記したリード/ライト処理以外の処理を実行するようにしてもよい。
【0057】
第3の実施の形態では、保守が行われた書き込みやすいNANDメモリを選択したり、レフレッシュやウェアレベリングを別のNANDメモリ間で行うことができ、高速データ転送が可能となり、また信頼性を向上させることができる。
【符号の説明】
【0058】
1 ホスト装置、2 ATAインタフェース、3 バス、25a,25b RAM制御回路、30a,30b NANDメモリ、35a,35b NAND制御回路、10−1,10−2 MPU、100 SSD。

【特許請求の範囲】
【請求項1】
データ消去の単位であるブロックを複数個有する不揮発性の第1の記憶部と、第1の記憶部のバッファメモリとしての第2の記憶部と、第1の記憶部を駆動制御する第1の制御回路と、第2の記憶部を駆動制御する第2の制御回路とを夫々含み、各ストレージグループ内の第1の記憶部と第2の記憶部との間でデータ転送が可能な複数のストレージグループと、
ホスト装置に接続されるインタフェースと、
前記インタフェース、各ストレージグループの第1および第2の制御回路とバス接続され、前記複数のストレージグループの第1および第2の制御回路を制御する複数のMPUとを備え、
前記複数のMPUは、1つのストレージグループについての前記第2の記憶部を介したホスト装置と前記第1の記憶部との間のデータ転送に関する第1の制御と、他のストレージグループについての第1の記憶部の保守に関する制御を含む第2の制御を分担して独立に実行することを特徴とするメモリシステム。
【請求項2】
前記複数のMPUは、1つのストレージグループについての前記第2の記憶部を介したホスト装置と前記第1の記憶部との間のデータ転送に関する第1の制御と、他のストレージグループについての第2の記憶部から第1の記憶部へのデータフラッシュに関する第2の制御を分担して独立に実行することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記第2の記憶部には、異なるストレージグループの第1および第2の記憶部に記憶されるデータを管理するための管理情報が記憶され、
前記複数のMPUは、少なくとも1つのストレージグループについての前記第2の記憶部を介したホスト装置と前記第1の記憶部との間のデータ転送に関する第1の制御と、第1の制御に起因する管理情報の更新処理に関する第2の制御を分担して独立に実行することを特徴とする請求項1または2に記載のメモリシステム。
【請求項4】
前記第1の制御を行うMPUは、第2の記憶部の空き容量、第2の記憶部とデータ転送が可能な第1の記憶部の疲労度、ホスト装置から指定されるアドレス、または第2の記憶部での書き込みサイズより小さいデータの有無に基づいて、データ転送を行うストレージグループを選択することを特徴とする請求項1〜3の何れか一つに記載のメモリシステム。
【請求項5】
データ消去の単位であるブロックを複数個有する不揮発性の複数の第1の記憶部と、複数の第1の記憶部のバッファメモリとしての複数の第2の記憶部と、複数の第1の記憶部を駆動制御する複数の第1の制御回路と、複数の第2の記憶部を駆動制御する複数の第2の制御回路とを有し、1つの第2の記憶部と複数の第1の記憶部との間でデータ転送が夫々可能なストレージ部と、
ホスト装置に接続されるインタフェースと、
前記インタフェース、前記ストレージ部の複数の第1および第2の制御回路とバス接続され、前記ストレージ部の複数の第1および第2の制御回路を制御する複数のMPUとを備え、
前記複数のMPUは、1つの第2の記憶部を介したホスト装置と複数の第1の記憶部との間のデータ転送に関する第1の制御と、前記第1の制御に使用されていない第2の記憶部を用いた処理を含む第2の制御とを分担して独立に実行することを特徴とするメモリシステム。
【請求項6】
データ消去の単位であるブロックを複数個有する不揮発性の複数の第1の記憶部と、複数の第1の記憶部のバッファメモリとしての複数の第2の記憶部と、複数の第1の記憶部を駆動制御する複数の第1の制御回路と、複数の第2の記憶部を駆動制御する複数の第2の制御回路とを有し、1つの第2の記憶部と複数の第1の記憶部のうちの1つの第1の記憶部との間でデータ転送が可能なストレージ部と、
ホスト装置に接続されるインタフェースと、
前記インタフェース、前記ストレージ部の複数の第1および第2の制御回路とバス接続され、前記ストレージ部の複数の第1および第2の制御回路を制御する複数のMPUとを備え、
前記複数のMPUは、前記第2の記憶部を介したホスト装置と複数の第2の記憶部から選択した1つの第1の記憶部との間のデータ転送に関する第1の制御と、第1の制御に使用されていない第1の記憶部の保守に関する制御を含む第2の制御を分担して独立に実行することを特徴とするメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−70365(P2011−70365A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−220349(P2009−220349)
【出願日】平成21年9月25日(2009.9.25)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】