(57)【要約】【課題】一つの実施形態は、各ブロックの有効クラスタ数を効率的に管理できるメモリシステムを提供することを目的とする。【解決手段】一つの実施形態によれば、メモリシステムにおいて、コントローラは、管理情報を第１の半導体メモリに格納する。管理情報は、ブロックの識別情報と有効クラスタ数とが複数のブロックについてそれぞれ対応付けられた情報である。コントローラは、ブロック管理部と第１のメモリコントローラとを有する。ブロック管理部は、ホストから受けたライト要求に応じて、データがライトされるブロックに対応した有効クラスタ数の更新指示を生成する。第１のメモリコントローラは、第１の半導体メモリから更新指示に応じた有効クラスタ数を読み出す。第１のメモリコントローラは、読み出された有効クラスタ数を更新指示に応じた更新量で更新する。第１のメモリコントローラは、更新された有効クラスタ数を第１の半導体メモリへ書き戻す。【選択図】図１
2020003838.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の第１の半導体メモリと、
複数のクラスタをそれぞれ含む複数のブロックを有する不揮発性の第２の半導体メモリと、
ブロックの識別情報と有効クラスタ数とが前記複数のブロックについてそれぞれ対応付けられた管理情報を前記第１の半導体メモリに格納するコントローラと、
を備え、
前記コントローラは、
ホストから受けたライト要求に応じて、データがライトされるブロックに対応した有効クラスタ数の更新指示を生成するブロック管理部と、
前記第１の半導体メモリから前記更新指示に応じた有効クラスタ数を読み出し、読み出された有効クラスタ数を前記更新指示に応じた更新量で更新し、更新された有効クラスタ数を前記第１の半導体メモリへ書き戻す第１のメモリコントローラと、
を有する
メモリシステム。
【請求項２】
前記第１のメモリコントローラは、前記読み出された有効クラスタ数を加減算する加減算回路を有する
請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、
前記更新指示の生成に応じて、前記更新された有効クラスタ数の書き戻しが完了する前に、前記ライト要求に対応するライト完了通知を前記ホストへ行うホストコントローラをさらに有する
請求項１又は２に記載のメモリシステム。
【請求項４】
前記ブロック管理部は、前記更新された有効クラスタ数を含む前記管理情報を用いて、前記複数のブロックのうちソースブロックとデスティネーションブロックとを指定してガーベージコレクションを行わせる実行指示を生成し、
前記コントローラは、
前記実行指示に従い、前記第２の半導体メモリにおける前記ソースブロックから有効クラスタのデータを読み出して有効クラスタのデータを前記第２の半導体メモリにおける前記デスティネーションブロックへ書き込む処理を指示するコマンドを前記第２の半導体メモリへ供給する第２のメモリコントローラをさらに有する
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項５】
前記第１のメモリコントローラは、前記更新指示に応じた更新量が積算された積算更新量を格納するキャッシュ領域を有する
請求項１から４のいずれか１項に記載のメモリシステム。
【請求項６】
前記第１のメモリコントローラは、前記読み出された有効クラスタ数を前記格納された積算更新量で更新する
請求項５に記載のメモリシステム。
【請求項７】
前記第１の半導体メモリは、複数のリフレッシュ領域を有し、
前記第１のメモリコントローラは、前記複数のリフレッシュ領域に対応した複数の前記キャッシュ領域を有する
請求項５又は６に記載のメモリシステム。
【請求項８】
前記複数のリフレッシュ領域は、第１のリフレッシュ領域及び第２のリフレッシュ領域を含み、
前記複数のキャッシュ領域は、
前記第１のリフレッシュ領域に対応した第１のキャッシュ領域と、
前記第２のリフレッシュ領域に対応した第２のキャッシュ領域と、
を含み、
前記第１のメモリコントローラは、前記第１の半導体メモリにおける前記第１のリフレッシュ領域でリフレッシュ処理が行われている第１の期間に前記第２のリフレッシュ領域から読み出された有効クラスタ数を前記第２のキャッシュ領域に格納された積算更新量で更新して前記第２のリフレッシュ領域へ書き戻す
請求項７に記載のメモリシステム。
【請求項９】
前記第１のメモリコントローラは、前記第１の半導体メモリにおける前記第２のリフレッシュ領域でリフレッシュ処理が行われている第２の期間に前記第１のリフレッシュ領域から読み出された有効クラスタ数を前記第１のキャッシュ領域に格納された積算更新量で更新して前記第１のリフレッシュ領域へ書き戻す
請求項８に記載のメモリシステム。
【請求項１０】
前記複数のリフレッシュ領域は、第３のリフレッシュ領域をさらに含み、
前記複数のキャッシュ領域は、前記第３のリフレッシュ領域に対応した第３のキャッシュ領域を含み、
前記第１のメモリコントローラは、前記第１の半導体メモリにおける前記第２のリフレッシュ領域でリフレッシュ処理が行われている第２の期間に前記第３のリフレッシュ領域から読み出された有効クラスタ数を前記第３のキャッシュ領域に格納された積算更新量で更新して前記第３のリフレッシュ領域へ書き戻す
請求項８に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのメモリシステムは、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリをストレージ領域として有する。不揮発性半導体メモリは、複数のブロックを有し、各ブロックは、複数のクラスタを含む。メモリシステムでは、不揮発性半導体メモリへのデータの書き換えが進むと、無効なクラスタによって利用効率の低下するブロックが発生する。そのため、各ブロックの有効クラスタ数の管理情報を参照し、複数のブロックのうち有効クラスタ数が閾値より低いブロックから有効クラスタのデータを集めてフリーブロックに書き直し、元のブロックのデータを消去するガーベージコレクションが行われる。このとき、各ブロックの有効クラスタ数を効率的に管理することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１４１９４６号公報
【特許文献２】特許第５３３０４３２号公報
【特許文献３】特開２０１６−１２２２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、各ブロックの有効クラスタ数を効率的に管理できるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、第１の半導体メモリと第２の半導体メモリとコントローラとを有するメモリシステムが提供される。第１の半導体メモリは、揮発性の半導体メモリである。第２の半導体メモリは、不揮発性の半導体メモリである。第２の半導体メモリは、複数のブロックを有する。複数のブロックのそれぞれは、複数のクラスタを含む。コントローラは、管理情報を第１の半導体メモリに格納する。管理情報は、ブロックの識別情報と有効クラスタ数とが複数のブロックについてそれぞれ対応付けられた情報である。コントローラは、ブロック管理部と第１のメモリコントローラとを有する。ブロック管理部は、ホストから受けたライト要求に応じて、データがライトされるブロックに対応した有効クラスタ数の更新指示を生成する。第１のメモリコントローラは、第１の半導体メモリから更新指示に応じた有効クラスタ数を読み出す。第１のメモリコントローラは、読み出された有効クラスタ数を更新指示に応じた更新量で更新する。第１のメモリコントローラは、更新された有効クラスタ数を第１の半導体メモリへ書き戻す。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るメモリシステムの構成を示す図である。
【図２】図２は、実施形態における不揮発性メモリのデータの管理単位を示す図である。
【図３】図３は、実施形態におけるアドレス変換情報（ＬＵＴ）のデータ構造を示す図である。
【図４】図４は、実施形態におけるブロック管理情報（有効クラスタカウンタ）のデータ構造を示す図である。
【図５】図５は、実施形態に係るメモリシステムの動作を示すシーケンス図である。
【図６】図６は、実施形態に係るメモリシステムの動作例を示す図である。
【図７】図７は、実施形態に係るメモリシステムの動作の効率化を示す図である。
【図８】図８は、実施形態の第１変形例に係るメモリシステムの構成の一部及び動作を示すデータフロー図である。
【図９】図９は、実施形態の第１変形例に係るメモリシステムの動作の効率化を示す図である。
【図１０】図１０は、実施形態の第２変形例に係るメモリシステムの構成の一部及び動作を示すデータフロー図である。
【図１１】図１１は、実施形態の第２変形例に係るメモリシステムの動作の効率化（ｋ＝２の場合）を示す図である。
【図１２】図１２は、実施形態の第２変形例に係るメモリシステムの動作の効率化（ｋ＝３の場合）を示す図である。
【図１３】図１３は、実施形態の第３変形例に係るメモリシステムの構成の一部及び動作を示すシーケンス図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのメモリシステムは、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリをストレージ領域として有する。不揮発性半導体メモリは、そのデータの管理単位として、複数のブロックを有し、各ブロックは、複数のクラスタを含む。メモリシステムでは、不揮発性半導体メモリへのデータの書き換えが進むと、それに応じてアドレス変換情報が更新され、無効クラスタによって利用効率の低下するブロックが発生する。有効クラスタとは、最新のデータを記憶しているクラスタとしてアドレス変換情報上に論理アドレスとの変換情報が存在しているクラスタであり、無効クラスタとは、同一ＬＢＡのデータが他の場所に書きこまれるとともにアドレス変換情報から削除され参照されることがなくなったクラスタである。そのため、各ブロックの有効クラスタ数の管理情報を参照し、複数のブロックのうち有効クラスタ数が閾値より低いブロックをソースブロックとし、フリーブロックをデスティネーションブロックとして、ソースブロックから有効クラスタのデータを集めてデスティネーションブロックに書き直し、有効クラスタ数が閾値より低いブロックのデータを消去するガーベージコレクションが行われる。
【０００９】
このとき、有効クラスタ数が多いブロックをソースブロックとするよりも、有効クラスタ数が少ないブロックをソースブロックとする方が、ガーベージコレクションの実行に必要なライト動作の回数をメモリシステム全体として少なく抑えることができる。このような考えに基づき、メモリシステムは、ガーベージコレクションを効率的に実行するために各ブロックの有効クラスタ数を数え、ブロックの識別情報と有効クラスタ数とが複数のブロックについて対応付けられたブロック管理情報を保持する。このブロック管理情報は、有効クラスタカウンタ（ＶＣＣ：Ｖａｌｉｄ  Ｃｌｕｓｔｅｒ  Ｃｏｕｎｔｅｒ）と呼ばれることもある。なお、本実施形態では、ブロック管理情報の管理単位が論理ブロックである場合について例示するが、ブロック管理情報の管理単位は物理ブロックであってもよい。論理ブロックの構成については、後述する。また、以下において、単なる「ブロック」の表記は、ブロック管理情報の管理単位が論理ブロックである場合に「論理ブロック」を意味するが、ブロック管理情報の管理単位が物理ブロックである場合には「物理ブロック」を意味するものと読み替えることもできる。メモリシステムでは、ホストからホストライト要求を受ける毎に、ブロック管理情報における有効クラスタ数を増減させる更新処理が行われ得る。
【００１０】
この更新処理を効率的に行うため、メモリシステムでは、コントローラ内にブロック管理部とＳＲＡＭなどの揮発性メモリとを設け、ブロック管理情報をコントローラ内の揮発性メモリに一時記憶させつつ必要に応じて読み出してブロック管理部で更新することが考えられる。メモリシステムにおける不揮発性半導体メモリの容量が増加すると、ブロックの個数および１ブロックあたりのクラスタ数がともに増加する。そのため、大容量のメモリシステムでは、ブロック管理情報がビット数・ワード数ともに増大しそのデータ量がコントローラ内の揮発性メモリの記憶容量を上回る傾向にある。メモリシステムの大容量化に応じて、コントローラ内の揮発性メモリを大容量化すると、メモリシステムのコストが高くなりやすい。
【００１１】
一方、コントローラ内の揮発性メモリの大容量化を避けながらブロック管理情報の格納領域を確保するために、メモリシステムでは、コントローラ外にＤＲＡＭなどの揮発性メモリを設け、ブロック管理情報をコントローラ外の揮発性メモリに格納することが考えられる。例えば、ホストライト要求を受けると、ブロック管理情報における有効クラスタ数が、コントローラ外の揮発性メモリからメモリコントローラへ読み出され、メモリコントローラからブロック管理部に転送された後に、ブロック管理部で更新される。更新後の有効クラスタ数は、ブロック管理部からメモリコントローラへ転送され、メモリコントローラからコントローラ外の揮発性メモリへ書き戻される。この場合、ブロック管理情報をコントローラ内の揮発性メモリに格納する場合に比べて、有効クラスタ数の更新処理に要する時間が長くなる可能性がある。
【００１２】
そこで、本実施形態では、メモリシステムにおいて、コントローラにおける有効クラスタ数の更新動作をブロック管理部に代えて、コントローラ外の揮発性メモリに対するＩ／Ｆとなるメモリコントローラで行えるようにすることで、有効クラスタ数の更新処理に要する時間の短縮化を図る。
【００１３】
具体的には、メモリシステム１は、図１に示すように構成され得る。図１は、メモリシステム１の構成を示す図である。
【００１４】
メモリシステム１は、通信バスを介してホストＨＡの外部に接続され、ホストＨＡに対する外部記憶装置として機能する。ホストＨＡは、例えば、パーソナルコンピュータ又はＣＰＵコアを含む。メモリシステム１は、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。
【００１５】
メモリシステム１は、コントローラ２、揮発性メモリ３、及び不揮発性メモリ４を有する。メモリシステム１がＳＳＤである場合、コントローラ２は、ＳＳＤコントローラとすることができる。コントローラ２は、例えばＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ）を含むコントローラパッケージとして実装され得る。コントローラ２は、データ等を一時記憶するためのキャッシュメモリとして揮発性メモリ７を含む。
【００１６】
揮発性メモリ３は、コントローラ２外に配され、揮発性メモリパッケージとして実装され得る。揮発性メモリ３は、コントローラ２内の揮発性メモリ７よりアクセススピードが遅いがビット当たりの単価が安い揮発性メモリであり、揮発性メモリ７より記憶容量が大きく構成され得る。揮発性メモリ３は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とすることができる。
【００１７】
不揮発性メモリ４は、コントローラ２外に配され、不揮発性メモリパッケージとして実装され得る。不揮発性メモリ４は、例えばＮＡＮＤ型フラッシュメモリとすることができるがこれに限定されない。不揮発性メモリ４は、例えばＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であってもよい。不揮発性メモリ４は、複数の物理ブロックを有する。各物理ブロックは、データ消去の単位である。各物理ブロックは、複数のメモリセルを有する。各メモリセルは多値記憶が可能である。各物理ブロックにおける同一のワード線に接続されたメモリセル群は、各メモリセルがシングルレベルセルである場合に１つの物理ページとして扱われ、各メモリセルがマルチレベルセルである場合に２つの物理ページとして扱われ、各メモリセルがトリプルレベルセルである場合に３つの物理ページとして扱われる。不揮発性メモリ４におけるデータ管理単位は、図２に示すように構成され得る。図２は、不揮発性メモリ４のデータの管理単位を示す図である。
【００１８】
不揮発性メモリ４は、複数のメモリチップで構成され得る。各メモリチップ内部において、一括してデータの書き込みおよび読み出しのアクセスが可能な単位が物理ページである。複数の物理ページから構成され、独立してデータの消去が可能な最小のアクセス単位が物理ブロックである。また、図２に示す例では、８つのチャネルｃｈ０〜ｃｈ７にメモリチップが接続されている場合が例示されている。コントローラ２は、各チャネルｃｈ０〜ｃｈ７を互いに並列して制御することが可能である。また、コントローラ２は、各チャネルｃｈ０〜ｃｈ７についてさらにバンクインタリーブにより複数の並列動作を行うことが可能である。これにより、並列にほぼ一括して書き込み／読み出しが可能な１６個の物理ページでデータ記録領域となる１論理ページを構成でき、並列にほぼ一括して消去可能な１６個の物理ブロックでデータブロックである１論理ブロックを構成することができる。ガーベージコレクションは、この１論理ブロックの単位で行われ得る。
【００１９】
また、１物理ページよりも小さい単位のデータ管理単位であるクラスタで、ＣＰＵ６により、不揮発性メモリ４内でのデータが管理されるものとする。クラスタサイズは、ホストＨＡからの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍が物理ページサイズとなるように定められる。例えば、１物理ページは４クラスタで構成され、１論理ページは６４クラスタで構成され得る。なお、各チャネルで並列に一括してデータ書き込みを行うため、この実施形態では、データはクラスタ番号順に格納されることになる。
【００２０】
図１に戻って、コントローラ２は、メモリシステム１における各部を統括的に制御する。コントローラ２は、揮発性メモリ７に加えて、ホストコントローラ５、プロセッサ（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６、ブロック管理部８、メモリコントローラ９、及びメモリコントローラ１０を有する。
【００２１】
ＣＰＵ６は、ファームウェアを実行することにより、コントローラ２における各部を統括的に制御する。
【００２２】
ホストコントローラ５は、ＣＰＵ６による制御のもと、ホストＨＡに対するインターフェース動作を行う。ホストコントローラ５は、ホストＨＡから受信したコマンド及び／又はデータをＣＰＵ６及び／又はブロック管理部８へ供給する。例えば、ホストコントローラ５は、ホストライト要求及びライトデータをホストＨＡから受信すると、ホストライト要求及びライトデータをＣＰＵ６へ転送するとともにホストライト要求をブロック管理部８へ転送する。また、ホストコントローラ５は、ＣＰＵ６から供給された通知及び／又はデータをホストＨＡへ送信する。
【００２３】
メモリコントローラ９は、ＣＰＵ６による制御のもと、揮発性メモリ３に対するインターフェース動作を行う。揮発性メモリ３がＤＲＡＭである場合、メモリコントローラ９は、ＤＲＡＭコントローラとすることができる。また、メモリコントローラ９は、加減算回路１１を有する。加減算回路１１は、有効クラスタ数を更新するために用いられる。
【００２４】
メモリコントローラ１０は、ＣＰＵ６による制御のもと、不揮発性メモリ４に対するインターフェース動作を行う。不揮発性メモリ４がＮＡＮＤ型フラッシュメモリである場合、メモリコントローラ９は、ＮＡＮＤコントローラとすることができる。
【００２５】
揮発性メモリ７は、コントローラ２内に配され、コントローラ２内（コントローラパッケージ内）の回路として実装され得る。揮発性メモリ７は、揮発性メモリ３よりアクセススピードが速いがビット当たりの単価が高い揮発性メモリであり、揮発性メモリ３より記憶容量が小さく構成され得る。揮発性メモリ７は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とすることができる。
【００２６】
揮発性メモリ７は、アドレス変換情報７ａを格納する。アドレス変換情報７ａは、不揮発性メモリ４へアクセスするための論理アドレス及び物理アドレス間の変換に用いられる情報であり、ルックアップテーブル（ＬＵＴ：Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）とも呼ばれ得る。アドレス変換情報７ａは、ホストＨＡからの不揮発性メモリ４へのアクセス（例えば、ホストライト、ホストリード）が行われる度に更新され得る。
【００２７】
アドレス変換情報７ａは、例えば、図３に示すようなデータ構造を有する。図３は、アドレス変換情報７ａのデータ構造を示す図である。図３では、アドレス変換情報７ａがテーブル形式で（論物変換テーブルとして）構成される場合が例示されている。アドレス変換情報７ａでは、論理アドレスと物理アドレスとが対応付けされている。論理アドレスは、例えば、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）とすることができる。物理アドレスは、論理ブロックの識別情報（例えば、論理ブロック番号）と論理クラスタの識別情報（例えば、論理ページ番号＋論理クラスタ番号）との組み合わせとすることができる。例えば、図３に示すアドレス変換情報７ａを参照することで、論理アドレスＬＢＡ０と物理アドレスＰＨＡ０とが対応していることが分かり、論理アドレスＬＢＡｋと物理アドレスＰＨＡｋとが対応していることが分かる。
【００２８】
図１に示すブロック管理部８は、不揮発性メモリ４における各ブロックの管理を行う。例えば、メモリシステム１が起動されると、ＣＰＵ６は、メモリコントローラ１０及びメモリコントローラ９を制御して、不揮発性メモリ４における管理情報格納領域に格納されたブロック管理情報１２を読み出して揮発性メモリ３に格納する。
【００２９】
ブロック管理情報１２は、ブロックの識別情報と有効クラスタ数とが複数のブロックについて対応付けられた管理情報であり、有効クラスタカウンタとも呼ばれ得る。例えば、ブロック管理情報１２は、図４に示すようなデータ構造を有する。図４は、ブロック管理情報１２（有効クラスタカウンタ）のデータ構造を示す図である。図４では、ブロック管理情報１２がテーブル形式で（すなわち、有効クラスタカウンタテーブルとして）構成される場合が例示されている。ブロック管理情報１２では、論理ブロックの識別情報（例えば、論理ブロック番号）と有効クラスタ数とが対応付けされている。例えば、図４に示すブロック管理情報１２を参照することで、論理ブロックＢＬ０の有効クラスタ数が「ＣＣ０」であることが分かり、論理ブロックＢＬｎの有効クラスタ数が「ＣＣｎ」であることが分かる。
【００３０】
このブロック管理情報１２は、図５及び図６に示すように更新され得る。図５は、メモリシステム１の動作を示すシーケンス図である。図６は、メモリシステム１の動作例を示す図である。
【００３１】
ブロック管理部８は、ホストライト要求を受けると（Ｓ１）、ホストライト要求に応じて、不揮発性メモリ４におけるライトが行われるブロックを特定する。ブロック管理部８は、揮発性メモリ７に格納されたアドレス変換情報７ａを参照することなどにより、ホストライト要求に対応する論理ブロックを特定する（Ｓ２）。ブロック管理部８は、特定された論理ブロックに対する有効クラスタ数の更新指示を生成してメモリコントローラ９へ供給する（Ｓ３）。有効クラスタ数の更新指示は、ブロックの識別情報に対応付けられた更新量を含む。ブロックの識別情報は、有効クラスタ数を更新すべき論理ブロックの識別情報（例えば、論理ブロック番号）を含む。更新量は、有効クラスタ数を更新すべき量（例えば、インクリメント（＋１）、又はディクリメント（−１））を含む。
【００３２】
これにより、メモリコントローラ９は、揮発性メモリ３にアクセスし（Ｓ４）、揮発性メモリ３から更新指示に応じた有効クラスタ数を読み出す（Ｓ５）。メモリコントローラ９は、加減算回路１１を用いて、読み出された有効クラスタ数を更新指示に応じた更新量で更新する（Ｓ６）。更新指示に応じた更新量が「＋１」である場合、加減算回路１１は、有効クラスタ数をインクリメント（＋１）する。更新指示に応じた更新量が「−１」である場合、加減算回路１１は、有効クラスタ数をディクリメント（−１）する。メモリコントローラ９は、更新された有効クラスタ数を揮発性メモリ３へ書き戻す（Ｓ７）。これにより、揮発性メモリ３に格納されたブロック管理情報１２が更新され得る。なお、コントローラ２は、メモリコントローラ１０によるホストライトの実行が完了している場合、ホストライト要求に対応するライト完了通知を、Ｓ６の完了後にホストコントローラ５からホストＨＡへ行ってもよいし、Ｓ６を待たずにＳ３の完了後にホストコントローラ５からホストＨＡへ行ってもよい。
【００３３】
例えば、図６には、不揮発性メモリ４が４つの論理ブロックＢＬ０〜ＢＬ３を有し、各論理ブロックＢＬ０〜ＢＬ３が５つの論理クラスタＣＬ０〜ＣＬ４を有する場合の動作例が例示されている。なお、以下の説明において、ＣＰＵ６が実行すると説明されている機能は所定の専用回路で実行されてもよいし、所定の専用回路で実行されると説明されている機能は、ＣＰＵ６で実行されてもよい。また、図６の右図において、×が記載された四角は無効クラスタを表し、空白の四角は消去済みで未書き込みのクラスタを表す。
【００３４】
タイミングｔ１の直前において、論理ブロックＢＬ０における論理クラスタＣＬ２〜ＣＬ４、論理ブロックＢＬ１における論理クラスタＣＬ１，ＣＬ２，ＣＬ４、論理ブロックＢＬ２における論理クラスタＣＬ１，ＣＬ４がそれぞれ無効クラスタであり、論理ブロックＢＬ３がフリーブロックとなっている。
【００３５】
ブロック管理情報１２では、論理ブロックＢＬ０，ＢＬ１，ＢＬ２，ＢＬ３の有効クラスタ数がそれぞれ、「０」、「０」、「０」、「０」となっている。
【００３６】
タイミングｔ１において、論理アドレスＡを含むホストライト要求とデータＢを含むライトデータとがホストコントローラ５で受信される。
【００３７】
タイミングｔ２において、ホストライト要求とライトデータとが転送されると、ＣＰＵ６は、「アドレスＡ」の論理アドレスに対して「ＢＬ０，ＣＬ０」の物理アドレスを割り当て、アドレス変換情報７ａをそのように更新する。ＣＰＵ６は、ホストライト要求とライトデータとをメモリコントローラ１０へ転送する。メモリコントローラ１０は、不揮発性メモリ４にアクセスし、論理ブロックＢＬ０の論理クラスタＣＬ０に対応する位置にデータＢを書き込む。
【００３８】
また、ホストライト要求が転送されると、ブロック管理部８は、ホストライト要求に含まれた論理アドレス「アドレスＡ」に対応する論理ブロックの識別情報「ＢＬ０」を特定する。ブロック管理部８は、特定結果に応じて、論理ブロックＢＬ０の有効クラスタ数をインクリメント（＋１）すべきであると判断し、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「＋１」を含む更新指示を作成してメモリコントローラ９へ供給する。
【００３９】
タイミングｔ３において、更新指示を受けると、メモリコントローラ９は、揮発性メモリ３から更新指示に応じた論理ブロックＢＬ０の有効クラスタ数「０」を読み出す。メモリコントローラ９は、読み出された有効クラスタ数「０」を更新指示に応じた更新量「＋１」で更新する。メモリコントローラ９は、更新された有効クラスタ数「１」を揮発性メモリ３へ書き戻す。これにより、揮発性メモリ３に格納されたブロック管理情報１２において、論理ブロックＢＬ０の有効クラスタ数が「０」→「１」に更新される。
【００４０】
タイミングｔ４において、論理アドレスＣを含むホストライト要求とデータＤを含むライトデータとがホストコントローラ５で受信される。
【００４１】
タイミングｔ５において、ホストライト要求とライトデータとが転送されると、ＣＰＵ６は、「アドレスＣ」の論理アドレスに対して「ＢＬ０，ＣＬ１」の物理アドレスを割り当て、アドレス変換情報７ａをそのように更新する。ＣＰＵ６は、ホストライト要求とライトデータとをメモリコントローラ１０へ転送する。メモリコントローラ１０は、不揮発性メモリ４にアクセスし、論理ブロックＢＬ０の論理クラスタＣＬ１に対応する位置にデータＤを書き込む。
【００４２】
また、ホストライト要求が転送されると、ブロック管理部８は、ホストライト要求に含まれた論理アドレス「論理アドレスＣ」に対応する論理ブロックの識別情報「ＢＬ０」を特定する。ブロック管理部８は、特定結果に応じて、論理ブロックＢＬ０の有効クラスタ数をインクリメント（＋１）すべきであると判断し、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「＋１」を含む更新指示を作成してメモリコントローラ９へ供給する。
【００４３】
タイミングｔ６において、更新指示を受けると、メモリコントローラ９は、揮発性メモリ３から更新指示に応じた論理ブロックＢＬ０の有効クラスタ数「１」を読み出す。メモリコントローラ９は、読み出された有効クラスタ数「１」を更新指示に応じた更新量「＋１」で更新する。メモリコントローラ９は、更新された有効クラスタ数「２」を揮発性メモリ３へ書き戻す。これにより、揮発性メモリ３に格納されたブロック管理情報１２において、論理ブロックＢＬ０の有効クラスタ数が「１」→「２」に更新される。
【００４４】
タイミングｔ７において、論理アドレスＡを含むホストライト要求とデータＥを含むライトデータとがホストコントローラ５で受信される。
【００４５】
タイミングｔ８において、ホストライト要求とライトデータとが転送されると、ＣＰＵ６は、「アドレスＡ」の論理アドレスに対して「ＢＬ０，ＣＬ０」に代えて「ＢＬ１，ＣＬ０」の物理アドレスを割り当て、アドレス変換情報７ａをそのように更新する。すなわち、アドレス変換情報７ａにおける「アドレスＡ」の論理アドレスに対応する古い対応情報を削除し、「アドレスＡ」の論理アドレスが「ＢＬ１，ＣＬ０」の物理アドレスに対応付けられた新しい対応情報を追加する。論理ブロックＢＬ０の論理クラスタＣＬ０は、アドレス変換情報７ａ中に対応する論理アドレスが存在しなくなり、無効化される。ＣＰＵ６は、ホストライト要求とライトデータとをメモリコントローラ１０へ転送する。メモリコントローラ１０は、論理ブロックＢＬ１の論理クラスタＣＬ０にデータＥを書き込む。
【００４６】
また、ホストライト要求が転送されると、ブロック管理部８は、ホストライト要求に含まれた論理アドレス「アドレスＡ」に対応する旧論理ブロックの識別情報「ＢＬ０」と新論理ブロックの識別情報「ＢＬ１」とを特定する。ブロック管理部８は、特定結果に応じて、論理ブロックＢＬ０の有効クラスタ数をディクリメント（−１）し論理ブロックＢＬ１の有効クラスタ数をインクリメント（＋１）すべきであると判断し、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「−１」と論理ブロックの識別情報「ＢＬ１」に対応付けられた更新量「＋１」とを含む更新指示を作成してメモリコントローラ９へ供給する。
【００４７】
タイミングｔ９において、更新指示を受けると、メモリコントローラ９は、揮発性メモリ３から更新指示に応じた論理ブロックＢＬ０の有効クラスタ数「２」と論理ブロックＢＬ１の有効クラスタ数「０」とを読み出す。メモリコントローラ９は、読み出された論理ブロックＢＬ０の有効クラスタ数「２」を更新指示に応じた更新量「−１」で更新し、読み出された論理ブロックＢＬ１の有効クラスタ数「０」を更新指示に応じた更新量「＋１」で更新する。メモリコントローラ９は、論理ブロックＢＬ０について更新された有効クラスタ数「１」と論理ブロックＢＬ１について更新された有効クラスタ数「１」とを揮発性メモリ３へ書き戻す。これにより、揮発性メモリ３に格納されたブロック管理情報１２において、論理ブロックＢＬ０の有効クラスタ数が「２」→「１」に更新され、論理ブロックＢＬ１の有効クラスタ数が「０」→「１」に更新される。
【００４８】
同様に、図示しないが、論理アドレス「Ｆ」、「Ｈ」、「Ｊ」、「Ｌ」と物理アドレス「ＢＬ１，ＣＬ３」、「ＢＬ２，ＣＬ０」、「ＢＬ２，ＣＬ２」、「ＢＬ２，ＣＬ３」との対応情報がアドレス変換情報７ａに記録される。それとともに、不揮発性メモリ４における物理アドレス「ＢＬ１，ＣＬ３」、「ＢＬ２，ＣＬ０」、「ＢＬ２，ＣＬ２」、「ＢＬ２，ＣＬ３」に、それぞれ、データ「Ｇ」、「Ｉ」、「Ｋ」、「Ｍ」が書き込まれる。
【００４９】
これに応じて、タイミングｔ１０において、ブロック管理情報１２では、論理ブロックＢＬ０，ＢＬ１，ＢＬ２，ＢＬ３の有効クラスタ数がそれぞれ、「１」、「２」、「３」、「０」と更新されている。なお、図６では、図示の簡略化のため、アドレス変換情報７ａにおける論理アドレス「Ｆ」、「Ｈ」、「Ｊ」、「Ｌ」と物理アドレス「ＢＬ１，ＣＬ３」、「ＢＬ２，ＣＬ０」、「ＢＬ２，ＣＬ２」、「ＢＬ２，ＣＬ３」との対応情報の図示が省略されている。
【００５０】
図５に示すブロック管理部８は、ガーベージコレクション要求をＣＰＵ６から受けると（Ｓ８）、ブロック管理情報１２の取得指示をメモリコントローラ９へ転送する（Ｓ９）。
【００５１】
これにより、メモリコントローラ９は、揮発性メモリ３にアクセスし（Ｓ１０）、揮発性メモリ３から取得指示に応じたブロック管理情報１２を読み出す（Ｓ１１）。メモリコントローラ９は、読み出されたブロック管理情報１２をブロック管理部８へ転送する（Ｓ１２）。
【００５２】
ブロック管理部８は、ブロック管理情報１２を用いて、不揮発性メモリ４における複数のブロックのうちガーベージコレクションの対象となるブロックを決定する（Ｓ１３）。ブロック管理部８は、ブロック管理情報１２を参照し、複数のブロックのうち有効クラスタ数が閾値以下のブロックをソースブロックとして選択してもよいし、複数のブロックのうちフリーブロックを除き有効クラスタ数が少ない順にブロックを選択しソースブロックとしてもよい。ブロック管理部８は、ブロック管理情報１２を参照し、フリーブロックを特定してデスティネーションブロックとしてもよい。ブロック管理部８は、ソースブロックとデスティネーションブロックとを指定してガーベージコレクションを行わせる実行指示を生成してメモリコントローラ１０へ転送する（Ｓ１４）。
【００５３】
これにより、メモリコントローラ１０は、不揮発性メモリ４にアクセスし（Ｓ１５）、ガーベージコレクションを行うように不揮発性メモリ４に指示する。不揮発性メモリ４は、その指示に応じて、ガーベージコレクションを行う（Ｓ１６）。すなわち、不揮発性メモリ４は、ソースブロックから有効クラスタのデータを集めてデスティネーションブロックに書き直すデータの引っ越し処理を行い、データの引っ越し処理が完了すると、ソースブロックに対してデータの消去処理を行い、ソースブロックをフリーブロックとする。
【００５４】
例えば、図６に示すタイミングｔ１１において、ガーベージコレクション要求をＣＰＵ６から受けると、ブロック管理部８は、タイミングｔ１０に更新されたブロック管理情報１２を参照し、複数のブロックＢＬ０〜ＢＬ３のうち有効クラスタ数が閾値（例えば、２）以下のブロックＢＬ０，ＢＬ１をソースブロックとして選択する。あるいは、ブロック管理部８は、ブロック管理情報１２を参照し、複数のブロックＢＬ０〜ＢＬ３のうちフリーブロックを除き有効クラスタ数が少ない順に所定数のブロック（例えば、２つのブロック）ＢＬ０，ＢＬ１を選択しソースブロックとする。ブロック管理部８は、ブロック管理情報１２を参照し、有効クラスタ数がゼロであるブロックＢＬ３をフリーブロックとして特定してデスティネーションブロックとする。ブロック管理部８は、ソースブロックＢＬ０，ＢＬ１とデスティネーションブロックＢＬ３とを指定してガーベージコレクションを行わせる実行指示を生成してメモリコントローラ１０へ転送する。
【００５５】
タイミングｔ１２において、実行指示を受けると、メモリコントローラ１０は、不揮発性メモリ４にアクセスし、ガーベージコレクションを行うように指示するコマンドを発行して不揮発性メモリ４へ供給する。不揮発性メモリ４は、そのコマンドに応じて、ガーベージコレクションを行う。すなわち、不揮発性メモリ４は、ソースブロックＢＬ０から有効クラスタＣＬ１のデータを集め、ソースブロックＢＬ１から有効クラスタＣＬ０，ＣＬ３のデータを集めてデスティネーションブロックＢＬ３に書き直すデータの引っ越し処理を行う。不揮発性メモリ４は、データの引っ越し処理が完了すると、ソースブロックＢＬ０，ＢＬ１に対してデータの消去処理を行う。これにより、ソースブロックＢＬ０，ＢＬ１をフリーブロックとすることができ、不揮発性メモリ４におけるストレージ領域を効率的に確保することができる。
【００５６】
図５に示す不揮発性メモリ４は、ガーベージコレクションが完了すると、完了通知をメモリコントローラ１０へ返す（Ｓ１７）。これに応じて、メモリコントローラ１０は、完了通知をブロック管理部８へ転送する（Ｓ１８）。ブロック管理部８は、完了通知をＣＰＵ６へ転送する（Ｓ１９）。これにより、ＣＰＵ６は、ガーベージコレクションが完了したことを認識するとともにアドレス変換情報７ａを更新する。また、ブロック管理部８は、完了通知に応じて、データの引っ越し処理が行われた論理ブロックと消去処理が行われた論理ブロックとをそれぞれ特定する（Ｓ２０）。ブロック管理部８は、特定された論理ブロックに対する有効クラスタ数の更新指示を生成してメモリコントローラ９へ供給する（Ｓ２１）。有効クラスタ数の更新指示は、ブロックの識別情報に対応付けられた更新量を含む。ブロックの識別情報は、有効クラスタ数を更新すべき論理ブロックの識別情報（例えば、論理ブロック番号）を含む。更新量は、有効クラスタ数を更新すべき量（例えば、インクリメント（＋１）、又はディクリメント（−１））を含む。
【００５７】
これにより、メモリコントローラ９は、揮発性メモリ３にアクセスし（Ｓ２２）、揮発性メモリ３から更新指示に応じた有効クラスタ数を読み出す（Ｓ２３）。メモリコントローラ９は、加減算回路１１を用いて、読み出された有効クラスタ数を更新指示に応じた更新量で更新する（Ｓ２４）。更新指示に応じた更新量が「＋１」である場合、加減算回路１１は、有効クラスタ数をインクリメント（＋１）する。更新指示に応じた更新量が「−１」である場合、加減算回路１１は、有効クラスタ数をディクリメント（−１）する。メモリコントローラ９は、更新された有効クラスタ数を揮発性メモリ３へ書き戻す（Ｓ２５）。これにより、揮発性メモリ３に格納されたブロック管理情報１２が更新され得る。
【００５８】
例えば、図６に示すタイミングｔ１３において、完了通知が転送されると、ＣＰＵ６は、データＤの記憶位置が変更されたことに応じて、「アドレスＣ」の論理アドレスに対して「ＢＬ０，ＣＬ１」に代えて「ＢＬ３，ＣＬ１」の物理アドレスを割り当て、アドレス変換情報７ａをそのように更新する。ＣＰＵ６は、データＥの記憶位置が変更されたことに応じて、「アドレスＡ」の論理アドレスに対して「ＢＬ１，ＣＬ０」に代えて「ＢＬ３，ＣＬ０」の物理アドレスを割り当て、アドレス変換情報７ａをそのように更新する。ＣＰＵ６は、データＧの記憶位置の変更についても、図示しないが、アドレス変換情報７ａを更新する。
【００５９】
また、完了通知が転送されると、ブロック管理部８は、完了通知に応じて、データの引っ越し処理が行われた論理ブロックＢＬ０，ＢＬ１，ＢＬ３と消去処理が行われた論理ブロックＢＬ０，ＢＬ１とをそれぞれ特定する。ブロック管理部８は、特定結果に応じて、論理ブロックＢＬ０の有効クラスタ数を−１して０にし論理ブロックＢＬ１の有効クラスタ数を−２して０にし論理ブロックＢＬ１の有効クラスタ数を＋３して３にすべきであると判断し、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「−１」と論理ブロックの識別情報「ＢＬ１」に対応付けられた更新量「−２」と論理ブロックの識別情報「ＢＬ３」に対応付けられた更新量「＋３」とを含む更新指示を作成してメモリコントローラ９へ供給する。
【００６０】
タイミングｔ１４において、更新指示を受けると、メモリコントローラ９は、揮発性メモリ３から更新指示に応じた論理ブロックＢＬ０の有効クラスタ数「１」と論理ブロックＢＬ１の有効クラスタ数「２」と論理ブロックＢＬ３の有効クラスタ数「０」とを読み出す。メモリコントローラ９は、読み出された論理ブロックＢＬ０の有効クラスタ数「１」を更新指示に応じた更新量「−１」で更新し、読み出された論理ブロックＢＬ１の有効クラスタ数「２」を更新指示に応じた更新量「−２」で更新し、読み出された論理ブロックＢＬ３の有効クラスタ数「０」を更新指示に応じた更新量「＋３」で更新する。メモリコントローラ９は、論理ブロックＢＬ０について更新された有効クラスタ数「０」と論理ブロックＢＬ１について更新された有効クラスタ数「０」と論理ブロックＢＬ３について更新された有効クラスタ数「３」とを揮発性メモリ３へ書き戻す。これにより、揮発性メモリ３に格納されたブロック管理情報１２において、論理ブロックＢＬ０の有効クラスタ数が「１」→「０」に更新され、論理ブロックＢＬ１の有効クラスタ数が「２」→「０」に更新され、論理ブロックＢＬ３の有効クラスタ数が「０」→「３」に更新される。
【００６１】
以上のように、実施形態では、メモリシステム１において、コントローラ２における有効クラスタ数の更新動作をブロック管理部８に代えてコントローラ外の揮発性メモリ３に対するＩ／Ｆとなるメモリコントローラ９で行えるようにする。これにより、不揮発性メモリ４が大容量化しブロック管理情報（有効クラスタカウンタ）１２のデータ容量が増大した場合に、コントローラ２内の揮発性メモリ７を大容量化することなく（すなわち、メモリシステム１のコスト増加を抑制しながら）、有効クラスタ数の更新処理に要する時間を容易に短縮化できる。
【００６２】
例えば、図７に示すように、少なくとも、揮発性メモリ３から読み出された有効クラスタ数をメモリコントローラ９からブロック管理部８へ転送する際の転送遅延ＴＰ０１と更新された有効クラスタ数をブロック管理部８からメモリコントローラ９へ転送する際の転送遅延ＴＰ０２とを削減できる。この結果、ブロック管理部８で更新動作を行う場合の処理時間ＴＰ０に比較して、実施形態では、有効クラスタ数の更新処理をΔＴＰ１短縮された処理時間ＴＰ１で実現できる。
【００６３】
なお、有効クラスタ数の複数回の更新動作を一括して行うことができれば、メモリコントローラ９による揮発性メモリ３への平均的なアクセス頻度を低減でき、有効クラスタ数の更新処理の平均的な処理時間をさらに低減できると期待できる。
【００６４】
そのような考えに基づき、図８に示すように、メモリコントローラ９内にキャッシュ領域２１３を設けてもよい。図８は、実施形態の第１変形例に係るメモリシステム１の構成の一部及び動作を示すデータフロー図である。キャッシュ領域２１３は、例えばＳＲＡＭで実現され得る。
【００６５】
例えば、有効クラスタ数の３回の更新動作を一括して行う場合について説明する。ブロック管理部８は、１回目のホストライト要求（Ｓ１−１）に対応する論理ブロックを特定し（Ｓ２−１）、１回目の有効クラスタ数の更新指示を生成してメモリコントローラ９へ供給する（Ｓ３−１）。メモリコントローラ９は、更新指示に応じた更新量をブロックごとに識別情報に対応付けて集計し、識別情報に対応付けられた積算更新量をキャッシュ領域２１３に格納する（Ｓ２０１−１）。
【００６６】
ブロック管理部８は、２回目のホストライト要求（Ｓ１−２）に対応する論理ブロックを特定し（Ｓ２−２）、２回目の有効クラスタ数の更新指示を生成してメモリコントローラ９へ供給する（Ｓ３−２）。メモリコントローラ９は、更新指示に応じた更新量をブロックごとに識別情報に対応付けて集計し、識別情報に対応付けられた積算更新量をキャッシュ領域２１３に格納する（Ｓ２０１−２）。
【００６７】
ブロック管理部８は、３回目のホストライト要求（Ｓ１−３）に対応する論理ブロックを特定し（Ｓ２−３）、３回目の有効クラスタ数の更新指示を生成してメモリコントローラ９へ供給する（Ｓ３−３）。メモリコントローラ９は、更新指示に応じた更新量をブロックごとに識別情報に対応付けて集計し、識別情報に対応付けられた積算更新量をキャッシュ領域２１３に格納する（Ｓ２０１−３）。
【００６８】
そして、メモリコントローラ９は、揮発性メモリ３にアクセスし（Ｓ４）、揮発性メモリ３から更新指示に応じた有効クラスタ数を読み出す（Ｓ５）。メモリコントローラ９は、加減算回路１１を用いて、読み出された有効クラスタ数を積算更新量で更新する（Ｓ６）。メモリコントローラ９は、更新された有効クラスタ数を揮発性メモリ３へ書き戻す（Ｓ７）。これにより、揮発性メモリ３に格納されたブロック管理情報１２が更新され得る。
【００６９】
例えば、図６に示す動作例では、タイミングｔ１のホストライト要求に応じて、タイミングｔ２において、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「＋１」を含む更新指示がメモリコントローラ９へ供給される。
【００７０】
タイミングｔ３において、更新指示を受けると、メモリコントローラ９は、論理ブロックの識別情報「ＢＬ０」に対応付けられた積算更新量「＋１」を生成してキャッシュ領域２１３に格納する。
【００７１】
タイミングｔ４のホストライト要求に応じて、タイミングｔ５において、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「＋１」を含む更新指示がメモリコントローラ９へ供給される。
【００７２】
タイミングｔ６において、更新指示を受けると、メモリコントローラ９は、キャッシュ領域２１３から積算更新量を読み出し、論理ブロックの識別情報「ＢＬ０」に対応付けられた積算更新量「＋１」に更新量「＋１」を加算し、積算更新量「＋２」を求める。メモリコントローラ９は、論理ブロックの識別情報「ＢＬ０」に対応付けられた積算更新量「＋２」をキャッシュ領域２１３に格納する。
【００７３】
タイミングｔ７のホストライト要求に応じて、タイミングｔ８において、論理ブロックの識別情報「ＢＬ０」に対応付けられた更新量「−１」と論理ブロックの識別情報「ＢＬ１」に対応付けられた更新量「＋１」とを含む更新指示がメモリコントローラ９へ供給される。
【００７４】
タイミングｔ９において、更新指示を受けると、メモリコントローラ９は、キャッシュ領域２１３から積算更新量を読み出し、論理ブロックの識別情報「ＢＬ０」に対応付けられた積算更新量「＋２」に更新量「−１」を加算し、積算更新量「＋１」を求める。メモリコントローラ９は、論理ブロックの識別情報「ＢＬ０」に対応付けられた積算更新量「＋１」をキャッシュ領域２１３に格納する。また、メモリコントローラ９は、論理ブロックの識別情報「ＢＬ１」に対応付けられた積算更新量「０」に更新量「＋１」を加算し、積算更新量「＋１」を求める。メモリコントローラ９は、論理ブロックの識別情報「ＢＬ１」に対応付けられた積算更新量「＋１」をキャッシュ領域２１３に格納する。
【００７５】
そして、メモリコントローラ９は、揮発性メモリ３から論理ブロックＢＬ０の有効クラスタ数「０」と論理ブロックＢＬ１の有効クラスタ数「０」とを読み出す。メモリコントローラ９は、読み出された論理ブロックＢＬ０の有効クラスタ数「０」を１回目〜３回目の更新指示に応じた積算更新量「＋１」で更新し、読み出された論理ブロックＢＬ１の有効クラスタ数「１」を１回目〜３回目の更新指示に応じた積算更新量「＋１」で更新する。メモリコントローラ９は、論理ブロックＢＬ０について更新された有効クラスタ数「１」と論理ブロックＢＬ１について更新された有効クラスタ数「２」とを揮発性メモリ３へ書き戻す。これにより、揮発性メモリ３に格納されたブロック管理情報１２において、論理ブロックＢＬ０の有効クラスタ数が「０」→「１」に更新され、論理ブロックＢＬ１の有効クラスタ数が「０」→「１」に更新される。
【００７６】
このように、有効クラスタ数の複数回の更新動作を一括して行うことができれば、メモリコントローラ９による揮発性メモリ３への平均的なアクセス頻度を低減でき、有効クラスタ数の更新処理の平均的な処理時間をさらに低減できる。
【００７７】
例えば、図９に示すように、少なくとも、複数回のうち最終回を除く各回の更新処理時間ＴＰ１−１，ＴＰ１−２における更新後の有効クラスタ数を揮発性メモリ３へ書き込む時間ＴＰ１１１−１，ＴＰ１１１−２を削減できる。この結果、毎回更新動作を行う場合の処理時間ＴＰ１１に比較して、実施形態の第１変形例では、有効クラスタ数の更新処理をΔＴＰ１２短縮された処理時間ＴＰ１２で実現できる。
【００７８】
なお、有効クラスタ数の複数回の更新動作を一括して行うトリガー条件は、更新動作の回数が所定回数に達したことであってもよいし、積算更新量のデータ容量がキャッシュ領域２１３の記憶容量に達したことであってもよいし、ガーベージコレクション時であってもよい。
【００７９】
例えば有効クラスタ数の複数回の更新動作をガーベージコレクション時に行う場合、次の動作が行われてもよい。ガーベージコレクション時には、ＣＰＵ６がブロック管理部８、メモリコントローラ９を通じて揮発性メモリ３にアクセスして有効カウンタ数を読み込んでおく。このときに、メモリコントローラ９は、キャッシュ領域２１３の中に読み込み先の論理ブロックに関するエントリがあるか確認し、必要に応じて加減算処理を行う。あるいは、キャッシュ領域２１３内で、ガーベージコレクションの結果に応じた積算値を保持し、これをアイドル時等の空き時間に揮発性メモリ３に書き戻してもよい。この構成により、揮発性メモリ（ＤＲＡＭ）３に対するアクセス頻度を少なくすることができる。
【００８０】
あるいは、揮発性メモリ３が複数のリフレッシュ領域を有する場合、有効クラスタ数の更新のためのメモリアクセスを複数のリフレッシュ領域のうちリフレッシュされていないリフレッシュ領域に対して行えば、有効クラスタ数の更新処理を揮発性メモリ３のリフレッシュ処理との関係で効率化できると期待できる。
【００８１】
そのような考えに基づき、図１０に示すように、揮発性メモリ３が複数のリフレッシュ領域１４−１〜１４−ｋ（ｋは２以上の整数）を有することに対応して、メモリコントローラ９内にキャッシュ領域３１３−１〜３１３−ｋを設けてもよい。各リフレッシュ領域１４は、揮発性メモリ３におけるリフレッシュ処理、すなわち定期的なメモリセルへの電荷の充電の処理を行う単位となる領域であり、例えば、ＤＩＭＭ領域（すなわち、電源の供給単位となる領域）であってもよいし、ランク領域（すなわち、１メモリチップとなる領域）であってもよいし、バンク領域（メモリコントローラ９が揮発性メモリ３を管理する単位となる領域）であってもよい。
【００８２】
例えば、ＣＰＵ６は、不揮発性メモリ４におけるストレージ領域のアドレス空間を論理ブロックの単位でリフレッシュ領域の数（ｋ個）に分割して、ｋ個のリフレッシュ領域１４−１〜１４−ｋとｋ個のキャッシュ領域３１３−１〜３１３−ｋとにそれぞれ割り当てる。
【００８３】
メモリシステム１が起動されると、ＣＰＵ６は、メモリコントローラ１０及びメモリコントローラ９を制御して、不揮発性メモリ４における管理情報格納領域に格納されたブロック管理情報１２を読み出して揮発性メモリ３に格納する。このとき、ＣＰＵ６は、ブロック管理情報１２における各論理ブロックのレコード（論理ブロック番号と有効クラスタ数との対応情報）がその論理ブロックに割り当てられたリフレッシュ領域１４に格納されるように制御する。図１０では、ブロック管理情報１２は、ｋ個のリフレッシュ領域１４−１〜１４−ｋに跨って揮発性メモリ３内に格納される場合が例示されている。
【００８４】
メモリコントローラ９は、ＣＰＵ６による制御のもと、不揮発性メモリ４における複数の論理ブロックとｋ個のキャッシュ領域３１３−１〜３１３−ｋとの対応関係に応じて、各論理ブロックの有効クラスタ数に対する積算更新量をその論理ブロックに対応するキャッシュ領域３１３に格納する。メモリコントローラ９は、一括更新のタイミングになると、そのキャッシュ領域３１３に対応するリフレッシュ領域１４から有効クラスタ数を読み出し、そのキャッシュ領域３１３に格納された積算更新量で更新し、更新された有効クラスタ数をそのリフレッシュ領域１４へ書き戻す。この更新された有効クラスタ数をそのリフレッシュ領域１４へ書き戻す処理を、ＣＰＵ６は、他のリフレッシュ領域１４に対するリフレッシュ処理と並行して行うように制御することができる。
【００８５】
例えば、ｋ＝２である場合、図１１に示すように、有効クラスタ数の更新処理と揮発性メモリ３に対するリフレッシュ処理とを並行させることができる。図１１は、実施形態の第２変形例に係るメモリシステムの動作の効率化（ｋ＝２の場合）を示す図である。すなわち、トータルのリフレッシュ時間ＴＰｒｆ１は、リフレッシュ領域１４−２のリフレッシュ時間ＴＰ２１とリフレッシュ領域１４−１のリフレッシュ時間ＴＰ２２とを含む。
【００８６】
ＣＰＵ６による制御のもと、メモリコントローラ９は、リフレッシュ領域１４−２のリフレッシュ時間ＴＰ２１に、キャッシュ領域３１３−１の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−１へ書き戻す。メモリコントローラ９は、リフレッシュ領域１４−１のリフレッシュ時間ＴＰ２２に、キャッシュ領域３１３−２の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−２へ書き戻す。
【００８７】
これにより、キャッシュ領域３１３−１の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−１へ書き戻す処理の時間ＴＰ２１１をリフレッシュ領域１４−２のリフレッシュ時間ＴＰ２１で隠すことができ、キャッシュ領域３１３−２の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−２へ書き戻す処理の時間ＴＰ２２１をリフレッシュ領域１４−１のリフレッシュ時間ＴＰ２２で隠すことができる。
【００８８】
あるいは、例えば、ｋ＝３である場合、図１２に示すように、有効クラスタ数の更新処理と揮発性メモリ３に対するリフレッシュ処理とを並行させることができる。図１２は、実施形態の第２変形例に係るメモリシステムの動作の効率化（ｋ＝３の場合）を示す図である。すなわち、トータルのリフレッシュ時間ＴＰｒｆ２は、リフレッシュ領域１４−３のリフレッシュ時間ＴＰ３１とリフレッシュ領域１４−１のリフレッシュ時間ＴＰ３２とリフレッシュ領域１４−２のリフレッシュ時間ＴＰ３３とを含む。
【００８９】
ＣＰＵ６による制御のもと、メモリコントローラ９は、リフレッシュ領域１４−３のリフレッシュ時間ＴＰ３１に、キャッシュ領域３１３−１の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−１へ書き戻す。メモリコントローラ９は、リフレッシュ領域１４−１のリフレッシュ時間ＴＰ３２に、キャッシュ領域３１３−２の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−２へ書き戻す。メモリコントローラ９は、リフレッシュ領域１４−２のリフレッシュ時間ＴＰ３３に、キャッシュ領域３１３−３の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−３へ書き戻す。
【００９０】
これにより、キャッシュ領域３１３−１の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−１へ書き戻す処理の時間ＴＰ３１１をリフレッシュ領域１４−３のリフレッシュ時間ＴＰ３１で隠すことができ、キャッシュ領域３１３−２の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−２へ書き戻す処理の時間ＴＰ３２１をリフレッシュ領域１４−１のリフレッシュ時間ＴＰ３２で隠すことができ、キャッシュ領域３１３−３の積算更新量で更新された有効クラスタ数をリフレッシュ領域１４−３へ書き戻す処理の時間ＴＰ３３１をリフレッシュ領域１４−２のリフレッシュ時間ＴＰ３３で隠すことができる。
【００９１】
このように、揮発性メモリ（ＤＲＡＭ）３における複数のリフレッシュ領域に対応してメモリコントローラ９内に複数のキャッシュ領域を設け、メモリコントローラ９による有効クラスタ数の更新のためのメモリアクセスを複数のリフレッシュ領域のうちリフレッシュ対象ではないリフレッシュ領域に対して行う。これにより、有効クラスタ数の更新のためのメモリアクセスの時間をリフレッシュ処理の時間に隠すことができ、メモリコントローラ９におけるキャッシュ領域３１３のパージによる処理時間のロスを見えなくすることが可能となる。この結果、有効クラスタ数の更新処理を揮発性メモリ３のリフレッシュ処理との関係で効率化できる。
【００９２】
あるいは、有効クラスタ数が閾値以下であるブロックがガーベージコレクションのソースブロックとなる場合、有効クラスタ数が更新された時点でその論理ブロックの閾値比較をしてソースブロックとなるか判断しておけば、ガーベージコレクション要求を受けてからその完了通知を返すまでのガーベージコレクションの処理時間を短縮できると期待できる。
【００９３】
そのような考えに基づき、図１３に示すように、メモリコントローラ９内に閾値比較回路４１６を設けるとともにブロック管理部８がガーベージコレクションのソースブロックを示すビットマップ４１５を保持してもよい。図１３は、実施形態の第３変形例に係るメモリシステム１の構成の一部及び動作を示すシーケンス図である。閾値比較回路４１６は、ＣＰＵ６により予め設定された閾値を有し、メモリコントローラ９で更新された有効クラスタ数をその閾値と比較する。ビットマップ４１５は、不揮発性メモリ４に含まれるブロックの数に対応したビット数を有する。ビットマップ４１５は、各ビット位置が論理ブロックの識別情報と対応しており、そのビット値がソースブロックとなるか否か（例えば、ビット値「１」であればソースブロックであり、ビット値「０」であればソースブロックでないこと）を表している。
【００９４】
例えば、実施形態と同様にＳ１〜Ｓ７が行われた後、メモリコントローラ９における閾値比較回路４１６は、更新後の有効クラスタ数を閾値と比較する（Ｓ３１）。この比較に用いられる閾値は、ＣＰＵ６により閾値比較回路４１６へ予め（Ｓ３１より前に）設定され得る。閾値比較回路４１６は、比較結果をブロック管理部８へ供給する（Ｓ３２）。比較結果は、論理ブロックの識別情報とその有効クラスタ数が閾値以下であるか否かの情報とを含む。
【００９５】
ブロック管理部８は、比較結果を用いてビットマップ４１５を更新する（Ｓ３３）。すなわち、ブロック管理部８は、比較結果から論理ブロックの識別情報を抽出し、ビットマップ４１５における論理ブロックの識別情報に対応したビット位置を参照する。ブロック管理部８は、有効クラスタ数が閾値以下である旨の情報が比較結果に含まれていれば、そのビット位置のビット値を「１」に更新し、有効クラスタ数が閾値より大きい旨の情報が比較結果に含まれていれば、そのビット位置のビット値を「０」に更新する。
【００９６】
これにより、ブロック管理部８は、ガーベージコレクション要求をＣＰＵ６から受けると（Ｓ８）、ビットマップ４１５を参照して、不揮発性メモリ４における複数のブロックのうちガーベージコレクションの対象となるブロックを決定する（Ｓ３４）。そして、実施形態と同様にＳ１４〜Ｓ２５が行われる。
【００９７】
この構成及び動作により、ガーベージコレクション対象ブロックを決定する際の揮発性メモリ３へのアクセスを無くすことが可能となる。したがって、ガーベージコレクション要求を受けてからその完了通知を返すまでのガーベージコレクションの処理時間を短縮できる。
【００９８】
また、ハードウェアを用いた処理により有効クラスタ数の少ないブロックの検索を高速に処理できる。すなわち、ガーベージコレクション要求を受ける前に行うビットマップ４１５の更新に要する処理時間を容易に短縮できる。
【００９９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１００】
１  メモリシステム、２  コントローラ、３  揮発性メモリ、４  不揮発性メモリ、８  ブロック管理部、９  メモリコントローラ、１０  メモリコントローラ。
【図１】
2020003838.tif 000003
【図２】
2020003838.tif 000004
【図３】
2020003838.tif 000005
【図４】
2020003838.tif 000006
【図５】
2020003838.tif 000007
【図６】
2020003838.tif 000008
【図７】
2020003838.tif 000009
【図８】
2020003838.tif 000010
【図９】
2020003838.tif 000011
【図１０】
2020003838.tif 000012
【図１１】
2020003838.tif 000013
【図１２】
2020003838.tif 000014
【図１３】
2020003838.tif 000015