(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024118835
(43)【公開日】2024-09-02
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/02 20060101AFI20240826BHJP
G06F 12/00 20060101ALI20240826BHJP
【FI】
G06F12/02 530E
G06F12/00 597U
G06F12/02 570A
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023025377
(22)【出願日】2023-02-21
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】梶原 裕嗣
(72)【発明者】
【氏名】中西 悠
(72)【発明者】
【氏名】及川 恒平
(72)【発明者】
【氏名】檜田 和浩
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA06
5B160AA10
5B160AB26
(57)【要約】
【課題】GC処理に伴うメモリシステムの性能劣化を抑制する。
【解決手段】一実施形態のメモリシステムは、各々が複数の物理メモリ領域を含む複数のブロックを含む不揮発性メモリと、論理アドレス空間を複数のバンクに分割し、複数のバンクの各々にブロックを対応づけるメモリコントローラと、を備える。メモリコントローラは、有効データが記憶される物理メモリ領域に対応する物理アドレスを論理アドレス空間上にマッピングするテーブルのうち、複数のバンクのうちの第1バンクに関する部分を選択的にスキャンし、スキャンの結果、第1バンクに対応づけられる第1ブロック内の第1物理メモリ領域に対応する第1物理アドレスを検出し、第1物理アドレスに基づいて、第1ブロックに記憶された第1有効データを読み出し、第1有効データを第1バンクに対応づけられる第2ブロックに書き込むように構成される。
【選択図】
図10
【特許請求の範囲】
【請求項1】
各々が複数の物理メモリ領域を含む複数のブロックを含む不揮発性メモリと、
論理アドレス空間を複数のバンクに分割し、前記複数のバンクの各々にブロックを対応づけるメモリコントローラと、
を備え、
前記メモリコントローラは、
有効データが記憶される物理メモリ領域に対応する物理アドレスを前記論理アドレス空間上にマッピングするテーブルのうち、前記複数のバンクのうちの第1バンクに関する部分を選択的にスキャンし、
前記スキャンの結果、前記第1バンクに対応づけられる第1ブロック内の第1物理メモリ領域に対応する第1物理アドレスを検出し、
前記第1物理アドレスに基づいて、前記第1ブロックに記憶された第1有効データを読み出し、
前記第1有効データを前記第1バンクに対応づけられる第2ブロックに書き込む
ように構成された、
メモリシステム。
【請求項2】
前記メモリコントローラは、前記第1有効データが前記第2ブロックに書き込まれた後、前記第1ブロックと前記第1バンクとの対応付けを解消するように構成された、
請求項1記載のメモリシステム。
【請求項3】
前記メモリコントローラは、
前記スキャンの結果、前記第1バンクに対応づけられる1又は複数の第3ブロック内の第2物理メモリ領域に対応する第2物理アドレスを更に検出し、
前記第2物理アドレスに基づいて、前記第3ブロックに記憶された第2有効データを読み出し、
前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成される、
請求項1記載のメモリシステム。
【請求項4】
前記メモリコントローラは、
前記論理アドレス空間を前記複数のバンクとは独立に複数のアラインメント順番に分割し、
前記第1有効データ及び前記第2有効データを前記アラインメント順番に沿って並べ替えた状態で前記第2ブロックに書き込む
ように構成された、
請求項3記載のメモリシステム。
【請求項5】
前記メモリコントローラは、前記第2有効データを読み出すこと、及び前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込むことを実行するか否かを判定するように構成された、
請求項4記載のメモリシステム。
【請求項6】
前記メモリコントローラは、ホストからのシーケンシャルアクセス率が閾値以上の場合、前記第2有効データを読み出すこと、及び前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込むように構成された、
請求項5記載のメモリシステム。
【請求項7】
前記メモリコントローラは、閾値以上の数の前記第2物理アドレスが検出された場合、
前記第2有効データを読み出し、
前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項5記載のメモリシステム。
【請求項8】
前記メモリコントローラは、全てのアラインメント順番に対応する第2物理アドレスが検出された場合、
前記第2有効データを読み出し、
前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項7記載のメモリシステム。
【請求項9】
前記メモリコントローラは、前記検出された第1物理アドレスの数が前記検出された第2物理アドレスの数より多い場合、
前記第2有効データを読み出し、
前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項5記載のメモリシステム。
【請求項10】
前記メモリコントローラは、前記検出された第1物理アドレスの数が前記検出された第2物理アドレスの数以下であり、かつ前記第3ブロックの数が閾値以上の場合、
前記第2有効データを読み出し、
前記第2有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項5記載のメモリシステム。
【請求項11】
各々が複数の物理メモリ領域を含み、前記複数のバンクにそれぞれ対応づけられた複数のバッファユニットを含むバッファを更に備え、
前記バッファユニットの数は、前記バンクの数と等しく、
前記メモリコントローラは、前記複数のバッファユニットの各々に、対応するバンクに対応づけられるブロックに記憶される有効データを記憶させるように構成された、
請求項1記載のメモリシステム。
【請求項12】
前記メモリコントローラは、前記スキャンの結果、前記第1バンクに対応づけられる第1バッファユニット内の第3物理メモリ領域に対応する第3物理アドレスを更に検出し、
前記第3物理アドレスに基づいて、前記第1バッファユニットに記憶された第3有効データを読み出し、
前記第3有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項11記載のメモリシステム。
【請求項13】
各々が複数の物理メモリ領域を含む複数のキャッシュラインを含むキャッシュを更に備え、
前記メモリコントローラは、前記複数のキャッシュラインの各々に、連続する論理アドレスに対応づけられた有効データを記憶させるように構成された、
請求項1記載のメモリシステム。
【請求項14】
前記メモリコントローラは、前記スキャンの結果、前記第1バンクに対応づけられる第1キャッシュライン内の第4物理メモリ領域に対応する第4物理アドレスを更に検出し、
前記第4物理アドレスに基づいて、前記第1キャッシュラインに記憶された第4有効データを読み出し、
前記第4有効データを前記第1有効データと共に前記第2ブロックに書き込む
ように構成された、
請求項13記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発性メモリとしてのNANDフラッシュメモリと、不揮発性メモリを制御するメモリコントローラと、を含むメモリシステムが知られている。メモリコントローラは、不揮発性メモリにおけるデータ書込み可能なメモリ領域を確保するために、GC(Garbage Collection)処理を実行する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2014/0068152号明細書
【特許文献2】米国特許第11216368号明細書
【特許文献3】米国特許第8762627号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
GC処理に伴うメモリシステムの性能劣化を抑制する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、各々が複数の物理メモリ領域を含む複数のブロックを含む不揮発性メモリと、論理アドレス空間を複数のバンクに分割し、上記複数のバンクの各々にブロックを対応づけるメモリコントローラと、を備える。上記メモリコントローラは、有効データが記憶される物理メモリ領域に対応する物理アドレスを上記論理アドレス空間上にマッピングするテーブルのうち、上記複数のバンクのうちの第1バンクに関する部分を選択的にスキャンし、上記スキャンの結果、上記第1バンクに対応づけられる第1ブロック内の第1物理メモリ領域に対応する第1物理アドレスを検出し、上記第1物理アドレスに基づいて、上記第1ブロックに記憶された第1有効データを読み出し、上記第1有効データを上記第1バンクに対応づけられる第2ブロックに書き込むように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係る情報処理システムの構成の一例を示すブロック図。
【
図2】第1実施形態に係るメモリシステムで管理される論理アドレス空間の構成の一例を示す図。
【
図3】第1実施形態に係るメモリシステムで用いられる論理アドレスの構成の一例を示す図。
【
図4】第1実施形態に係るバンクとブロックの関係の一例を示す図。
【
図5】第1実施形態に係るメモリコントローラの全体構成の一例を示すブロック図。
【
図6】第1実施形態に係るキャッシュのハードウェア構成の一例を示すブロック図。
【
図7】第1実施形態に係るライトバッファのハードウェア構成の一例を示すブロック図。
【
図8】第1実施形態に係るL2Pテーブルのデータ構造の一例を示す図。
【
図9】第1実施形態に係るメモリコントローラの機能構成の一例を示すブロック図。
【
図10】第1実施形態に係るメモリシステムにおけるGC処理の一例を示すフローチャート。
【
図11】第2実施形態に係るメモリシステムで用いられる論理アドレスの構成の一例を示す図。
【
図12】第2実施形態に係るメモリシステムの機能構成の一例を示すブロック図。
【
図13】第2実施形態に係るメモリシステムにおけるGC処理の一例を示すフローチャート。
【
図14】第2実施形態の変形例に係るメモリシステムにおけるGC処理の一例を示すフローチャート。
【
図15】第2実施形態の変形例に係るメモリシステムにおける判定処理の第1例を示すフローチャート。
【
図16】第2実施形態の変形例に係るメモリシステムにおける判定処理の第2例を示すフローチャート。
【
図17】第2実施形態の変形例に係るメモリシステムにおける判定処理の第3例を示すフローチャート。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【0008】
1.第1実施形態
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
【0009】
図1は、第1実施形態に係る情報処理システムの構成の一例を示すブロック図である。
図1に示すように、情報処理システム1は、ホスト2及びメモリシステム3を含む。ホスト2及びメモリシステム3は、ホストバスHBを介して接続される。ホスト2及びメモリシステム3は、最小で64バイト(B)のデータを通信するように構成される。以下では、ホスト2及びメモリシステム3間のデータ通信における最小単位を“アクセス粒度”とも呼ぶ。ホスト2及びメモリシステム3間の通信は、例えば、CXL
TM(Computer Express Link
TM)に準拠する。
【0010】
ホスト2は、例えば、データセンタ内のサーバである。ホスト2は、論理アドレス空間を、アクセス粒度に対応する論理アドレスで管理する。論理アドレス空間は、メモリシステム3にアクセスするためにホスト2によって使用されるメモリアドレス空間である。アクセス粒度が64B(=26B)で、論理アドレス空間の容量(すなわち、ホスト2から見えるメモリシステム3の容量)が256GB(=238B)の場合、論理アドレス空間は、32(=38-6)ビット以上の論理アドレスで表現される。以下では、論理アドレスのビット幅がNビットであるものとして説明する(Nは2以上の整数)。
【0011】
メモリシステム3は、例えば、SDTMカードのようなメモリカード、UFS(Universal Flash Storage)、又はSSD(Solid State Drive)のような記憶装置である。メモリシステム3は、論理アドレス空間を、複数の小論理アドレス空間に分割して管理する。以下では、小論理アドレス空間は、“バンク”とも呼ぶ。
【0012】
図2は、第1実施形態に係るメモリシステムで管理される論理アドレス空間の構成の一例を示す図である。
図2に示されるように、メモリシステム3は、論理アドレス空間を2
n個のバンクBANK(BANK0,BANK1,…,BANK(2
n-1))に分割して管理する。そして、メモリシステム3は、各バンクBANKを一意に識別可能なバンクアドレスを定義する。ここで、nは、自然数である。バンク数2
nは、例えば、1024以上である。
【0013】
図3は、第1実施形態に係るメモリシステムで用いられる論理アドレスの構成の一例を示す図である。
図3に示されるように、メモリシステム3は、Nビットの論理アドレスLA<N-1:0>を、nビットのバンクアドレスLAa<n-1:0>と、(N-n)ビットの分割論理アドレス<N-n-1:0>とに分割する。
【0014】
1.1.2 メモリシステム
次に、再び
図1を参照して、メモリシステム3の内部構成について説明する。メモリシステム3は、不揮発性メモリ10及びメモリコントローラ20を含む。不揮発性メモリ10及びメモリコントローラ20は、メモリバスMBを介して接続される。不揮発性メモリ10及びメモリコントローラ20間の通信は、例えば、SDR(single data rate)インタフェース、トグルDDR(double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠する。
【0015】
不揮発性メモリ10は、例えば、NANDフラッシュメモリである。不揮発性メモリ10は、物理アドレス空間に対応づけられる物理メモリ領域を有する。物理アドレス空間は、メモリシステム3内の物理メモリ領域上の複数の記憶位置を示すアドレス空間である。物理アドレスは、物理アドレス空間にアクセスするためにメモリコントローラ30によって使用されるアドレスである。具体的には、不揮発性メモリ10は、複数のブロックBLKを含む。複数のブロックの各々は、複数のメモリセル(図示せず)を含む。ブロックBLKは、例えば、データの消去単位となる。以下では、有効データが記憶されていないブロックBLKを“フリーブロックBLK”と呼び、必要に応じて、有効データが記憶されているブロックBLKと区別する。
【0016】
メモリコントローラ20は、例えばSoC(System-on-a-Chip)のような集積回路で構成される。メモリコントローラ20は、ホスト2からの要求に基づいて、不揮発性メモリ10を制御する。具体的には、メモリコントローラ20は、ホスト2からライト要求を受信すると、書込み対象のデータ(ライトデータ)を、不揮発性メモリ10に書き込む。また、メモリコントローラ20は、ホスト2からリード要求を受信すると、読出し対象のデータ(リードデータ)を不揮発性メモリ10から読み出してホスト2に送信する。
【0017】
なお、メモリコントローラ20は、ホスト2からの要求に依ることなく内部処理を実行してもよい。内部処理の例としては、GC(Garbage Collection)処理が挙げられる。GC処理は、1又は複数のブロックBLKに断片的に記憶される有効データを1個のフリーブロックBLKに書き戻すことにより、有効データが断片的に記憶されていた1又は複数のブロックBLKをフリーブロックBLKとして解放する処理である。
【0018】
1.1.3 バンクとブロックの関係
図4は、第1実施形態に係るバンクとブロックの関係の一例を示す図である。
図4では、2
n個のバンクBANK(BANK0~BANK(2
n-1))に分割された論理アドレス空間と、不揮発性メモリ10内の複数のブロックBLKが示される。
【0019】
メモリコントローラ20は、例えば、不揮発性メモリ10内の複数のブロックBLKを、(2n+1)個のグループGP0~GP(2n-1)、及びGP_FBに分類する。このうち、2n個のグループGP0~GP(2n-1)の各々は、有効データが記憶されている1又は複数のブロックBLKにより構成される。そして、グループGP_FBは、不揮発性メモリ10内の全てのフリーブロックBLKにより構成される。
【0020】
メモリコントローラ20は、2n個のグループGP0~GP(2n-1)をそれぞれ、2n個のバンクBANK0~BANK(2n-1)と関連づける。言い換えると、メモリコントローラ20は、あるグループGP内のブロックBLKに書き込まれるライトデータに対応する論理アドレスLAが同一のバンクアドレスLAaを有するように、データが書き込まれるブロックBLKをバンクBANK間で排他的に限定する。
【0021】
これにより、メモリコントローラ20は、或るバンクBANKxを示すバンクアドレスLAaに基づき、バンクBANKxに関連づけられたグループGPxに属する1又は複数のブロックBLKを特定することができる。具体的には、メモリコントローラ20は、各グループGPと、各グループGPに属するブロックBLKを示す物理アドレス(ブロックアドレス)の組と、を関連づけたGPマップテーブルを記憶する。これにより、メモリコントローラ20は、バンクアドレスLAaに基づいてグループGPを特定すると共に、GPマップテーブルに基づいて当該特定されたグループGPに属するブロックBLKを特定することができる。
【0022】
このため、メモリコントローラ20は、フルサイズの物理アドレスPAを用いなくても、物理アドレスPAの一部にバンクアドレスLAaを組み合わせることによって、不揮発性メモリ10において有効データが記憶されている物理メモリ領域をアクセス粒度で特定することができる。すなわち、メモリコントローラ20は、GPマップテーブルのエントリ位置と、当該エントリ位置が示すブロックBLK内のアクセス粒度でのデータ位置と、の組合せに基づき、不揮発性メモリ10において有効データが記憶されている物理メモリ領域をアクセス粒度で特定することができる。以下では、バンクアドレスLAaと組み合わせることによって有効データが記憶されている物理メモリ領域をアクセス粒度で特定することができる物理アドレスPAの一部を、“分割物理アドレスPAa”と呼ぶ。
【0023】
なお、GC処理によってグループGP0~GP(2n-1)のいずれかに属するブロックBLKxが解放されてフリーブロックBLKxとなった場合、メモリコントローラ20は、フリーブロックBLKxとバンクアドレスLAaとの間の関連づけを解消する。これにより、フリーブロックBLKxは、グループGP_FBに割り当てられる。そして、メモリコントローラ20は、ブロックBLKxに代えて、グループGP_FBに属する任意のフリーブロックBLKyを、バンクアドレスLAaに新たに関連づけ直す。これにより、フリーブロックBLKyは、グループGP0~GP(2n-1)のいずれかに割り当てられる。
【0024】
1.1.4 メモリコントローラの構成
次に、メモリコントローラ20の構成について説明する。
【0025】
1.1.4.1 ハードウェア構成
(全体構成)
図5は、第1実施形態に係るメモリコントローラの全体構成の一例を示すブロック図である。メモリコントローラ20は、ホストインタフェース回路(ホストI/F)21、制御回路22、キャッシュ23、メモリインタフェース回路(メモリI/F)24、ライトバッファ25、及びシステムバッファ26を含む。以下に説明されるホストインタフェース回路21、制御回路22、キャッシュ23、メモリインタフェース回路24、ライトバッファ25、及びシステムバッファ26の機能は、専用ハードウェア、プログラムを実行するプロセッサ、又はこれらの組合せのいずれでも実現可能である。
【0026】
ホストインタフェース回路21は、メモリコントローラ20とホスト2との間の通信を司るハードウェアである。ホストインタフェース回路21は、ホストバスHBを介してホスト2と接続される。
【0027】
制御回路22は、メモリコントローラ20の全体を制御する回路である。制御回路22は、例えば、CPU(Central Processing Unit)のようなプロセッサ、ROM(Read Only Memory)、及びRAM(Random Access Memory)を含む。
【0028】
キャッシュ23は、例えば、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)である。キャッシュ23には、アクセス頻度の高いデータが記憶される。ホスト2からのライトデータは、ホストインタフェース回路21を介して、まずキャッシュ23に記憶される。キャッシュ23に記憶されたライトデータは、ライトバッファ25に送信される。
【0029】
メモリインタフェース回路24は、メモリコントローラ20と不揮発性メモリ10との間の通信を司るハードウェアである。メモリインタフェース回路24は、メモリバスMBを介して不揮発性メモリ10と接続される。
【0030】
ライトバッファ25は、例えば、DRAMである。ライトバッファ25は、キャッシュ23とメモリインタフェース回路24との間でライトデータをバッファリングする。
【0031】
システムバッファ26は、例えば、DRAMである。システムバッファ26は、システムデータを記憶する。システムデータは、不揮発性メモリ10及びライトバッファ25を管理するためのデータである。システムバッファ26は、システムデータの一例として、L2Pテーブル26a及びGPマップテーブル26bを記憶する。L2Pテーブル26aは、論理アドレスLAから物理アドレスPAへの対応付けを示す。L2Pテーブル26aのデータ構造の詳細については、後述する。
(キャッシュ)
図6は、第1実施形態に係るキャッシュのハードウェア構成の一例を示すブロック図である。
図6に示されるように、キャッシュ23は、複数のキャッシュラインCLを含む。各キャッシュラインCLは、各々がアクセス粒度と同等の記憶容量を有する複数のキャッシュユニットCUを含む。
図6の例では、キャッシュラインCLが8個のキャッシュユニットCU0~CU7を含む場合が示される。キャッシュラインCL内のキャッシュユニットCU0~CU7には、連続する論理アドレスが対応づけられる。なお、キャッシュラインCLに記憶されるデータは、キャッシュユニットCU0~CU7に断続的に記憶されてもよい。
【0032】
キャッシュ23に記憶されるデータは、キャッシュラインCL単位で追い出される。すなわち、
図6の例のように、キャッシュラインCLが8個のキャッシュユニットCU0~CU7によって構成される場合、キャッシュ23から追い出されるデータの単位サイズは、64B×8=512Bとなる。なお、追い出される全てのデータが有効データでなくてもよい。すなわち、1度の追い出し(eviction)処理によってキャッシュラインCLから追い出される有効データのサイズは、64B~512Bの範囲を取り得る。
(ライトバッファ)
図7は、第1実施形態に係るライトバッファのハードウェア構成の一例を示すブロック図である。
図7に示されるように、ライトバッファ25は、2
n個のライトバッファユニットWBU0~WBU(2
n-1)を含む。
【0033】
ライトバッファユニットWBU0~WBU(2
n-1)の各々は、1回のライト処理で書き込まれるデータ(書込み単位)に対応する記憶容量(例えば、4KB)を有する。ライトバッファユニットWBU0~WBU(2
n-1)はそれぞれ、バンクBANK0~BANK(2
n-1)に対応づけられる。ライトバッファユニットWBU0~WBU(2
n-1)にバッファリングされたデータはそれぞれ、メモリインタフェース回路24を介して、グループGP0~GP(2
n-1)に属するブロックBLK内のメモリセルに書き込まれる。
(L2Pテーブル)
図8は、第1実施形態に係るL2Pテーブルのデータ構造の一例を示す図である。
図8に示されるように、L2Pテーブル26aは、複数の記憶領域(エントリ)によって構成される。L2Pテーブル26aを構成するエントリの個数は、アクセス粒度と、ホスト2から見えるメモリシステム3の容量と、によって決定される。例えば、アクセス粒度が64B(=2
6B)で、ホスト2から見えるメモリシステム3の容量が256GB(=2
38B)の場合、L2Pテーブル26aは、4G(=2
32)個のエントリによって構成される。複数のエントリの各々は、対応する論理アドレスLAによって一意に識別される。すなわち、複数のエントリの各々は、対応する論理アドレスLAをポインタptrとして用いてアクセスされる。複数のエントリのうち、同一のバンクアドレスLAaに対応づけられるエントリの数は、エントリの総数を2
nで除した数になる。具体的には、エントリの総数が4G個の場合、1個のバンクに対応づけられるエントリの数は、2
(32-n)個となる。
【0034】
複数のエントリの各々には、有効データが記憶される物理メモリ領域に対応する分割物理アドレスPAaが記憶され得る。分割物理アドレスPAaが記憶されている場合、当該エントリを指す論理アドレスLAに対応する有効データは、不揮発性メモリ10内に記憶されている。すなわち、L2Pテーブル26aは、有効データが記憶される物理メモリ領域に対応する分割物理アドレスPAaが論理アドレス空間上にマッピングされたデータ構造を有する。
【0035】
なお、上述の通り、メモリコントローラ20は、分割物理アドレスPAaだけでは、有効データが記憶されている不揮発性メモリ10内の物理メモリ領域をアクセス粒度で特定することはできない。しかしながら、メモリコントローラ20は、分割物理アドレスPAaに含まれるGPマップテーブル26bのエントリ位置と、当該エントリ位置が示すブロックBLK内のアクセス粒度でのデータ位置と、の組合せにより、有効データが記憶されている不揮発性メモリ10内の物理メモリ領域をアクセス粒度で特定することができる。
【0036】
なお、複数のエントリの各々には、ライトバッファユニットWBU内の物理メモリ領域を示す物理アドレスPA_WBUが記憶されていてもよい。物理アドレスPA_WBUが記憶されている場合、当該エントリを指す論理アドレスLAに対応する有効データは、ライトバッファ25内に記憶されている。
【0037】
複数のエントリの各々には、キャッシュユニットCU内の物理メモリ領域を示す物理アドレスPA_CUが記憶されていてもよい。物理アドレスPA_CUが記憶されている場合、当該エントリを指す論理アドレスLAに対応する有効データは、キャッシュ23内に記憶されている。
【0038】
複数のエントリの各々には、物理アドレスPAが記憶されていなくてもよい。物理アドレスPAが記憶されていない場合、当該エントリを指す論理アドレスLAに対応する有効データは、メモリシステム3内の物理メモリ領域に記憶されていない。なお、
図8の例では、物理アドレスPAが記憶されていないエントリには、“NULL”と記載されている。
【0039】
1.1.4.2 機能構成
図9は、第1実施形態に係るメモリコントローラの機能構成の一例を示すブロック図である。
図9では、主にライト処理及びGC処理に関するメモリコントローラ20の機能構成が示される。制御回路22は、ライト処理及びGC処理に関して、例えば、ライトコントローラ22a、NANDコントローラ22b、及びGCコントローラ22cとして機能する。
【0040】
まず、ライト処理に関する機能構成について説明する。
【0041】
キャッシュ23からライトデータWDを受信すると、ライトコントローラ22aは、ライトデータWDが書き込まれる不揮発性メモリ10の物理メモリ領域を決定する。ライトコントローラ22aは、ライトデータWDに対応する論理アドレスLA内のバンクアドレスLAaに基づき、決定された物理メモリ領域に対応する物理アドレスPAから、分割物理アドレスPAaを生成し、L2Pテーブル26aに記憶させる。また、ライトコントローラ22aは、ライトデータWDを、対応するバンクBANKに関連づけられたライトバッファユニットWBUにバッファリングさせる。
【0042】
ライトバッファ25からライトデータWDを受信すると、NANDコントローラ22bは、ライトデータWDを不揮発性メモリ10内の物理メモリ領域に書き込む。
【0043】
なお、L2Pテーブル26aは、例えば、キャッシュ23、ライトバッファ25、及び不揮発性メモリ10のいずれのメモリのどの位置にライトデータWDが記憶されているかに応じて、都度更新される。また、GPマップテーブル26bには、グループGPと、当該グループGPに属するブロックBLKを示すブロックアドレスの組と、が関連づけて記憶される。
【0044】
メモリコントローラ20のライト処理に関する主な機能構成は、以上の通りである。
【0045】
次に、GC処理に関する機能構成について説明する。
【0046】
GCコントローラ22cは、不揮発性メモリ10内の複数のブロックBLKについて、有効データ数を管理する。有効データ数が閾値以下となるブロックBLKが発生した場合、GCコントローラ22cは、当該ブロックBLKを対象とするGC処理の実行を開始する。具体的には、GCコントローラ22cは、GC処理対象のブロックBLKが属するグループGPに対応するバンクBANKを特定する。GCコントローラ22cは、スキャン信号Srqを用いて、L2Pテーブル26aのうち、特定されたバンクBANKに対応するバンクアドレスLAaによって指定される複数のエントリを選択的にスキャンする。GCコントローラ22cは、スキャンの結果、GC処理対象のブロックBLKに記憶される有効データの分割物理アドレスPAaを取得する。GCコントローラ22cは、取得された分割物理アドレスPAa及びバンクアドレスLAaによって特定される物理メモリ領域に対するリード要求Rrqを発行する。
【0047】
NANDコントローラ22bは、リード要求Rrqを受けるとリード処理を実行し、不揮発性メモリ10からGC処理対象のブロックBLKに記憶される有効データをリードデータRDとして読み出す。リードデータRDは、NANDコントローラ22bから、GCコントローラ22cを介して、ライトコントローラ22aに送信される。
【0048】
リードデータRDを受けると、ライトコントローラ22aは、当該リードデータRDを同じグループGPに属する書込み更新中のブロックBLKにライトデータWDとして書き戻すライトバック処理を実行する。ライトバック処理の詳細は、上述したライト処理と同等であるため、説明を省略する。
【0049】
なお、ライトバック処理に先立ち、メモリコントローラ20は、GC処理対象のブロックBLKが属するグループGP内でデータを書込み可能なブロックBLKが枯渇しないように、グループGP_FBからGC処理対象のグループGPへのフリーブロックBLKの割当てを行う。また、メモリコントローラ20は、GC処理対象のブロックBLKをフリーブロックBLKとしてグループGP_FBに割り当てた後、新しいフリーブロックBLKをグループGP_FBからGC処理対象のグループGPに割り当てる。
【0050】
メモリコントローラ20のGC処理に関する主な機能構成は、以上の通りである。
【0051】
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
【0052】
1.2.1 GC処理
図10は、第1実施形態に係るメモリシステムにおけるGC処理の一例を示すフローチャートである。なお、
図10に示されるGC処理では、GC処理対象ブロックBLKが属するグループGPに、書込み可能なフリーブロックBLKがグループGP_FBから割り当てられているものとする。
【0053】
有効データ数が閾値以下となるブロックBLKが発生すると(開始)、GCコントローラ22cは、当該ブロックBLKをGC処理対象ブロックBLKとみなし、GC処理対象ブロックBLKが属するグループGPに対応するバンクBANKを特定する(S11)。
【0054】
GCコントローラ22cは、スキャンの開始位置となる論理アドレスLAを、S11の処理で特定されたバンクBANKから選択する(S12)。スキャンの開始位置としては、例えば、特定されたバンクBANKに対応するバンクアドレスLAaを含む論理アドレスLAの最下位又は最上位のアドレスが選択される。
【0055】
GCコントローラ22cは、S12の処理で選択された論理アドレスLAに基づいてGC処理対象ブロックBLKの有効データが検出されたか否かを判定する(S13)。具体的には、GCコントローラ22cは、S12の処理で選択された論理アドレスLAを用いてL2Pテーブル26aを参照する。そして、GCコントローラ22cは、参照先のエントリにGC処理対象ブロックBLKに対応する分割物理アドレスPAaが記憶されているか否かを判定することにより、GC処理対象ブロックBLKの有効データが検出されたか否かを判定する。
【0056】
GC処理対象ブロックBLKの有効データが検出された場合(S13;yes)、GCコントローラ22cは、検出された有効データに対応する分割物理アドレスPAaを、L2Pテーブル26aから取得する(S14)。
【0057】
GC処理対象ブロックBLKの有効データが検出されなかった場合(S13;no)、又はS14の処理の後、GCコントローラ22cは、S11の処理で特定されたバンクBANKをスキャン完了したか否かを判定する(S15)。
【0058】
S11の処理で特定されたバンクBANKに対するスキャンが完了していない場合(S15;no)、GCコントローラ22cは、選択する論理アドレスをインクリメントする(S16)。
【0059】
S16の処理の後、GCコントローラ22cは、S16の処理で選択された論理アドレスに基づいてGC処理対象ブロックBLKの有効データが検出されたか否かを判定する(S13)。そして、後続するS14~S16の処理が実行される。これにより、S11の処理で特定されたバンクBANKに対するスキャンが完了するまでS13~S16の処理が繰り返される。
【0060】
S11の処理で特定されたバンクBANKに対するスキャンが完了した場合(S15;yes)、NANDコントローラ22bは、S14の処理で取得された分割物理アドレスPAaに基づき、S13の処理で検出された有効データをGC処理対象ブロックBLKから読み出す(S17)。
【0061】
S17の処理の後、NANDコントローラ22bは、S17の処理で読み出された全ての有効データを、GC処理対象ブロックBLKが属するグループGP内の1個の書戻し対象ブロックBLKに書き戻す(S18)。
【0062】
S18の処理の後、メモリコントローラ20は、GC処理対象ブロックBLKをフリーブロックBLKとして解放する(S19)。そして、GC処理対象ブロックBLKは、グループGP_FBに割り当てられる。また、メモリコントローラ20は、GC処理対象ブロックBLKが属するグループGPに、書込み可能な新たなフリーブロックBLKを割り当てる。
【0063】
S19の処理が終了すると、GC処理は終了となる(終了)。
【0064】
1.3 第1実施形態に係る効果
第1実施形態によれば、メモリコントローラ20は、論理アドレス空間を複数のバンクBANKに分割する。メモリコントローラ20は、複数のバンクBANKの各々に対応づけるブロックBLKを排他的に管理する。GC処理において、GCコントローラ22cは、L2Pテーブル26aのうち、GC処理対象ブロックBLKに対応づけられる1個のバンクBANKに関する部分を選択的にスキャンする。GCコントローラ22cは、スキャンの結果、GC処理対象ブロックBLKにおいて有効データが記憶される物理メモリ領域に対応する分割物理アドレスPAaを検出する。NANDコントローラ22bは、検出された分割物理アドレスPAaに基づいて、GC処理対象ブロックBLKに記憶された有効データを読み出す。ライトコントローラ22a及びNANDコントローラ22bは、読み出された有効データをGC処理対象ブロックBLKと同一グループGPに属するフリーブロックBLKに書き戻す。これにより、低いアクセス粒度でのランダムライトで有効データが断片的に記憶された状態になったブロックBLKを、フリーブロックBLK化することができる。このため、データ書込み可能な物理メモリ領域の減少を抑制できる。
【0065】
また、メモリコントローラ20は、L2Pテーブル26aのうち1個のバンクBANKに関する部分にスキャンする範囲を限定しつつ、GC処理を実行することができる。このため、L2Pテーブル26a全体をスキャンする場合よりもスキャンする範囲を1/2nに狭めることができる。したがって、L2Pテーブル26aへのアクセス負荷を低減することができる。
【0066】
なお、L2Pテーブル26aは、有効データが記憶される物理メモリ領域に対応する物理アドレスが論理アドレス空間上にマッピングされるデータ構造を有する。すなわち、メモリシステム3は、有効データに対応する論理アドレスが物理アドレス空間上にマッピングされるデータ構造(P2Lテーブル)を用いることなく、GC処理を実行できる。このため、第1実施形態によれば、メモリシステム3は、P2Lテーブルを、例えば不揮発性メモリ10に記憶させることが不要となる。したがって、P2Lテーブルを不揮発性メモリ10に記憶させる場合よりも、不揮発性メモリ10への書込み効率を示す指標であるWAF(Write Amplification)を改善できる。
【0067】
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、GC処理と併せてデフラグメント処理を実行する点において、第1実施形態と異なる。以下の説明では、第1実施形態と異なる構成及び動作について主に説明する。第1実施形態と同等の構成及び動作については説明を適宜省略する。
【0068】
2.1 論理アドレス
図11は、第2実施形態に係るメモリシステムで用いられる論理アドレスの構成の一例を示す図である。
図11は、第1実施形態における
図3に対応する。
図11に示されるように、第2実施形態では、メモリシステム3は、Nビットの論理アドレスLA<N-1:0>を、nビットのバンクアドレスLAa<n-1:0>と、kビットのアラインメントアドレスLAc<k-1:0>と、(N-n-k-1)ビットの分割論理アドレス<N-n-k-1:0>とに分割する。
【0069】
アラインメントアドレスLAcは、連続する複数の64Bデータについてのアクセス(シーケンシャルアクセス)が発生した場合における、当該連続する複数の64Bデータの順番を示す。バンクアドレスLAa及び分割論理アドレスLAbからアラインメントアドレスLAcが明示的に分割されることにより、メモリシステム3は、連続する複数の64Bデータを、1個のバンクBANKに関連づけることができる。このため、メモリシステム3は、連続する複数の64Bデータを、1個のグループGP内に記憶させることができる。
【0070】
以下では、アクセス粒度の或る有効データ(対象有効データ)と連続する有効データがある場合、当該対象有効データと連続する有効データを、対象データの“アラインメントデータ”と呼ぶ。対象有効データのアラインメントデータは、対象有効データと同一のバンクBANKに対応づけられたグループGPに記憶される。しかしながら、対象有効データのアラインメントデータは、対象有効データが記憶されるブロックBLKとは異なるブロックBLKに記憶され得る。
【0071】
2.2 メモリコントローラの機能構成
図12は、第2実施形態に係るメモリコントローラの機能構成の一例を示すブロック図である。
図12は、第1実施形態における
図9に対応する。制御回路22は、ライト処理及びGC処理に関して、例えば、ライトコントローラ22a、NANDコントローラ22b、及びGCコントローラ22dとして機能する。
【0072】
ライト処理に関する機能構成は、第1実施形態と同等であるため、説明を省略する。
【0073】
GC処理に関する機能構成について説明する。
【0074】
GCコントローラ22dは、不揮発性メモリ10内の複数のブロックBLKについて、有効データ数を管理する。有効データ数が閾値以下となるブロックBLKが発生した場合、GCコントローラ22dは、当該ブロックBLKを対象とするGC処理の実行を開始する。具体的には、GCコントローラ22dは、GC処理対象のブロックBLKが属するグループGPに対応するバンクBANKを特定する。GCコントローラ22dは、スキャン信号Srqを用いて、L2Pテーブル26aのうち、特定されたバンクBANKに対応するバンクアドレスLAaによって指定される複数のエントリを選択的にスキャンする。GCコントローラ22dは、スキャンの結果、GC処理対象のブロックBLKに記憶される対象有効データの分割物理アドレスPAaを取得する。また、GCコントローラ22dは、GC処理対象のブロックBLKに記憶される対象有効データのアラインメントデータの分割物理アドレスPAaを更に取得する。GCコントローラ22dは、取得された分割物理アドレスPAa及びバンクアドレスLAaによって特定される物理メモリ領域に対するリード要求Rrqを発行する。
【0075】
NANDコントローラ22bは、リード要求Rrqを受けるとリード処理を実行し、不揮発性メモリ10からGC処理対象のブロックBLKに記憶される対象有効データ、及びアラインメントデータをリードデータRDとして読み出す。リードデータRDは、NANDコントローラ22bから、GCコントローラ22dを介して、ライトコントローラ22aに送信される。
【0076】
リードデータRDを受けると、ライトコントローラ22aは、当該リードデータRDを同じグループGPに属する書込み更新中のブロックBLKにライトデータWDとして書き戻すライトバック処理を実行する。なお、ライトバック処理に際して、GC処理対象ブロックBLKに記憶される対象有効データ、及びアラインメントデータは、アラインメントアドレスLAcに基づいて、アラインメント順番に沿って並べ替えられる。ライトバック処理の詳細は、上述したライト処理と同等であるため、説明を省略する。
【0077】
なお、ライトバック処理に先立ち、メモリコントローラ20は、GC処理対象のブロックBLKが属するグループGP内でデータを書込み可能なブロックBLKが枯渇しないように、グループGP_FBからGC処理対象のグループGPへのフリーブロックBLKの割当てを行う。また、メモリコントローラ20は、GC処理対象のブロックBLKをフリーブロックBLKとしてグループGP_FBに割り当てた後、新しいフリーブロックBLKをグループGP_FBからGC処理対象のグループGPに割り当てる。
【0078】
メモリコントローラ20のGC処理に関する主な機能構成は、以上の通りである。
【0079】
2.3 GC処理
図13は、第2実施形態に係るメモリシステムにおけるGC処理の一例を示すフローチャートである。
図13は、第1実施形態における
図10に対応する。
【0080】
有効データ数が閾値以下となるブロックBLKが発生すると(開始)、GCコントローラ22dは、当該ブロックBLKをGC処理対象ブロックBLKとみなし、GC処理対象ブロックBLKが属するグループGPに対応するバンクBANKを特定する(S21)。
【0081】
GCコントローラ22dは、スキャンの開始位置となる論理アドレスLAを、S21の処理で特定されたバンクBANKから選択する(S22)。スキャンの開始位置としては、例えば、特定されたバンクBANKに対応するバンクアドレスLAaを含む論理アドレスLAの最下位又は最上位のアドレスが選択される。
【0082】
GCコントローラ22dは、S22の処理で選択された論理アドレスLAに基づいてGC処理対象ブロックBLKの対象有効データが検出されたか否かを判定する(S23)。具体的には、GCコントローラ22dは、S22の処理で選択された論理アドレスLAを用いてL2Pテーブル26aを参照する。そして、GCコントローラ22dは、参照先のエントリにGC処理対象ブロックBLKに対応する分割物理アドレスPAaが記憶されているか否かを判定することにより、GC処理対象ブロックBLKの対象有効データが検出されたか否かを判定する。
【0083】
GC処理対象ブロックBLKの対象有効データが検出された場合(S23;yes)、GCコントローラ22dは、検出された対象有効データに対応する分割物理アドレスPAaを、L2Pテーブル26aから取得する(S24)。
【0084】
GC処理対象ブロックBLKの対象有効データが検出されなかった場合(S23;no)、GCコントローラ22dは、S22の処理で選択された論理アドレスLAに基づいてGC処理対象ブロックBLKの対象有効データのアラインメントデータが検出されたか否かを判定する(S25)。具体的には、GCコントローラ22dは、S22の処理で選択された論理アドレスLA内のアラインメントアドレスLAcと連続するアラインメントアドレスLAcを含む論理アドレスLAを用いてL2Pテーブル26aを参照する。そして、GCコントローラ22dは、参照先のエントリにアラインメントデータが記憶されているか否かを判定することにより、GC処理対象ブロックBLKの対象有効データのアラインメントデータが検出されたか否かを判定する。
【0085】
GC処理対象ブロックBLKの対象有効データのアラインメントデータが検出された場合(S25;yes)、GCコントローラ22dは、検出されたアラインメントデータに対応する分割物理アドレスPAaを、L2Pテーブル26aから取得する(S26)。
【0086】
GC処理対象ブロックBLKの対象有効データのアラインメントデータが検出されなかった場合(S25;no)、S24の処理、又はS26の処理の後、GCコントローラ22dは、S21の処理で特定されたバンクBANKをスキャン完了したか否かを判定する(S27)。
【0087】
S21の処理で特定されたバンクBANKに対するスキャンが完了していない場合(S27;no)、GCコントローラ22dは、選択する論理アドレスをインクリメントする(S28)。
【0088】
S28の処理の後、GCコントローラ22dは、S28の処理で選択された論理アドレスに基づいてGC処理対象ブロックBLKの対象有効データが検出されたか否かを判定する(S23)。そして、後続するS24~S28の処理が実行される。これにより、S21の処理で特定されたバンクBANKに対するスキャンが完了するまでS23~S28の処理が繰り返される。
【0089】
S21の処理で特定されたバンクBANKに対するスキャンが完了した場合(S27;yes)、NANDコントローラ22bは、S24の処理、及びS26の処理で取得された分割物理アドレスPAaに基づき、S23の処理で検出された対象有効データ及びS25の処理で検出されたアラインメントデータを含むデータセットを、S21の処理で特定されたバンクBANKに対応するグループGPから読み出す(S29)。
【0090】
S29の処理の後、NANDコントローラ22bは、S29の処理で読み出されたデータセットが一つの書込み単位内に配置されるように、GC処理対象ブロックBLKが属するグループGP内の書戻し対象ブロックBLK内に書き戻す(S30)。これにより、グループGP内で断片的に記憶されていたGC処理対象ブロックBLK内の対象有効データ、及び当該対象有効データのアラインメントデータが1個のブロックBLKに集約される。すなわち、GC処理に併せて、デフラグ処理が更に実行される。
【0091】
S30の処理の後、メモリコントローラ20は、GC処理対象ブロックBLKをフリーブロックBLKとして解放する(S31)。そして、GC処理対象ブロックBLKは、グループGP_FBに割り当てられる。また、メモリコントローラ20は、GC処理対象ブロックBLKが属するグループGPに、書込み可能な新たなフリーブロックBLKを割り当てる。
【0092】
S31の処理が終了すると、GC処理は終了となる(終了)。
【0093】
2.4 第2実施形態に係る効果
第2実施形態によれば、メモリコントローラ20は、論理アドレスLAを、バンクアドレスLAa、分割論理アドレスLAb、及びアラインメントアドレスLAcに分割する。これにより、メモリコントローラ20は、連続する複数の64Bデータを同じバンクBANKに対応づけることができる。これにより、GCコントローラ22dは、GC処理の際に実行される、L2Pテーブル26a内の1個のバンクBANKに対する選択的にスキャンによって、GC処理対象ブロックBLK内の対象有効データのアラインメントデータを検出することができる。このため、GCコントローラ22dは、GC処理に併せて、デフラグ処理を実行することができる。したがって、第1実施形態と同様に、L2Pテーブル26aへのアクセス負荷を抑制しつつ、断片化されたデータを1個のフリーブロックBLKに集約することができる。
【0094】
3. 変形例
上述した実施形態には、種々の変形を適用することができる。
【0095】
上述した第2実施形態では、アラインメントデータが存在する場合にデフラグ処理が無条件で実行される場合について説明したが、これに限られない。例えば、デフラグ処理を実行するか否かが判定されてもよい。以下では、第2実施形態と異なる構成及び動作について主に説明する。第2実施形態と同等の構成及び動作については、説明を適宜省略する。
【0096】
3.1 GC処理
図14は、変形例に係るメモリシステムにおけるGC処理の一例を示すフローチャートである。
図14は、第2実施形態における
図13に対応する。
【0097】
有効データ数が閾値以下となるブロックBLKが発生すると(開始)、GCコントローラ22dは、当該ブロックBLKをGC処理対象ブロックBLKとみなし、GC処理対象ブロックBLKが属するグループGPに対応するバンクBANKを特定する(S41)。
【0098】
GCコントローラ22dは、S41の処理で特定されたバンクBANKに対するスキャン処理を実行する(S42)。S42の処理は、
図13におけるS22~S28の処理と同等である。これにより、GCコントローラ22dは、GC処理対象ブロックBLK内の有効データが記憶される分割物理アドレスPAa、及び当該有効データのアラインメントデータが記憶される分割物理アドレスPAaを取得する。
【0099】
S42の処理の後、GCコントローラ22dは、判定処理を実行する(S43)。GCコントローラ22dは、判定処理によって、デフラグ処理を実行するか否かを判定する。判定処理の詳細については、後述する。
【0100】
デフラグ処理を実行すると判定された場合(S44;yes)、NANDコントローラ22bは、S43の処理で取得された分割物理アドレスPAaに基づき、GC処理対象ブロックBLK内の有効データ、及び当該有効データのアラインメントデータを含むデータセットを、S41の処理で特定されたバンクBANKに対応するグループGPから読み出す(S45)。
【0101】
S45の処理の後、NANDコントローラ22bは、S45の処理で読み出されたデータセットが一つの書込み単位内に配置されるように、GC処理対象ブロックBLKが属するグループGP内の書戻し対象ブロックBLK内に書き戻す(S46)。これにより、グループGP内で断片的に記憶されていたGC処理対象ブロックBLK内の有効データ、及び当該有効データのアラインメントデータが1個のブロックBLKに集約される。すなわち、GC処理に併せて、デフラグ処理が更に実行される。
【0102】
デフラグ処理を実行しないと判定された場合(S44;no)、NANDコントローラ22bは、S43の処理で取得された分割物理アドレスPAaに基づき、GC処理対象ブロックBLK内の有効データを、S41の処理で特定されたバンクBANKに対応するグループGPから読み出す(S47)。
【0103】
S47の処理の後、NANDコントローラ22bは、S47の処理で読み出された全ての有効データを、GC処理対象ブロックBLKが属するグループGP内の書戻し対象ブロックBLKに書き戻す(S48)。すなわち、GC処理に併せて、デフラグ処理は実行されない。
【0104】
S46の処理の後、又はS48の処理の後、メモリコントローラ20は、GC処理対象ブロックBLKをフリーブロックBLKとして解放する(S49)。そして、GC処理対象ブロックBLKは、グループGP_FBに割り当てられる。また、メモリコントローラ20は、GC処理対象ブロックBLKが属するグループGPに、書込み可能な新たなフリーブロックBLKを割り当てる。
【0105】
S49の処理が終了すると、GC処理は終了となる(終了)。
【0106】
3.2 判定処理
次に、判定処理の詳細について説明する。判定処理としては、例えば、以下の3例が挙げられる。
【0107】
3.2.1 第1例
図15は、変形例に係るメモリシステムにおける判定処理の第1例を示すフローチャートである。第1例では、ホスト2からのアクセスにおけるシーケンシャルアクセスの割合(シーケンシャルアクセス率)に基づいて、デフラグ処理の実行可否が判定される。
【0108】
判定処理が開始されると(開始)、GCコントローラ22dは、シーケンシャルアクセス率が閾値以上であるか否かを判定する(S51)。
【0109】
シーケンシャルアクセス率が閾値以上である場合(S51;yes)、GCコントローラ22dは、デフラグ処理を実行すると判定する(S52)。
【0110】
シーケンシャルアクセス率が閾値未満である場合(S51;no)、GCコントローラ22dは、デフラグ処理を実行しないと判定する(S53)。
【0111】
S52の処理、又はS53の処理の後、判定処理は終了となる(終了)。
【0112】
3.2.2 第2例
図16は、変形例に係るメモリシステムにおける判定処理の第2例を示すフローチャートである。第2例では、不揮発性メモリ10に記憶されるアラインメントデータの数に基づいて、デフラグ処理の実行可否が判定される。
【0113】
判定処理が開始されると(開始)、GCコントローラ22dは、全てのアラインメントデータが検出されたか否かを判定する(S61)。
【0114】
検出されないアラインメントデータが存在する場合(S61;no)、GCコントローラ22dは、不揮発性メモリ10に記憶されるアラインメントデータの数が閾値以上であるか否かを判定する(S62)。S62の処理における閾値には、例えば、不揮発性メモリ10に記憶され得るアラインメントデータの総数の80%等の値が適用される。なお、キャッシュ23及びライトバッファ25にアラインメントデータが記憶されている場合には、当該アラインメントデータの数が不揮発性メモリ10に記憶され得るアラインメントデータの総数から除外された上で、閾値が適用される。
【0115】
全てのアラインメントデータが検出された場合(S61;yes)、又は不揮発性メモリ10に記憶されるアラインメントデータの数が閾値以上である場合(S62;yes)、GCコントローラ22dは、デフラグ処理を実行すると判定する(S63)。
【0116】
不揮発性メモリ10に記憶されるアラインメントデータの数が閾値未満である場合(S62;no)、GCコントローラ22dは、デフラグ処理を実行しないと判定する(S64)。
【0117】
S63の処理、又はS64の処理の後、判定処理は終了となる(終了)。
【0118】
3.2.3 第3例
図17は、変形例に係るメモリシステムにおける判定処理の第3例を示すフローチャートである。第3例では、GC処理対象ブロックBLK内の有効データ数と、GC処理対象ブロックBLK外のアラインメントデータ数との関係に基づいて、デフラグ処理の実行可否が判定される。
【0119】
判定処理が開始されると(開始)、GCコントローラ22dは、検出されたGC処理対象ブロックBLK内の有効データ数が、GC処理対象ブロックBLK外のアラインメントデータ数より多いか否かを判定する(S71)。
【0120】
GC処理対象ブロックBLK内の有効データ数が、GC処理対象ブロックBLK外のアラインメントデータ数以下の場合(S71;no)、GCコントローラ22dは、検出アラインメントデータが何個のブロックBLKに分散して記憶されているかを算出する。そして、GCコントローラ22dは、算出されたブロックBLKの数が閾値以上であるか否かを判定する(S72)。
【0121】
GC処理対象ブロックBLK内の有効データ数が、GC処理対象ブロックBLK外のアラインメントデータ数より多い場合(S71;yes)、又はアラインメントデータが記憶されるブロックBLKの数が閾値以上である場合(S72;yes)、GCコントローラ22dは、デフラグ処理を実行すると判定する(S73)。
【0122】
アラインメントデータが記憶されるブロックBLKの数が閾値未満である場合(S72;no)、GCコントローラ22dは、デフラグ処理を実行しないと判定する(S74)。
【0123】
S73の処理、又はS74の処理の後、判定処理は終了となる(終了)。
【0124】
3.3 変形例に係る効果
変形例によれば、GCコントローラ22dは、GC処理において、デフラグ処理の実行可否を判定する。これにより、デフラグ処理が過度に実行されることを回避できる。このため、WAFの悪化を抑制すると共に、不揮発性メモリ10との通信帯域の圧迫を抑制できる。
【0125】
具体的には、例えば、シーケンシャルアクセス比率が高い場合、データの断片化は発生しにくいため、デフラグ処理の要求度は比較的低い。第1変形例によれば、GCコントローラ22dは、シーケンシャルアクセス比率に基づいて、デフラグ処理の可否を判定する。これにより、データの断片化が発生しやすいランダムアクセス比率が高い場合に、集中的にデフラグ処理を実行できる。
【0126】
また、例えば、全てのアラインメントデータが、メモリシステム3内に記憶されているとは限らない。メモリシステム3内に記憶されるアラインメントデータ数が少ない場合、デフラグ処理の要求度は比較的低い。第2変形例によれば、GCコントローラ22dは、不揮発性メモリ10に記憶されるアラインメントデータの数に基づいて、デフラグ処理の可否を判定する。これにより、アラインメントデータがある程度そろう場合に、集中的にデフラグ処理を実行できる。
【0127】
また、例えば、或るブロックBLKがGC処理対象ブロックBLKとなった場合にデフラグ処理を実行するよりも、他のブロックBLKがGC処理対象ブロックBLKとなった場合にデフラグ処理を実行した方が、効率がよい場合がある。第3変形例によれば、GCコントローラ22dは、対象有効データ数とアラインメントデータ数の大小関係に基づいて、デフラグ処理の可否を判定する。これにより、デフラグ処理を併せて実行する際の効率がよいGC処理を適切に選択できる。
【0128】
なお、対象有効データよりもアラインメントデータの方が多い場合でも、アラインメントデータが多くのブロックBLKに分散している場合には、デフラグ処理を実行した方がよい場合もあり得る。第3変形例によれば、GCコントローラ22dは、アラインメントデータ数が対象有効データ数より多く、かつアラインメントデータが記憶されるブロックBLKの数が閾値を超える場合、デフラグ処理を実行すると判定する。これにより、アラインメントデータが極度に断片化している状態を検出し、有効データの集約を適切に実行することができる。
【0129】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0130】
1…情報処理システム
2…ホスト
3…メモリシステム
10…不揮発性メモリ
20…メモリコントローラ
21…ホストインタフェース回路
22…制御回路
22a…ライトコントローラ
22b…NANDコントローラ
22c,22d…GCコントローラ
23…キャッシュ
24…メモリインタフェース回路
25…ライトバッファ
26…システムバッファ
26a…L2Pテーブル
26b…GPマップテーブル