IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9A
  • 特開-メモリシステム 図9B
  • 特開-メモリシステム 図10
  • 特開-メモリシステム 図11A
  • 特開-メモリシステム 図11B
  • 特開-メモリシステム 図12
  • 特開-メモリシステム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022146531
(43)【公開日】2022-10-05
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/06 20060101AFI20220928BHJP
   G06F 12/00 20060101ALI20220928BHJP
【FI】
G06F12/06 515H
G06F12/00 597U
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2021047533
(22)【出願日】2021-03-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】天木 健彦
(72)【発明者】
【氏名】井川原 俊一
(72)【発明者】
【氏名】檜田 敏克
(72)【発明者】
【氏名】小島 慶久
(72)【発明者】
【氏名】鈴木 理気
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160CA16
(57)【要約】
【課題】記憶モードを適切に制御するメモリシステムを提供することを目的とする。
【解決手段】メモリシステムは、不揮発性メモリとメモリコントローラとを備える。メモリコントローラは、複数のブロックのうちから、メモリセルに第1数のビットのデータを書き込む第1モードで書き込まれる第1ブロックと、メモリセルに第2数のビットのデータを書き込む第2モードで書き込まれる複数の第2ブロックと、を設定し、第2数は第1数よりも大きく、複数の第2ブロックに関するアクセス情報を取得し、アクセス情報に基づく第1条件が満たされた場合、第1ブロックのメモリセルに対し前記第2モードで書き込むように設定する。
【選択図】図6
【特許請求の範囲】
【請求項1】
それぞれが複数のメモリセルを備える複数のブロックを備える不揮発性メモリと、
前記不揮発性メモリに対するアクセスを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、
前記複数のブロックのうちから、メモリセルに第1数のビットのデータを書き込む第1モードで書き込まれる第1ブロックと、メモリセルに第2数のビットのデータを書き込む第2モードで書き込まれる複数の第2ブロックと、を設定し、前記第2数は前記第1数よりも大きく、
前記複数の第2ブロックに関するアクセス情報を取得し、
前記アクセス情報に基づく第1条件が満たされた場合、前記第1ブロックのメモリセルに対し前記第2モードで書き込むように設定する、
メモリシステム。
【請求項2】
前記メモリコントローラは、
前記第1ブロックを前記第2モードで書き込むように設定した後に前記第1条件と異なる第2条件が満たされた場合、前記第2モードで書き込むように設定された第1ブロックと前記複数の第2ブロックとのうちの何れかを前記第1モードで書き込むように設定する、請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、
前記複数の第2ブロックに関するアクセス情報として、前記複数の第2ブロックの有効クラスタ率の情報を取得し、前記複数の第2ブロックの有効クラスタ率に関する第1条件が満たされた場合、前記第1ブロックを前記第2モードで書き込むように設定する、請求項1に記載のメモリシステム。
【請求項4】
前記第1条件は、前記複数の第2ブロックの有効クラスタ率のうち、最も低い有効クラスタ率に基づく条件である、請求項3に記載のメモリシステム。
【請求項5】
前記第1条件は、前記複数の第2ブロックの有効クラスタ率の幅に関する条件である、請求項3に記載のメモリシステム。
【請求項6】
前記第1条件は、前記複数の第2ブロックにかかる書き込みをしてから所定時間経過後の前記複数の第2ブロックの有効クラスタ率に関する条件である、請求項3に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、
前記複数の第2ブロックに関するアクセス情報として、前記複数の第2ブロックにおけるガベージコレクションの書き込み量の情報を取得し、
前記複数の第2ブロックにおけるガベージコレクションの書き込み量に基づく第1条件が満たされた場合、前記第1ブロックを前記第2モードで書き込むように変更する、請求項1に記載のメモリシステム。
【請求項8】
前記複数の第2ブロックにおけるガベージコレクションの書き込み量に基づく第1条件とは、前記複数の第2ブロックにおけるガベージコレクションの書き込み量が閾値を超えることである、請求項7に記載のメモリシステム。
【請求項9】
前記メモリコントローラは、
前記複数の第2ブロックに関するアクセス情報として、前記複数の第2ブロックに対応する書き込み対象の論理アドレスを取得し、
前記複数の第2ブロックに対応する書き込み対象の論理アドレスの分散度合いに基づく第1条件が満たされた場合、前記第1ブロックを前記第2モードで書き込むように設定する、
請求項1に記載のメモリシステム。
【請求項10】
前記メモリコントローラは、
前記複数の第2ブロックに関するアクセス情報として、前記複数の第2ブロックへの書き込みに基づくダーティ量を取得し、
前記ダーティ量に基づく第1条件が満たされた場合、前記第1ブロックを前記第2モードで書き込むように設定する、
請求項1に記載のメモリシステム。
【請求項11】
前記第2条件は、前記第1条件を満たさなくなったことに基づく条件である、請求項2に記載のメモリシステム。
【請求項12】
前記第2条件は、前記メモリシステムと接続されるホストからのアイドル状態に関するものである、請求項2に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムに関する。
【背景技術】
【0002】
従来、記憶モードが変更可能に構成されたメモリシステムがある。ここでいう記憶モードは、1メモリセルにnビットの値を保持するこれらのモードである。記憶モードは、ホストからメモリシステムに対するアクセスの性能に影響する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許9934151号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、上記のような記憶モードを適切に制御するメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、メモリシステムは、不揮発性メモリとメモリコントローラとを備える。メモリコントローラは、複数のブロックのうちから、メモリセルに第1数のビットのデータを書き込む第1モードで書き込まれる第1ブロックと、メモリセルに第2数のビットのデータを書き込む第2モードで書き込まれる複数の第2ブロックと、を設定し、第2数は第1数よりも大きく、複数の第2ブロックに関するアクセス情報を取得し、アクセス情報に基づく第1条件が満たされた場合、第1ブロックのメモリセルに対し前記第2モードで書き込むように設定する。
【図面の簡単な説明】
【0006】
図1図1は、実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
図2図2は、実施形態にかかるメモリチップの構成の一例を示す模式的な図である。
図3図3は、実施形態にかかるブロックの回路構成を示す模式的な図である。
図4図4は、実施形態の種々の記憶モードにおける各区分を説明する図である。
図5図5は、実施形態のブロックの状態遷移の一例を示す図である。
図6図6は、実施形態にかかるメモリコントローラの機能ブロックを示す図である。
図7図7は、実施形態のアドレス変換テーブルの例を示す図である。
図8図8は、実施形態のキューテーブルの一例を示す図である。
図9A図9Aは、実施形態のTLC用のアクティブのブロックを有効クラスタ率が低い順に並べた場合のそれぞれのブロックの有効クラスタ率を示すグラフである。
図9B図9Bは、実施形態のTLC用のアクティブのブロックを有効クラスタ率が低い順に並べた場合のそれぞれのブロックの有効クラスタ率を示すグラフである。
図10図10は、実施形態のSLC用キューテーブルのブロックを、TLC用のブロックのキューに設定する例を説明する図である。
図11A図11Aは、実施形態のTLC用のアクティブのブロックを有効クラスタ率が低い順に並べた場合のそれぞれのブロックの有効クラスタ率を示すグラフである。
図11B図11Bは、実施形態のTLC用のアクティブのブロックを有効クラスタ率が低い順に並べた場合のそれぞれのブロックの有効クラスタ率を示すグラフである。
図12図12は、実施形態のSLC用のブロックおよびTLC用のブロックの状態遷移を説明するための図である。
図13図13は、実施形態のSLC用のブロックをTLC用のブロックに設定する処理手順を説明するフローチャートである。
【発明を実施するための形態】
【0007】
以下では、一例として、実施形態にかかるメモリシステムについて説明する。以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
(メモリシステムの構成例)
図1は、実施形態にかかるメモリシステム1の概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ2とNAND型フラッシュメモリ3(以下、単にNANDメモリ3ともいう)とを備える。
【0009】
メモリシステム1は、メモリコントローラ2とNANDメモリ3とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。メモリシステム1は、ホスト4と接続可能である。ホスト4は、例えば、パーソナルコンピュータ、サーバ、ストレージボックスなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【0010】
NANDメモリ3は、データを不揮発に記憶する不揮発性メモリである。以下の説明では、不揮発性メモリとして2次元(平面)構造のNANDメモリ3が用いられた場合について説明するが、不揮発性メモリの例はこれに限られない。不揮発性メモリは、例えば、NOR型のフラッシュメモリ、3次元(立体)構造フラッシュメモリ等であってもよい。
【0011】
メモリコントローラ2は、NANDメモリ3の制御を実行する。
【0012】
メモリコントローラ2は、ホスト4からライトが要求されたデータをNANDメモリ3にライトしたり、ホスト4からリードが要求されたデータをNANDメモリ3からリードしてホスト4に送ったりする。
【0013】
さらに、メモリコントローラ2は、NANDメモリ3内でデータを転記する転記処理を実行する。転記処理は、ガベージコレクションなどを含む。
【0014】
メモリコントローラ2は、ホストインタフェース(ホストI/F)21、メモリインタフェース(メモリI/F)22、制御部23、RAM(Random Access Memory)24、およびデータバッファ25を備える。ホストI/F21、メモリI/F22、制御部23、RAM24、およびデータバッファ25は、内部バス20で相互に接続されている。
【0015】
なお、メモリコントローラ2は、SoC(System-On-a-Chip)として構成され得る。または、メモリコントローラ2は、複数のチップによって構成され得る。RAM24またはデータバッファ25は、メモリコントローラ2の外部に配されていてもよい。
【0016】
ホストI/F21は、ホスト4から受信したアクセスコマンドおよびユーザデータなどを内部バス20に出力する。ユーザデータは、内部バス20を介してデータバッファ25に送られる。
【0017】
また、ホストI/F21は、NANDメモリ3から読み出されたユーザデータおよび制御部23からの応答などをホスト4へ送信する。
【0018】
データバッファ25は、ホスト4とNANDメモリ3との間のデータ転送のためのバッファとして機能するメモリである。データバッファ25は、例えば、SRAM(Static Random Access Memory)またはSDRAM(Synchronous Dynamic Random Access Memory)などの揮発性メモリによって構成される。なお、データバッファ25を構成するメモリの種類はこれらに限定されない。
【0019】
メモリI/F22は、ユーザデータ等をNANDメモリ3にライトする処理およびNANDメモリ3からリードする処理を、制御部23からの指示に基づいて制御する。
【0020】
制御部23は、コンピュータプログラムを実行することができる回路である。制御部23は、例えばCPU(Central Processing Unit)である。制御部23は、予め所定位置(例えばNANDメモリ3)に格納されていたファームウェアプログラムに基づいてメモリコントローラ2の各構成要素を統括的に制御し、これによってホストアクセス処理および転記処理を含む種々の処理を実現する。
【0021】
なお、制御部23が実行する処理の一部または全部は、ハードウェア回路によって実行されてもよい。制御部23が実行する処理の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。
【0022】
RAM24は、制御部23にバッファ、キャッシュ、またはワーキングメモリとしての機能を制御部23に提供する。制御部23は、DRAM(Dynamic Random Access Memory)、SRAM、またはこれらの組み合わせによって構成される。なお、RAM24を構成するメモリの種類はこれらに限定されない。
【0023】
なお、メモリコントローラ2は、これらの構成要素に替えて、またはこれらの構成要素に加えて、任意の構成要素を備え得る。例えば、メモリコントローラ2は、ユーザデータに対して所定の処理(例えば符号化または復号化)を行う回路を備えていてもよい。
【0024】
NANDメモリ3は、ユーザデータ等を不揮発に記憶できる。NANDメモリ3は、1つ以上のNANDパッケージ30a~30dを含む。図1には4つのNANDパッケージ30a~30dを示すが、NANDパッケージ30a~30dの数は4つに限られず、1つ以上であればよい。個々のNANDパッケージ30a~30dを区別しないときは、単にNANDパッケージ30とも記載する。
【0025】
NANDパッケージ30の各々は、1つ以上のメモリチップ31a~31cを備える。図1には3つのメモリチップ31a~31cを示すが、メモリチップ31a~31cの数は3つに限られず、1つ以上であればよい。個々のメモリチップ31a~31cを区別しないときは、単にメモリチップ31とも記載する。メモリチップ31は、NAND型フラッシュメモリのメモリチップである。
【0026】
図2は、実施形態にかかるメモリチップ31の構成の一例を示す模式的な図である。メモリチップ31は、周辺回路210およびメモリセルアレイ211を備える。
【0027】
メモリセルアレイ211は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、BLK2、…)を備える。各ブロックBLKは、各々がワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、SU2、…)を備える。ストリングユニットSUの各々は、複数のメモリセルトランジスタが直列接続された複数のNANDストリング212を備える。なお、ストリングユニットSU内のNANDストリング212の数は任意である。
【0028】
周辺回路210は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路210は、メモリコントローラ2からの指示に応じて、メモリセルアレイ211に対し、当該指示に対応した動作を実行する。メモリコントローラ2からの指示は、ライト、リード、およびイレースを含む。
【0029】
図3は、実施形態にかかるブロックBLKの回路構成を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング212を含む。
【0030】
NANDストリング212の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング212内のメモリセルトランジスタMTの個数は64個に限定されない。
【0031】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、各々の選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一のブロックBLK内にある各メモリセルトランジスタMT0~MT63の制御ゲートは、各々のワード線WL0~WL63に共通接続される。
【0032】
ストリングユニットSU内にある各NANDストリング212の選択トランジスタST1のドレインは、各々異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング212を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0033】
つまりストリングユニットSUは、各々が異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続された複数のNANDストリング212の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ211は、少なくとも1のビット線BLを共通にする複数のブロックBLKの集合である。
【0034】
周辺回路210によるライトおよびリードは、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。ライトおよびリードの際に、一括して選択されるメモリセルトランジスタMTの群をメモリセルグループMCGと表記する。そして、1つのメモリセルグループMCGにライトされる、あるいはリードされる1ビットのデータの集まりの単位をページと表記する。
【0035】
周辺回路210によるイレースは、ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、一括にイレースされる。
【0036】
なお、メモリセルアレイ211の構成は、図2および図3に示された構成に限定されない。例えば、メモリセルアレイ211は、NANDストリング212が2次元的に又は3次元的に配列された構成を有していてもよい。
【0037】
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、データに対応した量の電荷を注入する。そして、メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTから、電荷蓄積層に蓄積された電荷量に応じたデータを読み出す。
【0038】
各メモリセルトランジスタMTは、n(n≧1)ビット以上の値を保持可能である。nが1であるモードは、SLC(Single Level Cell)と称される。各メモリセルトランジスタMTにnビットの値が保持される場合、メモリセルグループMCG当たりの記憶容量はnページ分のサイズに等しくなる。nが2であるモードは、MLCと称される。nが3であるモードは、TLCと称される。nが4であるモードは、QLC(Quad Level Cell)と称される。1メモリセルにnビットの値を保持するこれらのモードを、記憶モードと表記する。
【0039】
各メモリセルトランジスタMTのしきい値電圧は、周辺回路210によって一定の範囲内でコントロールされる。しきい値電圧のコントローラブルな範囲は、2のn乗の数の区分に分割され、各区分にそれぞれ異なるnビットの値がアサインされる。
【0040】
図4は、実施形態の種々の記憶モードにおける各区分を説明する図である。図4に示すように、しきい値電圧の範囲(コントローラブルな範囲)は、複数の区分4に分割される。例えば、SLCの場合、しきい値電圧の範囲は、2つの区分4に分割される。MLCの場合、しきい値電圧の範囲は、4つの区分4に分割される。TLCの場合、しきい値電圧の範囲は、8つの区分4に分割される。QLCの場合、しきい値電圧の範囲は、16個の区分4に分割される。1メモリセルに保持される値のビット数が多いほど、各区分4の範囲が狭い。各区分4には、値がアサインされる。SLCの場合、低電圧側の区分4に値“1”がアサインされ、高電圧側の区分4に値“0”がアサインされる。MLCの場合、最も低電圧側の区分4に値“11”がアサインされ、他の3つの区分4には、電圧の順番に、それぞれ、“01”、“00”、“10”がアサインされる。なお、各区分4への値のアサイン方法は上記の例に限定されない。なお、以降、n、つまり1つのメモリセルトランジスタMTに保持される値のビット数を、レベル数、と表記することがある。
【0041】
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、ライト対象のデータがアサインされた区分4に対応した量の電荷を注入する。メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTのしきい値電圧が属する区分4を判定し、判定によって取得した区分4にアサインされたデータを、リードデータとして出力する。
【0042】
メモリセルアレイ211に対するイレースにおいては、周辺回路210は、メモリセルアレイ211の基板にイレース電圧を印加する。そして、周辺回路210は、イレース対象のブロックBLKの全てのワード線WLを接地電位に導通させる。すると、選択されたブロックBLK内の各メモリセルトランジスタMTにおいては、電荷蓄積層に蓄えられていた電荷が放電される。その結果、選択されたブロックBLK内の各メモリセルトランジスタMTの状態は、データがイレースされたと見なされる状態(即ち最も低電圧側の区分4)に遷移する。
【0043】
メモリシステム1は、単一の記憶モードでのみリードおよびライトが可能に構成され得る。または、メモリシステム1は、動作中に記憶モードの切り替えが可能に構成され得る。記憶モードの切り替えが可能である場合、切り替えの単位の記憶領域の範囲は任意である。例えば、メモリシステム1は、ブロックBLK単位で記憶モードの切り替えが可能であってもよい。
【0044】
メモリシステム1が、動作中における記憶モードの切り替えが可能に構成される場合、メモリシステム1が備える記憶領域の内の一部(例えば一部のブロックBLK)の記憶モードが第1の記憶モードに固定され、他の一部(例えば他の一部のブロックBLK)の記憶モードが第1の記憶モードと異なる第2の記憶モードに固定され、メモリシステム1は、使用したい記憶モードに応じてライト先のブロックBLKを選択してもよい。または、メモリシステム1は、動作中に記憶領域(例えば各ブロックBLK)の記憶モードを複数の記憶モードの間で変更することが可能に構成されてもよい。
【0045】
以降の説明では、一例として、メモリシステム1は、SLCとTLCとの間で記憶モードを切り替えることが可能に構成されていることとする。
【0046】
続いて、ブロックBLKの状態遷移について説明する。
図5は、実施形態のブロックBLKの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックBLKの状態遷移を示しており、実線の矢印は、データの移動を示している。
【0047】
ブロックBLKの状態としては、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックがある。1以上のアクティブブロックは、アクティブブロックリストを構成し、1以上のフリーブロックは、フリーブロックプールを構成する。
【0048】
オープンブロックとは、データの書き込み途中のブロックである。即ち、オープンブロックは、データが書き込まれ得る領域を残した状態にあるブロックである。
【0049】
アクティブブロックは、データの書き込みが終了したブロックのうちの、まだ再利用できないブロックである。データの書き込みが終了したブロックのうちの、有効なユーザデータが格納されているブロックは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。
【0050】
フリーブロックは、有効なユーザデータが格納されていないブロックである。フリーブロックは、再利用可能なブロックである。
【0051】
例えば、オープンブロックに1ブロックBLK分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているデータは、有効な状態と無効な状態とのうちの何れかである。
【0052】
アクティブブロックに或るデータ(第1のデータと表記する)が格納されている状態で、ホスト4から第1のデータが送られてきた際に指定された論理アドレス値と同一の論理アドレス値が指定されて第2のデータが送られてきた場合、メモリコントローラ2は、オープンブロックの空のページに第2のデータを書き込み、アクティブブロックに格納されている第1のデータを無効なデータとして管理する。よって、アクティブブロックに格納されているデータには、有効なユーザデータと無効なユーザデータとが混在し得る。
【0053】
なお、ホスト4が、古いデータをメモリシステム1に送った際に指定した論理アドレス値と同一の論理アドレス値を指定して新しいデータを送ることを、書き換え(rewrite)と表記する。
【0054】
アクティブブロックは、ガベージコレクションによってフリーブロックに遷移する。ガベージコレクションは、アクティブブロックであるブロックBLKに格納されている有効なデータをオープンブロックであるブロックBLKに転記(transcribe)して、転記元のブロックBLKに格納されている全てのデータを無効化する処理をいう。これによって、転記元のブロックBLKは、アクティブブロックからフリーブロックに遷移する。なお、転記は、転送、または移動と換言することができる。
【0055】
フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。
【0056】
なお、データが有効とは、そのデータが格納されている位置が何れかの論理アドレス値に対応付けられていることをいう。データが無効とは、そのデータが格納されている位置が何れの論理アドレス値にも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データの書き込みが可能な空き領域である。なお、ブロックBLK内の位置と論理アドレス値との対応関係は、メモリコントローラ2が維持および更新する。
【0057】
ホストアクセス処理と、転記処理と、のそれぞれのためにオープンブロックが個別に用意されていてもよい。ホストアクセス処理用のオープンブロックと転記処理用のオープンブロックとが用意されてもよい。ブロックBLK単位で記憶モードの切り替えが可能である場合、オープンブロックは、記憶モード毎に用意されてもよい。
【0058】
また、オープンブロックだけでなく、アクティブブロックリストおよびフリーブロックプールも記憶モード毎に用意されてもよい。例えば、1または複数のTLC用のアクティブブロックから構成されるTLC用のアクティブブロックリストと、1または複数のSLC用のアクティブブロックから構成されるSLC用のアクティブブロックリストとが用意されてもよい。また、TLC用のフリーブロックから構成されるTLC用のフリーブロックプールと、SLC用のフリーブロックから構成されるSLC用のフリーブロックプールとが用意されてもよい。また、メモリコントローラ2は、ブロックがアクティブであるかフリーであるかの管理をSLC用のブロック群と、TLC用のブロック群とで独立に実行するようにしてもよい。
【0059】
上記のように、アクティブブロックリストおよびフリーブロックプールもSLC用のブロックプールおよびTLC用のブロックプールが用意されている場合を想定する。ホスト4によるランダムライト要求が所定期間継続されると、それに応じて有効クラスタ率の局所性が低くなる。ここで、ランダムライトとは、局所性の低いライトアクセスが継続していることをいい、例えば、書き込み先が論理アドレス空間上で連続しないようにホスト4によって指示されることをいう。また、クラスタとは、セクタと呼ばれる領域よりも大きい領域をいう。ここで、セクタとは、1つの論理アドレスに対応する領域であり、最小の記録単位である。
【0060】
メモリシステム1が、上述のようなランダムライト要求に応じてNANDメモリ3へ書き込むと、ガベージコレクション対象のTLC用のアクティブブロックから有効データを転記する回数に影響が出てしまう。この点の詳細は、後述する。
【0061】
そこで、本実施形態のメモリシステム1は、SLC用のアクティブブロックおよびTLC用のアクティブブロックをそれぞれ設定している場合に、SLC用のアクティブブロックを用いることで、TLC用のブロックのガベージコレクションを効率良く実行させる。
【0062】
(メモリコントローラの機能)
図6は、実施形態にかかるメモリコントローラ2の機能ブロックを示す図である。図6に示すように、メモリコントローラ2は、例えば、プロセッサである制御部23によって実現される機能として、アクセス処理部231、アドレス・ブロック管理部232、RW検知部233、およびガベージコレクション制御部234を備える。これらの機能部により、メモリコントローラ2は、メモリシステム1の各構成要素を統括的に制御する。
【0063】
アクセス処理部231は、ホスト4からホストI/F21経由でアクセスコマンドを受けた場合に、そのアクセスコマンドに従った制御を行う。ホスト4からのアクセスコマンドは、例えば、ライトコマンド、リードコマンド等である。例えば、アクセス処理部231は、ホスト4からのアクセスコマンドに従って、NANDメモリ3への書き込みをメモリI/F22へ指示する。また、アクセス処理部231は、ホスト4からのアクセスコマンドに従って、NANDメモリ3からの読み出しをメモリI/F22へ指示する。
【0064】
アクセスコマンドは、論理的な位置情報を含む。メモリシステム1は、ホスト4に論理アドレス空間を提供する。論理的な位置情報は、当該論理アドレス空間における位置を示す。ホスト4は、論地的な位置情報を用いることによって、ユーザデータをライトする位置またはユーザデータの読み出しを行う位置を指定する。
【0065】
論理的な位置情報(論理アドレス)としては、例えばLBA(Logical Block Address)が採用可能である。また、例えばメモリシステム1とホスト4との間の通信のインタフェース規格としてNVMe(登録商標)が採用される場合には、論理的な位置情報は、ネームスペースの識別情報とネームスペース内の位置を示す位置情報(例えばLBA)とが含まれていてもよい。ネームスペースとは、メモリシステム1が提供可能な論理アドレス空間のうちの一部の、ネームスペースの識別情報によって特定される論理アドレス空間である。即ち、NVMeが採用される場合には、メモリシステム1は、1つの論理アドレス空間を複数の論理アドレス空間に分割して管理することが可能である。以降、アクセスコマンドに含まれる論理的な位置情報を、論理アドレスまたはLBAとも呼ぶ。
【0066】
アクセス処理部231は、ライトコマンドを受けた場合、当該ライトコマンドに含まれる論理アドレスであるLBAをRW検知部233へ通知する。また、アクセス処理部231は、アドレス・ブロック管理部232にLBAを通知し、アドレス・ブロック管理部232から当該LBAに対応付けられた物理アドレスを取得する。なお、物理アドレスは、NANDメモリ3が有する記憶領域における位置を示す位置情報である。アクセス処理部231は、アドレス・ブロック管理部232から取得した物理アドレスに基づきNANDメモリ3への書き込みをメモリI/F22へ指示する。メモリI/F22は、上記ライトコマンドによって書き込みが要求されたデータをデータバッファ25から取り出して、当該データを当該物理アドレスが示す位置に書き込む。アクセス処理部231は、当該データの書き込みの完了後、論理アドレスと物理アドレスとを対にしてアドレス・ブロック管理部232へ通知する。
【0067】
また、アクセス処理部231は、ホスト4からリードコマンドを受けた場合、アクセス処理部231は、アドレス・ブロック管理部232から取得した物理アドレスに基づきNANDメモリ3への読み出しをメモリI/F22へ指示する。
【0068】
アドレス・ブロック管理部232は、論理アドレスと物理アドレスとが対応付けられた情報、および後述するブロックに関する情報を管理する。
【0069】
アドレス・ブロック管理部232は、アクセス処理部231がホスト4からライトコマンドを受信した場合、データバッファ25に蓄積されるデータに対して書き込み先を示す書き込む物理アドレスを決定する。アドレス・ブロック管理部232は、ホスト4から受信したデータの論理アドレスと該データが格納されたNANDメモリ3上の位置を示す物理アドレスとの対応を、アドレス変換テーブルに記録する。
【0070】
メモリシステム1が提供する論理アドレス空間は、複数のSegmentに分割される。各Segmentは、連続する論理アドレスが割り当てられた複数の単位領域によって構成されている。アドレス・ブロック管理部232は、Segmentの単位でアドレス変換テーブルを管理する。Segmentのサイズは例えば均一である。Segmentの単位でのアドレス変換テーブルの管理については後述される。
【0071】
アドレス・ブロック管理部232は、アドレス変換テーブルを用いることによって、データの書き込み先を管理する。アドレス・ブロック管理部232は、アクセス処理部231から、LBAを受信し、当該LBAに対応する物理アドレスをアクセス処理部231へ通知する。
【0072】
また、アドレス・ブロック管理部232は、アクセス処理部231がホスト4からリードコマンドを受信した場合、アクセス処理部231からLBAを受信し、当該LBAに対応する物理アドレスをアクセス処理部231へ通知する。
【0073】
アドレス・ブロック管理部232は、アクセス処理部231により、書き込み完了後に、書き込み量、書き込み先のLBAおよび物理アドレスを取得する。そして、アドレス・ブロック管理部232は、当該LBAおよび物理アドレスに対応するアドレス変換テーブルを更新する。
【0074】
アドレス・ブロック管理部232は、上記アドレス変換テーブルにおける、上記LBAおよび物理アドレスに対応するSegmentの状態を更新する。具体的に、アドレス・ブロック管理部232は、書き込み対象のLBAに対応するSegmentの状態を、更新済であり、且つ不揮発化である旨を設定する。
【0075】
ここで、アドレス変換テーブルの例を図7に示す。
図7は、アドレス変換テーブルの例を示す図である。図7に示すように、アドレス変換テーブルは、連続した複数の論理アドレスと複数の物理アドレスとの対応関係を示すデータ構造を有している。アドレス変換テーブルは、Segment単位で分割されており、Segment毎にアドレス変換テーブルの状態が記録されている。なお、ここでは一例として、各Segmentは、128個の連続した論理アドレスが割り当てられた複数の単位領域からなるものとしている。各Segmentのサイズはこれに限定されない。
【0076】
上記のアドレス変換テーブルの本体は、NANDメモリ3に格納されており、Segment単位で、RAM24等の揮発メモリにキャッシュされる。Segment単位でアドレス変換テーブルを管理するとは、アドレス変換テーブルをキャッシュする単位がSegment単位であるということである。
【0077】
キャッシュ上のあるSegmentの一部でも更新されると、キャッシュ上の当該SegmentとNANDメモリ3内の本体のSegmentとが不一致の状態になり、この状態をダーティという。キャッシュ上のダーティなSegmentをNANDメモリ3に書き込むことで、キャッシュ内とNANDメモリ3内とでSegmentの内容が同一になり、これによってそのSegmentはダーティから非ダーティになる。不揮発化とは、キャッシュ上のダーティなSegmentをNANDメモリ3に書き込むことによって、キャッシュ上のダーティなSegmentを非ダーティにする操作をいう。
【0078】
また、論理アドレスと指定されたTRIM(UNMAP)コマンドおよびドライブ全体へのFORMATコマンドをホスト4から受信すると、アドレス・ブロック管理部232は、論理アドレスに対して物理アドレスが何も紐づけられていないUNMAPPED状態にする。例えば、図7に示すSegment4が、UNMAPPED状態であることを示している。また、UNMAPPED状態の論理アドレスに書き込まれると、アドレス・ブロック管理部232は、論理アドレスと物理アドレスとを紐づける。なお、ドライブ全体の表記容量の論理アドレス空間のうち、論理アドレスと物理アドレスとが紐づけられた状態であるMAPPED状態のものが占める割合をLBA_MAP率とする。
【0079】
物理アドレスがMAPされた状態のLBAに対するTRIMコマンドを処理すると、UNMAPPED状態となり、UNMAPPED状態のLBAに対するWRITEコマンドを処理すると、MAPPED状態になる。前者の場合、LBA_MAP率が下がり、後者の場合、LBA_MAP率が上がる。
【0080】
Segmentにおける状態が、更新済であり、不揮発化していない場合、いわゆるダーティであることを示す。アドレス・ブロック管理部232は、アドレス変換テーブルのダーティ量(ダーティであるSegment数)を算出し、ダーティ量と、書き込み量とをRW検知部233へ通知する。
【0081】
本実施形態では、アドレス・ブロック管理部232は、SLC用のブロックと、TLC用のブロックとを管理する。アドレス・ブロック管理部232は、各ブロックについて、ブロックの識別情報と、物理アドレスと、TLC用であるかSLC用であるかを示す情報と、有効クラスタ数を示す情報と、ブロックの状態を示す情報と、ライトイレースサイクルとを対応付けたブロック管理情報を記憶する。ここで、ブロックの状態を示す情報とは、アクティブ、フリーおよびオープンのいずれかを示す情報である。
【0082】
また、アドレス・ブロック管理部232は、SLC用のブロックにおけるアクティブであるブロックについて、有効クラスタ数に基づいてソートした結果に基づいて、SLC用のブロックのアクティブブロックのキューを構成するための情報であるSLC用アクティブキューテーブルを管理する。例えば、アドレス・ブロック管理部232は、SLC用のブロックのアクティブブロックの先頭・末尾を示すブロックの情報、および有効クラスタ数で昇順に並べた場合の次のブロックを示す情報を管理する。アドレス・ブロック管理部232は、TLC用のブロックにおけるアクティブであるブロックについて、有効クラスタ数に基づいてソートした結果に基づいて、TLC用のブロックのアクティブブロックのキューを構成するための情報であるTLC用アクティブキューテーブルを管理する。TLC用アクティブキューテーブルは、ガベージコレクション対象のブロックを決定するために用いられる。また、SLC用アクティブキューテーブルは、TLC用アクティブブロックに変更させるブロックを決定するために用いられる。
【0083】
なお、アドレス・ブロック管理部232は、SLC用のブロックにおけるフリーであるブロックについてSLC用のフリーキューテーブルを管理するようにしてもよいし、TLC用のブロックにおけるフリーであるブロックについてTLC用のフリーキューテーブルを管理するようにしてもよい。この場合、ライトイレースサイクルの少ない順にキューが構成される。
【0084】
図8は、キューテーブルの一例を示す図である。キューテーブルは、SLC用のブロックおよびTLC用のブロック内の有効クラスタ数をブロック毎に管理するテーブルである。図8では、1つのブロックに関する有効クラスタ数を含む情報同士を一方向リストとして有効クラスタ数の小さいブロック順に管理している。リストの1つのエントリには、有効クラスタ数、ブロック番号、次エントリへのポインタ情報が含まれる。なお、キューテーブルは、双方向リストであってもよい。なお、キューテーブルにおいて、有効クラスタ数に加えて、有効クラスタ率を有するようにしてもよい。
【0085】
ここで、有効クラスタ率とは、(ブロックに含まれる有効クラスタ数)÷(ブロックに含まれる総クラスタ数)で計算される値である。上記の定義に従う場合、ガベージコレクション対象として選択する優先度はSLCアクティブブロックとTLCアクティブブロックで同じである。一方、SLCアクティブブロックをTLCアクティブブロックよりも優先してガベージコレクション対象として選択するために、有効クラスタ率の計算時に補正を行ってもよい。例えば、SLCブロックに含まれる総クラスタ数を定数倍(例えば3倍)にする、あるいはオフセットを加算する。または、TLCブロックに含まれる有効クラスタ数を定数倍(例えば3倍)にする、あるいはオフセットを加算する。また、上記の補正を組み合わせて用いてもよい。
【0086】
また、アドレス・ブロック管理部232は、アクセス処理部231により、書き込み完了後にLBAおよび物理アドレスを取得すると、TLC用アクティブキューテーブルにおける有効クラスタ数を更新する。そして、アドレス・ブロック管理部232は、TLC用のアクティブブロックにおける有効クラスタ率を算出し、RW検知部233へ通知する。
【0087】
アドレス・ブロック管理部232は、RW検知部233から後述するランダムライト状態の条件を満たす旨の通知を受けると、SLC用のブロックをTLC用のブロックとして設定する。具体的に、アドレス・ブロック管理部232は、SLC用キューテーブルで定義されているブロックを、TLC用のブロックのキューに設定する処理を実行する。
【0088】
ここで、ライトアクセスおよび有効クラスタ率の局所性について説明する。
図9Aおよび図9Bは、TLC用のアクティブのブロックを有効クラスタ率が低い順に並べた場合のそれぞれのブロックの有効クラスタ率を示すグラフである。ここでは、ある所定期間中にホスト4から一定量のデータの書き込み要求がなされたという前提で考える。
【0089】
図9Aは、ホスト4からの書き込み要求において、重複するLBAの数が多い場合を示す。この場合、あるブロックの有効クラスタ率は相対的に低く、別のブロックの有効クラスタ率は相対的に高くなる、といったようにブロック間で有効クラスタ率のばらつきが生じる。ここではこれを、ライトアクセスおよび有効クラスタ率の局所性が高いと表現する。
【0090】
一方、図9Bは、ホスト4からの書き込み要求において、LBAの重複が少なく、LBAで指定されたブロックの書き換えが分散している場合を示す。この場合、各ブロックの有効クラスタ率は全体的にほぼ一律である。ここではこれを、ライトアクセスおよび有効クラスタ率の局所性が低いと表現する。
図9Bの場合において、ガベージコレクションを実行する際、有効クラスタ率が最も低いブロックを転記元ブロックとして選択したとしても、図9Aの場合と比較して転記元のブロックの有効クラスタ率が高くなる傾向があり、処理負荷がかかる。ここで、TLC用のアクティブのブロックに含まれる有効クラスタ総数は、ほぼ一定とする。アドレス・ブロック管理部232が、SLC用のキューテーブルで定義されているブロックをTLC用のブロックのキューに設定する処理を実行する。このことは、TLC用のブロック数を増やすことに相当する。有効クラスタ数が一定でブロック数が増えているので、有効クラスタ率が最低のブロックを選んだ時の当該ブロックの有効クラスタ率を低くすることができる。すなわち、図9Aの状態に近づけることができる。この結果、ガベージコレクションの処理負荷を下げることができる。
【0091】
続いて、図10を用いて、SLC用キューテーブルのブロックを、TLC用のブロックのキューに設定する例を説明する。
図10は、SLC用キューテーブルのブロックを、TLC用のブロックのキューに設定する例を説明する図である。
【0092】
設定変更前における、TLC用のアクティブブロックは、ブロック番号が「#17」、「#184」、「#3」、および「#11」のブロックがあり、有効クラスタ数に基づいて順序付けされている。また、SLC用のアクティブブロックは、ブロック番号が「#1004」および「#1012」のブロックがあり、有効クラスタ数に基づいて順序付けされている。
【0093】
アドレス・ブロック管理部232は、RW検知部233からランダムライト状態である旨の通知を受けると、SLC用のアクティブブロックの内、有効クラスタ数が少ないブロックであるブロック番号が「#1004」であるブロックをTLC用のアクティブブロックとして設定する。これに応じて、アドレス・ブロック管理部232は、SLC用アクティブキューテーブルおよびTLC用アクティブキューテーブルを更新したり、ブロック管理情報を更新したりする。このように、アドレス・ブロック管理部232は、RW検知部233からランダムライト状態である旨の通知を受けると、SLC用のアクティブブロックをTLC用のアクティブブロックとして設定することで、TLC用のアクティブブロックを増やす。これにより、ドライブ全体の物理容量を増やすことができる。例えば、図11Aに示すように、ブロックの有効クラスタ率が、ほぼ一律となっている場合に、図11Bに示すように、TLC用のアクティブブロックを増やす。この結果、TLC用のアクティブブロックの有効クラスタ分布を薄めることができ、ガベージコレクション対象となるブロックの有効クラスタ率を下げ、ガベージコレクション効率を改善することができる。
【0094】
アドレス・ブロック管理部232は、上記のように、RW検知部233からランダムライト状態である旨の通知を受けると、SLC用のアクティブブロックを、TLC用のアクティブブロックとして設定する。なお、アドレス・ブロック管理部232は、RW検知部233からランダムライト状態である旨の通知を受けると、SLC用のアクティブブロックの内、複数のSLC用のアクティブブロックをTLC用のアクティブブロックとして設定するようにしてもよい。また、アドレス・ブロック管理部232は、SLC用のアクティブブロックをTLC用のアクティブブロックとして設定するブロック数を予め定めていてもよい。
【0095】
アドレス・ブロック管理部232は、所定のタイミングで、ガベージコレクション対象のブロックと、書き込み先ブロックとを決定し、これらのブロックの物理アドレスをガベージコレクション制御部234へ通知し、ガベージコレクションを実行させる。上記所定のタイミングとは、例えば、RW検知部233から後述する解除条件が満たされる旨の通知を受けた場合である。
【0096】
アドレス・ブロック管理部232は、ガベージコレクション制御部234からLBAおよび物理アドレスを取得すると、LBAおよび物理アドレスに基づいてアドレス変換テーブルを更新する。なお、アドレス・ブロック管理部232は、当該アドレス変換テーブルの更新時に、アドレス変換テーブルの状態も更新する。アドレス・ブロック管理部232は、アドレス変換テーブルのダーティ量を算出し、算出したダーティ量と、書き込み量とをRW検知部233へ通知する。また、アドレス・ブロック管理部232は、TLC用のアクティブブロックにおける有効クラスタ数を更新する。そして、アドレス・ブロック管理部232は、TLC用のアクティブブロックにおける有効クラスタ率を算出し、RW検知部233へ通知する。
【0097】
アドレス・ブロック管理部232は、RW検知部233から解除条件に合致する旨の通知を受けた場合にガベージコレクションを実行させたとき、予め定められているフリーブロック数を満たす等、TLCのフリーブロックが十分に確保された場合、当該フリーブロックをSLC用のフリーブロックとして設定する。なお、アドレス・ブロック管理部232は、上記フリーブロック数を満たさない場合、さらにガベージコレクション制御部234にガベージコレクションを実行させる。
【0098】
RW検知部233は、ランダムライト状態であることを検知するための条件であるランダムライト条件を満たすか否かを判断する。また、RW検知部233は、ランダムライト状態を検知した状態を解除する条件である解除条件を満たすか否かを判断する。
【0099】
RW検知部233は、以下の各ランダムライト条件を満たすか否かを判断する。
(ランダムライト条件1)
TLC用のアクティブブロックの有効クラスタ率を昇順に並べた場合、最も低い有効クラスタ率が所定の閾値(例えば、70%)以上である。なお、最も低い有効クラスタ率が閾値と等しい場合の取り扱いは、これに限られない。
(ランダムライト条件2)
アクティブブロックの有効クラスタ率の幅が所定の閾値未満である。なお、アクティブブロックの有効クラスタ率の幅が閾値と等しい場合の取り扱いは、これに限られない。ここでいう有効クラスタ率の幅とは、有効クラスタ率の最大値と最小値との差分、有効クラスタ率の分散などである。
(ランダムライト条件3)
GCギア比が所定の閾値以上である。なお、GCギア比が閾値と等しい場合の取り扱いは、これに限られない。
(ランダムライト条件4)
ライトコマンドのLBAを監視した結果、LBAの分散度合いが所定の閾値以上である。ここで、RW検知部233は、アクセス処理部231からライトコマンドの論理アドレスを受信して、その不連続性をもってランダムライトアクセスパターンを検出するようにしてもよい。なお、LBAの分散度合いが閾値と等しい場合の取り扱いは、これに限られない。ここでいうLBAの分散度合いとは、ホスト4による一定量の書き込みにおけるLBAの最大値と最小値との差分、分散、標準偏差などである。
(ランダムライト条件5)
書き込み量に対するダーティ量の増え方が所定の閾値以上である。なお、書き込み量に対するダーティ量の増え方が閾値と等しい場合の取り扱いは、これに限られない。
(ランダムライト条件6)
書き込まれてから時間が経過したブロックであるにも関わらず、有効クラスタ率が大きいブロックが所定の閾値以上ある。なお、書き込まれてから時間が経過したブロックであるにも関わらず、有効クラスタ率が大きいブロックが閾値と等しい場合の取り扱いは、これに限られない。
【0100】
なお、ランダムライト条件2、ランダムライト条件4、ランダムライト条件5、およびランダムライト条件6については、前提として、LBA_MAP率が一定以上(例えば、75%)であるものとする。ここで、LBA_MAP率とは、表記容量に対する、アドレス変換テーブルにおいてNANDメモリ3に関連付けられている論理アドレスに対応する容量、の割合を指す。表記容量とは、メモリシステム全体でユーザデータを格納可能な最大容量を示す。表記容量は、システム表記容量とも称される。なお、ランダムライト条件1の閾値は、当該LBA_MAP率より低い値に設定するようにしてもよい。
【0101】
RW検知部233は、ランダムライト条件1、ランダムライト条件2、およびランダムライト条件6については、アドレス・ブロック管理部232からTLC用のブロックへの書き込み情報として取得するTLC用のアクティブブロックにおける有効クラスタ率に基づいてランダムライト条件1、ランダムライト条件2、およびランダムライト条件6のそれぞれを満たすか否かを判断する。ランダムライト条件1のように、TLC用のアクティブブロックの有効クラスタ率を昇順に並べた場合、最も低い有効クラスタ率が所定の閾値以上であるとき、ガベージコレクション対象のブロックから転記する量が多いことを示す。このことから、RW検知部233は、ランダムライト条件1を満たす場合、ランダムライト状態であることを検知する。
【0102】
ランダムライト条件2のように、アクティブブロックの有効クラスタ率の幅が所定の閾値未満である場合、図9Bに示したように、有効クラスタ率の局所性が低いことを示す。このことから、RW検知部233は、ランダムライト条件2を満たす場合、ランダムライト状態であることを検知する。
【0103】
ランダムライト条件6のように、書き込まれてから設定時間を経過したブロックであるにも関わらず、有効クラスタ率が大きいブロックが所定の閾値以上ある場合、ランダムライトされたことにより、図9Bに示したように、有効クラスタ率の局所性が低いことを示す。このことから、RW検知部233は、ランダムライト条件6を満たす場合、ランダムライト状態であることを検知する。また、RW検知部233は、ランダムライト条件6の時間経過を計測するための指標として、タイマーで測定した時間、ホストライト量、およびブロック割り当て番号等に基づいて測定する。ここでいうホストライト量とは、対象のアクティブブロックに書き込まれた後のホストライト量をいう。
【0104】
ここで、ブロック割り当て番号とは、フリーブロックが書き込み先ブロックとして割り当てられた際に設定される昇順の番号である。RW検知部233は、対象となるアクティブブロックのブロック割り当て番号と、最新のブロック割り当て番号とを比較することで、対象となるアクティブブロックへの書き込みからどの程度時間経過したかを判断することができる。
【0105】
ランダムライト条件3のGCギア比とは、ガベージコレクションライトによってNANDメモリ3にライトされるデータ量をホストライトによってNANDメモリ3にライトされるデータ量で除算して得られる値である。RW検知部233は、ランダムライト条件3については、アドレス・ブロック管理部232からTLC用のブロックへの書き込み情報として取得するガベージコレクション時の書き込み量と、ホストライト時の書き込み量とに基づいてランダムライト条件3を満たすか否かを判断する。GCギア比が、閾値以上である場合、ガベージコレクションのライト量が多いことを示し、ガベージコレクション対象のブロックから転記する量が多いことを示す。このことから、RW検知部233は、ランダムライト条件3を満たす場合、ランダムライト状態であることを検知する。
【0106】
なお、RW検知部233は、ランダムライト条件3を満たすか否かを判断するための閾値を変動させるようにしてもよい。例えば、RW検知部233は、アドレス・ブロック管理部232が、SLC用のブロックからTLC用のブロックに設定したブロック数に応じて、上記閾値を下げるように変動させるようにしてもよい。SLC用のブロックからTLC用のブロックに設定したブロック数が多いと、ギア比が低下する傾向があるためである。
【0107】
RW検知部233は、ランダムライト条件4については、アクセス処理部231からTLC用のブロックのアクセス情報として取得するLBAに基づいてランダムライト条件4を満たすか否かを判断する。ランダムライト条件4のように、LBAの分散度合いが閾値以上ある場合、ランダムライトによりLBAが分散していることを示す。このことから、RW検知部233は、ランダムライト条件4を満たす場合、ランダムライト状態であることを検知する。
【0108】
RW検知部233は、ランダムライト条件5については、アドレス・ブロック管理部232からTLC用のブロックへの書き込み情報として取得するダーティ量および書き込み量に基づいてランダムライト条件5を満たすか否かを判断する。一般的に、シーケンシャルライトの場合より、ランダムライトの場合の方が同一ホストライト量に対して増加するダーティ量は大きくなる。よって、ランダムライト条件5のように、書き込み量に対するダーティ量の増え方が一定閾値以上ある場合、ランダムライトである可能性が高い。このことから、RW検知部233は、ランダムライト条件5を満たす場合、ランダムライト状態であることを検知する。
【0109】
また、RW検知部233は、ブロックの有効クラスタ率等の推移に基づいて、閾値を変更するようにしてもよい。例えば、ランダムライト条件1を満たすか否かを判断した結果、最も低い有効クラスタ率の上昇度合いが一定以上である場合、閾値を下げるようにしてもよい。この場合、RW検知部233は、ランダムライトが顕著になっているタイミングで、SLC用のブロックとして設定されているブロックをTLC用のブロックに設定させることができる。
【0110】
RW検知部233は、上記ランダムライト条件1~ランダムライト条件6の何れかを満たす場合、ランダムライト状態であることを検知し、ランダムライト状態である旨をアドレス・ブロック管理部232に通知する。
【0111】
RW検知部233は、ランダムライト状態であることを検知した後、解除条件を満たすか否かを判断する。RW検知部233は、以下の各解除条件に該当するか否かを判断する。
(解除条件1)
ランダムライト条件1~ランダムライト条件6を満たさなくなってから設定時間を経過した。
(解除条件2)
書き込まれてから時間経過していないにも関わらず、有効クラスタ率が小さいブロックの数が所定閾値以上ある。なお、有効クラスタ率が小さいブロックの数が閾値と等しい場合の取り扱いは、これに限られない。
(解除条件3)
ホストからの要求がアイドル状態である。
【0112】
ランダムライト条件6のように、RW検知部233は、解除条件1および解除条件2の時間経過を計測するための指標として、タイマーで測定した時間、ホストライト量、およびブロック割り当て番号等に基づいて測定する。
【0113】
解除条件1のように、ランダムライト条件1~ランダムライト条件6に満たさなくなってから設定時間を経過した場合、ランダムライト状態を解消したと考えられる。このことから、RW検知部233は、解除条件1を満たす場合、ランダムライト状態を検知したことを解除する。
【0114】
RW検知部233は、解除条件2については、アドレス・ブロック管理部232からTLC用のブロックへの書き込み情報として取得するTLC用のアクティブブロックにおける有効クラスタ率に基づいて解除条件2を満たすか否かを判断する。解除条件2のように、書き込まれてから時間経過していないにも関わらず、有効クラスタ率が小さいブロックの数が閾値以上あるということは、図9Aに示したように、有効クラスタ率の局所性が高いことを示す。このことから、RW検知部233は、解除条件2を満たす場合、ランダムライト状態を検知したことを解除する。
【0115】
解除条件3のホスト4からの要求がアイドル状態であるとは、ホスト4から一定期間アクセスがないことをいう。一定期間ホスト4からアクセスがないということは、ガベージコレクション等のバックグラウンド処理を実行するトリガとなる。このことから、RW検知部233は、解除条件3を満たす場合、ランダムライト状態を検知したことを解除する。なお、ホスト4からLowPowerModeへの遷移の要求があった場合も、ガベージコレクション等のバックグラウンド処理を実行するトリガとなり得る。
【0116】
RW検知部233は、上記解除条件1~解除条件3の何れかを満たす場合、解除条件を満たす旨をアドレス・ブロック管理部232に通知する。
【0117】
ガベージコレクション制御部234は、ガベージコレクションを実行する。ガベージコレクション制御部234は、アドレス・ブロック管理部232からガベージコレクション対象のブロックおよび書き込み先ブロックの物理アドレスを取得し、これらのアドレスに基づきガベージコレクションを実行する。ガベージコレクション制御部234は、ガベージコレクション対象のブロックから有効なデータを読み出して、当該データに対応するLBAも読み出して、ガベージコレクションを実行する。ガベージコレクション制御部234は、ガベージコレクションの書き込みを行ったデータのLBAおよび物理アドレスをアドレス・ブロック管理部232へ送出する。
【0118】
続いて、SLC用のブロックおよびTLC用のブロックの状態遷移について、図12を用いて説明する。
図12は、SLC用のブロックおよびTLC用のブロックの状態遷移を説明するための図である。
【0119】
まず、アクセス処理部231は、SLCモードで書き込む際、SLCフリーブロックからオープンブロックに遷移したブロックBLK1にデータを書き込む。そうすると、アドレス・ブロック管理部232は、ブロックBLK1をSLC用のアクティブブロックに変更する。なお、ブロックBLK2~ブロックBLK4もSLC用のアクティブブロックである。ここで、RW検知部233がランダムライト状態であることを検知すると、アドレス・ブロック管理部232は、SLC用のアクティブブロックのうち、いずれかのブロックをTLC用のアクティブブロックに設定する。すなわち、アドレス・ブロック管理部232は、SLC用のアクティブブロックをTLC用のブロックに貸し出す。
【0120】
なお、TLCモードで書き込むまたはガベージコレクションする際、TLCフリーブロックからオープンブロックに遷移したブロックBLK11にデータを書き込む。そうすると、アドレス・ブロック管理部232は、ブロックBLK11をTLC用のアクティブブロックに変更する。
【0121】
RW検知部233が解除条件を満たすことを検知すると、アドレス・ブロック管理部232は、TLC用のフリーブロックのうち、いずれかのブロックをSLC用のフリーブロックに設定する。すなわち、アドレス・ブロック管理部232は、TLC用のフリーブロックを返却する。
【0122】
続いて、図13を用いて、ランダムライト状態であることを検知し、SLC用のブロックをTLC用のブロックに設定する処理手順を説明する。
図13は、SLC用のブロックをTLC用のブロックに設定する処理手順を説明するフローチャートである。
【0123】
まず、RW検知部233は、アドレス・ブロック管理部232等からTLC用のブロックに関するアクセス情報(例えば、TLC用のブロックの有効クラスタ率)を取得する(ステップS1)。続いて、RW検知部233は、TLC用のブロック書き込み情報に基づき、ランダムライト条件1~ランダムライト条件6の何れかを満たすか否かを判断する(ステップS2)。ステップS2において、ランダムライト条件1~ランダムライト条件6の何れの条件も満たさない場合(ステップS2:No)、ステップS1へ進む。
【0124】
ステップS2において、ランダムライト条件1~ランダムライト条件6の何れかの条件を満たす場合(ステップS2:Yes)、RW検知部233は、ランダムライト状態である旨をアドレス・ブロック管理部232に通知する。アドレス・ブロック管理部232は、SLC用のブロックをTLC用のブロックに設定する(ステップS3)。
【0125】
RW検知部233は、アドレス・ブロック管理部232等からTLC用のブロックに関するアクセス情報を取得する(ステップS4)。RW検知部233は、TLC用のブロックに関するアクセス情報等に基づき、解除条件1~解除条件3の何れかを満たすか否かを判断する(ステップS5)。ステップS5において、RW検知部233は、解除条件1~解除条件3の何れの条件も満たさない場合(ステップS5:No)、ステップS4へ進む。
【0126】
ステップS5において、解除条件1~解除条件3の何れかの条件を満たす場合(ステップS5:Yes)、RW検知部233は、解除条件を満たす旨をアドレス・ブロック管理部232に通知する。アドレス・ブロック管理部232は、当該解除条件を満たす旨の通知に応じて、ガベージコレクション制御部234へガベージコレクションを実行させる。アドレス・ブロック管理部232は、ガベージコレクションの結果に基づいて、TLC用のフリーブロックをSLC用のフリーブロックに設定する。このように、アドレス・ブロック管理部232は、TLC用のフリーブロックをSLC用のブロックとして返却する処理を実行する(ステップS6)。
【0127】
本実施形態に係るメモリコントローラ2では、RW検知部233がアドレス・ブロック管理部232等からTLC用のブロックに関するアクセス情報を取得する。そして、RW検知部233が、当該TLC用のブロックに関するアクセス情報に基づいて、ランダムライト条件1~ランダムライト条件6の何れかが満たされると判断した場合、アドレス・ブロック管理部232が、SLC用のブロックをTLC用のブロックに設定する。また、RW検知部233が、解除条件1~解除条件3の何れかが満たされると判断すると、ガベージコレクション制御部234がガベージコレクションを実行し、アドレス・ブロック管理部232が、TLC用のブロックをSLC用のブロックに設定する。
【0128】
このように、メモリコントローラ2は、TLC用のブロックに関するアクセス情報に基づいて、ランダムライト条件1~ランダムライト条件6の何れかが満たされると、SLC用のブロックをTLC用のブロックに設定する。そして、メモリコントローラ2は、解除条件が満たされる場合に、ガベージコレクションを実行し、TLC用のブロックをSLC用のブロックに設定する。
【0129】
これにより、メモリコントローラ2は、ランダムライト状態を検知して、局所性が無い場合に、一時的にSLC用のブロックをTLC用のブロックに設定することで、TLC用のアクティブブロックを増やし、TLC用のアクティブブロックの有効クラスタ分布を薄めることで、ガベージコレクション対象となるブロックの有効クラスタ率を下げ、ガベージコレクション効率を改善することができる。また、メモリコントローラ2は、ガベージコレクションを実行した後に、TLC用のブロックをSLC用のブロックとすることで、ライト性能の高いSLCモードで書き込み処理できる状態に戻す。このように、メモリコントローラ2は、複数のモードを適切に変更することができる。
【0130】
RW検知部233は、アドレス・ブロック管理部232からTLC用のブロックに関するアクセス情報として取得するTLC用のアクティブブロックにおける有効クラスタ率に基づいたランダムライト条件を満たすか否かを判断する。ランダムライト条件を満たす場合、アドレス・ブロック管理部232が、SLC用のブロックをTLC用のブロックに設定する。
【0131】
このように、メモリコントローラ2は、TLC用のアクティブブロックの有効クラスタ率に基づいた条件を満たすか否かを判断して、SLC用のブロックをTLC用のブロックに設定する。この結果、メモリコントローラ2は、TLC用のアクティブブロックの有効クラスタ率が大きいブロックが多く存在する場合等、ランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やし、TLC用のアクティブブロックの有効クラスタ分布を薄めることで、ガベージコレクション対象となるブロックの有効クラスタ率を下げ、効率良くガベージコレクションを実行することができる。
【0132】
また、TLC用のブロックへの書き込み情報に基づくランダムライト条件は、ランダムライト条件1のような最も低い有効クラスタ率に基づくものである。最も低い有効クラスタ率でも有効クラスタ率が高いと判断された場合、ガベージコレクション対象のブロックから転記する量が多いことを示すことになる。メモリコントローラ2は、ランダムライト条件1を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0133】
また、TLC用のブロックへの書き込み情報に基づくランダムライト条件は、ランダムライト条件2のような有効クラスタ率の幅に基づくものである。有効クラスタ率の幅が所定の閾値以下である場合、図9Bに示すように有効クラスタ率の局所性が低いことを示すので、メモリコントローラ2は、ランダムライト条件2を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0134】
また、TLC用のブロックに関するアクセス情報に基づくランダムライト条件は、ランダムライト条件6のような複数のTLC用のブロックにかかる書き込みをしてから所定時間経過後の複数のTLC用のブロックの有効クラスタ率に関する条件である。書き込まれてから設定時間を経過したブロックであるにも関わらず、有効クラスタ率が大きいブロックが所定の閾値以上ある場合、図9Bに示すようにランダムライト状態である可能性が高い。そこで、メモリコントローラ2は、ランダムライト条件6を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0135】
また、RW検知部233は、アドレス・ブロック管理部232からTLC用のブロックに関するアクセス情報として取得するガベージコレクション時の書き込み量と、ホストライト時の書き込み量とに基づいてランダムライト条件3を満たすか否かを判断する。そして、ランダムライト条件3を満たす場合、アドレス・ブロック管理部232は、SLC用のブロックをTLC用のブロックに設定する。GCギア比が、閾値以上である場合、ガベージコレクションのライト量が多いことを示し、ガベージコレクション対象のブロックから転記する量が多いことを示すことになる。メモリコントローラ2は、ランダムライト条件1を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0136】
RW検知部233はアクセス処理部231からTLC用のブロックに関するアクセス情報として取得するLBAに基づいてランダムライト条件4を満たすか否かを判断する。そして、ランダムライト条件4を満たす場合、アドレス・ブロック管理部232は、SLC用のブロックをTLC用のブロックに設定する。ランダムライト条件4のように、LBAの分散度合いが閾値以上ある場合、ランダムライトによりLBAが分散していることを示す。メモリコントローラ2は、ランダムライト条件4を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0137】
RW検知部233は、アドレス・ブロック管理部232からTLC用のブロックに関するアクセス情報として取得するダーティ量および書き込み量に基づいてランダムライト条件5を満たすか否かを判断する。ランダムライト条件5のように、書き込み量に対するダーティ量の増え方が一定閾値以上ある場合、ランダムライトである可能性が高い。メモリコントローラ2は、ランダムライト条件5を満たすようなランダムライト状態である可能性が高い場合に、TLC用のアクティブブロックを増やすことで、効率良くガベージコレクションを実行することができる。
【0138】
メモリコントローラ2は、ランダムライト条件1~ランダムライト条件6に満たさなくなった場合、ランダムライト状態を解消したと考えられる。このことから、RW検知部233は、解除条件1を満たす場合、ランダムライト状態を検知したことを解除する。
【0139】
メモリコントローラ2は、解除条件として、ホスト4から一定期間アクセスがない場合に、ガベージコレクションを実行し、TLC用のブロックをSLC用のブロックに設定する。ホスト4から一定期間アクセスがないということは、ガベージコレクション等のバックグラウンド処理を実行するトリガとなるので、メモリコントローラ2は、適切なタイミングでガベージコレクションを実行することができる。
【0140】
上述の実施形態では、RW検知部233が、ランダムライト条件1~ランダムライト条件6の何れか1つの条件を満たすか否かを判断する場合について述べたが、ランダムライト条件1~ランダムライト条件6のうち、複数の条件を満たすか否かを判断するようにしてもよい。
また、上述の実施形態では、ランダムライト条件1~ランダムライト条件6を列挙したが、これらの一部のみを列挙するようにしてもよいし、一部の条件を適宜変更してもよい。また、ランダムライト状態であることを判断するための条件をさらに加えてもよい。
【0141】
また、上述の実施形態では、RW検知部233が、解除条件1~解除条件3の何れか1つを満たすか否かを判断する場合について述べたが、解除条件1~解除条件3のうち、複数満たすか否かを判断するようにしてもよい。
また、RW検知部233は、解除条件1を満たすか否かを判断する場合に、ランダムライト条件1~ランダムライト条件6のうち、ランダムライト状態を検知する際に満たしていた条件を満たさなくなったか否かを判断するようにしてもよいし、ランダムライト条件1~ランダムライト条件6の全てを満たさなくなったかを判断するようにしてもよい。
【0142】
また、アドレス・ブロック管理部232がSLC用のブロックをTLC用のブロックに設定するブロック数は、予め定められていてもよいし、例えば、ランダムライト条件1~ランダムライト条件6に合致する数に基づいて定められてもよい。
また、アドレス・ブロック管理部232は、SLC用のブロックをTLC用のブロックに設定したブロック数より、返却されたブロック数が少ない場合、再度ランダムライト条件に合致したときに、予め定められている設定数から返却されていない分を減算したブロック数を設定するようにしてもよい。
【0143】
上述の実施形態では、SLCモードおよびTLCモードで書き込む場合について述べたが、これに限られない。例えば、SLCモードおよびQLCモードで書き込むようにしてもよいし、TLCモードおよびQLCモードで書き込むようにしてもよい。
【0144】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0145】
1 メモリシステム、2 メモリコントローラ、3 NANDメモリ、4 ホスト、21 ホストインタフェース部、22 メモリインタフェース、23 制御部、24 RAM、25 データバッファ、30 NANDパッケージ、231 アクセス処理部、232 アドレス・ブロック管理部、233 RW検知部、234 ガベージコレクション制御部。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11A
図11B
図12
図13