(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024043337
(43)【公開日】2024-03-29
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/02 20060101AFI20240322BHJP
G06F 12/00 20060101ALI20240322BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
G06F12/02 530E
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022148464
(22)【出願日】2022-09-16
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】弁理士法人イトーシン国際特許事務所
(72)【発明者】
【氏名】神谷 智之
(72)【発明者】
【氏名】藤田 晃右
(72)【発明者】
【氏名】遠藤 郁
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160AA12
5B160AA14
(57)【要約】
【課題】 リードレイテンシを改善することができるメモリシステムを提供する。
【解決手段】 実施形態のメモリシステムは、不揮発性メモリの第1及び第2領域のそれぞれのブロックに第1モード又は第2モードによるデータ書き込みを行うように構成されたメモリコントローラ、を具備し、前記第1モードはメモリセル当たり第1ビット数でデータを書き込むための書き込みモードであり、前記第2モードはメモリセル当たり前記第1ビット数より多い第2ビット数でデータを書き込むための書き込みモードであり、前記メモリコントローラは、ホストから受信したデータを前記第1領域の第1ブロックに前記第1モードにより書き込み、前記第1ブロックに書き込まれた前記データのうち、システムデータを前記第1領域の第2ブロックに前記第1モードによりコピーし、ユーザデータを前記第2領域の第3ブロックに前記第2モードによりコピーする、コピー処理を実行する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
それぞれが複数のブロックを含む第1領域と第2領域とを有する不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記第1領域のそれぞれのブロックに第1モードによるデータ書き込みを行い、前記第2領域のそれぞれのブロックに第2モードによるデータ書き込みを行うように構成されたメモリコントローラと、
を具備し、
前記第1モードはメモリセル当たり第1ビット数でデータを書き込むための書き込みモードであり、
前記第2モードはメモリセル当たり前記第1ビット数より多い第2ビット数でデータを書き込むための書き込みモードであり、
前記メモリコントローラは、
ホストから受信したデータを前記第1領域の第1ブロックに前記第1モードにより書き込み、
前記第1ブロックに書き込まれた前記データのうち、システムデータを前記第1領域の第2ブロックに前記第1モードによりコピーし、ユーザデータを前記第2領域の第3ブロックに前記第2モードによりコピーする、コピー処理を実行する、
メモリシステム。
【請求項2】
前記メモリコントローラは、前記ホストから受信した前記データの第1論理アドレスの範囲に基づいて、前記ホストから受信した前記データがシステムデータであるかユーザデータであるかを判定して、前記コピー処理を実行する、
請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、前記ホストから受信したライトコマンドに付加された識別情報に基づいて、前記ホストから受信した前記データがシステムデータであるかユーザデータであるかを判定して、前記コピー処理を実行する、
請求項1に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、
前記ホストから受信した前記データがシステムデータであるかユーザデータであるかを示す識別情報を、前記第1ブロックの、前記ホストから受信した前記データが書き込まれるカラムアドレスに連続するカラムアドレスに書き込み、
前記識別情報を前記第1ブロックから取得し、前記取得した識別情報に基づいて、前記ホストから受信した前記データがシステムデータであるかユーザデータであるかを判定して、前記コピー処理を実行する、
請求項1に記載のメモリシステム。
【請求項5】
前記メモリコントローラは、前記ホストから受信した前記データの第1論理アドレスに対するアクセス状況を判定し、判定結果に基づいて、前記ホストから受信した前記データがシステムデータであるかユーザデータであるかを判定して、前記コピー処理を実行する、
請求項1に記載のメモリシステム。
【請求項6】
前記メモリコントローラは、前記第1論理アドレスに対するリード回数が第1閾値以上である場合、前記ホストから受信した前記データをシステムデータであると判定する、
請求項5に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、前記第1論理アドレスに対する最終リードからの経過時間が第2閾値以下である場合、前記ホストから受信した前記データをシステムデータであると判定する、
請求項5に記載のメモリシステム。
【請求項8】
前記メモリコントローラは、前記第1論理アドレスに対するリード回数が第3閾値以上であり、且つ、前記第1論理アドレスに対するライト回数が第4閾値未満である場合、前記ホストから受信した前記データをシステムデータであると判定する、
請求項5に記載のメモリシステム。
【請求項9】
前記メモリコントローラは、前記第1論理アドレスに対する最終ライトからの経過時間が第5閾値以上であり、且つ、前記第1論理アドレスに対するに対する最終リードからの経過時間が第6閾値未満である場合、前記ホストから受信した前記データをシステムデータであると判定する、
請求項5に記載のメモリシステム。
【請求項10】
前記メモリコントローラは、前記第1論理アドレスに対するリード回数と、前記不揮発性メモリに対するリードアクセスの平均と、の差が第7閾値以上である場合、前記ホストから受信した前記データをシステムデータであると判定する、
請求項5に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)やUFS(Universal Flash Storage)デバイスが知られている。このようなメモリシステムに対しては、リードレイテンシを改善するという要求がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2021/0133099号明細書
【特許文献2】米国特許第11042307号明細書
【特許文献3】米国特許第10599561号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
実施形態の一つは、リードレイテンシを改善することができるメモリシステムを提供する。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、それぞれが複数のブロックを含む第1領域と第2領域とを有する不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記第1領域のそれぞれのブロックに第1モードによるデータ書き込みを行い、前記第2領域のそれぞれのブロックに第2モードによるデータ書き込みを行うように構成されたメモリコントローラと、を具備し、前記第1モードはメモリセル当たり第1ビット数でデータを書き込むための書き込みモードであり、前記第2モードはメモリセル当たり前記第1ビット数より多い第2ビット数でデータを書き込むための書き込みモードであり、前記メモリコントローラは、ホストから受信したデータを前記第1領域の第1ブロックに前記第1モードにより書き込み、前記第1ブロックに書き込まれた前記データのうち、システムデータを前記第1領域の第2ブロックに前記第1モードによりコピーし、ユーザデータを前記第2領域の第3ブロックに前記第2モードによりコピーする、コピー処理を実行する。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態に係るメモリシステムの構成例を示すブロック図。
【
図2】第1の実施形態に係る不揮発性メモリのメモリ配置を示す図。
【
図3】第1の実施形態に係るメモリコントローラによる書き込み処理の一例を示すフローチャート。
【
図4】第1の実施形態に係るL2Pテーブルの内容を説明するための図。
【
図5】第1の実施形態に係るL2Pテーブルの内容を説明するための図。
【
図6】第1の実施形態に係るL2Pテーブルの内容を説明するための図。
【
図7】第1の実施形態に係るL2Pテーブルの内容を説明するための図。
【
図8】第1の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図9】第1の実施形態に係るガベージコレクションの動作を説明するための図。
【
図10】第2の実施形態における書き込みフォーマットを説明するための図。
【
図11】UFS規格のライトコマンドのコマンドフォーマットを示す図。
【
図12】第2の実施形態に係るメモリコントローラによる書き込み処理の一例を示すフローチャート。
【
図13】第2の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図14】第2の実施形態の変形例に係るL2Pテーブルの例を示す図。
【
図15】第2の実施形態の変形例に係るL2Pテーブルの例を示す図。
【
図16】第2の実施形態の変形例に係るL2Pテーブルの例を示す図。
【
図17】第2の実施形態の変形例に係るL2Pテーブルの例を示す図。
【
図18】第3の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図19】第3の実施形態に係るL2Pテーブルの一例を示す図。
【
図20】第4の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図21】第4の実施形態に係るL2Pテーブルの一例を示す図。
【
図22】第5の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図23】第5の実施形態に係るL2Pテーブルの一例を示す図。
【
図24】第6の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図25】第6の実施形態に係るL2Pテーブルの一例を示す図。
【
図26】第7の実施形態に係るメモリコントローラによるガベージコレクション処理の一例を示すフローチャート。
【
図27】第7の実施形態におけるデータの移動を説明するための図。
【
図28】第7の実施形態に係るメモリコントローラによるデータの移動処理の一例を示すフローチャート。
【
図29】第7の実施形態におけるデータの移動処理を説明するための図。
【発明を実施するための形態】
【0007】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【0008】
(第1の実施形態)
本実施形態は、高速読み出しの対象となるデータを判定し、高速読み出しの対象となるデータについては、ガベージコレクションが実行された場合でも、メモリセルアレイ中の高速読み出しが可能な領域に保存する。本実施形態は、これによりリードレイテンシを改善する。
【0009】
(メモリシステムの構成)
図1は第1の実施形態に係るメモリシステムの構成例を示すブロック図である。本実施形態のメモリシステム1は、メモリコントローラ3と不揮発性メモリ2とを備える。なお、不揮発性メモリ2は、複数のメモリチップを含んでもよい。メモリシステム1は、ホスト装置4と接続可能である。ホスト装置4は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。ホスト装置4は、中央処理装置(CPU)4a、ROM(図示せず)、及びDRAM4bを有する。
【0010】
メモリシステム1は、ホスト装置4が搭載されたマザーボード上に実装され得る。メモリシステム1は、複数の半導体チップで構成されてもよい。メモリシステム1の例は、メモリコントローラ3と不揮発性メモリ2とが1つのパッケージとして構成されるUFS(Universal Flash Storage)デバイス、SDカードのようなメモリカード、SSD(Solid-State-Drive)、又はeMMC(embedded-Multi-Media-Card)である。
【0011】
不揮発性メモリ2は、例えばNAND型フラッシュメモリである。不揮発性メモリ2は、複数のメモリセルトランジスタを備えたメモリセルアレイを有する。各メモリセルトランジスタは、電気的に書き換え可能なメモリセルを構成する。不揮発性メモリ2は、メモリセルトランジスタに印加する電圧を制御するために、複数のビット線BL、複数のワード線WL、およびソース線CELSRCなどを含む。不揮発性メモリ2は、複数のブロックを備える。各ブロックはデータ消去動作の最小単位として機能する。各ブロックは複数のページを含む。各ページは、データ書き込み動作及びデータ読み出し動作の単位として機能する。なお、各ワード線WLがデータ書き込み動作およびデータ読み出し動作の単位として機能してもよい。
【0012】
不揮発性メモリ2の各メモリセルにはn(nは、1以上の整数)ビットデータが書き込み可能である。メモリセルは、1ビットデータを記憶可能なSLC(Single Level Cell)であってもよい。メモリセルは、2ビットデータを記憶可能なMLC(Multi Level Cell)であってもよい。メモリセルは、3ビットデータを記憶可能なTLC(Triple Level Cell)であってもよい。メモリセルは、4ビットデータを記憶可能なQLC(Quad Level Cell)であってもよい。
【0013】
メモリコントローラ3は、システムLSI(Large-Scale Integrated Circuit)又はSoC(System-on-a-Chip)で構成され得る。メモリコントローラ3の各部の機能は、専用ハードウェア、プログラムを実行するプロセッサ、又は、これらの組み合わせにより実現され得る。
【0014】
メモリコントローラ3は、ホストインターフェース回路(以下、ホストI/Fという)10と、プロセッサ11と、RAM12と、バッファメモリ13と、メモリインターフェース回路(以下、メモリI/Fという)14と、誤り検出訂正(ECC:Error Checking and Correction)回路(以下、ECC回路という)15と、を含む。ホストI/F10と、プロセッサ11と、RAM12と、バッファメモリ13と、メモリI/F14と、ECC回路15とは、内部バス16により互いに接続されている。
【0015】
プロセッサ11は、中央処理装置(CPU)等により構成される。プロセッサ11は、図示しないROMに記憶されたプログラム(ファームウェア)を実行することよって、メモリシステム1の各部を統括的に制御する。プロセッサ11は、ホストI/F10経由でホスト装置4からの要求を受けた場合に、その要求に従った処理を実行することによって各種制御を行う。例えば、プロセッサ11は、ホスト装置4からの要求に従って、不揮発性メモリ2へのデータの書き込みをメモリI/F14へ指示する。また、プロセッサ11は、ホスト装置4からの要求に従って、不揮発性メモリ2からのデータの読み出しをメモリI/F14へ指示する。
【0016】
プロセッサ11は、ホスト装置4からデータの書き込み要求を受信した場合、ホスト装置4から受信したデータに対して、不揮発性メモリ2上の記憶領域(メモリ領域)を決定する。すなわち、プロセッサ11は、データの書き込み先を管理する。プロセッサ11は、ホストアドレスとメモリアドレスとの関係を、論理物理アドレス変換テーブル(Logical to Physicalテーブル:以下、L2Pテーブルという)12を用いて管理する。ホストアドレスは、ホスト装置4から受信したデータの論理アドレスである。論理アドレスの一例は論理ブロックアドレス(Logical Block Address)である。以下では、ホストアドレスをホストアドレスLBAと称する。メモリアドレスは、データが記憶された不揮発性メモリ2上の記憶領域を示す物理アドレスである。以下では、メモリアドレスを、メモリアドレスPBAと称する。L2Pテーブル12aは、ホスト装置4がメモリシステム1にアクセスする際に使用されるホストアドレスLBAと、不揮発性メモリ2のメモリアドレスPBAと、を対応付けるデータを格納する。L2Pテーブル12aは、例えばRAM12に格納される。
【0017】
不揮発性メモリ2の1つのページへのデータ書き込みは、1回の消去/書き込みサイクル当たり1回のみ可能である。このため、プロセッサ11は、あるホストアドレスLBAに対応する更新データを、このホストアドレスLBAに対応する以前のデータが格納されている不揮発性メモリ2上の記憶位置ではなく、別の記憶位置に書き込む。そして、プロセッサ11は、このホストアドレスLBAをこの別の記憶位置に関連付けるようにL2Pテーブル12aを更新することにより、以前のデータを無効化する。L2Pテーブル12aから参照されているデータ(すなわちホストアドレスLBAと紐付けられているデータ)は有効データと称される。また、どのホストアドレスLBAとも紐付けられていないデータは無効データと称される。有効データは、後にホスト装置4からリードされる可能性があるデータである。無効データは、もはやホスト装置4からリードされる可能性が無いデータである。無効データのみを記憶しているブロックは、フリーブロックと称される。
【0018】
プロセッサ11は、ホスト装置4からのデータの書き込み要求を受信すると、その要求に対応するメモリアドレスPBAを決定する。そして、プロセッサ11は、決定したメモリアドレスPBAの記憶領域へのデータの書き込みをメモリI/F14へ指示する。メモリコントローラ3は、L2Pテーブル12aを更新して、その要求に関わるホストアドレスLBAとメモリアドレスPBAとを関連付ける。プロセッサ11は、任意のタイミングで、L2Pテーブル12aをRAM12から不揮発性メモリ2へ不揮発化する。
【0019】
プロセッサ11は、ホスト装置4からデータの読み出し要求を受信すると、その要求により指定されたホストアドレスLBAについて、L2Pテーブル12aを参照して、メモリアドレスPBAを特定する。そして、プロセッサ11は、該メモリアドレスPBAの記憶領域からのデータの読み出しをメモリI/F14へ指示する。すなわち、プロセッサ11は、ホスト装置4からの要求を受けると、その要求に関わるホストアドレスLBAに対応するメモリアドレスPBAを特定して、データの読み出しを行う。
【0020】
RAM12は、L2Pテーブル12aだけでなく、各種データを一時的に記憶する。
【0021】
ECC回路15は、不揮発性メモリ2に書き込まれるデータを符号化する。ECC回路15は、不揮発性メモリ2から読み出されたデータを復号する。
【0022】
バッファメモリ13は、ホスト装置4から受信したデータを一時的に記憶する。また、バッファメモリ13は、不揮発性メモリ2から読み出したデータを一時的に記憶する。バッファメモリ13は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)のような汎用メモリである。
【0023】
ホストI/F10は、ホスト装置4との間のインターフェース規格に従った処理を行う。ホストI/F10は、ホスト装置4から受信した要求及びデータを内部バス16に出力する。また、ホストI/F10は、不揮発性メモリ2から読み出されたデータや、プロセッサ11からの応答などをホスト装置4へ送信する。
【0024】
メモリI/F14は、プロセッサ11の制御の下、不揮発性メモリ2へのデータの書き込み、及び不揮発性メモリ2からのデータの読み出しに関する処理を行う。
【0025】
図2は、不揮発性メモリ2のメモリ配置を示す図である。
図2の例では、不揮発性メモリ2は、SLC領域と、QLC領域とを含む。なお、
図2中の斜線部は有効データを格納している領域を示している。
【0026】
SLC領域は、各メモリセルがSLCとして用いられる記憶領域である。MLC領域は、各メモリセルがMLCとして用いられる記憶領域である。TLC領域は、各メモリセルがTLCとして用いられる記憶領域である。QLC領域は、各メモリセルがQLCとして用いられる記憶領域である。メモリシステム1は、SLC領域のメモリセル毎に1ビットデータを書き込む記録モード(SLCモード)と、MLC領域のメモリセル毎に2ビットデータを書き込む記録モード(MLCモード)と、TLC領域のメモリセル毎に3ビットデータを書き込む記録モード(TLCモード)と、QLC領域のメモリセル毎に4ビットデータを書き込む記録モード(QLCモード)と、を有する。これらのモードはメモリコントローラ3によって指定される。SLC領域へのデータの書き込み時間は、MLC領域、TLC領域又はQLC領域へのデータの書き込み時間より短い。また、SLC領域に記憶されたデータの読み出し時間は、MLC領域、TLC領域又はQLC領域に記憶されたデータの読み出し時間より短い。即ち、各メモリセルが複数ビットのデータを記憶するように構成された領域(以下では多値領域とも称する)からのデータの読み出しよりも、SLC領域からのデータの読み出しの方が高速である。なお、以下の説明では、多値領域としてQLC領域を例に説明するが、多値領域はMLC領域又はTLC領域であってもよい。
【0027】
メモリコントローラ3は、不揮発性メモリ2のある記憶領域を、SLC領域又はQLC領域の専用領域として使用してもよい、すなわち、メモリコントローラ3は、メモリシステム1のライフタイム全般にわたり、ある記憶領域をSLC領域として使用し、別なある領域をQLC領域として使用してもよい。あるいは、メモリコントローラ3は、不揮発性メモリ2のある記憶領域を、SLC領域またはQLC領域の共用領域として使用してもよい。すなわち、メモリコントローラ3は、ある記憶領域をSLC領域として使用したり、QLC領域として使用したりしてもよい。メモリコントローラ3は、ホスト装置4からの要求に関わるホストアドレスLBAに基づいて、SLC領域もしくはQLC領域へデータを書き込み、又はSLC領域もしくはQLC領域からデータを読み出す。
【0028】
上述したように、SLC領域の各メモリセルに対する書き込み速度及び読み出し速度は、それぞれQLC領域の各メモリセルに対する書き込み速度及び読み出し速度に比べて高速である。UFS 3.0規格では高速ライトコマンドが定義されている。高速ライトコマンドでの書き込みは通常ライトコマンドでの書き込みよりも高速であることが期待されている。また、高速ライトコマンドで不揮発性メモリ2に書き込まれたデータは、通常ライトコマンドで書き込まれたデータよりも、高速に読み出せることが期待されている。従って、メモリコントローラ3は、高速コマンドでの書き込みが指定されると、SLCモードにより書き込みを行い、通常コマンドでの書き込みが指定されると、QLCモードにより書き込みを行うこともある。
【0029】
例えば、スマートフォンなどの携帯端末に実装されるメモリシステム1に書き込まれるデータは、OS(オペレーティングシステム)やカーネルのようなシステムの中核をなすデータ(以下、システムデータと記載)と、写真や動画やアプリケーションのようなエンドユーザが保存するデータ(以下、ユーザデータと記載)と、に大別することができる。システムデータはスマートフォン等のシステム情報であり、書き込み後の読み出し頻度が高い傾向にある。対してユーザデータは使用する時のみ読み出されるものであるため、相対的に読み出し頻度は低い傾向にある。従って、システムデータは、SLCモードによりSLC領域に書き込まれ、SLC領域から高速に読み出されることが望ましい。
【0030】
しかしながら、メモリシステム1では、フリーブロックの個数を増やすためにガベージコレクションが実行される。ガベージコレクションは、例えば、フリーブロックの数が所定数以下になったことに応じて実行される。ガベージコレクションでは、有効データと無効データとが混在する複数のブロック(元ブロック)内の全ての有効データが消去済みのブロックに移動される。全ての有効データが移動された元ブロックは、フリーブロックとして管理される。フリーブロックは、データ消去動作後に、新たな書き込み先ブロックとして再利用可能となる。このガベージコレクションによって、高速ライトコマンドを用いてSLC領域に書き込まれたシステムデータが、QLC領域に移動されてしまう恐れがある。
【0031】
また、メモリコントローラ3は、システムデータとユーザデータとを識別することができない。従って、メモリコントローラ3がシステムデータを確実にSLCモードで不揮発性メモリ2に書き込むことができるとは限らない。すなわち、システムデータであってもQLC領域に書き込まれる恐れがある。
【0032】
ホスト装置からの書き込み要求に基づく書き込み時には常にSLCモードにより不揮発性メモリにデータの書き込みを行い、その後にSLC領域からQLC領域にデータを移動させるメモリシステムも存在する。この場合でも、SLC領域に書き込まれたシステムデータがQLC領域に移動されてしまい、システムデータを高速に読み出すことはできない。
【0033】
(対策)
そこで、本実施形態は、高速読み出しの対象となるデータ、即ち、システムデータを判定し、システムデータと判定されたデータについては、常にSLC領域に保存する。PCやスマートフォン等においては、データ管理のためにファイルシステムが採用されている。ファイルシステムにおいては、OSやカーネルに割り当てられているホストアドレスLBAが既知である場合が多い。例えば、OSやカーネルのようなシステムデータには、小さいホストアドレスLBAが割り当てられることが多い。本実施形態は、システムデータのホストアドレスLBAが既知である場合があることを利用し、ホストアドレスLBAに基づいて、書き込み対象のデータがシステムデータであるか否かを判定する。例えば論理アドレス空間の0~10GBまでにシステムデータが書き込まれると判明している場合、本実施形態は、そのホストアドレスLBA内のデータをシステムデータとして扱う。本実施形態は、システムデータについては、SLC領域に書き込みを行うと共に、ガベージコレクション時においても、SLC領域への移動を行うよう制御する。この制御を可能にするために、本実施形態のメモリコントローラ3は、L2Pテーブル12aの更新を制御する。
【0034】
(書き込み及びガベージコレクション)
図3はメモリコントローラ3のプロセッサ11による書き込み処理の一例を示すフローチャートである。
【0035】
メモリコントローラ3は、ホスト装置4から書き込み要求を受信すると、
図3に示す書き込み処理を実行する。即ち、プロセッサ11は、ステップS1においてホスト装置4から書き込み要求(ライトコマンド)の待機状態である(S1)。
【0036】
プロセッサ11は、書き込み要求を受信すると(S1でYES)、書き込みデータのホストアドレスLBAが、システムデータの論理アドレスとして規定されているアドレス、あるいは、システムデータの論理アドレスとして一般的に使用されているアドレス(以下、システムデータ用アドレスという)であるか否かを判定する(S2)。プロセッサ11は、ホスト装置4から指定されたホストアドレスLBAがシステムデータ用アドレスである場合には(S2でYES)、当該データはシステムデータであると判定して、当該データをSLC領域に書き込む(S4)。
【0037】
プロセッサ11は、ホスト装置4から指定されたホストアドレスLBAがシステムデータ用アドレスでないと判定した場合には(S2でNO)、当該データはユーザデータであると判定して、当該データをホスト装置4からのコマンドに対応した領域に書き込む。即ち、プロセッサ11は、当該データが高速ライトコマンドで書き込み要求された場合には当該データをSLC領域に書き込み、当該データが通常ライトコマンドで書き込み要求された場合には当該データをQLC領域に書き込む(S3)。
【0038】
プロセッサ11は、L2Pテーブル12aを更新して、書き込み要求に関わるホストアドレスLBAと、ステップS3またはステップS4でデータが書き込まれたメモリアドレスPBAとを関連付ける。
【0039】
図4から
図7はL2Pテーブルの内容を説明するための図である。
【0040】
図4はデータ書き込みが行われる前の状態を示している。L2Pテーブル12aは、ホストアドレス(LBA)、メモリアドレス(PBA)、有効無効フラグの情報を含む。ホストアドレスLBAは、ホスト装置4から指定される論理アドレスを示す。メモリアドレスPBAは不揮発性メモリ2の記憶領域の物理アドレスを示す。有効無効フラグは、当該アドレスに保持されているデータが有効データであるか無効データであるかを示す。ガベージコレクションに際して、メモリコントローラ3のプロセッサ11は、有効データを示す有効無効フラグが設定されたデータをガベージコレクションによる移動の対象とする。
【0041】
図5はホストアドレスLBA0~3(システムデータ用アドレス)が指定されたデータが不揮発性メモリ2に書き込まれた場合のL2Pテーブル12aの状態を示している。プロセッサ11は、ホストアドレスLBAがシステムデータ用アドレスであるデータを、高速ライトコマンド及び通常ライトコマンドのいずれのライトコマンドでの書き込み要求であるかに拘わらず、SLC領域に書き込む。以下ではホストアドレスLBAがxである論理アドレスをLBAxと表記する。また、ブロックBlkYのページPageWに対応するメモリアドレスPBAを、BlkY,PageWと表記する。
図5の例は、LBA0のデータがBlk0,Page0に書き込まれ、LBA1のデータがBlk0,Page1に書き込まれ、LBA2のデータがBlk0,Page2に書き込まれ、LBA3のデータがBlk0,Page3に書き込まれることを示している。また、これらのメモリアドレスPBAの有効無効フラグは、有効を示す“1”となっている。
【0042】
ここで、例えば、LBA3のデータがホスト装置4により上書きされるものとする。
図6はこの場合のL2Pテーブル12aの例を示す図である。この場合には、ホスト装置4から書き込みが指示されたLBA3のデータは、空き領域であるBlk0,Page4に書き込まれる。なお、Blk0,Page4は、SLC領域のメモリアドレスPBAである。この場合には、Blk0,Page3の有効無効フラグは、無効を示す“0”となり、Blk0,Page4の有効無効フラグは、有効を示す“1”となる。
【0043】
次に、SLC領域の例えばBlk0がガベージコレクションの対象となるものとする。この場合においても、ホストアドレスLBAが小さいデータ、すなわち、システムデータ用アドレスのデータは、システムデータである。従って、プロセッサ11は、このデータについてはガベージコレクションに際してSLC領域に移動させる。
【0044】
図8はプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。プロセッサ11は、ガベージコレクション(GC)が必要と判定すると(S6でYES)、L2Pテーブル12aを参照して(S7)、ガベージコレクションの対象となるデータがシステムデータ用アドレスのデータであるか否かを判定する(S8)。
【0045】
プロセッサ11は、ガベージコレクションの対象となるデータがシステムデータ用アドレスのデータであると判定した場合には(S8でYES)、当該データをシステムデータであると判定して、当該データをSLC領域に移動させる(S9)。また、プロセッサ11は、ガベージコレクションの対象となるデータがシステムデータ用アドレスのデータではないと判定した場合には(S8でNO)、当該データをユーザデータであると判定して、当該データをQLC領域に移動させる(S10)。
【0046】
プロセッサ11は、L2Pテーブル12aを更新して、ガベージコレクションの対象となったデータのホストアドレスLBAと、ステップS9またはステップS10で当該データが書き込まれたメモリアドレスPBAとを関連付ける(S30)。
【0047】
図7は、
図6に示した状態からBlk0を対象とするガベージコレクションが終了した場合のL2Pテーブル12aの例を示している。プロセッサ11は、ガベージコレクションによって、Blk0,Page0,1,2,4のデータを、SLC領域中の他のメモリアドレスPBA(
図7ではBlk1,Page0~3)の記憶領域に書き込む。なお、Blk1,Page0~3は、SLC領域のメモリアドレスPBAである。この場合には、Blk0の有効無効フラグは、無効を示す“0”となり、Blk1,Page0~3の有効無効フラグは、有効を示す“1”となる。なお、
図7には省略してあるが、ブロックBlk1には、ガベージコレクションにより、ブロックBlk0以外の他のブロックからも有効データが移動される。
【0048】
このようにシステムデータは、常に、SLC領域に保存されるので、高速読み出しが可能となる。
【0049】
図9はガベージコレクションの動作を説明するための図である。システムデータは高速ライトコマンド及び通常ライトコマンドのいずれのライトコマンドでの書き込み要求であるかに拘わらず、SLC領域に書き込まれる。ガベージコレクションに際して、プロセッサ11は、システムデータをSLC領域に移動させる。一方で、ユーザデータが高速ライトコマンドに応じてSLC領域に書き込まれることもある。この場合、ユーザデータのホストアドレスLBAは、システムデータ用アドレスではないので、ガベージコレクションに際して、プロセッサ11は、ユーザデータをQLC領域に移動させる。システムデータ以外のユーザデータについては、ガベージコレクションによってQLC領域に移動されるので、メモリ領域を有効活用することが可能である。
【0050】
このように本実施形態は、ホストアドレスLBAによって、書き込みデータがシステムデータであるかユーザデータであるかを判定する。本実施形態は、システムデータをSLC領域に書き込むと共に、ガベージコレクションに際しても、SLC領域に移動させる。これにより、システムデータをSLC領域に保存することができ、高速読み出しを可能にして、低リードレイテンシを実現できる。
【0051】
(第2の実施形態)
図10は第2の実施形態における書き込みフォーマットを説明するための図である。本実施形態のハードウェア構成は第1の実施形態と同様である。第1の実施形態は、ホストアドレスLBAのアドレス範囲によって、書き込みデータがシステムデータであるか否かを判定した。これに対し、本実施形態においては、ホスト装置4はシステムデータとユーザデータとを判定するための情報をライトコマンドに付加する。例えば、UFS規格では、ライトコマンド中にリザーブ領域が確保されている。ホスト装置4は、このリザーブ領域にシステムデータであることを示す情報を含めたライトコマンドを送信する。
【0052】
図11はUFS規格のライトコマンドのコマンドフォーマットの例を示す図である。
図11はライトコマンドのByte0~9それぞれのBit7~0に割り当てられるデータを示している。Byte0にはOPERATION CODEが割り当てられる。Byte1には、WRPROTECT、DPO、FUA、Reserved、FUA_NV及びObsoleteが割り当てられる。Byte2~5には、ホストアドレスLBA(LOGICAL BLOCK ADDRESS)が割り当てられる。Byte7~8には、データ長(TRANSFER LENGTH)が割り当てられる。Byte9には、制御コード(CONTROL)が割り当てられる。
【0053】
Byte6は、予備領域(Reserved)とGROUP NUMBERが割り当てられる。例えば、ホスト装置4は、予備領域(Reserved)に、システムデータであるかユーザデータであるかを示すデータ識別情報を付加する。なお、ホスト装置4は、例えば、GROUP NUMBERにデータ識別情報を付加してもよい。
【0054】
プロセッサ11は、ライトコマンドを受信すると、例えば、予備領域(Reserved)に配置されたデータ識別情報を読み出して、ライトコマンドにより書き込みを指示されたデータがシステムデータであるかユーザデータであるかを判定する。プロセッサ11は、ライトコマンドにより書き込みを指示されたデータがシステムデータであると判定した場合には、当該システムデータをSLC領域に書き込む。さらにプロセッサ11は、書き込んだデータがシステムデータであることを示す識別フラグを、書き込みデータ(データ本体)に付加して不揮発性メモリ2へ書き込む。例えば、プロセッサ11は、データ本体に連続するカラムアドレスに識別フラグを書き込む。
【0055】
図10はこの場合の書き込みフォーマットを示している。
図10に示すように、プロセッサ11は、データ本体に識別フラグを付加して書き込む。例えば、プロセッサ11は、システムデータについては識別フラグとして“1”を設定し、ユーザデータについては識別フラグとして“0”を設定してもよい。
【0056】
次に、このように構成された実施形態の動作について
図12及び
図13を参照して説明する。
図12は書き込み時の動作を説明するためのフローチャートであり、
図13はガベージコレクション時の動作を説明するためのフローチャートである。
【0057】
メモリコントローラ3は、ホスト装置4から書き込み要求(ライトコマンド)を受信すると、
図12に示すデータの書き込み処理を実行する。即ち、プロセッサ11は、ホスト装置4から書き込み要求を受信すると(S1でYES)、ライトコマンドに含まれるデータ識別情報を読み出し(S11)、当該ライトコマンドによって書き込まれるデータがシステムデータであるか否かを判定する(S12)。
【0058】
プロセッサ11は、ホスト装置4からの書き込みデータがシステムデータであると判定した場合には(S12でYES)、当該データをSLC領域に書き込む(S13)。また、プロセッサ11は、ホスト装置4からのデータがシステムデータでないと判定した場合(S12でNO)、当該データをホスト装置4からのコマンドに対応した領域に書き込む。即ち、プロセッサ11は、当該データが高速ライトコマンドで書き込み要求された場合には当該データをSLC領域に書き込み、当該データが通常ライトコマンドで書き込み要求された場合には当該データをQLC領域に書き込む(S14)。
【0059】
本実施形態においては、ステップS13,S14の書き込み時に、プロセッサ11は、データ本体にシステムデータであるか否かを示す識別フラグを付加する。
【0060】
次に、SLC領域がガベージコレクションの対象となるものとする。
図13に示すように、プロセッサ11は、ガベージコレクション(GC)が必要と判定すると(S15でYES)、ガベージコレクションの対象となるデータを読み出して(S16)、付加された識別フラグにより、当該データがシステムデータであるか否かを判定する(S17)。
【0061】
プロセッサ11は、ガベージコレクションの対象となるデータがシステムデータである場合には(S18でYES)、当該データをSLC領域に移動させる(S19)。また、プロセッサ11は、ガベージコレクションの対象となるデータがシステムデータではないと判定した場合には(S18でNO)、当該データをQLC領域に移動させる(S20)。
【0062】
このように本実施形態においても、システムデータを常に、SLC領域に保存することができ、高速読み出しを可能にして低リードレイテンシを実現できる。
【0063】
(変形例)
図14から
図17は変形例におけるL2Pテーブルの内容の一例を示している。
図10ではホスト装置4からのライトコマンドに含まれるデータ識別情報に基づく識別フラグをデータ本体に付加して不揮発性メモリ2に書き込む例を説明した。これに対し、
図14から
図17はデータ識別情報をL2Pテーブル12aに記録する例である。
【0064】
メモリコントローラ3のプロセッサ11は、ホスト装置4からのライトコマンドに含まれるデータ識別情報を、L2Pテーブル12aに書き込む。
図14はデータ書き込みが行われる前の状態を示している。L2Pテーブル12aは、ホストアドレス(LBA)、メモリアドレス(PBA)、有効無効フラグの情報の他に、データ識別情報を含む。
【0065】
図15はホストアドレスLBA0~3が指定されたデータが不揮発性メモリ2に書き込まれた場合のL2Pテーブル12aの状態を示している。L2Pテーブル12a中の「システム」はシステムデータを示し、「ユーザ」はユーザデータを示している。L2Pテーブル12aのデータ識別情報は、プロセッサ11がホスト装置4からのライトコマンドに含まれるデータ識別情報を抽出して得たものである。LBA0~2が指定されたデータは、システムデータであり、LBA3が指定されたデータは、ユーザデータである。プロセッサ11は、データ識別情報によりシステムデータであることが示されたデータを、高速ライトコマンド及び通常ライトコマンドのいずれのライトコマンドでの書き込み要求であるかに拘わらず、SLC領域に書き込む。
図15の例では、LBA0のデータはBlk0,Page0に書き込まれ、LBA1のデータはBlk0,Page1に書き込まれ、LBA2のデータはBlk0,Page2に書き込まれる。Blk0はSLC領域に含まれる。また、LBA3のユーザデータについては、高速ライトコマンドでの書き込み要求に応じてSLC領域中のBlk0,Page3に書き込まれることを示している。また、これらのメモリアドレスPBAの有効無効フラグは、有効を示す“1”となっている。
【0066】
ここで、例えば、LBA2のシステムデータがホスト装置4により上書きされるものとする。
図16はこの場合のL2Pテーブル12aの例を示している。この場合には、ホスト装置4から書き込みが指示されたLBA2のデータは、空き領域であるBlk0,Page4に書き込まれる。なお、Blk0,Page4は、SLC領域のメモリアドレスPBAである。この場合には、Blk0,Page2の有効無効フラグは、無効を示す“0”となり、Blk0,Page4の有効無効フラグは、有効を示す“1”となる。
【0067】
次に、SLC領域の例えばBlk0がガベージコレクションの対象となるものとする。SLC領域に書き込まれたシステムデータは、ガベージコレクションに際してSLC領域に移動される。プロセッサ11は、ガベージコレクションの対象となるブロックにシステムデータが記憶されている場合には、当該データをSLC領域に移動させる。また、プロセッサ11は、ガベージコレクションの対象となるブロックにユーザデータ記憶されている場合には、当該データをQLC領域に移動させる。
【0068】
図17はこの場合のL2Pテーブル12aの例を示している。プロセッサ11は、ガベージコレクションによって、Blk0,Page0,1,4のデータを、SLC領域中の他のメモリアドレスPBA(
図17ではBlk1,Page0~2)の記憶領域に書き込む。なお、Blk1,Page0~2は、SLC領域のメモリアドレスPBAである。この場合には、Blk0の有効無効フラグは、無効を示す“0”となり、Blk1,Page0~2の有効無効フラグは、有効を示す“1”となる。また、プロセッサ11は、Blk0,Page3に書き込まれていたユーザデータを、QLC領域中のBlk11,Page0に移動させる。
【0069】
こうして、本変形例においても、システムデータをSLC領域に保存することができ、高速読出しが可能となる。また、ユーザデータは、ガベージコレクションによってQLC領域に移動されるので、メモリ領域を有効活用することが可能である。
【0070】
(第3の実施形態)
図18は第3の実施形態に係るプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。本実施形態のハードウェア構成は第1の実施形態と同様である。第1及び第2の実施形態は、システムデータのホストアドレスLBAについての事前情報が利用可能であるか又はシステムデータを示すデータ識別情報が入力される場合の例であった。本実施形態は、これらの事前情報やデータ識別情報無しに、メモリコントローラ3において、書き込みデータがシステムデータであるかユーザデータであるかを判定する。
【0071】
一般的に、システムデータはライトアクセスが少なくリードアクセスが多いという特徴を有する。そこで、メモリコントローラ3のプロセッサ11は、データのリード回数をホストアドレスLBA毎にカウントし、カウント結果の情報を管理テーブルに保存する。そして、プロセッサ11は、ガベージコレクションが必要となると、当該管理テーブルを参照し、リード回数が所定の閾値以上のデータについてはシステムデータであると判定してSLC領域に移動させ、リード回数が所定の閾値未満のデータについてはユーザデータであると判定してQLC領域に移動させる制御を行う。
【0072】
なお、リード回数のカウント結果の情報を登録する管理テーブルとして、例えば、L2Pテーブル12aを採用してもよい。ガベージコレクションによって、L2Pテーブル12a中のメモリアドレスPBAは更新されるが、リード回数を含むその他の情報は保持される。
【0073】
次に、
図18及び
図19を参照して実施形態の動作について説明する。
図19はリード回数の情報を含むL2Pテーブル12aの一例を示す図である。
図19は、LBA0が指定されて書き込まれたデータはリード回数が100回であり、LBA1が指定されて書き込まれたデータはリード回数が1回であり、LBA2が指定されて書き込まれたデータはリード回数が10回であり、LBA3が指定されて書き込まれたデータはリード回数が100回である例を示している。なお、
図19の判定結果は、閾値が100の場合のシステムデータとユーザデータとの判定結果を示したものであるが、L2Pテーブル12aは判定結果を含んでいなくてもよい。
【0074】
本実施形態においては、プロセッサ11は、各データの読み出し回数をホストアドレスLBA毎にカウントする。即ち、プロセッサ11は、ホスト装置4からの読み出し要求を受信すると、読み出し要求により指定されたホストアドレスLBAについて、L2Pテーブル12aのリード回数をインクリメントする。読み出しが行われたデータのリード回数は増加する。この結果、
図19に示すように、LBA0,3のデータのリード回数が閾値である100以上になったものとする。
【0075】
この状態で、Blk0がガベージコレクションの対象となるものとする。
図18に示すように、プロセッサ11は、ガベージコレクションが必要であるか否かを判定する(S21)。プロセッサ11は、ガベージコレクションが必要であると判定すると(S21でYES)、ガベージコレクションの対象となるホストアドレスLBAについて記録されているリード回数を取得する(S22)。プロセッサ11は、取得したリード回数が閾値以上であるか否かを判定する(S23)。プロセッサ11は、リード回数が閾値以上のデータをシステムデータであると判定して(S23でYES)、当該データをSLC領域に移動させる(S24)。また、プロセッサ11は、取得したリード回数が閾値未満のデータをユーザデータであると判定して(S23でNO)、当該データをQLC領域に移動させる(S25)。
【0076】
これにより、
図19の例では、LBA0,3のデータはシステムデータとしてSLC領域に移動され、LBA1,2のデータはユーザデータとしてQLC領域に移動される。こうして、システムデータについては、SLC領域から高速に読み出しが可能となる。
【0077】
このように本実施形態においても、上記の各実施形態と同様の効果を得ることができる。なお、本実施形態においては、システムデータであってもQLC領域に書き込まれる可能性がある反面、頻繁に読み出しが行われるデータについては、確実にSLC領域に移動されて、高速リードされるようになる。
【0078】
(第4の実施形態)
図20は第4の実施形態に係るプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。
図20において
図18と同一の手順には同一符号を付して説明を省略する。本実施形態のハードウェア構成は第1の実施形態と同様である。第3の実施形態は、リード回数を管理することによりリードアクセスが多いシステムデータを判定した。本実施形態は、システムデータを、最終リード時間から現在までの経過時間によって判定する。
【0079】
メモリコントローラ3のプロセッサ11は、データに対するリードアクセス毎に、アクセス時間を管理し、現在の時刻との差、即ち、現在の時刻と最終リードアクセス時刻との差(最終リードからの経過時間)をホストアドレスLBA毎に求めて管理テーブルに保存する。そして、プロセッサ11は、ガベージコレクションが必要であると判定されると、当該管理テーブルを参照し、最終リードからの経過時間が所定の閾値以内のデータをシステムデータであると判定する。プロセッサ11は、システムデータであると判定したデータをSLC領域に移動させる制御を行う。プロセッサ11は、最終リードからの経過時間が所定の閾値を超えるデータをユーザデータであると判定する。プロセッサ11は、ユーザデータであると判定したデータをQLC領域に移動させる制御を行う。
【0080】
なお、最終リードからの経過時間の情報を登録する管理テーブルとして、例えば、L2Pテーブル12aを採用してもよい。ガベージコレクションによって、L2Pテーブル12a中のメモリアドレスPBAは更新されるが、最終リードからの経過時間を含むその他の情報は保持される。
【0081】
次に、
図20及び
図21を参照して実施形態の動作について説明する。
図21は最終リードからの経過時間の情報を含むL2Pテーブル12aの一例を示す図である。
図21は、LBA0が指定されて書き込まれたデータは最終リードからの経過時間が1時間であり、LBA1が指定されて書き込まれたデータは最終リードからの経過時間が10分であり、LBA2が指定されて書き込まれたデータは最終リードからの経過時間が2日であり、LBA3が指定されて書き込まれたデータは最終リードからの経過時間が1ヶ月である例を示している。なお、
図21の判定結果は、閾値が1時間の場合のシステムデータとユーザデータとの判定結果を示したものであるが、L2Pテーブル12aは判定結果を含んでいなくてもよい。
【0082】
本実施形態においては、プロセッサ11は、各データの最終リードアクセス時刻をホストアドレスLBA毎に管理する。即ち、プロセッサ11は、ホスト装置4からの読み出し要求を受信すると、読み出し要求により指定されたL2Pテーブル12aのホストアドレスLBAについて、最終リードアクセス時刻を管理する。読み出し要求が比較的頻繁に発生するシステムデータの最終リードからの経過時間は比較的短い。
図21の例では、LBA0,1のデータの最終リードからの経過時間が閾値以下であり、LBA2,3のデータの最終リードからの経過時間は閾値を超える。
【0083】
この状態で、Blk0がガベージコレクションの対象となるものとする。
図20に示すように、プロセッサ11は、ガベージコレクションが必要であると判定すると(S21でYES)、ガベージコレクションの対象となるホストアドレスLBAについて記録されている最終リードからの経過時間を取得する(S31)。プロセッサ11は、取得した最終リードからの経過時間が閾値以下であるか否かを判定する(S32)。プロセッサ11は、最終リードからの経過時間が閾値以下のデータをシステムデータであると判定して(S32でYES)、当該データをSLC領域に移動させる(S24)。また、プロセッサ11は、取得した最終リードからの経過時間が閾値を超えるデータをユーザデータであると判定して(S32でNO)、当該データをQLC領域に移動させる(S25)。
【0084】
これにより、
図21の例では、LBA0,1のデータはシステムデータとしてSLC領域に移動され、LBA2,3のデータはユーザデータとしてQLC領域に移動される。こうして、システムデータについては、SLC領域から高速に読み出しが可能となる。
【0085】
このように本実施形態においても、第3の実施形態と同様の効果を得ることができる。
【0086】
(第5の実施形態)
図22は第5の実施形態に係るプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。
図22において
図18と同一の手順には同一符号を付して説明を省略する。本実施形態のハードウェア構成は第1の実施形態と同様である。第3の実施形態は、リード回数を管理することによりリードアクセスが多いシステムデータを判定した。本実施形態は、リードアクセスだけでなくライトアクセスを判定することで、より正確にシステムデータであるか否かの判定を行う。
【0087】
例えば、ゲームのセーブデータ等のように、高頻度で書き込み、かつ読み出されるユーザデータの場合には、リード回数による判定ではシステムデータと誤判定してしまうことも考えられる。そこで、本実施形態は、リード回数及びライト回数の情報を用いてシステムデータかユーザデータかの判定を行う。
【0088】
メモリコントローラ3のプロセッサ11は、データのリード回数をホストアドレスLBA毎にカウントし、カウント結果の情報を管理テーブルに保存する。プロセッサ11は、さらに、データのライト回数をホストアドレスLBA毎にカウントし、カウント結果の情報を管理テーブルに保存する。なお、ライト回数は、同一のホストアドレスLBAが指定されて書き込みが行われるデータの書き込み毎、即ち、データが上書きされる毎にインクリメントされる。
【0089】
プロセッサ11は、ガベージコレクションが必要であると判定されると、当該管理テーブルを参照し、リード回数が所定の第1閾値以上のデータであって、且つライト回数が所定の第2閾値未満のデータについてはシステムデータであると判定してSLC領域に移動させる制御を行う。プロセッサ11は、リード回数が所定の第1閾値未満又はライト回数が所定の第2閾値以上のデータについてはユーザデータであると判定してQLC領域に移動させる制御を行う。
【0090】
なお、ライト回数及びリード回数のカウント結果の情報を登録する管理テーブルとして、例えば、L2Pテーブル12aを採用してもよい。ガベージコレクションによって、L2Pテーブル12a中のメモリアドレスPBAが更新されるが、ライト回数及びリード回数のカウント結果を含むその他の情報は保持される。
【0091】
次に、
図22及び
図23を参照して実施形態の動作について説明する。
図23はリード回数及びライト回数の情報を含むL2Pテーブル12aの一例を示す図である。
図23は、LBA0が指定されて書き込まれたデータはライト回数が1回でリード回数が100回であり、LBA1が指定されて書き込まれたデータはライト回数が1回でリード回数が1回であり、LBA2が指定されて書き込まれたデータはライト回数が100回でリード回数が10回であり、LBA3が指定されて書き込まれたデータはライト回数が100回でリード回数が100回である例を示している。なお、
図23の判定結果は、ライト回数の第2閾値が10、リード回数の第1閾値が100の場合のシステムデータとユーザデータとの判定結果を示したものであるが、L2Pテーブル12aは判定結果を含んでいなくてもよい。
【0092】
本実施形態においては、プロセッサ11は、各データの書き込み回数及び読み出し回数をホストアドレスLBA毎にカウントする。即ち、プロセッサ11は、ホスト装置4からの書き込み要求を受信すると、書き込み要求により指定されたホストアドレスLBAについて、L2Pテーブル12aのライト回数をインクリメントする。また、プロセッサ11は、ホスト装置4からの読み出し要求を受信すると、読み出し要求により指定されたホストアドレスLBAについて、L2Pテーブル12aのリード回数をインクリメントする。上書きされたデータのライト回数及び読み出しが行われたデータのリード回数は増加する。この結果、
図23に示すように、LBA0のデータのライト回数(1)が第2閾値(10)未満でリード回数(100)が第1閾値(100)以上であり、LBA1のデータのライト回数(1)が第2閾値(10)未満でリード回数(1)が第1閾値(100)以下であり、LBA2のデータのライト回数(100)が第2閾値(10)以上でリード回数(10)が第1閾値(10)以上であり、LBA3のデータのライト回数(100)が第2閾値(10)以上でリード回数(100)が第1閾値(100)以上であるものとする。
【0093】
この状態で、Blk0がガベージコレクションの対象となるものとする。
図22に示すように、プロセッサ11は、ガベージコレクションが必要であると判定すると(S21でYES)、ガベージコレクションの対象となるホストアドレスLBAについて記録されているライト回数及びリード回数を取得する(S33)。プロセッサ11は、取得したライト回数が第2閾値未満で且つリード回数が第1閾値以上であるか否か、即ち、当該データがシステムデータであるか否かを判定する(S34)。プロセッサ11は、ライト回数が第2閾値未満で且つリード回数が第1閾値以上のデータをシステムデータであると判定して(S34でYES)、当該データをSLC領域に移動させる(S24)。また、プロセッサ11は、ライト回数が第2閾値以上であるか又はリード回数が第1閾値未満のデータをユーザデータであると判定して(S34でNO)、当該データをQLC領域に移動させる(S25)。
【0094】
これにより、
図23の例では、LBA0のデータはシステムデータとしてSLC領域に移動され、LBA1~3のデータはユーザデータとしてQLC領域に移動される。こうして、システムデータについては、SLC領域から高速に読み出しが可能となる。
【0095】
このように本実施形態においても、上記の各実施形態と同様の効果を得ることができる。なお、本実施形態においては、第3の実施形態よりも多くの情報を用いてシステムデータの判定を行っており、高精度の判定が可能であるものと考えられる。
【0096】
(第6の実施形態)
図24は第6の実施形態に係るプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。
図24において
図18と同一の手順には同一符号を付して説明を省略する。本実施形態のハードウェア構成は第1の実施形態と同様である。第4の実施形態は、最終リードからの経過時間によりリードアクセスが頻繁に発生するシステムデータを判定した。本実施形態は、最終リードからの経過時間と、最終ライト時間から現在までの経過時間とによってシステムデータであるかユーザデータであるかを判定する。
【0097】
メモリコントローラ3のプロセッサ11は、データに対するリードアクセス時間をホストアドレスLBA毎に管理して、最終リードからの経過時間を求めて管理テーブルに保存する。プロセッサ11は、さらに、データに対するライトアクセス時間をホストアドレスLBA毎に管理し、現在の時刻との差、即ち、現在の時刻と最終ライトアクセス時刻との差(最終ライトからの経過時間)を求めて管理テーブルに保存する。
【0098】
プロセッサ11は、ガベージコレクションが必要であると判定されると、当該管理テーブルを参照し、最終リードからの経過時間が所定の第3閾値以内のデータであって、且つ最終ライトからの経過時間が所定の第4閾値以上のデータをシステムデータであると判定する。プロセッサ11は、システムデータであると判定したデータをSLC領域に移動させる制御を行う。またプロセッサ11は、最終リードからの経過時間が所定の第3閾値を超えるか又は最終ライトからの経過時間が所定の第4閾値未満のデータについてはユーザデータであると判定する。プロセッサ11は、ユーザデータであると判定したデータをQLC領域に移動させる制御を行う。
【0099】
なお、最終ライトからの経過時間及び最終リードからの経過時間の情報を登録する管理テーブルとして、例えば、L2Pテーブル12aを採用してもよい。ガベージコレクションによって、L2Pテーブル12a中のメモリアドレスPBAが書き換えられるが、最終ライトからの経過時間及び最終リードからの経過時間を含むその他の情報は保持される。
【0100】
次に、
図24及び
図25を参照して実施形態の動作について説明する。
図25は最終リードからの経過時間及び最終ライトからの経過時間の情報を含むL2Pテーブル12aの一例を示す図である。
図25は、LBA0が指定されて書き込まれたデータは最終ライトからの経過時間が1ヶ月で最終リードからの経過時間が1時間であり、LBA1が指定されて書き込まれたデータは最終ライトからの経過時間が1時間で最終リードからの経過時間が10分であり、LBA2が指定されて書き込まれたデータは最終ライトからの経過時間が1ヶ月で最終リードからの経過時間が2日であり、LBA3が指定されて書き込まれたデータは最終ライトからの経過時間が1ヶ月で最終リードからの経過時間が1ヶ月である例を示している。なお、
図25の判定結果は、最終ライトからの経過時間についての第4閾値が1ヶ月であり、最終リードからの経過時間についての第3閾値が1時間の場合のシステムデータとユーザデータとの判定結果を示したものであるが、L2Pテーブル12aは判定結果を含んでいなくてもよい。
【0101】
本実施形態においては、プロセッサ11は、各データの最終ライトアクセス時刻及び最終リードアクセス時刻をホストアドレスLBA毎に管理する。即ち、プロセッサ11は、ホスト装置4からの書き込み要求を受信すると、書き込み要求により指定されたホストアドレスLBAについて、最終ライトアクセス時刻を管理する。また、プロセッサ11は、ホスト装置4からの読み出し要求を受信すると、読み出し要求により指定されたホストアドレスLBAについて、最終リードアクセス時刻を管理する。読み出しが比較的頻繁なシステムデータの最終リードからの経過時間は比較的短い。また、書き込み(上書き)されることが少ないシステムデータの最終ライトからの経過時間は比較的長い。
図25の例では、LBA0が指定されたデータは、最終ライトからの経過時間(1ヶ月)が第4閾値(1ヶ月)以上で且つ最終リードからの経過時間(1時間)が第3閾値(1時間)以下であり、LBA1~3が指定されたデータは、最終ライトからの経過時間が第4閾値(1ヶ月)未満又は最終リードからの経過時間が第3閾値(1時間)を超える。
【0102】
この状態で、Blk0がガベージコレクションの対象となるものとする。
図24に示すように、プロセッサ11は、ガベージコレクションが必要であると判定すると(S21でYES)、ガベージコレクションの対象となるホストアドレスLBAについて記録されている最終ライトからの経過時間及び最終リードからの経過時間を取得する(S35)。プロセッサ11は、取得した最終ライトからの経過時間が第4閾値以上で且つ最終リードからの経過時間が第3閾値以下であるか否か、即ち、システムデータであるか否かを判定する(S36)。プロセッサ11は、最終ライトからの経過時間が第4閾値以上で且つ最終リードからの経過時間が第3閾値以下のデータをシステムデータであると判定して(S36でYES)、当該データをSLC領域に移動させる(S24)。また、プロセッサ11は、取得した最終ライトからの経過時間が第4閾値未満又は最終リードからの経過時間が第3閾値を超えるデータをユーザデータであると判定して(S36でNO)、当該データをQLC領域に移動させる(S25)。
【0103】
これにより、
図25の例では、LBA0のデータはシステムデータとしてSLC領域に移動され、LBA1~3のデータはユーザデータとしてQLC領域に移動される。こうして、システムデータについては、SLC領域から高速に読み出しが可能となる。
【0104】
このように本実施形態においても、上記の各実施形態と同様の効果を得ることができる。なお、本実施形態においては、第4の実施形態よりも多くの情報を用いてシステムデータの判定を行っており、高精度の判定が可能であるものと考えられる。
【0105】
なお、上記の第3から第6の実施形態においては、メモリコントローラ3においてシステムデータであるかユーザデータであるかの判定を行っており、ガベージコレクションのタイミングでは実際のデータ種別と異なる判定をしてしまうことがある。しかし、この場合でも、メモリアドレスPBA以外の情報をガベージコレクション前後において保持・更新することで、最終的には、実際のデータ種別に即した判定結果が得られるものと考えられる。
【0106】
(第7の実施形態)
本実施形態はリードディスターブ耐性を向上させるものである。本実施形態のハードウェア構成は第1の実施形態と同様である。
【0107】
メモリシステムにおいてデータ読み出し動作が実行された場合、データ読み出し動作が実行されたワード線WLを含むブロックでのエラービット数が増加する傾向にある。一般的には、メモリシステム内にエラービットの閾値が保持され、データ読み出し動作の実行時にエラービット数と閾値が比較され、エラービット数が閾値を超えている場合には当該データ読み出し動作の対象のデータが別のブロックにコピーされるリフレッシュ処理が行われる。NAND型フラッシュメモリの特性として、エラービットの増加しやすさは、データの記憶方式に大きく依存する。例えば、1個のメモリセルが記憶するビット数が増えるほど、エラービットは増加しやすくなる。すなわち、1個のメモリセルが記憶するビット数が増えるほど、リードディスターブ耐性は弱くなる傾向にある。一方で、上述したように、1個のメモリセルが記憶するビット数が増えるほどNAND型フラッシュメモリへの書き込み速度は遅くなる傾向にある。
【0108】
一般的なメモリシステムでは、システム内で記憶方式が用途に合わせて使い分けられる。書き込み(更新)頻度の高いデータや重要度の高いデータは、SLCモードでSLC領域に書き込まれ、書き込み(更新)頻度が低いデータや重要度が低いデータはQLCモードでQLC領域に書き込まれる場合が多い。
【0109】
しかし、QLC領域等の多値領域にリードアクセスが頻発した場合には、多値領域はリードディスターブ耐性が低いことから、場合によってはリフレッシュ処理の回数が増加する。リフレッシュ処理回数の増加により、結果的にメモリシステムのアクセス性能が劣化する可能性がある。
【0110】
そこで、本実施形態は、ホストアドレスLBA毎にリード回数を記録し、リード回数と平均リード回数との差を閾値と比較し、比較結果に基づいてデータをSLCモード領域に保存するように制御する。本実施形態は、これにより、リードディスターブ耐性を向上させる。
【0111】
メモリコントローラ3のプロセッサ11は、データのリード回数をホストアドレスLBA毎にカウントし、カウント結果の情報を管理テーブルに保存する。そして、プロセッサ11は、所定のタイミングで、或いはガベージコレクションが必要となったタイミングで、当該管理テーブルを参照してリード回数を取得し、リード回数と平均リード回数との差を求める。プロセッサ11は、例えば、不揮発性メモリ2全体について平均リード回数を取得する。プロセッサ11は、例えば、ブロックBLKについて平均リード回数を取得してもよい。プロセッサ11は、当該差が所定の閾値以上のデータについては、リードディスターブ耐性を向上させるためにSLC領域に移動させる処理を行う。
【0112】
なお、リード回数のカウント結果の情報を登録する管理テーブルとして、例えば、L2Pテーブル12aを採用してもよい。この場合のL2Pテーブル12aの内容は
図19を参照して説明した第3の実施形態と同様である。なお、ガベージコレクションによって、L2Pテーブル12a中のメモリアドレスPBAは更新されるが、リード回数を含むその他の情報は保持される。
【0113】
次に、
図26から
図29を参照して実施形態の動作について説明する。
図26は第7の実施形態に係るプロセッサ11によるガベージコレクション処理の一例を示すフローチャートである。
図26において
図18と同一の手順には同一符号を付して説明を省略する。
図27は多値領域及びSLC領域におけるデータの移動を説明するための図である。
図27は左側にQLC領域を示し、右側にSLC領域を示している。
図27の左側の例はQLC領域のブロックBlkM,BlkM+1,BlkM+2を示している。各ブロックはページPage0~PageLを有する。また、
図27の右側の例はSLC領域のブロックBlkN,BlkN+1,BlkN+2を示している。各ブロックはページPage0~PageKを有する。KはLより小さい。
【0114】
プロセッサ11は、各データの読み出し回数をホストアドレスLBA毎にカウントする。即ち、プロセッサ11は、ホスト装置4からの読み出し要求を受信すると、読み出し要求により指定されたホストアドレスLBAについて、L2Pテーブル12aのリード回数をインクリメントする。プロセッサ11は、各ホストアドレスLBAが指定されて書き込まれたデータについて、リード回数と平均リード回数との差を求める。読み出しが行われる毎にデータのリード回数は増加し、頻繁に読み出しが行われるデータのリード回数は平均リード回数からの差が大きくなる。この結果、
図27に示すように、QLC領域内のブロックBlkM,BlkM+1,BlkM+2中のページ(斜線部)に記憶されたデータにおいて、リード回数と平均リード回数との差が閾値以上になるものとする。
【0115】
この状態で、移動処理の処理タイミングになるものとする。例えば、ガベージコレクションと同時に移動処理が行われてもよい。
図26に示すように、プロセッサ11は、移動処理の処理タイミングを判定する(S21)。プロセッサ11は、例えばガベージコレクションが必要であると判定すると(S21でYES)、L2Pテーブル12aからリード回数を取得する(S22)。プロセッサ11は、リード回数と平均リード回数との差を求め(S41)、求めた差が閾値以上になったか否かをホストアドレスLBA毎に判定する(S42)。プロセッサ11は、求めた差が閾値以上になったデータについては(S42でYES)、
図27の矢印に示すように、SLC領域に移動させる(S24)。プロセッサ11は、求めた差が閾値未満であるデータについては(S42でNO)、QLC領域に移動させる(S25)。
【0116】
以後、同様にして、移動処理が実行されるタイミングで、リード回数が平均リード回数よりも閾値以上多いと判定されたデータは、SLC領域に移動される。この結果、以後の読み出しに際して、リード回数が平均リード回数よりも閾値以上多いと判定されたデータは、リードディスターブ耐性が高いSLC領域に保存されることになり、エラービットの増加を抑制することが可能である。
【0117】
なお、各データに対するリード回数が増加すると、SLC領域に移動するデータが増えて、SLC領域の空き領域がなくなってしまう。そこで、SLC領域の空きが例えば所定の閾値よりも低下した場合、プロセッサ11は、リード回数が比較的多いデータについてはSLC領域に移動させ、読み出し回数が比較的少ないデータについてはQLC領域に移動させる移動処理を実施してもよい。
【0118】
図28はこの移動処理を説明するためのフローチャートである。
図29はこの移動処理を説明するための図である。
図29はSLC領域中のブロックBlkN~BlkN+2及びブロックBlkO~BlkO+2を示している。
【0119】
いま、SLC領域の空きが閾値よりも低下したことにより、ブロックBlkN~BlkN+2に対して移動処理を実施するものとする。
図28に示すように、プロセッサ11は、移動処理の処理タイミングになったか否かを判定する(S51)。プロセッサ11は、移動処理の処理タイミングになると(S51でYES)、BlkN~BlkN+2に記憶されたデータについて、L2Pテーブル12aを参照してリード回数を取得する。プロセッサ11は、取得したリード回数が最上位から所定数のデータについてはSLC領域へ移動(コピー)させ(S54)、その他のデータについてはQLC領域に移動(コピー)させる(S55)。
【0120】
なお、移動するデータの判定に、リード回数と平均リード回数との差を用いてもよい。
【0121】
図29の例は、BlkN~BlkN+2に記憶されたデータのうち一部のデータをブロックBlkOに移動させることを示している。プロセッサ11は、BlkN~BlkN+2に記憶されたデータのうちブロックBlkOに移動させないデータを、QLC領域に移動させる。これにより、SLC領域の空き領域を増やすことが可能である。
【0122】
このように本実施形態においては、リード回数が比較的多いデータについては、リードディスターブ耐性に優れたSLC領域に保存することができ、エラービットの増加を抑制することが可能である。
【0123】
なお、第7の実施形態においては、ホストアドレスLBAを基準にしてリード回数と平均リード回数との差を判定する例を示したが、メモリアドレスPBAを基準にしてリード回数と平均リード回数との差を判定して、移動処理を実施してもよい。また、管理テーブル内のリード回数の情報は、ガベージコレクションが実行されても保持されるものと説明したが、ガベージコレクション毎にリード回数の情報をリセットするようになっていてもよい。
【0124】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0125】
1…メモリシステム、2…不揮発性メモリ、3…メモリコントローラ、4…ホスト装置、11…プロセッサ、12…RAM、12a…L2Pテーブル、13…バッファメモリ。